CN1829958A - 并行处理系统 - Google Patents

并行处理系统 Download PDF

Info

Publication number
CN1829958A
CN1829958A CNA2004800113220A CN200480011322A CN1829958A CN 1829958 A CN1829958 A CN 1829958A CN A2004800113220 A CNA2004800113220 A CN A2004800113220A CN 200480011322 A CN200480011322 A CN 200480011322A CN 1829958 A CN1829958 A CN 1829958A
Authority
CN
China
Prior art keywords
processor
functional unit
ctr
control device
programmable
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
Application number
CNA2004800113220A
Other languages
English (en)
Inventor
A·A·M·范维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1829958A publication Critical patent/CN1829958A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

本发明基于这样的概念:提供一个功能单元,该功能单元不仅能够执行简单的传递操作,还能够执行延迟的传递操作,从而引入想要的等待时间量。因此,提供了一种并行处理器,其中所述处理器包括:一个控制装置CTR,用于控制所述处理器中的处理;多个传递单元PU,适于以可编程的等待时间执行可编程数目的传递操作;以及一个通信网络CN,用于耦合该控制装置CTR和所述多个传递单元PU。

Description

并行处理系统
技术领域
本发明涉及一种并行处理系统、一种并行处理方法以及一种编译器程序产品。
背景技术
可编程处理器基于编码在指令中的程序信息将输入数据转换成输出数据。所得到的输出数据的数值取决于任一给定时刻的输入数据、程序信息以及处理器的瞬时状态。在传统处理器中,该状态由存储在各寄存器中的临时数据数值构成。
对于高性能计算的需求日益增加,这已经导致引入了几种解决方案,其中已经在处理器体系结构中引入了某种形式的并发处理(即并行性)。已经采用了两个主要概念:多线程概念,其中并行地执行一个程序的几个线程;以及超长指令字(VLIW)概念。在VLIW处理器的情况下,将多个指令打包成一个长指令,即所谓的VLIW指令。VLIW处理器使用多个独立的执行单元或者功能单元来并行地执行所述多个指令。该处理器允许利用指令级别的并行性,从而同时执行超过一个指令。由于这种形式的并发处理,处理器的性能得到增强。为了在一个VLIW处理器上运行软件程序,必须将该软件程序转换成一个VLIW指令集。所述编译器试图通过优化并行性来最小化执行该程序所需的时间。在能够并行地执行被分配给单个VLIW指令的各指令的约束条件下以及在数据相关性的约束条件下,该编译器将所述指令组合成一个VLIW指令。
为了控制处理器的数据流水线中的操作,通常在计算机体系结构中使用两个不同的机制:数据静态和时间静态编码,如在G.Goossens、J.Van Praet、D.Lanneer、W.Geurts、A.Kifli、C.Liem和P.Paulin的“Embedded software in real-time signal processing systems:designtechnologies(实时信号处理系统中的嵌入式软件:设计技术)”(Proceedings of the IEEE,vol.85,no.3,1997年3月)中公开的那样。在数据静态编码的情况下,当一个特定数据项行经数据流水线时,作为处理器指令集的一部分的每一个指令控制一个必须对该特定数据项执行的完整操作序列。一旦从程序存储器中获取并解码了该指令,处理器控制器硬件将确保在正确的机器周期中执行各组成操作。在时间静态编码的情况下,作为处理器指令集的一部分的每一个指令控制一个完整的操作集,该操作集必须在单个机器周期中被执行。对各指令进行编码,使得它们包含在给定时刻令处理器执行其动作所必需的全部信息。所述这些操作可以被应用到行经该数据流水线的几个不同数据项。在这种情况下,由编程器或编译器负责建立和维护该数据流水线。所得到的流水线调度表在机器代码程序中是完全可见的。通常在应用特定的处理器中使用时间静态编码,因为这种编码方案节省了对存在于指令中的控制信息进行延迟所必需的硬件开销,其代价是更大的代码规模。
将各并行指令编码在一个VLIW指令中导致急剧减小了代码规模。而较大的代码规模无论在所需存储器尺寸还是所需存储器带宽方面都导致程序存储器成本的增加。
发明内容
因此,本发明的一个目的是减小用于并行处理器的代码规模。
该目的是通过根据权利要求1的并行处理系统、根据权利要求6的并行处理方法以及根据权利要求7的编译器程序产品实现的。
本发明基于这样的概念:提供一个功能单元,该功能单元不仅能够执行简单的传递操作,还能够执行延迟的传递操作以及引入想要的等待时间量。
因此,提供了一种并行处理器,其中所述处理器包括:一个控制装置CTR,用于控制所述处理器中的处理;多个传递单元PU,适于以可编程的等待时间执行可编程数目的传递操作;以及一个通信网络CN,用于耦合该控制装置CTR和所述多个传递单元PU。
根据本发明,实现了一种可配置的传递单元,从而可以减少用于执行传递操作的所封装的功能单元的数量,并进而减少所需的资源。此外,可以减少控制器开销和指令字。使用可编程传递单元增加了整个体系结构的灵活性。
根据本发明的一个方面,每一个所述传递单元PU包括第一功能单元PU。该第一功能单元能够提供对输入数据的可编程的延迟。
根据本发明的另一方面,每一个所述第一功能单元PU包括一个具有预定数目寄存器字段的寄存器和一个多路复用器MP,该多路复用器MP耦合到所述第一功能单元PU的输入端以接收输入数据,并且经由所述通信网络CN耦合到所述控制装置CTR以从所述控制装置CTR接收控制指令。所述多路复用器MP根据从所述控制装置CTR接收到的所述控制指令将进入的数据传递到其中一个寄存器字段。因此,所引入的延迟取决于所选择的寄存器字段,因为输入数据通过对应的寄存器字段所需的时间将取决于所选择的寄存器字段。
根据本发明的另一方面,每一个所述传递单元PU包括组合在一个发送槽(issue slot)中的多个功能单元L0、L1、L2,其中每个功能单元L0、L1、L2适于以预定的等待时间执行一个传递操作。输入数据将会根据由指令代码所指示的所需延迟或等待时间而被传递到功能单元L0、L1、L2的其中之一。
根据本发明的另一方面,所述处理器被实施为超长指令字处理器。
本发明的其它方面将在各从属权利要求中描述。
附图简述
下面将参照附图来描述本发明,其中:
图1示出了根据本发明的基本体系结构的示意性框图;
图2示出了根据本发明第一实施例的传递单元的示意性框图;
图3示出了根据本发明第二实施例的传递单元的示意性框图;
图4示出了第一代码段的数据流图;
图5示出了根据图4的第一代码段的调度表;
图6示出了根据图4的第一代码段的改进的调度表;
图7示出了第二代码段的数据流图;
图8示出了根据图7的第二代码段的调度表;
图9示出了根据图7的第二代码段的两个周期的调度表;
图10示出了基于根据图7的第二代码段的第三代码段的数据流图;
图11示出了根据图10的第三代码段的调度表;
图12示出了根据图10的第三代码段的另一个调度表;
图13示出了根据图10的第三代码段的另一个改进的调度表;
图14示出了第四代码段的数据流图;
图15示出了根据图14的第四代码段的调度表;
图16示出了根据图14的第四代码段的改进的调度表;
图17示出了基于根据图14的第四代码段的第五代码段的数据流图;
图18示出了示出了根据图17的第五代码段的调度表;以及
图19-22示出了用来说明具有多个等待时间的各传递操作的数据流图。
具体实施例描述
图1示出了根据本发明的基本体系结构的示意性框图。该体系结构包括一个程序存储器PM、一个控制装置CTR、一个存储器MEM、多个功能单元FU(只示出两个)、多个寄存器文件RF(只示出两个)、一个传递单元以及一个通信网络CN。该通信网络CN将寄存器文件RF、传递单元PU、功能单元FU、存储器MEM、和控制装置CTR彼此连接。控制器CTR还连接到程序存储器PM,以及从该程序存储器PM的一个地址中接收指令并将对应的指令转发到各功能单元FU和传递单元PU。传递单元PU具有一个数据输入端DI和一个数据输出端DO。功能单元FU可以是任意种类的功能单元,比如执行单元、算术逻辑单元(ALU)等等。存储器MEM用于存储可能被几个功能单元FU所需要的数据。寄存器文件RF可以被实现为单个中央寄存器或被实现为分布式寄存器。
虽然图1中只示出了单个传递单元PU,但是合并超过一个传递单元PU是可能的。
图2示出了根据本发明的第一实施例的传递单元的示意性框图。传递单元PU包括三个功能单元L0、L1、L2和一个多路复用器MP以及一个解码器DEC。此外,该传递单元PU具有一个数据输入端DI和一个数据输出端DO。该解码器DEC耦合到所有的功能单元L0、L1、L2,这些功能单元的输入侧耦合到数据输入端DI,同时它们的输出侧耦合到多路复用器MP。该多路复用器MP的输出端形成该数据输出端DO。所述三个功能单元被组合在一个发送槽中,其中每个单元支持一个不同的操作,即单元L0支持没有等待时间的传递操作,单元L1支持具有1个周期的等待时间的传递操作,而单元L2支持具有两个周期的等待时间的传递操作。功能单元L1和L2可以分别由2个和3个寄存器字段实现,其中各功能单元充当FIFO。根据从程序存储器PM或者控制器CTR接收的指令,解码器DEC激活功能单元L0、L1、L2的其中之一并且输入数据由所选择的单元使用,在功能单元L0的情况下,没有等待时间而直接在其输出端产生相同数值,在功能单元L1的情况下,在一个周期之后在其输出端产生相同数值,而在功能单元L2的情况下,在两个周期之后在其输出端产生相同数值,从而将等待时间引入到输入数据中。尽管所描述的传递单元具有三个功能单元,但是可以使用任何数目的功能单元。解码器DEC和多路复用器MP必须适配于该新的数目。
图3示出了根据本发明第二实施例的传递单元的示意性框图。该传递单元PU包括一个多路复用器MP和一个具有三个寄存器字段的寄存器。该传递单元PU具有一个数据输入端DI和一个数据输出端DO,并且还可以连接到程序存储器PM或者控制装置CTR。与根据第一实施例的传递单元不同,图3的传递单元现在被实施为单个功能资源或功能单元。该传递单元支持分别具有等待时间0、1和2的三个传递操作。通过引入例如具有寄存器字段的延迟线来内部实现所述等待时间。形成延迟线末端的元件或者寄存器字段代表该传递单元的数据输出端DO。在该传递单元内可能有三个不同的传递操作,即pass_L0、pass_L1和pass_L2。“pass_L0”操作直接对该最后一个元件或寄存器字段进行写入,从而没有引入等待时间。“pass_L1”操作对倒数第二个元件进行写入,从而引入1个周期的等待时间。“pass_L2”操作对倒数第三个元件进行写入,从而引入1个周期的等待时间。尽管所描述的传递单元具有三个传递操作,但是通过适配寄存器字段的数目以及相应地适配多路复用器可以使用任意数目的传递操作。
比起根据第一实施例的传递单元,根据第二实施例的传递单元更为简单并且在所需硬件方面更为有效,根据第一实施例的传递单元在所需面积方面更为昂贵。
图4示出了一个数据流图,其中虚线箭头是穿过该循环的各迭代的反馈箭头;当产生输出时,该输出在下一次迭代中被使用。该数据流图对应于下面的代码段。int a[1000],b[1000];int i0=0,i1=0;int sum=0;int out;for(int i=1000;i!=0;i--){
           sum+=a[i0]*b[i1];
           i0++;i1++;}out=sum;
其中引入了两个变量“a”和“b”。循环系数i0、i1以及变量“sum”被设置为0。变量“out”代表该操作的输出。定义了一个从1000开始并逐步递减的循环。“sum”的值等于以i0和i1为系数“a”和“b”相乘。然后递增i0、i1,并且再次执行该乘法,其中各次相乘的结果被加到先前的结果中,直到该循环已被执行1000次。总的相加结果被作为变量“out”输出。
如果在处理器中有足够的资源可用,则可以将循环体“sum+=a[i0]*b[i1]”和“i0++;i1++”(即递增)编码为单个指令,该单个指令被执行1000次。
图5显示了根据图4的第一代码段的调度表。其中“ld”代表加载操作,“+1”代表递增操作,“*”代表相乘操作,“+”代表相加操作。假设在处理器体系结构中至少有6个发送槽、资源或者功能单元,其中每一个都能够优选地并行执行操作(即可以被分开控制)。图中的叉表示在一个特定时隙内在其资源上执行这样的操作。因此可以看出,该循环的每次迭代需要花3个周期来执行。也可以看出,该调度表实际上只由操作填充了三分之一。
图6示出了根据图4的第一代码段的改进的调度表。通过应用一种称为循环折叠或者软件流水线操作的技术,可以获得一个更为有效的调度表。其主要思想是尽可能快地重复操作,即一旦资源或者功能单元上的时隙可用就进行操作。
编译器技术允许我们把源代码映射到处理器上。源代码典型地包含许多循环。使用称为循环折叠(也成为软件流水线操作)技术将循环映射到处理器上。理想地,在处理器上,这些循环被“折叠”成单个指令。这导致用于循环的某种初始化代码(前文)、循环体本身(单个指令)以及某种清除代码(后文)。所述前文和后文只执行一次,该循环体被重复执行。所得到的循环体只由一个指令构成。因此每次迭代只花费1个周期来执行。
图7示出第二代码段的不同的数据流图。该图对应于下面的代码段中的循环。int a[1000],b[1000];int i0=0,i1=0;for(int i=1000;i!=0;i--){
           int tmp=a[i0];
           b[i1]=(tmp<<1)+tmp;
           i0++;i1++;}
其中引入了新变量“tmp”。循环系数变量和对几个变量的初始化已被省略,因为它们与讨论无关。“asl”代表不对称的左移操作,“st”代表存储操作。变量b[i1]代表变量“tmp”和对tmp进行一个不对称的左移操作的结果(tmp<<1)的和。
图8示出了根据图7的第二代码段的调度表。其中的调度是直接明了的,并且导致一个每次迭代具有4个周期的循环。
图9示出了根据图7的第二代码段的两个周期的调度表。由于变量“tmp”的寿命(2个周期),该循环不能被折叠成少于2个周期。
图10示出了基于根据图7的第二代码段的第三代码段的数据流图。为了改进根据图7的调度表和代码段的性能,引入了一个新的操作。代替直接使用变量tmp,我们添加一个传递操作或者拷贝操作。从而在最终得到的经过循环折叠的调度表中已经没有了所述寿命问题。int a[1000],b[1000];int i0=0,i1=0;for(int i=1000;i!=0;i--){
           int tmp=a[i0];
           b[i1]=(tmp<<1)+pass(tmp);
           i0++;i1++;}
图11中示出了最终得到的调度表。应注意,该单指令循环被重复997次。剩余的3次迭代由前文和后文占据。因此,通过引入传递操作,可以改进循环中的性能。
然而,至此所述前文和后文主导经折叠的调度表的代码规模。在实践中,由于所述体系结构可能需要流水线式操作所以情况甚至可能会更糟;举例来说,一个“存储”操作可能花费2个周期来完成。这会轻易地导致各有8个指令的前文和后文。
图12示出了根据图10的第三代码段的另一个调度表。这里,已经对操作进行了复制以便完全填充后文。由于这些额外操作的结果从未被使用,所以它们不能改变该调度表的结果。这导致了7个周期的代码规模。
图13示出了根据图10的第三代码段的另一个改进的调度表。改进该循环性能的下一个步骤是实际上将来自后文的操作与循环体本身进行合并。然后可以将该循环重复1000次。从而将代码规模从7个周期减小到4个周期。
图14示出了代表另一个实例的第四代码段的数据流图。该数据流图对应于下面的代码段中的循环。其中已经从该数据流图中省略了较不相关的细节。int a[1000],b[1000],c[1000];int i0=0,i1=0,i2=0;for(int i=1000;i!=0;i--){
           int tmp=a[i0];
           b[i1]=tmp;
           c[i2]=tmp+1;
           i0++;i1++;i2++;}
其中定义了变量“a”、“b”、“c”以及循环变量i0、i1和i2。此外,变量“tmp”对应于变量a[i0]的值,b[i1]对应于“tmp”的值,而c[i2]对应于“tmp”加1的值。
图15示出了根据图14的第四代码段的调度表。该数据流图和包括循环折叠的该代码段的相应调度表导致5个周期的代码规模,其中前2个周期是前文,随后是一个被重复998次的周期,随后是两个周期的后文。
因此,前文和后文只被执行一次,而循环体被迭代998次。
图16示出了应用已在图12、13和14中解释了的技术的结果。图16特别示出了根据图14的第四代码段的改进的调度表。其中对所述后文的精简没有之前的例子中有效,而是只实现了对单个指令的改进。这是由第一个“存储”操作造成的。假如该操作是在之后被调度的,则可以进一步减小代码规模。
有时候需要将附加的操作插入代码中,以便能够将一个循环映射到一个单指令循环中。
图16和中间的图15示出了在哪里出现问题,该问题根据图17和18来解决。
图17示出了基于根据图14的第四代码段的第五代码段的数据流图。其中的唯一区别就是引入了一个传递操作。下面的代码段对应于图17的数据流图。int a[1000],b[1000],c[1000];int i0=0,i1=0,i2=0;for(int i=1000;i!=0;i--){
           int tmp=a[i0];
           b[i1]=pass(tmp);
           c[i2]=tmp+1;
           i0++;i1++;i2++;}
该代码段中的唯一不同就是b[i1]现在等于对变量tmp的传递操作的结果。
图18示出了根据图17的第五代码段的调度表。通过引入该传递操作、并从而引入一个周期的等待时间,可以在该相同周期内执行两个存储操作。因此,在循环折叠之后,可以完全丢弃所述后文,并将代码规模减小到3个周期。
图19示出了基于图7的数据流图的数据流图。对于在支持“asl”操作的资源的输出端和支持相加操作的资源的输入端之间没有直接连接的情况,插入一个支持“传递”操作的资源,该资源被提供在上面两个资源之间并且连接上面两个资源。
在图20中示出了该经适配的图。这里,在该支持“asl”操作的资源的输出端和支持相加操作的资源的输入端之间插入一个如上所述的传递操作。换句话说,已经用所需的传递操作对该图进行了扩展。然而,为了能够有效地将该调度表折叠成一个单指令循环体,如图21所示,现在必须再添加两个操作。
应该注意,图21的数据流图是基于图7和图10的图,其中在每个数据流分支中添加了一个传递操作。因此,图21示出了两个传递操作的级联。根据本发明的原理,所述两个级联的传递操作可以由一个具有2个周期等待时间的单个传递操作代替,其被映射到一个资源上,正如上面针对第一和第二实施例描述的那样。
在图22中示出了另一个数据流图。这里,如果在该体系结构中有足够的资源,仍然可以如上所述地用一个具有较短等待时间的单个指令取代所述两个级联的传递操作。
此外,传递操作可能是很重要的,因为在两个资源之间可能没有直接路径。当为第一资源分配一个产生某一结果的操作并且为另一资源分配一个使用该结果的操作时,则不存在调度表,除非在这两个单元之间存在一个间接路径。可以将一个支持“传递”操作的资源连接到这两个资源。从而不是将结果直接从产生者传递到使用者,而是由所述第三资源(即传递单元PU)提供一个替换路径。当考虑到具有许多资源的较大的体系结构时,这一点是尤其重要的。随着资源数量和处理器规模的增加,所需的传递操作的数目也会增加。即使当把传递操作添加到一个循环中时,也希望把所得到的循环映射到单指令循环中。这可能需要将一个数值传递两次或更多次。然而,这会导致支持传递操作的所需功能单元数量的增加,这是所不希望的。
根据第一和第二实施例的可编程传递单元解决了这一问题。
引入传递操作的这些不同理由可能会叠加,从而增加对传递操作的需要。举例来说,由于没有直接路径而引入一个传递操作可能会对变量的寿命有负面影响,从而需要另一个传递操作来解决这一问题。因此,可能需要对同一个数值执行几次传递操作。
优选地,上述处理器和处理系统是VLIW处理器或处理系统。然而,其也可以是某种其它并行处理器或处理系统,比如超标量处理器或流水线式处理器。
除了根据第一和第二实施例的传递操作的实现方式外,还可以基于可旋转寄存器文件来实现所述传递操作。
应当理解,上述实施例说明而不是限制本发明,并且本领域技术人员将意识到,在不背离所附权利要求书范围的情况下,可以设计许多替换实施例。在权利要求书中,括号间的任何附图标记不应被视为限制该权利要求。“包括”一词并不排除在权利要求中所列出的元件或步骤之外的其它元件或步骤的存在。元件之前的“一个”不排除多个这种元件的存在。在列举几个装置的装置权利要求中,可以由同一硬件项实现这些装置中的几个。在彼此不同的从属权利要求中引述某些措施这一事实,并不表示不能使用这些措施的组合来获益。

Claims (7)

1、一种并行处理器,包括:
-一个控制装置(CTR),用于控制所述处理器中的处理;
-多个传递单元(PU),适于以可编程的等待时间执行可编程数目的传递操作;以及
-一个通信网络(CN),用于耦合该控制装置(CTR)和所述多个第一功能单元(PU)。
2、根据权利要求1的并行处理器,其中:
每个所述传递单元(PU)包括一个适于提供一个可编程延迟的功能单元(PU)。
3、根据权利要求2的并行处理器,其中每个所述第一功能单元(PU)包括:
-一个具有预定数目的寄存器字段的寄存器;和
-一个多路复用器(MP),该多路复用器(MP)耦合到所述第一功能单元(PU)的输入端以接收输入数据,并且经由所述通信网络(CN)耦合到所述控制装置(CTR)以从所述控制装置(CTR)接收控制指令,
其中,所述多路复用器(MP)根据从所述控制装置(CTR)接收到的所述控制指令将进入的数据传递到其中一个寄存器字段。
4、根据权利要求1的并行处理器,其中每个所述传递单元(PU)包括:
-组合在一个发送槽中的多个功能单元(L0、L1、L2),
其中每个功能单元(L0、L1、L2)适于以预定的等待时间执行一个传递操作。
5、根据权利要求1、2或4的并行处理器,其中所述处理器是一个超长指令字处理器。
6、一种在并行处理器上进行并行处理的方法,包括以下步骤:
-控制所述处理器中的处理;
-以可编程的等待时间执行可编程数目的传递操作;以及
-耦合一个控制装置(CTR)和多个第一功能单元(PU)。
7、一种编译器程序产品,当所述编译器程序产品运行在一个计算机系统上时,该编译器程序产品用于执行根据权利要求6的对处理系统进行编程的方法的所有步骤。
CNA2004800113220A 2003-04-28 2004-04-26 并行处理系统 Pending CN1829958A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03101182 2003-04-28
EP03101182.8 2003-04-29

Publications (1)

Publication Number Publication Date
CN1829958A true CN1829958A (zh) 2006-09-06

Family

ID=33395956

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004800113220A Pending CN1829958A (zh) 2003-04-28 2004-04-26 并行处理系统

Country Status (5)

Country Link
US (1) US20060282647A1 (zh)
EP (1) EP1620792A2 (zh)
JP (1) JP2006524859A (zh)
CN (1) CN1829958A (zh)
WO (1) WO2004097626A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110998532A (zh) * 2017-08-24 2020-04-10 华为技术有限公司 自适应无服务器功能管理

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006064409A1 (en) * 2004-12-13 2006-06-22 Koninklijke Philips Electronics N.V. Compiling method, compiling apparatus and computer system for a loop in a program
GB2435883A (en) * 2006-03-10 2007-09-12 Innovene Europ Ltd Autothermal cracking process for ethylene production
US8127114B2 (en) * 2007-03-28 2012-02-28 Qualcomm Incorporated System and method for executing instructions prior to an execution stage in a processor
US9152938B2 (en) * 2008-08-11 2015-10-06 Farmlink Llc Agricultural machine and operator performance information systems and related methods

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5376849A (en) * 1992-12-04 1994-12-27 International Business Machines Corporation High resolution programmable pulse generator employing controllable delay
JPH06261010A (ja) * 1993-03-04 1994-09-16 Fujitsu Ltd フェージングシミュレーション方法およびフェージングシミュレータ
EP0843848B1 (en) * 1996-05-15 2004-04-07 Koninklijke Philips Electronics N.V. Vliw processor which processes compressed instruction format
US6628157B1 (en) * 1997-12-12 2003-09-30 Intel Corporation Variable delay element for use in delay tuning of integrated circuits
EP1113357A3 (en) * 1999-12-30 2001-11-14 Texas Instruments Incorporated Method and apparatus for implementing a variable length delay instruction
WO2002008893A1 (en) * 2000-07-21 2002-01-31 Antevista Gmbh A microprocessor having an instruction format containing explicit timing information
JP2002318689A (ja) * 2001-04-20 2002-10-31 Hitachi Ltd 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
GB2382422A (en) * 2001-11-26 2003-05-28 Infineon Technologies Ag Switching delay stages into and out of a pipeline to increase or decrease its effective length

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110998532A (zh) * 2017-08-24 2020-04-10 华为技术有限公司 自适应无服务器功能管理

Also Published As

Publication number Publication date
JP2006524859A (ja) 2006-11-02
US20060282647A1 (en) 2006-12-14
WO2004097626A3 (en) 2006-04-20
WO2004097626A2 (en) 2004-11-11
WO2004097626A8 (en) 2006-02-23
EP1620792A2 (en) 2006-02-01

Similar Documents

Publication Publication Date Title
EP3726389B1 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
US10380063B2 (en) Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
Koenig et al. KAHRISMA: A novel hypermorphic reconfigurable-instruction-set multi-grained-array architecture
US11029958B1 (en) Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator
US12086080B2 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US7313671B2 (en) Processing apparatus, processing method and compiler
US7581082B2 (en) Software source transfer selects instruction word sizes
WO2006017482A2 (en) Programmable processor architecture hierarchical compilation
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
EP3757809A1 (en) Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN1672132A (zh) 源到源的分区编译
WO2020005449A1 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
CN1666174A (zh) 处理器的地址生成单元
CN1829958A (zh) 并行处理系统
CN101553780A (zh) Vliw处理器的虚拟功能单元
CN101699392B (zh) 流处理器中io单元复用方法
She et al. OpenCL code generation for low energy wide SIMD architectures with explicit datapath
CN116670644A (zh) 通用计算核上的交错处理的方法
CN1912925A (zh) 流输入读取的多媒体扩展指令的设计与实现方法
CN1816799A (zh) 在时间-固定处理器中对条件操作的支持
US20060179285A1 (en) Type conversion unit in a multiprocessor system
US20080028191A1 (en) Instruction set and information processing apparatus
Seto et al. Custom instruction generation with high-level synthesis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication