CN1292366C - 用于使用多个处理器操纵数据的系统和方法 - Google Patents

用于使用多个处理器操纵数据的系统和方法 Download PDF

Info

Publication number
CN1292366C
CN1292366C CNB2004100787992A CN200410078799A CN1292366C CN 1292366 C CN1292366 C CN 1292366C CN B2004100787992 A CNB2004100787992 A CN B2004100787992A CN 200410078799 A CN200410078799 A CN 200410078799A CN 1292366 C CN1292366 C CN 1292366C
Authority
CN
China
Prior art keywords
spu
data
processor
data block
memory
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
CNB2004100787992A
Other languages
English (en)
Other versions
CN1601511A (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.)
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 CN1601511A publication Critical patent/CN1601511A/zh
Application granted granted Critical
Publication of CN1292366C publication Critical patent/CN1292366C/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

一种用于由主处理器和多个副处理器共享公共系统存储器的系统和方法。公共系统存储器的共享使得能够在各处理器之间共享数据。数据由主处理器装载到公共存储器中,其中主处理器将所要处理的数据分成多个数据块。数据块的大小等于副处理器的寄存器的大小。主处理器识别可用副处理器以处理第一数据块。副处理器处理数据块,并且将经过处理的数据块返回到公共系统存储器。主处理器可以继续识别可用副处理器,并且请求可用副处理器处理数据块直到处理完所有数据块。

Description

用于使用多个处理器操纵数据的系统和方法
技术领域
本发明一般涉及一种用于使用多个处理器操纵数据的系统和方法。具体地说,本发明涉及一种用于通过多个异构处理器共享公共存储器来在这些处理器之间共享数据的系统和方法。
背景技术
向计算机系统增加处理器是一种用于提高计算机系统的处理速度的常用方法。多处理器典型地配置成并行处理数据因此显著降低任务执行时间。
在很多情形下,多处理器可能不同于专用于特定处理任务的每个处理器。不同处理器典型地均必须具有其自己的随机存取存储器(RAM)单元,这使得处理器之间的数据共享变得困难。在并行处理的很多情形下,来自一个处理器的一个计算的结果依赖于另一个处理器的另一个计算。结果,必须在处理器之间或者在每一个处理器与中央存储器位置之间传输大量数据。
大量数据传输会显著降低由于具有多处理器而获得的好处。因此需要一种可以减少所需数据传输因此提高系统计算性能的系统和方法。该系统和方法应该向用户提供在多处理器-甚至是不同处理器-之间进行数据和结果通信的能力,以避免与计算机系统的多处理器之间的大量数据传输相关联的性能恶化。
发明内容
已经发现,前述难题可以通过一种具有多个共享公共存储器的异构处理器从而通过公共存储器在这些处理器之间共享数据的方法和系统来解决。
将所要处理的数据装载到由主处理器(main processor)和多个副处理器(secondary processor)共享的公共存储器中。数据可以由主处理器装载到公共存储器中,其中主处理器将所要处理的数据分成多个数据块。数据块的大小可以等于副处理器的寄存器的大小以帮助副处理器对数据块的处理。
然后,主处理器可以识别可用副处理器以处理第一数据块。主处理器向副处理器通知数据块需要处理,另外,主处理器向副处理器提供如何处理数据块的指令。副处理器可以使用直接存储器存取(DMA)命令将数据块传输到副处理器的局部存储装置,然后传输到副处理器的寄存器以作处理。副处理器将经过处理的数据返回到副处理器的局部存储装置,然后使用DMA命令返回到公共系统存储器。
主处理器可以继续识别可用副处理器,并且请求可用副处理器处理数据块直到处理完所有数据块。
前文是一个概要,因此有必要包含简化、概括和细节省略;因此,本领域的技术人员应当理解,该概要仅是示例说明性的,而决不是限制性的。仅由权利要求限定的本发明的其他方面、创新特性和优点在下面给出的非限制性详细描述中将会变得清楚。
附图说明
通过参照附图,对于本领域的技术人员而言,本发明可以得到更好的理解,并且其众多目的、特性和优点将会变得清楚。在不同附图中使用相同参考符号表示类似或相同项。
图1示出根据本发明的计算机网络的总体架构;
图2是根据本发明的处理单元(PU)的结构图;
图3是根据本发明的宽带引擎(BE)的结构图;
图4是根据本发明的协同处理单元(SPU)的结构图;
图5是根据本发明的处理单元、观察仪(VS)和光学接口的结构图;
图6是示出根据本发明的处理单元的一种组合的图;
图7示出根据本发明的处理单元的另一种组合;
图8示出根据本发明的处理单元的另一种组合;
图9示出根据本发明的处理单元的另一种组合;
图10示出根据本发明的处理单元的另一种组合;
图11A示出根据本发明的芯片封装内光学接口的集成;
图11B是使用图11A的光学接口的处理器的一种配置的图;
图11C是使用图11A的光学接口的处理器的另一种配置的图;
图12A示出根据本发明的存储器系统的结构;
图12B示出根据本发明的从第一宽带引擎到第二宽带引擎的数据写入;
图13是根据本发明的用于处理单元的共享存储器的结构图;
图14A示出图13所示的存储器的存储体的一种结构;
图14B示出图13所示的存储器的存储体的另一种结构;
图15示出根据本发明的直接存储器存取控制器的结构;
图16示出根据本发明的直接存储器存取控制器的可选结构;
图17-31示出根据本发明的数据同步操作;
图32是示出根据本发明的数据同步方案的存储器位置的各状态的三态存储器图;
图33示出根据本发明的硬件沙盒(sandbox)的密钥控制表的结构;
图34示出根据本发明的用于存储硬件沙盒的存储器存取密钥的方案;
图35示出根据本发明的硬件沙盒的存储器存取控制表的结构;
图36是用于使用图33的密钥控制表和图35的存储器存取控制表存取存储器沙盒的步骤的流程图;
图37示出根据本发明的软件封包(cell)的结构;
图38是根据本发明的用于向SPU发布远程过程调用的步骤的流程图;
图39示出根据本发明的用于处理流数据的专用管道(pipeline)的结构;
图40是根据本发明的在处理流数据中由图39的专用管道执行的步骤的流程图;
图41示出根据本发明的用于处理流数据的专用管道的可选结构;
图42示出根据本发明的用于协调SPU对应用程序和数据的并行处理的绝对定时器的方案;
图43是示出具有共享系统存储器的主处理器和多个副处理器的处理部件(processing element)的方框图;
图44是示出具有共享系统存储器的主处理器和多个副处理器的处理部件的方框图;
图45是示出用于将数据从盘装载到公共系统存储器的方法的流程图;
图46是示出用于使用多个处理器并行处理公共系统存储器中的数据的过程的流程图;
图47是示出从线性方程组创建等价增广矩阵的方框图;
图48是示出将线性方程系数分成多块并且将这些决装载到公共存储器中的方框图;
图49是示出矩阵运算以及对于给定块SPU是否完成了运算的表;
图50是示出SPU存取公共存储器并且执行给定块的矩阵运算的方框图;
图51是示出接收线性方程系数并且将这些系数装载到公共存储器中的流程图;
图52是示出PU确定矩阵运算集以求解线性微分方程的流程图;以及
图53是示出SPU逐块地执行矩阵运算的流程图。
具体实施方式
下文旨在提供本发明例子的详细描述,并且不应被认为是限制本发明本身。相反,各种变更可以落在由所附权利要求限定的本发明的范围内。
图1示出根据本发明的计算机系统101的总体架构。
如该图所示,系统101包括多个计算机和计算设备所连接的网络104。网络104可以是LAN、全球网络如因特网或者任何其他计算机网络。
连接到网络104的计算机和计算设备(网络的“成员”)包括例如客户端计算机106、服务器计算机108、个人数字助理(PDA)110、数字电视(DTV)112以及其他有线或无线计算机和计算设备。网络104的成员所采用的处理器由相同公共计算模块构造。这些处理器最好还全都具有相同ISA,并且根据相同指令集执行处理。包括在任何特定处理器内的模块数依赖于该处理器所需的处理能力。
例如,由于系统101的服务器108比客户端106执行更多的数据和应用程序处理,因此服务器108比客户端106包含更多的计算模块。另一方面,PDA 110执行最小数量的处理。因此,PDA 110包含最小数目的计算模块。DTV 112所执行的处理的级别居于客户端106和服务器108之间。因此,DTV 112所包含的计算模块数也居于客户端106与服务器108之间。如下所述,每个计算模块包含用于对通过网络104传输的数据和应用程序执行并行处理的处理控制器和多个相同处理单元。
系统101的这一同构配置有助于适配性、处理速度和处理效率。由于系统101的每个成员使用相同计算模块的一个或多个(或某部分)执行处理,因此执行实际数据和应用程序处理的特定计算机或计算设备是不重要的。而且,特定应用程序和数据的处理可以在网络的多个成员之间分担。通过在整个系统范围内唯一标识包括由系统101处理的数据和应用程序的封包,可以将处理结果传输到请求处理的计算机或计算设备而不管该处理是在何处发生的。由于执行该处理的模块具有公共结构并且采用公共ISA,因此避免了用来实现处理器之间的兼容性的附加软件层的计算负担。该架构和编程模型有助于执行例如实时多媒体应用程序所需的处理速度。
为了进一步利用由系统101促进的处理速度和效率,由该系统处理的数据和应用程序封装到唯一标识、统一格式化的软件封包102内。每个软件封包102包含或者可以包含应用程序和数据。每个软件封包还包括一个ID以在整个网络104和系统101的范围内全局标识该封包。软件封包的结构统一性和软件封包在整个网络范围内的唯一标识有助于在网络的任何计算机或计算设备上处理应用程序和数据。例如,客户端106可以创制软件封包102,但是由于客户端106的受限处理能力,因此将该软件封包传输到服务器108以作处理。因此,软件封包可以根据网络上处理资源的可用性在整个网络104的范围内迁移以作处理。
系统101的处理器和软件封包的同构结构还避免了目前异构网络的很多问题。例如,避免了寻求允许在使用任何指令集的任何ISA上处理应用程序的低效编程模型例如诸如Java虚拟机的虚拟机。因此,系统101可以实现比目前网络有效且高效得多的宽带处理。
网络104所有成员的基本处理模块是处理单元(PU)。图2示出PU的结构。如该图所示,PU 201包括处理单元(PU)203、直接存储器存取控制器(DMAC)205以及多个协同处理单元(SPU)即SPU 207、SPU209、SPU 211、SPU 213、SPU 215、SPU 217、SPU 219和SPU 221。局部PU总线223在这些SPU、DMAC 205和PU 203之间传输数据和应用程序。局部PU总线223可以具有例如传统架构,或者实现为分组交换网络。实现为分组交换网络增加了可用带宽,但需要更多硬件。
PU 201可以使用各种用于实现数字逻辑电路的方法来构造。然而,PU 201最好构造为在硅衬底上采用互补金属氧化物半导体(CMOS)的单个集成电路。衬底的可选材料包括砷化镓(gallium arsinide)、砷化镓铝(gallium aluminum arsinide)和采用各种搀杂物的其他所谓III-B化合物。PU 201还可以使用超导物质来实现,例如快速单磁通量子(RSFQ)逻辑电路。
PU 201通过高带宽存储器连接227与动态随机存取存储器(DRAM)225紧密关联。DRAM 225用作PU 201的主存储器。虽然DRAM 225最好为动态随机存取存储器,但是DRAM 225也可以使用其他装置来实现,例如,其实现为静态随机存取存储器(SRAM)、磁性随机存取存储器(MRAM)、光存储器或者全息存储器。DMAC 205帮助DRAM 225与PU 201的多个SPU和PU之间的数据传输。如下面进一步所述,DMAC 205在DRAM 225中为每一个SPU指定一个独占区域,其中,只有该SPU可以向该区域写入数据,并且只有该SPU可以从其读取数据。该独占区域称作“沙盒”。
PU 203可以是例如能够独立处理数据和应用程序的标准处理器。在工作中,PU 203调度和组织(orchestrate)多个SPU对数据和应用程序的处理。这些SPU最好是单指令、多数据(SIMD)处理器。在PU 203的控制下,这些SPU以并行且独立的方式执行这些数据和应用程序的处理。DMAC 205控制PU 203和这些SPU对存储在共享DRAM 225中的数据和应用程序的存取。虽然PU 201最好包括八个SPU,但是根据所需处理能力可以在PU中采用更多或更少数目的SPU。另外,多个PU如PU 201可以连接或封装在一起,以提供增强式处理能力。
例如,如图3所示,四个PU可以封装或连接在一起,例如位于一个或多个芯片封装内,以形成用于网络104成员的单个处理器。该配置称作宽带引擎(BE)。如图3所示,BE 301包含四个PU,即PU 303、PU 305、PU 307和PU 309。这些PU之间的通信通过BE总线311。高带宽存储器连接313提供共享DRAM 315与这些PU之间的通信。代替BE总线311,BE 301的多个PU之间的通信可以通过DRAM 315和该存储器连接来发生。
图4示出SPU的结构。SPU 402包括局部存储器406、寄存器410、四个浮点单元412和四个整数单元414。然而,再次,根据所需处理能力,可以采用更多或更少数目的浮点单元412和整数单元414。在优选实施例中,局部存储器406包含128千字节的存储,并且寄存器410的容量为128×128位。浮点单元412最好以每秒32千兆次浮点运算(32 GFLOPS)的速度运行,并且整数单元414最好以每秒32千兆次运算(32 GOPS)的速度运行。
局部存储器406不是高速缓冲存储器。局部存储器406最好构造为SRAM。SPU的高速缓存一致性支持是不必要的。对于由PU发起的直接存储器存取,PU可以要求高速缓存一致性支持。然而,对于由SPU发起的直接存储器存取,或者对外部设备的存取,不要求高速缓存一致性支持。
SPU 402还包括用于向SPU传输应用程序和数据以及从其传输应用程序和数据的总线404。在优选实施例中,该总线的宽度为1024位。SPU 402还包括内部总线408、420和418。在优选实施例中,总线408具有256位的宽度,并且提供局部存储器406与寄存器410之间的通信。总线420和418分别在寄存器410与浮点单元412以及寄存器410与整数单元414之间提供通信。在优选实施例中,从寄存器410到浮点或整数单元的总线418和420的宽度为384位,而从浮点或整数单元到寄存器410的总线418和420的宽度为128位。从寄存器410到浮点或整数单元的宽度比从这些单元到寄存器410的宽度大,这容纳在处理期间来自寄存器410的更大数据流。每次计算需要最大三个字。然而,每次计算的结果通常仅为一个字。
图5-10进一步示出网络104各成员的处理器的模块化结构。例如,如图5所示,处理器可以包括单个PU 502。如上所述,该PU典型地包括PU、DMAC和八个SPU。每个SPU包括局部存储装置(LS)。另一方面,处理器可以包括观察仪(VS)505的结构。如图5所示,VS 505包括PU 512、DMAC 514和四个SPU即SPU 516、SPU 518、SPU 520和SPU 522。通常由PU的其他四个SPU占据的芯片封装内的空间在这种情况下被像素引擎508、图像高速缓存510和阴极射线管控制器(CRTC)504占据。根据PU 502或VS 505所需的通信速度,光学接口506也可以包括在芯片封装上。
使用该标准化、模块化的结构,可以容易且高效地构造众多其他处理器变种。例如,图6所示的处理器包括两个芯片封装即包括BE的芯片封装602并且包括四个VS的芯片封装604。输入/输出(I/O)606提供芯片封装602的BE与网络104之间的接口。总线608提供芯片封装602与芯片封装604之间的通信。输入输出处理器(IOP)610控制出入I/O 606的数据流。I/O 606可以构造为专用集成电路(ASIC)。来自VS的输出为视频信号612。
图7示出具有两个光学接口704和706的BE 702的芯片封装,其中光学接口704和706向网络104的其他成员(或者局部连接的其他芯片封装)提供超高速通信。BE 702可以例如用作网络104上的服务器。
图8的芯片封装包括两个PU 802和804以及两个VS 806和808。I/O 810提供芯片封装与网络104之间的接口。来自芯片封装的输出为视频信号。该配置可以用作例如图形工作站。
图9示出另一种配置。该配置包含图8所示的配置的处理能力的一半。代替两个PU,提供了一个PU 902,并且代替两个VS,提供了一个VS 904。I/O 906的带宽是图8所示的I/O的一半。然而,该处理器还可以用作图形工作站。
图10示出最后一种配置。该处理器仅包括单个VS 1002和I/O1004。该配置可以用作例如PDA。
图11A示出将光学接口集成到网络104的处理器的芯片封装内。这些光学接口将光信号转换成电信号,以及将电信号转换成光信号,并且可以由各种材料包括例如砷化镓、砷化镓铝、锗和其他元素或化合物构成。如该图所示,光学接口1104和1106在BE 1102的芯片封装上构造。BE总线1108在BE 1102的多个PU即PU 1110、PU 1112、PU1114、PU 1116与这些光学接口之间提供通信。光学接口1104包括两个端口即端口1118和端口1120,并且光学接口1106也包括两个端口即端口1122和端口1124。端口1118、1120、1122和1124分别连接到光波导管(optical wave guide)1126、1128、1130和1132。光信号经由光学接口1104和1106的端口通过这些光波导管传输到BE 1102并且从BE1102传输。
多个BE可以使用每个BE的这些光波导管和四个光学端口以各种配置连接在一起。例如,如图11B所示,两个或更多个BE例如BE1152、BE 1154和BE 1156可以通过这些光学端口串行连接。在本例中,BE 1152的光学接口1166通过其光学端口连接到BE 1154的光学接口1160的光学端口。以类似方式,BE 1154上光学接口1162的光学端口连接到BE 1156的光学接口1164的光学端口。
图11C示出矩阵配置。在该配置中,每个BE的光学接口连接到两个其他BE。如该图所示,BE 1172的光学接口1188的光学端口之一连接到BE 1176的光学接口1182的光学端口。光学接口1188的其他光学端口连接到BE 1178的光学接口1184的光学端口。以类似方式,BE1174的光学接口1190的一个光学端口连接到BE 1178的光学接口1184的其他光学端口。光学接口1190的其他光学端口连接到BE 1180的光学接口1186的光学端口。该矩阵配置可以以类似方式扩展到其他BE。
使用串行配置或矩阵配置,网络104的处理器可以构造为具有任何期望大小和能力。当然,可以向BE的光学接口或者比BE具有更多或更少数目的PU的处理器增加附加端口,以形成其他配置。
图12A示出BE的DRAM的控制系统和结构。在具有其他大小且包含更多或更少PU的处理器中采用类似的控制系统和结构。如该图所示,纵横开关(cross-bar switch)将组成BE 1201的四个PU的每个DMAC 1210连接到八个存储体控制器1206。每个存储体控制器1206控制DRAM 1204的八个存储体1208(图中仅示出四个)。因此,DRAM1204包括总共六十四个存储体。在优选实施例中,DRAM 1204的容量为64兆字节,并且每个存储体的容量为1兆字节。在该优选实施例中,每个存储体内的最小可寻址单元为1024位的块。
BE 1201还包括开关单元1212。开关单元1212使得紧密耦合于BE1201的BE上的其他SPU能够存取DRAM 1204。因此,第二BE可以紧密耦合于第一BE,并且每个BE的每个SPU可以寻址通常可由SPU存取的存储器位置数的两倍。从第一BE的DRAM到第二BE的DRAM或者从第二BE的DRAM到第一BE的DRAM的直接数据读取或写入可以通过诸如开关单元1212的开关单元来发生。
例如,如图12B所示,为了完成该写入,第一BE的SPU例如BE1222的SPU 1220发布对第二BE的DRAM例如BE 1226的DRAM1228(而不是通常情况下BE 1222的DRAM 1224)的存储器位置的写入命令。BE 1222的DMAC 1230通过纵横开关1221将写入命令发送到存储体控制器1234,并且存储体控制器1234将该命令传输到连接到存储体控制器1234的外部端口1232。BE 1226的DMAC 1238接收写入命令,并且将该命令传输到BE 1226的开关单元1240。开关单元1240识别包含在写入命令中的DRAM地址,并且通过BE 1226的存储体控制器1242将用于存储在该地址中的数据发送到DRAM 1228的存储体1244。因此,开关单元1240使得DRAM 1224和DRAM 1228能够用作BE 1226的多个SPU的单个存储器空间。
图13示出DRAM的六十四个存储体的配置。这些存储体排列成八行即行1302、1304、1306、1308、1310、1312、1314和1316和八列即列1320、1322、1324、1326、1328、1330、1332和1324。每行由一个存储体控制器控制。因此,每个存储体控制器控制存储器的八兆字节。
图14A和14B示出用于存储和存取DRAM的最小可寻址存储器单元例如1024位的块的不同配置。在图14A中,DMAC 1402在单个存储体1404中存储八个1024位块1406。另一方面,在图14B中,当DMAC 1412读取和写入多个包含1024位的数据块的时候,这些块在两个存储体即存储体1414和存储体1416之间交错。因此,这些存储体的每一个包含十六个数据块,并且每个数据块包含512位。该交错可以有助于更快的DRAM存取,并且有用于某些应用程序的处理。
图15示出PU内的DMAC 1504的架构。如该图所示,组成DMAC 1506的结构化硬件分布在整个PU内,使得每个SPU 1502可以直接存取DMAC 1506的结构化节点1504。每个节点执行适于该节点可以对其直接存取的SPU存储器存取的逻辑。
图16示出DMAC的可选实施例,即非分布式架构。在这种情况下,DMAC 1606的结构化硬件被集中化。SPU 1602和PU 1604通过局部PU总线1607与DMAC 1606通信。DMAC 1606通过纵横开关连接到总线1608。总线1608连接到DRAM 1610。
如上所述,PU的所有多个SPU可以独立存取共享DRAM中的数据。结果,第一SPU可以在第二SPU请求其局部存储装置中的特定数据的时候对这些数据进行操作。如果此时将该数据从共享DRAM提供到第二SPU,则该数据可能由于第一SPU正在进行的可能改变数据值的处理而无效。因此,如果第二处理器此时从共享DRAM接收该数据,则第二处理器可能生成错误结果。例如,该数据可以是全局变量的特定值。如果第一处理器在其处理期间改变该值,则第二处理器将接收过期值。因此,需要一种方案来同步SPU从共享DRAM的存储器位置读取数据和向其写入数据。该方案必须防止从存储器位置中读取另一个SPU当前正在其局部存储装置中对之操作因此不是最新的数据,以及将数据写入到存储最新数据的存储器位置中。
为了克服这些问题,对于DRAM的每个可寻址存储器位置,在DRAM中分配一个附加存储器段,以存储与存储在该存储器位置中的数据相关的状态信息。该状态信息包括满/空(F/E)位、请求来自该存储器位置的数据的SPU的标识(SPU ID)以及应将所请求数据读取到其中的SPU局部存储装置地址(LS地址)。DRAM的可寻址存储器位置可以为任何大小。在优选实施例中,该大小为1024位。
将F/E位设为1表示存储在关联存储器位置中的数据是最新的。另一方面,将F/E位设为0表示存储在关联存储器位置中的数据不是最新的。如果当该位设为0时SPU请求数据,则阻止SPU立即读取数据。在这种情况下,将标识请求数据的SPU的SPU ID和当数据变得最新时要将数据读取到其中的该SPU的局部存储装置内的存储器位置的LS地址输入到附加存储器段中。
为SPU的局部存储装置内的每个存储器位置也分配一个附加存储器段。该附加存储器段存储称作“忙位”的一位。该忙位用来保留关联LS存储器位置以存储要从DRAM检索的特定数据。如果对于局部存储装置中的特定存储器位置,忙位设为1,则SPU可以将该存储器位置仅用于写入这些特定数据。另一方面,如果对于局部存储装置中的特定存储器位置,忙位设为0,则SPU可以将该存储器位置用于写入任何数据。
图17-31示出使用F/E位、SPU ID、LS地址和忙位来同步对PU的共享DRAM的数据读取和写入的方式的例子。
如图17所示,一个或多个PU例如PU 1720与DRAM 1702交互。PU 1720包括SPU 1722和SPU 1740。SPU 1722包括控制逻辑电路1724,并且SPU 1740包括控制逻辑电路1742。SPU 1722还包括局部存储装置1726。该局部存储装置包括多个可寻址存储器位置1728。SPU1740包括局部存储装置1744,并且该局部存储装置还包括多个可寻址存储器位置1746。所有这些可寻址存储器位置在大小上最好是1024位。
附加存储器段与每个LS可寻址存储器位置相关联。例如,存储器段1729和1734分别与局部存储器位置1731和1732相关联,并且存储器段1752与局部存储器位置1750相关联。如上所述,“忙位”存储在这些附加存储器段的每一个中。图中示出局部存储器位置1732带有若干X,以表示该位置包含数据。
DRAM 1702包含多个可寻址存储器位置1704,其中包括存储器位置1706和1708。这些存储器位置在大小上最好也是1024位。附加存储器段也与这些存储器位置的每一个相关联。例如,附加存储器段1760与存储器位置1706相关联,并且附加存储器段1762与存储器位置1708相关联。与存储在每个存储器位置中的数据相关的状态信息存储在与存储器位置相关联的存储器段中。如上所述,该状态信息包括F/E位、SPU ID和LS地址。例如,对于存储器位置1708,该状态信息包括F/E位1712、SPU ID1714和LS地址1716。
使用状态信息和忙位,可以实现PU的多个SPU或者一组PU之间对共享DRAM的同步数据读取和写入。
图18示出从SPU 1722的LS存储器位置1732到DRAM 1702的存储器位置1708的同步数据写入的发起。SPU 1722的控制器1724发起这些数据的同步写入。由于存储器位置1708为空,因此F/E位1712设为0。从而,可以将LS位置1732中的数据写入到存储器位置1708中。另一方面,如果该位设为1来表示存储器位置1708为满并且包含最新有效数据,则控制器1722将接收错误消息,并且被禁止写入数据到该存储器位置中。
图19示出将数据成功地同步写入到存储器位置1708中的结果。所写入数据存储在存储器位置1708中,并且F/E位1712设为1。该设置表示存储器位置1708为满,并且该存储器位置中的数据为最新且有效。
图20示出从DRAM 1702的存储器位置1708到局部存储装置1744的LS存储器位置1750的同步数据读取的发起。为了发起该读取,LS存储器位置1750的存储器段1752中的忙位设为1以为这些数据保留该存储器位置。将该忙位设为1防止SPU 1740将其他数据存储在该存储器位置中。
如图21所示,控制逻辑电路1742下一步发布对DRAM 1702的存储器位置1708的同步读取命令。由于与该存储器位置相关联的F/E位1712设为1,因此存储在存储器位置1708中的数据被认为是最新且有效。从而,在准备将数据从存储器位置1708传输到LS存储器位置1750中,将F/E位1712设为0。图22示出该设置。将该位设为0表示在读取这些数据之后,存储器位置1708中的数据将无效。
如图23所示,下一步将存储器位置1708内的数据从存储器位置1708读取到LS存储器位置1750。图24示出最终状态。存储器位置1708中的数据的副本存储在LS存储器位置1750中。F/E位1712设为0,以表示存储器位置1708中的数据无效。该无效性是SPU 1740要对这些数据进行更改的结果。存储器段1752中的忙位也设为0。该设置表示LS存储器位置1750现在可用于SPU 1740以用于任何目的,即该LS存储器位置不再处于等待接收特定数据的保留状态。因此,LS存储器位置1750现在可以被SPU 1740存取以用于任何目的。
图25-31示出当DRAM 1702的存储器位置的F/E位设为0以表示该存储器位置中的数据不最新或有效时,从DRAM 1702的存储器位置例如存储器位置1708到SPU局部存储装置的LS存储器位置例如局部存储装置1744的LS存储器位置1752的同步数据读取。如图25所示,为了发起该传输,LS存储器位置1750的存储器段1752中的忙位设为1,以保留该LS存储器位置用于该数据传输。如图26所示,控制逻辑电路1742下一步发布对DRAM 1702的存储器位置1708的同步读取命令。由于与该存储器位置相关联的F/E位即F/E位1712设为0,因此存储在存储器位置1708中的数据无效。从而,将信号传输到控制逻辑电路1742,以阻止从该存储器位置立即读取数据。
如图27所示,下一步,将该读取命令的SPU ID 1714和LS地址1716写入到存储器段1762中。在这种情况下,将SPU 1740的SPU ID和LS存储器位置1750的LS存储器位置写入到存储器段1762中。因此,当存储器位置1708内的数据变得最新时,使用该SPU ID和LS存储器位置来确定要向其传输最新数据的位置。
当SPU将数据写入到存储器位置1708中时,该存储器位置中的数据变得有效且最新。图28示出从例如SPU 1722的存储器位置1732到存储器位置1708中的同步数据写入。由于该存储器位置的F/E位1712设为0,因此允许这些数据的该同步写入。
如图29所示,在该写入之后,存储器位置1708中的数据变得最新且有效。因此,从存储器段1762立即读取来自存储器段1762的SPUID 1714和LS地址1716,然后从该段中删除该信息。在预备立即读取存储器位置1708内的数据中,F/E位1712也设为0。如图30所示,当读取了SPU ID 1714和LS地址1716时,立即使用该信息来将存储器位置1708中的数据读取到SPU 1740的LS存储器位置1750。图31示出最终状态。该图示出从存储器位置1708拷贝到存储器位置1750的有效数据,存储器段1752中的忙位设为0并且存储器段1762中的F/E位1712设为0。将该忙位设为0使得LS存储器位置1750现在能够被SPU 1740存取以用于任何目的。将该F/E位设为0表示存储器位置1708中的数据不再最新且有效。
图32概括了基于存储在与DRAM的存储器位置相对应的存储器段中的F/E位状态、SPU ID和LS地址的上述操作以及该存储器位置的各种状态。存储器位置可以具有三种状态。这三种状态为:空状态3280,其中F/E位设为0并且没有为SPU ID或LS地址提供信息;满状态3282,其中F/E位设为1,并且没有为SPU ID或LS地址提供信息;以及阻止状态3284,其中F/E位设为0并且为SPU ID和LS地址提供了信息。
如该图所示,在空状态3280中,允许同步写入操作并且导致转变至满状态3282。然而,同步读取操作导致转变至阻止状态3284,因为当存储器位置处于空状态时,该存储器位置中的数据不最新。
在满状态3282中,允许同步读取状态,并且导致转变至空状态3280。另一方面,禁止满状态3282下的同步写入操作,以防止覆写有效数据。如果在该状态下尝试该写入操作,则不发生状态变化,并且将错误消息传输到SPU的对应控制逻辑电路。
在阻止状态3284下,允许向存储器位置的同步数据写入,并且导致转变至空状态3280。另一方面,禁止阻止状态3284下的同步读取操作,以防止与导致该状态的较早同步读取操作的冲突。如果在阻止状态3284下尝试同步读取操作,则不发生状态变化,并且将错误消息传输到SPU的对应控制逻辑电路。
用于对共享DRAM进行同步数据读取和写入的上述方案还可以用于消除通常由处理器专用以对外部设备进行数据读取和写入的计算资源。该输入/输出(I/O)功能可以由PU执行。然而,使用该同步方案的变型,运行适当程序的SPU可以执行该功能。例如,使用该方案,接收到由外部设备发起的用于从I/O接口传输数据的中断请求的PU可以将该请求处理委托给该SPU。然后,SPU将同步写入命令发布到I/O接口。该接口又向外部设备通知现在可以将数据写入到DRAM中。下一步,SPU向DRAM发布同步读取命令,以将DRAM的相关存储器空间设为阻止状态。SPU还将接收数据所需的SPU局部存储装置的存储器位置的忙位设为1。在阻止状态下,与DRAM的相关存储器空间相关联的附加存储器段包含SPU ID以及SPU局部存储装置的相关存储器位置的地址。下一步,外部设备发布同步写入命令,以将数据直接写入到DRAM的相关存储器空间。由于该存储器空间处于阻止状态,因此立即将数据从该空间读出到在附加存储器段中标识的SPU局部存储装置的存储器位置内。然后,将这些存储器位置的忙位设为0。当外部设备完成数据写入时,SPU向PU发布传输完成的信号。
因此,使用该方案,可以在PU上以最小计算负载处理从外部设备的数据传输。然而,被委托该功能的SPU应该能够发布中断请求到PU,并且外部设备应该可以直接存取DRAM。
每个PU的DRAM包括多个“沙盒”。沙盒定义特定SPU或SPU集不能在其范围之外读取或写入数据的共享DRAM区域。这些沙盒提供防止由一个SPU处理的数据被由另一个SPU处理的数据破坏的安全性。这些沙盒还允许将软件封包从网络104下载到特定沙盒中而不存在软件封包破坏整个DRAM范围内的数据的可能性。在本发明中,沙盒采用DRAM和DMAC的硬件实现。通过采用该硬件而不是软件来实现这些沙盒,获得速度和安全性上的优点。
PU中的PU控制分配给SPU的沙盒。由于该PU通常仅运行可信程序如操作系统,因此该方案不危及安全性。根据该方案,PU构建和维护密钥控制表。图33示出该密钥控制表。如该图所示,密钥控制表3302中的每个条目包含SPU的标识(ID)3304、该SPU的SPU密钥3306以及密钥掩码3308。下面说明该密钥掩码的使用。密钥控制表3302最好存储在相对较快的存储器如静态随机存取存储器(SRAM)中,并且与DMAC相关联。密钥控制表3302中的条目由PU控制。当SPU请求对DRAM的特定存储位置进行数据写入或数据读取时,DMAC对照与该存储位置相关联的存储器存取密钥,鉴定在密钥控制表3302中分配给该SPU的SPU密钥3306。
如图34所示,专用存储器段3410分配给DRAM 3402的每个可寻址存储位置3406。存储位置的存储器存取密钥3412存储在该专用存储器段中。如上所述,也与每个可寻址存储位置3406相关联的另一附加专用存储器段3408存储用于对该存储位置进行数据写入和数据读取的同步信息。
在工作中,SPU发布DMA命令到DMAC。该命令包括DRAM3402的存储位置3406的地址。在执行该命令之前,DMAC使用SPU的ID 3304,在密钥控制表3302中查询请求SPU的密钥3306。然后,DMAC将请求SPU的SPU密钥3306与存储在与SPU寻求存取的DRAM的存储位置相关联的专用存储器段3410中的存储器存取密钥3412进行比较。如果这两个密钥不匹配,则不执行DMA命令。另一方面,如果这两个密钥匹配,则DMA命令继续,并且执行执行所请求的存储器存取。
图35示出一个可选实施例。在本实施例中,PU还维护存储器存取控制表3502。存储器存取控制表3502对于DRAM内的每个沙盒都包含一个条目。在图35的特定例子中,DRAM包含64个沙盒。存储器存取控制表3502中的每个条目包含沙盒的标识(ID)3504、基本存储器地址3506、沙盒大小3508、存储器存取密钥3510以及存取密钥掩码3512。基本存储器地址3506提供开始特定存储器沙盒的DRAM中的地址。沙盒大小3508提供沙盒的大小,因此提供特定沙盒的终点。
图36是用于使用密钥控制表3302和存储器存取控制表3502执行DMA命令的步骤的流程图。在步骤3602,SPU发布DMA命令到DMAC以存取沙盒内的特定一个或多个存储器位置。该命令包括标识对其请求存取的特定沙盒的沙盒ID 3504。在步骤3604,DMAC使用SPU的ID 3304在密钥控制表3302中查询请求SPU的密钥3306。在步骤3606,DMAC使用该命令中的沙盒ID 3504,以在存储器存取控制表3502中查询与该沙盒相关联的存储器存取密钥3510。在步骤3608,DMAC将分配给请求SPU的SPU密钥3306与该沙盒所关联的存取密钥3510进行比较。在步骤3610,判定这两个密钥是否匹配。如果这两个密钥不匹配,则该过程移到步骤3612,其中DMA命令不继续,并且发送错误消息到请求SPU、PU或两者。另一方面,如果在步骤3610发现这两个密钥匹配,则该过程进入步骤3614,其中DMAC执行DMA命令。
SPU密钥和存储器存取密钥的密钥掩码向本系统提供更大的灵活性。密钥的密钥掩码将掩码位转换成通配符。例如,如果与SPU密钥3306相关联的密钥掩码3308的最后两位设为通过例如将密钥掩码3308中的这些位设为1而指定的“掩码”,则SPU密钥可以为1或0,并且仍然匹配存储器存取密钥。例如,SPU密钥可能为1010。该SPU密钥通常仅允许存取其存取密钥为1010的沙盒。然而,如果该SPU密钥的SPU密钥掩码设为0001,则该SPU密钥可以用来获得对其存取密钥为1010或1011的沙盒的存取。类似地,其掩码设为0001的存取密钥1010可以被SPU密钥为1010或1011的SPU存取。由于可以同时使用SPU密钥掩码和存储器密钥掩码,因此可以建立SPU对沙盒的可存取性的众多变种。
本发明还提供一种用于系统101的处理器的新型编程模型。该编程模型采用软件封包102。这些封包可以传输到网络104上的任何处理器以作处理。该新型编程模型还利用系统101和系统101的处理器的独特模块化架构。
软件封包从SPU的局部存储装置被SPU直接处理。这些SPU不直接对DRAM中的任何数据或程序操作。在SPU处理这些数据和程序之前将DRAM中的数据和程序读入到SPU的局部存储装置中。因此,SPU的局部存储装置包括程序计数器,堆栈和用于这些程序的其他软件元素。PU通过发布直接存储器存取(DMA)命令到DMAC来控制SPU。
图37示出软件封包102的结构。如该图所示,软件封包例如软件封包3702包含路由选择信息区3704和主体3706。包含在路由选择信息区3704中的信息取决于网络104的协议。路由选择信息区3704包含首标3708、目的ID 3710、源ID 3712以及回复ID 3714。目的ID包括网络地址。在TCP/IP协议下,例如,网络地址为网际协议(IP)地址。目的ID 3710还包括应向其传输封包以作处理的PU和SPU的标识。源ID 3712包含网址地址并且标识该封包起源于其以使得目的PU和SPU必要时能够获得有关封包的附加信息的PU和SPU。回复ID 3714包含网络地址并且标识应向其回复有关封包的查询和封包的处理结果的SPU和SPU。
封包主体3706包含与网络协议无关的信息。图37的分解部分示出封包主体3706的详细信息。封包主体3706的首标3720标识封包主体的开始。封包接口3722包含软件封包利用所需的信息。该信息包括全局唯一ID 3724、所需SPU数3726、沙盒大小3728和先前软件封包ID 3730。
全局唯一ID 3724在整个网络104内唯一标识软件封包3702。全局唯一ID 3724根据源ID 3712,例如源ID 3712内PU或SPU的唯一标识以及生成或传输软件封包3702的时间和日期来生成。所需SPU数3726提供执行封包所需的最小SPU数。沙盒大小3728提供执行封包所需的SPU的关联DRAM中受保护存储器的数量。先前封包ID 3730提供要求顺序执行的封包组例如流数据中前一封包的标识。
实现区3732包含封包的核心信息。该信息包括DMA命令列表3734、程序3736和数据3738。程序3736包含要由SPU运行的程序(称作“spulet”),例如SPU程序3760和3762,并且数据3738包含要与这些程序一起处理的数据。DMA命令列表3734包含启动程序所需的一系列DMA命令。这些DMA命令包括DMA命令3740、3750、3755和3758。PU发布这些DMA命令到DMAC。
DMA命令3740包括VID 3742。VID 3742是当发布DMA命令时映射到物理ID的SPU虚拟ID。DMA命令3740还包括装载命令3744和地址3746。装载命令3744引导SPU将特定信息从DRAM读入到局部存储装置中。地址3746提供包含该信息的DRAM中的虚拟地址。该信息可以是例如来自程序区3736的程序、来自数据区3738的数据或者其他数据。最后,DMA命令3740包括局部存储装置地址3748。该地址标识应将信息装载到其中的局部存储装置内的地址。DMA命令3750包含类似信息。其他DMA命令也是可能的。
DMA命令列表3734还包括一系列起动(kick)命令,例如起动命令3755和3758。起动命令是由PU发布到SPU以发起封包处理的命令。DMA起动命令3755包括虚拟SPU ID 3752、起动命令3754和程序计数器3756。虚拟SPU ID 3752标识所要起动的SPU。起动命令3754提供相关起动命令,并且程序计数器3756提供用于执行程序的程序计数器地址。DMA起动命令3758为同一SPU或另一SPU提供类似信息。
如上所述,PU把SPU当作独立处理器而不是协处理器。因此,为了控制SPU的处理,PU使用类似于远程过程调用的命令。这些命令称作“SPU远程过程调用(SRPC)”。PU通过发布一系列DMA命令到DMAC来实现SRPC。DMAC将SPU程序及其关联堆栈帧装载到SPU的局部存储装置中。然后,PU将发布初始起动(initial kick)到SPU以执行SPU程序。
图38示出用于执行spulet的SRPC的步骤。图38的第一部分3802示出在发起由指定SPU处理spulet中由PU执行的步骤,并且图38的第二部分3804示出在处理spulet中由指定SPU执行的步骤。
在步骤3810,PU鉴定spulet,然后指定用于处理该spulet的SPU。在步骤3812,PU分配DRAM中的空间,从而通过发布DMA命令到DMAC以设置一个或多个必要沙盒的存储器存取密钥来执行spulet。在步骤3814,PU激活指定SPU的中断请求以通知spulet的完成。在步骤3818,PU发布DMA命令到DMAC以将spulet从DRAM装载到SPU的局部存储装置。在步骤3820,执行DMA命令,并且将spulet从DRAM读取到SPU的局部存储装置。在步骤3822,PU发布DMA命令到DMAC,以将与spulet相关联的堆栈帧从DRAM装载到SPU的局部存储装置。在步骤3823,执行DMA命令,并且将堆栈帧从DRAM读取到SPU的局部存储装置。在步骤3824,PU向DMAC发布DMA命令以将密钥分配给SPU从而允许SPU对在步骤3812指定的一个或多个硬件沙盒进行数据读取和写入。在步骤3826,DMAC采用分配给SPU的密钥更新密钥控制表(KTAB)。在步骤3828,PU发布DMA命令“起动”到SPU以开始程序处理。根据特定spulet,在执行特定SRPC中可以由PU发布其他DMA命令。
如上所述,图38的第二部分3804示出在执行spulet中由SPU执行的步骤。在步骤3830,SPU响应在步骤3828发布的起动命令,开始执行spulet。在步骤3832,在spulet的引导下,SPU鉴定spulet的关联堆栈帧。在步骤3834,SPU将多个DMA命令发布到DMAC,以将根据堆栈帧的需要而指定的数据从DRAM装载到SPU的局部存储装置。在步骤3836,执行这些DMA命令,并且将数据从DRAM读取到SPU的局部存储装置。在步骤3838,SPU执行spulet并且生成结果。在步骤3840,SPU发布DMA命令到DMAC以将结果存储在DRAM中。在步骤3842,执行DMA命令,并且将spulet的结果从SPU的局部存储装置写入到DRAM。在步骤3844,SPU发布中断请求到PU以通知SRPC完成。
SPU在PU的引导下独立执行任务的能力使得PU能够专用一组SPU以及与一组SPU相关联的存储器资源以执行扩展任务。例如,PU可以专用一个或多个SPU,以及与这些一个或多个SPU相关联的一组存储器沙盒,以接收在扩展周期上通过网络104传输的数据,并且将在该周期内接收的数据引导到一个或多个其他SPU及其关联存储器沙盒以作进一步处理。该能力尤其有利于处理通过网络104传输的流数据,例如MPEG流或ATRAC流音频或视频数据。PU可以专用一个或多个SPU及其关联存储器沙盒以接收这些数据,并且专用一个或多个其他SPU及其关联存储器沙盒以对这些数据进行解压缩和进一步处理。换句话说,PU可以建立一组SPU及其关联存储器沙盒之间的专用管道关系,以处理该数据。
然而,为了高效执行该处理,管道的专用SPU和存储器沙盒在不发生包括数据流的spulet的处理的周期内应保持专用于该管道。换句话说,专用SPU及其关联沙盒在这些周期内应置于保留状态下。在完成spulet的处理时保留SPU及其关联的一个或多个存储器沙盒称作“常驻终止(resident termination)”。常驻终止响应来自PU的指令而发生。
图39、40A和40B示出建立包括一组SPU及其关联沙盒的专用管道结构以处理流数据例如MPEG流数据。如图39所示,该管道结构的各组件包括PU 3902和DRAM 3918。PU 3902包括PU 3904、DMAC3906以及多个SPU,该多个SPU包括SPU 3908、SPU 3910和SPU3912。PU 3904、DMAC 3906和这些SPU之间的通信通过PU总线3914来发生。高带宽总线3916将DMAC 3906连接到DRAM 3918。DRAM 3918包括多个沙盒,例如沙盒3920、沙盒3922、沙盒3924和沙盒3926。
图40A示出用于建立专用管道的步骤。在步骤4010,PU 3904分配SPU 3908处理网络spulet。网络spulet包括用于处理网络104的网络协议的程序。在本例中,该协议是传输控制协议/网际协议(TCP/IP)。遵循该协议的TCP/IP数据分组在网络104上传输。当接收时,SPU 3908处理这些分组,并且将分组中的数据组装成软件封包102。在步骤4012,当完成网络spulet的处理时,PU 3904指令SPU 3908执行常驻终止。在步骤4014,PU 3904分配SPU 3910和3912处理MPEG spulet。在步骤4015,当完成MPEG spulet的处理时,PU 3904指令SPU 3910和3912也执行常驻终止。在步骤4016,PU 3904指定沙盒3920为由SPU3908和SPU 3910存取的源沙盒。在步骤4018,PU 3904指定沙盒3922为由SPU 3910存取的目的沙盒。在步骤4020,PU 3904指定沙盒3924为由SPU 3908和SPU 3912存取的源沙盒。在步骤4022,PU 3904指定沙盒3926为由SPU 3912存取的目的沙盒。在步骤4024,SPU 3910和SPU 3912分别发送对源沙盒3920和源沙盒3924内的存储器块的同步读取命令,以将这些存储器块设为阻止状态。该过程最终移到步骤4028,其中专用管道的建立完成并且保留专用于管道的资源。因此,SPU 3908、3910和3912及其关联沙盒3920、3922、3924和3926进入保留状态。
图40B示出用于由该专用管道处理MPEG流数据的步骤。在步骤4030,处理网络spulet的SPU 3908将TCP/IP数据分组从网络104接收到其局部存储装置中。在步骤4032,SPU 3908处理这些TCP/IP数据分组,并且将这些分组内的数据组装成软件封包102。在步骤4034,SPU 3908检查软件封包的首标3720(图37),以确定这些封包是否包含MEPG数据。如果封包不包含MEPG数据,则在步骤4036,SPU 3908将封包传输到在DRAM 3918内指定的通用沙盒,以由不包括在专用管道内的其他SPU处理其他数据。SPU 3908还向PU 3904通知该传输。
另一方面,如果软件封包包含MEPG数据,则在步骤4038,SPU3908检查封包的先前封包ID 3730(图37)以识别该封包所属的MPEG数据流。在步骤4040,SPU 3908选择专用管道的SPU以处理封包。在本例中,SPU 3908选择SPU 3910处理这些数据。该选择基于先前封包ID 3730和负载均衡因素。例如,如果先前封包ID 3730表示该软件封包所属的MPEG数据流的前一软件封包被发送到SPU 3910以作处理,则通常还将当前软件封包发送到SPU 3910以作处理。在步骤4042,SPU3908发布同步写入命令以将MEPG数据写入到沙盒3920。由于该沙盒先前设成阻止状态,因此在步骤4044,自动地将MPEG数据从沙盒3920读取到SPU 3910的局部存储装置。在步骤4046,SPU 3910处理其局部存储装置中的MEPG数据以生成视频数据。在步骤4048,SPU3910将视频数据写入到沙盒3922。在步骤4050,SPU 3910发布对沙盒3920的同步读取命令,以准备该沙盒接收另外MEPG数据。在步骤4052,SPU 3910处理常驻终止。该处理使该SPU进入保留状态,在该状态期间,SPU等待处理MPEG数据流中的另外MEPG数据。
可以在一组SPU及其关联沙盒之间建立其他专用结构以处理其他类型的数据。例如,如图41所示,可以建立专用SPU组,例如SPU4102、4108和4114来执行对三维对象的几何变换,以生成二维显示列表。该二维显示列表可以由其他SPU作进一步的处理(渲染)以生成像素数据。为了执行该处理,多个沙盒专用于SPU 4102、4108和4114,以存储三维对象和通过处理这些对象而获得的显示列表。例如,源沙盒4104、4110和4116专用于存储分别由SPU 4102、SPU 4108和SPU4114处理的三维对象。以类似方式,目的沙盒4106、4112和4118专用于存储通过分别由SPU 4102、SPU 4108和SPU 4114处理这些三维对象而获得的显示列表。
协调SPU 4120专用于将显示列表从目的沙盒4106、4112和4118接收到其局部存储装置中。SPU 4120在这些显示列表之间仲裁(arbitrate),并且将它们发送到其他SPU以渲染像素数据。
系统101的处理器还采用绝对定时器。绝对定时器提供时钟信号到PU的各SPU和其他部件,其中该时钟信号独立于且快于驱动这些部件的时钟信号。图42示出该绝对定时器的使用。
如该图所示,绝对定时器建立由各SPU执行任务的时间预算。该时间预算提供比各SPU处理这些任务所需的时间长的用于完成这些任务的时间。从而,对于每个任务,在时间预算内存在忙周期和等待周期。所有spulet都被编写成根据该时间预算进行处理而与SPU的实际处理时间或速度无关。
例如,对于PU的特定SPU,可以在时间预算4204的忙周期4202内执行特定任务。由于忙周期4202小于时间预算4204,因此在该时间预算内出现等待周期4206。在该等待周期内,SPU进入睡眠模式,在此期间,SPU消耗较小的功率。
任务的处理结果不被其他SPU或PU的其他元件期待(expect),直到时间预算4204结束。因此,使用由绝对定时器建立的时间预算,SPU处理的结果总是被协调而与SPU的实际处理速度无关。
将来,SPU的处理速度将变得更快。然而,由绝对定时器建立的时间预算将保持相同。例如,如图42所示,未来SPU将在更短的周期内执行任务,因此将具有更长的等待周期。因此,忙周期4208短于忙周期4202,并且等待周期4210长于等待周期4206。然而,由于程序编写成根据由绝对定时器建立的相同时间预算进行处理,因此保持SPU之间的处理结果协调。从而,较快的SPU可以处理为较慢SPU编写的程序,而不产生期待该处理结果的时间上的冲突。
代替在各SPU之间建立协调的绝对定时器,PU或者一个或多个指定SPU可以在处理spulet中分析由SPU正在执行的特定指令或微代码以发现由增强或不同操作速度产生的SPU并行处理协调问题。“无操作”(“NOOP”)指令可以插入到这些指令中,并且由一些SPU执行以保持spulet所期待的SPU处理的正确顺序完成。通过插入这些NOOP到这些指令中,可以保持各SPU执行所有指令的正确定时。
图43是示出具有共享系统存储器的主处理器和多个副处理器的处理部件的方框图。处理部件(PE)4305包括处理单元(PU)4310,在一个实施例,处理单元4310担当主处理器,并且运行操作系统。处理单元4310可以是例如执行Linux操作系统的Power PC核心。PE 4305还包括多个协同处理复合体(synergistic processing complex,SPC)如SPC4345、4365和4385。SPC包括担当PU 4310的副处理单元的协同处理单元(SPU)、存储器存储单元以及局部存储装置。例如,SPC 4345包括SPU 4360、MMU 4355和局部存储装置4359;SPC 4365包括SPU4370、MMU 4375和局部存储装置4379;并且SPC 4385包括SPU4390、MMU 4395和局部存储装置4399。
每个SPC可以配置成执行不同任务,因此在一个实施例中每个SPC可以使用不同指令集来访问。如果PE 4305用于无线通信系统中,例如,每个SPC可以负责单独的处理任务如调制、码片速率处理、编码、网络接口等。在另一个实施例中,各SPC可以具有相同指令集,并且可以相互并行使用,以执行受益于并行处理的操作。
PE 4305还可以包括由PU 4310使用的级别2高速缓存,如L2高速缓存4315。另外,PE 4305还包括在PU 4310与各SPU之间共享的系统存储器4320。系统存储器4320可以例如存储正在运行的操作系统(其可以包括内核)、设备驱动程序、I/O配置等的映像、正在执行的应用程序、以及其他数据。系统存储器4320包括一个或多个SPC的局部存储单元,其映射到系统存储器4320的一个区域。例如,局部存储装置4359可以映射到映射区域4335,局部存储装置4379可以映射到映射区域4340,并且局部存储装置4399可以映射到映射区域4342。PU4310和各SPC通过总线4317相互通信,并且与系统存储器4320通信,其中总线4317配置成在这些设备之间传递数据。
MMU负责在SPU的局部存储装置与系统存储器之间传输数据。在一个实施例中,MMU包括配置成执行该功能的直接存储器存取(DMA)控制器。PU 4310可以规划(program)MMU以控制哪些存储器区域可用于MMU中的每一个。通过改变可用于每一个MMU的映射,PU可以控制哪个SPU可以存取系统存储器4320中的哪一个区域。以这种方式,PU可以例如指定系统存储器的区域为私有的,以由特定SPU进行独占性使用。在一个实施例中,SPU的局部存储装置可以使用存储器映射被PU 4310以及其他SPU存取。在一个实施例中,PU 4310管理所有SPU的公共系统存储器4320的存储器映射。存储器映射表可以包括PU 4310的L2高速缓存4315、系统存储器4320以及SPU的共享局部存储装置。
在一个实施例中,SPU在PU 4310的控制下处理数据。SPU可以例如是数字信号处理核心、微处理器核心、微控制器核心等,或者上述核心的组合。局部存储装置中的每一个是与特定SPU相关联的存储区域。在一个实施例中,每个SPU可以将其局部存储装置配置为私有存储区域、共享存储区域,或者SPU可以将其局部存储装置配置为部分私有和部分共享存储装置。
例如,如果SPU需要大量局部存储,则SPU可以将其局部存储装置的100%分配为只能被该SPU存取的私有存储器。另一方面,如果SPU需要极小量局部存储,则SPU可以将其局部存储装置的10%分配为私有存储器,并且将剩余90%分配为共享存储器。共享存储器可被PU 4310以及其他SPU存取。SPU可以保留其局部存储装置的一部分,从而当执行需要快速存取的任务时让SPU具有快速、有保证的存储器存取。当处理敏感数据时,例如,在SPU正在执行加密/解密的情况下,SPU也可以保留其局部存储装置的一些为私有的。
图44是示出具有共享系统存储器的主处理器和多个副处理器的处理部件的方框图。处理部件(PE)4405包括处理单元(PU)4410,在一个实施例,处理单元4410担当主处理器,并且运行操作系统。处理单元4410可以是例如执行Linux操作系统的Power PC核心。PE 4405还包括多个协同处理复合体(SPC)如SPC 4445到4485。每个SPC包括担当PU 4410的副处理单元的协同处理单元(SPU)、存储器存储单元和局部存储装置。例如,SPC 4445包括SPU 4460、MMU 4455和局部存储装置4459;SPC 4465包括SPU 4470、MMU 4475和局部存储装置4479;并且SPC 4485包括SPU 4490、MMU 4495和局部存储装置4499。
在一个实施例中,SPU在PU 4410的控制下处理数据。SPU可以例如是数字信号处理核心、微处理器核心、微控制器核心等,或者上述核心的组合。在一个实施例中,局部存储装置中的每一个是与特定SPU相关联的存储区域。每个SPU可以将其局部存储装置配置为私有存储区域、共享存储区域,或者SPU可以是部分私有和部分共享的。
例如,如果SPU需要大量局部存储,则SPU可以将其局部存储装置的100%分配为只能被该SPU存取的私有存储器。另一方面,如果SPU需要极小量局部存储,则SPU可以将其局部存储装置的10%分配为私有存储器,并且将剩余90%分配为共享存储器。共享存储器可被PU 4410以及其他SPU存取。SPU可以保留其局部存储装置的一部分,从而当执行需要快速存取的任务时让SPU具有快速、有保证的存储器存取。当处理敏感数据时,例如,在SPU正在执行加密/解密的情况下,SPU也可以保留其局部存储装置的一些为私有的。
MMU负责在SPU的局部存储装置与系统存储器之间传输数据。在一个实施例中,MMU包括配置成执行该功能的直接存储器存取(DMA)控制器。
每个SPC可以设置成执行不同任务,因此在一个实施例中每个SPC可以使用不同指令集来访问。如果PE 4405用于无线通信系统中,例如,每个SPC可以负责单独的处理任务如调制、码片速率处理、编码、网络接口等。在另一个实施例中,SPC可以具有相同指令集,并且可以并行使用,以执行受益于并行处理的操作。
SPU的局部存储装置的共享部分可以通过将每个共享区域映射到系统存储器4420来被PU 4410以及其他SPU存取。在一个实施例中,PU 4410管理公共系统存储器4420的存储器映射。存储器映射表可以包括PU 4410的L2高速缓存4415、系统存储器4420以及SPU的共享局部存储装置。
系统存储器4420的一部分如图所示被操作系统(OS 4425)占据。系统存储器4425还包含数据4440,其代表要由PU 4410以及各SPU处理的数据。在一个实施例中,在PU上执行的处理接收涉及处理大量数据的任务的请求。PU首先确定用于执行该任务的最优方法以及数据在公共系统存储器4420中的最优存放。然后,PU可以发起将所要处理的数据从盘4435传输到系统存储器4420。在一个实施例中,PU将系统存储器4425中的数据安排成多个数据块,其中这些数据块的大小为各SPU的寄存器的大小。在一个实施例中,各SPU可以具有128个寄存器,其中每个寄存器的长度为128位。
然后,PU搜索可用SPU,并且将数据块分配给任何可用SPU,以处理数据。SPU可以存取公共系统存储器(例如,通过DMA命令)以将数据传输到SPU的局部存储装置,并且执行所分配的操作。在处理数据之后,SPU可以(例如,再次使用DMA)将数据传输回到公共系统存储器4420。随着各SPU变得可用,可以重复该过程,直到处理完所有数据块。
图45是示出用于将数据从盘装载到公共系统存储器的方法的流程图。处理开始于4500,于是,在步骤4510,由正在执行的应用程序接收任务请求。还接收所要处理的数据在盘4540上的位置。例如,该数据可以是大型矩阵方程,并且所请求任务可以是获得矩阵方程的解。
在步骤4515,确定用于执行所请求任务的最优方法。另外,还确定用于划分数据的最优块大小。在一个实施例中,在预备由SPU并行处理数据中,将块大小选成SPU的寄存器的大小。
在步骤4520,选择第一数据块,并且在步骤4525,将第一数据块(例如,块4551)装载到系统存储器4545中的数据4550区域内。然后,在判定步骤4530,判定盘4540上是否有更多数据块需要传输到公共系统存储器4545中。如果没有更多数据块要传输,则判定步骤4530转移到“否”分支4534,并且处理结束于4599。
如果存在更多数据块要传输,则判定步骤4530转移到“是”分支4534,于是,在步骤4535,将下一个数据块从盘装载到公共系统存储器中。然后,处理循环回到判定步骤4530,以判定是否存在更多需要传输的数据块。
图46是示出用于采用多个处理器并行处理公共系统存储器中的数据的过程的流程图。处理开始于4600,于是,在步骤4620,PU确定用于执行所请求任务的SPU操作集,并且在步骤4625,PU创建用于完成所请求任务的操作集的表。
在步骤4630,PU确定可用SPU,并且发送请求到可用SPU以处理数据块。在一个实施例中,PU可以通过将适当值置于SPU的邮箱-由SPU不断监测以发现所分配任务的SPU存储器区域中来发送请求到SPU。
在步骤4645,SPU将数据块传输到SPU的局部存储装置。在一个实施例中,SPU可以使用DMA命令来传输数据块。在步骤4650,SPU将数据块装载到SPU的寄存器中,并且SPU根据也从PU接收的指令处理数据。在步骤4655,SPU将经过处理的数据块传输回到公共系统存储器。在一个实施例中,SPU可以使用DMA命令来完成该操作。
然后,在判定步骤4660,判定是否有更多块操作挂起。如果有更多块操作挂起,则判定步骤4660转移到“是”分支4662,于是处理循环回到步骤4630,其中向更多SPU分配数据块以作处理。
如果没有更多块操作挂起,则判定步骤4660转移到“否”分支4664,于是,在判定步骤4665,另外判定是否得到所分配任务的解。如果尚未得到解,则判定步骤4665转移到“否”分支4664,于是处理循环回到步骤4620,其中确定新的SPU操作集。
如果得到解,则判定步骤4665转移到“是”分支4662,于是,在步骤4670,PU完成(finalize)处理。PU可以例如通过使用来自所有经过处理的数据块的数据来计算任务的最终解。处理结束于4699。
图47是示出从线性方程组创建等价增广矩阵的方框图。框4710示出原始线性方程组。线性方程组包括通过n个方程的集合线性相关的n个未知变量(x′)。每个方程中的每个变量具有系数(a′),并且每个方程包括常数项(b′)。为了求解线性方程组,必须为每个未知变量求得一个值,使得满足方程组中的所有方程。除非方程组的等价矩阵(参见下面讨论)的行列式为零,否则保证存在线性方程组的唯一解。
框4715示出如何把线性方程组视作等价矩阵方程。所示矩阵方程等价于线性方程组,因为矩阵方程的解也是线性方程组的解。如框4720所示,矩阵方程可以写成简单形式,ax=b,其中a代表未知变量的所有系数的矩阵,x是未知变量的单列向量,而b是常数的单列向量。
块4725示出矩阵系数可以如何与常数向量组合以产生增广矩阵。为了求解线性方程组,对矩阵方程施加矩阵运算,例如将各行和各列更替成其他行和列的线性组合。为了保持结果矩阵方程等价(具有与先前矩阵方程相同的解),应对常数向量b施加相同矩阵运算。因此,更方便的是,对增广矩阵施加这些矩阵运算,使得也对常数向量b施加这些运算。
图48是示出将线性方程系数划分成多个数据块并且将这些数据块装载到公共存储器中的方框图。在一个实施例中,数据块在大小上等于副处理器(SPU)的寄存器。框4810示出未被划分的增广矩阵,并且框4815示出划分成多个系数块的增广矩阵。在所示例子中,每一个块都包含四个系数。
然后,将这些系数块装载到公共RAM 4860中。公共RAM 4860可以被系统的一个或多个处理器存取,这有助于一个或多个处理器之间的数据共享。在一个实施例中,将来自相同块的系数装载到公共RAM4860内的相邻位置中,从而有助于在多处理器环境下逐块地处理矩阵系数。例如,将来自块4820的系数装载到存储器范围4840中,将来自块4825的系数装载到存储器范围4845中,将来自块4830的系数装载到存储器范围4850中,将来自块4835的系数装载到存储器范围4855中,等等。
图49是示出可以用来求解矩阵方程从而求解线性方程组的矩阵运算例子的表。表4900中的矩阵运算可以使用用于求解矩阵方程的方法之一由处理器之一(例如指定为主处理器的处理器)创建。
在一个实施例中,矩阵方程可以采用LU分解法来求解。LU分解法涉及将系数矩阵A因式分解成乘积L.U,其中L是下对角矩阵,而U是上三角矩阵。然后,通过求解方程L.(U.x)=b中的向量U.x然后对U.x方程求解x来容易地获得解。上述方法也称作后向-前向替换(backward-forward substitution)。LU分解算法是公知的。
另一种用于求解线性方程组的方法是高斯消元法。高斯消元法涉及重复地通过施加矩阵运算来将矩阵变换成等价矩阵,直到矩阵为上三角矩阵。上三角矩阵的元素在除了沿着对角线的元素和对角线之上的元素之外的所有地方均等于零。未知变量然后可以采用回代根据上三角矩阵容易地计算。矩阵变换典型地涉及将行或列更替成该行或列与任何其他行或列的线性组合。该线性变换总是产生等价矩阵-其解与原始矩阵相同的矩阵。
表4900的列1包括该变换/运算的列表。列2对于每一个矩阵运算包含其中的行或列受到该运算影响的块的列表。列3包含是否对特定块施加了运算的记录,并且列4包含哪个SPU正在处理或处理了特定块/运算的列表。新分配的空闲SPU返回可以使用列4中的信息来重新分配,以确定特定块的挂起操作。
图50是示出SPU如何存取公共存储器以对系数块执行矩阵运算的方框图。图50示出具有主处理器即PU 5010和多个副处理器如SPU5010、SPU 5015、SPU 5020、...、以及SPU 5025的系统。例如,SPU5010可以存取块5050,SPU 5015可以存取块5040,SPU 5020可以存取块5055,并且SPU 5025可以存取块5045。
图51是示出接收线性方程系数并且将这些系数装载到公共存储器中的流程图。处理开始于5100,于是,在步骤5110,接收线性方程组的未知变量数(也就是方程数)。在步骤5115,接收线性方程组的未知变量系数,并且在步骤5120,将这些系数排列成矩阵形式。通常,由n个线性方程构成的线性方程组可以写成:
a11x1+a12x2+Λ+a1nxn=b1
a21x1+a22x2+Λ+a2nxn=b2
M     M     M   M      M
an1x1+an2x2+Λ+annxn=bn
其中,x1-xn是n个未知变量,a′是未知变量的系数,并且b′是每个方程中的常数项。上述线性方程的解也是等价矩阵方程ax=b的解,其中
a = a 11 a 12 Λ a 1 n a 21 a 22 Λ a 2 n M M O M a n 1 a n 2 Λ a nn , x = x 1 x 2 M x n , 并且 b = b 1 b 2 M b n .
该矩阵方程等价于该线性方程组,因为该矩阵方程的解相同于该线性方程组的解。通过对a矩阵进行运算以获得该矩阵方程的解,也获得该线性方程组的解。
在步骤5120,形成由系数a和常数项b构成的增广矩阵:
a 11 a 12 Λ a 1 n b 1 a 21 a 22 Λ a 2 n b 2 M M O M M a n 1 a n 2 Λ a nn b n .
为了让矩阵变换继续产生等价矩阵,矩阵变换应施加于这些系数以及常数项。因此,更好形成增广矩阵以一起运算。
在步骤5130,确定系数块的最优大小。在施加矩阵运算之前,将矩阵划分成多个块,以帮助由多个处理器施加矩阵运算。块大小可以取决于矩阵的大小,所选用来求解矩阵的方法、可用SPU数等。大小选成产生矩阵运算的最高效求解。在另一个实施例中,数据块的大小可以选成各SPU的寄存器的大小以帮助各SPU对这些数据块的处理。
在步骤5135,根据在步骤5130所作的确定将矩阵划分成多个块,并且在步骤5140,将这些系数块装载到公共存储器中。在一个实施例中,顺序装载这些系数块。公共存储器可被将分担矩阵方程求解任务的所有SPU存取。处理结束于5199。
图52是示出PU确定矩阵运算集以求解线性微分方程的流程图。在一个实施例中,PU可以采用高斯消元法来获得矩阵方程的解。高斯消元法涉及分别通过将行或列更替成该行或列与一个或多个其他行或列的线性组合来将矩阵变换成上三角形式。在每一个阶段,形成等价矩阵:其解与先前矩阵相同的矩阵。
处理开始于5200,于是,在步骤5210,PU分析存储在公共存储器中的系数,并且在步骤5215,PU确定用于求解线性方程的最优方法。例如,PU可以确定高斯消元法是最佳方法。
在步骤5220,PU确定用于求解矩阵方程的矩阵运算集。在步骤5225,PU创建一个表,其中包含所有确定的矩阵运算的列表。可以创建该表,从而记录对于哪个块并且由哪个SPU完成了哪些操作。图49示出该表的一个例子。
在步骤5230,PU规划各SPU以执行矩阵运算。在一个实施例中,各SPU是可以被优化用于执行特定任务如对系数块施加矩阵运算的灵活处理器。在步骤5235,PU指令各SPU逐块地执行矩阵运算,并且在步骤5240,各SPU开始执行所分配的任务。有关在步骤5240发生的处理的更详细信息在图53所示的流程图中提供。
在执行第一矩阵运算集之后,在判定步骤5245,判定是否已得到矩阵解。如果尚未得到矩阵解,则判定步骤5245转移到“否”分支,于是处理返回到步骤5220,其中PU确定新的矩阵运算集。如果已得到矩阵解,则判定步骤5245转移到“是”分支5250,于是处理继续到步骤5260。
在步骤5260,PU根据结果矩阵计算矩阵方程的解(也就是线性方程组的解)。处理结束于5299。
图53是示出各SPU逐块地执行矩阵运算的流程图。处理开始于5300,于是,在步骤5310,空闲SPU-当前未涉及任何其他任务的SPU-报告准备对系数块执行挂起矩阵运算。然后在判定步骤5315,判定是否有更多块操作挂起。如果没有更多块操作挂起,则判定步骤5315转移到“否”分支5325,于是,在步骤5355,向PU通知完成了所有挂起矩阵运算。处理结束于5399。如图52的流程图所示,如果此时尚未获得矩阵解,则PU可以产生另外的矩阵运算。
如果有更多块操作挂起,则判定步骤5315转移到“是”分支5320,于是SPU识别挂起矩阵运算,并且表示SPU正在完成块操作的过程中。在一个实施例中,SPU可以识别挂起矩阵运算,并且通过使用图49所示的任务表来表示正在执行运算。
在步骤5335,SPU存取公共存储器,并且装载其所分配的块中的一个或多个系数以开始处理。在一个实施例中,一个或多个SPU可以通过直接存储器存取单元存取存储器。在步骤5340,将矩阵运算施加于一个或多个所装载的系数。在步骤5345,将对一个或多个系数的矩阵运算结果装载回到公共存储器中。通过这样做,该结果现在可被PU以及其他SPU存取,并且无需将结果传输到PU或其他SPU。
然后,在判定步骤5360判定是否存在更多需要处理的系数。如果存在更多需要处理的系数,则判定步骤5360转移到“是”分支5365,于是处理返回到步骤5335,其中从公共存储器装载一个或多个系数。如果不存在更多需要处理的系数,则判定步骤5360转移到“否”分支5370,于是处理返回到步骤5310。在步骤5310,SPU报告准备执行另外的块操作集。
虽然示出和描述了本发明的特定实施例,但是对于本领域的技术人员而言是显然的,根据本文,可以在不脱离本发明及其较宽方面的情况下进行各种变更和修改,因此,所附权利要求在其范围内将要包括属于本发明的实质精神和范围内的所有这些变更和修改。此外,应该理解,本发明仅由所附权利要求限定。本发明的技术人员应该理解,如果打算以特定数目限定权利要求元素,则需要在权利要求中明确表达该意图,并且在缺少该表达的情况下,不存在这样的限定。对于非限制例子,为有助于理解起见,所附权利要求可能包含引导短语“至少一个”和“一个或多个”来引导权利要求元素。然而,使用这样的短语不应解释成,由诸如“a”或“an”的不定冠词引导权利要求元素限制包含该被引导权利要求元素的任何特定权利要求仅包含一个该元素,即使当同一权利要求包含引入短语“至少一个”或“一个或多个”以及诸如“a”或“an”的不定冠词,也是如此;这同样适用于权利要求中定冠词的使用。

Claims (18)

1.一种用于使用多个处理器处理数据的计算机实现方法,该方法包括:
使用一个或多个首处理器之一,将可被所述一个或多个首处理器和一个或多个副处理器存取的公共存储器划分成多个数据块,所述一个或多个首处理器和所述一个或多个副处理器从一组异构处理器中选择;
从这些副处理器中识别可用处理器以处理数据块之一;以及
使用该可用副处理器处理数据块。
2.如权利要求1所述的方法,还包括使用可用副处理器的存储器存取单元直接存取公共存储器中的数据块。
3.如权利要求2所述的方法,还包括使用可用副处理器将数据块从公共存储器传输到局部于可用副处理器的副存储器。
4.如权利要求3所述的方法,还包括在处理数据块之后,使用可用副处理器将数据块从副存储器传输到公共存储器。
5.如权利要求1所述的方法,还包括可用副处理器在处理数据块之后通知首处理器之一。
6.如权利要求1所述的方法,还包括使用首处理器之一请求副处理器处理数据块。
7.如权利要求1所述的方法,其中划分包括将公共存储器划分成多个数据块,数据块的大小等于可用副处理器的寄存器的大小。
8.如权利要求1所述的方法,还包括使用首处理器之一进一步处理数据块。
9.如权利要求1所述的方法,还包括使用首处理器之一识别另外可用副处理器以处理数据块直到处理完所有数据块。
10.一种信息处理系统,包括:
多个异构处理器,其中所述多个异构处理器包括一个或多个首处理器以及一个或多个副处理器;以及
公共存储器,可被所述多个异构处理器存取,其中:
首处理器之一配置成将公共存储器划分成多个数据块,
首处理器之一配置成从这些副处理器中识别可用处理器以处理数据块之一;以及
副处理器之一配置成处理数据块。
11.如权利要求10所述的信息处理系统,其中可用副处理器还配置成使用存储器存取单元直接存取公共存储器中的数据块。
12.如权利要求11所述的信息处理系统,其中可用副处理器还配置成将数据块从公共存储器传输到局部于可用副处理器的副存储器。
13.如权利要求12所述的信息处理系统,其中可用副处理器还配置成在处理数据块之后将数据块从副存储器传输到公共存储器。
14.如权利要求10所述的信息处理系统,其中可用副处理器还配置成在处理数据块之后通知首处理器之一。
15.如权利要求10所述的信息处理系统,其中首处理器之一配置成请求可用副处理器处理数据块。
16.如权利要求10所述的信息处理系统,其中所述一个首处理器还配置成将公共存储器划分成多个数据块,数据块的大小等于副处理器之一的寄存器的大小。
17.如权利要求10所述的信息处理系统,其中首处理器之一配置成进一步处理数据块。
18.如权利要求10所述的信息处理系统,其中首处理器之一配置成识别另外可用副处理器以处理数据块直到处理完所有数据块。
CNB2004100787992A 2003-09-25 2004-09-17 用于使用多个处理器操纵数据的系统和方法 Expired - Fee Related CN1292366C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,840 US20050071578A1 (en) 2003-09-25 2003-09-25 System and method for manipulating data with a plurality of processors
US10/670,840 2003-09-25

Publications (2)

Publication Number Publication Date
CN1601511A CN1601511A (zh) 2005-03-30
CN1292366C true CN1292366C (zh) 2006-12-27

Family

ID=34376012

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100787992A Expired - Fee Related CN1292366C (zh) 2003-09-25 2004-09-17 用于使用多个处理器操纵数据的系统和方法

Country Status (2)

Country Link
US (1) US20050071578A1 (zh)
CN (1) CN1292366C (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7475257B2 (en) 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US20050278720A1 (en) * 2004-05-27 2005-12-15 Samsung Electronics Co., Ltd. Distribution of operating system functions for increased data processing performance in a multi-processor architecture
KR100814645B1 (ko) * 2005-12-29 2008-03-18 성균관대학교산학협력단 분산 센서 네트워크를 위한 효율적인 키 사전 분배 시스템및 그 분배 방법
WO2007097060A1 (ja) * 2006-02-24 2007-08-30 Sharp Kabushiki Kaisha マルチプロセッサシステムおよびそれを備えた表示装置
US8175853B2 (en) 2008-03-28 2012-05-08 International Business Machines Corporation Systems and methods for a combined matrix-vector and matrix transpose vector multiply for a block-sparse matrix
CN101620587B (zh) * 2008-07-03 2011-01-19 中国人民解放军信息工程大学 柔性可重构任务处理单元结构
US8261117B2 (en) * 2008-09-11 2012-09-04 International Business Machines Corporation Virtualization in a multi-core processor (MCP)
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
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
US8341638B2 (en) * 2008-09-30 2012-12-25 International Business Machines Corporation Delegated virtualization across physical partitions of a multi-core processor (MCP)
US8868848B2 (en) 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
CN103347053A (zh) * 2013-06-19 2013-10-09 成都市欧冠信息技术有限责任公司 基于管道技术的远程协同处理过程调用方法
US20170139756A1 (en) * 2014-04-23 2017-05-18 Sciensys Program parallelization on procedure level in multiprocessor systems with logically shared memory
CN104468132A (zh) * 2014-12-08 2015-03-25 上海斐讯数据通信技术有限公司 交换机
CN105183387A (zh) * 2015-09-14 2015-12-23 联想(北京)有限公司 一种控制方法及控制器、存储设备
CN107451090B (zh) * 2016-06-01 2020-09-11 华为技术有限公司 数据处理系统和数据处理方法
CN107688551A (zh) * 2016-12-23 2018-02-13 北京国睿中数科技股份有限公司 主处理器与协处理器之间的数据交互控制方法及系统

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787057A (en) * 1986-06-04 1988-11-22 General Electric Company Finite element analysis method using multiprocessor for matrix manipulations with special handling of diagonal elements
US5978831A (en) * 1991-03-07 1999-11-02 Lucent Technologies Inc. Synchronous multiprocessor using tasks directly proportional in size to the individual processors rates
DE69232431T2 (de) * 1991-07-12 2002-09-19 Matsushita Electric Ind Co Ltd Vorrichtung zur Lösung von linearen Gleichungssystem
EP0680640A1 (en) * 1993-01-22 1995-11-08 University Corporation For Atmospheric Research Multipipeline multiprocessor system
US5560030A (en) * 1994-03-08 1996-09-24 Texas Instruments Incorporated Transfer processor with transparency
JP3639323B2 (ja) * 1994-03-31 2005-04-20 富士通株式会社 メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5548798A (en) * 1994-11-10 1996-08-20 Intel Corporation Method and apparatus for solving dense systems of linear equations with an iterative method that employs partial multiplications using rank compressed SVD basis matrices of the partitioned submatrices of the coefficient matrix
JP3926866B2 (ja) * 1996-05-10 2007-06-06 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、及び描画システム
US6128724A (en) * 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6714217B2 (en) * 1998-12-18 2004-03-30 Sprint Communication Company, L.P. System and method for providing a graphical user interface to, for building, and/or for monitoring a telecommunication network
US6381659B2 (en) * 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
JP3543942B2 (ja) * 2000-03-02 2004-07-21 株式会社ソニー・コンピュータエンタテインメント 画像生成装置
TW501045B (en) * 2000-03-03 2002-09-01 Sony Computer Entertainment Inc Entertainment device and computer system having exchangeability
JP2001319243A (ja) * 2000-03-03 2001-11-16 Sony Computer Entertainment Inc 画像生成装置、画像生成装置におけるジオメトリ処理形態の切換方法、記録媒体、コンピュータプログラム、半導体デバイス
JP2002207685A (ja) * 2000-10-12 2002-07-26 Sony Computer Entertainment Inc 仮想世界システム、サーバコンピュータおよび情報処理装置
US6751753B2 (en) * 2001-02-27 2004-06-15 Sun Microsystems, Inc. Method, system, and program for monitoring system components
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6826662B2 (en) * 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US6966015B2 (en) * 2001-03-22 2005-11-15 Micromuse, Ltd. Method and system for reducing false alarms in network fault management systems
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7093104B2 (en) * 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6809734B2 (en) * 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US7210022B2 (en) * 2001-05-15 2007-04-24 Cloudshield Technologies, Inc. Apparatus and method for interconnecting a processor to co-processors using a shared memory as the communication interface
JP2003033576A (ja) * 2001-05-18 2003-02-04 Sony Computer Entertainment Inc エンタテインメントシステム、通信システム、通信プログラム、通信プログラムを格納したコンピュータ読み取り可能な記録媒体、及び通信方法
US20030074650A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Debugger operating system for embedded systems
US7146542B2 (en) * 2002-12-20 2006-12-05 Hewlett-Packard Development Company, L.P. Method and apparatus for diagnosis and repair of computer devices and device drivers
US7472112B2 (en) * 2003-06-23 2008-12-30 Microsoft Corporation Distributed query engine pipeline method and system

Also Published As

Publication number Publication date
CN1601511A (zh) 2005-03-30
US20050071578A1 (en) 2005-03-31

Similar Documents

Publication Publication Date Title
CN1292366C (zh) 用于使用多个处理器操纵数据的系统和方法
CN1279469C (zh) 一种处理器中处理数据的方法和处理数据的系统
CN1291327C (zh) 计算机处理系统和计算机处理方法
CN1279470C (zh) 宽带网络计算机体系结构的计算机处理器和处理设备
CN101040268A (zh) 宽带网络计算机体系结构中的外部数据接口
CN1494690A (zh) 用于宽带网络的计算机体系结构和软件单元
CN1815438A (zh) 信息处理方法和系统
CN1601512A (zh) 使用多个处理器的虚拟设备的系统和方法
CN1496516A (zh) 宽带网络计算机体系结构的资源专用系统和方法
CN1601468A (zh) 在多个处理器上加载软件的系统和方法
CN1806231A (zh) 提供软件实现的高速缓冲存储器的方法与装置
CN101051301A (zh) 用于操作计算机处理器阵列的方法和装置
CN1185592C (zh) 并行处理器结构
CN1249963C (zh) 使用分组摘要信息快速和自适应处理分组的设备和方法
CN101069161A (zh) 调度方法、调度装置和多处理器系统
CN103262038B (zh) 图形计算进程调度
CN1280716C (zh) 计算机处理方法、分布式计算方法和网络计算方法
CN103999051B (zh) 用于着色器核心中着色器资源分配的策略
CN1910554A (zh) 多处理器系统中处理器任务迁移的方法与装置
US9176795B2 (en) Graphics processing dispatch from user mode
US9507632B2 (en) Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta
CN1641614A (zh) 处理器系统,dma控制电路,dma控制方法,dma控制器用控制方法,图形处理方法和图形处理电路
CN1906586A (zh) 用于在多处理器系统中处置处理错误的方法和设备
CN1881183A (zh) 信息处理装置、进程控制方法及其计算机程序
CN1291325C (zh) 通过源/目的转换机构实现高速存储器克隆的方法和系统

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