CN104572011A - 基于fpga的通用矩阵定点乘法器及其计算方法 - Google Patents
基于fpga的通用矩阵定点乘法器及其计算方法 Download PDFInfo
- Publication number
- CN104572011A CN104572011A CN201410821542.5A CN201410821542A CN104572011A CN 104572011 A CN104572011 A CN 104572011A CN 201410821542 A CN201410821542 A CN 201410821542A CN 104572011 A CN104572011 A CN 104572011A
- Authority
- CN
- China
- Prior art keywords
- fixed
- point
- data
- matrix
- module
- 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.)
- Granted
Links
Landscapes
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
一种在FPGA芯片上使用的通用矩阵定点乘法器,其内部结构由控制模块、转换模块、运算模块和存储模块四个部分组成。控制模块根据待运算矩阵的维数生成控制信号。转换模块负责在运算过程中进行定点数与浮点数的转换。运算模块从存储模块和转换模块中读入运算数据,进行定点乘法和定点累加运算,并将结果存入存储模块中。存储模块用于缓存待运算矩阵数据和结果矩阵数据,并提供与总线信号兼容的接口,允许总线上其它部件访问。本发明充分利用硬件中定点计算效率高的特点,采用一种独特的运算结构,实现数据的边转换边运算来提高总体运算速度,可同时使用多个矩阵定点乘法器并行计算,因此,可支持任意维数矩阵的定点乘法运算,同时保证很高的计算效率。与用浮点数进行矩阵乘法相比,计算效率有很大提高。
Description
技术领域
本发明属于高性能计算领域,是一种提高FPGA矩阵运算能力的设计。
背景技术
矩阵乘法操作是科学计算中的一个基本操作,在工业控制、模式识别、数字信号处理等领域广泛存在,特别是在便携式设备中,经常涉及到模式识别、图像处理等操作,这些操作都是有大量的矩阵运算来完成的,而便携式设备通常计算配置较低,矩阵乘法也就成为计算过程中最为耗时的关键操作。矩阵乘法的时间复杂度较高,通常为O(N3),其计算性能直接影响系统的整体性能。
近年来飞速发展的FPGA技术,给矩阵运算的高速实时运行创造了机会。FPGA技术已经从最初只能面向纯逻辑应用转变为能够面向复杂计算的密集型应用。最新的FPGA器件,不仅逻辑资源门极其丰富,而且还包括大量面向高计算性能的DSP单元、块状RAM(Block RAM,BRAM)等。同时为方便FPGA的调试,各FPGA厂商还提供了各种片内逻辑分析工具(如Xilinx公司的ChipScope),在软硬件上均保证了FPGA实现高性能矩阵计算的可能性。矩阵运算的硬件化可以充分利用硬件并行性的特点,在很大程度上提高矩阵计算效率。
目前FPGA拥有众多的系列产品,主要生产厂商有Xilinx、Altera、Actel、Lattice和QuickLogic等公司。尽管这些厂商生产的FPGA品种和型号繁多,但其原理和内部基本结构是相同的,都是由细粒度的可编程逻辑单元(ConfigurableLogic Block,CLB)、可编程连线资源(Programmable Interconnect,PI)及可编程输入/输出单元(Input/Output Block,IOB)组成。其中CLB是FPGA的基本逻辑单元,它提供了用户所需要的逻辑功能,通常规则的排成一个阵列,散布于整个芯片;IOB完成芯片内部逻辑和外部封装脚的接口,它可编程为输入、输出、和双向I/O口三种方式,通常排列于芯片的四周;PI包括各种长度的连接线段和一些可编程的连接开关,它们将各个可编程逻辑块或输入/输出连接起来,构成特定的功能电路。以Xilinx公司的FPGA为例,其结构示意图如图1。其中BRAM是BLOCK-RAM的简称,为芯片提供存储单元;DCM是Xilinx FPGA独有的时钟管理单元,可以实现时钟频率综合、相位偏移等功能;每个CLB单元的逻辑功能由一小块称为查找表(Look-Up Table,LUT)的存储单元指定。Xilinx Virtex-4FPGA中每个CLB包含两个Slice。Slice内部包含2个LUT、2个触发器、多路开关及进位链等资源。CLB内部的两个Slice是相互独立的,各自分别连接开关阵列(Switch Matrix),以便与通用布线阵列(General routing Matrix)相连。
采用FPGA进行设计不是以功能电路为基础分布式系统综合技术,而是以功能IP核(Intellectual Property core)为基础的系统固件和电路综合技术。IP核是为了实现某种特定功能而利用FPGA中的CLB、IOB以及PI逻辑电路资源构建成的特殊电路。各个厂商为了便于用户进行开发,都会提供一些免费的IP核。而出厂前就已经在芯片中预先设置好的IP核称为硬核。如在本发明基于FPGA的通用矩阵定点乘法器中使用的DSP48即为Xilinx Virtex-4提供的硬核。
通过查阅相关文献,目前使用FPGA实现矩阵乘法的大部分直接使用浮点数进行计算,如杨楠,兰建的基于FPGA的通用矩阵浮点乘法器(申请号:201010139877.0)应用浮点运算器设计了矩阵的乘法器,但在计算过程中,浮点计算器运算消耗的时间远大于定点计算。对于N×N矩阵相乘有N3次乘法运算和N2(N-1)次加法运算,若均使用定点计算代替浮点计算则可以节省出很多计算时间,提高整体计算效率。
发明内容
本发明提出一种在FPGA芯片上使用的高性能通用矩阵定点乘法器,充分利用定点计算效率高的特点,将浮点数转换为定点数进行数据计算,在数据转换的同时进行部分结果数据的计算,整个计算采用并行流水线结构,在尽可能减少硬件资源消耗的情况下实现矩阵定点乘法器。
本发明技术解决方案如下:
一种基于FPGA的通用矩阵定点乘法器,其特点在于,包括控制模块、转换模块、运算模块和存储模块;
所述的控制模块分别与所述的运算模块和存储模块相连,用于生成控制信号控制运算模块和存储模块的有序运行;
所述的转换模块分别与所述的与所述的运算模块和存储模块相连,用于实现定点数与浮点数之间的转换;
所述的运算模块,用于进行定点数的乘加计算;
所述的存储模块,还与所述的运算模块相连,用于缓存待运算矩阵数据和结果矩阵数据,并提供系统总线访问接口。
所述的控制模块与系统总线相连在计算开始前接收请求矩阵乘法信号并返回应答信号,在计算准备阶段接收待乘矩阵维数信息和运算使能信号,在运算结束后返回运算结束信号;与存储模块相连在计算过程中提供待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号;与运算模块相连在每一轮向量乘法结束时提供定点累加器清零信号。
所述的转换模块包括浮-定转换器和定-浮转换器;所述的浮-定转换器将在计算机中存储的32位浮点数转换成64位定点数以供后续定点计算,所述的定-浮转换器将乘法运算结果的定点数转换成浮点数以供计算机读取;
所述的浮-定转换器与存储模块相连接收待转换的浮点数并将转换后的定点数返回存储;与运算模块相连在数据转换阶段将数据转换结果直接提供给运算模块进行计算;
所述的定-浮转换器与运算模块相连接收乘法运算结果数据;与存储模块相连返回转换结果。
所述的运算模块包括定点乘法器和定点累加器;所述的定点乘法器计算2个64位定点数的乘法,所述的定点累加器对定点乘法结果进行求和;运算期间,定点乘法器每周期从存储模块或浮-定转换器读入2个数据进行定点乘法计算,定点累加器实时输出定点累加结果;当某一向量乘法计算结束时,定点累加器将累加结果送给定-浮转换器进行转换,并从控制模块接收定点累加器清零信号将内部累加器结果清零,开始准备下一轮向量计算。
所述的存储模块包括系统总线数据接口和内部数据接口;系统总线数据接口负责与外部总线或FPGA芯片内的其它设备交换数据;内部数据接口负责与转换模块或运算模块交换数据;
在计算准备阶段,存储模块与系统总线相连接收待运算矩阵数据;在计算过程中,与控制模块相连接收待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号,与运算模块的定点乘法器相连提供待运算数据信号,与转换模块的浮-定转换器相连提供待转换数据并存储其转换结果,与转换模块的定-浮转换器相连接收转换后的结果矩阵数据;在计算完成后,与系统总线相连返回运算结果。
一种基于FPGA的通用矩阵定点乘法器的计算方法,其特点在于,该方法包括如下步骤:
①空闲状态时,存储模块通过系统总线访问接口接收待运算矩阵数据;
②控制模块接收系统总线发送的矩阵维数信息以及运算使能信号;
③控制模块接收到运算使能信号后,根据矩阵的维数信息,将待运算矩阵拆分成多个行向量或列向量的组合,以向量为单位向存储模块提供待转换数据地址信号。
④存储模块接收到待转换数据地址信号后,依次将待转换数据交由转换模块进行浮点到定点的转换,转换模块实时地将数据转换结果返回存储模块,同时,控制模块向存储模块发送转换结果数据地址信号和待运算数据地址信号,前者用于对转换结果数据进行存储,后者使得存储模块依次向运算模块提供转换后的数据;
⑤运算模块从转换模块和存储模块以向量为单位读取转换后的数据进行向量定点乘加计算直至数据转换阶段结束;
⑥数据转换阶段完成后,控制模块向存储模块依次提供待运算数据地址信号,运算模块只从存储模块中以向量为单位读取转换后的待运算数据进行向量定点乘加计算直至矩阵计算全部完成;
⑦在每一轮的向量定点乘加计算结束后,运算模块将向量乘加结果送至转换模块进行定点到浮点的转换;控制模块向运算模块提供累加器清零信号;
⑧在定点到浮点的转换结束后,转换模块将转换后的浮点数送入存储模块;控制模块向存储模块同时提供运算结果数据地址信号和运算结果写使能信号,对运算结果进行存储;
⑨矩阵乘法计算全部结束以后,控制模块向系统总线发出运算结束信号,告知CPU读取计算结果,回复到空闲状态。
本发明支持任意维数的矩阵乘法运算,在提高整体计算效率的同时保证计算精度,其特点包括以下两点:
1)整体内部结构由控制模块、转换模块、运算模块和存储模块四个部分组成。
2)整个计算过程分为两个阶段,数据转换阶段和乘法计算阶段,在数据转换阶段并行执行部分矩阵乘法运算。两个阶段均采用流水线结构,提高整体计算效率。
本发明以上两个特点的技术解决方案分别如下:
1、通用矩阵定点乘法器的整体结构
(1)所述的控制模块主要由数字逻辑电路实现,用于生成控制信号控制运算模块和存储模块的有序进行。控制模块与系统总线相连在计算开始前接收请求矩阵乘法信号并返回应答信号,在计算准备阶段接收待乘矩阵维数信息和运算使能信号,在运算结束后返回运算结束信号;与存储模块相连在计算过程中提供待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号;与运算模块在计算过程中提供定点累加器清零信号。控制模块根据总线提供的待乘矩阵维数信息,将矩阵按行(或按列)分解成若干个子向量,确定各子向量的转换顺序和运算顺序,并依此生成对应的数据地址信号流,指示每一时刻存储模块输入、输出数据的地址。在每次向量乘法运算结束后,控制模块生成定点累加器清零信号和运算结果写使能信号,前者控制运算模块将累加器结果清零,后者控制存储模块写入运算结果,准备开始下一次向量计算。
(2)所述的转换模块由DSP运算单元构成,包括两个浮-定转换器和一个定-浮转换器。浮-定转换器负责将在计算机中存储的32位浮点数转换成64位定点数以供后续定点计算,定点数的整数与小数位数可以根据实际需要进行选择。定-浮转换器将乘法运算结果的定点数转换成浮点数以供计算机读取。浮-定转换器与存储模块相连接收待转换的浮点数并将转换后的定点数返回存储;与运算模块相连在数据转换阶段将数据转换结果直接提供给运算模块进行计算。定-浮转换器与运算模块相连接收乘法运算结果数据;与存储模块相连返回转换结果。
(3)所述的运算模块主要由定点乘法器和定点累加器两部分组成。定点乘法器负责计算2个64位定点数的乘法,定点累加器负责对定点乘法结果进行求和。运算期间,定点乘法器每周期从存储模块或浮-定转换器读入2个数据进行定点乘法计算,定点累加器实时输出定点累加结果。当某一向量乘法计算结束时,定点累加器将累加结果送给定-浮转换器进行转换,并从控制模块接收累加器清零信号将内部累加器结果清零,开始准备下一轮向量计算。
(4)所述的存储模块由Block-RAM实现,该模块包括系统总线和内部两个数据接口。系统总线数据接口负责与外部总线或FPGA芯片内的其它设备交换数据,内部数据接口负责与转换模块或运算模块交换数据。当本发明处于空闲状态时,总线数据接口工作;处于工作状态时,内部数据接口工作。存储模块与系统总线相连在计算准备阶段接收待运算矩阵数据,在运算结束后返回运算结果,总线上传输的数据均为32位浮点数;与控制模块相连接收待存储数据地址信号、待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号;与运算模块的定点乘法器相连提供计算数据信号;与转换模块的浮-定转换器相连提供待转换数据,存储转换后数据;与转换模块的定-浮转换器相连接收转换后的结果矩阵数据。
2、通用矩阵定点乘法器的整体计算过程
本发明通用矩阵定点乘法器的整个计算过程分为两个阶段,数据转换阶段与乘法计算阶段。下面以C=A×B为例来进行说明。
所述的数据转换阶段占用的时间为A、B两个矩阵中元素个数较多的一个矩阵完成全部数据转换所占用的时间。在该阶段的初始时刻,A、B两个矩阵同时进行数据转换,矩阵A按行从上至下进行转换,矩阵B按列从左至右进行转换。依次转换A、B矩阵数据的同时一边将转换结果送入存储模块存储以供后续计算使用,一边将其直接送入运算模块进行乘法运算。在进行A矩阵的第一行、B矩阵的第一列数据转换时,定点乘法器每周期从浮-定转换器直接读入2个数据进行计算,并实时输出累加结果。当A矩阵的第一行、B矩阵的第一列转换结束后,控制模块输出延迟后的累加器清零信号和存储器写使能信号,前者将定点累加器内部结果清零,准备开始下一轮向量计算,后者将经过定-浮转换器转换后的累加结果写入存储模块,结果矩阵C的第一行第一列元素计算完成。在进行A矩阵的第二行、B矩阵的第二列数据转换时,定点乘法器一个端口直接从浮-定转换器输出端依次读入A矩阵第二行数据(或B矩阵第二列数据),另一个端口从存储模块依次读入之前存储的B矩阵第一列数据(或A矩阵第一行数据)进行乘法计算,并实时输出累加结果。当A矩阵的第二行、B矩阵的第二列转换结束后,控制模块输出延迟后的累加器清零信号和存储器写使能信号,前者将定点累加器内部结果清零,准备开始下一轮向量计算,后者将经过定-浮转换器转换后的累加结果写入存储模块,结果矩阵C的第二行第一列(第一行第二列)元素计算完成。如此类推,当数据转换阶段结束后,经过若干固定延迟周期,结果矩阵C的第一行或第一列元素全部计算完成。本阶段控制模块根据比较结果矩阵C的行列数大小生成控制信号来决定计算矩阵C的行列顺序。若结果矩阵C的行数大于列数,则首先计算C的第一列数据。此时在进行A矩阵的第二行、B矩阵的第二列数据转换时,定点乘法器一个端口直接从浮-定转换器输出端依次读入A矩阵第二行数据,另一个端口从存储模块依次读入之前存储的B矩阵第一列数据进行乘法计算。反之,若结果矩阵C的行数小于列数,则首先计算C的第一行数据。在进行A矩阵的第二行、B矩阵的第二列数据转换时,定点乘法器一个端口从存储模块依次读入之前存储的A矩阵第一行数据,另一个端口直接从浮-定转换器输出端依次读入B矩阵第二列数据进行乘法计算。总之,控制信号使得运算模块在数据转换阶段的同时尽可能多地计算出结果矩阵数据,节省计算时间。
所述的乘法计算阶段从A、B矩阵数据全部转换结束开始到整个乘法计算完成结束。在该阶段,定点乘法器每周期从存储模块内读入2个定点数据进行计算,该定点数据是在数据转换阶段由浮点数转换而来。定点累加器则实时输出累加结果。当一轮向量乘法结束后,控制模块输出累加器清零信号和存储器写使能信号,前者将定点累加器内部结果清零,准备开始下一轮向量计算,后者将经过定-浮转换器转换后的累加结果写入存储模块。
本发明整个计算过程中运算模块一直处于工作状态,数据转换阶段运算模块计算结果矩阵的第一行或第一列数据,乘法计算阶段计算结果矩阵其他数据。两阶段均采用流水线结构,如图(3)所示,吞吐率最高可达1.0,即平均1个时钟周期完成一次乘法累加运算,大大提高了计算效率。
本发明通用矩阵定点乘法器的工作频率可高于系统时钟频率,充分发挥FPGA芯片的性能,以获得更高的计算效率。此外,在同一块FPGA芯片内可以实例化任意多个所述通用矩阵定乘法器(视芯片内部逻辑资源而定),实现并行计算,进一步提高计算效率。
附图说明
图1Xilinx的FPGA芯片内部结构示意图;
图2为基于FPGA的通用矩阵定点乘法器整体内部结构和各模块输入输出信号流向图;
图3为基于FPGA的通用矩阵定点乘法器计算流水线结构图;
图4为基于FPGA的通用矩阵定点乘法器运行流程示意图;
图5为同时使用多个通用矩阵定点乘法器进行并行计算的结构示意图。
具体实施方式
下面结合实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。
本发明基于FPGA的通用矩阵定点乘法器主要由控制模块、转换模块、运算模块和储存模块四个部分组成,其整体结构和内部信号流向如图2所示。采用Xilinx的Virtex IV(XC4VFX12-10-ffg668)芯片实现了通用矩阵定点乘法器,各模块的具体实现过程是:
1、控制模块
本实施例中控制模块由XC4VFX12-10-ffg668芯片内部的LUTs(查找表)和FF(触发器)等数字逻辑电路构成。该电路控制着整个矩阵乘法过程的有序进行,在特定时钟周期产生运算模块和存储模块所需的各种控制信号。
定点矩阵乘法的过程为:CPU向定点矩阵乘法器发送请求矩阵乘法信号,如果定点矩阵乘法器在空闲状态,通过应答信号通知CPU传送数据,控制模块先将矩阵维数和列数存放在内部寄存器中,接着依次产生整个乘法计算过程中所需的一系列控制信号,包括:待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号、定点累加器清零信号和运算结果写使能信号。最后,当计算完成时返回运算结束信号告知CPU计算结束,可以读取结果。
2、转换模块
本实施例中转换模块由XC4VFX12-10-ffg668芯片的DSP48实现。DSP48作为FPGA内高性能加速单元,具有极高的性能、较低的功耗和很高的经济性。每个DSP48单元都包含两个DSP slices来构成通用的粗精度DSP架构基础,其中每个DSP Slices具有一个后接多路复用器的2输入乘法器和一个3输入加法/减法器。乘法器接收两个18位的2进制补码操作数,产生一个36位的2进制补码结果,该结果可符号扩展至48位,并且可以反馈至加法/减法器。加法/减法器接受3个48位的2进制补码操作数,产生一个48位的2进制补码结果。进行级联后还可以支持更高级别的DSP功能。DPS48可以根据用户的定制完成浮点到定点、定点到浮点之间的转换。在定制处理单元时还需要制定输出延迟、数据率,输出信号的选择等时序和引脚参数。
本实施例中的转换模块应用两个浮-定转换器和一个定-浮转换器。三个数据转换器具有相同的输入输出接口,两个输入信号分别为时钟信号和待转换数据信号,输出信号为转换结果数据信号。两个浮-定转换器在数据转换阶段负责将浮点数转换成定点数,一个定-浮转换器在整个计算过程中负责将向量相乘的定点数结果转换成浮点数。
3、运算模块
本实施例中运算模块仍由XC4VFX12-10-ffg668芯片的DSP48单元构成,包括定点乘法器和定点累加器,用于进行以向量为单位的定点数的乘法和累加操作,并将结果写回存储模块。定点乘法器和累加器的各种控制信号由控制模块产生。
主要运算过程为:定点乘法器以向量为单位依次从存储模块或直接从转换模块输出端读入定点数据进行计算,乘法计算结果并送入定点累加器,累加器实时输出累加结果。当该向量乘法结束时,控制模块生成累加器清零信号,定点累加器内部数据清零,开始准备下一轮向量运算。整个计算过程采用流水线结构,即除了计算开始的延迟外,每个计算均在单位周期内完成,具体结构如图(3)所示。
4、存储模块
本实施例中存储模块由XC4VFX12-10-ffg668芯片的Block-RAM实现。在Xilinx FPGA中,块RAM按照列来排列,这样保证了每个CLB单元周围都有比较接近的块RAM用于存储和交换数据。块RAM几乎是FPGA器件中除了逻辑资源之外用的最多的功能块,Xilinx的主流FPGA芯片内部都集成了数量不等的块RAM硬核资源,速度可以达到数百兆赫兹,不会占用额外的CLB资源,而且可以在IP核生成器中灵活地对RAM进行配置,构成单端口RAM、真正双口RAM、ROM(在RAM中存入初值)和FIFO等应用模式。本实施例中共应用4个4KB大小的内存模块,分别标号为0、1、2、3,均采用真正双端口模式。双端口模式的存储器有两个独立的读写通道,分别记为A、B。以端口A为例,进行读操作时WEA为低电平,ADRRA为要读数据的地址;进行写操作时WEA信号为高,DINA为要写入的数据,ADRRA为数据要写入的地址。A、B两个端口支持读写操作的任何组合:两个同时读操作、两个端口同时写操作(不同的地址)或两个不同的时钟下一个端口执行写操作,另一个端口执行读操作。这样每个存储单元就有两个相对独立的读写通道,但值得注意的是这两个通道不可以在同一时刻对同一个地址进行不同的操作。本实施例中存储器0、1的通道A分别与PLB总线接口相连,其余通道与内部数据接口相连。在乘法运算开始之前,由总线数据接口通过存储器0、1的A通道将待运算矩阵的数据写入存储器0、1。计算过程中,该模块与内部数据接口相连,将待运算数据送入转换模块,并将转换后的结果分别存入存储器2、3。运算模块从存储器2、3中读取运算数据并将中间运算结果存入预先设定的存储地址中。矩阵乘法计算的最终结果通过存储器0的B通道写入存储器0中,待乘法运算全部结束,通过存储器0的A通道由总线数据接口将结果全部读出。
以上模块均采用VLOG语言定制实现。整个通用矩阵定点乘法器的时序操作过程如图4所示:
以两个15×15维的矩阵相乘为例(并不仅限于此例),本发明的时序操作过程如下:
(1)复位后通用矩阵定点乘法器处于空闲状态;
(2)通用矩阵定点乘法器等待总线设备将待运算数据写入存储模块;
(3)通用矩阵定点乘法器等待总线设备将矩阵维数信息发送给控制模块,并给出运算使能信号;
(4)控制模块接收到运算使能信号后,根据矩阵的维数信息,将待运算矩阵拆分成多个行向量或列向量的组合,以向量为单位向存储模块提供待转换数据地址信号。
(5)存储模块接收到待转换数据地址信号后,依次将待转换数据交由转换模块进行浮点到定点的转换,转换模块实时地将数据转换结果返回存储模块。在转换的同时,控制模块不断给存储模块发送转换结果数据地址信号和待运算数据地址信号,前者用于对转换结果数据进行存储,后者使得存储模块向运算模块输出待运算数据;运算模块不断从转换模块和存储模块以向量为单位读取转换后的数据进行向量定点乘加计算直至数据转换阶段结束。
(6)数据转换阶段完成后,控制模块向存储模块依次提供待运算数据地址信号,运算模块只从存储模块中以向量为单位读取转换后的待运算数据进行向量定点乘加计算直至矩阵计算全部完成。
(7)在每一轮的向量定点乘加计算结束后,运算模块将向量乘加结果送至转换模块进行定点到浮点的转换;控制模块向运算模块提供累加器清零信号。在定点到浮点的转换结束后,转换模块将转换后的浮点数送入存储模块;控制模块向存储模块同时提供运算结果数据地址信号和运算结果写使能信号,对运算结果进行存储。
(8)矩阵乘法计算全部结束以后,控制模块向系统总线发出运算结束信号,告知CPU读取计算结果,通用矩阵定点乘法器回复到空闲状态。
以两个15×15维的矩阵相乘为例测试本通用矩阵定点乘法器的性能,矩阵数据随机产生。在FPGA中用浮点数计算该矩阵乘法需要8784个时钟周期,而采用通用矩阵定点乘法器计算仅需要3623个时钟周期,并且精度可达到10-4,计算效率提高了一倍多。
将本发明通用矩阵定点乘法器同主控逻辑电路、模拟输入输出电路、存储电路及时钟等辅助电路相连,可以构成一个预测控制器,应用于运动控制等。伺服电机角度跟踪系统是一个典型的随动控制系统,预测控制器通过控制主从电机的角度差来使从电机始终跟随主电机运动,它的成功应用取决于预测控制器能否在一个采样周期内完成对优化问题的在线求解。本发明利用矩阵定点乘法器通过内部数据总线与主控逻辑电路等交互负责矩阵乘法运算,使主从电机的整体跟随效率有较大提高,对具有较多矩阵乘法运算的控制器整体控制效率的提高有很大帮助。
Claims (6)
1.一种基于FPGA的通用矩阵定点乘法器,其特征在于,包括控制模块(1)、转换模块(2)、运算模块(3)和存储模块(4);
所述的控制模块(1)分别与所述的运算模块(3)和存储模块(4)相连,用于生成控制信号控制运算模块和存储模块的有序运行;
所述的转换模块(2)分别与所述的与所述的运算模块(3)和存储模块(4)相连,用于实现定点数与浮点数之间的转换;
所述的运算模块(3),用于进行定点数的乘加计算;
所述的存储模块(4)还与所述的运算模块(3)相连,用于缓存待运算矩阵数据和结果矩阵数据,并提供系统总线访问接口。
2.根据权利要求1所述的基于FPGA的通用矩阵定点乘法器,其特征在于,所述的控制模块与系统总线相连在计算开始前接收请求矩阵乘法信号并返回应答信号,在计算准备阶段接收待乘矩阵维数信息和运算使能信号,在运算结束后返回运算结束信号;与存储模块相连在计算过程中提供待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号;与运算模块相连在每一轮向量乘法结束时提供定点累加器清零信号。
3.根据权利要求1所述的基于FPGA的通用矩阵定点乘法器,其特征在于,所述的转换模块包括浮-定转换器和定-浮转换器;所述的浮-定转换器将在计算机中存储的32位浮点数转换成64位定点数以供后续定点计算,所述的定-浮转换器将乘法运算结果的定点数转换成浮点数以供计算机读取;
所述的浮-定转换器与存储模块相连接收待转换的浮点数并将转换后的定点数返回存储;与运算模块相连在数据转换阶段将数据转换结果直接提供给运算模块进行计算;
所述的定-浮转换器与运算模块相连接收乘法运算结果数据;与存储模块相连返回转换结果。
4.根据权利要求1所述的基于FPGA的通用矩阵定点乘法器,其特征在于,所述的运算模块包括定点乘法器和定点累加器;所述的定点乘法器计算2个64位定点数的乘法,所述的定点累加器对定点乘法结果进行求和;运算期间,定点乘法器每周期从存储模块或浮-定转换器读入2个数据进行定点乘法计算,定点累加器实时输出定点累加结果;当某一向量乘法计算结束时,定点累加器将累加结果送给定-浮转换器进行转换,并从控制模块接收定点累加器清零信号将内部累加器结果清零,开始准备下一轮向量计算。
5.根据权利要求1所述的基于FPGA的通用矩阵定点乘法器,其特征在于,所述的存储模块包括系统总线数据接口和内部数据接口;系统总线数据接口负责与外部总线或FPGA芯片内的其它设备交换数据;内部数据接口负责与转换模块或运算模块交换数据;
在计算准备阶段,存储模块与系统总线相连接收待运算矩阵数据;在计算过程中,与控制模块相连接收待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号,与运算模块的定点乘法器相连提供待运算数据信号,与转换模块的浮-定转换器相连提供待转换数据并存储其转换结果,与转换模块的定-浮转换器相连接收转换后的结果矩阵数据;在计算完成后,与系统总线相连返回运算结果。
6.权利要求1至5任一所述的基于FPGA的通用矩阵定点乘法器的计算方法,其特征在于,该方法包括如下步骤:
①空闲状态时,存储模块通过系统总线访问接口接收待运算矩阵数据;
②控制模块接收系统总线发送的矩阵维数信息以及运算使能信号;
③控制模块接收到运算使能信号后,根据矩阵的维数信息,将待运算矩阵拆分成多个行向量或列向量的组合,以向量为单位向存储模块提供待转换数据地址信号。
④存储模块接收到待转换数据地址信号后,依次将待转换数据交由转换模块进行浮点到定点的转换,转换模块实时地将数据转换结果返回存储模块,同时,控制模块向存储模块发送转换结果数据地址信号和待运算数据地址信号,前者用于对转换结果数据进行存储,后者使得存储模块依次向运算模块提供转换后的数据;
⑤运算模块从转换模块和存储模块以向量为单位读取转换后的数据进行向量定点乘加计算直至数据转换阶段结束;
⑥数据转换阶段完成后,控制模块向存储模块依次提供待运算数据地址信号,运算模块只从存储模块中以向量为单位读取转换后的待运算数据进行向量定点乘加计算直至矩阵计算全部完成;
⑦在每一轮的向量定点乘加计算结束后,运算模块将向量乘加结果送至转换模块进行定点到浮点的转换;控制模块向运算模块提供累加器清零信号;
⑧在定点到浮点的转换结束后,转换模块将转换后的浮点数送入存储模块;控制模块向存储模块同时提供运算结果数据地址信号和运算结果写使能信号,对运算结果进行存储;
⑨矩阵乘法计算全部结束以后,控制模块向系统总线发出运算结束信号,告知CPU读取计算结果,回复到空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410821542.5A CN104572011B (zh) | 2014-12-22 | 2014-12-22 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410821542.5A CN104572011B (zh) | 2014-12-22 | 2014-12-22 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572011A true CN104572011A (zh) | 2015-04-29 |
CN104572011B CN104572011B (zh) | 2018-07-31 |
Family
ID=53088191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410821542.5A Active CN104572011B (zh) | 2014-12-22 | 2014-12-22 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572011B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278923A (zh) * | 2015-10-22 | 2016-01-27 | 合肥工业大学 | 一种基于aic信息准则的信号源个数估计硬件电路及其实现方法 |
CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN107273099A (zh) * | 2017-05-10 | 2017-10-20 | 苏州大学 | 一种基于FPGA的AdaBoost算法加速器及控制方法 |
CN108780441A (zh) * | 2016-03-18 | 2018-11-09 | 高通股份有限公司 | 用于定点矩阵乘法的内存减少方法 |
CN109086249A (zh) * | 2018-08-02 | 2018-12-25 | 北京知存科技有限公司 | 模拟向量-矩阵乘法运算电路 |
CN109144469A (zh) * | 2018-07-23 | 2019-01-04 | 上海亮牛半导体科技有限公司 | 流水线结构神经网络矩阵运算架构及方法 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN109961136A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109960673A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
WO2019127480A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳市大疆创新科技有限公司 | 用于处理数值数据的方法、设备和计算机可读存储介质 |
CN109978154A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109978152A (zh) * | 2017-12-27 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109978153A (zh) * | 2017-12-27 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN110163357A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110704022A (zh) * | 2019-07-02 | 2020-01-17 | 甘肃省科学院传感技术研究所 | 向量与矩阵的fpga并行快速乘法器模块及其计算方法 |
CN111045958A (zh) * | 2018-10-11 | 2020-04-21 | 展讯通信(上海)有限公司 | 加速引擎及处理器 |
CN111091189A (zh) * | 2017-12-14 | 2020-05-01 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN112214726A (zh) * | 2017-07-07 | 2021-01-12 | 华为技术有限公司 | 运算加速器 |
CN112434256A (zh) * | 2020-12-03 | 2021-03-02 | 海光信息技术股份有限公司 | 矩阵乘法器和处理器 |
CN112905954A (zh) * | 2020-12-28 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种利用fpga bram的cnn模型卷积运算加速计算方法 |
CN113055326A (zh) * | 2021-03-10 | 2021-06-29 | 上海交通大学 | 一种基于采样相减方法的幅移键控解调电路 |
CN113504893A (zh) * | 2021-07-23 | 2021-10-15 | 河南亿秒电子科技有限公司 | 一种智能芯片架构和高效处理数据的方法 |
CN113870918A (zh) * | 2021-09-30 | 2021-12-31 | 华中科技大学 | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 |
US11308389B2 (en) | 2017-12-14 | 2022-04-19 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11544546B2 (en) | 2017-12-27 | 2023-01-03 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11983621B2 (en) | 2017-12-27 | 2024-05-14 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794210A (zh) * | 2010-04-07 | 2010-08-04 | 上海交通大学 | 基于fpga的通用矩阵浮点乘法器 |
CN103678257A (zh) * | 2013-12-20 | 2014-03-26 | 上海交通大学 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
-
2014
- 2014-12-22 CN CN201410821542.5A patent/CN104572011B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794210A (zh) * | 2010-04-07 | 2010-08-04 | 上海交通大学 | 基于fpga的通用矩阵浮点乘法器 |
CN103678257A (zh) * | 2013-12-20 | 2014-03-26 | 上海交通大学 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
Non-Patent Citations (3)
Title |
---|
LAN JIAN ET AL: "Implementation of Dynamic Matrix Control on FPGA", 《PROCEEDINGS OF THE 29TH CHINESE CONTROL CONFERENCE》 * |
NAN YANG ET AL: "Model predictive controller design and implementation on FPGA with application to motor servo system", 《CONTROL ENGINEERING PRACTICE》 * |
韩慧婷等: "基于FPGA的非线性预测控制器设计", 《微型电脑应用》 * |
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278923B (zh) * | 2015-10-22 | 2017-10-03 | 合肥工业大学 | 一种基于aic信息准则的信号源个数估计硬件电路及其实现方法 |
CN105278923A (zh) * | 2015-10-22 | 2016-01-27 | 合肥工业大学 | 一种基于aic信息准则的信号源个数估计硬件电路及其实现方法 |
CN108780441A (zh) * | 2016-03-18 | 2018-11-09 | 高通股份有限公司 | 用于定点矩阵乘法的内存减少方法 |
CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
US11023801B2 (en) | 2016-11-03 | 2021-06-01 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Data processing method and apparatus |
CN107273099A (zh) * | 2017-05-10 | 2017-10-20 | 苏州大学 | 一种基于FPGA的AdaBoost算法加速器及控制方法 |
CN112214726A (zh) * | 2017-07-07 | 2021-01-12 | 华为技术有限公司 | 运算加速器 |
CN112214726B (zh) * | 2017-07-07 | 2024-05-03 | 华为技术有限公司 | 运算加速器 |
CN109960673A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109961136A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN111091189B (zh) * | 2017-12-14 | 2023-08-29 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
US11704545B2 (en) | 2017-12-14 | 2023-07-18 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11586891B2 (en) | 2017-12-14 | 2023-02-21 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11562219B2 (en) | 2017-12-14 | 2023-01-24 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11900241B2 (en) | 2017-12-14 | 2024-02-13 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11562216B2 (en) | 2017-12-14 | 2023-01-24 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11507810B2 (en) | 2017-12-14 | 2022-11-22 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11507809B2 (en) | 2017-12-14 | 2022-11-22 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
CN111091189A (zh) * | 2017-12-14 | 2020-05-01 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
US11308389B2 (en) | 2017-12-14 | 2022-04-19 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
US11900242B2 (en) | 2017-12-14 | 2024-02-13 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
CN109978153A (zh) * | 2017-12-27 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
US11748605B2 (en) | 2017-12-27 | 2023-09-05 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11983621B2 (en) | 2017-12-27 | 2024-05-14 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11748601B2 (en) | 2017-12-27 | 2023-09-05 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11748604B2 (en) | 2017-12-27 | 2023-09-05 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11748602B2 (en) | 2017-12-27 | 2023-09-05 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11748603B2 (en) | 2017-12-27 | 2023-09-05 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
US11741351B2 (en) | 2017-12-27 | 2023-08-29 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
CN109978152B (zh) * | 2017-12-27 | 2020-05-22 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN109978152A (zh) * | 2017-12-27 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
US11544546B2 (en) | 2017-12-27 | 2023-01-03 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
CN109978154A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
WO2019127480A1 (zh) * | 2017-12-29 | 2019-07-04 | 深圳市大疆创新科技有限公司 | 用于处理数值数据的方法、设备和计算机可读存储介质 |
CN110163357A (zh) * | 2018-02-13 | 2019-08-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163357B (zh) * | 2018-02-13 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN109144469B (zh) * | 2018-07-23 | 2023-12-05 | 上海亮牛半导体科技有限公司 | 流水线结构神经网络矩阵运算架构及方法 |
CN109144469A (zh) * | 2018-07-23 | 2019-01-04 | 上海亮牛半导体科技有限公司 | 流水线结构神经网络矩阵运算架构及方法 |
CN109086249B (zh) * | 2018-08-02 | 2023-10-20 | 北京知存科技有限公司 | 模拟向量-矩阵乘法运算电路 |
CN109086249A (zh) * | 2018-08-02 | 2018-12-25 | 北京知存科技有限公司 | 模拟向量-矩阵乘法运算电路 |
CN111045958A (zh) * | 2018-10-11 | 2020-04-21 | 展讯通信(上海)有限公司 | 加速引擎及处理器 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN109828744B (zh) * | 2019-01-18 | 2020-09-08 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN110704022A (zh) * | 2019-07-02 | 2020-01-17 | 甘肃省科学院传感技术研究所 | 向量与矩阵的fpga并行快速乘法器模块及其计算方法 |
CN112434256A (zh) * | 2020-12-03 | 2021-03-02 | 海光信息技术股份有限公司 | 矩阵乘法器和处理器 |
CN112905954A (zh) * | 2020-12-28 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种利用fpga bram的cnn模型卷积运算加速计算方法 |
CN113055326A (zh) * | 2021-03-10 | 2021-06-29 | 上海交通大学 | 一种基于采样相减方法的幅移键控解调电路 |
CN113504893A (zh) * | 2021-07-23 | 2021-10-15 | 河南亿秒电子科技有限公司 | 一种智能芯片架构和高效处理数据的方法 |
CN113504893B (zh) * | 2021-07-23 | 2022-08-26 | 河南亿秒电子科技有限公司 | 一种智能芯片架构和高效处理数据的方法 |
CN113870918A (zh) * | 2021-09-30 | 2021-12-31 | 华中科技大学 | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 |
CN113870918B (zh) * | 2021-09-30 | 2023-03-28 | 华中科技大学 | 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器 |
Also Published As
Publication number | Publication date |
---|---|
CN104572011B (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572011A (zh) | 基于fpga的通用矩阵定点乘法器及其计算方法 | |
CN103678257B (zh) | 基于fpga的正定矩阵浮点求逆器及其求逆方法 | |
JP6865805B2 (ja) | 計算装置と計算方法 | |
Jaiswal et al. | FPGA-based high-performance and scalable block LU decomposition architecture | |
CN107807819A (zh) | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN110163359A (zh) | 一种计算装置及方法 | |
CN111353126A (zh) | 分块矩阵乘法运算系统 | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
CN113010213B (zh) | 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 | |
CN110276447A (zh) | 一种计算装置及方法 | |
Cho et al. | FARNN: FPGA-GPU hybrid acceleration platform for recurrent neural networks | |
Liu et al. | FPGA-based acceleration of Davidon-Fletcher-Powell quasi-Newton optimization method | |
JP2014186461A (ja) | 演算処理装置及び演算処理方法 | |
Roodsari et al. | Diba: n-dimensional bitslice architecture for lstm implementation | |
Chen et al. | Edge FPGA-based Onsite Neural Network Training | |
Zhao et al. | An FPGA-Based CNN Efficient Storage Processor | |
Savich et al. | A low-power scalable stream compute accelerator for general matrix multiply (GEMM) | |
Chang et al. | IPOCIM: Artificial Intelligent Architecture Design Space Exploration With Scalable Ping-Pong Computing-in-Memory Macro | |
SivaCharanKumar et al. | Design and implementation of RADIX-8 based 32-bit pipelined multiplier by using CLA | |
Fang et al. | Efficient N: M Sparse DNN Training Using Algorithm, Architecture, and Dataflow Co-Design | |
Alonso et al. | Parallel architecture for the solution of linear equation systems implemented in fpga | |
Lavanya et al. | An Area Efficient Vedic Multiplier Based on Homogenous Hybrid Adder for RISC V Processor Applications | |
Lakshmi | Modified Vedic Multiplier Based on Homogenous Hybrid Adder for RISC V Applications | |
Martinez et al. | Parallel architecture for the solution of linear equations systems based on Division Free Gaussian Elimination Method implemented in FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211210 Address after: 200240 floor 3, building 2, unit 1, building F, No. 154, Lane 953, Jianchuan Road, Minhang District, Shanghai Patentee after: Shanghai bidi Data Technology Co.,Ltd. Address before: 200240 No. 800, Dongchuan Road, Shanghai, Minhang District Patentee before: SHANGHAI JIAO TONG University |