基于fpga的通用浮点矩阵处理器硬件结构的制作方法

文档序号:6635795阅读:352来源:国知局
基于fpga的通用浮点矩阵处理器硬件结构的制作方法
【专利摘要】本发明公开了一种基于FPGA的通用浮点矩阵处理器硬件结构,包括:多个矩阵运算加速器;提供通用的存储空间且支持加速器间片上高速通信的多个共享矩阵缓存;发送指令,进行运算调度及地址计算的主处理器;检查指令是否存在占用冲突的指令分发器;完成数据传输的直接存取控制器;进行数据分发的仲裁器;提供缓冲的外部存储器;提供访问接口的内存管理单元。本发明实施例的硬件结构可在通用平台上实现“矩阵-矩阵”间运算,可针对不同的应用在主处理器上修改软件程序,可方便的插入矩阵运算加速器结构以实现对多种矩阵运算的支持,具有高度的设计灵活性。同时,该设计具有比以往在嵌入式处理器上进行矩阵运算更低能耗且更高计算性能的优势。
【专利说明】基于FPGA的通用淳点矩阵处理器硬件结构

【技术领域】
[0001] 本发明涉及计算机以及电子信息【技术领域】,特别涉及一种基于FPGA(Field - Programmable Gate Array,现场可编程门阵列)的通用浮点矩阵处理器硬件结构。

【背景技术】
[0002] 近些年来,移动工作平台如无人机,移动机器人等成为研究的热点之一。这些设 备具有很高的灵活性,广泛应用于灾难救助、地质勘测等场景中。在移动工作平台的应用 中需要进行大量矩阵运算,这对矩阵运算的速度及功耗有很高要求。例如,卡尔曼滤波器 是在移动机器人定位中广泛使用的方法,它的运算过程包含一系列矩阵操作。为了保证机 器人定位实时性,这些矩阵运算需高速进行;同时为了适应移动平台上有限的能源供给,矩 阵操作应具有更低的功耗。目前,一些矩阵运算库如MKL(Intel Math Kernel Library, 英特尔数学核心函数库),cuBLAS(NVIDIACuda Basic Linear Algebra Subroutines,英 伟达基础线性代数子程序库)可实现基于CPU(Central Processing Unit,中央处理器) 及GPU(Graphic Processing Unit,图形处理器)的高性能矩阵运算,但其需要复杂的外 围设备支持,同时功耗较高,难以应用于移动工作平台。此外,ASIC(Application Specific Integrated Circuit,专用集成电路)可实现最好的能源效率,但其需根据具体的应用专门 设计,使得系统灵活性大大降低。
[0003] 现场可编程门阵列(FPGA)中有大量可并行的处理单元,同时它具有动态重构的 特点,在保证高能效同时兼具设计灵活性。将FPGA用于移动工作平台实现矩阵运算是有效 的解决方案。
[0004] 以往的研究工作通常使用向量处理器在FPGA上实现对矩阵运算的支持。向量处 理器是在FPGA上进行高效率计算中一种广为研究的技术。向量处理器通过利用一组通用 算数逻辑单元(ALU)对向量中多个元素进行并行计算以实现加速。将矩阵分解为一维向量 就可以用向量处理器实现矩阵运算。然而由于矩阵中的数据访问模式具有二维方向性问 题--例如,当进行矩阵乘法时,被操作的矩阵有沿行分解和沿列分解两种可能,在这种情 况下该设计的访存效率较低。此外,该方法中单个矩阵操作将被分解为对若干行列进行操 作的多条指令,这对主处理器的性能提出挑战。
[0005] 为了实现更高性能的矩阵运算,针对特定的矩阵运算而专门设计的矩阵运算加速 器是更好的选择。与向量处理器不同,这些加速器将每种矩阵运算的操作用专有的硬件结 构实现,且引入了专门的缓存设计以支持矩阵中的多种数据访问模式。这些加速器可以直 接进行矩阵-矩阵间的运算(三级BLAS库中所包含的运算类型)。相关技术中有一些工作 针对特定的矩阵运算设计加速器,如矩阵乘法、稀疏矩阵分解等,但尚未有工作提出将加速 器进行整合,在FPGA上构建一个高性能、低能耗的通用浮点矩阵计算平台。对加速器进行 整合构成通用矩阵计算平台在技术上面临以下两类问题。
[0006] 其一是对加速器整合时面临的访存模式整合的问题。一种直观方式可以考虑通 过内存管理单元的多个接口将加速器直接整合,每次计算从外部存储器读矩阵,执行操作 后结果需写回到外部存储器中,这使得加速器之间不能进行片上通信而只能通过外部存储 器进行通信,而对外存的读写带宽将成为计算性能提升的瓶颈。以一元矩阵运算为例,B = OP1(A) ;C = opjB) ;D = Op3(C)。A是输入矩阵,D是输出矩阵,B和C是临时矩阵。在直接 整合方法中,B和C需在计算完成后首先被写回到外部存储中,再读入缓存以进行下一步运 算。最少执行时间的计算公式为:

【权利要求】
1. 一种基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,包括: 多个矩阵运算加速器,所述多个矩阵运算加速器用于支持三级BLAS库中包含的"矩 阵-矩阵"运算; 多个共享矩阵缓存,所述多个共享矩阵缓存用于为所述多个矩阵运算加速器提供通用 的存储空间且支持所述多个矩阵运算加速器间片上高速通信; 主处理器,所述主处理器用于发送指令,对存储在外存上的大规模矩阵进行分层矩阵 运算的调度及地址计算; 指令分发器,所述指令分发器用于检查指令对加速器是否存在占用冲突; 直接存取控制器,所述直接存取控制器完成外部存储器或主处理器与共享矩阵缓存间 的数据传输; 仲裁器,所述仲裁器用于在多个矩阵运算加速器及其所需的数据访问模式的缓存端口 间进行数据分发; 外部存储器,所述外部存储器用于为大规模矩阵提供存储空间,为对加速器发生占用 冲突的指令提供缓冲; 内存管理单元,所述内存管理单元为多个模块提供外部存储器访问接口。
2. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述 多个共享矩阵缓存为所述多个矩阵运算加速器提供通用的矩阵存储空间,所述多个共享矩 阵缓存支持多种二维数据访问模式,以替代所述多个矩阵运算加速器中的独立缓存。
3. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述 多个矩阵运算加速器用于实现矩阵初始化、数组操作和矩阵乘法三类操作,并且涵盖了所 述三级BLAS库中所包含的运算类型。
4. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述 主处理器与所述多个矩阵运算加速器协同工作,采用分层的矩阵运算机制以支持对存储在 外部存储器上的大规模矩阵进行运算,其中,所述主处理器进行高层次的运算调度,所述多 个矩阵运算加速器对缓存中的数据进行底层运算。
5. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,通过 地址转换器将二维矩阵空间投影到多个一维块RAM组成的存储空间,所述二维矩阵被分割 成为多个窗,每个窗中的全部元素被存储在不同块RAM的相同地址中,其中,窗口的尺寸为 HwinX Wwin,二维矩阵的宽度是Wmat,从二维矩阵的位置坐标到其在块RAM中的存储地址转换 公式为:
其中,ID表示该数据所存储的块RAM的编号,ADDR表示在编号为ID的块RAM中的存储 地址。
6. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述 外部存储器中的大规模矩阵被分割为多个可以存储在缓存中的块矩阵,所述主处理器依照 矩阵运算规则发送指令将各个块矩阵读入缓存,所述矩阵运算加速器对缓存中的数据进行 计算,所述主处理器将计算结果写回外部存储器中。
7. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,采用 乒乓缓存策略提高大规模矩阵分层乘法的运算速度,其中,所述多个共享矩阵缓存中的共 享矩阵缓存被划分为六个区域,三个Ping缓存区存储的矩阵用于乘法操作,与此同时三个 pong缓存区可用于累加及数据传输操作。
8. 如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,采用 异步指令执行机制以降低所述主处理器的工作量,其中,所述主处理器可发送多条指令后 进行其他必要的计算任务,而所述指令分发器对指令的冲突关系进行检查及调度。
【文档编号】G06F15/78GK104391820SQ201410690022
【公开日】2015年3月4日 申请日期:2014年11月25日 优先权日:2014年11月25日
【发明者】谷梦媛, 王文强, 汪玉, 郭开元, 杨华中 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1