CN1155882C - 具有指令历史信息的基本块高速缓存的微处理器、执行方法和系统 - Google Patents

具有指令历史信息的基本块高速缓存的微处理器、执行方法和系统 Download PDF

Info

Publication number
CN1155882C
CN1155882C CNB001370030A CN00137003A CN1155882C CN 1155882 C CN1155882 C CN 1155882C CN B001370030 A CNB001370030 A CN B001370030A CN 00137003 A CN00137003 A CN 00137003A CN 1155882 C CN1155882 C CN 1155882C
Authority
CN
China
Prior art keywords
instruction
group
instruction group
storage
high speed
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
Application number
CNB001370030A
Other languages
English (en)
Other versions
CN1303043A (zh
Inventor
ղķ˹��A��������
詹姆斯·A·卡尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1303043A publication Critical patent/CN1303043A/zh
Application granted granted Critical
Publication of CN1155882C publication Critical patent/CN1155882C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明披露了一种处理器、数据处理系统和有关的执行方法。处理器适用于接收一个指令集,并把所述指令集组织指令组,然后,指令组被分派执行。在执行指令组时,记录表示和指令组相关的异常事件的指令历史信息。此后,响应指令历史信息修改指令的执行,以便阻止在随后的指令组执行期间发生异常事件。

Description

具有指令历史信息的基本块 高速缓存微处理器、执行方法和系统
技术领域
本发明一般涉及微处理器结构领域,尤其涉及利用指令组结构、相应的高速缓存功能及其有用的扩展的微处理器。
背景技术
微处理器技术已经达到千兆赫的性能,对微处理器设计者的主要的挑战是利用达到最新技术发展水平的技术,同时又保持和为利用特定的指令系统结构(ISA)操作而设计的大量的已安装软件兼容。为了解决这个问题,设计者已经实现了“分层结构”的微处理器,其适应于接收按照现有的ISA构成的指令,并把接收的指令的指令格式转换为更适合于在千兆赫执行流水线中操作的内部ISA。参看图4,图中示出了分层结构的微处理器401的选择的部分。在这种设计中,微处理器401的高速缓存410接收并存储借助于取单元402从主存储器取来的指令。在指令高速缓存单元410中存储的指令按照第一ISA(即其中写有由处理器401执行的程序的ISA)被格式化。然后从指令高速缓存410中检索指令并通过ISA转换单元412被转换为第二ISA。因为从第一ISA到第二ISA的转换需要多个周期,所以转换处理一般是流水线处理,因而,在任何给定的时刻,可能有多个被从第一ISA转换为第二ISA的指令。然后输出被转换的指令,以便在处理器401的执行流水线422中执行。取单元402包括分支预测逻辑406,其借助于预测分支决定的结果试图确定伴随着分支指令的将被执行的指令的地址。然后,指令被预测性地发出并被根据分支预测执行。然而,当一个分支预测错误时,被悬在微处理器401的指令高速缓存410和结束级432之间的指令必须被刷新。当误预测的分支引起系统刷新时,则招致作为流水线长度的函数的性能损失。必须被刷新的流水线的数量越大,分支误预测性能损失也越大。因为分层体系结构加于处理器流水线,并增加了在一个给定的时刻可能处于“飞行”中的指令的数量,所以和分层体系结构相关的分支预测损失可能成为处理器性能的一个限制因素。因此非常需要实现一种能够解决分支误预测性能损失的分层体系结构的微处理器。此外,还需要能够至少部分地解决由重复执行一段代码而引起的例外条件反复发生的解决方案。还需要一种能够操作实际上较大的发出队,而不牺牲检索下一个要执行的指令的能力。
发明内容
上述的问题通过一种利用指令组和与所述指令组的格式匹配的高速缓存装置的微处理器被大部分解决了。本发明的一个实施例提出了一种微处理器和一种相关的方法以及数据处理系统。所述微处理器包括指令分裂单元,其被构成用于接收第一个微处理器指令集。所述分裂单元把所述指令集组织成指令组。在所述指令组中的每个指令共用公共的指令组标记。所述处理器还包括基本块高速缓存装置,其利用指令组格式被组织,并且被构成用于高速缓存由分裂单元产生的指令组。处理器的执行单元适用于执行指令组中的指令。在一个实施例中,当在执行指令组中的指令期间产生引起刷新的异常时,则所述的刷新只刷新那些已被从基本块高速缓存中分派的指令。通过只刷新那些已经到达基本块高速缓存的指令,处理器用不着刷新悬挂在分裂单元流水线中的指令。因为被刷新的指令较少,所以可以减少异常性能损失。在一个实施例中,接收的指令被按照第一指令格式格式化,并且按照第二指令格式对第二指令集格式化,其中所述第二指令格式比第一指令格式宽。基本块高速缓存被合适地构成,用于在基本块高速缓存的相应的入口中存储每个指令组。在一个实施例中,基本块高速缓存中的每个入口包括表示相应的基本块高速缓存入口的入口字段和预测下一个要被执行的指令组的指针。处理器最好被构成用于响应误预测的分支更新高速缓存的指针。
本发明还提出了一种利用指令历史信息和基本块高速缓存一起来改善性能的微处理器、数据处理系统和方法。这种处理器适用于接收一个指令集,并把所述指令集组织成指令组,然后,指令组被分派执行。在执行指令组时,记录表示和指令组相关的异常事件的指令历史信息。此后,响应指令历史信息修改指令的执行,以便阻止在随后的指令组执行期间发生异常事件。所述处理器包括存储装置,例如指令高速缓存,L2高速缓存和系统存储器,分裂单元,和基本块高速缓存。分裂单元被构成用于从存储装置接收指令集。分裂单元适用于把指令集组织成指令组。分裂单元可以从第一指令格式到第二指令格式修改指令集的格式。基本块高速缓存的结构适用于存储指令组。基本块高速缓存包括相应于每个基本块高速缓存入口的指令历史字段。指令历史信息表示和指令组相关的异常事件。在优选实施例中,基本块高速缓存的每个入口相应于由分裂单元产生的一个指令组。处理器还可以包括完成表控制逻辑,其被构成用于当指令组完成时存储执行历史字段中的信息。指令历史信息可以表示在指令组中的指令是否具有对另一个指令的依赖性,或者可以表示先前的指令组的执行是否引起存储输送异常。在这个实施例中,处理器被构成用于响应检测到指令组先前的执行引起过存储输送异常而以有序方式执行指令。
本发明还提出一种利用第一发出队和第二发出队的处理器、数据处理系统和相关的方法。所述处理器适用于向发出单元分派指令。所述发出单元包括第一发出队和第二发出队。如果指令在当前不满足被发出的条件则被存储在第一发出队中。如果指令在当前满足被发出的条件则被存储在第二发出队中。处理器从第一发出队的指令中确定要发出的下一个指令。如果指令依赖于另一个指令的执行结果,则可以从第一发出队中转移到第二发出队中。在一个实施例中,指令可以在被发出以便执行之后被从第一发出队中转移到第二发出队中。在这个实施例中,在一个特定的时间间隔内,指令可以被保存在第二发出队中。此后,如果该指令尚未被拒绝,则包含该指令的第二发出队入口不再被分配。所述微处理器包括指令高速缓存,分配单元,其被构成用于接收来自指令高速缓存的指令,以及发送单元,其被构成用于接收来自分配单元的指令。发送单元适用于分配当前够执行条件的分派的指令到第一发出队中,并把当前不够执行条件的指令分配到第二发出队中。
附图说明
本发明的其它的目的和优点通过下面结合附图详细说明本发明可以更加清楚,其中:
图1是包括按照本发明的一个实施例的数据处理系统的选择的部分的方块图;
图2是按照本发明的一个实施例的微处理器的选择的部分的方块图;
图3表示由图2所示的处理器的一个实施例执行的指令分裂功能的一个例子;
图4是一种微处理器的选择的部分的方块图;
图5是图2的微处理器的基本高速缓存块的方块图;
图6说明图2的微处理器可能遇到的各种分支情况;图7是适用于利用本发明的一个填空表的方块图;
图8是包括指令历史信息的基本块高速缓存的方块图;以及
图9是包括按照本发明的一个实施例的一次发出队和二次发出队的发出队的方块图。
虽然本发明可以用各种不同的形式实施,此处还是以举例的方式在附图中示出了一些特定的实施例并加以详细说明。不过,应当理解,这里的附图和详细说明并不是为了把本发明限制于这些特定的实施例,而恰恰相反,本发明应当包括落在由所附权利要求限定的本发明的构思范围内的所有改型和等效替代方案。
具体实施方式
参见图1,其中示出了按照本发明的数据处理系统100的一个实施例。系统100包括一个或几个中央处理单元(处理器)101a,101b,101c等(一般被称为处理器101)。在一个实施例中,每个处理器101可以包括简化指令系统计算机(RISC)微处理器。关于RISC处理器的的附加信息一般可以在C.May et al.Ed.,PowerPC Architecture:ASpecification for a New Family of RISC Peocessors(MorganKaufmann,1994 2d edition)得到。处理器101通过系统总线113和系统存储器250以及各种其它元件相连。只读存储器(ROM)102和系统总线113相连,并且可以包括基本输入输出系统(BIOS),其用于控制系统100的某个基本功能。图1还示出了I/O适配器107和网络适配器106,它们和系统总线113相连。I/O适配器107连接系统总线113和大容量的存储装置104例如硬盘103和/或磁带存储驱动器105。网络适配器106互连总线113和外部网络,以便使数据处理系统100能够和其它这样的的系统进行通信。显示监视器136通过显示适配器112和系统总线113相连,其中可以包括图形适配器,用于改善图形密集应用的性能,以及视频控制器。在一个实施例中,适配器107,106和112可以通过中间总线桥(未示出)和一个或几个与系统总线113相连的I/O总线。适用于连接外围设备例如硬盘控制器、网络适配器、和图形适配器的I/O总线包括按照PCI本地总线规范Rev.2.2规定的外围元件接口(PCI)总线,其可以从PCI SpecialInterest Group,Hillsboro,OR,得到,在此列为参考。还示出了通过用户接口适配器108和系统总线113相连的附加的输入输出装置。键盘109、鼠标110、以及扬声器111都通过用户接口适配器108和总线113相连,所述用户接口适配器可以包括把多个设备适配器集成一个集成电路的超I/O芯片。关于这种芯片的其它信息,读者可以参阅PC87338/PC97338 ACPI 1.0 and PC98/99 Compliant SuperI/O datasheet from National Semiconductor Corporation(November 1998)at微处理器.national.com.。这样,如图1所示的配置,系统100包括呈处理器101的形式的处理装置,包括系统存储器250和大容量存储器104的存储装置,输入装置例如键盘109和鼠标110,以及包括扬声器111和显示器136的输出装置。在一个实施例中,系统存储器250和大容量存储器104集中存储一种操作系统例如IBM公司的AIX操作系统或其它合适的操作系统,用于协调图1所示的各种元件的功能。关于AIX操作系统的其它细节可以在AIXVersion 4.3 TechnicalReference:Base Operating System and Extensions,Volumes 1and 2(order numbers SC23-4159and SC23-4160);AIX Version 4.3 SystemUser’s Guide:Communications and Networks(order numberSC23-4122);and AIX Version 4.3 System User’s Guide:OperatingSystem and Devices(order number SC23-4121)from IBMCorporation at微处理器.ibm.com得到,在此列为参考。
参见图2,其中示出了按照本发明的一个实施例的处理器101的一个简化的方块图。图2所示的处理器101包括适用于产生要被读取的下一个指令的地址的指令读取单元202。由指令读取单元202产生的指令地址被提供给指令高速缓存210。读取单元202可以包括分支预测逻辑,顾名思义,其用于进行关于影响程序执行流程的决定结果的预测。为了通过推测地和无序地执行指令来实现改善性能,在处理器101的所有的能力中,正确地预测分支决定的能力是一个重要的元素。由读取单元202产生的地址被提供给指令高速缓存210,其在一种高速存储装置中包含一个系统存储器内容的子集。在指令高速缓存210中存储的指令最好具有第一ISA的格式,其一般是一种传统的ISA,例如PowerPC或x86兼容的指令集。关于PowerPC指令集的详细信息可以在PowerPC 620 RISC Microprocessor User’s Manualavailable from Motorola,Inc.(Order No.MPC620UM/AD)中得到,在此列为参考。如果由读取单元202产生的地址指令相应于当前被复制在指令高速缓存中的系统存储器位置,则指令高速缓存210把相应的指令送到指令分裂单元212。如果相应于由读取单元202产生的指令地址的指令当前不在指令高速缓存210中(即由读取单元202提供的指令地址不在指令高速缓存210中),则在指令被送到分裂单元212之前,指令必须从L2高速缓存(未示出)或系统存储器中被读取。
分裂单元212适用于修改输入的指令流,从而产生一组优化的指令,用于以高的操作频率(例如超过1GHz的操作频率)在下面的执行流水线中执行。在一个实施例中,例如,分裂单元212以32位宽ISA接收指令,例如由PowerPC支持的指令组,并把指令转换成最好是较宽的第二ISA,其易于在以1GHz或更高的频率范围内操作的高速执行单元中执行。由分裂单元212产生的指令的较宽的格式可以包括例如含有信息(例如操作数值)的显式字段,所述信息只在由分裂单元212接收的指令中隐含或参考,所述字段按照第一格式被格式化。在一个实施例中,例如,由分裂单元212产生的指令的ISA具有64位或更宽的宽度。
在一个实施例中,设计分裂单元212,如此处所设想的,除去把指令从第一格式转换成最好是较宽的第二格式之外,还把读取的指令集组织在指令“组”302中,其例子如图3所示。每个指令组302包括一组指令位置304a,304b等(一般被称为指令位置304)。把指令集组织在指令组中有利于高速执行,其中主要通过对于大量的飞行中的指令简化为保持重新命名寄存器变换和完成表所需的逻辑。在图3中,示出了通过分裂单元212可以实现的指令组的3个例子。
在例1中,由标号301表示的一组指令由分裂单元212转换成一个单个的指令组302。在所示的本发明的实施例中,每个指令组302包括由标号304a,304b,304c,304d,304e表示的5个位置。每个位置304可以包含一个指令。在本实施例中,每个指令组最多可以包括5个指令。在一个实施例中,由分裂单元212接收的指令集301中的指令按照第一ISA被格式化,如上所述,并且存储在组302中的指令按照第二较宽的格式被格式化。使用指令组通过减少必须被单独启动和跟踪的指令的数量简化了重新命名恢复的和完成的表逻辑。因而,在无序处理器中,估计使用指令组在力图简化跟踪挂起指令时会牺牲关于每个指令的一些信息。
图3的例2说明按照本发明的一个实施例由分裂单元212实现的指令组的第二个例子。这个例子表示分裂单元212把复杂的指令组织成简单的指令组以便高速执行的能力。在所示的例子中,两个更新加载(LDU)指令序列被组织成指令组,所述指令组包括分别位于304a和304c的一对加载指令和分别位于304b和304d的一对ADD指令。在这个例子中,因为组302不含有分支指令,所以指令组302的最后位置304e不含有指令。PowerPC更新加载指令和在其它指令集中的类似指令一样,是一种复杂的指令,其影响多个通用寄存器(GPR)的内容。具体地说,更新加载指令可以被分成影响第一GPR的内容的加载指令和影响第二GPR的内容的ADD指令。因而,在图3的例2的指令组302中,两个或多个指令位置304中的指令相应于由分裂单元212接收的一个指令。
在例3中,输入到分裂单元212的单个指令被分成占据多个组302的一组指令。更具体地说,例3说明加载多重(LM)指令。加载多重指令(按照PowerPC指令集)将存储器中的连续的位置的内容装入被连续编号的GPR中。在所示的例子中,6个连续的存储器位置的多次加载被分成6个加载指令。因为按照所述的处理器101的实施例的每个组32最多包括5个指令,并且因为第5个位置304e被保留用于分支指令,所以6个寄存器的多次加载分别被分成两组302a和302b。加载指令当中的4个被存储在第一组302a中,而其余的两个加载指令被存储在第二组302b中。因而,在例3中,一个指令被分成生成多个指令组的指令集。
现在参看图2,由分裂单元212的优选实施例产生的指令组302被送到基本块高速缓存213,在那里它们被存储等待执行。参看图5,其中示出了基本块高速缓存213的实施例。在所示的实施例中,基本块高速缓存213包括一组入口502a-502n(一般被称为基本块高速缓存入口)。在一个实施例中,在基本块高速缓存213中的每个入口含有一个指令组302。此外,每个入口502可以包括入口识别符504,指针506和指令地址(IA)字段507。每个入口502的指令地址字段507类似于完成表218的IA字段704。在一个实施例中,在基本块高速缓存504中的每个入口502相应于在完成表218中的入口,并且指令地址字段507表示在相应的指令组302中的第一指令的指令地址。在一个实施例中,指针506根据分支预测算法、分支历史表或其它合适的分支预测机构表示要被执行的下一个指令组302的入口识别符。如前所述,利用分裂单元212形成指令组的优选的实施方案在每个指令组302中的最后位置304分配分支指令。此外,分裂单元212的优选实施例产生指令组302,其中在组302中的分支指令的数量是1(或更少)。在这种结构中,每个指令组302可以被看作代表图6所示的分支树600的一条“腿”,其中指令组302用其相应的指令组入口504的值表示。例如第一指令组302a用入口数(1)表示,依此类推。作为例子,假定处理器101的分支预测机构预测腿2(相应于第二组302b)将在腿1之后被执行,并且腿3将在腿2之后被执行。按照本发明的一个实施例,基本块高速缓存213通过设置指针506指示要被执行的下一组302来反映这些分支预测。在基本块高速缓存213中的每个入口502的指针506可被用于确定要被调遣的下一个指令组302。
基本块高速缓存213和块读取单元215以读取单元202和指令高速缓存210协同操作的方式类似的方式协同操作。更具体地说,块读取单元215负责产生被提供给基本块高速缓存213的指令地址。被块读取单元215提供的指令地址和基本块高速缓存213中的指令地址字段507中的地址相比较。如果被块读取单元213提供的指令地址在基本块高速缓存213中,则向发出队230输入合适的指令组。如果由块读取单元215提供的地址不在基本块高速缓存213内,则指令地址被回送到读取单元202,从指令高速缓存210中检索合适的指令。在用于其区域(小片尺寸)保存的一个实施例中,基本块高速缓存213能够取消指令高速缓存210。在这个实施例中,指令从一个合适的存储装置例如L2高速缓存或系统存储器中被检索,并被直接提供给分裂单元212。如果由块读取单元213产生的指令地址不在基本块高速缓存213中,则从L2高速缓存或系统存储器中而不从指令高速缓存210中检索合适的指令。
所示的处理器101的实施例还表示调度单元214。调度单元214负责确保在对其合适的发出队220输入每个指令组中的指令之前所有所需的资源都是可得到的。此外,调度单元214与调度和完成控制逻辑216通信,以便保持跟踪指令被发出的顺序和这些指令的完成状态,以利于无序执行。在处理器101的实施例中,其中分裂单元212把输入指令组织成为指令组,如上所述,每个指令组302通过传递发出的指令组的顺序的完成和控制逻辑216分配一个组标记(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,在完成表218中存储着相应于指令组302的完成信息。因而,在完成表118的入口1中存储的指令组302的GTAG的值为1,依此类推。在这个实施例中,完成表118还可以包括“回绕”位,用于表示具有较低的GTAG值的指令组实际上比具有较高的GTAG值的指令组新。在一个实施例中,指令地址字段704包括相应的指令组302的第一位置304a中的指令的地址。状态字段706可以含有一个或几个状态位,用于指示例如在完成表218中的相应的入口702是否是可以利用的,或者该入口已经被分配给一个待执行的指令组。
在图2所示的处理器101的实施例中,指令从调度单元214向发出队220被发出,指令在发出队等待在相应的执行管道中被执行。处理器101可以包括各种类型的执行管道,每个管道被指定用于执行处理器的指令集的一个子集。在一个实施例中,执行管道222可以包括分支单元流水线224,负载存储流水线226,固定点算法单元228,和浮动点单元230。每个执行管道222可以包括两个或多个流水线级。在发出队220中存储的指令可以通过使用任何一个发出优先权算法被发送给执行管道222。在一个实施例中,例如在发出队220中的最早的待执行指令是被发送给执行管道222的下一个指令。在这个实施例中,由调度单元214指定的GTAG值被用于确定在发出队220中待执行的指令的相关的级。在被发出之前,指令的目标寄存器操作数被指定给可利用的重新命名GPR。当一个指令最后从发出队120发送到合适的执行管道时,该执行管道则按照该指令的操作码的指示进行合适的操作,并在该指令到达流水线的最后一级时(由标号132表示)把执行结果写入指令的重新命名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,以便反映最新的分支信息。通过在极接近于执行流水线222处合并基本块高速缓存213和块读取单元215,本发明预计能够减少误预测分支的性能损失。更具体地说,通过在指令分裂单元212的“下游侧”上实施基本块高速缓存213,本发明取消了在分裂单元212中悬挂的来自分支误预测刷新通路的指令,从而减少了由于分支误预测而必须清洗的流水线的级数,因而减少了性能损失。此外,基本块高速缓存213包括一个高速缓冲存储机构,其具有和调度与完成控制单元216以及完成表218的组织相匹配的结构,借以简化插入逻辑的组织,并帮助实现对基本块高速缓存213的有用的扩展,如下所述。
在一个实施例中,基本块高速缓存213还包括指令历史信息,这能够借助于记录在同一指令组的随后的执行期间可能使用的信息,使得避免可能引起异常、刷新、中断或其它性能限制事件(被统称为异常事件)的情况,从而改善处理器的性能。在图8所示的基本块高速缓存213的实施例中,指令历史信息被存储在每个入口502的指令历史字段508中。作为可以被存储在指令历史字段508中的信息类型的一个例子,可以举出包含一个特定的加载指令的指令组,所述指令组在所述加载指令最后一次被执行时导致存储发送的异常。此处所用的术语“存储发送的异常”当位于共用公共存储器参考号的一条存储指令之后(按照程序顺序)的一条加载指令在一个无序机中先于该存储指令执行时发生。因为如果在存储指令之前执行加载指令,加载指令则从寄存器中检索一个无效的值,所以产生一个引起指令刷新的异常。在基本块高速缓存213和完成与控制逻辑216之间的并行大大有助于完成向基本块高速缓存213的相应的入口输送由调度和完成控制逻辑216得知的指令被执行和完成的信息的任务。在没有所述并行的情况下,来自调度和完成控制逻辑216的完成信息一般要求以插入散列表或其它合适的机构的一些方式通过,以便使组指令信息和其元件指令相关。在存储发送的例子中,在检测到存储发送异常时,调度和完成控制单元216将把一位或几位写在表示存储发送异常的基本块高速缓存213中的适当入口的指令历史字段508中。如果指令组被随后执行,则可以使用表示以前发生的存储输送异常的指令历史信息,例如,把处理器置于有序方式,其中在完成存储之前阻止执行加载。因而,本发明的这一实施例考虑记录表示和指令组相关的异常事件的指令历史信息,并且此后修改指令组的执行,以便在随后的指令组的执行期间阻止异常事件的发生。虽然以存储发送为例进行了说明,但是此处考虑的指令历史信息字段也适合于记录和各种可能使处理器避免重新发生异常状态的历史事件相关的信息,例如和任何预测机构的精度、操作数值的预测、高速缓存的有无等相关的信息。
可以在基本块高速缓存213的执行历史字段508中被记录的信息的一个例子由图9所示的实施例说明,其中一个或几个发出队220被细分为第一发出队902和第二发出队904。发出队220的最佳的尺寸和深度表示完成考虑之间的平衡。在一方面,希望执行非常大和非常深的发出队,以便最大限度地利用处理器101的执行无序指令的能力。发出无序指令的能力受到在发出队220中的指令数量的限制。较大的数量的发出队相应于较大数量的适合于无序处理的指令。在另一方面,随着发出队220的深度的增加,处理器在其周期时间限制内确定下一个被发出的指令的能力也增加。换句话说,在发出队220中悬挂的指令的数量越大,用于确定下一个要发出的指令所需的时间也越长。因此,发出队例如发出队220通常被限制于大约20或更少的深度。本发明的一个实施例考虑利用深的发出队而不需过大地增加检索下一个能够发出的指令的发出队所需的逻辑的优点。本发明利用这样的事实,即,通常在发出队220中悬挂的指令不能被立即发出,这或者是因为其已经被发出,或者是因为其被悬挂在处理器101的执行流水线222中,或者其正在等待因操作数值而所依赖的另一个指令的完成。
参看图9,按照本发明的一个实施例的发出队220包括第一发出队902和第二发出队904。第一发出队902含有能够被立即发出的指令。在一个实施例中,从调度单元214中派遣的指令首先被存储在第一发出队902的可得到的发出中。如果随后确定一个指令具有和另一个指令的相关性,则相关的指令被移动到第二发出队904,直到相关的指令所依赖的指令检索到所需的信息。例如,如果在加载指令之后的一个附加的指令需要加载指令的结果,则可以把两个指令首先调入第一发出队902中。不过,在接着确定附加的指令具有对加载指令的依赖性时,附加的指令被从第一队902被转移到第二发出队904。在上面参照图8所述的利用指令历史字段508的实施例中,可以记录附加指令的依赖性,使得在该指令的随后执行期间,附加指令可被直接存储在第二发出队220中。也可以使用第二发出队904存储最近被发出的仍然被悬挂在处理器的执行流水线中的指令。在本实施例中,指令从第一发出队902发出,然后被转移到第二发出队904。在一个实施例中,指令可以驻留在第二发出队904中,直到确定该指令不被拒绝为止。确定一个指令尚未被拒绝的一个方法是实施一个和第二发出队904中的每个发出相关的计时器/计数器(未示出)。当开始把指令从第一发出队902转移到第二发出队904时,计数器/计时器被启动。在一个实施例中,计时器/计数器对从计时器/计数器被启动时已经经过的时钟周期的数量计数。如果计数器/计时器在一个预定的周期数之内继续计数,则没有检测到指令已被拒绝,指令被假定已经成功地被完成,并且在第二发出队904中的项不再被分配。通过利用这样的一个发出队,其中包括第一发出队和第二发出队,所述第一发出队专用于当前够条件发出以便被执行的指令,在所述第二发出队中的指令或者因为指令的相关性,或者因为该指令是最近从第一发出队发出的而尚未被发送,但是所述指令当前不够执行条件,可以增加发出队的有效尺寸或深度,而不显著地增加用于确定下一个要被发出的指令所需的时间(即逻辑电平的数量)。
本领域的技术人员应当理解,根据上面披露的内容,可以设想许多不同的微处理器的实施例,其中包括适合于存储分组指令(即已被从第一格式转换为第二格式的指令)的高速缓存,以便减少误预测的分支有关的等待时间。应当理解此处详细说明的本发明的形式仅仅是目前的优选的例子,旨在在一个宽的范围内解释下面的权利要求,所附的权利要求包括这些实施例的所有的改变和改型。

Claims (20)

1.一种用于执行微处理器指令的方法,包括以下步骤:
把接收的指令集组织成为指令组;
分派所述指令组进行执行;
在执行所述指令组时,记录表示和所述指令组有关的异常事件的指令历史信息;以及
响应所述指令历史信息修改所述指令的执行,以便阻止在指令组随后的执行期间发生异常事件。
2.如权利要求1所述的方法,还包括:将指令组高速缓存在一个基本块高速缓存中,其中该基本块高速缓存中的每个入口相应于一个指令组。
3.如权利要求2所述的方法,还包括从基本块高速缓存中发送指令组用于执行。
4.如权利要求1所述的方法,其中指令集按照第一指令格式被格式化,并且在指令组中的指令集按照第二指令格式被格式化。
5.如权利要求1所述的方法,其中指令历史信息的记录包括记录表示指令组的执行是否引起过存储发送异常的信息。
6.如权利要求5所述的方法,其中指令组执行的修改包括在随后的指令组的执行之前输入有序执行方式。
7.一种微处理器,包括:
存储装置;
分裂单元,用于从存储装置接收指令集,并且适用于把所述指令集组织成为指令组;以及
基本块高速缓存,其适用于存储来自分裂单元的指令组,其中基本块高速缓存包括相应于基本块高速缓存入口的指令历史字段,其中的指令历史信息表示和所述指令组相关的异常事件。
8.如权利要求7所述的处理器,其中在基本块高速缓存中的每个入口相应于由分裂单元产生的一个指令组。
9.如权利要求7所述的处理器,还包括完成表控制逻辑,其构成用于在指令组完成时存储指令历史字段中的信息。
10.如权利要求7所述的处理器,其中指令历史信息表示指令组中的指令是否具有对其它指令的依赖性。
11.如权利要求7所述的处理器,其中指令历史信息表示以前执行的指令组是否引起过存储输送异常。
12.如权利要求11所述的处理器,其中处理器被构成用于响应检测到以前执行的指令组引起过存储输送异常而执行有序方式。
13.如权利要求7所述的处理器,其中分裂单元把指令集的格式从第一指令格式修改为第二指令格式。
14.一种包括至少一个处理器、存储器、输入装置和显示装置的数据处理系统,其中所述处理器包括:
存储装置;
分裂单元,用于从存储装置中接收指令集,并且适用于把所述指令集组织成指令组;以及
基本块高速缓存,其适用于存储来自分裂单元的指令组,其中基本块高速缓存包括相应于基本块高速缓存入口的指令历史字段,其中的指令历史信息表示和所述指令组相关的异常事件。
15.如权利要求14所述的系统,其中在基本块高速缓存中的每个入口相应于由分裂单元产生的一个指令组。
16.如权利要求14所述的系统,还包括完成表控制逻辑,其构成用于在指令组完成时存储指令历史字段中的信息。
17.如权利要求14所述的系统,其中指令历史信息表示指令组中的指令是否具有对其它指令的依赖性。
18.如权利要求14所述的系统,其中指令历史信息表示以前执行的指令组是否引起过存储输送异常。
19.如权利要求18所述的系统,其中处理器被构成用于响应检测到以前执行的指令组引起过存储输送异常而执行有序方式。
20.如权利要求14所述的系统,其中分裂单元把指令集的格式从第一指令格式修改为第二指令格式。
CNB001370030A 2000-01-06 2000-12-27 具有指令历史信息的基本块高速缓存的微处理器、执行方法和系统 Expired - Fee Related CN1155882C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/477,569 US6697939B1 (en) 2000-01-06 2000-01-06 Basic block cache microprocessor with instruction history information
US09/477,569 2000-01-06

Publications (2)

Publication Number Publication Date
CN1303043A CN1303043A (zh) 2001-07-11
CN1155882C true CN1155882C (zh) 2004-06-30

Family

ID=23896471

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB001370030A Expired - Fee Related CN1155882C (zh) 2000-01-06 2000-12-27 具有指令历史信息的基本块高速缓存的微处理器、执行方法和系统

Country Status (5)

Country Link
US (1) US6697939B1 (zh)
JP (1) JP3683808B2 (zh)
KR (1) KR100407014B1 (zh)
CN (1) CN1155882C (zh)
HK (1) HK1035592A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100486259B1 (ko) * 2002-09-09 2005-05-03 삼성전자주식회사 컴퓨터 시스템의 동작 속도를 향상시키는 캐쉬 구조를 가지는 프로세서 및 캐쉬 관리 방법
JP3837386B2 (ja) * 2003-02-18 2006-10-25 誠 小川 情報処理装置
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US7380104B2 (en) * 2006-04-25 2008-05-27 International Business Machines Corporation Method and apparatus for back to back issue of dependent instructions in an out of order issue queue
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US8082467B2 (en) * 2009-12-23 2011-12-20 International Business Machines Corporation Triggering workaround capabilities based on events active in a processor pipeline
US9135005B2 (en) * 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8464030B2 (en) 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
CN102541511B (zh) * 2010-12-30 2015-07-08 世意法(北京)半导体研发有限责任公司 用于可乱序执行指令的处理器的流水线排空
US9164772B2 (en) 2011-02-04 2015-10-20 Qualcomm Incorporated Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available
US20120204008A1 (en) * 2011-02-04 2012-08-09 Qualcomm Incorporated Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
CN104657114B (zh) 2015-03-03 2019-09-06 上海兆芯集成电路有限公司 并行化的多分派系统和用于排序队列仲裁的方法
CN105117202B (zh) * 2015-09-25 2018-11-27 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器
US10558463B2 (en) 2016-06-03 2020-02-11 Synopsys, Inc. Communication between threads of multi-thread processor
US10318302B2 (en) 2016-06-03 2019-06-11 Synopsys, Inc. Thread switching in microprocessor without full save and restore of register file
US10628320B2 (en) * 2016-06-03 2020-04-21 Synopsys, Inc. Modulization of cache structure utilizing independent tag array and data array in microprocessor
US10613859B2 (en) 2016-08-18 2020-04-07 Synopsys, Inc. Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions
US10552158B2 (en) 2016-08-18 2020-02-04 Synopsys, Inc. Reorder buffer scoreboard having multiple valid bits to indicate a location of data
US11327791B2 (en) * 2019-08-21 2022-05-10 Arm Limited Apparatus and method for operating an issue queue
US10963402B1 (en) * 2019-12-28 2021-03-30 Advanced Micro Devices, Inc. Using age matrices for managing entries in sub-queues of a queue
US11640270B2 (en) * 2021-07-27 2023-05-02 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for flexible storage controller

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4176394A (en) * 1977-06-13 1979-11-27 Sperry Rand Corporation Apparatus for maintaining a history of the most recently executed instructions in a digital computer
EP0450658B1 (en) * 1990-04-06 2001-08-01 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
CA2105806C (en) * 1992-09-18 2001-11-20 Paul V. Jeffs Apparatus for implementing interrupts in pipelined processors
JP2815236B2 (ja) * 1993-12-15 1998-10-27 シリコン・グラフィックス・インコーポレーテッド スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
US5925124A (en) * 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US6185675B1 (en) * 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6108768A (en) * 1998-04-22 2000-08-22 Sun Microsystems, Inc. Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
US6324640B1 (en) * 1998-06-30 2001-11-27 International Business Machines Corporation System and method for dispatching groups of instructions using pipelined register renaming

Also Published As

Publication number Publication date
CN1303043A (zh) 2001-07-11
US6697939B1 (en) 2004-02-24
JP3683808B2 (ja) 2005-08-17
HK1035592A1 (en) 2001-11-30
KR20010070436A (ko) 2001-07-25
JP2001297001A (ja) 2001-10-26
KR100407014B1 (ko) 2003-11-28

Similar Documents

Publication Publication Date Title
CN1163822C (zh) 微处理器指令执行方法及相关微处理器和数据处理系统
CN1155882C (zh) 具有指令历史信息的基本块高速缓存的微处理器、执行方法和系统
EP0106670B1 (en) Cpu with multiple execution units
US6988186B2 (en) Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
TW502173B (en) Method and apparatus to force a thread switch in a multithreaded processor
JP4170292B2 (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
CN1188778C (zh) 处理指令的方法、处理器和数据处理系统
CN101796487B (zh) 虚拟队列处理电路以及任务处理器
EP0107449B1 (en) Computer with multiple operating systems
CN100478871C (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
CN1116638C (zh) 使用基本块高速缓存的微处理器、系统及指令执行方法
JP3335352B2 (ja) アウトオブオーダジョブ処理方法および装置
US20090271790A1 (en) Computer architecture
JPH02163835A (ja) 待ち行列又はスタックから要素を除去する方法
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
US8140503B2 (en) Information processing apparatus having process units operable in parallel
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
EP1039377A1 (en) System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy
EP1766510B1 (en) Microprocessor output ports and control of instructions provided therefrom
JP4631442B2 (ja) プロセッサ
US7216194B2 (en) Methods and systems for improving delayed read handling
JPS6052453B2 (ja) コンピユ−タシステムに関するプロセス制御ブロツク

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1035592

Country of ref document: HK

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20040630

Termination date: 20100127