CN103365626A - 用于在循环缓冲器中缓存优化后的内部指令的方法和系统 - Google Patents
用于在循环缓冲器中缓存优化后的内部指令的方法和系统 Download PDFInfo
- Publication number
- CN103365626A CN103365626A CN201310098530XA CN201310098530A CN103365626A CN 103365626 A CN103365626 A CN 103365626A CN 201310098530X A CN201310098530X A CN 201310098530XA CN 201310098530 A CN201310098530 A CN 201310098530A CN 103365626 A CN103365626 A CN 103365626A
- Authority
- CN
- China
- Prior art keywords
- built
- instruction
- command
- circulation
- optimization
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000004087 circulation Effects 0.000 claims description 120
- 125000004122 cyclic group Chemical group 0.000 claims description 82
- 238000005457 optimization Methods 0.000 claims description 77
- 230000015654 memory Effects 0.000 abstract description 19
- 230000008569 process Effects 0.000 description 33
- 238000004590 computer program Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 6
- 238000005755 formation reaction Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000005670 electromagnetic radiation Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 210000003733 optic disk Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种用于在循环缓冲器中缓存优化后的内部指令的方法和系统。本发明的各实施例涉及一种用于在循环缓冲器中存储内部指令循环的计算机系统。所述计算机系统包括循环缓冲器和处理器。所述计算机系统被配置为执行方法,所述方法包括:从存储器中取回指令以生成要执行的内部指令;在所述指令中检测第一指令循环的开始;确定与所述第一指令循环对应的第一内部指令循环未被存储在所述循环缓冲器中;取回所述第一指令循环;优化与所述第一指令循环对应的一个或多个指令以生成第一优化后的内部指令循环;以及基于所述第一内部指令循环未被存储在所述循环缓冲器中的确定,将所述第一优化后的内部指令循环存储在所述循环缓冲器中。
Description
技术领域
本发明一般地涉及内部指令优化,更具体地说,涉及在循环缓冲器(loop buffer)中缓存优化后的内部指令。
背景技术
处理器从存储器中访问内部指令并执行所述内部指令,以便控制计算设备的操作并导致计算设备执行特定功能,例如数据处理、显示、计算、数据存储、数据输出和其它功能。诸如非易失性存储器、ROM、RAM或闪存之类的不同类型存储器可以存储大量内部指令,但可能以低于处理器的时钟速度运行。可以使用更高速度的缓冲器和/或高速缓冲存储器来存储较少数量的内部指令(与主存储器相比),并且处理器可以以更高速度(与主存储器相比)直接访问这些缓冲器和/或高速缓冲存储器以提高计算设备的速度。
发明内容
根据本公开的一个实施例,一种用于实现内部指令循环缓冲器的计算机程序产品包括有形存储介质,所述有形存储介质可由处理电路读取并存储内部指令以便由所述处理电路执行以执行方法。所述方法包括:由处理器确定第一内部指令对应于内部指令循环;确定所述内部指令循环被存储在循环缓冲器中;优化所述内部指令循环的一个或多个内部指令;以及基于所述内部指令循环未被存储在所述循环缓冲器中的确定,将得到的第一优化后的内部指令循环存储在所述循环缓冲器中。
根据本公开的另一个实施例,一种用于在循环高速缓存中存储内部指令循环的计算机系统包括循环缓冲器和处理器,所述循环缓冲器被配置为存储一个或多个内部指令循环。所述计算机系统被配置为执行方法,所述方法包括:检测第一内部指令循环的开始;确定所述第一内部指令循环未被存储在所述循环缓冲器中;取回所述第一内部指令循环;优化所述第一内部指令循环中的一个或多个内部指令以生成第一优化后的内部指令循环;以及基于所述第一内部指令循环未被存储在所述循环缓冲器中的确定,将所述第一优化后的内部指令循环存储在所述循环缓冲器中。
根据本公开的另一个实施例,一种计算机实现的方法包括:检测第一内部指令循环的开始;检测所述第一内部指令循环未被存储在循环缓冲器中;优化所述第一内部指令循环;将所述优化后的第一内部指令循环存储在所述循环缓冲器中;以及执行所述第一内部指令循环。
通过本发明的技术实现了其它特性和优点。在此详细描述本发明的其它实施例和方面,并且这些实施例和方面被视为要求保护的本发明的一部分。为了更好地理解本发明的优点和特性,请参考说明书和附图。
附图说明
在说明书的结尾处具体指出并明确要求保护了被视为本发明的主题。从下面结合附图的详细描述,本发明的上述和其它特性和优点将变得显而易见,这些附图是:
图1示出了根据本公开的一个实施例的用于缓存优化后的内部指令的系统的方块图;
图2示出了根据本公开的一个实施例的优化内部指令的方块图;
图3示出了根据本公开的一个实施例的用于优化指令的过程流;
图4示出了根据本公开的一个实施例的用于确定指令优化资格的过程流;
图5示出了根据本公开的另一个实施例的用于优化指令的过程流;
图6示出了根据本公开的一个实施例的用于缓存优化后的内部指令的过程流;
图7示出了根据本公开的另一个实施例的用于缓存优化后的内部指令的过程流;
图8示出了根据本公开的另一个实施例的用于缓存优化后的内部指令的过程流;
图9示出了根据本公开的另一个实施例的用于缓存优化后的内部指令的过程流;以及
图10示出了根据一个实施例的计算机程序产品。
具体实施方式
参考图1,示出了根据本公开的一个实施例的用于缓存优化后的指令的系统1。系统1包括主存储器10以存储指令和数据。处理器15从主存储器10中访问指令和数据。取回单元18从指令高速缓存12和数据高速缓存13中取回指令和/或数据。处理器15包括取回单元18以便从存储器10、指令高速缓存12或数据高速缓存13中取回指令和/或数据。处理器15还包括解码器17以便对取回单元18所取回的指令进行解码,并包括执行单元16以便执行解码单元17所解码的指令。
在本公开的实施例中,处理器15还可以包括优化单元19(也称为优化器19)以便优化指令。优化后的指令可以是解码器17所解码的解码后的操作。在本公开的实施例中,存储在主存储器10、指令高速缓存12和数据高速缓存13中的指令可以包括机器指令或基于所述机器指令生成的内部指令。
图2示出了根据本公开的一个实施例的优化机器指令的方块图。分析第一和第二机器指令21和22以便判定它们是否可以被优化。例如,在一个实施例中,如果第二机器指令具有与第一机器指令的目标目的地相同的操作数位置,则确定机器指令适于被优化。在另一个实施例中,如果第二机器指令具有与第一机器指令的目标目的地相同的操作数位置和目标目的地,则确定机器指令适于被优化。
在本公开的一个实施例中,第一机器指令21是存储器加载(ld)指令,第二机器指令22是数据处理指令以便处理位于存储器加载指令的目标目的地处的数据。例如,第一和第二机器指令21和22可以是RISC兼容的内部指令。参考图2,第一机器指令21被配置为控制处理器以基于寄存器r3中的地址和常量120将值加载到寄存器r1。第二内部指令被配置为控制处理器以基于寄存器r1和r5的内容的和将值加载到寄存器r1。
当确定第一和第二机器指令21和22适于被优化时,合并第一和第二机器指令21和22以形成优化后的内部指令23。优化后的内部指令23包括与第一和第二机器指令21和22中的每一个对应的内部指令部分。具体地说,优化后的内部指令23包括如下内部指令:要加载到物理位置101、对应于寄存器r1、对应于物理位置p103处的地址的值、对应于寄存器r3以及常量120。优化后的内部指令23还包括如下内部指令:要添加物理位置p105的内容、对应于寄存器r5、具有物理位置p101的内容、对应于寄存器r1以及要将内容存储在物理位置p101中。
例如,在其中第一和第二机器指令21和22适于被优化的实施例中,仅当第二机器指令22访问并替换来自与第一机器指令21的目的地寄存器为同一寄存器的数据时,优化后的内部指令23才可以在优化后的内部指令23的第二内部指令部分的结尾处省略操作数数据p101(省略后的数据由圆括号指示),从而减小优化后的内部指令23的大小。通过已知的寄存器重命名技术获得逻辑寄存器名称的物理位置。
尽管图2中示出了优化后的内部指令23的一个实施例,但将理解,本公开的实施例包含具有不同内容和组织的优化后的内部指令。例如,在一个实施例中,可以为优化后的内部指令的第二操作的目的地或寄存器提供单独数据位置。在另一个实施例中,可以为优化后的内部指令23的第二操作的每个操作数提供单独数据位置,而无论所述操作数是否与第一内部指令部分的目标目的地或寄存器相同。
在本公开的一个实施例中,通过执行两个单独的内部指令24和25来执行优化后的内部指令23。第一内部指令24可以对应于第一机器指令21,第二内部指令25可以对应于第二机器指令22。以与第一和第二机器指令21和22(将基于由箭头E指示的指令流中的第一和第二机器指令21和22的原始位置执行)相同的顺序执行第一和第二内部指令24和25。
在一个实施例中,执行第一和第二内部指令24和25包括将优化后的内部指令23分为单独的内部指令24和25,并在单独的操作周期中执行每个单独的内部指令24和25。在另一个实施例中,执行第一和第二内部指令24和25包括执行优化后的内部指令23两次,第一次优化所述优化后的内部指令23时执行所述优化后的内部指令23的与第一内部指令24对应的第一部分,并且第二次优化所述优化后的内部指令23时执行所述优化后的内部指令23的与第二内部指令25对应的第二部分。
在一个实施例中,从优化后的内部指令23的与第二内部指令25对应的第二部分省略操作数源位置和目的地位置之一或两者,并且处理器提供优化后的内部指令23的与第一内部指令24对应的第一部分的目的地位置作为第二内部指令25的所省略的操作数源位置和目的地位置之一或两者。
在本公开的一个实施例中,优化内部指令可以包括确定第一内部指令的目标目的地与第二内部指令的操作数源位置相同,所述第二内部指令被配置为在所述第一内部指令之后连续执行。所述第二内部指令可以由具有不同于所述第一内部指令的目标目的地的操作数源位置的另一个内部指令所替换,以便允许并行执行所述第一内部指令和所述另一个内部指令。
图3示出了根据本公开的一个实施例的优化指令的方法。所述方法可以在具有图1中示出的配置的系统1中执行,或者在被配置为执行所述方法的任何其它系统中执行。将理解,尽管图3中示出了方块31-36,但本公开的实施例涵盖其中省略或修改方块31-36中的一个或多个或其中添加其它方块的方法。
在方块31,分析多个指令以便优化(31)。所分析的指令可以包括机器指令或基于机器指令生成的内部指令。图4示出了判定指令是否适于被优化的一个实施例。将理解,尽管图4中示出了方块41-44,但本公开的实施例涵盖其中省略或修改方块41-44中的一个或多个或其中添加其它方块的方法。在方块41,确定第一指令的目标目的地或寄存器。在方块42,确定第二指令的操作数位置和目标目的地或寄存器。
在方块43,判定所述第一和第二指令的目标目的地或寄存器是否相同,以及所述目标目的地或寄存器是否与所述第二指令的操作数位置相同。如果相同,则在方块44,将所述指令指定为适于被优化。如果基于方块43的分析,所述第一和第二内部指令没适于被优化,则所述过程结束。
尽管图4的实施例描述了基于操作的目的地寄存器判定指令是否适于被优化,但其它准则也可以判定指令是否适于被优化。具体地说,每当所述第二指令的准确执行依赖于所述第一指令的结果时,指令便可以适于被优化。例如,如果第二操作使用第一操作写入的寄存器中的数据并向此寄存器中写入,则在执行所述第一操作之前执行所述第二操作可能在所述第二操作中生成错误结果。由于所述第二操作依赖于所述第一操作的执行,所以所述操作可以适于被优化。
在一个实施例中,第一和第二指令在指令流中彼此相邻,以便在按顺序执行的情况下,一个指令将在另一个指令之后立即执行。在一个实施例中,仅将第二指令的操作数源与第一指令的目标寄存器或目的地相比较。在另一个实施例中,仅将第二指令的目标目的地或寄存器与第一指令的目标寄存器或目的地相比较。
在一个实施例中,可以分析指令流中的指令的操作数位置和目标目的地或寄存器,并且可以确定在以下情况下第一和第二指令适于被优化:指令流中的第一指令和第二指令之间没有指令向第二指令所访问的操作数位置中写入,并且指令流中的第一指令和第二指令之间没有指令从第一指令的目标目的地或寄存器中读取。
在一个实施例中,可以判定指令是否属于适于被组合的类型。例如,在具有多个队列的一个实施例中,仅当指令从同一队列中发出时,才可以组合指令。因此,在一个实施例中,向量指令和浮点指令可以相互组合,整数指令可以组合,但整数指令和向量指令不可以组合。同样,发出逻辑可以限制其它指令组合。
再次参考图3,如果在操作32中确定所分析的指令适于被优化,则在操作33中合并所述指令以形成一个优化后的内部指令,其包括每个所分析指令的指令信息。可以根据预定编程参数排列优化后的内部指令,以便指令执行设备将优化后的内部指令的第一部分识别为要首先执行的第一指令,以及将优化后的内部指令的第二部分识别为要其次执行的第二指令。
在一个实施例中,所分析的指令是机器指令,并且合并所述指令包括执行注册器重命名过程和生成对应于机器指令的内部指令以生成优化后的内部指令。在另一个实施例中,所分析的指令可以是内部指令,使得合并所述指令不需要在生成优化后的内部指令之前将所述指令转换为内部指令。
在操作34中,将优化后的内部指令存储为一个内部指令。例如,可以将优化后的内部指令存储在循环缓冲器11或指令高速缓存12内的仅一个空位(slot)中。
在一个实施例中,结合针对优化后的内部指令23的内部指令中的命名逻辑寄存器操作数执行寄存器重命名,执行生成优化后的内部指令23。在一个实施例中,通过仅分配单个目标重命名寄存器来存储优化后的内部指令23的第一内部指令和第二内部指令的结果,执行寄存器重命名过程,其中第一内部指令的目标寄存器与第二内部指令的目标寄存器相同,或者其中第一内部指令的目标寄存器与第二内部指令的操作数的源寄存器相同。
在至少一个实施例中,当已经组合成优化后的内部指令的第二内部指令读取优化后的内部指令23的第一内部指令的结果时,公共目标寄存器未被命名为源寄存器并且表示其它隐式操作数,此隐式操作数未被作为源操作数单独存储在优化后的内部指令23中,但是当执行第二内部指令时,或者当执行优化后的内部指令23的与第二内部指令对应的部分时,此隐式操作数被作为源操作数提供给第二内部指令。
在操作35中,执行优化后的内部指令的第一内部指令。处理器可以读取优化后的内部指令并可以识别位于优化后的内部指令中的第一和第二内部指令。第一和第二内部指令可以以这样一种方式排列:它们具有处理器所识别的执行顺序。例如,在一个实施例中,相对于对应于第二内部指令的代码而言,对应于第一内部指令的代码可以位于更高有效位。
在操作36中,在执行第一指令之后执行优化后的内部指令的第二内部指令。在本公开的实施例中,以相同的顺序执行第一和第二内部指令,其中在合并成优化后的内部指令之前在指令流中排列内部指令。例如,如果第一内部指令在第二内部指令的上游,这指示在按顺序执行内部指令的情况下将首先执行第一内部指令,则在优化后的内部指令中首先执行第一内部指令。
在一个实施例中,优化第一和第二机器指令以生成优化后的内部指令,并在方块35和36通过以下操作执行第一和第二内部指令:从对应于第一和第二机器指令的优化后的内部指令生成第一和第二内部指令,并且例如在单独的操作周期中分别执行第一和第二内部指令。在另一个实施例中,优化第一和第二内部指令以形成要作为单个指令存储的优化后的内部指令,并通过以下操作执行优化后的内部指令:生成第一和第二内部指令,并且例如在单独的操作周期中分别执行第一和第二内部指令。
在另一个实施例中,在方块35和36通过执行优化后的内部指令两次来执行第一和第二内部指令,其中优化后的内部指令包括对应于第一内部指令的第一内部指令部分和对应于第二内部指令的第二内部指令部分。在此实施例中,第一次执行优化后的内部指令时执行第一内部指令部分,以及第二次执行优化后的内部指令时执行第二内部指令部分。
在另一个实施例中,在方块35和36通过执行优化后的内部指令一次而不是生成两个单独内部指令来执行第一和第二内部指令。在此实施例中,优化后的内部指令包括对应于第一内部指令的第一内部指令部分和对应于第二内部指令的第二内部指令部分,并且在第一内部指令部分之后立即执行第二内部指令部分而不生成单独的内部指令。
本公开的各实施例涵盖任何指令集架构,包括精简指令集计算(RISC)和复杂指令集计算(CISC)。例如,在涉及RISC架构的实施例中,第一指令可以是加载指令,第二指令可以是用于处理第一指令的结果的数据处理操作,例如算术指令。另一方面,在涉及CISC架构的实施例中,第一指令可以是包括算术指令在内的任何指令类型,第二指令可以是包括算术指令在内的任何指令类型。
图5示出了根据本公开的另一个实施例的优化指令的过程。在方块51,分析两个或更多指令。具体地说,可以检测第一指令的目标目的地,并且可以检测要在第一指令之后直接执行的第二指令的操作数源位置。在方块52,可以判定第一指令的目标目的地是否与第二指令的操作数源位置相同,或者换言之,第二指令是否依赖于第一指令。
如果在方块52判定第二指令依赖于第一指令,则在方块53,可以从指令流中直接在第一指令之后的位置移除第二指令,并且非依赖性指令可以替换第二指令。例如,在其中内部指令流以队列排列,并且队列前面的指令由处理器取回以便执行的实施例中,可以从队列中直接在第一指令之后的位置删除依赖于第一指令的第二指令。在此位置中,可以将来自队列下游或者来自存储器中另一个位置的另一个指令插入到队列中在第一指令之后的位置。
另一方面,如果在方块52判定第二指令不依赖于第一指令,则可以在方块54按顺序执行所述指令。因此,在本公开的实施例中,可以排列指令以便处理器可以并行执行相邻指令。
再次参考图1,系统1还可以包括一个或多个循环缓冲器11以存储由处理器15标识为对应于内部指令循环的内部指令。在本公开的实施例中,循环缓冲器11可以存储一个或多个优化后的内部指令23。处理器15可以选择循环缓冲器11和内部指令高速缓存12之一作为内部指令源。例如,在其中处理器15将下一个指令识别为对应于循环缓冲器11中的内部指令的一个实施例中,处理器15可以选择循环缓冲器11作为内部指令源而不是选择指令高速缓存12。在一个实施例中,系统1可以包括多路复用器,并且处理器15可以控制所述多路复用器以控制是从指令高速缓存12还是从循环缓冲器11中取回内部指令。
图6示出了根据本公开的一个实施例的用于缓存优化后的内部指令的过程流。在方块302,处理器15读取指令。例如,取回单元18可以确定要取回的下一个指令。在方块304,判定要取回的下一个指令是否是指令循环的开始。如果在方块304判定所述指令不是指令循环的开始,则在方块306,取回所述指令。例如,处理器15的取回单元18可以从指令高速缓存12中取回下一个指令,在方块308,解码器17可以对所述指令进行解码,以及在方块314,执行单元16可以执行得到的内部指令。
如果在方块304判定要取回的下一个指令是指令循环的开始,则在方块310,判定对应于所检测到的指令循环的内部指令循环是否位于循环缓冲器11中。如果判定所述内部指令循环位于循环缓冲器11中,则在方块312,取回单元18可以从循环缓冲器11中取回所述内部指令循环,在方块314,执行单元16可以执行所述内部指令循环。
如果在方块310判定对应的内部指令循环没有位于循环缓冲器11中,则在方块316,解码器17可以对所述指令循环进行解码,优化器19可以判定所述指令循环的一个或多个指令是否适于被优化并且可以优化所述指令循环的适合指令。在方块318,可以判定是否可能发生附加优化。例如,附加优化可以包括合并指令循环的多个优化后的内部指令。在方块320,可以将所解码和优化后的内部指令循环存储在循环缓冲器11中,在方块314,执行单元16可以执行所解码和优化后的内部指令。
在本公开的一个实施例中,在方块320将所述内部指令循环存储在循环缓冲器中可以与在方块314执行所述内部指令循环同时发生。在其它实施例中,可以在执行所述内部指令循环之前将所述内部指令循环存储在所述循环缓冲器中,或者可以在将所述内部指令循环存储在所述循环缓冲器中之前执行所述内部指令循环。在其它实施例中,可以在方块314执行所述内部指令循环的同时,执行附加优化(方块318)。
在方块322,判定是否完成内部指令循环的执行。如果剩余更多要执行的指令,则在方块302,读取下一个指令。
根据上述实施例,可以优化指令,并且可以将优化后的内部指令循环存储在循环缓冲器中。因此,每次取回内部指令循环或者执行包括优化后的内部指令的循环时,无需重新优化内部指令循环的优化后的内部指令。
在本公开的实施例中,取回的指令可以是机器指令或基于机器指令的内部指令。处理器可以优化两个或更多机器指令以生成优化后的内部指令,或者处理器可以优化两个或更多内部指令以生成优化后的内部指令。
图7示出了根据本公开的另一个实施例的用于缓存优化后的内部指令的过程流。在操作402中,处理器15读取指令。所述指令可以是机器指令或从机器指令得出的内部指令。例如,取回单元18可以确定要取回的下一个指令。在操作404中,判定要取回的下一个指令是否是指令循环的开始。如果在操作404中判定所述指令不是指令循环的开始,则在操作406中,取回所述指令。例如,处理器15的取回单元18可以从指令高速缓存12中取回下一个指令,在操作408中,解码器17可以对所述指令进行解码,以及在操作414中,执行单元16可以执行对应的内部指令。
如果在操作404中判定要取回的下一个指令是指令循环的开始,则在操作410中,判定对应的内部指令是否位于循环缓冲器11中。如果判定所述内部指令循环位于循环缓冲器11中,则在操作412中,取回单元18可以从循环缓冲器11中取回所述内部指令循环,以及在操作414中,执行单元16可以执行所述内部指令循环。
如果在操作410中判定所述内部指令循环没有位于循环缓冲器11中,则在操作416中,解码器17可以对所述指令循环进行解码。在操作418和414中,处理器可以在执行解码后的内部指令循环(操作414)时,同时优化解码后的内部指令循环(操作418)。
在操作420中,可以将解码和优化后的内部指令循环存储在循环缓冲器11中。在操作422中,判定是否完成内部指令循环的执行。如果剩余更多要执行的指令,则在操作402中,读取下一个指令。
根据图4中示出的实施例,可以通过在确定优化后的内部指令没有位于循环缓冲器11中时,同时优化指令并执行对应的内部指令来提高处理器15的效率。一旦通过优化内部指令循环的两个或更多指令来优化所述内部指令循环,就可以将优化后的指令循环存储在循环缓冲器11中以供下次执行指令循环时访问。
图8示出了根据本公开的另一个实施例的用于缓存优化后的内部指令的过程流。在操作502中,处理器15读取指令。例如,取回单元18可以确定要取回的下一个指令。在操作504中,判定要取回的下一个指令是否是指令循环的开始。如果在操作504中判定所述指令不是指令循环的开始,则在操作506中,取回所述指令。例如,处理器15的取回单元18可以从指令高速缓存12中取回下一个指令,在操作508中,解码器17可以对所述指令进行解码,在操作514中,执行单元16可以执行对应的内部指令。
如果在操作504中判定要取回的下一个指令是指令循环的开始,则在操作510中,判定对应的内部指令循环是否位于循环缓冲器11中。如果判定所述内部指令循环位于循环缓冲器11中,则在操作512中,取回单元18可以从循环缓冲器11中取回所述内部指令循环。在操作524中,可以判定所述内部指令循环是否具有高重用率。例如,可以判定所述内部指令循环的已被访问次数是否多于预定次数,例如10,000次、100,000次或1,000,000次。在一个实施例中,处理器15判定所述内部指令循环是否具有高重用率。
当判定所述内部指令循环具有高重用率时,则在操作518中,可以执行附加优化以便进一步优化所述内部指令循环。例如,附加优化可以包括合并所述内部指令循环的多个优化后的内部指令。在操作520中,可以将优化后的内部指令循环存储在循环缓冲器11中,以及在操作514中,执行单元16可以执行所述内部指令。
如果在操作510中判定对应的内部指令循环没有位于循环缓冲器11中,则在操作516中,解码器17可以对所述指令循环进行解码,优化器19可以判定所述内部指令是否适于被优化并且可以优化所述内部指令。在操作520中,可以将所述内部指令循环存储在循环缓冲器11中,以及在操作514中,执行单元16可以执行所述内部指令。
在操作522中,判定是否完成所述内部指令循环的执行。如果剩余更多要执行的内部指令,则在操作502中,读取下一个指令。
图9示出了根据本公开的另一个实施例的用于缓存优化后的内部指令的过程流。在操作602中,处理器15可以接收所接收的内部指令是要存储在循环缓冲器11中的新循环的指示符。所述指示符可以包括标志和/或内部指令中的内容,所述内容例如包括操作数数据、地址数据、数据类型信息、内部指令类型信息,或者对应于内部指令的用于将内部指令标识为内部指令循环的其它信息。可以例如在操作310、410或510中检测所述指示符以便判定是存储新的循环还是从循环缓冲器11检索循环指令。
在操作604中,接收对应于所述循环指示符的内部指令。在操作606中,将所述内部指令存储在循环缓冲器11中。在操作608中,可以判定循环缓冲器11中是否存在溢出。具体地说,可以判定所接收的内部指令的数据大小是否超过循环缓冲器11中剩余的数据大小。如果循环缓冲器11中存在溢出,则可以在操作610中处理溢出。在一个实施例中,可以将所接收的内部指令的一部分保存在循环缓冲器11中,并且可以生成指示符(例如指针、标志或其它指示符)以便向处理器指示存在附加内部指令信息。在另一个实施例中,不将所述内部指令输入到循环缓冲器11中,或者从循环缓冲器11中删除先前输入到循环缓冲器11中的所述内部指令的一部分。在一个实施例中,当由于溢出而从循环缓冲器中删除内部指令时,不将溢出的循环存储在循环缓冲器中。在另一个实施例中,将循环的初始部分存储在循环缓冲器中,并且当到达循环缓冲器的末尾(溢出点)时,恢复自高速缓存的正常内部指令取回。
在另一个实施例中,可以增大循环缓冲器11的大小。例如,如果循环缓冲器11位于高速缓冲存储器中,则可以向循环缓冲器11分配高速缓冲存储器中的额外空间。在根据本公开的另一个实施例中,分配另一个循环缓冲器以便存储溢出。
在操作612中,可以判定是否到达内部指令的末尾。如果未到达,则在操作604中接收下一个内部指令。
如上所述,可以以计算机实现的过程和用于实现这些过程的装置的形式体现各实施例。一个实施例可以包括如图10中示出的计算机可读/可用介质702上的计算机程序产品700,介质702具有计算机程序代码逻辑704,逻辑704包含在有形介质中体现为制品的指令。计算机可读/可用介质702的示例性制品可以包括软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪存驱动器或任何其它计算机可读存储介质,其中,当计算机程序代码逻辑704被加载到计算机中并由计算机执行时,所述计算机变成用于实现本发明的装置。各实施例包括计算机程序代码逻辑704,例如,无论是存储在存储介质中、加载到计算机中和/或由计算机执行,还是通过某些传输介质(例如通过电线或电缆、通过光纤,或通过电磁辐射)来传输,其中,当计算机程序代码逻辑704被加载到计算机中并由计算机执行时,所述计算机变成用于实现本发明的装置。当在通用微处理器上实现时,计算机程序代码逻辑704段配置所述微处理器以创建特定的逻辑电路。
本公开的实施例的技术效果和益处包括通过将具有优化后的指令的内部指令循环存储在循环缓冲器中来提高处理器效率,这样每次执行包括所述指令的循环时,处理器无需重新优化指令。具体地说,技术益处包括在如下系统中提高处理器效率:其中一个指令依赖于指令流中的上一个指令。其它技术效果和益处可以由根据本公开的实施例的系统、方法和计算机程序产品产生,并且本发明的范围并不限于上述任何一个效果或益处。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组的存在或增加。
出于示例和说明目的给出了对本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于本领域的普通技术人员来说许多修改和变化都将是显而易见的。上面实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。
本领域的技术人员知道,本发明的各方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,本发明的各方面还可以采取体现在一个或多个计算机可读介质(其中包含计算机可读程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或上述任意适合的组合。所述计算机可读存储介质的更具体的实例(非穷举列表)将包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述任意适合的组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的有形介质。
计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取各种形式中的任一种,包括但不限于电磁、光或其中任意适合的组合。计算机可读信号介质可以是任何不属于计算机可读存储介质并且能够传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的计算机可读介质。
可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或上述任意适合的组合)来传输包含在计算机可读介质中的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,或者可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
上面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行了描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其它可编程数据处理装置的处理器执行的所述指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在能够引导计算机、其它可编程数据处理装置或其它设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可被加载到计算机、其它可编程数据处理装置或其它设备,以导致在所述计算机、其它可编程装置或其它设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其它可编程装置上执行的所述指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
如上所述,可以以计算机实现的过程和用于实现这些过程的装置的形式体现各实施例。在各实施例中,本发明体现在可由一个或多个网络元件执行的计算机程序代码中。各实施例包括计算机可用介质上的计算机程序产品,所述介质具有计算机程序代码逻辑,所述逻辑包含在有形介质中体现为制品的指令。计算机可用介质的示例性制品可以包括软盘、CD-ROM、硬盘驱动器、通用串行总线(USB)闪存驱动器或任何其它计算机可读存储介质,其中,当所述计算机程序代码逻辑被加载到计算机中并由计算机执行时,所述计算机变成用于实现本发明的装置。各实施例包括计算机程序代码逻辑,例如,无论是存储在存储介质中、加载到计算机中和/或由计算机执行,还是通过某些传输介质(例如通过电线或电缆、通过光纤,或通过电磁辐射)来传输,其中,当所述计算机程序代码逻辑被加载到计算机中并由计算机执行时,所述计算机变成用于实现本发明的装置。当在通用微处理器上实现时,所述计算机程序代码逻辑段配置所述微处理器以创建特定的逻辑电路。
附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
Claims (16)
1.一种用于在循环缓冲器中存储内部指令循环的计算机系统,所述计算机系统包括:
循环缓冲器,其被配置为存储一个或多个内部指令循环;以及处理器,
所述计算机系统被配置为执行方法,所述方法包括:
从存储器中取回指令以生成要由所述处理器执行的内部指令;
由所述处理器在所述指令中检测第一指令循环的开始;
确定与所述第一指令循环对应的第一内部指令循环未被存储在所述循环缓冲器中;
取回所述第一指令循环;
由所述处理器优化与所述第一指令循环对应的一个或多个指令以生成第一优化后的内部指令循环;以及
基于所述第一内部指令循环未被存储在所述循环缓冲器中的确定,将所述第一优化后的内部指令循环存储在所述循环缓冲器中。
2.根据权利要求1的计算机系统,其中所述处理器包括优化器,其被配置为通过将两个或更多机器指令合并成单个优化后的内部指令来优化所述一个或多个指令。
3.根据权利要求2的计算机系统,其中所述计算机系统还被配置为:
执行所述单个优化后的内部指令两次或更多次以便执行所述单个优化后的内部指令的所述两个或更多内部指令中的每一个。
4.根据权利要求1的计算机系统,其中所述处理器包括优化器,其被配置为优化所述一个或多个内部指令,方式为:
确定所述一个或多个指令中的第二指令被配置为在所述第一指令之后按顺序执行;
确定所述第一指令指定目标操作数位置;
确定所述第二指令指定与所述第一指令的所述目标操作数位置相同的源操作数位置;以及
由所述处理器在执行序列中使用具有与所述第一指令的所述目标操作数位置不同的源操作数位置的第三内部指令替换所述第二指令。
5.根据权利要求1的计算机系统,其中所述方法还包括:
确定第二指令循环;
确定对应于所述第二内部指令循环的优化后的指令循环被存储在所述循环缓冲器中;以及
基于所述优化后的指令循环被存储在所述循环缓冲器中的确定,从所述循环缓冲器取回所述优化后的指令循环并执行所述优化后的指令循环。
6.根据权利要求5的计算机系统,其中所述方法还包括:
确定存储在所述循环缓冲器中的所述优化后的指令循环至少具有预定重用率;
优化所述优化后的指令循环的一个或多个指令以生成第二优化后的内部指令循环;以及
将所述第二优化后的内部指令循环存储在所述循环缓冲器中。
7.根据权利要求1的计算机系统,其中由所述处理器优化所述一个或多个指令包括判定第二指令的操作数位置和目的地中的至少一个是否与所述第一指令的目的地相同,所述第二指令被配置为在所述第一指令之后按顺序执行。
8.根据权利要求1的计算机系统,其中所述方法还包括:
确定所述第一优化后的内部指令循环的大小使所述循环缓冲器溢出;
将所述第一优化后的内部指令循环的一部分存储在所述循环缓冲器中;以及
从内部指令高速缓存中取回所述第一优化后的内部指令循环的未被存储在所述循环缓冲器中的部分。
9.根据权利要求1的计算机系统,还包括:
确定所述第一优化后的内部指令循环的大小使所述循环缓冲器溢出;
基于所述第一优化后的内部指令循环的大小使所述循环缓冲器溢出的确定,分配至少一个附加循环缓冲器;以及
将所述第一优化后的内部指令存储在所述至少一个附加循环缓冲器中。
10.一种计算机实现的方法,所述方法包括:
从存储器中取回指令以生成要由处理器执行的内部指令;
由所述处理器在所述指令中检测第一指令循环的开始;
确定与所述第一指令循环对应的第一内部指令循环未被存储在循环缓冲器中;
由所述处理器优化对应于所述第一指令循环的两个或更多指令以生成优化后的第一内部指令循环;
将所述优化后的第一内部指令循环存储在所述循环缓冲器中;以及
执行所述第一内部指令循环。
11.根据权利要求10的计算机实现的方法,其中与生成所述优化后的第一内部指令循环同时地执行所述第一内部指令循环。
12.根据权利要求10的计算机实现的方法,还包括:
确定第二指令循环的开始;
确定对应于所述第二指令循环的第二内部指令循环被存储在所述循环缓冲器中;
从所述循环缓冲器中取回所述第二内部指令循环;以及
执行从所述循环缓冲器中取回的所述第二内部指令循环。
13.根据权利要求12的计算机实现的方法,其中存储在所述循环缓冲器中的所述第二内部指令循环是优化后的内部指令循环,并且
所述计算机实现的方法还包括:
确定所述第二内部指令循环的重用率大于预定阈值;以及
基于所述第二内部指令循环的所述重用率大于所述预定阈值的确定,提供所述第二内部指令循环的进一步优化。
14.根据权利要求10的计算机实现的方法,其中优化所述第一指令循环的所述两个或更多指令包括确定所述两个或更多指令的第一指令具有与所述两个或更多指令的第二指令的操作数源相同的目标目的地,所述第二指令被配置为在所述第一指令之后连续执行。
15.根据权利要求14的计算机实现的方法,其中优化所述第一指令循环的所述两个或更多指令包括合并所述第一指令和所述第二指令以生成单个优化后的内部指令。
16.根据权利要求15的计算机实现的方法,其中所述方法还包括执行所述单个优化后的内部指令两次以便执行所述单个优化后的内部指令的所述第一指令和所述第二指令中的每一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/432,512 | 2012-03-28 | ||
US13/432,512 US9323530B2 (en) | 2012-03-28 | 2012-03-28 | Caching optimized internal instructions in loop buffer |
US13/432512 | 2012-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365626A true CN103365626A (zh) | 2013-10-23 |
CN103365626B CN103365626B (zh) | 2016-06-01 |
Family
ID=49154916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310098530.XA Expired - Fee Related CN103365626B (zh) | 2012-03-28 | 2013-03-26 | 用于在循环缓冲器中缓存优化后的内部指令的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9323530B2 (zh) |
CN (1) | CN103365626B (zh) |
DE (1) | DE102013204420A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731557A (zh) * | 2014-12-10 | 2015-06-24 | 康烁 | 指令执行的控制方法及装置 |
US9940242B2 (en) | 2014-11-17 | 2018-04-10 | International Business Machines Corporation | Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries |
CN108431831A (zh) * | 2015-12-31 | 2018-08-21 | 微软技术许可有限责任公司 | 循环代码处理器优化 |
CN111045792A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 缓存和执行智能合约的方法和装置 |
CN111045793A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372695B2 (en) | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US9619230B2 (en) | 2013-06-28 | 2017-04-11 | International Business Machines Corporation | Predictive fetching and decoding for selected instructions |
US10592252B2 (en) | 2015-12-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Efficient instruction processing for sparse data |
US20170192896A1 (en) * | 2015-12-31 | 2017-07-06 | Microsoft Technology Licensing, Llc | Zero cache memory system extension |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
JP7205174B2 (ja) * | 2018-11-09 | 2023-01-17 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US20230205535A1 (en) * | 2021-12-23 | 2023-06-29 | Microsoft Technology Licensing, Llc | Optimization of captured loops in a processor for optimizing loop replay performance |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020178350A1 (en) * | 2001-05-24 | 2002-11-28 | Samsung Electronics Co., Ltd. | Loop instruction processing using loop buffer in a data processing device |
CN1425153A (zh) * | 2000-01-31 | 2003-06-18 | 英特尔公司 | 用于环缓冲数字信号处理指令的方法和装置 |
CN101872295A (zh) * | 2010-05-28 | 2010-10-27 | 浙江大学 | 基于解码缓冲器的循环指令处理装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
US7111155B1 (en) | 1999-05-12 | 2006-09-19 | Analog Devices, Inc. | Digital signal processor computation core with input operand selection from operand bus for dual operations |
US20040078608A1 (en) | 2001-04-02 | 2004-04-22 | Ruban Kanapathippillai | Method and apparatus for power reduction in a digital signal processor integrated circuit |
US7356673B2 (en) | 2001-04-30 | 2008-04-08 | International Business Machines Corporation | System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form |
US7398372B2 (en) | 2002-06-25 | 2008-07-08 | Intel Corporation | Fusing load and alu operations |
EP1701249A1 (en) | 2005-03-11 | 2006-09-13 | Interuniversitair Microelektronica Centrum Vzw | Ultra low power ASIP (Application-Domain specific Instruction-set Processor) microcomputer |
JP2006309337A (ja) | 2005-04-26 | 2006-11-09 | Toshiba Corp | プロセッサ及びプロセッサの命令バッファ動作方法 |
US8082430B2 (en) * | 2005-08-09 | 2011-12-20 | Intel Corporation | Representing a plurality of instructions with a fewer number of micro-operations |
US7571305B2 (en) * | 2007-01-11 | 2009-08-04 | Arm Limited | Reusing a buffer memory as a microcache for program instructions of a detected program loop |
US20090055589A1 (en) * | 2007-08-24 | 2009-02-26 | Arm Limited | Cache memory system for a data processing apparatus |
US9772851B2 (en) * | 2007-10-25 | 2017-09-26 | International Business Machines Corporation | Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer |
-
2012
- 2012-03-28 US US13/432,512 patent/US9323530B2/en not_active Expired - Fee Related
-
2013
- 2013-03-14 DE DE102013204420A patent/DE102013204420A1/de not_active Ceased
- 2013-03-26 CN CN201310098530.XA patent/CN103365626B/zh not_active Expired - Fee Related
- 2013-11-26 US US14/090,318 patent/US9384000B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1425153A (zh) * | 2000-01-31 | 2003-06-18 | 英特尔公司 | 用于环缓冲数字信号处理指令的方法和装置 |
US20020178350A1 (en) * | 2001-05-24 | 2002-11-28 | Samsung Electronics Co., Ltd. | Loop instruction processing using loop buffer in a data processing device |
CN101872295A (zh) * | 2010-05-28 | 2010-10-27 | 浙江大学 | 基于解码缓冲器的循环指令处理装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9940242B2 (en) | 2014-11-17 | 2018-04-10 | International Business Machines Corporation | Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries |
US10061705B2 (en) | 2014-11-17 | 2018-08-28 | International Business Machines Corporation | Identifying instructions for decode-time instruction optimization grouping in view of cache boundaries |
CN104731557A (zh) * | 2014-12-10 | 2015-06-24 | 康烁 | 指令执行的控制方法及装置 |
CN108431831A (zh) * | 2015-12-31 | 2018-08-21 | 微软技术许可有限责任公司 | 循环代码处理器优化 |
CN111045792A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 缓存和执行智能合约的方法和装置 |
CN111045793A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
WO2021179697A1 (zh) * | 2020-03-13 | 2021-09-16 | 支付宝(杭州)信息技术有限公司 | 一种在虚拟机中执行功能模块的方法和装置 |
WO2021179809A1 (zh) * | 2020-03-13 | 2021-09-16 | 支付宝(杭州)信息技术有限公司 | 缓存和执行智能合约的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20130262822A1 (en) | 2013-10-03 |
DE102013204420A1 (de) | 2013-10-02 |
US20140089636A1 (en) | 2014-03-27 |
US9384000B2 (en) | 2016-07-05 |
CN103365626B (zh) | 2016-06-01 |
US9323530B2 (en) | 2016-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103365626A (zh) | 用于在循环缓冲器中缓存优化后的内部指令的方法和系统 | |
US9292291B2 (en) | Instruction merging optimization | |
US9513915B2 (en) | Instruction merging optimization | |
CN108027766A (zh) | 预取指令块 | |
CN107810479A (zh) | 用于处理器控制传送的目标位置的确定 | |
KR20020065864A (ko) | 술어 실행을 정적 예측실행으로 변환하기 위한 범용 및효율적 방법 및 장치 | |
CN108027731A (zh) | 针对基于块的处理器的调试支持 | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
CN110825437B (zh) | 用于处理数据的方法和装置 | |
US20190347102A1 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
CN103365628A (zh) | 用于执行预解码时优化的指令的方法和系统 | |
US9442734B2 (en) | Completion time determination for vector instructions | |
TW201606645A (zh) | 在處理器管線中管理指令順序 | |
CN111095197B (zh) | 代码处理方法和设备 | |
US9141357B2 (en) | Computer-readable recording medium, compiling method, and information processing apparatus | |
Whitham et al. | Using trace scratchpads to reduce execution times in predictable real-time architectures | |
US20170115973A1 (en) | Operating method of semiconductor device and semiconductor system | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
Koizumi et al. | Reduction of instruction increase overhead by STRAIGHT compiler | |
KR20130108878A (ko) | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 | |
Aa et al. | A backtracking instruction scheduler using predicate-based code hoisting to fill delay slots | |
US9772825B2 (en) | Program structure-based blocking | |
Jimenez et al. | A Study of Techniques to Increase Instruction Level Parallelisms | |
Biglari-Abhari | Performance improvement through predicated execution in VLIW machines | |
CN114174985A (zh) | 在基于块的指令集架构中高扇出通信的高效编码 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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: 20160601 |
|
CF01 | Termination of patent right due to non-payment of annual fee |