2012年流水线408大题

知识回顾

(1)“按序发射,按序完成”指要求下一条指令的取指阶段和上一条指令的译码阶段并行。

举例:如果下图第2条指令的reg和reg冲突所以要延迟3个周期,而第三条指令和前面的指令都无关,则其实可以【优化】——先执行第3条指令再执行第2条,而按序发射则不采用这类优化

2012年流水线408大题_第1张图片

(2)数据Cahce和指令Cache分离后,在取指阶段可以在【指令Cache】中取指令,在访存阶段可以在【数据Cache】中取数据。在下一条指令取指时,上一条指令依然可以访问数据Cache取数据。

五段流水线——取指IF、译码/读寄存器ID、执行/计算有效地址EX、访存M、将结果写回寄存器WB。

2012年流水线408大题_第2张图片

(3)在使用指令流水线时,一般只用load和store指令访存(其他操作数都在寄存器中准备好——依靠load和store指令来把相应内存中data送到寄存器后,才会执行算术逻辑运算)。

注意每一段的结尾都有一个寄存器存放该段执行的结果——联系段与段间。

(4)ALU中有2种情况

1)算术逻辑指令(操作数的运算)

2)load取数指令(因有不同的寻址方式,如相对寻址EA=(PC)+A需要计算有效地址EA)

(5)在M和WB之间的下方有一个小的暂存器——用来存放ALU的运算结果,在WB把该结果送回到访存ID阶段的通用寄存器。(涉及到数据冲突)。

真题

2012年流水线408大题_第3张图片

2012年流水线408大题_第4张图片

PS:此处的转发技术就是指【数据旁路】技术。

第一问:有符号数的算术右移

【解析】由于513的16位为0000 0010 0000 0000,

所以-513的补码为1111 1101 1111 1111,经过SHR算术右移1位后为

1111 1110 1111 1111B,即(R1)=FEFFH.

【注意】算术右移——符号位不变,其余右移,添1;左移添0.

第二问:流水线用时

【法一】每个时钟周期只能有一条指令进入流水线,从第5个时钟周期开始,每个时钟周期都会有一条指令执行完毕,因此至少需要4+(5-1)=8个时钟周期。

【法二】5+(4-1)=8个时钟周期。

第三问:数据相关

2012年流水线408大题_第5张图片

【解析】首先审清题:问的是I4的IF段,不要想当然是ID段

I3的ID段被阻塞的原因:因为I3与I1和I2都存在数据相关,需等到I1和I2将结果写回寄存器后(写回寄存器后才算取好操作数),I3才能读寄存器内容,所以I3的ID段被阻塞(I3的ID段要同时满足在第一条和第二条的WB后)。

I4的IF段被阻塞的原因:因为I4的前一条指令I3在ID段被阻塞,所以I4的IF段被阻塞。

(I3阻塞,相应数据留在IF段,如果此时I4进来了则后面的“暂存部件”会被I4覆盖。)

注意】要求“按序发射,按序完成”,因此第2小问中下一条指令的IF必须和上一条指令的ID并行,以免因上一条指令发生冲突而导致下一条指令先执行完。

第四问:流水线

2012年流水线408大题_第6张图片

注意

1)ADD指令——(Rs)+(Rd)->Rd即将相加的结果送回Rd(后一个寄存器)中,所以在I5中STORE是将R2寄存器的内容存入内存。

2)如果先取操作数a再取操作数x则需要多花一个时间单元

IF ID EX M WB (取操作数a)

    IF  ID EX M  WB  (取操作数x)

         IF                  ID EX M WB (对x乘2)

                              IF  EX。。。。

总结

2012年流水线408大题_第7张图片

2012年流水线408大题_第8张图片

2012年流水线408大题_第9张图片

2012年流水线408大题_第10张图片

2012年流水线408大题_第11张图片

2012年流水线408大题_第12张图片

2012年流水线408大题_第13张图片

 

你可能感兴趣的:(计算机组成原理)