CN115617470A - 用于向软件进程提供线程调度提示的设备、方法和系统 - Google Patents
用于向软件进程提供线程调度提示的设备、方法和系统 Download PDFInfo
- Publication number
- CN115617470A CN115617470A CN202210730660.XA CN202210730660A CN115617470A CN 115617470 A CN115617470 A CN 115617470A CN 202210730660 A CN202210730660 A CN 202210730660A CN 115617470 A CN115617470 A CN 115617470A
- Authority
- CN
- China
- Prior art keywords
- processor
- cores
- indication
- level
- hint
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 118
- 230000008569 process Effects 0.000 title abstract description 34
- 238000012360 testing method Methods 0.000 claims description 35
- 230000007704 transition Effects 0.000 claims description 35
- 230000008859 change Effects 0.000 claims description 30
- 238000004891 communication Methods 0.000 claims description 16
- 230000003213 activating effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 7
- 238000001514 detection method Methods 0.000 abstract description 5
- 230000015654 memory Effects 0.000 description 63
- 238000011156 evaluation Methods 0.000 description 31
- 239000000463 material Substances 0.000 description 26
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000004913 activation Effects 0.000 description 9
- 238000007667 floating Methods 0.000 description 9
- 238000012544 monitoring process Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000009849 deactivation Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000001105 regulatory effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000003466 anti-cipated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 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/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
-
- 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
-
- 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
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/5038—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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/505—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 the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Power Sources (AREA)
Abstract
一种用于向包括第一核和第二核的处理器的操作系统提供线程调度提示的技术和机制。在实施例中,第一核是对应于第一尺寸范围的第一类型,并且第二核是对应于小于第一尺寸范围的第二尺寸范围的第二类型。处理器的功率控制单元(PCU)检测在对处理器可用的功率量低于阈值的指示时、处理器的第一操作模式的低效率将存在。基于该检测,PCU向正在执行的软件进程提示给定核被包括在可用于线程调度的核池中或从可用于线程调度的核池中被省略。该提示基于第一核类型和第二核类型的相对优先级来指示给定核。
Description
背景
1.技术领域
该公开通常涉及处理器架构,并且更具体但非排他地涉及用于确定处理器核的组合以执行一个或多个线程的技术。
2.背景技术
半导体处理和逻辑设计的进步已允许可在集成电路设备上存在的逻辑数量的增长。作为结果,计算机系统配置已从系统中的单个或多个集成电路演进到各个集成电路上的多个核和多个逻辑处理器。处理器或集成电路通常包括单个管芯上的处理器,单个管芯包括任意数量的处理元件,诸如核、线程和/或逻辑处理器。
多处理器系统(诸如芯片多处理器(“CMP”)系统)包括多个处理器核,这些处理器核中的每一个能够独立地执行线程。同构CMP系统包括处理器核,这些处理器核都具有某一相同的一个或多个特性指令,诸如相同的尺寸、相同的指令集架构(ISA)等。在许多情况下,如果功率是主要的设计约束,那么全部为小型处理器核系统往往是更偏好的选择。然而,与全部为大型处理器核系统相比,此类系统通常遭受更低的性能能力。对全部为小型处理器核的系统的自然扩展是具有附加的(多个)大处理器核,该(多个)大处理器核用于在需要时提供附加的性能提升,同时将高功率效率的小型处理器核用于一些类型的系统执行。
目前,多线程工作负载的功率控制通常使用处理器的操作频率和/或电压的缩放来完成。随着处理器架构的相继世代继续在尺寸和能力方面扩大,预期存在对此类架构的功率效率的改善方面的增加的附加值。
附图说明
以示例方式且非限制方式在附图的各图中图示本发明的各实施例,在附图中:
图1示出了图示根据实施例的促进由处理器调度线程的系统的特征的框图。
图2示出了图示根据实施例的用于向执行进程提供线程调度信息的方法的特征的流程图。
图3示出了图示根据实施例的向执行进程提示要配置的操作模式的处理器的特征的框图。
图4示出了图示根据实施例的提供用于确定处理器的操作模式的基础的功率效率特性的图表。
图5A-图5C示出了图示根据实施例的由处理器提出线程调度的方法的特征的流程图。
图6示出了图示根据实施例的用于向执行进程提供线程调度信息的进程的特征的伪代码。
图7A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。
图7B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图;
图8A至图8B图示更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核);
图9是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图;
图10至图13是示例性计算机架构的框图;以及
图14是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文讨论的实施例不同地提供了用于向执行软件进程提供关于给定核是要被包括在线程调度中还是要被排除在线程调度之外的提示的技术和机制。本文中描述的技术可以在一个或多个电子设备中实现。可以利用本文中描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定式设备,诸如相机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、自动服务机、膝上型计算机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片服务器、机架安装服务器、其组合等)、机顶盒、智能电话、平板个人计算机、超移动个人计算机、有线电话、上述各项的组合,等等。更一般地,本文中描述的技术可以在包括功率控制单元的各种电子设备中的任何一种中采用。
在下列描述中,讨论了众多细节,以提供对本公开的实施例的更透彻的解释。然而,对本领域的技术人员将显而易见的是,可以在没有这些特定细节的情况下实施本公开的实施例。在其他实例中,以框图形式,而不是详细地示出公知的结构和设备,以避免使本公开的实施例变得模糊。
注意,在实施例的对应附图中,利用线来表示信号。一些线可以较粗以指示更多数量的成份信号路径,和/或在一个或多个末端处具有箭头以指示信息流的方向。此类指示不旨在是限制性的。相反,线结合一个或多个示例性实施例使用,以促进对电路或逻辑单元的更容易的理解。如由设计需要或偏好所规定,任何所表示的信号都可实际包括可在任一方向上行进的一个或多个信号,并可利用任何合适类型的信号方案来实现。
贯穿说明书以及在权利要求书中,术语“连接的”意指所连接的物体之间的诸如电气、机械、或磁性连接之类的无需任何中介设备的直接连接。术语“耦合的”意指直接的或间接的连接,诸如所连接的物体之间的直接的电气、机械、或磁性连接或者通过一个或多个无源或有源中介设备的间接连接。术语“电路”或“模块”可以指布置成用于彼此合作以提供期望功能的一个或多个无源和/或有源组件。术语“信号”可指至少一个电流信号、电压信号、磁信号、或数据/时钟信号。“一(a/an)”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
术语“设备”一般可以指根据使用那个术语的上下文的装置。例如,设备可以指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接,等等。一般而言,设备是三维结构,具有沿x-y-z笛卡尔坐标系的x-y方向的平面以及沿z方向的高度。设备的平面也可以是包括该设备的装置的平面。
术语“缩放”一般指将设计(示意图和布局)从一种工艺技术转换为另一种工艺技术,并随后在布局区域中被减小。术语“缩放”一般还指在同一技术节点内缩小布局和设备的尺寸。术语“缩放”还可指信号频率相对于另一参数(例如,功率供给水平)的调整(例如,减速或加速——即,分别为缩小或放大)。
术语“基本上”、“接近”、“近似”、“附近”以及“大约”一般指处于目标值的+/-10%内。例如,除非在其使用的明确的上下文中以其他方式指定,否则术语“基本上相等”、“大约相等”和“近似相等”意指在如此描述的物体之间仅存在偶然变化。在本领域中,此类变化典型地不大于预定的目标值的+/-10%。
应当理解,如此使用的术语在适当情况下是可互换的,例如使得本文中所描述的本发明的实施例能够以不同于本文中所图示或以其他方式描述的那些取向的其他取向来操作。
除非另外指定,否则使用序数形容词“第一”、“第二”、“第三”等来描述公共对象,仅仅指示类似对象的不同实例被提及,并且不旨在暗示如此描述的对象必须在时间上、空间上、排名上、或以任何其他方式处于给定序列中。
在说明书和权利要求书中的术语“左”、“右”、“前”、“后”、“顶”、“底”、“在……上方”、“在……下方”等(如果有)用于描述性目的,并且不一定用于描述永久的相对位置。例如,如本文中所使用的术语“在……上方”、“在……下方”、“前侧”、“后侧”、“顶”、“底”,“在……上方”、“在……下方”和“在……上”是指一个组件、结构或材料相对于设备中其他所引用的组件、结构或材料的相对位置,其中此类物理关系是显著的。本文仅出于描述性目的采用这些术语,并且这些术语主要在设备z轴的上下文内,因此这些术语可以相对于设备的取向。因此,如果设备相对于所提供的图的上下文上下颠倒地取向,则在本文中所提供的图中的上下文中在第二材料“上方”的第一材料也可以在该第二材料“下方”。在材料的上下文中,设置在另一材料上方或下方的一种材料可直接接触,或者可具有一种或多种中介材料。此外,设置在两种材料之间的一种材料可直接与这两个层接触,或者可具有一个或多个中介层。相比之下,在第二材料“上”的第一材料与该第二材料直接接触。在组件组装件的上下文中进行类似的区分。
可在设备的z轴、x轴或y轴的上下文中采用术语“之间”。在两种其他材料之间的材料可以与那两种材料中的一种或两种接触,或者该材料可通过一种或多种中介材料来与其他那两种材料两者分开。因此,在两种其他材料“之间”的材料可以与其他那两种材料中的任一种接触,或者该材料可通过中介材料耦合至其他那两种材料。在两个其他设备之间的设备可直接连接至那两个设备中的一个或两个,或者该设备可通过一个或多个中介设备与其他那两个设备两者分开。
如贯穿说明书以及在权利要求书中所使用,由术语“中的至少一个”或“中的一个或多个”联接的项列表可意指所列举的项的任何组合。例如,短语“A、B或C中的至少一个”可意指A;B;C;A和B;A和C;B和C;或A、B和C。应指出,附图的具有与任何其他附图的要素相同的附图标记(或名称)的那些要素能以与所描述的方式类似的任何方式操作或起作用,但不被限于此。
此外,本公开中讨论的组合逻辑和时序逻辑的各种元件可涉及物理结构(诸如,AND门、OR门或XOR门),或涉及实现作为所讨论的逻辑的布尔等效的逻辑结构的器件的合成的或以其他方式优化的集合。
一些实施例不同地促进包括异构核(即,不同相应类型的处理器核)的处理器的改进多线程性能(例如,当部分或所有此类核在有限功率下操作时的性能)。一般来说,相对较小的处理器核(与较大的核相比)在较低的功率操作点表现出更好的功率效率和性能。本文描述的各种实施例例如,当确定处理器的部分或所有异构核在给定供电电压水平的低效频率点上操作时,提供多线程工作负载的更高效率。例如,一些实施例,响应于可用功率减少的指示,将线程整合到更少的核(例如,在整合后,较大的核优先于较小的核以供进行选择性停用)。替代地或附加地,响应于可用功率增加的指示,一些实施例在更多核之中重新分配线程(例如,其中较小的核优先于较大的核,以供用于执行经重新分配的线程)。
本文参考信号的提供来描述各实施例的某些特征,该信号向操作系统提示给定处理器核要被包括在可用于线程调度的核池中(或替代地,从核池中省略)。然而,应当领会,此类描述可以扩展到这样的实施例,这些实施例附加地或替代地向确定给定核包含在线程调度种或排除在线程调度之外(和/或例如,确定处理器的特定操作模式)的各种其他软件进程中的任一项提供此类提示。作为说明而非限制,一些实施例向各种合适的系统驱动器、虚拟机、管理程序、软件容器进程等提供提示信息。
图1示出了根据实施例的用于促进由处理器调度线程的系统100的特征。系统100图示出实施例的一个示例,在该实施例中,功率控制单元被配置成用于向执行软件进程提示处理器核包含在线程调度中,或者替代地从线程调度中省略。在一些实施例中,提示基于处理器可用功率低于阈值水平的指示,并进一步基于第一类型的处理器核相对于第二类型的处理器核的相对优先级。例如,在各实施例中,系统100是片上系统(SOC)或以其他方式包括片上系统(SOC)。附加地或替代地,在一些实施例中,经封装的设备包括系统100。
系统100图示出实施例,其中功率控制单元(PCU)提供用于检测处理器的某一第一操作模式的低效率的功能。例如,对低效率的检测基于对处理器当前可用(或替代地,预期可用)的功率量的指示。在一些实施例中,指示仅间接表示可用功率量(例如,其中指示包括处理器的操作频率或供应给处理器的电压水平)。在各实施例中,PCU检测到低效率存在(或将存在),而指示低于某一预定的阈值(例如,在如果处理器在指示过渡到阈值以下后保持在第一操作模式的情况下,则低效率将存在)。基于检测到的低效率,PCU提供信号以向操作系统(或使用处理器执行的其他合适的软件进程)提示核包含在线程调度中,或从线程调度中省略。基于提示,操作系统(或其他此类执行进程)有条件地适配线程调度(例如,以促进处理器向更高效的操作模式的过渡)。
如图1所示,系统100包括一个或多个处理器(诸如说明性处理器110-1、……、110-x,本文通常称为“(多个)处理器110”)。一个或多个处理器110经由总线或其他互连104进行通信。根据实施例,一个或多个处理器的部分或全部各自包含用于提供功能的相应功率控制电路系统,为了清楚起见,仅参考处理器110-1进行讨论。相对应地,部分或所有剩余处理器包括与参考处理器110-1讨论的功率控制电路系统相同或相似的功率控制电路系统。
处理器110-1包括多个处理器核(诸如说明性的一个或多个核112,以及所示的一个或多个核114),以及(例如)一个或多个共享和/或私有高速缓存(诸如高速缓存117)、总线或互连(诸如总线或其他互连113)、图形和/或存储器控制器或其他组件。在一个示例实施例中,路由器115用于在处理器110-1和/或系统100的各组件之间进行通信。在各实施例中,处理器110-1包括多于一个路由器115(例如,其中众多路由器115进行通信以实现处理器110-1的内部或外部的各组件之间的数据路由)。
高速缓存117存储供处理器110-1的一个或多个组件(诸如说明性的一个或多个核112,以及所示的一个或多个核114)使用的数据(例如,包括指令)。例如,高速缓存117对存储在存储器180中的数据进行本地高速缓存,以便供处理器110的组件进行更快速的访问(例如,供核112、114进行更快速的访问)。如图1中所示的,存储器180经由互连104与处理器110通信。在实施例中,高速缓存117(其被共享)是中级高速缓存(MLC)、末级高速缓存(LLC)等。而且,核112、114中的每一个包括1级(L1)高速缓存或诸如2级(L2)高速缓存之类的其他级高速缓存。此外,处理器110-1的各组件通过总线(例如,互连113)和/或存储器控制器或中枢来与高速缓存117直接通信。
仍参考图1,处理器110-1的附加组件包括(例如)输入/输出接口132、另一接口134以及集成存储器控制器(IMC)136。如图所示,这些组件中的每个组件由集成电压调节器IVR125供电。在一个实施例中,接口132实现用于快速路径互连(QPI)互连的操作,其在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,这多个层包括物理层、链路层和协议层。进而,接口134经由外围组件互连快速(PCIeTM)协议来通信。在各实施例中,处理器110-1省略IF 132、PCIe IF 134、IMC 136或IVR 125的部分或全部,和/或包括(例如)适配自传统处理器架构的附加或替代组件。
系统100还包括(或替代地,被配置成用于耦合到)电源150(例如,直流(DC)电源或交流(AC)电源),其为系统100的一个或多个组件供电。在一些实施例中,电源150包括一个或多个电池组。作为说明而非限制,电源150通过电压调节器(VR)160与系统100的组件耦合。在一个此类实施例中,处理器110的部分或全部经由外部电压调节器160与电源150以不同方式耦合,例如,外部电压调节器160执行电压转换以向处理器110提供经调节的主电压。
系统100进一步包括(或替代地,被配置成用于耦合到)功率管理器170,例如,该功率管理器170通过固定功能硬件、微代码、固件、软件或其任何组合实现。在各实施例中,功率管理器170的某些功能包含在处理器110中或由处理器110执行(例如,其中所述处理器110的一个或多个核被配置成用于实现功率管理器170)。
在一些实施例中,功率管理器170包括用于执行各种操作的控制逻辑,例如,这些操作适配自传统功率管理技术(例如,其中功率管理器170包括一个或多个预定的功率管理策略、能够访问一个或多个预定的功率管理策略或以其他方式基于一个或多个预定的功率管理策略操作,根据该策略,一个或多个电源电压(例如,包括所示的说明性电源电压162))被提供到处理器110的部分或所有。例如,功率管理器170的功率监测器172提供用于监测系统100的功率状态的功能(例如,其中功率监测器172被配置成用于接收、生成或以其他方式确定指定或以其他方式指示功率递送、一个或多个功率需求等中的一个或多个特性的信息)。在一个此类实施例中,功率监测器172耦合成用于从系统100的各组件接收一个或多个信号,这些信号指定或以其他方式指示功率状态的实际状况和/或预期未来功率状态的状况。在该特定情境下,应当了解,“功率状态的状况”可包括(例如)状况的变化率(例如,一阶、二阶等)。基于功率监测器172确定的功率状态信息(并且例如,基于预定的功率管理策略),功率管理器170用信号通知VR 160,以调节一个或多个电源电压的电平和/或其他特性。
尽管图1图示出一个电源150和一个电压调节器160,但一些实施例中使用附加的功率源和/或电压调节器。例如,在一些实施例中,处理器110中的不同处理器各自对应于不同的相应(多个)电压调节器和/或(多个)功率源。替代地或附加地,一个或多个电压调节器耦合到单个功率层(例如,为处理器110的部分或所有核供电)或多个功率层(例如,其中每个功率层为不同的核或核群供电)。此外,虽然图1图示出电源150和电压调节器160作为分开的组件,但在其他实施例中,电源150和电压调节器160被并入系统100的其他组件中。例如,VR 160的全部或部分被替代地并入电源150和/或处理器110中。
处理器110的部分或全部各自包括相应电路资源,这些资源以各种方式互相耦合来接收相应电源电压,以使得能够执行各种软件线程。在所示的示例实施例中,处理器110-1图示出处理器的一个示例,该处理器包括本文称为的“异构核”(即,多个核),其包括不同相应类型的核(本文称为“核类型”)。
一些实施例以各种方式提供功率控制功能,用于适应各种核类型的不同相应功率和性能特性(例如,包括不同相应类别的功率需求、不同相应类别的功率效率等)。在一些实施例中,第一核类型对应于第一级功耗,其中第二核类型对应于与第一级不同的第二级功耗。例如,第一核类型的任何核支持第一级(或包括第一级在内的第一范围内)的最大功耗,其中第二核类型的任何核支持第二级(或包括第二级在内的第二范围内)的最大功耗,该功耗小于第一级或以其他方式与第一级(或第一范围)不同。
例如,核类型之间各种此类功率和性能特性对应于与核类型相关联的不同相应尺寸(或尺寸范围)(例如,其中一种核类型的任何核在第一尺寸范围内,而另一种核类型的任何核在第二尺寸范围内,第二尺寸范围与第一尺寸范围不重叠)。在该情境下,“尺寸”要例如关于核的物理区域、数个有源电路元件(例如,包括晶体管、逻辑门等)和/或领域中已知的任何其他合适的物理特性而被确定。
作为说明而不是限制,第一核类型与第一一个或多个值范围相关联,每个值分别用于物理特性(例如,包括电路元件的维度、面积或计数)、功率需求、功率约束等中的相应一个(例如,其中第一一个或多个值范围与美国加利福尼亚州圣克拉拉的英特尔公司制造的处理器品牌CoreTM提供的一个或多个核有关)。在一个此类实施例中,第二核类型与第二一个或多个值范围类似地相关联(例如,第二一个或多个值范围与美国加利福尼亚州圣克拉拉的英特尔公司制造的处理器品牌AtomTM提供的一个或多个核有关)。然而,此类核类型只是一些实施例的典范,而其他实施例不限于区分给定核类型和另一个核类型的特定一个或多个特性。
如上所述,处理器110-1是多核处理器,至少包括第一核类型的一个或多个第一核112(表示为所示的说明性核112a、……、112m),以及第二核类型的一个或多个第二核114(表示为所示的说明性核114a、……、114n)。在本示例实施例中,第一核类型对应于第一核尺寸,其中第二核类型对应于第二核尺寸,该第二核尺寸小于第一核尺寸(例如,其中核112属于CoreTM处理器中找到的类型,并且核114属于AtomTM处理器中找到的类型)。例如,第一核类型和第二核类型分别对应于包括第一尺寸在内的第一尺寸范围,以及包括第二尺寸在内的第二(非重叠)尺寸范围。
在一些实施例中,核112、114的部分或全部各自与相应的集成电压调节器(或“IVR”,未示出)相关联,例如,该集成电压调节器接收经调节的主电压,并生成提供给与该IVR相关联的(多个)核的一个或多个代理的操作电压。由此,多个核的部分或全部各自能够以独立的电压和频率操作,从而实现极大的灵活性,并提供平衡功耗与性能的广泛机会。在一些实施例中,对多个IVR的使用实现将组件分组到分开的功率层中,使得功率由IVR调节并且由IVR将功率仅提供给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,使一个IVR的给定的功率层掉电或断电,而另一IVR的另一功率层保持为活动的或完全供电的。在其他实施例中,处理器110-1、……、110-x省略部分或全部此类IVR(例如,其中一个或多个核112、114从集中式电压调节器(例如,VR 160)接收电压,例如,该集中式电压调节器位于主板或其他印刷电路板上)。
在各实施例中,处理器110-1的给定核提供了执行主机操作系统(未示出)的功能,该操作系统包括线程调度进程或以其他方式支持线程调度进程的执行。此类线程调度进程至少部分确定了各种线程如何在核112、114中各自的一个上各自执行。在一些实施例中,线程调度进程指定处理器110-1的一个或多个核的池、被提供有处理器110-1的一个或多个核的池或以其他方式确定处理器110-1的一个或多个核的池,这些核目前可用于被选择以执行给定线程(例如,其中处理器110-1的另一个或多个核目前处于非活动状态或不可用于进行此类选择)。基于处理器110-1的当前(或预期未来)状态,线程调度进程调度给定线程在当前位于可用核的池中的特定核处执行。处理器110-1的线程迁移和/或其他线程调度包括(例如)适配自传统负载平衡和/或用于提高处理器的功率效率的其他技术的操作。本文没有详细说明此类传统技术,以避免模糊各实施例的某些方面。
在一些实施例中,主机操作系统动态更新可用核池(例如,当前不在池中的核可遭受由操作系统过渡到非活动状态,以提高功率效率)。一些实施例以各种方式扩展或以其他方式改进现有的线程调度技术和/或核激活/停用技术,其功率控制逻辑提供用于向操作系统提示给定核应被添加到(或替代地,移除自)可用核池的功能。例如,如图1所示,处理器110-1进一步包括功率控制单元(PCU)130,该功率控制单元130促进线程调度,以控制由处理器组件(例如,包括核112、114的部分或全部)消耗的功率。在实施例中,PCU130包括硬件、软件和/或固件,以促进对处理器110-1和/或系统100的一个或多个其他处理器的功耗的控制。如图所示,PCU 130直接或间接地向核112、114中的各种核提供控制信息。在一些实施例中,PCU 130附加地或替代地向一个或多个IVR(未示出)提供控制信息,该一个或多个IVR各自对应于核112、114的各自一个核(例如,以控制生成的操作电压(或以使相对应的IVR在低功率模式下被禁用))。
在一些实施例中,PCU 130耦合以接收信息(例如,以一个或多个位或信号的形式),以指示一个或多个传感器142的状态。在一个此类实施例中,(多个)传感器142靠近系统100的组件被提供,诸如核112、114、互连104或113等,以感知电压、温度、操作频率、操作电压、功耗(即时或在一段时间内平均)、核状态(例如,活动或非活动)、核间通信活动等的一个或多个特性。基于来自(多个)传感器142的信息,PCU 130提供通信以向操作系统提示线程调度应被修改以促进处理器110-1过渡到不同的操作模式。
例如,PCU 130提供用于接收或以其他方式检测供应到处理器110-1的多个核(例如,多个核包括核112和核114)的功率量已更改(或预期将更改)到低于阈值功率水平的水平的指示的功能。基于此类指示,PCU 130的电路系统(例如,包括所示的说明性调度提示电路系统131)执行操作,以鉴于所指示的可用功率的变化发信号通知到处理器110-1的不同操作模式的过渡是否更有效(例如,与将处理器110-1置于当前操作模式相比)。
作为说明而不是限制,调度提示电路系统131(或PCU 130的其他合适电路)包括预确定的参考信息、能够访问预确定的参考信息或以其他方式基于预确定的参考信息进行操作,这些参考信息指定或以其他方式指示处于活动状态的多个核的不同组合的性能效率特性。基于此类参考信息和所指示的可用功率变化,PCU 130标识一种操作模式,该操作模式将减轻因所指示的变化而导致的功率效率损失(或替代地,将改进功率效率的提高)。为了促进处理器110-1到此类操作模式的过渡,调度提示电路系统131发送一个或多个信号,在一些实施例中,这些信号向主机操作系统提示多个核中的一个特定核应从可用于线程调度的核池中被排除(或替代地,被包含在可用于线程调度的核池中)。
例如,在各实施例中,调度提示电路系统131提供基于一个核类型优先于另一个核类型的优先级来指定特定核的提示。作为说明而不是限制,在一些实施例中,给定核应该从(可用于线程调度的)核池中被删除的提示是基于大核类型优先于小核类型的第一优先级。替代地或附加地,不同的提示(指示给定核应该被添加到此类的可用核池中)基于小核类型优先于大核类型的第二优先级。在说明性场景中,根据一个实施例,PCU 130直接或间接地向使用核112、114执行的操作系统提供此类提示(例如,经由寄存器、表或其他合适的储存库(如线程配置状态140所示)),该提示是操作系统可以访问的。至少部分基于PCU 130提供的提示,操作系统确定处理器是否要从一个处于活动状态的组合核112、114过渡到另一个处于活动状态的组合核112、114。
图2示出了根据实施例的用于向操作系统(或在处理器上执行的其他合适进程)提供线程调度信息的方法200的特征。方法200图示出实施例的一个示例,其中基于低功率条件和不同核类型的相对优先级,功率控制单元向执行进程提示在线程调度中包含处理器核,或将处理器核排除在此类线程调度之外中的一个。例如,诸如方法200的操作之类的操作是使用系统100的部分或全部执行的。
在实施例中,方法200使用处理器的功率控制单元执行,该功率控制单元进一步包括异构核,异构核既包括第一核类型的一个或多个第一核又包括第二类型的一个或多个第二核。在一个此类实施例中,第一核类型对应于第一级功耗(和/或第一尺寸)(例如,其中第二核类型对应于低于第一级功耗的第二级功耗(和/或小于第一尺寸的第二尺寸))。例如,第一核类型对应于包括第一功耗级别的第一范围的最大功耗级别,其中第二核类型对应于包括第二功耗级别的第二范围的最大功耗级别。
如图2所示,方法200包括(210处)检测处理器(诸如处理器110-1)的第一操作模式的低效率。例如,第一操作模式是处理器的当前操作模式,其中低效率是当前的低效率,或者替代地,是预期未来低效率。
在一些实施例中,操作模式包括一个或多个处理器核的特定组合,该一个或多个处理器核各自处于各自的活动状态(例如,其中低效率至少部分是由于处理器当前可用(或替代地,预期变得可用)支持所述组合的功率量)。附加地或替代地,低效率(并且例如,低效率的检测)至少部分是由于热条件、处理工作负载和/或影响一个或多个核的特定组合的操作效率的其他此类条件的变化。
在各实施例中,210处低效率的检测包括接收或以其他方式检测(实际或预期)功率量的指示(例如,其中指示明确标识了功率量,或者替代地仅间接指示所述功率量)。例如,此类指示包括或以其他方式基于核的操作频率、提供给核的电源电压的电平等(例如,其中210处检测包括检测电源电压和操作频率的组合)。
在各实施例中,210处检测包括接收一个或多个信号,这些信号指定或以其他方式指示一个或多个活动核的组合(与一个或多个活动核的某些替代组合相比)相对于处理器操作的实际(或预期未来)一个或多个条件相对低效率。例如,此类一个或多个条件包括给定的电源电压水平、给定的操作频率和/或功率递送的其他此类特性。替代地或附加地,此类一个或多个条件包括热状态、处理器工作负载和/或影响核的操作效率的其他条件。在一些实施例中,210处检测包括接收指定或以其他方式指示预定义功率变化事件的实例的信号(例如,包括与包括处理器的系统耦合(或替代地,解耦)的显示设备、驱动器或其他外围设备)。
方法200进一步包括(在212处)确定在低效率期间,可用功率量将低于阈值水平的指示。在一个此类实施例中,212处确定包括标识电源电压到低于阈值电压水平的水平的实际(或预期)过渡(例如,增加或减少)。附加地或替代地,212处确定包括(例如)标识操作频率到低于阈值的频率的实际或预期过渡。
作为说明而不是限制,212处确定包括评估提供给核的电源电压的实际(或预期)电平(例如,评估将电平与支持线程执行的最小电压电平Vcc_min进行比较)。替代地或附加地,212处确定包括基于参考频率评估核的操作频率,例如,参考频率对应于电源电压的给定电平的最大效率的操作点。
在一些实施例中,阈值在处理器的运行时操作期间被动态地计算(例如,重新计算)、被动态地更新或以其他方式被动态地确定。在一个此类实施例中,能量感知快速停止(EARtH)算法或任何其他合适的功率管理算法适配成用于实时更新阈值的值(例如,用于促进PCU提供的滞后功能)。
基于212处的确定,方法200生成处理器基于指示被过渡到第二操作模式的提示。该提示指示处理器根据第一核类型优先于第二核类型的第一优先级停用一个或多个核,或者替代地,处理器根据第二核类型优先于第一核类型的第二优先级激活一个或多个核。例如,在所示的说明性实施例中,基于212处的确定,方法200向处理器的一个或多个核发出信号,以提示由处理器向不同操作模式的过渡(例如,其中过渡包括激活或停用至少一个核)。例如,方法200进一步包括执行评估(在214处),以确定由处理器功耗的降低是否有助于提高功率效率(或者替代地,减轻功率效率损失)。
如果在214处指示降低的功耗有助于提高效率,方法200(在216处)发送一个或多个信号(例如,从PCU发送到处理器的模式寄存器或其他合适的资源),这提示(由处理器执行的)执行软件进程停用处理器的一个或多个核。在一些实施例中,在216处提示的停用是根据第一核类型优先于第二核类型的第一优先级。例如,在一个此类实施例中,在216处的提示进一步基于以下条件,其中第二(小)核中的每个核处于各自的活动状态,并且第一核中的至少一个核处于各自的活动状态,其中提示建议第一核中的一个核被停用。
在一些实施例中,在216处的提示包括PCU相继地向执行进程发送第一提示(其各自标识第一核中相应的一个核),直到测试条件被满足,或直到第一核中的每一个核处于相应非活动状态。例如,测试条件指示,处理器已成功过渡到预期操作模式。例如,此类测试条件包括(根据某一预定义的标准)与参考频率Fmax足够接近的操作频率(例如,同时电源电压处于最低电平Vcc_min,其支持(多个)给定核的线程执行)。在一个此类实施例中,在216处的提示进一步包括PCU相继地向执行进程发送第二提示(其各自标识第二核中相应的一个),直到测试条件被满足,或直到第一核中的仅一个核处于活动状态。
相反,当在214处指示提高功耗将有助于提高效率时,方法200(在218处)发送一个或多个信号,其提示执行进程激活处理器的一个或多个核。在一些实施例中,在218处提示的激活是根据第二核类型优先于第一核类型的第二优先级。例如,在一个此类实施例中,在218处的提示进一步基于以下条件,其中第一(大)核中的每个核处于各自的非活动状态,并且第二(小)核中的至少一个核处于各自的非活动状态,其中提示表明第二核中的一个被激活。
在一些实施例中,在218处的提示包括PCU相继地向执行进程发送第三提示(其各自标识第二核中相应的一个),直到测试条件被满足,或直到第二核中的每一个核处于相应活动状态。在一个此类实施例中,在218处的提示进一步包括PCU相继地向执行进程发送第四提示(其各自标识第一核中相应的一个),直到测试条件被满足,或直到第二核中的每一个处于活动状态。
在各实施例中,方法200进一步包括用于向执行进程提供独立于第一优先级和第二优先级两者的另一提示的附加操作(未示出)。在一个此类实施例中,附加操作包括检测处理器的某个第三操作模式的第二低效率,并且确定在第二低效率期间,可用功率将高于阈值的指示。例如,用于指示的预定阈值从不使用第一或第二优先级的第二值范围描绘出第一和第二优先级不同地用于提示核激活(停用)的第一值范围。基于对第二低效率的此类检测,PCU确定处理器的不同操作模式将更有效(与使处理器处于当前操作模式相比)。为了促进处理器过渡到这种不同的操作模式,PCU向执行进程提示一个或多个核被激活(例如,以实现与第一优先级和/或第二优先级不一致的活动核的组合)。在一个此类实施例中,方法200的附加操作进一步向处理器发信号通知过渡到第四操作模式,其中此类附加发信号通知包括提示该进程停用与第一优先级无关的多个核中的一个或多个核,或激活与第二优先级无关的多个核中的一个或多个核。在根据一个实施例的说明性场景中,处理器过渡到操作模式,其中第一核类型的一个或多个核是活动的,而第二类型的一个或多个核是非活动的。
图3示出了根据实施例的处理器300的特征,处理器300包括用于提供要配置的操作模式的提示的电路系统。在各实施例中,处理器300提供诸如系统100的功能(例如,其中方法200的一个或多个操作由处理器300执行)。
如图3所示,处理器300的硬件(HW)301包括核单元310,其包括用于以不同方式执行软件(SW)302的异构核。处理器300进一步包括非核单元320,其包括用于支持SW 302的所述执行的各电路资源。在处理器300的操作期间,使用核单元310执行的SW 302包括操作系统(OS)350和一个或多个线程(例如,包括所示的说明性线程360a、……、360x),其在OS 350上执行或以其他方式由OS 350支持。在一个此类实施例中,OS 350包括进程或以其他方式支持进程的执行(诸如所示的说明性线程调度器352),该进程在不同时间为线程360a、……、360x中的给定一个指定用于执行所述线程的相应处理器核。
在各实施例中,给定线程的调度以供在特定核上执行是基于从非核单元320的功率控制单元(PCU)330提供给OS 350的提示。如本文中不同地描述的,此类提示基于不同核类型的相对优先级,并且例如,基于可用于核单元310的功率量低于阈值功率水平的指示。
在所示的示例实施例中,核单元310包括异构类型的硬件或物理核,包括一个或多个所谓的大核(例如,包括所示的说明性大核312a、……、312m(通常为大核312))以及多个所谓的小核314a、……、314n(通常为小核314)。在各实施例中,这些不同的核类型例如执行不同的ISA,和/或在尺寸和/或可用资源上物理上不同。在一些实施例中,不同的ISA被实现为给定的指令集架构,以及该指令集架构的子集。例如,大核312执行ISA的所有指令,同时具有较少数量的架构和微架构资源(包括不同/较小的寄存器结构、执行单元等)的小核314仅执行ISA的子集。这样,在一些实施例中,此类不同的ISA部分重叠。在其他实施例中,由不同核类型处置的ISA是完全不同的。
为了促进处理器300的功率有效的操作,非核单元320包括OS接口电路系统340,其例如促进PCU 330与OS 350之间的线程调度信息的通信。在一个此类实施例中,OS接口电路系统340启用PCU 330以确定线程调度器352的线程调度的当前状态。附加地或替代地,OS接口电路系统340包括或以其他方式促进接口,PCU 330通过该接口直接或间接地向OS 350提供关于特定核是否被包含在此类线程调度中(或替代地,从此类线程调度被省略)的提示。
例如,在不同时间,线程调度器352将线程360a、……、360x中的各个线程各自调度到核312、314中的相应一个。PCU 330包括信息的储存库、耦合以访问信息的储存库或以其他方式基于信息的储存库操作(例如,诸如OS接口电路系统340的说明性状态存储342),该信息指定或以其他方式指示线程360a、……、360x各自与核312、314中的相应一个的当前对应关系。作为说明而不是限制,状态存储342包括当线程调度器352调度线程360a、……、360x中的各个线程以由核312、314中的相应一个执行时,由OS350更新的一个或多个寄存器、表和/或其他合适的资源。在一些实施例中,PCU330访问状态存储342以确定核312、314中的哪个当前是活动的(或非活动的)和/或以其他方式被包括在可用于线程调度的核池中(或替代地,从核池中被省略)。
PCU 330的电路系统包括监测器334,该监测器334被配置成用于接收一个或多个信号(例如,包括所示的说明性信号333),其指定或以其他方式指示到核单元310(和/或核单元310的功率约束)的功率递送的当前状态或预期未来状态。在一个此类实施例中,信号333包括来自一个或多个传感器142、功率管理器170或其他合适电路系统的通信或以其他方式基于来自一个或多个传感器142、功率管理器170或其他合适电路系统的通信。基于可用于核单元310的功率量被减小(或者替代地,增加)到低于某个预定阈值功率水平的水平的确定,监测器334向PCU 330的评估器336发送信号335,其指示可能需要改变核单元310的操作模式。
基于信号335,评估器336访问参考信息332,该参考信息332指定或以其他方式指示处理器300的多个操作模式各自与相应的一个或多个功率和/或性能效率度量的对应关系。处理器300的多个操作模式各自包括核单元310的一个或多个活动核的不同的相应组合。例如,给定的一个此类操作模式O(x,y)包括(x+y)个活动核,其中整数x表示在活动状态期间每个处于活动状态的核312(如果有的话)的数量,并且整数y表示在活动状态期间每个处于活动状态的核314(如果有的话)的数量。
在各实施例中,参考信息332指定或以其他方式指示大核类型优先于小核类型的第一优先级,其中第一优先级确定给定的一个或多个核312、314被选择用于从线程调度中省略(并且例如,选择用于停用)所依据的顺序。在一个此类实施例中,参考信息332进一步指定或以其他方式指示小核类型优先于大核类型的第二优先级,其中第二优先级确定给定的一个或多个核312、314被选择用于包含在线程调度中(并且例如,选择用于激活)所依据的顺序。第一优先级和/或第二优先级由评估器336使用以基于信号335来确定标识核312、314中的一个或多个。
例如,基于第一优先级或第二优先级(以及基于例如在状态存储342中指示的线程调度的当前状态),评估器336将被建议给OS 350的一个或多个核标识为被停用(或替代地,被激活)的候选者,以促进向标识的操作模式的过渡。评估器336然后向PCU 330的协议电路系统338发送指示所标识的一个或多个处理器核的信号337。
协议电路系统338图示出各种合适的电路资源中的任何一种以提示OS 350(例如,使用所示的说明性信号339),信号337所指示的一个或多个核从可用于线程调度器352的可用核池中被省略(或替代地,被包括在该可用池内)。在一个示例实施例中,信号339包括异常、软件中断或与SW 302的其他合适的通信或以其他方式导致异常、软件中断或与SW 302的其他合适的通信(例如,其中OS接口电路系统340的异常处置器346代表PCU 330将提示中继到OS 350)。替代地,信号339将提示信息写入OS 350可访问的非核单元320的寄存器(诸如所示的说明性模式设置寄存器MSR 344中的一个)。在不同的实施例中,非核单元320提供各种其他边带信道、微控制器电路系统和/或用于促进PCU 330与OS 350之间的提示信息的通信的其他机制中的任何一个。
应当领会,信号339表示至少在OS 350不需要如提示所指示的改变可用核池的程度上的提示。作为说明而非限制,OS 350可以基于信号339中的提示放弃、限制或以其他方式改变线程调度是否和/或如何适配。作为说明而非限制,在一些实施例中,线程调度器352能够访问附加信息(例如,描述不同线程的相应数据处理开销),这为确定线程360a、……、360x各自是否和/或如何分配给相应核提供附加基础。
在各实施例中,参考信息332还提供一个或多个附加标准(例如,除了第一优先级或第二优先级之外)以供评估器336进一步标识被包括在线程调度中(或从线程调度中被省略)的特定一个或多个核)。例如,当核单元310可用的功率量高于阈值功率水平时,此类进一步的标识被执行。在一个此类实施例中,对于处理器300的多个操作模式中的每一个,参考信息332进一步指示相应的效率度量集,这些效率度量各自对应于可用于支持所述操作模式的不同的相应功率量。评估器336的电路系统执行评估以标识多种操作模式中的操作模式,该操作模式将在高于阈值功率水平的功率递送期间提供处理器300的最有效操作。在各实施例中,PCU 330进一步向OS 350指定或以其他方式指示此类操作模式(例如,经由OS接口电路系统340)。
图4示出了图示根据实施例的用于确定处理器的操作模式的功率效率特性的图表400的特征。图表400表示处理器核(例如,包括核112和核114(或者,在另一个实施例中,包括核312和核314))的特性。在各实施例中,方法200的一个或多个操作是基于参考信息来执行的,参考信息指定或以其他方式指示诸如图表400中所示的那些特性。
如图4中的图例420所示,图表400包括效率分数410范围内的各种曲线图,其中曲线图各自对应于片上系统(SOC)上的处理器的不同的相应操作模式。处理器包括异构核(在该示例中,包括大核类型的第一核和小核类型的第二核),其中操作模式各自包括处于活动状态的异构核的不同的相应组合。在一个示例场景中,效率分数410根据例如由美国弗吉尼亚州盖恩斯维尔的标准性能评估公司开发的各种基准测试技术中的任一种来确定。
如图表400中所示,当可用SOC功率405在20W以上的范围内(例如)时,最有效的配置是具有处理器的(6b,8s)操作模式。在该特定上下文中,“(Xb,Ys)”表示其中X个大核和Y个小核处于活动状态的操作模式(其中X和Y都是整数)。然而,随着可用的SOC功率405变小(例如,在低于18W的范围内(例如)),图表400中所示的效率曲线不同程度地下降(和/或结束)。对图表400的审查示出,这些效率曲线不同程度地下降和/或结束的相对顺序和/或速率通常对应于曲线各自如何对应于一个或多个活动大核和/或一个或多个活动小核的相应组合。
例如,现在参考其中所有小核都处于活动状态的操作模式,当时,图表400中的(6b,8s)曲线随着SOC功率405下降到17.5W以下而下降到(4b,8s)曲线下方,而(4b,8s)曲线随着SOC功率405下降到14.25W以下而下降到(2b,8s)曲线下方,并且(2b,8s)曲线随着SOC功率405下降到11.0W以下而下降到(1b,8s)曲线下方。此外,图表400中的(1b,8s)曲线随着SOC功率405下降到9.25W以下而下降到(0b,8s)曲线下方,而(0b,8s)曲线随着SOC功率405下降到7.0W以下而下降到(0b,4s)曲线下方。
为了适应和/或利用诸如图表400中所示的功率效率特性,一些实施例以各种方式提供不同核类型的相对优先级,以促进一个或多个核的选择性停用(或替代地,激活)。例如,一些实施例提供大核类型优先于小核类型的第一优先级,以促进处理器基于SOC功率405的降低而过渡到不同的操作模式。在一个此类实施例中,该第一优先级至少部分确定一个或多个核中各自被标识为从线程调度考虑中被删除的候选者的顺序(例如,对操作系统的相应提示中)。从线程调度中给定核的此类移除促进停用该给定核以减轻效率下降,否则因SOC功率405降低到低于阈值功率水平Pth(在该示例实施例中为15W)的某个水平而导致效率下降。
附加地或替代地,一些实施例提供小核类型优先于大核类型的第二优先级,以促进处理器基于SOC功率405的增加而过渡到不同操作模式。在一个此类实施例中,该第二优先级至少部分确定一个或多个核中各自被标识为向线程调度考虑中添加的候选者的顺序(例如,对操作系统的相应提示中)。由于SOC功率405增加到低于阈值功率水平Pth的某个水平,因此在线程调度中给定核的此类包含促进激活该给定核以利用提高效率的机会。
图5A-图5C示出了根据实施例的由处理器提出线程调度的方法500的相应操作500a、500b、500c。方法500图示出一个实施例,其中PCU向操作系统发送至少一个提示,其中此类发送基于变化的功率状态的指示,并进一步基于检测一个或多个核处于活动状态而一个或多个其他核处于非活动状态的特定组合。在各实施例中,PCU有条件地相继向操作系统发送一个或多个第一提示(一个或多个第一提示每个提示针对给定核类型的相应核)直到测试条件得到满足,或直到目标核中的每一个处于相应非活动(或替代地,活动)状态。在一个此类实施例中,PCU进一步有条件地向操作系统发送一个或多个提示,该一个或多个提示各自针对不同核类型的相应核(直到测试条件得到满足,或直到每个经针对的核处于相应非活动(或替代地,活动)状态)。在各实施例中,方法500提供诸如方法200的功能(例如,其中方法500的一个或多个操作使用系统100或处理器300的电路系统执行)。
如图5A-5C所示,操作500a包括(在510处)监测处理器的功率状态(例如,其中处理器状态包括功率递送的一个或多个特性和/或处理器的一个或多个功率需求)。在实施例中,在510处的监测用于检测处理器的异构核(例如,核112和核114)可用功率的实际变化或预期未来变化的一个或多个标记。方法500进一步包括基于在510处的监测执行一个或多个评估,以确定处理器是否应该从当前操作模式过渡到另一个更高效的操作模式,其中此类过渡包括停用至少一个当前活动的处理器核(或者替代地,激活至少一个当前不活动的处理器核)。
作为说明而非限制,方法500执行评估(在511处),以确定供应给处理器的功率水平是否已更改(或预期更改)到低于某一预定阈值的水平。例如,在511处的评估确定处理器是否已过渡(或者替代地,预期过渡)到低于阈值频率的操作频率。替代地或附加地,在511处的评估确定供应给处理器的电压是否已更改(或预期更改)到低于阈值电压水平的水平。
如果在511处指示功率水平没有此类变化的指示,方法500在510处执行监测的下一个实例。否则,方法500执行评估(在512处),以确定鉴于检测到的功率水平变化,是否通过一个或多个核的停用实现处理器更高效的操作模式。如果在512处核停用被指示,方法500继续到图5B所示的操作500b。否则,方法500执行评估(在513处),以确定鉴于检测到的功率水平变化,是否通过一个或多个核的激活实现处理器更高效的操作模式。如果在513处核激活被指示,方法500继续到图5C所示的操作500c。否则,方法500在510处执行监测的下一个实例。
如图5B所示,操作500b包括执行评估(在516处),以确定至少一个大核当前是否处于相应活动状态(并且因此可用于过渡到非活动状态)。如果在516处确定至少一个大核当前处于活动状态,方法500(在517处)从一个或多个当前活动的大核中标识“目标”核,作为可能停用的下一个候选者。然后,方法500将提示(在518处)传送到使用处理器执行的操作系统,其中提示指示最近在517处标识的目标大核。例如,在518处的提示包括功率控制单元写入模式寄存器,发出软件中断,或以其他方式发信号通知,以将目标大核标识为从可用于线程调度的核池中删除的候选者。在518处的提示后,方法500执行评估(在519处),以确定最近提供的提示是否通过处理器的功率状态满足某一预定的测试条件(例如,其中所述测试条件对应于某一效率阈值的满足和/或以其他方式表明处理器成功过渡到预期更高效的操作模式)。当在519处的评估检测到所述条件的满足时,方法500在510处执行监测的下一个实例。否则,方法500在516处执行评估的实例。
相反,如果在516处确定一个或多个大核中的每个当前处于非活动,方法500执行评估(在520处),以确定至少两个或更多个小核当前各自是否处于相应活动状态(并且因此可用于过渡到非活动状态)。如果在520处确定当前活动的小核不超过一个,方法500在519处执行评估的下一个实例。否则,方法500(在521处)从两个或更多个当前活动的小核中标识目标核,作为可能停用的下一个候选者。然后,方法500向操作系统(在522处)传送提示,该提示指示最近在521处标识的目标小核。在522处的提示之后,方法500在519处执行评估的下一个实例。
如图5C所示,操作500c包括执行评估(在524处),以确定至少一个小核当前是否处于相应非活动状态(并且因此可用于过渡到活动状态)。如果在524处确定至少一个小核当前处于非活动,方法500(在525处)从一个或多个当前非活动的小核中标识下一个目标核。然后,方法500(在526处)向操作系统传送提示,以指示最近在525处标识的目标小核是被添加到可用于线程调度的核池中的候选者。在526处的提示后,方法500执行评估(在527处),以确定最近提供的提示是否满足某一预定的测试条件(例如,其中该测试条件对应于某一效率阈值的满足和/或以其他方式表明处理器成功过渡到预期更高效的操作模式)。当在527处的评估检测到所述条件的满足时,方法500在510处执行监测的下一个实例。否则,方法500在524处执行评估的下一个实例。
相反,如果在524处确定小核中的每个当前处于活动,方法500执行评估(在528处),以确定一个或多个大核当前各自是否处于相应非活动状态(并且因此可用于过渡到活动状态)。如果在528处确定一个或多个大核当前都不处于非活动,方法500在527处执行评估的下一个实例。否则,方法500(在529处)从一个或多个当前非活动的大核中标识目标核,作为可能停用的下一个候选者。然后,方法500(在530处)向操作系统传送提示,以指示最近在529处标识的目标大核是被添加到可用于线程调度的核池中的候选者。在530处的提示之后,方法500在527处执行评估的下一个实例。
如图5B所示,操作500b包括执行评估(在516处),以确定至少一个大核当前是否处于相应活动状态(并且因此可用于过渡到非活动状态)。如果在516处确定至少一个大核当前处于活动状态,方法500(在517处)从一个或多个当前活动的大核中标识“目标”核,作为可能停用的下一个候选者。然后,方法500将提示(在518处)传送到使用处理器执行的操作系统,其中提示指示最近在517处标识的目标大核。例如,在518处的提示包括功率控制单元写入模式寄存器,发出软件中断,或以其他方式发信号通知,以标识目标大核作为从可用于线程调度的核池中删除的候选者。在518处的提示后,方法500执行评估(在519处),以确定最近提供的提示是否通过处理器的功率状态满足某一预定的测试条件(例如,其中所述测试条件以其他方式表明处理器成功过渡到预计更高效的操作模式)。当在519处的评估检测到所述条件的满足时,方法500在510处执行下一个监测的实例。否则,方法500在516处执行评估的下一个实例。
相反,如果在516处确定一个或多个大核中的每个当前处于非活动,方法500执行评估(在520处),以确定至少两个或更多个小核当前各自是否处于相应活动状态(并且因此可用于过渡到非活动状态)。如果在520处确定当前活动的小核不超过一个,方法500在519处执行评估的下一个实例。否则,方法500(在521处)从两个或更多个当前活动的小核中标识目标核,作为可能停用的下一个候选者。然后,方法500向操作系统(在522处)传送提示,该提示指示最近在521处标识的目标小核。在522处的提示之后,方法500在519处执行评估的下一个实例。
图6示出了表示根据实施例的用于向操作系统提供线程调度信息的进程的伪代码600。在各实施例中,诸如由伪代码600表示的算法之类的算法使用PCU 130或PCU 330的硬件和/或其他合适的逻辑执行(例如,该算法包括方法200、500中的一个的操作)。
由伪代码600表示的算法(例如,使用PCU的功率管理固件(“pcode”)执行)为包含N个异构核(其中N是大于1的整数)的处理器提供提示。提示用于建议,对于使用处理器执行的操作系统,N个核中的特定一个应该包含在线程调度中,或者替代地从线程调度中删除(例如,如果此类包含或省略用于促进(分别)建议核的激活或停用)。
在伪代码600中,N个核的第i个核表示为c(i),其中“i”是可能的核索引值集{0、……、(N-1)}中的任何整数。在所示的说明性实施例中,N个核包括m个核(表示为c(0)、……、c(m-1)),m个核中的每一个核是小核类型(其中m<N)。N个核进一步包括(N-m)个其他核(表示为c(m)、……、c(N-1)),(N-m)个核中的每一个是大核类型。多核处理器的性能约束包括最低电源电压水平(本文表示为Vcc_min),该水平支持处理器的一个或多个核各自处于用于实现线程执行的相应活动状态。操作频率(本文表示为Fmax[Vcc_min])对应于电源电压为Vcc_min水平时处理器的最大功率效率。
如伪代码600中所指示,给定小核的停用(例如,将线程执行整合到更少的核上以响应于可用功率的降低)仅在一个或多个大核的全部当前处于非活动时发生。替代地,大核的激活(例如,当可用功率增加时促进效率的提高)仅在所有小核当前处于活动时发生。相对应地,由伪代码600表示的算法实现第一优先级,该第一优先级提供顺序c(0)、……、c(m-1)、c(m)、……、c(N-1)(从最高优先级核到最低优先级的核),根据该顺序,接下来向操作系统提示特定的当前非活动核以供激活并包含在线程调度中。在第一优先级中,m个小核优先于(N-m)个大核中的每一个。该算法进一步实现第二优先级,该第二优先级提供不同的顺序c(N-1)、……、c(m)、c(m-1)、……、c(0)(从最高优先级核到最低优先级核),根据该顺序,接下来向操作系统提示特定的当前非活动核以供停用并排除在线程调度外。在第二优先级中,(N-m)个大核优先于m个小核中的每一个。
尽管一些实施例在这方面不受限制,伪代码600进一步评估一个或多个滞后条件以确定给定核是否或如何在对OS的提示中建议。作为说明而非限制,此类滞后条件(例如,基于相对应的阈值来进行评估的滞后条件)包括操作频率fc已经低于(或替代地,高于)Fmax[Vcc_min]的时间量,操作频率fc低于(或替代地,高于)Fmax[Vcc_min]的程度、操作频率fc的变化率等。在一个此类实施例中,滞后断开条件包括可用功率的量超过(或预期超过)阈值电平(诸如在图表400中示出的功率电平Pth)的指示(包括电源电压电平、操作频率等)。然而,其他实施例不限于此类滞后要被应用的特定方式(如果有的话)。在各实施例中,此类滞后的应用包括(例如)适配自用于控制处理器功耗的传统技术的操作。
本文中描述的附图详述了用于实现上文的实施例的示例性架构和系统。在一些实施例中,本文中所描述的一个或多个硬件组件和/或指令如下文所详述地被仿真,或被实现为软件模块。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、并且在不同的处理器中实现。例如,此类核的实现方式可包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现方式可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图7A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。图7B是图示根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图7A至图7B中的实线框图示有序流水线和有序核,而任选增加的虚线框图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也被称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处置级722和提交级724。
图7B示出处理器核790,该处理器核790包括前端单元730,该前端单元730耦合到执行引擎单元750,并且前端单元730和执行引擎单元750两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核790可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元730包括分支预测单元732,该分支预测单元732耦合到指令高速缓存单元734,该指令高速缓存单元734耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器736耦合到指令取出单元738,该指令取出单元738耦合到解码单元740。解码单元740(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括用于存储某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元740中或以其他方式在前端单元730内)。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元752耦合到引退单元754和一个或多个调度器单元的集合756。(多个)调度器单元756表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元756耦合至(多个)物理寄存器堆单元758。(多个)物理寄存器堆单元758中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(多个)物理寄存器堆单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元758由引退单元754重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、和(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元754和(多个)物理寄存器堆单元758耦合到(多个)执行集群760。(多个)执行集群760包括一个或多个执行单元的集合762以及一个或多个存储器访问单元的集合764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元756、(多个)物理寄存器堆单元758和(多个)执行集群760示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元764的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合764耦合到存储器单元770,该存储器单元770包括数据TLB单元772,该数据TLB单元772耦合到数据高速缓存单元774,该数据高速缓存单元774耦合到第二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可如下所述地实现流水线700:1)指令取出738执行取出级702和长度解码级704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)(多个)调度器单元756执行调度级712;5)(多个)物理寄存器堆单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和(多个)物理寄存器堆单元758执行写回/存储器写入级718;7)各单元可涉及异常处置级722;以及8)引退单元754和(多个)物理寄存器堆单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加缩放)),其中包括本文中描述的(多条)指令。在一个实施例中,核790包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管处理器的所图示的实施例还包括分开的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图8A-图8B图示更具体的示例性有序核架构的框图,该核会是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图8A是根据本发明的实施例的单个处理器核以及它至管芯上互连网络802的连接及其第二级(L2)高速缓存的本地子集804的框图。在一个实施例中,指令解码器800支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存806允许进入标量和向量单元中的、对高速缓存存储器的低等待时间的访问。尽管在一个实施例中(为了简化设计),标量单元808和向量单元810使用分开的寄存器集合(分别为标量寄存器812和向量寄存器814),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存806读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集804是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集804的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集804中,并且可以与其他处理器核访问它们自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在该处理器核自身的L2高速缓存子集804中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图8B是根据本发明的实施例的图8A中的处理器核的一部分的展开图。图8B包括L1高速缓存806的L1数据高速缓存806A部分,以及关于向量单元810和向量寄存器814的更多细节。具体而言,向量单元810是16宽向量处理单元(VPU)(参见16宽ALU 828),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU利用混合单元820支持对寄存器输入的混合,利用数值转换单元822A-B支持数值转换,并且利用复制单元824支持对存储器输入的复制。写掩码寄存器826允许断言所得的向量写入。
图9是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器900的框图。图9中的实线框示出具有单个核902A、系统代理910、一个或多个总线控制器单元的集合916的处理器900,而可选附加的虚线框示出具有多个核902A-N、系统代理单元910中的一个或多个集成存储器控制器单元的集合914以及专用逻辑908的替代处理器900。
由此,处理器900的不同实现方式可包括:1)CPU,其中专用逻辑908是集成图形器件和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核902A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核902A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核902A-N是大量通用有序核。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。处理器可以被实现在一个或多个芯片上。处理器900可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层级结构包括核904A-N内的一个或多个级别的相应高速缓存902A-N、一个或多个共享高速缓存单元的集合906、以及耦合到集成存储器控制器单元的集合914的外部存储器(未示出)。共享高速缓存单元的集合906可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元912将专用逻辑908、共享高速缓存单元的集合906、以及系统代理单元910/(多个)集成存储器控制器单元914互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元906与核902A-N之间维持一致性。
在一些实施例中,核902A-N中的一个或多个能够实现多线程化。系统代理910包括协调并操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核902A-N以及专用逻辑908的功率状态进行调节所需的逻辑和组件,或者可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同构的或异构的;即,核902A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图10至图13是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图10,所示出的是根据本发明一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1040和协处理器1045直接耦合到处理器1010,并且控制器中枢1020与IOH 1050处于单个芯片中。
附加的处理器1015的任选性在图10中通过虚线来表示。每一处理器1010、1015可包括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1095来与(多个)处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
按照包括架构、微架构、热、功耗特征等优点的一系列度量,处理器1010、1015之间可能存在各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为具有应当由附连的协处理器1045执行的类型。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1045。(多个)协处理器1045接受并执行所接收的协处理器指令。
现在参考图11,所示出的是根据本发明的实施例的第一更具体的示例性系统1100的框图。如图11中所示,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个都可以是处理器900的某一版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010、协处理器1045。
处理器1170和1180示出为分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以经由使用点对点(P-P)接口电路1178、1188的P-P互连1150来交换信息。如图11中所示,IMC 1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154来与芯片组1190交换信息。芯片组1190可以任选地经由高性能接口1192和互连1139来与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1190可以经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图11中所示,各种I/O设备1114可连同总线桥1118一起耦合到第一总线1116,该总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1120,在一个实施例中这些设备包括例如键盘和/或鼠标1122、通信设备1127以及存储单元1128,该存储单元1128诸如可包括指令/代码和数据1130的盘驱动器或其他大容量存储设备。此外,音频I/O 1124可耦合到第二总线1120。注意,其他架构是可能的。例如,代替图11的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图12,所示为根据本发明的实施例的更具体的第二示例性系统1200的框图。图11和图12中的类似元件使用类似附图标记,且在图12中省略了图11的某些方面以避免使图12的其他方面模糊。
图12图示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元,并包括I/O控制逻辑。图12示出不仅存储器1132、1134耦合至CL 1272、1282,而且I/O设备1214也耦合至控制逻辑1272、1282。传统I/O设备1215被耦合到芯片组1190。
现在参考图13,所示出的是根据本发明的实施例的SoC 1300的框图。图9中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图13中,(多个)互连单元1302被耦合到:应用处理器1310,其包括一个或多个核的集合902A-N以及(多个)共享高速缓存单元906;系统代理单元910;(多个)总线控制器单元916;(多个)集成存储器控制器单元914;一个或多个协处理器的集合1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器访问(DMA)单元1332;以及用于耦合到一个或多个外部显示器的显示单元1340。在一个实施例中,(多个)协处理器1320包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图11中图示的代码1130)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并且可以被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧凑盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也可被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图14是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图14示出可使用x86编译器1402来编译高级语言1404形式的程序,以生成可由具有至少一个x86指令集核的处理器1406原生执行的x86二进制代码1416。具有至少一个x86指令集核的处理器1416表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1404表示可操作用于生成x86二进制代码1406(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1416上执行。类似地,图14示出可以使用替代的指令集编译器1402来编译高级语言1408形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1414(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1410。指令转换器1412用于将x86二进制代码1406转换成可以由不具有x86指令集核的处理器1414原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1410相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1412通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1406的软件、固件、硬件或其组合。
在一个或多个第一实施例中,处理器包括:每个第一类型的一个或多个第一核,该第一类型对应于第一级功耗;每个第二类型的多个第二核,该第二类型对应于低于第一级功耗的第二级功耗;以及用于检测处理器的第一操作模式的低效率的功率控制单元电路系统,其中功率控制单元电路系统用于检测在低效率期间处理器可用的功率量将低于阈值水平的指示;以及生成处理器基于指示过渡到第二操作模式的提示,其中提示指示处理器根据第一类型优先于第二类型的第一优先级而停用处理器的第一一个或多个核,或者处理器根据第二类型优先于第一类型的第二优先级而激活处理器的第二一个或多个核。
在一个或多个第二实施例中,在第一实施例的进一步,低效率是第一低效率,提示是指示处理器根据第一优先级而停用第一一个或多个核的第一提示,功率控制单元电路系统进一步用于检测处理器的第三操作模式的第二低效率,第二低效率是指示高于阈值水平时的效率;以及生成处理器基于第二指示过渡到第四操作模式的第二提示,其中第二提示指示处理器根据第二优先级而激活另一一个或多个核。
在一个或多个第三实施例中,在第一实施例的进一步,检测低效率包括检测从大于第一级的第二级向第一级的指示的变化,并且其中,基于该指示,提示指示处理器根据第一优先级而停用第一一个或多个核。
在一个或多个第四实施例中,在第三实施例的进一步,功率控制单元电路系统基于指示和其中第二核中的每个处于相应活动状态的条件两者发送提示,并且一个或多个第一核中的至少一个处于相应活动状态,其中提示标识一个或多个第一核中的一个。
在一个或多个第五实施例中,在第四实施例的进一步,基于指示,功率控制单元电路系统用于相继发送第一提示,直到测试条件得到满足,或直到一个或多个第一核中的每个第一核处于相应非活动状态,其中第一提示各自标识一个或多个第一核中相应的第一核。
在一个或多个第六实施例中,在第五实施例的进一步,基于指示,功率控制单元电路系统进一步用于相继发送第二提示,直到测试条件得到满足,或直到一个或多个第一核中的仅一个第一核处于活动状态,其中第二提示各自标识第二核中相应的第二核。
在一个或多个第七实施例中,在第一实施例的进一步,检测低效率包括检测从小于第一级的第二级向第一级的指示的变化,并且其中,基于该指示,提示指示处理器根据第二优先级而激活第二一个或多个核。
在一个或多个第八实施例中,在第七实施例的进一步,功率控制单元电路系统基于指示和其中一个或多个第一核中的每个处于相应非活动状态同时第二核中的一个处于相应非活动状态的条件两者发送提示,其中提示标识第二核中的一个。
在一个或多个第九实施例中,在第八实施例的进一步,基于指示,功率控制单元电路系统相继发送第一提示,直到测试条件得到满足,或直到第二核中的每个第二核处于相应活动状态,其中第一提示各自标识第二核中相应的第二核。
在一个或多个第十实施例中,在第九实施例的进一步,基于指示,功率控制单元电路系统进一步用于相继发送第二提示,直到测试条件得到满足,或直到一个或多个第一核中的每个第一核处于活动状态,其中第二提示各自标识一个或多个第一核中相应的第一核。
在一个或多个第十一实施例中,一种处理器的功率控制单元处的方法,该方法包括:检测处理器的第一操作模式的低效率,包括检测在低效率期间,处理器可用的功率将低于阈值水平的指示,其中处理器的一个或多个第一核是每个第一类型的一个或多个第一核,该第一类型对应于第一级功耗,并且处理器的多个第二核是每个第二类型的多个第二核,该第二类型对应于低于第一级功耗的第二级功耗;生成处理器基于指示过渡到第二操作模式的提示,其中提示指示处理器根据第一类型优先于第二类型的第一优先级而停用处理器的第一一个或多个核,或者处理器根据第二类型优先于第一类型的第二优先级而激活处理器的第二一个或多个核。
在一个或多个第十二实施例中,第十一实施例更进一步,低效率是第一低效率,其中提示是指示处理器根据第一优先级而停用第一一个或多个核的第一提示,方法进一步包括:检测处理器的第三操作模式的第二低效率,第二低效率是指示高于阈值水平时的效率;以及生成处理器基于第二指示过渡到第四操作模式的第二提示,其中第二提示指示处理器根据第二优先级而激活另一一个或多个核。
在一个或多个第十三实施例中,在第十一实施例的进一步,检测低效率包括检测从大于第一级的第二级向第一级的指示的变化,并且其中,基于该指示,提示指示处理器根据第一优先级而停用第一一个或多个核。
在一个或多个第十四实施例中,在第十三实施例的进一步,功率控制单元基于指示和其中第二核中的每个处于相应活动状态的条件两者发送提示,并且一个或多个第一核中的至少一个处于相应活动状态,其中提示标识一个或多个第一核中的一个。
在一个或多个第十五实施例中,在第十四实施例的进一步,基于指示,功率控制单元相继发送第一提示,直到测试条件得到满足,或直到一个或多个第一核中的每个第一核处于相应非活动状态,其中第一提示各自标识一个或多个第一核中相应的第一核。
在一个或多个第十六实施例中,在第十五实施例的进一步,基于指示,功率控制单元进一步相继发送第二提示,直到测试条件得到满足,或直到一个或多个第一核中的仅一个第一核处于活动状态,其中第二提示各自标识第二核中相应的第二核。
在一个或多个第十七实施例中,在第十一实施例的进一步,检测低效率包括检测从小于第一级的第二级向第一级的指示的变化,并且其中,基于该指示,提示指示处理器根据第二优先级而激活第二一个或多个核。
在一个或多个第十八实施例中,在第十七实施例的进一步,功率控制单元基于指示和其中一个或多个第一核中的每个处于相应非活动状态同时第二核中的一个处于相应非活动状态的条件两者发送提示,其中提示标识第二核中的一个。
在一个或多个第十九实施例中,在第十八实施例的进一步,基于指示,功率控制单元相继发送第一提示,直到测试条件得到满足,或直到第二核中的每个第二核处于相应活动状态,其中第一提示各自标识第二核中相应的第二核。
在一个或多个第二十实施例中,在第十九实施例的进一步,基于指示,功率控制单元进一步相继发送第二提示,直到测试条件得到满足,或直到一个或多个第一核中的每个第一核处于活动状态,其中第二提示各自标识一个或多个第一核中相应的第一核。
在一个或多个第二十一实施例中,系统包括:处理器,该处理器包括:每个第一类型的一个或多个第一核,该第一类型对应于第一级功耗;每个第二类型的多个第二核,该第二类型对应于低于第一级功耗的第二级功耗;以及用于检测处理器的第一操作模式的低效率的功率控制单元电路系统,其中功率控制单元电路系统用于检测在低效率期间处理器可用的功率量将低于阈值水平的指示;以及生成处理器基于指示过渡到第二操作模式的提示,其中提示指示处理器根据第一类型优先于第二类型的第一优先级而停用处理器的第一一个或多个核,或者处理器根据第二类型优先于第一类型的第二优先级而激活处理器的第二一个或多个核;以及耦合至处理器的显示设备,该显示设备用于显示基于与一个或多个第一核或多个第二核中的一个通信的信号的图像。
在一个或多个第二十二实施例中,在第二十一实施例的进一步,低效率是第一低效率,提示是指示处理器根据第一优先级而停用第一一个或多个核的第一提示,功率控制单元电路系统进一步用于检测处理器的第三操作模式的第二低效率,第二低效率是指示高于阈值水平时的效率;以及生成处理器基于第二指示过渡到第四操作模式的第二提示,其中第二提示指示处理器根据第二优先级而激活另一一个或多个核。
在一个或多个第二十三实施例中,在第二十一实施例的进一步,检测低效率包括检测从大于第一级的第二级向第一级的指示的变化,并且其中,基于该指示,提示指示处理器根据第一优先级而停用第一一个或多个核。
在一个或多个第二十四实施例中,在第二十三实施例的进一步,功率控制单元电路系统基于指示和其中第二核中的每个处于相应活动状态的条件两者发送提示,并且一个或多个第一核中的至少一个处于相应活动状态,其中提示标识一个或多个第一核中的一个。
在一个或多个第二十五实施例中,在第二十四实施例的进一步,基于指示,功率控制单元电路系统相继发送第一提示,直到测试条件得到满足,或直到一个或多个第一核中的每个第一核处于相应非活动状态,其中第一提示各自标识一个或多个第一核中相应的第一核。
在一个或多个第二十六实施例中,在第二十五实施例的进一步,基于指示,功率控制单元电路系统进一步用于相继发送第二提示,直到测试条件得到满足,或直到一个或多个第一核中的仅一个第一核处于活动状态,其中第二提示各自标识第二核中相应的第二核。
在一个或多个第二十七实施例中,在第二十一实施例的进一步,检测低效率包括检测从小于第一级的第二级向第一级的指示的变化,并且其中,基于该指示,提示指示处理器根据第二优先级而激活第二一个或多个核。
在一个或多个第二十八实施例中,在第二十七实施例的进一步,功率控制单元电路系统基于指示和其中一个或多个第一核中的每个处于相应非活动状态同时第二核中的一个处于相应非活动状态的条件两者发送提示,其中提示标识第二核中的一个。
在一个或多个第二十九实施例中,在第二十八实施例的进一步,基于指示,功率控制单元电路系统相继发送第一提示,直到测试条件得到满足,或直到第二核中的每个第二核处于相应活动状态,其中第一提示各自标识第二核中相应的第二核。
在一个或多个第三十实施例中,在第二十九实施例的进一步,基于指示,功率控制单元电路系统进一步用于相继发送第二提示,直到测试条件得到满足,或直到一个或多个第一核中的每个第一核处于活动状态,其中第二提示各自标识一个或多个第一核中相应的第一核。
本文描述了用于确定多核处理器的操作模式的技术和架构。在上文描述中,出于解释的目的,阐述了众多具体细节以提供对某些实施例的透彻理解。然而,对本领域技术人员而言将显而易见的是,某些实施例可在无需这些具体细节的情况下实施。在其他实例中,以框图形式示出结构和设备以避免使描述模糊。
在说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中的不同位置处出现短语“在一个实施例中”不一定全都指同一个实施例。
本文中的详细描述的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述和表示是计算机领域内技术人员使用的手法,它最有效地将其工作本质传达给本领域内其它技术人员。算法在本文中被一般地构思成达到所要求结果的自洽步骤序列。这些步骤是需要对物理量进行物理操纵的那些步骤。通常但非必须,这些量采用能够被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、元素、符号、字符、项、数字等已被证明有时是方便的。
然而,应当记住,所有这些和类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非以其他方式明确指明,否则如从本文的讨论中显而易见的,可以理解,贯穿说明书,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论,指的是计算机系统或类似电子计算设备的动作和进程,该计算机系统或类似电子计算设备操纵在该计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其转换成在该计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
某些实施例还涉及用于执行本文中的操作的装置。该装置可专门构造来用于所需目的,或其可包括通用计算机,该通用计算机由存储在该计算机内的计算机程序有选择地激活或重新配置。此类计算机程序可以存储在计算机可读存储介质中,这些计算机可读存储介质诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、诸如动态随机存取存储器(RAM)(DRAM)的RAM、EPROM、EEPROM、磁卡或光卡、或适用于存储电子指令且耦合至计算机系统总线的任何类型的介质。
本文中呈现的算法和显示并非固有地与任何特定计算机或其他装置相关。可以将各种通用系统与根据本文中的教导的程序一起使用,或可以证明构造更专门的装置来执行所要求的方法步骤是方便的。各种这些系统的所需结构将从本文中的描述呈现。此外,某些实施例不是参考任何特定编程语言来描述的。将会理解,可以使用各种编程语言来实现本文所描述的此类实施例的教导。
除了本文所描述的内容,可对所公开的实施例及其实现方式作出各种修改而不背离其范围。因此,本文中的说明和示例应当被解释成说明性的,而非限制性的。本发明的范围应当仅通过参照所附权利要求书来界定。
Claims (25)
1.一种用于确定功率控制信息的处理器,所述处理器包括:
每个第一类型的一个或多个第一核,所述第一类型对应于第一级功耗;
每个第二类型的多个第二核,所述第二类型对应于低于所述第一级功耗的第二级功耗;以及
功率控制单元电路系统用于:
检测所述处理器的第一操作模式的低效率,其中功率控制单元电路系统用于检测在所述低效率期间对所述处理器可用的功率量将低于阈值水平的指示;以及
生成所述处理器基于所述指示过渡到第二操作模式的提示,其中所述提示指示:
所述处理器根据所述第一类型优先于所述第二类型的第一优先级而停用所述处理器的第一一个或多个核;或者
所述处理器根据所述第二类型优先于所述第一类型的第二优先级而激活所述处理器的第二一个或多个核。
2.如权利要求1所述的处理器,其中:
所述低效率是第一低效率;
所述提示是指示所述处理器根据所述第一优先级而停用所述第一一个或多个核的第一提示;
所述功率控制单元电路系统进一步用于:
检测所述处理器的第三操作模式的第二低效率,所述第二低效率是在所述指示高于所述阈值水平时的效率;以及
生成所述处理器基于第二指示过渡到第四操作模式的第二提示,其中所述第二提示指示所述处理器根据所述第二优先级而激活另一一个或多个核。
3.如权利要求1或权利要求2所述的处理器,其中检测所述低效率包括检测从大于第一级的第二级向所述第一级的指示的变化,并且其中,基于所述指示,提示指示所述处理器根据所述第一优先级而停用所述第一一个或多个核。
4.如权利要求3所述的处理器,其中所述功率控制单元电路系统基于所述指示和其中所述第二核中的每个处于相应活动状态的条件两者发送所述提示,并且所述一个或多个第一核中的至少一个第一核处于相应活动状态,其中所述提示标识所述一个或多个第一核中的一个第一核。
5.如权利要求4所述的处理器,其中基于所述指示,所述功率控制单元电路系统相继发送第一提示,直到测试条件得到满足,或直到所述一个或多个第一核中的每个第一核处于相应非活动状态,其中所述第一提示各自标识所述一个或多个第一核中相应的第一核。
6.如权利要求5所述的处理器,基于所述指示,所述功率控制单元电路系统进一步用于相继发送第二提示,直到所述测试条件得到满足,或直到所述一个或多个第一核中的仅一个第一核处于活动状态,其中所述第二提示各自标识所述第二核中相应的第二核。
7.如权利要求1或权利要求2所述的处理器,其中检测所述低效率包括检测从小于第一级的第二级向所述第一级的指示的变化,并且其中,基于所述指示,提示指示所述处理器根据所述第二优先级而激活所述第二一个或多个核。
8.如权利要求7所述的处理器,其中所述功率控制单元电路系统基于所述指示和其中所述一个或多个第一核中的每个第一核处于相应非活动状态同时所述第二核中的一个第二核处于相应非活动状态的条件两者发送所述提示,其中所述提示标识所述第二核中的所述一个第二核。
9.如权利要求8所述的处理器,其中基于所述指示,所述功率控制单元电路系统相继发送第一提示,直到测试条件得到满足,或直到所述第二核中的每个第二核处于相应活动状态,其中所述第一提示各自标识所述第二核中相应的第二核。
10.如权利要求9所述的处理器,基于所述指示,所述功率控制单元电路系统进一步用于相继发送第二提示,直到所述测试条件得到满足,或直到所述一个或多个第一核中的每个第一核处于活动状态,其中所述第二提示各自标识所述一个或多个第一核中相应的第一核。
11.一种处理器的功率控制单元处用于确定功率控制信息的方法,所述方法包括:
检测所述处理器的第一操作模式的低效率,包括检测在所述低效率期间,对所述处理器可用的功率量将低于阈值水平的指示,其中所述处理器的一个或多个第一核是每个第一类型的一个或多个第一核,所述第一类型对应于第一级功耗,并且所述处理器的多个第二核是每个第二类型的多个第二核,所述第二类型对应于低于所述第一级功耗的第二级功耗;
生成所述处理器基于所述指示过渡到第二操作模式的提示,其中所述提示指示:
所述处理器根据所述第一类型优先于所述第二类型的第一优先级而停用所述处理器的第一一个或多个核;或者
所述处理器根据所述第二类型优先于所述第一类型的第二优先级而激活所述处理器的第二一个或多个核。
12.如权利要求11所述的方法,其中所述低效率是第一低效率,其中所述提示是指示所述处理器根据所述第一优先级而停用所述第一一个或多个核的第一提示,所述方法进一步包括:
检测所述处理器的第三操作模式的第二低效率,所述第二低效率是所述指示高于所述阈值水平时的效率;以及
生成所述处理器基于第二指示过渡到第四操作模式的第二提示,其中所述第二提示指示所述处理器根据所述第二优先级而激活另一一个或多个核。
13.如权利要求11或权利要求12所述的方法,其中检测所述低效率包括检测从大于第一级的第二级向所述第一级的指示的变化,并且其中,基于所述指示,提示指示所述处理器根据所述第一优先级而停用所述第一一个或多个核。
14.如权利要求13所述的方法,其中所述功率控制单元基于所述指示和其中所述第二核中的每个处于相应活动状态的条件两者发送所述提示,并且所述一个或多个第一核中的至少一个第一核处于相应活动状态,其中所述提示标识所述一个或多个第一核中的一个第一核。
15.如权利要求14所述的方法,其中基于所述指示,所述功率控制单元相继发送第一提示,直到测试条件得到满足,或直到所述一个或多个第一核中的每个第一核处于相应非活动状态,其中所述第一提示各自标识所述一个或多个第一核中相应的第一核。
16.如权利要求11或权利要求12所述的方法,其中检测所述低效率包括检测从小于第一级的第二级向所述第一级的指示的变化,并且其中,基于所述指示,提示指示所述处理器根据所述第二优先级而激活所述第二一个或多个核。
17.如权利要求16所述的方法,其中所述功率控制单元基于所述指示和其中所述一个或多个第一核中的每个第一核处于相应非活动状态同时所述第二核中的一个第二核处于相应非活动状态的条件两者发送所述提示,其中所述提示标识所述第二核中的所述一个第二核。
18.如权利要求17所述的方法,其中基于所述指示,所述功率控制单元相继发送第一提示,直到测试条件得到满足,或直到所述第二核中的每个第二核处于相应活动状态,其中所述第一提示各自标识所述第二核中相应的第二核。
19.一种用于确定功率控制信息的系统,所述系统包括:
处理器,所述处理器包括:
每个第一类型的一个或多个第一核,所述第一类型对应于第一级功耗;
每个第二类型的多个第二核,所述第二类型对应于低于所述第一级功耗的第二级功耗;以及
功率控制单元电路系统用于:
检测所述处理器的第一操作模式的低效率,其中功率控制单元电路系统用于检测在所述低效率期间对所述处理器可用的功率量将低于阈值水平的指示;以及
生成所述处理器基于所述指示过渡到第二操作模式的提示,其中所述提示指示:
所述处理器根据所述第一类型优先于所述第二类型的第一优先级而停用所述处理器的第一一个或多个核;或者
所述处理器根据所述第二类型优先于所述第一类型的第二优先级而激活所述处理器的第二一个或多个核;以及
耦合至所述处理器的显示设备,所述显示设备用于基于与所述一个或多个第一核或所述多个第二核中的一个通信的信号而显示图像。
20.如权利要求19所述的系统,其中:
所述低效率是第一低效率;
所述提示是指示所述处理器根据所述第一优先级而停用所述第一一个或多个核的第一提示;
所述功率控制单元电路系统进一步用于:
检测所述处理器的第三操作模式的第二低效率,所述第二低效率是所述指示高于所述阈值水平时的效率;以及
生成所述处理器基于第二指示过渡到第四操作模式的第二提示,其中所述第二提示指示所述处理器根据所述第二优先级而激活另一一个或多个核。
21.如权利要求19或权利要求20所述的系统,其中检测所述低效率包括检测从大于第一级的第二级向所述第一级的指示的变化,并且其中,基于所述指示,提示指示所述处理器根据所述第一优先级而停用所述第一一个或多个核。
22.如权利要求19或权利要求20所述的系统,其中检测所述低效率包括检测从小于第一级的第二级向所述第一级的指示的变化,并且其中,基于所述指示,提示指示所述处理器根据所述第二优先级而激活所述第二一个或多个核。
23.如权利要求22所述的系统,其中所述功率控制单元电路系统基于所述指示和其中所述一个或多个第一核中的每个第一核处于相应非活动状态同时所述第二核中的一个第二核处于相应非活动状态的条件两者发送所述提示,其中所述提示标识所述第二核中的所述一个第二核。
24.如权利要求23所述的系统,其中基于所述指示,所述功率控制单元电路系统相继发送第一提示,直到测试条件得到满足,或直到所述第二核中的每个第二核处于相应活动状态,其中所述第一提示各自标识所述第二核中相应的第二核。
25.如权利要求24所述的系统,基于所述指示,所述功率控制单元电路系统进一步用于相继发送第二提示,直到所述测试条件得到满足,或直到所述一个或多个第一核中的每个第一核处于活动状态,其中所述第二提示各自标识所述一个或多个第一核中相应的第一核。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/374,728 US20230018828A1 (en) | 2021-07-13 | 2021-07-13 | Device, method and system to provide thread scheduling hints to a software process |
US17/374,728 | 2021-07-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617470A true CN115617470A (zh) | 2023-01-17 |
Family
ID=81345999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210730660.XA Pending CN115617470A (zh) | 2021-07-13 | 2022-06-24 | 用于向软件进程提供线程调度提示的设备、方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230018828A1 (zh) |
EP (1) | EP4120081A1 (zh) |
KR (1) | KR20230011215A (zh) |
CN (1) | CN115617470A (zh) |
TW (1) | TW202303389A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102205836B1 (ko) * | 2014-01-29 | 2021-01-21 | 삼성전자 주식회사 | 태스크 스케줄링 방법 및 장치 |
US9424092B2 (en) * | 2014-09-26 | 2016-08-23 | Microsoft Technology Licensing, Llc | Heterogeneous thread scheduling |
KR20180107948A (ko) * | 2017-03-23 | 2018-10-04 | 한국전자통신연구원 | 이종 멀티코어 시스템 기반 거버너 제어 장치 및 방법 |
-
2021
- 2021-07-13 US US17/374,728 patent/US20230018828A1/en active Pending
-
2022
- 2022-03-18 TW TW111110100A patent/TW202303389A/zh unknown
- 2022-03-25 KR KR1020220037111A patent/KR20230011215A/ko unknown
- 2022-03-31 EP EP22166196.0A patent/EP4120081A1/en active Pending
- 2022-06-24 CN CN202210730660.XA patent/CN115617470A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230018828A1 (en) | 2023-01-19 |
EP4120081A1 (en) | 2023-01-18 |
TW202303389A (zh) | 2023-01-16 |
KR20230011215A (ko) | 2023-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112445529A (zh) | 软件辅助功率管理 | |
CN106708753B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN112445310A (zh) | 主动di/dt电压下降抑制 | |
CN105144082B (zh) | 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择 | |
US9727345B2 (en) | Method for booting a heterogeneous system and presenting a symmetric core view | |
KR102187912B1 (ko) | 인터럽트들의 세트들을 구성하는 장치 및 방법 | |
CN115858016A (zh) | 用于自适应调度异构处理资源上的工作的设备和方法 | |
CN115391037A (zh) | 高度可缩放的加速器 | |
CN108604107B (zh) | 用于基于指令类型调整最大时钟频率的处理器、方法和系统 | |
US11941409B2 (en) | Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process | |
US11886918B2 (en) | Apparatus and method for dynamic control of microprocessor configuration | |
EP3901768A1 (en) | Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process | |
CN115617470A (zh) | 用于向软件进程提供线程调度提示的设备、方法和系统 | |
CN114661626A (zh) | 用于选择性地丢弃软件预取指令的设备、系统和方法 | |
CN114661350A (zh) | 用于并发地将多个pmon计数存储在单个寄存器中的设备、系统和方法 | |
CN114661629A (zh) | 用于具有大代码占用的工作负载的动态共享高速缓存分区 | |
EP4177749A1 (en) | Processor interrupt expansion feature | |
US20230418750A1 (en) | Hierarchical core valid tracker for cache coherency | |
US20240104022A1 (en) | Multi-level cache data tracking and isolation | |
US20230418757A1 (en) | Selective provisioning of supplementary micro-operation cache resources | |
US20230409197A1 (en) | Pasid granularity resource control for iommu | |
CN116339971A (zh) | 动态非对称资源 | |
CN115858015A (zh) | 基于核心的推测性页故障列表 | |
CN115906110A (zh) | 统计信息的受控制暴露 | |
CN114661636A (zh) | 具有错误时解压缩的经压缩的高速缓存存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |