CN1713137A - 含有多级寄存器文件的数字数据处理设备 - Google Patents
含有多级寄存器文件的数字数据处理设备 Download PDFInfo
- Publication number
- CN1713137A CN1713137A CNA2005100794172A CN200510079417A CN1713137A CN 1713137 A CN1713137 A CN 1713137A CN A2005100794172 A CNA2005100794172 A CN A2005100794172A CN 200510079417 A CN200510079417 A CN 200510079417A CN 1713137 A CN1713137 A CN 1713137A
- Authority
- CN
- China
- Prior art keywords
- register
- order
- data processing
- digital data
- processing equipment
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 33
- 230000015654 memory Effects 0.000 claims description 60
- 239000013598 vector Substances 0.000 claims description 47
- 238000003860 storage Methods 0.000 claims description 10
- 239000004065 semiconductor Substances 0.000 claims description 3
- 230000006870 function Effects 0.000 description 47
- 238000013461 design Methods 0.000 description 25
- 230000000875 corresponding effect Effects 0.000 description 21
- 238000000034 method Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012856 packing Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012905 input function Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000002679 ablation Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
处理器包含具有不同访问等待时间的多级寄存器。寄存器的相对较小集包含在相对较快较高级寄存器堆中,而寄存器的较大、更完备集合包含在相对较慢较低级寄存器堆中。在物理上,较高级寄存器堆与从寄存器接收输入的功能逻辑块更接近。最好,较低级堆包括所有处理器寄存器的完备集,而较高级堆包括寄存器的较小子集,复制较低级堆中的信息。较高级堆最好可在单个时钟周期内访问。
Description
技术领域
本发明涉及数字数据处理硬件,尤其涉及寄存器文件和数字数据处理设备的处理单元的支持硬件的设计和操作。
背景技术
在二十世纪后半叶,开始出现称为信息革命的现象。虽然信息革命是在范围上比任何事件或机器都广泛的历史发展,但没有一种设备最终比数字电子计算机更能代表信息革命。计算机***的发展无疑是一场革命。每年,计算机***都在加速发展,存储更多的数据,和将更多的应用提供给它们的用户。
现代计算机***通常包括中央处理单元(CPU)和诸如通信总线和存储器之类的存储、检索和传输信息所需的支持硬件。它还包括诸如输入/输出控制器或存储控制器之类的、与外界通信所需的硬件,以及诸如键盘、监视器、磁带驱动器、盘驱动器、与网络耦合的通信线之类的、附加在上面的设备。CPU是***的心脏。它执行包括计算机程序的指令和支配其它***部分的操作。
从计算机硬件的观点来看,大多数***以基本上相同的方式运行。处理器能够执行有限的一组非常简单的操作,譬如,算术运算、逻辑比较和数据从一个地方向另一个地方的移动。但是,每种操作都执行得非常快。支配计算机执行大量的这些简单操作的程序给人以计算机正在做复杂工作的错觉。用户感觉到的是,通过执行基本相同的一组非常简单的操作,但执行得更快,就可以使计算机***具有新的或提高了的能力。因此,对计算机***的不断改进要求使这些***愈来愈快。
计算机***的总速率(也称为“吞吐量”)大体上可以用单位时间执行的操作数来衡量。从概念上,对***速率的所有可能改进的最简单一种是提高各种部件的时钟速率,尤其是处理器的时钟速率。例如,如果每件事情以快一倍的速率运行,但在其它方面以完全相同的方式工作,那么,***将在一半的时间内完成给定任务。通过缩小和组合部件,最终将整个处理器封装成单个芯片上的集成电路,容易使本来由许多分立部件构成的早期计算机处理器在时钟速率上得到显著提高。小型化使提高处理器的时钟速率,从而提高***速率成为可能。
除了时钟速率之外的其它许多设计改进提高了计算机***的吞吐量,但仍然需要使时钟速率愈来愈快。
为特定处理器设计选择的时钟速率不能快于在单个时钟周期内执行的最慢操作。这又受逻辑电路门延迟和传输路径延迟限制。许多较早期处理器设计能够在一个时钟周期内执行处理器指令集的一个纯简单指令,但复杂指令往往需要多个周期。对于依次解码、移动数据、进行逻辑运算等,甚至简单指令也需要相当多次数的门延迟。这些门延迟限制了这种处理器设计的时钟速率。为了支持更高的时钟速率,大多数现代处理器将某种形式的流水线作业用于执行指令。流水线将指令分解成许多个有序的小部分或级。对于每个时钟速率,指令转到流水线的下一级。通过这样将每个指令分解成许多级,减少了在每一级完成的事情的数量,这意味着每个级所需的逻辑块的有序门延迟的次数小于整个指令所需的。因此,通过减少在一个时钟周期内必须接纳的门延迟的次数,流水线设计支持更高的时钟速率,但这是以使硬件更复杂为代价的。
虽然流水线作业相当大地减少了每个时钟周期内逻辑门延迟的次数,但认为更加重要的对处理器时钟速率的另一个主要限制是为处理器芯片的物理大小和布局所固有的传播延迟。典型现代时钟速率快到难以在单个时钟周期内使信号从处理器芯片的一部分传播到相对较远的部分。如果对布局多加关注,可以避免许多长的信号路径,但不可能通过好的设计来消除所有长路径。随着时钟速率提高和处理器越来越复杂,布局也越来越困难。必须接受一些信号在芯片内需要多个周期来传播。但是,如果按常规作出这种让步,更快时钟速率得来的益处就会大打折扣。
在关键性路径当中,处理数据所涉及的是从处理器内的寄存器中检索数据。寄存器的真正用途是将数据临时保存在可以用最高速率检索的地方。在大多数处理器设计中,这意味着可在单个时钟周期内访问寄存器数据。但是,随着处理器设计越来越复杂,和包括较大的寄存器文件,寄存器与某些功能逻辑块之间的物理距离难以保持在单个时钟周期内。对通常意味着处理器包含每个支持各自线程的寄存器的多个程序组的硬件多线程的支持进一步增加了寄存器文件的所需大小。同时,提高时钟速率意味着将较少的时间提供给数据从寄存器到功能逻辑块的传播。
当然,为寄存器访问提供多个时钟周期也是可以的,但是,由于寄存器访问形成处理器执行的功能的关键部分,这可能显著地影响处理器的性能,并且使想加快时钟速率来达到目的成为泡影。随着流水线级数增加,需要更多的寄存器来保存中间结果,这进一步使提高时钟速率的势力受挫。
随着对愈来愈快和更有能力的处理器的需求不断增加,处理器内信号传播,尤其涉及寄存器访问的信号传播带来的难题很有可能也越来越多。因此,最好能发现支持提高了的时钟速率,以及更大和更复杂的处理器的改进处理器设计技术。
发明内容
处理器包含具有不同访问等待时间的多级寄存器。寄存器的相对较小子集包含在具有相对较快访问等待时间的相对较高级寄存器堆中。寄存器的较大、更完备集合包含在具有相对较慢访问等待时间的相对较低级寄存器堆中。在物理上,较高级寄存器堆与从寄存器接收输入的功能逻辑块更接近,使信号更迅速地传播到功能逻辑块。较低级寄存器堆在物理上离功能逻辑块远得多。
在优选实施例中,处理器包含两级寄存器堆,但多于两级也是可以的。较低级堆包括所有处理器寄存器的完备集。较高级堆包括寄存器的较小子集,因此,复制较低级堆中的信息。较高级堆可在单个时钟周期内访问,而对较低级堆的访问需要将多个时钟周期用于访问。
在优选实施例中,处理器支持硬件多线程,并且含有与每个线程相对应的分开、独立寄存器文件。每个寄存器文件被划分成两个级,包括含有文件中寄存器的完备集的较低级堆和只含有寄存器的子集的较高级堆。处理器最好包含与两个线程相对应的两个寄存器文件,但不同数量也是可以的。
由于较高级寄存器堆只包括寄存器数据的子集,它在理论上包括最有可能访问的子集。存在各种管理较高级寄存器堆中的数据的技术。在优选实施例中,每个较高级寄存器对应于多个较低级寄存器的固定集合,和包含它对应的集合的最近受到访问较低级寄存器的内容。这种技术未必为较高级堆获得最佳子集,但它速度极快和易于实现。
通过建立多级寄存器文件,可以将相对较小高级寄存器堆放置得与功能逻辑块足够近,以保持单周期访问。同时,由于整个文件不需要靠近功能逻辑块,所以可以支持相对较大寄存器文件。即使将简单机构用于管理高级寄存器中的数据子集,预计足够大份额的寄存器访问也将从高级寄存器中的数据中得到满足,从而使性能提高。
附图说明
通过参照附图对本发明的优选实施例作详细描述,可以更好地了解有关本发明结构和操作的细节,在附图中相同标号表示相同的部件,和在附图中:
图1是根据本发明优选实施例、利用高级寄存器文件的计算机***的主要硬件部件的高级方块图;
图2是优选实施例的计算机***中CPU的主要部件和相关高速缓冲存储器的高级示意图;
图3是根据优选实施例、含有高级寄存器文件、CPU的向量/SIMD多媒体扩充(VMX)执行子单元的高级功能图;
图4更详细地示出了根据优选实施例的局部向量寄存器文件和某些相关逻辑块的结构;
图5更详细地示出了根据优选实施例的全部向量寄存器文件和某些相关逻辑块的结构;
图6代表根据优选实施例、将数据写入局部向量寄存器文件和全部向量寄存器文件中的主要硬件和数据路径;和
图7代表根据某些可替代实施例、将数据输入功能执行流水线的某个主要硬件和数据路径。
优选实施例详述
参照附图,其中在几个图形中相同标号自始至终表示相同部分,图1是根据本发明优选实施例、利用高级寄存器文件的计算机***100的主要硬件部件的高级表示。计算机***100的主要部件包括一个或多个中央处理单元(CPU)101A-101D、主存储器102、高速缓冲存储器106、终端接口111、外部存储器接口112、I/O设备接口113和通信/网络接口114,为了部件间通信,它们都通过总线103、104和总线接口105耦合在一起。
***100包含这里统称为特征101的通用可编程中央处理单元(CPU)101A-101D。在优选实施例中,***100包含代表相对大***的多个处理器,但是,可选地,***100也可以是单个CPU***。每个处理器101执行存储在存储器102中的指令。为了进行处理,将指令和数据从主存储器102装入高速缓冲存储器106中。主存储器102是存储数据和程序的随机存取半导体存储器。尽管在图1中主存储器102和高速缓冲存储器106被概念性地表示成单个实体,但是,应该明白,实际上它们是比较复杂的,尤其,高速缓冲存储器通常被划分成多个不同的级和功能。
存储器总线103为在CPU101和高速缓冲存储器106、主存储器102和I/O总线接口单元105之间传输数据提供数据通信路径。I/O总线接口105进一步与***I/O总线104耦合,以便将数据传输到各个I/O单元和从各个I/O单元传输数据。I/O总线接口105通过***I/O总线104与也称为I/O处理器(IOP)或I/O适配器(IOA)的多个I/O接口单元111-114通信。***I/O总线可以是例如工业标准PCI总线,或任何其它适当总线技术。I/O接口单元支持与各种外部存储器和I/O设备的通信。例如,终端接口单元111支持一个或多个用户终端121-124的附加。外部存储器接口单元112支持一个或多个直接访问外部存储设备(DASD)125-127(它们通常是旋转磁盘驱动器外部存储设备,但可选地,它们也可以是其它设备,包括配置成在主机看来像单个大型外部存储设备的盘驱动器阵列)的附加。I/O和其它设备接口113将接口提供给各种其它输入/输出设备或其它类型的设备的任何一个。在图1的示范性实施例中示出了两种这样的设备-打印机128和传真机129。不言而喻,可能存在许多其它这样的设备,它们可能具有不同的类型。网络接口114提供从***100到其它数字设备和计算机***的一条或多条通信路径;这样的路径可以包括例如诸如因特网、局域网或其它网络之类的一个或多个网络130,或可以包括远程设备通信线、无线连接等。
应该明白,图1旨在在高级层面上描绘***100的代表性主要部件,各个部件可能比图1所表示的更复杂,可能存在除了图1所示的那些之外的部件,这样部件的数量、类型和配置可能发生改变。这里公开这样的更加复杂或有些改变的几个特例,但是,应该明白,这些只是作为例子举出,而未必只有这样的改变。
尽管主存储器102在图1中被显示成单个单片实体,但是,正如在各种所谓非均匀存储器访问(NUMA)计算机结构的任何一种中所知道的那样,存储器还有可能是分散的,并与不同CPU或数组CPU相联系。尽管存储器总线103在图1中被显示成在高速缓冲存储器106、主存储器102和I/O总线接口105之间提供直接通信路径的相对简单的单个总线结构,但事实上,存储器总线103可以包括可以以各种形式,譬如,分层的点到点链接、星状或网状配置、多条分层总线、平行和冗余路径等的任何一种排列的多条不同总线或通信路径。并且,虽然I/O总线接口105和I/O总线104被显示成单个相对单元,但事实上***100可以包含多个I/O总线接口单元105和/或多条I/O总线104。虽然多个I/O接口单元被显示成它们将***I/O总线104与到达各种I/O设备的各种通信路径隔开,但可选地,也可以将一些或所有I/O设备直接与一条或多条***I/O总线连接。
在图1中描绘的计算机***100含有多个附加终端121-124,譬如,可能代表多用户“大型”计算机***。通常,在这样的情况下,尽管本发明不局限于任何特定大小的***,但附加设备的实际数量大于如图1所示的那些。可选地,计算机***100可以是通常只包含单个用户显示器和键盘输入的单用户***,或可以是只有少数或没有直接用户接口,但接收来自其它计算机***(客户机)的请求的服务器或类似设备。
虽然各种***部件是在高级层面上加以描述和显示的,但应该明白,典型的计算机***包含对于理解本发明不是必不可少的、未示出的许多其它部件。
图2是根据优选实施例的包括某些相关高速缓冲存储器结构的CPU101的主要部件的高级示意图,它比图1中所描绘的更详细地示出了CPU101。CPU101包括指令单元部分201和执行单元部分211。如图2所示的还有第1级指令高速缓冲存储器(L1 I-Cache)221、第1级数据高速缓冲存储器(L1D-Cache)222、第2级高速缓冲存储器(L2 Cache)223和地址转换单元224。一般说来,指令单元201从L1 I-Cache 221获取指令,解码指令以确定要进行的操作,并解析转移条件以控制程序流。执行单元211对寄存器中的数据进行算术和逻辑运算,并装载或存储来自L1 D-Cache 222的数据。L2 Cache223是第2级高速缓冲存储器,一般大于L1 I-Cache 221或L1 D-Cache 222,将数据提供给L1 I-Cache 221和L1 D-Cache 222。L2 Cache 223通过外部接口获取来自较低级高速缓冲存储器(例如,L3高速缓冲存储器)或主存储器的数据。
任何级的高速缓冲存储器逻辑上都是主存储器102的扩充(与寄存器不同)。但是,一些高速缓冲存储器通常被封装在与CPU相同的集成电路上,由于这个原因,它们有时被当作CPU的一部分。在优选实施例中,两个CPU101与某些高速缓冲存储器结构一起被封装在单个半导体芯片中,由于这个原因,CPU101有时被称为“处理器核心”或“CPU核心”,以将它与包含一对CPU的芯片区分开,每个CPU101拥有它自己专用的L1 I-Cache 221和L1D-Cache 222。但是,L2 Cache 223在同一芯片上的两个处理器之间共享。图2的表示旨在示范性的,并未打算将本发明限制在任何特定的物理或逻辑高速缓冲存储器实现内。应该认识到,处理器和高速缓冲存储器可以根据不同的安排来设计,而一个或数个处理器芯片可以包括比图2中所表示的更多个高速缓冲存储器或更少个高速缓冲存储器。
指令单元201包括转移单元202、指令解码/调度单元203和指令寄存器和缓冲器204。来自L1 I-Cache 221的指令在执行之前被装入缓冲器204中。取决于CPU设计,可以存在多个缓冲器(例如,用于不同线程的缓冲器,或在一个线程内,一个用于一系列有序指令,另一个用于转移到的地方),每个缓冲器可以包含多条指令。解码/调度单元203在当前机器周期内从一个或多个缓冲器204中选择要调去执行的一条或多条指令,并解码指令以确定要执行的操作或转移条件。转移单元202通过评估转移条件控制程序流,和从L1I-Cache 221那里重新填满缓冲器204。
执行单元211包括存储数据的一组通用寄存器212和响应指令单元201解码的指令对GP寄存器212中的数据进行算术和逻辑运算的标量算术逻辑单元(ALU)213。执行单元还包括浮点运算子单元214和称为向量/SIMD多媒体扩充(VMX)执行子单元216(为了简短起见,下文称为向量执行子单元,或VMX子单元;“SIMD”是Single Instruction,Multiple Data(单个指令,多个数据)的众所周知的首字母缩写词)的特殊向量执行子单元。浮点子单元214是利用双精度(64-位)操作数进行浮点运算的特殊浮点硬件流水线。向量执行子单元216并行地进行某些向量运算。这里更详细地描述VMX子单元216的结构和操作。尽管在这里被称为向量执行子单元,但这仅仅是潜在能力的描述。事实上,子单元216只不过对数据进行数学运算,并且可以用于在数学上要求强化运算的任何或各种应用。浮点子单元214和VMX子单元216每一个都包括它自己的一组寄存器215、217。除了如图2所示的部件之外,执行单元211可以包括附加专用寄存器和计数器、控制硬件等。尤其,除了整数ALU213、浮点子单元214和VMX子单元216之外,执行单元211可以包括执行流水线(未示出)。
L1 I-Cache 221和L1 D-Cache 222是将数据提供给指令单元和执行单元的分立指令高速缓冲存储器和数据高速缓冲存储器。L2 Cache 223是包含指令和非指令数据两者的不区分高速缓冲存储器。通常,通过指令单元或执行单元从L1高速缓冲存储器中取出数据或将数据存储到L1高速缓冲存储器中,如果在L1高速缓冲存储器中得不到数据,将数据从又从外部位置获得数据的L2高速缓冲存储器223装入L1高速缓冲存储器中,然后,使数据从L1高速缓冲存储器传输到相应单元。取决于处理器设计,可以绕过L1高速缓冲存储器,将数据从L2高速缓冲存储器223装入执行或指令寄存器中。
地址转换单元224将指令单元201或执行单元211生成的有效地址转换成存储器中的相应实地址。在优选实施例中,处理器生成与每个相应执行过程相对应的有效地址空间中的“有效地址”。将有效地址转换成较大统一虚地址空间中的“虚地址”,一个虚地址空间被所有过程共享。虚地址被进一步转换成与数据所在的实际存储器位置相对应的“实地址”。但是,应该明白,各种计算机结构应用不同的地址编制方式,本发明不局限于任何特定的寻址形式。
L1 I-Cache 221和L1 D-Cache 222最好利用有效地址来寻址,因此,访问第1级高速缓冲存储器不需要地址转换。但是,L2 Cache 223和在它下面的所有存储器都利用实地址来寻址。因此,如果必须访问较低级高速缓冲存储器或主存储器,首先将处理器生成的有效地址转换成实地址。
地址转换单元224被表示成单个逻辑实体,但通常包括可能分布在各种芯片位置中的多个表格和逻辑电路。例如,地址转换机构可以包括转换后备缓冲器、有效地址到实地址转换表、段表和附加结构。另外,分立结构也可以用于指令的转换和用于非指令数据。
在优选实施例中,CPU101是支持在同一机器周期内同时执行多个线程和从不同线程同时调度指令的多线程处理器。在优选实施例中,支持两个独立线程的同时执行,不言而喻,这个数字是可以改变的。在CPU101中执行的每条指令执行单个基本操作,譬如,装载、存储、利用来自GP寄存器的操作数的整数算术或逻辑运算、利用浮点子单元214或VMX子单元216的复杂运算或转移。解码/调度单元203可以在单个机器周期内同时调度多个这样的指令,但是,应该明白,由于执行单元被流水线化,指令的实际执行可能与在不同周期中调度的那些指令重叠。
为了支持多个线程的同时执行,对于每个线程,存在多数寄存器的分立集合。也就是说,对于每个线程,存在通用寄存器212、浮点寄存器215和向量寄存器217的分立集合。另外,可以复制某些其它状态或专用寄存器(未示出),以支持多个活动线程。执行单元流水线硬件、指令单元和高速缓冲存储器由所有线程共享。
与存储器和存储器的高速缓冲存储器不同,利用直接来自指令的相对较小寄存器标识符访问寄存器。寄存器标识符一般由编译器指定(但在一些情况下,程序员指定它们),因此,它们是编译可执行代码的一部分。可用寄存器集的大小是在硬件约束内试图优化代码的每个编译器的基本参数。寄存器标识符标识物理上存在和可供处理器使用的寄存器。
虽然各种CPU部件是在高级层面上加以描述和显示的,但应该明白,优选实施例的CPU包含对于理解本发明不是必不可少的未示出的许多其它部件。例如,在典型设计中需要各种附加专用寄存器。此外,应该明白,图2的CPU只不过是CPU结构的一个例子,CPU101内部件的数量、类型和安排可以存在许多变化,除了描绘的那些之外可以存在未示出的部件,和所描绘的部件可能不全部出现在CPU设计之中。例如,缓冲器和高速缓冲存储器的数量和配置可能发生变化;执行单元流水线的数量和功能可能发生变化;可能用不同的阵列和集合配置寄存器;以及专用浮点硬件可能存在,也可能不存在等。此外,CPU101可以存在简单或复杂的指令集。
向量执行子单元216并行地对多个数据进行各种操作。指令单元201解码的每个指令包含指定操作的单个操作码、或可能多个的操作数说明符。用于处理器101的指令集的一个子集包括由VMX子单元216执行的指令。在优选实施例中,向量执行子单元216包含进行各种向量移动、算术、逻辑和/或浮点运算的各种功能流水线。每条功能流水线被构造成并行地对多个数据值进行相同操作的128-位宽流水线,应该明白,流水线的宽度是可以改变的。通常,流水线并行地对4个32-位值进行操作。但是,对于至少一些流水线和一些操作,数据值的长度是可变的。例如,可以并行地对8个16-位值进行一些操作,或可以并行地对16个8-位值进行一些操作。VMX216中流水线的每条指令包含可应用于数据的所有128个位的单个操作码。每条指令进一步指定向量寄存器217中的数据的源头和目的地。在优选实施例中,一条指令可以包含引用向量寄存器文件217中的128-位寄存器的多达三个操作数源头说明符和单个目的地说明符。在指令中指定的操作暗示如何分配128-位寄存器数据(即,长度为32、16或8个位的值)。然后,利用包含在128-位操作数寄存器中的每个暗示值分开地和并行地进行相同操作。可选地,可以设计用于为与并非所有操作都相同的它们各自位置相对应的流水线指定固定的和预定的一组操作的操作码。
在优选实施例中,向量执行子单元216的向量存储器217具有双重结构,其中一部分寄存器数据包含在物理上与到向量执行子单元流水线输入端的输入端接近的局部向量寄存器文件中,并且整个寄存器数据包含在物理上位于较远距离以减轻或消除物理布置拥挤约束的全部向量寄存器文件中。
图3是根据优选实施例、执行单元211内的向量执行子单元216的高级功能图。参照图3,向量执行子单元216包括每一个都对向量数据执行各自一组功能的4个功能执行单元301-304、局部寄存器文件305A、305B(这里统称为特征305)、全部寄存器文件306A、306B(这里统称为特征306)、旁路多路复用器307、结果多路复用器308、装载分级单元309和存储分级单元310。
局部寄存器文件305一般保存功能执行单元据此操作的操作数,并包含全部寄存器文件306中的一部分数据。旁路多路复用器307包含锁存器和将数据从诸如局部寄存器文件305或结果多路复用器308之类的源头路由到诸如功能执行单元之类的目的地的总线路由逻辑块。功能执行单元301-304根据来自指令单元201的指令,对数据进行实际操作。结果多路复用器308接收和选择功能执行单元的输出,作为到旁路多路复用器307、局部寄存器文件305和全部寄存器文件306的输入。装载分级单元309接收从存储器(即,一般来自L1 D-Cache 222,虽然可以旁路L1 D-Cache 222和直接从较低级高速缓冲存储器装载)装载的数据。存储分级单元310临时保存存储到存储器(即,到L1 D-Cache 222)中的数据。
每个功能执行单元301-304是对向量数据执行各自一组功能的执行流水线。每个功能执行单元在一个给定周期内可以接收多达三个128-位寄存器输入。每个128-位寄存器代表多个操作数值,128-位寄存器中每个值的长度和值的个数通过要执行的操作来暗示。例如,如果指令采取32-位操作数,那么,功能执行单元利用四组32-位操作数并行地进行操作,其中每组32-位操作数含有多达三个源头操作数和一个目的地操作数。每个功能执行单元都是不同的,并且执行不同的一组功能,在任何一个周期内开始的功能对于功能执行单元中的所有操作数组都是相同的。例如,单个功能执行单元可以执行诸如整数相加、整数相减、逐位“与”、逐位“或”等的一组功能。在给定流水线输入周期中,控制逻辑块(未示出)选择该组功能当中适合执行的功能和旁路多路复用器307中的一个或多个输入寄存器,每个输入寄存器包含代表多个操作数(例如,四个并行32-位操作数)的128个位。在优选实施例中,功能执行单元包括向量置换单元、向量简单整数运算单元、向量复杂整数运算单元和向量浮点运算单元。但是,功能执行单元的数量和功能是可以改变的。
图4更详细地示出了局部向量寄存器文件305A、305B和某些相关逻辑块的结构。图5更详细地示出了全部向量寄存器文件306A、306B和某些相关逻辑块的结构。在这个实施例中,存在两组向量寄存器文件,每组对应于处理器支持的每个活动线程。与每个指令相联系的单个线程标识符确定指令是否引用寄存器文件306A或306B中的数据。
向量执行子单元216支持在向量寄存器文件305A、305B中,同时从多达六个分立寄存器中读取,并同时写入多达三个分立寄存器中。由于每个指令可以含有多达三个源头操作数(和一个目的地操作数),向量执行子单元被设计成支持在同一周期内并行地发出的两个指令。一般说来,任何特定指令只能变更单个操作数,因此,两个并行指令只要求支持两个同时写入。第三个写入端口用于从高速缓冲存储器或从全部向量寄存器306装载数据。
每个全部向量寄存器文件306是128×128-位寄存器阵列,包含128个寄存器,每个128位。每个128-位寄存器代表多个数据值,通常通过功能执行流水线并行地对它们进行操作。由于全部寄存器集包括128个寄存器,所以在利用7-位标识符的指令集中标识寄存器。
每个局部向量寄存器文件305包含全部向量寄存器文件中的一部分数据。每个局部向量寄存器文件是34×130-位寄存器阵列,包含34个寄存器,每个130位。每个130-位寄存器包括128位的操作数数据(复制全部向量寄存器文件中的操作数数据)和2-位高序寄存器标识符。7-位寄存器标识符的5个低序位用于选择局部寄存器文件305中的32个寄存器之一。每局部寄存器文件305中的每个寄存器的2-位高序寄存器标识符包含未用于选择寄存器、7-位寄存器标识符的2个高序位。这些都是确认所选寄存器是否对应于正确寄存器所必需的。正如这里进一步说明的那样,局部寄存器文件中(34个)寄存器的其余2个用于操作数冲突。
在操作过程中,通过将线程标识符位和寄存器标识符的低序5-位部分(从指令)输入读取选择逻辑块402中来读取局部寄存器文件305。读取选择逻辑块402是响应该输入,选择局部寄存器文件305A、305B的单个寄存器的解码器。在优选实施例中,存在读取选择逻辑块402的六个副本,每个对应于各自的读取输出端口405。读取选择逻辑块六个副本和六个读取端口由两个局部寄存器文件305A、305B共享。在读取输出端口上将寄存器的128-位操作数数据输出到旁路多路复用器逻辑块307。将寄存器标识符的2-位高序部分输出到比较器404(它存在六个副本,每个对应于一个读取端口)。比较器404将130-位寄存器中的寄存器标识符的2-位高序部分与来自指令的操作数寄存器标识符的2-位高序部分相比较。如果两者相同,那么,已经读取了正确寄存器数据,允许操作继续进行下去。如果两者不同,则比较逻辑块404生成无效数据信号。
指令的任何一个操作数中的无效数据信号都使指令从功能执行流水线中清除,和在从全部寄存器文件306装入有效寄存器数据之后重试。因此,在可以核实从局部寄存器文件获得的数据对应于正确寄存器之前,实际上是推测性地从局部寄存器文件305中读取数据,和将它提供给旁路多路复用器307(和从那里提供给功能执行单元301-304)。随着将旁路多路复用器307中的数据路由到适当的功能执行单元,在比较器404中并行地比较寄存器标识符位。如果特定指令的所有操作数都有效,指令正常地经过执行流水线。如果任何一个操作数无效,则并行地作出两个动作:将所需寄存器数据从全部寄存器文件306传输到局部寄存器文件305;和清除流水线中存在无效数据的指令和重新启动流水线。访问全部寄存器文件和将所需寄存器数据写入局部寄存器文件中一般可以比清除流水线早一点完成,因此,一般说来,一旦流水线被清除和重新启动就可获得所需数据。在优选实施例中,比较器404触发也可以用于由于其它原因(例如,没有采取推测转移)而清除流水线的一般流水线清除机构(未示出),因此,使支持多级高速缓冲存储器所需的附加逻辑块最少。
由于每个指令可以包含引用三个不同寄存器的多达三个操作数,存在着在局部寄存器文件中两个或多个操作数发生冲突的可能性。也就是说,存在着两个操作数引用具有相同低序5-位寄存器标识符,但具有不同高序寄存器标识符位的寄存器的可能性。在这种情况下,不可能将两个操作数同时放入局部寄存器文件305的同一寄存器中。由于这个原因,在局部寄存器文件中配备两个附加寄存器(使寄存器总数为34个)。当调度需要向量执行子单元操作的指令时,比较逻辑块403将操作数的寄存器标识符的低序5个位相互比较,成对比较是逻辑“或”运算。如果任何两个操作数具有寄存器标识符的相同低序5个位,发出操作数冲突的信号。操作数冲突导致与无效寄存器数据相似的结果,即,流水线被清除,和从全部寄存器文件306中装入新操作数。但是,在操作数冲突的情况中,所有三个操作数都被装入局部寄存器文件305中。“A”操作数被装入它在通过寄存器标识符的5-位低序部分访问的32个寄存器当中的正常位置中。“B”和“C”操作数被分别装入第33和第34寄存器中。当接着重试指令时,操作冲突重试线(op_con_retry)起作用,向读取选择逻辑块402发出使用第33和第34寄存器的信号。当op_con_retry线起作用时,读取选择逻辑块402正常地解码“A”操作数,和与寄存器标识符的值无关地分别解码“B”和“C”操作数以引用第33和第34寄存器。对于每个线程(即,对于每个寄存器文件305A、305B),存在分立的op_con_retry线输入。
由于希望避免这样的操作数冲突和随后指令的重试,所以将生成可执行代码的编译器最佳地设计成通过将非冲突寄存器指定给同一指令中的操作数来避免操作数冲突。假设使用这样的适当设计编译器,操作数冲突可能决不会,或只非常稀罕地发生。但是,正如上面所说明的那样,处理器逻辑块应该被设计成万一发生就容纳这些冲突。
通过将线程标识符位和寄存器标识符的低序5-位部分(从指令)输入写入选择逻辑块401中来写入局部寄存器文件305。写入选择逻辑块401响应该输入选择局部寄存器文件305A、305B的单个寄存器。在优选实施例中,存在写入选择逻辑块401的三个副本,每个对应于相应的写入端口406,写入选择逻辑块和写入端口由两个局部寄存器文件305A、305B共享。将寄存器标识符的2-位高序部分与输入的128-位操作数数据部分链接,和将它们一起写入写入选择逻辑块401选择的130-位寄存器中。特殊wrt_op_con_retry控制线用于选择第33和第34寄存器。也就是说,如上所述,当已经检测到操作数冲突时,从全部寄存器文件中获得指令的所有三个操作数,和使它们可在“A”、“B”和“C”写入端口上获得。然后,使wrt_op_con_retry线对写入选择逻辑块401起作用,使“A”写入端口数据写入通过寄存器标识符的低序5个位选择的局部寄存器中,而使“B”和“C”写入端口数据分别写入与线程标识符相对应的局部寄存器文件的第33和第34局部寄存器中。由于只存在三个写入端口(一次只能重试一条指令),只需要单条wrt_op_con_retry线。
类似地,在操作过程中,通过将线程标识符位和全部7-位寄存器标识符输入读取选择逻辑块502中来读取全部寄存器文件306。读取选择逻辑块502响应该输入,解码和选择全部寄存器文件306A、306B的单个寄存器。在优选实施例中,存在读取选择逻辑块502的四个副本,每个对应于相应的读取输出端口,读取选择逻辑块和读取输出端口由两个全部寄存器文件306A、306B共享。读取输出端口之一将数据提供给存储分级单元310(因此,总是从全部寄存器文件存储数据)。其余三个读取输出端口将数据馈入局部寄存器文件305中。
通过将线程标识符位和7-位寄存器标识符输入写入选择逻辑块501中来写入全部寄存器文件306。写入选择逻辑块501响应该输入选择全部寄存器文件306A、306B的单个寄存器。在优选实施例中,存在写入选择逻辑块501的三个副本,每个对应于相应的写入端口,写入选择逻辑块和写入端口由两个全部寄存器文件306A、306B共享。
图6代表将数据写入局部和全部寄存器文件305、306中的主要硬件和数据路径。正如上面说明的那样,局部寄存器文件305和全部寄存器文件306的每一个都拥有三个写入端口,这里将它们指定为“A”、“B”和“C”。一般说来,“A”和“B”端口用于写入来自执行流水线的结果,而“C”端口用于装载数据。另外,在局部寄存器文件中,所有三个端口都可以用于复制来自全部寄存器文件的数据。
在操作过程中,让从存储器(具体地说,L1 D-Cache 222)装入的数据经过装载分级单元309,并且,并行地将其写入全部寄存器文件306和局部寄存器文件305两者中的“C”写入端口中。让功能执行单元生成的数据经过结果多路复用器308,并且,利用写入端口“A”和“B”,也并行地将其写入全部寄存器文件306和局部寄存器文件305两者中。因此,可以同时将两个功能执行单元结果和装入的一个128-位数据写入两个寄存器文件中。
在由于操作数之一未在局部寄存器中或检测到操作数冲突必须重试指令的地方,从全部寄存器文件中读取数据和将它写入局部寄存器文件中。在单个周期内可以从全部寄存器文件中写入多达三个寄存器;在存在操作数冲突或没有一个操作数处在局部寄存器文件中的地方,在指令含有三个操作数的情况下,这是必须的。在这种情况下,将来自全部寄存器文件的读取输出端口的两个输入到将它们的数据路由到局部寄存器文件的“A”和“B”写入端口的结果多路复用器308。将来自全部寄存器文件的第三读取输出端口输入到在装入数据和来自读取输出端口的数据之间选择的多路复用器601;然后,将这个数据路由到局部寄存器文件的“C”写入端口。
局部寄存器文件305保持全部寄存器文件306中的数据的部分副本,两个寄存器文件总是保持当前数据。具体地说,正如在存储器的高速缓冲存储器中经常做的那样,不能“追溯”改变的数据。发生改变的数据(从功能执行流水线出来)总是被同时写入全部寄存器文件和局部寄存器文件中,以便使两者的副本是当前的。如果从局部寄存器文件中删除数据(通过用不同寄存器的内容盖写局部寄存器),不需要进一步的动作来更新全部寄存器文件。
在操作过程中,在被不同寄存器的内容盖写之前,代表特定寄存器的数据保留在局部寄存器文件中。当从高速缓冲存储器装入数据(数据被同时装入局部寄存器文件和全部寄存器文件两者中)时,或者,当作为指令请求数据的结果,从全部寄存器文件中复制数据时,数据被盖写。因此,可以将局部寄存器文件当作全部寄存器的一部分的1-路径集合相关副本,其中每个局部寄存器(除了作为特殊情况的第33和第34寄存器之外)包含含有相同低序5-位标识符的四个寄存器的集合的最近使用过寄存器。
清除功能执行流水线以重试指令涉及到多个损失的时钟周期。如果从局部寄存器文件读取的足够大份额操作数是无效的,使功能执行流水线被清除,那么,清除流水线造成的时间损失可以消蚀掉或盖过使用更快速访问局部寄存器文件带来的任何性能增益。因此,相当大部分的寄存器引用应该从局部寄存器文件中得到满足,保持性能增益所需的精确百分比取决于各种设计参数。在向量执行子单元中执行的指令通常呈现出高度重复性,同一寄存器在可预测模式中屡次被引用。因此,预计可以实现从局部寄存器文件中满足的所需份额寄存器引用。最佳的是,编译器指定寄存器,使无效操作数和清除流水线的发生次数最少。下面讨论减少或避免清除的发生的可替代设计技术。
尽管这里例示和描述了寄存器文件的特定结构、写入端口、读取端口和相关硬件,但应该明白,这样结构的数量和类型都是可以改变的。除了上面公开的那些变化之外,在本发明的范围内,如下在设计多级寄存器文件方面的变化也是可以的。这些变化或替代在这里作为例子公开,不是用作使本发明的范围限于所公开的优选实施例和替代物。
在优选实施例中,随着确定所请求的操作数寄存器标识符是否实际对应于局部寄存器文件中的寄存器标识符,推测性将来自局部寄存器文件的数据并行提供给执行流水线,随后在数据不正确的地方清除和重新启动流水线。这种方法的优点是,由于无论如何一般都需要为各种状况清除流水线的机构,相比而言需要一点点附加硬件。但是,显而易见,清除流水线和重新启动它引起比在从全部寄存器文件中获得正确数据之前,简单地使流水线闲置引起的延迟大的延迟。例如,预计访问全部寄存器文件将花费一个,也许两个附加周期,而清除和重新启动流水线需要七个或更多个周期。因此,如果足够大份额的寄存器引用不在局部寄存器文件中,性能将会严重变差。
两种可能的可替代设计方案可用于减轻清除流水线的负担。在第一种可替代方案中,对于认为寄存器引用重复性不够的某些指令序列,有选择地禁用局部寄存器。在第二种可替代方案中,可以构建在执行周期开始时检测数据无效状况,和使流水线闲置一到两个周期等待来自全部寄存器文件的数据的逻辑块(未示出)。
这两种可替代方案的每一种都要求可以将数据直接从全部寄存器文件输入到功能执行流水线,无需首先将它存储在局部寄存器文件中。图7代表根据这些可替代实施例、将数据输入功能执行流水线的某个主要硬件和数据路径。
参照图7,在每种可替代方案中,全部寄存器文件306至少含有数量与局部寄存器文件305一样多的读取端口(最好六个)。双重读取寄存器标识符路径并行地将读取寄存器标识符提供给局部寄存器文件305和全部寄存器文件306两者。由于对全部寄存器文件的访问时间较长,在来自全部寄存器文件的六个读取端口每一个的输出路径中至少需要一个锁存寄存器701;在每条输出路径中需要的这样的锁存寄存器的个数等于局部寄存器访问和全部寄存器访问之间的周期延迟,延迟最好是一个周期。旁路逻辑块307内的多路复用器703(其中有六个,每个对应于一个读取端口)选择在到每个功能执行单元流水线301-304的输入端上输入到各自输入锁存寄存器705-708的全部寄存器文件和局部寄存器文件的输出。每个功能执行流水线最好包含与每个操作最多三个输入操作数相对应的三个输入锁存寄存器。旁路逻辑块307进一步包含从结果多路复用器308,并且可选地,其它源头接收输入的旁路延迟/选择逻辑块704,具有将输出延迟几个周期的能力,并为多路复用器703选择一个输出。注意,由于已经要求多路复用器703选择到锁存寄存器的几个输入之一,不要求附加多路复用器来支持从全部寄存器文件306到锁存寄存器705-708的附加数据路径,即,来自全部寄存器文件的数据路径所需的附加支持不要求将附加门延迟***从全部寄存器文件306到锁存寄存器705-708的数据路径中。
在第一可替代实施例中,控制逻辑块(未示出)控制多路复用器703通过从全部寄存器文件306中选择数据,有选择地禁用局部寄存器文件305。由于所有寄存器数据都在全部寄存器文件中,当局部寄存器文件因此被禁用时,决不会因所选寄存器中的无效数据而需要清除和重新启动流水线。局部寄存器文件的禁用可以响应各种状态的任何一种来执行。例如,控制逻辑块可以动态地为每个执行线程监视在局部寄存器引用中检测的无效数据的比率。当将线程调度给处理器时,将为特定线程使能局部寄存器文件。如果对于特定线程,在局部寄存器引用中监视到的无效数据的比率超过某个预定设计阈值,禁用局部寄存器文件。简单有效的监视装置是对于局部寄存器中的每个指令引用有效数据增加第一数量,和对于每个指令引用无效数据(因此,必须重试)减少第二数量的、用于每个线程的单个升降计数器。增量与减量之比对应于无效数据的所需设计阈比率,从而,计数器一贯在零以下表示由于局部寄存器文件中的无效数据需要额外重试指令。作为动态监视的替代品,编译器能够预测寄存器引用是否存在足够重复性,据此设置可编程前后关系标志以禁用局部寄存器文件。
在第二可替代实施例中,控制逻辑块检测和响应每个独立指令的无效数据状况,通过某些寄存器并行地读取数据和移动它。这样可替代方案的读取操作的示范性描述如下。在周期N(在调度和解码指令之后),并行地将在指令中引用的所有寄存器标识符发送到局部寄存器文件305和全部寄存器文件306两者。同时输出两个寄存器文件。在周期N+1局部寄存器文件的输出直接经过多路复用器703到达输入锁存寄存器705-708的所选那一个。在周期N+1具有较长访问等待时间的全部寄存器文件将它的输出保存在锁存寄存器701中。到周期N+1结束时,控制逻辑块确定局部寄存器数据是否有效,并且将这个信息提供给控制功能执行单元和旁路多路复用器的操作的锁存器或其它逻辑块。如果局部寄存器数据有效,在周期N+2锁存寄存器705-708的所选那一个中的操作数数据将转到相应功能执行单元的第一级。如果局部寄存器数据无效,在周期N+2使功能执行单元闲置一个周期,和使全部寄存器文件数据(现在在锁存寄存器701中,假设2-周期访问时间)经过多路复用器703,装入锁存寄存器705-708的相应一个中;然后,操作数数据在周期N+3转到适当功能执行单元的第一级。以相同的方式处理操作数冲突,从而局部寄存器文件中的两个额外寄存器是多余的。
在优选实施例中,处理器包含通用ALU213使用的一组通用寄存器212、浮点子单元214使用的一组分立浮点寄存器215和向量执行子单元216使用的一组分立向量寄存器217。正如这里所述的那样,只有向量寄存器217被设计成多级寄存器文件,浮点寄存器215和通用寄存器212在它们的设计方面是传统的和在尺寸方面较小。作出这种设计选择部分由于向量寄存器的大尺寸和部分由于向量寄存器呈现高度稳定引用模式(通常重复地访问相同寄存器),导致相对较少的指令重试的预期。但是,可选地,可以应用多级通用寄存器文件和/或多级浮点寄存器文件,或支持功能单元的一些其它形式的多级寄存器文件。即使引用模式不那么稳定,正如在上面的可替代方案中所进一步讨论的那样,如果可以减轻从局部寄存器文件中损失的所需寄存器的性能影响,这样的设计也是有用的。另外,可以借助于不同的功能分配设计处理器;它可能只有供给所有执行流水线的单组寄存器,或可能含有这里未加描述的另外寄存器组和功能单元。
在优选实施例中,局部寄存器文件基本上是1-路径(1-way)集合相关的,只为全部寄存器文件的给定子集提供单个局部寄存器。由于只有一个子集的最近引用寄存器保留在局部寄存器文件中,这样的结构简化了访问和保持局部寄存器文件中的数据所需的硬件。简化的硬件结构具有最好是单个周期的访问局部寄存器文件的速度的重要优点。但是,可选地,可以使用N-路径(N-way)相关局部寄存器文件,其中,正如在高速缓冲存储器的现有技术中所知的那样,处理器根据最后使用位或其它技术确定哪些寄存器保留在局部寄存器文件中。这样技术的使用可以降低给定操作数不在局部寄存器文件中的可能性,但也可能涉及到多个访问周期。
在优选实施例中,局部寄存器文件中的所有寄存器都被复制,相对远的寄存器文件(“全寄存器文件(full register file)”)包含所有寄存器数据的完整副本。复制寄存器需要寄存器单元本身的额外芯片区,但相当大地简化了控制逻辑块。在可替代实施例中,可以应用非复制局部寄存器文件和其中局部寄存器包含它的寄存器数据的唯一副本、不复制局部寄存器文件的远程寄存器文件。在这个实施例中,每当将新数据引入局部寄存器时,必须对较远的寄存器换出局部寄存器的内容。尽管相对远的寄存器在这里被称为“全部”寄存器,但这仅仅是为了反映在优选实施例中,它包含寄存器数据的完整副本的事实,而不是打算作为对本发明范围的限制。
尽管上面与某些可替代实施例一起公开了本发明的特定实施例,但本领域的普通技术人员应该识别到,可以在如下权利要求书的范围内在形式和细节上作出各种的改变。
Claims (31)
1.一种数字数据处理设备,包括:
选择和解码用于执行的指令的指令逻辑块;
执行由所述指令所指定的操作的执行逻辑块;
存储利用来自所述指令的寄存器标识符引用的寄存器数据的数个寄存器,所述数个寄存器被组织成数个级,包括:
(a)具有第一访问等待时间和含有第一数量的寄存器的第一级;和
(b)具有第二访问等待时间和含有第二数量的寄存器的第二级,所述第二访问等待时间比所述第一访问等待时间长,寄存器的所述第二数量大于寄存器的所述第一数量。
2.根据权利要求1所述的数字数据处理设备,其中,包含在所述第一级的所述寄存器中的寄存器数据是包含在所述第二级的所述寄存器中的寄存器数据的一个子集。
3.根据权利要求2所述的数字数据处理设备,其中,所述第一级的每个寄存器存储所述第二级的寄存器的数个分立子集的一个相应子集的寄存器的内容,寄存器的所述相应子集包含所述第二级的数个寄存器。
4.根据权利要求3所述的数字数据处理设备,其中,所述第一级的唯一一个寄存器对应于所述第二级的所述寄存器的每个各自所述相应子集。
5.根据权利要求4所述的数字数据处理设备,其中,所述第一级的每个所述寄存器存储最近引用的所述第二级的寄存器的相应子集的寄存器的内容。
6.根据权利要求3所述的数字数据处理设备,其中,在确定从所述第一级的寄存器中检索的操作数数据是否与通过指令标识为操作数的寄存器中的数据相同之前,所述数字数据处理设备利用从与包含通过指令标识为操作数的寄存器的所述第二级的寄存器的子集相对应的所述第一级的寄存器中检索的操作数数据,在所述执行单元中推测性地进行操作。
7.根据权利要求1所述的数字数据处理设备,其中,每个所述寄存器标识符包含N个位,和利用所述寄存器标识符的M位部分访问所述第一级的所述寄存器,其中,N>M>1。
8.根据权利要求7所述的数字数据处理设备,其中,所述第一级的每个寄存器存储所述第二级的寄存器的相应子集的寄存器的内容,寄存器的所述相应子集是具有所述M位部分的值等于与子集对应的所述第一级的寄存器的M位部分的值的寄存器标识符的所述第二级的所有寄存器。
9.根据权利要求1所述的数字数据处理设备,其中,所述数字数据处理设备进一步包括选择用于写入所述第一级的所述寄存器中的所述执行单元生成的数个结果之一的结果选择逻辑块,其中,所述结果选择逻辑块进一步接收所述第二级的所述寄存器的至少一个输出作为输入。
10.根据权利要求1所述的数字数据处理设备,其中,所述数字数据处理设备进一步包括选择输入到所述执行逻辑块的来自所述第一级寄存器的输出和来自所述第二级寄存器的输出之一的执行输入选择逻辑块。
11.根据权利要求10所述的数字数据处理设备,其中,所述数字数据处理设备控制所述执行输入选择逻辑块对于所选指令序列禁用来自所述第一级寄存器的输出。
12.根据权利要求10所述的数字数据处理设备,其中,所述数字数据处理设备控制所述执行输入选择逻辑块,如果来自所述第一级寄存器的输出有效,选择所述输出,和如果来自所述第一级寄存器的输出无效,选择来自所述第二级寄存器的输出。
13.根据权利要求1所述的数字数据处理设备,
其中,所述指令逻辑块从数个线程中同时选择和解码加以执行的指令;和
所述数个寄存器包括多个寄存器集,每个集合对应于所述数个线程的各自线程,每个集合包括所述第一级的寄存器和所述第二级的寄存器。
14.根据权利要求1所述的数字数据处理设备,
其中,所述指令逻辑块能够在单个时钟周期内调度多个加以执行的指令。
15.根据权利要求1所述的数字数据处理设备,
其中,所述数字数据处理设备包括含有数个通用寄存器和处理标量数据的执行逻辑块,和含有并行地对多个操作数集进行操作的向量处理子单元的执行单元,所述向量处理子单元包含被组织成数个级的所述数个寄存器。
16.根据权利要求1所述的数字数据处理设备,
其中,所述数字数据处理设备是以单个半导体芯片的形式实现的。
17.一种计算机***,包括:
存储包括指令在内的数据的存储器;
执行来自所述存储器的指令的至少一个处理器,所述处理器包括:
(a)选择和解码用于执行的指令的指令逻辑块;
(b)执行所述指令指定的操作的执行逻辑块;
(c)存储利用来自所述指令的寄存器标识符引用的寄存器数据的数个寄存器,所述数个寄存器被组织成数个级,包括:
(i)具有第一访问等待时间和含有第一数量的寄存器的第一级;和
(ii)具有第二访问等待时间和含有第二数量的寄存器的第二级,所述第二访问等待时间长于所述第一访问等待时间,寄存器的所述第二数量大于寄存器的所述第一数量。
18.根据权利要求17所述的计算机***,其中,包含在所述第一级的所述寄存器中的寄存器数据是包含在所述第二级的所述寄存器中的寄存器数据的一个子集。
19.根据权利要求18所述的计算机***,其中,所述第一级的每个寄存器存储所述第二级的寄存器的数个分立子集的一个相应子集的寄存器的内容,寄存器的所述相应子集包含所述第二级的数个寄存器。
20.根据权利要求19所述的计算机***,其中,所述第一级的唯一一个寄存器对应于所述第二级的所述寄存器的每个各自所述相应子集。
21.根据权利要求20所述的计算机***,其中,所述第一级的每个所述寄存器存储最近引用的所述第二级的寄存器的相应子集的寄存器的内容。
22.根据权利要求19所述的计算机***,其中,在确定从所述第一级的寄存器中检索的操作数数据是否与通过指令标识为操作数的寄存器中的数据相同之前,所述处理器利用从与包含通过指令标识为操作数的寄存器的所述第二级的寄存器的子集相对应的所述第一级的寄存器中检索的操作数数据,在所述执行单元中推测性地进行操作。
23.根据权利要求17所述的计算机***,其中,每个所述寄存器标识符包含N个位,和利用所述寄存器标识符的M位部分访问所述第一级的所述寄存器,其中,N>M>1。
24.根据权利要求23所述的计算机***,其中,所述第一级的每个寄存器存储所述第二级的寄存器的相应子集的寄存器的内容,寄存器的所述相应子集是具有所述M位部分的值等于与子集对应的所述第一级的寄存器的M位部分的值的寄存器标识符的所述第二级的所有寄存器。
25.根据权利要求17所述的计算机***,其中,所述处理器进一步包括选择用于写入所述第一级的所述寄存器中的所述执行单元生成的数个结果之一的结果选择逻辑块,其中,所述结果选择逻辑块进一步接收所述第二级的所述寄存器的至少一个输出作为输入。
26.根据权利要求17所述的计算机***,其中,所述处理器进一步包括选择输入到所述执行逻辑块的来自所述第一级寄存器的输出和来自所述第二级寄存器的输出之一的执行输入选择逻辑块。
27.根据权利要求26所述的计算机***,其中,所述处理器控制所述执行输入选择逻辑块对于所选指令序列禁用来自所述第一级寄存器的输出。
28.根据权利要求26所述的计算机***,其中,所述处理器控制所述执行输入选择逻辑块,如果来自所述第一级寄存器的输出有效,则选择所述输出,如果来自所述第一级寄存器的输出无效,则选择来自所述第二级寄存器的输出。
29.根据权利要求17所述的计算机***,
其中,所述指令逻辑块从数个线程中同时选择和解码加以执行的指令;和
所述数个寄存器包括多个寄存器集,每个集合对应于所述数个线程的各自线程,每个集合包括所述第一级的寄存器和所述第二级的寄存器。
30.根据权利要求17所述的计算机***,其中,所述计算机***包含数个处理器,所述处理器的每一个包括:
(a)选择和解码用于执行的指令的指令逻辑块;
(b)执行所述指令指定的操作的执行逻辑块;
(c)存储利用来自所述指令的寄存器标识符引用的寄存器数据的数个寄存器,所述数个寄存器被组织成数个级,包括:
(i)具有第一访问等待时间和含有第一数量的寄存器的第一级;和
(ii)具有第二访问等待时间和含有第二数量的寄存器的第二级,所述第二访问等待时间长于所述第一访问等待时间,寄存器的所述第二数量大于寄存器的所述第一数量。
31.根据权利要求17所述的计算机***,进一步包括临时存储包含在所述存储器中的数据的选择部分的高速缓冲存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/875,373 | 2004-06-24 | ||
US10/875,373 US7284092B2 (en) | 2004-06-24 | 2004-06-24 | Digital data processing apparatus having multi-level register file |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1713137A true CN1713137A (zh) | 2005-12-28 |
CN100447738C CN100447738C (zh) | 2008-12-31 |
Family
ID=35507434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100794172A Expired - Fee Related CN100447738C (zh) | 2004-06-24 | 2005-06-21 | 含有多级寄存器文件的数字数据处理设备 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7284092B2 (zh) |
JP (1) | JP4829541B2 (zh) |
CN (1) | CN100447738C (zh) |
TW (1) | TW200609744A (zh) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101627365A (zh) * | 2006-11-14 | 2010-01-13 | 索夫特机械公司 | 用于处理使用上下文切换的多线程架构中的指令的装置和方法 |
CN103765372A (zh) * | 2011-08-26 | 2014-04-30 | 威睿公司 | 配置用于输入/输出操作的对象存储*** |
CN105607890A (zh) * | 2006-09-22 | 2016-05-25 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
CN106055308A (zh) * | 2015-04-04 | 2016-10-26 | 德州仪器公司 | 用于低能加速器处理器架构的设备 |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9811377B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9823930B2 (en) | 2013-03-15 | 2017-11-21 | Intel Corporation | Method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9858080B2 (en) | 2013-03-15 | 2018-01-02 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9886416B2 (en) | 2006-04-12 | 2018-02-06 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9898412B2 (en) | 2013-03-15 | 2018-02-20 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9921845B2 (en) | 2011-03-25 | 2018-03-20 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9934042B2 (en) | 2013-03-15 | 2018-04-03 | Intel Corporation | Method for dependency broadcasting through a block organized source view data structure |
US9940134B2 (en) | 2011-05-20 | 2018-04-10 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN108196823A (zh) * | 2011-12-23 | 2018-06-22 | 英特尔公司 | 用于执行双块绝对差求和的***、装置和方法 |
US10031784B2 (en) | 2011-05-20 | 2018-07-24 | Intel Corporation | Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines |
CN108694698A (zh) * | 2017-04-01 | 2018-10-23 | 英特尔公司 | 针对执行块的分层通用寄存器堆(grf) |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10146548B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for populating a source view data structure by using register template snapshots |
US10169045B2 (en) | 2013-03-15 | 2019-01-01 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US10198266B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Method for populating register view data structure by using register template snapshots |
CN109416634A (zh) * | 2016-07-08 | 2019-03-01 | Arm有限公司 | 向量寄存器存取 |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US10521239B2 (en) | 2011-11-22 | 2019-12-31 | Intel Corporation | Microprocessor accelerated code optimizer |
CN111951845A (zh) * | 2019-05-15 | 2020-11-17 | 上海磁宇信息科技有限公司 | 一种分级管理冗余存储的mram芯片 |
CN112817639A (zh) * | 2021-01-13 | 2021-05-18 | 中国民航大学 | Gpu读写单元通过操作数收集器访问寄存器文件的方法 |
CN116560729A (zh) * | 2023-05-11 | 2023-08-08 | 北京市合芯数字科技有限公司 | 一种多线程处理器的寄存器多级管理方法及*** |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7263593B2 (en) | 2002-11-25 | 2007-08-28 | Hitachi, Ltd. | Virtualization controller and data transfer control method |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7861060B1 (en) * | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US7788468B1 (en) | 2005-12-15 | 2010-08-31 | Nvidia Corporation | Synchronization of threads in a cooperative thread array |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
US20080229062A1 (en) * | 2007-03-12 | 2008-09-18 | Lorenzo Di Gregorio | Method of sharing registers in a processor and processor |
US20090006753A1 (en) * | 2007-06-28 | 2009-01-01 | David Arnold Luick | Design structure for accessing a cache with an effective address |
US7937530B2 (en) * | 2007-06-28 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for accessing a cache with an effective address |
US7849294B2 (en) * | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US8176406B2 (en) * | 2008-03-19 | 2012-05-08 | International Business Machines Corporation | Hard error detection |
US8631223B2 (en) | 2010-05-12 | 2014-01-14 | International Business Machines Corporation | Register file supporting transactional processing |
US8914619B2 (en) * | 2010-06-22 | 2014-12-16 | International Business Machines Corporation | High-word facility for extending the number of general purpose registers available to instructions |
US8661227B2 (en) * | 2010-09-17 | 2014-02-25 | International Business Machines Corporation | Multi-level register file supporting multiple threads |
US8725993B2 (en) * | 2011-02-23 | 2014-05-13 | International Business Machines Corporation | Thread transition management |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
US20130086364A1 (en) * | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Managing a Register Cache Based on an Architected Computer Instruction Set Having Operand Last-User Information |
US8612959B2 (en) | 2011-10-03 | 2013-12-17 | International Business Machines Corporation | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US9329869B2 (en) | 2011-10-03 | 2016-05-03 | International Business Machines Corporation | Prefix computer instruction for compatibily extending instruction functionality |
US9690583B2 (en) | 2011-10-03 | 2017-06-27 | International Business Machines Corporation | Exploiting an architected list-use operand indication in a computer system operand resource pool |
US9286072B2 (en) | 2011-10-03 | 2016-03-15 | International Business Machines Corporation | Using register last use infomation to perform decode-time computer instruction optimization |
US9354874B2 (en) | 2011-10-03 | 2016-05-31 | International Business Machines Corporation | Scalable decode-time instruction sequence optimization of dependent instructions |
US8756591B2 (en) | 2011-10-03 | 2014-06-17 | International Business Machines Corporation | Generating compiled code that indicates register liveness |
US10078515B2 (en) | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
US8615745B2 (en) | 2011-10-03 | 2013-12-24 | International Business Machines Corporation | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US9697002B2 (en) | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
US9286068B2 (en) | 2012-10-31 | 2016-03-15 | International Business Machines Corporation | Efficient usage of a multi-level register file utilizing a register file bypass |
US10275251B2 (en) | 2012-10-31 | 2019-04-30 | International Business Machines Corporation | Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file |
US9508112B2 (en) * | 2013-07-31 | 2016-11-29 | Apple Inc. | Multi-threaded GPU pipeline |
US9459869B2 (en) | 2013-08-20 | 2016-10-04 | Apple Inc. | Intelligent caching for an operand cache |
US9378146B2 (en) * | 2013-08-20 | 2016-06-28 | Apple Inc. | Operand cache design |
US9652233B2 (en) | 2013-08-20 | 2017-05-16 | Apple Inc. | Hint values for use with an operand cache |
US9870340B2 (en) * | 2015-03-30 | 2018-01-16 | International Business Machines Corporation | Multithreading in vector processors |
US9619394B2 (en) | 2015-07-21 | 2017-04-11 | Apple Inc. | Operand cache flush, eviction, and clean techniques using hint information and dirty information |
US9785567B2 (en) | 2015-09-11 | 2017-10-10 | Apple Inc. | Operand cache control techniques |
US10241790B2 (en) | 2015-12-15 | 2019-03-26 | International Business Machines Corporation | Operation of a multi-slice processor with reduced flush and restore latency |
US20170371654A1 (en) * | 2016-06-23 | 2017-12-28 | Advanced Micro Devices, Inc. | System and method for using virtual vector register files |
US10613987B2 (en) | 2016-09-23 | 2020-04-07 | Apple Inc. | Operand cache coherence for SIMD processor supporting predication |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
TWI783310B (zh) * | 2020-11-26 | 2022-11-11 | 華邦電子股份有限公司 | 計數方法以及計數裝置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US5179681A (en) * | 1989-11-16 | 1993-01-12 | Sun Microsystems, Inc. | Method and apparatus for current window cache with switchable address and out cache registers |
US5226142A (en) * | 1990-11-21 | 1993-07-06 | Ross Technology, Inc. | High performance register file with overlapping windows |
JP3479538B2 (ja) * | 1991-12-26 | 2003-12-15 | テキサス インスツルメンツ インコーポレイテツド | 半導体集積回路を製作する方法 |
JPH06222990A (ja) * | 1992-10-16 | 1994-08-12 | Fujitsu Ltd | データ処理装置 |
JP3676411B2 (ja) * | 1994-01-21 | 2005-07-27 | サン・マイクロシステムズ・インコーポレイテッド | レジスタファイル装置及びレジスタファイルアクセス方法 |
US5592679A (en) * | 1994-11-14 | 1997-01-07 | Sun Microsystems, Inc. | Apparatus and method for distributed control in a processor architecture |
EP0717359A3 (en) * | 1994-12-15 | 1997-02-05 | Sun Microsystems Inc | Register cache memory for a computer processor |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
US6131155A (en) * | 1997-11-07 | 2000-10-10 | Pmc Sierra Ltd. | Programmer-visible uncached load/store unit having burst capability |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6381678B2 (en) * | 1998-10-30 | 2002-04-30 | Intel Corporation | Processing ordered data requests to a memory |
US6282614B1 (en) * | 1999-04-15 | 2001-08-28 | National Semiconductor Corporation | Apparatus and method for reducing the power consumption of a microprocessor with multiple levels of caches |
US6557078B1 (en) * | 2000-02-21 | 2003-04-29 | Hewlett Packard Development Company, L.P. | Cache chain structure to implement high bandwidth low latency cache memory subsystem |
EP1275046B1 (en) * | 2000-04-12 | 2010-10-06 | DSP Group Switzerland AG | Data processing circuit with a cache memory and apparatus containing such a circuit |
JP3659941B2 (ja) * | 2002-07-26 | 2005-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マイクロプロセッサおよびその処理方法 |
US6934830B2 (en) * | 2002-09-26 | 2005-08-23 | Sun Microsystems, Inc. | Method and apparatus for reducing register file access times in pipelined processors |
US20040222379A1 (en) * | 2003-05-09 | 2004-11-11 | Cook Michael Joseph | Event counter for an imaging device |
US7206923B2 (en) * | 2003-12-12 | 2007-04-17 | International Business Machines Corporation | Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling |
US20050138297A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | Register file cache |
US7694075B1 (en) * | 2005-03-09 | 2010-04-06 | Globalfoundries Inc. | System for enabling and disabling cache and a method thereof |
-
2004
- 2004-06-24 US US10/875,373 patent/US7284092B2/en not_active Expired - Fee Related
-
2005
- 2005-06-06 TW TW094118524A patent/TW200609744A/zh unknown
- 2005-06-20 JP JP2005179948A patent/JP4829541B2/ja not_active Expired - Fee Related
- 2005-06-21 CN CNB2005100794172A patent/CN100447738C/zh not_active Expired - Fee Related
-
2007
- 2007-08-08 US US11/835,519 patent/US8793433B2/en not_active Expired - Fee Related
Cited By (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289605B2 (en) | 2006-04-12 | 2019-05-14 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US9886416B2 (en) | 2006-04-12 | 2018-02-06 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US11023236B2 (en) | 2006-09-22 | 2021-06-01 | Intel Corporation | Instruction and logic for processing text strings |
US10261795B2 (en) | 2006-09-22 | 2019-04-16 | Intel Corporation | Instruction and logic for processing text strings |
CN105607890A (zh) * | 2006-09-22 | 2016-05-25 | 英特尔公司 | 用于处理文本串的指令和逻辑 |
US11537398B2 (en) | 2006-09-22 | 2022-12-27 | Intel Corporation | Instruction and logic for processing text strings |
CN105607890B (zh) * | 2006-09-22 | 2018-10-26 | 英特尔公司 | 处理器和响应于单个simd紧缩比较指令而执行的方法 |
US10929131B2 (en) | 2006-09-22 | 2021-02-23 | Intel Corporation | Instruction and logic for processing text strings |
US11029955B2 (en) | 2006-09-22 | 2021-06-08 | Intel Corporation | Instruction and logic for processing text strings |
US9965281B2 (en) | 2006-11-14 | 2018-05-08 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
US10585670B2 (en) | 2006-11-14 | 2020-03-10 | Intel Corporation | Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer |
CN101627365A (zh) * | 2006-11-14 | 2010-01-13 | 索夫特机械公司 | 用于处理使用上下文切换的多线程架构中的指令的装置和方法 |
CN101627365B (zh) * | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US9990200B2 (en) | 2011-03-25 | 2018-06-05 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US10564975B2 (en) | 2011-03-25 | 2020-02-18 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9921845B2 (en) | 2011-03-25 | 2018-03-20 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9934072B2 (en) | 2011-03-25 | 2018-04-03 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US10372454B2 (en) | 2011-05-20 | 2019-08-06 | Intel Corporation | Allocation of a segmented interconnect to support the execution of instruction sequences by a plurality of engines |
US10031784B2 (en) | 2011-05-20 | 2018-07-24 | Intel Corporation | Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines |
US9940134B2 (en) | 2011-05-20 | 2018-04-10 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
CN103765372B (zh) * | 2011-08-26 | 2016-12-28 | 威睿公司 | 配置用于输入/输出操作的对象存储*** |
CN103765372A (zh) * | 2011-08-26 | 2014-04-30 | 威睿公司 | 配置用于输入/输出操作的对象存储*** |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US10521239B2 (en) | 2011-11-22 | 2019-12-31 | Intel Corporation | Microprocessor accelerated code optimizer |
CN108196823A (zh) * | 2011-12-23 | 2018-06-22 | 英特尔公司 | 用于执行双块绝对差求和的***、装置和方法 |
US10146576B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10198266B2 (en) | 2013-03-15 | 2019-02-05 | Intel Corporation | Method for populating register view data structure by using register template snapshots |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
US10146548B2 (en) | 2013-03-15 | 2018-12-04 | Intel Corporation | Method for populating a source view data structure by using register template snapshots |
US10248570B2 (en) | 2013-03-15 | 2019-04-02 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10255076B2 (en) | 2013-03-15 | 2019-04-09 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9811377B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for executing multithreaded instructions grouped into blocks |
US9934042B2 (en) | 2013-03-15 | 2018-04-03 | Intel Corporation | Method for dependency broadcasting through a block organized source view data structure |
US10503514B2 (en) | 2013-03-15 | 2019-12-10 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9898412B2 (en) | 2013-03-15 | 2018-02-20 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US10169045B2 (en) | 2013-03-15 | 2019-01-01 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9823930B2 (en) | 2013-03-15 | 2017-11-21 | Intel Corporation | Method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US9858080B2 (en) | 2013-03-15 | 2018-01-02 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
CN106055308B (zh) * | 2015-04-04 | 2021-05-07 | 德州仪器公司 | 用于低能加速器处理器架构的设备 |
CN106055308A (zh) * | 2015-04-04 | 2016-10-26 | 德州仪器公司 | 用于低能加速器处理器架构的设备 |
CN109416634A (zh) * | 2016-07-08 | 2019-03-01 | Arm有限公司 | 向量寄存器存取 |
CN109416634B (zh) * | 2016-07-08 | 2023-07-18 | Arm有限公司 | 数据处理设备和用于制造该设备的方法 |
CN108694698A (zh) * | 2017-04-01 | 2018-10-23 | 英特尔公司 | 针对执行块的分层通用寄存器堆(grf) |
CN111951845A (zh) * | 2019-05-15 | 2020-11-17 | 上海磁宇信息科技有限公司 | 一种分级管理冗余存储的mram芯片 |
CN111951845B (zh) * | 2019-05-15 | 2022-06-03 | 上海磁宇信息科技有限公司 | 一种分级管理冗余存储的mram芯片 |
CN112817639A (zh) * | 2021-01-13 | 2021-05-18 | 中国民航大学 | Gpu读写单元通过操作数收集器访问寄存器文件的方法 |
CN116560729A (zh) * | 2023-05-11 | 2023-08-08 | 北京市合芯数字科技有限公司 | 一种多线程处理器的寄存器多级管理方法及*** |
CN116560729B (zh) * | 2023-05-11 | 2024-06-04 | 北京市合芯数字科技有限公司 | 一种多线程处理器的寄存器多级管理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
US8793433B2 (en) | 2014-07-29 |
JP4829541B2 (ja) | 2011-12-07 |
US20050289299A1 (en) | 2005-12-29 |
CN100447738C (zh) | 2008-12-31 |
US7284092B2 (en) | 2007-10-16 |
TW200609744A (en) | 2006-03-16 |
JP2006012163A (ja) | 2006-01-12 |
US20080022044A1 (en) | 2008-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100447738C (zh) | 含有多级寄存器文件的数字数据处理设备 | |
CN1127687C (zh) | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 | |
US8516280B2 (en) | Parallel processing computer systems with reduced power consumption and methods for providing the same | |
US9934196B2 (en) | Thread optimized multiprocessor architecture | |
CN1320453C (zh) | 具有自我修复能力的多并行管线处理器 | |
JP3916680B2 (ja) | プロセッサ | |
US20210216318A1 (en) | Vector Processor Architectures | |
RU2427895C2 (ru) | Оптимизированная для потоков многопроцессорная архитектура | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
US6963962B2 (en) | Memory system for supporting multiple parallel accesses at very high frequencies | |
JP2006509306A (ja) | 関係アプリケーションへのデータ処理システム相互参照用セルエンジン | |
CN111656339B (zh) | 存储器装置及其控制方法 | |
TWI666551B (zh) | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 | |
CN102402415B (zh) | 一种动态可重构阵列内数据缓存的装置及方法 | |
JP2002063025A (ja) | 可変長データ処理用プロセッサ | |
US20020138535A1 (en) | SIMD sum of product arithmetic method and circuit, and semiconductor integrated circuit device equipped with the SIMD sum of product arithmetic circuit | |
CN115858439A (zh) | 三维堆叠式可编程逻辑架构和处理器设计体系结构 | |
CN116880775B (zh) | 存储空间的硬件管理模组、芯片、电子设备及方法 | |
JP6307975B2 (ja) | 演算処理装置及び演算処理装置の制御方法 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081231 Termination date: 20110621 |