基于片上缓存的数据访问方法、装置及转置方法和装置

文档序号:34227607发布日期:2023-05-24 10:21阅读:57来源:国知局
基于片上缓存的数据访问方法、装置及转置方法和装置

本发明属于数据处理,具体涉及一种基于片上缓存的数据访问方法、装置及转置方法和装置。


背景技术:

1、在大规模信号处理领域中,要处理的矩阵规模较大,往往会达到几百mb的规模,需要分多个数据批次进行处理。并且信号矩阵经常要进行列向的数据处理,例如:列向fft和列向共轭运算等。

2、另一方面,基于simd(全称为单指令多数据流)计算模式的向量处理器常被用于处理向量和矩阵类的计算任务。它通过把多个要执行相同指令操作的操作数据打包到大型寄存器里,一并进行访存和运算操作来实现较高的计算密度。然而simd操作在面临矩阵列向访问时,因为数据元素的非连续存放导致操作数据无法打包获取,直接降低向量处理器的运算效率。

3、此外,传统的矩阵转置是通过dma按行读取放到片上缓存,然后按列存回到ddr存储器。列向存回的过程中,由于数据在ddr上不连续,ddr要激活多个访问通道降低数据传输带宽,最终成为整体处理流程的性能瓶颈。


技术实现思路

1、鉴于上述的分析,本发明旨在公开了一一种基于片上缓存的数据访问方法、装置及转置方法和装置,提升向量处理器在访存矩阵数据时获取列向数据的性能,提高矩阵转置的效率。

2、本发明公开了一种基于片上缓存的数据访问方法,包括以下步骤:

3、步骤s1、采用支持矩阵传输的块状结构dma,按块状批量从ddr中读出数据块;采用行向写入模式或列向写入模式将所述数据块写入到阵列式片上缓存中;

4、在行向写入模式下,将数据块中数据逐行连续的写入到缓存中;

5、在列向写入模式下,将数据块中数据逐行分别的写入到缓存中各对应的行中,使缓存数据与数据块保持相同的行列结构;

6、步骤s2、对于阵列式片上缓存中缓存数据,根据向量处理器的访存请求,采用行向取出模式或列向取出模式进行并行数据取出;

7、在行向取出模式下,向量处理器按缓存数据行向地址连续的方式顺序从缓存中取出数据后进行simd向量数据输出;

8、在列向取出模式下,向量处理器按缓存数据列向地址相同并行顺序从缓存各行地址中取数进行simd合并后,进行simd向量数据输出。

9、进一步地,所述数据访问方法包括三种数据传输模式:

10、模式一、步骤s1采用行向写入模式,步骤s2采用行向写出模式;实现数据块的正常数据传输;

11、模式二、步骤s1采用列向写入模式,步骤s2采用列向写出模式;实现数据块的转置数据传输;

12、模式三、步骤s1采用列向写入模式,步骤s2采用行向写出模式;实现数据块的正常数据传输。

13、进一步地,所述阵列式片上缓存的存储结构中,把存储空间进行多个行组的拆分;所述拆分后的行组数与向量处理器的simd合并所计算的宽度相同或成倍数关系。

14、进一步地,所述步骤s1,具体包括:

15、步骤s101、对块状结构dma进行参数化配置,使dma每次搬移的数据块大小与阵列式片上缓存的存储规模匹配;

16、步骤s102、根据参数化配置结果,dma自动计算出从ddr中所搬移数据块各行地址;

17、步骤s103、根据参数化配置中传输方式标志位判断传输方式,标志位为“0”,则进入步骤s104;标志位为“1”,则进入步骤s105;

18、步骤s104、采用行向写入模式进行正常传输;计算数据块总大小,将数据块中数据逐行连续的写入到缓存中,完成数据块写入缓存过程;

19、步骤s105、采用列向写入模式进行转置传输;根据数据块的行数,计算出数据块每一行要写入到缓存中的行号地址,根据数据块的列数计算出每一行中各数据的行内地址;将数据块中数据逐行分别的写入到缓存中各对应的行中,使缓存数据与数据块保持相同的行列结构。

20、进一步地,对块状结构dma进行参数化配置包括:

21、配置数据块起始地址mem_addr0,用于表示数据块左上角起始元素在ddr的存放地址;

22、配置数据块的连续有效长度x_slice;其中,在转置数据传输时,x_slice大小不能超过阵列式片上缓存中每一行容量大小;并且x_slice大小还需小于ddr中原始数据全规模矩阵的行宽x_full;

23、配置数据块的行数y_slice;其中,在转置数据传输时,y_slice为阵列式片上缓存行数或者为阵列式片上缓存行数的整数倍;

24、配置数据块写入阵列式片上缓存中的传输方式标志位;标志位为“1”时,为“转置传输”;标志位为“0”时,为“正常传输”。

25、进一步地,所述步骤s2,具体包括:

26、步骤s201、对于步骤s1中的参数化配置,判断出阵列式片上缓存中写入数据的写入模式,如果是行向写入模式下写入阵列式片上缓存中的数据块数据,则进入步骤s202;如果是列向写入模式下写入阵列式片上缓存中的数据块数据,则进入步骤s203;

27、步骤s202、采用行向取出模式,向量处理器按缓存数据行向地址连续的方式顺序从缓存中取出数据后进行simd向量数据输出,完成缓存数据的取出;

28、步骤s203、判断向量处理器的访存指令,如果为转置访存指令,则进入步骤s204,如果为正常访存指令,则进入步骤s205;

29、步骤s204、采用列向取出模式,向量处理器按缓存数据列向地址相同并行顺序从缓存各行地址中取数进行simd合并后,进行simd向量数据输出,完成缓存数据的取出。

30、步骤s205、采用行向取出模式,向量处理器按缓存数据行向地址连续的方式顺序从缓存中逐行取出数据行后进行simd向量数据输出,完成缓存数据的取出。

31、进一步地,在列向取出模式下,通过地址译码器计算出进行simd合并的缓存数据列向和行向地址;根据计算出列向和行向地址逐次从缓存数据取出列向地址相同的各行上的数据进行simd合并。

32、本发明还公开了一种基于阵列式片上缓存的数据访问装置,包括数据写入模块和数据读出模块:

33、所述数据写入模块,用于采用支持矩阵传输的块状结构dma,按块状批量从ddr中读出数据块;采用行向写入模式或列向写入模式将所述数据块写入到阵列式片上缓存中;在行向写入模式下,将数据块中数据逐行连续的写入到缓存中;在列向写入模式下,将数据块中数据逐行分别的写入到缓存中各对应的行中,使缓存数据与数据块保持相同的行列结构;

34、所述数据读出模块,用于对于阵列式片上缓存中缓存数据,根据向量处理器的访存请求,采用行向取出模式或列向取出模式进行并行数据取出;在行向取出模式下,向量处理器按缓存数据行向地址连续的方式顺序从缓存中取出数据后进行simd向量数据输出;在列向取出模式下,向量处理器按缓存数据列向地址相同并行顺序从缓存各行地址中取数进行simd合并后,进行simd向量数据输出。

35、本发明还公开了一种大规模二维矩阵的转置方法,包括:

36、步骤s1、将位于ddr中的、待转置的大规模二维矩阵[l1,l2]划分为等规模大小的小规模矩阵[m1,m2];其中,n1=l1/m1,n2=l2/m2,n1、n 2为大于0的正整数;

37、步骤s2、采用如上所述的基于片上缓存的数据访问方法,逐块的利用块状结构dma从ddr中读出小规模矩阵[m1,m2],在列向写入模式下写入到阵列式片上缓存中;采用向量处理器在列向取出模式下进行并行数据取出,将小规模矩阵[m1,m2]进行转置为矩阵[m2,m1];

38、步骤s3、将每块转置后得到矩阵[m2,m1]按照正确的位置进行存放合成矩阵[l2,l1];所述正确的位置指代的是矩阵[l1,l2]转置成为矩阵[l2,l1]时,每块矩阵块[m2,m1]在矩阵[l2,l1]中的对应位置。

39、本发明还一种大规模二维矩阵的转置装置;包括:矩阵划分模块、小规模矩阵转置模块和矩阵合成模块;

40、所述矩阵划分模块,用于将位于ddr中的、待转置的大规模二维矩阵[l1,l2]划分为等规模大小的小规模矩阵[m1,m2];其中,n1=l1/m1,n2=l2/m2,n1、n 2为大于0的正整数;

41、所述小规模矩阵转置模块,用于采用如上所述的基于片上缓存的数据访问方法,逐块的利用块状结构dma从ddr中读出小规模矩阵[m1,m2],在列向写入模式下写入到阵列式片上缓存中;采用向量处理器在列向取出模式下进行并行数据取出,将小规模矩阵[m1,m2]进行转置为矩阵[m2,m1];

42、所述矩阵合成模块,用于将每块转置后得到矩阵[m2,m1]按照正确的位置进行存放合成矩阵[l2,l1];所述正确的位置指代的是矩阵[l1,l2]转置成为矩阵[l2,l1]时,每块矩阵块[m2,m1]在矩阵[l2,l1]中的对应位置。

43、本发明可实现以下有益效果之一:

44、区别于传统的整行读取,整列写回的矩阵转置模式,本发明采用块状传输,同时提高转置数据块读取和写回的传输效率,结合ddr存储器连续访存特点提高访问带宽。

45、存放转置数据块的片上缓存的阵列式结构设计,能够支持数据自然的转置排放,以及契合向量处理器对于simd向量转置的需求,提高向量处理器的数据访问效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1