CN1493976A - 多端口寄存器堆的选择性旁路的方法和设备 - Google Patents

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

Info

Publication number
CN1493976A
CN1493976A CNA031553826A CN03155382A CN1493976A CN 1493976 A CN1493976 A CN 1493976A CN A031553826 A CNA031553826 A CN A031553826A CN 03155382 A CN03155382 A CN 03155382A CN 1493976 A CN1493976 A CN 1493976A
Authority
CN
China
Prior art keywords
index
vector
functional unit
result
bypass
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA031553826A
Other languages
English (en)
Other versions
CN1224898C (zh
Inventor
¡
塞穆·阿萨德
H��Ī��ū
杰穆·H·莫瑞奴
���ð�
维克托·久班
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1493976A publication Critical patent/CN1493976A/zh
Application granted granted Critical
Publication of CN1224898C publication Critical patent/CN1224898C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register

Abstract

多端口寄存器堆可以是选择性地进行旁路,使得当该单元被请求在随后的操作中使用与产生它的相同的索引时,结果向量的任何单元被旁路到随后操作的输入向量的同一索引中。另外,当N个动态构成向量的单元被请求恰好以与产生它们相同的顺序在下一操作中作为输入时,待放置于寄存器堆中的结果可以被旁路到随后的操作中。即,为了达到旁路的目的,N个向量单元作为单一整体处理。类似的原则可以应用到直写路径中。

Description

多端口寄存器堆的选择性旁路的方法和设备
技术领域
本发明一般性地涉及处理器结构,更特别地是涉及多端口寄存器堆的选择旁路技术。
背景技术
为了改善性能,当前处理器经常使用流水线技术以很高的速度执行指令。在这样的处理器上,指令处理过程被分为一系列操作,每个操作在相应的流水线级段中进行。几个指令中的独立操作可以同时由不同的流水线级段处理,这增加了处理器的指令吞吐量。微处理器中的常见指令流水线包含下列流水线级段:指令获取(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指令的相关单个操作在同一功能单元,即在向量的同一位置中执行。
在静态调度的流水线处理器中,选择性旁路机构也被定义为微处理器结构规范的一部分。如果在连续的周期里提交相关的指令,优化编译器或程序员安排它们在同一功能单元中,即向量的相同位置上执行。
在动态调度的处理器中,选择性旁路机构对编译器或程序员是不可见的。建立指令提交机构以便在考虑到有限旁路的特性的情况下提交相关的指令。如果在连续的周期里提交执行相关指令,提交逻辑将它们发送到同一功能单元,即,这些向量的相同位置中。
尽管本发明在这里例举的实施例已经参照附图进行了描述,应当理解的是本发明并不限于那些精心设计的实施例,可以由本领域中技术人员对其进行各种其它的变化和修正,只要不违背本发明的主旨和精神。

Claims (7)

1.在多操作处理系统中有选择地旁路寄存器堆的方法,所述多操作处理系统具有多级段执行流水线,包含多个功能单元和具有多个读出端口与写入端口的寄存器堆,该方法包括步骤:
确定功能单元中同时产生的结果是否将用在其中产生该结果的相同功能单元中;
当结果将被用在其中产生该结果的相同功能单元中时,旁路寄存器堆。
2.如权利要求1的方法,其中确定步骤包括,针对每个功能单元,将每个操作数读出索引与前一周期的相应结果写入索引相比较,并且如果比较的结果为匹配,为功能单元设置旁路条件。
3.如权利要求1的方法,其中确定步骤包括步骤:
形成一对向量读出索引,其中通过连接每个操作数的读出索引来形成每个向量读出索引;
通过连接每个结果的写入索引来形成向量写入索引;
将每个向量读出索引与向量写入索引相比较;
针对每个比较,如果比较结果为匹配,为所有功能单元设置单一旁路条件。
4.如权利要求1的方法,其中处理系统是单指令多数据(SIMD)处理系统。
5.如权利要求1的方法,其中处理系统是静态调度的多事务处理系统。
6.如权利要求1的方法,其中处理系统是动态调度的多事务处理系统。
7.一部分集成电路芯片的布置结构,集成电路芯片能够执行如权利要求1的方法,包括:
包含针对多端口寄存器堆,多个功能单元和多个读出锁存器与写入锁存器的芯片区域的布置;
其中每个功能单元具有至少两个读出锁存器,用来保持多端口寄存器堆的值,和一个写入锁存器,用来保持要写入到多端口寄存器堆的值,每个功能单元的至少两个读出锁存器和写入锁存器被放置在寄存器堆和功能单元之间,使得旁路导线从写入锁存器的输入和输出端穿到至少两个读出锁存器的输入端。
CN03155382.6A 2002-08-29 2003-08-28 多端口寄存器堆的选择性旁路的方法和设备 Expired - Fee Related CN1224898C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/230,492 2002-08-29
US10/230,492 US7051186B2 (en) 2002-08-29 2002-08-29 Selective bypassing of a multi-port register file

Publications (2)

Publication Number Publication Date
CN1493976A true CN1493976A (zh) 2004-05-05
CN1224898C CN1224898C (zh) 2005-10-26

Family

ID=31976484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03155382.6A Expired - Fee Related CN1224898C (zh) 2002-08-29 2003-08-28 多端口寄存器堆的选择性旁路的方法和设备

Country Status (2)

Country Link
US (1) US7051186B2 (zh)
CN (1) CN1224898C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103928047A (zh) * 2013-01-16 2014-07-16 国际商业机器公司 具有单端口存储器单元的多读取端口存储器系统以及操作方法
CN104216827A (zh) * 2013-03-15 2014-12-17 英特尔公司 用于执行过载检查的指令

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430657B2 (en) * 2003-12-31 2008-09-30 Intel Corporation System, method and device for queuing branch predictions
US7346713B2 (en) * 2004-11-12 2008-03-18 International Business Machines Corporation Methods and apparatus for servicing commands through a memory controller port
US8056067B2 (en) * 2006-09-29 2011-11-08 International Business Machines Corporation Method, computer program product, and device for reducing delays in data processing
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8527742B2 (en) * 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8356159B2 (en) * 2008-08-15 2013-01-15 Apple Inc. Break, pre-break, and remaining instructions for processing vectors
CN101710272B (zh) * 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
US8578117B2 (en) * 2010-02-10 2013-11-05 Qualcomm Incorporated Write-through-read (WTR) comparator circuits, systems, and methods use of same with a multiple-port file
CN104025067B (zh) 2011-12-29 2017-12-26 英特尔公司 具有由向量冲突指令和置换指令共享的全连接互连的处理器
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
WO2014105057A1 (en) 2012-12-28 2014-07-03 Intel Corporation Instruction to reduce elements in a vector register with strided access pattern
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US20150052330A1 (en) * 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
US11106466B2 (en) 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US11635958B1 (en) 2022-01-03 2023-04-25 Globalfoundries U.S. Inc. Multi-port register file for partial-sum accumulation
CN117478089B (zh) * 2023-12-28 2024-03-29 北京微核芯科技有限公司 存数指令执行方法、装置及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
US5799163A (en) * 1997-03-04 1998-08-25 Samsung Electronics Co., Ltd. Opportunistic operand forwarding to minimize register file read ports
US6668316B1 (en) * 1999-02-17 2003-12-23 Elbrus International Limited Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103928047A (zh) * 2013-01-16 2014-07-16 国际商业机器公司 具有单端口存储器单元的多读取端口存储器系统以及操作方法
CN103928047B (zh) * 2013-01-16 2017-03-22 国际商业机器公司 具有单端口存储器单元的多读取端口存储器系统以及操作方法
CN104216827A (zh) * 2013-03-15 2014-12-17 英特尔公司 用于执行过载检查的指令
CN104216827B (zh) * 2013-03-15 2018-04-13 英特尔公司 用于执行过载检查的指令
US10162640B2 (en) 2013-03-15 2018-12-25 Intel Corporation Instruction for performing an overload check

Also Published As

Publication number Publication date
US7051186B2 (en) 2006-05-23
US20040044882A1 (en) 2004-03-04
CN1224898C (zh) 2005-10-26

Similar Documents

Publication Publication Date Title
CN1224898C (zh) 多端口寄存器堆的选择性旁路的方法和设备
US8078828B1 (en) Memory mapped register file
CN101809537B (zh) 用于管线式处理的寄存器堆系统和方法
US7028170B2 (en) Processing architecture having a compare capability
US6988186B2 (en) Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
EP0547216B1 (en) Risc microprocessor architecture implementing multiple typed register sets
EP0735463A2 (en) Computer processor having a register file with reduced read and/or write port bandwidth
US20060265555A1 (en) Methods and apparatus for sharing processor resources
JPH05233281A (ja) 電子計算機
EP1038253A2 (en) Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
CN101051265A (zh) 共享一组合寄存器文件的操作数存取端口的装置
CN1221913A (zh) 超标量处理机系统中单周期调度多指令的方法和系统
CN1534462A (zh) 流水线处理一系列处理指令的方法和设备
CN110321159A (zh) 用于实现链式区块操作的系统和方法
Truong et al. RACER: Bit-pipelined processing using resistive memory
CN1716180A (zh) 半导体器件
GB2540940A (en) An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
CN1508674A (zh) 提供可变宽度的至少六路加法指令的方法及相应装置
Higbie Tutorial: Supercomputer architecture
CN1601462A (zh) 处理器的扩展寄存器空间装置和方法
KR20060028403A (ko) 데이터 액세스 프로그램 명령 인코딩
JPS63201851A (ja) バッファ記憶アクセス方法
CN1280713C (zh) 双栈返回地址预测器设计方法
Dewangan et al. Design and Implementation of 32 bit MIPS based RISC Processor
CN1816798A (zh) 用于单指令多数据管理的方法和计算机程序

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20051026

Termination date: 20150828

EXPY Termination of patent right or utility model