CN102541507B - 维度可重配的数据处理方法、系统和矩阵乘法处理器 - Google Patents

维度可重配的数据处理方法、系统和矩阵乘法处理器 Download PDF

Info

Publication number
CN102541507B
CN102541507B CN201010620509.8A CN201010620509A CN102541507B CN 102541507 B CN102541507 B CN 102541507B CN 201010620509 A CN201010620509 A CN 201010620509A CN 102541507 B CN102541507 B CN 102541507B
Authority
CN
China
Prior art keywords
dimension
matrix
ranks
region
address
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
Application number
CN201010620509.8A
Other languages
English (en)
Other versions
CN102541507A (zh
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.)
Lusheng Technology Co.,Ltd.
Original Assignee
Leadcore 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 Leadcore Technology Co Ltd filed Critical Leadcore Technology Co Ltd
Priority to CN201010620509.8A priority Critical patent/CN102541507B/zh
Publication of CN102541507A publication Critical patent/CN102541507A/zh
Application granted granted Critical
Publication of CN102541507B publication Critical patent/CN102541507B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供了一种维度可重配的矩阵数据处理方法,包括:预先依据需要支持的最大维度将存储器划分出固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系;在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域;在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,依据所述目标数据地址调用所述目标数据。本发明同时还提供了实现上述方法的系统及矩阵乘法器。本发明能够满足可重配维度需求,以减少资源损耗。

Description

维度可重配的数据处理方法、系统和矩阵乘法处理器
技术领域
本发明涉及通信及网络技术领域,更具体地说,涉及一种应用于终端、基站(NodeB,NB)、无线网络控制器(RadioNetworkController,RNC)、核心网(CoreNetwork,CN)的维度可重配的数据处理方法、系统和矩阵乘法处理器。
背景技术
目前,在进行矩阵数据处理过程中,硬件实现矩阵乘法大多是基于某种固定维度,预先将矩阵作为向量进行存储,并在处理时采用矩阵向量乘法进行处理。例如3×3矩阵乘法的具体方式如下式所示:
A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 × B 11 B 12 B 13 B 21 B 22 B 23 B 31 B 32 B 33 = C 11 C 12 C 13 C 21 C 22 C 23 C 31 C 32 C 33
其中,矩阵乘法的一个子系统可表示为:
A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 × B 11 B 21 B 31 = C 11 C 21 C 31
其计算方式具体为:
A11×B11+A12×B21+A13×B31=C11
A21×B11+A22×B21+A23×B31=C21
A31×B11+A32×B21+A33×B31=C31
由三个子系统组合运算或由一个子系统执行三次运算都可以完成一次3×3矩阵乘法,此过程总共需要进行27次复乘运算和18次加法运算。此过程可以在不增加运算时间的前提下,由硬件乘法器和加法器在三倍时钟频率下配合一定的寄存器和控制单元完成。
图1示出了现有技术进行矩阵乘法运算的处理结构,如图所示,矩阵数据逐行存储于RAM或寄存器中,各矩阵数据之间紧密排列,硬件加法器输出数据输送到加法器的输入端A,从加载数据开始,经过三个周期,乘法器输出数据达到加法器的输入端B,输入端B的数据选择开关由计数器cntr3控制,使第一个有效乘法结果到达输入端A时选择输出0,第二、三个有效数据到达时选择累加寄存器,三个时钟周期循环一次,输出的计算结果(X、Y和Z)的有效值将循环出现,两个输出控制计数器cntr3_out和cntr9_out控制所述计算结果的输出,其中,Cntr3_out从0计数到3并保持,Cntr9_out待Cntr3_out从0计数到3时循环计数,分别计数到3、6、9时控制更新计算结果(X、Y和Z)。
上述方案虽然能够在某种维度下进行矩阵数据处理,但是,并不适用于涉及阵列信号处理、有着多种处理维度需求的系统,具体理由如下:
首先,上述方案将输入、输出矩阵数据以向量形式紧密排列于存储器中,而由于不同维度下,矩阵数据的地址是不同的,因此这种以向量形式紧密排列的形式不便于外部(如上层软件)的数据访问;
其次,上述方案为每个矩阵分配一个地址计数器用于进行直接计数寻址,不便于插入指示维度变化的控制节点来改变寻址,而需要另外加入逻辑来生成随维度变化的多个地址节点值,资源消耗较多。
发明内容
本发明提供一种维度可重配的矩阵数据处理方法、系统和矩阵乘法器,以满足可重配维度需求,以减少资源损耗。
本发明提供的技术方案如下:
一种维度可重配的矩阵数据处理方法,包括:
预先依据需要支持的最大维度将存储器划分出固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系;
在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域;
在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,依据所述目标数据地址调用所述目标数据。
优选的,上述方法中,各个单元区域的地址与各行列序号之间的对应关系具体为:各个单元区域的地址由该单元区域在整个行列区域中的行列序号位拼接后减去进位差值得到,所述进位差值以基准进位制的差值逐行或逐列递增。
优选的,上述方法中,当存储某一矩阵的存储器支持的最大列维度等于2的整数次幂时,所述矩阵对应的进位差值始终为0。
优选的,上述方法中,所述存储器为随机存储器RAM或寄存器组。
一种维度可重配的矩阵数据处理系统,包括:
存储器,其存储区域为支持最大维度的固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系;
存储控制单元,用于在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域;
数据调用单元,用于在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,依据所述目标数据地址调用所述目标数据。
优选的,上述系统中,各个单元区域的地址与各行列序号之间的对应关系具体为:各个单元区域的地址由该单元区域在整个行列区域中的行列序号位拼接后减去进位差值得到,所述进位差值以基准进位制的差值逐行或逐列递增。
优选的,上述系统中,如果存储某一矩阵的存储器支持的最大列维度等于2的整数次幂,则所述矩阵对应的进位差值始终为0。
优选的,上述系统中,所述存储器为随机存储器RAM或寄存器组。
一种矩阵乘法处理器,包括:
第一存储器,用于存储第一待处理矩阵数据;
第二存储器,用于存储第二待处理矩阵数据;
第三存储器,用于存储结果矩阵数据;
逻辑控制器,用于产生控制信号和分别对所述第一存储器、第二存储器和第三存储器的计数信号;
拼接单元,用于将两路不同计数信号的计数值进行位拼接后,在控制信号的控制下,分别传输给所述第一存储器和第二存储器,指示所述第一存储器、第二存储器输出相应单元区域的数据;
乘累加器,用于获取所述第一存储器、第二存储器输出的矩阵数据并进行乘累加后,在所述控制信号的控制下提供给第三存储器,由所述第三存储器根据所述计数信号确定目标单元区域后存入所述乘累加器提供的数据;
所述第一存储器、第二存储器和第三存储器的存储区域为支持最大维度的固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系。
优选的,上述乘法处理器中,还包括设置在拼接单元输出端的减法单元,用于将拼接单元拼接后输出的计数值减去一个进位差值后分别传输给所述第一存储器和第二存储器。
与现有技术相比,本实施例提供的方案具有以下优点和特点:
首先,预先根据最大可支持的维度将存储空间划分为固定的行列区域,能够不需改变存储器存储结构即可匹配不同维度的矩阵数据的处理,使得存储器能够被重复使用,提高资源利用率;
其次,固定的行列区域中的任意一个单元区域均可由行列序号固定对应,在寻址时由矩阵元素的行、列序号进行拼接(或者拼接后再减去一个进位差值)间接得到所述矩阵元素的地址,相比现有技术的直接寻址方式,本实施例所述的间接寻址方式能够由行、列计数器和差值计数器计数确定不同维度的矩阵数据,使用灵活,无需加入逻辑来生成随维度变化的多个地址节点值,有效减少了资源消耗。并且,方便插入计数控制节点使外部输入得以控制改变矩阵乘法的维度。有利于外部调用,便于处理硬件阵列信号。
另外,在实际使用时,对于矩阵数据按行存储的情况,若存储某一矩阵的存储器支持的最大列维度为2的整数次幂,则无需为该矩阵开辟列进制差值计数器和生成地址所需的减法器资源,行列序号计数器的位拼接即为所需地址值,可进一步节省资源。同样的,对于矩阵数据按列存储的情况,若存储某一矩阵的存储器支持的最大行维度为2的整数次幂,则无需为该矩阵开辟行进制差值计数器和生成地址所需的减法器资源,行列序号计数器的位拼接即为所需地址值,可进一步节省资源。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术进行矩阵乘法运算的处理器的结构示意图;
图2为本发明实施例提供的一种维度可重配的矩阵数据处理方法的基本流程图;
图3为本发明实施例中针对最大支持维度为M×N的矩阵的存储空间的结构示意图;
图4为本发明实施例中针对维度为Min×Nin的矩阵的存储空间的结构示意图;
图5为本发明实施例中最大可支持的列维度N、P均为2的整数次幂时,矩阵存储结构示意图;
图6为本发明实施例中最大可支持的列维度N、P均为2的整数次幂时,进行矩阵乘法过程中行列计数器的产生时序图;
图7为本发明实施例中最大可支持的列维度N、P不为2的整数次幂时,矩阵存储结构示意图;
图8为本发明实施例中最大可支持的列维度N、P不为2的整数次幂时,地址值跟拼接值的关系示意图;
图9为本发明实施例中最大可支持的列维度N、P不为2的整数次幂时,进行矩阵乘法过程中行列计数器的产生时序图;
图10为本发明实施例提供的一种维度可重配的矩阵数据处理系统的结构示意图;
图11为本发明实施例提供的一种矩阵乘法处理器的结构示意图;
图12为本发明实施例提供的另一种矩阵乘法处理器的结构示意图;
图13为本发明实施例提供的一种适用于图11和图12所示乘法器的2拍乘累加器的结构示意图;
图14为本发明实施例中,支持最大维度为(5×6)×(6×7)=(5×7)的矩阵乘法,在输入维度为(2×3)×(3×4)=(2×4)时的矩阵元素地址示意图;
图15为本发明实施例中,支持最大维度为(5×6)×(6×7)=(5×7)的矩阵乘法,在输入维度为(2×3)×(3×4)=(2×4)时的仿真时序图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出了一种维度可重配的矩阵数据处理方法,基于一定的数据存储原则和相应的寻址和处理机制,实现支持最大配置处理维度下可重配维度的矩阵处理算法,满足可重配维度需求,以减少资源损耗。
下面进行详细介绍:
请参考图2,为本实施例提供的一种维度可重配的矩阵数据处理方法的基本流程图,包括以下步骤:
步骤S21、预先依据需要支持的最大维度将存储器划分出固定行列区域,该行列区域中的各个单元区域的地址与行列序号之间存在对应关系。
依据需要支持的最大维度将存储器划分出固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系。
本实施例提供的存储器可以是RAM或者寄存器组,下面仅以RAM为例进行说明。另外,本文提出的矩阵数据处理方法可以应用于各种矩阵处理过程,下面以矩阵相乘算法过程为例进行说明。
假设矩阵相乘为A×B=C,且矩阵乘法支持的最大维度分别为M×N、N×P和M×P。则在存储矩阵数据(下文统一称之为矩阵元素)之前,需要按照该最大维度开辟RAM的存储空间,并将所述存储空间按照行、列进行划分为多个具有不同地址的单元空间,并在后续重配矩阵维度时,RAM的存储空间结构不需要重新划分。
例如:针对前段所述的维度为M×N的矩阵,则需要开辟深度为M×N的RAM空间,如图3所示,前N个地址存放矩阵的第一行矩阵元素,其随后的N个地址存放矩阵的第二行矩阵元素,并以此类推。而当需要重配矩阵维度时,假设重配的维度为Min×Nin,其中,0≤Min<M,0≤Nin<N,则新矩阵占用存储空间如图4所示,图中所示黑色阴影部分为新矩阵所占用的空间,而空白部分则表示未用于存放新矩阵元素的剩余区域。可以看出,该RAM可以在一次划分区域后重复使用,由此提高了存储资源的利用率。
在经过上述操作后,对于存入RAM的任意一个矩阵元素,都有一个固定的地址偏移量与其行列序号对应,也就是说,偏移量加上元素的列序号即为所述元素的地址。
步骤S22、在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,进入步骤S23。
正如前文所述,在按照所能支持的最大维度划分RAM空间后,在外部重配矩阵维度时,无需重新划分行列区域。例如按照M×N维度划分RAM空间后,如果重配置矩阵维度为Min×Nin,其中,0≤Min<M,0≤Nin<N,则根据该维度确定所需要占用的存储空间为Min×Nin
步骤S23、将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域。
在将需要存储的矩阵元素按照行或列依次存入所述存储空间中的相应单元区域后,各矩阵元素存入的单元区域的地址等于该单元区域在整个存储器中的偏移量(即行序号)加上元素的列序号。
步骤S24、在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,进入步骤S25。
步骤S25、依据所述目标数据地址调用所述目标数据。
正如前文所述,由于单元区域地址与行列号之间具有对应关系,因此在调用数据(例如上层软件读取结果时),可以根据所述对应关系确定需调用的数据的地址,并依据该地址找到所述需调用的数据。
需要说明的是,对应于存储器支持的最大列维度的不同特点,所述单元区域地址与行列序号之间的对应关系存在不同,例如,在存储器支持的最大列维度为2的整数次幂时的所述对应关系,与在存储器支持的最大列维度不为2的整数次幂时的所述对应关系,是存在区别的,下面分为两种情况进行介绍:
第一种情况:存储器支持的最大列维度为2的整数次幂。
假设存储器支持的最大列维度N、P均为2的整数次幂,即N=2n,P=2p。以M=3,N=P=4为例,将各个矩阵的元素逐行排满各自存储器的地址空间,如图5所示,上图中cnt_M、cnt_N、cnt_P分别指示矩阵A、B、C的行、列序号,而m、n、p正是其各自的位宽。各个矩阵的数据存放于各自的存储器中,图中小方格中的数字代表矩阵中各元素在存储器中的地址,该值按列的方向递增。由于存储器支持的最大列维度为2的整数次幂,从以上排列不难看出,各元素的地址值可由其行、列序号值进行位拼接得到,即矩阵A、B、C的各元素地址值为{cnt_M,cnt_N}、{cnt_N,cnt_P}、{cnt_M,cnt_P}。例如,针对矩阵A存储地址为“6”的单元区域来说,其行序号为1,比特位为01,列序号为2,比特位为10,则将行序号与列序号值位拼接后得到0110,具体数值即为6。
在做矩阵乘法时,在做矩阵乘法时,可以通过产生计数器cnt_M[m-1:0]、cnt_N[n-1:0]、cnt_P[p-1:0]来指示当前需要进行复乘的操作数的行列值,按所得目标矩阵元素地址由小到大的顺序控制生成对应的行、列序列,即行0乘列0,行0乘列1,行0乘列2,......行2乘列2,行2乘列3,行、列计数器的产生时序图如图6所示,其中,cnt_M、cnt_N、cnt_P都是加1计数器,M_in、N_in和P_in为维度指示,外部应用模块可以通过输入维度指示信号M_in、N_in、P_in来控制计数节点。需要注意的是,注意这里的输入维度是基0值,如本次调用实现(2×3)×(3×4)的矩阵乘法,则外部输入指示应为1、2、3。
第二种情况:存储器支持的最大列维度不为2的整数次幂。
假设存储器支持的最大列维度N、P不为2的整数次幂,则一般情况下,存在以下关系式:2m-1<M≤2m,2n-1<N≤2n,2p-1<P≤2p。假设存储矩阵A的存储器支持的最大维度为3×5,若继续采用上述第一种情况对应的方式,即产生位宽分别为m、n、p的计数器cnt_M、cnt_N、cnt_P来指示所取数据的行、列信息,并利用所述行、列信息进行位拼接,则得到结果如图7所示,图中实线部分为所需的3×5的矩阵,计数器cnt_M、cnt_N指示矩阵元素的行、列信息,方框中为行、列计数器进行位拼接的结果。
可以看出,这种结果是错误的,这是因为:若需支持存储最大维度为维度为3×8的矩阵(实线和虚线部分),则需开辟深度为24的存储器进行数据存储,那么以这种位拼接的方法寻址是完全可行的;而对于支持存储最大维度为3×5的矩阵(实线部分),由于我们只开辟深度为15的存储器进行数据存储,则采用上述第一种情况对应的直接位拼接得到的地址会超出存储器的有效地址范围,且在存储器中的排列不连续,造成了存储空间的浪费,其原因在于元素地址是逐列递增的,在本例中列计数每计5个值则行计数器增1,而位拼接所得的地址值{cnt_M,cnt_N}则是按8进制得到的,因此当存储器支持的最大列维度不为2的整数次幂时,地址真实值与位拼接值存在一个进位差值,而该差值是以基准进位制的差值逐行递增的,用位拼接的地址值减去该差值就能得到真实的地址值,如图8所示,其中,cnt_ΔA指的是进位差值,该进位差值等于8-5=3,并且该差值逐行递增,如第0行,进位差值为0,而第1行,进位差值为3,第2行,进位差值为6。
因此,存储器中的单元区域的地址与该单元区域在所述存储器中的行列序号之间的对应关系为:单元区域的地址=行列序号位拼接结果-进位差值。
在具体操作时,通过设置一个差值计数器来协助计数器cnt_M、cnt_N、cnt_P指示所需取数据的行、列信息,所述差值计数器以存储器支持的最大列维度与2的整数次幂的差值进行递增的,其递增的条件与行计数器的递增条件相同。控制信号的生成与上述第一种情况相同。行、列计数器的产生时序情况如图9所示,其中,cnt_ΔA和cnt_ΔC分别为矩阵A和C的列进制差值计数器,其递增条件与行计数器cnt_M相同,cnt_ΔB为矩阵B的列进制差值计数器,其递增条件与行计数器cnt_N相同。
综上所述,基于以上两种情况,对于支持最大列维度为AM×N×BN×P=CM×P的矩阵乘法,总有2m-1<M≤2m,2n-1<N≤2n,2p-1<P≤2p,矩阵元素按行依次存储,则可由以下公式进行寻址处理:
raddr _ A = { cnt _ M , cnt _ N } - cnt _ ΔA raddr _ B = { cnt _ N , cnt _ P } - cnt _ ΔB waddr _ C = { cnt _ M , cnt _ P } - cnt _ ΔC (公式1)
其中,计数器cnt_M、cnt_N、cnt_P指示矩阵元素的行、列信息,由模块的输入信号M_in、N_in、P_in控制计数节点(输入值是基0的,即输入2、3、4表示维度为(3×4)×(4×5)=(3×5)的矩阵乘法),实现可变维度的矩阵乘法。
cnt_ΔA、cnt_ΔB和cnt_ΔC为矩阵的列进制差值计数器,其递增方式如下表所示:
表1
列进制差值计数器 递增与清零的使能条件 递增值
cnt_ΔA 与cnt_M相同 2n-N
cnt_ΔB 与cnt_N相同 2p-P
cnt_ΔC 与cnt_M相同 2p-P
需要说明的是,上述两种情况是基于矩阵数据按行的顺序进行存储的排列规则,前文揭示了详细的分析和描述,如果采用矩阵元素按列依次进行存储的排列规则,则上述分析和处理方法依然有效,对于地址的产生,只需改变行、列指示的拼接顺序以及列进制差值计数器的生成条件即可,矩阵各元素的寻址可以按照下面公式进行:
raddr _ A = { cnt _ N , cnt _ M } - cnt _ ΔA raddr _ B = { cnt _ P , cnt _ N } - cnt _ ΔB waddr _ C = { cnt _ P , cnt _ M } - cnt _ ΔC (公式2)
其中,矩阵的列进制差值计数器cnt_ΔA、cnt_ΔB和cnt_ΔC的递增值方式如下表所示:
表2
列进制差值计数器 递增与清零的使能条件 递增值
cnt_ΔA 与cnt_N相同 2m-M
cnt_ΔB 与cnt_P相同 2n-N
cnt_ΔC 与cnt_P相同 2m-M
从前文实施例所述,本发明实施例提供的矩阵数据处理方法存在以下优点和特点:
首先,预先根据需存储的矩阵最大维度将存储器空间划分为固定的行列区域,能够不需改变存储器空间结构即可匹配不同维度的矩阵数据的处理,使得存储器能够被重复使用,提高资源利用率;
其次,固定的行列区域中的任意一个单元区域均可由行列序号固定对应,在寻址时由矩阵元素的行、列序号进行拼接(或者拼接后再减去一个进位差值)间接得到所述矩阵元素的地址,相比现有技术的直接寻址方式,本实施例所述的间接寻址方式能够由行、列计数器和差值计数器计数确定不同维度的矩阵数据,使用灵活,无需加入逻辑来生成随维度变化的多个地址节点值,有效减少了资源消耗。并且,方便插入计数控制节点使外部输入得以控制改变矩阵乘法的维度。有利于外部调用,便于处理硬件阵列信号。
另外,在实际使用时,对于矩阵数据按行存储的情况,若存储某一矩阵的存储器支持的最大列维度为2的整数次幂,则无需为该矩阵开辟列进制差值计数器和生成地址所需的减法器资源,行列序号计数器的位拼接即为所需地址值,可进一步节省资源。同样的,对于矩阵数据按列存储的情况,若所存储某一矩阵的存储器支持的最大行维度为2的整数次幂,则无需为该矩阵开辟行进制差值计数器和生成地址所需的减法器资源,行列序号计数器的位拼接即为所需地址值,可进一步节省资源。
本发明同时还提供了实现上述方法的矩阵数据处理系统,图10示出了该系统的基本结构,如图所示,该系统包括:存储器101、存储控制单元102和数据调用单元103,其中:
存储器101,其存储区域为支持最大维度的固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系。
存储控制单元102,用于在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域。
数据调用单元103,用于在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,依据所述目标数据地址调用所述目标数据。
该系统的各部件具体的功能、工作原理和工作过程可以参考前文方法部分的描述,在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
例如,本文还提供了上述系统的一种硬件结构,该结构为可变维度矩阵乘法处理器,用于实现A×B=C的矩阵运算,该乘法处理器具有逻辑控制器、拼接单元、触发器、乘累加器和多个存储器(下面以RAM为例进行说明),具体结构如图11所示,包括逻辑控制器111、RAM112、RAM113、RAM114、乘累加器(MultiplyAddComponent,MAC)115以及若干拼接单元116和触发器117,其中RAM112、RAM113、RAM114分别用于存储矩阵A、矩阵B和矩阵C的矩阵数据,逻辑控制器111产生控制信号和分别对应RAM112、RAM113、RAM114的计数信号,由拼接单元116将两路不同计数信号的计数值进行位拼接后在控制信号的控制下,分别传输给RAM112、RAM113、RAM114,指示RAM112、RAM113向RAM114输出相应单元区域的数据,由RAM114根据所述计数信号确定目标单元区域后存入所述RAM112、RAM113提供的数据。
并且,所述逻辑控制器111还可以通过外部输入的维度信息,如M_in、N_in和P_in,确定计数信息的上限,从而实现按照该维度信息进行矩阵信息的寻址。
上述乘法器适合前文所述第一种情况。
本文还提供一种适合前文所述第二种情况的乘法处理器,其结构如图12所示,所述乘法处理器与图11所示乘法处理器的区别在于,还增加了减法单元118,该减法单元118用于在拼接单元116对分别针对矩阵A和矩阵B的计数数值进行位拼接后减去一个进位差值后,将结果分别提供给RAM112、RAM113。关于该进位差值的具体内容前文已经详细描述过,在此不再赘述。
本文同时还提出了一种适用于图11和图12所示乘法器的2拍乘累加器,其结构如图13所示,由多个乘法器131和加法器132组成,用于对输入的数据(如maca_din1[11:0]、maca_din2[11:0]、maca_din3[11:0]、maca_din4[11:0])进行乘法运算和加法运算,然后输出端输出结果(maca_pout[23:0])。
下面给出一般情况下,基于矩阵按行依次存储的原则,生成行列计数器、地址及相关控制的参考伪代码,按列依次存储原则的伪代码生成方式与上述原则类似,在此不再赘述:
//产生cnt_M、cnt_delta_A和cnt_delta_C,其中地址差值的递增值delta_A、delta_C作为参数已知
if(start)
cnt_M<=0;
cnt_delta_A<=0;
cnt_delta_C<=0;
elseif(cnt_en)
if((cnt_N==N_in)&(cnt_P==P_in))
if(cnt_M==M_in)
cnt_M<=0;
cnt_delta_A<=0;
cnt_delta_C<=0;
else
cnt_M<=cnt_M+1;
cnt_delta_A<=cnt_delta_A+delta_A;
cnt_delta_C<=cnt_delta_C+delta_C;
else
cnt_M<=cnt_M;
cnt_delta_A<=cnt_delta_A;
cnt_delta_C<=cnt_delta_C;
else
cnt_M<=0;
cnt_delta_A<=0;
cnt_delta_C<=0;
//产生cnt_N和cnt_delta_B,其中地址差值的递增值delta_B作为参数已知
if(start)
cnt_N<=0;
cnt_delta_B<=0;
elseif(cnt_en)
if(cnt_N==N_in)
cnt_N<=0;
cnt_delta_B<=0;
else
cnt_N<=cnt_N+1;
cnt_delta_B<=cnt_delta_B+delta_B;
else
cnt_N<=0;
cnt_delta_B<=0;
//产生cnt_P
if(start)
cnt_P<=0;
elseif(cnt_en)
if(cnt_N==N_in)
if(cnt_P==P_in)
cnt_P<=0;
else
cnt_P<=cnt_P+1′b1;
else
cnt_P<=cnt_P;
else
cnt_P<=0;
//产生地址
assignraddr_A={cnt_M,cnt_N}-cnt_delta_A;
assignraddr_B={cnt_N,cnt_P}-cnt_delta_B;
assignraddr_C={cnt_M,cnt_P}-cnt_delta_C;
//产生行列计数器的使能指示信号cnt_en
if(start)
cnt_en<=1′b1;
elseif((cnt_M==M_in)&(cnt_N==N_in)&(cnt_P==P_in))
cnt_en<=1′b0;
else
cnt_en<=cnt_en;
//产生乘累加器的清零信号
if(cnt_en)
if(cnt_N==N_in)
mac_clr<=1′b1;
else
mac_clr<=1′b0;
else
mac_clr<=1′b1;
另外,为了使本领域技术人员对本发明有更直观的理解,下面给出支持最大维度为(5×6)×(6×7)=(5×7)的矩阵乘法,在输入维度为(2×3)×(3×4)=(2×4)时的时序仿真图,可以与矩阵元素的地址示意图进行对照。
请参考图14,为矩阵元素的地址示意图,实线部分中标注了基于矩阵数据按行的顺序进行存储的规则,支持最大维度为(5×6)×(6×7)=(5×7)的矩阵乘法运算的元素存储方式,虚线部分为模块调用时重配维度为(2×3)×(3×4)=(2×4)的相关元素位置及地址,结合图15所示仿真时序图,可以较清晰的理解本发明所述的非直接寻址方式。
需要说明的是,图2至图15所示的实施例只是本发明所介绍的优选实施例,本领域技术人员在此基础上,完全可以设计出更多的实施例,因此,本发明并不局限于已提供的实施例,对这些实施例的多种修改对本领域的专业技术人员来说是显而易见的,都为本发明保护的范围,由于篇幅有限,不在此处赘述。
对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (7)

1.一种维度可重配的矩阵数据处理方法,其特征在于,包括:
预先依据需要支持的最大维度将存储器划分出固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系;
在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域;
在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,依据所述目标数据地址调用所述目标数据;
其中,所述最大维度,是指需要存储的多个矩阵中每个矩阵的维度最大值;
所述维度最大值,是指行的维度和列的维度均为最大的矩阵的维度;
所述固定行列区域,是在一次分配出来后,固定不变、可重复使用的;
所述固定行列区域分配出来后,所述行列序号是固定不变的;
各个单元区域的地址与各行列序号之间的对应关系具体为:各个单元区域的地址由该单元区域在整个行列区域中的行列序号位拼接后减去进位差值得到,所述进位差值以基准进位制的差值逐行或逐列递增。
2.根据权利要求1所述的方法,其特征在于,当存储某一矩阵的存储器支持的最大列维度等于2的整数次幂时,该矩阵对应的进位差值始终为0。
3.根据权利要求1或2所述的方法,其特征在于,所述存储器为随机存储器RAM或寄存器组。
4.一种维度可重配的矩阵数据处理系统,其特征在于,包括:
存储器,其存储区域为支持最大维度的固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系;
存储控制单元,用于在存储矩阵数据时,依据预设维度在所述行列区域中确定需要占用的存储空间,将需要存储的矩阵数据按照行或者列依次存入所述存储空间中相应的单元区域;
数据调用单元,用于在调用数据时,参考所述单元区域地址与行列序号之间的对应关系,确定目标数据地址,依据所述目标数据地址调用所述目标数据;
其中,所述最大维度,是指需要存储的多个矩阵中每个矩阵的维度最大值;
所述维度最大值,是指行的维度和列的维度均为最大的矩阵的维度;
所述固定行列区域,是在一次分配出来后,固定不变、可重复使用的;
所述固定行列区域分配出来后,所述行列序号是固定不变的;
各个单元区域的地址与各行列序号之间的对应关系具体为:各个单元区域的地址由该单元区域在整个行列区域中的行列序号位拼接后减去进位差值得到,所述进位差值以基准进位制的差值逐行或逐列递增。
5.根据权利要求4所述的系统,其特征在于,如果存储某一矩阵的存储器支持的最大列维度等于2的整数次幂,则所述矩阵对应的进位差值始终为0。
6.根据权利要求4或5所述的系统,其特征在于,所述存储器为随机存储器RAM或寄存器组。
7.一种矩阵乘法处理器,其特征在于,包括:
第一存储器,用于存储第一待处理矩阵数据;
第二存储器,用于存储第二待处理矩阵数据;
第三存储器,用于存储结果矩阵数据;
逻辑控制器,用于产生控制信号和分别对所述第一存储器、第二存储器和第三存储器的计数信号;
拼接单元,用于将两路不同计数信号的计数值进行位拼接后,在控制信号的控制下,分别传输给所述第一存储器和第二存储器,指示所述第一存储器、第二存储器输出相应单元区域的数据;
乘累加器,用于获取所述第一存储器、第二存储器输出的矩阵数据并进行乘累加后,在所述控制信号的控制下提供给第三存储器,由所述第三存储器根据所述计数信号确定目标单元区域后存入所述乘累加器提供的数据;
所述第一存储器、第二存储器和第三存储器的存储区域为支持最大维度的固定行列区域,所述行列区域具有多个单元区域,每个单元区域的地址与所述单元区域在整个行列区域中的行列序号之间具有对应关系;
还包括设置在拼接单元输出端的减法单元,用于将拼接单元拼接后输出的计数值减去一个进位差值后分别传输给所述第一存储器和第二存储器;
其中,所述最大维度,是指需要存储的多个矩阵中每个矩阵的维度最大值;
所述维度最大值,是指行的维度和列的维度均为最大的矩阵的维度;
所述固定行列区域,是在一次分配出来后,固定不变、可重复使用的;
所述固定行列区域分配出来后,所述行列序号是固定不变的。
CN201010620509.8A 2010-12-31 2010-12-31 维度可重配的数据处理方法、系统和矩阵乘法处理器 Active CN102541507B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010620509.8A CN102541507B (zh) 2010-12-31 2010-12-31 维度可重配的数据处理方法、系统和矩阵乘法处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010620509.8A CN102541507B (zh) 2010-12-31 2010-12-31 维度可重配的数据处理方法、系统和矩阵乘法处理器

Publications (2)

Publication Number Publication Date
CN102541507A CN102541507A (zh) 2012-07-04
CN102541507B true CN102541507B (zh) 2015-12-16

Family

ID=46348486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010620509.8A Active CN102541507B (zh) 2010-12-31 2010-12-31 维度可重配的数据处理方法、系统和矩阵乘法处理器

Country Status (1)

Country Link
CN (1) CN102541507B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11360744B2 (en) * 2017-06-29 2022-06-14 Beijing Qingying Machine Visual Technology Co., Ltd. Two-dimensional data matching method, device and logic circuit
CN107909148B (zh) * 2017-12-12 2020-10-20 南京地平线机器人技术有限公司 用于执行卷积神经网络中的卷积运算的装置
CN110415157B (zh) * 2018-04-26 2024-01-30 华为技术有限公司 一种矩阵乘法的计算方法及装置
CN111008160A (zh) * 2019-11-30 2020-04-14 苏州浪潮智能科技有限公司 一种数据处理方法、装置和电子设备及可读存储介质
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN114942731B (zh) * 2022-07-25 2022-10-25 北京星天科技有限公司 一种数据存储方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1682214A (zh) * 2003-03-07 2005-10-12 松下电器产业株式会社 矩阵运算装置
CN101794210A (zh) * 2010-04-07 2010-08-04 上海交通大学 基于fpga的通用矩阵浮点乘法器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0618921D0 (en) * 2006-09-26 2006-11-08 Trw Ltd Matrix multiplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1682214A (zh) * 2003-03-07 2005-10-12 松下电器产业株式会社 矩阵运算装置
CN101794210A (zh) * 2010-04-07 2010-08-04 上海交通大学 基于fpga的通用矩阵浮点乘法器

Also Published As

Publication number Publication date
CN102541507A (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN102541507B (zh) 维度可重配的数据处理方法、系统和矩阵乘法处理器
CN101201644B (zh) 指数处理方法与系统
CN101782845B (zh) 一种椭圆曲线密码的高速运算装置和方法
CN1175730A (zh) 使用浮点运算硬件进行微处理器整数除法操作的方法和装置
CN105528191A (zh) 数据累加装置、方法及数字信号处理装置
CN102087740A (zh) 用于通用计算的纹理单元
CN108376285A (zh) 一种面向多变异体lstm神经网络加速器及数据处理方法
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
CN212112470U (zh) 一种矩阵乘法计算电路
CN113138749B (zh) 基于cordic算法的三角函数计算装置及方法
CN109144469A (zh) 流水线结构神经网络矩阵运算架构及方法
JPH0368416B2 (zh)
CN111160560A (zh) 预估模拟量子计算所需资源的方法、系统
CN102063284B (zh) 一种除法运算方法及装置
CN101561797A (zh) 在处理系统上对矩阵进行奇异值、特征值分解的方法和装置
CN109614367B (zh) 一种改进的dnd算法及其基于fpga的实现方法
CN103888246A (zh) 低功耗小面积的数据处理方法及其数据处理装置
CN104348446A (zh) 一种实现fir滤波的方法和滤波装置
CN116151334A (zh) 一种基于多通道脉动阵列的神经网络加速器
CN115408061A (zh) 复数矩阵运算的硬件加速方法、装置、芯片及存储介质
CN102231624A (zh) 面向向量处理器的浮点复数块fir的向量化实现方法
CN103944714A (zh) 基于ecc实现抗dpa攻击的标量乘算法的方法及装置
CN109992242B (zh) 基于乘法器的运算方法及装置
CN203259592U (zh) 电能计量装置及其电能计量芯片
TW202133053A (zh) 卷積神經網路運算裝置及其運算的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170421

Address after: 201206 China (Shanghai) free trade zone, the moon Road, No. 3, building fourth, room B412, level 1258

Patentee after: Shanghai Li Ke Semiconductor Technology Co., Ltd.

Address before: 201206 Pudong New Area Mingyue Road, Shanghai, No. 1258

Patentee before: Leadcore Technology Co., Ltd.

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 201203 1st, 6th and 7th floors, building 2, No. 1761, Zhangdong Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201203

Patentee after: Shanghai Li Ke Semiconductor Technology Co.,Ltd.

Address before: Room b412, 4th floor, building 3, 1258 Mingyue Road, China (Shanghai) pilot Free Trade Zone

Patentee before: Shanghai Li Ke Semiconductor Technology Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200831

Address after: 610200 Sichuan Chengdu Shuangliu District Dongsheng Street Chengdu core industrial park concentration area

Patentee after: Lusheng Technology Co.,Ltd.

Address before: 201203 1st, 6th and 7th floors, building 2, No. 1761, Zhangdong Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201203

Patentee before: Shanghai Li Ke Semiconductor Technology Co.,Ltd.