CN105593807A - 跨群组界限的指令群组最佳化 - Google Patents
跨群组界限的指令群组最佳化 Download PDFInfo
- Publication number
- CN105593807A CN105593807A CN201480047550.7A CN201480047550A CN105593807A CN 105593807 A CN105593807 A CN 105593807A CN 201480047550 A CN201480047550 A CN 201480047550A CN 105593807 A CN105593807 A CN 105593807A
- Authority
- CN
- China
- Prior art keywords
- instruction
- group
- instructions
- optimization
- information
- 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
- 238000005457 optimization Methods 0.000 title claims abstract description 175
- 230000015654 memory Effects 0.000 claims description 117
- 238000000034 method Methods 0.000 claims description 52
- 238000012545 processing Methods 0.000 claims description 50
- 238000004590 computer program Methods 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 11
- 230000014759 maintenance of location Effects 0.000 claims description 8
- 230000001737 promoting effect Effects 0.000 claims description 3
- 230000000717 retained effect Effects 0.000 abstract description 4
- 239000000872 buffer Substances 0.000 description 112
- 238000003860 storage Methods 0.000 description 34
- 230000006870 function Effects 0.000 description 31
- 230000006855 networking Effects 0.000 description 23
- 238000006073 displacement reaction Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000033228 biological regulation Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 210000003811 finger Anatomy 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000004804 winding Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 102000004381 Complement C2 Human genes 0.000 description 1
- 108090000955 Complement C2 Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 101100379079 Emericella variicolor andA gene Proteins 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000002596 correlated effect Effects 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
- 238000001514 detection method Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013433 optimization analysis Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- HOWHQWFXSLOJEF-MGZLOUMQSA-N systemin Chemical compound NCCCC[C@H](N)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H]([C@@H](C)O)C(=O)N[C@@H](CC(O)=O)C(=O)OC(=O)[C@@H]1CCCN1C(=O)[C@H]1N(C(=O)[C@H](CC(O)=O)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CO)NC(=O)[C@H]2N(CCC2)C(=O)[C@H]2N(CCC2)C(=O)[C@H](CCCCN)NC(=O)[C@H](CO)NC(=O)[C@H](CCC(N)=O)NC(=O)[C@@H](NC(=O)[C@H](C)N)C(C)C)CCC1 HOWHQWFXSLOJEF-MGZLOUMQSA-N 0.000 description 1
- 108010050014 systemin Proteins 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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/3822—Parallel decoding, e.g. parallel decode units
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
分组成指令群组的指令是跨群组界限进行最佳化。跨越更多个群组的指令序列是借由留存与一个指令群组结束时的指令有关的资讯进行最佳化,该指令接着与后续指令群组开始时的指令进行共最佳化。此经留存资讯接着是用于对后续群组的一或更多个指令进行最佳化。最佳化可跨n个群组界限进行,其特征在于,n等于二或更大数目。另外,除了跨群组界限的最佳化,群组内的指令也可进行最佳化。
Description
技术领域
一般而言,一或多项态样是关于处理环境内的处理,尤其是关于该处理的最佳化。
背景技术
处理器执行引导处理器进行特定作业的指令。举例而言,指令可以是进行使用者定义任务的使用者应用的部分、或进行***层次服务的作业***应用的部分。
处理器处理指令所用的一种处理技术是称为管线处理,其中处理是按照阶段来进行。例示阶段包括撷取阶段,处理器在撷取阶段中自内存撷取指令;解码阶段,经撷取指令是在解码阶段中予以解码;执行阶段,经解码指令是在执行阶段中予以执行;以及完成阶段,指令的执行是在完成阶段中完成,包括更新与处理有关的架构状态。其它及/或不同阶段是有可能的。
为了促进管线处理器内的处理,运用了各种最佳化技术。一种此类技术包括解码时间指令最佳化,其提供机会改善符码执行,所采用的方式是:将多个指令组合成单个内部指令;将多个指令重新组合成多个/更少内部指令;及/或以更少数据相依性将多个指令重新组合成多个内部指令。
发明内容
通过提供用于促进处理环境内的处理的计算机程序产品,克服了背景技术的缺点,并且提供附加优点。计算机程序产品包括计算机可读取存储媒体,该计算机可读取存储媒体可借由处理电路读取并且存储指令,该等指令是由该处理电路执行以进行一种方法。例如,本方法包括获得一指令,该指令是包括于多个指令所组成的群组中,并且是指令序列的部分,该指令序列跨越于一或更多个指令所组成的一或更多个其它群组;对该多个指令的至少两个指令进行最佳化以提供一或更多个经最佳化指令;自该一或更多个其它指令群组的至少一个其它指令群组获得一或更多个指令;使用从对该多个指令所组成的该群组的该至少两个指令进行该最佳化所获得的资讯,对从该至少一个其它指令群组的该一或更多个指令获得的至少一个指令进行最佳化;以及执行至少一个经最佳化指令,该经最佳化指令是经由对来自该至少一个其它指令群组的该至少一个指令进行该最佳化所产生。
本文也说明并主张与一或多项态样有关的方法及***。再者,本文也说明并且可诉求与一或多项态样有关的服务。
通过本文所述的技术得以了解附加特征及优点。其它具体实施例及态样是于本文中详述,并且是视为所诉求态样的一部分。
附图说明
一或多项态样是于本说明书总结时,在权利要求中举例特别指出并且明确诉求。前述内容以及一或多项态样的目的、特征及优点在搭配附图详细说明后将显而易知,其中:
图1绘示用以合并并且使用最佳化功能的一或多项态样的处理环境的一项具体实施例;
图2更详细绘示图1所示处理环境的处理器;
图3绘示处理环境的处理器的指令管线的一项具体实施例;
图4A绘示用于解码指令并且提供最佳化的解码器的一项具体实施例;
图4B绘示借由解码器提供最佳化的一项实施例;
图4C绘示借由解码器提供最佳化的另一实施例;
图5绘示用以形成指令群组的逻辑的一项具体实施例;
图6绘示指令群组的一实施例;
图7A以绘图方式绘示跨指令群组提供最佳化的一项实施例;
图7B以绘图方式绘示不许可跨指令群组进行最佳化的一项实施例;
图8A绘示用以跨指令群组进行最佳化的逻辑的一项具体实施例;
图8B绘示用以跨指令群组进行最佳化的逻辑的其它具体实施例;
图8C绘示用以跨指令群组进行最佳化的逻辑的其它具体实施例;
图9A绘示用以在指令群组内并且跨指令群组进行最佳化的逻辑的具体实施例;
图9B绘示用以在指令群组内并且跨指令群组进行最佳化的逻辑的具体实施例;
图10绘示用于形成指令群组及/或最佳化指令群组的解码逻辑的一项实施例;
图11绘示计算机程序产品的一项具体实施例;
图12绘示主机计算机***的一项具体实施例;
图13绘示计算机***的进一步实施例;
图14绘示包含计算机网路的计算机***的另一实施例;
图15绘示计算机***的各种元件的一项具体实施例;
图16A绘示图15所示计算机***的执行单元的一项具体实施例;
图16B绘示图15所示计算机***的分支单元的一项具体实施例;
图16C绘示图15所示计算机***的载入/存储单元的一项具体实施例;以及
图17绘示用以合并并且使用一或多项态样的仿***机计算机***的一项具体实施例。
具体实施方式
依据一或多项态样,分组成指令群组的指令是跨群组界限予以最佳化。举一项范例来说,橫跨多个群组的指令序列是借由留存与一个群组结束时的指令有关的资讯而最佳化,该指令接着与后续群组开始时的指令进行共最佳化。在一进一步态样中,最佳化是在群组内及/或跨群组进行。此最佳化功能可在执行不同处理器的许多不同处理环境中使用。比如,可与以国际商业机器公司所提供的z/Architecture为主的处理器配合使用。该等处理器的一或多者可以是诸如Systemz服务器等服务器的部分,该部分实施z/Architecture并且是由国际商业机器公司(IBM)提供。此z/Architecture的一项具体实施例是于2012年9月在第十版IBMPublication第SA22-7832-09号题为“z/ArchitecturePrinciplesofOperation”的IBM出版物说明,其完整内容是合并于本文作为参考。在一范例中,该等处理器的一或多者执行也由国际商业机器公司提供的作业***,例如z/OS作业***。IBM、Z/ARCHITECTURE及Z/OS是美国纽约阿蒙克市(Armonk)的国际商业机器公司的注册商标。本文使用的其它名称可以是国际商业机器公司或其它公司的注册商标、商标、或产品名称。在进一步具体实施例中,处理器是以国际商业机器公司提供的PowerArchitecture为主,并且可以是比如Power700系列处理器。PowerArchitecture的一项具体实施例是于2013年5月3日在国际商业机器公司的“PowerISAVersion2.07”中说明,其完整内容是合并于本文作为参考。POWERARCHITECTURE是国际商业机器公司的注册商标。用以合并并且使用最佳化功能的一或多项态样的处理环境的一项特定范例是参照图1予以说明。在此特定范例中,处理环境是以国际商业机器公司提供的PowerArchitecture为主,但这只是一项范例。一或多项态样是适用于国际商业机器公司或其它公司提供的其它架构。请参阅图1,处理环境100包括比如中央处理单元(CPU)110,该中央处理单元是借由互连112耦接至各种其它组件,该等其它组件包括例如含有控制处理环境某些基本功能的基本输出入***(BIOS)的唯读内存(ROM)116、随机存取内存(RAM)114、I/O配接器118、以及通讯配接器120。I/O配接器118可以是与存储装置121连系的小型计算机***接口(SCSI)配接器。通讯配接器120介接伴随网路122的互连112,使处理环境100能够与其它***通讯,例如远程计算机124。
互连112也具有经由使用者接口配接器126及显示配接器136与其连接的输出入装置。键盘128、轨迹球130、滑鼠132及扬声器134全都经由使用者接口配接器126互连至总线112。显示器138是借由显示配接器136连接至***总线112。按照这种方式,处理环境100举例而言,例如通过键盘128、轨迹球130、及/或滑鼠132接收输入,并且例如经由网路122在存储装置121、扬声器134及/或显示器138上提供输出。处理环境100中绘示的硬件元件用意不在于穷举,而是要表示一项具体实施例中的处理环境的例示组件。
处理环境100的作业可借由程序码控制,例如韧件及/或软件,该程序码举例而言,典型包括诸如AIX(R)(AIX是国际商业机器公司的商标)等作业***、及一或更多个应用或中介软件程序。韧件于本文中使用时,包括例如:处理器的微码、毫码及/或巨集码(macrocode)。比如,其包括实施更高层次机器码时使用的硬件级指令及/或数据结构。在一项具体实施例中,其包括例如典型经传递作为微码的专属码,该专属码包括可信赖的软件或专属于下层硬件的微码,并且控制作业***对***硬件的存取。此程序码包含下文参照图2所述的指令。
请参阅图2,其进一步详述处理环境的处理器200(例如:中央处理单元110)。在一项范例中,处理器是超纯量处理器,其自内存(例如:图1的RAM114)抓取指令,并将该等指令载入处理器的指令定序逻辑(ISL)204。此指令定序逻辑包括例如一阶指令快取(L1I-cache)206、撷取-解码单元208、指令伫列210及调度单元212。在一项范例中,指令是载入ISL204的L1I-cache206,并且是留存于L1I-cache206中,直到有要求、或因无需求而遭取代为止。指令是抓取自L1I-cache206,并且在一项具体实施例中,是分组成指令群组并借由撷取-解码单元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发出现行指令至通用执行引擎224,该通用执行引擎包括多个执行单元(EU)230a至230n。执行单元230a至230n有各种类型,包括例如浮点(FP)、定点(FX)及载入/存储(LS)。通用执行引擎224经由数据快取234而与数据内存(例如:图1的RAM114、ROM116)交换数据。此外,发出伫列222可含有浮点类型或定点类型、及/或载入/存储的指令。然而,应了解的是,可使用任何数量及类型的指令。在执行期间,EU230a至230n自暂存器档案232a至232n中的实***置获得来源运算元值,并且若有结果数据,则在暂存器档案232a至232n及/或数据快取234存储结果数据。
暂存器管理单元214包括例如:(i)映射器丛集215,该映射器丛集包括已架构暂存器映射器216、统一主映射器218及中间暂存器映射器i220;以及(ii)发出伫列222。映射器丛集215追踪指派予各种指令的逻辑暂存器的实体暂存器。在一项具体实施例中,已架构暂存器映射器216具有16个各类型的逻辑(即非实体映射)暂存器,该等逻辑暂存器存储逻辑至实体暂存器映射器数据的最新、有效的(即经检查点检查的)状态。然而,应认知的是,不同处理器架构可具有比这项具体实施例中所述更多或更少的逻辑暂存器。再者,已架构暂存器映射器216包括指标清单,该指标清单识别描述经检查点检查的状态是那个实体暂存器。实体暂存器档案232a至232n典型含有比已架构暂存器映射器216中入口数量更多的暂存器。应注意的是,重新命名的映射方案中所使用实体及逻辑暂存器的特定数量可改变。
相比之下,统一主映射器218典型是大于(典型含有高达20个入口)已架构暂存器映射器216。统一主映射器218促进逻辑至实体暂存器映射的暂态的追踪。“暂态”一词是指统一主映射器218在指令无次序(OoO)执行时保持追踪试探性逻辑至实体暂存器映射数据的事实。无次序执行典型是在有较旧指令时出现,该等较旧指令会比管线中较新指令花更长(即使用更多时脉周期)执行。然而,无次序指令的执行结果若因特定理由(例如:分支误预测)需要排清,处理器便可回复到已架构暂存器映射器216所维持的经检查点检查状态,并且自最新、有效状态开始继续执行。
统一主映射器218使实体暂存器档案232a至232n中的实体暂存器与已架构暂存器映射器216产生关联。“统一”这个限定用语所指的事实是:统一主映射器218排除用于各暂存器档案232(例如:通用目的暂存器(GPR)、浮点暂存器(FPR)、定点暂存器(FXP)、例外暂存器(XER)、条件暂存器(CR)等)的定制设计专属映射器的复杂性。除了建立暂态、无次序指令的逻辑至实体暂存器映射器入口外,统一主映射器218也保持追踪相依性数据(即与管线中较旧指令结束相依的指令),该相依性数据是用于指令排序。按照惯例,统一主映射器218一旦已输入指令的逻辑至实体暂存器转译,指令便传递至发出伫列222。发出伫列222在发出指令至执行单元230执行之前先作用为闸道管理员。一般来说,指令若相依于较旧指令才能结束,便无法离开发出伫列222。因此,统一主映射器218借由存储各已映射指令的发出伫列定位数据来追踪相依性数据。指令一旦已由通用执行引擎224执行,便称为已“结束”,并且是从发出伫列222淘汰掉。
暂存器管理单元214可在单一周期内自调度单元212接收多个指令,以便维持已填补、单一的发出管线。指令的调度受限于统一主映射器218中可用入口的数量。在一些缺乏中间暂存器映射器220的映射器***中,若统一主映射器218共计有20个映射器入口,则一次可进发(inflight)(即未经检查点检查)的指令最多有20。因此,调度单元212可设想调度的指令比实际从统一主映射器218淘汰掉的指令还多。统一主映射器218之所以有这样的瓶颈,理由在于:按照惯例,指令的映射器入口无法从统一主映射器218淘汰掉,直到指令“完成”(即所有较旧指令全都已“结束”执行)为止。
然而,在一项具体实施例中,中间暂存器映射器220作用为非时序关键暂存器,该非时序关键暂存器来自统一主映射器218的“已结束”、但“未完成”指令会在指令最后完成前先淘汰(即从统一主映射器218移除)。指令一旦“完成”,完成单元221便将通知中间暂存器映射器220完成。中间暂存器映射器220中的映射器入口接着可借由更换目前存储于已架构暂存器映射器216中的对应入口,更新已架构暂存器映射器216的已架构同调状态。
与映射器及其相关处理的一项具体实施例有关的进一步详细内容的说明,请参阅2013年4月4日Gschwind等人的题为“ScalableDecode-TimeInstructionSequenceOptimizationofDependentInstructions”的美国公开案第2013/0086361号,其完整内容是合并于本文作为参考。如以上说明,处理器200运用管线处理执行撷取自内存的指令。与此处理的一项具体实施例有关的进一步详细内容的说明请参照图3,其绘示处理器管线的一项范例。在一项范例中,将指令撷取到指令撷取单元300内,该指令撷取单元包括例如指令撷取(IF)302、指令快取(IC)304及分支预测器306。指令撷取单元300是耦合至群组形成与解码单元310,该群组形成与解码单元包括一或多个解码阶段(Dn)312、以及用以将经解码指令转送至群组调度(GD)320的转送阶段(Xfer)314。群组调度320是耦合至映射单元(MP)322(例如图2的已架构暂存器映射器216、统一主映射器218、及/或中间暂存器映射器220),该等映射单元是耦合至处理单元330。处理单元330处理不同类型的指令。举例而言,于331,所绘示的是包括分支重定向(BR)337的指令的处理,包括有例如指令发出(ISS)332、暂存器档案读取(RF)334、执行(EX)336、分支重定向337至指令撷取302、写回(WB)346、及转送(Xfer)348;于333,绘示的是载入/存储指令的处理,包括有例如指令发出332、暂存器档案读取334、运算地址(EA)338、数据快取(DC)340、格式化(FMT)342、写回346、及转送348;于335,绘示的是定点指令的处理,包括有例如指令发出332、暂存器档案读取334、执行336、写回346、及转送348;以及于337,绘示的是浮点指令的处理,包括有例如指令发出332、暂存器档案读取334、六周期浮点单元(F6)344、写回346、及转送348。各类型指令的处理转送至群组认可(CP)350。举例而言,在中断及排清的情况下,群组认可350的输出是耦合至指令撷取302。
与群组形成与解码单元310的一项具体实施例有关的进一步详细内容的说明,请参照图4A至4C。请参阅图4A,在一项具体实施例中,诸如解码器0及解码器1等多个解码器402、404是分别耦合至包括多个指令的指令快取400。在一项范例中,解码器402自指令快取400接收第一指令0(I0),并且解码器404自该快取接收第二指令1(I1)。各解码器分别包括指令解码器406、408,用以进行指令的初始解码,并且用以提供关于该解码的资讯410、412、414及416。例如,资讯414及416是提供至最佳化分析引擎(OAE)418;以及资讯410及412是分别提供至指令最佳化器422、420。在一具体实施例中,最佳化分析引擎418比较解码器402及404中指令的特性,以判断其是否对应于多个复合序列的其中一者,该等复合序列是最佳化的候选者。再者,最佳化分析引擎418回应于多个控制信号,以在例如设定组态位元时,抑制复合序列的辨识。组态位元可对应于特定实施暂存器,用来在侦测到设计误差时、已判断进行DTIO序列不再有助益时、处理器进入单一指令(追寻)模式时等等,全部复合指令或复合指令子集停用解码时间指令最佳化(DTIO)。最佳化分析引擎418可为如图4A所示的单一实体,或可予以复制,分布、分割或按另一种方式整合到解码器402及404中的一或多者。最佳化分析引擎可组合于单一大型复合解码器(例如:包括但不限于在单一结构中包含最佳化分析引擎418、解码器402及解码器404的复杂解码器)中,用以促进电路设计改进的逻辑最佳化。
最佳化分析引擎提供指示是否已侦测到可进行最佳化的复合序列的资讯、以及关于序列本质的资讯(例如:解码器最佳化逻辑用于产生经最佳化序列的是多个指令、及/或序列特定属性的何者)。OAE也提供操纵逻辑至选择器以选择下列其中一者:初始解码作业所产生的未经最佳化内部作业(iop)、或与经最佳化DTIO序列中iop对应的iop。经最佳化序列中的iop已在OAE控制信号的控制下借由例如最佳化逻辑、并且基于接收自解码器的附加资讯来产生,该等解码器已解码一部分经最佳化的复合序列,举例而言,例如暂存器区分符、立即栏位及作业码。
最佳化分析引擎418是耦合至指令最佳化器420及指令最佳化器422。指令最佳化器420自指令解码器408接收运算元及指令资讯,而指令最佳化器422自指令解码器406接收运算元及指令资讯。
另外,指令最佳化器420及指令解码器406是耦合至选择逻辑426,而指令最佳化器422及指令解码器408是耦合至选择逻辑428。最佳化分析引擎418可提供选择资讯424至选择逻辑426、428,用于判断各别指令I0或I1是否应该产生各别iop指令(iop(0)、iop(1))、或是否应该使用经最佳化指令。
最佳化器420(或最佳化器422)的一项具体实施例的说明请参照图4B。第一指令450及下一顺序指令452是判断为用于最佳化454的候选者。第一指令450包括运算码(OP1)、来源暂存器栏位(RA1)、立即栏位(I1)、及结果目标栏位(RT1)。下一顺序指令452包括运算码(OP2)、来源暂存器栏位(RA2)、立即栏位(I2)、及结果目标栏位(RT2)。这些若不可根据预定义最佳化准则最佳化,则予以依序(OP1456先,然后OP2458)执行。然而,若符合准则(包括例如RT1=RA2),则下一顺序指令是由最佳化器420经修改以包括I1及I2的串连值,并且提供新下一顺序指令462,该新下一顺序指令是相对于第一指令460予以无次序执行。在一项具体实施例中,经修改的下一顺序指令具有新有效运算码(OP2x)。
最佳化器420(或最佳化器422)的另一具体实施例是于图4C中绘示。在这项实施例中,第一指令470及下一顺序指令472是判断为用于最佳化474的候选者。第一指令470包括运算码(OP1)、来源暂存器栏位(RA1)、另一来源暂存器栏位(RB1)、及结果目标栏位(RT1)。下一顺序指令472包括运算码栏位(OP2)、来源暂存器栏位(RA2)、另一来源暂存器栏位(RB2)、及结果目标栏位(RT2)。这些若不可根据该预定义最佳化准则最佳化,则予以依序(OP1480先,然后OP2482)执行。然而,若符合准则(包括例如RT1=RA2),则下一顺序指令是由最佳化器420修改以包括RB1,并且产生新下一顺序指令478,该新下一顺序指令是相对于第一指令476予以无次序执行。在一项具体实施例中,经修改的下一顺序指令具有新有效运算码(OP2x)。
最佳化的一种形式于本文中说明时是解码时间指令最佳化,其中,指令群组中的指令是于解码时间或预解码时间(两者在本文中是称为解码时间)进行最佳化。指令群组包括一或多个指令,并且在本文所述的具体实施例中,一群组包括多达四个指令。然而,在其它具体实施例中,一群组可包括比本文所述实施例更多或更少的指令。
用以形成指令群组的逻辑的一项具体实施例是参照图5来说明。请参阅图5,在一项具体实施例中,在步骤500,开始新空白群组。接着,在步骤502,经撷取指令是新增至指令群组,以及于询问504,判断群组中是否有还有指令讯槽。群组中若还有指令讯槽(例如:到目前为止已新增的指令少于4个),则在步骤502,处理继续新增指令至指令群组。然而,群组中若已无指令讯槽,则在步骤506,通过管线发送指令群组用于进一步处理。另外,于询问508,判断是否还有待处理的指令。若还有指令,则处理继续步骤500。否则,群组形成完成。
群组的形成称为群组形成或解码群组形成,已预先限制待最佳化的指令跨越多个指令群组时进行指令最佳化的能力。例如,假设加入立即移位(addis)指令典型是以载入指令(ld)予以最佳化。如图6所示,若addis指令是在群组1中且载入指令是在群组2中,则指令未进行最佳化,在这项具体实施例中,这是因为该等指令是在不同群组。因此,即使基于一个最佳化准则,当加入立即移位(addis)指令后跟随着载入(ld)指令时,仍是要进行最佳化,在这种情节中,则不是,理由为指令是在不同指令群组。
然而,依据一项态样,诸如解码时间指令最佳化等最佳化是跨指令群组提供。例如,处理器以可调适方式形成可跨越多个群组的指令群组。跨越多个群组的指令序列是借由留存资讯进行最佳化,例如与群组结束时的指令有关的资讯,该指令是与后续群组开始时的指令进行共最佳化。举一项特定实施例来说,与指令序列的开头对应的第一组指令是在第一群组中,而且该等指令是经最佳化并且注入处理器。指令序列中留存关于初始指令的资讯。经留存指令资讯接着是用于与第二群组中的甚至更多指令进行共最佳化。举例而言,经留存资讯包括例如微架构指标、暂存器编号、及/或表格参考(例如:32位元位移表中的索引)。
在一项具体实施例中,处理环境是多执行绪环境,因此,指令是与执行绪相关。在此一环境中,若指令是与相同执行绪相关,则最佳化是跨群组进行。这是以绘图方式在图内存中绘示。
请参阅图7A,于执行绪t1,有包括指令i1、i2、i3及加入立即移位(addis)指令的第一群组。诸如解码时间指令最佳化等最佳化是(或可以是)在该群组内进行,其在此情况下,产出具有相同指令的相同群组。再者,在此实例中,留存的是关于加入立即移位指令的资讯,用以实现以另一群组中的指令进一步最佳化的可能性。
在这项实施例中,第二群组包括载入(ld)指令、以及指令i6至i8。经留存资讯是用于在第二解码群组中,如700所示,对加入立即移位及载入指令进行共最佳化。例如,在这项实施例中,ld指令因经留存资讯而独立于addis指令,而对具有由“下”位元所组成的位移的暂存器r4的相依性是以对暂存器r2、以及留存自前一个群组中第一指令的“上”位元与留存于ld指令中的“下”位元的组合的相依性来取代。参照经组合位移,
"upper∪lower"
表示上位元与下位元的组合的速记(shorthand),有考虑到依据PowerISA中ld指令的定义,对于“下”位移的隐含符号延伸的任何调整。
如上述,在一项具体实施例中,为了跨越解码群组进行最佳化,指令不在相同执行绪内。因此,在图7B所示的实施例中,可留存与加入立即移位指令有关的资讯,但没有以载入指令进行共最佳化,因为载入指令是来自不同执行绪(例如:执行绪2)。在进一步具体实施例中,未留存与加入立即移位指令有关的资讯,因为所判断的是:载入指令与不同执行绪相关。
与跨多个指令群组进行最佳化相关的逻辑概观的一项具体实施例是参照图8A予以说明。一开始,在步骤801,获得第一指令群组。接着,在步骤803,判断第一指令群组的一或多个指令是否要以第二指令群组的一或多个指令进行最佳化。于询问805,若第一群组的一或多个指令要以第二群组的一或多个指令进行最佳化,则在步骤807,如本文所述,最佳化是跨群组进行。之后,在步骤809,放出经最佳化序列(在指令流中进行解码及转发)。
回到询问805,最佳化若不跨群组进行,则于询问811,判断最佳化是否要在第一群组(或甚至是第二群组)内进行。若最佳化是要在一群组内进行,则在步骤813,该群组内的指令进行最佳化,并且在步骤809,放出经最佳化序列。然而,若最佳化不要在一群组内进行,则在步骤815,放出经接收指令的一或多者。
与跨越多个指令群组进行最佳化有关的进一步详细内容是参照图8B予以说明。一开始,在一项具体实施例中,在步骤800,接收指令,然后于询问802,判断该指令是否是内含最佳化指令序列的成员(例如:该序列是在一个群组内)。例如,检验指令群组看看该群组是否包括所有要互相进行最佳化的指令,举例而言,如基于例如预定义准则、已存资讯、及/或与该等指令有关的参数所判断者。若指令是内含最佳化指令序列的成员,则接着在步骤804,进行最佳化(例如:DTIO)。最佳化改善符码执行的方式是借由例如:将多个指令组合成单一内部指令;将多个指令重新组合成多个/更少数内部指令;以更少数据相依性将多个指令重新组合成多个内部指令;及/或将多个指令重新组合成多个按另一种方式执行更轻易/更快速的内部指令。在一项具体实施例中,提供规定特定指令最佳化进行方式的范本。再者,其它资讯是用于提供进行最佳化用的通用导则。
进行最佳化之后,在步骤806,放出经最佳化序列。
回到询问802,若经接收指令不是内含最佳化指令序列的成员,则于询问808,进一步判断指令是否是可能跨越的最佳化序列的开始。例如,群组中及一种类型的上次指令是否要进行共最佳化(例如:addis指令)。待进行共最佳化的指令类型可予以在例如范本、预定义准则、数据结构中指示、及/或基于参数来判断。若指令是跨越序列(跨越多个群组的序列)的开始,则在步骤810,留存与指令有关的资讯,例如,其在多执行绪环境下,为执行指令的执行绪的执行绪识别符。接着,在步骤812,放出经接收指令。
回到询问808,若指令不是可能跨越的最佳化序列的开始,则在步骤814,放出经接收指令。
使用经留存资讯进行最佳化的进一步详细内容是参照图8C予以说明。一开始,在步骤830,接收指令群组(例如:第二群组或甚至是后面的群组)中的一或多个指令,然后于询问832,判断该(等)经接收指令是否是具有经留存资讯的可最佳化指令序列的成员。也就是,此后续群组中的经接收指令是否可利用来自供留存资讯的前一个群组的指令进行最佳化。在多执行绪处理器中,在一项具体实施例中,此决策也考虑到待进行共最佳化的指令是否来自相同执行绪,如以上参照图7A至7B并参照步骤810的执行绪识别符所述。
若经接收指令是具有经留存资讯的可最佳化序列的成员,则在步骤834,使用经留存资讯对这两者(或更多群组)的指令进行最佳化,然后在步骤836,放出经最佳化序列。
回到询问832,若指令不是具有经留存资讯的可最佳化指令序列的成员,则于询问838,进一步判断其是否是内含最佳化指令序列(例如:在相同群组中)的部分。若是,则在步骤840,在群组内进行最佳化,然后在步骤842,放出经最佳化序列。
回到询问838,若指令不是内含最佳化指令序列的成员,则在步骤844,放出经接收指令。
本文详述的是跨指令群组界限进行最佳化的一项态样。在进一步具体实施例中,最佳化是于群组内、及/或跨群组进行。与在群组内进行最佳化、及跨群组进行最佳化相关的逻辑的一项具体实施例是参照图9A予以说明。
请参阅图9A,一开始,在步骤900,接收指令,然后于询问902,判断该指令是否是内含最佳化指令序列的成员。若该指令是内含最佳化指令序列的成员,则在步骤904,于群组内进行最佳化,然后在步骤906,放出经最佳化序列。
回到询问902,若该指令不是内含最佳化指令序列的成员,则于询问908,进一步判断其是否是在局部群组(例如:一个特定群组)中具有k个指令的可能跨越n-路(例如:2或更多路)最佳化序列的开始。若该指令是可能跨越最佳化序列的开始,则在步骤910,对一个群组中可用的k个指令进行最佳化,然后在步骤912,连同执行绪识别符(若适用)留存与那k个指令有关的资讯。在步骤914,放出局部经最佳化序列。
回到询问908,若该指令不是可能跨越n-路最佳化序列的开始,则在步骤916,放出经接收指令。
经留存资讯的使用是参照图9B予以进一步说明。一开始,在步骤930,接收后续群组中的一或多个指令。于询问932,判断该(等)指令是否是始于经留存资讯的经最佳化指令序列的成员。若是,则在步骤934,使用经留存资讯进行最佳化,然后在步骤936,放出经最佳化序列(其包括有跨二或更多个群组的指令)。在一项具体实施例中,经留存资讯包括所使用的执行绪识别符,如本文所述。
回到询问932,若该指令是具有经留存资讯的最佳化指令序列的成员,则于询问938,进一步判断其是否是内含最佳化指令序列的成员。若是,则在步骤940,进行最佳化,然后在步骤942,放出经最佳化序列。否则,在步骤944,放出经接收指令。
在跨指令群组进行最佳化时,相比于非跨越案例的指令序列,跨越案例有可能产生不同指令序列。举例而言,假设第一群组包括加入立即移位指令(例如:addisr4,r2,upper),并且第二群组包括载入指令(例如:ldr4,r4,lower),则对于非跨越案例而言,该等指令是最佳化成例如一个指令:ldr4,r2。
lower∥upper
;但对于跨越案例而言,该等指令是最佳化成两个指令:addisr4,r2upper;ldr4,r2,
lower∥upper
。在后面的案中,该载入由于不必等待第一addis完成并产生r4而进行最佳化。而是,其可立即读取r2以并行执行,而且甚至是在addis指令前先执行。
再者,在一项具体实施例中,如上述,经留存资讯是与执行绪识别符相关,用以避免跨两个不同执行绪的误最佳化(falseoptimization)。在一项具体实施例中,每个执行绪留存一组资讯,或在进一步具体实施例中,各执行绪可留存k组资讯。若有例外状况或其它控制流程变更,则与排清相关的执行绪进行经留存资讯的排清。在另一具体实施例中,经留存资讯是在撷取/解码跨执行绪交替时排清,以避免不正确的跨执行绪共最佳化。
如上述,最佳化候选序列可完全内含于一个指令群组中;可在第一指令群组中开始并可在第二指令群组中完成;或其可在第一指令群组中开始,在第二指令群组中继续,然后在又另一群组中完成。在一项具体实施例中,候选序列的侦测及处理包括进行最佳化,是跟随着一或多个范本。若可套用的范本有多个,则该等范本得以设定优先权。
范本是借由待呈现于指令流中的一些指令来识别。范本可包括输入、条件、及/或输出。输入是待呈现的指令序列。在一项具体实施例中,待由范本进行最佳化的指令是相邻的,即无中间指令;然而,在另一具体实施例中,包括的是未经范本序列的运算元参考或干扰的介入指令。指令运算符及格式要符合经规定指令的运算符及格式。运算元之间有关系性,使得所有类名的运算元都要互相一致(例如:若运算元是在范本的数个位置出现,则所有相关运算元栏都要互相一致)。文字所指的变数(即直接表示成例如暂存器编号、数值、或其它经直接规定运算元的值)要具有指令中直接表示的文字所指的值。
任选的是,可提供规定待符合条件的范本条件。例示条件包括指令规定的常数要是正数、或暂存器要配对等,以便范本可以适用。
范本输出规定经最佳化输出序列,该经最佳化输出序列包括一或多个指令,称为内部作业(iop),以及运算元。其可规定来自范本的运算元栏;作用在于视需要产生新栏、值等;及/或可搭配连续序号规定待留存值。
一般而言,在一项具体实施例中,由范本所表示的候选序列的最佳化可具有特定语法。例如,对于一个群组的最佳化,若指令1等于第一候选序列的指令一(i1=cs1.i1),并且指令二等于第一候选序列的指令二(i2=cs1.i1),而来源(src(i2))与目的地(dst(i1))之间有关系性,则最佳化序列等于具有指令i1与i2的第一候选序列的最佳化。若这个条件不成立,则内部指令1是i1的解码,而内部指令2是i2的解码。如下所示:
If(i1=cs1.i1)and(i2=cs1.i2)andsrc(i2)=dst(i1)then
iop_sequence=perform_cs1_dtio(i1,i2)
Else
iop1=decode(i1)
iop2=decode(i2)。
以下列示一项特定范本实施例,其中借由串连并且考虑加入立即移位(addis)指令/加入立即(addi)指令对位移所进行的隐含正负号扩充,将两个16位元组合成单一32位元立即栏位:
范本:(破坏性(即覆写addis/addi序列)
i1=addis<r1>,<r2>,<upper>
12=addi<r1>,<r2>,<lower>
=>optimization:
addi32<r1>,<r2>,combine(<upper>,<lower>)
范本可手动或利用工具转译成VHDL(非常高速积体电路硬件描述语言)符码。此符码要符合该(等)范本的指令:符合相依性/运算元再用关系;及/或产生相关输出。
以上范本的VHDL符码的一项实施例是:
IFopcode(i1)=OP_ADDISANDRT(i1)=RT(i2)ANDRT(i1)=
RS1(i2)ANDopcode(i2)=ADDITHEN
i1out_op<=IOP_ADDI32;
i1out_rt<=RT(i1);
i1out_rs1<=RS1(i1);
i1out_imm<=combine(si16(i1),si(i2));
i2out_op<=IOP_NOP_ORI;
ELSIFopcode(i1)=...--othertemplates
...
ELSE
i1out_op<=iop(opcode(i1);
...
i2out_op<=iop(opcode(i2));
...
ENDIF
在至少一项具体实施例中,具有x个指令的候选序列比具有y个指令的解码群组具有更少指令。因此,在一项具体实施例中,VHDL符码可自动从范本产生,其中相同候选序列是在第一指令、第二指令等,乃至第(y-x)指令进行侦测及最佳化。
在进一步范本实施例中,可借由最佳化输出超过一个指令,如下所示:
范本:(非破坏性addis/addi序列)
i1=addis<r1>,<r2>,<upper>
i2=addi<r3>,<r1>,<lower>
=>optimization:
addis<r1>,<r2>,<upper>
addi32<r3>,<r2>,combine(<upper>,<lower>)
此范本借由串连并考虑借由addis/addi对位移进行隐含正负号扩充,将两个16位元立即栏位组合成单一32位元立即栏位。这种形式对于r1产生中间结果,因为其未遭到范本中的下一个指令覆写(未遭销毁)。在一项具体实施例中,范本具有平行语意,而输入逻辑暂存器要重新命名,但未参考重新命名逻辑对目标暂存器所配置的任何输出重新命名暂存器。
虽然在以上实施例中,展示的是两个指令序列,其它序列仍可包括超过两个指令,并且仍包括于相同的解码群组中。例如,n(例如:3)指令候选序列的一项实施例包括:addpcis+r4,pc,upper;addir4,r4,lower;以及lvx*vr2,r0,r4。此序列可在以下范本中表示:
i1=addpcis+<r1>,<r2>,<upper>
i2=addi<r1>,<r1>,<lower>
i3=lvx*<vrt>,r0,<r1>
=>optimization:
lvd<vrt>,pc_or_gpr(<r2>),combine(<upper>,<lower>)
此addpcis指令是要在特定架构中提供程序计数器(PC)相对定址,例如POWERISA。此addpcis指令类似于addis,但在RA栏位的值为0时,引进PC的值,而不是常数0。此pc_or_gpr函式处理扩充PC特例,因为lvd案例会类似于所有其它RA运算元,按另一种方式将RA运算元处理为表示0的0值、以及表示该逻辑暂存器的其它暂存器值。Lvd不是例如POWER架构的已架构指令,但是当作内部作业使用,该内部作业描述具有经实施定义的位移的载入指令。在一项实施例中,lvx*是一种指令形式,其将基底暂存器(例如:这项实施例中的4)定义为在指令执行之后具有未规定值。在一项实施例中,lvx*是lvx指令的新形式,指示至少一个暂存器的前次使用(例如:本文要定义成指示为范本中的<r1>的暂存器)。
在一项具体实施例中,对于具有x+1个指令的范本,要开始候选序列的有x个可能位置,使得候选序列未内含于单一指令群组。以下说明的是处理此情节的范本。
对于跨越指令群组的范本,此范本输入进一步规定解码群组的结束($EODG),其指示借由解码群组界限将潜在更长的候选序列分割的点。在进一步具体实施例中,其也包括此解码群组的开头($BODG(cont,<op1>,<op2>))。此指示延续前群组中的候选序列的范本。(与多个执行绪并且留存的资讯对应的执行绪识别符相符、或多个经留存指令资讯集其中一者的选择在多执行绪处理器中具有隐含性。)再者,在这项具体实施例中,范本输出可规定待留存的值、以及连续序号,例如$EODG(cont,<op1>,<op2>)。
跨越多个指令群组的候选序列使用多个范本,至少一者描述指令群组界限一侧的指令群组,而至少一个其它范本描述指令群组界限另一侧的指令。应知与第一指令群组中的指令序列对应的指令,该第一指令群组包括具有k个指令的最佳化候选序列的n个第一指令构成的指令集,k>n,发现n个指令并不保证剩余指令(即候选序列剩余的k-n个指令)会跟随在后。因此,针对前k个指令产生的任何序列都要正确表示这k个指令的执行,即使这k个指令并非这n个指令序列的前k个指令亦然。
接着,这k个指令可能也为具有m个指令的第二最佳化候选序列的开始。在一项具体实施例中,由于这k个指令以隔离方式表示那k个指令,而且m个指令构成的第二候选序列(m等于或不等于k)也是同样情形,在第一指令群组中具有共用的第一组指令、以及第二组(至少)两个不同延续的两个候选序列是有可能的,例如具有一个共用的第一指令的3个候选序列:
addisr3,r2,12ldr3,r3,8;
addisr3,r2,12lff3,r3,8;
addisr3,r2,12addir3,r3,8;lvxv3,r0,r3;
2-指令最佳化候选序列可自动产生范本。对于两个指令候选群组,第一指令必须在指令群组界限的一侧,而第二指令必须在群组界限的另一侧。在两个指令的1+1分割群组中,第一指令是由本身来表示(一个指令只能由自身来表示);而第二指令是由一(多)个相同指令来表示,这(几)个相同指令已在内含范本中表示最佳化群组。
第一解码群组(DG)的32位元加法的范本的一项实施例如下:
第1DG范本
i1=addis<r1>,<r2>,<upper>
$EODG
=>optimization
addis<r1>,<r2>,<upper>
$EODG(addi32,<r1>,<r2>,<upper>)
此i1指令是自行转译,而r1与r2栏位、<upper>所识别的立即栏位、以及指示addi32范本的标记则保留。
第二解码群组的32位元加法的一例示范本如下:
第2DG范本:
$BODG(addi32,<r1>,<r2>,<upper>)
i1=addi<r1>,<r1>,<lower>
=>optimization:
addi32<r1>,<r2>,combine(<upper>,<lower>)
范本中的指令由于是第二范本的第一指令而标示为i1。
「combine」借由串连并考虑借由addis/addi对位移进行隐含正负号扩充,将两个16位元立即栏位组合成单一32位元立即栏位。在这项实施例中,假设指令与相同执行绪相关。(这些范本对VHDL或其它范本应用对指令流的转译会经适当调适以提供这样的属性,如本文所述。)
N-指令最佳化候选序列典型可按照下列两者任一者的形式出现:若序列短于解码群组长度则完全内含于解码群组内、或具有n-1个反映不同点的范本,最佳化序列可在该等不同点以解码群组界限来分开。
下文说明n个指令的候选序列的实施例。在此案例中,这n个指令是内含于一个指令群组内,因此,得以使用代表一个指令群组的范本。
举一项实施例来说,三个指令序列包括:
addpcis+r4,pc,upper
addir4,r4,lower
lvx*vr2,r0,r4
一例示范本如下:
i1=addpcis+<r1>,<r2>,<upper>
i2=addi<r1>,<r1>,<lower>
i3=lvx*<vrt>,r0,<r1>
=>optimization
Lvd<vrt>,pc_or_gpr(<r2>),combine(<upper>,<lower>)
此addpcis指令是要在特定架构中提供程序计数器(PC)相对定址,例如POWERISA。此addpcis指令类似于addis,但在RA栏位的值为0时,引进PC的值,而不是常数0。此pc_or_gpr函式处理扩充PC特例,因为lvd案例会类似于所有其它RA运算元,按另一种方式将RA运算元处理为表示0的0值、以及表示该逻辑暂存器的其它暂存器值。Lvd不是例如POWER架构的已架构指令,但是当作内部作业使用,该内部作业描述具有经实施定义的位移的载入指令。在一项实施例中,lvx*是lvx指令的新形式,指示至少一个暂存器的前次使用(例如:本文要定义成指示为范本中的<r1>的暂存器)。Lvx是一种指令形式,其将基底暂存器(例如:这项实施例中的4)定义为在指令执行之后具有未规定值。
在进一步实施例中,第一指令之后有n-路解码群组界限。
第一DG的例示范本如下:
i1=addpcis+<r1>,<r2>,<upper>
$EODG
=>optimization:
addpcis<r1>,<r2>,<upper>
$EODG(addpcis,<r1>,<r2>,<upper>)
第二DG的例示范本如下:
$BODG(addpcis,<r1>,<r2>,<upper>)
i1=addi<r1>,<r1>,<lower>
i2=lvd<vrt>,r0,<r1>
=>optimization:
lvd<vrt>,pc_or_gpr(<r2>),combine(<upper>,<lower>)
在此案例中,重新命名逻辑中可能需要与重新命名逻辑中的<r1>与<r2>有关的特别处理,使得处理候选序列的第二部分时,第二转换可存取<r2>原来的实体名称。(在一项具体实施例中,这可能借由搭配逻辑暂存器编号存储实体暂存器编号来达成。)
在另一实施例中,第二指令之后有n-路解码群组界限:
第一DG的例示范本如下:
i1=addpcis+<r1>,<r2>,<upper>
i2=addi<r1>,<r1>,<lower>
$EODG
=>optimization:
addpci32<r1>,<r2>,combine(<upper>,<lower>)
EODG(addpci,<r1>,<r2>,combine(<upper>,<lower>))
在以上范本中,addpci32表示对应于addpcis指令共取用32b立即运算元的内部指令(iop)。
第二DG的例示范本如下:
$BODG(addpci,<r1>,<r2>,<si32>)
i1=lvx*<vrt>,r0,<r1>
=>optimization:
Lvd<vrt>,pc_or_gpr(<r2>),<si32)
Si32=带正负号的立即32位元。
在此案例中,重新命名逻辑中可能需要与重新命名逻辑中的<r1>=<r2>有关的特别处理,使得处理候选序列的第二部分时,第二转换可存取<r2>原来的实体名称。(在一项具体实施例中,这可能借由搭配逻辑暂存器编号存储实体暂存器编号来完成。)
在一项具体实施例中,第一解码群范本后可跟随第二解码群组的多个范本中的一者,或没有任何范本跟随:
第二DG的范本的一项实施例如下:
$BODG(addpcis,<r1>,<r2>,<upper>)
i1=lwz<r1>,<r1>,<lower>
=>optimization:
Lwz<r1>,pc_or_gpr(<r2>),combine(<upper>,<lower>)
范本可有许多其它实施例。以上范本只是提供作为一些实施例。可提供附加、更少及/或不同范本。再者,包括于范本中的资讯可有别于本文提供的例示范本中所述。可以有许多变化。
参照图10说明的是包括范本的解码器,该等范本是要在侦测及/或处理指令序列中使用,包括进行最佳化。在这项实施例中,指令解码逻辑1000是耦合至指令撷取单元1002及一或多个执行单元1004。指令撷取单元包括参考指令地址暂存器(IAR)1008的指令撷取逻辑1006。指令撷取逻辑自指令快取记忆区I$1010撷取转发至解码单元的指令。
解码单元包括例如用以接受指令的缓冲区1014。缓冲区1014是耦合至群组形成单元1016。群组形成1016是耦合至群组解码1020,该群组解码包括范本侦测逻辑1022、范本最佳化1024、及旧有解码逻辑1026。范本侦测逻辑1022、范本最佳化1024、及旧有解码1026是耦合至选择器1028。范本侦测1022是进一步耦合至解码群组(EODG)存储器1030的一端,该存储器存储一或多个执行绪与前一个解码群组中的指令有关的资讯,各执行绪具有相关执行绪识别符。在一项具体实施例中,对于一执行绪,当范本指示解码群组结束时的指令可以是跨越最佳化序列的解码群组的开始,EODG存储器接收待跨群组界限留存的资讯。EODG存储器提供关于前一个解码群组结束时所侦测指令模式的资讯,供目前的执行绪识别符侦测跨越最佳化机会的解码群组的延续性,并且供运算元使此最佳化产生效应。在一项具体实施例中,解码群组存储器1030的端处也耦合至对多执行绪环境维持执行绪识别码的存储器1032。
范本侦测1022是用于判断是否有指示经选择指令最佳化的范本,而范本最佳化是用于基于该等范本进行最佳化。选择器1028选择要执行的指令(例如:经最佳化或未经最佳化)。
指令解码逻辑1000的群组形成1016是用于基于范本形成群组、及/或于解码时间进行最佳化,如本文所述。
以上详述的是当待最佳化的指令跨越二或更多个指令群组时,最佳化指令的能力。指令序列将会跨越多个群组的似然度随着更大指令群组进行最佳化而提升。此跨越可在指令序列内的不同点进行(例如:一个指令之后、两个指令之后等)。在一项具体实施例中,识别可表示最佳化序列开始的指令,并且在那些指令所属群组最佳化期间留存关于那些指令的资讯。接着,当后续群组解码时,经留存资讯是用于进行该群组的最佳化,假设前提是:该群组的一或多个指令是待最佳化指令序列的部分。
在一项具体实施例中,不同最佳化可取决于指令群组特性来进行。
在进一步具体实施例中,本文所述具有多个部分的逻辑图(例如:图8B至8C、9A至9B)中的该等部分可组合成一个流程。另外,虽然各个步骤是按顺序展示,在进一步具体实施例中,某些步骤可平行进行。也可以有其它变化。
所属技术领域中具有通常知识者会了解的是,一或多项态样可体现为***、方法或计算机程序产品。因此,一或多项态样的形式可以是完全硬件具体实施例、完全软件具体实施例(包括韧件、常驻软件、微码等)、或组合软件与硬件态样的具体实施例,该等软件与硬件态样一般全可在本文中称为“电路”、“模组”或“***”。再者,一或多项态样的形式可以是在上有计算机可读取程序码体现的一或多个计算机可读取媒体中体现的计算机程序产品。
可利用一或多个计算机可读取媒体的任意组合。计算机可读取媒体可以是计算机可读取存储媒体。计算机可读取存储媒体举例而言,可以是(但不限于)电子、磁性、光学、电磁、红外线或半导体***、器具、或装置,或前述任何适当的组合。更特定的计算机可读取存储媒体实施例(非穷举清单)将会包括下列:具有一或多条导线的电连接、可携式计算机磁片、硬碟、随机存取内存(RAM)、唯读内存(ROM)、可抹除可程序化唯读内存(EPROM或快闪内存)、光纤、可携式唯独光碟(CD-ROM)、光学存储装置、磁性存储装置、或前述任何适当的组合。在本文件的内容中,计算机可读取存储媒体可以是任何有形媒体,可以含有或存储指令执行***、器具、或装置所用或相关联的程序。
请参阅图11,在一项实施例中,计算机程序产品1100包括例如一或多个用以于其上存储计算机可读取程序码的非暂存计算机可读取存储媒体,以便提供并且促进一或多项态样。
计算机可读取媒体上体现的程序码可使用适当的媒体来传送,包括但不限于无线、有线、光纤电缆、射频(RF)等等、或前述任何适当的组合。
用于操作一或多项态样的计算机程序码可写成下列一或多种程序语言的任何组合,包括有诸如Java、Smalltalk、C++或类似者等物件导向程序语言、以及诸如C程序语言、组合语言或类似程序语言等传统程序性程序语言。程序码可完全在使用者的计算机上执行、部分在使用者的计算机上执行,如同独立套装软件一般,可部分在使用者的计算机上且部分在远程计算机上执行、或可完全在远程计算机或服务器上执行。在后者的情景中,远程计算机可通过包括区域网路(LAN)或广域网路(WAN)等任何类型的网路连线至使用者的计算机,或者可(举例而言,使用网际网路服务提供者通过网际网路)连线至外部计算机。
本文参照根据具体实施例的方法流程图说明及/或方块图、器具(***)、以及计算机程序产品说明一或多项态样。将会理解的是,流程图说明及/或方块图的各功能块、以及流程图说明及/或方块图中的功能块组合可借由计算机程序指令来实施。可提供这些计算机程序指令至通用型计算机、特殊用途计算机、或其它可程序数据处理器具的处理器以产生机器,使得经由计算机或其它可程序数据处理器具的处理器执行的指令,建立用于实施流程图及/或方块图一或多个功能块中所指定功能/动作的手段。
这些计算机程序指令也可存储于可指挥计算机、其它可程序数据处理器具、或其它装置以特定方式作用的计算机可读取媒体中,使得存储于计算机可读取媒体中的指令产生包括指令的制品,所述指令实施流程图及/或方块图一或多个功能块中指定的功能/动作。
计算机程序指令也可载入到计算机、其它可程序数据处理器具、或其它装置,而在计算机、其它可程序器具或其它装置上进行一连串操作步骤以产生计算机实施程序,使得计算机或其它可程序器具上执行的指令提供用于实施流程图及/或方块图一或多个功能块中所指定功能/动作的程序。
图中的流程图及方块图说明根据一或多项态样的各项具体实施例可能实施的***、方法、以及计算机程序产品的架构、功能及操作。关于这一点,流程图或方块图中的各功能块可表示模组、节段、或部分符码,其包含用于实施一(多)个指定逻辑功能的一或多个可执行指令。也应注意的是,在一些替代实施中,功能块中注记的功能其出现的顺序可能与图中所注记的顺序不同。举例而言,相继展示的两个功能块事实上,可以实质并行执行,或该等功能块有时可按照相反次序来执行,端视涉及的功能而定。也应注意的是,方块图及/或流程图说明的各功能块、以及方块图及/或流程图说明中功能块的组合可借由进行指定功能或动作的特殊用途硬件式***、或特殊用途硬件与计算机指令的组合来实施。
除了上述以外,一或多项态样还可由提供客户环境管理的服务提供者来提供、供应、部署、管理、服务等。例如,服务提供者可为一或多名客户,建立、维护、支援等进行一或多项态样的计算机码及/或计算机基础架构。举例而言,服务提供者可依据订阅及/或费用协议,从客户收到付款。另外或替代地,服务提供者可经由对一或多个第三方销售广告内容收到付款。
在一项态样中,可部署应用程序以进行一或多项态样。举一项实施例来说,应用程序的部署包含提供可操作用以进行一或多项态样的计算机基础架构。
举进一步态样来说,可部署运算基础架构,其包含将计算机可读码整合到运算***,其中该符码与该运算***组合,能够进行一或多项态样。
举又进一步态样来说,可提供用于整合运算基础架构的程序,包含将计算机可读码整合到计算机***内。计算机***包含计算机可读取媒体,其中该计算机媒体包含一或多项态样。符码与计算机***组合能够进行一或多项态样。
虽然以上说明了各项具体实施例,这些具体实施例仍只是实施例。举例而言,其它架构的处理环境可合并并且使用一或多项态样。另外,可形成不同大小的指令群组,及/或可对形成技术进行变更。再者,可进行其它类型的最佳化,及/或可使用其它范本。可以有许多变化。
再者,其他类型的运算环境可受益于一或多项态样。举一例来说,可使用适用于存储及/或执行程序码的数据处理***,其包括至少两个通过***总线直接或间接耦合至内存元件的处理器。内存元件包括例如程序码实际执行期间运用的局部内存、大容量存储器、以及为至少一些程序码提供暂存空间的快取内存,其目的是要减少执行期间必须自大容量存储器抓取符码的次数。
输出入或I/O装置(包括但不限于键盘、显示器、指向装置、DASD、磁带、CD、DVD、大姆哥随身碟及其它记忆媒体等)可直接或通过中间输出入控制器耦合至***。网路配接器也可耦合至***,使数据处理***能够通过中间私有或公用网路,耦合至其它数据处理***或远程列印机或存储装置。数据机、缆线数据机、及乙太网路卡只是可用网路配接器类型中的一小部分。
请参阅图12,所示为用以实施一或多项态样的主机计算机***5000的代表性组件。代表性主机计算机5000包含一或多个与计算机内存(即中央存储)5002连系的CPU5001、以及连至存储媒体装置5011及网路5010用于与其它计算机或SAN及类似者通讯的输出入接口。CPU5001符合具有已架构指令集与已架构功能的架构。CPU5001可具有动态地址转译(DAT)5003,用于将程序地址(虚拟地址)转换成内存的真实地址。DAT通常包括用于快取转译的转译旁看缓冲区(TLB)5007,使得之后存取计算机内存5002的区块时,地址转译不需要延迟。快取记忆区5009典型是运用于计算机内存5002与处理器5001之间。快取记忆区5009可为阶层式,具有可用于超过一个CPU的大快取记忆区、以及介于大快取记忆区与各CPU之间,更小、更快(更低阶)的快取记忆区。在一些实作中,更低阶快取记忆区是分割成分别用于指令撷取及数据存取的低阶快取记忆区。在一项具体实施例中,指令是经由快取记忆区5009由指令撷取单元5004自内存5002撷取出来。指令是在指令解码单元5006中进行解码,然后调度(在一些具体实施例中,随着其它指令)至一或多个指令执行单元5008。典型运用的是数个执行单元5008,例如算术指令单元、浮点执行单元及分支指令执行单元。指令是由执行单元执行,视需要,自规定指令的暂存器或内存取用运算元。若要从内存5002取用(载入或存储)运算元,典型是由载入/存储单元5005在所执行指令的控制下处理存取。指令可在硬件电路中或在内部微码(韧件)中或借由两者的组合来执行。
如所述,计算机***包括局部(或主)存储器中的资讯、以及定址、保护、及参考与变更记录。定址的一些态样包括地址的格式、地址空间的概念、各种地址类型、以及一种地址类型转译成另一种地址类型的方式。主存储器有一些包括永久指派存储位置。主存储器提供***可直接定址快速存取数据存储器。数据及程序两者在可予以处理之前,都必须先(由输入装置)载入主存储器。
主存储器包括一或多个更小、更快速存取缓冲存储器,有时称为快取记忆区。快取记忆区典型与CPU或输出入处理器实体相关。程序一般无法观察实体构造的效应(效能除外)及相异存储媒体的使用状况。
可分别对指令及数据运算元进行快取记忆区的维护。快取记忆区内的资讯是以相连位元组的方式在整合界限上进行维护,称为快取区块或快取列(或简称列)。模型可提供EXTRACTCACHEATTRIBUTE指令,该指令以位元组为单位回传快取列的大小。模型也可提供PREFETCHDATA及PREFETCHDATARELATIVELONG指令,该等指令是用来进行存储器至数据或指令快取记忆区的预先撷取、或释放出快取记忆区的数据。
存储是视为长水平位元串。就大部分作业而言,对存储器的存取是从左至右依序进行。位元串是细分成以八个位元为单位。八位元单位称为位元组,位元组是所有资讯格式的基本构建块。存储器中的各位元组位置是借由唯一的非负整数来识别,该唯一的非负整数是该位元组位置的地址,或简称位元组地址。相邻的位元组位置具有连续地址,从左边的0开始,从左至右依序排列。地址属于无正负号二进制整数,并且是24、31或64位元。
资讯是在存储器与CPU或通道子***之间传输,一次一个位元组、或位元组群组。除非另有规定,在例如z/Architecture(R)中,存储器中位元组群组是以该群组取左边的位元组来定址。群组中位元组的数量是由待进行的作业以隐含或明确方式规定。用在CPU作业时,位元组群组是称为栏位。在各位元组群组内,举例来说,在z/Architecture(R)中,位元是从左至右按序编号。在z/Architecture(R)中,最左位元有时称为“高阶”位元,而最右位元称为“低阶”位元。然而,位元编号不是存储地址。只有位元组可予以定址。若要对存储器中位元组的个别位元进行作业,所存取的是整个位元组。位元组中的位元(在例如z/Architecture(R)中)是由左至右从0编号到7。地址中的位元对于24位元地址编号为8至31或40至63,或者对于31位元地址可编号为1至31或33至63;对于64位元地址可编号为0至63。在多个位元组的任何其它固定长度格式里,构成此格式的位元是从0开始连续编号。为了进行错误侦测且较佳是为了进行校正,可随着各位元组或随着位元组群组传输一或多个核对位元。此类核对位元是由机器自动产生,而且无法由程序直接控制。存储容量是以位元组的数量来表达。当存储运算元栏的长度是由指令的作业码所隐含,此栏位可说是具有固定长度,可以是一个、两个、四个、八个、或十六个位元组。一些指令可隐含更大的栏位。当存储运算元栏的长度未隐含,而是明确表明叙述,此栏位可说是具有可变长度。可变长度运算元可借由递增一个位元组来改变长度(或者,对于一些指令,递增幅度为两个位元组或的倍数或其它倍数)。资讯若是置放在存储器中,只有经指定栏位中包括的位元组位置的内容遭到取代,即便是实体路径至存储器的宽度可大于所存储栏位的长度亦然。
某些资讯单元是要位在存储器中的整合界限上。界限对于资讯单位称为整合的条件是:其存储地址是以位元组为单位,单元长度的倍数。整合界限上,对于2、4、8及16位元组的栏位有给予专门名称。半字组是二位元组界限上两个连续位元组构成的群组,并且是指令的基本构建块。字组是四位元组界限上四个连续位元组构成的群组。双字组是八位元组界限上八个连续位元组构成的群组。四倍字组是16位元组界限上16个连续位元组构成的群组。当存储地址指定半字组、字组、双字组及四倍字组时,地址的二进制表示分别含有一个、两个、三个或四个最右零位元。指令是要位在二位元组整合界限上。大部分指令的存储运算元都没有界限对齐要求。
在指令与数据运算元快取记忆区分开实施的装置上,若程序是存储于随后有指令要撷取的快取列,则可能会有显著的延迟,这与该存储是否改变随后所撷取的指令无关。
在一项具体实施例中,本发明可借由软件来实践(有时称为授权内码、韧件、微码、毫码、微微码及类似者,所列任一者会与本发明的一或多项态样一致)。请参阅图12,体现一或多项态样的软件程序码可由主机***5000的处理器5001取用自长期存储媒体装置5011,例如CD-ROM驱动机、磁带驱动机或硬碟机。软体程序码可在各种已知媒体上体现,与数据处理***配合使用,例如磁片、硬碟机、或CD-ROM。此符码可在此类媒体上分布,或可分布予使用者,自一个计算机***的计算机内存5002或存储器,通过网路5010分布至其它计算机***,供使用者使用此类其它***。
此软件程序码包括作业***,该作业是统控制各种计算机软件组件与一或多个应用程序的功能及互动。程序符一般是由存储媒体装置5011分页至可让处理器5001进行处理的较高速计算机存储器5002。用于将软体程序码体现于内存中、实体媒体上、及/或经由网路分布软体码是众所周知,并且将不在本文中进一步论述。程序码若是在有形媒体(包括但不限于电子内存模组(RAM)、快闪内存、光碟、DVD、磁带及类似者)上建立并存储,通常称为「计算机程序产品」。计算机程序产品媒体通常可由计算机***中的处理电路以较佳方式读取以该供处理电路执行的用。
图13绘示可实践一或多项态样于其中的代表性工作站或服务器。图13的***5020包含基础计算机***5021,例如个人计算机、工作站或服务器,包括任选周边装置。基础计算机***5021包括一或多个处理器5026及总线,该总线是用于在该(等)处理器5026与***5021的其它组件之间,根据已知技术进行连接并且实现通讯。该总线将处理器5026连接至内存5025及长期存储器5027,该长期存储器举例而言,可包括硬碟机(举例而言,包括下列任何一者:磁性媒体、CD、DVD及快闪内存)或磁带驱动机。***5021可能还包括使用者接口配接器,该使用者接口配接器经由总线将微处理器5026连接至一或多个接口装置,例如键盘5024、滑鼠5023、列印机/扫瞄器5030及/或其它接口装置,该等其它接口装置可以是任何使用者接口装置,例如触敏萤幕、数位化输入垫等。该总线也经由显示配接器将诸如LCD萤幕或监视器等显示装置5022连接至微处理器5026。
***5021可借由能够与网路5029通讯5028的网路配接器与计算机或计算机网路通讯。例示网路配接器是通讯通道、符记环、乙太网路或数据机。或者,***5021可使用诸如CDPD(蜂巢式数位封包数据)卡等无线接口进行通讯。***5021可与区域网路(LAN)或广域网路(WAN)中的此类其它计算机相关,或***5021可以是与另一计算机等构成用户端/服务器配置的用户端。所有这些组构、以及合适的通讯硬件与软件在所属技术领域中是属已知。
图14绘示可实践一或多项态样于其中的数据处理网路5040。数据处理网路5040可包括多个个别网路,例如无线网路及有线网路,各该网路可包括多个个别工作站5041、5042、5043、5044。另外,如所属技术领域中具有通常知识者将会了解,可包括一或多个LAN,其中LAN可包含多个耦合至主机处理器的智慧型工作站。
请继续参阅图14,网路也可包括大型计算机或服务器,例如闸道计算机(用户端服务器5046)或应用程序服务器(远程服务器5048,其可存取数据存储库,并且也可由工作站5045予以直接存取)。闸道计算机5046的作用为进入各个别网路的入口点。将一种网路协定连线至另一网路协定时需要闸道器。闸道器5046可借由通讯链路较佳地耦合至另一网路(举例而言,网际网路5047)。闸道器5046也可使用通讯链路直接耦合至一或多个工作站5041、5042、5043、5044。闸道计算机可利用可得自国际商业机器公司的IBMeServer(TM)Systemz(R)服务器来实施。
请同时参阅图13及图14,可体现一或多项态样的软件程序码可借由***5020的处理器5026自诸如CD-ROM驱动机或硬碟机等长期存储媒体5027取用。软件程序码可在各种已知媒体上体现,与数据处理***配合使用,例如磁片、硬碟机、或CD-ROM。此符码可在此类媒体上分布,或可分布予使用者5050、5051,自一个计算机***的内存或存储器,通过网路5010分布至其它计算机***,供使用者使用此类其它***。
或者,程序码可在内存5025中体现,并且借由处理器5026使用处理器总线存取。此程序码包括作业***,该作业***控制各种计算机软体组件与一或多个应用程序5032的功能及互动。程序码一般是由存储媒体5027分页至可让处理器5026进行处理的高速内存5025。用于将软件程序码体现于内存中、实体媒体上、及/或经由网路分布软件码是众所周知,并且将不在本文中进一步论述。程序码若是在有形媒体(包括但不限于电子内存模组(RAM)、快闪内存、光碟、DVD、磁带及类似者)上建立并存储,通常称为「计算机程序产品」。计算机程序产品媒体通常可由计算机***中的处理电路以较佳方式读取以该供处理电路执行的用。
能让处理器最迅速存取快取(一般是比处理器的其它快取更快且更小)是最低(L1或一阶)快取记忆区,而主存储(主内存)是最高阶快取记忆区(若有3阶,则为L3)。最低阶快取记忆区通常是分成保持等执行机器指令的指令快取记忆区(I-Cache)、及保持数据运算元的数据快取记忆区(D-Cache)。
请参阅图15,所绘示的是处理器5026的例示性处理器具体实施例。快取记忆区5053的一或多阶通常是用于缓冲记忆块,以便改善处理器效能。快取记忆区5053是高速缓冲区,其保持最可能用到的内存数据的快取列。典型快取列是64、128或256位元组的内存数据。对照于快取数据,分离快取记忆区通常是用于快取指令。快取记忆区一致性(内存及快取记忆区中列复制同步化)通常是由所属技术领域中众所周知的各种「监听」演算法来提供。处理器***的主记忆存储器5025通常是称为快取。在具有4阶快取5053的处理器***中,主存储器5025有时称为5阶(L5)快取,因为5阶快取典型较快,并且仅保持一部分可用于计算机***的非挥发性存储器(DASD、磁带等)。主存储器5025借由作业***“快取”分页于及分页至主存储器5025的分页。
程序计数器(指令计数器)5061追踪待执行现行指令的地址。z/Architecture(R)处理器中的程序计数器为64位元,并且可截成31或24位元以支援以前的定址限制。程序计数器典型是以计算机的PSW(程序状态字)体现,因此可以在环境切换期间续存。因此,具有程序计数值的进行中程序可由例如作业***来中断(自程序环境至作业环境的环境切换)。程序的PSW在程序未使用时维持程序计数值,而作业***的程序计数器(形式为PSW)则是在执行作业***时使用。程序计数器典型是以等于现行指令位元组数目的量来递增。RISC(精简指令集运算)指令典型是固定长度,而CISC(复杂指令集运算)指令典型是可变长度。IBMz/Architecture(R)的指令是长度为2、4或6位元组的CISC指令。程序计数器5061举例而言,是借由环境切换作业或分支指令的分支取得作业来修改。在环境切换作业时,现行程序计数值是连同与所执行程序(例如条件码)有关的其它状态资讯存储于程序状态字中,而新程序计数值是经载入指向待执行新程序模组的指令。进行分支取得作业是为了许可程序借由将分支指令载入程序计数器5061,作出决策或在程序内进行回圈。
指令撷取单元5055典型是用于代表处理器5026撷取指令。撷取单元撷取“下一顺序指令”分支取得指令的目标指令、或程序在环境切换后的第一指令。现代的指令撷取单元通常基于预先撷取指令可能使用的似然性,将预先撷取技术用于以臆测方式预先撷取指令。举例而言,撷取单元可撷取16个位元组的指令,该指令包括下一顺序指令及进一步顺序指令的附加位元组。
经撷取指令接着由处理器5026执行。在一具体实施例中,该(等)经撷取指令是传递至撷取单元的调度单元5056。调度单元解码该(等)指令,并且将关于该(等)经解码指令的资讯转发至合适的单元5057、5058、5060。执行单元5057典型将会自指令撷取单元5055接收关于经解码算术指令的资讯,并且根据指令的运算符在运算元上进行算术运算。运算元较佳是由内存5025、已架构暂存器5059或由所执行指令的立即栏位提供至执行单元5057。执行结果在存储时,是存储于内存5025、暂存器5059、或其它机器硬件(例如控制暂存器、PSW暂存器及类似者)中。
处理器5026典型具有一或多个用于执行指令功能的单元5057、5058、5060。请参阅图16A,执行单元5057可借由介接逻辑5071,与已架构通用暂存器5059、解码/调度单元5056、载入存储单元5060、及其它5065处理器单元通讯。执行单元5057可运用数个暂存器电路5067、5068、5069保持将会由算术逻辑单元(ALU)5066进行运算的资讯。ALU进行诸如加法、减法、乘法、除法以及例如及、或和互斥或(XOR)、旋转和移位等逻辑函数的算术运算。ALU较佳为支援设计相依的专属运算。其它电路可提供例如包括条件码及复原支援逻辑的其它已架构设施5072。ALU运算的结果典型是保持于输出暂存器电路5070中,该输出暂存器电路可将该结果转发至各种其它处理功能。处理器单元有许多种配置,本说明书用意仅在于能够代表性理解一项具体实施例。
举例而言,ADD指令会在具有算数与逻辑功能的执行单元5057中执行,而举例而言,浮点指令会在具有专属浮点功能的浮点执行时执行。执行单元较佳为借由对运算元进行运算符定义功能,以对指令所识别的该等运算元进行运算。举例而言,ADD指令可借由执行单元5057执行指令的暂存器栏位所识别的两个暂存器5059中发现的运算元。
执行单元5057对两个运算元进行算术加法,并且在第三运算元中存储结果,其中该第三运算元可以是第三暂存器、或两个来源暂存器中的一者。执行单元较佳为利用能够进行诸如移位、旋转、及、或和XOR等各种逻辑函数、以及包括加法、减法、乘法、除法的各种代数函数的算术逻辑单元(ALU)5066。有一些ALU5066是设计用于纯量运算,而有一些则是用于浮点运算。数据可以是位元组由大到小(其中最低有效位元组位在最高位元组地址)或位元组由小到大(其中最低有效位元组位在最低位元组地址),端视架构而定。IBMz/Architecture(R)是位元组由大到小。带正负号栏可以是正负号及大小、1的补数或2的补数,端视架构而定。2的补数的优点在于ALU不需要设计减法功能,因为在ALU里,负值或正值在2的补数中都只需要加法。举例而言,数字常以速记方式描述,其中12位元栏定义4,096位元组区块的地址,并且常描述为4千拜(千位元组)。
请参阅图16B,用于执行分支指令的分支指令资讯通常是发送至分支单元5058,该分支单元通常在其它条件运算完成前,先将诸如分支历史表5082的分支预测演算法用于预测分支的结果。现行分支指令的目标将会在条件运算完成前,先予以撷取并且以臆测方式执行。当条件运算完成时,以臆测方式执行的分支指令是基于条件运算的条件及经臆测结果来完成或舍弃。典型的分支指令可测试条件码,若条件码符合分支指令的分支要求则分支到目标地址,举例而言,目标地址可基于数个数字来计算,这数个数字包括指令的暂存器栏位或立即栏位中发现的数字。分支单元5058可运用具有多个输入暂存器电路5075、5076、5077及输出暂存器电路5080的ALU5074。分支单元5058举例而言,可与通用暂存器5059、解码调度单元5056或其它电路5073通讯。
指令群组的执行会因各种理由而中断,举例而言,包括作业***启动的环境切换、造成环境切换的程序例外或错误、造成环境切换的I/O中断信号、或多个程序(在多执行绪环境中)的多执行绪活动。环境切换动作较佳为存储关于现行执行程序的状态资讯,然后载入关于另一经调用程序的状态资讯。状态资讯举例而言,可存储于硬件暂存器中或内存中。状态资讯较佳为包含指向下一个待执行指令的程序计数值、条件码、内存转译资讯及已架构暂存器内容。环境切换活动可借由硬件电路、应用程序、作业***程序或韧体码(微码、微微码或授权内码(LIC))单独或结合实行。
处理器根据指令定义方法存取运算元。指令可提供使用指令一部分的值的立即运算元,可提供一或多个明确指向通用暂存器或特殊用途暂存器(例如浮点暂存器)的暂存器栏位。此指令可将运算符栏位所识别的隐含暂存器当作运算元使用。此指令可将内存位置用于运算元。运算元的内存地址可由暂存器、立即栏位、或暂存器与立即栏位的组合提供,正如z/Architecture(R)长位移设施所例示,其中指令定义基底暂存器、索引暂存器及立即栏位(位移栏),举例而言,三者是加在一起提供运算元在内存中的地址。本文中的位置典型为隐含主内存(主存储器)中的位置,除非另有所指。
请参阅图16C,处理器使用载入/存储单元5060存取存储器。载入/存储单元5060可借由获得内存5053中目标运算元的地址,并且将该运算元载入暂存器5059或另一内存5053位置以进行载入作业,或者,可借由获得内存5053中目标运算元的地址,并且将获自暂存器5059或另一内存5053位置的数据存入内存5053中的目标运算元位置以进行存储作业。载入/存储单元5060可具有臆测性,并且可按照相对于指令序列无次序的顺序存取内存,然而,载入/存储单元要维持指令依序执行的程序外貌。载入/存储单元5060可与通用暂存器5059、解码/调度单元5056、快取记忆区/内存接口5053或其它元件5083通讯,并且包含用以计算存储地址并用以提供管线定序使作业保持按照次序的各种暂存器电路、ALU5085及控制逻辑5090。如所属技术领域众所周知,一些作业可以是无次序,但载入/存储单元提供让无次序作业在程序看来有按次序进行的功能。
应用程序“看到”的地址较佳是常称为虚拟地址。虚拟地址有时称为“逻辑地址”及“有效地址”。这虚拟地址的所以为虚拟,原因在于虚拟地址是借由各种动态地址转译(DAT)技术中的一种技术重新导向至实体内存位置,该等动态地址转译技术包括但不限于单纯地以位移值前导虚拟地址、经由一或多个转译表转译该虚拟地址,该等转译表较佳为单独或结合包含至少一段表及页表,较佳的是,该段表具有指向该页表的入口。z/Architecture(R)中提供转译阶层,包括区域第一表、区域第二表、区域第三表、段表及任选页表。地址转译的进行通常是利用转译旁看缓冲区(TLB)来改善,该转译旁看缓冲区包含将虚拟地址映射至相关实体内存位置的入口。该等入口是在DAT使用转译表转译虚拟地址时建立的。后续使用虚拟地址可接着利用快速TLB的入口,而不是慢速循序转译表存取。TLB内容可借由各种替换演算法来管理,包括LRU(最近最少使用的)。
处理器若是多处理器***的处理器,各处理器有责任保持为了一致性而互锁的共享资源,例如I/O、快取记忆区、TLB及内存。“监听”技术典型会用在维持快取记忆区一致性。在监听环境中,各快取列可标示为处于共享状态、排除状态、经变更状态、无效状态及类似者中任一者以便促进共享。
I/O单元5054(图15)提供具有用于附接至周边装置的手段的处理器,该等周边装置举例而言,包括磁带、磁碟、列印机、显示器、及网路。I/O单元通常是借由软体驱动程序呈现予计算机程序。在诸如出自IBM(R)的Systemz(R)的大型计算机中,通道配接器及开放性***配接器是大型计算机在作业***与周边装置之间提供通讯的I/O单元。
再者,其他类型的运算环境可受益于一或多项态样。举一项实施例来说,环境可包括仿真器(例如:软体或其它仿真机制),特定架构(例如,包括指令执行、诸如地址转译的已架构功能、及已架构暂存器)或其子集是于该仿真器中进行仿真(例如:在具有处理器及内存的原生计算机***上进行仿真)。在此一环境中,即使执行仿真器的计算机可具有与经仿真功能不同的架构,仿真器的一或多个仿真功能仍可实施一或多项态样。举一项实施例来说,在仿真模式下,经仿真的特定指令或作业系经解码,并且合适的仿真功能是经建置用以实施个别指令或作业。
在仿真环境中,主机计算机包括例如用以存储指令与数据的内存;用以自内存撷取指令并任选地为经撷取指令提供局部缓冲的指令撷取单元;用以接收经撷取指令并判断已撷取指令类型的指令解码单元;以及用以执行该等指令的指令执行单元。执行可包括自内存将数据载入暂存器;自暂存器将数据存储回到内存;或如解码单元所判断,进行一些类型的算术或逻辑运算。在一项实施例中,各单位是以软件方式实施。例如,该等单元所进行的作业是实施为仿真器软件内的一或多个子程序。
更特别的是,在大型计算机中,已架构机器指令通常是由程序设计师,现今通常是“C”程序设计师,借由编译器应用程序所使用。这些存储于存储媒体中的指令可在z/Architecture(R)IBM(R)服务器中以原生方式执行、或替代地在执行其它架构的机器中执行。该等指令可在现存及未来的IBM(R)大型计算机服务器中及IBM(R)的其它机器(例如:PowerSystems服务器及Systemx(R)服务器)上进行仿真。使用IBM(R)、Intel(R)、AMD(TM)及其它公司所制造的硬件在各式各样机器上跑Linux的机器中可以执行该等指令。Linux除了可在以z/Architecture(R)为基础的硬件上执行,还可用在借由Hercules、UMX或FSI(FundamentalSoftware,Inc)使用仿真的机器上,一般是在仿真模式下执行。在仿真模式,仿真软件是由原生处理器执行以对经仿真的处理器进行仿真。
仿真处理器典型执行包含韧件或原生作业***的仿真软体以对经仿真处的理器进行仿真。仿真软体负责撷取并且执行经仿真处理器架构的指令。仿真软件维持经仿真的程序计数器以追踪指令界限。仿真软件可一次撷取一或多个经仿真机器指令,并且将这一或多个经仿真机器指令转换成对应的原生机器指令群组以供原生处理器执行用。可快取这些经转换指令以便更快速地完成转换。尽管如此,仿真软件是为了维持经仿真处理器架构的架构规则,以便确保为经仿真处理器所编写的作业***及应用程序正确作业。再者,仿真软件是为了提供经仿真处理器架构所识别的资源,包括但不限于控制暂存器、通用暂存器、浮点暂存器、动态地址转译功能,包括段表及页表,例如中断机制、环境切换机制、当日时间(TOD)时钟及与I/O子***的已架构接口,使得经设计用以在经仿真处理器上执行的作业***或应用程序可以在具有仿真软件的原生处理器上执行。
经仿真的特定指令是经解码,并且子程序是经呼叫以进行个别指令的功能。如所属技术领域中具有通常知识者在理解较佳具体实施例的说明后所知,对经仿真处理器的功能进行仿真的仿真软件功能举例而言,是实施成“C”子程序或驱动程序、或一些提供驱动程序供特定硬件用的其它方法。有各种软件与硬件仿真专利,包括但不限于Beausoleil等人所申请题为「MultiprocessorforHardwareEmulation」的美国专利证第5,551,013号;以及Scalzi等人所申请题为「PreprocessingofStoredTargetRoutinesforEmulatingIncompatibleInstructionsonaTargetProcessor」的美国专利证第6,009,261号;以及Davidian等人所提出题为「DecodingGuestInstructiontoDirectlyAccessEmulationRoutinesthatEmulatetheGuestInstructions」的美国专利证第5,574,873号;以及Gorishek等人所提出题为「SymmetricalMultiprocessingBusandChipsetUsedforCoprocessorSupportAllowingNon-NativeCodetoRuninaSystem」的美国专利证第6,308,255号;以及Lethin等人所提出题为「DynamicOptimizingObjectCodeTranslatorforArchitectureEmulationandDynamicOptimizingObjectCodeTranslationMethod」的美国专利证第6,463,582号;以及EricTraut所提出题为「MethodforEmulatingGuestInstructionsonaHostComputerThroughDynamicRecompilationofHostInstructions」的美国专利证第5,790,825号,以上专利各者全文是合并于本文中作为参考;以及许多其它专利,对于所属技术领域中具有通常知识者可得的目标机器,这些专利说用达成对不同机器所架构指令格式进行仿真的各种已知方式。
在图17中,提供的是经仿***机计算机***5092的实施例,对主机架构的主机计算机***5000'进行仿真。在经仿***机计算机***5092中,主机处理器(CPU)5091是经仿***机处理器(或虚拟主机处理器),并且包含相比于主机计算机5000'的处理器5091,具有不同原生指令集架构的仿真处理器5093。经仿***机计算机***5092具有可供仿真处理器5093存取的内存5094。在例示具体实施例中,内存5094是分割成主机计算机内存5096部分及仿真常用程序5097部分。主机计算机内存5096可根据主机计算机架构,用于经仿***机计算机5092的程序。仿真处理器5093执行与经仿真处理器5091不同的架构的已架构指令集的原生指令,该等原生指令是获得自仿真常用程序内存5097,并且可借由运用序列&存取/解码常用程序中获得的一或多个指令,存取供经由主机计算机内存5096中的程序执行的主机指令,该序列&存取/解码常用程序可解码经存取用以判断指令执行常用程序的该(等)主机指令,用于仿真经存取主机指令的功能。对于主机计算机***5000'架构所定义的其它设施,可借由已架构设施常用程序来仿真,包括举例如以下的设施:通用暂存器、控制暂存器、动态地址转译与I/O子***支援及处理器快取。仿真常用程序也可利用仿真处理器5093中提供的功能(例如:通用暂存器及虚拟地址的动态转译)以提升仿真常用程序的效能。也可提供专用硬件及卸载引擎以协助处理器5093对主机计算机5000'的功能进行仿真。
本文中使用的术语目的仅在于描述特定具体实施例,而且用意不在于限制本发明。「一」及「该」等单数形于本文中使用时,用意在于同时包括复数形,除非内容另有清楚指示。将会进一步理解的是,「包含」在本说明书中使用时,载明所述特征、整体、步骤、作业、元件及/或组件的存在,但并非排除一或多个其它特征、整体、步骤、作业、元件、组件及/或其群组的存在或新增。
所有手段或步骤加上功能元件的对应结构、材料、动作及均等者在下文的申请专利范围中若有的话,用意在于包括结合其它如具体诉求的所诉求元件,任何用于进行此功能的结构、材料或动作。一或多项态样的说明已为了说明及描述目的而加以介绍,但用意不在于穷举或以所揭示的形式限制本发明。许多修改及变化对于所属技术领域中具有通常知识者将会显而易知,但不会脱离本发明的范畴及精神。选择并说明具体实施例是为了更佳阐释本发明的原理及实际应用,并且如适用于经思考的特定用途,让所属技术领域中具有通常知识者能够理解经各种修改的各项具体实施例。
Claims (20)
1.一种用于在处理环境中促进处理的计算机程序产品,该计算机程序产品包含:
计算机可读取存储媒体,该计算机可读取存储媒体借由处理电路读取并且存储指令,该等指令是由该处理电路执行以进行一种方法,该方法包含:
获得一指令,该指令是包括于多个指令的群组中,并且是跨越一或更多个指令的一或更多个其它群组的指令序列的部分;
对该群组的多个指令的至少两个指令进行最佳化以提供一或更多个经最佳化指令;
自该一或更多个其它指令群组的至少一个其它指令群组获得一或更多个指令;
使用从对该多个指令的该群组的该至少两个指令进行该最佳化所获得的资讯,对从该至少一个其它指令群组获得的该一或更多个指令的至少一个指令进行最佳化;以及
执行至少一个经最佳化指令,该经最佳化指令是从对来自该至少一个其它指令群组的该至少一个指令进行该最佳化所产生。
2.如权利要求1所述的计算机程序产品,其特征在于,对该来自该至少一个其它指令群组的该至少一个指令进行最佳化包含产生至少一个内部作业,该至少一个内部作业代表该多个指令的该群组的一指令的至少一部分、及该至少一个指令的一指令的至少一部分。
3.如权利要求1所述的计算机程序产品,其特征在于,该方法更包含留存关于该至少两个指令的该最佳化的资讯,其中,该经留存资讯包括对该至少一个指令进行该最佳化所使用的该资讯。
4.如权利要求3所述的计算机程序产品,其特征在于,该方法更包含同时在至少两个不同指令群组上留存资讯,各群组是与不同的执行绪识别符相关。
5.如权利要求3所述的计算机程序产品,其特征在于该资讯包括与执行该多个指令相关的执行绪的执行绪识别符,且其中,该执行绪识别符控制是否要使用该资讯对该至少一个指令进行最佳化。
6.如权利要求3所述的计算机程序产品,其特征在于该方法更包含:
判断自该至少一个其它指令群组获得的一或更多个指令是否是与该经留存资讯相关的指令序列的成员;以及
基于判断该自该至少一个其它指令群组获得的一或多个指令是与该经留存资讯相关的该指令序列的成员,对该至少一个指令进行该最佳化。
7.如权利要求1所述的计算机程序产品,其特征在于,该对该至少两个指令进行最佳化及对该至少一个指令进行最佳化中至少一者包含使用一或更多个范本进行该最佳化。
8.如权利要求1所述的计算机程序产品,其特征在于,该至少两个指令的该最佳化及该至少一个指令的该最佳化中至少一者是于解码时间进行。
9.如权利要求1所述的计算机程序产品,其特征在于,该方法更包含:
判断自该多个指令的该群组获得的该指令是否为内含最佳化序列的成员,其中,该内含最佳化序列是一个特定群组内的指令序列;
基于判断自该多个指令的该群组获得的该指令不是该内含最佳化序列的成员,判断自该多个指令的该群组获得的该指令是否是用于成为跨越该一或多个其它群组的该指令序列的一部分的候选者;以及
基于判断自该多个指令的该群组获得的该指令是用于成为该指令序列的一部分的候选者,对该至少两个指令进行该最佳化。
10.如权利要求8所述的计算机程序产品,其特征在于,该判断自该多个指令的该群组获得的该指令是否为用于成为跨越该一或多个其它群组的该指令序列的一部分的候选者包含使用范本、预定义准则或一或更多个参数中的一或多者判断其是否为候选者。
11.一种用于在处理环境中促进处理的计算机***,该计算机***包含:
内存;以及
与该内存连系的处理器,其特征在于,该计算机***是经组构以进行一种方法,该方法包含:
获得一指令,该指令是包括于多个指令的群组中,并且是跨越一或更多个指令所组成的一或更多个其它群组的指令序列的部分;
对该群组的多个指令的至少两个指令进行最佳化以提供一或多个经最佳化指令;
自该一或更多个其它指令群组的至少一个其它指令群组获得一或更多个指令;
使用从对该多个指令的该群组的该至少两个指令进行该最佳化所获得的资讯,对从该至少一个其它指令群组获得的该一或更多个指令的至少一个指令进行最佳化;以及
执行至少一个经最佳化指令,该经最佳化指令是从对来自该至少一个其它指令群组的该至少一个指令进行该最佳化所产生。
12.如权利要求11所述的计算机***,其特征在于,该对来自该至少一个其它指令群组的该至少一个指令进行最佳化包含产生至少一个内部作业,该至少一个内部作业代表该多个指令的该群组的一指令的至少一部分、及该至少一个指令的一指令的至少一部分。
13.如权利要求11所述的计算机***,其特征在于,该方法更包含留存关于该至少两个指令的该最佳化的资讯,其中,该经留存资讯包括对该至少一个指令进行该最佳化所使用的该资讯。
14.如权利要求13所述的计算机***,其特征在于,该资讯包括与执行该多个指令相关的执行绪的执行绪识别符,且其中,该执行绪识别符控制是否要使用该资讯对该至少一个指令进行最佳化。
15.如权利要求13所述的计算机***,其特征在于,该方法更包含:
判断自该至少一个其它指令群组获得的一或更多个指令是否为与该经留存资讯相关的指令序列的成员;以及
基于判断该自该至少一个其它指令群组获得的一或更多个指令是与该经留存资讯相关的该指令序列的成员,对该至少一个指令进行该最佳化。
16.如权利要求11所述的计算机***,其特征在于,该方法更包含:
判断自该多个指令的该群组获得的该指令是否为内含最佳化序列的成员;
基于判断自该多个指令的该群组获得的该指令不是该内含最佳化序列的成员,判断自该多个指令的该群组获得的该指令是否为用于成为跨越该一或更多个其它群组的该指令序列的一部分的候选者;以及
基于判断自该多个指令的该群组获得的该指令是用于成为该指令序列的一部分的候选者,对该至少两个指令进行该最佳化。
17.如权利要求16所述的计算机***,其特征在于,该判断自该多个指令的该群组获得的该指令是用于成为跨越该一或更多个其它群组的该指令序列的一部分的候选者包含使用范本、预定义准则、或一或更多个参数中的一或多者判断其是否为候选者。
18.一种在处理环境中促进处理的方法,该方法包含:
获得一指令,该指令是包括于多个指令的群组中,并且是跨越一或更多个指令的一或更多个其它群组的指令序列的部分;
对该群组的多个指令的至少两个指令进行最佳化以提供一或更多个经最佳化指令;
自该一或更多个其它指令群组的至少一个其它指令群组获得一或多个指令;
使用从对该多个指令的该群组的该至少两个指令进行该最佳化所获得的资讯,对从该至少一个其它指令群组获得的该一或更多个指令的至少一个指令进行最佳化;以及
执行至少一个经最佳化指令,该经最佳化指令是从对来自该至少一个其它指令群组的该至少一个指令进行该最佳化所产生。
19.如权利要求18所述的方法,其更包含:
留存关于该至少两个指令的该最佳化的资讯,其中,该经留存资讯包括对该至少一个指令进行该最佳化所使用的该资讯;
判断自该至少一个其它指令群组获得的一或更多个指令是否为与该经留存资讯相关的指令序列的成员;以及
基于判断该自该至少一个其它指令群组获得的一或更多个指令是与该经留存资讯相关的该指令序列的成员,对该至少一个指令进行该最佳化。
20.如权利要求18所述的方法,其更包含:
判断自该多个指令的该群组获得的该指令是否为内含最佳化序列的成员;
基于判断自该多个指令的该群组获得的该指令不是该内含最佳化序列的成员,判断自该多个指令所组成的该群组获得的该指令是否为用于成为跨越该一或更多个其它群组的该指令序列的一部分的候选者;以及
基于判断自该多个指令的该群组获得的该指令是用于成为该指令序列的一部分的候选者,对该至少两个指令进行该最佳化。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,680 | 2013-06-28 | ||
US13/931,680 US9372695B2 (en) | 2013-06-28 | 2013-06-28 | Optimization of instruction groups across group boundaries |
US14/135,769 US9477474B2 (en) | 2013-06-28 | 2013-12-20 | Optimization of instruction groups across group boundaries |
US14/135,769 | 2013-12-20 | ||
PCT/JP2014/003267 WO2014208054A1 (en) | 2013-06-28 | 2014-06-18 | Optimization of instruction groups across group boundaries |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105593807A true CN105593807A (zh) | 2016-05-18 |
CN105593807B CN105593807B (zh) | 2018-06-12 |
Family
ID=52116855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480047550.7A Expired - Fee Related CN105593807B (zh) | 2013-06-28 | 2014-06-18 | 跨群组界限的指令群组最佳化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9372695B2 (zh) |
CN (1) | CN105593807B (zh) |
GB (1) | GB2530454B (zh) |
WO (1) | WO2014208054A1 (zh) |
Cited By (1)
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 |
Families Citing this family (10)
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 |
US9733940B2 (en) | 2014-11-17 | 2017-08-15 | International Business Machines Corporation | Techniques for instruction group formation for decode-time instruction optimization based on feedback |
CN107251254B (zh) * | 2015-02-17 | 2020-01-21 | 株式会社理光 | 晶体图案形成方法、压电膜制造方法、压电元件制造方法及液体排放头制造方法 |
US9772824B2 (en) * | 2015-03-25 | 2017-09-26 | International Business Machines Corporation | Program structure-based blocking |
US9870339B2 (en) | 2015-06-26 | 2018-01-16 | Intel Corporation | Hardware processors and methods for tightly-coupled heterogeneous computing |
US11379860B2 (en) | 2017-01-19 | 2022-07-05 | Mastercard International Incorporated | System for control group optimization to identify optimal baseline algorithm |
US11182200B2 (en) * | 2017-06-29 | 2021-11-23 | Texas Instruments Incorporated | Streaming engine with short cut start instructions |
US11163571B1 (en) | 2020-07-29 | 2021-11-02 | International Business Machines Corporation | Fusion to enhance early address generation of load instructions in a microprocessor |
US12008372B2 (en) * | 2022-07-21 | 2024-06-11 | VMware LLC | Techniques for reducing CPU privilege boundary crossings |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1521623A (zh) * | 2003-01-28 | 2004-08-18 | 松下电器产业株式会社 | 编译设备和编译方法 |
WO2010056511A2 (en) * | 2008-10-30 | 2010-05-20 | Intel Corporation | Technique for promoting efficient instruction fusion |
CN101923481A (zh) * | 2010-09-11 | 2010-12-22 | 上海交通大学 | 基于代码复制超级块的程序执行优化方法 |
US20130086368A1 (en) * | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Using Register Last Use Infomation to Perform Decode-Time Computer Instruction Optimization |
Family Cites Families (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5448746A (en) | 1990-05-04 | 1995-09-05 | International Business Machines Corporation | System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution |
US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
JPH0628324A (ja) | 1992-07-06 | 1994-02-04 | Toshiba Corp | 並列計算機及びコンパイラ |
AU6629894A (en) | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
CA2123442A1 (en) | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
US5999737A (en) * | 1994-03-01 | 1999-12-07 | Digital Equipment Corporation | Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
US5832260A (en) | 1995-12-29 | 1998-11-03 | Intel Corporation | Processor microarchitecture for efficient processing of instructions in a program including a conditional program flow control instruction |
US6000028A (en) * | 1996-01-29 | 1999-12-07 | Digital Equipment Corporation | Means and apparatus for maintaining condition codes in an unevaluated state |
US5815719A (en) * | 1996-05-07 | 1998-09-29 | Sun Microsystems, Inc. | Method and apparatus for easy insertion of assembler code for optimization |
US5854933A (en) * | 1996-08-20 | 1998-12-29 | Intel Corporation | Method for optimizing a computer program by moving certain load and store instructions out of a loop |
JP3327818B2 (ja) * | 1997-08-29 | 2002-09-24 | 松下電器産業株式会社 | プログラム変換装置及び記録媒体 |
US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US6260190B1 (en) * | 1998-08-11 | 2001-07-10 | Hewlett-Packard Company | Unified compiler framework for control and data speculation with recovery code |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
JP3437932B2 (ja) * | 1999-01-05 | 2003-08-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 配列レンジ・チェックのためのコード生成方法及び装置、並びにバージョニング方法及び装置 |
US6185669B1 (en) | 1999-02-18 | 2001-02-06 | Hewlett-Packard Company | System for fetching mapped branch target instructions of optimized code placed into a trace memory |
US6286094B1 (en) | 1999-03-05 | 2001-09-04 | International Business Machines Corporation | Method and system for optimizing the fetching of dispatch groups in a superscalar processor |
US6651164B1 (en) * | 1999-10-14 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | System and method for detecting an erroneous data hazard between instructions of an instruction group and resulting from a compiler grouping error |
US6711670B1 (en) * | 1999-10-14 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | System and method for detecting data hazards within an instruction group of a compiled computer program |
US7257806B1 (en) * | 1999-10-21 | 2007-08-14 | Hewlett-Packard Development Company, L.P. | System and method for efficiently passing information between compiler and post-compile-time software |
US6986128B2 (en) | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
CA2321018A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Optimizing compilation by forward store movement |
US7028286B2 (en) * | 2001-04-13 | 2006-04-11 | Pts Corporation | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture |
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 |
US7395408B2 (en) | 2002-10-16 | 2008-07-01 | Matsushita Electric Industrial Co., Ltd. | Parallel execution processor and instruction assigning making use of group number in processing elements |
CA2430383A1 (en) * | 2003-05-30 | 2004-11-30 | Ibm Canada Limited - Ibm Canada Limitee | Efficiently releasing locks when an exception occurs |
US7367023B2 (en) * | 2003-07-10 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for generating computer programming code selectively optimized for execution performance and not optimized for serviceability |
US20050289530A1 (en) | 2004-06-29 | 2005-12-29 | Robison Arch D | Scheduling of instructions in program compilation |
US7480902B2 (en) * | 2004-07-08 | 2009-01-20 | Intel Corporation | Unwind information for optimized programs |
JP4783005B2 (ja) * | 2004-11-25 | 2011-09-28 | パナソニック株式会社 | プログラム変換装置、プログラム変換実行装置およびプログラム変換方法、プログラム変換実行方法。 |
GB2424727B (en) | 2005-03-30 | 2007-08-01 | Transitive Ltd | Preparing instruction groups for a processor having a multiple issue ports |
US20070050608A1 (en) | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporatin Of The State Of Delaware | Hardware-generated and historically-based execution optimization |
US8214191B2 (en) | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US20070050605A1 (en) | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US7797517B1 (en) * | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
US7681019B1 (en) * | 2005-11-18 | 2010-03-16 | Sun Microsystems, Inc. | Executing functions determined via a collection of operations from translated instructions |
US7925860B1 (en) * | 2006-05-11 | 2011-04-12 | Nvidia Corporation | Maximized memory throughput using cooperative thread arrays |
US7865885B2 (en) * | 2006-09-27 | 2011-01-04 | Intel Corporation | Using transactional memory for precise exception handling in aggressive dynamic binary optimizations |
US20080177980A1 (en) * | 2007-01-24 | 2008-07-24 | Daniel Citron | Instruction set architecture with overlapping fields |
US20090204791A1 (en) | 2008-02-12 | 2009-08-13 | Luick David A | Compound Instruction Group Formation and Execution |
US7882335B2 (en) | 2008-02-19 | 2011-02-01 | International Business Machines Corporation | System and method for the scheduling of load instructions within a group priority issue schema for a cascaded pipeline |
US20090210666A1 (en) | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Resolving Issue Conflicts of Load Instructions |
US8095779B2 (en) * | 2008-02-19 | 2012-01-10 | International Business Machines Corporation | System and method for optimization within a group priority issue schema for a cascaded pipeline |
US8214814B2 (en) * | 2008-06-24 | 2012-07-03 | International Business Machines Corporation | Sharing compiler optimizations in a multi-node system |
JP2010039536A (ja) * | 2008-07-31 | 2010-02-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
EP2404254B1 (en) | 2009-03-02 | 2015-11-11 | Nxp B.V. | Software protection |
US8171224B2 (en) * | 2009-05-28 | 2012-05-01 | International Business Machines Corporation | D-cache line use history based done bit based on successful prefetchable counter |
US8429635B2 (en) * | 2009-10-28 | 2013-04-23 | International Buisness Machines Corporation | Controlling compiler optimizations |
WO2012144374A1 (ja) | 2011-04-21 | 2012-10-26 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
US9021155B2 (en) | 2011-06-01 | 2015-04-28 | International Business Machines Corporation | Fibre channel input/output data routing including discarding of data transfer requests in response to error detection |
US9830156B2 (en) * | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
US8756591B2 (en) | 2011-10-03 | 2014-06-17 | International Business Machines Corporation | Generating compiled code that indicates register liveness |
US9329869B2 (en) | 2011-10-03 | 2016-05-03 | International Business Machines Corporation | Prefix computer instruction for compatibily extending instruction functionality |
US9354874B2 (en) | 2011-10-03 | 2016-05-31 | International Business Machines Corporation | Scalable decode-time instruction sequence optimization of dependent instructions |
US8615745B2 (en) * | 2011-10-03 | 2013-12-24 | International Business Machines Corporation | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US8612959B2 (en) * | 2011-10-03 | 2013-12-17 | International Business Machines Corporation | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US10078515B2 (en) | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
US9280348B2 (en) | 2012-03-28 | 2016-03-08 | International Business Machines Corporation | Decode time instruction optimization for load reserve and store conditional sequences |
US9513915B2 (en) | 2012-03-28 | 2016-12-06 | International Business Machines Corporation | Instruction merging optimization |
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 |
US9323530B2 (en) | 2012-03-28 | 2016-04-26 | International Business Machines Corporation | Caching optimized internal instructions in loop buffer |
US9292291B2 (en) | 2012-03-28 | 2016-03-22 | International Business Machines Corporation | Instruction merging optimization |
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 |
-
2013
- 2013-06-28 US US13/931,680 patent/US9372695B2/en not_active Expired - Fee Related
- 2013-12-20 US US14/135,769 patent/US9477474B2/en active Active
-
2014
- 2014-06-18 WO PCT/JP2014/003267 patent/WO2014208054A1/en active Application Filing
- 2014-06-18 GB GB1522863.8A patent/GB2530454B/en not_active Expired - Fee Related
- 2014-06-18 CN CN201480047550.7A patent/CN105593807B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1521623A (zh) * | 2003-01-28 | 2004-08-18 | 松下电器产业株式会社 | 编译设备和编译方法 |
WO2010056511A2 (en) * | 2008-10-30 | 2010-05-20 | Intel Corporation | Technique for promoting efficient instruction fusion |
CN101923481A (zh) * | 2010-09-11 | 2010-12-22 | 上海交通大学 | 基于代码复制超级块的程序执行优化方法 |
US20130086368A1 (en) * | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Using Register Last Use Infomation to Perform Decode-Time Computer Instruction Optimization |
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 |
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 |
Also Published As
Publication number | Publication date |
---|---|
WO2014208054A1 (en) | 2014-12-31 |
CN105593807B (zh) | 2018-06-12 |
US9477474B2 (en) | 2016-10-25 |
GB2530454A (en) | 2016-03-23 |
GB201522863D0 (en) | 2016-02-10 |
US20150006867A1 (en) | 2015-01-01 |
US20150006866A1 (en) | 2015-01-01 |
GB2530454B (en) | 2020-05-06 |
US9372695B2 (en) | 2016-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105593807A (zh) | 跨群组界限的指令群组最佳化 | |
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和*** | |
CN104252336B (zh) | 基于解码时间指令优化来形成指令组的方法和*** | |
US10534613B2 (en) | Supporting learned branch predictors | |
CN104252586B (zh) | 促进在处理环境中的处理的方法和计算机*** | |
CN104169868B (zh) | 用于在中央处理单元中执行机器指令的方法和*** | |
CN104252360B (zh) | 在流水线化处理中使用的预测器数据结构 | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
CN104951281A (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
KR101923289B1 (ko) | 스토어들을 소팅 및 리타이어링하기 위한 명령어와 로직 | |
CN108027729A (zh) | 分段式指令块 | |
US9851979B2 (en) | Split-level history buffer in a computer processing unit | |
CN108027733A (zh) | 在目标字段中存储无效 | |
CN104252335A (zh) | 用于选择的返回指令的预测获取和解码方法和*** | |
CN108292217A (zh) | 用于结构阵列的向量存储/加载指令 | |
CN103562877B (zh) | 处理操作员消息命令 | |
US11269647B2 (en) | Finish status reporting for a simultaneous multithreading processor using an instruction completion table | |
US9727340B2 (en) | Hybrid tag scheduler to broadcast scheduler entry tags for picked instructions | |
US10896040B2 (en) | Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence | |
US20080126760A1 (en) | Method for latest producer tracking in an out-of-order processor, and applications thereof | |
US7694110B1 (en) | System and method of implementing microcode operations as subroutines | |
CN105320494A (zh) | 带有一致的和非一致的子***的存储器排序 | |
US7844859B2 (en) | Method and apparatus for instruction trace registers | |
US20140325187A1 (en) | Single-cycle instruction pipeline scheduling | |
CN104081343A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180612 Termination date: 20190618 |