微处理器以及微处理器操作方法

文档序号:6636846阅读:134来源:国知局
微处理器以及微处理器操作方法
【专利摘要】一种微处理器以及微处理器操作方法。该微处理器包括一预测单元以及一控制单元。控制单元用以控制预测单元累计已执行的指令的特性的历史记录。控制单元还检测自运行第一线程至运行第二线程之间的第一转变,以及检测第二线程的识别码是否存在。控制预测单元于运行第二线程,且第二线程的识别码不存在时,选择性地暂停累计历史记录并利用历史记录进行预测。控制单元用以搜集有关第二线程的信息,以及检测从运行第二线程至运行第三线程的第二转变。控制单元用以登录并更新所搜集的与第二线程有关的信息,以及控制预测单元恢复累计历史记录及恢复利用历史记录进行预测。
【专利说明】微处理器以及微处理器操作方法
[0001] 本申请是申请日为2014年6月6日、申请号为201410251303. 0、发明名称为"微 处理器以及微处理器操作方法"的发明专利申请的分案申请。

【技术领域】
[0002] 本发明涉及一种微处理器以及其操作方法,特别涉及根据微处理器中所累计已执 行的指令的特性的历史记录进行预测的微处理器以及其操作方法。

【背景技术】
[0003] 现今微处理器利用不同的预测技术以改进执行效能。举例来说,分支预测器 (branchpredictor)用以预测是否会执行分支指令,若执行分支指令,则预测分支指令的 目标地址。动态分支预测累计不同分支指令执行所输出的历史记录,以及根据历史记录进 行预测。动态分支预测的预测精准度很大程度与可累计的历史记录的数量有关。只要在既 定时间内通过程序执行小到可以包含在预测历史记录中的一组分支指令,则精准度可能非 常尚。
[0004] 然而,预测精准度会因某些事件而大幅降低。上述事件之一为当其他程序运行时, 目前正在运行的程序暂时中断的状况。举例来说,通过网络接口控制器接收分组,将发出一 中断信号至处理器。处理器将操作系统的控制转换为提供中断,这将造成目前所运行的程 序A暂时中断,直到操作系统将控制恢复以运行程序A为止。当处理器执行操作系统的分 支指令时,将影响程序A的分支预测的历史记录。对程序A的预测分支而言,很有可能会降 低的分支预测器的精准度。


【发明内容】

[0005] 本发明一实施例提供一种微处理器。微处理器包括一预测单元以及一控制单元。 控制单元用以控制预测单元累计由微处理器所执行的指令的特性的历史记录,以及在微处 理器运行第一线程时根据历史记录预测后续指令。控制单元还检测自运行第一线程至运行 与第一线程不同的第二线程(thread)之间的第一转变,以及检测第二线程的识别码是否 存在。控制单元还控制预测单元在运行第二线程,且第二线程的识别码不存在时,选择性地 暂停累计历史记录并利用历史记录进行预测。控制单元用以搜集有关第二线程的信息,以 及检测从运行第二线程至运行第三线程的第二转变。控制单元用以登录并更新所搜集的 与第二线程有关的信息,以及控制预测单元恢复累计历史记录及恢复利用历史记录进行预 测。
[0006] 本发明另一实施例提供一种执行微处理器的方法。方法包括累计由微处理器所 执行的指令的特性的历史记录,以及于微处理器运行第一线程时根据历史记录预测后续指 令。方法还包括检测自运行第一线程至运行第二线程之间的第一转变,以及检测第二线程 的识别码是否存在。方法还包括于运行第二线程,且第二线程的识别码不存在时,选择性地 暂停累计历史记录并利用历史记录进行预测。方法还包括搜集有关第二线程的信息,以及 检测从运行第二线程至运行第三线程的第二转变。方法还包括登录并更新所搜集的与第二 线程有关的信息,以及控制预测单元恢复累计历史记录及恢复利用历史记录进行预测。

【专利附图】

【附图说明】
[0007] 图1是显示一微处理器的方块图。
[0008] 图2是描述图1所示的微处理器的操作流程图。
[0009] 图3是根据一替代实施例描述图1所示的微处理器的操作流程图。
[0010] 图4是根据另一替代实施例描述图1所示的微处理器的操作流程图。
[0011] 【符号说明】
[0012] 100?微处理器
[0013] 102?分支预测单元
[0014] 104?数据预取单元
[0015] 106?存储冲突预测单元
[0016] 108?历史记录存储器
[0017] 109?预测单元
[0018] 111?现有特权等级寄存器
[0019] 112?保存最佳化信息的存储器
[0020] 113?引退指令计数器
[0021] 114?效能计数器
[0022] 124?控制单元
[0023] 132A、132B、132C?预测历史记录
[0024] 202、212、222、232、242、311、313、315、333、335、413、433、435 ?流程方块

【具体实施方式】
[0025] 以下所述的实施例藉由选择性暂停预测历史记录的累计,以及当暂停动态预测 时,通过预测单元(例如分支预测器、数据预取器(dataprefetcher)以及存储冲突检测 预测器(storecollisiondetectionpredictor))利用利于静态预测的预测历史记录进 行预测,以改进微处理器的效能。更具体地,当微处理器运行一些线程(thread,又称之为 "执行绪")但非其他时,可能暂停预测历史记录累计(predictionhistoryaccumulation) 以及使用。举例来说,根据运行线程(thread,又称之为"执行绪")的特权等级选择暂停, 更具体地,线程是否运行于管理者特权等级,例如于x86架构处理器下的目前特权等级 (currentprivilegelevel,CPL)的第0级(亦被称为ring0)。举另一例来说,根据线 程的类型选择暂停,例如线程是否为中断处理程序(interrupthandler)。举另一例来说, 暂停的选择可根据是否此转换到一新的线程的动作回应一系统调用(systemcall)指令而 设定。举另一例来说,微处理器搜集有关线程的前一执行实例的信息,以及根据上述信息选 择暂停,例如指令长度以及效能信息。举另一例来说,根据线程的识别码选择暂停。线程的 识别码(identity)可根据,例如,造成转变的事件的类型、当事件发生时处理器的架构状 态、以及前述两者的结合而决定。事件的类型可包括,例如,系统调用的执行、软件中断指 令的执行、内部特权(inter-privilege)或者任务切换程序调用(taskswitchprocedure call)的执行、以及例外情况的检测。此外,微处理器可在暂停预测历史记录累计以及使用 期间将预测历史存储以及还原至局部存储器(localstorage)。
[0026]注释:
[0027] 预测单元为微处理器的硬件、软件、或者硬件以及软件的结合,用以预测有关运 行在处理器的指令流所将采取的动作。预测可包括(但非以此为限)预测分支指令是否 指示微处理器进行分支;预测分支指令的目标地址;预测藉由指令流(instructionsof thestream)所存取的数据;预测是否会发生存储冲突(storecollision)。预测单元 根据由微处理器所执行的指令的特性的历史记录进行预测,又可称为动态预测(dynamic prediction)。当微处理器执行指令流时,预测单元累计历史记录。历史记录可包括(但 非以此为限)无论分支指令是否指示微处理器进行分支的执行结果(outcome);作用分支 指令(takenbuanchinstruction)的目标地址;藉由指令流所读取或者存储的数据的地 址;与指定快取存储器位置的存储指令有关的信息,例如存储指令的地址、用以计算存储地 址的来源的识别符(identifier)、存储数据所依赖的指令的重排序缓冲器索引(reorder bufferindex)、先前与存储指令冲突的载入指令的地址以及重排序缓冲器索引、冲突载 入以及存储指令之间的重排序缓冲器索引差量(delta)、冲突载入指令重复的次数的指 标(indicator)。预测单元也可不根据历史记录进行预测,又可称为静态预测(static prediction)〇
[0028] 微处理器的特权等级由微处理器的指令集架构(instructionset architecture)所定义,以及控制目前所运行的程序对于系统资源的存取,例如存储器区 域、I/O端口以及指令集的特定指令(certaininstruction)。
[0029] 线程为由微处理器所执行的指令的序列。
[0030] 程序为线程,以及其相关的状态系其他程序共同由操作系统所管理。操作系统将 处理识别符分配至程序。
[0031] 请参阅图1,图1是显示微处理器100的方块图。微处理器100包括预测单元109。 预测单元109耦接至控制单元124以及预测历史记录存储器108。控制单元124耦接至引 退指令计数器(retiredinstructioncounter) 113、效能计数器114、现有特权等级寄存器 (currentprivilegelevelregister) 111、以及保存最佳化信息的存储器(storagefor holdingoptimizationinformation) 112。在一实施例中,微处理器100包括一个或多个 功能单元的管线(未显示),具有指令快取(instructioncache)、指令转换单元或者指令 解码器、寄存器重命名单元(registerrenamingunit)、保留站(reservationstation)、 数据快取、执行单元、存储器子系统(memorysubsystem)以及具有重排序缓冲器的引退单 元。优选地,微处理器100包括超标量(superscalar)、无序执行微架构(out-of-order executionmicroarchitecture)。预测单元109可并入微处理器100的各种功能单元中或 者作为功能单元。
[0032] 预测单元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的效能和(或)降低其功率消耗。
[0033] 此外由各个预测单元109进行动态预测,即为利用预测历史记录132A?C中的一 个进行预测,各个预测单元109也可用以进行静态预测,即为不通过利用预测历史记录进 行预测。举例来说,在一实施例中,分支预测单元102对所有目标地址为反向(backward) 的分支指令(举例来说,偏移为负值的相关分支)进行静态预测,因为并不需要任何先前所 执行指令的历史记录,以及并不会对所有目标地址为前向(forward)的分支指令进行静态 预测。举另一例来说,在一实施例中,当数据预取单元104检测到程序存取快取存储器时, 需要下一时序(sequential)的数据的快取线以进行预测,因此数据预取单元104预取下一 时序的数据的快取线。静态预测方法为中央处理单元的已知技术。
[0034] 在一实施例中,预测单元109利用预测历史记录存储器108存储预测历史记录 132A?C以响应导致微处理器100自运行一线程转换至运行另一线程的事件,举例来说,自 使用者特权等级转换至管理者特权等级,以及还原预测历史记录132A?C以响应导致微处 理器100自管理者特权等级转换回使用者特权等级的事件,优选地为当在执行转换至管理 者特权等级时,恢复至一不同的使用者程序而非先前所运行处理,下列将提出更详细的描 述。
[0035] 现有特权等级寄存器111存储微处理器100的现有特权等级。在一实施例中,微 处理器100基本上符合X86的架构,其他为IntelIA-32架构和(或)Intel64架构(上 述的架构详述于"Intel64andIA-32ArchitecturesSoftwareDeveloper'sManual, CombinedVolumes:1,2A,2B,2C,3Band3C,OrderNumber325464-043US,May2012,by theIntelCorporationofSantaClara,California" 中)。特别的是,在x86 的实施例 中,现有特权等级寄存器111用以指示微处理器100是否运行在现有特权等级〇、1、2或者 3,即为在第0级、第1级、第2级或者第3级。第0级为最优先的特权等级,以及第3级为 最小的特权等级(使用者特权等级)。第〇级、第1级以及第2级为管理者特权等级。
[0036] 在一指令引退时,引退指令计数器113递增。将微处理器100开始运行另一不同的 线程(例如离开第〇级)的引退指令计数器的值减去当微处理器100开始运行线程时(例 如进入第0级)的引退指令计数器113的值,使控制单元124可根据上述的值决定有多少 指令藉由线程引退,下列将提出更详细的叙述。在一实施例中,指令计数器113计算微指令 引退的数量(即为架构指令,例如x86指令),然而在另一实施例中,指令计数器113计算微 指令引退的数量(即为由微处理器100的指令转换器(instructiontranslator)自微指 令转换为由微处理器100的微架构指令集所定义的非架构指令,以及上述非架构指令由微 处理器100的执行单元所执行)。
[0037] 效能计数器114包括多个计数器,用以计算微处理器100有关效能和(或)功率 消耗的情况。在一实施例中,效能计数器114计算预测分支指令;正确地预测分支指令;非 正确地预测分支指令;由数据预取所分配的快取线;由非预取机制所分配的快取线,例如 需求载入/存储或者直接存储器存取(directmemoryaccess,DMA)请求;程序存取至由数 据预取所分配的快取线;在使用前被驱除(evict)的由数据预取所分配的快取线;存储冲 突预测;实际存储冲突检测。
[0038] 最佳化信息112用以选择性地暂停累计,以及选择性地使用预测历史记录132A? C,举例来说,在管理者等级操作期间,将详述于与图3的相关的实施例中。
[0039] 控制单元124包括硬件、软件、或者硬件以及软件的结合。根据其输入(主要为现 有特权等级111、最佳化信息112、引退指令计数器113、效能计数器114、线程转换事件类 型、以及架构状态),控制单元124控制预测单元109继续或者暂停累计其所对应的预测历 史记录132A?C中的一个,以及利用预测历史记录132A?C和(或)自预测历史记录存 储器108存储/还原的预测历史记录132A?C进行预测。在一实施例中,控制单元124包 括硬件状态机器、微编码或者硬件状态机器与微编码的结合。在一实施例中,微编码包括由 微处理器100的执行单元所执行的指令。
[0040] 在一实施例中,用以控制微编码的读取的微编码单元(未显示)包括其读取单元、 或者定序器(sequencer)、以及未执行分支预测单元102,以仅预测使用者程序分支指令。[0041] 请参阅图2,图2是描述图1所示的微处理器100的操作流程图。流程起始于方块 202〇
[0042] 在方块202,当在使用者特权等级运行线程操作时(举例来说第3级),各个预测 单元109累计所对应的预测历史记录132A?C中的一个,并在微处理器100处理线程的指 令时利用预测历史记录132A?C进行动态预测。流程进入方块212。
[0043] 在方块212,控制单元124检测指示微处理器100操作管理者特权等级的事件, 举例来说,第〇级。上述事件亦导致微处理器100自正在运行的线程的控制转换至不同 的线程。上述事件的例子包括,但并非限制于指令的操作,例如系统调用指令(例如X86 SYSENTER/SYSCALL指令)、软件中断(例如x86INT指令)、或者内部特权等级或者任务切 换程序调用指令(例如X86CALL指令);以及例外情况的检测,例如硬件中断(例如计时器 刻度(timertick)、I/0装置)或者页面错误。在一实施例中,在转换控制至第0级线程或 者子程序(routine)之前,事件将造成微处理器100将控制转换至操作系统的微编码以执 行各种操作(例如权限检查)。流程进入方块222。
[0044] 在方块222,响应于方块212的事件检测,当微处理器100在管理者特权等级运行 新的线程时,控制单元124控制预测单元暂停累计所对应的预测历史记录132A?C,以及 暂停利用历史记录进行预测。然而,预测单元109持续进行不需使用预测历史记录132A? C的静态预测。在一实施例中,控制单元124可暂停累计预测历史记录132A?C,以及暂停 针对部分预测单元109的预测,但针对其他单元不暂停累计以及不暂停进行预测。除此之 夕卜,暂停以及不暂停预测单元109的决定由微处理器100动态操作。举例来说,编程暂停以 及非暂停预测单元109的子集可藉由例如操作系统或者BIOS进行编程。举另一例子来说, 可在微处理器100的制造过程中通过熔丝,甚至通过使用者或者服务人员将子集配置或者 设置于一区域中。举另一例子来说,可根据将运行的特定第〇级决定子集,接下来将于图3 所述的实施例进行更详细的叙述。流程进入方块232。
[0045] 在方块232,控制单元124检测指示微处理器100操作使用者特权等级(例如第 3级)的事件。上述事件亦造成微处理器100将控制自正在运行的线程转换至不同的线 程。上述事件的例子包括,但并非限制于指令的执行,例如系统调用返回指令(例如x86 SYSEXIT/SYSRET指令)、来自中断或者例外的返回(例如x86IRET指令)、或者来自程序指 令的内部特权等级返回(例如X86RET指令)。在一实施例中,造成微处理器100将控制转 换至微编码的事件,将于将控制转换至第3级处理之前执行各种操作。流程进入方块242。
[0046] 在方块242,预测单元109恢复累计个别的预测历史记录,以及于微处理器100处 理指令时利用历史记录132进行预测。流程结束于方块242。
[0047] 如前所述,若方块242所返回的控制的第3级处理与方块212的事件所中断的第3 级处理相同时,则预测历史记录132A?C应与先前的第0级的转变相同,即为当第3级处 理被中断时,预测历史记录132A?C并不会因此而改变,因为其并未被第0级线程所影响。 因此,很可能预测单元109将可有利于事件发生后一如往常地持续对第3级处理的线程进 行正确的动态预测。也可能在执行第0级线程时的预测效能将低于执行第3级处理的预测 效能,因为第〇级线程预测仅使用静态预测。无论如何,根据第〇级线程和(或)第3级处 理的特性,其可能希望在执行第〇级线程时,藉由牺牲效能以有利地改进第3级的效能-由 于第3级处理预测历史记录的影响较少或者没有-将支配第0级效能的损失,特别为当第 0级线程为短的和(或)不经常运行。
[0048] 请参阅图3。图3是根据一替代实施例描述图1所示的微处理器的操作流程图。 图3中部分方块与图2相同,以及编号亦相同。优选地,在重新设定时,控制单元124初始 化信息112数据架构将于以下做详细的叙述。流程起始于方块202。
[0049] 在方块202,当线程操作于使用者特权等级时,例如第3级,各个预测单元109累 计所对应的预测历史记录132A?C,以及当微处理器100处理指令时利用预测历史记录 132A?C进行预测。流程进入方块212。
[0050] 在方块212,控制单元124检测指示微处理器100操作管理者特权等级(例如第0 级)的事件,以及造成微处理器100将控制自正在运行的线程转换至不同的线程。流程进 入方块311。
[0051] 在方块311,控制单元24尝试识别运行在第0级的线程,以及产生识别符给第0级 线程。在一实施例中,以下所述的最佳化信息112数据架构包括由控制单元124保存在微 处理器100的私密存储器中的表格。表格中每个登录与不同的第0级线程识别符有关。功 能用以在检测到线程转换时,产生第0级识别符以接收各种输入,例如微处理器100的事件 类型以及状态值。事件类型可为前述图2的方块212中各种事件类型中的一个,但并非以 此为限。状态值可为通用目的寄存器的值(generalpurposeregistervalue)、模块特定 寄存器的值(modelspecificregistervalue)、指令指针(instructionpointer,IP),或 者第3级处理的程序计数器(PC)的值,用以进行系统调用、软件中断、内部特权或者任务切 换程序调用、以及与中断或者例外有关的中断向量数字,但并非以此为限。举例来说,当第 3级处理对Microsoft? Windows?操作系统进行系统调用时(例如通过x86SYSENTER 指令),Windows根据x86EAX寄存器中的值以及在某些情况下其他寄存器的值运行不同的 线程。因此,在一实施例中,当事件类型为系统调用指令时,控制单元124检查EAX寄存器 值,以及产生不同的第〇级识别符给不同的EAX值。其他实施例可用于其他的系统。在另 一例子中,控制单元124可产生不同的第0级识别符值给不同的中断向量值。流程进入方 块 313〇
[0052] 方块313,控制单元124查找在方块311的最佳化信息112数据架构中所产生的 第〇级识别符,以取得有关于藉由第〇级识别符所识别的第〇级线程的最佳化信息112。在 一实施例中,假设第〇级识别符不存在于最佳化信息112数据架构中,控制单元124执行预 设第〇级登录动作(即为相对于进入第〇级的预设动作有关于无论是否累计预测历史记录 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。
[0053] 在决策块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整体效率较高。
[0054] 在方块222,响应于方块212的事件检测,当微处理器100运行在管理者特权等 级时,控制单元124控制预测单元109暂停累计其所对应的预测历史记录132A?C,以及 暂停利用预测历史记录进行预测。然而,预测单元109持续进行不需要使用预测历史记录 132A?C的静态预测。流程进入方块321。
[0055] 在方块321,当第0级线程运行时,控制单元124持续搜集有关第0级线程的最佳 化信息,例如通过效能计数器的预测有效性以及自引退指令计数器113的线程长度。在一 实施例中,控制单元124搜集除了由预测单元109所进行的动态预测之外有关于静态预测 的预测有效性。在一实施例中,控制单元124亦搜集预测有效性信息给第3级线程。较佳 地,若静态预测线程的效能为可接受的,则当线程运行时,控制单元124将持续暂停预测历 史记录的累计以及使用,尤其是若其他线程的效能明显改善时;反之,当线程运行时,控制 单元124将累计以及使用预测历史记录。流程进入方块232。
[0056] 在方块232,控制单元124检测指示微处理器100操作于使用者特权等级的事件 (例如第3级),以及将控制自正在运行的线程转换至不同的线程。流程进入方块333。
[0057] 在方块333,控制单元124利用于方块321所搜集的最佳化信息更新与第0级线程 有关最佳化信息112数据架构登录。在一实施例中,更新包括藉由较新的搜集最佳化讯息 的登录简单地取代最佳化讯息112。在另一实施例中,更新包括利用所搜集的最佳化讯息进 行计算,以及利用计算更新最佳化信息112。举例来说,控制单元124计算引退指令的数量 的平均和(或)根据第〇级线程最后的执行过程的预测有效性。除此之外,平均可为权重 或者移动平均数(rollingaverage)。另外,控制单元124可过滤出极限值并自最佳化信息 112排除。除此之外,可考虑维持最佳化信息112数据架构的各种方法。举例来说,在一实 施例中,控制单元124仅在最佳化讯息112数据架构保存控制单元124预置换预设第0级 登录动作的登录给第〇级线程;即为若控制单元124在方块313查找第0级线程识别符,以 及在最佳化信息112数据架构中找到第0级线程识别符,则控制单元124在决策块315作 决定以置换预设动作。流程进入决策块335。
[0058] 在决策块335,控制单元124决定是否累计以及使用于方块222所暂停的预测历史 记录132A?C。若是如此,流程进入方块242 ;反之,则累计预测单元109以及持续累计预 测历史记录132A?C以及使用预测历史记录132A?C以进行预测,以及流程结束。
[0059] 在方块242,预测单元109恢复累计所对应的预测历史记录132A?C,以及当微处 理器100处理指令时,利用预测历史记录132A?C进行动态预测。流程结束于方块242。
[0060] 请参阅图4。图4是根据一替代实施例描述图1所示的微处理器100的操作流程 图。图4的一些方块与图2的方块相同,以及具有相同的标号。流程起始于方块202。
[0061] 在方块202,当线程操作于使用者特权等级,例如第3级,每个预测单元109累计 所对应的预测历史记录132A?C,以及当微处理器100处理指令时,利用预测历史记录 132A?C进行动态预测。流程进入方块212。
[0062] 在方块212,控制单元124检测指示微处理器100操作于管理者特权等级(例如 第〇级)的事件,以及造成微处理器100将控制自正在运行的线程转换至不同的线程。流 程进入方块222。
[0063] 在方块222,响应至方块212的事件检测,当微处理器100在管理者特权等级运行 新的线程时,控制单元124控制预测单元暂停累计所对应的预测历史记录132A?C者,以 及暂停利用预测历史记录进行预测。然而,预测单元109持续进行静态预测而不需利用预 测历史记录132A?C。流程进入方块413。
[0064] 在方块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级处理,例如 "Intel64andIA-32ArchitecturesSoftwareDeveloper'sManual" 第 3A册第 4-46 至4-62页第4. 10节所述的内容。在另一实施例中,第3级处理藉由位于x86CR3控制寄存 器中的第3级处理所使用的页面目录的地址所识别。在一实施例中,控制单元124保留预 测历史记录存储器108以作为先入先出缓冲器(first-in-first-outbuffer)。在另一实 施例中,控制单元124执行更复杂的替代方案,例如最近最少使用(least-recently-used) 或者至少频繁使用(least-frequently-used)。优选地,当微处理器100的功能性单元持续 处理第0级线程的指令时,将预测历史记录132A?C存储至预测历史记录存储器108,以及 第0级线程执行时间很可能比预测历史记录存储时间还长。然而,有利的是,因为预测历史 记录132A?C阵列并未被存取(即写入)以累计预测历史记录或者进行预测(即读取), 使得不用于预测历史记录存储以及第〇级指令处理之间争用存储预测历史记录132A?C 的存储阵列的存取的读取端口以及写入端口,以处理仅进行读取以写入预测历史记录的第 0级指令。此为有利的,因为用以累计存储的预测历史记录的额外硬件的数量将被最小化, 原因为不需要包括存储阵列的额外的读取端口。流程进入方块232。
[0065] 在方块232,控制单元124检测指示微处理器100操作在使用者特权等级(例如第 3级)的事件,以及将控制自目前所运行的线程转换置不同的线程。流程进入方块433。
[0066] 在决策块433,控制单元124决定转换的新的第3级线程以及控制被转换的旧的第 3级线程的处理是否部分相同。相对于前述的方块413,控制单元124将藉由比较两个线程 的处理识别码以进行决定,例如x86PCID。若新的第3级线程处理不同于旧的第3级线程 处理,流程进入方块435 ;反之,流程进入方块242。
[0067] 在方块435,控制单元124自预测历史记录存储器108将预测历史记录132A?C 恢复给新的第3级处理。即为控制单元124使用新的第3级处理识别码以在预测历史记录 存储器108中寻找预测历史记录,以及根据第3级处理识别码自预测历史记录存储器108 载入预测单元109的预测历史记录132A?C。优选地,当微处理器100的功能性单元持续 处理自执行第0级至第3级的微编码的指令时,执行恢复预测历史记录存储器108的预测 历史记录132A?C。微编码的执行时间可为明显的时间周期,以及可能较执行预测历史记 录132A?C的恢复所需的时间还长,此为有利的,因为预测历史记录132A?C阵列并未被 存取(即写入)以累计预测历史记录或者进行预测(即读取),使得不用于预测历史记录 存储以及第〇级指令处理之间争用存储预测历史记录132A?C的存储阵列的存取的读取 端口以及写入端口,以处理仅进行恢复预测历史记录的第〇级指令。举例来说,在一实施例 中,微编码单元并未处理分支预测单元102,即为分支预测单元102并未对微编码指令进行 预测。举另一例来说,在一实施例中,环过渡(ringtransition)微编码并未存取系统存储 器;因此,数据预取单元104并不需要对环过渡微编码进行数据预取,以及存储冲突预测单 元106并不需要对环过渡微编码进行预测。有利的是,因为用以累计预测历史记录的恢复 所需的额外硬件的数量可被最小化,原因为不需要在存储阵列上包括额外的写入端口。流 程进入方块242。
[0068] 在方块242,预测单元109恢复累计所对应的预测历史记录132A?C,以及当微处 理器100处理指令时,利用预测历史记录132A?C进行动态预测。流程结束于方块242。
[0069] 有利的是,新的第3级线程的指令的处理并未影响与旧的第3级线程有关的预测 历史记录132A?C,将使得两个第3级线程具有较佳的预测准确度。
[0070] 其他实施例可为图3以及图4的实施例的有效结合,使得控制单元124存储以及 恢复与第〇级线程有关的预测历史记录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的指令的执 行。
[0071] 此外,尽管所述的实施例中微处理器100选择性地暂停预测历史记录的累计,以 及暂停利用预测历史记录进行预测以响应自一特权等级转换至不同的特权等级的线程,在 其他实施例中微处理器100也可选择性地暂停或者恢复预测历史记录的累计,以及使用预 测历史记录进行预测以响应线程在相同特权等级之间的转换。举例来说,微处理器100可 藉由检测不包括特权等级的改变的事件以检测线程转换,以及决定暂停或者恢复预测历史 记录的累计,并响应使用预测历史记录进行预测。举例来说,微处理器100可利用一特定IP 值以及在一些具有其他架构状态的特定值的情况下简单地检测指令的执行(例如子程序 调用(subroutinecall)或者恢复指令),例如通用目的寄存器值。举另一例子来说,微处 理器100可检测一序列的指令和(或)IP值。
[0072] 必须了解的是,在此所述有关本发明的实施例仅用以作为示范,并非以此为限。在 计算机相关领域的技术人员,在不脱离本发明的精神和范围内,可以广义的方式作适当的 更动和替换。举例来说,可致能软件,举例来说,装置的功能、制作、模块、模拟、叙述和(或) 测试,以及在此所述的方法。可藉由通用的程序语言(例如C、C++)、硬件描述语言(HDL) (包括VerilogHDUVHDL等)、或者其他可用的程序实现本发明。上述的软件可执行在任 意已知的计算机可执行媒体,例如磁带、半导体、磁碟或者光盘(例如⑶-R0M、DVD-R0M等), 网际网络、有线网络、无线网络、或者其他通信媒介。在此所述的装置以及方法的实施例可 包括在半导体知识产权内核中,例如微处理器内核(例如在HDL中实施或指定),以及在集 成电路的产品中转换为硬件。此外,在此所述的装置以及方法可通过硬件以及软件的结合 实现。因此,本发明并不能限制于此所述的任意实施例,本发明的范围以及精神根据后附的 权利要求书所定义以及限制。特别的是,本发明可通过通用目的计算机的微处理器装置实 现。最后,上述的实施例以足够的细节叙述使所属【技术领域】的技术人员能藉由上述的描述, 在不脱离本发明的精神以及范围内,可做些许结构上以及逻辑上的改变,以实施本发明所 揭露的系统以及方法。
【权利要求】
1. 一种微处理器,包括: 预测单元;以及 控制单元,用以: 控制上述预测单元累计由上述微处理器所执行的指令的特性的一历史记录,以及当上 述微处理器运行一第一线程时,根据上述历史记录进行与后续指令有关的预测; 检测从运行上述第一线程至运行与上述第一线程相异的一第二线程之间的第一转 变; 检测上述第二线程的识别码是否存在; 当运行上述第二线程,且上述第二线程的识别码不存在时,控制上述预测单元选择性 地暂停累计上述历史记录,以及选择性地暂停利用上述历史记录进行上述预测; 搜集有关上述第二线程的信息; 检测从运行上述第二线程至运行第三线程的第二转变; 登录并更新所搜集的与上述第二线程有关的信息;以及 控制上述预测单元恢复累计上述历史记录及恢复利用上述历史记录进行上述预测。
2. 如权利要求1所述的微处理器,其中上述控制单元还用以根据下列清单的一个或以 上以决定上述第二线程的上述识别码:造成上述第一转变的事件的类型、当检测到上述事 件时上述微处理器的架构状态、以及上述两者的结合。
3. 如权利要求2所述的微处理器,其中造成上述第一转变的上述事件的上述类型来自 下列清单:系统调用指令的执行、软件中断指令的执行、内部特权或者任务切或程序调用的 执行、以及特殊状况的检测。
4. 如权利要求2所述的微处理器,其中当检测到上述事件时,上述微处理器的上述架 构状态来自下列清单:一个或以上的上述微处理器的通用目的寄存器的值、一个或以上的 上述微处理器的模块特定寄存器的值、上述微处理器的指令指针寄存器的值、上述微处理 器的中断向量的值、以及上述的结合。
5. 如权利要求1所述的微处理器,其中当运行在上述第二线程时,不使用上述历史记 录进行预测,而进行静态预测。
6. -种操作方法,适用于微处理器,包括: 累计由上述微处理器所执行的指令的特性的历史记录,以及当上述微处理器运行第一 线程时,根据上述历史记录进行与后续指令有关的预测; 检测从运行上述第一线程至运行与上述第一线程相异的第二线程之间的第一转变 检测上述第二线程的识别码是否存在;;以及 当运行上述第二线程,且上述第二线程的上述识别码不存在时,选择性地暂停累计上 述历史记录,以及选择性地暂停利用上述历史记录进行上述预测; 搜集有关上述第二线程的信息; 检测从运行上述第二线程至运行第三线程的第二转变; 登录并更新所搜集的与上述第二线程有关的信息;以及 上述预测单元恢复累计上述历史记录及恢复利用上述历史记录进行上述预测。
7. 如权利要求6所述的操作方法,其中当运行在上述第二线程时,不使用上述历史记 录进行预测,而进行静态预测。
8. 如权利要求6所述的微处理器,还包括用以根据下列清单的一个或以上以决定上述 第二线程的上述识别码:造成上述第一转变的事件的类型、当 检测到上述事件时上述微处理器的架构状态、以及上述两者的结合。
9. 如权利要求8所述的微处理器,其中造成上述第一转变的上述事件的上述类型来自 下列清单:系统调用指令的执行、软件中断指令的执行、内部特权或者任务切或程序调用的 执行、以及特殊状况的检测。
10. 如权利要求8所述的微处理器,其中当检测到上述事件时,上述微处理器的上述架 构状态来自下列清单:一个或以上的上述微处理器的通用目的寄存器的值、一个或以上的 上述微处理器的模块特定寄存器的值、上述微处理器的指令指针寄存器的值、上述微处理 器的中断向量的值、以及上述的结合。
【文档编号】G06F9/38GK104484158SQ201410718900
【公开日】2015年4月1日 申请日期:2014年6月6日 优先权日:2013年6月10日
【发明者】R.E.虎克, T.派克斯, J.M.吉尔 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1