前言
前面抄书抄得很烦躁,可能是很长时间没有学习过了脑子不灵,或者是我完全是个门外汉,还没进入过CPU的设计世界。这些概念很早就听过,希望这书之后写的能让我明白些。
MIPS五级流水线
- 取指令(Instructuon Fetch)将指令从存储器中读取出来的过程。
- 译码(Instruction Decode)经过译码得到指令所需的操作数寄存器索引,可以使用索引从通用寄存器组(Regfile)中取出操作数。
- 执行(Instruction Execute)常见的使用ALU。
- 访存(Memory Access)指存储器访问指令将数据从存储器中读取或写入存储器的过程。
- 写回(Write-Back将执行结果写回寄存器组。
在工业制造中使用流水线可以提高单位时间的生产量,同样在处理器中采用流水线设计也有助于提高处理器的性能。
流水线与状态机
流水线并不是必须的,使用别的策略也能提高处理器的性能。
- 流水线并不限于处理器设计,在所有的ASIC电路实现中都广泛采用流水线的思想。本质上是一种以面积换性能(Trade Area for Performance),以空间换时间(Trade Space for Timing)的手段。以5级流水线为例,它增加了5组寄存器,每一个流水线级数内部都有各自的组合逻辑数据通路,彼此之间没有复用资源,因此其面积开销是比较大的。但是由于可以让不同的流水线级数同时做不同的事情,而达到流水的效果,总体上是提高了性能,优化了时序,增加了吞吐量。
- 状态机是流水线的“取反”。在所有的ASIC电路实现中都广泛采用。本质上是一种以性能换面积(Trade performance for Area)、以时间换空间(Trade Timing for Space)的手段。如果处理器不采用流水线而是采用状态机,则需要多个时钟周期才能完成一条指令的所有操作,每一个时钟周期完成状态机的一个状态。通过状态机,可以省略流水线的寄存器开销,还可以复用组合逻辑数据通路,因此面积开销小。但是吞吐量和性能很差。
蜂鸟E200处理器的流水线
. 第一级是取指(在IFU中完成)
. 蜂鸟E200处理器核很难界定它的完成流水线级数有几级。因为
- 译码(在EXU中完成),执行(在EXU中完成)和 写回(在WB中完成)都处于同一个时钟周期内,位于流水线的二级
- 访存(在LSU中完成)处于EXU之后的第三级流水线,但是LSU写回的结果仍然需要通过WB模块写回通用寄存器组
- 蜂鸟E200是一个变长流水线结构
来自《教你设计CPU——RISC-V处理器》