CN1833222A - 采用ilp和tlp的可重构处理器阵列 - Google Patents
采用ilp和tlp的可重构处理器阵列 Download PDFInfo
- Publication number
- CN1833222A CN1833222A CNA2004800099948A CN200480009994A CN1833222A CN 1833222 A CN1833222 A CN 1833222A CN A2004800099948 A CNA2004800099948 A CN A2004800099948A CN 200480009994 A CN200480009994 A CN 200480009994A CN 1833222 A CN1833222 A CN 1833222A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- group
- unit
- disposal system
- register file
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 190
- 238000004891 communication Methods 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 13
- 238000004886 process control Methods 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 230000003442 weekly effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 5
- 101150087801 PE23 gene Proteins 0.000 description 4
- 101150032799 PE15 gene Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 101100136063 Mycobacterium tuberculosis (strain ATCC 25618 / H37Rv) PE11 gene Proteins 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 240000000233 Melia azedarach Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 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 or look ahead
-
- 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/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 or 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
-
- 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/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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or 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 or 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Communication Control (AREA)
Abstract
根据本发明的一种处理系统包括多个处理单元,并且所述多个处理单元包括第一组处理单元和至少第二组处理单元。第一组的每一处理单元包括寄存器文件和至少一个指令发射槽,并且指令发射槽包括至少一个功能单元。该类型的处理单元专用于执行不具有或具有非常低程度的指令级并行的线程。第二组的每一处理单元包括寄存器文件和多个指令发射槽,并且每一指令发射槽包括至少一个功能单元。该类型的处理单元专用于执行具有很大程度的指令级并行的线程。设置所有的处理单元以执行在公共线程控制下的指令。所述处理系统进一步包括被设置用于处理单元之间通信的通信装置。这样,处理系统能够在应用程序中采用线程级并行和指令级并行,或采用它们的组合。
Description
技术领域
本发明的技术领域是处理器体系结构,尤其涉及多处理器系统、用于编程所述处理器的方法以及用于实现所述方法的编译器。
背景技术
超长指令字(VLIW)处理器能够在一个时钟周期内执行多个操作。通常,编译器把程序指令简化成为处理器能够同时执行的基本操作。将被同时执行的这些操作被组合成为超长指令字(VLIW)。VLIW处理器的指令译码器译码VLIW中包含的基本操作并且发射每个给相应的处理器数据通路单元。作为选择,VLIW处理器没有指令译码器,并且VLIW中包含的每一操作被直接发射给相应的处理器数据通路单元。随后,这些处理器数据通路单元并行执行VLIW中的操作。正如能够在例如媒体处理中所发现的那样,这种也被称为指令级并行(ILP)的并行性特别适合于涉及大量相同计算的应用程序。包括更多面向控制的操作例如用于伺服控制目的那样的其他应用程序不适合于编程为VLIW程序。然而,通常这类程序能够简化为彼此之间能够独立执行的多个程序线程。所述线程的并行执行也称为线程级并行(TLP)。然而,VLIW处理器不适合于使用线程级并行来执行程序。采用后者类型的并行需要处理器数据通路单元的子集具有独立的控制流,也就是它们能够以彼此独立的顺序访问它们自己的程序,例如它们能够独立地执行条件转移。然而,VLIW处理器中的数据通路单元都以相同的顺序执行指令序列。因此VLIW处理器仅能够执行一个线程。
为控制VLIW处理器的数据流水线中的操作,通常使用两种不同的机制:数据固定(data-stationary)和时间固定。在数据固定编码的情况中,当作为处理器的指令集的一部分的每一指令遍历数据流水线时,其控制将在特定数据项上必须执行的整个操作序列。一旦从程序存储器获取并译码该指令时,处理器控制器硬件将确保在正确的机器周期中执行组合操作。在时间固定编码的情况中,作为处理器的指令集的一部分的每一指令控制将在单个机器周期中必须执行的整个操作集。这些操作可以应用到遍历数据流水线的若干不同的数据项。在该情况中,编程器或编译器的职责是建立并保持数据流水线。在机器代码程序中,所产生的流水线调度是完全可见的。在专用处理器中经常使用时间固定编码,因为它以较大代码尺寸的代价,节省了用于延迟在指令中存在的控制信息所必需的硬件开销。
发明内容
本发明的目的是提供一种在执行应用程序期间能够采用指令级并行和线程级并行或它们的组合的处理器。
为此目的,根据本发明的处理器包括多个处理单元,所述多个处理单元包括第一组处理单元和至少第二组处理单元;
其中第一组的每一处理单元包括寄存器文件和至少一个指令发射槽(issue slot),该指令发射槽包括至少一个功能单元,并且设置处理单元以执行在公共线程控制下的指令;
其中第二组的每一处理单元包括寄存器文件和多个指令发射槽,每一指令发射槽包括至少一个功能单元,并且设置处理单元以执行在公共线程控制下的指令;
并且其中第二组处理单元中指令发射槽的数量基本上高于第一组处理单元中指令发射槽的数量;
以及其中所述处理系统进一步包括被设置以在所述多个处理单元的处理单元之间进行通信的处理器间通信装置。计算装置可以包括加法器,乘法器,用于执行诸如AND、OR、XOR等之类的逻辑操作、查找表操作、存储器访问等的装置。
根据本发明的处理器允许在一个应用程序中采用指令级并行和线程级并行,以及它们的组合。在程序具有很大程度的指令级并行的情况中,可以将所述应用程序映射到第二组处理单元的一个或多个处理单元上。这些处理单元具有允许在一个线程控制下并行执行多个指令的多个发射槽,并且因此适合于采用指令级并行。如果程序具有很大程度的线程级并行,但具有低程度的指令级并行,那么可以将所述应用程序映射到第一组处理单元的处理单元上。这些处理单元具有允许在一个线程控制下主要顺序执行指令序列的相对较少量的发射槽。通过将每一线程映射到所述处理单元,若干控制线程能够并行存在。在程序具有很大程度的线程级并行和一个或多个线程具有很大程度的指令级并行的情况中,可以将应用程序映射到第一组处理单元和第二组的处理单元的组合上。第一组处理单元允许执行由主要为顺序的指令序列组成的线程,而第二组处理单元允许执行具有能够并行执行的指令的线程。结果,根据必须执行的应用程序的类型,按照本发明的处理器能够采用指令级并行和线程级并行。
Colwell等人在Proc.of Supercomputing 1990,p.p.910-919中的“Architecture and Implementation of a VLIW Supercomputer”描述了一种VLIW处理器,该处理器既能够被配置为两个14-运算-宽度(14-operations-wide)处理器,其中每一14-运算-宽度处理器单独受控于相应的控制器,也能够被配置为受控于一个控制器的一个28-运算-宽度处理器。EP0962856公开了一种超长指令字处理器,其包括多个程序计数器,并且选择性地操作于第一或第二模式。在第一模式中,数据处理器执行单个指令流。在第二模式中,数据处理器同时执行两个独立的程序指令流。然而,所述文献既没有公开具有并行执行线程的多个处理单元的处理器阵列的原理,所述线程从不具有指令级并行变化到具有很大程度的指令级并行,也没有公开如何能够实现所述处理器阵列。
本发明一个实施例的特征在于:以网络形式设置所述多个处理单元的处理单元,其中设置第一组处理单元以经由处理器间通信装置仅与第二组处理单元进行直接通信;并且其中设置第二组处理单元以经由处理器间通信装置仅与第一组处理单元进行直接通信。在实际的应用程序中,具有很大程度指令级并行的功能与具有低程度指令级并行的功能将被交错。通过选择第一类型和第二类型的处理单元同样被交错的一种体系结构,允许将应用程序有效地映射到处理系统上。
本发明一个实施例的特征在于:处理器间通信装置包括数据驱动同步通信装置。通过使用数据驱动同步机制来管理处理单元之间的通信,能够保证在通信期间无数据丢失。
本发明一个实施例的特征在于:设置所述多个处理单元的处理单元以被处理器间通信装置所旁路。该实施例的优点在于:它增加了将应用程序映射到处理系统的灵活性。根据应用程序的指令级并行以及任务级并行的程度,在执行所述应用程序期间可以不使用一个或多个处理单元。
在独立权利要求中描述了本发明另外的实施例。根据本发明,同样要求了以下内容的权利,即一种用于对所述处理系统编程的方法,以及一种编译器程序产品,当所述编译器程序产品在计算机系统上运行时,其被设置为执行所述用于编程处理系统的方法的所有步骤。
附图说明
图1示出了根据本发明的处理系统的示意图。
图2更详细地示出了第二组处理单元的处理单元的实例。
图3更详细地示出了第一组处理单元的处理单元的实例。
图4更详细地示出了处理单元之间的数据通路连接的实例。
图5示出了要由根据本发明的处理系统执行的应用程序的应用程序图(application graph)。
具体实施方式
图1示意性示出了根据本发明的处理系统。该处理系统包括多个处理单元PE1-PE23,其具有第一组处理单元PE1-PE15和第二组处理单元PE17-PE23。所述处理单元可以经由数据通路连接DPC来交换数据。在图1所示的优选实施例中,设置处理单元使得在第一组的两个处理单元之间存在第二组的一个处理单元,以及反之亦然,并且数据通路连接提供相邻处理单元之间的数据交换。非相邻处理单元可以经由一连串相互邻近的处理单元来传递数据以进行数据交换。作为选择或者另外,处理器系统可以包括跨越多个处理单元的子集的一个或多个全局总线,或任一对处理单元之间的点对点连接。作为选择,处理系统可以包括或多或少的处理单元,或两个以上不同组的处理单元,从而在不同组中的处理单元包括不同数量的发射槽,所以支持每一组的指令级并行的不同级别。
图2更详细地示出了第二组处理单元PE17-PE23的处理单元的实例。第二组处理单元的每一处理单元包括两个或更多发射槽(IS)以及一个或多个寄存器文件(RF),每一发射槽包括一个或多个功能单元。图2中的处理单元包括五个发射槽IS1-IS5;以及六个功能单元:两个算术逻辑单元(ALU),两个累积乘法单元(MAC),一个专用单元(ASU),以及一个加载/存储单元(LD/ST)。处理单元也包括五个寄存器文件RF1-RF5。发射槽S1包括两个功能单元:一个ALU和一个MAC。公共发射槽中的功能单元共享来自寄存器文件的读端口和到互连网IN的写端口。在可选实施例中,能够在寄存器文件和操作发射槽之间使用第二互连网。发射槽中的功能单元可以使用与所述发射槽相关的至少一个寄存器文件。在图2中,存在与每一发射槽相关的一个寄存器文件。作为选择,一个以上的发射槽能够被连接到单个寄存器文件。还有另一种可能的情况是:多个独立的寄存器文件被连接到单个发射槽,例如,一个不同的RF用于发射槽中功能单元的每一单独的读端口。优选地,根据相应处理单元中的加载/存储单元(LD/ST)来驱动不同处理单元之间的数据通路连接DPC,以便处理单元之间的通信能够作为存储器事务而进行管理。优选地,与连接所述处理单元到其他处理单元的不同数据通路连接(DPC)相关联地使用不同的加载/存储单元(LD/ST)。这样,如果所述处理单元直接连接到例如四个其它的处理单元,那么四个不同的加载/存储单元优选地用于与这些处理单元的通信,这在图2中未示出。另外,另外的加载/存储单元能够被添加到处理单元的数据通路,并且与数据存储器(例如RAM)相关联,所述数据存储器既可以是所述处理单元的局部存储器,也可以是系统级存储器,这在图2中未示出。通过可以使用指令存储器IM的控制器CT来控制功能单元。程序计数器PC确定指令存储器IM中的当前指令地址。由所述当前地址所指向的指令首先被载入到控制器中的内部指令寄存器IR。然后控制器CT控制数据通路单元(功能单元、寄存器文件、互连网)以执行由指令寄存器IR中存储的指令所规定的操作。为此,控制器经由操作码总线OB而与功能单元通信,例如向功能单元提供操作码;控制器经由地址总线AB与寄存器文件通信,例如为读写寄存器文件中的寄存器而提供地址;以及控制器经由路由总线RB而与互连网IN通信,例如向互连多路复用器提供路由信息。第二组处理单元包括多个发射槽,该发射槽允许在一个线程内采用指令级并行。例如,具有固有指令级并行的应用功能诸如快速傅里叶变换、离散余弦变换和有限脉冲响应滤波器能够被映射到第二组处理单元上。
图3更详细地示出了第一组处理单元PE1-PE15的处理单元的实例。与第二组处理单元的处理单元相比,第一组处理单元的处理单元包括相对较少数量的发射槽。第一组处理单元进一步包括一个或多个寄存器文件和一个控制器。所述发射槽包括一个或多个功能单元,例如算术逻辑单元、累积乘法单元或专用单元。图3中的处理单元包括两个发射槽IS6和IS7,以及两个寄存器文件RF6和RF7。发射槽IS6包括两个功能单元:ALU和MAC。公共发射槽中的功能单元共享来自寄存器文件的读端口和到互连网IN的写端口。发射槽IS7包括加载/存储单元(LD/ST),其驱动连接所述处理单元与其它处理单元的数据通路连接(DPC)。优选地,与直接连接所述处理单元到其它处理单元的数据通路连接(DPC)相关联地使用不同的加载/存储单元(LD/ST)。这样,如果所述处理单元直接连接到例如四个其它的处理单元,那么四个不同的加载/存储单元优选地用于与这些处理单元的通信,这在图3中未示出。另外,另外的加载/存储(LD/ST)单元能够被添加到处理单元的数据通路,并且与数据存储器(例如RAM)相关联,所述数据存储器既可以是所述处理单元的局部存储器,也可以是系统级存储器,这在图3中未示出。在可选的实施例中,能够在寄存器文件和操作发射槽之间使用第二互连网。发射槽中的功能单元可以使用与所述发射槽相关联的至少一个寄存器文件。在图3中,存在与发射槽IS6相关联的一个寄存器文件,以及与发射槽IS7相关联的另一寄存器文件。作为选择,独立的寄存器文件被连接到发射槽,例如一个不同的RF用于发射槽中功能单元的每一单独的读端口。通过可以使用指令存储器IM的控制器CT来控制功能单元。程序计数器PC确定指令存储器IM中的当前指令地址。由所述当前地址所指向的指令首先被载入到控制器中的内部指令寄存器IR。然后控制器CT控制数据通路单元(功能单元、寄存器文件、互连网)以执行由指令寄存器IR中存储的指令所规定的操作。为此,控制器经由操作码总线OB而与功能单元通信,例如向功能单元提供操作码;控制器经由地址总线AB与寄存器文件通信,例如为读写寄存器文件中的寄存器而提供地址;以及控制器经由路由总线RB而与互连网IN通信,例如向互连多路复用器提供路由信息。第一组处理单元具有相对较低数量的发射槽,并且因此适合于计算内在顺序的功能,例如霍夫曼编码。
图4更详细地示出了处理单元之间的数据通路连接DPC的实例。在优选实施例中,数据通路连接使用数据驱动同步机制,以便防止在处理单元之间通信期间丢失数据。图4所示的处理单元PE2和PE4之间的数据通路连接包括两组(blocking)先进先出(FIFO)缓冲器BF。该FIFO缓冲器BF受控于控制信号hold_w和hold_r。如果处理单元PE2或PE4试图向满的FIFO缓冲器BF写数据,那么启动信号hold_w,暂停整个处理单元直到另一处理单元从该FIFO缓冲器读取至少一个数据单元,释放在该FIFO缓冲器中的存储空间。在那种情况下,hold_w信号被无效。只要FIFO缓冲器为满,则通过使用hold_w信号,时钟选通机制就能够用于暂停处理单元向满的FIFO缓冲器写数据。如果处理单元PE2或PE4试图从空的FIFO缓冲器中读取数值,那么启动hold_r信号,暂停整个处理单元直到另一处理单元向FIFO缓冲器写入至少一个数据单元。在该时刻,hold_r信号被无效,并且被暂停的处理单元能够再一次启动从所述FIFO缓冲器中读取数据。只要FIFO缓冲器为空,则通过使用hold_r信号,时钟选通机制就能够用于暂停处理单元从空的FIFO缓冲器中读取数据。
在优选实施例中,两组中的处理单元是VLIW处理器,其中第二组处理单元是宽VLIW处理器,也就是具有许多发射槽的VLIW处理器,同时第一组处理单元是窄VLIW处理器,也就是具有小数量发射槽的VLIW处理器。在可选的实施例中,第二组处理单元是具有许多发射槽的宽VLIW处理器,并且第一组处理单元是单个发射槽精简指令集计算机(RISC)处理器。具有许多发射槽的宽VLIW处理器允许在该处理器上运行的线程中采用指令级并行,同时能够设计单个发射槽RISC处理器或具有少数发射槽的窄VLIW处理器以有效地顺序执行指令序列。实际上,应用程序通常包括能够并行执行的一系列线程,其中一些线程在指令级并行方面非常差,而一些线程内在地具有很大程度的指令级并行。在编译所述应用程序期间,分析所述应用程序并识别能够并行执行的不同线程。而且,同样确定线程内指令级并行的程度。如下能够将该应用程序映射到根据本发明的处理系统。具有很大程度的指令级并行的线程被映射到宽VILW处理器,同时在指令级并行方面非常差或根本不具有指令级并行的线程被映射到单个发射槽RISC处理器或窄VLIW处理器。如图1所示,不同线程之间的通信被映射到数据通路连接DPC。结果,允许有效地执行应用程序:并行执行多个线程,而能够同时采用线程内的指令级并行。因此,根据本发明的处理系统能够采用应用程序中存在的指令级并行和线程级并行。另外,本发明具有以下优点,即允许线程的计算特征与该线程所映射到的处理单元的计算特征之间的适当匹配。这样,类似于霍夫曼译码那样的内在顺序的功能没有被映射到宽VILW处理器,从而浪费了由于缺少指令级并行而未使用的体系结构资源,但其被代替地映射到适合其计算模式的小RISC处理器,所述宽VLIW处理器保持对其它功能可用。
图5示出了必须由图1所示的处理系统执行的应用程序的应用程序图。参考图5,所述应用程序包括五个线程TA、TB、TC、TD和TE。这五个线程能够并行执行。线程TA、TB、TC和TE具有很大程度的指令级并行,而线程TD不具有指令级并行。所述线程经由数据流DS来交换数据,并且这些数据流由数据缓冲器DB缓冲。当将所述应用程序映射到处理系统时,线程TA、TB、TC和TE的每一个分别被映射到处理单元PE17-PE23之一,并且线程TD被映射到处理单元PE1-PE15之一。一种可选的方案是将线程TA映射到处理单元PE17,将线程TB映射到处理单元PE19,将线程TC映射到处理单元PE21,将线程TD映射到处理单元PE15,以及将线程TE映射到处理单元PE23。在该情况中,线程TC、TD和TE被映射到经由数据通路连接DPC直接连接的处理单元上,也就是处理单元PE21直接与处理单元PE15通信,并且处理单元PE15直接与处理单元PE23通信。对于线程TA和TB来说,情况不是这样的,因为处理单元PE17不得不与分别经由PE7和PE9而与其间接耦合的处理单元PE19和PE21通信。同样,处理单元PE19不得不与处理单元PE23通信,处理单元PE23经由PE11而间接耦合到PE19。在这些情况中,能够旁路处理单元PE7、PE9和PE11,以便允许处理单元之间的直接通信。如图4所示,数据流DS被映射到数据通路连接DPC,并且数据缓冲器DB被映射到FIFO缓冲器BF。在不同的实施例中,应用程序图可以包括或多或少的线程,以及在具有很大程度指令级并行的线程与具有低程度指令级并行的线程之间的不同比率。
在优选实施例中,如图1所示,第一和第二组的处理单元相交错,也就是设置第一组的处理单元仅与第二组的处理单元直接通信,并且设置第二组的处理单元仅与第一组的处理单元直接通信。结果,决不存在用于不同处理单元上执行的两个线程之间通信的一个以上被旁路的处理单元的损失。
能够采用的指令级并行和线程级并行的程度在从一个应用程序到另一个应用程序时将改变,在从其中每一线程具有高程度指令级并行并且其具有低程度线程级并行的应用程序到其中每一线程不具有指令级并行且其具有很大程度线程级并行的应用程序时改变。通过对没有线程映射到其上的处理单元进行旁路,如图1所示处理系统的灵活性允许将整个范围的应用程序映射到处理系统。
参考图2,互连网IN是一种完全连接的网络,也就是所有的功能单元被耦合到所有的寄存器文件RF1、RF2、RF3、RF4和RF5。作为选择,互连网IN可以是部分连接的网络,也就是不是每一功能单元都被耦合到所有的寄存器文件。如果存在大量的功能单元,那么完全连接的网络在硅面积和功耗方面的开销将是相当大的。在设计VLIW处理器期间,根据处理系统必须执行的应用程序的范围,决定功能单元被耦合到寄存器文件部分的程度。
再一次参考图2,所述处理单元包括分布式寄存器文件,也就是寄存器文件RF1、RF2、RF3、RF4和RF5。作为选择,处理单元可以包括单个寄存器文件以用于所有的功能单元。在VLIW处理器的功能单元的数量相对较小的情况下,单个寄存器文件的开销也相对较小。
在可选实施例中,第二组的处理单元包括超标量处理器。当在VLIW处理器的情况中,超标量处理器也包括能够并行执行多个操作的多个执行单元。然而,处理器硬件本身确定在运行时间上存在哪些操作相关性,并且基于这些相关性来确定并行执行哪些操作,同时确保将不会出现资源冲突。在本部分中所描述的用于VLIW处理器的实施例的原理也适用于超标量处理器。通常,与超标量处理器相比,VLIW处理器可以具有更多的执行单元。与超标量处理器相比,VLIW处理器的硬件的复杂度更小,这样产生较好的可伸缩的体系结构。尤其是执行单元的数量和每一执行单元的复杂度将确定使用本发明所能够达到的益处总量。
在根据本发明的处理系统的其它实施例中,处理系统可以包括与图1所示处理系统相比较或多或少的处理单元。作为选择,可以以不同方式来设置处理单元,例如以一维网络的方式,或不以交错的方式,也就是在第一组的两个处理单元之间定位第二组的一个以上的处理单元,以及反之亦然。处理系统的体系结构可以取决于希望在所述处理系统上执行的应用程序的范围,例如应用程序的范围相对于指令级并行的量所具有的线程级并行的量。
应该指出,上述实施例是说明而非限制本发明,并且本领域技术人员将能够设计许多可选实施例而不脱离所附权利要求书的范围。在权利要求书中,括弧之间放置的参考符号不应被解释为限制权利要求。词语“包括”不排除除了权利要求中所列单元或步骤之外的单元或步骤的存在。位于单元之前的词语“一个”或“一种”不排除多个所述单元的存在。在列举了若干装置的设备权利要求中,能够通过同一硬件项来实现这些装置中的若干。仅仅在相互不同的独立权利要求中所叙述的确定的措施的事实并不表示这些措施的组合不能被有利地使用。
Claims (14)
1.一种包括多个处理单元的处理系统,所述多个处理单元包括第一组处理单元和至少第二组处理单元,
其中第一组的每一处理单元包括寄存器文件和至少一个指令发射槽,该指令发射槽包括至少一个功能单元,并且设置处理单元以执行在公共线程控制下的指令,
其中第二组的每一处理单元包括寄存器文件和多个指令发射槽,每一指令发射槽包括至少一个功能单元,并且设置处理单元以执行在公共线程控制下的指令,
并且其中第二组处理单元中指令发射槽的数量基本上高于第一组处理单元中指令发射槽的数量,
以及其中所述处理系统进一步包括被设置以在所述多个处理单元的处理单元之间进行通信的处理器间通信装置。
2.根据权利要求1的处理系统,其特征在于:以网络形式设置所述多个处理单元的处理单元,其中设置第一组的处理单元以经由处理器间通信装置仅与第二组的处理单元进行直接通信,并且其中设置第二组的处理单元以经由处理器间通信装置仅与第一组的处理单元进行直接通信。
3.根据权利要求1的处理系统,其特征在于:在第二组处理单元的处理单元中组织的多个发射槽共享用于控制指令执行的至少一个公共控制信号。
4.根据权利要求1的处理系统,其特征在于:设置第一组处理单元的处理单元以每周期仅发射一个操作。
5.根据权利要求1的处理系统,其特征在于:第二组处理单元的处理单元是超长指令字处理器,其中寄存器文件通过相应的功能单元对于所述处理单元是可访问的,并且其中所述处理单元进一步包括用于耦合寄存器文件和相应功能单元的局部通信网络。
6.根据权利要求1的处理系统,其特征在于:第一组处理单元的处理单元是超长指令字处理器,其中寄存器文件通过相应的功能单元对于所述处理单元是可访问的,并且其中所述处理单元进一步包括用于耦合寄存器文件和相应功能单元的局部通信网络。
7.根据权利要求5或6的处理系统,其特征在于:对应于处理单元的寄存器文件是一种分布式寄存器文件。
8.根据权利要求5或6的处理系统,其特征在于:对应于处理单元的局部通信网络是一种部分连接的通信网络。
9.根据权利要求1的处理系统,其特征在于:处理器间通信装置包括数据驱动同步通信装置。
10.根据权利要求9的处理系统,其特征在于:数据驱动同步通信装置包括一组先进先出缓冲器。
11.根据权利要求1的处理系统,其特征在于:设置所述多个处理单元的处理单元以被处理器间通信装置所旁路。
12.一种用于对处理系统编程的方法,其中所述处理系统包括多个处理单元,所述多个处理单元包括第一组处理单元和至少第二组处理单元,
其中第一组的每一处理单元包括寄存器文件和至少一个指令发射槽,该指令发射槽包括至少一个功能单元,并且设置处理单元以执行在公共线程控制下的指令,
其中第二组的每一处理单元包括寄存器文件和多个指令发射槽,每一指令发射槽包括至少一个功能单元,并且设置处理单元以执行在公共线程控制下的指令,
并且其中第二组处理单元中指令发射槽的数量基本上高于第一组处理单元中指令发射槽的数量,
并且其中所述处理系统进一步包括被设置以在多个处理单元的处理单元之间进行通信的处理器间通信装置,
以及其中对所述处理系统编程的方法包括以下步骤:
-识别应用程序图中的第一组功能,其中每一功能内在地包含主要顺序地执行的指令,
-识别应用程序图中的第二组功能,其中每一功能内在地包含指令级并行,
-将第一组功能映射到第一组处理单元的处理单元,
-将第二组功能映射到第二组处理单元的处理单元。
13.根据权利要求12的用于对处理系统编程的方法,其特征在于:所述方法进一步包括以下步骤:
-通过处理器间通信装置来旁路所述多个处理单元的处理单元。
14.一种编译器程序产品,当所述编译器程序产品在计算机系统上运行时,其被设置以实施根据权利要求12或13的用于对处理系统编程的方法的所有步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03101016 | 2003-04-15 | ||
EP03101016.8 | 2003-04-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1833222A true CN1833222A (zh) | 2006-09-13 |
Family
ID=33185922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800099948A Pending CN1833222A (zh) | 2003-04-15 | 2004-04-08 | 采用ilp和tlp的可重构处理器阵列 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20060212678A1 (zh) |
EP (1) | EP1623318B1 (zh) |
JP (1) | JP4589305B2 (zh) |
KR (1) | KR20050123163A (zh) |
CN (1) | CN1833222A (zh) |
AT (1) | ATE459042T1 (zh) |
DE (1) | DE602004025691D1 (zh) |
WO (1) | WO2004092949A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646005A (zh) * | 2012-03-16 | 2014-03-19 | 三星电子株式会社 | 基于微核的可重构处理器、调度设备及其方法 |
CN106575220A (zh) * | 2014-08-29 | 2017-04-19 | 高通股份有限公司 | 多个经集群极长指令字处理核心 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2003283777A1 (en) * | 2002-12-30 | 2004-07-22 | Koninklijke Philips Electronics N.V. | Processing system |
US7620796B2 (en) * | 2006-01-13 | 2009-11-17 | Broadcom Corporation | System and method for acceleration of streams of dependent instructions within a microprocessor |
JP4784827B2 (ja) | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US8478967B2 (en) * | 2009-06-01 | 2013-07-02 | National Instruments Corporation | Automatically creating parallel iterative program code in a data flow program |
CN102207892B (zh) * | 2011-05-27 | 2013-03-27 | 清华大学 | 一种动态可重构处理器内子单元间进行同步的方法 |
KR102277439B1 (ko) | 2014-10-21 | 2021-07-14 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 동작 방법 |
US9830150B2 (en) * | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US10185568B2 (en) | 2016-04-22 | 2019-01-22 | Microsoft Technology Licensing, Llc | Annotation logic for dynamic instruction lookahead distance determination |
US10846091B2 (en) | 2019-02-26 | 2020-11-24 | Apple Inc. | Coprocessor with distributed register |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3623840B2 (ja) * | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
WO2001067234A2 (en) * | 2000-03-08 | 2001-09-13 | Sun Microsystems, Inc. | Vliw computer processing architecture having a scalable number of register files |
-
2004
- 2004-04-08 US US10/552,807 patent/US20060212678A1/en not_active Abandoned
- 2004-04-08 KR KR1020057019635A patent/KR20050123163A/ko not_active Application Discontinuation
- 2004-04-08 CN CNA2004800099948A patent/CN1833222A/zh active Pending
- 2004-04-08 WO PCT/IB2004/050410 patent/WO2004092949A2/en active Application Filing
- 2004-04-08 JP JP2006506823A patent/JP4589305B2/ja not_active Expired - Fee Related
- 2004-04-08 AT AT04726598T patent/ATE459042T1/de not_active IP Right Cessation
- 2004-04-08 DE DE602004025691T patent/DE602004025691D1/de not_active Expired - Lifetime
- 2004-04-08 EP EP04726598A patent/EP1623318B1/en not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646005A (zh) * | 2012-03-16 | 2014-03-19 | 三星电子株式会社 | 基于微核的可重构处理器、调度设备及其方法 |
US9632978B2 (en) | 2012-03-16 | 2017-04-25 | Samsung Electronics Co., Ltd. | Reconfigurable processor based on mini-cores, schedule apparatus, and method thereof |
CN106575220A (zh) * | 2014-08-29 | 2017-04-19 | 高通股份有限公司 | 多个经集群极长指令字处理核心 |
Also Published As
Publication number | Publication date |
---|---|
KR20050123163A (ko) | 2005-12-29 |
DE602004025691D1 (de) | 2010-04-08 |
EP1623318B1 (en) | 2010-02-24 |
ATE459042T1 (de) | 2010-03-15 |
EP1623318A2 (en) | 2006-02-08 |
JP2006523883A (ja) | 2006-10-19 |
JP4589305B2 (ja) | 2010-12-01 |
WO2004092949A2 (en) | 2004-10-28 |
WO2004092949A3 (en) | 2006-03-30 |
US20060212678A1 (en) | 2006-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1021144C (zh) | 带有指令标识装置的数据处理系统 | |
CN1294485C (zh) | 相关性链处理器 | |
US6212628B1 (en) | Mesh connected computer | |
CN1045024C (zh) | 在超标量处理机系统中提高指令调度效率的方法 | |
US6173388B1 (en) | Directly accessing local memories of array processors for improved real-time corner turning processing | |
Breß et al. | GPU-accelerated database systems: Survey and open challenges | |
RU2427895C2 (ru) | Оптимизированная для потоков многопроцессорная архитектура | |
KR101966712B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
US8972699B2 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
CN1161689C (zh) | 在超标量处理器中处理装入指令的方法和电路 | |
CN1042863C (zh) | 用于在超标量处理机系统中索引中间存储器缓冲区的指定的方法和系统 | |
CN104303142A (zh) | 使用索引阵列和有限状态机的分散 | |
CN103562866A (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
CN102750130A (zh) | 分配计数器以追踪寄存器映射的方法和系统 | |
CN103547993A (zh) | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 | |
CN101344842A (zh) | 多线程处理器及其多线程处理方法 | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
CN1833222A (zh) | 采用ilp和tlp的可重构处理器阵列 | |
US20080320240A1 (en) | Method and arrangements for memory access | |
CN101499020B (zh) | 具有动态工作管理能力的多处理器界面及其程序加载或卸载方法 | |
EP2466452B1 (en) | Register file and computing device using same | |
US8782378B2 (en) | Dynamic instruction splitting | |
US7107478B2 (en) | Data processing system having a Cartesian Controller | |
KR102170966B1 (ko) | 고성능 비순차 실행 코어의 리오더 버퍼 관리 장치 및 방법 | |
Jin et al. | Parallel functional disk array for high performance computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |