流水线含义:如果一条指令分为取指,分析,执行非流水线执行方式如下:
image.png
那条指令执行时间:n*3
使用流水线执行:
image.png
前一条执行的取指执行完毕,立刻进行后一条指令的取指执行时间快。
流水线执行周期
假设一条指令取指2ns,分析2ns,执行1ns。流水线周期定义是在这条指令执行过程中,最耗时的一条断就是流水线周期。也就是2ns。
100条这样的指令才流水线执行需要多少时间?
以第一条指令执行完毕后,后面的指令紧跟执行那么后面执行的时间是一个指令周期2ns,再加上前面第一条指令的执行时间2ns+2ns+1ns所以总的执行时间为:5ns+99*2ns。这就好比在工业流水线上组装汽车一样,前面的5ns表示启动机器,各个流水线人员准备时间,一旦第一辆汽车组装好,后面的汽车就可以直接走流水线周期时间了。公式:第一条指令执行整个时长+(流水线周期*(n条指令-1))
第一条指令执行时长
理论值:取指+分析+执行=2ns+2ns+1ns
实际值:执行1ns时长不规整,直接给2ns。所以实际值为3*2ns
一般都是采用理论值,如果选择题没有理论值则取实际值
流水线吞吐率
吞吐率=指令条数/执行时间
比如:上面的题100条指令,耗时203ns那么吞吐率为:
吞吐率=100/203ns
理想值:1/2ns 也就是:1/流水线周期
忽略第一条指令建立的准备工作耗时
流水线加速比
s=不使用流水线执行时间/使用流水线执行时间
上面的那个例子中使用流水线执行时长为5+992=203。不实用流水线执行时间5100=500。则:s=500/203
流水线的效率
下面的指令分为4个子指令,分别为s1,s2,s3,s4分别耗时t,t,t,3*t如下:
image.png
流水线效率=n个任务使用的时间分片/总共开启的时间分片
比如上面这个例子:
任务执行时间:(t+t+t+3t)4
总共开启的时间:15t4
网友评论