CN1148650C - 数据处理系统、微处理器以及处理指令的方法 - Google Patents
数据处理系统、微处理器以及处理指令的方法 Download PDFInfo
- Publication number
- CN1148650C CN1148650C CNB011409363A CN01140936A CN1148650C CN 1148650 C CN1148650 C CN 1148650C CN B011409363 A CNB011409363 A CN B011409363A CN 01140936 A CN01140936 A CN 01140936A CN 1148650 C CN1148650 C CN 1148650C
- Authority
- CN
- China
- Prior art keywords
- instruction
- sequence
- decision
- short branch
- extra
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 title claims abstract description 6
- 238000012546 transfer Methods 0.000 claims description 43
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000013508 migration Methods 0.000 claims 3
- 230000005012 migration Effects 0.000 claims 3
- 238000003860 storage Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 14
- 230000015572 biosynthetic process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 101100203174 Zea mays SGS3 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 206010027476 Metastases Diseases 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000009401 metastasis Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了一个微处理器和处理指令的方法。最初,微处理器的一个调度单元调度一个指令序列。代码序列识别单元(CSR)被用来检测指令序列内部的短转移序列,其中短转移序列包含一个条件设置指令,一个条件转移和至少一个在条件转移未被选中的情况下执行的附加指令。接着短转移序列被内部转换成判定指令序列,判定指令序列包含条件设置指令和对应于短转移序列中各个附加指令的判定指令。接着在处理器的至少一个功能单元中执行判定指令序列。对短转移序列的检测可以包含计算与条件转移指令相关的相对转移地址以及将相对转移地址与一个指定的最大地址进行比较。
Description
技术领域
本发明通常涉及微处理器体系结构的领域,更具体地说是涉及一种使用指令组体系结构和检测指令组内适合于转换成一个或多个判定指令(predicated instruction)的代码序列的逻辑的微处理器。
背景技术
由于微处理器技术允许有上千兆赫的性能,微处理器设计人员面临的一个主要挑战是在利用最新技术的同时保持与大量为具体指令集体系结构(ISA)的操作而设计的已安装软件的兼容性。为了解决这个问题,设计人员实现了″分层体系结构″微处理器,这种微处理器适于接收根据现有ISA格式化的指令并且将接收指令的指令格式转换成更加适合于千兆赫执行流水线中的操作的内部ISA。
由于分层体系结构加入到处理器流水线(pipeline)并且增加了规定时间内可能″运行″的指令的数量,则与分层体系结构相关的转移误测损失会有很大的影响。一个最小化转移误测损失的方案是试图仅减少转移指令数量。由于转移误测只能发生在转移指令上,因而不包含转移指令的代码序列从不会被误测。一个众所周知的减少代码序列中转移指令数量的方法是使用判定指令。判定指令是指如果判定指令自身中指定的条件被满足则执行诸如定点加法的功能的指令。如果条件未被满足,则指令被看作是一个空操作指令(NOP)。
可以用判定指令替换代码序列,上述代码序列包含一个条件设置指令(例如比较指令),后跟一个条件转移指令和根据条件状态执行的短代码序列。在这种序列中,条件转移被用来根据条件状态转移状态较短的代码序列。在这种代码序列的判定指令实现中,消除条件转移语句并且用判定指令替换短代码序列中的各个指令。例如,代码序列:
COMP R1,0//条件设置指令
BEQ LBL//如果R1=0则转移到LBL1
ADD R2,R3,R4
ADD R2,R2,R5
LBL1,NOP
可以替换成下列判定指令:
COMP R1,0//条件设置指令
PADD R2,R3,R4,NE//只在条件(NE)为真时才判定执行加法
PADD R2,R2,R5,NE//只在条件(NE)为真时才判定执行加法
通常,由设计用于支持判定指令的指令集和硬件的编译器根据高级源代码产生判定指令。判定指令的操作码可以不同于与其类似的非判定操作码。然而当编译不包含判定指令的指令集的代码时,强制编译器产生包含条件转移语句的可执行代码。非常期望实现能够识别具有短转移特征的代码序列并且在指令解码、调度和执行判定代码序列期间将序列转换成判定代码序列的处理器硬件。也期望这个判定指令转换对系统用户透明,使得现有代码的重新编译不必利用判定执行硬件。
发明内容
通过微处理器和这里公开的处理指令方法实现上述目标。最初,微处理器的一个调度单元(dispatch unit)调度一个指令序列。代码序列识别单元(CSR)被用来检测指令序列内部的短转移序列,其中短转移序列包含一个条件设置指令,一个条件转移和至少一个在条件转移未被选中的情况下执行的附加指令。接着短转移序列被内部转换成判定指令序列,该判定指令序列包含条件设置指令和对应于短转移序列中各个附加指令的判定指令。接着在处理器的至少一个功能单元中执行判定指令序列。对短转移序列的检测可以包含计算与条件转移指令相关的相对转移地址以及将相对转移地址与一个指定的最大地址进行比较。在一个实施例中,处理器可以把接收的指令序列转换成一个指令组。在这个实施例中,短转移序列中的指定最大指令数量可以是一个关于指令组中指令数量的函数。在条件转移语句最好被分配到指令组中最后位置的一个实施例中,短转移序列中的附加指令位于后续的下一个指令组中。把短转移序列转换成判定指令序列可以包含把短转移序列中的各个附加指令转换成类似的判定指令。在一个实施例中,把附加指令转换成其类似判定指令包含通过将各个附加指令的操作码调整一个预定偏移量来确定短转移序列中各个附加指令的判定指令操作码。在另一个实施例中,可以利用一个操作码查找表完成操作码转换。
根据本发明,提供了一种微处理器,其中包含:一个适合于调度指令序列的调度单元;一个代码序列识别单元,该单元能够检测指令序列内的短转移序列并且还能够把短转移序列转换成功能等价的判定指令序列,其中短转移序列包含一个条件设置指令,一个条件转移和至少一个附加指令;和至少一个能够执行判定指令序列的执行单元。
根据本发明,提供了一种数据处理系统,包含处理器、存储器、输入装置和显示器,其中该处理器包括:一个适合于调度指令序列的调度单元;一个代码序列识别单元,该单元能够检测指令序列内的短转移序列并且还能够把短转移序列转换成功能等价的判定指令序列,其中短转移序列包含一个条件设置指令、一个条件转移和至少一个附加指令;和至少一个能够执行判定指令序列的执行单元。
附图说明
通过阅读下列详细描述并且参照附图会理解本发明的其它目标和优点,其中:
图1是根据本发明的一个实施例的包含一个微处理器的数据处理系统的选定部件的方框图;
图2是有关一个基于本发明的一个实施例的微处理器的选定部件的方框图;
图3图解了图2的处理器的一个实施例执行指令分解功能的例子;
图4是图解一个基于本发明的一个实施例的微处理器的选定部分的方框图;
图5是有关图2的微处理器的一个基本高速缓存模块的方框图;
图6是对图2的处理器可能遇到的各种转移情况的图解;和
图7是有关一个适用于本发明的完成列表的方框图。
虽然本发明可以进行各种修改和可选形式变化,但在附图中例示出其特定实施例并且这里会详细描述。然而应当理解,这里提供的附图和详细描述不是用来将本发明局限于公开的具体实施例,而是包含由所附权利要求书定义的本发明宗旨和范围内的所有修改、等同内容和变化。
具体实施例说明
现在参照图1,其中描述了基于本发明的数据处理系统100的一个实施例。系统100包含一或多个中央处理单元(处理器)101a、101b、101c、等等(集中或统称为处理器101)。在一个实施例中,各个处理器101可以包括一个精简指令集计算机(RISC)微处理器。在C.May等人编辑的《PowerPC体系结构:新RISC处理器系列规范》(MorganKaufmann,1994第二版)中可以得到有关RISC处理器的其它信息。处理器101通过系统总线113被连接到系统存储器250和各种其它部件。只读存储器(ROM)102被连接到系统总线113并且可以包含一个控制数据处理系统100的某些基本功能的基本输入/输出系统(BIOS)。图1还描述了一个与系统总线113相连的I/O适配器107和网络适配器106。I/O适配器107将诸如硬盘103和/或磁带存储驱动器105的大容量存储设备104连接到系统总线113上。网络适配器106将总线113与一个外部网络互连起来以便数据处理系统100与其它这样的系统通信。显示监视器136被显示适配器112连接到系统总线113,显示适配器可以包含一个改进图形应用性能的图形适配器和一个视频控制器。在一个实施例中,适配器107、106和112可以连接到一或多个I/O总线,而I/O总线通过一个中间的总线桥(未示出)连接到系统总线113。连接诸如硬盘控制器、网络适配器和图形适配器的外设的适当I/O总线包含符合PCI特殊兴趣小组,Hillsboro,OR的PCI局部总线规范Rev.2.2的外设部件接口(PCI)总线,并且这里参考引用了上述规范。所示的附加输入/输出设备通过用户接口适配器108连接到系统总线113。键盘109、鼠标110和扬声器111全部通过用户接口适配器108被连接到总线113,用户接口适配器可以包含例如一个将多个设备适配器集成到单独的集成电路中的超级I/O芯片。有关这种芯片的额外信息参见www.national.com上国家半导体公司的PC87338/PC97338 ACPI 1.0和PC98/99 Compliant SuperI/O数据资料(1998年11月)。如图1所示,系统100包含具有处理器101形式的处理装置,包含系统存储器250和大容量存储设备104的存储装置,诸如键盘109和鼠标110的输入装置,和包含扬声器111和显示器136的输出装置。在一个实施例中,一部分系统存储器250和大容量存储设备104共同存储一个诸如IBM公司的AIX操作系统的操作系统或其它适当的操作系统以便协调图1所示的各种部件的功能。有关AIX操作系统的其它详细信息参见www.ibm.com上IBM公司的AIX版本4.3技术参考:基本操作系统和扩展,卷1和2(序号SC23-4159和SC23-4160);AIX版本4.3系统用户指南:通信和网络(序号SC23-4122);和AIX版本4.3系统用户指南:操作系统和设备(序号SC23-4121),这里参考引用了上述资料。
现在参照图2,其中图解了一个基于本发明的一个实施例的处理器101的简化方框图。图2中示出的处理器101包含一个适合于产生下一个要获取的指令的地址的指令获取单元(fetch unit)202。获取单元202产生的指令地址被提供到一个指令高速缓存210。获取单元202可以包含转移预测逻辑,如其名称所示,转移预测逻辑适于对影响程序执行流程的判决结果进行信息预测。正确预测转移判定的能力是处理器101通过推测和不按顺序执行指令来改进性能的总体能力中的重要因素。获取单元202产生的指令地址被提供到一个指令高速缓存210,指令高速缓存包含高速存储设施中系统存储器内容的一个子集。最好根据一个第一ISA格式化指令高速缓存210中存储的指令,第一ISA通常是传统的ISA,例如PowerPC或x86兼容指令集。有关PowerPC指令集的详细信息参见Motorola公司的PowerPC620 RISC微处理器用户手册(序号MPC620UM/AD),这里参考引用了该手册。如果获取单元202产生的地址指令对应于指令高速缓存210中当前复制的一个系统存储器单元,则指令高速缓存210向分解单元(cracking unit)212传递对应的指令。如果对应于获取单元202产生的指令地址的指令当前不位于指令高速缓存210中(即获取单元202提供的指令地址不在指令高速缓存210中),则在指令能够被传递到分解单元212之前必须从一个L2高速缓存(未示出)或系统存储器获取指令。
分解单元212适于修改输入指令流以产生一组为基础执行流水线中的高操作频率(即操作频率超出1GHz)执行而优化的指令。在一个实施例中,分解单元212接收一个32位宽的ISA,例如PowerPC微处理器支持的指令集中的指令,并且将指令转换到一个最好更宽的第二ISA,其便于在工作频率范围达到千兆赫并且更高的高速执行单元中执行。分解单元212产生的宽指令格式可以例如包含显式字段,显式字段包含仅在分解单元212接收、根据第一格式进行格式化的指令中被隐含或引用的信息(例如操作数数值)。例如在一个实施例中,分解单元212产生的指令的ISA有64位宽或更宽。
在一个实施例中,除了将指令从第一格式转换到最好更宽的第二格式之外,这里考虑的分解单元212还将一组获取的指令组织成指令″组″302,图3中示出了指令组的例子。每个指令组302包含一组指令位置(slot)304a、304b等等(集中或统称作指令位置304)。将一组指令组织成指令组有利于通过简化维护大量在运行指令的重命名寄存器映射和完成列表所需的逻辑来实现高速执行。
在图3中,描述了分解单元212可以执行的指令组的三个例子。在例子1中,编号301指示的一组指令被分解单元212转换成一个单独的指令组302。在描述的本发明实施例中,各个指令组302包含由编号304a、304b、304c、304d和304e指示的五个位置。每个位置304可以包含一个单独的指令。在这个实施例中,每个指令组最多可以包含五个指令。在一个实施例中,如上所述根据第一ISA格式化分解单元212接收的指令集合301中的指令,并且根据更宽的第二格式格式化指令组302中存储的指令。使用指令组通过减少必须单独标记和跟踪的指令数量简化了重命名恢复和完成列表逻辑。因而使用指令组考虑到牺牲有关各个指令的某些信息以便简化非顺序执行的处理器中跟踪待执行指令的过程。
图3的例子2图解了基于本发明一个实施例的分解单元212执行的指令组的第二个例子。这个例子表明分解单元212有能力把复杂指令分解成一组简单指令以便以较高的速度执行。在所述的例子中,两个更新加载(LDU)指令构成的序列被分解成分别在位置304a和304c中包含一对加载指令并且分别在位置304b和304d包含一对加法指令的指令组。在这个例子中,由于指令组302不包含转移指令,所以指令组302的最后位置304e不包含指令。类似其它指令集中的类似指令的PowerPC更新加载指令是复杂指令,其原因是该指令影响多个通用寄存器(GPR)的内容。具体地,更新加载指令可以被分解成一个影响第一GPR的内容的加载指令和一个影响第二GPR的内容的加法指令。因而在图3的例子2的指令组302中,两个或更多指令位置304中的指令对应于分解单元212接收的一个单独指令。
在例子3中,进入分解单元212的单独指令被分解成一组占据多个指令组302的指令。更具体地说,例子3图解了一个多重加载(LM)指令。多重加载指令(基于PowerPC指令集)将存储器中连续单元上的内容加载到连续编号的GPR中。在所述的例子中,含有六个连续存储器单元的多重加载指令被分解成六个加载指令。由于基于处理器101的上述实施例的各个指令组302最多包含五个指令,并且由于第五个位置304e为转移指令而保留,则含有六个寄存器的多重加载指令被分解成两个指令组302a和302b。其中四个加载指令被存储在第一指令组302a中,而剩余两个加载指令被存储在第二指令组302b中。因而在例子3中,单独的指令被分解成一组占据多个指令组302的指令。
现在回到图2,分解单元212的优选实施例产生的指令组302被传递到一个基本块高速缓存213,其中存储指令组以等待执行。参照图5,其中描述了基本块高速缓存213的一个实施例。在所述的实施例中,基本块高速缓存213包含一组条目502a-502n(被集中或统称作基本块高速缓存条目502)。在一个实施例中,基本块高速缓存213中的各个条目502包含一个单独的指令组302。另外,各个条目502可以包含一个条目标识符504、一个指针506和一个指令地址(IA)字段507。各个条目502的指令地址字段507类似于完成列表218的IA字段704。在一个实施例中,基本块高速缓存504中的各个条目502对应于完成列表218中的一个条目并且指令地址字段507指示对应指令组302中第一个指令的指令地址。在一个实施例中,指针506指示根据转移预测算法、转移历史记录列表或其它适当的转移预测机制确定执行的下一个指令组302的条目标识符。
如上所示,用分解单元212构成指令组302的优选实现为各个指令组302中的最后位置304分配转移指令。另外,分解单元212的优选实施例产生指令组302,其中一个指令组302中的转移指令数量为1(或更少)。在这个方案中,可以认为各个指令组302表示图6所示的转移树600的一个“支线”(leg),其中由其对应的指令组条目504数值表示指令组302。例如由其条目号码(1)指示第一指令组302a,依此类推。假设处理器101的转移预测机制预测支线1之后会执行支线2(对应于第二指令组302b)并且支线2之后会执行支线3。基于本发明一个实施例的基本块高速缓存213通过设置指针506使之指示要执行的下一个指令组302来反映这些转移预测。基本块高速缓存213中各个条目502的指针506可以被用来确定要调度的下一个指令组302。
基本块高速缓存213和一个块获取单元215配合工作的方式类似于获取单元202与指令高速缓存210配合工作的方式。更具体地说,块获取单元215负责产生一个被提供到基本块高速缓存213的指令地址。将块获取单元215提供的指令地址与基本块高速缓存213中指令地址字段507内的地址相比较。如果块获取单元215提供的指令地址命中基本块高速缓存213,则适当的指令组被传递到提交队列220。如果块获取单元215提供的地址不在基本块高速缓存213中,则指令地址被反馈到获取单元202以便从指令高速缓存210中检索出适当的指令。在一个适合于节省其区域(小片尺寸)的实施例中,基本块高速缓存213能够消除指令高速缓存210。在这个实施例中,从诸如L2高速缓存或系统存储器的适当存储设施检索出指令并且直接提供到分解单元212。如果块获取单元215产生的地址不在基本块高速缓存213中,则从一个不同于指令高速缓存210的L2高速缓存或系统存储器检索出适当的指令。
处理器101的上述实施例还示出了一个调度单元214。调度单元214负责保证在将各个指令组中的指令传递到其适当的提交队列220之前所有的必要资源均可用。另外,调度单元214与调度和完成控制逻辑216通信以便跟踪指令的提交次序和这些指令的完成状态,从而便于非顺序执行。在处理器101这种如上所述使分解单元212将输入指令组织成指令组的实施例中,完成和控制逻辑216为各个指令组302分配一个指示提交指令组的顺序的组标签(GTAG)。例如,调度单元214可以为连续指令组分配单调增加的数值。通过这个方案,具有较低GTAG数值的指令组在具有较大GTAG数值的指令组之前(即比其新)提交。虽然处理器101的上述实施例表明调度单元214是一个不同的功能模块,但基本块高速缓存213的分组指令组织自身引入了调度单元214的功能。因而在一个实施例中,调度单元214被合并到基本块高速缓存213内,而基本块高速缓存被直接连接到提交队列220。
与调度和完成控制逻辑216相关的是,在本发明一个实施例中使用完成列表218跟踪提交指令组的状态。参照图7,其中提供了完成列表218的一个实施例的方框图。在所述的实施例中,完成列表218包含一组条目702a-702n(这里集中或统称作完成列表条目702)。在这个实施例中,完成列表218中的各个条目702包含一个指令地址(IA)字段704和一个状态位字段706。在这个实施例中,各个指令组302的GTAG值标识完成列表218中的条目702,在完成列表中存储了对应于指令组302的完成信息。因而完成列表218的条目1中存储的指令组302会具有GTAG值1,依此类推。在这个实施例中,完成列表218还可以包含一个″环绕″(wrap around)位,环绕位指示具有较低GTAG数值的指令组实际比具有较高GTAG数值的指令组更新。在一个实施例中,指令地址字段704包含对应指令组302的第一位置304a中的指令的地址。状态字段706可以包含一或多个例如指示完成列表218中是否有对应条目702或该条目是否已经被分配给待执行指令组的状态位。
在图2的处理器101的实施例中,从调度单元214向提交队列220提交指令,其中指令在对应的执行管道(pipe)222中等候执行。处理器101可以包含各种类型的执行管道,执行管道的目的是执行处理器指令集的一个子集。在一个实施例中,执行管道222可以包含一个转移单元流水线224,一个加载存储流水线226,一个定点算术单元228,和一个浮点单元230。各个执行管道222可以包括两个或更多流水线级段。可以使用任何提交优先权算法将提交队列220中存储的指令提交到执行管道222。例如在一个实施例中,提交队列220中最旧的待执行指令就是下一个要提交到执行管道222的指令。在这个实施例中,调度单元214分配的GTAG数值被用来确定提交队列220中待执行指令的相对年龄。在提交之前,为指令的目的寄存器操作数分配一个可用的重命名GPR。当一个指令最终被从提交队列220传递到适当的执行管道时,执行管道根据指令的操作码的指示执行适当的操作并且在指令到达流水线的一个完成级段(如编号232所示)前将指令的结果写到指令的重命名GPR中。在重命名GPR及其对应构造的寄存器之间维护一个映射。当一个指令组中的所有指令(和较新指令组中的所有指令)完成执行并且没有产生异常时,递增完成列表218中的一个完成指针使之指向下一个指令组。当完成指针被递增到一个新指令组时,释放与旧指令组中指令相关的重命名寄存器,从而确认旧指令组中指令的结果。如果一或多个比已完成(但仍未确认)指令更旧的指令产生一个异常,则产生异常的指令和所有更新的指令均被清除并且调用一个重命名恢复程序以便把GPR映射返回到最近的已知有效状态。
如果没有确定一个预测转移(转移误测),则清除执行管道222和提交队列220中待执行的指令。另外,更新与误测转移相关的基本块高速缓存条目502的指针506以反映最近确定的转移。在图5中针对程序执行产生一个从支线1(指令组302a)到支线4(指令组302d)的转移的情况图解了这个更新过程的一个例子。由于条目502a的指针506以前预测了一个针对位于基本块高速缓存213中编号为2的条目上的指令组(即指令组302b)的转移,从指令组302a到指令组302d的实际转移被误测了。检测出误测转移并反馈到块获取单元215,清除基本块高速缓存213和各个流水线222的完成级段232之间待执行的指令,并且重新开始执行基本块高速缓存213的条目4中的指令组302d。另外,基本块高速缓存条目502a的指针506被从其以前的值2改变成新值4以反映最近的转移信息。通过将基本块高速缓存213和块获取单元215引入到最接近执行流水线222的位置上,本发明试图减少误测转移造成的性能损失。更具体地说,通过在指令分解单元212的″下行流″一侧实现基本块高速缓存213,本发明从转移误测清除路径消除了分解单元212中待执行的指令,从而减少了在转移误测之后必须消除的流水线级段数量,并且减少了性能损失。另外如下所述,基本块高速缓存213使用具有与调度和完成控制单元216和完成列表218的组织相匹配的结构的高速缓存机制,从而简化了中间逻辑的组织并且有利于将有用的方面扩展到基本块高速缓存213。
在基于本发明的处理器101中通过包含一个代码序列识别单元(CSR)使转移误测导致的性能损失最小化。CSR最好被用来检测包含短转移序列的代码序列。短转移序列的特征是一个条件设置指令,其后跟有一个条件转移指令和一个短″直接寻址"(substantive)指令序列。条件设置指令通常是一个诸如比较指令的指令,其改变PowerPC体系结构中条件寄存器或另一个体系结构中类似寄存器的内容。直接寻址指令通常是诸如加法指令的指令,其影响一或多个通用或浮点寄存器的内容。如果CSR检测到一个短转移序列,则通过从序列中消除转移指令并且用一个类似的判定指令替换各个直接寻址指令来产生一个功能等价的判定代码序列。
在处理器101的一个包含如前所述的分解单元212的实施例中,如图4中编号402所示的CSR可以被嵌入分解单元212中。在这个实施例中,CSR 402被用来检测指令组302中是否有条件转移指令。如果检测到一个条件转移,则将条件转移指令的转移地址与条件转移指令的指令地址相比较以确定序列是否构成一个短转移序列。短转移序列可以被描述成包含的直接寻址指令不多于一个指令组302可以包含的指令数量的转移序列。例如如果分解单元212产生的指令组302可以包含四个直接寻址指令,则短转移序列中直接寻址指令的数量的上限可以是四。
在使用定长指令的体系结构中,将条件转移指令的指令地址和转移目标之间的偏移除以每个指令的字节数量可以计算出一个条件转移指令(在被选中时)跳过的指令数量。如果转移循环内部的指令数量不超过短转移序列允许的最大指令数量,则CSR 402通过删除条件转移指令并且把各个直接寻址指令转换成其等价判定指令从而将代码序列转换成功能等价的判定代码序列404。
在一个实施例中,通过用一个操作码实现判定指令来简化代码序列转换处理,上述操作码是关于其非判定等价操作码的函数。例如各个判定指令可以被分配一个操作码,这个操作码是一个距离其对应非判定操作码的固定偏移。在另一个适合于无法将判定指令操作码实现成关于非判定操作码的函数的体系结构的实施例中,CSR 402可以使用一个指定与各个直接寻址指令等价的判定操作码的操作码查找表403。在转换期间,CSR 402针对初始代码序列中各个非判定直接寻址指令检索出适当的判定指令。判定指令的操作数与非判定指令保持相同。根据初始代码序列的条件转移指令确定执行判定指令所基于的条件代码并且条件代码被包含在各个判定指令中。
在分解单元212如上所述用最好被分配到指令组302中最后位置的转移指令组织指令的一个实施例中,CSR 402在构成判定指令序列时可以被用来评估连续指令组的内容。在这个实施例中,通过检查各个指令组302中的最后位置来检测代码序列。如果最后位置包含一个条件转移指令,则CSR 402确定转移目标是否构成一个如上所述的短转移。如果短转移的最大长度被定义成一个指令组302中包含的直接寻址指令的最大数量,则CSR 402只需要转换紧接在包含条件转移的指令组302后面的指令组302中的直接寻址指令。
为了支持这里考虑的判定执行,包含FXU 228,FPU 230,LSU226的各个执行单元被用来执行判定指令。在一个实施例中,判定电路可以包含一个评估判定条件的预备执行流水线级段。如果判定条件为真,则执行单元以常规方式执行指令。如果判定条件为假,则必须以某种方式从执行流水线中撤消指令,即a)使目标寄存器的状态与其在执行指令之前的状态保持相同,并且b)通知其它取决于可以执行的判定指令的结果的指令。通过丢弃判定指令的结果并且向所有从属指令广播判定指令的结果被确认可以实现这些目标。在另一个实施例中,判定指令可以被提交成两个指令,其中唯一一个指令的结果被确认。一个指令会执行与判定指令相同的计算(或其它功能)并且其它指令则不会执行功能。确认的指令取决于判定条件。在另一个实施例中,当确定判定条件为假时,判定指令可以读取目标寄存器并且接着立即回写以模拟NOP操作,同时也训练了重命名逻辑。
从这个公开内容得到启发的本领域技术人员应当理解,本发明通过允许把短转移代码序列硬件转换到判定执行代码序列并允许执行转换的序列来改进性能。应当理解,在详细描述和附图中示出和描述的本发明的构成仅仅被胜任当前的优选例子。应当广义地解释下面的权利要求以包纳公开的优选实施例的所有变化情况。
Claims (24)
1.一种微处理器中处理指令的方法,包括:
接收一个指令序列;
检测指令序列内部的短转移序列,其中短转移序列包含一个条件设置指令、一个条件转移和至少一个附加指令,其中在条件转移未被选中的情况下有条件执行该附加指令;
将短转移序列内部转换成判定指令序列,判定指令序列包含条件设置指令和对应于短转移序列中各个附加指令的判定指令;和
在处理器的至少一个功能单元中执行判定指令序列。
2.如权利要求1所述的方法,其中检测短转移序列包含计算与条件转移指令相关的相对转移地址。
3.如权利要求2所述的方法,其中还包括将相对转移地址与一个指定的最大值相比较。
4.如权利要求3所述的方法,其中还包括将接收的指令序列组织成一个指令组并且指定的最大相对转移地址是关于一个指令组中指令数量的函数。
5.如权利要求1所述的方法,其中还包括根据指令序列构成一个指令组,其中检测短转移序列包括检测指令组中的条件转移指令。
6.如权利要求5所述的方法,其中条件转移语句位于指令组中的最后位置上。
7.如权利要求6所述的方法,其中短转移序列中的各个附加指令位于跟在包含条件转移语句的指令组之后的指令组中。
8.如权利要求1所述的方法,其中把短转移序列转换成判定指令序列包含把短转移序列中的各个附加指令转换成相应的判定指令。
9.如权利要求8所述的方法,其中把各个附加指令转换成其相应的判定指令包含针对短转移序列中的各个附加指令确定一个判定指令操作码。
10.如权利要求9所述的方法,其中确定判定指令操作码包含将各个附加指令的操作码调整一个预定偏移。
11.如权利要求9所述的方法,其中确定判定指令操作码包含从一个操作码查找表检索出判定指令操作码。
12.如权利要求1所述的方法,其中各个判定指令包含一个直接寻址指令和一个由条件设置指令设置的条件,并且在条件为真的情况下执行直接寻址指令。
13.一种微处理器,其中包含:
一个适合于调度指令序列的调度单元;
一个代码序列识别单元,该单元能够检测指令序列内的短转移序列并且还能够把短转移序列转换成功能等价的判定指令序列,其中短转移序列包含一个条件设置指令,一个条件转移和至少一个附加指令;和
至少一个能够执行判定指令序列的执行单元。
14.如权利要求13所述的微处理器,其中所述代码序列识别单元能够计算与条件转移指令相关的相对转移地址并且将相对转移地址与一个指定的最大地址进行比较。
15.如权利要求14所述的微处理器,其中微处理器能够将接收的指令序列组织成一个指令组并且指定的最大相对转移地址是关于一个指令组中指令数量的函数。
16.如权利要求13所述的微处理器,其中所述代码序列识别单元被用来将短转移序列中的至少一个附加指令的每一个转换成一个相应的判定指令。
17.如权利要求16所述的微处理器,其中所述代码序列识别单元通过针对短转移序列中的各个附加指令确定一个判定指令操作码能够将短转移序列中的至少一个附加指令的每一个转换成其相应的判定指令。
18.如权利要求17所述的微处理器,其中所述代码序列识别单元确定判定指令操作码的操作包含将各个附加指令的操作码调整一个预定偏移。
19.如权利要求17所述的微处理器,其中确定判定指令操作码的操作包含从一个操作码查找表检索出判定指令操作码。
20.一种数据处理系统,包含处理器、存储器、输入装置和显示器,其中该处理器包括:
一个适合于调度指令序列的调度单元;
一个代码序列识别单元,该单元能够检测指令序列内的短转移序列并且还能够把短转移序列转换成功能等价的判定指令序列,其中短转移序列包含一个条件设置指令、一个条件转移和至少一个附加指令;和
至少一个能够执行判定指令序列的执行单元。
21.如权利要求20所述的数据处理系统,其中所述代码序列识别单元能够计算与条件转移指令相关的相对转移地址并且将相对转移地址与一个指定的最大地址进行比较。
22.如权利要求20所述的数据处理系统,其中所述代码序列识别单元通过针对短转移序列中的各个附加指令确定一个判定指令操作码能够将短转移序列中的至少一个附加指令的每一个转换成其相应的判定指令。
23.如权利要求22所述的数据处理系统,其中所述代码序列识别单元确定判定指令操作码的操作包含将各个附加指令的操作码调整一个预定偏移。
24.如权利要求22所述的数据处理系统,其中确定判定指令操作码包含从一个操作码查找表检索出判定指令操作码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/671,868 US6662294B1 (en) | 2000-09-28 | 2000-09-28 | Converting short branches to predicated instructions |
US09/671,868 | 2000-09-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1347029A CN1347029A (zh) | 2002-05-01 |
CN1148650C true CN1148650C (zh) | 2004-05-05 |
Family
ID=24696194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011409363A Expired - Fee Related CN1148650C (zh) | 2000-09-28 | 2001-09-27 | 数据处理系统、微处理器以及处理指令的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6662294B1 (zh) |
JP (1) | JP2002149401A (zh) |
KR (1) | KR20020025687A (zh) |
CN (1) | CN1148650C (zh) |
TW (1) | TW571236B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7210025B1 (en) * | 2000-04-19 | 2007-04-24 | Uht Augustus K | Automatic and transparent hardware conversion of traditional control flow to predicates |
US7299343B2 (en) * | 2002-09-27 | 2007-11-20 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | System and method for cooperative execution of multiple branching instructions in a processor |
US20040064685A1 (en) * | 2002-09-27 | 2004-04-01 | Hung Nguyen | System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution |
US7275149B1 (en) * | 2003-03-25 | 2007-09-25 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | System and method for evaluating and efficiently executing conditional instructions |
US20040230781A1 (en) * | 2003-05-16 | 2004-11-18 | Via-Cyrix, Inc. | Method and system for predicting the execution of conditional instructions in a processor |
GB2402510A (en) * | 2003-06-05 | 2004-12-08 | Advanced Risc Mach Ltd | Predication instruction within a data processing system |
US20040255103A1 (en) * | 2003-06-11 | 2004-12-16 | Via-Cyrix, Inc. | Method and system for terminating unnecessary processing of a conditional instruction in a processor |
US20050066151A1 (en) * | 2003-09-19 | 2005-03-24 | Sailesh Kottapalli | Method and apparatus for handling predicated instructions in an out-of-order processor |
JP4784912B2 (ja) * | 2004-03-02 | 2011-10-05 | パナソニック株式会社 | 情報処理装置 |
US7234043B2 (en) * | 2005-03-07 | 2007-06-19 | Arm Limited | Decoding predication instructions within a superscaler data processing system |
JP4873546B2 (ja) * | 2006-06-20 | 2012-02-08 | ルネサスエレクトロニクス株式会社 | データ処理装置、データ処理方法 |
US8095917B2 (en) * | 2007-06-04 | 2012-01-10 | Microsoft Corporation | Debugger for virtual intermediate language operations |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
US8433885B2 (en) * | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
KR101731752B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
US9256408B2 (en) | 2012-01-20 | 2016-02-09 | Qualcomm Incorporated | Optimizing texture commands for graphics processing unit |
US9207938B2 (en) * | 2012-08-29 | 2015-12-08 | Hewlett-Packard Development Company, L.P. | Instruction forwarding based on predication criteria |
US9367314B2 (en) * | 2013-03-15 | 2016-06-14 | Intel Corporation | Converting conditional short forward branches to computationally equivalent predicated instructions |
JP2015201119A (ja) * | 2014-04-10 | 2015-11-12 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US10013255B2 (en) | 2015-11-01 | 2018-07-03 | Centipede Semi Ltd. | Hardware-based run-time mitigation of conditional branches |
WO2017072615A1 (en) * | 2015-11-01 | 2017-05-04 | Centipede Semi Ltd. | Hardware-based run-time mitigation of conditional branches |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2045790A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Branch prediction in high-performance processor |
JPH10124315A (ja) | 1996-10-18 | 1998-05-15 | Hitachi Ltd | 分岐処理方法およびそのための情報処理装置 |
US5951678A (en) * | 1997-07-25 | 1999-09-14 | Motorola, Inc. | Method and apparatus for controlling conditional branch execution in a data processor |
JP3843594B2 (ja) * | 1998-04-08 | 2006-11-08 | 松下電器産業株式会社 | プロセッサ、コンパイラ及び命令列変換装置 |
JP3595158B2 (ja) * | 1998-03-13 | 2004-12-02 | 株式会社東芝 | 命令割り当て方法及び命令割り当て装置 |
US6427234B1 (en) * | 1998-06-11 | 2002-07-30 | University Of Washington | System and method for performing selective dynamic compilation using run-time information |
US6446258B1 (en) * | 1998-11-03 | 2002-09-03 | Intle Corporation | Interactive instruction scheduling and block ordering |
EP1050811A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Branching in a computer system |
-
2000
- 2000-09-28 US US09/671,868 patent/US6662294B1/en not_active Expired - Lifetime
-
2001
- 2001-09-14 KR KR1020010056804A patent/KR20020025687A/ko not_active Application Discontinuation
- 2001-09-25 TW TW090123584A patent/TW571236B/zh not_active IP Right Cessation
- 2001-09-27 JP JP2001298397A patent/JP2002149401A/ja active Pending
- 2001-09-27 CN CNB011409363A patent/CN1148650C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1347029A (zh) | 2002-05-01 |
US6662294B1 (en) | 2003-12-09 |
KR20020025687A (ko) | 2002-04-04 |
JP2002149401A (ja) | 2002-05-24 |
TW571236B (en) | 2004-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1148650C (zh) | 数据处理系统、微处理器以及处理指令的方法 | |
CN102934075B (zh) | 用于使用预先通知技术改变程序的顺序流程的方法和设备 | |
US6697932B1 (en) | System and method for early resolution of low confidence branches and safe data cache accesses | |
US7711929B2 (en) | Method and system for tracking instruction dependency in an out-of-order processor | |
US6247097B1 (en) | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions | |
US7877580B2 (en) | Branch lookahead prefetch for microprocessors | |
JP3182740B2 (ja) | 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。 | |
CN1742257B (zh) | 用于数据预测的系统及方法 | |
US6513109B1 (en) | Method and apparatus for implementing execution predicates in a computer processing system | |
US6609190B1 (en) | Microprocessor with primary and secondary issue queue | |
US6457120B1 (en) | Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions | |
US7660971B2 (en) | Method and system for dependency tracking and flush recovery for an out-of-order microprocessor | |
US6263427B1 (en) | Branch prediction mechanism | |
US6697939B1 (en) | Basic block cache microprocessor with instruction history information | |
US20090113182A1 (en) | System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit | |
EP0709770A2 (en) | Apparatus to control load/store instructions | |
US6052776A (en) | Branch operation system where instructions are queued until preparations is ascertained to be completed and branch distance is considered as an execution condition | |
EP0651331B1 (en) | A write buffer for a superpipelined, superscalar microprocessor | |
US7991979B2 (en) | Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system | |
US6871343B1 (en) | Central processing apparatus and a compile method | |
KR100402820B1 (ko) | 기본 블럭 캐쉬를 이용하는 마이크로프로세서 | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US6785804B2 (en) | Use of tags to cancel a conditional branch delay slot instruction | |
US6658555B1 (en) | Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline | |
US6185674B1 (en) | Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040505 Termination date: 20110927 |