CN1781080A - 到处理器阵列中的处理器的过程的分配 - Google Patents

到处理器阵列中的处理器的过程的分配 Download PDF

Info

Publication number
CN1781080A
CN1781080A CNA2004800047322A CN200480004732A CN1781080A CN 1781080 A CN1781080 A CN 1781080A CN A2004800047322 A CNA2004800047322 A CN A2004800047322A CN 200480004732 A CN200480004732 A CN 200480004732A CN 1781080 A CN1781080 A CN 1781080A
Authority
CN
China
Prior art keywords
processor
array
processors
task
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004800047322A
Other languages
English (en)
Other versions
CN100476741C (zh
Inventor
安德鲁·杜勒
加因德尔·帕内萨尔
艾伦·格雷
安东尼·彼得·约翰·克莱唐
威廉·菲利普·罗宾斯
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.)
Bikeqi Co ltd
Picochip Ltd
Intel Corp
Original Assignee
Picochip Designs Ltd
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 Picochip Designs Ltd filed Critical Picochip Designs Ltd
Publication of CN1781080A publication Critical patent/CN1781080A/zh
Application granted granted Critical
Publication of CN100476741C publication Critical patent/CN100476741C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution

Abstract

使用程序员提供的信息,在编译时,将过程自动分配给处理器阵列中的处理器,并且分配相应的通信资源。因此,以保证在不同处理器之间传输数据所需的资源的方式,来分配阵列中的处理任务。

Description

到处理器阵列中的处理器的过程的分配
技术领域
本发明涉及一种处理器网络,更具体地,涉及一种分配有软件任务的处理器阵列。在其它方面,本发明涉及一种用于自动将软件任务分配给阵列中的处理器的方法和软件产品。
背景技术
处理器系统可以按以下分类:
单指令单数据(SISD)。这是包括由指令流控制的单处理器的传统系统。
单指令多数据(SIMD),有时被称为阵列处理器,因为每个指令都导致并行地对多个数据元执行相同的操作。该种类型的处理器通常被用于矩阵计算和巨型计算机。
多指令多数据(MIMD)。该种类型的系统可以被理解为多个独立的处理器,每个处理器对相同的数据执行不同的指令。
MIMD处理器可以被分成多个子类型,包括:
超标量(Superscalar),其中,在运行时,处理器硬件将单一程序或指令流分成相互独立的指令组。这些指令组在相同时间在分开的执行部件中被处理。该种类型的处理器一次仅执行一个指令流,并因此实际上仅是增强的SISD机器。
超长指令字(Very Long Instruction Word,VLIW)。同超标量一样,VLIW机器具有执行单指令流的多个执行部件,但是在该种情况下,指令被编译器并行化并被汇编成长字,在相同字中的所有指令被并行执行。VLIW机器可以包括来自两个到大约二十个执行部件的一切,但是使用任何多于两个或三个执行部件时,编译器有效使用这些执行部件的能力快速下降。
多线程。本质上,这可以是超标量或VLIW,具有执行程序的不同线程的不同执行部件,除了定义的通信点以外,不同的执行部件彼此独立,其中线程是同步的。尽管线程可以是单独程序的部分,但它们都共享公用存储器,这限制了执行部件的数量。
共享存储器。在此,多个传统处理器都通过存储器的共享区进行通信。其可以是真正的多端口存储器,或者可以是可以调节共享存储器的使用的处理器。处理器通常也具有局部存储器。每个处理器都真正地执行独立的指令流,并且在需要传递信息的地方,使用各种制订完善的诸如套接字(sockets)的协议来执行通信。由其特性,在共享存储器结构中的处理器间通信相对较慢,尽管大量数据可以在每个通信事件中被传递。
网络处理器。除了通过网络进行通信,这些处理器以与共享存储器相同的方式通信。通信甚至更慢,并且通常使用标准通信协议来执行通信。
大部分MIMD多处理器结构的特征在于,当存在多个处理器时,相对较慢的处理器间通信和/或有限的处理器间通信带宽。因为所有的执行部件都共享公用存储器,并且通常公用寄存器位于执行部件内,所以限制了超标量、VLIW和多线程结构;因为如果系统中的所有处理器能够彼此通信,所有处理器一定共享储器公用区的有限带宽,所以限制了共享存储器结构。
对于网络处理器,通信的速度和带宽是由网络的类型来确定的。如果一次只能将数据从一个处理器发送到另一个处理器,那么总的带宽是有限的,但是存在许多其它的包括在相应处理器和开关结构之间使用开关、路由器、点对点连接的拓扑。
不管多处理器系统的类型如何,如果处理器形成了单系统的一部分,而不是仅独立地处理不同的任务并共享一些相同的资源,全部软件任务的不同部分必须被分配给不同的处理器。实现的方法包括:
使用一个或多个监视处理器,在运行期间将任务分配给其它处理器。如果待分配的任务需要相对较长时间来完成,这样可以很好地工作,但是在必须执行多个异步任务的实时系统中将非常困难。
将过程分配手动给处理器。由其特性,这通常需要在编译时来完成。对于许多实时应用程序,这通常是优选的,因为程序员可以保证总是有足够的资源可用于实时任务。然而,大量的过程和处理器使任务变得困难,特别是在修改软件和需要重新分配过程时。
在编译时,自动将过程分配给处理器。对于实时系统,这具有与手动分配一样的优点,还具有大大减少设计时间并使包括大量过程和处理器的系统易于维护的附加优点。
发明内容
本发明涉及在编译时将过程(process)分配给处理器。
随着处理器时钟速度增加和结构变得更加复杂,每个处理器都可以在给定时间内完成更多任务。这意味着可以在过去需要特殊用途硬件的处理器上执行任务。这使专注于新的问题成为可能,但是在实时处理中产生了新的问题。
实时处理被定义为需要在特定时间产生结果的处理,并用于广泛的应用范围内,从洗衣机、自动电机控制和数字娱乐系统、到用于移动通信的基站。在后者的应用中,单一基站可以同时对数百个声音和数据呼叫执行复杂信号处理和控制、可能需要几百个处理器的任务。在这样的实时系统中,调度在特定时间将在相应处理器上运行的任务并为共享资源的使用作出仲裁的工作变得愈加困难。在部分中出现调度问题是因为单个处理器能够运行几十甚至几百个不同的过程,但是,这是鉴于这些过程中的一些过程总是定期发生,其它过程是异步的,以及可能每隔几分钟或几小时才发生。如果任务被不正确地调度,那么事件的相当少见的序列可以导致系统故障。此外,因为事件是少见的,所以实际不可能在所有情况下校验系统的正确操作。
该问题的一个解决方案是使用大量较小、较简单的处理器并将少量固定任务分配给每个处理器。每个单个处理器都很便宜,所以可以使一些处理器致力于为非常少见的需要在短时间内完成的异步任务服务。然而,使用许多小处理器使仲裁问题复杂化,特别是对共享总线或网络资源的仲裁。克服这个问题的一个方法是使用保证为每个通信路径提供所需总线资源的总线结构和相关程序设计方法。在WO02/50624中描述了这样的结构。
一方面,本发明涉及一种在编译时使用程序员提供的信息自动将过程分配给处理器并分配通信资源的方法。另一方面,本发明涉及一种处理器阵列,使过程分配给处理器。
更具体地,本发明涉及一种在多处理器系统中分配处理任务的方法,在该种方法中,保证在不同处理器之间传输数据所需要的资源。本发明涉及在WO02/50624中描述的通用类型的处理器阵列,但是其可以应用于任何允许在总线上分配时隙的多处理器系统,其中,总线用于在处理器之间传输数据。
附图说明
为了更好地理解本发明,将参考附图做出说明,其中:
图1是根据本发明的处理器阵列的方框图;
图2是图1所示的处理器阵列的一部分的放大方框图;
图3是图1所示的处理器阵列的另一部分的放大方框图;
图4是图1所示的处理器阵列的另一部分的放大方框图;
图5是图1所示的处理器阵列的另一部分的放大方框图;
图6是图1所示的处理器阵列的另一部分的放大方框图;
图7示出在图1所示的处理器阵列上运行的过程;
图8是示出根据本发明的方法的流程图。
具体实施方式
参照图1,在WO02/50624中描述的通用类型的处理器阵列包括多个排列成矩阵的处理器20。图1示出了6行,每行包括10个处理器,每行中的处理器被编号为P0、P1、...、P8、P9,在阵列中共给出了60个处理器。这足以示出本发明的操作,尽管本发明的一个优选实施例具有超过400个处理器。每个处理器20都通过连接器50连接到从左向右延伸的水平总线部分32,并连接到从右向左延伸的水平总线部分36。如图所示,这些水平总线部分32、36在开关55处连接到向上延伸的垂直总线部分21、23和向下延伸的垂直总线部分22、24。
尽管图1示出了可以在其中使用本发明的处理器阵列的一种形式,应该注意,本发明也可以应用于其它形式的处理器阵列。
图1中的每个总线都包括多条数据线,通常为32或64条,数据有效信号线和两条应答信号线,即一个应答信号和一个重新发送应答信号。
参考图2,示出了每个开关55的结构。开关55包括预先加载有数据的RAM 61。开关还包括控制器60,其包括以预先确定的序列计数RAM 61的地址的计数器。相同的序列被无限制地重复,并且用系统时钟周期测量的完成序列所需的时间,被称作序列周期。在每个时钟周期,来自RAM 61的输出数据被加载到寄存器62中。
开关55具有六条输出总线,即分别为从左到右的水平总线,从右到左的水平总线,两条向上的垂直总线部分,以及两条向下的垂直总线部分,但是为了清晰,在图2中仅示出了到这些输出总线之一的连接。六条输出总线中的每条都包括总线部分66(其包括32或64线数据总线以及数据有效信号线),加上用于输出应答和重新发送应答信号的线68。
多路复用器65具有七个输入,即分别为从左到右的水平总线,从右到左的水平总线,两条向上的垂直总线部分,两条向下的垂直总线部分,以及来自恒为零(zero)的源。多路复用器65具有来自寄存器62的控制输入64。根据寄存器62的内容,在这些输入中所选的一个输入上的数据在该周期内被传送到输出线66。在不使用输出总线时,优选地选择恒为零的输入,因此不使用电源来不必要地改变总线上的值。
同时,来自寄存器62的值也提供给块67,该块接收来自从左到右的水平总线、从右到左的水平总线、两条向上的垂直总线部分、两条向下的垂直总线部分、以及来自恒为零的源的应答和重新发送应答信号,并选择一对输出应答信号到线68上。
图3是示出了两个处理器20如何在相应连接器50连接到从左到右的水平总线部分32和从右到左的水平总线部分36的放大方框图。被定义为两个多路复用器51之间的部分的总线的一部分,通过接线25连接到处理器的输入。通过输出总线部分26和另一多路复用器51,处理器的一个输出连接到总线的部分。另外,来自处理器的应答信号在应答结合块27中与总线上的其它应答信号结合。
多路复用器51和块27的选择输入由相关处理器中的电路控制。
在阵列中的所有通信以预先确定的序列发生。在一个实施例中,序列周期是1024个时钟周期。每个开关和每个处理器都包括用于对序列周期进行计数的计数器。在该序列的每个周期中,每个开关选择其输入总线之一接入到其六个输出总线的每个上。在序列中的预先确定的周期,处理器通过接线25从其输入总线部分加载数据,并使用多路复用器51将数据转换到其输出总线部分。
至少,每个处理器必须能够控制与其相关的多路复用器和应答结合块、从在正确时间顺序连接到处理器上的总线部分加载数据、并且对数据执行一些有用的功能,即使仅包括存储数据。
将参考图4来描述在处理器之间传输数据的方法,图4示出了图1中的阵列的一部分,其中在第“x”行和第“y”列处的处理器被标识为Pxy。
为了说明,将描述从处理器P24向处理器P15发送数据的情况。在预先设定的时钟周期,发送处理器P24使数据到总线部分80上,开关SW21将这些数据转换到总线部分72上,开关SW11将数据转换到总线部分76上,以及接收处理器P15加载数据。
假设其它处理器之间不使用任何总线部分80、72或76,那么可以同时建立阵列中其它处理器之间的通信路径。在本发明的该优选实施例中,发送处理器P24和接收处理器P15被编程,以在序列周期内执行一个或少量特定任务一次或多次。结果是,每个序列周期内,可能必需多次建立在发送处理器P24和接收处理器P15之间的通信路径。
更具体地,本发明的优选实施例允许每隔2、4、8、16或2的任何次幂直到1024个时钟周期,建立通信路径。
当不建立在发送处理器P24和接收处理器P15之间的通信路径时的时钟周期时,总线部分80、72和76可以被用来作为任何其它处理器对之间的通信路径。
在阵列中每个处理器可以与任何其它处理器通信,尽管希望按这样的方式将过程分配给处理器,即每个处理器最频繁地与其相邻处理器通信,以便减少每次传输时所使用的总线部分的数量。
在本发明的优选实施例中,每个处理器都具有图5所示的整体结构。如上所述,处理器核心11连接到指令存储器15和数据存储器16,并且也连接到用于配置和监控的配置总线接口10,以及通过总线连接器50连接到相应总线上的输入/输出端口12。
端口12如图6那样构造。为了清晰,仅示出连接到对应从左到右的总线32的端口,并没有示出连接到对应从右到左的总线36的端口,也没有示出控制或定时详情。给用于在处理器和一个或多个其它处理器之间发送数据的每个通信信道分配一对缓冲器,即用于输入端口的输入缓冲器对121、122或用于输出端口的输出缓冲器对123、124。输入端口通过多路复用器120连接到处理器核心11,以及输出端口通过多路复用器125和多路复用器51连接到阵列总线32。
对于向另一处理器发送数据的一个处理器,发送处理器核心执行将数据发送到输出端口缓冲器124的指令。如果在分配给该通信信道的缓冲器124中已有数据,那么该数据被传送到缓冲器123,而如果缓冲器123也被占用,那么处理器核心停止处理直到缓冲器变为可用。每个通信信道可以使用更多的缓冲器,但是下面将示出对于所考虑的应用程序,两个缓冲器就足够了。在分配给特殊通信信道的周期(“时隙”)中,使用多路复用器125和51将数据复用到阵列总线上,并路由到目的处理器或如上所述的处理器。
在接收处理器中,数据被加载到分配给该信道的缓冲器121或122。然后,接收处理器上的处理器核心11可以执行从端口通过多路复用器120传输数据的指令。当接收到数据时,如果分配给通信信道的缓冲器121和122都为空,那么将数据字放入缓冲器121。如果缓冲器121已被占用,那么将数据字放入缓冲器122。下面的段落将描述如果缓冲器121和122都被占用时将发生什么。
从上面的描述显而易见,尽管用于从处理器向处理器传输数据的时隙是基于规则周期被分配的,但是只要不引起输出缓冲器溢出或输入缓冲器下溢,在输出和输入端口中的缓冲器的存在,意味着处理器核心可以在任何时间从端口传入或传出数据。这在下面表格的实例中被示出了,其中列标题具有下列含义:
周期:对于该实例,每个系统时钟周期都已被编号。
PUT:从处理器核心向输出端口传输数据被称为“PUT”。在该表中,无论何时发送处理器核心向输出端口传输数据时,在PUT列中都显示一个条目。该条目表示被传输的数据值。如上所述,PUT与处理器之间的数据传输异步;定时是由运行在处理器核心上的软件所决定的。
OBuffer0:发送处理器中输出缓冲器0(图6中连接到多路复用器125的输出缓冲器124)的内容。
OBuffer1:发送处理器中输出缓冲器1(图6中连接到处理器核心11的输出缓冲器123)的内容。
时隙:指示数据被传输的周期。在该实例中,每隔四个周期传输数据。为了清晰,时隙被编号。
IBufier0:接收处理器中输入缓冲器0(图6中连接到处理器核心120的输入缓冲器121)的内容。
IBuffer1:接收处理器中输入缓冲器1(图6中连接到总线32的输入缓冲器122)的内容。
GET:从输入端口向处理器传输数据被称为“GET”。在该表中,无论何时接收处理器从输入端口传输数据时,在GET列中都显示一个条目。该条目示出被传输的数据值。如上所述,GET与处理器之间的数据传输异步;定时是由运行在处理器核心上的软件所决定的。
  周期   PUT   OBufier1   OBuffer0   时隙   IBuffer1   IBuffer0   GET
  0
  1   D0   D0
  2   D0
  3   D0   1
  4   D0
  5   D1   D1   D0
  6   D2   D2   D1   D0
  7   D2   D1   2   D0
  8   D2   D1   D0
  9   D2   D1   D0
  10   D2   D1
  11   D2   3   D2   D1
  12   D2   D1
  13   D2   D1
  14   D2
  15   4   D2
  16   D2
  17   D2
  18
本发明优选地使用以可以用于编程例如上述一种的多处理器系统中的处理器的方式写软件的方法。特别地,其提供了一种获取程序员关于在处理器之间的通信带宽需求意向并使用该意向分配总线资源以保证确定性通信的方法。将通过实例对此作出解释。
下面将给出程序实例,并在图7中图解表示。在该实例中,运行在处理器上的软件是以汇编程序写成的,因此到端口的PUT操作和从端口的GET操作可以被清楚地看见。该汇编码在每个处理的结构描述中关键字CODE和ENDCODE之间的行中。以硬件描述语言(Hardware Description Language),VHDL(IEEE Std 1076-1993)描述信道如何在处理之间传送数据。图7示出了三个过程Producer、Modifier和memWrite是如何通过信道1和信道2连接的。
VHDL和汇编码的大部分详情对于本发明不是重要的,本领域中的技术人员都能够对其作出解释。重要的是:
由定义其接口的VHDL实体声明及定义其内容的VHDL结构声明定义的每个过程,以某种方式,手动或通过使用自动计算机程序,被放入例如图1所示阵列的系统中的处理器上。
对于每个信道,软件写入员通过使用VHDL语言的扩展定义了时隙频率要求。这是符号“@”,其显示在结构“toplevel”中的实体声明和信号声明的端口定义中,定义了三个过程如何连接在一起。
在“@”后的数字表示在运行过程的系统中处理器之间多久必须分配时隙,单位为系统时钟周期。因此,在该实例中,可以为Producer过程分配时隙,以将数据每隔16个系统时钟周期沿信道1(其为整数16对,指示32位总线传送两个16位值)发送到Modifier过程,也可以为Modifier过程分配时隙,以将数据每隔八个系统时钟周期发送到memWriter过程。
  entity Producer is

    port(outPort:out integer16pair@16);

  end entity Producer;

  architecture ASM of Producer is

  begin STAN

  initialize regs:=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

    CODE

      loop

          for r6 in 0 to 9 loop

              copy.0 r6,r4

              add.0 r4,1,r5

              put r[5:4],outport

              end loop

          end loop

      ENDCODE;

  end Producer;

  entity Modifier is

    port(outPort:out integer16pair@8;

            inPort:in integer16pair@16);

  end entity Modifier;
        <!-- SIPO <DP n="12"> -->
        <dp n="d12"/>
  architecture ASM of Modifier is

  begin MAC

  initialize regs:=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

    CODE

      loop

         for r6 in 10 to 19 loop

             get inport,r[3:2]

             add.0 r2,10,r4

             add.0 r3,10,r5

        put r[5:4],outport --This output should be input into third AE

        end loop

      end loop

  ENCODE

  end Modifier;

  entity memWrite is

    port(inPort:in integer16pair@8);

  end entity memWrite;
  architecture ASM of memWrite is
  begin MEM
  initialize regs:=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

  initialize code_partition:=2;

  CODE

  copy.00,AP    //initialize write pointer

  loop

      get inPort,r[3:2]

      stl r[3:2],(AP)\add.0 AP,4,AP

  end loop

  ENCODE;

  end;

  entity toplevel is

  end toplevel;
        <!-- SIPO <DP n="13"> -->
        <dp n="d13"/>
  architecture STRUCTURAL of toplevel is

  signal channel 1:integer16pair@16;

  signal channel 2:integer16pair@8;

  begin

    finalObject:entity memWrite

            port map(inPort=>channel 2);

         modifierObject:entity Modifier

            port map(inPort=>channel 1,outPort=>channel 2);

         producerObject:entity Producer

            port map(outPort=>channel 1);

  end toplevel;
如上所述,在每个过程的结构描述中,关键字CODE和ENCODE之间的代码被汇编成机器指令并被加载到处理器的指令存储器中(图5),因此处理器核心执行这些指令。每次执行PUT指令时,如上所述,将数据从处理器核心中的寄存器传送到输出端口中,以及每次执行GET指令时,将数据从输入端口传送到处理器核心中的寄存器中。
在实例中,“@”符号后的数字表示每个信号的时隙率(slotrate),时隙率用于以适当频率分配阵列总线上的时隙。例如,时隙率是“@4”时,对于每隔四个系统时钟周期的一个时钟周期,必须在发送处理器和接收处理器之间的所有总线部分上分配时隙;时隙率是“@8”时,对于每隔八个系统时钟周期的一个时钟周期,必须在发送处理器和接收处理器之间的所有总线部分上分配时隙,等等。
使用上述方法,软件过程可以被分配给相应处理器,并且时隙可以被分配到阵列总线上,以提供传递数据的信道。更具体地,系统允许用户指定在两个共同执行一个过程的处理器之间多久必须建立信道,以及构成过程的软件任务然后可以以需要建立信道的方式被分配给特定处理器。
可以手动执行分配,或优选地使用计算机程序。
图8是根据本发明该方面的方法的一般结构的流程图。
在步骤S1中,用户通过定义将被执行的过程来定义整体系统所需的功能,以及定义在执行部分过程的处理器之间建立信道所需的频率。
在步骤S2中,进行编译过程,并基于静态将软件任务分配给阵列的处理器。该分配是以在所需频率可以建立所需信道的方式来执行的。
基于该描述和特定系统参数的知识,本领域的技术人员可以写出用于执行编译的合适软件。
在分配软件任务之后,可以将适当的软件加载到相应执行所定义的过程的处理器中。
使用上述方法,程序员指定时隙频率,而不是数据被传输的确切时间(相位或位移)。这大大简化了写软件的任务。也是普遍的目标,即系统中的处理器不会因为在信道的输入或输出端口中的缓冲器满了而等待。倘若发送处理器不想执行比时隙率更频繁的PUT指令,并且接收处理器不想执行比时隙率更频繁的GET指令,这可以通过使用与每个信道相关的输入端口中的两个缓冲器和在对应输出端口中的两个缓冲器来实现。
因此描述了处理器阵列和将软件任务分配给阵列中处理器的方法,该方法可以有效利用可用资源。

Claims (7)

1.一种自动将软件任务分配给处理器阵列中的处理器的方法,其中,所述处理器阵列包括多个具有接线的处理器,当需要时所述接线可以使每个处理器连接到每个其它处理器上,所述方法包括:
接收多个过程的定义,至少一些作为共享过程的所述过程包括分别将在第一和第二非特定处理器中执行的至少第一和第二任务,每个共享过程还由在所述第一和第二处理器之间必须传输数据的频率定义;以及所述方法还包括:
自动静态地将所述多个过程的所述软件任务分配给所述处理器阵列中的处理器,并在所述处理器之间分配接线,其中,所述处理器以所述相应定义频率执行每个所述相应共享过程中的所述任务。
2.根据权利要求1所述的方法,其中,所述方法在编译时执行。
3.根据权利要求1或2所述的方法,包括通过计算机程序执行分配所述软件任务的所述步骤。
4.根据权利要求1、2或3所述的方法,还包括加载软件以在所述相应处理器上执行所分配的软件任务。
5.一种计算机软件产品,运行时执行以下步骤:
接收多个过程的定义,至少一些作为共享过程的所述过程包括分别将在处理器阵列的第一和第二非特定处理器中执行的至少第一和第二任务,每个共享过程还由在所述第一和第二处理器之间必须传输数据的频率定义;以及
静态地将所述多个过程的所述软件任务分配给所述处理器阵列中的处理器,并在所述处理器之间分配接线,其中,所述处理器以所述相应定义频率执行每个所述相应共享过程中的所述任务。
6.一种处理器阵列,包括多个处理器,所述处理器具有接线,当需要时所述接线可以使每个处理器连接到每个其它处理器,并且所述处理器具有用于自动将软件任务分配给所述处理器阵列中的处理器的相关软件产品,所述软件产品适于:
接收多个过程的定义,通过分别将在第一和第二非特定处理器中执行的至少第一和第二任务来定义每个过程,每个过程还被在所述第一和第二处理器之间必须传输数据的频率定义;以及适用于:
自动地将所述多个过程的所述软件任务分配给所述阵列中的处理器,并在所述处理器之间分配接线,所述处理器以所述相应定义频率执行每个所述任务。
7.一种处理器阵列,包括:
多个处理器,
其中,所述处理器通过多个总线和开关互相连接,当需要时,所述总线和开关使得每个处理器连接到每个其它处理器,
其中,每个处理器都被编程,以执行相应静态分配的操作序列,在多个序列周期中重复所述序列,
其中,在阵列中执行的至少一些过程包括将在相应第一和第二处理器中执行的相应第一和第二软件任务,以及
其中,对于每个所述处理器,在每个序列周期内的固定时间,分配在执行所述任务的所述处理器之间所需的接线。
CNB2004800047322A 2003-02-21 2004-02-19 处理器阵列和用于处理器阵列的处理方法 Expired - Fee Related CN100476741C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0304056.5 2003-02-21
GB0304056A GB2398651A (en) 2003-02-21 2003-02-21 Automatical task allocation in a processor array

Publications (2)

Publication Number Publication Date
CN1781080A true CN1781080A (zh) 2006-05-31
CN100476741C CN100476741C (zh) 2009-04-08

Family

ID=9953470

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800047322A Expired - Fee Related CN100476741C (zh) 2003-02-21 2004-02-19 处理器阵列和用于处理器阵列的处理方法

Country Status (7)

Country Link
US (1) US20070044064A1 (zh)
EP (1) EP1595210A2 (zh)
JP (1) JP2006518505A (zh)
KR (1) KR20050112523A (zh)
CN (1) CN100476741C (zh)
GB (1) GB2398651A (zh)
WO (1) WO2004074962A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
JP4855234B2 (ja) * 2006-12-12 2012-01-18 三菱電機株式会社 並列処理装置
US7768435B2 (en) * 2007-07-30 2010-08-03 Vns Portfolio Llc Method and apparatus for digital to analog conversion
GB2454865B (en) 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
GB2455133A (en) * 2007-11-29 2009-06-03 Picochip Designs Ltd Balancing the bandwidth used by communication between processor arrays by allocating it across a plurality of communication interfaces
GB2457309A (en) * 2008-02-11 2009-08-12 Picochip Designs Ltd Process allocation in a processor array using a simulated annealing method
GB2459674A (en) * 2008-04-29 2009-11-04 Picochip Designs Ltd Allocating communication bandwidth in a heterogeneous multicore environment
JP2010108204A (ja) * 2008-10-30 2010-05-13 Hitachi Ltd マルチチッププロセッサ
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
CN102105866B (zh) * 2009-05-25 2014-02-26 松下电器产业株式会社 多处理器系统、多处理器控制方法、以及多处理器集成电路
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
WO2013102970A1 (ja) * 2012-01-04 2013-07-11 日本電気株式会社 データ処理装置、及びデータ処理方法
US10034407B2 (en) 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367678A (en) * 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
GB2317245A (en) * 1996-09-12 1998-03-18 Sharp Kk Re-timing compiler integrated circuit design
US6789256B1 (en) * 1999-06-21 2004-09-07 Sun Microsystems, Inc. System and method for allocating and using arrays in a shared-memory digital computer system
GB2370380B (en) * 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US7325232B2 (en) * 2001-01-25 2008-01-29 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
US7073158B2 (en) * 2002-05-17 2006-07-04 Pixel Velocity, Inc. Automated system for designing and developing field programmable gate arrays

Also Published As

Publication number Publication date
WO2004074962A2 (en) 2004-09-02
EP1595210A2 (en) 2005-11-16
GB2398651A (en) 2004-08-25
KR20050112523A (ko) 2005-11-30
CN100476741C (zh) 2009-04-08
WO2004074962A3 (en) 2005-02-24
JP2006518505A (ja) 2006-08-10
GB0304056D0 (en) 2003-03-26
US20070044064A1 (en) 2007-02-22

Similar Documents

Publication Publication Date Title
CN1781080A (zh) 到处理器阵列中的处理器的过程的分配
US11934883B2 (en) Computer cluster arrangement for processing a computation task and method for operation thereof
Carriero et al. Adaptive parallelism and Piranha
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
Yang et al. Scheduling parallel computations by work stealing: A survey
Jin et al. Performance characteristics of the multi-zone NAS parallel benchmarks
US9384042B2 (en) Techniques for dynamically assigning jobs to processors in a cluster based on inter-thread communications
CN101055535A (zh) 并行计算机和定位并行计算机中硬件故障的方法
CN1991768A (zh) 与不同种类的资源通信的基于指令系统结构的内定序器
CN1914597A (zh) 处理单元的动态加载和卸载
Sun et al. A ugni-based asynchronous message-driven runtime system for cray supercomputers with gemini interconnect
Zambre et al. How I learned to stop worrying about user-visible endpoints and love MPI
Madsen et al. Network-on-chip modeling for system-level multiprocessor simulation
Dong Efficient support for matrix computations on heterogeneous multi-core and multi-GPU architectures
Aji et al. Synchronization and ordering semantics in hybrid MPI+ GPU programming
Swenson Techniques to improve the performance of large-scale discrete-event simulation.
US20230289189A1 (en) Distributed Shared Memory
US20230289215A1 (en) Cooperative Group Arrays
CN106933663A (zh) 一种面向众核系统的多线程调度方法及系统
CN1877555A (zh) 平行处理的多重微控制器的结构及时序控制方法
Gropp et al. An Introduction to MPI
Small Optimizing MPI point-to-point communication performance on RDMA-enabled SMP-CMP clusters
Hosseini-Moghaddam et al. A new processor allocation strategy using ESS (expanding square strategy)
Yu et al. Disjoint task allocation algorithms for MIN machines with minimal conflicts
Fais et al. Fast fluid dynamics on the single-chip cloud computer

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
ASS Succession or assignment of patent right

Owner name: INTEL CORP .

Free format text: FORMER OWNER: PICOCHIP LTD.

Effective date: 20140905

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee

Owner name: PICOCHIP CO., LTD.

Free format text: FORMER NAME: PICOCHIP DESIGUS LTD.

Owner name: PICOCHIP LTD.

Free format text: FORMER NAME: PICOCHIP CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: Bath in Britain

Patentee after: PICOCHIP Ltd.

Address before: Bath in Britain

Patentee before: Bikeqi Co.,Ltd.

Address after: Bath in Britain

Patentee after: Bikeqi Co.,Ltd.

Address before: Bath in Britain

Patentee before: PICOCHIP DESIGNS LTD.

TR01 Transfer of patent right

Effective date of registration: 20140905

Address after: California, USA

Patentee after: INTEL Corp.

Address before: Bath in Britain

Patentee before: Picochip Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090408

Termination date: 20210219

CF01 Termination of patent right due to non-payment of annual fee