您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
芯片功能安全架构设计(上)
 
作者: WF.WANG
   次浏览      
 2024-4-23
 
编辑推荐:
本文来谈谈芯片安全架构设计模型在处理器芯片中是如何体现,带安全功能的处理器芯片在设计过程中有哪些考量。希望对你的学习有帮助。

本文来自于功能安全落地漫谈,由火龙果软件Elaine编辑、推荐。

本篇我们来谈一谈这些架构设计模型在处理器芯片中是如何体现的,看一看带安全功能的处理器芯片在设计过程中都有哪些安全考量。如下图TI Hercules微控制器架构呈现的安全特征,可以引发一些思考。

注:下文提到的芯片泛指控制器/处理器级的IIl类硬件器件。

不管是芯片的安全架构设计,还是下游相关项系统的安全架构设计,在安全这块无非都是要应对产品开发过程中的两类失效,即随机硬件失效和系统性失效。

接下来我们将从以下几个方面来谈一谈处理器芯片的安全架构设计。

1. 芯片硬件安全设计

1.1 双核锁步架构(DCLS)

1.2 芯片的供电安全

1.2.1 嵌入式电压监控

1.3 芯片的时钟安全

1.3.1 低功耗振荡器时钟检测器(LPOCLKDET)

1.3.2 PLL差异检测

1.3.3 双时钟比较器(DCC)

1.3.4 外部时钟输出监控(ECLK)

1.4 芯片的存储安全

1.4.1 非存储数字组件故障模型

1.4.2 存储器故障模型

1.5 芯片温度监控

2. 芯片软件安全设计

2.1 温度检测

2.2 软件看门狗

2.3 ADC故障检测

2.4 安全通信

3. 芯片信息安全设计

3.1 硬件安全模块(HSM)

3.2 安全硬件扩展(SHE)

3.3 示例—安全板间通信(SecOC)

1.芯片硬件安全设计

微控制器(uC)的硬件安全设计一般通过“安全岛”(Safety/Security Island)来实现。安全岛是一个泛化的概念,类似于我们日常在十字路口等红绿灯时所在的专门为行人建设行人等候区,也是一种“安全岛”设施,它能为隔离人流和车流以及避免车辆失控撞向行人起到防护作用,芯片中的安全岛也是专门设计的“独立片区”用来实现安全相关功能,现在很多用于安全关键领域的芯片一般都会说明自己带有安全岛机制。

一般地,芯片上专门用于某个具有特定属性(如安全属性)的子系统或者内核,都可以用“Island”的概念来命名,主要强调局部设计的“独立性”和“特殊性”。而用于配套实现芯片专有安全功能的专属存储单元、供电模块、外设、通信总线等一系列IP的集合可以统称为“安全岛”。在“岛上”可以相对独立的执行安全相关的任务,安全岛就是这样一个给软件提供安全任务执行的一个物理环境。

安全岛模块一般独立于芯片中的其他系统和内核,需要有单独的电源域供电,单独的计算单元,内部模块和内存需要有物理隔离机制,优先级较高的中断机制,甚至是单独的安全诊断单元,可以实时诊断出“岛上”出现的问题,并且进入相应的安全状态。

接下来我们从最小系统为出发点,谈一谈芯片安全岛的实现方式。

1.1 双核锁步架构(DCLS)

双核锁步架构(DCLS)是一种片上冗余集成电路架构。在ISO26262并未针对片上冗余集成电路架构单独提要求,但在IEC61508-2中对于带片上冗余的集成电路特定架构提了相关要求。

为了允许在同 一个半导体衬底上使用片上冗余, 以下给出了一系列要求。出于安全的原因该方法相对保守, 例如 , 它被限制最高到SIL3并且规定一系列限制性要求。以下要求仅与数字集成电路有关。可使用单半导体衬底来实现带有硬件故障裕度大于零的子系统(片上冗余)。在这种情况下应履行所有以下要求 1) ~17), 并且E/E/PE 系统和集成电路的设计应满足这些要求。(参考 IEC61508-2, Annex E)

参考上表的要求,我们来看下车载领域的功能安全微控制芯片在架构层面一般都会部署哪些安全措施,看是否能覆盖上表的要求。

目前一些过了功能安全认证的微控制器芯片(如英飞凌的Aurix系列、NXP的MPC57XX/S32XX系列、TI的Hercules系列等)都采用了双核锁步架构设计,双核锁步作为处理器“安全岛”概念的一部分,是一种1oo1D架构模型,既可以用于探测处理器硬件的故障也可以用于探测在CPU上运行指令的故障。

双核锁步架构的简化示意可参考如下:

双核锁步架构的处理器一般具有如下特征:

> 目标:检测微控制器中的硬件故障;

> 两个核心都在同一个硅片(芯片)上实现,是一种片上冗余架构;

> 同一软件在两个核心上以同步模式运行;

> 在两个核的输出端配置有比较单元,在比较单元中对两个核的输出进行比较,如果检测到差异,则发出错误信号;

由于双核锁步架构属于片上冗余系统,为了减少相关失效的的影响,一般需要采取了以下措施:

物理多样性

  • 物理核心硬件在空间上是分开的,至少距离100µm 远,形成物理上的“隔离带”,有的芯片称之为“Safety Lake”;
  • 一个核相对于另一个核在物理上结构上进行翻转并旋转90°;
  • 电源多样性

  • 每个核心都有一个专用电源环;
  • 时间多样性

  • 一个核心相对于另一个运行延迟(例如2个时钟周期),一个输入延迟,一个输出延迟,以保证同步;
  • CPU 时钟域被分成两个时钟树,这样时钟通过两个独立的路径被传递到两个 CPU。
  • 基于以上设计特征,我们常见的双核锁步参考架构如下。

    1.2 芯片的供电安全

    供电模块作为一个典型的相关失效引发源(DFI),芯片在设计过程中出于安全考虑需要为内核逻辑电路和 I/O 逻辑电路提供独立的电源轨(包括模数转换器 (ADC)、闪存泵和振荡器),同时还会配备相应的电压监控模块用于对各自电源轨功能异常的监控。

    1.2.1 嵌入式电压监控

    安全芯片内部通常会设计嵌入式电压监控器,此监控器能够检测超出范围(OV/UV)的电源电压。当电源远远高于或者低于额定电压时,电压监控器将从内部驱动上电复位引脚,使处理器保持在安全运行状态。当电源处于范围之内,电压监控器将不会触发处理器复位。

    由于供电模块在芯片内部属于通用基础设施,具有共用性。一般芯片中所有功能模块都需要有供电才能运行,不同模块需要的工作电压还不一样,怎么样控制不同模块件用电串扰的影响就是芯片设计过程中的安全考量之一。通常,为了消除/减轻其引发共因失效的影响,芯片设计上通常给冗余内核和I/O逻辑电路的供电是独立的。

    提到相关失效,这里我们先介绍下该术语涉及的基本概念。

    > 相关失效 dependent failures:不具有统计独立性的失效,即失效组合发生的概率不等于所有考虑的独立失效发生概率的乘积。

    Jet Note: 简单理解,相关失效是指两个以上的独立事件发生失效的原因存在一定相关性/关联性,且导致该相关性的原因有多种。比如小王和老李在同一办公室办公,某一天小王出现了咳嗽、流鼻涕的感冒症状,隔天老李也出现了感冒症状,小王和老李都出现了感冒症状这事就存在一定的相关性。

    由于导致失效存在相关性/关联性的方式不同,相关失效包括共因失效和级联失效。

    > 共因失效(Common Cause Failures-CCF):由于共同原因,两个或多个部件故障状态同时存在,或在短时间间隔内存在的相关失效子集。

    共因失效是指冗余元件的独立通道上两个或多个元件的随机故障状态重合,导致定义的元件无法执行其预期安全功能,这是由单一事件或根本原因(偶然原因、不可分配原因、噪声、自然模式等)引起的。

    Jet Note: 同样拿上面小王和老李的故事来举例。小王和老李在同一办公室办公,小王感冒后没多久老弟也出现了感冒症状,小王和老李都出现了感冒症状这事都要归因于流感病毒,所以是流感病毒导致小王和老李发生的”共因失效“。

    > 共模失效(Common Mode Failure-CMF):共因失效的一个子集。冗余通道中两个或多个(不一定相同)元件中随机故障的重合导致安全功能方面相同的重合错误行为。由于故障相同,比较器不会检测到故障。下图显示了两个不同但冗余的通道内的两个元件,其中一个根本原因导致两个不同的故障(fault1、fault2),从而导致两个元件和两个通道中的相同失效(failure a)。由于两个通道中都发生了相同的失效,功能安全比较器机制无法检测到失效。

    Jet Note: 共模失效是一种特殊的共因失效,简单理解它是一种从结果上看以相同模式失效的共因失效。继续拿上面小王和老李的故事来举例。小王和老李在同一办公室办公,小王和老李都出现了感冒症状,受流感病毒的影响两人都出现了发烧、咳嗽及鼻塞流鼻涕的症状导致两人无法集中注意力办公于是中断当前工作都请假去了医院,这种情况下流感病毒导致小王和老李发生了”共模失效“。

    > 级联失效(Cascading Failures-CF):当系统中某个元件的局部故障波及互连元件,导致同一系统和同一通道内的另一个或多个元件发生故障时,就会发生级联失效。级联失效是非共因失效的相关失效。下图显示了一个通道内的两个元件,单一的根本原因导致一个元件中的故障(fault 1),从而导致某个失效(failure a)。然后,该失效级联到第二个元件,导致第二个故障(fault 2),进而导致另一个失效(failure b)。

    Jet Note: 级联失效强调的是在同一系统/同一通道内的失效级联。接着上面小王和老李的故事来举例。小王和老李在同一办公室办公,老李出现了感冒症状,但小王未受到影响。受流感病毒的影响老李先是喉咙干痒导致咳嗽,接着出现严重鼻塞导致嗅觉失灵,还伴随间歇性的耳鸣导致听力下降,随着咳嗽不停病情加剧出现了呼吸道感染导致咽喉肿痛声带受损无法正常发声。这种情况下流感病毒导致老李身体中的耳、鼻、喉各功能模块发生了”级联失效“。

    介绍完相关失效的相关概念,我们来看下芯片设计过程中对于供电模块可能导致的相关失效一般会采取什么措施。

    如下有一处理器芯片的部分内部组件示意图,红框部分是芯片内部电压调节组件。

    图中的EVR(Embedded Voltage Regulator)被识别为芯片内部的共享资源,由该调节器通过内部其他供电网络给芯片内部其他组件供电,示意图中还显示了该芯片内部有一个电压监控模块(EVR Monitor)用于对EVR的电压进行监控。

    EVR(嵌入式稳压器):除由“外部供电电源”供电的输入/输出焊盘外,EVR可以为处理器芯片内的每个硬件要素提供电源。

    假设该芯片按照功能安全标准要求开发过程中有如下要求分配给了处理器。

    MCU-REQ-2:导致 CPU 输出错误的随机硬件故障,应在 20 毫秒内被检测到[ASIL X]。

    -MCU-REQ-2.1:“中央处理单元CPU应由冗余CPU监控。CPU和冗余CPU的输出通过硬件比较器在每个时钟周期都进行比较”;及

    -MCU-REQ-2.2:“当CPU和冗余CPU的输出出现不匹配时,应生成错误事件”。

    基于上方处理器内部组件模块对该安全要求[MCU-REQ-2]实施故障树分析如下。

    根据上方的故障树分析识别出的共享资源和冗余要素,得到该处理器中关于供电模块的相关失效分析如下。

    根据上方DFA分析结果,在原来芯片架构的基础上增加新的带隙监控元件,使与带隙漂移失效模式相关的相关失效被减轻。针对供电模块考虑了安全因素之后在架构上增加了相关安全模块,示例处理器芯片的内部架构更新如下。

    以上示例只是为了说明芯片设计过程中对于安全属性的考量是如何实施的,从示例可以看出针对功能安全的芯片架构设计在哪些地方需要增加什么电路也是要经过一番安全分析来得到,从设计到实施再到验证也都需要遵照标准的流程来确保完整性、一致性和可追溯性。

    1.3 芯片的时钟安全

    芯片内部的时钟管理逻辑电路一般包括时钟源、时钟生成逻辑电路,此逻辑电路包括锁相环路 (PLL) 的时钟倍乘、时钟分配器、和时钟分配逻辑电路。

    针对时钟管理电路的组成模块,以某一安全微控制器为例,芯片设计过程中一般会考虑以下检测电路用来应对时钟管理电路的各种可能的失效模式。

    1.3.1 低功耗振荡器时钟检测器(LPOCLKDET)

    低功耗振荡器时钟检测器 (LPOCLKDET) 是一个可被用于检测主时钟振荡器故障的安全诊断。

    LPOCLKDET 采用嵌入式高频、低功耗振荡器 (HF LPO)。时钟检测电路工作方式为检验一个其它时钟上升沿之间的某一个时钟(振荡器或者 HF LPO)上的上升沿。结果就是除了标记不正确、频率重复,电路也会由于瞬态情况发生故障。

    1.3.2 PLL差异检测

    PLL 逻辑电路包括一个能够检测一个 PLL 输出时钟差异的嵌入式诊断。差异是由基准时钟和反馈时钟间的相位锁定损失造成。错误响应和指示取决于系统模块内的 PLL 控制寄存器的设计。

    1.3.3 双时钟比较器(DCC)

    一个或者多个双时钟比较器 (Dual Clock Comparator-DCC) 被使用为多用途安全诊断。DCC 可被用于检测不正确频率和时钟源之间的漂移。DCC 由两个计数器块组成:一个计数器块被用作一个基准时钟而另外一个被用作测试时钟。基准时钟和处于测试中的时钟均可由软件进行选择,可作为时钟频率的预计比率。与预计比率的偏差会生成一个错误信号。

    处理器时钟电路也是一个典型的通用基础设施模块,其随机硬件失效导致的相关失效也是需要在芯片设计过程中给予考虑。

    继续以上方处理器内部组件示例为例,先通过实施FTA识别出相关失效引发源(DFIs),然后基于识别的DFIs开展相关失效分析。

    根据上方的故障树分析识别出的时钟作为相关失效引发源,得到该处理器中关于时钟电路的相关失效分析如下。

    根据上方DFA分析结果,在原来芯片架构的基础上增加新的振荡器元件,使与时钟漂移失效模式相关的相关失效被减轻。针对时钟模块考虑了安全因素之后在架构上增加了相关安全模块,示例处理器芯片的内部架构更新如下。

    1.4 芯片的存储安全

    数据在寻址、写、存储和读过程中的会经过芯片的数字电路组件和存储器,以下将从这两方面来谈一谈芯片设计过程中对于数据的存储有哪些安全考量。

    1.4.1 非存储数字组件故障模型

    芯片中的数字组件包括微控制器(uC)、片上系统(SoC)器件和专用集成电路(ASIC)等组件的数字电路部分,也包括现场可编程门阵列(FPGA)。

    通常,芯片的非存储数字组件通常包括以下故障模型:(参考ISO 26262-11:2018, 5.1.2)

    》永久性故障(permanent fault),也称为“硬错误/硬故障”,该故障类别的具体故障模型详细描述如下。

    • 卡滞故障(stuck-at fault):电路中的故障特征为不管输入激励如何变化,节点保持在逻辑高(1)或逻辑低(0)的状态;

    • 开路故障(open-circuit fault):通过将一个节点破坏为两个或多个节点,从而改变节点数量的电路故障;

    • 桥接故障(bridging fault):意外连接的两个信号。根据所采用的逻辑电路,可能导致“线或”或者“线与”的逻辑功能。通常仅限于设计中物理上相邻的信号;及

    • 单粒子硬错误(Single Event Hard Error-SHE):由单次辐射事件导致运行的不可逆变化,通常与器件中一个或多个要素的永久性损坏(如栅极氧化物破裂)有关。

    》瞬态故障(transient fault),也称为“软错误/软故障”,该故障类别的具体故障模型详细描述如下。

    • 单粒子瞬态脉冲(Single Event Transient-SET):由于单个高能粒子穿过,造成集成电路某节点瞬时电压漂移(例如,电压尖峰);

    • 单粒子翻转(Single Event Upset-SEU):由高能粒子穿过引发的信号所造成的软错误;

    • 单比特位翻转(Single Bit Upset-SBU):单粒子造成的单个存储单元翻转;

    • 多单元翻转(Multiple Cell Upset-MCU):单粒子引起集成电路中的多个比特位同时失效。错误位通常(但不总是)在物理上相邻;及

    • 多比特位翻转(Multiple Bit Upset-MBU):两个或多个由单粒子引起的同一个半字节、字节或字中的比特位错误。多比特位翻转不能通过简单的纠错码(ECC)进行校正(例如,单比特位错误校正)。

    Jet Note: 单粒子瞬态脉冲(SET)、单粒子翻转(SEU)、单比特位翻转(SBU)、多单元翻转(MCU)和多比特位翻转(MBU)通常表示为“软错误”,之所以被称为软错误, 是因为电路本身并未受到辐射的永久损坏。

    1.4.2 存储器故障模型

    存储器故障模型可能因存储架构和存储技术而有所差异。半导体存储器的典型故障模型如下表所示。

    该表并不完备,也可以根据其他已知故障或结合实际应用进行调整。

    芯片内部或外部的存储模块都对高能粒子比较敏感,由上图可知Flash和RAM具有软错误故障模型,这是由其存储架构和技术所决定。

    当辐射事件引起足够的电荷干扰扭转或翻转低能量的半导体存储单元、 寄存器、 锁存器或触发器的数据状态时, 软错误就会发生。

    软错误可能和各类可变内存相关, 比如动态内 存( DRAM )、静态内 存( SRAM )、 微控制器中的寄存器组、 缓存( cache )、流水线( pipelines )、设备(如 ADC 、 DMA 、 MMU )配置寄存器、中断控制器、复杂定时器等。对alpha粒子和中子(Neutron)的敏感度由核心电压和物理结构决定。

    标准给出了关于存储器故障的安全机制/措施的描述及其可实现的典型诊断覆盖率,参考如下。

    ECC在现在的安全微控制器芯片中都会部署相关电路用于检测并纠正存储器中的位错误。

    内存保护单元(MPU)也是现在的安全微控制器芯片中部署的专门用于实施内存分区、隔离的安全电路模块,防止不同数据存储区域未授权的访问。

    由于软错误是在存储器身上非常具有代表性的故障,其他关于芯片设计过程中考虑的存储器包括软错误在内的故障防护的技术我们将在单独的文章中进行介绍。

    1.5 芯片温度监控

    最小系统中时钟、电源、存储器都是典型的共因失效引发源,除了这些芯片内部组件故障引发的相关失效需要在设计过程中给予考虑外,对于电气串扰和环境应力可能引发的相关失效在芯片设计过程中也需要加以考虑。

    芯片内的或外部对芯片的电气串扰在芯片设计过程中会同步进行考虑,如采用低抖动的时钟源,减小时钟网络的干扰。在芯片内部采用金属屏蔽层或导电衬底来隔离敏感区域或噪声源,从而减小电磁干扰的影响等。

    另外对于数据存取的免于干扰芯片设计过程中会考虑空间和时间上的隔离措施,比如上面提到的MPU就是使用了内存空间物理隔离或基于时间的存取隔离技术。

    这里我们要谈一谈芯片设计过程中对于温度的考虑。

    像动物一样在一个舒适的温度环境下动物生长的最快生态体征也最好,应用半导体技术的芯片在合适的温度下其功能和性能也表现为最佳。通常,高温会导致芯片发生不可逆的损坏,而低温导致的芯片功能异常往往是可恢复的。异常的温度(通常是高温)不仅会导致芯片工作异常,还会加速芯片的老化影响芯片的寿命,同时加大了系统功耗,使整个系统的可靠性降低。

    所以芯片设计过程中往往会对温度的影响给予考虑。对于功能安全来说,温度这种环境应力是典型的相关失效引发源,所以实施安全设计的芯片基本都会在内部部署温度传感器来监控芯片的内部温度。典型地,双核锁步架构的微控制器中一般每个核都会部署一个专有的温度传感器用于监控核温,当检测到温度超出预设的范围值(如,-40℃~150℃)时输出一个温度状态信号,芯片自身进入fail-safe状态并输出一个故障信号给到上层系统。

    在芯片内部部署温度传感器对核温进行监控属于探测措施,实际芯片设计过程中除了探测类的安全措施外,预防措施也会同步进行考虑,比如芯片的散热设计。

    芯片内部的散热设计不仅可以降低功耗提升芯片性能,也有助于保证芯片的安全完整性要求。下方举了些常见的芯片散热技术,供参考。

    > 增加散热层:在芯片封装中增加散热层,将芯片产生的热量传递到封装表面,再通过散热器将热量散发出去。散热层可以采用金属、陶瓷等导热材料。

    > 热管技术:热管是一种高效的传热元件,可以在较小的空间内传递大量的热量。在芯片内部,可以将热管与芯片的散热区域连接,将热量快速传递到热管的另一端,再通过散热器散发出去。

    > 热设计优化:通过优化芯片的热设计,减少热阻和散热路径,提高散热效率。例如,合理布局芯片内部的发热元件、优化芯片的散热通道、加强封装材料的导热性能等。

    功能安全的微控制器架构内部还有很多其他硬件的安全措施,想要了解更多各位可以结合芯片安全手册去学习,然后映射到标准的相关要求中去,这可能是最便捷的芯片功能安全设计的方式。

    以上关于芯片的硬件安全设计就介绍到这里,限于篇幅,接下来的芯片软件安全和信息安全设计将在下一篇文章中和大家谈一谈。

    参考:

    [1] ISO 26262-5:2018 Product development at the hardware level

    [2] ISO 26262-9:2018, Automotive safety integrity level (ASIL)-oriented and safety-oriented analyses

    [3] ISO 26262-11:2018 Guidelines on application of ISO 26262 to semiconductors

    [4] IEC61508-2:2010 Requirements for electrical/electronic/programmable electronic safety-related systems

    [5] IEC61508-7:2010 Overview of techniques and measures

    [6] MPC5746RRMAD Rev. 3, 06/2017

    [7] 针对TMS570LS04x 和 03x的安全手册 Hercules™ARM® 安全微控制器的安全手册用户指南

    个人观点,仅供参考

       
    次浏览       
    相关文章

    一文了解汽车嵌入式AUTOSAR架构
    嵌入式Linux系统移植的四大步骤
    嵌入式中设计模式的艺术
    嵌入式软件架构设计 模块化 & 分层设计
    相关文档

    企点嵌入式PHP的探索实践
    ARM与STM简介
    ARM架构详解
    华为鸿蒙深度研究
    相关课程

    嵌入式C高质量编程
    嵌入式操作系统组件及BSP裁剪与测试
    基于VxWorks的嵌入式开发、调试与测试
    嵌入式单元测试最佳实践

    最新活动计划
    C++高级编程 12-25 [线上]
    白盒测试技术与工具实践 12-24[线上]
    LLM大模型应用与项目构建 12-26[特惠]
    需求分析最佳实践与沙盘演练 1-6[线上]
    SysML建模专家 1-16[北京]
    UAF架构体系与实践 1-22[北京]
     
     
    最新文章
    基于FPGA的异构计算在多媒体中的应用
    深入Linux内核架构——简介与概述
    Linux内核系统架构介绍
    浅析嵌入式C优化技巧
    进程间通信(IPC)介绍
    最新课程
    嵌入式Linux驱动开发
    代码整洁之道-态度、技艺与习惯
    嵌入式软件测试
    嵌入式C高质量编程
    嵌入式软件可靠性设计
    成功案例
    某军工所 嵌入式软件架构
    中航工业某研究所 嵌入式软件开发指南
    某轨道交通 嵌入式软件高级设计实践
    深圳 嵌入式软件架构设计—高级实践
    某企业 基于IPD的嵌入式软件开发
    更多...