CN102736949B - 改善对非连贯设备要执行的任务的调度 - Google Patents

改善对非连贯设备要执行的任务的调度 Download PDF

Info

Publication number
CN102736949B
CN102736949B CN201210085059.6A CN201210085059A CN102736949B CN 102736949 B CN102736949 B CN 102736949B CN 201210085059 A CN201210085059 A CN 201210085059A CN 102736949 B CN102736949 B CN 102736949B
Authority
CN
China
Prior art keywords
task
processing equipment
compliant
coherent
consistency operation
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
Application number
CN201210085059.6A
Other languages
English (en)
Other versions
CN102736949A (zh
Inventor
罗伯特·伊利奥特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN102736949A publication Critical patent/CN102736949A/zh
Application granted granted Critical
Publication of CN102736949B publication Critical patent/CN102736949B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation 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 data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了改善对非连贯设备要执行的任务的调度。公开了用于调度多个非连贯处理设备中的一个处理设备要处理的任务的方法,这些处理设备中的至少两个是异种设备并且任务中的至少一些是针对这些处理设备中的特定一个的,和包括非连贯设备和用于调度任务的任务调度器的数据处理装置。这些处理设备处理本地存储库和这些处理设备中的至少一些可访问的存储器中存储的数据。方法包括:对于处理设备要处理的多个非依从任务中的每个,确定在处理非依从任务之前需执行的一致性操作;执行针对非依从任务之一的一致性操作并在完成时将该任务发出到处理设备以处理;执行针对另一非依从任务的一致性操作,使得在这些一致性操作完成时处理设备可处理另一任务。

Description

改善对非连贯设备要执行的任务的调度
技术领域
本发明涉及数据处理的领域,具体而言涉及对非连贯设备(non-coherentdevice)要执行的任务的调度。
背景技术
已知具有多个彼此交互的设备并且具有存储器***的***。在这多个不同设备有其自己的用于数据的本地存储库的情况下,可能遇到维护不同本地存储位置和存储器之间的数据连贯性(coherency)的问题。一般地,设备通过执行一致性操作(consistencyoperation)来解决此问题,一致性操作例如有缓存维护操作、使用屏障(barrier)以及在执行中的特定点冲刷本地存储库,其中重要的是数据对于***的其余部分的至少一部分是连贯的。对于诸如图形处理单元GPU之类的具有长管道(pipeline)的设备,可能遇到特别的问题。在一致性操作正被执行的同时等待GPU执行一项任务向管道中引入了气泡,这在深管道中有严重的缺点。
现有技术的设备或者立即执行一致性操作,这一般导致多个更新并因此具有与之相关联的带宽成本,但具有低等待时间,或者它们等待并在批处理中一起执行一致性操作,这避免了不必要的多个更新,但增大了等待时间。
希望既减小与这种一致性操作相关联的等待时间,又不会过度影响带宽。
发明内容
从第一方面来看,本发明提供了一种用于对多个非连贯处理设备中的一个非连贯处理设备要处理的任务进行调度的方法,所述多个非连贯处理设备中的至少两个是异种设备(heterogeneous device)并且所述任务中的至少一些是针对所述多个非连贯处理设备中的特定一个的,所述多个非连贯处理设备处理本地存储库和所述多个非连贯处理设备中的至少一些可访问的存储器中存储的数据,所述方法包括:对于所述非连贯处理设备要处理的多个非依从任务(non-dependent task)中的每个非依从任务,确定在处理所述非依从任务之前需要执行的一致性操作;执行针对所述多个非依从任务中的一个非依从任务的一致性操作并且在完成时将所述任务发出到所述处理设备以处理;执行针对另一非依从任务的一致性操作,使得在这些一致性操作完成时所述非连贯处理设备能够处理所述另一任务。
本发明认识到,虽然在设备彼此一致并且能够在它们之间自由传递数据之前可能需要执行多个一致性操作,但为了非连贯设备执行特定任务,要使此任务安全执行可能只需要执行完整的一致性操作的子集。从而,不是执行所有一致性操作,本发明确定对于特定任务必要的一致性操作并且只执行这些一致性操作。当它们完成时,该任务可被发出到非连贯设备以便处理,同时并行地,后续任务所需的一致性操作可被执行。一旦这些一致性操作完成了,该后续任务就准备好被非连贯设备处理。
由于一般在任何设计良好的***中,一致性操作花的时间将少于与之相关联的任务,所以针对后续任务的一致性操作将在先前任务执行之前完成,从而后续任务将在设备准备好执行它之前就准备好被发出来供执行。从而,由一致性操作引入到***中的等待时间一般只是与针对第一任务的一致性操作相关联的等待时间。
应当注意,至少一些设备是异种设备,并且至少一些任务是针对特定设备的。这与具有同种核心的设备不同,在具有同种核心的设备的情况下任务可依据可用性和负载而被重引导至不同核心。异种设备是在其执行能力方面具有不同的属性或性能的设备。例如,具有专用图像操纵电路的GPU的执行性能将比CPU上的等效软件更高效且快得多。这个差异可能如此显著,以至于选择在较慢的设备上做工作以避免需要一致性工作,将不是不可行的。在其他设备中,功能在一个设备上可能是完全没有的,从而其将不能够执行某些功能。本发明关注了至少在一些情况下不能在设备之间移植任务的情形。
从而,对于本发明的实施例及其实现方式的操作的一个约束是设备是预先选择的,从而对其的选择不能被用作优化的另一维度。
在一些实施例中,非依从任务是独立于所有在处理之前要求执行一致性操作的任务的任务,所述方法包括在所述执行针对所述多个非依从任务中的所述一个非依从任务的一致性操作的步骤之后、在执行所述针对另一非依从任务的一致性操作的步骤之前的另一步骤:重评估依从于所述一个非依从任务的任何任务以确定所述任何任务是依从的还是非依从的。
非依从任务可被看作是不依从于任何其他要处理的待处理任务的任务。然而,在此实施例的上下文中,非依从任务是这样的任务:该任务不依从于任何其他有一致性操作需要执行的待处理任务。例如,如果任务a、b、c、d具有以下依从性:a=>b=>d,并且c=>d,也就是说a必须在b之前执行,b必须在d之前执行,并且c必须在d之前执行,那么最初a和c被视为非依从任务。然而,一旦已为任务a执行了一致性操作,则独立于任务a是否完成,b被视为非依从任务,从而使得如果针对任务b的一致性操作小于针对任务c的,则它们可被先执行。从而,在每个一致性任务完成之后,可以根据任务现在是否被认为是非依从的来重评估一致性工作的顺序。
在一些实施例中,所述非连贯处理设备包括任务队列存储库,用于在至少一个任务的执行之前将该任务存储在队列中,并且在针对所述另一非依从任务的一致性操作完成时将所述另一任务发送到所述非连贯处理设备以被处理或者如果所述非连贯处理设备正在处理先前的任务则被存储在所述任务存储队列中等待处理。
如果非连贯处理设备具有用于将至少一个任务存储在队列中的任务队列存储库,则可能是有利的。如果是这样的话,则在针对另一任务的一致性操作完成之后,这个另一任务可被发送到非连贯处理设备并且可待在队列中等待执行,并且只要非连贯处理设备准备好执行它就可被执行。这样,在这个点在管道中将不会出现气泡,因为将不需要等待该另一任务的一致性操作被执行,该另一任务将在队列中等待,准备好被执行。
在一些实施例中,所述方法包括初始步骤:确定所述任务的能够被彼此独立地执行的部分并且在可能的情况下将所述任务细分成所述多个非依从任务。
确定哪些是最适当的原子任务(atomic task)以将任务细分成这些原子任务,可能是有利的。换言之,能够做出的非依从任务的最小细分是什么。通过将任务细分成小分割,可以减小***的等待时间,因为以这种方式可以为小任务执行一致性操作,然后该任务可在下一任务的一致性操作被执行的同时被执行。
在一些实施例中,所述方法包括所述初始步骤之后的步骤:确定所述任务的依从性并且提供对所述任务的排序以减小初始等待时间。
一旦任务已被细分成非依从任务,调度器就可基于每个任务的一致性工作的大小来执行排序以减小初始等待时间。从而,具有最小一致性工作的任务可被选择来首先执行。
在其他实施例中,在执行针对所述另一非依从任务的一致性操作之后,所述方法将所述另一任务存储在特权队列中,准备好响应于表明所述非连贯设备准备好处理所述另一任务的指示而输出到所述非连贯设备。
如果在非连贯处理设备上没有任务队列存储库,则该另一任务被存储在可以采取环形缓冲区的形式的特权队列中,可能是有利的。此队列可以在执行连贯性操作的设备上,或者其可以在存储器中。任务将存在于此特权队列中,准备好输出。当非连贯设备准备好处理另一任务时,它将此通知给执行一致性操作的设备,并且该任务随后可被迅速且高效地传送给它。这避免了非连贯设备为另一任务等待太长时间。此***的一个缺陷是在不同设备之间需要更多通信。
在一些实施例中,所述一致性操作包括以下各项中的至少一种:连贯性操作,以及其他数据传送操作,用以确保所述多个处理设备和所述存储器之间的一致性。
所执行的一致性操作是诸如使数据连贯的连贯性操作之类的操作。为了设备一致地操作可能需要其他操作。例如,可能涉及别名的拷贝。
在一些实施例中,该方法还包括执行针对多个另外的非依从任务的一致性操作并且在针对这多个另外的任务中的每个另外的任务的一致性操作完成时,确定所述非连贯处理设备是否有容量来接收所述另外的任务并且响应于所述非连贯处理设备有容量而将所述另外的任务发出到所述非连贯处理设备。
如果等待在非连贯处理设备上执行的所有非依从任务的一致性操作被一个接一个地执行,本发明的实施例则尤其有利。如果是这样的话,则只要这些非连贯操作已被执行,这些任务就准备好被发出到非连贯处理设备。
可响应于来自非连贯处理设备的表明其任务队列存储库具有容量的指示而将任务发出到非连贯处理设备。如果接收到这种信号,则可以传送其连贯性操作已完成的任何任务。在许多实施例中,任务队列可并行存储若干个任务,从而,单次传送可用于在设备之间传送这些任务,从而节省了时间和功率。
在一些实施例中,所述方法还包括从所述非连贯处理设备接收表明所述任务队列存储库具有容量的指示,并且响应于所述指示以及没有任务的一致性操作已完成而记录所述指示,以使得在待处理的连贯性操作完成时相应的任务可被放在所述队列中。
如果接收到表明任务队列存储库具有容量的指示,并且当前没有一致性操作已完成,则响应于此,***可记录此指示,并且在待处理的一致性操作完成时,相应的任务可被放在队列中。这样,另一任务可在其准备就绪时有希望被及时地发送到非连贯设备以存储在任务队列中,以避免管道中出现气泡。
在一些实施例中,所述对于所述任务中的每一个确定要执行的一致性操作的步骤包括确定所述任务中的哪个任务有最小数目的一致性操作与之相关联并且在执行其他一致性操作和任务之前执行所述最小数目的一致性操作并将所述任务发出到所述非连贯处理设备。
确定哪个任务具有等待时间最小的最小数目的一致性操作,可能是有利的。如果这么做了,那么只要这些操作完成,任务就可被发送到非连贯处理设备,从而比选择了具有更多连贯性操作的任务的情况更迅速。这样,减小了***的等待时间。然后在处理具有最小等待时间一致性操作的任务的同时,可以执行另外的较大等待时间的一致性操作。如前所述,在行为良好的***中,任务花的时间一般长于连贯性操作,从而在前一任务完成之前,下一任务的连贯性操作应当已完成并且它准备好被处理。
在一些实施例中,处理所述任务的所述非连贯处理设备包括具有深管道的图形处理单元。
虽然非连贯处理设备可以是多种事物,但其对于具有深管道的图形处理单元尤其有利。在深管道中出现气泡是尤其不利的,从而,以这种方式执行连贯性操作并且减小任务被发送到图形处理单元时的等待时间,可以帮助减少气泡并且改善***的***。
在一些实施例中,所述一致性操作是在非连贯中央处理单元上执行的。
虽然一致性操作可在多种处理设备上执行,但经常是中央处理单元执行调度和一致性操作。
本发明的第二方面提供了一种计算机程序产品,其包括程序,所述程序在被处理器执行时将控制所述处理器执行根据本发明的第一方面的方法中的步骤。
本发明的第三方面提供了一种数据处理装置,包括:用于处理数据的多个非连贯处理设备,所述多个非连贯处理设备中的至少一些包括本地数据存储库;用于存储数据的存储器,可被所述多个非连贯处理设备中的至少一些访问;以及调度电路,用于对所述多个非连贯处理设备中的至少一个非连贯处理设备要执行的任务进行调度;其中所述至少一个非连贯处理设备包括任务队列存储库,用于存储至少一个等待执行的任务;所述调度电路被配置为:对于所述多个非连贯处理设备中的一个非连贯处理设备要执行的多个非依从任务中的每个非依从任务,确定在执行所述任务之前需要执行的一致性操作,并且调度所述一致性操作的执行并且在完成时发出所述任务以由所述非连贯处理设备执行并且执行针对另一任务的一致性操作。
从应联系附图来理解的对示例性实施例的以下详细描述中将清楚本发明的上述和其他目的、特征和优点。
附图说明
图1示出了根据本发明实施例的数据处理装置;
图2示意性地示出了任务及其相关联的连贯性操作的调度;
图3示意性地示出了独立任务及其连贯性操作的调度;
图4示出了图示根据本发明实施例的方法中的步骤的流程图;并且
图5示出了本发明实施例的虚拟机实现。
具体实施方式
图1示出了数据处理装置5,其具有中央处理单元CPU 10、图形处理单元GPU 20和存储器30。中央处理单元和图形处理单元经由总线40与彼此通信并与存储器通信。
中央处理单元10具有调度器12,用于调度要执行的多个任务。在一些实施例中,调度器在调度任务之前可将任务细分为非依从任务的最小分割。在基本情况中,调度器可以让用户以任务的最小形式指定任务(例如图3中所示),或者调度器可以使用标准来细分任务,这些任务依从于该任务本身中使用的指令的序列。任务本身是通用计算(如CPU将会执行的),这样代码可能有或没有阻止细分的副作用。
例如,可从存储器的每个元素读取简单的任务,修改它,并将它写入回到同一位置。在此情况下,可按用户限定的边界琐碎地细分该任务。作为具体情况,如果用户应用在该任务被执行时请求一百万个这样的读取/修改/写入,则我们可以细分成500k线程的两个任务,250k的四个,等等。这趋向于最佳情况,其中额外控制结构的创建胜过了等待时间减小。
也存在具有阻止此细分的关系的线程的更大分组。极端例子是需要被反转的一百万个项目的阵列,在此情况下每个线程将被指派来交换第一元素和最末元素、第二元素和倒数第二元素,等等。
代码也可能充分复杂,以致无法确定访问模式(NP完备停机问题),或者可能有访问模式为数据驱动的情况(在运行时提供了索引的列表用于元素访问)。这太计算密集了,以至于分析无法成功,因此我们将不再进一步细分。
在现实生活中当处理典型应用时会看到这些情况的混合,并且“尽力而为”分析将被用于确定应当执行什么细分。
这些非依从任务中的每一个具有与之相关联的资源,在执行作业的设备上需要使这些资源一致。从而,CPU 10确定为了使任务在其目标设备上成功执行需要执行什么一致性操作。
在此示例中,我们考虑要在图形处理单元20上执行的任务。从而,CPU 10将确定要在GPU 20上执行的非依从任务,并且将确定在可以执行每个任务之前需要执行什么一致性操作。调度器12随后将确定这些一致性操作中的哪个具有最小成本,即能够被最迅速地执行,并且将首先执行这些操作。应当注意,通过预先将任务细分成小的非依从任务,与每个任务相关联的一致性操作的数目将减少,从而由等待一致性任务的执行而导致的等待时间将降低。
当一致性操作完成时,然后与这些一致性操作相关联的任务将被发送到GPU 20,在GPU 20处其可被执行。CPU 10随后将为要在GPU上执行的另一任务执行一致性操作,并且当这些一致性操作完成时,将把该另一任务发送到GPU 20,在GPU 20处该另一任务将被存储在任务存储库22中。
CPU随后将为另一任务执行一致性操作,并且如果任务存储库22变满,则将它们存储在低等待时间或特权队列14中,该队列是特权操作***所拥有的队列。此队列可被实现为FIFO或存储器30中与CPU相关联的环形缓冲区。应当注意,如果CPU 10在与不具有任务存储库22的GPU通信,则其将把待处理的任务存储在此特权队列中,等待来自GPU的表明其准备好处理下一任务的信号。
图2示意性地示出了任务和多个任务的一致性操作的调度和执行。从而,存在多个任务T1至T6,它们与多个一致性操作C1至C6相关联。可以看出,一致性操作C3具有最小成本,从而它们首先被执行,并且一旦它们完成,T3就被发出以供GPU 20执行。一致性操作C1随后被执行,并且当它们完成时,T1被发出到GPU 20并待在任务存储队列22中。在此实施例中,GPU具有两个深队列(deep queue),其由两个执行寄存器(它们是用于存储正在执行的命令的寄存器)和用于存储待处理的命令的两个影子寄存器构成,并且这些寄存器被用作任务存储队列。应当注意,此寄存器接口是在总线上配置的,并且随后在GPU被通知开始对任务工作时被存储在GPU内部,这使得相同的寄存器可以为下一任务作好准备。
一致性操作C2、C7和C4随后被调度,并且在完成时,任务T2、T7和T4被放在CPU上的特权队列14中。当CPU完成了任务T3时,其向CPU发送中断,表明影子寄存器具有容量。此时,由于一致性操作C2、C7和C4已完成,于是待处理的任务T7、T4和T2被发送并存储在充当任务存储库的影子寄存器中。如果任务被一起发送,则它们可以被一起作为任务列表存储在影子寄存器之一中,并且以这种方式,任务存储库可一起接收数个任务,并将它们一起存储,以使得在任何一个时间发送并待在队列中待处理的任务的数目可以增加。
任务T1随后被执行,并且当此完成时,又有了具有容量的影子寄存器,从而另一中断被发送到CPU,并且当用于任务T5和T6的连贯性操作也就是C5和C6完成时,任务T5和T6在特权队列中准备就绪,并且它们也可被发送。
这样,用于数个任务的一致性操作可被预先执行,并且它们允许了任务被一个接一个地执行,而不会在管道中出现气泡。另外,如果若干个任务同时准备好被传送,则它们可被一起传送和存储,从而降低了带宽和存储要求。
图3示意性地示出了任务A和B如何是可按任何顺序执行的非依从任务,而任务C是需要在它们已完成时才执行的任务。从而,任务A和B是可被CPU按任何顺序调度的任务。这些任务都被图形处理器GPU 20执行并且有一致性操作X和Y与之相关联。如此图中示意性示出的,一致性操作Y大于一致性操作X,从而,CPU中的调度器调度一致性操作X被首先执行,并且当它们完成时,其向GPU 20发出任务A以执行。一致性任务Y随后被执行。由于在此实施例中当一致性任务Y完成时在GPU上没有任务队列,所以任务B被存储在特权队列中,等待来自GPU的表明任务A已完成的信号。当其接收到此信号时,然后任务B被发送到GPU以执行。
应当注意,任务B可在一致性操作Y完成后立即就被放在特权队列中,等待来自GPU的信号,或者在一些实施例中,CPU可以估计任务A将花多长时间,并且在大约其计算出GPU将准备就绪的时间将任务B放到队列中。这样,任务B不会在特权队列中待很长时间,并且允许了其他任务被放在特权队列中。
一旦任务A和B都已完成,任务C就可被处理,只要可能与其相关联的任何一致性操作都已完成。它们可能在任务A或B的执行期间已被执行了。
图4示出了图示根据本发明实施例的方法中的步骤的流程图。
在此方法中,首先,要执行的任务被分成多个非依从任务。对任务的这个细分被执行到最小基本任务。
然后,确定为了在非连贯设备上执行这多个非依从任务中的每一个而要执行的连贯性操作。然后确定哪些连贯性操作具有最低成本,并且这些连贯性操作被首先执行。
当它们已完成时,与它们相关联的任务被发出到非连贯设备,并且确定是否有另一任务要执行。如果有,则下一组连贯性操作可被执行。在此之前,在一些实施例中,(虽然在此图中没有示出)有一步骤确定任何先前依从的任务现在在连贯性操作完成之后是否是非依从的。如果是,则与它们相关联的连贯性操作被添加到要执行的连贯性操作的列表,并且如果它们的成本低则可被选择为下一组。
一旦下一组连贯性操作已被执行,则确定非连贯设备上的任务队列是否已满。如果其已满,那么如果其连贯性操作已被执行则现在准备好被执行的任务被排队在CPU上或存储器中,等待来自非连贯设备的表明在任务队列中有空间或者如果没有任务队列则表明非连贯设备准备好执行该任务的信号。当接收到此信号时,该任务被发出到非连贯设备。
如果非连贯设备上的任务队列尚未变满,则与已完成的连贯性操作相关联的任务将在连贯性操作完成之后立即被发出到该队列。当没有另外的任务要发出时,则该方法结束。
图5图示了可以使用的虚拟机实现。虽然先前描述的实施例按照用于操作支持所关注的技术的特定处理硬件的装置和方法来实现本发明,但也可以提供硬件设备的所谓虚拟机实现。这些虚拟机实现在主机处理器530上运行,该主机处理器530通常运行支持虚拟机程序510的主机操作***520。通常,要提供以合理速度执行的虚拟机实现需要大型强力处理器,但这种方案在某些情况下可能是有道理的,例如当出于兼容性或再使用原因而希望运行另一处理器原生的代码时。虚拟机程序510能够执行应用程序(或操作***)500以给出与这种真实硬件设备执行该程序将会给出的结果相同的结果。从而,可以利用虚拟机程序510从应用程序500内执行对非连贯设备要执行的任务的调度。
虽然这里已经参考附图详细描述了本发明的示例性实施例,但是要理解,本发明并不限于这些确切的实施例,本领域的技术人员在不脱离由权利要求限定的本发明的范围和精神的情况下可以对其实现各种变化和修改。

Claims (24)

1.一种用于对多个非连贯处理设备中的一个非连贯处理设备要处理的任务进行调度的方法,所述多个非连贯处理设备中的至少两个是异种设备并且所述任务中的至少一些是针对所述多个非连贯处理设备中的特定一个的,所述多个非连贯处理设备处理本地存储和所述多个非连贯处理设备中的至少一些可访问的存储器中存储的数据,所述方法包括:
对于所述多个非连贯处理设备中的一个非连贯处理设备要处理的多个非依从任务中的每个非依从任务,确定一致性操作,其中所述一致性操作是在处理所述非依从任务之前需要执行的操作;
执行针对所述多个非依从任务中的一个非依从任务的一致性操作并且在完成时将所述多个非依从任务中的一个发出到所述一个非连贯处理设备以处理;
执行针对另一非依从任务的一致性操作,使得在所述一致性操作完成时所述非连贯处理设备能够处理所述另一任务,其中,非依从任务是独立于所有在处理之前要求执行一致性操作的任务的任务;并且
在所述执行针对所述多个非依从任务中的所述一个非依从任务的一致性操作的步骤之后、在执行所述针对另一非依从任务的一致性操作的步骤之前,重评估依从于所述多个非依从任务中的所述一个非依从任务的任何任务以确定所述任何任务中的哪些是依从的还是非依从的。
2.根据权利要求1所述的方法,其中,所述非连贯处理设备包括任务队列存储库,用于在至少一个任务的执行之前将所述任务存储在队列中,并且在针对所述另一非依从任务的一致性操作完成时将所述另一任务发送到所述非连贯处理设备以被处理或者如果所述非连贯处理设备正在处理先前的任务则被存储在所述任务存储队列中等待处理。
3.根据权利要求2所述的方法,还包括从所述非连贯处理设备接收表明所述任务队列存储库具有容量的指示并且响应于所述指示而发送准备好执行的任何另外任务。
4.根据权利要求2所述的方法,还包括从所述非连贯处理设备接收表明所述任务队列存储库具有容量的指示,并且响应于所述指示以及没有任务的一致性操作已完成而记录所述指示,以使得在待处理的连贯性操作完成时相应的任务被放在所述队列中。
5.根据权利要求1所述的方法,包括初始步骤:确定所述任务的能够被彼此独立地执行的部分并且在可能的情况下将所述任务细分成所述多个非依从任务。
6.根据权利要求5所述的方法,其中,所述初始步骤包括将所述任务中的至少一些细分成有可能的最小的任务。
7.根据权利要求5所述的方法,还包括在所述初始步骤之后执行的步骤:确定所述任务的依从性并且提供对所述任务的排序以减小初始等待时间。
8.根据权利要求1所述的方法,其中,在执行针对所述另一非依从任务的一致性操作之后,所述方法将所述另一任务存储在特权队列中,准备好响应于表明所述非连贯设备准备好处理所述另一任务的指示而输出到所述非连贯设备。
9.根据权利要求1所述的方法,其中,所述一致性操作包括以下各项中的至少一种:连贯性操作,以及其他数据传送操作,用以确保所述多个处理设备和所述存储器之间的一致性。
10.根据权利要求1所述的方法,所述方法还包括执行针对多个另外的非依从任务的一致性操作并且在针对所述多个另外的非依从任务中的每个另外的非依从任务的一致性操作完成时,确定所述非连贯处理设备是否有容量来接收所述另外的非依从任务并且响应于所述非连贯处理设备有容量而将所述另外的非依从任务发出到所述非连贯处理设备。
11.根据权利要求1所述的方法,其中,所述对于所述非依从任务中的每一个确定要执行的一致性操作的步骤包括确定所述任务中的哪个任务有最小数目的一致性操作与之相关联并且在执行针对其他任务的其他一致性操作之前执行所述最小数目的一致性操作并将所述任务发出到所述非连贯处理设备。
12.根据权利要求1所述的方法,其中,处理所述任务的所述非连贯处理设备包括具有深管道的图形处理单元。
13.根据权利要求12所述的方法,其中,所述一致性操作是在非连贯中央处理单元上执行的。
14.一种数据处理装置,包括:
用于处理数据的多个非连贯处理设备,所述多个非连贯处理设备中的至少一些包括本地数据存储并且所述多个非连贯处理设备中的至少两个是异种设备;
用于存储数据的存储器,可被所述多个非连贯处理设备中的至少一些访问;以及
调度电路,用于对所述多个非连贯处理设备中的至少一个非连贯处理设备要执行的任务进行调度,所述任务中的至少一些是针对所述多个非连贯处理设备中的特定一个的,其中
所述多个非连贯处理设备中的特定一个包括任务队列存储库,用于存储至少一个等待执行的任务;
所述调度电路被配置为,对于所述多个非连贯处理设备中的一个非连贯处理设备要执行的多个非依从任务中的每个非依从任务,确定一致性操作,并且调度所述一致性操作的执行并且在完成时发出所述非依从任务以由所述非连贯处理设备执行并且执行针对另一任务的一致性操作,其中,所述一致性操作是在执行所述非依从任务之前需要执行的操作,非依从任务是独立于所有在处理之前要求执行一致性操作的任务的任务,所述调度电路被配置为在针对所述多个非依从任务中的一个非依从任务的一致性操作完成之后评估依从于所述一个非依从任务的任务,并且响应于确定任何评估的任务现在是非依从的,在调度一致性操作的执行时包括针对现在非依从的任务的一致性操作。
15.根据权利要求14所述的数据处理装置,其中,所述非连贯处理设备包括数据存储库,该数据存储库被配置为作为任务队列存储至少一个待处理的任务,所述调度电路被配置为在针对所述另一任务的相应一致性操作完成时发出所述另一任务,如果所述非连贯设备尚未完成所述任务则所述另一任务被存储在所述任务队列中。
16.根据权利要求15所述的数据处理装置,所述调度电路被配置为响应于从所述非连贯处理设备接收到表明所述任务队列存储库具有容量的指示而发送任何准备好执行的另外任务。
17.根据权利要求15所述的数据处理装置,其中,所述调度电路被配置为从所述非连贯处理设备接收表明所述任务队列存储库何时有存储任务的容量的指示,并且响应于所述指示以及没有任务的一致性操作已完成,调度针对另一任务的连贯操作开始。
18.根据权利要求14所述的数据处理装置,其中,所述调度电路还被配置为确定所述任务的能够被彼此独立地执行的部分并且在可能的情况下将所述任务细分成所述多个非依从任务。
19.根据权利要求14所述的数据处理装置,所述数据处理装置包括用于存储要被所述多个非连贯设备中的至少一个执行的任务的特权队列,所述调度电路被配置为,如果所述非连贯设备尚未完成所述任务,则将所述另一任务存储在所述特权队列中,准备好在针对所述另一任务的相应一致性操作完成时输出到所述非连贯设备。
20.根据权利要求14所述的数据处理装置,其中,所述一致性操作包括以下各项中的至少一种:连贯性操作,以及其他数据传送操作,用以确保所述多个处理设备和所述存储器之间的一致性。
21.根据权利要求14所述的数据处理装置,所述调度电路被配置为执行针对多个另外的非依从任务的一致性操作并且在针对所述多个另外的任务中的每个另外的任务的一致性操作完成时,确定所述非连贯处理设备是否有容量来接收所述另外的任务并且响应于所述非连贯处理设备有容量而将所述另外的任务发出到所述非连贯处理设备。
22.根据权利要求14所述的数据处理装置,其中,所述调度电路被配置为确定所述多个非依从任务中的哪个非依从任务有最低数目的要执行的一致性操作,所述调度电路被配置为将所述最低数目的要执行的一致性操作调度为第一组一致性操作并且在完成时发出相应的任务以被执行。
23.根据权利要求14所述的数据处理装置,其中,处理所述任务的所述非连贯处理设备包括具有深管道的图形处理单元。
24.根据权利要求14所述的数据处理装置,包括中央处理单元,所述中央处理单元被配置为响应于来自所述调度电路的请求而执行所述一致性操作。
CN201210085059.6A 2011-03-24 2012-03-26 改善对非连贯设备要执行的任务的调度 Active CN102736949B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1104958.2 2011-03-24
GB201104958A GB2489278B (en) 2011-03-24 2011-03-24 Improving the scheduling of tasks to be performed by a non-coherent device

Publications (2)

Publication Number Publication Date
CN102736949A CN102736949A (zh) 2012-10-17
CN102736949B true CN102736949B (zh) 2017-08-11

Family

ID=44067309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210085059.6A Active CN102736949B (zh) 2011-03-24 2012-03-26 改善对非连贯设备要执行的任务的调度

Country Status (4)

Country Link
US (1) US9015719B2 (zh)
JP (1) JP6368452B2 (zh)
CN (1) CN102736949B (zh)
GB (1) GB2489278B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150033234A1 (en) * 2013-07-23 2015-01-29 Qualcomm Incorporated Providing queue barriers when unsupported by an i/o protocol or target device
US20170286301A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
JP7485934B2 (ja) * 2020-06-30 2024-05-17 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246439A (zh) * 2008-03-18 2008-08-20 中兴通讯股份有限公司 一种基于任务调度的自动化测试方法及***

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845327A (en) * 1995-05-03 1998-12-01 Apple Computer, Inc. Cache coherency where multiple processors may access the same data over independent access paths
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US7719540B2 (en) * 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US7724263B2 (en) * 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US7091982B2 (en) * 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7454573B2 (en) * 2005-01-13 2008-11-18 International Business Machines Corporation Cost-conscious pre-emptive cache line displacement and relocation mechanisms
US7516309B2 (en) * 2005-06-03 2009-04-07 International Business Machines Corporation Method and apparatus for conditional memory ordering
US7694107B2 (en) * 2005-08-18 2010-04-06 Hewlett-Packard Development Company, L.P. Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8310491B2 (en) * 2007-06-07 2012-11-13 Apple Inc. Asynchronous notifications for concurrent graphics operations
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US20100110069A1 (en) * 2008-10-31 2010-05-06 Sharp Laboratories Of America, Inc. System for rendering virtual see-through scenes
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8997113B2 (en) * 2010-09-24 2015-03-31 Intel Corporation Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246439A (zh) * 2008-03-18 2008-08-20 中兴通讯股份有限公司 一种基于任务调度的自动化测试方法及***

Also Published As

Publication number Publication date
JP6368452B2 (ja) 2018-08-01
GB2489278B (en) 2019-12-25
US20120246656A1 (en) 2012-09-27
US9015719B2 (en) 2015-04-21
GB2489278A (en) 2012-09-26
CN102736949A (zh) 2012-10-17
GB201104958D0 (en) 2011-05-11
JP2012203911A (ja) 2012-10-22

Similar Documents

Publication Publication Date Title
CN105579959B (zh) 硬件加速器虚拟化
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
US9436510B2 (en) System and method for managing the interleaved execution of threads
CN103999051B (zh) 用于着色器核心中着色器资源分配的策略
US20090271796A1 (en) Information processing system and task execution control method
CN104094235B (zh) 多线程计算
CN108027751A (zh) 对多版本任务的高效调度
CN109983440A (zh) 数据处理
CN103119912A (zh) 多处理器计算平台中的处理器间通信技术
CN101288049A (zh) 数据处理装置中的数据引擎的使用
CN104461970B (zh) Dma控制器、移动终端以及数据搬运方法
CN110308982A (zh) 一种共享内存复用方法及装置
US9105208B2 (en) Method and apparatus for graphic processing using multi-threading
JP2013117790A (ja) 情報処理装置、情報処理方法、及びプログラム
CN102736949B (zh) 改善对非连贯设备要执行的任务的调度
WO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
CN114827048A (zh) 一种动态可配高性能队列调度方法、***、处理器及协议
US9690600B2 (en) Reconfigurable processor and method of operating the same
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
US5860026A (en) Information processing system for controlling operations of input/output devices of another clusters according to control instructions issued from a cluster
US11526767B2 (en) Processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process
CN116775266A (zh) 用于处理器中的线程组的可扩展负载均衡的技术
CN115878517A (zh) 存储器装置、存储器装置的操作方法和电子装置
KR20230124598A (ko) 높은 처리량 및 낮은 오버헤드 커널 개시를 위한 압축 커맨드 패킷
US11915041B1 (en) Method and system for sequencing artificial intelligence (AI) jobs for execution at AI accelerators

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