ZHCAEQ3 November 2024 F29H850TU , F29H859TU-Q1
图 2-1 所示为 C29 CPU 的方框图、其主要特性和优势。
VLIW CPU:C29 基于超长指令字 (VLIW) 架构设计。支持 16 位、32 位和 48 位的可变长度指令。指令数据包大小从 16 位到 128 位,可实现更高的代码密度,同时在单个 CPU 周期内最多执行八条 16 位指令。
CPU 内存总线:128 位宽程序总线,可以提取一个 128 位宽指令数据包以供 CPU 执行。两条 64 位读取总线,支持并行读取两个 64 位数据,同时一条 64 位写入总线可在单个周期内写入 64 位数据到内存。
字节寻址能力和数据类型:C29 支持字节寻址,并且数据类型与其他常见的 CPU 架构(如 ARM)完全兼容。
CPU 寄存器:提供三组寄存器:Ax、Dx 和 Mx。Ax 寄存器包括 16 个 32 位寄存器 (A0-A15) 或 8 个 64 位寄存器 (XA0-XA14),主要用于地址生成,并在流水线早期阶段执行某些整数运算以提升性能。DX 寄存器包括 16 个 32 位寄存器 (D0-D15) 或 8 个 64 位寄存器 (XD0-XD14),用于整数定点运算。MX 寄存器包括 32 个 32 位寄存器 (M0-M31) 或 16 个 64 位寄存器 (XM0-XM30),用于浮点运算。
功能单元:总共有 24 个功能单元,分别与 Ax、Dx 和 Mx 寄存器组及特殊功能寄存器相关联。每个功能单元支持一组特定指令,其中某些功能单元存在多个实例。例如,AX 寄存器文件配有 4 个比较单元,每个周期可以评估两条 switch 语句的情况,从而提高 switch 语句的执行效率。MX 寄存器组配有 2 个浮点乘法单元和 3 个浮点加法/减法单元,能够每两周期执行一次 FFT 蝶形变换运算。
三角函数加速器 (TMU):支持三角运算,扩展了对 64 位双精度浮点运算的支持,同时兼容 32 位单精度浮点运算。
中断:C29 支持常规中断 (INT) 和优化型实时中断 (RTINT)。RTINT 使用专用的硬件中断堆栈,在 RTINT 发生时,CPU 上下文会自动保存到此堆栈中。这种方式比基于软件的上下文保存机制要快。除了速度更快之外,周期数也是固定的,因此可以提高确定性。而基于软件的上下文保存机制可能需要可变数量的周期数。支持硬件中断优先级排序,减少了通过软件确定优先级的开销。
功能安全:如需实现较高的 ASIL 等级要求,需要在单个或多个 CPU 内运行的多线程代码之间实现隔离。功能安全和信息安全单元 (SSU) 提供了这种隔离能力。SSU 虽然形式简单,但是允许用户定义多个关联的存储器区域(称为访问保护区域 (APR)),这些区域可以通过一个称为 LINK 的概念关联在一起,形成一个隔离的线程。一个线程由代码、数据、堆栈和外设组成。特定代码 LINK 可以通过读取、写入或两者兼具的权限访问特定数据 LINK。相对于传统 MPU,SSU 的优势权限是基于正在执行的代码强制实施的。因此,不需要重新编程 MPU。每个线程都有一个硬件堆栈,堆栈在 CPU 中自动切换,实现完全隔离。在操作系统(例如 AUTOSAR)中,这种高效切换使实时 ISR 可作为 CAT1 中断独立运行,不受操作系统干扰,并与 AUTOSAR 应用程序完全隔离。因此,单个 C29 CPU 内核可以运行操作系统和控制任务,而不会影响控制性能。
信息安全:当代码执行在不同线程的堆栈之间切换时,强制执行入口点和出口点。入口点和出口点指预先定义的、一个线程调用或分支到另一个线程,或从另一个线程返回的点。如果调用、分支到其他地址,或者从其他地址返回,则会触发异常,从而避免安全攻击。SSU 还支持通过称为 ZONE 的机制进行固件更新和调试。每个 ZONE 都具有独立的密码和调试设置。ZONE 支持安全的多方写作开发,每个开发方都可以独立定义密码,阻止其他方查看代码,同时控制代码的调试权限。
| 特性 | 备注 |
|---|---|
| 易于使用 |
|
| 改进并行性 |
|
| 提高总线吞吐量 |
|
| 代码效率 |
|
| ASIL-D 安全能力 |
|
| 多区域安全 |
|
| 增强调试和跟踪功能 |
|