CN110704022A - 向量与矩阵的fpga并行快速乘法器模块及其计算方法 - Google Patents

向量与矩阵的fpga并行快速乘法器模块及其计算方法 Download PDF

Info

Publication number
CN110704022A
CN110704022A CN201910590888.1A CN201910590888A CN110704022A CN 110704022 A CN110704022 A CN 110704022A CN 201910590888 A CN201910590888 A CN 201910590888A CN 110704022 A CN110704022 A CN 110704022A
Authority
CN
China
Prior art keywords
memory
output port
multiplier
accumulator
controller
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
CN201910590888.1A
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.)
INSTITUTE OF SENSOR TECHNOLOGY GANSU ACADEMY OF SCIENCE
Original Assignee
INSTITUTE OF SENSOR TECHNOLOGY GANSU ACADEMY OF SCIENCE
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 INSTITUTE OF SENSOR TECHNOLOGY GANSU ACADEMY OF SCIENCE filed Critical INSTITUTE OF SENSOR TECHNOLOGY GANSU ACADEMY OF SCIENCE
Priority to CN201910590888.1A priority Critical patent/CN110704022A/zh
Publication of CN110704022A publication Critical patent/CN110704022A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Abstract

提供一种向量与矩阵的FPGA并行快速乘法器,消除了现有方法计算时需要重复寻址的问题,有效减少了访存次数和访存时间,提高了计算速度,实现了向量与矩阵的并行乘法运算,并提供该向量与矩阵乘法器的实现方法。本发明的技术方案:结构如下:该结构由n+1个FIFO队列结构存储器、n个乘法器、n个累加器、n个缓存器和n个控制器组成。每个存储器均有1个输入端口,1个输出端口;每个乘法器均有2个输入端口,1个输出端口;每个累加器均有2个输入端口,1个输出端口;每个缓存器均有1个输入端口,1个输出端口;每个控制器均有1个输入端口,2个输出端口。

Description

向量与矩阵的FPGA并行快速乘法器模块及其计算方法
技术领域
本发明属于信息通信领域,具体涉及一种向量与矩阵的FPGA并行快速乘法器及其实现方法。
研究背景
向量与矩阵的乘法运算是现代信号处理中最基本的运算,并在诸如图像处理领域的特征提取、稀疏信号处理、机器学习领域数据压缩以及自动控制中的过程控制中都得到广泛应用。向量与矩阵的乘法运算是一种耗时长,计算复杂度较高,消耗内存大的运算,其计算性能直接影响系统的整体性能。
近年来,随着FPGA技术的飞速发展,FPGA将采集、控制、处理、传输等功能集于一块芯片内,缩短了开发周期,并行计算使得可编程灵活性大大增加,现有的FPGA随着工艺以及精度的提高,更广泛的应用于计算密集型的应用场合。基于FPGA的设计原理和架构,FPGA通过设计多个并行计算模块,可以快速有效地实现并行处理,提高计算速度。但是,目前基于FPGA 的向量与矩阵乘法运算设计方面,多采用串行的设计方法,该类方法存在延迟时间长,可扩展性差以及带宽随维度成倍增加等限制。因此,现有的处理方式控制复杂而且不能对实时数据进行流水式操作,计算复杂度较高,消耗内存大,且不易实现。
发明内容
本发明的目的在于针对现有方法的不足,提供一种向量与矩阵的FPGA并行快速乘法器,消除了现有方法计算时需要重复寻址的问题,有效减少了访存次数和访存时间,提高了计算速度,实现了向量与矩阵的并行乘法运算,并提供该向量与矩阵乘法器的实现方法。
本发明的技术方案:结构如下:
该结构由n+1个FIFO(先进先出)队列结构存储器(存储器(0)、存储器(1),存储器(2)…存储器(n))、n个乘法器(M1,M2,…Mn)、n个累加器(A1,A2,…An)、n个缓存器 (Buf1、Buf2、…Bufn)和n个控制器(控制器1、控制器2、…控制器n)组成。
每个存储器均有1个输入端口,1个输出端口;每个乘法器均有2个输入端口,1个输出端口;每个累加器均有2个输入端口,1个输出端口;每个缓存器均有1个输入端口,1 个输出端口;每个控制器均有1个输入端口,2个输出端口。
各个部件的连接关系如下:存储器(0)的输出端口与乘法器M1,M2,…Mn的一个输入端口分别相连,存储器(1)的输出端口与乘法器M1的另一个输入端口连接,乘法器M1的输出端口与累加器A1的一个输入端口相连,累加器A1的另一个输入端口与控制器1的输出端口 1连接,累加器A1的输出端口与缓存器Buf1的输入端口连接,缓存器Buf1的输出端口与控制器1的输入端口连接,控制器1的输出端口2为最终结果输出端口out1;
存储器(0)的输出端口与乘法器M1,M2,…Mn的一个输入端口分别相连,存储器(2)的输出端口与乘法器M2的另一个输入端口连接,乘法器M2的输出端口与累加器A2的一个输入端口相连,累加器A2的另一个输入端口与控制器2的输出端口1连接,累加器A2的输出端口与缓存器Buf2的输入端口连接,缓存器Buf2的输出端口与控制器2的输入端口连接,控制器2的输出端口2为最终结果输出端口out2;
存储器(0)的输出端口与乘法器M1,M2,…Mn的一个输入端口分别相连,存储器(n)的输出端口与乘法器Mn的另一个输入端口连接,乘法器Mn的输出端口与累加器An的一个输入端口相连,累加器An的另一个输入端口与控制器n的输出端口连接,累加器An的输出端口与缓存器Bufn的输入端口连接,缓存器Bufn的输出端口与控制器n的输入端口连接,控制器n的输出端口2为最终结果输出端口outn;运算步骤为:
S1将m维向量X存入存储器(0),即存储器(0)中存入的值为x1,x2,…xm;为了存储方便,将矩阵W转置为n*m维矩阵,然后将n行向量分别存入存储器(1),存储器(2)…存储器(n);即存储器(1)中存入的值为w11,w21,…wm1,存储器(2)中存入的值为w12,w22,…wm2,以此类推,存储器(n)中存入的值为w1n,w2n,…wmn
S2取出存储器(0)中的第1个元素x1及存储器(1),存储器(2),…存储器(n)中的第1个元素w11,w12,…,w1n;将x1分别送入M1,M2,…Mn乘法器,w11,w12,…w1n依次送入M1,M2,… Mn乘法器,实现x1与w11,w12,…w1n的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An;
S3取出存储器(0)中的第2个元素x2及存储器(1),存储器(2)…存储器(n)中的第2个元素 w21,w22,…w2n;将x2分别送入M1,M2,…Mn乘法器,w21,w22,…w2n依次送入M1,M2,…Mn乘法器,实现x2与w21,w22,…w2n的n路并行乘法计算,然后将乘积结果送入相应的累加器 A1,A2,…An;S4取出存储器(0)中的第i(m>i≥3)个元素xi及存储器(1),存储器(2)…存储器(n)中的第i个元素wi1,wi2,…,win;将xi分别送入M1,M2,…,Mn乘法器,wi1,wi2,…win依次送入M1,M2,…Mn乘法器,实现xi与wi1,wi2,…win的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An;
S5若i<m,则i+1,重复步骤S4;否则,进入步骤S6;
S6累加器A1,A2,…An将输出结果分别存储在缓存器Buf1,Buf2,…,Bufn中。控制器1,控制器2,…,控制器n判断向量X与矩阵W的运算是否结束,如果没有结束,将Buf1,Buf2,…,Bufn中的结果送入累加器A1,A2,…An;如果结束,则将Buf1,Buf2,…,Bufn 中的结果输出,即为向量X与矩阵W相乘的结果[out1,out2,…outn].
附图说明
图1为结构示意图
具体实施方式
如图1所示,为了描述更清楚,在附图中加入了控制器模块,从而方便控制乘法是否计算完成,如果没有完成则将buf结果送入累加器A1,如果计算完成,则输出结果Out。
本发明的技术方案:
向量与矩阵的FPGA并行快速乘法器原理如下:
一个向量X=(x1,x2,x3,xm),
Figure RE-GDA0002300863390000031
如果X*W,若用传统的计算方法,则需要做如下运算:
1)取x1,取w11,计算x1*w11
2)取x2,取w21,计算x2*w21
3)取x3,取w31,计算x3*w31
4)取xm,取wm1,计算xm*wm1
5)计算∑xi*wi1,得到X*W1,即完成了向量X与矩阵W第一列的乘积运算。
完成向量与矩阵一列的乘积运算需要访存2m次,以此类推,m维向量X与m*n维矩阵W做乘积运算,则需要2m*n=2mn次访存且并行效果非常差。
如果将W进行转置,
Figure RE-GDA0002300863390000032
则可以进行如下运算:
取X中第一个向量x1作为公共向量,取WT中的第一列则可以用n路并行乘法来计算,得到
Figure RE-GDA0002300863390000041
取X中第二个向量x2作为公共向量,取WT中的第二列则可以用n路并行乘法来计算,得到
Figure RE-GDA0002300863390000042
取X中第m个向量xm作为公共向量,取WT中的第m列则可以用n路并行乘法来计算,得到
Figure RE-GDA0002300863390000043
将上述结果累加,则得到向量X与矩阵W的乘积为
Figure RE-GDA0002300863390000044
此种方法共访存mn+m次,在n>1时,2mn>mn+m。即第二种方法访存次数更少,且易于并行运算,在设计并行模块时可将其结构如图1所示:
该乘法器在FPGA中的执行过程:
若m维向量X与m*n维矩阵W相乘,相乘过程如下:
(1)将m维向量X存入存储器(0),即存储器(0)中存入的值为x1,x2,…xm;为了存储方便,将矩阵W转置为n*m维矩阵,然后将n行向量分别存入存储器(1),存储器(2)…存储器(n);即存储器(1)中存入的值为w11,w21,…wm1,存储器(2)中存入的值为w12,w22,…wm2,以此类推,存储器(n)中存入的值为w1n,w2n,…wmn
(2)取出存储器(0)中的第1个元素x1及存储器(1),存储器(2),…存储器(n)中的第1个元素w11,w12,…,w1n;将x1分别送入M1,M2,…Mn乘法器,w11,w12,…w1n依次送入M1,M2,…Mn乘法器,实现x1与w11,w12,…w1n的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An。
(3)取出存储器(0)中的第2个元素x2及存储器(1),存储器(2)…存储器(n)中的第2个元素 w21,w22,…w2n;将x2分别送入M1,M2,…Mn乘法器,w21,w22,…w2n依次送入M1,M2,…Mn乘法器,实现x2与w21,w22,…w2n的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An。
(4)以此类推,取出存储器(0)中的第m个元素xm及存储器(1),存储器(2)…存储器(n)中的第m个元素wm1,wm2,…,wmn;将xm分别送入M1,M2,…,Mn乘法器,wm1,wm2,…wmn依次送入M1,M2,…Mn乘法器,实现xm与wm1,wm2,…wmn的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An。
(5)累加器A1,A2,…An将输出结果分别存储在缓存器Buf1,Buf2,…,Bufn中。控制器1,控制器2,…,控制器n判断向量X与矩阵W的运算是否结束,如果没有结束,将Buf1,Buf2,…,Bufn中的结果送入累加器A1,A2,…An;如果结束,则将Buf1,Buf2,…,Bufn 中的结果输出,即为向量X与矩阵W相乘的结果[out1,out2,…outn].
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的内容和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种向量与矩阵的FPGA并行快速乘法器,其特征在于,结构如下:
该结构由n+1个FIFO即先进先出队列结构存储器、n个乘法器、n个累加器、n个缓存器和n个控制器组成;
其中,每个存储器均有1个输入端口,1个输出端口;每个乘法器均有2个输入端口,1个输出端口;每个累加器均有2个输入端口,1个输出端口;每个缓存器均有1个输入端口,1个输出端口;每个控制器均有1个输入端口,2个输出端口;
各个部件的连接关系如下:
存储器(0)的输出端口与乘法器M1,M2,…Mn的一个输入端口分别相连,存储器(1)的输出端口与乘法器M1的另一个输入端口连接,乘法器M1的输出端口与累加器A1的一个输入端口相连,累加器A1的另一个输入端口与控制器1的输出端口1连接,累加器A1的输出端口与缓存器Buf1的输入端口连接,缓存器Buf1的输出端口与控制器1的输入端口连接,控制器1的输出端口2为最终结果输出端口out1;
存储器(0)的输出端口与乘法器M1,M2,…Mn的一个输入端口分别相连,存储器(2)的输出端口与乘法器M2的另一个输入端口连接,乘法器M2的输出端口与累加器A2的一个输入端口相连,累加器A2的另一个输入端口与控制器2的输出端口1连接,累加器A2的输出端口与缓存器Buf2的输入端口连接,缓存器Buf2的输出端口与控制器2的输入端口连接,控制器2的输出端口2为最终结果输出端口out2;
依次连接存储器(0)的输出端口与乘法器M1,M2,…Mn的一个输入端口分别相连,存储器(n)的输出端口与乘法器Mn的另一个输入端口连接,乘法器Mn的输出端口与累加器An的一个输入端口相连,累加器An的另一个输入端口与控制器n的输出端口连接,累加器An的输出端口与缓存器Bufn的输入端口连接,缓存器Bufn的输出端口与控制器n的输入端口连接,控制器n的输出端口2为最终结果输出端口outn。
2.根据权利要求1所述的一种向量与矩阵的FPGA并行快速乘法器,其特征在于,运算步骤为:
S1将m维向量X存入存储器(0),即存储器中存入的值为x1,x2,…xm;为了存储方便,将矩阵W转置为n*m维矩阵,然后将n行向量分别存入存储器(1),存储器(2)…存储器(n);即存储器(1)中存入的值为w11,w21,…wm1,存储器(2)中存入的值为w12,w22,…wm2,以此类推,存储器(n)中存入的值为w1n,w2n,…wmn
S2取出存储器(0)中的第1个元素x1及存储器(1),存储器(2),…存储器(n)中的第1个元素w11,w12,…,w1n;将x1分别送入M1,M2,…Mn乘法器,w11,w12,…w1n依次送入M1,M2,…Mn乘法器,实现x1与w11,w12,…w1n的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An;
S3取出存储器(0)中的第2个元素x2及存储器(1),存储器(2)…存储器(n)中的第2个元素w21,w22,…w2n;将x2分别送入M1,M2,…Mn乘法器,w21,w22,…w2n依次送入M1,M2,…Mn乘法器,实现x2与w21,w22,…w2n的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An;
S4取出存储器(0)中的第i(m>i≥3)个元素xm及存储器(1),存储器(2)…存储器(n)中的第i个元素wi1,wi2,…,win;将xi分别送入M1,M2,…,Mn乘法器,wi1,wi2,…win依次送入M1,M2,…Mn乘法器,实现xi与wi1,wi2,…win的n路并行乘法计算,然后将乘积结果送入相应的累加器A1,A2,…An;
S5若i<m,则i+1,重复步骤S4;否则,进入步骤S6;S6累加器A1,A2,…An将输出结果分别存储在缓存器Buf1,Buf2,…,Bufn中;控制器1,控制器2,…,控制器n判断向量X与矩阵W的运算是否结束,如果没有结束,将Buf1,Buf2,…,Bufn中的结果送入累加器A1,A2,…An;如果结束,则将Buf1,Buf2,…,Bufn中的结果输出,即为向量X与矩阵W相乘的结果[out1,out2,…outn]。
CN201910590888.1A 2019-07-02 2019-07-02 向量与矩阵的fpga并行快速乘法器模块及其计算方法 Pending CN110704022A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910590888.1A CN110704022A (zh) 2019-07-02 2019-07-02 向量与矩阵的fpga并行快速乘法器模块及其计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910590888.1A CN110704022A (zh) 2019-07-02 2019-07-02 向量与矩阵的fpga并行快速乘法器模块及其计算方法

Publications (1)

Publication Number Publication Date
CN110704022A true CN110704022A (zh) 2020-01-17

Family

ID=69193099

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910590888.1A Pending CN110704022A (zh) 2019-07-02 2019-07-02 向量与矩阵的fpga并行快速乘法器模块及其计算方法

Country Status (1)

Country Link
CN (1) CN110704022A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905954A (zh) * 2020-12-28 2021-06-04 北京计算机技术及应用研究所 一种利用fpga bram的cnn模型卷积运算加速计算方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572011A (zh) * 2014-12-22 2015-04-29 上海交通大学 基于fpga的通用矩阵定点乘法器及其计算方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572011A (zh) * 2014-12-22 2015-04-29 上海交通大学 基于fpga的通用矩阵定点乘法器及其计算方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XUHUI YANG等: "FPGA-based approximate calculation system of General Vector Machine", MICROELECTRONICS JOURNAL, vol. 86, 30 April 2019 (2019-04-30), pages 87 - 93 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905954A (zh) * 2020-12-28 2021-06-04 北京计算机技术及应用研究所 一种利用fpga bram的cnn模型卷积运算加速计算方法

Similar Documents

Publication Publication Date Title
US11710041B2 (en) Feature map and weight selection method and accelerating device
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN109522052B (zh) 一种计算装置及板卡
US10936941B2 (en) Efficient data access control device for neural network hardware acceleration system
CN109543832B (zh) 一种计算装置及板卡
CN109284817B (zh) 深度可分离卷积神经网络处理架构/方法/系统及介质
CN110163360B (zh) 一种计算装置及方法
CN111915001B (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
WO2019157812A1 (zh) 一种计算装置及方法
CN111047008B (zh) 一种卷积神经网络加速器及加速方法
Xu et al. Efficient fast convolution architectures for convolutional neural network
CN111767994A (zh) 一种神经元计算模块
CN110598844A (zh) 一种基于fpga的并行卷积神经网络加速器及加速方法
Xiao et al. FPGA-based scalable and highly concurrent convolutional neural network acceleration
CN110704022A (zh) 向量与矩阵的fpga并行快速乘法器模块及其计算方法
Nag et al. ViTA: A vision transformer inference accelerator for edge applications
WO2022205197A1 (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
CN111008691A (zh) 一种权值和激活值都二值化的卷积神经网络加速器架构
CN113485750A (zh) 数据处理方法及数据处理装置
CN111222090B (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
CN210776651U (zh) 向量与矩阵的fpga并行快速乘法器模块
CN109190755B (zh) 面向神经网络的矩阵转换装置及方法
CN112639839A (zh) 神经网络的运算装置及其控制方法
CN112639836A (zh) 数据处理装置、电子设备和数据处理方法
US11068775B2 (en) Processing apparatus and method for artificial neuron

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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Zhang Hongxia

Inventor after: Xu Wude

Inventor after: Ma Fanglan

Inventor after: Yang Xuhui

Inventor after: Ma Hongwei

Inventor after: Yang Guohui

Inventor after: Gong Xuefang

Inventor after: Zheng Bo

Inventor after: Han Genliang

Inventor before: Yang Xuhui

Inventor before: Han Genliang

Inventor before: Xu Wude

Inventor before: Ma Fanglan

Inventor before: Qi Changyu

Inventor before: Zhang Hongxia

Inventor before: Ma Hongwei

Inventor before: Yang Guohui

Inventor before: Gong Xuefang

Inventor before: Zheng Bo