CN1816806A - 系统、方法、程序、编译器和记录载体 - Google Patents
系统、方法、程序、编译器和记录载体 Download PDFInfo
- Publication number
- CN1816806A CN1816806A CNA2004800190918A CN200480019091A CN1816806A CN 1816806 A CN1816806 A CN 1816806A CN A2004800190918 A CNA2004800190918 A CN A2004800190918A CN 200480019091 A CN200480019091 A CN 200480019091A CN 1816806 A CN1816806 A CN 1816806A
- Authority
- CN
- China
- Prior art keywords
- processor elements
- cluster
- processor
- elements
- designator
- 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
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
描述了一种处理器系统,其包括至少第一和第二处理器元件(PE1、PE2)。第一处理器元件(PE1)具有与第二处理器元件相关的集群请求指示符(CR12),而第二处理器元件(PE2)具有与第一处理器元件相关的集群请求指示符(CR21)。所述处理器元件具有允许动态控制指示符的指令集。所述指示符(CR12、CR21)具有包括至少第一数值(正指示符)和第二数值(负指示符)的数值范围,所述第一数值表示处理器元件请求利用相关的处理器元件来形成集群,所述第二数值表示处理器元件未请求利用相关的处理器元件来形成集群。所述系统还包括集群控制设备(CC12),其检测集群请求指示符的数值并且按照所检测的数值,按集群来组织处理器元件。如果两个处理器元件具有彼此相关的正指示符或如果存在包括那两个处理器元件的处理器元件序列,那么这两个处理器元件就属于相同的集群,其中每一对后续的处理器元件都具有彼此相关的正指示符。
Description
技术领域
本发明涉及包括多个处理器元件的系统。
本发明还涉及一种操作包括多个处理器元件的系统的方法。
本发明还涉及一种用于包括多个处理器元件的系统的程序。
本发明还涉及一种用于生成上述程序的编译器。
本发明还涉及一种包括上述程序的记录载体。
背景技术
超长指令字处理器(VLIW处理器)能够在一个时钟周期内执行许多运算。通常,编译器将程序指令缩减成处理器能够同时执行的基本运算。将要同时执行的操作合并成超长指令字(VLIW)。VLIW处理器的指令译码器向各个处理器元件发布包含在VLIW中的基本运算。随后,这些处理器元件并行地以VLIW来执行运算。这种并行操作也称为指令级并行操作(ILP),它尤其适用于包含大量相同计算的应用,就比如在媒体处理中含有的那些计算。其它应用包括更多的面向控制的运算,例如,对于伺服控制而言,它不适用于编程为VLIW程序。然而,往往这种程序能被简化为多个可彼此独立执行的程序线程。这种线程的并行执行也表示为线程级并行操作(TLP)。然而,VLIW处理器不适用于利用线程级并行操作来执行程序。采用后一类并行操作要求不同的处理器数据路径元件具有独立控制流,即它们能够按彼此独立的序列来访问它们自己的程序,例如能够独立地执行条件转移。然而,VLIW处理器中的数据路径元件以锁步模式进行工作,即它们全都按相同的顺序执行操作序列。因此,VLIW处理器只能执行一个线程。
发明内容
本发明的目的是,提供一种处理器,其能够根据应用使用相同的数据路径元件子集来采用指令级并行操作或任务级并行操作或其组合。
根据发明,这个目的是利用权利要求1中所述的系统实现的。在所述系统中,处理器元件具有可编程集群请求指示符。响应于集群请求指示符,集群控制设备按集群来组织处理器元件。取决于指令级并行操作和任务级并行操作的数值,能够修改这些集群的数量和大小。因为集群请求指示符是可编程的,所以处理器元件本身能够修改这个指示符的数值以作为它们的指令句柄的一部分。可以依据确定的条件的发生来对指示符进行编程。
本发明特别适合于应用在如2002年12月30日提交的欧洲专利申请02080600.6中所述的处理器系统中。在早先描述的处理器系统中,属于相同集群的处理器元件以指令级并行模式进行工作,同时不同的集群能够并行地执行不同的任务。集群中的处理器元件据称是以锁步模式进行工作。本发明可以按照依据指令执行过程的方式来组织集群。更具体而言,本发明可以响应于只能在程序执行期间估计的数据或条件,动态地定义和重新定义集群。
注意到:Proc.of Supercomputing’90当中由Colwell等人所著的“Architecture and Implementation of a VLIW Supercomputer(VLIW巨型机的体系结构和实施方案)”(第910-919页)描述了一种VLIW处理器,其能被配置成两个14宽的处理器,每一个都受各自控制器的独立控制,或被配置成由一个控制器来控制的一个28宽的处理器。然而,所述文献未披露根据集群请求指示符而相互仲裁的多个处理器元件能够动态形成集群的原理。
这一原理使根据本发明的处理器能依据任务动态地将其配置修改成多数适当形式。对于几乎没有可能以指令级采用并行操作的任务来说,所述处理器能被配置为相对大量的小集群(例如,只包括一个或几个处理器元件)。这使得在线程级上应用并行操作成为可能。如果任务非常适合于应用指令级并行操作,通常在媒体处理中就是这样,则可以将处理器重新配置成少量的大集群。每个集群的大小能够适合于处理速度的要求。这使得具有并行控制流的几个线程成为可能,每一个都具有匹配在那个线程中所能采用的ILP的许多功能单元。
US6,266,760描述了一种可重新配置的处理器,其包括多个基础功能单元,所述基础功能单元能被配置成执行特定功能,例如,作为ALU、指令存储器、函数存储器或程序计数器。照此,就能够按几种方式来使用处理器,例如,作为微处理器、VLIW处理器或MIMD处理器。然而,该文献未披露这样一种包括不同处理器元件的处理器,所述每一个处理器元件都具有控制器,其中所述处理器元件能被配置在一个或多个集群中,并且其中相同集群内的处理器元件尽管具有它们自己的控制器但却根据公共的控制线程来进行工作,并且其中彼此不同的集群中的处理器彼此独立地进行工作,即根据不同的控制线程来进行工作。
US6,298,430描述了一种用户可配置的超标量多处理器,其包括预定的多个分布式可配置信号处理器(DCSP),所述分布式可配置信号处理器是计算集群,其每一个都具有构成单位群组的最少两个子微处理器(SM)和一个分组总线控制器(PBC)。DCSP、SM和PBC经由局部网络总线相连。PBC具有将PBC与每个SM相连接的通信总线。将PBC与每个SM相连接的PBC的通信总线具有一个硬布线连接的串行链和一个可编程转换的连接器。SM之间的每条通信总线都具有至少一个硬布线连接和两个可编程转换的连接器。多个SM能被可编程合并成独立的SM组。当按照来自于充当主设备的集群中的一个SM的时钟频率来进行计时之时,集群的所有SM都能以异步模式或者以同步模式来进行工作。已知的多处理器不允许以任意大小的集群来进行的配置。
本发明还涉及一种信息载体,其包括用于根据本发明的处理器的一组VLIW指令。所述VLIW指令包括将由处理器中的各个处理器元件执行的一组PE指令。至少一个PE指令是用于控制与其它处理器元件有关的所述处理器元件的配置的指令。
例如,可以将处理器系统初始化为包括所有处理器元件的一个任务单元。随后可以使用一条指令来使单个处理器元件从初始任务单元去耦合,并允许处理器元件独立进行工作。
优选地,处理器元件中每一个都具有它们自己的指令存储器,例如以高速缓存的形式。这易于处理器元件的独立工作。作为选择,或者除它们自己的局部指令存储器之外,处理器元件可以共享全局存储器。
为了实现本发明的目的,又提供了权利要求4所述的方法、权利要求5所述的程序和权利要求6所述的编译器。
附图说明
下面参照附图更详细地描述这些及其它方面。在其中:
图1示意性地示出包括多个处理器元件的处理器系统;
图2更详细地示出供本发明中的处理器系统中使用的处理器元件的实施例;
图3示出根据本发明的处理器系统的实施例,所述处理器系统包括第一和第二处理器元件;
图4示出根据本发明的处理器系统的实施例,所述处理器系统包括任意数量的处理器元件PE1,...,PEn;
图5更详细地示出供图4的处理器系统中使用的集群控制元件CCEn;
图6A-D示出如参照图4和5所述的系统的不同配置的示例;
图7示出以二维的布局排列的图4的处理器系统;
图8示出根据本发明的处理器系统的实施例,其中处理器元件能够直接利用其4个最接近的处理器元件形成集群;
图9示出供图8中所示的处理器系统中使用的集群控制元件的实施例;
图10A-10E示出如图8中所示的处理器系统的动态重新配置的示例;
图11示出适用于编译器的高级程序的略图,所述编译器用于产生根据本发明的处理器系统的指令。
具体实施方式
图1示意性地示出包括多个处理器元件PE11,.....PE1n;PE21,.....PE2n;PEn1,.....PEnn的处理器系统。所述处理器元件能够经由数据路径连接DPC交换数据。在图1中所示的优选实施例中,处理器元件是排列在矩形网格上的,并且数据路径连接提供了相邻处理器元件之间的数据交换。非相邻处理器元件可以经由一条的相近的处理器元件链将数据传送到其它处理器元件。作为选择或另外,所述处理器系统可以包括一条或多条全局总线或点对点连接。
图2更详细地示出处理器元件的实施例。每个处理器元件都包括一个或多个功能单元(FU)。另外,所述处理器元件包括局部数据存储器。在所示的实施例中,FU包括连接于数据存储器(RAM)的两个算术逻辑单元(ALU)、累积乘法单元((MAC),multiplyaccumulation unit)、专用单元(ASU)和加载/存储单元(LD/ST)。所述功能单元中的每一个都有权访问专用寄存器堆RF。FU是由有权访问指令存储器IM的控制器CT来控制的。控制器分别经由操作码总线OB、地址总线AB和路由选择总线RB与FU、寄存器堆RF和互连网络IN通信。程序计数器确定当前指令地址。所述控制器具有用于接收集群操作控制信号C的输入。这个控制信号C使防护指令(例如,条件转移)被执行。所述控制器还具有用于向其它处理器元件提供操作控制信号F的输出。这将在后面更详细地描述。所述控制器还具有用于接收中止信号Wi的一个或多个输入,所述中止信号会令处理器元件中止执行。作为选择,所述控制器可以耦合于根据多个中止信号Wi产生单一中止信号的组合元件。所述控制器还具有用于提供集群请求指示符的输出。
图3示出根据本发明的处理器系统的实施例,所述处理器系统包括第一和第二处理器元件PE1、PE2。为了清楚起见,已在图1和2中说明的大多数方面,在这幅图中都不再重复说明。第一处理器元件PE1具有与第二处理器元件PE2相关的可编程集群请求指示符CR12,而第二处理器元件PE2具有与第一处理器元件PE1相关的可编程集群请求指示符CR21。所述指示符具有包括至少第一数值(正指示符)和第二数值(负数指示符)的数值范围,所述第一数值表示处理器元件请求利用相关的处理器元件来形成集群,而第二数值表示处理器元件未请求利用相关的处理器元件来形成集群。
在操作期间,处理器元件PE1、PE2的控制器CTR从指令存储器中读取指令流。处理器元件的指令集包括:控制集群请求指示符CR12、CR21的数值的指令。熟练技术人员能够决定利用一条或多条指令来控制该数值。例如,处理器元件的指令集可以包括具有用于表示期望何种配置的参数的单条指令。例如,指令配置(CU),其中参数表示将赋值给集群控制指示符的数值。否则,期望的状态能够由独立的指令来表示,例如,用以表示请求与其它处理器形成集群的指令Join,以及用以表示没有请求的指令Split。
所述系统还包括集群控制设备CC12,其检测集群请求指示符CR12、CR21的数值,并按照所检测的数值以集群来组织处理器元件PE1、PE2。如果所述处理器元件PE1、PE2具有彼此相关的正指示符,则它们属于相同的集群。
在所示的实施例中,所述集群控制设备CC12包括专用逻辑电路,所述专用逻辑电路包括标准的逻辑元件。所述集群控制设备CC12计算集群信号C12,该信号表示处理器元件是否被集群。按如下计算集群信号:C12=CR12 AND CR21。
所述集群控制设备还计算第一和第二等待信号WT1、WT2。这使具有正指示符的特定处理器元件(例如,PE1)等待直到指示符所相关的处理器元件PE2也具有与那个特定处理器元件相关的正指示符为止。按如下计算信号WT1和WT2:
WT1=CR12 AND NOT C12;WT2=CR21 AND NOT C12
也就是说,等待信号只有当各个处理器元件想要形成集群(信号CR有效)时才被激活,而集群控制设备CC12表示将不形成集群(信号C12无效)。
熟练技术人员将意识到几种修改都是可能的。不为这些计算使用专用硬件,而可以使用可编程通用设备。如果使所涉及的信号的定义反相则可以使用其它门电路。集群控制元件中的逻辑功能可以由查找表等等来实现。例如,可能将组合元件集成到处理器元件中。
集群信号C12能用来实现在处理器元件PE1、PE2之间信号S1、S2的共享。信号S1、S2例如可以用作为防护信号,当它有效时令处理器元件执行条件转移或另一个防护操作。例如,当集群信号C12关闭信号所耦合的开关(即每个处理器元件)时,能够上拉(下拉)信号以便两个处理器元件PE1、PE2都执行(或都不执行)防护操作。换言之,当集群信号C12关闭开关时,两个处理器元件共享相同的防护(同时任一个处理器元件都保持自由以便首先估计防护)。
防护信号的共享能够使集群中的不同处理器元件能在单一控制线程下以锁步模式进行工作。正如2002年12月30日提交的欧洲专利申请02080600.6中所述的那样,这可以通过利用具有条件转移操作的公共防护信号以及适当的编译时支持来实现(其中,防护信号是条件)。
取决于集群请求指示符的数值,该系统可以具有下列工作模式:正的和负的集群请求指示符分别是用术语“加入”和“分割”来表示的。
CR12 | CR21 | W1 | W2 | CL | 系统 |
加入 | 加入 | 继续 | 继续 | 集群 | ILP执行 |
加入 | 分割 | 中止 | 继续 | 分离 | 处理器1等待,处理器2工作 |
分割 | 加入 | 继续 | 中止 | 分离 | 处理器1工作,处理器2等待 |
分割 | 分割 | 继续 | 继续 | 分离 | TLP执行 |
所示的实施例按如下进行工作。每个处理器元件能够执行它自己的程序。因此,系统最初以任务级并行模式进行工作。只要一个指令流是可用的,就可以使其中一个处理器元件无效以节省电力。程序中的指令表示处理器元件是应该按与其它处理器元件(加入)指令并行的方式来执行它的程序还是它应该独立地工作(分割)。没有指令的情况下,处理器元件可以采用默认模式(例如,分割模式工作)。
如果两个处理器元件都采用split模式,则中止信号是无效的,并且对于开关的配置信号使该开关保持在开启状态下。这具有如下效果:两个处理器元件彼此独立地工作,即根据不同的控制线程来进行工作。如果两个处理器元件都采用加入模式,则中止信号也是无效的,但是对于开关的配置信号使该开关保持在关闭状态下。因此,所述处理器元件被耦合。例如,一个处理器元件可以令其它处理器元件脱离正常程序流程而跳转或执行防护指令。
如果其中一个处理器元件(例如,PE1)采用分割模式,而其它处理器元件(PE2)采用加入模式,则集群控制元件CCU就向正处于加入模式下的处理器元件提供有效的中止信号W2。这使得具有正集群指示符的处理器元件PE2中止处理直到其它处理器元件PE1已经结束它的当前任务并且还通过正指示符表明它准备形成集群为止。
图4示出包括任意数量的处理器元件PE1,...,PEn的处理器系统的实施例。在所示的实施例中,所述处理器元件是以一条链的形式排列的。每个处理器元件都具有第一和第二可编程集群请求指示符。第二处理器元件PE2例如具有第一指示符CR23和第二指示符CR21。这使可编程地控制集群的数量和大小成为可能。第一指示符CR23表示它是否请求与该链一侧(图中的右侧)上的一个或多个其它处理器元件形成集群的一部分,而第二指示符表示它是否请求与该链另一侧(图中的左侧)上的一个或多个其它处理器元件形成集群的一部分。
在图4中所示的实施例中,集群控制设备是以群集器控制元件CCE1、CCE2的链形式形成的。在这个实施例中,能够容易地通过为每个附加处理器元件添加附加的群集器控制元件来扩展所述处理器系统。因此,将处理器系统组织成包括任意数量处理器元件的任意数量的集群所需的硬件量仅仅随着处理器元件的数量而线性地增加。
群集器控制元件CCE1、CCE2...通过第一等待信号线WSL和第二等待信号线WSR而相互耦合。等待信号线传送这样的信号,该信号可表示:耦合于该线的处理器元件是否应该中止它们的动作。第一等待信号线在第一方向上向图中的左侧传送它的信号。第二等待信号在第二方向上向图中的右侧传送它的信号。所述群集器控制元件能够修改这些信号。由于群集器控制元件形成双向链WCL、WCR,因而不仅如果邻近的处理器元件未共享加入的尝试,而且如果所述处理器元件之前有另一个处理器元件仍不想加入到其右侧邻近处理器元件中,同时所有中间处理器元件都想双向加入,那么所述集群控制逻辑使处理器元件保持在等待状态下。照此,意图共同形成集群的处理器元件的每一个都等待直到所有都就绪为止。
在图5中更详细地示出了群集器控制元件CCEn的实施例。群集器控制元件接收第一等待信号线WSL的输入值WSLin、第二等待信号线WSRin的输入值以及集群请求指示符CRn,n+1和CRn+1,n,以作为输入信号。它提供集群信号Cn,n+1以及第一等待信号线WSL的输出值WSLout和第二等待信号线WSR的输出值WSRout,以作为输出信号。
集群信号Cn,n+1具有如下数值:
Cn,n+1=CRn,n+1 AND CRn+1,n。
第一等待信号线的输出信号具有如下数值:
WSLout=NOT(CRn,n+1)OR(WSLin AND CRn+1,n)。第二等待信号线的输出信号具有如下数值:
WSRout=NOT(CRn+1,n)OR(WSRin AND CRn,n+)。
如果处理器元件所连接的等待信号线WSL或WSR中的任何一个发信号通知这个则强制处理器元件处于等待状态。在所示的实施例中,等待信号线的逻辑“0”数值发信号通知必须采取等待状态。
在图6A-D中示出了如参照图4和5所述的不同系统配置的示例。图6A-D示意性地示出包括5个处理器元件PE1,...,PE5的处理器系统的不同工作模式。
为了清楚起见,仅仅示出它们的集群请求指示符的数值:
在图6A中,所有处理器元件PE1,...,PE5属于相同的集群CL,因为恰好两个处理器元件都具有彼此相关的正指示符,或者存在包括那两个处理器元件的处理器元件序列,其中每一对后续的处理器元件都具有彼此相关的正指示符。例如,处理器元件PE1和PE2具有彼此相关的正指示符CR12和CR21。对于处理器元件PE1和PE5,存在一个包括那两个处理器元件PE1、PE5的处理器元件PE1、PE2、PE3、PE4、PE5的序列,其中每一对后续的处理器元件都具有彼此相关的正指示符。
在图中,集群请求指示符CR10和CR56的数值不是相关的,因为处理器元件PE1没有先趋而处理器元件PE5没有后继。这是以不关注“#”来说明的。
在图6B中,形成两个集群CL1和CL2。第一集群CL1包括处理器元件PE1、PE2和PE3。第二集群CL2包括处理器元件PE4、PE5。为此,除了位于集群CL1、CL2之间的边界上那些之外,所有集群请求指示符都为真。
在图6C中,所有处理器元件都是独立的。为此,每个集群请求指示符为假。
在图6D中,处理器元件PE1、PE2、PE3和PE5独立地工作。处理器元件PE4尝试与处理器元件PE5形成集群。它表示这带有正指示符CR45。然而,处理器元件PE5具有负指示符CR54。集群控制设备(在此未示出)检测这个并向处理器元件PE4发出中止信号,以便后者等待直到PE5也已经表明它准备形成集群为止。
在根据图4、5和6的实施例中,所述处理器元件中每一个都具有两个集群请求指示符,利用所述指示符它们能够表示它们尝试在何种方向上形成集群。这具有供一维配置使用的实际数值。如图7中所示,这同样也能够应用在处理器元件的二维布局中,正如示意性地示出的一条处理器元件链和群集器控制元件PE1,CCE1,..,CCE10,PE10。
然而,优选地,集群控制体系结构是密切相关于处理器元件的物理布局的。即,在二维布局中,处理器元件应该能够直接与它们的4个最近邻形成集群。在图8中示意性地示出了实现此体系结构。
处理器元件PEn;m耦合于带有近邻PEn-1;m、PEn+1;m,PEn;m-1和PEn;m+1的群集器控制元件CCEn-1,n;m、CCEn,n+1;m、CCEn;m-1,m和CCEn;m,m+1。所述群集器控制元件使处理器元件能尝试在任意四个方向上形成集群。该处理器元件PEn;m表示带有集群请求信号CRn;m,n-1;m、CRn;m,n+1;m、CRn;m,n;m+1和CRn;m,n;m-1的该尝试。
所述体系结构包括四条等待信号线WSL、WSR、WSU、WSD。等待信号线用来中止尝试与不准备加入集群的处理器元件形成集群的处理器元件的工作。信号线WSL和WSR的信号值能够由群集器控制元件CCEn-1,n;m和CCEn,n+1;m来修改。在那些控制元件之间扩展的WSL和WSR信号线分段中,信号值分别表示为L和R。信号线WSU和WSD的信号值能够由群集器控制元件CCEn;m-1,m和CCEn;m,m+1来修改。在后两个控制元件之间扩展的WSU和WSD的信号线分段中,信号值分别表示为U和D。只要信号值R、L、U或D中的任一个具有逻辑值“0”,就强制处理器元件PEn;m中止它的动作。
所述群集器控制元件提供集群信号Cn-1,n;m、Cn,n+1;m、Cn;m-1,m和Cn;m,m+1。
举例来说,在图中向上、向左、向下、向右的方向上实现集群。然而,对熟练技术人员而言将清楚的是,这是选择的问题。例如,在三角形网格中,处理器元件往往具有可表示三个方向上加入尝试的三个加入请求信号,其中所述这些方向之间的角度为120度。作为选择,处理器元件能够以3D模式排列,并且具有6个输出,可表示该处理器是否尝试在6个方向上加入,所述6个方向就是:正的和负的X方向、正的和负的Y轴方向、正的和负的Z轴方向。
在图9中示出了对应图8的体系结构的群集器控制元件的实施例。举例来说,描述了群集器控制元件CCEn,n+1;m。这个群集器控制元件提供了信号Cn,n+1;m,其表示在处理器元件PEn;m与PEn+1;m之间进行群集。它还根据集群请求指示符CRn;m,n-1;m、CRn;m,n+1;m提供了局部于处理器元件PEn;m的等待信号线WSL的数值L,以及提供局部于处理器元件PEn+1;m的等待信号线WSL、WSU、WSD的信号值L’、U’和D’。它还根据集群请求指示符CRn;m,n-1;m、CRn;m,n+1;m提供了局部于处理器元件PEn+1;m的等待信号线WSR的数值R’,以及提供局部于处理器元件PEn;m的等待信号线WSL、WSU、WSD的信号值L、U和D。
信号Cn,n+1;m、L和R’是按如下计算的:
Cn,n+1;m=CRn;m,n-1;m AND CRn;m,n+1;m
L=(CRn+1;m,n;m AND L’AND U’AND D’)OR NOT CRn;m,n+1;m
R’=(CRn;m,n+1;m AND R AND U AND D)OR NOT CRn+1;m,n;m
按照类似的方式,群集器控制元件CCEn;m,m+1计算下列信号:
Cn;m,m+1=CRn;m,n;m+1AND CRn;m+1,n;m
U=(CRn;m+1,n;m AND U”AND L”AND R”)OR NOT CRn;m,n;m+1
D’=(CRn;m,n;m+1AND D AND L AND R)OR NOT CRn;m+1,n;m
其中,U”、L”和R”是局部于处理器元件PEn;m+1的等待信号线WSU、WSL和WSR的数值。
处理器的配置能够按简单的方式以软件来控制。这可以通过提供表示哪一个处理器元件应该加入集群中的显式指令或让编译器自己决定调度多数优选配置的隐式指令来完成。
所以,处理器元件应该具有第一指令join,其通过提供正的集群请求指示符来命令处理器元件尝试与另一个处理器元件形成集群。
处理器元件所能加入的其它处理器元件是由控制网络的拓扑结构而确定的,所述控制网络使处理器单元能互相交换集群请求。原则上,网络所允许的群集与处理器元件的相对位置无关。然而,就效率而言,最好是处理器元件仅仅加入它们的邻近。当然,可以让邻近加入到另一个邻近之中以便集群能够具有任何需要的大小。具体来讲,如果可以让处理器元件在两个相互横向的方向上加入到它的邻近之中则是优选的。这非常适合于2D平面中的处理器系统的实现并且在定义集群方面带来灵活性,而用于控制群集的控制电路的复杂度是适度的。同样,可以想到的是:例如在如下处理器系统是以多层芯片实现的实施例中,允许处理器在三个相互横向的方向上加入它们的邻近。
如果存在处理器元件可能尝试与之形成集群的一个以上的潜在的其它处理器元件,那么可以提供诸如joinx+、joinx-、joinx之类的几条第一指令,以指示处理器在X轴的正方向上、沿该轴在反方向上或在这两个方向上加入另一个处理器元件。类似地,这可以扩展到其它方向,例如x、y和Z轴。join指令使得处理器元件执行它以激活一个或多个加入请求信号。
优选地,使用单条join指令,该指令把方向作为参数,其中在所述方向上处理器应该尝试加入另一个处理器。
join指令的互补指令就是第二指令split。split指令使处理器元件的集群分割成子集群。同样,可以有不同的第二指令来表示分割的方向,但是优选地存在具有用于表示方向的参数的单条split指令,其中分割应该在所述方向中执行。分割指令使得处理器元件使一个或多个加入请求信号无效。
在实施例中,split指令使join指令的效果反向。这意味着split指令可以不必形成以前不存在的集群。在这种情况下,其中一条指令不需要参数,但是可能仅仅在执行它们的反方向上使其它指令的作用失效。
这在图10A-10E中作了说明。
例如,假设处理器元件1-9最初形成如图10A中所示的单个集群。正如在图10B中举例说明的那样,第一条split指令将集群分割成带有用来执行任务B的处理器元件1-3的第一个子集群,和带有用于执行任务C的处理器元件4-9的第二个子集群。图10C示出第二条split指令将如何第二个子集群分割成分别带有元件4-6和元件7-9的两个子集群。这两个子集群分别执行任务E和F。在那种情况下,第一条join指令使如图10D中所示的元件4-9的子集群中的两个子集群重新结合,而第二条join指令使图10A中所示的单个集群中的所有元件重新结合。不会允许直接将处理器系统从图10C中所示的配置重新配置成图10E中所示的配置。
作为选择,还可以具有单条指令,所述单条指令使处理器元件可选地加入另一个处理器元件并分割开与处理器的连接。
作为选择,处理器元件往往具有单条指令,例如Config(P1,P2,P3,P4),其具有对应于每一个其它处理器元件的参数,其中利用所述其它处理器元件它能够潜在地以加入的模式进行工作,所述参数具有该参数的第一数值,其表示它应该尝试加入相应的处理器,还具有该参数的第二数值,其表示它应该独立于该相应的处理器来进行工作。编译器或程序员能够调度处理器的程序,以便处理器元件仅仅尝试在相同的时间加入。例如,如果两个处理器元件首先执行独立的任务A和B(TLP),其中任务A是最短的,并且随后必须以ILP的方式执行公共任务,则可以通过插入NOP(无操作)指令而使执行任务A的处理器尝试加入的时刻延迟到其它处理器元件尝试加入的时刻。代替执行一个NOP指令的序列,处理器元件可以执行一条NOP(N)指令,其中NOP(N)规定了无效循环周期的数目。
优选地,控制网络产生等待信号来使请求加入的处理器元件保持等待状态直到它想要加入到其中的其它处理器或集群也准备加入为止。这大大地简化了编程,因为不再需要计算等待循环周期的数目。此外,还允许处理器元件异步地进行工作,并且允许执行具有数据相关的长度的任务。
图11示出了程序员如何能命令编译器为根据本发明的处理器系统产生包含指令的目标代码的示例。描述“执行任务A”向编译器表明应该在包括一个或多个处理器元件的单个集群中实施为任务A所规定的程序。描述“与任务C并行地执行任务B”向编译器表明任务B和任务C应该在独立的集群中执行。轮廓化(Profiling)允许编译器估计每个任务的处理成果。依据所估计的处理成果以及可按ILP方式执行任务所达到的程度,编译器能够给任务单元分配许多处理器元件。
在所示的编程示例中,处理器的配置是动态控制的。即,在执行主任务期间,修改处理器的配置。更具体来讲,所选的配置是数据相关的。例如,函数Func1()的结果确定了处理器系统是否将并行地执行任务A(task A)或任务B(task B)和任务C(task C)。在翻译这个程序段的过程中,编译器能够依据所述任务的处理成果以及可按ILP执行它所达到的程度,将函数Func1()的计算分配到一个或多个处理器元件。随后,如果判定Var1为假,则其中一个处理器元件可以使它的集群请求标志无效。这导致两个子集群的创建,一个被分配给任务C。依据第二函数Func2()的结果,任务C的处理要么继续作为相同子集群上的任务D执行,要么作为两个并行线程来执行,所述两个并行线程都是在那个集群的两个子集群处执行的。
应当注意:本发明的保护范围不局限于这里所描述的实施例。本发明的保护范围也不受权利要求中的参考标记限制。单词“包括”不排除除那些在权利要求中提到的部件以外的部件。元件前的单词“一(一个)”不排除多个那样的元件。形成为本发明的一部分的装置既可以按专用硬件的形式来实现也可以按编程的通用处理机的形式来实现。本发明在于每个新的特征或特征组合。
Claims (7)
1.一种处理器系统,其包括至少第一和第二处理器元件(PE1,PE2),第一处理器元件(PE1)具有与第二处理器元件相关的集群请求指示符(CR12),而第二处理器元件(PE2)具有与第一处理器元件相关的集群请求指示符(CR21),这些处理器元件具有实现指示符的动态控制的指令集,指示符(CR12,CR21)具有包括至少第一数值(正指示符)和第二数值(负指示符)的数值范围,所述第一数值表示处理器元件请求利用相关的处理器元件来形成集群,而第二数值表示处理器元件未请求利用相关的处理器元件来形成集群,所述系统进一步包括:集群控制设备(CC12),其检测集群请求指示符的数值并且按照所检测的数值在集群中组织处理器元件,如果两个处理器元件具有彼此相关的正指示符或者如果存在包括那两个处理器元件的处理器元件序列,那么它们则都属于相同的集群,其中每一对后续的处理器元件具有彼此相关的正指示符。
2.根据权利要求1所述的处理器系统,其中集群中已组织的处理器元件在公共线程的控制下工作。
3.根据权利要求1所述的处理器系统,其中集群控制设备(CC12)向一个处理器元件提供中止信号(WT1,WT2),所述处理器元件尝试与尚末准备加入一个集群的其它处理器元件形成所述集群。
4.一种用于操作包括至少第一和第二处理器元件的系统的方法,所述方法包括可编程控制与第二处理器元件相关的第一处理器元件的集群请求指示符以及可编程控制与第一处理器元件相关的第二处理器元件的集群请求指示符,
指示符具有包括至少第一数值(正指示符)和第二数值(负指示符)的数值范围,所述第一数值表示处理器元件请求与相关的处理器元件形成集群,而第二数值表示处理器元件未请求与相关的处理器元件形成集群,
检测集群请求指示符的数值,以及按照所检测的数值在集群中组织处理器元件,如果两个处理器元件具有彼此相关的正指示符或者如果存在包括那两个处理器元件的处理器元件序列,那么这两个处理器元件都属于相同的集群,其中每一对后续的处理器元件都具有彼此相关的正指示符。
5.一种用于包括至少第一和第二处理器元件的系统的程序,所述第一处理器元件具有与第二处理器元件相关的集群请求指示符,而第二处理器元件具有与第一处理器元件相关的集群请求指示符,处理器元件具有允许指示符的动态控制的指令集,指示符具有包括至少第一数值(正指示符)和第二数值(负指示符)的数值范围,所述第一数值表示处理器元件请求与相关的处理器元件形成集群,而第二数值表示处理器元件未请求与相关的处理器元件形成集群,
所述系统进一步包括:集群控制设备,其检测集群请求指示符的数值并按照所检测的数值在集群中组织处理器元件,如果两个处理器元件具有彼此相关的正指示符或者如果存在包括那两个处理器元件的处理器元件序列,那么这两个处理器元件都属于相同的集群,其中每一对后续的处理器元件都具有彼此相关的正指示符,
所述程序包括至少第一指令,其引起至少其中一个集群请求指示符的数值上的变化。
6.一种用于产生根据权利要求5的程序的编译器。
7.一种包括根据权利要求5的程序的记录载体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03101975 | 2003-07-02 | ||
EP03101975.5 | 2003-07-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1816806A true CN1816806A (zh) | 2006-08-09 |
Family
ID=33560836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800190918A Pending CN1816806A (zh) | 2003-07-02 | 2004-06-30 | 系统、方法、程序、编译器和记录载体 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20060184923A1 (zh) |
EP (1) | EP1644843A2 (zh) |
JP (1) | JP2007521554A (zh) |
CN (1) | CN1816806A (zh) |
WO (1) | WO2005003991A2 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230423B2 (en) * | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
US8732716B2 (en) | 2008-09-30 | 2014-05-20 | International Business Machines Corporation | Virtualization across physical partitions of a multi-core processor (MCP) |
US8438404B2 (en) * | 2008-09-30 | 2013-05-07 | International Business Machines Corporation | Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element |
EP2401894B1 (en) * | 2009-02-26 | 2015-04-08 | Koninklijke Philips N.V. | Routing messages over a network of interconnected devices of a networked control system |
US20220269436A1 (en) * | 2019-07-19 | 2022-08-25 | Rambus Inc. | Compute accelerated stacked memory |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5127092A (en) * | 1989-06-15 | 1992-06-30 | North American Philips Corp. | Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition |
US5956518A (en) * | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
US6026478A (en) * | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US6026479A (en) * | 1998-04-22 | 2000-02-15 | Hewlett-Packard Company | Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs |
US6298430B1 (en) * | 1998-06-01 | 2001-10-02 | Context, Inc. Of Delaware | User configurable ultra-scalar multiprocessor and method |
US6574725B1 (en) * | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US6738871B2 (en) * | 2000-12-22 | 2004-05-18 | International Business Machines Corporation | Method for deadlock avoidance in a cluster environment |
-
2004
- 2004-06-30 CN CNA2004800190918A patent/CN1816806A/zh active Pending
- 2004-06-30 EP EP04744427A patent/EP1644843A2/en not_active Withdrawn
- 2004-06-30 JP JP2006516782A patent/JP2007521554A/ja not_active Withdrawn
- 2004-06-30 WO PCT/IB2004/051055 patent/WO2005003991A2/en active Application Filing
- 2004-06-30 US US10/562,888 patent/US20060184923A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2005003991B1 (en) | 2005-12-01 |
US20060184923A1 (en) | 2006-08-17 |
WO2005003991A3 (en) | 2005-06-30 |
WO2005003991A2 (en) | 2005-01-13 |
EP1644843A2 (en) | 2006-04-12 |
JP2007521554A (ja) | 2007-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fang et al. | swdnn: A library for accelerating deep learning applications on sunway taihulight | |
JP2021192257A (ja) | プログラム可能な最適化を有するメモリネットワークプロセッサ | |
Nowatzki et al. | Pushing the limits of accelerator efficiency while retaining programmability | |
Sarma et al. | Bilevel parallel genetic algorithms for optimization of large steel structures | |
Buchty et al. | A survey on hardware‐aware and heterogeneous computing on multicore processors and accelerators | |
Sankaralingam et al. | Exploiting ILP, TLP, and DLP with the polymorphous TRIPS architecture | |
Chu et al. | Data access partitioning for fine-grain parallelism on multicore architectures | |
CN1272705C (zh) | 包括纯量算术逻辑单元的单指令多数据处理机 | |
CN1172240C (zh) | 多处理器系统及程序最佳化方法 | |
CN101796484A (zh) | 线程优化的多处理器架构 | |
CN1656445A (zh) | 对宽存储器访问 | |
Bosilca et al. | Performance portability of a GPU enabled factorization with the DAGuE framework | |
DE102019119956A1 (de) | Architektur und verfahren zur datenparallelen einzelprogramm- mehrfachdaten(spmd)-ausführung | |
Zhang et al. | Point-x: A spatial-locality-aware architecture for energy-efficient graph-based point-cloud deep learning | |
González-Domínguez et al. | Parallel pairwise epistasis detection on heterogeneous computing architectures | |
Tran et al. | Memory-efficient parallelization of 3D lattice Boltzmann flow solver on a GPU | |
CN106326184A (zh) | 基于cpu、gpu和dsp的异构计算框架 | |
Cai et al. | Deepburning-seg: Generating dnn accelerators of segment-grained pipeline architecture | |
Huo et al. | Porting irregular reductions on heterogeneous CPU-GPU configurations | |
CN1816806A (zh) | 系统、方法、程序、编译器和记录载体 | |
Byun et al. | Optimizing xeon phi for interactive data analysis | |
Rheindt et al. | X-centric: a survey on compute-, memory-and application-centric computer architectures | |
Kim et al. | Exploiting both pipelining and data parallelism with SIMD reconfigurable architecture | |
US20090144523A1 (en) | Multiple-simd processor for processing multimedia data and arithmetic method using the same | |
Wittmann et al. | An analysis of energy-optimized lattice-Boltzmann CFD simulations from the chip to the highly parallel level |
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 |