CN104969190B - 多核心二进制转换任务处理 - Google Patents
多核心二进制转换任务处理 Download PDFInfo
- Publication number
- CN104969190B CN104969190B CN201380072916.1A CN201380072916A CN104969190B CN 104969190 B CN104969190 B CN 104969190B CN 201380072916 A CN201380072916 A CN 201380072916A CN 104969190 B CN104969190 B CN 104969190B
- Authority
- CN
- China
- Prior art keywords
- processing core
- processing
- tasks
- state
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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
-
- 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
-
- 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/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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/5017—Task decomposition
-
- 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)
- Power Sources (AREA)
Abstract
公开了与在计算***中的二进制转换(BT)相关联的技术和***的实施例。在一些实施例中,可以识别待处理的BT任务。所述BT任务可以与一组代码相关联,并且可以在所述计算设备的第一处理核心上执行该组代码期间被识别。所述BT任务可以被排队到所述计算设备的第二处理核心可访问的队列中,所述第二处理核心不同于所述第一处理核心。响应于判定出所述第二处理核心处于空闲状态或已经通过操作***接收到进入空闲状态的指令,可以利用所述第二处理核心处理至少一些BT任务。还描述和/或要求保护其它实施例。
Description
技术领域
本公开一般涉及计算***领域,并且更具体地,涉及计算***中的二进制转换。
背景技术
分析一组代码并将其转换成另一组代码的二进制转换(BT)可以在多种应用中实行。例如,一组代码可以运行通过二进制转换器,其以一组性能目标(例如,改善的速度)编程从而将一组代码转换成更好达到性能目标的优化代码组。一些二进制转换器在一款软件运行时通过间歇暂停该软件以分析并转换代码段而转换该软件的代码。这种暂停-恢复操作向代码执行引入了时延,并向用户证明其自身是可注意的且看起来随机的延迟。另外,BT任务要求电力,即使在当计算设备原本不忙时处理这些任务的时候,运行二进制转换器需要在处理器可能原本空闲时保持该处理器操作。
附图说明
通过结合附图的以下详细描述,可以容易地理解实施例。为了便于该描述,类似的附图标记表示类似的结构元件。实施例是通过示例的方式而不是限制的方式在附图的图中示出的。
图1-3是根据各个实施例的配置用于多核心BT任务处理的多核心计算设备的部件的框图。
图4根据各个实施例示出了多核心BT任务处理操作的示例性时间线。
图5是根据各个实施例的示例性BT任务队列操作的流程图。
图6是根据各个实施例的第一示例性目标评估操作的流程图。
图7是根据各个实施例的第二示例性目标评估操作的流程图。
图8是根据各个实施例的示例性空闲核心任务处理操作的流程图。
图9是根据各个实施例的示例性空闲核心BT任务/目标评估操作的流程图。
图10是根据各个实施例的用于实践所公开的实施例的示例性计算设备的框图。
具体实施方式
公开了与计算***中的二进制转换(BT)相关联的技术和***的实施例。在一些实施例中,可以识别待处理的BT任务。BT任务可以与一组代码相关联,并可以在计算设备的第一处理核心上执行一组代码期间被识别。BT任务可以在计算设备的第二处理核心可访问的队列中排队,第二处理核心不同于第一处理核心。响应于判定出第二处理核心处于空闲状态或已经通过操作***接收到进入空闲状态的指令,利用第二处理核心可以处理至少一些BT任务。
在后续详细描述中,对形成其一部分的附图进行参照,其中全文中类似的附图标记表示类似的部分,并且其中通过图示的方式示出了可以实践的实施例。可以理解的是,可以利用其它实施例,并且可以在不背离本公开的范围的情况下做出结构或逻辑改变。因此,并不能将后续详细描述认为是限制意义的,而是实施例的范围由随附权利要求及其等价物限定。
可以以最有助于理解所要求保护的主题的方式将各种操作描述为依次的多个离散的动作或操作。然而,描述的次序不应该被解释是暗示这些操作必须是依靠次序的。特别地,这些操作可以不按呈现的次序执行。所描述的操作可以按不同于所描述的实施例的次序执行。在额外的实施例中,可以执行各种额外的操作和/或省略所描述的操作。
出于本公开的目的,短语“A和/或B”表示(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
说明书使用短语“在实施例中”或“在多个实施例中”,其每一个可以是指一个或多个相同或不同实施例。此外,对于本公开的实施例所使用的术语“包括”、“包含”、“具有”等是同义的。如本文所使用的,术语“逻辑”可以是指、是以下的部分、或包括执行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组)、组合逻辑电路,和/或提供所描述功能的其它适当的部件。
现在参考图1,示出了根据各个实施例的配置用于多核心BT任务处理的计算设备100的部件的框图。如图所示,计算设备100可以包括多个处理核心108a-108n。处理核心108a-108n可以包括本领域中已知的具有多个处理核心的任意数量的处理器,例如一个或多个双核心处理器。处理核心108a-108n可以包括一个或多个集成电路(IC),例如一个或多个半导体IC芯片。处理核心108a-108n可以包括通用处理核心和专用处理核心(例如,正常核心、小核心、图形处理核心、应用处理核心等)的任意组合。
如图1所示,处理核心108a-108n中每一个可以被配置用于执行对应的用户代码110a-110n。用户代码110a-110n例如可以表示相关联的处理核心108a-108n上执行的应用或其它进程。在一些实施例中,在一个或多个处理核心上执行用户代码的进度(例如,在处理核心108a上执行用户代码110a的进度)对于计算设备100的用户可以是可见的(例如,经由显示器或其它输出设备,未示出)。在一些实施例中,操作***(OS,未示出)可以负责将用户代码指定给处理核心。
处理核心108a-108n中的每一个可以包括BT任务识别逻辑112a-112n,其可以识别与用户代码108a-108n相关联的BT任务,同时用户代码108a-108n分别在处理核心108a-108n上执行。BT任务例如可以包括涉及通过转换和/或分析一组代码而仿真该组代码的一组机器可读指令的一个或多个操作。在各个实施例中,例如,一组代码可以包括一组指令、更大组指令的子集、组合和/或顺序逻辑的一部分、子例程或调用函数。在一些实施例中,BT任务可以指向使得为资源计算架构写入的代码能够在目标计算架构(例如,计算设备100的架构)上运行。BT任务可以包括动态BT任务和/或静态BT任务。如本文所使用的,BT任务可以包括二进制分析任务。在一些实施例中,BT任务识别逻辑112a-112n所识别出的BT任务可以包括将一组代码的一部分转换成另一组代码。在一些实施例中,BT任务识别逻辑112a-112n所识别出的BT任务可以例如包括评估一组代码的性能特性。在一些实施例中,BT任务识别逻辑112a-112n所识别出的BT任务可以包括通过至少部分地重组和/或编辑一组代码而提升该组代码的性能。在一些实施例中,BT任务识别逻辑112a-112n所识别出的BT任务可以包括将额外的安全特征添加到该组代码。例如,在一些实施例中,BT任务识别逻辑112a-112n可以识别可以作为其它恶意干预的恶意软件执行象征的一组代码中的不正当行为的标记。
计算设备100可以包括BT任务队列122。在一些实施例中,BT任务队列122可以包括存储器,其被配置为存储由BT任务识别逻辑112a-112n识别出的一个或多个BT任务。当任务被识别出并被一个或多个处理核心108a-108n 处理时,BT任务队列122中的BT任务可以被添加到BT任务队列122和从BT任务队列122移除。例如,可以通过处理核心108a的BT任务识别逻辑112a将BT任务放置在BT任务队列122中,并且可以通过处理核心108b的空闲核心任务处理(ICTP)逻辑120b将其从BT任务队列122移除并进行处理。ICTP逻辑120的实施例将在下文进一步详细讨论。在一些实施例中,BT任务队列122可以实现在软件中、硬件中或软件和硬件的组合中。BT任务队列122中的BT任务可以存储有表示不同任务的相对优先级的数据(其可以被处理核心108a-108n用于判定当诸如处理功率的其它约束满足时哪些任务首先被移除),和/或表示已经被处理的不同任务的部分的数据(例如,当之前启动处理任务但在完成前被中断的时候)。
在一些实施例中,不是所有被BT任务识别逻辑112a-112n识别出的BT任务都被放置在BT任务队列122中。例如,BT任务识别逻辑112a(与处理核心108a相关联)可以判定特定的BT任务应该被相关联的处理核心108a立即或很快处理。然后该特定任务可以被处理核心108a执行而并不将BT任务放置于BT任务队列122中。在一些实施例中,可以适合于在识别出BT任务的处理核心上立即处理的BT任务的一个例子可以是涉及将代码的一系列部分变换成并行实现的任务;在这种情况下,识别出BT任务的处理核心可以立即找寻利用其执行并行实现的另一处理核心。
返回到处理核心108a-108n,处理核心108a-108n的每一个可以分别包括空闲核心检测(ICD)逻辑116a-116n。在一些实施例中,ICD逻辑116可以监控相关联处理核心108的状态。处理核心108a-108n的示例性状态可以包括活动状态、暂停状态、停止时钟状态、睡眠状态、电压调节状态或频率调节状态。额外的例子包括在2011年12月6日公开的版本5.0的高级配置和电源接口(ACPI)规范中描述的C状态和/或P状态,所述规范在此通过引用整体并入。处理核心108a-108n的不同核心可以处于不同状态。例如,在一些实施例中,处理核心108a可以处于活动状态,而处理核心108b可以处于睡眠状态。
如本文所使用的,当处理核心当前可用于操作***的数据处理或应用运行通过操作***(例如,执行用户代码)和/或根据用于处理核心的当前功率设置该处理核心被最大供电时,处理核心可以被认为处于“活动”或“非空闲”状态。处理核心的功率设置可以例如判定用于处理核心的操作电压和/或用于处理核心的操作频率。在一些实施例中,这些功率设置可以包括在ACPI规范中定义的“P状态”。在一些实施例中,处于活动状态的处理核心可能具有对应于不同功率设置的不同的可达到的性能级别。可以在“活动”和“空闲”之间的转移中调整的资源可以包括主时钟、内部时钟、外部时钟、总线设备、操作电压、存储器高速缓存等。如本文所使用的,“空闲”或“空闲状态”可以指不同于“活动”或“非空闲”状态的任意状态。在一些实施例中,处理核心的状态可以包括如在ACPI规范中定义的处理核心的“C状态”。例如,活动状态可以包括C0状态,而空闲状态可以包括C1、C2、……C7状态(其中在各种组合中权衡功率损耗和处理核心唤醒时间)。
在一些实施例中,ICD逻辑116a-116n可以判定哪些(如果有的话)处理核心108a-108n是空闲的。在一些实施例中,ICD逻辑116可以被配置为触发相关联处理核心108的状态中的改变。在一些实施例中,ICD逻辑116可以被配置为判定在相关联处理核心108的状态中的改变是否与功率管理(PM)目的一致,和/或被配置为判定与处理核心108相关联的状态是否改变以维持与PM目标一致。在一些实施例中, ICD逻辑116a-116n中的一个或多个可以与PM逻辑102耦合,并可以查询PM逻辑102以识别计算设备100的PM目标。ICD逻辑116和PM逻辑102的各个实施例可以在下文中进一步详细讨论。
处理核心108a-108n中的每一个都可以分别包括空闲核心任务处理(ICTP)逻辑120a-120n。在一些实施例中,ICTP逻辑116可以被配置为处理取自BT任务队列122的BT任务。该处理可以发生于与ICTP逻辑120相关联的处理核心108被判定为处于空闲状态(例如,通过ICD逻辑116)时。由ICTP逻辑116处理的BT任务可以不通过相关联的BT任务识别逻辑放置在BT任务队列122中;例如,(与处理核心108b相关联的)ICTP逻辑120b可以被配置为执行由(与处理核心108ba相关联的)BT任务识别逻辑112a所识别出的BT任务。在一些实施例中,ICTP逻辑120可以被配置为与PM逻辑102通信以识别计算设备100的PM目标,并且判定来自BT任务队列122的任务是否可以在达到与PM目标一致时被处理。ICTP逻辑120还可以被配置为将BT任务分成子任务,其中的一个或多个可以在达到与PM目标一致时被处理。ICTP逻辑120还可以被配置为(例如,从OS、其它处理器或中断源外部)接收到用于相关联的处理核心108的请求当时停止处理BT任务。在一些实施例中,ICTP逻辑120可以利用与执行相关联用户代码110a所用的相同的处理、存储器和数据传送资源。ICTP逻辑120的各个实施例在下文中进一步详细讨论。
计算设备100可以包括BT高速缓存114。处理核心108a-108n可以访问BT高速缓存114以取回在执行相关联的用户代码110a-110n期间先前执行的BT任务的输出,以便例如加速或以其他方式改善用户代码110a-110n的执行。存储于BT高速缓存114中的输出可以包括例如代码的转换部分。在一些实施例中,BT高速缓存114包括多个分离的高速缓存,其每个与处理核心108a-108n中的一个或多个相关联。在一些实施例中,可以由空闲核心任务处理(ICTP)逻辑120a-120n中的一个或多个执行的BT任务生成存储于BT高速缓存114中的输出。在一些实施例中,可以由在执行相关联用户代码110期间通过处理核心108立即执行的BT任务生成存储于BT高速缓存114中的输出(例如,根据上述典型的暂停-恢复操作)。
计算设备100可以包括功率管理(PM)逻辑102。PM逻辑102可以被配置为实现各种机制以例如基于可用功率和性能目标来调整计算设备100的功率消耗。例如,在一些实施例中,PM逻辑102可以实现用于在如上所讨论的ACPI规范中指定的PM的技术。PM逻辑102可以实现附加于或替代ACPI规范中指定的那些的PM技术。在一些实施例中,PM逻辑102可以包括于、或可以包括计算设备100的功率控制单元(PCU)。
PM逻辑102可以包括性能目标逻辑104。在一些实施例中,性能目标逻辑104可以存储表示计算设备100的目标性能级别的数据。计算设备100的目标性能级别可以例如指定目标显示亮度、目标能量消耗(例如,每小时能量消耗、或目标操作寿命)、目标扬声器音量、用于一个或多个无线通信天线的目标强度,等等。如本文所使用的,“目标”可以酌情包括期望值、最大值或最小值。在一些实施例中,目标性能级别可以基于用户设置的或由计算设备100自动设置的功率计划或简档或者由其指定。例如,计算设备100上运行的OS可以包括预先确定的性能目标级别,其对应于“能量节约”、“平衡性能/功率消耗”和“高性能”简档。
PM逻辑102可以包括电源状态逻辑106。在一些实施例中,电源状态逻辑106可以存储表示计算设备100的一个或多个电源的数据。例如,电源状态逻辑106可以存储关于计算设备100的总电池容量、计算设备100可用的剩余电池电力、计算设备100当前是否通过访问墙身电力或其它电源(例如,太阳能电池板)被供电、设备100的估计剩余操作时间(在当前状态下和/或功率设置,或计划状态和/或功率设置)等的信息。在一些实施例中,性能目标逻辑104的目标性能级别可以基于来自电源状态逻辑106的电源数据。
PM逻辑102可以包括状态改变逻辑118。在一些实施例中,状态改变逻辑118可以从在计算设备100(未示出)上执行的OS或与PM逻辑120通信的其它部件(例如,***设备或包含于计算设备100内的其它处理设备)接收与PM相关的命令或查询。例如,PM逻辑102可以从OS接收请求以改变处理核心108a-108n中一个或多个的状态。处理核心状态的改变可以包括例如从当前非空闲状态改变到空闲状态(例如,由于经过了给定时间段,不活动性、或用户选择空闲状态)。处理核心的状态改变可以包括例如从当前空闲状态改变到非空闲状态(例如,由于移动鼠标、按压键盘上的按键、接收消息、或接收来自远程***管理员的查询)。在一些实施例中,状态改变请求可以采用供应于PM逻辑102或直接供应于处理器108a-108n中相关处理器且被PM逻辑102监控的中断的形式。可以响应于例如用户或进程手动“唤醒”计算设备100而触发这种请求。在一些实施例中,状态改变请求可以采取监控命中(monitorhit)的形式,其可以发生在监控器等待(MWAIT)函数(其可以由包含于支持处理核心108a-108n的硬件中的电路执行)检测到存在将唤醒计算设备100的预先确定事件时。在一些实施例中,通过MONITOR指令来设置预先确定事件。在一些实施例中,状态改变逻辑118可以将PM命令(例如,状态改变命令)传输到处理核心108a-108n中的一个或多个。
现在参考图2,示出了ICD逻辑116(图1)的实施例中包含的额外部件的框图。如图所示,ICD逻辑116可以包括核心监控逻辑124。在一些实施例中,核心监控逻辑124可以监控相关联的处理核心108,以判定相关联的处理核心108的当前状态。特别地,核心监控逻辑124可以被配置为识别何时相关联的处理核心108处于空闲状态。在一些实施例中,与一个处理核心相关联的核心监控逻辑可以监控其它处理核心的状态;例如, ICD逻辑116a的(与处理核心108a相关联的)核心监控逻辑可以监控处理核心108b的状态。在一些实施例中,核心监控逻辑124可以从PM逻辑102接收表示处理核心108a-108n中一个或多个的状态的数据,其例如可以包括在存储器中可访问以执行目标逻辑104和/或状态改变逻辑118的这种数据。
ICD逻辑可以包括目标评估逻辑126。在一些实施例中,目标评估逻辑126可以识别计算设备100的PM目标,并判定相关联的处理核心108的状态(或在一些实施例中任意其它处理核心)是否在达到与PM目标一致时被改变。在一些实施例中,计算设备100的PM目标可以达到存储于PM逻辑102的性能目标逻辑104中的用于计算设备100的目标性能级别。核心监控逻辑124和/或目标评估逻辑126可以查询PM逻辑102关于这种性能相关数据。在一些实施例中,目标评估逻辑126可以通过判定改变相关联的处理核心108的状态到不同状态将导致PM目标的冲突,来判定改变相关联的处理核心108的状态到不同状态是否与PM目标一致。例如,如果处理核心108当前处于特定的空闲状态并且仅能够在处于单个“活动”状态时处理数据,则目标评估逻辑126可以判定处理核心108从特定空闲状态改变到活动状态所造成的功率消耗是否将超过PM目标所指定的功率消耗的上限。
在一些实施例中,计算设备100的PM目标并不是单独通过查询PM逻辑102识别出的,而是可以由目标评估逻辑126基于来自PM逻辑102的数据(例如,来自性能目标逻辑104的目标性能级别数据和/或来自电源状态逻辑106的电源状态数据)判定出的。核心监控逻辑124和/或目标评估逻辑126可以查询PM逻辑关于这种功率相关和/或性能相关的数据。例如,在一些实施例中,PM逻辑102的电源状态逻辑106可以指示计算设备100正在根据仅5%剩余的电池操作;根据该数据,目标评估逻辑126可以判定为执行BT任务没有处理核心应该从空闲转移到非空闲状态,直到电池被再次充电到足够的值(例如,预先确定的阈值,如60%)。
在一些实施例中,处理核心108可以具有多于一个非空闲状态。例如,一个非空闲状态可以消耗较多电力且具有较短的启动时间,而第二非空闲状态可以消耗较少电力但具有较长启动时间。在这种实施例中,取代于具有预先确定的非空闲状态,目标评估逻辑126可以基于例如PM目标(如通过查询PM逻辑102和/或目标评估逻辑126的分析而确定的),相关联的处理核心108可以被分配的BT任务队列122中的一个或多个BT任务,和/或相关联的处理核心108的当前状态,而确定期望的非空闲状态。以这种方式,在一些实施例中,ICD逻辑116可以为相关联的处理核心108识别非空闲状态,其允许处理核心108执行来自BT任务队列122的BT任务,同时达到与PM目标一致。
ICD逻辑可以包括状态改变逻辑128。在一些实施例中,当相关联的处理核心108处于空闲状态时,BT任务队列122包括适用于相关联处理核心108所处理的BT任务,并且目标评估逻辑126判定将相关联处理核心108的状态从当前空闲状态改变到非空闲状态将与PM目标一致,状态改变逻辑128可以触发相关联处理核心108的状态改变到非空闲状态。在一些实施例中,为BT任务处理的处理核心108所改变到的状态可以取决于计算设备100的架构。例如,一些架构可以允许处理核心进入处理核心内的所有时钟都停止且处理核心的操作电压被降低的状态,而其它架构可能不提供这种状态。处理核心状态以及在状态之间的转移可以由对于每个处理核心不同的微架构特征管控。在一些实施例中,计算设备100可以包括总是开启(即使当处理核心108a-108n中的一个或多个具有非常低的功率设置和/或处于空闲状态时)且监控一个或多个“唤醒”事件的逻辑;当检测到这种事件时,逻辑可以激活计算设备100的各个部件直到处理核心108a-108n中的一个或多个再次运行。在“浅”空闲状态中,该激活可以只包括将一个或多个时钟转回去,而在“较深”空闲状态中,该激活可以包括在处理核心108a-108n恢复运行之前重新加载处理核心上下文信息返回到处理核心108a-108n中的一个或多个。
在一些实施例中,状态改变逻辑128通过改变相关联处理核心108的上下文来改变相关联处理核心108的状态。如本文所使用的,处理核心的“上下文”可以指的是可以被保存或稍后恢复的处理核心的属性。在一些实施例中,当针对处理核心108发生正常操作和BT任务处理之间的切换时,处理核心108的上下文可以存储于存储器中,从而该上下文在处理核心108返回到正常操作时可以被恢复。在一些实施例中,该上下文存储/恢复可以通过微代码或其它固件或硬件支持执行和/或触发,其可以在期望状态改变时干涉。在一些实施例中,处理核心108的上下文可以向OS和/或计算设备100的用户隐藏。在一些实施例中,状态的改变(例如,上下文中的改变)可以由软件控制的交换机实现(例如,使用虚拟化扩展)。在一些实施例中,状态的改变可以由硬件辅助交换机实现(例如,使用微代码或p代码函数以进入指定状态)。
ICD逻辑116可以包括上下文保存逻辑130。在一些实施例中,当在处理来自BT任务队列122的BT任务期间中断相关联的处理核心108时,处理核心108可以经由上下文保存逻辑130存储其上下文,从而当状态改变逻辑128下次将处理核心108从空闲模式改变到非空闲模式以执行排队的BT任务时可以恢复上下文。
现在参考图3,示出了ICTP逻辑120(图1)的实施例中包含的额外部件的框图。在一些实施例中,ICTP逻辑120可以允许BT任务在原本空闲处理核心上处理,通过将BT任务的执行从在非空闲处理核心上执行的活动***级别或用户级别应用的关键路径取出而有效隐藏BT任务的时延。
ICTP逻辑120可以包括目标评估逻辑132。类似于ICD逻辑122(图2)的目标评估逻辑126,目标评估逻辑132可以识别计算设备100的PM目标。然而,在一些实施例中,目标评估逻辑132可以集中于从BT队列122取回的BT任务的特定轮廓(contour),并且具体地,该个任务是否可以在达到与PM目标一致时被执行。在一些实施例中,ICTP逻辑120的目标评估逻辑132可以仅在相关联处理核心108已经在预计执行BT任务中通过ICD逻辑116改变到非空闲状态之后被激活。如上参照目标评估逻辑126所讨论的,在一些实施例中,可以根据查询PM逻辑102或分析PM逻辑102供应的数据而直接确定PM目标。
在一些实施例中,目标评估逻辑132可以判定BT任务队列122中的下一BT任务是否能在达到与PM目标一致时被处理。例如,目标评估逻辑132可以判定BT任务队列122中下一任务的预期处理时间(例如,基于任务的类型或在任务中提及的用户代码量)将需要超过或不超过可用处理时间的处理时间量,而不过度排干电池或不得不损害其它性能特性(例如,显示亮度)。如果BT任务可以在达到与PM目标一致时被处理,则任务处理逻辑136可以继续以处理任务。在一些实施例中,如果BT任务队列122中的下一BT任务不能在达到与PM目标一致时被处理,则目标评估逻辑132可以考虑BT任务队列122中的其它BT任务;如果其中任意一个可以在达到与PM目标一致时被处理,则任务处理逻辑136可以继续以处理这种任务。
在一些实施例中,当目标评估逻辑132判定出在BT任务队列122中的下一(或任一)BT任务不与PM目标一致时,将控制传递给任务划分逻辑136。任务划分逻辑136可以试图将BT任务队列122中的一个或多个BT任务划分成需要比原始任务更少处理资源(例如,更少的处理时间或更低的处理速度)的子任务。在一些实施例中,可以将BT任务划分成“状态收集”子任务和“处理”子任务。状态收集子任务可以包括用于收集后续处理所需的所有数据的任务(例如,其可能涉及到保存处理核心的上下文和一部分原生存储器空间)。处理子任务可以利用在执行状态收集子任务期间收集的数据;在一些实施例中,处理子任务不需要使用除了状态收集子任务所收集的数据以外的任何数据。在一些实施例中,状态收集子任务可以需要比处理子任务少的执行时间。如果任务划分逻辑136判定出一个或多个子任务可以在达到与PM目标一致时被处理,则任务处理逻辑136可以继续以处理这种子任务。
ICTP逻辑120还可以包括进度保存逻辑138。在一些实施例中,当在处理BT任务队列122中的BT任务期间中断相关联的处理核心108时,处理核心108可以经由进度保存逻辑138存储部分完成的BT任务的进度,从而可以当接下来调用ICPT逻辑120以处理BT任务时恢复BT任务。
本文所描述的BT任务处理***和技术可以有利地实现于多核心计算环境中。如上参照图3所描述的,当处理核心108正在处理来自BT任务队列122的BT任务时,处理核心108处于非空闲状态。然而,PM逻辑102可能不知道这种情况,在计算设备100上运行的OS也可能不知道。通过将ICD逻辑116和ICTP逻辑120***到PM逻辑102与处理核心108之间和/或OS与处理核心108之间,ICD逻辑116和ICTP逻辑120可以使用空闲资源,而不通知或以其它方式扰乱PM逻辑102和/或OS。另外,在一些实施例中,通过单独地评估电力和性能含义(例如,使用ICD逻辑116的目标评估逻辑126和/或ICTP逻辑120的目标评估逻辑132),使用在原本空闲周期期间处理的BT任务的处理核心资源可以达到与OS、PM逻辑102或组合所设置的PM目标一致。在一些实施例中,将BT任务卸载到可用的处理核心可以帮助跨核心分布热负荷,并因此改善计算设备100的可靠性。
此外,通过针对功率相关数据查询和监控计算设备100的若干部件(例如,针对性能目标和电源状态数据的PM逻辑102,以及针对状态数据的处理核心108a-108n),并利用该数据进行BT任务处理决策,本文所公开的BT任务处理***和技术的一些实施例可以最小化在计算设备100的操作上处理的BT任务的可见影响。因此可以改善电力使用和用户体验,同时允许二进制转换器实现更复杂的BT操作,而没有显著的性能折中。传统平台不能达到这些优点,大部分传统平台在架构上是受限的,从而没有部件知道处理器核心状态、电源数据和PM目标中的一个或多个。
本文公开的BT任务处理***和技术的实施例在多核心环境中尤其有利,在该环境中为两个或更多处理核心提供共同功率平面。例如,传统多核心平台的处理核心通常被成对布置,为每对提供单个功率平面。当一对的第一处理核心被设置为具体的非空闲状态上,该对的第二处理核心被设置为相同的非空闲状态,而不管第二处理核心是否正在执行任何代码。本文公开的BT任务处理***和技术可以利用处于非空闲状态(但是原本未被使用)的第二处理核心来执行在第二核心上处理的BT任务,而不在计算设备上强加额外的电力负担或者中断在第一处理核心上用户代码的执行。
现在参考图4,示出了根据各个实施例的多核心BT任务处理操作的示例时间线。为了易于图示,参照具有两个处理器核心(核心0和核心1)的计算设备(例如计算设备100)来讨论图4的多核心操作。在一些实施例中,核心0和核心1中的每一个是CPU核心。
在时间0(随机初始时间参考点)处,核心0和核心1都在运行。在一些实施例中,“运行”可以包括在处于活动状态时执行用户或其它代码。在时间0到2处,BT任务队列(例如图1的BT任务队列122)中的BT任务的数量如“BT队列大小”栏所指示的为0。在时间3处,BT任务被识别为与在核心0上执行的一组代码相关联(例如,通过图1的BT任务识别逻辑112)。该BT任务被传送到BT任务队列,如时间3处“BT队列大小”栏中新值1所指示的。在时间3处,核心1保持运行。在时间4处,BT任务被识别为与在核心1上执行的一组代码相关联。该BT任务被传送到BT任务队列,如时间4处“BT队列大小”栏中新值2所指示的。
在时间5处,核心1进入空闲状态。该空闲状态可以由核心1的核心监控逻辑(例如,图2的核心监控逻辑124)检测到。在下一递增时间——时间6处,核心1的任务处理逻辑(例如,图3的任务处理逻辑136)将任务从BT任务队列中移除,并开始处理它。在一些实施例中,可以基于先进先出(FIFO)、基于后进先出(LIFO)或任意其它基础(例如,如上所讨论的,选择处理与达到PM目标一致的任务)来将任务从BT任务队列移除。在时间7处,核心1处理从BT任务队列移除的BT任务,并在时间8处完成该任务,在BT任务队列中保留一个任务。处理BT任务的一个时间单元的持续时间纯粹是说明性的;本文所描述的所有操作可以采用各种时间量。例如,可以在BT高速缓存114(图1)中存储经处理的BT任务的输出。
在时间9处,核心1将最后保留的任务从BT任务队列中移除,如时间9处“BT队列大小”栏所指示的。在时间10处,核心1处理从BT任务队列移除的BT任务,并在时间11处完成该任务,保留BT任务队列为空。例如,可以在BT高速缓存中存储经处理的BT任务的输出。核心0从时间0起保持运行,例如执行用户代码。在该图示中,核心0继续执行用户代码到最后示出的时间单元——时间15。
在时间12处,核心1检测中断或监控命中(例如,经由核心监控逻辑124)。在一些实施例中,在核心1的计算设备上运行的OS预期核心1从时间5起保留在空闲状态,并且不知道核心1在时间5和时间11之间已经处理了BT任务。为了保留OS所见的空闲/非空闲状态的语义,通过响应于中断或监控命中而(例如,经由ICD逻辑116的状态改变逻辑128或者PM逻辑102的状态改变逻辑118)改变状态进入到OS(或其它中断部件)所预期的任何非空闲状态,核心1可以响应于时间12处中断或监控命中。在时间13处,核心1恢复执行用户代码(例如,由OS指定的)并继续如此,直到最后示出的事件单元——时间15。
现在参考图5,提供了根据各个实施例的示例BT任务队列操作的流程图500。可以认识到,当流程图500(以及本文描述的其它流程图)的操作被以特定次序布置且一次示出一个时,在各种实施例中,可以重复、省略或乱序执行一个或多个操作。出于说明的目的,流程图500的操作可以描述为由计算设备100的各个部件执行,例如处理核心108a和108b的BT任务识别逻辑112a(图1),但是流程图500的操作(包括流程图500的个体操作)可以由任意适当配置的部件或计算设备100的部件组合执行。
流程图500的操作可以开始于操作502,其中BT任务识别逻辑112a可以识别将要处理的BT任务、在执行计算设备100的处理核心108a上执行一组代码(例如,用户代码110a)期间与该组代码相关联的BT任务。在操作504处,BT任务识别逻辑112a可以查询计算设备100的处理核心108b-108n中任意一者(不同于处理核心108a的处理核心)可访问的BT任务队列(例如BT任务队列122)中的BT任务。流程图500的操作然后可以结束。
如上所讨论的,在一些实施例中,ICD逻辑116的目标评估逻辑126和/或ICTP逻辑120的目标评估逻辑132可以相对于将被处理的BT任务评估PM目标和/或处理BT任务在所涉及的状态改变,以判定BT任务处理是否能与PM目标一致地执行。在一些实施例中,ICD逻辑116的目标评估逻辑126可以判定简单地改变空闲处理核心的状态到非空闲状态所附可能是不与PM目标一致;如果否,则处理核心可以被改变到非空闲状态且处理核心可以等待BT任务出现在BT任务队列122中。图6如下所讨论的示出了与一些这种实施例相关联的示例操作。
在一些实施例中,空闲处理核心可能不转移到非空闲状态,直到检测到BT任务在BT任务队列122中;如果一些BT任务不与PM目标一致地被处理,则空闲处理核心可以进入非空闲状态并开始BT任务处理。图7如下所讨论的,示出了与一些这种实施例相关联的示例操作。注意,一些实施例可以包括图6和图7的一个或多个操作(例如,当处理核心空闲时改变初始状态,并可以进一步进行状态改变以匹配额外的或其它PM目标或BT任务队列122中特定BT任务的轮廓的实施例)。
现在参考图6,提供了根据各个实施例的第一示例目标评估操作的流程图600。出于说明的目的,流程图600的操作可以描述为由计算设备100的各个部件执行,例如处理核心108b的ICD逻辑116b和ICTP逻辑120b(图1和图3),但是流程图600的操作(包括流程图600的个体操作)可以由任意适当配置的部件或计算设备100的部件组合执行。在讨论图6时使用处理核心108b是为了与图5连续并纯粹是说明性的;流程图600的操作可以由处理核心108a-108n中任意一个或其它适当配置的处理核心执行。
流程图600的操作可以开始于602处,其中ICD逻辑116b可以判定处理核心108b是否处于空闲状态。在一些实施例中,当ICD逻辑116b从PM逻辑102、OS、ICD逻辑116b的状态改变逻辑128或其它源检测到空闲触发时,可以触发流程图600的操作。在一些实施例中,空闲触发可以例如包括HALT命令或MWAIT命令。在一些实施例中,流程图600的操作可以被周期性或无周期性地触发,以判定处理核心108b是否应该从空闲状态转移出。以上参照图1-3讨论了处理核心进入空闲状态的多个示例触发。如果处理核心108b不是空闲的,则流程图600的操作可以结束。
如果ICD逻辑116b在操作602处判定出处理核心108b是空闲的,则ICD逻辑116的目标评估逻辑126可以在操作604处判定将处理核心108b的状态改变到非空闲状态是否与PM目标一致。在操作604处评估的PM目标可以采用以上参照图1和2讨论的任意实施例的形式。例如,在一些实施例中,操作604可以包括查询PM逻辑(例如,PM逻辑102)关于表示计算设备100的目标性能级别的数据(例如,从性能目标逻辑104)或者表示计算设备100的电源的数据(例如,从电源状态逻辑106)。操作604的判定可以包括判定处理核心108b的状态改变到特定的非空闲状态是否将与PM目标一致。在各个实施例中,特定非空闲状态可以是“最差情况”状态(例如,处理核心108b在处理期间汲取最大电力的状态)、“平均”状态、“可能”状态(例如,基于通常适用于BT任务处理的状态)、或者任意其它预先确定或动态确定的状态。在一些实施例中,操作604的判定可能不取决于BT任务队列122中的任意特定BT任务。事实上,在一些实施例中,操作604的判定可能不取决于在BT任务队列122中是否存在任何任务。
如果目标评估逻辑126在操作604处判定改变处理核心108b的状态与PM目标不一致,则流程图600的操作可以结束。如果目标评估逻辑126在操作604处判定改变处理核心108b的状态与PM目标一致,则ICD逻辑116的状态改变逻辑128在操作606处可以指示处理核心108b进入非空闲状态。在一些实施例中,在操作606处进入的非空闲状态可以是在操作604处评估的非空闲状态,如上所述。在一些实施例中,在操作606处进入的非空闲状态可以不是在操作604处评估的状态;反而,在操作606处进入的非空闲状态可以例如是比在操作604处评估的状态消耗更少电力的状态。
在操作608处,ICTP逻辑120b的任务处理逻辑136可以判定在BT任务队列(例如图1的BT任务队列122)中是否存在BT任务。如果存在供处理的BT任务,则ICD逻辑116b的核心监控逻辑124可以执行操作612,并监控中断、监控命中或意图触发处理核心108b返回到由OS控制的其它事件。如果在操作612处检测到这种触发,则ICD逻辑116b的状态改变逻辑128或PM逻辑102的状态改变逻辑118可以改变处理核心108b的状态,从而处理核心108b可以在操作614处返回到空闲状态(与计算设备100的OS的预期一致),并且流程图600的操作可以结束。如果核心监控逻辑124在操作612处没有检测到中断、监控命中或其它事件,则任务处理逻辑136可以返回到操作608并判定在BT任务队列中是否存在BT任务。处理核心108b可以贯穿操作608的执行保留在非空闲状态。
如果在操作608处ICTP逻辑120b的任务处理逻辑136判定在BT任务队列中存在BT任务,则任务处理逻辑136可以继续到操作610并开始处理BT任务队列中一个或多个BT任务中的至少一些。在一些实施例中,操作610可以包括如下所讨论的图8的流程图的一些或全部操作。流程图600的操作然后可以结束。
现在参考图7,提供了根据各个实施例的第二示例目标评估操作的流程图700。类似于图6的流程图600,出于说明的目的,流程图700的操作可以描述为由计算设备100的各个部件执行,例如处理核心108b的ICD逻辑116b和ICTP逻辑120b(图1和图3),但是流程图600的操作(包括流程图600的个体操作)可以由任意适当配置的部件或计算设备100的部件组合执行。在讨论图7时使用处理核心108b是为了与图5连续并纯粹是说明性的;流程图700的操作可以由处理核心108a-108n中的任意一个或其它适当配置的处理核心执行。如上参照图6所讨论的,在一些实施例中,当ICD逻辑116b从PM逻辑102、OS、ICD逻辑116b的状态改变逻辑128或其它源检测到空闲触发时,可以触发流程图700的操作。在一些实施例中,空闲触发可以例如包括HALT命令或MWAIT命令。以上参照图1-3讨论了处理核心进入空闲状态的多个示例触发。在一些实施例中,流程图700的操作可以被周期性或无周期性地触发,以判定是否存在供处理核心108b处理的BT任务。
流程图700的操作可以开始于702,其中ICTP逻辑120b的任务处理逻辑136可以判定在BT任务队列(例如,图1的BT任务队列122)中是否存在BT任务。如果任务处理逻辑136在操作702处判定出在BT任务队列中不存在BT任务,则ICD逻辑116b的核心监控逻辑124可以执行操作710,并监控中断、监控命中或意图触发处理核心108b返回到由OS控制的其它事件。如果在操作710处检测到这种触发,则ICD逻辑116b的状态改变逻辑128或PM逻辑102的状态改变逻辑118可以改变处理核心108b的状态,从而处理核心108b在操作712处返回到空闲状态(与计算设备100的OS的预期一致),并且流程图700的操作然后可以结束。如果核心监控逻辑124在操作710处没有检测到中断、监控命中或其它事件,则任务处理逻辑136可以返回到操作702并判定在BT任务队列中是否存在BT任务。处理核心108b可以贯穿操作702的执行保留在空闲状态。
如果在操作702处ICTP逻辑120b的任务处理逻辑136判定在BT任务队里中存在BT任务,则任务处理逻辑可以继续到操作704,并判定将处理核心108b的状态改变为非空闲状态以处理BT任务队列中的一个或多个BT任务中的至少一些是否与PM目标一致。以下参照图9详细描述可以如何为操作704处的评估识别非空闲状态和/或可以如何判定与PM目标一致的实施例。
如果目标评估逻辑126在操作704处判定出处理核心108b的状态改变与PM目标不一致,则流程图700的操作可以结束。如果目标评估逻辑126在操作704处判定改变处理核心108b的状态与PM目标一致,则ICD逻辑116的状态改变逻辑128在操作706处可以指示处理核心108b进入非空闲状态。在一些实施例中,在操作706处进入的非空闲状态可以是在操作704处评估的状态,如上所述。在操作708处,询问处理逻辑136可以开始处理BT任务队列中的一个或多个BT任务中的至少一些。在一些实施例中,操作610可以包括以下所讨论的图8的流程图800的一些或全部操作。流程图700的操作则可以结束。
现在参考图8,提供了根据各个实施例的示例空闲核心任务处理操作的流程图800。当一个或多个BT任务在BT任务队列(例如,图1的BT任务队列122)中排队时,可以执行流程图800的操作。出于说明的目的,流程图800的操作可以描述为由计算设备100的各个部件执行,例如处理核心108b的ICD逻辑116b和ICTP逻辑120b(图1和图3),但是流程图800的操作(包括流程图800的个体操作)可以由任意适当配置的部件或计算设备100的部件组合执行。在讨论图8时使用处理核心108b是为了与图5、6和7连续并纯粹是说明性的;流程图800的操作可以由处理核心108a-108n中的任意一个或其它适当配置的处理核心执行。在一些实施例中,当执行图6的操作610时和/或当执行图7的操作708时,可以执行流程图600的操作。流程图800的操作可以开始于操作802,其中ICTP逻辑120b的任务处理逻辑136可以利用处理核心108b处理BT任务队列122中的至少一些BT任务。如上所讨论的(以及如下参照图9所讨论的),在一些实施例中,在操作802处处理至少一些BT任务可以包括处理BT任务的一部分。在一些实施例中,利用处理核心108b处理至少一些BT任务可以与通过例如处理核心108a的另一处理核心执行与相BT任务关联的一组代码并行发生。
在操作804处,ICD逻辑116b的核心监控逻辑124可以监控中断、监控命中或意图触发处理核心108b返回到由OS控制的其它事件。如果在操作804处检测到这种触发,则任务处理逻辑136可以利用处理核心108b停止处理BT任务。在操作806处,ICD逻辑116b的上下文保存逻辑130可以保存处理核心108b的上下文以在后续时间进行恢复。在操作808处,ICTP逻辑120b的进度保存逻辑138可以保存表示在操作802处开始的BT任务的处理进度的数据。在一些实施例中,BT任务的剩余者和表示处理进度的数据可以在BT任务队列122中重新排队,从而可以通过将BT任务从BT任务队列122中移除以进行处理的下一处理核心完成BT任务。在一些实施例中,BT任务的剩余者和表示处理进度的数据可以存储于指定的存储器单元,从而当下次处理核心108b(或任意其它处理核心)可用于开始BT任务处理(例如,在图6的操作610处或图7的操作708处)时,通过处理核心108b(或处理核心108a-108n中任意其它处理核心)恢复BT任务的处理。在这种实施例中,可以考虑扩展BT任务队列122以包括指定的存储器单元。在操作810处,ICD逻辑116b的状态改变逻辑128或PM逻辑102的状态改变逻辑118可以改变处理核心108b的状态,从而处理核心108b返回到OS控制,并且流程图800的操作然后可以结束。
如果在操作804处未检测到触发,则任务处理逻辑136可以继续处理BT任务,并可以进行到操作812以判定BT任务的处理是否完成。如果任务尚未完成,则ICD逻辑116的核心监控逻辑124可以继续在操作804处监控中断或监控命中。一旦任务处理逻辑136在操作812处判定出BT任务的处理已经完成,则任务处理逻辑136可以在操作814处保存BT任务的输出到BT高速缓存(例如,BT高速缓存114),并且流程图800的操作然后可以结束。
现在参考图9,提供了根据各个实施例的示例空闲核心任务/目标评估操作的流程图900。在一些实施例中,可以执行流程图900的操作以判定改变到非空闲状态以处理来自BT任务队列122的至少一些BT任务是否与PM目标一致,例如图7的执行操作704的一部分。出于说明的目的,流程图900的操作可以描述为由处理核心108b的ICTP逻辑120b的各个部件(图1和图3)执行,但是流程图900的操作(包括流程图900的个体操作)可以由任意适当配置的部件或计算设备100的部件组合执行。在讨论图9时使用处理核心108b是为了与图5、6、7和8连续并纯粹是说明性的;流程图900的操作可以由处理核心108a-108n中的任意一个或其它适当配置的处理核心执行。
流程图900的操作可以开始于操作902处,其中ICTP逻辑120b的目标评估逻辑132可以判定是否存在一种非空闲状态,处理核心108b可以进入该非空闲状态以与PM目标一致地处理从BT任务队列122中取得的BT任务。在一些实施例中,仅有一个非空闲状态可用于处理核心108b处理BT任务,在这种情况下,将相对于该非空闲状态进行操作902的判定。在一些实施例中,一个或多个非空闲状态可用于处理核心108b处理BT任务。在这种实施例中,操作902的判定可以评估一个或多个那些非空闲状态来判定哪一个可用于与PM目标一致地处理BT任务;如果可以这样使用多于一个,则目标评估逻辑132可以选择非空闲状态之一作为处理核心108b应该转移到的状态以处理BT任务(例如,基于不同非空闲状态的性能特性)。在一些实施例中,操作902的判定可以基于PM目标、BT任务和/或处理核心108b的当前状态。例如,目标评估逻辑132可以判定给定的处理核心108b的当前低功率状态,BT任务队列122中的下一BT任务是复杂的且将要求将被充分处理的太多处理功率,同时维持与PM目标一致。
如果目标评估逻辑132在操作902处判定出存在一种非空闲状态,处理核心108b可以进入该非空闲状态以与PM目标一致地处理从BT任务队列122中取得的BT任务,则目标评估逻辑132可以进行到操作904,并在图7的操作704处返回“是”值或者以其他方式提供BT任务处理可以继续的指示。流程图900的操作然后可以结束。如果目标评估逻辑132在操作902处判定出不存在一种非空闲状态,处理核心108b可以进入该非空闲状态以与PM目标一致地处理从BT任务队列122中取得的BT任务,则任务划分逻辑134可以执行操作906并判定是否可以将BT任务(在操作902处评估的)划分成子任务。例如,可能不会容易地划分需要贯穿任务执行从OS不断更新的任务。在这种实施例中,任务划分逻辑134可以在操作906处判定BT任务不能被划分成子任务,目标评估逻辑132可以执行操作904,并在图7的操作704处返回“否”值,或者以其他方式提供不能进行处理至少一些BT任务的指示。如果任务划分逻辑134在操作906处判定出BT任务可以被划分成子任务,则任务划分逻辑132可以进行到操作908,并可以将BT任务划分成多个BT子任务。在一些实施例中,操作906可以不被执行。
在一些实施例中,任务划分逻辑134可以以识别可以利用处理核心108b与PM目的一致地处理BT任务的子任务的目的,来执行操作908的划分。任务划分逻辑134然后可以进行到操作910,并用在操作908处划分的多个BT子任务代替BT任务队列122中的原始BT任务。目标评估逻辑132然后可以重新执行操作902,更新BT任务队列122以包括多个BT子任务代替原始BT任务,并判定是否存在一种非空闲状态,处理核心108b可以转移到该非空闲状态以与PM目标一致地处理BT任务队列122中的至少一些BT任务。在一些实施例中,通过额外迭代操作908和910可以将BT子任务分解为进一步的子任务。
虽然很多先前的讨论集中于多核心处理BT任务的***和技术(例如,分析流、代码生成和/或优化),但是本文公开的***和技术在一些实施例中可以用于多核心处理替代或者附加于BT任务的其它计算任务。例如,在一些实施例中,本文公开的***和技术可用于反病毒任务、安全分析任务、离线剖析任务、***重配置任务、数据/高速缓存移动任务、备份任务等。
现在参考图10,提供了根据各个实施例的适用于实践所公开的实施例的示例计算设备的框图。在各个实施例中,计算设备1000可以是服务器、台式计算机、膝上型计算机、平板计算机、蜂窝电话、智能电话、个人数字助理、游戏控制台、因特网器具、移动互联网设备、或其它计算设备。
如图所示,计算设备1000包括多个处理核心1002以及***存储器1004。处理核心1002可以如上参照处理核心108a-108n所描述的那样被配置。另外,计算***1000可以包括大容量存储设备1006(例如,磁盘、硬盘驱动器、压缩盘只读存储器(CDROM)等)、输入/输出设备1008(例如,显示器、键盘、光标控件等)以及通信接口1010(例如,网络接口卡、调制解调器等)。各元件可以经由***总线1012(其表示一个或多个总线)彼此耦合。在多个总线的情况下,它们可以通过一个或多个总线桥(未示出)而桥接。
这些元件中的每一个元件可以执行其在本领域中已知的传统功能。具体地,***存储器1004和大容量存储装置1006可以用于存储实现图5-7中任一项的方法或其部分的程序指令在被各个处理核心1002执行时的工作副本和永久副本,此处将其统称为计算逻辑1022。可以通过处理核心1002支持的汇编指令或可以编译成这种指令的高级语言(例如,C)实现各个部件。处理核心1002和***存储器1004可以表示宽范围的处理核心和存储器布置,包括布置各种执行速度和功率消耗的处理核心以及各种架构(例如,具有一级或多级高速缓存)和各种类型(例如,动态随机存取、闪速等)的存储器。
例如通过机器可访问分布介质(未示出)(如压缩盘(CD)),或通过通信接口1010(例如,从分布式服务器(未示出)),程序指令的永久副本可以在工厂或现场放置到永久存储状态1006中。也就是,具有代理程序实现方式的一个或多个分布介质可以用于在各个计算设备处分布代理和程序。元件1002-1012的构成是已知的,因此将不进一步描述。
用于执行上述技术的机器可读介质(包括非瞬态机器可读介质,例如机器可读存储介质)、方法、***和设备是本文公开的实施例的说明性例子。另外,在上述交互中的其它设备可以被配置为执行所公开的各种技术。
例子
例子1是一种用于在多核心计算设备上处理二进制转换(BT)任务的方法,包括:在第一处理核心上执行一组代码期间利用所述计算设备的所述第一处理核心识别待处理的BT任务,所述BT任务与该组代码相关联;利用所述第一处理核心将所述BT任务排队到所述计算设备的第二处理核心可访问的队列中,所述第二处理核心不同于所述第一处理核心;判定所述第二处理核心处于空闲状态,或者已经通过操作***接收到进入空闲状态的指令;以及响应于判定出所述第二处理核心处于空闲状态或已经通过操作***接收到进入空闲状态的指令,利用所述第二处理核心处理至少一些BT任务。
例子2可以包括例子1的主题,并且还包括:在响应于判定出所述第二处理核心处于空闲状态或已经接收到进入空闲状态的指令,利用所述第二处理核心处理至少一些BT任务之前,将所述第二处理核心的状态改变为非空闲状态。
例子3可以包括例子2的主题,并且还指定将所述第二处理核心的状态改变为非空闲状态还包括:改变所述第二处理核心的上下文。
例子4可以包括例子1-3中任一项的主题,并且还包括:在利用所述第二处理核心处理至少一些BT任务之前,识别所述计算设备的功率管理目标,识别所述第二处理核心的当前状态,判定将所述第二处理核心的状态从所述当前状态改变到非空闲状态是否与所述功率管理目标一致,以及当将所述第二处理核心的状态改变到非空闲状态与所述功率管理目标一致时,将所述第二处理核心的所述当前状态改变为非空闲状态。
例子5可以包括例子4的主题,并且还指定识别所述计算设备的功率管理目标包括:查询功率管理逻辑关于表示所述计算设备的目标性能级别的数据或者表示所述计算设备的电源的数据。
例子6可以包括例子4-5中任一项的主题,并且还指定所述当前状态包括暂停状态、停止时钟状态、睡眠状态、电压调节状态或频率调节状态。
例子7可以包括例子4-6中任一项的主题,并且还指定判定是否将所述第二处理核心的状态从所述当前状态改变到非空闲状态是基于所述功率管理目标、BT任务以及所述第二处理核心的状态。
例子8可以包括例子1-7中任一项的主题,并且还指定利用所述第二处理核心处理至少一些BT任务包括:识别所述计算设备的功率管理目标;判定利用所述第二处理核心处理BT任务是否与所述功率管理目标一致;当利用所述第二处理核心处理BT任务不与所述功率管理目标一致时,将所述BT任务划分成多个BT子任务,其中可以利用所述第二处理核心与所述功率管理目标一致地处理多个BT子任务的第一BT子任务;以及利用所述第二处理核心处理所述第一BT子任务。
例子9可以包括例子1-8中任一项的主题,并且还包括:当利用所述第二处理核心处理至少一些BT任务时,接收表示操作***使用所述第二处理核心的请求的信号;以及响应于所述信号,停止利用所述第二处理核心处理至少一些BT任务。
例子10可以包括例子1-9中任一项的主题,并且还指定BT任务包括将该组代码的一部分转换成另一组代码,或者评估该组代码的性能特性。
例子11可以包括例子1-10中任一项的主题,并且还指定利用所述第二处理核心处理至少一些BT任务与在所述计算设备的所述第一处理核心上执行该组代码并行发生。
例子12可以包括例子1-11中任一项的主题,并且还指定判定所述第二处理核心处于空闲状态或者已经通过操作***接收到进入空闲状态的指令包括:判定所述第二处理核心已经通过操作***接收到进入空闲状态的指令,所述指令从所述计算设备的功率管理逻辑传输。
例子13是包括指令的一种或多种机器可读介质,响应于被计算设备执行,所述指令使得计算设备执行如例子1-12中任一项所述的方法。
例子14是一种装置,其包括多个处理核心以及包括指令的一个或多个机器可读介质,响应于被多个处理核心执行,所述指令使得所述装置执行如例子1-12中任一项所述的方法。
例子15是一种装置,其包括用于执行如例子1-12中任一项所述的方法的操作的逻辑。
例子16是一种装置,其包括一个或多个用于执行如例子1-12中任一项所述的方法的操作的单元。
Claims (23)
1.一种用于为多核心计算设备处理二进制转换(BT)任务的装置,包括:
用于在所述计算设备的第一处理核心上执行一组代码期间关于该组代码识别待处理的二进制转换(BT)任务的逻辑;
用于将BT任务排队到所述计算设备的第二处理核心可访问的队列中的逻辑,所述第二处理核心不同于所述第一处理核心;
用于判定所述第二处理核心处于空闲状态,或者已经通过操作***接收到进入空闲状态的指令的逻辑;
用于响应于判定出所述第二处理核心处于空闲状态或已经通过操作***接收到进入空闲状态的指令,利用所述第二处理核心处理至少一些BT任务的逻辑;以及
用于以下的逻辑:
在利用所述第二处理核心处理至少一些BT任务之前,
识别所述计算设备的功率管理目标,
识别所述第二处理核心的当前状态,
判定将所述第二处理核心的状态从所述当前状态改变到非空闲状态是否与所述功率管理目标一致,以及
当将所述第二处理核心的所述当前状态改变到所述目标非空闲状态与所述功率管理目标一致时,将所述第二处理核心的所述当前状态改变为所述非空闲状态。
2.如权利要求1所述的装置,还包括用于以下的逻辑:
在响应于判定出所述第二处理核心处于空闲状态或已经接收到进入空闲状态的指令而利用所述第二处理核心处理至少一些BT任务之前,将所述第二处理核心的状态改变为非空闲状态。
3.如权利要求2所述的装置,其中,将所述第二处理核心的状态改变为目标非空闲状态还包括:
改变所述第二处理核心的上下文。
4.如权利要求1所述的装置,其中,识别所述计算设备的功率管理目标包括:
查询功率管理逻辑关于表示所述计算设备的目标性能级别的数据或者表示所述计算设备的电源的数据。
5.如权利要求1所述的装置,其中,所述当前状态包括暂停状态、停止时钟状态、睡眠状态、电压调节状态或频率调节状态。
6.如权利要求1所述的装置,其中,判定将所述第二处理核心的状态从所述当前状态改变到非空闲状态是否与所述功率管理目标一致是基于功率管理目标、BT任务以及所述第二处理核心的所述当前状态。
7.如权利要求1-3中任一项所述的装置,还包括用于以下的逻辑:
识别所述计算设备的功率管理目标;
判定利用所述第二处理核心处理BT任务是否与所述功率管理目标一致;
当利用所述第二处理核心处理BT任务不与所述功率管理目标一致时,将BT任务划分成多个BT子任务,其中能够利用所述第二处理核心与所述功率管理目标一致地处理所述多个BT子任务的第一BT子任务;以及
利用所述第二处理核心处理所述第一BT子任务。
8.如权利要求1-3中任一项所述的装置,还包括用于以下的逻辑:
当利用所述第二处理核心处理至少一些BT任务时,接收表示操作***使用所述第二处理核心的请求的信号;以及
响应于所述信号,停止利用所述第二处理核心处理所述至少一些BT任务。
9.如权利要求1-3中任一项所述的装置,其中,BT任务包括将该组代码的一部分转换成另一组代码,或者评估该组代码的性能特性。
10.如权利要求1-3中任一项所述的装置,其中,利用所述第二处理核心处理至少一些BT任务与在所述计算设备的所述第一处理核心上执行该组代码并行发生。
11.如权利要求1-3中任一项所述的装置,其中,判定所述第二处理核心处于空闲状态或者已经通过操作***接收到进入空闲状态的指令包括:判定所述第二处理核心已经通过操作***接收到进入空闲状态的指令,所述指令从所述计算设备的功率管理逻辑传输。
12.一种用于在多核心计算设备上处理二进制转换(BT)任务的方法,包括:
利用所述计算设备的第一处理核心,在所述第一处理核心上执行一组代码期间关于该组代码识别待处理的BT任务;
利用所述第一处理核心将BT任务排队到所述计算设备的第二处理核心可访问的队列中,所述第二处理核心不同于所述第一处理核心;
判定所述第二处理核心处于空闲状态,或者已经通过操作***接收到进入空闲状态的指令;响应于判定出所述第二处理核心处于空闲状态或已经通过操作***接收到进入空闲状态的指令,利用所述第二处理核心处理至少一些BT任务;以及
在利用所述第二处理核心处理至少一些BT任务之前,
识别所述计算设备的功率管理目标,
识别所述第二处理核心的当前状态,
判定将所述第二处理核心的状态从所述当前状态改变到非空闲状态是否与所述功率管理目标一致,以及
当将所述第二处理核心的状态改变到非空闲状态与所述功率管理目标一致时,将所述第二处理核心的所述当前状态改变为所述非空闲状态。
13.如权利要求12所述的方法,还包括:
在利用所述第二处理核心处理至少一些BT任务之前,
响应于判定出所述第二处理核心处于空闲状态或已经接收到进入空闲状态的指令,将所述第二处理核心的状态改变为非空闲状态。
14.如权利要求13所述的方法,其中,将所述第二处理核心的状态改变为非空闲状态还包括:
改变所述第二处理核心的上下文。
15.如权利要求12所述的方法,其中,识别所述计算设备的功率管理目标包括:
查询功率管理逻辑关于表示所述计算设备的目标性能级别的数据或者表示所述计算设备的电源的数据。
16.如权利要求12所述的方法,其中,所述当前状态包括暂停状态、停止时钟状态、睡眠状态、电压调节状态或频率调节状态。
17.如权利要求12所述的方法,其中,判定是否将所述第二处理核心的状态从所述当前状态改变到非空闲状态是基于所述功率管理目标、BT任务以及所述第二处理核心的状态。
18.如权利要求12所述的方法,其中,利用所述第二处理核心处理至少一些BT任务包括:
识别所述计算设备的功率管理目标;
判定利用所述第二处理核心处理BT任务是否与所述功率管理目标一致;
当利用所述第二处理核心处理BT任务不与所述功率管理目标一致时,将BT任务划分成多个BT子任务,其中能够利用所述第二处理核心与所述功率管理目标一致地处理所述多个BT子任务的第一BT子任务;以及
利用所述第二处理核心处理所述第一BT子任务。
19.如权利要求12所述的方法,还包括:
当利用所述第二处理核心处理至少一些BT任务时,接收表示操作***使用所述第二处理核心的请求的信号;以及
响应于所述信号,停止利用所述第二处理核心处理所述至少一些BT任务。
20.如权利要求12所述的方法,其中,BT任务包括将该组代码的一部分转换成另一组代码,或者评估该组代码的性能特性。
21.如权利要求12所述的方法,其中,利用所述第二处理核心处理至少一些BT任务与在所述计算设备的所述第一处理核心上执行该组代码并行发生。
22.如权利要求12所述的方法,其中,判定所述第二处理核心处于空闲状态或者已经通过操作***接收到进入空闲状态的指令包括:判定所述第二处理核心已经通过操作***接收到进入空闲状态的指令,所述指令从所述计算设备的功率管理逻辑传输。
23.一种机器可读介质,包括代码,所述代码响应于被多个处理核心执行而使得机器执行如权利要求12-22中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/031005 WO2014142847A1 (en) | 2013-03-13 | 2013-03-13 | Multi-core binary translation task processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104969190A CN104969190A (zh) | 2015-10-07 |
CN104969190B true CN104969190B (zh) | 2018-05-15 |
Family
ID=51534780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380072916.1A Active CN104969190B (zh) | 2013-03-13 | 2013-03-13 | 多核心二进制转换任务处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9110723B2 (zh) |
EP (1) | EP2972826B1 (zh) |
CN (1) | CN104969190B (zh) |
WO (1) | WO2014142847A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9829947B1 (en) | 2014-04-04 | 2017-11-28 | Google Llc | Selecting and serving a content item based on device state data of a device |
CN105718320B (zh) * | 2016-01-18 | 2020-11-06 | 华为技术有限公司 | 一种时钟任务处理方法、装置及设备 |
US20170300101A1 (en) * | 2016-04-14 | 2017-10-19 | Advanced Micro Devices, Inc. | Redirecting messages from idle compute units of a processor |
GB2580178B (en) * | 2018-12-21 | 2021-12-15 | Imagination Tech Ltd | Scheduling tasks in a processor |
US11537429B2 (en) * | 2019-12-19 | 2022-12-27 | Red Hat, Inc. | Sub-idle thread priority class |
CN112416609A (zh) * | 2021-01-22 | 2021-02-26 | 南京芯驰半导体科技有限公司 | 双核模式的模式配置方法及装置 |
US20220407329A1 (en) * | 2021-06-16 | 2022-12-22 | Hewlett-Packard Development Company, L.P. | Battery charge regulation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101095105A (zh) * | 2004-12-30 | 2007-12-26 | 英特尔公司 | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US7765543B1 (en) * | 2003-12-17 | 2010-07-27 | Vmware, Inc. | Selective descheduling of idling guests running on a host computer system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090150890A1 (en) * | 2007-12-10 | 2009-06-11 | Yourst Matt T | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
US7853960B1 (en) * | 2005-02-25 | 2010-12-14 | Vmware, Inc. | Efficient virtualization of input/output completions for a virtual device |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US20070016895A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Selective omission of endian translation to enhance emulator performance |
US20080244538A1 (en) | 2007-03-26 | 2008-10-02 | Nair Sreekumar R | Multi-core processor virtualization based on dynamic binary translation |
US7941791B2 (en) | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US8479195B2 (en) | 2007-05-16 | 2013-07-02 | Vmware, Inc. | Dynamic selection and application of multiple virtualization techniques |
US8321840B2 (en) | 2007-12-27 | 2012-11-27 | Intel Corporation | Software flow tracking using multiple threads |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US8543991B2 (en) * | 2011-03-10 | 2013-09-24 | Microsoft Corporation | Profile driven multicore background compilation |
-
2013
- 2013-03-13 WO PCT/US2013/031005 patent/WO2014142847A1/en active Application Filing
- 2013-03-13 US US13/997,630 patent/US9110723B2/en active Active
- 2013-03-13 CN CN201380072916.1A patent/CN104969190B/zh active Active
- 2013-03-13 EP EP13877577.0A patent/EP2972826B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765543B1 (en) * | 2003-12-17 | 2010-07-27 | Vmware, Inc. | Selective descheduling of idling guests running on a host computer system |
CN101095105A (zh) * | 2004-12-30 | 2007-12-26 | 英特尔公司 | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
Also Published As
Publication number | Publication date |
---|---|
EP2972826A1 (en) | 2016-01-20 |
CN104969190A (zh) | 2015-10-07 |
WO2014142847A1 (en) | 2014-09-18 |
EP2972826B1 (en) | 2021-06-23 |
US20140282587A1 (en) | 2014-09-18 |
US9110723B2 (en) | 2015-08-18 |
EP2972826A4 (en) | 2016-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104969190B (zh) | 多核心二进制转换任务处理 | |
Bui et al. | Energy efficiency for cloud computing system based on predictive optimization | |
Ahmad et al. | A survey on virtual machine migration and server consolidation frameworks for cloud data centers | |
US8423799B2 (en) | Managing accelerators of a computing environment | |
CN102770826B (zh) | 虚拟机功耗测量和管理 | |
Feller et al. | Energy management in IaaS clouds: a holistic approach | |
CN102812439B (zh) | 用于在多处理器计算机***中分派任务的方法和*** | |
US20140344599A1 (en) | Method and System for Power Management | |
CN107209548A (zh) | 在多核处理器中执行功率管理 | |
US20110106935A1 (en) | Power management for idle system in clusters | |
JP2018513463A (ja) | プロセッサ/コプロセッサ構成に対するデータのオフローディング及びオンローディングのための技術 | |
Alvarruiz et al. | An energy manager for high performance computer clusters | |
US10528119B2 (en) | Dynamic power routing to hardware accelerators | |
JP2002202893A (ja) | 多重タスクの実行を制御する方法と処理回路 | |
CN103890693A (zh) | 基于参数报告更新的阈值基准 | |
CN103842933A (zh) | 多核平台中的受约束引导技术 | |
US20120102499A1 (en) | OPTIMIZING THE PERFORMANCE OF HYBRID CPU SYSTEMS BASED UPON THE THREAD TYPE OF APPLICATIONS TO BE RUN ON THE CPUs | |
De Alfonso et al. | An energy management system for cluster infrastructures | |
Makrani et al. | Energy-aware and machine learning-based resource provisioning of in-memory analytics on cloud | |
Alrajeh et al. | Using virtual machine live migration in trace-driven energy-aware simulation of high-throughput computing systems | |
Sharma et al. | Reliable and energy efficient resource provisioning and allocation in cloud computing | |
Li et al. | An adaptive cpu-gpu governing framework for mobile games on big. little architectures | |
TW201423400A (zh) | 用於超管理器系統之針對雙直列記憶體模組節能的系統與方法 | |
Dolz et al. | EnergySaving Cluster Roll: Power saving system for clusters | |
KR102443089B1 (ko) | 컴퓨팅 디바이스에서의 동기화 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |