本文共 1073 字,大约阅读时间需要 3 分钟。
1. 取指令;
2. 读寄存器和译码;
3. 执行ALU和地址计算;
4. 存储器访问;
5. 写结果到寄存器。
– 3条指令共需3×800=2400ps。
2. 流水线的执行时间
– 3条指令共需1000+200×2=1400ps。
3. 当有数百万条指令时:
– 对每一条指令来说,非流水线仍然是800ps,流水线则是200ps ;
– 流水线/非流水线=(800*n)/(1000+200*(n-1))=4 倍。
4. 理想的情况下,流水线的级数就是比非流水线的性能提高的倍数。
5. 事实上,流水线总是存在一些额外的开销,因此流水线执行时间比流水各段的执行时间要大。
6. 流水线通过提高吞吐率改善性能,并没有减少单条指令的执行时间。
流水线冒险(pipeline hazards): 下一条指令不能在流水线中的下一个周期执行。称为流水线冒险。主要有以下三种流水线冒险:
– 结构冒险(structural hazards)
由于硬件资源的局限,不能在同一个周期执行一些指令的组合。
若在指令流水线中,硬件资源中仅有一个独立的存储器,而不是两个分离的独立存储器,就会造成因资源不够而使流水线发生停顿。
– 数据冒险(data hazards)
流水线中指令的执行在适当的周期内的得不到可用的数据,而引起流水线停顿,称之为数据冒险。
旁路(bypass)或称向前传递(Forwarding)
– 控制冒险(control hazards)
流水线中的下一条指令要不要执行,需要等待转移指令的结果后,才能确定。
• 解决的方法
加入停顿,等待决策的指令执行完。这种方法效率低,但可用。
流水线的5个阶段:
1. 取指令;
2. 译码和读寄存器;
3. 执⾏ALU和地址计算;
4. 存储器访问;
5. 写回结果。
五级流水线数据通路如图所示:
需要注意以下五个阶段的控制信号的产生。
– 读寄存器;
– 总是写PC;
– 无特殊的控制信号;
– 所有的都读,无附加的控制信号;
转载地址:http://boggp.baihongyu.com/