CN115130058A - 一种可配置和扩展的向量矩阵乘法装置及工作方法 - Google Patents
一种可配置和扩展的向量矩阵乘法装置及工作方法 Download PDFInfo
- Publication number
- CN115130058A CN115130058A CN202210672628.0A CN202210672628A CN115130058A CN 115130058 A CN115130058 A CN 115130058A CN 202210672628 A CN202210672628 A CN 202210672628A CN 115130058 A CN115130058 A CN 115130058A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- matrix
- input
- column
- 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
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 246
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims abstract description 28
- 238000012856 packing Methods 0.000 claims abstract description 25
- 238000012544 monitoring process Methods 0.000 claims abstract description 21
- 230000015654 memory Effects 0.000 claims abstract description 17
- 238000006243 chemical reaction Methods 0.000 claims abstract description 4
- 230000005284 excitation Effects 0.000 claims description 36
- 238000009825 accumulation Methods 0.000 claims description 25
- 238000004806 packaging method and process Methods 0.000 claims description 18
- 238000013139 quantization Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 6
- 238000000354 decomposition reaction Methods 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种可配置和扩展的向量矩阵乘法装置及工作方法。该装置包括数据接收模块、数据解包模块、矩阵存储模块、矩阵输入模块、矩阵校验模块、矩阵乘法模块、数据打包模块、数据发送模块以及数据监测模块,数据接收模块依次与数据解包模块、矩阵输入模块、矩阵存储模块、数据打包模块、数据发送模块相连;数据解包模块还分别与矩阵校验模块和矩阵乘法模块相连;矩阵校验模块和矩阵乘法模块还分别与矩阵存储模块相连;数据监测模块分别与矩阵输入模块、矩阵存储模块、矩阵校验模块、矩阵乘法模块相连。本发明采用存算一体的设计,采用数字逻辑模拟电流的汇聚以及数模转换,实现乘累加操作,减少数据搬运和缩减存储器面积,可显著降低面积成本。
Description
技术领域
本发明涉及一种可配置和扩展的向量矩阵乘法装置及工作方法,属于超大规模集成电路的数字信号处理领域。
背景技术
随着神经网络的规模越来越大,种类越来越多,神经网络规模愈加庞大,带来的计算量也不容小觑,因而各种神经网络加速器层出不穷。但存储和计算分开的架构设计始终无法从根源上消除如此惊人数据量带来的存储和搬运数据开销,伴随着存算一体架构的再度火热以及相关存算器件的设计提出,这些问题可能被存算一体的架构设计解决。但目前大多专用加速器设计都针对特定网络,缺乏一些可扩展性,业界对于神经网络计算加速器的要求也不仅仅局限于针对特定网络的加速和低功耗,还对其有更多的灵活性高效以及可配置等特性要求。
发明内容
为了应对神经网络计算装置相关越来越多的要求,本发明提供一种可配置和扩展的向量矩阵乘法装置及工作方法。
本发明采用的技术方案如下:
一种可配置和扩展的向量矩阵乘法装置,该装置包括数据接收模块、数据解包模块、矩阵存储模块、矩阵输入模块、矩阵校验模块、矩阵乘法模块、数据打包模块、数据发送模块以及数据监测模块,其特征在于,数据接收模块依次与数据解包模块、矩阵输入模块、矩阵存储模块、数据打包模块、数据发送模块相连;所述数据解包模块还分别与矩阵校验模块和矩阵乘法模块相连;所述矩阵校验模块和矩阵乘法模块还分别与矩阵存储模块相连;所述数据监测模块分别与矩阵输入模块、矩阵存储模块、矩阵校验模块、矩阵乘法模块相连;
所述数据接收模块,用于接收输入数据,并发送到数据解包模块;
所述数据解包模块,用于将接收到的数据解编码,并发送到矩阵输入模块、矩阵校验模块和矩阵乘法模块;
所述矩阵存储模块,用于模拟存算一体矩阵阵列,并存储矩阵权重信息;
所述矩阵输入模块,用于将接收到的权值按指定行列写入所述矩阵存储模块;
所述矩阵校验模块,用于将所述矩阵存储模块存储的权重信息按指定行列读出;
所述矩阵乘法模块,用于将输入的激励按位拆分并按照输入激励的顺序拼接后送入所述矩阵存储模块;
所述数据打包模块,用于将所述矩阵校验模块发送的权值或所述矩阵乘法模块的计算结果按归属行列进行编码;
所述数据发送模块,用于将所述数据打包模块产生的数据包发送到外部;
所述数据监测模块,用于存储以上各个模块的重要信息。
本发明上述一种可配置和扩展的向量矩阵乘法装置的工作方法,其步骤包括:所述数据接收模块接收输入模式数据包,所述数据解包模块读取所述输入模式数据包,解包后向所述矩阵输入模块发送矩阵输入的控制信号,所述矩阵输入模块执行写入操作,将权值写入所述矩阵存储模块;
待全部权值写入后,所述数据接收模块接收校验模式数据包,所述数据解包模块读取所述校验模式数据包,解包后向所述矩阵校验模块发送行、列选信号,所述矩阵校验模块执行读出操作,从所述矩阵存储模块将权值读出,然后将权值发送到所述数据打包模块;所述数据打包模块将接收到的权值和其所属的行列打包发送到所述数据发送模块,数据发送模块将接收到的数据包发送到外部;
全部权值或指定权值校验完成后,所述数据接收模块接收计算模式数据包,数据解包模块读取所述计算模式数据包,解包后向所述矩阵乘法模块发送激励和量化系数,所述矩阵乘法模块接收激励,并按bit拆分,在所述矩阵存储模块中执行按列移位累加操作,得到的乘累加结果发送到所述数据打包模块,所述数据打包模块将接收到的运算结果和其所属的列打包发送到所述数据发送模块,数据发送模块将接收到的数据包发送到外部。
进一步地,所述数据接收模块接收的数据包中包含模式识别码:连续的2个10000000代表数据包为输入模式数据包,连续的2个10000001代表数据包为校验模式数据包,连续的2个11111111代表数据包为计算模式数据包;所述模式识别码仅出现在一组数据包的包头。
进一步地,所述数据接收模块接收的数据包包含校验和,每一组数据包的最后一个8bit数据为除去2个模式识别码包头和检验和本身之外的所有数据的累加和,若此累加和位宽溢出8bit则截取低位8bit作为检验和,检验和仅出现在一组数据包的包尾。
本发明采用存算一体的设计,采用数字逻辑模拟电流的汇聚以及数模转换,实现乘累加操作,减少数据搬运和缩减存储器面积,可显著降低面积成本。本发明可以并行实现整个阵列矩阵的运算操作,并通过存内计算,可实现大规模预算。本发明的装置及方法应用于神经网络可以减少实际运行中所需的访存和计算资源,提高性能和能效比。
附图说明
图1为本发明装置的结构框图。
图2为矩阵输入模块示意图,其中,全局输入控制选择输入模式,分别控制输入载入模块将数据写入列寄存器,再控制输入进行将此列写入矩阵。I_sys_clk为系统时钟,I_rst_n为系统复位。I_lit_data_valid为输入有信号,I_lit_mode用于指定当前操作为存数至寄存器或写入矩阵,I_lit_weight为输入的权值数据,I_lit_addr为当前写数的行,或向矩阵写数的列;O_lit_vg、O_lit_vs、O_lit_vd为向矩阵输出的控制信号,用于向矩阵写入数据;O_lit_ready为握手信号,用于向前级模块数据解包模块发送当前输入模块是否正在工作中。
图3为接收模块与解包模块示意图,其中,接收模块接收到外部输入数据包,传送给解包模块进行数据提取。I_rd_clk为系统时钟,同I_sys_clk,I_rd_rst_n为复位信号,同I_rst_n;I_wr_clk为片外慢时钟,I_wr_rst_n为复位信号;I_ctrl_mode为系统工作模式,为外部控制;I_data即连接上位机的数据输入,wr_en为输入有效信号,full为内部FIFO的满信号,满信号为拉高时不再向片上发送数据包;rd_en为解包模块向接收模块发送的读信号,用于从上级fifo中读取数据包,valid为接收模块向解包模块发送的握手信号,意义为发送到解包模块的数据有效,O_data即接收模块发送至解包模块的数据;O_lit_data_valid为解包模块发送至输入模块的握手信号,意义是O_lit_mode和O_lit_addr以及O_lit_weight有效,O_lit_weight为发送到输入模块的数据,O_lit_mode为输入模块的两种输入形式,分别为将数据写入列寄存器和将写满的寄存器映射到矩阵,O_lit_addr为定位,在不同的数据包中分别代表发送的数据所属为某列中的指定行或需要将已存满的寄存器数据写入矩阵中的指定列;O_lpf_data_valid为解包模块发送至校验模块的握手信号,意义是O_lpf_col和O_lpf_row有效,O_lpf_cow以及O_lpf_col分别为发送到矩阵校验模块的行、列信号;O_data_valid是解包模块发送至矩阵乘法模块的握手信号,意义是O_data和O_quan有效,O_data为发送到矩阵乘法模块的数据,O_quan为发送矩阵乘法模块的量化系数;O_header_cnt为解包模块识别到的数据包数量,发送至检测模块;O_success_cnt为解包模块识别成功且数据包有效的包数目,发送至检测模块。
图4为打包模块与发送模块,其中,打包模块完成数据编码后发到发送模块,并由发送模块传输至片外。I_ad_data_valid为校验模块与矩阵乘法模块的二选一信号,当片上为校验模块时选择校验模块的valid信号,当片上模式为计算模式时选择矩阵乘法模块的valid信号;I_data即从ADC读取的结果;I_ctrl_mode为当前片上工作模式;I_proof_valid为当前片上校验开始信号,I_cal_data_valid为当前片上计算开始信号;I_proof_row和I_proof_col为读取出的权值所属的行列;O_pack_ready为向前级握手的信号,用于表示当前是否有未完成的进程。Full为发送模块的fifo满信号,此信号为高时打包模块不再向发送模块发送数据包;O_data2send为向fifo发送的数据,O_data_valid为此数据的有效信号。
图5为矩阵校验模块示意图。其中,I_proof_data_valid为当前输入有效信号,用于判断I_lpf_col(列)和I_proof_row(行)是否有效。O_lpf_vg、O_lpf_cd、O_lpf_vs分别对应行列开关,用于控制矩阵的读数写数操作;O_data_valid为上述信号的有效信号;O_ready为向前级发送的握手信号,即和解包模块的握手信号,用于指示当前校验模块是否空闲;I_pack_ready为后级模块即数据打包模块的握手信号,用于指示当前数据打包模块是否可以接收矩阵校验模块的输出。图中所示IN_RO_IMIRR_CTR、IN_RO_BLP_CTR、IN_RO_BLN_CTR、IN_CORR_IMIRR_CTR为虚设信号,始终为0,IN_RO_MAC_CTR为使能信号,用于控制矩阵进行数据读出,IN_RO_CAP0_CTR、IN_RO_CAP1_CTR、IN_RO_CAP2_CTR、IN_RO_CAP3_CTR、IN_RO_CAP4_CTR、IN_RO_CAP5_CTR、IN_RO_CAP6_CTR、IN_RO_CAP7_CTR为累加信号,为虚设信号,始终为0,IN_RO_RELU_CTR、IN_RO_RELU_COMP_CTR为激活函数信号,用于量化输出,IN_RO_ADC_CS_CTR为读出信号,用于控制矩阵数据的读出时间延迟,IN_RO_CVREF_CTR、IN_RO_VREF_CTR、IN_RO_IREF_CTR等信号为外部基准输入信号,始终为0。
图6为阵列行列选示意图,其中WLi为第i行,BLj表示第j列,W(i,j)表示阵列第i行j列的权值。
图7为矩阵存储模块累加流水线示意图,其中cnt表示第n个时钟周期,buffer_pos表示正列权值累加寄存器,ad_pos_pipline1[i]正列第i行的权值,也是正列累加第一级流水线存储寄存器,ad_pos_pipline2_i为正列累加第二级流水线存储寄存器,ad_pos_pipline3_i为正列累加第三级流水线存储寄存器,ad_pos_pipline4为正列累加第四级流水线存储寄存器。
图8为矩阵存储模块实现矩阵乘法示意图。
具体实施方式
如图1所示,本发明一种可配置和扩展的向量矩阵乘法装置,包括数据接收模块、数据解包模块、矩阵存储模块、矩阵输入模块、矩阵校验模块、矩阵乘法模块、数据打包模块、数据发送模块以及数据监测模块。数据接收模块依次与数据解包模块、矩阵输入模块、矩阵存储模块、数据打包模块、数据发送模块相连。数据解包模块还分别与矩阵校验模块和矩阵乘法模块相连;矩阵校验模块和矩阵乘法模块还分别与矩阵存储模块相连;数据监测模块分别与矩阵输入模块、矩阵存储模块、矩阵校验模块、矩阵乘法模块相连。
其中,数据接收模块,用于接收片外慢时钟发送的经过特定编码的不同模式数据包的输入数据,并发送到片上快时钟数据解包模块;数据接收模块的输入端连接时钟信号、复位信号、写入使能信号、读出使能信号、写入数据,数据接收模块的输出端连接数据解包模块;进一步地,数据接收模块的写入使能信号、写入数据连接系统输入端口,读出使能信号连接数据解包模块输出端。
数据解包模块用于将接收到的输入数据解编码,并将相应信号发送到矩阵输入模块、矩阵校验模块或矩阵乘法模块。数据解包模块接收一组8bit数据包,其中,一组数据包的前2个数据用于模式识别,一组数据包的最后一个数据为校验和,校验和为一组数据包中除包头2个识别码和检验和本身外的所有数据之和,若溢出8bit位宽则为截取低位8位。数据解包模块的输入端连接时钟信号、复位信号、输入数据、输入数据有效信号、模式控制信号、矩阵校验模块握手信号、矩阵乘法模块握手信号、矩阵输入模块握手信号,数据解包模块的输出端口连接矩阵输入模块、矩阵校验模块和矩阵乘法模块;数据解包的输入数据、输入数据有效信号连接数据接收模块输出端,数据解包模块的模式控制有效信号连接系统输入端口,数据解包模块的输入握手信号分别连接至对应的矩阵输入模块、矩阵校验模块、矩阵乘法模块输出端。
矩阵存储模块模拟矩阵阵列的所有功能,包括输入校验以及计算。矩阵存储模块通过行列开关控制该模块中一列数据的多次移位累加实现矩阵向量乘或数据读出;所述矩阵存储模块调用4个位宽128bit、深度128bit的静态随机存取存储器拼接成位宽512bit、深度128bit的静态随机存取存储器。
矩阵输入模块,用于将输入的一列数据写入列寄存器,并将这一列数据写入存储矩阵的指定列;其写入为量变过程,对于矩阵中的一列的每一行所存储的数据,在每一个周期都仅跳变一个单位,具体为从255依次递减,直到达到指定大小。矩阵输入模块的输入端连接时钟信号、复位信号、输入有效信号、输入数据、数据地址,矩阵输入模块的输出端连接矩阵存储模块,输出信号包括行控制开关、列控制开关。
矩阵校验模块用于从矩阵存储中读出指定行列的数据,以检验写入有效性,并发送到数据打包模块。矩阵校验模块的输入端连接时钟信号、复位信号、数据打包模块握手信号、行、列、输入有效信号,矩阵校验模块输出端连接矩阵存储模块和数据打包模块。
矩阵乘法模块将输入的激励按位拆分并按照输入激励的顺序拼接后送入矩阵存储模块。矩阵乘法模块包括乘法模块以及其调用的乘法延时模块。乘法延时模块可以控制输入该模块的数据到输出的时间。
数据打包模块,用于将矩阵校验模块发送的权值或矩阵乘法模块的计算结果按归属行列进行编码,并发送到数据发送模块。数据打包模块的输入端连接时钟信号、复位信号、模式控制信号、输入数据、输入数据有效信号、行、列、数据发送模块握手信号、矩阵计算开始信号,数据打包模块的输出端连接数据发送模块,数据打包模块的输出端握手信号连接到矩阵校验模块和矩阵乘法模块,当数据打包模块没有正在进行工作时该数据拉高。
数据发送模块,用于将片上快时钟域数据打包模块产生的数据包发送到外部慢时钟。数据发送模块的输入端连接时钟信号、复位信号、写入使能信号、写入数据。数据发送模块的写入使能信号、写入数据连接数据打包模块输出端。
数据监测模块将以上各个模块的部分重要信息存储在该模块中。数据监测模块包括监测模块以及其调用的数据监测存储器模块。数据监测存储器由一个位宽16bit,深度512bit的静态随机存取存储器组成,用来存储全局重要的信息。
本实施例中,数据接收模块包括一个慢进快出FIFO(First Input FirstOutput),FIFO输入输出端口包括写入时钟、读出时钟、复位信号、写入使能信号、数据写入端口、读出使能信号、数据读出端口、读出数据有效信号、满信号,FIFO采用寄存器存储写入数据;进一步的,当FIFO收到写入使能信号时将写入数据按顺序存至寄存器中,当FIFO接收到读出使能信号时按顺序将寄存器中的数据读出,若FIFO非空,同时拉高输出有效信号,若FIFO为空,则输出有效信号为拉低无效;进一步的,FIFO的写入时钟为慢时钟,数据写入端为外部接口输入,写入使能信号为外部接口输入,FIFO读出时钟为片上快时钟,数据读出端连接数据解包模块,数据输出有效信号端连接数据解包模块,读出使能信号连接解包模块,由解包模块发送;FIFO存满时,数据接收模块不再接收外部写入。
矩阵输入模块,包含两种工作模式:1.每接收一组输入则将此组输入中的唯一一个数据写入列寄存器中此数据对应的行;2.一组列寄存器写满时将此列数据写入矩阵存储。
矩阵存储模块接收按bit拆分的激励,对矩阵中的值进行多次移位累加来实现存内计算,矩阵存储模块接收的激励对应为矩阵存储模块的行选信号。如图8所示,以一组8bit二进制激励为例,矩阵乘法模块从低位开始向矩阵存储模块发送这一激励,若收到第N位的“1”,则矩阵对应的行存储的权值左移N位,并对每一列做累加操作,若矩阵存储模块收到的激励为“0”,则不做移位累加运算,在所有8位激励输入完毕后,经过若干次移位累加得到的值,即为计算结果。矩阵存储模块的功能为使用数字逻辑对模拟运算进行模拟,在使用存内计算器件阵列作为矩阵存储模块时,此移位累加的过程实际为电容电流汇聚、再到模数转换的过程。
在矩阵存储模块进行按列累加时,采取用流水线结构减小计算开销及关键路径。以某次计算的正列为例,结构如图7所示。每一位累加时间有4个时钟周期:第一个时钟周期通过行选信号将权值寄存器中的权值存入一级流水寄存器;第二个时钟周期,每16个以及流水寄存器相加,结果存入二级流水寄存器;第三个时钟周期,每两个二级流水寄存器相加,结果存入三级流水寄存器;第四个时钟周期,两个三级流水寄存器相加,结果存入四级流水寄存器,四级流水寄存器中所存的结果就是最终列累加值和。
上述可配置和扩展的向量矩阵乘法装置的使用方法,具体步骤为:
(1)上位机对输入进行编码,数据包编码格式参见下文具体描述。数据包设置应为8bit位宽的多组数据,其中,指定前两个8bit为数据包的包头,用于模式判断。上位机发送数据包应是不中断的,只有在FIFO已满的情况下停止发送;
(2)外部连接一个慢时钟,由内部锁相环生成片上所需的时钟,因而上位机发送数据包应考虑到锁相环通电稳定的时间,即通电大于2us后方可发送数据;
(3)外部接收芯片打包出的结果,上位机接收片上的数据包应是不中断的,即片上发送模块所发送的任何数据包都应当被接收。
其中,可配置和扩展的向量矩阵乘法装置的编码格式为:
1)输入:矩阵输入模块从解包模块一次接受一组数据包,包括两个8bit“10000000”包头用于判断数据包所属模式,数据包还包含一个8bit数据值、一个8bit从0-127可配置位宽的位置信息,以及一个2bit的输入模式,数据包的最后一个数据为检验和,检验和为上述所有数据除去包头的数据之和,若和溢出8bit则取低位8位。矩阵输入模块有两种输入模式:1.将数值存入列寄存器;2.将列寄存器所存储信息写入矩阵存储。具体步骤为:连续接收指定列的多行信息,即多个数据包,在存入列寄存器状态下数据包所含位置信息为指定行;接收一组指定上一步骤的列寄存器写入矩阵哪一列的写入数据包,此状态下数据包所包含位置信息为指定矩阵的列。将寄存器所存储的数据写入矩阵存储的具体步骤为:矩阵存储模块的复位值为255,在每一个特定周期,矩阵中的每一个元素都仅跳变1,在列寄存器信息写入矩阵存储状态下,由矩阵输入模块控制矩阵存储模块的行列所存储的值的跳变开关,即由一组坐标指定数值跳变;对于一列将被写入矩阵的数据,则列开关的此列对应位拉高为1,其余位为0,还未达到所需存储数值的行开关始终为1,即下一个周期仍然继续跳变,直至数据写入完成。
2)校验:矩阵校验模块从解包模块一次接受一组数据包,包括两个8bit“10000001”包头用于判断数据包所属模式,数据包还包含一个8bit从0-127可配置的行、一个8bit从0-127可配置的列,数据包的最后一个数据为检验和,检验和为上述所有数据除去包头的数据之和,若和溢出8bit则取低位8位。矩阵校验模块在接收到校验指定行列的数据包是打开此位置开关,由矩阵存储模块读出此位置的数据,数据读出需要一定延迟。
3)计算:计算时矩阵存储模块选择计算模式,并且接收来自矩阵乘法模块的行列选信号。行列选信号的每一位为1或0,行选信号共有行数位,列选信号共有列数位,1为选中该行或列,0为不选中。根据行列选信号选中对应的行与列,并按列进行累加,得到列数个累加和。由于每个激励均有8位,因此每次累加完成后要进行移位累加,如第二位的累加和应当左移一位与第一位的累加和进行累加,后面位亦如此。八位累加完成后,进行后续的激活函数操作,量化以及四舍五入的操作。
4)置位:置位时矩阵存储模块选择置位模式,每隔50000时钟周期(50M时钟)权值加1,直至累加到255。
实施例1
本实施例具体实施为,装置在输入模式下,系统收到模式控制信号为“输入”,即I_ctrl_mode为输入模式“00”。系统接收上位机发送的若干组包含包头(模式识别码)、权值、该权值所要存入的地址、写入模式(应首先为权值写入寄存器模式)、检验和等信息的输入模式数据包,数据接收模块将上述数据存入FIFO。数据解包模块依次从数据接收模块读取出所述数据包,将除去包头模式识别码与包尾检验和之外的数据累加,并与检验和对比,若相等,且模式识别码为连续的10000000,即输入模式,则将对应的地址和写入模式以及权值发送到数据输入模块。数据输入模块将接收到的权值按地址匹配存入列寄存器的指定行。系统在接收完一列完整的权值后,接收到一组包含包头、地址、写入模式(此时为将列寄存器中的权值写入矩阵)、检验和等信息的数据包,数据接收模块将上述数据存入FIFO,数据解包模块从数据接收模块读出上述信息后,对数据包检验和进行校验,若检验和匹配成功,则将地址和写入模式发送到数据输入模块,数据输入模块将已存在列寄存器中的权值矩阵中的地址列。具体步骤为:列选定之后,对应列开关打开,每一行的行开关打开时间为所输入的数据大小个周期。如图2所示,行列开关O_lit_vg,O_lit_vd以0、1表示,1代表此行或列为被选中,此行列的矩阵存储数据即将跳变,0代表此行列未被选中。每一行与每一列均对应一个0或1选择,通过行列组合控制矩阵的每一个点的数据写入。矩阵每次进行写入的操作为写入一整列,那么这一列的开关打开,即矩阵输入模块连接到矩阵存储模块的行列选择信号中此列选择信号为1,其余列选择信号为0,按此列中各行的输入数值I_lit_weight大小,控制行选择信号为1的时长,例如,某一行的输入为5,另一行的输入为37,则第一次例所举的选择信号在持续为5个周期的1之后,跳转回0,此时这一行的写入完成,而第二行仍在写入进行中,仍需32个周期后选择信号才会跳转为0。
实施例2
在校验模式下,本实施例对实施例1中的配置完成的权值进行读出。具体实施如下:系统收到模式控制信号为“校验”,即I_ctrl_mode为校验模式“01”。系统接收上位机发送的若干组包含包头(模式识别码)、行、列、检验和等信息的校验模式数据包,数据接收模块将上述数据存入FIFO。数据解包模块依次从数据接收模块读取出所述数据包,若模式识别码为对应的校验模式,即连续的2个10000001,且对检验和进行校对,校验成功,则将对应的行和列信号发送到数据校验模块和数据打包模块。数据校验模块接收到指定的行列信号后,如图5所示,行列开关O_lit_vg,O_lit_vd以0、1表示,1代表此行或列为被选中,同时IN_RO_MAC_CTR拉高,在经过35个时钟周期后IN_RO_ADC_CS_CTR拉高,矩阵存储模块将指定位置存储的权值读出。在校验模式下,行与列是唯一指定的,矩阵存储模块接收到读出指令IN_RO_MAC_CTR和读出位置O_lit_vg,O_lit_vd,对指定的位置的权值进行读出,读出的过程为该权值自身赋值到矩阵存储模块的输出的过程,这一过程为模拟存算一体器件中电容电流汇聚的过程。上述过程完成后,IN_RO_ADC_CS_CTR信号拉高,矩阵存储模块将读出权值发送到数据打包模块。数据打包模块接收到从矩阵存储读出的权值后,将该权值和它在矩阵中对应的行、列发送到数据发送模块,这一操作仅在数据发送模块的FIFO未满时进行。数据发送模块在FIFO非空时始终向系统外部发送FIFO中存储的数据。
实施例3
在计算模式下,本实施例使用实施例1中的配置完成的权值进行计算。具体实施如下:系统收到模式控制信号为“计算”,即I_ctrl_mode为计算模式“10”。系统接收上位机发送的若干组包含包头(模式识别码)、激励、量化系数等信息的计算模式数据包,数据接收模块将上述数据存入FIFO。数据解包模块依次从数据接收模块读取出所述数据包,若包头为连续2个11111111,则将所有的一列激励和量化系数发送到计算模块。矩阵计算模块将收到的激励拆分为8个bit,并依次发送到矩阵存储模块。具体为,矩阵计算模块收到若干个8bit的激励,首先将这若干个激励的最低位发送到矩阵存储模块,这若干个低位组成的信号即对应为矩阵存储模块的行信号。矩阵存储模块收到行信号之后,选中对应的行,并依次选中列。行列选信号的每一位为1或0,行选信号共有行数位,列选信号共有列数位,1为选中该行或列,0为不选中。根据行列选信号选中对应的行与列,并按列进行累加,得到列数个累加和。由于每个激励均有8位,因此每次累加完成后要进行移位累加,如图8所示,如第二位的累加和应当左移一位与第一位的累加和进行累加,后面位亦如此。为了减小计算开销及关键路径,以某次计算的正列为例,结构如图7所示。每一位累加时间有4个时钟周期:第一个时钟周期通过行选信号将权值寄存器中的权值存入一级流水寄存器;第二个时钟周期,每16个以及流水寄存器相加,结果存入二级流水寄存器;第三个时钟周期,每两个二级流水寄存器相加,结果存入三级流水寄存器;第四个时钟周期,两个三级流水寄存器相加,结果存入四级流水寄存器,四级流水寄存器中所存的结果就是最终列累加值和。八位累加完成后,进行后续的激活函数操作,量化以及四舍五入的操作。激活函数操作只需判断累加和的最高位是否为1,为1则将累加和置零即可;量化时,只需将激活函数操作后的累加和右移对应位数;四舍五入时,则只需考虑量化时,右移的溢出的第一位是否为1,为1则右移后加1即可。以上三个功能都能通过相应的开关进行选择打开或关闭,量化可以选择量化系数的大小。
实施例4
本实施例为了实现多个装置的扩展,采取向下兼容网络的模式,即对于网络规模严格小于(行列均小于)规定本发明装置默认的网络结构兼容。具体实现方法如下,将行列选信号的位数控制在对应的行列数的位数,多余的位数均置零,即不选中即可。
Claims (9)
1.一种可配置和扩展的向量矩阵乘法装置,该装置包括数据接收模块、数据解包模块、矩阵存储模块、矩阵输入模块、矩阵校验模块、矩阵乘法模块、数据打包模块、数据发送模块以及数据监测模块,其特征在于,数据接收模块依次与数据解包模块、矩阵输入模块、矩阵存储模块、数据打包模块、数据发送模块相连;所述数据解包模块还分别与矩阵校验模块和矩阵乘法模块相连;所述矩阵校验模块和矩阵乘法模块还分别与矩阵存储模块相连;所述数据监测模块分别与矩阵输入模块、矩阵存储模块、矩阵校验模块、矩阵乘法模块相连;
所述数据接收模块,用于接收输入数据,并发送到数据解包模块;
所述数据解包模块,用于将接收到的数据解编码,并发送到矩阵输入模块、矩阵校验模块和矩阵乘法模块;
所述矩阵存储模块,用于模拟存算一体矩阵阵列,并存储矩阵权重信息;
所述矩阵输入模块,用于将接收到的权值按指定行列写入所述矩阵存储模块;
所述矩阵校验模块,用于将所述矩阵存储模块存储的权重信息按指定行列读出;
所述矩阵乘法模块,用于将输入的激励按位拆分并按照输入激励的顺序拼接后送入所述矩阵存储模块;
所述数据打包模块,用于将所述矩阵校验模块发送的权值或所述矩阵乘法模块的计算结果按归属行列进行编码;
所述数据发送模块,用于将所述数据打包模块产生的数据包发送到外部;
所述数据监测模块,用于存储以上各个模块的重要信息。
2.根据权利要求1所述的一种可配置和扩展的向量矩阵乘法装置,其特征在于,所述矩阵存储模块通过行列开关控制该模块中一列数据的多次移位累加实现矩阵向量乘或数据读出;所述矩阵存储模块调用4个位宽128bit、深度128bit的静态随机存取存储器拼接成位宽512bit、深度128bit的静态随机存取存储器。
3.根据权利要求1所述的一种可配置和扩展的向量矩阵乘法装置,其特征在于,所述矩阵输入模块用于将输入的一列数据写入列寄存器,并将这一列数据写入所述矩阵存储模块的指定列;其写入所述矩阵存储模块的过程为量变过程,对于矩阵中的一列的每一行所存储的数据,在每一个周期都仅跳变一个单位。
4.根据权利要求1所述的一种可配置和扩展的向量矩阵乘法装置,其特征在于,所述矩阵乘法模块包括乘法模块以及其调用的乘法延时模块,所述乘法延时模块用于控制数据输入所述矩阵乘法模块到输出的时间,该时间在模拟运算中为模数转换时间。
5.根据权利要求1所述的一种可配置和扩展的向量矩阵乘法装置,其特征在于,所述矩阵乘法模块采用激励分解的方法,将激励按位拆分并按照输入激励的顺序拼接后发送到所述矩阵存储模块。
6.根据权利要求1所述的一种可配置和扩展的向量矩阵乘法装置,其特征在于,所述数据监测模块包括监测模块以及其调用的数据监测存储器模块,所述数据监测存储器模块由一个位宽16bit、深度512bit的静态随机存取存储器组成。
7.如权利要求1所述一种可配置和扩展的向量矩阵乘法装置的工作方法,其特征在于,该方法的步骤包括:所述数据接收模块接收输入模式数据包,所述数据解包模块读取所述输入模式数据包,解包后向所述矩阵输入模块发送矩阵输入的控制信号,所述矩阵输入模块执行写入操作,将权值写入所述矩阵存储模块;
待全部权值写入后,所述数据接收模块接收校验模式数据包,所述数据解包模块读取所述校验模式数据包,解包后向所述矩阵校验模块发送行、列选信号,所述矩阵校验模块执行读出操作,从所述矩阵存储模块将权值读出,然后将权值发送到所述数据打包模块;所述数据打包模块将接收到的权值和其所属的行列打包发送到所述数据发送模块,数据发送模块将接收到的数据包发送到外部;
全部权值或指定权值校验完成后,所述数据接收模块接收计算模式数据包,数据解包模块读取所述计算模式数据包,解包后向所述矩阵乘法模块发送激励和量化系数,所述矩阵乘法模块接收激励,并按bit拆分,在所述矩阵存储模块中执行按列移位累加操作,得到的乘累加结果发送到所述数据打包模块,所述数据打包模块将接收到的运算结果和其所属的列打包发送到所述数据发送模块,数据发送模块将接收到的数据包发送到外部。
8.根据权利要求7所述的工作方法,其特征在于,所述数据接收模块接收的数据包中包含模式识别码:连续的2个10000000代表数据包为输入模式数据包,连续的2个10000001代表数据包为校验模式数据包,连续的2个11111111代表数据包为计算模式数据包;所述模式识别码仅出现在一组数据包的包头。
9.根据权利要求8所述的工作方法,其特征在于,所述数据接收模块接收的数据包包含校验和,每一组数据包的最后一个8bit数据为除去2个模式识别码包头和检验和本身之外的所有数据的累加和,若此累加和位宽溢出8bit则截取低位8bit作为检验和,检验和仅出现在一组数据包的包尾。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210672628.0A CN115130058A (zh) | 2022-06-15 | 2022-06-15 | 一种可配置和扩展的向量矩阵乘法装置及工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210672628.0A CN115130058A (zh) | 2022-06-15 | 2022-06-15 | 一种可配置和扩展的向量矩阵乘法装置及工作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115130058A true CN115130058A (zh) | 2022-09-30 |
Family
ID=83378482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210672628.0A Pending CN115130058A (zh) | 2022-06-15 | 2022-06-15 | 一种可配置和扩展的向量矩阵乘法装置及工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115130058A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024104427A1 (zh) * | 2022-11-16 | 2024-05-23 | 北京大学 | 全模拟向量矩阵乘法存内计算电路及其运行方法、计算机设备和计算机可读存储介质 |
-
2022
- 2022-06-15 CN CN202210672628.0A patent/CN115130058A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024104427A1 (zh) * | 2022-11-16 | 2024-05-23 | 北京大学 | 全模拟向量矩阵乘法存内计算电路及其运行方法、计算机设备和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101507194B1 (ko) | 직렬 인터페이스 nand | |
US20190312593A1 (en) | Decoding method and storage controller | |
US8694860B2 (en) | System and method for data read of a synchronous serial interface NAND | |
US7526709B2 (en) | Error detection and correction in a CAM | |
US7581153B2 (en) | Memory with embedded error correction codes | |
US7458004B2 (en) | Semiconductor storage device | |
CN111063379B (zh) | 存储器装置以及操作其以用于读取页面媒体流的方法 | |
JP7244263B2 (ja) | メモリ装置 | |
JP4247262B2 (ja) | 集積回路装置 | |
CN112329910B (zh) | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 | |
KR20100124087A (ko) | 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법 | |
US20130117632A1 (en) | Storage control apparatus | |
CN101395583B (zh) | 具有存储着包含附加数据在内的页面的存储矩阵的电子电路 | |
KR100688549B1 (ko) | 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법 | |
CN115130058A (zh) | 一种可配置和扩展的向量矩阵乘法装置及工作方法 | |
US11258539B2 (en) | Technologies for performing encoding of data symbols for column read operations | |
US9047329B1 (en) | Method and system for an algorithm and circuit for a high performance exact match lookup function | |
CN116954491A (zh) | 用于存储控制器的操作方法和包括存储控制器的存储系统 | |
US7075851B2 (en) | Semiconductor memory device inputting/outputting data and parity data in burst operation | |
CN113270126A (zh) | 流访问存储器设备、系统和方法 | |
CN115732017A (zh) | 半导体存储装置及读出方法 | |
US20030046630A1 (en) | Memory using error-correcting codes to correct stored data in background | |
US7330934B2 (en) | Cache memory with reduced power and increased memory bandwidth | |
JP7178465B1 (ja) | 半導体記憶装置 | |
JP2000163320A (ja) | ソフトエラー対策機能付メモリ装置及びソフトエラー対策方法 |
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 |