CN109997112A - 数据处理 - Google Patents

数据处理 Download PDF

Info

Publication number
CN109997112A
CN109997112A CN201780072016.5A CN201780072016A CN109997112A CN 109997112 A CN109997112 A CN 109997112A CN 201780072016 A CN201780072016 A CN 201780072016A CN 109997112 A CN109997112 A CN 109997112A
Authority
CN
China
Prior art keywords
task
data
processing element
program
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
CN201780072016.5A
Other languages
English (en)
Other versions
CN109997112B (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 CN109997112A publication Critical patent/CN109997112A/zh
Application granted granted Critical
Publication of CN109997112B publication Critical patent/CN109997112B/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
    • 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
    • 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
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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/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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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

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示意性地图示了调度电路的实施方式;
图7示意性地图示了处理元件;
图8是示意性地图示任务切换的流程图;以及
图9至11是图示方法的示意性流程图。
具体实施方式
在参考附图讨论实施例之前,提供了以下实施例的描述。
示例性实施例提供了数据处理装置,该数据处理装置包括:
一个或多个互连的处理元件,每个处理元件被配置为执行程序任务的处理指令;
相干存储器电路,该相干存储器电路存储能够由每个所述处理元件访问的一个或多个数据副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;
相干存储器电路包括存储器区域,该存储器区域存储能够由处理元件访问的数据,该数据定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据;
该装置包括调度电路,该调度电路响应于由存储在与该任务相对应的所述存储器区域中的数据定义的一个或多个属性,调度处理元件对任务的执行;并且
执行程序任务的每个处理元件被配置为响应于对该程序任务的执行来修改所述属性中与该程序任务对应的一个或多个属性。
本技术的示例允许调度由互连的处理元件本身执行,而不必要求操作系统的干预,这是通过处理元件维护与每个任务相关的属性数据,响应于对任务的执行来修改属性数据,并且使用属性数据来执行调度来实现的。
在示例中,每个处理元件被配置为当被调度来执行任务时,对与该程序任务相关的存储器区域进行独占写入访问。
示例性布置可以执行操作系统以管理装置的至少一些处理资源。操作系统可以具有对与程序任务有关的存储器区域的读取访问。
为了允许选择基于操作系统的调度进程而不是这里定义的调度进程,在示例中,每个程序任务都有关联的覆盖数据,其指示在该程序任务暂停时,控制返回到调度电路还是返回到操作系统。在示例中,操作系统具有对覆盖数据的读取和写入访问。
在示例中,每个程序任务具有关联的状态数据,其指示程序任务当前是否能够执行,调度电路被配置为相对其状态数据指示当前不能够执行的程序任务,优先调度其他程序任务。操作系统可以具有对状态数据的至少一部分的读取和写入访问。该装置可以向用户提供对状态数据的至少一部分的读取和写入访问。
对于任务调度,所述属性之一可以是优先级指示符,其中:
每个处理元件被配置为针对给定程序任务改变优先级指示符,以响应于该处理元件执行该给定程序任务来降低该给定程序任务的优先级;
每个处理元件被配置为针对给定程序任务改变优先级指示符,以响应于将该给定程序任务分配给该处理元件但该处理元件未执行该给定程序任务来增大该给定程序任务的优先级;并且
该调度电路被配置为调度程序任务以执行,以便给予具有较高优先级的程序任务优先。
在示例中,所述属性之一是时间段指示符,其中:被调度来执行给定程序任务的处理元件被配置为在由该程序任务的时间段指示符定义的执行时间段结束时,暂停该给定程序任务的执行。
为了允许在调度时考虑先前的执行实例,例如,为了提供处理的本地化(为了减少上下文切换中的等待时间),所述属性之一可以定义历史数据,其指示在处理任务的一个或多个先前的执行实例中使用的那些处理元件。例如,历史数据可以指示关于一个或多个先前的执行实例的处理元件性能。
为了允许使用同一相干机制或另一机制来处理上下文数据,在示例中,所述属性之一定义对上下文数据的存储位置的指针。
在示例中,所述属性之一指示用于执行该程序任务的处理元件的硬件规范。
所述属性可以由所述调度电路方便地存储,所述调度电路被配置为响应于发起程序任务而将存储器区域分配给该程序任务,并且响应于程序任务终止来从该程序任务中移除对存储器区域的分配。
在示例中,相干存储器电路包括两个或更多个相干缓存存储器,并且相干存储器电路被配置为存储能够由每个所述处理元件访问的多个数据副本。
另一示例性实施例提供了一种方法,该方法包括:
相干地存储能够由一个或多个互连的处理元件中的每一个来访问的一个或多个数据副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;
定义相干地存储的数据的存储器区域,所述存储器区域存储能够由所述处理元件访问的数据,所述数据定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据;
响应于由存储在与该任务相对应的所述存储器区域中的数据定义的所述一个或多个属性,调度处理元件对任务的执行;
执行程序任务的每个处理元件响应于对该程序任务的执行来修改所述属性中与该程序任务对应的一个或多个属性。
现在参考附图,图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,以给出调度功能。
图7示意性地图示了处理元件700,例如用作处理元件20、30、40之一。这里只显示了与当前描述相关的处理元件的一些特性。本领域技术人员将理解处理元件可以包括图7中未显示的其他特征。
处理元件包括指令解码器710、一个或多个寄存器720、执行流水线730和专用的计算单元(例如算术逻辑单元或浮点单元)740。
图8是图示任务执行的示意性流程图,提供了比上面讨论的图3的流程图更详细的内容。
在图8中,更详细地讨论了存储和检索上下文数据的过程。具体而言,上下文数据存储在上面讨论的相干存储器结构中。处理任务的处理元件在任务执行期间控制存储器区域,例如所谓的缓存行;处理元件从该缓存行读取上下文数据,并在执行任务之后将上下文数据写回该缓存行。因此,缓存行的控制被部分地用于管理对执行任务的特定实例的调度和控制。与程序任务对应的存储器区或缓存行被用于或配置为存储与该程序任务相关的上下文数据。每个处理元件响应于由该处理元件暂停的程序任务而被配置为将与该程序任务相关的上下文数据保存到相干存储器电路的相应存储器区域。
参考图8,在步骤800处由调度电路将任务调度到处理元件(例如,在操作系统的控制下)。在步骤810处,处理元件控制与该任务的上下文数据相关联的缓存行或其他存储器区域。例如,这可以涉及处理元件暂时地对相干域中的该缓存行(或更通常是与程序任务对应的存储器区域)进行独占写入访问,而同时至少该处理元件正在执行该程序任务。
在步骤820处,处理元件从该缓存行或其他存储器区域加载上下文数据,在步骤830处执行该任务。如前所述,要注意的是,上下文数据的加载和任务的执行可以在时间上重叠,使得处理元件可以配置为:在加载(至少一些地)上下文数据并恢复程序任务的执行之后,检测该处理元件是否需要由先前执行该程序任务的另一处理元件生成的另外的数据项,以及何时需要这样的另外的数据项以加载这些另外的数据项。另外的数据项可以存储在同一缓存行或存储器区域中,或者可以通过其他存储器区域访问。然而,为了在步骤830开始执行任务而必须在步骤820处加载的上下文数据在受控缓存行中被提供。
在步骤840处,处理元件暂停执行任务。这可能是对程序代码中的断点、下面讨论的时间段指示符842、由处理器接收到的中断等的响应。在步骤850处,处理元件将上下文数据保存到上面讨论的缓存行,并且在步骤860处,释放对该缓存行的控制。换句话说,每个处理元件被配置为:响应于由该处理元件暂停执行程序任务,释放该存储器区域(对应于该程序任务)的独占写入访问。
因此,在恢复执行程序任务(步骤800)时,这些示例中的每个处理元件被配置为对相干存储器电路的存储器区域(在该存储器区域中存储有与该程序任务相关的上下文数据(先前由该处理元件或另一处理元件保存的))进行独占写入访问(步骤810),并且从该存储器区域加载所存储的上下文数据。
现在将讨论处理元件之间的调度任务的布置。
在示例中,相干存储器电路包括存储器区域,该存储器区域存储能够由处理元件访问的数据,该数据定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据。
该装置包括调度电路(例如上文关于图4-6所讨论的),以响应于由存储在所述存储器区域中的、与该任务相对应的数据定义的一个或多个属性,调度处理元件对任务的执行;并且执行程序任务的每个处理元件被配置为响应于对该程序任务的执行来修改所述属性中与该程序任务对应的一个或多个属性。
以这种方式,可以在不需要操作系统(OS)的服务或资源的情况下,基于所存储的属性数据进行调度,这些属性数据本身由执行任务的处理元件根据需要进行修改。
现在将描述以这种方式存储的一些属性数据的示例。请注意,在以下示例性字段中,一些字段可能存在,也可能不存在。可能会出现以下未讨论的其他字段。例如,这些数据可以存储在上面讨论的存储器区域中。
OS还可以对所存储的上下文数据进行读取访问。
以下提供了对上述领域的讨论。
一般来说,可以看到一些字段受OS的控制,一些字段受硬件(处理元件/用户)的控制。OS可以对硬件控制字段进行读取访问。
i.在示例中,每个程序任务都有相关联的覆盖数据,指示在暂停该程序任务时,控制是返回到调度电路,还是返回到操作系统。通过设置该位来指示控制返回到OS,可以覆盖当前的布置(其中调度由处理元件本身执行)。如果OS执行调度,则根据好/优先级字段iii来这样做(至少部分地)。
ii,viii.在示例中,每个程序任务都有相关联的状态数据,指示程序任务当前是否可执行,调度电路被配置为对于针对其状态数据指示该任务当前不能够执行的程序任务,优先调度其他程序任务。操作系统可以具有对状态数据的至少一部分进行读取和写入访问(例如,项ii)。该装置以向用户提供对状态数据的至少一部分的读取和写入访问(例如,项viii)。如果一个线程暂停,例如,因为它正在等待来自OS的请求服务,那么可以设置这个位或这些位(可以提供其中中的一者或两者),以便将该线程暂时从调度中排除。
iii.好/优先级是指示OS调度的延迟(好)和/或执行的优先级(优先级)的字段。
iv.性能还是功率取向?这是指示是应当将线程调度到处理器以获得最大性能,还是调度到另一处理器(在降低功耗的情况下运行的处理器)以进行低功率操作的字段。
v.定量配额(quanta allotement)是定义在任务切换发生之前执行任务的最长时间段的字段。例如,它可能是纳秒数。如上文结合项842所讨论的,在时间段结束时,例如通过处理器中断,将执行停止。
vi.设备ID指示当前执行程序任务的处理元件的标识符。
vii.它是活跃的吗?是指示任务当前是否正在执行的字段。
ix.上次指派的时间戳是指示最近完成的任务执行何时终止的字段。
x.异常(错误)状态是指示程序任务的执行当前处于异常(错误)状态的字段。
xi.在示例中,每个处理元件被配置为针对给定程序任务改变优先级指示符,以便响应于由该处理元件执行该给定程序任务来降低该给定程序任务的优先级;每个处理元件被配置为针对给定程序任务改变优先级指示符,以便响应于将该给定程序任务分配给该处理元件但该处理元件未执行该给定程序任务来增加该给定程序任务的优先级;并且该调度电路被配置为调度程序任务以供执行,以便给予具有更高优先级的程序任务优先。例如,保持三位值(并且在一些示例中,可以分配上面讨论的值iii作为初始值)。每次调度过程推迟一个程序任务的执行而执行另一任务时,优先级都会朝向较高优先级改变例如1(例如,在数值越小表示优先级越高的布置中,优先级值被递减)。如果程序任务被调度执行,则它的优先级被朝着较低优先级改变例如1(例如,值被递增)。当程序任务的优先级达到可能的最高优先级值时,要保证其被执行。
提供了各种历史数据项。这些可以针对紧接着的先前的执行实例或针对预先确定的数量(例如三个)的先前实例来提供。
vii.努力(例如,指示可用处理器努力的分数的值,最高100%)指示对于程序任务的先前执行实例所执行的处理器工作。
viii.使用的定量指示针对先前执行而实际使用的时间段。
ix.短历史数据包括每个定量(即,(在当前示例中)在最后一个执行实例中为每纳秒)的加载/存储操作、每个定量失效的指令数以及功耗。
x.设备频率/电压设置
xi.先前的设备ID指示执行先前的执行实例的处理元件的设备标识符。
xii.指向活动寄存器状态的指针指示与此任务相关的上下文数据的存储位置。
这些数据是在一个全局表中提供的(也就是说,它可以被互连布置中的每个处理元件和操作系统访问),以管理每个上下文(每个程序任务)的调度,提供在核心之间分配工作的技术,并提供可用于在异构硬件上调度上下文的字段。此表旨在在同一节点内并且在能够构建双向接口的任何网络接口上的多个(可能是异构的)设备之间共享。
如上文所讨论的,每个程序任务都提供了一组条目或字段。
表的状态分为两个域,一个软件可以写入,另一个完全由硬件管理,但软件可以读取。OS/运行时可以访问以写入管理状态位,而硬件可以完全访问,读写操作状态位,OS/运行时只有读取这些位的权限。
该表可以被实施为虚拟存储器分配,也可以实施为硬件表。它以相干的方式被维护,以便由处理元件访问。
为了解决上下文切换中的等待时间问题,可以考虑运行上下文的位置。为了解决这个问题,数据包括运行上下文的过去(例如,三个)处理元件的历史,包括每个设备的效率级别(加载/存储计数、失效的指令,参见上面的上下文历史位)。
下面的文本描述了一系列给定的动作:例如,启动、线程创建和使用此处描述的虚拟上下文格式和虚拟上下文表调度机制迁移系统。这些动作按动作用描述性文本列出。
(a)启动时
在启动时,硬件上下文表中存在单个线程上下文。寄存器状态与当前定义为例如AArch64处理元件的启动状态相同。在该示例中,这主要是归零的寄存器PC:=RVBAR,并且在支持的最高异常级别下执行。设置用户覆盖位,使得陷阱(trap)按软件的预期传送到软件。
(b)线程创建-来自管理软件(supervisior)
线程创建涉及在上面讨论的表中为新创建的线程创建新条目。
(c)线程创建-克隆
这是一个新的硬件加速过程,其中硬件自动克隆表条目并声明新线程上下文数据存储(上下文行本身由表条目和虚拟上下文指针的存储器上下文定义)的相干所有权。这样,它就可以被懒散地填充,这可能会有延迟直到新线程的第一个定量结束为止。这也可以通过行克隆等技术在存储器中完成,而不涉及主处理器,结合到许多近存储器计算中。
上面讨论的线程创建步骤提供了调度电路的示例,该调度电路被配置为响应于发起程序任务而将存储器区域分配给该程序任务(用于其表),并且响应于终止程序任务来从该程序任务中去除对存储器区域的分配。
(d)上下文交换打开
相关的上下文或程序任务已由硬件线程调度器(它为每个计算元件对运行队列内的上下文进行排队)选择。它不是目前正在运行的,但很快就会运行。硬件调度器将表条目添加到处理元件的运行队列中,并且将与该表条目关联的数据经由相干机制传送。此时,它可以开始执行线程。处理元件将从存储器中提取正确进行所需的寄存器值。它可以自行决定将此上下文的任何部分写回存储器,无论是写回(可能由于物理寄存器压力而溢出)还是写通(write through)(为很少写入的控制寄存器优化线程调度)。真实的写回要求将在下一节详细描述。
(e)上下文交换关闭
基于优先级将表条目重新插入到运行队列中。运行位设置为0,并基于所用的定量调整优先级,或者如果由于高优先级任务而未运行,则优先级值被递减(其中零表示最高优先级)。虚拟上下文的上下文存储仍然由处理元件拥有直到被写回为止,这可以由来自另一处理元件的要求请求强制执行,例如在迁移的情况下。
(f)迁移到另一处理元件
新的处理元件通过更新设备ID并将运行位设置为0来声明表条目的相干所有权。然后执行(上述)上下文交换打开下列出的步骤。
(g)运行队列
表条目最初被置于其上代(parent)曾在其上执行的处理元件的运行队列中。为了发起上下文的迁移,在目的地处理元件的运行队列中插入其表条目,并且硬件调度器设置优先级(最大优先级或继承上代的上下文优先级)。每个CE的运行队列被实现,使得它以升序尊重优先级,并保持每个处理元件的表条目的时间排序(例如,优先级为0且次数为N的表条目将在优先级为0且次数为N+1的HCT条目之前运行)。
这些操作可通过图9和图10的示意性流程图来总结。
参考图9,在步骤900处,处理元件执行程序任务。在步骤910处,处理元件响应于该执行来修改虚拟上下文表(上面讨论的表)。
参考图10,在步骤1000处,调度电路(可由如上所讨论的一个或多个处理元件实施)读取程序任务的表,并在步骤1010处调度该程序任务以供执行。
图11是图示一种方法的示意性图,该方法包括:
(在步骤1100处)相干地存储能够由一个或多个互连的处理元件中的每个访问的一个或多个数据副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;
(在步骤1110处)定义经相干地存储的数据的存储器区域,用于存储数据的能够由所述处理元件访问的所述存储器区域定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据;
(在步骤1120处)响应于由存储在所述存储器区域中的与任务对应的数据定义的一个或多个属性,由处理元件调度该任务的执行;以及
(在步骤1130处)执行程序任务的每个处理元件响应于对该程序任务的执行来修改所述属性中与该程序任务对应的一个或多个属性。
根据权利要求1所述的装置,其根据图11所述的方法进行操作,提供了一种数据处理装置的示例,该数据处理装置包括:
一个或多个互连的处理元件,每个互连的处理元件被配置为执行程序任务的处理指令;
相干存储器电路,该相干存储器电路存储能够由每个所述处理元件访问的一个或多个数据副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;
所述相干存储器电路包括用于存储能够由所述处理元件访问的数据的存储器区域,所述数据定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据;
该装置包括调度电路,该调度电路用于响应于由存储在所述存储器区域中的与任务对应的数据定义的一个或多个属性,由处理元件调度该任务的执行;并且
执行程序任务的每个处理元件被配置为响应于对该程序任务的执行来修改所述属性中与该程序任务对应的一个或多个属性。
在本申请中,“被配置为……”一词用于表示装置的元件具有能够执行所定义的操作的配置。在这种背景下,“配置”是指硬件或软件互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备(例如处理元件12)进行编程以执行所述功能。“被配置为”并不意味着需要以任何方式改变装置元件以便提供所定义的操作。
尽管参考附图已在本文中详细描述了本技术的说明性实施例,但应理解,本技术不限于这些精确实施例,并且可以由本领域技术人员在其中实现各种变化、添加和修改,而不脱离所附权利要求所定义的技术的范围和精神。例如,从属权利要求的特征的各种组合可以用独立权利要求的特征来组成而不脱离本技术的范围。

Claims (18)

1.一种数据处理装置,包括:
一个或多个互连的处理元件,每个所述处理元件被配置为执行程序任务的处理指令;
相干存储器电路,所述相干存储器电路存储能够由每个所述处理元件访问的一个或多个数据副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储电路中的该存储器地址读取的数据一致;
所述相干存储器电路包括存储器区域,所述存储器区域存储能够由所述处理元件访问的数据,所述数据定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据;
所述装置包括调度电路,所述调度电路响应于由存储在与该任务相对应的所述存储器区域中的数据定义的所述一个或多个属性,调度处理元件对任务的执行;并且
执行程序任务的每个处理元件被配置为响应于对该程序任务的执行来修改所述属性中与该程序任务相对应的一个或多个属性。
2.根据权利要求1所述的装置,其中,每个处理元件被配置为在被调度来执行任务时,对与该程序任务相关的所述存储器区域进行独占写入访问。
3.根据权利要求2所述的装置,所述装置执行操作系统以管理所述装置的至少一些处理资源。
4.根据权利要求2所述的装置,其中,所述操作系统具有对与程序任务有关的存储器区域的读取访问。
5.根据权利要求3所述的装置,其中,每个程序任务具有相关联的覆盖数据,所述覆盖数据指示在该程序任务暂停时,控制返回到所述调度电路还是返回到所述操作系统。
6.根据权利要求5所述的装置,其中,所述操作系统具有所述覆盖数据的读取和写入访问。
7.根据权利要求3所述的装置,其中,每个程序任务具有相关联的状态数据,所述状态数据指示该程序任务当前是否能够执行,所述调度电路被配置为相对于其状态数据指示当前不能够执行的程序任务,优先调度其他程序任务。
8.根据权利要求7所述的装置,其中,所述操作系统具有对所述状态数据的至少一部分的读取和写入访问。
9.根据权利要求7所述的装置,其中,所述装置向用户提供对所述状态数据的至少一部分的读取和写入访问。
10.根据前述权利要求中的任一项所述的装置,其中,所述属性之一是优先级指示符,其中:
每个处理元件被配置为针对给定程序任务改变所述优先级指示符,以响应于该处理元件执行所述给定程序任务来降低所述给定程序任务的优先级;
每个处理元件被配置为针对给定程序任务改变所述优先级指示符,以响应于所述给定程序任务被分配给该处理元件但该处理元件未执行所述给定程序任务来增大所述给定程序任务的优先级;并且
所述调度电路被配置为调度程序任务以执行,以给予具有较高优先级的程序任务优先。
11.根据前述权利要求中的任一项所述的装置,其中,所述属性之一是时间段指示符,其中:
被调度来执行给定程序任务的处理元件被配置为,在由该程序任务的所述时间段指示符定义的执行时间段结束时,暂停所述给定程序任务的执行。
12.根据前述权利要求中的任一项所述的装置,其中,所述属性之一定义历史数据,所述历史数据指示在所述处理任务的一个或多个先前的执行实例中使用的那些处理元件。
13.根据权利要求11所述的装置,其中,所述历史数据指示关于一个或多个先前的执行实例的处理元件性能。
14.根据前述权利要求中的任一项所述的装置,其中,所述属性之一定义对所述上下文数据的存储位置的指针。
15.根据前述权利要求中的任一项所述的装置,其中,所述属性之一指示用于执行该程序任务的处理元件的硬件规范。
16.根据前述权利要求中的任一项所述的装置,其中,所述调度电路被配置为响应于发起程序任务而将存储器区域分配给该程序任务,并且响应于程序任务终止来从该程序任务移除对存储器区域的分配。
17.根据前述权利要求中的任一项所述的装置,其中,所述相干存储器电路包括两个或更多个相干缓存存储器,并且所述相干存储器电路被配置为存储能够由每个所述处理元件访问的多个数据副本。
18.一种方法,包括:
相干地存储能够由一个或多个互连的处理元件中的每一个访问的一个或多个数据副本,使得由一个处理元件写入所述相干存储器电路中的存储器地址的数据与由所述处理元件中的另一处理元件从所述相干存储器电路中的该存储器地址读取的数据一致;
定义相干地存储的数据的存储器区域,所述存储器区域存储能够由所述处理元件访问的数据,所述数据定义程序任务的一个或多个属性以及与执行该程序任务的最新实例相关联的上下文数据;
响应于由存储在与该任务相对应的所述存储器区域中的数据定义的所述一个或多个属性,调度处理元件对任务的执行;以及
执行程序任务的每个处理元件响应于对该程序任务的执行来修改所述属性中与该程序任务相对应的一个或多个属性。
CN201780072016.5A 2016-11-28 2017-11-09 数据处理 Active CN109997112B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/361,871 2016-11-28
US15/361,871 US10423446B2 (en) 2016-11-28 2016-11-28 Data processing
PCT/GB2017/053374 WO2018096316A1 (en) 2016-11-28 2017-11-09 Data processing

Publications (2)

Publication Number Publication Date
CN109997112A true CN109997112A (zh) 2019-07-09
CN109997112B CN109997112B (zh) 2023-08-18

Family

ID=60331653

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780072016.5A Active CN109997112B (zh) 2016-11-28 2017-11-09 数据处理

Country Status (3)

Country Link
US (1) US10423446B2 (zh)
CN (1) CN109997112B (zh)
WO (1) WO2018096316A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380150A (zh) * 2020-11-12 2021-02-19 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法
CN112748694A (zh) * 2019-10-30 2021-05-04 株式会社安川电机 用于工业机械的控制设备及其设置系统、设置方法和程序

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
KR102533241B1 (ko) * 2018-01-25 2023-05-16 삼성전자주식회사 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
CN110336856B (zh) * 2019-05-10 2021-11-26 成都终身成长科技有限公司 接口调用方法、装置、电子设备及存储介质
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
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US20040244003A1 (en) * 2003-05-30 2004-12-02 Vidiator Enterprises Inc. Apparatus and method for task scheduling for media processing
CN1726469A (zh) * 2002-12-05 2006-01-25 国际商业机器公司 通过硬体系结构状态的增强恢复的处理器虚拟机制
CN101052952A (zh) * 2004-09-10 2007-10-10 飞思卡尔半导体公司 存储器管理单元和用于存储器管理的方法
CN101095113A (zh) * 2004-12-29 2007-12-26 英特尔公司 多处理器环境中基于事务的共享数据操作
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
US20090234987A1 (en) * 2008-03-12 2009-09-17 Mips Technologies, Inc. Efficient, Scalable and High Performance Mechanism for Handling IO Requests
CN103221918A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 上下文切换方法和装置
US20140082624A1 (en) * 2012-09-19 2014-03-20 Fujitsu Semiconductor Limited Execution control method and multi-processor system
US20140201468A1 (en) * 2013-01-11 2014-07-17 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
US20140230077A1 (en) * 2013-02-14 2014-08-14 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
CN104050032A (zh) * 2013-03-11 2014-09-17 辉达公司 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法
CN105159844A (zh) * 2014-06-05 2015-12-16 Arm有限公司 数据处理装置中的动态缓存分配策略调适

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973650B1 (en) 1999-11-09 2005-12-06 Microsoft Corporation Method of pipelined processing of program data
US7484208B1 (en) 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
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
US7757069B2 (en) 2005-03-31 2010-07-13 The Board Of Regents Of The University Of Oklahoma Configuration steering for a reconfigurable superscalar processor
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
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
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
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
US8984507B2 (en) 2010-04-26 2015-03-17 International Business Machines Corporation Cross architecture virtual machine migration
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
JP5488697B2 (ja) * 2010-08-30 2014-05-14 富士通株式会社 マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
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
JP5817844B2 (ja) 2012-01-10 2015-11-18 富士通株式会社 仮想マシン管理プログラム、方法、及び装置
US9513912B2 (en) 2012-07-27 2016-12-06 Micron Technology, Inc. Memory controllers
US20140157287A1 (en) 2012-11-30 2014-06-05 Advanced Micro Devices, Inc Optimized Context Switching for Long-Running Processes
US20140365662A1 (en) 2013-03-15 2014-12-11 Gravitant, Inc. Configuring cloud resources
US9158584B2 (en) 2013-04-03 2015-10-13 Raytheon Cyber Products, Llc Distributed application execution in a heterogeneous processing system
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
JP6102632B2 (ja) 2013-08-14 2017-03-29 ソニー株式会社 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
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
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
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

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
CN1726469A (zh) * 2002-12-05 2006-01-25 国际商业机器公司 通过硬体系结构状态的增强恢复的处理器虚拟机制
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
US20040244003A1 (en) * 2003-05-30 2004-12-02 Vidiator Enterprises Inc. Apparatus and method for task scheduling for media processing
CN101052952A (zh) * 2004-09-10 2007-10-10 飞思卡尔半导体公司 存储器管理单元和用于存储器管理的方法
CN101095113A (zh) * 2004-12-29 2007-12-26 英特尔公司 多处理器环境中基于事务的共享数据操作
US20090234987A1 (en) * 2008-03-12 2009-09-17 Mips Technologies, Inc. Efficient, Scalable and High Performance Mechanism for Handling IO Requests
CN103221918A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 上下文切换方法和装置
US20140082624A1 (en) * 2012-09-19 2014-03-20 Fujitsu Semiconductor Limited Execution control method and multi-processor system
US20140201468A1 (en) * 2013-01-11 2014-07-17 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
US20140230077A1 (en) * 2013-02-14 2014-08-14 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
CN104050032A (zh) * 2013-03-11 2014-09-17 辉达公司 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法
CN105159844A (zh) * 2014-06-05 2015-12-16 Arm有限公司 数据处理装置中的动态缓存分配策略调适

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NEELANARAYANAN VENKATARAMAN: "A Context-aware Task Scheduling in Ad-hoc Desktop Grids", 《PROCEDIA COMPUTER SCIENCE 》, vol. 50, pages 653 - 662, XP029589906, DOI: 10.1016/j.procs.2015.04.099 *
王恩东等: "一种面向实时系统的程序基本块指令预取技术", 《软件学报》, vol. 27, no. 9, pages 2426 - 2442 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112748694A (zh) * 2019-10-30 2021-05-04 株式会社安川电机 用于工业机械的控制设备及其设置系统、设置方法和程序
US12019422B2 (en) 2019-10-30 2024-06-25 Kabushiki Kaisha Yaskawa Denki Control device with attribute setting for industrial machine, attribute setting system for control device for industrial machine, method of setting control device with attributes for industrial machine, and information storage medium for setting a control device with attributes
CN112380150A (zh) * 2020-11-12 2021-02-19 上海壁仞智能科技有限公司 计算装置以及用于加载或更新数据的方法

Also Published As

Publication number Publication date
US10423446B2 (en) 2019-09-24
US20180150322A1 (en) 2018-05-31
CN109997112B (zh) 2023-08-18
WO2018096316A1 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
CN109997112A (zh) 数据处理
US10514939B2 (en) Parallel hardware hypervisor for virtualizing application-specific supercomputers
US11010053B2 (en) Memory-access-resource management
CN109997113B (zh) 用于数据处理的方法和装置
JP5294806B2 (ja) デザイン構造、ネットワーク・オン・チップ(‘noc’)でのデータ処理方法、ネットワーク・オン・チップ、およびネットワーク・オン・チップでのデータ処理のためのコンピュータ・プログラム(パーティションを有するネットワーク・オン・チップのためのデザイン構造)
JP4072271B2 (ja) 複数のオペレーティングシステムを実行する計算機
CN109983440A (zh) 数据处理
US20120180068A1 (en) Scheduling and communication in computing systems
JP2002530780A (ja) 再構成可能なプログラマブルロジックデバイスコンピュータシステム
US20120198187A1 (en) Technique for preserving memory affinity in a non-uniform memory access data processing system
CN110892381A (zh) 用于在数据处理系统中进行快速上下文克隆的方法和装置
US20080270770A1 (en) Method for Optimising the Logging and Replay of Mulit-Task Applications in a Mono-Processor or Multi-Processor Computer System
JP6296678B2 (ja) ソフトリアルタイムオペレーティングシステムの実時間性を確保する方法及び装置
US11868306B2 (en) Processing-in-memory concurrent processing system and method
EP1760580B1 (en) Processing operation information transfer control system and method
JPH0950418A (ja) 疎結合並列処理環境において一時的記憶待ち行列機能を有する顧客情報制御システム及び方法
US8862786B2 (en) Program execution with improved power efficiency
JP7425685B2 (ja) 電子制御装置
Shrivastava et al. Supporting transaction predictability in replicated DRTDBS
US20140325516A1 (en) Device for accelerating the execution of a c system simulation
Wilhelm et al. Designing predictable multicore architectures for avionics and automotive systems
Ward Sharing non-processor resources in multiprocessor real-time systems
US20230221993A1 (en) Methods and systems that place and manage workloads across heterogeneous hosts within distributed computer systems
Wootton et al. The/proc Virtual File System
CN116627626A (zh) 用于快速、可扩展的数据密集型计算的系统及方法

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