第四章
简单流水线CPU设计
- 单周期CPU设计
- 冲突处理
- 流水线前递技术
4.1 设计一个简单的单周期CPU
4.1.1 设计单周期CPU的总体思路
- 指令系统规范
- 一般性设计方法 数据通路+控制逻辑
4.1.2 单周期CPU的数据通路设计
任何时候CPU上运行的程序中出现的地址都是虚地址,而CPU本身访问内存、I/O所用的地址都是物理地址。也存在某种指令系统规范中规定物理地址的值等于虚地址的值。
简易CPU可采用固定映射的地址映射机制。
获取物理地址后将地址送往片上内存RAM,并将RAM进一步拆分为指令RAM和数据RAM。
单周期CPU要求RAM必须支持异步读。
指令RAM的寻址单位是字节,所以其地址输入端口不能直接连接虚地址转换后的物理地址,而是要用物理地址除以4.
为节省资源,要尽可能不同的指令复用相同的数据通路
4.2 不考虑相关冲突的流水线CPU设计
流水:理想情况下流水线每一级都有指令且每个时钟周期都能处理完一条指令。
4.2.1 添加流水级间缓存
具体划分为几级流水要结合CPU产品性能、功能、面积指标以及具体工艺特性综合考虑。
流水线划分
经典五级流水
取指:将指令取回
译码:解析指令生成控制信号并读取通用寄存器堆生成源操作数
执行:对源操作数进行算数逻辑运算或访存指令的地址计算
访存:取回访存的结果
写回:将结果写入通用寄存器堆
流水线缓存中存放的内容
控制内容和数据内容
4.2.2 同步RAM的引入
同步RAM读一次需要两拍,一拍用来输入读使能和读地址,一拍用来返回结果。
要满足同步RAM的时序特性,要将RAM的访问分布到流水线中连续的两个阶段。
将PC更新阶段视为pre_IF阶段。
对于FPGA采用方案一,对于ASIC采用方案二。
4.2.3 调整更新PC的数据通路
4.2.4 不考虑相关冲突情况下流水线控制信号的设计
4.3 CPU设计开发环境(CPU_CORE)
暂不进行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】