CN103748549B - 用于经频繁调用函数的表调用指令 - Google Patents
用于经频繁调用函数的表调用指令 Download PDFInfo
- Publication number
- CN103748549B CN103748549B CN201280040631.5A CN201280040631A CN103748549B CN 103748549 B CN103748549 B CN 103748549B CN 201280040631 A CN201280040631 A CN 201280040631A CN 103748549 B CN103748549 B CN 103748549B
- Authority
- CN
- China
- Prior art keywords
- instruction
- function
- immediate value
- address
- equipment
- 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.)
- Active
Links
- 230000006870 function Effects 0.000 claims description 147
- 238000000034 method Methods 0.000 claims description 30
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
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)
- Advance Control (AREA)
Abstract
一种设备包含存储器,所述存储器存储包含操作码和操作数的指令。所述操作数指定立即值或存储所述立即值的寄存器的寄存器指示符。所述立即值可用于识别函数调用地址。所述函数调用地址可从多个函数调用地址中选择。
Description
技术领域
本发明大体上涉及用于经频繁调用函数的表调用指令。
背景技术
技术的进步已经带来更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如较小、轻重量且易于由用户携带的便携式无线电话、个人数字助理(PDA)和寻呼装置。更具体来说,便携式无线电话(例如,蜂窝式电话和因特网协议(IP)电话)可经由无线网络传递语音和数据包。此外,许多此类无线电话包含并入其中的其它类型装置。举例来说,无线电话还可包含数字静态相机、数字摄像机、数字记录器和音频文件播放器。而且,此类无线电话可处理可执行指令,其包含可用以接入因特网的软件应用程序,例如,网页浏览器应用程序。因而,这些无线电话可包含显著的计算能力。
随着例如无线电话等电子装置的计算能力的提高,用于实施各种应用程序的函数的数目可显著地增大。当应用程序是经编译且链接的时,输出代码的大部分可为函数调用且可导致较大的总体代码大小。
发明内容
揭示了包含操作码和操作数的基于表的函数调用指令。所述操作数可指定立即值,其中所述立即值识别特定函数的函数调用地址的位置。或者,所述操作数可指定寄存器的寄存器指示符,且所述函数调用地址的位置可存储在所述寄存器中而不是被直接编码到指令中。所述函数调用地址可从存储在表中的多个函数调用地址中选择。可产生函数调用地址的表且所述表可基于对应于包含在所述表中的函数调用地址的函数被调用的频繁程度来分类。所述表可在链接时间期间或者在编译时间产生和分类。当表调用指令的长度小于通用函数调用指令的长度时,可实现代码大小的减小。
作为实例,32位通用函数调用指令可包含8位操作码和24位地址或地址偏移。在应用程序的编译(或链接)期间,编译器(或链接器)可识别应用程序的16个最经频繁调用函数。可产生包含那16个函数的函数调用地址的表,且所述表可使用4位表索引来标引。函数的函数调用地址可为函数的第一指令的地址(即,当函数被调用时“跳转到”的地址)。用于调用16个最经频繁调用函数的通用函数调用指令可用本文揭示的表调用指令来替换,且处理所述表调用指令可加载且跳转到从所述表检索的适当的函数调用地址。举例来说,表调用指令可为包含4位操作码和4位操作数的8位指令。当4位操作数是立即值时,所述4位操作数可表示到函数调用地址的16条目表的索引。当4位操作数是寄存器指示符时,所述4位操作数可指定16个寄存器中的在所述表中存储偏移的一个寄存器。因此,每次通用32位函数调用指令由8位表调用指令替换时可实现24位的节省。应注意存储在所述表中的函数调用地址的数目可小于或大于16。在一些实施方案中,所述表可存储在基于高速缓冲存储器的存储器中,且特殊寄存器(例如,存储全局指针的寄存器)可用于存取所述表。
在特定实施例中,一种设备包含存储指令的存储器。所述指令包含操作码和操作数。所述操作数指定立即值或存储所述立即值的寄存器的寄存器指示符。所述立即值可用于识别从多个函数调用地址中选择的函数调用地址。
在另一特定实施例中,一种方法包含在处理元件处处理指令以产生操作码和操作数。所述操作码识别表函数调用指令,且所述操作数识别立即值或存储所述立即值的寄存器的寄存器指示符。所述立即值可用于识别可从多个函数调用地址中选择的函数调用地址。所述方法包含使用所述立即值作为到表中的索引以识别所述函数调用地址。
在另一特定实施例中,非暂时性计算机可读媒体包含程序代码,所述程序代码在由处理器执行时致使处理器从指令代码产生操作码和操作数。所述操作码识别表函数调用指令。所述操作数指定立即值或存储所述立即值的寄存器的寄存器指示符。所述立即值可用以识别可从多个函数调用地址中选择的函数调用地址。所述非暂时性计算机可读媒体进一步包含程序代码,所述程序代码在由处理器执行时致使处理器使用所述立即值作为到表中的索引以识别函数调用地址且跳转到所述识别的函数调用地址。
在另一特定实施例中,一种设备包含用于存储指令的装置以及用于处理所述指令以产生操作码和操作数的装置。所述操作数指定立即值或存储所述立即值的寄存器的寄存器指示符。所述立即值可用以识别可从多个函数调用地址中选择的函数调用地址,且所述用于处理的装置跳转到所述识别的函数调用地址。
所揭示的实施例中的至少一者提供的一个特定优点是总体代码大小的减小。嵌入式低成本应用程序可受益于较小的代码大小。举例来说,调制解调器软件、嵌入无线装置中的软件以及其它软件处理环境可受益于减小的代码大小。因此,可有利的是减小具有许多函数调用的软件的代码大小。另一特定优点是由于较小的代码尺寸而减少的存储器使用和装置中的功率消耗的减少。
在审阅整个申请案后,本发明的其它方面、优点和特征将变得显而易见,整个申请案包含以下部分:附图说明、具体实施方式和权利要求书。
附图说明
图1是可操作以存储和处理表调用指令的系统的特定说明性实施例的方框图;
图2是说明图1的系统的操作的第一图;
图3是说明图1的系统的操作的第二图;
图4是说明图1的系统的操作的第三图;
图5是处理表调用指令的方法的特定说明性实施例的流程图;以及
图6是包含处理器的无线装置的方框图,所述处理器可操作以执行表调用指令。
具体实施方式
表调用指令可包含可用作到表中的索引的操作码和操作数。所述操作数可指定立即值或存储所述立即值的寄存器的寄存器指示符,其中所述立即值可用以从所述表中识别函数调用地址。所述表可存储经频繁调用指令的函数调用地址,且处理所述表调用指令可包含加载且跳转到由立即值识别的函数调用地址。当操作码和操作数的组合占据比通用函数调用指令少的位时,可以实现代码大小的节省。
参考图1,揭示了可操作以对表调用指令180进行存储和处理的系统的特定说明性实施例并大体上将所述实施例指定为100。系统100可包含经由总线接口108耦合到指令高速缓冲存储器110的存储器102。在特定实施例中,系统100的全部或一部分可集成到处理器中。
表调用指令180可包含操作码和操作数。在特定实施例中,所述操作数指定立即值(例如,数字常量),如同在图2到4中进一步图解说明。所述立即值可用于识别具有函数调用地址的特定函数,所述函数调用地址可从存储在表(例如,说明性表190)中的多个函数调用地址中选择。存储在所述表中的所述函数调用地址可对应于应用程序的经频繁调用函数。所述立即值可为表示所述表中的函数调用地址的索引位置的整数常量。举例来说,用于表的第三行的表调用指令可为“TC#3”,其中‘TC’是操作码且‘#3’是操作数(即,立即值)。或者,当表的第一行是索引0而不是索引1时,用于第三行的表调用指令可为“TC#2”。
或者,所述操作数可指定存储所述立即值的寄存器的寄存器指示符。举例来说,表调用指令可为“TC r1”,其中寄存器r1存储立即值3。
存储器102可经由总线接口108将表调用指令180传输给指令高速缓冲存储器110。数据高速缓冲存储器112也可经由总线接口108耦合到存储器102。数据高速缓冲存储器112可包含经频繁调用函数的表190。表190可在链接时间或在编译时间期间产生和分类。在特定说明性实施例中,表190包含位于表的顶部的最经频繁调用函数(例如,调试函数和恢复函数)的地址,且表190是按使用频率的依次递减顺序分类的(例如,如通过编译器或链接器所确定)。表调用指令180与通用函数调用指令、通用跳转指令或通用分支指令相比可用较少位来创建,因为表调用指令180可指向包含待调用函数的地址的表190。表调用指令180不同于通用分支指令且不同于指令集的通用跳转指令。较不频繁调用函数可使用通用分支或跳转指令来调用,而较频繁调用函数可使用表调用指令180来调用。此外,表190可为固定的或可在系统100处执行应用程序期间动态更新。
指令高速缓冲存储器110可经由总线111耦合到定序器114。定序器114可接收通用中断116,所述中断可从中断寄存器(未图示)中检索。在特定实施例中,指令高速缓冲存储器110可经由多个当前指令寄存器(未图示)耦合到定序器114,所述当前指令寄存器可耦合到总线111且与处理器100的特定线程(例如,硬件线程)相关联。在特定实施例中,处理器100可为包含六(6)个线程的内插多线程处理器。
在特定实施例中,总线111可为一百二十八位(128位)总线且定序器114可经配置以经由具有每个为三十二(32)位的长度的指令包(例如,包含一个或一个以上表调用指令180的VLIW指令包)从存储器102检索指令。总线111可耦合到第一指令执行单元118、第二指令执行单元120、第三指令执行单元122,以及第四指令执行单元124。每一指令执行单元118、120、122和124可经由第一总线128耦合到通用寄存器堆126。通用寄存器堆126还可经由第二总线130耦合到定序器114、数据高速缓冲存储器112以及存储器102。
系统100还可包含监督控制寄存器132以及全局控制寄存器134以存储可由定序器114内的控制逻辑存取以确定是否接受中断(例如,通用中断116)和控制指令执行的位。
在特定实施例中,执行单元118、120、122和124中的任一者可执行表调用指令180以产生操作码和操作数。所述操作码可指示正被处理的指令是表调用指令且所述操作数可指定立即值或存储所述立即值的寄存器指示符。所述立即值可用作到表190中的索引(例如,用以识别用于待调用的特定函数的地址)。在特定实施例中,表调用指令180的大小可小于或等于24位、16位或8位。多个表调用指令180可包含在VLIW包中且可由执行单元118、120、122和124在同一时钟周期中并行执行。
因此图1的系统100说明可用比通用函数调用、分支指令或跳转指令少的位创建的表调用指令180,其得到代码大小的总体减小以及归因于代码大小减小的功率消耗减少。
图2到4描绘了在图1的系统100的操作的三个实例。参考图2,揭示了在图1的系统100的操作的第一说明性实例并且大体上将所述实例指定为200。
在操作期间,图1的执行单元118、120、122或124中的特定一者可执行表调用指令180以产生操作码282和操作数284,所述操作数指定存储立即值244(例如,‘4’)的寄存器240(例如,R1)的寄存器指示符。在图2所说明的实施例中,表调用指令180是一字节指令(即,8位),其中4位表示操作码282且4位表示操作数284(即,4位寄存器指示符)。举例来说,所述4位操作数可指定16(即,24)个寄存器中可存储立即值的一个寄存器,其中所述立即值表示到函数调用地址的16条目表190的索引。或者,4位操作数可直接指定立即值,如在图3到4中所示。因此,包含16(即,24)个经频繁调用函数的函数调用地址表190可使用4位操作数284来标引。在特定实施例中,所述函数调用地址可按依次递减的顺序存储,其中索引0对应于最经频繁调用函数(例如,图2中的“memcpy”,其具有函数调用地址0x1111)。
表190可在链接时间期间或在编译时间创建。在特定实施例中,表190可在应用程序执行期间动态更新。举例来说,执行单元118到124中的任一者可动态地更新表190。在另一特定实施例中,表190可为固定的。在从操作数284产生立即值244(例如,‘4’)之后(例如,在寄存器存取之后),函数调用地址(例如,0x5555)可基于立即值‘4’而识别。图1的特定执行单元118到124可跳转到所识别的函数调用地址。举例来说,跳转到函数调用地址0x5555可包含获取或预先获取“_restore_regs_return”函数的一个或一个以上指令(例如,起始于地址0x5555)到图1的指令高速缓冲存储器110中。在特定实施例中,跳转到函数调用地址在表调用指令180的处理期间发生。
因此将理解,函数越常用,在使用表调用指令180调用所述函数时的代码节省越多。举例来说,对“_restore_regs_return”函数的通用调用可包含至少32个位,包含8个操作码位以及表示十六进制地址0x5555(即,_restore_regs_return函数的地址)的24个位。通过用表调用指令180来替换通用调用,可实现每次调用的24位的节省。
参考图3,揭示了在图1的系统100的操作的第二说明性实例且大体上将所述实例指定为300。在操作期间,图1的执行单元118、120、122或124中的特定一者可执行表调用指令180以产生操作码282和操作数384,所述操作数指定立即值(例如,‘5’)。在图3所说明的实施例中,表调用指令180是二字节指令(即,16位),其中4位表示操作码282且12位表示指定立即值的操作数384(即,12位表索引)。因此,表190可包含4096(即,212)个经频繁调用函数且可使用12位立即值384来标引。举例来说,如在图3中所说明的,4096个经频繁调用函数可按依次递减的顺序存储,其中索引0对应于最经频繁调用的函数(例如,图3中的“memcpy”,其具有函数调用地址0x1111)。
图3说明一实施例,其中表190是使用全局指针392存取的。举例来说,表190可存储在全局偏移表中,所述全局偏移表存储在存储器的全局数据部分内。所述全局偏移表可支持位置独立的代码执行。全局指针392可指向表190的第一元素,如图3中所说明的。通过操作数384指定的立即值可用作从全局指针392的偏移。举例来说,立即值可为‘5’且表索引386可通过将‘5’添加到全局指针392从而导致从表190的函数调用地址0x6666(例如,对应于“debug_msg”函数)的检索来识别。全局指针392可识别存储器102的全局数据部分中对应于表190的顶部的位置。另外,表190可为存储在存储器102中的全局偏移表内的可选择函数调用表且所述立即值可与所述可选择函数调用表的表索引相关联。全局偏移表可支持位置独立的代码执行(即,在链接时间不知道符号的地址的情况下建构的代码,例如,用于共享库)。
如图3所示,特定表索引386可通过使用立即值(例如,5)作为相对于由全局指针392表示的索引(例如,0)的偏移(例如,从全局指针392的正偏移)来计算。为了说明,表索引386可为立即值加上全局指针392,如图3所示。图1的特定执行单元118到124可跳转到所识别的函数调用地址。举例来说,跳转到函数调用地址0x6666可包含获取或预先获取“debug_msg”函数的一个或一个以上指令(例如,起始于地址0x6666)到图1的指令高速缓冲存储器110中。在特定实施例中,跳转到函数调用地址在表调用指令180的处理期间发生。
参考图4,揭示了在图1的系统100的操作的第三实例且大体上将所述实例指定为400。与图3中所说明的实施例相比,图4中所说明的实施例描绘了存储器中指向邻近于但不包含表190的位置的全局指针392。
全局指针392可识别(即,指向)存储器102的与表190不相关的全局数据部分。举例来说,全局指针可指向索引位置0,所述索引位置与表190不相关且存储全局数据(例如,“global data1”)的地址(例如,地址0xAAAA)。如图4中所示,可通过使用立即值(例如,4)作为从全局指针392的偏移(例如,负偏移)来计算特定的表索引486。在此实施例中,可从全局指针392值中减去立即值以找到特定函数调用地址的位置。
为了说明,立即值可为‘4’,且函数调用地址0x2222(例如,对应于“_save_callee_regs”函数)可通过从全局指针392值减去立即值(即,‘4’)来识别。处理表调用指令180的图1的特定执行单元118到124随后可跳转到所识别函数调用地址。举例来说,跳转到函数调用地址0x4444可包含将“_save_callee_regs”函数的指令(例如,起始于地址0x4444)获取或预先获取到图1的指令高速缓冲存储器110中。
因此图2到4描绘了处理表调用指令的各种实例。当表调用指令的大小小于用以识别表调用指令的地址(例如,可存储在当前指令指针中的调用表190的指令的地址)与用于所识别函数的函数调用地址之间的差的位数目时,可实现较致密的或较小的代码大小。为了说明,如果表调用指令与所识别函数的地址隔开了超过2兆字节(即,距离不能以24位或更少的位表示),那么在表调用指令的大小为24位或更小的情况下表调用指令可导致较致密的代码。相对于多字指令,表调用指令的大小可小于多字指令的执行函数调用的部分的地址与经调用函数的地址之间的差。因此,操作码和立即值的组合长度可比通用函数调用指令短,从而导致指令高速缓冲存储器的性能得到改进、用于调用函数的带宽得到节省以及装置中的功率消耗减少。
参考图5,描绘了处理指令以产生操作码和操作数的方法的特定说明性实施例的流程图,并且所述方法大体上指定为500。在说明性实施例中,方法500可在图1的系统100执行且可参考图2到4进行说明。
方法500可包含在510处在处理元件处接收指令。举例来说,在图1中,表调用指令180可在执行单元118到124中的一者处接收。方法500还可包含在520处处理所述指令以产生操作码和操作数,所述操作数指定立即值或存储所述立即值的寄存器指示符。举例来说,在图1中,表调用指令180可由执行单元118到124中的一者处理以产生操作码和操作数(例如,在指令解码阶段期间)。在说明性实施例中,所述操作码可为图2到4的4位操作码282且所述操作数可为图2的4位操作数284或图3到4的12位操作数384。
方法500可进一步包含在530处使用立即值作为到表中的索引以识别用于函数的地址。所述表可存储用于经频繁调用函数的地址。举例来说,在图1中,可通过使用表调用指令180的立即值作为表索引从经频繁调用函数的表190检索地址。在特定实施例中,所述立即值可为到表190中的直接索引,如在图2中所说明。或者,所述索引可通过使用立即值作为相对于全局指针的偏移来计算,如在图3到4中所说明。方法500还可包含在540处跳转到用于函数的地址。随后可执行所述函数,如同已使用通用函数调用指令调用了所述函数。
参考图6,描绘了包含存储器的无线装置的特定说明性实施例的方框图,所述存储器存储包含操作码和操作数的指令,且大体上将所述实施例指定为600。装置600包含处理器,例如,耦合到存储器632的数字信号处理器(DSP)664。指令高速缓冲存储器(例如,说明性指令高速缓冲存储器110)和数据高速缓冲存储器(例如,说明性数据高速缓冲存储器112)也可耦合到存储器632且耦合到DSP664。在特定实施例中,存储器632将例如表调用指令180等可由DSP664执行的指令存储且传输到指令高速缓冲存储器110。在处理时,表调用指令180可产生操作数(例如,立即值),所述操作数被用作索引以从存储在数据高速缓冲存储器112中的经频繁调用函数的表190检索特定的函数调用地址。在检索特定的函数调用地址后,DSP664或其组件可即刻跳转到特定的函数调用地址(例如,以开始执行对应的函数)。
图6还展示耦合到DSP664且耦合到显示器628的显示器控制器626。译码器/解码器(CODEC)634也可耦合到DSP664。扬声器636和麦克风638可耦合到CODEC634。图6还指示可耦合到DSP664且耦合到无线天线642的无线控制器640。在特定的实施例中,DSP664、显示器控制器626、存储器632、CODEC634和无线控制器640包含于系统级封装或芯片上系统装置622中。
在特定的实施例中,输入装置630和电源644耦合到芯片上系统装置622。此外,在特定的实施例中,如图6中所说明,显示器628、输入装置630、扬声器636、麦克风638、无线天线642和电源644在芯片上系统装置622外部。然而,显示器628、输入装置630、扬声器636、麦克风638、无线天线642和电源644中的每一者可耦合到芯片上系统装置622的组件,例如接口或控制器。
应注意虽然图6描绘了无线通信装置,但DSP664和存储器632也可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或计算机中。处理器(例如,包含图1的执行单元118、120、122和124)也可集成到此装置中。
结合所描述的实施例,揭示了包含用于存储包含操作码和操作数的指令的装置的设备。举例来说,所述用于存储的装置可为图1的存储器102、图6的存储器632、图1和图6的指令高速缓冲存储器110、经配置以存储指令的一个或一个以上其它装置,或其任何组合。
所述设备还可包含用于处理所述指令以产生操作码和操作数的装置。所述操作数可指定立即值或存储所述立即值的寄存器的寄存器指示符。举例来说,所述用于处理的装置可包含图1的执行单元118、120、122和124、图6的DSP664、经配置以处理指令的一个或一个以上装置或其任何组合中的一者或一者以上。
所述设备可进一步包含用于将多个函数调用地址存储在表中的装置。举例来说,所述用于存储的装置可为图1的存储器102、图6的存储器632、图1和图6的数据高速缓冲存储器112、经配置以将多个函数调用地址存储在表中的一个或一个以上其它装置,或其任何组合。
所述设备可进一步包含用于动态更新所述表的装置。举例来说,所述用于动态更新的装置可为图1的执行单元118到124、经配置以动态更新函数地址表的一个或一个以上其它装置,或其任何组合。
所属领域的技术人员将进一步了解,可将结合本文所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。上文已大体在功能性方面描述各种说明性组件、块、配置、模块、电路和步骤。所述功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述功能性,但所述实施决策不应被解释为导致偏离本发明的范围。
结合本文中所揭示的实施例描述的方法或算法的步骤可直接包含于硬件中、由处理器执行的软件模块中或所述两者的组合中。软件模块可驻留于随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸式磁盘、压缩光盘只读存储器(CD-ROM),或此项技术中已知的任何其它形式的存储媒体。示范性非暂时性(例如,有形)存储媒体耦合到处理器,使得处理器可从存储媒体读取信息和将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体。处理器及存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻留在计算装置或用户终端中。
提供所揭示实施例的先前描述以使得所述领域的技术人员能够制作或使用所揭示的实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将为显而易见的,且可在不偏离本发明的范围的情况下将本文中所定义的原理应用于其它实施例。因此,本发明无意限于本文中所展示的实施例,而是将赋予本发明与如由所附权利要求书界定的原理和新颖特征一致的可能的最广范围。
Claims (21)
1.一种用于处理表调用指令的设备,其包括:
处理器;以及
存储指令的存储器,所述指令包含操作码和操作数,
其中所述操作数指定:
立即值;或
存储所述立即值的寄存器的寄存器指示符,
其中所述立即值可用以识别可从包含对应于所述处理器的函数集合的多个函数调用地址的表中选择的函数调用地址,所述函数集合包含由编译器或由链接器确定的特定应用程序的频繁使用的函数,且
其中所述处理器经配置以动态更新所述表。
2.根据权利要求1所述的设备,其中所述频繁使用的函数是由所述编译器选择,且其中所述处理器经配置以在所述特定应用程序的执行期间动态更新所述表。
3.根据权利要求1所述的设备,其中所述存储器进一步存储分支指令和跳转指令,所述分支指令和所述跳转指令对应于所述表未指示的函数。
4.根据权利要求1所述的设备,其中所述多个函数调用地址中的每一者与所述函数集合的对应的可执行函数相关联。
5.根据权利要求1所述的设备,其中所述表基于在所述特定应用程序中的使用频率以依次递减的顺序存储所述函数调用地址。
6.根据权利要求1所述的设备,其中所述处理器动态加载所述表。
7.根据权利要求1所述的设备,其中所述表存储在所述存储器中或高速缓冲存储器中。
8.根据权利要求1所述的设备,其中所述表的位置是相对于全局指针确定的。
9.根据权利要求8所述的设备,其中所述全局指针识别所述多个函数调用地址中的第一函数调用地址,且其中所述第一函数调用地址是通过将所述立即值添加到所述全局指针来识别。
10.根据权利要求8所述的设备,其中所述全局指针识别所述存储器内的全局数据部分,且其中第一函数调用地址是通过从所述全局指针中减去所述立即值来识别。
11.根据权利要求1所述的设备,其中所述指令的大小小于识别所述指令的地址与所述函数调用地址之间的差所需的位数目。
12.根据权利要求11所述的设备,其中所述指令的所述大小小于或等于24位、16位或8位。
13.根据权利要求1所述的设备,其中所述存储器在全局偏移表内存储所述表且其中所述立即值与所述表的表索引相关联。
14.根据权利要求13所述的设备,其中所述全局偏移表支持位置独立的代码执行。
15.根据权利要求1所述的设备,其进一步包括从由以下各项组成的群组选择的装置:机顶盒、音乐播放器、视频播放器、娱乐单元、导航设备、通信设备、个人数字助理PDA、固定位置数据单元和计算机,所述存储器集成到所述装置中。
16.一种用于处理表调用指令的方法,其包括:
在处理元件处处理指令以产生操作码和操作数,其中所述操作码识别表函数调用指令,且其中所述操作数指定:
立即值;或
存储所述立即值的寄存器的寄存器指示符,
其中所述立即值可用以识别可从包含对应于处理器的函数集合的多个函数调用地址的表中选择的函数调用地址,所述函数集合包含由编译器或由链接器确定的特定应用程序的频繁使用的函数;
使用所述立即值作为到所述表中的索引以识别所述函数调用地址;以及
动态更新所述表。
17.根据权利要求16所述的方法,其中所述表中的每一函数调用地址对应于不同的函数,且其中所述表是在所述特定应用程序的执行期间动态更新。
18.根据权利要求16所述的方法,其进一步包括跳转到所述函数调用地址。
19.根据权利要求18所述的方法,其中所述跳转在指令处理期间发生。
20.一种用于处理表调用指令的设备,其包括:
用于存储指令的装置;
用于处理所述指令以产生操作码和操作数的装置;以及
用于动态更新表的装置,
其中所述操作数指定:
立即值;或
存储所述立即值的寄存器的寄存器指示符,
其中所述立即值可用以识别可从包含对应于处理器的函数集合的多个函数调用地址的所述表中选择的函数调用地址,所述函数集合包含由编译器或由链接器确定的特定应用程序的频繁使用的函数;且
其中用于处理所述指令以产生操作码和操作数的装置经配置以跳转到所识别的函数调用地址。
21.根据权利要求20所述的设备,其进一步包括:
用于在所述表中存储所述多个函数调用地址的装置,其中所述用于动态更新所述表的装置经配置以在所述特定应用程序的执行期间动态更新所述表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/185,644 US9116685B2 (en) | 2011-07-19 | 2011-07-19 | Table call instruction for frequently called functions |
US13/185,644 | 2011-07-19 | ||
PCT/US2012/047488 WO2013013100A1 (en) | 2011-07-19 | 2012-07-19 | Table call instruction for frequently called functions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103748549A CN103748549A (zh) | 2014-04-23 |
CN103748549B true CN103748549B (zh) | 2016-08-17 |
Family
ID=46682901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280040631.5A Active CN103748549B (zh) | 2011-07-19 | 2012-07-19 | 用于经频繁调用函数的表调用指令 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9116685B2 (zh) |
EP (1) | EP2734918B1 (zh) |
JP (1) | JP6313204B2 (zh) |
KR (1) | KR101573306B1 (zh) |
CN (1) | CN103748549B (zh) |
WO (1) | WO2013013100A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102270790B1 (ko) * | 2014-10-20 | 2021-06-29 | 삼성전자주식회사 | 데이터 처리 방법 및 장치 |
US20160274878A1 (en) * | 2015-03-19 | 2016-09-22 | Google Inc. | Methods and systems for removing plt stubs from dynamically linked binaries |
US20170046158A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Determining prefetch instructions based on instruction encoding |
CN107133081B (zh) * | 2016-02-26 | 2019-12-17 | 龙芯中科技术有限公司 | 指令分派方法和解释器 |
CN106775955A (zh) * | 2017-01-12 | 2017-05-31 | 合肥杰美电子科技有限公司 | 一种虚拟指令调用系统服务的方法及系统 |
WO2019046723A1 (en) * | 2017-08-31 | 2019-03-07 | MIPS Tech, LLC | RELATED ADDRESSING OF GLOBAL POINTER IMPLICIT FOR ACCESS TO GLOBAL MEMORY |
CN113704753A (zh) * | 2020-05-22 | 2021-11-26 | 网神信息技术(北京)股份有限公司 | 对系统调用进行拦截替换的方法和装置、电子设备和介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973262A (zh) * | 2003-10-23 | 2007-05-30 | 创道软件有限公司 | 使用集中动态寻址(da)管理器的动态寻址 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NO119615B (zh) | 1966-02-25 | 1970-06-08 | Ericsson Telefon Ab L M | |
JPH04158445A (ja) | 1990-10-23 | 1992-06-01 | Nec Corp | アドレスサイズが機械語の命令長と同等な場合におけるジャンプ方式 |
JPH05165650A (ja) * | 1991-12-13 | 1993-07-02 | Nec Corp | 機械語翻訳装置 |
JP2921259B2 (ja) * | 1992-05-28 | 1999-07-19 | 富士電機株式会社 | 多分岐命令の処理方式 |
US5632034A (en) * | 1993-06-01 | 1997-05-20 | International Business Machines Corporation | Controlling method invocation sequence through virtual functions in an object-oriented class library |
US5574883A (en) | 1993-11-30 | 1996-11-12 | Unisys Corporation | Single chip processing unit providing immediate availability of frequently used microcode instruction words |
WO1996008763A2 (en) | 1994-09-16 | 1996-03-21 | Philips Electronics N.V. | Method, apparatus and instruction for performing a double jump register indirect operation transfer in a microcontroller |
US6446259B2 (en) * | 1997-09-15 | 2002-09-03 | Compaq Computer Corporation | System and method for generating an object structure at run time in an object-oriented programming language |
CA2236064A1 (en) * | 1998-04-28 | 1999-10-28 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for constructing hybrid virtual function tables |
US6269217B1 (en) | 1998-05-21 | 2001-07-31 | Eastman Kodak Company | Multi-stage electronic motion image capture and processing system |
US6175956B1 (en) * | 1998-07-15 | 2001-01-16 | International Business Machines Corporation | Method and computer program product for implementing method calls in a computer system |
US6154878A (en) * | 1998-07-21 | 2000-11-28 | Hewlett-Packard Company | System and method for on-line replacement of software |
US6463582B1 (en) | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
JP2001067335A (ja) | 1999-06-23 | 2001-03-16 | Denso Corp | マイクロコンピュータ |
JP2001184203A (ja) * | 1999-12-24 | 2001-07-06 | Matsushita Electric Ind Co Ltd | プログラム修正装置 |
US6779101B1 (en) | 2000-03-07 | 2004-08-17 | University Of Washington | Method and apparatus for processing compressed VLIW subinstruction opcodes |
US20030023960A1 (en) | 2001-07-25 | 2003-01-30 | Shoab Khan | Microprocessor instruction format using combination opcodes and destination prefixes |
TW536684B (en) | 2001-06-20 | 2003-06-11 | Sunplus Technology Co Ltd | Micro-controller architecture capable of increasing the code density by changeable instruction format |
US7032230B2 (en) * | 2001-08-27 | 2006-04-18 | International Business Machines Corporation | Efficient virtual function calls for compiled/interpreted environments |
US7103878B2 (en) * | 2001-12-13 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Method and system to instrument virtual function calls |
US7114150B2 (en) * | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US7886287B1 (en) * | 2003-08-27 | 2011-02-08 | Avaya Inc. | Method and apparatus for hot updating of running processes |
GB2412192B (en) | 2004-03-18 | 2007-08-29 | Advanced Risc Mach Ltd | Function calling mechanism |
JP2006079451A (ja) | 2004-09-10 | 2006-03-23 | Nippon Precision Circuits Inc | 情報処理装置及び情報処理方法 |
US8037482B1 (en) * | 2004-09-14 | 2011-10-11 | Azul Systems, Inc. | Accelerated class check |
US20070157178A1 (en) * | 2006-01-04 | 2007-07-05 | International Business Machines Corporation | Cross-module program restructuring |
JP5334083B2 (ja) | 2007-06-29 | 2013-11-06 | ジーイー・メディカル・システムズ・グローバル・テクノロジー・カンパニー・エルエルシー | 撮影装置および被検体移動装置 |
US8312254B2 (en) | 2008-03-24 | 2012-11-13 | Nvidia Corporation | Indirect function call instructions in a synchronous parallel thread processor |
US20110107070A1 (en) * | 2008-06-23 | 2011-05-05 | Grig Barbulescu | Patching of a read-only memory |
US8607208B1 (en) * | 2008-10-01 | 2013-12-10 | Oracle International Corporation | System and methods for object code hot updates |
-
2011
- 2011-07-19 US US13/185,644 patent/US9116685B2/en active Active
-
2012
- 2012-07-19 WO PCT/US2012/047488 patent/WO2013013100A1/en active Application Filing
- 2012-07-19 KR KR1020147003841A patent/KR101573306B1/ko active IP Right Grant
- 2012-07-19 JP JP2014521808A patent/JP6313204B2/ja active Active
- 2012-07-19 CN CN201280040631.5A patent/CN103748549B/zh active Active
- 2012-07-19 EP EP12748081.2A patent/EP2734918B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973262A (zh) * | 2003-10-23 | 2007-05-30 | 创道软件有限公司 | 使用集中动态寻址(da)管理器的动态寻址 |
Also Published As
Publication number | Publication date |
---|---|
JP2014523594A (ja) | 2014-09-11 |
US9116685B2 (en) | 2015-08-25 |
KR101573306B1 (ko) | 2015-12-01 |
KR20140036321A (ko) | 2014-03-25 |
EP2734918A1 (en) | 2014-05-28 |
JP6313204B2 (ja) | 2018-04-18 |
EP2734918B1 (en) | 2019-09-18 |
US20130024663A1 (en) | 2013-01-24 |
WO2013013100A1 (en) | 2013-01-24 |
CN103748549A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103748549B (zh) | 用于经频繁调用函数的表调用指令 | |
CN103226465B (zh) | 用于管线式处理的寄存器堆系统和方法 | |
Singh et al. | Evolution of processor architecture in mobile phones | |
US10007605B2 (en) | Hardware-based array compression | |
EP2259190A2 (en) | Multithreaded processor with efficient processing for convergence device applications | |
CN101501634A (zh) | 使用标量/向量指令处理数据的系统和方法 | |
CN106168978A (zh) | 一种网页中弹窗的处理方法和装置 | |
CN101821712A (zh) | 在多级数据处理管线中执行指令的系统和方法 | |
CN103189853A (zh) | 用于提供高效情境分类的方法和装置 | |
CN104903851A (zh) | 数据高速缓存通路预测 | |
US20060182135A1 (en) | System and method for executing loops in a processor | |
CN104603747B (zh) | 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法 | |
CN102591619B (zh) | 用于处理器中的算术逻辑和移位装置 | |
KR101459545B1 (ko) | 상단 n개 또는 하단 n개의 데이터 값들의 결정 | |
CN108572834A (zh) | 一种浏览器的升级方法和装置 | |
CN106462392A (zh) | 用于高速缓冲存储器存取模式选择的方法和设备 | |
CN103782267A (zh) | 用于电压域交叉的数据存储装置 | |
US20130297953A1 (en) | Control system | |
CN101911011A (zh) | 确定表内的元素的地址的系统和方法 | |
CN102455907B (zh) | 多卡手机应用软件设计方法 | |
CN104106044A (zh) | 使用经调用函数的地址的最低有效位来切换处理器模式 | |
CN104854557B (zh) | 存取高速缓存的设备和方法 | |
CN108399071A (zh) | 应用程序安装包大小的处理方法、装置、设备和存储介质 | |
CN106445662B (zh) | 一种移植应用程序的方法及终端设备 | |
Kukunas et al. | A genetic algorithm to improve linux kernel performance on resource-constrained devices |
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 |