CN105706049A - 操作系统例行程序的预测历程储存器的部分使用 - Google Patents
操作系统例行程序的预测历程储存器的部分使用 Download PDFInfo
- Publication number
- CN105706049A CN105706049A CN201480028939.7A CN201480028939A CN105706049A CN 105706049 A CN105706049 A CN 105706049A CN 201480028939 A CN201480028939 A CN 201480028939A CN 105706049 A CN105706049 A CN 105706049A
- Authority
- CN
- China
- Prior art keywords
- microprocessor
- prediction
- operating system
- bin
- course
- 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
- 238000003860 storage Methods 0.000 title abstract description 31
- 238000000034 method Methods 0.000 claims description 86
- 238000011156 evaluation Methods 0.000 claims description 4
- 230000009183 running Effects 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 77
- 238000005457 optimization Methods 0.000 description 32
- 230000009471 action Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 230000003068 static effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 7
- 230000001276 controlling effect Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 235000012377 Salvia columbariae var. columbariae Nutrition 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 240000001735 chia Species 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/4401—Bootstrapping
- G06F9/4403—Processor initialisation
Abstract
一微处理器包含具有储存器(storage)的一预测单元,储存器用以保留先前被微处理器执行过的指令的特征的一预测历程(prediction history)。预测单元累计预测历程并根据预测历程产生关于后续执行指令的预测。储存器包含多个可独立控制的储存部,用以累计预测历程。微处理器也包含一控制单元,控制单元侦测微处理器正进行一操作系统(operating system,OS)例行程序(routine)以及控制预测单元在微处理器执行此操作系统例行程序期间仅透过储存器中的一部分储存部来累计预测历程。
Description
技术领域
本发明涉及一种微处理器,特别涉及一种微处理器、微处理器的运作方法及改善微处理器性能的方法。
背景技术
现今的微处理器采用不同的预测技术来试图改善其性能。举例来说,分支预测器被用来预测分支指令是否将被使用,以及当预测到分支指令将会被使用时,进一步预测此分支指令的目标地址。动态分支预测器会累计用以记载执行不同的分支指令的结果的历程并且会根据这些历程产生针对每一分支指令的预测。动态分支预测器的预测准确性主要在于历程可累计的量的函数。只要一程序在给定的时间内所执行的分支指令组的长度小到足以被涵盖在预测历程中,则获得的预测准确性可能会相当高。
然而,预测准确性可能会因某些事件(例如发生在另一程序执行的同时暂缓目前正在执行的程序的事件等)的发生而大幅缩减。举例来说,当一网络接口控制器(networkinterfacecontroller)接收到一封包(packet)时,网络接口控制器会发出讯号通知处理器进行中断。此时处理器会转而控制操作系统去执行此中断事件,而操作系统则会暂缓目前正在执行的程序A直到返回执行此程序A为止。在处理器执行操作系统的分支指令的期间,会改变分支预测器针对程序A所产生的预测历程。这样可能会降低分支预测器在预测程序A的跳转(branch)时的准确性。
发明内容
本发明提供一种微处理器、微处理器的运作方法及改善微处理器性能的方法,借以仅使用储存器中的一部分储存部来累计预测历程,进而提升分支预测的准确性。
一方面,本发明提供一微处理器。微处理器包含一预测单元和一控制单元。预测单元包含用以保存一预测历程的一储存器,此预测历程记载微处理器先前执行的指令的特征。预测单元累计预测历程,并根据此预测历程产生关于后续指令执行的预测。储存器包含用以累计此预测历程且分别受控的多个储存部。控制单元用以侦测微处理器执行一操作系统程序,并用以在微处理器执行所述的操作系统程序期间控制预测单元仅使用储存器中部分的储存部,以累计此预测历程。
另一方面,本发明提供一微处理器的运作方法。此微处理器包含一预测单元,并且此预测单元包含用以保存一预测历程的一储存器。所述的预测历程记载微处理器先前执行过的指令的特征。预测单元用以累计此预测历程并根据此预测历程产生关于后续指令执行的多个预测。储存器包含用以累计此预测历程并可分别控制的多个储存部。此运作方法包含下列步骤。侦测微处理器执行一操作系统程序。在微处理器执行所述的操作系统程序期间,控制预测单元仅使用所述储存器中部分的储存部,以累计此预测历程。
又一方面,本发明提供一改善微处理器性能的方法,此方法适用于一微处理器。所述微处理器包含一预测单元,预测单元包含用以累计先前被执行过的指令的预测历程的一储存器。预测单元利用预测历程来预测后续指令的执行,并且是可动态控制地仅使用部分的储存器来累计预测历程。此方法包含下列步骤。识别被多个软件应用程序呼叫的多个操作系统程序。分别计数被每一个操作系统程序执行的指令的一数量。此方法也包含根据每一被执行的指令的数量,从操作系统程序中选择一子集合;以及针对此子集合调整储存器的分数值,以决定使这些软件应用程序达到优化性能所需的分数值,借此实现性能分析。
以上的关于本揭露内容的说明及以下的实施方式的说明是用以示范与解释本发明的精神与原理,并且提供本发明的专利申请范围更进一步的解释。
附图说明
图1为根据本发明的一实施例所绘示的微处理器的方块图;
图2为根据本发明的一实施例所绘示的图1中微处理器的运作流程图;
图3为根据本发明的另一实施例绘示的图1中微处理器的运作流程图;
图4为根据本发明的另一实施例绘示的图1中微处理器的运作流程图;
图5为根据本发明的一实施例所绘示的一控制信息表单的示意图;
图6为根据本发明的一实施例所绘示的一预测历程高速缓存的方块图;
图7为根据本发明的另一实施例绘示一预测历程高速缓存的方块图;
图8为根据本发明的一实施例所绘示的一预测历程队列的方块图;
图9为根据本发明的一实施例所绘示的产生图5的控制信息表单中数值的处理程序的流程图;
图10为根据本发明的一实施例所绘示的包含图1的微处理器的系统的运作流程图;
图11为根据本发明的另一实施例绘示的包含图1的微处理器的系统的运作流程图。
附图标记:
100:微处理器;102:分支预测单元;
104:数据预先撷取单元;106:储存冲突预测单元;
108:储存器;109:预测单元;
111:目前特权等级缓存器;112:优化信息;
113:引退指令计数器;114:性能计数器;
124:控制单元;132A~132C:预测历程;
500:控制信息表单;502:操作系统例行程序的识别符;
504:控制信息;600:预测历程高速缓存;
602:路径;700:预测历程高速缓存;
702:群组;704:索引输入;
800:预测历程队列;802:项目;
804:操作系统旗标。
具体实施方式
以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、申请专利范围及图式,任何本领域技术人员可轻易地理解本发明相关的目的及优点。以下的实施例是进一步详细说明本发明的观点,但非以任何观点限制本发明的范畴。
本发明所提供的用以改善微处理器性能的相关实施例是通过预测单元(例如分支预测器、数据预取器和储存冲突(storecollision)侦测预测器)利用预测历程选择性地暂缓(suspend)预测历程与预测的累计,并在动态预测中断时使用静态预测。进一步来说,当微处理器正执行某些线程(thread)而非其他运作时,预测历程的累计与使用可能会被暂缓。举例来说,所述的暂缓与否是取决于线程的特权等级。进一步来说,线程是否为位于一监督者特权等级(supervisorprivilegelevel),例如在x86处理器架构中的目前特权等级(currentprivilegelevel,CPL)0,也可称为第0级。在另一示例中,所述的暂缓与否是取决于线程的型态(Type),例如取决于线程是否为一中断处理器(interrupthandler)。在另一示例中,所述的暂缓与否是取决于是否因应一系统呼叫指令(systemcallinstruction)而跳到新的线程。在另一示例中,微处理器会收集关于先前线程的执行情况的信息,而所述的暂缓与否可取决于微处理器所收集到的信息,例如指令长度(length)和性能信息。在另一示例中,所述的暂缓与否是取决于线程的身份。线程的身份可根据例如由导致跃迁(transition)的事件的型态、此事件发生当时的处理器的结构状态以及其组合来决定。事件的型态例如可包含执行一系统呼叫、执行一软件中断指令、执行一内部特权(inter-privilege)或工作切换(taskswitch)过程调用以及侦测异常情况(exceptioncondition)。再者,在中断预测历程的累计与使用的期间,微处理器可储存和恢复这些预测历程至一局部储存器(localstorage)。
词汇说明
预测单元可为微处理器的硬件、软件或其组合,并可产生关于在微处理器上进行的一指令流所对应的动作的预测。所述的预测可例如但不限于包含预测一分支指令是否将指示微处理器跳转(branch)、预测一分支指令的一目标地址、预测指令流的其中一个指令将要存取的数据、以及预测一储存冲突是否发生。预测单元可根据记载有被微处理器执行的指令的特征的一历程(或称预测历程),产生相对应的预测,而此时的预测称为动态预测。当微处理器执行指令流中的每个指令的同时,预测单元也会累计此历程。此历程可例如包含但不限于分支指令是否指示微处理器跳转的结果、一已执行的分支指令的目标地址、指令流中的每个指令所加载或储存的数据的地址、关于指明可高速缓存位置的储存指令的信息(例如储存指令的地址、用以计算储存地址的来源(source)的识别符、用以决定储存数据的指令的一重排序缓冲器索引(reorderbufferindex)、之前与储存指令发生冲突的一加载指令的地址和重排序缓冲器索引、冲突的加载和储存指令之间的一重排序缓冲器索引差值以及一冲突的加载指令的重新执行次数的一指示器(indicator))。预测单元也可以不用根据此历程来产生预测,而此时的预测称作静态预测。
微处理器的特权等级是由微处理器的指令集架构(instructionsetarchitecture)所定义,并且特权等级是用以控制当前正在执行的程序对例如储存区域(memoryregion)、输入输出端口(I/Oport)以及指令集中的特定指令等的系统资源的存取动作。
线程是由微处理器执行的包含多个指令的一指令序列。
处理程序(process)是指一线程和其相关状态,此状态连同其他处理程序是由一操作系统管理。此操作系统会分配一处理程序识别符(processidentifier)给此处理程序。
请参考图1所示,图1为根据本发明的一实施例所绘示的微处理器100的方块图。微处理器100包含多个预测单元109。这些预测单元109耦接于一控制单元124和一预测历程储存器108(或称储存器)。控制单元124分别耦接于一引退指令计数器113、多个性能计数器114、一目前特权等级缓存器111和用以保存优化信息(optimizationinformation)112的一储存器。在一实施例中,微处理器100包含一或多个功能单元的信道(pipeline)(未绘示),这里的功能单元可包含一指令高速缓存(cache)、一指令转换单元(instructiontranslationunit)或指令译码器、一缓存器更名单元(registerrenamingunit)、多个保留站(reservationstation)、多个数据高速缓存、多个执行单元、一内存子系统(subsystem)以及包含一重排序缓冲器的一引退单元(retireunit)。较佳的是,微处理器100可包含一超纯量型(superscalar)乱序执行微架构(out-of-ordermicro-architecture)。这些预测单元109可合并于微处理器100的不同的功能单元中,或者也可为功能单元本身。
上述的预测单元109包含硬件、软件或硬件和软件的组合。预测单元109可包含一分支预测单元102、一数据预先撷取单元(dataprefetchunit)104与一储存冲突预测单元106。分支预测单元102包含用以储存一预测历程132A的一储存数组(storagearray)。数据预先撷取单元104包含用以储存一预测历程132B的一储存数组。储存冲突预测单元106包含用以储存一预测历程132C的一储存数组。上述多个预测历程可分别单独或集体地称为一预测历程132或是多个预测历程132。每一预测单元109分别透过其各别的预测历程132产生关于指令处理/数据处理方面的预测,借以透过推测的运作(speculativeoperation)试图改善微处理器100的性能和/或降低微处理器100的电力损耗。进一步来说,分支预测单元102用以累计记录有被微处理器100执行的分支指令的指令地址、方向(已执行或未被执行)和目标地址的历程,而微处理器100通过执行这些分支指令来使能分支预测单元102,使分支预测单元102动态预测后续执行这些分支指令的方向与目标地址的可能情况。动态分支预测技术可通过本领域技术人员可获得的任何方式来实行。数据预先撷取单元104用以累计程序指令存取可高速缓存区域的历程,借此侦测内存存取样态(memoryaccesspattern)。这里所述的内存存取样态是用来预测未来所述的可高速缓存区域中哪一笔数据将被程序使用,借此预测在此程序需要此笔数据之前,从系统内存(systemmemory)中预先撷取预测的数据并储存至微处理器100的一高速缓存中。如此一来,便可节省内存存取的时间(因为系统内存的等待时间(latency)远大于高速缓存的等待时间)。动态数据预先撷取技术可通过本领域技术人员可获得的任何方式来实行。储存冲突预测单元106可累计记载有指示可高速缓存的位置的储存指令的历程,借此预测何时将会发生储存冲突。所述的储存冲突是发生在当一个新的加载指令(loadinstruction)指示的数据与一个旧的储存指令(storeinstruction)所指示的数据重叠的时候。预测储存冲突的发生可驱使微处理器100推测性地把原本要给储存指令使用的数据转递给加载指令使用,和/或也可避免执行相对于旧的储存指令而言是乱序的一冲突的加载指令。可以被理解的是,本发明的实施例并不限于上述的预测单元的实施态样。换句话说,本发明也涵盖其他实施态样的预测单元,其他态样的预测单元也可累计记载有被微处理器100执行的指令的特征的历程,所述的指令的特征将有助于使预测单元产生关于后续将被执行的指令的各方面的预测,或驱使预测单元执行其他试图提升微处理器100的性能和/或降低微处理器100的电力损耗的推测运作。
除了可以动态预测(也即根据预测历程132而产生的预测)以外,每一个预测单元109也可以产生静态预测(也即无需根据预测历程132而产生的预测)。举例来说,在一实施例中,分支预测单元102会静态地预测出所有将被执行且目标地址为向后(例如偏移量为负值的跳转动作)的分支指令,以及静态地预测出所有不会被执行且目标地址为向前的分支指令,这些预测动作不需要任何记载有先前已被执行的指令的历程。另举一示例来说,在一实施例中,数据预先撷取单元104静态地预测到当侦测到一程序在存取闪存时,将会需要下一相邻的快取线的数据,因此便可预先撷取此下一个快取线的数据。静态预测方法可通过中央处理器相关领域的技术人员可获得的任何方式来实行。
在一实施例中,为因应促使微处理器100由执行一个线程转而执行另一个不同的线程的事件(例如由用户特权等级跳转至监督者特权等级),预测单元109会透过预测历程储存器108储存预测历程132;以及为因应促使微处理器100由监督者特权等级跳转回用户特权等级的事件,预测单元109会透过预测历程储存器108恢复这些预测历程132。相较于正在执行的,较佳的作法是在转换至监督者特权等级时返回不同的用户处理程序,此相关详细叙述记载如下。
目前特权等级缓存器111用以储存微处理器100的目前特权等级。在一或多个实施例中,微处理器100大致上是符合x86架构,此x86架构也可被称为IntelIA-32架构和/或Intel64架构(详情请参见由加州圣塔克拉拉的英特尔公司于公元2012年5月所提出的序号为325464-043US的「64与IA-32架构软件开发人员手册」第1、2A、2B、2C、3B和3C册)。在实务上,以x86架构的实施例来说,目前特权等级缓存器111表示微处理器100是否运作在目前特权等级0、1、2或3,也即第0级、第1级、第2级或第3级。第0级是为最高特权等级,而第3级是为最低特权等级,即用户特权等级(userprivilegelevel)。第0级、第1级和第2级皆为监督者特权等级。
每逢一指令引退时,引退指令计数器113会增量一次。通过从当微处理器100开始执行一线程(例如离开第0级)时指令计数器113的值中减去当微处理器100开始执行另一线程(例如进入第0级)时指令计数器113的值,控制单元124可判断出被另一线程撤出的指令的数量。此相关详细叙述记载如下。在一实施例中,指令计数器113计算已撤出的宏指令(macro-instruction)(也即例如为x86指令等的架构指令)的数量。而在另一实施例中,指令计数器113计算已撤出的微指令(micro-instruction)的数量,这里的已撤出的微指令是为由微处理器100的微架构指令集(microarchitectureinstructionset)所定义的非架构指令,而微架构指令集则是由微处理器100的指令翻译器翻译宏指令而获得,并且由微处理器100的多个执行单元执行。
性能计数器114的实施态样包含用以计算关于微处理器100的性能和/或电力损耗的许多方面的计数器。在一实施例中,性能计数器114用以计数已预测的分支指令的数量、已正确预测的分支指令的数量、未正确预测的分支指令的数量、由一数据预先撷取所分配的快取线的数量、由一非预先撷取手段(例如一需要加载/储存或直接内存存取(directmemoryaccess,DMA)的请求)所分配的快取线的数量、使用通过数据预先撷取所分配的一快取线的程序的量、使用前已被排除的数据预先撷取所分配的快取线的数量、储存冲突预测或实际侦测到的储存冲突。
优化信息112用以例如在监督者特权等级的运作期间,选择性地暂缓累计与使用预测历程132。关于优化信息112的内容及使用将于图3中详细说明。
控制单元124包含硬件、软件或其组合。根据其输入–主要为目前特权等级111、优化信息112、引退指令计数器113、性能计数器114、线程转换事件型态以及架构状态–控制单元124控制预测单元109,使预测单元109继续进行或暂缓累计其各别的预测历程132以及继续进行或暂缓根据预测历程132产生预测,和/或使控制预测单元109储存这些预测历程132至预测器历程储存108或从预测器历程储存108恢复这些预测历程132。在一实施例中,控制单元124包含硬件状态机(hardwarestatemachines)、微指令(microcode)或其组合。在一实施例中,所述的微指令包含由微处理器100的多个执行单元所执行的指令。
在一实施例中,用以控制取得微指令的一微指令单元(未绘示)拥有自己的取得单元(fetchunit)或序列器(sequencer),因此微指令单元不会使用到只能用以预测用户程序的分支指令的分支预测单元102。
请参考图2所示,图2为根据本发明的一实施例所绘示的图1中微处理器100的运作流程图。流程开始于方块202。
如方块202所示,当每一个预测单元109执行用户特权等级(例如第3级)的一线程时,每一个预测单元109会在微处理器100正在处理此线程中的指令期间累计其各别的预测历程132并根据此预测历程132产生动态预测。流程进行到方块212。
如方块212所示,控制单元124侦测到用以指示微处理器100运作在监督者特权等级(例如第0级)下的事件。相较于目前正在执行的线程,此事件也使微处理器100转而进行另一个不同的线程。此事件例如包含但不限于执行例如为一系统呼叫指令(例如x86SYSENTER/SYSCALL指令)、软件中断(例如x86INT指令)或内部特权等级或工作切换过程调用指令(例如x86CALL指令)等的指令,以及侦测例如硬件中断(例如定时器计时或I/O装置)或寻页错失(pagefault)等的例外状况。在一实施例中,此事件会使微处理器100将控制转移至微指令,而在转移至操作系统的掌控所述的事件的第0级线程或例行程序(routine)之前,此微指令会执行例如为权限检查(permissioncheck)等的不同的运作。流程进行到方块222。
如方块222所示,因应方块212侦测到的事件,控制单元124会控制这些预测单元109在微处理器100正执行上述监督者特权等级的新线程期间,暂缓累计其各别的预测历程132以及暂缓根据预测历程产生预测。然而,这些预测单元109仍会继续产生无须使用到预测历程132的静态预测。在一实施例中,控制单元124可能仅控制部分的预测单元109暂缓累计预测历程132以及产生预测,而不控制其他的预测单元109暂缓累计预测历程132以及产生预测。并且,哪些预测单元109应暂缓运作以及哪些预测单元109应继续运作是可随微处理器100的运作来决定。举例来说,由暂缓的预测单元109组成的子集合与由未暂缓的预测单元109组成的子集合是可通过例如操作系统或基本输入/输出系统(BasicInput/OutputSystem,BIOS)来程序化。另举一示例来说,这些子集合可由一用户自己或服务人员(servicepersonnel)在微处理器100的制造期间或当场通过烧断保险丝来设定装配。另举一示例来说,这些子集合可根据将执行的特殊的第0级线程来决定。关于如何决定子集合的相关实施例将于图3的实施例中详细说明。流程进行到方块232。
如方块232所示,控制单元124侦测到指示微处理器100运作在用户特权等级(例如第3级)的事件。这里所述的事件也会使微处理器100转至执行另一个不同的线程而非目前正在执行的线程。所述的事件可包含但不限于执行例如为系统呼叫返回(systemcallreturn)指令(例如x86SYSEXIT/SYSRET指令)、从中断或例外返回(例如x86IRET指令)的指令或从程序返回内部特权等级的指令(例如x86RETF指令)等的指令。在一实施例中,所述的事件会使微处理器100转至执行微指令,且此微指令会在微处理器100转至执行第3级处理程序之前,执行不同的运作。流程进行到方块242。
如方块242所示,当微处理器100正处理指令时,每一个预测单元109重新开始累计其各别的预测历程132以及根据此预测历程13产生动态预测。流程结束于方块242。
由此可见,若在方块242中返回执行第3级处理程序与在方块212中被其中的事件中断的第3级处理程序相同时,则因为这些预测历程132不会被第0级线程影响而改变,所以此时的每一个预测历程132的内容应该会相同于其在第0级转换(transition)之前的内容,也即相同于当第3级处理程序被中断时的预测历程132。如此一来,很可能有利于这些预测单元109在所述事件之后如同之前一样继续针对第3级处理程序的线程产生准确的动态预测。此外,也有可能因为只有静态预测会被用来作为针对第0级线程所产生的预测,所以在执行第0级线程时的预测性能将会小于在执行第3级处理程序时的预测性能。然而,可能有利的是依据第0级线程和/或第3级处理程序的特征,牺牲在执行第0级线程时的性能,以求第3级性能的改善因较少或不改变第3级处理程序的预测历程而能支配第0级性能的损失,尤其是若第0级线程的长度很短和/或很少执行第0级线程时。
请参考图3所示,图3是为根据本发明的另一实施例绘示的图1中微处理器的运作流程图。图3和图2中有一部分的方块彼此相同且有相同的编号。较佳的是,在重置时(reset)时,控制单元124会初始化优化信息112的数据结构,此相关内容将详述于下。流程开始于方块202。
如方块202所示,当一线程运作在用户特权等级(例如第3级)时,每一个预测单元109会在微处理器100正处理指令的期间累计其各别的预测历程132以及根据此预测历程132产生动态预测。流程进行到方块212。
如方块212所示,控制单元124侦测到指示微处理器100运作在一监督者特权等级(例如第0级)并使微处理器100由目前正在执行的线程转至执行另一个不同的线程的事件。流程进行到方块311。
如方块311所示,控制单元124会试图识别将运作在第0级的线程,并针对此第0级线程产生一相对应的识别符。在一实施例中,优化信息112的数据结构包含一表单(或称为控制信息表单),且控制单元124在微处理器100的一专用内存(privatememory)中储存并维护此表单,此相关内容将详述于下。表单中的每一个项目是关联于一不同的第0级线程的识别符。用来产生第0级线程的识别符的函数(function)可接收不同的输入,例如当侦测到线程转换时的微处理器100的事件型态与状态值。这里的事件型态可例如为但不限于上述图2中的方块212所提及多种的事件型态的其中之一。这里的状态值可例如为但不限于一般目的缓存器值、特殊目的缓存器(modelspecificregister,MSR)值、会引起系统呼叫、软件中断或内部特权或任务切换过程调用的第3级处理程序的指令指针(instructionpointer,IP)或程序计数器(programcounter,PC)的值以及关联于中断或例外事件的中断向量编号(interruptvectornumber)。状态值的输入可随事件型态的不同而有不同。在一示例中,当第3级处理程序例如透过x86SYSENTER指令产生一系统呼叫给操作系统时,Windows操作系统会根据x86EAX缓存器中的值而运行不同的线程。在另一示例中,Windows操作系统则会根据其他的缓存器中的值而运行不同的线程。因此,在一实施例中,当事件型态为一系统呼叫指令时,控制单元124会判断EAX缓存器的值(简称EAX值),并针对不同的EAX值产生不同的第0级识别符。在其他的实施例中,本发明也可应用于其他操作系统。另举一示例来说,控制单元124可产生不同的第0级识别符的值给不同的中断向量值。流程进行到方块313。
如方块313所示,控制单元124会在优化信息112的数据结构中查找在方块311中产生的第0级识别符,以获得关联于被第0级识别符识别出的第0级线程的优化信息112。在一实施例中,若第0级识别符未出现在优化信息112的数据结构中,这时控制单元124会执行默认第0级项目动作(也即进入第0级时关于是否要累计预测历程132以及根据此预测历程132产生动态预测的默认动作)并分配在优化信息112的数据结构中的一项目给此第0级识别符。在一实施例中,这里的默认第0级项目动作是指暂缓累计这些预测历程132并根据预测历程132产生预测。若第0级识别符已出现在优化信息112的数据结构中,此时控制单元124会根据对应的优化信息112决定是否要略过上述的默认第0级项目动作。在一实施例中,优化信息112包含第0级线程的指令长度。若第0级线程的指令长度小于一预定长度时,控制单元124会决定暂缓累计并使用这些预测历程132;相反的,则会继续累计并使用这些预测历程132。在一实施例中,指令长度代表引退指令计数器113计数在前次第0级线程被执行期间引退的指令的数量。在一实施例中,优化信息112包含根据预测历程132产生的预测的有效性信息,而这里的预测历程132是在先前执行第0级线程的期间所获得,和/或在先前接续先前第0级线程之后执行第3级处理程序的期间所获得。在一实施例中,所述的有效性是由性能计数器114获得。流程进行到决定方块315。
如决定方块315所示,控制单元124决定是否要暂缓累计预测历程132以及暂缓根据累计预测历程132产生预测。若是,则流程进行到方块222;若否,则流程进行到方块321。虽然本发明实施例论述是否要累计预测历程132并根据预测历程132产生动态预测是根据关联于一线程的识别符的优化信息112来决定,但此决定也可根据准则而定。举例来说,控制单元124可根据新线程的身份或多个特征(或上述已提及的不同输入的任一组合)来作决定,并且执行跳转至新线程无须参考优化信息112。换句话说,新线程的特征可能足以用来决定是否要累计预测历程132并根据预测历程132产生动态预测,也即是否选择性地暂缓累计此预测历程132并根据预测历程132产生动态预测。一般来说,以执行具有预测准确性较差的特征的线程来换取不损及其他长度明显较长和/或较频繁被执行的线程的预测历程132很可能会为其余剩下的线程和全部的线程带来较高的预测准确性,并且也可能会使微处理器100拥有较高的性能。因此,可以针对长度够短和/或很少被执行的线程进行暂缓累计此预测历程132并根据预测历程132产生动态预测。所述的新线程的特征可例如为关联于跳转至新线程的事件型态和/或架构状态、如图2中所述的特权等级或新线程是否为一中断处理器。
如方块222所示,当微处理器100正运作在监督者特权等级时,为因应在方块212所侦测到的事件,控制单元124会控制预测单元109暂缓累计其各别的预测历程132以及暂缓根据预测历程132产生预测。然而,这些预测单元109仍会持续产生无须使用到预测历程132的静态预测。流程进行到方块321。
如方块321所示,当第0级线程被执行的同时,控制单元124会持续收集关于第0级线程的优化信息,例如由性能计数器114获得的预测有效性以及由引退指令计数器113获得的线程的指令长度。在一实施例中,除了预测单元109产生的动态预测以外,控制单元124也会关于收集静态预测的预测有效性的相关信息。在一实施例中,控制单元124也收集关于第3级线程的预测有效性信息。较佳的是,若线程的静态预测的性能是可接受的时,尤其是若其他线程的性能已被显著地改善时,则控制单元124可能会在执行此线程的期间持续暂缓累计和使用预测历程;否则,控制单元124可能会在执行此线程的期间累计和使用预测历程。流程进行到方块232。
如方块232所示,控制单元124侦测到指示微处理器100运作在一用户特权等级(例如第3级)以及导致由目前正在执行的线程转至另一个不同的线程的事件。流程进行到方块333。
如方块333所示,控制单元124会利用在方块321收集到的优化信息更新优化信息112的数据结构中关联于第0级线程的项目。在一实施例中,这里所述的更新包含简单地用新收集的优化信息置换此项目里的优化信息112。在其他实施例中,所述的更新意味着根据收集到的优化信息产生计算结果,并且根据获得的计算结果更新优化信息112。举例来说,控制单元124可根据最后N次第0级线程的执行,计算引退的指令的一平均数量和/或预测有效性。而此平均数量可为一加权平均值或一滚动(rolling)平均值。此外,控制单元124可从优化信息112中过滤掉要排除的极限值(extremevalue)。再者,本发明也提供维护优化信息112的数据结构的不同方式。举例来说,在一实施例中,控制单元124会针对第0级线程而仅维护在优化信息112的数据结构中的项目,并且控制单元124会因应第0级线程而欲忽视默认第0级项目动作。换句话说,若是控制单元124在优化信息112的数据结构中查找到在方块313中的第0级线程的识别符,则控制单元124会在决定方块315中决定忽视此预设动作。流程进行到决定方块335。
如决定方块335所示,控制单元124判断在方块222中是否已暂缓累计和使用这些预测历程132。如果是,流程进行到方块242;相反地,则表示预测单元109已一直累计并会继续累计预测历程132并根据预测历程132产生预测,以及流程结束于此。
如方块242所示,预测单元109会在微处理器100处理指令期间重新累计各别的预测历程132以及根据预测历程132产生动态预测。流程结束于方块242。
请参考图4所示,图4为根据本发明的另一实施例绘示的图1中微处理器100的运作流程图。图4和图2之间有部分的方块相同且以相同标号标示。流程开始于方块202。
如方块202所示,当一线程是在一用户特权等级(例如第3级)时,每一个预测单元109会在微处理器100处理指令的期间累计其各别的预测历程132,并且根据此预测历程132产生动态预测。流程进行到方块212。
如方块212所示,控制单元124侦测到指示微处理器100运作在一监督者特权等级(例如第0级)并使微处理器100由目前正在执行的线程转至执行另一个不同的线程的事件。流程进行到方块222。
如方块222所示,在微处理器100处理此监督者特权等级的新线程的期间,为因应上述在方块212中侦测到的事件,控制单元124会控制预测单元109暂缓累计其各别的预测历程132以及暂缓根据预测历程132产生预测。然而,这些预测单元109仍会继续产生无须使用到预测历程132的静态预测。流程进行到方块413。
如方块413所示,控制单元124将这些预测历程132的当前实例储存至预测历程储存器108。在一实施例中,控制单元124仅储存一给定的预测历程132的一部分,借此降低储存所需要的时间。举例来说,若分支预测单元102产生的预测历程132A的档案大小是相对大(例如8KB),控制单元124可仅储存最近存取的项目(其档案大小例如为512bytes)而非储存整个预测历程132A。在一实施例中,控制单元124会废弃预测历程132中未被储存的部分。并且,在一实施例中,控制单元124仅储存所有预测单元109中部分的预测单元109所产生的预测历程132而非储存所有预测单元109产生的预测历程132。举例来说,如果判断出相较于一第二子集合的预测单元109,在第一子集合的预测单元109被一第0级线程中断时对预测效力的负面影响是更严重的,此时控制单元124可储存第一子集合的预测单元109产生的预测历程132而不会储存第二子集合的预测单元109产生的预测历程132。较佳的是,控制单元124会维护预测历程储存器108中的多个项目,并且每一个项目是关联于由单一个第3级识别符所识别的一不同的第3级处理程序。在一实施例中,第3级处理程序是由其x86处理内容识别符(process-contextidentifier,PCID)所识别,如前述的Intel64与IA-32架构软件开发者手册,第3A册,第4-46至4-62页,段落4.10中所述。在另一实施例中,第3级处理程序是由被加载x86CR3控制缓存器中的第3级处理程序所使用的页面目录(pagedirectory)的地址所识别。在一实施例中,控制单元124是以先进先出缓存(first-in-first-outbuffer)的方式维护预测历程储存器108。在另一实施例中,控制单元124利用一更复杂的替换手段,例如最近使用的或最少使用的。较佳的是,当微处理器100的功能单元持续处理第0级线程的指令时会将预测历程132储存在预测历程储存器108中,并且第0级线程所需运行时间可能会比预测历程所需的储存时间还要长。然而,有利的是,因为预测历程132的数组不会一直被用(也即被写入)来累计预测历程或产生预测(也即被读取)进而处理第0级指令,而只会一直被读取以储存预测历程,因此从储存预测历程到处理第0级指令期间用以储存预测历程132的储存数组的读取端口和写入端口在使用上不会发生争夺的情形。这会有助于因为不需要为此目的而在储存数组上增加读取端口,使得累计储存预测历程所需要外加的硬件的数量可以降到最低。流程进行到方块232。
如方块232所示,控制单元124侦测到用以指示微处理器100运作在一用户特权等级(例如第3级)以及由目前正在执行的线程转至执行另一个不同的线程的事件。流程进行到方块433。
如决定方块433所示,控制单元124判断在方块212中转进的新第3级线程与转离的旧的第3级线程是否属于相同处理程序的一部分。如方块413所述,控制单元124可根据比较前述两个线程的处理程序识别符(例如x86PCID)的结果,来进行这里所述的判断。若新第3级线程的处理程序不同于旧的第3级线程的处理程序,则流程进行到方块435;反之,则流程进行到方块242。
如方块435所示,控制单元124会从预测历程储存器108中恢复新第3级处理程序的预测历程132。换句话说,控制单元124利用新第3级处理程序识别符在预测历程储存器108中寻找对应新第3级处理程序识别符的预测历程,并根据第3级处理程序识别符,从预测历程储存器108加载预测单元109所产生的预测历程132。较佳的是,当微处理器100的功能单元继续处理用以执行从第0级转换至第3级的微指令的指令时,执行从预测历程储存器108中恢复预测历程132的步骤。此微指令所需的运行时间可为一有效数量的频率周期,并且也可比恢复所述的预测历程132所需的时间还长。此作法将带来一好处,那就是许多的预测历程132的数组不会一直被用(也即被写入)来累计预测历程或产生预测(也即被读取)以处理第0级指令而只是用来恢复预测历程,使得从等级转换微指令至恢复预测历程的期间可能极少有或不会有争夺使用预测历程132的储存数组的读、写端口的情况。举例来说,在一实施例中,微指令单元不会使用分支预测单元102,也即分支预测单元102不会针对微指令中的指令产生预测。另举一示例来说,在一实施例中,等级转换微指令不会存取系统内存,因此数据预先撷取单元104不需要为等级转换微指令进行数据预先撷取,并且储存冲突预测单元106也不需要为等级转换微指令产生预测。此作法将带来一好处,那就是因为不需要为这个目的而在储存数组上增加额外的写入端口(writeport),所以提供给恢复预测历程所需的外加的硬件的总数量可降到最低。流程进行到方块242。
如方块242所示,这些预测单元109在微处理器100正处理指令的期间会重新累计其各别的预测历程132并根据预测历程132产生动态预测。流程结束于方块242。
有利的是,处理新第3级线程的指令不会损及旧的第3级线程的预测历程132,借此使新和旧的第3级线程皆能有较高的预测准确性。
图3和图4的诸多实施例可有效地组合成其他实施例,因此控制单元124可储存和恢复关联于第0级线程的预测历程132,并且针对第0级线程,控制单元124可决定不暂缓累计和使用这些第0级线程的预测历程132。这里的第0级线程可例如为指令长度相对长的第0级线程和/或基于在先前执行第0级线程和/或第3级处理程序期间所产生的预测的有效性而具有累计并使用预测历程132价值的第0级线程。如上所述,微处理器100由第3级转换至第0级所需要的时间以及由第0级转换至第3级所需要的时间可为一有效数量的频率周期,并且在这段期间,不需要累计预测历程132也不需要根据预测历程132产生预测。因此,控制单元124在这段期间可有效地而非象征性地储存相对应的预测历程132至预测历程储存器108或从预测历程储存器108中恢复相对应的预测历程132,有果有的话,则对性能不利。在这些实施例中有利的是,可达到将被储存和被恢复的预测历程132的总数限制在由第0级转换至第3级的转换期间以及由第3级转换至第0级的转换期间可能被储存和被恢复的总数的目的,以避免微处理器100停止执行指令直到完成储存及恢复的动作为止。
此外,虽然上述实施例中微处理器100会因应线程由一个特权等级转换至另一个不同的特权等级,而选择性地暂缓累计预测历程以及根据预测历程产生预测,然而在其他实施例中,微处理器100也可因应在相同的特权等级下的线程转换,而选择性地暂缓或重新累计预测历程以及根据预测历程产生预测。举例来说,微处理器100可通过侦测不涉及改变特权等级的事件来侦测线程转换,并响应以暂缓或重新累计预测历程以及根据预测历程产生预测。举例来说,微处理器100可简单地侦测具有一特定的IP值的一指令(例如一子程序呼叫或返回指令(subroutinecallorreturninstruction))的执行,此特定的IP值可例如为其他架构状态的一特定值,此其他架构状态的一特定值可例如为一般目的缓存器的值。另举一示例来说,微处理器100可侦测一串指令和/或IP值。
操作系统例行程序的预测历程储存器的分数(fractional)使用
请参考图5所示,图5为根据本发明的一实施例所绘示的一控制信息表单500的示意图。控制信息表单500是为保持图1中优化信息112的一储存实施例。控制信息表单500包含多个项目,每一个项目用以保存一操作系统例行程序的识别符502和其关联的控制信息504。这里的OS例行程序的识别符502可包含如前述关于优化信息112的不同的信息,例如状态值(例如当执行一x86SYSCALL指令时此OS例行程序的IP值和一般目的缓存器的值),并且识别符502可使控制单元124识别出正要开始执行的一OS例行程序。这里的控制信息504指明其他事物中的一分数(fraction)。预测历程132的储存器包含多个储存部,这些储存部是可独立控制,以累计预测历程。换句话说,控制单元124可控制这些预测单元109,使这些预测单元109在此OS例行程序执行期间仅使用预测历程132的储存器中的一部分的储存部来累计预测历程,并且此部分的储存部可随正在执行的OS例行程序的不同而不同。举例来说,预测历程132的储存可利用路径(way)来排列,如图6所示;或者,预测历程132的储存可用群组(set)来排列,如图7所示;或者,预测历程132的储存可排列成一项目的队列,如图8所示。前述的每个排列例子中,预测历程132的储存器内的路径/群组/项目可分别控制,以累计预测历程,并且关联于一OS例行程序的控制信息504的分数指明预测历程132的储存器中部分储存部,以在执行相关的OS例行程序期间累计预测历程132,此相关详细叙述记载如下。较佳的是,控制信息504指明微处理器100的每个预测单元109的储存器中的一部分储存部给预测历程132使用。
在一实施例中,控制信息表单500记载的信息是在制造微处理器100之前已决定并且建构在例如为微处理器100的微指令中。此微指令是可由例如包含微处理器100的系统的BIOS利用一微指令补丁(patch)来进行现场升级。此外,在所述的系统运作期间,微处理器100的一装置驱动器可下载所述的控制信息表单500至微处理器100中。在一实施例中,所述的装置驱动器侦测到一默认软件应用程序的执行以及根据侦测结果下载控制信息表单500至微处理器100。这将有助于利用较细的颗粒度(granularity)合适地修改控制信息表单500所载的分数,进而使特定感兴趣的软件应用程序的性能达到理想化。
请参考图6所示,图6为根据本发明的一实施例所绘示的一预测历程高速缓存600的方块图。预测历程高速缓存600包含一高速缓存,此高速缓存配置拥有多个路径602的一关联型的高速缓存(associativecache)。如图6所示,预测历程高速缓存600包含八个路径602。然而,在不同的其他实施例中,路径的数量可以不同。路径602是为用以保存预测历程132的储存区。在一示例中,预测历程高速缓存600的众多路径602中的每一个项目可保存用以进行前述的分支预测(例如分支目标快取数据)或数据预先撷取的预测历程。有利的是,这些路径602可独立地控制,以累计预测历程132。举例来说,当侦测到正在执行由图5的控制信息表单500中其中一个OS识别符502所识别的一OS例行程序时,预测历程高速缓存600会接收控制信息504的关联于正在执行的OS的例行程序的分数并只允许N个路径602可以被用来累计预测历程132,其中N是为此分数的分子(numerator),并且此分数的分母(denominator)是为在预测历程高速缓存600中路径602的总数量。举例来说,在执行相关的OS例行程序期间,控制单元124可能只允许预测历程高速缓存600的总共八个路径602中的其中两个路径602被用来累计预测历程132。在一实施例中,这些获准的路径602(例如只有路径4和5)会在此控制信息504中被指明。虽然未绘示,但应可理解的是,除了上述的路径602的排列方式以外,图6的预测历程高速缓存600也可被排列成可被一索引输入索引的多个群组,如图7的类似的排列方式将而详述于下。
请参考图7所示,图7是为根据本发明的另一实施例绘示一预测历程高速缓存700的方块图。预测历程高速缓存700包含一高速缓存排列有一已编列的高速缓存,此已编列的快取缓冲储存区包含多个群组702,这些群组702是由一索引输入704(例如一指令的一内存地址或一加载/储存地址)所指示,索引输入704用以选择其中一个群组702。在图7中,预测历程高速缓存700包含8个群组702;然而,在其他不同的实施例中,预测历程高速缓存700可包含其他数量的群组。群组702是为用以保存预测历程132的储存区。在一示例中,预测历程高速缓存700的众多群组702中的每一个项目可保存用以执行如前述的分支预测或数据预先撷取的预测历程。有利的是,这些群组702是可独立地控制,以累计预测历程132。举例来说,当侦测到正在执行图5的控制信息表单500中其中一个OS识别符502所识别的一OS例行程序时,预测历程高速缓存700会接收控制信息504的关联于此正在执行的OS例行程序的分数并且只允许N个群组702被用来累计预测历程132,其中N是为此分数的分子,而预测历程高速缓存700中群组702的总数是为此分数的分母。举例来说,在执行相关的OS例行程序的期间,控制单元124可只允许预测历程高速缓存700的总共8个群组702中的其中两个群组702累计预测历程132。在一实施例中,被允许的群组702(例如只有群组0和群组1)会在控制信息504中被指明。举例来说,控制单元124可控制预测历程高速缓存700将索引704的上面位改为一预定值,以在执行此OS例行程序的期间限制实际用来累计预测历程132的群组702。举例来说,假设有64个群组702(一6位的索引704),控制单元124可控制预测历程高速缓存700将索引704的上面7个位改为0,使得预测历程高速缓存700只使用群组0和群组1去累计相关的OS例行程序的预测历程。虽然未绘示,但应可理解的是,本发明除了上述群组702的排列方式以外,图7的预测历程高速缓存700也可排列有如图6所示的多个路径。
请参考图8所示,图8为根据本发明的一实施例所绘示的一预测历程队列(queue)800的方块图。预测历程队列800(或简称为队列)包含保存预测历程132的储存区。储存区被排列成一队列。队列800的储存区包含预测历程队列的多个项目802,每一个项目802有一相关的OS旗标804。这里的OS旗标804表示此项目802是否关联于一OS例行程序或关联于一用户例行程序。在一示例中,每一个预测历程队列的项目802可保存用来执行例如为前述的储存冲突侦测等的内存歧异消除(memorydisambiguation)的预测历程。举例来说,此项目802可保存一储存地址、关于一储存指令的来源且用以计算储存指令的储存地址的信息、前次有发生储存冲突的加载指令的IP值、因加载地址与地址尚未被产生的一旧的储存指令相冲突导致接收到错误数据而需重新执行的一加载指令的一重排序缓冲器索引与一冲突的储存指令间的差值、以及重排序缓冲器索引。这里的重排序缓冲器索引例如为一储存指令的索引,或一储存指令为取得其储存数据所需要的一指令的索引,也就是最近一次因加载指令的加载地址与一旧的储存指令(其储存数据在执行所述的加载指令期间无法使用)相冲突以致接收错误数据而需重新执行的一加载指令的索引。储存类似信息的预测历程队列800的实施态样的详细说明请参见引用公元2009年5月29日申请的编号为61/182,283的美国临时申请案作为优先权的于公元2009年10月23日申请且编号为12/604,767的美国非临时申请案,其等全部内容并入此处作为参考。
在一实施例中,预测历程队列800包含一计数器,此计数器持续追踪关于一OS例行程序的有效项目802的数量,此OS例行程序是例如有其OS旗标804群组。当侦测到由图5的控制信息表单500中的其中一个OS识别符502所识别的一OS例行程序正被执行时,预测历程队列800会接收控制信息504的关于正在执行的OS例行程序的分数,并且只让此OS例行程序占用N个项目802,其中N是为此分数的分子,而预测历程队列800中的项目802的总数量是为分数的分母。在一实施例中,预测历程队列800在推进新项目802时,会逐出OS例行程序的N个项目802中最旧的项目802。在一实施例中,预测历程队列800会维护最近最少使用的(least-recently-used,LRU)信息,并在推进新项目802时,逐出OS例行程序的N个项目802中最近最少使用的项目802。在一实施例中,若在将推进一OS例行程序的项目到预测历程队列800中并且此时的预测历程队列800未被占满,则预测历程队列800会让此项目被推进而无需逐出另一个OS的项目。换句话说,在这个实施例中,预测历程队列800暂时允许比N个更多的OS项目的出现。较佳的是,N的数字是可被动态安排。
请参考图9所示,图9是为根据本发明的一实施例所绘示的产生图5的控制信息表单500中数值的处理程序的流程图。流程开始于方块902。
如方块902所示,不同的软件应用程序(例如热门的或关键的软件应用程序、标准检查程序(benchmark)等)被描绘来识别被所述的软件应用程序呼叫的不同的操作系统程序。这些软件应用程序可被描绘在不同的操作系统,例如操作系统、操作系统、AppleMacOS操作系统与AndroidTM操作系统等上。每一个操作系统拥有自己的一组可供所述软件应用程序呼叫的OS例行程序。流程进行到方块904。
如方块904所示,针对在方块902中被识别的每一个OS例行程序,计数每一次OS例行程序被呼叫时所执行的指令的数量。接着,针对OS例行程序,计算已执行的指令的总数量,并且将此总数量除以此OS例行程序被呼叫的次数,借此获得已执行的指令的平均数量。在一实施例中,指令的平均数量和总数量可以在每个应用程序基础上和每个操作系统基础上计算获得。在另一实施例中,计算微处理器100花费在OS例行程序上的频率周期的平均数量和总数量,而不是计算被执行的指令的数量。流程进行到方块906。
如方块906所示,在方块902中被识别的每一个OS例行程序可被归类为下列三种类型(category)的其中一种类型。第一种类型是指执行指令数量相对少的OS例行程序。第二种类型是指执行指令数量中等的OS例行程序。第三种类型是指执行指令数量相对多的OS例行程序。直观而言,第一种类型的OS例行程序不太可能显著地改变关联于所述用以呼叫OS例行程序的用户代码(usercode,也即软件应用程序的指令)的预测历程132,所以此类型的OS例行程序会降低用户代码的指令的预测的准确性进而负面地影响用户代码的性能。相反地,第三种类型的OS例行程序可能会显著地获利于根据预测历程的累计而获得的其指令的预测。或者,第三种类型的OS例行程序可能会显著地负面地影响具有用以呼叫此OS例行程序的用户代码的软件应用程序的性能,其原因在于此软件应用程序的性能是至少部分取决于此软件应用程序所呼叫的OS例行程序的性能,并且若执行大量指令的OS例行程序没有因根据其预测历程来对其指令进行预测所获得的优势,则此OS例行程序很可能会进行得很慢。最后,第二种类型的OS例行程序很可能会改变用户代码的预测历程到足以负面影响其性能的程度;然而,不确定提高OS例行程序的性能是否可补偿所述的负面影响。或者,仅利用预测单元109中一部分的储存器来累计第二种类型的OS例行程序的预测历程可能会改善软件应用程序的整体性能。较佳的是,通过分析被执行的指令的平均数量和总数量来执行上述的分类工作。这是因为即使一OS例行程序的指令长度是相对地短(也即若单看其指令的平均数量时,此OS例行程序可能属于所述的第一种类型),但若此OS例行程序被相对频繁地呼叫时,因为OS例行程序能快速进行是相当重要的(也即由累计预测历程获得的好处),所以就需要透过方块908来分析此OS例行程序。然而,OS例行程序的长度可能很短以致于无法显著地从预测历程的累计中获得好处。有利的是,通过选择归类为第二种类型的一子集合的OS例行程序,则必须在方块908中执行的性能分析的量可能会大幅地减少。流程进行到方块908。
如方块908所示,这些软件应用程序的性能分析是通过改变用来累计每一个在方块906中被归类为第二种类型的OS例行程序的预测历程的每一预测单元109内预测历程储存器(例如图6的预测历程高速缓存600、图7的预测历程高速缓存700和图8的队列800)的分数来完成,以决定最理想的分数的数值。换句话说,图5的控制信息表单500中被加载相关的OS例行程序的OS例行程序识别符502,以及在控制信息504中不同排列的数值被尝试用来决定哪些组合可以使个别的软件应用程序以及整个横跨一给定的操作系统的软件应用程序产生最佳性能。由于所述分数的数值的性能最优化组合会被保持,因此这些数值可被加载图5的控制信息表单500中给微处理器100使用。这些性能最优化的数值可做在微处理器100中和/或也可由一装置驱动器下载至微处理器100中,如下面图10和图11所述。
请参考图10所示,图10为根据本发明的一实施例所绘示的包含图1的微处理器100的系统的运作流程图。流程开始于方块1002。
如方块1002所示,将已根据例如图9所示的方式执行OS例行程序分析的一操作系统(这里称为OSY)加载包含微处理器100的一系统中。流程进行到方块1004。
如方块1004所示,在方块1002中加载的操作系统会开始呼叫其装置驱动器的初始化例行程序,并且会呼叫微处理器100的一装置驱动器的初始化例行程序。微处理器100的装置驱动器的初始化例行程序会下载在图9的方块908中决定的数值至微处理器100,以改变图5的控制信息表单500,因此在执行被选择的OS例行程序时,使用预测历程132的部分储存器来累计预测历程可能会对在微处理器100上进行的软件应用程序有益,并且可有望实现更高的性能。在一实施例中,装置驱动器通过执行给一MSR的x86WRMSR指令,或者通过其他指令集架构的一相似的特殊型号缓存器写入指令来下载所述的数值,所述的MSR是关联于所述预测历程的分数使用的特征。流程结束于方块1004。
请参考图11所示,图11为根据本发明的另一实施例绘示的包含图1的微处理器100的系统的运作流程图。流程开始于方块1102。
如方块1102所示,微处理器100的一装置驱动器侦测到所述操作系统已经预定一软件应用程序(以下称为软件应用程序X)执行在包含微处理器100的一系统上。此操作系统的例行程序已经由例如图9的方式进行分析。流程进行到方块1104。
如方块1104所示,装置驱动器分别下载在图9的方块908中决定的数值至微处理器100,以改变图5的控制信息表单500。如此一来,在执行已选择的OS例行程序时,分数使用预测历程132的储存器来累计预测历程可为执行在微处理器100上的软件应用程序带来好处,并且也可有望实现更高的性能。流程结束于方块1104。
虽然本发明以前述的实施例揭露如上,然其并非用以限定本发明。在不脱离本发明的精神和范围内,具有相关计算机领域的技术人员所为的更动与润饰,均属本发明的专利保护范围。举例来说,可使用软件来实现本发明所述的装置与方法的功能、构造、模块化、模拟、描述和/或测试。此目的可透过使用一般程序语言(例如C、C++)、硬件描述语言(包括Verilog或VHDL硬件描述语言等)、或其他可用的程序来实现。此软件可被设置在任何计算机可用的媒体,例如磁带、半导体、磁盘、光盘(例如CD-ROM、DVD-ROM等)中,或者设置于网络通讯媒体、有线通讯媒体、无线通信媒体或其他通讯媒体中。本发明实施例中所述的装置与方法可被包括在一半导体知识产权核心(semiconductorintellectualpropertycore),例如以硬件描述语言(HDL)实现的微处理器核心中,并被转换为硬件型态的集成电路产品。此外,本发明所描述的装置与方法可透过结合硬件与软件的方式来实现。因此,本发明不应该被本文中的任一实施例所限定,而当视后附的申请专利范围与其等效物所界定者为准。特别是,本发明是实现于一般用途计算机的微处理器装置中。最后,任何本领域技术人员,可基于本发明所揭露的概念以及特定实施例,在不脱离本发明的精神和范围内,可做些许更动与润饰以达到本发明的相同目的。
关于本发明所界定的保护范围请参考所附的申请专利范围。
Claims (20)
1.一种微处理器,其特征在于,包括:
一预测单元,具有一储存器,该储存器用以保存该微处理器先前执行的指令的特征的一预测历程,该预测单元用以累计该预测历程并根据该预测历程提供关联于后续指令执行的预测,该储存器包含多个储存部,所述储存部是单独控制来累计该预测历程;以及
一控制单元,用以侦测该微处理器执行一操作系统程序,在该微处理器执行该操作系统程序期间,该控制单元使该预测单元仅使用该储存器中部分的所述储存部累计该预测历程。
2.根据权利要求1所述的微处理器,其特征在于,该储存器包含具有多个路径(Way)的一关联式的高速缓存;在该微处理器执行该操作系统程序期间,该部分的储存部指定被该控制单元控制的该预测单元所使用的该储存器中用以累计该预测历程的部分的所述路径。
3.根据权利要求1所述的微处理器,其特征在于,该储存器包含一索引式的高速缓存,该高速缓存具有多个群组;在该微处理器执行该操作系统程序期间,该部分的储存部指定被该控制单元控制的该预测单元所使用的该储存器中用以累计该预测历程的部分的所述群组。
4.根据权利要求1所述的微处理器,其特征在于,该储存器包含具有多个项目的一队列;在该微处理器执行该操作系统程序期间,该部分的储存部指定被该控制单元控制的该预测单元所使用的该储存器中用以累计该预测历程的部分的所述多个项目。
5.根据权利要求1所述的微处理器,其特征在于,还包括:
一表单,该表单包含多个识别符,每一该识别符用以识别一各别的操作系统程序,每一该各别的操作系统程序具有一关联式的控制信息;在该微处理器执行该操作系统程序期间,该控制信息指明被该控制单元控制的该预测单元所使用的该储存器中用以累计该预测历程的该部分的储存部。
6.根据权利要求5所述的微处理器,其特征在于,所述识别符和所述控制信息是根据侦测加载一默认操作系统的结果,由一装置驱动器提供给该微处理器。
7.根据权利要求5所述的微处理器,其特征在于,所述识别符和所述控制信息是根据侦测执行一默认软件应用程序的结果,由一装置驱动器提供给该微处理器。
8.根据权利要求1所述的微处理器,其特征在于,该预测单元包含一储存冲突预测单元。
9.根据权利要求1所述的微处理器,其特征在于,该预测单元包含一分支预测单元。
10.根据权利要求1所述的微处理器,其特征在于,该预测单元包含一数据预先撷取单元。
11.一种微处理器的运作方法,适用于一微处理器,其特征在于,该微处理器具有一预测单元,该预测单元包含一储存器,该储存器用以保存先前被该微处理器执行过的指令的特征的一预测历程,该预测单元用以累计该预测历程并根据该预测历程产生关联于后续指令执行的预测,该储存器包含多个储存部,所述储存部是独立控制以累计该预测历程,该运作方法包括:
侦测该微处理器执行一操作系统例行程序;以及
在该微处理器执行该操作系统程序期间,使该预测单元仅使用该储存器中部分的所述储存部,以累计该预测历程。
12.根据权利要求11所述的运作方法,其特征在于,该储存器包含一关联式的高速缓存,该高速缓存包含多个路径;以及在该微处理器执行该操作系统程序期间,该部分的储存部指定被该预测单元使用的该储存器中用以累计该预测历程的部分的述路径。
13.根据权利要求11所述的运作方法,其特征在于,该储存器包含一索引式的高速缓存,该高速缓存包含多个群组;以及在该微处理器执行该操作系统程序期间,该部分的储存部指定被该预测单元使用的该储存器中用以累计该预测历程的部分的所述群组。
14.根据权利要求11所述的运作方法,其特征在于,该储存器包含一队列,该队列包含多个项目;以及在该微处理器执行该操作系统程序期间,该部分的储存部指定被该预测单元所使用的该储存器中用以累计该预测历程的部分的所述项目。
15.根据权利要求11所述的运作方法,其特征在于,还包括:
接收多个识别符,每一该识别符用以识别一各别的操作系统程序,每一该操作系统程序具有一控制信息,在该微处理器执行该操作系统程序期间,该控制信息指示被该控制单元控制的该预测单元所使用的该储存器中用以累计该预测历程的该部分的储存部。
16.根据权利要求15所述的运作方法,其特征在于,所述识别符和所述控制信息是根据侦测加载一默认操作系统的结果,由一装置驱动器提供给该微处理器。
17.根据权利要求15所述的运作方法,其特征在于,所述识别符和所述控制信息是根据侦测执行一默认软件应用程序的结果,由一装置驱动器提供给该微处理器。
18.一种用以改善微处理器性能的方法,适用于一微处理器,其特征在于,该微处理器包含一预测单元,该预测单元包含一储存器,该储存器用以累计先前被执行过的指令的一预测历程,该预测单元利用该预测历程来预测后续指令的执行,并且是可动态控制地仅使用部分该储存器来累计该预测历程,该方法包括:
识别被多个软件应用程序呼叫的多个操作系统程序;
分别计数被每一该操作系统程序执行的指令的数量;
根据每一该被执行的指令的数量,从所述操作系统程序中选择一子集合;以及
针对该子集合调整该储存器的一分数值,以决定使所述软件应用程序达到优化性能所需的该分数值,借此实现性能分析。
19.根据权利要求18所述的方法,其特征在于,从所述操作系统程序中选择子集合的步骤包括:
相较于除了该子集合以外的其他所述操作系统程序而言,将所述操作系统程序中相对数量落入一中等数量范围的操作系统例行程序加入该子集合中。
20.根据权利要求18所述的方法,其特征在于,分别计数被每一该操作系统程序执行的指令的数量的该步骤包含分别计数被每一该操作系统程序执行的指令的一平均数和一总数。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/165,354 US9507597B2 (en) | 2013-06-10 | 2014-01-27 | Selective accumulation and use of predicting unit history |
US14/165,354 | 2014-01-27 | ||
US201462069602P | 2014-10-28 | 2014-10-28 | |
US62/069,602 | 2014-10-28 | ||
PCT/IB2014/002993 WO2015110862A1 (en) | 2014-01-27 | 2014-12-12 | Fractional use of prediction history storage for operating system routines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105706049A true CN105706049A (zh) | 2016-06-22 |
CN105706049B CN105706049B (zh) | 2019-04-16 |
Family
ID=53680887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480028939.7A Active CN105706049B (zh) | 2014-01-27 | 2014-12-12 | 操作系统例行程序的预测历程储存器的部分使用 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP2972797B1 (zh) |
JP (1) | JP6259518B2 (zh) |
CN (1) | CN105706049B (zh) |
WO (1) | WO2015110862A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108347623A (zh) * | 2017-01-23 | 2018-07-31 | 北京新唐思创教育科技有限公司 | 在线直播内容的生成方法、装置及在线直播系统 |
CN110235103A (zh) * | 2017-02-13 | 2019-09-13 | 高通股份有限公司 | 基于块的微架构中具有不同特权等级的模式之间的推测性转变 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0855646A2 (en) * | 1996-12-30 | 1998-07-29 | Texas Instruments Incorporated | Conditional branch prediction apparatus and method |
US20040215720A1 (en) * | 2003-04-28 | 2004-10-28 | International Business Machines Corporation | Split branch history tables and count cache for simultaneous multithreading |
US20090276611A1 (en) * | 2008-05-05 | 2009-11-05 | Terrence Matthew Potter | Ram Block Branch History Table in a Global History Branch Prediction System |
US20110087866A1 (en) * | 2009-10-14 | 2011-04-14 | Shah Manish K | Perceptron-based branch prediction mechanism for predicting conditional branch instructions on a multithreaded processor |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06100987B2 (ja) * | 1987-04-10 | 1994-12-12 | 日本電信電話株式会社 | アドレス変換制御方法 |
JPS6468855A (en) * | 1987-09-10 | 1989-03-14 | Nec Corp | Cache memory control system |
JPH0644247B2 (ja) * | 1987-11-04 | 1994-06-08 | 日本電気株式会社 | キャッシュ記憶制御方式 |
EP0848323B1 (en) * | 1996-12-10 | 2004-02-25 | Texas Instruments Incorporated | Improvements in the branch prediction within a pipelined microprocessor |
US6223256B1 (en) * | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
JP2001043131A (ja) * | 1999-07-30 | 2001-02-16 | Matsushita Electric Ind Co Ltd | 情報処理システム及びその制御方法 |
JP2001249806A (ja) * | 2000-02-22 | 2001-09-14 | Hewlett Packard Co <Hp> | 予測情報管理方法 |
JP3988485B2 (ja) * | 2002-02-25 | 2007-10-10 | セイコーエプソン株式会社 | キャッシュ回路、情報処理装置及び電子機器 |
JP2004126854A (ja) * | 2002-10-01 | 2004-04-22 | Mitsubishi Electric Corp | 攻撃対策装置 |
WO2004075066A2 (en) * | 2003-02-24 | 2004-09-02 | Koninklijke Philips Electronics N.V. | Reducing cache trashing of certain pieces |
US8745362B2 (en) * | 2010-06-25 | 2014-06-03 | International Business Machines Corporation | Operating system aware branch predictor using a dynamically reconfigurable branch history table |
JP2013250593A (ja) * | 2012-05-30 | 2013-12-12 | Renesas Electronics Corp | 半導体装置 |
US9507597B2 (en) * | 2013-06-10 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Selective accumulation and use of predicting unit history |
-
2014
- 2014-12-12 EP EP14880052.7A patent/EP2972797B1/en active Active
- 2014-12-12 WO PCT/IB2014/002993 patent/WO2015110862A1/en active Application Filing
- 2014-12-12 CN CN201480028939.7A patent/CN105706049B/zh active Active
- 2014-12-12 JP JP2016526726A patent/JP6259518B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0855646A2 (en) * | 1996-12-30 | 1998-07-29 | Texas Instruments Incorporated | Conditional branch prediction apparatus and method |
US20040215720A1 (en) * | 2003-04-28 | 2004-10-28 | International Business Machines Corporation | Split branch history tables and count cache for simultaneous multithreading |
US20090276611A1 (en) * | 2008-05-05 | 2009-11-05 | Terrence Matthew Potter | Ram Block Branch History Table in a Global History Branch Prediction System |
US20110087866A1 (en) * | 2009-10-14 | 2011-04-14 | Shah Manish K | Perceptron-based branch prediction mechanism for predicting conditional branch instructions on a multithreaded processor |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108347623A (zh) * | 2017-01-23 | 2018-07-31 | 北京新唐思创教育科技有限公司 | 在线直播内容的生成方法、装置及在线直播系统 |
CN110235103A (zh) * | 2017-02-13 | 2019-09-13 | 高通股份有限公司 | 基于块的微架构中具有不同特权等级的模式之间的推测性转变 |
CN110235103B (zh) * | 2017-02-13 | 2023-08-25 | 高通股份有限公司 | 基于块的微架构中具有不同特权等级的模式之间的推测性转变 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
US11379243B2 (en) | 2020-04-07 | 2022-07-05 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with multistep-ahead branch predictor |
Also Published As
Publication number | Publication date |
---|---|
WO2015110862A1 (en) | 2015-07-30 |
EP2972797A4 (en) | 2017-03-01 |
EP2972797B1 (en) | 2018-04-04 |
JP6259518B2 (ja) | 2018-01-10 |
EP2972797A1 (en) | 2016-01-20 |
JP2016525252A (ja) | 2016-08-22 |
CN105706049B (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3129887B1 (en) | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type | |
EP3049915B1 (en) | Prefetching with level of aggressiveness based on effectiveness by memory access type | |
KR101820223B1 (ko) | 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리 | |
US9507597B2 (en) | Selective accumulation and use of predicting unit history | |
Ferdman et al. | Temporal instruction fetch streaming | |
TWI553482B (zh) | 基於記憶體訪問類型以分路來分配的快取記憶體 | |
US9891918B2 (en) | Fractional use of prediction history storage for operating system routines | |
US20200012497A1 (en) | Multiple-table branch target buffer | |
US10402203B2 (en) | Determining a predicted behaviour for processing of instructions | |
CN105706049A (zh) | 操作系统例行程序的预测历程储存器的部分使用 | |
Qiu et al. | Branch prediction-directed dynamic instruction cache locking for embedded systems | |
TWI569207B (zh) | 微處理器、微處理器的運作方法、及改善微處理器效能的方法 | |
Atta et al. | Reducing OLTP instruction misses with thread migration | |
Lee et al. | OPTS: increasing branch prediction accuracy under context switch | |
JP2015166896A (ja) | 情報処理装置、情報処理装置の性能情報採取プログラム及び情報処理装置の性能情報採取方法 |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |