CN108351811B - 调度高度并行的应用 - Google Patents
调度高度并行的应用 Download PDFInfo
- Publication number
- CN108351811B CN108351811B CN201680067881.6A CN201680067881A CN108351811B CN 108351811 B CN108351811 B CN 108351811B CN 201680067881 A CN201680067881 A CN 201680067881A CN 108351811 B CN108351811 B CN 108351811B
- Authority
- CN
- China
- Prior art keywords
- nodes
- application
- actual number
- cluster
- lock
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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
-
- 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
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
用于调度由高性能计算系统执行的高度并行的应用的系统和方法。示例处理系统可以包括:控制寄存器和通信耦合到控制寄存器的处理核。处理核可以配置成接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求;鉴于节点分配请求和所述多个节点上的当前负载,确定要分配给所述应用的实际节点数目,其中要分配给所述应用的实际节点数目优化集群负载准则;以及使用控制寄存器通知应用实际节点数目。
Description
本公开一般地涉及高性能计算机(HPC)系统,并且更具体地,涉及用于调度高度并行的应用的指令集架构支持。
背景技术
高性能计算(HPC)系统可以包括被分组到一个或多个计算集群中的多个计算节点。计算节点可以由控制节点管理。
附图说明
通过示例的方式而不是通过限制的方式来说明本公开,并且在结合附图考虑时可以参考以下详细描述来更加全面地理解本公开。
图1示意性地图示了依照本公开的一个或多个方面操作的示例高性能计算系统的框图。
图2A-2B示意性地图示了依照本公开的一个或多个方面的各种集群配置。
图3是依照本公开的一个或多个方面操作的示例处理系统的框图。
图4描绘了依照本公开的一个或多个方面的用于确定节点集群中的应用配置的示例方法400的流程图。
图5图示了依照本公开的一个或多个方面的打包数据类型。
图6A图示了依照本公开的一个或多个方面的处理器微架构的元件。
图6B图示了依照本公开的一个或多个方面的处理器微架构的元件。
图7是依照本公开的一个或多个方面操作的处理器的框图。
图8是依照本公开的一个或多个方面操作的处理器的框图。
图9是依照本公开的一个或多个方面操作的片上系统的框图。
图10是依照本公开的一个或多个方面操作的计算机系统的框图。
图11图示了针对依照本公开的一个或多个方面操作的计算系统的另一示例框图。
图12图示了以依照本公开的一个或多个方面操作的计算系统的示例形式的机器的图解表示。
具体实施方式
本文描述的是用于调度高度并行的应用的系统和方法。
高性能计算(HPC)系统可以包括被分组到一个或多个计算集群中的多个计算节点。驻留在专用节点上或计算节点之一上的批量调度器可以用于调度计算作业(还称为应用)以用于在计算节点上执行。可以请求一个或多个计算节点以用于执行给定应用,并且可以指定预期的运行时间。调度器可以利用这些和其它执行参数来向计算节点指派应用以供执行。
调度器可以采用最大化计算节点的使用水平的调度策略,以便增加总体系统成本效率。然而,在常用实现方式中,计算节点的平均使用极少超过其容量的80%,因为在给定时刻可用于调度的节点数目可能未必等于要调度的一个或多个应用的所请求的节点数目之和。换言之,可用节点数目与分配到一个或多个应用的节点数目之间的差异可能小于调度等待执行的另一应用将必需的节点数目。
计算节点的利用不足不利地影响总体系统成本效率,因为甚至不活跃的计算节点也消耗电能以用于其操作和冷却。以80%的容量利用消耗20和40兆瓦(MW)电能之间的计算节点集群意味着每小时将损失4-8MW的电能。
本公开通过提供对批量调度方法的指令集架构(ISA)支持来解决以上指出的和其它的缺陷,所述批量调度方法使得应用在运行时处动态地增加或减小应用足迹(即计算节点的数目)。依照本公开的一个或多个方面,执行批量调度器的处理器可以实现用于存储反映当前应用配置的存储器数据结构(例如向应用指派的节点的标识符)的地址的控制寄存器。处理器还可以实现若干指令以操纵控制寄存器。这样的指令可以包括用于读取配置的负载配置(LDCONFIG)、用于存储配置的存储配置(STCONFIG),以及用于请求应用配置数据结构的锁定的请求配置所有权(REQCONFIG)。
依照本公开的一个或多个方面操作的批量调度器可以被编程以确定优化某个集群负载准则的集群配置。在说明性示例中,批量调度器可以从等待被执行或正在由高性能计算系统执行的应用接收节点分配请求。节点分配请求可以指定预期的应用和用于执行该应用的所请求的节点数目。
响应于接收到节点分配请求,批量调度器可以确定优化所选集群负载准则的集群配置。批量调度器然后可以利用处理器控制寄存器来通知应用已经被指派给该应用的实际节点数目,如本文以下更加详细描述的。
本文以下通过示例的方式而不是通过限制的方式详细描述以上引用的方法和系统的各种方面。
现在参照图1,示例高性能计算系统1000可以包括通过网络135互连的主节点110和多个计算节点120A-120N。主节点110可以执行批量调度器140,批量调度器140可以例如经由消息传递接口(MPI)消息150向节点120A-120N中的每一个进行通信。
主节点110可以实现用于对等待被调度的应用170A-170K进行排队的输入作业队列160。每一个应用可以通过相应的应用标识符、为了执行该应用所请求的计算节点数目和应用的预期运行时来描述。
批量调度器140可以被编程以确定优化某个集群负载准则的集群配置。如通过图2A示意性图示的,批量调度器140可以生成应用170A-170K的多个组合,并且选择最小化在任何给定时间保持未被指派给任何应用的节点数目的组合。可替换地,批量调度器140可以选择最小化在给定时间段内保持未被使用的总体处理容量的组合。图2示意性地图示了调度要由多个计算节点120A-120N在某个时间段内执行的多个应用170A-170K的示例。如图2A中所示,常规的调度算法可能产生具有显著水平的未被使用的处理容量(被标注为块180)的调度。
由于一些应用(例如客户端-服务器应用)可以具有可容易地适配于动态改变的节点数目的架构,因此批量调度器140可以通过采用使得应用在运行时处动态地增加或减小应用足迹(即计算节点数目)的调度方法来改进集群效率。当与常规方法相比时,这样的调度方法可以产生更加高效的调度,其进一步最小化未被使用的处理容量的水平,如通过图2B示意性图示的。
图3示意性地图示了依照本公开的一个或多个方面操作的示例处理系统的框图。如通过图3示意性图示的,依照本公开的一个或多个方面,处理系统100可以包括为批量调度方法提供ISA支持的一个或多个处理器102,该批量调度方法命令应用在运行时处动态地增加或减小应用足迹。
在图3的说明性示例中,处理器102包括配置成执行某个指令集的指令的一个或多个执行单元408。处理器102耦合到处理器总线410,处理器总线410在处理器102与系统100的其它组件之间传输数据信号。系统100的其它元件(例如图形视频卡412、存储器控制器中枢416、存储器420、I/O控制器中枢430、无线收发器426、闪存BIOS 428、网络控制器434、音频控制器436、串行扩展端口438、遗留I/O控制器440等)可以执行对熟悉本领域的人员而言公知的其常规功能。
每一个处理器102可以包括多个寄存器,包括通用寄存器和专用寄存器。在某些实现方式中,处理系统100还可以包括图3中未示出的各种其它组件。本文以下呈现处理系统100的各种组件的各种详细的描述。
处理器102可以包括控制寄存器122,控制寄存器122可以用于存储反映当前应用配置的存储器数据结构的地址。在说明性示例中,应用配置数据结构可以存储应用标识符和要被指派用于执行应用的节点数目。在说明性示例中,应用配置数据结构可以最初由应用创建,该应用可以记录所请求的节点数目。批量调度器可以最终修改被指派给应用的节点数目,以试图优化集群负载准则。
可替换地,应用配置数据结构可以由批量调度器创建,批量调度器可以记录被指派给应用的节点数目。应用配置数据结构的创建器可以使用STCONFIG指令在控制寄存器122中存储数据结构的地址。应用可以使用LDCONFIG指令读取控制寄存器122的内容,并且可以检索存储用于该应用的节点的当前配置的数据结构的地址。
在某些实现方式中,处理器102还可以实现请求配置所有权(REQCONFIG),以用于在修改数据结构之前请求应用配置数据结构的锁定。在说明性示例中,当自从获得锁定以来预先限定的超时届满时可以释放锁定。可替换地,可以通过执行具有指示锁定释放的参数的REQCONFIG命令来显式地释放锁定。
在某些实现方式中,批量调度器可以确定应用在预定时间段内未能释放应用配置数据结构的之前获得的锁定。批量调度器可以将应用视为非响应的,并且可以发起适当的恢复进程(例如通过确定非响应应用)。
如本文以上所指出的,依照本公开的一个或多个方面操作的批量调度器可以被编程以确定优化某个集群负载准则的集群配置。在说明性示例中,批量调度器可以从等待被执行或正在由高性能计算系统执行的应用接收节点分配请求。节点分配请求可以指定预期应用和用于执行该应用的所请求的节点数目。在某些实现方式中,节点分配请求还可以指定必需的最小节点数目、指示附加的等待时间是否比分配比所请求的更少的节点数目更加优选的等待偏好参数、应用优先级和/或各种其它应用参数。
响应于接收到节点分配请求,批量调度器可以确定要分配给应用的实际节点数目。如本文以上所指出的,可以选择实际节点数目以优化某个集群负载准则。在说明性示例中,可以如下确定集群负载准则:
其中L指代要由批量调度器最小化的集群未被使用的负载,并且ni是在时间段ti内保持未被使用的节点数目。
在说明性示例中,批量调度器可以生成要由集群执行的所述多个应用的多个应用组合,确定针对每一个所生成的组合的集群负载准则的值,并且选择与集群负载准则的最优(最大或最小)值相关联的组合。
在各种说明性示例中,批量调度器可以确定满足从节点分配请求的各种参数导出的附加约束的集群配置,所述参数诸如要分配给应用的最小节点数目,和/或指示附加的等待时间是否比分配比所请求的更少的节点数目更加优选的等待偏好参数。
响应于确定优化集群负载准则的集群配置,批量调度器可以通知应用已经被指派给应用的实际节点数目,如本文以上更加详细描述的。
图4描绘了依照本公开的一个或多个方面的用于确定节点集群中的应用配置的示例方法400的流程图。方法400可以通过处理逻辑来执行,该处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如由功能单元执行的操作)、固件或其组合。在某些实现方式中,方法400通过由图4的示例处理系统100执行的批量调度器执行。
参照图4,方法400在块410处开始,其中实现该方法的处理器可以接收节点分配请求。节点分配请求可以指定预期应用和用于执行该应用的所请求的节点数目。在某些实现方式中,节点分配请求还可以指定各种附加的应用执行参数,如本文以上更加详细描述的。
在块420处,处理器可以鉴于节点分配请求和所述多个节点上的当前负载而确定用于请求应用的应用配置,包括要分配给应用的节点数目。可以选择应用配置以优化某个集群负载准则,如本文以上更加详细描述的。
在块430处,处理器可以在应用配置数据结构中存储应用配置,包括节点数目,如本文以上更加详细描述的。
在块440处,处理器可以在控制寄存器中存储应用配置数据结构的地址,如本文以上更加详细描述的。
在块450处,处理器可以使得应用根据所确定的应用配置来执行。
本公开的实现方式不限于计算机系统。本公开的可替换的实现方式可以使用在其它设备(诸如手持设备)和嵌入式应用中。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机,或可以依照至少一个实现方式执行一个或多个指令的任何其它系统。
再次参照图3,处理器102包括一个或多个执行单元408以实现要执行至少一个指令的算法。可以在单个处理器台式机或服务器系统的上下文中描述一个实现方式,但是可以在多处理器系统中包括可替换的实现方式。系统100是“中枢”系统架构的示例。处理系统100包括处理数据信号的处理器102。处理器102,作为一个说明性示例,包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器,或任何其它处理器设备,诸如例如数字信号处理器。处理器102耦合到处理器总线410,处理器总线410在处理器102与系统100中的其它组件之间传输数据信号。系统100的元件(例如图形视频卡412、存储器控制器中枢416、存储器420、I/O控制器中枢430、无线收发器426、闪存BIOS 428、网络控制器434、音频控制器436、串行扩展端口438、I/O控制器430等)执行对熟悉本领域的人员而言公知的其常规功能。
在一个实现方式中,处理器102包括1级(L1)内部高速缓存404。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。取决于特定实现方式和需要,其它实现方式包括内部和外部高速缓存二者的组合。这些高速缓存中的一个或多个可以是设定相关联的,并且可以允许地址锁定。照此,其可以包括高速缓存控制器借以实现锁定和解锁高速缓存方式的原理的实现方式,如本文所描述的。寄存器文件406要在各种寄存器中存储不同类型的数据,所述寄存器包括整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子(shadow)寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
执行单元408,包括执行整数和浮点运算的逻辑,也驻留在处理器102中。在一个实现方式中,处理器102包括存储微代码的微代码(ucode)ROM,该微代码在被执行时执行用于某些宏指令的算法或处置复杂情境。在此,微代码是潜在地可更新的以处置用于处理器102的逻辑错误/修复。对于一个实现方式,执行单元408包括处置打包指令集409的逻辑。通过在通用处理器102的指令集中包括打包指令集409,连同执行指令的相关联的电路,由许多多媒体应用使用的操作可以使用通用处理器102中的打包数据来执行。因此,通过使用处理器的数据总线的完整宽度以用于执行打包数据上的操作来加速并且更加高效地执行许多多媒体应用。这潜在地消除跨处理器的数据总线输送较小数据单元以执行一个或多个操作(一次一个数据单元)的需要。
还可以在微控制器、嵌入式处理器、图形设备、DSP和其它类型的逻辑电路中使用执行单元408的可替换的实现方式。系统100包括存储器420。存储器420包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其它存储器设备。存储器420存储通过要由处理器102执行的数据信号表示的指令和/或数据。
存储器控制器中枢(MCH)416耦合到处理器总线410和存储器420。处理器102可以经由处理器总线410向MCH 416进行通信。MCH 416提供去到存储器420的高带宽存储器路径418以用于指令和数据存储和用于存储图形命令、数据和文本。MCH 416要在处理器102、存储器420和系统100中的其它组件之间引导数据信号,并且在处理器总线410、存储器420和系统I/O 422之间桥接数据信号。在一些实现方式中,系统逻辑芯片416可以提供用于耦合到图形控制器412的图形端口。MCH 416通过存储器接口418耦合到存储器420。图形卡412通过加速图形端口(AGP)互连414耦合到MCH 416。还可以在存储器控制器中枢416中实现高速缓存以提供比存储器420更快的响应。该高速缓存可以是设定相关联的,并且可以允许地址的锁定,如本文所描述的。
系统100可以使用专用中枢接口总线422,以将MCH 416耦合到I/O控制器中枢(ICH)430。ICH 430提供经由本地I/O总线对一些I/O设备的直接连接。本地I/O总线是用于将外设连接到存储器420、芯片组和处理器102的高速I/O总线。一些示例是音频控制器、固件中枢(闪存BIOS)428、无线收发器426、数据储存424、包含用户输入和键盘接口的遗留I/O控制器、诸如通用串行总线(USB)之类的串行扩展端口和网络控制器434。数据存储设备424可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其它大容量存储设备。
图5图示了根据本公开的一个实现方式的处理器寄存器中的各种打包数据类型表示。图5图示了针对128位宽操作数的用于打包字节510、打包字520和打包双字(dword)530的数据类型。该示例的打包字节格式510为128位长,并且包含十六个打包字节数据元素。在此将字节定义为8位数据。对于字节0在从位7到位0中,对于字节1在从位15到位8中,对于字节2在从位23到位16中并且最后对于字节15在从位120到位127中存储针对每一个字节数据元素的信息。因此,在寄存器中使用所有可用位。该存储布置增加处理器的存储效率。同样,利用所访问的十六个数据元素,现在可以在十六个数据元素上并行地执行一个运算。
一般地,数据元素是存储在具有相同长度的其它数据元素的单个寄存器或存储器位置中的单独数据片段。在涉及SSEx技术的打包数据序列中,存储在XMM寄存器中的数据元素的数目为128位除以单独数据元素的位长度。类似地,在涉及MMX和SSE技术的打包数据序列中,存储在MMX寄存器中的数据元素的数目为64位除以单独数据元素的位长度。尽管在图5中图示的数据类型为128位长,但是实现方式还可以用64位宽或其它大小的操作数来操作。该示例的打包字格式520为128位长,并且包含八个打包字数据元素。每一个打包字包含十六位信息。图5的打包双字格式530为128位长,并且包含四个打包双字数据元素。每一个打包双字数据元素包含三十二位信息。打包四倍字为128位长,并且包含两个打包四倍字数据元素。
图6A是图示了根据本公开的至少一个实现方式的有序管线和寄存器重命名阶段、乱序发布/执行管线的框图。图6B是图示了根据本公开的至少一个实现方式的要包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑的框图。图6A中的实线框图示了有序管线,而虚线框图示了寄存器重命名、乱序发布/执行管线。类似地,图6B中的实线框图示了有序架构逻辑,而虚线框图示了寄存器重命名逻辑和乱序发布/执行逻辑。
在图6A中,处理器管线600包括提取阶段602、长度解码阶段604、解码阶段606、分配阶段608、重命名阶段610、调度(还称为派遣或发布)阶段612、寄存器读取/存储器读取阶段614、执行阶段616、写回/存储器写入阶段618、例外处置阶段622和提交阶段624。
在图6B中,箭头指代两个或更多单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图6B示出处理器核690,包括耦合到执行引擎单元650的前端单元630,并且二者耦合到存储器单元670。
核690可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替换的核类型。作为又一选项,核690可以是专用核,诸如例如网络或通信核、压缩引擎、图形核等。
前端单元630包括耦合到指令高速缓存单元634的分支预测单元632,指令高速缓存单元634耦合到指令转译旁路缓冲器(TLB)636,指令转译旁路缓冲器(TLB)636耦合到指令提取单元638,指令提取单元638耦合到解码单元640。解码单元或解码器可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号(其从原始指令解码或者以其它方式反映原始指令,或者从原始指令导出)。解码器可以使用各种不同的机制实现。合适的机制的示例包括但不限于,查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元634还耦合到存储器单元670中的2级(L2)高速缓存单元676。解码单元640耦合到执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括耦合到引退单元654和一个或多个调度器单元656的集合的重命名/分配器单元652。(多个)调度器单元656表示任何数目的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元656耦合到(多个)物理寄存器文件(多个)单元658。(多个)物理寄存器文件单元658中的每一个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如作为要执行的下一指令的地址的指令指针)等。(多个)物理寄存器文件(多个)单元658被引退单元654叠覆以说明可以以其实现寄存器重命名和乱序执行的各种方式(例如使用(多个)重排序缓冲器和(多个)引退寄存器文件,使用(多个)将来文件、(多个)历史缓冲器和(多个)引退寄存器文件;使用寄存器地图和寄存器池;等)。一般地,架构寄存器从处理器的外侧或从编程者的角度来看是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够如本文所描述的那样存储和提供数据即可。合适的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名而动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元654和(多个)物理寄存器文件(多个)单元658耦合到(多个)执行集群660。(多个)执行集群660包括一个或多个执行单元162的集合和一个或多个存储器访问单元664的集合。执行单元662可以执行各种操作(例如移位、加法、减法、乘法)和在各种类型的数据(例如标量浮点、打包整数、打包浮点、向量整数、向量浮点)上。虽然一些实现方式可以包括专用于特定功能或功能集合的数个执行单元,但是其它实现方式可以包括全部执行全部功能的一个执行单元或多个执行单元。(多个)调度器单元656、(多个)物理寄存器文件(多个)单元658和(多个)执行集群660被示出为是可能复数的,因为某些实现方式创建用于某些类型的数据/操作的分离管线(例如标量整数管线、标量浮点/打包整数/打包浮点/向量整数/向量浮点管线,和/或存储器访问管线,其每一个具有其自身的调度器单元、(多个)物理寄存器文件单元和/或执行集群——并且在分离的存储器访问管线的情况下,实现某些实现方式,其中该管线的执行集群具有(多个)存储器访问单元664)。还应当理解的是,在使用分离管线的情况下,这些管线中的一个或多个可以是乱序发布/执行,并且其它的是有序的。
存储器访问单元664的集合耦合到存储器单元670,存储器单元670包括耦合到数据高速缓存单元674的数据TLB单元672,数据高速缓存单元674耦合到2级(L2)高速缓存单元676。在一个示例性实现方式中,存储器访问单元664可以包括负载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元670中的数据TLB单元672。L2高速缓存单元676耦合到一个或多个其它高速缓存级并且最终耦合到主存储器。L2高速缓存单元676可以是设定相关联的,并且可以允许地址的锁定,如本文所描述的。
作为示例,寄存器重命名、乱序发布/执行核架构可以如下实现管线500:1)指令提取638执行提取和长度解码阶段602和604;2)解码单元640执行解码阶段606;3)重命名/分配器单元652执行分配阶段608和重命名阶段610;4)(多个)调度器单元656执行调度阶段612;5)(多个)物理寄存器文件(多个)单元658和存储器单元670执行寄存器读取/存储器读取阶段614;执行集群660执行执行阶段616;6)存储器单元670和(多个)物理寄存器文件(多个)单元658执行写回/存储器写入阶段618;7)各种单元可以牵涉在例外处置阶段622中;并且8)引退单元654和(多个)物理寄存器文件(多个)单元658执行提交阶段624。
核690可以支持一个或多个指令集(例如x86指令集(具有已经被添加有较新版本的一些扩展);CA森尼维尔市的MIPS技术的MIPS指令集;CA森尼维尔市的ARM公司(Holdings)的ARM指令集(具有诸如NEON之类的附加扩展))。
虽然在乱序执行的上下文中描述寄存器重命名,但是应当理解的是,寄存器重命名可以使用在有序架构中。虽然处理器的所说明的实现方式还包括分离的指令和数据高速缓存单元634/674和共享L2高速缓存单元676,但是可替换的实现方式可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存,或多级内部高速缓存。在一些实现方式中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替换地,所有高速缓存可以在核和/或处理器外部。
图7是依照本公开的一个实现方式的用于包括执行指令的逻辑电路的处理器700的微架构的框图。在一些实现方式中,依照一个实现方式的指令可以实现成在具有字节、字、双字、四倍字等的大小的数据元素以及诸如单精度和双精度整数和浮点数据类型之类的数据类型上操作。在一个实现方式中,有序前端701是提取要执行的指令并且准备它们以供稍后在处理器管线中使用的处理器700的部分。前端701可以包括若干单元。在一个实现方式中,指令预提取器726从存储器提取指令并且将它们馈送至指令解码器728,指令解码器728进而解码或解释它们。例如,在一个实现方式中,解码器将所接收到的指令解码成机器可以执行的称为“微指令”或“微操作”(还称为微op或uop)的一个或多个操作。在其它实现方式中,解码器将指令解析成操作码(opcode)和对应的数据和控制字段,依照一个实现方式,该操作码和对应的数据和控制字段由微架构用于执行操作。在一个实现方式中,追踪高速缓存730取经解码的uop并且将它们汇编成程序排序序列或在oup队列734中追踪以供执行。当追踪高速缓存730遭遇复杂指令时,微代码ROM 732提供完成操作所需要的uop。
将一些指令转换成单个微op,而其它需要若干微op以完成完整的操作。在一个实现方式中,如果需要多于四个微op以完成指令,解码器728访问微代码ROM 732以进行指令。对于一个实现方式,可以将指令解码成小数目的微op以用于在指令解码器728处进行处理。在另一实现方式中,倘若需要数个微op以完成操作,可以在微代码ROM 732内存储指令。追踪高速缓存730是指入口点可编程逻辑阵列(PLA),依照一个实现方式,该指入口点可编程逻辑阵列(PLA)确定正确的微指令指针以用于读取微代码序列以完成来自微代码ROM 732的一个或多个指令。在微代码ROM 732完成针对指令的序列化微op之后,机器的前端701继续从追踪高速缓存730提取微op。
乱序执行引擎703是其中准备指令以供执行的地方。乱序执行逻辑具有数个缓冲器以在它们去往管线并且被调度以供执行时平滑掉和重排序指令流以优化性能。分配器逻辑分配每一个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。分配器还为两个uop队列(一个用于存储器操作并且一个用于非存储器操作)之一中的每一个uop分配条目,在指令调度器之前:存储器调度器、快速调度器702、缓慢/一般浮点调度器704和简单浮点调度器706。uop调度器702、704、706基于其相关输入寄存器操作数源的就绪性和uop完成其操作所需要的执行资源的可用性而确定uop何时准备好执行。一个实现方式的快速调度器702可以在主时钟周期的每一半上进行调度,而其它调度器可以每个主处理器时钟周期调度一次。调度器仲裁派遣端口以调度uop以供执行。
寄存器文件708、710坐落在调度器702、704、706和执行块711中的执行单元712、714、716、718、720、722、724之间。存在分别用于整数和浮点操作的分离寄存器文件708、710。一个实现方式的每一个寄存器文件708、710还包括旁路网络,其可以绕过或向新的相关uop转发尚未被写入到寄存器文件中的刚完成的结果。整数寄存器文件708和浮点寄存器文件710还能够与其它传送数据。对于一个实现方式,将整数寄存器文件708拆分成两个分离的寄存器文件,一个寄存器文件用于数据的低序32位,并且第二寄存器文件用于数据的高序32位。一个实现方式的浮点寄存器文件710具有128位宽条目,因为浮点指令典型地具有在宽度方面从64至128位的操作数。
执行块711包含执行单元712、714、716、718、720、722、724,其中实际地执行指令。该区段包括存储微指令需要执行的整数和浮点数据操作数值的寄存器文件708、710。一个实现方式的处理器700包括数个执行单元:地址生成单元(AGU)712、AGU 714、快速ALU 716、快速ALU 718、缓慢ALU 720、浮点ALU 722、浮点移动单元724。对于一个实现方式,浮点执行块722、724执行浮点MMX、SIMD和SSE,或其它操作。一个实现方式的浮点ALU 722包括64位乘64位浮点除法器以执行除法、平方根和余数微op。对于本公开的实现方式,牵涉浮点值的指令可以利用浮点硬件来处置。在一个实现方式中,ALU操作去往高速ALU执行单元716、718。一个实现方式的快速ALU 716、718可以执行快速操作(具有半个时钟周期的有效延迟)。对于一个实现方式,大多数复杂的整数操作去往缓慢ALU 720,因为缓慢ALU 720包括用于长延迟类型的操作的整数执行硬件,诸如乘法、移位、旗标逻辑和分支处理。存储器负载/存储操作由AGU 712、714执行。对于一个实现方式,在执行64位数据操作数上的整数运算的上下文中描述整数ALU 716、718、720。在可替换的实现方式中,ALU 716、718、720可以被实现成支持各种数据位,包括16、32、128、756等。类似地,浮点单元722、724可以被实现成支持具有各种宽度的位的操作数范围。对于一个实现方式,浮点单元722、724可以结合SIMD和多媒体指令在128位宽打包数据操作数上进行操作。
在一个实现方式中,uop调度器702、704、706在父负载完成执行之前派遣相关操作。由于在处理器700中投机地调度和执行uop,因此处理器700还包括处置存储器未命中(miss)的逻辑。如果数据负载在数据高速缓存中未命中,可以存在为调度器留下临时不正确的数据的管线中的飞行中的相关操作。重放机构追踪和重执行使用不正确数据的指令。相关操作应当被重放并且允许独立的相关操作完成。处理器的一个实现方式的调度器和重放机构还设计成捕捉用于文本串比较操作的指令序列。
术语“寄存器”是指用作标识操作数的指令部分的板上处理器存储位置。换言之,寄存器可以是从处理器的外部(从编程者的角度来看)可用的那些。然而,实现方式的寄存器不应当在含义上被限于特定类型的电路。而是,实现方式的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路使用任何数目的不同技术来实现,诸如专用物理寄存器、使用寄存器重命名而动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实现方式中,整数寄存器存储三十二位整数数据。一个实现方式的寄存器文件还包含用于打包数据的八个多媒体SIMD寄存器。对于以下的讨论,将寄存器理解为被设计成持有打包数据的数据寄存器,诸如利用来自加利福尼亚州圣克拉拉的Intel公司的MMXTM技术支持的微处理器中的64位宽MMX寄存器(在一些实例中还称为“mm”寄存器)。以整数和浮点形式二者可用的这些MMX寄存器可以关于伴随SIMD和SSE指令的打包数据元素进行操作。类似地,涉及SSE2、SSE3、SSE4或更高(一般地称为:“SSEx”)技术的128位宽XMM寄存器也可以用于持有这样的打包数据操作数。在一个实现方式中,在存储打包数据和整数数据中,寄存器不需要区分这两种数据类型。在一个实现方式中,在相同的寄存器文件或不同的寄存器文件中包含整数和浮点。另外,在一个实现方式中,可以在不同的寄存器或相同的寄存器中存储浮点和整数数据。
图8是根据本公开的实现方式的具有集成存储器控制器和图形的单核处理器和多核处理器800的框图。图8中的实线框图示了处理器800,其具有单个核802A、系统代理810、一个或多个总线控制器单元816的集合,而虚线框的添加图示了可替换的处理器800,其具有多个核802A-N、系统代理单元810中的一个或多个集成存储器控制器单元814的集合和集成图形逻辑808。
存储器层级包括核内的一级或多级高速缓存、一组或一个或多个共享高速缓存单元806和耦合到集成存储器控制器单元814的集合的外部存储器(未示出)。共享高速缓存单元806的集合可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其它级高速缓存、末级高速缓存(LLC)和/或其组合。该共享高速缓存单元806的集合可以是设定相关联的,并且可以允许地址的锁定,如本文所描述的。虽然在一个实现方式中,基于环的互连单元812互连集成图形逻辑808、共享高速缓存单元806的集合和系统代理单元810,但是可替换的实现方式可以使用用于互连这样的单元的任何数目的公知技术。
在一些实现方式中,核802A-N中的一个或多个能够进行多线程。
系统代理810包括协调和操作核802A-N的那些组件。系统代理单元810可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括为了调整核802A-N和集成图形逻辑808的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核802A-N在架构和/或指令集方面可以是同构或异构的。例如,核802A-N中的一些可以是有序的,而其它是乱序的。作为另一示例,核802A-N中的两个或更多可以能够执行相同指令集,而其它可以能够执行该指令集的子集或不同的指令集。作为另外的示例,核可以是不同的架构。
处理器可以包括一个或多个不同的通用处理器,诸如从加利福尼亚州圣克拉拉的Intel公司可得到的Core™ i3、i5、i7、2双核和四核Xeon™、Itanium™、AtomTM、XScale™或StrongARM™处理器。例如,一个核可以是Core i7TM核,而处理器的另一核可以是AtomTM核。可替换地,处理器可以来自另一公司,诸如ARM有限公司、MIPS等。处理器可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器可以实现在一个或多个芯片上。处理器800可以是使用数个处理技术(诸如例如BiSCMOS、CMOS或NMOS)中的任何一个的一个或多个衬底的部分和/或可以实现在其上。
现在参照图9,所示出的是依照本公开的实现方式的SoC 900的框图。图9中的类似元件承载相同的参考标号。同样,虚线框是更高级的SoC上的特征。在图9中,(多个)互连单元902耦合到:应用处理器910,其包括一个或多个核902A-N的集合和(多个)共享高速缓存单元906;系统代理单元910;(多个)总线控制器单元916;(多个)集成存储器控制器单元914;一组或一个或多个媒体处理器920,其可以包括集成图形逻辑908、用于提供静止和/或视频相机功能的图像处理器924、用于提供硬件音频加速的音频处理器926,以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器访问(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。
实现方式可以实现在许多不同的系统类型中。现在参照图10,所示出的是依照一些实现方式的多处理器系统1000的框图。如图10中所示,微处理器系统1000是点对点互连系统,并且包括经由点对点互连1050耦合的第一处理器1070和第二处理器1080。如图10中所示,处理器1070和1080中的每一个可以是多核处理器,包括第一和第二处理器核(即处理器核1074a和1074b以及处理器核1084a和1084b),尽管潜在地可以在处理器中存在多得多的核。依照本公开的实现方式,处理器每一个可以包括混合写入模式逻辑。
虽然被示出有两个处理器1070、1080,但是要理解的是,本公开的范围不如此受限。在其它实现方式中,可以在给定处理器中存在一个或多个附加的处理器。
处理器1070和1080被示出分别包括集成存储器控制器单元8102和8102。处理器1070还包括作为其总线控制器单元的部分的点对点(P-P)接口1076和1078;类似地,第二处理器1080包括P-P接口1086和1088。处理器1070、1080可以经由点对点(P-P)接口1050使用P-P接口电路1078、1088交换信息。如图10中所示,IMC 1072和1082将处理器耦合到相应的存储器,即存储器1032和存储器1034,其可以是本地附接到相应处理器的主存储器的部分。
处理器1070、1080可以每一个经由各个P-P接口1052、1054使用点对点接口电路1076、1094、1086、1098与芯片组1090交换信息。芯片组1090还可以经由高性能图形接口1039与高性能图形电路1038交换信息。
共享高速缓存(未示出)可以被包括在处理器中或在两个处理器外部,但是经由P-P互连与处理器连接,使得如果将处理器置于低功率模式中,任一或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。
芯片组1090可以经由接口1096耦合到第一总线1016。在一个实现方式中,第一总线1016可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线之类的总线,尽管本公开的范围不如此受限。
如图10中所示,各种I/O设备1014可以耦合到第一总线1016,连同总线桥1018,总线桥1018将第一总线1016耦合到第二总线1020。在一个实现方式中,第二总线1020可以是低引脚数(LPC)总线。各种设备可以耦合到第二总线1020,包括例如键盘和/或鼠标1022、通信设备1027和存储单元1028,诸如盘驱动器或其它大容量存储设备,所述其它大容量存储设备在一个实现方式中可以包括指令/代码和数据1030。另外,音频I/O 1024可以耦合到第二总线1020。要指出的是,其它架构是可能的。例如,取代于图10的点对点架构,系统可以实现多跳总线或其它这样的架构。
接着转向图11,描绘了依照本公开的实现方式的片上系统(SOC)设计的实现方式。作为说明性示例,在用户设备(UE)中包括SOC 1100。在一个实现方式中,UE是指要由最终用户用于通信的任何设备,诸如手持电话、智能电话、平板电脑、超薄笔记本电脑、具有宽带适配器的笔记本电脑或任何其它类似的通信设备。UE可以连接到基站或节点,其在本质上可以对应于GSM网络中的移动站(MS)。
在此,SOC 1100包括2个核——1106和1107。类似于以上的讨论,核1106和1107可以遵从指令集架构,诸如具有Intel®架构CoreTM、先进微型装置公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计的处理器或其消费者以及其被许可方或采用方。核1106和1107耦合到与总线接口单元1109和L2高速缓存1110相关联以与系统1100的其他部分通信的高速缓存控制1108。互连1111包括片上互连,诸如IOSF、AMBA或以上讨论的其它互连,其可以实现所描述的公开内容的一个或多个方面。
互连111提供去到其它组件的通信信道,诸如订户身份模块(SIM)1130以与SIM卡对接、启动rom1135以持有供核1106和1107执行以初始化和启动SOC 1100的启动代码、SDRAM控制器1140以与外部存储器(例如DRAM 1160)对接、闪存控制器1145以与持久性或非易失性存储器(例如闪存1165)对接、外围控制1150(例如串行外围接口)以与外设对接、视频编解码器1120和视频接口1125以显示和接收输入(例如支持触摸的输入)、GPU 1115以执行图形相关计算等。这些接口中的任何一个可以合并本文所描述的实现方式的各方面。
此外,系统图示了用于通信的外设,诸如蓝牙模块1170、调制解调器1175(例如3G、4G、长期演进(LTE)、高级LTE等)、GPS 1180、Wi-Fi 1185、Zigbee(未示出)和Z-Wave(未示出)。如以上所陈述的那样,要指出的是,UE包括用于通信的无线电设备。作为结果,可以不全部包括这些外围通信模块。然而,在UE中,应当包括用于外部通信的某种形式的无线电设备(radio)。
图12图示了计算系统1200的示例形式中的机器的图解表示,其内可以执行用于使得机器执行本文所讨论的方法中的任何一个或多个的指令集。在可替换的实现方式中,机器可以连接(例如联网)到LAN、内联网、外联网或因特网中的其它机器。该机器可以以客户端-服务器网络环境中的服务器或客户端设备的容量操作,或者作为对等(或分布式)网络环境中的对等机器。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、游戏控制台、蜂窝电话、数码相机、手持PC、web(网络)器具、服务器、网络路由器、交换机或桥接器、微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、网络中枢、广域网(WAN)交换机,或能够执行(顺序的或以其它方式)指定要由该机器采取的动作的指令集的任何机器。另外,虽然仅图示了用于系统架构100的单个机器,但是术语“机器”还应当被认为包括单独地或联合地执行指令集(或多个指令集)以执行本文所讨论的方法中的任何一个或多个的任何机器集合。实现方式不限于计算机系统。
计算系统1200包括处理设备1202、主存储器1204(例如只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如闪速存储器、静态随机存取存储器(SRAM)等)和数据存储设备1216,其经由总线1208与彼此通信。
处理设备1202表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更特别地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其它指令集的处理器,或实现指令集的组合的处理器。处理设备1202还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实现方式中,处理设备1202可以包括一个或处理核。处理设备1202配置成执行处理逻辑1226以用于执行本文所讨论的操作。在一个实现方式中,处理设备1202可以是图1A的系统架构100或图1B的SoC 190的部分。可替换地,计算系统1200可以包括如本文所描述的其它组件。应当理解的是,核可以支持多线程(执行操作或线程的两个或更多并行集合),并且可以以各种方式这样做,包括经时间切片的多线程、同时多线程(其中单个物理核提供用于物理核同时进行多线程的线程中的每一个的逻辑核),或其组合(例如,经时间切片的提取和解码以及此后的同时多线程,诸如在Intel®超线程技术中)。
计算系统1200代表基于PENTIUM III™、PENTIUM 4™、Celeron™、Xeon™、Itanium、XScale™、StrongARM™、Core™、Core 2™、Atom™和/或诸如从加利福尼亚州圣克拉拉的英特尔公司可得到的i3、i5、i7微处理器之类的Intel®架构Core™的处理系统,尽管还可以使用其它系统(包括具有其它微处理器的PC、加工工作站、机顶盒等)。然而,理解到,其它低功率处理器,诸如从CA森尼维尔市的高级微型装置公司(AMD)可得到的、来自CA森尼维尔市的MIPS技术公司的基于MIPS的设计、从ARM有限公司许可的基于ARM的设计或其消费者、或其被许可方或采用方,可以替代性地存在于其它实现方式中,诸如Apple A5/A6处理器、Qualcomm Snapdragon处理器或TI OMAP处理器。在一个实现方式中,处理设备1202执行从华盛顿雷德蒙德的微软公司可得到的WINDOWSTM操作系统的版本,尽管还可以使用其它操作系统(例如OS X、UNIX、Linux、Android、iOS、Symbian)、嵌入式软件和/或图形用户接口。因此,本公开的实现方式不限于硬件电路和软件的任何特定组合。可以在单个处理器台式机或服务器系统的上下文中描述一个实现方式,但是可以在微处理器系统中包括可替换的实现方式。计算系统1200可以是“中枢”系统架构的示例。
计算系统1200还可以包括通信耦合到网络1218的网络接口设备1222。计算系统1200还可以包括显示设备1210(例如液晶显示器(LCD)或阴极射线管(CRT))、文字数字输入设备1212(例如键盘)、光标控制设备1214(例如鼠标)、信号生成设备1220(例如扬声器)或其它外围设备。另外,计算系统1200可以包括图形处理单元(未图示)、视频处理单元(未图示)和音频处理单元(未图示)。在另一实现方式中,计算系统1200可以包括芯片组(未图示),其是指一组集成电路,或芯片,其被设计成与处理设备1202一起工作并且控制处理设备1202与外部设备之间的通信。例如,芯片组可以是将处理设备1202链接到诸如主存储器1204和图形控制器之类的超高速设备以及将处理设备1202链接到诸如USB、PCI或ISA总线之类的外设的较低速外围总线的母板上的芯片集合。
数据存储设备1216可以包括计算机可读存储介质1224,其上存储指令1226,指令1226体现本文所描述的功能的方法中的任何一个或多个。指令1226还可以完全或至少部分地驻留在主存储器1204内作为指令1226和/或在处理设备1202内作为其通过计算系统1200的执行期间的处理逻辑1226;主存储器1204和处理设备1202还构成计算机可读存储介质。
计算机可读存储介质1224还可以用于存储利用处理设备1202的指令1226,诸如关于图1A所描述的,和/或包含调用以上应用的方法的软件库。虽然在示例实现方式中将计算机可读存储介质1224示出为单个介质,但是术语“计算机可读存储介质”应当被理解成包括存储所述一个或多个指令集的单个介质或多个介质(例如集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被理解成包括能够存储、编码或承载指令集以用于由机器执行并且使得机器执行本实现方式的方法中的任何一个或多个的任何介质。术语“计算机可读存储介质”应当相应地被理解成包括但不限于固态存储器以及光学和磁性介质。
虽然已经关于有限数目的实现方式描述了本公开,但是本领域技术人员将从其领会到众多修改和变型。意图在于,随附权利要求覆盖如落在本公开的真实精神和范围内的所有这样的修改和变型。
在本文的描述中,阐述众多具体细节,诸如具体类型的处理器和系统配置、具体的硬件结构、具体的架构和微架构细节、具体的寄存器配置、具体的指令类型、具体的系统组件、具体的测量/高度、具体的处理器管线阶段和操作等的示例,以便提供本公开的透彻理解。然而,对本领域技术人员将明显的是,这些具体细节不需要用于实践本公开。在其它实例中,公知的组件或方法,诸如具体的和可替换的处理器架构、用于所描述的算法的具体的逻辑电路/代码、具体的固件代码、具体的互连操作、具体的逻辑配置、具体的制造技术和材料、具体的编译器实现方式、算法以代码的具体表述、具体的掉电和门控技术/逻辑以及计算机系统的其它具体操作细节尚未被详细描述,以便避免不必要地使本公开模糊。
参照具体的集成电路中的混合线程来描述实现方式,诸如在计算平台或微处理器中。实现方式还可以适用于其它类型的集成电路和可编程逻辑器件。例如,所公开的实现方式不限于台式计算机系统或便携式计算机,诸如Intel®UltrabooksTM计算机,并且还可以使用在其它设备中,诸如手持设备、平板电脑、其它薄笔记本电脑、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机,或可以执行以下教导的功能和操作的任何其它系统。描述了系统可以是任何种类的计算机或嵌入式系统。所公开的实现方式可以特别地用于低端设备,比如可穿戴设备(例如手表)、电子植入物、传感和控制基础设施设备、控制器、监控和数据采集(SCADA)系统等。而且,本文所描述的装置、方法和系统不限于物理计算设备,而且还涉及用于能量节约和效率的软件优化。如在以下描述中将变得容易明显的,本文所描述的方法、装置和系统的实现方式(无论参照硬件、固件、软件还是其组合)对与性能考虑平衡的“绿色技术”未来是至关重要的。
尽管参照处理器来描述本文的实现方式,但是其它实现方式适用于其它类型的集成电路和逻辑器件。本公开的实现方式的类似技术和教导可以应用于其它类型的电路或半导体器件,其可以受益于更高的管线吞吐量和改进的性能。本公开的实现方式的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可以应用于其中执行数据的操纵或管理的任何处理器和机器。此外,出于说明的目的,本文的描述提供示例,并且附图示出各种示例。然而,这些示例不应当以限制性含义来解释,因为它们仅仅意图提供本公开的实现方式的示例,而不是提供本公开的实现方式的所有可能的实现方式的详尽列表。
尽管以下示例在执行单元和逻辑电路的上下文中描述了指令处置和分布,但是本公开的其它实现方式可以通过存储在机器可读、有形介质上的数据或指令的方式来实现,所述数据或指令在由机器执行时使得机器执行与本公开的至少一个实现方式一致的功能。在一个实现方式中,与本公开的实现方式相关联的功能体现在机器可执行指令中。指令可以用于使得被编程有指令的通用或专用处理器执行本公开的步骤。本公开的实现方式可以被提供为计算机程序产品或软件,其可以包括具有存储在其上的指令的机器或计算机可读介质,所述指令可以用于对计算机(或其它电子设备)进行编程以执行根据本公开的实现方式的一个或多个操作。可替换地,本公开的实现方式的操作可能由包含用于执行操作的某个固定功能逻辑的特定硬件组件或由经编程的计算机组件和固定功能硬件组件的任何组合来执行。
用于将逻辑编程为执行本公开的实现方式的指令可以存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它储存。另外,指令可以经由网络或通过其它计算机可读介质的方式进行分发。因此,机器可读介质可以包括用于以可由机器(例如计算机)可读的形式存储或传输信息的任何机构,但不限于软盘、光盘、致密盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或有形、机器可读储存,其使用在通过因特网经由电学、光学、声学或其它形式的传播信号(例如载波、红外信号、数字信号等)的信息传输中。相应地,计算机可读介质包括适合于以可由机器(例如计算机)读取的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
设计可以经历各种阶段,从创建到仿真到制造。表示设计的数据可以以数个方式表示该设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。此外,可以在设计过程的一些阶段处产生具有逻辑和/或晶体管门的电路级模型。另外,大多数设计在某个阶段处到达表示硬件模型中的各种设备的物理放置的数据级。在其中使用常规的半导体制造技术的情况下,表示硬件模型的数据可以是指定各种特征在不同的掩模层上的存在或缺失的数据,所述不同的掩模层针对用于产生集成电路的掩模。在设计的任何表示中,可以在任何形式的机器可读介质中存储数据。诸如盘之类的存储器或磁性或光学储存可以是存储经由被调制或以其它方式生成以传输这样的信息的光波或电波传输的信息的机器可读介质。当传输指示或承载代码或设计的电学载波时,在执行电学信号的拷贝、缓冲或重传的程度上,做出新的副本。因此,通信提供商或网络提供商可以在有形、机器可读介质上至少临时地存储体现本公开的实现方式的技术的制品,诸如编码到载波中的信息。
如本文所使用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如微控制器,其与非暂时性介质相关联以存储适配成与微控制器执行的代码。因此,在一个实现方式中,对模块的引用是指硬件,其被具体地配置成识别和/或执行要在非暂时性介质上持有的代码。另外,在另一实现方式中,模块的使用是指包括代码的非暂时性介质,其被具体地适配成由微控制器执行以执行预定操作。并且如可以推断的,在又一实现方式中,术语模块(在该示例中)可以是指微控制器和非暂时性介质的组合。通常,被图示为分离的模块边界经常是不同的并且潜在叠覆。例如,第一和第二模块可以共享硬件、软件、固件或其组合,而同时潜在地保留一些独立的硬件、软件或固件。在一个实现方式中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑器件。
短语“配置成”在一个实现方式中的使用是指布置、放在一起、制造、供应销售、导入和/或设计装置、硬件、逻辑或元件以执行所指定或确定的任务。在该示例中,不在操作的装置或其元件仍旧“配置成”执行所指定的任务,如果它被设计、耦合和/或互连以执行所述指定任务的话。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“配置成”向时钟提供启用信号的逻辑门不包括可以提供1或0的每一个潜在逻辑门。而是,逻辑门是以某种方式耦合的一个,在操作期间1或0输出将启用时钟。再一次要指出的是,术语“配置成”的使用不要求操作,而是聚焦于装置、硬件和/或元件的潜在状态,其中在该潜在状态中,装置、硬件和/或元件被设计成当装置、硬件和/或元件在操作时执行特定任务。
另外,短语“以”、“能够/能够以”和或“可操作于”在一个实现方式中的使用是指以这样的方式设计成以指定方式启用装置、逻辑、硬件和/或元件的使用的某个装置、逻辑、硬件和/或元件。如以上所指出的,以、能够以、或可操作于在一个实现方式中的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中该装置、逻辑、硬件和或元件不在操作,但是以这样的方式设计成以指定方式启用装置的使用。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑性值的使用还称为1和0,其简单地表示二进制逻辑状态。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实现方式中,存储单元,诸如晶体管或闪存单元,可以能够持有单个逻辑值或多个逻辑值。然而,已经使用了值在计算机系统中的其它表示。例如,十进制数字10还可以被表示为二进制值1010和十六进制字母A。十六进制值还可以利用诸如“0x”之类的前缀来表示。因此,值包括能够被持有在计算机系统中的信息的任何表示。
而且,状态可以通过值或值的部分来表示。作为示例,第一值,诸如逻辑一,可以表示默认或初始状态,而第二值,诸如逻辑零,可以表示非默认状态。此外,术语复位和置位,在一个实现方式中,分别是指默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值,即复位,而经更新的值潜在地包括低逻辑值,即置位。要指出的是,值的任何组合可以用于表示任何数目的状态。
以上阐述的方法、硬件、软件、固件或代码的实现方式可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现,所述指令或代码可由处理元件执行。非暂时性机器可访问/可读介质包括以可由诸如计算机或电子系统之类的机器读取的形式提供(即存储和/或传输)信息的任何机构。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电学存储设备;光学存储设备;声学存储设备;用于持有从暂时性(传播)信号(例如载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等,要将其从可以从其接收信息的非暂时性介质区分开。
贯穿本说明书对“一个实现方式”或“实现方式”的引用意味着结合该实现方式描述的特定特征、结构或特性被包括在本公开的至少一个实现方式中。因此,短语“在一个实现方式中”或“在实现方式中”在贯穿本说明书的各种地方中的出现未必都是指相同的实现方式。另外,可以以任何合适的方式在一个或多个实现方式中组合特定特征、结构或特性。
在本说明书中,已经参照具体的示例实现方式给出了详细描述。然而,将明显的是,可以对其作出各种修改和改变而不脱离于如在随附权利要求中阐述的本公开的更宽精神和范围。相应地,说明书和附图要以说明性含义而不是约束性含义来对待。另外,实现方式和其它例示语言的前述使用未必是指相同的实现方式或相同的示例,而是可以是指不同且分立的实现方式,以及潜在地相同的实现方式。
以下示例关于另外的实现方式。
示例1是一种处理系统,包括:控制寄存器;以及通信耦合到控制寄存器的处理核;其中处理核配置成:接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求;鉴于节点分配请求和所述多个节点上的当前负载,确定要分配给所述应用的实际节点数目,其中要分配给所述应用的实际节点数目优化集群负载准则;并且使用控制寄存器通知所述应用实际节点数目。
示例2是示例1的处理系统,其中通知所述应用实际节点数目包括:在用于存储与所述应用相关联的节点配置的存储器数据结构中存储实际节点数目;以及在控制寄存器中存储存储器数据结构的地址。
示例3是示例2的处理系统,其中在控制寄存器中存储存储器数据结构的地址包括获取控制寄存器的锁定。
示例4是示例1的处理系统,其中处理核还配置成:使得应用使用实际节点数目来执行。
示例5是示例1的处理系统,其中集群负载准则反映在某个时间段内保持未被指派给任何当前运行的应用的节点数目。
示例6是示例1的处理系统,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
示例7是示例1的处理系统,其中确定实际节点数目还包括:生成要调度的多个应用组合;确定针对每一个所生成的组合的集群负载准则的值;以及选择与集群负载准则的最优值相关联的组合。
示例8是示例1的处理系统,其中处理系统被实现为片上系统(SoC)。
示例9是一种方法,包括:通过处理设备接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求;鉴于节点分配请求和所述多个节点上的当前负载,确定要分配给所述应用的实际节点数目,其中要分配给所述应用的实际节点数目优化集群负载准则;以及使用处理系统的控制寄存器通知所述应用实际节点数目。
示例10是示例9的方法,其中通知所述应用实际节点数目包括:在用于存储与所述应用相关联的节点配置的存储器数据结构中存储实际节点数目;以及在控制寄存器中存储存储器数据结构的地址。
示例11是示例10的方法,其中在控制寄存器中存储存储器数据结构的地址包括获取控制寄存器的锁定。
示例12是示例9的方法,还包括:使得应用使用实际节点数目来执行。
示例13是示例9的方法,其中集群负载准则反映在某个时间段内保持未被指派给任何当前运行的应用的节点数目。
示例14是示例9的方法,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
示例15是示例9的方法,其中确定实际节点数目还包括:生成要调度的多个应用组合;确定针对每一个所生成的组合的集群负载准则的值;以及选择与集群负载准则的最优值相关联的组合。
示例16是一种装置,包括:存储器;以及耦合到存储器的处理设备,处理设备执行示例9-15中任一个的方法。
示例17是一种包括可执行指令的非暂时性计算机可读存储介质,所述可执行指令在由处理系统执行时,使得处理系统执行包括以下的操作:接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求;鉴于节点分配请求和所述多个节点上的当前负载,确定要分配给所述应用的实际节点数目,其中要分配给所述应用的实际节点数目优化集群负载准则;以及使用处理系统的控制寄存器通知所述应用实际节点数目。
示例18是示例17的非暂时性计算机可读存储介质,其中通知所述应用实际节点数目包括:在用于存储与所述应用相关联的节点配置的存储器数据结构中存储实际节点数目;以及在控制寄存器中存储存储器数据结构的地址。
示例19是示例18的非暂时性计算机可读存储介质,其中在控制寄存器中存储存储器数据结构的地址包括获取控制寄存器的锁定。
示例20是示例17的非暂时性计算机可读存储介质,还包括可执行指令使得处理系统:使得应用使用实际节点数目来执行。
示例21是示例17的非暂时性计算机可读存储介质,其中集群负载准则反映在某个时间段内保持未被指派给任何当前运行的应用的节点数目。
示例22是示例17的非暂时性计算机可读存储介质,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
示例23是示例17的非暂时性计算机可读存储介质,其中确定实际节点数目还包括:生成要调度的多个应用组合;确定针对每一个所生成的组合的集群负载准则的值;以及选择与集群负载准则的最优值相关联的组合。
示例24是一种高性能计算系统,包括:控制节点;以及包括多个计算节点的计算集群;其中控制节点配置成:接收指定应用的预期运行时间和所请求的计算集群的计算节点数目的计算节点分配请求;鉴于计算节点分配请求和所述多个计算节点上的当前负载,确定要分配给所述应用的实际计算节点数目,其中要分配给所述应用的实际计算节点数目优化集群负载准则;以及通知所述应用实际计算节点数目。
示例25是示例24的高性能计算系统,其中控制节点还配置成:使得应用使用实际节点数目来执行。
示例26是示例24的高性能计算系统,其中通知所述应用实际节点数目包括:在用于存储与所述应用相关联的节点配置的存储器数据结构中存储实际节点数目;以及在控制寄存器中存储存储器数据结构的地址。
示例27是示例24的高性能计算系统,其中在控制寄存器中存储存储器数据结构的地址包括获取控制寄存器的锁定。
示例28是示例24的高性能计算系统,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目。
示例29是示例24的高性能计算系统,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
示例30是示例24的高性能计算系统,其中确定实际节点数目还包括:生成要调度的多个应用组合;确定针对每一个所生成的组合的集群负载准则的值;以及选择与集群负载准则的最优值相关联的组合。
在计算机存储器内的数据位上的操作的符号表示和算法方面呈现详细描述的一些部分。这些算法描述和表示是由数据处理领域中的技术人员用于向本领域中的其他技术人员最有效地传达其工作实质的手段。算法在此并且一般地被理解成是导致期望结果的操作的自相容序列。操作是要求物理量的物理操纵的那些。通常,尽管不是必要的,但是这些量采取能够被存储、输送、组合、比较和以其它方式操纵的电学或磁性信号的形式。已经证明,原则上出于常见使用的原因,将这些信号称为位、值、元素、符号、字符、项、数字等有时是方便的。本文所描述的块可以是硬件、软件、固件或其组合。
然而,应当记住的是,所有这些和类似术语要与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。除非具体陈述,否则如从以上讨论明显的,领会到,贯穿该描述,利用诸如“限定”、“接收”、“确定”、“发布”、“链接”、“关联”、“获取”、“验证”、“禁止”、“执行”、“请求”、“通信”、“监视”、“计算”等之类的术语的讨论是指操纵被表示为计算系统的寄存器内的物理(例如电子)量的数据并且将其变换成被类似地表示为计算系统存储器或寄存器或其它这样的信息存储、传输或显示设备内的物理量的其它数据的计算系统或类似电子计算设备的动作和过程。
词语“示例”或“示例性”在本文中用于意味着充当示例、实例或说明。在本文中描述为“示例”或“示例性”的任何方面或设计未必被解释为比其它方面或设计优选或有利。而是,词语“示例”或“示例性”的使用意图以简洁的方式呈现概念。如在本申请中所使用的,术语“或”意图意味着包括性的“或”而不是排他性的“或”。也就是说,除非另行指定或从上下文是清楚的,否则“X包括A或B”意图意味着自然包括性排列中的任何一个。也就是说,如果Z包括A;X包括B;或X包括A和B二者,则在任何前述实例中满足“X包括A或B”。此外,如在本申请和随附权利要求中所使用的冠词“一”和“一个”应当被一般地理解成意味着“一个或多个”,除非另行指定或从上下文清楚的是涉及单数形式。而且,术语“实现方式”或“一个实现方式”或“一实现方式”或“一个实现方式”的使用自始至终不意图意味着相同的实现方式,除非照此描述。而且,如本文所使用的术语“第一”、“第二”、“第三”、“第四”等意味着作为区分不同元件的标记,并且可能未必具有根据其数值标注的序数含义。
Claims (23)
1.一种处理系统,包括:
控制寄存器;以及
通信耦合到控制寄存器的处理核;
其中处理核用于:
接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求;
鉴于节点分配请求和多个节点上的当前负载,确定要分配给所述应用的实际节点数目,其中要分配给所述应用的实际节点数目优化集群负载准则;
在存储器数据结构中存储实际节点数目;
响应于成功地获得控制寄存器的锁定,在控制寄存器中存储存储器数据结构的地址;
自获取所述锁定以来,在预定义的超时过期时释放所述锁定;以及
响应于在预定时间段内未能释放控制寄存器的所述锁定,终止所述应用。
2.权利要求1所述的处理系统,其中处理核还用于:
使得应用使用实际节点数目来执行。
3.权利要求1所述的处理系统,其中集群负载准则反映在某个时间段内保持未被指派给任何当前运行的应用的节点数目。
4.权利要求1所述的处理系统,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
5.权利要求1所述的处理系统,其中确定实际节点数目还包括:
生成要调度的多个应用组合;
确定针对每一个所生成的组合的集群负载准则的值;以及
选择与集群负载准则的最优值相关联的组合。
6.权利要求1-5中任一项所述的处理系统,其中处理系统被实现为片上系统(SoC)。
7.一种用于执行调度的方法,包括:
通过处理设备接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求;
鉴于节点分配请求和多个节点上的当前负载,确定要分配给所述应用的实际节点数目,其中要分配给所述应用的实际节点数目优化集群负载准则;
在存储器数据结构中存储实际节点数目;
响应于成功地获得控制寄存器的锁定,在控制寄存器中存储存储器数据结构的地址;
自获取所述锁定以来,在预定义的超时过期时释放所述锁定;以及
响应于在预定时间段内未能释放控制寄存器的所述锁定,终止所述应用。
8.权利要求7所述的方法,还包括:
使得应用使用实际节点数目来执行。
9.权利要求7所述的方法,其中集群负载准则反映在某个时间段内保持未被指派给任何当前运行的应用的节点数目。
10.权利要求7所述的方法,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
11.权利要求7所述的方法,其中确定实际节点数目还包括:
生成要调度的多个应用组合;
确定针对每一个所生成的组合的集群负载准则的值;以及
选择与集群负载准则的最优值相关联的组合。
12.一种用于执行调度的装置,包括:
存储器;以及
耦合到存储器的处理设备,处理设备执行权利要求7-11中任一项所述的方法。
13.一种高性能计算系统,包括:
控制节点;以及
包括多个计算节点的计算集群;
其中控制节点用于:
接收指定应用的预期运行时间和所请求的计算集群的计算节点数目的计算节点分配请求;
鉴于计算节点分配请求和所述多个计算节点上的当前负载,确定要分配给所述应用的实际计算节点数目,其中要分配给所述应用的实际计算节点数目优化集群负载准则;在存储器数据结构中存储实际节点数目;
响应于成功地获得控制寄存器的锁定,在控制寄存器中存储存储器数据结构的地址;
自获取所述锁定以来,在预定义的超时过期时释放所述锁定;以及
响应于在预定时间段内未能释放控制寄存器的所述锁定,终止所述应用。
14.权利要求13所述的高性能计算系统,其中控制节点还用于:
使得应用使用实际节点数目来执行。
15.权利要求13所述的高性能计算系统,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目。
16.权利要求13所述的高性能计算系统,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
17.权利要求13所述的高性能计算系统,其中确定实际节点数目还包括:
生成要调度的多个应用组合;
确定针对每一个所生成的组合的集群负载准则的值;以及
选择与集群负载准则的最优值相关联的组合。
18.一种用于执行调度的设备,包括:
用于通过处理设备接收指定应用的预期运行时间和所请求的节点集群的节点数目的节点分配请求的装置;
用于鉴于节点分配请求和多个节点上的当前负载,确定要分配给所述应用的实际节点数目的装置,其中要分配给所述应用的实际节点数目优化集群负载准则;用于在存储器数据结构中存储实际节点数目的装置;
用于响应于成功地获得控制寄存器的锁定,在控制寄存器中存储存储器数据结构的地址的装置;
用于自获取所述锁定以来,在预定义的超时过期时释放所述锁定的装置;以及
用于响应于在预定时间段内未能释放控制寄存器的所述锁定,终止所述应用的装置。
19.权利要求18所述的设备,还包括:
用于使得应用使用实际节点数目来执行的装置。
20.权利要求18所述的设备,其中集群负载准则反映在某个时间段内保持未被指派给任何当前运行的应用的节点数目。
21.权利要求18所述的设备,其中集群负载准则反映在某个时间段内保持未被指派给任何运行的应用的节点数目乘以时间段。
22.权利要求18所述的设备,其中用于确定实际节点数目的装置还包括:
用于生成要调度的多个应用组合的装置;
用于确定针对每一个所生成的组合的集群负载准则的值的装置;以及
用于选择与集群负载准则的最优值相关联的组合的装置。
23.一种计算机可读介质,在其上具有指令,当指令被执行时导致计算机设备执行根据权利要求7-11中任一个的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/976,360 US10230817B2 (en) | 2015-12-21 | 2015-12-21 | Scheduling highly parallel applications |
US14/976360 | 2015-12-21 | ||
PCT/US2016/063170 WO2017112226A1 (en) | 2015-12-21 | 2016-11-21 | Scheduling highly parallel applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108351811A CN108351811A (zh) | 2018-07-31 |
CN108351811B true CN108351811B (zh) | 2022-06-21 |
Family
ID=59066599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680067881.6A Active CN108351811B (zh) | 2015-12-21 | 2016-11-21 | 调度高度并行的应用 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10230817B2 (zh) |
EP (1) | EP3394754B1 (zh) |
CN (1) | CN108351811B (zh) |
TW (1) | TW201730761A (zh) |
WO (1) | WO2017112226A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331581B2 (en) * | 2017-04-10 | 2019-06-25 | Hewlett Packard Enterprise Development Lp | Virtual channel and resource assignment |
US10698392B2 (en) * | 2018-06-22 | 2020-06-30 | Applied Materials, Inc. | Using graphics processing unit for substrate routing and throughput modeling |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11386038B2 (en) * | 2019-05-09 | 2022-07-12 | SambaNova Systems, Inc. | Control flow barrier and reconfigurable data processor |
US11055141B2 (en) | 2019-07-08 | 2021-07-06 | SambaNova Systems, Inc. | Quiesce reconfigurable data processor |
US11676013B2 (en) | 2019-12-30 | 2023-06-13 | International Business Machines Corporation | Job-launch time reduction by node pre-configuration |
CN112039963B (zh) * | 2020-08-21 | 2023-04-07 | 广州虎牙科技有限公司 | 一种处理器的绑定方法、装置、计算机设备和存储介质 |
JP2022088762A (ja) * | 2020-12-03 | 2022-06-15 | 富士通株式会社 | 情報処理装置およびジョブスケジューリング方法 |
US20220188166A1 (en) * | 2020-12-16 | 2022-06-16 | International Business Machines Corporation | Cognitive task scheduler |
US11487694B1 (en) | 2021-12-17 | 2022-11-01 | SambaNova Systems, Inc. | Hot-plug events in a pool of reconfigurable data flow resources |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752030A (en) * | 1992-08-10 | 1998-05-12 | Hitachi, Ltd. | Program execution control in parallel processor system for parallel execution of plural jobs by selected number of processors |
CN103227838A (zh) * | 2013-05-10 | 2013-07-31 | 中国工商银行股份有限公司 | 一种多重负载均衡处理装置与方法 |
CN103841208A (zh) * | 2014-03-18 | 2014-06-04 | 北京工业大学 | 基于响应时间最优化的云计算任务调度方法 |
CN105100168A (zh) * | 2014-05-21 | 2015-11-25 | 北京大学 | 一种基于应用执行单元的PaaS请求分发机制 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7171389B2 (en) * | 2001-06-01 | 2007-01-30 | Landnet Corporation | Identification, storage and display of land data on a website |
US7065764B1 (en) | 2001-07-20 | 2006-06-20 | Netrendered, Inc. | Dynamically allocated cluster system |
US9305011B2 (en) * | 2005-07-27 | 2016-04-05 | Hitachi Data Systems Corporation | Method for improving mean time to data loss (MTDL) in a fixed content distributed data storage |
JP2008226181A (ja) | 2007-03-15 | 2008-09-25 | Fujitsu Ltd | 並列実行プログラム、該プログラムを記録した記録媒体、並列実行装置および並列実行方法 |
US8281012B2 (en) | 2008-01-30 | 2012-10-02 | International Business Machines Corporation | Managing parallel data processing jobs in grid environments |
JP5330264B2 (ja) * | 2008-03-27 | 2013-10-30 | パナソニック株式会社 | アクセス制御装置 |
US8412151B2 (en) * | 2009-07-16 | 2013-04-02 | Cox Communications, Inc. | Payback calling plan |
US8874694B2 (en) * | 2009-08-18 | 2014-10-28 | Facebook, Inc. | Adaptive packaging of network resources |
US8719415B1 (en) * | 2010-06-28 | 2014-05-06 | Amazon Technologies, Inc. | Use of temporarily available computing nodes for dynamic scaling of a cluster |
US9026658B2 (en) | 2012-03-28 | 2015-05-05 | Microsoft Technology Licensing, Llc | Enhanced computer cluster operation using resource allocation requests |
US10013280B2 (en) * | 2013-09-30 | 2018-07-03 | Dell Products, Lp | System and method for host-assisted background media scan (BMS) |
US20160012251A1 (en) * | 2014-07-10 | 2016-01-14 | Anil Singh | Distribution, tracking, management, reporting and deployment of cloud resources within an enterprise |
-
2015
- 2015-12-21 US US14/976,360 patent/US10230817B2/en active Active
-
2016
- 2016-11-15 TW TW105137288A patent/TW201730761A/zh unknown
- 2016-11-21 WO PCT/US2016/063170 patent/WO2017112226A1/en unknown
- 2016-11-21 EP EP16879712.4A patent/EP3394754B1/en active Active
- 2016-11-21 CN CN201680067881.6A patent/CN108351811B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752030A (en) * | 1992-08-10 | 1998-05-12 | Hitachi, Ltd. | Program execution control in parallel processor system for parallel execution of plural jobs by selected number of processors |
CN103227838A (zh) * | 2013-05-10 | 2013-07-31 | 中国工商银行股份有限公司 | 一种多重负载均衡处理装置与方法 |
CN103841208A (zh) * | 2014-03-18 | 2014-06-04 | 北京工业大学 | 基于响应时间最优化的云计算任务调度方法 |
CN105100168A (zh) * | 2014-05-21 | 2015-11-25 | 北京大学 | 一种基于应用执行单元的PaaS请求分发机制 |
Non-Patent Citations (1)
Title |
---|
Heuristics Aware Advance Reservation and Scheduling (HAARS) mechanism in Hybrid (Grid/Cloud) environment;Ponsy R.K,Sathia Bama,Thamarai Selvi Somasundaram,Kannan Govind;《2013 National Conference on Parallel Computing Technologies》;20131008;第4页左列第23-33行 * |
Also Published As
Publication number | Publication date |
---|---|
EP3394754A1 (en) | 2018-10-31 |
CN108351811A (zh) | 2018-07-31 |
EP3394754A4 (en) | 2019-07-24 |
US10230817B2 (en) | 2019-03-12 |
WO2017112226A1 (en) | 2017-06-29 |
EP3394754B1 (en) | 2020-09-23 |
TW201730761A (zh) | 2017-09-01 |
US20170180507A1 (en) | 2017-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351811B (zh) | 调度高度并行的应用 | |
US10089229B2 (en) | Cache allocation with code and data prioritization | |
US9524219B2 (en) | Atomic transactions to non-volatile memory | |
US10346343B2 (en) | Hardware accelerator for platform firmware integrity check | |
US9626299B2 (en) | Changing a hash function based on a conflict ratio associated with cache sets | |
US10635447B2 (en) | Scatter reduction instruction | |
US10585798B2 (en) | Tracking cache line consumption | |
US11003484B2 (en) | Inter-processor interrupt virtualization with pass-through of local interrupt controller | |
US20170357599A1 (en) | Enhancing Cache Performance by Utilizing Scrubbed State Indicators Associated With Cache Entries | |
WO2017112313A1 (en) | Processing devices to perform a key value lookup instruction | |
US20170177543A1 (en) | Aggregate scatter instructions | |
US9632907B2 (en) | Tracking deferred data packets in a debug trace architecture | |
US10019262B2 (en) | Vector store/load instructions for array of structures | |
US20190065390A1 (en) | Multi-source address translation service (ats) with a single ats resource | |
US9875187B2 (en) | Interruption of a page miss handler | |
WO2017112195A1 (en) | Processing devices to perform a conjugate permute instruction | |
US10521342B2 (en) | Memory address decoding prioritization |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |