CN1926509A - 利用代码共享的堆栈高速缓存 - Google Patents

利用代码共享的堆栈高速缓存 Download PDF

Info

Publication number
CN1926509A
CN1926509A CNA2004800425684A CN200480042568A CN1926509A CN 1926509 A CN1926509 A CN 1926509A CN A2004800425684 A CNA2004800425684 A CN A2004800425684A CN 200480042568 A CN200480042568 A CN 200480042568A CN 1926509 A CN1926509 A CN 1926509A
Authority
CN
China
Prior art keywords
stack
operand
instruction
operand stack
shifting function
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
Application number
CNA2004800425684A
Other languages
English (en)
Other versions
CN100461090C (zh
Inventor
J·彭
G·吴
G·-Y·吕
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1926509A publication Critical patent/CN1926509A/zh
Application granted granted Critical
Publication of CN100461090C publication Critical patent/CN100461090C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack data

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

在操作数堆栈上执行指令,包括完成从指令到线程代码的知道堆栈状态的翻译,以便确定所述指令的操作数堆栈状态,按照所述指令的操作数堆栈状态调度所述指令,并且执行所述指令。

Description

利用代码共享的堆栈高速缓存
发明背景
解释是一种广泛使用的技术,用于实现虚拟机(VM)和运行系统,优点是可移植性和可维护性。VM、运行系统及其他高级语言处理器,诸如Java处理器,包含堆栈高速缓存方案来虚拟地把字节代码映射到操作数堆栈上。一种类型的堆栈高速缓存方案,混合堆栈,可以使用物理寄存器和连续的存储区域作为操作数堆栈。在许多运行系统中解释器起重要的作用。许多现代编程语言,诸如Java、Forth、Perl和Python当它们例如在存储器/计算约束装置上编程和运行时,仍旧使用不同的解释器作为它们的执行引擎。
基于堆栈的语言解释可能依靠在其上运行指令的执行的辅助数据结构,例如,操作数堆栈。访问操作数堆栈可能涉及存储器访问。为了改善解释的性能,人们采用了不同的方法。在那些方法当中,堆栈高速缓存可以有效地接近于消除大部分对操作数堆栈的访问并能加速解释。堆栈高速缓存可能促进栈顶操作数至寄存器的转移,这会减少存储器访问的次数并造成较高的每个循环的指令数。
操纵混合堆栈的不同的状态,例如,堆栈高速缓存解释器可以为每一条VM指令维持执行代码的许多个拷贝。这样的一种设计会招致代码爆炸,它可能消耗过量的存储器并引入维护复杂性。
附图的简短说明
从以下对本发明的示范性实施例的更具体的描述中,如在附图中举例说明的,本发明的实施例的不同的示范性特征和优点将变得显而易见,附图中类似的标号一般指示相同的、在功能上类似的和/或结构上类似的单元。
图1描述按照本发明实施例的混合堆栈的示范性实施例;
图2描述按照本发明实施例的系统的示范性实施例;
图3A描述按照本发明实施例的方法的示范性实施例;
图3B描述按照本发明实施例的方法的示范性实施例;
图4描述按照本发明实施例的方法的示范性实施例;
图5描述按照本发明实施例的代码布局的示范性实施例;
图6A描述按照本发明实施例的代码布局的示范性实施例;
图6B描述按照本发明实施例的代码布局的示范性实施例;
图6C描述按照本发明实施例的代码布局的示范性实施例;
图6D描述按照本发明实施例的代码布局的示范性实施例;
图6E描述按照本发明实施例的代码布局的示范性实施例;
图6F描述按照本发明实施例的代码布局的示范性实施例;
图6G描述按照本发明实施例的代码布局的示范性实施例;以及
图7描述可以用于本发明实施例中若干部件的计算机和/或通信系统的示范性实施例。
本发明的示范性实施例的详细说明
下面详细讨论本发明的示范性实施例。尽管讨论具体的示范性实施例,但应明白,这样做只是为了举例说明的目的。相关专业的技术人员将会认识到,在不脱离本发明的精神和范围的情况下,其它的部件和配置也可以使用。
本发明的实施例可以提供用于堆栈高速缓存的代码共享机制,以避免代码重复。堆栈高速缓存方案可以使用混合的寄存器堆栈模型,亦即,虚拟地映射到字节代码(例如,Java或CLI)操作数堆栈的混合堆栈。混合堆栈可以由两个部分构成:寄存器堆栈和存储器堆栈。寄存器堆栈可以包括物理寄存器,它们可以保存操作数堆栈的几个顶部单元。存储器堆栈可以是一个连续存储区域,它可以保存所述操作数堆栈的余下的单元。
图1描述混合堆栈100的示范性实施例。如图1所示,混合堆栈100可以包括寄存器堆栈101和存储器堆栈102。
图2描述虚拟机体系结构200的示范性实施例。虚拟机体系结构200可以包括解释器201、装入器202、无用单元收集程序203、线程204和本机模块205。在本发明的示范性实施例中,解释器201可以包括算术逻辑单元(ALU)(未示出)、堆栈(未示出)和存储器(未示出)。解释器201可以使用上述部件来对指令进行译码并调用适当的功能单元来执行指令。装入器202可以负责把类文件装入存储器、对类文件进行语法分析并为解释器201准备字节代码指令。解释器201可以是VM的执行引擎,并例如,一次解释一个指令。无用单元收集程序203可以分配新的对象和回收无用的对象。在本发明的示范性实施例中,线程204可以支持应用程序编程接口(API),而本机模块205可以支持例如用于本机库函数的API。
在本发明的示范性实施例中,机器指令可以从操作数堆栈取操作数,对其进行操作并把结果送回堆栈。堆栈可以是32位堆栈,例如它可以用来向方法传送参数和接收方法的结果,以及为操作提供参数和保存操作结果。在本发明的示范性实施例中,如上所述,堆栈可以是混合堆栈。
在本发明的示范性实施例中,解释器,诸如解释器201可以保持大部分(若不是全部的话)要在寄存器堆栈而不是存储器堆栈上运行的字节代码指令。这样做可以减少存储器访问和指令的执行时间。
在本发明的示范性实施例中,解释器可能需要执行移位操作,以便维持寄存器堆栈中操作数堆栈的栈顶单元。例如,若如图3A所示一个指令消耗一个寄存器,则可以从寄存器堆栈除去栈顶寄存器R1,R2的结果值可能需要移到顶部,R3移至R2。因为存储器堆栈不是空的(寄存器堆栈下溢),位置1中的数值也可能被移至R3,以便保持寄存器堆栈装满数值。位置1取走之后,存储器堆栈指针(sp)还可能要更新为sp′。另一方面,如图3B所示,若一个指令产生一个需要推上寄存器堆栈的数值,则可能需要通过数值向下移位腾空R1,亦即R3移至位置0(寄存器堆栈溢出),R2移至R3,然后R1移至R2。
尽管本发明的实施例就下面的示例进行描述,但是所述描述只是为方便,并不是想要限制它的应用。事实上,阅读以下描述之后,相关行业的技术人员显然知道如何在替代的实施例中(例如,在公用语言运行时环境下)实现以下发明。
另外,尽管以下的描述把焦点集中在解释JAVA字节代码上,但并非想要限制本发明的用途。如何实现以下发明,对相关行业的技术人员是显而易见的。需要时,在替代的实施例中。例如,本发明的实施例可以单独使用,或与不同的虚拟机的体系结构,诸如,但不限于公用语言基础设施及其他虚拟执行系统结合使用。
图4举例说明在本发明的示范性实施例中解释器如何可以与混合堆栈一起工作。在本发明的示范性实施例中,指令,诸如字节代码指令可能要经历变为线程代码的知道堆栈状态的翻译,它可能为执行所述指令指示进入共享执行代码的入口点。
图4描述指令的例如从字节代码至共享执行代码的转变400的示范性实施例。如图4所示,在第一次解释方法之前,可以把字节代码指令401传送到知道堆栈状态的翻译器402,或由翻译器402进行解释。知道堆栈状态的翻译器402可以产生线程代码403。根据所述线程代码403,指令401可以按照所述指令的操作数堆栈状态进行调度。在本发明的示范性实施例中,当按照指令的操作数堆栈状态调度所述指令时,便可以确定进入共享执行代码的入口点404,并可以从所述入口点执行所述指令。
在本发明的示范性实施例中,可以由执行指令之后需要的移位操作次数来体现堆栈状态。如在这里使用的,η(i)表示执行指令i之后需要的移位操作次数。例如,参见图3B,在图3B中有3次移位操作。
为了举例说明参照图4所描述的方法,可以用整数加法指令iadd作示例,来解释代码共享机制的示范性实施例。在本发明的示范性实施例中,寄存器堆栈可以由2个寄存器构成,例如包括栈顶(tos)寄存器和下一个栈顶(nos)寄存器。对于指令iadd,可能会有用于执行iadd的两个可能的堆栈状态,取决于η(iadd)。图4中执行代码404的行1上的IADD_S1可以代表当η(iadd)=1时解释IADD的情况,而执行代码404行3上的IADD_S0可以对应于η(iadd)=0的情况。
考虑情况η(iadd)=1的情况,当操作数堆栈具有两个以上单元时,可能出现η(iadd)=1。换句话说,当存储器堆栈非空而寄存器堆栈已满时,可能出现η(iadd)=1。因为指令iadd消耗两个操作数(亦即,分别为tos和nos),并产生一个操作数(新的tos),为了把存储器堆栈上的顶部项目作为新的nos移动到寄存器堆栈,可能只需要一次移位操作。然后iadd指令便可以调度到IADID_S1情况(如图4所示)的行1。例如,IADD_S1情况的行2可以把存储器堆栈的顶部单元弹出至temp寄存器。然后所述执行过程可以一直掉到IADD_S0的情况,其中用寄存器的加法操作(行4)可以解释整数加法操作。例如,通过把temp移到nos,以便把操作数堆栈的顶部两个单元保持在寄存器中,行5可以重新填充nos。如这里描述的,行2和5的组合可以构成所述移位操作。
在考虑η(iadd)=0的情况时,当操作数堆栈只有两个单元(两个都是在寄存器堆栈中)时,可能出现η(iadd)=0。在这样一种情况下,可能需要no次移位操作,因为只剩下一个单元作为加法操作的结果。iadd可以调度至IADD_S0(执行之后tos将是唯一的堆栈项目)。如上面所描述的,行4可以解释整数加法操作。执行重新填充语句(行5)在那时可能变得无用和冗余,但是可能并不影响程序的正确性,因为执行IADD之后只有tos可能是合法的项目。在这样一种情况下,对于寄存器-寄存器赋值的属性而言,性能处罚可能是不重要的。
如所表示和描述的,IADD_S0和IADD_S1可以共享同一执行代码,以避免过量的代码重复。在本发明的示范性实施例中,不同的堆栈状态的执行代码和指令调度可以与综合设计布局重新使用。在这样一个实施例中,例如,在代码线程化阶段期间,每一个指令的堆栈状态都可以推算出来,然后所述指令可以直接调度到适当的执行入口,而无需运行时查表。另外,翻译阶段可以执行某些优化过程,以便改善解释序列。
图5描述按照本发明的示范性实施例的示范性代码布局500。如图5所示,OP_Sk表示具有操作码OP,并在执行i之后需要k(η(i)=k)次移位操作来维持操作数堆栈的解释入口点。例如,可以如图5所示举例说明所有VM指令的一般代码布局。
在图5中,SOk是对应于OP_Sk的移位操作的代码。执行所述操作之后,在SOk中被移位的单元可以移动到寄存器堆栈(RO)。在本发明的示范性实施例中,OP_Sk还可以执行其后续项目OP_So至OP_Sk-1的所有代码。就是说,在这样一个实施例中,可以共享代码OP_So至OP_Sk-1。ID是调用下一个指令的代码。
作为示例,考虑寄存器堆栈尺寸M=2(亦即,如上面所描述的,在寄存器堆栈中有2个寄存器)的情况。指令I的特性可以定义为[X(i),Y(i)],其中X(i)表示i消耗的操作数的数目,Y(i)表示i产生的堆栈项目的数目。图6A-6G枚举对于0≤X(i)≤M和0≤Y(i)≤M的所有可能的代码布局。作为示例,以前的iadd示例落在图6D的一类。
对于其X(i)>M或Y(i)>M的指令,可以仍旧应用类似的类型的代码布局。在本发明的示范性实施例中,当X(i)>M或Y(i)>M时,在执行代码以前,可能需要执行更多寄存器-存储器移位操作。
如图6A-6G中所示,每一个代码布局都代表特定的类[X(i),Y(i)],其中X(i)表示i消耗的操作数的数目,而Y(i)表示i产生的堆栈项目的数目。在本发明的示范性实施例中,知道堆栈状态的翻译阶段可以补充代码布局设计。在这样一个实施例中,知道堆栈状态的翻译可以在执行指令以前发生。翻译器可以以伪代码执行方式,例如,处理指令的字节代码,并为每一个指令产生适当的线程字节代码入口。在每一个执行点上,翻译器都可以意识到操作数堆栈状态和当前指令i的[X(i),Y(i)]特性。翻译器可以相应地根据静态查表或全面公式,诸如f(Depth(opstack),M,X(i),Y(i))的计算结果来推算n(i)。
在所描述的实施例中,所述知道堆栈状态的翻译的正确性可以基于以下事实:可以静态地(运行时不变)确定每一个字节代码指令以前和之后的堆栈深度。这样的翻译对于大多数字节代码指令可能只需要进行一遍。这样的实施例可以允许在翻译过程中暴露更多的优化机会。
图7描述计算机和/或通信系统的示范性实施例,可以用来把所述系统的若干部件包括在本发明的示范性实施例中。图7描述在本发明的示范性实施例中可以用于若干计算装置的计算机700的示范性实施例。计算机700可以包括(但不限于):例如,任何计算装置或通信装置,例如,包括个人计算机(PC)、工作站、移动装置、电话、手持式PC、个人数字助理(PDA)、瘦客户、肥客户、网络设备、互联网浏览器、传呼或警告装置、电视、交互式电视、接收机、调谐器、高分辨率(HD)电视、HD接收机、视频点播(VOD)系统、服务器或其它装置。
在示范性实施例中,计算机700可以包括可以耦合到总线702的中央处理单元(CPU)或处理器704。处理器704可以例如通过总线702访问主存储器706。计算机700可以是耦合到输入/输出(I/O)子系统,诸如例如访问网络726用的网络接口卡(NIC)722或调制调解器724。计算机700还可以直接通过总线702或通过例如主存储器706耦合到辅助存储器708。辅助存储器708可以包括例如盘式存储装置710或其它信息存储介质。示范性盘式存储装置710可以包括(但不限于)磁存储装置,诸如例如硬盘、光学存储装置,诸如例如只写多读(WORM)驱动器或小光盘(CD)或磁光装置。另一种类型的辅助存储器708可以包括可卸装盘存储装置712,它可以与可卸装信息存储介质714,诸如例如CD-ROM或软磁盘结合使用。一般,盘式存储装置710可以存储操作计算机系统用的应用程序,一般称作操作系统。盘式存储装置710还可以存储数据库(未示出)的文档。计算机700可以通过总线702与子系统和盘式存储装置710互相作用。总线702还可以耦合到显示器720,用作输出和输入装置,诸如,但是不限于,键盘718和鼠标或其它的指向/选择装置716。
在本说明书中举例说明和讨论的实施例只是想要向本专业的技术人员传授本发明人已知的不同的方法,以便制造和使用本发明。在本说明书中,任何东西都不应该认为是限制本发明的范围的。所提供的全部示例都是代表性的和非限制性的。在不脱离本发明的情况下,如本专业的技术人员按照上述传授会意识到的,上面描述的本发明的实施例是可以修改或改变的。因此要明白,不按已具体描述的方法也可以实施本发明。

Claims (20)

1.一种在操作数堆栈上执行指令的方法,所述方法包括:
完成所述指令至线程代码的知道堆栈状态翻译,以便确定所述指令用的操作数堆栈状态;
按照所述指令用的操作数堆栈状态调度所述指令;以及
执行所述指令。
2.如权利要求1所述的方法,其中所述完成步骤包括:
确定执行所述指令以前在所述操作数堆栈上操作数的数目;
根据所述指令消耗的操作数数目和所述指令产生的操作数数目,确定执行所述指令之后所述操作数堆栈上操作数的数目;以及
推算出执行所述指令之后维持栈顶单元所需的移位操作次数。
3.如权利要求2所述的方法,其中执行所述指令之后所需的移位操作次数基于执行所述指令以前所述操作数堆栈上操作数的数目和执行所述指令之后所述操作数堆栈上的操作数的数目。
4.如权利要求2所述的方法,其中执行所述指令之后所需的移位操作次数是根据静态查用表推算出来的。
5.如权利要求1所述的方法,其中所述操作数堆栈是混合寄存器堆栈。
6.如权利要求1所述的方法,其中所述操作数堆栈状态包括执行所述指令之后维持所述操作数堆栈的栈顶单元的移位操作次数。
7.如权利要求6所述的方法,其中所述栈顶单元包括寄存器堆栈。
8.如权利要求1的方法,其特征在于,还包括:重新填充所述操作数堆栈。
9.一种系统包括:
用于执行指令的操作数堆栈;以及
解释器,用于确定所述操作数堆栈的状态,把所述指令翻译为线程代码,以及根据所述操作数堆栈的状态调度所述指令。
10.如权利要求9所述的系统,其中所述操作数堆栈是包括寄存器堆栈和存储器堆栈的混合堆栈。
11.如权利要求10所述的系统,其中所述寄存器堆栈包括用于保持所述堆栈的至少一个相应的顶部单元的至少一个寄存器,而所述存储器堆栈包括用于保持所述操作数堆栈剩余的单元的邻接存储区域。
12.一种包含程序指令的机器可访问介质,所述程序指令当由处理器执行时使所述处理器完成一系列操作,所述一系列操作包括:
根据虚拟机指令的操作数堆栈状态把所述虚拟机指令翻译成线程代码;
按照所述操作数堆栈状态调度所述虚拟机指令;以及
执行所述指令。
13.如权利要求12所述的机器可访问介质,其中所述线程代码基于进入共享执行代码的入口点。
14.如权利要求12所述的机器可访问介质,其中还包含程序指令,所述程序指令当由所述处理器执行时使所述处理器完成另外的操作,所述另外的操作包括:
每次执行所述虚拟机指令以前,确定所述操作数堆栈上存在的操作数数目;
每次执行所述虚拟机指令之后,确定所述操作数堆栈上存在的操作数数目;以及
推算出在执行所述虚拟机指令之后保持栈顶单元所需的移位操作次数。
15.如权利要求13所述的机器可访问介质,其中执行所述指令之后所需的移位操作次数基于每次执行所述指令以前所述操作数堆栈上存在的操作数的数目和每次执行所述指令之后所述操作数堆栈上存在的操作数的数目。
16.如权利要求13所述的机器可访问介质,其中执行所述指令之后所需的移位操作次数是根据静态查用表推算出来的。
17.如权利要求12所述的机器可访问介质,其中所述操作数堆栈状态包括执行所述虚拟机指令之后维持操作数堆栈的栈顶单元的移位操作次数。
18.如权利要求17所述的机器可访问介质,其中所述栈顶单元包括寄存器堆栈。
19.如权利要求12所述的机器可访问介质,其中还包含程序指令,所述程序指令当由所述处理器执行时使所述处理器完成另外的操作,所述另外的操作包括:
执行若干次移位操作,以便把栈顶单元替换到操作数堆栈。
20.如权利要求19所述的机器可访问介质,其中所述移位操作的次数基于所述虚拟机指令所消耗的操作数堆栈上的单元的数目和所述虚拟机指令产生的单元的数目。
CNB2004800425684A 2004-03-31 2004-03-31 利用代码共享进行堆栈高速缓存的系统、方法和设备 Expired - Fee Related CN100461090C (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2004/000290 WO2005096136A1 (en) 2004-03-31 2004-03-31 Stack caching using code sharing

Publications (2)

Publication Number Publication Date
CN1926509A true CN1926509A (zh) 2007-03-07
CN100461090C CN100461090C (zh) 2009-02-11

Family

ID=35063965

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800425684A Expired - Fee Related CN100461090C (zh) 2004-03-31 2004-03-31 利用代码共享进行堆栈高速缓存的系统、方法和设备

Country Status (2)

Country Link
CN (1) CN100461090C (zh)
WO (1) WO2005096136A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103885751A (zh) * 2012-11-05 2014-06-25 辉达公司 将区别属性的存储器分配给共享数据对象的系统和方法
CN115237475A (zh) * 2022-06-23 2022-10-25 云南大学 一种Forth多核堆栈处理器及指令集

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10265311B2 (en) 2009-07-22 2019-04-23 PureTech Health LLC Methods and compositions for treatment of disorders ameliorated by muscarinic receptor activation

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE94999T1 (de) * 1984-11-21 1993-10-15 Harris Corp Mikroprozessor fuer forth-aehnliche sprache.
JPS6273335A (ja) * 1985-09-27 1987-04-04 Toshiba Corp スタツク管理方式
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US6654871B1 (en) * 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103885751A (zh) * 2012-11-05 2014-06-25 辉达公司 将区别属性的存储器分配给共享数据对象的系统和方法
CN115237475A (zh) * 2022-06-23 2022-10-25 云南大学 一种Forth多核堆栈处理器及指令集

Also Published As

Publication number Publication date
CN100461090C (zh) 2009-02-11
WO2005096136A1 (en) 2005-10-13

Similar Documents

Publication Publication Date Title
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
Chen et al. Flinkcl: An opencl-based in-memory computing architecture on heterogeneous cpu-gpu clusters for big data
JP5102758B2 (ja) 複数の発行ポートを有するプロセッサにおける命令グループを形成する方法、並びに、その装置及びコンピュータ・プログラム
US20130054546A1 (en) Hardware-based array compression
CN100435102C (zh) 在数字信号处理器内调换代码的方法及系统
Grossman et al. SWAT: A programmable, in-memory, distributed, high-performance computing platform
CN100362474C (zh) 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备
Bui et al. Weaver: integrating distributed computing abstractions into scientific workflows using python
Norman et al. Portable C++ code that can look and feel like Fortran code with yet another kernel launcher (YAKL)
Pai T et al. A systematic literature review of lexical analyzer implementation techniques in compiler design
US8374978B2 (en) Context-sensitive dynamic bloat detection system that uses a semantic profiler to collect usage statistics
Müller et al. He.. ro db: A concept for parallel data processing on heterogeneous hardware
CN1947092A (zh) 用于多处理器流水线并行性的方法和装置
Driesen Software and hardware techniques for efficient polymorphic calls
Diwase et al. Survey report on memory allocation strategies for real time operating system in context with embedded devices
CN100461090C (zh) 利用代码共享进行堆栈高速缓存的系统、方法和设备
US20050044067A1 (en) Collection processing system
US20050216900A1 (en) Instruction scheduling
Hong et al. The design of the SACLIB/PACLIB kernels
CN103631648A (zh) 一种任务处理方法及系统
Hao et al. Torchbench: Benchmarking pytorch with high api surface coverage
de Carvalho Junior et al. Contextual contracts for component‐oriented resource abstraction in a cloud of high performance computing services
US10642876B1 (en) Query processing pipeline for semi-structured and unstructured data
US7424596B2 (en) Code interpretation using stack state information
Hibbard et al. A language implementation design for a multiprocessor computer system

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: 20090211

Termination date: 20200331

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