我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 指令流 >

在指令流水线中每一条指令本身的执行时间减少了吗

归档日期:06-28       文本归类:指令流      文章编辑:爱尚语录

  流水线的引入提高的只是得系统的Throughput (吞吐率),即全速工作时候,单位时间内执行的指令数目增加了。但是如果仅看单条指令的绝对执行时间,这个量必然是增加的:因为 每多插入一级D flip-flop必然引入sequencing overhead(中文翻译时序支出?我不知道我翻译的对不对)。

  a没流水线的时候,时钟周期最小Tclk1=Tsetup+Tpd_critical ,每条指令一个时钟周期执行完。其中Tsetup为触发器的建立时间,Tpd_critical为关键路径的最坏传输延迟。

  b假设我采用级流水线,每一级组合逻辑的critcal delay均分 (是之前critical delay的1/3, 即Tpd_critical/3) ,新时钟周期 Tclk2=Tsetup+Tpd_critical/3 ,每条指令要花三个时钟周期执行完。当全速执行的时候,每个时钟周期结束都有一条指令处理完,而新时钟周期Tclk2明显比之前没流水线小了,所以我们说吞吐率提高了。如果你只关注一条指令的实际执行时间(注意每条指令花三个时钟周期完成):

  接下来还要注意一点:我们说吞吐率提高了,只是在“全速工作”的情况下。前面还有人作答提到P4的高频低能问题。其实这个问题又得从流水线的本质来解释。比如,如果由于某种原因processor就是没法全速工作怎么办?这种情况还不少见:比如我们有指令1指令2指令3,其中 指令2的执行依赖于指令1的结果,然后指令3的执行又依赖于指令2的结果。当出现这种情况时候,必须等前面一条指令完全执行完毕,产生结果之后,下条指令才能开始执行。当这种情况出现过多的时候,流水线的存在不仅没有多大帮助,反而因为多出来的sequencing overhead让性能降低。

本文链接:http://f-taiken.net/zhilingliu/132.html