基于B/S 结构的多核微处理器实速故障诊断技术

2023-11-21 14:12高吉普徐长宝辛明勇陈军健刘德宏
电子设计工程 2023年22期
关键词:堆栈一致性故障诊断

高吉普,徐长宝,辛明勇,陈军健,刘德宏

(1.贵州电网有限责任公司电力科学研究院,贵州贵阳 550002;2.南方电网数字电网研究院有限公司,广东 广州 510663)

多核微处理器在数据并行处理方面,有很大的优势。该处理器通过加载和存储指令对共享主存进行访问,能够保持完整的地址空间,且每个微处理器都具备独立专用缓存模块。由于IC 设计技术和制造技术的不断发展,芯片集成设计变得越来越复杂,晶片体积越来越小是造成芯片制造缺陷的主要原因,而故障检测仅仅局限于对芯片进行筛选,无法及时发现故障问题,为此,各大学者提出了故障诊断技术。文献[1]提出了BC 网络的g-超条件诊断度技术,在每一个由非故障节点组成的分支中至少有g+1 个顶点时,系统能一次性识别出故障节点数量,从而能够对异构环境下系统互连网的自故障诊断进行精确测量;文献[2]提出了强鲁棒性开路故障诊断策略,通过构造一种非对称负载和非平衡空载系统,结合改进归一化平均电流派克矢量模型,实现故障诊断。然而这两种技术受到多核微处理器系统并发不确定性影响,导致即使利用同一个测试用例进行多次测试,也无法保证所有测试用例都能得到充分测试。因此,提出了一种基于B/S结构的多核微处理器实速故障诊断技术。

1 故障诊断原理分析

多核微处理器是目前应用最多的处理器,其包括两个以上完整的计算机引擎,通过控制总线的全部指令信号,能够支持多核微处理器同时在线运行。通过分析多核微处理器故障诊断原理,设计详细的诊断流程。

1.1 基于B/S结构的多核微处理器

使用的一种基于B/S 结构的多核微处理器,其结构是在信息技术不断进步和发展的背景下产生的,弥补了传统C/S 体系结构的缺陷。

基于B/S结构的多核微处理器结构图如图1所示。

图1 基于B/S结构的多核微处理器

由图1 可知,该处理器主要是由表示层、业务层和数据层组成的,通过任务分配完成网络分析与挖掘[3]。该过程涉及到大量的数学运算,为提高多核微处理器性能,浏览器端负责内容的显示和交互,服务器端负责复杂的数据计算和逻辑处理[4]。采用B/S 结构的多核微处理器实现了“分而治之”的策略,线程化应用程序通过分解模式,在给定时间使用多个执行内核执行更多的任务[5]。

1.2 故障诊断原理

1.2.1 返回地址堆栈

由于呼叫指令CALL 与IP 内容修改指令是一一对应的,所以返回地址堆栈是一个硬件堆栈,主要用于存储返回的目标地址信息。因此,当呼叫指令CALL 出现时,多核微处理器的处理程序将会发出下一条呼叫指令,并将返回的目标地址信息压入返回地址堆栈顶部[6]。当IP 内容修改指令出现时,多核微处理器会自动弹出返回地址堆栈顶部的目标地址,如果返回的目标地址无法在所有返回地址中找到,那么说明多核微处理器的处理过程失败[7]。

1.2.2 面向返回编程

面向返回编程可以对ret-to-lib 攻击进行诊断,其中攻击者重用整个LIBC 库,在故障诊断过程中,从存储器(目标程序或者共享库)中找到一段代码,然后构建一个有效的插件把一系列Gadget 连接起来[8]。

图2 显示了基于B/S 结构的多核微处理器的故障诊断原理。

图2 基于B/S结构的多核微处理器的故障诊断原理

由图2 可知,在Return 指令中,可以使用库文件中的Gadget 链接执行故障排除操作[9]。

2 多核微处理器实速故障诊断

2.1 死锁故障诊断

死锁场景是在开发多核微处理器时,验证芯片是否能够正常工作时出现的场景,由共享响应通道引起的死锁场景如图3 所示。

图3 由共享响应通道引起的死锁场景

由图3 可知,E1-E8 表示路由器,H1-H8 表示跟踪节点,R1-R8 表示推送节点,S1-S8 表示请求节点。WBD 技术的应用改善了替代运营协议的性能,由于数据需要返回到WBD 事务,因此必须为传输数据分配通道[10]。

在执行期间,写回请求由跟踪节点到请求节点的响应通道发送。例如,H2 通过响应通道将回写请求发送到S2[11]。因为多核微处理器支持请求节点,所以直接将数据推给请求节点,因此,该过程存在通道共享:举例来说,S4 将读取的响应包推到S6,而且还使用R2 到R3 响应通道[12]。在共享信道时会出现死锁可能,因此,在芯片模拟仿真过程中的确出现了死锁。据此,设计了死锁故障诊断步骤如下:

步骤一:通过动态配置的缓存一致性协议,可以应用到不同的多核微处理器中。根据多核微处理器结构,对功能和性能的要求进行功能容错和性能调整。在可配置协议的基础上,引入了微操作机制的分布式目录控制器[13-14]。图4 展示了分布式目录控制器的总体结构。

图4 分布式目录控制器的总体结构

步骤二:目录是通过硬件工作后生成的,优点是速度快,缺点是很难修改。引入微操作机制后,通过配置一致性协议,能够通过改变相关程序来改变信号传输路径。

步骤三:死锁通过监视跟踪节点和请求节点之间的读写事务等待时间,判断是否发生了死锁。

步骤四:为了提高性能,跟踪节点和请求节点的默认协议为WBD 协议。若等待时间超过某一阈值,跟踪节点和请求节点之间的链路就会阻塞,还可能出现死锁。

步骤五:分布式目录控制器进入调试模式,将写回数据(WBD)转换为请求协议,启动重传机制后,逐步清除阻塞链。在释放死锁之后,它会恢复到正常模式和WBD,以高性能形式继续诊断[15]。

2.2 链路故障诊断

对于链路故障问题,需通过测试能够确定多核微处理器是否存在故障问题[16]。

以单输出响应为例,可将电路输入响应序列集合描述为:

式中,xn表示输入响应序列。

结合输出向量函数,构建电路输出响应表达式:

式中,f(·)表示输出函数。

在输入激励作用下,有:

式中,an表示激励序列,λ表示激励参数。

对于故障,存在:

当计算结果符合式(4)时,表明链路有故障,通过测试代码λ可以发现故障。

3 实 验

为了验证提出的基于B/S 结构的多核微处理器实速故障诊断技术研究合理性,进行实验验证分析。

3.1 实验设置

在32 位Ubuntu14.04 操作系统上建立了ROP 攻击的实验平台,以验证面向返回转换的ROP 攻击的效果。

3.1.1 参数设置

不同ROP 攻击的诊断周期决定了诊断的准确性,这取决于其链长。因此,小型链长一般为10~15 hops。设置Gadget 链的长度为15 hops。为减少误报和漏报现象,实现最佳诊断效果,将诊断周期设为6 s 或9 s,并进行对比实验。

3.1.2 ROP真实攻击诊断

在Ubuntu 下,用ROP 漏洞选择四个小程序,要求一串较长的输入参数,该程序需要GCC 编译为二进制可以执行的文件。四个程序漏洞说明如表1所示。

表1 程序漏洞说明

用ROPgadget 构建了30 条Gadget 链,这30个攻击脚本是从数据库中选择的。每一条Gadget 链的长度均超过15 hops,总共进行了30 次攻击。

3.2 性能评估

为了评估所研究方法在真实操作中的总体性能,使用UnixBench5.1.3 对多核微处理器性能进行评估。在ROP 攻击下,选用UnixBench 对基于B/S 结构的多核微处理器进行整体性评估。将性能测试工具应用到Linux 系统中,测试的项目包括字符串处理、浮点运算、调用、管道吞吐、管道上下文交互、函数吞吐、文件读写、脚本测试。对于这些项目,使用多核微处理器的处理时间如表2 所示。

表2 测试项目处理时间对比分析

由表2 可知,在ROP 攻击下,诊断项目处理速率均在可接受范围之内。

基于此,分别使用g-超条件诊断度技术、强鲁棒性开路故障诊断策略和基于B/S 结构的多核微处理器实速故障诊断技术,对比分析项目处理速率,对比结果如图5 所示。

图5 三种诊断技术项目处理时间对比

由图5 可知,使用g-超条件诊断度技术处理除了字符串项目外,其余均超过标准时间,其中处理调用项目所耗费时间最长为83 s;使用强鲁棒性开路故障诊断策略处理除了字符串项目外,其余均超过标准时间,其中处理调用项目所耗费时间最长为79 s;使用基于B/S 结构的多核微处理器实速故障诊断技术,除了管道吞吐项目比标准时间长1 s 外,其余所有项目处理时间均在标准时间范围内。

4 结束语

在B/S 结构的基础上,提出了多核微处理器实时故障诊断技术,通过一致性协议能够显著提高不同架构下系统的灵活性。由实验结果可知,该技术具有良好的诊断效果。然而,由于不同的配置不能形成统一的缓存一致性协议,导致了极大的死锁风险。为此,需要设置一致性缓存协议,以达到灵活配置,以优化更大的空间,保证一致性协议的使用更加合理。

猜你喜欢
堆栈一致性故障诊断
关注减污降碳协同的一致性和整体性
注重教、学、评一致性 提高一轮复习效率
IOl-master 700和Pentacam测量Kappa角一致性分析
嵌入式软件堆栈溢出的动态检测方案设计*
基于堆栈自编码降维的武器装备体系效能预测
因果图定性分析法及其在故障诊断中的应用
基于事件触发的多智能体输入饱和一致性控制
基于LCD和排列熵的滚动轴承故障诊断
基于WPD-HHT的滚动轴承故障诊断
高速泵的故障诊断