技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种数据的读写方法、产品、数据加速器以及介质与流程  >  正文

一种数据的读写方法、产品、数据加速器以及介质与流程

  • 国知局
  • 2024-12-06 12:24:36

本发明涉及数据处理,特别是涉及一种数据的读写方法、产品、数据加速器以及介质。

背景技术:

1、自然语言处理是人工智能领域的重要分支,使得计算机能够理解和处理人类语言。神经网络模型已经成为自然语言处理领域的核心技术,并扩展至计算机视觉等其他领域。

2、在自然语言处理过程中,如语音识别,通过神经网络模型的线性变换会依赖于大量的矩阵乘计算方式实现,以节省数据缓存空间。针对于非线性计算涉及模型的层或者函数采用非矩阵乘计算方式,对应占用的计算时间较长。同时,在不同层之间若存在矩阵乘单元和非矩阵乘单元相邻,会导致由矩阵乘单元输出的数据存储顺序无法适应于非矩阵乘单元对应的写入顺序,非矩阵乘单元输出的数据存储顺序无法适应于矩阵乘单元对应的写入顺序,均会造成在各自单元内写入至对应的缓存单元的高延迟现象发生,使得语音识别的时间较长。

3、因此,如何避免写入至存储器的高延迟现象发生以提高语音识别效率是本领域技术人员亟需要解决的。

技术实现思路

1、本发明的目的是提供一种数据的读写方法、产品、数据加速器以及介质,以解决由矩阵乘单元输出的数据存储顺序无法适应于非矩阵乘单元对应的写入顺序,非矩阵乘单元输出的数据存储顺序无法适应于矩阵乘单元对应的写入顺序,均会造成在各自单元内写入至对应的缓存单元的高延迟现象发生,使得语音识别的时间较长的问题。

2、为解决上述技术问题,本发明提供一种数据的读写方法,包括:

3、获取第一数据在数据加速器内的非矩阵乘加速单元的读写模式;

4、若第一数据在非矩阵乘加速单元为写操作模式,则根据第一数据在矩阵乘加速单元的输出矩阵下脉动阵列的目标分片位置和行列维度位置对第一数据的发送地址进行转换处理确定转换后的第二数据在非矩阵乘加速单元的写操作地址,以写入至非矩阵乘加速单元;

5、若第一数据在非矩阵乘加速单元为读操作模式,则第一数据在矩阵乘加速单元的写入矩阵维度对第一数据在非矩阵乘加速单元的当前输出矩阵进行填充处理,使得填充后的第三数据的矩阵维度与矩阵乘加速单元的矩阵维度相同,以读出至矩阵乘加速单元。

6、一方面,根据第一数据在矩阵乘加速单元的输出矩阵下脉动阵列的目标分片位置和行列维度位置对第一数据的发送地址进行转换处理确定转换后的第二数据在非矩阵乘加速单元的写操作地址,包括:

7、预先设置预设计数器与目标分片位置、行列维度位置之间对应的映射关系;

8、根据所述目标分片设置和行列维度位置与预设计数器之间的映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址。

9、另一方面,所述预设计数器包括第一计数器、第二计数器、第三计数器和第四计数器;

10、其中,所述第一计数器用于记录输出矩阵的每个分片下的子矩阵水平方向的地址计数;所述第一计数器的地址计数受限于水平方向的连续预设写入数据个数,且为子矩阵的列维度-1;

11、所述第二计数器用于记录输出矩阵的每个分片下的子矩阵的非首行的水平方向的第一基准地址计数;第一基准地址计数受限于垂直方向的连续预设写入数据个数,且为子矩阵的行维度-1;

12、所述第三计数器用于记录输出矩阵以行为准的非首个分片下的子矩阵水平方向的第二基准地址计数;

13、所述第四计数器用于记录输出矩阵以非首行为准的每个分片下的子矩阵的水平方向的第三基准地址计数;其中,所述第三基准地址计数的数值由输出矩阵的当前行的上一行的最后一个分片的最后一个数据的地址数值。

14、另一方面,所述目标分片位置由第一数据在矩阵乘加速单元的输出矩阵下对应所有脉动阵列进行分割得到分片大小对应的位置信息;其中,所述输出矩阵的行列维度与分片大小呈整倍数关系。

15、另一方面,预先设置预设计数器与目标分片位置、行列维度位置之间对应的映射关系,包括:

16、若目标分片位置为输出矩阵的首行的第一分片,则根据第一分片的第一数据所在的子矩阵的首行下的各列维度位置以及第一计数器的地址计数之间建立第一映射关系;其中,除第一计数器之外的其余计数器的地址计数为0;根据第一分片的第一数据所在的子矩阵的非首行下的各行对应的各列维度位置、第一计数器的地址计数和第二计数器的地址计数之间建立第二映射关系;其中,除第一计数器和第二计数器之外的其余计数器的地址计数为0;

17、若目标分片位置为输出矩阵的首行下除第一分片之外的其余分片,则根据其余分片的第一数据所在的子矩阵的首行下的各列维度位置、第一计数器的地址计数和第三计数器的地址计数之间建立第三映射关系;其中,除所述第一计数器和第三计数器之外的其余计数器的地址计数为0;根据其余分片的第一数据所在的子矩阵的非首行下的各行对应的各列维度位置、第一计数器、第二计数器和第三计数器分别对应的地址计数之间建立第四映射关系;其中,第四计数器的地址计数为0;

18、若目标分片位置为输出矩阵的非首行下的第一分片,则对应建立第一映射关系和第二映射关系的基础上,分别加入第四计数器的地址计数,对应形成第五映射关系和第六映射关系;若目标分片位置为输出矩阵的非首行下的除第一分片之外的其余分片,则对应建立第三映射关系和第四映射关系的基础上,分别加入第四计数器的地址计数,对应形成第七映射关系和第八映射关系。

19、另一方面,若目标分片位置为输出矩阵的首行的第一分片,根据所述目标分片设置和行列维度位置与预设计数器之间的第一映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址,包括:

20、在第一数据内的当前第一子数据的发送地址为子矩阵的首行下的首个地址数据时,将所有预设计数器的地址计数、水平方向的连续预设写入数据个数和垂直方向的连续预设写入数据个数均设置为初始值;确定所述当前第一子数据对应的子矩阵的列维度位置且根据所述当前第一子数据对应的子矩阵的列维度位置和第一计数器、第二计数器、第三计数器和第四计数器各自对应的地址计数的初始值确定当前数据的写操作地址;并更新水平方向的连续预设写入数据个数和垂直方向的连续预设写入数据个数;

21、判断第一计数器的地址计数是否等于子矩阵的列维度-1;

22、若否,则将第一计数器的地址计数的初始值自加1;确定第一数据内的当前第一子数据的下一个第一子数据的对应的子矩阵的列维度位置,且根据下一个第一子数据对应的子矩阵的列维度位置对第一计数器的地址计数的初始值自加1,并根据第一计数器的当前地址计数、第二计数器、第三计数器和第四计数器各自对应的地址计数器的初始值之和确定下一个第一子数据的写操作地址;并将下一个第一子数据作为新的当前第一子数据,返回至所述判断第一计数器的地址计数是否等于子矩阵的列维度-1的步骤;

23、若是,则确定第一数据内的新的当前第一子数据对应的子矩阵的首行的列维度位置达到水平方向的连续预设写入数据个数时,将第一计数器的地址计数重置为初始值。

24、另一方面,若目标分片位置为输出矩阵的首行的第一分片,根据所述目标分片设置和行列维度位置与预设计数器之间的第二映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址,包括:

25、预先判断更新后的垂直方向的连续预设写入数据个数是否等于子矩阵的行维度-1;若更新后的垂直方向的连续预设写入数据个数不等于子矩阵的行维度-1,则确定垂直方向的连续预设写入数据个数自加1进行更新;

26、判断第二计数器的地址计数是否为子矩阵的行维度-1;若第二计数器的地址计数不为子矩阵的行维度-1,则获取首行除第一分片之外的其余分片对应的剩余未写入的列维度;将剩余未写入数据个数与行维度之和作为第二计数器的地址计数;

27、在第一数据内的当前第二子数据的发送地址为子矩阵的非首行下的首个地址数据时,确定所述当前第二子数据对应的子矩阵的列维度位置,且根据所述当前第二子数据对应的子矩阵的列维度位置和第二计数器的地址计数、第一计数器、第三计数器和第四计数器各自对应的地址计数的初始值确定当前第二子数据的写操作地址;并更新水平方向的连续预设写入数据个数和垂直方向的连续预设写入数据个数;

28、判断第一计数器的地址计数是否等于子矩阵的列维度-1;

29、若第一计数器的地址计数不等于子矩阵的列维度-1,则将第一计数器的地址计数的初始值自加1;确定第一数据内的当前第二子数据的下一个第二子数据的对应的子矩阵的列维度位置,且根据下一个第二子数据对应的子矩阵的列维度位置对第一计数器的地址计数的初始值自加1,并根据第一计数器的当前地址计数、第二计数器的地址计数、第三计数器和第四计数器各自对应的地址计数的初始值之和确定下一个第二子数据的写操作地址;并将下一个第二子数据作为新的当前第二子数据,返回至所述判断第一计数器的地址计数是否等于子矩阵的列维度-1的步骤;

30、若是,则确定第一数据内的新的当前第二子数据对应的子矩阵的首行的列维度位置达到水平方向的连续预设写入数据个数时,将第一计数器的地址计数重置为初始值。

31、另一方面,若目标分片位置为输出矩阵的首行的其余分片,根据所述目标分片设置和行列维度位置与预设计数器之间的第三映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址,包括:

32、预先判断更新后的垂直方向的连续预设写入数据个数是否等于子矩阵的行维度-1;若更新后的垂直方向的连续预设写入数据个数等于子矩阵的行维度-1,则将更新后的垂直方向的连续预设写入数据个数设置为0;

33、判断第二计数器的地址计数是否为子矩阵的行维度-1;若第二计数器的地址计数为子矩阵的行维度-1,将第二计数器的地址计数重置为初始值;

34、判断更新后的剩余未写入的列维度是否为0;若更新后的剩余未写入的列维度不为0,则将更新后的剩余未写入的列维度与子矩阵的列维度进行差值处理得到新的剩余未写入的列维度;

35、将第三计数器的地址计数设置为子矩阵的列维度对应的数值;

36、在第一数据内的当前第三子数据的发送地址为其余分片的子矩阵的首行下的首个地址数据时,确定所述当前第三子数据对应的子矩阵的列维度位置,且根据当前第三子数据对应的子矩阵的列维度位置和第三计数器的地址计数、第一计数器、第二计数器和第四计数器各自对应的地址计数的初始值确定当前第二子数据的写操作地址;并更新水平方向的连续预设写入数据个数和垂直方向的连续预设写入数据个数;

37、判断第一计数器的地址计数是否等于子矩阵的列维度-1;

38、若第一计数器的地址计数不等于子矩阵的列维度-1,则将第一计数器的地址计数的初始值自加1;确定第一数据内的当前第三子数据的下一个第三子数据的对应的子矩阵的列维度位置,且根据下一个第三子数据对应的子矩阵的列维度位置对第一计数器的地址计数的初始值自加1,并根据第一计数器的当前地址计数、第三计数器的地址计数、第二计数器和第四计数器各自对应的地址计数的初始值之和确定下一个第三子数据的写操作地址;并将下一个第三子数据作为新的当前第三子数据,返回至所述判断第一计数器的地址计数是否等于子矩阵的列维度-1的步骤;

39、若是,则确定第一数据内的新的当前第三子数据对应的子矩阵的首行的列维度位置达到水平方向的连续预设写入数据个数时,将第一计数器的地址计数重置为初始值。

40、另一方面,若目标分片位置为输出矩阵的首行的其余分片,根据所述目标分片设置和行列维度位置与预设计数器之间的第四映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址,包括:

41、预先判断更新后的垂直方向的连续预设写入数据个数是否等于子矩阵的行维度-1;若更新后的垂直方向的连续预设写入数据个数不等于子矩阵的行维度-1,则确定垂直方向的连续预设写入数据个数自加1进行更新;

42、判断第二计数器的地址计数是否为子矩阵的行维度-1;若第二计数器的地址计数不为子矩阵的行维度-1,则获取首行除第一分片之外的其余分片对应的剩余未写入的列维度;将剩余未写入数据个数与行维度之和作为第二计数器的地址计数;

43、在第一数据内的当前第四子数据的发送地址为子矩阵的非首行下的首个地址数据时,确定所述当前第四子数据对应的子矩阵的列维度位置,且根据所述当前第四子数据对应的子矩阵的列维度位置和第二计数器的地址计数、第三计数器的地址计数、第一计数器和第四计数器各自对应的地址计数的初始值确定当前第四子数据的写操作地址;并更新水平方向的连续预设写入数据个数和垂直方向的连续预设写入数据个数;

44、判断第一计数器的地址计数是否等于子矩阵的列维度-1;

45、若第一计数器的地址计数不等于子矩阵的列维度-1,则将第一计数器的地址计数的初始值自加1;确定第一数据内的当前第四子数据的下一个第四子数据的对应的子矩阵的列维度位置,且根据下一个第四子数据对应的子矩阵的列维度位置对第一计数器的地址计数的初始值自加1,并根据第一计数器的当前地址计数、第二计数器的地址计数、第三计数器的地址计数和第四计数器的地址计数的初始值之和确定下一个第四子数据的写操作地址;并将下一个第二子数据作为新的当前第四子数据,返回至所述判断第一计数器的地址计数是否等于子矩阵的列维度-1的步骤;

46、若是,则确定第一数据内的新的当前第四子数据对应的子矩阵的首行的列维度位置达到水平方向的连续预设写入数据个数时,将第一计数器的地址计数重置为初始值。

47、另一方面,若目标分片位置为输出矩阵的非首行的第一分片,根据所述目标分片设置和行列维度位置与预设计数器之间的第五映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址,包括:

48、预先判断更新后的垂直方向的连续预设写入数据个数是否等于子矩阵的行维度-1;若更新后的垂直方向的连续预设写入数据个数等于子矩阵的行维度-1,则将更新后的垂直方向的连续预设写入数据个数设置为0;

49、判断第二计数器的地址计数是否为子矩阵的行维度-1;若第二计数器的地址计数为子矩阵的行维度-1,将第二计数器的地址计数重置为初始值;

50、判断更新后的剩余未写入的列维度是否为0;若更新后的剩余未写入的列维度为0,则将更新后的剩余未写入的列维度设置为更新前的剩余未写入的列维度;

51、将第三计数器的地址计数重置为初始值;

52、将第一计数器的当前地址计数、第二计数器的地址计数、第三计数器的地址计数和第四计数器的地址计数的初始值之和加1得到第四计数器的当前地址计数;并返回至所述根据所述目标分片设置和行列维度位置与预设计数器之间的第一映射关系、预设计数器的地址计数对第一数据的发送地址进行转换处理确定第二数据在非矩阵乘加速单元的写操作地址的步骤确定第一数据内的当前第五子数据的写操作地址。

53、另一方面,第一数据在矩阵乘加速单元的写入矩阵维度对第一数据在非矩阵乘加速单元的当前输出矩阵进行填充处理,使得填充后的第三数据的矩阵维度与矩阵乘加速单元的矩阵维度相同,包括:

54、获取所述第一数据在非矩阵乘加速单元的当前输出矩阵的第一列维度和第一行维度;

55、获取所述第一数据在矩阵乘加速单元的写入矩阵维度的第二列维度和第二行维度;

56、根据第一列维度和第二列维度、第一行维度和第二行维度确定待填充的第三列维度和第三行维度;

57、根据第三列维度和第三行维度对第一数据在非矩阵乘加速单元的当前输出矩阵进行填充处理,使得填充后的第三数据的矩阵维度与矩阵乘加速单元的矩阵维度相同。

58、另一方面,根据第三列维度和第三行维度对第一数据在非矩阵乘加速单元的当前输出矩阵进行填充处理,使得填充后的第三数据的矩阵维度与矩阵乘加速单元的矩阵维度相同,包括:

59、将所述第一数据按照当前输出矩阵的各行数据写入至矩阵乘加速单元的缓存中;

60、在各行数据的最后一列的第一列维度进行第三列维度的填充处理得到填充后的第四数据;

61、在最后一行数据完成写入时,根据第三行维度和第二列维度生成第一矩阵;并将第一矩阵的各数据进行填充处理得到填充后的第五数据;

62、将填充后的第四数据、第五数据和第一数据作为填充后的第三数据。

63、为解决上述技术问题,本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现所述数据的读写方法的步骤。

64、为解决上述技术问题,本发明提供一种数据加速器,包括:

65、存储器,用于存储计算机程序;

66、处理器,用于执行所述计算机程序时实现如所述的数据的读写方法的步骤。

67、为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的数据的读写方法的步骤。

68、本发明提供一种数据的读写方法,获取第一数据在数据加速器内的非矩阵乘加速单元的读写模式;其中,非矩阵乘加速单元用于实现非矩阵乘计算方式的数据处理单元;若第一数据在非矩阵乘加速单元为写操作模式,则根据第一数据在矩阵乘加速单元的输出矩阵下脉动阵列的目标分片位置和行列维度位置对第一数据的发送地址进行转换处理确定转换后的第二数据在非矩阵乘加速单元的写操作地址,以写入至非矩阵乘加速单元;其中,矩阵乘加速单元用于实现矩阵乘计算方式的数据处理单元;若第一数据在非矩阵乘加速单元为读操作模式,则第一数据在矩阵乘加速单元的写入矩阵维度对第一数据在非矩阵乘加速单元的当前输出矩阵进行填充处理,使得填充后的第三数据的矩阵维度与矩阵乘加速单元的矩阵维度相同,以读出至矩阵乘加速单元。

69、本发明的有益效果在于矩阵乘单元和非矩阵乘单元相邻时,矩阵乘单元输出的数据存储顺序在写入至非矩阵单元时,需要将其矩阵乘加速单元的结果数据输出顺序通过分片的大小和行列维度位置对应进行转换处理,以适应非矩阵乘单元对应的写入顺序;实现了将直接来自于矩阵乘加速单元的非完整行顺序的数据,在缓存中按照完整行的顺序保存,避免了将矩阵乘加速单元的数据写回片外存储器后再读取的高延迟操作。在非矩阵乘单元输出的数据存储顺序将其进行填充处理,使得填充后的第三数据的矩阵维度与矩阵乘加速单元的矩阵维度相同,以适应于矩阵乘单元对应的写入顺序,支持自动padding模式的读缓存控制器,实现了为实际计算结果生成符合矩阵乘加速单元所需要的数据维度的功能,避免了将非矩阵乘加速单元的数据写回片外存储器后再读取的高延迟操作,减少语音识别的时间。

70、其次,各计数器的功能限定,针对于不同计数器的具体计数规则,提高整个输出矩阵的转换准确性和有序性,避免人为计算导致的转换失误问题发生。不同计数器建立的映射关系,在后续的转换处理过程中针对不同的计数器的功能实现转换,通过不同计数器的计数结合,提高数据转换的效率和准确率。第一分片下的首行数据的读取过程,通过第一计数器的计数功能完成,提高数据转换的双保险工作的准确性。第一分片下的非首行数据的读取过程,通过第一计数器的计数功能和第二计数器的第一基准地址计数功能完成,区分于分片下的首行数据和非首行数据的读取计数过程,提高数据转换的通用性。其余分片下的首行数据的读取过程,通过第一计数器的计数功能和第三计数器的第二基准地址计数功能完成转换,区分于第一分片下的读取计数过程,提高数据转换的灵活性。输出矩阵下的非首行的子矩阵的读取过程,加入第四计数器的地址计数,与第一计数器、第二计数器和第三计数器之间的关系完成,区分于不同行的子矩阵的分层界定,提高数据转换的准确性。读操作模式下的自动填充方式,实现了为实际计算结果生成符合矩阵乘加速单元所需要的数据维度的功能,避免了将非矩阵乘加速单元的数据写回片外存储器后再读取的高延迟操作。

71、另外,本发明还提供了一种计算机程序产品、数据加速器以及介质,具有如上述数据的读写方法相同的有益效果。

本文地址:https://www.jishuxx.com/zhuanli/20241204/341221.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。