欢迎来到天天文库
浏览记录
ID:43722447
大小:1.13 MB
页数:22页
时间:2019-10-13
《《计算机系统结构课件》2-流水线处理机及其设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、6.3.3流水线各级信号的产生至此,我们己经描述过了所有3种指令类型的流水线操作。下面我们来总结控制信号的产生方法。控制信号分布在流水线处理机的各级,我们当然可以在它们要被使用的流水线级产生,例如SIMM可在EXE级产生。但这样,除了译码将会造成本级一些延迟Z外,还要使用流水线寄存器来传递必要的信息,例如指令操作码等。我们釆用的方法是,控制信号集中在ID级由译码电路产生,并使用流水线寄存器把每一个控制信号传递到它被使用的流水线级。我们把所有的控制信号归纳在表6.4中。表6.5列出了除了ALUOP的各控制信号的产生表达式。表6.6列HITALUOP控制信号的产生表达
2、式。由以上表达式,我们可以有如图6.29所示的控制电路。图中使用了流水线寄存器来把控制信号传递到合适的流水线级。我们可以看出,流水线控制部件的设汁方法与非流水线单周期处理机的控制部件的设计方法非常类似,而有限状态机和微程序的设计方法显得不太适合。表6.4流水线各级控制信号的定义流水线级控制信号注释IF级BTAKEN转移发生ID级SST选择store(rd)SIMM选择立即数EXE级ALUOPALU操作码WZ写Z标志MEM级WMEM写存储器WB级SLD选择loadWREG写寄存顺堆表6.5控制信号的产生表达式BTAKEN=branch+bneZ+beqZSST=st
3、oreSIMM=andi+ori+addi+subi+load+storeWZ二andi+ori+addi+subi+and+or+add+subWMEM=storeSLD=loadWREG=andi+ori+addi+subi+and+or+add+sub+load表6.6ALU控制信号的产生表达式指令ALUOP1ALUOPO操作指令ALUOP1ALUOPO操作and00与andi00与or01或ori01或add10加addi10加sub11减subi11减load
4、1
5、0
6、加store1I()I加ALUOP1=add+addi+sub+subi+load+s
7、toreALUOPO=or+ori+sub+subi图6.29流水线处理机的数据路径和控制部件6.4结构相关及解决方法流水线处理机的设计存在3个非常著名的问题(hazard)o它们是(1)结构相关问题(structuralhazard);(2)数据相关问题(dalahazard);(3)转移相关问题(branchhazard)o我们将在本节简要介绍第一个问题,下面两节分别介绍第二和第三个问题。结构相关(structuraldependence)问题指的是,由于硬件资源不充足而导致流水线不畅通。我们将举3个例子來说明结构相关问题及其相应的解决方案。,第一个例子,也是
8、最典型的例子,就是设想只为流水线处理机配备一个外部公共存储器模块。这在现代计算机系统设计中是常见的。它的好处是程序和数据可以共享这个存储器模块,二者之间的界限是可以动态调整的。使用分开的两个外部指令存储器模块和数据存储器模块的计算机被称为具有哈佛(Harvard)结构的计算机。依程序类型的不同,有的需耍较大的程序空间和较小的数据空间;有的则需要较小的程序空间和较大的数据空间。在这种情况下,哈佛结构的存储器不能被灵活、充分地利用。然而,如果只采用一个存储器模块而不采取任何其它的措施,则会出现结构相关问题,造成流水线堵塞。图6.30示出了由于存储器端口资源的不充足而使
9、取指令和load/store指令访问存储器的动作不能同时进行。图&.30单个存储器模块所造成的流水线堵塞图6.30中的存储器模块只有一套访问端口。当load/store指令访问存储器时,必须暂停取指令操作。当然也可以让取指令优先而暂停load/store指令的存储器访问操作。然而,不管是哪一种情况,计算机的性能将会有很大的损失。那么,釆用一个外部存储器模块的现代计算机是如何解决这个问题的呢?说起来很简单,如图6.31所示,在处理机内部,设置两个分开指令和数据的高速缓冲存储器(CACHE)o把存储器中经常使用的程序段和数据分别放在指令CACHE和数据CACHE中。访
10、问CACHE命中时,处理机可直接从CACHE得到指令和数据,而不再访问外部存储器。有关CACHE的原理和结构,我们将在9章详细讨论。再举第二个例子。把ALU指令的WB级提前一个周期。由以前的描述可知,ALU指令在EXE级结束时已把结果放在了流水线寄存器R,在MEM级不做任何运算,只是把它传递到流水线寄存器C,以便在WB级写入寄存器堆。我们可以把这样的数据路径加以改造,使ALU指令提前一个周期i即在通常的MEM级就把结杲写入寄存器堆。如杲load指令仍用5个周期,则势必在有的周期有两个数据要同时写入寄存器堆;而有的周期则没有一个数据要写入,见图6,32(a)o由于寄
11、存器堆只有
此文档下载收益归作者所有