CN1601468A - 在多个处理器上加载软件的系统和方法 - Google Patents

在多个处理器上加载软件的系统和方法 Download PDF

Info

Publication number
CN1601468A
CN1601468A CNA2004100797104A CN200410079710A CN1601468A CN 1601468 A CN1601468 A CN 1601468A CN A2004100797104 A CNA2004100797104 A CN A2004100797104A CN 200410079710 A CN200410079710 A CN 200410079710A CN 1601468 A CN1601468 A CN 1601468A
Authority
CN
China
Prior art keywords
processor
spu
file
data
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2004100797104A
Other languages
English (en)
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 CN1601468A publication Critical patent/CN1601468A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

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

Abstract

提供了用于将软件加载到多个处理器上的系统和方法。处理单元(PU)从系统存储器检索文件并且将它加载到其内部存储器。PU从文件的头提取处理器类型,该处理器类型标识文件是否应当在PU或协处理单元(SPU)上执行。如果SPU应当执行文件,则PU将文件DMA发送至SPU进行执行。在一个实施例中,文件是包含PU和SPU代码的组合文件。在这个实施例中,PU识别包含在组合文件内指示嵌入SPU代码的一或多个部分头。在这个实施例中,PU从组合文件提取SPU代码,并且DMA将提取代码发送到SPU进行执行。

Description

在多个处理器上加载软件的系统和方法
技术领域
本发明通常涉及在多个处理器上加载软件的系统和方法。更具体地,本发明涉及从文件提取处理器类型并把对应于处理器类型的文件加载到处理器的系统和方法。
背景技术
计算机系统正变得越来越复杂。计算机行业通常每18个月使诸如个人计算机,PDA及游戏控制台(gaming consoles)的计算机系统的性能增加一倍。为了使计算机行业完成这个任务,半导体行业生产每18个月在性能上增加一倍的集成电路。计算机系统基于集成电路的体系结构将集成电路用于特定功能。两个基本体系结构是:1)基于微处理器的体系结构,及2)基于数字信号处理器的体系结构。
具有基于微处理器的体系结构的集成电路通常被用于处理控制操作,而具有基于数字信号处理器的体系结构的集成电路通常被用来处理信号处理功能(即数学运算)。随着技术的演进,计算机行业及半导体行业在计算机系统设计中正使用两种体系结构或处理器类型。
软件是计算机系统中另一个随着集成电路的发展一起演进的要素。软件开发人员以对应于执行代码的处理器类型的方式编写代码。例如,处理器具有特定数量的寄存器及特定数量的算术逻辑单元(ALU),从而软件开发人员将其代码设计成最有效地使用寄存器及ALU。
随着半导体行业把多个处理器类型合并到单个器件中,并且随着软件开发人员编写在多个处理器类型体系结构上执行的代码,所遇到的挑战是识别哪个文件将加载到特定处理器类型上。
可执行文件通常使用把相关文件加载到存储器的运行时刻加载程序。然而,运行时刻加载程序假定由正执行运行时刻加载程序的相同处理器执行相关文件。然而,在多处理器环境中,可能并非如此。另外,在异构处理器环境中,特定文件的代码被针对特定处理器类型进行格式化,并且如果代码被加载在不同处理器类型上,则不能运行。
因此,需要一种用于把处理器类型与文件关联并且把文件加载到对应于关联的处理器类型的处理器的系统和方法。
发明内容
已经发现,通过提取包含在文件头中的处理器标识符,并且把文件加载在对应于已提取的处理器标识符的处理器上,可解决上述挑战。
计算机系统包含处理单元(PU)及协处理单元(SPU)。在PU加载操作系统期间,PU启动并且初始化计算机系统。操作系统执行基本任务,诸如识别来自键盘的输入,把输出发送到显示屏,跟踪磁盘上的文件及目录,及控制外部设备,诸如磁盘驱动器及打印机。操作系统包含一个内核,即操作系统的中央模块,并且负责存储器管理,进程管理,任务管理,及磁盘管理。
内核把PU程序加载到PU的内部存储器。在加载处理期间,内核识别对应于PU程序的运行时刻加载程序。运行时刻加载程序负责加载对象,解析符号,及加载其它对应于PU程序的文件(即数据,程序)。内核把运行时刻加载程序加载到PU的内部存储器并且将控制传递给运行时刻加载程序。运行时刻加载程序识别PU程序依赖的诸如SPU文件的文件。运行时刻加载程序把SPU文件加载到PU的内部存储器,并且从SPU文件头提取处理器标识符。例如,SPU文件可以是ELF格式化文件,在这种情况下,文件的ELF头中包含“机器类型SPU”,其是把文件关联到SPU的处理器标识符。
运行时刻加载程序基于SPU文件的处理器标识符确定SPU文件应当在SPU上运行,并且使用DMA命令向SPU发送SPU文件。SPU接收SPU文件并且把它存储在SPU的本地存储器中。SPU开始执行SPU文件,并且接着把SPU运行时刻加载程序加载在其内部存储器中。
在执行SPU文件期间,SPU运行时刻加载程序检索并且加载SPU文件所依赖的文件。例如,SPU文件可以是图形程序,从而它需要用于操作数据的插件模块。SPU运行时刻加载程序识别出SPU文件需要插件,并且向PU发送请求。PU接收请求,并且从系统存储器检索插件。PU程序使用DMA命令向SPU运行时刻加载程序发送插件,从而SPU运行时刻加载程序把插件存储在SPU内部存储器中。SPU文件也可以使用如上所述的相同技术从PU程序接收数据。
在一个实施例中,SPU运行时刻加载程序从系统存储器独立检索插件和/或数据,而不需要PU程序的干预。在这个实施例中,SPU程序可以向PU发送确认消息,该消息指示SPU完成其处理任务。
上述只是一个概述,因而肯定包含对细节的简化,概括和省略;因此,本领域的技术人员会理解,这种概述只是说明性的,并非旨在进行任何方式的限制。本发明的如权利要求单独限定的其它方面,发明特性及优点将在下面提供的非限制性详细描述中变得清楚。
附图说明
通过参照附图,本领域技术人员可更好地理解本发明及其各种目的,特性及优点。在不同附图中使用相同的附图标记指示类似或相同的组成部分。
图1图解了根据本发明的计算机网络的总体体系结构;
图2的图例图解了根据本发明的处理单元(PU)的结构;
图3的图例图解了根据本发明的宽带引擎引擎(BE)的结构;
图4的图例图解了根据本发明的协处理单元(SPU)的结构;
图5的图例图解了根据本发明的处理单元,可视化器(visualizer)(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)的密钥控制表(keycontrol table)的结构;
图34根据本发明图解了存储硬件沙箱的存储器访问密钥的模式;
图35根据本发明图解了硬件沙箱的存储器访问控制表的结构;
图36是使用图33的密钥控制表及图35的存储器访问控制表访问存储器沙箱的步骤的流程图;
图37根据本发明图解了软件单元的结构;
图38是根据本发明向SPU发出远程过程调用的步骤的流程图;
图39根据本发明图解了用于处理流数据的专用管道的结构;
图40是根据本发明在流数据的处理中由图39的专用管道完成的步骤的流程图;
图41根据本发明图解了用于流数据处理的专用管道的可选结构;
图42根据本发明图解了用于协议SPU对应用及数据的并行处理的绝对定时器的模式;
图43的图例示出了初始化程序的处理单元,及程序的加载相关文件到协处理单元的运行时刻加载程序;
图44的图例示出了接收组合文件,提取包含在组合文件中的协处理单元(SPU)文件,并且向SPU发送SPU文件的运行时刻加载程序;
图45的图例示出了从处理单元(PU)程序接收插件的协处理单元(SPU)文件;
图46的图例示出了从对应于SPU可执行文件的系统存储器中独立检索插件的协处理单元(SPU);
图47A是示出包含在组合文件中的各种代码行的用户代码;
图47B是示出包含在相关文件中的各种代码行的用户代码;
图48的流程图示出了在处理单元中执行程序及传递控制到程序的运行时刻加载程序时采取的步骤的流程图;
图49的流程图示出了在协处理单元(SPU)从处理单元(PU)接收文件及执行文件时采取的步骤;而
图50的模块图图解了具有共享系统存储器的主处理器和多个辅助处理器的处理单元。
具体实施方式
以下描述旨在提供本发明例子的详细描述,而不是对本发明自身的限制。而是,属于本发明范围的任何数量的变化在后面的权利要求中定义。
根据本发明的计算机系统101的总体体系结构在图1中示出。
如此图所示,系统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之间。因此,DTV112包含介于客户端106及服务器108之间的数量的计算模块。如下所述,各个计算模块包含处理控制器及多个相同处理单元,用于执行通过网络104发送的数据及应用的并行处理。
系统101的这种同构结构利于可适应性,处理速度及处理效率。由于系统101的各个成员使用一或多个相同计算模块(或某个部分)执行处理,执行数据及应用的实际处理的特定计算机或计算设备是不重要的。此外,具体应用及数据的处理可以在网络的成员中间分享。通过唯一标识全系统中包括由系统101处理的数据及应用的单元(cell),处理结果可以被发送到请求处理的计算机或计算设备,而无需考虑这个处理发生的位置。由于执行这个处理的模块具有通用结构并且使用通用ISA,避免了为在处理器中间实现兼容而增加的软件层的计算负担。这个体系结构及编程模型利于得到执行例如实时多媒体应用所需的处理速度。
为了进一步利用系统101所带来的处理速度及效率,由这个系统处理的数据及应用被封装到唯一标识别的、统一格式化的软件单元(software cell)102中。
每个软件单元102包含或能够包含应用程序和数据。每个软件单元也包含一个ID以全局标识遍及网络104及系统101的单元。软件单元的这种统一结构和遍及网络的软件单元的唯一标识,利于网络的任何计算机或计算设备上对应用及数据的处理。例如,客户端106可以设定软件单元102,但由于客户端106受处理能力的限制,将这个软件单元发送到服务器108进行处理。因此,软件单元可以在全网络104迁移以根据网络上处理资源的可用性进行处理。
系统101的处理器和软件单元的同构结构也避免了现在异构网络的许多问题。例如,避免了设法允许在使用任何指令集的任何ISA上处理应用的低效编程模型,例如,诸如Java虚拟机的虚拟机。因此,系统101可以进一步实现比现在的网络更有效和高效的宽带处理。
针对网络104的所有成员的基本处理模块是处理单元(PU)。图2图解了PU的结构。如该图所示,PE 201包括处理单元(PU)203,直接存储器访问控制器(DMAC)205及多个协处理单元(SPU),即,SPU 207,SPU 209,SPU 211,SPU 213,SPU 215,SPU 217,SPU 219及SPU 221。本地PE总线223在SPU,DMAC 205及PU 203中间发送数据及应用。例如,本地PE总线223可以具有传统体系结构或被实现为分组交换网络。分组交换网络的实现在需要更多硬件的同时,增加了可用带宽。
可以使用各种方法构造PE 201以实现数字逻辑。然而,PE 201最好被构造成在硅质基底上使用互补金属氧化物半导体(CMOS)的单个集成电路。基底的可选材料包含镓砷化物(gallium arsinide),镓铝砷化物(gallium aluminum arsinide)及其它使用各种掺杂剂的所谓III-B化合物。也可以通过使用例如快速单通量量子(RSFQ)逻辑的超导材料实现PE 201。
PE 201通过高带宽存储器连接227与动态随机访问存储器(DRAM)225紧密关联。DRAM 225作为PE 201的主存储器。尽管DRAM 225最好是动态随机访问存储器,但是DRAM 225可以通过使用例如作为静态随机访问存储器(SRAM),磁性随机访问存储器(MRAM),光学存储器或全息存储器的其它装置实现。DMAC 205利于DRAM 225及PE 201的SPU和PU之间的数据传送。如下面进一步讨论的,DMAC 205为各个SPU指定DRAM 225内的专用区域,在该区域只有SPU可以写数据并且只有SPU可以从该区域读取数据。这个专用区域被称为“沙箱”。
例如,PU 203可以是能独立处理数据及应用的标准处理器。在操作中,PU 203安排及协调SPU对数据及应用的处理。SPU最好是单指令、多数据(SIMD)处理器。
在PU 203的控制下,SPU以并行且独立的方式执行这些数据及应用的处理。DMAC 205控制PU 203及SPU对存储在共享DRAM 225中的数据及应用的访问。尽管PE 201最好包含8个SPU,但是根据所需处理能力,在PU中可使用更多或更少数量的SPU。同时,诸如PE 201的若干PU可以加入或封装到一起以提供增强的处理能力。
例如,如图3所示,四个PU可以封装或加入到一起,例如,在一或多个芯片封装内,以构成网络104的成员的单个处理器。这种结构被称为宽带引擎(BE)。如图3所示,BE 301包含四个PU,即,PE 303,PE 305,PE 307及PE 309。这些PU间的通信通过BE总线311进行。宽带宽存储器连接313提供共享DRAM 315及这些PU之间的通信。代替BE总线311地,BE 301的PU间的通信可以通过DRAM 315及该存储器连接进行。
输入/输出(I/O)接口317及外部总线319提供宽带引擎301和网络104的其它成员之间的通信。BE 301的各个FU以并行及独立的方式执行数据及应用的处理,该方式类似于由PU的SPU执行的并行及独立的应用及数据的处理。
图4图解了SPU的结构。SPU 402包含本地存储器406,寄存器410,四个浮点单元412及四个整数单元414。然而,仍然根据所需的处理能力,可以使用更多或更低数量的浮点单元412及整数单元414。在一个最优实施例中,本地存储器406包含128千字节的存储器,并且寄存器410的容量是128乘128位。浮点单元412最好以每秒32千兆(billion)浮点运算的速度(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和8个SPU。每个SPU包含本地存储器(LS)。另一方面,处理器可以包括可视化器(VS)505的结构。如图5所示,VS 505包括PU512,DMAC 514和四个SPU,即,SPU 516,SPU 518,SPU 520和SPU522。通常由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的芯片封装,所述接口用于向网络104的其它成员(或本地连接的其它芯片封装)提供超高速通信。例如,BE 702可以作为网络104上的服务器。
图8的芯片封装包括两个PE 802和804以及两个VS 806和808。I/O810提供芯片封装602和网络104之间的接口。来自芯片封装的输出是视频信号。例如,该结构可以作为图形工作站。
图9图解了另一个结构。该结构包含图8中图解的结构的处理能力的一半。代替两个PU地,提供一个PE 902,并且代替两个VS地,提供一个VS 904。I/O 906具有图8中图解的I/O的带宽的一半。然而,这种处理器也可以作为图形工作站。
最后的结构在图10中示出。该处理器仅由单个VS 1002和I/O 1004构成。例如,该结构可以作为PDA。
图11A图解了把光学接口集成到网络104的处理器的芯片封装。这些光学接口将光学信号转换为电信号以及将电信号转换为光学信号,并且光学接口可以由包含例如镓砷化物,铝镓砷化物,锗和其它元素或化合物的各种材料构成。如此图所示,光学接口1104和1106被制造在BE 1102的芯片封装上。BE总线1108提供BE 1102的PU,即,PE1110,PE 1112,PE 1114,PE 1116和这些光学接口间的通信。光学接口1104包含两个端口,即,端口1118和端口1120,并且光学接口1106也包含两个端口,即,端口1122和端口1124。端口1118,1120,1122和1124被分别连接到光波导1126,1128,1130和1132。通过光学接口1104和1106的端口,经由这些光波导针对BE 1102收发光信号。
通过使用这种光波导和各个BE的四个光学端口,多个BE可以在各种结构中被连接在一起。例如,如图11B所示,两个或更多BE,例如BE 1152,BE 1154和BE 1156,可以通过这种光学端口被串行连接。在这个例子中,BE 1152的光学接口1166通过其光学端口连接到BE1154的光学接口1160的光学端口。以类似方式,BE 1154上的光学接口1162的光学端口被连接到BE 1156的光学接口1164的光学端口。
在图11C中图解了矩阵结构。在该结构中,每个BE的光学接口被连接到其它两个BE。如该图所示,BE 1172的光学接口1188的光学端口之一被连接到BE 1176的光学接口1182的光学端口。光学接口1188的其它光学端口被连接到BE 1178的光学接口1184的光学端口。以类似方式,BE 1174的光学接口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连接到8个组控制1206。每个组控制1206控制DRAM1204的8个组1208(在此图中只示出四个)。因此,DRAM 1204包括总共64个组。在一个最优实施例中,DRAM 1204具有64兆字节的容量,并且各个组具有1兆字节的容量。在此优选实施例中,各组内最小可寻址单元是1024位块。
BE 1201还包含交换单元1212。交换单元1212允许BE上与BE1201紧耦合的其它SPU访问DRAM 1204。因此,第二个BE可以紧耦合到第一个BE,并且每个BE的每个SPU可以寻址的存储器位置数量两倍于SPU通常可访问的存储器位置数量。对第一BE的DRAM和对第二BE的DRAM的数据直接读或写可以通过诸如交换单元1212的交换单元进行。
例如,如图12B所示,为了实现此写入,第一BE的SPU,例如,BE 1222的SPU 1220,向第二BE的DRAM,例如,BE 1226的DRAM1228的存储器位置发出写命令(不象通常那样向BE 1222的DRAM1224发出)。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的64组的结构。这些组被排列成8行,即,行1302,1304,1306,1308,1310,1312,1314和1316,以及8列,即,列1320,1322,1324,1326,1328,1330,1332和1334。每行由组控制器控制。因此,每个组控制器控制8兆字节的存储器。
图14A和14B图解了用于存储及访问DRAM的最小可寻址存储器单元,例如1024位块,的不同结构。  在图14A中,DMAC 1402在单个组1404中存储8个1024位块1406。另一方面,在图14B中,当DMAC 1412读写包含1024位块的数据时,这些块在两个组,即,组1414和组1416之间交错。因此,每个这样的组包含十六个数据块,并且每个数据块包含512位。这种交错可以利于DRAM的快速访问,并且在某些应用的处理中有用。
图15图解了PE内DMAC 1504的体系结构。如此图所示,包括DMAC 1506的结构硬件被分布在整个PE,使得每个SPU 1502直接访问DMAC 1506的结构节点1504。每个节点通过该节点直接访问的SPU执行适于存储器访问的逻辑。
图16示出了DMAC的可选实施例,即,非分布式体系结构。在这种情况下,DMAC 1606的结构硬件是集中式的。SPU 1602和PU 1604通过本地PE总线1607与DMAC 1606通信。DMAC 1606通过交叉交换装置被连接到总线1608。总线1608被连接到DRAM 1610。
如上所述,PU的所有多个SPU可以独立访问共享DRAM中的数据。结果,第一个SPU可以在第二个SPU请求时操作本地存储器中的特定数据。如果数据在该时刻被从共享DRAM提供给第二SPU,则由于第一SPU正在进行可改变数据值的处理,所以该数据无效。因此,如果第二处理器在该时刻从共享DRAM接收数据,第二处理器可能产生错误结果。例如,数据可以是全局变量的具体值。如果第一处理器在其处理期间改变此值,则第二处理器将接收过期的值。因此,需要一种同步SPU针对共享DRAM内存储器位置的数据读写数据的模式(scheme)。该模式必须防止从这样的存储器位置读取数据,其中另一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当数据变成最新时读取数据到该存储器位置。
附加存储器分段还分配给SPU的本地存储器内的每个存储器位置。此附加存储器分段存储一个位,被称为“忙位”。忙位用于保留用于存储从DRAM检索的特定数据的相关LS存储器位置。如果忙位针对本地存储器中特定存储器位置被设置成1,则SPU只能使用该存储器位置用于这些特定数据的写入。另一方面,如果忙位针对本地存储器中特定存储器位置被设置成0,则SPU能够使用该存储器位置用于任何数据的写入。
在图17-31中图解了该方式的例子,其中F/E位,SPU ID,LS地址和忙位被用于同步针对PU的共享DRAM的数据的读、写。如图17所示,一或多个PU,例如,PE 1720,与DRAM 1702交互。PE 1720包含SPU 1722和SPU 1740。SPU 1722包含控制逻辑1724,并且SPU1740包含控制逻辑1742。SPU 1722还包含本地存储器1726。该本地存储器包含多个可寻址存储器位置1728。SPU 1740包含本地存储器1744,并且此本地存储器还包含多个可寻址存储器位置1746。所有这些可寻址存储器位置的长度最好是1024位。
附加存储器分段与每个LS可寻址存储器位置相关。例如,存储器分段1729和1734分别与本地存储器位置1731和1732相关,并且存储器分段1752与本地存储器位置1750相关。如上所述,“忙位”被存储在所有这些其它存储器分段中。用若干X示出本地存储器位置1732以指示该位置包含数据。
DRAM 1702包含多个可寻址存储器位置1704,其中包含存储器位置1706和1708。这些存储器位置的长度最好也是1024位。附加存储器分段同样与所有这些存储器位置相关。例如,附加存储器分段1760与存储器位置1706相关,并且附加存储器分段1762与存储器位置1708相关。涉及存储在每个存储器位置中的数据的状态信息被存储在与该存储器位置相关的存储器分段中。如上所述,这个状态信息包含F/E位,SPU ID和LS地址。例如,针对存储器位置1708,这个状态信息包含F/E位1712,SPU ID 1714和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存储器位置不再处于等待接收特定数据的保留状态。因此,现在SPU 1740能够为任何目的访问LS存储器位置1750。
图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的SPU ID 1714和LS地址1716被立即从存储器分段1762读取,并且该信息接着被从此分段删除。F/E位1712也被设置成0,以期即时读取存储器位置1708中的数据。如图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根据存储在对应于一存储器位置的存储器分段中的F/E位,SPU ID和LS地址的状态,总结了上面描述的操作,以及DRAM的该存储器位置的各种状态。存储器位置可以具有三个状态。这三个状态是空状态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包含多个“沙箱”。沙箱定义共享DRAM的区域,在该区域之外,特定SPU或SPU组不能读或写数据。这些沙箱提供安全性以防止一个SPU处理的数据被另一SPU处理的数据破坏。这些沙箱也允许从网络104下载软件单元到特定沙箱,并且软件单元没有可能破坏整个DRAM的数据。在本发明中,在DRAM和DMAC的硬件中实现沙箱。通过用硬件而不是软件实现这些沙箱,获得速度和安全性的优势。
PU的PU控制分配给SPU的沙箱。由于PU通常只操作信任的诸如操作系统的程序,此模式不会危害安全性。根据此模式,PU构建并且维护密钥控制表(key control table)。在图33中图解了此密钥控制表。如此图所示,每个密钥控制表3302中的表项包含SPU的标识(ID)3304,该SPU的SPU密钥3306以及密钥掩码3308。下面说明此密钥掩码的使用。密钥控制表3302最好被存储在诸如静态随机访问存储器(SRAM)的相对快速的存储器中,并且与DMAC相关联。密钥控制表3302中的表项由PU控制。当SPU请求向DRAM的特定存储器位置写入数据,或从DRAM的特定存储器位置读取数据时,DMAC相对于与该存储器位置相关的存储器访问密钥,评估密钥控制表3302中分配给该SPU的SPU密钥3306。
如图34所示,专用存储器分段3410被分配给DRAM 3402的每个可寻址存储器位置3406。针对存储器位置的存储器访问密钥3412被存储在此专用存储器分段。如上所述,也与每个可寻址存储器位置3406相关的另一个附加专用存储器分段3408存储用于写数据到存储器位置以及从存储器位置读取数据的同步信息。
在操作中,SPU向DMAC发出DMA命令。此命令包含DRAM 3402的存储器位置3406的地址。在执行此命令之前,DMAC使用SPU的ID3304在密钥控制表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向DMAC发出DMA命令以访问沙箱内的一或多个特定存储器位置。此命令包含标识请求访问的特定沙箱的沙箱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可以通过具有1010或者1011的SPU密钥的SPU访问。由于SPU密钥掩码和存储器密钥掩码可以被同时使用,能够建立由SPU到沙箱的可访问性的许多变化。
本发明还针对系统101的处理器提供了新编程模型。此编程模型使用软件单元102。这些单元能够被发送到网络104上的任何处理器进行处理。此新编程模型还使用系统101的独特模块化结构和系统101的处理器。
由SPU从SPU的本地存储器直接处理软件单元。在DRAM中,SPU不直接操作任何数据或程序。在SPU处理这些数据和程序之前,DRAM中的数据和程序被读取到SPU的本地存储器。因此,SPU的本地存储器包含程序计数器,堆栈和用于执行这些程序的其它软件元素。PU通过向DMAC发出直接存储器访问(DMA)命令来控制SPU。
图37图解了软件单元102的结构。如此图所示,例如,软件单元3702的软件单元包含路由信息部分3704和主体3706。包含在路由信息部分3704中的信息依赖于网络104的协议。路由信息部分3704包含头3708,目的ID 3710,源ID 3712和应答ID 3714。目的ID包含网络地址。例如,在TCP/IP协议下,网络地址是网际协议(IP)地址。目的ID 3710还包含PU和SPU的标识,其中单元应当发送到该PU和SPU以进行处理。源ID 3712包含网络地址,并且标识单元所来自的PU和SPU,以允许目的PU和SPU在必要时获得有关单元的附加信息。应答ID 3714包含网络地址,并且标识PU和SPU,其中有关单元的查询以及单元处理的结果应当被导向该PU和SPU。
单元主体3706包含独立于网络协议的信息。图37的分解部分示出了单元主体3706的细节。单元主体3706的头3720标识单元主体3706的起始。单元接口3722包含单元使用所需的信息。此信息包含全局唯一ID 3724,所需的SPU 3726,沙箱尺寸3728以及前一单元ID 3730。
全局唯一ID 3724唯一标识整个网络104的软件单元3702。根据源ID 3712,例如源ID 3712内的PU或SPU的唯一标识,以及软件单元3702的生成或发送时间和日期,产生全局唯一ID 3724。所需的SPU 3726提供执行单元所需要的SPU的最小数量。沙箱尺寸3728提供执行单元所必须的、所需SPU的相关DRAM中的保护存储器的数量。前一单元ID 3730提供需要顺序执行(例如流数据)的单元组内前一单元的标识。
实现部分3732包含单元的核心信息。此信息包含DMA命令列表3734,程序3736和数据3738。程序3736包含由SPU运行的、例如SPU程序3760和3762的程序(称作“spulet”),并且数据3738包含用这些程序处理的数据。DMA命令列表3734包含开始程序所需要的系列DMA命令。这些DMA命令包含DMA命令3740,3750,3755和3758。PU向DMAC发出这些DMA命令。
DMA命令3740包含VID 3742。VID 3742是当发出DMA命令时SPU的映射到物理ID的虚拟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通过向DMAC发出系列DMA命令来实现SRPC。DMAC加载SPU程序及其相关堆栈结构到SPU的本地存储器。接着PU向SPU发出初始踢动以执行SPU程序。
图38图解了执行spulet的SRPC的步骤。在图38的第一部分3802中示出了在启动指定SPU对spulet的处理时由PU执行的步骤,并且在图38的第二部分3804中示出了在处理spulet时由指定SPU执行的步骤。
在步骤3810,PU评估spulet并且接着指定用于处理spulet的SPU。在步骤3812,通过向DMAC发出MDA命令以便为必要的一或多个沙箱设置存储器访问密钥,PU分配DRAM中的空间用于执行spulet。在步骤3814,PU使能针对指定SPU的中断请求以通知spulet完成。在步骤3818,PU向DMAC发出DMA命令以把spulet从DRAM加载到SPU的本地存储器。在步骤3820,执行DMA命令,并且把spulet从DRAM读取到SPU的本地存储器。在步骤3822,PU向DMAC发出DMA命令以把与spulet相关的堆栈结构从DRAM加载到SPU的本地存储器。在步骤3823,执行DMA命令,并且把堆栈结构从DRAM读取到SPU的本地存储器。在步骤3824,PU发出针对DMAC的DMA命令以向SPU分配密钥,从而允许SPU对在步骤3812指定的一或多个硬件沙箱读、写数据。在步骤3826,DMAC用分配给SPU的密钥更新密钥控制表(KTAB)。在步骤3828,PU向SPU发出DMA命令“踢动”以开始程序的处理。根据特定spulet,在特定SRPC的执行中可由PU发出其它DMA命令。
如上所示,图38的第二部分3804图解了在执行spulet时SPU执行的步骤。在步骤3830,SPU响应在步骤3828发出的踢动命令开始执行spulet。在步骤3832,在spulet的指示下,SPU评估spulet的相关堆栈结构。在步骤3834,SPU向DMAC发出多个DMA命令以把指定为堆栈结构需要的数据从DRAM加载到SPU的本地存储器。在步骤3836,执行这些DMA命令,并且把数据从DRAM读取到SPU的本地存储器。在步骤3838,SPU执行spulet并且产生结果。在步骤3840,SPU向DMAC发出DMA命令以存储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及其一或多个相关存储器沙箱的保留被称作“驻留终止”。驻留终止响应来自PU的指令而发生。
图39,40A以及40B图解了专用管道结构的建立,其包括一组SPU及其相关沙箱,用于处理流数据,例如,流MPEG数据。如图39所示,此管道结构的部件包含PE 3902和DRAM 3918。PE 3902包含PU 3904,DMAC 3906和包含SPU 3908,SPU 3910和SPU 3912的多个SPU。通过PE总线3914,在PU 3904,DMAC 3906和这些SPU间进行通信。宽带宽总线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分配PU 3910和3912以处理MPEG spulet。在步骤4015,当MPEG spulet的处理完成时,PU 3904指示SPU 3910和3912也执行驻留终止。在步骤4016,PU 3904指定沙箱3920作为由SPU 3908和SPU 3910访问的源沙箱。在步骤4018,PU 3904指定沙箱3922作为由SPU 3910访问的目的沙箱。在步骤4020,PU 3904指定沙箱3924作为由SPU 3908和SPU 3912访问的源沙箱。在步骤4022,PU3904指定沙箱3926作为由SPU 3912访问的目的沙箱。在步骤4024,SPU3910和SPU 3912分别向源沙箱3920和源沙箱3924内的存储器块发送同步读命令,以设置这些存储器块为阻塞状态。处理最后进行到步骤4028,其中专用管道的建立完成并且保留专用于管道的资源。因此,SPU 3908,3910和3912及其相关沙箱3920,3922,3924和3926进入保留状态。
图40B图解了通过此专用管道处理流MPEG数据的步骤。在步骤4030,处理网络spulet的SPU 3908在其本地存储器中接收来自网络104的TCP/IP数据包。在步骤4032,SPU 3908处理这些TCP/IP数据包并且将这些包内的数据装配到软件单元102中。在步骤4034,SPU 3908检查软件单元的头3720(图37)以确定单元是否包含MPEG数据。如果单元不包含MPEG数据,那么,在步骤4036,SPU 3908发送该单元到DRAM 3918内指定的通用沙箱,以通过不包含在专用管道内的其它SPU处理其它数据。SPU 3908还将此发送通知PU 3904。
另一方面,如果软件单元包含MPEG数据,那么,在步骤4038,SPU 3908检查该单元的前一单元ID 3730(图37)以识别该单元属于的MPEG数据流。在步骤4040,SPU 3908选择专用管道的SPU处理该单元。在这种情况下,SPU 3908选择SPU 3910处理这些数据。此选择是以前一单元ID 3730和负载均衡系数为基础的。例如,如果前一单元ID3730指示软件单元所属的MPEG数据流的前一软件单元被发送到SPU3910进行处理,则当前软件单元通常也将被发送到SPU 3910进行处理。在步骤4042,SPU 3908发出同步写命令以把MPEG数据写入到沙箱3920。由于此沙箱先前被设置成阻塞状态,在步骤4044,MPEG数据自动被从沙箱3920读取到SPU 3910的本地存储器。在步骤4046,SPU3910在其本地存储器中处理MPEG数据以产生视频数据。在步骤4048,SPU 3910把视频数据写入沙箱3922。在步骤4050,SPU 3910向沙箱3920发出同步读命令以准备此沙箱来接收其它MPEG数据。在步骤4052,SPU 3910处理驻留终止。此处理导致此SPU进入保留状态,在此期间SPU等待处理MPEG数据流中的其它MPEG数据。
其它专用结构可以在一组SPU及其相关沙箱中间建立以处理其它类型的数据。例如,如图41所示,例如SPU 4102,4108和4114的专用SPU组可以被建立以执行三维对象的几何变换,以产生二维显示列表。这些二维显示列表可以由其它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在这些显示列表中间做出仲裁,并且把它们发送给其它SPU以呈现像素数据。
系统101的处理器还使用绝对定时器。绝对定时器向SPU和PU的其它单元提供时钟信号,该时钟信号既独立于又快于驱动这些单元的时钟信号。图42中图解了此绝对定时器的使用。
如此图所示,绝对定时器建立了针对SPU的任务执行的时间预算。此时间预算提供完成这些任务的时间,该时间长于SPU处理任务所需的时间。结果,针对每个任务,在时间预算内存在忙周期和后备周期。无论SPU的实际处理时间或速度如何,所有spulets被编写成根据此时间预算进行处理。
例如,针对PU的特定SPU,特定任务可以在时间预算4204的忙周期4202期间执行。由于忙周期4202小于时间预算4204,在时间预算期间出现后备周期4206。在此后备周期期间,SPU进入休眠模式,在此休眠模式期间SPU消耗较少功率。
其它SPU或PU的其它单元不预期任务处理的结果,直到时间预算4204过期。因此,通过使用由绝对定时器建立的时间预算,无论SPU的实际处理速度如何,SPU处理的结果始终是协同的。
在将来,SPU处理的速度将变得更快。然而,由绝对定时器建立的时间预算将保持原样。例如,如图42所示,将来SPU将在较短的周期内执行任务,并且因此将具有较长后备周期。因此,忙周期4208比忙周期4202更短,并且后备周期4210长于后备周期4206。然而,由于程序被编写成根据绝对定时器建立的相同时间预算进行处理,则SPU间处理结果的协同得到维护。结果,更快速的SPU能够处理针对较慢SPU编写的程序,而不会导致处理结果的期待时间的冲突。
在代替用绝对定时器建立SPU之间的协同的一个方式中,PU或一或多个指定SPU可以分析由SPU在处理spulet时执行的特定指令或微码,以解决由增强或不同操作速度产生的SPU并行处理的协同问题。“无操作”(“NOOP”)指令可以被插入到指令中,并且由某些SPU执行以维护由spulet期待的SPU的处理的正确顺序完成。通过插入这些NOOP到指令中,SPU对所有指令的执行的正确定时能够被保持。
图43的图例示出了启动程序的处理单元,以及程序的加载相关文件到协处理单元的运行时刻加载程序。计算机系统包含处理单元(PU)4300及协处理单元(SPU)4350。在PU 4300加载操作系统期间,PU 4300启动并且初始化计算机系统。操作系统执行基本任务,诸如识别来自键盘的输入,把输出发送到显示屏,跟踪磁盘上的文件及目录,以及控制外围设备,诸如磁盘驱动器及打印机。操作系统包含诸如内核4320的内核。内核4320是操作系统的中央模块,其加载并且保持在存储器4325中。存储器4325是PU 4300的本地存储器区。内核4320负责存储器管理,进程和任务管理,以及磁盘管理。
内核4320加载PU程序4312到存储器4325,该程序是由PU 4300执行的程序。在加载处理期间,内核4320识别对应于PU程序4312的运行时刻加载程序4315。运行时刻加载程序4315负责加载对象,解析符号,及加载其它对应于PU程序4312的文件(即数据,程序)。内核4320加载运行时刻加载程序4315到存储器4325,并且将控制传递给运行时刻加载程序4315。运行时刻加载程序4315开始识别PU程序4320依赖的诸如SPU文件4340的文件。运行时刻加载程序把SPU文件4340加载到存储器4325,并且从SPU文件4390头提取处理器标识符。例如,SPU文件4340可以是ELF格式化文件,其中文件的ELF头中包含表示要加载的处理器的“机器类型”(参见图47A,47B以及对应文本以了解有关头信息的详情)。
运行时刻加载程序4315基于SPU文件4340的处理器标识符确定SPU文件4340应当在SPU 4350上运行,并且使用诸如DMA 4360的DMA命令向SPU 4350发送SPU文件4340。SPU 4350接收SPU文件4340并且把它存储在存储器4370中。存储器4370是SPU 4350的本地存储器区。SPU 4350现在能够执行SPU文件4340(参见图45,46,以及对应文本以了解有关代码执行的详情)。
图44的图例示出了接收组合文件,提取包含在组合文件中的协处理单元(SPU)文件,并且向SPU发送SPU文件的运行时刻加载程序。图44类似于图43,除了PU 4300处理图44中的组合文件以外,这与图43所示处理分立文件的方式相反。组合文件4400是组合可执行程序,包含32位(或64位)PU代码和SPU代码(例如SPU文件4340)。组合文件4400也可以被视作在PU可执行程序中具有嵌入SPU代码。
运行时刻加载程序4315加载组合文件4400到存储器4325。接着运行时刻加载程序4315分析组合文件4400的文件头以识别在组合文件4400中是否包含以SPU 4350为目标的嵌入代码(参见图47A,47B,以及对应文本以了解有关文件头的详情)。运行时刻加载程序4315从组合文件4400的头信息中识别SPU文件4340,并且使用DMA 4430向存储器4370发送SPU文件4340。DMA 4430为PU 4300提供一种从其存储器(例如存储器4325)直接向SPU 4350的存储器(例如存储器4370)发送数据的机制。一旦SPU 4350接收SPU文件4340,SPU 4350就准备好执行SPU文件4340(参见图45,46,以及对应文本以了解有关代码执行的详情)。
图45示出了从处理单元(PU)程序接收插件的协处理单元(SPU)文件的框图。当PU 4300执行PU程序4512时,SPU 4350从PU 4300接收SPU文件4340(参见图43,44和对应文本以了解有关SPU文件发送的详情)。PU程序4512类似于如图43所示的PU程序4312,并且还类似于图44示出的组合文件4400的PU可执行部分。SPU文件4340是可执行文件,其中包含诸如运行时刻加载程序4530的其自身的运行时刻加载程序。在执行SPU文件4340期间,运行时刻加载程序4530检索并且加载SPU文件4340所依赖的文件。例如,SPU文件4340可以是图形程序,从而它需要用于操作数据的插件模块。运行时刻加载程序4530识别出SPU文件4340需要插件,并且向PU程序4512发送请求4550。PU程序4512接收请求,并且从系统存储器4310检索插件4510。系统存储器4310与图43所示相同。PU程序4512使用DMA 4560向运行时刻加载程序4530发送插件4510,其中运行时刻加载程序4530接着把插件4510存储在存储器4370中以便SPU文件4340访问。
SPU文件4340也可以使用如上所述的相同技术从PU程序4512接收数据。当SPU文件4340使用插件4510完成处理数据时,SPU文件4340向PU 4300发送指示SPU 4350完成处理数据的确认。在一个实施例中,确认4570可以包含处理的数据,或可以包含存储器位置参考,其中PU4300从该参考检索结果数据。
图46的图例示出了从系统存储器中独立检索对应于SPU可执行文件的插件的协处理单元(SPU)。图46不同于图45的地方是,SPU文件4340从系统存储器独立检索插件和/或数据,而不需要PU程序4512的干预。当PU 4300执行PU程序4512时,SPU 4350从PU 4300接收SPU文件4340(参见图43,44,以及对应文本以了解有关SPU文件发送的详情)。SPU文件4340是可执行文件,其中包含诸如运行时刻加载程序4530的其自身的运行时刻加载程序。
在执行SPU文件4340期间,运行时刻加载程序4530检索并且加载SPU文件4340所依赖的文件。例如,SPU文件4340可以是图形程序,从而它需要用于操作数据的插件模块。运行时刻加载程序4530识别SPU文件4340需要诸如插件4510的插件,并且通过检查对应于系统存储器4500的存储器映射来识别在系统存储器4500中插件4510所处的位置。
在一个实施例中,SPU 4350包含存储器管理单元(MMU)。MMU包含直接存储器访问(DMA),其中SPU 4350访问系统存储器。在这个实施例中,运行时刻加载程序4530使用DMA 4640从系统存储器4500检索插件4510,并且将插件4510加载到存储器4370。SPU文件4340使用插件4510处理数据,并且完成时向PU程序4612发送确认4650。
图47A是示出包含在组合文件中的各种代码行的用户代码。组合文件是可执行程序,该文件包含32位(或64位)PU代码和SPU代码(参见图44和对应文本以了解有关组合文件的详情)。组合文件也可以被解释为在PU可执行程序中具有嵌入的SPU代码。代码4700包含ELF头4710和部分头(section header)4730。ELF头4710包含特定于组合文件并且标识运行组合文件的处理器的类型的代码。尤其是,行4720包含通知运行时刻加载程序应当将组合文件加载到PU以进行处理的“PU”机器类型。在一个实施例中,可以使用诸如扩展通用对象文件格式(XCOFF)或便携可执行通用对象文件格式(PECOFF)的其它文件格式。
部分头4730包含嵌入文件的内容。  尤其,行4740包含SPU程序“.spuelf”程序,运行时刻加载程序把该程序加载到SPU的本地存储器并且独立于PU执行。在一个实施例中,当标记被加载并且映射到系统存储器时,标记可以包含在提供访问文件的.spuelf文件中。
在一个实施例中,当SPU代码在连接时间被PU代码引用时,SPU代码被隐含地载入系统存储器。在另一个实施例中,当动态确定加载SPU代码时,SPU代码被明确载入系统存储器。在这些实施例中,标记指向系统存储器中SPU程序或插件的SPU ELF图像。由于PU代码控制和初始化SPU活动,可以使用专门API(应用编程接口)指示位于特定标记(即系统存储器地址)的SPU代码应当加载在SPU上并且被执行。当这些API之一被调用,在存储器中分析SPU ELF图像,使用ELF“机器类型”验证这是SPU ELF图像,并且接着使用DMA处理发送给有效SPU。这些API可以考虑为运行时刻加载程序的扩展,即当PU程序请求初始化SPU活动并且加载/执行SPU代码时,这些API被动态调用。
图47B是示出包含在相关文件中的每种代码行的用户代码。由于代码4750是独立文件(即非嵌入),它不需要如图47A所示的部分头。取而代之,ELF头4760包含机器类型,诸如包含在行4770中的“SPU”,其通知运行时刻加载程序应当把独立程序加载到SPU上。
图48的流程图示出了在处理单元中采取的执行程序及传递控制到程序的运行时刻加载程序的步骤。PU处理在4800开始,在此PU在PU的诸如存储器4325的存储器中加载内核。内核从系统存储器4310检索可执行文件,并且在步骤4820将可执行文件加载在存储器4325中。系统存储器4310和存储器4325与图43所示相同。
内核从系统存储器4310检索对应于可执行文件的运行时刻加载程序,并且在步骤4830将运行时刻加载程序加载在存储器4325中。运行时刻加载程序负责加载可执行文件所依赖的文件。例如,可执行文件可以是退休预测程序,并且运行时刻加载程序可以加载诸如利率应用程序的相关文件。
在步骤4840内核将控制传递到运行时刻加载程序,在此运行时刻加载程序在步骤4850从系统存储器4310检索第一个相关文件。使用上面描述的例子,运行时刻加载程序从系统存储器4310检索利率应用程序。在步骤4860,运行时刻加载程序加载相关文件到存储器4325。相关文件包含诸如ELF头的头,头包含诸如机器类型的处理器标识符,此标识符辨别应当运行相关文件的处理器的类型(参见图47A,47B,以及对应文本以了解有关处理器标识符的详情)。在步骤4865,运行时刻加载程序提取相关文件的对应处理器标识符。
确定处理器标识符是否对应于PU处理器或SPU处理器(判定4870)。使用上面描述的例子,运行时刻加载程序确定利率应用是否应当加载在PU或SPU上。如果处理器标识符对应于SPU,则判定4870分支到“否”分支4872,由此在处理时从PU的存储器(例如存储器4325)向SPU 4350 DMA传送相关文件(步骤4880)。SPU 4350与图43示出的SPU相同。
另一方面,如果相关文件应当在PU上执行,则判定4870分支到“是”分支4878,在此由于相关文件已经加载在PU的存储器(例如存储器4325)中,所以不需要DMA步骤。
确定可执行文件是否有更多相关文件要加载(判定4890)。如果可执行文件有更多相关文件要加载,则判定4890分支到″是″分支4892,该分支循环返回以检索(步骤4895)并且处理下一个相关文件。此循环继续执行,直到不再有需要处理的相关文件为止,在此判定4890分支到″否″分支4898,由此处理在4899结束。
图49的流程图示出了在协处理单元(SPU)中采取的从处理单元(PU)接收文件及执行文件的步骤。处理在4900开始,由此SPU从PU4300接收相关文件并且存储该文件在存储器4370中(步骤4910)。PU4300与图43示出的PU相同。  存储器4370是SPU的内部存储器并且与图43所示相同。
确定SPU是否应当开始处理对应于相关文件的数据,或是否应当等待来自PU 4300的请求(判定4920)。例如,PU 4300可以配置多个处理器,并且PU 4300不希望SPU开始处理数据,直到配置了其它处理器。如果SPU应当等待来自PU 4300的请求,则判定4920分支到″否″分支4922,由此处理进行等待,直到它接收来自PU 4300的请求为止(步骤4930)。另一方面,如果处理应当使用相关文件处理数据而不需要等待来自PU 4300的请求,则判定4920分支到″是″分支4928,从而略过请求等待步骤。
在步骤4935,SPU执行文件并且文件初始化运行时刻加载程序。运行时刻加载程序负责加载对象,解析符号,及加载其它对应于SPU的相关文件的文件(即数据,程序)。在步骤4938,运行时刻加载程序识别相关文件需要的插件和/或数据。例如,相关文件可以是图形应用并且图形应用需要边沿平滑插件。
确定SPU是否应当独立于PU 4300地检索插件和/或数据。此确定可根据针对总体PU/SPU应用所选择的编程模型来实现。例如,在某些应用中,PU代码开始SPU程序并且接着控制SPU程序。在另一例子中,SPU程序在被PU初始化之后控制自身。硬件设施可以被PU和SPU用来同步其活动并且协同数据移动,例如带保留加载和存储条件指令,邮箱,信号,DMA,状态查询,等待中断/事件等。
如果SPU应当独立处理相关文件,则判定4940分支到″否″分支4942,由此该处理向PU 4300发送请求特定插件或数据的请求(步骤4995)。在步骤4950,处理从PU 4300接收数据和/或插件,并且存储在存储器4370中。另一方面,如果SPU应当独立检索插件或数据,则判定4940分支到″是″分支4948,由此SPU从系统存储器4310检索数据和/或插件并且存储在存储器4370中(步骤4960)。在步骤4970,SPU处理数据,并且在步骤4980向PU 4300发送确认。
确定是否继续执行处理(判定4990)。例如,PU 4300可以请求SPU继续加载财务计算器,等待用户输入,直到用户从特定用户接口退出。如果处理应当继续执行,则判定4990分支到″是″分支4992,该分支循环返回以处理更多数据和/或加载更多插件。此循环继续执行,直到SPU不应继续使用相关文件处理数据为止,在此判定4990分支到″否″分支4998,由此处理在4999结束。
图50的模块图图解了具有共享系统存储器的主处理器和多个辅助处理器的处理单元。处理器单元(PE)5005包含在一个实施例中充当主处理器并且运行操作系统的处理单元(PU)5010。例如,处理单元5010可以是执行Linux操作系统的Power PC核心。PE 5005还包含多个协处理结构(SPC),诸如SPC 5045,5065和5085。SPC包含充当PU 5010的辅助处理单元的协处理单元(SPU),存储器存储单元,以及本地存储器。例如,SPC 5045包含SPU 5060,MMU 5055和本地存储器5059;SPC 5065包含SPU 5070,MMU 5075和本地存储器5079;以及SPC5085包含SPU 5090,MMU 5095和本地存储器5099。
每个SPC可以被配置成用于执行不同任务,并且因此,在一个实施例中,每个SPC可以使用不同指令集访问。  例如,如果PE 5005被用于无线通信系统中,则每个SPC可负责分立的处理任务,例如调制,码片速率处理,编码,网络接口等。  在另一个实施例中,SPC可以具有相同指令集,并且可以彼此并行使用以执行因并行处理而获益的操作。
PE 5005也可以包含2级高速缓存,例如L2高速缓存5015,以用于PU 5010。另外,PE 5005包含在PU 5010和SPU之间共享的系统存储器5020。系统存储器5020可以存储例如正在运行的操作系统(包含内核),设备驱动程序,I/O配置等的映像,执行的应用程序,以及其它数据。系统存储器5020包含映射到系统存储器5020的区域的一或多个SPC的本地存储器单元。例如,本地存储器5059可以映射到被映射区域5035,本地存储器5079可以映射到被映射区域5040,并且本地存储器5099可以映射到被映射区域5042。通过总线5017,PU 5010和SPC互相以及与系统存储器5020通信,该总线被构造成用于在这些设备之间传递数据。
MMU负责在SPU的本地存储器和系统存储器之间传送数据。在一个实施例中,MMU包含被构造成用于执行此功能的直接存储器访问(DMA)控制器。PU 5010可以编程MMU以控制每个MMU可使用哪个存储器区域。通过改变每个MMU可用的映射,PU可以控制哪个SPU访问系统存储器5020的哪个区域。通过这种方式,例如,PU可以指定系统存储器的区域专门为特定SPU所独享。在一个实施例中,可以通过PU 5010以及使用存储器映射的其它SPU访问SPU的本地存储器。在一个实施例中,PU 5010管理所有SPU的公共系统存储器5020的存储器映射。存储器映射表可以包含PU 5010的L2高速缓存5015,系统存储器5020,以及SPU的共享本地存储器。
在一个实施例中,SPU在PU 5010的控制下处理数据。例如,SPU可以是数字信号处理核心,微处理器核心,微控制器核心等,或是上述核心的组合。每一个本地存储器是与特定SPU相关的存储区。在一个实施例中,每个SPU能够将其本地存储器配置为专有存储区,共享存储区,或SPU可以将其本地存储器配置为部分专有和部分共享的存储器。
例如,如果SPU需要大量的本地存储器,则SPU可以将其本地存储器100%分配给仅可由该SPU访问的专有存储器。另一方面,如果SPU需要最小量的本地存储器,则SPU可以将其10%的本地存储器分配给专有存储器,而剩余的90%分配给共享存储器。可由PU 5010和其它SPU访问共享存储器。为了使SPU在执行需要快速访问的任务时具有快速有保证的存储器访问,SPU可以保留其部分本地存储器。SPU也可以在处理敏感数据时,例如在SPU执行加密/解密时保留某些其本地存储器为专有的。
在一个实施例中,当SPU代码在链接时被PU代码引用时,SPU代码被隐含地载入系统存储器。在另一个实施例中,当动态决定加载SPU代码时,SPU代码被显式载入系统存储器。在这些实施例中,一个符号指向系统存储器中SPU程序或插件的SPU ELF映像。由于PU代码控制和启动SPU活动,可以使用专门API(应用编程接口),其指示位于特定符号(即系统存储器地址)处的SPU代码应当加载在SPU上并且被执行。当这些API之一被调用时,在存储器中分析SPU ELF映像,使用ELF“机器类型”验证其是SPU ELF映像,并且接着将其DMA传送到可用SPU上。这些API可以被视为对运行时刻加载程序的扩展,其中当PU程序希望启动SPU活动并且加载/执行SPU代码时,这些API被动态调用。
本发明的一个优选实现是应用程序,即例如可以驻留在计算机的随机访问存储器中的代码模块的一组指令(程序代码)。在计算机需要之前,该指令组可以被存储在另一个计算机存储器中,例如存储在硬盘驱动器中,或存储在例如光盘(最终在CD ROM中使用)或软盘最终在软盘驱动器中使用)的可移动存储器中,或者经由因特网或其它计算机网络下载。于是,本发明可以被实现成用于计算机的计算机程序产品。另外,虽然描述的各种方法被方便地实现在通过软件有选择地启动或重新配置的通用计算机中,然而本领域的普通技术人员也会认识到,这种方法可以在硬件,固件或被构造成用于执行所需方法步骤的更加专用的设备中执行。
虽然已经示出和描述了本发明的特定实施例,然而本领域的技术人员显然明白,根据这里的教导,可以在不偏离本发明及其更宽的方面的情况下进行改变和修改,因此所附权利要求书将把所有这种在本发明的真实实质和范围内的的改变和修改包括在其范围内。此外应当理解,本发明完全由所附权利要求来限定。本领域技术人员会理解,如果旨在所引入权利要求元素的具体数量,则这种意图会在权利要求中明确表述,并且在没有这种表述的情况下,则不存在这种限制。对于非限制性例子,为帮助理解,以下所附权利要求包含使用介绍性短语″至少一个″和″一或多个″来介绍权利要求元素。然而,这种短语的使用不应该被解释为意味着通过不定冠词″a″或″an″引入的权利要求元素,将包含这种引入的权利要求元素的任何特定权利要求限制于仅包含一个这种元素的发明,即使在相同权利要求包含引入性短语″一或多个″或″至少一个″和例如″a″或″an″的不定冠词时;相同道理也适用于在权利要求中使用定冠词。

Claims (30)

1.一种用于在异构处理器环境中的多个处理器上加载软件的方法,所述方法包括:
使用第一处理器检索文件;
检测对应于该文件的处理器标识符;
根据此处理器标识符确定是否在第二处理器上加载该文件;以及
根据此确定在第二处理器上加载该文件。
2.如权利要求1所述的方法,还包括:
在第一处理器上执行一个程序;
响应此执行将一个运行时刻加载程序加载到第一处理器上;以及
使用所述运行时刻加载程序执行检索、检测以及确定。
3.如权利要求1所述的方法,其中文件是可执行文件。
4.如权利要求3所述的方法,还包括:
使用第一处理器发送插件到第二处理器,该插件对应于该文件;
使用第一处理器发送数据到第二处理器,该数据对应于该插件;以及
使用第二处理器用插件处理数据。
5.如权利要求3所述的方法,还包括:
使用第二处理器检索插件,该插件对应于该文件;
使用第二处理器检索数据,该数据对应于该插件;以及
使用第二处理器用插件处理数据。
6.如权利要求3所述的方法,其中可执行文件具有一文件格式,并且该文件格式是从包括ELF格式,XCOFF格式和PECOFF格式的组中选择的。
7.如权利要求1所述的方法,其中处理器标识符是机器类型,所述确定还包括:
从文件中提取机器类型;以及
把该机器类型与多个机器类型比较。
8.如权利要求1所述的方法,其中文件是组合文件的一部分,并且该处理器类型对应于多个部分头中的一或多个部分头。
9.如权利要求1所述的方法,其中文件是组合文件的一部分,并且组合文件包含对应于第一处理器的一或多个处理器标识符。
10.如权利要求1所述的方法,其中第一处理器是处理单元,并且第二处理器是协处理单元。
11.一种信息处理系统,包括:
异构处理器环境中的多个处理器;
可由多个处理器访问的存储器;
由多个处理器访问的一或多个非易失存储设备;以及
软件加载工具,用于在多个处理器上加载软件,该软件加载工具包括用于执行以下步骤的软件代码:
使用第一处理器从非易失存储设备之一检索文件;
使用第一处理器检测对应于该文件的处理器标识符;
根据处理器标识符确定是否在第二处理器上加载该文件;以及
根据所述确定加载该文件到第二处理器上。
12.如权利要求11所述的信息处理系统,其中软件代码还被用于:
在第一处理器上执行一个程序;
响应此执行将一个运行时刻加载程序加载到第一处理器上;以及
使用位于第一处理器上的所述运行时刻加载程序执行检索、检测以及确定。
13.如权利要求11所述的信息处理系统,其中文件是可执行文件。
14.如权利要求13所述的信息处理系统,其中软件代码还被用于:
使用第一处理器发送插件到第二处理器,该插件对应于该文件;
使用第一处理器发送数据到第二处理器,该数据对应于该插件;以及
使用第二处理器用该插件处理该数据。
15.如权利要求13所述的信息处理系统,其中软件代码还被用于:
使用第二处理器从非易失存储设备之一检索插件,该插件对应于该文件;
使用第二处理器从非易失存储设备之一检索数据,该数据对应于该插件;以及
使用第二处理器用该插件处理该数据。
16.如权利要求13所述的信息处理系统,其中可执行文件具有一文件格式,并且该文件格式是从包括ELF格式,XCOFF格式和PECOFF格式的组中选择的。
17.如权利要求11所述的信息处理系统,其中处理器标识符是机器类型,并且软件代码还被用于:
从文件中提取机器类型;以及
把该机器类型与多个机器类型比较。
18.如权利要求11所述的信息处理系统,其中文件是组合文件的一部分,并且该处理器类型对应于多个部分头中的一或多个部分头。
19.如权利要求11所述的信息处理系统,其中文件是组合文件的一部分,并且该组合文件包含对应于第一处理器的一或多个处理器标识符。
20.如权利要求11所述的信息处理系统,其中第一处理器是处理单元,并且第二处理器是协处理单元。
21.一种存储在计算机可操作介质上的计算机程序产品,用于在异构处理器环境中的多个处理器上加载软件,所述计算机程序产品包括:
用于使用第一处理器检索文件的装置;
用于检测对应于该文件的处理器标识符的装置;
用于根据此处理器标识符确定是否在第二处理器上加载该文件的装置;以及
用于根据此确定加载该文件到第二处理器上的装置。
22.如权利要求21所述的计算机程序产品,还包括:
用于在第一处理器上执行程序的装置;
用于响应此执行将运行时刻加载程序加载到第一处理器上的装置;以及
用于使用运行时刻加载程序执行检索、检测以及确定的装置。
23.如权利要求21所述的计算机程序产品,其中文件是可执行文件。
24.如权利要求23所述的计算机程序产品,还包括:
用于使用第一处理器发送插件到第二处理器的装置,其中该插件对应于该文件;
用于使用第一处理器发送数据到第二处理器的装置,其中该数据对应于该插件;以及
用于使用第二处理器用该插件处理该数据的装置。
25.如权利要求23所述的计算机程序产品,还包括:
用于使用第二处理器检索插件的装置,其中该插件对应于该文件;
用于使用第二处理器检索数据的装置,其中该数据对应于该插件;以及
用于使用第二处理器用该插件处理该数据的装置。
26.如权利要求23所述的计算机程序产品,其中可执行文件具有一文件格式,并且该文件格式是从包括ELF格式,XCOFF格式和PECOFF格式的组中选择的。
27.如权利要求21所述的计算机程序产品,其中处理器标识符是机器类型,并且用于确定的装置还包括:
用于从文件中提取机器类型的装置;以及
用于把该机器类型与多个机器类型比较的装置。
28.如权利要求21所述的计算机程序产品,其中文件是组合文件的一部分,并且处理器类型对应于多个部分头中的一或多个部分头。
29.如权利要求21所述的计算机程序产品,其中文件是组合文件的一部分,并且组合文件包含对应于第一处理器的一或多个处理器标识符。
30.如权利要求21所述的计算机程序产品,其中第一处理器是处理单元,并且第二处理器是协处理单元。
CNA2004100797104A 2003-09-25 2004-09-17 在多个处理器上加载软件的系统和方法 Pending CN1601468A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,842 US7415703B2 (en) 2003-09-25 2003-09-25 Loading software on a plurality of processors
US10/670,842 2003-09-25

Publications (1)

Publication Number Publication Date
CN1601468A true CN1601468A (zh) 2005-03-30

Family

ID=34465431

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004100797104A Pending CN1601468A (zh) 2003-09-25 2004-09-17 在多个处理器上加载软件的系统和方法

Country Status (5)

Country Link
US (2) US7415703B2 (zh)
JP (1) JP4507791B2 (zh)
KR (1) KR100570138B1 (zh)
CN (1) CN1601468A (zh)
TW (1) TWI326426B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102422266A (zh) * 2009-05-13 2012-04-18 国际商业机器公司 构建和更新运行时刻环境的系统和方法
CN106598599A (zh) * 2016-12-15 2017-04-26 王弘远 一种程序的执行方法和设备

Families Citing this family (21)

* 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
JP2006004008A (ja) * 2004-06-15 2006-01-05 Sony Computer Entertainment Inc 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム
US20060095898A1 (en) * 2004-10-28 2006-05-04 International Business Machines Corporation Method for integrating multiple object files from heterogeneous architectures into a set of files
JP4749906B2 (ja) * 2006-03-24 2011-08-17 富士通株式会社 複数制御装置からなるシステムにおけるシステムプログラムデータメモリアクセス方式
US7529849B2 (en) * 2006-07-27 2009-05-05 International Business Machines Corporation Reduction of message flow between bus-connected consumers and producers
EP2092436A4 (en) * 2006-10-26 2010-03-24 Coke S Reed NETWORK INTERFACE CARD FOR USE IN PARALLEL DATA PROCESSING SYSTEMS
US7743232B2 (en) 2007-07-18 2010-06-22 Advanced Micro Devices, Inc. Multiple-core processor with hierarchical microcode store
US8862689B2 (en) * 2007-10-24 2014-10-14 International Business Machines Corporation Local flash memory and remote server hybrid continuous data protection
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8745361B2 (en) * 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
TWI447645B (zh) * 2010-02-11 2014-08-01 Univ Nat Chiao Tung 具有負載平衡的可動態重組異質處理器架構以及動態配置方法
US9235458B2 (en) 2011-01-06 2016-01-12 International Business Machines Corporation Methods and systems for delegating work objects across a mixed computer environment
US9052968B2 (en) * 2011-01-17 2015-06-09 International Business Machines Corporation Methods and systems for linking objects across a mixed computer environment
DE102011079271A1 (de) * 2011-07-15 2013-01-17 Siemens Aktiengesellschaft Verfahren zum softwaremäßigen Laden einer Rechnereinheit einer Unterkomponente einer aus mehreren Komponenten mit unterschiedlichen Unterkomponenten bestehenden Anordnung
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US9798567B2 (en) 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
CN105426223B (zh) * 2015-12-25 2019-01-04 百度在线网络技术(北京)有限公司 应用加载方法和装置
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
TWI774388B (zh) * 2019-02-23 2022-08-11 國立清華大學 資料同步方法
US10956244B1 (en) * 2020-08-26 2021-03-23 Coupang Corp. Systems and methods for automated application programming interface evaluation and migration

Family Cites Families (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4394727A (en) 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
IT1184553B (it) 1985-05-07 1987-10-28 Honeywell Inf Systems Architettura di sistema a piu' processori
US4945479A (en) 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
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
JP2594979B2 (ja) 1987-10-23 1997-03-26 株式会社日立製作所 マルチプロセツサシステム
CA2011807C (en) 1989-03-20 1999-02-23 Katsumi Hayashi Data base processing system using multiprocessor system
EP0422310A1 (en) 1989-10-10 1991-04-17 International Business Machines Corporation Distributed mechanism for the fast scheduling of shared objects
JPH0640324B2 (ja) 1989-10-26 1994-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプロセス同期方法
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5978831A (en) 1991-03-07 1999-11-02 Lucent Technologies Inc. Synchronous multiprocessor using tasks directly proportional in size to the individual processors rates
EP0523544B1 (en) 1991-07-12 2002-02-27 Matsushita Electric Industrial Co., Ltd. Apparatus to solve a system of linear equations
US5630128A (en) 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5185861A (en) 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
US5359721A (en) 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
US5394547A (en) 1991-12-24 1995-02-28 International Business Machines Corporation Data processing system and method having selectable scheduler
JPH05242057A (ja) 1992-02-27 1993-09-21 Sanyo Electric Co Ltd マルチプロセッサシステムの起動方式
JPH0644110A (ja) 1992-07-23 1994-02-18 Fuji Xerox Co Ltd インストール方法
WO1994017488A1 (en) 1993-01-22 1994-08-04 University Corporation For Atmospheric Research Multipipeline multiprocessor system
JP2826028B2 (ja) 1993-01-28 1998-11-18 富士通株式会社 分散メモリ型プロセッサシステム
US5560030A (en) 1994-03-08 1996-09-24 Texas Instruments Incorporated Transfer processor with transparency
US5692193A (en) 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
JP3639323B2 (ja) 1994-03-31 2005-04-20 富士通株式会社 メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機
KR100289826B1 (ko) 1994-05-31 2001-05-15 아끼구사 나오유끼 다른 오퍼레이팅 시스템간 작업 실행 시스템 및 방법
JPH0895757A (ja) 1994-09-19 1996-04-12 Internatl Business Mach Corp <Ibm> マイクロカーネル・データ処理システム用のマスタ・サーバ・プログラム・ロード方法および装置
US5754817A (en) 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
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
JP3493772B2 (ja) 1994-11-18 2004-02-03 富士ゼロックス株式会社 制御ソフトウェア仕様変更システム
US5956509A (en) 1995-08-18 1999-09-21 Microsoft Corporation System and method for performing remote requests with an on-line service network
WO1997027536A1 (en) 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
KR100584964B1 (ko) 1996-01-24 2006-05-29 선 마이크로시스템즈 인코퍼레이티드 스택 메모리 구조에서의 캐싱 장치
US5790278A (en) * 1996-03-20 1998-08-04 Eastman Kodak Company Scanner with drawer load and exit
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
JP3926866B2 (ja) 1996-05-10 2007-06-06 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、及び描画システム
US6513057B1 (en) 1996-10-28 2003-01-28 Unisys Corporation Heterogeneous symmetric multi-processing system
US5835775A (en) 1996-12-12 1998-11-10 Ncr Corporation Method and apparatus for executing a family generic processor specific application
US6496870B1 (en) 1997-01-31 2002-12-17 Sun Microsystems, Inc. System, method and article of manufacture for collaboration with an application
US5884078A (en) 1997-01-31 1999-03-16 Sun Microsystems, Inc. System, method and article of manufacture for creating an object oriented component having multiple bidirectional ports for use in association with a java application or applet
US5790855A (en) 1997-01-31 1998-08-04 Sun Microsystems, Inc. System, method and article of manufacture for type checking appropriateness of port connection and variable type matching in connection with multiport object-oriented components
US5842020A (en) 1997-01-31 1998-11-24 Sun Microsystems, Inc. System, method and article of manufacture for providing dynamic user editing of object oriented components used in an object oriented applet or application
US5913065A (en) 1997-01-31 1999-06-15 Sun Microsystems, Inc. System, method and article of manufacture for creating hierarchical folder components for use in a java application or applet
US6044218A (en) 1997-01-31 2000-03-28 Sun Microsystems, Inc. System, method and article of manufacture for creating a live application or applet development environment
JP3739888B2 (ja) 1997-03-27 2006-01-25 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および方法
US6199179B1 (en) 1998-06-10 2001-03-06 Compaq Computer Corporation Method and apparatus for failure recovery in a multi-processor computer system
US6542926B2 (en) 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6128724A (en) 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
US6105111A (en) 1998-03-31 2000-08-15 Intel Corporation Method and apparatus for providing a cache management technique
US6473897B1 (en) * 1998-04-13 2002-10-29 Intel Corporation Method and apparatus for generating multiple processor-specific code segments in a single executable
US6049668A (en) 1998-04-13 2000-04-11 Intel Corporation Method and apparatus for supporting multiple processor-specific code segments in a single executable
US6292822B1 (en) 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6292935B1 (en) 1998-05-29 2001-09-18 Intel Corporation Method for fast translation of java byte codes into efficient native processor code
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
US6381693B2 (en) 1998-12-31 2002-04-30 Intel Corp. Arrangements having firmware support for different processor types
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
US6728961B1 (en) 1999-03-31 2004-04-27 International Business Machines Corporation Method and system for dynamically load balancing a process over a plurality of peer machines
US6789252B1 (en) 1999-04-15 2004-09-07 Miles D. Burke Building business objects and business software applications using dynamic object definitions of ingrediential objects
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US7062765B1 (en) * 1999-05-25 2006-06-13 Realnetworks, Inc. System and method for updating information via a network
US6463521B1 (en) 1999-06-23 2002-10-08 Sun Microsystems, Inc. Opcode numbering for meta-data encoding
US6446218B1 (en) * 1999-06-30 2002-09-03 B-Hub, Inc. Techniques for maintaining fault tolerance for software programs in a clustered computer system
US6601233B1 (en) 1999-07-30 2003-07-29 Accenture Llp Business components framework
US6718535B1 (en) 1999-07-30 2004-04-06 Accenture Llp System, method and article of manufacture for an activity framework design in an e-commerce based environment
US7124170B1 (en) 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6401175B1 (en) 1999-10-01 2002-06-04 Sun Microsystems, Inc. Shared write buffer for use by multiple processor units
US7137115B2 (en) 2000-01-25 2006-11-14 Fujitsu Limited Method for controlling multithreading
JP3543942B2 (ja) 2000-03-02 2004-07-21 株式会社ソニー・コンピュータエンタテインメント 画像生成装置
US6677951B2 (en) 2000-03-03 2004-01-13 Sony Computer Entertainment, Inc. Entertainment apparatus having compatibility and computer system
JP2001319243A (ja) 2000-03-03 2001-11-16 Sony Computer Entertainment Inc 画像生成装置、画像生成装置におけるジオメトリ処理形態の切換方法、記録媒体、コンピュータプログラム、半導体デバイス
US7047534B2 (en) 2000-03-17 2006-05-16 Microsoft Corporation Simplified device drivers for hardware devices of a computer system
US20030188045A1 (en) 2000-04-13 2003-10-02 Jacobson Michael B. System and method for distributing storage controller tasks
US6684390B1 (en) 2000-04-17 2004-01-27 Koninklijke Philips Electronics N.V. Multi-processor JAVA subsystem
US6950848B1 (en) 2000-05-05 2005-09-27 Yousefi Zadeh Homayoun Database load balancing for multi-tier computer systems
US6990653B1 (en) 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US7103664B1 (en) 2000-05-31 2006-09-05 International Business Machines Corporation Method, system and program products for ordering lists of service addresses to provide load balancing of a clustered environment
US6811498B2 (en) * 2000-06-19 2004-11-02 Dunlop Maxfli Sports High performance two piece golf ball
US6892298B2 (en) 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
US6820258B1 (en) 2000-08-28 2004-11-16 International Business Machines Corporation System and method for dynamically optimizing executing activations
US6704926B1 (en) 2000-09-28 2004-03-09 International Business Machines Corporation Bimodal Java just-in-time complier
JP2002207685A (ja) 2000-10-12 2002-07-26 Sony Computer Entertainment Inc 仮想世界システム、サーバコンピュータおよび情報処理装置
US6895479B2 (en) 2000-11-15 2005-05-17 Texas Instruments Incorporated Multicore DSP device having shared program memory with conditional write protection
US6433043B1 (en) 2000-11-28 2002-08-13 Transitions Optical, Inc. Removable imbibition composition of photochromic compound and kinetic enhancing additive
US6567502B2 (en) * 2000-12-19 2003-05-20 Bellsouth Intellectual Property Corporation Multimedia emergency services
US6751753B2 (en) 2001-02-27 2004-06-15 Sun Microsystems, Inc. Method, system, and program for monitoring system components
US7165108B2 (en) 2001-03-19 2007-01-16 Sun Microsystems, Inc. Method and apparatus for providing application specific strategies to a JAVA platform including load balancing policies
JP3716753B2 (ja) 2001-03-21 2005-11-16 日本電気株式会社 マルチプロセッサ構成の計算機間におけるトランザクション負荷分散方法及び方式並びにプログラム
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture 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
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for 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
US6966057B2 (en) 2001-03-30 2005-11-15 Intel Corporation Static compilation of instrumentation code for debugging support
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 エンタテインメントシステム、通信システム、通信プログラム、通信プログラムを格納したコンピュータ読み取り可能な記録媒体、及び通信方法
US7143419B2 (en) * 2001-06-06 2006-11-28 Sap Ag Device for running offline applications and synchronizing with a central computer system
KR100441115B1 (ko) 2001-06-27 2004-07-19 주식회사 인터와이즈 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
US7178145B2 (en) 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US6862608B2 (en) 2001-07-17 2005-03-01 Storage Technology Corporation System and method for a distributed shared memory
US20030074650A1 (en) 2001-10-17 2003-04-17 Tankut Akgul Debugger operating system for embedded systems
JP2003140912A (ja) 2001-10-29 2003-05-16 Sony Corp データ処理システム及びデータ処理方法、並びに記憶媒体
EP1313012A1 (en) 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
US7320123B2 (en) 2002-04-01 2008-01-15 Sun Microsystems, Inc. Method and system for detecting deprecated elements during runtime
US7093258B1 (en) 2002-07-30 2006-08-15 Unisys Corporation Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system
US7167916B2 (en) 2002-08-30 2007-01-23 Unisys Corporation Computer OS dispatcher operation with virtual switching queue and IP queues
US7127709B2 (en) 2002-09-25 2006-10-24 Microsoft Corporation System and method for jointly managing dynamically generated code and data
WO2004046950A1 (en) 2002-11-15 2004-06-03 Infineon Technologies Ag Mailbox interface between processors
US7043579B2 (en) 2002-12-05 2006-05-09 International Business Machines Corporation Ring-topology based multiprocessor data access bus
US7080242B2 (en) 2002-12-19 2006-07-18 Hewlett-Packard Development Company, L.P. Instruction set reconciliation for heterogeneous symmetric-multiprocessor 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
US8423976B2 (en) * 2003-03-13 2013-04-16 Northrop Grumman Corporation Extreme pipeline and optimized reordering technology
US7114042B2 (en) 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US6981072B2 (en) 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
US7133978B1 (en) 2003-06-19 2006-11-07 Xilinx, Inc. Method and apparatus for processing data stored in a memory shared among a plurality of processors
US7472112B2 (en) 2003-06-23 2008-12-30 Microsoft Corporation Distributed query engine pipeline method and system
US7134007B2 (en) 2003-06-30 2006-11-07 Intel Corporation Method for sharing firmware across heterogeneous processor architectures
US20050028148A1 (en) 2003-08-01 2005-02-03 Sun Microsystems, Inc. Method for dynamic recompilation of a program
US7478390B2 (en) 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US6981074B2 (en) 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US7321958B2 (en) 2003-10-30 2008-01-22 International Business Machines Corporation System and method for sharing memory by heterogeneous processors

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102422266A (zh) * 2009-05-13 2012-04-18 国际商业机器公司 构建和更新运行时刻环境的系统和方法
CN106598599A (zh) * 2016-12-15 2017-04-26 王弘远 一种程序的执行方法和设备
CN106598599B (zh) * 2016-12-15 2019-08-27 王弘远 一种程序的执行方法和设备

Also Published As

Publication number Publication date
JP4507791B2 (ja) 2010-07-21
US7415703B2 (en) 2008-08-19
KR20050030540A (ko) 2005-03-30
JP2005100405A (ja) 2005-04-14
TWI326426B (en) 2010-06-21
TW200525428A (en) 2005-08-01
US20050086655A1 (en) 2005-04-21
US7748006B2 (en) 2010-06-29
US20080235679A1 (en) 2008-09-25
KR100570138B1 (ko) 2006-04-12

Similar Documents

Publication Publication Date Title
CN1601468A (zh) 在多个处理器上加载软件的系统和方法
CN1300723C (zh) 将处理器用作虚拟设备的方法和信息处理系统
CN1291327C (zh) 计算机处理系统和计算机处理方法
CN1279470C (zh) 宽带网络计算机体系结构的计算机处理器和处理设备
CN1815438A (zh) 信息处理方法和系统
CN101040268A (zh) 宽带网络计算机体系结构中的外部数据接口
CN1496516A (zh) 宽带网络计算机体系结构的资源专用系统和方法
TWI266200B (en) A computer network, a computer readable medium, a computer system and method for processing programs and data
CN1121014C (zh) 具有risc结构的八位微控制器
CN1249963C (zh) 使用分组摘要信息快速和自适应处理分组的设备和方法
CN1806231A (zh) 提供软件实现的高速缓冲存储器的方法与装置
CN1684412A (zh) 利用安全散列演算法的装置与方法
CN1601511A (zh) 用于使用多个处理器操纵数据的系统和方法
US20100325282A1 (en) Migrating a virtual machine that owns a resource such as a hardware device
EP1783609A1 (en) Processing management device, computer system, distributed processing method, and computer program
CN1410876A (zh) 微处理机
CN1881183A (zh) 信息处理装置、进程控制方法及其计算机程序
US20040107421A1 (en) Methods and systems for cooperative scheduling of hardware resource elements
CN1910554A (zh) 多处理器系统中处理器任务迁移的方法与装置
CN1760836A (zh) 信息处理系统、信息处理方法和程序
CN1770110A (zh) 对I/O完成进行无锁InfiniBandTM轮询的方法、系统和存储介质
JP2006107497A (ja) 制御方法、処理方法、またはそれらを利用した処理システム、コンピュータ処理システム、コンピュータのネットワーク
CN1716249A (zh) 延迟取出用户定义类型的指定成员的系统和方法
CN107111581A (zh) 存储器描述符列表高速缓存和管道处理
CN1914600A (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication