CN114298890A - 数据处理装置及其方法 - Google Patents
数据处理装置及其方法 Download PDFInfo
- Publication number
- CN114298890A CN114298890A CN202111464745.XA CN202111464745A CN114298890A CN 114298890 A CN114298890 A CN 114298890A CN 202111464745 A CN202111464745 A CN 202111464745A CN 114298890 A CN114298890 A CN 114298890A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data processing
- cached
- shader
- processed
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 94
- 238000000034 method Methods 0.000 title abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 121
- 238000003672 processing method Methods 0.000 claims description 27
- 238000004364 calculation method Methods 0.000 claims description 9
- 239000000872 buffer Substances 0.000 description 32
- 230000008569 process Effects 0.000 description 11
- 238000003491 array Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及一种数据处理装置及其方法。该数据处理装置包括内存储单元及着色器一级缓存;所述内存储单元用于存储待缓存矩阵,所述待缓存矩阵至少包括第一元素及第二元素,所述第一元素及所述第二元素按照元素为顺序存储于所述内存储单元中;其中所述第一元素位于所述待缓存矩阵的首行,所述第二元素位于所述待缓存矩阵的与所述首行相邻的下一行;所述着色器一级缓存与所述内存储单元相连接,用于获取所述待缓存矩阵,得到按照元素为顺序进行存储的待处理矩阵,以及存储所述待处理矩阵。该数据处理装置能够提升访问内存储单元的效率,减少无效数据占用带宽;使硬件流水线更加紧密,减少空闲时钟周期;着色器一级缓存可以较小,降低硬件成本。
Description
技术领域
本申请涉及计算机存储技术领域,特别是涉及一种数据处理装置及其方法。
背景技术
在图形绘制流水线(Graphics pipeline)和计算流水线(Compute pipeline)中,会用到一种叫做结构化缓冲区(Structured Buffer)的资源,着色器(Shader)会将结构化缓冲区当作可访问资源进行频繁的读写操作。
因此,如何高效地访问结构化缓冲区是影响着色器执行效率的关键所在。
发明内容
基于此,有必要针对上述技术问题和/或其他技术问题,提供一种数据处理装置、方法、电子设备和计算机可读存储介质。
根据一些实施例,本申请提供一种数据处理装置,包括内存储单元及着色器一级缓存;
所述内存储单元用于存储待缓存矩阵,所述待缓存矩阵至少包括第一元素及第二元素,所述第一元素及所述第二元素按照元素为顺序存储于所述内存储单元中;其中
所述第一元素位于所述待缓存矩阵的首行,所述第二元素位于所述待缓存矩阵的与所述首行相邻的下一行;
所述着色器一级缓存与所述内存储单元相连接,用于获取所述待缓存矩阵,得到按照元素为顺序进行存储的待处理矩阵,以及存储所述待处理矩阵;其中
所述第一元素位于所述待处理矩阵的首行,所述第二元素位于所述待处理矩阵的与所述首行相邻的下一行。
本申请提供的数据处理装置中,内存储单元所存储的待缓存矩阵是按照元素为顺序进行存储的,即第一元素位于待缓存矩阵的首行,第二元素位于与首行相邻的下一行进行存储;这样在着色器一级缓存获取待缓存矩阵时,无需进行元素的挑选,可以直接从着色器一级缓存中获取需要的元素形成待处理矩阵;提升访问内存储单元的效率,减少无效数据占用带宽;内存储单元访问效率的提升,可以使硬件流水线更加紧密,减少空闲时钟周期;进一步的,对于着色器一级缓存来说,可以缩小在同一时钟周期内需要锁住的空间,因此本申请提供的数据处理装置需要的着色器一级缓存可以较小,降低硬件成本。
在其中一个实施例中,所述数据处理装置还包括数据处理单元;
所述数据处理单元与所述着色器一级缓存相连接,用于对所述待处理矩阵进行数据处理。
在其中一个实施例中,所述数据处理装置还包括控制逻辑单元;
所述控制逻辑单元与所述着色器一级缓存及所述数据处理单元相连接,用于对所述待处理矩阵进行读操作和/或写操作。
在其中一个实施例中,所述数据处理装置还包括虚拟地址计算单元;
所述虚拟地址计算单元与所述内存储单元及所述着色器一级缓存相连接,用于计算待缓存矩阵的虚拟地址,以使所述着色器一级缓存根据所述虚拟地址,获取所述待缓存矩阵。
在其中一个实施例中,待缓存矩阵包括结构化缓冲数据。
基于同样的发明构思,本申请还根据一些实施例,提供一种数据处理方法,所述数据处理方法包括:
获取待缓存矩阵,所述待缓存矩阵至少包括第一元素及第二元素,所述第一元素及所述第二元素按照元素为顺序存储于所述内存储单元中;其中,所述第一元素位于所述待缓存矩阵的首行,所述第二元素位于所述待缓存矩阵的与所述首行相邻的下一行;
得到按照元素为顺序进行存储的待处理矩阵,并存储;
所述对所述待缓存矩阵中的元素进行重新排列以得到按照元素为顺序进行存储的待处理矩阵,包括:
获取所述第一元素并存储;
获取所述第二元素并存储。
本申请提供的数据处理方法中,内存储单元所存储的待缓存矩阵是按照元素为顺序进行存储的,即第一元素位于待缓存矩阵的首行,第二元素位于与首行相邻的下一行进行存储;这样在获取待缓存矩阵时,无需进行元素的挑选即可形成待处理矩阵;提升访问内存储单元的效率,减少无效数据占用带宽;内存储单元访问效率的提升,可以使硬件流水线更加紧密,减少空闲时钟周期;进一步的,对于着色器一级缓存来说,可以缩小在同一时钟周期内需要锁住的空间,因此本申请提供的数据处理方法需要的着色器一级缓存可以较小,降低硬件成本。
在其中一个实施例中,得到所述待处理矩阵之后,所述数据处理方法还包括:
对所述待处理矩阵进行数据处理。
在其中一个实施例中,所述对所述待处理矩阵进行数据处理,包括:
获取控制逻辑;
基于所述控制逻辑对所述待处理矩阵进行读操作和/或写操作。
在其中一个实施例中,其特征在于,所述数据处理方法还包括:
计算存储于所述内存储单元中的所述待缓存矩阵的虚拟地址;
所述基于所述控制逻辑对所述待处理矩阵进行读和/或写操作,包括:
基于所述控制逻辑,根据所述虚拟地址,获取所述待缓存矩阵。
在其中一个实施例中,所述待缓存矩阵包括结构化缓冲数据。
附图说明
图1为一个待缓存的数据矩阵在结构化缓冲区中的排布方式及对应的着色器线程读写关系的示意图;
图2为另一个待缓存的数据矩阵在结构化缓冲区中的排布方式及对应的着色器线程读写关系的示意图;
图3为本申请其中一个实施例提供的数据处理装置的结构示意图;
图4为本申请其中一个实施例提供的数据处理装置中,待处理矩阵在着色器一级缓存中的排布方式及对应的数据处理单元读写关系的示意图;
图5为本申请另一个实施例提供的数据处理装置中,待处理矩阵在着色器一级缓存中的排布方式的示意图;
图6为本申请其中一个实施例提供的数据处理方法的流程图;
图7为本申请其中一个实施例提供的数据处理方法中,步骤S601的流程图;
图8为本申请其中一个实施例提供的数据处理方法中,对待处理矩阵进行数据处理的步骤的流程图。
附图标记说明:
10、内存储单元;20、着色器一级缓存;30、数据处理单元;40、控制逻辑单元;50、虚拟地址计算单元;60、引擎。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在图形绘制流水线(Graphics pipeline)和计算流水线(Compute pipeline)中,会用到一种叫做结构化缓冲区(Structured Buffer)的资源。一个结构化缓冲区通常可以对应内存上一块连续的内存块。和普通的缓冲区资源不同,结构化缓冲区资源有一个结构大小(Stride),因此它表示的是一个结构化数组;换而言之,结构化缓冲区是包含大小相等的元素的缓冲区。使用具有一个或多个成员类型的结构来定义元素。着色器(Shader)会将结构化缓冲区当作可访问资源进行频繁的读写操作。
以具有三个成员类型的结构为例:
此时,可以使用上述结构声明如下所示的结构化缓冲区:
StructuredBuffer<MyStruct>mySB;
也可以用索引和引用来访问结构化缓冲区的单个成员,如下所示:
float4 myColor=mySb[27].Color;
在此基础上,着色器应当具有支持三条关于结构化缓冲区的指令,如下所示:
dcl_uav_structured dstUAV,structByteStride
ld_structured dst0,srcAddress,srcByteOffset,srcUAV.[mask]
store_structured dstUAV.[mask],dstAddress,dstByteOffset,src0
上述指令中,第一条是声明一个结构化缓冲区,"structByteStride"就是这个结构化缓冲区的步幅。第二条是读指令,可以从指定的结构化缓冲区里读取1至4个32bits的元素,"srcAddress"是结构化缓冲区的索引,"srcByteOffset"是结构体内部的偏移,"[mask]"可以是x、xy、xyz或xyzw,表明是读取几个元素。第三条是写指令,向结构化缓冲区写1至4个32bits数据,"dstAddress"是结构化缓冲区的索引,"dstByteOffset"是结构体内部的偏移,"[mask]"可以是x、xy、xyz或xyzw,表明写到内存的元素个数。
通常,着色器为了提高性能,采用数据并行的思想,也就是单指令多数据(single-instruction multi-data)。因此,如何高效地访问结构化缓冲区是影响着色器执行效率的关键所在。
本领域技术人员应当知晓,许多应用程序场景要求能够用索引和引用将数据读出或写入结构化缓冲区中,而对于内存的读写通常来讲都是针对一段连续的空间。
下面以一个包含16个处理单元的着色器线程(Shader thread)为例,假设着色器一个线程可以同时处理16个数据,即有16个处理单元(Process unit),那么当结构化数组中只有一种元素时,待缓存的数据矩阵在结构化缓冲区中的排布方式(Memory layout)及对应的着色器线程读写关系可以如图1所示。
如图1所示的一个着色器线程可以同时处理16个数据,即有16个处理单元,一个结构化数组中只有一种元素R,其中每个处理单元读写4个字节(4bytes),那么这个着色器对结构化缓冲区进行访问时是不会浪费带宽的,它能够连续读写16个连续的32bits位置,即连续的512bits,此时所有的数据都是有效的。
但是当结构化数组变宽时,待缓存的数据矩阵在结构化缓冲区中的排布方式及对应的着色器线程读写关系可能如图2所示。
如图2所示一个结构化数组中包括两种元素R和G,假设着色器依然是一个线程可以同时处理16个数据,即有16个处理单元,每个处理单元读写4个字节,由于着色器通常采用的是单指令多数据的并行模式,此时这个着色器对结构化缓冲区进行访问以处理R元素时,需要交互1024bits的数据,其中有一半的数据是无效的。
由此可见,当结构化数组更宽,包含元素更多的时候,读写的无效数据也变得更多;而且从结构化数组中挑选真正被用到的元素,控制逻辑也会更复杂;基于传统的数据排放方式,对结构化缓冲区进行访问的效率很低,无效数据占用了带宽,进而会影响到整个硬件的性能。
鉴于上述问题,本申请根据一些实施例,提供一种数据处理装置,请参阅图3,该数据处理装置可以包括内存储单元10及着色器一级缓存20。
具体来说,内存储单元10用于存储待缓存矩阵,该待缓存矩阵至少可以包括第一元素及第二元素,且第一元素及第二元素是按照元素为顺序存储于内存储单元10中的;其中,第一元素位于待缓存矩阵的首行,第二元素位于待缓存矩阵的与首行相邻的下一行;着色器一级缓存20与内存储单元10相连接,用于获取待缓存矩阵,得到按照元素为顺序进行存储的待处理矩阵,以及存储待处理矩阵;其中,第一元素位于待处理矩阵的首行,第二元素位于待处理矩阵的与首行相邻的下一行。
本申请提供的数据处理装置中,内存储单元所存储的待缓存矩阵是按照元素为顺序进行存储的,即第一元素位于待缓存矩阵的首行,第二元素位于与首行相邻的下一行进行存储;这样在着色器一级缓存获取待缓存矩阵时,无需进行元素的挑选,可以直接从着色器一级缓存中获取需要的元素形成待处理矩阵;提升访问内存储单元的效率,减少无效数据占用带宽;内存储单元访问效率的提升,可以使硬件流水线更加紧密,减少空闲时钟周期;进一步的,对于着色器一级缓存来说,可以缩小在同一时钟周期内需要锁住的空间,因此本申请提供的数据处理装置需要的着色器一级缓存可以较小,降低硬件成本。
可以理解,本申请中涉及的第一元素与第二元素,可以为同一种元素,也可以为不同的元素,本申请对此并不做限定;本申请对于待缓存矩阵的数据形式并不做具体限定,待缓存矩阵的数据形式可以包括但不仅限于结构化缓冲数据。
着色器一级缓存20可以为服务于着色器的缓存,能够用于隐藏数据处理的延时,同时能够用于存放各种各样的数据,譬如结构化缓冲数据。
请继续参阅图3,在其中一个实施例中,该数据处理装置还可以包括数据处理单元30;数据处理单元30与着色器一级缓存20相连接,用于对待处理矩阵进行数据处理。
本申请对于数据处理单元30对待处理矩阵进行数据处理的形式并不做具体限定;可以理解,数据处理单元30可以对待处理矩阵进行包括但不限于加法、移位或乘法等数据处理。
下面以一个每个着色器线程包含16个数据处理单元30(Process unit)的着色器为例。如图4所示,当着色器访问的着色器一级缓存20的一个结构化数组中包含两种元素(G和R)的时候,待处理矩阵在着色器一级缓存20中的排布方式(Memory layout)及对应的数据处理单元30读写关系可以如图4所示。
于上述实施例提供的数据处理装置中,在一个时钟周期内就能够获取16个G元素或16个R元素,从而就能够开始执行着色器流水线了,也就是说着色器能够更加高效地访问着色器一级缓存,使得着色器流水线能够更加紧密,减少空闲时钟周期;同时,于上述实施例提供的数据处理装置中,两个着色器线程则可以包含32个数据处理单元30,其中第一着色器线程包含16个数据处理单元30,且第二着色器线程包含16个数据处理单元30;在一个示例中,在第一着色器线程处理16个R元素的同时,第二着色器线程处理16个G元素;也就是说只要数据准备就绪,两个着色器线程能够并行工作,利用数据并行的方式提升了数据处理装置的性能。
还是以一个包含16个数据处理单元30的着色器线程为例,对比图2与如图4,同样是存放两种元素的着色器一级缓存20,如果数据按照传统技术中如图2所示的排布方式在着色器一级缓存20中存放,当指令要求读取两种元素(mask=xy)时,着色器需要从内存储单元10中读回16对RG,由于第一个着色器线程只处理R,着色器为了避免将G元素丢掉,从而需要把16对RG全部存储于着色器一级缓存20里,这样当第二个第一个着色器线程处理G时,无需再向内存储单元10发送读请求,可以直接使用着色器一级缓存20中的G元素;同样,对于写请求,为了使得写操作尽量保持连续,以减少写操作的次数,也需要用到着色器一级缓存20,将16对RG拼凑齐全再一次性写入内存储单元10中,否则就要跳跃式地先写16个R元素,再写16个G元素。
本申请一些可能的实施例提供的数据处理装置,如图4所示,通过将一个结构化数组中的同一种元素排布在一起,排布完同一种元素的所有数据后,再排布下一种元素,这样无论着色器需要读/写R元素还是G元素,都只需要读/写512bits数据即可,也就是说,着色器一级缓存20所需的空间可以适当减小,降低硬件成本。
需要说明的是,对于数据处理装置需要的着色器一级缓存20具体能够减小多少,是根据该数据处理装置具体应用的场景决定的;本领域技术人员可以综合考虑所有的应用场景,最终决定着色器一级缓存20的大小。
在其中一个实施例中,硬件设计中着色器的每个线程有n个处理单元,在实际应用场景中最常见的着色器一级缓存20包含有m种元素,每个元素占4个bytes,那么本领域技术人员可以考虑减少着色器一级缓存20的大小是4*(m-1)*nbytes。
当然本领域技术人员不能完全套用这个公式,因为着色器的着色器一级缓存20还有一部分功能是帮助隐藏着色器执行的延时。当着色器所有的数据处理单元30都在运行时,内存储单元10回给着色器的数据是没有办法立马开始执行运算的,这个时候为了防止总线(data bus)的堵塞,需要将内存储单元10回给着色器的数据存放在着色器一级缓存20中。因此在上述实施例提供的数据处理装置中,着色器的着色器一级缓存20可以减小,但是具体减小多少,需要综合考虑硬件特性和应用场景。
请继续参阅图3,在其中一个实施例中,该数据处理装置还可以包括控制逻辑单元40;控制逻辑单元40与着色器一级缓存20及数据处理单元30相连接,用于控制数据处理单元30对待处理矩阵进行读操作和/或写操作。
具体来说,控制逻辑单元40可以用于从着色器一级缓存20中挑选出多个结构化数组的同一种元素送去处理;也就是说,可以通过控制逻辑单元40将待处理矩阵从着色器一级缓存20读取至数据处理单元30,同样的,也可以通过控制逻辑单元40将处理结果从数据处理单元30写入着色器一级缓存20。
于上述实施例提供的数据处理装置中,控制逻辑单元无需跳跃地对待处理矩阵进行读操作和/或写操作,也就是说无需进行元素挑选,无论一个结构化数组中包含了多少种元素,控制逻辑单元都不需要进行元素的挑选,因此控制逻辑单元能够得到简化,有效降低硬件成本。
请继续参阅图3,在其中一个实施例中,该数据处理装置还可以包括虚拟地址计算单元50;虚拟地址计算单元50与内存储单元10及着色器一级缓存20相连接,用于计算待缓存矩阵的虚拟地址,以使着色器一级缓存20可以根据该虚拟地址,获取待缓存矩阵。
具体来说,本申请中涉及的虚拟地址,是指待缓存矩阵在内存储单元10中的虚拟地址;也就是说,虚拟地址计算单元50可以用于对待缓存矩阵在内存储单元10中对应的虚拟地址进行计算,着色器可以根据该虚拟地址获取待缓存矩阵,作为待处理矩阵存储于着色器一级缓存20中。
可以理解,本申请对于虚拟地址计算单元50计算虚拟地址的具体方式并不做限定;在其中一个实施例中,虚拟地址计算单元50可以基于如下公式计算虚拟地址:
X_id=Base+Offset;
Offset=(struct_id>>5)*32*stride+((byte_offset_in_struct>>2)*32+struct_id&0×1f)*4;
其中,Base为当前资源的起始地址;struct_id为索引;stride为一个结构化数组的大小,也称步幅;byte_offset_in_struct是引用结构化数组本身内部的偏移。
在上述实施例的基础上,对于需要访问多种元素的情况,其他元素的虚拟地址可以通过元素X的地址加上固定的偏移得到:
Channel_offset=(32*32bit/channel)>>3=128byte;
Y_VA=X_VA+channel_offset;
Z_VA=Y_VA+channel_offset;
W_VA=Z_VA+channel_offset。
下面结合内存储单元10带宽和着色器执行模式,对更加通用化的数据处理装置进行详细说明。
在其中一个实施例中,如图5所示,对于一个元素占4个bytes,具有n+1种元素的结构化数组,本实施例提供的数据处理装置能够将32个结构化数组(S0至S31)的同一种元素放在一起,再放下一种元素,直至放完前32个结构化数组;然后再以相同的方式存放后面的32个结构化数组,以此类推。
上述实施例提供的数据处理装置中的每一个结构化数组的所有元素在地址空间上不再连续,而是32个结构化数组的同一种元素在地址空间上连续,能够很好地适应一个着色器线程有32个数据处理单元30的着色器。
可以理解,本申请对于着色器线程的具体大小并不做限定;在其他实施例中,一个着色器线程也可以有64、128或更多个数据处理单元30。
本申请对于数据处理单元30的个数也并不做限定;譬如,内存储单元10的带宽如果是1024bits,每次读/写操作均可获取32个结构化数组的一个元素,此时如果着色器线程具有32个数据处理单元30,受限于带宽,即使将64个结构化数组的同一种元素放在一起,仍然需要读/写两次,需要两个时钟周期,本领域技术人员在这里可以选择将32个结构化数组的同一种元素放在一起。
可以理解,在硬件设计上,可以根据该数据处理装置具体应用的场景适应性地选择排布方式,也就是说,可以综合考虑所有的应用场景,最终决定将多少个结构化数组的同一种元素排放在一起,可以达到最佳的访问效率。
请继续参阅图3,在其中一个实施例中,该数据处理装置还可以包括多个引擎60(例如图3中所示Engine0至EnigineN),引擎60与内存储单元10相连接,内存储单元10会服务于多个引擎60。由于访问着色器一级缓存的效率提高,减少了无效数据占用带宽,内存储单元10也就能够更好地服务各引擎60。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的数据处理装置的限定,具体的数据处理装置可以包括比图中所示更多或更少的结构,或者组合某些结构,或者具有不同的结构布置。
基于同样的发明构思,本申请还根据一些实施例,提供一种数据处理方法。
请参阅图6,该数据处理方法可以包括如下步骤:
S601:获取待缓存矩阵;具体的,该待缓存矩阵至少包括第一元素及第二元素,第一元素及第二元素按照元素为顺序存储于内存储单元中。
S602:得到按照元素为顺序进行存储的待处理矩阵,并存储。
可以理解,按照元素为顺序进行存储的待缓存矩阵可以指的是如下排布方式:第一元素位于待缓存矩阵的首行,第二元素位于待缓存矩阵的与首行相邻的下一行;举例来说,在其中一个实施例中,按照元素为顺序进行存储的待缓存矩阵可以如图4所示。
对于步骤S602,在其中一个实施例中,步骤S602可以包括获取第一元素并存储的步骤;以及获取第二元素并存储的步骤。
本申请提供的数据处理方法中,内存储单元所存储的待缓存矩阵是按照元素为顺序进行存储的,即第一元素位于待缓存矩阵的首行,第二元素位于与首行相邻的下一行进行存储;这样在获取待缓存矩阵时,无需进行元素的挑选即可形成待处理矩阵;提升访问内存储单元的效率,减少无效数据占用带宽;内存储单元访问效率的提升,可以使硬件流水线更加紧密,减少空闲时钟周期;进一步的,对于着色器一级缓存来说,可以缩小在同一时钟周期内需要锁住的空间,因此本申请提供的数据处理方法需要的着色器一级缓存可以较小,降低硬件成本。
需要说明的是,本申请提供的数据处理方法,可以应用于前述任一实施例提供的数据处理装置,因此前述数据处理装置所能实现的技术效果,该数据处理方法也均能实现,此处不再详述。
对于步骤S601,请结合图6中的S601参阅图7,在其中一个实施例中,步骤S601可以具体包括如下步骤:
S701:计算存储于内存储单元10中的待缓存矩阵的虚拟地址。
S702:根据该虚拟地址,获取待缓存矩阵。
在其中一个实施例中,该数据处理方法在步骤S602之后,还可以包括对待处理矩阵进行数据处理的步骤。
在其中一个实施例中,如图8所示,对待处理矩阵进行数据处理的步骤可以具体包括如下步骤:
S801:获取控制逻辑。
S802:基于控制逻辑对待处理矩阵进行读操作和/或写操作。
应该理解的是,虽然图6至图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图6至图8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请还根据一些实施例,提供一种电子设备,该电子设备可以包括处理器以及存储器,一个或多个计算机程序被存储在该存储器中并被配置为由该处理器能够执行以实现前述任一实施例提供的数据处理方法。
需要说明的是,该电子设备可以是终端。该电子设备可以包括通过系统总线连接的处理器、存储器、通信接口、显示屏和/或输入装置等等。其中,该电子设备的处理器可以用于提供计算和控制能力。该电子设备的存储器可以包括但不限于非易失性存储介质和内存储器等等。该非易失性存储介质可以存储有操作系统和计算机程序。该内存储器可以为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现前述任一实施例提供的数据处理方法的步骤。
基于同样的发明构思,本申请还根据一些实施例,提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序代码,在该程序代码被处理器运行时能够执行前述任一实施例提供的数据处理方法。
本领域普通技术人员可以理解,实现上述实施例提供的数据处理方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,前述计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如前述数据处理方法任一实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据处理装置,其特征在于,包括内存储单元及着色器一级缓存;
所述内存储单元用于存储待缓存矩阵,所述待缓存矩阵至少包括第一元素及第二元素,所述第一元素及所述第二元素按照元素为顺序存储于所述内存储单元中;其中
所述第一元素位于所述待缓存矩阵的首行,所述第二元素位于所述待缓存矩阵的与所述首行相邻的下一行;
所述着色器一级缓存与所述内存储单元相连接,用于获取所述待缓存矩阵,得到按照元素为顺序进行存储的待处理矩阵,以及存储所述待处理矩阵;其中
所述第一元素位于所述待处理矩阵的首行,所述第二元素位于所述待处理矩阵的与所述首行相邻的下一行。
2.根据权利要求1所述的数据处理装置,其特征在于,还包括数据处理单元;
所述数据处理单元与所述着色器一级缓存相连接,用于对所述待处理矩阵进行数据处理。
3.根据权利要求2所述的数据处理装置,其特征在于,还包括控制逻辑单元;
所述控制逻辑单元与所述着色器一级缓存及所述数据处理单元相连接,用于对所述待处理矩阵进行读操作和/或写操作。
4.根据权利要求1所述的数据处理装置,其特征在于,还包括虚拟地址计算单元;
所述虚拟地址计算单元与所述内存储单元及所述着色器一级缓存相连接,用于计算待缓存矩阵的虚拟地址,以使所述着色器一级缓存根据所述虚拟地址,获取所述待缓存矩阵。
5.根据权利要求1所述的数据处理装置,其特征在于,所述待缓存矩阵包括结构化缓冲数据。
6.一种数据处理方法,其特征在于,所述数据处理方法包括:
获取待缓存矩阵,所述待缓存矩阵至少包括第一元素及第二元素,所述第一元素及所述第二元素按照元素为顺序存储于内存储单元中;其中
所述第一元素位于所述待缓存矩阵的首行,所述第二元素位于所述待缓存矩阵的与所述首行相邻的下一行;
得到按照元素为顺序进行存储的待处理矩阵,并存储;
所述得到按照元素为顺序进行存储的待处理矩阵,包括:
获取所述第一元素并存储;
获取所述第二元素并存储。
7.根据权利要求6所述的数据处理方法,其特征在于,得到所述待处理矩阵之后,所述数据处理方法还包括:
对所述待处理矩阵进行数据处理。
8.根据权利要求7所述的数据处理方法,其特征在于,所述对所述待处理矩阵进行数据处理,包括:
获取控制逻辑;
基于所述控制逻辑对所述待处理矩阵进行读操作和/或写操作。
9.根据权利要求6所述的数据处理方法,其特征在于,所述获取待缓存矩阵,包括:
计算存储于所述内存储单元中的所述待缓存矩阵的虚拟地址;
根据所述虚拟地址,获取所述待缓存矩阵。
10.根据权利要求6所述的数据处理方法,其特征在于,所述待缓存矩阵包括结构化缓冲数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111464745.XA CN114298890B (zh) | 2021-12-02 | 2021-12-02 | 数据处理装置及其方法 |
US17/671,890 US11790592B2 (en) | 2021-12-02 | 2022-02-15 | Data process apparatus for to-be-cached matrix and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111464745.XA CN114298890B (zh) | 2021-12-02 | 2021-12-02 | 数据处理装置及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114298890A true CN114298890A (zh) | 2022-04-08 |
CN114298890B CN114298890B (zh) | 2024-01-30 |
Family
ID=80965919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111464745.XA Active CN114298890B (zh) | 2021-12-02 | 2021-12-02 | 数据处理装置及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11790592B2 (zh) |
CN (1) | CN114298890B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887183A (en) * | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
US7750915B1 (en) * | 2005-12-19 | 2010-07-06 | Nvidia Corporation | Concurrent access of data elements stored across multiple banks in a shared memory resource |
US20150054827A1 (en) * | 2013-08-23 | 2015-02-26 | Nvidia Corporation | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline |
US20150186271A1 (en) * | 2013-12-30 | 2015-07-02 | Michael Henry Kass | Memory System Address Modification Policies |
CN106603082A (zh) * | 2016-12-12 | 2017-04-26 | 中国人民解放军国防科学技术大学 | 通用型高速ldpc码编码方法及编码器 |
CN108121688A (zh) * | 2017-12-15 | 2018-06-05 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN110377534A (zh) * | 2018-04-13 | 2019-10-25 | 华为技术有限公司 | 数据处理方法及装置 |
CN112069460A (zh) * | 2020-09-18 | 2020-12-11 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101893796B1 (ko) * | 2012-08-16 | 2018-10-04 | 삼성전자주식회사 | 동적 데이터 구성을 위한 방법 및 장치 |
US10896043B2 (en) * | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
-
2021
- 2021-12-02 CN CN202111464745.XA patent/CN114298890B/zh active Active
-
2022
- 2022-02-15 US US17/671,890 patent/US11790592B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887183A (en) * | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
US7750915B1 (en) * | 2005-12-19 | 2010-07-06 | Nvidia Corporation | Concurrent access of data elements stored across multiple banks in a shared memory resource |
US20150054827A1 (en) * | 2013-08-23 | 2015-02-26 | Nvidia Corporation | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline |
US20150186271A1 (en) * | 2013-12-30 | 2015-07-02 | Michael Henry Kass | Memory System Address Modification Policies |
CN106603082A (zh) * | 2016-12-12 | 2017-04-26 | 中国人民解放军国防科学技术大学 | 通用型高速ldpc码编码方法及编码器 |
CN108121688A (zh) * | 2017-12-15 | 2018-06-05 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN110377534A (zh) * | 2018-04-13 | 2019-10-25 | 华为技术有限公司 | 数据处理方法及装置 |
CN112069460A (zh) * | 2020-09-18 | 2020-12-11 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
Non-Patent Citations (1)
Title |
---|
贾丹;陈庆奎;: "C870流处理器上的大型矩阵计算方法", 微计算机信息, no. 24 * |
Also Published As
Publication number | Publication date |
---|---|
CN114298890B (zh) | 2024-01-30 |
US20230177761A1 (en) | 2023-06-08 |
US11790592B2 (en) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
US8327123B2 (en) | Maximized memory throughput on parallel processing devices | |
US8935507B2 (en) | System and method for storing multiple copies of data in a high speed memory system | |
US7640284B1 (en) | Bit reversal methods for a parallel processor | |
US9262174B2 (en) | Dynamic bank mode addressing for memory access | |
US20140359225A1 (en) | Multi-core processor and multi-core processor system | |
US20060149937A1 (en) | Register file regions for a processing system | |
US7877573B1 (en) | Work-efficient parallel prefix sum algorithm for graphics processing units | |
US11392488B2 (en) | Optimizing storage of application data in memory | |
US11308171B2 (en) | Apparatus and method for searching linked lists | |
US10599586B2 (en) | Information processing apparatus, memory control circuitry, and control method of information processing apparatus | |
US20110072438A1 (en) | Fast mapping table register file allocation algorithm for simt processors | |
CN117312330B (zh) | 基于便签式存储的向量数据聚集方法、装置及计算机设备 | |
KR20150101870A (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
US8478946B2 (en) | Method and system for local data sharing | |
Yzelman | Generalised vectorisation for sparse matrix: vector multiplication | |
CN114298890B (zh) | 数据处理装置及其方法 | |
US10353708B2 (en) | Strided loading of non-sequential memory locations by skipping memory locations between consecutive loads | |
CN116360672A (zh) | 访问存储器的方法、装置和电子设备 | |
CN110147248B (zh) | 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和系统 | |
US20160140034A1 (en) | Devices and methods for linked list array hardware implementation | |
KR101967857B1 (ko) | 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법 | |
CN112783823A (zh) | 共享代码的系统与代码共享方法 | |
KR102356704B1 (ko) | 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 | |
CN117312182B (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 |