CN1306433C - 用于提供快速远地寄存器访问的方法和设备 - Google Patents
用于提供快速远地寄存器访问的方法和设备 Download PDFInfo
- Publication number
- CN1306433C CN1306433C CNB2003101212521A CN200310121252A CN1306433C CN 1306433 C CN1306433 C CN 1306433C CN B2003101212521 A CNB2003101212521 A CN B2003101212521A CN 200310121252 A CN200310121252 A CN 200310121252A CN 1306433 C CN1306433 C CN 1306433C
- Authority
- CN
- China
- Prior art keywords
- register
- far
- vliw
- computer system
- instruction
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 29
- 238000004891 communication Methods 0.000 claims abstract description 20
- 238000005192 partition Methods 0.000 claims description 27
- 230000008676 import Effects 0.000 claims description 2
- 238000012986 modification Methods 0.000 claims 3
- 230000004048 modification Effects 0.000 claims 3
- 230000001419 dependent effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000638 solvent extraction Methods 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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, look ahead
- G06F9/3824—Operand accessing
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
Abstract
在一个采用分区式寄存器文件和一些预取远地寄存器的附加硬件的群集式VLIW处理器内可以减少实际远地寄存器文件访问时间。用一个指令预取器和一个预解码器来预取一些指令和对之部分解码,以便预取在运行时执行VLIW所需的远地寄存器,因此充分减少了群集间拷贝指令。指令(VLIW)在考虑诸如有限的群集间通信带宽、群集间通信延迟之类的情况下予以调度。
Description
技术领域
本发明涉及用于群集式超长指令字(VLIW)处理器的寄存器文件(register file),具体地说,涉及将寄存器名称空间进行分区并且将其分配给分别与各群集关联的本地寄存器文件的分区式寄存器文件。
背景技术
处理器执行的基本操作是按照程序内指令序列所规定的读取数据、进行计算和写入数据。处理器读取或写入的数据通常存储在诸如磁盘、存储器、高速缓存或寄存器之类的各种存储媒体内。一个处理器的指令集中有很大一部分指令是访问存储在寄存器中的数据,对于最常用的数据来说,寄存器是默认的存储位置。
典型的寄存器文件包括一个用于存储诸如整数和浮点数之类的特定类型的数据的寄存器阵列。由处理器执行的指令使用许多诸如功能单元、寄存器、总线、高速缓存之类的芯片上的资源执行由程序中的指令序列规定的计算。在超长指令字(VLIW)处理器内,用一个编译器(而不是硬件)静态地调度指令以及跟踪和保留指令所用的资源。一个VLIW包括一组可以在同一个周期内发出的利用程序中指令级并行性(ILP)并行执行的指令。在一个群集式VLIW处理器中,芯片上的资源被划分成若干群集。在一个典型的群集式VLIW处理器中,每个群集可以含有一个由一些功能单元、一个本地寄存器文件和一个本地高速缓存组成的子集。
在一个群集中产生的中间计算结果经常是同一个群集中和其他群集中所需要的。在需要将这样的数据传送给不同的群集时就要使用群集间拷贝指令。这样的群集间拷贝指令要用到诸如共享或点到点群集间通信总线之类的互连结构。
群集式处理器内使用的寄存器文件是分区式或复制式的寄存器文件。在复制式寄存器文件的体制中,每个本地寄存器文件共享整个结构的寄存器名称空间,要求群集间拷贝操作维护本地寄存器文件之间的相干性。另一方面,在一个分区式寄存器文件的体制中,对寄存器名称空间进行分区并且将其分配给一组物理上独立的分别与各群集关联的寄存器文件。分区式寄存器文件十多年来已经用做为群集中特别是群集式VLIW处理器中的本地寄存器文件,主要是为了减少端口。
与单个集中式寄存器文件相比较,采用较少的端口的分区式寄存器文件的主要优点是减小了面积、访问延迟和功率。然而,所有由于群集特别是在采用分区式寄存器文件时所得到的益处都是以以下这些性能降低为代价的:1.由于在分区式寄存器文件之间移动数据需要群集间拷贝指令,从而增加了程序执行时间;以及2.由于在程序内需插入额外的群集间拷贝指令,从而增加了代码长度。以下简要说明在VLIW处理器的分区式寄存器文件方面的有关技术。R.P.Colwell等人的论文“跟踪调度编译器的VLIW体系结构”(“A VLIW Architecture for a Trace Scheduling Compiler”inproceedings of the second International Conference on ArchitecturalSupport for Programming Languages and Operating Systems(ASPLOSII)in SIGPLAN Notices,vol.22,no.10,pp.180-192,October 1987)揭示了一种带分区式寄存器文件的VLIW处理器。
显式群集间拷贝操作由编译器调度,以便从一个远地群集来访问寄存器。A.Capitanio、N.Dutt和A.Nicolau在他们的论文“VLIW的分区式寄存器文件:初步折衷分析”(“Partitioned Register Files for VLIWs:A Preliminary Analysis of Trade-offs”,the proceedings of the 25thAnnual International Symposium on Microarchitecture,pp.292-300,December 1992)中揭示了另一种具有有限群集间连通性的群集式VLIW处理器,这种群集式VLIW处理器从远地群集访问寄存器也需要群集间拷贝指令。
在Kailas的博士论文“群集指令级并行处理器的微体系结构和编译支持”(“Microarchitectures and Compilation Support for ClusteredInstruction-level Parallel Processors”,University of Maryland,College Park publisbed in March 2001)中和在Kailas等人的“群集式ILP处理器的分区式寄存器文件体系结构和编译方案”(“A PartitionedRegister File Architecture and Compilation Scheme for Clustered ILPProcessors”,EuroPar 2002 conference paper)中描述了不同类型的具有一个附装的高速缓存寄存器缓冲器结构的分区式寄存器文件。他们的技术通过将几个群集间拷贝指令合并成一个新的单个“sendb”指令执行有选择地向与目标群集关联的高速缓存寄存器缓冲器广播寄存器值从而减少了群集间拷贝操作。2001年8月28日颁发的Batten等人的美国专利6,282,585B1“降低群集式微处理器中端口压力的协同互连”(“Cooperative interconnection for reducing port pressure inclustered microprocessors”)描述了寄存器文件复制、用多个全局移动单元复制互连和将群集间拷贝指令分成两个子指令这三种降低群集式处理器端口要求的技术。然而,这些技术没有解决群集间通信需要大量拷贝指令的问题。2001年11月15日颁发的M.Tremblay和W.Joy的美国专利2001/0042190“VLIW处理器内局部和全局寄存器分区”(“Local andglobal register partitioning in a VLIW processor”)揭示了一种用于VLIW处理器的寄存器文件分区方式,每个分区式寄存器文件进一步划分成全局和本地寄存器,使得全局寄存器通过广播写操作保持所有功能单元相干。虽然这种方案由于采用将寄存器文件复制到每个寄存器文件中的全局寄存器的方法有助于避免显式群集间拷贝操作,但有着复制寄存器文件方案的所有缺点,诸如群集间带宽大和中间连接通路非常多。
从上面的讨论可见,所有的现有技术都有着与在群集式VLIW处理器中使用的分区式寄存器文件关联的缺点,诸如由于群集间拷贝指令多而代码长度增长和由于群集间拷贝指令在程序内关键路径的延伸而性能损失等。
发明内容
根据本发明的一个方面,提供一种计算机系统,所述计算机系统包括至少两个处理VLIW操作的群集式处理核心,每个所述群集式处理核心各包括一个分区式寄存器文件单元、一个指令预取解码器和一个硬件预取单元,其中所述指令预取解码器包括识别执行第n个VLIW所需的远地寄存器的装置和控制所述硬件预取单元从远地处理核心的本地寄存器文件和从所述远地处理核心中的旁路通路预取所述远地寄存器的装置。
根据本发明的另一个方面,提供一种运行一个计算机系统的方法,所述计算机系统包括至少两个处理VLIW操作的群集式处理核心,每个所述群集式处理核心各包括一个分区式寄存器文件单元、一个指令预取解码器和一个硬件预取单元,其中所述指令预取解码器包括识别执行第n个VLIW所需的远地寄存器的装置和控制所述硬件预取单元预取所述远地寄存器的装置,所述方法包括下列步骤:
将第n个VLIW传入所述预取解码器;
对所述第n个VLIW部分解码,以识别执行所述第n个VLIW所需的远地寄存器;以及
从远地处理核心的本地寄存器文件和所述远地处理核心中的旁路通路中的至少之一中预取所述远地寄存器。
本发明涉及在一个采用分区式寄存器文件的群集式VLlW处理器中提供快速远地寄存器访问的方法和设备。
本发明的一个方面是减小在一个采用分区式寄存器文件的群集式VLIW处理器中由于群集间拷贝指令引起的性能恶化。
在本发明的一个实施例中,有一个预解码步骤从一个特定的远地群集中的流水线旁路网络预取这个远地群集中将要修改的远地寄存器的内容。
在另一个实施例中,有一个预解码步骤直接从一个特定的远地群集的远地寄存器文件预取在这个远地群集中不会修改的远地寄存器的内容。
在又一个实施例中,寄存器预取可以在群集式处理器中用一个预取指令缓冲器和一个识别在预取指令缓冲器中那些访问远地寄存器文件的指令的指令预解码器来实现。指令预解码器可以用来产生群集间旁路控制信号和远地寄存器接入信号。
附图说明
图1示出了一个典型的群集式VLIW处理器的原理方框图。
图2示出了在一个群集式VLIW处理器内的一个群集的方框图。
图3示出了一个按照本发明设计的具有指令预取器和指令预解码器的群集式VLIW处理器。
图4示出了按照本发明执行的各个步骤的流程图。
具体实施方式
本发明涉及群集式超长指令字(VLIW)处理器的寄存器文件,具体地说涉及将寄存器名称空间分区并且将其分配给分别与各群集关联的本地寄存器文件的分区式寄存器文件。
如上所述的问题和在上面所提到的现有技术的有关问题是用在一个采用分区式寄存器文件的群集式VLIW处理器中提供快速远地寄存器访问的方法和设备的本发明的原理来解决的。特别是,本发明有助于降低在一个采用分区式寄存器文件的群集式VLIW处理器中由于群集间拷贝指令引起的性能恶化。
在一个采用分区式寄存器文件和预取远地寄存器的附加硬件的群集式VLIW处理器中可以减少实际远地寄存器文件访问时间。用一个指令预取器和一指令解码器来预取一些指令和对之部分解码,以便预取在运行时间执行VLIW所需的远地寄存器,因此充分减少了群集间拷贝指令。根据诸如有限的群集间通信带宽、群集间通信延时等各种硬件资源限制来调度指令(VLIW),基本上减少了群集间拷贝指令,并且由此减小了代码的尺寸和程序的执行时间。同时也减小了寄存器压力,从而减小了使寄存器内容溢出到存储器中的可能性,这是因为与在不同寄存器文件中复制相同的数据相比,只将变量(数据)的一个副本存储在所有的寄存器文件中。
一个VLIW处理器执行包括一组可以在处理器的不同功能单元或处理流水线上并行执行的指令的VLIW(超长指令字)。一个VLIW编译器用来静态地调度在一个VLIW内的一些指令以及产生一些VLIW序列,使得处理器资源不会过度预留。一个VLIW可以包括一些将驻留在一个群集的本地寄存器内的数据传送给另一个群集的本地寄存器的群集间拷贝指令。
本发明是一种利用硬件预取远地寄存器的方法和相应设备,可以潜在地消除在一个采用分区式寄存器文件的群集式VLIW处理器内的大量群集间拷贝指令。更具体地说,这种方法包括调度使用远地寄存器的指令,而不需要用显式群集间拷贝指令来访问远地寄存器。远地寄存器内容如果不会被当前在处理器流水线内任何前面的指令盖写就被预取。如果内容将要被盖写,计划写给上述的远地寄存器的数据由一个群集间旁路网络旁路给适当的目标群集。
例如,这个网络包括320、316和连接316和306的线路321(总标为360)。最好,现有的群集间通信总线(316,102)也用来旁路远地寄存器内容,因为一旦减少了群集间拷贝操作(由于按照本发明远地寄存器预取指令)该总线(316,102)将主要处在等待状态。如果系统设计员喜欢,为此可以专用一个独立的总线或网络360。线路322表示直接从远地源群集的流水线执行预取所需的控制信号。
寄存器预取可以在群集式处理器中用一个预取指令缓冲器和一个指令预解码器实现,指令预解码器用来识别预取指令缓冲器中那些访问远地寄存器文件的指令。
指令预解码器可以用来产生群集间旁路控制信号和远地寄存器访问信号,它们沿线路322传播。在该技术领域内已知有一些为静态保留沿多个执行通路进行群集间通信所需的资源的编译器算法,例如可参见2001年3月马里兰州大学工学院发表的Krishnan Kailas的博士论文。
图1示出了现有技术的典型群集式VLIW处理器,它具有一个以上的通过群集间通信网络或总线结构102互连的群集100。一个群集如图2所示可以有多个能够直接访问(读和写)该群集的本地寄存器文件200的功能单元(FU)202。驻留在其他群集的本地寄存器(通常称为“远地寄存器”)中的数据,可以利用群集间通信网络/总线102来读/写。
每个群集都可以有一个数据/指令高速缓存210。在一个群集式VLIW处理器中远地寄存器通常用群集间拷贝操作来访问;例如,如果另一个群集想要访问在图2所示的第i个群集的寄存器文件200中的一个寄存器,它就要用一个群集间拷贝操作。本发明能够在一个采用分区式寄存器文件的群集式VLIW处理器中消除大量的群集间拷贝指令。
通过利用例如诸如标为302、302-1、302-2、322、320之类的硬件和网络360而不是用群集间拷贝操作预取VLIW中操作(OP)所需的远地寄存器值,大大减少了群集间拷贝操作。在远地寄存器中有一些可能被当前流水线内的指令修改的情况下,直接从远地寄存器文件预取必要的源寄存器值就可能不够充分。在此情况下,远地寄存器值必需用一个群集间旁路网络预先直接从远地群集的流水线旁路网络取至所需的群集。
图4所示的流程图示出了上述方法的各个步骤。支持上述方案所需的群集式VLIW处理器配置如图3所示。这个图只是例示性的,例如,图3所示的处理器流水线可以具有另外一些级。此外,这些流水线级各个也可以是流水线型的,实现为一些由处理器时钟频率要求所确定的级。指令和数据驻留在存储器或高速缓存中。一个指令预取单元302用来将指令从存储器取入指令预取缓冲器302-1。
用于所预取的指令的数据通路是从300至302再经指令预取缓冲器302-1至304的线路;预取的指令进入一个预取缓冲器,从那里首先转给预解码级302-2然后转给传统的解码级304。
线路322表示从远地寄存器文件318或远地旁路网络320预取远地寄存器所用的控制信号的通路。这个硬件网络由一些传统的部件组成。熟悉该技术领域的人员都很清楚利用芯片上共享或点到点总线访问这样的远地群集的结构技术。
按照本发明,由于将远地寄存器内容直接从一个远地群集的本地流水线旁路网络旁路而不需要用一个群集间拷贝指令,从而减少了远地寄存器访问时间。在现有技术中,远地寄存器内容只有通过一个群集间拷贝指令才可访问,这首先要读取寄存器内容(直接从寄存器文件读取或者利用本地流水线旁路网络读取),然后通过群集间连接316发送给其他群集。通过直接预取寄存器内容将这两个(或更多个)步骤减为一个步骤有助于减少远地寄存器访问时间。
包括一个共享或点到点总线的专用中间连接网络实际上能为群集间传送寄存器内容提供更大的带宽(以实现它所需的额外硬件为代价)。另一方面,现有的群集间通信网络也可以用于这个目的。如果总线是一条共享总线,就需要有总线接入控制和仲裁(由总线技术解决),而点到点链路不需要这样(以较多的布线和较大的芯片面积为代价)。
指令预取缓冲器302-1应该足以容纳属于充分多个周期的指令,使得等到一个指令到达读取级时,这个指令所需的所有数据都已预先取得,可供使用。再来看图3,指令预解码器302-2用来对指令解码,以找到这些指令要用的寄存器,并且识别需访问远地寄存器文件的指令。
指令预解码器302-2还产生适当的控制信号,以启动从远地群集的数据传送。如果所需的远地寄存器还没有由一个在流水线内的指令写回给寄存器文件318,单元302-2就产生适当的控制信号322,用群集间通信网络/总线316将远地寄存器数据直接从一个群集(含有寄存器文件318的群集)旁路给另一个群集350(见图3)。
编译器通过调度一些充分远离的数据依从指令,保证产生寄存器值的指令总是能用上面提到的硬件将产生的寄存器值馈送给使用它们的指令。编译器产生的调度因此必须明确地考虑到群集间通信网络/总线的等待时间、指令预取缓冲器的容量、流水线深度等,以便等到一个使用数据的指令到达流水线的执行级时这数据就是现有的。可以采用Kailas在2001年3月马里兰州大学的博士论文中所揭示的指令调度技术的编译算法静态地保留沿多个执行通路进行群集间通信所需的资源。
在图3的其余部分,解码级304执行对当前指令的解码,这解码可以比在预解码级302执行的解码更为全面,因为该预解码只须对一个指令要用的寄存器操作数解码。读出级306从存储器和/或寄存器文件读得计算所需的数据。执行级308执行指令规定的实际操作(诸如加法或乘法操作之类),回写级310按照指令规定将需再次使用的数据通过本地旁路网络314回送给本地寄存器文件312或高速缓存300。需发送给整个系统内其他群集的数据还通过回写级310加到总线316上再送至这些群集。
图4为例示涉及在使用前预取远地寄存器的一些步骤的流程图。步骤405启动预取下一个指令(VLIW)的过程。
步骤410对VLIW和VLIW内的操作解码,检查需要什么资源。具体地说,如果所有的源寄存器都可在本地群集内得到,过程就返回到预取下一个指令,如果预取缓冲器充满的话需要暂停(步骤430)。
如果一些寄存器不是可得到的,步骤420启动一个操作,从远地寄存器文件(如果数据不会被盖写)或者远地群集的流水线旁路网络(如果数据会被一个远地群集的流水线内一个在前面的指令盖写)预取远地寄存器。
虽然本发明就一个优选实施例作了说明,但熟悉该技术领域的人员可以理解本发明可以在以下权利要求所给出的本发明的精神实质和专利保护范围内以各种方式实施。
Claims (16)
1.一种计算机系统,所述计算机系统包括至少两个处理VLIW操作的群集式处理核心,每个所述群集式处理核心各包括一个分区式寄存器文件单元、一个指令预取解码器和一个硬件预取单元,其中所述指令预取解码器包括识别执行第n个VLIW所需的远地寄存器的装置和控制所述硬件预取单元从远地处理核心的本地寄存器文件和从所述远地处理核心中的旁路网络预取所述远地寄存器的装置。
2.按照权利要求1所述的计算机系统,其中所述指令预取解码器包括:
用于识别所述远地寄存器是否被所述第n个VLIW前执行的操作修改的装置;
对于修改的远地寄存器,用于控制所述硬件预取单元从所述远地处理核心中的旁路网络预取该修改的远地寄存器的装置。
3.按照权利要求1所述的计算机系统,其中所述指令预取解码器包括在一个解码步骤中对所述VLIW进行部分解码的装置,该解码步骤与在执行一个VLIW期间执行的解码步骤是分开的。
4.按照权利要求2所述的计算机系统,其中所述指令预取解码器包括在一个解码步骤中对所述VLIW进行部分解码的装置,该解码步骤与在执行一个VLIW期间执行的解码步骤是分开的。
5.按照权利要求1所述的计算机系统,其中在所述指令预取解码器内识别的所述远地寄存器是通过一个与群集间通信总线分开的硬件通路访问的。
6.按照权利要求2所述的计算机系统,其中在所述指令预取解码器内识别的所述远地寄存器是通过一个与群集间通信总线分开的硬件通路访问的。
7.按照权利要求3所述的计算机系统,其中在所述指令预取解码器内识别的所述远地寄存器是通过一个与群集间通信总线分开的硬件通路访问的。
8.一种运行一个计算机系统的方法,所述计算机系统包括至少两个处理VLIW操作的群集式处理核心,每个所述群集式处理核心各包括一个分区式寄存器文件单元、一个指令预取解码器和一个硬件预取单元,其中所述指令预取解码器包括识别执行第n个VLIW所需的远地寄存器的装置和控制所述硬件预取单元预取所述远地寄存器的装置,所述方法包括下列步骤:
将第n个VLIW传入所述预取解码器;
对所述第n个VLIW部分解码,以识别执行所述第n个VLIW所需的远地寄存器;以及
从远地处理核心的本地寄存器文件和所述远地处理核心中的旁路网络中的至少之一中预取所述远地寄存器。
9.按照权利要求8所述的运行一个计算机系统的方法,所述方法包括:
识别所述远地寄存器是否被所述第n个VLIW前执行的操作修改;
对于修改的远地寄存器,从所述远地处理核心中的旁路网络预取该修改的远地寄存器。
10.按照权利要求8所述的运行一个计算机系统的方法,所述方法还包括在一个解码步骤中对所述VLIW进行部分解码的步骤,该解码步骤与在执行一个VLIW期间执行的解码步骤是分开的。
11.按照权利要求9所述的运行一个计算机系统的方法,所述方法还包括在一个解码步骤中对所述VLIW进行部分解码的步骤,该解码步骤与在执行一个VLIW期间执行的解码步骤是分开的。
12.按照权利要求9所述的运行一个计算机系统的方法,其中各VLIW和所述各VLIW内的子指令是以使所述要修改的远地寄存器可以在它们修改后而在相关指令开始执行前从一个远地群集取得的间隔调度的。
13.按照权利要求11所述的运行一个计算机系统的方法,其中各VLIW和所述各VLIW内的子指令是以使所述要修改的远地寄存器可以在它们修改后而在相关指令开始执行前从一个远地群集取得的间隔调度的。
14.按照权利要求11所述的运行一个计算机系统的方法,其中从所述远地处理核心中的旁路网络中预取所述远地寄存器的步骤是通过一个与群集间通信总线分开的硬件通路执行的。
15.按照权利要求12所述的运行一个计算机系统的方法,其中从所述远地处理核心中的旁路网络中预取所述远地寄存器的步骤是通过一个与群集间通信总线分开的硬件通路执行的。
16.按照权利要求13所述的运行一个计算机系统的方法,其中从所述远地处理核心中的旁路网络中预取所述远地寄存器的步骤是通过一个与群集间通信总线分开的硬件通路执行的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/320,150 US7484075B2 (en) | 2002-12-16 | 2002-12-16 | Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files |
US10/320,150 | 2002-12-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1534505A CN1534505A (zh) | 2004-10-06 |
CN1306433C true CN1306433C (zh) | 2007-03-21 |
Family
ID=32506808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101212521A Expired - Fee Related CN1306433C (zh) | 2002-12-16 | 2003-12-15 | 用于提供快速远地寄存器访问的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7484075B2 (zh) |
CN (1) | CN1306433C (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128475A1 (en) * | 2002-12-31 | 2004-07-01 | Gad Sheaffer | Widely accessible processor register file and method for use |
US7669041B2 (en) * | 2006-10-06 | 2010-02-23 | Stream Processors, Inc. | Instruction-parallel processor with zero-performance-overhead operand copy |
US8122078B2 (en) * | 2006-10-06 | 2012-02-21 | Calos Fund, LLC | Processor with enhanced combined-arithmetic capability |
CN101529377B (zh) * | 2006-10-27 | 2016-09-07 | 英特尔公司 | 处理器中多线程之间通信的方法、装置和系统 |
CN101553780A (zh) * | 2006-12-11 | 2009-10-07 | Nxp股份有限公司 | Vliw处理器的虚拟功能单元 |
US7711927B2 (en) * | 2007-03-14 | 2010-05-04 | Qualcomm Incorporated | System, method and software to preload instructions from an instruction set other than one currently executing |
WO2010026485A1 (en) | 2008-09-08 | 2010-03-11 | Bridgeco Ag | Very long instruction word architecture with multiple data queues |
US9798548B2 (en) | 2011-12-21 | 2017-10-24 | Nvidia Corporation | Methods and apparatus for scheduling instructions using pre-decode data |
US20130166882A1 (en) * | 2011-12-22 | 2013-06-27 | Jack Hilaire Choquette | Methods and apparatus for scheduling instructions without instruction decode |
US11561792B2 (en) | 2015-06-08 | 2023-01-24 | Qualcomm Incorporated | System, apparatus, and method for a transient load instruction within a VLIW operation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5592679A (en) * | 1994-11-14 | 1997-01-07 | Sun Microsystems, Inc. | Apparatus and method for distributed control in a processor architecture |
US6356994B1 (en) * | 1998-07-09 | 2002-03-12 | Bops, Incorporated | Methods and apparatus for instruction addressing in indirect VLIW processors |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5233696A (en) * | 1989-08-28 | 1993-08-03 | Nec Corporation | Microprocessor having precoder unit and main decoder unit operating in pipeline processing manner |
US5809273A (en) * | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US6167503A (en) * | 1995-10-06 | 2000-12-26 | Compaq Computer Corporation | Register and instruction controller for superscalar processor |
US5857083A (en) * | 1996-06-07 | 1999-01-05 | Yamaha Corporation | Bus interfacing device for interfacing a secondary peripheral bus with a system having a host CPU and a primary peripheral bus |
US5991863A (en) * | 1996-08-30 | 1999-11-23 | Texas Instruments Incorporated | Single carry/borrow propagate adder/decrementer for generating register stack addresses in a microprocessor |
JP3599499B2 (ja) * | 1996-10-25 | 2004-12-08 | 株式会社リコー | 中央処理装置 |
US6122729A (en) * | 1997-05-13 | 2000-09-19 | Advanced Micro Devices, Inc. | Prefetch buffer which stores a pointer indicating an initial predecode position |
US6260134B1 (en) * | 1998-11-02 | 2001-07-10 | Advanced Micro Devices, Inc. | Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte |
US6615338B1 (en) * | 1998-12-03 | 2003-09-02 | Sun Microsystems, Inc. | Clustered architecture in a VLIW processor |
US6282585B1 (en) * | 1999-03-22 | 2001-08-28 | Agere Systems Guardian Corp. | Cooperative interconnection for reducing port pressure in clustered microprocessors |
US6766440B1 (en) * | 2000-02-18 | 2004-07-20 | Texas Instruments Incorporated | Microprocessor with conditional cross path stall to minimize CPU cycle time length |
US7003649B2 (en) * | 2002-03-08 | 2006-02-21 | Hitachi, Ltd. | Control forwarding in a pipeline digital processor |
-
2002
- 2002-12-16 US US10/320,150 patent/US7484075B2/en not_active Expired - Fee Related
-
2003
- 2003-12-15 CN CNB2003101212521A patent/CN1306433C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5592679A (en) * | 1994-11-14 | 1997-01-07 | Sun Microsystems, Inc. | Apparatus and method for distributed control in a processor architecture |
US6356994B1 (en) * | 1998-07-09 | 2002-03-12 | Bops, Incorporated | Methods and apparatus for instruction addressing in indirect VLIW processors |
Also Published As
Publication number | Publication date |
---|---|
CN1534505A (zh) | 2004-10-06 |
US20040117597A1 (en) | 2004-06-17 |
US7484075B2 (en) | 2009-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7496732B2 (en) | Method and apparatus for results speculation under run-ahead execution | |
US7363467B2 (en) | Dependence-chain processing using trace descriptors having dependency descriptors | |
KR101636602B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
CN108376097B (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
CN100461094C (zh) | 一种针对流处理器的指令控制方法 | |
KR101638225B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 | |
Byrd et al. | Multithreaded processor architectures | |
JP4987882B2 (ja) | スレッドに最適化されたマルチプロセッサアーキテクチャ | |
US7020763B2 (en) | Computer processing architecture having a scalable number of processing paths and pipelines | |
US6301705B1 (en) | System and method for deferring exceptions generated during speculative execution | |
US20010042189A1 (en) | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution | |
US20010042188A1 (en) | Multiple-thread processor for threaded software applications | |
EP1139215B1 (en) | Method and apparatus for releasing functional units in a multithreaded VLIW processor | |
JPH11249897A (ja) | Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置 | |
WO2003003196A2 (en) | A multithreaded processor capable of implicit multithreaded execution of a single-thread program | |
GB2495361A (en) | Managing a multi-level cache hierarchy for architectural registers in a multithreaded processor | |
CN1306433C (zh) | 用于提供快速远地寄存器访问的方法和设备 | |
WO1999019792A1 (en) | Efficient processing of clustered branch instructions | |
US7779240B2 (en) | System and method for reducing power consumption in a data processor having a clustered architecture | |
Knobe et al. | Data optimization: Minimizing residual interprocessor data motion on simd machines | |
US20220113966A1 (en) | Variable latency instructions | |
US6516462B1 (en) | Cache miss saving for speculation load operation | |
US5740416A (en) | Branch processing unit with a far target cache accessed by indirection from the target cache | |
Li et al. | Compiler techniques for concurrent multithreading with hardware speculation support | |
Ro et al. | Design and evaluation of a hierarchical decoupled architecture |
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: 20070321 Termination date: 20100115 |