基于FPGA的通用矩阵定点乘法器及其计算方法技术

技术编号:11359851 阅读:74 留言:0更新日期:2015-04-29 10:44
一种在FPGA芯片上使用的通用矩阵定点乘法器,其内部结构由控制模块、转换模块、运算模块和存储模块四个部分组成。控制模块根据待运算矩阵的维数生成控制信号。转换模块负责在运算过程中进行定点数与浮点数的转换。运算模块从存储模块和转换模块中读入运算数据,进行定点乘法和定点累加运算,并将结果存入存储模块中。存储模块用于缓存待运算矩阵数据和结果矩阵数据,并提供与总线信号兼容的接口,允许总线上其它部件访问。本发明专利技术充分利用硬件中定点计算效率高的特点,采用一种独特的运算结构,实现数据的边转换边运算来提高总体运算速度,可同时使用多个矩阵定点乘法器并行计算,因此,可支持任意维数矩阵的定点乘法运算,同时保证很高的计算效率。与用浮点数进行矩阵乘法相比,计算效率有很大提高。

【技术实现步骤摘要】
基于FPGA的通用矩阵定点乘法器及其计算方法
本专利技术属于高性能计算领域,是一种提高FPGA矩阵运算能力的设计。
技术介绍
矩阵乘法操作是科学计算中的一个基本操作,在工业控制、模式识别、数字信号处理等领域广泛存在,特别是在便携式设备中,经常涉及到模式识别、图像处理等操作,这些操作都是有大量的矩阵运算来完成的,而便携式设备通常计算配置较低,矩阵乘法也就成为计算过程中最为耗时的关键操作。矩阵乘法的时间复杂度较高,通常为O(N3),其计算性能直接影响系统的整体性能。近年来飞速发展的FPGA技术,给矩阵运算的高速实时运行创造了机会。FPGA技术已经从最初只能面向纯逻辑应用转变为能够面向复杂计算的密集型应用。最新的FPGA器件,不仅逻辑资源门极其丰富,而且还包括大量面向高计算性能的DSP单元、块状RAM(BlockRAM,BRAM)等。同时为方便FPGA的调试,各FPGA厂商还提供了各种片内逻辑分析工具(如Xilinx公司的ChipScope),在软硬件上均保证了FPGA实现高性能矩阵计算的可能性。矩阵运算的硬件化可以充分利用硬件并行性的特点,在很大程度上提高矩阵计算效率。目前FPGA拥有众多的系列产品,主要生产厂商有Xilinx、Altera、Actel、Lattice和QuickLogic等公司。尽管这些厂商生产的FPGA品种和型号繁多,但其原理和内部基本结构是相同的,都是由细粒度的可编程逻辑单元(ConfigurableLogicBlock,CLB)、可编程连线资源(ProgrammableInterconnect,PI)及可编程输入/输出单元(Input/OutputBlock,IOB)组成。其中CLB是FPGA的基本逻辑单元,它提供了用户所需要的逻辑功能,通常规则的排成一个阵列,散布于整个芯片;IOB完成芯片内部逻辑和外部封装脚的接口,它可编程为输入、输出、和双向I/O口三种方式,通常排列于芯片的四周;PI包括各种长度的连接线段和一些可编程的连接开关,它们将各个可编程逻辑块或输入/输出连接起来,构成特定的功能电路。以Xilinx公司的FPGA为例,其结构示意图如图1。其中BRAM是BLOCK-RAM的简称,为芯片提供存储单元;DCM是XilinxFPGA独有的时钟管理单元,可以实现时钟频率综合、相位偏移等功能;每个CLB单元的逻辑功能由一小块称为查找表(Look-UpTable,LUT)的存储单元指定。XilinxVirtex-4FPGA中每个CLB包含两个Slice。Slice内部包含2个LUT、2个触发器、多路开关及进位链等资源。CLB内部的两个Slice是相互独立的,各自分别连接开关阵列(SwitchMatrix),以便与通用布线阵列(GeneralroutingMatrix)相连。采用FPGA进行设计不是以功能电路为基础分布式系统综合技术,而是以功能IP核(IntellectualPropertycore)为基础的系统固件和电路综合技术。IP核是为了实现某种特定功能而利用FPGA中的CLB、IOB以及PI逻辑电路资源构建成的特殊电路。各个厂商为了便于用户进行开发,都会提供一些免费的IP核。而出厂前就已经在芯片中预先设置好的IP核称为硬核。如在本专利技术基于FPGA的通用矩阵定点乘法器中使用的DSP48即为XilinxVirtex-4提供的硬核。通过查阅相关文献,目前使用FPGA实现矩阵乘法的大部分直接使用浮点数进行计算,如杨楠,兰建的基于FPGA的通用矩阵浮点乘法器(申请号:201010139877.0)应用浮点运算器设计了矩阵的乘法器,但在计算过程中,浮点计算器运算消耗的时间远大于定点计算。对于N×N矩阵相乘有N3次乘法运算和N2(N-1)次加法运算,若均使用定点计算代替浮点计算则可以节省出很多计算时间,提高整体计算效率。
技术实现思路
本专利技术提出一种在FPGA芯片上使用的高性能通用矩阵定点乘法器,充分利用定点计算效率高的特点,将浮点数转换为定点数进行数据计算,在数据转换的同时进行部分结果数据的计算,整个计算采用并行流水线结构,在尽可能减少硬件资源消耗的情况下实现矩阵定点乘法器。本专利技术技术解决方案如下:一种基于FPGA的通用矩阵定点乘法器,其特点在于,包括控制模块、转换模块、运算模块和存储模块;所述的控制模块分别与所述的运算模块和存储模块相连,用于生成控制信号控制运算模块和存储模块的有序运行;所述的转换模块分别与所述的与所述的运算模块和存储模块相连,用于实现定点数与浮点数之间的转换;所述的运算模块,用于进行定点数的乘加计算;所述的存储模块,还与所述的运算模块相连,用于缓存待运算矩阵数据和结果矩阵数据,并提供系统总线访问接口。所述的控制模块与系统总线相连在计算开始前接收请求矩阵乘法信号并返回应答信号,在计算准备阶段接收待乘矩阵维数信息和运算使能信号,在运算结束后返回运算结束信号;与存储模块相连在计算过程中提供待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号;与运算模块相连在每一轮向量乘法结束时提供定点累加器清零信号。所述的转换模块包括浮-定转换器和定-浮转换器;所述的浮-定转换器将在计算机中存储的32位浮点数转换成64位定点数以供后续定点计算,所述的定-浮转换器将乘法运算结果的定点数转换成浮点数以供计算机读取;所述的浮-定转换器与存储模块相连接收待转换的浮点数并将转换后的定点数返回存储;与运算模块相连在数据转换阶段将数据转换结果直接提供给运算模块进行计算;所述的定-浮转换器与运算模块相连接收乘法运算结果数据;与存储模块相连返回转换结果。所述的运算模块包括定点乘法器和定点累加器;所述的定点乘法器计算2个64位定点数的乘法,所述的定点累加器对定点乘法结果进行求和;运算期间,定点乘法器每周期从存储模块或浮-定转换器读入2个数据进行定点乘法计算,定点累加器实时输出定点累加结果;当某一向量乘法计算结束时,定点累加器将累加结果送给定-浮转换器进行转换,并从控制模块接收定点累加器清零信号将内部累加器结果清零,开始准备下一轮向量计算。所述的存储模块包括系统总线数据接口和内部数据接口;系统总线数据接口负责与外部总线或FPGA芯片内的其它设备交换数据;内部数据接口负责与转换模块或运算模块交换数据;在计算准备阶段,存储模块与系统总线相连接收待运算矩阵数据;在计算过程中,与控制模块相连接收待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号,与运算模块的定点乘法器相连提供待运算数据信号,与转换模块的浮-定转换器相连提供待转换数据并存储其转换结果,与转换模块的定-浮转换器相连接收转换后的结果矩阵数据;在计算完成后,与系统总线相连返回运算结果。一种基于FPGA的通用矩阵定点乘法器的计算方法,其特点在于,该方法包括如下步骤:①空闲状态时,存储模块通过系统总线访问接口接收待运算矩阵数据;②控制模块接收系统总线发送的矩阵维数信息以及运算使能信号;③控制模块接收到运算使能信号后,根据矩阵的维数信息,将待运算矩阵拆分成多个行向量或列向量的组合,以向量为单位向存储模块提供待转换数据地址信号。④存储模块接收到待转换数据地址信本文档来自技高网
...

【技术保护点】
一种基于FPGA的通用矩阵定点乘法器,其特征在于,包括控制模块(1)、转换模块(2)、运算模块(3)和存储模块(4);所述的控制模块(1)分别与所述的运算模块(3)和存储模块(4)相连,用于生成控制信号控制运算模块和存储模块的有序运行;所述的转换模块(2)分别与所述的与所述的运算模块(3)和存储模块(4)相连,用于实现定点数与浮点数之间的转换;所述的运算模块(3),用于进行定点数的乘加计算;所述的存储模块(4)还与所述的运算模块(3)相连,用于缓存待运算矩阵数据和结果矩阵数据,并提供系统总线访问接口。

【技术特征摘要】
1.一种基于FPGA的通用矩阵定点乘法器,其特征在于,支持任意维数的矩阵乘法运算;包括控制模块(1)、转换模块(2)、运算模块(3)和存储模块(4);所述矩阵乘法运算包括数据转换阶段和乘法计算阶段,其中,数据转换阶段用于计算结果矩阵的第一行或第一列数据,乘法计算阶段用于计算结果矩阵其他数据;所述的控制模块(1)分别与所述的运算模块(3)和存储模块(4)相连,用于生成控制信号控制运算模块和存储模块的有序运行;所述的转换模块(2)分别与所述的与所述的运算模块(3)和存储模块(4)相连,用于实现定点数与浮点数之间的转换;所述的运算模块(3),用于进行定点数的乘加计算;所述的存储模块(4)还与所述的运算模块(3)相连,用于缓存待运算矩阵数据和结果矩阵数据,并提供系统总线访问接口;所述的转换模块包括浮-定转换器和定-浮转换器;所述的浮-定转换器将在计算机中存储的32位浮点数转换成64位定点数以供后续定点计算,所述的定-浮转换器将乘法运算结果的定点数转换成浮点数以供计算机读取;所述的浮-定转换器与存储模块相连接收待转换的浮点数并将转换后的定点数返回存储;与运算模块相连在数据转换阶段将数据转换结果直接提供给运算模块进行计算;所述的定-浮转换器与运算模块相连接收乘法运算结果数据;与存储模块相连返回转换结果;所述的运算模块包括定点乘法器和定点累加器;所述的定点乘法器计算2个64位定点数的乘法,所述的定点累加器对定点乘法结果进行求和;运算期间,定点乘法器每周期从存储模块或浮-定转换器读入2个数据进行定点乘法计算,定点累加器实时输出定点累加结果;当某一向量乘法计算结束时,定点累加器将累加结果送给定-浮转换器进行转换,并从控制模块接收定点累加器清零信号将内部累加器结果清零,开始准备下一轮向量计算;所述的存储模块包括系统总线数据接口和内部数据接口;系统总线数据接口负责与外部总线或FPGA芯片内的其它设备交换数据;内部数据接口负责与转换模块或运算模块交换数据;在计算准备阶段,存储模块与系统总线相连接收待运算矩阵数据;在计算过程中,与控制模块相连接收待转换数据地址信号、转换结果数据地址信号、待运算数据地址信号、运算结果数据地址信号以及运算结果写使能信号,与运...

【专利技术属性】
技术研发人员:徐云雯李德伟陈逸飞俞翌莹
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1