CN105659208B - 处理多个线程的数据处理装置及方法 - Google Patents

处理多个线程的数据处理装置及方法 Download PDF

Info

Publication number
CN105659208B
CN105659208B CN201480058371.3A CN201480058371A CN105659208B CN 105659208 B CN105659208 B CN 105659208B CN 201480058371 A CN201480058371 A CN 201480058371A CN 105659208 B CN105659208 B CN 105659208B
Authority
CN
China
Prior art keywords
thread
threads
thread state
data
processing equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480058371.3A
Other languages
English (en)
Other versions
CN105659208A (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 CN105659208A publication Critical patent/CN105659208A/zh
Application granted granted Critical
Publication of CN105659208B publication Critical patent/CN105659208B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种含有处理电路以处理每个含有线程状态数据的线程的数据处理装置。线程可在线程组内被处理,且每个线程组包括若干用为每个线程执行的公共程序并行处理的线程。数个线程状态存储区域由固定数目的线程状态条目提供,为相应的线程存储线程状态数据。存储区域的至少两个含有不同固定数目的条目。处理电路将线程状态数据存储在同一存储区域的线程作为同一线程组处理,且将线程状态数据存储在不同存储区域的线程作为不同的线程组处理。

Description

处理多个线程的数据处理装置及方法
技术领域
本技术涉及数据处理领域。更具体地,技术涉及处理多个线程。
背景技术
已知提供可处理线程组内多个线程的处理电路,其中,用为线程组内每个线程执行的公用程序并行处理同一线程组内的线程。这有时可指单指令多线程(SIMT),且是吞吐量处理的形式。然而,这种方法的效率取决于同一线程组内的线程通过公用程序选取相似的路径和在相似的地址执行数据存取。发散(divergence,其中分组线程通过代码选取不同的路径或者在广泛不同的地址执行数据存取)是可容忍的,但降低了执行效率。
这种类型的处理的效率可取决于线程如何被一起分组到线程组内。分组更多的线程到组内是有吸引力的,因为这可增加通过多线程由分期提取、解码和存储器存取成本带来的能源节省,但若存在高度分散的工作负载就会牺牲效率。
已知方法提供动态重组逻辑以当线程在空中时不断地评审当前线程组,并在需要时重新分组线程到不同的组。然而,重组逻辑消耗功率和区域,降低效率。此外,通常重组逻辑将设法将线程填入单一固定尺寸的线程组,且若没有足够的相似的线程来填充这个组尺寸,则处理该固定尺寸线程组的执行资源将不会充分使用,降低效率。
发明内容
从一个方面看,本技术提供了一种数据处理装置,包括:处理电路,该处理电路被配置为处理多个线程,每个线程含有相关的线程状态数据;其中,该处理电路被配置为处理多个线程组的多个线程,每个线程组包括若干用为线程组内的每个线程执行的公用程序并行处理的线程;多个线程状态存储区域,每个线程状态存储区域包括固定数目的线程状态条目,其中每个线程状态条目被配置为多个线程中相应的线程存储线程状态数据;其中,线程状态存储区域的至少两个含有不同固定数目的线程状态条目;以及处理电路被配置为在同一线程组线程内处理,这些线程将线程状态数据存储在同一线程状态存储区域的线程状态条目中的,以及在不同线程组线程内处理,这些线程将线程状态数据存储在不同线程状态存储区域的线程状态条目中。
每个待处理的线程可含有相关联的线程状态数据。若干线程状态存储区域可由线程状态条目提供以存储线程状态数据。每个线程状态存储区域可含有固定数目的状态条目,而且线程状态存储区域的至少两个含有不同数目的条目。处理电路可在线程状态数据被存储在同一线程状态存储区域的条目中同一线程组线程内处理,也可在线程将线程状态数据存储在不同线程状态存储区域的不同线程组内处理。
因此,哪些线程被一起分组在同一线程组内取决于哪个区域为这些线程存储了相应的线程状态数据,这提供了分配线程到组的更有效的方法。相比于动态重组方法,通过提供含有不同固定数目的条目的线程状态存储区域,减少了未使用资源的数量,因为若有较少的线程可以一起有效执行,则可被容纳在一个较小的线程状态存储区域而不浪费较大的区域内的空间。也不必为动态分配线程到组提供复杂的动态线程组重组逻辑。线程状态数据可被相对静态地分配到一个线程状态存储区域,然后通过处理电路将相应的线程作为相应的线程组处理。尽管可能从一个线程状态存储区域向另一线程状态存储区域迁移线程状态数据,这可相对很少典型地发生。
此外,本技术可提供比动态组形成方法中更有效的存取线程状态存储的方法,其中,为避免每次组被重组时在存储单元中不断地移动状态数据,线程的分组不取决于哪些位置为线程存储线程状态数据。这意味着或者存储线程状态数据的线程状态存储单元(例如,寄存器组)必须更复杂,以允许处理电路为某个线程组获取线程状态数据,该线程组可位于存储单元内位置的相对随机的组合(要求某些跟踪数据以把线程分组与存储相应的线程状态数据的特定位置相关联);或者较简单的存储单元可被使在线程被与存储单元的特定线的地方相关联,但是动态组选择被约束从而使得只有来自不同线的线程可被分组到一起。尽管第二种方法仍可动态地形成不同的线程组,选择可用的候选组的数目因线约束而减少,因此处理可能是低效率的,且仍需要某些跟踪数据以跟踪哪些线程被分组到一起。与此相反,本技术状态存储可被简化,因为线程分组取决于线程状态数据被存储在哪里。因此,给定线程组的线程状态数据和对应于各自线程的各自线程状态条目被存储在同一线程状态存储区域,除了偶尔的迁移事件,在贯穿线程组的存续期间中将不会改变。
总之,该技术允许一系列不同的线程组尺寸以区域和能源有效的方式被支持。
分配电路可被提供用于控制待处理线程集的线程状态数据向线程状态存储区域的线程状态条目的分配。对于给定的用特定的公用程序处理的线程集,组尺寸值可被指定以指示多少线程应当用该程序处理。组尺寸值可由程序的程序员指定。例如,每个线程可对应于使用公用程序对不同数据值集的处理。组尺寸值可根据程序需要处理的数据集的数目设定。分配电路然后可基于组尺寸值为线程集分配线程状态数据到线程状态条目。
例如,分配电路为线程集可试图分配线程状态数据到尽可能少的线程状态存储区域,以减少实现该线程集要求的线程组的数目。分配电路可例如首先将线程打包到尽可能大的线程状态存储区域,然后若要求容纳更多线程则成功填充较小的线程状态存储区域。
另一方面,分配电路为线程集试图分配线程状态数据以减少部分填充的线程状态存储区域内未使用线程条目的数目,分配电路可更有效。例如,若有8个线程作为组被执行,将相应的线程状态数据放置到两个每个含有四个线程状态条目的存储区域(无未使用的条目),比将线程状态条目放置到含有32个条目的存储区域的8个条目中(浪费24个条目)可更有效。通过分配线程状态数据以减少未使用的线程条目的数目,较大的线程状态存储区域可被节省以处理较大的线程集,从而使得处理电路的整体处理可更有效。
尽管每个线程状态存储区域含有固定数目的线程状态条目,某些系统可支持线程状态存储区域的某些再分配。例如,装置可支持线程状态存储区域的多种固定布置,而且这些布置的一个可在给定时间被选择。然而,在任意给定时间分配电路可取决于所选的当前布置从有限数目的尺寸的线程状态存储区域的一个选择。
在某些实施例中,每个线程状态存储区域可包括分离的存储单元。在其他示例中,每个区域可包括组合的存储单元的子区域,例如,寄存器组。
线程状态数据可包括由相应的线程处理或生成的至少一个数据值,例如,寄存器的内容。例如,线程状态数据可包括相应的线程被公共程序处理时使用的操作数,或为该线程生成的处理结果。此外,线程状态数据可包括指示为相应的线程执行的下一程序指令的线程程序计数器。
线程组可含有相关联的线程组程序计数器,线程组程序计数器指示为相应的线程组执行的下一程序指令。公用程序可为同一线程组内的每个线程锁步执行,线程组程序计数器指示执行的下一指令。线程组程序计数器可来自相应的线程组内的所有线程的线程程序计数器(例如,线程组程序计数器可对应于组的任意线程程序计数器指示的最低地址)。在每个处理周期中,处理电路可为线程程序计数器和线程组程序计数器匹配的任意线程执行线程组程序计数器指示的指令。线程程序计数器和线程组程序计数器指示不同程序指令的线程,可等待后面处理达到线程程序计数器指示的指令的周期。因此,尽管同一线程组内的每个线程正在执行公用程序,不是所有线程在每个处理周期都需要激活,而且不同线程可已达到程序的不同点。
迁移控制电路可被提供用于控制线程状态数据在不同线程状态存储区域间的迁移(因此触发线程组的再分配)。相比于动态重组方法中线程的连续再分配,线程可在同一线程组内继续被处理直到有限迁移事件集中的一个发生。当迁移事件发生时,迁移控制电路可为至少一个选定的线程从第一状态存储区域向第二状态线程存储区域迁移线程数据。这种迁移事件可被期望相对很少发生,因此迁移操作在不十分影响整体吞吐量和效率时可相对昂贵。通常,可向含有比第一线程状态存储区域更少的线程状态条目的第二线程状态存储区域迁移。通过迁移某些线程的线程状态数据到较小的线程状态存储区域,可为其他线程释放较大的线程状态存储区域以存储线程状态数据,这些线程可作为较大的组比之前使用第一状态存储区域处理的线程更有效的被处理。迁移也允许改进的性能,因为与非迁移线程向关联的旧线程组和与迁移线程相关联的新线程组可以相互独立的执行后续的指令,然而在未迁移状态某些线程将必须等待其他线程。
例如,迁移事件可以是将线程状态数据存储在第一线程状态存储区域的迁移的至少一个选择的线程和至少一个剩余的线程之间行为不同的发生。当不同的行为被检测,对应于第一线程状态存储区域的线程不再能作为组被有效处理,因此通过迁移相应的线程状态数据到不同的存储区域以分离某些线程到不同的组可以提升效率。
特别地,若选择的含有不同行为的线程的数目少于或等于第二线程状态存储区域的线程状态条目的数目,迁移可发生。因此,当从其他线程发散的线程的数目足够小以适合第二线程状态区域,则迁移可发生。
在一个示例中,若一个或多个线程仍要求执行进一步的处理操作,而剩余线程不要求任何进一步的处理操作,行为不同可发生。若足够的线程已终止并允许剩余线程适合较窄的线程组,则这可为要求进一步处理的线程触发线程状态数据到不同的存储区域的迁移。
相似地,若组的不同的线程要求不同的处理操作,行为不同可被检测。例如,某些线程可分支到其他线程不要求的程序的不同点。如果这样,所有线程作为单一线程组处理可不再有效,因此迁移可有助于提升处理效率。
行为不同也可包括同一线程组内的不同线程触发的发散的存储器存取。通过将存取合并到获取多线程中的每个线程要求的数据的单一存储器存取,多线程的存储器存取通常可更有效。然而,若线程例如以缓冲存储器的不同缓冲线,或存储器地址空间的不同页为目标,就不能合并。因此,若线程组的存储器存取不能被合并到单一存储器存取,则可被检测为迁移事件。通过迁移至少一个选择的线程到不同的线程组,则可允许迁移线程和非迁移线程的存储器存取被合并到各自的存储器存取,从而使得更有效的执行。
有时,开始相互发散的线程可随后再次聚集,这些线程的处理操作再次变得彼此相似。迁移操作在性能方面是相对高代价的,因为当线程状态数据被迁移时,处理电路可不处理任何相应的线程。若分组线程之间的行为不同只持续短暂时间,则相比于与执行迁移相关联的性能惩罚,与发散期间在组内处理线程相关联的性能惩罚可更小,因此作为组继续处理这些线程可更有效,而不是一旦检测到行为不同就迁移某些线程到不同的组。
所以,发散计数器可被维护以多次指示在至少一个选择的线程和同一线程组内至少一个剩余的线程之间检测到发散性为。发散计数器可每次检测到行为不同时增加(例如,检测到线程间的发散时,每个指令增加)。若线程回到相似的处理,则发散计数器可被重置或减少。响应发散计数器超过预定迁移阈值,迁移控制电路可迁移至少一个选择的线程。这意味着若行为不同持续了一段时间则迁移发生,这些线程更可能将不再重新回到一起。
检测何时迁移线程的另一方式可以是在线程组执行的公共程序中提供发散指示指令。当遇到发散指示指令时,可触发迁移控制电路检测组内的线程之间是否存在行为不同,如果这样,则某些线程可被迁移到不同的线程组。因此,公用程序的程序员可使用发散指示指令作为标记以指示当程序达到该标记时,任意已经开始发散的线程将不可能再次聚集则可被迁移以提升效率。
在某些示例中,发散指示指令可以是没有其他与之相关联的功能的特殊的发散指示指令。然而,另一方法是再使用含有除了指示发散的其他功能的现有指令作为发散指示指令。与指令相关联的标志可指示该指令是否应被当作发散指示指令。例如,加载/存储指令或分支指令可用标志标记以指示发散指示指令。该方法可以是有用的,因为经常加载/存储指令或分支指令将是触发行为不同的指令,因此程序员可标记加载/存储指令或分支指令以区分期望引起长时间发散的指令和不期望引起长时间发散的指令(例如,将执行切换到小段可选代码的分支指令)。
不是所有线程状态存储区域在某个时间都激活。为了节省能源,至少一个不为当前被处理电路处理的线程组存储线程状态数据的线程状态存储区域可被置于功率节省状态。相似地,线程状态存储区域可不被线程状态数据全部填充。可存在某些未使用的线程状态条目,这些未使用的线程状态条目可被置于功率节省状态以减少功率消耗。
每个线程状态存储区域的尺寸可由处理系统的设计者根据期望有用的组尺寸选择。例如,特定系统可包括含有32个线程状态条目的线程状态存储区域、含有4个线程状态条目的线程状态存储区域以及包括仅单一线程状态条目的线程状态存储区域。提供至少一个含有仅单一线程状态条目的线程状态存储区域是有用的,因为可存在某些不能和任何其他线程有效组合在组内的线程,因此通过提供支持独立地处理线程,较大的线程状态存储区域可为能够作为组被有效处理的线程保留。
从另一个方面看,本发明提供了一种数据处理装置,包括:处理多个线程的处理方法,且每个线程含有相关联的线程状态数据;其中,该处理方法被配置为在多个线程组内处理多个线程,每个线程组包括若干用为该线程组内的每个线程执行的公用程序并行处理的线程;存储线程状态数据的多个线程状态存储区域方法,每个线程状态存储区域方法包括为多个线程的相应的线程存储线程状态数据的固定数目的线程状态条目方法;其中,线程状态存储区域方法的至少两个含有不同固定数目的线程状态条目方法;以及该处理方法被配置为在同一线程组线程内处理,这些线程的线程状态数据被存储在同一线程状态存储区域方法的线程状态条目方法中,以及在不同线程组线程内处理,这些线程的线程状态数据存储在不同线程状态存储区域方法的线程状态条目方法中。
从进一步的方面看,本发明提供了一种处理多个线程的方法,且每个线程含有相关联的线程状态数据,该方法包括步骤:作为第一线程组,用为第一线程组的每个线程执行的公用程序并行处理多个线程,其中,第一线程组内线程的线程状态数据被存储在第一线程状态存储区域的线程状态条目中,第一线程状态存储区域包括第一固定数目的线程状态条目;响应于迁移事件,迁移第一线程组内的至少一个选择的线程的线程状态数据到第二线程状态存储区域的线程状态条目,第二线程状态存储区域包括不同于第一固定数目的第二固定数目的线程状态条目;以及响应于第二线程状态存储区域的线程状态数据,作为第二线程组,用为第二线程组的每个线程执行的公用程序并行处理至少一个选择的线程。
附图说明
图1示意性的示出了处理含有线程状态数据的多个线程的数据处理装置的示例;
图2示出了用为组内每个线程执行的公用程序并行处理一组线程;
图3-7示出了为线程从较大线程状态存储区域向较小线程状态存储区域迁移线程状态数据的示例;并且
图8示意性的示出了处理过个线程的方法。
具体实施方式
图1示出了数据处理装置2的示例,数据处理装置2包括处理含有相关的线程状态数据的多个线程的处理电路4。处理电路4包括为线程执行数据处理的执行单元5。执行单元5包括若干处理单元,包括执行整数数据处理操作的整数处理管道(pipeline)6、执行浮点处理操作的浮点处理管道8,以及执行从存储器12加载数据或向存储器12存储数据的加载操作的加载/存储管道10。每个处理单元6、8、10可含有若干可被用于处理并行处理的多线程的并行处理单元。在某些实施例中,每个处理单元可含有一定固定数目的并行处理单元,若少于最大数目的线程正在被特定处理单元6、8、10处理,则未使用的处理单元被功率门控。在其他示例中,处理单元6、8、10可含有不同数目的执行单元。例如,同一处理单元6、8、10的不同版本可被不同数目的并行执行单元提供,从而使得对于给定线程组,能够支持线程组且含有最少数目的并行单元的处理单元6、8、10可被使用以节省能源。此外,线程在一个或多个处理单元6、8、10上可以是时分多路复用的。应当认识到,处理电路4可包括为了简洁而图1未示出的很多其他元件。
处理电路4含有存储单元14(例如,寄存器组),用于为处理电路4处理的线程存储线程状态数据。线程状态存储单元14包括若干线程状态存储区域20,每个线程状态存储区域20含有固定数目的线程状态条目22,为相应的线程存储的线程状态数据。线程状态存储区域20的至少两个含有不同数目的线程状态条目22。在该示例中,线程状态存储区域20被分别提供32、4或1个线程状态条目22。应当认识到,线程状态存储区域20的其他布置可由不同数目的线程状态条目22提供。
每个含有多于一个线程状态条目22的线程状态存储区域含有存储位置,以存储表示相应的线程组包括两个或更多线程的组状态信息24。组状态信息包括线程组作为整体要求的任意信息,以及指示为线程组处理的下一指令的组程序计数器(gPC)26。每个线程状态条目22包括线程状态数据28,线程状态数据28可例如包括相应的线程处理的数据值或为相应的线程执行的处理生成的数据值。线程状态数据也包括指示为相应的线程处理的下一指令的线程程序计数器(tPC)30。
图2示出了用组内每个线程锁步处理的公用程序处理一组N个线程的示例。组程序计数器26指示组作为整体处理的当前指令的地址。组程序计数器26来自于组内独立的线程的线程程序计数器30(例如,通过程序计数器投票)。例如,组程序计数器26可对应于线程组内任意线程程序计数器30指示的最低地址。对于组内的每个线程,若该线程的线程程序计数器30匹配组程序计数器26,则组程序计数器26指示的指令在当前处理周期内执行。在图2所示的周期0中,组程序计数器26指示地址#add,且线程0到线程N的所有线程程序计数器30也指示地址#add。所以,所有线程在地址#add执行ADD指令。不同线程可使用不同操作数执行ADD指令,从而使得若干不同的加法为各自的线程被并行执行。
在周期2中,对比指令CMP在地址#add+4被执行以比较ADD指令的结果r2和立即值19。对于线程0、线程1和线程N,结果r2不等于19,而对于线程2结果r2等于19。在周期3中,若周期2中CMP指令的输出是不相等(NE),则分支指令BNE分支到地址#add+16。对于线程0、线程1和线程N,选取该分支且这些线程的线程程序计数器30被设定为#add+16。然而,对于线程2,CMP指令的输出是相等(EQ),因此不选取该分支且线程2的线程程序计数器30增加到#add+12。因此,现在存在含有不同线程程序计数器30的值的线程,且存在线程间不同的行为。
在周期3中,组程序计数器26被设定为#add+12以匹配线程程序计数器30的最低地址(在这种情况下,线程2的线程程序计数器30)。对于线程2,乘法指令MUL在地址#add+12被执行。然而,在周期3中没有指令为线程0、线程1和线程N执行,因为这些线程的线程程序计数器30不匹配组程序计数器26。这些线程必须等待直到周期4中,组程序计数器26在存储指令STR在地址#add+16被执行以向存储器地址存储值之前达到#add+16,存储器地址是基于基地址和索引确定的,且不同的线程使用不同的索引来确定目标地址。若索引使得存取以存储器的同一区域为目标(例如,同一缓冲线,或地址空间的同一页),至少某些线程的寄存器存取可被合并到单一寄存器存取。
图2的示例示出,当线程要求同一指令被执行时,这些线程可作为组被有效处理,因为这允许单一指令提取在线程组内被分期以及寄存器存取被合并。然而,诸如分支指令之类可引起不同的行为,例如,当图2示例中的线程2要求和其他线程不同的指令。可存在引起相似的行为不同的其他事件。在这种情况下,可存在相当数目的周期中线程不能执行它们的下一指令,因为当其他线程执行不同的操作时它们必须等待,这降低了效率。因此,处理的效率可取决于线程如何被分组在一起。
回到图1,处理电路4可作为单一线程组处理线程,这些线程的线程状态数据被存储在同一线程状态存储区域20的条目22中。线程状态数据在不同区域20内的线程可被视为不同的线程组。因此,线程状态数据向区域20的分配确定哪些线程被处理电路4分组在一起。分配/迁移控制电路40可被提供用于控制线程状态数据向线程组的分配。尽管图1示出分配/迁移控制电路40作为单一单元,在其他示例中,分配控制电路可从迁移控制电路被分离地提供。
对于给定程序,程序员可指定多少线程应作为组被一起处理。这可被完成,例如,使用组尺寸值为给定程序示出优选的组尺寸。例如,图像处理算法或图形绘制算法可要求单一程序(例如,片段着色程序、光线跟踪程序、或指示图像中感兴趣的像素的程序)在一定数目的像素上被执行,且每个像素被各自的线程处理,因此组尺寸值可被设定为对应于被处理的像素的数目。
分配电路40可使用组尺寸以确定如何打包线程状态数据4到线程状态存储区域20。不同的分配策略可被使用。例如,分配电路40可试图减少部分占用的线程状态存储区域20内未使用的线程状态条目22的数目。例如,如图1所示的配置,36个线程的集可被打包到一个32-宽区域20和一个4-宽区域。8线程的集可被打包到两个4-宽区域,从而使得不存在未使用的线程状态条目22,而不是打包8个线程到32-宽区域,其会留下24个未使用的条目22。
功率控制电路50被提供用于控制状态存储单元14的功率供应。部分填充的线程状态存储区域20内任意未使用的线程状态存储区域20或未使用的线程状态条目22可被置于功率节省状态以节省能源。例如,任意已知的功率门控技术可被使用以实现功率节省状态。
一旦线程集的线程状态数据已被分配到给定的线程状态存储区域20,则处理电路可继续作为组处理这些线程。然而,最后线程组的线程间的行为不同可被检测(例如,图2示例中)。可存在若干线程可在行为上发散的原因。
一个示例是在寻找图像中感兴趣的点的某些计算机视觉算法中。线程可为图像中的每个像素开始,且每个线程可运行测试以确定是否像素是“感兴趣的”(即,它符合某些给定的判据)。对于非感兴趣的像素,线程可然后终止。对于感兴趣的像素,线程可与可能的大量进一步处理继续以确定关于感兴趣的点的更多细节,例如,为了产生描述符的角度和尺寸信息。所以,某些线程可比其他线程更早终止。若足够的线程已终止,则为剩余的线程将线程状态数据移动到较小的区域20可更有效,从而使得这些线程作为较小的线程组被处理。这释放了较大线程状态存储区域20的一个以处理另一个组,且作为较小的组处理剩余的线程也可减少与处理组相关联的开销(例如,组程序计数器26和线程程序计数器30之间较少的程序计数器比较)。此外,较小的线程组不需要使用执行单元5内的满宽度执行资源,例如,未使用的执行资源处于功率门控。另一示例是光线跟踪程序。若干相邻的像素可命中同一目标,因此跟随相似的代码路径。然而,在其他区域相邻的像素可能命中完全不同的目标,因此相应的线程可通过代码跟随不同路径。一旦不同的线程要求不同的处理操作,迁移某些线程到不同的区域20可更有效。
因此,可存在若干迁移事件,迁移事件通过迁移控制电路40可触发迁移。图3至图7示出了迁移的不同示例。在图3中,一组8个线程被处理,且相应的线程状态数据被存储在含有8个线程状态条目22的区域20。迁移控制电路40检测到线程50的4个已终止,而4个其他线程52仍激活。迁移控制电路40因此可为未终止的线程52迁移线程状态数据到4-宽线程状态存储区域20,从而使得这些线程可作为一组4个线程继续被处理。8-宽线程状态存储区域22现在可为其他线程使用。
图4示出了一组16个线程被处理的示例,且一段时间后线程60的14个通过程序开始跟随第一路径A,而两个线程62跟随第二路径B。迁移控制电路40检测到线程60、62的子组要求不同的处理操作,且为跟随路径B的两个线程62迁移线程状态数据到2-宽线程状态存储区域20。‘B’线程62然后可以作为从‘A’线程60分离的组被处理,从而使得两个组可被更有效处理。
图5示出了另一示例,其中一组16个线程的不同子组70、72要求存储器不同页A、B的存储器存取。这意味着存储器存取不能被合并到单一存储器存取(例如,因为它们可要求不同的转换后备缓冲器(TLB)条目)。因此,为线程72迁移线程状态数据到较小的线程状态存储区域可更有效,从而使得这些线程在与线程70不同的组内被处理。
如图6所示,开始发散且跟随不同路径A、B的线程可能随后再次聚集,从而使得这些线程再次执行同一指令。若发散时期持续了仅短时间,则将这些线程留在组内可更有效,而不是迁移某些线程到不同的组。为了检测发散是否可能持续长时间,发散计数器可由迁移控制电路40维护,且计数器可为不同线程间行为不同被检测的每个指令增加。若线程随后再次回到一起,则计数器可减少或重置。若计数器达到给定的阈值,则迁移控制电路40可取决于当时要求的处理操作划分线程,并迁移某些线程到不同的组。发散继续的时期越长,线程越可能将不会再次聚集,因此迁移越可能提升整体效率。
如图7所示,发散指示指令80可在为每个线程执行的公共程序内被提供。程序员可使用指令80以表示任何当前显示出不同的行为的线程在后续处理中将不会再次聚集。例如,在上面给出的光线跟踪示例中,程序员可识别对应于不同目标的像素将完全发散且不会再次聚集。因此,若迁移控制电路40检测到发散指示指令80,则迁移控制电路40可检查线程间的行为不同,且迁移至少某些线程到不同的组。可存在很多其他示例,其中,迁移某些线程的状态数据到不同的线程状态存储区域以触发在不同的线程组内处理是有用的。发散指示指令可以是专用的发散指示指令,或另一类诸如加载/存储指令或分支指令之类的由程序员用标志标记的指令,以通信可能触发相对长时期的发散。
图8示出处理线程的方法。在步骤100中,使用存储在第一线程状态存储区域20的线程状态数据,用为组内每个线程并行执行的公用程序处理第一线程组。在步骤101中,确定第一线程组的处理是否完成(即,所有线程已终止)。如果这样,然后在步骤102中,第一线程组结束且分配电路40使得第一线程状态存储区域20为另一线程组存储线程状态数据是可用的。若第一线程组的处理尚未完成,然后在步骤103中迁移控制电路40确定是否存在迁移事件。若没有迁移事件已经发生,则第一线程组的处理继续步骤100。
若迁移事件发生,则在步骤104中至少一个线程的线程状态数据被迁移到比第一线程状态存储区域20含有更少线程状态条目22的第二线程状态存储区域20。在步骤106中,第二线程组开始被处理,包括状态数据被迁移到第二线程状态存储区域的线程。第二线程组以和第一线程组相同的方式被处理,为第二线程组重新开始步骤100的方法。因此,可存在触发第二线程组的某些线程向进一步的线程组迁移的进一步的迁移事件。同时,在步骤108中确定第一线程组内是否存在任何剩余的激活的线程。如果这样,方法回到步骤100,其中剩余的线程继续作为第一线程组被处理。若不存在跟随迁移的剩余的激活线程,则第一线程组在步骤102中结束。
尽管本技术的特定实施例已在本文被描述,将显而易见的是,本发明并不仅限于此,可在本发明的范围之内做出很多修改和添加。例如,在不脱离本发明的范围的情况下可对以下独立的权利要求的特征做出各种组合。

Claims (24)

1.一种数据处理装置,包括:
处理电路,该处理电路被配置为处理多个线程,所述多个线程中的每个具有相关的线程状态数据;
其中,所述处理电路被配置为处理多个线程组中的所述多个线程,所述多个线程组中的每个包括若干用为线程组内的每个线程执行的公用程序并行处理的线程;
多个线程状态存储区域,所述多个线程状态存储区域中的每个包括固定数目的线程状态条目,其中每个线程状态条目被配置为多个线程中相应的线程存储线程状态数据;
其中,线程状态存储区域的至少两个含有不同固定数目的线程状态条目;以及
迁移控制电路,该迁移控制电路被配置为作为至少一个选择的线程从第一线程状态存储区域向第二线程状态存储区域迁移线程状态数据,以响应检测到迁移事件;
所述处理电路被配置为在将线程状态数据存储在同一线程状态存储区域的线程状态条目中的同一线程组线程内处理,以及在将线程状态数据存储在不同线程状态存储区域的线程状态条目中的不同线程组线程内处理。
2.如权利要求1所述的数据处理装置,包括分配电路,所述分配电路被配置为利用为一个或多个线程状态存储区域内的线程状态条目指定的公用程序,来控制待处理的线程集的线程状态数据的分配。
3.如权利要求2所述的数据处理装置,其中,分配电路被配置为分配线程集的线程状态数据到可能范围内最少的线程状态存储区域内的线程状态条目。
4.如权利要求2所述的数据处理装置,其中,所述分配电路被配置为分配线程集的线程状态数据到所述线程状态条目以减少未使用的线程状态条目的总数,
所述未使用的线程状态条目包括当前不为处理电路所处理的线程存储线程状态数据的线程状态条目,该线程状态条目和当前为处理电路所处理的线程存储线程状态数据的另一线程状态条目位于同一线程状态存储区域内。
5.如权利要求2到4中的任一项所述的数据处理装置,其中,分配电路被配置为基于为指定的公共程序指定的组尺寸值控制线程状态数据的分配,该组尺寸值指示用所述公共程序处理的线程的数目。
6.如权利要求1所述的数据处理装置,其中,线程状态数据包括相应的线程处理或生成的至少一个数据值。
7.如权利要求1所述的数据处理装置,其中,线程状态数据包括指示为相应的线程执行的下一程序指令的线程程序计数器。
8.如权利要求1所述的数据处理装置,其中,每个线程组与指示为相应的线程组执行的下一程序指令的线程组程序计数器向关联。
9.如权利要求8所述的数据处理装置,其中,所述线程状态数据包括指示为相应的线程执行的下一程序指令的线程程序计数器,
以及线程组的线程组程序计数器衍生自线程组内每个线程的线程程序计数器。
10.如权利要求1所述的数据处理装置,其中,所述第一线程状态存储区域比第二线程状态存储区域含有更多数目的线程状态条目。
11.如权利要求1所述的数据处理装置,其中,迁移事件包括迁移控制电路在将线程状态数据存储在所述第一线程状态存储区域的至少一个选择的线程和至少一个剩余的线程之间检测到行为不同。
12.如权利要求1所述的数据处理装置,其中,迁移控制电路被配置为作为至少一个选择的线程迁移线程状态数据到第二线程状态存储区域以响应迁移事件,若至少一个选择的线程的线程的数目少于或等于第二线程状态存储区域的线程状态条目的数目。
13.如权利要求11所述的数据处理装置,其中,所述迁移控制电路被配置为检测所述的行为不同,若至少一个剩余的线程不要求进一步的处理操作被执行,且至少一个选择的线程要求至少一个进一步的处理操作被执行。
14.如权利要求11所述的数据处理装置,其中,所述迁移控制电路被配置为检测所述的行为不同,若至少一个选择的线程和至少一个剩余的线程要求不同的处理操作被执行。
15.如权利要求11所述的数据处理装置,其中,所述迁移控制电路被配置为检测所述的行为不同,以响应检测到由至少一个选择的线程和至少一个剩余的线程触发的发散的存储器存取。
16.如权利要求15所述的数据处理装置,其中,所述发散的存储器存取包括下述项中的至少一个:
存取缓冲存储器的不同的缓存线;
存取存储器的不同的页;以及
不能被合并到单一存储器存取的存取。
17.如权利要求11所述的数据处理装置,其中,迁移控制电路被配置为维护发散计数器,该发散计数器指示在所述的至少一个选择的线程和所述的至少一个剩余的线程之间,若干次所述的行为不同被检测到;以及
迁移控制电路被配置为迁移所述的至少一个选择的线程以响应所述的发散计数器大于预定的迁移阈值。
18.如权利要求11所述的数据处理装置,其中,迁移控制电路被配置为检测所述的行为不同以响应包含在公共程序内的发散指示指令。
19.如权利要求18所述的数据处理装置,其中,发散指示指令包括含有相关联的发散指示标志的预定指令。
20.如权利要求19所述的数据处理装置,其中,预定指令包括至少一个加载/存储指令和分支指令。
21.如权利要求1所述的数据处理装置,包括功率控制电路,该功率控制电路被配置为将至少一个不为处理电路当前所处理的线程组存储线程状态数据的线程状态存储区域置于功率节省状态。
22.如权利要求1所述的数据处理装置,包括功率控制电路,该功率控制电路被配置为将至少一个当前不为处理电路所处理的线程保存线程状态数据的线程状态条目置于功率节省状态。
23.如权利要求1所述的数据处理装置,其中,多个线程状态存储区域包括至少一个包括单一线程状态条目的线程状态存储区域。
24.一种处理多个线程的方法,每个线程含有相关联的线程状态数据的,该方法包括步骤:
作为第一线程组,用为第一线程组的每个线程执行的公用程序并行处理多个线程,其中,第一线程组内线程的线程状态数据被存储在第一线程状态存储区域的线程状态条目中,第一线程状态存储区域包括第一固定数目的线程状态条目;
响应于迁移事件,迁移第一线程组内的至少一个选择的线程的线程状态数据到第二线程状态存储区域的线程状态条目,第二线程状态存储区域包括不同于第一固定数目的第二固定数目的线程状态条目;以及
响应于第二线程状态存储区域的线程状态数据,作为第二线程组,用为第二线程组的每个线程执行的公用程序并行处理至少一个选择的线程。
CN201480058371.3A 2013-11-01 2014-09-17 处理多个线程的数据处理装置及方法 Active CN105659208B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/069,727 US9547530B2 (en) 2013-11-01 2013-11-01 Data processing apparatus and method for processing a plurality of threads
US14/069,727 2013-11-01
PCT/GB2014/052823 WO2015063451A1 (en) 2013-11-01 2014-09-17 Data processing apparatus and method for processing a plurality of threads

Publications (2)

Publication Number Publication Date
CN105659208A CN105659208A (zh) 2016-06-08
CN105659208B true CN105659208B (zh) 2019-07-19

Family

ID=51626061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480058371.3A Active CN105659208B (zh) 2013-11-01 2014-09-17 处理多个线程的数据处理装置及方法

Country Status (5)

Country Link
US (1) US9547530B2 (zh)
KR (1) KR102266606B1 (zh)
CN (1) CN105659208B (zh)
GB (1) GB2535653B (zh)
WO (1) WO2015063451A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US9772852B2 (en) * 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
JP6435980B2 (ja) * 2015-04-27 2018-12-12 富士通株式会社 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
GB2539958B (en) * 2015-07-03 2019-09-25 Advanced Risc Mach Ltd Data processing systems
JP6668638B2 (ja) * 2015-08-24 2020-03-18 富士通株式会社 情報処理装置、コンパイル方法及びコンパイラ
US10191768B2 (en) 2015-09-16 2019-01-29 Salesforce.Com, Inc. Providing strong ordering in multi-stage streaming processing
US10198298B2 (en) 2015-09-16 2019-02-05 Salesforce.Com, Inc. Handling multiple task sequences in a stream processing framework
US10146592B2 (en) 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US9965330B2 (en) 2015-09-18 2018-05-08 Salesforce.Com, Inc. Maintaining throughput of a stream processing framework while increasing processing load
US9842000B2 (en) * 2015-09-18 2017-12-12 Salesforce.Com, Inc. Managing processing of long tail task sequences in a stream processing framework
TWI564807B (zh) * 2015-11-16 2017-01-01 財團法人工業技術研究院 排程方法及應用其的處理裝置
CN105700938B (zh) * 2016-01-15 2019-02-19 浪潮通用软件有限公司 一种多线程处理数据的方法及装置
US10437635B2 (en) 2016-02-10 2019-10-08 Salesforce.Com, Inc. Throttling events in entity lifecycle management
GB2566339B (en) * 2017-09-06 2019-11-27 Advanced Risc Mach Ltd An apparatus and method of executing thread groups
CN108363624B (zh) * 2018-02-12 2022-04-19 聚好看科技股份有限公司 一种无锁线程有序控制存储信息的方法、装置和服务器
CN113176911A (zh) * 2021-04-29 2021-07-27 上海阵量智能科技有限公司 一种配置方法、数据处理方法、芯片和电子设备
US11361400B1 (en) 2021-05-06 2022-06-14 Arm Limited Full tile primitives in tile-based graphics processing
CN113722111A (zh) * 2021-11-03 2021-11-30 北京壁仞科技开发有限公司 内存分配方法、系统、装置和计算机可读介质
CN114595070B (zh) * 2022-05-10 2022-08-12 上海登临科技有限公司 一种处理器、多线程合并方法及电子设备
CN116643698B (zh) * 2023-05-26 2024-03-29 摩尔线程智能科技(北京)有限责任公司 数据写入方法及装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1168730A (zh) * 1994-10-17 1997-12-24 艾利森电话股份有限公司 数据处理的系统和方法以及带有这类系统的通信系统
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9659339B2 (en) * 2003-10-29 2017-05-23 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7543136B1 (en) 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8312254B2 (en) 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
US20100064291A1 (en) * 2008-09-05 2010-03-11 Nvidia Corporation System and Method for Reducing Execution Divergence in Parallel Processing Architectures
US8656397B2 (en) * 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US8832417B2 (en) 2011-09-07 2014-09-09 Qualcomm Incorporated Program flow control for multiple divergent SIMD threads using a minimum resume counter
CN103577340A (zh) * 2012-07-31 2014-02-12 索尼公司 存储器管理装置和方法以及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1168730A (zh) * 1994-10-17 1997-12-24 艾利森电话股份有限公司 数据处理的系统和方法以及带有这类系统的通信系统
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor

Also Published As

Publication number Publication date
US20150128144A1 (en) 2015-05-07
KR20160079007A (ko) 2016-07-05
GB201603595D0 (en) 2016-04-13
WO2015063451A1 (en) 2015-05-07
KR102266606B1 (ko) 2021-06-18
GB2535653B (en) 2020-09-16
CN105659208A (zh) 2016-06-08
GB2535653A (en) 2016-08-24
US9547530B2 (en) 2017-01-17

Similar Documents

Publication Publication Date Title
CN105659208B (zh) 处理多个线程的数据处理装置及方法
US9851977B2 (en) Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization
US9244883B2 (en) Reconfigurable processor and method of reconfiguring the same
US8539211B2 (en) Allocating registers for loop variables in a multi-threaded processor
US9189360B2 (en) Processor that records tracing data in non contiguous system memory slices
Gandhi et al. {PIKACHU}: How to Rebalance Load in Optimizing {MapReduce} On Heterogeneous Clusters
KR101400286B1 (ko) 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
CN103197953A (zh) 推测执行和回滚
US9201656B2 (en) Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers
KR20150047422A (ko) 프리페치 전략 제어
CN101702138A (zh) 一种内存管理方法、系统及服务器
US8055848B2 (en) Method and system for securing instruction caches using substantially random instruction mapping scheme
US20040059894A1 (en) Process for running programs on processors and corresponding processor system
CN105094747A (zh) 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
Moeng et al. ContextPreRF: Enhancing the performance and energy of GPUs with nonuniform register access
CN107851006B (zh) 多线程寄存器映射
CN110537174B (zh) 一种基于交替行锁和列锁的数据锁定方法
US11768684B2 (en) Compaction of architected registers in a simultaneous multithreading processor
Kaldewey et al. Large-scale GPU search
Cai et al. Fault sharing in a copy-on-write based ATPG system
KR102210765B1 (ko) 긴 지연시간 숨김 기반 워프 스케줄링을 위한 방법 및 장치
JP7325437B2 (ja) リソースインデックス置換を実施するデバイス及びプロセッサ
US7093260B1 (en) Method, system, and program for saving a state of a task and executing the task by a processor in a multiprocessor system
US10488911B2 (en) Method and computing system of allocating registers
CN112673346A (zh) 用于提取组的序列的控制对分支预测单元的存取

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant