收藏 分享(赏)

2-3金融广域网路由部署方案-许青邦.doc

上传人:晚风 文档编号:2377692 上传时间:2020-07-10 格式:DOC 页数:7 大小:565.50KB
下载 相关 举报
2-3金融广域网路由部署方案-许青邦.doc_第1页
第1页 / 共7页
2-3金融广域网路由部署方案-许青邦.doc_第2页
第2页 / 共7页
2-3金融广域网路由部署方案-许青邦.doc_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、本节开始给出的程序例子,I1写目的寄存器rd,I2和I3的源操作数是寄存器rsl或rs2中的数据,且它们的rsl或rs2与I1的目的寄存器号rd相等时才有可能发生数据相关,因此,硬件电路中要有比较器。由于指令格式中源寄存器号rs2与立即数部分重叠,而立即数是不会出现相关的,因此,指令操作码必须要参与检测(区分是寄存器操作数还是立即数)。;另外,如例子中的I1指令,rd一定作为目的寄存器号使用,即结果是要被写入目的寄存器时,后面的指令才有可能与之相关。由于store指令也使用rd,但它不写寄存器,因此,WREG信号也应参与检测(实际上,WREG也是从操作码中得出的)。我们把上述规则用表达式写出如

2、下(它们是在ID级检测数据相关的表达式): DEPENA_DEPEN+B_DEPENA_DEPENEXE_A_DEPEN+MEM_A_DEPEN图635 停止相关指令的执行(表示方法1)图636 停止相关指令的执行(表示方法2) B_DEPENEXE_B_DEPEN+MEM_B_DEPEN EXE_A_DEPEN(1D_rslEXE_rd)(EXE_WREG1)(1D_rsllsReg) EXE_B_DEPEN(1D_rs2EXE_rd)(EXE_WREG1)(1D_rs21sReg) +(1D_rdEXE_rd)(EXE_WREG1)(store) MEM_A_DEPEN(1D_rslMEM

3、_rd)(MEM_WREG1)(1D_nllsReg) MEM_B_DEPEN(1D_rs2MEM_rd)(MEM_WREG1)(1D_rs2IsReg) 十(1D_rdMEM_rd)(MEM_WREG1)(store) ID_rsllsRegand十andi十or十ori十add十addi十sub十subi十load十store ID_rs2IsRegand十or十add十sub 由于一条指令中的两个源操作数都可能与上一条指令的目的操作数相关,因此总的数据相关DEPEN由A_DEPEN和B_DEPEN两部分组成。A_DEPEN指的是源寄存器rsl数据相关;B_DEPEN指的是源寄存器rs2数

4、据相关。另外,两条指令12和13都可能与U相关。如果是在流水线ID级检测数据相关,则对于12来讲,n处在EXE级;对于13来讲,n处在MEM级;因此,A_DEPEN包括EXE_A_DEPEN和MEM_A_DEPEN两部分。EXE_A_DEPEN的意思是处在ID级的指令与处在EXE级的指令数据相关。同理,MEM_A_DEPEN的意思是处在ID级的指令与处在MEM级的指令数据相关。同样,B_DEPEN包括EXE_B_DEPEN和MEM_B_DEPEN两部分。 EXE_A_DEPEN为真的条件是I2的rsl与I1的rd相等(即ID_rslEXErd)、rsl字段是寄存器(1Drs1IsReg)并且I

5、1的rd确实是目的寄存器(即EXE_WREG1)。后一个条件是为排除store指令而加上的。EXEBDEPEN与EXEADEPEN类似,但rs2确实是源寄存器号(1Drs21sReg)所包含的指令要比IDrslIsReg少得多。I3与I1的数据相关判断与此类似,只是把宇头EXE换成MEM。EXE代表流水线EXE级;MEM代表流水线MEM级。EXE_rd和MEM_rd分别是EXE级和MEM级流水线寄存器d的输出。 数据相关条件就这样得出来了。需要注意的一点是,rs2应包含store指令的rd。当条件满足时,要暂停流水线,因此下一步的任务是确定如何暂停流水线。这里要特别注意的一个问题是,不能停止所

6、有指令的流水线,而只是暂停相关指令及其后续的所有指令。上例中,若12与n相关,只暂停12及12以下的指令,而不应把n也暂停,否则的话,处理机将永远暂停下去。 暂停流水线要做以下3件事情:封锁当前正在译码的指令的写控制信号;不把从存储器取来的下一条指令打人IR;不改变当前PC值。我们使用如下的方法实现流水线的暂停: WPC WIR IDWZDecoderWZ IDWMEMDecoderWMEM IDWREGDecoderREG图637给出的是实现暂停流水线的硬件电路。暂停条件判断电路STALL的输入包括OPCODE,IDrsl,IDrs2,EXErd,EXEWREG,MEMrd和MEMWREG。

7、输出为DEPEN。用DEPEN信号来封锁本条指令及后续指令。封锁本条指令的方法是把DEPEN求反,再分别和译码器的输出DecoderWZ,DecoderWMEM和DecoderWREG相与,再送到ID级和EXE级之间的流水线寄存器的输入端。只有这些写信号才改变处理机或存储器的状态,。因而我们不必去封锁诸如ALUOP或多路器的选择信号。封锁其后续指令的方法是禁止向IR及PC写入新的数据,即把DEPEN的非接到IR和PC的写使能端WIR和WPC。当这两个信号为0时,禁止向IR和PC写人数据。读者不妨试着画出它在数据相关前后的时序图。图637 实现暂停流水线的硬件电路 当I2与I1相关时,流水线暂停

8、两个周期;I3与Il相关时流水线暂停一个周期。我们把被暂停掉的周期称作流水线“气泡”。暂停流水线是解决流水线处理机数据相关问题的一种方法。使用这种方法,保证处理机能够从寄存器堆读出正确的数据。但是,暂停流水线两个或一个周期造成了处理机性能的损失。如果没有数据相关,处理机完全可以多执行两条或一条指令。在由使用这种方法的处理机组成的计算机系统中,高级语言的编译器和汇编器在产生最终目标机器码时,应尽量避免出现过多的数据相关指令序列。编译器和汇编器最初可以在相关指令之间插入nop指令,然后进行优化,用一些有意义的不相关的指令替换掉nop,以减少“气泡”的出现。较早的MIPS处理机甚至没有数据相关的硬件

9、检测电路,完全依靠软件优化来保证不出现指令之间的数据相关。下一小节介绍的方法则能完全避免由于与ALU指令相关而造成的“气泡”的出现。653 提高流水线处理机的性能内部前推流水线数据相关问题的本质在于一条指令执行时要用到上面指令的计算结果,但这个结果尚未被写入寄存器堆。如果我们不拘泥于形式,非要ALU使用从寄存器堆读出的数据不可的话,流水线“气泡”问题也可以得到解决。试想,数据相关发生在ALU计算周期,而所有的计算任务均由这一个ALU来按顺序完成。这也就是说,ALU计算时发现与上一条或两条指令的结果发生数据相关的话,这些结果实际上已由ALU计算出来了,只是还没有写入寄存器堆。那么,这时的结果在哪

10、儿呢?当然,它们还在流水线寄存器R和C中。这就好了,把它们直接拿过来用!为此,我们在Al。U的两个数据输入端各加一个多路器,使R和C中的数据能被直接送到ALU的输入端,见图638到图640。这就是所谓的内部前推(internal forwarding)技术。图638 内部前推CC3周期,add指令在EXE级见图6-38,ALU输入端A的多路器有3个输入。无数据相关时,选择0号输入,也就是流水线寄存器A中的内容;相关时,选择2或3号输入,它们来自于流水线寄存器R或。C。在本节的例子中,12与n相关时,选择2号输入;13与n相关时,选择3号输入。1号输入没有被使用,只是标在那里,在设计多路器时可以

11、去掉该输入以使电路简化。ALU输入端B:的多路器有4个输入。无数据相关时,若是寄存器操作数,:选择0号输入:若是立即数,选择1号输入。2号与3号输入等同于ALU的A端多路器。图639 内部前推-CC4周期,add结果在R中,sub使用R的内容运算如何产生这两个多路器的选择信号是内部前推电路的关键所在。表67和表68列出了两个多路器选择信号的输出真值表。注意,表68中的rs2包含了store指令中的rd,参见图639和图640中的电路,其中的rs2来自于寄存器堆前面多路器的输出。表67 ALUA端多路器选择信号的输出真值表输入输出MEM_WREGEXE_rs1= =MEM_rdWB_WREGEXE_rs1= =WB_rdADEPEN1ADEPEN0输入选择0x0X00A100X00A110X10MEM_R0X1000A0X1111W

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 应用文书 > 工作报告

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报