CN104391820B - 基于fpga的通用浮点矩阵处理器硬件结构 - Google Patents
基于fpga的通用浮点矩阵处理器硬件结构 Download PDFInfo
- Publication number
- CN104391820B CN104391820B CN201410690022.5A CN201410690022A CN104391820B CN 104391820 B CN104391820 B CN 104391820B CN 201410690022 A CN201410690022 A CN 201410690022A CN 104391820 B CN104391820 B CN 104391820B
- Authority
- CN
- China
- Prior art keywords
- matrix
- accelerator
- processor
- caching
- instruction
- 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.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种基于FPGA的通用浮点矩阵处理器硬件结构,包括:多个矩阵运算加速器;提供通用的存储空间且支持加速器间片上高速通信的多个共享矩阵缓存;发送指令,进行运算调度及地址计算的主处理器;检查指令是否存在占用冲突的指令分发器;完成数据传输的直接存取控制器;进行数据分发的仲裁器;提供缓冲的外部存储器;提供访问接口的内存管理单元。本发明实施例的硬件结构可在通用平台上实现“矩阵‑矩阵”间运算,可针对不同的应用在主处理器上修改软件程序,可方便的插入矩阵运算加速器结构以实现对多种矩阵运算的支持,具有高度的设计灵活性。同时,该设计具有比以往在嵌入式处理器上进行矩阵运算更低能耗且更高计算性能的优势。
Description
技术领域
本发明涉及计算机以及电子信息技术领域,特别涉及一种基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的通用浮点矩阵处理器硬件结构。
背景技术
近些年来,移动工作平台如无人机,移动机器人等成为研究的热点之一。这些设备具有很高的灵活性,广泛应用于灾难救助、地质勘测等场景中。在移动工作平台的应用中需要进行大量矩阵运算,这对矩阵运算的速度及功耗有很高要求。例如,卡尔曼滤波器是在移动机器人定位中广泛使用的方法,它的运算过程包含一系列矩阵操作。为了保证机器人定位实时性,这些矩阵运算需高速进行;同时为了适应移动平台上有限的能源供给,矩阵操作应具有更低的功耗。目前,一些矩阵运算库如MKL(Intel Math Kernel Library,英特尔数学核心函数库),cuBLAS(NVIDIACuda Basic Linear Algebra Subroutines,英伟达基础线性代数子程序库)可实现基于CPU(Central Processing Unit,中央处理器)及GPU(GraphicProcessing Unit,图形处理器)的高性能矩阵运算,但其需要复杂的外围设备支持,同时功耗较高,难以应用于移动工作平台。此外,ASIC(Application Specific IntegratedCircuit,专用集成电路)可实现最好的能源效率,但其需根据具体的应用专门设计,使得系统灵活性大大降低。
现场可编程门阵列(FPGA)中有大量可并行的处理单元,同时它具有动态重构的特点,在保证高能效同时兼具设计灵活性。将FPGA用于移动工作平台实现矩阵运算是有效的解决方案。
以往的研究工作通常使用向量处理器在FPGA上实现对矩阵运算的支持。向量处理器是在FPGA上进行高效率计算中一种广为研究的技术。向量处理器通过利用一组通用算数逻辑单元(ALU)对向量中多个元素进行并行计算以实现加速。将矩阵分解为一维向量就可以用向量处理器实现矩阵运算。然而由于矩阵中的数据访问模式具有二维方向性问题——例如,当进行矩阵乘法时,被操作的矩阵有沿行分解和沿列分解两种可能,在这种情况下该设计的访存效率较低。此外,该方法中单个矩阵操作将被分解为对若干行列进行操作的多条指令,这对主处理器的性能提出挑战。
为了实现更高性能的矩阵运算,针对特定的矩阵运算而专门设计的矩阵运算加速器是更好的选择。与向量处理器不同,这些加速器将每种矩阵运算的操作用专有的硬件结构实现,且引入了专门的缓存设计以支持矩阵中的多种数据访问模式。这些加速器可以直接进行矩阵-矩阵间的运算(三级BLAS库中所包含的运算类型)。相关技术中有一些工作针对特定的矩阵运算设计加速器,如矩阵乘法、稀疏矩阵分解等,但尚未有工作提出将加速器进行整合,在FPGA上构建一个高性能、低能耗的通用浮点矩阵计算平台。对加速器进行整合构成通用矩阵计算平台在技术上面临以下两类问题。
其一是对加速器整合时面临的访存模式整合的问题。一种直观方式可以考虑通过内存管理单元的多个接口将加速器直接整合,每次计算从外部存储器读矩阵,执行操作后结果需写回到外部存储器中,这使得加速器之间不能进行片上通信而只能通过外部存储器进行通信,而对外存的读写带宽将成为计算性能提升的瓶颈。以一元矩阵运算为例,B=op1(A);C=op2(B);D=op3(C)。A是输入矩阵,D是输出矩阵,B和C是临时矩阵。在直接整合方法中,B和C需在计算完成后首先被写回到外部存储中,再读入缓存以进行下一步运算。最少执行时间的计算公式为:
其中函数size()代表求矩阵的大小,BW表示访问外存的带宽。由上式可以看出,冗余的访问外存操作使得即使系统里存在空闲的计算资源,执行时间始终不会低于tmin,此时访问外存的带宽成为系统性能提升的瓶颈。
另一问题是在计算中怎样减轻主处理器的工作量。单条指令的执行时间是不确定的,在传统的同步指令执行机制中,主处理器发送一条指令后会被阻塞并不断检查加速器的状态,直到相应的加速器完成计算后方能发送下一条指令。连续的状态检查加大了主处理器工作量,同时主处理器等待加速器完成计算的间隙造成了对计算资源的浪费。
发明内容
本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
为此,本发明的目的在于提出一种降低矩阵运算能耗,提高计算性能的基于FPGA的通用浮点矩阵处理器硬件结构。
为达到上述目的,本发明实施例提出了一种基于FPGA的通用浮点矩阵处理器硬件结构,包括:多个矩阵运算加速器,所述多个矩阵运算加速器用于支持三级BLAS(BasicLinear Algebra Subprograms,基础线性代数子程序库)库中包含的“矩阵-矩阵”运算;多个共享矩阵缓存,所述多个共享矩阵缓存用于为所述多个矩阵运算加速器提供通用的存储空间且支持所述多个矩阵运算加速器间片上高速通信;主处理器,所述主处理器用于发送指令,对存储在外存上的大规模矩阵进行分层矩阵运算的运算调度及地址计算;指令分发器,所述指令分发器用于检查指令对加速器是否存在占用冲突;直接存取控制器,所述直接存取控制器完成外部存储器或主处理器与共享矩阵缓存间的数据传输;仲裁器,所述仲裁器用于在多个矩阵运算加速器以及其所需的数据访问模式的缓存端口间进行数据分发;外部存储器,所述外部存储器用于为大规模矩阵提供存储空间,为对加速器发生占用冲突的指令提供缓冲;以及内存管理单元,所述内存管理单元为多个模块提供外部存储器访问接口。
本发明实施例提出的基于FPGA的通用浮点矩阵处理器硬件结构,在通用平台上实现了低能耗、高性能的“矩阵-矩阵”间运算,且矩阵规模理论上可无限大,并且可针对具体的应用在主处理器上修改软件程序,可方便的插入矩阵运算加速器硬件结构以实现对特定矩阵运算的支持,具有高度的设计灵活性,此外具有比以往在嵌入式处理器上进行矩阵运算更低能耗且更高计算性能的优势。
另外,根据本发明上述实施例的基于FPGA的通用浮点矩阵处理器硬件结构还可以具有如下附加的技术特征:
在本发明的一个实施例中,所述多个共享矩阵缓存为所述多个矩阵运算加速器提供通用的矩阵存储空间,所述多个共享矩阵缓存支持多种二维数据访问模式,以替代所述多个矩阵运算加速器中的独立缓存。
在本发明的一个实施例中,所述多个矩阵运算加速器用于实现矩阵初始化、数组操作和矩阵乘法三类操作,并且涵盖了所述三级BLAS库中所包含的运算类型。
在本发明的一个实施例中,所述主处理器与所述多个矩阵运算加速器协同工作,采用分层的矩阵运算机制以支持对存储在外部存储器上的大规模矩阵进行运算,其中,所述主处理器进行高层次的运算调度,所述多个矩阵运算加速器对缓存中的数据进行底层运算。
在本发明的一个实施例中,通过地址转换器将二维矩阵空间投影到多个一维块RAM组成的存储空间,所述二维矩阵被分割成为多个窗,每个窗中的全部元素被存储在不同块RAM的相同地址中,其中,窗口的尺寸为Hwin×Wwin,二维矩阵的宽度是Wmat,从二维矩阵的位置坐标到其在块RAM中的存储地址转换公式为:
ID=y%Hwin×Wwin+x%Wwin
其中,ID表示该数据所存储的块RAM的编号,ADDR表示在编号为ID的块RAM中的存储地址。
在本发明的一个实施例中,所述外部存储器中的大规模矩阵被分割为多个可以存储在缓存中的块矩阵,所述主处理器依照矩阵运算规则发送指令将各个块矩阵读入缓存,所述矩阵运算加速器对缓存中的数据进行计算,所述主处理器将计算结果写回外部存储器中。
在本发明的一个实施例中,采用乒乓缓存策略提高大规模矩阵分层乘法的运算速度,其中,所述多个共享矩阵缓存中的共享矩阵缓存被划分为六个区域,三个ping缓存区存储的矩阵用于乘法操作,与此同时三个pong缓存区可用于累加及数据传输操作。
在本发明的一个实施例中,采用异步指令执行机制以降低所述主处理器的工作量,其中,所述主处理器可发送多条指令后进行其他必要的计算任务,而所述指令分发器对指令的冲突关系进行检查及调度。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的基于FPGA的通用浮点矩阵处理器硬件结构的示意图;
图2为本发明一个实施例的二维矩阵空间到共享矩阵缓存的地址投影示意图;
图3为本发明一个实施例的矩阵乘法加速器的硬件结构示意图;
图4为本发明一个实施例的矩阵乘法分层计算的原理示意图;
图5为本发明一个实施例的异步指令执行机制的原理示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度小于第二特征。
下面参照附图描述根据本发明实施例提出的基于FPGA的通用浮点矩阵处理器硬件结构。参照图1所示,该基于FPGA的通用浮点矩阵处理器100硬件结构包括:外部存储器110、内存管理单元120、直接存取控制器130、仲裁器140、多个矩阵运算加速器(如图中矩阵运算加速器150所示)、多个共享矩阵缓存(如图中共享矩阵缓存160所示)、主处理器170和指令分发器180。
其中,多个矩阵运算加速器用于支持三级BLAS(Basic Linear AlgebraSubprograms,基础线性代数子程序库)库中包含的“矩阵-矩阵”运算。多个共享矩阵缓存用于为多个矩阵运算加速器提供通用的存储空间且支持多个矩阵运算加速器间片上高速通信。主处理器170用于发送指令,对存储在外存上的大规模矩阵进行分层矩阵运算的调度及必要的地址计算。指令分发器180用于检查指令对加速器是否存在占用冲突。直接存取控制器130用于在外部存储器110或主处理器170与共享矩阵缓存160间进行数据传输。仲裁器140用于在多个矩阵运算加速器及其所需的数据访问模式的缓存端口间进行数据分发。外部存储器110用于为大规模矩阵提供存储空间,为对加速器发生占用冲突的指令提供缓冲。内存管理单元120为多个模块提供外部存储器110访问接口。
具体地,参照图1所示,本发明实施例从硬件、软件两个层次提出了复杂的设计。其中,本发明实施例将矩阵运算加速器150作为基本的整合单元,在此基础上提出了共享矩阵缓存结构(对应图中多个共享矩阵缓存),它支持二维矩阵的多种数据访问模式,使得多个矩阵运算加速器不必设计单独的缓存区,同时实现了多个矩阵运算加速器间进行高速片上通信。
对于存储在外部存储器110上的大规模矩阵,本发明实施例采用了分层的矩阵运算机制加以计算支持,理论上本发明实施例支持规模不受限制的矩阵运算。此外,在本发明的一个实施例中,为降低主处理器170工作量,采用异步的指令执行机制,其中,主处理器170可发送多条指令后进行其他必要的计算任务,而指令分发器180对指令的冲突关系进行检查及调度,也即本发明实施例中引入指令分发器180使得主处理器可以不必在矩阵运算加速器150计算时反复进行硬件的状态检查,而可以在矩阵运算加速器150计算同时并行处理独立的任务。利用此结构,用户设计者只需要根据不同应用修改主处理器170上的软件程序就可以灵活的实现运算,同时可针对不同应用在系统中进行矩阵运算加速器150的增加/删除操作,本发明实施例具有比以往在嵌入式处理器上进行矩阵运算更低能耗且更高计算性能的优势。
需要说明的是,图中标示两个直接存取控制器130是为了本领域技术人员能更好地理解,在此不进行详细赘述。
在本发明的一个实施例中,多个块RAM组成的共享矩阵缓存结构支持多种二维矩阵的多种数据访问模式,为矩阵运算加速器提供了通用的存储空间。
具体地,矩阵中数据访问具有多种模式——例如矩阵加法、减法、点乘、点除等数组操作需按行或列的单一方向存取矩阵,而矩阵的乘法则需要同时按行和列两种方式存取矩阵。
在本发明的实施例中,共享矩阵缓存160支持多种数据访问模式,该缓存的硬件结构包括:多个块RAM,数据适配器,地址转换器。其中,多个块RAM被封装,组成矩阵的存储空间。该结构既支持基于二维坐标访问矩阵中单个元素的模式,也支持基于窗口的数据访问模式,基于窗口的模式可以涵盖大部分矩阵运算加速器的数据访问模式——如对行向量、列向量的访问。换言之,该共享缓存结构可以在一次访存中取出所需数据访问模式的多个数据(像素、行、列或窗包含的所有矩阵元素),这种为矩阵运算而专门设计的共享缓存结构可在为矩阵加速器提供通用存储空间的同时保证各数据模式的访存效率。
进一步地,参照图2所示,为在本发明的实施例中地址转换器将二维矩阵空间投影到多个一维块RAM组成的存储空间的投影示意图。其中,矩阵被分割成为多个窗,每个窗中的全部元素被存储在不同块RAM的相同地址中。假设窗口的尺寸为Hwin×Wwin,二维矩阵的宽度是Wmat,从二维矩阵的位置坐标到其在块RAM中的存储地址转换公式为:
ID=y%Hwin×Wwin+x%Wwin
其中ID表示该数据所存储的块RAM的编号,ADDR表示在编号为ID的块RAM中的存储地址。
在本发明的实施例中,数据适配器用于支持不同的数据访问模式。本发明实施例的块RAM为矩阵提供了通用的存储空间,地址转换器将读写的矩阵二维地址映射为块RAM的相应存储地址,而数据适配器为基于像素、行、列及窗口数据访问模式中同时读写多个数据的操作提供支持。
在本发明的一个实施例中,采用了多个共享矩阵缓存的结构,即可以同时为多个独立计算的矩阵运算加速器提供缓存空间,使得不存在数据依赖关系的矩阵运算可以并行执行。
具体地,在本发明的实施例中,采用了多个共享矩阵缓存结构以支持多个矩阵运算加速器的并行计算。仲裁器140负责在多个加速器及其所需的数据访问模式的缓存端口间进行数据分发。共享矩阵缓存如共享矩阵缓存160为各矩阵运算加速器如矩阵运算加速器150提供了通用的存储空间,因此省略了对各矩阵运算加速器中独立缓存的设计步骤,且可方便的插入/删除矩阵运算加速器以应对不同的应用需求。
在本发明的一个实施例中,多个矩阵运算加速器用于实现矩阵初始化、数组操作和矩阵乘法三类操作,并且涵盖了三级BLAS库中所包含的运算类型。
具体地,在本发明的实施例中,矩阵运算加速器150对这三类运算分别提供支持。其中,本发明实施例支持三种矩阵初始化方式:直接存取控制器130从外部存储器110或主处理器170直接读取初始化矩阵到共享矩阵缓存;用某个共享矩阵缓存160中的矩阵初始化全部共享矩阵缓存;矩阵直接初始化为如对角阵等特殊矩阵。
数组操作中,矩阵被看作一维长向量。本发明实施例包含矩阵加法、减法、点乘与点除的运算加速器。数组运算的加速器包含两个读端口,负责从共享矩阵缓存中读取待操作矩阵,读入的结果被送入相应的加/减/乘/除的计算阵列中,计算结果通过写端口被写回共享矩阵缓存中。在本发明的实施例中,读、写端口均基于行向量的数据访问模式,因此数组操作的并行度等于取数据的窗宽度Wwin。
矩阵乘法可分解为一组数组操作实现,但这种分解运算的方式计算性能较低。参照图3所示,为本发明的实施例中设计的专用的矩阵乘法加速器硬件结构示意图。两个输入端口用于从共享矩阵缓存中读取待操作的数据,注意其左右矩阵具有不同的数据访问模式。左矩阵中的窗和右矩阵对应的列向量在同一个时钟周期读出,两部分相乘得到一列向量。随着窗沿行方向向右扫描,向量沿列方向向下扫描,可计算得到多组的列向量的值,通过一组累加器不断对其进行累加。最终,当窗扫描及列扫描到达行/列终点,累加结果对应两矩阵相乘的结果矩阵中的一个列向量。本发明的实施例所设计的矩阵乘法加速器充分利用硬件计算资源,实现了高性能的矩阵乘法运算。
在本发明的一个实施例中不但实现了对共享矩阵缓存区中的存储矩阵进行运算,同时支持对外部存储器110中的大规模矩阵进行运算。本发明实施例引入分层的矩阵运算机制,实现了主处理器170与矩阵运算加速器150的协同工作:主处理器170进行高层的运算调度,矩阵运算加速器150对缓存中的数据进行底层运算。
具体地,在本发明的一个实施例中,外部存储器110中的大规模矩阵被分割为若干个可以存储在缓存中的块矩阵,主处理器170依照矩阵运算规则发送指令将各个块矩阵读入缓存,矩阵运算加速器150对缓存中的数据进行计算,主处理器170将计算结果写回外部存储器110中。参照图4所示,为大规模矩阵的分层乘法的计算原理图。其中,矩阵A和矩阵B存储在外部存储器110中,矩阵A划分为M*N块,矩阵B划分为N*P块,相乘的结果矩阵C划分为M*P块。运算过程依照下式进行:
blockC(i,j)=∑0≤k<p blockA(i,k)×blockB(k,j)。
进一步地,在本发明的一个实施例中,采用乒乓缓存策略提高大规模矩阵分层乘法的运算速度,其中,多个共享矩阵缓存中用于存储待相乘矩阵的缓存被划分为六个区域,三个ping缓存区存储的矩阵用于乘法操作,与此同时三个pong缓存区可用于累加及数据传输操作。
具体地,在本发明的一个实施例中,乒乓(ping-pong)缓存策略具体可分为以下步骤:将矩阵C中的对应块从外部存储器中读入到pongB缓存区;pingC缓存区存储的矩阵乘法结果通过上一次ping-pong交换被存储在pongC缓存区中,将其与步骤一读入的块矩阵相加;累加完毕的块矩阵写回外部存储器中的对应位置;载入待计算的块矩阵到pongA及pongB缓存区,等待ping-pong缓存区的交换操作。本发明的实施例通过采用分层的矩阵运算机制及乒乓缓存策略,可以在不扩大片上矩阵缓存区大小的情况下,对外部存储器中的大规模矩阵进行运算,同时对乒乓缓存策略使得操作并行度提高,计算效率提升。
在同步指令执行机制中,主处理器发送指令后立即被执行,当矩阵运算加速器处于计算状态时,主处理器需不断进行硬件的状态检查,导致既增加了主处理器的工作量,也浪费了主处理器在等待间隙的计算资源。参照图5所示,为本发明的实施例采用的异步的指令执行机制原理图。其中,本发明实施例通过添加硬件结构指令分发器180,使得主处理器170可以不考虑矩阵运算加速器的工作状态,连续发送多条指令。指令间的冲突关系及调度由指令分发器完成,当两条指令使用同样的矩阵运算加速器而第一条指令尚未计算完成时,冲突指令被送到外部存储器中缓冲,直到第一条指令计算完成。本发明的实施例通过引入异步的指令执行机制降低了主处理器170的工作量,同时在加速器计算同时,主处理器170可以参与其他任务的计算——例如计算下次从外部存储区读取块的地址等必要计算。
为验证本发明实施例进行矩阵运算时的计算性能与能效,本发明实施例在该通用浮点矩阵处理器上实现矩阵乘法,并与现有的矩阵处理器工作进行比较。与之进行比较的工作包括NIOSⅡ/f软核处理器以及2011年提出的名为“VEGAS”的向量处理器。表1给出以上三类工作在对不同规模的矩阵进行乘法运算时消耗的时间及对应的浮点运算能力。可以看出,本发明所提出的基于FPGA的通用浮点矩阵处理器计算性能远高于NIOSⅡ/f软核处理器,且相比“VEGAS”向量处理器有约六倍的性能提升。表1
如下所示:
表1
进一步地,表2给出在不同处理器平台上进行矩阵操作的能效比较,表中能效数据由Altera公司提供的XPE工具测量(ARM Cortex A9示出结果为开发板的能效,片上处理器能效将比该值略高),可以看出本发明所提出的基于FPGA的通用浮点矩阵处理器硬件结构在能效指标上超越了现有的其他处理器结构,具有最高的能效比。表2如下所示:
表2
本发明实施例提出的基于FPGA的通用浮点矩阵处理器硬件结构,可在通用平台上实现低能耗、高性能的“矩阵-矩阵”间运算,且矩阵规模理论上可无限大,并且可针对具体的应用在主处理器上修改软件程序,可方便的插入矩阵运算加速器硬件结构以实现对特定矩阵运算的支持,具有高度的设计灵活性,并且具有比以往在嵌入式处理器上进行矩阵运算更低能耗且更高计算性能的优势。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (7)
1.一种基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,包括:
多个矩阵运算加速器,所述多个矩阵运算加速器用于支持三级BLAS库中包含的“矩阵-矩阵”运算;
多个共享矩阵缓存,所述多个共享矩阵缓存用于为所述多个矩阵运算加速器提供通用的存储空间且支持所述多个矩阵运算加速器间片上高速通信,其中,所述多个共享矩阵缓存为所述多个矩阵运算加速器提供通用的矩阵存储空间,所述多个共享矩阵缓存支持多种二维数据访问模式,以替代所述多个矩阵运算加速器中的独立缓存;
主处理器,所述主处理器用于发送指令,对存储在外存上的大规模矩阵进行分层矩阵运算的调度及地址计算;
指令分发器,所述指令分发器用于检查指令对加速器是否存在占用冲突;
直接存取控制器,所述直接存取控制器完成外部存储器或主处理器与共享矩阵缓存间的数据传输;
仲裁器,所述仲裁器用于在多个矩阵运算加速器及其所需的数据访问模式的缓存端口间进行数据分发;
外部存储器,所述外部存储器用于为大规模矩阵提供存储空间,为对加速器发生占用冲突的指令提供缓冲;
内存管理单元,所述内存管理单元为多个模块提供外部存储器访问接口。
2.如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述多个矩阵运算加速器用于实现矩阵初始化、数组操作和矩阵乘法三类操作,并且涵盖了所述三级BLAS库中所包含的运算类型。
3.如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述主处理器与所述多个矩阵运算加速器协同工作,采用分层的矩阵运算机制以支持对存储在外部存储器上的大规模矩阵进行运算,其中,所述主处理器进行高层次的运算调度,所述多个矩阵运算加速器对缓存中的数据进行底层运算。
4.如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,通过地址转换器将二维矩阵空间投影到多个一维块RAM组成的存储空间,所述二维矩阵被分割成为多个窗,每个窗中的全部元素被存储在不同块RAM的相同地址中,其中,窗口的尺寸为Hwin×Wwin,二维矩阵的宽度是Wmat,从二维矩阵的位置坐标到其在块RAM中的存储地址转换公式为:
ID=y%Hwin×Wwin+x%Wwin
其中,ID表示该数据所存储的块RAM的编号,ADDR表示在编号为ID的块RAM中的存储地址。
5.如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,所述外部存储器中的大规模矩阵被分割为多个可以存储在缓存中的块矩阵,所述主处理器依照矩阵运算规则发送指令将各个块矩阵读入缓存,所述矩阵运算加速器对缓存中的数据进行计算,所述主处理器将计算结果写回外部存储器中。
6.如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,采用乒乓缓存策略提高大规模矩阵分层乘法的运算速度,其中,所述多个共享矩阵缓存中的共享矩阵缓存被划分为六个区域,三个ping缓存区存储的矩阵用于乘法操作,与此同时三个pong缓存区可用于累加及数据传输操作。
7.如权利要求1所述的基于FPGA的通用浮点矩阵处理器硬件结构,其特征在于,采用异步指令执行机制以降低所述主处理器的工作量,其中,所述主处理器可发送多条指令后进行其他必要的计算任务,而所述指令分发器对指令的冲突关系进行检查及调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410690022.5A CN104391820B (zh) | 2014-11-25 | 2014-11-25 | 基于fpga的通用浮点矩阵处理器硬件结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410690022.5A CN104391820B (zh) | 2014-11-25 | 2014-11-25 | 基于fpga的通用浮点矩阵处理器硬件结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104391820A CN104391820A (zh) | 2015-03-04 |
CN104391820B true CN104391820B (zh) | 2017-06-23 |
Family
ID=52609726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410690022.5A Active CN104391820B (zh) | 2014-11-25 | 2014-11-25 | 基于fpga的通用浮点矩阵处理器硬件结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104391820B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6679570B2 (ja) * | 2015-04-08 | 2020-04-15 | 国立大学法人 奈良先端科学技術大学院大学 | データ処理装置 |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
CN108595371B (zh) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
CN109710559A (zh) * | 2016-11-03 | 2019-05-03 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
CN108388561B (zh) * | 2017-02-03 | 2022-02-25 | 百度在线网络技术(北京)有限公司 | 神经网络机器翻译方法和装置 |
CN112214726A (zh) * | 2017-07-07 | 2021-01-12 | 华为技术有限公司 | 运算加速器 |
CN107301034A (zh) * | 2017-08-09 | 2017-10-27 | 葛松芬 | 一种并行处理器阵列结构 |
CN109978147A (zh) * | 2017-12-27 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN110147222B (zh) * | 2018-09-18 | 2021-02-05 | 安徽寒武纪信息科技有限公司 | 运算装置及方法 |
EP3851970A4 (en) * | 2018-09-30 | 2021-10-27 | Huawei Technologies Co., Ltd. | COMPUTING ACCELERATOR, EXCHANGER, TASK PLANNING METHOD AND PROCESSING SYSTEM |
CN111045958B (zh) * | 2018-10-11 | 2022-09-16 | 展讯通信(上海)有限公司 | 加速引擎及处理器 |
CN111382390B (zh) * | 2018-12-28 | 2022-08-12 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109635238B (zh) * | 2018-12-07 | 2023-08-29 | 北京字节跳动网络技术有限公司 | 矩阵运算方法、装置、设备及可读介质 |
CN109918043B (zh) * | 2019-03-04 | 2020-12-08 | 上海熠知电子科技有限公司 | 一种基于虚拟通道的运算单元共享方法和系统 |
CN111125628A (zh) * | 2019-12-24 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 人工智能处理器处理二维数据矩阵的方法和设备 |
CN111124996A (zh) * | 2019-12-24 | 2020-05-08 | 上海寒武纪信息科技有限公司 | 通过人工智能处理器处理一维复数数组的方法和设备 |
CN110750069B (zh) * | 2019-12-24 | 2020-05-22 | 武汉精立电子技术有限公司 | 一种aoi系统的多设备控制装置 |
CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
US20240028553A1 (en) * | 2020-09-15 | 2024-01-25 | Anhui Cambricon Information Technology Co., Ltd. | Acceleration unit, acceleration assembly, acceleration device, and electronic device |
CN114116557B (zh) * | 2021-11-15 | 2024-02-27 | 同济大学 | 基于硬件加速器与数字信号处理器的信道估计装置及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089840A (zh) * | 2007-07-12 | 2007-12-19 | 浙江大学 | 基于多fpga的矩阵乘法并行计算系统 |
CN102004718A (zh) * | 2010-11-18 | 2011-04-06 | 中国西电电气股份有限公司 | 一种基于现场可编程门阵列和微处理器的合并单元 |
CN103761075A (zh) * | 2014-02-10 | 2014-04-30 | 东南大学 | 一种粗粒度动态可重构数据规整控制单元结构 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101359717B1 (ko) * | 2010-11-08 | 2014-02-07 | 한국전자통신연구원 | 에너지 타일 프로세서 |
-
2014
- 2014-11-25 CN CN201410690022.5A patent/CN104391820B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089840A (zh) * | 2007-07-12 | 2007-12-19 | 浙江大学 | 基于多fpga的矩阵乘法并行计算系统 |
CN102004718A (zh) * | 2010-11-18 | 2011-04-06 | 中国西电电气股份有限公司 | 一种基于现场可编程门阵列和微处理器的合并单元 |
CN103761075A (zh) * | 2014-02-10 | 2014-04-30 | 东南大学 | 一种粗粒度动态可重构数据规整控制单元结构 |
Also Published As
Publication number | Publication date |
---|---|
CN104391820A (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391820B (zh) | 基于fpga的通用浮点矩阵处理器硬件结构 | |
CN210006057U (zh) | 用于深度学习引擎的设备和系统 | |
US20190266485A1 (en) | Arithmetic unit for deep learning acceleration | |
JP2671120B2 (ja) | データ処理セルおよびデータプロセッサ | |
CN103020890B (zh) | 基于多层次并行处理的视觉处理装置 | |
WO2019010183A1 (en) | PROCESSOR OF DEEP VISION | |
CN106940815A (zh) | 一种可编程卷积神经网络协处理器ip核 | |
US20170060811A1 (en) | Matrix operands for linear algebra operations | |
CN106991077A (zh) | 一种矩阵计算装置 | |
CA2143310A1 (en) | Method and apparatus for parallel computing and volume visualization | |
Kono et al. | Scalability analysis of tightly-coupled FPGA-cluster for lattice boltzmann computation | |
CN110333946A (zh) | 一种基于人工智能cpu数据处理系统及方法 | |
CN112559046A (zh) | 数据处理装置及人工智能处理器 | |
CN110909872B (zh) | 集成电路芯片装置及相关产品 | |
CN107291666A (zh) | 一种数据处理方法及处理装置 | |
CN113191491B (zh) | 多维度并行的人工智能处理器架构 | |
CN104794102B (zh) | 一种加速实现Cholesky分解的嵌入式片上系统 | |
CN108053361A (zh) | 多互连视觉处理器及采用其的图像处理方法 | |
Hämäläinen | Parallel implementations of self-organizing maps | |
DE102023105565A1 (de) | VERFAHREN UND VORRICHTUNG FÜR EFFIZIENTEN ZUGRIFF AUF MEHRDIMENSIONALE DATENSTRUKTUREN UND/ODER ANDERE GROßE DATENBLÖCKE | |
Wang et al. | A universal FPGA-based floating-point matrix processor for mobile systems | |
CN202694323U (zh) | 一种并行元胞自动机处理系统 | |
Nair et al. | Fpga acceleration of gcn in light of the symmetry of graph adjacency matrix | |
CN101794276B (zh) | 适用于soc的dct_idct协处理器 | |
CN203465722U (zh) | 一种面向多尺度计算的计算机系统 |
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 |