多端口寄存器堆的选择性旁路的方法和设备的制作方法

文档序号:6377358阅读:281来源:国知局
专利名称:多端口寄存器堆的选择性旁路的方法和设备的制作方法
技术领域
本发明一般性地涉及处理器结构,更特别地是涉及多端口寄存器堆的选择旁路技术。
背景技术
为了改善性能,当前处理器经常使用流水线技术以很高的速度执行指令。在这样的处理器上,指令处理过程被分为一系列操作,每个操作在相应的流水线级段中进行。几个指令中的独立操作可以同时由不同的流水线级段处理,这增加了处理器的指令吞吐量。微处理器中的常见指令流水线包含下列流水线级段指令获取(IF)、解码(Dec)、读数据(RD)、执行(EX)和写入(WR)。
参照图1,其中图解了多操作微处理器的构成。如上所述,多操作微处理器包含双功能单元(FU)结构,该结构具有四读出端口(R1-R4)、两写入端口(W1、W2)的寄存器堆(150)。应当理解,虽然仅给出了双功能单元结构,但是这种处理器的功能单元的实际数目可能会比所显示的数目要多。而且,应当理解,尽管存在许多多操作微处理器的设计,但这里提出的设计允许从寄存器堆独立地访问数据单元,即使用针对寄存器堆的独立索引。
当EX级段中执行的操作被独立地,即通过分立指令指定时,这种微处理器结构被称为超标量体系结构。相反,当通过对多个数据单元进行操作的单个指令指定操作时,这种微处理器结构被称为单指令多数据(SIMD)结构。
在RD级段(110)期间,四个数据单元被同时从多端口寄存器堆(150)中读出,并分成两个单独的集合,每个集合包括两个单元。这里,这些单元集合被称为向量。
在EX级段(120)期间,两个并行的功能单元(140、142)对这两个数据向量执行算术或逻辑操作。在WR级段(130)中,功能单元(140、142)中产生的结果被组成结果向量,并回写到寄存器堆(150)中。

发明内容
根据本发明的各种实施例,这种允许动态向量构成的寄存器堆可以被有选择地旁路,使得对于结果向量中的任何单元,当在产生该单元的相同位置上的相继操作中请求该单元时,该单元被旁路到相继操作的输入向量中。可选地,当请求动态组成向量的N个单元以作为顺序与其产生顺序相同、针对下一个操作的输入时,寄存器堆中待放置的结果可以被旁路到相继操作中。即,为了达到旁路的目的,N个向量单元作为单一实体进行处理。类似的原则可以应用到直写路径上。


图1图解了没有旁路的多操作结构的流水线;图2图解了具有全旁路的多操作结构的流水线;图3图解了具有相同位置选择性旁路的多操作结构的流水线;图4图解了具有全有-全无(all-or-none)选择性旁路的多操作流水线的流水线;图5图解了具有选择性旁路的功能单元的优选布局图。
具体实施例方式
为了允许对向量数据进行不间断(即,返回-前进-返回)的操作,其中周期i的操作结果被用作i+1周期(旁路)的操作或周期i+2(直写)的操作的输入,来自EX和WR级段的输出的旁路可以被反馈并与RD级段的输出复用。全旁路结构允许结果向量的任何单元被旁路到两个输入操作数向量中的任何一个的任何单元。
具有全旁路的流水线如图2所示。在RD级段期间,四个数据单元或者从多端口寄存器堆(250),功能单元(240、242)的输出中读出,或者从写入级段寄存器(244、246)的输出中读出。对于每个指向单一单元的读出索引(260),利用多个比较器(280)与单元写入索引(270)进行比较。如果读出的索引与最后周期的任何写入索引相匹配,则数据单元被从相应功能单元的相应单元输出中读出。如果不相匹配,则与第二最后的周期的单元写入索引进行比较。如果读出索引与这些写入索引中的任何一个匹配,则数据单元被从相应WR级段锁存器的相应单元输出中读出。在读出索引与任何写入索引不匹配的情况下,数据单元被简单地从具有相应读出索引的寄存器堆记录中读出。尽管连接没有明显地画出,然而应当理解,由复用器(230-236)使用比较结果。
在EX级段期间,两个并行功能单元(240、242)均对两个输入向量进行操作,每个功能单元对一对数据单元进行操作,其中每个输入向量提供一个数据单元。操作的结果被锁存到WR级段锁存器中,并且如果需要的话,可被旁路复用器(230-236)得到,以便被后续指令立即使用。在WR级段上,结果向量被回写到寄存器堆250中,并且如果需要的话,可被旁路复用器(230-236)得到,以便被后续指令立即使用。
对于寄存器堆具有2M个W位宽记录的N元向量结构,这涉及2N个数据复用器,每个具有2N+1个W位输入,和4N2个地址比较器,每个将M位读出地址与M位写入地址进行比较,除配线中的开销之外。全旁路的开销与N(每个向量中的单元数)的平方成比例。这表明在硅面积、功耗和定时方面都存在严重的问题。
通过观察多数旁路向量结果被用于与其产生时相同的单元位置上的后续操作这一现象,提出了本发明以减轻这些问题。例如,向量累加将N个新单元重复地加到运行(running)N元和数中,而运行和数的单元位置逐个周期地被保持下来。
一种利用这种观察的方式是定义选择性旁路结构,使得对于结果向量中的任何单元,当且仅当在与产生该单元时相同的位置上的相继操作中请求该单元时,该单元被旁路到相继操作的向量。类似的原则可应用到直写路径上。
图3图解的是相同位置选择性旁路方案的布局。在RD级段期间,2N个数据单元根据下列原则或者从多端口寄存器堆(250)、功能单元(240、242)的输出中读出,或者从WR级段寄存器(244、246)的输出中读出对于1至N的每个单元读出索引i如果单元读出索引与最后周期的单元写入索引匹配,则从功能单元的输出中读出数据单元;否则,如果单元读出索引与第二最后的周期的单元写入索引匹配,则从WR级段锁存器的输出中读出数据单元;再否则,从具有对应读出索引的寄存器堆记录中读出数据单元。
在EX级段期间,N个并行的功能单元对两个输入向量进行操作,每个功能单元对一对数据单元进行操作,其中每个输入向量提供一个数据单元。在WR级段中,结果向量被回写到寄存器堆(250)中,并且如果需要的话,还可被馈送相同功能单元的旁路复用器(230-236)得到,以便被后续指令立即使用。
如图3所示,对于双单元结构,这种相同位置选择性旁路方案使用8个地址比较器(380)而不是16个比较器。一般地,相同位置选择性旁路方案需要4N个地址比较器。
另一种利用上述观察的方式是定义选择性旁路结构,使得当且仅当动态组成向量的N个单元按照与产生这些单元时相同的顺序被请求作为下一个操作的输入时,待放置到寄存器堆的结果被旁路到相继操作。即,为了达到旁路目的,N个向量单元被作为单一实体对待。类似的原则可以应用到直写路径中。
图4图解的是全有-全无选择性旁路方案的布局。在RD级段期间,2N个数据单元根据下列原则或者从多端口寄存器堆(250)、功能单元(240、242)的输出中读出,或者从WR级段的寄存器(244、246)中读出1.形成两个向量读出索引。每个向量读出索引通过将向量中N个单元的每个的单元读出索引连接在一起而形成。
2.通过将结果向量的N个单元中的每个的单元写入索引连接在一起,形成一个向量写入索引。
3.对于每个向量读出索引如果向量读出索引与最后周期的向量写入索引匹配,则从保持单元顺序的功能单元的输出中读出数据向量;否则,如果向量读出索引与第二最后的周期的向量写入索引匹配,则从保持单元顺序的WR级段锁存器的输出中读出数据向量;再否则,从具有对应单元读出索引的寄存器堆记录中读出数据向量。
在EX级段期间,N个并行的功能单元对两个输入向量进行操作,每个功能单元对一对数据单元进行操作,其中每个输入向量提供一个数据单元。操作的结果被锁存到WR级段锁存器中,并且如果需要的话,可被馈送相同功能单元的旁路复用器得到,以便被后续指令立即使用。在WR级段中,结果向量被回写到RF中,并且如果需要的话,可被馈送相同功能单元的旁路复用器(430-436)得到,以便被后续指令立即使用。
如图4所示,对于双单元结构,这种全有-全无选择性旁路方案仅使用了四个比较器(480-484)。一般地,全有-全无选择性旁路需要2N个比较器,并且减少了2N个数据复用器的旁路开销(均具有3个W位输入),和4个地址比较器(每个将M*N连接的读出地址与M*N连接的写入地址相比较)。
图5示出的是具有选择性旁路的功能单元的优选布置图。读出和写入锁存器被物理放置在数据路径的相应段的顶部。所有旁路导线垂直地从回写锁存的输入和输出端穿过旁路复用器,到达读出锁存器的输入端。没有导线穿过功能单元。
如图5所述,为了充分利用本发明,选择性旁路机构可以物理地实现在芯片上。特别是,优选的布置包含多端口化的寄存器堆10和N个使用选择性旁路机构的功能单元14。读出锁存器11和12保持从寄存器堆10读出的值,写入锁存器13保持在下一个周期里写到寄存器堆10中的值。每个功能单元至少有两个读出锁存器和一个写入锁存器。
在图5中的优选实施例的布置图中,同一功能单元14的读出锁存器11和12、写入锁存器13都物理地放置在寄存器堆和该功能单元之间,物理上互相靠近。因此,所有的旁路导线15垂直地从写入锁存器13的输入端和输出端穿到可以嵌于读出锁存器11和12的旁路复用器的输入端。在这个物理实现中,没有导线穿过单元。
应当理解,选择性旁路可以用在SIMD微处理器以及多操作微处理器中,其中指令或者被静态(当编码产生时)调度,或者被动态(当编码正在被执行时)调度。
在SIMD微处理器中,选择性旁路机构被定义为微处理器的结构规范的一部分。如果在连续的周期里提交相关的操作,优化编译器或程序员确保SIMD指令的相关单个操作在同一功能单元,即在向量的同一位置中执行。
在静态调度的流水线处理器中,选择性旁路机构也被定义为微处理器结构规范的一部分。如果在连续的周期里提交相关的指令,优化编译器或程序员安排它们在同一功能单元中,即向量的相同位置上执行。
在动态调度的处理器中,选择性旁路机构对编译器或程序员是不可见的。建立指令提交机构以便在考虑到有限旁路的特性的情况下提交相关的指令。如果在连续的周期里提交执行相关指令,提交逻辑将它们发送到同一功能单元,即,这些向量的相同位置中。
尽管本发明在这里例举的实施例已经参照附图进行了描述,应当理解的是本发明并不限于那些精心设计的实施例,可以由本领域中技术人员对其进行各种其它的变化和修正,只要不违背本发明的主旨和精神。
权利要求
1.在多操作处理系统中有选择地旁路寄存器堆的方法,所述多操作处理系统具有多级段执行流水线,包含多个功能单元和具有多个读出端口与写入端口的寄存器堆,该方法包括步骤确定功能单元中同时产生的结果是否将用在其中产生该结果的相同功能单元中;当结果将被用在其中产生该结果的相同功能单元中时,旁路寄存器堆。
2.如权利要求1的方法,其中确定步骤包括,针对每个功能单元,将每个操作数读出索引与前一周期的相应结果写入索引相比较,并且如果比较的结果为匹配,为功能单元设置旁路条件。
3.如权利要求1的方法,其中确定步骤包括步骤形成一对向量读出索引,其中通过连接每个操作数的读出索引来形成每个向量读出索引;通过连接每个结果的写入索引来形成向量写入索引;将每个向量读出索引与向量写入索引相比较;针对每个比较,如果比较结果为匹配,为所有功能单元设置单一旁路条件。
4.如权利要求1的方法,其中处理系统是单指令多数据(SIMD)处理系统。
5.如权利要求1的方法,其中处理系统是静态调度的多事务处理系统。
6.如权利要求1的方法,其中处理系统是动态调度的多事务处理系统。
7.一部分集成电路芯片的布置结构,集成电路芯片能够执行如权利要求1的方法,包括包含针对多端口寄存器堆,多个功能单元和多个读出锁存器与写入锁存器的芯片区域的布置;其中每个功能单元具有至少两个读出锁存器,用来保持多端口寄存器堆的值,和一个写入锁存器,用来保持要写入到多端口寄存器堆的值,每个功能单元的至少两个读出锁存器和写入锁存器被放置在寄存器堆和功能单元之间,使得旁路导线从写入锁存器的输入和输出端穿到至少两个读出锁存器的输入端。
全文摘要
多端口寄存器堆可以是选择性地进行旁路,使得当该单元被请求在随后的操作中使用与产生它的相同的索引时,结果向量的任何单元被旁路到随后操作的输入向量的同一索引中。另外,当N个动态构成向量的单元被请求恰好以与产生它们相同的顺序在下一操作中作为输入时,待放置于寄存器堆中的结果可以被旁路到随后的操作中。即,为了达到旁路的目的,N个向量单元作为单一整体处理。类似的原则可以应用到直写路径中。
文档编号G06F15/80GK1493976SQ0315538
公开日2004年5月5日 申请日期2003年8月28日 优先权日2002年8月29日
发明者塞穆·阿萨德, 杰穆·H·莫瑞奴, 维克托·久班, 久班, H 莫瑞奴, 塞穆 阿萨德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1