具体实施方式
以下所述的实施例藉由选择性暂停预测历史记录的累计,以及当暂停动态预测时,通过预测单元(例如分支预测器、数据预取器(data prefetcher)以及存储冲突检测预测器(store collision detection predictor))利用利于静态预测的预测历史记录进行预测,以改进微处理器的效能。更具体地,当微处理器运行一些线程(thread,又称之为“执行绪”)但非其他时,可能暂停预测历史记录累计(prediction history accumulation)以及使用。举例来说,根据运行线程(thread,又称之为“执行绪”)的特权等级选择暂停,更具体地,线程是否运行于管理者特权等级,例如于x86架构处理器下的目前特权等级(currentprivilege level,CPL)的第0级(亦被称为ring 0)。举另一例来说,根据线程的类型选择暂停,例如线程是否为中断处理程序(interrupt handler)。举另一例来说,暂停的选择可根据是否此转换到一新的线程的动作回应一系统调用(system call)指令而设定。举另一例来说,微处理器搜集有关线程的前一执行实例的信息,以及根据上述信息选择暂停,例如指令长度以及效能信息。举另一例来说,根据线程的识别码选择暂停。线程的识别码(identity)可根据,例如,造成转变的事件的类型、当事件发生时处理器的架构状态、以及前述两者的结合而决定。事件的类型可包括,例如,系统调用的执行、软件中断指令的执行、内部特权(inter-privilege)或者任务切换程序调用(task switch procedure call)的执行、以及例外情况的检测。此外,微处理器可在暂停预测历史记录累计以及使用期间将预测历史存储以及还原至局部存储器(local storage)。
注释:
预测单元为微处理器的硬件、软件、或者硬件以及软件的结合,用以预测有关运行在处理器的指令流所将采取的动作。预测可包括(但非以此为限)预测分支指令是否指示微处理器进行分支;预测分支指令的目标地址;预测藉由指令流(instructions of thestream)所存取的数据;预测是否会发生存储冲突(store collision)。预测单元根据由微处理器所执行的指令的特性的历史记录进行预测,又可称为动态预测(dynamicprediction)。当微处理器执行指令流时,预测单元累计历史记录。历史记录可包括(但非以此为限)无论分支指令是否指示微处理器进行分支的执行结果(outcome);作用分支指令(taken buanch instruction)的目标地址;藉由指令流所读取或者存储的数据的地址;与指定快取存储器位置的存储指令有关的信息,例如存储指令的地址、用以计算存储地址的来源的识别符(identifier)、存储数据所依赖的指令的重排序缓冲器索引(reorderbuffer index)、先前与存储指令冲突的载入指令的地址以及重排序缓冲器索引、冲突载入以及存储指令之间的重排序缓冲器索引差量(delta)、冲突载入指令重复的次数的指标(indicator)。预测单元也可不根据历史记录进行预测,又可称为静态预测(staticprediction)。
微处理器的特权等级由微处理器的指令集架构(instruction setarchitecture)所定义,以及控制目前所运行的程序对于系统资源的存取,例如存储器区域、I/O端口以及指令集的特定指令(certain instruction)。
线程为由微处理器所执行的指令的序列。
程序为线程,以及其相关的状态系其他程序共同由操作系统所管理。操作系统将处理识别符分配至程序。
请参阅图1,图1是显示微处理器100的方块图。微处理器100包括预测单元109。预测单元109耦接至控制单元124以及预测历史记录存储器108。控制单元124耦接至引退指令计数器(retired instruction counter)113、效能计数器114、现有特权等级寄存器(current privilege level register)111、以及保存最佳化信息的存储器(storage forholding optimization information)112。在一实施例中,微处理器100包括一个或多个功能单元的管线(未显示),具有指令快取(instruction cache)、指令转换单元或者指令解码器、寄存器重命名单元(register renaming unit)、保留站(reservation station)、数据快取、执行单元、存储器子系统(memory subsystem)以及具有重排序缓冲器的引退单元。优选地,微处理器100包括超标量(superscalar)、无序执行微架构(out-of-order executionmicroarchitecture)。预测单元109可并入微处理器100的各种功能单元中或者作为功能单元。
预测单元109包括硬件、软件或者硬件以及软件的结合。预测单元109具有分支预测单元102、数据预取单元104以及存储冲突预测单元106,分支预测单元102包括用以存储预测历史记录132A的存储阵列,数据预取单元104包括用以存储预测历史记录132B的存储阵列,以及存储冲突预测单元106包括用以存储预测历史记录132C的存储阵列。预测历史记录单独参考预测历史记录132A~C中的一个或者集体性参考多个预测历史记录132A~C。预测单元109分别使用预测历史记录132A~C中的一个以作出与指令或者数据处理有关的预测,以通过各别的操作尝试改进效能和(或)减少微处理器100的功率消耗。更具体地,分支预测单元102累计指令地址的历史记录、方位(执行(taken)或者未执行)、以及由微处理器100所执行的分支指令的目标地址,以致能分支预测单元102动态预测分支指令之后续执行状况的方向以及目标地址。动态分支预测技术为本技术领域所已知的分支预测技术。数据预取单元104藉由程序指令将存取的历史记录累计至快取存储器区域以检测存储器存取模式(pattern),以预测未来哪个来自快取存储器区域的数据会通过程序进行存取,并在程序请求数据之前将预测的数据自系统存储器预取至微处理器100的快取存储器以减少存储器的存取时间(因为系统存储器的延迟大于快取存储器的延迟)。动态数据预取技术为本技术领域所已知的数据预取技术。存储冲突预测单元106累计指令快取存储器位置的存储指令的历史记录,以预测存储冲突何时会发生。存储冲突发生在当较新的载入指令指定数据以覆盖较旧的存储指令时。存储冲突的预测可致能微处理器100预测性地将数据自存储指令转移(forward)至载入指令,和(或)避免执行抵触(colliding)载入指令使较旧的存储指令失序。值得注意的是,上述实施例并非用以限制预测单元的上述特定型式,但可能包括藉由微处理器100执行以累计指令的特性的历史记录的其他型式的预测单元,可有效地致能预测单元进行有关后续执行指令的预测或者执行其他预测操作以尝试增加处理器100的效能和(或)降低其功率消耗。
此外由各个预测单元109进行动态预测,即为利用预测历史记录132A~C中的一个进行预测,各个预测单元109也可用以进行静态预测,即为不通过利用预测历史记录进行预测。举例来说,在一实施例中,分支预测单元102对所有目标地址为反向(backward)的分支指令(举例来说,偏移为负值的相关分支)进行静态预测,因为并不需要任何先前所执行指令的历史记录,以及并不会对所有目标地址为前向(forward)的分支指令进行静态预测。举另一例来说,在一实施例中,当数据预取单元104检测到程序存取快取存储器时,需要下一时序(sequential)的数据的快取线以进行预测,因此数据预取单元104预取下一时序的数据的快取线。静态预测方法为中央处理单元的已知技术。
在一实施例中,预测单元109利用预测历史记录存储器108存储预测历史记录132A~C以响应导致微处理器100自运行一线程转换至运行另一线程的事件,举例来说,自使用者特权等级转换至管理者特权等级,以及还原预测历史记录132A~C以响应导致微处理器100自管理者特权等级转换回使用者特权等级的事件,优选地为当在执行转换至管理者特权等级时,恢复至一不同的使用者程序而非先前所运行处理,下列将提出更详细的描述。
现有特权等级寄存器111存储微处理器100的现有特权等级。在一实施例中,微处理器100基本上符合x86的架构,其他为Intel IA-32架构和(或)Intel64架构(上述的架构详述于“Intel 64 and IA-32 Architectures Software Developer’s Manual,CombinedVolumes:1,2A,2B,2C,3B and 3C,Order Number 325464-043US,May 2012,by the IntelCorporation of Santa Clara,California”中)。特别的是,在x86的实施例中,现有特权等级寄存器111用以指示微处理器100是否运行在现有特权等级0、1、2或者3,即为在第0级、第1级、第2级或者第3级。第0级为最优先的特权等级,以及第3级为最小的特权等级(使用者特权等级)。第0级、第1级以及第2级为管理者特权等级。
在一指令引退时,引退指令计数器113递增。将微处理器100开始运行另一不同的线程(例如离开第0级)的引退指令计数器的值减去当微处理器100开始运行线程时(例如进入第0级)的引退指令计数器113的值,使控制单元124可根据上述的值决定有多少指令藉由线程引退,下列将提出更详细的叙述。在一实施例中,指令计数器113计算微指令引退的数量(即为架构指令,例如x86指令),然而在另一实施例中,指令计数器113计算微指令引退的数量(即为由微处理器100的指令转换器(instruction translator)自微指令转换为由微处理器100的微架构指令集所定义的非架构指令,以及上述非架构指令由微处理器100的执行单元所执行)。
效能计数器114包括多个计数器,用以计算微处理器100有关效能和(或)功率消耗的情况。在一实施例中,效能计数器114计算预测分支指令;正确地预测分支指令;非正确地预测分支指令;由数据预取所分配的快取线;由非预取机制所分配的快取线,例如需求载入/存储或者直接存储器存取(direct memory access,DMA)请求;程序存取至由数据预取所分配的快取线;在使用前被驱除(evict)的由数据预取所分配的快取线;存储冲突预测;实际存储冲突检测。
最佳化信息112用以选择性地暂停累计,以及选择性地使用预测历史记录132A~C,举例来说,在管理者等级操作期间,将详述于与图3的相关的实施例中。
控制单元124包括硬件、软件、或者硬件以及软件的结合。根据其输入(主要为现有特权等级111、最佳化信息112、引退指令计数器113、效能计数器114、线程转换事件类型、以及架构状态),控制单元124控制预测单元109继续或者暂停累计其所对应的预测历史记录132A~C中的一个,以及利用预测历史记录132A~C和(或)自预测历史记录存储器108存储/还原的预测历史记录132A~C进行预测。在一实施例中,控制单元124包括硬件状态机器、微编码或者硬件状态机器与微编码的结合。在一实施例中,微编码包括由微处理器100的执行单元所执行的指令。
在一实施例中,用以控制微编码的读取的微编码单元(未显示)包括其读取单元、或者定序器(sequencer)、以及未执行分支预测单元102,以仅预测使用者程序分支指令。
请参阅图2,图2是描述图1所示的微处理器100的操作流程图。流程起始于方块202。
在方块202,当在使用者特权等级运行线程操作时(举例来说第3级),各个预测单元109累计所对应的预测历史记录132A~C中的一个,并在微处理器100处理线程的指令时利用预测历史记录132A~C进行动态预测。流程进入方块212。
在方块212,控制单元124检测指示微处理器100操作管理者特权等级的事件,举例来说,第0级。上述事件亦导致微处理器100自正在运行的线程的控制转换至不同的线程。上述事件的例子包括,但并非限制于指令的操作,例如系统调用指令(例如x86 SYSENTER/SYSCALL指令)、软件中断(例如x86 INT指令)、或者内部特权等级或者任务切换程序调用指令(例如x86 CALL指令);以及例外情况的检测,例如硬件中断(例如计时器刻度(timertick)、I/O装置)或者页面错误。在一实施例中,在转换控制至第0级线程或者子程序(routine)之前,事件将造成微处理器100将控制转换至操作系统的微编码以执行各种操作(例如权限检查)。流程进入方块222。
在方块222,响应于方块212的事件检测,当微处理器100在管理者特权等级运行新的线程时,控制单元124控制预测单元暂停累计所对应的预测历史记录132A~C,以及暂停利用历史记录进行预测。然而,预测单元109持续进行不需使用预测历史记录132A~C的静态预测。在一实施例中,控制单元124可暂停累计预测历史记录132A~C,以及暂停针对部分预测单元109的预测,但针对其他单元不暂停累计以及不暂停进行预测。除此之外,暂停以及不暂停预测单元109的决定由微处理器100动态操作。举例来说,编程暂停以及非暂停预测单元109的子集可藉由例如操作系统或者BIOS进行编程。举另一例子来说,可在微处理器100的制造过程中通过熔丝,甚至通过使用者或者服务人员将子集配置或者设置于一区域中。举另一例子来说,可根据将运行的特定第0级决定子集,接下来将于图3所述的实施例进行更详细的叙述。流程进入方块232。
在方块232,控制单元124检测指示微处理器100操作使用者特权等级(例如第3级)的事件。上述事件亦造成微处理器100将控制自正在运行的线程转换至不同的线程。上述事件的例子包括,但并非限制于指令的执行,例如系统调用返回指令(例如x86 SYSEXIT/SYSRET指令)、来自中断或者例外的返回(例如x86 IRET指令)、或者来自程序指令的内部特权等级返回(例如x86 RET指令)。在一实施例中,造成微处理器100将控制转换至微编码的事件,将于将控制转换至第3级处理之前执行各种操作。流程进入方块242。
在方块242,预测单元109恢复累计个别的预测历史记录,以及于微处理器100处理指令时利用历史记录132进行预测。流程结束于方块242。
如前所述,若方块242所返回的控制的第3级处理与方块212的事件所中断的第3级处理相同时,则预测历史记录132A~C应与先前的第0级的转变相同,即为当第3级处理被中断时,预测历史记录132A~C并不会因此而改变,因为其并未被第0级线程所影响。因此,很可能预测单元109将可有利于事件发生后一如往常地持续对第3级处理的线程进行正确的动态预测。也可能在执行第0级线程时的预测效能将低于执行第3级处理的预测效能,因为第0级线程预测仅使用静态预测。无论如何,根据第0级线程和(或)第3级处理的特性,其可能希望在执行第0级线程时,藉由牺牲效能以有利地改进第3级的效能-由于第3级处理预测历史记录的影响较少或者没有-将支配第0级效能的损失,特别为当第0级线程为短的和(或)不经常运行。
请参阅图3。图3是根据一替代实施例描述图1所示的微处理器的操作流程图。图3中部分方块与图2相同,以及编号亦相同。优选地,在重新设定时,控制单元124初始化信息112数据架构将于以下做详细的叙述。流程起始于方块202。
在方块202,当线程操作于使用者特权等级时,例如第3级,各个预测单元109累计所对应的预测历史记录132A~C,以及当微处理器100处理指令时利用预测历史记录132A~C进行预测。流程进入方块212。
在方块212,控制单元124检测指示微处理器100操作管理者特权等级(例如第0级)的事件,以及造成微处理器100将控制自正在运行的线程转换至不同的线程。流程进入方块311。
在方块311,控制单元24尝试识别运行在第0级的线程,以及产生识别符给第0级线程。在一实施例中,以下所述的最佳化信息112数据架构包括由控制单元124保存在微处理器100的私密存储器中的表格。表格中每个登录与不同的第0级线程识别符有关。功能用以在检测到线程转换时,产生第0级识别符以接收各种输入,例如微处理器100的事件类型以及状态值。事件类型可为前述图2的方块212中各种事件类型中的一个,但并非以此为限。状态值可为通用目的寄存器的值(general purpose register value)、模块特定寄存器的值(model specific register value)、指令指针(instruction pointer,IP),或者第3级处理的程序计数器(PC)的值,用以进行系统调用、软件中断、内部特权或者任务切换程序调用、以及与中断或者例外有关的中断向量数字,但并非以此为限。举例来说,当第3级处理对操作系统进行系统调用时(例如通过x86 SYSENTER指令),Windows根据x86 EAX寄存器中的值以及在某些情况下其他寄存器的值运行不同的线程。因此,在一实施例中,当事件类型为系统调用指令时,控制单元124检查EAX寄存器值,以及产生不同的第0级识别符给不同的EAX值。其他实施例可用于其他的系统。在另一例子中,控制单元124可产生不同的第0级识别符值给不同的中断向量值。流程进入方块313。
方块313,控制单元124查找在方块311的最佳化信息112数据架构中所产生的第0级识别符,以取得有关于藉由第0级识别符所识别的第0级线程的最佳化信息112。在一实施例中,假设第0级识别符不存在于最佳化信息112数据架构中,控制单元124执行预设第0级登录动作(即为相对于进入第0级的预设动作有关于无论是否累计预测历史记录132A~C以及利用预测历史记录132A~C进行动态预测),以及在最佳化信息112数据架构中分配进入给第0级识别符。在一实施例中,预设第0级登录动作用以暂停累计预测历史记录132A~C,以及利用其进行预测。若第0级识别符存在,控制单元124决定是否根据相关的最佳化信息112置换预设第0级登录动作。在一实施例中,最佳化信息112包括与第0级线程有关的长度,以及若第0级线程的长度小于既定长度,控制单元124决定暂停累计并暂停使用预测历史记录132A~C,以及反之则继续累计以及使用预测历史记录132A~C。在一实施例中,表示为指令的数字的长度引退于第0级线程的前一次运行期间,利用引退指令计数器113取得。在一实施例中,最佳化信息112包括在第0级线程的前一次执行实例期间,和(或)于第3级处理的前一次运行之后至第0级线程的前一次执行实例期间,有关于根据预测历史记录132A~C所进行预测的有效性的信息。在一实施例中,利用效能计数器114取得有效性。流程进入决策块315。
在决策块315,控制单元124决定是否暂停累计预测历史记录132A~C,以及是否暂停使用预测历史记录132A~C进行预测。若是如此,流程进入方块222;反之,流程进入方块321。尽管在此所述的实施例决定是否累计预测历史记录132A~C,以及利用根据与线程识别符有关的最佳化讯息112所作的预测历史记录132A~C进行动态预测,但可藉由准则(criteria)作出决定。举例来说,控制单元124可根据新的线程的特性、或者特征而不参考最佳化讯息112作出运行转换的决定(利用任何前述的各种输入的结合)。也就是说,新的线程的特征(例如事件类型和(或)与转换至新的线程的架构状态;特权等级,举例来说如相对于图2的叙述;或者新的线程是否为中断处理程序(handler))足以作出是否累计预测历史记录132A~C的决定,以及执行动态预测,即为是否选择性地暂停累计预测历史记录132A~C以及利用预测历史记录132A~C进行动态预测。一般而言,暂停累计预测历史记录132A~C以及利用预测历史记录132A~C进行动态预测的方法用于明显较短和(或)很少运行的线程,因为很可能包括上述特征的线程具有较差的预测精准度以作为不影响其他明显较长和(或)较常运行的线程的预测历史记录132A~C的交换,将使得其他线程具有较高的预测精准度以微处理器100整体效率较高。
在方块222,响应于方块212的事件检测,当微处理器100运行在管理者特权等级时,控制单元124控制预测单元109暂停累计其所对应的预测历史记录132A~C,以及暂停利用预测历史记录进行预测。然而,预测单元109持续进行不需要使用预测历史记录132A~C的静态预测。流程进入方块321。
在方块321,当第0级线程运行时,控制单元124持续搜集有关第0级线程的最佳化信息,例如通过效能计数器的预测有效性以及自引退指令计数器113的线程长度。在一实施例中,控制单元124搜集除了由预测单元109所进行的动态预测之外有关于静态预测的预测有效性。在一实施例中,控制单元124亦搜集预测有效性信息给第3级线程。较佳地,若静态预测线程的效能为可接受的,则当线程运行时,控制单元124将持续暂停预测历史记录的累计以及使用,尤其是若其他线程的效能明显改善时;反之,当线程运行时,控制单元124将累计以及使用预测历史记录。流程进入方块232。
在方块232,控制单元124检测指示微处理器100操作于使用者特权等级的事件(例如第3级),以及将控制自正在运行的线程转换至不同的线程。流程进入方块333。
在方块333,控制单元124利用于方块321所搜集的最佳化信息更新与第0级线程有关最佳化信息112数据架构登录。在一实施例中,更新包括藉由较新的搜集最佳化讯息的登录简单地取代最佳化讯息112。在另一实施例中,更新包括利用所搜集的最佳化讯息进行计算,以及利用计算更新最佳化信息112。举例来说,控制单元124计算引退指令的数量的平均和(或)根据第0级线程最后的执行过程的预测有效性。除此之外,平均可为权重或者移动平均数(rolling average)。另外,控制单元124可过滤出极限值并自最佳化信息112排除。除此之外,可考虑维持最佳化信息112数据架构的各种方法。举例来说,在一实施例中,控制单元124仅在最佳化讯息112数据架构保存控制单元124预置换预设第0级登录动作的登录给第0级线程;即为若控制单元124在方块313查找第0级线程识别符,以及在最佳化信息112数据架构中找到第0级线程识别符,则控制单元124在决策块315作决定以置换预设动作。流程进入决策块335。
在决策块335,控制单元124决定是否累计以及使用于方块222所暂停的预测历史记录132A~C。若是如此,流程进入方块242;反之,则累计预测单元109以及持续累计预测历史记录132A~C以及使用预测历史记录132A~C以进行预测,以及流程结束。
在方块242,预测单元109恢复累计所对应的预测历史记录132A~C,以及当微处理器100处理指令时,利用预测历史记录132A~C进行动态预测。流程结束于方块242。
请参阅图4。图4是根据一替代实施例描述图1所示的微处理器100的操作流程图。图4的一些方块与图2的方块相同,以及具有相同的标号。流程起始于方块202。
在方块202,当线程操作于使用者特权等级,例如第3级,每个预测单元109累计所对应的预测历史记录132A~C,以及当微处理器100处理指令时,利用预测历史记录132A~C进行动态预测。流程进入方块212。
在方块212,控制单元124检测指示微处理器100操作于管理者特权等级(例如第0级)的事件,以及造成微处理器100将控制自正在运行的线程转换至不同的线程。流程进入方块222。
在方块222,响应至方块212的事件检测,当微处理器100在管理者特权等级运行新的线程时,控制单元124控制预测单元暂停累计所对应的预测历史记录132A~C者,以及暂停利用预测历史记录进行预测。然而,预测单元109持续进行静态预测而不需利用预测历史记录132A~C。流程进入方块413。
在方块413,控制单元124将预测历史记录132A~C的目前实例存储至预测历史记录存储器108。在一实施例中,控制单元124仅存储部分的特定预测历史记录132A~C以减少执行存储所需的时间。举例来说,若分支预测单元102的预测历史记录132A相对较大(例如8KB),控制单元124可仅存储大部分最近的存取登录(例如512位)而非全部的预测历史记录132A。在一实施例中,控制单元124将失效未存储的部分预测历史记录132A~C。除此之外,在一实施例中,控制单元124仅存储一些而非所有的预测单元109的预测历史记录132A~C。举例来说,相较于预测单元109的第二子集,若控制单元124认为由第0级线程所产生的中断对预测单元109的第一子集的预测有效性造成极大的不利影响,则控制单元124将存储第一子集而非第二子集。优选地,控制单元124在预测历史记录存储器108中保留对应于不同藉由唯一的第3级识别码所识别的第3级处理的多数登录。在一实施例中,第3级处理藉由其x86处理内容(process-context)识别符所识别的第3级处理,例如“Intel 64 and IA-32Architectures Software Developer’s Manual”第3A册第4-46至4-62页第4.10节所述的内容。在另一实施例中,第3级处理藉由位于x86CR3控制寄存器中的第3级处理所使用的页面目录的地址所识别。在一实施例中,控制单元124保留预测历史记录存储器108以作为先入先出缓冲器(first-in-first-out buffer)。在另一实施例中,控制单元124执行更复杂的替代方案,例如最近最少使用(least-recently-used)或者至少频繁使用(least-frequently-used)。优选地,当微处理器100的功能性单元持续处理第0级线程的指令时,将预测历史记录132A~C存储至预测历史记录存储器108,以及第0级线程执行时间很可能比预测历史记录存储时间还长。然而,有利的是,因为预测历史记录132A~C阵列并未被存取(即写入)以累计预测历史记录或者进行预测(即读取),使得不用于预测历史记录存储以及第0级指令处理之间争用存储预测历史记录132A~C的存储阵列的存取的读取端口以及写入端口,以处理仅进行读取以写入预测历史记录的第0级指令。此为有利的,因为用以累计存储的预测历史记录的额外硬件的数量将被最小化,原因为不需要包括存储阵列的额外的读取端口。流程进入方块232。
在方块232,控制单元124检测指示微处理器100操作在使用者特权等级(例如第3级)的事件,以及将控制自目前所运行的线程转换置不同的线程。流程进入方块433。
在决策块433,控制单元124决定转换的新的第3级线程以及控制被转换的旧的第3级线程的处理是否部分相同。相对于前述的方块413,控制单元124将藉由比较两个线程的处理识别码以进行决定,例如x86 PCID。若新的第3级线程处理不同于旧的第3级线程处理,流程进入方块435;反之,流程进入方块242。
在方块435,控制单元124自预测历史记录存储器108将预测历史记录132A~C恢复给新的第3级处理。即为控制单元124使用新的第3级处理识别码以在预测历史记录存储器108中寻找预测历史记录,以及根据第3级处理识别码自预测历史记录存储器108载入预测单元109的预测历史记录132A~C。优选地,当微处理器100的功能性单元持续处理自执行第0级至第3级的微编码的指令时,执行恢复预测历史记录存储器108的预测历史记录132A~C。微编码的执行时间可为明显的时间周期,以及可能较执行预测历史记录132A~C的恢复所需的时间还长,此为有利的,因为预测历史记录132A~C阵列并未被存取(即写入)以累计预测历史记录或者进行预测(即读取),使得不用于预测历史记录存储以及第0级指令处理之间争用存储预测历史记录132A~C的存储阵列的存取的读取端口以及写入端口,以处理仅进行恢复预测历史记录的第0级指令。举例来说,在一实施例中,微编码单元并未处理分支预测单元102,即为分支预测单元102并未对微编码指令进行预测。举另一例来说,在一实施例中,环过渡(ring transition)微编码并未存取系统存储器;因此,数据预取单元104并不需要对环过渡微编码进行数据预取,以及存储冲突预测单元106并不需要对环过渡微编码进行预测。有利的是,因为用以累计预测历史记录的恢复所需的额外硬件的数量可被最小化,原因为不需要在存储阵列上包括额外的写入端口。流程进入方块242。
在方块242,预测单元109恢复累计所对应的预测历史记录132A~C,以及当微处理器100处理指令时,利用预测历史记录132A~C进行动态预测。流程结束于方块242。
有利的是,新的第3级线程的指令的处理并未影响与旧的第3级线程有关的预测历史记录132A~C,将使得两个第3级线程具有较佳的预测准确度。
其他实施例可为图3以及图4的实施例的有效结合,使得控制单元124存储以及恢复与第0级线程有关的预测历史记录132A~C,使控制单元124决定不暂停累计以及使用预测历史记录132A~C,举例来说,对相对长的第0级线程和(或)根据在第0级线程和(或)第3级处理的前一执行实例期间的预测有效性以累计以及使用预测历史记录132A~C的第0级线程。如上所述,当不需要累计历史记录132以及使用历史记录132进行预测的期间,微处理器100自第3级转换至第0级(以及反之亦然)可能需要大量的时间周期;因此,在这段期间控制单元124可有效但不明显地自预测历史记录存储器124存储/恢复相关的预测历史记录132A~C,如果有的话,将降低效能。在上述的实施例中,这可能是特别有利的,可限制于自第0级转换至第3级以及自第3级转换自第0级所存储以及恢复的预测历史记录132A~C的数量,以避免在完成存储和恢复之前停止微处理器100的指令的执行。
此外,尽管所述的实施例中微处理器100选择性地暂停预测历史记录的累计,以及暂停利用预测历史记录进行预测以响应自一特权等级转换至不同的特权等级的线程,在其他实施例中微处理器100也可选择性地暂停或者恢复预测历史记录的累计,以及使用预测历史记录进行预测以响应线程在相同特权等级之间的转换。举例来说,微处理器100可藉由检测不包括特权等级的改变的事件以检测线程转换,以及决定暂停或者恢复预测历史记录的累计,并响应使用预测历史记录进行预测。举例来说,微处理器100可利用一特定IP值以及在一些具有其他架构状态的特定值的情况下简单地检测指令的执行(例如子程序调用(subroutine call)或者恢复指令),例如通用目的寄存器值。举另一例子来说,微处理器100可检测一序列的指令和(或)IP值。
必须了解的是,在此所述有关本发明的实施例仅用以作为示范,并非以此为限。在计算机相关领域的技术人员,在不脱离本发明的精神和范围内,可以广义的方式作适当的更动和替换。举例来说,可致能软件,举例来说,装置的功能、制作、模块、模拟、叙述和(或)测试,以及在此所述的方法。可藉由通用的程序语言(例如C、C++)、硬件描述语言(HDL)(包括Verilog HDL、VHDL等)、或者其他可用的程序实现本发明。上述的软件可执行在任意已知的计算机可执行媒体,例如磁带、半导体、磁碟或者光盘(例如CD-ROM、DVD-ROM等),网际网络、有线网络、无线网络、或者其他通信媒介。在此所述的装置以及方法的实施例可包括在半导体知识产权内核中,例如微处理器内核(例如在HDL中实施或指定),以及在集成电路的产品中转换为硬件。此外,在此所述的装置以及方法可通过硬件以及软件的结合实现。因此,本发明并不能限制于此所述的任意实施例,本发明的范围以及精神根据后附的权利要求书所定义以及限制。特别的是,本发明可通过通用目的计算机的微处理器装置实现。最后,上述的实施例以足够的细节叙述使所属技术领域的技术人员能藉由上述的描述,在不脱离本发明的精神以及范围内,可做些许结构上以及逻辑上的改变,以实施本发明所揭露的系统以及方法。