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 安全能力 |
|
| 多區域安全 |
|
| 增強調試和跟蹤功能 |
|