CN102893260A - 用以作为指令评估数据值的系统和方法 - Google Patents

用以作为指令评估数据值的系统和方法 Download PDF

Info

Publication number
CN102893260A
CN102893260A CN2011800241799A CN201180024179A CN102893260A CN 102893260 A CN102893260 A CN 102893260A CN 2011800241799 A CN2011800241799 A CN 2011800241799A CN 201180024179 A CN201180024179 A CN 201180024179A CN 102893260 A CN102893260 A CN 102893260A
Authority
CN
China
Prior art keywords
instruction
equipment according
programmable counter
carry out
decoding 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.)
Granted
Application number
CN2011800241799A
Other languages
English (en)
Other versions
CN102893260B (zh
Inventor
卢西恩·科德雷斯库
埃里克·J·普隆德克
苏雷什·K·文库马汉提
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN102893260A publication Critical patent/CN102893260A/zh
Application granted granted Critical
Publication of CN102893260B publication Critical patent/CN102893260B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching

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

用以作为指令评估数据值的系统和方法
技术领域
本发明大体上涉及数据处理系统,且更具体地说,涉及在数据处理系统内评估数据值和指令。
背景技术
解释编程语言经设计以用可以在多个硬件平台上执行的源代码创建应用程序。JavaTM是一种解释编程语言,其通过产生在运行时间之前转换成称为字节代码或虚拟机指令的中间语言的源代码而实现平台独立性。这些指令通常无法被中央处理单元(CPU)直接执行。字节代码通过称为解释器软件的适合平台的机器代码在运行时间执行。为了解释每一字节代码指令,解释器程序可执行提取、解码和执行操作或指令系列。
对于虚拟机定义的每一字节代码指令,解释器软件通常包含用中央处理单元(CPU)指令表达的对应的执行程序。解释器软件可使得CPU从存储器提取或读取虚拟机指令。解释器软件可进一步使得CPU对字节代码指令的执行程序的地址进行解码。可将对CPU的控制转移给执行程序,执行程序执行指令序列,所述指令序列实行实施字节代码的操作。
执行每一字节代码的本机机器指令序列可为低效的。用于执行字节代码的其它方法包含将字节代码编译成可直接执行的本机机器代码。然而,此类“准时制”编译实施起来可为成本高且复杂的。因此,需要效率更高的解释器。
发明内容
在特定实施例中,将评估指令引入到解释器环路中。评估指令可使得处理器读取寄存器,且可作为下一个指令执行寄存器的内容。举例来说,因为评估指令而从寄存器读取的数据值可变成下一个发生的指令。作为下一个指令对寄存器的内容的执行可简化且改善解释器环路操作的效率。
在另一特定实施例中,揭示一种执行程序代码的方法。所述方法包含接收第一指令,所述第一指令包括用以识别第二指令的位置的操作数。通过程序计数器来识别第一指令。在执行第一指令后,可即刻从所述位置检索第二指令。所述方法包含在不改变程序计数器指向第二指令的情况下,将所述检索到的第二指令提供到解码单元。所述方法还包含使用解码单元对第二指令进行解码,和执行第二指令。
在另一特定实施例中,揭示另一种执行程序代码的方法。所述方法包含接收与第二指令的位置相关联的第一指令。通过程序计数器来识别第一指令。执行第一指令以识别所述位置。在执行之后即刻在不改变程序计数器指向第二指令的情况下从所述位置检索第二指令。所述方法进一步包含在处理器处执行第二指令。
在另一特定实施例中,揭示一种经配置以执行程序代码的设备。所述设备包含执行单元,所述执行单元经配置以执行与第二指令的位置相关联的第一指令。通过程序计数器来识别第一指令。所述设备还包含解码单元,所述解码单元经配置以从所述位置接收第二指令,且对第二指令进行解码以在不改变程序计数器指向第二指令的情况下产生经解码的第二指令。
在另一特定实施例中,揭示一种存储可由计算系统执行的指令的计算机可读媒体。所述指令包含用以接收与第二指令的位置相关联的第一指令的指令。通过程序计数器来识别第一指令。所述指令还包含用以执行第一指令以识别所述位置且在执行第一指令后即刻在不改变程序计数器指向第二指令的情况下从所述位置检索第二指令的指令。所述指令进一步包含用以执行第二指令的指令。
所揭示的实施例中的至少一者提供的一个特定优点是解释器操作速度和效率得到提高。所揭示的指令可用相对较低的开销在现有系统中实施。解释器环路操作可得到简化。在审阅整个申请案后,将明白本发明的其它方面、优点和特征,申请案包含以下部分:附图说明、具体实施方式和权利要求书。
附图说明
图1是包含经配置以作为一指令评估数据值的解释器的设备的特定说明性实施例的框图;
图2是能够执行解释器(例如图1的解释器)的系统的特定说明性实施例的框图,所述系统包含经配置以对从执行单元接收的指令进行解码的解码单元;
图3是解释和执行字节代码的系统的特定说明性实施例的框图;
图4是包含交错多线程处理器的系统的特定说明性实施例的框图,所述交错多线程处理器经配置以执行评估指令以使得多线程处理器作为一指令评估数据值;
图5是处理指令的方法的第一说明性实施例的流程图;
图6是处理指令的方法的第二说明性实施例的流程图;以及
图7是包含经配置以由数字信号处理器执行以作为一指令评估数据值的程序代码的电子装置的框图。
具体实施方式
参看图1,揭示了经配置以作为一指令评估数据值的设备的特定说明性实施例,且将其大体上标示为100。设备100可包含多线程处理器108,多线程处理器108耦合到存储器110和网络接口116。存储器110包含JavaTM虚拟机(JVM)解释器环路102。JVM解释器环路102包含程序环路104和评估指令程序122。存储器110进一步包含字节代码106。字节代码106大体上包含二进制文件,所述二进制文件包含适合于由JVM解释器环路102执行的程序指令。存储器110进一步包含操作系统112和一个或一个以上应用程序114。
多线程处理器108包含线程132。线程132可包含指向指令群组130的程序计数器126。第一指令124和第二指令128可包含在指令群组130内。因此,共同线程132可执行第一指令124和第二指令128两者。在一个实施例中,指令群组130可能是不可中断的。根据另一特定实施例,可在执行第二指令128之前接收到中断时取消第一指令124。
第一指令124可包含用以识别第二指令128的位置的操作数。可通过程序计数器126识别第一指令124。第一指令124可包含评估指令,所述评估指令使得多线程处理器108作为一指令评估第一指令124的数据值。第二指令128可绕过程序计数器126。
图1展示特定说明性设备100,其包含可作为一指令评估数据值的JVM解释器环路102。解释器环路102的操作可在减少的处理和更高的效率下产生转译结果。
参看图2,揭示了能够执行解释器的系统的特定说明性实施例的框图并且将其大体上标示为200。在一个实施例中,解释器可类似于图1的JVM解释器环路102。系统200包含具有第一指令204的指令高速缓存202。图2的第一指令204可与图1的第一指令124相同。第一指令204可包含待转译成适合平台的机器代码的字节代码。
指令高速缓存202可经由路径206耦合到多路复用器248,多路复用器248经由路径250耦合到解码单元208。解码单元208可经配置以对指令(例如从指令高速缓存202接收的第一指令204)进行解码。解码单元208可经由路径222耦合到执行单元218。解码单元208可进一步经由路径210将寄存器地址提供到寄存器堆212。
执行单元218可经配置以执行经由路径222从解码单元208接收的指令,以及经由总线234从寄存器堆212接收的指令。举例来说,执行单元218可经配置以执行存储在寄存器堆212内的第二指令214。在特定实施例中,第二指令214是解释器环路内的指令。举例来说,第二指令214可包含可通过图1的JVM解释器环路102执行且在JVM解释器环路102内执行的指令。图2的第二指令214可与图1的第二指令128相同。可通过程序计数器238识别第一指令204。可经由路径224将所执行的第一指令204从执行单元218输出到回写单元226。回写单元226可将所执行的第一指令204的结果经由总线228转发到寄存器堆212。
解码单元208可经配置以从寄存器堆212接收第二指令214。在替代实施例中,解码单元208可经由路径246从数据高速缓存242接收第二指令214的替代副本。在特定实施例中,可从解释性指令导出第二指令214。举例来说,第二指令214可包含可通过图1的JVM解释器环路102执行的指令。解码单元208可进一步对第二指令214进行解码以在不改变程序计数器238指向第二指令214的情况下产生经解码的第二指令。根据特定实施例,程序计数器238可能无法指向第二指令214。举例来说,在程序计数器238包含存储器地址的情况下,程序计数器238可能无法指向寄存器堆位置。
在操作中,可将第一指令204从指令高速缓存202传送到解码单元208。可通过程序计数器238识别第一指令204。解码单元208可对第一指令204进行解码且经由路径222将第一指令204传输到执行单元218。可执行经解码的第一指令204以产生结果,经由总线224将所述结果传送到回写单元226。可经由总线228将结果传送到寄存器堆212。可使用所述结果来选择第二指令214。举例来说,可执行第一指令204来产生第二指令214的位置。
因为执行第一指令204,可在解码单元208处经由总线216检索第二指令214。或者,可从数据高速缓存242检索第二指令214。举例来说,第一指令204可指定第二指令214的源位置是在可在数据高速缓存242中的在存储器中的位置,或者是含有第二指令214的寄存器。第二指令214可能先前已经从存储器加载到寄存器,或者可能已经因为先前计算而存储在寄存器处。第一指令204的执行可配置系统200以从指定位置检索第二指令214且执行第二指令214。
可在不改变程序计数器238指向第二指令214的情况下将第二指令214传递到解码单元208。解码单元208可对第二指令214进行解码。可经由路径222将经解码的第二指令从解码单元208传送到执行单元218。可将结果从执行单元218输出到回写单元226。回写单元226可经由总线228将结果传送到寄存器堆212。
图2因此展示了执行第一指令204以识别用于定位第二指令214的位置信息的解释器200。解码单元208从寄存器堆212或数据高速缓存242接收第二指令214,而不是从指令高速缓存202接收,这可能会使得转译更快速。
参看图3,揭示了经配置以解释和执行字节代码的系统的特定说明性实施例的框图并且将其大体上标示为300。系统300包含字节代码流302,字节代码流302被转译成查找表316的指令。
字节代码流302包含第一字节代码指令304、第二字节代码指令306、第三字节代码指令308和第四字节代码指令310。针对每一字节代码指令,展示了编码和助记符。举例来说,第四字节代码指令310被编码为0x03,且具有助记符Lconst 0。指针312(ByteCodePtr)规定待执行的字节代码指令。举例来说,图3中的指针312指向第二字节代码指令306且起始加载所述指令。可使用第二字节代码指令306编码(即,0x60)在查找表316处执行查找操作314。
查找表316包含条目318、320、322、324、326、328、330和332,其分别对应于编码为0x00、0x01、0x02、0x03、0x04、0x2a、0x60和0x6c的字节代码。查找表316可存储在存储器内,例如图1的存储器110。查找表316可含有用于所有可能的字节代码的条目,然而,为了解释清楚起见,仅展示了某些字节代码。条目318-332包含本机机器指令。查找表316的条目318-332可包含单个本机机器操作,例如条目318(即,无操作,或“NOP”)。或者,查找表316的条目可包含多个指令,例如包含在条目324中的本机机器操作包(即,“PUSH T”和“T=0”),所述条目对应于字节代码指令310。在另一实例中,字节代码指令306可对应于条目330,条目330包含“POP T2”和“ADDT,T2”指令两者。另外其它条目,例如条目332的“JUMP div code”指令,可使得解释器分支到一实施复杂指令的位置。
在特定实施例中,可作为不可中断的指令群组或包来处理与单个字节代码指令相关联的多个本机机器操作。举例来说,字节代码指令310可包含对应于条目324中的多个本机机器操作的JavaTM指令。可控制条目324中的多个本机机器操作的处理,以确保在处理JavaTM指令的过程中不会发生中断。
图3因此展示字节代码转译过程的逻辑图。使用查找表316来解释字节代码指令306。查找表316可包含多种类型的指令,而不是仅跳越指令。字节代码指令306可在逻辑上与查找表316的条目330相关联。转译过程可实现具有较少的跳越和相关联的分支的较少的编码。也就是说,可实现较简单的解释器环路指令,因为可执行查找表316中的指令,而不是使用分支操作来定位指令。此外,可在查找表316的单个条目内包含多个指令。举例来说,条目330包含多个本机机器操作或指令(例如算术指令)的包。可在不使用额外硬件和相关联的开销成本的情况下,用指令来动态地更新查找表316。
图4是包含交错多线程处理器的处理系统400的特定说明性实施例的框图,所述交错多线程处理器经配置以执行评估程序代码以使得多线程处理器作为一指令评估数据值。处理系统400包含存储器402,存储器402适于经由总线接口446与指令高速缓存404和数据高速缓存412通信。所述指令高速缓存404通过总线410耦合到定序器414。指令高速缓存404包含评估程序440,评估程序440可由一个或一个以上执行单元418、420、422和424执行以作为一指令评估数据值。
定序器414适于接收中断,例如通用中断416,其可从中断寄存器接收。定序器414还耦合到管理器控制寄存器432,且耦合到全局控制寄存器434。定序器414耦合到多个执行单元,例如第一指令执行单元418、第二指令执行单元420、第三指令执行单元422和第四指令执行单元424,其可用于并行执行多个指令。每一指令执行单元418、420、422和424可耦合到通用寄存器堆426。通用寄存器堆426还可经由总线430耦合到定序器414、数据高速缓存412和存储器402。
管理器控制寄存器432和全局控制寄存器434可存储多个位,可通过定序器414内的控制逻辑来存取所述多个位,以确定是否接受中断并控制指令的执行。根据特定实施例,当在执行第二指令(例如图1的第二指令128)之前接收到中断442时,可取消第一指令,例如图1的第一指令124。如图4所示,可由中断状态448来指示中断442。根据另一特定实施例,第一指令和第二指令(例如图1的第一指令124和第二指令128)可为不可中断的。
因为在执行第二指令128时不改变程序计数器,所以被记录以处置第一指令124与第二指令128之间的中断的处理器状态可能并不准确反映将执行第二指令128。处理系统400可控制第一指令124和第二指令128的执行不可中断,或者确保如果在第一指令126之后但在第二指令128之前接收到中断,可取消第一指令126且可在中断之后重新执行。
处理系统400还可控制指令的执行,所述指令可包含多个本机机器操作,例如图3的字节代码指令310(例如,JavaTM指令),其对应于条目324的多个本机机器指令,从而确保不中断地处理多个本机机器操作。因此,第一指令和第二指令可包含在不可中断的指令群组内。可从一位置(例如存储器402的规定区域438)检索一个或一个以上指令。举例来说,在执行第一指令204后,可即刻从存储器的规定区域检索图2的第二指令214。
指令高速缓存404可经由多个指令寄存器耦合到定序器414。在特定实施例中,处理系统400是交错多线程处理器,其包含多个线程。处理系统400循序地执行来自不同线程中的每一者的指令。软件线程的交错处理使得处理器能够以积极的时钟循环计时以高效率地利用硬件线程的处理能力。举例来说,在针对一个软件线程处理相对缓慢的数据读取或写入操作时,处理器可执行或者至少部分地执行来自另一软件线程的指令,而无需等待数据读取或写入操作完成。
图4的处理系统400包含经配置以执行评估程序代码的交错多线程处理器。在图1的实施例中,图4的处理系统400可用作多线程处理器108。使用多线程可允许在高速缓存未中的情况下的高效率的处理器利用,且可促进高效率地作为指令读取数据值,从而使字节代码解释加速。
图5是处理指令的方法500的特定说明性实施例的流程图。举例来说,可通过图1的设备100或图2的系统200来执行说明性方法500。
可在502处在解释器环路内接收包含用以识别第二指令的位置的操作数的第一指令。通过程序计数器来识别第一指令。举例来说,可在能够执行解释器的系统200内接收图2的第一指令204,且第一指令204包含用以识别第二指令214的位置的操作数。通过程序计数器238来识别第一指令204。
在504处可对第一指令进行解码。第一指令可以是评估指令。举例来说,可通过解码单元208对图2的第一指令204进行解码。第一指令204可以是评估指令。
在506处,在执行第一指令以识别位置后,可即刻从所述位置检索第二指令。所述位置可包含寄存器、高速缓存或存储器的规定区域。举例来说,可执行图2的第一指令204来产生第二指令214的位置。可从所产生的位置(例如,从图2的寄存器堆212内的一寄存器、从图2的数据高速缓存242、从存储器的规定区域,例如图4的规定区域438,或从另一位置)检索第二指令214。
当在图2的执行单元218处执行第一指令204之后,可即刻从所述位置检索第二指令214。第二指令可包含单个本机机器操作或多个本机机器操作的包。举例来说,图3的条目318包含单个本机机器操作。或者,图3的条目324包含本机机器操作包。
在508处,可在不改变程序计数器指向第二指令的情况下将检索到的第二指令提供到解码单元。举例来说,在不改变程序计数器238指向第二指令214的情况下,可经由总线216将图2的第二指令214提供到解码单元208。可并不使程序计数器238递增以保持第二指令214的地址,这可减少处理要求。
在510处,可使用解码单元对第二指令进行解码以产生经解码的第二指令。举例来说,可使用解码单元208对图2的第二指令214进行解码以产生经解码的第二指令,所述经解码的第二指令经由路径222被输出。在其中第二指令包含本机机器操作群组的实施例中,可例如在解码单元208处对本机机器操作群组中的每一者进行解码。
在512处,可在不改变程序计数器指向第二指令的情况下执行第二指令。举例来说,经由路径222发送到执行单元218的经解码的第二指令可由图2的执行单元218执行。执行单元218可执行单个指令,其中第二指令包含单个本机机器操作。或者,执行单元218可执行多个指令,其中第二指令包含多个本机机器操作。举例来说,在执行第二指令时,执行单元218可执行推送操作和算术操作两者。在特定实施例中,可作为单个超长指令字(VLIW)包执行对应于单个字节代码指令的多个本机机器操作,其中例如在图4的执行单元418-424处并行执行VLIW包的多个或所有指令。可在执行第二指令之后改变程序计数器。
图5说明用于以使得能够作为一指令来评估数据值的方式来执行程序代码的过程。举例来说,可从执行单元而不是指令高速缓存接收下一指令。通过图5的方法500实现的效率可提高解释器转译速度。
图6是处理指令的方法600的特定说明性实施例的流程图。如本文所述,可通过图1的设备100或图2的系统200来执行说明性方法600。
在602处,可接收与第二指令的位置相关联的第一指令,其中通过程序计数器来识别第一指令。举例来说,可接收图2的第一指令204,其暗示第二指令214的位置。可提供程序计数器238识别第一指令204。
在604处,可在处理器处执行第一指令以识别第二指令的位置,且在执行后,可即刻在不改变程序计数器指向第二指令的情况下从所述位置检索第二指令。举例来说,可在在多线程处理器处执行第一指令204后即刻检索图2的第二指令214。可在不改变程序计数器238指向第二指令214的情况下检索图2的第二指令214。
可在606处执行第二指令。举例来说,经由路径222发送到执行单元218的第二指令214可由图2的执行单元218执行。执行单元218可执行单个指令,其中第二指令214包含单个本机机器操作。或者,执行单元218可执行多个本机机器操作,其中第二指令214包含多个本机机器操作。举例来说,在执行第二指令214时,执行单元218可执行推送操作和算术操作两者。
图7是通信装置700的特定说明性实施例的框图,通信装置700包含数字信号处理器(DSP)710,数字信号处理器(DSP)710包含解释器指令评估程序代码764以转译一个或一个以上字节代码,如图1到6所描述。图7还展示显示器控制器726,显示器控制器726耦合到数字信号处理器710和显示器728。此外,输入装置730耦合到DSP 710。编码器/解码器(CODEC)734也可耦合到DSP 710。扬声器736和麦克风738可耦合到CODEC 734。摄像机760经配置以捕获静态图片、运动视频或这两者,可经由相机接口768耦合到DSP 710。带有其解释器指令评估程序代码764的DSP 710可如先前所描述来处理字节代码。
图7还指示无线接口740可耦合到DSP 710且耦合到无线天线742。在特定实施例中,电源744耦合到系统芯片722。另外,在特定实施例中,如图7中所说明,显示器728、输入装置730、扬声器736、麦克风738、无线天线742和电源744处于系统芯片722的外部。然而,每一者均耦合到系统芯片722的组件。
应了解,虽然可将解释器指令评估程序代码764描绘为DSP 710的组件或由DSP 710执行,但是解释器指令评估程序代码764可另外集成到DSP 710的其它组件中,显现为与DSP 710分开的组件,或其它情况。
所属领域的技术人员将进一步了解,可将结合本文所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。上文已大体在其功能性方面描述了各种说明性组件、块、配置、模块、电路和步骤。所述功能性是实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但所述实施方案决策不应被解释为导致偏离本发明的范围。
结合本文中所揭示的实施例而描述的方法或算法的过程可直接体现于硬件中、由处理器执行的软件模块中或两者的组合中。举例来说,适合执行实施例的装置可从机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、个人数字助理(PDA)、固定位置数据单元和计算机中进行选择,执行单元和解码单元集成到所述装置中。
软件模块可驻存在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸磁盘、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得所述处理器可从存储媒体读取信息和向存储媒体写入信息。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。在替代方案中,处理器和存储媒体可作为离散组件驻留在计算装置或用户终端中。
提供对所揭示的实施例的以上描述以使得所属领域的技术人员能够制造或使用所揭示的实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将为显而易见的,且可在不偏离本发明的范围的情况下将本文中所界定的原理应用于其它实施例。因此,并不希望本发明限于本文中展示的实施例,而应被赋予与由所附权利要求书界定的原理和新颖特征相一致的可能的最广范围。

Claims (33)

1.一种执行程序代码的方法,所述方法包括:
接收包括用以识别第二指令的位置的操作数的第一指令,其中通过程序计数器识别所述第一指令;
在执行所述第一指令以识别所述位置后即刻从所述位置检索所述第二指令;
在不改变所述程序计数器指向所述第二指令的情况下,将所述检索到的第二指令提供到解码单元;
使用所述解码单元对所述第二指令进行解码;以及
执行所述第二指令。
2.根据权利要求1所述的方法,其进一步包括在执行所述第二指令之后改变所述程序计数器。
3.根据权利要求1所述的方法,其中从经解释的指令导出所述第二指令。
4.根据权利要求1所述的方法,其中所述第二指令包括多个本机机器操作的包。
5.根据权利要求1所述的方法,其中所述第二指令是单个指令。
6.根据权利要求1所述的方法,其中所述第二指令是跳越指令和算术指令中的至少一者。
7.根据权利要求1所述的方法,其中所述第一指令是解释器环路内的指令。
8.根据权利要求1所述的方法,其中所述第一指令是评估指令。
9.一种执行程序代码的方法,所述方法包括:
接收与第二指令的位置相关联的第一指令,其中通过程序计数器识别所述第一指令;
在处理器处执行所述第一指令以识别所述位置,且在执行后即刻在不改变所述程序计数器指向所述第二指令的情况下从所述位置检索所述第二指令;以及执行所述第二指令。
10.根据权利要求9所述的方法,其进一步包括将所述所执行的第二指令的结果写入到存储器。
11.根据权利要求9所述的方法,其中所述第二指令是跳越指令和算术指令中的至少一者。
12.根据权利要求9所述的方法,其中所述位置是寄存器。
13.根据权利要求9所述的方法,其中所述位置是存储器的规定区域。
14.根据权利要求9所述的方法,其进一步包括在执行所述第一指令之前对所述第一指令进行解码。
15.一种用以执行程序代码的设备,所述设备包括:
执行单元,其经配置以执行与第二指令的位置相关联的第一指令,其中通过程序计数器识别所述第一指令;以及
解码单元,其经配置以从所述位置接收所述第二指令,且对所述第二指令进行解码以在不改变所述程序计数器指向所述第二指令的情况下产生经解码的第二指令。
16.根据权利要求15所述的设备,其中所述执行单元进一步经配置以起始从所述位置检索所述第二指令。
17.根据权利要求15所述的设备,其中所述位置是寄存器和数据高速缓存中的至少一者。
18.根据权利要求15所述的设备,其中所述程序计数器无法指向所述第二指令。
19.根据权利要求15所述的设备,其中所述第二指令是跳越指令和算术指令中的至少一者。
20.根据权利要求15所述的设备,其中所述第二指令是从经解释的指令导出。
21.根据权利要求15所述的设备,其中所述第二指令包括多个本机机器操作的包。
22.根据权利要求15所述的设备,其中所述第二指令是单个指令。
23.根据权利要求15所述的设备,其进一步包括经配置以接收所述所执行的第二指令的结果的寄存器。
24.根据权利要求15所述的设备,其中所述第一指令是评估指令。
25.根据权利要求15所述的设备,其中所述第一指令和所述第二指令包括不可中断的指令群组。
26.根据权利要求15所述的设备,其中所述第一指令和所述第二指令是由共同线程执行。
27.根据权利要求15所述的设备,其中所述第一指令当在执行所述第二指令之前接收到中断时被取消。
28.根据权利要求15所述的设备,其中所述经解码的第二指令是由所述执行单元执行。
29.根据权利要求15所述的设备,其进一步包括选自由机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、个人数字助理PDA、固定位置数据单元和计算机组成的群组的装置,所述执行单元和所述解码单元集成到所述装置中。
30.一种存储指令的计算机可读媒体,所述指令可由计算系统执行以:
接收与第二指令的位置相关联的第一指令,其中通过程序计数器识别所述第一指令;
执行所述第一指令以识别所述位置,且在执行后即刻在不改变所述程序计数器指向所述第二指令的情况下从所述位置检索所述第二指令;以及
执行所述第二指令。
31.根据权利要求30所述的计算机可读媒体,其中所述指令进一步可由所述计算系统执行以将所述所执行的第二指令的结果写入到寄存器。
32.根据权利要求30所述的计算机可读媒体,其中所述第二指令是跳越指令和算术指令中的至少一者。
33.根据权利要求30所述的计算机可读媒体,其中所述位置是寄存器和存储器的规定区域中的至少一者。
CN201180024179.9A 2010-05-24 2011-05-23 用以作为指令评估数据值的系统和方法 Expired - Fee Related CN102893260B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/785,551 2010-05-24
US12/785,551 US9361109B2 (en) 2010-05-24 2010-05-24 System and method to evaluate a data value as an instruction
PCT/US2011/037537 WO2011149828A1 (en) 2010-05-24 2011-05-23 System and method to evaluate a data value as an instruction

Publications (2)

Publication Number Publication Date
CN102893260A true CN102893260A (zh) 2013-01-23
CN102893260B CN102893260B (zh) 2015-11-25

Family

ID=44343680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180024179.9A Expired - Fee Related CN102893260B (zh) 2010-05-24 2011-05-23 用以作为指令评估数据值的系统和方法

Country Status (6)

Country Link
US (1) US9361109B2 (zh)
EP (1) EP2577464B1 (zh)
JP (2) JP5759537B2 (zh)
KR (1) KR101497346B1 (zh)
CN (1) CN102893260B (zh)
WO (1) WO2011149828A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802854B2 (en) 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
WO2021036173A1 (zh) * 2019-08-30 2021-03-04 创新先进技术有限公司 解释执行字节码指令流的方法及装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140281368A1 (en) * 2013-03-14 2014-09-18 Qualcomm Incorporated Cycle sliced vectors and slot execution on a shared datapath
JP6136541B2 (ja) * 2013-04-30 2017-05-31 大日本印刷株式会社 情報記憶媒体及びバイトコード実行方法
WO2017074377A1 (en) * 2015-10-29 2017-05-04 Intel Corporation Boosting local memory performance in processor graphics

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821183A (en) * 1986-12-04 1989-04-11 International Business Machines Corporation A microsequencer circuit with plural microprogrom instruction counters
US6044220A (en) * 1997-02-25 2000-03-28 Motorola, Inc. Method and apparatus for operating a data processor to execute software written using a foreign instruction set
TW200421174A (en) * 2003-04-04 2004-10-16 Advanced Risc Mach Ltd Controlling execution of a block of program instructions within a computer processing system
US20070169022A1 (en) * 2003-06-18 2007-07-19 Jones Anthony M Processor having multiple instruction sources and execution modes

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5842891B2 (ja) 1975-10-15 1983-09-22 株式会社東芝 メイレイセイギヨホウシキ
JPS54943A (en) 1977-06-06 1979-01-06 Panafacom Ltd Data processor
US4495563A (en) * 1981-07-02 1985-01-22 Texas Instruments Incorporated Microcomputer having separate access to complete microcode words and partial microcode words
US4635194A (en) 1983-05-02 1987-01-06 International Business Machines Corporation Instruction buffer bypass apparatus
JPS60181837A (ja) 1984-02-29 1985-09-17 Fujitsu Ltd エクスキユ−ト命令処理方式
JPH0287237A (ja) 1988-09-22 1990-03-28 Fujitsu Ltd Execute命令制御方式
JP3105110B2 (ja) 1993-05-20 2000-10-30 株式会社東芝 演算装置
US5796974A (en) 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
JP3663710B2 (ja) * 1996-01-17 2005-06-22 ヤマハ株式会社 プログラムの生成方法およびプロセッサの割込制御方法
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US20040215444A1 (en) 2002-03-25 2004-10-28 Patel Mukesh K. Hardware-translator-based custom method invocation system and method
US7954102B2 (en) * 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
US7882336B2 (en) 2007-02-01 2011-02-01 International Business Machines Corporation Employing a buffer to facilitate instruction execution
US7895419B2 (en) 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821183A (en) * 1986-12-04 1989-04-11 International Business Machines Corporation A microsequencer circuit with plural microprogrom instruction counters
US6044220A (en) * 1997-02-25 2000-03-28 Motorola, Inc. Method and apparatus for operating a data processor to execute software written using a foreign instruction set
TW200421174A (en) * 2003-04-04 2004-10-16 Advanced Risc Mach Ltd Controlling execution of a block of program instructions within a computer processing system
US20070169022A1 (en) * 2003-06-18 2007-07-19 Jones Anthony M Processor having multiple instruction sources and execution modes

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802854B2 (en) 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
WO2021036173A1 (zh) * 2019-08-30 2021-03-04 创新先进技术有限公司 解释执行字节码指令流的方法及装置

Also Published As

Publication number Publication date
WO2011149828A1 (en) 2011-12-01
EP2577464B1 (en) 2017-08-16
US20110289299A1 (en) 2011-11-24
US9361109B2 (en) 2016-06-07
CN102893260B (zh) 2015-11-25
EP2577464A1 (en) 2013-04-10
KR20130045276A (ko) 2013-05-03
KR101497346B1 (ko) 2015-03-03
JP2015133129A (ja) 2015-07-23
JP5759537B2 (ja) 2015-08-05
JP2013527534A (ja) 2013-06-27
JP6073392B2 (ja) 2017-02-01

Similar Documents

Publication Publication Date Title
KR101817397B1 (ko) 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈
US7203932B1 (en) Method and system for using idiom recognition during a software translation process
KR101607549B1 (ko) 명령어의 제어 흐름 추적
US5944841A (en) Microprocessor with built-in instruction tracing capability
JP3499252B2 (ja) コンパイル装置及びデータ処理装置
KR101381274B1 (ko) 효율적인 동적 이진 변환을 위한 레지스터 매핑 방법, 시스템 및 컴퓨터 판독가능 저장 매체
TWI474191B (zh) 控制暫存器對應於異質指令集架構處理器
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
JP5218998B2 (ja) バッファを用いて高効率でロード処理を実行する方法およびプログラム
JP5313228B2 (ja) 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア
US6301705B1 (en) System and method for deferring exceptions generated during speculative execution
US20090138685A1 (en) Processor for processing instruction set of plurality of instructions packed into single code
KR20040111163A (ko) 명령의 시맨틱의 동적 변경
CN102893260B (zh) 用以作为指令评估数据值的系统和方法
JP2003510681A (ja) 仮想マシン命令の最適化されたバイトコードインタープリタ
US8549266B2 (en) System and method of instruction modification
EP1754142B1 (en) Microprocessor and method of instruction alignment
US7228528B2 (en) Building inter-block streams from a dynamic execution trace for a program
US9158545B2 (en) Looking ahead bytecode stream to generate and update prediction information in branch target buffer for branching from the end of preceding bytecode handler to the beginning of current bytecode handler
JP2004086837A (ja) データ処理装置
US20080270759A1 (en) Computer Having Dynamically-Changeable Instruction Set in Real Time
JP2004527824A (ja) データプロセッサ及び処理方法
JP2005267640A (ja) 機能を呼び出す方法と装置
EP4016288A1 (en) Isa opcode parameterization and opcode space layout randomization
US7260705B2 (en) Apparatus to implement mesocode

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

Termination date: 20200523

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