一种抗单粒子翻转的存算架构FPGA的制作方法
未命名
09-17
阅读:83
评论:0

一种抗单粒子翻转的存算架构fpga
技术领域
1.本技术涉及fpga技术领域,尤其是一种抗单粒子翻转的存算架构fpga。
背景技术:
2.随着物联网、云计算和人工智能等高新技术的发展,依托于硬件平台实现的各类数据密集型应用也急剧增长。fpga(field programmable gate array,可编程阵列逻辑)因具有并行性和可重构性的优势,是目前常用的硬件平台。
3.现有的fpga与大多数传统的硬件平台一样,都采用冯诺依曼架构,fpga内部包含大量的诸如clb、dsp和bram之类的资源模块,这些资源模块之间通过高度可配置的互连线连接起来,形成为fpga中的计算单元和存储单元。bram作为片上重要的存储单元,片上数据主要存储在bram中,而计算时又要将片上数据传输到计算单元中。
4.因此现有的fpga与其他采用冯诺依曼架构的硬件平台一样,在执行各种计算任务的过程中,需要在存储单元和计算单元之间反复传输大量的数据,频繁且大量的数据搬移不仅会消耗大量的布线资源和互连资源,还会导致巨大的延迟和能量损耗,从而限制了fpga的数据处理效率。
技术实现要素:
5.本技术人针对上述问题及技术需求,提出了一种抗单粒子翻转的存算架构fpga,本技术的技术方案如下:
6.一种抗单粒子翻转的存算架构fpga,该存算架构fpga内部包括按照预定结构排列的若干个资源模块、环于资源模块设置的互连资源以及额外的硬件资源实现的全局读写通道,位于同一个子区域内的资源模块通过fpga内部的互连资源相连以实现一个存算单元,每个存算单元包括处理器和本地存储单元,每个存算单元的本地存储单元用于存储存算单元的指令和数据,每个存算单元中的处理器经由互连资源连接同一个存算单元中的本地存储单元并按照本地存储单元存储的指令和数据运算;多个不同的子区域内的资源模块对应实现多个存算单元,且每个存算单元中的本地存储单元通过全局读写通道与fpga片外进行数据传输;
7.存在至少一个存算单元中还包括校验电路,存算单元中包括至少一个寄存器为奇偶寄存器,奇偶寄存器包括数据位和校验位;在存算单元执行一项存算运算的过程中,存算单元中的校验电路对存算单元中的奇偶寄存器进行数据校验,并在校验失败时确定奇偶寄存器的寄存器数据错误,触发存算单元重新执行当前存算运算。
8.其进一步的技术方案为,存算单元在执行一项存算运算时,存算指令和初始数据经由全局读写通道写入存算单元的本地存储单元,存算单元中的处理器按照存算指令基于初始数据执行存算运算,且在执行存算运算的过程中,本地存储单元中储存的存算指令和初始数据保持不变;
9.当确定奇偶寄存器的寄存器数据错误时,存算单元中的处理器重新按照存算指令
基于初始数据执行存算运算。
10.其进一步的技术方案为,校验电路包括校验码产生器和校验码校验器,在存算单元执行一项存算运算的过程中:
11.在向奇偶寄存器中的数据位写入寄存器数据时,校验码产生器根据寄存器数据生成对应的校验码并更新写入校验位;
12.校验码校验器根据奇偶寄存器的数据位和校验位的内容进行数据校验,并在确定校验成功时从奇偶寄存器的数据位读取寄存器数据,在确定校验失败时触发存算单元重新执行当前存算运算。
13.其进一步的技术方案为,一个存算单元中包括多个奇偶寄存器,当校验电路确定存在至少一个奇偶寄存器的寄存器数据错误时,触发存算单元重新执行当前存算运算。
14.其进一步的技术方案为,当一个存算单元中包括多个奇偶寄存器时,校验电路包括多个校验器组,每个奇偶寄存器分别对应一个校验器组,每个校验器组包括一个校验码产生器和一个校验码校验器;存在至少一个校验码校验器确定校验失败时触发存算单元重新执行当前存算运算。
15.其进一步的技术方案为,一个存算单元中包括多个奇偶寄存器时:
16.存在至少两个奇偶寄存器共用同一个校验码产生器,校验码产生器根据两个奇偶寄存器的寄存器数据生成各自的校验码并更新写入相应的校验位,且共用同一个校验码产生器的奇偶寄存器不同时写入寄存器数据;
17.和/或,存在至少两个奇偶寄存器共用同一个校验码校验器,校验码校验器根据每个奇偶寄存器的数据位和校验位的内容对相应的奇偶寄存器的寄存器数据进行数据校验,且共用同一个校验码校验器的奇偶寄存器不同时读出寄存器数据;存在至少一个校验码校验器确定校验失败时触发存算单元重新执行当前存算运算。
18.其进一步的技术方案为,奇偶寄存器包括k个数据位和1个校验位,校验电路基于奇偶校验法对奇偶寄存器进行数据校验:
19.在向奇偶寄存器中的数据位写入寄存器数据时,当二进制的k位寄存器数据中包括偶数个1时,校验码产生器生成校验码1并更新写入校验位;当二进制的k位寄存器数据中包括奇数个1时,校验码产生器生成校验码0并更新写入校验位;则校验码校验器在检测到奇偶寄存器的k+1位数据包括奇数个1时确定校验成功、在检测到奇偶寄存器的k+1位数据包括偶数个1时确定校验失败;
20.或者,在向奇偶寄存器中的数据位写入寄存器数据时,当二进制的k位寄存器数据中包括偶数个1时,校验码产生器生成校验码0并更新写入校验位;当二进制的k位寄存器数据中包括奇数个1时,校验码产生器生成校验码1并更新写入校验位;则校验码校验器在检测到奇偶寄存器的k+1位数据包括偶数个1时确定校验成功、在检测到奇偶寄存器的k+1位数据包括奇数个1时确定校验失败。
21.其进一步的技术方案为,每个校验码校验器具有对应的失效旗,每个校验码校验器在确定校验成功时保持失效旗为无效信号、在确定校验失败时将失效旗置为有效信号;
22.失效旗从无效信号切换到有效信号时产生中断信号并发送给同一个存算单元中的处理器,处理器接收到中断信号时重新执行当前存算运算并将所有失效旗重置为无效信号。
23.其进一步的技术方案为,失效旗的有效信号在延时预定时长后产生中断信号并发送给同一个存算单元中的处理器。
24.其进一步的技术方案为,存算单元中所有寄存器都为奇偶寄存器,或者部分寄存器为奇偶寄存器。
25.本技术的有益技术效果是:
26.本技术公开了一种抗单粒子翻转的存算架构fpga,该fpga中位于同一个子区域内的资源模块通过fpga内部的互连资源相连以实现一个存算单元,且存算单元中的寄存器替换为使用奇偶寄存器时,同时利用资源模块实现校验电路对奇偶寄存器进行校验,在校验确定寄存器数据错误时,及时触发存算单元重新执行存算运算,避免因为单粒子翻转失效带来的瞬态错误而导致的运算错误,从而可以在通过多存算单元实现并行的多核存算运算时提高运行可靠性,具有突出的数据处理效率、运算速度和运行可靠性。本技术存算架构fpga主要适用于电磁辐照粒子较少且持续时间较短的情况,单粒子翻转失效带来的瞬态错误出现的并不密集,在存算架构fpga执行多存算单元的并行存算运算的过程中,当检测到寄存器数据错误时就产生中断停止运算以消除影响,对存算运算的整体流程影响不大。
27.fpga内部形成的每个存算单元中的处理器和本地数据存储都在同一个子区域内,处理器在执行时只需读写邻近的本地数据存储中的数据,减少了处理器和本地数据存储之间传输数据所消耗的布线资源和互连资源,减少了数据传输延迟和能量损耗,提高了fpga的数据处理效率。另外fpga可以通过多个存算单元实现多核并行的存算运算,各个存算单元的处理器彼此间不会造成冲突,各个存算单元可以各自全速执行运算,不受存储带宽的影响,可以进一步提升fpga整体数据处理效率和运算速度。
附图说明
28.图1是本技术一个实例中存算架构fpga内部的资源模块的排布示意图以及划分得到的子区域的示意图。
29.图2是以各个存算单元中的指令寄存器均为奇偶寄存器为例时,基于图1实现的各个存算单元的电路结构示意图。
30.图3是本技术一个实施例中的校验电路与奇偶校验器和处理器的连接示意图。
31.图4是本技术一个实施例中的校验电路与多个奇偶校验器和处理器的一种连接示意图。
32.图5是本技术一个实施例中的校验电路与多个奇偶校验器和处理器的另一种连接示意图。
33.图6是图2中各个存算单元的本地存储单元连接到fpga片外的另一种电路结构图。
34.图7是图2中各个存算单元的本地存储单元连接到fpga片外的另一种电路结构图。
35.图8是图2中各个存算单元的本地存储单元连接到fpga片外的另一种电路结构图。
具体实施方式
36.下面结合附图对本技术的具体实施方式做进一步说明。
37.本技术公开了一种抗单粒子翻转的存算架构fpga,该存算架构fpga与常规的fpga一样,包含按照预定结构排列的若干个资源模块以及环于资源模块设置的互连资源,该预
定结构可以根据实际情况排布,比如以预定结构为目前主流通用的column-based结构为例,资源模块按照行列结构排布形成二维阵列架构,每一列排布相同类型的资源模块,每个资源模块的四周都排布互连资源,fpga内部包含的资源模块的类型包括可配置逻辑模块clb、可配置存储模块bram和可配置乘加模块dsp。可配置逻辑模块clb内含有查找表和寄存器等单元,能配置实现各种逻辑功能。可配置乘加模块dsp内含运算单元,能执行乘法、加法及多位逻辑门等多种运算。可配置存储模块bram内含块状存储单元,能实现各种宽度和深度的单双口存储及fifo存储。这部分结构沿用现有fpga内部的结构,本技术不再展开赘述。
38.本技术的存算架构fpga内按照预定结构排列的所有资源模块被划分为若干个子区域,每个子区域内包含一定量的资源模块。位于同一个子区域内的资源模块通过fpga内部的互连资源相连以实现一个存算单元,多个不同的子区域内的资源模块对应实现多个存算单元。
39.每个存算单元包括各自的处理器和本地存储单元,每个存算单元中的处理器经由互连资源连接该存算单元中的本地存储单元。每个存算单元中的本地存储单元用于存储该存算单元的指令和数据,每个存算单元中的处理器用于按照所连接的本地存储单元存储的指令和数据运算。
40.在一个实施例中,任意两个子区域内的资源模块实现的两个存算单元使用的指令集相同或不相同,使用相同指令集的两个存算单元的位宽相同或不相同。在本技术中,该存算架构fpga内部形成的存算单元可以形成包括risc、8051和6802在内的各种典型的通用8位处理器。
41.在一个实施例中,划分得到的任意两个子区域内包含的资源模块的数量和类型都相同,或者在另一个实施例中,划分得到的任意两个子区域内包含的资源模块的数量和类型存在至少一个不同,也即划分得到的多个子区域可以完全相同或不一定相同。另外该存算架构fpga内每个资源模块属于一个子区域,该存算架构fpga内所有资源模块都被划分到相应的子区域内,或者该存算架构fpga内部分资源模块被划分到相应的子区域内,也即对该存算架构fpga全局划分子区域或局部划分子区域都可以。比如在图1所示的例子中,fpga内部的资源模块被划分为8个子区域,每个子区域内包含相同数量和类型的资源模块,每个虚线框所框定的区域表示划分得到的一个子区域。
42.本技术对每个子区域内包含的资源模块的数量和类型不做限定,但是每个子区域内包含的资源模块的数量和类型要足以实现一个存算单元所需的器件,一个存算单元中的处理器主要基于dsp实现,一个存算单元中的存储单元主要基于bram来实现,除此之外,还需要结合一定数量的clb。
43.通过子区域内的资源模块实现的存算单元实际还会包括很多寄存器,比如指令寄存器和数据寄存器:处理器在从本地存储单元中读取指令时,本地存储单元中的指令先写入指令寄存器ir,再由指令寄存器ir写入处理器中。处理器在从本地存储单元中读取数据时,本地存储单元中的数据先写入数据寄存器dr,再由数据寄存器dr写入处理器中。相应的,处理器在向本地存储单元写入数据时,先将数据写入到数据寄存器dr,再由数据寄存器dr写入到本地存储单元。存算单元中除了包括上述指令寄存器和数据寄存器之外,还包括很多构成电路结构所必须的通用寄存器。在复杂的电磁环境中,寄存器会因为辐射线照射等原因受到单粒子翻转影响,单粒子翻转效应虽然是瞬态的、非破坏性的,但会改变寄存器
的内容,由此会造成持续性的功能错误,导致存算单元的运算产生错误。
44.因此为了提高可靠性,本技术的存算架构fpga中,存在至少一个存算单元中包括奇偶寄存器,且包括奇偶寄存器的存算单元中,还通过对应子区域内的资源模块实现有校验电路,校验电路用于连接奇偶寄存器并对奇偶寄存器进行校验,除此之外,校验电路还连接同一个存算单元中的处理器。这里的奇偶寄存器按照功能类型可以是数据寄存器、指令寄存器、通用寄存器中的任意一种,奇偶寄存器是与传统寄存器相对应的,传统寄存器仅包含若干个数据位,而奇偶寄存器除了包含数据位之外还包括若干个校验位,可以认为是对传统寄存器的替换升级,校验位的数量根据实际情况配置。存算单元中存在至少一个奇偶寄存器,一般根据实际需要,将存算单元的电路结构中容易受到单粒子翻转影响的传统寄存器替换为使用奇偶寄存器,但是在使用奇偶寄存器替换传统寄存器时,并不影响存算单元的逻辑功能。在一个实施例中,一个存算单元中所有寄存器都替换升级成采用奇偶寄存器,或者只有部分寄存器采用奇偶寄存器、其余不易受到单粒子翻转影响的寄存器仍然采用传统寄存器。在一个实施例中,该存算架构fpga形成的所有存算单元中都存在奇偶寄存器且包括校验电路。或者在另一个实施例中,该存算架构fpga形成的部分存算单元中都存在奇偶寄存器且包括校验电路。
45.比如基于图1对存算架构fpga内划分得到的8个子区域,该存算架构fpga内通过8个子区域内的资源模块分别实现8个存算单元,每个存算单元分别包括处理器和本地存储单元,每个存算单元中的指令寄存器ir均使用奇偶寄存器实现,每个存算单元都包括校验电路,则形成的8个存算单元的电路结构图如图2所示,图2由于没有详细示出完整电路结构,因此没有示出存算单元中的通用寄存器。
46.除了资源模块以及互连资源之外,本技术的存算架构fpga内部相比于常规fpga,还增加了额外的硬件资源实现的全局读写通道。每个存算单元中的本地存储单元通过全局读写通道与fpga片外进行数据传输,如图2所示。
47.本技术这种存算架构fpga内部形成多个存算单元,每个存算单元都以软核的形式支持独立的存算运算,因此fpga可以通过内部形成的多个存算单元共同实现一次多核的存算运算,包括:
48.1、经由全局读写通道从fpga片外将各个存算单元的存算指令和初始数据写入对应的存算单元的本地存储单元。
49.2、起动各个存算单元同时并行运算,每个存算单元中的处理器按照该存算单元的本地存储单元中的存算指令基于初始数据执行存算运算,并将产生的运算结果存储在该存算单元的本地存储单元中。
50.对于任意一个包含奇偶寄存器和校验电路的存算单元来说,在该存算单元执行一项存算运算的过程中,该存算单元中的校验电路对该存算单元中的奇偶寄存器进行数据校验,并在校验失败时确定奇偶寄存器的寄存器数据错误,若继续运算下去则会导致运算错误,从而触发该存算单元重新执行当前存算运算。由于单粒子翻转失效是瞬态、非破坏性的,因此重新执行当前存算运算时就可以修正由于受单粒子翻转影响而导致的寄存器数据错误,保证运行可靠性。
51.为了使得该存算单元能够重新执行当前存算运算,在本技术中,存算单元的存算指令和初始数据通过步骤1写入本地存储单元后,在处理器执行该项存算运算的过程中,本
地存储单元中储存的存算指令和初始数据始终保持不变,使得处理器重新按照本地存储单元中的存算指令基于初始数据执行就能重新执行当前存算运算。
52.在一个实施例中,请参考图3,任意一个存算单元中的校验电路包括校验码产生器和校验码校验器,在存算单元执行一项存算运算的过程中:
53.在向奇偶寄存器中的数据位写入寄存器数据data_reg时,校验码产生器根据寄存器数据data_reg生成对应的校验码data_par并更新写入该奇偶寄存器的校验位,由此该奇偶寄存器的数据位写有寄存器数据data_reg、校验位写有校验码data_par。当需要从奇偶寄存器中读取寄存器数据时,校验码校验器根据奇偶寄存器的数据位和校验位的内容进行数据校验,并在确定校验成功时从奇偶寄存器的数据位读取寄存器数据data_reg,在确定校验失败时触发存算单元重新执行当前存算运算。
54.校验码校验器根据奇偶寄存器的数据位和校验位的内容进行数据校验的方法,与校验码产生器根据寄存器数据data_reg生成校验码data_par的方法是相对应的。在一个实施例中,奇偶寄存器包括k个数据位和1个校验位,相比于传统寄存器只需增加一个校验位。则上述校验电路基于奇偶校验法对奇偶寄存器进行数据校验,包括:
55.(1)当对奇偶寄存器进行奇校验时,在向奇偶寄存器中的数据位写入寄存器数据时,当二进制的k位寄存器数据中包括偶数个1时,校验码产生器生成校验码1并更新写入校验位。当二进制的k位寄存器数据中包括奇数个1时,校验码产生器生成校验码0并更新写入校验位。
56.相应的,当需要从奇偶寄存器中读取寄存器数据时,校验码校验器在检测到奇偶寄存器的k+1位数据包括奇数个1时确定校验成功、在检测到奇偶寄存器的k+1位数据包括偶数个1时确定校验失败。
57.为了实现上述功能,在该实施例的一种实现方式中,校验码产生器采用k位同或门xnor实现,校验码校验器采用k+1位同或门xnor实现。
58.(2)当对奇偶寄存器进行偶校验时,在向奇偶寄存器中的数据位写入寄存器数据时,当二进制的k位寄存器数据中包括偶数个1时,校验码产生器生成校验码0并更新写入校验位。当二进制的k位寄存器数据中包括奇数个1时,校验码产生器生成校验码1并更新写入校验位。
59.相应的,当需要从奇偶寄存器中读取寄存器数据时,校验码校验器在检测到奇偶寄存器的k+1位数据包括偶数个1时确定校验成功、在检测到奇偶寄存器的k+1位数据包括奇数个1时确定校验失败。
60.为了实现上述功能,在该实施例的一种实现方式中,校验码产生器采用k位异或门xor实现,校验码校验器采用k+1位异或门xor实现。
61.无论采用上述哪种实现方式,在一个实施例中,校验码校验器在确定校验失败时,并不直接触发存算单元重新执行当前存算运算。每个校验码校验器具有对应的失效旗(failure flag),该失效旗默认为无效信号,当校验码校验器确定校验成功时保持对应的失效旗为无效信号,当校验码校验器确定校验失败时将对应的失效旗置为有效信号。失效旗从无效信号切换到有效信号时产生中断信号并发送给同一个存算单元中的处理器,处理器接收到中断信号时重新执行当前存算运算并将所有失效旗重置为无效信号。失效旗持续的有效信号仅产生一次中断信号,这种做法可以有效的避免重复产生中断信号的情况,若
不存在失效旗,则当校验码校验器连续验证失败后,在处理器重新执行当前存算运算之前,校验码校验器还是会连续产生中断信号发送给处理器。而通过失效旗的存在,当校验码校验器连续验证失败后,失效旗持续的有效信号也仅产生一次中断信号给处理器。
62.另外基于失效旗的存在,失效旗在从无效信号切换到有效信号时可以立即产生中断信号并发送给同一个存算单元中的处理器。或者,失效旗在从无效信号切换到有效信号并延时预定时长后产生中断信号并发送给同一个存算单元中的处理器,延时的该预定时长可以根据实际需要调节。
63.图3以及上述的实施例都以存算单元中的校验电路对单个奇偶寄存器的校验过程展开介绍,在一个实施例中,一个存算单元中会包括多个奇偶寄存器,则该存算单元中的校验电路用于对存算单元中的多个奇偶寄存器进行数据校验,当校验电路确定存在至少一个奇偶寄存器的寄存器数据错误时,即触发存算单元重新执行当前存算运算。
64.当一个存算单元中包括多个奇偶寄存器时,一种实现方式是,该校验电路包括多个校验器组,每个奇偶寄存器分别对应一个校验器组,每个校验器组包括一个校验码产生器和一个校验码校验器,每个校验器组与对应的奇偶寄存器的连接方式以及校验过程如上述实施例记载,该实施例不再赘述。比如在图4中,校验电路包括两个校验器组,分别对应两个奇偶寄存器。则当存在至少一个校验码校验器确定校验失败时触发存算单元重新执行当前存算运算,常见的实现方法如图4所示,各个校验器组中的校验码校验器的失效旗分别连接或门的一个输入端,任意一个失效旗从无效信号切换到有效信号时,或门的输出端输出中断信号并发送给同一个存算单元中的处理器。
65.当一个存算单元中包括多个奇偶寄存器时,另一种实现方式是,存在至少两个奇偶寄存器共用同一个校验码产生器,校验码产生器根据两个奇偶寄存器的寄存器数据生成各自的校验码并更新写入相应的校验位,且共用同一个校验码产生器的奇偶寄存器不同时写入寄存器数据,在多个奇偶寄存器不同时写数据时,可以在不影响功能实现的同时减少使用的校验码产生器的数量。和/或,存在至少两个奇偶寄存器共用同一个校验码校验器,校验码校验器根据每个奇偶寄存器的数据位和校验位的内容对相应的奇偶寄存器的寄存器数据进行数据校验,且共用同一个校验码校验器的奇偶寄存器不同时读出寄存器数据,在多个奇偶寄存器不同时读数据时,可以在不影响功能实现的同时减少使用的校验码校验器的数量。比如在图5中,对应于图4,这两个寄存器共用同一个校验码产生器和同一个校验码校验器,校验码产生器根据一个奇偶寄存器的data_reg1产生相应的data_par1写入奇偶寄存器的校验位,根据另一个奇偶寄存器的data_reg2产生相应的data_par2写入奇偶寄存器的校验位。校验码产生器根据每个奇偶校验器的数据位和校验位的内容进行数据校验,并在根据任意一个奇偶校验器的数据位和校验位的内容确定验证失败时将对应的失效旗置为有效信号,触发失效旗向处理器发送中断信号,与上述实施例实现方式类似。在这种情况中,当存算单元内存在多个校验码产生器时,与上述实施例相同的,当存在至少一个校验码校验器确定校验失败时触发存算单元重新执行当前存算运算,实现方式与上述实施例相同,该实施例不再赘述。
66.3、经由全局读写通道将各个存算单元的本地存储单元中的运算结果读出至fpga片外。
67.在此基础上,根据实际需要,该存算架构fpga还可以通过内部实现的存算单元依
次实现多次存算运算直至完成全部运算。且该存算架构fpga在实现任意一次存算运算时,可以使用全部或部分存算单元,且实现各次存算运算时使用到的存算单元可以相同也可以不同。
68.由于每个存算单元的处理器和本地存储单元都在同一个子区域内,处理器在执行时只需读写邻近的本地存储单元中的存算指令和初始数据,因此减少了处理器和本地存储单元之间传输数据所消耗的布线资源和互连资源,减少了数据传输延迟和能量损耗,提高了该存算架构fpga的数据处理效率。另外在多核场景中,若多个运算核同时读写同一个主存储器,则主存储器的读写带宽形成瓶颈,制约了数据处理效率,这一问题在高性能计算中会尤为明显,对于支持人工智能或机器学习应用的fpga来说,fpga内部一般拥有大量的较为简单的运算核,运算核的数量会超过100个,对主存储器的读写带宽的需求更大,问题更为突出。而本技术的存算架构fpga同样是多核场景,由于各个存算单元内的处理器各自读写本地存储单元,而不是所有处理器都统一读写同一个存储器,因此各个存算单元的处理器彼此间不会造成冲突,各个存算单元可以各自全速执行运算,不受存储带宽的影响,有利于提升整体数据处理效率和运算速度。使得本技术的存算架构fpga能够适用于包含数量较多的存算单元的场景,即便存算单元的数量超过100个也能有较高的运算速率,从而能更好的支持人工智能和机器学习的场景。
69.在一个实施例中,当本技术的存算架构fpga内部的资源模块排布所采用的预定结构为column-based结构时,bram模块占用一列或多列,而各个存算单元中的本地存储单元都基于bram模块来实现,因此用于实现各个存算单元中的本地存储单元的bram模块位于一列或多列,用于实现存算单元中的本地存储单元、且位于同一列的若干个bram模块经由同一个全局读写通道与该存算架构fpga片外的数据传输,该存算架构fpga片外可以经由每个全局读写通道与该全局读写通道连接的任意一个本地存储单元进行数据交换。基于此,本技术提供如下两种方法实现各个存算单元中的本地存储单元与该存算架构fpga片外的数据传输:
70.在一个实施例中,用于实现存算单元中的本地存储单元、且位于同一列的若干个bram模块通过同一个全局读写通道连接fpga的一个片上读写接口与fpga外部进行数据传输,不同的全局读写通道分别连接fpga的不同的片上读写接口。在图2所示的例子中,该存算架构fpga内部形成8个存算单元,存算单元1~存算单元4中的本地存储单元通过位于同一列的bram模块实现,这4个存算单元的本地存储单元通过全局读写通道1连接该存算架构fpga的片上读写接口1实现与该存算架构fpga片外的数据传输。存算单元5~存算单元8中的本地存储单元通过位于同一列的bram模块实现,这4个存算单元的本地存储单元通过全局读写通道2连接该存算架构fpga的片上读写接口2实现与fpga片外的数据传输。
71.上述实施例提供的方法往往需要占用fpga的多个片上读写接口,而fpga的片上读写接口资源较为宝贵,因此在另一个实施例中,只需占用该存算架构fpga的一个片上读写接口,用于实现软核处理器中的本地存储单元、且位于同一列的若干个bram模块通过同一个全局读写通道连接多路选择器mux的一个活动端,多路选择器mux的固定端连接fpga的片上读写接口,通过选通多路选择器mux的各个活动端可以选通各个全局读写通道,可以使得fpga片外经由选通的全局读写通道与该全局读写通道连接的任意一个本地存储单元进行数据交换。比如在图6所示的结构图中,对应于图2,存算单元1~存算单元4中的本地存储单
元通过全局读写通道1连接多路选择器mux的一个活动端,存算单元5~存算单元8中的本地存储单元通过全局读写通道2连接多路选择器mux的另一个活动端,多路选择器mux的固定端连接该存算架构fpga的片上读写接口实现与片外的数据传输,则对比于图2,该实施例的方法只需占用fpga的一个片上读写接口。需要说明的是,图6主要为了展示本地存储单元连接到该存算架构fpga片外的结构,因此省略了各个存算单元中的校验电路和奇偶寄存器,后续各个附图也类似省略。
72.按照传统的冯诺依曼架构,每个存储单元中的指令和数据混合存储,但是为了提高数据处理效率,在一个实施例中,按照哈佛型结构,对每个存储单元的指令和数据分开独立存储,则一个存算单元中的本地存储单元包括指令本地存储单元和数据本地存储单元,指令本地存储单元用于存储存算单元的指令,数据本地存储单元用于存储存算单元的数据,使得处理器操作时指令和数据互不干扰,提高数据处理效率。指令本地存储单元由至少一个bram模块实现,数据本地存储单元由至少一个bram模块实现,因此基于此,常见的一个子区域包含至少一个dsp、两个bram和300个clb。
73.当每个存算单元中的本地存储单元包括指令本地存储单元和数据本地存储单元时,任意两个存算单元的指令本地存储单元的存储大小相同或不相同,任意两个存算单元的数据本地存储单元的存储大小相同或不相同。
74.当每个存算单元中的本地存储单元包括指令本地存储单元和数据本地存储单元时:(1)在一个实施例中,一个存算单元中的指令本地存储单元和数据本地存储单元共用全局读写通道进行数据传输,则用于实现存算单元中的指令本地存储单元和数据本地存储单元、且位于同一列的若干个bram模块经由同一个全局读写通道与该存算架构fpga片外的数据传输。在该实施例中,全局读写通道又可以按照图2所示实施例的方法连接到该存算架构fpga的片上读写接口,或者按照图6所示实施例的方法连接到多路选择器mux的一个活动端。以采用图2所示的结构为例,则如图7所示,存算单元1~存算单元4中的指令本地存储单元和数据本地存储单元都连接到全局读写通道1,存算单元5~存算单元8中的指令本地存储单元和数据本地存储单元都连接到全局读写通道2。(2)或者在另一个实施例中,指令本地存储单元和数据本地存储单元分别使用各自的全局读写通道,一个存算单元中的指令本地存储单元经由指令全局读写通道传输指令、数据本地存储单元经由数据全局读写通道传输数据。则用于实现存算单元中的指令本地存储单元、且位于同一列的若干个bram模块经由同一个指令全局读写通道与该存算架构fpga片外进行数据传输,用于实现存算单元中的数据本地存储单元、且位于同一列的若干个bram模块经由同一个数据全局读写通道与该存算架构fpga片外的数据传输。同样的在该实施例中,每个指令全局读写通道以及数据全局读写通道又可以按照图2所示实施例的方法连接到该存算架构fpga的片上读写接口,或者按照图6所示实施例的方法连接到多路选择器mux的一个活动端。以采用图6所示的结构为例,则如图8,存算单元1~存算单元4中的指令本地存储单元都连接到指令全局读写通道1,存算单元1~存算单元4中的数据本地存储单元都连接到数据全局读写通道1,存算单元5~存算单元8中的指令本地存储单元都连接到指令全局读写通道2,存算单元5~存算单元8中的数据本地存储单元都连接到数据全局读写通道2,指令全局读写通道1、数据全局读写通道1、指令全局读写通道2和数据全局读写通道2分别连接多路选择器mux的一个活动端。
75.在另一个实施例中,每个子区域内的资源模块还用于实现对应的一个存算单元的
控制信号和状态信号,控制信号用于控制该存算单元的运行状态,状态信号用于展示该存算单元的运行状态。存算单元的控制信号和状态信号与fpga内部其他电路结构相连,或者存算单元的控制信号和状态信号连接到fpga外部。也即每个存算单元在进行存算时所需的控制信号和状态信号都由相应的子区域内的资源模块实现。
76.每个存算单元的控制信号包括使能信号、时钟信号、复位信号和中断信号中的至少一种,使能信号用于控制对应的存算单元执行指令或停止执行指令,复位信号用于重置该存算单元,中断信号提供外部中断能力。任意两个存算单元的控制信号相同或不同。
77.以上所述的仅是本技术的优选实施方式,本技术不限于以上实施例。可以理解,本领域技术人员在不脱离本技术的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本技术的保护范围之内。
技术特征:
1.一种抗单粒子翻转的存算架构fpga,其特征在于,所述存算架构fpga内部包括按照预定结构排列的若干个资源模块、环于资源模块设置的互连资源以及额外的硬件资源实现的全局读写通道,位于同一个子区域内的资源模块通过所述fpga内部的互连资源相连以实现一个存算单元,每个存算单元包括处理器和本地存储单元,每个存算单元的本地存储单元用于存储所述存算单元的指令和数据,每个存算单元中的处理器经由互连资源连接同一个存算单元中的本地存储单元并按照所述本地存储单元存储的指令和数据运算;多个不同的子区域内的资源模块对应实现多个存算单元,且每个存算单元中的本地存储单元通过全局读写通道与所述fpga片外进行数据传输;存在至少一个存算单元中还包括校验电路,所述存算单元中包括至少一个寄存器为奇偶寄存器,所述奇偶寄存器包括数据位和校验位;在所述存算单元执行一项存算运算的过程中,所述存算单元中的校验电路对所述存算单元中的奇偶寄存器进行数据校验,并在校验失败时确定奇偶寄存器的寄存器数据错误,触发所述存算单元重新执行当前存算运算。2.根据权利要求1所述的存算架构fpga,其特征在于,所述存算单元在执行一项存算运算时,存算指令和初始数据经由所述全局读写通道写入所述存算单元的本地存储单元,所述存算单元中的处理器按照所述存算指令基于所述初始数据执行存算运算,且在执行存算运算的过程中,所述本地存储单元中储存的存算指令和初始数据保持不变;当确定奇偶寄存器的寄存器数据错误时,所述存算单元中的处理器重新按照所述存算指令基于所述初始数据执行存算运算。3.根据权利要求1所述的存算架构fpga,其特征在于,所述校验电路包括校验码产生器和校验码校验器,在所述存算单元执行一项存算运算的过程中:在向所述奇偶寄存器中的数据位写入寄存器数据时,所述校验码产生器根据所述寄存器数据生成对应的校验码并更新写入所述校验位;所述校验码校验器根据所述奇偶寄存器的数据位和校验位的内容进行数据校验,并在确定校验成功时从所述奇偶寄存器的数据位读取寄存器数据,在确定校验失败时触发所述存算单元重新执行当前存算运算。4.根据权利要求3所述的存算架构fpga,其特征在于,一个存算单元中包括多个奇偶寄存器,当所述校验电路确定存在至少一个奇偶寄存器的寄存器数据错误时,触发所述存算单元重新执行当前存算运算。5.根据权利要求4所述的存算架构fpga,其特征在于,当一个存算单元中包括多个奇偶寄存器时,所述校验电路包括多个校验器组,每个奇偶寄存器分别对应一个校验器组,每个校验器组包括一个校验码产生器和一个校验码校验器;存在至少一个校验码校验器确定校验失败时触发所述存算单元重新执行当前存算运算。6.根据权利要求4所述的存算架构fpga,其特征在于,一个存算单元中包括多个奇偶寄存器时:存在至少两个奇偶寄存器共用同一个校验码产生器,所述校验码产生器根据两个奇偶寄存器的寄存器数据生成各自的校验码并更新写入相应的校验位,且共用同一个校验码产生器的奇偶寄存器不同时写入寄存器数据;和/或,存在至少两个奇偶寄存器共用同一个校验码校验器,所述校验码校验器根据每个奇偶寄存器的数据位和校验位的内容对相应的奇偶寄存器的寄存器数据进行数据校验,
且共用同一个校验码校验器的奇偶寄存器不同时读出寄存器数据;存在至少一个校验码校验器确定校验失败时触发所述存算单元重新执行当前存算运算。7.根据权利要求3所述的存算架构fpga,其特征在于,所述奇偶寄存器包括k个数据位和1个校验位,所述校验电路基于奇偶校验法对所述奇偶寄存器进行数据校验:在向所述奇偶寄存器中的数据位写入寄存器数据时,当二进制的k位寄存器数据中包括偶数个1时,所述校验码产生器生成校验码1并更新写入所述校验位;当二进制的k位寄存器数据中包括奇数个1时,所述校验码产生器生成校验码0并更新写入所述校验位;则所述校验码校验器在检测到所述奇偶寄存器的k+1位数据包括奇数个1时确定校验成功、在检测到所述奇偶寄存器的k+1位数据包括偶数个1时确定校验失败;或者,在向所述奇偶寄存器中的数据位写入寄存器数据时,当二进制的k位寄存器数据中包括偶数个1时,所述校验码产生器生成校验码0并更新写入所述校验位;当二进制的k位寄存器数据中包括奇数个1时,所述校验码产生器生成校验码1并更新写入所述校验位;则所述校验码校验器在检测到所述奇偶寄存器的k+1位数据包括偶数个1时确定校验成功、在检测到所述奇偶寄存器的k+1位数据包括奇数个1时确定校验失败。8.根据权利要求3所述的存算架构fpga,其特征在于,每个所述校验码校验器具有对应的失效旗,每个所述校验码校验器在确定校验成功时保持失效旗为无效信号、在确定校验失败时将失效旗置为有效信号;失效旗从无效信号切换到有效信号时产生中断信号并发送给同一个存算单元中的处理器,所述处理器接收到中断信号时重新执行当前存算运算并将所有失效旗重置为无效信号。9.根据权利要求8所述的存算架构fpga,其特征在于,失效旗的有效信号在延时预定时长后产生中断信号并发送给同一个存算单元中的处理器。10.根据权利要求1所述的存算架构fpga,其特征在于,所述存算单元中所有寄存器都为奇偶寄存器,或者部分寄存器为奇偶寄存器。
技术总结
本申请公开了一种抗单粒子翻转的存算架构FPGA,涉及FPGA技术领域,该存算架构FPGA中位于同一个子区域内的资源模块通过FPGA内部的互连资源相连以实现一个存算单元,且存算单元中的寄存器替换为使用奇偶寄存器,利用资源模块实现校验电路,在存算运算过程中利用校验电路对奇偶寄存器进行校验,在校验确定寄存器数据错误时,及时触发存算单元重新执行该项存算运算,避免因为单粒子翻转失效带来的瞬态错误而导致的运算错误,从而可以在通过多存算单元实现并行的多核存算运算时保证运行的准确性,具有突出的数据处理效率、运算速度和运行可靠性。可靠性。可靠性。
技术研发人员:单悦尔 张艳飞 徐彦峰
受保护的技术使用者:无锡中微亿芯有限公司
技术研发日:2023.06.27
技术公布日:2023/9/16
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/