问答题

指令流水线分为4个段,取指(F)段、译码并读寄存器(D)段、执行(E,包括读写存储器、定点加减运算和逻辑运算)段和写回寄存器(W)段。E段有内部数据定向传送,结果生成即可使用。
现有C语言代码如下:
A=B+C
D=E+F
针对某RISC机器的编译方案有如下两种:
方案一,未采用指令调度   
I1:LDA  Rb ,memB   ‘LDA为取数指令,将B所在内存单元的内容送入Rb寄存器
I2:LDA  Rc,menC     ‘意义同上
I3:Add  Ra,Rb,Rc    ‘寄存器Rb和Rc的内容相加,结果保存至Ra寄存器
I4:STA  memA,Ra     ‘STA为送数指令,将Ra的内容送入A所在内存单元
I5:LDA  Re ,memE    ‘以下指令含义与上相同,省略
I6:LDA  Rf,menF
I7:Add  Rd,Re,Rf
I8:STA  memD,Rd
方案二,采用了指令调度
I1:LDA  Rb ,memB
I2:LDA  Rc,menC      
I3:LDA  Re ,memE   
I4:Add  Ra,Rb,Rc
I5:LDA  Rf,menF
I6:STA  memA,Ra
I7:Add  Rd,Re,Rf
I8:STA  memD,Rd
(1)试采用时空图分析方案一和方案二的执行周期数分别为多少?如果流水线周期为100ns,指令吞吐率分别为多少。
(2)试说明,你是如何理解编译器的“指令调度”的优化原理的。

【参考答案】

热门 试题