01
RISC-V与扩展指令概述
RISC-V指令集架构简介 · 为什么需要自定义扩展指令 · 扩展指令的编码空间与约定
基础概念
02
开发环境搭建
Verilog仿真工具安装 · RISC-V工具链配置 · 测试平台框架搭建
工具环境
03
处理器流水线基础
经典5级流水线回顾 · 数据通路与控制信号 · 流水线冒险简介
流水线架构
04
自定义指令编码与格式
RISC-V指令格式回顾 · opcode/funct3/funct7选择 · 自定义ALU运算指令格式
编码格式
05
译码阶段实现
修改译码模块 · 识别自定义指令 · 生成控制信号
译码控制
06
执行阶段实现(ALU)
扩展ALU模块 · 自定义运算逻辑 · 多周期指令处理
ALU执行
07
寄存器文件与写回阶段
正确写回寄存器 · RAW数据冒险 · 数据前推单元
写回前推
08
访存指令扩展
自定义Load/Store · 新寻址模式 · 非对齐访问处理
访存寻址
09
系统指令与CSR操作
自定义CSR指令 · 新CSR寄存器 · CSR读写逻辑
系统CSR
10
条件分支与跳转指令扩展
自定义分支指令 · JAL/JALR变种 · 分支预测简单实现
分支跳转
11
乘除法扩展(M扩展定制)
自定义乘除法指令 · 乘法器/除法器优化 · 多周期流水线停顿
乘除M扩展
12
原子操作扩展(A扩展定制)
LL/SC指令 · 互斥锁机制 · 缓存一致性简化模型
原子A扩展
13
单指令多数据(SIMD)扩展
SIMD指令格式 · 向量操作数据通路 · 向量寄存器文件
SIMD向量
14
自定义协处理器接口
协处理器握手协议 · 译码与派发 · 数据交换
协处理器接口
15
浮点扩展(F/D扩展定制)
自定义浮点指令 · 快速近似计算 · 异常与舍入模式
浮点F/D
16
指令预取与缓存扩展
自定义预取指令 · 取指阶段预取 · 简单I-Cache模型
预取缓存
17
中断与异常处理扩展
自定义异常类型 · 异常返回(mret/sret) · 简化PLIC
中断异常
18
性能计数器扩展
硬件性能计数器 · 指令/缓存/分支计数 · CSRRS/CSRRC
性能计数器
19
调试与追踪扩展
简化调试模式 · 断点指令(EBREAK) · 执行追踪信号
调试追踪
20
安全扩展(物理内存保护PMP)
PMP检查逻辑 · 内存锁定/解锁 · 访问违例异常
安全PMP
21
多核同步扩展
核间中断(IPI) · 屏障指令Barrier · 共享内存一致性简化
多核同步
22
指令压缩扩展(C扩展定制)
自定义压缩指令 · 译码解压缩 · 边界对齐处理
压缩C扩展
23
向量扩展(V扩展定制)
RISC-V V扩展简介 · 向量长度/数据宽度 · 向量加载/存储单元
向量V扩展
24
自定义指令的验证策略
定向测试用例 · 随机指令生成 · 覆盖率驱动验证
验证测试
25
形式化验证入门
SymbiYosys形式化验证 · 正确性断言 · 等价性验证
形式化断言
26
综合与时序优化
FPGA综合 · 关键路径分析 · 插入流水线寄存器优化
综合时序
27
FPGA原型验证
FPGA开发板运行 · ILA调试 · 指令执行性能(CPI)测量
FPGA原型
28
软件工具链适配
GCC汇编器(.insn) · 内联汇编示例 · 链接脚本修改
工具链GCC
29
编译器支持(LLVM后端)
LLVM后端架构 · SelectionDAG模式 · 自定义指令机器码
LLVM编译器
30
综合项目实战
设计加速指令(AES/FFT) · 编码到验证全流程 · 设计文档与指南
项目实战