摘要

随着半导体行业向纳米级方向发展,多核架构已成为主流趋势。然而,这一趋势也使得多核处理器面临诸多挑战,在一定程度上限制了其性能发挥。目前,汽车行业中的混合安全关键型系统普遍采用多核处理器。为满足新兴自动驾驶等级的需求,这些系统所包含的软件代码行数可能高达数百万行,这无疑增加了设计的复杂性。同时,遵循 ISO 26262 安全标准进一步加剧了这种复杂性。本文提出了新的安全机制,旨在解决影响汽车安全完整性等级(ASIL)多核架构的内存干扰问题。文中介绍了经过优化的新型双逆冗余存储算法,以缓解内存数据的系统性故障;同时还引入了其他安全机制,用于应对内存中的随机故障。研究人员在 Aurix 三核处理器和瑞萨 RH850 等目标平台上,对所提出的安全机制进行了深入研究与评估,并提出了多项建议,以构建完全符合 ISO 26262 标准原则和方法的架构。通过蒙特卡洛分析对所提安全机制的诊断覆盖率进行了测试,结果显示其诊断覆盖率超过 99%,达到了较高水平。

1.引言

几十年来,在各类工业应用的混合关键型系统开发过程中,功能安全始终是至关重要的一环。其中,航空航天应用需遵循 DO 178 标准,汽车应用则需符合道路车辆 ISO 26262 标准。ISO 26262 标准对混合安全关键型系统的汽车安全完整性等级(ASIL)做出了明确规定,其目的在于提升系统的可靠性、模块化程度、可维护性、可移植性和灵活性,并降低成本。

如图 1 所示,这些关键型系统实际上运行在实时单核或多核处理器上,必须在规定的关键期限内完成任务,否则可能会导致危害事件发生,对终端用户造成危害。随着半导体技术从千兆赫兹时代迈向纳米级水平,为了实现理想的性能功耗比,这类系统也在不断演进。

图 1.多核架构框图

在混合安全关键型系统中,软件组件(SWC)及其子功能通常具有不同的 ASIL 等级,这种共存特性给系统带来了一定影响。质量管理(QM)或低 ASIL 等级的软件组件可能会产生干扰,通过信息交换干扰、内存干扰、实时干扰和共享外设干扰等方式(如图 2 所示),对高 ASIL 等级的安全相关软件组件造成破坏。

图 2.信息交换干扰、内存干扰和共享外设干扰导致的无干扰示例图

因此,针对安全关键型数据的单阶或多阶检测与响应安全机制得到了广泛应用和推广,其目的在于防止可能违反安全目标的干扰发生。这些机制的核心作用是检测故障并控制系统失效,确保在预设时间内(该时间需小于故障容忍时间间隔(FTTI))使系统达到并维持安全状态。若不合理设计此类机制,不仅会大幅增加开发成本,还会对系统性能造成额外负担。

研究指出,多核处理器面临诸多亟待解决的挑战。为了优化软件组件间的核心间资源共享,需避免对共享资源的并发访问产生等待状态,这虽然能减少计算资源消耗,但会导致独立数据处理能力下降和并行性损失。软件应用在运行过程中存在多种不同的关键问题,如任务调度、计算资源共享、资源并发访问、核心间内存通信、通信延迟、通信链路以及通信资源分配等。在当今的多核架构中,这些问题在操作系统(OS)层面变得尤为突出。

尽管多核处理器在实现实时高效运行、具备更强并行处理能力以及投资回报率方面具有显著优势,但 ISO 26262 标准所要求的功能安全方法和机制,在一定程度上牺牲了功能系统的效率,对于多核架构系统而言,这种影响更为明显。ISO 26262 标准提供了多种架构和设计需求方法,若错误值对关键信号(甚至包括校准数据相关信号)产生影响,这些方法可通过阻止各类故障传播,确保所检测系统处于安全状态(即降级模式)。

ISO 26262 标准确保了系统的无干扰性(FFI),这意味着隔离机制必须始终符合所涉及软件组件的最高 ASIL 等级要求。其核心目标是防止非安全代码对安全代码的执行造成破坏,即确保关键信号在软件组件间传输时,能够免受低 ASIL 等级或 QM 软件组件的干扰,保证数据的正确性。因此,包含通信接口的软件架构必须按照这一保护等级要求进行开发。

通常情况下,在安全相关软件架构中,至少存在一条关键路径,它代表着关键信号从输入条件到输出根源的数据流。这一关键路径可通过软件设计的关键路径分析得以体现,该分析同时也会考虑不同 ASIL 等级软件组件之间的干扰情况。在关键路径中,特定 ASIL 等级的软件组件需能够检测并应对软、硬件级联故障,以阻止可能导致安全目标被违反的不良事件传播。由于 ASIL 等级软件组件的数据中可能包含 QM 软件组件的故障干扰,因此无需在 QM 软件组件中投入安全防护资源,但这会增加中央处理器(CPU)的负载,并对架构优化产生一定影响。

软件数据故障可能会对内存(如随机存取存储器(RAM)、闪存(Flash)、电可擦可编程只读存储器(EEPROM)、硬件寄存器、直接内存访问(DMA))、初始化数据或校准数据(如编译前、链接时和构建后的数据)造成破坏。这些故障还可能影响软件组件间(内核间 / 内核内电子控制单元(ECU)通信)的逻辑数据处理和数据传输。

内存数据完整性故障会对当前多核处理器的性能产生不利影响。内存干扰主要通过以下几种内存故障形式体现:

(1)低 ASIL 等级软件组件执行不安全的算术指针操作,可能导致对内存中存储的关键数据进行非预期修改;

(2)混合 ASIL 等级软件组件对共享联合结构进行不安全的并发访问;

(3)不安全的动态内存分配,可能导致低 ASIL 等级软件组件对堆区存储的关键数据进行非预期修改;

(4)低 ASIL 等级中断 / 任务对分配给高 ASIL 等级软件组件任务 / 中断的栈段 / 私有数据区栈进行最坏情况的占用,导致栈段溢出(甚至超出容忍范围);

(5)混合 ASIL 等级软件组件共享非易失性内存(NVM)块,低 ASIL 等级软件组件在删除自身数据时,可能会对分配给高 ASIL 等级软件组件的 NVM 区域造成不当擦除;

(6)低 ASIL 等级软件组件执行数组越界访问操作,可能会破坏高 ASIL 等级软件组件的私有数据。

研究仅对由时序故障、操作系统故障和序列故障引起的实时干扰进行了探讨,并提出了相应的解决方案,以将实时多核处理器面临的挑战转化为符合 ISO 26262 标准的高效架构。文献介绍了传统的主流内存干扰保护机制,但这些机制仅能检测单核或多核处理器的部分内存故障。

本文的研究具有开创性,为后续相关领域的发展和研究奠定了基础。主要贡献在于:提出了一种强调符合 ISO 26262 无干扰(FFI)方法和原则的软件架构,该架构能够检测并应对复杂多层缓存多核架构(包括 AUTOSAR)中所有可能导致内存损坏故障的情况;在 Aurix、瑞萨(Renesas)和恩智浦(NXP)等多种微控制器目标平台上,对所实现的安全设计机制相关新算法进行了测试验证;同时,还提出了内存保护机制所需的所有安全相关配置方案。

本文其余部分结构安排如下:第 2 节阐述了用于检测系统性内存故障的拟议空间保护机制,即双逆冗余存储算法,该算法为解决内存无干扰问题提供了支持;第 3 节介绍了用于检测随机故障的汉明距离方法;第 4 节通过蒙特卡洛分析呈现了测量结果,以证明在多个平台上所提机制的有效性;最后,第 5 节对全文进行总结。

2.系统性内存故障页面设置的拟议设计算法与分

在道路车辆开发过程中,安全性是核心问题之一。汽车功能的开发与集成使得对功能安全的需求日益迫切,同时也需要提供证据证明功能安全目标得以实现。对于汽车电子控制单元(ECU)这类软件驱动的嵌入式系统而言,干扰可能在多个层面发生。一个组件的软件可能会通过向分配给另一个组件的内存写入错误数据(数据流方式),对该组件进行访问和操控。

ISO 26262-6附录 D.2.3 的内存干扰部分指出,可采用多种安全措施,如内存保护、奇偶校验位、纠错码(ECC)、循环冗余校验(CRC)、冗余存储、内存访问限制、内存访问软件静态分析以及静态分配等。然而,该标准缺乏详细的验证方法,如通过深入的安全分析来确定需要应用保护机制的关键内存区域。因此,有必要引入经过改进的检测和响应机制,以应对此类内存故障。

在空间保护机制中,禁止非安全代码对安全相关数据拥有授权访问权限。若向非安全代码授予此类权限,可能会引发多种故障,例如:导致必须取消内存安全措施的系统性确定性故障,以及由硬件异常状况引发的随机故障。这些随机故障的发生遵循硬件概率分布,可能产生间歇性、永久性和瞬时性的故障元件。此类故障可能导致内存内容损坏、内存栈溢出 / 下溢、对其他软件组件(SWC)内存的未授权访问以及数据不一致等问题。针对不同 ASIL 等级的系统,研究人员提出了多种安全机制,用于检测系统性故障。

图 1 所示为双核架构,其中包含一条高速通信路径(标注为 “互连模块”)以及一个共享的 L3 缓存。L3 缓存通过内存保护单元(MPU)与内存控制器相连,同时也与所有物理核心和逻辑核心(若存在)相连,以实现高效的功耗和性能表现。每个物理核心都配备有独立的 L2 缓存。

为实现高速同步多线程操作系统(OS),每个核心都拥有私有的 L1 指令缓存和 L1 数据缓存,同时所有物理核心之间还设有共享内存控制器。此外,各核心之间不存在固有的时序干扰。每个核心都配备有 9 组冗余的 5 个寄存器(包括控制寄存器、状态寄存器、地址寄存器和错误信息寄存器),这些寄存器与硬件安全单元相连。因此,该架构具备完善的硬件错误报告机制,能够对未纠正错误、未纠正可恢复错误以及已纠正错误进行报告。

所有核心通过总线、交叉开关、网格结构以及典型的路由通信结构相互连接。为确保系统的一致性,由于采用了每个核心配备(L1、L2 和 L3)缓存的架构内存层级结构,互连模块的访问需要获得来自其他核心的仲裁许可。此外,由于一个核心的 L1 缓存数据可能已过时(该数据可能在另一个核心的 L1 缓存或内存控制器中已更新),因此核心之间还需要进行额外的通信。

对于 ASIL-A 及以上等级的系统,双逆冗余存储结合多数表决和错误检测码是一种适用于检测系统性故障的优选安全机制。双逆存储是对多副本机制的改进,通过对存储在不同块中的异或(XOR)数据副本进行比较,修复由低 ASIL 等级软件组件(SWC)引起的高 ASIL 等级软件组件关键随机存取存储器(RAM)数据损坏问题。

尽管冗余存储机制并非全新概念,但本文对其进行了多项改进,相较于传统机制,显著提升了对系统性故障的检测和响应效率。具体而言,在读写数据算法中引入了多层错误检测机制,从而实现了高效的诊断覆盖率。

错误检测码可用于检测由低 ASIL 等级软件组件(SWC)引起的高 ASIL 等级软件组件非易失性存储器(NVM)数据或通信消息损坏。循环冗余校验(CRC)、校验和以及奇偶校验位均属于错误检测码的范畴。在实际应用中,先计算错误检测码,然后将其与消息所附带的错误检测码或存储在 NVM 块中的错误检测码进行比较。若两者不一致,则表明消息数据已损坏。

此外,双逆存储的上层机制还可用于检测并恢复因未授权写入操作可能导致的关键数据损坏。

该机制仅适用于满足以下标准的高度安全关键型数据:

(1)单个变量损坏会直接导致安全目标被违反;

(2)不存在其他合理性检查方法可用于检测此类数据损坏;

(3)变量以事件触发方式更新(即无周期性计算和更新);

(4)变量更新速度极慢(即在故障容忍时间间隔(FTTI)内无法执行有效的恢复机制)。

相反,多副本安全机制会增加随机存取存储器(RAM)占用量、闪存(Flash)占用量以及中央处理器(CPU)负载。原因在于,在操作过程中,如果未在读取使用前直接进行冗余校验,那么从数据读取到数据使用之间的时间间隔延长,会因故障中断服务程序(ISR)、任务中断或 RAM 内存损坏而导致数据损坏的风险升高。因此,该机制不能用于保护软件代码中的所有数据。同样,也不建议将其用于保护栈区域或大型缓冲区,此外,它也无法用于检测 RAM 中的随机硬件故障。

仅在 ASIL-D 级系统中,才应将安全关键型变量的一个或多个冗余副本分别存储在物理内存中。选择合适的存储方法以降低所有副本同时损坏的概率,对于显著提高存储数据的安全性至关重要。由于在低 ASIL 等级系统中实施该机制的成本较高,因此在低 ASIL 等级系统中,只要通过适当的错误检测和响应机制在逻辑上对数据进行隔离,将数据存储在同一物理内存中是可行的。

初步解决方案如下:应由负责调用使用目标数据进行读写操作的任务的主软件组件(SWC)执行多副本机制。

此外,还可通过操作系统(OS)的 PreTaskHook 保护功能来检查冗余数据副本,这是一种更优的时间优化方案。调用方 ASIL 软件组件(SWC)需验证属于每个安全关键型任务的多个副本,然后从每个安全关键型任务的 PreTaskHook 中执行冗余存储机制。最后,在 OS 的 PostTaskHook 保护功能中对多个副本进行更新。为优化 PreTaskHook 的执行时间,并能够测试大型复杂数据,应采用循环冗余校验(CRC)或校验和代码对关键数据进行一次性整体验证,而非逐个检查单个关键数据。

算法 1 和算法 2 分别代表了用于读取和写入操作的双逆冗余存储机制。在进行数据读写操作之前,它们会相应地执行多层验证。在这种改进的机制中,安全关键型变量的一个或多个冗余副本被存储在物理上分离的内存位置,以降低所有副本同时损坏的可能性。原始数据及其相应副本应分别存储数据值及其逆值,以增加汉明距离并降低故障发生率。当原始数据更新时,存储在不同内存块中包含关键数据的所有副本应同时进行更新。同时,具有自动存储属性的对象地址不得分配给可能在该对象失效后仍存在的其他对象。

因此,为降低误检测概率,应在软件代码中定期检查数据副本直至数据被使用。换言之,高 ASIL 等级软件组件(SWC)可通过读取非易失性存储器(NVM)块,确保低 ASIL 等级 NVM 栈正确写入这些块,前提是已验证错误检测码的计算结果。此外,为涵盖可能由低 ASIL 等级设备驱动程序引发的软硬件故障,应读取命令反馈,并将其与请求的命令进行比较。通过这种方式,可检测低 ASIL 等级软件组件(SWC)请求的不当命令偏差,从而确保关键命令的正确执行。

在使用数据副本之前,需先进行一致性检查。根据特定多项式方程计算出的原始数据及其循环冗余校验(CRC)码,会与存储的相应数据和 CRC 码进行比较。若存储的数据或其 CRC 码损坏,则会对冗余内存块中的冗余数据进行检查。一旦发现不一致,将启动适当的恢复操作,例如在冗余内存区域之间进行多数表决。

若更多数据内存块(包括关键数据和 CRC 码)完好无损,则可利用这些完好的数据块更新少量损坏的存储数据及其 CRC 码。若大部分存储数据损坏,则可采用其他恢复机制,例如通过微控制器复位,使用默认安全值及其正确生成的 CRC 码来刷新损坏的块。如果使用覆盖区域,则使用该区域的任务应具有互斥性。

由此可见,需要满足以下要求:

(1)若恢复机制仅适用于非安全原始值的复位和默认值恢复,则至少需要 2 个副本;

(2)若需恢复安全相关原始值,则至少应存储 3 个副本。

应使用符合 MISRA 规则的静态分析工具(如 Polyspace、KlocWork 或 QAC)来检测可能导致关键变量损坏的潜在错误,例如空指针访问、控制指针操作、数组越界访问、除零错误、变量溢出、错误的位运算以及无法访问的 ASIL 代码语句等。为减少损坏情况的发生,数组索引应是唯一允许的指针运算形式。在进行数据读写操作之前,必须执行多层验证,但这不可避免地会以牺牲系统性故障检测效率为代价,降低读写速度。事实上,为使设计完全符合 ISO 26262 标准而引入安全机制,会对道路车辆的功能产生一定影响。

算法 1:用于读取操作的改进型双逆冗余存储机制

综上所述,算法 1 的工作流程如下:

(1)验证包含原始块和相应冗余块中目标读取数据物理地址的 RAM 完整行的 CRC 码是否有效;

(2)验证所有冗余内存块中目标读取数据所包含的 CRC 字段是否有效;

(3)验证其他内存块中存储的冗余数据是否为其原始存储内存块数据的双逆值。

若所有验证均通过,则读取操作成功执行;若任何一项验证失败,则触发相应的标志状态,并立即启动恢复机制。

算法 2:用于写入操作的改进型双逆冗余存储机制

同时,算法 2 的工作流程如下:

(1)验证包含原始块和相应冗余块中目标读取数据物理地址的 RAM 完整行的 CRC 码是否有效;

(2)从数据缓冲区(DataBuffer)向每个冗余内存块执行写入操作;

(3)验证每个块中写入的数据及其包含的 CRC 码是否与 DataBuffer 中请求的数据(包括 CRC 码)一致;

(4)写入操作完成后,在冗余块之间进行写入一致性检查,验证所有冗余内存块中目标读取数据所包含的 CRC 字段是否有效;

(5)验证其他内存块中存储的冗余数据是否为其原始存储内存块数据的双逆值。

若所有验证均通过,则写入操作成功执行;若任何一项验证失败,则触发相应的标志状态,并立即启动恢复机制。

安全或安全关键型变量的一个或多个冗余副本应分别存储在物理内存中。选择合适的存储方法以降低所有副本同时损坏的概率,对于显著提高存储数据的安全性至关重要。

3.RAM随机故障的拟议设计算法与分析

在设计任何纠错码时,关键问题在于确保任意两个有效码字之间存在足够大的差异,以避免单个比特(或可能少量比特)损坏导致一个有效码字变为另一个有效码字。为衡量两个码字之间的距离,只需统计它们之间不同比特的数量。在硬件或软件实现中,可通过对两个码字进行异或(XOR)运算,然后统计结果中 1 比特的数量来实现,该数量被称为汉明距离。

将汉明距离作为安全机制应用于 ASIL-A 及以上等级的系统中,可有效应对随机存取存储器(RAM)中的随机硬件故障、不可检测错误、双对称反转位(位翻转)以及突发错误。对于关键数据、关键状态机、真 / 假模式编码、枚举类型声明、内存块循环冗余校验(CRC)、有效性标志和已定义常量,应采用较高的汉明距离。在该机制中,两个相邻状态(真或假)之间的互补比特数应大于 4。因此,建议将关键变量的两个互补状态设置为 A5 与 5A,或 69 与 96。若变量包含更多状态,可使用软件工具检测所需的汉明值。

尽管算法 1 和算法 2 主要针对 RAM 中的系统性故障,但这些算法中的局部变量仍可能出现随机故障。因此,汉明距离机制对于降低读取数据标志(ReadDataFlag)和写入数据标志(WriteDataFlag)变量的实现成本具有重要意义,是一种经济高效的安全实现方式。

表 1.算法 1 中 ReadDataFlag 的汉明距离状态

在算法 1 中,ReadDataFlag 包含 4 种状态(代表不同失效模式),如表 1 所示,分别为 {0x11, 0xEE, 0xDD, 0x22}。其中,{0x11, 0xEE} 和 {0x22, 0xDD} 之间的汉明距离最大,达到 8 个比特差异;而 {0x11, 0xDD}、{0x01, 0x22}、{0xEE, 0x22} 和 {0xEE, 0xDD} 之间的汉明距离最小,仅为 4 个比特差异。

表 2.算法 2 中 WriteDataFlag 的汉明距离状态

在算法 2 中,WriteDataFlag 包含 6 种状态(代表不同失效模式),如表 2 所示,分别为 {0x11, 0xEE, 0xDD, 0x22, 0x77, 0x88}。其中,{0x11, 0xEE}、{0x22, 0xDD} 和 {0x77, 0x88} 之间的汉明距离最大,为 8 个比特差异;而 {0x11, 0xDD}、{0x01, 0x22}、{0xEE, 0x22}、{0xEE, 0xDD}、{0x11, 0x77}、{0x11, 0x88}、{0xEE, 0x77}、{0xEE, 0x88}、{0xDD, 0x77}、{0xDD, 0x88}、{0x22, 0x77} 和 {0x22, 0x88} 之间的汉明距离最小,为 4 个比特差异。

4.测量结果

研究人员在 Aurix 三核处理器和瑞萨 RH850 等目标平台上,对所提出的安全机制进行了评估与验证,以确定其是否能构建完全符合 ISO 26262 标准原则和方法的架构。

ISO 26262 标准第 5 部分推荐采用失效模式影响及诊断分析(FMEDA)和故障树分析(FTA)方法,这两种方法是汽车行业中应用最为广泛的定量安全分析技术。在任何定量分析中,安全机制的 “诊断覆盖率(DC)” 都是影响最终安全指标的关键参数。诊断覆盖率用于衡量系统中所实施诊断措施的有效性,从数学角度定义为安全机制检测和 / 或控制的故障数量与该元件总故障数量的比值。失效模式涵盖表 1 和表 2 中从 A 到 F 的各类模式。

在实际应用中,确定诊断覆盖率并非易事。为简化这一过程,ISO 26262 标准为评估安全机制的诊断覆盖率(DC)提供了一个 “起点”,根据安全机制对系统的适用性,将其诊断覆盖率分为低(60%)、中(90%)和高(99%)三个等级。安全机制被划分为这三个相应等级,取决于多种因素,具体如下:

(1)诊断所检测故障类型的来源差异;

(2)系统中所实施安全机制技术的具体实现方式;

(3)安全机制的执行时间与故障容忍时间间隔(FTTI)的关系。

公式(1)表示所提出安全机制的诊断覆盖率(KDC),其中 X 为失效模式 x 的失效模式分布,x 的取值范围根据表 1 为 A-D,根据表 2 为 A-F;KFMC,x 为失效模式 x 的失效模式覆盖率。

为获得有效的正态分布,研究人员针对算法 1(表 1)和算法 2(表 2)中所有相关失效模式,对所设计安全机制的诊断覆盖率进行了蒙特卡洛分析,以评估所提设计在内存系统性故障和 RAM 随机故障变化情况下的稳健性。图 3 显示,通过添加软件组件(SWC)桩程序模拟每种失效模式后,平均诊断覆盖率达到 99% 以上(高水平)。表 3 列出了两种算法在不同失效模式下的诊断覆盖率,以验证在多个目标平台上进行 1000 次测量运行后所提机制的有效性。

图3.1000个执行运行样本的拟议安全机制诊断覆盖率的蒙特卡洛分析直方图

表 3.包含蒙特卡洛失配情况的典型诊断覆盖率(DC),适用于影响算法 1 和算法 2 的所有失效模式

算法 2 在失效模式 A 下的诊断覆盖率最低,为 98.9736%。这意味着在低 ASIL 等级或 QM 软件组件(SWC)对高 ASIL 等级软件组件(SWC)产生干扰的情况下,算法 2 能够检测出 1000 个潜在系统性故障中的 989.73 个。

5.结论

本文深入探讨、分析了自动驾驶应用多核架构中的内存干扰挑战,并提出了相应的缓解措施。此外,针对不同 ASIL 等级的系统架构,本文还提出了多种新颖的解决方案设计及其相关配置,以构建符合 ISO 26262 标准方法和原则的复杂架构设计。所提出的安全机制旨在检测内存数据完整性故障,并提供及时的响应机制,确保系统在规定的故障容忍时间间隔(FTTI)之前进入安全状态。

内存故障可分为系统性故障和随机硬件故障,其中随机硬件故障会产生间歇性、永久性和瞬时性的故障元件。这些故障是由于软件组件(SWC)对 ASIL 等级软件组件(SWC)所属内存区域进行不安全访问(如算术指针操作、联合结构访问、动态内存分配、数组越界访问、共享非易失性存储器(NVM)块访问、栈段访问等)而引发的。此类故障可能导致内存内容损坏、内存栈溢出 / 下溢、对其他软件组件(SWC)内存的未授权访问以及数据不一致等问题。

为减少此类关键数据故障,建议采用栈监控机制。应将逻辑相关的安全数据纳入关键区域,以确保数据一致性,避免被原子性访问,且仅允许高 ASIL 等级软件组件(SWC)使用(例如,传感器读数和传感器状态应同时读取,否则无法确保传感器读数的准确性)。

本文提出了多副本存储和双逆冗余存储设计机制,并对相关算法进行了改进,以降低中央处理器(CPU)负载和内存消耗。这些机制作为故障检测手段,结合新的增强型设计配置,已在 Aurix 三核处理器、恩智浦飞思卡尔 MPC 和瑞萨 RH850 等平台上实现,用于缓解内存数据完整性的系统性故障。由于这些机制本质上是对硬件特性的软件配置,因此本文还提出了另一种机制来克服这一局限性。借助蒙特卡洛分析,结合失效模式发生的变化情况,对诊断覆盖率进行了测量。结果表明,在最坏情况下,所提设计机制的诊断覆盖率仍超过 99%。

此外,本文还提出了汉明距离这一安全机制,用于应对随机存取存储器(RAM)中的随机硬件故障(如位翻转等)。为实现所提出的安全检测机制策略,本文还介绍了多种故障响应方法。若发生内存损坏,可对非易失性存储器(NVM)块进行刷新操作;同时,可利用操作系统(OS)的保护钩子等功能,提高故障响应效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/923710.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/923710.shtml
英文地址,请注明出处:http://en.pswp.cn/news/923710.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VastBase数据库Crash后使用gdb收集coredump信息

VastBase数据库Crash后使用gdb收集coredump信息🐘 数据库版本:VastBase G100 V3.0.8检查数据库崩溃后生成的core文件: [vbdbadbhost vastbase]$ ll -h core* -rw------- 1 vbdba vbdba 62G Aug 20 20:02 core-vastbase-162199-2025_08_20_19_…

【LeetCode 每日一题】2749. 得到整数零需要执行的最少操作数

Problem: 2749. 得到整数零需要执行的最少操作数 文章目录整体思路完整代码时空复杂度时间复杂度:O(1)空间复杂度:O(1)整体思路 这段代码旨在解决一个具有数学和位运算性质的问题:给定两个整数 num1 和 num2,找到最小的正整数 k&…

安卓开发工程师中高级知识点 —— 系统底层安全方向

一、AIDL 通信 Android Interface Definition Language 基于 Binder 实现跨进程通信(IPC),核心是通过定义接口生成代理类,屏蔽底层 Binder 通信细节 适用于跨进程服务调用(如系统服务、多App协作)。常见于后…

动环监控系统-机房高效运维

动环监控系统(全称为动力环境监控系统)是机房高效运维的核心工具,通过集成动力、环境、安防、IT设备等模块,结合智能告警、AI分析、3D可视化等技术,实现机房的全方位监控与管理。动力系统监控供电设备:实时…

知微传感Dkam系列3D相机SDK例程篇:CSharp设置相机工作模式

设置3D相机触发模式 写在前面 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有: 1、便利他人应用3D相机,本系列文章包含公司所出售相机的SDK的使用例程及详细注释;2、促进行业发展及交流。设置触发模式及API说明 触发模式说明 知…

PHP 常用函数及用法

文章目录PHP 常用函数及用法一、字符串处理函数1. 字符串基础操作2. 字符串查找与替换3. 字符串分割与连接4. 字符串大小写转换5. 字符串格式化二、数组操作函数1. 数组基础操作2. 数组遍历与查找3. 数组修改与排序4. 数组过滤与合并三、文件操作函数1. 文件读写2. 文件和目录信…

yum命令--obsoletes与--allowerasing两者的区别

在 YUM(Yellowdog Updater Modified)包管理工具中,–obsoletes 和 --allowerasing 是两个与包升级 / 安装相关的选项,它们的功能和使用场景有明显区别: 1. --obsoletes(默认启用)作用&#xff1…

Day24_【深度学习(3)—PyTorch使用(1)—张量的创建和类型转换】

一、创建张量1.张量基本创建方式torch.tensor 根据指定数据创建张量 (最重要)torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量1.1 torch.tensor# 方式一&…

阿里云图像编辑大模型开发部署

与阿里云一起轻松实现数智化让算力成为公共服务:用大规模的通用计算,帮助客户做从前不能做的事情,做从前做不到的规模。让数据成为生产资料:用数据的实时在线,帮助客户以数据为中心改变生产生活方式创造新的价值。图像…

查看磁盘分区并新建一个分区,挂载分区

linux系统磁盘df -h查看文件系统的磁盘的空间占用情况,常用于快速检查磁盘使用率:df -h-h是说把磁盘空间以G位单位,如果直接用df也是可以的,只不过单位是块,看的不明显du -sh /home/查看/home目录下总共占用了多大的空…

vscode单击暂时预览文件 双击持续打开文件

直接单击文件列表中的文件,会在编辑器中以预览模式打开 文件标签会显示为斜体,表示是预览状态 当您单击另一个文件或开始编辑时,预览文件会自动关闭 在 settings.json 中添加,mac通过cmd,实现。 json {"workbench.editor.ena…

设计模式-桥接模式04

什么是桥接模式? 桥接模式就是把事物的两个方面(两个变化的维度)分开管理,让它们可以分别自由变化,然后通过一个“桥”把它们连接起来。举个生活中的例子 想象一下你在买鞋子: 鞋子有不同的款式&#xff08…

群晖企业级NAS :从中小企业效率工具到核心业务数据基石

在数字化转型加速的今天,数据已成为企业最核心的资产。全球超半数财富 500 强企业选择群晖(Synology)作为数据管理伙伴,其企业级 NAS 解决方案凭借 DSM 操作系统的生态优势、硬件与软件的深度协同,以及覆盖全场景的产品…

C++访问限定符private、public、protected的使用场景

C 访问控制关键字:public、private、protected 在C中,public、private和protected是访问控制关键字,用于实现面向对象编程的封装特性,控制类成员的访问权限。 访问控制关键字的使用场景 1. public(公有成员&#xff09…

CKA08--PVC

Task mariadb namespace 中的 MariaDB Deployment 被误删除。请恢复该 Deployment 并确保数据持久性。 请按照以下步骤: 如下规格在 mariadb namespace 中创建名为 mariadb 的 PersistentVolumeClaim (PVC): 访问模式为 ReadWriteOnce 存储为 250Mi 集群…

Freertos系列(调度机制与创建任务)

如果不想看的可以直接使用git把我的代码下载出来,里面工程挺全的,后期会慢慢的补注释之类的 码云地址:stm32学习笔记: stm32学习笔记源码 如果不会使用git快速下载可以选择直接下载压缩包或者去看看git的使用 Git入门教程-CSDN博客 一 调…

C++中std::vector Vs std::deque VS std::list对比详解

1) 核心差异速览 std::vector:连续内存、随机访问 O(1)、尾部 push_back 摊还 O(1)、中间插入/删除 O(n),非常缓存友好。std::deque:分段(block)存储,不是整体连续;随机访问 O(1)(但…

【js】js实现日期转大写:

文章目录一、方法:二、使用效果:一、方法: export function dateToChnese(strDate) {let dateMap {year: "",month: "",day: ""}if (!strDate || strDate.length 0) return dateMap;const chineseDigit [&…

逆向 js

参考地址:https://blog.csdn.net/2302_80243887/article/details/146349209 注意事项 1. crypto-js 安装 需要你的.js文件同级目录执行npm install crypto-js 才能让js文件引入包 注意事项2: crypto-js 执行js 报错_external_runtime.py" A…

FFmpeg的安装及简单使用

简介 FFmpeg 是一个跨平台的音视频处理工具库/命令行工具,其核心作用是:对音视频文件或流进行解码、转换(编码)、封装/解封装等处理。 友情提示 本次安装以Windows64位操作系统为例 一、下载及安装 1、前往FFmpeg官网&#xff0…