1. 引言
随着现场可编程门阵列(FPGA)应用领域的扩展以及重要性和复杂程度的提高,其可靠性安全性问题变得越来越突出。安全关键系统对FPGA的可靠性安全性有很高的要求,因此,需要对FPGA软件可靠性安全性的评价技术进行研究。
一般使用基于层次分析法的传统权重评价方法来进行FPGA软件可靠性安全性评价,这种方法虽然比较直观、易于理解,但是适应性不强,一旦度量模型或者度量元发生变化,需要重新计算各个度量元的权重,使用起来不够灵活。为了克服以上缺点,本文提出了一种基于BP神经网络的FPGA软件可靠性安全性评价方法,该方法与传统权重评价方法相比具有诸多的优越性。
2. FPGA软件可靠性安全性度量模型
FPGA的全生命周期包括下列过程:系统要求过程、需求分析过程、设计过程、实现与集成过程、确认过程、测试与验证过程、交付与验收过程、运行与维护过程 [1] ,如图1所示。
Figure 1. FPGA full life cycle process
图1. FPGA全生命周期过程
FPGA软件可靠性安全性工作贯穿于整个FPGA开发全生命周期。其中,需求分析过程、设计过程、实现与集成过程、测试与验证过程是本文进行分析的重点,后续研究内容主要围绕这四个过程,建立FPGA软件可靠性安全性度量模型,并从每个过程中提取FPGA软件可靠性安全性度量元。
1) 需求分析过程:从FPGA的可靠性安全性角度考虑,将FPGA的可靠性安全性需求分成性能需求、功能需求、数据需求、接口需求等。FPGA可靠、安全工作的前提是保证可靠性安全性需求的正确性和完整性。
2) 设计过程:设计过程包括概要设计过程和详细设计过程。对FPGA的设计过程进行可靠性安全性分析的过程,就是要分析其设计是否满足可靠性安全性需求。分析对象包括FPGA的接口设计、通讯设计、模块设计、时钟使用、IP核使用、冗余容错设计等。在FPGA设计过程中应严格遵守可靠性安全性设计准则,从而有效地保证FPGA的可靠性安全性。此外,还应建立设计过程与需求分析过程的追踪关系,确保所有可靠性安全性需求都在设计过程中得以实现。
3) 实现与集成过程:在实现与集成过程中依据FPGA详细设计说明开展设计输入、逻辑综合、布局布线,最终生成可下载的配置文件,并固化至板内配置存储器中 [2] 。
4) 测试与验证过程:测试与验证过程是提高FPGA软件可靠性安全性的重要阶段,在此阶段会对FPGA软件进行静态测试和动态测试,测试工作的质量会影响FPGA投入使用后能否可靠、安全工作,因此“可靠性安全性测试充分性”和“可靠性安全性测试覆盖性”这两个度量非常重要,测试是否充分、全面,关系到FPGA软件可靠性安全性是否得到保证。
根据以上讨论,基于FPGA软件开发全生命周期的可靠性安全性度量模型如图2所示。
Figure 2. FPGA software reliability security measurement model
图2. FPGA软件可靠性安全性度量模型
由于此次度量元所涉及的计算参数需要收集较多数据,因此需要通过多种手段来获取度量数据,主要包括:审查、测试和专家打分 [3] 。基于以上度量模型及FPGA评测过程中遇到的问题和积累的经验,提取出FPGA软件可靠性安全性度量元,并给出了每个度量元的取值方式。对某箭上FPGA软件各个可靠性安全性度量元的度量值取值,邀请多个可靠性安全性评价专家根据可靠性安全性度量值对该FPGA软件的可靠性安全性进行总体评价并打分,得分的平均值为0.87。该得分能够较为客观地反映这一FPGA软件的可靠性安全性总体水平。
3. 神经网络评价方法简介
本研究采用相对于传统权重评价方法具有更多优越性的神经网络评价方法对FPGA软件可靠性安全性进行综合评价。BP (back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。BP神经网络由输入层、隐含层、输出层构成 [4] 。
BP网络算法的训练过程分为两个阶段:第一个阶段是输入信号正向传播阶段,输入已知训练样本,通过设置的网络结构和前一次迭代的权值和阈值,从网络第一层向后计算各神经元的输出;第二个阶段是误差信号逆向传播阶段,对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响,据此对各权值和阈值进行修改 [5] 。BP神经网络可以包含不同数量的隐含层。实践表明,增加隐含层数可以减小误差、提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。而误差的减小和精度的提高实际上也可以通过增加隐含层中的神经元结点数来获得,其训练效果也比增加层数更容易观察和调整。本文采用单隐含层BP神经网络。
4. 基于BP神经网络的可靠性安全性评价方法
BP神经网络的输入和输出层的神经元结点数,是由输入和输出向量的维数确定的。这里构造的BP神经网络用来进行FPGA软件可靠性安全性评价,将表1中的50个FPGA软件安全性度量元作为输入参数即网络的影响因子,因此输入层的神经元结点数为50;网络输出为FPGA软件可靠性安全性的评价结果,因此输出层的神经元结点数为1。此外,将隐含层神经元结点数设定为20个。隐含层激活函数选用双曲正切Sigmoid函数tansig,输出层激活函数选用对数Sigmoid函数logsig,网络训练算法选用LM (Levenberg-Marquardt)算法。
设置训练过程中两次显示之间的训练间隔步数为1,训练次数为1000,训练目标误差为1.0 × 10−5,选择50个FPGA软件的度量值作为样本对神经网络进行训练,经过34步迭代训练后,网络达到预先设置的目标误差。网络训练的性能曲线如图3所示。
Figure 3. Performance curve of network training
图3. 网络训练的性能曲线
为了检测训练后神经网络评价的效果,将50个可靠性安全性度量元的值都设置为同一数值,分别为0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9,并检测神经网络对于FPGA软件可靠性安全性的评价结果和预期评价结果之间的误差,如图4所示。从误差曲线可以看出,神经网络在测试点的误差都很小,说明网络通过训练已经达到了较高的精度。
使用该方法对FPGA进行可靠性安全性评价,得到的评价结果约为0.854。由于BP神经网络创建函数newff对神经网络进行初始化时,所赋予的初始权值和阈值都是随机的,所以每次的训练结果和评价结果都不完全相同。通过对同一FPGA软件的可靠性安全性进行多次训练和评价,发现每次的评价结果都很相近,将10次试验结果进行比对,10次评价结果的平均相对误差仅为1.7%,其中最大相对误差为3.9%,最小相对误差接近于0。在FPGA软件可靠性安全性评价中,这样的误差范围是完全可以接受的。试验结果表明,该评价网络具有较高的稳定性和准确性。
Figure 4. The error curve of the network at the test point
图4. 网络在测试点的误差曲线
5. 神经网络评价方法和传统权重评价方法对比分析
与传统权重评价方法对比,神经网络评价方法概括起来主要有以下三个方面的特点:
第一,准确性高。传统权重评价方法主观性较强,容错率较低,需要大量倚靠人为干预。基于BP神经网络的FPGA软件可靠性安全性评价方法,通过对已有样本模式的学习,获得了评价专家的知识和经验,以后当需要对FPGA软件可靠性安全性进行评价时,只要给经过训练的BP神经网络输入相应的可靠性安全性度量元数据矩阵,BP神经网络会再现专家的知识与经验,即时做出响应,不需要人为干预,从而可以避免评价过程中的人为失误,评价准确性高。伴随着FPGA软件可靠性安全性度量模型和度量元的不断完善,学习训练样本不断增加,基于BP神经网络的FPGA软件可靠性安全性评价模型的系统误差能够达到任何精度要求,并且能够充分逼近任意复杂的、具有收敛性的非线性函数 [6] 。同时,该网络系统对噪声数据不敏感,具有很强的容错能力,当网络中部分神经元损坏时,不会对系统的整体性能造成影响,这些都大大提高了神经网络评价方法的准确性。
第二,适应性强。传统权重评价方法难以复用,其模型几乎只能适用在单个场景下。基于BP神经网络的FPGA软件可靠性安全性评价模型并不是固定的、一成不变的,它需要持续的自身改进以提高综合评价效果。当FPGA软件可靠性安全性的训练样本增加时,BP神经网络不但能够记忆原来的数据信息,还能够根据新增样本数据做出适当调整,从而使有关FPGA软件可靠性安全性评价的映射关系能够更好地被描述。利用输入输出模式将FPGA软件可靠性安全性评价的数据信息传递到网络中,通过学习算法筛选出FPGA软件可靠性安全性评价样本数据的信息特征,调整BP神经网络连接权重并保存在整个神经网络中,在多次训练后使神经网络趋于稳定。随着时间的推进和样本数量的增加,神经网络能够根据相关数据的实际变化情况实施动态跟踪评价,使神经网络评价方法具有很强的适应性。
第三,实用性好。传统权重评价方法如专家打分法工序繁多,人力物力消耗大且不易控制管理。BP神经网络具有很强的自我学习能力,使得神经网络评价方法使用起来更加快捷、灵活、方便。使用MATLAB图形用户界面开发的FPGA软件可靠性安全性评价工具能够对神经网络进行训练并输出FPGA软件可靠性安全性评价结果,操作过程简单快捷,从而保证了神经网络评价方法的实用性。
6. 结论
本论文研究了BP神经网络在FPGA软件可靠性安全性评价中的应用,首先通过计算和试验,确定了网络结构,然后使用大量样本训练该网络,得到了可以用来进行FPGA软件可靠性安全性评价的BP神经网络,该网络精度较高,可以准确地对FPGA软件可靠性安全性进行定量评价。并在MATLAB GUI中进行了FPGA软件可靠性安全性评价工具的开发,从而极大地提高了该评价网络的工作效率。通过将神经网络评价方法和传统权重评价方法进行比较,证明了神经网络评价方法具有更好的准确性、适应性和实用性。