CN101082900B - 通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法 - Google Patents

通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法 Download PDF

Info

Publication number
CN101082900B
CN101082900B CN2007101074820A CN200710107482A CN101082900B CN 101082900 B CN101082900 B CN 101082900B CN 2007101074820 A CN2007101074820 A CN 2007101074820A CN 200710107482 A CN200710107482 A CN 200710107482A CN 101082900 B CN101082900 B CN 101082900B
Authority
CN
China
Prior art keywords
processor
processors
start address
memory area
identifier
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
Application number
CN2007101074820A
Other languages
English (en)
Other versions
CN101082900A (zh
Inventor
S·L·罗伯茨
C·J·斯潘迪科
A·P·伯恩斯
T·斯旺森
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101082900A publication Critical patent/CN101082900A/zh
Application granted granted Critical
Publication of CN101082900B publication Critical patent/CN101082900B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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/3891Concurrent 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Abstract

提供了一种用于通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法。为了向多个处理器广播数据,控制处理器对存储多个处理器的标识符的寄存器进行写入,并将这些寄存器中的两个或更多设定为相同值。控制处理器可以将待被广播的期望数据/指令写入到与起始地址相对应的存储器部分中,其中该起始地址与两个或更多处理器的处理器标识符相关联。当两个或更多处理器寻找从其中进行读取的本地存储的起始地址时,这两个或更多处理器将标识相同的起始地址,本质上混叠了该存储器区域。这两个或更多处理器将从开始于被标识起始地址的相同混叠存储器区域中读取指令/数据并处理该相同的指令/数据。

Description

通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法
技术领域
本申请一般地涉及改进的数据处理系统和方法。更具体地,本申请针对一种用于通过混叠(aliasing)向多处理器设备中的多个处理器广播指令/数据的系统和方法。
背景技术
当前计算设备的趋势是在单个计算设备中提供多个处理器,其中每个处理器可以基本同时地执行不同指令。通过依此方式来提供多个处理器,通过跨越多个处理器来分布应用从而实现更高的指令执行速度。
一种类型的多处理器系统是对称多处理器(SMP)系统,在该系统中两个或更多相同的处理器连接到单个共享的主存储器。当今最常见的多处理器系统使用SMP架构。SMP系统允许任何处理器执行任何任务,而不管用于该任务的数据位于存储器的什么地方。通过适当的操作系统支持,SMP系统可以很容易地在处理器之间移交任务以有效地平衡工作负载。然而,存储器比对其进行访问的处理器要慢,并且即使是单处理器机器也趋向于花费相当长的时间来等待来自存储器的数据的到达。SMP使得情况更糟,因为多处理器对一组资源发生竞争。
在SMP系统中使用了不同类型的存储器组织。一种类型是非一致内存访问(NUMA)系统,其向不同的处理器贡献不同的存储器库。这允许处理器平行地访问存储器,这可以在数据局部化于特定进程并因此局部化于特定处理器时显著地改善存储器吞吐量。然而,NUMA使得将数据从一个处理器移交到另一个处理器的成本较昂贵,即平衡工作负载较昂贵。NUMA的优势局限于特定工作负载,特别是局限于其中的数据通常与特定任务或用户有很强关联的服务器。
其他系统包括非对称多处理(ASMP)系统,在该系统中不同的专门处理器用于特定任务。而且,在另一种类型的非对称多处理系统中,即在计算机集群多处理中(例如Beowulf)中,并非所有的存储器都可以供所有的处理器使用。前者的使用或支持并不广泛,但现代视频卡中的高功率3D芯片组可以被看作是一种非对称多处理的形式。而后者相当广泛地用于构建非常大型的超级计算机。
在这些类型的多处理器系统中,所关注的是通过使每个处理器处理不同指令和不同数据而跨越多个处理器来分布处理负载的能力。因此,这些系统没有被配置成考虑向多处理器系统中的多个处理器广播单一数据集。实际上,这些系统中的总线架构通常阻止向多个处理器广播指令和/或数据,因为有必要能够在处理器之间进行区分以执行负载分布和负载平衡操作。
发明内容
所示意的实施方式提供一种用于通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法。在一个示意性实施方式中,为多处理器系统中的每个处理器提供存储映射输入/输入(MMIO)寄存器,该寄存器存储多处理器系统中特定处理器的标识符。提供另一MMIO寄存器,用于标识与多个处理器相关联的本地存储的大小。这些MMIO寄存器由处理器用来定义用于与特定处理器相关联的本地存储的起始地址。
为了向多处理器系统中的多个处理器广播数据,控制该广播的处理器,例如控制处理器,对存储各处理器的标识符的MMIO寄存器进行写入,并将这些MMIO寄存器中的两个或更多设定为相同值,从而暂时将两个或更多处理器的本地存储区标识为相同。控制处理器可以例如通过直接存储器访问(DMA)写入操作而将待被广播的期望数据和/或指令写入到与起始地址相对应的存储器部分中,其中该起始地址与两个或更多处理器的本地存储起始地址标识符相关联。
以此方式,当两个或更多处理器寻找从其中读取指令/数据以进行处理的本地存储的起始地址时,这两个或更多处理器将标识相同的起始地址,本质上混叠了两个或更多处理器之间的存储器区域。这两个或更多处理器将从开始于被标识起始地址的相同混叠存储器地址空间中读取指令/数据并处理该相同的指令/数据。
接下来,一旦完成了广播操作,则控制处理器可以将存储该两个或更多处理器的标识符的MMIO寄存器复位回它们的原始值。然后可以恢复多处理系统的正常操作。
在一个示意性实施方式中,提供了一种用于在多处理器系统中将数据广播至多个处理器的方法。该方法可以包括:针对多个处理器中的每个处理器而将用于分配给该处理器的存储器区域的起始地址修改为用于多个处理器中每一个处理器的公用起始地址。可以将待广播至多个处理器的数据写入到对应于该公用起始地址的存储器区域中。在将待广播的数据写入到对应于该公用起始地址的存储器区域中之后,可以将用于分配给每个处理器的存储器区域的起始地址修改为在多个处理器器之间非公用的原始起始地址。该多个处理器可以是多处理器系统中所有处理器的子集。
修改用于存储器区域的起始地址可以包括向与处理器相关联的标识符寄存器写入公用标识符值。该公用标识符值对于多个处理器中的每一个处理器可以是相同的。起始地址可以由下列关系来确定:
起始地址=标识符*大小+基本偏移
其中该标识符是在与处理器相关联的标识符寄存器中提供的处理器的标识符,大小是与处理器相关联的存储器区域的大小,而基本偏移是第一存储器区域的偏移地址值。
针对多个处理器中每个处理器而将用于分配给该处理器的存储器区域的起始地址修改为在多个处理器之间非公用的原始起始地址可以包括:独立于与处理器相关联的存储器区域,提供与该处理器相关联的标识符寄存器。可以将原始标识符值写入到标识符寄存器,从而将用于分配给处理器的存储器区域的起始地址修改为原始起始地址。
针对多个处理器中每个处理器而将用于分配给该处理器的存储器区域的起始地址修改为在多个处理器之间非公用的原始起始地址可以包括:除了一个处理器之外,将多个处理器中的所有处理器放置于睡眠(SRI)操作模式。可以将原始标识符值写入与处理器相关联的存储器区域。这一个处理器可以读取原始标识符值并将其在标识符寄存器中的标识符值设定为原始标识符值。可以对放置步骤、写入步骤和读取步骤进行迭代重复,从而多个处理器中的每个处理器将其标识符值返回到原始标识符值。
多处理器系统可以是具有控制处理器和多个协同处理器的多处理器系统。该多个协同处理器可以构成多个处理器。该多处理器系统可以是异构多处理器系统,在该系统中该多个协同处理器使用不同于控制处理器的指令集进行操作。
在另一示意性实施方式中,提供了一种包括具有计算机可读程序的计算机可用介质的计算机程序产品。该计算机可读程序在计算设备上执行的时候使得计算设备执行以上根据方法示意性实施方式所列出的操作中的一个或组合。
在又一示意性实施方式中,提供了一种多处理器计算系统,其包括控制处理器和多个耦合到该控制处理器的协同处理器。该控制处理器可以执行上述方法示意性实施方式所列出的操作中的一个或组合。
在再一示意性实施方式中,提供了一种用于在多处理器系统中向具有共享存储器的多个处理器广播数据的方法。该方法可以包括:针对多个处理器中的每个处理器而对用于共享存储器中分配给所述处理器的存储器区域的起始地址进行修改,从而多个处理器中的每一个处理器在共享存储器中具有公用起始地址。可以将数据写入到该公用起始地址所标识的存储器区域中,从而将数据广播到多个处理器。响应于将数据写入到该公用起始地址所标识的存储器区域,可以对用于分配给每个处理器的存储器区域的起始地址进行修改,从而每个处理器在共享存储器中具有唯一的起始地址。
在本发明的示范性实施方式的以下的详细描述中,本发明的这些和其他特征及有益效果将得到描述或将对本领域技术人员变得清楚明了。
附图说明
所附权利要求书阐述了被认为是本发明之特征的新颖特征。然而,通过连同附图一起阅读说明性的实施方式的下述详细描述,将更好地理解该发明本身、其优选使用方式、其他目的及其优点,附图中:
图1是描绘了可以在其中实现示意性实施方式的Cell宽带引擎(CBE)架构的示例性框图;
图2是根据一个示意性实施方式的协同处理器元件的存储流控制器的示例性框图;
图3是描绘了根据一个示意性实施方式的协同处理单元标识寄存器的示例性图;
图4A-图4C是示出了根据一个示意性实施方式的用于将数据广播到多处理系统中的多个处理器的机制的示例性图;以及
图5是列出了用于将数据广播到多处理器系统中多个处理器的示例性操作的流程图。
具体实施方式
示意性实施方式提供了一种用于向多处理器系统中的处理器广播指令/数据的系统和方法。该示例性实施方式可以使用这样的任何多处理器系统,在该多处理器系统中提供一种可修改机制用于唯一地标识多处理器系统的每个处理器。可以在其中实现该示意性实施方式的一个这种多处理器系统是来自纽约Armonk的国际商业机器公司的Cell宽带引擎(CBE)架构。为了描述的目的,CBE架构将被用作在其中可以实现示例性实施方式的多处理器处理系统的例子。然而,应当理解的是,该示意性实施方式并不局限于使用CBE架构,而是可以使用其他多处理器系统,而不偏离本发明的实质和范围。
图1是可以在其中实现本发明的各方面的数据处理系统的示例性框图。图1所示的示例性数据处理系统是Cell宽带引擎(CBE)数据处理系统的实例。尽管在本发明的优选实施方式的描述中将使用CBE,但是,如本领域技术人员在阅读下列描述后能容易地理解的,本发明并不局限于此。
如图1所示,CBE100包括具有处理器(PPU)116和其L1和L2高速缓存112和114的功率处理器元件(PPE)110,以及多个协同处理器元件(SPE)120-134,每个协同处理器元件具有其自己的协同处理器单元(SPU)140-154、存储流控制155-162、本地存储器或存储(LS)163-170以及总线接口单元(BIU单元)180-194,其例如可以是直接存储器访问(DMA)、存储器管理单元(MMU)和总线接口单元的组合。还提供了高带宽内部元件互连总线(EIB)196、总线接口控制器(BIC)197以及存储器接口控制器(MIC)198。
本地存储器或本地存储(LS)163-170是大型存储器映射的非一致可寻址部分,其可以物理地提供为耦合至SPU140-154的小型存储器。本地存储163-170可以映射到不同的地址空间。这些地址区域在非混叠配置中是连续的。本地存储163-170通过其地址位置例如通过SPU标识寄存器(将在下文中进行更详细描述)而与其相对应的SPU140-154和SPE120-134相关联。系统中的任何资源都能够从本地存储163-170中读取和向本地存储163-170写入,只要该本地存储未被放置于安全操作模式,其中在该模式的情况下,只有与其相关联的SPU可以访问本地存储163-170或者本地存储163-170的指定安全部分。
CBE100可以是片上系统,从而图1中示出的每个元件可以提供在单个微处理器芯片上。此外,CBE100是一种异构处理环境,在该环境中每个SPU可以从系统中每个其他SPU接收不同的指令。此外,用于SPU的指令集可以不同于PPU的指令集,例如PPU可以执行基于精简指令集计算机(RISC)的指令,而SPU执行向量化指令。
SPE120-134通过EIB196耦合到L2高速缓存114并相互耦合。此外,SPE120-134通过EIB196耦合至MIC198和BIC197。MIC198提供到共享存储器199的通信接口。BIC197提供在CBE100与其他外部总线和设备之间的通信接口。
PPE110是双线程PPE110。该双线程PPE110与八个SPE120-134的结合使得CBE100能够处理10个同时线程以及128个待处理存储器请求。PPE110充当另外八个用于处理大多数计算工作负载的SPE120-134的控制器。PPE110可用于运行传统的操作系统,而SPE120-134例如执行向量化浮点代码执行。
SPE120-134包括协同处理单元(SPU)140-154、存储流控制单元155-162、本地存储器或存储163-170以及接口单元180-194。在一个示范性实施方式中,本地存储器或存储163-170包括256KB指令和数据存储器,其对于PPE110是可见的,并且可以由软件进行直接寻址。
PPE110可以以小程序或线程来装载SPE120-134,将SPE链接到一起以处理复杂操作中的每个步骤。例如,结合有CBE100的机顶盒可以装载用于读取DVD、视频和音频解码以及显示的程序,并且数据可以在各个SPE之间传递,直到该数据最后在输出显示器上结束为止。以4GHz,每个SPE120-134理论上给出了32GFLOPS的性能,其中PPE110具有相同水平的性能。
存储流控制单元(MFC)155-162用于SPU至系统的其余部分和其他元件之间的接口。MFC155-162提供用于主存储和本地存储163-170之间的数据传输、保护以及同步的主机制。在处理器中,逻辑上对每个SPU都具有MFC。某些实现可以在多个SPU之间共享单个MFC资源。在此实例中,为MFC定义的所有设施和命令必须表现为独立于用于每个SPU的软件。共享MFC的效应局限于依赖于实施的设施和命令。
图2是根据本发明的一个示意性实施方式的典型存储流控制(MFC)单元200的示例性框图。在此示意性实施方式中,MFC200具有两个通往SPU的接口210和212、两个通往总线接口单元(BIU)220的接口214和216、以及两个通往可选SL1高速缓存230的接口222和224。SPU接口210和212是SPU通道接口210和SPU本地存储接口212。SPU通道接口210允许SPU访问MFC设施并发布MFC命令。SPU本地存储接口212由MFC200用来访问SPU中的本地存储。通往BIU220的一个接口216允许针对MFC设施的存储器映射I/O(MMIO)访问。该接口216也允许其他处理器发布MFC命令。使用MMIO发布的命令称为MFC代理命令。
通往SL1高速缓存的接口222和224主要用于数据传输。一个接口222由MFC200用于访问主存储中的地址转换表,另一个接口224用于主存储和本地存储之间的数据传输。
如图2所示,典型MFC中的主要单元包括存储器映射输入/输出(MMIO)接口240、MFC寄存器250以及DMA控制器260。MMIO接口240将SPU的MFC设施映射到系统的实际地址空间中。这允许从任何处理器或系统中的任何设备来访问MFC设施。此外,MMIO接口240可以配置成将SPU的本地存储映射到实际地址空间中。这允许从任何处理器或系统中的任何设备来直接访问本地存储,使得可以实现本地存储至本地存储的传输和I/O设备直接访问SPU的本地存储域的能力。
MFC寄存器单元250包含大多数MFC设施。对于本发明尤其重要的是,MFC寄存器单元250包括SPU本地存储限制寄存器设施。利用该设施,特权软件可以在SPE的本地存储的大小上设定限制,这将在下文中进行详细描述。
数据的同步和传输通常是MFC200内的DMAC260的责任。DMAC260可以在SPU的本地存储和主存储区之间移动数据。可选地,该数据可以高速缓存于SL1高速缓存中。
SPE和PPE通过利用命令队列270和280其中之一来把DMA命令请求排列到MFC而指示MFC200执行这些DMA操作。SPE所发布的命令被排列到MFC SPU命令队列270中。PPE所发布的命令被排列到MFC代理命令队列280中。MFC使用存储器映射单元(MMU)290来执行所有的MFC地址转换以及MFC访问保护检查,上述是DMA传输所要求的。
MFC命令提供主要的方法,该方法使得在SPU中执行的代码能够访问主存储并能够保持与系统中其他处理器和设备的同步。也提供命令来管理可选高速缓存。MFC命令或者可以由SPU上运行的代码所发布,或者可以由另一处理器或设备(例如PPE)上运行的代码来发布。在关联SPU上运行的代码执行一系列通道指令以发布MFC命令。在其他处理器或设备上运行的代码执行一系列存储器映射I/O(MMIO)传输以向SPE发布MFC命令。所发布的命令被排队到命令队列270和280的其中之一。
通常,可以利用MFC寄存器单元250的MMIO寄存器或通过关联SPU所执行的通道指令来排队命令。MMIO方法旨在由PPE使用以控制主存储和代表SPE的关联本地存储之间的数据传输。传输数据的MFC命令称为MFC DMA命令。MFC DMA命令的数据传输方向总是从SPE的角度来参考。因此,将数据传输到SPE(从主存储至本地存储)的命令被视为获取命令,而将数据从SPE中传输出来(从本地存储至主存储)的命令被视为发出命令。
传输数据的命令被称为MFC DMA命令。这些命令被转化为本地存储域和主存储域之间的DMA传输。每个MFC通常可以同时支持多个DMA传输并且可以维护和处理多个MFC命令。每个MFCDMA数据传输命令请求涉及本地存储地址(LSA)和有效地址(EA)。本地存储地址能够仅对其关联SPU的本地存储区域进行直接寻址。有效地址具有更一般的应用,在于其能够参考主存储,并且如果所有的SPU本地存储区混叠到实际地址空间中,则主存储包括所有的SPU本地存储区域。
在上述的CBE架构100中,可以通过在与特定SPU相关联的存储器映射输入/输出(MMIO)寄存器中提供的SPU标识寄存器(SPU_IDR)来单独地标识SPU140-154中的每个。例如,SPU_IDR可以提供为MFC的寄存器250中一组SPU特权设施的一部分,例如图2中的SPU_IDR295。
SPU_IDR295包含32位的值,其可用于将SPU从CBE架构100中的其他SPU中区分开来。SPU_IDR295的内容可由PPE110进行访问,从而PPE110可以以特权方式读取或写入该寄存器295,而SPU不能够读取或写入该SPU_IDR295。
图3是示出了根据一个示意性实施方式的SPU_IDR的内容的示例性图。如图3所示,SPU_IDR的前32位即0-31位被保留并设定为0。后32位即32-63位用于存储32位值,该32位值将该SPU从系统中的其他SPU中区分开来。对于PPE110,针对SPU_IDR的访问类型是读取/写入,但并不提供从SPU对该寄存器的访问。
在CBE架构中,SPU_IDR值用作用于标识与该SPU相关联的本地存储的起始地址的手段。亦即,本地存储163-170可以提供为单个存储器阵列的不同存储器区域,这些不同存储器区域被分派给SPU140-154的每个。SPU_IDR值可用于执行该分派,这是通过设定SPU的分派的存储器区域的起始地址而执行的。
与SPU相关联的本地存储的起始地址进一步基于待分派给SPU140-154的每个的本地存储大小。本地存储大小寄存器,例如也可以提供为MFC寄存器250的一部分,可以存储针对SPU140-154的本地存储大小的值。基于该本地存储大小和SPU_IDR值,为用于特定SPU的本地存储计算起始地址。例如,在一个示意性实施方式中,SPU的本地存储的起始地址利用下列等式来进行计算:
SPE_LS_star_taddress=SPU_NUM*LS_SIZE+BP_BASE其中,SPU_NUM是SPU_IDR值中存储的SPU的编号,LS_SIZE是在本地存储大小寄存器中存储的本地存储大小的值,BP_BASE是本地存储寄存器的基本寄存器地址。因此,如果将两个或更多的SPU的SPU_IDR值设定为相同的值,并且该两个或更多的SPU的本地存储大小是相同的,则与这两个或更多SPU相关联的本地存储的起始地址将相同。结果,这两个或更多SPU将能够从起始于基于SPU编号、本地存储大小以及基本寄存器地址而确定的指定起始地址的相同的存储器区域(即混叠的存储器区域)中进行读取。
以此方式,通过将指令/数据写入该混叠的存储器区域,该指令/数据可以由多个SPU来读取,从而向SPU广播该指令/数据。这在CBE架构中尤其有用,因为总线架构自身并不支持向SPU广播指令/数据。相反,总线架构被构建为使得每个SPU可单独标识并且可以提供有不同的指令/数据集。然而,如上所述,尽管总线架构不允许广播指令/数据,但CBE架构自身通过以示意性实施方式所阐述的方式来操作SPU_IDR而支持广播。
示意性实施方式提供用于向多处理器设备(例如图1所示的CBE架构片上系统)中的多个处理器(例如SPU140-154)广播指令/数据的系统和方法。该示意性实施方式采用SPU_IDR作为混叠存储器区域的手段,从而多个SPU从该相同的混叠存储器区域中读取指令/数据。PPE110提供有广播引擎和SPU_IDR配置存储。该广播引擎负责写入到为指令/数据将被广播至的SPU所选定的SPU_IDR,从而将这些SPU_IDR的值设定为相同值。广播引擎将用于这些SPU_IDR的原始值写入到SPU_IDR配置存储,从而它们可以稍后在广播了指令/数据之后得到恢复。
广播引擎进一步负责将指令/数据写入到可由选定SPU访问的混叠存储器区域中。一旦完成了指令/数据的广播,则广播引擎将存储在SPU_IDR配置存储中的SPU_IDR值恢复为各SPU_IDR,从而可以恢复CBE片上系统的正常操作。
因此,广播引擎暂时将多个SPU设定为相同的SPU标识符,并将指令/数据写入到可由具有相同SPU标识符的SPU进行访问的混叠存储器区域中。然后,广播引擎将SPU设定为其原始SPU标识符并恢复多处理器设备的正常操作。
图4A-图4C是示出了根据一个示意性实施方式的用于向多处理器系统中的多个处理器广播数据的机制的示例图。为简化起见,图4A-图4C所示出的示意性实施方式采用三个SPU和它们的对应本地存储存储器区域。应当意识到,在该示意性实施方式中可以使用任意数量的SPU,而不脱离本发明的实质和范围。例如,如图1所示,可以提供7个SPU,因此在一个示意性实施方式中可以采用7个本地存储存储器区域。
如图4A所示,在正常操作期间,PPE410向用于各SPU的各存储器区域(即本地存储)写入指令和数据。因此,待由SPU0进行处理的指令和/或数据被写入到用于SPU0的本地存储存储器区域中,待由SPU1进行处理的指令和/或数据被写入到用于SPU1的本地存储存储器区域中,等等。
每个SPU0-SPU2具有关联的用于指定SPU(例如0、1和2)的标识的SPU_IDR420-424。用于每个SPU的本地存储存储器区域通过起始地址和本地存储大小来定义。该起始地址基于SPU标识符(例如0、1或2)、本地存储大小以及基本寄存器地址BP_base来确定。因此,用于SPU0的本地存储具有处于BP_base的起始地址(即0*LS_size+BP_base),用于SPU1的本地存储具有处于LS_size+BP_base的起始地址(即1*LS_size+BP_base),用于SPU2的本地存储的起始地址处于2LS_size+BP_base。每个SPU可以从对应于它们各自起始地址和本地存储大小的本地存储存储器区域中读取指令/数据以及向该区域写入指令/数据。
如图4B所示,当将要执行指令/数据的广播时,PPE410的广播引擎412可以选择指令/数据将要被广播至的SPU,其可以是所有SPU或SPU的选定子集,并且可以在SPU_IDR配置存储414中存储它们的原始SPU_IDR值。然后广播引擎412可以将公用SPU标识符写入到选定SPU的SPU_IDR。例如,广播引擎412可以将SPU0标识符写入到用于SPU0和1的SPU_IDR420和422,从而使得两个SPU就像它们是相同的SPU(即SPU0)一样操作。
结果,当SPU0和1企图从它们的本地存储存储器区域中进行读取时,两个SPU从起始于对应于SPU0的起始地址的相同本地存储存储器区域中进行读取,该相同本地存储存储器区域即为起始于BP_base的起始地址(即0*LS_size+BP_base)的本地存储存储器区域。以此方式,相同本地存储存储器区域在两个或更多SPU之间混叠。
一旦选定SPU被重新配置为具有存储在SPU_IDR中的相同值时,则广播引擎412可以将待广播至选定SPU的指令/数据写入到对应于公用SPU_IDR值的本地存储存储器区域。当选定SPU(例如SPU0和SPU1)从它们的本地存储存储器区域中读取时,二者将从所广播的指令/数据已经被写入的混叠本地存储存储器区域中进行读取,因此两个SPU将接收待处理的相同指令/数据。因此,即使总线架构本身并不支持指令/数据的广播,指令/数据也已经广播给了多个SPU。
在所广播的指令/数据已经被选定SPU读取之后,这可以通过使用CBE架构中提供的同步指令来确定,SPU_IDR值必须返回到它们的原始值以恢复系统的正常操作。如图4C所示,为了恢复正常操作,PPE410的广播引擎412在来自SPU_IDR配置存储414的原始SPU_IDR值中进行读取并将这些原始值写回到它们各自的SPU_IDR420和422。以此方式,本地存储存储器区域的起始地址返回到它们的正常值。此后,以与针对图4A的上述描述相同的方式将指令和数据写入到本地存储存储器区域,并且SPU以针对图4A的上述描述的正常方式来读取和写入这些本地存储存储器区域。
因此,示意性实施方式提供了一种用于混叠存储器区域从而其可以由多处理器系统中的多个处理器来访问的机制。可以将待广播到多个处理器的指令和数据写入到该混叠的存储器区域中,从而该多个处理器可以读取指令和数据并对它们进行处理。存储器区域的混叠可以通过将与多个处理器相关联的存储器区域的起始地址设定为相同起始地址而实现。针对多个处理器将起始地址设定为相同值可以通过将处理器的标识符设定为相同值而实现。以此方式,处理器表现得就像它们是用于广播指令/数据目的的相同处理器一样,即使它们在实际上是多处理器系统中的不同处理器。
图5是列出了用于将数据广播到多处理器系统中多个处理器的示例性操作的流程图。可以理解的是,流程图中的每个框以及流程图中多个框的组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给处理器或其他可编程数据处理装置以产生机器,从而在处理器或其他可编程数据处理装置上执行的指令创建用于实现一个流程框或多个框中所指定的功能的装置。这些计算机程序指令还可以存储在计算机可读存储器或存储介质中,并且能够引导处理器或其他可编程数据处理装置以特定方式进行工作,从而存储在计算机可读存储器或存储介质中的指令产生包括指令装置的制造产品,该指令装置实现流程框中所指定的功能。
因此,流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的程序指令装置以及用于执行指定功能的步骤的组合。还将可以理解,流程图的每个框以及流程图中框的组合可以由执行指定功能或步骤的基于专用硬件的计算机系统来实现,或由专用硬件和计算机指令的组合来实现。
如图5所示,该操作开始于控制处理器(例如PPE)的广播操作的初始化(步骤510)。例如可以响应于指示应当将相同的指令/数据提供给多处理器系统中的多个处理器的操作系统、应用等等来执行广播操作的初始化。可以提供专用广播指令以标识将指令/数据广播到多处理器系统中多个处理器的需要。
与控制处理器相关联的广播引擎确定多处理器系统中的哪些处理器将接收广播指令/数据(步骤520)。在某些示意性实施方式中,指令/数据的广播总是针对多处理器器系统中的所有处理器或协同处理器来执行。在其他示意性实施方式中,广播可以相对于多处理器系统中处理器的选定子集来执行。在后一种情况中,例如可以通过控制处理器(PPE)来确定哪些处理器将接收广播指令/数据。将要接收广播数据的处理器可以映射到单一地址空间,而意在继续它们的正常操作的处理器可以保持不变。
然后广播引擎取回存储在它们各自存储器映射输入/输出标识寄存器中的针对这些处理器的当前标识符值(步骤530)。这些原始标识符值由广播引擎存储在配置存储中,以随后用于将系统返回到正常操作状态(步骤540)。然后该广播引擎可以将公用标识符写入到与广播指令/数据将要发送至的选定处理器相关联的每个标识符寄存器中(步骤550)。如先前所述,由于处理器的标识符用于标识与各个处理器相关联的存储器区域的起始地址,将标识符设定为公用标识符,该处理实质上是将所有的处理器指向相同的存储器区域,从而混叠该存储器区域以供所有的选定处理器使用。
然后广播引擎可以将待广播指令/数据写入到起始地址所指定的存储器区域中,其中该起始地址对应于写入到选定处理器的标识符寄存器的公用标识符(步骤560)。然后选定处理器可以从混叠的存储器区域中读取指令/数据(步骤570)。然后广播引擎可以从配置存储中取回原始标识符值(步骤580)并将这些原始值写回到适当的标识符寄存器中(步骤590)。此后,恢复系统的正常操作(步骤600)并且该处理终结。
应当注意到,在使用公用标识符将每个处理器的起始地址设定为公用起始地址之后,将系统返回到正常操作可能存在问题,因为多个处理器全部与相同的地址区域相关联。因此,如果将原始标识符写入到该地址区域以将处理器的标识符重新设定回其原始值,那么指向此地址区域的所有处理器将被重新设定为该原始值。因此,在返回到正常操作时能够隔离每个处理器是很有必要的。
可以执行此隔离的一种方法是提供分离于和独立于存储针对SPE的SPU_IDR值的本地存储的特权地址区,例如存储SPU_IDR的MMIO寄存器。这可以通过允许实现具有偏移寄存器而不是使这些MMIO寄存器作为用于本地存储的地址区的一部分而实现,其中该偏移寄存器允许特权区针对每个处理器而进行交错(stagger)。以此方式,尽管为了广播的目的而将处理器重定向至相同本地存储起始地址将影响本地存储地址区,特权地址区不受该重定向的影响并且可以由特权处理器(例如PPE)独立地写入,以改变处理器的标识符。还可以通过允许特权区具有与本地存储的基本寄存器类似方式的基本寄存器来进行该处理。因此,通过写入到独立于本地存储地址区而提供的SPU_IDR,该示意性实施方式的机制可以修改每个处理器的起始地址,以执行广播并将系统返回到正常操作模式。
在可选实施方式中,可以使用功率管理机制来实现处理器标识符值的修改及返回。例如,可以将处理器放置于睡眠(SRI)操作模式,在该模式中禁止对处理器的所有访问。在此SRI操作模式中,保持处理器上剩余状态。该SRI模式可用于对个体处理器打开thold,而这相对于系统的剩余部分基本上“关闭”了该处理器。随着thold的打开,处理器将不对EIB做出响应。
使用此功率管理机制,为了撤销广播操作模式,除了其中一个处理器之外,使用SRI操作模式,“关断”所有要求它们的标识符返回到原始值的处理器。可以对对应于公用标识符的公用地址区执行写入操作。保持激活的那一个处理器可以读取该原始标识符值并且使其相关联的标识符寄存器设定为原始标识符值,从而将保持激活的那一个处理器的标识符改变回其原始值。然后针对要求它们的标识符返回原始值的处理器中的每个来重复该处理,直到所有的这些处理器使它们相关联的标识符返回到它们的原始值为止。
尽管示意性实施方式可以采用这些机制中的一个或组合,但应当理解的是,这些示意性实施方式并不局限于这些用于修改处理器标识符并将处理器标识符返回其原始值的机制。相反,用于实现处理器标识符值的修改和返回的任何适当方式都处于本发明的实质和范围中。
因此,着眼于以上描述,示意性实施方式提供了一种用于将指令/数据广播到多处理器系统(例如CBE片上系统)中的多个处理器的机制。该示意性实施方式提供了一种这样的机制:混叠存储器区域以由多个处理器使用,从而存储在混叠存储器区域中的指令/数据可以由每个处理器来读取以进行处理。以此方式,可以将指令和/或数据广播至处理器的选定集,而不要求总线架构支持指令/数据的广播传送。
示意性实施方式可以采用完全硬件实施方式、完全软件实施方式或包含硬件和软件元件二者的实施方式的形式。在优选的实施方式中,本发明以软件来实现,其包括但不限于固件、驻留软件、微代码等等。
而且,示意性实施方式可以采用可从计算机可用或计算机可读介质来访问的计算机程序产品的形式,所述计算机程序产品提供程序代码,其中该程序代码可以由计算机或任何指令执行系统使用或与之相联系。为了说明起见,计算机可用或计算机可读介质可以是任何能够包含、存储、通信、传播或传送由指令执行系统、装置或设备使用或与之相联系的程序的装置。
该介质可以是电子、磁性、光学、电磁、红外或半导体系统(或设备或装置)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前例子包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写存储器(CD-R/W)和DVD。
如上所述,适用于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接耦合至存储器元件的处理器。该存储器元件可以包括在程序代码实际执行期间所使用的本地存储器、海量存储器以及为至少某些程序代码提供临时存储以减少在执行期间必须从海量存储器中取回代码的次数的高速缓存。
输入/输出或I/O设备(包括但不限于键盘、显示器、点击设备等)可以直接或通过中介I/O控制器来耦合至系统。网络适配器也可以耦合至该系统,以使得数据处理系统能够通过中介私用或公用网络而耦合至其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器以及以太网卡仅是当前可用类型的网络适配器中的一些。
提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制为所公开的形式。对本领域的一般技术人员而言,许多修改和变更都是显而易见的。选择并描述实施方式是为了更好地解释本发明的原理、其实际应用,并使本领域的其他一般技术人员理解带有各种修改的各种实施方式的本发明同样适用于设想的特定用途。

Claims (17)

1.一种方法,用于在多处理器系统中向多个处理器广播数据,该方法包括:
针对所述的多个处理器中的每个处理器而将用于分配给所述处理器的存储器区域的起始地址修改为用于所述的多个处理器中每个处理器的公用起始地址;
将待广播至所述的多个处理器的数据写入到对应于所述公用起始地址的存储器区域中;以及
针对所述的多个处理器中的每个处理器,在将待广播的数据写入到对应于所述公用起始地址的存储器区域中之后,所述多个处理器中的每个处理器从其相应的存储器区域中读取所述待广播的数据;
将用于分配给所述处理器的所述存储器区域的起始地址修改为在所述的多个处理器之间非公用的原始起始地址。
2.根据权利要求1所述的方法,其中所述的多个处理器是所述多处理器系统中所有处理器的子集。
3.根据权利要求1所述的方法,其中修改用于存储器区域的起始地址的步骤包括:
向与处理器相关联的标识符寄存器写入公用标识符值,其中所述公用标识符值对于所述的多个处理器中每个处理器是相同的。
4.根据权利要求3所述的方法,其中所述用于分配给所述每个处理器的所述存储器区域的所述起始地址由下列关系来确定:
起始地址=标识符*大小+基本偏移
其中所述标识符是在与所述处理器相关联的标识符寄存器中提供的处理器的标识符值,所述大小是与所述处理器相关联的存储器区域的大小,而所述基本偏移是所述多个处理器的第一处理器的存储器区域的偏移地址值。
5.根据权利要求3所述的方法,其中针对所述的多个处理器中每个处理器而将用于分配给所述处理器的所述存储器区域的起始地 址修改为在所述的多个处理器之间非公用的原始起始地址的步骤包括:
独立于与所述处理器相关联的所述存储器区域,提供与所述处理器相关联的标识符寄存器;以及
将原始标识符值写入到所述标识符寄存器,从而将用于分配给所述处理器的所述存储器区域的所述起始地址修改为所述原始起始地址。
6.根据权利要求3所述的方法,其中针对所述的多个处理器中每个处理器,而将用于分配给所述处理器的所述存储器区域的起始地址修改为在所述的多个处理器之间非公用的原始起始地址的步骤包括:
除了一个处理器之外,将所述的多个处理器中的所有处理器放置于睡眠(SRI)操作模式;
将原始标识符值写入与所述处理器相关联的存储器区域;
使所述的一个处理器读取所述原始标识符值并将其在所述标识符寄存器中的标识符值设定为所述原始标识符值;以及
对上述放置步骤、写入步骤和读取步骤进行迭代重复,从而所述的多个处理器中的每个处理器将其标识符值返回到原始标识符值。
7.根据权利要求1所述的方法,其中所述多处理器系统是具有控制处理器和多个协同处理器的多处理器系统,并且其中所述的多个协同处理器构成所述的多个处理器。
8.根据权利要求7所述的方法,其中所述多处理器系统是异构多处理器系统,在该系统中所述的多个协同处理器使用不同于所述控制处理器的指令集进行操作。
9.一种系统,用于在多处理器系统中向多个处理器广播数据,该系统包括:
用于针对所述的多个处理器中的每个处理器而将用于分配给所述处理器的存储器区域的起始地址修改为用于所述的多个处理器中每个处理器的公用起始地址的装置; 
用于将待广播至所述的多个处理器的数据写入到对应于所述公用起始地址的存储器区域中的装置;以及
用于针对所述的多个处理器中的每个处理器,在将待广播的数据写入到对应于所述公用起始地址的存储器区域中之后,所述多个处理器中的每个处理器从其相应的存储器区域中读取所述待广播的数据的装置;
用于将用于分配给所述处理器的所述存储器区域的起始地址修改为在所述的多个处理器之间非公用的原始起始地址的装置。
10.根据权利要求9所述的系统,其中所述的多个处理器是所述多处理器系统中所有处理器的子集。
11.根据权利要求9所述的系统,其中所述用于针对所述的多个处理器中的每个处理器而将用于分配给所述处理器的存储器区域的起始地址修改为用于所述的多个处理器中每个处理器的公用起始地址的装置包括:
用于向与处理器相关联的标识符寄存器写入公用标识符值得装置,其中所述公用标识符值对于所述的多个处理器中每个处理器是相同的。
12.根据权利要求10所述的系统,其中所述用于分配给所述每个处理器的所述存储器区域的所述起始地址由下列关系来确定:
起始地址=标识符*大小+基本偏移
其中所述标识符是在与所述处理器相关联的标识符寄存器中提供的处理器的标识符值,所述大小是与所述处理器相关联的存储器区域的大小,而所述基本偏移是与所述多个处理器的第一处理器的存储器区域的偏移地址值。
13.根据权利要求11所述的系统,其中所述用于将用于分配给所述处理器的所述存储器区域的起始地址修改为在所述的多个处理器之间非公用的原始起始地址的装置包括:
用于独立于与所述处理器相关联的所述存储器区域,提供与所述处理器相关联的标识符寄存器的装置;以及 
用于将原始标识符值写入到所述标识符寄存器,从而将用于分配给所述处理器的所述存储器区域的所述起始地址修改为所述原始起始地址的装置。
14.根据权利要求11所述的系统,其中所述用于将用于分配给所述处理器的所述存储器区域的起始地址修改为在所述的多个处理器之间非公用的原始起始地址的装置包括:
用于除了一个处理器之外,将所述的多个处理器中的所有处理器放置于睡眠操作模式的装置;
用于将原始标识符值写入与所述处理器相关联的存储器区域的装置;
用于使所述的一个处理器读取所述原始标识符值并将其在所述标识符寄存器中的标识符值设定为所述原始标识符值的装置;以及
用于对上述用于除了一个处理器之外,将所述的多个处理器中的所有处理器放置于睡眠操作模式的装置、用于将原始标识符值写入与所述处理器相关联的存储器区域的装置和用于使所述的一个处理器读取所述原始标识符值并将其在所述标识符寄存器中的标识符值设定为所述原始标识符值得装置进行迭代重复,从而所述的多个处理器中的每个处理器将其标识符值返回到原始标识符值的装置。
15.根据权利要求9所述的系统,其中所述多处理器系统是具有控制处理器和多个协同处理器的多处理器系统,并且其中所述的多个协同处理器构成所述的多个处理器。
16.根据权利要求15所述的系统,其中所述多处理器系统是异构多处理器系统,在该系统中所述的多个协同处理器使用不同于所述控制处理器的指令集进行操作。
17.一种方法,用于在多处理器系统中,向具有共享存储器的多个处理器广播数据,该方法包括:
针对所述的多个处理器中的每个处理器而对共享存储器中分配给所述处理器的存储器区域的起始地址进行修改,从而所述的多个处理器中的每个处理器在所述共享存储器中具有公用起始地址; 
将数据写入到所述公用起始地址所标识的存储器区域中,从而将所述数据广播到所述的多个处理器;以及
响应于将数据写入到所述公用起始地址所标识的存储器区域,所述多个处理器中的每个处理器从其相应的存储器区域中读取所述待广播的数据;
针对每个处理器而对用于分配给所述处理器的所述存储器区域的所述起始地址进行修改,从而每个处理器在所述共享存储器中具有唯一的起始地址。 
CN2007101074820A 2006-06-01 2007-05-15 通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法 Expired - Fee Related CN101082900B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/421,512 2006-06-01
US11/421,512 US7493468B2 (en) 2006-06-01 2006-06-01 Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing

Publications (2)

Publication Number Publication Date
CN101082900A CN101082900A (zh) 2007-12-05
CN101082900B true CN101082900B (zh) 2010-12-08

Family

ID=38791710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101074820A Expired - Fee Related CN101082900B (zh) 2006-06-01 2007-05-15 通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法

Country Status (2)

Country Link
US (2) US7493468B2 (zh)
CN (1) CN101082900B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298639A (zh) * 2014-09-23 2015-01-21 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493468B2 (en) * 2006-06-01 2009-02-17 International Business Machines Corporation Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing
US8266415B2 (en) * 2008-02-26 2012-09-11 Broadcom Corporation Electronic device board level security
US8332557B2 (en) * 2008-12-12 2012-12-11 Qualcomm, Incorporated System, apparatus, and method for broadcasting USB data streams
US20100242014A1 (en) * 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US8316207B2 (en) * 2009-12-30 2012-11-20 International Business Machines Corporation Assigning efficiently referenced globally unique identifiers in a multi-core environment
CN116414459A (zh) 2011-12-23 2023-07-11 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
CN102567227B (zh) * 2012-01-13 2014-12-03 北京邦诺存储科技有限公司 共享缓存设备的双控制器存储系统和方法
US10049052B2 (en) * 2014-10-27 2018-08-14 Nxp Usa, Inc. Device having a cache memory
US10210088B2 (en) 2015-12-28 2019-02-19 Nxp Usa, Inc. Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
US9569729B1 (en) * 2016-07-20 2017-02-14 Chenope, Inc. Analytical system and method for assessing certain characteristics of organizations
KR102569435B1 (ko) * 2018-06-27 2023-08-24 에스케이하이닉스 주식회사 융합형 반도체 장치 및 동작 방법, 이를 포함하는 적층형 메모리 장치
CN111797051B (zh) * 2020-06-04 2022-05-17 深圳云天励飞技术股份有限公司 片上系统、数据传送方法及广播模块
EP4268086A1 (en) * 2020-12-23 2023-11-01 Imsys AB A novel data processing architecture and related procedures and hardware improvements

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101551A (en) * 1996-04-30 2000-08-08 Nec Corporation Multi-processor system for supporting multicasting communication and inter-multiprocessor communication method therefor
CN1489059A (zh) * 2002-10-10 2004-04-14 �Ҵ���˾ 管理多处理器系统中虚拟化的物理存储器的方法和系统
CN1570907A (zh) * 2003-04-24 2005-01-26 日本电气株式会社 多处理器系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4729095A (en) * 1986-05-19 1988-03-01 Ncube Corporation Broadcast instruction for use in a high performance computer system
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JPH0619759B2 (ja) * 1990-05-21 1994-03-16 富士ゼロックス株式会社 マルチプロセッサシステムにおける相互通信方法
JP3687990B2 (ja) * 1994-01-25 2005-08-24 株式会社日立製作所 メモリアクセス機構
US5924112A (en) * 1995-09-11 1999-07-13 Madge Networks Limited Bridge device
JP3849951B2 (ja) * 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US6321323B1 (en) * 1997-06-27 2001-11-20 Sun Microsystems, Inc. System and method for executing platform-independent code on a co-processor
JP2001344153A (ja) * 2000-05-30 2001-12-14 Nec Corp マルチプロセッサシステムのキャッシュメモリ制御装置
US20010037435A1 (en) * 2000-05-31 2001-11-01 Van Doren Stephen R. Distributed address mapping and routing table mechanism that supports flexible configuration and partitioning in a modular switch-based, shared-memory multiprocessor computer system
US6646646B2 (en) * 2000-12-13 2003-11-11 Micron Technology, Inc. Memory system having programmable multiple and continuous memory regions and method of use thereof
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US6999979B2 (en) * 2002-11-05 2006-02-14 Sun Microsystems, Inc. Efficient encoding of references into a collection set
US7363434B2 (en) * 2003-03-18 2008-04-22 American Megatrends, Inc. Method, system, and computer-readable medium for updating memory devices in a multi-processor computer system
US7321909B1 (en) * 2004-12-23 2008-01-22 Sun Microsystems, Inc. Method and apparatus for forwarding references to objects concurrently with space-incremental garbage collection
US7383412B1 (en) * 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
WO2006104407A1 (en) * 2005-03-28 2006-10-05 Intel Corporation A platform independent binary instrumentation method
US7627864B2 (en) * 2005-06-27 2009-12-01 Intel Corporation Mechanism to optimize speculative parallel threading
US7721023B2 (en) * 2005-11-15 2010-05-18 International Business Machines Corporation I/O address translation method for specifying a relaxed ordering for I/O accesses
US7493468B2 (en) * 2006-06-01 2009-02-17 International Business Machines Corporation Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101551A (en) * 1996-04-30 2000-08-08 Nec Corporation Multi-processor system for supporting multicasting communication and inter-multiprocessor communication method therefor
CN1489059A (zh) * 2002-10-10 2004-04-14 �Ҵ���˾ 管理多处理器系统中虚拟化的物理存储器的方法和系统
CN1570907A (zh) * 2003-04-24 2005-01-26 日本电气株式会社 多处理器系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2000-99487A 2000.04.07

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298639A (zh) * 2014-09-23 2015-01-21 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口
CN104298639B (zh) * 2014-09-23 2017-03-15 天津国芯科技有限公司 主处理器与若干协处理器的嵌入式连接方法及连接接口

Also Published As

Publication number Publication date
CN101082900A (zh) 2007-12-05
US20080229051A1 (en) 2008-09-18
US8250338B2 (en) 2012-08-21
US20070283037A1 (en) 2007-12-06
US7493468B2 (en) 2009-02-17

Similar Documents

Publication Publication Date Title
CN101082900B (zh) 通过混叠向多处理器设备中的多个处理器广播指令/数据的系统和方法
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
CN105051680B (zh) 用于在处理器内部的硬件并行执行道上处理指令的处理器及方法
EP2480975B1 (en) Configurable cache for multiple clients
TW201702866A (zh) 用戶等級分叉及會合處理器、方法、系統及指令
US20130042090A1 (en) Temporal simt execution optimization
US9910802B2 (en) High bandwidth low latency data exchange between processing elements
CN106575218A (zh) 持久性存储屏障处理器、方法、系统和指令
US20180089128A1 (en) Reconfigurable fabric direct memory access with multiple read or write elements
CN103197953A (zh) 推测执行和回滚
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
US9069664B2 (en) Unified streaming multiprocessor memory
WO2013012668A1 (en) Virtual gpu
CN103197916A (zh) 用于源操作数收集器高速缓存的方法和装置
CN103309702A (zh) 用于并行线程子集的一致加载处理
CN103365631A (zh) 用于存储器访问的动态库模式寻址
CN104025185A (zh) 用于使用gpu控制器来预加载缓存的机制
TW201810027A (zh) 孔徑存取處理器、方法、系統及指令
Kim et al. Silent-PIM: Realizing the processing-in-memory computing with standard memory requests
CN108369517A (zh) 聚合分散指令
JP2017045151A (ja) 演算処理装置及び演算処理装置の制御方法
CN111459543B (zh) 一种管理寄存器文件单元的方法
CN103294449A (zh) 发散操作的预调度重演
KR102014670B1 (ko) 서브그룹 간 데이터 공유
JP2020508534A (ja) スーパースレッドプロセッサ、処理システム、および方法

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101208

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