CN101300545A - 进行异类处理联合体中的外部辅助调用的装置与方法 - Google Patents
进行异类处理联合体中的外部辅助调用的装置与方法 Download PDFInfo
- Publication number
- CN101300545A CN101300545A CNA200680040624XA CN200680040624A CN101300545A CN 101300545 A CN101300545 A CN 101300545A CN A200680040624X A CNA200680040624X A CN A200680040624XA CN 200680040624 A CN200680040624 A CN 200680040624A CN 101300545 A CN101300545 A CN 101300545A
- Authority
- CN
- China
- Prior art keywords
- processor
- data plane
- controlling layer
- assisted call
- plane processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000012545 processing Methods 0.000 title claims description 26
- 230000006870 function Effects 0.000 claims description 58
- 230000005055 memory storage Effects 0.000 claims description 39
- 230000005540 biological transmission Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 9
- 230000002195 synergetic effect Effects 0.000 claims description 7
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 230000011664 signaling Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 description 28
- 238000013507 mapping Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000002820 assay format Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012888 cubic function Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了一种方法和装置,用于由运行在第一处理器上的应用通过进行辅助调用,访问来自运行在第二处理器上的操作系统的操作系统服务。数据层面处理器首先基于用于请求该控制处理器辅助的功能的输入与输出参数,构建参数区。把输入参数的当前值复制到参数区。基于指向参数区的指针和正调用的库功能的具体库功能操作码的组合,生成辅助调用消息。将辅助调用消息放入处理器的堆栈中紧接在停止与发送信号指令之后。用信号通知控制层面处理器代表数据层面处理器通过执行停止与发送信号指令来执行相应于操作码的库功能。
Description
技术领域
本发明一般涉及一种改进的数据处理系统与方法。更具体地,本发明涉及一种用于进行异类处理联合体(heterogeneous processing complex)中的外部辅助调用(assisted call)的装置与方法。
背景技术
可从纽约阿芒克的国际商业机器公司获得的小区宽带引擎体系结构(CBEA)包含用作控制层面处理器的功率处理元件(PPE)以及用作数据层面处理器的多个协同处理元件(SPE)。SPE被设计用于执行小的、高计算的软件核心。SPE具有可本地寻址的本地存储设备,并且具有本地受限保护机制,例如隔离操作模式。即,本地受限保护机制可以完全保护本地存储免受外部处理元件和输入/输出(I/O)设备的访问,同时本地SPE可以在其自己的本地存储器中的任何地方自由地读、写和执行。这些受限保护机制和本地可寻址性表明操作系统运行在PPE上,而不是SPE上。
操作系统不运行在SPE上的情况下,应用开发者难以访问管理,并且期待设备驱动器服务编程者。例如,文件I/O服务(例如,printf、fopen、fread等)、共享的存储器存取(例如,shmat)、存储器映射服务(例如,mmap)、以及I/O控制(ioctl)服务是难以用于运行在数据层面中SPE上的应用的服务,因为提供这些服务的操作系统运行在控制层面中的PPE上。
发明内容
鉴于以上,具有一种通过运行在第一处理器上的应用从运行在第二处理器上的操作系统访问操作系统服务的系统与方法,将是有益的。本发明的示意实施例提供了用于执行异类处理联合体中的外部辅助调用以致可以从不运行操作系统的处理器访问操作系统服务的机制。
使用示意实施例的机制,不能由数据层面处理器,即不能由主要功能是在一个控制处理器的控制下处理数据和指令的处理器充分向它们提供服务的功能,可以利用控制层面中的控制处理器,通过提供运行在控制处理器上的操作系统的操作系统服务,来辅助功能的执行。例如,协同处理元件(SPE)的协同处理单元(SPU)可以从运行在功率处理元件(PPE)中的功率处理单元(PPU)上的操作系统的操作系统服务接收辅助。示意实施例提供了在例如SPU的数据层面处理器和例如PPU的控制层面处理器之间执行外部辅助库调用的机制。在此将这样的调用称为“辅助调用”。
使用示意实施例的机制,为了进行辅助调用,数据层面处理器首先构建参数区作为用于需要控制处理器辅助的功能的输入和输出参数的联合。例如,可以将该参数区存储在与数据层面处理器相关的本地存储装置中。将输入参数的当前值从数据层面寄存器或者数据层面处理器堆栈复制到参数区中。
基于指向本地存储装置中的参数区的指针和用于正在被调用的库功能的具体库功能操作码的组合,生成辅助调用消息。把辅助调用消息放入数据层面处理器的堆栈中紧接在“停止”指令之后。根据被调用的库功能的分类,即基于库功能操作码,选择停止指令的信号类型。然后,用信号通知控制层面处理器代表数据层面处理器通过执行数据层面处理器中的停止和发送信号指令而进行对应于该具体库功能操作码的库功能。停止数据层面处理器的动作用信号通知控制层面处理器已经出现需要控制层面处理器关注的某种事件。控制层面处理器使用从与数据层面处理器相关的状态寄存器读取的停止与信号类型来识别请求向功能提供辅助服务的数据层面处理器。
响应于从数据层面处理器接收信号,控制层面处理器从数据层面处理器的下一程序计数器所指向的本地存储字取出辅助调用消息。当确定辅助调用消息的地址时,去掉下一程序计数器的最低有效位(中断使能位)。然后,递增数据层面处理器的下一程序计数器,以指向下一本地存储字。
然后,基于由辅助调用消息所指定的停止与发送信号类型以及操作码,把控制交给辅助调用处理程序。从由包含在辅助调用消息中的指针所指向的参数区取出辅助调用参数。然后,进行所请求的辅助库调用。
把所有返回值放入由包含在辅助调用消息中的指针所指向的参数区中。在优选实施例中,生成设置了“errno”,即遇到的错误的原因的标识符的错误的辅助调用在避免了与其它返回值的任何冲突的返回值四倍长字(quad-word)位置中,例如四倍长字返回值的第三字元,返回“errno”的值。然后,可以在所调整的下一程序计数器处重新启动数据层面处理器。数据层面处理器假定已经使用返回值更新了参数区。
为了完成辅助调用,数据层面处理器根据ABI(应用二进制接口)标准或者其它达成的约定从参数区取出返回值,并且把它们放入返回寄存器中。如果辅助调用设置了errno,则将errno值存储在数据层面处理器的本地存储装置中的errno变量位置中。然后,可以基于存储在本地存储装置中的errno值,引用错误处理程序来应对错误。
在一个说明性实施例中,在具有控制层面处理器和一个或多个数据层面处理器的数据处理系统中,提供了一种方法。该方法可以包含在数据处理系统的数据层面处理器中处理请求在数据层面处理器中不可得但在控制层面处理器上可得的功能或者服务的外部辅助的指令。可以在数据层面处理器中生成用于请求来自控制层面处理器的辅助的辅助调用消息。可以用信号通知控制层面处理器处理辅助调用消息,并且可以在数据层面处理器中从控制层面处理器接收一个或多个返回值。可以基于根据辅助调用消息而执行功能或者服务的控制层面处理器来生成一个或多个返回值。
方法还可以包含在与数据层面处理器相关的本地存储装置中生成参数区,并且把输入参数数据从数据层面处理器的一个或多个数据寄存器复制到该参数区。辅助调用消息的生成可以包含生成含有指向参数区的指针的第一辅助调用消息部分,以及生成含有与功能或者服务相关的标识符的第二辅助调用消息部分。
方法还可以包含基于参数区把停止与发送信号指令插入与数据层面处理器相关的执行堆栈中。可以在数据层面处理器中执行停止与发送信号指令。停止与发送信号指令可以使得数据层面处理器停止执行指令,并且可以启动用信号通知控制层面处理器来处理辅助调用消息。停止与发送信号指令可以具有根据功能或者服务的分类而选择的信号类型。而且,用信号通知控制层面处理器可以包含控制层面处理器读取停止与发送信号指令的信号类型。
方法还可以包含把辅助调用消息插入执行堆栈中紧接在停止与发送信号指令之后。此外,所述方法还可以包含响应于停止与发送信号指令的执行,修改与数据层面处理器相关的下一程序计数器的值,以指向执行堆栈中辅助调用消息之后的位置。可以从参数区取出一个或多个返回值,并且可以将它们写到与数据层面处理器相关的一个或多个数据寄存器。可以由控制层面处理器在由下一程序计数器的修改值所指向的执行堆栈中的指令处重新启动指令的执行。
可以通过控制层面处理器把一个或多个返回值写到由第一辅助调用消息部分所指向的参数区来接收一个或多个返回值。方法还可以包含在控制层面处理器中,响应于从数据层面处理器接收数据层面处理器的停止状态的信号,从数据层面处理器中取回辅助调用消息。可以基于第一辅助调用消息部分从参数区取回输入参数数据。可以基于第二辅助调用消息部分识别将关于输入参数数据而执行的库或服务。可以基于输入参数数据执行所识别的库或者服务,从而生成一个或多个返回值。方法还可以包含确定当基于输入参数数据执行所识别的库或服务时是否遇到了错误,并包含在一个或多个返回值中设置错误标识符。
功能或者服务可以是由运行在控制层面处理器上的操作系统所提供的操作系统库功能或者操作系统服务。一个或多个数据层面处理器可以不运行操作系统。数据处理系统可以是这样的异类数据处理系统,在其中一个或多个数据层面处理器包含使用第一指令集的多个协同处理单元。控制层面处理器可以是使用与第一指令集不同的第二指令集的功率处理单元。
在另一个说明性实施例中,提供了用于进行上述的方法的操作的装置。该装置可以包含控制层面处理器和耦接于该控制层面处理器的数据层面处理器。数据层面处理器可以处理请求由在数据层面处理器中不可得、但在控制层面处理器上可得的功能或者服务的外部辅助的指令。数据层面处理器可以生成用于请求来自控制层面处理器的辅助的辅助调用消息,并且可以用信号通知控制层面处理器处理辅助调用消息。数据层面处理器可以从控制层面处理器接收一个或多个返回值。可以基于根据辅助调用消息而执行功能或者服务的控制层面处理器来生成一个或多个返回值。
在以下对说明本发明的示范性实施例的详细描述中,将描述本发明的这些以及其它特性与优点,或者说,考虑到以下对说明本发明的示范性实施例的详细描述,本发明的这些以及其它特性与优点对本领域中的普通技术人员而言将是显而易见的。
附图说明
现在,将参照附图仅通过例子描述本发明,附图中:
图1是根据说明本发明的一个示范性实施例的小区宽带引擎体系结构(CBEA)的示范性方框图;
图2A-2C是说明当执行外部辅助调用处理时说明本发明的一个示范性实施例的主要可操作部件的交互的示范性方框图;
图3A是根据说明本发明的一个示范性实施例的I/O存储器映像的示范图;
图3B是根据说明本发明的一个示范性实施例的辅助调用消息的示范图;
图4是用于实现根据说明本发明的一个示范性实施例的数据层面处理器fopen辅助调用的代码的示范图;
图5是概括根据说明本发明的一个示范性实施例的数据层面处理器的示范性操作的流程图;以及
图6是概括根据说明本发明的一个示范性实施例的控制层面处理器的示范性操作的流程图。
具体实施方式
这些说明性的实施例提供了用于在多处理器系统中进行对操作系统服务的辅助调用的机制。可以在这样的任意多处理器系统中实现这些说明性实施例的这些机制:在该多处理器系统中,在一个第一处理器上执行的应用或者指令需要访问可从第二处理器,即从与指令或者应用正在其上执行的处理器的不同处理器上执行的操作系统获得的服务。一种可以实现这些说明性的实施例的各示范性方面的这样的多处理器系统是可从纽约,阿芒克的国际商业机器公司获得的小区宽带引擎体系结构(CBEA)片上多处理器系统。尽管将使用CBEA片上系统描述说明本发明的优选实施例,但本发明并不局限于此。
图1是可以实现本发明的说明性实施例的各方面的数据处理系统的示范性方框图。图1中所示的示范性数据处理系统是小区宽带引擎体系结构(CBEA)数据处理系统的例子。当阅读了以下的描述时,如对本领域普通技术人员将会很容易显而易见的,尽管将把CBEA用于说明本发明的优选实施例的描述中,但本发明并不局限于此。
如图1中所示,CBEA 100包括具有处理器(PPU)116及其L1和L2高速缓冲存储器112和114的功率处理器元件(PPE)110、以及多个协同处理器元件(SPE)120-134,每一个SPE均具有其自己的协同处理器单元(SPU)140-154、存储器流控制155-162、本地存储器或存储装置(LS)163-170、以及可以作为例如直接存储器访问(DMA)、存储器管理单元(MMU)以及总线接口单元的组合的总线接口单元(BIU单元)180-194。而且,还提供了高带宽内部元件互连总线(EIB)196、总线接口控制器(BIC)197以及存储器接口控制器(MIC)198。
CBEA 100可以是使得可以在单一的微处理器芯片上提供图1中所描述的每个元件的片上系统。而且,CBEA 100是每个SPU可以从系统中的其它SPU中的每个接收不同的指令的异类处理环境。而且,SPU的指令集与PPU的指令集不同,例如,PPU可以执行基于精简指令集计算机(RISC)的指令,而SPU执行向量化的指令。
SPE 120-134互相耦接,并且经由EIB 196耦接于L2高速缓冲存储器114。另外,SPE 120-134还经由EIB 196耦接于MIC 198和BIC 197。MIC 198向共享存储器199提供通信接口。BIC 197提供在CBEA 100和其它外部总线及设备之间的通信接口。
PPE 110是双线程PPE 110。这一双线程PPE 110和8个SPE 120-134的组合使得CBEA 100能够处理10个同步线程和128个以上的未解决(outstanding)存储器请求。PPE 110用作处理大多数计算工作量的其它8个SPE 120-134的控制器。例如,PPE 110可用于运行传统的操作系统,而SPE120-134进行向量化浮点代码的执行。
SPE 120-134包含协同处理单元(SPU)140-154、存储器流控制单元155-162、本地存储器或存储装置163-170、以及接口单元180-194。在一个示范性实施例中,本地存储器或存储装置163-170包含256KB的指令与数据存储器,其对于PPE 110是可见的,并且能够通过软件对其直接加以寻址。
PPE 110可以加载具有小程序或者线程的SPE 120-134,把这些SPE链在一起以处理联合操作中的每一步骤。例如,并入CBEA 100的机顶盒可以加载用于读取DVD、视频与音频译码以及显示的程序,并且将把数据从一个SPE传送到另一个SPE,直至其最终结束于输出显示。在4GHz处,每个SPE120-134给出理论上32GFLOPS的性能,同时PPE 110具有类似的性能水平。
存储器流控制单元(MFC)155-162用作SPU与系统的其余部分和其它元件的接口。MFC 155-162提供了用于主存储器和本地存储装置163-170之间的数据传送、保护以及同步化的主要机制。逻辑上存在用于处理器中的每个SPU的MFC。某些实现可以在多个SPU之间共享单一MFC的资源。在这样的情况下,为MFC所定义的所有设施(facility)和命令必须与用于每一SPU的软件独立地出现。共享一个MFC的效果被限制到依赖于实现的设施和命令。
这些说明性的实施例提供了用于外部进行辅助调用的机制。在优选实施例中,在诸如以上关于图1所描述的片上系统的多处理器集成电路设备中实现了根据本发明的说明性实施例的一个机制。在这一优选实施例中,该说明性的实施例的这些机制利用了小区宽带引擎体系结构中所提供的设施。可从www-128.ibm.com/developerworks/power/cell/的Developerworks网站上的国际商业机器公司获得的“Cell Broadbrand Engine Architecture V1.0”和“Synergistic Processor Unit(SPU)Instruction Set Architecture V1.0”文档中描述了这些设施,特此通过引用并入这两个文档。
具体地,说明性实施例的机制利用了提供在小区宽带引擎体系结构中的SPU寄存器以及信号命令指令设施等,SPU寄存器包括SPU状态寄存器、SPU下一程序计数器(NPC)寄存器、SPU数据寄存器等。SPU下一程序计数器(NPC)寄存器包含SPU从其开始执行的地址。当SPU处于停止状态时,如果在没有向这一寄存器的介入写入(intervening write)的情况下启动SPU,则该寄存器的读取返回要执行的下一指令的本地存储地址。另外,如果在没有向这一寄存器的干涉写入的情况下重新启动SPU,则所返回的数据的最小有效位指示当前SPU停止的中断使能/去使能状态以及启动中断使能/去使能状态。
当SPU已经停止执行时,如果要使用SPU启动命令恢复执行,则硬件使用要执行的下一个指令的地址并且使用当前SPU中断使能或者去使能状态,自动更新该寄存器中的值。可以通过SPU条件暂停(halt)指令的执行、通过SPU错误、通过SPU停止与发送信号(stop-and-signal)指令的执行、通过单一指令步骤的执行、或者通过对SPU运行控制寄存器中的RUN控制位的复位的任何之一来停止SPU。如果由于信号指令而停止,则可以通过屏蔽使能或者去使能中断状态位,即最小有效位来确定实际的信号指令的位置,然后从自该寄存器所读取的值中减去4。
为了在程序中的不同点处恢复执行,或者如果把新程序加载至SPU中,则通过软件写入SPU下一程序计数器寄存器,以将SPU下一程序计数器设置成要执行的下一个指令的本地存储装置中的地址,并且以当启动SPU时初始中断使能或者去使能状态是有效的。
SPU停止与发送信号命令指令停止SPU的执行,并且用信号向外部环境,即向运行在控制层面处理器上的操作系统通知SPU的停止。另外,SPU停止与发送信号命令指令提供有关SPU停止时SPU的状态的信息。在本发明的说明性实施例中,停止与发送信号命令具有将停止与发送信号命令标识为与辅助调用和特定标准化的辅助调用库分类相关联的停止类型。基于此停止类型,控制层面处理器可以确定需要引用哪个辅助调用处理程序(handler)来提供SPU指令的辅助调用处理。
在执行指令和/或处理数据中,该说明性实施例使用这些寄存器、停止与发送信号命令指令、以及辅助调用处理程序向例如SPU或者SPE的数据层面处理器提供外部辅助。具体地,当指令的执行或者数据的处理请求操作系统服务时,例如所述指令是fopen、fread、printf等指令时,该说明性实施例的机制生成输入/输出(I/O)存储器映像(image),以传送用于该指令的输入/输出参数。该I/O存储器映像用于把停止与发送信号指令插入数据层面处理器的堆栈中,并且把辅助调用消息插入该堆栈中的停止与发送信号指令之后。停止与发送信号指令致使数据层面处理器停止执行,并且用信号向控制层面处理器通知数据层面处理器的停止状态。控制层面处理器取回(retrieve)辅助调用消息、识别提供所请求的外部辅助的库或者服务、进行该库功能或者服务、并把返回值存储在I/O存储器映像中。然后,控制处理器在辅助调用消息之后的指令处重新启动数据层面处理器。
图2A-2C是说明当执行外部辅助调用处理时说明本发明的一个示范性实施例的主要可操作部件的交互的示范性方框图。使用该说明性实施例的机制,不能由数据层面处理器,即功能是在控制处理器的控制下处理数据和指令的处理器充分向它们提供服务的功能可以利用控制层面中的控制处理器,以通过提供运行在控制处理器上的操作系统的操作系统库或服务,来辅助该功能或指令的执行。例如,协同处理元件(SPE)的协同处理单元(SPU)可以从运行在功率处理元件(PPE)中的功率处理单元(PPU)上的操作系统的操作系统库和/或服务的接收辅助。
由被引用的库功能或者服务的创建者预先确定具体的功能是否请求来自控制层面处理器的辅助,以及请求哪种辅助。一般情况下,基于数据层面处理器执行通常由操作系统运行在控制层面处理器上的事实而决定(predicate)的功能的能力来选择是否辅助一个功能或者服务。然而,也可依据功能或者服务的复杂度与性能请求来决定。
例如,考虑sscanf功能。为了实现该功能,可能需要大约80K的代码,其性能对于应用不是十分重要。因此,通过使用该示范性实施例的辅助机制,可以更容易地把sscanf功能的实现推卸(offload)给控制层面处理器,而且不会引起额外的80K的数据层面处理器代码,即不会消费大量有限的本地存储装置资源。
已经开发出了需要控制层面处理器辅助的库功能和/或服务后,当通过包括对这些库功能和/或服务的调用的数据层面处理器执行指令时,确定该调用需要来自控制层面处理器的外部辅助。例如,可以通过确定数据层面处理器当前没有加载该具体的库功能和/或服务、查看所调用的库功能和/或服务的路径、或者用于确定所请求的库功能和/或服务出现在于控制层面处理器处的任何其它机制,来做出确定。
如图2A中所示,使用该说明性实施例的机制,为了进行辅助调用,数据层面处理器,例如SPU 212,首先构建存储器映射参数区226作为请求控制处理器辅助的功能或者指令214的输入与输出参数的联合(union)。例如,可以将该存储器映射参数区226存储在与数据层面处理器212相关的本地存储装置224中。把输入参数的当前数据值从数据层面寄存器216中的数据寄存器218或者从数据层面处理器堆栈228复制到存储器映射参数区226中。当数据寄存器218为满时,可以把数据存储在数据层面处理器堆栈228中。于是,可以从数据层面处理器寄存器216或者堆栈228之一或者这两者获取当前数据值。
SPU 212基于指向本地存储装置224中的到参数区226的指针与用于被调用的辅助调用库或者操作系统(OS)服务功能的具体库或者OS服务功能操作码的组合,生成辅助调用消息232。将辅助调用消息232放在数据层面处理器的堆栈228中紧接在停止与发送信号指令230之后。
根据所调用的辅助调用库或者OS服务功能的分类,即基于库或者OS服务功能操作码,来选择停止与发送信号指令230的信号类型。根据规定了辅助调用库或者OS服务调用的标准,对它们进行分类。为每个辅助调用库或者OS服务调用分配唯一的停止与发送信号类型。即,为每个标准分配一个唯一的停止与发送信号类型,然而,在每一标准中,为每一辅助调用库或者服务分配唯一的操作码。
使用运行在控制层面处理器上的操作系统来分配并且登记用于每一辅助调用库或者OS服务类别的操作码,并且也使用数据层面处理器来登记。该登记可以是分派程序员所请求的停止与发送信号类型以及操作码的规范登记过程。登记作为用以确保对于给定的操作环境唯一地分配停止与发送信号类型以及操作码而且它们彼此不相冲突的监视过程而存在。例如,登记可以像包含所分派(所分配)的停止与发送信号类型以及操作码的共享的头文件一样简单。可替换地,登记也可以是形式化的过程,其中,程序员从具体的守门装置(gatekeeper)或者管理员形式化地请求停止与发送信号类型以及操作码。
尽管运行时间登记过程不是优选,但也是可行的。运行时间登记实现中的登记将需要会消费宝贵的本地存储装置空间的本地存储结构。取而代之,优选基于预先分配的值在SPE库功能中对停止与发送信号类型以及操作码进行编码。
于是,停止与发送信号指令230的信号类型识别正被请求以在处理指令中向SPE提供辅助的辅助调用库或者服务。在运行时间登记实现中,可以在例如在本地存储装置224的SPE中维持数据结构,用于把辅助调用库或者OS服务操作码映射到信号类型。当构造停止与发送信号指令230和把停止与发送信号指令230插入堆栈228中时,可以使用该数据结构。可替换地,在优选实施例中,基于预先分配的值,在SPE库功能中对停止与发送信号类型以及操作码进行编码,不需要本地存储装置224中存在单独的数据结构。
当数据层面处理器,即SPU 212执行停止与发送信号指令230时,SPU 212通过更新SPU状态寄存器220以将SPU 212标识为处于停止状态而将其自身置于停止状态。SPU 212还用信号向外部环境,即PPE 240通知SPU 212的停止状态。
如图2B中所示,响应于从SPE 212接收SPE 212处于停止状态的信号,PPE 240的PPU 242从数据层面处理器的下一程序计数器(NPC)222所指向的堆栈228中的本地存储字来取回辅助调用消息232。当确定了辅助调用消息232的地址时,去掉下一程序计数器222的最小有效位(中断使能位)。然后,PPU 242递增SPE 210的下一程序计数器222,以指向辅助调用消息232之后的下一个本地存储字。
然后,PPU 242基于辅助调用消息232中的停止与发送信号指令230信号类型和操作码,将控制交给运行在PPU 242上的辅助调用处理程序244。辅助调用处理程序244识别所请求以向SPU 212提供辅助处理的辅助调用库或者OS服务246。然后,基于包含在辅助调用消息232中的指针取回来自存储器映射参数区226的辅助调用输入参数,并且把它们存储在PPE 240的本地存储器248中。然后,在辅助调用处理程序244的控制下,执行所请求的辅助库调用或者OS服务246。
辅助库调用或者OS服务246生成将被返回到SPE 210用于在处理指令214中由SPU 212使用的返回值。把所有返回值放入由包含在辅助调用消息232中的指针所指向的存储器映射参数区226中。可以把这些值暂时存储在本地存储器248的I/O参数250中。例如,可以在四倍长字返回值中提供返回值。
可替换地,运行在PPU 242上的辅助调用处理程序244可以直接从本地存储装置224中的存储器映射参数区226直接抽取I/O参数,而无需I/O参数250的中间复制。例如,在PPU 242需要在进行辅助调用库246或者服务调用之前重新格式化参数的情况下,如果不支持对本地存储装置224的存储器映射I/O存取等,则可以使用通过对I/O参数250的中间拷贝的间接额外层。
在优选实施例中,生成了设置“errno”,即遇到的错误的原因的标识符的错误的辅助调用在避免了与其它返回值的任何冲突的返回值四倍长字的位置中返回“errno”的值。例如,在一个示范性实施例中,可以在四倍长字返回值的第三字元中提供errno值。当在指令214的处理中应对错误时,可以由SPU212使用该errno值。
在完成了辅助调用库或者OS服务的处理之后,PPU 242可以重新启动SPU 212。SPE 212在所修改的(所递增的)下一程序计数器处恢复执行,以致SPE 212在辅助调用消息232之后的指令处恢复执行。
如图2C中所示,为了完成辅助调用,SPU 212从参数区226取出返回值,并且将它们放入数据寄存器218中的返回数据寄存器中。然后,SPU 212可以按正常方式继续指令214的执行和附加指令/数据的处理。如果辅助调用设置了errno,则可以把errno值存储在SPE 210的本地存储装置224中的errno变量位置234中。然后,可以基于存储在本地存储装置224中的errno值来启用errno处理程序(未示出)以处理错误。
如先前所提到的,在本发明的说明性实施例中,例如,可以在四倍长字返回值的第三字元中提供errno值。I/O存储器映像中的项目是用于具体辅助调用消息的输入与输出参数的联合。例如,对于fopen辅助调用,即FILE*fopen(const char*path,const char*mode)而言,存在作为32位的本地存储装置指针“路径”和“模式”的输入,以及作为32位的“文件”型的本地存储装置指针的输出。
在图3A中将输入参数的存储器映像示为存储器映像310。如图3A中所示,在偏移0处的第一四倍长字项目中提供了“路径”指针。在偏移16处的第二四倍长字项目中提供了“模式”指针。
把被由PPU 242返回到SPE 210的输出值返回在发现输入的同一存储器映像中。在图3A中,把这些输出值或返回值示为存储器映像320。如所示,把返回值,即“文件”指针作为四倍长字项目存储在偏移0处的I/O存储器映像中。该四倍长字项目具有可以存储由所调用的辅助调用库或者服务所返回的errno值(如果存在)的第三字元。
图3B是根据说明本发明的一个示范性实施例的辅助调用消息的示范图。如图3B中所示,辅助调用消息350包括指向为该辅助调用所创建的I/O存储器映像的指针360或者该I/O存储器映像的地址。另外,辅助调用消息350包括所请求以在由例如SPU 212的数据层面处理器对指令或者数据的处理中提供辅助的辅助调用库或者OS服务的操作码或者其它标识符370。如上所述,由例如PPU 242的控制层面处理器使用辅助调用库或者OS服务的操作码或者标识符370,以将控制交给执行适当的辅助调用库或者OS服务的适当辅助调用处理程序。由例如PPU 242的控制层面处理器使用指针360,以取回用于由将向数据层面处理器中的指令/数据的处理提供辅助的辅助调用库/OS服务所使用的辅助的输入/输出参数。
图4是用于实现根据说明本发明的一个示范性实施例的数据层面处理器fopen辅助调用的代码的示范图。图4中所示的示范性代码是当执行请求控制层面处理器的辅助的fopen C99功能调用时,可以由例如SPU 212的数据层面处理器执行的代码。如图4中所示,该示范性代码的第一部分410用于把输入参数放入I/O存储器映像中。在该具体例子中,把输入参数放置在与数据层面处理器相关的堆栈上,以便形成I/O存储器映像。
该示范性代码的第二部分420用于基于操作码和指向I/O存储器映像的本地存储装置指针来构建辅助调用消息。该示范性代码的第三部分430用于通过发布具有对应于fopen指令的信号代码或者信号类型,即0x2100的停止与发送信号指令,来通知PPE进行辅助调用请求。
该示范性代码的第四部分440用于从I/O存储器映像取出返回值,并且把这些返回值存储在返回寄存器,即R3中。如果返回值是0,则遇到了错误,并且把返回的errno值存储在本地errno变量中。然后,gai示范性代码返回到调用者指令。
如上所述,可以根据规定了辅助调用库或者OS服务调用的标准,对辅助调用库或者OS服务调用进行分类。每一个辅助调用库或者OS服务类别可以拥有其自己唯一被分配的停止与开始(stop-and-start)信号类型。而且,对于每一标准,各个库功能或者服务配有它们自己唯一的操作码。以下的表格说明了示范性辅助调用库停止信号类型以及它们相应的标准:
停止类型 | 标准 |
0x2100 | ISO/IEC C标准9899:1999(c99) |
0x2101 | POSIX.1(IEEE标准1003.1) |
0x2102 | POSIX.4 |
0x2103 | 依赖于OS的系统调用 |
表1-辅助调用库停止类型与标准
上述说明本发明的示范性实施例利用本地存储装置中的I/O存储器映像作为这样的部件:通过该部件,控制层面处理器可以访问请求由控制层面处理器进行外部辅助的功能的输入/输出数据值。在I/O存储器映像中传送的参数,例如指针,可以使用本地存储装置或者系统存储装置指针。在执行在控制层面处理器上的操作系统中的操作码登记指定了用于包含指针参数的每一操作码的指针类型。因此,能够提供辅助调用的两个版本,一个具有本地存储装置指针参数(例如,32位),而另一个具有有效地址指针参数(例如,64位)。
由于辅助库或者OS服务调用在数据层面处理器的指令序列中引入了数据,即把数据和指令插入数据层面处理器的堆栈中,所以可以在调试程序中进行具体的调整,以便成功进行信号步进(stepping),即,步进到堆栈中的下一指令。典型地通过用停止指令取代“下一指令”实现调试程序单一步进。“下一个指令”取决于当前的指令和寄存器的状态。
例如,如果当前指令是条件转移指令brz,则取决于所指定的寄存器的值,下一指令可以是下一顺序指令(NPC+4),或者由该指令所指定的转移目标地址的指令。同样,调试程序必须获悉当前指令,以便确定将放置下一个停止指令的下一指令。
外部辅助库或者OS服务调用引入了额外的指令/数据,其中调试程序必须获悉该额外的指令/数据以便正确预测下一指令。如果当前指令是具有指示辅助调用的信号类型,例如0x2100到0x21FF的信号类型的停止与发送信号指令,则可以确定下一指令是下一程序计数器(NPC)值+8,而不是下一顺序指令+4。换句话说,由控制层面处理器递增下一程序计数器(NPC)值,以指向堆栈中辅助调用消息(其将处于NPC+4处)之后的下一指令(NPC+8)。
这些说明性实施例提供了用于在向不能由数据层面处理器直接提供服务的指令/功能提供服务的过程中从控制层面处理器请求辅助的标准化机制。这些说明性实施例所提供的方案很容易扩展,以支持包括系统调用与应用定义的功能在内的各种指令/功能。本发明的机制把向辅助调用提供服务的复杂性移到了控制层面处理器,以致最小化了对数据层面处理器的本地存储装置使用。
通过提供用于从控制层面处理器获取对库功能/服务调用的外部辅助的机制,本发明的说明性实施例允许库功能/服务的代码在控制层面处理器上执行,而不是数据层面处理器上执行。结果,不必将数据层面处理器的本地存储装置用于存储库功能/服务的代码。
例如,考虑sprintf功能(即,用于字符串的格式化打印)。数据层面处理器可以分析格式串,并且构建最终的输出串。然而,这样做,将需要大约70K的存储在数据层面处理器的本地存储装置中的代码。取而代之,使用本发明的说明性实施例的机制,数据层面处理器把所有参数传送到控制层面处理器,该控制层面处理器进行sprintf,并且将所得到的串复制回数据层面处理器的本地存储装置。令控制层面处理器管理所有的复杂性将数据层面处理器的代码减少至大约少于100字节。
图5和6是图示一个根据说明本发明的示范性实施例的示范性操作的流程图。将理解,可以通过计算机程序指令实现流程图说明中的每个块以及流程图说明中各块的组合。可以把这些计算机程序指令提供给处理器或者其它可编程数据处理装置,以产生机构(machine)使得在处理器或者其它可编程数据处理装置上执行的指令创建用于实现一或多个流程图块中所指定的功能的部件。也可以把这些计算机程序指令存储在计算机可读存储器或者存储介质中,其中该计算机可读存储器或者存储介质可指导处理器或者其它可编程数据处理装置按特定方式运作,使得存储在该计算机可读存储器或者存储介质中的指令产生包括实现一个或多个流程图块中所指定的功能的指令部件的一种制品。
因此,流程图说明的各个块支持用于进行所指定功能的部件的组合、用于进行所指定功能的步骤的组合、以及用于进行所指定功能的程序指令部件。还将理解,可以通过进行所指定功能的或者步骤的基于专用硬件的计算机系统、或者通过专用硬件和计算机指令的组合,来实现流程图说明的每个块和流程图说明中的各块的组合。
图5是概括根据说明本发明的一个示范性实施例的数据层面处理器的示范性操作的流程图。如图5中所示,通过数据层面处理器检测请求控制层面处理器的外部辅助的指令或者功能调用而开始操作(步骤510)。数据层面处理器创建存储器映射参数区创建作为指令或者功能调用的输入与输出参数的联合(步骤515)。数据层面处理器把输入参数的当前数据值从寄存器或者堆栈复制到存储器映射参数区中(步骤520)。
数据层面处理器通过把指向存储器映射参数区的指针与用于完成指令或者功能调用的执行所需的具体辅助调用库或者OS服务的具体辅助调用库或者OS服务操作码相组合而生成辅助调用消息(步骤525)。数据层面处理器把具有根据辅助调用库或者OS服务的分类而选择的信号类型的停止与发送信号指令插入本地存储装置中的堆栈中(步骤530)。数据层面处理器把辅助调用消息插入本地存储装置中的堆栈中紧接在停止与发送信号指令之后(步骤535)。然后,数据层面处理器通过执行停止与发送信号指令,用信号通知控制层面处理器代表数据层面处理器进行辅助调用库功能或者OS服务(步骤540)。
然后,数据层面处理器等待辅助调用库功能或者OS服务完成,并且返回值变为可用,例如,在下一程序计数器处重新启动数据层面处理器(步骤545)。响应于库功能或者OS服务的完成,数据层面处理器从存储器映射参数区取出返回值,并且把它们放入数据层面处理器的返回寄存器中(步骤550)。
数据层面处理器确定是否已经设置了errno值(步骤555)。如果是,则数据层面处理器取回errno值,并且将该errno值存储在本地存储装置中的errno变量位置中(步骤560)。然后,数据层面处理器可以引用错误处理程序来应对错误(步骤565)。否则,如果没有设置errno值,则数据层面处理器使用从控制层面处理器获取的返回值继续执行指令(步骤570)。然后,操作终止。
图6是概括根据说明本发明的一个示范性实施例的控制层面处理器的示范性操作的流程图。如图6中所示,通过控制层面处理器从数据层面处理器接收指示数据层面处理器的停止条件的信号而开始操作(步骤610)。控制层面处理器取回数据层面处理器的下一程序计数器的当前状态(步骤620),并且基于下一程序计数器的当前状态从数据层面处理器的本地存储装置取回辅助调用消息(步骤630)。控制层面处理器递增数据层面处理器的下一程序计数器,以指向数据层面处理器的本地存储装置中的堆栈中的辅助调用消息之后的下一指令(步骤640)。
控制层面处理器基于来自数据层面处理器的信号中所接收的停止与发送信号指令信号类型和辅助调用消息中所指定的操作码,识别适当的辅助调用处理程序(步骤650)。然后,控制层面处理器把控制传送到所识别的辅助调用处理程序(步骤660)。辅助调用处理程序从由包含在辅助调用消息中的指针所指向的存储器映射参数区取出辅助调用参数(步骤670),并且使用这些参数进行所请求的辅助调用库功能或者OS服务(步骤680)。辅助调用处理程序基于辅助调用库功能或者OS服务的执行,生成返回值,并且把它们与所生成的任意errno值(如果有的话)一起存储在存储器映射参数区中(步骤690)。然后,控制层面处理器重新启动数据层面处理器的指令执行(步骤695),并且操作终止。
因此,这些说明性实施例提供了准许数据层面处理器访问控制层面处理器上的库功能和操作系统服务的标准化机制。这些说明性实施例还提供了用于在数据层面处理器和控制层面处理器之间传送信息的易于扩展的机制,以有助于使用不运行操作系统的处理器中的操作系统提供的功能。这些说明性实施例的机制把向辅助调用提供服务的复杂性移到了控制层面处理器,使得最小化了对数据层面处理器本地存储装置的使用。
假设对外部辅助的请求与操作系统库功能或者服务相关联,已经提供了对说明性实施例的上述描述。然而,本发明并不限于此。而是,使用本发明的说明性实施例的机制而利用外部辅助的请求可以是不能够(或者已经被选择为不能够)在例如SPU的数据层面处理器中得到服务的任意请求。例如,程序员可能希望在数据层面处理器上实现标准化数学库。为了符合标准,例如,程序员可能要实现立方根函数。程序员可能知道立方函数对客户库(customer base)不是至关重要的。因此,取代把时间花费在开发用于例如SPU的数据层面处理器的立方根函数上,程序员可以把该函数作为辅助函数而实现,并且使用已经由例如PPU的控制层面处理器提供和在其上实现的立方根函数。
重要的是,要注意,尽管已经在充分运作(fully functioning)的数据处理系统的上下文中描述了说明性实施例,然而本领域中普通技术人员将意识到,既能够按完全硬件实施例、完全软件实施例,也能够按包含硬件和软件元素两者的实施例,提供这些说明性实施例的各个过程。在优选实施例中,以软件实现本发明,其包括但不限于固件、常驻软件、微代码等。
而且,本发明采取可以从计算机可用或者计算机可读介质存取的计算机程序产品的形式,其中计算机可用或者计算机可读介质提供了由计算机或者任何指令执行系统使用或者与计算机或者任何指令执行系统有关的程序代码。为了对其进行描述,计算机可用或者计算机可读介质可以是可以包含、存储、传输、传播、或者传送由指令执行系统、装置、或者设备使用的或者与指令执行系统、装置、或者设备有关的程序的任意装置。
所述介质可以是电子的、磁的、光的、电磁的、红外的、或者半导体系统(或者装置或者设备)或者传播介质。计算机可读介质的例子包括半导体或者固态存储器、磁带、可拆卸计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘以及光盘。光盘的当前例子包括紧致盘-只读存储器(CD-ROM)、紧致盘--读/写(CD-R/W)和DVD。
适合于存储和/或执行程序代码的数据处理系统将至少包括一个直接或者通过系统总线间接耦接于存储器元件的处理器。存储器元件可以包括在程序代码的实际执行期间所使用的本地存储装置、大容量存储器、以及提供至少某些程序代码的暂时存储以便减少执行期间必须从大容量存储器取回代码的次数的高速缓冲存储器。
可以直接或者通过介入I/O控制器把输入/输出或I/O设备(包括但不限于键盘、显示器、定点设备等)耦接于所述系统。
也可以把网络适配器耦接于所述系统,以使数据处理系统能够变成通过介入专有或者公共网络而与其它数据处理系统或者远程打印机或者存储设备耦接。调制解调器、电缆调制解器调器以及以太网卡只是几种当前可得类型的网络适配器中的一些。
为了说明和描述的目的,已经给出了对本发明的描述,并且不旨在穷举本发明或者将本发明限制于所公开的形式。大量修改与变更对于本领域普通技术人员来说是很明显的。选择并描述实施例以便最佳解释本发明的原理、实际的应用,并且以便本领域其他普通技术人员能够理解,对于具有各种修改的各种实施例的本发明适合于所预期的具体使用。
Claims (26)
1.一种在具有控制层面处理器和一个或多个数据层面处理器的数据处理系统中的方法,包含:
在所述数据处理系统的数据层面处理器中处理需要在所述数据层面处理器中不可得、但在所述控制层面处理器上可得的功能或者服务的外部辅助的指令;
在所述数据层面处理器中生成辅助调用消息,用于请求来自所述控制层面处理器的辅助;
用信号通知所述控制层面处理器处理所述辅助调用消息;以及
在所述数据层面处理器中,从所述控制层面处理器接收一个或多个返回值,其中,基于根据所述辅助调用消息而执行所述功能或者服务的控制层面处理器来生成所述一个或多个返回值。
2.根据权利要求1所述的方法,还包含:
在与所述数据层面处理器相关的本地存储装置中生成参数区;以及
将输入参数数据从所述数据层面处理器的一个或多个数据寄存器复制到所述参数区。
3.根据权利要求2所述的方法,其中,生成所述辅助调用消息包含:
生成含有指向所述参数区的指针的第一辅助调用消息部分;以及
生成含有与所述功能或者服务相关的标识符的第二辅助调用消息部分。
4.根据权利要求2所述的方法,还包含:
基于所述参数区,把停止与发送信号指令插入与所述数据层面处理器相关的执行堆栈中;以及
在所述数据层面处理器中执行所述停止与发送信号指令,其中,所述停止与发送信号指令致使所述数据层面处理器停止执行指令,并启动用信号通知所述控制层面处理器来处理所述辅助调用消息。
5.根据权利要求4所述的方法,其中,所述停止与发送信号指令具有根据所述功能或者服务的分类而选择的信号类型,并且其中,用信号通知所述控制层面处理器包含所述控制层面处理器读取所述停止与发送信号指令的信号类型。
6.根据权利要求4所述的方法,还包含:
将所述辅助调用消息插入所述执行堆栈中紧接在所述停止与发送信号指令之后。
7.根据权利要求6所述的方法,还包含:
响应于执行所述停止与发送信号指令,修改与所述数据层面处理器相关的下一程序计数器的值,以指向所述执行堆栈中所述辅助调用消息之后的位置。
8.根据权利要求7所述的方法,还包含:
从所述参数区取出所述一个或多个返回值;
将所述一个或多个返回值写到与所述数据层面处理器相关的一个或多个数据寄存器;以及
在由所述下一程序计数器的所修改的值所指向的执行堆栈中的指令处,重新启动所述数据层面处理器的指令的执行。
9.根据权利要求3所述的方法,其中,接收所述一个或多个返回值包含由所述控制层面处理器将所述一个或多个返回值写到由所述第一辅助调用消息部分所指向的参数区。
10.根据权利要求3所述的方法,还包含:
在所述控制层面处理器中,响应于从所述数据层面处理器接收所述数据层面处理器的停止状态的信号,从所述数据层面处理器取回所述辅助调用消息;
基于所述第一辅助调用消息部分,从所述参数区取回所述输入参数数据;
基于所述第二辅助调用消息部分,识别将关于所述输入参数数据而执行的库或服务;以及
基于所述输入参数数据执行所识别的库或服务,从而生成所述一个或多个返回值。
11.根据权利要求10所述的方法,还包含:
确定当基于所述输入参数数据执行所识别的库或服务时是否遇到了错误;以及
在所述一个或多个返回值中设置错误标识符。
12.根据权利要求1所述的方法,其中,所述功能或者服务是由运行在所述控制层面处理器上的操作系统所提供的操作系统库功能或者操作系统服务,并且其中,所述一个或多个数据层面处理器不运行操作系统。
13.根据权利要求1所述的方法,其中,所述数据处理系统是这样的异类数据处理系统:在其中,所述一个或多个数据层面处理器包含使用第一指令集的多个协同处理单元,并且所述控制层面处理器是使用与所述第一指令集不同的第二指令集的功率处理单元。
14.一种装置,包含:
控制层面处理器;以及
耦接于所述控制层面处理器的数据层面处理器,其中,所述数据层面处理器:
处理需要在所述数据层面处理器中不可得但在所述控制层面处理器上可得的功能或者服务的外部辅助的指令,
生成辅助调用消息,用于请求来自所述控制层面处理器的辅助,
用信号通知所述控制层面处理器来处理所述辅助调用消息,以及
从所述控制层面处理器接收一个或多个返回值,其中,基于根据所述辅助调用消息而执行所述功能或者服务的控制层面处理器来生成所述一个或多个返回值。
15.根据权利要求14所述的装置,还包含耦接于所述数据层面处理器的本地存储装置,其中,所述数据层面处理器还:
在所述本地存储装置中生成参数区;以及
把输入参数数据从所述数据层面处理器的一个或多个数据寄存器复制到所述参数区。
16.根据权利要求15所述的装置,其中,所述数据层面处理器通过下列操作生成所述辅助调用消息:
生成含有指向所述参数区的指针的第一辅助调用消息部分;以及
生成含有与所述功能或者服务相关的标识符的第二辅助调用消息部分。
17.根据权利要求15所述的装置,其中,在所述本地存储装置中提供用于所述数据层面处理器的执行堆栈,并且其中所述数据层面处理器还:
基于所述参数区,将停止与发送信号指令插入所述执行堆栈中;以及
执行所述停止与发送信号指令,其中,所述停止与发送信号指令致使所述数据层面处理器停止执行指令,并启动用信号通知所述控制层面处理器来处理所述辅助调用消息。
18.根据权利要求17所述的装置,其中,所述停止与发送信号指令具有根据所述功能或者服务的分类而选择的信号类型,并且其中,所述数据层面处理器用信号通知所述控制层面处理器包含所述控制层面处理器读取所述停止与发送信号指令的信号类型。
19.根据权利要求17所述的装置,其中,所述数据层面处理器还把所述辅助调用消息插入到所述执行堆栈中紧接在所述停止与发送信号指令之后。
20.根据权利要求19所述的装置,其中,所述控制层面处理器:
响应于所述数据层面处理器执行所述停止与发送信号指令,修改与所述数据层面处理器相关的下一程序计数器的值,以指向所述执行堆栈中所述辅助调用消息之后的位置。
21.根据权利要求20所述的装置,其中,所述控制层面处理器还:
从所述参数区取出所述一个或多个返回值,以及
将所述一个或多个返回值写到与所述数据层面处理器相关的一个或多个数据寄存器,并且其中:
所述控制层面处理器在由所述下一程序计数器的所修改的值所指向的执行堆栈中的指令处重新启动所述数据层面处理器的指令的执行。
22.根据权利要求16所述的装置,其中,所述数据层面处理器接收一个或多个返回值包含由所述控制层面处理器将所述一个或多个返回值写到由所述第一辅助调用消息部分所指向的参数区。
23.根据权利要求16所述的装置,其中,所述控制层面处理器:
响应于从所述数据层面处理器接收所述数据层面处理器的停止状态的信号,从所述数据层面处理器取回所述辅助调用消息;
基于所述第一辅助调用消息部分,从所述参数区取回所述输入参数数据;
基于所述第二辅助调用消息部分,识别将关于所述输入参数数据而执行的库或服务;以及
基于所述输入参数数据执行所识别的库或服务,从而生成所述一个或多个返回值。
24.根据权利要求23所述的装置,其中,所述控制层面处理器还:
确定当基于所述输入参数数据执行所识别的库或服务时是否遇到了错误;以及
在所述一个或多个返回值中设置错误标识符。
25.根据权利要求24所述的装置,其中,所述功能或者服务是由运行在所述控制层面处理器上的操作系统所提供的操作系统库功能或者操作系统服务,并且其中,所述数据层面处理器不运行操作系统。
26.根据权利要求24所述的装置,其中,所述数据处理系统是这样的异类数据处理系统:在其中,所述一个或多个数据层面处理器包含使用第一指令集的多个协同处理单元,并且所述控制层面处理器是使用与所述第一指令集不同的第二指令集的功率处理单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/269,290 | 2005-11-08 | ||
US11/269,290 US7472261B2 (en) | 2005-11-08 | 2005-11-08 | Method for performing externally assisted calls in a heterogeneous processing complex |
PCT/EP2006/067582 WO2007054423A1 (en) | 2005-11-08 | 2006-10-19 | Apparatus and method for performing externally assisted calls in a heterogeneous processing complex |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101300545A true CN101300545A (zh) | 2008-11-05 |
CN101300545B CN101300545B (zh) | 2012-11-14 |
Family
ID=37769358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680040624XA Expired - Fee Related CN101300545B (zh) | 2005-11-08 | 2006-10-19 | 数据系统中运行的方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7472261B2 (zh) |
EP (1) | EP1949222B1 (zh) |
CN (1) | CN101300545B (zh) |
WO (1) | WO2007054423A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102906708A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 响应于适配器事件采取的动作的操作系统通知 |
CN105556402A (zh) * | 2013-12-09 | 2016-05-04 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于影响控制设备的控制程序的方法 |
CN106663026A (zh) * | 2014-07-15 | 2017-05-10 | Arm 有限公司 | 针对事务型数据处理执行模式的调用堆栈维护 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010696B2 (en) * | 2006-06-06 | 2011-08-30 | Avaya Inc. | Passing information from a forwarding plane to a control plane |
US7934063B2 (en) * | 2007-03-29 | 2011-04-26 | International Business Machines Corporation | Invoking externally assisted calls from an isolated environment |
CN102193827A (zh) * | 2010-03-12 | 2011-09-21 | 西安交通大学 | 一种同构平台应用面向cbea移植的方法 |
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) * | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2696290A (en) * | 1950-04-22 | 1954-12-07 | Massey Harris Co Ltd | Vertical elevator for combines |
JPS59205605A (ja) * | 1983-05-07 | 1984-11-21 | Hitachi Ltd | シ−ケンス制御装置 |
DE3580552D1 (de) | 1984-08-02 | 1990-12-20 | Telemecanique Electrique | Programmierbare steuereinrichtung mit zusatzprozessor. |
US5142683A (en) * | 1987-03-09 | 1992-08-25 | Unisys Corporation | Intercomputer communication control apparatus and method |
US5335325A (en) * | 1987-12-22 | 1994-08-02 | Kendall Square Research Corporation | High-speed packet switching apparatus and method |
US5146593A (en) | 1989-03-06 | 1992-09-08 | International Business Machines Corporation | Procedure call interface |
ATE121208T1 (de) * | 1990-01-30 | 1995-04-15 | Johnson Service Co | Vernetztes betriebsmittelverwaltungssystem. |
US5708830A (en) * | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
US6032244A (en) * | 1993-01-04 | 2000-02-29 | Cornell Research Foundation, Inc. | Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling |
US5615263A (en) * | 1995-01-06 | 1997-03-25 | Vlsi Technology, Inc. | Dual purpose security architecture with protected internal operating system |
US5630059A (en) * | 1995-02-06 | 1997-05-13 | International Business Machines Corporation | Expedited message transfer in a multi-nodal data processing system |
DE19620622A1 (de) * | 1996-05-22 | 1997-11-27 | Siemens Ag | Verfahren zur Synchronisation von Programmen auf unterschiedlichen Computern eines Verbundes |
US6424627B1 (en) * | 1997-02-24 | 2002-07-23 | Metrobility Optical Systems | Full-duplex medium tap apparatus and system |
US6141697A (en) * | 1997-06-25 | 2000-10-31 | Unisys Corp. | System and method for performing external procedure calls in heterogeneous computer systems utilizing program stacks |
US6321323B1 (en) | 1997-06-27 | 2001-11-20 | Sun Microsystems, Inc. | System and method for executing platform-independent code on a co-processor |
US6233613B1 (en) * | 1997-08-18 | 2001-05-15 | 3Com Corporation | High impedance probe for monitoring fast ethernet LAN links |
US6505290B1 (en) * | 1997-09-05 | 2003-01-07 | Motorola, Inc. | Method and apparatus for interfacing a processor to a coprocessor |
US5901309A (en) * | 1997-10-07 | 1999-05-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for improved interrupt handling within a microprocessor |
US6032186A (en) * | 1998-01-29 | 2000-02-29 | At&T Corp | System and method for remote information access |
US6124868A (en) * | 1998-03-24 | 2000-09-26 | Ati Technologies, Inc. | Method and apparatus for multiple co-processor utilization of a ring buffer |
US6230284B1 (en) * | 1998-04-24 | 2001-05-08 | Intel Corporation | Initiating corrective action after the occurrence of a program error |
EP1061439A1 (en) * | 1999-06-15 | 2000-12-20 | Hewlett-Packard Company | Memory and instructions in computer architecture containing processor and coprocessor |
WO2001013590A1 (en) * | 1999-08-17 | 2001-02-22 | Conexant Systems, Inc. | Integrated circuit with a core processor and a co-processor to provide traffic stream processing |
US6633564B1 (en) * | 1999-09-22 | 2003-10-14 | Nortel Networks Limited | Method and apparatus for inserting packets into a data stream |
US6662297B1 (en) * | 1999-12-30 | 2003-12-09 | Intel Corporation | Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism |
US6704863B1 (en) * | 2000-06-14 | 2004-03-09 | Cypress Semiconductor Corp. | Low-latency DMA handling in pipelined processors |
US7383424B1 (en) * | 2000-06-15 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Computer architecture containing processor and decoupled coprocessor |
WO2002039718A2 (en) * | 2000-10-19 | 2002-05-16 | Loudeye Technologies, Inc. | System and method for selective insertion of content into streaming media |
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 |
US6738850B2 (en) * | 2001-05-16 | 2004-05-18 | Inventec Appliances Corp. | Method of downloading application programs on the editing system platform of an electronic communication apparatus |
US7016968B2 (en) * | 2001-06-22 | 2006-03-21 | International Business Machines Corporation | Method and apparatus for facilitating the providing of content |
FI114663B (fi) * | 2001-12-20 | 2004-11-30 | Nokia Corp | Menetelmä ja järjestelmä käyttöjärjestelmätoimintojen suorittamiseksi sekä elektroniikkalaite |
US7346898B2 (en) * | 2002-01-29 | 2008-03-18 | Texas Instruments Incorporated | Method for scheduling processors and coprocessors with bit-masking |
US7076558B1 (en) * | 2002-02-27 | 2006-07-11 | Microsoft Corporation | User-centric consent management system and method |
US6938132B1 (en) * | 2002-04-04 | 2005-08-30 | Applied Micro Circuits Corporation | Memory co-processor for a multi-tasking system |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
US7290050B1 (en) * | 2002-09-20 | 2007-10-30 | Blue Coat Systems, Inc. | Transparent load balancer for network connections |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US7278014B2 (en) * | 2004-12-02 | 2007-10-02 | International Business Machines Corporation | System and method for simulating hardware interrupts |
US7522168B2 (en) * | 2005-09-27 | 2009-04-21 | Sony Computer Entertainment Inc. | Cell processor task and data management |
US7386636B2 (en) * | 2005-08-19 | 2008-06-10 | International Business Machines Corporation | System and method for communicating command parameters between a processor and a memory flow controller |
US7506123B1 (en) * | 2005-09-27 | 2009-03-17 | Sony Computer Entertainment Inc. | Method and system for performing memory copy function on a cell processor |
US8316220B2 (en) * | 2005-09-27 | 2012-11-20 | Sony Computer Entertainment Inc. | Operating processors over a network |
US7509463B2 (en) * | 2005-12-01 | 2009-03-24 | Sony Computer Entertainment, Inc. | Cell processor atomic compare and swap using dedicated synergistic processor element |
US7934063B2 (en) * | 2007-03-29 | 2011-04-26 | International Business Machines Corporation | Invoking externally assisted calls from an isolated environment |
-
2005
- 2005-11-08 US US11/269,290 patent/US7472261B2/en not_active Expired - Fee Related
-
2006
- 2006-10-19 CN CN200680040624XA patent/CN101300545B/zh not_active Expired - Fee Related
- 2006-10-19 EP EP06807409.5A patent/EP1949222B1/en active Active
- 2006-10-19 WO PCT/EP2006/067582 patent/WO2007054423A1/en active Application Filing
-
2008
- 2008-05-29 US US12/128,927 patent/US8195759B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102906708A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 响应于适配器事件采取的动作的操作系统通知 |
CN102906708B (zh) * | 2010-06-23 | 2015-07-15 | 国际商业机器公司 | 响应于适配器事件采取的动作的操作系统通知 |
CN105556402A (zh) * | 2013-12-09 | 2016-05-04 | 帝斯贝思数字信号处理和控制工程有限公司 | 用于影响控制设备的控制程序的方法 |
US10162324B2 (en) | 2013-12-09 | 2018-12-25 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for manipulating a control program of a control device |
CN106663026A (zh) * | 2014-07-15 | 2017-05-10 | Arm 有限公司 | 针对事务型数据处理执行模式的调用堆栈维护 |
CN106663026B (zh) * | 2014-07-15 | 2021-01-12 | Arm 有限公司 | 针对事务型数据处理执行模式的调用堆栈维护 |
Also Published As
Publication number | Publication date |
---|---|
US20070104204A1 (en) | 2007-05-10 |
EP1949222A1 (en) | 2008-07-30 |
US20080229157A1 (en) | 2008-09-18 |
WO2007054423A1 (en) | 2007-05-18 |
CN101300545B (zh) | 2012-11-14 |
US8195759B2 (en) | 2012-06-05 |
EP1949222B1 (en) | 2015-02-25 |
US7472261B2 (en) | 2008-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101300545B (zh) | 数据系统中运行的方法及装置 | |
KR100239028B1 (ko) | 컴퓨터 시스템 | |
CN102197368B (zh) | 数据处理指令的许可检查 | |
CN101802798B (zh) | 在多核处理器中使用干预消息来避免活锁 | |
CN100524223C (zh) | 基于pmi和smi的调度执行框架中用于并发处理程序执行的方法 | |
US6308255B1 (en) | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system | |
JP2644780B2 (ja) | 処理依頼機能を持つ並列計算機 | |
US7376663B1 (en) | XML-based representation of mobile process calculi | |
US20080098264A1 (en) | Program debug method and apparatus | |
JP2007287171A (ja) | 遠隔コンピュータへのオペレーションの分散方法、装置及び記憶媒体 | |
US20060064623A1 (en) | Error handling process | |
CN104866443A (zh) | 可中断存储独占 | |
US20010049817A1 (en) | System developing method, storage medium, information processing apparatus, information terminal apparatus, information processing system, and information processing method | |
Huss-Lederman et al. | MPI-2: Extensions to the message passing interface | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
US9811335B1 (en) | Assigning operational codes to lists of values of control signals selected from a processor design based on end-user software | |
CN114968264B (zh) | 一种网络处理器交互系统、方法、电子设备及存储介质 | |
US6782523B2 (en) | Parallel configurable IP design methodology | |
US11656796B2 (en) | Adaptive memory consistency in disaggregated datacenters | |
TWI842427B (zh) | 軟體開發系統以及軟體開發方法 | |
JP3463925B2 (ja) | 計算機システム | |
JP4853620B2 (ja) | マルチプロセッサシステムと初期立ち上げ方法およびプログラム | |
CN118170558A (zh) | 函数调用的核间通信封装方法、装置以及计算机设备 | |
JP2755646B2 (ja) | データ駆動型データ処理装置 | |
JP2020113050A (ja) | 動的リンク装置、動的ロード装置、計算機システム、動的リンク方法、動的ロード方法、動的リンクプログラム、および動的ロードプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121114 |
|
CF01 | Termination of patent right due to non-payment of annual fee |