CN104503830B - 用于引导异构系统并呈现对称核视图的方法 - Google Patents
用于引导异构系统并呈现对称核视图的方法 Download PDFInfo
- Publication number
- CN104503830B CN104503830B CN201410098271.5A CN201410098271A CN104503830B CN 104503830 B CN104503830 B CN 104503830B CN 201410098271 A CN201410098271 A CN 201410098271A CN 104503830 B CN104503830 B CN 104503830B
- Authority
- CN
- China
- Prior art keywords
- core
- processor
- physical
- small
- group
- 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.)
- Active
Links
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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
描述了一组异构处理器架构和一种引导异构处理器的方法。根据一个实施例的处理器包括:一组大型物理处理器核;一组小型物理处理器核,相对于所示大型物理处理器核,该小型物理处理器核具有相对较低性能的处理能力和相对较低的功率使用;以及封装单元,用于启用自举处理器。自举处理器初始化同构物理处理器核,而异构处理器向系统固件接口呈现同构处理器的外观。
Description
本申请涉及并要求2013年3月15日提交的临时申请序列号61/801615的权益,该临时申请通过引用纳入于此。
技术领域
本发明一般涉及计算机处理器领域。更具体地,本发明涉及用于初始化并引导异构处理器的装置和方法。
背景技术
现代手持式设备由于其小尺寸而既具有功耗也具有散热约束,但消费者正期望要求日益进步的计算功率的日益进步的功能。为了既提供降低的功耗又提供增加的计算资源,可以采用异构处理器。异构计算架构提供优于同构架构的独特优点,因为一种以上类型的计算元件可用于执行计算任务,这允许较低强度的计算任务由功率高效的计算元件来执行,而较高强度的计算任务在更强大的计算元件上执行。
尽管异构计算架构的公知优点,但现实世界中存在用于CPU核的异构计算的很少示例。这些架构要求软件知道如何适当地调度任务到每一CPU核类型(在这种情况下,计算元件是CPU核)。随着硬件演进以及核类型变化,软件(例如,操作系统)非常难以跟踪可用的不同类型的CPU核以及如何高效地利用异构性。
附图说明
可结合附图从以下详细描述中获得对本发明的更好理解,其中:
图1A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图;
图1B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的框图;
图2是根据本发明的实施例的单核处理器和多核处理器的框图,具有集成的存储器控制器和图形器件;
图3示出了根据本发明一个实施例的系统的框图;
图4示出了根据本发明的实施例的第二系统的框图;
图5示出了根据本发明的实施例的第三系统的框图;
图6示出了根据本发明的实施例的片上系统(SoC)的框图;
图7示出了对比根据本发明实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图;
图8示出了异构核计算架构的一个实施例。
图9A和9B是根据一实施例的系统引导流程的概览的流程图。
图10是示出根据一实施例的在固件和微代码元件之间传递的数据和消息的时序图。
图11A-11B示出了具有隐藏的大型核和多个可见小型核的系统的一个实施例。
具体实施方式
在下面的描述中,出于说明目的,阐述了众多具体细节以便提供对以下描述的本发明的实施例的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的一些也可实施本发明的诸实施例。在其他实例中,众所周知的结构和设备以框图形式示出,以避免淡化本发明的实施例的底层原理。
示例性处理器架构和数据类型
图1A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图1B是示出根据本发明的实施例的要包括在处理器中的有序架构核示例性实施例以及示例性寄存器重命名、无序发布/执行架构核的框图。图1A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。假设有序方面是无序方面的子集,将描述无序方面。
在图1A中,处理器流水线100包括提取级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、回写/存储器撰写级118、异常处理级122、以及提交级124。
图1B示出处理器核190,该核190包括耦合到执行引擎单元150的前端单元130,并且两者耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代核类型。作为另一选项,核190可以是专用核,诸如举例而言,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元130包括耦合到指令高速缓存单元134的分支预测单元132,该指令高速缓存单元134耦合到指令翻译后备缓冲器(TLB)136,该指令TLB 136耦合到指令提取单元138,该指令提取单元138耦合到解码单元140。解码单元140(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码输入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元140可使用各种不同的机构来实现。合适机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核190包括微代码ROM或者存储用于特定宏指令的微代码(例如,在解码单元140中或者在前端单元130内)的其他介质。解码单元140耦合至执行引擎单元150中的重命名/分配器单元152。
执行引擎单元150包括耦合到退役单元154的重命名/分配器单元152、以及一组一个或多个调度器单元156。调度器单元156表示任何数量的不同调度器,包括:预约站、中央指令窗口等等。调度器单元156耦合至物理寄存器文件单元158。每一物理寄存器文件单元158表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元158包括矢量寄存器单元、写掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可提供架构矢量寄存器,矢量掩码寄存器以及通用寄存器。物理寄存器文件单元158与退役单元154重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和退役寄存器文件;使用未来文件、历史缓冲器、以及退役寄存器文件;使用寄存器映射和寄存器池等)的各种方式。退役单元154和物理寄存器文件单元158耦合到执行集群160。执行集群160包括一组一个或多个执行单元162以及一组一个或多个存储器存取单元164。执行单元162可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行。尽管一些实施例可包括专属于专用功能或功能集的大量执行单元,但是其他实施例可包括全部都执行所有功能的仅一个执行单元或者多个执行单元。调度器单元156、物理寄存器文件单元158、以及执行集群160被示为可能是多个单元,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有存储器存取单元164的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,而其他流水线可以是有序的。
一组存储器存取单元164耦合到存储器单元170,该存储器单元170包括耦合到数据高速缓存单元174的数据TLB单元172,该数据高速缓存单元174耦合到第二级(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元170中的数据TLB单元172。指令高速缓存单元134还耦合到存储器单元170中的第二级(L2)高速缓存单元176。L2高速缓存单元176耦合到一种或多种其他级别的高速缓存,并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可如下地实现流水线100:1)指令提取138执行提取和长度解码级102和104;2)解码单元140执行解码级106;3)重命名/分配器单元152执行分配级108和重命名级110;4)调度器单元156执行调度级112;5)物理寄存器文件单元158和存储器单元170执行寄存器读取/存储器读取级114;执行集群160执行执行级116;6)存储器单元170和物理寄存器文件单元158执行回写/存储器写入级118;7)各个单元可在异常处理级122中涉及;以及8)退役单元154和物理寄存器文件单元158执行提交级124。
核190可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维耳市MIPS Technologies的MIPS指令集、加利福尼亚州森尼维耳市的ARM holding的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核190包括支持打包数据指令集扩展(例如,AVX1、AVX2和/或以下描述的一些形式的一般矢量友好指令格式(U=0和/或U=1))的逻辑,从而允许很多多媒体应用使用的操作能够使用打包数据来执行。
应当理解,该核可支持多线程(执行两组或两组以上的平行操作或线程),并且可以包括分时多线程、同时多线程(其中单一物理核为每一线程提供物理核是同时多线程的逻辑核)、或者其组合(例如,分时提取和解码以及此后诸如在Hyperthreading技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元134/174以及共享的L2高速缓存单元176,但是替代实施例可具有用于指令和数据两者的单一内部高速缓存,诸如举例而言,第一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存的组合,该外部高速缓存在核和/或处理器外部。替代地,所有高速缓存可在核和/或处理器外部。
图2是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器200的框图。图2的实线框示出了处理器200,处理器200具有单个核202A、系统代理210、一组一个或多个总线控制器单元216,而可选附加的虚线框示出了替代的处理器200,具有多个核202A-N、系统代理单元210中的一组一个或多个集成存储器控制器单元214以及专用逻辑208。
由此,处理器200的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑208、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核202A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核202A-N的协处理器;以及3)具有作为大量通用有序核的核202A-N的协处理器。由此,处理器200可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或30个以上的核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器200可以是一个或多个基板的一部分,和/或在一个或多个基板上使用大量处理技术(诸如举例而言,BiCMOS、CMOS、或NMOS)中的任一种技术实现。
存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元206、以及耦合到一组集成存储器控制器单元214的外部存储器(未示出)。一组共享高速缓存单元206可包括一个或多个中级高速缓存(诸如第二级(L2)、第三级(L3)、第四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环形的互连单元212使集成图形逻辑208、一组共享高速缓存单元206、以及系统代理单元210/集成存储器控制器单元214互连,但是替代实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元206与核202A-N之间维持相干性。
在一些实施例中,核202A-H中的一个或多个核能够多线程。系统代理210包括协调和操作核202A-N的那些组件。系统代理单元210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调整核202A-N的功率状态必需的的逻辑和组件、以及集成图形逻辑208。显示单元用于驱动一个或多个外部连接的显示器。
核202A-N在架构指令集方面可以是同质的或者异质的,即核202A-N中的两个或两个以上核能够执行相同的指令集,而其他核可以能够只执行该指令集的子集或者不同的指令集。在一个实施例中,核202A-N是异构的并且包括下述“小型”核和“大型”核。
图3-6是示例性计算机架构的框图。在本领域中已知的用于膝上型个人计算机、台式个人计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够结合本文中公开的处理器和/或其他执行逻辑的各种各样系统或电子设备通常是合适的。
现在参考图3,所示出的是根据本发明一实施例的系统300的框图。系统300可包括一个或多个处理器310、315,这些处理器耦合到控制器中枢320。在一个实施例中,控制器中枢320包括图形存储器控制器中枢(GMCH)390和输入/输出中枢(IOH)350(它们可在分离的芯片上);GMCH 390包括耦合到存储器340和协处理器345的存储器和图形控制器;IOH 350使输入/输出(I/O)设备360耦合到GMCH 390。替代地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器340和协处理器345直接耦合到处理器310、以及单一芯片中的具有IOH 350的控制器中枢320。
附加处理器315的任选本质在图3中用虚线指示。每一处理器310、315可包括本文中所描述的处理核中的一个或多个,并且可以是一些版本的处理器200。
存储器340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器中枢320经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接395与处理器310、315进行通信。
在一个实施例中,协处理器345是专用处理器,诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢320可包括集成图形加速器。
按照包括架构、微架构、热、功耗特征等等优点的度量谱,物理资源310、315之间存在各种差别。
在一个实施例中,处理器310执行控制具有通用类型的数据处理操作的指令。协处理器指令可被嵌入这些指令内。处理器310识别如具有应当由附连的协处理器345执行的类型的这些协处理器指令。因此,处理器310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器345。协处理器345接受和执行接收到的协处理器指令。
现在参考图4,示出了根据本发明的一个实施例的第一更专用的示例性系统400的框图。如图4所示,多处理器系统400是点对点互连系统,并且包括经由点对点互连450耦合的第一处理器470和第二处理器480。处理器470和480中的每一个可以是某个版本的处理器200。在本发明的一个实施例中,处理器470和480分别是处理器310和315,而协处理器438是协处理器345。在另一实施例中,处理器470和480分别是处理器310和协处理器345。
处理器470和480分别被示为包括集成存储器控制器(IMC)单元472和482。处理器470还包括点对点(P-P)接口476和478作为其总线控制器单元的一部分;类似地,第二处理器480包括P-P接口486和488。处理器470、480可使用P-P接口电路478、488经由点对点(P-P)接口450交换信息。如图4所示,IMC 472和482使处理器耦合到相应的存储器,即存储器432和存储器434,这些存储器可以是在本地附连到各个处理器的主存储器的部分。
处理器470、480可各自使用点对点接口电路476、494、486、498经由各个P-P接口452、454与芯片组490交换信息。芯片组490可任选地经由高性能接口439与协处理器438交换信息。在一个实施例中,协处理器438是专用处理器,诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组490可经由接口496耦合到第一总线416。在一个实施例中,第一总线416可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图4所示,各种I/O设备414可连同总线桥418一起耦合到第一总线416,总线桥418将第一总线416耦合到第二总线420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者任何其他处理器之类的一个或多个附加处理器415耦合到第一总线416。在一个实施例中,第二总线420可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线420,包括例如键盘和/或鼠标422、通信设备427以及可以包括指令/代码和数据430的存储单元428(诸如盘驱动器或其它海量存储设备)。此外,音频I/O 424可耦合到第二总线420。注意,其他架构是可能的。例如,代替图4的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图5,示出了根据本发明的一个实施例的第二更专用的示例性系统500的框图。图4和5中的类似元件使用类似附图标记,且在图5中省略了图4的某些方面以避免混淆图5的其它方面。
图5示出处理器470、480可分别包括集成存储器和I/O控制逻辑(“CL”)472和482。因此,CL 472和482包括集成存储器控制器单元且包括I/O控制逻辑。图5示出不仅存储器432、434耦合到CL 472、482,而且I/O设备514也耦合到控制逻辑472、482。传统I/O设备515耦合到芯片组490。
图6示出根据本发明的实施例的SoC 600的框图。图2中的类似元件具有相似的附图标记。同样,虚线框是更多高级SoC上的任选的特征。在图6中,互连单元602耦合到:包括一组一个或多个核202A-N和共享高速缓存单元206的应用处理器610;系统代理单元210;总线控制器单元216;集成存储器控制器单元214;可包括集成图形逻辑、图形处理器、音频处理器以及视频处理器的一组或者一个或多个协处理器620;静态随机存取存储器(SRAM)单元630;直接存储器存取(DMA)单元632;以及用于耦合到一个或多个外部显示器的显示单元640。在一个实施例中,协处理器620包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文中所公开的机构的实施例可以硬件、软件、固件、或者这些实现方法的组合来实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图4所示的代码430之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以高级过程或面向对象编程语言实现,以与处理系统进行通信。如果期望,程序代码则还可以汇编或机器语言实现。实际上,本文中所描述的机构在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。”
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,这些非瞬态有形排列包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或者包含设计数据的诸如硬件描述语言(HDL)之类的非瞬态有形机器可读介质,该非瞬态有形机器可读介质定义本文中所描述的结构、电路、装置、处理器和/或系统特征。这些实施例还可被称为程序产品。
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目的地指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或者以其他方式转换成由核处理的一个或多个其他指令。指令转换器可以软件、硬件、固件、或者其组合实现。指令转换器可在处理器上、在处理器以外、或者部分在处理器上且部分在处理器以外。
图7是对比根据本发明实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是替代的指令转换器可以软件、固件、硬件、或者其各种组合实现。图7示出用高级语言702编写的程序可使用x86编译器704进行编译以生成x86二进制代码706,该x86二进制代码706可由具有至少一个x86指令集核716的处理器在本机上执行。具有至少一个x86指令集核716的处理器表示可通过兼容地执行或者以其他方式处理(1)因特尔x86指令集核的指令集的实质部分或者(2)以在具有至少一个x86指令集核的因特尔处理器上运行为目标的对象代码版本的应用或其他软件来执行与具有至少一个x86指令集核的因特尔处理器基本相同的功能以实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果的任何处理器。x86编译器704表示可操作用于生成在具有或者没有附加链接处理的情况下可在具有至少一个x86指令集核716的处理器上执行的x86二进制代码706(例如,对象代码)的编译器。类似地,图7以高级语言702示出了程序,该程序可使用替代指令集编译器708来编译以生成替代指令集二级制代码710,替代指令集二级制代码714可由不具有至少一个x86指令集核的处理器(诸如,具有执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行英国剑桥的ARM控股公司的ARM指令集的处理器)来天然地执行。指令转换器712用于将x86二进制代码706转换成可由不具有x86指令集核714的处理器在本机上执行的代码。该经转换的代码不可能与替代指令集二进制代码710相同,因为难以制作能够这样做的指令转换器;然而,经转换的代码将完成一般操作并且由来自替代指令集的指令构成。由此,指令转换器712表示通过仿真、模拟、或者任何其他处理允许不具有x86指令集处理器或核的处理器或者其他电子设备执行x86二进制代码706的软件、固件、硬件、或者其组合。
系统透明的异构计算
下文描述的本发明的各实施例通过向系统完全隐藏异构性并将所有异构性知晓逻辑和试探法集成在处理器内,克服了系统固件接口和操作系统(OS)中缺少对异构性的支持。然而,在常规CPU中,任务到各个核的分配是完全由软件(通常由OS)来完成的,在本发明的一个实施例中,这一分配被分解成两部分。软件继续将软件进程调度到所暴露的同构核,同时硬件在所暴露的核以及隐藏的异构核之间动态地交换线程。
通过只向系统暴露同构计算元件,硬件的异构本质完全向软件隐藏,包括系统固件接口(例如,BIOS、EFI、或UEFI)和OS以及几乎所有可能的应用级软件。该系统因而如同它在只具有同构核的处理器上运行那样引导和操作。这一实施例的处理器硬件包括用于将暴露给软件的计算元件中的每一个动态地映射到可用的隐藏物理计算元件中的一个或多个的逻辑。另外,该逻辑维护每一类型的处理器中的操作的一致性以及在各核类型之间转移工作的能力。硬件动态地选择物理计算元件的特定机制对该系统而言是透明的。
通过包括计算元件的异构选择,处理器硬件总是可以在具有非常不同类型的计算任务的非常不同的操作条件下非常高效地操作。例如,包含小型的功率高效的核以及大型的高性能核两者的CPU可被用来在功率有限(并且性能不是关键)的时候以及也在需要高性能(但功率不受限)的其他时候高效地运行软件。硬件内的计算元件的不同组合的选择基于哪些类型的任务需要在该系统上运行以及在哪些条件下运行的设计要求。
异构系统可以包含不同类型的计算元件,如处理器核、图形处理器单元(GPU)、以及固定功能加速器(用于加速诸如排序和循环等常见功能)。在以下阐明的本发明的各实施例中,异构系统可具有不同类型的处理器核——即,少量高性能核以及较大数量的小型的功率高效的核。然而,本发明的底层原理可被用于其他类型的计算元件。
图8示出了异构核计算架构的一个实施例,在此称为“Hetero-UP”800。在Hetero-UP 800配置中,小型的功率高效的核802被暴露给软件。在应用806需要附加性能时,并且在足够的功率预算可用时,虚拟到物理核映射可将线程从小型的功率高效的核802透明地切换到高性能的大型物理核804以代替该小型核来运行。在一个实施例中,封装单元805管理该组异构处理器核,以基于功率简档和计算吞吐量要求确定哪些处理器核被启用和禁用。出于描述以下异构核计算实现的引导过程的目的,该Hetero-UP 800实施例将被示为示例性的而非限制性的示例。
对于该Hetero-UP 800实施例,固件接口将只能够将平台处理器作为小型核来枚举。大型核将向软件隐藏,并且不能够被用常规枚举方法(如CPUID)枚举。然而,应当注意,异构核计算实现的其他实施例是可能的,如Hetero-Down配置,在该配置中,高性能大型物理核804是可见的,而小型的功率高效的核802是隐藏的。在这种情况下,固件接口将枚举大型核处理器。
在一个实施例中,专用软件工具,如处理器调试工具,能够标识可用物理核的类型,即使固件接口和OS不知道异构处理系统。该专用软件工具能够禁用或启用在各核之间切换的能力,并且可以执行诸如促使将线程从一个核类型切换到不同的核类型等动作。
尽管透明的异构计算造成处理器硬件的设计和开发的复杂度的增加,但它向固件接口和OS开发人员提供了多个优点。首先,固件接口、OS或应用软件不必知道CPU具有异构核(或其他计算元件),这意味着传统软件(包括操作系统)将继续与所描述的硬件一起工作。类似地,将来操作系统和软件应用将不必不断地更新来反映硬件的每一版本上的异构性的类型。
其次,虚拟到物理核映射逻辑所实现的所有试探法被包含在该硬件内,或包含在与该硬件绑在一起的软件或固件内,或由处理器供应商以其他方式提供。因此,将来的硬件设计可以创建更积极且新颖的计算元件选择,因为所有改变是对软件隐藏的并且不要求软件更新。
透明异构计算的引导流程
当前异构计算解决方案可能要求固件接口和操作系统(OS)两者都知晓具有相关联的软件复杂性的异构核。然而,呈现处理器接口使得固件接口和OS如同它们在单种类型的核上执行那样来操作是可能的,而它们实际上在一个或多个异构核上执行。一种方法使用微代码层来“枚举”其他类型的核的行为。一种附加方法利用特殊微代码和封装级硬件帮助将正在执行的线程转移到正确的执行核(例如,低功率或高性能)。
在系统启动时,暴露给该系统的那一类型的核确定由固件接口执行的引导流程。在固件接口初始化期间,隐藏的核是睡眠的,并且不能被该系统使用,除非使用专用微代码例程。一旦OS被初始化,其他核类型可被用来执行必要的初始化流程。如果OS是知晓异构处理系统的,则使得异构处理器核对OS可见,OS可在不同的处理器核类型中的每一个上直接调度任务。在一个实施例中,知晓异构的OS经由枚举或虚拟处理器(它们向正在执行的软件提供同构抽象层)将处理器的异构本质抽象到在该OS上运行的软件。
如果OS不是知晓异构处理系统的,则可以使用动态核切换功能来利用隐藏的核,该功能允许异构处理器在各核之间动态地切换正在执行的线程。使用该方法,软件相信它在该软件可见的那一类型的核上执行,而不管该软件实际上在哪一核上执行。为了进一步促进系统透明性,提供新的“经掩码的C6(Masked C6)”处理器状态,在该状态中,处理器核被置于低功率状态,其中处理器核消耗近乎零功率,并且其中使得处理器核对系统软件不可见。处于经掩码的C6状态中的处理器核不能被标准系统触发器访问,而是改为可经由专用微代码例程来访问。
为了简化以下解释,Hetero-UP 800系统被用来描述示例性引导流程,并且该系统可见的核是功率高效的小型核802,小型核802实现高性能大型物理核804的子集并消耗较少功率。然而,应当明白,各实施例不限于此,因为以下描述对核类型、它们中有多少存在于处理器上、以及哪一类型对固件接口和OS可见是不可知的。
图9A和9B是根据一实施例的Hetero-UP配置上的系统引导流程的概览的流程图。在图9a中开始,在901处,平台控制器中枢(PCH)通过将固件接口代码复制到微代码可访问的存储器空间(如,通用闪存(UFS))或某一其他处理器可执行的存储器空间中来准备系统引导。在902,封装硬件单元(例如,图8的封装单元805)使所有小型核除去复位,使得每一小型核对系统固件接口可见,并选择功率高效的小型核之一来变成自引导处理器(BSP)。在904,被选择变成BSP的小型核处理器更新并执行其微代码。BSP微代码包括启用将被用作应用处理器的附加小型核处理器指令。
BSP微代码可包括固件接口启动模块,BSP在第一引导步骤期间加载该模块。BSP经由使用处理器间中断(IPI)与其他处理器通信。可任选地,在910a、910b和910c,BSP使用处理器间中断(IPI)来触发每一小型核AP加载任何可用的预引导微代码。如在912a、912b以及912c处所示,每一小型核AP执行它们相应的应用处理器预引导微代码,这包括初始化机器检查支持。在一个实施例中,小型核AP没有处理的先前机器检查事件被记入日志,并且一旦启用了机器检查支持则新的机器检查事件被处理。在914a、914b以及914c处,每一小型核AP进入空闲状态,等待来自BSP的启动IPI(SIPI)。
与小型核应用处理器初始化同时地,具有小型核应用处理器的超集的大型核应用处理器被封装单元启用和初始化,如在908处所示。在一个实施例中,一个或多个大型核在硬件中是可用的,但经由内部融断被禁用,在这种情况下,大型核不被初始化。
在916,BSP准备启动高性能大型核AP,这包括可任选地加载该大型核预引导微代码的更新补丁。在918,大型核执行预引导微代码以使该核准备好用于指令执行。在920,大型核处理器完成预引导序列,并保存已准备好的处理器上下文。在928,大型核向BSP通知大型核初始化序列完成,并进入经掩码的C6状态。此时,BSC结束固件接口引导并准备OS启动,如在框930所示,并在图9b中进一步示出。
参考图9b,一旦在BSP上执行的系统固件接口模块完成,则BSP等待尚未完成的任何小型核AP加载它们的微代码更新,如在934处所示。在936,BSP向小型核AP中的每一个发送SIPI事件。在938,每一小型核AP完成它们的复位周期并进入标准C6状态。此时,小型核自引导处理器以及小型核应用处理器是可用的,每一个都对系统可见,而大型核保持处于经掩码的C6状态。在940,BSP将封装单元设置成启用异构的模式,这允许处理器将线程动态地切换到隐藏的异构核。
一旦固件接口的初始化完成,OS初始化例程就可以开始。如果OS不支持异构处理器系统,则OS可以在小型核AP上调度任务,并且处理器硬件可以将任务从小型核AP之一自动切换到大型核AP。从软件的观点看,该系统在完全同构的状态中运行。隐藏的大型核是经掩码的,并且没有在该系统上暴露软件可见状态。例如,在不支持异构处理器系统的OS上,隐藏的大型核不具有可见的高级可编程中断控制器ID,不接受软件发起的直接处理器间中断,并且不作为大型核处理机器检事件。在一个实施例中,通过枚举可见的同构核的指令集,异构处理系统的一个或多个隐藏的核被暴露给非知晓异构的OS。如果OS支持异构处理器系统,则该OS可以将各核类型中的每一个暴露给软件,并且可以在各核类型上调度软件任务。另外,知晓异构的OS可以控制用于在各核之间切换线程的硬件机制。
图10是示出异构处理系统引导序列的一个实施例的在固件和微代码元素之间传递的数据和消息的时序图。在一个实施例中,如在1002处所示,由封装单元固件1000执行的一组固件接口指令向被选择变成自引导处理器(BSP)1020的小型核处理器发送初始化BSP消息。封装单元1000触发微代码更新并加载1004 BSP 1020的触发器,其随后进行来启用将对该系统可见的其余的小型核应用处理器1040。包括微代码更新的初始化会合序列1024被发送给对该系统可见的每一小型核应用处理器1040,这使得每一小型核AP进入会合状态。
在会合状态中,多核或多处理器系统的每一处理器核将控制让出给单个核或处理器,该单个核或处理器可管理初始化、或为该系统中的所有处理器执行出错处理。响应于从BSP 1020接收到初始化会合序列2024,可见的小型核应用处理器1040进入微代码更新会合序列1046,以加载并执行每一处理器的微代码。一旦被初始化,每一小型核AP 1040就向BSP1020发送确认消息1035,并随后进入系统可见的空闲状态1048(例如,标准C6模式)。
与小型核应用处理器的初始化同时地,BSP 1020向一个或多个隐藏的大型核应用处理器1060发送初始化会合序列1026。该一个或多个大型核应用处理器1060进入微代码更新会合状态1068,以加载每一大型核1060的微代码。该一个或多个大型核应用处理器1060在完成时向BSP 1020发送确认消息1055,并进入经掩码的C6空闲状态1070,在该状态中,大型核应用处理器1060对固件接口和OS不可见。一旦所有核被初始化,BSP 1020将向封装单元1000通知所有核被初始化1010,并且该系统准备好加载OS。在一个实施例中,OS是知晓异构处理系统的,并且在OS初始化时,大型核应用处理器1060变得对OS可见,并且可用于连同小型核应用处理器一起的核切换操作。在一个实施例中,OS是不知晓异构处理系统的,并且该异构处理系统透明地启用大型核应用处理器利用,而无需OS的指导。
图11A-B示出了本发明的一个实施例在需要时如何透明地切换小型核与大型核。在一个实施例中,向系统固件接口隐藏异构性并将所有知晓异构性的逻辑和试探法集成在处理器内启用了对异构性的透明支持。在常规CPU中,将任务分配给核是由软件(通常由OS)独占地完成的。然而,在一个实施例中,这一分配被分解成两部分。软件继续将软件进程调度到处理器所暴露的同构“虚拟核”,而硬件动态地选择哪一物理核类型来实现给定虚拟核。旨在最大化吞吐量、性能、或其他度量的软件调度算法继续工作,同时硬件执行另一(透明的)优化层,其中在每一虚拟核上运行的进程/线程被定向到最适于在该虚拟核上运行的工作负荷类型的任一物理核。
如在图11A中所示,处理器硬件包含多个异构物理核PC0-PC4 1150,它们包括一组小型核PC0-PC3和一个大型核PC4。在这一实施例中,同构虚拟核VC0-VC3 1106被暴露给软件。虽然该系统内存在各物理核类型,但虚拟核各自被呈现为单种类型的核,在这种情况下是小型核类型。因此,基于软件的调度器1110(它可以是OS的一部分)调度线程1101以在所暴露的同构虚拟核1106中的每一个上执行,如同它在真实的同构多核处理器或多处理器系统中一样。虚拟到物理(V-P)映射逻辑1130根据一组映射规则1140并基于当前检测到的条件1141将每一虚拟核1120映射到一个或多个适当的物理核1150。如上所述,映射决策可以由映射决策逻辑1109执行,该逻辑可以用软件、硬件、固件、或其任何组合来实现。
在一个实施例中,存在虚拟核1106和小型核PC0-PC3之间的默认1:1映射。因此,小型核PC0-PC3实际上对基于软件的调度器是可见的。在一个实施例中,在系统具有低利用率(低于指定阈值)和/或在大多数小型核很忙(例如,具有指定阈值之上的高处理负载)时,这一默认映射被维护。例如,在一个实施例中,在该系统具有低利用率(例如,没有核超过60%活动)或在大多数小型核很忙(例如,总可用核的75%以上是超过60%活动的)时,这一默认映射被维护。
然而,在一个实施例中,在该系统具有大量空闲核(例如,所有可用核的50%以上)以及很少(一个或多个)负载很重、非常活跃的核时,映射决策逻辑1109所实现的试探法自动改变该映射,如同11B所示。在此,只有两个线程1101被调度器1110调度到虚拟核VC1和VC2,并且这些虚拟核中的至少一个(在该示例中是VC2)具有高于指定阈值的活动。因此,在该示例中,响应于映射决策逻辑1109所呈现的映射决策,V-P核映射逻辑1130将虚拟核VC2从小型物理核PC2重新映射到大型物理核PC4。
如在此所述的,指令可以指硬件的具体配置,如被配置成执行特定操作或具有预定功能的专用集成电路(ASIC)或者存储在嵌入非暂态计算机可读介质中的存储器中的软件指令。因而,附图中示出的技术可以使用存储在一个或多个电子设备(例如,终端站、网络元件等等)并在其上执行的代码和数据来实现。此类电子设备通过使用诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和暂态计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或通过网络与其他电子设备)存储和传递代码和数据。
另外,这类电子设备一般包括与一个或多个其它组件耦合的一组一个或多个处理器,所述一个或多个其它组件例如是一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)以及网络连接。该组处理器和其它组件的耦合一般是通过一个或多个总线和桥(也称总线控制器)达成的。存储设备和携带网络流量的信号分别表示一个或多个机器可读存储介质以及机器可读通信介质。
因此,给定电子设备的存储设备通常存储代码和/或数据以供在该电子设备的一个或多个处理器上执行。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。贯穿此详细描述,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实践本发明。在某些实例中,并不详细描述众所周知的结构和功能以免淡化本发明的主题。因此,本发明的范围和精神应根据所附权利要求书来判断。
Claims (26)
1.一种处理器,包括:
第一物理核,具有第一指令集和第一功耗水平,并用于以第一性能水平执行线程;
第二物理核,具有第二指令集和第二功耗水平,并用于以第二性能水平执行线程,所述第一和第二物理核处于动态的多核单元中;以及
虚拟到物理(V-P)映射电路,其耦合到所述第一和第二物理核,并用于经由虚拟核将所述第一物理核映射到系统固件接口并用于向所述系统固件接口隐藏所述第二物理核,从而软件不能将软件进程调度给被隐藏的所述第二物理核。
2.如权利要求1所述的处理器,其特征在于,还包括具有所述第一指令集和所述第一功耗水平的第三物理核,并且所述虚拟到物理(V-P)映射电路还用于将第一虚拟核映射到所述第一物理核并用于将第二虚拟核映射到所述第三物理核,以允许一组线程跨所述第一和第三物理核并行执行。
3.如权利要求2所述的处理器,其特征在于,所述虚拟到物理(V-P)映射电路还用于响应于检测到的与被执行的所述一组线程相关联的特性,对所述固件接口而言透明地将所述第二虚拟核映射到所述第二物理核。
4.如权利要求3所述的处理器,其特征在于,所述第一功耗水平低于所述第二功耗水平。
5.如权利要求4所述的处理器,其特征在于,所述第二性能水平高于所述第一性能水平。
6.如权利要求5所述的处理器,其特征在于,所述第二物理核是所述虚拟到物理(V-P)映射电路通过将所述虚拟核中的一个或多个映射到所述第二物理核而能由软件访问的。
7.如权利要求1-6中的任一项所述的处理器,其特征在于,单个物理核用于担当自引导处理器。
8.如权利要求7所述的处理器,其特征在于,所述第一物理核还用于担当所述自引导处理器。
9.如权利要求8所述的处理器,其特征在于,所述自引导处理器用于初始化所述第二物理核。
10.一种在异构处理器中执行的方法,所述异构处理器包括一组一个或多个小型物理处理器核,和相对于所述小型物理处理器核而言具有相对较高性能的处理能力和相对较高的功率使用的至少一个大型物理处理器核,
所述方法包括:
将所述一组一个或更多个小型物理处理器核暴露给系统固件接口;以及
向所述系统固件接口隐藏所述至少一个大型物理处理器核,从而软件不能将进程调度给被隐藏的所述至少一个大型物理处理器核。
11.如权利要求10所述的方法,其特征在于,还包括将线程从第一小型物理处理器核动态地切换到大型物理处理器核,以允许所述线程在所述大型物理处理器核上执行,其中所述切换对所述线程而言是透明的。
12.如权利要求10所述的方法,其特征在于,还包括:
将来自所述一组一个或多个小型物理处理器核的小型物理处理器核任命为自引导处理器;
由所述自引导处理器初始化所述一组一个或多个小型物理处理器核中的每一个;以及
由所述自引导处理器初始化所述至少一个大型物理处理器核。
13.如权利要求12所述的方法,其特征在于,所述小型物理处理器核通过虚拟处理器与小型物理处理器核之间的默认映射被暴露给软件。
14.如权利要求13所述的方法,其特征在于,所述至少一个大型物理处理器核向所述系统固件接口隐藏,并且通过将一个或多个虚拟核透明地映射到所述大型物理处理器核而被使得能由操作系统访问。
15.如权利要求14所述的方法,其特征在于,所述大型物理处理器核对支持具有多个指令集的处理器核的操作系统是可见的。
16.一种数据处理系统,包括:
一组小型物理处理器核;
一个或多个大型物理处理器核,其相对于所述小型物理处理器核而言具有相对较高性能的处理能力和相对较高的功率使用;
虚拟到物理(V-P)映射电路,其耦合至所述一组小型物理处理器核和所述一个或多个大型物理处理器核,并用于通过对应的一组虚拟核将所述一组小型物理处理器核暴露给系统固件接口并用于向所述系统固件接口隐藏所述一个或多个大型物理处理器核,从而软件不能将软件进程调度给被隐藏的所述一个或多个大型物理处理器核;以及
封装单元,其耦合至所述一组小型物理处理器核和所述一个或多个大型物理处理器核,并用于任命并初始化从所述一组小型物理处理器核选择的自引导处理器。
17.如权利要求16所述的系统,其特征在于,所述虚拟到物理(V-P)映射电路还用于将每一虚拟核映射到所述一组小型物理处理器核内的一物理核,以允许第一组线程跨所述小型物理处理器核并行执行。
18.如权利要求17所述的系统,其特征在于,还包括从所述物理处理器核之一选择的自引导处理器,其中所述自引导处理器用于:
初始化所述一组小型物理处理器核中的每一个;以及
初始化所述至少一个大型物理处理器核。
19.如权利要求18所述的系统,其特征在于,所述至少一个大型物理处理器核包括经掩码的空闲状态,其中当所述至少一个大型物理处理器核在该经掩码的空闲状态中时,所述至少一个大型物理处理器 核不被映射到虚拟核。
20.一种处理器,包括:
第一物理核,具有第一指令集和第一功耗水平,并用于以第一性能水平执行线程;
第二物理核,具有第二指令集和第二功耗水平,并用于以第二性能水平执行线程;
第三物理核,具有所述第一指令集和所述第一功耗水平,并用于以所述第一性能水平执行线程,所述第一、第二以及第三物理核处于动态的多核单元中;以及
虚拟到物理(V-P)映射电路,其耦合到所述第一、第二、以及第三物理核,并用于:
经由第一虚拟核将所述第一物理核映射到系统固件接口;
向所述系统固件接口隐藏所述第二物理核,从而软件不能将软件进程调度给被隐藏的所述第二物理核;
经由第二虚拟核将所述第三物理核映射到所述系统固件接口,以允许一组线程跨所述第一和第三物理核并行执行;以及
响应于检测到的与被执行的所述一组线程相关联的特性,对所述系统固件接口而言透明地将所述第二虚拟核映射到所述第二物理核。
21.如权利要求20所述的处理器,其特征在于,所述第一功耗水平低于所述第二功耗水平,并且所述第二性能水平高于所述第一性能水平。
22.如权利要求20所述的处理器,其特征在于,由所述虚拟到物理(V-P)映射电路通过将所述第一和第二虚拟核中的一个或多个映射到所述第二物理核,而使所述第二物理核能由软件访问。
23.如权利要求20所述的处理器,其特征在于,所述处理器的单个物理核用于担当自引导处理器。
24.如权利要求23所述的处理器,其特征在于,所述第一物理核还用于担当所述自引导处理器。
25.一种机器可读存储介质,其包括指令,所述指令被执行时使机器执行如权利要求10-15中任一项所述的方法。
26.一种计算系统,包括多个装置,所述多个装置分别用于执行如权利要求10-15中任一项所述的方法中的对应操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361801615P | 2013-03-15 | 2013-03-15 | |
US61/801,615 | 2013-03-15 | ||
US13/854,001 | 2013-03-29 | ||
US13/854,001 US9727345B2 (en) | 2013-03-15 | 2013-03-29 | Method for booting a heterogeneous system and presenting a symmetric core view |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104503830A CN104503830A (zh) | 2015-04-08 |
CN104503830B true CN104503830B (zh) | 2018-05-22 |
Family
ID=51534015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410098271.5A Active CN104503830B (zh) | 2013-03-15 | 2014-03-17 | 用于引导异构系统并呈现对称核视图的方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9727345B2 (zh) |
JP (1) | JP5945292B2 (zh) |
KR (1) | KR101773229B1 (zh) |
CN (1) | CN104503830B (zh) |
BR (1) | BR102014006299A8 (zh) |
DE (1) | DE102014003798B4 (zh) |
GB (2) | GB2547769B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9465432B2 (en) | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
US9535488B2 (en) | 2013-08-28 | 2017-01-03 | Via Technologies, Inc. | Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor |
US9792112B2 (en) | 2013-08-28 | 2017-10-17 | Via Technologies, Inc. | Propagation of microcode patches to multiple cores in multicore microprocessor |
US9600551B2 (en) * | 2013-10-24 | 2017-03-21 | Sap Se | Coexistence of message-passing-like algorithms and procedural coding |
US9507649B2 (en) * | 2014-05-29 | 2016-11-29 | Apple Inc. | Web browser for spoofing supported features |
WO2016134784A1 (en) * | 2015-02-27 | 2016-09-01 | Huawei Technologies Co., Ltd. | Systems and methods for heterogeneous computing application programming interfaces (api) |
US20170052799A1 (en) * | 2015-08-21 | 2017-02-23 | Microchip Technology Incorporated | Integrated Circuit Device With Selectable Processor Core |
US20170160782A1 (en) * | 2015-12-07 | 2017-06-08 | Mediatek Inc. | Share power source mechanism in a multicore processor system |
US10354033B2 (en) * | 2016-10-18 | 2019-07-16 | Intel Corporation | Mapping application functional blocks to multi-core processors |
CN108460282A (zh) * | 2017-02-22 | 2018-08-28 | 北京大学 | 一种基于异构多核芯片的计算机安全启动方法 |
US10599442B2 (en) * | 2017-03-02 | 2020-03-24 | Qualcomm Incorporated | Selectable boot CPU |
US10510133B2 (en) * | 2017-06-20 | 2019-12-17 | Think Silicon Sa | Asymmetric multi-core heterogeneous parallel processing system |
US20190004816A1 (en) * | 2017-06-29 | 2019-01-03 | Dell Products L.P. | Systems and methods for heterogeneous system on a chip servers |
WO2019056358A1 (en) * | 2017-09-25 | 2019-03-28 | Intel Corporation | EFFICIENT MEMORIZATION OF COMPUTER PROCESSOR DATA STRUCTURES IN COMPUTER MACHINE |
US11354135B2 (en) * | 2017-12-25 | 2022-06-07 | Intel Corporation | Pre-memory initialization multithread parallel computing platform |
CN108228189B (zh) * | 2018-01-15 | 2020-07-28 | 西安交通大学 | 一种隐藏异构编程多线程的关联结构及基于其的映射方法 |
CN109947569B (zh) * | 2019-03-15 | 2021-04-06 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
US11842202B2 (en) * | 2019-10-25 | 2023-12-12 | Intel Corporation | Apparatus and method for dynamic selection of an optimal processor core for power-up and/or sleep modes |
US20220058029A1 (en) * | 2020-08-24 | 2022-02-24 | Intel Corporation | Energy-efficient core voltage selection apparatus and method |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076770A (zh) * | 2004-09-28 | 2007-11-21 | 英特尔公司 | 根据可用并行数目改变每条指令能量的方法和设备 |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4377000A (en) * | 1980-05-05 | 1983-03-15 | Westinghouse Electric Corp. | Automatic fault detection and recovery system which provides stability and continuity of operation in an industrial multiprocessor control |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US5642506A (en) | 1994-12-14 | 1997-06-24 | International Business Machines Corporation | Method and apparatus for initializing a multiprocessor system |
AU5722296A (en) | 1995-05-01 | 1996-11-21 | Apple Computer, Inc. | A modular system utilizing interchangeable printed circuit b oard processor cards |
JP3005499B2 (ja) | 1997-06-26 | 2000-01-31 | 日本電気アイシーマイコンシステム株式会社 | 図形処理装置及び図形処理方法 |
JP3497988B2 (ja) | 1998-04-15 | 2004-02-16 | 株式会社ルネサステクノロジ | 図形処理装置及び図形処理方法 |
US6341347B1 (en) | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6970992B2 (en) | 1999-10-04 | 2005-11-29 | Intel Corporation | Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto |
US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US7996839B2 (en) | 2003-07-16 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Heterogeneous processor core systems for improved throughput |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US9264384B1 (en) | 2004-07-22 | 2016-02-16 | Oracle International Corporation | Resource virtualization mechanism including virtual host bus adapters |
US9058292B2 (en) | 2004-12-29 | 2015-06-16 | Intel Corporation | System and method for one step address translation of graphics addresses in virtualization |
US7353410B2 (en) | 2005-01-11 | 2008-04-01 | International Business Machines Corporation | Method, system and calibration technique for power measurement and management over multiple time frames |
US7600135B2 (en) | 2005-04-14 | 2009-10-06 | Mips Technologies, Inc. | Apparatus and method for software specified power management performance using low power virtual threads |
US7490254B2 (en) | 2005-08-02 | 2009-02-10 | Advanced Micro Devices, Inc. | Increasing workload performance of one or more cores on multiple core processors |
US7461275B2 (en) | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
US7516301B1 (en) | 2005-12-16 | 2009-04-07 | Nvidia Corporation | Multiprocessor computing systems with heterogeneous processors |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US7272517B1 (en) | 2006-04-25 | 2007-09-18 | International Business Machines Corporation | Method and system for providing performance estimations for a specified power budget |
US7822941B2 (en) | 2006-06-05 | 2010-10-26 | Oracle America, Inc. | Function-based virtual-to-physical address translation |
US7904676B2 (en) * | 2007-04-30 | 2011-03-08 | Hewlett-Packard Development Company, L.P. | Method and system for achieving varying manners of memory access |
US8281308B1 (en) * | 2007-07-23 | 2012-10-02 | Oracle America, Inc. | Virtual core remapping based on temperature |
US7818500B2 (en) * | 2007-11-01 | 2010-10-19 | Pubali Ray | Apparatus and method for using one core for RAID control in multi-core CPU |
US8010822B2 (en) * | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US20090309243A1 (en) | 2008-06-11 | 2009-12-17 | Nvidia Corporation | Multi-core integrated circuits having asymmetric performance between cores |
US8214675B2 (en) * | 2008-12-08 | 2012-07-03 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system, and method for power management utilizing multiple processor types |
US9507640B2 (en) | 2008-12-16 | 2016-11-29 | International Business Machines Corporation | Multicore processor and method of use that configures core functions based on executing instructions |
US8122269B2 (en) * | 2009-01-07 | 2012-02-21 | International Business Machines Corporation | Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores |
US8930953B2 (en) | 2009-01-16 | 2015-01-06 | International Business Machines Corporation | Dynamic checking of hardware resources for virtual environments |
US8386747B2 (en) | 2009-06-11 | 2013-02-26 | Freescale Semiconductor, Inc. | Processor and method for dynamic and selective alteration of address translation |
US8400458B2 (en) | 2009-09-09 | 2013-03-19 | Hewlett-Packard Development Company, L.P. | Method and system for blocking data on a GPU |
US8650426B2 (en) * | 2009-12-16 | 2014-02-11 | Qualcomm Incorporated | System and method for controlling central processing unit power in a virtualized system |
US8386749B2 (en) | 2010-03-16 | 2013-02-26 | Advanced Micro Devices, Inc. | Address mapping in virtualized processing system |
US8898664B2 (en) * | 2010-06-01 | 2014-11-25 | Microsoft Corporation | Exposure of virtual cache topology to a guest operating system |
US8869164B2 (en) | 2010-09-02 | 2014-10-21 | International Business Machines Corporation | Scheduling a parallel job in a system of virtual containers |
US8943334B2 (en) | 2010-09-23 | 2015-01-27 | Intel Corporation | Providing per core voltage and frequency control |
US9268611B2 (en) | 2010-09-25 | 2016-02-23 | Intel Corporation | Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores |
US8418177B2 (en) | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
US9092219B2 (en) | 2010-11-02 | 2015-07-28 | Advanced Micro Devices, Inc. | Method and system of sampling to automatically scale digital power estimates with frequency |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US9286257B2 (en) | 2011-01-28 | 2016-03-15 | Qualcomm Incorporated | Bus clock frequency scaling for a bus interconnect and related devices, systems, and methods |
EP2689336A1 (en) | 2011-03-25 | 2014-01-29 | BlackBerry Limited | Dynamic power management of cache memory in a multi-core processing system |
US8793686B2 (en) | 2011-06-08 | 2014-07-29 | Microsoft Corporation | Operating system decoupled heterogeneous computing |
CN106155265B (zh) | 2011-09-06 | 2020-03-31 | 英特尔公司 | 有功率效率的处理器体系结构 |
TW201319827A (zh) * | 2011-11-04 | 2013-05-16 | Inventec Corp | 執行多重作業系統的方法及電子裝置 |
US9442773B2 (en) | 2011-11-21 | 2016-09-13 | Qualcomm Incorporated | Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip |
US9372524B2 (en) | 2011-12-15 | 2016-06-21 | Intel Corporation | Dynamically modifying a power/performance tradeoff based on processor utilization |
US20130155081A1 (en) | 2011-12-15 | 2013-06-20 | Ati Technologies Ulc | Power management in multiple processor system |
US9304570B2 (en) | 2011-12-15 | 2016-04-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements |
US20130160003A1 (en) | 2011-12-19 | 2013-06-20 | Vmware, Inc. | Managing resource utilization within a cluster of computing devices |
US9720730B2 (en) | 2011-12-30 | 2017-08-01 | Intel Corporation | Providing an asymmetric multicore processor system transparently to an operating system |
US10185566B2 (en) | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US9009508B2 (en) * | 2012-08-28 | 2015-04-14 | Advanced Micro Devices, Inc. | Mechanism for reducing interrupt latency and power consumption using heterogeneous cores |
US9524012B2 (en) | 2012-10-05 | 2016-12-20 | Dell Products L.P. | Power system utilizing processor core performance state control |
US9639372B2 (en) | 2012-12-28 | 2017-05-02 | Intel Corporation | Apparatus and method for heterogeneous processors mapping to virtual cores |
US9672046B2 (en) | 2012-12-28 | 2017-06-06 | Intel Corporation | Apparatus and method for intelligently powering heterogeneous processor components |
US9329900B2 (en) | 2012-12-28 | 2016-05-03 | Intel Corporation | Hetergeneous processor apparatus and method |
US9448829B2 (en) * | 2012-12-28 | 2016-09-20 | Intel Corporation | Hetergeneous processor apparatus and method |
KR102055622B1 (ko) | 2013-01-10 | 2020-01-23 | 삼성디스플레이 주식회사 | 평판 표시 장치 및 평판 표시 장치의 구동 방법 |
-
2013
- 2013-03-29 US US13/854,001 patent/US9727345B2/en active Active
-
2014
- 2014-03-14 JP JP2014052039A patent/JP5945292B2/ja not_active Expired - Fee Related
- 2014-03-14 GB GB1700245.2A patent/GB2547769B/en active Active
- 2014-03-14 GB GB1404549.6A patent/GB2514236B/en active Active
- 2014-03-17 KR KR1020140031255A patent/KR101773229B1/ko active IP Right Grant
- 2014-03-17 BR BR102014006299A patent/BR102014006299A8/pt active Search and Examination
- 2014-03-17 DE DE102014003798.3A patent/DE102014003798B4/de active Active
- 2014-03-17 CN CN201410098271.5A patent/CN104503830B/zh active Active
-
2017
- 2017-08-08 US US15/672,254 patent/US10503517B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076770A (zh) * | 2004-09-28 | 2007-11-21 | 英特尔公司 | 根据可用并行数目改变每条指令能量的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US10503517B2 (en) | 2019-12-10 |
GB201700245D0 (en) | 2017-02-22 |
JP5945292B2 (ja) | 2016-07-05 |
US9727345B2 (en) | 2017-08-08 |
GB2514236B (en) | 2017-02-15 |
KR101773229B1 (ko) | 2017-08-31 |
GB2547769B (en) | 2018-04-25 |
DE102014003798B4 (de) | 2023-07-13 |
US20140281457A1 (en) | 2014-09-18 |
KR20140113600A (ko) | 2014-09-24 |
GB201404549D0 (en) | 2014-04-30 |
GB2547769A (en) | 2017-08-30 |
DE102014003798A1 (de) | 2014-09-18 |
JP2014225242A (ja) | 2014-12-04 |
US20180060078A1 (en) | 2018-03-01 |
BR102014006299A2 (pt) | 2015-11-03 |
CN104503830A (zh) | 2015-04-08 |
GB2514236A (en) | 2014-11-19 |
BR102014006299A8 (pt) | 2018-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503830B (zh) | 用于引导异构系统并呈现对称核视图的方法 | |
EP3274816B1 (en) | User-level fork and join processors, methods, systems, and instructions | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104050026B (zh) | 使对共享存储器存取的同步松弛的处理器、方法及系统 | |
CN105468333B (zh) | 具有条件指令的微处理器及其处理方法 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN108463826A (zh) | 用于在环转变期间保护栈的处理器扩展 | |
KR101744081B1 (ko) | 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리 | |
CN105320612A (zh) | 验证虚拟地址转换 | |
CN104615411A (zh) | 控制寄存器对应于异质指令集架构处理器 | |
KR20140113607A (ko) | 명령어 에뮬레이션 프로세서, 방법, 및 시스템 | |
CN104205042A (zh) | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 | |
KR20200138439A (ko) | 인터럽트들의 세트들을 구성하는 장치 및 방법 | |
US9361101B2 (en) | Extension of CPU context-state management for micro-architecture state | |
CN103218203A (zh) | 具有条件指令的微处理器及其处理方法 | |
TW201800948A (zh) | 提取資料至具保證完成指示快取階之處理器、方法、系統及指令 | |
CN108604107A (zh) | 用于基于指令类型调整最大时钟频率的处理器、方法和系统 | |
CN103270489B (zh) | 用于进行段寄存器读和写而不管特权等级的系统、装置和方法 | |
WO2019133172A1 (en) | Processor, method, and system for reducing latency in accessing remote registers | |
US10083033B2 (en) | Apparatus and method for efficient register allocation and reclamation | |
US11775336B2 (en) | Apparatus and method for performance state matching between source and target processors based on interprocessor interrupts | |
US20220413860A1 (en) | System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction | |
CN115858015A (zh) | 基于核心的推测性页故障列表 |
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 |