CN117009054A - 一种simt装置、线程组动态构建方法及处理器 - Google Patents

一种simt装置、线程组动态构建方法及处理器 Download PDF

Info

Publication number
CN117009054A
CN117009054A CN202310934100.0A CN202310934100A CN117009054A CN 117009054 A CN117009054 A CN 117009054A CN 202310934100 A CN202310934100 A CN 202310934100A CN 117009054 A CN117009054 A CN 117009054A
Authority
CN
China
Prior art keywords
thread
thread group
threads
group
instruction
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
CN202310934100.0A
Other languages
English (en)
Other versions
CN117009054B (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.)
Shanghai Denglin Technology Co ltd
Beijing Denglin Technology Co ltd
Original Assignee
Shanghai Denglin Technology Co ltd
Beijing Denglin Technology Co 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 Shanghai Denglin Technology Co ltd, Beijing Denglin Technology Co ltd filed Critical Shanghai Denglin Technology Co ltd
Priority to CN202310934100.0A priority Critical patent/CN117009054B/zh
Publication of CN117009054A publication Critical patent/CN117009054A/zh
Application granted granted Critical
Publication of CN117009054B publication Critical patent/CN117009054B/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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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)
  • Advance Control (AREA)

Abstract

本发明提供一种SIMT装置、线程组动态构建方法及处理器,所述SIMT装置包括线程组管理模块和指令执行模块,其中,所述线程组管理模块用于存储线程组的信息以及调度线程组,所述线程组管理模块被配置为:根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;将多个可发射线程重组为重组线程组;所述指令执行模块包括多个指令执行单元,所述指令执行模块用于根据重组线程组中的线程执行对应的指令。本发明通过动态构建线程组,可以极大的提升线程执行效率,提高指令执行单元的运行效率。

Description

一种SIMT装置、线程组动态构建方法及处理器
技术领域
本发明涉及处理器领域,具体来说,涉及采用SIMT结构的处理器领域,更具体地说,涉及一种SIMT装置、线程组动态构建方法及处理器。
背景技术
目前GPU或者GPGPU等并行处理器的计算核心大多采用单指令多线程(SingleIstruction Multiple Threads,简称为SIMT)的运算结构。SIMT运算结构一般是会把若干个线程组合在一起,形成一个固定大小的执行单位,称为线程组,同一线程组里的所有线程每个时钟会读取同一条指令,该指令指明了每个线程需要执行的操作和具体的操作数地址,这个线程组中的每个线程会根据操作数地址读取各自的操作数并行执行该指令。并且SIMT运算结构允许线程组中的线程有不同的指令分支,一般通过掩码或有效标志位的方式来处理不同的分支情况。属于同一协作工作组的线程可以通过一些特定的指令进行同步。这种SIMT运算结构通过多个线程并行执行的方式提高了数据处理的并行性,因此在图形处理、人工智能、高性能计算等运算密集的场景中得到了广泛的应用。
但是,SIMT运算结构的线程组是在线程创建的时候静态构建的,也就意味着线程组中的线程在线程组的生命周期中是保持不变的,且每个线程一般对应一个指令执行单元,由此导致该运算结构在实际应用过程中会存在如下的缺点:
1、当线程组里的有效线程比较少的时候运行性能会降低。例如,一个线程组执行完条件分支指令后,线程组中部分线程的执行条件是真,部分线程的执行条件是假,这就会造成线程组里的线程执行掩码不同,可能只有部分线程有效,这种情况下无效线程对应的指令执行单元就会因为线程无效而浪费。
2、虽然并行处理器一般有专门的数据缓存来保存最近访问的数据来提高访存效率,但是,当一个线程组执行访问存储器的指令时,线程组中各个线程访问存储器的地址各不相同,可能有的线程访存地址会命中数据缓存,命中数据缓存的线程会很快返回访存结果;有的线程访存地址没有命中数据缓存,需要到下一级存储器进行数据访问,这可能需要比较长的时钟周期才能返回访存结果。由于一个线程组中的所有线程是一起执行指令的,线程组需要等待最晚返回访存结果的线程才能执行下一条指令。这样可能会造成指令执行单元的空闲,严重阻碍指令执行单元的效率提升。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新的SIMT装置、线程组动态构建方法及处理器,可以动态构建线程组的方式提升并行处理器的指令执行单元利用率,充分发挥SIMT处理器的处理能力,有利于提升多线程的指令执行效率,提升处理器的整体性能。
第一方面,本发明提供一种SIMT装置,其以线程组为单位执行指令,所述SIMT装置包括线程组管理模块和指令执行模块,其中,所述线程组管理模块用于存储线程组的信息以及调度线程组,所述线程组管理模块被配置为:根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;将多个可发射线程重组为重组线程组;所述指令执行模块包括多个指令执行单元,所述指令执行模块用于根据重组线程组中的线程执行对应的指令。
可选的,所述线程组管理模块包括:线程组缓存,用于存储线程组的执行信息;指令计数器缓存,用于为线程组中的每个线程分别存储每个线程的指令计数器的值;线程组重组单元,用于根据线程组的执行信息以及线程的指令计数器的值,将来自同一协作工作组的多个可发射线程重组为重组线程组,其中,所述多个可发射线程的指令计数器的值一致;线程组调度单元,用于调度可发射线程组并将其发射,以使指令执行模块能够基于被调度发射的线程组执行其中各线程对应的指令。
可选的,每个线程组中的线程按照相同的规则编号,一个线程组中的一个线程对应于一个通道,不同线程组中相同序号的线程对应于同一个通道,一个通道对应指令执行模块中的一个指令执行单元,其中,所述线程组重组单元还被配置为:将所述多个目标线程组中的任意一个可发射线程作为种子线程,将所述种子线程的指令计数器的值作为参考值;将所述多个目标线程组中的线程按通道进行线程分组,其中,不同线程组中对应于同一个通道的线程为一组,从每个线程分组中选出一个指令计数器的值与所述参考值相同的可发射线程;将所述种子线程以及根据从所述多个目标线程组中按通道进行线程分组而选出的所有可发射线程,重组为重组线程组。
可选的,所述线程组重组单元还被配置:当一个线程分组中有多个可发射线程的指令计数器的值与所述参考值相同时,采用贪婪算法或公平算法从该线程分组中选出一个可发射线程。
可选的,所述线程组重组单元还被配置为:在重组线程组执行过指令后变成有依赖线程组或分支线程组时,结束重组关系,以使重组线程组中的各个线程被返回重组前的线程组。
可选的,每个线程需要执行的指令指明了该线程对应的操作数,所述SIMT装置还包括寄存器模块;所述寄存器模块,用于存储每个线程对应的操作数,所述寄存器模块包括多个寄存器块,一个寄存器块包括多个寄存器,其中,所述寄存器模块被配置为:将不同线程组中对应同一个通道的多个线程的操作数存储在一个寄存器块中,且,同一个线程组中不同线程的操作数存储在不同的寄存器块中。
可选的,所述SIMT装置还包括指令取指解码模块、指令分发模块,其中:所述指令取指解码模块,用于根据所述线程组管理模块调度发送的重组线程组,为线程组从指令缓存中读取指令并进行指令解码;所述指令分发模块,用于对所述指令取指解码模块得到的指令进行分发,以使指令执行模块中的指令执行单元为重组线程组中的线程执行对应的指令。
第二方面,本发明提供一种线程组动态构建方法,应用于如本发明第一方面所述的SIMT装置,所述方法包括:根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;将所述多个可发射线程重组为重组线程组;为所述重组线程组读取并执行指令。
可选的,所述方法还包括:在重组线程组执行过指令后变成有依赖线程组或分支线程组时,结束重组关系,以使重组线程组中的各个线程被返回重组前的线程组。
可选的,所述根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,包括:根据各目标线程组中每个线程的指令计数器的值,确定可发射线程,以将从多个目标线程组中确定的多个可发射线程,重新组合为重组线程组,其中,所述多个可发射线程的指令计数器的值一致。
可选的,不同线程组中的线程按照相同的规则编号,一个线程组中的一个线程对应于一个通道,不同线程组中相同序号的线程对应于同一个通道,一个通道对应指令执行模块中的一个指令执行单元,所述根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,包括:将任意一个目标线程组中的任意一个可发射线程作为种子线程,将所述种子线程的指令计数器的值作为参考值;对所述多个目标线程组中的各线程,按通道序号进行线程分组并查找,其中,对应于同一个通道的线程为一组,从每个线程分组中选出一个指令计数器的值与参考值相同的可发射线程;将所述种子线程以及根据从所述多个目标线程组中按通道进行线程分组而选出的所有可发射线程,重组为重组线程组。
可选的,当所述多个目标线程组中同时存在有依赖线程组和分支线程组时,选择分支线程组中的可发射线程为种子线程。
第三方面,本发明提供一种处理器,包括多个SIMT集群,每个集群中包括多个如本发明第一方面所述的SIMT装置。该处理器是并行处理器。
与现有技术相比,本发明的优点在于:通过动态构建线程组(重组线程组),避免分支线程组中无效线程对应的指令执行单元的浪费以及有依赖线程组中执行速度较快的线程对应的指令执行单元需要等待其他线程返回处理结果带来的空闲,可以极大的提升线程执行效率,提高指令执行单元的运行效率。由此,基于本发明的SIMT装置构建的处理器并行处理效率和运行速度会更加快速。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为本发明实施例提供的一种SIMT装置的框架原理示意图;
图2为本发明实施例提供的一种线程组管理模块的框架原理示意图;
图3为本发明实施例提供的一种线程组重组单元动态构建线程组的流程示意图;
图4为本发明实施例提供的一种寄存器堆结构的示例示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
采用SIMT运算结构的处理器可称为SIMT处理器,是并行处理器。为了方便理解,先简单介绍一下SIMT处理器中SIMT运算结构的工作原理。SIMT运算结构以线程组为单位执行指令,在每个时钟周期,同一线程组中的线程执行同一条指令,对于SIMT运算结构来说,其运行过程可简单概括如下:首先,以静态方式构建线程组,所谓静态方式构建线程组指的是在构建线程时即按照固定大小构建线程组(这里的固定大小指的是线程组中包含的线程的数量,需要说明的是,线程组的大小与SIMT运算结构中指令执行单元的能力相关,指令执行单元中通道数越多即并行度越高,则线程组越大,反之越小,由于这是本领域技术人员已知的技术,此处就不对此做过多描述),并且创建好的线程组在其整个生命周期中,线程组中的线程不发生变化;然后,以线程组为单位执行指令,其中,SIMT运算结构会存储线程组的执行信息,并根据每个线程组中线程的执行信息,选择可执行的线程组(可执行的线程组是指该线程组中的所有线程均处于可执行的状态),为可执行的线程组进行指令取指解码操作,即,为可执行的线程组从指令缓存中读取指令并进行解码以获得该线程组对应的指令(信息),以及基于指令执行单元的资源和运行情况将合适的指令发送到指令执行单元进行线程组对应指令的执行。
正如背景技术中所述的,现有的SIMT运算结构存在指令执行单元利用效率低下的问题,主要原因在于现有技术中的SIMT运算装置采用静态构建线程组的方式,这就会导致如下问题的出现:在一个线程组执行了条件分支指令后,可能出现该线程组的部分线程有效,部分线程无效的情况,当线程组里的有效线程比较少的时候,无效线程对应的指令执行单元可能会浪费,导致指令执行单元利用率低,处理器的性能降低;而且,对于执行访存指令的线程组,由于同一线程组的所有线程是一起执行指令的,线程组需要等待最晚返回访存结果的线程才能执行下一条指令,这样可能会造成较早返回结果的指令执行单元的空闲。
为了改善该问题,本发明针对SIMT运算架构提出一种动态构建线程组的方案,通过动态地将目标线程组中的可发射线程重组为新的线程组(重组线程组)来提高指令执行单元的利用率,提升整体运行效率,其中,目标线程组是存在指令执行单元浪费或空闲的线程组。通过将可发射线程重组为新的线程组,由于重组后的线程组中的线程均为可发射线程,所以重组后的线程组是可发射线程组,可与其他可执行线程组(其他可执行线程组可以是未经重组的线程组,也可以是重组后的线程组)一样被调度发射以使指令执行单元执行其对应的指令,无需等待或浪费空闲的指令执行单元,从而提高指令执行单元的利用率。该方案可在硬件层级动态构建线程组,提升并行处理器的指令执行单元利用率,提高并行处理器的整体性能,可在图形处理、人工智能、高性能计算、光线追踪计算应用等运算密集的场景中广泛应用。
为了支持线程组的动态重组,本申请实施例提供的一种SIMT装置中包括能够进行线程组重组的线程组管理模块,该线程组管理模块用于存储线程组的信息以及调度线程组,线程组管理模块被配置为:根据来自同一个协作工作组的多个目标线程组,从该多个目标线程组包括的多个线程中确定出多个可发射线程,该多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;将多个可发射线程重组为重组线程组。当然,该SIMT装置还可以包括用于创建(视为静态构建)线程组的线程组构建模块。线程组管理模块可以对线程组构建模块所创建出来的线程组进行管理,从而对其中符合重组要求的线程组进行重组,线程组管理模块还可以对未经重组的线程组和/或经过重组的线程组进行调度,以使SIMT装置为被调度的线程组确定需要执行的指令。该SIMT装置还可以包括具有多个指令执行单元的指令执行模块,用于为未经重组的线程组和/或经过重组的线程组执行对应的指令。
为了更好的理解本发明,下面结合SIMT运算结构的基本组成框架、工作原理以及具体的实施例来详细说明本发明。
如图1所示,本申请实施例提供的一种SIMT装置可包括:线程组构建模块、线程组管理模块、指令取指解码模块、执令分发模块、寄存器模块、指令执行模块。其中,所述线程组构建模块用于将计算任务对应的若干线程构建成一个线程组;所述线程组管理模块用于管理每个线程组的状态,并对各线程组的执行信息进行存储;所述指令取值解码模块用于为线程组从指令缓存中读取指令并进行解码;所述指令分发模块用于根据所述指令执行模块的资源和运行情况,对所述指令取指解码模块所解码的指令进行调度分发,将可发射的指令发射给对应的指令执行单元;所述寄存器模块用于存储每个线程的操作数;所述指令执行模块包括多个指令执行单元,用于负责指令的执行。下面依次介绍每个模块的功能。
一、线程组构建模块
所述线程组构建模块用于将计算任务对应的若干线程构建成一个线程组,还用于为构建的线程组分配诸如线程组序号、寄存器资源、本地私有存储等资源,以及还可用于为线程组内每个线程对应的寄存器进行初始化。
需要说明的是,由于SIMT装置中指令执行模块的并行度(执行单元的个数)一般是确定不变的,所以一个线程组里的线程数量一般也是固定的,例如,常见的有16、32、64、128个线程等。通常采用有效标志位来标明线程组中的线程有效或无效。线程组中的每个线程一般对应于一个独立的指令执行单元,并称之为运算通道,简称为通道(l ane)。
根据本发明的一个实施例,不同线程组里相同序号的线程一般都会在同一个通道里执行计算任务或访存任务。例如,以16线程为一个线程组的SIMT装置为例来说,每个线程组中均包含16个线程,线程组0中的线程序号若为0-15,线程组1中的线程序号也会是0-15,同理,其他线程组中的线程序号也是0-15,且线程组0、线程组1、……线程组N中序号相同的线程就会在同一个通道中执行指令,也就是说线程组0中的0号线程、线程组1中的0号线程、……、线程组N中的0号线程在同一个通道中执行指令(为了便于描述,假设为通道0),线程组0中的1号线程、线程组1中的1号线程、……、线程组N中的1号线程在同一个通道中执行指令(为了便于描述,假设为通道1),并以此类推。
二、线程组管理模块
所述线程组管理模块用于管理每个线程组的状态,并对线程组的执行信息进行存储。该线程组管理模块还用于根据调度算法对待执行的线程组进行调度以选择合适的线程组发射到指令取值解码模块。
根据本发明的一个实施例,所述线程组管理模块被配置具有为独立记录各个线程的指令计数器,基于线程的指令计数器可确定该线程对应执行的指令。线程组管理模块被配置为可根据线程组构建模块构建的线程组的状态和执行信息,将其中的部分可发射线程重新组合成为新的可发射线程组,本发明称之为重组线程组。通过将线程重组,可以有效提高指令执行单元的运行利用效率,减少指令执行单元的资源浪费和空闲等待。
需要说明的是,对于线程组管理模块管理的线程组,可能是线程组构建模块新构建的线程组,也可能是线程组构建模块之前构建的并通过指令执行模块执行完某条指令的线程组。对于执行完指令的线程组可能有如下三种状态:
一种是执行完计算指令的线程组,其所有线程的指令计数器值仍然会保持一致,而且由于计算单元延时较短不会产生长周期的依赖,这种线程组仍然是可发射线程组,一般会继续发射到指令取值解码模块进行下一条指令的读取和执行。
另外一种是由于某种依赖,不能立刻发射的线程组,比如线程组里面的某线程执行了访问存储器指令(简称访存指令),但难以立即返回访存结果,需要等待访存结果才能执行下一条指令,这类线程组称为有依赖线程组,有依赖线程组必须解除依赖后才能被发射到指令取值解码模块进行下一条指令的读取和执行。
还有一种是执行了条件分支指令的线程组,这类线程组里的线程在执行条件分支指令后执行结果不同,使得这类线程组执行下一条指令时只有部分线程有效,这类线程组称为分支线程组。虽然传统的SIMT运算结构一般为分支指令设计了基于线程组的指令计数器堆栈来控制分支指令的执行,该堆栈会存储线程组分支跳转的指令计数器的值、合并点的指令计数器值以及线程执行掩码,但是堆栈是被线程组中的所有线程共享的,线程没有独立的指令计数器,使得线程无法重组。
在本申请实施例提供的SIMT装置中,为每个线程配置了指令计数器,而不是一个线程组中的所有线程只能共享一个指令计数器堆栈,这样可以支持实现不同线程组中可发射线程的自由组合。只需要通过比较线程组的当前指令计数器的值和每个线程的指令计数器值,并和线程有效位进行逻辑与运算,得到每个线程的执行掩码:如果指令计数器数值相等,线程执行条件为真;如果指令计数器数值不相等,线程执行条件为假。其中需要注意的是,重组线程组里的每个线程的寄存器地址虽然可能各不相同,但对重组线程组的数据依赖判断与现有技术一致,即,只要重组线程组中有任意一个线程的数据存在数据依赖,那么该重组线程组就是有依赖线程组,(在解除依赖前)其对应的指令就不能发射。
根据本发明的一个实施例,如图2所示,所述线程组管理模块可包括线程组缓存、指令计数器缓存、线程组重组单元、线程组调度单元。下面分别详细说明每个部分。
2.1线程组缓存单元
线程组缓存用于存储线程组的信息,包括存储所述线程组构建模块新构建的可发射线程组信息,以及存储所述线程组构建模块构建的已经由指令执行模块执行完指令后的可发射线程组、有依赖线程组或分支线程组的信息,这些线程组的执行信息可包括线程组状态、线程有效标志位、线程组的当前指令计数器、线程访问寄存器(或本地存储器的偏移地址)等。所述线程组缓存所涉及的线程组需要容纳线程组构建模块产生的所有线程组。
根据本发明的一个实施例,线程组中每个线程有自己的指令计数器,线程组缓存不需要储存每个线程的执行掩码,只需要通过比较线程组的当前指令计数器的值和每个线程的指令计数器值,并和线程有效位进行逻辑与运算,得到每个线程的执行掩码,如果指令计数器数值相等,则线程执行条件为真,线程属于可发射线程或称为可执行线程;如果指令计数器数值不相等,线程执行条件为假,也就是不可执行线程。
2.2指令计数器缓存
所述指令计数器缓存用于存储所有线程的指令计数器的值,可用于为线程组中的每个线程分别存储每个线程的指令计数器的值,并在所述指令执行模块执行线程组对应指令后,更新线程组中各个线程的指令计数器值。根据线程组缓存所存的信息可以得知各线程组的具体状态,从而确定出目标线程组,根据各目标线程组中每个线程的指令计数器的值确定可发射线程,以将从多个目标线程组中确定的多个可发射线程重新组合为重组线程组。
2.3线程组重组单元
所述线程组重组单元用于根据线程组的执行信息以及线程的指令计数器的值,将来自同一协作工作组的多个可发射线程重组为重组线程组,其中,所述多个可发射线程的指令计数器的值一致。线程组重组单元可用于实时从多个目标线程组包括的多个线程中确定出多个可发射线程,并将多个可发射线程重组为重组线程组。其中,所述多个目标线程组为来自同一个协作工作组的线程组,且所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组。
其中,为了更好的提高重组线程组的指令执行效率,重组的线程组最好满足三个条件:一、重组线程组中的每个线程的指令计数器是一致的,这样可以简化重组后的线程组在后续指令执行过程中的指令读取和解码;二,线程的通道序号保持不变,这样可以简化寄存器的读取和写回,比如原线程组里的一个线程通道序号为7,其在重组线程组的通道序号仍为7;三、可重组的线程需要属于同一协作工作组,因为属于同一协作工作组的线程会执行同步指令,如果把不同协作工作组的线程构建成一个线程组,会影响同步效率并增加同步的复杂度,并且本地存储通常是基于协作工作组进行存储资源的申请和释放,属于同一协作工作组的重组线程组一起执行指令,方便本地存储的释放。
通过上述描述可知,所述线程组重组单元通过实时获取线程组的状态信息,并将有依赖线程组和/或分支线程组中的多个可发射线程重新组合来实现动态构建重组线程组的目的。根据本发明的一个实施例,如图3所示,所述线程组重组单元可被配置为通过执行如下步骤来实现动态构建重组线程组的目的:
S1、选取种子线程。所谓选取种子线程是指在一个有依赖线程组或分支线程组找到一个可以发射的线程,将该线程的指令计数器值作为参考指令计数器值(即,参考值)。根据本发明的一个实施例,选择种子线程时,根据线程指令计数器的值,从选择的有依赖线程组或分支线程组中的所有可发射线程中选取指令计数器值最小的线程优先执行即将其作为种子线程。这种线程选取的方法使指令执行规则比较简单,减少了选择逻辑。此外,对于有依赖线程组和分支线程组的选择,一般的优先选择分支线程组里的线程,因为有依赖线程组里的线程因为会陆续返回结果,延后选择有依赖线程组时会使得其中有效的线程可能会更多。
S2、在候选线程组里按线程通道序号进行查找。
具体来说,首先,将全部有依赖线程组和分支线程组里的线程按线程通道序号进行分组。每个线程分组中的线程均属于同一个通道,只是属于不同原始线程组。比如线程组有16个通道,那么候选线程组的线程就会分成16个组,不同线程组中同一个通道中的线程为一个线程分组。例如,仍然以16个线程为一个线程组为例来说,每个线程组中均包含16个线程,线程组0中的线程序号为0-15,线程组1中的线程序号也会是0-15,同理,其他线程组中的线程序号也是0-15,且线程组0、线程组1、……线程组N中的序号相同的线程就会在同一个通道中执行指令,也就是说线程组0中的0号线程、线程组1中的0号线程、……、线程组N中的0号线程在同一个通道中执行指令(通道0),线程组0中的1号线程、线程组1中的1号线程、……、线程组N中的1号线程在同一个通道中执行指令(通道1),并以此类推。在将有依赖线程组和分支线程组里的线程按线程通道序号进行分组时,所有的有依赖线程组和分支线程组里的0号线程均属于通道0的线程分组,所有的有依赖线程组和分支线程组里的1号线程均属于通道1的线程分组,并以此类推。
然后,在每个通道内查找和S1中参考线程的指令计数器值相同的待发射线程,每次查找的深度是所有候选线程组的数目和。当线程组数目较少时可以一个周期完成查找;当线程组数目较多时,可能需要多个周期查找。如果有的通道可以找到多个有相同指令计数器值的线程,可以基于贪婪算法或公平算法来选取其中一个线程。被选取线程所在的原线程组位置的有效标志位将置为无效。
S3、将每个通道找到的线程构建成一个新的线程组,并赋予新的线程组序号,也就是重组线程组。和原线程组不同,新的线程组的每个线程的寄存器基地址不同,需要按线程单独存储。由于所有线程来自于一个协作工作组,所有线程的本地存储地址偏移相同,每个线程组只需要存储一份。新构建的重组线程组和其他的待发射线程组一起进入线程组调度单元。
由于线程组构建模块会根据每个线程组的生命周期来决定资源的释放,因此线程组管理模块每次构建新的线程组需要通知线程组构建模块进行记录。为了便于理解,本发明将重新组合线程所构建的线程组称为子线程组,产生动态组合线程的原线程组(有依赖线程组和/分支线程组)称为父线程组。只有当一个父线程组的所有子线程组全部指令完成,这个父线程组才能退出,其对应资源才能释放。
2.4线程组调度单元
所述线程组调度单元用于按照调度逻辑对线程组缓存中存储的待发射线程组、线程组重组单元重组的重组线程组进行调度以发射到指令执行模块执行对应的指令,其中,线程组缓存中存储的待发射线程组包括线程组新构建的线程组、线程组之前构建的且经指令执行模块执行完某条指令后的可发射线程组。通过对线程进行重组,并将重组线程组按照与其他线程组一样的方式进行调度,使得有依赖线程组和分支线程组中的可发射线程可以更快的进行指令执行,避免指令执行单元的空闲,提升利用率。
三、指令取指解码模块
所述指令取指解码模块根据接收到的所述线程组管理模块发射的线程组中各线程对应的指令计数器的值,从指令缓存中读取指令并进行解码。无论所述线程组管理模块发射的线程组是重组线程组还是非重组线程组,均按照线程组中各线程对应的指令计数器的值进行指令读取。其中,指令解码的目的主要在于获取寄存器访问的源操作数和目的操作数地址,以及指令执行的操作码和指令执行的一些控制信息。此外,根据指令执行模块的处理能力,所述指令取指解码模块在每个时钟周期读取和解码的指令数目可是一条,也可以是多条。由于指令取指解码模块的取指解码功能原理是本领域技术人员已知的内容,本发明不做详细赘述。
四、指令分发模块
所述指令分发模块根据所述指令执行模块的资源和运行情况对所述指令取指解码模块解码的准备发射的指令进行调度,将可发射的指令发射给指令执行模块中对应的指令执行单元,这些可发射的指令可能是重组线程组对应的指令,也可能是非重组线程组对应的指令,只要是经指令取值解码模块解码后的待发射指令均按照同样的逻辑进行分发。对于任意一个已发射的线程组来说,有些指令可能需要多个时钟周期发射给执行单元,所述指令分发模块可控制指令的发射序列。当线程组的两条指令的操作数之间有依赖时,即待发射指令需要的源操作数是前一条指令的目的操作数且而前一条指令还在执行单元里执行时,那么指令分发模块会等待依赖解除后,再发射下一条指令。指令分发模块的指令分发功能是本领域技术人员已知的技术,本发明不做过多赘述。
五、寄存器模块
所述寄存器模块负责存储每个线程的源操作数和目的操作数,这些操作数是指令执行模块的输入和输出。
寄存器模块一般是寄存器堆结构,且由于处理器的线程数目和每个线程寄存器数目较多,并行处理器架构的寄存器堆一般由静态存储器构成。其中,寄存器本身的特性是:一个寄存器块一个时钟周期只能读取一次(可理解为输出口只有一个),不同的寄存器块在同一个时钟周期可以同时读取。作为一种实施方式,可将一个线程的操作数放在不同的寄存器块,同一个线程组中不同线程对应的相同比特位的操作数放在同一个寄存器块,这样可以在同一个时钟周期通过多个寄存器块读取一个线程的全部操作数,但是无法读取不同线程的操作数,会造成线程组中线程的等待以及重组复杂度。为此,作为本发明的另一种实施方式,为了提升线程并行执行效率以及减少线程重组的复杂度,避免重组线程组读取寄存器地址冲突的问题,调整了寄存器的存储模式,在按通道来选择线程进行重组的情况下,使一个线程的所有操作数在一个寄存器块,不同线程组中相同通道序号的线程在同一个寄存器块,同一个线程组中不同线程的操作数存储在不同的寄存器块中,这样一个时钟周期可以读取所有线程的相同比特位的操作数(在一个周期同时读取多个线程的多个操作数),实现更好的并行运算。
此外,为了尽可能满足所述指令执行模块所需的源操作数同时有效,需要在一个周期同时读取多个线程的多个源操作数,寄存器堆一般会分为多个块(同一个块只能读取一个数据,不同的块可以同时读取多个数据,块的数据宽度一般和静态存储器的典型数据宽度有关,这些均是本领域技术人员已知的技术,本发明不做过多赘述)。基于此,作为本发明的另一种实施例,为了提高重组线程组的指令执行效率,本发明通过提出一种满足重组线程组的所有线程在一个时钟周期可以读取每个线程的操作数的寄存器方案,通过将寄存器堆按照线程的通道序号进行分块,每个块可以读取同一线程的若干个连续寄存器,所有的块可以同时读取不同线程的寄存器。根据本发明的一个示例,如图4所示,展示了一个4通道的寄存器堆结构,以线程组大小为4个线程进行示例性说明。线程组0中有序号为0-3号的线程、线程组1中也有序号为0-3号的线程、……线程组N中也有序号为0-3号的线程,每个线程对应有16个寄存器,即线程组0中的0号线程有0-15号寄存器、线程组0中的1号线程有0-15号寄存器、……线程组0中的3号线程有0-15号寄存器、线程组1中的0号线程有0-15号寄存器,以此类推。其中,本领域技术人员应当知道,虽然不同线程组中的线程采用了同样的序号描述,这只是为了描述区分以及资源分配的方便,但是线程本身并不相同。在本发明的寄存器堆结构中,线程组0中的0号线程、线程组1中的0号线程、……、线程组N中的0号线程在同一个通道中执行指令(即通道0),线程组0中的1号线程、线程组1中的1号线程、……、线程组N中的1号线程在同一个通道中执行指令(即通道1),线程组0中的2号线程、线程组1中的2号线程、……、线程组N中的2号线程在同一个通道中执行指令(即通道2),线程组0中的3号线程、线程组1中的3号线程、……、线程组N中的3号线程在同一个通道中执行指令(即通道3),每个通道对应一个寄存器块即分别为通道0寄存器块、通道1寄存器块、通道2寄存器块、通道3寄存器块,每个寄存器块有16个寄存器。每个块可以读取同一线程的四个连续寄存器,即一个周期可以同时读取操作数高地址相同,地址低两个比特位数值为0-3的寄存器,这样的寄存器堆可以保证同一个周期读取所有线程的操作数,相较于现有技术下不考虑通道而采用的在同一个周期读取一个线程的所有操作数并在多个周期读取不同线程的操作数,可以提高线程组并行执行效率,提升指令执行单元的利用率。
六、指令执行模块
所述指令执行模块用于负责指令的执行,其包括多个执行单元,执行单元一般包括计算单元和访存单元。所述指令执行单元执行完指令后进行运算结果写回,并可为对应的线程向线程组管理模块更新线程状态和/或线程组状态,其中,目的操作数写回寄存器中的目的操作数地址(在对指令进行解码时就可确定目的操作数地址,写回运算结果时可将目的操作数写入对应的目的操作数地址),所述线程组管理模块可根据运算结果更新线程状态。
其中,计算单元可以是整数运算单元浮点运算单元和特殊功能函数运算单元。访存单元主要处理访存指令,计算每个线程访问存储器的地址。在并行处理架构中,为了提高线程的指令并行执行效率,对于典型运算,每个线程有各自独立的计算单元,即通道数目和计算单元数目相同。对于非典型运算或者吞吐率要求不高的指令,多个线程会共享计算单元,即通道数目是计算单元数目的整数倍,这些均是本领域技术人员已知的技术,本发明不做过多赘述。
需要说明的是,重组线程组的指令读取、解码和执行过程,与非重组线程组类似,只有读取和写回寄存器时需要按每个线程的通道计算操作数在寄存器的地址。当重组线程组执行完一条指令后,会回到线程组管理模块,并更新指令计数器缓存。如果当前线程组管理模块没有可执行线程组时,重组的线程组会继续发射,进行下一条指令的执行。重组线程组里的线程不会直接参与新的线程组构建。如果重组线程组的线程有依赖或者产生分支(例如该重组线程组执行了几条指令后变成了分支线程组或有依赖线程组),可以将重组线程组中的线程解除重组关系,使每个线程回到重组前的线程组中,即将其各个通道的线程返回原父线程组,进行下一轮的重新构建(下一轮可基于最新的线程组状态、线程状态来进行重组构建)。这样做的好处是,使原线程组最多只有一级重组线程组,方便了原线程组的资源管理。
基于同样的发明构思,本申请实施例提供一种线程组动态构建方法,可应用于前述的SIMT装置。该方法包括:根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;将所述多个可发射线程重组为重组线程组;为所述重组线程组读取并执行指令。
可选的,所述根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,可包括:根据各目标线程组中每个线程的指令计数器的值,确定可发射线程,以将从多个目标线程组中确定的多个可发射线程,重新组合为重组线程组,其中,所述多个可发射线程的指令计数器的值一致。
可选的,若不同线程组中的线程按照相同的规则编号,一个线程组中的一个线程对应于一个通道,不同线程组中相同序号的线程对应于同一个通道,一个通道对应指令执行模块中的一个指令执行单元,所述根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,包括:将任意一个目标线程组中的任意一个可发射线程作为种子线程,将所述种子线程的指令计数器的值作为参考值;对所述多个目标线程组中的各线程,按通道序号进行线程分组并查找,其中,对应于同一个通道的线程为一组,从每个线程分组中选出一个指令计数器的值与参考值相同的可发射线程;将所述种子线程以及根据从所述多个目标线程组中按通道进行线程分组而选出的所有可发射线程,重组为重组线程组。其中,当所述多个目标线程组中同时存在有依赖线程组和分支线程组时,可选择分支线程组中的可发射线程为种子线程。
可选的,该方法还可包括:在重组线程组执行过指令后变成有依赖线程组或分支线程组时,结束重组关系,以使重组线程组中的各个线程被返回重组前的线程组。
基于同样的发明构思,本发明提供一种处理器,该处理器是并行处理器,其包括多个前述的SIMT装置。
通过上述实施例描述可知,本发明通过动态构建线程组,避免分支线程组中无效线程对应的指令执行单元的浪费以及有依赖线程组中执行速度较快的线程对应的指令执行单元需要等待其他线程返回处理结果带来的空闲,可以极大的提升线程执行效率,提高指令执行单元的运行效率。由此,基于本发明的SIMT装置构建的处理器并行处理效率和运行速度会更加快速。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。在不冲突的情况下,上述的实施例或实施方式,可相互组合。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。各方面实施例或实施方式的原理、效果可相互参照。计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (13)

1.一种SIMT装置,其特征在于,其以线程组为单位执行指令,所述SIMT装置包括线程组管理模块和指令执行模块,其中,
所述线程组管理模块用于存储线程组的信息以及调度线程组,所述线程组管理模块被配置为:
根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;
将多个可发射线程重组为重组线程组;
所述指令执行模块包括多个指令执行单元,所述指令执行模块用于根据重组线程组中的线程执行对应的指令。
2.根据权利要求1所述的SIMT装置,其特征在于,所述线程组管理模块包括:
线程组缓存,用于存储线程组的执行信息;
指令计数器缓存,用于为线程组中的每个线程分别存储每个线程的指令计数器的值;
线程组重组单元,用于根据线程组的执行信息以及线程的指令计数器的值,将来自同一协作工作组的多个可发射线程重组为重组线程组,其中,所述多个可发射线程的指令计数器的值一致;
线程组调度单元,用于调度可发射线程组并将其发射,以使指令执行模块能够基于被调度发射的线程组执行其中各线程对应的指令。
3.根据权利要求2所述的SIMT装置,其特征在于,每个线程组中的线程按照相同的规则编号,一个线程组中的一个线程对应于一个通道,不同线程组中相同序号的线程对应于同一个通道,一个通道对应指令执行模块中的一个指令执行单元,其中,所述线程组重组单元还被配置为:
将所述多个目标线程组中的任意一个可发射线程作为种子线程,将所述种子线程的指令计数器的值作为参考值;
将所述多个目标线程组中的线程按通道进行线程分组,其中,不同线程组中对应于同一个通道的线程为一组,从每个线程分组中选出一个指令计数器的值与所述参考值相同的可发射线程;
将所述种子线程以及根据从所述多个目标线程组中按通道进行线程分组而选出的所有可发射线程,重组为重组线程组。
4.根据权利要求3所述的SIMT装置,其特征在于,所述线程组重组单元还被配置:
当一个线程分组中有多个可发射线程的指令计数器的值与所述参考值相同时,采用贪婪算法或公平算法从该线程分组中选出一个可发射线程。
5.根据权利要求3所述的SIMT装置,其特征在于,所述线程组重组单元还被配置为:
在重组线程组执行过指令后变成有依赖线程组或分支线程组时,结束重组关系,以使重组线程组中的各个线程被返回重组前的线程组。
6.根据权利要求1所述的SIMT装置,其特征在于,每个线程需要执行的指令指明了该线程对应的操作数,所述SIMT装置还包括寄存器模块;
所述寄存器模块,用于存储每个线程对应的操作数,所述寄存器模块包括多个寄存器块,一个寄存器块包括多个寄存器,其中,所述寄存器模块被配置为:
将不同线程组中对应同一个通道的多个线程的操作数存储在一个寄存器块中,且,同一个线程组中不同线程的操作数存储在不同的寄存器块中。
7.根据权利要求1-6任一项所述的SIMT装置,其特征在于,所述SIMT装置还包括指令取指解码模块、指令分发模块,其中:
所述指令取指解码模块,用于根据所述线程组管理模块调度发送的重组线程组,为线程组从指令缓存中读取指令并进行指令解码;
所述指令分发模块,用于对所述指令取指解码模块得到的指令进行分发,以使指令执行模块中的指令执行单元为重组线程组中的线程执行对应的指令。
8.一种线程组动态构建方法,其特征在于,应用于权利要求1-7任一项所述的SIMT装置,所述方法包括:
根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,所述多个目标线程组中的任一个目标线程组是有依赖线程组或分支线程组;
将所述多个可发射线程重组为重组线程组;
为所述重组线程组读取并执行指令。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在重组线程组执行过指令后变成有依赖线程组或分支线程组时,结束重组关系,以使重组线程组中的各个线程被返回重组前的线程组。
10.根据权利要求8所述的方法,其特征在于,所述根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,包括:
根据各目标线程组中每个线程的指令计数器的值,确定可发射线程,以将从多个目标线程组中确定的多个可发射线程,重新组合为重组线程组,其中,所述多个可发射线程的指令计数器的值一致。
11.根据权利要求8-10中任一项所述的方法,其特征在于,不同线程组中的线程按照相同的规则编号,一个线程组中的一个线程对应于一个通道,不同线程组中相同序号的线程对应于同一个通道,一个通道对应指令执行模块中的一个指令执行单元,所述根据来自同一个协作工作组的多个目标线程组,从所述多个目标线程组包括的多个线程中确定出多个可发射线程,并将所述多个可发射线程重组为重组线程组,包括:
将任意一个目标线程组中的任意一个可发射线程作为种子线程,将所述种子线程的指令计数器的值作为参考值;
对所述多个目标线程组中的各线程,按通道序号进行线程分组并查找,其中,对应于同一个通道的线程为一组,从每个线程分组中选出一个指令计数器的值与参考值相同的可发射线程;
将所述种子线程以及根据从所述多个目标线程组中按通道进行线程分组而选出的所有可发射线程,重组为重组线程组。
12.根据权利要求11所述的方法,其特征在于,当所述多个目标线程组中同时存在有依赖线程组和分支线程组时,选择分支线程组中的可发射线程为种子线程。
13.一种处理器,其特征在于,包括多个SIMT集群,每个集群中包括多个如权利要求1-7任一所述的SIMT装置。
CN202310934100.0A 2023-07-27 2023-07-27 一种simt装置、线程组动态构建方法及处理器 Active CN117009054B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310934100.0A CN117009054B (zh) 2023-07-27 2023-07-27 一种simt装置、线程组动态构建方法及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310934100.0A CN117009054B (zh) 2023-07-27 2023-07-27 一种simt装置、线程组动态构建方法及处理器

Publications (2)

Publication Number Publication Date
CN117009054A true CN117009054A (zh) 2023-11-07
CN117009054B CN117009054B (zh) 2024-06-28

Family

ID=88564891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310934100.0A Active CN117009054B (zh) 2023-07-27 2023-07-27 一种simt装置、线程组动态构建方法及处理器

Country Status (1)

Country Link
CN (1) CN117009054B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117850882A (zh) * 2024-03-07 2024-04-09 北京壁仞科技开发有限公司 单指令多线程的处理装置及方法
CN118012632A (zh) * 2024-04-10 2024-05-10 山东浪潮科学研究院有限公司 基于多级重分配机制的gpgpu分支指令调度方法
CN118349282A (zh) * 2024-06-18 2024-07-16 北京辉羲智能科技有限公司 支持多发射的simt处理器、指令处理方法和芯片
CN118626146A (zh) * 2024-08-08 2024-09-10 北京壁仞科技开发有限公司 人工智能芯片、寄存器空间动态管理方法、介质和程序

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344842A (zh) * 2007-07-10 2009-01-14 北京简约纳电子有限公司 多线程处理器及其多线程处理方法
CN102640131A (zh) * 2009-09-24 2012-08-15 辉达公司 并行线程处理器中的一致分支指令
US20130042090A1 (en) * 2011-08-12 2013-02-14 Ronny M. KRASHINSKY Temporal simt execution optimization
CN103809936A (zh) * 2012-11-05 2014-05-21 辉达公司 编译或运行时执行分叉-合并数据并行程序的系统和方法
US20150135182A1 (en) * 2013-11-08 2015-05-14 Swarm64 As System and method of data processing
CN106257411A (zh) * 2015-06-17 2016-12-28 联发科技股份有限公司 单指令多线程计算系统及其方法
CN106484519A (zh) * 2016-10-11 2017-03-08 东南大学 异步线程重组方法及基于该方法的simt处理器
CN112114877A (zh) * 2020-09-28 2020-12-22 西安芯瞳半导体技术有限公司 一种动态补偿线程束warp的方法、处理器及计算机存储介质
CN114168301A (zh) * 2021-12-20 2022-03-11 海光信息技术股份有限公司 线程调度方法、处理器以及电子装置
CN114625421A (zh) * 2020-12-11 2022-06-14 上海阵量智能科技有限公司 Simt指令处理方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101344842A (zh) * 2007-07-10 2009-01-14 北京简约纳电子有限公司 多线程处理器及其多线程处理方法
CN102640131A (zh) * 2009-09-24 2012-08-15 辉达公司 并行线程处理器中的一致分支指令
US20130042090A1 (en) * 2011-08-12 2013-02-14 Ronny M. KRASHINSKY Temporal simt execution optimization
CN103809936A (zh) * 2012-11-05 2014-05-21 辉达公司 编译或运行时执行分叉-合并数据并行程序的系统和方法
US20150135182A1 (en) * 2013-11-08 2015-05-14 Swarm64 As System and method of data processing
CN106257411A (zh) * 2015-06-17 2016-12-28 联发科技股份有限公司 单指令多线程计算系统及其方法
CN106484519A (zh) * 2016-10-11 2017-03-08 东南大学 异步线程重组方法及基于该方法的simt处理器
CN112114877A (zh) * 2020-09-28 2020-12-22 西安芯瞳半导体技术有限公司 一种动态补偿线程束warp的方法、处理器及计算机存储介质
CN114625421A (zh) * 2020-12-11 2022-06-14 上海阵量智能科技有限公司 Simt指令处理方法及装置
CN114168301A (zh) * 2021-12-20 2022-03-11 海光信息技术股份有限公司 线程调度方法、处理器以及电子装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
STEFFEN M等: "Improving SIMT Efficiency of Global Rendering Algorithms with Architectural Support for Dynamic Micro-Kernels", 《IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE.ACM》, 31 December 2010 (2010-12-31), pages 237 - 248, XP058359379, DOI: 10.1109/MICRO.2010.45 *
张军;何炎祥;沈凡凡;江南;李清安;: "基于2阶段同步的GPGPU线程块压缩调度方法", 计算机研究与发展, no. 06, 15 June 2016 (2016-06-15), pages 1172 - 1185 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117850882A (zh) * 2024-03-07 2024-04-09 北京壁仞科技开发有限公司 单指令多线程的处理装置及方法
CN117850882B (zh) * 2024-03-07 2024-05-24 北京壁仞科技开发有限公司 单指令多线程的处理装置及方法
CN118012632A (zh) * 2024-04-10 2024-05-10 山东浪潮科学研究院有限公司 基于多级重分配机制的gpgpu分支指令调度方法
CN118349282A (zh) * 2024-06-18 2024-07-16 北京辉羲智能科技有限公司 支持多发射的simt处理器、指令处理方法和芯片
CN118626146A (zh) * 2024-08-08 2024-09-10 北京壁仞科技开发有限公司 人工智能芯片、寄存器空间动态管理方法、介质和程序

Also Published As

Publication number Publication date
CN117009054B (zh) 2024-06-28

Similar Documents

Publication Publication Date Title
CN117009054B (zh) 一种simt装置、线程组动态构建方法及处理器
US20210349763A1 (en) Technique for computational nested parallelism
US11847508B2 (en) Convergence among concurrently executing threads
US10067768B2 (en) Execution of divergent threads using a convergence barrier
KR101638225B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
CN108108188B (zh) 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
KR101620676B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US9442755B2 (en) System and method for hardware scheduling of indexed barriers
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US10430190B2 (en) Systems and methods for selectively controlling multithreaded execution of executable code segments
US9142005B2 (en) Efficient placement of texture barrier instructions
US10949200B2 (en) Methods and apparatus for executing data-dependent threads in parallel
CN110308982B (zh) 一种共享内存复用方法及装置
US20070143582A1 (en) System and method for grouping execution threads
US20140165049A1 (en) Compiler-controlled region scheduling for simd execution of threads
US20130159628A1 (en) Methods and apparatus for source operand collector caching
US20140258693A1 (en) System and method for hardware scheduling of conditional barriers and impatient barriers
US20220027194A1 (en) Techniques for divergent thread group execution scheduling
US9286114B2 (en) System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same
CN116414464A (zh) 调度任务的方法和装置、电子设备和计算机可读介质
CN116414541B (zh) 兼容多种任务工作模式的任务执行方法和装置
US20230350675A1 (en) Graphics processor unit with opportunistic inter-path reconvergence
US20220366632A1 (en) Accelerated processing via a physically based rendering engine
Yamashita et al. Bulk execution of the dynamic programming for the optimal polygon triangulation problem on the GPU
US20240303113A1 (en) Compiler-directed graph-based command dispatch for accelerators

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