单周期 多周期 流水线处理器
守护全世界最好的梦子
2024年07月20日 20:58

转载自:https://blog.csdn.net/qq_42950838/article/details/113406943

基本概念

1、CPI:Cycle Per Instruction,单位指令时钟周期数

2、Cycle Time:周期时间,处理器完成一个周期所需的时间,需要在出厂时设定,属于物理极限

3、执行时间 = 指令数目 x CPI x Cycle Time

4、性能 = 1 / 执行时间

单周期处理器

1、CPI = 1

2、以指令为单位,对于每条指令而言,都需要耗费 1 个时钟周期

3、在物理设计上,cycle time 必须统一标准,因此 cycle time 一般取决于耗时最长的指令 lw(lw需要干的事情最多),当指令中只有少数 lw 指令时,就会产生时间上的浪费

4、单位指令执行时间 = 1 * T(T 为耗时最长指令的 cycle time)

多周期处理器

1、提出划分阶段的思想,将每一条指令拆分为 5 个阶段:IF(Instruction Fetch,指令获取),ID(Instruction Decode,指令解码),EX(Execution,指令执行),MEM(Memory Access,内存读写)和 WB(Write Back to Register,写回寄存器)

2、CPI 一般为 N( N 代表阶段数目,一般情况下 N = 5 )

3、依然以指令为单位,只不过一条指令被分为更细的几个阶段来执行,这样可以减少阶段数不同引起的单位指令执行时间的误差。例如 lw 指令需要经历全部的 5 个阶段,但是 sw 指令则只需要经历 4 个阶段(没有 WB),因此当一定数量的等量 lw 和 sw 指令连续出现的时候,平均阶段数会趋近于 4.5,而在单周期处理器中则是 5(为了考虑 lw),很明显后者的误差会更大一些

4、cycle time 取决于耗时最长的阶段(一般是 MEM)

5、单位指令执行时间 = N * ( T / N )(取平均值,CPI * 平均 cycle time,平均 cycle time 近似为总时长的 1/N)

流水线处理器

1、在多周期处理器的基础上进一步优化

2、平均 CPI 为 1(当指令数量很大 > 10000 时,最开始 4 个 cycle 的指令填充和 最后 4 个 cycle 的指令排空可以忽略不计,可以近似认为执行 m 条指令消耗 m( m >> 8 )个时钟周期,因此平均 CPI = 1)

3、不再以指令为单位。与多周期不同,流水线以每个阶段为单位,一个阶段内可能有多条指令在同时执行(并行)。例如当一条指令在 EX 阶段时,它的上一条指令可能在 MEM 阶段,而下一条指令可能在 ID 阶段,理论上它们是同时执行的

4、cycle time 取决于耗时最长的阶段(一般是 MEM)

5、单位指令执行时间 = 1 * ( T / N )

6、可能存在三类冒险问题:结构冒险( Structural Hazard )、数据冒险( Data Hazard )以及控制冒险( Control Hazard )