01
课程导论
寄存器堆与流水线的关系 · 课程目标与学习路径 · 所需工具与前置知识
导论概览
02
寄存器堆基础
寄存器堆的架构原理 · 读写端口设计 · 地址译码逻辑
架构译码
03
寄存器堆的Verilog实现
同步写异步读的RTL代码 · 仿真测试与波形验证
Verilog仿真
04
流水线基础概念
流水线的时空图 · 吞吐率与延迟 · 流水线级数的权衡
概念性能
05
经典五级流水线概述
取指(IF) · 译码(ID) · 执行(EX) · 访存(MEM) · 写回(WB)
经典五级
06
取指阶段设计
PC逻辑 · 指令存储器接口 · 分支预测初探
取指分支
07
译码阶段设计
指令译码逻辑 · 立即数扩展 · 控制信号生成
译码控制
08
寄存器堆与译码阶段的集成
读端口时序匹配 · 旁路信号预处理
集成时序
09
执行阶段设计
ALU运算 · 比较器 · 移位器
执行ALU
10
访存阶段设计
数据存储器接口 · 加载与存储指令处理
访存加载/存储
11
写回阶段设计
写端口时序 · 写回仲裁 · 寄存器堆更新
写回仲裁
12
流水线数据冒险
RAW · WAR · WAW冒险的原理与危害
冒险数据
13
数据前馈(旁路)技术
旁路路径设计 · 前馈控制逻辑 · 关键路径分析
旁路前馈
14
流水线控制冒险
分支指令带来的控制冒险 · 预测错误惩罚
控制冒险分支
15
静态分支预测
预测未采取 · 预测采取 · 延迟槽技术
静态延迟槽
16
动态分支预测
2位饱和计数器 · BTB(分支目标缓冲器)设计
动态BTB
17
流水线结构冒险
资源冲突 · 哈佛架构与冯诺依曼架构
结构冒险架构
18
寄存器堆的多端口设计
双读单写 · 三读双写 · 寄存器文件分块
多端口分块
19
寄存器堆的时序优化
读延迟优化 · 写透传 · 时钟门控
时序优化
20
流水线中的异常与中断
精确异常模型 · 异常处理流程
异常中断
21
流水线中的多周期指令
乘法 · 除法指令的流水线处理
多周期乘除
22
流水线中的加载使用延迟
加载指令后的停顿 · 编译器调度
加载延迟调度
23
流水线性能分析
CPI计算 · 加速比 · Amdahl定律应用
性能Amdahl
24
流水线综合与STA
时序约束 · 建立时间与保持时间检查
综合STA
25
寄存器堆的DFT设计
扫描链插入 · MBIST(存储器内建自测试)
DFTMBIST
26
低功耗流水线设计
时钟门控 · 操作数隔离 · 动态电压频率调整
低功耗时钟门控
27
超标量流水线基础
多发射架构 · 指令窗口 · 重排序缓冲
超标量多发射
28
寄存器堆的物理设计
版图规划 · 位线分割 · sense amplifier设计
物理版图
29
流水线验证方法
定向测试 · 随机测试 · 形式化验证
验证测试
30
课程总结与项目实战
RISC-V五级流水线CPU设计项目 · 调试技巧与未来方向
项目RISC-V