原创 【心得笔记】pipeline RISC设计(9)--改进流水线冲突

2009-2-26 18:34 3267 5 5 分类: FPGA/CPLD

pipeline RISC设计(9)--改进流水线冲突<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


增加前向路径来改进流水线冲突


流水线设计原则上要避免环路设计,也就是数据和控制流尽量是单向向前的,不要出现反馈数据/控制回路。出现反馈回路并不一定引起流水线冲突。流水线冲突的引起是由于数据资源或者运算资源出现了竞争引起的。反馈回路和正向回路出现了时间相关性或者空间相关性,就会引起竞争,从而引发流水线冲突。


解决流水线冲突就是打破引起竞争的因素的相关性。例如解决时间相关性可以简单的依靠加入延迟来解决,但这样会造成流水线执行效率不高;解决空间相关性靠增加硬件逻辑资源来解决,但这样会增加成本。


CPU是执行指令的,CPU的组织结构是为了指令执行的需求而设计的,CPU的输入是指令序列,输出是总线或者外部Memory(例如DCACHE)。CPU指令的执行天然是具有反馈性的,也就是前一条指令的执行不可避免的会影响后面指令的执行,指令之间不可避免相关性。


 


流水线冲突通常是由几种相关引起的:数据相关,转移相关,条件相关。。。


- 所谓数据相关是指,后一条指令的运算依赖于前一条指令的运算结果,冲突产生是由于前一条指令还没有把数据为后一条指令准备好。


- 所谓转移相关是指,一条指令是否执行依赖于前一条指令是否是跳转指令;如果前一条指令是跳转指令,则紧接着的指令就必须从流水线中Flush(清理)出去,才能保证跳转目标地址的指令被取出并紧接着跳转指令执行。


- 所谓条件相关是指一条指令的执行或者执行结果依赖于前一条指令对CPU状态的改变;例如条件执行指令。


相关是引起冲突的必要但非充分条件。


改进流水线冲突的目的是尽量将冲突代价最小化,以求保证较高的流水线效率。例如改进数据相关冲突,就是分析前后指令数据使用上的关系,假如出现相关,就将前面指令的计算结果尽早取出交给后面的指令使用,这是运行时的数据冲突解决办法。还有编译时的冲突解决方法,就是在编译时,将出现冲突的指令序列在不改变逻辑的前提下重新排序,以避免冲突的发生。这两种手段也就是解决冲突的硬方法和软方法。


 


前向路径(前向逻辑, Forward Logic)主要是解决流水线数据冲突的。


CPU流水线数据冲突产生的一个主要原因是:指令的执行结果是在WB级写回到寄存器中的,而紧接着的指令马上要用到上条指令的结果,如果该结果从寄存器中取出来的话,则这条指令的译码阶段必须延迟到上条指令“写回”阶段结束后一个周期完成(延迟了3cycle)。


我们以下面两条指令为例:


I1Mul r2, r4, r3; r4*r3àr2


I2Add r0, r2, r1;r2+r1àr0


怎么解决?


其实在I1的译码阶段末尾,也就是I2指令的执行阶段末尾,r2的内容(r4*r3)已经计算出来了,只不过还没有写回到r2寄存器。因此需要有条路径直接将r4*r3的计算结果连接到流水线译码阶段的操作数多路选择器的一个输入端,这样当译码逻辑发现I2指令用到了紧邻的前面一条指令用到了同样的寄存器(r2),就不需要从regiseter file取操作数,而直接从流水线的执行阶段取用计算结果,I2指令也不需要在译码阶段延迟等待了。


 


如果指令序列如下:


I1Mul r2, r4, r3; r4*r3àr2


Inxxxxx


I2Add r0, r2, r1;r2+r1àr0


I1I2指令直接多了一条指令In


则需要有一条路径从流水线的ME阶段“运算结果流水线寄存器”(当前值为r4*r3)连接到流水线译码阶段的操作数多路选择器的另一个输入端。


 


如果指令序列如下:


I1Mul r2, r4, r3; r4*r3àr2


In1xxxxx


In2yyyyy


I2Add r0, r2, r1;r2+r1àr0


则需要有一条路径从流水线的WB阶段的“写回输出端”(注意不是“运算结果流水线寄存器”)连接到流水线译码阶段的操作数多路选择器的另一个输入端。


 


如果指令序列如下:


I1Mul r2, r4, r3; r4*r3àr2


In1xxxxx


In2yyyyy


In3zzzzzz


I2Add r0, r2, r1;r2+r1àr0


I1I2指令没有数据相关性。


 


增加写回逻辑后的图示见下,



 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条