CN109983440A - 数据处理 - Google Patents

数据处理 Download PDF

Info

Publication number
CN109983440A
CN109983440A CN201780072063.XA CN201780072063A CN109983440A CN 109983440 A CN109983440 A CN 109983440A CN 201780072063 A CN201780072063 A CN 201780072063A CN 109983440 A CN109983440 A CN 109983440A
Authority
CN
China
Prior art keywords
processing element
data
context data
subset
program task
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.)
Granted
Application number
CN201780072063.XA
Other languages
English (en)
Other versions
CN109983440B (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 CN109983440A publication Critical patent/CN109983440A/zh
Application granted granted Critical
Publication of CN109983440B publication Critical patent/CN109983440B/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/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
    • 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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/461Saving or restoring of program or task context

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)

Abstract

数据处理装置包括:一组两个或更多个处理元件,被配置来执行程序任务的处理指令;所述处理元件被配置为提供与由该处理元件执行程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理元件或另一处理元件提供的上下文数据;其中,用于执行程序任务的所述组中的下一处理元件被配置为:从前一处理元件接收所述上下文数据的第一子集来执行该程序任务,并且使用所述上下文数据的所述第一子集开始执行该程序任务;并且其中,所述下一处理元件被配置为:在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。

Description

数据处理
技术领域
本公开涉及数据处理。
背景技术
在一个或多个互连的处理元件的布置中,可由处理元件在连续的部分中执行的程序任务(例如线程)可能在其中散布了其他程序任务的执行部分。执行可以从一个处理元件传递到另一处理元件。为了实现这一点,可能会发生被称为上下文切换(contextswitching)的过程。
在上下文切换中,每个处理元件被配置为:在由该处理元件执行程序任务后,保存与该程序任务相关的上下文数据;并且在恢复对该程序任务的执行时,加载先前由该处理元件或所述处理元件中的另一处理元件保存的上下文数据。
发明内容
在示例性布置中,提供了一种数据处理装置,该数据处理装置包括:
一组两个或更多个处理元件,被配置来执行程序任务的处理指令;
所述处理元件被配置为在由该处理元件执行程序任务之后提供与该程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理元件或另一处理元件提供的上下文数据;
其中,用于执行程序任务的所述组中的下一处理元件被配置为:从前一处理元件接收所述上下文数据的第一子集来执行该程序任务,并且使用所述上下文数据的所述第一子集开始执行该程序任务;并且
其中,所述下一处理元件被配置为:在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
在另一示例性布置中,提供了一种数据处理装置,该数据处理装置包括:
一组两个或更多个处理模块,用于执行程序任务的处理指令;
所述处理模块能够操作以在该处理模块执行程序任务之后提供与该程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理模块或另一处理模块提供的上下文数据;
其中,用于执行程序任务的所述组的下一处理模块能够操作以从前一处理模块接收所述上下文数据的第一子集来执行该程序任务,并使用所述上下文数据的第一子集开始执行该程序任务;并且
其中,所述下一处理模块能够操作以在由该程序模块执行程序任务期间,接收所述上下文数据的剩余的第二子集的一个或多个项。
在另一示例性布置中,提供了一种方法,该方法包括:
在用于执行程序任务的一组两个或更多个处理元件中的前一处理元件执行程序任务之后,该组中的下一处理元件接收与执行该程序任务有关的上下文数据的第一子集,并且使用上下文数据的第一子集开始执行程序任务;以及
所述下一处理元件在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
本技术的另外的相应方面和特征由所附权利要求限定。
附图说明
仅通过示例的方式,参考附图中所示的实施例,将进一步描述本技术,在附图中:
图1示意性地图示了数据处理装置;
图2示意性地图示了由处理元件进行的任务切换;
图3是图示任务执行的示意图;
图4至6示意性地图示了调度电路的实施方式;
图7a至7c示意性地图示了处理元件;
图8是示意性地图示任务切换的流程图;以及
图9是图示上下文数据的传输的示意性流程图;
图10示意性地图示了对上下文数据的存储器地址分配;
图11示意性地图示了存储器区;
图12至14是图示上下文数据的传输的示意性流程图;
图15和16是图示在一组处理元件之间建立一组公共上下文数据的示意性流程图;以及
图17是图示一种方法的示意性流程图。
具体实施方式
在参考附图讨论实施例之前,提供了以下实施例的描述。
示例性实施例提供了数据处理装置,该数据处理装置包括:一组两个或更多个处理元件,被配置来执行程序任务的处理指令;所述处理元件被配置为提供与由该处理元件执行程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理元件或另一处理元件提供的上下文数据;其中,用于执行程序任务的所述组中的下一处理元件被配置为:从前一处理元件接收所述上下文数据的第一子集来执行该程序任务,并且使用所述上下文数据的所述第一子集开始执行该程序任务;并且其中,所述下一处理元件被配置为:在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
该布置的优点是可以快速启动程序任务的执行(不需要在执行开始之前传输所有上下文数据),但在执行期间,仍需要的任何上下文数据项都可以由下一处理元件进行传输。例如,可以使用所谓的推送和所谓的拉取机制的组合来提供上下文数据的传输。在一些示例中,可以将上下文数据的初始部分推送到下一处理元件,并且可以通过拉取机制在下一处理元件的激励下由下一处理元件获取剩余部分中的至少一些。传输机制的示例是使用下面讨论的相干布置,例如包括处理器寄存器作为相干端点
在至少一些示例中,以下各项中的一项或多项被配置为在该处理元件执行所述程序任务期间发起所述上下文数据的所述第二子集的所述一个或多个项的传输:(i)所述下一处理元件;(ii)所述前一处理元件;(iii)调度器(硬件或软件);和(iv)监管所述装置的至少一些处理操作的操作系统。该布置允许下一处理元件请求(例如,作为拉取数据传输机制)在执行期间需要的上下文数据项。
所述上下文数据的所述第二子集可以包括所述处理元件执行一种或多种类型的程序指令所需的配置数据(例如,指示架构和物理方面之间的映射的寄存器映射数据,例如寄存器);并且所述下一处理元件被配置为响应于所述下一处理元件开始执行所述一种或多种类型的程序指令中的程序指令,来发起所述配置数据的传输。例如,所述下一处理元件可以被配置为暂停执行所述一种或多种类型的程序指令中的程序指令,直到所述配置数据被接收到为止。如所提到的,可能有用的示例是所述配置数据包括定义所述处理元件的架构和物理方面(例如寄存器)之间的映射的映射数据。
在至少一些示例中,所述下一处理元件被配置为在执行所述程序任务之前经由硬件为介质的传输接收所述上下文数据的所述第一子集。
用于传输上下文数据的示例性技术是借助于以下方式的:相干存储器电路存储能够由每个所述处理元件访问的数据的一个或多个副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;其中,程序任务的所述上下文数据由所述相干存储器电路中的存储器区域存储;并且其中,每个处理元件被配置为在该处理元件执行程序任务时有与该程序任务相对应的存储器区域的独占所有权(例如独占写入访问)。
尽管可以使用诸如缓存存储器之类的单独存储器,但在至少一些示例中,所述相干存储器电路包括每个处理元件处的一个或多个处理器寄存器;并且每个处理元件被配置为在所述一个或多个处理器寄存器中存储由该处理元件使用的上下文数据的至少一部分。
在至少一些示例中,所述相干存储器电路被配置为分配由一个或多个地址的相应组表示的存储器支持寄存器区的控制;并且所述处理元件进行独占控制的所述存储器区域包括所述存储器支持寄存器区中的一个或多个。
在示例性布置中,选择电路(例如,由前一处理元件实现的)可以被配置为选择所述上下文数据的所述第一子集中的至少一些,以由所述前一处理元件传输到所述下一处理元件。这可以允许已知、考虑或检测到与下一处理元件相关的上下文数据优先传递给下一处理元件。检测要发送哪些上下文数据的示例性方式是将选择电路配置为响应于检测到与所述上下文数据相关联的成本函数而选择所述第一子集中的至少一些,例如通过检测所述前一处理元件对上下文数据项的访问,并且响应于所检测到的访问选择所述上下文数据的所述第一子集中的至少一些。例如,所述选择电路可以被配置为选择所述上下文数据的所述第一子集中的至少一些作为上下文数据的一个或多个最多访问项。
在至少一些示例中,替代刚刚描述的选择和/或推送机制,或对其附加地(例如,在第一子集包括预定数量的数据,以便每个这样的机制能够提供第一部分中的一些),所述下一处理元件可以被配置为执行一个或多个加载指令,所述加载指令被配置为执行以下操作中的一个或两个:获取所述上下文数据的第一子集的一个或多个项;以及获取所述上下文数据的第二子集的一个或多个项。这些布置可以允许快速发起加载上下文数据。刚刚提及的组合技术可以提供使用加载指令的技术的优点,其优点是由选择电路提供技术。
在至少一些示例中,可以根据应用于组中每个处理元件的通用定义设置要包含在上下文数据中的数据项。这可以在不同的处理元件之间提供上下文交换。示例涉及每个处理元件具有相应的关联的格式定义数据,所述相应的关联的格式定义数据用于定义数据项的一个或多个集合,以包含在所述上下文数据中;所述装置包括格式选择电路,所述格式选择电路用于将每个所述处理元件的所述格式定义数据传送给所述处理元件中的其他处理元件,并且响应于每个所述处理元件的所述格式定义数据,确定一组公共数据项以包含在所述上下文数据中。在至少一些示例中,每个处理元件的所述格式定义数据定义的数据项的集合指示该处理元件的处理能力的集合。
另一示例性实施例提供了一种数据处理装置,该数据处理装置包括:
一组两个或更多个处理模块,用于执行程序任务的处理指令;
所述处理模块能够操作以在该处理模块执行程序任务之后提供与该程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理模块或另一处理模块提供的上下文数据;
其中,用于执行程序任务的所述组的下一处理模块能够操作以从前一处理模块接收所述上下文数据的第一子集来执行该程序任务,并使用所述上下文数据的第一子集开始执行该程序任务;并且
其中,所述下一处理模块能够操作,以在由该程序模块执行程序任务期间,接收所述上下文数据的剩余的第二子集的一个或多个项。
另一示例性实施例提供了一种方法,该方法包括:
在用于执行程序任务的一组两个或更多个处理元件中的前一处理元件执行程序任务之后,该组中的下一处理元件接收与执行该程序任务有关的上下文数据的第一子集,并且使用上下文数据的第一子集开始执行程序任务;以及
所述下一处理元件在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
现在参考附图,图1示意性地图示了数据处理装置,该数据处理装置包括:多个处理元件(如数据处理节点20、30、40的示例)和连接到多个数据处理节点的互连电路50。互连电路包括数据路由电路60和如下讨论的相干控制器70,该数据路由电路60用于控制和监控各种数据处理节点之间的数据处理事务。
数据处理节点10…20可以包括各种类型的节点,例如:处理元件,例如CPU(中央处理单元,作为数据处理元件的示例)或CPU群集,可能具有相关联的缓存存储器;存储器;外围组件,例如输入/输出组件、直接存储器访问(DMA)设备等等。在本示例中,它们是处理元件。然而,本实施例设想仅具有一个处理元件和缓存存储器的布置,以及具有多于一个处理元件的布置。事实上,本布置的特征是,在使用中,处理元件和/或缓存存储器设备可以添加到互连布置(例如,通过新连接或新启用来操作(例如通电、复位等)),或者可以从互连布置中去除(例如,物理地从互连布置中去除或者逻辑地去除,例如通过断电)。
在本示例中,每个处理元件与缓存存储器22、32、42相关联。缓存存储器本地存储数据副本和能够对数据副本进行快速访问,例如保存在较高级别的存储器80(例如主存储器或较高级别的缓存存储器)中的数据。
其他处理或数据处理资源90也可以连接到互连电路50。
图1的数据处理装置可以被实施为单个集成电路,例如作为所谓的片上系统(SOC)或所谓的片上网络(NOC)。替代地,图1中的数据处理装置可以被实施为多个分立和互连系统。
图1的数据处理设备是一组处理元件可以如何互连的仅一个示例。在其他示例中,处理元件通过总线、网络、存储器、RDMA(远程直接存储器访问,允许一台计算机的处理元件访问另一台计算机的另一处理元件的存储器,而不涉及任一设备的操作系统)或等效设备进行互连。因此,互连电路50只是指示各种类型的联网、互连、总线或互连处理元件的其他电路的示例,以允许以本文所述的方式交换数据和切换任务执行。
在示例性实施例中,互连电路可以是所谓的缓存相干互连电路的示例。这里,术语“相干”是指遍及整个系统存储的相同数据的多个副本之间保持正确的关系。例如,数据可以由数据处理节点之一(例如节点20)存储在缓存存储器设备22中。其他节点(例如节点30、40)可以是具有它们本身相应的缓存32、42的处理元件(取决于处理元件操作的性质),这些缓存32、42可以存储一个或多个数据副本,这些数据副本也保存在缓存存储器22中。在由一个节点对这样的信息进行数据处理访问的情况下,需要确保访问节点正在访问存储信息的最新版本,并且如果它对存储信息进行了任何更改,则其他版本本身将被正确更改或其他版本将被删除或失效。一般来说,缓存22、32、42和相干控制器70提供相干存储器电路,该相干存储器电路存储能够由每个处理元件访问的一个或多个数据副本(例如,经由互连电路50连接的每个处理元件),使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致。
在至少一些示例中,相干存储器电路包括一个或多个相干缓存存储器(22、32、42),并且相干存储器电路被配置为存储能够由每个处理元件访问的多个数据副本。
在上文讨论的将设备添加到互连布置或从互连布置中减去设备的示例性情形中,相干控制器70可以被布置为:通过将设备添加到所谓的相干域并使其与互连布置中的其他设备进行相干操作来对添加该设备作出反应,并且通过将相干域重新配置为在没有该设备的情况下进行操作来减去该设备作出反应。这种重新配置可能涉及首先确保(在设备被去除之前)该设备上的任何数据更新都适当地传播到其他相干设备和/或更高级别的存储器。
数据路由电路60和/或相干控制器70包括提供相干操作的各种机构和电路。下面将讨论这些示例。
图1中的布置中的示例性处理元件可以参考存储在相关联的缓存存储器中的数据,其中处理元件和缓存存储器都与互连电路通信。缓存存储器可以存储保存在较高级别的存储器80中的信息副本。在一些实例中,例如,如果在存储器读取操作期间已对副本进行缓存,则两个副本可以相同。在其他实例中,例如,如果由特定处理元件(例如处理元件20)针对缓存22中存储的数据项的副本执行数据写入操作,则可能出现导致副本彼此不同的情况。在多个缓存的系统中,需要确保在访问数据项的一个版本之前,已针对其他版本实施的任何变化都对于所有副本完全实施。
因此,与缓存相干功能相关联的逻辑的作用是确保在发生数据处理事务之前,如果要访问的数据项的版本已过期(因为对同一数据项的另一个副本做出了修改),则首先将要访问的副本进行更新。类似地,如果数据处理事务涉及修改数据项,那么缓存相干逻辑将避免与数据项的其他现有副本发生冲突。实现这一点的技术包括(例如)使用所谓的“探听滤波器”。
术语“探听滤波器”是一个历史术语,并且在这里用于指代形成具有相关联的“目录”的相干控制器70的部分的控制设备,其中目录存储指示哪些数据存储在哪个缓存中的信息,并且探听滤波器本身至少有助于处理对经缓存的信息的数据访问,以提供缓存相干功能。
例如,具有寄存器和如上所讨论的目录的探听滤波器形成与路由电路60相关联的相干控制器70的部分,所述寄存器指示当前作为相干控制布置的部分(在其他情况下被称为在相干系统中或在相干域中)的那些缓存存储器。路由电路60与一个或多个缓存存储器进行数据通信。
探听滤波器至少处理进程的一部分,在该进程下,当数据处理节点20…40中的任何处理数据节点旨在访问或修改作为缓存行存储在任何缓存存储器中的数据时,该节点获得这样做的权限。作为此进程的部分,探听滤波器检查是否有任何其他缓存存储器具有要修改的行的副本。如果在其他缓存存储器中存在任何其他副本,则需要清除这些副本并使其失效。如果这些副本本身包含对该行中存储数据的修改,那么至少在一些情况下,相干控制器60(或探听滤波器本身)指导缓存存储器将该行写回主存储器。
在由节点针对缓存存储器中存储的数据进行读访问的情况下,请求读取的节点20…40有权访问经缓存的数据的最新正确版本是重要的。相干控制器70审查此进程,从而如果另一缓存具有最近修改过的所需数据版本,则该另一缓存会写回修改过的版本和/或转发修改过的版本的副本,以便在当前请求的节点上进行缓存。
因此,包括探听滤波器的相干控制器70提供了缓存相干控制器的示例,该缓存相干控制器被配置为在缓存存储器之间对以下操作进行协调:在目录指示一缓存存储器正在对存储器地址进行缓存时由缓存存储器中的另一缓存存储器对该存储器地址进行访问。探听控制器存储或提供目录,例如上面提到的目录,从而指示:对于由可在相干缓存结构中连接的一个或多个缓存存储器的组中的一个或多个缓存存储器缓存的存储器地址,哪些缓存存储器正在对这些存储器地址进行缓存。
装置可以结合操作系统来操作,所述操作系统对装置的至少一些处理操作进行审查。
图2示意性地图示了由处理元件(例如图1的处理元件20…40之一)进行的任务切换。
一般来说,程序功能是通过执行程序代码来执行的,并且在这里被称为“任务”。任务的示例是处理线程。任务的执行可以在特定的时间段内进行,然后处理元件可以切换到可能在另一时间段内返回第一任务之前执行不同的任务的执行,依此类推。
在这些时间段之间,会发生所谓的上下文切换。上下文切换涉及在特定任务执行结束时保存处理元件的当前状态,并且恢复处理元件的先前保存的状态,以为执行另一任务的时间段做准备。总的来说,这会给出这样的印象:处理元件一次处理多个程序或“线程”,而实际上它在间歇性地执行每个任务的一小部分。
在图2的示例中,处理元件在时间段200内执行第一个任务(任务A)。然后是短时间段210,在此期间进行上述上下文切换。在这里,处理元件在由处理元件执行该程序任务之后保存与程序任务A相关的上下文数据,并且在时间段220内恢复执行下一任务(任务B)时加载先前由该处理元件或另一处理元件保存的上下文数据。
因此,可以看出,特定处理元件可以在一时间段内执行特定任务,但在保存了与该任务相关的上下文数据之后,该任务的执行可能会在随后的时间段内被互连的处理元件中的另一处理元件占用。
在时间段220中任务B的执行结束时,在时间段230内发生上下文切换,随后在时间段240内再次执行任务A,本示例中的后续任务是时间段250中的任务C和时间段260中的任务B。
图2的布置与处理元件之一有关。在图1的系统中,有三个示例性处理元件,并且每个处理元件都可以按照所示的方式在任务之间进行切换。特定任务可以通过任何处理元件上接续(但不一定相连)的时间段的运行来执行,所保存的上下文数据用于实现任务从一个处理元件切换到另一处理元件。
要注意,在一些示例中,“下一处理元件”可以是与“前一处理元件”相同的处理元件。任务可以通过超时、内部或外部信号(例如中断)、调度器命令、操作系统命令(由审查装置的至少一些处理活动或操作的操作系统)等在一个处理元件处终止。
图3是以参考图2所述的方式执行任务的一些基本方面的示意性流程图。
在步骤300处,任务被分配给特定的处理元件。在一个示例中,任务的分配是通过调度电路来执行的,这将在下面进行进一步讨论。
在步骤310处,处理元件加载与该任务相关的先前保存的上下文数据(由前一处理元件保存以执行该任务,无论前一处理元件是否与即将执行该任务的处理元件相同),并且在步骤320处,执行该任务一段时间。
要注意,步骤310、320可能会在时间上重叠。响应于接收到哪个下一处理元件可以开始执行任务,为了开始任务的执行,可能需要一定量的上下文数据,但是上下文数据的其他项可以在执行开始后加载,或者甚至可以延迟到需要它们时再加载(上下文数据的所谓的“懒”加载)。这种布置可以提供可能更快的上下文切换,因为它可以减少在任务执行可以开始之前必须加载的上下文数据的量,因此允许比在开始执行之前首先加载每个可能的上下文数据项的情形更快地开始执行。
例如,任务的执行可以继续直到接收到处理器中断为止,该处理器中断可能是由于外部中断情形所引起的,也可能是对计时器的响应,该计时器指示分配给执行该任务的特定实例的时间段已经结束。在步骤330处,该任务的执行实例完成,并且在执行该程序任务之后,在步骤340处保存上下文数据。然后,可以由该处理器针对要执行的下一任务重新启动图3的过程。
图4至6示意性地图示了调度电路的示例性实施方式。
在图4至6中的每个图中,显示了三个示例性处理元件20、30、40。图1的电路的其他部分没有显示,因为该描述仅与处理元件之间的交互有关。
由处理元件执行的任务的调度可以以各种方式执行,例如至少部分地在审查系统的处理资源的操作系统的控制下执行。简而言之,在图4中,调度任务和选择上下文格式的操作(将在下面进一步讨论)分布在连接到当前网络的所有处理元件之间,如虚线部分24、34、44所示,指示每个处理元件的一部分功能被提供来执行调度进程。
在图5中,一个处理元件(在本示例中是处理元件20)专用于提供调度功能。
在图6中,提供连接到图1互连50的单独设备95,以给出调度功能。
因此,图4至6提供了硬件或软件调度的示例。
图7a示意性地图示了处理元件700,例如用作处理元件20、30、40之一。这里只显示了与当前描述相关的处理元件的一些特性。本领域技术人员将理解处理元件可以包括图7中未显示的其他特征。
处理元件包括指令解码器710、一个或多个寄存器720、执行管线730和专用的计算单元(例如算术逻辑单元或浮点单元)740。还显示了与处理元件相关联的缓存存储器750。
虚线760指示与该处理元件相关联的相干端点的范围。在图7a的示例中,至少一些寄存器720包含在相干机制中。事实上,所有寄存器都可以包括在内;方框720的一部分被包含在虚线760内的图示仅仅是为了示出并非所有寄存器都必须这样被包括在内。
先前提出的布置没有将处理器寄存器包括在相干机制中。本发明的实施例明确地提供了这样的特征。在相干机制中包括的寄存器的效果示例如下。前一处理元件可以发起对相干机制的写入(通常,或者至少可以由缓存存储器支持)作为相干操作的一部分,这可以使在该处理元件处保存的寄存器的内容与该数据在其他地方访问的其他副本同步,例如在下一处理元件的对应寄存器处。这就是如何实现推送传输。类似地,在下一处理单元处执行的加载指令(例如,响应于寄存器请求而在微结构上执行)可以加载由这些寄存器表示的存储器地址的内容,再次导致(通过相干机制)将由前一处理元件保持的数据传输到下一处理元件
图7b示意性地图示了另一布置,其中寄存器不被包括在相干端点内。
图7c示意性地图示了另一布置,其中寄存器被包括在相干端点内。
图8是图示任务执行的示意性流程图,提供了比上面讨论的图3的流程图更详细的内容。
在图8中,更详细地讨论了存储和检索上下文数据的过程。具体而言,上下文数据存储在上面讨论的相干存储器结构中。处理任务的处理元件在任务执行期间控制存储器区域,例如所谓的缓存行;处理元件从该缓存行读取上下文数据,并在执行任务之后将上下文数据写回该缓存行。因此,缓存行的控制被部分地用于管理对执行任务的特定实例的调度和控制。与程序任务对应的存储器区或缓存行被用于或配置为存储与该程序任务相关的上下文数据。每个处理元件响应于由该处理元件暂停的程序任务而被配置为将与该程序任务相关的上下文数据保存到相干存储器电路的相应存储器区域。
参考图8,在步骤800处由调度电路将任务调度到处理元件(例如,在操作系统的控制下)。在步骤810处,处理元件控制与该任务的上下文数据相关联的缓存行或其他存储器区域。例如,这可以涉及处理元件暂时地对相干域中的该缓存行(或更通常是与程序任务对应的存储器区域)独占所有权(例如,独占写入访问),而同时至少该处理元件正在执行该程序任务。
在步骤820处,处理元件从该缓存行或其他存储器区域加载上下文数据,在步骤830处执行该任务。如前所述,要注意的是,上下文数据的加载和任务的执行可以在时间上重叠,使得处理元件可以配置为:在加载(至少一些地)上下文数据并恢复程序任务的执行之后,检测该处理元件是否需要由先前执行该程序任务的另一处理元件生成的另外的数据项,以及何时需要这样的另外的数据项以加载或接收这些另外的数据项。另外的数据项可以存储在同一缓存行或存储器区域中,或者可以通过其他存储器区域访问。然而,为了在步骤830开始执行任务而必须在步骤820处加载的上下文数据在受控缓存行中被提供。
在步骤840处,处理元件暂停执行任务。这可能是对程序代码中的断点、下面讨论的时间段指示符842、诸如由处理器接收到的中断之类的信号(外部或内部的)等的响应。在步骤850处,处理元件将上下文数据保存到上面讨论的缓存行,并且在步骤860处,释放对该缓存行的控制。换句话说,每个处理元件被配置为:响应于由该处理元件暂停执行程序任务,释放该存储器区域(对应于该程序任务)的独占所有权。
因此,在恢复执行程序任务(步骤800)时,这些示例中的每个处理元件被配置为对相干存储器电路的存储器区域(在该存储器区域中存储有与该程序任务相关的上下文数据(先前由该处理元件或另一处理元件保存的))有独占所有权(步骤810),并且从该存储器区域加载所存储的上下文数据。
本技术的示例提供了一种机制,通过这种机制,虚拟上下文可以(至少部分地)从一个计算元件“懒散地”迁移到另一计算元件,而不需要一开始就传输完整的文本。在至少一些示例中,这实现了只传输每个上下文所需的状态。
这里,术语“懒散迁移”用于指示,从一个节点传输到另一个节点的数据集合,并非所有的数据集合都是最初传输的,使得其他(尚未传输)的项可以稍后通过发送节点(在所谓的“推送”基础上)主动地或根据由接收者节点(所谓的“拉取”基础)的请求(或“按需要”)或这些的组合来传输。最初的传输实际上可能不包含任何数据,因为所有的数据都是稍后传输的。然而,在至少一些示例中,使用了初始传输和后续(稍后)传输的组合。
如上所讨论的,这些技术在传输上下文信息方面有应用。懒散迁移用于存储器备份的上下文,如上所述,作为按需状态传输机制。
示例性布置的特征是,寄存器中保存的上下文数据可以在上下文交换中保持有效,从而减少了将上下文返回到原始处理元件时重新加载所需数据的需要。换言之,考虑这样一种情况:第一处理元件正在执行程序任务,并且任务被交换到第二处理元件。第二处理元件所需的上下文信息最初或按需传输到第二处理元件。但是,由第一处理元件保持的第二个处理元件不需要的其他上下文信息(在一般级别上,也就是说,第二个处理元件从不需要它,或者对于第二处理元件执行程序任务的特定实例来说是单纯不需要的)。此上下文信息可以保留在第一处理元件处,并受其控制,使得如果第一处理元件被分配到程序任务的下一或后续执行实例,则保留的上下文信息可以在该执行实例中使用。
示例性布置的另一特征是,实际上只传输当前执行的处理元件所需或估计需要的上下文数据。这可以减少(i)为接收方处理元件传输足够的上下文数据以开始处理程序任务所需的时间,以及(ii)涉及原始和接收方处理元件的数据流量中的一个或两个。
图9示意性地图示了所谓的懒散迁移进程。图9的左列表示原始或“前一”处理元件的操作(例如刚刚或先前执行程序任务的处理元件),并且图9的右列表示下一或后续处理元件执行程序任务的操作。图9所示的示例与按需懒散迁移有关。
在步骤900处,前一处理元件将一些上下文数据(也就是说,上下文数据总可用集合的子集,或者换句话说,一些但不是上下文数据总可用集合全部)推送到下一处理元件。下面将参考图12至14讨论该步骤的操作的各种替代方案以及选择在步骤900处发送上下文数据的方式。
在步骤910处,下一处理元件使用在步骤900处发送的上下文数据来开始执行程序任务。
在步骤920处,下一处理元件检测到它需要来自前一处理元件的另外的上下文数据。它(例如,经由相干网络)发起对这样的额外上下文数据的请,在步骤930处,前一处理元件或相干存储器系统对此做出响应(注意,在相干存储器网络中,对请求设备来说,数据当前保存在何处不重要),所请求的上下文数据被发送到下一处理元件,在步骤940处,下一处理元件存储该数据。注意,在下一处理元件执行程序任务期间,步骤920、930、940可以多次执行(如虚线箭头所示)。
注意,在执行任务期间,如参考步骤920、930、940所讨论的,可以由以下项中的任何一个或多个来发起对另外的上下文数据的传输:(i)下一处理元件(也就是说,正在执行任务的处理元件);(ii)前一处理元件((i)或(ii)由如上所讨论的相干机制来处理);(iii)调度器;或(iv)监管装置的至少一些处理操作的操作系统。在(iii)或(iv)的情况下,这些布置可以经由上文讨论的相干机制发起传输,或者可指示处理元件之一来这样做。因此,步骤920实际上可以是由“前一PE”(图9左侧)或另一实体发起的。因此,图9的示例性布置只是示例。
在上下文分配上,存储器地址空间针对上下文格式而被预先分配,该上下文格式是在参与的处理元件之间被指定或约定的。处理元件之间的上下文格式约定将在下面进一步讨论。这种预先分配的效果是,形成上下文数据一部分的寄存器可以从上下文基址的简单偏移寻址。在至少一些例子中,相对于整体地址空间,预先分配的空间很小,即使考虑到更大的SIMD(单指令、多数据)寄存器也是如此。至少在示例性布置中,预先分配比通过OS进行的许多较小的动态分配更快。这并不排除动态执行分配的能力,但是示例性实施方式使用单个预先分配。
因此,根据图9的方法进行操作的图1的装置提供了一种数据处理装置的示例,该数据处理装置包括:两个或更多个处理元件的组,被配置为执行程序任务的处理指令;所述处理元件被配置为在该处理元件执行程序任务之后提供与该程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理元件或另一处理元件提供的上下文数据;其中,用于执行程序任务的所述组中的下一处理元件被配置为:从前一处理元件接收所述上下文数据的第一子集(例如在步骤900、910处),以执行该程序任务,并且使用所述上下文数据的所述第一子集开始执行该程序任务;并且其中,所述下一处理元件被配置为:在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项(例如,经由步骤920、930、940)。
作为所谓的懒散拉取机制的示例,下一处理元件被配置为在由该处理元件执行程序任务期间发起上下文数据的第二子集的一个或多个项的传输。然而,在其他示例中,以下项中一个或多个可以发起传输:(i)下一处理元件;(ii)前一处理元件;(iii)调度器;和(iv)监管装置的至少一些处理操作的操作系统。
图10示意性地图示了为存储上下文数据而预先分配的存储器地址空间。存储器地址区域由基址1000定义。约定的或指定的上下文数据项(例如寄存器的内容或存储在存储器中的其他数据)是以预定顺序相对于基址排列的,以便它们在使用中可以通过相对于基址的相应偏移1010来指定。
如以上参考图7a至7c所讨论的,相干系统与上下文数据存储的交互使得在一些示例中,至少一些处理器寄存器被当作所谓的相干端点来处理。在其他示例中,处理器寄存器数据可以反映在缓存存储装置中,其本身被作为相干端点来处理。在这些示例中,相干存储器电路包括每个处理元件处的一个或多个处理器寄存器;并且每个处理元件被配置为在一个或多个处理器寄存器中存储由该处理元件使用的上下文数据的至少一部分。
为了进行下面的讨论,可以将上下文数据视为多个存储器支持寄存器“区”。这里,术语“区”用于表示同一相干单元内的一组上下文字段,也就是说是,响应于相干所有权请求而将作为存储器单元交换的存储器地址空间区域。区可以被形成为一个或多个存储器地址。图11示意性地图示了两个这样的区(区0和区1)的示例。每个区在程度上对应于相干系统中缓存行的大小。在示例中,缓存行大小为32字节,每个处理器寄存器r0…r7为8字节。因此,如图所示的区包含四个这样的处理器寄存器。
这些区被映射到分配给上下文的存储器空间中的位置或偏移,以便处理元件知道适用于每个区(或每个寄存器)的偏移。
当下一处理元件请求独占访问相干系统内的特定行(可能表示映射到前一处理元件处的处理器寄存器的区)时,前一处理元件的控制无效,并且数据被拉取到下一处理元件。因此,在本公开的实施例中,相干机制可以方便地为从一个处理元件的寄存器到另一处理元件的寄存器的上下文信息提供硬件为介质的数据传输机制。在示例性实施例中,特定寄存器的请求(作为上下文数据的一部分)映射到一个区,如果该区当前不在寄存器文件中,则作为相干请求被转发。然而,如果寄存器被映射或备份到缓存行(这些缓存行本身受相干机制的约束),那么这个进程仍然可以工作,但是通过寄存器本身构成相干端点的一部分,这个布置可以方便地有效操作。
在这些示例中,相干存储器电路被配置为分配对由一个或多个地址的相应组表示的存储器备份寄存器区(如上所讨论的区)的控制;并且处理元件独占控制的存储器区域包括存储器支持寄存器区中的一个或多个。
关于懒散迁移技术的各种不同选项现在将参考图12至14通过示例来描述。
第一示例性布置
在第一示例性布置中,原始或前一处理元件检测(例如,在持续的基础上,例如在由该处理元件执行程序任务的最新实例期间)构成上下文数据的一部分或有资格构成上下文数据的一部分的哪个寄存器被最频繁写入。对此,可以使用构成处理元件的一部分的所谓的写入计数器。
作为检测最频繁写入的寄存器的一种替代方案,检测可以替代地由这些寄存器中最频繁访问的寄存器(同样,例如,在执行程序任务的最近一段时间内)或在其他示例中由寄存器中最频繁读取的寄存器进行。因此,尽管在本讨论中提及了最频繁写入的寄存器,但应注意,该术语可在下面的讨论中由刚才提到的其他术语之一来替换。
这些布置提供了使用选择电路的示例,所述选择电路被配置为选择上下文数据的第一子集中的至少一些,以便由前一处理元件传输到下一处理元件。例如,选择电路可以由前一处理元件来实施。在至少一些示例中,选择电路被配置为响应于检测到与上下文数据相关联的成本函数来进行选择。例如,它可以检测由前一处理元件对上下文数据项的访问,并且响应于所检测到的访问来选择上下文数据的第一子集中的至少一些。例如,选择电路被配置为选择上下文数据的第一子集中的至少一些作为上下文数据的一个或多个最多访问的项,其中所检测到的访问可能是写入访问(因此写入访问的数量可以指示成本函数)。
在至少一些示例中,预定数量的数据传输被分配用于最频繁写入的寄存器的传输以作为上下文数据的推送传输。因此,在至少一些示例中,寄存器被选择以写入频率的降序进行推送转换,这从最频繁写入的寄存器开始,直到预定数量的数据传输被填充为止。
该过程在图12中被示意性地示出,其中,在步骤1200处,原始(前一)处理元件检测到如上所讨论的最频繁写入的寄存器,并且在步骤1210处,对应于最频繁写入的寄存器的上下文数据作为推送传输被发送到下一处理元件。
在这种布置中,可能最常用的数据首先到达下一处理元件,例如使得能够开始计算(例如在上面提到的步骤910处)。
可以逐区执行传输。
第二示例性布置
在第二可选布置中,下一处理元件执行加载或预提取指令或具有类似效果的指令,以便首先从原始(前一)处理元件提取上下文数据的某些项或区。例如,这些指令可以由调度器发起,并且可以基于由原始(前一)处理元件提供给调度器的信息。例如,一组区可以由保留的存储器区域中的前一处理元件指示。
在至少一些示例中,以下加载指令(例如,按此顺序)插入到下一处理元件的指令流中:
·预提取+加载,指向上下文数据
·预提取+加载,指向上下文所使用的数据
参考图13,在步骤1300处,下一处理元件对初始上下文数据执行预取/加载指令,并且在步骤3130处,前一(原始)处理元件发送所请求的上下文数据。
这提供了一个示例,在该示例中下一处理元件被配置为执行一个或多个加载指令,加载指令被配置为执行以下操作中的一个或两个:
获取上下文数据的第一子集的一个或多个项;以及
获取上下文数据的第二子集的一个或多个项。
这种布置具有尽快开始加载所有必要数据的特征,但在解决所有负载之前可能会经历中止。
第三示例性布置
第三可选布置使用第一和第二可选布置的特征。换言之,它将加载与预提取指令以及最频繁写入的寄存器区的数据结合在一起。在至少一些示例中,首先和/或以更高的优先级执行第二布置(预提取指令),从而(在第一子集包括预定数量的数据的示例中)通过基于根据最频繁写入的寄存器的区或区的子集的推送数据,形成初始上下文数据的任何剩余数据传输能力。
这种布置的示例在图14中被示意性地示出,其中步骤1400通常对应于图13的步骤1300;步骤1410通常对应于步骤1310;步骤1420通常对应于图12的步骤1200,尽管仅与所讨论的数据传输能力的平衡有关,并且步骤1430通常对应于步骤1210。
这种步骤可以缓解上述第二种选项的一些潜在的高启动时间。
上面描述的所有选项都表示初始推送机制(无论是由前一处理元件和最频繁写入分析发起的,还是由预提取/加载指令发起的,或者是由两者发起的)和随后的懒散推送机制的组合。其原因是,尽管懒散拉取有助于减少数据流量,但交换机制可以通过使用初始推送来维持执行程序任务的下一处理元件的低启动延迟。推送机制可以在前一个处理元件的时间定量完成并且节点或处理元件的硬件调度实体已将上下文分配给下一处理元件后立即发生。当上下文执行时,执行该上下文的处理元件对该上下文的后备存储的一部分(或全部)具有相干所有权。
下面通过示例提供对上下文交换的各个阶段的描述。
上下文换入——从线程空置开始
上下文处于“被调度”的状态,即在上下文处于非空的最高优先级运行队列的运行队列前面时,调度器将其激活。下一处理元件(上下文被调度给该元件以执行)可以从调度器访问相应的上下文基指针。下一处理元件处的新生处理器“线程”还没有任何实际的线程状态;也就是说,它还不知道程序计数器(PC)或有任何控制位。
因此,在示例性布置中,上下文格式在单个区中分配这些字段,逻辑上首先是要进行传输的。对于无序处理元件,操作中交换的“操作中心”是重命名阶段。对于顺序处理元件,交换操作集中在执行/解码后微操作注入阶段。换言之,这些相应的处理器阶段是处理电路中的位置示例,在处理电路中,可以通过发起拉取传输来检测(当前尚未提供的)上下文数据的需求并对其作出反应。
下一处理元件将提取具有必要的上下文值的区,这些值始终是取得进展(特权、存储器管理单元(MMU)设置、PC)所必需或至少期望的。以这种方式,下一处理元件将代表其本身与存储器进行交互。要做到这一点,它可以实施微代码,微代码使用加载存储队列(LSQ)将数据加载到特权机器状态缓冲区,就像示例性实施例一样。在这种示例中,下一处理元件被配置为在执行程序任务之前经由硬件为介质的传输接收上下文数据的第一子集。
在接收到之后,这些值将传播遍及下一处理元件的微架构,因为它们通常是本地化的。例如,PC可以传播到处理元件前端、解码特权、VM(虚拟存储器)机器(TLB(翻译查询缓冲区)、表漫游器)的特权和MMU设置。PC也被写入寄存器文件。
此时,可以开始与程序任务相关的指令提取。一旦经解码的指令到达重命名阶段,重命名表将发现没有物理寄存器被映射到一些架构寄存器。首先,这适用于所有寄存器。但是,由于处理元件知道调度器的上下文指针,因此它可以发出加载以从上下文存储中提取该寄存器的值。在这些示例中,上下文数据的第二子集包括由处理元件执行一种或多种类型的程序指令所需的配置数据(例如上文讨论的寄存器映射数据);并且下一处理元件被配置为响应于下一处理元件开始执行一种或多种类型的程序指令中的程序指令来发起配置数据的传输。在至少一些示例中,例如在需要寄存器映射来完成指令执行的示例中,下一处理元件被配置为暂停执行一种或多种类型的程序指令中的程序指令,直到配置数据被接收到为止。如所提及的,在至少一些示例中,配置数据包括定义处理元件的架构和物理方面(例如寄存器)之间的映射的映射数据。
作为一种潜在的改进,处理元件可以(例如,在微代码中)使用微架构特征来一次加载整个区,或者(如果使用该机制的话)不管LSQ的数据宽度限制如何。
当进程继续执行时,活动寄存器的工作集合将被提取并分配给物理寄存器。加载寄存器文件所需的操作是一种暂时的瞬态现象。在短暂的流量爆发后,处理器本身自动处理架构上下文切换,执行继续正常进行,但在备份存储上增加了相干所有权。但值得注意的是,懒散加载意味着,如果线程没有使用一些寄存器(例如向量寄存器、浮点(FP)寄存器),则这些寄存器将不会被交换。
上面的讨论假定处理元件是无序的,但一般来说,有序处理元件的寄存器访问阶段可以通过以相同的方式使用微操作的内部程序来执行这些操作,而不是对阶段进行重命名。
上下文换入——从在另一处理元件上运行的线程开始
该程序与刚才针对空闲线程描述的情况非常相似,但是当假定有上下文备份存储的相干所有权时,下一处理元件将查找一些区,这些区是由先前执行该上下文的处理元件所有的。
根据相干控制系统的具体实施方式细节,可以将数据直接从前一处理元件传输到下一(活动)处理元件,或者前一处理元件可能必须将值写回缓存存储器,而下一(活动)处理元件从其中读取值。
上下文换出
当线程从处理元件中被去调度(去激活)时,再次为了与本实施例保持一致,不需要处理元件立即做任何事情。由于处理元件正在缓存上下文备份的值,因此它可以继续缓存这些值,除非它被激励或强制刷新这些值。如果处理元件切换到另一线程,物理寄存器压力将强制将一些值写回上下文备份存储。同样,如果线程被迁移到另一处理元件,但在此被立即调度并开始执行,则对上下文存储器区域的其他处理元件要求请求将强制回写,就像缓存一样,因为寄存器文件表示上下文的缓存。最后,如果处理元件旨在进入一种省电模式,就像它可能停止执行线程那样,寄存器文件将被刷新,并且相干所有权将在非活动上下文上被放弃。由于处理器必须跟踪寄存器文件的基指针和其他簿记元数据,因此出于物理资源的原因,它将被激励以为非活动线程写回数据。然而,这可以以比执行活动线程更低的优先级执行,除非必须(例如,通过释放资源)促进(一个或多个)活动线程的进度。
在上述描述中,参考了要包含在上下文中的数据的处理元件之间的约定。图15是图示这个过程的示意图。
在步骤1500处,每个处理元件为其他处理元件提供上下文“版本”,并且在步骤1510处与其他处理元件进行通信。上下文版本可以是上下文数据项的显式列表,这些数据项可由该处理元件使用,或者可以是对此类列表的引用,例如,上下文数据版本号等,其中明确(至少在互连布置中的这些设备之间)定义了该处理元件所需的上下文数据的性质。换句话说,在至少一些示例中,每个处理元件具有相应的关联格式定义数据,以定义一组或多组数据项,以便包含在上下文数据中。
在步骤1520处,例如可以通过格式选择电路(可在一个或多个处理元件处或在与处理元件通信的另一设备处分布或以其他方式提供)得到一组公共的上下文数据,并与每个处理元件通信。在格式选择电路的功能分布在处理元件之间的示例中,这涉及到每个处理元件将其上下文版本传送到其他处理元件。
在步骤1530处,由每个处理元件在任务切换中使用该组公共的上下文数据。然后,这就允许将任务从任何处理元件切换到组中的任何其他处理元件,因为在每个任务切换处都使用公共上下文数据。
因此,在至少一些示例中,每个处理元件具有相应的关联格式定义数据(例如上面讨论的列表或对列表的引用),以定义一组或多组数据项以包含在上下文数据中,并在步骤1510处将其传送到其他处理元件(例如,通过格式选择电路)。格式选择电路处理每个处理元件的格式定义数据与其他处理元件之间的通信,并响应于每个处理元件的格式定义数据确定(在步骤1520处)一组公共的数据项,以包含在上下文数据中。
根据该组公共的上下文数据进行操作可能意味着忽略连接到互连50的处理元件的组中更强大的处理元件的一些高级或特定功能。例如,如果一个处理元件具有一个专用的计算单元,例如协处理器、浮点单元或算术逻辑单元,但其他处理元件没有,那么对于具有该附加功能的处理元件来说,为了能够提供与其他处理元件兼容的上下文数据,可以忽略该功能。在其他示例中,在处理元件功能与约定的上下文数据格式要求之间可能有不匹配的实例中,处理元件可以发起(例如,经由调度器)任务到另一处理元件的迁移。
还应该理解,处理元件可以被从根据该组公共的上下文数据操作的组中排除,在这种情况下,以这种方式操作的处理元件的组被定义为使用公共上下文数据的处理元件。
每个处理元件的数据项的组(由适用于该处理元件的格式定义数据定义)可以指示该处理元件的一组处理能力。例如,这些能力可以包括以下项中的一个或多个:访问一个或多个处理器寄存器的能力;根据一个或多个控制状态进行操作的能力;以及(通过物理存在或通过仿真)提供专用的计算单元功能的能力。格式选择电路被配置为选择由每个处理元件的格式定义数据指示为对所有处理元件公共的数据项,作为该组公共数据项。然而,在一些实例中,只有一些被指示为对所有处理元件公共的数据项被选作在上下文切换期间上下文数据中所使用的一组公共数据项。通过这种方式,可以选择由格式定义数据指示为对所有处理元件公共的那些数据项的子集。此选择可以基于定义一个或多个标准的数据或响应于这些数据来执行,例如,从列表中选择的一个或多个标准包括:定义程序任务暂停或恢复时的最大等待时间的标准;和/或定义要执行的程序任务所需的数据项的集合的标准。
首先考虑到这些示例性标准,程序任务暂停或恢复时的等待时间(通常在单个处理元件的情况下,由图2中的时间段210、230指示)可以取决于要保存和要加载的上下文数据的量。如果减少了上下文数据的量,则保存和加载可能更快。因此,格式选择电路所使用的标准之一可以是在使用中的特定循环中允许的最大等待时间,例如根据上下文数据项的数量或范围与由格式选择电路维护的上下文切换等待时间之间的映射来选择该组公共上下文数据,使得可以在不超过最大允许等待期的情况下对其进行保存和加载。
考虑到其他示例标准,可能是要执行的特定程序任务不需要某些处理功能,例如专用计算单元(例如浮点单元)的处理功能。例如,该标准可以通过程序代码或操作系统设置来设置。如果是这种情况,那么即使与这些特性相关的上下文数据对正在使用的处理元件来说可能是公共的,也可以通过格式选择电路将其从该组公共上下文数据中排除,因为在要执行的特定程序任务的执行中不需要它。
图16示意性地了这个过程,其中,在步骤1600处,格式选择电路检测如上所讨论的一个或多个标准,并且在步骤1610处,格式选择电路响应于这些标准选择一组公共上下文数据。在步骤1600处检测标准可以涉及查询(例如,在主存储器的保留区域中)所存储的定义标准的数据,例如使用可设置数据、操作系统可设置数据、程序可设置数据等。
图17示意性地图示了一种方法。
在步骤1700处,在由前一处理元件执行程序任务之后,由执行该程序任务的两个或更多个处理元件的组中的下一处理元件接收与执行该程序任务有关的上下文数据的第一子集,并且使用上下文数据的第一子集开始执行该程序任务。
在步骤1710处,所述下一处理元件在由该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
在本申请中,“被配置为……”一词用于表示装置的元件具有能够执行所定义的操作的配置。在这种背景下,“配置”是指硬件或软件互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备(例如处理元件12)进行编程以执行所述功能。“被配置为”并不意味着需要以任何方式改变装置元件以便提供所定义的操作。
尽管参考附图已在本文中详细描述了本技术的说明性实施例,但应理解,本技术不限于这些精确实施例,并且可以由本领域技术人员在其中实现各种变化、添加和修改,而不脱离所附权利要求所定义的技术的范围和精神。例如,从属权利要求的特征的各种组合可以用独立权利要求的特征来组成而不脱离本技术的范围。

Claims (20)

1.一种数据处理装置,包括:
一组两个或更多个处理元件,被配置来执行程序任务的处理指令;
所述处理元件被配置为提供与由该处理元件执行程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理元件或另一处理元件提供的上下文数据;
其中,用于执行程序任务的所述组中的下一处理元件被配置为:从前一处理元件接收所述上下文数据的第一子集来执行该程序任务,并且使用所述上下文数据的所述第一子集开始执行该程序任务;并且
其中,所述下一处理元件被配置为:在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
2.根据权利要求1所述的装置,其中,以下各项中的一项或多项被配置为在该处理元件执行所述程序任务期间发起所述上下文数据的所述第二子集的所述一个或多个项的传输:(i)所述下一处理元件;(ii)所述前一处理元件;(iii)调度器;和(iv)监管所述装置的至少一些处理操作的操作系统。
3.根据权利要求2所述的装置,其中:
所述上下文数据的所述第二子集包括所述处理元件执行一种或多种类型的程序指令所需的配置数据;并且
所述下一处理元件被配置为响应于所述下一处理元件开始执行所述一种或多种类型的程序指令中的程序指令,来发起所述配置数据的传输。
4.根据权利要求3所述的装置,其中,所述下一处理元件被配置为暂停执行所述一种或多种类型的程序指令中的程序指令,直到所述配置数据被接收到为止。
5.根据权利要求3所述的装置,其中:
所述配置数据包括定义所述处理元件的架构和物理方面之间的映射的映射数据。
6.根据前述权利要求中的任一项所述的装置,其中,所述下一处理元件被配置为在执行所述程序任务之前经由硬件为介质的传输接收所述上下文数据的所述第一子集。
7.根据前述权利要求中的任一项所述的装置,包括:
相干存储器电路,所述相干存储器电路存储能够由每个所述处理元件访问的数据的一个或多个副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;
其中,程序任务的所述上下文数据由所述相干存储器电路中的存储器区域存储;并且
其中,每个处理元件被配置为在该处理元件执行程序任务时有与该程序任务相对应的存储器区域的独占所有权。
8.根据权利要求7所述的装置,其中:
所述相干存储器电路包括每个处理元件处的一个或多个处理器寄存器;并且
每个处理元件被配置为在所述一个或多个处理器寄存器中存储由该处理元件使用的上下文数据的至少一部分。
9.根据权利要求8所述的装置,其中:
所述相干存储器电路被配置为分配由一个或多个地址的相应组表示的存储器支持寄存器区域的控制;并且
所述处理元件进行独占控制的所述存储器区域包括所述存储器支持寄存器区域中的一个或多个。
10.根据前述权利要求中的任一项所述的装置,包括选择电路,所述选择电路被配置为选择所述上下文数据的所述第一子集中的至少一些,以由所述前一处理元件传输到所述下一处理元件。
11.根据权利要求10所述的装置,其中,所述选择电路被配置为响应于检测到与所述上下文数据相关联的成本函数而选择所述上下文数据的所述第一子集中的至少一些。
12.根据权利要求11所述的装置,其中,所述选择电路被配置为检测所述前一处理元件对上下文数据项的访问,并且选择所述上下文数据的所述第一子集中的至少一些作为上下文数据的一个或多个最多访问项。
13.根据权利要求11所述的装置,其中,所述访问为写入访问。
14.根据权利要求11所述的装置,其中,所述下一处理元件被配置为执行一个或多个加载指令,所述加载指令被配置为执行以下操作中的一个或两个:
获取所述上下文数据的第一子集的一个或多个项;以及
获取所述上下文数据的第二子集的一个或多个项。
15.根据权利要求14所述的装置,其中,所述第一子集包括预定数量的数据。
16.根据前述权利要求中的任一项所述的装置,其中,所述下一处理元件被配置为执行一个或多个加载指令,所述加载指令被配置为执行以下操作中的一个或两个:
获取所述上下文数据的第一子集的一个或多个项;以及
获取所述上下文数据的第二子集的一个或多个项。
17.根据前述权利要求中的任一项所述的装置,其中:
每个处理元件具有相应的关联的格式定义数据,所述相应的关联的格式定义数据用于定义数据项的一个或多个集合,以包含在所述上下文数据中;
所述装置包括格式选择电路,所述格式选择电路用于将每个所述处理元件的所述格式定义数据传送给所述处理元件中的其他处理元件,并且响应于每个所述处理元件的所述格式定义数据,确定一组公共数据项以包含在所述上下文数据中。
18.根据权利要求16所述的装置,其中,由每个处理元件的所述格式定义数据定义的数据项的集合指示该处理元件的处理能力的集合。
19.一种数据处理装置,包括:
一组两个或更多个处理模块,用于执行程序任务的处理指令;
所述处理模块能够操作以在该处理模块执行程序任务之后提供与该程序任务有关的上下文数据;并且在恢复对程序任务的执行时,接收由该处理模块或另一处理模块提供的上下文数据;
其中,用于执行程序任务的所述组的下一处理模块能够操作以从前一处理模块接收所述上下文数据的第一子集来执行该程序任务,并使用所述上下文数据的第一子集开始执行该程序任务;并且
其中,所述下一处理模块能够操作以在由该程序模块执行程序任务期间,接收所述上下文数据的剩余的第二子集的一个或多个项。
20.一种方法,包括:
在用于执行程序任务的一组两个或更多个处理元件中的前一处理元件执行程序任务之后,该组中的下一处理元件接收与执行该程序任务有关的上下文数据的第一子集,并且使用上下文数据的第一子集开始执行程序任务;以及
所述下一处理元件在该处理元件执行所述程序任务期间接收所述上下文数据的剩余的第二子集的一个或多个项。
CN201780072063.XA 2016-11-28 2017-11-09 数据处理 Active CN109983440B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/361,819 US10552212B2 (en) 2016-11-28 2016-11-28 Data processing
US15/361,819 2016-11-28
PCT/GB2017/053371 WO2018096314A1 (en) 2016-11-28 2017-11-09 Data processing

Publications (2)

Publication Number Publication Date
CN109983440A true CN109983440A (zh) 2019-07-05
CN109983440B CN109983440B (zh) 2023-07-25

Family

ID=60421809

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780072063.XA Active CN109983440B (zh) 2016-11-28 2017-11-09 数据处理

Country Status (3)

Country Link
US (1) US10552212B2 (zh)
CN (1) CN109983440B (zh)
WO (1) WO2018096314A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597601A (zh) * 2019-09-16 2019-12-20 杭州和利时自动化有限公司 一种控制器任务切换方法、装置、设备及可读存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
US11748150B2 (en) * 2019-05-14 2023-09-05 Microsoft Technology Licensing, Llc System and method for blocking path detection
US11445020B2 (en) 2020-03-24 2022-09-13 Arm Limited Circuitry and method
US11934272B2 (en) 2022-05-12 2024-03-19 Arm Limited Checkpoint saving

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1445656A (zh) * 1995-08-04 2003-10-01 贝勒加特投资公司 包括便携式数据处理单元的数据交换系统
US20050114337A1 (en) * 2003-05-28 2005-05-26 International Business Machines Corporation Packet classification
US20050120194A1 (en) * 2003-08-28 2005-06-02 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
CN101950259A (zh) * 2008-12-30 2011-01-19 英特尔公司 在硬件中登记用户处理程序以用于事务存储器事件处理
CN102047218A (zh) * 2008-06-02 2011-05-04 微软公司 进程中的调度器实例
US20110265084A1 (en) * 2010-04-26 2011-10-27 International Business Machines Corporation Cross architecture virtual machine migration
CN102714676A (zh) * 2009-12-29 2012-10-03 诺基亚公司 装置、方法、计算机程序和用户接口
US20140304708A1 (en) * 2013-04-03 2014-10-09 Raytheon Bbn Technologies Corp. Distributed application execution in a heterogeneous processing system
US20150052329A1 (en) * 2013-08-14 2015-02-19 Sony Corporation Memory control device, host computer, information processing system and method of controlling memory control device
US20150355996A1 (en) * 2014-06-04 2015-12-10 Nvidia Corporation System, method, and computer program product for collecting execution statistics for graphics processing unit workloads
CN105874441A (zh) * 2013-01-17 2016-08-17 埃克索科茨股份有限公司 利用卸载处理器的上下文切换

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5617574A (en) * 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
US5701503A (en) * 1994-01-04 1997-12-23 Intel Corporation Method and apparatus for transferring information between a processor and a memory system
US6101599A (en) * 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
US6973650B1 (en) * 1999-11-09 2005-12-06 Microsoft Corporation Method of pipelined processing of program data
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US6981083B2 (en) 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states
US7849465B2 (en) * 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
US7373646B1 (en) 2003-04-04 2008-05-13 Nortel Network Limited Method and apparatus for sharing stack space between multiple processes in a network device
GB0315504D0 (en) 2003-07-02 2003-08-06 Advanced Risc Mach Ltd Coherent multi-processing system
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US20060168347A1 (en) 2004-12-09 2006-07-27 Eric Martin System for sharing context information between executable applications
WO2006105324A2 (en) * 2005-03-31 2006-10-05 The Board Of Regents Of The University Of Oklahoma Configurations steering for a reconfigurable superscalar processor
US8037474B2 (en) * 2005-09-27 2011-10-11 Sony Computer Entertainment Inc. Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution
US7739267B2 (en) * 2006-03-10 2010-06-15 International Business Machines Corporation Classification and sequencing of mixed data flows
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
US8095782B1 (en) * 2007-04-05 2012-01-10 Nvidia Corporation Multiple simultaneous context architecture for rebalancing contexts on multithreaded processing cores upon a context change
US8286196B2 (en) * 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US20080263323A1 (en) * 2007-04-13 2008-10-23 Mould Nick A Reconfigurable Computing Architectures: Dynamic and Steering Vector Methods
US20080270653A1 (en) 2007-04-26 2008-10-30 Balle Susanne M Intelligent resource management in multiprocessor computer systems
US8775824B2 (en) * 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US8001283B2 (en) 2008-03-12 2011-08-16 Mips Technologies, Inc. Efficient, scalable and high performance mechanism for handling IO requests
GB2462258B (en) * 2008-07-28 2012-02-08 Advanced Risc Mach Ltd Interrupt control for virtual processing apparatus
US20110083130A1 (en) 2009-10-01 2011-04-07 Nokia Corporation Dynamic execution context management in heterogeneous computing environments
US8751833B2 (en) 2010-04-30 2014-06-10 Arm Limited Data processing system
US8578136B2 (en) * 2010-06-15 2013-11-05 Arm Limited Apparatus and method for mapping architectural registers to physical registers
JP5636109B2 (ja) * 2010-08-23 2014-12-03 エンパイア テクノロジー ディベロップメント エルエルシー コンテキスト切り替え
CN103080921B (zh) 2010-08-30 2015-11-25 富士通株式会社 多核处理器系统、同步控制系统、同步控制装置、信息生成方法
US8561078B2 (en) * 2011-09-27 2013-10-15 Throughputer, Inc. Task switching and inter-task communications for multi-core processors
US20120233410A1 (en) 2011-03-13 2012-09-13 National Tsing Hua University Shared-Variable-Based (SVB) Synchronization Approach for Multi-Core Simulation
US8799880B2 (en) * 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
EP2804100B1 (en) * 2012-01-10 2020-04-29 Fujitsu Limited Virtual machine management program, method and device
US8909892B2 (en) * 2012-06-15 2014-12-09 Nokia Corporation Method, apparatus, and computer program product for fast context switching of application specific processors
US9513912B2 (en) * 2012-07-27 2016-12-06 Micron Technology, Inc. Memory controllers
US10187452B2 (en) * 2012-08-23 2019-01-22 TidalScale, Inc. Hierarchical dynamic scheduling
JP6051721B2 (ja) 2012-09-19 2016-12-27 株式会社ソシオネクスト 実行制御方法、およびマルチプロセッサシステム
US9619284B2 (en) * 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
US20140157287A1 (en) 2012-11-30 2014-06-05 Advanced Micro Devices, Inc Optimized Context Switching for Long-Running Processes
US9448803B2 (en) 2013-03-11 2016-09-20 Nvidia Corporation System and method for hardware scheduling of conditional barriers and impatient barriers
US20140365662A1 (en) 2013-03-15 2014-12-11 Gravitant, Inc. Configuring cloud resources
US9304920B2 (en) 2013-05-23 2016-04-05 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for providing cache-aware lightweight producer consumer queues
US9588808B2 (en) 2013-05-31 2017-03-07 Nxp Usa, Inc. Multi-core system performing packet processing with context switching
US9250953B2 (en) 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US8924596B1 (en) * 2013-12-06 2014-12-30 Concurrent Ventures, LLC System and method for dividing and synchronizing a processing task across multiple processing elements/processors in hardware
US10031773B2 (en) * 2014-02-20 2018-07-24 Nxp Usa, Inc. Method to communicate task context information and device therefor
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9292346B1 (en) * 2014-08-26 2016-03-22 Freescale Semiconductor, Inc. System and method for dynamically managed task switch lookahead
US9471397B2 (en) 2014-10-03 2016-10-18 International Business Machines Corporation Global lock contention predictor
US10089180B2 (en) * 2015-07-31 2018-10-02 International Business Machines Corporation Unfavorable storage growth rate abatement
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1445656A (zh) * 1995-08-04 2003-10-01 贝勒加特投资公司 包括便携式数据处理单元的数据交换系统
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US20050114337A1 (en) * 2003-05-28 2005-05-26 International Business Machines Corporation Packet classification
US20050120194A1 (en) * 2003-08-28 2005-06-02 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
CN102047218A (zh) * 2008-06-02 2011-05-04 微软公司 进程中的调度器实例
CN101950259A (zh) * 2008-12-30 2011-01-19 英特尔公司 在硬件中登记用户处理程序以用于事务存储器事件处理
CN102714676A (zh) * 2009-12-29 2012-10-03 诺基亚公司 装置、方法、计算机程序和用户接口
US20110265084A1 (en) * 2010-04-26 2011-10-27 International Business Machines Corporation Cross architecture virtual machine migration
CN105874441A (zh) * 2013-01-17 2016-08-17 埃克索科茨股份有限公司 利用卸载处理器的上下文切换
US20140304708A1 (en) * 2013-04-03 2014-10-09 Raytheon Bbn Technologies Corp. Distributed application execution in a heterogeneous processing system
US20150052329A1 (en) * 2013-08-14 2015-02-19 Sony Corporation Memory control device, host computer, information processing system and method of controlling memory control device
US20150355996A1 (en) * 2014-06-04 2015-12-10 Nvidia Corporation System, method, and computer program product for collecting execution statistics for graphics processing unit workloads

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LUCAS A. WILSON等: "A Distributed Dataflow Model for Task-Uncoordinated Parallel Program Execution", 《2014 43RD INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING WORKSHOPS》 *
杨东升等: "嵌入式系统安全问题解决方案综述", 《微型电脑应用》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597601A (zh) * 2019-09-16 2019-12-20 杭州和利时自动化有限公司 一种控制器任务切换方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
CN109983440B (zh) 2023-07-25
US20180150321A1 (en) 2018-05-31
WO2018096314A1 (en) 2018-05-31
US10552212B2 (en) 2020-02-04

Similar Documents

Publication Publication Date Title
CN109983440A (zh) 数据处理
US10423446B2 (en) Data processing
CN109997113B (zh) 用于数据处理的方法和装置
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
US7437618B2 (en) Method in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
US6108766A (en) Structure of processor having a plurality of main processors and sub processors, and a method for sharing the sub processors
US6944850B2 (en) Hop method for stepping parallel hardware threads
JP7539202B2 (ja) コンピューティング環境におけるアクセラレータとストレージとの間のダイレクト・データ・アクセス
EP2187316B1 (en) Gated storage system and synchronization controller and method for multiple multi-threaded processors
KR101400286B1 (ko) 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
KR100613923B1 (ko) 다수의 파이프라인을 이용해 패킷을 다수의 프로그래밍 엔진에 할당하는 방법, 프로세서, 컴퓨터 판독 가능 저장 매체 및 멀티프로세싱 시스템
US7437617B2 (en) Method, apparatus, and computer program product in a processor for concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers
CN106708627B (zh) 一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统
CN104461970B (zh) Dma控制器、移动终端以及数据搬运方法
US9898348B2 (en) Resource mapping in multi-threaded central processor units
US8862786B2 (en) Program execution with improved power efficiency
US20080134187A1 (en) Hardware scheduled smp architectures
CN103197917A (zh) 计算线程阵列粒度执行抢占
CN102736949B (zh) 改善对非连贯设备要执行的任务的调度
CN115878517A (zh) 存储器装置、存储器装置的操作方法和电子装置
JP2013125305A (ja) マルチプロセッサ装置
US10788987B2 (en) Data storage system employing service infrastructure for functional modules
Li et al. Parallel Programming Methods Based on the Multi-Core DSP TMS320C6670
JPH0652052A (ja) 仮想共用記憶方式

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