执行时间是用来衡量一款处理器性能的手段。
执行时间=指令数每条指令执行周期数(CPI) *时钟周期
流水线处理器实际的CPI等于指令的理想执行周期数+由于指令相关引起的阻塞周期数
CPI=CPI+RAW+WAR+WAW
让处理器中每级流水线都可以同时处理更多的指令
双发射流水线:每一拍用PC从指令存储器中取两条
指令,在译码级同时进行两条指令的译码、读源寄存器操作,并且同时执行两条指令的运算操作和访存操作,并同时写回两条指令的结果。双发射的理想CPI从单发射的1降为0.5。
双发射处理器流水线的时空图:
注:当同一个时钟周期执行的两条指令存在指令相关时,也需要进行阻塞。
基本思想:把相关的解决尽量往后拖延,同时前面的指令的等待不影响后面指令继续前进。
假设有一个双发射流水线,执行以下指令:
div.w $r3,$r2,$r1
add.w $r5,$r4,$r3
sub.w $r8,$r7,$r6
【分析】除法指令div是需要多个执行周期的,加法指令add和div是RAW相关的,所以最早
要等到div执行完之后才能执行。但是减法指令sub和上两条指令是无关的。所以可以在执行除法指令的同时执行减法指令。动态调度的解决办法就是允许减法指令越过前面尚未执行完毕的除法指令和加法指令,提前开始执行
sub指令是在流水线由于指令间的相关引起阻塞而空闲的情况下,见缝插针地提前执行。
无序队列
,每一项对应一条指令,包含多个域,存放该指令的监听结果
和后续执行所需的各类信息
(见上图)。发射
。关于保留站如何处理数据相关引起的阻塞以及结构相关和控制相关的起因以及如何解决下一篇再讲。
上一篇:Linux-进程概念
下一篇:CTF中常用的http知识点总结