基于操作队列复用的指令流水线系统和方法技术方案

技术编号:2878164 阅读:247 留言:0更新日期:2012-04-11 18:40
一种基于操作队列复用的指令流水线系统,包括:取指部件,用于取出指令;译码部件,对取出的指令进行译码,并按指令在程序中出现的先后次序把译码后的指令(称为操作)送到操作队列;操作队列,按次序根据操作的类型把操作发射到相应的保留站,并按次序结束运算结果已经写回的指令;保留站,对发射来的操作进行运算,把运算结果送回到结果总线并写回到操作队列;寄存器,在结束指令时,接收由操作队列依照指令进出操作队列的次序。本发明专利技术通过操作队列的复用实现指令的动态调度,减少控制逻辑,从而提高流水线效率,进而提高微处理器的性能。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及微处理器体系结构,特别涉及一种微处理器的流水线系统。为了提高处理器中指令执行的并行度,现代微处理器大都采用动态调度技术,即允许处理器改变指令的发送和执行的次序,以克服相关性,增加并行性。为了实现指令的动态调度,通常还需要寄存器重命名和操作队列等技术支持。寄存器重命名技术的基本思想是允许处理器动态地分配寄存器,用于解决由于指令乱序执行而产生的寄存器冲突,操作队列一般多用于缓冲准备好用于乱序执行的指令。在今天的计算机微处理器设计中,随着对机器性能要求的不断提高,对流水线效率的要求也越来越高,流水线的设计也越来越复杂。SGI/MIPS的MIPS系列微处理器是与本专利技术最为接近的。其代表产品是R4000和R10000。下面以它们的流水线为例,分析其优劣,进而阐明本专利技术的优点所在。MIPS R4000采用的是静态流水方式,共分为8个阶段,分别是取指1(IF),取指2(IS),取寄存器(RF),执行(EX),取数1(DF),取数2(DS),标记检查(TC),写回(WB)(参见参考文献2)。由于静态流水的局限性,造成了该微处理器不能实现指令乱序执行,因而流水线效率比较低。同时由于数据通路不够,对指令顺序还提出了一些很苛刻的要求。MIPS R10000的流水线分为大致6级(定点5级,访存6级,浮点7级),1~3级是取指阶段,在第1级,取出指令及其下面比邻的四条指令,在第2级,进行译码和寄存器重命名,并为转移指令计算地址。在第3级,将寄存器重命名后的指令送入相应操作队列,并做相关处理。在第3阶段的后半段,处理器从寄存器堆中读出操作数,并在第4阶段开始执行(其中定点执行需1级,访存指令需2级,浮点指令执行需3级),在执行完成后的下一级前半写回结果。在流水线技术方面,运用了指令预取,乱序执行,转移猜测,精确中断等先进技术,并保持了顺序一致性。该处理器每个时钟周期可以进行四条指令的取指和译码,利用转移栈实现了转移猜测,利用映射表实现寄存器重命名,进而实现乱序执行。在MIPS R10000中是通过使用寄存器映射的方法实现动态调度的,具体做法是,在指令被送到操作队列之前,将逻辑寄存器号映射为空闲的物理寄存器号,然后将重命名好的指令放入操作队列,然后执行。执行结束后,先将结果写回到该物理寄存器对应的临时结果寄存器中,直到该指令可以写回时,再写回到该物理寄存器。这种方法,要求真正的物理寄存器要比逻辑寄存器多一倍左右。因此在R10000中,共有33个定点逻辑寄存器(包括特殊的HI和LO寄存器),64个定点物理寄存器,32个浮点逻辑,64个浮点物理寄存器。为了实现寄存器重命名,R10000采用了如下结构寄存器映射表(registermap tables),空闲表(free tables),活跃表(active tables),以及忙位表(busy-bittables)。其中,寄存器映射表将逻辑寄存器映射为物理寄存器,空闲表记录空闲中的物理寄存器,活跃表记录所有的活跃指令,以便于精确中断。忙位表记录每一个物理寄存器中当前的值是否有效。同时,在R10000中共有3个操作队列,定点,浮点和访存分别各有一个。经过寄存器重命名的指令通过分类后分别打入各操作队列,在操作队列中可乱序执行,但写回仍然按序写回到寄存器中,不过对于程序员而言,好像指令序列仍然一直按顺序执行一般。当寄存器中的值可用后才可以再继续发射相关指令。这种动态乱序执行性能上比静态流水有了很大提高,但是仍然有一些不足之处。比如,重命名的代价过大,控制过于复杂(要引入4个记录表,物理寄存器要远多于逻辑寄存器),没有保留栈,要把结果直接写回到寄存器中,使得相关指令发射要有一拍左右的延迟等等,见Kenneth C.Yeager,The Mips R10000 Superscalar Microprocessor,IEEE Micro,Vol.16,No.2,1996 pp.28-39。为实现上述目的,一种基于操作队列复用的指令流水线系统,包括取指部件,用于取出指令;译码部件,对取出的指令进行译码,并按指令在程序中出现的先后次序把译码后的指令(称为操作)送到操作队列;操作队列,按次序根据操作的类型把操作发射到相应的保留站,并按次序结束(Commit)运算结果已经写回的指令;保留站,对发射来的操作进行运算,把运算结果送回到结果总线并写回到操作队列;寄存器,在结束指令时,接收由操作队列依照指令进出操作队列的次序。本专利技术通过操作队列的复用实现指令的动态调度,减少控制逻辑,从而提高流水线效率,进而提高微处理器的性能。专利技术的实施方式本专利技术的流水线结构是一种精简指令集计算机(Reduce Instruction SetComputer,简称RISC)的指令流水线结构。本专利技术的流水线结构如附图说明图1所示。该结构由取指部件,译码部件,操作队列,定点及浮点寄存器堆,及多个功能部件组成。在该结构中,指令译码部件按指令在程序中出现的先后次序把译码后的指令(译码后的指令称为操作)送到操作队列,操作队列按次序根据操作的类型把操作发射到相应的保留站,并按次序结束运算结果已经写回的指令。保留站中的操作经运算后,把结果送回到结果总线并写回到操作队列。指令进出操作队列(即发射和结束)都是有序的,但在操作队列期间的执行过程中是无序的。在上述结构中,运算结果不直接写回到结果寄存器而是先写回到操作队列是为了实现精确例外处理。因为操作队列中指令的执行是无序的,一条指令的执行结果必须等到它前面所有的指令都执行完后才能写回到寄存器。否则,在该指令的执行结果写回寄存器后它前面的一条指令发生了例外时,例外现场就不正确了。如果一个操作发射时它所需的源操作数还没有准备好(该操作的源寄存器正成为其它未完成指令的目标寄存器),该操作的发射不需要等待,而是通过操作队列号建立操作间的数据依赖关系后把该操作发射到保留站,保留站自动侦听结果总线并接收所需要的值。具体过程如下(1).一个操作发射时要在相应的目标寄存器(如Ri)处记录该操作在操作队列中的位置(如第qid项),即该寄存器被重定向到最近一个写它的操作在操作队列的位置;并置该寄存器为无效,在该操作结束并把值写回到寄存器之前,该寄存器的值不可用。(2).后面的操作发射时如果用到Ri寄存器,访问Ri寄存器时发现该寄存器正成为操作队列中第qid项的目标寄存器且结果未写回到寄存器,则读出Ri中记录的qid号并根据该号访问操作队列;如果第qid项的值已经写回到操作队列则直接从操作队列中读出该值作为Ri的值,否则把qid送到保留站并在保留站中记录该寄存器值未准备好。(3).保留站侦听结果总线,当第qid项操作结束并把结果送到结果总线时直接接收结果总线的值作为Ri的值。(4).当保留站中所有操作数都准备好后开始运算并把结果送到结果总线,结果总线连接到操作队列以及保留站。图2给出了操作队列发射一个操作到保留站时操作数的形成过程,图中没有包括浮点部分。本专利技术的指令流水线分成取指、译码、发射、执行并写回、完成等阶段。其中执行阶段可能需要多拍。●取指根据当前PC的内容取指令到指令寄存器IR。下一条指令的PC值由多个因素决定,如IR中的指令是否为转移指令,例外,以及前面的转移预测失败等。在正本文档来自技高网...

【技术保护点】
一种基于操作队列复用的指令流水线系统,包括: 取指部件,用于取出指令; 译码部件,对取出的指令进行译码,并按指令在程序中出现的先后次序把译码后的指令(称为操作)送到操作队列; 操作队列,按次序根据操作的类型把操作发射到相应的保留站,并按次序结束运算结果已经写回的指令; 保留站,对发射来的操作进行运算,把运算结果送回到结果总线并写回到操作队列; 寄存器,在结束指令时,接收由操作队列依照指令进出操作队列的次序。

【技术特征摘要】

【专利技术属性】
技术研发人员:胡伟武唐志敏冯雷
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1