Hercules双核锁步特性介绍

2023-11-03 05:58

本文主要是介绍Hercules双核锁步特性介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hercules 整个产品线安全理念是基于“安全岛”的思想展开的,对于 MCU内部共享的重要单元采取硬件诊断机制进行重点保护,比如CPU,VIM等。利用这些已经确认的安全岛对芯片上的其它部分进行诊断,从而覆盖至整个 MCU 的安全诊断。

在这里插入图片描述
上图红色部分即所说的由硬件完成诊断的安全岛,蓝色区域是基于安全岛概念,由硬件、软件混合完成诊断的模块。黑色部分为非关键性区域,不会进行任何诊断。

需要硬件来实现诊断机制的单元中,最重要的就是CPU,那如何才能判断出CPU故障尤其是在运行中发生了随机失效呢?下图为CPU实现系统框图,基本原理就是两个逻辑相同的CPU模块同步运行,在输入相同时输出也是相同的,如果其中一个或两个发生了故障(如在高能辐射下某寄存器值出现了位翻转)则会造成两者输出不一致,通过输出比较模块就能诊断出CPU运行失效。此即Hercules双核锁步实现机制。

在这里插入图片描述

双核锁步实现的具体要点:

  • CPU 配有专门的硬件自检模块,只需要很少的软件开销就可以完成 CPU 的自检。
  • CPU比较模块(CCM) 会逐周期对输出指令进行比对,一旦不一致立即报告错误。
  • 两个CPU 呈镜像且旋转90度的方式放置,并且保证间距大于 100 微米,从空间上避免了共模失效;
  • 两个 CPU 在分别在运算之前和之后有两个周期的延时,从时间上避免了共模失效。
  • 每个 CPU 都有独立的保护环,可以有效减少共因失效的可能性。

与用软件或多核方式相比,采用双核锁步架构优势在于:

  • 具有更快地错误检测速度,只需要两三个周期就可以检测到系统出错;
  • 具有更高的错误覆盖率,可以检测的故障覆盖硬件、瞬态、持续等各种错误类型;
  • 诊断功能工作时对性能的影响非常低,甚至没有任何影响,不需要额外的软件开销,对存储空间没有影响,而且几乎不占用 Flash 和 RAM 空间;
  • 对于原有的设计,用户不需要额外的软件开发工作,易于集成到现有的应用中,从而缩短产品开发的周期;
  • 诊断覆盖率可控,用户不需要担心软件的校验是否已经足够保证 CPU 的安全性,而可以将时间用来更多地开发自己的应用程序。

这篇关于Hercules双核锁步特性介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336051

相关文章

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.