首页> 中国专利> 具有交错式写端口的多端口寄存器堆

具有交错式写端口的多端口寄存器堆

摘要

提供一种用于超长指令字(VLIW)和N路超标量处理器的改进的高速寄存器堆。此高速寄存器堆包含选定数目的通用寄存器(GPR)构件的拷贝。GPR构件至少包含两个交错式寄存器子片。每个子片包含N个数目的写端口和M个数目的读端口。子片的写端口是交错式的并且读端口是非交错式的。

著录项

  • 公开/公告号CN1148207A

    专利类型发明专利

  • 公开/公告日1997-04-23

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN96106203.7

  • 发明设计人 戴维·阿诺尔德·雷克;

    申请日1996-05-07

  • 分类号G06F12/00;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人鄷迅

  • 地址 美国纽约

  • 入库时间 2023-12-17 12:52:21

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-07-13

    未缴年费专利权终止 IPC(主分类):G06F12/00 授权公告日:20020320 终止日期:20100507 申请日:19960507

    专利权的终止

  • 2002-03-20

    授权

    授权

  • 1997-04-23

    公开

    公开

  • 1997-04-02

    实质审查请求的生效

    实质审查请求的生效

说明书

本发明涉及具有多个读写端口的随机读/写存取存储器(RAM)或多端口寄存器堆,更具体地涉及包含64个或更多端口的高速寄存器堆,它适用于超长指令字(VLIW)和N路超标量处理器。

已知的多重或多端口寄存器堆不适用于超长指令字(VLIW)和N路超标量处理器。VLIW处理器由一系列能同时执行指令的各个部分的算术逻辑或功能单元组成。具有8个,16个或更多流水线功能单元的VLIW和N路超标量处理器需要一个中心寄存器堆用于通信,该寄存器堆必须给每个流水线提供三个或四个端口用于可能的64端口或更多的要求。当前的技术恰恰不允许构造有如此多端口的直接物理实现,特别是访问和写时间要求非常严格时。目前大多数物理上可连线的端口可能少于或等于二十(20)。

本发明的主要目的是提供一种用于超长指令字(VLIW)和N路超标量处理器的改进的多端口寄存器堆。

简言之,就是提供一种用于超长指令字(VLIW)和N路超标量处理器的高速寄存器堆。该高速寄存器堆包含选定数目的通用寄存器(GPR)构件的拷贝。GPR构件包含至少两个交错式寄存器子片。每个子片包含N个数目的写端口和M个数目的读端口。子片的写端口是交错式的并且读端口是非交错式的。

从下面图示所说明的本发明最佳实施方式的详细描述中,可以更好地理解本发明的上述目的以及其它目的和优点,其中:

图1是一个框图,它说明了一对根据本发明的有二十个端口的通用寄存器堆(GPR)物理构件;

图2是一个框图,它说明了一个六十四端口寄存器堆,该寄存器堆包含图1中二十八端口逻辑GPR堆逻辑构件的四个拷贝;

图3是一个框图,它说明了利用图1中GPR堆构件所进行的一种写端口的划分方案;

图4是一个框图,它说明了利用图1中GPR堆构件所进行的本发明的一种替代的简化的写端口划分寄存器堆方案;

图5是一个框图,它说明了一个包含图4中六十四端口寄存器堆的超长指令字(VLIW)处理单元;

图6是一个框图,它说明了一个七十二端口寄存器堆。该寄存器堆包含图1中二十八端口寄存器堆构件的四个拷贝;

图7是一个说明了图1中寄存器堆构件中的一个单元以及一个地址解码和算术逻辑单元(ALU)加法器的示意图;

图8是一个说明了根据图1中本发明的GPR堆构件的一个可变性能读访问的示意图;

图9是图1中GPR堆构件位0的一个示例性的布局;

图10是图1中GPR堆构件位0的又一个示例性的布局。它说明了根据本发明的一种替代的读端口布局;

图11是一个说明了包含图1中GPR堆构件的处理单元的一个示例性的布局的示意图。

现在参考附图,图1说明了根据本发明的一个二十八端口通用寄存器(GPR)堆逻辑构件,一般由参考符50标识。根据本发明的特点,交错式写端口,可以看出写端口特别分成了奇数号和偶数号寄存器子片。位宽32的GPR寄存器堆构件50产生总共16个可用的写端口和12个可用的读端口。

GPR堆逻辑构件50包含一对二十端口的GPR堆物理构件52。该二十端口GPR堆物理构件52包含一个偶数号GPR子片52和一个奇数号GPR子片52的交错式写端口。这两个GPR子片52提供12个读端口,并且其中一个有32个偶数号寄存器的子片提供8个写端口,另一个有32个奇数号寄存器的子片提供8个写端口。该GPR寄存器堆构件50包含十六个物理写端口和十二个物理读端口,它们可用于构造一个64端口GPR逻辑寄存器堆,这在图2中总体由60标识,它具有极佳的性能特性。

现在参考图2,该六十四(64)端口通用寄存器堆包含图1中二十八端口寄存器堆逻辑构件50的四个拷贝。随着GPR堆逻辑构件50复制了4次,读端口4倍地增长可满足总共48个读端口的所需数目。对于64位宽的寄存器堆60,64个寄存器分成两组;一组32个偶数号的寄存器和一组32个奇数号的寄存器。实用时,此寄存器堆方案60允许编译器通过某些寄存器分配组合及重命名算法,来产生奇数号和偶数号目标寄存器操作数目大致相同的指令的基本块。在VLIW指令严格编码的情况下,每个指令包都固定地赋予或者一个奇数号(奇数包)或者一个偶数号目标操作数寄存器堆端口,从而省去了在指令中对寄存器地址的最后一位进行编码的需要。

由于在目标寄存器中执行写操作之前,与非交错式寄存器堆的16路写选择相比,交错式寄存器堆60只需8路写选择,因而其写性能提高了。然而复制不可能引起写端口的增加,这是由于所有拷贝接收所有的写以保持有效的拷贝。GPR64端口寄存器堆60还提高了寄存器堆的实际读端口性能,这是由于它将拷贝1,2,3,4放在了最接近于它所驱动的流水线数据流处。这种复制策略的一个缺点是目标操作数必须物理上遍历图2寄存器堆60中GPR逻辑构件50的所有四个拷贝的整个区域。

图3是一个框图,它说明了利用这四个GPR构件50的拷贝而进行的一种写端口划分寄存器堆方案,一般标识为68。每个块70包含两个GPR构件52,带有进入每个单元的8个附加的写路径或端口。在寄存器堆68中,任何装载都能同时写所有的拷贝1,2,3和4,并且任何ALU都能同时写所有拷贝1、2、3和4。由于需要提供16个ALU写端口和8个负载写端口所需的8个附加的写端口,方案68是不现实的。

图4说明了一种包含四个块80的替代的、简化的写端口划分寄存器堆方案,一般标识为78。每个块80包含两个1/2块或子片52或一个块50。在拷贝1和2中,其中一个子片52用于ALU写管道0-7并且另一个子片52用于8个负载写端口。在拷贝3和4中,其中一个子片52用于ALU写管道8-15,并且另一个子片52用于8个负载写端口。图4的划分方案78提供了一种实用的解决方法,它总共需要十六个写端口,而不是图3中不实用的方案68总共所需要的24个写端口。一个复杂的编译器能在一个给定周期内把目标写只限定于4个拷贝80中的两个。对于产生必须写入寄存器堆78的目标结果的ALU操作,编译器设法使一个基本块的所有或大部分工作限于VLIW处理器的总共十六个流水线槽或管道中的第一组八条流水线0-7或第二组八条流水线8-15中。

寄存器堆78的两组拷贝80中的每一组只需从十六条管道中一半的管道中接收ALU目标结果:或者是八条管道0-7或者是八条管道8-15,这使得每个拷贝所需的总的写端口数减少8个。附加的读端口并不十分昂贵;但是,由于影响了具有额外输入端口的所有拷贝1,2,3,4,附加的全局写端口是十分昂贵的。当管道8-15需要查看管道0-7的结果或反之时,编译器适当地调度移动寄存器操作并适当地调度寄存器引用,使得由此引起的管道阻塞得以完全避免。

图5是一个框图,它说明了一个包含六十四端口GPR堆78的VLIW处理单元,一般标识为82。图5所示的ALU目标划分方案的另一个显著的优点是极大地减少了获得任何ALU结果到任何写端口所需的总线连线的总长度,并降低了负载需求,即从没有写端口划分时的4减少到2。标号84的连线代表划分寄存器堆78所需的最长的ALU写总线连线。标号86的连线代表未划分的寄存器堆60所需的最长的ALU写总线连线。在划分的ALU目标寄存器堆78中,最坏情况下,一个ALU只需驱动其自身和一个相邻的寄存器堆拷贝,与之相反,在非划分方案中则要驱动下一个与之相邻的拷贝。这也潜在地允许这些总线连线是双倍粗和双倍宽的连线。更粗和更宽的连线具有较低的电阻,并且还由于与非划分寄存器堆方案相比,总线连线可以只以大约一半的长度工作,从而提供了更好的性能。写端口目标划分显然不用于高速缓存数据负载写端口,其部分原因是由于在商用环境中,性能通常受到可用的负载管道数的限制,而不是ALU数的限制。这样ALU操作能够在每个ALU目标划分中重复而不会冲突,负载就不能。而且,存在许多负载相关的情况:例如链表,这使得延迟非常重要。对于高速缓存数据负载的情况,由于数据总线已经是带有高电流驱动源的长连线,几乎不存在周期时间/写连线延迟差别。驱动4个寄存器堆拷贝,而不仅仅是2个,使得总线延迟的改变不显著,特别是假定负载路径已经是2个周期的路径时。

图6说明了一个七十二端口寄存器堆,它包含图1中所示的二十八端口GPR堆逻辑构件50的四个拷贝,一般标识为90。图6中,整个寄存器堆的布局包含八个基本的20端口GPR子片52,所产生的逻辑寄存器堆能够对总共72个逻辑端口进行每周期最多48次读和24次写。这些逻辑端口具有非常快的读访问和写入性能能力。

图7是一个说明了图1中寄存器堆构件52的一个单元的示意图。一个DCACHE数据输入施加到一个8路字节校准器100上,而该8路字节对齐的输出端与一个4路多路选择器(MUX)102相连。MUX102与一个2路选择器(MUX)104相连。它们共同定义了单元106中的一个8路MUX操作。单元106包含一对锁存器,表示为L1和L2锁存器或一个移位寄存器锁存器。L1锁存器与一个8路MUX108相连,该MUX的输出端与8路MUX110相连。一般标识为112的GPR地址译码器包含一对地址缓冲器114,116,并且地址L1锁存器118,120将地址信号施加到MUX108和110上。C1时钟输出用于为L1和L2锁存器118和120设置地址缓冲器114和116。MUX110的输出施加到加法器122上,该加法器与相关联的算术逻辑单元(ALU)的L2*锁存器124相连。L2*锁存器124的输出施加到4路MUX126上,该MUX通过一个标号为128的全局网路线与2路MUX104相连。在具有6级金属喷镀的互补金属氧化物半导体(CMOS)集成电路实现中,全局网路线128可以是第5级金属并做得较厚,例如2倍于标准的线宽。L2锁存器106的单元输出施加到64路MUX130上,该MUX提供了一条恢复路径。

图8说明了本发明的一种可变读端口性能特性。对每个寄存器堆拷贝50,不是所有的12个读端口都有相同的性能要求。8个读端口要求尽可能快地写入。4个快速读端口馈给ALU的右输入端,这样对减法和其他功能必须具有求真和取补的功能。其它的4个快速读端口馈给其它的ALU输入端(不取补)和CACHE逻辑(机器关键路径)并且也要做得尽可能快。一个L1锁存器142提供2个锁存相-PHASE和+PHASE。L1锁存器相+PHASE用于驱动多个读端口选择器144和146以提供快速的L1写入端口。写入端口在同一个时钟周期内将数据从一个写端口传送到读端口。同样编译器能够保证在任意给定周期内没有2个以上的输出读选择器会访问相同的寄存器,从而限制了必须提供的电流,并进一步提高了性能。L1锁存器相-PHASE用于驱动缓冲器148,该缓冲器与一对选择器150,152相连,从而提供了4个慢速的L2读端口,这些读端口是非写入式的,并且没有严格的性能要求,这是由于当它们无论用于存储寄存器数据访问还是加载意外保存恢复寄存器时都没有严格的定时要求。这4个慢速读端口可以容忍较长,较细和较不规则的总线连线,这给了设计者额外的自由度。与写端口相连的旁路选择154给ALU管道提供了快速读端口。

图9提供了图1中GPR堆逻辑构件50位0的示例性布局。如布局中间附近所示,64个GPR寄存器单元分为32个奇数号单元106和32个偶数号单元106。与8∶1多路选择器相邻的列定义了4路和2路MUX102,126,并且104通过多条写连线与偶数号和奇数号单元106相连,这些写连线由标号为160的示例性连线指示。八个L1读端口和四个L2读端口利用指示单元106到读端口的示例性连接的连线进行说明。

参考图10,图1中GPR堆逻辑构件50位0的另一个示例性布局说明了根据本发明的一种替代的读端口布局。根据图8中所说明和描述的,GPR堆逻辑构件50包含八个快速L1读端口和四个慢速L2读端口。在写译码,时钟,缓冲和测试以及第一组四个八路写MUX之间提供了四个快速L1读端口。在第二组四个八路写MUX和四个慢速L2读端口之间提供了四个快速L1读端口。在八个写端口输入端和第一组四个八路MUX之间,这些八路MUX和这些单元之间以及这些单元与四个慢速L2读端口的其中一个端口之间表示了示例性的连线。

图11是一个说明了一个包含GPR堆78的处理单元的示例性布局的示意图。在图11中,划分的GPR堆78通常表示在位于寄存器/寄存器(RR)管道0-7之上和寄存器/存储(RS)管道0-5及相关联的DCACHE目录(DDIR)及段旁顾缓冲器(SLBs)0-7之下的中心位置处。在偶数号和奇数号GPR1/2拷贝1(图1中的子片52)之间,以及一个解码器和控制区域之间表明了一条示例性的连线,该控制区域能设置有更粗的连线,例如,两倍于标准的宽度。

虽然参照图中所示的本发明的实施方式详细描述了本发明,但是这些详述并不是为了限制所附的权利要求中所要求的本发明的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号