一种时域有限差分法硬件加速器架构及其实现方法与流程

文档序号:20917726发布日期:2020-05-29 13:44阅读:471来源:国知局
一种时域有限差分法硬件加速器架构及其实现方法与流程

本发明涉及一种基于fpga平台的硬件加速器领域,尤其是一种时域有限差分法硬件加速器架构及其实现方法。



背景技术:

现有的基于fpga(fieldprogrammablegatearray)平台的时域有限差分法硬件加速器在计算三维空间中的电磁场时,会将需要进行仿真的大网格根据fpga上的逻辑资源与存储资源的多少,平均地分割成若干个小网格,并为每个小网格分配一个计算处理单元pe(processingelement)与存储数据的一组块随机存储器bram(blockram),形成一个小网格的三维阵列。每个计算处理单元pe负责对该小网格内所有格点的电场值与磁场值进行计算,通过扫描的方式依次对每个格点的值进行更新。所有小网格完成计算之后,再将小网格块随机存储器bram内的电场值与磁场值按照小网格的组合方式输出,以还原大网格的结构。

在实际工程中使用时域有限差分法硬件加速器时,需要进行电磁场仿真的网格尺寸可能会比较大,格点分布比较密集,导致整个网格的电场值和磁场值数据量很大,无法同时存放在fpga片上的存储中,需要将部分数据存放在片外的动态随机存取存储器dram备于fpga读写。这要求硬件加速器有较灵活的存储结构和数据存取模式,以及需要考虑存储带宽的瓶颈问题。此外,实际工程应用中不同的仿真空间有不同的尺寸及长宽高比例,现有的加速器中使用的pe三维阵列模式,难以用同一种阵列分布来适应不同的网格结构。所以,使用加速器时往往需要根据网格结构的比例来重新配置pe三维阵列的排布与数目,来保证pe阵列的正常工作及每个pe的利用率。这个缺陷会导致每次仿真不同的工程需要重新烧写fpga的比特流以配置不同架构的硬件加速器,工程量很大,在实际工程中难以实用。即pe阵列的扩展性和网格适应性很弱。



技术实现要素:

为了解决至少一个上述技术问题,本发明的目的在于提供一种时域有限差分法硬件加速器架构及其实现方法。

本发明所采取的技术方案是:一方面,本发明实施例包括一种时域有限差分法硬件加速器架构,包括链式计算处理单元排列结构、多组存储块和激励源赋值器;

所述链式计算处理单元排列结构为沿一维方向排列的多个pe的组合,所述链式计算处理单元排列结构用于对电磁场仿真的三维网格格点的电场值和/或磁场值进行计算;

所述存储块由多个块随机存储器构成,所述存储块用于存储所述pe计算得到的网格格点的电场值和/或磁场值;

所述激励源赋值器用于在每个时间步计算完之后,向对应的所述存储块输出激励源值,以对所述存储块存储的电场值和/或磁场值进行赋值。

进一步地,所述链式计算处理单元排列结构在执行对电磁场仿真的三维网格格点的电场值和磁场值进行计算这一步骤时,具体用于:

所述链式计算处理单元排列结构扫描连续的网格格点,当扫描到网格边界,所述链式计算处理单元排列结构将超出所述网格边界部分的pe关闭,并切换至同一二维平面上的另一一维方向继续进行扫描;

扫描所有网格格点,计算出所有网格格点的电场值和磁场值。

进一步地,每个所述pe分别对应一组所述存储块,所述存储块用于存储对应pe的计算结果。

进一步地,所述存储块包含电场分量存储单元和磁场分量存储单元,每个所述存储单元分配一个对应的块随机存储器进行存储。

进一步地,所述激励源赋值器在执行所述存储块存储的电场值和/或磁场值进行赋值这一步骤,具体包括:

计算每个时间步下的激励源值;

生成时间与激励源值对应关系的激励源查找表;

根据所述激励源查找表,向对应的存储块输出激励源值;

向对应存储块存储的网格格点的电场值和/或磁场值进行赋值。

另一方面,本发明实施例还包括一种时域有限差分法硬件加速器架构的实现方法,包括以下步骤:

组建链式计算处理单元排列结构,所述链式计算处理单元排列结构为沿一维方向排列的多个pe的组合,所述链式计算处理单元排列结构用于对电磁场仿真的三维网格格点的电场值和/或磁场值进行计算;所述链式计算处理单元排列结构中的每个pe分别对应一组存储块,并与对应的所述存储块连接;

组建相应的存储块,所述存储块由多个块随机存储器构成,所述存储块用于存储所述pe计算得到的网格格点的电场值和/或磁场值;

组建相应的激励源赋值器,所述激励源赋值器用于在每个时间步计算完之后,向对应的所述存储块输出激励源值,以对所述存储块存储的电场值和/或磁场值进行赋值;所述激励源赋值器的数据输出直接与各组存储块相连。

进一步地,组建链式计算处理单元排列结构这一步骤,具体包括:

使用算术逻辑单元搭建pe的多个计算逻辑块;所述算术逻辑单元包括加法器和乘法器;

根据时域有限差分法算法中的表达式,计算得出每个所述计算逻辑块对应的电场分量和磁场分量;

将多个所述计算逻辑块组合单个pe;

多个所述pe沿一维方向排列组合成链式计算处理单元排列结构。

进一步地,组建相应的存储块这一步骤,具体包括:

根据所述链式计算处理单元排列结构,设置对应的存储块中的块随机存储器为真双口存储器,所述真双口存储器包括第一计算机端口和第二计算机端口;

所述第一计算机端口与对应的pe连接,并存储对应pe的计算结果;

所述第二计算机端口与激励源赋值器的输出端相连,并接收所述所述激励源赋值器输出的相应的赋值数据。

进一步地,组建相应的激励源赋值器这一步骤,具体包括:

根据工程中仿真环境需要的激励源,将每个时间步对应的激励源值计算出来;

根据所述计算结果,生成时间和激励源值相对应的激励源查找表;

存储所述激励源查找表组建成激励源赋值器。

进一步地,所述激励源赋值器向对应存储块存储的网络格点的电场值和/或磁场值进行赋值后,所述存储块重新存储赋值后的电场值和/或磁场值。

本发明的有益效果是:不需要重新修改硬件结构就可以适应网格,可保证功能正确;一维的计算处理单元扫描到网格边界时,只需要暂时关闭部分pe,其他两个维度不会超出边界,可以提高一个格点扫描过程中pe的利用率。每个块随机存储器bram与计算处理单元pe的连线简单,减少fpga上综合实现的布线难度和延时;同时,所有的网格信息只会存放在多个存储块中,不随网格尺寸变化,有较强的网格适应性;此外,当仿真的网格过大,数据过多无法同时存放在fpga上时,需要从片外动态随机存取存储器dram读写数据时,多个存储块结构可以同时对dram进行读写数据,能提高同时写入块随机存储器bram的数据位宽,以尽可能的发挥片外存储带宽能力。

附图说明

图1为现有技术使用的pe三维阵列示意图;

图2为本发明实施例所述时域有限差分法硬件加速器架构示意图;

图3为本发明实施例中电场分量ex的计算逻辑块示意图。

具体实施方式

如图1所示,现有的基于fpga(fieldprogrammablegatearray)平台的时域有限差分法硬件加速器在计算三维空间中的电磁场时,会将需要进行仿真的大网格根据fpga上的逻辑资源与存储资源的多少,平均地分割成若干个小网格,并为每个小网格分配一个计算处理单元pe(processingelement)与存储数据的一组bram(blockram),形成一个小网格的三维阵列。每个pe负责对该小网格内所有格点的电场值与磁场值进行计算,通过扫描的方式依次对每个格点的值进行更新。所有小网格完成计算之后,再将小网格bram内的电场值与磁场值按照小网格的组合方式输出,以还原大网格的结构。

在实际工程中使用时域有限差分法硬件加速器时,需要进行电磁场仿真的网格尺寸可能会比较大,格点分布比较密集,导致整个网格的电场值和磁场值数据量很大,无法同时存放在fpga片上的存储中,需要将部分数据存放在片外的dram备于fpga读写。这要求硬件加速器有较灵活的存储结构和数据存取模式,以及需要考虑存储带宽的瓶颈问题。此外,实际工程应用中不同的仿真空间有不同的尺寸及长宽高比例,现有的加速器中使用的pe三维阵列模式,难以用同一种阵列分布来适应不同的网格结构。所以,使用加速器时往往需要根据网格结构的比例来重新配置pe三维阵列的排布与数目,来保证pe阵列的正常工作及每个pe的利用率。这个缺陷会导致每次仿真不同的工程需要重新烧写fpga的比特流以配置不同架构的硬件加速器,工程量很大,在实际工程中难以实用。即pe阵列的扩展性和网格适应性很弱。

为解决时域有限差分法硬件加速器遇到的pe阵列扩展性和网格适应性弱的问题,本发明提出了一种基于fpga平台的时域有限差分法硬件加速器架构,包括链式计算处理单元排列结构、多组存储块和激励源赋值器;

所述链式计算处理单元排列结构为沿一维方向排列的多个pe的组合,所述链式计算处理单元排列结构用于对电磁场仿真的三维网格格点的电场值和/或磁场值进行计算;

所述存储块由多个块随机存储器构成,所述存储块用于存储所述pe计算得到的网格格点的电场值和/或磁场值;

所述激励源赋值器用于在每个时间步计算完之后,向对应的所述存储块输出激励源值,以对所述存储块存储的电场值和/或磁场值进行赋值。

进一步地,所述链式计算处理单元排列结构在执行对电磁场仿真的三维网格格点的电场值和磁场值进行计算这一步骤时,具体用于:

所述链式计算处理单元排列结构扫描连续的网格格点,当扫描到网格边界,所述链式计算处理单元排列结构将超出所述网格边界部分的pe关闭,并切换至同一二维平面上的另一一维方向继续进行扫描;

扫描所有网格格点,计算出所有网格格点的电场值和磁场值。

进一步地,每个所述pe分别对应一组所述存储块,所述存储块用于存储对应pe的计算结果。

进一步地,所述存储块包含电场分量存储单元和磁场分量存储单元,每个所述存储单元分配一个对应的块随机存储器进行存储。

进一步地,所述激励源赋值器在执行对所述存储块存储的电场值和/或磁场值进行赋值这一步骤时,具体用于:

计算每个时间步下的激励源值;

生成时间与激励源值对应关系的激励源查找表;

根据所述激励源查找表,向对应的存储块输出激励源值;

本实施例中,所述基于fpga平台的时域有限差分法硬件加速器架构用于计算三维空间的电磁场,继而用三维网格仿真电磁场。所述链式计算处理单元排列结构为沿一维方向排列的多个计算处理单元pe组合,用于对连续的网格格点进行扫描,继而计算出各个网格格点的电场值和/或磁场值。计算处理单元pe的个数可以根据部署的目标器件逻辑资源灵活地选择。假设pe的个数为n,加速器开始计算时,链式计算处理单元排列结构从坐标为(0,0,0)开始,计算x正方向上连续的n个格点。完成计算后,链式计算处理单元排列结构向x正方向右移,从(n,0,0)继续计算接下来的n个格点。如果遇到了网格的边界,就将超出边界部分的pe关闭(不计算也不写回存储单元),并在下一次计算进行换行,即y坐标加1。完成一层的格点计算之后,下一次计算进行换层,即z坐标加1;以此循环至所有格点扫描完成。

例如,当链式计算处理单元排列结构为沿一维方向排列的16个pe组合时,加速器开始计算时,链式计算处理单元排列结构从坐标为(0,0,0)开始,计算x正方向上连续的16个格点。完成计算后,向x正方向右移,从(16,0,0)继续计算接下来的16个格点。同样地,如果遇到了网格的边界,就将超出边界部分的pe关闭(不计算也不写回存储单元),并在下一次计算进行换行,即y坐标加1。完成一层的格点计算之后,下一次计算进行换层,即z坐标加1;以此循环至所有格点扫描完成。

本实施例中,所述存储块brambank由多个块随机存储器bram组成,多组存储块中的每一组存储块都分别对应一个pe;存储块中包含电场分量ex,ey,ez和磁场分量hx,hy,hz的存储单元,每个单元分配1个块随机存储器bram进行存储。每一组存储块只支持对应的pe进行读写和只支持对应的激励源赋值器的赋值。例如,如果链式计算处理单元排列结构为沿一维方向排列的16个pe组合时,其所对应的存储块brambank便有16组,每一组分别对应一个pe。

本实施例中,激励源赋值器用于在每个时间步计算完之后,向对应的所述存储块输出激励源值,以对所述存储块存储的电场值和/或磁场值进行赋值。所述激励源赋值器还可存储激励源查找表,并可根据所述激励源查找表,在每一个时间步完成计算后,向对应地址的存储块中的某些电场分量和/或磁场分量进行强制赋值,以模拟激励源在某个点上的振幅变化行为。所述激励源查找表是根据每个时间步下对应的激励源值生成的查找表,存储在激励源赋值器中。激励源赋值器的数据输出直接与各组存储块相连,以便于给存储块中存储的网格格点的电场分量和/或磁场分量进行强制赋值。参照图2,图2为本发明实施例所述时域有限差分法硬件加速器架构示意图,其中,pe的数目为16个,与其对应的存储块brambank的组数也为16组。

综上所述,本实施例中所述时域有限差分法硬件加速器架构具有以下优点:

链式计算处理单元排列结构结构相比于三维阵列pe结构更容易适应各种网格;本发明实施例中使用的一维方向(x方向)的扫描计算模式不会受到y方向和z方向网格尺寸的大小影响,而遇到边界只需要关闭超出边界的pe即可,因此在不同网格空间下,使用链式计算处理单元排列结构结构的时域有限差分法加速器不需要重新修改硬件结构就可以适应网格,可保证功能正确。此外,本发明实施例提出的硬件加速器架构只会遇到一个维度的超出边界问题从而需要暂时关闭部分pe,其他两个维度不会超出边界,所以可以提高一个格点扫描过程中pe的利用率。

本发明实施例中,存储块brambank结构与链式计算处理单元排列结构结构一一对应,没有与非链式计算处理单元排列结构中的pe相连,因此每个块随机存储器bram与pe的连线简单,能够减少fpga上综合实现的布线难度和延时;同时,所有的网格信息只会存放在16组(16为pe的数目)存储块brambank中,不随网格尺寸变化,有较强的网格适应性。此外,当仿真的网格过大,数据过多无法同时存放在fpga上时,需要从片外dram读写数据时,16组存储块brambank结构可以同时对dram进行读写数据,能提高同时写入bram的数据位宽,以尽可能的发挥片外存储带宽能力。

本发明实施例还包括一种时域有限差分法硬件加速器架构的实现方法,包括以下步骤:

s1.组建链式计算处理单元排列结构,所述链式计算处理单元排列结构为沿一维方向排列的多个pe的组合,所述链式计算处理单元排列结构用于对电磁场仿真的三维网格格点的电场值和/或磁场值进行计算;所述链式计算处理单元排列结构中的每个pe分别对应一组存储块,并与对应的所述存储块连接;

s2.组建相应的存储块,所述存储块由多个块随机存储器构成,所述存储块用于存储所述pe计算得到的网格格点的电场值和/或磁场值;

s3.组建相应的激励源赋值器,所述激励源赋值器用于在每个时间步计算完之后,向对应的所述存储块输出激励源值,以对所述存储块存储的电场值和/或磁场值进行赋值;所述激励源赋值器的数据输出直接与各组存储块相连。

所述步骤s1,也就是组建链式计算处理单元排列结构这一步骤,具体包括:

s101.使用算术逻辑单元搭建pe的多个计算逻辑块;所述算术逻辑单元包括加法器和乘法器;

s102.根据时域有限差分法算法中的表达式,计算得出每个所述计算逻辑块对应的电场分量和磁场分量;

s103.将多个所述计算逻辑块组合单个pe;

s104.多个所述pe沿一维方向排列组合成链式计算处理单元排列结构。

所述步骤s2,也就是组建相应的存储块这一步骤,具体包括:

s201.根据所述链式计算处理单元排列结构,设置对应的存储块中的块随机存储器为真双口存储器,所述真双口存储器包括第一计算机端口和第二计算机端口;

s202.所述第一计算机端口与对应的pe连接,并存储对应pe的计算结果;

s203.所述第二计算机端口与激励源赋值器的输出端相连,并接收所述所述激励源赋值器输出的相应的赋值数据。

所述步骤s3,也就是组建相应的激励源赋值器这一步骤,具体包括:

s301.根据工程中仿真环境需要的激励源,将每个时间步对应的激励源值计算出来;

s302.根据所述计算结果,生成时间和激励源值相对应的激励源查找表;

s3003.存储所述激励源查找表组建成激励源赋值器。

进一步地,所述激励源赋值器向对应存储块存储的网络格点的电场值和/或磁场值进行赋值后,所述存储块重新存储赋值后的电场值和/或磁场值。

本实施例中,链式计算处理单元排列结构结构组建首先要完成单个pe的组建,使用算术逻辑单元包括加法器、乘法器搭建起pe的计算逻辑块,根据时域有限差分法算法中的表达式,实现一个电场分量或是磁场分量的乘加功能,参照图3,图3是其中一个电场分量ex的计算逻辑块示意图,使用的是3级流水线架构,每一级对应地完成磁场值的差分计算、系数相乘及差分值累加。完成一次计算需要3个周期。其中ex,hy1,hy2,hz1,hz2为变量,c1,c2,c3为计算需要用的系数;ex的计算表达式为:ex=c1·ex+(c2·(hy1-hy2)-c3·(hz1-hz2));按照同样的方法,可以计算出电场分量ey、ez的值。然后将3个这样的逻辑块组合成单个pe,分别对应3个电场分量ex、ey、ez或是3个磁场分量hx、hy、hz;再将多个所述pe沿一维方向排列组合成链式计算处理单元排列结构。

本实施例中,完成单个pe的组建之后,组建对应的存储块brambank,每一个存储块brambank中包含6个xilinxvivado工具中的bramip,其存储着对应pe计算得到的3个电场分量数据和3个磁场分量数据。块随机存储器bram被为真双口存储器ram,第一计算机端口(porta)用于对应的pe的读写,第二计算机端口(portb)用于激励源查找表的写入;块随机存储器bram的第一计算机端口(porta)与pe相连,并存储pe计算得到的网格格点的电场值和磁场值;第二计算机端口(portb)直接与激励源赋值器的输出口相连,块随机存储器bram的每个地址空间的初始值均为0。

本实施例中,激励源赋值器的组建使用的也是bramip,配置为简单的单口只读存储器镜像rom,即只提供于读出。根据工程中仿真环境需要的激励源,在matlab软件中将激励源每个时间步的值计算出来,产生一个时间与激励源振幅一一对应的查找表coe文件,在xilinxvivado工具加载到块随机存储器bram的初始化文件中;激励源赋值器的输出口直接与存储块brambank中每一个块随机存储器bram的第二计算机端口(portb)相连,即可以对存储块存储的每一个网格格点的电场分量或磁场分量进行赋值。

需要说明的是,本申请文件中采用术语第一、第二等来描述各种元件,但这些元件不应限于这些术语,这些术语仅用来将同一类型的元件彼此区分开。

同样地,如无特殊说明,当某一特征被称为“连接”在另一个特征,它可以直接连接在另一个特征上,也可以间接地连接在另一个特征上。此外,在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本实施例所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本实施例说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。

以上是对本发明的较佳实施进行了具体说明,但对本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1