CN105765536A - 用于数据处理装置的可配置线程排序 - Google Patents
用于数据处理装置的可配置线程排序 Download PDFInfo
- Publication number
- CN105765536A CN105765536A CN201480064516.0A CN201480064516A CN105765536A CN 105765536 A CN105765536 A CN 105765536A CN 201480064516 A CN201480064516 A CN 201480064516A CN 105765536 A CN105765536 A CN 105765536A
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- data processing
- processing equipment
- point
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种数据处理装置及处理数据方法。配置执行电路以执行多个线程,以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理。配置线程分配电路以分别针对多个线程中的各个线程指定参考域中的选定点,以提供针对各个线程来指定对于该线程所定的点的至少一个坐标值来分配数据处理。各个线程参考参考域中的线程的选定点来存取输入数据,并且在线程分配电路中可配置将参考域中的点分配给线程用于数据处理的次序。
Description
技术领域
本发明涉及数据处理领域。更具体地,本发明涉及数据处理任务至数据处理装置中执行的多个线程的分配。
背景技术
众所周知以单程式多数据(singleprogrammultipledata;SPMD)方式程序化的诸如图形处理单元(graphicsprocessingunit;GPU)的现代数据处理装置,在该方式中程序设计师提供单个程序(或核心)及该单个程序应操作的多个数据项的集合。数据处理装置随后建立及执行针对该数据集合内的各个数据项的线程。例如,在GPU上进行图像处理的情境中,可针对帧中的各个像素建立及执行线程,其中同时执行许多线程以便对帧内的各个像素执行相同数据处理操作。
进一步已知的是,若处理数据值的次序经调适以有益于数据处理装置的配置,则诸如GPU之类的数据处理装置在数据处理效率方面可受益。例如,若以取决于待执行的图像处理的需求而修改的次序来处理数据值,则可产生与缓存局域性相关的优势。例如,众所周知,在图像处理操作需要与一个影像像素相关的数据值和与其紧邻像素相关的数据值相比较的情况下,用于处理影像中像素的逐区块途径相对于以逐列光栅次序配置处理像素的途径可能产生改良的缓存效能。
程序设计模型(例如,CUDA及OpenCL)通过使线程分组在一起(例如,在区块中)而允许与像素数据的光栅扫描处理的此偏差,以便更有效率地利用架构特征(例如,局部存储器及阻障)。
为了调适影像帧中像素被处理的次序,众所周知,对于在各个线程中运行的核心,将其地址计算从简单线性递增调适成允许产生例如上述像素逐区块处理的计算。
然而,在诸如GPU之类的大规模并行数据处理装置中,有利的是尽可能减少必须由在各个线程内运行的各个核心所执行的处理,以便允许数据处理装置作为整体更有效地处理大量输入数据。
因此,将为有利的是,通过调适数据项集合被处理的次序以使得数据处理装置能够改良其数据处理效能,而无需增加该并行数据处理设备的各个线程内运行的各个核心上的处理负担。
发明内容
从第一方面看,本技术提供一种经配置以单程式多数据方式执行数据处理的数据处理装置,该数据处理装置包含:执行电路,被配置以执行多个线程以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理;以及线程分配电路,被配置以分别针对多个线程中的各个线程来指定参考域中的选定点,以便通过针对各个线程指定对于该线程所指定的点的至少一个坐标值来分配数据处理,其中各个线程参考参考域中其选定点来存取输入数据,以及其中在线程分配电路中可配置将参考域中的点分配给线程用于数据处理的次序。
数据处理装置是单程式多数据设备,意思是程序设计师仅提供单个程序(即,指令序列)并且指示该单个程序应操作的输入数据。随后配置该设备以在输入数据的集合中同时跨多个数据项的并行方式执行单个程序。为此,数据处理装置具有执行电路,该电路被配置以执行多个线程。这些多个线程中的各个线程随后尝试对已分配给自身的输入数据值执行基本相同的数据处理操作(经历特定线程可采取的条件分支)。根据本技术,执行电路决定执行电路应关于参考域对其执行处理的输入数据值。参考域列出一系列点,并且各个点因此表示个别“处理点”,当线程决定处理哪个输入数据时线程可使用该个别“处理点”作为参考。可由至少一个坐标值来标识参考域中的各个点,例如,在参考域为n维的情况下,可由n个坐标值来参考该域内的给定点。
数据处理装置具有线程分配电路,该电路决定将在执行电路中执行的各个线程的输入数据(应注意,这可为每一线程单个数据输入数据值或可为每一线程多个数据输入值),并且这经由标识参考域中的点的至少一个坐标值来完成。然而,线程分配电路并不仅仅以将具有下一相继坐标值的点分配给下一可用线程的相继方式将输入数据分配给线程,而是以在线程分配电路中可配置将这些点分配给线程用于数据处理的次序来将输入数据分配给线程。因此,该次序的可配置性使得线程分配电路能够取决于数据处理装置和/或正被执行的特定核心的特定需求来调适排序。已发现,仅使线程分组在一起的现有技术方法(例如,CUDA及OpenCL中的那些方法)在关于系统/核心效能方面尚有改良空间。详言之,已发现,使得排序能够以本技术的方式来配置能够实现特别灵活的途径,从而在数据处理装置的各种架构组件的有效使用方面及在优化特定核心的效能方面产生改良。
执行电路可包含仅仅单个执行单元(例如,仅仅单个处理器核心),但在一个实施例中,数据处理装置包含多个执行单元。这进一步增加可由装置实现的并行性,因为跨多个执行单元执行多个线程。
可在数据处理装置中以多种不同方式提供线程分配电路。例如,在一个实施例中,数据处理装置还包含工作管理器电路,该工作管理器电路被配置以在多个执行单元之间分配数据处理,并且由工作管理器电路提供线程分配电路。在具有多个执行单元的此“多核”系统中,提供工作管理器电路以细分数据处理装置的执行单元之间必须作为整体由数据处理实施的数据处理操作(例如,在可用性及容量基础上)。在此实施例中,可因此藉由工作管理器电路所执行的工作分配实现参考域中的点至线程的分配,因此,可在此工作分配阶层上实现将参考域中的点分配给线程的次序的配置。例如,工作管理器电路可使点分组在一起,以使得给定执行单元将对其执行数据处理的输入数据值将展现出局域性,此局域性可例如改良该执行单元内的缓存的使用。
或者或另外,可由与执行电路关联的线程调度电路提供线程分配电路。各个执行单元可因此具有自身的线程调度单元,该调度单元将待由该执行单元执行的数据处理任务分配给在该执行单元内执行的多个线程。因此,可在此线程调度阶层上实现将参考域中的点分配给线程的次序的配置。
在一些实施例中,可以超过一个的粒度阶层来配置将参考域中的点分配给线程的次序。例如,这意味着一方面可按照精细的粒度阶层来改变点的排序(例如,切换个别相邻点的排序)以及可同时以较粗糙的粒度阶层改变排序(例如,切换点的群组的排序)。进一步设想以超过两个粒度阶层同时进行排序变化。
可采用多种方式来改变分配参考域中的点的次序。在一个实施例中,线程分配电路经配置将参考域细分成多个子域,并且线程分配电路经配置以将第一子域内的所有点分配给线程以用于数据处理,随后将第二子域内的点分配给线程以用于数据处理,以使得将点分配给线程的次序并非为贯彻参考域的光栅扫描次序。因此,将参考域至多个子域的细分提供一种途径,通过该途径将点分配给线程用于数据处理的次序并非为贯彻参考域的光栅扫描(亦即,相继)次序。例如,关于二维参考域,线程分配电路可将彼二维域细分成众多较小区块,并且通过基于选定区块排序将点分配给线程用于数据处理,可自光栅扫描次序来改变点的处理次序。
在一个这样的实施例中,线程分配电路经配置以将参考域细分成子域的层级,其中该层级包含至少两个阶层,并且其中线程分配电路经配置以关于层级采用迭代嵌套方式将点分配给线程。可取决于特定系统和/或核心需求来选择线程分配电路接近层级的阶层的嵌套性质的次序。例如,关于层级以深度优先途径进行可为有利的,以使得相继处理(例如,以光栅扫描排序)层级的最低阶层上的点,这意味着总体上以保持点(相继)集合的一定程度的原始局域性的次序来处理这些点。或者,线程分配电路可以宽度优先方式接近子域的层级,这意味着在已处理层级的最低阶层上的给定点后,数据处理随后“跳”至由迭代层级的较高阶层上的子域所产生的新点。例如,若需要以引入一定程度非局域性的方式处理点(并且该程度的非局域性可随后由选择子域大小来配置),则此举可为有利的。例如,在数据处理装置试图利用未决存储器事务队列来隐藏存储器存取延时的情况下,若该队列保持相对较满,则可改良数据处理系统的总体效能,且对子空间的层级的宽度优先途径是实现此举的一种方式。
当线程分配电路经配置以将空间细分为子空间的层级时,可提供的是,系统用户(即,程序设计师)可至少部分地决定如何由线程分配电路处理该层级。因此,在一个实施例中,配置数据处理装置以使得由数据处理装置执行的程序指令可指定层级的至少一个阶层,在该阶层上将由线程分配电路决定将点分配给线程的次序。用户可因此配置点的处理次序,此配置由例如指定层级的选定阶层来进行,在该阶层上线程分配电路应决定将点分配给线程的次序,同时明确指定关于层级的另一阶层的排序。
在一些情形中,用户可能需要对可配置排序的更直接控制,因此在一个实施例中,配置数据处理装置以使得由数据处理装置执行的程序指令可至少部分地指定将点分配给线程的次序。
可普遍应用对次序的该更直接控制,或根据一个实施例,可配置数据处理装置以使得由数据处理装置执行的程序指令可针对层级的至少一个阶层而至少部分地指定将点分配给线程的次序。例如,情况可为,层级的一个阶层的界定对于系统效能特别重要,用户可能因此希望对此阶层采取完全控制,但反之可使得其他阶层的次序由装置自由决定。例如,在层级的给定阶层上,用户可选择以指定应采取宽度优先途径还是深度优先途径来进行层级的该阶层内的点的分配次序。
当将参考域细分为子空间的层级时,可提供的是,系统用户(即,程序设计师)可指定由线程分配电路处理阶层的次序。因此,在一些实施例中,配置数据处理装置以使得由数据处理装置执行的程序指令可指定将使用层级的至少两个阶层来将点分配给线程的次序。例如,在将参考域细分成外部及内部子域的情况下,用户可指定该分配应先对外部子域还是内部子域迭代。
存在数据处理装置的一系列架构特征,当配置将点分配给线程用于数据处理的次序时可将这些架构特征考虑在内。在一些实施例中,至少一个执行电路为基于线程束(warp)的执行电路及取决于由基于线程束的执行电路所使用的线程束中的众多线程来配置将点分配给线程以用于数据处理的次序。基于线程束的执行电路中的线程的坐标执行可受益于点分配的次序,该次序经配置以例如因密切相关(在存储器地址方面)负载而匹配并且储存可随后产生的操作,及可随后执行的更有效率的坐标存储器存取。
在一些实施例中,数据处理装置还包含至少一个缓存储存设备,该缓存储存设备经配置以储存自存储器取得的数据的临时复本,其中取决于缓存的大小来配置将点分配给线程的次序。若将点分配给线程,则可例如使得更有效率地使用缓存,从而使得所得数据处理试图用占据一个缓存线的相关数据项来填充缓存,而不用过多不相关数据项填充,这些不相关数据项将造成缓存中的振荡。在一些实施例中,包含至少一个缓存储存设备,该缓存储存设备经配置以储存自存储器取得的数据的临时复本,取决于缓存的重复使用间隔来配置将点分配给线程的次序。换言之,可选择由正被执行的特定核心(再)存取缓存中的选定数据项的频率作为决定分配点的排序的度量。
在一些实施例中,数据处理装置包含待决事务队列,该待决事务队列经配置以容纳自数据处理所得的未决存储器事务的指示,其中取决于待决事务队列的大小来配置将点分配给线程的次序。例如,若待决事务队列保持相对较满,则可最有效率地操作数据处理装置,因为这可隐藏与各个个别存储器事务关联的延时。根据针对各个点必须存取的对应存储器地址,将点分配给线程的次序可促进保持队列全满。
可采取配置分配点的次序的经验性途径,且在一个实施例中,数据处理装置还包含优化电路,该优化电路经配置以在先前数据处理效能的基础上配置将坐标值分配给线程用于数据处理的次序。可实行此举以优化各种效能参数,例如,数据处理时间和/或数据处理能量消耗。
也可采取配置分配点的次序的预测性途径,且在一个实施例中,数据处理装置还包含优化电路,该优化电路经配置以在数据处理装置的至少一个架构参数的基础上配置将点分配给线程的次序。因此,通过已知如何设置数据处理装置,可已采取步骤改良系统效能。举例而言,这可取决于上文所论及的架构参数之一而改变排序,其中此架构参数对于优化电路是已知的。
在线程分配电路中配置点的分配次序的方式可采取多种形式。例如,在一个实施例中,线程分配电路经配置决定将点分配给线程的次序作为每个线程的线程编号的函数。可例如通过由数据处理装置执行的程序指令来决定此函数。换言之,用户可直接指定此函数,该函数将线程编号转换成参考域中的点。该函数可例如排列线程中每个线程的线程编号的至少一部分。
情况可为不需要(或甚至不希望)将参考域中的所有点分配给线程以用于处理,而是在一些实施例中,配置数据处理装置以使得由数据处理装置执行的程序指令可指定参考域中由线程分配电路将该其分配给线程用于处理的点的子集。
从第二方面看,本技术提供一种数据处理设备,该数据处理装置经设备以单程式多数据方式执行数据处理,该数据处理设备包含:
用于执行多个线程的装置,以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理;以及
用于分别针对多个线程中的各个线程来指定参考域中的选定点的装置,以通过针对各个线程指定对于该线程的所指定点的至少一个坐标值来分配数据处理,
其中各个线程参考参考域中的该线程的选定点来存取输入数据,并且
其中在用于指定的装置中可配置将参考域中的点分配给线程用于数据处理的次序。
从第三方面看,本技术提供一种以单程式多数据方式进行数据处理的方法,该数据处理方法包含以下步骤:
执行多个线程以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理;以及
分别针对多个线程中各个线程来指定参考域中的选定点,以通过针对各个线程指定对于该线程的指定点的至少一个坐标值来分配数据处理,
其中各个线程参考参考域中的该线程的选定点来存取输入数据,以及
其中在指定步骤中可配置将参考域中的点分配给线程用于数据处理的次序。
附图说明
参考随附图式中所图示的实施例,将仅以举例的方式进一步描述本发明,其中:
图1示意性图示在一个实施例中CPU将数据处理任务委派给的多核GPU;
图2示意性图示在一个实施例中数据处理任务至基于线程束的执行单元中的线程的分配,以及具有效能优化器,该效能优化器经配置以改变数据处理任务至这些线程的分配;
图3示意性图示对应于影像数据的帧的维数的参考域;
图4A示意性图示参考域至子域的层级的细分;
图4B示意性图示参考域至子域的层级的细分及关于这些子域排序的不同选择;
图5A至图5C图示在一个实施例中可用于配置数据处理装置的操作的示例性程序指令;
图6A至图6C图示可提供以将线程编号转换成参考域中的点坐标的一些函数;
图7示意性图示在一个实施例中可将参考域中的点分配给基于线程束的执行单元中的不同线程束的次序的一个配置;
图8示意性图示在一个实施例方法中可采取的一系列步骤;
图9示意性图示在一个实施例中为监测及调适数据处理效能所采取的一系列步骤;以及
图10示意性图示在一个实施例中当决定参考测试配置来将点分配给线程用于数据处理的较佳次序时所采取的一系列步骤。
具体实施方式
图1示意性图示一个实施例中的数据处理装置10。该数据处理装置10包含经由系统总线18耦接在一起的图形处理单元(graphicsprocessingunit;GPU)12、中央处理单元(centralprocessingunit;CPU)14及存储器16。由CPU14维持对数据处理装置10的总体控制,该CPU14执行限定其数据处理操作的程序指令的序列(例如,自存储器16取得的程序指令)。将GPU12提供为专用硬件设备,CPU14可对该GPU委派各种数据处理任务。具体地,GPU12经配置以特别良好地适合于高并行化数据处理操作,例如结合图形处理可与通常需要的一样。此外,配置GPU12以使用单程式多数据(SPMD)程序设计模型来程序化该GPU,其中程序设计师提供单个程序(或核心)及辨识应执行该程序所相关的目标数据。此外,如参看后续图将更详细解释,程序设计师辨识应如何通过指定参考域来处理输入数据。在第1图中的GPU12上下文中,此参考域可例如为二维参考域,该二维参考域在大小上对应于待由GPU所处理的影像帧的尺寸。
GPU12包含两个核心20及22,各个核心经配置以并行执行多个线程。为了管理数据处理任务至各个核心内的线程的分配,各个核心分别被提供以线程调度器24、26。由工作管理器28管理两个核心之间的数据处理任务的较高阶层细分。如参看以下图将更详细地论述,排列GPU12以使得可改变将由程序设计师所指定的参考域中的点分配给核心20及22上正执行的个别线程的次序。可因GPU独立动作发生该变化,或可(替代地或另外)因明确的程序设计师选择而发生该变化。
在各个核心20、22内,将参考域中的点分配给线程的次序的变化可由各别线程调度器24、26实行。然而,应将了解,根据其所执行的工作分配,工作管理器28亦可在该排序的配置中起作用。例如,在参考域中的点共同聚集成众多群组中的情况下,工作管理器28可通过将点的群组作为工作分配给核心而影响处理这些点的群组的次序。
各个处理器核心20、22具有关联一阶(level1;L1)缓存30、32,且各个缓存具有未决事务队列34、36。核心共享二阶(level2;L2)缓存38,该缓存38本身具有自身的未决事务队列40。如本领域技术人员将熟知的,提供L1缓存30、32及L2缓存38,以使得每次存取给定数据值时各个处理器核心20、22不经历与经由系统总线18自存储器16取得数据值关联的完全存储器延时。本领域技术人员将类似地熟悉所示出的各个缓存中的未决事务队列34、36、40的配设,其中针对各个事务产生条目,该事务已被从该缓存阶层请求但尚未完成。如参看以下图将更详细地论述,缓存30、32、38及其相应未决事务队列34、36、40的大小表示数据处理装置10的架构参数,在决定应如何配置将参考域中的点分配给线程用于执行的次序时可将这些参数考虑在内。
GPU12进一步被提供有效能优化器单元42,该单元监测作为整体的GPU12的效能及GPU12的特定组件的效能(自效能监测器43接收此信息),且在效能反馈信息的基础上该单元经配置以在需要的情况下发送讯号至工作管理器28或线程调度器24、26通知应修正该次序以便改良系统效能。如正由效能优化器42执行的特定决定所需要的,效能监测器43经配置以贯穿GPU12接收效能信息。效能优化器42可经配置以根据不同度量来优化效能。一个度量为数据处理时间,即,实施特定操作集合所耗费的时间。另一度量为数据处理能量消耗,即,当执行预定数据处理任务时由GPU12所消耗的(估计的)能量。可例如由计数高能操作(诸如浮点加法/乘法、指令提取及L1、L2与存储器之间的数据移动)来估计能量消耗。通过将标称能量成本指派给各个操作,可能估计所使用的总能量。另外,可通过量测各个单元的有效循环数且针对各个单元具有每一循环的标称能量成本(=功率)来决定所使用的静态能量。在效能监测器43中实施这些决定。或者,效能监测器43可经配置以含有显式电路以直接量测所使用的能量。
图2示意性图示图1中的GPU12中所示的核心之一中的线程调度器操作的方式的更多细节及并行执行多个线程的更多细节。此处采用核心20的示例,且因此展示线程调度器24、L1缓存30及其未决事务队列34。在图2中亦再次图示图1的效能优化器42、L2缓存38及存储器16。如自图2的顶部可见,核心20事实上不但经配置以执行并行线程执行,而且是基于线程束的执行单元,该执行单元经配置以将8个线程T0-T7作为一个线程束执行,并且经配置以保存线程的8个线程束(图示为线程束0至线程束7)。线程调度器24将线程分配成线程束并将数据处理任务分配给各个线程。部分地关于界定参考域的参考域信息(该参考域应被用于决定由各个线程所实施的数据处理所针对的输入数据)及部分地基于用户说明书(此为专用程序指令的形式(由线程调度器24/工作管理器28执行),从而允许用户指定应如何配置将参考域中的点分配给线程用于处理的次序的某些方面)来完成此举。另外,线程调度器24响应于来自效能优化器42的输入,该效能优化器本身接收关于数据处理设备的配置的架构信息作为一个输入并接收关于当前或先前数据处理效能的处理效能信息作为另一输入。
如图2所示,核心20当前执行线程束0,该线程束0包含线程T0-T7。因此,在运行阶段中,各个线程具有关联程序计数器值PC(即,PC0-PC7)。理想地,线程T0-T7完全彼此并行操作(即,无发散)并且随后将均关于相同程序计数器值PC进行操作。处于相同程序计数器值PC的一个特定益处在于在负载/储存阶段中将密切对准8个线程的集合试图存取的存储器地址A0-A7。在一些情况中,这些可实际上为相同存储器地址,或可例如仅为相对于彼此的小增量,意谓例如单个缓存线可覆盖所需数据值中的若干者(若并非全部)。作为基于线程束的执行单元,核心20具有机制以辨识经寻址的A0-A7何时彼此密切相关及因此优化(例如,分组在一起)所得存储器事务。
在图2示意性图示的处理排列的上下文中,本技术认识到可通过关于线程调度器24将参考域中的点分配给线程用于数据处理的次序作出的目标选择来增加效能优势。这随后使得数据处理装置的架构组件能够被更有效率地使用(例如,通过受益于缓存局限性),但在没有此效率的情况下,在必须使用有价值的数据处理能力来执行非相继存储器地址计算的执行线程的耗费方面取胜。
可获得的效能改良的一个示例为如果负载/储存阶段的存储器寻址A0-A7密切相关,则可产生通过线程调度器24选择的参考域中的点的分配排序以支持此改良。反之,若有意断开此存储器地址关联(至少在某种程度上),可事实上产生较佳效能优势。参考未决事务队列34可理解此优势,其中关于各个存储器事务产生条目,即,其中始于核心20的存储器事务已不能够关于当前容纳在L1缓存30的缓存线44中的数据值而完成,并且当前正从L2缓存38或进一步从存储器16取得所需数据。为了隐藏与自L2缓存38或更显著地自存储器16所取得关联的存储器延迟,未决事务队列34保持相对较满为有利的。实现此举的一种方式在于改变由线程调度器24将参考域中的点分配给线程用于处理的次序,以使得削弱负载/储存阶段的存储器地址A0-A7之间的关联,因此需要更独立的存储器事务。应认识到,关于未决事务队列的群体的相同原理同等应用于另一L1缓存36或实际上应用于L2缓存40。
图2中所示的组件的另一架构特征为缓存的配置大小,当决定线程调度器24将参考域中的点分配给线程用于数据处理的次序时可将该架构特征考虑在内。例如,各个个别缓存线44的大小及可由L1缓存30容纳的那些缓冲线的数量可为显著因素。为了确保有效率地使用L1缓存30,可相应调节线程调度器24将参考域中的点分配给线程用于数据处理的次序。
图3示意性图示根据本技术可采用的参考域。如图可见,在此情况中,参考域为二维参考域,具体地,包含1000×800个点。在此情况中,点的二维集合以一对一关系与影像数据的帧对应(即,该帧包含1000×800像素),然而应注意,此一对一关系并非必要的,且可取决于正执行的处理而变化。例如,可设想具有比存在像素更少参考点的参考域,例如,当并非所有像素需要处理时(例如,仅应处理交替像素时)。或者,也可设想具有比存在像素更多参考点的参考域,及可甚至具有额外维数,例如,当关于各个像素应发生超过一个处理步骤并且额外维数提供对应于各个像素的各个处理步骤的参考点的集合时。图3中所示的像素60之突出集合提供了当未以光栅扫描次序处理像素可为有利时的实例。在此实例中,关于各个像素位置正执行的特定处理需要与紧密(上/下/左/右)相邻的像素位置作出比较。因此,以如图所示的两个不同处理步骤来存取像素位置的两个示例性集合,第一者由“x”的十字形集合指示,第二者由“o”的十字形集合指示。这些集合中的各者的空间展开及各者之间的重叠说明为何参考域中的点(且因此在此实例中帧中的像素)所用的排序的逐区块途径比光栅扫描次序更佳,因为这产生改良的缓存使用。
图4A示意性图示二维参考域50的实例。此外,图4A图示将此参考域内的点分配用于处理的次序可如何脱离简单相继的光栅扫描排序的实例。图3中的矩形图示如何将参考域50细分成较小矩形的阶层的层级,其中层级较高阶层的四个矩形52各个被细分成层级较低阶层的九个矩形54。图4A中的箭头图标以光栅扫描次序获取各个矩形54内的点,及以光栅扫描次序处理矩形54本身,及最后亦以光栅扫描次序处理矩形52本身。
本技术的特定特征在于不仅可由用户配置图4A中的(子)矩形的大小,而且可类似配置矩形的层级中的阶层数量。此外,尽管用户可选择完全指定在层级的所有阶层上分配参考域中的点的次序,但对于用户亦可能选择层级中的一个或多个阶层,在该阶层上指定排序,同时由数据处理装置本身决定剩余阶层上的排序。
图4B示意性图示关于层级细分参考域的各个阶层可如何作出不同选择。出于简要说明目的,此处将参考域限制为二维8×4域(即,具有32个点用于分配)。已将参考域细分成包含“外部”4×4子域及“内部”2×2子域的层级。在层级的各个阶层上,系统用户可指定是应采取“深度优先”途径还是应采取“宽度优先”途径。示出所得分配排序的所得四个不同排列。应注意,不一定需要用户明确指定各个阶层的排序,并且若并非为用户指定,则该系统可经配置以默认为例如针对层级的给定阶层的深度优先排序,或针对系统基于特定装置的特征选择适宜排序。
图5A至图5C示意性图示在一个实施例中可用于配置数据处理装置的示例性程序指令。因此,在主要数据处理开始前,这些表示在初始设置阶段由数据处理装置执行的程序指令。图5A所示的程序指令序列对应于图4A示意性示出的处理配置。因此,第一指令“界定参考域(1000,800)”界定待使用的参考域的维数。第二指令“界定层级阶层=2”设置层级的阶层数量。第三及第四指令“界定阶层”设置各个阶层的配置(即,在此实例中分别为矩形的2×2及3×3集合)。第五及第六指令“界定排序阶层[x]”允许程序设计师明确界定应处理层级的各个阶层上的矩形的次序,在此情况中分别采用深度优先次序及宽度优先次序。第七指令“界定排序阶层[基础]”允许程序设计师明确界定应处理层级的基础阶层上的矩形的次序(例如,图4A中的各个矩形54内),在此情况中将该次序明确界定为光栅扫描次序。图5B图示一种替代方式,在该方式中可使用程序指令指定应由数据处理装置处理参考域点的排序。第一指令“界定排序阶层0,[函数]”允许程序设计师针对层级的特定阶层来明确界定用于取决于线程编号决定将点分配给线程的次序的函数。下文参看图6A至图6C描述此类函数的进一步实例。第二指令“界定排序阶层0,[硬件]”允许程序设计师明确界定层级的阶层,在该阶层上应由硬件(即,由数据处理装置)决定将点分配给线程的次序。参看图1,随后将由工作管理器28及/或线程调度器24、26来实施硬件内的此选择。第三指令“界定点使用,交替”允许程序设计师指定参考域中的点的子集,实际上应将该子集分配给线程用于处理。在此实例中,应仅处理交替点(例如,以棋盘方式)。或者,用户可明确指定“界定点使用,全部”以指示应分配所有点,但此亦为系统的默认动作。作为另一替代者,用户可明确指定“界定点使用,函数”以指示应分配满足所指定函数“函数”的所有点,此举可例如界定参考域内的几何子空间(例如,圆圈)。
最后,图5C呈现在开始数据处理操作前程序设计师向数据处理装置提供的信息的高阶层视图。具体地,所提供的三个组件为:核心;参考域界定;及(至少部分)排序界定。
图6A至图6C示出一些函数,可在给定线程编号(Tn)基础上由这些函数选择参考域内的点。图6A示出可提供分离函数fnx及fny以决定二维参考帧中的各个坐标(x,y)。图6B示出二维参考帧的宽度W可用于与线程编号Tn组合来计算x及y坐标。图6C示出8位线程编号可提供二维参考帧中的各个坐标(x,y)的函数,其中四个最高有效位提供y坐标及四个最低有效位提供x坐标,及其中该函数经配置以置换(即,交换)x及y坐标的最低有效位。图示处所得参考点排序。
图7示意性图示将参考域中的点分配给线程用于数据处理的次序的配置可如何被链接至数据处理装置的线程束结构。具体地,如图中所示,已配置排序,以使得当考虑参考域中的一行点时,交插已分配的线程所属的线程束。此意谓各个线程束存取存储器的较大展开,及引发更多条目被添加至缓存中的负载队列(若非已存在)。由此,在最早线程束中,存储器操作开始更快且因此延时减小。
图8示意性图示在一个实施例中可由数据处理装置所采取的步骤序列。第一步骤100决定参考域的维数(例如,自“界定参考域”指令,诸如参看图5A所描述的)。下一步骤101决定是否已指定任何用户指定子范围/子范围使用(例如,自“界定层级阶层”等指令,诸如参看图5A所描述)。随后,在步骤102处,决定参考域内的子范围是否已为完全用户指定。若是,则流程行进至步骤105,在此处使用用户指定子范围及排序将参考域中的点分配给线程。但是若在参考域中存在待分配的点(在步骤106处检查),则流程继续围绕步骤105/步骤106循环。一旦已处理所有参考点及参考域,可认为在步骤107处该处理完成。然而,应注意,数据处理装置的典型配置以相继处理许多影像帧,且因此一旦已关于一个影像帧使用参考域中的所有点,则下一步骤将通常为重置回参考帧的开始以开始处理下一影像帧。返回至步骤102处,决定参考域内的子范围及排序并非为完全用户指定,则流程行进至步骤103处,在此处使用任何用户指定的子范围及排序来将参考域中的点分配给线程,从而在硬件有自由度实行此举的情况下允许硬件(即,通常工作管理器及(一个或多个)线程调度单元)决定任何子范围/排序。具体地,可由硬件决定这些以使得产生对数据处理装置的架构组件的有效率使用,如上文所描述。但是若在参考域中存在待分配的点(在步骤104处检查),则流程继续围绕步骤103/步骤104循环。一旦已处理参考域中的所有参考点,可认为在步骤107处该处理完成(经历上文所论及的关于相继处理许多影像帧的相同警告)。
图9示意性图示在一个实施例中可由数据处理装置所采取的步骤序列。这些步骤与图1及图2中所图示的效能优化器42的操作特别关联。在第一步骤110处,数据处理装置使用选定的坐标值到线程的排序来执行数据处理(即,针对将参考域中的点分配给线程用于数据处理的当前配置)。步骤111示出效能优化器42监测及日志记录数据处理装置的数据处理效能(例如,根据系统组件使用的时间耗费、所估计能量消耗或其他方面)。随后在步骤112处决定是否需要调适数据处理装置的效能,例如因为已决定可实现更加有效率的数据处理。将影像数据的帧作为数据处理装置内所分配的“工作”来处理,当各个工作的处理结束时(即,在已处理各个帧后)可执行在步骤112处所执行的决定,因为其在可实施对效能的有意义分析的阶段前可不执行。若可实现效能改良,则在步骤113处调节界定将参考域中的点(坐标)分配给线程用于处理的次序的配置。此后流程返回至步骤110。应注意,可根据需要由GPU12或者CPU14(参看图1)实施此效能调适。
图10示意性图示在一个实施例中可由数据处理装置所采取的步骤序列。这些步骤与经验途径特别关联,以决定针对将参考域点分配给线程用于处理的次序的最佳配置。在对真实目标数据的处理开始前,用图10中所图标的方法针对样本数据测试出众多不同配置。流程可视为从步骤115处开始,在此处测试第一配置,及在步骤116处,数据处理装置经再配置以使用此新排序配置。在此配置基础上,在步骤117处监测及日志记录数据处理装置的效能,直至已聚集足够数据来评估此配置。流程随后返回至步骤115,在此处决定是否存在待测试的排序的另一配置。当存在待测试的排序的另一配置时,流程继续围绕步骤115/116/117循环,轮流测试各个配置及针对各者聚集效能数据。一旦已测试所有配置,流程分支至步骤118,在此处决定较佳配置,因此在步骤119处调适排序配置及在步骤120处开始目标数据处理。
尽管本文已描述特定实施例,但应将了解,本发明并不受限于此且可在本发明之范畴内对这些实施例实施做出许多修改及添加。例如,可在不脱离本发明之范畴的情况下由独立权利要求的特征产生所附属权利要求的特征的各种组合。
权利要求书(按照条约第19条的修改)
1.一种数据处理装置,经配置以单程式多数据方式执行数据处理,该数据处理装置包括:
执行电路,其经配置以执行多个线程以通过参考针对输入数据的数据处理所指定的参考域的点的集合来对所述输入数据执行数据处理,其中所述参考域中的点是由所述参考域中的坐标值来标识的,并且其中所述数据处理参考所述参考域中的点的至少一个坐标值;以及
线程分配电路,其经配置以分别针对所述多个线程中的各个线程来指定所述参考域中的选定点,以通过针对各个线程指定对于该线程的所指定的点的至少一个坐标值来分配数据处理,
其中各个线程参考所述参考域中的该线程的选定点来存取所述输入数据,并且
其中在所述线程分配电路中可配置将所述参考域中的点分配给线程用于数据处理的次序。
2.如权利要求1所述的数据处理装置,包括多个执行单元。
3.如权利要求2所述的数据处理装置,还包括工作管理器电路,该工作管理器电路经配置以在所述多个执行单元之间分配数据处理,并且由所述工作管理器电路来提供所述线程分配电路。
4.如前述权利要求中任一项所述的数据处理装置,其中由与所述执行电路关联的线程调度电路提供所述线程分配电路。
5.如前述权利要求中任一项所述的数据处理装置,其中在超过一个的粒度阶层上可配置将所述参考域中的点分配给线程的次序。
6.如前述权利要求中任一项所述的数据处理装置,其中所述线程分配电路经配置以将所述参考域细分成多个子域,并且其中所述线程分配电路经配置以将第一子域内的所有点分配给线程用于数据处理,随后将第二子域内的点分配给线程,以使得将点分配给线程的次序并非贯穿所述参考域为光栅扫描次序。
7.如权利要求6所述的数据处理装置,其中所述线程分配电路经配置以将所述参考域细分成子域的层级,其中所述层级包括至少两个阶层,并且其中所述线程分配电路经配置以关于所述层级以迭代嵌套方式来将点分配给线程。
8.如权利要求7所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够指定该层级的至少一个阶层,在该至少一个阶层上将由所述线程分配电路决定将点分配给线程的次序。
9.如前述权利要求中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够至少部分地指定将点分配给线程的次序。
10.如权利要求7-9中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够针对所述层级的至少一个阶层至少部分地指定将点分配给线程的次序。
11.如权利要求7-10中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够指定将使用所述层级的所述至少两个阶层将点分配给线程的次序。
12.如前述权利要求中任一项所述的数据处理装置,其中所述执行电路为基于线程束的执行电路,并且将点分配给线程用于数据处理的次序是取决于由该基于线程束的执行电路所使用的线程束中的多个线程来配置的。
13.如前述权利要求中任一项所述的数据处理装置,还包括至少一个缓存存储设备,该缓存存储设备经配置以储存从存储器取得的数据的临时复本,其中将点分配给线程的次序是取决于该缓存的大小来配置的。
14.如前述权利要求中任一项所述的数据处理装置,还包括至少一个缓存存储设备,该缓存存储设备经配置以储存从存储器取得的数据的临时复本,其中将点分配给线程的次序是取决于该缓存的重复使用间隔来配置的。
15.如前述权利要求中任一项所述的数据处理装置,还包括待决事务队列,该待决事务队列经配置以容纳从该数据处理所得的对未决存储器事务的指示,其中将点分配给线程的次序是取决于所述待决事务队列的大小来配置的。
16.如前述权利要求中任一项所述的数据处理装置,还包括优化电路,该优化电路经配置以在先前数据处理效能基础上配置将坐标值分配给线程用于数据处理的次序。
17.如权利要求16所述的数据处理装置,其中所述优化电路经配置以优化以下项中的至少一项:数据处理时间和数据处理能量消耗。
18.如前述权利要求中任一项所述的数据处理装置,还包括优化电路,该优化电路经配置以在所述数据处理装置的至少一个架构参数的基础上配置将点分配给线程的次序。
19.如前述权利要求中任一项所述的数据处理装置,其中所述线程分配电路经配置以决定将点分配给线程的次序作为这些线程中每个线程的线程编号的函数。
20.如权利要求19所述的数据处理装置,其中所述函数是通过由所述数据处理装置执行的程序指令来决定的。
21.如权利要求19或20所述的数据处理装置,其中所述函数经配置以排列这些线程中每个线程的线程编号的至少一部分。
22.如前述权利要求中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够指定所述参考域中的点的子集,将由所述线程分配电路将所述点的子集分配给线程用于处理。
23.一种数据处理设备,其经配置以单程式多数据方式执行数据处理,该数据处理设备包括:
用于执行的装置,其执行多个线程以通过参考针对输入数据的数据处理所指定的参考域的点的集合来对所述输入数据执行数据处理,其中所述参考域中的点是由所述参考域中的坐标值来标识的,并且其中所述数据处理参考所述参考域中的点的至少一个坐标值;以及
用于指定的装置,其分别针对所述多个线程中的各个线程指定所述参考域中的选定点,以通过针对各个线程指定对于该线程的所指定的点的至少一个坐标值来分配该数据处理,
其中各个线程参考所述参考域中的该线程的选定点来存取实施输入数据,并且
其中在所述用于指定的装置中可配置将所述参考域中的点分配给线程用于数据处理的次序。
24.一种以单程式多数据方式进行数据处理的方法,该数据处理的方法包括以下步骤:
执行多个线程以通过参考针对输入数据的数据处理所指定的参考域的点的集合来对所述输入数据执行数据处理,其中所述参考域中的点是由所述参考域中的坐标值来标识的,并且其中所述数据处理参考所述参考域中的点的至少一个坐标值;以及
分别针对所述多个线程中的各个线程指定所述参考域中的选定点,以通过针对各个线程指定对于该线程的所指定的点的至少一个坐标值来分配数据处理,
其中各个线程参考所述参考域中的该线程的选定点来存取所述输入数据,并且
其中在所述指定步骤中可配置将所述参考域中的点分配给线程用于数据处理的次序。
Claims (26)
1.一种数据处理装置,经配置以单程式多数据方式执行数据处理,该数据处理装置包括:
执行电路,其经配置以执行多个线程以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理;以及
线程分配电路,其经配置以分别针对所述多个线程中的各个线程来指定所述参考域中的选定点,以通过针对各个线程指定对于该线程的所指定的点的至少一个坐标值来分配数据处理,
其中各个线程参考所述参考域中的该线程的选定点来存取所述输入数据,并且
其中在所述线程分配电路中可配置将所述参考域中的点分配给线程用于数据处理的次序。
2.如权利要求1所述的数据处理装置,包括多个执行单元。
3.如权利要求2所述的数据处理装置,还包括工作管理器电路,该工作管理器电路经配置以在所述多个执行单元之间分配数据处理,并且由所述工作管理器电路来提供所述线程分配电路。
4.如前述权利要求中任一项所述的数据处理装置,其中由与所述执行电路关联的线程调度电路提供所述线程分配电路。
5.如前述权利要求中任一项所述的数据处理装置,其中在超过一个的粒度阶层上可配置将所述参考域中的点分配给线程的次序。
6.如前述权利要求中任一项所述的数据处理装置,其中所述线程分配电路经配置以将所述参考域细分成多个子域,并且其中所述线程分配电路经配置以将第一子域内的所有点分配给线程用于数据处理,随后将第二子域内的点分配给线程,以使得将点分配给线程的次序并非贯穿所述参考域为光栅扫描次序。
7.如权利要求6所述的数据处理装置,其中所述线程分配电路经配置以将所述参考域细分成子域的层级,其中所述层级包括至少两个阶层,并且其中所述线程分配电路经配置以关于所述层级以迭代嵌套方式来将点分配给线程。
8.如权利要求7所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够指定该层级的至少一个阶层,在该至少一个阶层上将由所述线程分配电路决定将点分配给线程的次序。
9.如前述权利要求中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够至少部分地指定将点分配给线程的次序。
10.如权利要求7-9中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够针对所述层级的至少一个阶层至少部分地指定将点分配给线程的次序。
11.如权利要求7-10中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够指定将使用所述层级的所述至少两个阶层将点分配给线程的次序。
12.如前述权利要求中任一项所述的数据处理装置,其中所述执行电路为基于线程束的执行电路,并且将点分配给线程用于数据处理的次序是取决于由该基于线程束的执行电路所使用的线程束中的多个线程来配置的。
13.如前述权利要求中任一项所述的数据处理装置,还包括至少一个缓存存储设备,该缓存存储设备经配置以储存从存储器取得的数据的临时复本,其中将点分配给线程的次序是取决于该缓存的大小来配置的。
14.如前述权利要求中任一项所述的数据处理装置,还包括至少一个缓存存储设备,该缓存存储设备经配置以储存从存储器取得的数据的临时复本,其中将点分配给线程的次序是取决于该缓存的重复使用间隔来配置的。
15.如前述权利要求中任一项所述的数据处理装置,还包括待决事务队列,该待决事务队列经配置以容纳从该数据处理所得的对未决存储器事务的指示,其中将点分配给线程的次序是取决于所述待决事务队列的大小来配置的。
16.如前述权利要求中任一项所述的数据处理装置,还包括优化电路,该优化电路经配置以在先前数据处理效能基础上配置将坐标值分配给线程用于数据处理的次序。
17.如权利要求16所述的数据处理装置,其中所述优化电路经配置以优化以下项中的至少一项:数据处理时间和数据处理能量消耗。
18.如前述权利要求中任一项所述的数据处理装置,还包括优化电路,该优化电路经配置以在所述数据处理装置的至少一个架构参数的基础上配置将点分配给线程的次序。
19.如前述权利要求中任一项所述的数据处理装置,其中所述线程分配电路经配置以决定将点分配给线程的次序作为这些线程中每个线程的线程编号的函数。
20.如权利要求19所述的数据处理装置,其中所述函数是通过由所述数据处理装置执行的程序指令来决定的。
21.如权利要求19或20所述的数据处理装置,其中所述函数经配置以排列这些线程中每个线程的线程编号的至少一部分。
22.如前述权利要求中任一项所述的数据处理装置,其中所述数据处理装置经配置以使得由该数据处理装置执行的程序指令能够指定所述参考域中的点的子集,将由所述线程分配电路将所述点的子集分配给线程用于处理。
23.一种数据处理设备,其经配置以单程式多数据方式执行数据处理,该数据处理设备包括:
用于执行的装置,其执行多个线程以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理;以及
用于指定的装置,其分别针对所述多个线程中的各个线程指定所述参考域中的选定点,以通过针对各个线程指定对于该线程的所指定的点的至少一个坐标值来分配该数据处理,
其中各个线程参考所述参考域中的该线程的选定点来存取实施输入数据,并且
其中在所述用于指定的装置中可配置将所述参考域中的点分配给线程用于数据处理的次序。
24.一种以单程式多数据方式进行数据处理的方法,该数据处理的方法包括以下步骤:
执行多个线程以通过参考参考域中的点的至少一个坐标值来对输入数据执行数据处理;以及
分别针对所述多个线程中的各个线程指定所述参考域中的选定点,以通过针对各个线程指定对于该线程的所指定的点的至少一个坐标值来分配数据处理,
其中各个线程参考所述参考域中的该线程的选定点来存取所述输入数据,并且
其中在所述指定步骤中可配置将所述参考域中的点分配给线程用于数据处理的次序。
25.一种基本参照附图如本文所描述的数据处理装置。
26.一种基本参照附图如本文所描述的数据处理方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1321831.8 | 2013-12-10 | ||
GB1321831.8A GB2521151B (en) | 2013-12-10 | 2013-12-10 | Configurable thread ordering for a data processing apparatus |
PCT/GB2014/053418 WO2015087041A1 (en) | 2013-12-10 | 2014-11-19 | Configurable thread ordering for a data processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105765536A true CN105765536A (zh) | 2016-07-13 |
CN105765536B CN105765536B (zh) | 2020-04-14 |
Family
ID=50000493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480064516.0A Active CN105765536B (zh) | 2013-12-10 | 2014-11-19 | 可配置线程排序的数据处理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9703604B2 (zh) |
KR (1) | KR102236426B1 (zh) |
CN (1) | CN105765536B (zh) |
GB (1) | GB2521151B (zh) |
TW (1) | TWI619074B (zh) |
WO (1) | WO2015087041A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2536211B (en) | 2015-03-04 | 2021-06-16 | Advanced Risc Mach Ltd | An apparatus and method for executing a plurality of threads |
US10430229B2 (en) * | 2015-12-21 | 2019-10-01 | Intel Corporation | Multiple-patch SIMD dispatch mode for domain shaders |
CN107894963B (zh) * | 2017-11-27 | 2021-07-27 | 上海兆芯集成电路有限公司 | 用于系统单芯片的通信控制器与通信方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724586A (en) * | 1996-09-30 | 1998-03-03 | Nec Research Institute, Inc. | Method for improving cache locality of a computer program |
CN101069161A (zh) * | 2004-12-01 | 2007-11-07 | 索尼计算机娱乐公司 | 调度方法、调度装置和多处理器系统 |
CN101082934A (zh) * | 2007-06-19 | 2007-12-05 | 北京师范大学 | 网络环境下超大规模空间数据的三维可视化方法 |
US20110072244A1 (en) * | 2009-09-24 | 2011-03-24 | John Erik Lindholm | Credit-Based Streaming Multiprocessor Warp Scheduling |
CN102224476A (zh) * | 2008-10-14 | 2011-10-19 | 奥布隆工业有限公司 | 多进程交互系统和方法 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4318173A (en) * | 1980-02-05 | 1982-03-02 | The Bendix Corporation | Scheduler for a multiple computer system |
US4333144A (en) * | 1980-02-05 | 1982-06-01 | The Bendix Corporation | Task communicator for multiple computer system |
US6631454B1 (en) | 1996-11-13 | 2003-10-07 | Intel Corporation | Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies |
DE19822543A1 (de) * | 1998-05-20 | 1999-11-25 | Alcatel Sa | Verfahren zum Zuteilen von Aufträgen, Datenverarbeitssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium |
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
US6542921B1 (en) | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
DE10061001B4 (de) * | 2000-12-08 | 2005-05-04 | Robert Bosch Gmbh | Verfahren und Steuergerät zur Steuerung von technischen Vorgängen in einem Kraftfahrzeug, sowie Speicherelement und Steuerprogramm hierfür |
US20040015684A1 (en) * | 2002-05-30 | 2004-01-22 | International Business Machines Corporation | Method, apparatus and computer program product for scheduling multiple threads for a processor |
US7401335B2 (en) * | 2003-02-28 | 2008-07-15 | Wind River Systems, Inc. | Single stack kernel |
US7257633B2 (en) * | 2003-03-03 | 2007-08-14 | Sun Microsystems, Inc. | Dynamic allocation of a pool of threads |
US7337443B2 (en) * | 2003-06-30 | 2008-02-26 | Microsoft Corporation | Method and apparatus for processing program threads |
US7441101B1 (en) * | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7802255B2 (en) * | 2003-12-19 | 2010-09-21 | Stmicroelectronics, Inc. | Thread execution scheduler for multi-processing system and method |
WO2005069155A2 (en) * | 2004-01-08 | 2005-07-28 | Koninklijke Philips Electronics, N.V. | Method and apparatus for task schedulin in a multi-processor system based on memory requirements |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US20050237329A1 (en) | 2004-04-27 | 2005-10-27 | Nvidia Corporation | GPU rendering to system memory |
US7941645B1 (en) * | 2004-07-28 | 2011-05-10 | Nvidia Corporation | Isochronous pipelined processor with deterministic control |
US7634774B2 (en) * | 2004-09-13 | 2009-12-15 | Integrated Device Technology, Inc. | System and method of scheduling computing threads |
US7418576B1 (en) | 2004-11-17 | 2008-08-26 | Nvidia Corporation | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations |
DE102004061339A1 (de) * | 2004-12-20 | 2006-06-29 | Infineon Technologies Ag | Scheduling-Verfahren, insbesondere Kontex-Scheduling-Verfahren, und Einrichtung zur Verwendung bei einem Scheduling-Verfahren |
US7681014B2 (en) | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US20070030280A1 (en) * | 2005-08-08 | 2007-02-08 | Via Technologies, Inc. | Global spreader and method for a parallel graphics processor |
US7659898B2 (en) * | 2005-08-08 | 2010-02-09 | Via Technologies, Inc. | Multi-execution resource graphics processor |
US7659899B2 (en) * | 2005-08-08 | 2010-02-09 | Via Technologies, Inc. | System and method to manage data processing stages of a logical graphics pipeline |
GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
US7728841B1 (en) * | 2005-12-19 | 2010-06-01 | Nvidia Corporation | Coherent shader output for multiple targets |
US8959515B2 (en) * | 2006-01-18 | 2015-02-17 | International Business Machines Corporation | Task scheduling policy for limited memory systems |
US8001549B2 (en) * | 2006-04-27 | 2011-08-16 | Panasonic Corporation | Multithreaded computer system and multithread execution control method |
EP2118851A2 (en) * | 2007-02-14 | 2009-11-18 | Technion Research & Development Foundation Ltd. | Parallel approximation of distance maps |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
EP2192483B1 (en) * | 2007-06-20 | 2016-04-20 | Fujitsu Limited | Processing device |
US20090138683A1 (en) * | 2007-11-28 | 2009-05-28 | Capps Jr Louis B | Dynamic instruction execution using distributed transaction priority registers |
US9110716B2 (en) | 2008-06-10 | 2015-08-18 | Dell Products, Lp | Information handling system power management device and methods thereof |
JP5173711B2 (ja) * | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
JP5173712B2 (ja) | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
US9244732B2 (en) | 2009-08-28 | 2016-01-26 | Vmware, Inc. | Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution |
GB2471067B (en) * | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US8310492B2 (en) | 2009-09-03 | 2012-11-13 | Ati Technologies Ulc | Hardware-based scheduling of GPU work |
US9798543B2 (en) * | 2009-09-24 | 2017-10-24 | Nvidia Corporation | Fast mapping table register file allocation algorithm for SIMT processors |
US8364739B2 (en) * | 2009-09-30 | 2013-01-29 | International Business Machines Corporation | Sparse matrix-vector multiplication on graphics processor units |
US8166237B1 (en) * | 2009-10-23 | 2012-04-24 | Altera Corporation | Configurable allocation of thread queue resources in an FPGA |
KR101686082B1 (ko) * | 2010-07-22 | 2016-12-28 | 삼성전자주식회사 | 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 |
WO2012020478A1 (ja) * | 2010-08-10 | 2012-02-16 | 富士通株式会社 | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 |
US8566647B2 (en) * | 2010-12-20 | 2013-10-22 | Microsoft Corporation | Debugger presentation of parallel application threads |
US9465657B2 (en) * | 2011-07-19 | 2016-10-11 | Elwha Llc | Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority |
US9170843B2 (en) * | 2011-09-24 | 2015-10-27 | Elwha Llc | Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement |
JP5850774B2 (ja) * | 2012-03-22 | 2016-02-03 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置及びそれを用いたシステム |
JP6017260B2 (ja) * | 2012-10-17 | 2016-10-26 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
US8949841B2 (en) | 2012-12-27 | 2015-02-03 | Nvidia Corporation | Approach for a configurable phase-based priority scheduler |
US20140237474A1 (en) * | 2013-02-19 | 2014-08-21 | Appsense Limited | Systems and methods for organizing dependent and sequential software threads |
US9507637B1 (en) * | 2013-08-08 | 2016-11-29 | Google Inc. | Computer platform where tasks can optionally share per task resources |
-
2013
- 2013-12-10 GB GB1321831.8A patent/GB2521151B/en active Active
-
2014
- 2014-11-19 CN CN201480064516.0A patent/CN105765536B/zh active Active
- 2014-11-19 WO PCT/GB2014/053418 patent/WO2015087041A1/en active Application Filing
- 2014-11-19 KR KR1020167017386A patent/KR102236426B1/ko active IP Right Grant
- 2014-11-25 TW TW103140852A patent/TWI619074B/zh active
- 2014-12-02 US US14/557,935 patent/US9703604B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724586A (en) * | 1996-09-30 | 1998-03-03 | Nec Research Institute, Inc. | Method for improving cache locality of a computer program |
CN101069161A (zh) * | 2004-12-01 | 2007-11-07 | 索尼计算机娱乐公司 | 调度方法、调度装置和多处理器系统 |
CN101082934A (zh) * | 2007-06-19 | 2007-12-05 | 北京师范大学 | 网络环境下超大规模空间数据的三维可视化方法 |
CN102224476A (zh) * | 2008-10-14 | 2011-10-19 | 奥布隆工业有限公司 | 多进程交互系统和方法 |
US20110072244A1 (en) * | 2009-09-24 | 2011-03-24 | John Erik Lindholm | Credit-Based Streaming Multiprocessor Warp Scheduling |
Also Published As
Publication number | Publication date |
---|---|
KR102236426B1 (ko) | 2021-04-06 |
TW201531942A (zh) | 2015-08-16 |
GB201321831D0 (en) | 2014-01-22 |
US9703604B2 (en) | 2017-07-11 |
KR20160096115A (ko) | 2016-08-12 |
GB2521151B (en) | 2021-06-02 |
CN105765536B (zh) | 2020-04-14 |
TWI619074B (zh) | 2018-03-21 |
US20150160982A1 (en) | 2015-06-11 |
GB2521151A (en) | 2015-06-17 |
WO2015087041A1 (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102299581B1 (ko) | 멀티 스레드 데이터 처리장치에서의 스레드 스케줄링 구성 | |
Gregg et al. | {Fine-Grained} Resource Sharing for Concurrent {GPGPU} Kernels | |
CN102722417B (zh) | 一种扫描任务的分配方法和装置 | |
EP2711839A1 (en) | Parallel processing device, parallel processing method, optimization device, optimization method, and computer program | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN102708009B (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
Raju et al. | A survey on techniques for cooperative CPU-GPU computing | |
CN108305313A (zh) | 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 | |
CN108205155A (zh) | 一种可控震源交替独立同步激发方法、装置及系统 | |
CN105765536A (zh) | 用于数据处理装置的可配置线程排序 | |
Cho et al. | On-the-fly workload partitioning for integrated CPU/GPU architectures | |
CN110058882A (zh) | 一种用于cnn加速的opu指令集定义方法 | |
Krömer et al. | A comparison of many-threaded differential evolution and genetic algorithms on CUDA | |
CN114968549A (zh) | 用于向任务分配资源的方法和设备 | |
JP5007838B2 (ja) | 情報処理装置および情報処理プログラム | |
Yang et al. | A hybrid circular queue method for iterative stencil computations on GPUs | |
Vo et al. | HyperFlow: A Heterogeneous Dataflow Architecture. | |
KR101869325B1 (ko) | 이종 멀티코어 환경에서의 코어 배정 장치 | |
Tabik et al. | Demystifying the 16× 16 thread‐block for stencils on the GPU | |
Benini et al. | Multi-stage Benders decomposition for optimizing multicore architectures | |
Min et al. | Flexer: Out-of-order scheduling for multi-npus | |
Majkowska et al. | Task allocation in distributed mesh-connected machine learning system: Simplified busy list algorithm with q-learning based queuing | |
Leidel et al. | Pressure-driven hardware managed thread concurrency for irregular applications | |
Zhou et al. | A time-based leakage-aware algorithm for task placement and scheduling problem on dynamic reconfigurable FPGA | |
Kennings et al. | Parallel FPGA technology mapping using multi-core architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |