CN101794210A - 基于fpga的通用矩阵浮点乘法器 - Google Patents
基于fpga的通用矩阵浮点乘法器 Download PDFInfo
- Publication number
- CN101794210A CN101794210A CN201010139877A CN201010139877A CN101794210A CN 101794210 A CN101794210 A CN 101794210A CN 201010139877 A CN201010139877 A CN 201010139877A CN 201010139877 A CN201010139877 A CN 201010139877A CN 101794210 A CN101794210 A CN 101794210A
- Authority
- CN
- China
- Prior art keywords
- matrix
- module
- links
- multiplier
- transmits
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
一种计算机微处理器设计技术领域的基于FPGA的通用矩阵浮点乘法器,包括:若干并行的矩阵浮点乘法器,每个矩阵浮点乘法器包括:控制管理模块、运算模块和存储模块,其中:控制管理模块包括:数据地址控制子模块、结果有效控制子模块和累加器清零控制子模块;运算模块包括:乘法器、浮点-定点转换器、累加器和定点-浮点转换器;存储模块包括:乘数矩阵存储单元、被乘数矩阵存储单元、结果矩阵存储单元、总线数据接口和内部数据接口。本发明中每个矩阵浮点乘法器之间相互独立,可同时运算,互不影响,计算的时间大大减小,且计算的精度高达10-4,效率提高十倍以上,且装置简单,成本低。
Description
技术领域
本发明涉及的是一种微处理器技术领域的乘法器,具体是一种基于FPGA(Field-Programmable Gate Array的缩写,现场可编程门阵列)的通用矩阵浮点乘法器。
背景技术
矩阵乘法操作是科学计算中的一个基本操作,在工业控制、模式识别、数字信号处理等领域广泛存在,特别是在便携式设备中,经常涉及模式识别、图像处理的操作,这些操作都是有大量的矩阵运算来完成的,而便携式设备通常计算配置较低,矩阵乘法也就称为计算过程中最为耗时的关键操作。矩阵乘法的时间复杂度较高,通常为O(N3),其计算性能直接影响***的整体性能。
以前的矩阵乘法器通常采用通用数字信号处理器(Digital Signal Processor,DSP)实现。DSP具有技术成熟,实现工具完善、编程简单等优点,但由于其内部结构的限制,在进行计算时经常会出现缓存(Cache Miss)扑空等现象,影响计算性能。基于DSP技术的涉及通常持续时间只能维持在其峰值计算性能的10%~33%,无法取得很高的计算性能。
近年来的FPGA技术取得了飞速发展,已经从最初只能面向纯逻辑代替的应用转变为能够面向复杂的计算密集型应用。最新的FPGA器件,不仅逻辑资源门极其丰富,而且还包括了大量面向高计算性能的DSP单元、块状RAM(Block RAM,BRAM)等。同时为方便FPGA的调试,各FPGA厂商还提供了各种片内逻辑分析工具(如Xilinx公司的ChipScope),在软硬件上均保证了FPGA实现高性能计算的可能性。
经对现有文献检索发现,中国专利申请号为:200710069954.8,名称为:基于单FPGA的矩阵乘法器装置,该技术包括P2个计算单元PE,由P2个计算单元PE排列形成的P行×P列的PE阵列,数据输入输出接口和数据预处理单元。但是该技术逻辑资源消耗太高,每一个浮点向量乘法器单元要消耗多个DSP48和FIFO单元,对于芯片要求太高,导致成本增加,且不利于实际应用。
发明内容
本发明的目的在于克服现有技术的上述不足,提供一种基于FPGA的通用矩阵浮点乘法器。本发明采用并行流水线结构,可以进行任意维数的矩阵浮点乘法运算,并且多个矩阵浮点乘法器可以并行工作,进一步提高计算效率和计算精度。
本发明是通过以下技术方案实现的:
本发明包括:若干并行的矩阵浮点乘法器,每个矩阵浮点乘法器包括:控制管理模块、运算模块和存储模块,其中:控制管理模块与运算模块相连传输累加器清零信号,控制管理模块与存储模块相连传输数据地址信号和结果有效信号,运算模块与存储模块相连传输待运算数据信号和运算结果信号。
所述的控制管理模块生成控制信号以控制运算模块和存储模块,该模块包括:数据地址控制子模块、结果有效控制子模块和累加器清零控制子模块,其中:数据地址控制子模块与存储模块相连传输数据地址控制信号,结果有效控制子模块与存储模块相连传输结果有效信号,累加器清零控制子模块与运算模块相连传输累加器清零信号。
所述的运算模块执行矩阵数据的乘法和累加操作,该模块包括:乘法器、浮点-定点转换器、累加器和定点-浮点转换器,其中:乘法器与存储模块相连传输待运算数据信号,累加器与控制管理模块相连传输累加器清零信号,乘法器与浮点-定点转换器相连传输浮点乘法信号,浮点-定点转换器与累加器相连传输定点乘法信号,累加器与定点-浮点转换器相连传输浮点累加信号,定点-浮点转换器与存储模块相连传输运算结果信号。
所述的存储模块缓存待运算矩阵的数据和结果矩阵的数据,并提供总线访问接口使外部其他设备与本发明装置进行数据交换,该模块包括:乘数矩阵存储单元、被乘数矩阵存储单元、结果矩阵存储单元、总线数据接口和内部数据接口,其中:乘数矩阵存储单元与控制管理模块相连传输乘数地址信号,被乘数矩阵存储单元与控制管理模块相连传输被乘数地址信号,结果矩阵存储单元与控制管理模块相连传输结果有效信号,乘数矩阵存储单元分别与总线数据接口和内部数据接口相连传输待运算的乘数信息,被乘数矩阵存储单元分别与总线数据接口和内部数据接口相连传输待运算的被乘数信息,结果矩阵存储单元分别与总线数据接口和内部数据接口相连传输运算结果信息,总线数据接口与外部其他设备相连传输待运算的乘数信息、待运算的被乘数信息和运算结果信息,内部数据接口与运算模块相连传输待运算的乘数信息、待运算的被乘数信息和运算结果信息。
本发明的工作过程:
步骤A,将待运算的数据通过总线数据接口写入存储模块;
步骤B,向控制管理模块提供矩阵维数信息,并给出开始运算信号;
步骤C,控制管理模块将矩阵乘法分解为多个向量内积的过程,并生成周期性控制信号,发送给运算模块和存储模块;
步骤D,运算模块根据控制信号读取数据,进行浮点乘法和累加运算,存储模块根据控制信号将运算结果写入缓存;
步骤E,控制管理模块生成运算结束信号,总线设备从存储模块中读出运算结果。
与现有技术相比,本发明的有益效果是:每个矩阵浮点乘法器之间相互独立,可同时运算,互不影响,计算的时间大大减小,且计算的精度高达10-4,效率提高十倍以上,且装置简单,成本低。
具体实施方式
以下对本发明的实施例作进一步描述:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例
本实施例采用Xilinx的Virtex IV(XC4VFX12-10-ffg668)芯片实现两个15×15的矩阵的浮点乘法运算。
本实施例包括:四个并行的矩阵浮点乘法器,每个矩阵浮点乘法器包括:控制管理模块、运算模块和存储模块,其中:控制管理模块与运算模块相连传输累加器清零信号,控制管理模块与存储模块相连传输数据地址信号和结果有效信号,运算模块与存储模块相连传输待运算数据信号和运算结果信号。
所述的控制管理模块生成控制信号以控制运算模块和存储模块,该模块包括:数据地址控制子模块、结果有效控制子模块和累加器清零控制子模块,其中:数据地址控制子模块与存储模块相连传输数据地址控制信号,结果有效控制子模块与存储模块相连传输结果有效信号,累加器清零控制子模块与运算模块相连传输累加器清零信号。
本实施例中控制管理模块由XC4VFX12-10-ffg668芯片的数字逻辑电路实现。
所述的运算模块执行矩阵数据的乘法和累加操作,该模块包括:乘法器、浮点-定点转换器、累加器和定点-浮点转换器,其中:乘法器与存储模块相连传输待运算数据信号,累加器与累加器清零控制模块相连传输累加器清零信号,乘法器与浮点-定点转换器相连传输浮点乘法信号,浮点-定点转换器与累加器相连传输定点乘法信号,累加器与定点-浮点转换器相连传输浮点累加信号,定点-浮点转换器与存储模块相连传输运算结果信号。
本实施例中运算模块由XC4VFX12-10-ffg668芯片的DSP运算单元实现。
所述的存储模块缓存待运算矩阵的数据和结果矩阵的数据,并提供总线访问接口使外部其他设备与本发明装置进行数据交换,该模块包括:乘数矩阵存储单元、被乘数矩阵存储单元、结果矩阵存储单元、总线数据接口和内部数据接口,其中:乘数矩阵存储单元与数据地址控制子模块相连传输乘数地址信号,被乘数矩阵存储单元与数据地址控制子模块相连传输被乘数地址信号,结果矩阵存储单元与结果有效控制子模块相连传输结果有效信号,乘数矩阵存储单元分别与总线数据接口和内部数据接口相连传输待运算的乘数信息,被乘数矩阵存储单元分别与总线数据接口和内部数据接口相连传输待运算的被乘数信息,结果矩阵存储单元分别与总线数据接口和内部数据接口相连传输运算结果信息,总线数据接口与外部其他设备相连传输待运算的乘数信息、待运算的被乘数信息和运算结果信息,内部数据接口与乘法器相连传输待运算的乘数信息和待运算的被乘数信息,内部数据接口与定点-浮点转换器相连传输运算结果信息。
本实施例中存储模块由XC4VFX12-10-ffg668芯片的Block-RAM实现。
本实施例的工作过程具体是:
1、复位后实施例装置处于空闲状态;
2、实施例装置等待总线设备将待运算数据写入存储模块;
3、实施例装置等待总线设备将矩阵维数和是否需要转置信息发送给控制管理模块,并给出开始运算信号;
4、控制管理模块收到开始运算信号后,根据矩阵的维数信息,将待运算矩阵拆分成15个行向量或列向量的组合,以向量为单位将数据交由运算模块进行乘加运算;
5、由控制管理模块给出运算使能信号,运算开始后,运算模块不断读入数据,进行乘法累加运算;
6、当一组数据计算完毕以后,输出计算结果,并将累加器清零;
7、运算模块判断是否有新的数据需要计算,如有,则转到运算状态;否则,转到空闲状态;
8、向量运算结束后,控制管理模块发出结果有效信号,控制存储模块写入计算结果;
9、全部运算完成以后,控制管理模块生成运算结束信号,乘法器回复到空闲状态。
当采用现有的FPGA的FPU(Float Process Unit)处理该矩阵乘法要96341时钟周期,而采用本实施例装置则需要8784个时钟周期,并且计算精度可达10-4,又通过对各种维数的矩阵进行对比运算,发现采用本实施例装置比采用FPU计算矩阵乘法的效率普遍高十倍以上。
Claims (4)
1.一种基于FPGA的通用矩阵浮点乘法器,其特征在于,包括:若干并行的矩阵浮点乘法器,每个矩阵浮点乘法器包括:控制管理模块、运算模块和存储模块,其中:控制管理模块与运算模块相连传输累加器清零信号,控制管理模块与存储模块相连传输数据地址信号和结果有效信号,运算模块与存储模块相连传输待运算数据信号和运算结果信号。
2.根据权利要求1所述的基于FPGA的通用矩阵浮点乘法器,其特征是,所述的控制管理模块生成控制信号以控制运算模块和存储模块,该模块包括:数据地址控制子模块、结果有效控制子模块和累加器清零控制子模块,其中:数据地址控制子模块与存储模块相连传输数据地址控制信号,结果有效控制子模块与存储模块相连传输结果有效信号,累加器清零控制子模块与运算模块相连传输累加器清零信号。
3.根据权利要求1所述的基于FPGA的通用矩阵浮点乘法器,其特征是,所述的运算模块执行矩阵数据的乘法和累加操作,该模块包括:乘法器、浮点-定点转换器、累加器和定点-浮点转换器,其中:乘法器与存储模块相连传输待运算数据信号,累加器与控制管理模块相连传输累加器清零信号,乘法器与浮点-定点转换器相连传输浮点乘法信号,浮点-定点转换器与累加器相连传输定点乘法信号,累加器与定点-浮点转换器相连传输浮点累加信号,定点-浮点转换器与存储模块相连传输运算结果信号。
4.根据权利要求1所述的基于FPGA的通用矩阵浮点乘法器,其特征是,所述的存储模块缓存待运算矩阵的数据和结果矩阵的数据,并提供总线访问接口使外部其他设备与本发明装置进行数据交换,该模块包括:乘数矩阵存储单元、被乘数矩阵存储单元、结果矩阵存储单元、总线数据接口和内部数据接口,其中:乘数矩阵存储单元与控制管理模块相连传输乘数地址信号,被乘数矩阵存储单元与控制管理模块相连传输被乘数地址信号,结果矩阵存储单元与控制管理模块相连传输结果有效信号,乘数矩阵存储单元分别与总线数据接口和内部数据接口相连传输待运算的乘数信息,被乘数矩阵存储单元分别与总线数据接口和内部数据接口相连传输待运算的被乘数信息,结果矩阵存储单元分别与总线数据接口和内部数据接口相连传输运算结果信息,总线数据接口与外部其他设备相连传输待运算的乘数信息、待运算的被乘数信息和运算结果信息,内部数据接口与运算模块相连传输待运算的乘数信息、待运算的被乘数信息和运算结果信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010139877A CN101794210A (zh) | 2010-04-07 | 2010-04-07 | 基于fpga的通用矩阵浮点乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010139877A CN101794210A (zh) | 2010-04-07 | 2010-04-07 | 基于fpga的通用矩阵浮点乘法器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101794210A true CN101794210A (zh) | 2010-08-04 |
Family
ID=42586928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010139877A Pending CN101794210A (zh) | 2010-04-07 | 2010-04-07 | 基于fpga的通用矩阵浮点乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101794210A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033732A (zh) * | 2010-12-17 | 2011-04-27 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
CN102375721A (zh) * | 2010-08-23 | 2012-03-14 | 联想(北京)有限公司 | 一种矩阵乘法运算方法、图形处理器和电子设备 |
CN102541507A (zh) * | 2010-12-31 | 2012-07-04 | 联芯科技有限公司 | 维度可重配的数据处理方法、***和矩阵乘法处理器 |
CN102629189A (zh) * | 2012-03-15 | 2012-08-08 | 湖南大学 | 基于fpga的流水浮点乘累加方法 |
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
CN103135960A (zh) * | 2013-02-28 | 2013-06-05 | 浪潮集团有限公司 | 一种基于fpga的集成浮点运算器的设计方法 |
CN104572011A (zh) * | 2014-12-22 | 2015-04-29 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
CN105589677A (zh) * | 2014-11-17 | 2016-05-18 | 沈阳高精数控智能技术股份有限公司 | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 |
CN108446096A (zh) * | 2018-03-21 | 2018-08-24 | 杭州中天微***有限公司 | 数据计算*** |
CN109960673A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN112149051A (zh) * | 2019-06-28 | 2020-12-29 | 爱思开海力士有限公司 | 执行向量-矩阵乘法的计算电路和包括其的半导体器件 |
-
2010
- 2010-04-07 CN CN201010139877A patent/CN101794210A/zh active Pending
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375721A (zh) * | 2010-08-23 | 2012-03-14 | 联想(北京)有限公司 | 一种矩阵乘法运算方法、图形处理器和电子设备 |
US9164727B2 (en) | 2010-12-17 | 2015-10-20 | Zhejiang University | FPGA-based high-speed low-latency floating point accumulator and implementation method therefor |
WO2012079466A1 (zh) * | 2010-12-17 | 2012-06-21 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
CN102033732A (zh) * | 2010-12-17 | 2011-04-27 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
CN102541507A (zh) * | 2010-12-31 | 2012-07-04 | 联芯科技有限公司 | 维度可重配的数据处理方法、***和矩阵乘法处理器 |
CN102541507B (zh) * | 2010-12-31 | 2015-12-16 | 联芯科技有限公司 | 维度可重配的数据处理方法、***和矩阵乘法处理器 |
CN102629189A (zh) * | 2012-03-15 | 2012-08-08 | 湖南大学 | 基于fpga的流水浮点乘累加方法 |
CN102629189B (zh) * | 2012-03-15 | 2014-12-10 | 湖南大学 | 基于fpga的流水浮点乘累加方法 |
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
CN103135960A (zh) * | 2013-02-28 | 2013-06-05 | 浪潮集团有限公司 | 一种基于fpga的集成浮点运算器的设计方法 |
CN105589677A (zh) * | 2014-11-17 | 2016-05-18 | 沈阳高精数控智能技术股份有限公司 | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 |
CN104572011A (zh) * | 2014-12-22 | 2015-04-29 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
CN104572011B (zh) * | 2014-12-22 | 2018-07-31 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
CN109960673A (zh) * | 2017-12-14 | 2019-07-02 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109960673B (zh) * | 2017-12-14 | 2020-02-18 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN108446096A (zh) * | 2018-03-21 | 2018-08-24 | 杭州中天微***有限公司 | 数据计算*** |
US11243771B2 (en) | 2018-03-21 | 2022-02-08 | C-Sky Microsystems Co., Ltd. | Data computing system |
US11972262B2 (en) | 2018-03-21 | 2024-04-30 | C-Sky Microsystems Co., Ltd. | Data computing system |
CN112149051A (zh) * | 2019-06-28 | 2020-12-29 | 爱思开海力士有限公司 | 执行向量-矩阵乘法的计算电路和包括其的半导体器件 |
CN112149051B (zh) * | 2019-06-28 | 2024-03-26 | 爱思开海力士有限公司 | 执行向量-矩阵乘法的计算电路和包括其的半导体器件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101794210A (zh) | 基于fpga的通用矩阵浮点乘法器 | |
US10713043B2 (en) | Opcode counting for performance measurement | |
Qiao et al. | FPGA‐accelerated deep convolutional neural networks for high throughput and energy efficiency | |
Zhang et al. | Snap: An efficient sparse neural acceleration processor for unstructured sparse deep neural network inference | |
EP3343392A1 (en) | Hardware accelerator architecture and template for web-scale k-means clustering | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
CN103678257A (zh) | 基于fpga的正定矩阵浮点求逆器及其求逆方法 | |
US8209597B2 (en) | System and method for achieving improved accuracy from efficient computer architectures | |
CN102339217A (zh) | 一种浮点数乘加器融合处理装置及方法 | |
CN101840324B (zh) | 支持复数运算和子字并行的64位定浮点乘法器 | |
Gilani et al. | Exploiting GPU peak-power and performance tradeoffs through reduced effective pipeline latency | |
CN102253822B (zh) | 一种模(2^n-3)乘法器 | |
CN101510149B (zh) | 一种数据处理方法和装置 | |
CN102129419A (zh) | 基于快速傅立叶变换的处理器 | |
Li et al. | Heterogeneous systems with reconfigurable neuromorphic computing accelerators | |
CN109460535B (zh) | 一种基于云的有限域矩阵求逆装置及求逆方法 | |
CN202281998U (zh) | 一种标量浮点运算加速器 | |
Li et al. | Vector-Based Dedicated Processor Architecture for Efficient Tracking in VSLAM Systems | |
Awatramani et al. | Perf-Sat: Runtime detection of performance saturation for GPGPU applications | |
Gupte et al. | Pipelined ALU for signal processing to implement interval arithmetic | |
CN109388372A (zh) | 一种基于最小模块的三值光学处理器msd乘法计算方法 | |
Kim et al. | Multi-mode SpMV accelerator for transprecision PageRank with real-world graphs | |
Shao et al. | High performance and parallel model for LU decomposition on FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100804 |