CN104884145B - 指令合并优化 - Google Patents
指令合并优化 Download PDFInfo
- Publication number
- CN104884145B CN104884145B CN201380016936.7A CN201380016936A CN104884145B CN 104884145 B CN104884145 B CN 104884145B CN 201380016936 A CN201380016936 A CN 201380016936A CN 104884145 B CN104884145 B CN 104884145B
- Authority
- CN
- China
- Prior art keywords
- built
- command
- instruction
- optimization
- machine instructions
- 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
- 238000005457 optimization Methods 0.000 claims abstract description 163
- 230000006870 function Effects 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 238000000151 deposition Methods 0.000 claims description 2
- 238000004458 analytical method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000005670 electromagnetic radiation Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 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/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/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/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
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)
- Devices For Executing Special Programs (AREA)
Abstract
用于优化指令的计算机系统被配置为将两个或更多机器指令识别为合格用于优化,将所述两个或更多机器指令合并为被配置为进行所述两个或更多机器指令的功能的单个优化的内部指令,执行该单个优化的内部指令以进行所述两个或更多机器指令的功能。合格包括确定所述两个或更多机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器以及目标寄存器的第二指令。该第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能。
Description
技术领域
本发明涉及指令优化,更具体地,涉及通过合并合格的(eligible)指令来优化内部指令。
背景技术
处理器执行指令流以进行数据处理、存储和控制操作。处理器可以通过从数据存储器取得机器指令、基于该机器指令产生内部指令并且执行内部指令来执行指令以进行控制包括该处理器的系统的操作。
发明内容
根据本公开的一个实施例,用于优化指令的计算机系统包括:处理器,包括被配置为执行指令的指令执行单元以及被配置为优化两个或更多指令的指令优化单元;以及存储器,用于存储要由该指令执行单元执行的两个或更多机器指令。该计算机系统被配置为进行包括以下的方法:将所述两个或更多机器指令识别为合格用于优化,其中所述合格包括确定所述两个或更多机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器以及目标寄存器的第二指令,其中该第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能。该方法还包括将所述两个或更多机器指令合并为单个优化的内部指令,该单个优化的内部指令被配置为采用由所述两个或更多机器指令指定的操作数进行所述两个或更多机器指令的功能,其中所述单个优化的内部指令仅指定该第一目标寄存器作为单个目标寄存器,其中所述单个优化的内部指令指定要进行的该第一和第二功能,以及执行该单个优化的内部指令以进行所述两个或更多机器指令的功能。
根据本公开的另一实施例,用于实现指令优化的计算机程序产品包括:有形存储介质,可由处理电路读取并且存储用于由该处理电路执行以进行一方法的指令。该方法包括:确定指令流的至少两个机器指令合格用于优化,其中所述合格包括确定所述至少两个机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器和目标寄存器的第二指令,其中所述第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能。该方法还包括:将两个或更多机器指令合并为单个优化的内部指令,该单个优化的内部指令被配置为采用由所述两个或更多机器指令指定的操作数进行所述两个或更多机器指令的功能,其中所述单个优化的内部指令仅指定该第一目标寄存器作为单个目标寄存器,其中所述单个优化的内部指令指定要进行的该第一和第二功能,以及执行该单个优化的内部指令以进行所述至少两个机器指令的功能。
根据本公开的另一实施例,计算机实现的方法包括:确定指令流的两个或更多机器指令合格用于优化,其中所述合格包括确定所述两个或更多机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器和目标寄存器的第二指令,其中所述第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能。该计算机实现的方法还包括:将所述两个或更多机器指令合并为单个优化的内部指令,该单个优化的内部指令被配置为采用由所述两个或更多机器指令指定的操作数(operand)进行所述两个或更多机器指令的第一和第二功能,其中所述单个优化的内部指令仅指定该第一目标寄存器作为单个目标寄存器,其中所述单个优化的内部指令指定要进行的该第一和第二功能。该计算机实现的方法还包括执行该单个优化的内部指令以进行所述两个或更多机器指令的第一和第二功能。
通过本发明的技术实现另外的特征和优点。在此详细描述了本发明的其他实施例和方面,并且它们被认为是要求保护的本发明的一部分。为了更好地理解具有这些优点和特征的本发明,参考描述和附图。
附图说明
特别指出并且在说明书的结尾处清楚地要求保护被认为是本发明的主题。本发明的上述以及其他特征和优点从结合附图考虑的以下详细描述是显然的,附图中:
图1绘出根据本公开的一个实施例的用于优化指令的系统的框图;
图2绘出根据本公开的一个实施例的用于优化指令的系统的配置;
图3绘出根据本公开的一个实施例的用于优化指令的处理流程;
图4绘出根据一个实施例的用于确定指令是否合格用于优化的处理流程;
图5图形地绘出根据本公开的一个实施例的指令的优化和执行;
图6图形地绘出根据本公开的另一实施例的指令的优化和执行;以及
图7绘出根据一个实施例的计算机程序产品。
具体实施方式
参考图1,用于优化指令的系统1包括指令存储单元10、发出(issue)队列11、指令优化单元12、指令执行单元13、操作数存储单元14以及寄存器15。系统1不限于以上元件或组件,而是为了描述的目的而提供这些组件。可以添加其他组件,并且根据在本公开的范围内的系统可以省略以上组件中的一个或多个。
指令存储单元10存储要由指令执行单元13执行的指令。可以根据任意架构将指令存储在指令存储单元10中,包括基于指令何时被编成、随机地、基于指令何时被系统1调用或访问、或者根据任何其他设计参数、要求或架构。在一个实施例中,指令存储单元10存储机器指令,并且在另一实施例中,指令存储单元10存储基于机器指令而产生的指令。
发出队列11包括用于存储在排队以由指令执行单元13执行的指令的预定数量的槽(slot)。当在队列前面的指令被执行时,发出队列11中的指令从队列一路前移。可以通过指向下一指令的指针、通过从队列电读取指令并按新顺序将指令重写回到队列中、或者通过任何其他处理来实现指令的前移。在一个实施例中,发出队列11存储机器指令,并且在另一实施例中,发出队列存储基于机器指令而产生的内部指令。
在本公开的一些实施例中,比如由指令执行单元13分析发出队列11中的多个指令以确定是否并行执行发出队列11中的多个指令以增加系统1完成指令集的速度。对发出队列11的槽中的每一个指令的分析花费预定时间量,使得增加发出队列11的深度以增加发出队列11中的指令的数量增加了系统1的等待时间。
在本公开的实施例中,指令优化单元12分析指令流中的多个指令以确定指令是否合格用于优化。指令流可以被存储在指令存储单元10或者发出队列11中并且从指令存储单元10或者发出队列11访问。例如,在一个实施例中,分析存储在指令存储单元10或者发出队列11中的机器指令以确定它们是否合格用于优化。如果它们被确定为合格用于优化,则可以优化指令以产生优化的内部指令,并且优化的内部指令可以被存储在发出队列11中。在另一实施例中,可以分析存储在发出队列11中的内部指令以确定对于优化的合格性。如果确定内部指令合格用于优化,则可以优化内部指令以产生优化的内部指令,并且可以将优化的内部指令存储在发出队列11中。
优化可以发生在例如指令被解码时。当确定指令合格用于优化时,指令优化单元12将这些指令合并为单个优化的内部指令,该单个优化的内部指令包括与已经被确定为合格用于优化的指令对应的分别的内部指令。该单个优化的内部指令可以被存储在发出队列11的仅一个槽中。当进行寄存器重命名时,该单个优化的内部指令可以使用单个目标重命名寄存器来反映已经被合并的第一和第二内部指令的结果,由此降低珍稀的重命名寄存器资源的消耗。
在内部指令的执行期间,指令执行单元13访问在发出队列11前面的指令并且通过访问来自操作数存储单元14或者寄存器15的一个或多个操作数以及通过将结果存储在操作数存储单元14和寄存器15的一个或多个中来执行指令。当由指令执行单元13执行的指令是优化的内部指令时,指令执行单元13可以执行该优化的内部指令两次——一次来执行优化的内部指令中的第一指令,并且再次来执行该优化的内部指令中的第二指令。
图2例示根据本公开的一个实施例的用于优化指令的系统2的物理配置。系统2包括存储器21和处理器26。存储器21将操作数存储在操作数存储器22中,将指令存储在指令存储器23中,将数据存储在寄存器24中,并且将内部指令存储在发出队列25中。在本公开的实施例中,存储器21可以包括一个诸如随机存取存储器(RAM)的存储器芯片、多个存储器芯片、诸如易失性存储器、非易失性存储器、闪存、高速缓存存储器的不同类型的存储器或者任何其他类型的数据存储器。操作数存储器22、指令存储器23、寄存器24和发出队列25可以位于相同类型的存储器中、相同的储存器芯片中或者相同的集成电路中。可替换地,操作数存储器22、指令存储器23、寄存器24和发出队列25中的一个或多个可以位于与操作数存储器22、指令存储器23、寄存器24和发出队列25中的另一个不同类型的存储器中、不同的存储器芯片中或者不同的集成电路中。例如,当指令存储器23可以包括RAM或只读存储器(ROM)时,发出队列25可以包括高速缓存存储器。
处理器26包括指令执行单元27和指令优化单元28。在本公开的实施例中,指令执行单元27和指令优化单元28可以包括在处理器26中的硬连线的电路、由处理器26的处理元件访问以控制处理器26的操作的软件、一个或多个运算逻辑单元、其他逻辑、高速缓存存储器或者致使处理器优化并执行内部指令的任何其他电路。
图3例示根据本公开的一个实施例的优化指令的方法。该方法可以在具有图2所示的配置的系统2中或者在被配置为进行该方法的任何其他系统中进行。将理解,尽管在图3中例示了块31-36,但是本公开的实施例包括其中省略或修改块31-36中的一个或多个的方法或者其组合添加另外的块的方法。
在块31,分析多个指令用于优化31。分析的指令可以包括机器指令或者基于机器指令产生的内部指令。图4例示确定指令是否合格被优化的一个实施例。将理解,尽管在图4中例示了块41-44,但是本公开的实施例包括其中省略或修改块41-44中的一个或多个的方法或者其组合添加另外的块的方法。在块41,确定第一指令的目标目的地或者寄存器。在块42,确定第二指令的操作数的位置和目标目的地或者寄存器。
在块43,确定第一和第二指令的目标目的地或寄存器是否相同以及该目标目的地或寄存器与第二指令的操作数的位置是否相同。如果是,在块44中,指令被指定为合格用于优化。如果基于块43的分析,第一和第二内部指令不合格用于优化,则处理结束。
尽管图4的实施例描述了基于操作的目的地寄存器确定指令是否合格用于优化,但是其他准则可以确定指令是否合格用于优化。具体地,只要第二指令的准确执行依赖于第一指令的结果,指令可以合格用于优化。例如,如果第二操作使用由第一操作写入的寄存器中的数据并且将该数据写到该寄存器,则在进行第一操作之前进行第二操作可能在第二操作中产生错误的结果。因为第二操作依赖于第一操作的执行,所以这些操作可以合格被优化。
在一个实施例中,第一和第二指令在发出队列中彼此相邻,使得如果在发出队列中按从第一个到最后一个的顺序执行,则一个将在另一个之后立即被执行。在一个实施例中,仅将第二指令的操作数的源与第一指令的目标寄存器或目的地比较。在另一实施例中,仅将第二指令的目标目的地或寄存器与第一指令的目标寄存器或目的地比较。
在一个实施例中,可以分析发出队列中的指令的操作数位置和目标目的地或寄存器,并且当在发出队列中在第一指令和第二指令之间没有指令向由该第二指令访问的操作数位置写入并且在发出队列中在第一指令和第二指令之间没有指令从该第一指令的目标目的地或寄存器读取时,可以确定第一和第二指令合格用于优化。
在一个实施例中,可以确定指令是否是合格被组合的类型。例如,在具有多个发出队列的一个实施例中,指令仅在它们从相同的发出队列发出时可以被组合。因此,在一个实施例中,向量指令和浮点(floating point)指令可以彼此组合,并且寄存器指令可以组合,但是整行和向量指令不能组合。类似地,发出逻辑可以限制指令的其他组合。
再次参考图3,如果在操作32中确定分析的指令合格被优化,则在操作33中合并指令以形成包括每个分析的指令的指令信息的一个优化的内部指令。可以根据预定的编程参数来布置该优化的内部指令使得指令执行设备将该优化的内部指令的第一部分识别为要首先执行的第一指令,并且将该优化的内部指令的第二部分识别为要第二执行的第二指令。
在一个实施例中,分析的指令是机器指令,并且合并指令包括进行寄存器重命名处理以及产生与机器指令对应的内部指令以产生优化的内部指令。在另一实施例中,分析的指令可以是内部指令,使得合并指令不需要在产生优化的内部指令之前将指令转换为内部指令。
在操作34中,优化的内部指令被存储为一个内部指令。例如,当发出队列11具有多个槽并且每个槽被配置为存储一个内部指令时,优化的内部指令可以仅存储在发出队列11中的一个槽中。因而,当处理器分析发出队列中的内部指令以确定是否并行执行多个内部指令时,优化的内部指令对应于由处理器分析的仅一个指令。
在一些实施例中,发出队列的宽度被增加以容纳具有比单独的第一和第二内部指令更大的宽度的优化的内部指令。在一些实施例中,发出队列的深度或者发出队列中的槽的数量相对于与优化的内部指令相反而具有仅与单个指令对应的宽度的发出队列而被降低,以维持发出队列的总数据大小。在这样的实施例中,处理器分析发出队列中的所有槽的时间降低,因为发出队列包括更少的槽。但是,因为内部指令中的一个或多个是优化的内部指令,所以尽管槽的数量减少,但是处理器也能够分析相同数量的内部指令。
在另一实施例中,维持该发出队列的深度与具有仅与单个指令对应的宽度的发出队列相同,使得分析发出队列的槽中的内部指令的处理器由于具有优化的内部指令的一个或多个槽而能够分析相同数量的槽中的增加数量的总内部指令。
在一个实施例中,与对优化的内部指令的内部指令中的命名的逻辑寄存器操作数进行寄存器重命名结合将优化的内部指令放置到发出队列中。在一个实施例中,通过仅分配单个目标重命名寄存器来存储优化的内部指令的第一内部指令和第二内部指令的结果来进行寄存器重命名处理,其中第一内部指令的目标寄存器与第二内部指令的目标寄存器相同,或者其组合第一内部指令的目标寄存器与第二内部指令的操作数的源寄存器相同。
在至少一个实施例中,当已经被组合为优化的内部指令的第二内部指令读取该优化的内部指令的第一内部指令的结果时,公共目标寄存器不被命名为源寄存器并且表示另外的隐性(implicit)操作数,该另外的隐性操作数不被单独存储在优化的内部指令中作为源操作数,但是当执行第二内部指令时或者当执行该优化的内部指令的与第二内部指令对应的部分时,其作为源操作数被提供给第二内部指令。
在操作35,执行优化的内部指令的第一内部指令。处理器可以读取优化的内部指令并且可以识别位于该优化的内部指令内的第一和第二内部指令。可以以具有由处理器识别的执行顺序这样的方式来布置第一和第二内部指令。例如,在一个实施例中,与第一内部指令对应的码可以位于相对于与第二内部指令对应的码更高的有效位中。
在操作36中,在执行第一指令之后执行优化的内部指令的第二内部指令。在本公开的实施例中,第一和第二内部指令按其中在被合并为优化的内部指令之前将这些内部指令布置在指令流中的相同顺序来执行。例如,如果第一内部指令在第二内部指令的上游,指示如果按顺序执行内部指令则第一内部指令将首先执行,则在优化的内部指令中将首先执行第一内部指令。
在一个实施例中,优化第一和第二机器指令以产生优化的内部指令,并且在块35和36中通过从与对应于第一和第二机器指令对应的优化的内部指令产生第一和第二内部指令,并且比如在分别的操作周期中分别执行第一和第二内部指令,来执行该第一和第二内部指令。在另一实施例中,优化第一和第二内部指令以形成要存储为单个指令的优化的内部指令,并且通过产生第一和第二内部指令并且比如在分别的操作周期中分别执行第一和第二内部指令,来执行该优化的内部指令。
在另一实施例中,在块35和36中通过执行该优化的内部指令两次来执行该第一和第二内部指令,其中该优化的内部指令包括与该第一内部指令对应的第一内部指令部分和与该第二内部指令对应的第二内部指令部分。在此实施例中,第一次执行该优化的内部指令时执行该第一内部指令部分,并且第二次执行该优化的内部指令时执行该第二内部指令部分。
在另一实施例中,在块35和36中通过执行该优化的内部指令一次而不是产生两个单独的内部指令来执行该第一和第二内部指令。在此实施例中,优化的内部指令包括与该第一内部指令对应的第一内部指令部分和与该第二内部指令对应的第二内部指令部分,并且在该第一内部指令部分之后立即执行该第二内部指令部分而不产生单独的内部指令。
本公开的实施例包括任意的指令集架构,其包括精简指令集计算(RISC)和复杂指令集计算(CISC)。例如,在与RISC架构有关的实施例中,第一指令可以是加载指令,第二指令可以是对第一指令的结果进行动作的数据处理操作,比如运算指令。另一方面,在与CISC架构有关的实施例中,第一指令可以是任意指令类型,第二指令可以是任意指令类型,包括运算指令。
图5和图6例示根据本公开的实施例的合并指令以形成优化的内部指令并且执行优化的内部指令或者单独的内部指令的例子。参考图5,分析第一和第二机器指令51和52以确定它们是否可以优化。第一机器指令51被配置为控制处理器以基于寄存器r3处的地址和常数120将值加载到寄存器r1中。第二机器指令52被配置为控制处理器以基于寄存器r1和r5的内容的和来将值加载到寄存器r1中。
当确定第一和第二机器指令51和52合格被优化时,合并第一和第二机器指令51和52以形成优化的内部指令53。能够理解尽管从图5的描绘中省略了诸如寄存器重命名处理的另外的处理,但是在机器指令51和52的优化和执行中可以包括另外的处理,或者另外的处理是该优化和执行中固有的。优化的内部指令53包括与第一和第二机器指令51和52的每个对应的内部指令部分。
图5示出在已经进行了寄存器重命名、分别用物理重命名寄存器p101、p103和p105替换逻辑寄存器指示符r1、r3和r5之后的优化的内部指令53。具体地,优化的内部指令53包括向对应于寄存器r1的物理位置101加载与在对应于寄存器r3的物理位置p103处的地址对应的值加上常数120的内部指令。优化的内部指令53还包括将对应于寄存器r5的物理位置p105的内容与对应于寄存器r1的物理位置p101的内容相加并将内容存储在物理位置p101中的内部指令。
例如,在其中仅当第二机器指令52访问并替换来自与第一机器指令51的目的地寄存器相同的寄存器的数据时第一和第二机器指令合格用于优化的实施例中,优化的内部指令可以省略在优化的内部指令53的第二指令部分的结尾处的操作数数据p101(省略的数据由括号指示),由此减小优化的内部指令53的大小。
尽管在图5中例示了优化的内部指令53的一个实施例,但是能够理解本公开的实施例包括具有不同内容和组织的优化的内部指令。例如,在一个实施例中,可以为优化的内部指令的第二操作的目的地或者寄存器提供单独的数据位置。在另一实施例中,可以为优化的内部指令的第二操作的每个操作数提供单独的数据位置,而不管该操作数是否与第一指令部分的目标目的地或寄存器相同。
在本公开的一个实施例中,通过执行两个单独的内部指令54和55来执行该优化的内部指令。第一内部指令54可以对应于第一机器指令51,第二内部指令55可以对应于第二机器指令52。按与第一和第二机器指令51和52将基于第一和第二机器指令51和52在指令流中的原始位置而被执行的相同顺序来执行第一和第二机器指令51和52,如由箭头E所示。
在一个实施例中,执行第一和第二内部指令54和55包括将优化的内部指令53划分为单独的内部指令54和55并且在单独的操作周期中执行单独的内部指令54和55的每个。在另一实施例中,执行第一和第二内部指令54和55包括执行该优化的内部指令53两次,第一次优化该优化的内部指令53时执行该优化的内部指令53的与该第一内部指令54对应的第一部分,第二次执行该优化的内部指令53时执行该优化的内部指令53的与该第二内部指令55对应的第二部分。
在一个实施例中,从该优化的内部指令53的该第二内部指令55对应的第二部分中省略了操作数源位置和目的地位置之一或两者,并且诸如图2的指令执行单元27的处理器提供该优化的内部指令53的与该第一内部指令54对应的第一部分的目的地位置,作为该第二内部指令55的省略的操作数源位置和目的地位置之一或两者。
图6例示其中第一和第二内部指令61和62每个对应于运算操作的实施例。本领域技术人员能够理解,图6所示的内部指令对应于复杂架构,比如其中运算操作占用一行程序集(assembly)的CISC架构,而不是将操作分离以使每个操作仅占用一个时钟周期的RISC架构,使得进行运算操作还将需要包括进行例如加载操作。
第一机器指令61被配置为控制处理器以添加寄存器r3和r4的内容并加载寄存器r1中的结果。第二机器指令62被配置为控制处理器以将寄存器r5和r1的内容添加到寄存器r1中。当确定第一和第二机器指令61和62合格被优化时,第一和第二机器指令61和62被合并以形成优化的内部指令63。该优化的内部指令63包括与该第一机器指令61和该第二机器指令62两者对应的第一和第二部分。在本公开的一个实施例中,该优化的内部指令63仅被存储在发出队列的一个存储槽中。
当执行复杂的内部指令时,如由箭头E所示,可以将优化的内部指令划分为第一内部指令64和第二内部指令65。可以在第二内部指令65之前执行第一内部指令64,这相对于第一和第二机器指令61和62维持了第一和第二内部指令64和65的执行顺序。
在一个实施例中,执行第一和第二内部指令64和65包括将该优化的内部指令63划分为单独的内部指令64和65并且在单独的操作周期中执行单独的内部指令64和65的每个。在另一实施例中,执行第一和第二内部指令64和65包括执行该优化的内部指令63两次,第一次优化该优化的内部指令63时执行该优化的内部指令63的与该第一内部指令64对应的第一部分,第二次执行该优化的内部指令63时执行该优化的内部指令63的与该第二内部指令65对应的第二部分。
在另一实施例中,取代产生第一和第二内部指令64和65并按顺序执行第一和第二内部指令64和65,执行优化的内部指令63。换句话说,处理器26的指令执行单元27可以被配置为将优化的内部指令63识别为包括多个功能并且按顺序执行该多个功能,而不产生单独的内部指令64和65以对应于单独的功能。
在一个实施例中,从该优化的内部指令63的与该第二内部指令64对应的第二部分省略操作数源位置和目的地位置之一或两者,并且诸如图2的指令执行单元277的处理器提供该优化的内部指令63的与该第一内部指令64对应的第一部分的目的地位置作为该第二内部指令65的省略的操作数源位置和目的地位置之一或两者。
在本公开的一个实施例中,执行优化的内部指令63可以包括按顺序执行第一和第二机器指令61和62的功能,特别是“添加”功能,而不在该优化的内部指令63的与该第一内部指令64对应的第一部分的结尾处进行存储操作或者在该优化的内部指令63的与该第二内部指令64对应的第二部分的开头处进行加载操作。换句话说,通过例子参考图6,在其中由第一和第二机器指令61和62提供两个运算功能的操作中,优化可以包括跳过向寄存器p101“存储”内部指令64和从寄存器p101“加载”内部指令65,而是处理器可以组合第一和第二添加功能(p103+p104+p105)以执行优化的内部指令63。
如上所述,实施例可以以计算机实现的处理和用于实践那些处理的装置的形式而体现。实施例可以包括如图7所示的在计算机可读/可用介质702上的计算机程序产品700,该计算机可读/可用介质702具有包含体现在作为一件制造品的有形媒介中的指令的计算机程序代码逻辑704。用于计算机可读/可用介质702的示例的制造品可以包括软盘、CD-ROM、硬盘、通用串行总线(USB)快闪驱动器或者任何其他的计算机可读存储介质,其中当该计算机程序代码逻辑704被加载到计算机中并且由计算机执行时,该计算机变为用于实践本发明的装置。实施例包括例如计算机程序代码逻辑704,无论其被存储在存储介质中、加载到计算机中和/或由计算机执行、经过一些传输介质、比如经过电导线或者线缆、通过光纤还是经由电磁辐射而传输,其中当计算机程序代码逻辑704被加载到计算机中并且由计算机执行时,该计算机变为用于实践本发明的装置。当实现在通用微处理器上时,计算机程序代码逻辑704段配置该微处理器以创建具体逻辑电路。
本公开的实施例的技术效果和益处包括减少了由处理器为了诸如并行处理的处理而分析的指令的数量、减少了存储在存储器中的比如存储在发出队列中的内部指令的数量、并且减少了由处理器进行以执行内部指令的步骤的数量。例如,在其中处理器被配置为进行并行处理并且该处理器分析存储在指令队列或者发出队列中的指令流中的指令的实施例中,该处理器可以根据上述实施例形成优化的内部指令以得到用于处理器分析来并行处理的更少的内部指令,减少了包括处理器的系统中的等待时间。可以从根据本公开的实施例的系统、方法和计算机程序产品得到其他技术效果和益处,并且本发明的范围不限于上述效果或益处的任何一个。
这里使用的术语仅是为了描述特定实施例的目的而不意图限制本发明。如这里使用的,单数形式“一”、“一个”和“该”也意图包括复数形式,除非上下文以其他方式明确指示。将进一步理解,术语“包括”和/或“包含”在本说明书中使用时,指定了所述的特征、整体、步骤、操作、要素和/或组件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、要素组件和/或它们的组的存在或添加。
已经为了例示和描述的目的给出了本发明的描述,但是不意图穷尽或限制到公开的形式的发明。不脱离本发明的范围和精神,许多修改和变更对本领域技术人员将是显然的。选择并描述实施例以便于最佳地说明本公开的原理和实际应用,并且使得本领域普通技术人员能够对于具有适合于所预期的具体用途的各种修改的各种实施例理解本公开。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以加载到计算机、其他可编程数据处理设备或其他装置上以使得在计算机、其他可编程设备或其他装置上进行一系列操作步骤,以产生计算机实现的处理,使得在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图块或多个块中指定的功能/动作的处理。
如上所述,实施例可以以计算机实现的处理和用于实践那些处理的装置的形式而体现。在实施例,本发明可以体现在由一个或多个网络元件执行的计算机程序代码。实施例包括在计算机可用介质上的计算机程序产品,该计算机可用介质具有包含体现在作为一件制造品的有形媒体中的指令的计算机程序代码逻辑。用于计算机可用介质的示例的制造品可以包括软盘、CD-ROM、硬盘、通用串行总线(USB)快闪驱动器或者任何其他的计算机可读存储介质,其中当该计算机程序代码逻辑被加载到计算机中并且由计算机执行时,该计算机变为用于实践本发明的装置。实施例包括例如计算机程序代码逻辑,无论其被存储在存储介质中、加载到计算机中和/或由计算机执行、经过一些传输介质、比如经过电导线或者线缆、通过光纤还是经由电磁辐射而传输,其中当计算机程序代码逻辑被加载到计算机中并且由计算机执行时,该计算机变为用于实践本发明的装置。当实现在通用微处理器上时,计算机程序代码逻辑段配置该微处理器以创建具体逻辑电路。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (20)
1.一种用于优化指令的计算机系统,该计算机系统包括:
处理器,包括被配置为执行指令的指令执行单元以及被配置为优化两个或更多指令的指令优化单元;以及
存储器,用于存储要由该指令执行单元执行的两个或更多机器指令,
该计算机系统被配置为进行包括以下的方法:
将所述两个或更多机器指令识别为合格用于优化,其中所述合格包括确定所述两个或更多机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器以及目标寄存器的第二指令,其中该第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能;
将所述两个或更多机器指令合并为单个优化的内部指令,该单个优化的内部指令被配置为采用由所述两个或更多机器指令指定的操作数进行所述两个或更多机器指令的功能,其中所述单个优化的内部指令仅指定该第一目标寄存器作为单个目标寄存器,其中所述单个优化的内部指令指定要进行的该第一和第二功能,其中所述单个优化的内部指令存储在队列的单个指令槽中,以及
执行该单个优化的内部指令以进行所述两个或更多机器指令的功能,其中所述执行包括首先执行第一指令然后执行第二指令。
2.如权利要求1所述的计算机系统,其中所述计算机系统被配置为执行所述单个优化的内部指令而不是执行与所述两个或更多机器指令对应的两个或更多内部指令。
3.如权利要求1所述的计算机系统,其中所述方法还包括:
在两个或更多单独的操作周期中执行所述单个优化的内部指令以执行所述两个或更多机器指令的每个的功能。
4.如权利要求1所述的计算机系统,其中所述存储器包括具有多个槽的发出队列,每个槽被配置为将多个内部指令的单独的内部指令按照所述多个内部指令要由所述指令执行单元执行的顺序而存储。
5.如权利要求1所述的计算机系统,其中所述指令执行单元被配置为通过产生与所述两个或更多机器指令对应的两个或更多单独的内部指令并且在单独的操作周期中执行所述两个或更多单独的内部指令的每个来执行所述优化的内部指令。
6.如权利要求1所述的计算机系统,其中所述两个或更多机器指令的对应的内部指令被存储在发出队列中,其中对所述两个或更多机器指令进行所述合并,还包括:
用要执行的所述单个优化的内部指令来替代所述发出队列中的内部指令的至少一个。
7.如权利要求1所述的计算机系统,其中所述处理器被配置为通过分配单个目标寄存器以表示所述两个或更多机器指令的第一和第二机器指令两者的结果来进行寄存器重命名。
8.如权利要求7所述的计算机系统,其中所述单个优化的内部指令仅包括一个存储的重命名寄存器标识符以标识第一内部指令的目标寄存器以及第二内部指令的源寄存器两者,所述第一和第二内部指令对应于所述两个或更多机器指令的第一和第二机器指令,以及
执行所述单个优化的内部指令包括:
选择所述第一内部指令的目标寄存器作为所述第二内部指令的源寄存器。
9.如权利要求1所述的计算机系统,其中所述两个或更多机器指令中的第一指令是存储器加载指令,以及所述两个或更多机器指令中的第二指令是用于处理来自所述存储器加载指令的数据的数据处理指令。
10.一种计算机可读存储介质,用于实现指令优化,所述计算机可读存储介质可由处理电路读取并且存储用于由该处理电路执行以进行包括以下的方法的计算机程序:
确定指令流的至少两个机器指令合格用于优化,其中所述合格包括确定所述至少两个机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器和目标寄存器的第二指令,其中所述第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能;
将两个或更多机器指令合并为单个优化的内部指令,该单个优化的内部指令被配置为采用由所述两个或更多机器指令指定的操作数进行所述两个或更多机器指令的功能,其中所述单个优化的内部指令仅指定该第一目标寄存器作为单个目标寄存器,其中所述单个优化的内部指令指定要进行的该第一和第二功能,其中所述单个优化的内部指令存储在队列的单个指令槽中,以及
执行该单个优化的内部指令以进行所述至少两个机器指令的功能,其中所述执行包括首先执行第一指令然后执行第二指令。
11.如权利要求10所述的计算机可读存储介质,其中执行所述单个优化的内部指令包括执行所述单个优化的内部指令而不是执行与所述至少两个机器指令对应的至少两个内部指令。
12.如权利要求10所述的计算机可读存储介质,其中所述方法还包括将所述单个优化的内部指令作为单个指令存储在所述存储介质中,以及
其中执行所述单个优化的内部指令包括生成与所述至少两个机器指令对应的至少两个内部指令并且在单独的操作中执行所述至少两个内部指令。
13.如权利要求10所述的计算机可读存储介质,其中指令执行单元被配置为第一次执行所述单个优化的内部指令以进行与所述第一指令对应的操作并且第二次执行所述单个优化的内部指令以进行与所述第二指令对应的操作。
14.一种计算机实现的方法,包括:
确定指令流的两个或更多机器指令合格用于优化,其中所述合格包括确定所述两个或更多机器指令包括指定第一目标寄存器的第一指令以及指定该第一目标寄存器作为源寄存器和目标寄存器的第二指令,其中所述第二指令在编程顺序上是该第一指令的下一个顺序的指令,其中该第一指令指定要进行的第一功能,并且该第二指令指定要进行的第二功能;
将所述两个或更多机器指令合并为单个优化的内部指令,该单个优化的内部指令被配置为采用由所述两个或更多机器指令指定的操作数进行所述两个或更多机器指令的第一和第二功能,其中所述单个优化的内部指令仅指定该第一目标寄存器作为单个目标寄存器,其中所述单个优化的内部指令指定要进行的该第一和第二功能,其中所述单个优化的内部指令存储在队列的单个指令槽中,以及
执行该单个优化的内部指令以进行所述两个或更多机器指令的第一和第二功能,其中所述执行包括首先执行第一指令然后执行第二指令。
15.如权利要求14所述的计算机实现的方法,其中执行所述单个优化的内部指令包括执行所述单个优化的内部指令而不是执行与指令流的两个或更多指令对应的两个或更多单独的内部指令。
16.如权利要求14所述的计算机实现的方法,其中执行所述单个优化的内部指令包括从所述队列取得所述单个优化的内部指令并且从所述单个优化的内部指令产生与指令流的两个或更多指令对应的两个或更多单独的内部指令。
17.如权利要求16所述的计算机实现的方法,其中将所述两个或更多指令合并为单个优化的内部指令包括形成单个优化的内部指令以具有与所述两个或更多指令中的第一指令对应的第一指令部分以及与所述两个或更多指令中的第二指令对应的第二指令部分。
18.如权利要求17所述的计算机实现的方法,其中将所述两个或更多指令合并为单个优化的内部指令包括从所述第二指令部分中省略与所述第一目标寄存器对应的数据。
19.如权利要求17所述的计算机实现的方法,还包括通过在单独的指令周期中执行所述第一指令部分和所述第二指令部分来执行所述单个优化的内部指令。
20.如权利要求19所述的计算机实现的方法,其中执行所述单个优化的内部指令包括执行所述单个优化的内部指令两次,第一次执行所述单个优化的内部指令时执行所述第一指令部分,并且第二次执行所述单个优化的内部指令时执行所述第二指令部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/432,458 | 2012-03-28 | ||
US13/432,458 US9292291B2 (en) | 2012-03-28 | 2012-03-28 | Instruction merging optimization |
PCT/IB2013/051341 WO2013144733A2 (en) | 2012-03-28 | 2013-02-19 | Instruction merging optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104884145A CN104884145A (zh) | 2015-09-02 |
CN104884145B true CN104884145B (zh) | 2018-04-06 |
Family
ID=49236682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380016936.7A Active CN104884145B (zh) | 2012-03-28 | 2013-02-19 | 指令合并优化 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9292291B2 (zh) |
CN (1) | CN104884145B (zh) |
DE (1) | DE112013001747T5 (zh) |
GB (1) | GB2514043B (zh) |
WO (1) | WO2013144733A2 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474625B2 (en) | 2012-01-17 | 2019-11-12 | International Business Machines Corporation | Configuring compute nodes in a parallel computer using remote direct memory access (‘RDMA’) |
US10540179B2 (en) | 2013-03-07 | 2020-01-21 | MIPS Tech, LLC | Apparatus and method for bonding branch instruction with architectural delay slot |
US20140258667A1 (en) * | 2013-03-07 | 2014-09-11 | Mips Technologies, Inc. | Apparatus and Method for Memory Operation Bonding |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US9372695B2 (en) | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US9619230B2 (en) | 2013-06-28 | 2017-04-11 | International Business Machines Corporation | Predictive fetching and decoding for selected instructions |
US8854385B1 (en) * | 2013-10-03 | 2014-10-07 | Google Inc. | Merging rendering operations for graphics processing unit (GPU) performance |
US9292903B2 (en) | 2013-10-03 | 2016-03-22 | Google Inc. | Overlap aware reordering of rendering operations for efficiency |
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 |
US10175961B2 (en) * | 2015-06-10 | 2019-01-08 | International Business Machines Corporation | Joining operator graph elements via whole program optimization |
US9977677B2 (en) * | 2016-04-07 | 2018-05-22 | International Business Machines Corporation | Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port |
CN106775745B (zh) * | 2016-12-28 | 2020-04-28 | 广州华多网络科技有限公司 | 合并程序代码的方法及装置 |
CN107016277B (zh) * | 2017-04-11 | 2018-08-28 | 北京深思数盾科技股份有限公司 | 信息处理方法和信息安全设备 |
CN107179895B (zh) * | 2017-05-17 | 2020-08-28 | 北京中科睿芯科技有限公司 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
CN108572932B (zh) * | 2017-12-29 | 2020-05-19 | 贵阳忆芯科技有限公司 | 多平面nvm命令融合方法与装置 |
CN108628759B (zh) * | 2017-12-29 | 2020-09-01 | 贵阳忆芯科技有限公司 | 乱序执行nvm命令的方法与装置 |
CN111816180B (zh) * | 2020-07-08 | 2022-02-08 | 北京声智科技有限公司 | 基于语音控制电梯的方法、装置、设备、系统及介质 |
CN117724768A (zh) * | 2020-08-28 | 2024-03-19 | 格兰菲智能科技有限公司 | 电子装置及其命令数量减少方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86103765A (zh) * | 1985-06-28 | 1986-12-24 | 惠普公司 | 在指令串中嵌入数据的方法 |
US6338136B1 (en) * | 1999-05-18 | 2002-01-08 | Ip-First, Llc | Pairing of load-ALU-store with conditional branch |
CN1977241A (zh) * | 2004-06-24 | 2007-06-06 | 英特尔公司 | 向量化多条输入指令的方法和装置 |
CN101110017A (zh) * | 2005-08-09 | 2008-01-23 | 英特尔公司 | 一种组合指令的技术 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282633B1 (en) | 1998-11-13 | 2001-08-28 | Tensilica, Inc. | High data density RISC processor |
US6675376B2 (en) | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
US7398372B2 (en) * | 2002-06-25 | 2008-07-08 | Intel Corporation | Fusing load and alu operations |
US7818550B2 (en) | 2007-07-23 | 2010-10-19 | International Business Machines Corporation | Method and apparatus for dynamically fusing instructions at execution time in a processor of an information handling system |
-
2012
- 2012-03-28 US US13/432,458 patent/US9292291B2/en active Active
-
2013
- 2013-02-19 DE DE112013001747.4T patent/DE112013001747T5/de not_active Ceased
- 2013-02-19 GB GB1414519.7A patent/GB2514043B/en active Active
- 2013-02-19 CN CN201380016936.7A patent/CN104884145B/zh active Active
- 2013-02-19 WO PCT/IB2013/051341 patent/WO2013144733A2/en active Application Filing
- 2013-03-08 US US13/790,580 patent/US9298464B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86103765A (zh) * | 1985-06-28 | 1986-12-24 | 惠普公司 | 在指令串中嵌入数据的方法 |
US6338136B1 (en) * | 1999-05-18 | 2002-01-08 | Ip-First, Llc | Pairing of load-ALU-store with conditional branch |
CN1977241A (zh) * | 2004-06-24 | 2007-06-06 | 英特尔公司 | 向量化多条输入指令的方法和装置 |
CN101110017A (zh) * | 2005-08-09 | 2008-01-23 | 英特尔公司 | 一种组合指令的技术 |
Also Published As
Publication number | Publication date |
---|---|
WO2013144733A2 (en) | 2013-10-03 |
US20130262840A1 (en) | 2013-10-03 |
DE112013001747T5 (de) | 2015-02-26 |
GB2514043A (en) | 2014-11-12 |
GB2514043B (en) | 2015-06-17 |
GB201414519D0 (en) | 2014-10-01 |
CN104884145A (zh) | 2015-09-02 |
US20130262839A1 (en) | 2013-10-03 |
US9292291B2 (en) | 2016-03-22 |
WO2013144733A3 (en) | 2016-09-01 |
US9298464B2 (en) | 2016-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104884145B (zh) | 指令合并优化 | |
CN105453031B (zh) | 用于优化指令的方法和系统 | |
CN106843810B (zh) | 跟踪指令的控制流程的设备、方法以及机器可读介质 | |
CN104995599B (zh) | 使用硬件与软件组合的路径概况分析 | |
Fang et al. | swdnn: A library for accelerating deep learning applications on sunway taihulight | |
Geoffrey et al. | Habitat: A {Runtime-Based} computational performance predictor for deep neural network training | |
CN108027731A (zh) | 针对基于块的处理器的调试支持 | |
CN102306093B (zh) | 实现现代处理器间接转移预测的装置及方法 | |
CN102934082B (zh) | 用于动态二进制翻译的方法、装置和系统 | |
CN108027767A (zh) | 寄存器读取/写入排序 | |
CN108475193A (zh) | 字节排序指令和四位组排序指令 | |
CN108027770A (zh) | 用于数据流isa的密集读取编码 | |
CN108027729A (zh) | 分段式指令块 | |
CN106030518B (zh) | 用于整理和退出存储的处理器、方法、系统和装置 | |
CN109313567A (zh) | 虚拟化精确的基于事件的采样 | |
CN108027732A (zh) | 与断言的加载指令相关联的预取 | |
CN107102845A (zh) | 间接分支预测 | |
CN107810477A (zh) | 解码的指令的重复使用 | |
CN107810478A (zh) | 具有连续块的并行执行的基于块的架构 | |
CN109615495A (zh) | 一种数据的对账方法、装置、设备及系统 | |
CN110312994A (zh) | 使用指令地址映射绕过加载指令的存储器访问 | |
CN109844776A (zh) | 具有片上学习和随机时间步长控制的可编程神经元核心 | |
CN108112269A (zh) | 多重无效 | |
CN110119362A (zh) | 存储器写日志存储处理器、方法、系统和指令 | |
CN108027733A (zh) | 在目标字段中存储无效 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |