CN103365628A - 用于执行预解码时优化的指令的方法和系统 - Google Patents
用于执行预解码时优化的指令的方法和系统 Download PDFInfo
- Publication number
- CN103365628A CN103365628A CN2013100961396A CN201310096139A CN103365628A CN 103365628 A CN103365628 A CN 103365628A CN 2013100961396 A CN2013100961396 A CN 2013100961396A CN 201310096139 A CN201310096139 A CN 201310096139A CN 103365628 A CN103365628 A CN 103365628A
- Authority
- CN
- China
- Prior art keywords
- instruction
- pre decoding
- sequence
- optimize
- cache
- 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
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000005457 optimization Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 13
- 230000001419 dependent effect Effects 0.000 abstract 1
- 238000004590 computer program Methods 0.000 description 25
- 238000013507 mapping Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 230000015572 biosynthetic process Effects 0.000 description 9
- 238000013433 optimization analysis Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000005670 electromagnetic radiation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005855 radiation Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction 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
- 235000020004 porter Nutrition 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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)
Abstract
本发明涉及一种用于执行预解码时优化的指令的方法和系统。所述方法包括接收指令序列的第一指令和所述指令序列的第二指令,并判定是否可以优化所述第一指令和所述第二指令。响应于判定可以优化所述第一指令和第二指令,所述方法包括针对所述指令序列执行预解码优化并生成新的第二指令,其中所述新的第二指令不依赖于所述第一指令的目标操作数,并将预解码的第一指令和预解码的新的第二指令存储在所述指令高速缓存中。响应于判定无法优化所述第一指令和第二指令,所述方法包括将所述预解码的第一指令和预解码的第二指令存储在所述指令高速缓存中。
Description
技术领域
本发明涉及计算机处理器领域,更具体地说,涉及结合预解码时优化的指令序列缓存来执行预解码时优化的指令。
背景技术
乱序(OoO)处理器通常包含多个执行管道,这些执行管道可以以不同于程序序列(或“程序顺序”)指定的顺序执行指令,以便通过减少数据依赖性并最大化为各种指令类型分配的执行管道的利用率,最大化平均每周期指令速率。指令执行的结果通常临时保存在有限深度的一个或多个寄存器文件的物理寄存器中。乱序处理器通常采用寄存器重命名,以避免由于程序顺序中的后续指令重用给定架构式寄存器而引起的不必要的指令序列化。
已经开发了各种方法和系统,用于对指令进行解码和优化以便由乱序处理器执行。然而,对指令进行解码和执行其它解码时指令优化可导致微处理器的功耗和散热增加。此外,对指令进行解码和执行其它解码时指令优化还可能需要将附加管道级引入微处理器。
在需要重复执行一系列指令(例如通过程序循环或递归函数)的情况下,用于对指令进行解码和执行其它解码时指令优化的当前方法在执行所述指令之前重复执行解码和优化操作。这种对一系列相同指令进行重复解码和优化导致不必要的功耗和散热,以及由于执行优化而引起的执行延迟。
发明内容
本公开的各实施例包括一种用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的计算机程序产品。所述计算机程序产品包括存储介质,所述存储介质可由处理电路读取并存储指令以便由所述处理电路执行以执行方法。所述方法包括接收指令序列的第一指令和所述指令序列的第二指令,并判定是否可以优化所述第一指令和所述第二指令。响应于判定可以优化所述第一指令和第二指令,所述方法包括针对所述指令序列执行预解码优化并生成新的第二指令,其中所述新的第二指令不依赖于所述第一指令的目标操作数,并将预解码的第一指令和预解码的新的第二指令存储在所述指令高速缓存中。响应于判定无法优化所述第一指令和第二指令,所述方法包括将所述预解码的第一指令和预解码的第二指令存储在所述指令高速缓存中。
本公开的各实施例还包括一种用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的系统。所述系统包括处理器,其被配置为与主存储器通信,所述处理器包括指令取回器、指令修改器、指令高速缓存以及一个或多个执行单元,所述处理器被配置为执行方法。所述方法包括接收指令序列的第一指令和所述指令序列的第二指令,并判定是否可以优化所述第一指令和所述第二指令。响应于判定可以优化所述第一指令和第二指令,所述方法包括针对所述指令序列执行预解码优化并生成新的第二指令,其中所述新的第二指令不依赖于所述第一指令的目标操作数,并将预解码的第一指令和预解码的新的第二指令存储在所述指令高速缓存中。响应于判定无法优化所述第一指令和第二指令,所述方法包括将所述预解码的第一指令和预解码的第二指令存储在所述指令高速缓存中。
本公开的各实施例还包括一种用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的方法。所述方法包括接收指令序列的第一指令和所述指令序列的第二指令,并判定是否可以优化所述第一指令和所述第二指令。响应于判定可以优化所述第一指令和第二指令,所述方法包括针对所述指令序列执行预解码优化并生成新的第二指令,其中所述新的第二指令不依赖于所述第一指令的目标操作数,并将预解码的第一指令和预解码的新的第二指令存储在所述指令高速缓存中。响应于判定无法优化所述第一指令和第二指令,所述方法包括将所述预解码的第一指令和预解码的第二指令存储在所述指令高速缓存中。
通过本发明的技术实现了其它特性和优点。在此详细描述本发明的其它实施例和方面,并且这些实施例和方面被视为要求保护的本发明的一部分。为了更好地理解本发明以及优点和特性,请参考说明书和附图。
附图说明
在说明书结尾处的权利要求中具体指出并明确要求保护了被视为本发明的主题。从下面结合附图的详细描述,本发明的上述和其它特性和优点将变得显而易见,这些附图是:
图1示出了用于与此处的教导一起使用的示例性系统配置的方块图;
图2示出了用于与此处的教导一起使用的示例性处理器配置的方块图;
图3示出了根据一个实施例的实例指令优化分析引擎环境。
图4是示出图3的优化分析引擎的操作的实例流程图;
图5是示出图3的优化分析引擎的操作的实例流程图;
图6是示出图3的优化分析引擎的操作的实例流程图;以及
图7示出了根据一个实施例的计算机程序产品。
具体实施方式
根据一个示例性实施例,微处理器指令预解码逻辑捕获指令流或系列,并对所述指令系列进行解码和执行优化。然后将解码和优化后的指令序列直接存储在指令高速缓存中。通过将解码和优化后的指令存储在指令高速缓存中,可以避免关于与重复执行解码时指令优化关联的功率和性能的成本。例如,在诸如循环之类的一些情况下或在递归函数中,可以重复执行单个指令序列。通过对指令序列进行预解码和优化并将结果存储在指令高速缓存中,每次执行所述指令序列时不再需要对所述指令序列进行解码和优化的过程。
现在参考附图,具体地说参考图1http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201,示出了数据处理系统100的一个实例,数据处理系统100可以包括采用中间寄存器映射器的乱序处理器,如下面参考图2http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201所述。如图1http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201中所示,数据处理系统100具有中央处理单元(CPU)110,CPU110可以通过图2http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201的处理器200实现。CPU110通过互连112耦合到各种其它组件。只读存储器(“ROM”)116耦合到互连112,并包括控制数据处理系统100的某些基本功能的基本输入/输出系统(“BIOS”)。随机存取存储器(“RAM”)114、I/O适配器118和通信适配器134也耦合到系统总线112。I/O适配器118可以是与存储设备120通信的小型计算机系统接口(“SCSI”)适配器。通信适配器134将互连112与网络142通过接口连接,网络142使得数据处理系统100能够与其它此类系统(例如远程计算机140)通信。输入/输出设备也通过用户接口适配器122和显示适配器136连接到互连112。键盘124、轨迹球132、鼠标126和扬声器128全部通过用户接口适配器122与总线112互连。显示器138通过显示适配器136连接到系统总线112。通过这种方式,数据处理系统100例如通过键盘124、轨迹球132和/或鼠标126接收输入,并且例如通过网络142、存储设备120、扬声器128和/或显示器138提供输出。数据处理系统100中示出的硬件元素并非旨在是穷举的,而是表示一个实施例中的数据处理系统的主要组件。
数据处理系统100的操作可以由诸如固件和/或软件之类的程序代码控制,所述程序代码通常例如包括诸如(“AIX”是国际商业机器公司的商标)之类的操作系统以及一个或多个应用或中间件程序。此类程序代码包括下面参考图2http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201讨论的指令。
现在参考图2http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201,示出了用于与此处教导一起使用的示例性处理器200的方块图。从存储器(例如,图1http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201的RAM114)取回指令并将其载入指令排序逻辑(ISL)204,ISL204包括1级指令高速缓存(L1I高速缓存)206、取回-解码单元208、指令队列210以及分派单元212。具体地说,将指令载入ISL204的L1I高速缓存206。将指令保留在L1I高速缓存206中直到需要所述指令,或者在不需要的情况下替换所述指令。从L1I高速缓存206取回指令并由取回-解码单元208对其进行解码。对当前指令进行解码之后,将当前指令载入指令队列210。分派单元212将指令从指令队列210分派到寄存器管理单元214以及完成单元221。完成单元221耦合到通用执行单元224和寄存器管理单元214,并监视何时完成发出的指令。
当分派单元212分派当前指令时,寄存器管理单元214的统一主映射器218分配目的地逻辑寄存器编号并将其映射到物理寄存器文件232a-232n中当前未被分配给逻辑寄存器的物理寄存器。所述目的地被称为被重命名为物理寄存器文件232a-232n中的指定物理寄存器。统一主映射器218从存储在统一主映射器218中的空闲物理寄存器列表219删除被分配的物理寄存器。对此目的地逻辑寄存器的所有后续引用都将指向同一物理寄存器,直到取回-解码单元208对写入到同一逻辑寄存器的另一个指令进行解码。然后,统一主映射器218将此逻辑寄存器重命名为从空闲列表219选择的不同物理位置,并更新所述映射器以输入新的逻辑到物理寄存器映射器数据。当不再需要逻辑到物理寄存器映射器数据时,将旧映射的物理寄存器返回到空闲列表219。如果空闲物理寄存器列表219没有足够的物理寄存器,则分派单元212暂停指令分派,直到需要的物理寄存器变得可用。
在寄存器管理单元214映射当前指令之后,发出队列222将当前指令发出到包括执行单元(EU)230a-230n的通用执行引擎224。执行单元230a-230n具有各种类型,例如浮点(FP)、定点(FX)和加载/存储(LS)。通用执行引擎224经由数据高速缓存234与数据存储器(例如,图1http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201的RAM114、ROM116)交换数据。此外,发出队列222可以包含FP型、FX型的指令和LS指令。然而应理解,可以使用任何数量和类型的指令。在执行期间,EU230a-230n从寄存器文件232a-232n中的物理位置获得源操作数值,并将结果数据(如果有)存储在寄存器文件232a-232n和/或数据高速缓存234中。
仍参考图2http://www.lexisnexis.com/totalpatent/attach/attachRetrieve.do?inline=y&smi=41720&key=US20110087865A1&componentseq=1&type=201,寄存器管理单元214包括:(i)映射器群集,其包括架构式寄存器映射器216、统一主映射器218、中间寄存器映射器220,以及(ii)发出队列222。映射器群集215跟踪被分配给各种指令的逻辑寄存器的物理寄存器。在一个示例性实施例中,架构式寄存器映射器216具有每种类型的16个逻辑(即,未物理映射)寄存器,这些逻辑寄存器存储逻辑到物理寄存器映射器数据的最后有效(即,设置检查点)状态。然而应认识到,不同的处理器架构可以具有更多或更少的逻辑寄存器,如示例性实施例中所述。架构式寄存器映射器216包括指针列表,所述指针列表标识描述设置检查点状态的物理寄存器。物理寄存器文件232a-232n通常包含多于架构式寄存器映射器216中的表项数的寄存器。应指出,在重命名映射方案中使用的物理和逻辑寄存器的特定数量可以变化。
相比之下,统一主映射器218通常大于(典型地包含多达20个表项)架构式寄存器映射器216。统一主映射器218便于跟踪逻辑到物理寄存器映射的瞬时状态。术语“瞬时”指在乱序执行指令时,统一主映射器218跟踪暂时的逻辑到物理寄存器映射数据的事实。乱序执行通常在具有较旧指令时发生,这些较旧指令比管道中的较新指令需要更长时间(即,使用更多的时钟周期)来执行。然而,如果乱序指令的执行结果需要出于特定原因(例如,分支未命中预测)而被清仓(flush),则处理器可以恢复到由架构式寄存器映射器216维护的设置检查点状态,并从最后有效状态继续执行。
统一主映射器218在物理寄存器文件232a-232n中的物理寄存器与架构式寄存器映射器216之间建立关联。限定术语“统一”指统一主映射器218消除针对每个寄存器文件232(例如,通用寄存器(GPR)、浮点寄存器(FPR)、定点寄存器(FXP)、异常寄存器(XER)、条件寄存器(CR)等)定制设计专用映射器的复杂性。
除了创建乱序指令的瞬时逻辑到物理寄存器映射器表项之外,统一主映射器218还跟踪依赖性数据(即,依赖于管道中较旧指令的完成的指令),这对于指令排序而言很重要。通常,一旦统一主映射器218进入指令的逻辑到物理寄存器转换,就将指令传递到发出队列222。在将指令发出到执行单元230以便执行之前,发出队列222用作守门人(gatekeeper)。一般说来,如果指令依赖于较旧指令来完成,则此指令不能离开发出队列222。由于此原因,统一主映射器218通过存储映射的每个指令的发出队列位置数据来跟踪依赖性数据。一旦通用执行引擎224已执行指令,所述指令就被称为“已完成”并从发出队列222中退出。
寄存器管理单元214可以在单个周期中从分派单元212接收多个指令,以便维护填充的单个发出管道。指令的分派受统一主映射器218中的可用表项数限制。在没有中间寄存器映射器220的常规映射器系统中,如果统一主映射器218总共具有20个映射器表项,则最多具有20个可以同时处于运行状态(即,未设置检查点)的指令。因此,常规映射器系统的分派单元212无疑可以“分派”比实际从统一主映射器218退出的指令更多的指令。在统一主映射器218处出现这种瓶颈的原因是由于以下事实而引起:通常,指令的映射器表项无法从统一主映射器218退出,直到此指令“完成”(即,所有较旧指令都“完成”执行)。
根据一个实施例,中间寄存器映射器220用作非计时关键的寄存器,在来自统一主映射器218的“完成”但“不完整”指令最终完成之前,可以将此指令退出到中间寄存器映射器220(即,从统一主映射器218中删除)。此指令“完成”之后,完成单元221向中间寄存器映射器220通知完成。中间寄存器映射器220中的映射器表项然后可以通过替换目前存储在架构式寄存器映射器216中的对应表项,更新架构式寄存器映射器216的架构一致状态。
当分派单元212分派指令时,寄存器管理单元214根据架构式寄存器映射器216、统一主映射器218和中间寄存器映射器220中的映射计算与所述指令关联的逻辑寄存器编号(多个),以便确定架构式寄存器映射器216、统一主映射器218和/或中间寄存器映射器220中是否存在匹配(通常被称为“命中”)。这种计算被称为逻辑寄存器查找。在多个寄存器映射器(即,架构式寄存器映射器216、统一主映射器218和/或中间寄存器映射器220)处同时执行查找时,所述查找被称为并行逻辑寄存器查找。
在各示例性实施例中,处理器包括用于从主存储器获得指令的指令取回单元、用于对指令进行解码的预解码单元、用于存储解码后的指令的指令高速缓存、用于对要执行的指令进行排队的发出队列、用于执行指令功能的执行单元,以及用于优选地在管道中将指令分派到相应执行单元的分派单元。在各实施例中,发出队列、预解码单元或分派单元例如可以单独或以组合方式修改指令,以便不必在上一个指令之后执行此指令。
在各示例性实施例中,处理器接收包括第一指令和第二指令的指令序列,其中所述第二指令被配置为在执行所述第二指令时,使用所述第一指令的执行结果。对所述两个指令的测试确定可以修改它们以便产生可以更有效执行的指令。例如,第一指令序列包括第一指令“i0”和第二指令“i1”,以及包含属于所述指令序列改进的多个内部操作(“iop”)的序列。例如,可以优化采用程序顺序的产生指令以及消费指令(需要按顺序执行),以便创建对应于产生指令的iop0和对应于消费指令的iop1,其中iop0和iop1可以乱序执行。
现在参考图3,示出了根据一个示例性实施例的用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的系统300的方块图。系统300包括从指令缓冲器301接收第一指令I0的第一解码器302以及从指令缓冲器301接收第二指令I1的第二解码器303。在各示例性实施例中,指令缓冲器301可以从下一级高速缓存或系统存储器接收指令。解码器302、303执行指令的初始解码,并将有关指令的信息提供给优化分析引擎(OAE)309。在各示例性实施例中,解码器302、303提供给OAE309的信息可以包括操作数和指令信息以及操作数资源属性。解码器302、303包括指令解码逻辑305、307,当未发生优化时,指令解码逻辑305、307生成对应于iop0和iop1的第一和第二指令的初始解码后的内部操作(iop)表示。
在各示例性实施例中,OAE309比较从解码器302和303接收的指令的解码后的特性,以便判定指令是否是优化的候选者。根据一个实施例,OAE309还可以响应于多个控制信号,以便例如在设置配置位时,禁止识别复合序列。在各示例性实施例中,OAE309可以是图3中示出的单个实体,或者可以在解码器302和303的一个或多个中被重复、分发、拆分或以其他方式集成,并且OAE309可以在单个结构内的单个大型复合解码器(例如,包括但不限于包含OAE309、解码器302和解码器303的复杂解码器)中组合,以便于逻辑优化和电路设计改进。
OAE309向解码器302、303提供指示是否检测到可以优化的指令序列的信息,以及有关所述序列的性质的信息(即,解码器优化逻辑为了生成优化序列所需的多个指令中的哪些指令以及所述序列的特定属性)。OAE309可以向指令优化逻辑306、308提供信息,例如被优化的指令序列的已解码部分、寄存器信息、立即字段和操作码。此外,OAE309可以向选择逻辑314、315提供选择信息,以便判定是应使用解码后的指令I0或I1,还是应使用优化后的指令。在各示例性实施例中,一旦选择逻辑314、315确定应使用哪些指令,就将指令iop0和iop1存储在指令高速缓存320中。
在各示例性实施例中,解码器302、303从指令缓冲器捕获一系列指令。解码器302、303对所述指令序列进行解码和优化,然后将解码和优化后的指令序列直接存储在指令高速缓存中。如在此所使用的,术语预操作码指已经存储在指令高速缓存中的预解码后的指令。在各示例性实施例中,所述预操作码可以是优化和解码后的指令,并可以包括预解码后的信息和预优化后的指令序列信息。通过对指令序列进行解码和优化并将预操作码直接存储在指令高速缓存中,处理器能够避免与在执行所述指令序列之前重复执行解码时指令优化关联的额外成本。
在各示例性实施例中,系统300在预解码时(而不是解码时)对指令序列进行解码和优化。例如,在美国专利申请第11/743,699号(在此全部引入作为参考)的图1B示出的系统中,在图1B-1中示出的预解码块(而不是图1B-2中示出的解码块)期间执行解码时指令优化。由于在预解码时期间可能不知道动态指令序列,因此优化可以基于指令段。
在各示例性实施例中,系统300还可以将可能的入口点存储到指令高速缓存320中,即,其中优化未更改两个相邻指令以便到序列中间的分支将更改程序行为。此外,系统300可以包括已知入口点向量318,已知入口点向量318包括每个高速缓存行的已知入口点。可以通过预解码后的指令操作,将已知入口点向量318存储在指令高速缓存320中。在各示例性实施例中,指令序列中的第一指令始终是已知入口点,假设指令逻辑将不会跨高速缓存块边界执行优化。在一个实施例中,每次触发重新优化事件时,将分支目标添加到已知入口点向量318。
现在参考图4,示出了显示根据一个示例性实施例的用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的方法的流程图。所述方法包括从下一级高速缓存或系统存储器接收指令序列,如方块400中所示。在决策方块402,所述方法判定是否可以优化所述指令序列。如果可以优化所述指令序列,则所述方法包括针对所述指令序列执行预解码时优化,如方块404中所示。如方块406中所示,所述方法包括执行所述指令序列的预解码。最后,如方块408中所示,将预解码后的指令序列存储在指令高速缓存中。
现在转到图5,示出了显示根据一个示例性实施例的用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的另一方法的流程图。如方块500中所示,所述方法包括检测指令未命中或新入口点。接下来,如方块502中所示,所述方法包括从下一级高速缓存或系统存储器接收指令序列。在决策方块504,所述方法判定是否指示重新优化事件。如果未指示重新优化事件,则所述方法包括针对所述指令序列执行预解码时优化,如方块506中所示。所述方法还包括针对所述指令序列执行预解码,如方块508中所示。如方块510中所示,所述方法包括将预操作码存储在指令高速缓存中。所述方法在结束时指示已完成将所述指令序列重新加载到指令高速缓存中,如方块512中所示。
现在参考图6,示出了显示根据一个示例性实施例的用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的另一方法的流程图。如方块600中所示,所述方法包括从指令高速缓存取回高速缓存块或预操作码段。接下来,如决策方块602中所示,所述方法包括判定在加载所述高速缓存块时是否存在高速缓存未命中。如果存在,则所述方法等待高速缓存重新加载已完成的指示,如方块604中所示。否则,所述方法继续到决策方块606,并判定高速缓存块地址是否对应于分支目标以及目标地址是否对应于已知入口点。如果不对应,则所述方法包括执行重新优化通知和重新加载高速缓存块(例如,段/子行/行中的一个),如方块608中所示。否则,所述方法继续到方块610,并可选地执行附加DTIO优化。接下来,如方块612中所示,所述方法包括将预操作码解码为内部操作(iop)。所述方法在方块614以执行所述内部操作结束。
本领域的技术人员将理解,尽管各示例性实施例涉及检测双指令序列,但OAE可以连接到两个以上的解码器,并标识包括2个以上指令的指令序列。此外,在一个实施例中,指令序列可以由其它指令分隔。
在一个实施例中,确定一对指令是优化的候选者,以便由针对要优化的指令工作的解码逻辑电路、分派逻辑电路、发出队列逻辑电路或分裂逻辑电路中的任何一个乱序执行。在另一个实施例中,优化电路在指令解码电路对候选指令进行解码之时或之后确定用于优化的候选指令,并导致将优化后的指令有效地插入管道中,而不是优化原始指令。
如上所述,可以以计算机实现的过程和用于实现这些过程的装置的形式体现各实施例。一个实施例可以包括如图7中示出的计算机可读/可用介质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 (12)
1.一种用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的系统,所述系统包括:
处理器,其被配置为与主存储器通信,所述处理器包括指令取回器、指令修改器、指令高速缓存以及一个或多个执行单元,所述处理器被配置为执行方法,所述方法包括以下步骤:
接收指令序列的第一指令和所述指令序列的第二指令;
判定是否可以优化所述第一指令和所述第二指令;
响应于判定可以优化所述第一指令和第二指令:
针对所述指令序列执行预解码优化并生成新的第二指令,其中所述新的第二指令不依赖于所述第一指令的目标操作数;以及
将预解码的第一指令和预解码的新的第二指令存储在所述指令高速缓存中;
响应于判定无法优化所述第一指令和第二指令,将所述预解码的第一指令和预解码的第二指令存储在所述指令高速缓存中。
2.根据权利要求1的系统,还包括将与所述第一指令对应的入口点存储到入口点向量。
3.根据权利要求2的系统,其中将所述入口点向量存储在所述指令高速缓存中。
4.根据权利要求1的系统,其中由优化分析引擎执行判定是否可以优化所述第一指令和所述第二指令。
5.根据权利要求1的系统,其中所述新的第二指令指定所述第一指令的源操作数位置和所述第二指令的至少一个源操作数位置。
6.根据权利要求1的系统,其中目标操作数位置是所述第一指令的第一目标寄存器,并且所述源操作数位置是所述第二指令的源寄存器。
7.一种用于结合预解码时优化的指令序列缓存来执行预解码时优化的指令的方法,所述方法包括:
接收指令序列的第一指令和所述指令序列的第二指令;
判定是否可以优化所述第一指令和所述第二指令;
响应于判定可以优化所述第一指令和第二指令:
针对所述指令序列执行预解码优化并生成新的第二指令,其中所述新的第二指令不依赖于所述第一指令的目标操作数;以及
将预解码的第一指令和预解码的新的第二指令存储在所述指令高速缓存中;
响应于判定无法优化所述第一指令和第二指令,将所述预解码的第一指令和预解码的第二指令存储在所述指令高速缓存中。
8.根据权利要求7的方法,还包括将与所述第一指令对应的入口点存储到入口点向量。
9.根据权利要求8的方法,其中将所述入口点向量存储在所述指令高速缓存中。
10.根据权利要求7的方法,其中由优化分析引擎执行判定是否可以优化所述第一指令和所述第二指令。
11.根据权利要求7的方法,其中所述新的第二指令指定所述第一指令的源操作数位置和所述第二指令的至少一个源操作数位置。
12.根据权利要求7的方法,其中目标操作数位置是所述第一指令的第一目标寄存器,并且所述源操作数位置是所述第二指令的源寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/432,357 US9354888B2 (en) | 2012-03-28 | 2012-03-28 | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching |
US13/432,357 | 2012-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365628A true CN103365628A (zh) | 2013-10-23 |
CN103365628B CN103365628B (zh) | 2015-11-18 |
Family
ID=49154946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310096139.6A Active CN103365628B (zh) | 2012-03-28 | 2013-03-25 | 用于执行预解码时优化的指令的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9354888B2 (zh) |
CN (1) | CN103365628B (zh) |
DE (1) | DE102013205059A1 (zh) |
Cited By (2)
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 |
CN111258637A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9354888B2 (en) | 2012-03-28 | 2016-05-31 | International Business Machines Corporation | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching |
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 |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US10671393B2 (en) * | 2015-04-24 | 2020-06-02 | International Business Machines Corporation | Techniques for facilitating cracking and fusion within a same instruction group |
CN110825440B (zh) * | 2018-08-10 | 2023-04-14 | 昆仑芯(北京)科技有限公司 | 指令执行方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6189088B1 (en) * | 1999-02-03 | 2001-02-13 | International Business Machines Corporation | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
CN101432692A (zh) * | 2006-05-04 | 2009-05-13 | 高通股份有限公司 | 预解码可变长度指令 |
CN101646999A (zh) * | 2007-04-04 | 2010-02-10 | 高通股份有限公司 | 以适当的预解码预载来自可变长度指令集的指令的系统、方法和软件 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
US6314511B2 (en) | 1997-04-03 | 2001-11-06 | University Of Washington | Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers |
US8706979B2 (en) | 2007-12-30 | 2014-04-22 | Intel Corporation | Code reuse and locality hinting |
US8683180B2 (en) | 2009-10-13 | 2014-03-25 | International Business Machines Corporation | Intermediate register mapper |
US9354888B2 (en) | 2012-03-28 | 2016-05-31 | International Business Machines Corporation | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching |
-
2012
- 2012-03-28 US US13/432,357 patent/US9354888B2/en active Active
-
2013
- 2013-03-21 DE DE102013205059A patent/DE102013205059A1/de active Pending
- 2013-03-25 CN CN201310096139.6A patent/CN103365628B/zh active Active
- 2013-12-09 US US14/100,044 patent/US9378022B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6189088B1 (en) * | 1999-02-03 | 2001-02-13 | International Business Machines Corporation | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
CN101432692A (zh) * | 2006-05-04 | 2009-05-13 | 高通股份有限公司 | 预解码可变长度指令 |
CN101646999A (zh) * | 2007-04-04 | 2010-02-10 | 高通股份有限公司 | 以适当的预解码预载来自可变长度指令集的指令的系统、方法和软件 |
Non-Patent Citations (1)
Title |
---|
LEYLA NAZHANDALI, ET.AL.: "A Second-Generation Sensor Network Processor", 《ACM/IEEE INTERNATIONAL CONFERENCE ON COMPILERS, ARCHITECTURE, AND SYNTHESIS FOR EMBEDDED SYSTEMS (CASES’05)》 * |
Cited By (4)
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 |
CN111258637A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258637B (zh) * | 2018-11-30 | 2022-08-05 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
DE102013205059A1 (de) | 2013-10-02 |
US20140095835A1 (en) | 2014-04-03 |
CN103365628B (zh) | 2015-11-18 |
US9378022B2 (en) | 2016-06-28 |
US20130262821A1 (en) | 2013-10-03 |
US9354888B2 (en) | 2016-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103365628A (zh) | 用于执行预解码时优化的指令的方法和系统 | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
CN102362257B (zh) | 使用相关矩阵追踪解除分配的加载指令的方法、系统和处理器 | |
CN102792265B (zh) | 基于机器状态的指令破解 | |
US8683185B2 (en) | Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set | |
US9946549B2 (en) | Register renaming in block-based instruction set architecture | |
CN108027766A (zh) | 预取指令块 | |
CN103810035B (zh) | 智能上下文管理 | |
US9851979B2 (en) | Split-level history buffer in a computer processing unit | |
US8892949B2 (en) | Effective validation of execution units within a processor | |
CN109308191B (zh) | 分支预测方法及装置 | |
EP3398113A1 (en) | Loop code processor optimizations | |
US9626220B2 (en) | Computer system using partially functional processor core | |
US20210042146A1 (en) | Systems, Methods, and Apparatuses for Resource Monitoring | |
US20130339689A1 (en) | Later stage read port reduction | |
US20160011877A1 (en) | Managing instruction order in a processor pipeline | |
WO2017116923A1 (en) | Efficient instruction processing for sparse data | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
CN100538648C (zh) | 基于专用处理单元的使用动态修改系统参数 | |
US10896040B2 (en) | Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
CN112673346A (zh) | 用于提取组的序列的控制对分支预测单元的存取 | |
Bonasu et al. | Design of Efficient Dynamic Scheduling of RISC Processor Instructions | |
CN116932050A (zh) | 指令处理装置、微处理器以及设备 | |
EP4363966A1 (en) | Compilation system and method |
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 |