CN102934084A - 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统 - Google Patents
用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统 Download PDFInfo
- Publication number
- CN102934084A CN102934084A CN2011800276618A CN201180027661A CN102934084A CN 102934084 A CN102934084 A CN 102934084A CN 2011800276618 A CN2011800276618 A CN 2011800276618A CN 201180027661 A CN201180027661 A CN 201180027661A CN 102934084 A CN102934084 A CN 102934084A
- Authority
- CN
- China
- Prior art keywords
- code
- program code
- nuclear
- hot
- described program
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000008878 coupling Effects 0.000 title abstract description 4
- 238000010168 coupling process Methods 0.000 title abstract description 4
- 238000005859 coupling reaction Methods 0.000 title abstract description 4
- 238000006243 chemical reaction Methods 0.000 claims description 72
- 238000012544 monitoring process Methods 0.000 claims description 47
- 238000013461 design Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 27
- 238000005457 optimization Methods 0.000 claims description 25
- 238000013507 mapping Methods 0.000 claims description 15
- 230000007704 transition Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 31
- 230000003068 static effect Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- 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
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
本文中描述了用于将第一类型的处理器核与第二类型的协同设计的核耦合的装置和方法。监测程序代码在第一核上的执行,并标识该程序代码的热段。那些热段针对在协同设计的核上的执行而被优化,使得一旦随后遇到那些热段,则经优化的热段就在协同设计的核上执行。当协同设计的核正在执行经优化的热代码时,第一处理器核可以处于低功率状态以节省功率,或并行地执行其它代码。此外,冷代码的多个线程可在第一核上流水线化,同时冷代码的多个线程在协同设计的核上流水线化以实现最大性能。
Description
领域
本发明涉及处理器领域,具体涉及优化功率、性能效率。
背景
半导体处理和逻辑设计中的进步已允许集成电路器件上存在的逻辑数量增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到单个集成电路上存在的多个核、多个硬件线程以及多个逻辑处理器。处理器或集成电路典型地包括单个物理处理器管芯,其中该处理器管芯可包括任何数量的核、硬件线程或逻辑处理器。
集成电路上的数量不断增加的处理元件——核、硬件线程以及逻辑处理器——使得更多任务能并行地完成。然而,在一些情况下,采用全部无序核的处理器可能导致功率低效和/或性能低效。因此,已开发出一些硬件-软件协同设计的系统以抗衡该功率-性能效率问题。在该系统中,可利用一般的、简单的有序处理器,同时软件优化并调度程序以在该有序硬件上高效地运行。
然而,硬件-软件协同设计的系统通常与两个不利的影响相关联:(1)利用二进制转换器对代码的转换和/或优化可能会减缓具有短运行任务和小响应时间约束的一些应用(二进制转换脆弱性);以及(2)有序处理器对于更适合并行执行的一些风格的程序可能表现不佳(有序脆弱性)。
为了说明二进制转换(BT)脆弱性问题,检查用于执行Microsoft Excel应用的典型概况的示例。对于被执行的100亿个动态86指令,模拟表明23%的动态指令是来自静态指令,静态指令重复少于100,000次,可被称为冷代码(cold code)。如果这些x86指令利用二进制转换软件来解析和转换(具有用于转换/解析以及带有优化的性能增益的典型开销),则冷代码将比本机x86执行额外花费3.6倍的指令来运行。此外,转换导致整个10B指令额外执行1.4倍的指令。考虑所执行代码中的约25%是冷代码,则平均而言,转换开销将使冷代码运行慢4.4倍。而且使整个执行比本机执行慢1.7倍。
为了说明有序脆弱性,检查基准模拟期间的有序处理器的性能与无序处理器相比的示例。在同样配备的有序和无序(OOO)处理器上对多个程序的模拟期间,发现约大于40%的程序在OOO处理器上运行快1.57倍,而约40%的程序在有序处理器上运行快1.45倍。尽管这些模拟仅仅是说明性的,而且结果不同,但它们说明两个系统都潜在地包括功率和/或性能上的低效。
附图简述
本发明通过附图部分中的附图作为示例来说明,且不旨在受附图部分中的附图限制。
图1示出包括两个不对称核的处理器的实施例。
图2示出包括本机核、受软件管理核以及代码分配模块的处理器的实施例。
图3示出用于在核之间分配代码以实现最大性能和最大功率节省的处理器的实施例。
图4示出在无序核和有序核之间分配代码以实现最大性能和功率节省的方法的流程图的实施例。
图5示出在无序核和有序核之间分配代码以实现最大性能和功率节省的方法的流程图的另一实施例。
具体实施方式
在以下描述中,陈述了多个具体细节,诸如特定类型的处理器核、特定处理器配置、特定热代码区识别算法、用于存储已转换/优化的代码的特定结构、硬件/软件之间的任务的特定划分、特定处理器单元/逻辑等等的示例,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不需要采用这些特定细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如特定或替代的处理器体系结构、用于所描述算法的特定逻辑电路/代码、特定代码实现方式、特定二进制转换细节以及微处理器的其它特定操作细节,以避免不必要地遮蔽本发明。
本文中所描述的方法和装置是用于利用受软件管理核实现本机核,以实现最大性能和节能。具体而言,主要参考无序核和有序的协同设计核来讨论核之间的合作。然而,本文中描述的装置和方法不限于此,因为它们可按照在不对称核之间的代码的任何分配方式来实现。例如,可在实现唯一指令集体系结构(ISA)的两个无序核的情况下,利用本文中描述的代码分配方法和装置。此外,通常在硬件机制与代码/软件之间分离地讨论此类核之间的合作。然而,可利用硬件、软件和/或固件的任何混合或排它使用来实现下文中描述的方法和装置。
参考图1,示出了包括多个核的处理器的实施例。处理器100包括任何处理器,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或用于执行代码的其它装置。在一个实施例中,处理器100包括不同类型的至少两个核——核101和102。然而,处理器100可包括任何数量的处理元件。
在一个实施例中,处理元件指的是线程单元、线程槽、处理单元、上下文、逻辑处理器、硬件线程、核和/或任何其它元件,这些元件能够保持处理器的诸如执行状态或体系结构状态之类的状态。换言之,在一个实施例中,处理元件指的是能够独立地与代码(诸如软件线程、操作系统、应用或其它代码)相关联的任何硬件。典型地,物理处理器指的是集成电路,该集成电路潜在地包括任何数量的其它处理元件(诸如核或硬件线程)。
核通常指的是位于集成电路上的能够维持独立体系架构状态的逻辑,其中每个独立维持的体系架构状态与至少一些专用的执行资源相关联。与核相比,硬件线程典型地表示位于集成电路上的能够维持独立体系架构状态的任何逻辑,其中被独立维持的体系架构状态共享对执行资源的访问。如可以看到,当某些资源被共享而其它资源专属于一体系结构状态时,硬件线程与核的命名之间的界限交迭。不过,核和硬件线程通常被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
如图1所示的物理处理器100包括两个核,即核101和102。在此,核101和102被视为不对称核,即这些核具有不同的配置、功能单元和/或逻辑。在一个实施例中,核101包括无序处理器核,而核102包括有序处理器核。然而,核101和102可从任何类型的核中单独地选择,诸如本机核、受软件管理核、适于执行本机指令集体系结构(ISA)的核、适于执行转换指令集体系结构(ISA)的核、协同设计的核或其它已知核。不过,为进一步讨论,在下文中更详细地描述图1中示出的功能单元。
如所描绘,核101包括两个硬件线程101a和101b,两个硬件线程101a和101b也可称为硬件线程槽101a和101b。相比之下,核102包括一个硬件线程102a。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器100视为三个独立的处理器,即能够并发地执行三个软件线程的三个逻辑处理器或处理元件。替代地,软件实体可仅将处理器100视为具有两个独立的处理器——线程槽101a和101b,同时所描述的代码分配机制管理代码在核102上的执行。
此外,第一线程与体系结构状态寄存器101a相关联,第二线程与体系结构状态寄存器101b相关联,以及第三线程与体系结构状态寄存器102a相关联。如图所示,体系结构状态寄存器101a在体系结构状态寄存器101b中被复制,因此能够被存储用于逻辑处理器101a和逻辑处理器101b的各个体系结构状态/上下文。体系结构状态寄存器102a可以与寄存器101a、101b相同。或者替代地,寄存器102a可以是核102的体系结构所独有的。在核101中,也可复制用于线程101a和101b的其它较小资源(诸如指令指针和重命名分配器逻辑130中的余下逻辑)。诸如重排序器/隐退单元135中的重排序缓冲器、ILTB 120、载入/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据缓存、数据TLB 115、执行单元140、以及无序单元135的部分之类的其它资源潜在地被完全共享。
处理器100通常包括其它资源,其它资源可被完全共享、通过分区被共享、或专属于处理元件。在图1中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省去这些功能单元中的任一个,且可包括未描绘的任何其它已知的功能单元、逻辑或固件。如图所示,核101被示为简化的无序(OOO)处理器核。OOO核包括用于预测要执行/进行的分支的分支目标缓冲器120以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)120。
核101进一步包括耦合至取出单元120以用于解码所取出的元素的解码模块125。在一个实施例中,取出逻辑包括分别与线程槽101a、101b相关联的各个定序器。通常,核101与第一指令集体系结构(ISA)相关联,该第一指令集体系结构(ISA)定义/指定能在处理器100上执行的指令。在此,通常作为第一ISA一部分的机器码指令包括该指令的一部分(称为操作码),该指令引用/指定待执行的指令或操作。解码逻辑125包括由这些指令的操作码来识别这些指令并在流水线上传递所解码的指令以进行如第一ISA所定义的处理的电路系统。
在一个示例中,分配器和重命名器块130包括分配器,分配器用于保留资源(诸如用于存储指令处理结果的寄存器文件)。然而,线程101a和101b潜在地能够无序执行,其中分配器和重命名块130还保留其它资源,诸如用于跟踪指令结果的重排序缓冲器。单元130还可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序/隐退单元135包括诸如上述重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,用于支持无序执行的指令的无序执行和稍后的有序隐退。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于调度执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。也可包括与上述执行单元相关联的寄存器文件,以存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳跃执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
较低级的数据高速缓存和数据转换缓冲器(D-TLB)150耦合至执行单元140。数据高速缓存用于存储最近使用/操作的元素(诸如数据操作数),这些元素在存储器一致性状态下潜在地被保持。D-TLB用于存储物理地址转换的最近虚拟/线性。作为特定示例,处理器可包括页表结构,用于将物理存储器分割成多个虚拟页。
在一个实施例中,如上所述,核102包括有序的协同设计的核。因此,图1示出了有序核的简化流水线。该流水线包括取出单元121、解码单元126、执行单元141以及较低级数据高速缓存151。这些单元可按照与核101中的相应单元相似的方式来工作。然而,代替于核101中的潜在的无序执行,在有序核中,指令/操作按照程序顺序执行。在一个示例中,无序核101被称为本机核,而有序核102被称为协同设计的核。替代地,有序核102是本机核,而无序核101是协同设计的核。
在此,核101和102共享对较高级或进一步的高速缓存110的访问,较高级或进一步的高速缓存110用于缓存最近取出的元素。注意,较高级或进一步指的是高速缓存级增加或进一步远离执行单元。在一个实施例中,较高级高速缓存110是最后级数据高速缓存——处理器100上的存储器层次中的最后级高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存110不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存——一种类型的指令高速缓存——可耦合在解码器125之后,用于存储最近解码的跟踪。
在所描绘的配置中,处理器100还包括总线接口模块105,用于与处理器100外部的设备(诸如系统存储器175、芯片组、北桥或其它集成电路)通信。存储器175可专属于处理器100或与系统中的其它设备共享。存储器175的类型的常见示例包括动态随机存取存储器(DRAM)、静态RAM(SRAM)、非易失性存储器(NV存储器)以及其它已知的存储设备。
在一个实施例中,基于最大化性能和功率,在核101与102之间分配代码。例如,标识在两个核101、102中的一个上执行得更好的代码区域。因此,当遇到/检测到一个此类代码区域时,将该代码段分配至适当的核。此类区域的标识可由硬件、软件或其组合静态地进行(在执行代码之前,诸如通过程序概况分析)或动态地进行(在代码执行期间)。
在动态方法的一个说明性示例中,可基于一个处理器核的性能、功率节省、本机ISA、任何其它已知的处理考虑或其组合,将一个处理器核(诸如核101)选为默认核。然后,标识在核101上执行糟糕或将在核102上执行得更好的默认代码的区域。一旦之后遇到那些标识的代码段,则将它们分配至核102以供执行。注意,核102上的那些区域的执行可包括推测性的运行之前执行以使核101热身、在核102上对那些区域的串行执行以及依赖于那些区域的结果的在核101上对其它区域的执行、或那些区域与其它代码在核102上的并行或并发执行。
在静态方法的示例中,编译器或用户可标识在一个核或另一个核上执行得更好的代码段,诸如指令或分界。在此,核101执行代码,直到遇到这样的指令为止。然后响应于从核102的监测或仅仅核102的发起(触发),基于所遇到的指令在核102上执行所标识的代码段。
在一些实施例中,无论对于代码段在一个核上还是在另一个核上运行得更好的标识是动态还是静态进行的,都对本机代码进行转换和/或优化以在另一核上运行。例如,假设核101包括识别第一ISA类型的解码逻辑125,且核102包括识别第二ISA类型的解码逻辑126。在该情况下,如果第一ISA类型的代码区域将要在核102上执行,则该代码区域被转换成第二ISA类型以在核102上执行。注意,ISA类型之间的转换完全是说明性的。替代地,要在核101上执行的经优化的无序代码可被重新优化以在有序核102上执行。在该场景下,核102可包括与核101相同的ISA或其子集。不过,对代码执行优化以确保它在简单的一般的有序核上更高效地运行。
在核101与核102之间合作以高效地分配代码可在硬件、固件、软件或其组合中实现。进一步检查与标识代码区域的动态方法有关的上述示例,以说明合作机制的示例性实施例。在该示例中,按照本机格式的程序代码被优化以在无序核101上执行。在代码区域或程序代码的执行期间,可利用与核101和/或核102相关联的监测器硬件来确定与核101对该代码区域的执行相关联的性能。替代地,诸如软件、OS代码、微代码之类的代码或其它代码可在核102上执行,以确定/监测核101在执行该代码区域时的性能。如果确定该代码区域在核102上将更好地执行,则可利用硬件、软件、固件或其组合来转换和/或优化该代码区域以在核102上执行。
因此,当核101再次遇到该代码区域时——指令指针引用该代码区域、标识该代码区域的标识符指令被取出或解码、或检测到标识代码区域的另一方式,则该代码区域的经转换/优化版本在核102上执行。在一个实施例中,在该代码区域在核102上执行期间,核101可并发地执行其它代码区域以提高整体程序执行性能。注意,并发或并行执行也可包括不同软件线程在核101、102上的执行。
相反,线程可在核101、102上流水线化。作为该情况的示例,假设两个软件线程中的每一个包括多个代码阶段(热、冷,等等)。在此,来自第一线程的冷代码可在核101上执行,且当遇到热区域时,经转换的热区域在核102上执行。在经转换的热区域在核102上执行期间,来自第二线程的冷代码可在核101上执行。在核102上,当第一经转换的热代码执行完成时,然后可执行对来自第二软件线程的另一热区域的执行。如从该示例可以看到,代码的诸个阶段可在每一核上交织,从而得到流水线类型的执行。在另一实施例中,代码可相对于两个核依次执行,诸如一代码区域在核101上执行,经标识的代码区域在核102上执行,然后另一代码区域在核101上执行。
此外,即使当代码区域最初被标识为在核102上执行,也可监测该执行的性能。然后可考虑两个核上的性能,以确定哪个核最适合于执行该代码区域以实现最大性能和功率节省。例如,如果代码区被标识为作为经转换的代码在核102上执行,但核102上的性能低于核101上的性能(或核102上的性能增益未在价值上超过在核201上执行的功率节省),则该代码随后一经遇到就可被重新分配至核101。
图1示出示例性处理器的抽象的逻辑视图,具有不同模块、单元和/或逻辑的表示。然而,注意,利用本文中描述的方法和装置的处理器不一定需要包括所示出的单元。而且,处理器可省去所示的一些或全部单元。此外,上述讨论的大部分已参考无序处理器核和有序处理器核。然而,如上所述,两个处理器核可以是任何版本的不对称核,诸如本机核和受软件管理核。此外,图1仅描绘两个核;然而,处理器可包括任何数量的核,诸如同一类型的多个核以及类型各不相同的两个以上核。
图1还示出以点对点方式通过接口耦合至外部存储器控制器(控制器中枢170)的处理器的实施例。然而,许多现有处理器已经开始包括具有用于互连多个核的环形配置的处理器上存储器接口模块(芯片上模块),以及共享的高速缓存和其它接口。虽然未示出,但在一个实施例中,处理器100包括耦合核、高速缓存以及存储器控制器组件的环形互连。
在此,利用高速缓存代理来管理物理分配的高速缓存的片。作为示例,每个高速缓存组件管理用于并置核(高速缓存代理出于管理高速缓存的分配片的目的而与其相关联的核)的高速缓存的片。很大程度上类似于高速缓存代理处理环形互连上的业务量并与高速缓存片对接,核代理/组件用于处理业务量并与核对接。附加地,环形互连可耦合存储器控制器接口逻辑(MCIL)和/或其它控制器以与其它模块(诸如存储器和/或图形处理器)对接。
参考图2,示出了用于在两个核之间分配代码的代码分配模块的实施例。在一个实施例中,核201、202是不对称的核。例如,核201是适于不按照原始程序顺序来执行代码的无序(OOO)核,而核202是适于按照程序顺序来执行代码的有序(或串行)核。其它核类型的非穷举示例性列表包括:本机核、非本机核、受软件管理核、本机ISA核、经转换的ISA核、协同设计的核、推测性执行核以及非推测性执行核。
在一个实施例中,代码分配模块210基于最大化性能和功率节省在核201与202之间分配代码。如本文中所使用的模块可表示硬件、软件、固件或其组合。此外,模块、单元或逻辑可被集中在核或处理器中,也可遍及核或处理器而分布。例如,代码分配模块210可包括保存在与核201、核202、处理器200或包括处理器200的系统相关联的存储中的分配代码(诸如微代码或软件)。在此,分配代码在被执行时用于执行代码分配。相反,代码分配进程可由硬件、软件、固件或其组合来管理。
在一个实施例中,代码分配模块210用于标识程序代码的热部分。下文参考图4更详细地讨论程序代码。然而,作为讨论的这个章节的说明性示例,程序代码可包括要利用处理元件执行的任何代码,诸如二进制或机器代码。代码的热部分可表示基于各种考虑(诸如功率、性能、热量、其它已知的处理器度量或其组合)而言比起在一个核上执行更适合于在另一个核上执行的代码的一部分。在此,假设核201是用于程序代码的本机执行的默认核,则该程序代码的热部分的标识包括确定更适合于在核202上执行的代码的一部分。在核201是OOO核且核202是有序核的实施例中,代码的热部分可表示更适合在串行核202上执行的程序代码的热点,该串行核202潜在地具有用于执行高复现的段的更可用资源。作为示例,通过代码的该部分的复现模式(或一些其它已知的度量,诸如指令计数或循环计数)来标识该代码的热部分。通常,具有高复现模式的代码段可被优化为在有序核上更高效地执行。本质上,在该示例中,冷代码(低复现性)被分配给本机OOO核101,而热代码(高复现性)被分配给受软件管理的有序核102。
可静态地、动态地或以其组合方式来标识代码的热部分。在第一种情况下,编译器或用户可确定程序代码的段是热代码。在此,热代码标识符指令可将代码段划界为热,即要在核202上执行而不是在核101上执行的部分。在一个实施例中,核201中的解码逻辑适于解码来自程序代码的热代码标识符指令,该热代码标识符指令用于标识程序代码的热部分。这样的指令的取出或解码可触发代码的该热段在核202上的转换和/或执行。在该示例中,代码分配模块210包括用于检测热代码检测指令的解码逻辑。而且模块210还可包括用于执行转换/优化以及热代码在核202上的执行的其它硬件和/或软件。替代地,该热代码段可以被预先优化/转换以便在核202上执行。
在另一示例中,代码分配模块210动态地(在执行期间)标识程序代码中的热点/热区域。在一个实施例中,利用核201和/或核202中包括的硬件来确定程序代码在诸如核201之类的核上执行的概况。基于该概况的特性(与执行相关联的功率和/或性能度量),可将程序代码的区域标识为热代码。与硬件的操作类似,可在一个核(诸如核202)上执行监测代码,以执行对在另一核(诸如核201)上正在执行的程序代码的监测/确定概况。注意,这样的监测代码可被代码保持在处理器200内的核内的存储结构中,或被保持在包括处理器200的系统中。例如,监测代码可以是保持在核201、核202或处理器200的存储结构中的微代码或其它代码。此外,监测代码可由传统的执行单元以及处理器200上的其它固件或逻辑来执行。
作为又一示例,热代码的静态标识被作为提示。但是,对程序代码执行的概况动态确定能够忽略代码区域为热的静态标识;该类型的静态标识通常被称为编译器或用户提示,概况动态确定可在确定哪个核适合进行代码分配时考虑该编译器或用户提示。此外,作为概况动态确定的本质,将代码区域标识为热并不限制该代码段始终被标识为热。例如,假定程序代码在无序核201上执行。在核202上执行的监测器代码监测核201执行程序代码的段的性能水平。基于该实现方式,如果在核201上的性能被确定为比在核202上的性能足够低,和/或核201上的该代码段的复现模式足够高以预计可掩盖核转换开销,则该代码段被标识为热。在转换和/或优化之后,该代码段的经转换版本在核202上执行。与对核201上的执行的监测相似地,可诸如通过性能监测代码的执行而在核202上监测代码的经转换版本的执行。如果在核202上的性能低于在核201上的性能,则该代码段为热的标识可被动态地反转(热代码段可被重新标记为冷代码)。
在一个实施例中,一旦代码的段、点或区域被标识为热,则代码分配模块210对该热代码段进行优化和/或转换,以获得经优化/转换的热代码。在一个实施例中,诸如二进制转换代码之类的转换和/或优化代码被保存在核202的存储逻辑中。作为示例,二进制转换代码可以是保存在核202中的微代码的一部分。转换/优化代码在被执行时对该代码段进行转换/优化以便在核202上执行。在一个实施例中,核201、202可识别同一ISA或其子集,其中转换/优化仅仅是对代码进行转换/优化以便更高效地在核202上执行。在另一实施例中,核201、202识别不同的ISA,其中转换包括将该代码区域从核201所能识别的一个ISA转换至核202所能识别的另一ISA。虽然参考转换/优化代码的执行讨论了转换/优化,但可利用任何已知的用于转换/优化代码的机制(即便是通过专属的硬件)。
在一个实施例中,一旦在核201的情况下遇到标识的热代码段,则该热代码(的经转换版本)就被执行在核202上。可利用用于确定何时遇到热代码区域的任何已知触发器。几个高级示例包括:遇到/引用与该代码区域相关联的指令地址、取出/解码/调度/执行将代码区域标识为热代码的指令、取出/解码/调度/执行指示热代码的经转换版本要在另一核上执行的指令、来自监测器的指示已经遇到热代码区域的外部触发器,等等。
作为说明性示例,代码分配模块210包括在硬件、软件或其组合中实现的监测器模块。当该监测器模块标识热代码区域或将该热区域转换成经转换的区域时,监测器模块注册与该热代码区域相关联的指令地址。该注册可包括将指令地址与经转换的代码区域的位置相关联。接着,当指令指针(程序计数器)随后引用该指令地址时,从注册的指令地址确定已经遇到热代码区域。注意,在此可使用任何形式的检测,诸如处理所遇到的事件的同步或异步中断方式。此外,硬件、微代码和/或固件可能能够直接处理对热代码段的遭遇,而不需要类似中断的处理,即触发器事件不由处理程序所服务。注意,核101和102可共享某些硬件结构(诸如映射结构),以标识被注册为热代码的地址。
作为在核201上遇到热代码段的响应,在核202上执行热代码段的经转换和/或经优化的版本。不论在核201上如何标识和遇到热代码段,可利用使代码能在另一核上执行的任何已知方法。在一个实施例中,利用合作模块来实现这样的执行。例如,核201、202可共享某些硬件结构,和/或包括用于共享信息的通信信道。作为一个示例,核101、102可共享数据高速缓存,因此当执行从核201迁移至202时,该数据并未被物理地移动,而是已经驻留在共享的高速缓存中。同样,在一个实施例中,在核201与202之间共享诸如阴影寄存器文件之类的寄存器文件,从而寄存器状态(上下文)不需要从一个核迁移至另一个核。作为另选方案,作为共享寄存器文件的替代,可使用高速互连将上下文或上下文的部分从一个核迁移至另一个核。此外,可利用非频繁转移软件来进行这样的转移。
作为一个示例,将对热代码段的输入值从核201转移至核202,以支持该热代码段在核202上的执行。在执行之后,然后将输出值转移回核201。在一个实施例中,仅转移来自代码段的经标识的输入/输出值,即,部分上下文切换。注意,这样的输入值可由用户(软件/编译器)和/或由硬件/固件算法来标识。在此,直接访问硬件可适于从核201中的寄存器、缓冲器或其它结构读取输入值,并将这些输入值写入核202。反之,可利用相同或不同的硬件来从核202读取值,并将值写入核201。然而,在识别到此类值变得太难处理时,可执行整个上下文切换、复制、或共享以在核201与202之间提供值。
接着参考图3,描绘了用于在核之间分配代码以实现最大性能和功率节省的处理器的实施例。如上所述,处理器300包括两个处理器核,每个处理器核是不同的核类型。作为一个示例,核301是本机的无序(OOO)处理器核,而核302是受软件管理的有序处理器核。核301和302可以但不一定识别不同的ISA类型。实际上,核302可识别核301的ISA的子集。或者,核302可包括与核301的ISA部分交迭的单独的ISA。如上所述,核或处理器通常通过核或处理器中的解码硬件/软件来与ISA——所识别指令的定义——相关联。
在一个实施例中,监测器模块305用于监测本机程序代码325在本机OOO核301上的执行;通过该监测,模块305用于标识程序代码325的热部分/热区域327。监测器模块可由硬件、软件或其组合组成。在一个实施例中,监测器模块305包括用于监测执行的硬件。作为一个示例,该硬件包括微体系结构和/或体系结构钩(hook),诸如用于测量隐退推出的隐退推出标签/计数器、用于对指令数量进行计数的指令计数器、用于测量整体执行长度和/或时间的整体跟踪执行测量逻辑、用于对代码段被执行的次数进行计数的复现计数器等等,以确定代码325执行期间的性能/功率度量。这种类型的硬件可位于集成电路/处理器的任何部分中,诸如在无序核301内、在有序核302内、以及在OOO处理器核301或有序处理器核302内未包括的集成电路的无关部分中。
在另一实施例中,监测器模块305包括诸如监测器代码之类的软件,这些软件在被执行时监测程序代码325的执行并标识程序代码325的热区域327。作为说明性示例,处理器300包括诸如只读存储器(ROM)结构、可编程逻辑等等之类的存储结构,用于保持代码、微代码或机器代码,这些代码在被执行时导致监测的发生。然而,监测器代码可被存储在与核301、302相关联的任何机器可读介质中。注意,使用术语“执行”不仅限于通过传统执行单元的执行,而是替代地可表示通过与处理器300相关联的其它硬件或可编程逻辑的执行(诸如利用固件对微代码的执行)。在此,所执行的监测器代码可执行对通过硬件可测量的复现性、功率以及性能度量的相同监测。
作为一个示例,监测硬件和/或代码跟踪/确定程序代码的代码段的复现模式。作为简单示例,数据结构使对代码段(代码区域327)的引用(诸如指令地址)与该指令地址/代码段已在核301上执行的次数计数相关联。注意,该计数可与绝对计数(总量)或时间计数(一时间量上的计数)相关联。
在一个实施例中,监测器模块305适于标识/监测程序代码325的热部分327。在一个示例中,监测器模块305用于测量程序代码325的热部分327在OOO处理器核301上的执行期间的一个或多个性能度量。而且,模块305用于响应于OOO处理器核上的性能度量低于阈值而标识程序代码325的热部分327。性能度量的示例的非穷举性的说明性列表包括:指令隐退推出、所执行的多个指令、执行代码区域的时间量、代码区域被遇到/执行的次数、在代码区域执行期间消耗的功率量、在代码区域执行期间在不同功率状态下花费的时间量、在代码段执行期间的热密度,等等。
利用上述示例之一,假设OOO核301正在执行程序代码325。而且正在执行监测器代码,以确定程序代码325的区域在核301上执行的次数。在一个实施例中,当该计数达到或超过阈值时,监测器模块305标识/确定区域327是热代码。如果使用了阈值3,则当在核302上执行的监测器代码检测到热区域327正在核301上第三次重新执行时,区域327被标识为热代码区域。可外推确定复现模式的特定示例,以发现可将相似的过程——计数、与阈值比较、以及标识——用于任何测得的性能度量。此外,确定性能度量不仅限于计数,而可包括用于确定核、处理器或计算机系统中的执行或功率节省性能的任何已知算法。
然而,对程序代码325内的热区域327的标识不限于动态性能监测。替代地,可利用编译器或静态程序分析来确定可能更适合在有序核302上执行的代码段。例如,假设程序分析揭示热区域327有可能被重复执行多次。响应于该发现,编译器或用户可插入指令或分界,将代码段标识为热代码。因此,当核301的解码器遇到此类指令时,它们识别出区域327是要在核302上执行的热代码。注意,在一些实施例中,在不进行深度程序分析的情况下,用户可基于它们对程序的了解来标识此类代码区域。
在一个实施例中,响应于将区域327标识为热,代码327被优化/转换模块310优化或转换以获得经优化的热代码304。与监测器模块305的操作相似,优化模块310可在硬件、软件、固件或其组合中实现。例如,转换和/或优化代码可存储在与核302、核301或处理器300相关联的结构中。为了说明起见,二进制转换代码被存储在与核302相关联的固件中。而且该二进制转换代码被执行以将热区域327从用于核301的本机格式转换成用于核302的格式。注意,该转换可以是在ISA或其它格式之间,且优化可包括用于优化代码以便执行的任何已知方法,诸如用于将代码从在OOO核301上的并行执行优化成在核302上的串行执行以及执行相反过程的已知技术。
然而,使用固件中的二进制转换代码仅仅是说明性的,因为任何转换代码或优化代码可保存在计算机系统中的任何位置,诸如核302中的微代码或系统存储器中的常规程序代码。而且,优化代码可按照任何方式执行,以对热区域327进行转换或优化以获得经优化的热代码304。实际上,可使用用于针对核而转换或优化代码的任何已知方法或装置,诸如已知的用于转换现有受软件管理的处理器中的代码的方法和装置。
无论使用软件、固件、硬件还是其组合,可静态地或动态地执行转换。实际上,很大程度上类似于在运行时动态地执行监测或在执行前静态地执行监测,转换和优化可类似地执行。在编译器或用户标识热区域327的示例中,优化和转换可在该时刻进行(在执行之前)。在此,可利用热代码标识符指令来标识热代码区域327,并指定经优化/转换的代码304的位置。然而,不论段327是在执行之前还是执行期间被标识为热代码,在一些实施例中,优化和转换动态地进行(在运行期间)。
在一个实施例中,热区域327与其它执行并行地被优化/转换。在一个示例中,核302开始与核301对区域327的执行并行地执行优化代码。在此,监测器模块305检测到热代码区域327在核301上的执行,因此在核302上发起优化。在来自热区域327的进一步指令仍在核301上执行的同时,核302开始优化。因此,核302与热代码327在核301上的执行基本并行地优化热代码327。在另一示例中,核301与核302对热代码327的优化并行地执行程序代码325的其它段或其它互斥代码。在另一实施例中,对热区域327的优化被串行地进行。例如,核301执行热区域327,随后核301或302优化热代码区域327。
在一个实施例中,代码327被存储在其原始存储器位置,并在进行中由核302进行转换。然而,在多数情况下,在执行之前转换/优化整个代码段是最高效的。因此,在优化/转换模块310针对核(诸如核302)优化代码之后,经优化的热代码304被存储在别处。用于经优化的热代码304的该另一位置可以是存储器中的另一位置,诸如主系统存储器位置。然而,由于热代码327通常与频繁执行相关联,将经优化的版本304保存在更靠近核302处潜在地是有利的。因此,在所示实施例中,核302包括用于保存经优化的热代码304的代码高速缓存302。注意,代码高速缓存303可以是:核302中的单独的高速缓存结构;共享高速缓存结构(诸如核302中的共享的指令或数据高速缓存);或与核302相关联的其它通用存储结构。
返回对监测器模块305的讨论,遇到热代码区域327的一个实施例包括程序计数器引用与代码段相关联的指令地址。如所描绘的,映射模块315用于保存与经优化的热代码引用317相关联的代码区域引用(诸如指令地址)。本质上,映射模块315的条目将热代码区域327与其经优化的版本(经优化的热代码304)相关联。作为说明性示例,引用316包括与热区域327相关联的地址,诸如指令地址。在该场景下,当核301遇到(程序计数器指向)保存在映射模块315的字段316中的指令地址时,监测器模块305指示热区域327已被遇到并将在核302上执行。然后,以上简述并在下文详细讨论的合作模块320促进数据和/或上下文移动至核302以便执行。
在上述示例中,仅在引用316上确定热区域327已经被遇到并将在核302上执行。然后可利用字段317与字段316的关联来迅速地确定区域327的经优化热代码版本304的位置。因此,字段317可包括对经优化的热代码304的位置的任何引用。这样的引用的几个简单示例包括:保存经优化的代码304的代码高速缓存303的条目的地址;从代码高速缓存303的开始到保存经优化的热代码的条目304的偏移量;以及与条目304相关联的物理或线性地址。映射模块315以简单的表结构示出,该表结构可在硬件、软件、固件或其组合中实现和/或保持。然而,可利用将一个位置与另一位置相关联的任何已知方法来将热代码327与其经优化版本相关联。
尽管未具体示出,但监测器模块305的部分结合映射模块315可形成触发器模块,用于指示经优化的热代码304将要在核302上执行,代替核301上本机代码327。作为示例,当核301的程序计数器被移至下一指令地址时,触发器硬件对照映射硬件表315中存储的引用来检查该地址。在此,假设该程序计数器指向引用字段316中保持的代码区域327的指令地址。那么,基于映射表315中的条目,触发器硬件指示用于代码区域327的经优化的代码区域304存在。因此,由于代码区域327的经优化的版本已经存在且将在核302上执行,因此可规避代码区域327在核301上的执行。
在一个实施例中,核301中止执行(停止或转换到低功率状态)直到核302完成经优化代码的执行为止。然而,这可能没有完全利用处理器300的处理能力。因此,在另一实施例中,在经优化的热代码304在核302上执行时,核301交织另一软件线程(除程序代码325之外的代码)的执行。作为又一示例,核301可推测性地执行程序代码325的其它部分(这本质上执行了执行的运行之前协助器线程),或无序地执行不取决于代码区域327的代码325的其它部分。
在一个实施例中,合作模块320提供核301、302之间的合作功能。作为最简单的示例,合作模块320包括核301、302之间的用于传输信息的互连。然而,在另一实施例中,合作模块包括其它硬件,该其它硬件可以是各个单独核专属的,或在核之间共享以促进上述合作。例如,核302可共享核301的阴影寄存器文件,使得在经优化的热代码304在核302上执行时,不需要执行从核301到核302的寄存器状态的完全上下文切换。替代地,在该情况下,核302能够直接访问阴影寄存器文件。然而,合作模块不限于共享结构和/或互连。实际上,合作模块320可包括硬件、固件、软件或其组合,用于提供对两个核301、302中的寄存器、存储结构以及缓冲器的直接读和/或写访问。因此,在一个实施例中,合作模块320能够将执行经优化热代码所需的数据/寄存器值从核301转移至核302。而且,它还能够将结果从302转移回核301,以实现随后在核301上的正确执行。
尽管主要参考对本机核301上的执行的监测来讨论监测器模块305,但在一个实施例中,监测器模块305也监测经优化代码在核302上的执行。因此,监测器模块305能够将代码段327在核301上的性能与经优化版本304在核302上的性能作比较。此外,当核302上的性能低于核301上的性能时,或当核302上的性能增益相比于功耗增加而言较小时,可逆转将区域327标识为热代码的决定。作为示例,表明这样的决定的映射模块315的条目被取消分配或无效,使得核301下次遇到热代码327时,监测器模块305不检测引用316,且不指示区域327的经优化的热代码版本应当在核302上执行。本质上,该逆转将之前标识的区域327迁移回无序核301。
作为进一步证实该性能比较的特定说明性示例,假设代码区域327基于高复现模式和高指令执行计数而被标识为热代码。因此,通过核302上驻留的二进制转换代码来优化代码327以获得经优化的代码304。当经优化的代码304被存储在代码高速缓存303中时,映射表315中的条目被创建以将代码区327与经优化的版本304相关联。当核301接下来遇到与字段316中的引用相匹配的引用时,则触发经优化代码304在核302上的执行,代替在核301上执行代码区域327。注意,合作模块通过转移、共享或上下文切换来提供从核301到核302的正确的值。在核302执行经优化的热代码304期间,通过监测器模块305跟踪相同的性能度量——指令执行计数。如果指令执行计数小于代码区域327曾在核301上的执行计数,则区域327被标识为热代码的现状在未来继续。然而,如果指令执行计数在核302上更长或检测到显著的功率升高,则可逆转将区域327作为热代码的标识,如上所述。
除了提供核301与302之间的通信之外,合作模块320还可包括其他特征以管理不同类型的多个核。作为第一示例,功率管理器实现功率算法,以确保核301和302不同时在最大功率下操作。然而,该示例仅仅是说明性的。其它功率算法可允许这样的最大操作。作为另一功率考虑,核302可在监测核301上的执行期间驻留在低于最大功率的功率状态下(低功率状态)。例如,当核301与执行其自身监测的机制相关联时,则核302不需要被完全供电,直到存在待执行的代码的经优化版本为止。因此,通过关闭核302直到需要它来执行为止,潜在地节省了功率。反之,核301可功率下降(置于最大值之上的功率状态,诸如ACPI低功率状态),同时核302执行经优化的热代码。
转到图4,示出了一种在有序核和无序核之间分配代码以实现最大性能和功率节省的方法的流程图的实施例。虽然以基本上串行的方式示出了图4的流程,但这些流程可以不同的顺序以及并行地来执行。例如,在流程405中在无序核上执行程序之前,可在程序代码编译期间执行流程410和415。此外,每个流程可利用硬件、固件或通过程序代码的执行来执行。
在流程405,监测程序代码在处理器中的无序(OOO)处理器核上的执行。在一个实施例中,对程序代码的引用指的是:(1)动态地或静态地执行编译器程序,以编译其它程序代码;(2)执行主程序诸如,操作系统、管理程序、应用代码、或其它软件程序;(3)执行与主程序代码相关联的其它程序代码(诸如库);(4)执行可能不与主程序直接关联的其它程序代码,诸如协助器线程或其它任务;或(5)以上的组合。
编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序组。通常,利用编译器对程序/应用代码的编译以多个阶段和多遍进行,以将高级编程语言代码变换成低级机器或汇编语言代码。然而,仍可利用单遍编译器以进行简单编译。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如,词法分析、预处理、解析、句法分析、代码生成、代码变换以及代码优化。
较大的编译器通常包括多个阶段,但通常这些阶段被包括在两个一般阶段内:(1)前端,在前端中通常进行句法处理、语义处理以及一些变换/优化;以及(2)后端,在后端中通常进行分析、变换、优化以及代码生成。一些编译器涉及中端,中端说明编译器的前端与后端之间的界定模糊。因此,对编译器的插入、关联、生成或其它操作的引用可在编译器的上述阶段或遍次以及任何其它已知的阶段或遍次中的任一个中进行。
在一个实施例中,监测程序代码的执行包括跟踪程序代码内的代码段/区域被执行的次数。代码区域可按照任何已知的对指令/代码分组的方式来确定。作为示例,每当与代码段相关联的指令地址被OOO核的程序计数器所引用时,复现计数递增。在一个实施例中,如果代码段的复现计数超过阈值,则在流程410中将该代码段标识为热代码。
与确定复现模式一起或单独地,监测程序代码的执行可包括确定/跟踪与代码段相关联的性能度量。如上所公开,示例性的性能度量包括:指令隐退推出、所执行的多个指令、执行代码区域的时间量、代码区域被遇到/执行的次数、在代码区域执行期间消耗的功率量、在代码区域执行期间在不同功率状态下花费的时间量、在代码段执行期间的热密度。然而,可在该程序代码执行期间监视与处理器执行相关联的任何已知的度量或度量组合。
在流程410,基于复现模式、性能度量或其组合来标识程序代码的热段。与以上示例相似地,在将复现计数与一阈值作比较时,也可将性能度量与一阈值作比较。例如,监测器可对超过推出时间阈值的隐退推出的次数进行计数。而且,如果推出超过计数阈值,则将该代码段标识为热代码段。尽管该示例仅公开了单个性能度量作为考虑因素,但对代码的热代码段的标识可基于诸个性能度量和/或诸个复现模式的任何组合。例如,可设计用于评估多个性能度量、功率考虑因素以及复现模式以将代码段标识为热代码的算法。因为该算法可以是实现专属的,而且置换方案的数量将是巨大的,因此不详细讨论组合算法的细节以避免不必要地模糊本说明书。如上所述,将代码段标识为热代码可在执行程序代码之前进行(诸如通过编译器在程序代码编译时进行),或在运行时进行(通过运行时编译器、硬件、固件、其它软件或其组合来进行)。
响应于标识热代码区域,在流程415,可优化程序代码的热段以在协同设计的处理器核上执行,以获得经优化的程序代码的热段。在一个实施例中,这样的优化包括将来自本机指令的程序代码的热段(可由与无序处理器核相关联的解码逻辑来识别)转换成协同设计的指令(可由与协同设计核相关联的解码逻辑来识别)。然而,不一定需要转换。实际上,在一些实施例中,协同设计的核可以是能够执行与无序核一样的ISA或其子集的串行核。在该情况下,可不将该代码从一个ISA转换成另一个,而是从用于无序执行的格式转换/优化成用于串行执行的格式。可利用用于转换和/或优化代码的任何已知方法,诸如已知的用于分析、转换、变换和/或优化代码的编译器方法。作为特定的说明性示例,二进制转换代码可驻留在协同设计的核上,以将程序代码转换/优化成经优化的程序代码的热段。
在流程420中,将经优化的程序代码的热段分配给协同设计的处理器核。在一个实施例中,分配包括将经优化的程序代码的热段写入与协同设计的核相关联的代码高速缓存。然而,分配可从任何存储结构且在任何时候进行。例如,经优化的热段可被存储在系统存储器中,并正好在执行之前被分配给协同设计的核。
在流程425,将经标识的程序代码的热段与经优化的程序代码的热段相关联。例如,将对程序代码的热段的引用和对经优化的热段的引用存储在代码映射表的条目中。继续代码高速缓存示例,对经优化的热段的引用包括对代码高速缓存内的经优化的热代码的位置的任何引用,诸如地址或偏移量。然而,可利用任何已知的数据结构和/或方法来将热代码段与其经优化的版本的位置相关联。
然后,当在无序核上执行期间遇到代码段时,在流程430,利用协同设计的处理器核代替无序核来执行经优化的程序代码的热段。如上所述,基于设计实现方式,经优化的程序代码的热段的执行可与其它代码在无序核上的执行并行地进行,或与其它代码在无序核上的执行串行地进行。然而,在并行实现方式中,无序核能够执行来自与经优化的热代码相同的线程的其它代码以及来自其它线程的交织的代码。
在流程435,以与在流程405中执行的对无序处理器核上的执行的监测相似的方式,监测经优化的热段在协同设计的处理器核上的执行。例如,也能在利用有序的协同设计的处理器核执行经优化的程序代码的热段期间监测在流程405所监测的相同性能度量。而且,响应于这些性能度量表明在有序核上的性能比在无序核上的性能低,可表明该程序代码的热段应在无序核上执行,而不是利用有序核来执行该经优化的程序代码的热段。
转到图5,示出了一种在有序核和无序核之间分配代码以实现最大性能和功率节省的方法的流程图的另一实施例。在流程505,响应于将程序代码区域(包括针对第一处理器核所优化的第一代码类型)标识为热代码,将该程序代码区域与经转换的热区域相关联,经转换的热区域包括从第一代码类型转换成针对第二处理器核所优化的第二代码类型的程序代码区域。
在一个实施例中,第一处理器核包括无序处理器核,第一代码类型包括针对无序处理器核所优化的无序代码类型,第二处理器核包括有序处理器核,且第二代码类型包括针对有序处理器核所优化的有序代码类型。作为一个示例,有序处理器核与识别第一指令集体系结构(ISA)的解码逻辑相关联,而无序处理器核与识别第二ISA的解码逻辑相关联。在此,针对第二ISA进一步优化第二代码类型。
在一个实施例中,与第一处理器核相关联的解码逻辑用于解码来自程序代码的表明该程序代码区域是热代码的至少一个指令。在此,用户可将该指令包含在该程序代码中,以标识热区域。或者,编译器在编译该程序代码时可响应于对程序代码的分析而插入该指令。在另一实施例中,硬件监测该程序代码区域在第一核上的执行,并基于该硬件监测将该程序代码区域标识为热代码。
此外,通过更新数据结构中的条目使对该程序代码区域的引用与对经转换的热区域的引用相关联,该程序代码区域可与经转换的热区域相关联。例如,对经转换的热区域的引用可包括:地址、指令地址、高速缓存存储器内的位置、程序计数值以及指令操作码。
在流程510,响应于在利用第一处理器核执行该程序代码期间遇到该程序代码区域,在第二处理器核上执行经转换的热区域。作为示例,当第一处理器核的指令指针引用该热代码区域时,在第二处理器上执行该经转换区域。然而,遇到指令的任何时候都会触发第二核上的执行。例如,替代地,取出特定地址或解码特定指令可触发该执行。
在一个实施例中,在标识和在核之间分配代码时,也考虑功率考虑因素。作为说明性示例,当第二处理器核执行经转换的热区域时,第一处理器核转换至低功率状态以节省功率。此外,在一个实施例中,特定的功率考虑可限制两个核同时在最大功率下操作。
作为将本机核与不同的协同设计的核耦合的结果,即使在单个应用内也能潜在地获得最佳的功率和执行收益。例如,利用无序核和受软件管理的有序核,在受软件管理的核上低效的代码被迁移至无序核。反之,在无序核上低效的代码被迁移至受软件管理的核。因此,通过硬件、软件、固件或其组合,可高效地管理本机代码、热代码检测以及热代码优化的并行执行,同时可按照流水线方式在无序和有序的协同设计的核之间高效地交织多个线程的不同段。因此,通过不同的功率效率技术,诸如在一些实现方式中在有序核执行期间将无序核置于低功率状态,可获得最大性能,同时实现更好的功率性能。
在本文中使用的模块指的是任何硬件、软件、固件、或它们的组合。通常被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。然而,在另一实施例中,逻辑还包括诸如固件或微代码之类的与硬件集成的软件或代码。
如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取或机器可读介质上可由处理元件执行的指令或代码来实现。机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;或其它形式的用于保持传播信号(例如载波、红外信号、数字信号)的存储设备;等等。
在本说明书通篇中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书通篇中各处出现的短语“在一个实施例中”或“在实施例中”不一定全部指的是同一实施例。而且,特定特征、结构、或特性可按照任何合适的方式在一个或多个实施例中组合。
在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
Claims (48)
1.一种装置,包括:集成电路,所述集成电路包括,
无序(OOO)处理器核,适于无序地执行程序代码;以及
有序处理器核,适于按照程序顺序来执行所述程序代码的热部分。
2.如权利要求1所述的装置,其特征在于,所述集成电路进一步包括监测器硬件,所述监测器硬件适于标识所述程序代码的热部分。
3.如权利要求2所述的装置,其特征在于,所述监测器硬件适于标识所述程序代码的热部分包括:所述监测器硬件适于:
监测所述程序代码在所述OOO处理器核上的执行;
基于对所述程序代码在所述OOO处理器核上的执行的监测,确定所述程序代码的热部分的复现模式;以及
基于所述复现模式来标识所述程序代码的热部分。
4.如权利要求3所述的装置,其特征在于,所述监测器硬件适于基于对所述程序代码在所述OOO处理器核上的执行的监测来确定所述程序代码的热部分的复现模式包括:所述监测器硬件适于确定所述程序代码的热部分随时间的被执行次数;以及其中所述监测器硬件适于基于所述复现模式来标识所述程序代码的热部分包括:所述监测器硬件适于响应于所述次数大于热代码阈值来标识所述程序代码的热部分。
5.如权利要求3所述的装置,其特征在于,所述监测器硬件被包括在所述集成电路的一部分中,所述集成电路的一部分从以下项组成的组中选择:所述OOO处理器核、所述有序处理器核、以及未包括在所述OOO处理器核或所述有序处理器核中的所述集成电路的无关部分。
6.如权利要求2所述的装置,其特征在于,所述监测器硬件适于标识所述程序代码的热部分包括:所述监测器硬件适于在所述OOO处理器核上的执行期间测量所述程序代码的热部分的性能度量,并且响应于所述OOO处理器核上的性能度量低于阈值来标识所述程序代码的热部分。
7.如权利要求6所述的装置,其特征在于,所述监测器硬件还适于在所述有序处理器核上的执行期间测量所述程序代码的热部分的性能度量,并且响应于所述有序处理器核上的执行期间的所述程序代码的热部分的性能度量低于在所述OOO处理器核上的执行期间的所述程序代码的热部分的性能度量,指示所述程序代码的所述热部分不再被视为程序代码的热部分。
8.如权利要求1所述的装置,其特征在于,所述集成电路进一步包括:
合作硬件,适于将来自所述OOO处理器核的输入值提供给所述有序处理器核。
9.如权利要求8所述的装置,其特征在于,适于将来自所述OOO处理器核的输入值提供给所述有序处理器核的所述合作硬件包括:上下文切换逻辑,适于执行从所述OOO处理器核到所述有序处理器核的至少部分上下文切换,其中所述至少部分上下文至少包括输入值。
10.如权利要求8所述的装置,其特征在于,适于将来自所述OOO处理器核的输入值提供给所述有序处理器核的所述合作硬件包括:直接访问硬件,适于从所述OOO处理器核中的寄存器读取所述输入值,并将所述输入值写入所述有序处理器核中的输入寄存器。
11.如权利要求2所述的装置,其特征在于,所述集成电路进一步包括用于保持优化代码的代码存储逻辑,所述优化代码在被执行时针对在所述有序处理器核上的执行而优化所述程序代码的热部分,且其中所述优化代码响应于所述监测器硬件标识所述程序代码的热部分而被执行以优化所述程序代码的热部分。
12.如权利要求11所述的装置,其特征在于,所述优化代码包括优化微代码,且其中所述优化微代码在被执行时针对在所述有序处理器核上的执行而优化所述程序代码的热部分包括:所述优化微代码在被执行时将所述程序代码的热部分从由所述OOO处理器核的解码器识别的第一指令集体系结构(ISA)转换至由所述有序处理器核的解码器识别的第二ISA。
13.如权利要求12所述的装置,其特征在于,所述有序处理器核与代码高速缓存相关联,所述代码高速缓存适于在所述程序代码的热部分从第一ISA转换至第二ISA之后保持所述程序代码的所述第二部分的经优化版本。
14.如权利要求2所述的装置,其特征在于,所述集成电路进一步包括触发器硬件,所述触发器硬件适于:
响应于所述监测器硬件标识所述程序代码的所述热部分,指示所述程序代码的所述热部分是热代码,以及
响应于所述OOO处理器核遇到所述程序代码的所述热部分以及所述触发器硬件指示所述程序代码的所述热部分是热代码,触发程序代码的所述热部分在所述有序处理器核上的执行。
15.如权利要求14所述的装置,其特征在于,所述触发器硬件适于指示所述程序代码的所述热部分是热代码包括:所述触发器硬件适于保持对所述程序代码的所述热部分的引用,对所述程序的所述热部分的引用与对所述程序代码的所述热部分的经优化版本的引用相关联,所述程序代码的所述热部分的经优化版本经优化以在所述有序处理器核上执行。
16.一种装置,包括处理器,所述处理器包括,
无序核,适于执行程序代码;
协同设计的核;以及
代码分配模块,适于标识所述程序代码的热部分,并针对所述协同设计的核来优化所述程序代码的热部分以获得经优化的热代码,
其中所述协同设计的核用于,响应于所述代码分配模块标识所述程序代码的热部分以及所述无序核遇到用于执行的所述程序代码的热部分,执行所述经优化的热代码。
17.如权利要求16所述的装置,其特征在于,适于标识所述程序代码的热部分的所述代码分配模块包括:解码逻辑,适于从所述程序代码解码热代码标识符指令,所述热代码标识符指令用于标识所述程序代码的热部分。
18.如权利要求16所述的装置,其特征在于,适于标识所述程序代码的热部分的所述代码分配模块包括:监测器模块,适于监测所述程序代码在所述无序核上的执行,并根据对所述程序代码在所述无序核上的执行的监测来标识所述程序代码的热部分。
19.如权利要求18所述的装置,其特征在于,所述监测器模块包括在所述协同设计的核中的适于执行监测代码的执行逻辑,其中所述监测代码在被所述协同设计的核中的所述执行逻辑执行时用于监测所述程序代码在所述无序核上的执行并标识所述程序代码的热部分。
20.如权利要求16所述的装置,其特征在于,适于针对所述协同设计的核来优化所述程序代码的热部分以获得经优化的热代码的所述代码分配模块包括:用于执行转换代码的执行逻辑,其中所述转换代码在被执行时对所述程序代码的热部分进行转换以获得经优化的热代码,而且其中所述程序代码的热部分包括作为可由所述无序核的解码器所识别的第一指令集体系结构(ISA)的一部分的指令,并且所述经优化的热代码包括作为可由所述协同设计的核的解码器所识别的第二ISA的一部分的指令。
21.如权利要求16所述的装置,其特征在于,所述协同设计的核用于响应于所述代码分配模块标识所述程序代码的热部分以及所述无序核遇到用于执行的所述程序代码的热部分而执行所述经优化的热代码包括:响应于与无序核相关联的程序计数器引用与所述程序代码的热部分相关联的指令地址以及映射表将程序代码的热部分与经优化的热代码相关联以指示所述程序代码的热部分是热代码,所述协同设计的核执行所述经优化的热代码。
22.如权利要求21所述的装置,其特征在于,还包括与所述协同设计的核相关联的代码高速缓存,其中将所述程序代码的热部分与所述经优化的热代码相关联以指示所述程序代码的热部分是热代码的映射表包括:所述映射表的条目,保持对所述程序的热部分的引用以及对所述经优化的热代码的引用,其中对所述经优化的热代码的引用包括对所述经优化的热代码在所述代码高速缓存中的位置的引用。
23.如权利要求16所述的装置,其特征在于,所述处理器耦合至系统存储器,所述系统存储器从由随机存取存储器(RAM)、双数据速率(DDR)RAM以及缓冲RAM组成的组中选择,其中所述系统存储器用于保持所述程序代码。
24.一种处理器,包括:
第一核,与适于识别第一指令集体系结构(ISA)类型的解码逻辑相关联;
第二核,与适于识别第二指令集体系结构(ISA)类型的解码逻辑相关联;
监测器模块,用于监测第一ISA类型的程序代码在所述第一核上的执行,并标识所述程序代码的热区域;以及
转换模块,用于将所述程序代码的热区域从所述第一ISA类型转换至所述第二ISA类型,以获得所述程序代码的经转换的热区域;
其中所述第二处理器核响应于所述第一处理器核随后遇到所述程序代码的所述热区域以及所述监测器硬件标识所述程序代码的所述热区域,执行所述程序代码的所述经转换的热区域。
25.如权利要求24所述的装置,其特征在于,所述监测器模块包括监测器代码,所述监测器代码在被执行时监测程序代码在所述第一核上的执行并标识所述程序代码的热区域;以及其中所述转换模块包括转换代码,所述转换代码在被执行时与所述程序代码在所述第一核上的执行至少部分并行地对所述程序代码的热区域进行转换以获得所述程序代码的经转换的热区域。
26.如权利要求24所述的装置,其特征在于,所述监测器模块包括监测器硬件,所述监测器硬件用于监测程序代码在所述第一核上的执行,并标识所述程序代码的热区域。
27.如权利要求24所述的装置,其特征在于,当所述监测器模块正在监测所述程序代码在所述第一核上的执行并标识所述程序代码的热区域时,所述第二核适于驻留在低功率状态下,且当所述第二核正在执行所述程序代码的经转换热区域时,所述第一核适于驻留在低功率状态下。
28.如权利要求24所述的装置,其特征在于,所述第一核适于与所述第二核执行所述程序代码的经转换热区域并行地执行所述程序代码的冷区域。
29.如权利要求24所述的装置,其特征在于,所述第一核和所述第二核适于不在同时在最大功率状态下操作。
30.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行以下操作:
监测程序代码在所述机器内的处理器中的无序处理器核上的执行;
标识所述程序代码的热段;
针对在所述机器内的协同设计的处理器核上的执行优化所述程序代码的热段,以获得经优化的所述程序代码的热段;
将所述经优化的程序代码的热段分配至所述协同设计的处理器核;以及
利用所述协同设计的处理器核执行所述经优化的程序代码的热段。
31.如权利要求35所述的机器可读介质,其特征在于,监测程序代码在无序处理器上的执行包括:确定与所述程序代码的段相关联的性能度量。
32.如权利要求31所述的机器可读介质,其特征在于,标识所述程序代码的热段包括:基于所述性能度量与性能阈值的比较,确定所述程序代码的段是所述程序代码的热段。
33.如权利要求35所述的机器可读介质,其特征在于,针对协同设计的处理器核上的执行来优化所述程序代码的热段包括:将来自可由与所述无序处理器核相关联的解码逻辑所识别的本机指令的程序代码的热段转换成可由与所述协同设计的核相关联的解码逻辑所识别的协同设计的指令。
34.如权利要求35所述的机器可读介质,其特征在于,将所述经优化的程序代码的热段分配至协同设计的处理器核包括:将所述经优化的程序代码的热段写到与协同设计的核相关联的代码高速缓存中。
35.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行以下操作:
响应于将包括针对所述机器中的第一处理器核所优化的第一代码类型的程序代码区域标识为热代码,将所述程序代码区域与经转换的热区域相关联,经转换的热区域包括从第一代码类型转换成针对所述机器中的第二处理器核所优化的第二代码类型的程序代码区域;以及
响应于在利用所述第一处理器核执行所述程序代码期间遇到所述程序代码区域,响应于所述程序代码区域与所述经转换的热区域相关联而在所述第二处理器核上执行所述经转换的热区域。
36.如权利要求35所述的机器可读介质,其特征在于,所述第一处理器核包括无序处理器核,所述第一代码类型包括针对无序处理器核优化的无序代码类型,所述第二处理器核包括有序处理器核,且所述第二代码类型包括针对有序处理器核优化的有序代码类型。
37.如权利要求36所述的机器可读介质,其特征在于,所述无序处理器核与识别第一指令集体系结构(ISA)的解码逻辑相关联,所述第一代码类型针对所述第一ISA进一步优化,所述有序处理器核与识别第二ISA的解码逻辑相关联,且所述第二代码类型针对所述第二ISA进一步优化。
38.如权利要求35所述的机器可读介质,其特征在于,将所述程序代码区域标识为热代码包括:与所述第一处理器核相关联的解码逻辑从所述程序代码中解码表明所述程序代码区域是热代码的至少一个指令。
39.如权利要求35所述的机器可读介质,其特征在于,将所述程序代码区域标识为热代码包括:所述机器中的硬件监测所述程序代码区域在所述第一核上的执行,并基于所述硬件监测所述程序代码在所述第一核上的执行来将所述程序代码区域标识为热代码。
40.如权利要求35所述的机器可读介质,其特征在于,将所述程序代码区域与经转换的热区域相关联包括:更新数据结构中的条目,使对所述程序代码区域的引用与对经转换的热区域的引用相关联,其中对所述程序代码区域的引用和对所述经转换的热区域的引用分别是从由以下项组成的组中选择的:地址、指令地址、高速缓存存储器内的位置、程序计数值以及指令操作码。
41.如权利要求35所述的机器可读介质,其特征在于,响应于在利用所述第一处理器核执行所述程序代码期间遇到所述程序代码区域以及所述程序代码区与所述经转换的热区域相关联,在所述第二处理器核执行所述经转换的热区域期间将所述第一处理器核转换成低功率状态。
42.一种方法,包括:
标识程序代码的热段;
针对利用有序处理器核的执行来优化所述程序代码的热段,以获得经优化的所述程序代码的热段;
利用处理器的无序核执行所述程序代码;以及
响应于在利用所述无序处理器执行所述程序代码期间遇到所述程序代码的热段以及标识所述程序代码的热段,利用所述有序处理器核执行所述经优化的程序代码的热段,而不是利用所述无序处理器核执行所述程序代码的热段。
43.如权利要求42所述的方法,其特征在于,还包括将所述程序代码的热段与所述程序代码的经优化的热段相关联。
44.如权利要求43所述的方法,其特征在于,将所述程序代码的热段与所述程序代码的经优化的热段相关联包括:在代码映射表的条目中存储对所述程序代码的热段的引用以及对所述经优化的热段的引用。
45.如权利要求42所述的方法,其特征在于,标识程序代码的热段包括:监测利用所述无序处理器核的所述程序代码的段的执行期间的性能度量,并基于所述性能度量与性能阈值的比较来将所述程序代码的段标识为所述程序代码的热段。
46.如权利要求45所述的方法,其特征在于,还包括监测在利用所述有序处理器核的所述经优化的程序代码的热段的执行期间的性能度量,并响应于在利用所述有序处理器核的所述经优化的程序代码的热段的执行期间的性能度量指示比利用所述无序处理器核的所述程序代码的段的执行期间的性能度量要低的性能,指示所述程序代码的热段应在所述无序核上执行,而不是经优化的所述程序代码的热段应利用所述有序核来执行。
47.如权利要求42所述的方法,其特征在于,针对利用有序处理器核的执行来优化所述程序代码的热区以获得经优化的所述程序代码的热区包括:执行二进制转换代码以将所述程序代码转换成所述经优化的程序代码的热区。
48.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行如权利要求42所述的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/826,107 | 2010-06-29 | ||
US12/826,107 US20110320766A1 (en) | 2010-06-29 | 2010-06-29 | Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type |
PCT/US2011/041429 WO2012005949A2 (en) | 2010-06-29 | 2011-06-22 | Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102934084A true CN102934084A (zh) | 2013-02-13 |
CN102934084B CN102934084B (zh) | 2016-11-16 |
Family
ID=45353677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180027661.8A Active CN102934084B (zh) | 2010-06-29 | 2011-06-22 | 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20110320766A1 (zh) |
EP (1) | EP2588958B1 (zh) |
JP (1) | JP2013532331A (zh) |
KR (1) | KR101507702B1 (zh) |
CN (1) | CN102934084B (zh) |
AU (1) | AU2011276656B2 (zh) |
TW (1) | TWI516908B (zh) |
WO (1) | WO2012005949A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050010A (zh) * | 2013-03-12 | 2014-09-17 | 英特尔公司 | 在协同设计的处理器中创建隔离执行环境 |
CN104077106A (zh) * | 2013-03-26 | 2014-10-01 | 威盛电子股份有限公司 | 具有原生切换机制的非对称多核心处理器 |
CN104375804A (zh) * | 2013-08-13 | 2015-02-25 | 三星电子株式会社 | 多线程执行处理器及其操作方法 |
CN107368174A (zh) * | 2014-07-25 | 2017-11-21 | 英特尔公司 | 用于具有非同构性能状态的多核处理器的热扼制的自适应算法 |
CN108647046A (zh) * | 2014-12-26 | 2018-10-12 | 英特尔公司 | 用于控制执行流程的设备和方法 |
CN109996185A (zh) * | 2017-12-29 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 终端的定位方法和装置、存储介质、电子装置 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799693B2 (en) * | 2011-09-20 | 2014-08-05 | Qualcomm Incorporated | Dynamic power optimization for computing devices |
US9098309B2 (en) | 2011-09-23 | 2015-08-04 | Qualcomm Incorporated | Power consumption optimized translation of object code partitioned for hardware component based on identified operations |
WO2013162589A1 (en) * | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
CN106201348B (zh) * | 2012-06-20 | 2019-08-20 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9606818B2 (en) | 2013-03-14 | 2017-03-28 | Qualcomm Incorporated | Systems and methods of executing multiple hypervisors using multiple sets of processors |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US10114756B2 (en) | 2013-03-14 | 2018-10-30 | Qualcomm Incorporated | Externally programmable memory management unit |
US9563432B2 (en) * | 2013-04-19 | 2017-02-07 | Nvidia Corporation | Dynamic configuration of processing pipeline based on determined type of fetched instruction |
US9552205B2 (en) * | 2013-09-27 | 2017-01-24 | Intel Corporation | Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions |
US10503513B2 (en) * | 2013-10-23 | 2019-12-10 | Nvidia Corporation | Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type |
KR20150050135A (ko) | 2013-10-31 | 2015-05-08 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법 |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
GB2521367A (en) * | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
US9395797B2 (en) | 2014-07-02 | 2016-07-19 | Freescale Semiconductor, Inc. | Microcontroller with multiple power modes |
US9190989B1 (en) | 2014-10-07 | 2015-11-17 | Freescale Semiconductor, Inc. | Integrated circuit power management |
US9411363B2 (en) * | 2014-12-10 | 2016-08-09 | Intel Corporation | Synchronization in a computing device |
US10387158B2 (en) * | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9547483B1 (en) * | 2015-11-06 | 2017-01-17 | International Business Machines Corporation | Feedback directed optimized compiling of optimized executable code |
US10605920B2 (en) * | 2016-01-13 | 2020-03-31 | Ams Sensors Singapore Pte. Ltd. | Power savings through refresh control for distance sensing devices |
US10235178B2 (en) | 2017-06-02 | 2019-03-19 | Microsoft Technology Licensing, Llc | Performance scaling for binary translation |
KR102042495B1 (ko) * | 2018-11-30 | 2019-11-08 | 아주대학교산학협력단 | 멀티 코어 시스템의 저전력 운영을 위한 데이터 흐름 최적화 장치 및 방법 |
US11016766B2 (en) | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
US10983796B2 (en) | 2019-06-29 | 2021-04-20 | Intel Corporation | Core-to-core end “offload” instruction(s) |
US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
US10929129B2 (en) | 2019-06-29 | 2021-02-23 | Intel Corporation | Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions |
US20200409764A1 (en) * | 2019-06-29 | 2020-12-31 | Intel Corporation | Core-to-core "snoop" instruction variants |
US11321144B2 (en) | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
US11030000B2 (en) | 2019-06-29 | 2021-06-08 | Intel Corporation | Core advertisement of availability |
US12008398B2 (en) * | 2019-12-28 | 2024-06-11 | Intel Corporation | Performance monitoring in heterogeneous systems |
US11669491B2 (en) * | 2020-04-09 | 2023-06-06 | Samsung Electronics Co., Ltd. | Processor, system on chip including heterogeneous core, and operating methods thereof for optimizing hot functions for execution on each core of a heterogeneous processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020066081A1 (en) * | 2000-02-09 | 2002-05-30 | Evelyn Duesterwald | Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator |
US6681387B1 (en) * | 1999-12-01 | 2004-01-20 | Board Of Trustees Of The University Of Illinois | Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit |
US20040215987A1 (en) * | 2003-04-25 | 2004-10-28 | Keith Farkas | Dynamically selecting processor cores for overall power efficiency |
CN1677364A (zh) * | 2004-03-22 | 2005-10-05 | 国际商业机器公司 | 对代码覆盖使用硬件辅助的自主测试用例反馈的方法和设备 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0769825B2 (ja) * | 1989-02-10 | 1995-07-31 | 三菱電機株式会社 | 並列処理装置 |
JPH02301830A (ja) * | 1989-05-17 | 1990-12-13 | Mitsubishi Electric Corp | 情報処理方式 |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
US5802338A (en) * | 1996-10-01 | 1998-09-01 | International Business Machines Corporation | Method of self-parallelizing and self-parallelizing multiprocessor using the method |
JP3209205B2 (ja) * | 1998-04-28 | 2001-09-17 | 日本電気株式会社 | プロセッサにおけるレジスタ内容の継承装置 |
JP3604029B2 (ja) * | 1999-01-12 | 2004-12-22 | 日本電気株式会社 | マルチスレッドプロセッサ |
JP2001167066A (ja) * | 1999-12-08 | 2001-06-22 | Nec Corp | プロセッサ間通信方法及びマルチプロセッサシステム |
US6691306B1 (en) * | 2000-12-22 | 2004-02-10 | Lsi Logic Corporation | Use of limited program space of general purpose processor for unlimited sequence of translated instructions |
US7100060B2 (en) * | 2002-06-26 | 2006-08-29 | Intel Corporation | Techniques for utilization of asymmetric secondary processing resources |
US7802236B2 (en) * | 2002-09-09 | 2010-09-21 | The Regents Of The University Of California | Method and apparatus for identifying similar regions of a program's execution |
CN100395709C (zh) * | 2003-02-20 | 2008-06-18 | 皇家飞利浦电子股份有限公司 | 一种用于指令转换的数据处理方法及其系统 |
US7437581B2 (en) * | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
US20060123397A1 (en) * | 2004-12-08 | 2006-06-08 | Mcguire James B | Apparatus and method for optimization of virtual machine operation |
US20060212677A1 (en) * | 2005-03-15 | 2006-09-21 | Intel Corporation | Multicore processor having active and inactive execution cores |
US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US7461275B2 (en) * | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
US7506205B2 (en) * | 2006-02-14 | 2009-03-17 | Atmel Corporation | Debugging system and method for use with software breakpoint |
JP4439491B2 (ja) * | 2006-05-24 | 2010-03-24 | 株式会社ソニー・コンピュータエンタテインメント | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
US20080263324A1 (en) * | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US20080244538A1 (en) * | 2007-03-26 | 2008-10-02 | Nair Sreekumar R | Multi-core processor virtualization based on dynamic binary translation |
US8190652B2 (en) * | 2007-12-06 | 2012-05-29 | Intel Corporation | Achieving coherence between dynamically optimized code and original code |
JP2009199384A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | データ処理装置 |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US8909902B2 (en) * | 2008-11-24 | 2014-12-09 | Intel Corporation | Systems, methods, and apparatuses to decompose a sequential program into multiple threads, execute said threads, and reconstruct the sequential execution |
US9569270B2 (en) * | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US8458676B2 (en) * | 2009-06-30 | 2013-06-04 | International Business Machines Corporation | Executing platform-independent code on multi-core heterogeneous processors |
-
2010
- 2010-06-29 US US12/826,107 patent/US20110320766A1/en not_active Abandoned
-
2011
- 2011-06-22 CN CN201180027661.8A patent/CN102934084B/zh active Active
- 2011-06-22 AU AU2011276656A patent/AU2011276656B2/en not_active Ceased
- 2011-06-22 JP JP2013513421A patent/JP2013532331A/ja active Pending
- 2011-06-22 EP EP11804047.6A patent/EP2588958B1/en active Active
- 2011-06-22 KR KR1020127034268A patent/KR101507702B1/ko active IP Right Grant
- 2011-06-22 WO PCT/US2011/041429 patent/WO2012005949A2/en active Application Filing
- 2011-06-27 TW TW100122413A patent/TWI516908B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681387B1 (en) * | 1999-12-01 | 2004-01-20 | Board Of Trustees Of The University Of Illinois | Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit |
US20020066081A1 (en) * | 2000-02-09 | 2002-05-30 | Evelyn Duesterwald | Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator |
US20040215987A1 (en) * | 2003-04-25 | 2004-10-28 | Keith Farkas | Dynamically selecting processor cores for overall power efficiency |
CN1677364A (zh) * | 2004-03-22 | 2005-10-05 | 国际商业机器公司 | 对代码覆盖使用硬件辅助的自主测试用例反馈的方法和设备 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050010A (zh) * | 2013-03-12 | 2014-09-17 | 英特尔公司 | 在协同设计的处理器中创建隔离执行环境 |
CN104077106A (zh) * | 2013-03-26 | 2014-10-01 | 威盛电子股份有限公司 | 具有原生切换机制的非对称多核心处理器 |
CN104077106B (zh) * | 2013-03-26 | 2018-06-15 | 威盛电子股份有限公司 | 具有原生切换机制的非对称多核心处理器 |
CN104375804A (zh) * | 2013-08-13 | 2015-02-25 | 三星电子株式会社 | 多线程执行处理器及其操作方法 |
CN107368174A (zh) * | 2014-07-25 | 2017-11-21 | 英特尔公司 | 用于具有非同构性能状态的多核处理器的热扼制的自适应算法 |
CN107368174B (zh) * | 2014-07-25 | 2020-06-05 | 英特尔公司 | 用于具有非同构性能状态的多核处理器的热扼制的自适应算法 |
CN108647046A (zh) * | 2014-12-26 | 2018-10-12 | 英特尔公司 | 用于控制执行流程的设备和方法 |
CN108647046B (zh) * | 2014-12-26 | 2023-11-21 | 英特尔公司 | 用于控制执行流程的设备和方法 |
CN109996185A (zh) * | 2017-12-29 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 终端的定位方法和装置、存储介质、电子装置 |
CN109996185B (zh) * | 2017-12-29 | 2022-02-15 | 腾讯科技(深圳)有限公司 | 终端的定位方法和装置、存储介质、电子装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2011276656A1 (en) | 2013-01-10 |
US20110320766A1 (en) | 2011-12-29 |
KR101507702B1 (ko) | 2015-04-07 |
EP2588958B1 (en) | 2019-11-06 |
TW201209572A (en) | 2012-03-01 |
KR20130032333A (ko) | 2013-04-01 |
JP2013532331A (ja) | 2013-08-15 |
AU2011276656B2 (en) | 2015-08-20 |
EP2588958A4 (en) | 2016-11-02 |
TWI516908B (zh) | 2016-01-11 |
CN102934084B (zh) | 2016-11-16 |
WO2012005949A3 (en) | 2012-05-18 |
WO2012005949A2 (en) | 2012-01-12 |
EP2588958A2 (en) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102934084A (zh) | 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统 | |
JP6627103B2 (ja) | 異種マルチコアシステム用のダイナミックコア選択 | |
CN104951281A (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
CN104115094A (zh) | 包括代码再循环技术的用于能效和节能的方法、装置和系统 | |
CN105492989A (zh) | 用于时钟门控控制的早唤醒-警告 | |
CN105164637A (zh) | 对管线化的软件的动态优化 | |
CN104205077B (zh) | 包括可配置最大处理器电流的针对能效和节能的方法、装置和系统 | |
CN105320494A (zh) | 带有一致的和非一致的子系统的存储器排序 | |
Sasaki et al. | Energy-efficient dynamic instruction scheduling logic through instruction grouping | |
Jones | Compiler-Directed Energy Savings in Superscalar Processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |