CN115861026B - 数据处理方法、装置、计算机设备、存储介质 - Google Patents
数据处理方法、装置、计算机设备、存储介质 Download PDFInfo
- Publication number
- CN115861026B CN115861026B CN202211562516.6A CN202211562516A CN115861026B CN 115861026 B CN115861026 B CN 115861026B CN 202211562516 A CN202211562516 A CN 202211562516A CN 115861026 B CN115861026 B CN 115861026B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- scalar
- vector
- register
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000013507 mapping Methods 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims abstract description 19
- 238000004364 calculation method Methods 0.000 claims description 55
- 238000013506 data mapping Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 3
- 102100026693 FAS-associated death domain protein Human genes 0.000 description 2
- 101000911074 Homo sapiens FAS-associated death domain protein Proteins 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 239000008358 core component Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002601 radiography Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:接收数据操作指令;所述操作指令是线程调度单元对初始指令进行译码后得到的;所述数据操作指令携带寄存器类型以及指令变量;根据所述寄存器类型以及所述指令变量进行计算,得到与所述数据操作指令对应的映射地址;所述映射地址包括行地址、数据块地址以及偏移量;基于所述映射地址中的所述行地址、所述数据块地址以及所述偏移量,在内存中进行数据操作。采用本方法能够提高寄存器存储空间利用率。
Description
技术领域
本申请涉及寄存器技术领域,特别是涉及一种数据处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
图形处理器GPU(Graphics Processing Unit)是一种由大量的计算单元组成的大规模并行计算架构。GPU并行程序的核心是线程(wave),一个线程就是程序中的一个单一指令流,多个线程组合在一起形成了并行计算网络,进而形成了并行程序。
线程执行指令时,支持不同长度的数据计算,其中有半精度数据(halfprecision,HP)、单精度数据(full precision,FP)和双精度数据(dual precision,DP),每种数据均可存储整型和浮点型数据。在执行指令时,会遇到输入、输出数据类型混合使用的情况,这就意味着寄存器需要对HP、FP、DP数据混合管理,这对寄存器存储数据带来了不小的挑战。
传统技术中,是将寄存器空间分割成三份,分别独立存储HP、FP、DP类型的数据,但是由于未被指令调用的数据类型空间不会被使用,造成寄存器存储空间的浪费。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高寄存器存储空间利用率的数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据处理方法。所述方法包括:
接收数据操作指令;所述数据操作指令是线程调度单元对初始指令进行译码后得到的;所述数据操作指令携带寄存器类型以及指令变量;
根据所述寄存器类型以及所述指令变量进行计算,得到与所述数据操作指令对应的映射地址;所述映射地址包括行地址、数据块地址以及偏移量;
基于所述映射地址中的所述行地址、所述数据块地址以及所述偏移量,在内存中进行数据操作
在其中一个实施例中,上述根据所述寄存器类型以及所述指令变量进行计算,得到不同数据类型对应的映射地址,包括:
当所述寄存器类型为矢量寄存器时,根据所述指令变量以及矢量计算规则得到矢量数据映射地址;
当所述寄存器类型为标量寄存器时,根据所述指令变量以及标量规则计算得到标量数据映射地址。
在其中一个实施例中,当所述寄存器类型为矢量寄存器时,所述指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数;当所述寄存器类型为标量寄存器时,所述指令变量包括所述线程编号、所述数据类型以及标量逻辑地址。
在其中一个实施例中,上述当所述寄存器类型为矢量寄存器时,根据所述指令变量以及矢量计算规则得到矢量数据映射地址,包括:
根据所述行数、所述线程编号、所述单元位置以及数据类型、所述执行模式以及所述矢量逻辑地址进行计算,得到矢量行地址;
根据所述单元位置、所述数据类型以及所述数据块数目进行计算,得到矢量数据块地址;
根据所述单元位置、所述数据类型以及所述矢量数据块地址进行计算,得到矢量偏移量。
在其中一个实施例中,上述当所述寄存器类型为标量寄存器时,根据所述指令变量以及标量规则计算得到标量数据映射地址,包括:
根据所述线程编号,得到标量行地址;
根据所述标量逻辑地址以及所述数据类型,得到标量数据块地址;
根据所述标量逻辑地址、所述数据类型以及所述标量数据块地址,得到标量偏移量。
在其中一个实施例中,上述方法还包括:
获取进行数据操作所得到的目标数据;
将所述目标数据发送至计算单元,所述计算单元用于根据所述目标数据以单指令流多数据流的方式进行计算操作得到计算数据。
第二方面,本申请还提供了一种数据处理装置。所述装置包括:
接收模块,用于接收数据操作指令;所述数据操作指令是线程调度单元对初始指令进行译码后得到的;所述数据操作指令携带寄存器类型以及指令变量;
映射模块,用于根据所述寄存器类型以及所述指令变量进行计算,得到与所述数据操作指令对应的映射地址;所述映射地址包括行地址、数据块地址以及偏移量;
操作模块,用于基于所述映射地址中的所述行地址、所述数据块地址以及所述偏移量,在内存中进行数据操作。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任意一个实施例中的方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
上述数据处理方法、装置、计算机设备、存储介质和计算机程序产品,WVR(WaveRegister Unit,线程寄存单元)接收数据操作指令,并对数据操作指令进行译码,得到寄存器类型以及指令变量,然后WVR就可以根据寄存器类型以及指令变量进行计算,得到与数据操作指令对应的映射地址;其中,映射地址包括行地址、数据块地址以及偏移量。这样,WVR就可以根据映射地址中的行地址、数据块地址以及偏移量,在内存中进行数据操作。由于根据映射地址中的行地址、数据块地址以及偏移量可以确定数据在寄存器中的具体位置,因此在对数据存储的时候可以进行混合存储,不必为不同类型的数据开辟单独的存储地址,进而提高寄存机的存储空间利用率。
附图说明
图1为一个实施例中数据处理方法的流程示意图;
图2为一个实施例中数据块内部结构示意图;
图3为一个实施例中VRF的共享空间示意图;
图4为一个实施例中的SRF的共享空间示意图;
图5为一个实施例中寄存器地址映射示意图;
图6为一个实施例中的SIMD32模式示意图;
图7为另一个实施例中的SIMD32模式示意图;
图8为一个实施例中的SIMD64模式示意图;
图9为一个数据处理方法的流程示意图;
图10为一个实施例中数据处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种数据处理方法,应用于线程寄存单元(WVR,Wave Register Unit),包括以下步骤:
S102,接收数据操作指令,操作指令是线程调度单元对初始指令进行译码后得到的;数据操作指令携带寄存器类型以及指令变量。
其中,数据操作指令是指对数据进行读或者写的指令,是由线程调度单元(WaveController,WVC)单元对初始指令进行译码后得到的指令,当WVC单元进行译码得到数据操作指令之后,将数据操作指令发送至WVR单元,进行地址映射并进行相应的数据操作;其中,初始指令是WVC选择线程wave,向IC(Instruction Cache,指令缓存)发送取址指令后,IC根据取指指令的指令偏移为每个线程wave读取的指令。
其中,指令变量是指WVC根据初始指令进行译码得到的变量,用于计算与数据操作指令对应的映射地址,指令变量可以是线程编号、执行模式、单元位置、数据类型等。
可选地,不同的寄存器类型对应不同的指令变量。示例性的,当寄存器类型为矢量寄存器时,指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数;当寄存器类型为标量寄存器时,指令变量包括线程编号、数据类型以及标量逻辑地址。
S104,根据寄存器类型以及指令变量进行计算,得到与数据操作指令对应的映射地址;映射地址包括行地址、数据块地址以及偏移量。
具体地,WVR根据寄存器类型以及指令变量进行计算,可以得到与数据操作指令对应的映射地址,通过映射地址可以在内存中进行相应的数据操作。
可选地,WVR可以根据映射地址中的行地址确定数据在寄存器中的行位置,然后根据数据块地址确定具体的block(数据块),最后根据偏移量得到具体的地址。
可选地,可以预先将寄存器的共享空间进行划分。进一步地,可以根据不同的寄存器类型对寄存器的共享空间进行划分。
可选地,可以预先将寄存器共享空间中的数据块根据不同数据类型进行空间分割,得到不同数据类型的存储空间,如图2所示,图2为一个实施例中数据块内部结构示意图,图2中一个block有64bits存储空间,因此它可以存储1个DP(双精度数据,dualprecision,DP)或2个FP(单精度数据,full precision,FP)或4个HP(半精度数据,halfprecision,HP)数据,图中右上角的数字代表这当前VRF的起始bit数,即偏移量offset。
可选地,可以根据线程数量、每一个线程的行数以及每一行的数据块将矢量寄存器(Vector Register File,VRF)划为为k×n×m×64bits大小的存储空间。具体结合图3所示,图3为一个实施例中VRF的共享空间示意图,矢量寄存器(Vector Register File,VRF)是用来存储矢量数据的共享寄存器地址空间。VRF可同时驱动k个wave(线程),每个wave有n行的存储空间,每行有m个block(数据块),block的内部结构如图2所示。因此根据映射地址中的行地址、数据块地址以及偏移量可以得到当前调用的数据在VRF内的具体位置。
可选地,可以根据线程数量、每一个线程的行数以及每一行的数据块将标量寄存器(Scalar Register File,SRF)划为为k×p×64bits大小的存储空间。具体结合图4,图4为一个实施例中的SRF的共享空间示意图,标量寄存器(Scalar Register File,SRF)是用来存储标量数据的共享寄存器地址空间。从图4可知,SRF内共有k个wave,与VRF不同的是每个wave里只有一行的存储空间,一行有p个block,block内的构成和VRF相同(参考图2)。同样的,根据映射地址中的行地址、数据块地址以及偏移量可以得到当前调用的数据在SRF内的具体位置。
结合图5所示,图5为传统技术中的地址映射方法,是把寄存器存储空间分割成三份,分别独立存储HP、FP、DP类型的数据。在运行指令时,首先寄存器接收到数据的读/写操作,然后从地址映射区拿到当前类型数据在存储空间的起始地址(HP/FP/DP_)Base和地址范围(HP/FP/DP_)Range,接着按照Base和Range规定的区域,在静态随机存储器SRAM构造的寄存器中读/写数据。
因此,VRF和SRF相较于传统技术,可以实现不同数据的混合存储,进而减少存储空间的浪费。并且,在读取数据时根据行地址、数据块地址以及偏移量就可以得到数据在VRF或SRF中的具体位置。
需要说明的一点是,由于VRF和SRF的结构不同,因此需要不同的计算规则来计算其对应的映射地址。
S106,基于映射地址中的行地址、数据块地址以及偏移量,在内存中进行数据操作。
可选地,当数据操作指令为读指令时,WVR则根据映射地址中的行地址、数据块地址以及偏移量,在内存中进行提取目标数据。
可选地,当数据操作指令为写指令时,WVR则根据映射地址中的行地址、数据块地址以及偏移量,在内存中写入目标数据。
上述数据处理方法中,WVR接收数据操作指令,并对数据操作指令进行译码,得到寄存器类型以及指令变量,然后WVR就可以根据寄存器类型以及指令变量进行计算,得到与数据操作指令对应的映射地址;其中,映射地址包括行地址、数据块地址以及偏移量。这样,WVR就可以根据映射地址中的行地址、数据块地址以及偏移量,在内存中进行数据操作。由于根据映射地址中的行地址、数据块地址以及偏移量可以确定数据在寄存器中的具体位置,因此在对数据存储的时候可以进行混合存储,不必为不同类型的数据开辟单独的存储地址,进而提高寄存机的存储空间利用率。
在一个实施例中,上述根据寄存器类型以及指令变量进行计算,得到不同数据类型对应的映射地址,包括:当寄存器类型为矢量寄存器时,根据指令变量以及矢量计算规则得到矢量数据映射地址;当寄存器类型为标量寄存器时,根据指令变量以及标量规则计算得到标量数据映射地址。
其中,矢量计算规则是指用于计算矢量寄存器映射地址的方法,通过矢量计算规则可以得到矢量数据映射地址;标量计算规则是指用于计算标量寄存器映射地址的方法,通过标量计算规则可以得到标量数据映射地址。
具体地,WVR会判断寄存器类型,然后根据寄存器类型选择对应的计算规则,再根据计算规则以及指令变量得到映射地址。示例性的,当寄存器类型为矢量寄存器时,WVR根据指令变量以及矢量计算规则得到矢量数据映射地址;当寄存器类型为标量寄存器时,WVR根据指令变量以及标量计算规则得到标量数据映射地址。
在上述实施例中,WVR根据寄存器类型对应的计算规则得到对应的映射地址,这样可以根据不同寄存器的结构准确得到数据在不同类型寄存器中对应的映射地址。
在其中一个实施例中,当寄存器类型为矢量寄存器时,指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数;当寄存器类型为标量寄存器时,指令变量包括线程编号、数据类型以及标量逻辑地址。
其中,线程编号(wave id,w),代表着当前指令正在执行哪个wave,w∈[0,k-1];指令模式(simd mode,s)代表着一个wave中并行执行单元lane的数量,执行模式有SIMD32和SIMD64两种,s的取值分别为32和64;单元位置(lane id,l),表示线程内执行单元所在位置,是线程内执行单元lane的编号,SIMD32时I∈[0,31],SIMD64时I∈[0,63];数据类型,记为d,由指令编码规定,代表着当前数据类型VRF的bit数,DP时d=64,FP时d=32,HP时d=16;矢量逻辑地址代表VRF的逻辑地址(VRF index),记为x,由指令编码规定,是当前输入SRC/输出DST VRF的地址,在各数据类型下可表示为:DP-VRF:DRx,FP-VRF:Rx,HP-VRF:HRx;数据块数目是一行寄存器含有数据块的数量;标量逻辑地址代表SRF的逻辑地址(SRFindex):记为y,由指令编码规定,是当前输入SRC/输出DST SRF的地址,在各数据类型下可表示为:DP-SRF:DSRy,FP-SRF:SRy,HP-SRF:HSRy。
结合图3,由于VRF包括k个wave,每个wave有n行的存储空间,每行有m个block,因此当寄存器类型为矢量寄存器时,指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数。
结合图4,由于SRF包括有k个wave,与VRF不同的是每个wave里只有一行的存储空间,一行有p个block,因此当寄存器类型为标量寄存器时,指令变量包括线程编号、数据类型以及标量逻辑地址。
在其他实施例中,当寄存器类型为矢量寄存器时,根据指令变量以及矢量计算规则得到矢量数据映射地址,包括:根据行数、线程编号、单元位置以及数据类型、执行模式以及矢量逻辑地址进行计算,得到矢量行地址;根据单元位置、数据类型以及数据块数目进行计算,得到矢量数据块地址;根据单元位置、数据类型以及矢量数据块地址进行计算,得到矢量偏移量。
示例性的,WVR可以根据公式(1),对行数、线程编号、单元位置以及数据类型、执行模式以及矢量逻辑地址进行计算,得到矢量行地址,其中计算公式如公式(1)所示:
其中,lineid1表示矢量行地址,floor为向下取整函数。
示例性的,WVR可以根据公式(2),对单元位置、数据类型以及数据块数目进行计算,得到矢量数据块地址进行计算,得到矢量数据块地址,其中计算公式如公式(2)所示:
其中,blockid1表示矢量数据块地址,floor为向下取整函数。
示例性的,WVR可以根据公式(3),对单元位置、数据类型以及矢量数据块地址进行计算,得到矢量偏移量,其中计算公式如公式(3)所示:
其中,offset1表示为矢量偏移量,floor为向下取整函数。
在上述实施例中,WVR可以根据矢量计算规则以及指令变量精确计算得到矢量行地址、矢量数据块地址以及矢量偏移量,进而准确地对数据进行读写。
在其中一个实施例中,当寄存器类型为标量寄存器时,根据指令变量以及标量规则计算得到标量数据映射地址,包括:根据线程编号,得到标量行地址;根据标量逻辑地址以及数据类型,得到标量数据块地址;根据标量逻辑地址、数据类型以及标量数据块地址,得到标量偏移量。
示例性的,WVR可以直接将线程编号作为标量行地址,其中计算公式如公式(4)所示:
lineid2=w 公式(4)
其中,lineid2表示标量行地址。
示例性的,WVR可以根据公式(5),对标量逻辑地址以及数据类型进行计算,得到标量数据块地址,其中计算公式如公式(5)所示:
其中,blockid2表示标量数据块地址,floor为向下取整函数。
示例性的,WVR可以根据公式(6),对标量逻辑地址、数据类型以及标量数据块地址进行计算,得到标量偏移量,其中计算公式如公式(6)所示:
offset2=y×d-64×blockid2 公式(6)
其中,offset2表示为矢量偏移量,floor为向下取整函数。
在上述实施例中,WVR可以根据标量计算规则以及指令变量精确计算得到标量行地址、标量数据块地址以及标量偏移量,进而准确地对数据进行读写。
在其他实施例中,上述方法还包括:获取进行数据操作所得到的目标数据;将目标数据发送至计算单元,计算单元用于根据目标数据以单指令流多数据流的方式进行计算操作得到计算数据。
其中,目标数据是指WVR根据映射地址进行数据操作得到的数据;计算数据是指由计算单元对目标数据进行计算后得到的数据。
可选地,ALU在得到计算数据之后,还需要将计算数据发送至INOUT(输入输出单元),INOUT判断ALU的计算数据是写入WVR还是发送给其他模块。
其中,单指令流多数据流(Single Instruction Multiple Data,SIMD)是GPU中常采用的线程数据计算处理模式。它采用一个控制器控制多个处理器的管理方式,可同时对一组数据中的每一个分别执行相同的操作,从而实现空间上的并行技术。
示例性的,结合图6,图6为一个实施例中的SIMD32模式示意图,数据操作指令:FP16TDP DR0,HR16,FP16TDP指令是把HP类型数据转化为DP类型数据的指令,本实施例中的含义是把HR16中数据写入到DR0中。设当前指令的线程编号w=2,VRF每个wave中有32行存储空间(n=32)。HR16:s=32,d=16,x=16,m=8,设l=20,带入公式(1)~(3)中可知HR16的三元组(lineid1,blockid1,offset1)=(80,5,0),即HR16的lane20在VRF中的第80行第5个block,offset为0。DR0:s=32,d=64,x=0,m=8,设l=5,带入公式(1)~(3)可知DR0的三元组(lineid1,blockid1,offset1)=(64,5,0)。
示例性的,结合图7,图7为另一个实施例中的SIMD32模式示意图,其中图7(a)为HSR6在SRF中的分布情况;图7(b)为HR2和HR15在VRF中的分布情况。数据操作指令为FADDHR15,HR2,HSR6,FADD指令是计算乘积的指令,本实施例中的含义是把HSR6和HR2相乘,结果保存在HR15中。设当前指令的线程编号w=0,VRF每个wave中有32行存储空间(n=32)。HSR6:y=6,d=16,带入公式(4)~(6)可知HSR6的三元组(lineid2,blockid2,offset2)=(0,1,32),即HSR6在SRF中的第0行第1个block,block内的offset为32bits。HR2:s=32,d=16,x=2,m=8,设l=30,带入公式(1)~(3)可知HR2的三元组(lineid1,blockid1,offset1)=(2,7,32)。HR15:s=32,d=16,x=15,m=8,设l=14,带入公式(1)~(3)可知HR15的三元组(lineid1,blockid1,offset1)=(15,3,32)。
示例性的,结合图8,图8为一个实施例中的SIMD64模式示意图,其中图8(a)为R8和HR1在VRF中的分布情况;图8(b)为SR7在SRF中的分布情况。数据操作指令为FMUL SR7,HR1,R8,FMUL指令是float型数据的乘法操作,例3的含义是把R8和HR1相乘,结果保存在SR7中。设当前指令的线程编号w=5,VRF每个wave中有64行存储空间(n=64)。R8:s=64,d=32,x=8,m=16,设l=2,带入公式(1)~(3)可知R8的三元组(lineid1,blockid1,offset1)=(336,1,0)。HR1:s=64,d=16,x=1,m=16,设l=42,带入公式(1)~(3)可知HR1的三元组(lineid1,blockid1,offset1)=(321,10,32)。SR7:y=7,d=32,带入公式(4)~(6)可知SR7的三元组(lineid2,blockid2,offset2)=(5,3,32)。
在上述实施例中,对目标数据以SIMD模式进行计算可同时对一组数据中的每一个分别执行相同的操作。
在一个示例性实施例中,结合图9所示,图9为一个数据处理方法的流程示意图,图9包括线程寄存单元(WVR,Wave Register Unit)、线程调度单元(WVC,Wave Controller)、计算单元(ALU)、指令缓存(IC,Instruction Cache)以及输入输出单元(INOUT)。
其中,WVR用于暂存线程wave的中间数据,每个wave包含多个子单元lane,能够以SIMD(Single Instruction Multiple Data,单指令流多数据流)模式进行读写和计算;每个WVR可存储8个wave的中间数据;VRF和SRF中的数据就可以放在WVR中;WVC是管理和调度每个线程的控制单元,包括选择线程、取指、译码、发射等步骤;需要在每个时钟周期按照优先级从8个wave中选择一个合适的wave,发送取指指令、对返回的指令译码、发送指令到ALU执行等过程;ALU执行单元的核心部件,完成线程wave的计算功能,能够以SIMD的方式同时处理多个lane的计算,包括算术运算、逻辑运算、位运算、跳转判断、特殊函数等操作;计算结果将写入到WVR或者通过INOUT输出;其中,IC根据请求的指令偏移为每个线程wave读取指令,它是一种高速缓存,包含缓存空间、匹配控制逻辑、Tag单元等部分,缓存空间组织为多个缓存行的形式进行管理。其中,INOUT用于线程wave通过INOUT从外部内存读取输入数据、采样纹理、存储计算结果等操作。
由图9可知指令的执行步骤为:
①线程调度单元WVC选择线程wave,并向IC发送取址指令。
②WVC拿到IC发回的初始指令并对初始指令进行译码,得到数据操作指令,并将数据操作指令发送至WVR。WVR使用公式(1)~(6)的寄存器映射公式计算地址,从VRF/SRF中得到需要的数据,即目标数据,并将目标数据发送至WVC;
③WVC发送指令到ALU执行,ALU使用上一步拿到的数据,以SIMD的方式执行计算操作,得到计算数据;
④ALU将计算结果发送给INOUT,并判断ALU的计算结果是写入WVR还是发送给其他模块;
⑤根据上一步的判断,执行WVR写入操作或通过INOUT将数据发送给其他模块。
在指令执行步骤的步骤二中,寄存器地址映射具体过程如下:
当WVR接收到WVC的读指令时,操作步骤如下:
i.WVR接收到WVC的读取指令;
ii.判断寄存器类型;
iii.当寄存器为VRF时,调用公式(1)~(3)拿到VRF的地址;当寄存器为SRF时,调用公式(4)~(6)拿到SRF的地址;
iv.根据上一步得到的VRF/SRF地址,从SRAM构成地址空间中提取数据;
v.将数据发送给WVR;
当WVR接收到WVC的写指令时,操作和读指令时类似,同样需要判断寄存器类型并调用公式(1)~(6)得到寄存器数据,然后数据写入VRF/SRF中。
需要说明的一点是,因为此方法硬件不能检查VRF/SRF是否超出范围(out-of-range),因此需要在软件执行时用编译器(compiler)判断VRF/SRF的out-of-range问题。
在上述实施例中,首先支持多种类型数据的混合管理,实现了寄存器内空间的共享使用;其次,节省了寄存器的存储空间,减少硬件开销;再次,对矢量和标量数据同时有效,可覆盖计算机内矢量和标量数据的存储。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤会按照具体执行指令的要求进行顺序调整。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据处理方法的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据处理装置实施例中的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种数据处理装置,包括:接收模块100、映射模块200和操作模块300块,其中:
接收模块100,用于接收数据操作指令;所述操作指令是线程调度单元对初始指令进行译码后得到的;所述数据操作指令携带寄存器类型以及指令变量;
映射模块200,用于根据寄存器类型以及指令变量进行计算,得到与数据操作指令对应的映射地址;映射地址包括行地址、数据块地址以及偏移量;
操作模块300,用于基于映射地址中的行地址、数据块地址以及偏移量,在内存中进行数据操作。
在一个实施例中,上述映射模块包括:
矢量单元,用于当所述寄存器类型为矢量寄存器时,根据所述指令变量以及矢量计算规则得到矢量数据映射地址。
标量单元,用于当所述寄存器类型为标量寄存器时,根据所述指令变量以及标量规则计算得到标量数据映射地址。
在一个实施例中,当所述寄存器类型为矢量寄存器时,所述指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数;当所述寄存器类型为标量寄存器时,所述指令变量包括所述线程编号、所述数据类型以及标量逻辑地址。
在一个实施例中,上述矢量单元包括:
矢量行子单元,用于根据所述行数、所述线程编号、所述单元位置以及数据类型、所述执行模式以及所述矢量逻辑地址进行计算,得到矢量行地址。
矢量块子单元,用于根据所述单元位置、所述数据类型以及所述数据块数目进行计算,得到矢量数据块地址。
矢量偏移子单元,用于根据所述单元位置、所述数据类型以及所述矢量数据块地址进行计算,得到矢量偏移量。
在一个实施例中,上述标量单元包括:
标量行子单元,用于根据所述线程编号,得到标量行地址。
标量块子单元,用于根据所述标量逻辑地址以及所述数据类型,得到标量数据块地址。
标量偏移子单元,用于根据所述标量逻辑地址、所述数据类型以及所述标量数据块地址,得到标量偏移量。
在一个实施例中,上述装置还包括:
目标获取模块,用于获取进行数据操作所得到的目标数据。
计算模块,用于将所述目标数据发送至计算单元,所述计算单元用于根据所述目标数据以单指令流多数据流的方式进行计算操作得到计算数据。
上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述任意一个实施例中的方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据处理方法,其特征在于,所述数据处理方法包括:
接收数据操作指令;所述数据操作指令是线程调度单元对初始指令进行译码后得到的;所述数据操作指令携带寄存器类型以及指令变量;
根据所述寄存器类型以及所述指令变量进行计算,得到与所述数据操作指令对应的映射地址;所述映射地址包括行地址、数据块地址以及偏移量;
基于所述映射地址中的所述行地址、所述数据块地址以及所述偏移量,在内存中进行数据操作;
其中,所述根据所述寄存器类型以及所述指令变量进行计算,得到不同数据类型对应的映射地址,包括:
当所述寄存器类型为矢量寄存器时,根据所述指令变量以及矢量计算规则得到矢量数据映射地址;
当所述寄存器类型为标量寄存器时,根据所述指令变量以及标量规则计算得到标量数据映射地址;
当所述寄存器类型为矢量寄存器时,所述指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数;当所述寄存器类型为标量寄存器时,所述指令变量包括所述线程编号、所述数据类型以及标量逻辑地址。
2.根据权利要求1所述的方法,其特征在于,所述当所述寄存器类型为矢量寄存器时,根据所述指令变量以及矢量计算规则得到矢量数据映射地址,包括:
根据所述行数、所述线程编号、所述单元位置以及数据类型、所述执行模式以及所述矢量逻辑地址进行计算,得到矢量行地址;
根据所述单元位置、所述数据类型以及所述数据块数目进行计算,得到矢量数据块地址;
根据所述单元位置、所述数据类型以及所述矢量数据块地址进行计算,得到矢量偏移量。
3.根据权利要求1所述的方法,其特征在于,所述当所述寄存器类型为标量寄存器时,根据所述指令变量以及标量规则计算得到标量数据映射地址,包括:
根据所述线程编号,得到标量行地址;
根据所述标量逻辑地址以及所述数据类型,得到标量数据块地址;
根据所述标量逻辑地址、所述数据类型以及所述标量数据块地址,得到标量偏移量。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法,还包括:
获取进行数据操作所得到的目标数据;
将所述目标数据发送至计算单元,所述计算单元用于根据所述目标数据以单指令流多数据流的方式进行计算操作得到计算数据。
5.一种数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收数据操作指令;所述数据操作指令是线程调度单元对初始指令进行译码后得到的;所述数据操作指令携带寄存器类型以及指令变量;
映射模块,用于根据所述寄存器类型以及所述指令变量进行计算,得到与所述数据操作指令对应的映射地址;所述映射地址包括行地址、数据块地址以及偏移量;
操作模块,用于基于所述映射地址中的所述行地址、所述数据块地址以及所述偏移量,在内存中进行数据操作;
其中,所述映射模块包括:
矢量单元,用于当所述寄存器类型为矢量寄存器时,根据所述指令变量以及矢量计算规则得到矢量数据映射地址;
标量单元,用于当所述寄存器类型为标量寄存器时,根据所述指令变量以及标量规则计算得到标量数据映射地址;
当所述寄存器类型为矢量寄存器时,所述指令变量包括线程编号、执行模式、单元位置、数据类型、矢量逻辑地址、数据块数目以及行数;当所述寄存器类型为标量寄存器时,所述指令变量包括所述线程编号、所述数据类型以及标量逻辑地址。
6.根据权利要求5所述的装置,其特征在于,所述矢量单元包括:
矢量行子单元,用于根据所述行数、所述线程编号、所述单元位置以及数据类型、所述执行模式以及所述矢量逻辑地址进行计算,得到矢量行地址;
矢量块子单元,用于根据所述单元位置、所述数据类型以及所述数据块数目进行计算,得到矢量数据块地址;
矢量偏移子单元,用于根据所述单元位置、所述数据类型以及所述矢量数据块地址进行计算,得到矢量偏移量。
7.根据权利要求5所述的装置,其特征在于,所述标量单元包括:
标量行子单元,用于根据所述线程编号,得到标量行地址;
标量块子单元,用于根据所述标量逻辑地址以及所述数据类型,得到标量数据块地址;
标量偏移子单元,用于根据所述标量逻辑地址、所述数据类型以及所述标量数据块地址,得到标量偏移量。
8.根据权利要求5-7任一项所述的装置,其特征在于,所述装置还包括:
目标获取模块,用于获取进行数据操作所得到的目标数据;
计算模块,用于将所述目标数据发送至计算单元,所述计算单元用于根据所述目标数据以单指令流多数据流的方式进行计算操作得到计算数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211562516.6A CN115861026B (zh) | 2022-12-07 | 2022-12-07 | 数据处理方法、装置、计算机设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211562516.6A CN115861026B (zh) | 2022-12-07 | 2022-12-07 | 数据处理方法、装置、计算机设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115861026A CN115861026A (zh) | 2023-03-28 |
CN115861026B true CN115861026B (zh) | 2023-12-01 |
Family
ID=85670631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211562516.6A Active CN115861026B (zh) | 2022-12-07 | 2022-12-07 | 数据处理方法、装置、计算机设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115861026B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0602359A2 (en) * | 1992-11-03 | 1994-06-22 | International Business Machines Corporation | Architectural enhancements for parallel computer systems |
WO2002084451A2 (en) * | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
CN101876892A (zh) * | 2010-05-20 | 2010-11-03 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
CN112905122A (zh) * | 2021-02-20 | 2021-06-04 | 炬芯科技股份有限公司 | 一种存储数据的方法及装置 |
CN114546890A (zh) * | 2022-02-24 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种系统级空间读写验证的方法、系统、存储介质及设备 |
US11366664B1 (en) * | 2019-12-08 | 2022-06-21 | Blaize, Inc. | Single instruction multiple data (simd) execution with variable width registers |
-
2022
- 2022-12-07 CN CN202211562516.6A patent/CN115861026B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0602359A2 (en) * | 1992-11-03 | 1994-06-22 | International Business Machines Corporation | Architectural enhancements for parallel computer systems |
WO2002084451A2 (en) * | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
CN101876892A (zh) * | 2010-05-20 | 2010-11-03 | 复旦大学 | 面向通信和多媒体应用的单指令多数据处理器电路结构 |
CN108694080A (zh) * | 2017-04-09 | 2018-10-23 | 英特尔公司 | 高效线程组调度 |
US11366664B1 (en) * | 2019-12-08 | 2022-06-21 | Blaize, Inc. | Single instruction multiple data (simd) execution with variable width registers |
CN112905122A (zh) * | 2021-02-20 | 2021-06-04 | 炬芯科技股份有限公司 | 一种存储数据的方法及装置 |
CN114546890A (zh) * | 2022-02-24 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种系统级空间读写验证的方法、系统、存储介质及设备 |
Non-Patent Citations (3)
Title |
---|
基于TMS320F2812定点库函数设计;张萍;;科技经济市场(第08期);全文 * |
基于基地址寄存器映射的数据缓存研究;沈秀红;赵朝君;孟建熠;项晓燕;;计算机工程(第05期);全文 * |
适用于嵌入式应用的多线程顶点处理器设计;申智波;陈杰;刘建;王云;朱;;微电子学与计算机(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115861026A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11710209B2 (en) | Multi-thread graphics processing system | |
JP5096470B2 (ja) | 相対アドレス生成 | |
US10216487B2 (en) | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure | |
US8345053B2 (en) | Graphics processors with parallel scheduling and execution of threads | |
US7783860B2 (en) | Load misaligned vector with permute and mask insert | |
US8615646B2 (en) | Unanimous branch instructions in a parallel thread processor | |
CN102354300B (zh) | 存取方法以及共享存储器系统 | |
CN102176241A (zh) | 使用统一着色器的图形处理结构 | |
BRPI0807951B1 (pt) | Processador de multimídia multi-encadeado sob demanda | |
JP2008003708A (ja) | 映像処理エンジンおよびそれを含む映像処理システム | |
TWI670968B (zh) | 影像處理器輸入輸出單元 | |
WO2017185392A1 (zh) | 一种用于执行向量四则运算的装置和方法 | |
US20100241834A1 (en) | Method of encoding using instruction field overloading | |
US20180329685A1 (en) | Circuit to perform dual input value absolute value and sum operation | |
US20090015589A1 (en) | Store Misaligned Vector with Permute | |
CN115861026B (zh) | 数据处理方法、装置、计算机设备、存储介质 | |
US20240004702A1 (en) | Thread construction method and device | |
CN116308989B (zh) | 一种全同态快速数论变换的gpu加速方法 | |
TWI508023B (zh) | 平行及向量式吉伯特-詹森-科西(gilbert-johnson-keerthi)圖形處理技術 | |
CN109087381B (zh) | 一种基于双发射vliw的统一架构渲染着色器 | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
CA1283738C (en) | Data processor | |
US8427490B1 (en) | Validating a graphics pipeline using pre-determined schedules | |
JP5608932B2 (ja) | 並列プロセッサ用のアドレス指定装置 | |
Kidwai et al. | Image magnification and reduction using high order filtering on the cell broadband engine |
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 |