《多核/线程工作组计算调度器.pdf》由会员分享,可在线阅读,更多相关《多核/线程工作组计算调度器.pdf(22页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102004630A43申请公布日20110406CN102004630ACN102004630A21申请号201010268679422申请日2010083012/551,51520090831USG06F9/38200601G06F9/5020060171申请人国际商业机器公司地址美国纽约72发明人BG亚历山大GH比洛斯J马德鲁加BD瓦特74专利代理机构北京市中咨律师事务所11247代理人于静杨晓光54发明名称多核/线程工作组计算调度器57摘要本发明涉及一种多核/线程工作组计算调度器。执行单元处理一个或多个命令队列中的命令。一旦可在队列上提供命令,参与执行命令的每个单元自。
2、动将命令的剩余工作组计数器递减工作组保留大小并处理工作组范围内相应数目的工作组。处理了范围内的所有工作组之后,执行单元递增已处理工作组计数器。将已处理工作组计数器递增到待执行工作组计数器中存储的值的单元发出命令完成信号。每个访问命令的执行单元还标记所看到工作组计数器。一旦已处理工作组计数器等于待执行工作组计数器并且所看到工作组计数器等于执行单元数,可删除或覆盖所述命令队列上的命令。30优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书10页附图8页CN102004643A1/3页21一种方法,包括生成第一命令队列以便排队到计算设备的命令;将命令发布到所。
3、述第一命令队列,其中所述命令包括多个工作组;将数据结构与所述命令关联,所述数据结构标识了所述多个工作组、与所述命令对应的保留大小、存储工作组的数目的计数器以及存储待处理工作组的数目的计数器;由多个执行单元中的每个执行单元保留所述多个工作组的不同N维范围,其中所述N维范围对应于所述保留大小;由所述多个执行单元中的每个执行单元处理对应的N维范围;将所述存储待处理工作组的数目的计数器递减每个执行单元已处理的工作组的数目;重复保留、处理和递减步骤,直到所述存储待处理工作组的数目的计数器小于或等于值“0”;以及当所述存储待处理工作组的数目的计数器小于或等于值“0”时,发出信号以指示所述命令完成。2如权利。
4、要求1中所述的方法,还包括由所述多个执行单元中的一个执行单元检测所述存储待处理工作组的数目的计数器小于或等于值“0”以及检测所述存储待处理工作组的数目的计数器的绝对值小于或等于所述保留大小的绝对值;其中仅由所述一个执行单元执行发出信号。3如权利要求1中所述的方法,其中所述数据结构还包括存储预期看到所述命令的执行单元的数目的计数器以及存储已看到所述命令的执行单元的数目的计数器,所述方法还包括当所述存储待处理工作组的数目的计数器小于或等于“0”并且所述存储已看到所述命令的执行单元的数目的计数器等于所述存储预期看到所述命令的执行单元的数目的计数器时,从所述第一命令队列释放与所述命令对应的表项。4如权。
5、利要求1中所述的方法,其中所述多个执行单元中的每个执行单元是任何执行命令的计算设备,其中包括处理核心、处理器、处理线程和完整的计算系统。5如权利要求1中所述的方法,还包括判定所述命令队列中是否存在两个可用空位来输入入站命令;如果判定所述命令队列中存在至少两个可用空位来输入所述入站命令,则使所述入站命令进入所述命令队列;以及如果判定所述第一命令队列中不存在至少两个可用空位来输入所述入站命令,则创建第二命令队列;以及使用所述第二命令队列替代所述第一命令队列。6如权利要求5中所述的方法,所述替代包括在所述第一队列中输入队列大小调整指示;使所述入站命令进入所述第二命令队列;以及当在执行所述第一队列中的。
6、命令的过程中检测到所述队列大小调整指示时,使用所述第二队列替换所述第一队列。7如权利要求6中所述的方法,还包括一旦所述替代完成,则删除所述第一队列。权利要求书CN102004630ACN102004643A2/3页38一种装置,包括处理器;与所述处理器相连的物理存储器;多个执行单元;以及存储在所述存储器上并在所述处理器上执行的逻辑,所述逻辑用于执行以下操作生成第一命令队列以便排队到所述执行单元的命令;将命令发布到所述第一命令队列,其中所述命令包括多个工作组;将数据结构与所述命令关联,所述数据结构标识了所述多个工作组、与所述命令对应的保留大小、存储工作组的数目的计数器、存储待处理工作组的数目的计。
7、数器,以及存储已处理工作组的数目的计数器;由所述多个执行单元中的每个执行单元保留所述多个工作组的不同N维范围,其中所述N维范围对应于所述保留大小;由所述多个执行单元中的每个执行单元处理对应的N维范围;将所述存储待处理工作组的数目的计数器递减每个执行单元已保留的工作组的数目;将所述存储已处理工作组的数目的计数器递增每个执行单元已处理的工作组的数目;重复保留、处理和递减操作,直到所述存储待处理工作组的数目的计数器小于或等于值“0”;以及当所述存储已处理工作组的数目的计数器等于所述存储工作组的数目的计数器时,发出信号以指示所述命令完成。9如权利要求8中所述的装置,所述逻辑还包括用于执行以下操作的逻辑。
8、由所述多个执行单元中的一个执行单元检测所述存储待处理工作组的数目的计数器小于或等于值“0”以及检测所述存储待处理工作组的数目的计数器的绝对值小于或等于所述保留大小的绝对值;以及由所述一个执行单元处理任何剩余工作组。10如权利要求8中所述的装置,其中所述数据结构还包括存储预期看到所述命令的执行单元的数目的计数器以及存储已看到所述命令的执行单元的数目的计数器,所述逻辑还包括用于执行以下操作的逻辑当所述存储已处理工作组的数目的计数器等于所述存储工作组的数目的计数器并且所述存储已看到所述命令的执行单元的数目的计数器等于所述存储预期看到所述命令的执行单元的数目的计数器时,从所述第一命令队列释放与所述命令。
9、对应的表项。11如权利要求8中所述的装置,其中所述多个执行单元中的每个执行单元是任何执行命令的计算设备,其中包括处理核心、处理器、处理线程和完整的计算系统。12如权利要求8中所述的装置,所述逻辑还包括用于执行以下操作的逻辑判定所述命令队列中是否存在两个可用空位来输入入站命令;如果判定所述命令队列中存在至少两个可用空位来输入所述入站命令,则使所述入站命令进入所述命令队列;以及如果判定所述第一命令队列中不存在至少两个可用空位来输入所述入站命令,则创建权利要求书CN102004630ACN102004643A3/3页4第二命令队列;以及使用所述第二命令队列替代所述第一命令队列。13如权利要求12中所。
10、述的装置,用于替代的逻辑包括用于执行以下操作的逻辑在所述第一队列中输入队列大小调整指示;使所述入站命令进入所述第二命令队列;以及当在执行所述第一队列中的命令的过程中检测到所述队列大小调整指示时,使用所述第二队列替换所述第一队列。14如权利要求13中所述的装置,还包括一旦所述替代完成,则删除所述第一队列。15一种计算机编程产品,包括物理存储器;存储在所述存储器上以在处理器上执行从而实现权利要求1至7中所述的任一方法的任何步骤的逻辑。权利要求书CN102004630ACN102004643A1/10页5多核/线程工作组计算调度器技术领域0001要求保护的主题一般地涉及计算资源的分配,更具体地说,涉。
11、及用于调度多核处理系统中的数据和任务并行负载的技术。背景技术0002计算系统的调度可涉及针对数据并行或任务并行或这两者的某种组合构建的作业。数据并行作业或数据并行负载是其中可由多个单元例如但不限于处理器或处理核心并行操作数据的计算。此类处理的一个示例由操纵视频数据的图形处理单元GPU执行,在操纵视频数据中,将位图分成区域并且可以同时操作每个区域。任务并行负载是其中多个执行单元针对一组数据并行地独立地执行不同任务的计算。此类任务的一个示例是过滤数据,其中一组数据通过一个过滤器并且结果通过第二过滤器。发明内容0003提供了多种技术,包括生成第一命令队列以便排队到计算设备的命令;将命令发布到所述第一。
12、命令队列,其中所述命令包括多个工作组;将数据结构与所述命令关联,所述数据结构标识了所述多个工作组、与所述命令对应的保留大小、存储工作组的数目的计数器以及存储待处理工作组的数目的计数器;由多个执行单元中的每个执行单元保留所述多个工作组的不同N维范围,其中所述N维范围对应于所述保留大小;由所述多个执行单元中的每个执行单元处理对应的N维范围;将所述存储待处理工作组的数目的计数器递减每个执行单元已处理的工作组的数目;重复保留、处理和递减步骤,直到所述存储待处理工作组的数目的计数器小于或等于值“0”;以及当所述存储待处理工作组的数目的计数器小于或等于值“0”时,发出信号以指示所述命令完成。0004本概要。
13、并非旨在全面地说明要求保护的主题,而是旨在简单地概述与其相关的某些功能。通过参考下图以及详细的说明,要求保护的主题的其他系统、方法、功能、特性以及优点对于本领域的技术人员而言将是显而易见的或将变得显而易见。附图说明0005当结合附图阅读下面对所披露的实施例的详细说明时,可以更好地理解要求保护的主题,这些附图是0006图1是可以实现要求保护的主题的计算系统体系结构的一个示例;0007图2是图1中首先介绍的中央处理单元的示例的方块图;0008图3是根据要求保护的主题的可用于实现命令队列的命令描述符存储器对象的示例;0009图4是示出主机、命令队列、多个处理核心以及它们之间的关系的示例的方块图;00。
14、10图5是示出计数器块、N维范围NDR命令、任务、处理核心以及它们之间的关系的示例的方块图;说明书CN102004630ACN102004643A2/10页60011图6是示出主机控制过程的示例的流程图;0012图7是示出可用于实现要求保护的主题的执行命令过程的示例的流程图;以及0013图8是示出实现要求保护的主题的一个方面的命令完成过程的示例的流程图。具体实施方式0014提供了多种技术,其中执行命令包含有效地执行和平衡命令包括数据或任务并行处理要求的工作负载所需的信息。每个命令都包括与要执行的命令内的工作组总数、待计算工作组数目、已处理工作组数目、一次处理的工作组数目保留大小、要在命令中处理。
15、的执行线程数目以及已看到命令的执行线程数目对应的信息。0015执行单元处理一个或多个命令队列中的命令。执行单元可以是任何执行命令的计算设备,包括但不限于处理核心、线程或跨网络的计算系统。每个执行单元管理所分配队列内的当前位置。一旦可在队列上提供命令,参与执行命令的每个单元自动将命令的剩余工作组计数器递减工作组保留大小并保留工作组范围内相应数目的工作组以便处理。一旦执行单元执行了所请求的工作组,该单元将尝试保留更多工作组。此操作将继续,直到已处理所有工作组。处理了所有工作组之后,每个执行单元递增已处理工作组计数器。例如,如果特定执行单元一次处理十10个工作组,处理了三3次,然后确定已处理所有工作。
16、组,则该执行单元将已处理工作组计数器递增三十30。将已处理工作组计数器递增到待执行工作组计数器中存储的值的单元将发出命令完成信号。0016每个访问命令的执行单元还标记已看到工作组计数器。一旦已处理工作组计数器等于带执行工作组计数器并且已看到工作组计数器等于执行单元数目,便可删除或覆盖命令队列上的命令。0017本领域的技术人员将理解,本发明的各个方面可以体现为系统、方法或计算机程序产品。因此,本发明的各个方面可以采取完全硬件实施例、完全软件实施例包括固件、驻留软件、微代码等或同时包含在此被统称为“电路”、“模块”或“系统”的硬件和软件方面的实施例的形式。此外,本发明的各个方面可以采取在一个或多个。
17、内合计算机可读程序代码的计算机可读介质中体现的计算机程序产品的形式。0018根据要求保护的主题的一个实施例涉及用于有效地排队数据并行和任务并行作业的程序化方法。此处所用的术语“程序化方法”被定义为目前执行的一个或多个过程步骤;或者备选地被定义为在未来某个时刻执行的一个或多个过程步骤。术语“程序化方法”预计了三种备选形式。第一,程序化方法包括目前执行的过程步骤。第二,程序化方法包括承载计算机指令的计算机可读介质,所述计算机指令在被计算机执行时,将执行一个或多个过程步骤。最后,程序化方法包括通过软件、硬件、固件或它们的任意组合进行编程以执行一个或多个过程步骤的计算机系统。将理解,术语“程序化方法”。
18、不应被构想为同时具有一个以上的备选形式,而是应被构想为一种备选形式,其中在任意给定时刻都只存在多个备选形式中的一个。0019可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以例如是但不限于电、磁、光、电磁、红外线或半导体系统、装置或设备,或者是上述各项的任意适当组合。计算机可读存储介质的更具体的实例非穷举列表包括以下各项具有一条或多条连线的电说明书CN102004630ACN102004643A3/10页7连接、便携式计算机盘、硬盘、随机存取存储器RAM、只读存储器ROM、可擦写可编程只读存储器EPROM或闪存、光。
19、纤、便携式光盘只读存储器CDROM、光存储设备、磁存储设备或上述各项的任意适当组合。在本文档的上下文中,计算机可读存储介质可以是任何可以包含或存储由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形介质。0020计算机可读信号介质可以例如包括位于基带中或作为载波一部分的其中包含计算机可读程序代码的传播数据信号。此类传播信号可以采取各种形式中的任意形式,包括但不限于电磁、光或它们的任意适当组合。计算机可读信号介质可以是计算机可读存储介质以外的任何计算机可读介质,并且可以传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序。0021计算。
20、机可读介质上承载的程序代码可以使用任意适当的介质进行传输,所述介质包括但不限于无线、有线、光缆、射频等或上述各项的任意适当组合。0022用于执行本发明的各个方面的操作的计算机程序代码可以通过一种或多种编程语言的任意组合进行编写,所述编程语言包括诸如JAVA、SMALTALK、C之类的面向对象的编程语言以及诸如“C”编程语言之类的传统过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立式软件包执行、部分地在用户计算机上和部分地在远程计算机上执行,或完全地在远程计算机或服务器上执行。在后一种情况下,所述远程计算机可以通过包括局域网LAN或广域网WAN的任意类型。
21、的网络与用户计算机相连,也可以与外部计算机连接例如,使用因特网服务提供商通过因特网连接。0023下面参考根据本发明的实施例的方法、装置系统和计算机程序产品的流程图和/或方块图对本发明的各个方面进行了描述。应该理解,所述流程图和/或方块图中的每个方块,以及所述流程图和/或方块图中的方块的组合可以通过计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生成机器,从而使所述指令在通过所述计算机或其他可编程数据处理装置的处理器执行时,能够创建用于实现所述流程图和/或方块图中的一个或多个方块中指定的功能/操作的装置。0024这些计算机程序指令还可以存储。
22、在可引导计算机、其他可编程数据处理装置或其他设备按照特定方式运行的计算机可读介质中,以便存储在所述计算机可读介质中的指令生成包括用于实现所述流程图和/或方块图中的一个或多个方块中指定的功能/操作的指令的制品。0025所述计算机程序指令还可以加载到计算机、其他可编程数据处理装置或其他设备上以使一系列操作步骤在所述计算机、其他可编程装置或其他设备上执行以生成计算机实现的过程,以便在所述计算机或其他可编程装置上执行的指令提供用于实现所述流程图和/或方块图中的一个或多个方块中指定的功能/操作的过程。0026如发明者在此认识到的,诸如CELL宽带引擎体系结构CBEA之类的体系结构旨在提供灵活性,但是也存。
23、在缺点,因为调度模型并未内置于硬件中。对于作为软件功能提供的调度而言,为了与硬件调度器竞争,性能是非常重要的问题。0027转到附图,图1是可以实现要求保护的主题的计算系统体系结构100的一个示例。说明书CN102004630ACN102004643A4/10页8客户机系统102包括中央处理单元CPU104。CPU104可以包括多个处理器未示出,每个处理器可以包括多个处理核心参考图2。计算领域中的技术人员应该理解CPU104可能具有的许多不同的配置。0028客户机系统102和处理器104与监视器106、键盘108以及鼠标110相连,这些元件共同促进与计算系统100以及客户机系统102的人工交互。。
24、客户机系统102还包括与CPU104相连的数据存储组件112,数据存储组件112可以结合到CPU104中,即作为内部设备,也可以借助各种公共可用的连接设备诸如但不限于通用串行总线USB端口未示出从外部与CPU104相连。数据存储装置112被示为存储操作系统114,操作系统114控制客户机系统112、实现要求保护的主题的命令排队系统CQS116的实例的操作。下面将结合图28更详细地说明与CQS116关联的功能。0029客户机系统102和CPU104与局域网LAN102相连,局域网LAN102还与服务器计算机122相连。尽管在该示例中,CPU104和服务器122通过LAN102可通信地相连,但是它。
25、们还可以通过诸如但不限于因特网未示出之类的任意数量的通信介质相连。此外,应指出的是,存在许多可实现要求保护的主题的可能计算系统配置,其中计算系统100仅是一个简单的示例。0030图2是图1中首先介绍的CPU104的配置示例的方块图。CPU104包括处理器130,处理器130包括N个执行单元,所述N个执行单元在此示例中为处理核心,即,核心0131、核心1132,依此类推直到核心N133。处理器130的确切处理核心数并不重要,无论数量为何,要求保护的主题都可等同地工作。应指出的是,除了可能是附加处理器的处理器130之外,为了简单起见,仅示出一个处理器。说明书通篇使用核心131133作为根据要求保护。
26、的主题调度的执行单元的示例。如上所述,执行单元可以是任何执行命令的设备,其中包括但不限于处理核心、CPU、线程,甚至完整的计算系统。0031处理器130与数据总线140可通信地相连,数据总线140在核心131133和存储器控制器142以及输入/输出I/O控制器146之间提供通信路径。存储器控制器142负责控制客户机系统102图1的存储设备144图1,例如数据存储装置112。I/O控制器负责控制诸如监视器106图1、键盘108图1和鼠标110图1之类的I/O设备148。本领域的技术人员应理解,图2是典型CPU的非常简单的图示,典型CPU将包括许多其他为了简单而未示出的组件。0032图3是根据要求。
27、保护的主题的可用于实现命令队列的命令描述符存储器对象CDMO的示例。CDMO150包括标题部分152,此部分仅示出对象200的名称,即“COMMANDDESCRIPTOROBJECT”;属性部分154,此部分包含与CDMO150关联的存储器元素或属性;以及方法部分156,此部分包括可以与CDMO150结合执行的功能或方法。应指出的是,所述属性和方法仅用于例示。可使用其他和/或不同属性和方法来实现要求保护的主题。0033属性部分154包括“CDOID命令描述符对象ID”属性158、“WORKGROUP工作组”属性160、“ATOMICWGREMANING剩余原子工作组”属性162、“ATOMIC。
28、WGPROCESSED已处理原子工作组”属性164、“RESERVATIONSIZE保留大小”属性166、“EXECUTIONUNITS执行单元”属性168和“ATOMICUNITSSEEN所见原子单元”属性170。0034CDOID属性158是包含对CDMO150的特定实例的引用的CDOBJECTID类型的变说明书CN102004630ACN102004643A5/10页9量。对象150的每个实例针对属性158都具有唯一的值,从而允许唯一地标识每个实例。WORKGROUP属性160是存储CDMO150的特定实例所引用的相应命令中要计算的工作组总数的整数类型的变量。0035ATOMICWGRE。
29、MANING属性162是存储待处理工作组的数目的整数类型的变量。在相应命令上开始处理之前,属性162存储的值等于属性160的值。一旦在相应命令上开始处理,属性162的值就等于尚待分配给核心进行处理的工作组数目。一旦处理完成,属性162的值便被设为小于或等于“0”。如下面结合图7更详细地说明的,递减属性162以使属性值小于或等于“0”的执行单元知道剩余的工作组是要针对相应命令处理的最后工作组,因此,可能需要处理不包含工作组的不完整集合。0036ATOMICWGPROCESSED属性164是存储相应命令的已完成处理的工作组数目的整数类型变量。在相应命令上开始处理之前,属性164存储的值等于“0”或。
30、NULL。一旦处理完成,属性164的值便等于属性160的值,指示已完成处理每个原始分配的工作组。还使用属性164,以便递增属性164的执行单元发出已完成所有工作组的信号。应指出的是,在一个备选实施例中,可以颠倒与属性162和164关联的功能,以便可以使用属性164发出需要继续处理工作组的信号以及使用162确定已完成所有工作组。0037RESERVATIONSIZE属性166是存储一次应向每个核心分配的工作组的数目的整数类型变量。当然,当命令接近完成时,待处理工作组的数目可能小于属性166的值。EXECUTIONUNITS属性168是存储预期看到即,请求工作组以便处理特定命令的执行单元数目的整数。
31、类型变量。ATOMICUNITSSEEN属性170是存储已看到命令或者是因为特定线程已处理与命令关联的工作组,或者是因为当线程做好处理准备时已分配所有工作组的执行线程的数目的整数类型变量。0038CDMO150的方法部分156包括两种示例性功能或方法。为了简单起见,仅示出两种方法。编程领域中的技术人员应该理解,诸如对象150之类的对象通常将包括许多其他方法,其中包括但不限于CONSTRUCTOR构造器、DESTRUCTOR取消构造器以及设置和获取特定属性的值的方法。0039例如,将在“确定集合大小”方块312和“存在剩余工作组”方块316期间调用“GETVALUES”方法172,将在下面结合图。
32、7更详细地说明这两个方块。调用方法172来检索CDMO150的实例中存储的属性的值。在该示例中,使用一个参数“VALUESTRUCTURE”调用方法172,此参数是包括属性154的存储空间的CDOVALUESTRUCTURE类型的变量。0040例如,在“递增已完成工作组数”方块322调用“UPDATECDO”方法174,将在下面结合图7更详细地说明此方块。调用方法174以更新相应组件的属性158、160、162、164、166、168和170。在该示例中,使用如上所述的一个参数“VALUESTRUCTURE”调用方法174,此参数是包括属性154的存储空间的CDOVALUESTRUCTURE类。
33、型的变量。0041应该理解,CDMO150只是可用于实现要求保护的主题的存储器对象的一个示例。可以使用具有更少、更多和/或不同属性和方法的其他存储器对象。此外,除了使用对象150外,还可以使用许多其他方法实现要求保护的主题的功能和数据存储。例如,可以借助计算机程序结合关系数据库来实现要求保护的主题。0042图4是示出主机202、命令队列204、核心0210、核心1211、核心2212、核心3213的示例以及它们之间的各种关系示例的方块图。应指出的是,命令队列204是循环说明书CN102004630ACN102004643A6/10页10的。主机202可以是任何将命令发布到队列的命令执行设备多个。
34、,所述设备包括但不限于客户机系统102图1、服务器122图1、处理核心、执行线程等。核心210213可以是诸如核心130133图2之类的与主机202关联的处理核心。如果假设主机202为客户机系统102,则可将命令队列204存储在与CPU104图1和2关联的数据存储装置112图1或易失性存储器未示出上。0043命令队列204被示为包含若干队列元素QE,具体而言是QE_1221、QE_2222、QE_3223、QE_4224、QE_5225、QE_6226、QE_7227和QE_8228。与QE221228关联的阴影表示各种可能的状态,其中QE221和222表示已完成的命令,QE223225表示当。
35、前不需要处理但是所有执行单元无法看到的命令。QE226228表示命令队列204中的空的或可用的队列空位。命令队列204内的空间229只是表示当前未处理,但是由于核心_2212已经过它们,因此可以被假设为已完成的其他QE。在这种情况下,核心210、211和213尚未看到由空间229表示的QE。尽管相对于与空间229关联的QE完成了处理,但是在被核心210、211和213“看到”之前,无法使用新命令覆盖所述QE。这防止了核心210、211和213尝试访问已被覆盖并且因此存储预期不同信息的QE。0044在该示例中,主机202指向下一可用队列元素空位QE_6226。核心0210和核心1211被示为指向。
36、QE_3223或正在执行与QE_3223关联的命令,核心2222被示为执行与QE_5225关联的命令,以及核心3213被示为执行与QE_4224关联的命令。下面将结合图58更详细地说明各种指针的含义以及命令队列204中存储的命令的执行。0045应指出的是,NDR是包括多维工作组/工作项的命令。NDR尽管与特定命令关联可以全部包含在诸如QE221228之类的单个QE内,但这不是必须的。QE包含命令,所述命令可以是但不限于NDR、任务或队列大小调整指示。所披露的技术还提供将具有多个工作组的单个命令置于多个QE中,使得命令在多个处理组之间交织参阅图5。图4的图示可被视为只包括一个处理组的简化示例。0。
37、046图5是从不同于图4的命令队列204的角度示出命令队列230的示例的方块图。具体而言,命令队列230被示为分成N维范围NDR命令和任务命令。换言之,被指定为包括多个工作组的命令被分成一个或多个N维范围。一个特定命令被分为两个NDRNDR_A1231和NDR_A2232。NDR_A1231和NDR_A2232都表示单个命令,因此共享计数器块CB_1241。一个命令在命令队列230中具有两个表项,以允许在队列230中处理组之间交织命令。在图5中,由核心131133表示的处理组处理奇数表项,处理组250处理偶数表项。这种职责划分有助于减轻对共享任务计数器块的竞争。在该示例中,将单个命令分为两个表。
38、项NDR_A1231和NDR_A2232使得两个处理组都能执行该命令。另一命令也被分为两个NDRNDR_B1236和NDR_B2237。此外,任务命令可以被视为包含一1个工作组的NDR。0047还示出了与相应命令关联的单个任务,即,任务_A233、任务_B234和任务_C235。每个任务233235都与相应的QE关联。采用计数器块CB,具体地说,CB_1241、CB_2242、CB_3243、CB_4244和CB_5245来跟踪命令的执行,其中每个块对应于相关的NDR。在该示例中,CB_1241跟踪与NDR231和232关联的命令的执行,CB_5245跟踪与NDR236和237关联的命令的执行。
39、。0048图5中还包括处理核心131133图2以及与处理组250关联的其他核心,从核心_N1134到核心_2N135。处理组250可以是CPU104图1和2或诸如与CPU104可说明书CN102004630ACN102004643A7/10页11通信地耦合的服务器122图2之类的其他计算设备中的其他处理器。尽管示出了两2个处理组,但是处理组的数目不受限制。处理组可以包括处理器核心、线程或甚至跨网络的系统。处理器分组可依赖于诸如性能和/或位置或元素之类的因素。在该示例中,核心_0131执行NDR_A1231,核心_N133执行任务_A233,以及核心134和135处理NDR_A2232。下面将结。
40、合图6和7更详细地说明与计数器块、NDR、任务和处理核心关联的处理。0049图6是示出主机控制过程280的示例的流程图。在该示例中,与过程280关联的逻辑存储在数据存储装置112图1上并在CPU104图1和2上与CQS116图1一起执行。处理280从“开始主机流”方块282开始并立即继续到“接收命令”方块284。0050在方块284,过程280接收要在命令队列上发布的命令,出于以下示例的目的,所述命令队列为命令队列230。可以从各种源传送命令,所述源包括但不限于该示例中在客户机系统102上执行的OS114图1和任何应用未示出及实用程序未示出。此外,可以从诸如服务器122之类的远程源传送命令。在。
41、“2个空位可用”方块286,过程280判定命令队列230是否具有至少两2个可用空位。为了避免中止命令队列主机出于此示例的目的,所述命令队列主机为主机202图4,每当可用于输入新命令的表项少于两2个时,将调整命令队列230的大小。通过预先查看,主机202可以判定命令队列230是否具有足够的空间来容纳新命令而不强制阻止下一次排队。0051如果在接收到排队新命令的请求时可用块少于两2个,则过程280继续到“创建新队列”方块288,将在此创建新的更大的队列未示出。如果命令队列230上至少有两个位置可用,则可以使用其中一个位置排队在方块284接收的命令,留下一个空间以防阻止下一接收的命令。0052在“添。
42、加大小调整命令”方块290,插入大小调整命令和执行单元访问新队列所需的信息作为当前队列中的最后剩余位置。通过此方式,命令队列过程参阅过程200,图7可以收到通知并采取必要的步骤来使用新队列参阅310,图7。为了在下面的说明中保持连续性,新队列仍被称为命令队列230。一旦发现在方块290插入了大小调整命令,或者如果在方块286,过程280判定至少有两2个队列位置可用,则过程280继续到“将命令添加到队列”方块292。在方块292,在方块284接收的命令被添加为新队列中的第一表项通过方块290或被插入当前命令队列230通过方块286。在“递增指针”方块294,过程300将指针从主机202递增到下一。
43、可用QE。0053最后,通过异步中断298停止过程280,所述中断将控制传递到“结束主机控制”方块299,在此方块,过程280完成。通常,在OS114图1或过程280为其一部分的CQS116自身停止时生成中断298。在名义操作期间,过程280连续遍历方块284、286、288、290、292和294,在收到命令时处理所述命令。0054图7是示出可用于实现要求保护的主题的执行命令过程300的示例的流程图。在该示例中,与过程300关联的逻辑存储在数据存储装置112图1上并在CPU104图1和2上与CQS116图1一起执行。0055过程300从“开始执行命令”方块302开始并立即继续到“等待工作”方。
44、块304。在方块304,过程300处于挂起状态,等待CQS116发出的指示诸如命令队列204图4或230图5之类的命令队列上具有一个或多个命令的信号。为了进行下面的说明,将使用命令队列230。用于通知诸如核心131135图5之类的执行单元和过程300命令可用的说明书CN102004630ACN102004643A8/10页12机制可随系统配置和工作负荷而变化。热轮询下一可用命令的状态针对不大量消耗资源轮询的系统提供了较高的效率。例如,SPU单元可以对包含下一要处理的命令的命令队列230的表项执行原子轮询。在轮询消耗宝贵计算周期的CPU上,可以使用条件变量。一旦收到命令位于队列230上的信号,过。
45、程300便继续到“取回命令”方块306,在此方块上,从命令队列230中表示下一可用命令的位置检索第一命令。与命令相关的信息参阅CDMO150,图3存储在诸如CB241245图5之类的计数器块中。0056在“大小调整命令”方块308,过程300判定在方块306取回的命令是否表示已调整命令队列230的大小参阅过程280,图6的指示。如果是,则过程300继续到“处理大小调整”方块310,在此方块,执行处理以使用新的或调整大小后的队列而非旧的队列参阅图6。过程300然后返回到方块306,从新的队列取回下一命令并如上文所述继续处理。0057如果在方块308期间,过程300判定下一要执行的命令不指示调整大。
46、小后的命令队列230,则控制继续到“确定集合大小”方块312,在方块312,过程300确定相应命令的已配置工作组大小参阅CDMO150的166,图3。当然,所述命令可以是任务,所述任务可被视为只有一1个工作组并且保留大小为一1。在“递减工作组WG集合大小”方块314,与在方块306取回的命令的执行关联的每个执行单元递减存储该命令内仍需处理的工作组数目的变量参阅CDO150的162,图3。出于此示例的目的,使用了执行单元131135图2和5。每个执行单元131135自动执行方块314,以便在另一单元访问和递减变量之前通过一个单元完全更新变量。所递减的值为相应执行单元131135提供了要由该特定单。
47、元执行的特定命令内的NSR范围的基值。通过这种方式,每个执行单元可以在主机介入最少的情况下,控制其执行NDR中的工作组的数目。换言之,在执行单元之间划分命令,以便每个执行单元根据需要请求工作并且完全能够获知何时继续到下一命令。0058在“剩余工作组”方块316,过程300判定是否存在任何待处理的工作组在当前执行单元已执行操作之后,即作为方块314的操作的结果,变量162的值是否等于或小于0。如果属性等于或小于0并且其绝对值也小于RESERVATIONSIZE166图3的绝对值,则执行单元具有命令的最后要处理的工作组并且可能是不完整集合。在这种情况下,过程300继续到“处理部分工作组”方块320。
48、,在此方块,处理在方块314检索的基础范围所标识的剩余工作组。如果属性162等于或小于0并且其绝对值大于或等于RESERVATIONSIZE166图3的绝对值,则执行单元获知已处理所有工作组并继续到方块320,但是不处理工作组。0059如果在方块316,属性162被确定为大于0,则过程300继续到“处理工作组项”方块318。在方块318,相应的执行单元131133负责执行从方块314中确定的NDR的基础范围开始的保留大小的工作组。过程300然后返回到方块314,在此方块,如上文所述继续处理。0060在“递增已完成工作组数”方块322,每个执行单元将指示已完成工作组总数的变量参阅164,图3自动。
49、递增特定执行单元131135根据在遍历方块314、316、318和320期间在方块306接收的命令而处理的工作组数目。0061在“已完成工作组总数”方块324,每个执行单元判定完成的工作组数目参阅164,图3是否等于命令中的工作组数目参阅160,图3。如果等于,则相应的执行单元131133继续到“发信号通知完成”方块326。在方块326,执行单元131135发出信号通知CQS116已处理所有与命令关联的工作组。通过此方式,只有完成命令的执行单元才说明书CN102004630ACN102004643A9/10页13发出信号通知CQS116,从而避免重复信号。0062除了上述处理,每个操作命令队列230的执行单元131135还执行“将命令标记为已看到”方块328,在方块328,每个执行单元131135递增跟踪已看到特定命令的执行单元的数目的变量参阅170,图3。要指出的是,执行单元并非一定要实际处理特定命令才能看到该命令,例如,如果分配给特定命令的线程数目参阅168,图3超过完成该命令实际所需的单元数目,也能看到该命令。一旦在方块328将命令标记为已看到,每个执行单元133135就返回到方块304并如上文所述继续处理。0063最后,通过异步中断338停止过程300,异步中断338将控制传递到“结束执行命令”方块339,在此方块,过程300完成。通常,在OS114图1或过程300为其一。