首页> 中国专利> 操作系统例行程序的预测历程储存器的部分使用

操作系统例行程序的预测历程储存器的部分使用

摘要

一微处理器包含具有储存器(storage)的一预测单元,储存器用以保留先前被微处理器执行过的指令的特征的一预测历程(prediction history)。预测单元累计预测历程并根据预测历程产生关于后续执行指令的预测。储存器包含多个可独立控制的储存部,用以累计预测历程。微处理器也包含一控制单元,控制单元侦测微处理器正进行一操作系统(operating system,OS)例行程序(routine)以及控制预测单元在微处理器执行此操作系统例行程序期间仅透过储存器中的一部分储存部来累计预测历程。

著录项

  • 公开/公告号CN105706049A

    专利类型发明专利

  • 公开/公告日2016-06-22

    原文格式PDF

  • 申请/专利权人 上海兆芯集成电路有限公司;

    申请/专利号CN201480028939.7

  • 申请日2014-12-12

  • 分类号G06F9/38;

  • 代理机构北京汇泽知识产权代理有限公司;

  • 代理人张瑾

  • 地址 201203 上海市浦东新区张江高科技园区金科路2537号301室

  • 入库时间 2023-12-18 15:41:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-06-27

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F 9/38 专利号:ZL2014800289397 变更事项:专利权人 变更前:上海兆芯集成电路有限公司 变更后:上海兆芯集成电路股份有限公司 变更事项:地址 变更前:201203 上海市浦东新区张江高科技园区金科路2537号301室 变更后:201203 上海市浦东新区张江高科技园区金科路2537号301室

    专利权人的姓名或者名称、地址的变更

  • 2019-04-16

    授权

    授权

  • 2016-07-20

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20141212

    实质审查的生效

  • 2016-06-22

    公开

    公开

说明书

技术领域

本发明涉及一种微处理器,特别涉及一种微处理器、微处理器的运作方法 及改善微处理器性能的方法。

背景技术

现今的微处理器采用不同的预测技术来试图改善其性能。举例来说,分支 预测器被用来预测分支指令是否将被使用,以及当预测到分支指令将会被使用 时,进一步预测此分支指令的目标地址。动态分支预测器会累计用以记载执行 不同的分支指令的结果的历程并且会根据这些历程产生针对每一分支指令的预 测。动态分支预测器的预测准确性主要在于历程可累计的量的函数。只要一程 序在给定的时间内所执行的分支指令组的长度小到足以被涵盖在预测历程中, 则获得的预测准确性可能会相当高。

然而,预测准确性可能会因某些事件(例如发生在另一程序执行的同时暂 缓目前正在执行的程序的事件等)的发生而大幅缩减。举例来说,当一网络接 口控制器(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)而非其他运作 时,预测历程的累计与使用可能会被暂缓。举例来说,所述的暂缓与否是取决 于线程的特权等级。进一步来说,线程是否为位于一监督者特权等级(supervisor privilegelevel),例如在x86处理器架构中的目前特权等级(currentprivilege level,CPL)0,也可称为第0级。在另一示例中,所述的暂缓与否是取决于线 程的型态(Type),例如取决于线程是否为一中断处理器(interrupthandler)。在 另一示例中,所述的暂缓与否是取决于是否因应一系统呼叫指令(systemcall instruction)而跳到新的线程。在另一示例中,微处理器会收集关于先前线程的 执行情况的信息,而所述的暂缓与否可取决于微处理器所收集到的信息,例如 指令长度(length)和性能信息。在另一示例中,所述的暂缓与否是取决于线程 的身份。线程的身份可根据例如由导致跃迁(transition)的事件的型态、此事件 发生当时的处理器的结构状态以及其组合来决定。事件的型态例如可包含执行 一系统呼叫、执行一软件中断指令、执行一内部特权(inter-privilege)或工作切 换(taskswitch)过程调用以及侦测异常情况(exceptioncondition)。再者,在中 断预测历程的累计与使用的期间,微处理器可储存和恢复这些预测历程至一局 部储存器(localstorage)。

词汇说明

预测单元可为微处理器的硬件、软件或其组合,并可产生关于在微处理器 上进行的一指令流所对应的动作的预测。所述的预测可例如但不限于包含预测 一分支指令是否将指示微处理器跳转(branch)、预测一分支指令的一目标地址、 预测指令流的其中一个指令将要存取的数据、以及预测一储存冲突是否发生。 预测单元可根据记载有被微处理器执行的指令的特征的一历程(或称预测历 程),产生相对应的预测,而此时的预测称为动态预测。当微处理器执行指令流 中的每个指令的同时,预测单元也会累计此历程。此历程可例如包含但不限于 分支指令是否指示微处理器跳转的结果、一已执行的分支指令的目标地址、指 令流中的每个指令所加载或储存的数据的地址、关于指明可高速缓存位置的储 存指令的信息(例如储存指令的地址、用以计算储存地址的来源(source)的识 别符、用以决定储存数据的指令的一重排序缓冲器索引(reorderbufferindex)、 之前与储存指令发生冲突的一加载指令的地址和重排序缓冲器索引、冲突的加 载和储存指令之间的一重排序缓冲器索引差值以及一冲突的加载指令的重新执 行次数的一指示器(indicator))。预测单元也可以不用根据此历程来产生预测, 而此时的预测称作静态预测。

微处理器的特权等级是由微处理器的指令集架构(instructionset architecture)所定义,并且特权等级是用以控制当前正在执行的程序对例如储存 区域(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-order micro-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也不需要为等级转换微指令产生预测。此作法将带来一 好处,那就是因为不需要为这个目的而在储存数组上增加额外的写入端口(write port),所以提供给恢复预测历程所需的外加的硬件的总数量可降到最低。流程 进行到方块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的不同的信息,例如状态值(例如当执行一x86 SYSCALL指令时此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例行程序的用户代码(user code,也即软件应用程序的指令)的预测历程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等)中,或者设 置于网络通讯媒体、有线通讯媒体、无线通信媒体或其他通讯媒体中。本发明 实施例中所述的装置与方法可被包括在一半导体知识产权核心(semiconductor intellectualpropertycore),例如以硬件描述语言(HDL)实现的微处理器核心中, 并被转换为硬件型态的集成电路产品。此外,本发明所描述的装置与方法可透 过结合硬件与软件的方式来实现。因此,本发明不应该被本文中的任一实施例 所限定,而当视后附的申请专利范围与其等效物所界定者为准。特别是,本发 明是实现于一般用途计算机的微处理器装置中。最后,任何本领域技术人员, 可基于本发明所揭露的概念以及特定实施例,在不脱离本发明的精神和范围内, 可做些许更动与润饰以达到本发明的相同目的。

关于本发明所界定的保护范围请参考所附的申请专利范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号