CN108595258B - 一种gpgpu寄存器文件动态扩展方法 - Google Patents
一种gpgpu寄存器文件动态扩展方法 Download PDFInfo
- Publication number
- CN108595258B CN108595258B CN201810408687.0A CN201810408687A CN108595258B CN 108595258 B CN108595258 B CN 108595258B CN 201810408687 A CN201810408687 A CN 201810408687A CN 108595258 B CN108595258 B CN 108595258B
- Authority
- CN
- China
- Prior art keywords
- cta
- register
- gpgpu
- allocated
- shmem
- 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.)
- Expired - Fee Related
Links
Images
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/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
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种GPGPU寄存器文件动态扩展方法,包括:1)在编译器中对GPGPU程序指令块进行划分,并分析每个指令块的活动寄存器;2)运行时,依据资源状态对每个线程块的资源分配方式进行决策;3)当寄存器文件限制了GPGPU的线程级并行性时,将部分寄存器分配在共享内存中,从而在逻辑上增大了寄存器文件的容量;4)在每个指令块被调度执行前,通过数据预取将指令块使用的分配在共享内存中的寄存器数据读取到一个高带宽的小容量操作数缓存中。本发明能够有效提高GPGPU片上资源的使用效率,最大限度提升GPGPU的线程级并发性,充分挖掘GPGPU的性能潜力。
Description
技术领域
本发明涉及GPGPU中片上资源优化管理和线程块调度等领域,特别是涉及一种GPGPU寄存器文件动态扩展方法。
背景技术
作为高性能计算中的重要组成部分,通用计算图形处理器(General PurposeGPU,以下简称GPGPU)主要通过其大规模的线程级并行(Thread Level Parallelism,以下简称TLP)来体现其高性能特性。在GPGPU中,指令延迟和内存访问所造成的低效主要通过大规模线程间的快速切换来进行隐藏。在执行一些线程束中高延迟的指令时,GPGPU中的线程束调度器会调度其余的线程束进行执行而避免流水线在高延迟指令上的等待。为了支持GPGPU大规模并发线程的快速切换,GPGPU的每个流多处理器(Streaming Multiprocessor,以下简称SM)中都会配备一个大容量的寄存器文件(Register File,以下简称RF)来存放所有并发线程的上下文信息。因此,为了提高GPGPU的TLP,需要对RF进行高效管理来提高其利用率,使尽可能多的线程能够分配到所需资源并运行。
为了充分利用RF、提高GPGPU的TLP,学术界和产业界开展了大量的工作。已有的具有代表性的研究成果主要分为以下两个方面:
(1)线程束级资源管理粒度
GPGPU默认采用线程块级资源管理粒度,当剩余的资源不足以满足一个线程块的资源需求时,那么将不会再有线程块被调度到SM上运行,剩余的资源也无法被充分利用,这不仅会造成资源碎片,而且还会限制GPGPU的TLP。线程束级的资源管理粒度能够在一定程度上解决资源碎片问题并提高GPGPU的TLP。当剩余的资源不足以满足一个线程块的资源需求,但是能够满足线程块中部分线程束的资源需求时,那么就将能够分配到资源的部分线程束调度到SM上运行。
(2)基于时分复用的RF重用机制
当寄存器被分配给GPGPU线程后,GPGPU线程对每一个寄存器的使用并不是从开始运行一直到运行结束,大部分寄存器的生命周期仅仅局限于GPGPU线程运行过程中的一个或多个时间段。通过分析GPGPU寄存器的生命周期,使不同的线程束能够在不同时间段使用同一个寄存器,而不是使每一个寄存器在其所属的线程运行过程中只能被一个线程使用。通过时分复用寄存器,能够增加每个时刻同时运行的线程数量,从而提高GPGPU的TLP。
综上可以看出,现有方法对RF的优化管理方法都是将RF看成一个独立的资源并仅仅对RF进行独立的优化。本发明从全局的角度提出一种GPGPU寄存器文件动态扩展方法,当由于RF的容量限制不足以调度更多的线程块到SM上运行时,将RF的功能动态扩展到SM上的共享内存(Shared Memory,以下简称SHMEM),使线程块的部分寄存器能够分配到SHMEM,这样不仅能够充分利用RF,还能极大提高SHMEM的利用率。
发明内容
本发明技术解决问题:克服现有技术的不足和缺陷,提供一种GPGPU寄存器文件动态扩展方法,使RF的容量得到动态扩展,在充分利用RF的同时也极大提高SHMEM的利用率。
本发明的技术解决方案,一种GPGPU寄存器文件动态扩展方法,包括如下步骤:
(1)当GPGPU编译器编译GPGPU程序代码时,依据寄存器的权重由大到小对寄存器的声明顺序进行排序,然后对GPGPU程序的指令块进行划分,并对每个指令块的活动寄存器进行分析;
(2)将指令块活动寄存器的分析结果通过指令的形式插在每个指令块的前面,并生成GPGPU可执行程序;
(3)在运行时,将GPGPU可执行程序发送到GPGPU执行,GPGPU依据程序指定的参数创建一定数量的线程块(Thread Block,以下简称TB或CTA);
(4)CTA调度器调度各个CTA到流多处理器(Streaming Multiprocessor,以下简称SM)上执行,此时,SM上的资源分配器会依据当前SM的资源状态以及每个CTA的资源需求情况来计算每个SM上可以同时容纳的CTA数量上限CTAUpper以及下限CTALower,然后对每个CTA的资源分配方式进行决策;
(5)如果一个CTA中有寄存器被分配在片上共享内存(Shared Memory,以下简称SHMEM)中,则依据一种双路分配策略在SHMEM上为CTA分配寄存器空间,并将该CTA的资源分配信息保存在寄存器分配表中;
(6)每个分配完所需资源的CTA,其中的线程束(Warp)都被放到线程束池中对应的队列中,线程束池中包含3个队列:pending、schedulable以及prefetching;初始时,当一个CTA中有寄存器被分配在SHMEM中,就将该CTA中所有线程束放在prefetching队列中,其余CTA中的线程束放在schedulable队列中;
(7)在每个时钟周期,寄存器预取器都会检查操作数缓存中是否有足够的空间来保存prefetching队列的首个线程束的下一个将要执行的指令块分配在SHMEM中的寄存器数据;如果操作数缓存具有足够的空间,就将线程束下一个指令块的分配在SHMEM中的寄存器数据预取到操作数缓存中,然后将线程束从prefetching队列移动到schedulable队列;
(8)在每个时钟周期,线程束调度器都会从schedulable队列中调度线程束的指令去执行;
(9)当一条指令被调度时,操作数收集器(Operand Collector)就会为其分配一个收集单元(Collector Unit)来读取操作数;
(10)在读取操作数过程中,收集单元将线程束物理编号WarpID和需要的寄存器索引号Reg发送到寄存器文件(Register File,以下简称RF)中的Bank仲裁器,Bank仲裁器判断所需要的寄存器分配在RF还是SHMEM中;
(11)如果判断寄存器分配在RF中,则直接从RF中读取寄存器数据;否则,从操作数缓存中读取对应的寄存器数据;
(12)当一条指令对应的所有操作数都读取到收集单元中,就将这个发送到SIMD单元执行;
(13)当一个线程束的一个指令块执行完成后,就将该线程束从schedulable队列移动到prefetching队列;
(14)重复步骤(4)至(13)直至GPGPU程序执行完成。
附图说明
图1是GPGPU现有的和本发明提出的资源分配对比原理图;
图2是本发明提出的GPGPU寄存器文件动态扩展的应用实例图;
图3是寄存器分配“垂直”策略示意图;
图4是共享内存的双路分配策略示意图;
图5是寄存器文件中Bank仲裁器的判断逻辑图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的基本思路在于,如图1所示(假设每个寄存器大小为4字节),将GPGPU的RF功能扩展到SHMEM,使部分寄存器能够保存在SHMEM中,在逻辑上提高RF的容量,使更多的线程能够在GPGPU上运行,即提高了RF的利用率,也提高了SHMEM的利用率;此外,为了保证分配在SHMEM上的寄存器访问效率,采用一种预取机制,将需要的寄存器数据从SHMEM读取到一个高带宽小容量的操作数缓存中。
本发明的应用实例如图2所示,首先在编译GPGPU程序时,对GPGPU程序指令进行分块,并分析每个指令块的活动寄存器;在GPGPU程序执行过程中,当GPGPU的RF由于容量有限而限制了GPGPU的TLP时,通过分析GPGPU资源状态以及GPGPU程序的资源需求情况,将部分线程块的部分寄存器分配到未被充分利用的SHMEM中,从而在逻辑上增大RF的容量,使更多的线程块由于能够分配到所需的资源而被调度到SM上执行。当寄存器数据被保存在SHMEM中时,为了在读取寄存器的阶段,减小SHMEM与RF在带宽上的差异,在指令块执行之前,将线程块需要的分配在SHMEM中的寄存器预先读取到一个高带宽的小容量操作数缓存中,在指令块执行过程中,所有的寄存器都从RF或操作数缓存中读取。通过以上措施,充分利用GPGPU资源,提高了TLP的同时又避免了流水线阻塞。
如图2所示,本发明GPGPU寄存器文件动态扩展方法包括以下步骤:
(1)当GPGPU编译器编译GPGPU程序代码时,执行以下几步操作:
(1-1)依据寄存器的权重由大到小对寄存器的声明顺序进行排序,其中每个寄存器的权重是编译器通过计算每个寄存器的引用次数来估算寄存器的权重大小;
(1-2)对GPGPU程序的指令块进行划分,指令块的划分满足以下几个原则:
(1-2-1)当遇到内存栅栏或线程同步指令时,结束一个指令块;
(1-2-2)当遇到高延迟指令时,结束一个指令块;
(1-2-3)每一个指令块包括至少MinReg个活动寄存器,MinReg的值通过编译器设置;
(1-2-4)每一个指令块最多包括C/τ个活动寄存器,其中C为操作数缓存容量,τ为每个CTA分配在SHMEM中的寄存器的比例上限;
(1-2-5)每一个指令块不能跨越一个基本指令块;
(1-3)对划分的每个指令块的活动寄存器进行统计分析;
(2)将指令块活动寄存器的分析结果通过指令的形式插在每个指令块的前面,并生成GPGPU可执行程序;
(3)在运行时,将GPGPU可执行程序发送到GPGPU上执行,GPGPU依据程序指定的参数创建一定数量的线程块(Thread Block,以下简称TB或CTA);
(4)CTA调度器调度各个CTA到流多处理器(Streaming Multiprocessor,以下简称SM)上执行,此时,SM上的资源分配器会依据当前SM的资源状态以及每个CTA的资源需求情况来计算每个SM上可以同时容纳的CTA数量上限为CTA数量下限为其中R和S分别为每个SM上的总RF容量和总SHMEM容量,RCTA和SCTA分别为每个CTA需要的RF容量和SHMEM容量;然后对每个CTA的资源分配方式进行决策,具体决策步骤包括:
(4-1)首先计算出每个SM中所有寄存器都可以分配在RF中的CTA数量CTARF以及寄存器既有分配在RF中又有分配在SHMEM中的CTA数量CTAMix,CTARF与CTAMix的和就是每个SM中可以同时容纳的最大CTA数量,其中,CTARF和CTAMix的具体计算方法如下:
(4-2)根据步骤(4-1)确定的CTARF和CTAMix,如果当前SM上的CTA数量小于CTARF,则将下一个CTA的所有寄存器分配在RF中,并称该CTA属于类型TypeRF,否则将其部分寄存器分配在SHMEM中,并称该CTA属于类型TypeMix;
(4-3)在确定哪些CTA中的部分寄存器需要分配在SHMEM中后,将依据一种如图3所示的“垂直”的寄存器分配策略来使TypeMix类型CTA中具有相同索引号的寄存器都分配在RF中或SHMEM中,其中基于“垂直”策略的寄存器分配具体步骤包括:
(4-3-2)在计算出StartReg后,将TypeMix类型CTA的所有寄存器索引号小于StartReg的寄存器都分配在RF中,将所有寄存器索引号大于等于StartReg的寄存器分配在SHMEM中;
(5)如果一个CTA中有寄存器被分配在片上共享内存(Shared Memory,以下简称SHMEM)中,则依据一种如图4所示的双路分配策略在SHMEM上为CTA分配寄存器空间,并将该CTA的资源分配信息保存在寄存器分配表中;其中,双路分配策略具体为分别从上到下以及从下到上两个方向来为CTA分配共享内存空间以及寄存器空间,其中对共享内存空间的管理方法采用SHMEM的默认方法,在对寄存器空间的管理中,为每个TypeMix类型CTA的寄存器空间提供一个SBR寄存器来存储SHMEM为TypeMix类型CTA分配的寄存器空间的基地址;SBR寄存器值的具体计算方法为:SBR=S-(CTAID-StartCTA)×(MaxReg-StartReg+1)×WarpsCTA×128;其中,StartCTA的值等于CTARF,表示TypeMix类型的CTA的起始物理编号,MaxReg表示CTA中寄存器的最大索引号,WarpsCTA表示每个CTA中的线程束数量,128表示线程束中32个线程的同一索引号的寄存器需要128字节的空间进行存储;寄存器分配表包含2个字段:CTA在SM上的物理编号CTAID和在SHMEM上分配的寄存器空间的基地址SBR;
(6)每个分配完所需资源的CTA,其中的线程束(Warp)都被放到线程束池中对应的队列中,线程束池中包含3个队列:pending、schedulable以及prefetching,其中pending队列中存放的是被高延迟指令阻塞的线程束,schedulable队列中存放的是可以被线程束调度器调度的线程束,prefetching队列中存放的是那些下一个要执行的指令块中要使用分配在了SHMEM中的寄存器的线程束;初始时,当一个CTA中有寄存器被分配在SHMEM中,就将该CTA中所有线程束放在prefetching队列中,其余CTA中的线程束放在schedulable队列中;
(7)在每个时钟周期,寄存器预取器都会检查操作数缓存中是否有足够的空间来保存prefetching队列的首个线程束的下一个将要执行的指令块分配在SHMEM中的寄存器数据;操作数缓存是一种类似RF的多Bank的小容量的片上存储,用来临时存放分配在SHMEM上的寄存器数据,从而加快从SHMEM访问寄存器数据速度;如果操作数缓存具有足够的空间,就将线程束下一个指令块的分配在SHMEM中的寄存器数据预取到操作数缓存中,然后将线程束从prefetching队列移动到schedulable队列,其中寄存器数据预取包括如下几个步骤:
(7-1)依据寄存器分配表中的信息计算要预取的寄存器在SHMEM上的基地址Address=SBR+(MaxReg-StartReg+1)×(WarpID mod W arpsCTA)×128+(Reg-StartReg)×128,其中Reg为要预取的寄存器索引号,WarpID为当前要预取的寄存器属于的线程束在SM上的物理编号;
(7-2)根据以上基地址Address,连续从SHMEM中地址Address处连续读取128字节的数据,然后保存到操作数缓存中;
(8)在每个时钟周期,线程束调度器都会从schedulable队列中调度线程束的指令去执行;
(9)当一条指令被调度时,操作数收集器(Operand Collector)就会为其分配一个收集单元(Collector Unit)来读取操作数;
(10)在读取操作数过程中,收集单元将线程束物理编号WarpID和需要的寄存器索引号Reg发送到寄存器文件(Register File,以下简称RF)中的Bank仲裁器,如图5所示,Bank仲裁器判断所需要的寄存器分配在RF还是SHMEM中,具体方法如下:
(10-2)计算出CTAID后,如果StartCTA大于CTAID,表示该寄存器分配在RF中,并将该寄存器数据访问请求发送到RF,否则执行下一步;
(10-3)如果StartCTA不大于CTAID,并且Reg不小于StartReg,表示该寄存器分配在RF中,并将该寄存器数据访问请求发送到RF,否则,该寄存器访问请求被发送到操作数缓存;
(11)如果判断寄存器分配在RF中,则直接从RF中读取寄存器数据;否则,从操作数缓存中读取对应的寄存器数据;
(12)当一条指令对应的所有操作数都读取到收集单元中,就将这个发送到SIMD单元执行;
(13)当一个线程束的一个指令块执行完成后,就将该线程束从schedulable队列移动到prefetching队列;
(14)重复步骤(4)至(13)直至GPGPU程序执行完成。
本发明未详细阐述部分属于本领域公知技术。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种GPGPU寄存器文件动态扩展方法,其特征在于,包括以下步骤:
(1)当GPGPU编译器编译GPGPU程序代码时,依据寄存器的权重由大到小对寄存器的声明顺序进行排序,然后对GPGPU程序的指令块进行划分,并对每个指令块的活动寄存器进行分析;
(2)将指令块活动寄存器的分析结果通过指令的形式插在每个指令块的前面,并生成GPGPU可执行程序;
(3)在运行时,将GPGPU可执行程序发送到GPGPU上执行,GPGPU依据程序指定的参数创建一定数量的线程块Thread Block,以下简称TB或CTA;
(4)CTA调度器调度各个CTA到流多处理器Streaming Multiprocessor,以下简称SM,上执行,此时,SM上的资源分配器会依据SM的总寄存器文件量R、SM的总共享内存量S、每个CTA需要的寄存器文件量RCTA、每个CTA需要的共享内存量SCTA以及每个CTA分配在共享内存中的寄存器比例上限τ来计算每个SM上可以同时容纳的CTA数量上限CTAUpper以及下限CTALower,然后对每个CTA的资源分配方式进行决策;
(5)如果一个CTA中有寄存器被分配在片上共享内存Shared Memory,以下简称SHMEM,则依据一种双路分配策略在SHMEM上为CTA分配寄存器空间,并将该CTA的资源分配信息保存在寄存器分配表中;
(6)每个分配完所需资源的CTA,其中的线程束Warp都被放到线程束池中对应的队列中,线程束池中包含3个队列:pending、schedulable以及prefetching;初始时,当一个CTA中有寄存器被分配在SHMEM中,就将该CTA中所有线程束放在prefetching队列中,其余CTA中的线程束放在schedulable队列中;
(7)在每个时钟周期,寄存器预取器都会检查操作数缓存中是否有足够的空间来保存prefetching队列的首个线程束的下一个将要执行的指令块分配在SHMEM中的寄存器数据;如果操作数缓存具有足够的空间,就将线程束下一个指令块的分配在SHMEM中的寄存器数据预取到操作数缓存中,然后将线程束从prefetching队列移动到schedulable队列;
(8)在每个时钟周期,线程束调度器都会从schedulable队列中调度线程束的指令去执行;
(9)当一条指令被调度时,操作数收集器Operand Collector就会为其分配一个收集单元Collector Unit来读取操作数;
(10)在读取操作数过程中,收集单元将线程束物理编号WarpID和需要的寄存器索引号Reg发送到寄存器文件Register File的Bank仲裁器,以下简称RF,Bank仲裁器判断所需要的寄存器分配在RF还是SHMEM中;
(11)如果判断寄存器分配在RF中,则直接从RF中读取寄存器数据;否则,从操作数缓存中读取对应的寄存器数据;
(12)当一条指令对应的所有操作数都读取到收集单元中,就将这个发送到SIMD单元执行;
(13)当一个线程束的一个指令块执行完成后,就将该线程束从schedulable队列移动到prefetching队列;
(14)重复步骤(4)至(13)直至GPGPU程序执行完成。
2.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(1)中,依据寄存器的权重由大到小对寄存器的声明顺序进行排序,其中每个寄存器的权重是编译器通过计算每个寄存器的引用次数来估算寄存器的权重大小。
3.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(1)中,对GPGPU程序的指令块进行划分,具体满足以下原则:
(1)当遇到内存栅栏或线程同步指令时,结束一个指令块;
(2)当遇到高延迟指令时,结束一个指令块;
(3)每一个指令块包括至少MinReg个活动寄存器,MinReg的值通过编译器设置;
(4)每一个指令块最多包括C/τ个活动寄存器,其中C为操作数缓存容量;
(5)每一个指令块不能跨越一个基本指令块。
5.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(4)中,对每个CTA的资源分配方式进行决策,具体包括如下步骤:
(1)首先计算出每个SM中所有寄存器都可以分配在RF中的CTA数量CTARF以及寄存器既有分配在RF中又有分配在SHMEM中的CTA数量CTAMix,CTARF与CTAMix的和就是每个SM中可以同时容纳的最大CTA数量,其中,CTARF和CTAMix的具体计算方法如下:
(2)根据步骤(1)确定的CTARF和CTAMix,如果当前SM上的CTA数量小于CTARF,则将下一个CTA的所有寄存器分配在RF中,并称该CTA属于类型TypeRF,否则将其部分寄存器分配在SHMEM中,并称该CTA属于类型TypeMix;
(3)在确定哪些CTA中的部分寄存器需要分配在SHMEM中后,将依据一种“垂直”的寄存器分配策略来使TypeMix类型CTA中具有相同索引号的寄存器都分配在RF中或SHMEM中。
6.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(5)中,依据一种双路分配策略在SHMEM上为CTA分配寄存器空间,具体为分别从上到下以及从下到上两个方向来为CTA分配共享内存空间以及寄存器空间,其中对共享内存空间的管理方法采用SHMEM的默认方法,在对寄存器空间的管理中,为每个TypeMix类型CTA的寄存器空间提供一个SBR寄存器来保存SHMEM为TypeMix类型CTA分配的寄存器空间的基地址。
7.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(5)中,将CTA的资源分配信息保存在寄存器分配表中,其中寄存器分配表包含2个字段:CTA在SM上的物理编号和在SHMEM上分配的寄存器空间的基地址。
8.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(6)中,线程束池中包含3个队列:pending、schedulable以及prefetching,其中pending队列中存放的是被高延迟指令阻塞的线程束,schedulable队列中存放的是可以被线程束调度器调度的线程束,prefetching队列中存放的是那些下一个要执行的指令块中要使用分配在了SHMEM中的寄存器的线程束。
9.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(7)中,操作数缓存是一种类似RF的多Bank的小容量的片上存储,用来临时存放分配在SHMEM上的寄存器数据,从而加快从SHMEM访问寄存器数据速度。
11.根据权利要求6所述的GPGPU寄存器文件动态扩展方法,为每个TypeMix类型CTA的寄存器空间提供一个SBR寄存器来存储SHMEM为TypeMix类型CTA分配的寄存器空间的基地址,SBR寄存器值的具体计算方法为:SBR=S-(CTAID-StartCTA)×(MaxReg-StartReg+1)×WarpsCTA×128;其中,CTAID表示当前CTA在SM上的物理编号,StartCTA的值等于CTARF,表示TypeMix类型的CTA的起始物理编号,StartReg表示TypeMix类型CTA中要分配在SHMEM中的寄存器起始索引号,MaxReg表示CTA中寄存器的最大索引号,WarpsCTA表示每个CTA中的线程束数量,128表示线程束中32个线程的同一索引号的寄存器需要128字节的空间进行存储。
12.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(7)中,将线程束下一个指令块的分配在SHMEM中的寄存器数据预取到操作数缓存,具体包括如下步骤:
(1)依据寄存器分配表中的信息计算要预取的寄存器在SHMEM上的基地址Address=SBR+(MaxReg-StartReg+1)×(PrefWarpID%WarpsCTA)×128+(PrefReg-StartReg)×128,其中,SBR表示为CTA在SHMEM上分配的寄存器空间的基地址,MaxReg表示CTA中寄存器的最大索引号,StartReg表示CTA分配在SHMEM中的寄存器起始索引号,PrefReg为要预取的寄存器索引号,PrefWarpID为当前要预取的寄存器所属的线程束在SM上的物理编号,WarpsCTA为每个CTA中的线程束数量;
(2)根据以上基地址Address,连续从SHMEM中地址Address处连续读取128字节的数据,然后保存到操作数缓存中。
13.根据权利要求1所述的GPGPU寄存器文件动态扩展方法,其特征在于:所述步骤(10)中,Bank仲裁器判断所需要的寄存器分配在RF还是SHMEM中,具体方法如下:
(2)计算出CTAID后,如果StartCTA大于CTAID,表示该寄存器分配在RF中,并将该寄存器数据访问请求发送到RF,否则执行下一步;
(3)如果StartCTA不大于CTAID,并且寄存器索引号Reg不小于StartReg,表示该寄存器分配在RF中,并将该寄存器数据访问请求发送到RF,否则,该寄存器访问请求被发送到操作数缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810408687.0A CN108595258B (zh) | 2018-05-02 | 2018-05-02 | 一种gpgpu寄存器文件动态扩展方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810408687.0A CN108595258B (zh) | 2018-05-02 | 2018-05-02 | 一种gpgpu寄存器文件动态扩展方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595258A CN108595258A (zh) | 2018-09-28 |
CN108595258B true CN108595258B (zh) | 2021-07-27 |
Family
ID=63619505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810408687.0A Expired - Fee Related CN108595258B (zh) | 2018-05-02 | 2018-05-02 | 一种gpgpu寄存器文件动态扩展方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595258B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445565B (zh) * | 2018-11-08 | 2020-09-15 | 北京航空航天大学 | 一种基于流多处理器内核独占和预留的gpu服务质量保障方法 |
CN110688238B (zh) * | 2019-09-09 | 2021-05-07 | 无锡江南计算技术研究所 | 一种分离存储的队列实现方法及装置 |
CN110727517A (zh) * | 2019-10-12 | 2020-01-24 | 福建顶点软件股份有限公司 | 一种基于分区设计的内存分配方法和装置 |
CN110968180B (zh) * | 2019-11-14 | 2020-07-28 | 武汉纺织大学 | 一种通过减少数据传输实现gpu降耗的方法及系统 |
CN111708622B (zh) * | 2020-05-28 | 2022-06-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种指令组调度方法、架构、设备及存储介质 |
CN111881078B (zh) * | 2020-07-17 | 2022-04-19 | 上海芷锐电子科技有限公司 | 基于gpgpu芯片的多用户通用计算处理方法和系统 |
CN111858061B (zh) * | 2020-07-27 | 2024-03-29 | 福州大学 | 一种分布式可编程交换机资源扩容方法 |
CN114489791B (zh) * | 2021-01-27 | 2023-03-24 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法、计算设备 |
CN114489792B (zh) * | 2021-03-25 | 2022-10-11 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
CN116483536B (zh) * | 2023-04-24 | 2024-05-10 | 上海芷锐电子科技有限公司 | 数据调度方法、计算芯片及电子设备 |
CN117707625B (zh) * | 2024-02-05 | 2024-05-10 | 上海登临科技有限公司 | 支持指令多发的计算单元、方法及相应图形处理器 |
CN117971349B (zh) * | 2024-03-29 | 2024-07-05 | 北京壁仞科技开发有限公司 | 计算设备、为计算设备配置虚拟寄存器的方法、控制设备、计算机可读存储介质和计算机程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1601462A (zh) * | 2003-09-27 | 2005-03-30 | 英特尔公司 | 处理器的扩展寄存器空间装置和方法 |
CN104375805A (zh) * | 2014-11-17 | 2015-02-25 | 天津大学 | 采用多核处理器仿真可重构处理器并行计算过程的方法 |
US20150058572A1 (en) * | 2013-08-20 | 2015-02-26 | Apple Inc. | Intelligent caching for an operand cache |
CN104636207A (zh) * | 2015-02-06 | 2015-05-20 | 中国科学院深圳先进技术研究院 | 基于gpgpu体系结构的协同调度方法及系统 |
CN107291537A (zh) * | 2017-06-07 | 2017-10-24 | 江苏海平面数据科技有限公司 | 一种gpu片上存储空间使用的优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373492A (zh) * | 2014-08-19 | 2016-03-02 | 西安慧泽知识产权运营管理有限公司 | 一种面向任务流的基于寄存器文件的快速数据交换结构 |
-
2018
- 2018-05-02 CN CN201810408687.0A patent/CN108595258B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1601462A (zh) * | 2003-09-27 | 2005-03-30 | 英特尔公司 | 处理器的扩展寄存器空间装置和方法 |
US20150058572A1 (en) * | 2013-08-20 | 2015-02-26 | Apple Inc. | Intelligent caching for an operand cache |
CN104375805A (zh) * | 2014-11-17 | 2015-02-25 | 天津大学 | 采用多核处理器仿真可重构处理器并行计算过程的方法 |
CN104636207A (zh) * | 2015-02-06 | 2015-05-20 | 中国科学院深圳先进技术研究院 | 基于gpgpu体系结构的协同调度方法及系统 |
CN107291537A (zh) * | 2017-06-07 | 2017-10-24 | 江苏海平面数据科技有限公司 | 一种gpu片上存储空间使用的优化方法 |
Non-Patent Citations (2)
Title |
---|
An Energy-Efficient GPGPU Register File Architecture Using Racetrack Memory;Mengjie Mao,et al.;《IEEE TRANSACTIONS ON COMPUTERS》;20170930;第66卷(第9期);全文 * |
三维多核处理器存储关键技术研究;张宇昂;《中国博士学位论文全文数据库 信息科技辑(月刊)》;20151115(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108595258A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108595258B (zh) | 一种gpgpu寄存器文件动态扩展方法 | |
CN112306678B (zh) | 一种基于异构众核处理器的算法并行处理方法及系统 | |
Sethia et al. | Mascar: Speeding up GPU warps by reducing memory pitstops | |
JP5422614B2 (ja) | 低ポート数メモリーを用いたマルチポートメモリーのシミュレート | |
Khorasani et al. | Regmutex: Inter-warp gpu register time-sharing | |
CN102981807B (zh) | 一种基于cuda并行环境的gpu程序优化方法 | |
US9477465B2 (en) | Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus | |
JP2019519843A (ja) | 仮想ベクトルレジスタファイルを使用するシステム及び方法 | |
US10019283B2 (en) | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread | |
JP3727887B2 (ja) | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 | |
JP3810735B2 (ja) | スケーラブル・メモリの効率的なスレッドローカル・オブジェクト割り当て方法 | |
JP2007200288A (ja) | 実行スレッドをグループ化するためのシステム及び方法 | |
KR101940523B1 (ko) | 워프 스케줄링을 위한 장치 및 방법 | |
Tripathy et al. | Paver: Locality graph-based thread block scheduling for gpus | |
CN109445565B (zh) | 一种基于流多处理器内核独占和预留的gpu服务质量保障方法 | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
TWI489289B (zh) | 分散作業的預先排程重播 | |
Kim et al. | Automatically exploiting implicit pipeline parallelism from multiple dependent kernels for gpus | |
CN111045800A (zh) | 一种基于短作业优先的优化gpu性能的方法及系统 | |
KR101885030B1 (ko) | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치 | |
US10185659B2 (en) | Memory allocation system for multi-tier memory | |
US10488911B2 (en) | Method and computing system of allocating registers | |
KR101754998B1 (ko) | 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 | |
CN116775265A (zh) | 协作组阵列 | |
CN116774914A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210727 |