用于架构不同核的线程迁移支持的制作方法

文档序号:8460733阅读:183来源:国知局
用于架构不同核的线程迁移支持的制作方法
【技术领域】
[0001] 本发明的多个实施例总体涉及处理器架构,更具体地说,涉及用于在架构上不同 的处理器核之间迀移线程的技术。
【背景技术】
[0002] 半导体处理和逻辑设计方面的进展已允许可存在于集成电路器件上的逻辑数量 的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路演化为存在于单独的 集成电路上的多个核和多个逻辑处理器。处理器或集成电路通常包括单个处理器管芯,其 中,该处理器管芯可包括诸如核、线程和/或逻辑处理器之类的任意数量的处理元件。
[0003] 诸如芯片多处理器("CMP")系统之类的多处理器系统包括多个处理器核,其中的 每一个都能够独立地执行线程。同构的CMP系统包括全部具有相同的指令集架构(ISA)的 处理器核。如果功率是主要的设计约束,则全部为小型处理器核的系统似乎是可能的选择。 然而,该系统将遭受比全部是大型处理器核的系统更低的性能。对全部为小型处理器核的 系统的自然扩展是具有附加的大处理器核,该大处理器核用于在需要时提供附加的性能提 升,同时将高功率效率的小型处理器核用于系统执行的其余部分。
[0004] 在CMP系统中支持线程迀移。线程迀移是指线程从一个处理器核移动到另一处 理器核。常规的异构CMP系统通过将异构资源暴露于应用软件、操作系统(OS)、基本输入 /输出系统(BIOS)和/或低层级软件和/或固件(在本文中,将把它们简单地统称为"软 件"(SW))来支持线程迀移。在此类异构CMP系统中,线程迀移涉及SW层管理被暴露的异 构资源。SW和CMP系统硬件之间的该紧密耦合需要修改软件以使该软件适应各种异构的 CMP系统。
【附图说明】
[0005] 在所附附图的多个图中,以示例方式而非限制方式说明本发明的多个实施例,在 附图中,类似的参考标号指示类似的元件。
[0006] 图1是根据本发明的一个实施例的处理器或处理器核的执行流水线的框图。
[0007] 图2是根据本发明的一个实施例的、包括多个处理器核的处理器的框图框图。
[0008] 图3是示出线程迀移的处理器实现的方法的流程图。
[0009] 图4是示出图2中的迀移单元242的实施例的流程图。
[0010] 图5是示出图2中的迀移单元242的实施例的流程图。
[0011] 图6是示出图2中的迀移单元242的实施例的流程图。
[0012] 图7A示出根据本发明的一个实施例的高级向量扩展(AVX)指令格式。
[0013] 图7B示出根据本发明的另一实施例的高级向量扩展(AVX)指令格式。
[0014] 图7C示出根据本发明的又一实施例的高级向量扩展(AVX)指令格式。
[0015] 图8A是示出根据本发明的多个实施例的通用向量友好指令格式及其A类指令模 板的框图。
[0016] 图8B是示出根据本发明的多个实施例的通用向量友好指令格式及其B类指令模 板的框图。
[0017] 图9A是示出根据本发明的一个实施例的专用向量友好指令格式的框图。
[0018] 图9B是示出根据本发明的另一实施例的通用向量友好指令格式的框图。
[0019] 图9C是示出根据本发明的另一实施例的通用向量友好指令格式的框图。
[0020] 图9D是示出根据本发明的另一实施例的通用向量友好指令格式的框图。
[0021] 图10是根据本发明的一个实施例的寄存器架构的框图。
[0022] 图11A是示出根据本发明的多个实施例的有序流水线和示例性的寄存器重命名 的无序发布/执行流水线的框图。
[0023] 图11B是示出根据本发明的多个实施例的要包括在处理器中的有序架构核的实 施例和示例性的寄存器重命名的无序发布/执行架构核的框图。
[0024] 图12A是根据本发明的一个实施例的处理器核的框图。
[0025] 图12B是根据本发明的另一实施例的处理器核的框图。
[0026] 图13是根据本发明的多个实施例的处理器的框图。
[0027] 图14是根据本发明的一个实施例的系统的框图。
[0028] 图15是根据本发明的实施例的更具体的系统的框图。
[0029] 图16是根据本发明的另一实施例的更具体的系统的框图。
[0030] 图17是根据本发明的实施例的SoC的框图。
[0031] 图18是根据本发明的多个实施例的对照使用软件指令转换器将源指令集中的二 进制指令转换成目标指令集中的二进制指令的框图。
【具体实施方式】
[0032] 将参考以下所讨论的细节来描述本发明的各实施例和方面,并且所附附图将说明 各实施例。下列描述和附图是说明本发明的,并且不应当被解释为限制本发明。描述许多 具体的细节以提供对本发明的各实施例的透彻理解。然而,在某些实例中,不描述公知的或 寻常的细节,以便提供本发明的实施例的简洁的讨论。
[0033] 在本说明书中提到"一个实施例"或"实施例",意思是指结合该实施例所描述的特 定特征、结构或特性可以被包括在本发明的至少一个实施例中。在本说明书中的不同位置 出现短语"在一个实施例中"不一定都是指同一个实施例。
[0034] 根据本发明的一些实施例,提供架构和机制集以通过对SW透明的方式实现两个 架构上不同类型的核之间的无缝线程迀移。当由SW发起线程时,由第一处理器核(其在本 文中将被称为"源"核)执行该线程。在一个实施例中,在执行该线程期间,系统确定应当 将该线程迀移到第二处理器核(其在本文中将被称为"目标"核)。在一个实施例中,由系 统硬件(其在本文中将被简称为"硬件")完成迀移的确定,而没有SW的任何干预。在一个 实施例中,该硬件通过唤醒该目标核(即,使该目标核上电)来发起线程迀移程序。该硬件 也可例如通过将源核的架构状态保存在共享存储设备(例如,共享存储器)中来"停止"该 源核并保存其线程上下文。在一个实施例中,在目标核中恢复该源核的线程上下文,并且该 目标核基于来自共享存储器的架构状态,继续执行该线程。在一个实施例中,该硬件例如通 过使源核失电而将该源核置于节能模式。
[0035] 在一个实施例中,通过处理器核的内部存储元件的设置/状态(例如,寄存器设 置)来确定该处理器核的架构状态。在一个实施例中,在目标核中恢复线程上下文是指将 已经被保存在共享存储器中的、源核的内部存储元件的设置/状态复制到目标核的内部存 储元件(例如,寄存器等)中。在一个实施例中,按照对SW透明的此类方式在目标核中恢 复该线程上下文。例如,可在没有任何SW干预或SW不知晓的情况下将源核的架构状态迀 移到目标核。在一个实施例中,SW是指在系统之内或之外被执行的应用软件、OS、BIOS和/ 或任何其他软件和/或固件。
[0036] 图1是根据本发明的一个实施例的处理器或处理器核的框图。参考图1,处理器 100可表示任何种类的指令处理装置或处理元件。处理元件是指线程、进程、上下文、逻辑处 理器、硬件线程、核和/或共享对处理器的其他共享资源(例如,预留单元、执行单元、流水 线和更高层级的高速缓存/存储器)的访问的任何处理元件。物理处理器通常是指潜在地 包括诸如核或硬件线程之类的任意数量的其他处理元件的集成电路。核通常是指位于集成 电路上的、能够维持独立架构状态的逻辑,其中,每一个被独立地维持的架构状态与至少一 些专用执行资源相关联。在一个实施例中,处理器100可以是通用处理器。处理器100可 以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指 令字(VLIW)处理器中的任何处理器,可以是上述处理器的混合或者可以完全是其他类型 的处理器。处理器100也可表示一个或多个处理器核。
[0037] 可在不同的处理器中,出于不同目的,以不同的方式来实现处理器核。例如,此类 核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通 用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现 可包括:1)中央处理单元(CPU),其包括旨在用于通用计算的一个或多个通用有序核和/或 旨在用于通用计算的一个或多个通用无序核的;以及2)协处理器,其包括旨在主要用于图 形和/或科学(吞吐量)的一个或多个专用核。这样的不同处理器导致不同的计算机系统 架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的 管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,有时将此类协处理 器称为诸如集成图形和/或科学(吞吐量)逻辑之类的专用逻辑,或将其称为专用核);以 及4)芯片上系统,其可将所描述的CPU (有时被称为应用核或应用处理器)、以上描述的协 处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和 计算机架构。
[0038] 在一个实施例中,处理器100包括但不限于形成处理器流水线的指令取出单元 101、指令解码器102、重命名/分配器103、一个或多个执行单元104和引退单元105。可 由多个线程共享流水线或流水线的部分(例如,流水线的前端或指令解码部分102)。复制 架构状态寄存器(未示出),因此能够存储单独的架构状态/上下文以用于不同的逻辑处 理器。也可复制其他更小的资源(例如,重命名分配器逻辑103中的指令指针和重命名逻 辑)以用于多个线程。可通过分区操作来共享诸如重排序/引退单元105中的重排序缓冲 器、加载/存储缓冲器和队列之类的一些资源。而可以潜在地完全共享诸如通用内部寄存 器(例如,寄存器106)、页表基寄存器、低层级数据高速缓存(例如,高速缓存107)和数据 转换缓冲器(TLB)、执行单元104和无序单元(未示出)之类的资源。
[0039] 在一个实施例中,指令解码器102用于对从指令取出单元101接收到的指令进行 解码。这些指令可以是从集成在处理器100之内或与处理器100紧密关联的高速缓存存储 器107中取出的宏指令,或者可以经由系统总线从外部存储器中检索到。指令解码器102可 对这些宏指令进行解码,并且生成或输出反映指令或从指令导出的一个或多个微操作、微 代码、进入点、微指令、其他指令或其他控制信号。指令解码器102可以使用各种不同的机 制来实现。合适机制的示例包括但不仅限于,微代码只读存储器(ROM)、查找表、硬件实现、 可编程逻辑阵列(PLA)等。
[0040] 在一个实施例中,分配器和重命名单元103包括用于预留资源的分配器,诸如用 于存储指令处理结果的寄存器组。然而,线程可能能够无序执行,其中,分配器和重命名单 元103也预留其他资源(例如,用于追踪指令结果的重排序缓冲器)。单元130也可包括寄 存器重命名器,其用于将程序/指令引用寄存器重命名为处理器内部的其他寄存器。在此 类重命名级期间,将对外部或逻辑寄存器的引用转换为内部的或物理寄存器引用以消除由 寄存器重新使用而导致的依赖关系。
[0041] 执行单元104可包括算术逻辑单元或能够基于指令执行操作的另一类型的逻辑 单元。作为指令解码器102对指令进行解码的结果,执行单元104可接收反映这些指令或从 这些指令导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号。执 行单元104可由于指示一个或多个源操作数(SRC)的指令而操作,并且用于将结果存储在 指令所指示的寄存器集合的一个或多个目的地操作数OEST)中。执行单元104可包括用 于执行指令或从指令导出的其他控制信号并相应地执行操作的电路或其他执行逻辑(例 如,与硬件和/或固件相结合的软件)。执行单元104可表示诸如逻辑单元、算术逻辑单元 (ALU)、算术单元、整数单元等之类的任何种类的执行单元。
[0042] 处理器100进一步包括调度器和分派单元(未示出),其用于将指令调度并分派到 执行单元104,以便执行。事实上,根据指令/操作的类型可用性,在执行单元104上潜在地 调度这些指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指 令。执行单元的示例包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储 执行单元以及其他已知的执行单元。在一个实施例中,重排序/引退单元105包括诸如上 述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,这些组件用于支持被无序执行 的指令的无序执彳丁和稍后的有序引退。
[0043] 可将源操作数和目的地操作数中的一些或全部存储在存储资源106 (例如,寄存 器集合中的寄存器或存储器)中。寄存器集合可以是寄存器组以及潜在的诸如状态寄存 器、标志寄存器等之类的其他寄存器的部分。寄存器可以是可用于存储数据的存储位置或 设备。寄存器集合常常可在物理上与执行单元一起位于管芯上。寄存器可以是从处理器 外部或从编程者的视角来看是可见的。例如,指令可指定存储在寄存器中的操作数。各种 不同类型的寄存器可适用,只要它们能够存储并提供在本文中所述的数据。寄存器可以被 重命名,也可以不被重命名。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存 器重命名的动态分配的物理寄存器以及专用物理寄存器和动态分配物理寄存器的组合,等 等。或者,可将源操作数和目的地操作数中的一个或多个存储在除寄存器之外的,诸如系统 存储器中的位置之类的存储位置中。
[0044] 在一个实施例中,高速缓存107包括诸如高层级和/或低层级高速缓存之类的各 种高速缓存。较高层级或进一步远离的高速缓存用于对近期被取出和/或操作的元素进行 高速缓存操作。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离执行 单元。在一个实施例中,较高层级的高速缓存是第二级数据高速缓存。然而,较高层级的高 速缓存并不限于此,因为其可以是或可包括可被称为追踪高速缓存的指令高速缓存。可转 而在解码器之后耦合追踪高速缓存以存储最近被解码的指令。追踪高速缓存也潜在地包括 用于预测要执行/采用的分支的分支目标缓冲器和用于存储指令的地址转换条目的指令 转换缓冲器(I-TLB)。
[0045] 较低层级的数据高速缓存和数据转换缓冲器(D-TLB)可耦合至执行单元。数据高 速缓存用于存储最近被使用/操作的元素(例如,数据操作数),这些元素在存储器一致性 状态(例如,修改状态、排他状态和无效(MESI)状态)下潜在地被保持。D-TLB用于存储最 近的虚拟/线性至物理地址转换。之前,D-TLB条目包括用于向最近使用的虚拟存储器地 址提供代价不高的转换的虚拟地址、物理地址和其他信息(例如,偏移)。
[0046] 处理器100进一步包括总线接口单元(未示出)。总线接口单元用于与处理器 外部的,诸如系统存储器、芯片组、北桥或其他集成电路之类的设备通信。该存储器可专用 于该处理器,或与系统中的其他设备一起被共享。存储器的示例包括动态随机存取存储器 (DRAM)、静态RAM (SRAM)、非易失性存储器(NV存储器)和长期存储设备。通常,总线接口单 元包括用于在互连上传送和接收总线信号的输入/输出(I/O)缓冲器。互连的示例包括射 电收发机逻辑(GTL)总线、GTL+总线、双数据速率(DDR)总线、泵式(bumped)总线、差分总 线、高速缓存一致性总线、点对点总线、多分支总线或实现任何已知总线协议的其他已知的 互连。总线接口单元也可与更高层级的高速缓存通信。
[0047] 在一个实施例中,可将上述各个级组织成三个阶段。可将第一阶段称为有序前端, 其包括取出级101、解码级102和分配重命名级103。在该有序前端阶段,这些指令按照其 原始的程序顺序,经过流水线100继续进行。可将第二阶段称为无序执行阶段,其包括调度 /分派级(未示出)和执行级104。在此阶段,一确定每条指令的数据依赖关系并且执行单 元可用时,就调度、分派并执行每条指令,而不管在原始程序中指令的顺序位置。第三阶段 被称为有序引退阶段,其包括引退级105,在该引退级105中,按照指令原始的、顺序的程序 顺序来引退指令以保持该程序的完整性和语义,并且提供精确的中断模型。
[0048] 图2是示出根据本发明的一个实施例的系统200的框图。系统200包括但不 限于经由互联250彼此耦合的源核210、目标核220、共享存
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1