CN113050991A - 用于自适应调度异构处理资源上的工作的设备和方法 - Google Patents

用于自适应调度异构处理资源上的工作的设备和方法 Download PDF

Info

Publication number
CN113050991A
CN113050991A CN202011026464.1A CN202011026464A CN113050991A CN 113050991 A CN113050991 A CN 113050991A CN 202011026464 A CN202011026464 A CN 202011026464A CN 113050991 A CN113050991 A CN 113050991A
Authority
CN
China
Prior art keywords
logical processor
logical
type
processor type
thread
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
Application number
CN202011026464.1A
Other languages
English (en)
Inventor
E·维斯曼
O·巴拉克
R·查布克斯瓦
R·芬格尔
E·戈巴托夫
M·古普塔
J·曼德尔布拉特
N·米斯加夫
E·罗特姆
A·亚辛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202211314443.9A priority Critical patent/CN115858016A/zh
Publication of CN113050991A publication Critical patent/CN113050991A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring 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
    • G06F11/3062Monitoring 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 where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种用于自适应调度异构处理资源上的工作的设备和方法。一种处理器包括:多个逻辑处理器,其包括第一逻辑处理器类型和第二逻辑处理器类型中的一个或多个,第一逻辑处理器类型与第一核类型相关联,并且第二逻辑处理器类型与第二核类型相关联;调度器,如果与多个线程相关联的性能数据指示新线程应在第一逻辑处理器类型的逻辑处理器上执行,但第一逻辑处理器类型的所有逻辑处理器都忙碌,则调度器将基于分别与第一线程在第一或第二逻辑处理器类型上的执行相关联的第一和第二性能值的评估,并进一步基于分别与第二线程在第一或第二逻辑处理器类型上的执行相关联的第三和第四性能值的评估,来确定是否要将第二线程从第一逻辑处理器类型的逻辑处理器迁移到第二逻辑处理器类型的逻辑处理器。

Description

用于自适应调度异构处理资源上的工作的设备和方法
技术领域
本发明的实施例一般地涉及计算机处理器的领域。更特定地,实施例涉及用于自适应调度异构处理资源上的工作的设备和方法。
背景技术
当前的异构处理系统包括高功率、高性能“大”核和能量高效“小”核的混合。这些异构架构中的一些异构架构还将图形处理器、数字信号处理器、和其它形式的计算单元集成在同一芯片或封装上。
附图说明
根据以下结合附图的详细描述,可以获得对本发明的更好理解,其中:
图1A和1B是图示根据本发明实施例的通用矢量友好指令格式及其指令模板的框图;
图2A-C是图示根据本发明实施例的示例性VEX指令格式的框图;
图3是根据本发明一个实施例的寄存器架构的框图;和
图4A是图示根据本发明实施例的示例性有序提取、解码、退役管线和示例性寄存器重命名、无序发布/执行管线二者的框图;
图4B是图示根据本发明实施例的要包括在处理器中的有序提取、解码、退役核和示例性寄存器重命名、无序发布/执行架构核二者的示例性实施例的框图;
图5A是单个处理器核以及它与管芯上互连网络的连接的框图;
图5B图示了根据本发明实施例的图5A中的处理器核的一部分的展开视图;
图6是根据本发明实施例的单核处理器和具有集成存储器控制器和图形元件的多核处理器的框图;
图7图示了根据本发明一个实施例的系统的框图;
图8图示了根据本发明实施例的第二系统的框图;
图9图示了根据本发明实施例的第三系统的框图;
图10图示了根据本发明实施例的片上系统(SoC)的框图;
图11图示了根据本发明实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图;
图12图示了包括硬件引导单元的一个实施例;
图13A-C图示了引导电路/逻辑的一个实施例的细节;
图14A-B图示了不同处理器功率预算;
图15A-C图示了使用事件矢量和预测权重的预测电路/逻辑的一个实施例;
图16A-B图示了指令轨迹/工作负载的不同类;
图17图示了架构的一个实施例,在所述架构中,全局表用于调度核或逻辑处理器上的执行;以及
图18图示了根据本发明的一个实施例的方法。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多特定细节以便提供对下面描述的本发明实施例的透彻理解。然而,对于本领域技术人员来说将显而易见的是,可以在没有这些特定细节中的一些的情况下实践本发明的实施例。在其它实例中,以框图形式示出了公知的结构和装置,以避免使本发明实施例的基本原理模糊。
示例性处理器架构、指令格式和数据类型
指令集包括一个或多个指令格式。给定的指令格式定义了各种字段(位数,位的位置),以便除其它之外尤其指定要执行的操作(操作码)和要对其执行该操作的(一个或多个)操作数。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常具有相同的次序,但是至少一些具有不同的位位置,因为其包括的字段较少)和/或定义为具有以不同方式解释的给定字段。因此,ISA的每个指令使用给定指令格式表示(并且,如果定义,则在该指令格式的给定的一个指令模板中)并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,该指令格式包括用于指定所述操作码的操作码字段和用于选择操作数的操作数字段(source1/destination和source2)(源1/目的地和源2);并且该ADD指令在指令流中的出现将在操作数字段中具有选择特定操作数的特定内容。
本文描述的(一个或多个)指令的实施例可以以不同格式特定化。另外,以下详述示例性系统、架构和管线。所述(一个或多个)指令的实施例可以在这样的系统、架构和管线上执行,但不限于详细说明的那些。
通用矢量友好指令格式
矢量友好指令格式是适合于矢量指令的指令格式(例如,存在专用于矢量操作的某些字段)。虽然描述了通过矢量友好指令格式支持矢量和标量操作二者的实施例,但是替代实施例仅使用矢量友好指令格式的矢量操作。
图1A-1B是图示根据本发明实施例的通用矢量友好指令格式及其指令模板的框图。图1A是图示根据本发明实施例的通用矢量友好指令格式及其A类指令模板的框图;而图1B是图示根据本发明实施例的通用矢量友好指令格式及其B类指令模板的框图。特定来说,针对通用矢量友好指令格式100定义A类和B类指令模板,A类和B类指令模板二者都不包括存储器访问105指令模板和存储器访问120指令模板。在矢量友好指令格式的上下文中术语“通用”指代不与任何特定指令集绑定的指令格式。
同时将描述其中的矢量友好指令格式支持以下内容的本发明的实施例:64字节矢量操作数长度(或者尺寸)与32位(4字节)或64位(8字节)数据元素宽度(或尺寸)(并且因此,64字节矢量由16个双字尺寸的元素组成,或者替代地由8个四字尺寸的元素组成);64字节矢量操作数长度(或尺寸)与16位(2字节)或8位(1字节)数据元素宽度(或尺寸);32字节矢量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸);以及16字节矢量操作数长度(或尺寸)与32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或尺寸);替代实施例可以支持更多、更少和/或不同的矢量操作数尺寸(例如,256字节矢量操作数)与更多、更少或不同数据元素宽度(例如,128位(16字节)数据元素宽度)。
图1A中的A类指令模板包括:1)在无存储器访问105指令模板内,示出了无存储器访问、全舍入控制类型操作110指令模板和无存储器访问、数据变换类型操作115指令模板;以及2)在存储器访问120指令模板内,示出了存储器访问、临时性125指令模板和存储器访问、非临时性130指令模板。图1B中的B类指令模板包括:1)在无存储器访问105指令模板内,示出了无存储器访问、写掩蔽控制、部分舍入控制类型操作112指令模板和无存储器访问、写掩蔽控制、VSIZE类型操作117指令模板;以及2)在存储器访问120指令模板内,示出了存储器访问、写掩蔽控制127指令模板。
通用矢量友好指令格式100包括按照图1A-1B中所图示的次序在下面列出的以下字段。
格式字段140-该字段中的特定值(指令格式标识符值)唯一地标识矢量友好指令格式,并因此指令以矢量友好指令格式在指令流中出现。因此,该字段是可选的,因为对于仅具有通用矢量友好指令格式的指令集来说它是不被需要的。
基本操作字段142-其内容区分不同的基本操作。
寄存器索引字段144-其内容直接或通过地址生成来指定源和目标操作数的位置,无论它们在寄存器中还是在存储器中。这些包括足够数量的位以从P×Q(例如32×512,16×128,32×1024,64×1024)的寄存器堆中选择N个寄存器。虽然在一个实施例中,N可以是多达三个源和一个目的地寄存器,但是替代实施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多达两个源,其中这些源中的一个也充当目的地,可以支持多达三个源,其中这些源中的一个也充当目的地,可以支持多达两个源和一个目的地)。
修改符字段146-其内容区分通用矢量指令格式中指定存储器访问的指令的出现与不指定存储器访问的指令的出现;也就是说,在无存储器访问105指令模板和存储器访问120指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层级(在一些情况下使用寄存器中的值指定源和/或目的地地址),而无存储器访问操作不读取和/或写入到存储器层级(例如,源和目的地是寄存器)。虽然,在一个实施例中,该字段还在三个不同方式之间进行选择以执行存储器地址计算,但是替代实施例可以支持更多,更少或不同的方式来执行存储器地址计算。
扩充操作字段150-其内容区分除了基本操作之外还要执行各种不同操作中的哪一个。该字段是专用于上下文的。在本发明的一个实施例中,该字段被划分成类字段168、α字段152和β字段154。扩充操作字段150允许在单个指令中而不是2、3或4个指令中实施共同操作组。
缩放字段160-其内容允许缩放索引字段的内容以用于存储器地址生成(例如,用于使用2scale*索引+基本的地址生成)。
位移字段162A-其内容用作存储器地址生成的一部分(例如,用于使用2scale*索引+基本+位移的地址生成)。
位移因数字段162B(注意,位移字段162A直接在位移因数字段162B上的并置指示使用一个或另一个)-其内容用作地址生成的一部分;它指定位移因数,该位移因数按照存储器访问的尺寸(N)被缩放-其中N是存储器访问中的字节数(例如,用于使用2scale*索引+基本+经缩放的位移的地址生成)。忽略冗余的低次序位,并且因此,位移因数字段的内容乘以存储器操作数总尺寸(N),以便生成用于计算有效地址的最终位移。N的值由处理器硬件在运行时基于完整操作码字段174(本文稍后描述)和数据操纵字段154C来确定。位移字段162A和位移因数字段162B是可选的,因为它们不用于无存储器访问105指令模板和/或不同实施例可以仅实现两个中的一个或两个都不实现。
数据元素宽度字段164-其内容区分要使用多个数据元素宽度中的哪一个(在一些实施例中用于所有指令;在其它实施例中仅用于一些指令)。该字段是可选的,因为如果仅使用操作码的某一方面支持一个数据元素宽度和/或支持多个数据元素宽度,它是不被需要的。
写掩蔽字段170-其内容基于每个数据元素位置来控制目标矢量操作数中的所述数据元素位置是否反映了基本操作和扩充操作的结果。A类指令模板支持合并-写掩蔽,而B类指令模板支持合并-写掩蔽和归零-写掩蔽二者。合并时,矢量掩蔽允许在执行任何操作(由基本操作和扩充操作指定)期间保护目的地中的任何元素集免于更新;在另一个实施例中,保留对应掩蔽位具有0的目的地的每个元素的旧值。相反,当归零时,矢量掩蔽允许在执行任何操作(由基本操作和扩充操作指定)期间将目的地中的任何元素集归零;在一个实施例中,当对应的掩蔽位具有0值时,目的地的元素被设置为0。该功能的子集是控制正在执行的操作的矢量长度(即,从第一个到最后一个被修改的元素的跨度)的能力;然而,被修改的元素不必是连续的。因此,写掩蔽字段170允许部分矢量操作,包括加载、存储、算术、逻辑等。虽然描述了其中写掩蔽字段170的内容选择包含要使用的写掩蔽(并且因此写掩蔽字段170的内容间接标识要执行的所述掩蔽)的多个写掩蔽寄存器中的一个的本发明实施例,但是替代或者附加的替代实施例允许掩蔽写字段170的内容直接指定要执行的掩蔽。
立即数字段172-其内容允许立即数的指定。该字段是可选的,因为它不存在于不支持立即数的通用矢量友好格式的实现中,并且它不存在于不使用立即数的指令中。
类字段168-其内容区分不同类的指令。参考图1A-B,该字段的内容在A类和B类指令之间进行选择。在图1A-B中,圆角方块用于指示字段中存在特定值(例如,图1A-B中分别为针对类字段168的A类168A和B类168B)。
A类指令模板
在A类的非存储器访问105指令模板的情况下,α字段152被解释为RS字段152A,其内容区分要执行不同扩充操作类型中的哪一个(例如,舍入152A.1和数据变换152A.2分别被指定用于无存储器访问、舍入类型操作110和无存储器访问、数据变换类型操作115指令模板),而β字段154区分要执行指定类型的哪个操作。在无存储器访问105指令模板中,不存在缩放字段160、位移字段162A和位移缩放字段162B。
无存储器访问指令模板-全舍入控制类型操作
在无存储器访问全舍入控制类型操作110指令模板中,β字段154被解释为舍入控制字段154A,其(一个或多个)内容提供静态舍入。虽然在本发明的所述实施例中,舍入控制字段154A包括抑制所有浮点异常(SAE)字段156和舍入操作控制字段158,但是替代实施例可以支持可以将全部这些概念编码到同一字段中或仅具有这些概念/字段中的一个或另一个(例如,可以仅具有舍入操作控制字段158)。
SAE字段156-其内容区分是否禁用异常事件报告;当SAE字段156的内容表明启用了抑制时,给定指令不会报告任何种类的浮点异常标志,并且不会引发任何浮点异常处置程序。
舍入操作控制字段158-其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入和向最近舍入)。因此,舍入操作控制字段158允许基于每个指令改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段150的内容覆盖该寄存器值。
无存储器访问指令模板-数据变换类型操作
在无存储器访问数据变换类型操作115指令模板中,β字段154被解释为数据变换字段154B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合(swizzle)、广播)。
在A类的存储器访问120指令模板的情况下,α字段152被解释为驱逐提示字段152B,其内容区分将使用哪一个驱逐提示(在图1A中,临时性152B.1和非临时性152B.2分别被指定用于存储器访问、临时性125指令模板和存储器访问、非临时性130指令模板),而β字段154被解释为数据操纵字段154C,其内容区分要执行多个数据操纵操作(也称为基元)中的哪一个(例如,无操纵;广播;源的上转换;以及目的地的下转换)。存储器访问120指令模板包括缩放字段160,并且可选地包括位移字段162A或位移缩放字段162B。
矢量存储器指令在转换支持的情况下执行从存储器的矢量加载和向存储器的矢量存储。与常规矢量指令一样,矢量存储器指令以逐数据元素的方式从/向存储器传输数据,其中实际传输的元素由被选择作为写掩蔽的矢量掩蔽的内容规定。
存储器访问指令模板-临时性
临时性数据是可能足够快地被重新使用从而受益于高速缓存的数据。然而,这是一个提示,并且不同处理器可以以不同的方式实现它,包括完全忽略该提示。
存储器访问指令模板-非临时性
非临时性数据是如下数据:不太可能足够快地被重新使用从而受益于在第一级高速缓存器中高速缓存,并且应该被给予驱逐的优先权。然而,这是一个提示,并且不同的处理器可以以不同的方式实现它,包括完全忽略该提示。
B类指令模板
在B类的指令模板的情况下,α字段152被解释为写掩蔽控制(Z)字段152C,其内容区分由写掩蔽字段170控制的写掩蔽应该是合并还是归零。
在B类的非存储器访问105指令模板的情况下,β字段154的一部分被解释为RL字段157A,其内容区分要执行不同扩充操作类型中的哪一个(例如,舍入157A.1和矢量长度(VSIZE)157A.2分别被指定用于无存储器访问、写掩蔽控制、部分舍入控制类型操作112指令模板和无存储器访问、写掩蔽控制、VSIZE类型操作117指令模板),而β字段154的其余部分区分要执行指定类型的哪个操作。在无存储器访问105指令模板中,不存在缩放字段160、位移字段162A和位移缩放字段162B。
在无存储器访问、写掩蔽控制、部分舍入控制类型操作110指令模板中,β字段154的其余部分被解释为舍入操作字段159A并且异常事件报告被禁用(给定指令不报告任何种类的浮点异常标志,并且不会引发任何浮点异常处置程序)。
舍入操作控制字段159A-正如舍入操作控制字段158一样,其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入和向最近舍入)。因此,舍入操作控制字段159A允许基于每个指令改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段150的内容覆盖该寄存器值。
在无存储器访问、写掩蔽控制、VSIZE类型操作117指令模板中,β字段154的其余部分被解释为矢量长度字段159B,其内容区分要对多个数据矢量长度(例如,128、256或512字节)中的哪一个执行。
在B类的存储器访问120指令模板的情况下,β字段154的一部分被解释为广播字段157B,其内容区分是否要执行广播类型数据操纵操作,而β字段154的其余部分被解释为矢量长度字段159B。存储器访问120指令模板包括缩放字段160、并且可选地包括位移字段162A或位移缩放字段162B。
关于通用矢量友好指令格式100,示出了完整操作码字段174,完整操作码字段174包括格式字段140、基本操作字段142和数据元素宽度字段164。尽管示出了其中完整操作码字段174包括所有这些字段的一个实施例,但在不支持所有这些字段的实施例中,完整操作码字段174包括非全部这些字段。完整操作码字段174提供操作代码(操作码)。
扩充操作字段150、数据元素宽度字段164和写掩蔽字段170允许在通用矢量友好指令格式中基于每个指令指定这些特征。
写掩蔽字段和数据元素宽度字段的组合创建类型化指令,因为它们允许基于不同数据元素宽度来应用掩蔽。
在A类和B类内找到的各种指令模板在不同情况下是有益的。在本发明的一些实施例中,处理器内的不同处理器或不同核可以仅支持A类,仅支持B类或支持这两类。例如,预期用于通用计算的高性能通用无序核可能仅支持B类,主要预期用于图形和/或科学(吞吐量)计算的核可能仅支持A类,并且预期用于这两者的核可以支持这两者(当然,具有来自两个类的一些模板和指令但不是来自这两个类的所有模板和指令的某种混合的核在本发明的范围内)。此外,单个处理器可以包括多个核,所有核都支持相同的类,或者其中不同的核支持不同的类。例如,在具有分离的图形和通用核的处理器中,预期主要用于图形和/或科学计算的图形核之一可以仅支持A类,而一个或多个通用核可以是仅支持B类的高性能通用核,具有预期用于通用计算的无序执行和寄存器重命名。不具有分离图形核的另一个处理器可以包括再一个通用有序或无序核,该通用有序或无序核支持A类和B类二者。当然,在本发明的不同实施例中,来自一个类的特征也可以在另一类中实现。用高级语言编写的程序将被形成为(例如,仅被及时编译或静态编译)各种不同的可执行形式,包括:1)仅具有由用于执行的目标处理器支持的(一个或多个)类的指令的形式;或者2)具有使用所有类的指令的不同组合编写的替代例程的并且具有控制流程代码的形式,该控制流程代码基于当前正在执行代码的处理器所支持的指令来选择要执行的例程。
VEX指令格式
VEX编码允许指令具有多于两个操作数,并且允许SIMD矢量寄存器长于28位。VEX前缀的使用提供三操作数(或更多操作数)语法。例如,先前的双操作数指令执行诸如A=A+B的操作,这覆盖源操作数。VEX前缀的使用使操作数能够执行非破坏性操作,诸如A=B+C。
图2A图示了示例性AVX指令格式,AVX指令格式包括VEX前缀202、实数操作码字段230、Mod R/M字节240、SIB字节250、位移字段262和IMM8 272。图2B图示了来自图2A的哪些字段构成完整操作码字段274和基本操作字段241。图2C图示了来自图2A的哪些字段构成寄存器索引字段244。
VEX前缀(字节0-2)202以三字节形式编码。第一字节是格式字段290(VEX字节0,位[7:0]),其包含显式C4字节值(用于区分C4指令格式的唯一值)。第二至第三字节(VEX字节1-2)包括提供特定能力的多个位字段。特定来说,REX字段205(VEX字节1,位[7-5])由VEX.R位字段(VEX字节1,位[7]-R)、VEX.X位字段(VEX字节1,位[6]-X)]和VEX.B位字段(VEX字节1,位[5]-B)组成。如本领域中已知的那样,指令的其它字段对寄存器索引的较低三位进行编码(rrr、xxx和bbb),以便可以通过添加VEX.R、VEX.X和VEX.B来形成Rrrr、Xxxx和Bbbb。操作码映射字段215(VEX字节1,位[4:0]-mmmmm)包括用于编码隐含的前导操作码字节的内容。W字段264(VEX字节2,位[7]-W)由符号VEX.W表示,并根据指令提供不同的功能。VEX.vvvv220(VEX字节2,位[6:3]-vvvv)的作用可以包括以下各项:1)VEX.vvvv对以反转(1s补码)形式指定的第一源寄存器操作数进行编码,并且对于具有2个或更多源操作数的指令有效;2)VEX.vvvv针对某些矢量位移对以1s补码形式指定的目的地寄存器操作数进行编码;或者3)VEX.vvvv不对任何操作数进行编码,该字段被保留,并且应该包含1111b。如果VEX.L268尺寸字段(VEX字节2,位[2]-L)=0,则它指示28位矢量;如果VEX.L=1,则它指示256位矢量。前缀编码字段225(VEX字节2,位[1:0]-pp)为基本操作字段241提供附加位。
实数操作码字段230(字节3)也称为操作码字节。部分操作码在此字段中被指定。
MOD R/M字段240(字节4)包括MOD字段242(位[7-6])、Reg字段244(位[5-3])和R/M字段246(位[2-0])。Reg字段244的作用可以包括以下内容:编码目的地寄存器操作数或源寄存器操作数(Rrrr的rrr),或者可以被视为操作码扩展并且不用于编码任何指令操作数。R/M字段246的作用可以包括以下内容:对引用存储器地址的指令操作数进行编码,或者对目的地寄存器操作数或源寄存器操作数进行编码。
缩放、索引、基本(SIB)-缩放字段250(字节5)的内容包括SS252(位[7-6]),其用于存储器地址生成。先前已经关于寄存器索引Xxxx和Bbbb提到了SIB.xxx254(位[5-3])和SIB.bbb256(位[2-0])的内容。
位移字段262和立即数字段(IMM8)272包含数据。
示例性寄存器架构
图3是根据本发明一个实施例的寄存器架构300的框图。在所图示的实施例中,存在32个宽度为512位的矢量寄存器310;这些寄存器被称为为zmm0到zmm31。较低6个zmm寄存器的较低次序256位在寄存器ymm0-15上重叠。较低6个zmm寄存器的较低次序128位(ymm寄存器的较低次序128位)在寄存器xmm0-15上重叠。
通用寄存器325-在所图示的实施例中,存在16个64位通用寄存器,它们与现有的x86寻址模式一起使用以寻址存储器操作数。这些寄存器由名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15引用。
标量浮点堆栈寄存器堆(x87堆栈)345,在其上MMX紧缩整数平坦寄存器堆350被别名化-在所图示的实施例中,x87堆栈是八元素堆栈,用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作;而MMX寄存器用于对64位紧缩整数数据执行操作,以及针对在MMX和XMM寄存器之间实施的一些操作保持操作数。
本发明的替代实施例可以使用更宽或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架构、处理器和计算机架构
处理器核可以以不同方式实现,可以被实现用于不同的目的,并且可以在不同的处理器中实现。例如,这种核的实现可以包括:1)预期用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)预期主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可以包括:1)CPU,包括预期用于通用计算的一个或多个通用有序核和/或预期用于通用计算的一个或多个通用无序核;2)协处理器,包括预期主要用于图形和/或科学(吞吐量)的一个或多个专用核。这种不同的处理器导致不同的计算机系统架构,不同的计算机系统架构可以包括:1)协处理器在与CPU分离的芯片上;2)协处理器在与CPU相同的封装中的分离管芯上;3)协处理器在与CPU相同的管芯上(在这种情况下,这种协处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或者称为专用核);以及4)片上系统,其可以在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器和附加功能。接下来描述示例性核架构,接着描述示例性处理器和计算机架构。本文详述的是包括示例性核、处理器等的电路(单元)。
示例性核架构
图4A是图示根据本发明实施例的示例性有序管线和示例性寄存器重命名、无序发布/执行管线二者的框图。图4B是图示根据本发明实施例的要包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、无序发布/执行架构核二者的框图。图4A-B中的实线框图示了有序管线和有序核,而可选添加的虚线框图示了寄存器重命名、无序发布/执行管线和核。考虑到有序方面是无序方面的子集,将描述无序方面。
在图4A中,处理器管线400包括提取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为分派或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处置阶段422和提交阶段424。
图4B示出了处理器核490,包括耦合到执行引擎单元450的前端单元430,并且前端单元430和执行引擎单元450两者都耦合到存储器单元470。核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或交替核类型。作为又另一选择,核490可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,指令高速缓存单元434耦合到指令转变后备缓冲器(TLB)436,指令转换后备缓冲器(TLB)436耦合到指令提取单元438,指令提取单元438耦合到解码单元440。解码单元440(或解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,上述各项从原始指令被解码,或以其它方式反映原始指令或从原始指令得出。可以使用各种不同的机制来实现解码单元440。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核490包括微代码ROM或存储用于某些宏指令的微代码的其它介质(例如,在解码单元440中或者在前端单元430内)。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,重命名/分配器单元452耦合到退役单元454和由一个或多个调度器单元456构成的集合。(一个或多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元456耦合到(一个或多个)物理寄存器堆单元458。(一个或多个)物理寄存器堆单元458中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点、状态(例如,作为待执行的下一个指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元458包括矢量寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩蔽寄存器和通用寄存器。(一个或多个)物理寄存器堆单元458被退役单元454覆盖,以图示可以实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重新排序缓冲器和(一个或多个)退役寄存器堆;使用(一个或多个)未来堆、(一个或多个)历史缓冲器和(一个或多个)退役寄存器堆;使用寄存器映射和寄存器池;等等)。退役单元454和(一个或多个)物理寄存器堆单元458耦合到(一个或多个)执行集群460。(一个或多个)执行集群460包括由一个或多个执行单元462构成的集合和由一个或多个存储器访问单元464构成的集合。执行单元462可以执行各种操作(例如,移位、加法、减法、乘法)和各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点)。虽然一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其它实施例可以仅包括一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元456、(一个或多个)物理寄存器堆单元458和(一个或多个)执行集群460被示为可能是多个,因为某些实施例针对某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点管线、和/或存储器访问管线,存储器访问管线均具有其自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群-并且在单独的存储器访问管线的情况下,实现某些实施例,在这些实施例中仅该管线的执行集群具有(一个或多个)存储器访问单元464)。还应该理解,在使用单独的管线的情况下,这些管线中的一个或多个可以是无序发布/执行而其余的是有序发布/执行。
存储器访问单元464的集合耦合到存储器单元470,存储器单元470包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到级别2(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可以包括加载单元、存储地址单元和存储数据单元,加载单元、存储地址单元和存储数据单元中的每一个均耦合到存储器单元470中的数据TLB单元472。指令高速缓存单元434还耦合到存储器单元470中的级别2(L2)高速缓存单元476。L2高速缓存单元476耦合到一个或多个其它级别的高速缓存器并最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可以如下实现管线400:1)指令提取438执行提取和长度解码阶段402和404;2)解码单元440执行解码阶段406;3)重命名/分配器单元452执行分配阶段408和重命名阶段410;4)(一个或多个)调度器单元456执行调度阶段412;5)(一个或多个)物理寄存器堆单元458和存储器单元470执行寄存器读取/存储器读取阶段414;执行集群460执行执行阶段416;6)存储器单元470和(一个或多个)物理寄存器堆单元458执行写回/存储器写入阶段418;7)各种单元可能涉及异常处置阶段422;以及8)退役单元454和(一个或多个)物理寄存器堆单元458执行提交阶段424。
核490可以支持一个或多个指令集(例如,x86指令集(具有已经添加有更新版本的一些扩展);加利福尼亚州的尼维尔的MIPS技术的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,诸如NEON),包括本文描述的(一个或多个)指令。在一个实施例中,核490包括支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用紧缩数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程(执行两个或更多个并行的操作或线程的集合),并且可以以各种方式这样做,这些方式包括时间划分多线程、同时多线程(其中单个物理核为物理核正在同时多线程运行的每个线程提供逻辑核)或其组合(例如,时间划分提取和解码以及此后的同时多线程,诸如在Intel®超线程技术中)。
虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解,寄存器重命名可以用在有序架构中。虽然所图示的处理器的实施例还包括分离的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但是替代实施例可以具有用于指令和数据二者的单个内部高速缓存器,诸如例如级别1(L1)内部高速缓存器或多级内部高速缓存器。在一些实施例中,系统可以包括内部高速缓存器和外部高速缓存器的组合,外部高速缓存器在核和/或处理器外部。替代地,所有高速缓存器可以在核和/或处理器外部。
特定示例性有序核架构
图5A-B图示了更特定的示例性有序核架构的框图,该核将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其它核)之一。逻辑块根据应用通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图5A是根据本发明实施例的单处理器核以及其与管芯上互连网络502以及与其级别2(L2)高速缓存器504的本地子集的连接的框图。在一个实施例中,指令解码器500支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存器506允许对高速缓存存储器到标量和矢量单元中的低延迟访问。虽然在一个实施例中(为了简化设计),标量单元508和矢量单元510使用分离的寄存器集合(分别为标量寄存器512和矢量寄存器514),并且在它们之间传输的数据被写入存储器并且然后从级别1(L1)高速缓存器506中读回,本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在两个寄存器堆之间传输而不被写入和读回的通信路径)。
L2高速缓存器504的本地子集是全局L2高速缓存器的一部分,全局L2高速缓存器被划分为分离的局部子集,每个处理器核一个局部子集。每个处理器核具有到其自己的L2高速缓存器504的本地子集的直接访问路径。由处理器核读取的数据存储在其L2高速缓存器子集504中并且可以与其它处理器核访问它们自己的本地L2高速缓存器子集并行地被快速访问。由处理器核写入的数据存储在其自己的L2高速缓存器子集504中,并且视需要从其它子集冲刷掉。环形网络确保共享数据的相关性。环形网络是双向的,以允许诸如处理器核、L2高速缓存器和其它逻辑块之类的代理在芯片内彼此通信。在一些实施例中,每个环形数据路径在每个方向上是1024位宽。
图5B是根据本发明实施例的图5A中的处理器核的一部分的展开视图。图5B包括L1高速缓存器504的L1数据高速缓存器506A部分,以及关于矢量单元510和矢量寄存器514的更多细节。特定地,矢量单元510是6宽度矢量处理单元(VPU)(参见16宽度ALU528),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用混合单元520对寄存器输入进行混合,利用数值转换单元522A-B进行数值转换,以及利用复制单元524对存储器输入进行复制。
具有集成存储器控制器和图形元件的处理器
图6是根据本发明实施例的处理器600的框图,处理器600可以具有多于一个核,可以具有集成存储器控制器,并且可以具有集成图形元件。图6中的实线框图示了处理器600,处理器600具有单个核602A、系统代理610、由一个或多个总线控制器单元616构成的集合,而可选添加的虚线框图示了替代处理器600,该替代处理器600具有多个核602A-N、系统代理单元610中的由一个或多个集成存储器控制器单元614构成的集合以及专用逻辑608。
因此,不同实现的处理器600可以包括:1)具有专用逻辑608以及核602A-N的CPU,专用逻辑608是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核),核602A-N是一个或多个通用核(例如,通用有序核、通用无序核、两者的组合);2)具有核602A-N的协处理器,核602A-N是预期主要用于图形和/或科学(吞吐量)的大量专用核;以及3)具有核602A-N的协处理器,核602A-N是大量通用有序核。因此,处理器600可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等。该处理器可以实现在一个或多个芯片上。处理器600可以使用多种工艺技术中的任何工艺技术(诸如例如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现和/或可以是所述衬底的一部分。
存储器层级包括核604A-N内一个或多个级别的高速缓存器、由一个或多个共享高速缓存单元606构成的集合以及耦合到集成存储器控制器单元614的集合的外部存储器(未示出)。共享高速缓存单元606的集合可以包括一个或多个中级高速缓存器,诸如级别2(L2)、级别3(L3)、级别4(L4)或其它级别的高速缓存器、末级高速缓存器(LLC)和/或上述各项的组合。虽然在一个实施例中,基于环的互连单元612使集成图形逻辑608、共享高速缓存单元606的集合以及系统代理单元610/(一个或多个)集成存储器控制器单元614互连,但是替代实施例可以使用任何数量的公知技术用于使这些单元互连。在一个实施例中,在一个或多个高速缓存单元606和核602-A-N之间保持相关性。
在一些实施例中,核602A-N中的一个或多个核能够实现多线程。系统代理610包括协调和操作核602A-N的那些组件。系统代理单元610可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节核602A-N和集成图形逻辑608的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核602A-N可以是同构的或异构的;也就是说,核602A-N中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够仅执行该指令集的子集或不同的指令集。
示例性计算机架构
图7-10是示例性计算机架构的框图。用于膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络装置,网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、手机、便携式媒体播放器、手持装置和各种其它电子装置的本领域已知的其它系统设计和配置也是适合的。通常,能够合并如本文所公开的处理器和/或其它执行逻辑的大量的各种系统或电子装置通常是适合的。
现在参考图7,所示出的是根据本发明一个实施例的系统700的框图。系统700可以包括一个或多个处理器710、715,处理器710、715耦合到控制器集线器720。在一个实施例中,控制器集线器720包括图形存储器控制器集线器(GMCH)790和输入/输出集线器(IOH)750(其可以在分离的芯片上);GMCH790包括耦合到存储器740和协处理器745的存储器和图形控制器;IOH750将输入/输出(I/O)装置760耦合到GMCH790。替代地,存储器和图形控制器之一或二者都集成在处理器内(如本文所述),存储器740和协处理器745直接耦合到处理器710,并且控制器集线器720与IOH750在单个芯片中。
图7中用虚线表示附加处理器715的可选性质。每个处理器710、715可以包括本文描述的一个或多个处理核,并且可以是处理器600的某个版本。
存储器740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器720经由多点总线(诸如前端总线(FSB)、点对点接口或类似连接795)与(一个或多个)处理器710、715通信。
在一个实施例中,协处理器745是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器720可以包括集成图形加速器。
在包括架构、微架构、热、功耗特性等的优点量度的范围方面,物理资源710、715之间可存在各种差异。
在一个实施例中,处理器710执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器710将这些协处理器指令识别为具有应该由所附接的协处理器745执行的类型。因此,处理器710将这些协处理器指令(或表示协处理器指令的控制信号)在协处理器总线或其它互连件上发布到协处理器745。(一个或多个)协处理器745接受并执行所接收的协处理器指令。
现在参考图8,所示出的是根据本发明实施例的更特定的第一示例性系统800的框图。如图8中所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连件850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个可以是处理器600的某个版本。在本发明的一个实施例中,处理器870和880分别是处理器710和715,而协处理器838是协处理器745。在另一个实施例中,处理器870和880分别是处理器710协处理器745。
示出了处理器870和880,处理器870和880分别包括集成存储器控制器(IMC)单元872和882。处理器870还包括作为其总线控制器单元的一部分的点对点(P-P)接口876和878;类似地,第二处理器880包括P-P接口886和888。处理器870、880可以使用P-P接口电路878、888经由点对点(P-P)接口850交换信息。如图8中所示,IMC872和882把处理器耦合到相应存储器,即存储器832和存储器834,它们可以是本地附接到相应处理器的主存储器的各部分。
处理器870、880可以各自使用点对点接口电路876、894、886、898经由个体P-P接口852、854与芯片组890交换信息。芯片组890可以可选地经由高性能接口892与协处理器838交换信息。在一个实施例中,协处理器838是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存器(未示出)可以被包括在处理器中或处于两个处理器外部,但是经由P-P互连件与处理器连接,使得在处理器处于低功率模式情况下处理器中任一个或全部二者的本地高速缓存信息可以存储在共享高速缓存器中。
芯片组890可以经由接口896耦合到第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线,或者是诸如PCI Express总线或其它I/O互连总线之类的总线,但本发明的范围不限于此。
如图8中所示,各种I/O装置814以及总线桥818可以耦合到第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实施例中,一个或多个附加处理器815(诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器)耦合到第一总线。在一个实施例中,第二总线820可以是低引脚数(LPC)总线。在一个实施例中,各种装置可以耦合到第二总线820,包括例如键盘和/或鼠标822、通信装置827和可以包括指令/代码和数据830的存储单元828,诸如磁盘驱动器或其它大容量存储装置。此外,音频I/O 824可以耦合到第二总线816。注意,其它架构是可能的。例如,代替图8的点对点架构,系统可以实现多点总线或其它这样的架构。
现在参考图9,所示出的是根据本发明的实施例的更特定的第二示例性系统900的框图。图8和9中的相似元件具有相似的附图标记,并且图8的某些方面已从图9中省略,以避免模糊图9的其它方面。
图9图示了处理器870、880可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982。因此,CL972、982包括集成存储器控制器单元并包括I/O控制逻辑。图9图示了不仅存储器832、834耦合到CL872、882,而且I/O装置914也耦合到控制逻辑872、882。传统I/O装置915耦合到芯片组890。
现在参考图10,示出了根据本发明实施例的SoC 1000的框图。图6中的类似元件具有相似的附图标记。此外,虚线框是更高级SoC上的可选特征。在图10中,(一个或多个)互连单元1002耦合到:应用处理器1010,包括由一个或多个核102A-N构成的集合、高速缓存单元604A-N和(一个或多个)共享高速缓存单元606;系统代理单元610;(一个或多个)总线控制器单元616;(一个或多个)集成存储器控制器单元614;由一个或多个协处理器1020构成的集合,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1020包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以以硬件、软件、固件或这些实现方法的组合来实现。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
程序代码(诸如图8中所图示的代码830)可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出装置。出于本申请的目的,处理系统包括具有处理器(诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
程序代码可以用高级过程编程语言或面向对象的编程语言来实现以与处理系统通信。如果需要,程序代码也可以用汇编语言或机器语言实现。事实上,本文描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是被编译或被解释的语言。
可以通过存储在机器可读介质上的代表性指令来实现至少一个实施例的一个或多个方面,该指令表示处理器内的各种逻辑,当该指令由机器读取时使得机器制造逻辑以执行所描述的技术。称为“IP核”的这种表示可以存储在有形的机器可读介质上,并供应给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
这种机器可读存储介质可以包括但不限于由机器或装置制造或形成的物品的非暂态有形装置,包括:存储介质,诸如硬盘;包括软盘、光盘、紧凑盘只读存储器(CD-ROM)、紧凑盘可重写(CD-RW)和磁光盘的任何其它类型的盘;半导体装置,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡或适用于存储电子指令的任何其它类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(诸如硬件描述语言(HDL),其定义本文描述的结构、电路、设备、处理器和/或系统特征)的非暂态有形机器可读介质。这些实施例也可以称为程序产品。
仿真(包括二进制转变、代码变形等)
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转变(例如,使用静态二进制转变,包括动态编译的动态二进制转变)、变形、仿真或以其它方式转换为要由核处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、离开处理器或者部分在处理器上和部分离开处理器。
图11是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但是替代地,指令转换器可以用软件、固件、硬件或其各种组合来实现。图11示出了可以使用第一编译器1104编译采用高级语言1102的程序以生成第一二进制代码(例如,x86)1106,第一二进制代码1106可以由具有至少一个第一指令集核1116的处理器本机执行。在一些实施例中,具有至少一个第一指令集核1116的处理器表示能够通过如下方式实施与具有至少一个x86指令集核的英特尔(Intel)处理器基本相同功能的任何处理器:兼容地执行或以其它方式处理(1)英特尔x86指令集核的大部分指令集或(2)目标是在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本,以便实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。第一编译器1104表示可操作为生成第一指令集1106的二进制代码(例如,目标代码)的编译器,该二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个第一指令集核1116的处理器上执行。类似地,图11示出了采用高级语言1102的程序可以使用替代指令集编译器1108来编译以生成替代指令集二进制代码1110,替代指令集二进制代码1110可以由不具有至少一个第一指令集核1114的处理器本机执行(例如,具有执行如下指令集的核的处理器:执行加利福尼亚州桑尼维尔的MIPS技术的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集。)指令转换器1112用于将第一二进制代码1106转换为可由不具有第一指令集核1114的处理器本机执行的代码。该经转换的代码不太可能与替代指令集二进制代码1110相同,因为能够做到这一点的指令转换器难以制造;但是,经转换的代码将完成一般操作,并由所述替代指令集中的指令构成。因此,指令转换器1112表示软件、固件、硬件或其组合,通过仿真、模拟或任何其它过程,这允许不具有第一指令集处理器或核的处理器或其它电子装置执行第一二进制代码1106。
基于处理器信息的线程调度
现在参考图12,其示出了根据一个或多个实施例的系统1200的框图。在一些实施例中,系统1200可以是电子装置或组件的全部或一部分。例如,系统1200可以是蜂窝电话、计算机、服务器、网络装置、片上系统(SoC)、控制器、无线收发器、电源单元等。此外,在一些实施例中,系统1200可以是相关或互连装置的分组(诸如数据中心、计算集群等)的一部分。
如图12中所示,系统1200可以包括可操作地耦合到系统存储器1205和电源1250的处理器1210。此外,尽管图12中未示出,但系统1200可包含其它组件。在一个或多个实施例中,系统存储器1205可以用任何(一种或多种)类型的计算机存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、非易失性存储器(NVM)、DRAM和NVM的组合等)来实现。电源1250可以向处理器1210提供电力。
在一个或多个实施例中,处理器1210可以是硬件处理装置(例如,中央处理单元(CPU)、片上系统(SoC)等)。如图所示,处理器1210可以包括任意数量的处理引擎1220A-1220N(通常也称为处理引擎1220)和引导单元1230。每个处理引擎1220可以包括一个或多个传感器1240,所述一个或多个传感器1240用于向引导单元1230提供关于处理引擎1220的测量。例如,传感器1240可以提供关于处理引擎性能、效率、功率使用、温度、可靠性、线程执行等的测量。
在一个或多个实施例中,引导单元1230可以是处理器1210的硬件组件,引导单元1230用于提供处理引擎信息来引导线程调度器(未示出)。在一些实施例中,处理引擎信息可以包括处理引擎的一个或多个排序(例如,线程不可知排序、线程特定排序等)。此外,在一些实施例中,处理引擎信息可以包括处理引擎的一个或多个预测特性。下面参考图13A-17描述引导单元1230的各个方面。
参考图13A,其示出了根据一个或多个实施例的示例系统1305的简图。系统1305可包括引导逻辑1300、调度管理器1380和调度器1385。引导逻辑1300通常可以对应于引导单元1230(在图12中示出)的一些或全部。在一些实施例中,可以至少部分使用硬件来实现引导逻辑1300。
如图13A中所示,引导逻辑1300可包括处理引擎(PE)监测器1310、线程监测器1320、线程不可知(TA)排序逻辑1330、预测逻辑1335、线程特定(TS)排序逻辑1340、和硬件-操作系统(HW-OS)接口1370。如本文所使用的,“线程不可知排序”是指独立于任何特定线程或工作负载类型的排序。例如,一些工作负载类型可以包括计算密集型(例如,所需的PE资源)、存储器密集型(例如,所需的存储器控制器带宽)、高度并行化(例如,所需的图形处理资源)、加速(例如,所需的加速器资源)等等。在一些实施例中,单个线程可以被表征为一个或多个工作负载类型,这取决于被包括在指令序列中的指令。
在一个或多个实施例中,PE监测器1310可监测每个PE的特性而不考虑特定工作负载或线程。每个PE的被监测特性可以包括性能、效率、能量使用、热、和可靠性特性。例如,PE监测器1310可监测诸如每时钟周期的指令、每时间段消耗的功率、最大性能的百分比、平均功率状态、温度、已流逝的生命周期的百分比、功率周期的总数、最大功率水平等度量。PE监测器1310可使用硬件计数器来实现。
在一些实施例中,PE监测器1310可以监测和/或计数表示PE执行特性的系统事件(例如,微架构事件、架构事件、系统事件等)。例如,PE监测器1310可以确定退役的浮点指令的数量、退役的存储器指令的数量、分支误预测的数量、高速缓存未命中的数量、管线停顿的数量等等。
在一个或多个实施例中,线程监测器1320可监测各个线程的特性。例如,线程监测器1320可以监测诸如每时间段完成的指令、空闲时间等度量。此外,线程监测器1320可确定执行简档和/或类型,诸如图形处理、网络处理、浮点计算、加密处理等。线程监测器1320可使用硬件计数器来实现。
在一些实施例中,预测逻辑1335可以使用来自PE监测器1310和/或线程监测器1320的数据来预测线程在多个PE上的性能。例如,假设第一线程当前正在具有多个PE的处理器的第一PE(例如,图12中所示的PE 1220A)上执行。在一些实施例中,预测逻辑1335可以分析第一线程、第一PE和其它PE(例如,图12中所示的PE 1220N)的特性,以预测第一线程当其代替地在其它PE上被执行(例如,如果第一线程被移动到第二PE)时的特性。下面参考图15和17进一步描述由预测逻辑1335执行的预测。
在一个或多个实施例中,TA排序逻辑1330可使用来自PE监测器1310和/或预测逻辑1335的数据来生成一个或多个TA排序1350。在一些实施例中,每个TA排序1350可以包括以特定线程不可知顺序布置的PE的列表。现在参考图13B,其示出了根据一些实施例的TA排序1350的示例集合。特定地,如图13B中所示,TA排序1350可包括性能顺序排序、效率顺序排序、能量顺序排序、和脱机顺序排序。在一些实施例中,性能顺序排序可以反映PE的相对性能能力(例如,从快速处理到最慢处理)。效率顺序排序可以反映PE的相对能量效率能力(例如,从最高效到最低效)。能量顺序排序可以反映PE的相对功耗。脱机顺序排序可以指示要使哪些PE脱机,和/或如果需要的话,应使PE脱机的PE顺序。在一些实施例中,TA排序1350可被存储在全局处理器位置或结构中。例如,TA排序1350可被存储在处理器(例如,图12中所示的处理器1210)的寄存器中、存储在外部存储器(例如,图12中所示的系统存储器1205)中等等。
再次参考图13A,TS排序逻辑1340可使用来自线程监测器1320和/或预测逻辑1335的数据来生成一个或多个TS排序1360。在一些实施例中,每个TS排序1360可以与特定线程相关联,并且可以包括以特定于该特定线程的顺序所排列的PE列表。现在参考图13C,其示出了根据一些实施例的TS排序1360的示例集合。例如,TS排序1360可以是线程A的PE排序、线程B的PE排序等等。在一些实施例中,TS排序1360可被存储在全局处理器存储器结构中。例如,TA排序1350可被存储在处理器的寄存器中、存储在外部存储器中、存储在由OS保持的线程上下文块中等等。在一些实施例中,TS排序1360可响应于进程上下文切换事件而被生成和/或更新。
再次参考图13A,在一些实施例中,TA排序1350和TS排序1360可经由HW-OS接口1370而被提供给调度管理器1380。在一些实施例中,HW-OS接口1370可包括在PE和/或线程级别定义的寄存器和/或存储器结构。此外,HW-OS接口1370可以包括枚举寄存器和能力,所述能力允许OS发现和/或标识由引导逻辑1300所提供的PE信息的特定支持和定义。HW-OS接口1370还可以支持中断能力以向OS警告引导逻辑1300的状态和/或事件。
在一个或多个实施例中,调度管理器1380和/或调度器1385可以以软件(例如,操作系统、独立应用等)来实现。调度管理器1380可控制提供给调度器1385的TA排序1350和TS排序1360的量和/或格式。例如,调度管理器1380可以对PE排序进行分类、可以根据准则(例如,按照年龄、按照PE组、按照线程组、按照类型等)对PE排序进行过滤、可以组合多个PE排序以生成组合的PE排序、可以对PE排序进行重新格式化等等。
在一个或多个实施例中,调度器1385可使用TA排序1350和/或TS排序1360来将线程分配给PE(例如,图12中所示的PE 1220)。例如,调度器1385可以使用PE信息基于当前系统优先级、策略或状态(例如,性能、效率、功耗和/或可靠性优先级之间的指定平衡),基于线程特定特性(例如,线程被定义为前台任务还是后台任务)来调度线程,从而控制PE中的温度梯度和/或热点等。
在一些实施例中,TA排序1350和/或TS排序1360可包括向调度器1385提供特定引导的指示。例如,可以为第一PE指派排序值(例如,“0”)以指示第一PE将保持离线,并因此不应被指派任何线程。在一些实施例中,可以使PE离线以提高PE的可靠性、延迟PE的生命周期限制、保持在指定的功率预算内、限制特定功率状态期间的功率使用、控制PE中的温度梯度和/或热点等。
在一些实施例中,引导逻辑1300的输出可以反映根据所定义准则的PE分组。例如,TA排序1350中列出的PE可被分组成性能类(例如,具有从0到2的性能度量的类A、具有从3到7的性能度量的类B、以及具有从8到10的性能度量的类C)。这种分组可以允许调度器1385通过组而不是通过各个PE来管理线程分配。
现在参考图14A-14B,其示出了根据一个或多个实施例的基于改变PE信息而更新的示例排序。特定地,图14示出了对应于包括两个PE(即,PE A和PE B)的处理器的示例。假设处理器具有全功率预算(例如,5W),并且当接收到全功率预算时,PE A具有比PE B更高的性能。因此,如图14A所示,第一性能排序1400指示PE A的排序高于PE B。
现在转到图14B,假设在稍后的时间点将功率预算降低到低功率水平(例如1W)。进一步假设当接收到该低功率水平时,PE B具有比PE A更高的性能。例如,PE B可以被优化为以低时钟速度操作。因此,如图14B中所示,第二性能排序1410指示PE B的排序高于PE A。以这种方式,可以更新由调度器所接收的排序信息以反映影响处理引擎的改变条件。
现在参考图15A,其示出了根据一个或多个实施例的示例系统1500的简图。如图所示,系统1500可以包括处理引擎(PE)1510和预测逻辑1520。预测逻辑1520一般可对应于图13A中所示的预测逻辑1335的一些或全部。
在一些实施例中,PE 1510可以包括性能监测器1512、能量监测器1514和事件监测器1516。此外,PE 1510可以执行源线程1518。事件监测器1516可以在执行源线程1518期间检测PE 1510的事件,诸如存储器指令退役、浮点指令退役、分支误预测、高速缓存未命中、管线停顿等。性能监测器1512可以监测PE 1510的性能特性(例如,每时钟周期的指令、最大性能的百分比等)。能量监测器1514可以监测PE 1510的能量特性(例如,每时间段消耗的功率、功率状态等)。在一些实施例中,性能监测器1512、能量监测器1514和/或事件监测器1516可以使用硬件计数器来实现。
在一个或多个实施例中,预测逻辑1520可以包括权重更新器1522、预测权重1524、事件矢量1526和PE预测器1514。在一些实施例中,预测逻辑1520可以从PE 1510的事件监测器1516接收事件的指示,并且可以根据所接收的指示来增加(populate)事件矢量1526。
现在参考图15B,其示出了根据一些实施例的事件矢量1526的示例集合。如图所示,事件矢量1526可包括与各种PE(即,PE A到PE N)相关联的矢量组。在一些实施例中,每个事件矢量1526可以包括唯一数量的字段,其中每个字段与唯一类型的事件相关联。例如,针对PE A的一组矢量可包括性能矢量1530和能量矢量1532。性能矢量1530可以包括四个字段,其中每个字段指示特定事件类型的发生。例如,性能矢量1530可以包括用于存储存储器指令退役的数量的第一字段、用于存储浮点指令退役的数量的第二字段等等。能量矢量1532可以包括三个字段,其中每个字段指示特定事件类型的发生。
可以设想,针对不同PE(或不同PE类型)的事件矢量1526可以包括针对不同事件类型的字段,并且可以包括不同数量的字段。例如,针对PE N的矢量组可包括具有三个字段的性能矢量1534和具有三个字段的能量矢量1536。
在一些实施例中,预测权重1524(在图15A中示出)可以以类似事件矢量1526的矢量来布置。现在参考图15C,其示出了根据一些实施例的预测权重1524的示例集合。如图所示,预测权重1524可以包括针对PE A的权重矢量1540、1542,权重矢量1540可以包括对应于性能矢量1530的四个权重字段。权重矢量1542可包括对应于PE A的能量矢量1532的三个权重字段。此外,权重矢量1544、1546可分别对应于针对PE B的性能矢量1534和能量矢量1536。
再次参考图15A,PE预测器1528可生成用于在其它PE上执行源线程1518的PE预测。特定地,PE预测器1528可使用处理引擎1510中的事件(如在事件矢量1526中增加的)和预测权重1524来预测源线程1518当在不同PE上(即,在除PE 1510以外的PE上)执行时的特性。例如,PE预测器1528可提供性能预测、功率使用预测、时钟频率预测等。PE预测器1528可包括线性预测器(例如,线性回归)、非线性预测器、增强逻辑模型等。
在一个或多个实施例中,PE预测器1528可使用线性预测器将事件矢量1526乘以预测权重1524的权重矢量,并基于元素乘积的和来确定预测值。例如,线性预测器可以将PE A的性能矢量1530的每个元素(如图15B中所示)乘以PE A的权重矢量1540的对应元素(如图15C中所示),并且可以将所有矢量元素的乘积相加。得到的和可以是源线程1518当其在PEA上被执行时的预测性能值。在一些实施例中,预测性能可被提供给调度器(例如,图13A中所示的调度器1385),并且调度器可使用该信息来确定是否将源线程1518从PE 1510移动到PE A。
在一个或多个实施例中,PE预测器1528可提供关于使用线性预测器将事件矢量1526乘以预测权重1524的权重矢量的预测,并且基于元素乘积的和来确定预测值。例如,线性预测器可以将PE A的性能矢量1530的每个元素(如图15B中所示)乘以PE A的权重矢量1540的对应元素(如图15C中所示),并且可以将所有矢量元素的乘积相加。得到的和可以是源线程1518当其在PE A上被执行时的预测性能值。在一些实施例中,预测性能可被提供给调度器(例如,图13A中所示的调度器1385),并且调度器可使用该信息来确定是否将源线程1518从PE 1510移动到PE A。
在一个或多个实施例中,权重更新器1522可将针对给定PE的PE预测与测量值进行比较以调整预测权重1524。例如,假设调度器接收针对PE A的预测的性能和能量特性,并接着将源线程1518重新分配给PE A。进一步假设PE A包括性能监测器1512和能量监测器1514,性能监测器1512和能量监测器1514提供用于在PE A上执行源线程1518的测量的性能和能量特性。在此示例中,权重更新器1522可以比较所预测的特性和所测量的特性,并可以基于该比较来调整预测权重1524。以此方式,权重更新器1522可随时间调整预测权重1524以提高预测逻辑1520的未来预测的准确性。
用于自适应调度异构处理资源上的工作的设备和方法
如上所述,异构处理系统包括高功率、高性能“大”核和能量高效“小”核的混合。这些异构架构中的一些异构架构还将图形处理器、数字信号处理器、和其它形式的计算单元集成在同一芯片或封装上。当与异构处理器一起工作时,主要挑战是为了最优性能和/或能耗而将软件线程最优地分配给核或其它处理资源。
通过概述的方式,本发明的实施例解决了若干挑战,包括帮助OS标识最适当的核或逻辑处理器类型;当存在比高性能核更多的线程时,帮助OS将正确的软件线程调度给正确的核,并设置线程之间的相对优先级;以及帮助OS将最适当的软件线程调度给最适当的核或逻辑处理器类型,以实现最佳的能量和功率节省。
当要执行新线程时,下面描述的实施例标识与该线程相关联的类(或默认类),并选择在该类内可用的、具有最高性能和/或最佳能量效率值的逻辑处理器。如果最佳逻辑处理器不可用,则本发明的一个实施例确定下一最佳逻辑处理器,并调度新线程以用于在下一最佳性能或能量核上执行,或者将运行线程从最佳逻辑处理器迁移以为新线程腾出空间。在一个实施例中,迁移或不迁移运行线程的决定是基于与新线程和运行线程相关联的性能和/或能量值的比较。在一个实现中,取决于OS基于能耗(例如,对于低功率环境)或最佳性能来按软件线程选取适当的调度方法。
如本文所使用的,逻辑处理器(LP)可以包括处理器核或处理器核的指定部分(例如,处理器核上的硬件线程)。例如,单线程核可直接映射到一个逻辑处理器,而SMT核可映射到多个逻辑处理器。例如,如果SMT核能够同时执行N个线程,则N个逻辑处理器可以被映射到SMT核(例如,每个同时线程一个逻辑处理器)。在该示例中,N可以是基于SMT核的能力的任意值(例如2、4、8等)。其它执行资源(例如分配的存储器空间和/或高速缓存的一部分)可以与逻辑处理器相关联。
在一些情况下,平台可以包括核的混合,其中一些核包括SMT支持,并且其中一些核不包括SMT支持。在一些情况下,当运行多于一个软件线程时,具有SMT支持的核的性能和能量结果可能比关于非SMT核的结果更好。在其它情况下,非SMT核可以提供更好的性能/能量结果。因此,在一个实施例中,调度顺序是:(1)首先在具有最高性能/能量的核上调度;(2)其次,在具有较低性能/能量能力的核上调度;以及(3)最后,在具有SMT支持的核上调度。
图16A中的图示出了多个不同工作负载或轨迹1602以及性能核每时钟指令(IPCBIG或IPCB)与效率核每时钟指令(IPCSMALL或IPCS)的比率。从图16中的数据可以看出,当与更智能的分配机制相比时,在异构核集合上根据不同类型的工作负载来调度线程可能导致更低的性能。
下面的表A示出了随机核选择和本发明的实施例之间的差异,本发明的实施例根据大核和小核/处理器的数量来分配核/处理器。为不同类型的软件线程找到最优调度器可能对于对称多线程性能具有显著影响。
Figure DEST_PATH_IMAGE001
在以下描述的一些实施例中,“小核”是原子处理器,并且“大核”是Core i3、i5、i7、或i9核。这些核可以被集成在同一管芯上和/或被互连在同一处理器封装上。然而,注意,本发明的基本原理不限于任何特定处理器架构或任何特定类型的处理器或核。
在相同的功率量下,诸如原子处理器的小核可以提供比大核的性能更高的性能。这种功率/性能交叉点是大核IPC与小核IPC(即,IPCB/IPCS)的比例的函数,其对于单个线程或少量线程尤其有影响。不同的IPCB/IPCS值还影响降低能量以便提高电池寿命的潜力。随着比率下降,从节能角度来看,在大核上调度工作变得不太有吸引力。
图16B突出示出了一个实施例,在其中为不同类型的工作负载定义不同类。特别地,该实施例定义工作负载的第一类具有低于1.3的IPCB/IPCS比值,工作负载的第二类具有低于1.5的IPCB/IPCS比值,以及工作负载的第三类具有高于(或等于)1.5的IPCB/IPCS比值。
本发明的一个实施例保持与不同工作负载和核类型以及不同类的大/小IPC值相关联的性能和能量数据的全局视图。如图17中所示,在一种实现中,这是通过存储针对每种类型的核1751-1752和/或逻辑处理器(LP)的性能、能量和其它数据的全局表1740来实现的。图17中所示的全局表1740和其它逻辑(例如表管理器1745)可以用硬件或通过硬件和软件的组合来实现。
为了说明的目的,在图17中示出了两种类型的核:性能核1751(有时称为“大”核)和效率核1752(有时称为“小”核)。然而,注意,可以使用各种附加核以及大/小核的备选组合。
在一个实施例中,调度器1710基于当前操作条件1741以及来自全局表1740的性能和能量数据将线程/工作负载1701映射到核1751-1752和/或逻辑处理器LP0-LP7(下面更详细地描述)。在一个实施例中,调度器1710依赖于(或包括)引导/映射单元1714,以鉴于全局表1740来评估不同线程/逻辑处理器映射,从而确定哪个线程应当被映射到哪个逻辑处理器。调度器1710随后可以实现该映射。调度器1710、引导/映射单元1714、表管理器1745和全局表1740可以以通过软件(例如,通过设置寄存器值)编程的硬件/电路或由硬件和软件的组合来实现。
当前检测到的运行条件1741可包括与功率消耗和温度相关的变量,并且可基于这些条件来确定是选择效率值还是性能值。例如,如果计算系统是移动装置,则取决于移动装置当前是由电池供电还是被插入到电插座中,调度器1710可以更频繁地使用效率选项来执行映射。类似地,如果移动计算系统的电池水平低,则调度器1710可能倾向于赞成效率选项(除非在较短的时间段内使用大核会更高效)。作为另一示例,如果另一处理器组件正消耗系统的整体功率预算的大量功率量(例如,图形处理单元正执行图形密集型操作),则调度器1710可以执行效率映射以确保不突破功率预算。
如下面表B所示的全局表1740的一个实施例在每个定义的类内为每个核1751-1752指定不同的能量效率和性能值(例如,Eff02、Perf11等)。所述核与逻辑处理器编号(LP0-LPn)相关联,并且每个逻辑处理器可表示任何类型的物理核或物理核的任何定义部分(包括整个核)。
在一个实施例中,表管理器1745基于与不同线程/工作负载1701的执行有关的反馈1753来执行对全局表1740的更新。反馈可被存储在一个或多个MSR 1755中并由表管理器1745读取。
第一次执行线程/工作负载时,可以为其指派默认类(例如,类0)。表管理器1745然后在以默认类而被执行时分析反馈结果,并且如果更高效的分类可用的话,则表管理器1745将该特定线程/工作负载指派给不同的类。在一个实施例中,反馈1753在一个实施例中用于将索引生成到全局表1740中。在该实施例中,基于如上所述的IPCB/IPCS的范围来创建类。
Figure 25204DEST_PATH_IMAGE002
在一个实施例中,调度器1710使用全局表1740和关联的信息来实现针对不同类的对应性能和能量度量以及不同核类型的全局视图。对现有调度器的扩展可以每类类型添加新的列。在一个实施例中,不同的类使得操作系统或软件调度器能够基于工作负载的类来为该工作负载选择不同的分配机制。
在一个实施例中,类0被定义为默认类,其保持传统支持并且表示曲线的中间情况。在该实施例中,当尚未收集到当前线程的有效数据时,引导/映射单元1714和/或调度器1710使用该默认类。如上所述,表管理器1745可以评估与默认类中的线程的执行相关的反馈1753,并且如果不同的类更合适的话,则提供对全局表1740的更新1754。例如,如果线程的IPCB/IPCS比率大于第一指定阈值(例如,1.5),则表管理器1745可以将线程分类到类1中,并且如果IPCB/IPCS比率小于第二阈值(例如,1.3),则表管理器1745可以将线程分类到类2中。
可经由一个或多个控制寄存器来指定全局表1740中每类的不同列。例如,在x86实现中,可通过CPUID[6].EDX[7:0](例如,针对每类具有7-1不同列的表)来枚举列。操作系统(OS)1713和/或调度器1710可以通过EDX中的一个或多个位来了解对于每个逻辑处理器,哪个行是相关的(例如,CPUID.6.EDX[31-16] = n,其中n是设置逻辑处理器的行的索引位置),并且还可以经由EDX中的值(例如,由CPUID.6.EDX[11:8]所指示)来确定类的数量。OS可以通过以下技术来计算HGS表中的每个逻辑处理器行的位置:
If HGS+ is enabled
HGS Base Addr + 8 + FLOOR((# of classes * # of support capabilitiesbitmap set bits – 1) / 8+ 1) * 8 *( LPn row index +1)
else ( HGS+ is disabled and legacy HGS is enabled)
HGS Base Addr + 8 + 8 * ( LPn row index +1)
HGS表的大小可以通过CPUID[6].EDX[11:8]来枚举
OS可以从CPUID[6].EAX[19]枚举传统HGS基本支持,并从CPUID[6].EAX[23]枚举更新的HGS +支持。
在一个实施例中,性能能力值是非语义的,并且不一定反映实际性能。
表中的性能列存储以不同行表示的逻辑处理器之间的相对性能值。接口的一个实施例提供了与属于相同核类型的多个不同逻辑处理器共享线,从而提供了合理的比较。
对于每个所定义的列,同一列内核之间的性能值比率(诸如
Figure DEST_PATH_IMAGE003
)提供了粗略比较,但不提供实际性能值。类似地,列中针对每个逻辑处理器的能量效率值的比率(诸如
Figure 207924DEST_PATH_IMAGE004
)提供相对比较,但不反映消耗的实际能量。
在一个实施例中,当相对性能或能量值已经经历了可以影响调度的显著改变时,例如当核之间的顺序或核之间的差异改变时,表管理器1745更新全局表1740。这些改变可以在一个或多个列中被指定,并且对于更新了的每个列,标记列标题以指示作出了改变。此外,可以在控制寄存器中设置状态位以指示发生了更新。例如,在一些x86实现中,在特别的模型特定寄存器(MSR)中设置状态位。
全局表1740可作为物理限制(诸如功率或热限制)的结果而被动态更新。结果,可以更新性能和能量类值列的部分或全部,并且可以改变选择具有最佳性能或能量的核的顺序。
当发生像这样的更新时,硬件对在全局表1740中(例如,在列标题字段中)更新了的(一个或多个)列进行标记。另外,在一个实施例中,更新时间戳字段以标记表的最新更新。
另外,热状态寄存器也可被更新,并且如果OS允许的话,热中断。还可以生成中断以向OS通知改变。在设置热更新之后,表管理器1745可以在OS允许前(例如,OS清除日志位)不再更新全局表1740。这样做是为了避免在OS正读取表时进行改变。
假定对于不同的物理限制,不同的类可能以不同的方式受到影响,本发明的一个实施例提供了仅更新所选择的表类的能力。即时在物理条件改变时,这种可配置性也提供最优结果。在指示类性能或能量的顺序被改变之后,OA可以根据每个软件线程的类索引来重新调度软件线程。
在一个实施例中,响应于检测到的改变,线程级MSR 1755向OS 1713和/或调度器1710报告当前线程列中的索引以及有效位以指示所报告的数据是否有效。例如,对于线程级MSR 1755,以下位可以提供对RTC((运行时间特性)的指示:
位7:0 - 表的应用类索引,表示在该硬件线程上执行的最新“应用类”;
位63 - 有效位;如果设置为1,则OS/调度器可以使用它,否则应当忽略类索引。
在一个实施例中,基于微架构的当前状态和操作特性来设置或清除有效位。例如,在新线程1701的上下文切换之后,在硬件(例如,表管理器1745)能够评估或以其他方式确定新线程的特性前,数据可能不是有效的。当在特定安全代码流程之间转换时,也可以调整有效位。在有效位没有被设置的情况下,调度器1710可以忽略反馈数据并且使用已知是有效的最新索引。
在一个实施例中,OS 1713和/或调度器1710在换出上下文时读取该MSR 1755,以便换入下一上下文的最新信息。OS 1713和/或调度器1710还可以在当前软件线程的运行时间期间动态读取MSR 1755。例如,OS/调度器可以在调度器1710的每个时钟标记(tick)上读取MSR 1755。
为了使硬件(例如,表管理器1745)具有了解新线程所需的时间并且确保在换入新上下文之后报告索引的有效性,本发明的一个实施例提供了保存和恢复微架构元数据(其包括索引检测的历史)的选项。在一种实现中,这是使用MSR 1755(其可以作为常规MSR被读取或写入),或者通过利用处理器的保存和恢复机制(例如,x86实现上的XSAVES/XRESROS)来完成的。例如:
线程级范围MSR(读取/写入)
位63:0 - 软件线程,硬件反馈历史元数据。
在一个实现中,OS 1713和/或调度器1710在换入线程时读取该元数据,并在执行期间和/或在换出同一线程时更新该元数据。
在不支持元数据的一些实现中,在上下文切换期间仍然需要重置预测历史,以便能够实现不会受软件线程的先前执行所影响的有效反馈。如果OS被配置成当每次执行IA32_KENTEL_GS_BASE时都“选择(opt-in)”支持历史重置,则该重置数据可被实现。还可以使用包括H/W架构方法的其它基于OS的上下文切换技术,以便在上下文切换期间重置HGS+预测历史。在另一实施例中,通过控制位来启用特定MSR,该控制位迫使重置历史。该控制MSR可以通过XSAVES/XRESORS保存和恢复,或者由OS在每次上下文切换时手动使用。其它选项可以是:当每次该MSR的值为零时,写入或恢复该MSR将重置HGS+历史。另一实施例经由线程级配置MSR(如下所述)来重置历史,该线程级配置MSR能够实现OS手动重置历史的选项。
OS 1713和/或调度器1710可以经由MSR控制位来启用和禁用全局表1740的扩展。可这样做例如以避免与传统实现的冲突和/或避免功率泄漏。例如,当在传统系统上运行时,操作系统可以动态地禁用本文所描述的特征。当被禁用时,反馈MSR线程级报告是无效的。启用可以在逻辑处理器级被完成,以便例如为VMM提供如下选项:基于每个VM使用模式(包括VM是否支持这些技术)来启用针对SoC的一部分的本文所描述的技术。
在一个特定实施例中,线程级配置被如下实施:
·IA32_HW_FEEDBACK_THREAD_CONFIG提供读取/写入线程级范围(0x17D3)
-位0:启用逻辑处理器支持本文所描述的调度技术。当被设置为1时,启用线程级硬件反馈的支持并重置其历史。默认:0。
-位1:WRMSR_IA32_KERNEL_GS_BASE_CLEAR_HGS_HISTORY,当被设置时,IA32_KERNEL_GS_BASE的WRMSR重置预测历史。默认:0。
-位2:重置历史命令位,总是读取为0,当设置(用‘1’写入)时重置预测历史。
在一个实现中,经由封装级MSR来执行启用和禁用。例如,在x86实现中,可指定以下MSR:
IA32_HW_FEEDBACK_CONFIG
位0-启用。当设置为1时,该位启用本文所描述的硬件反馈接口。默认为0。
位1-启用。当设置为1时,该位启用多类支持。全局表1740中的额外类列仅在位1被设置时有效。设置该位使得发送到MSR 1755的线程级反馈1753能够支持有效的报告类索引。
如上所述,当要执行新线程时,本发明的实施例标识与该线程相关联的类(或默认类),并选择在该类内可用的、具有最高性能和/或最佳能量效率值(取决于当前期望的功耗)的逻辑处理器(LP)。如果最佳逻辑处理器不可用,则本发明的一个实施例确定下一最佳逻辑处理器,并且调度新线程以用于在下一最佳逻辑处理器上执行,或者从最佳逻辑处理器迁移运行线程,以便为新线程腾出空间。在一个实施例中,迁移或不迁移运行线程的决定是基于与新线程和运行线程相关联的性能和/或能量值的比较。
对于“高优先级”线程,基于线程类索引(k)确定相关列。在一个实施例中,索引由反馈MSR 1755提供。在线程性能类列(k)上,标识具有最高性能值的行。如果对应逻辑处理器空闲,则在该逻辑处理器上调度线程。
备选地,如果所有最高性能逻辑处理器都被占用,则在性能类列(k)中搜索从最高到最低性能值工作的空闲逻辑处理器。当定位到一个空闲逻辑处理器时,可以在该空闲逻辑处理器上调度线程,或者可以从优选逻辑处理器迁移运行线程,并且可以在优选逻辑处理器上调度新线程。
在该实施例中,调度器1710可以评估是否将现有线程迁移到不同的逻辑处理器以确保处理资源的公平分布。在一个实施例中,在不同线程和逻辑处理器的不同性能值之间进行比较以作出此决定,如下所述。
图18示出了根据本发明的一个实施例的方法。所述方法可以在上述架构上实现,但不限于任何特定架构。
在1801,新线程被接收且必须被调度以用于在逻辑处理器上执行。在1802,新线程的索引(I)被用于在与新线程相关联的性能类(例如,全局表1740中的列之一)中搜索空闲逻辑处理器。
如果在1803确定存在具有最高性能值的空闲逻辑处理器,则在1810,在该空闲逻辑处理器上调度新线程。如果未确定的话,则在1805,在1805标识辅逻辑处理器。例如,调度器可以向下搜索全局表1740中的列,以标识具有第二最高性能值的逻辑处理器。
在1806,执行评估以确定是否将任何运行线程从逻辑处理器(其对于新线程而言将是最高性能LP)迁移到不同的逻辑处理器,以在最高性能逻辑处理器上为新线程腾出空间。在一个实施例中,该评估涉及比较运行线程和新线程在最高性能逻辑处理器和一个或多个替代逻辑处理器上的性能值。对于新线程,替代逻辑处理器包括辅处理器(即,其将为新线程提供次最高性能)。对于运行线程,替代逻辑处理器可以包括辅逻辑处理器(如果它将提供第二最高性能)或另一逻辑处理器(如果它将提供第二最高性能)。
在一个特定实现中,对于新线程和运行线程两者,最高性能LP上的性能与替代LP上的性能的比率。如果新线程的比率更大,则将运行线程迁移到运行线程的替代逻辑处理器。如果运行线程的比率更大,则将在新线程的替代逻辑处理器上调度新线程。以下是示例比率计算:
新线程计算值= Perf新线程最高/Perf新线程替代
运行线程计算值= Perf运行线程最高/Perf运行线程替代
如果在1807确定新线程的上述比率更大,则在1808将运行线程迁移到运行线程的替代逻辑处理器(即,这样的LP,在其上运行线程将具有第二最高性能),并且调度新线程以在新线程的最高性能逻辑处理器上执行。如果运行线程的比率更大,则在辅LP(其将为新线程提供第二最高性能)上调度新线程。
在一个实施例中,当选择能量效率作为确定因素时,除了使用来自全局表1740的效率类数据而不是性能类数据之外,实现与上述技术相同的技术来确定用于新线程的逻辑处理器。例如,在1802,新线程的索引(I)被用于在与新线程相关联的效率类中搜索空闲逻辑处理器。如果在1803确定存在具有最高效率值的空闲逻辑处理器,则在1810,在该空闲逻辑处理器上调度新线程。如果未确定的话,则在1805,在1805标识辅逻辑处理器。例如,调度器可以向下搜索全局表1740中的列以标识具有第二最佳效率值的逻辑处理器。然后,在1806,执行评估以确定是否将任何运行线程从逻辑处理器(其对于新线程而言将是最高效率LP)迁移到不同的逻辑处理器,以便为新线程腾出空间。为了作出该决定,效率比率可如上面针对性能所描述的那样来确定:
新线程计算值= Eff新线程最高/Eff新线程替代
运行线程计算值= Eff运行线程最高/Eff运行线程替代
与性能一样,具有较大索引的线程在最高效率逻辑处理器上执行,而另一线程运行(或迁移)到替代逻辑处理器。
可以执行上述分析以分配和迁移相同或不同性能和效率类中的线程。如果新线程具有与忙碌逻辑处理器中的其它线程不同的类索引,则对于当前运行的每个线程和/或要调度的新线程,使用最高性能或效率值与次最佳性能或效率值来确定性能或效率比率。然后,将具有最高比率的那些线程分配给最高性能或效率逻辑处理器,而在次最佳性能或效率逻辑处理器上调度(或迁移)其它线程。
在一个实施例中,为了迁移运行线程,新线程的比率必须比运行线程大指定阈值量。在一个实施例中,基于将运行线程迁移到新逻辑处理器所需的开销量(例如,迁移所消耗的处理资源、能量和时间)来选择该阈值。这确保如果新线程的比率仅略高于运行线程的比率,则将不迁移运行线程。
在一个实施例中,调度器1710周期性地(例如,每15ms、20ms等)执行线程分配分析以执行上述性能和/或效率比较。如果更高性能或提高的能量效率选项可用,则调度器1710将在逻辑处理器之间迁移一个或多个线程以实现该更高性能或更高效率选项。
一些现有调度实现提供了对不同核/处理器类型的性能和能量特性的全局视图。然而,这些实现假设相同级别的大/小IPC,并且取所有可能轨迹的中值,而忽略不同类型的软件线程之间的实际差异。本发明的实施例通过考虑这些差异来解决这种限制。
在前述说明书中,已经参考本发明的特定示例性实施例描述了本发明的实施例。然而,将显而易见的是,在不脱离如在所附权利要求书中所阐述的本发明的更广泛精神和范围的情况下,可以对其进行各种修改和改变。因此,应当以说明性含义而不是限制性含义来看待说明书和附图。
示例
以下是本发明的不同实施例的示例实现。
示例1. 一种处理器,包括:多个逻辑处理器,所述多个逻辑处理器包括第一逻辑处理器类型的至少一个逻辑处理器和第二逻辑处理器类型的至少一个逻辑处理器,所述第一逻辑处理器类型与第一核类型相关联,并且所述第二逻辑处理器类型与第二核类型相关联;调度器,所述调度器用于根据与多个线程相关联的性能数据来调度所述多个线程以用于在所述多个逻辑处理器上执行;其中,当所述性能数据指示新线程应在所述第一逻辑处理器类型的逻辑处理器上执行,但所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,所述调度器将基于分别与所述新线程在所述第一逻辑处理器类型或所述或第二逻辑处理器类型上的执行相关联的第一性能值和第二性能值的评估,并进一步基于分别与第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三性能值和第四性能值的评估,来确定是否要将所述第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
示例2. 如示例1所述的处理器,其中,当所述第一性能值与所述第二性能值的第一比率大于所述第二性能值与所述第三性能值的第二比率时,所述调度器将迁移所述第二线程。
示例3. 如示例2所述的处理器,其中,当所述第二比率大于所述第一比率时,所述调度器将在所述第二逻辑处理器类型的逻辑处理器上调度所述新线程。
示例4. 如示例1所述的处理器,其中,所述调度器还将基于与所述一个或多个附加线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型上的执行相关联的性能值的评估来确定是否迁移在所述第一逻辑处理器类型的逻辑处理器上运行的一个或多个附加线程。
示例5. 如示例1所述的处理器,其中,所述第一逻辑处理器类型包括所述第一类型的核的指定部分,并且其中所述第二逻辑处理器类型包括所述第二类型的整个核。
示例6. 如示例1所述的处理器,其中,所述调度器在所述多个线程处于第一操作模式时将根据与所述多个线程相关联的所述性能数据来调度所述多个线程以用于在所述多个逻辑处理器上执行,并且在所述多个线程处于第二操作模式时将根据与所述多个线程相关联的效率数据来调度所述多个线程以用于在所述多个逻辑处理器上执行。
示例7. 根据示例6所述的处理器,其中,当所述效率数据指示所述新线程应当在所述第一逻辑处理器类型的逻辑处理器上执行,但是所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,所述调度器将基于分别与所述新线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第一效率值和第二效率值的评估,并且进一步基于分别与所述第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三效率值和第四效率值的评估,来确定是否将第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
示例8. 如示例1所述的处理器,还包括:耦合到所述调度器的全局表,所述全局表用于存储性能数据,所述性能数据包括由所述调度器评估以调度所述多个线程的第一性能数据、第二性能数据、第三性能数据和第四性能数据。
示例9. 如示例8所述的处理器,还包括:表管理器,所述表管理器用于评估所述多个线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型的逻辑处理器上执行时的执行特性,并用于响应地更新所述全局表中的所述性能数据。
示例10. 一种方法,包括:根据与多个线程相关联的性能数据来调度所述多个线程以用于在多个逻辑处理器上执行,所述多个逻辑处理器包括第一逻辑处理器类型的至少一个逻辑处理器和第二逻辑处理器类型的至少一个逻辑处理器,所述第一逻辑处理器类型与第一核类型相关联,并且所述第二逻辑处理器类型与第二核类型相关联;基于所述性能数据,确定新线程应在所述第一逻辑处理器类型的逻辑处理器上执行,但所述第一逻辑处理器类型的所有逻辑处理器都忙碌;评估分别与所述新线程在所述第一逻辑处理器类型或所述或第二逻辑处理器类型上的执行相关联的第一性能值和第二性能值;评估分别与第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三性能值和第四性能值;以及基于所述第一性能值和所述第二性能值的所述评估以及所述第三性能值和所述第四性能值的所述评估,确定是否要将所述第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
示例11. 如示例10所述的方法,其中,当所述第一性能值与所述第二性能值的第一比率大于所述第二性能值与所述第三性能值的第二比率时,将迁移所述第二线程。
示例12. 如示例11所述的方法,其中,当所述第二比率大于所述第一比率时,将在所述第二逻辑处理器类型的逻辑处理器上调度第一线程。
示例13. 如示例10所述的方法,还包括:基于与所述一个或多个附加线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型上的执行相关联的性能值的评估来确定是否迁移在所述第一逻辑处理器类型的逻辑处理器上运行的一个或多个附加线程。
示例14. 如示例10所述的方法,其中,所述第一逻辑处理器类型包括所述第一类型的核的指定部分,并且其中所述第二逻辑处理器类型包括所述第二类型的整个核。
示例15. 如示例10所述的方法,其中,所述多个线程在处于第一操作模式时将根据与所述多个线程相关联的所述性能数据而被调度以用于在所述多个逻辑处理器上执行,并且在处于第二操作模式时将根据与所述多个线程相关联的效率数据而被调度以用于在所述多个逻辑处理器上执行。
示例16. 根据示例15所述的方法,其中,当所述效率数据指示所述新线程应当在所述第一逻辑处理器类型的逻辑处理器上执行,但是所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,则:基于分别与所述第一线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第一效率值和第二效率值的评估,并且进一步基于分别与所述第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三效率值和第四效率值的评估,来确定是否将第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
示例17. 如示例10所述的方法,还包括:从全局表读取所述性能数据,所述性能数据包括第一性能数据、第二性能数据、第三性能数据和第四性能数据。
示例18. 如示例17所述的方法,还包括:评估所述多个线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型的逻辑处理器上执行时的执行特性;以及响应地更新所述全局表中的所述性能数据。
示例19. 一种在其上存储有程序代码的机器可读介质,所述程序代码当由机器执行时,促使所述机器执行以下操作:根据与多个线程相关联的性能数据来调度所述多个线程以用于在多个逻辑处理器上执行,所述多个逻辑处理器包括第一逻辑处理器类型的至少一个逻辑处理器和第二逻辑处理器类型的至少一个逻辑处理器,所述第一逻辑处理器类型与第一核类型相关联,并且所述第二逻辑处理器类型与第二核类型相关联;基于所述性能数据,确定新线程应在所述第一逻辑处理器类型的逻辑处理器上执行,但所述第一逻辑处理器类型的所有逻辑处理器都忙碌;评估分别与所述新线程在所述第一逻辑处理器类型或所述或第二逻辑处理器类型上的执行相关联的第一性能值和第二性能值;评估分别与第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三性能值和第四性能值;以及基于所述第一性能值和所述第二性能值的所述评估以及所述第三性能值和所述第四性能值的所述评估,确定是否要将所述第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
示例20. 如示例19所述的机器可读介质,其中,当所述第一性能值与所述第二性能值的第一比率大于所述第二性能值与所述第三性能值的第二比率时,将迁移所述第二线程。
示例21. 如示例20所述的机器可读介质,其中,当所述第二比率大于所述第一比率时,将在所述第二逻辑处理器类型的逻辑处理器上调度第一线程。
示例22. 如示例19所述的机器可读介质,还包括:基于与所述一个或多个附加线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型上的执行相关联的性能值的评估来确定是否迁移在所述第一逻辑处理器类型的逻辑处理器上运行的一个或多个附加线程。
示例23. 如示例19所述的机器可读介质,其中,所述第一逻辑处理器类型包括所述第一类型的核的指定部分,并且其中所述第二逻辑处理器类型包括所述第二类型的整个核。
示例24. 如示例19所述的机器可读介质,其中,所述多个线程在处于第一操作模式时将根据与所述多个线程相关联的所述性能数据而被调度以用于在所述多个逻辑处理器上执行,并且在处于第二操作模式时将根据与所述多个线程相关联的效率数据而被调度以用于在所述多个逻辑处理器上执行。
示例25. 根据示例24所述的机器可读介质,其中,当所述效率数据指示所述新线程应当在所述第一逻辑处理器类型的逻辑处理器上执行,但是所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,则:基于分别与所述第一线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第一效率值和第二效率值的评估,并且进一步基于分别与所述第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三效率值和第四效率值的评估,来确定是否将第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
示例26. 如示例19所述的机器可读介质,还包括:从全局表读取所述性能数据,所述性能数据包括第一性能数据、第二性能数据、第三性能数据和第四性能数据。
示例27. 如示例26所述的机器可读介质,还包括:评估所述多个线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型的逻辑处理器上执行时的执行特性;以及响应地更新所述全局表中的所述性能数据。
本发明的实施例可包括上面已描述的各种步骤。这些步骤可以特定化在机器可执行指令中,该机器可执行指令可以用于使通用或专用处理器实施这些步骤。替代地,这些步骤可以由包含用于实施这些步骤的硬连线逻辑的特定硬件组件来执行,或者由编程计算机组件和定制硬件组件的任何组合来执行。
如果VMM启用对本文描述的自适应调度技术的支持,则它可向任何可能的VM提供该支持。VMM还可虚拟化并启用对自适应调度技术和必需线程级配置的支持。在全局表1740是动态的实现中,VMM虚拟化该表,并动态地更新虚拟表的适当列。在VM通过IA32_KERNEL_GL_BASE MSR的任何WRMSR而启用历史重置的选择的实施例中。如果VMM经由虚拟化来仿真该MSR,则作为该MSR的仿真的一部分,将取决于VM来经由线程级配置MSR重置选项(位2)而重置历史。作为VM上下文切换的一部分,VMM经由线程级配置MSR重置选项(位2)来手动重置历史。
如本文所述,指令可以指代硬件的特定配置(诸如被配置为实施某些操作或具有预定功能的专用集成电路(ASIC))或存储在非暂态计算机可读介质中特定化的存储器中的软件指令。因此,可以使用在一个或多个电子装置(例如,终端站、网络元件等)上存储和执行的代码和数据来实现图中所示的技术。这种电子装置使用计算机机器可读介质(诸如非暂态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存装置;相变存储器)和暂态计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号-诸如载波、红外信号、数字信号等等))存储和传送(通过网络在内部和/或与其它电子装置)代码和数据。此外,这种电子装置通常包括由耦合到一个或多个其它组件的一个或多个处理器构成的集合,所述一个或多个其它组件诸如是一个或多个存储装置(非暂态机器可读存储介质)、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)和网络连接。处理器的集合和其它组件的耦合通常通过一个或多个总线和桥(也称为总线控制器)。存储装置和承载网络业务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子装置的存储装置通常存储用于在由该电子装置的一个或多个处理器构成的集合上执行的代码和/或数据。当然,可以使用软件、固件和/或硬件的不同组合来实现本发明的实施例的一个或多个部分。在该整个详细描述中,出于解释的目的,阐述了许多特定细节以便提供对本发明的透彻理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些特定细节中的一些的情况下实践本发明。在某些情况下,没有详细描述公知的结构和功能,以避免使本发明的主题模糊。因此,本发明的范围和精神应根据所附的权利要求来判断。

Claims (25)

1.一种处理器,包括:
多个逻辑处理器,所述多个逻辑处理器包括第一逻辑处理器类型的至少一个逻辑处理器和第二逻辑处理器类型的至少一个逻辑处理器,所述第一逻辑处理器类型与第一核类型相关联,并且所述第二逻辑处理器类型与第二核类型相关联;
调度器,所述调度器用于根据与多个线程相关联的性能数据来调度所述多个线程以用于在所述多个逻辑处理器上执行;
其中,当所述性能数据指示新线程应在所述第一逻辑处理器类型的逻辑处理器上执行,但所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,所述调度器将基于分别与所述新线程在所述第一逻辑处理器类型或所述或第二逻辑处理器类型上的执行相关联的第一性能值和第二性能值的评估,并进一步基于分别与第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三性能值和第四性能值的评估,来确定是否要将所述第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
2.如权利要求1所述的处理器,其中,当所述第一性能值与所述第二性能值的第一比率大于所述第二性能值与所述第三性能值的第二比率时,所述调度器将迁移所述第二线程。
3.如权利要求2所述的处理器,其中,当所述第二比率大于所述第一比率时,所述调度器将在所述第二逻辑处理器类型的逻辑处理器上调度所述新线程。
4.如权利要求1至3中任一项所述的处理器,其中,所述调度器还将基于与所述一个或多个附加线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型上的执行相关联的性能值的评估来确定是否迁移在所述第一逻辑处理器类型的逻辑处理器上运行的一个或多个附加线程。
5.如权利要求1至4中任一项所述的处理器,其中,所述第一逻辑处理器类型包括所述第一类型的核的指定部分,并且其中所述第二逻辑处理器类型包括所述第二类型的整个核。
6.如权利要求1至5中任一项所述的处理器,其中,所述调度器在所述多个线程处于第一操作模式时将根据与所述多个线程相关联的所述性能数据来调度所述多个线程以用于在所述多个逻辑处理器上执行,并且在所述多个线程处于第二操作模式时将根据与所述多个线程相关联的效率数据来调度所述多个线程以用于在所述多个逻辑处理器上执行。
7.根据权利要求6所述的处理器,其中,当所述效率数据指示所述新线程应当在所述第一逻辑处理器类型的逻辑处理器上执行,但是所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,所述调度器将基于分别与所述新线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第一效率值和第二效率值的评估,并且进一步基于分别与所述第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三效率值和第四效率值的评估,来确定是否将第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
8.如权利要求1至7中任一项所述的处理器,还包括:
耦合到所述调度器的全局表,所述全局表用于存储性能数据,所述性能数据包括由所述调度器评估以调度所述多个线程的第一性能数据、第二性能数据、第三性能数据和第四性能数据。
9.如权利要求8所述的处理器,还包括:
表管理器,所述表管理器用于评估所述多个线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型的逻辑处理器上执行时的执行特性,并用于响应地更新所述全局表中的所述性能数据。
10.一种方法,包括:
根据与多个线程相关联的性能数据来调度所述多个线程以用于在多个逻辑处理器上执行,所述多个逻辑处理器包括第一逻辑处理器类型的至少一个逻辑处理器和第二逻辑处理器类型的至少一个逻辑处理器,所述第一逻辑处理器类型与第一核类型相关联,并且所述第二逻辑处理器类型与第二核类型相关联;
基于所述性能数据,确定新线程应在所述第一逻辑处理器类型的逻辑处理器上执行,但所述第一逻辑处理器类型的所有逻辑处理器都忙碌;
评估分别与所述新线程在所述第一逻辑处理器类型或所述或第二逻辑处理器类型上的执行相关联的第一性能值和第二性能值;
评估分别与第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三性能值和第四性能值;以及
基于所述第一性能值和所述第二性能值的所述评估以及所述第三性能值和所述第四性能值的所述评估,确定是否要将所述第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
11.如权利要求10所述的方法,其中,当所述第一性能值与所述第二性能值的第一比率大于所述第二性能值与所述第三性能值的第二比率时,将迁移所述第二线程。
12.如权利要求11所述的方法,其中,当所述第二比率大于所述第一比率时,将在所述第二逻辑处理器类型的逻辑处理器上调度第一线程。
13.如权利要求10至12中任一项所述的方法,还包括:
基于与所述一个或多个附加线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型上的执行相关联的性能值的评估来确定是否迁移在所述第一逻辑处理器类型的逻辑处理器上运行的一个或多个附加线程。
14.如权利要求10至13中任一项所述的方法,其中,所述第一逻辑处理器类型包括所述第一类型的核的指定部分,并且其中所述第二逻辑处理器类型包括所述第二类型的整个核。
15.如权利要求10至14中任一项所述的方法,其中,所述多个线程在处于第一操作模式时将根据与所述多个线程相关联的所述性能数据而被调度以用于在所述多个逻辑处理器上执行,并且在处于第二操作模式时将根据与所述多个线程相关联的效率数据而被调度以用于在所述多个逻辑处理器上执行。
16.根据权利要求15所述的方法,其中,当所述效率数据指示所述新线程应当在所述第一逻辑处理器类型的逻辑处理器上执行,但是所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,则:
基于分别与所述第一线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第一效率值和第二效率值的评估,并且进一步基于分别与所述第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三效率值和第四效率值的评估,来确定是否将第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
17.如权利要求10至16中任一项所述的方法,还包括:
从全局表读取所述性能数据,所述性能数据包括第一性能数据、第二性能数据、第三性能数据和第四性能数据。
18. 如权利要求17所述的方法,还包括:
评估所述多个线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型的逻辑处理器上执行时的执行特性;以及
响应地更新所述全局表中的所述性能数据。
19.一种在其上存储有程序代码的机器可读介质,所述程序代码当由机器执行时,促使所述机器执行以下操作:
根据与多个线程相关联的性能数据来调度所述多个线程以用于在多个逻辑处理器上执行,所述多个逻辑处理器包括第一逻辑处理器类型的至少一个逻辑处理器和第二逻辑处理器类型的至少一个逻辑处理器,所述第一逻辑处理器类型与第一核类型相关联,并且所述第二逻辑处理器类型与第二核类型相关联;
基于所述性能数据,确定新线程应在所述第一逻辑处理器类型的逻辑处理器上执行,但所述第一逻辑处理器类型的所有逻辑处理器都忙碌;
评估分别与所述新线程在所述第一逻辑处理器类型或所述或第二逻辑处理器类型上的执行相关联的第一性能值和第二性能值;
评估分别与第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三性能值和第四性能值;以及
基于所述第一性能值和所述第二性能值的所述评估以及所述第三性能值和所述第四性能值的所述评估,确定是否要将所述第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
20.如权利要求19所述的机器可读介质,其中,当所述第一性能值与所述第二性能值的第一比率大于所述第二性能值与所述第三性能值的第二比率时,将迁移所述第二线程。
21.如权利要求20所述的机器可读介质,其中,当所述第二比率大于所述第一比率时,将在所述第二逻辑处理器类型的逻辑处理器上调度第一线程。
22.如权利要求19至21中任一项所述的机器可读介质,还包括:
基于与所述一个或多个附加线程在所述第一逻辑处理器类型和所述第二逻辑处理器类型上的执行相关联的性能值的评估来确定是否迁移在所述第一逻辑处理器类型的逻辑处理器上运行的一个或多个附加线程。
23.如权利要求19至22中任一项所述的机器可读介质,其中,所述第一逻辑处理器类型包括所述第一类型的核的指定部分,并且其中所述第二逻辑处理器类型包括所述第二类型的整个核。
24.如权利要求19至23中任一项所述的机器可读介质,其中,所述多个线程在处于第一操作模式时将根据与所述多个线程相关联的所述性能数据而被调度以用于在所述多个逻辑处理器上执行,并且在处于第二操作模式时将根据与所述多个线程相关联的效率数据而被调度以用于在所述多个逻辑处理器上执行。
25.根据权利要求24所述的机器可读介质,其中,当所述效率数据指示所述新线程应当在所述第一逻辑处理器类型的逻辑处理器上执行,但是所述第一逻辑处理器类型的所有逻辑处理器都忙碌时,则:
基于分别与所述第一线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第一效率值和第二效率值的评估,并且进一步基于分别与所述第二线程在所述第一逻辑处理器类型或所述第二逻辑处理器类型上的执行相关联的第三效率值和第四效率值的评估,来确定是否将第二线程从所述第一逻辑处理器类型的所述逻辑处理器迁移到所述第二逻辑处理器类型的逻辑处理器。
CN202011026464.1A 2019-12-27 2020-09-25 用于自适应调度异构处理资源上的工作的设备和方法 Pending CN113050991A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211314443.9A CN115858016A (zh) 2019-12-27 2020-09-25 用于自适应调度异构处理资源上的工作的设备和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/728,617 US11436118B2 (en) 2019-12-27 2019-12-27 Apparatus and method for adaptively scheduling work on heterogeneous processing resources
US16/728617 2019-12-27

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211314443.9A Division CN115858016A (zh) 2019-12-27 2020-09-25 用于自适应调度异构处理资源上的工作的设备和方法

Publications (1)

Publication Number Publication Date
CN113050991A true CN113050991A (zh) 2021-06-29

Family

ID=76310528

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202011026464.1A Pending CN113050991A (zh) 2019-12-27 2020-09-25 用于自适应调度异构处理资源上的工作的设备和方法
CN202211314443.9A Pending CN115858016A (zh) 2019-12-27 2020-09-25 用于自适应调度异构处理资源上的工作的设备和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202211314443.9A Pending CN115858016A (zh) 2019-12-27 2020-09-25 用于自适应调度异构处理资源上的工作的设备和方法

Country Status (6)

Country Link
US (1) US11436118B2 (zh)
KR (2) KR20210086448A (zh)
CN (2) CN113050991A (zh)
BR (1) BR102020019649A2 (zh)
DE (1) DE102020128808A1 (zh)
TW (2) TW202143044A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688203A (zh) * 2021-08-12 2021-11-23 北京航空航天大学 一种基于可迁移异构图的多语言事件检测方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102384821B1 (ko) * 2021-07-14 2022-04-08 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
KR20230011857A (ko) * 2021-07-14 2023-01-25 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
US20230040310A1 (en) * 2021-08-03 2023-02-09 Apple Inc. Cpu cluster shared resource management
CN114035928B (zh) * 2021-11-26 2024-07-30 重庆富民银行股份有限公司 分布式任务分配处理方法
KR20230106865A (ko) 2022-01-07 2023-07-14 울산과학기술원 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
CN114827033B (zh) * 2022-04-15 2024-04-19 咪咕文化科技有限公司 数据流控方法、装置、设备与计算机可读存储介质
CN116932230B (zh) * 2023-09-15 2023-12-08 湖南马栏山视频先进技术研究院有限公司 一种基于动态任务调度的视频渲染方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996839B2 (en) * 2003-07-16 2011-08-09 Hewlett-Packard Development Company, L.P. Heterogeneous processor core systems for improved throughput
US8793686B2 (en) * 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing
US9329900B2 (en) * 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688203A (zh) * 2021-08-12 2021-11-23 北京航空航天大学 一种基于可迁移异构图的多语言事件检测方法
CN113688203B (zh) * 2021-08-12 2023-07-28 北京航空航天大学 一种基于可迁移异构图的多语言事件检测方法

Also Published As

Publication number Publication date
CN115858016A (zh) 2023-03-28
US20210200656A1 (en) 2021-07-01
KR20210086448A (ko) 2021-07-08
DE102020128808A1 (de) 2021-07-01
BR102020019649A2 (pt) 2021-06-29
TW202143044A (zh) 2021-11-16
KR20220151134A (ko) 2022-11-14
TW202307669A (zh) 2023-02-16
US11436118B2 (en) 2022-09-06

Similar Documents

Publication Publication Date Title
CN113050991A (zh) 用于自适应调度异构处理资源上的工作的设备和方法
JP6240964B2 (ja) 装置、方法、およびシステム
KR101771825B1 (ko) 사용자-레벨 스레딩을 위한 즉각적 컨텍스트 전환을 가능하게 하는 새로운 명령어 및 고효율적인 마이크로-아키텍처
CN111177647A (zh) 实行16位浮点矩阵点积指令的系统和方法
CN105144082B (zh) 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择
US10503550B2 (en) Dynamic performance biasing in a processor
JP7419629B2 (ja) データ表現間の一貫性のある変換を加速するプロセッサ、方法、プログラム、コンピュータ可読記憶媒体、および装置
US11886918B2 (en) Apparatus and method for dynamic control of microprocessor configuration
JP2023051994A (ja) 連鎖タイル演算を実施するためのシステムおよび方法
US20200065100A1 (en) Apparatus and method for loop flattening and reduction in a single instruction multiple data (simd) pipeline
US20200097291A1 (en) Apparatus and method for tile gather and tile scatter
CN110909882A (zh) 用于执行水平铺块操作的系统和方法
US11921574B2 (en) Apparatus and method for fault handling of an offload transaction
CN111752608A (zh) 用于控制复数乘法累加电路的设备和方法
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
CN114691597A (zh) 自适应远程原子操作
CN114675888A (zh) 用于加载矩阵操作加速器瓦片的指令的装置、方法和系统
US20160170767A1 (en) Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
CN114691316A (zh) 基于软件优先级提示的自主且可扩展的资源控制
US20220413865A1 (en) Apparatuses, methods, and systems for instructions for a hardware assisted heterogeneous instruction set architecture dispatcher
US11275588B2 (en) Context save with variable save state size
CN112579160A (zh) 用于具有减少的硬件要求的存储配对的装置和方法
CN116339971A (zh) 动态非对称资源

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination