CN117725002A - 数据传输方法、数据传输装置和电子设备 - Google Patents

数据传输方法、数据传输装置和电子设备 Download PDF

Info

Publication number
CN117725002A
CN117725002A CN202311700987.3A CN202311700987A CN117725002A CN 117725002 A CN117725002 A CN 117725002A CN 202311700987 A CN202311700987 A CN 202311700987A CN 117725002 A CN117725002 A CN 117725002A
Authority
CN
China
Prior art keywords
data
memory
bank
buffer
units
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
Application number
CN202311700987.3A
Other languages
English (en)
Inventor
陈庆
袁庆
华芮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202311700987.3A priority Critical patent/CN117725002A/zh
Publication of CN117725002A publication Critical patent/CN117725002A/zh
Pending legal-status Critical Current

Links

Abstract

一种数据传输方法、数据传输装置和电子设备。该方法用于从第一存储器向第二存储器传输数据,存储体在每个深度上的第一存储单元的宽度为K比特,第二存储器包括多个连续排列的第二存储单元,该方法包括:依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元,数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元;以及按照指定顺序从缓冲单元中将存储体中的数据写入到第二存储器,指定顺序包括:存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在第二存储器的同一第二存储单元中。该方法能够使得重排数据这一步骤不占用额外的时间,从而提高数据读取的效率。

Description

数据传输方法、数据传输装置和电子设备
技术领域
本公开的实施例涉及一种数据传输方法、数据传输装置和电子设备。
背景技术
在矩阵运算中,由于两个输入矩阵(例如,矩阵A和矩阵B)的数据的可复用性在运算过程中一般是先从外部存储器例如双倍速同步动态随机存取内存(Double-Data-RateSynchronous Dynamic Random-Access Memory,DDR)读入局部数据存储器(Local ShareMemory,LSM,或者简称为“局部存储器”),然后从局部数据存储器中再读入通用寄存器,再送往矩阵运算单元进行运算,运算完成后把结果写回外部存储器DDR。
发明内容
本公开至少一个实施例提供一种数据传输方法,用于从第一存储器向第二存储器传输数据,所述第一存储器包括深度为N的存储体,所述存储体在每个深度上的第一存储单元的宽度为K比特,所述第二存储器包括多个连续排列的第二存储单元,所述第二存储单元的宽度为K比特,所述方法包括:依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元,其中,所述数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元,其中,N、K和m均为正整数;以及照指定顺序从所述缓冲单元中将所述存储体中的数据写入到所述第二存储器,所述指定顺序包括:所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在所述第二存储器的同一第二存储单元中。
例如,在本公开一实施例提供的方法中,存储体中相邻的K/m个第一存储单元中深度低的第一存储单元存储的数据位于所述第二存储单元中的低位。
例如,在本公开一实施例提供的方法中,依次读取所述N个深度中每个深度上的第一存储单元存储的数据,包括:按照深度顺序依次读取所述N个深度中每个深度上的第一存储单元存储的数据,并且并行读取同一第一存储单元存储的所述K/m个子数据单元中的数据。
例如,在本公开一实施例提供的方法中,所述缓冲单元包括多个缓冲区,每个缓冲区用于存储一个所述m比特的数据,所述多个缓冲区的数量大于或者等于K/m。
例如,在本公开一实施例提供的方法中,所述缓冲单元包括(K/m)2个连续排列的缓冲区,按照指定顺序从所述缓冲单元中将所述存储体中的数据写入到所述第二存储器,包括:在依次将K/m个深度的第一存储单元中的数据存储到所述缓冲单元之后,开始从所述缓冲单元读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据。
例如,在本公开一实施例提供的方法中,在依次将K/m个深度第一存储单元中的数据存储到缓冲单元之后,开始从所述缓冲单元读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据,包括:在依次将K/m个深度的第一存储单元中的数据存储到缓冲单元之后,并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据;以及将所述相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据写入所述第二存储器的同一第二存储单元中。
例如,在本公开一实施例提供的方法中,按照深度从小到大并且位次从小到大的顺序对所述存储体中的多个子数据单元进行连续索引编号,在依次将K/m个深度的第一存储单元中的数据存储到缓冲单元之后,并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据,包括:从第一个周期到第K/m个周期,每个周期从所述存储体读出索引编号为(i-1)×K/m、…K/m×i-1的子数据单元中的数据,并且存储到所述缓冲单元,其中,i表示周期计数值;以及从第K/m+1个周期开始,对于每个周期,在读出索引编号为(i-1)×K/m、…K/m×i-1的子数据单元中的数据,并且存储到所述缓冲单元的同时,从所述缓冲单元并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据。
本公开至少一个实施例提供一种数据传输装置,用于从第一存储器向第二存储器传输数据,所述第一存储器包括深度为N的存储体,所述存储体在每个深度上的第一存储单元的宽度为K比特,所述第二存储器包括多个连续排列的第二存储单元,所述第二存储单元的宽度为K比特,所述装置包括:缓冲单元;读取单元,配置为依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到所述缓冲单元,其中,所述数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元;以及写入单元,配置为按照指定顺序从所述缓冲单元中将所述存储体中的数据写入到所述第二存储器,所述指定顺序包括:所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在所述第二存储器的同一第二存储单元中,其中,N、K和m均为正整数。
例如,在本公开一实施例提供的装置中,所述缓冲单元包括:多个寄存器,每个寄存器配置为存储从第一存储单元读取的所述数据,所述读取单元包括:多个第一多路选择器,所述多个第一多路选择器配置为读取每个所述存储体的N个深度中每个深度上的第一存储单元存储的数据,并且依次将所述每个深度上的所述第一存储单元存储的数据存储到所述多个寄存器中的K/m个寄存器,所述写入单元包括:多个第二多路选择器,所述多个第二多路选择器配置为从所述多个寄存器选择所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据,并且写入到所述第二存储器的同一第二存储单元中。
例如,在本公开一实施例提供的装置中,所述第一存储器包括P个所述存储体,所述缓冲单元的数量为P,每个缓冲单元包括预设数量的寄存器,P个所述存储体和P个所述缓冲单元一一对应,其中,P为正整数。
例如,在本公开一实施例提供的装置中,预设数量为大于或者等于K/m的正整数。
本公开至少一个实施例提供一种电子设备,包括本公开任一实施例提供的数据传输装置、第一存储器和第二存储器,第一存储器和所述数据传输装置耦接,所述数据传输装置和所述第二存储器耦接。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A示出了一种矩阵乘法运算中矩阵A的行和矩阵B的列做点积的示意图;
图1B示出了一种矩阵运算数据流示意图;
图1C示出了一种外部存储器和局部存储器中矩阵数据按列方向排列示意图;
图1D示出了一种局部存储器中存储体中矩阵数据按列方向排列的示意图;
图2A示出了本公开至少一实施例提供的一种数据传输方法的流程图;
图2B示出了本公开至少一实施例提供的一种用于执行数据传输方法的示意性系统架构图;
图3A~图3G为本公开至少一个实施例提供一种对数据格式为16比特的数据进行重排的方法示意图;
图4A~图4M为本公开至少一个实施例提供一种对数据格式为8比特的数据进行重排的方法示意图;
图5示出了本公开至少一个实施例提供的一种数据传输装置的示意性框图;
图6A示出了本公开至少一个实施例提供的一种图5中数据传输装置的示意性结构图;
图6B示出了本公开至少一个实施例提供的另一种数据传输装置的示意性结构图;以及
图7示出了本公开至少一个实施例提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1A示出了一种矩阵乘法运算中矩阵A的行和矩阵B的列做点积的示意图。
矩阵运算所需的数据在外部存储器中一般是按照矩阵行方向或者矩阵列方向线性排列的,如图1A所示,矩阵乘法运算C=C+A*B中,需要把矩阵A中的每一行数据和矩阵B中的每一列数据做点积,然后更新矩阵C中对应位置的元素。因此,若矩阵A中的数据在外部存储器中是按列方向线性排列的,那么需要对矩阵A中的数据进行重排,从而使得矩阵A中每一行数据与矩阵B中的每一列数据点积。
图1B示出了一种矩阵运算数据流示意图。
如图1B所示,例如外部存储器DDR存储矩阵A,矩阵A从外部存储器DDR读入局部数据存储器,然后从局部数据存储器中再读入读取和数据重排单元,在读取和数据重排单元进行重新组织重排,例如将按列方向组织的数据重新按照行方向组织。将重新组合重排的数据送往向量通用寄存器(又称为“向量寄存器”)阵列,之后再送往矩阵运算单元进行运算,运算完成后把结果写回外部存储器DDR。局部数据存储器通常是一个使用多个存储体(bank)的静态随机存储器(Static Random Access Memory,SRAM)组成的RAM阵列,可以支持较大的读写数据位宽。
图1C示出了一种外部存储器和局部存储器中矩阵数据按列方向排列示意图;图1D示出了一种局部存储器中存储体中矩阵数据按列方向排列的示意图。
如图1C和1D所示,局部数据存储器通常包括多个存储体(bank),例如存储体0、存储体1、存储体2和存储体3等,多个存储体彼此相互独立。每个存储体包括位于不同深度的多个存储单元,每个存储单元的位宽可以为32比特(bit)、16bit或8bit等。在本公开的实施例中,每个存储体的位宽为32bit为例进行说明。例如,若存储单元位宽为32bit,则每个存储单元能够存储2个16bit的数据或矩阵元素。在本公开的实施例中,存储单元的深度从右到左依次增大,图1D中最右侧的存储单元的深度为0。例如,存储体0中深度为0的存储单元的低16位P0存储矩阵A中的元素0,高16位P1存储矩阵A中元素1;存储体0中深度为1的存储单元的低16位P2存储矩阵A中的元素8,高16位P3存储矩阵A中元素9;存储体0中深度为2的存储单元的低16位P4存储矩阵A中的元素16,高16位P5存储矩阵A中元素17;存储体0中深度为3的存储单元的低16位P6存储矩阵A中的元素24,高16位P7存储矩阵A中元素25。局部存储器的其他存储体,例如存储体1、存储体2和存储体3与存储体0类似,不再赘述。参考图1C和图1D,例如矩阵A中元素2存储于存储体1中的深度为0的存储单元中的低16位,其他元素的存储方式类似。
类似地,矩阵A中元素的数据格式也可以是8bit,这种情况下,每个存储单元能够存储4个元素。例如,矩阵A中的元素0存储在存储体0中深度为0的存储单元中低8位P0中,元素1存储在存储体0中深度为0的存储单元中第8~15位P1中,元素2存储在存储体0中深度为0的存储单元中第16~23位P2中,元素3存储在存储体0中深度为0的存储单元中第24~31位P3中。例如,存储体0中深度为1的存储单元中低8位P4存储矩阵A中的元素16,类似地,存储单元中的P5~P7位分别存储矩阵A中的元素17~元素19。类似地,存储体0中深度为2的存储单元中P8~P11位分别存储矩阵A中的4个元素,存储体0中深度为3的存储单元中P12~P15位分别存储矩阵A中的4个元素。
如图1C和1D所示,当矩阵A的数据在外部存储器DDR中的存储方式是按列方向存储时,从外部存储器DDR读入局部数据存储器之后,局部数据存储器中依然是按列方向存储。例如,在矩阵A中每个元素的数据格式为16bit的情况下,元素0~元素15占用局部存储器两列的存储空间;在矩阵A中每个元素的数据格式为8bit的情况下,元素0~元素15占用局部存储器1列的存储空间。类似地,在矩阵A中每个元素的数据格式为4bit的情况下,元素0~元素15占用局部存储器1/2列的存储空间。这就需要重新组织数据,使得能够以行方向的格式读出数据,再送往运算单元,以便于进行矩阵乘法运算。
如图1B~1D所示,矩阵运算需要先将矩阵数据从局部存储器存中读出并且存储在读取和数据重排单元中,然后由读取和数据重排单元对矩阵数据重排,重排矩阵数据占用额外的时间,矩阵数据读取效率低。
需要说明的是,虽然本公开的实施例以矩阵为例来说明数据重排占用额外的时间,但是这并不意味着本发明仅应用于对矩阵数据进行重排,本公开的实施例可以应用于任何需要进行重排的数据,不限于矩阵数据。
本公开至少一个实施例提供一种数据传输方法、数据传输装置和电子设备。该数据传输方法用于从第一存储器向第二存储器传输数据,第一存储器包括深度为N的存储体,存储体在每个深度上的第一存储单元的宽度为K比特,第二存储器包括多个连续排列的第二存储单元,第二存储单元的宽度为K比特。该方法包括:依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元,数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元;以及按照指定顺序从缓冲单元中将存储体中的数据写入到第二存储器,指定顺序包括:存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在第二存储器的同一第二存储单元中,N、K和m均为正整数。该数据传输方法能够在读取数据的过程中同时重排数据,使得重排数据这一步骤不占用额外的时间,从而提高数据读取的效率。
图2A示出了本公开至少一实施例提供的一种数据传输方法的流程图。
如图2A所示,该方法可以包括步骤S10~S20。该数据传输方法用于从第一存储器向第二存储器传输数据,第一存储器包括深度为N的存储体,存储体在每个深度上的第一存储单元的宽度为K比特,第二存储器包括多个连续排列的第二存储单元,第二存储单元的宽度为K比特。
步骤S10:依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元,数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元。
步骤S20:按照指定顺序从缓冲单元中将存储体中的数据写入到第二存储器,指定顺序包括存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在第二存储器的同一第二存储单元中。
图2B示出了本公开至少一实施例提供的一种用于执行数据传输方法的示意性系统架构图。
如图2B所示,该系统包括存储器201、缓冲单元202和存储器203。存储器201为第一存储器的示例,存储器203为第二存储器的示例。存储器201例如为图1C和1D所示的局部数据存储器,存储器203例如为图1B所示的向量通用寄存器。
存储器201包括至少一个深度为N的存储体211(存储体的示例),在图2B中仅示出了一个存储体211作为示例,实际上,如图1D和1C所示,局部数据存储器可以包括多个存储体。每个深度作为一个存储单元,N个第一存储单元例如沿行方向排列,例如存储体211包括存储单元B1、存储单元B2、存储单元B3、存储单元B4,……存储单元BN(以下简称为存储单元B1~BN),存储单元B1~BN分别为第一存储单元的示例,存储单元B1~BN依次排列。
N个深度上每个存储单元的宽度为K比特,即存储单元的位宽为K bit,能够存储Kbit的数据。例如,存储单元B1~BN分别包括K个比特位。
在一些实施例中,例如存储器201中存储的数据格式为m bit,则每个存储单元从低位到高位按照m比特划分为K/m个子数据单元,每个子数据单元用于存储一个m比特的数据。例如,矩阵A中的数据存储于存储器201,矩阵A中的每个元素为m bit数据格式,则例如存储单元B1按照低位到高位的顺序划分为K/m个子数据单元,每个子数据单元用于存储矩阵A中的一个元素。第0~(m-1)位为第一个子数据单元,用于存储矩阵A中的一个元素,第m~(2m-1)位为第二个子数据单元,用于存储矩阵A中的另一个元素等。
例如,在K=32,m=16的示例中,每个存储单元划分为2个子数据单元。例如,存储单元B1被划分为子数据单元B10和B11,子数据单元B10例如存储矩阵A中的元素0,子数据单元B11例如存储矩阵A中的元素1;存储单元B2被划分为子数据单元B20和B21,子数据单元B20例如存储矩阵A中的元素8,子数据单元B21例如存储矩阵A中的元素9;存储单元B3被划分为子数据单元B30和B31,存储单元B4被划分为子数据单元B40和B41,存储单元BN被划分为子数据单元BN0和BN1。
类似地,第二存储器203包括多个连续的第二存储单元,例如存储单元C1、存储单元C2、存储单元C3、存储单元C4……存储单元Cx,每个存储单元用于存储Kbit数据。若第二存储器203存储的数据格式为m比特,那么一个存储单元也能够存储K/m个数据。第二存储器203的大小可以与第一存储器201相同(例如,x=N),也可以不相同。
缓冲单元202可以包括多个缓冲区,缓冲区的数量可以根据矩阵的数据格式以及是否并行读取来确定。在本公开的一些实施例中,多个缓冲单元和多个存储体一一对应。
在本公开的一些实施例中,每个缓冲区用于存储m比特的数据,每个存储体对应的缓冲区的数量大于或者等于K/m。
例如,建立在单个存储体是32bit的位宽条件下,每个存储单元为32位,每个包括2个16bit的数据格式,为了实现矩阵行转矩阵列或者矩阵列转矩阵行,那么至少需要对每列的2个16bit进行操作,每个缓冲单元可以包括(32/16)=2个缓冲区,若第一存储器包括M(M为正整数)个存储体,那么一共需要2*M个缓冲区。相应地,对于8bit的数据格式,每个缓冲单元可以包括(32/8)=4个缓冲区。相应地,对于4bit的数据格式,每个缓冲单元可以包括(32/4)=8个缓冲区。
在本公开的另一些实施例中,为了能够实现并行处理,可以增加缓冲区的数量,每个缓冲单元中缓冲区的数量大于K/m。例如,每个缓冲单元包括(K/m)2个连续排列的缓冲区。
例如,对于16bit的数据格式,每个缓冲单元202可以包括4个缓冲区,每个缓冲区存储16bit;对于8bit的数据格式,每个缓冲单元202可以包括16个缓冲区,每个缓冲区存储8bit;对于4bit的数据格式,每个缓冲单元202可以包括64个缓冲区,每个缓冲区存储4bit。
对于图2A中的步骤S10,例如按照存储单元的序号从小到大的顺序依次读取N个存储单元存储的数据。在本公开的一些实施例中,按照深度顺序依次读取N个深度中每个深度上的第一存储单元存储的数据,并且并行读取同一第一存储单元存储的所述K/m个子数据单元中的数据。即并行读取同一深度上的第一存储单元存储的K/m个子数据单元中的数据。例如,依次读取存储单元B1~BN中的数据,而对于每个存储单元中的两个数据,同时读出。例如,在同时读出子数据单元B10和子数据单元B11中的数据之后,同时读出子数据单元B20和子数据单元B21中的数据,依次类推。并行读取同一深度上的数据能够提高读取效率。
例如,每个周期读取32bit数据,将32bit数据存储到缓冲单元。例如,每个存储体对应4个缓冲区,第一个周期并行读取存储单元B1中子数据单元B10和B11的数据,并且将子数据单元B10和子数据单元数据B11中的数据分别存储到缓冲单元202的缓冲区212和缓冲区222,第二周期并行读取存储单元B2中子数据单元B20和子数据单元B21的数据,并且将子数据单元B20和子数据单元B21存储到缓冲单元202的缓冲区232和缓冲区242。
对于图2A中的步骤S20,按照指定顺序从缓冲单元中读取K/m个数据写入到例如向量通用寄存器。指定顺序可以是存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在向量通用寄存器的同一第二存储单元中。即,每个周期从缓冲单元中读取K/m个数据,并且这K/m个数据是位于相邻的K/m个第一存储单元中,并且这K/m个数据在这K/m个相邻的第一存储单元中的位次相同。例如,这K/m个数据都是第一存储单元中的第s位到第t位。s,t均为正整数。
例如,K bit=32bit,m bit=16bit,则每个周期从缓冲单元中读取2个数据,并且这2个数据位于相邻的2个第一存储单元中且在第一存储单元中的位次相同。例如,在一个周期从缓冲单元中读取分别位于存储单元B1和B2的两个数据,并且这两个数据分别位于存储单元B1和B2的第s位到第t位,例如这两个数据分别为子数据单元B10(第0位到第15位)和子数据单元B20(第0位到第15位)中的数据,或者分别为子数据单元B11(第16位到第32位)和B21(第16位到第32位)中的。
例如,子存储单元B10中存储的数据为a,子存储单元B11中存储的数据为b,从缓冲单元202中分别读取缓冲区212和232中的数据a和b存入第二存储单元C1中。
例如,存储体中相邻的K/m个第一存储单元中深度低的第一存储单元存储的数据位于第二存储单元中的低位。存储器通常按照深度从小到大的顺序依次存储数据,将深度低的第一存储单元中存储的数据存储到第二存储单元中低位,从而不改变K/m个数据的排列顺序。
例如,子数据单元B10的深度比子数据单元B20的深度低,则子数据单元B10中的数据a存储在存储单元C1的低位,子数据单元B20中的数据b存储在存储单元C1的高位。
在本公开的一些实施例中,缓冲单元包括(K/m)2个连续排列的缓冲区。缓冲单元包括(K/m)2个连续排列的缓冲区既能够并行读取和写入,也能够节约缓冲区的数量。
在本公开的一些实施例中,例如在依次将K/m个深度的第一存储单元中数据存储到缓冲单元之后,开始从缓冲单元读取存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据。
例如,在K/m=2的示例中,在依次将2个深度的第一存储单元中的数据存储到缓冲单元后,开始从缓冲单元读取存储体中相邻的2个第一存储单元中位于相同位次的2个子数据单元中的数据。例如,如图2B所示,在第一个周期,将存储单元B1中的两个数据a和c分别存储到缓冲区212和缓冲区222,在第二个周期将存储单元B2中的两个数据b和d分别存储到缓冲区232和242。那么在第二个周期之后,开始从缓冲单元202读取数据a和数据b。
在本公开的一些实施例中,在依次将K/m个深度的数据存储到缓冲单元之后,并行读取存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据;以及将相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据写入第二存储器的同一第二存储单元中。
例如,按照深度从小到大并且位次从小到大的顺序对存储体中的多个子数据单元进行连续索引编号,在依次将K/m个深度的第一存储单元中的数据存储到缓冲单元之后,并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据,包括:从第一个周期到第K/m个周期,每个周期从存储体读出索引编号为(i-1)×K/m、…K/m×i-1的数据,并且存储到缓冲单元,i表示周期计数值;以及从第K/m+1个周期开始,对于每个周期,在读出索引编号为(i-1)×K/m、…K/m×i-1的数据,并且存储到缓冲单元的同时,从缓冲单元并行读取存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据。下面结合图3A~图3G的实施例来说明该方法。
图3A~图3G为本公开至少一个实施例提供一种对数据格式为16比特的数据进行重排的方法示意图。在图3A~图3G中仅示出了一个存储体的示意图,对局部数据存储器中的每个存储体都执行类似的操作。
如图3A所示,局部数据存储器中的一个存储体的多个第一存储单元按照深度从小到大并且位次从小到大的顺序进行连续索引编号,例如索引编号分别为索引0、索引1、索引2、索引3、索引4、索引5、索引6和索引7。
在数据格式为m bit=16bit,K bit=32bit的情况下,K/m=2。
在第1个周期(即,i=1),从每个存储体内读出索引0和索引1的数据,送往缓冲区。
在第2个周期(即,i=2),从每个存储体内读出索引2和索引3的数据,送往缓冲区。
在第3个周期(即,i=3),从每个存储体内读出索引4和索引5的数据,送往缓冲区。同时,从缓冲区读出索引0和索引2的数据,送往向量通用寄存器阵列。
在第4个周期(即,i=4),从每个存储体内读出索引6和索引7的数据,送往缓冲区。同时,从缓冲区读出索引1和索引3的数据,送往向量通用寄存器阵列。
在第5个周期(即,i=5),从每个存储体内读出索引8和索引9的数据,送往缓冲区。同时,从缓冲区读出索引4和索引6的数据,送往向量通用寄存器阵列。
在第6个周期(即,i=6),从每个存储体内读出索引10和索引11的数据,送往缓冲区。同时,从缓冲区读出索引5和索引7的数据,送往向量通用寄存器阵列。
在第7个周期(即,i=7),从每个存储体内读出索引12和索引13的数据,送往缓冲区。同时,从缓冲区读出索引8和索引10的数据,送往向量通用寄存器阵列。除了读取和写入的索引数据不同外,硬件的控制逻辑和周期3时相同。
整个执行流程中,数据从局部数据存储器中按矩阵的“列方向”读出,按“行方向”组合在一起后,写入向量存储器阵列。
图4A~图4M为本公开至少一个实施例提供一种对数据格式为8比特的数据进行重排的方法示意图。在图4A~图4M中仅示出了一个存储体的示意图,对局部数据存储器中的每个存储体都执行类似的操作。
在数据格式为m=8,K=32的情况下,K/m=4。
在第1个周期(即,i=1),从每个存储体内读出索引0、索引1、索引2和索引3的数据,送往缓冲区。
在第2个周期(即,i=2),从每个存储体内读出索引4、索引5、索引6和索引7的数据,送往缓冲区。
在第3个周期(即,i=3),从每个存储体内读出索引8、索引9、索引10和索引11的数据,送往缓冲区。
在第4个周期(即,i=4),从每个存储体内读出索引12、索引13、索引14和索引15的数据,送往缓冲区。
在第5个周期(即,i=5),从每个存储体内读出索引16、索引17、索引18和索引19的数据,送往缓冲区。同时,从缓冲区读出索引0、索引4、索引8和索引12的数据,送往向量通用寄存器阵列。
在第6个周期(即,i=6),从每个存储体内读出索引20、索引21、索引22和索引23的数据,送往缓冲区。同时,从缓冲区读出索引1、索引5、索引9和索引13的数据,送往向量通用寄存器阵列。
在第7个周期(即,i=7),从每个存储体内读出索引24、索引25、索引26和索引27的数据,送往缓冲区。同时,从缓冲区读出索引2、索引6、索引10和索引14的数据,送往向量通用寄存器阵列。
在第8个周期(即,i=8),从每个存储体内读出索引28、索引29、索引30和索引31的数据,送往缓冲区。同时,从缓冲区读出索引3、索引7、索引11和索引15的数据,送往向量通用寄存器阵列。
在第9个周期(即,i=9),从每个存储体内读出索引32、索引33、索引34和索引35的数据,送往缓冲区。同时,从缓冲区读出索引16、索引20、索引24、索引28的数据,送往向量通用寄存器阵列。
在第10个周期(即,i=10),从每个存储体内读出索引36、索引37、索引38和索引39的数据,送往缓冲区。同时,从缓冲区读出索引17、索引21、索引25、索引29的数据,送往向量通用寄存器阵列。
在第11个周期(即,i=11),从每个存储体内读出索引40、索引41、索引42和索引43的数据,送往缓冲区。同时,从缓冲区读出索引18、索引22、索引26和索引30的数据,送往向量通用寄存器阵列。
在第周期12个周期(即,i=12),从每个存储体内读出索引44、索引45、索引46和索引47的数据,送往缓冲区。同时,从缓冲区读出索引19、索引23、索引27和索引31的数据,送往向量通用寄存器阵列。
在第周期13个周期(即,i=13),从每个bank内读出索引48、索引49、索引50和索引51的数据,送往缓冲区。同时,从缓冲区读出索引32、索引36、索引40和索引44的数据,送往向量通用寄存器阵列。除了读取和写入的索引数据不同外,硬件的控制逻辑和周期5时相同。
整个的执行流程中,数据从局部数据存储器中按矩阵的“列方向”读出,按“行方向”组合在一起后,写入向量存储器阵列。
在本公开的另一些实施例中,在数据格式为m=4,K=32的情况下,K/m=8,从第一个周期到第8个周期,每个周期从所述存储体读出索引编号为(i-1)×K/m、…K/m×i-1的数据,并且存储到所述缓冲单元,i表示周期计数值;以及从第9个周期开始,对于每个周期,在读出索引编号为(i-1)×K/m、…K/m×i-1的数据,并且存储到所述缓冲单元的同时,从所述缓冲单元并行读取所述存储体中相邻的8个第一存储单元中位于相同位次的8个数据。对于m=4bit,K=32的情况与m=8和m=16的实施方式类似,不再赘述。
本公开的另一方面提供了一种数据传输装置,用于从第一存储器向第二存储器传输数据,第一存储器包括深度为N的存储体,存储体在每个深度上的第一存储单元的宽度为K比特,第二存储器包括多个连续排列的第二存储单元,第二存储单元的宽度为K比特。
图5示出了本公开至少一个实施例提供的一种数据传输装置500的示意性框图。
如图5所示,该数据传输装置500包括读取单元501、缓冲单元502、和写入单元503。
读取单元501,配置为依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元502,数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元。
写入单元503配置为按照指定顺序从缓冲单元中将存储体中数据写入到第二存储器,指定顺序包括:存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在第二存储器的同一第二存储单元中。
在本公开的一些实施例中,缓冲单元502包括多个寄存器,读取单元501包括多个第一多路选择器,写入单元503包括多个第二多路选择器。多个寄存器中的每个配置为存储从第一存储单元读取的数据。多个第一多路选择器配置为读取每个存储体的N个深度中每个深度上的第一存储单元存储的数据,并且依次将每个深度上的第一存储单元存储的数据存储到多个寄存器中的K/m个寄存器。多个第二多路选择器配置为从多个寄存器选择存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据,并且写入第二存储器的同一第二存储单元中。
多个寄存器中每个均作为一个上文描述的缓冲区。
图6A示出了本公开至少一个实施例提供的一种图5中数据传输装置500的示意性结构图。
如图6A所示,读取单元501包括多个多路选择器,读取单元501包括的多个多路选择器例如为多路选择器511、多路选择器521、多路选择器531、多路选择器541、多路选择器551和多路选择器561。多路选择器511、多路选择器521、多路选择器531、多路选择器541、多路选择器551和多路选择器561均为第一多路选择器的示例。
缓冲单元502包括多个寄存器,多个寄存器例如包括寄存器512、寄存器522、寄存器532和寄存器542。每个寄存器均为一个缓冲区。
写入单元503包括多个多路选择器,写入单元503包括的多个多路选择器例如为多路选择器513、多路选择器523、多路选择器533、多路选择器543、多路选择器553和多路选择器563。多个多路选择器例如为多路选择器513、多路选择器523、多路选择器533、多路选择器543、多路选择器553和多路选择器563均为第二多路选择器的示例。
在图6A中每个方形表示一个寄存器,每个梯形表示一个多路选择器。
图6A中的数据传输装置500为单个存储体对应的用于对16bit数据进行重排的硬件结构的示例。如上文描述的,单个存储体可以对应4个缓冲区即4个寄存器,每个寄存器用于存储一个16bit的数据,这样能够实现缓冲单元对16bit数据的写入和读出的并行处理。
对于读取单元501,例如多路选择器511和多路选择器521均为一对多选择器,即一个输入端多个输出端。多路选择器531、多路选择器541、多路选择器551和多路选择器561可以为多对一多路选择器,即多个输入端一个输出端。
例如,多路选择器511的输入端与存储体中位于第一行的子数据单元(例如,索引0、索引2、索引4和索引6的子数据单元)耦接,多路选择器511的输出端与多路选择器531、多路选择器541和多路选择器551耦接,从而接收存储体中位于第一行的子数据单元的第一数据,并且将该第一数据输出至多路选择器531、多路选择器541和多路选择器551之一。
多路选择器521的输入端与存储体中位于第二行的子数据单元(例如,索引1、索引3、索引5和索引7的子数据单元)耦接,多路选择器521的输出端与多路选择器541、多路选择器551和多路选择器561耦接,从而接收存储体中位于第二行的子数据单元的第二数据,并且将该第二数据输出至多路选择器541、多路选择器551和多路选择器561之一。
多路选择器531、多路选择器541、多路选择器551和多路选择器561与寄存器512、寄存器522、寄存器532和寄存器542一一对应耦接,从而将多路选择器531、多路选择器541、多路选择器551和多路选择器561提供的数据分别写入对应的寄存器。
对于写入单元503,例如多路选择器513、多路选择器523、多路选择器533、多路选择器543为一对多多路选择器;多路选择器553和多路选择器563可以是多对一多路选择器。
多路选择器513、多路选择器523、多路选择器533、多路选择器543的输入端与寄存器512、寄存器522、寄存器532和寄存器542一一对应耦接;多路选择器513的输出端与多路选择器553的输入端耦接,多路选择器523的输出端分别与多路选择器553和多路选择器563的输入端耦接;多路选择器533的输出端分别与多路选择器553和多路选择器563的输入端耦接;多路选择器543的输出端与多路选择器563的输入端耦接。多路选择器553的输出端与第二存储器的第一行子数据单元耦接,多路选择器563的输出端与第二存储器的第二行子数据单元耦接。
例如,在第一个周期,多路选择器511和多路选择器521分别从第一存储器中的存储体的深度为0的存储单元接收索引0的子数据单元和索引1的子数据单元中数据。下文中为了便于描述和理解,假设索引x中存储的数据为x,x为正整数。在第一个周期,多路选择器511和多路选择器521接收深度为0存储单元中索引为0的子数据单元中的数据0和索引为1的子数据单元中的数据1。并且,多路选择器511经由多路选择器531,将数据0写入寄存器512;多路选择器521经由多路选择器541,将数据1写入寄存器522。
在第二个周期,多路选择器511和多路选择器521接收深度为1存储单元中索引为2的子数据单元中的数据2和索引为3的子数据单元中的数据3。并且,多路选择器511经由多路选择器551,将数据2写入寄存器532;多路选择器521经由多路选择器561,将数据3写入寄存器542。
在第三个周期,多路选择器513接收寄存器512提供的数据0,并且经由多路选择器553将数据0提供至第二存储器的深度为0的存储单元中低16位存储。多路选择器533接收寄存器532提供的数据2,并且经由多路选择器563将数据2提供至第二存储器的深度为0的存储单元中高16位存储。同时,多路选择器511和521接收深度为2存储单元中索引为4的子数据单元中的数据4和索引为5的子数据单元中的数据5。并且,多路选择器511经由多路选择器531,将数据4写入寄存器512;多路选择器521经由多路选择器551,将数据5写入寄存器532。
在第四个周期,多路选择器523接收寄存器522提供的数据1,并且经由多路选择器553将数据1提供至第二存储器的深度为1的存储单元中低16位存储。多路选择器543接收寄存器542提供的数据3,并且经由多路选择器563将数据3提供至第二存储器的深度为1的存储单元中高16位存储。同时,多路选择器511和521接收深度为3存储单元中索引为6的子数据单元中的数据6和索引为7的子数据单元中的数据7。并且,多路选择器511经由多路选择器541,将数据6写入寄存器522;多路选择器521经由多路选择器561,将数据7写入寄存器542。
后续每个周期中多路选择器和寄存器配合执行上述类似的操作,使得数据传输装置500完成图3A~图3G的步骤,不再赘述。
图6B示出了本公开至少一个实施例提供的另一种数据传输装置600的示意性结构图。
图6B中的数据传输装置600为单个存储体对应的用于对8bit数据进行重排的硬件结构的示例。如上文描述的,单个存储体可以对应16个缓冲区即16个寄存器,每个寄存器用于存储一个8bit的数据,这样能够实现缓冲单元对8bit数据的写入和读出的并行处理。
图6B的示例中,读取单元601例如包括4个一对多多路选择器611以及16个多对1多路选择器621;缓冲单元602例如包括16个寄存器612,写入单元603例如包括16个一对多多路选择器613和4个多对一多路选择器623。类似地,在图6A中每个方形表示一个寄存器,每个梯形表示一个多路选择器。
读取单元601中的多个多路选择器611和多个多路选择器621执行的操作类似于图6A中读取单元中的多个多路选择器;16个寄存器612执行的操作类似于图6A中的寄存器512、寄存器522、寄存器532和寄存器542;写入单元603中的多个多路选择器613和多个多路选择器623执行的操作类似于图6A中写入单元503包括的多个多路选择器。这些多路选择器和寄存器配合共同完成图4A~4M描述的各个步骤。
需要说明的是,图6A和图6B仅为一种示意性硬件结构图,对本公开的实施例没有限定作用,在实际应用中的硬件结构可以多于或者少于图6A和图6B示出的硬件结构。
图6A和图6B仅以传输第一存储器中一个存储体中的数据到第二存储器为例说明本公开的实施例,但是实际应用中,第一存储器通常包括多个存储体,可以对每个存储体分别执行图6A或者图6B所描述的实施方式。
图6A和图6B分别以在16bit数据传输的同时进行重排和在8bit数据传输的同时进行重排为例来说明本公开的实施例,但是这对本公开不具有限定作用。本公开的实施例同样适用于于例如4bit的数据传输和重排、32bit的数据传输和重排等,本领域技术人员可以根据本公开提供的实施例适应性地修改,以用于4bit的数据传输和重排、32bit的数据传输和重排。
在本公开的一些实施例中,第一存储器包括P个存储体,缓冲单元的数量为P,每个缓冲单元包括预设数量的寄存器,P个存储体和P个缓冲单元一一对应,P为正整数。预设数量为大于或者等于K/m的正整数。例如,每个缓冲单元包括K/m个寄存器作为K/m个缓冲区,P个存储体需要P个缓冲单元,则需要P*(K/m)个缓冲区。例如,每个缓冲单元可以包括(K/m)2个寄存器。
本公开的实施例中的硬件结构,可以在读取数据的过程中同时重排数据,使得重排数据这一步骤不占用额外的时间,从而提高数据读取的效率。并且,本发明中的矩阵重排硬件结构适用于存储体数目可配置的局部数据存储器,满足不同位宽(带宽)的局部数据存储器的需求;并且,本公开实施例中的硬件结构适用于多种数据格式的矩阵运算,包括但不限于16bit、8bit、4bit等。
在本公开的实施例中,数据传输装置的硬件结构包括P个单存储体的硬件结构,P的数目和局部数据存储器中存储体的个数保持一致。数据传输装置的输入来自于局部数据存储器,数据传输装置的输出是送给向量通用寄存器阵列。
每个单bank硬件结构的资源和连接关系依据矩阵数据格式是16bit,8bit还是4bit而有所不同。如果数据是16bit(如图6A所示),输入数据会按特定的连接关系在特定的周期送入4*P个16bit的缓冲区中,再按照特定的顺序从缓冲区中输出。如果数据是8bit(如图6B所示),输入数据会按特定的连接关系在特定的周期送入16*P个8bit的缓冲区中,再按照特定的顺序从缓冲区中输出。类似地,如果数据是4bit,输入数据会按特定的连接关系在特定的周期送入64*P个4bit的缓冲区中,再按照特定的顺序从缓冲区中输出。
需要说明的是,本公开的实施例中,数据传输装置的各个单元与前述的数据传输方法的各个步骤对应,关于数据传输装置的具体功能可以参考关于数据传输方法的相关描述,此处不再赘述。图5所示的数据传输装置500以及图6B示出的数据传输装置的组件和结构只是示例性的,而非限制性的,根据需要,数据传输装置还可以包括其他组件和结构。
图7示出了本公开至少一个实施例提供的一种电子设备700的示意框图。
例如,如图7所示,该电子设备700包括数据传输装置710、第一存储器720和第二存储器730。
数据传输装置710例如为本公开任一实施例提供的数据传输装置。例如,数据传输装置710可以是图6A或者图6B所示的结构。第一存储器720和数据传输装置710耦接,数据传输装置710和第二存储器730耦接。
第一存储器720例如为图1B示出的局部数据存储器,第二存储器730例如为图1B向量通用寄存器阵列。
数据传输装置710用于从第一存储器向第二存储器传输数据,第一存储器包括深度为N的存储体,存储体在每个深度上的第一存储单元的宽度为K比特,第二存储器包括多个连续排列的第二存储单元,第二存储单元的宽度为K比特,方法包括:依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元,其中,数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元;以及按照指定顺序从缓冲单元中将存储体中的数据写入到第二存储器,指定顺序包括:存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在第二存储器的同一第二存储单元中。
该电子设备能够在读取数据的过程中同时重排数据,使得重排数据这一步骤不占用额外的时间,从而提高数据读取的效率。并且,本发明中的矩阵重排硬件结构适用于存储体数目可配置的局部数据存储器,满足不同位宽(带宽)的局部数据存储器的需求;并且,本公开实施例中的硬件结构适用于多种数据格式的矩阵运算,包括但不限于16bit、8bit、4bit等。
例如,数据传输装置710除了可以通过硬件实现之外,在本公开的另一些实施例中,数据传输装置710可以为硬件、软件、固件以及它们的任意可行的组合。例如,数据传输装置710可以为专用或通用的电路、芯片或装置等。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种数据传输方法,用于从第一存储器向第二存储器传输数据,所述第一存储器包括深度为N的存储体,所述存储体在每个深度上的第一存储单元的宽度为K比特,所述第二存储器包括多个连续排列的第二存储单元,所述第二存储单元的宽度为K比特,所述方法包括:
依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到缓冲单元,其中,所述数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元,其中,N、K和m均为正整数;以及
按照指定顺序从所述缓冲单元中将所述存储体中的数据写入到所述第二存储器,
其中,所述指定顺序包括:
所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在所述第二存储器的同一第二存储单元中。
2.根据权利要求1所述的方法,其中,所述存储体中相邻的K/m个第一存储单元中深度低的第一存储单元存储的数据位于所述第二存储单元中的低位。
3.根据权利要求1或2所述的方法,其中,依次读取所述N个深度中每个深度上的第一存储单元存储的数据,包括:
按照深度顺序依次读取所述N个深度中每个深度上的第一存储单元存储的数据,并且并行读取同一第一存储单元存储的所述K/m个子数据单元中的数据。
4.根据权利要求1所述的方法,其中,所述缓冲单元包括多个缓冲区,每个缓冲区用于存储一个所述m比特的数据,所述多个缓冲区的数量大于或者等于K/m。
5.根据权利要求4所述的方法,其中,所述缓冲单元包括(K/m)2个连续排列的缓冲区,
按照指定顺序从所述缓冲单元中将所述存储体中的数据写入到所述第二存储器,包括:
在依次将K/m个深度的第一存储单元中的数据存储到所述缓冲单元之后,开始从所述缓冲单元读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据。
6.根据权利要求5所述的方法,其中,在依次将K/m个深度第一存储单元中的数据存储到缓冲单元之后,开始从所述缓冲单元读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据,包括:
在依次将K/m个深度的第一存储单元中的数据存储到缓冲单元之后,并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据;以及
将所述相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据写入所述第二存储器的同一第二存储单元中。
7.根据权利要求6所述的方法,其中,按照深度从小到大并且位次从小到大的顺序对所述存储体中的多个子数据单元进行连续索引编号,
在依次将K/m个深度的第一存储单元中的数据存储到缓冲单元之后,并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个子数据单元中的数据,包括:
从第一个周期到第K/m个周期,每个周期从所述存储体读出索引编号为(i-1)×K/m、…K/m×i-1的子数据单元中的数据,并且存储到所述缓冲单元,其中,i表示周期计数值;以及
从第K/m+1个周期开始,对于每个周期,在读出索引编号为(i-1)×K/m、…K/m×i-1的子数据单元中的数据,并且存储到所述缓冲单元的同时,从所述缓冲单元并行读取所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据。
8.一种数据传输装置,用于从第一存储器向第二存储器传输数据,所述第一存储器包括深度为N的存储体,所述存储体在每个深度上的第一存储单元的宽度为K比特,所述第二存储器包括多个连续排列的第二存储单元,所述第二存储单元的宽度为K比特,所述装置包括:
缓冲单元;
读取单元,配置为依次读取N个深度中每个深度上的第一存储单元存储的数据,并且依次将N个深度的数据存储到所述缓冲单元,其中,所述数据为m比特,每个第一存储单元从低位到高位按照m比特划分为K/m个子数据单元,其中,N、K和m均为正整数;以及
写入单元,配置为按照指定顺序从所述缓冲单元中将所述存储体中的数据写入到所述第二存储器,
其中,所述指定顺序包括:
所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据被存储在所述第二存储器的同一第二存储单元中。
9.根据权利要求8所述的装置,其中,
所述缓冲单元包括:多个寄存器,每个寄存器配置为存储从第一存储单元读取的所述数据,
所述读取单元包括:多个第一多路选择器,所述多个第一多路选择器配置为读取每个所述存储体的N个深度中每个深度上的第一存储单元存储的数据,并且依次将所述每个深度上的所述第一存储单元存储的数据存储到所述多个寄存器中的K/m个寄存器,
所述写入单元包括:多个第二多路选择器,所述多个第二多路选择器配置为从所述多个寄存器选择所述存储体中相邻的K/m个第一存储单元中位于相同位次的K/m个数据,并且写入到所述第二存储器的同一第二存储单元中。
10.根据权利要求8所述的装置,其中,所述第一存储器包括P个所述存储体,所述缓冲单元的数量为P,每个缓冲单元包括预设数量的寄存器,P个所述存储体和P个所述缓冲单元一一对应,其中,P为正整数。
11.根据权利要求10所述的装置,所述预设数量为大于或者等于K/m的正整数。
12.一种电子设备,包括:
根据权利要求8~11任一项所述的数据传输装置;
所述第一存储器;以及
所述第二存储器,
其中,所述第一存储器和所述数据传输装置耦接,所述数据传输装置和所述第二存储器耦接。
CN202311700987.3A 2023-12-12 2023-12-12 数据传输方法、数据传输装置和电子设备 Pending CN117725002A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311700987.3A CN117725002A (zh) 2023-12-12 2023-12-12 数据传输方法、数据传输装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311700987.3A CN117725002A (zh) 2023-12-12 2023-12-12 数据传输方法、数据传输装置和电子设备

Publications (1)

Publication Number Publication Date
CN117725002A true CN117725002A (zh) 2024-03-19

Family

ID=90200921

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311700987.3A Pending CN117725002A (zh) 2023-12-12 2023-12-12 数据传输方法、数据传输装置和电子设备

Country Status (1)

Country Link
CN (1) CN117725002A (zh)

Similar Documents

Publication Publication Date Title
US4727474A (en) Staging memory for massively parallel processor
US4845664A (en) On-chip bit reordering structure
US20110264723A1 (en) System and method for successive matrix transposes
US20090031089A1 (en) Transpose Memory And Method Thereof
US9146696B2 (en) Multi-granularity parallel storage system and storage
US20140344515A1 (en) Multi-granularity parallel storage system
JPH07168752A (ja) ディスプレイメモリ構成体
EP0520425B1 (en) Semiconductor memory device
US10452356B2 (en) Arithmetic processing apparatus and control method for arithmetic processing apparatus
CN117725002A (zh) 数据传输方法、数据传输装置和电子设备
JPH09198862A (ja) 半導体メモリ
US7231413B2 (en) Transposition circuit
EP3757821A1 (en) Apparatus and method for transforming matrix, and dataprocessing system
US5193203A (en) System for rearranging sequential data words from an initial order to an arrival order in a predetermined order
CN111882481A (zh) 数据传输方法及装置
JPS62146064A (ja) マルチポ−トメモリ
JPS6037930B2 (ja) 情報記憶装置
JPH028335B2 (zh)
US11699468B2 (en) Memory device, semiconductor system, and data processing system
JP6801053B1 (ja) Sram、半導体集積回路及びlcdドライバ
JP4252406B2 (ja) データ変換装置
JP2824976B2 (ja) 2次元配列データ回転装置
KR20040085046A (ko) 디지털영상처리장치
CN117150196A (zh) 一种基于fpga的高速紧凑流水线型矩阵转置实现方法
CN116306814A (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