具有原生切换机制的非对称多核心处理器的制造方法
【专利摘要】本发明公开具有原生切换机制的非对称多核心处理器,包含一第一与一第二处理核心,以支援其指令集架构的特征集合中相对应的一第一与一第二特征子集合。受支援的该第一特征子集合少于指令集架构的特征集合的所有特征。受支援的第一与第二特征子集合互不相同,但其结合即为指令集架构的特征集合的所有特征。当一执行绪由第一核心执行时,第一核心检测执行绪是否尝试利用该指令集架构的特征集合中不包含于受支援的第一特征子集合的一特征,以做出指示由第一核心切换至第二核心用以执行执行绪的回应。此不受支援的特征可为一不受支援的指令或操作模式。此切换动作可在低效能/低功耗的核心过度使用或是在高功耗/高效能的核心利用率过低时执行。
【专利说明】具有原生切换机制的非对称多核心处理器
【技术领域】
[0001]本发明关于一种处理器,尤其是一种非对称多核心处理器。
[0002]本申请案主张2013年3月26日提出的美国临时专利申请案第61/805,225号“ASYMMETRIC MULT1-CORE PROCESSOR WITH NATIVE SWITCHING MECHANISM”的优先权,其内容整体引用为本发明的公开内容。
【背景技术】
[0003]总部位于英国剑桥的处理器授权商ARM近来提出一种称为“大小核(big.LITTLE)”的处理架构。举例来说,大小核系统的“大核(big)”可以是效能较高且功耗较高的CorteX-A15处理器,而与其匹配的“小核(LITTLE) ”可以是效能较低且功耗较低的Cortex-A7处理器。此系统可在依据执行绪的运算强度,在此二个处理器间进行切换。若是此执行绪具有高运算强度,此系统会切换至Cortex-A15处理器执行;反之,当执行绪不具有高运算强度时,此系统就会切换至Cortex-A7处理器执行。透过如此处理,就可以使整体效能接近Cortex-A15处理器的水准,而功耗则是介于处理器Cortex_A7与Cortex_A15之间。此设计特别适用于由电池供电且所需效能变化范围大的处理平台,例如智能手机。
[0004]在Peter Greenhalgh 着,于 2011 年九月发布的 ARM 白皮书 “Big.LITTLEProcessing with ARM CortexTM - A15&Cortex_A7”中,即指出 Cortex_A15 与 Cortex_A7 处理器的架构相同,并以此为大小核(big.LITTLE)的一重要范例。进一步来说,这两个处理器都是采用ARM v7A架构。(举例来说,Cortex-A7处理器系采用ARM v7A架构的虚拟与大型实体定址延伸(Virtualizat1n and Large Physical Address Extens1ns))基于此,这两个处理器都可以执行此架构下的所有指令,虽然部分指令的执行上会呈现不同的效能与功耗。此操作系统会决定切换处理器的时点,以试着满足当前执行的应用程序所需的效倉泛。
[0005]大小核(big.LITTLE)的一限制在于,两个处理器之间需要充分的架构相容性。此问题在于架构内的指令具要相当数量晶体管的配合的情况下,会变得更为显著。举例来说,就算是单指令多数据(SMD)指令,其最低硬件需求也相当可观,即使是小核(LITTLE)处理器,也具有简单的硬件来对于SMD指令内各别部分的数据进行排序。基本上,这些指令在应用程序内的出现情形,即高度相关于此应用程序对于高效能处理的需求。基于此,在小核处理器内的SMD简单硬件不大可能会有明显的使用时间,因为此硬件很快就无法满足应用程序的效能需求致使系统切换至大核(big)处理器处理。因此,小核处理器内的SMD简单硬件将会是浪费。
[0006]大小核(big.LITTLE)的另一限制在于,操作系统需要改变以在处理器切换时作出处理并调和此切换动作。但是,说服操作系统的开发者将这些为此特殊利用而设置的指令纳入其中是相当困难的,尤其对于嵌入式操作系统的开发者更是如此。
[0007]大小核(big.LITTLE)的另一个缺点在于,操作系统决定大小核处理器切换时点的部分会消耗当前正在运作的处理器的频宽而使此频宽无法为应用程序所使用。亦即,切换编码并非与应用程序平行执行,而是互为代替。
[0008]大小核(big.LITTLE)的另一个缺点在于,部分应用程序难以开发出有效的切换编码。亦即,除非是功耗显然过多(即大核处理器执行过久)或是效能过低(即小核处理器执行过久)的情况下,否则操作系统难以知晓切换时点来执行处理器的切换。
【发明内容】
[0009]本发明的一实施例提供一种处理器。此处理器具有一指令集架构(ISA),而此指令集架构具有一特征集合。此处理器包含一第一与一第二处理核心,用以支援该指令集架构的特征集合中,相对应的一第一与一第二特征子集合。受支援的该第一特征子集合少于该指令集架构的特征集合的所有特征。受支援的该第一与该第二特征子集合互不相同。受支援的该第一与该第二特征子集合的结合即为该指令集架构的特征集合的所有特征。当一执行绪由该第一核心执行时,该第一核心检测该执行绪是否尝试利用该指令集架构的特征集合中不包含于受支援的该第一特征子集合的一特征,以做出指示该处理器由该第一核心切换至该第二核心执行该执行绪的回应。
[0010]本发明的另一实施例提供一种由一处理器执行的方法。此处理器具有一指令集架构以及一第一与一第二处理核心。此指令集架构具有一特征集合。此方法包含:当一执行绪由该第一核心执行时,检测该执行绪是否尝试利用该指令集架构的特征集合中不包含于一第一特征子集合的一特征。该第一核心用以支援该第一特征子集合。受支援的该第一特征子集合系少于该指令集架构的特征集合的所有特征。该第二核心用以支援该指令集架构的特征集合中的一第二特征子集合。受支援的该第一与该第二特征子集合的特征互不相同。该第一与该第二特征子集合所支援的特征的结合即为该指令集架构的特征集合的所有特征。此方法亦包含:将该执行绪的执行切换至该第二核心而非该第一核心,以回应该检测步骤。
[0011]本发明的又一实施例提供一种处理器。此处理器包含至少二个处理核心,其中一个该处理核心执行一执行绪的功耗较低但效能亦较低。该处理器系检测一事件是否发生,以指示该执行绪的执行由该些核心中的一第一核心切换至该些核心中的一第二核心。该处理器在检测到该事件时,自动将该执行绪的状态由该第一核心移转到该第二核心以为回应,而非由执行于该第一核心的架构软件来指示该处理器将该执行绪的状态由该第一核心移转到该第二核心。
[0012]本发明的又一实施例提供一种由一处理器执行的方法。此处理器具有至少二个处理核心,其中一个该处理核心执行一执行绪的功耗较低但效能亦较低。此方法包含:利用该处理器检测一事件是否发生,以指示该执行绪的执行由该些核心中的一第一核心切换至该些核心中的一第二核心。此方法亦包含:在检测到该事件时,利用该处理器自动将该执行绪的状态由该第一核心移转到该第二核心以为回应,而非由执行于该第一核心的架构软件来指示该处理器将该执行绪的状态由该第一核心移转到该第二核心。
[0013]关于本发明的优点与精神可以藉由以下的发明详述及附图得到进一步的了解。
【专利附图】
【附图说明】
[0014]图1为本发明一非对称多核心处理器一实施例的方块不意图。
[0015]图2与图3为图1的处理器的运作的流程图。
[0016]图4为一非对称多核心处理器一实施例的方块不意图,其将切换管理单兀整合于非对称核心内。
[0017]图5为一非对称多核心处理器一实施例的方块不意图,其非对称核心系直接将执行绪状态视为切换执行的一部分来移转。
[0018]图6为图5的处理器的运作的流程图。
[0019]图7为本发明一非对称多核心处理器的另一实施例的方块不意图。
[0020]其中,附图标记:
[0021]处理器100
[0022]高特征核心102
[0023]低特征核心104
[0024]切换管理单元106
[0025]共享状态储存单元108
【具体实施方式】
[0026]名词定义
[0027]指令集架构,从微处理器家族的脉络来看包含⑴指令集;(2)指令集的指令所能存取的资源集(例如:记忆体定址所需的寄存器与模式);以及(3)微处理器处理指令集的指令的操作模式(例如:16位元模式、32位元模式、64位元模式、真实模式、保护模式、长模式(Long mode)、虚拟8086模式、相容模式(compatibility mode)、虚拟机器延伸模式(Virtual Machine extens1ns (VMX)mode)、以及系统管理模式等),而程序集、资源集包含于指令集架构的特征集合中。因为程序撰写者,如组译器与编译器的撰写者,想要产生可在一微处理器家族执行的机器语言程序时就需要此微处理器家族的ISA定义,而微处理器家族的制造者通常会将ISA定义于操作者操作手册中。举例来说,2009年3月公布的Intel64与 IA-32 架构软件开发者手册(Intel64and IA_32Architectures Software Developer’sManual)即定义Intel64与IA-32处理器架构的ISA。此软件开发者手册包含有五个章节,第一章是基本架构;第二 A章是指令集参考A至M ;第二 B章是指令集参考N至Z ;第三A章是系统编程指南;第三B章是系统编程指南第二部分,此手册系列为本案的参考文件。此种处理器架构通常被称为x86架构,本文中则是以x86、x86ISA、x86ISA家族、x86家族或是相似用语来说明。在另一个例子中,2010年公布的ARM架构参考手册,ARM v7_A与ARM v7-R版本Errata markup,定义ARM处理器架构的ISA。此参考手册系列为参考文件。此ARM处理器架构的ISA在此亦被称为ARM、ARM ISA、ARM ISA家族、ARM家族或是相似用语。其他众所周知的 ISA 家族还有 IBM System/360/370/390 与 z/Architecture、DEC VAX、Motorola68k、MIPS、SPARC、PowerPC与DEC Alpha等等。ISA的定义会涵盖处理器家族,因为处理器家族的发展中,制造者会透过在指令集中增加新指令、以及/或在寄存器组中增加新的寄存器等方式来改进原始处理器的ISA。举例来说,随着x86程序集架构的发展,其于Intel Pentium III处理器家族导入一组128位元的多媒体扩展指令集(MMX)寄存器作为单指令多重数据流扩展(SSE)指令集的一部分,而X86ISA机器语言程序已经开发来利用XMM寄存器以提升效能,虽然现存的X86ISA机器语言程序并不使用单指令多重数据流扩展指令集的XMM寄存器。此外,其他制造商亦设计且制造出可执行X86ISA机器语言程序的微处理器。例如,超微半导体(AMD)与威盛电子(VIA Technologies)即在x86ISA增加新技术特征,如超微半导体的3DN0W!单指令多重数据流(SMD)向量处理指令,以及威盛电子的Padlock安全引擎随机数产生器(random number generator)与先进译码引擎(advancedcryptography engine)的技术,前述技术都是采用x86ISA的机器语言程序,但却非由现有的Intel微处理器实现。以另一个实例来说明,ARM ISA原本定义ARM指令集状态具有4位元组的指令。然而,随着ARM ISA的发展而增加其他指令集状态,如具有2位元组指令以提升编码密度的Thumb指令集状态以及用以加速Java位元组码程序的Jazelle指令集状态,而ARM ISA机器语言程序已被发展来使用部分或所有其他ARM ISA指令集状态,即使现存的ARM ISA机器语言程序并非采用这些其他ARM ISA指令集状态。
[0028]指令集,系定义二进位制编码值的集合(即机器语言指令)与微处理器所执行操作间的对应关系。机器语言指令指示微处理器执行的操作如:将寄存器I内的运算元与寄存器2内的运算元相加并将结果写入寄存器3、将记忆体地址0x12345678的运算元减掉指令所指定的立即运算元并将结果写入寄存器5、依据寄存器7所指定的位元数移动寄存器6内的数值、若是零旗标被设定时,分支到指令后方的36个位元组、将记忆体地址OxAB⑶0000的数值载入寄存器8。因此,指令集系定义各个机器语言指令使微处理器执行所欲执行的操作的二进位编码值。需了解的是,指令集定义二进位值与微处理器操作间的对应关系,并不意味着单一个二进位值就会对应至单一个微处理器操作。具体来说,在部分指令集中,多个二进位值可能会对应至同一个微处理器操作。
[0029]执行绪,系一系列或是一串程序指令。执行绪在本文中又称为程序执行绪。在本文中,程序执行绪基于处理核心的架构程序计数器(例如x86指令指标(IP)或是AMR程序计数器(PC))提取自记忆体。相较之下,微码常式的提取则是基于处理核心的一非架构微码程序计数器。
[0030]架构软件,系一程序,执行绪系分发自此程序。举例来说,架构软件系一般软件应用程序,如文字处理软件或是试算表程序,以及系统软件,如基本输出入系统(B1S)或是操作系统。
[0031]微码,系基于处理核心的微码程序计数器提取自处理器的非架构记忆体的指令。相反地,架构软件的提取则是基于处理核心的架构程序计数器。
[0032]处理器所具有的指令集架构特征集合(ISA feature set)系一组由处理器支援的指令集架构所定义的特征。这些特征可包含处理器支援的指令集架构指令集、处理器支援的指令集架构操作模式的集合与/或处理器支援的指令集架构资源的集合。这些特征亦可包含处理器支援的不同分页模式。如前述,指令集架构的处理器家族中一个给定模型的处理器,所能支援的特征通常会少于此指令集架构定义的所有特征。
[0033]处理核心,或称核心,系一硬件装置,能够处理数据以回应程序执行绪的指令执行。这些指令系属于由包含此核心的处理器的指令集架构所定义的指令集。不过,如本文所述,处理核心可能无法支援(即无法执行)指令集架构的指令集内的所有指令。此外,处理核心可能无法支援(即无法运作于)指令集架构定义的所有模式。广泛地来说,处理核心可能无法支援指令集架构的所有特征,但可以支援指令集架构的特征集合内的一特征子集口 ο
[0034]执行绪状态,系核心执行执行绪需要的所有状态。执行绪状态亦可称为执行状态。核心执行执行绪所需要的状态系由此指令集架构与核心的微架构所规范。虽然各个核心所支援的指令集架构特征的子集合各有不同,且其微架构亦各有不同,不过,这些核心必须至少包含其执行执行绪所需的状态。以下描述仅为例示的目的。执行绪状态至少包含由指令集架构所定义的执行绪的架构状态。举例来说,架构寄存器(涵盖程序计数器、通用寄存器与描述核心组态所需的控制寄存器)就会被纳入执行绪状态。此外,非架构状态通常就不属于执行绪状态。非架构执行绪状态可包含储存微指令执行中间结果的暂时寄存器。
[0035]在本文对于非对称多核心处理器的描述内容中,对于不受其中核心支援的指令集架构特征,或是不包含于指令集架构特征集合中核心支援的特征子集合的指令集架构特征,若是此核心不执行此特征,执行绪就会尝试指令集架构所定义的利用并指示切换至另一个核心。在指令不受核心支援的情况下,核心接收到指令也不会去执行。举例来说,若是此核心不支援一 I/O指令(例如X86IN或是OUT指令),此核心就不会执行此IT指令的语意而指示一切换步骤切换至另一个核心。值得注意的是,因为此非对称多核心处理器的核心所支援的这些特征子集合的结合,就是整个指令集架构的特征集合,因而必定至少有一个核心支援此指令。在操作模式不受核心支援的情况下,即使收到指示,核心也不会进入或离开此特定操作模式,而是指示一切换步骤切换至另一个核心。举例来说,若是此核心不支援一特殊位元宽度的操作模式(例如x8664位元模式,亦称为长模式)而执行绪尝试进入此位元宽度模式(例如写入一指令集架构特定的值至指令集架构特定的控制寄存器),此核心不会进入此模式而指示一切换步骤切换至另一个核心。同样地,值得注意的是,因为此非对称多核心处理器的核心所支援的这些特征子集合的结合,就是整个指令集架构的特征集合,因而必定至少有一个核心支援此操作模式。
[0036]图1为本发明一非对称多核心处理器100 —实施例的方块不意图。此处理器100具有一指令集架构的特征组合。此指令集架构可以是一个既有的指令集架构,包含前述各个指令集架构,或是未来开发出来的指令集架构。
[0037]处理器100具有一高特征核心(high-feature core) 102 (或称高核心102)与一低特征核心(low-feature core) 104 (或称低核心104),各自稱接置一切换管理单元106与一共享的状态储存器108。相较于低特征核心104,高特征核心102在执行执行绪时具有较高效能但是也会消耗较多能量;反之,相较于高特征核心102,低特征核心104在执行执行绪时的效能较低但是消耗的能量也较少。在此理解下,此二核心102/104为非对称。功耗/效能的非对称主要是因为这两个核心102/104在微架构阶层的差异所致。举例来说,这两个核心102/104可具有不同尺寸的快取记忆体与/或不同的阶层式快取结构、依序(in-order)与非循序(out-of-order)执行、不同的分支预测机制、不同组成的执行单元、纯量与超纯量指令技术(superscalar instruct1n issue)、预测与非预测执行等。功耗/效能的差异并不会影响处理器100对执行绪的正确执行。所谓正确的执行绪执行,系指依据处理器100的指令集架构所给定的一起始状态,再由处理器100执行执行绪而产生执行结果。核心执行执行绪的效能系指核心执行执行绪指令的速度。效能可利用每秒的指令数量或其它适合的参数来量测。
[0038]此外,低核心104与高核心102的不对称亦显现于其支援指令集架构的不同特征子集合。不过,低核心104与高核心102的结合则可支援整个指令集架构,其具体实施如下所述。当此二个核心102/104的其中之一在执行一执行绪,此执行绪会尝试利用一不包含于核心102/104所支援的特征子集合的特征,切换管理单元106则会将执行绪的执行切换至另一个核心102/104,此切换动作包含将执行绪状态移转至另一个核心102/104,以下对此有更详细的说明。在一实施例中,高核心102所支援的特征子集合包含指令集架构的所有特征,而低核心104所支援的特征子集合少于指令集架构的所有特征。反之,在一实施例中,高核心102所支援的特征子集合系少于指令集架构的所有特征,而低核心104所支援的特征子集合的特征包含指令集架构的所有特征。此外,在一实施例中,高核心102所支援的特征子集合少于指令集架构的所有特征,低核心104所支援的特征子集合亦少于指令集架构的所有特征。不过,前述各实施例中,二个特征子集合的结合就等同于指令集架构的所有特征。前述各实施例中,二个核心102/104中的至少一个所支援的特征少于指令集架构的所有特征,因此,相较于二个核心102/104都支援整个指令集架构的特征集合,本发明的实施例能进一步降低核心功耗。
[0039]透过此方式,就理论上而言,选择由低特征核心104或是高特征核心102来执行执行绪至少部分在处理器设计的时候就已经决定。概括地说,高特征核心102所支援的指令集架构特征基本上是关于高效能,相反地,低特征核心104支援的特征则是关于低效能。如前述“减少”核心对于特征的支援,有助于了解何时切换执行绪的执行,而不需使用操作系统。
[0040]切换管理单元106系原生于处理器100,亦即,切换管理单元106处理器100的一部分,而非如传统方式架构于软件,如操作系统。在一实施例中,此原生切换管理单元106包含一“非核心”状态机器。在另一实施例中,此原生切换管理单元106包含一个单独的第三处理核心。此第三处理核心的功耗极低,只处理自己的编码,而这些编码与核心102/104所执行的编码分开。举例来说,此单独的切换管理单元106可包含一服务处理器,同时为处理器100处理除错与电源管理的服务。这样做的优点在于,此单独的切换管理单元106不需消耗当前处理核心102/104的频宽。在另一实施例中,如下文所述,切换管理单元106整合于低效能核心104与高效能核心102,而包含执行于核心102/104的微码。
[0041]就一实施例而言,除了在执行绪尝试利用正在执行的核心102/104所不支援的指令集架构特征而完成执行的切换外,此切换管理单元106亦会监测当前执行的核心102/104的利用率。当切换管理单元106检测到高特征核心102利用过低,它就会将执行绪的执行切换至低特征核心104。反之,当切换管理单元106检测到低特征核心104被过度使用,它就会将执行绪的执行切换至高特征核心102。相较于传统方式透过操作系统来切换,切换管理单元106具有潜力能更好地判断核心102/104的利用状态,而能更有效地与更快速地做出切换的决定。
[0042]共享状态储存单元108系供核心102/104使用,在切换执行绪的执行时,将执行绪状态的状态由一个核心102/104移转至另一个核心102/104。进一步来说,执行中的核心102/104系将自己的执行绪状态储存至共享状态储存单元108,用以在执行切换后的执行绪核心102/104可从共享状态储存单元108取得执行绪状态。就一实施例而言,此共享状态储存单元108系一私有、非架构的随机存取记忆体,例如一静态随机存取记忆体。此记忆体系由二个核心102/104所共享,并且,此二个核心102/104均可存取此记忆体。不过,其他类型的储存单元亦可适用于本发明。在另一实施例中,此共享状态储存单元108系系统记忆体。
[0043]图2是图1的处理器100的运作一实施例的流程图。此流程始于步骤202。
[0044]在步骤202中,非对称核心102/104中的第一核心,即第I图中的低核心104或高核心102,系执行一应用程序执行绪。接下来流程前进至步骤204。
[0045]在步骤204中,正在执行执行绪的第一核心102/104检测到执行绪正在尝试利用指令集架构的特征集合中不受此第一核心102/104支援的一特征。亦即,此特征不包含于指令集架构的特征集合中支援此第一核心102/104的子集合。依据此不受支援的特征的特性,此第一核心102/104可透过不同方式检测此不受支援的特征。举例来说,指令解码器对不受第一核心102/104支援的指令进行解码、或是执行单元可检测指令尝试存取不受第一核心102/104支援的控制寄存器或一特殊控制寄存器位元或栏位,例如将核心102/104置于指令集架构定义的一特殊操作模式。接下来前进至步骤206。
[0046]在步骤206中,因应步骤204的检测步骤检测到执行绪尝试使用不受支援的特征,此第一核心102/104会停止执行执行绪。举例来说,若是指令解码器将一不受支援的指令解码,它会设陷(trap)于一微码常式以处理非法指令例外,此微码常式会停止此执行绪的后续指令的执行。在另一个例子中,若是执行单元检测到一指令尝试存取一不受支援的控制寄存器或其位元或其栏位,它就会设陷于一微码常式以停止此执行绪的后续指令的执行。接下来前进至步骤208。
[0047]在步骤208中,第一核心102/104指示处理器切换至第二核心102/104来执行执行绪。在一实施例中,由如步骤206所述的微码常式指示此切换动作。在另一实施例中,可由第一核心102/104的一硬件状态机指示此切换动作。就一实施例而言,此第一核心102/104传送信号至切换管理单元106以指示此切换的需求。接下来前进至步骤212。
[0048]在步骤212中,此切换管理单元106指示第一核心102/104储存执行绪的状态。就一实施例而言,此切换管理单元106传送信号至第一核心102/104以通知其储存执行绪状态。接下来前进至步骤214。
[0049]在步骤214中,第一核心102/104储存执行绪状态至共享状态储存单元108。除了执行绪状态,此第一核心102/104亦可转移其它不是第二核心102/104执行执行绪所必须,但能加快第二核心102/104执行执行绪的速度的状态,例如第一核心102/104的一个或多个快取记忆体的部分或全部的内容。接下来前进至步骤216。
[0050]在步骤216中,切换管理单元106指示第二核心102/104脱离低功耗模式。这是因为在图2的操作流程的前一个事件的步骤228中,第二核心102/104扮演第一核心102/104的角色,而步骤228通知其进入低功耗模式。也就是说,第二核心102/104检测到执行绪尝试使用第二核心102/104不支援的一指令集架构特征,因而在步骤228由切换管理单元106通知第二核心102/104进入低功耗模式。进入低功耗模式时,核心所消耗的能量会少于其主动执行执行绪所消耗的能量。关于低功耗模式,举例来说:系对应于一个指示核心停止执行执行绪指令的模式;系停用连接到处理器的外部总线时钟的模式;核心停用其部分电路的时钟信号的模式;核心停止供电至其内部的部分电路的模式。此低功耗模式可包含广为人知的进阶组态与电源介面(Advanced Configurat1n and Power Interface, ACPI)的处理器状态,即C-state。就一实施例而言,切换管理单元106会传送信号至第二核心102/104通知其脱离低功耗模式。在一实施例中,此信号会导致一非架构中断而唤醒第二核心102/104,如回复其电源供应与时钟。此中断会调用一微码常式来执行与当前的低功耗模式相关的动作。接下来前进至步骤218。
[0051]在步骤218中,第二核心102/104脱离低功耗模式并进入一运作模式。在运作模式中,核心会执行指令。此运作模式可包含广为人知的进阶组态与电源介面的性能状态,即P-state。在一实施例中,此运作模式系可被程序化,例如可利用系统软件,透过处理器100的控制寄存器,来帮助调整处理器100的效能相对于功耗的特性。接下来前进至步骤222。
[0052]在步骤222中,切换管理单元106指示第二核心102/104取得执行绪状态并开始执行执行绪。就一实施例而言,切换管理单元106系传送信号至第二核心102/104,并由第二核心102/104的微码提供服务以产生一非架构中断。接下来前进至步骤224。
[0053]在步骤224中,第二核心102/104由共享状态储存单元108取得于步骤214由第一核心102/104储存于共享状态储存单元108的执行绪状态。在一实施例中,步骤222接收的中断会调用第二核心102/104的一微码常式来从共享状态储存单元108取得执行绪状态。接下来前进至步骤226。
[0054]在步骤226中,切换管理单元106指示第一核心102/104进入低功耗模式。在一实施例中,此低功耗模式系可程序化,例如可利用系统软件,透过处理器100的控制寄存器,从第一核心102/104支援的多个低功耗模式取得,以利调整处理器100的效能相对于功耗的特性。接下来前进至步骤228。
[0055]在步骤228中,第一核心102/104进入步骤226指示的低功耗模式。此流程终止于此。
[0056]值得注意的是,虽然图2的各个步骤有其先后顺序,不过,部分步骤可以不同的顺序或是与其他步骤同时进行。举例来说,若是重视降低功耗更甚于提升效能,可将步骤222与226的顺序对调。又,在一实施例中,步骤216的操作可以发生于步骤214完成前,而使步骤214与218大致同时进行以更快速地使第二核心102/104执行执行绪。相同地,在一实施例中,步骤226的操作可以发生于步骤224完成前,而使步骤224与228大致同时进行以降低功耗。此外,若是重视降低功耗更甚于提升效能,可将步骤212与216的顺序对调。
[0057]图3为图1的处理器100的运作另一实施例的流程图。此流程始于步骤302。
[0058]在步骤302中,图1的二个非对称核心102/104中的一第一核心正在执行一应用程序执行绪,此第一核心可为低核心104或高核心102。接下来前进至步骤304。
[0059]在步骤304中,切换管理单元106检测到核心102/104的利用率已经高于一相对应的切换至高核心或是低于一相对应的切换至低核心的临界值。也就是说,若是低核心104正在执行,切换管理单元106检测到利用率高于一临界值,即表示低核心104过度使用,切换至高核心102执行较为有利;反之,若是高核心102正在执行,切换管理单元106检测到利用率低于一临界值,即表示高核心102的利用率太低,切换至低核心104执行较为有利。就一实施例而言,此切换至高核心的临界值大于切换至低核心的临界值,其提供磁滞效应以避免切换过于频繁。就一实施例而言,此关于核心利用的临界值可被程序化,如利用软件程序来协助调整核心切换的逻辑运算。
[0060]核心102/104的利用率系一个指标用来量测执行执行绪时核心的使用量。利用率可透过多种方式进行量测。在一实施例中,利用率基于指令引退率来计算。核心102/104可包含一计数器以累计给定时钟周期内引退指令的数量,并且周期性重置。在一实施例中,利用率系基于运作模式相较于不运作模式所耗费的时间。在运作模式中,核心102/104会执行指令,但在不运作模式则否。举例来说,不运作模式可对应或包含前述低功耗模式,如中止执行、停用时钟、停用电源等,就如同进入CO以外的其他C-state。核心102/104可包含一计数器,以计算在运作模式下所耗费的时间以及在各个不运作模式下所耗费的时间。此核心102/104可包含自运行计数器,即使在时钟与/或电源停用的情况下都可运行,以确保能即时计算。就一实施例而言,可采用最近的预设时间周期来计算利用率,此预设时间周期系可程序化,如利用软件程序以便于切换演算法的协调。切换管理单元106可存取第一核心102/104的计数器以确认利用率。接下来流程由步骤304前进至步骤306。
[0061]在步骤306中,切换管理单元106指示第一核心102/104停止执行执行绪。就一实施例而言,切换管理单元106传送指令至第一核心102/104以停止执行绪的执行。切换管理单兀106中断第一核心102/104,并使第一核心102/104调用微码常式而使第一核心102/104如步骤308所述停止执行执行绪。接下来前进至步骤308。
[0062]在步骤308中,第一核心102/104停止执行执行绪。就一实施例而言,第一核心102/104获得一静止条件(quiescent condit1n),以供后续执行如图2的步骤214所述储存执行绪状态的步骤。接下来流程由步骤308前进至图2的步骤212以执行图2的步骤212至步骤228。
[0063]图4为一非对称多核心处理器100的一实施例的方块示意图,此实施例的切换管理单元整合于非对称核心102/104中。图4的处理器100大致类似于图1的处理器;不过,在图4的实施例中,切换管理单元106整合于核心102/104,而非一独立于核心102/104外的元件。此将切换管理单元106整合于核心102/104的实施例中,位于第一核心102/104内的部分切换管理单元106有效指示第一核心102/104执行步骤208所述的切换动作、指示第一核心102/104执行步骤212所述储存执行绪状态的步骤、执行步骤216所述通知第二核心102/104脱离低功耗模式的步骤、执行步骤222所述指示第二核心102/104取回执行绪状态并开始执行执行绪的步骤、以及执行如步骤228所述指示第一核心102/104进入低功耗模式的步骤。此外,就一实施例而言,无论此切换管理单元106系整合于核心内或是一独立元件,类似于图3的步骤304的运算可利用来确认是否存在过度使用或利用率过低的情形而需执行切换动作。在一实施例中,核心102/104具有硬件状态机,在执行执行绪的同时,亦可执行确认是否切换的运算。在另一实施例中,则是由微码来执行此确认是否切换的运算,如对于一周期性计时器中断所作的反应。又,此微码亦可在每一次核心102/104由运作模式转换至不运作模式、或是由不运作模式转换至运作模式而被调用时来确认利用率。虽然整合于核心的切换管理单元使用微码来确认是否执行切换动作,会消耗核心指令执行的部分频宽,不过此方法相较于传统方式利用操作系统来确认是否执行切换动作,在效能乃至于本文提及的其他面向上仍然有其优势。
[0064]图5为一非对称多核心处理器100 —实施例的方块不意图。此非对称核心102/104直接将执行绪状态视为切换执行的一部分来传送。图5的处理器100大致类似于图1的处理器100 ;不过,在图5的实施例中,处理器100并不具有图1的共享状态储存单元108,低核心104与高核心102直接将执行绪状态视为切换执行的一部分来传送。这在图6会有更详细的描述。
[0065]图6为图5的处理器100的运作的一实施例的流程图。图6的流程与图2在许多方面都相类似;不过,图6的流程省掉图2的步骤212与214,步骤208系直接前进至步骤216 ;此外,步骤222与224则是由步骤622与624取代,也就是说,步骤218系前进至步骤622,然后前进至步骤624,步骤624再前进至步骤226。
[0066]在步骤622中,切换管理单元106指示第一核心102/104将执行绪状态直接传送至第二核心102/104。除了传送执行绪状态,第一核心102/104也会传送其他非第二核心102/104执行执行绪所必要,但仍然有助于第二核心102/104执行执行绪的状态,例如第一核心102/104的一个或多个快取记忆体的部分或全部的内容。接下来前进至步骤624。
[0067]在步骤624中,第一核心102/104直接将执行绪状态储存于第二核心102/104。接下来流程前进至步骤226。
[0068]值得注意的是,图5与图6所述的直接储存执行绪状态的步骤可适用于具有独立的切换管理单元106的实施例(如图1所示)以及具有整合的切换管理单元的实施例(如图4所示)。
[0069]图7为一非对称多核心处理器100的一实施例的方块不意图。图7的处理器100类似于图1的处理器100,即低核心相较于高核心,其效能较低但消耗较少的能量;不过,在图7的实施例中,低核心104与高核心102均支援全部的指令集架构特征集合(不同于图1中低核心104与高核心102系支援指令集架构的不同的特征子集合)。在图7的实施例中,图2与图6所示的运作基本上是不相关的,也就是说,执行的切换并非由执行绪尝试执行一非支援特征所决定,不过,仍然是由原生的切换管理单元106来执行切换,而非如传统方式由操作系统来执行。因此,原生的切换管理单元106的优点系可被理解的。
[0070]本文所述的实施例的优点在于不需使用会消耗核心执行频宽的架构软件来确认切换是否需执行。其效能的优势需要在处理器设置额外硬件以确认切换执行来实现,不过,这些硬件会消耗额外能量。
[0071]本发明的实施例所提供的另一优点在于,利用处理器本身来检测切换的需求可以改善传统上使用系统软件处理的问题。具体来说,不需修改系统软件即可享有如本文实施例所述的非对称多核心处理器的优点,即降低功耗但维持接近于高核心的效能。这对于专属(proprietary)的操作系统特别有利。
[0072]本发明的实施例所提供的另一优点在于,因为低特征核心与高特征核心结合后可支援所有指令集架构特征,但个别仅支援此特征集合的一子集合,因此,相较于支援整个指令集架构特征集合,各核心各自消耗的能量可以降低。
[0073]虽然本文实施例所述的多核心处理器仅具有单一组非对称核心,不过,本发明不限于此。本发明的精神亦可适用于具有两个以上核心且其中至少一核心与其他核心不对称的实施例,以及具有多组非对称核心的实施例。
[0074]此外,虽然本文所述的实施例中,切换动作不是在(I)执行绪尝试使用核心不支援的特征,就是在(2)低核心被过度使用或高核心利用率过低时执行,不过,本发明并不限于此。本发明亦适用于,执行绪尝试执行一核心支持的特征,但此特征系高度相关于一效能需求与其他核心更密切相关的执行绪。举例来说,假设高核心正执行于其所支援位元宽度最宽的操作模式,而执行绪改变至位元宽度最窄的操作模式,此模式系与低效能需求高度相关;随后,切换至低核心的动作就会执行。在一实施例中,切换管理单元只会在高核心当前的利用率不会太大的情况下,即小于一可程序化预设临界值,使切换动作发生。
[0075]但以上所述,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求保护范围及发明说明内容所作的简单的等效变化与修改,皆仍属本发明专利涵盖的范围内。举例来说,软件可以执行本发明所述的装置与方法的功能、制造、形塑、模拟、描述以及/或测试等。这可由一般的程序语言(如C、C++)、硬件描述语言(HDL)包含Verilog HDL,VHDL等,或是其他既有程序来达成。此软件可以设置于任何已知的电脑可利用媒介,如磁带、半导体、磁盘、光盘(如CD-ROM、DVD-ROM等)、网络接线、无线或是其他通讯媒介。此处描述的装置与方法的实施例可被包含于一半导体智财核心,例如一微处理核心(如以硬件描述语言的实施方式)并且透过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包含硬件与软件的结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一般通用电脑的微处理器装置。最后,所属【技术领域】的技术人员利用本发明所公开的观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明的范围。
[0076]但以上所述,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求及发明说明内容所作的简单的等效变化与修改,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或申请专利范围不须达成本发明所公开的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻之用,并非用来限制本发明的权利范围。
【权利要求】
1.一种处理器,具有一指令集架构,其特征在于,该指令集架构具有一特征集合,该处理器包含: 一第一与一第二处理核心,用以支援该指令集架构的特征集合中,相对应的一第一与一第二特征子集合; 其中,受支援的该第一特征子集合少于该指令集架构的特征集合的所有特征; 其中,受支援的该第一与该第二特征子集合互不相同; 其中,受支援的该第一与该第二特征子集合的结合即为该指令集架构的特征集合的所有特征; 其中,当一执行绪由该第一核心执行时,该第一核心检测该执行绪是否尝试利用该指令集架构的特征集合中不包含于受支援的该第一特征子集合的一特征,以做出指示该处理器由该第一核心切换至该第二核心用以执行该执行绪的回应。
2.如权利要求1的处理器,其特征在于,相较于该第二核心,该第一核心执行该执行绪的功耗较少但效能较低。
3.如权利要求1的处 理器,其特征在于, 该受支援的第二特征子集合少于该指令集架构的特征集合的所有特征; 其中,当该执行绪由该第二核心执行时,该第二核心检测该执行绪是否尝试利用该指令集架构的特征集合中不包含于受支援的该第二特征子集合的一特征,以做出指示该处理器切换至该第一核心用以执行该执行绪的回应。
4.如权利要求1的处理器,其特征在于,该第一核心依据其于该执行绪中是否遭遇到该第一核心不支援的该指令集架构的一指令,以检测该执行绪尝试利用不包含于受支援的该第一特征子集合的该特征。
5.如权利要求1的处理器,其特征在于,该第一核心依据该执行绪是否尝试进入该第一核心不支援的该指令集架构的一操作模式,以检测该执行绪尝试利用不包含于受支援的该第一特征子集合的该特征。
6.如权利要求1的处理器,其特征在于,由该第一核心切换至该第二核心执行该执行绪的切换动作包含将该执行绪的状态由该第一核心移转到该第二核心,其中,在检测到该执行绪尝试利用该指令集架构的特征集合中不包含于受支援的该第一特征子集合的该特征时,该处理器自动执行该状态移转以为回应,而非由执行于该第一核心的架构软件来指示该处理器执行该状态移转。
7.如权利要求1的处理器,其特征在于,还包含: 一切换管理单元,用以检测该第二核心的利用率在执行该执行绪时是否低于一临界值,以指示该处理器由该第二核心切换至该第一核心执行该执行绪。
8.如权利要求7的处理器,其特征在于,该切换管理单元还用以检测该第一核心的利用率在执行该执行绪时是否高于一第二临界值,以切换至该第二核心执行该执行绪。
9.如权利要求7的处理器,其特征在于,该切换管理单元包含一第三核心,该第三核心异于该第一与该第二核心。
10.如权利要求7的处理器,其特征在于,该切换管理单元包含该第二核心的微码。
11.如权利要求1的处理器,其特征在于,在该第一核心指示该处理器切换至该第二核心执行该执行绪后,该第一核心进入一低功耗模式。
12.如权利要求11的处理器,其特征在于,在该第一核心进入该低功耗模式前,该第一核心储存该执行绪的一执行状态。
13.如权利要求12的处理器,其特征在于,在该第二核心执行该执行绪前,该第二核心取得由该第一核心的该执行绪所储存的该执行状态。
14.如权利要求13的处理器,其特征在于,在该第二核心取得该执行绪所储存的该执行状态前,该第二核心离开一低功耗模式。
15.一种由一处理器执行的方法,其特征在于,该处理器具有一指令集架构以及一第一与一第二处理核心,该指令集架构具有一特征集合,该方法包含: 当一执行绪由该第一核心执行时,检测该执行绪是否尝试利用该指令集架构的特征集合中不包含于一第一特征子集合的一特征,其中,该第一核心用以支援该第一特征子集合,其中,受支援的该第一特征子集合少于该指令集架构的特征集合的所有特征,其中,该第二核心用以支援该指令集架构的特征集合中的一第二特征子集合,其中,受支援的该第一与该第二特征子集合的特征互不相同,其中,该第一与该第二特征子集合所支援的特征的结合即为该指令集架构的特征集合的所有特征;以及 将该执行绪的执行切换至该第二核心而非该第一核心,以回应该检测结果。
16.如权利要求15的方法,其特征在于,还包含: 当该执行绪由该第二核心执行时,检测该执行绪是否尝试利用该指令集架构的特征集合中不包含于受支援的该第二特征子集合的一特征,其中,该第二特征子集合少于该指令集架构的特征集合的所有特征;以及 当该执行绪由该第二核心而非该第一核心执行时,若是检测到该执行绪尝试利用该指令集架构的特征集合中不包含于受支援的该第二特征子集合的该特征,将该执行绪的执行切换至该第一核心而非该第二核心。
17.如权利要求15的方法,其特征在于,该检测步骤包含检测是否于该执行绪中遭遇该第一核心不支援的该指令集架构的一指令。
18.如权利要求15的方法,其特征在于,该检测步骤包含检测该执行绪是否尝试进入该第一核心不支援的该指令集架构的一操作模式。
19.如权利要求15的方法,其特征在于,该切换步骤包含将该执行绪的状态由该第一核心移转到该第二核心,其中,在检测到该执行绪尝试利用该指令集架构的特征集合中不包含于受支援的该第一特征子集合的该特征时,该状态移转系由该处理器自动执行以为回应,而非由执行于该第一核心的架构软件来指示该处理器执行该状态移转。
20.如权利要求15的方法,其特征在于,还包含: 检测该第二核心的利用率在执行该执行绪时是否低于一临界值;以及 若是检测到该第二核心的利用率在执行该执行绪时低于该临界值,将该执行绪的执行由该第二核心切换至该第一核心,以回应该检测步骤。
21.一种处理器,其特征在于,包含: 至少二个处理核心,其中一个该处理核心执行一执行绪的功耗较低但效能亦较低; 其中,该处理器检测一事件是否发生,以指示该执行绪的执行由该些核心中的一第一核心切换至该些核心中的一第二核心; 其中,该处理器在检测到该事件时,自动将该执行绪的状态由该第一核心移转到该第二核心以为回应,而非由执行于该第一核心的架构软件来指示该处理器将该执行绪的状态由该第一核心移转到该第二核心。
22.如权利要求21的处理器,其特征在于,该至少二个处理核心集体支援该处理器的一指令集架构的一特征集合,其中,该处理器透过检测该执行绪尝试利用该指令集架构的特征集合中不受该第一核心支援的一特征,来检测该事件。
23.如权利要求21的处理器,其特征在于,该处理器透过检测该第一核心在执行该执行绪时,其利用率是否过低,来检测该事件。
24.—种由一处理器执行的方法,其特征在于,该处理器具有至少二个处理核心,其中一个该处理核心执行一执行绪的功耗较低但效能亦较低,该方法包含: 利用该处理器检测一事件是否发生,以指示该执行绪的执行由该些核心中的一第一核心切换至该些核心中的一第二核心;以及 在检测到该事件时,利用该处理器自动将该执行绪的状态由该第一核心移转到该第二核心以为回应,而非由执行于该第一核心的架构软件来指示该处理器将该执行绪的状态由该第一核心移转到该第二核心。
25.如权利要求24的方法,其特征在于,该至少二个处理核心系集体支援该处理器的一指令集架构的一特征集合,其中,该检测步骤系透过检测该执行绪尝试利用该指令集架构的特征集合中不受该第一核心支援的一特征,来检测该事件。
26.如权利要求24的处理器,其特征在于,该检测步骤系透过检测该第一核心在执行该执行绪时,其利用率是否过低,来检测该事件。
【文档编号】G06F9/30GK104077106SQ201410048503
【公开日】2014年10月1日 申请日期:2014年2月12日 优先权日:2013年3月26日
【发明者】罗德尼·E·虎克, 泰瑞·派克斯, G·葛兰·亨利 申请人:威盛电子股份有限公司