CN115617499B - 一种gpu多核超线程技术的系统及方法 - Google Patents

一种gpu多核超线程技术的系统及方法 Download PDF

Info

Publication number
CN115617499B
CN115617499B CN202211636083.4A CN202211636083A CN115617499B CN 115617499 B CN115617499 B CN 115617499B CN 202211636083 A CN202211636083 A CN 202211636083A CN 115617499 B CN115617499 B CN 115617499B
Authority
CN
China
Prior art keywords
thread
core
instruction
controller
gpu
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
CN202211636083.4A
Other languages
English (en)
Other versions
CN115617499A (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.)
Shenliu Micro Intelligent Technology Shenzhen Co ltd
Original Assignee
Shenliu Micro Intelligent Technology Shenzhen 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 Shenliu Micro Intelligent Technology Shenzhen Co ltd filed Critical Shenliu Micro Intelligent Technology Shenzhen Co ltd
Priority to CN202211636083.4A priority Critical patent/CN115617499B/zh
Publication of CN115617499A publication Critical patent/CN115617499A/zh
Application granted granted Critical
Publication of CN115617499B publication Critical patent/CN115617499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Advance Control (AREA)

Abstract

一种GPU多核超线程技术的系统及方法,其中:对GPU内部的四级流水线单发射的CPU核的进行了改进,该CPU核为GPU内部的基本运算核,流处理器SM,具体的CPU核内:CPU核内部设置有指令存储器、流水线控制器、解码器、算术逻辑运算部件、读取储存单元;CPU核外设置有dispatch模块(线程派发模块);当线程控制器请求新线程时,线程派发模块将会发送新的线程指针。本发明针对多任务GPU中,线程在SM中运行的过程中出现的各种长延时问题,设计每个SM核的硬件多线程,使得总任务的执行时间缩短,提高了GPU整体的利用率。

Description

一种GPU多核超线程技术的系统及方法
技术领域
本发明属于GPU领域,具体涉及一种GPU多核超线程技术的系统及方法。
背景技术
目前市面上的GPU大多数采用SIMT的架构,多个SM共用一个warp,一个warp执行一套指令,共用一套取指译码单元。对于一个warp中的SM,所有的运算几乎是同步,如果遇到分支,部分SM会空闲,等其它SM算完了再一起进入到下一阶的执行。在这种架构下,线程的调度要以warp为单位。线程切换时间长,而且对于某些分支,不可避免的造成了SM的空闲,从而使降低运算效率。
GPU为了进行大量的并行计算,内部是由成百上千个运算核,即流处理器组成。这些运算核每4-32个组成一个图形处理集群(GPC,graphic process cluster),一个GPU中包含数百个图形处理集群(GPC,graphic process cluster)。
在多任务GPU中,每个任务会分为多达几百甚至上千个线程,GPU能快速完成任务主要是这些线程可以并行执行。这些线程的并行执行依靠GPU中的数千个流处理器SM。每个SM同一时刻只会执行一个线程。线程在执行的过程中会遇到cachemiss,浮点运算等长延迟事件。对于单线程SM ,在延迟发生时只能空闲,浪费运算资源,也影响任务执行的进度,各个线程完成的时间整体差别也会较大。
针对GPU中的SM面临的问题,硬件多线程技术其实可以比较好的解决。硬件多线程技术分为粗粒度多线程,细粒度多线程,同时多线程。多线程技术的根本是为了任务的并行与提高CPU核利用率,掩盖延迟。其中最复杂利用率也最高的属同时多线程。硬件多线程技术一般用于高端CPU核,通常为超标量多发射技术。但是该技术并不适用于GPU中的多核。主要原因有,超标量核设计复杂,会增加单核的面积,不适用与GPU中数千核的场景。另外超标量要求高带宽,当GPU中的小核所分资源有限。
本发明针对多任务GPU中,线程在SM中运行的过程中出现的各种长延时问题,设计每个SM核的硬件多线程,使得总任务的执行时间缩短,提高了GPU整体的利用率。同时因为硬件多线程的存在,也可以在GPU的每个SM中同时执行多任务。GPU中的多任务有严格的先后顺序,因此在执行时的优先级顺序不同。本专利特定在硬件多线程中设置优先级,使其在轮循时可以按照优先级进行轮循。保证了任务的顺序。
对SIMT来说,多个线程是共用一套指令的,出于节省硬件资源考虑,一般SIMT共用一套取指是可以的。但是程序运行总有分支,每个线程所取数据不同,必然也导致了面临的分支不同,如果面临了不同的分支,那么同一时刻,只能执行一条分支,不执行分支的线程就只有空等。另外,受统一取指的约束,软件架构是特别做了编排。如果改用各线程独立取值,软件架构,硬件架构都会推倒从来。对于一直需要考虑兼容过去产品的公司,完全推翻已有的资源代价太大。这也是一般公司不方便做此转换的原因。
因此,需要一种GPU多核超线程技术的系统及方法。
发明内容
本发明的上述发明目的是通过以下技术方案得以实现的:
GPU包括有命令处理器(command processor)、图形处理集群(GPC,graphicprocess cluster)和集群处理器(cluster processor);其中命令处理器(commandprocessor)将线程分发给所述图形处理集群(GPC,graphic process cluster),所述图形处理集群(GPC,graphic process cluster)内部包括有集群处理器(cluster processor),所述集群处理器(cluster processor)将线程通过dispatch模块派发到每个SM核(最基本的运算核)的每个线程;
对GPU内部的四级流水线单发射的CPU核的进行了改进,该CPU核为GPU内部的基本运算核,其中CPU核内部结构等同于流处理器SM;其中CPU核内部设置有指令存储器、流水线控制器、译码器、算术逻辑运算部件;CPU核外设置有dispatch模块(线程派发模块);当线程控制器请求新线程时,线程派发模块将会发送新的线程指针;
包括还设置有线程控制器,包含四个线程的切换控制,线程控制器中包含各个线程指针及线程信息;所述线程控制器设置有一个GPRmux(通用寄存选择器),一个PCmux(程序寄存选择器);GPRmux内部包含4组GPR(通用寄存器),PCmux包含4组PC(程序寄存器);
其中每个线程一组GPR,PC,根据线程控制器的输出线程ID进行选择;每个SM核配备独立的取指译码单元。
进一步的,一种GPU多核超线程技术的系统对应其工作方法具体步骤如下:
S1、线程指针载入线程派发dispatch模块:主程序编译为多线程,保留各个线程的指令指针,这些指针将会存放在dispatch模块单元中;
S2、dispatch模块派发线程指针给线程控制器:在复位重启阶段,核内的四个线程都需要线程指针,线程控制器向dispatch模块请求线程,dispatch模块将会把这四个线程填满;
S3、核执行线程程序:核执行线程的指令,如果发生了线程切换事件,将会切换到下一个现在指针有效的硬件线程;
S4、核执行到线程结束指令,切换到下一个有效硬件线程执行:一个线程执行结束,会有一个线程结束指令,该指令会产生线程结束信号送给线程控制器,线程控制器将会切换另一个硬件线程执行;
S5、dispatch 模块向核派发新的线程指针:结束的硬件线程需要新的线程指针,线程控制器会发送线程请求给dispatch模块单元,dispatch模块收到请求就发送新的线程指针给线程控制器,该硬件线程就可以在下一次轮循中被执行。
优选的,GPU通过接口收到CPU核发过来的运算任务;GPU中的命令处理器解析任务,根据任务的类型和运算量分发给对应的一些运算群cluster;每个运算群包含一个主控核,8个运算核就是这个多线程核,运算群内的主控核通过dispatch模块将运算任务细化到每个核;多线程运算核的组成和工作过程如下:
PCmux根据线程ID选择对应的PC输出取指地址,指令缓存根据取指地址输出指令;译码器获得指令后进行译码,译码器会根据指令输出操作码给ALU,同时输出输出操作数地址给GPRmux,GPRmux先根据线程ID选择对应的GPR,再根据操作数地址从gpr中取得操作数,送给运算单元ALU;ALU输出运算结果,如果指令是load/store类,该结果会送给LSU,让后访问数据缓存,如果是运算类,该结果会写回GPR;当指令缓存执行取值时,指令可能不在指令缓存中,这时就会发生指令cache miss;当LSU访问数据缓存时,也会发生数据 cachemiss;当译码器执行了一条线程结束指令时会立即发出线程结束标志;指令 cache miss和数据cache miss,线程结束标志都会触发线程控制器切换线程,输出下一个线程ID;同时,线程控制器还会输出线程切换标志给流水线控制器,流水线控制器收到线程切换标志,一方面会执行刷流水线操作,另一方面会发出跳转请求给PC,使PC跳转到线程控制器输出的线程指针。
优选的,dispatch模块流程具体包括为,复位后,通过dispatch模块对空闲的线程进行装载填充,后判断线程指针是否填充满,若不满则继续装载线程,同时已装载线程进行指令运行,直到线程执行结束,后空闲线程向dispatch反馈核线程填充请求,后继续向空闲线程内进行派发执行指令,dispatch模块线程派发主要是准备好新的线程指令,同时与线程结束指令和线程控制器相互配合,dispatch模块派发的粒度可具体到每个SM核。
优选的,dispatch模块对核派发线程指针时,可以派发对应该线程所需的其它资源信息,包括但不限于线程所需的数据地址信息,软件线程ID;这些资源信息可以直接派发到GPR MUX中对应的线程gpr。
优选的,所述线程指针采用FIFO模式,FIFO为先被写入的数据会按顺序先被读出。
优选的,所述线程控制器内设置有线程控制模块,所述按序轮循制线程控制模块流程为:复位后请求加载线程,首先加载到线程0,线程0加载完即可运行,当线程0内的指令指针有效,且没有任何长延时事件,则线程0执行结束并发送指令,进行下一线程,当线程0内的指令指针无效,或者线程在执行的过程中遇到 如cachemiss,浮点运算长延迟事件等线程切换事件,则线程0会变成无效,此时线程控制器将切换到下一个线程1进行加载判断,直到切换到下一个有效线程。
优选的,所述线程控制模块包括有按序轮循制和按优先级轮循制,所述按序轮循制的线程用线程0、线程1、线程2、线程3来表示,所述优先级轮循制的线程用线程A、线程B、线程C、线程D来表示。
优选的,所述线程控制模块其线程来自不同的渲染任务的不同线。
优选的,所述线程控制模块其线程来自同一个渲染任务的不同线程。
综上所述,本发明包括以下技术效果:
一、本发明可以掩盖CPU核延时,并且能快速实现线程切换;大大提高CPU核的利用率:
1.相比多发射的多线程CPU核,本发明采用单发射多线程,简化电路,节省GPU的面积
2.相比单线程流处理器组成的GPU,在遇到长延时事件,及时切换,提高流处理器的利用率。
3.多线程切换在单线程核也可实现,但硬件实现单核多线程,可以实现快速及时切换。
4.本发明所用的SM核可以独立取指译码,对比普通GPU的SM核具有灵活性更好,线程切换粒度更细的特点。并且切换更加迅速。可以在一个时钟完成线程的切换。
5.GPU中每个任务的线程之间是并行的,单核多线程可以保证各线程之间的并行度。
6.GPU中各个任务也有优先级和并行度要求,硬件多线程流处理器可同时分配多个任务,保证了任务之间的并行度。对于同时在SM中运行的不同任务可以设置优先级,对于相同任务的不同线程,也可以设置优先级。
7.多线程中可配置不同任务的线程,不同的任务可以配置不同的有先级,线程在轮循中可以配置为按序轮循或者按照优先级方式轮循。
二、通过线程结束指令和线程派发模块的相互配合,达到了高效率切换线程的效果:
1、线程结束指令设定。有了线程结束指令,软件通过在每个线程末尾处添加该指令,硬件就可以及时知道线程结束,然后启动线程切换和线程请求的操作。新线程派发与与线程切换同步进行,提高了线程切换的效率。
2、多线程控制模块。多线程控制模块使得CPU核一直有备用线程。在发生线程结束或者长延时事件时迅速切换到下一线程。
3、dispatch线程派发模块,线程派发主要是准备好新的线程指令。该模块与线程结束指令和多线程控制模块相互配合。Dispatch派发的粒度可具体到每个SM核。
4、多线程控制模块线程可配置优先级,其线程可以来自不同的渲染任务,也可以使同一个渲染任务的不同线程。
5、Dispatch对核派发线程指针时,可以派发对应该线程所需的其它资源信息,包括但不限于线程所需的数据地址信息,线程ID等。这些信息可通过线程控制器载入对应线程的GPR,CSR或者其它用途。更利于同样的程序执行不同的操作。
附图说明
图1是本发明的多线程核结构框图及相应模块;
图2是本发明的GPU内部组成框图;
图3是本发明的dispatch 模块运行流程图;
图4是本发明的线程控制模块线程按序轮循图;
图5是本发明的线程控制模块线程按序优先级轮循图。
实施方式
本发明的上述发明目的是通过以下技术方案得以实现的:
一种GPU多核超线程技术的系统,其中:
GPU包括有命令处理器(command processor)、图形处理集群(GPC,graphicprocess cluster)和集群处理器(cluster processor);其中命令处理器(commandprocessor)将线程分发给所述图形处理集群(GPC,graphic process cluster),所述图形处理集群(GPC,graphic process cluster)内部包括有集群处理器(cluster processor),所述集群处理器(cluster processor)将线程通过dispatch模块派发到每个SM核(最基本的运算核)的每个线程;
对GPU内部的四级流水线单发射的CPU核的进行了改进,该CPU核为GPU内部的基本运算核,其中CPU核内部结构等同于流处理器SM;其中CPU核内部设置有指令存储器、流水线控制器、译码器、算术逻辑运算部件;CPU核外设置有dispatch模块(线程派发模块);当线程控制器请求新线程时,线程派发模块将会发送新的线程指针;
包括还设置有线程控制器,包含四个线程的切换控制,线程控制器中包含各个线程指针及线程信息;所述线程控制器设置有一个GPRmux(通用寄存选择器),一个PCmux(程序寄存选择器);GPRmux内部包含4组GPR(通用寄存器),PCmux包含4组PC(程序寄存器);
其中每个线程一组GPR(通用寄存器),PC(程序寄存器),根据线程控制器的输出线程ID进行选择;每个SM核配备独立的取指译码单元。
一种GPU多核超线程技术的方法,其方法具体步骤如下:
S1、线程指针载入线程派发dispatch模块:主程序编译为多线程,保留各个线程的指令指针,这些指针将会存放在dispatch模块单元中;
S2、dispatch模块派发线程指针给线程控制器:在复位重启阶段,核内的四个线程都需要线程指针,线程控制器向dispatch模块请求线程,dispatch模块将会把这四个线程填满;
S3、核执行线程程序:核执行线程的指令,如果发生了长延时事件,将会切换到下一个现在指针有效的硬件线程;
S4、核执行到线程结束指令,切换到下一个有效硬件线程执行:一个线程执行结束,会有一个线程结束指令,该指令会产生线程结束信号送给线程控制器,线程控制器将会切换另一个硬件线程执行;
线程结束指令设定,有了线程结束指令,软件通过在每个线程末尾处添加该指令,硬件就可以及时知道线程结束,然后启动线程切换和线程请求的操作,新线程派发与线程切换同步进行,提高了线程切换的效率。
S5、dispatch 模块向核派发新的线程指针:结束的硬件线程需要新的线程指针,线程控制器会发送线程请求给dispatch模块单元,dispatch模块收到请求就发送新的线程指针给线程控制器,该硬件线程就可以在下一次轮循中被执行。
具体的,GPU通过接口收到CPU核发过来的运算任务;GPU中的命令处理器解析任务,根据任务的类型和运算量分发给对应的一些运算群cluster;每个运算群包含一个主控核,8个运算核就是这个多线程核,运算群内的主控核通过dispatch模块将运算任务细化到每个核;多线程运算核的组成和工作过程如下:
PCmux根据线程ID选择对应的PC输出取指地址,指令缓存根据取指地址输出指令;译码器获得指令后进行译码,译码器会根据指令输出操作码给ALU,同时输出输出操作数地址给GPRmux,GPRmux先根据线程ID选择对应的GPR,再根据操作数地址从gpr中取得操作数,送给运算单元ALU;ALU输出运算结果,如果指令是load/store类,该结果会送给LSU,让后访问数据缓存,如果是运算类,该结果会写回GPR;当指令缓存执行取值时,指令可能不在指令缓存中,这时就会发生指令cache miss;当LSU访问数据缓存时,也会发生数据 cachemiss;当译码器执行了一条线程结束指令时会立即发出线程结束标志;指令 cache miss和数据cache miss,线程结束标志都会触发线程控制器切换线程,输出下一个线程ID;同时,线程控制器还会输出线程切换标志给流水线控制器,流水线控制器收到线程切换标志,一方面会执行刷流水线操作,另一方面会发出跳转请求给PC,使PC跳转到线程控制器输出的线程指针。
进一步的,dispatch模块流程具体包括为,复位后,通过dispatch模块对空闲的线程进行装载填充,后判断线程指针是否填充满,若不满则继续装载线程,同时已装载线程进行指令运行,直到线程执行结束,后空闲线程向dispatch反馈核线程填充请求,后继续向空闲线程内进行派发执行指令,dispatch模块线程派发主要是准备好新的线程指令,同时与线程结束指令和线程控制器相互配合,dispatch模块派发的粒度可具体到每个SM核。
为了提高SM的灵活性,也为了提高运算效率,给每个SM配备独立的取指译码单元,这样就不用warp中的所有SM都保持相同的步调,但可以一起做相同的运算,遇到分支,也可以各自执行不同分支,因此运算密度得到提高。
通过线程结束指令和线程派发模块的相互配合,达到了高效率切换线程的效果。
具体的,dispatch模块对核派发线程指针时,可以派发对应该线程所需的其它资源信息,包括但不限于线程所需的数据地址信息,线程ID。
具体的,所述线程指针采用FIFO模式,FIFO为先被写入的数据会按顺序先被读出。
具体的,所述线程控制器内设置有线程控制模块,所述按序轮循制线程控制模块流程为:复位后请求加载线程,首先加载到线程0,线程0加载完即可运行,当线程0内的指令指针有效,且没有任何长延时事件,则线程0执行结束并发送指令,进行下一线程,当线程0内的指令指针无效,或者线程在执行的过程中遇到cachemiss,浮点运算长延迟事件,则线程0会变成无效,此时线程控制器将切换到下一个线程1进行加载判断,直到切换到下一个有效线程。
线程控制模块使得GPU一直有备用线程,在发生线程结束或者长延时事件时迅速切换到下一线程。
具体的,所述线程控制模块包括有按序轮循制和按优先级轮循制,所述按序轮循制的线程用线程0、线程1、线程2、线程3来表示,所述优先级轮循制的线程用线程A、线程B、线程C、线程D来表示。
具体的,所述线程控制模块其线程来自不同的渲染任务的不同线。
具体的,所述线程控制模块其线程来自同一个渲染任务的不同线程。
多线程控制模块线程可配置优先级,和通过dispatch模块派发其他资源信息,这些信息可通过线程控制器载入对应线程的GPR,CSR或者其它用途,更利于同样的程序执行不同的操作。
本发明为每个SM配备独立的取指译码单元,再配合多线程,为在一个warp,一个SM上运行多任务也提供了极大的便利性。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种GPU 多核超线程技术的方法, GPU多核超线程技术的方法基于GPU多核超线程技术的系统,所述系统包括:GPU内部的命令处理器、图形处理集群;其特征在于:命令处理器将线程分发给所述图形处理集群,所述图形处理集群内部包括有集群处理器,所述集群处理器将线程通过dispatch 模块派发到每个SM 核的每个线程;
对GPU 内部的四级流水线单发射的CPU 核的进行了改进,该CPU 核为GPU 内部的基本运算核,所述基本运算核为SM 核;其中CPU 核内部设置有指令存储器、流水线控制器、译码器、算术逻辑运算部件;CPU 核外设置有dispatch 模块;当线程控制器请求新线程时,dispatch 模块将会发送新的线程指针;
CPU 核内包括还设置有线程控制器,包含四个线程的切换控制,线程控制器中包含各个线程指针及线程信息;所述线程控制器设置有一个GPRmux,一个PCmux;GPRmux 内部包含4组GPR,PCmux 包含4 组PC;
其中每个线程一组GPR、PC,根据线程控制器的输出线程ID 进行选择;每个SM 核配备独立的取指译码单元;
所述GPU 多核超线程技术的方法具体步骤如下:
S1、线程指针载入线程派发dispatch 模块:主程序编译为多线程,保留各个线程的指令指针,指令指针将会存放在dispatch 模块中;
S2、dispatch 模块派发线程指针给线程控制器:在复位重启阶段,核内的四个线程都需要线程指针,线程控制器向dispatch 模块请求线程,dispatch 模块将会把这四个线程填满;
S3、CPU 核执行线程程序:CPU 核执行线程的指令,如果发生了线程切换事件,将会切换到下一个现有指针有效的硬件线程;
S4、CPU 核执行到线程结束指令,切换到下一个有效硬件线程执行:一个线程执行结束,会有一个线程结束指令,线程结束指令会产生线程结束信号送给线程控制器,线程控制器将会切换另一个硬件线程执行;
S5、dispatch 模块向CPU 核派发新的线程指针:结束的硬件线程需要新的线程指针,线程控制器会发送线程请求给dispatch 模块,dispatch 模块收到请求就发送新的线程指针给线程控制器,硬件线程在下一次轮循中被执行;
所述GPU 多核超线程技术的方法中当GPU 通过接口收到CPU 核发过来的运算任务时;GPU 中的命令处理器解析任务,根据任务的类型和运算量分发给对应的运算群cluster;每个运算群包含一个主控核,多线程运算核由8个运算核构成,运算群内的主控核通过dispatch 模块将运算任务细化到每个核;多线程运算核的组成和工作过程如下:
PCmux 根据线程ID 选择对应的PC 输出取指地址,指令缓存根据取指地址输出指令;译码器获得指令后进行译码,译码器会根据指令输出操作码给 ALU,同时输出操作数地址给GPRmux,GPRmux 先根据线程ID 选择对应的gpr,再根据操作数地址从gpr 中取得操作数,送给运算单元ALU;ALU 输出运算结果,如果指令是load/store 类,运算结果会送给LSU,之后访问数据缓存,如果是运算类,运算结果会写回gpr;当指令缓存执行取值时,指令不在指令缓存中,这时就会发生指令cache miss;当LSU 访问数据缓存时,也会发生数据cache miss;当译码器执行了一条线程结束指令时会立即发出线程结束标志;指令cachemiss、数据cache miss 和线程结束标志都会触发线程控制器切换线程,输出下一个线程ID;同时,线程控制器还会输出线程切换标志给流水线控制器,流水线控制器收到线程切换标志,一方面会执行刷流水线操作,另一方面会发出跳转请求给PC,使PC 跳转到线程控制器输出的线程指针。
2.根据权利要求1 所述的一种GPU 多核超线程技术的方法,其特征在于:dispatch 模块流程具体包括为,复位后,通过dispatch 模块对空闲的线程进行装载填充,后判断线程指针是否填充满,若不满则继续装载线程,同时已装载线程进行指令运行,直到线程执行结束,后空闲线程向dispatch 模块反馈核线程填充请求,后继续向空闲线程内进行派发执行指令,dispatch 模块线程派发主要是准备好新的线程指令,同时与线程结束指令和线程控制器相互配合,dispatch 模块派发的粒度可具体到每个SM 核。
3.根据权利要求2 所述的一种GPU 多核超线程技术的方法,其特征在于:dispatch 模块对核派发线程指针时,派发对应线程所需的资源信息,包括线程所需的数据地址信息、软件线程ID;资源信息直接派发到GPR MUX 中对应的线程gpr。
4.根据权利要求2 所述的一种GPU 多核超线程技术的方法,其特征在于:所述线程指针采用FIFO 模式,FIFO 为先被写入的数据会按顺序先被读出。
5.根据权利要求1 所述的一种GPU 多核超线程技术的方法,其特征在于:所述线程控制器内设置有线程控制模块,所述线程控制模块流程为:复位后请求加载线程,首先加载到线程0,线程0 加载完即可运行,当线程0 内的指令指针有效,且没有任何长延时事件,则线程0执行结束并发送指令,进行下一线程,当线程0 内的指令指针无效,或者线程在执行的过程中遇到线程切换事件:包括cache miss和浮点运算长延迟事件,则线程0 会变成无效,此时线程控制器将切换到下一个线程1 进行加载判断,直到切换到下一个有效线程。
6.根据权利要求5 所述的一种GPU 多核超线程技术的方法,其特征在于:所述线程控制模块包括有按序轮循制和按优先级轮循制,所述按序轮循制的线程用线程0、线程1、线程2、线程3 来表示,所述优先级轮循制的线程用线程A、线程B、线程C、线程D 来表示。
7.根据权利要求5 所述的一种GPU 多核超线程技术的方法,其特征在于:所述线程控制模块其线程来自不同的渲染任务的不同线程。
8.根据权利要求5 所述的一种GPU 多核超线程技术的方法,其特征在于:所述线程控制模块其线程来自同一个渲染任务的不同线程。
CN202211636083.4A 2022-12-20 2022-12-20 一种gpu多核超线程技术的系统及方法 Active CN115617499B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211636083.4A CN115617499B (zh) 2022-12-20 2022-12-20 一种gpu多核超线程技术的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211636083.4A CN115617499B (zh) 2022-12-20 2022-12-20 一种gpu多核超线程技术的系统及方法

Publications (2)

Publication Number Publication Date
CN115617499A CN115617499A (zh) 2023-01-17
CN115617499B true CN115617499B (zh) 2023-03-31

Family

ID=84880927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211636083.4A Active CN115617499B (zh) 2022-12-20 2022-12-20 一种gpu多核超线程技术的系统及方法

Country Status (1)

Country Link
CN (1) CN115617499B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116467227B (zh) * 2023-06-19 2023-08-25 深流微智能科技(深圳)有限公司 Tmu系统和tmu系统的运算优化方法
CN117311258B (zh) * 2023-12-01 2024-03-12 合肥中科鸿创信息科技有限公司 一种基于udp与plc的多设备同步控制方法及系统
CN117389712B (zh) * 2023-12-12 2024-03-12 沐曦集成电路(南京)有限公司 一种gpu多线程调度管理系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101201732A (zh) * 2007-10-09 2008-06-18 浙江大学 32位的多模式微处理器
CN109445565A (zh) * 2018-11-08 2019-03-08 北京航空航天大学 一种基于流多处理器内核独占和预留的gpu服务质量保障方法
CN109840877A (zh) * 2017-11-24 2019-06-04 华为技术有限公司 一种图形处理器及其资源调度方法、装置
CN111752615A (zh) * 2019-03-29 2020-10-09 英特尔公司 用于确保多线程处理器核的服务质量的装置、方法和系统
KR102224446B1 (ko) * 2019-10-14 2021-03-09 이화여자대학교 산학협력단 Gpgpu 스레드 블록 스케줄링 확장 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101201732A (zh) * 2007-10-09 2008-06-18 浙江大学 32位的多模式微处理器
CN109840877A (zh) * 2017-11-24 2019-06-04 华为技术有限公司 一种图形处理器及其资源调度方法、装置
CN109445565A (zh) * 2018-11-08 2019-03-08 北京航空航天大学 一种基于流多处理器内核独占和预留的gpu服务质量保障方法
CN111752615A (zh) * 2019-03-29 2020-10-09 英特尔公司 用于确保多线程处理器核的服务质量的装置、方法和系统
KR102224446B1 (ko) * 2019-10-14 2021-03-09 이화여자대학교 산학협력단 Gpgpu 스레드 블록 스케줄링 확장 방법 및 장치

Also Published As

Publication number Publication date
CN115617499A (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
CN115617499B (zh) 一种gpu多核超线程技术的系统及方法
JP3569014B2 (ja) マルチコンテキストをサポートするプロセッサおよび処理方法
US7627770B2 (en) Apparatus and method for automatic low power mode invocation in a multi-threaded processor
EP1137984B1 (en) A multiple-thread processor for threaded software applications
US6170051B1 (en) Apparatus and method for program level parallelism in a VLIW processor
US7600135B2 (en) Apparatus and method for software specified power management performance using low power virtual threads
US7752627B2 (en) Leaky-bucket thread scheduler in a multithreading microprocessor
US8675006B2 (en) Apparatus and method for communicating between a central processing unit and a graphics processing unit
US7155600B2 (en) Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
US20080046689A1 (en) Method and apparatus for cooperative multithreading
US20040172631A1 (en) Concurrent-multitasking processor
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
US20150074353A1 (en) System and Method for an Asynchronous Processor with Multiple Threading
CN110045988B (zh) 具有共享前端单元的处理核
JP5861354B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2004152305A (ja) ハイパープロセッサ
US6374351B2 (en) Software branch prediction filtering for a microprocessor
US20030046517A1 (en) Apparatus to facilitate multithreading in a computer processor pipeline
CN112789593B (zh) 一种基于多线程的指令处理方法及装置
US10496409B2 (en) Method and system for managing control of instruction and process execution in a programmable computing system
Wittenburg et al. A multithreaded architecture approach to parallel DSPs for high performance image processing applications
WO2002046887A2 (en) Concurrent-multitasking processor
CN118132233A (zh) 线程调度方法及装置、处理器和计算机可读存储介质

Legal Events

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