资源描述:
《计算机流水线处理机及其设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、6流水线处理机及其设计6.1引言流水线(pipeline)是一种能够使多条指令重叠操作的处理机的实现技术,它已成为现代处理机设计中最为关键的技术。流水线技术并不是处理机设计领域所独有的。早在计算机还没有出现之前,流水线技术已被广泛应用于工业生产中了。尤其是现在,几乎所有的现代化工厂的生产线都采用流水线技术。一件产品往往需要几道工序才能完成。每道工序只完成生产过程中的一小部分操作,即送往下——道工序。如果单从——件产品从开始到完成来看,生产所需要的时间,与非流水线相比,似乎并没有缩短。但从整体来看
2、,产品的出产率却大大提高了。流水线处理机也是这样,单条指令的执行时间没有缩短,但每个时钟周期都会有一条指令执行完毕。试想,非流水线多周期处理机执行一条指令平均要花费大约4个时钟周期。假设执行1万条指令,就要用4万个时钟周期。而流水线处理机执行一条指令可能需要5个时钟周期,但由于多条指令,例如5条,可以重叠操作,总体上,平均每条指令所花费的时间大致为1个时钟周期,总共只需要大约1万个时钟周期。这就是所谓的“吞吐率”的提高。流水线处理机把一条指令的执行分成几个步骤,或称级(stages)。每一级在一
3、个时钟周期内完成。在每个时钟周期,处理机启动执行一条指令。如果处理机的流水线有m级,则同时可重叠执行的指令总条数将为m,每条指令处在不同的执行阶段。如果分级分得好的话,那么每—级都没有时间上的浪费。这是最理想的情况。流水线处理机在这种理想的情况下,与非流水线处理机的性能加速比为其中,I为一个程序被执行的总的指令条数。它在流水线处理机和非流水线处理机中是相等的。CPI是每条指令总体平均所需的时钟周期数。CPInp是非流水线处理机的CPI,CPIn是流水线处理机的CPI。因为流水线处理机把一条指令的
4、执行时间理想地分成了阴级,有m条指令在同时(重叠)执行,则CPIp=CPInp/m。也可理解为CPIp=1,而CPInp=m。T是每个时钟周期的时间长度,假设它在两种处理机中也是相同的。最后总的加速比为m,即等于流水线的级数。这岂不是说,把流水线级数分得越多处理机的性能就越好?但是,实际的情况往往要受很多条件的限制。流水线处理机性能提高的关键在于每个时钟周期处理机都能启动一条指令的执行。这意味者流水线每级中的执行部件要有能力在每个时钟周期接收一条新的指令。例如,如果ALU完成一次操作要用10ns
5、的话,那么一个ALU接收一条指令操作的周期不能短于10ns。指令存储器以及数据存储器也有这样的限制。也假设它们的访问周期是10ns,则每隔10ns才能从指令存储器取出一条指令,或者每隔10ns才能读写一次数据存储器。在本章以下的讨论中,我们仍使用5章中定义的指令系统。它们是,ALU操作类型的指令,包括and,of,add和:sub;存储器访问指令10ad和store;条件转移指令bne和beq,以及无条件转移指令branch,共9条。ALU指令除了把运算结果写入寄存器堆之外,也把ZERO标志写入
6、Z寄存器。条件转移指令使用Z标志决定是否转移,其它指令不影响Z寄存器。处理机的指令系统及指令格式如表6.1所示。表6.1流水线处理机的指令系统和指令格式31262521201615540指令意义000000rdrs1rs2Andrd,rs1,rs2寄存器与寄存器000001rdrs1immeAndird,rs1,imme寄存器与立即数000010rdrs1Rs2orrdrs1,rs2寄存器或寄存器000011rdrs1immeorird,rs1,imme寄存器或立即数000100rdrs1rs2
7、addrd,rs1,rs2寄存器加寄存器000101rdrs1immeaddird,rs1,imme寄存器加立即数000110rdrs1rs2subrb,rs1rs2寄存器减寄存器000111001000001001rdrdrdrs1rs1rs1immeimmeimmesubird,rs1,immeloadrd,immme(rs1)storerd,imme(rs1)寄存器减立即数从存储器读数据向存储器写数据001010001011001100dispdispdispbnedispbeqdispb
8、ranchdisp结果非0时转移结果为0时转移无条件转移这些指令执行时用到的主要功能部件和它们所需的时间如下:指令存储器和数据存储器:10ns;ALU和地址加法器:10ns;寄存器堆:5ns;假定其它部件,如PC寄存器、多路器、控制部件等花费的时间为o。表6.2列出了各指令执行时所需要的时间。表6.2各类指令执行时所需要的时间ns10510105ALU指令指令存储器寄存器堆ALU寄存器堆30load指令指令存储器寄存器堆ALU数据存储器寄存器堆40store指令指令存储器寄存器堆ALU数据存储器