CN115393171A - 一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法 - Google Patents
一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法 Download PDFInfo
- Publication number
- CN115393171A CN115393171A CN202211002022.2A CN202211002022A CN115393171A CN 115393171 A CN115393171 A CN 115393171A CN 202211002022 A CN202211002022 A CN 202211002022A CN 115393171 A CN115393171 A CN 115393171A
- Authority
- CN
- China
- Prior art keywords
- level
- reg
- address
- bank
- addr
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法。本发明的方法包括以下步骤:1)物理存储单元被划分为8个Bank,每个Warp会分配16个读操作数地址和8个写操作数地址用于操作数收集,这16个读操作数地址与8个写操作数地址会经过译码后被映射到8个Bank;2)采用建立流水线的分级分组地址映射方法,通过将每组的16个读操作数地址和8个写操作数地址分组并建立流水线进行映射。本发明主要针对寄存器文件的访问过程,提供了一种冲突检测与排队机制,用于解决实际传输中可能出现的Bank冲突问题。
Description
技术领域
本发明属于统一染色图形处理器技术领域,具体涉及一种共享寄存器文件分组映射的冲突检测与排队机制。
背景技术
随着近些年来数据挖掘、机器学习、高清视频图像处理和大数据等研究及应用方向的逐渐火热,计算机中传统的CPU性能的提升已无法满足这些应用对计算机计算需求的增长。在这种环境下,各种各样的计算加速器被提出来,包括图形处理器(GraphicsProcessing Units,GPU)和现场可编程门阵列(Field Programmable Gate Array,FPGA)等。毋庸置疑,其中应用最为广泛的就是GPU,对于某些特定应用,相比于CPU而言,使用GPU可以达到数百倍的加速效果。随着计算需求的增长和GPU线程级并行性的增加,GPU也开始被用在通用计算领域,进而演化出了通用图形处理器General Purpose Computing onGraphics Processing Units,GPGPU。现在的图形处理器已经不仅仅指的是专用的图形加速芯片了,更多的是一种可以借助大规模线程级并行(Thread Level Parallelism,TLP)计算而实现运算的SoC芯片。如今的计算机可以直接借助GPU大规模线程级并行的特点来进行大并行计算,这种并行的计算通常利用了所有计算相关的硬件并使用了适当算法使计算可以获得巨大的加速。
统一染色阵列是统一染色图形处理器的运算核心,其在图形处理器版图中所占的面积也极为可观。流多核处理器是统一染色架构GPU执行纹理处理的核心部件,染色内核是统一染色阵列的基本染色单元,寄存器文件的组织是其设计的一项重要内容。寄存器是GPU上的存储器中效率最高的存储部件,其以寄存器文件(Register File,RF)为单位,为了减少上下文切换的代价,GPU部署了较大规模的寄存器文件资源供流处理器使用,不同计算能力的GPU,每个流多核处理器上寄存器文件的个数不一样。GPU的寄存器文件要比Cache大很多,且主要为SRAM材质,它所占的面积不可忽视。GPU中,因染色内核数量众多,且每个内核现场数量众多,寄存器文件的数量、现场规模可观,因此寄存器文件的管理与使用对于GPU性能有重要意义。
在GPU中,每个流多核处理器中的染色内核独享该SM中的RF,线程束(Warp)是GPU调度和运行的基本单元,每个Warp都需要被分配属于自己的专用架构寄存器文件,并由Warp id索引,并且每个架构寄存器都有在寄存器文件中分配相应的物理寄存器。一旦分配了寄存器,直到Warp所属的协作线程阵列完成其执行后,它才会被释放。因此寄存器文件的分配与释放管理就变得极为重要,而其中读写地址的冲突检测与解决策略更是必不可少。
发明内容
为解决背景技术中存在的技术问题,本发明提供了统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,主要针对寄存器文件的访问过程,提供了一种冲突检测与排队机制,用于解决实际传输中可能出现的存储库(Bank)冲突问题。
本发明的技术解决方案是:本发明为一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特殊之处在于:该方法包括以下步骤:
1)物理存储单元被划分为8个Bank,每个Warp会分配16个读操作数地址和8个写操作数地址用于操作数收集,这16个读操作数地址与8个写操作数地址会经过译码后被映射到8个Bank;
2)采用建立流水线的分级分组地址映射方法,通过将每组的16个读操作数地址和8个写操作数地址分组并建立流水线进行映射。
进一步的,步骤1)中每个Bank有2个读地址接口和1个写地址接口,最多可同时接受2个读操作数地址和1个写操作数地址。
进一步的,步骤2)的具体步骤如下:
2.1)对16个读操作数地址、8个写操作数地址进行了分组,每4个地址为一个Group,并规定读写映射操作中每一级寄存器组的优先级;
2.2)根据优先级关系分析映射模式并列出了真值表,进一步根据真值表推导出其逻辑表达式并画出每一级的映射组合逻辑图;
2.3)基于流水线的性能,分析了写操作映射过程中,读写有效信号的生成方式,并通过其真值表推导出组合逻辑公式,进一步得到其组合逻辑图;
2.4)将读操作和写操作分开进行,其中读操作需要经过三级分组映射,写操作只需要两级分组映射。
进一步的,步骤2)中读操作时,流程如下:
3.1)先将16个读操作数地址分为4个group,其中addr_0、addr_1、addr_8、addr_9为group_0;addr_2、addr_3、addr_10、addr_11为group_1;addr_4、addr_5、addr_12、addr_13为group_2;addr_6、addr_7、addr_14、addr_15为group_3;
3.2)每个地址都会经过一个译码单元,译码得到该地址对应的Bank并产生一个有效信号,这些有效信号经过一个映射模块Allocate_Logic_0后被送往第0级读有效信息寄存器组Reg_rd_level_0中,Reg_rd_level_0中存放的数据再经过另一个映射模块Allocate_Logic_1后被送往第1级读有效信息寄存器组Reg_rd_level_1中,Reg_rd_level_1中存放的数据经过最后一个映射模块Allocate_Logic_2后被送往Bank中执行读操作,同时送往第2级读有效信息寄存器组Reg_rd_level_2中暂存,用于读操作数重排序;同时需要判断Reg_rd_level_1中剩余地址信息数量,用于决定流水线暂停或发送新的rdena信号,最终,Reg_rd_level_2中的地址被送往Bank进行相应操作。
进一步的,步骤3.2)的具体步骤如下:
3.2.1)对16个读操作数地址中3bit位宽的Bank判断位进行译码,得到该地址对应的Bank号并产生一个有效信号valid_i_bj,其中i表示地址号,j表示Bank号;
3.2.2)每个地址i都有映射到所有Bank的连线。每一个Group都包含4个valid_i_bj,根据valid_i_bj的值判断读地址是否有效,并映射到Reg_rd_level_0的4个寄存器中,产生相应的有效信号;规定地址编号越小优先级越高;
3.2.3)寄存器组Reg_rd_level_0中存放的数据,将再经过另一个映射模块Allocate_Logic_Level_1后被送往Reg_rd_level_1中,Reg_rd_level_1共分为2组,每组包含8个位宽为4bit的寄存器及其有效信号valid,用于存放相应的由上一级送来的地址信息;Reg_rd_level_0的每个寄存器都有一个与之对应的valid位,若valid位为1则表示该寄存器内的信息有效,需要被映射到Reg_rd_level_1,若为0则无效,不需要映射;当有Reg_rd_level_0中的信息被映射到Reg_rd_level_1的某个寄存器时,Reg_rd_level_1中相应的寄存器的valid置1;
3.2.4)Reg_rd_level_1中的数据经过最后一个映射模块Allocate_Logic_Level_2后被送往Bank以及Reg_rd_level_2中;其中送往Bank的数据为7bit,作为访存地址用于执行读操作,这7bit数据是由Reg_rd_level_1中地址信息所对应的实地址译码出的地址偏移,即物理Block编号,不再是前两级存放的4bit的index信息;而送往Reg_rd_level_2的数据依然是表示读地址编号的4bit的index信息,用于执行读操作数重排序;
3.2.5)Reg_rd_level_1映射到Reg_rd_level_2的过程中,需要同时判断所有8个Bank中Reg_rd_level_1中剩余有效信息数量,用于决定流水线暂停或发送新的rdena信号;若所有8个Bank中,每一个Bank的Reg_rd_level_1中剩余有效信息数量均小于等于2,则需要向外界发送一个rdena信号,表示下一拍Reg_rd_level_1中数据将全部送往Bank,流水线恢复工作,新的一组读地址需要被送入系统开始映射;若有任意一个Bank的Reg_rd_level_1中剩余有效信息数量大于2,则流水线继续暂停,直至满足条件。
进一步的,步骤2)中写操作时,具体流程如下:
3.3)先将8个写操作数地址分为2个Group,其中addr_0、addr_1、addr_4、addr_5为Group_0;addr_2、addr_3、addr_6、addr_7为Group_1;
3.4)每个写地址都会先经过一个译码单元,得到该地址对应的Bank并产生一个有效信号,这些有效信号经过一个映射模块Allocate_Logic_0,后被送往第0级写有效信息寄存器组Reg_wr_level_0中,Reg_wr_level_0中存放的数据再经过另一个映射模块Allocate_Logic_1后被送往Bank进行写操作,与此同时需要判断所有8个Bank中Reg_rd_level_0中剩余地址信息数量,用于决定写流水线暂停或发送新的wrena信号。
进一步的,步骤3.4)的具体步骤如下:
3.4.1)通过对8个写操作数地址信息中3bit位宽的Bank判断位进行译码,得到该地址对应的Bank并产生一个有效信号valid_i_bj,其中i表示地址号,j表示Bank号;每个地址i都有映射到所有Bank的连线,对某一个地址而言,当译码结果映射到某Bank时,与该Bank对应的valid_i_bj置1,与其余7个Bank对应的valid_i_bj置0;其映射逻辑与读操作中地址译码信息到Reg_rd_level_0的映射逻辑相同;
3.4.2)写操作中,Reg_wr_level_0中存放的写地址index信息经过第二个映射模块Allocate_Logic_Level_2后被送往Bank执行写操作;其中送往Bank的数据为7bit,作为访存地址用于执行写操作,这7bit数据是由Reg_wr_level_0中index信息所对应的实地址译码得到的地址偏移,即物理Block编号,不再是Reg_wr_level_0存放的4bit的index信息;Reg_wr_level_0的每个寄存器都有一个与之对应的Valid位,若Valid位为1则表示该寄存器内的信息有效,需要被映射到Bank执行写操作;同样规定Reg_wr_level_0中寄存器编号越小优先级越高;此外,不论Reg_wr_level_0的group 0还是group1,当有数据被送往Bank时,该group所有数据将向前移动1个寄存器的位置,当group 0的所有数据均送往Bank执行写操作时,group 1开始执行映射;
3.4.3)Reg_wr_level_0映射到Bank进行写操作的过程中,需要同时判断所有8个Bank中Reg_wr_level_0中剩余有效信息数量,用于决定流水线暂停或发送新的wrena信号;若所有8个Bank中,每一个Bank的Reg_wr_level_0中剩余有效信息数量均小于等于1,则需要向外界发送一个wrena信号,表示下一拍Reg_wr_level_0中数据将全部送往Bank,流水线恢复工作,新的一组写地址需要被送入系统开始映射;若有任意一个Bank的Reg_wr_level_0中剩余有效信息数量大于1,则流水线继续暂停,直至满足条件。
在本发明提供的一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法中,物理存储单元被划分为8个Bank,每个Warp会分配16个读操作数地址和8个写操作数地址用于操作数收集,这16个读操作数地址与8个写操作数地址会经过译码后被映射到8个Bank。每个Bank有2个读地址接口和1个写地址接口,最多可同时接受2个读操作数地址和1个写操作数地址。如果译码操作结束后,有超过2个读操作数地址或超过1个写操作数地址被映射到同一个Bank,则会发生Bank冲突。因此指向同一个Bank的读写操作数地址,必须通过一个冲突检测和排队机制来对读写操作数进行合理分发,分批进入Bank中读写数据。我们先分别尝试了在不加入流水线的情况下,纯硬件和软硬件结合的映射方案。发现其均无法满足设计目标最终,本发明中设计了一种建立流水线的分级分组地址映射方案,并详细介绍了包括其读写操作数地址的分组映射原理以及实现方式、读写流水线暂停控制条件、读操作数重排序。并精确到门级,描述了每一级的映射逻辑关系。经过验证,本发明中每一级的分配与释放逻辑,以及本发明中操作数收集单元在有无Bank冲突的情况下能提供与接收操作数的数量,均满足设计指标。
本发明还采用建立流水线的分级分组地址映射方法,通过将每组的16个读、8个写操作数地址分组并建立流水线进行映射。将读写操作分开进行,其中读操作需要经过三级分组映射,写操作只需要两级分组映射。我们对16个读、8个写操作数地址进行了分组,每4个地址为一个Group,并规定了读写映射操作中每一级寄存器组的优先级,根据优先级关系分析映射模式并列出了真值表,进一步根据真值表推导出其逻辑表达式并画出了每一级的映射组合逻辑图。此外,我们还基于流水线的性能,分析了读写操作映射过程中,读写有效信号的生成方式,并通过其真值表推导出组合逻辑公式,进一步得到了其组合逻辑图。对读操作而言,由于在冲突检测部分,16个读地址经过寄存器请求与分配单元后排列顺序有可能被打乱。例如,读地址addr_r_2、addr_r_8、addr_r_9被映射到了同一个Bank,在我们的设计方案中,addr_r_8、addr_r_9属于group 0,addr_r_2属于group 1,因此addr_r_8与addr_r_9会先经过冲突检测模块并被映射到相应的Bank,进行读操作并获得读操作数data 8与data 9,但此时,没有任何的信息来指示这两个数据作为data 8与data 9被输出。因此,通过冲突检测逻辑得到的读操作数,需要再经过一级重排序单元Reorder Unit,最后才能得到顺序正确的读数据dout 0–dout 15。因此,我们额外设置了一组寄存器Reg_rd_level_2用于存放地址的index信息及其有效信号,这样的设计下,在从Bank中得到读操作数的同一拍,与这两个读操作数有关的index信息以及valid值正好被存入Reg_rd_level_2中,在下一拍,a端口与b端口的读操作数各自按照其在Reg_rd_level_2中对应的index信息输出,例如,reg_r_b0_l2_0中存放的数据为4’b1000,且此时valid_r_b0_l2_0有效,则从Bank的a端口读出的数据作为data 8输出;若reg_r_b0_l2_1中存放的数据为4’b1001,且此时valid_r_b0_l2_1有效,则从Bank的b端口读出的数据作为data 9输出。这样一来便实现了读操作数的重排序,而写操作则不需要重排序操作。
因此本发明分析了传统的图形处理器寄存器调度策略,并立足于国产专用图形处理器,探索了适合国内技术水平的图形处理器统一染色阵列共享寄存器文件设计,并发明了一种针对寄存器文件的访问过程的技术,提供了一种冲突检测与排队机制,用于解决实际传输中可能出现的Bank冲突问题。
附图说明
图1为本发明读操作总体流程;
图2为本发明读操作Group_0的valid_i_bj映射到Reg_rd_level_0组合逻辑图;
图3为本发明的Allocate_r_b0_l0_0生成选择控制信号的组合逻辑图;
图4为本发明的Allocate_r_b0_0_1生成选择控制信号的组合逻辑图;
图5为本发明的Allocate_r_b0_l0_2生成选择控制信号的组合逻辑图;
图6为本发明读操作Reg_rd_level_0映射到Reg_rd_level_1第一级的逻辑图;
图7为本发明的Allocate_r_b0_l1_3生成选择控制信号的组合逻辑图;
图8为本发明读操作Reg_rd_level_1映射到Reg_rd_level_2逻辑图;
图9为本发明生成rdena的组合逻辑图;
图10为本发明写操作总体流程;
图11为本发明Reg_wr_level_0映射到Bank的逻辑图;
图12为本发明生成wrena的组合逻辑图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。
本发明主要针对寄存器文件的访问过程,提供了一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,用于解决实际传输中可能出现的Bank冲突问题。在尝试了多种方案后,最终本发明中设计了一种建立流水线的分级分组地址映射方案,接下来将详细介绍包括其读写操作数地址的分组映射原理以及实现方式、读写流水线暂停控制条件、读操作数重排序等内容,并精确到门级,描述每一级的映射逻辑关系。
参见图1,建立流水线的分组映射读操作总体流程是:先将16个读地址分为4个group,其中addr_0、addr_1、addr_8、addr_9为group_0;addr_2、addr_3、addr_10、addr_11为group_1;addr_4、addr_5、addr_12、addr_13为group_2;addr_6、addr_7、addr_14、addr_15为group_3。每个地址都会经过一个译码单元,译码得到该地址对应的Bank并产生一个有效信号,这些有效信号经过一个映射模块Allocate_Logic_0后被送往第0级读有效信息寄存器组Reg_rd_level_0中,Reg_rd_level_0中存放的数据再经过另一个映射模块Allocate_Logic_1后被送往第1级读有效信息寄存器组Reg_rd_level_1中,Reg_rd_level_1中存放的数据经过最后一个映射模块Allocate_Logic_2后被送往Bank中执行读操作,同时送往第2级读有效信息寄存器组Reg_rd_level_2中暂存,用于读操作数重排序。同时需要判断Reg_rd_level_1中剩余地址信息数量,用于决定流水线暂停或发送新的rdena信号,最终,Reg_rd_level_2中的地址被送往Bank进行相应操作。
对16个读操作数地址中3bit位宽的Bank判断位进行译码,得到该地址对应的Bank号并产生一个有效信号valid_i_bj,其中i表示地址号,j表示Bank号。每个地址i都有映射到所有Bank的连线。每一个Group都包含4个valid_i_bj,根据valid_i_bj的值判断读地址是否有效,并映射到Reg_rd_level_0的4个寄存器中,产生相应的有效信号。规定地址编号越小优先级越高,以Bank_0的Group_0为例,addr_0优先级最高,addr_9最低,按照优先级顺序将其存在Reg_rd_level_0的Group_0的四个寄存器中。由此可以得到一个地址译码信息到Reg_rd_level_0的映射组合逻辑图,以Bank 0的Group_0为例,如附图2所示。图中,方框用于生成写入Reg_rd_level_0的group 0的相关寄存器的选择控制信号,将valid值及地址信息送入Reg_rd_level_0中的相应位置,根据Allocata_r_b0_l0_0生成选择控制信号的组合逻辑图如附图3所示。与Allocata_r_b0_l0_0类似,根据Allocata_r_b0_l0_1生成选择控制信号的组合逻辑图如附图4所示。与Allocata_r_b0_l0_0及Allocata_r_b0_l0_1类似,通过Allocata_r_b0_l0_2生成选择控制信号的组合逻辑图如附图5所示。Allocata_r_b0_l0_3的逻辑较为简单,此处不再展示其组合逻辑图。
寄存器组Reg_rd_level_0中存放的数据,将再经过另一个映射模块Allocate_Logic_Level_1后被送往Reg_rd_level_1中,Reg_rd_level_1共分为2组,每组包含8个位宽为4bit的寄存器及其有效信号valid,用于存放相应的由上一级送来的地址信息。Reg_rd_level_0的每个寄存器都有一个与之对应的valid位,若valid位为1则表示该寄存器内的信息有效,需要被映射到Reg_rd_level_1,若为0则无效,不需要映射。当有Reg_rd_level_0中的信息被映射到Reg_rd_level_1的某个寄存器时,Reg_rd_level_1中相应的寄存器的valid置1。同样的,规定Reg_rd_level_0中寄存器编号越小优先级越高,由此我们可以得到Reg_rd_level_0到Reg_rd_level_1的映射逻辑图,即附图1中的Allocate_Logic_1,以group 0与group 1为例,如附图6所示。图中,方框Allocata_r_b0_l1_0–Allocata_r_b0_l1_7分别用于生成写入Reg_rd_level_1第一组中相关寄存器的选择控制信号,将valid值及地址信息送入Reg_rd_level_1中的相应位置。其中,Allocata_r_b0_l1_0、Allocata_r_b0_l1_6与Allocata_r_b0_l0_2结构相同;Allocata_r_b0_l1_1、Allocata_r_b0_l1_5与Allocata_r_b0_l0_1结构相同;Allocata_r_b0_l1_2、Allocata_r_b0_l1_4与Allocata_r_b0_l0_0结构相同;Allocata_r_b0_l1_7与Allocata_r_b0_l0_3结构相同,而Allocata_r_b0_l1_3的组合逻辑图如附图7所示。
Reg_rd_level_1中的数据经过最后一个映射模块Allocate_Logic_Level_2后被送往Bank以及Reg_rd_level_2中。其中送往Bank的数据为7bit,作为访存地址用于执行读操作,这7bit数据是由Reg_rd_level_1中地址信息所对应的实地址译码出的地址偏移,即物理Block编号,不再是前两级存放的4bit的index信息。而送往Reg_rd_level_2的数据依然是表示读地址编号的4bit的index信息,用于执行读操作数重排序。二者映射关系完全相同,以Reg_rd_level_2为例进行讲解。Reg_rd_level_2包含2个位宽为4bit的寄存器及其有效信号valid,用于存放Reg_rd_level_1送来的地址信息。Reg_rd_level_1的每个寄存器都有一个与之对应的Valid位,若Valid位为1则表示该寄存器内的信息有效,需要被映射到Reg_rd_level_2。当有Reg_rd_level_1中的信息被映射到Reg_rd_level_2的某个寄存器时,Reg_rd_level_2中相应的寄存器的Valid置1。同样规定Reg_rd_level_1中寄存器编号越小优先级越高。此外,不论Reg_rd_level_1的第一组还是第二组,当有数据被送往Reg_rd_level_2时,该组所有数据将向前移动相应数量个寄存器,当第一组Reg_rd_level_1所有数据均送往Reg_rd_level_2时,第二组开始执行映射。因此,实际操作中,相当于只有Reg_b0_l1_0、Reg_b0_l1_1、Reg_b0_l1_8以及Reg_b0_l1_9这4个寄存器中存放的有效数据需要被送往Reg_rd_level_2,其余数据都会从其他寄存器向这几个寄存器中存入。由此可以得到Reg_rd_level_1到Reg_rd_level_2的映射图,即Allocate_Logic_2,以Bank_0为例,如附图8所示。图中,方框Allocata_r_b0_l2_0、Allocata_r_b0_l2_1分别用于生成写入Reg_rd_level_2中相关寄存器的选择控制信号。其中,Allocata_r_b0_l2_0与Allocata_r_b0_l0_2结构相同;Allocata_r_b0_l2_1与Allocata_r_b0_l0_1结构相同。
Reg_rd_level_1映射到Reg_rd_level_2的过程中,需要同时判断所有8个Bank中Reg_rd_level_1中剩余有效信息数量,用于决定流水线暂停或发送新的rdena信号。若所有8个Bank中,每一个Bank的Reg_rd_level_1中剩余有效信息数量均小于等于2,则需要向外界发送一个rdena信号,表示下一拍Reg_rd_level_1中数据将全部送往Bank,流水线恢复工作,新的一组读地址需要被送入系统开始映射。若有任意一个Bank的Reg_rd_level_1中剩余有效信息数量大于2,则流水线继续暂停,直至满足条件。为实现上述目标,我们对每个Bank的Reg_rd_level_1中两组的各自前三个寄存器的valid信号进行判断,当每组的6个valid信号均少于等于2个值有效时,将rdena置1,否则置0。上述映射关系对应的组合逻辑图如附图9所示。
由于在冲突检测部分,16个读地址经过寄存器请求与分配单元后排列顺序有可能被打乱,因此,通过冲突检测逻辑得到的读操作数,需要再经过一级重排序单元ReorderUnit,最后才能得到顺序正确的读数据dout 0–dout 15。在数据从Reg_rd_level_1到Bank的映射的同时,我们还设置了一组寄存器Reg_rd_level_2用于存放地址的index信息及其有效信号。Reg_rd_level_2深度为2,每拍存放1个或2个读地址的index信息。Allocate_Logic_Level_2中送出的valid_r_b0_l2_0与valid_r_b0_l2_1作为Bank两个端口读操作的有效信号,同时作为reg_r_b0_l2_0与reg_r_b0_l2_1的有效信号被存入Reg_rd_level_2。将valid_r_b0_l2_0对应到Bank的a端口,将valid_r_b0_l2_1对应到Bank的b端口,从Bank中得到读操作数的同一拍,与这两个读操作数有关的index信息以及valid值正好被存入Reg_rd_level_2中,在下一拍,a端口与b端口的读操作数各自按照其在Reg_rd_level_2中对应的index信息输出,这样一来便实现了读操作数的重排序。
由于写操作数地址只有8个,因此映射逻辑要比读操作简单很多。以Bank0为例,写操作总体流程如附图10所示,与读操作类似,我们先将8个写地址分为2个Group,其中addr_0、addr_1、addr_4、addr_5为Group_0;addr_2、addr_3、addr_6、addr_7为Group_1。每个写地址都会先经过一个译码单元,得到该地址对应的Bank并产生一个有效信号,这些有效信号经过一个映射模块Allocate_Logic_0,后被送往第0级写有效信息寄存器组Reg_wr_level_0中,Reg_wr_level_0中存放的数据再经过另一个映射模块Allocate_Logic_1后被送往Bank进行写操作,与此同时需要判断所有8个Bank中Reg_rd_level_0中剩余地址信息数量,用于决定写流水线暂停或发送新的wrena信号。写操作不存在像读操作那样的数据重排序步骤,因此没有读操作中最后一级存放index的寄存器,又因为写操作只有8个地址,只需要分成2个group,在第0级就可以对写地址进行排队与冲突调度,因此,整个写操作的冲突检测与分配过程中,只有Reg_wr_level_0这一级寄存器。
与读操作类似,通过对8个写操作数地址信息中3bit位宽的Bank判断位进行译码,得到该地址对应的Bank并产生一个有效信号valid_i_bj,其中i表示地址号,j表示Bank号。每个地址i都有映射到所有Bank的连线,对某一个地址而言,当译码结果映射到某Bank时,与该Bank对应的valid_i_bj置1,与其余7个Bank对应的valid_i_bj置0。其映射逻辑与读操作中地址译码信息到Reg_rd_level_0的映射逻辑相同。
写操作中,Reg_wr_level_0中存放的写地址index信息经过第二个映射模块Allocate_Logic_Level_2后被送往Bank执行写操作。其中送往Bank的数据为7bit,作为访存地址用于执行写操作,这7bit数据是由Reg_wr_level_0中index信息所对应的实地址译码得到的地址偏移,即物理Block编号,不再是Reg_wr_level_0存放的4bit的index信息。Reg_wr_level_0的每个寄存器都有一个与之对应的Valid位,若Valid位为1则表示该寄存器内的信息有效,需要被映射到Bank执行写操作。同样规定Reg_wr_level_0中寄存器编号越小优先级越高。此外,不论Reg_wr_level_0的group 0还是group 1,当有数据被送往Bank时,该group所有数据将向前移动1个寄存器的位置,当group 0的所有数据均送往Bank执行写操作时,group 1开始执行映射。因此,实际操作中,只有Reg_b0_l0_0、Reg_b0_l0_4这2个寄存器中存放的有效数据需要被送往Bank,其余数据都会从其他寄存器向这几个寄存器中存入。由可以得到如附图11所示的Reg_wr_level_0映射到Bank的逻辑图。
Reg_wr_level_0映射到Bank进行写操作的过程中,需要同时判断所有8个Bank中Reg_wr_level_0中剩余有效信息数量,用于决定流水线暂停或发送新的wrena信号。若所有8个Bank中,每一个Bank的Reg_wr_level_0中剩余有效信息数量均小于等于1,则需要向外界发送一个wrena信号,表示下一拍Reg_wr_level_0中数据将全部送往Bank,流水线恢复工作,新的一组写地址需要被送入系统开始映射。若有任意一个Bank的Reg_wr_level_0中剩余有效信息数量大于1,则流水线继续暂停,直至满足条件。为实现上述目标,需对每个Bank的Reg_wr_level_0中两个group的各自前2个寄存器的valid信号进行判断,当这4个valid信号中少于等于1个值有效时,将wrena_0置1,否则置0。上述映射关系对应的组合逻辑如附图12所示。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细地说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:该方法包括以下步骤:
1)物理存储单元被划分为8个Bank,每个Warp会分配16个读操作数地址和8个写操作数地址用于操作数收集,这16个读操作数地址与8个写操作数地址会经过译码后被映射到8个Bank;
2)采用建立流水线的分级分组地址映射方法,通过将每组的16个读操作数地址和8个写操作数地址分组并建立流水线进行映射。
2.根据权利要求1所述的统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:所述步骤1)中每个Bank有2个读地址接口和1个写地址接口,最多可同时接受2个读操作数地址和1个写操作数地址。
3.根据权利要求1所述的统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:所述步骤2)的具体步骤如下:
2.1)对16个读操作数地址、8个写操作数地址进行了分组,每4个地址为一个Group,并规定读写映射操作中每一级寄存器组的优先级;
2.2)根据优先级关系分析映射模式并列出了真值表,进一步根据真值表推导出其逻辑表达式并画出每一级的映射组合逻辑图;
2.3)基于流水线的性能,分析了写操作映射过程中,读写有效信号的生成方式,并通过其真值表推导出组合逻辑公式,进一步得到其组合逻辑图;
2.4)将读操作和写操作分开进行,其中读操作需要经过三级分组映射,写操作只需要两级分组映射。
4.根据权利要求1所述的统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:所述步骤2)中读操作时,流程如下:
3.1)先将16个读操作数地址分为4个group,其中addr_0、addr_1、addr_8、addr_9为group_0;addr_2、addr_3、addr_10、addr_11为group_1;addr_4、addr_5、addr_12、addr_13为group_2;addr_6、addr_7、addr_14、addr_15为group_3;
3.2)每个地址都会经过一个译码单元,译码得到该地址对应的Bank并产生一个有效信号,这些有效信号经过一个映射模块Allocate_Logic_0后被送往第0级读有效信息寄存器组Reg_rd_level_0中,Reg_rd_level_0中存放的数据再经过另一个映射模块Allocate_Logic_1后被送往第1级读有效信息寄存器组Reg_rd_level_1中,Reg_rd_level_1中存放的数据经过最后一个映射模块Allocate_Logic_2后被送往Bank中执行读操作,同时送往第2级读有效信息寄存器组Reg_rd_level_2中暂存,用于读操作数重排序;同时需要判断Reg_rd_level_1中剩余地址信息数量,用于决定流水线暂停或发送新的rdena信号,最终,Reg_rd_level_2中的地址被送往Bank进行相应操作。
5.根据权利要求4所述的统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:所述步骤3.2)的具体步骤如下:
3.2.1)对16个读操作数地址中3bit位宽的Bank判断位进行译码,得到该地址对应的Bank号并产生一个有效信号valid_i_bj,其中i表示地址号,j表示Bank号;
3.2.2)每个地址i都有映射到所有Bank的连线。每一个Group都包含4个valid_i_bj,根据valid_i_bj的值判断读地址是否有效,并映射到Reg_rd_level_0的4个寄存器中,产生相应的有效信号;规定地址编号越小优先级越高;
3.2.3)寄存器组Reg_rd_level_0中存放的数据,将再经过另一个映射模块Allocate_Logic_Level_1后被送往Reg_rd_level_1中,Reg_rd_level_1共分为2组,每组包含8个位宽为4bit的寄存器及其有效信号valid,用于存放相应的由上一级送来的地址信息;Reg_rd_level_0的每个寄存器都有一个与之对应的valid位,若valid位为1则表示该寄存器内的信息有效,需要被映射到Reg_rd_level_1,若为0则无效,不需要映射;当有Reg_rd_level_0中的信息被映射到Reg_rd_level_1的某个寄存器时,Reg_rd_level_1中相应的寄存器的valid置1;
3.2.4)Reg_rd_level_1中的数据经过最后一个映射模块Allocate_Logic_Level_2后被送往Bank以及Reg_rd_level_2中;其中送往Bank的数据为7bit,作为访存地址用于执行读操作,这7bit数据是由Reg_rd_level_1中地址信息所对应的实地址译码出的地址偏移,即物理Block编号,不再是前两级存放的4bit的index信息;而送往Reg_rd_level_2的数据依然是表示读地址编号的4bit的index信息,用于执行读操作数重排序;
3.2.5)Reg_rd_level_1映射到Reg_rd_level_2的过程中,需要同时判断所有8个Bank中Reg_rd_level_1中剩余有效信息数量,用于决定流水线暂停或发送新的rdena信号;若所有8个Bank中,每一个Bank的Reg_rd_level_1中剩余有效信息数量均小于等于2,则需要向外界发送一个rdena信号,表示下一拍Reg_rd_level_1中数据将全部送往Bank,流水线恢复工作,新的一组读地址需要被送入系统开始映射;若有任意一个Bank的Reg_rd_level_1中剩余有效信息数量大于2,则流水线继续暂停,直至满足条件。
6.根据权利要求1所述的统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:所述步骤2)中写操作时,具体流程如下:
3.3)先将8个写操作数地址分为2个Group,其中addr_0、addr_1、addr_4、addr_5为Group_0;addr_2、addr_3、addr_6、addr_7为Group_1;
3.4)每个写地址都会先经过一个译码单元,得到该地址对应的Bank并产生一个有效信号,这些有效信号经过一个映射模块Allocate_Logic_0,后被送往第0级写有效信息寄存器组Reg_wr_level_0中,Reg_wr_level_0中存放的数据再经过另一个映射模块Allocate_Logic_1后被送往Bank进行写操作,与此同时需要判断所有8个Bank中Reg_rd_level_0中剩余地址信息数量,用于决定写流水线暂停或发送新的wrena信号。
7.根据权利要求6所述的统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法,其特征在于:所述步骤3.4)的具体步骤如下:
3.4.1)通过对8个写操作数地址信息中3bit位宽的Bank判断位进行译码,得到该地址对应的Bank并产生一个有效信号valid_i_bj,其中i表示地址号,j表示Bank号;每个地址i都有映射到所有Bank的连线,对某一个地址而言,当译码结果映射到某Bank时,与该Bank对应的valid_i_bj置1,与其余7个Bank对应的valid_i_bj置0;其映射逻辑与读操作中地址译码信息到Reg_rd_level_0的映射逻辑相同;
3.4.2)写操作中,Reg_wr_level_0中存放的写地址index信息经过第二个映射模块Allocate_Logic_Level_2后被送往Bank执行写操作;其中送往Bank的数据为7bit,作为访存地址用于执行写操作,这7bit数据是由Reg_wr_level_0中index信息所对应的实地址译码得到的地址偏移,即物理Block编号,不再是Reg_wr_level_0存放的4bit的index信息;Reg_wr_level_0的每个寄存器都有一个与之对应的Valid位,若Valid位为1则表示该寄存器内的信息有效,需要被映射到Bank执行写操作;同样规定Reg_wr_level_0中寄存器编号越小优先级越高;此外,不论Reg_wr_level_0的group 0还是group 1,当有数据被送往Bank时,该group所有数据将向前移动1个寄存器的位置,当group 0的所有数据均送往Bank执行写操作时,group 1开始执行映射;
3.4.3)Reg_wr_level_0映射到Bank进行写操作的过程中,需要同时判断所有8个Bank中Reg_wr_level_0中剩余有效信息数量,用于决定流水线暂停或发送新的wrena信号;若所有8个Bank中,每一个Bank的Reg_wr_level_0中剩余有效信息数量均小于等于1,则需要向外界发送一个wrena信号,表示下一拍Reg_wr_level_0中数据将全部送往Bank,流水线恢复工作,新的一组写地址需要被送入系统开始映射;若有任意一个Bank的Reg_wr_level_0中剩余有效信息数量大于1,则流水线继续暂停,直至满足条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211002022.2A CN115393171A (zh) | 2022-08-20 | 2022-08-20 | 一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211002022.2A CN115393171A (zh) | 2022-08-20 | 2022-08-20 | 一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115393171A true CN115393171A (zh) | 2022-11-25 |
Family
ID=84120273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211002022.2A Pending CN115393171A (zh) | 2022-08-20 | 2022-08-20 | 一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115393171A (zh) |
-
2022
- 2022-08-20 CN CN202211002022.2A patent/CN115393171A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255228B2 (en) | System and method for performing shaped memory access operations | |
US9262174B2 (en) | Dynamic bank mode addressing for memory access | |
US10037228B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
US10310973B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
US7339592B2 (en) | Simulating multiported memories using lower port count memories | |
US7634621B1 (en) | Register file allocation | |
US10169091B2 (en) | Efficient memory virtualization in multi-threaded processing units | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
CN108733415B (zh) | 支持向量随机访存的方法及装置 | |
EP3657337B1 (en) | Method, apparatus, device and storage medium for accessing static random access memory | |
CN104699631A (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
US9798543B2 (en) | Fast mapping table register file allocation algorithm for SIMT processors | |
US20130166877A1 (en) | Shaped register file reads | |
CN114416397A (zh) | 一种芯片、访问内存的方法及计算机设备 | |
JPH07120312B2 (ja) | バッファメモリ制御装置 | |
CN116775518A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
CN109614145A (zh) | 一种处理器核心结构及数据访存方法 | |
US20130152093A1 (en) | Multi-Channel Time Slice Groups | |
CN114945984A (zh) | 扩展存储器通信 | |
CN115393156A (zh) | 一种统一染色图形处理器共享寄存器文件的分配与释放方法 | |
CN112817639B (zh) | Gpu读写单元通过操作数收集器访问寄存器文件的方法 | |
CN115393171A (zh) | 一种统一染色图形处理器共享寄存器文件分组映射的冲突检测与排队方法 | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
CN112486904A (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 |