NVIDIA DRIVE AGX 是一個(gè)可擴(kuò)展的開放式自動(dòng)駕駛汽車計(jì)算平臺,充當(dāng)自動(dòng)駕駛汽車的 大腦。作為同類產(chǎn)品中硬件平臺的佼佼者,NVIDIA DRIVE AGX 為功能安全的人工智能自動(dòng)駕 駛提供高性能、高能效的計(jì)算。硬件方面,NVIDIA DRIVE 嵌入式超級計(jì)算平臺處理來自攝像頭、普通雷達(dá)和激光雷達(dá)傳 感器的數(shù)據(jù),以感知周圍環(huán)境、在地圖上確定汽車的位置,然后規(guī)劃并執(zhí)行安全的行車路線。軟件方面,NVIDIA DRIVE AGX 具備可擴(kuò)展和軟件定義特性,平臺能夠提供先進(jìn)的性能, 助力自動(dòng)駕駛汽車處理大量傳感器數(shù)據(jù),并做出實(shí)時(shí)駕駛決策。開放式 NVIDIA DRIVE 軟件 棧還可幫助開發(fā)者使用冗余和多樣化的深度神經(jīng)網(wǎng)絡(luò) (DNN),構(gòu)建感知、建圖、規(guī)劃和駕駛 員監(jiān)控功能。通過持續(xù)迭代和無線更新,該平臺變得日益強(qiáng)大。同時(shí),開放式 NVIDIA DRIVE SDK 為開發(fā)者提供了自動(dòng)駕駛所需的所有構(gòu)建塊和算法堆棧。該軟件有助于開發(fā)者更高效地 構(gòu)建和部署各種先進(jìn)的自動(dòng)駕駛應(yīng)用程序,包括感知、定位和地圖繪制、計(jì)劃和控制、駕駛 員監(jiān)控和自然語言處理。本文將分幾個(gè)章節(jié)以當(dāng)前應(yīng)用最為廣泛的主流英偉達(dá)芯片 Orin x 為例,分別從硬件和軟 件兩個(gè)方向來說明如何進(jìn)行從軟到硬件級別的開發(fā)和應(yīng)用。 ?
1.英偉達(dá)內(nèi)部架構(gòu)設(shè)計(jì)
以 Orin-x 為例,其中的 CPU 包括基于 Arm Cortex-A78AE 的主CPU 復(fù)合體,它提供通用高速計(jì)算能力;以及基于 Arm Cortex-R52 的功能安全島(FSI),它提供了隔離的片上計(jì)算資源, 減少了對外部 ASIL D 功能安全 CPU 處理的需求。
GPU 則是 NVIDIAAmpere GPU,為 CUDA 語言提供高級并行處理計(jì)算能力,并支持多種工具, 如 TensorRT,一種深度學(xué)習(xí)推理優(yōu)化器和運(yùn)行時(shí),可提供低延遲和高吞吐量。Ampere 還提供最先進(jìn)的圖形功能,包括實(shí)時(shí)光線跟蹤。域特定硬件加速器(DSA)是一組專用硬件引擎,旨在從計(jì)算引擎中卸載各種計(jì)算任務(wù),并以高吞吐量和高能效執(zhí)行這些任務(wù)。
下圖顯示了 SoC 的高級架構(gòu),分為三個(gè)主要處理復(fù)合體:CPU、GPU 和硬件加速器。
? 整個(gè)芯片內(nèi)部架構(gòu)設(shè)計(jì)主要是按分塊進(jìn)行功能設(shè)計(jì)區(qū)分。包括操作系統(tǒng)底層軟件QNX BSP(時(shí)鐘Clock源&系統(tǒng)重啟、CAN/SPI/I2C/GPIO/UART控制器、配置寄存器、系統(tǒng)配置)、實(shí)時(shí)運(yùn)行系統(tǒng)QNX RTOS、Nv多媒體處理模塊(傳感器處理模塊MCU(R5)、PVA、DLA、Audio Processor、MCU R5配置實(shí)時(shí)相機(jī)輸入)、經(jīng)典Autosar處理模塊(用于Safety Island Lock-Step R52s)、安全服務(wù)Safety Service(ARM Cotex-A78AE CPU Complex、CPU Switch fabric Coherent、信息安全PSC)、神經(jīng)網(wǎng)絡(luò)處理模塊(CUDA & TensorRT)。
2.基于英偉達(dá)芯片的自動(dòng)駕駛典型架構(gòu)設(shè)計(jì)
常規(guī)的 SOC 系統(tǒng)架構(gòu)通常是包含有常規(guī)的 SOC+MCU 雙芯片甚至三芯片的方式進(jìn)行設(shè)計(jì)的。SOC 由于計(jì)算性能上的優(yōu)勢,一般在前端感知、規(guī)劃中的計(jì)算應(yīng)用場景比 MCU 更好。
MCU 由于具備較高的功能安全等級,可以作為控制執(zhí)行的校驗(yàn)輸出。業(yè)界對于英偉達(dá)芯片是否可以單純作為類似 TDA4 一樣的超異構(gòu)芯片而獨(dú)立承擔(dān)任務(wù), 一直都是褒貶不一的。原則上,從無論 Xavier 還是 Orin 系列,英偉達(dá)系列芯片設(shè)計(jì)都兼具 豐富的 AI 和 CPU 算力能力??紤] L2+級別以上的自動(dòng)駕駛系統(tǒng)開發(fā)而言,這種能力都是可 以完全適配整個(gè)方案設(shè)計(jì)的。
那么,行業(yè)內(nèi)是否這樣主推相應(yīng)的設(shè)計(jì)方案了呢?答案是沒有。
在英偉達(dá) Datasheet 中關(guān)于最新安全需求中,針對 Orin 系列芯片的架構(gòu)設(shè)計(jì)推薦方案中, 仍然需要使用特定的 MCU 用于失效分析和風(fēng)險(xiǎn)評估,這樣就可以及時(shí)的定位到系統(tǒng)的嚴(yán)重 故障,從而確保滿足由 ISO26262 標(biāo)準(zhǔn)所定義自動(dòng)駕駛安全完整性能力要求(這塊后續(xù)會(huì)單 獨(dú)講解)。同時(shí),考慮到整個(gè)域控的電源管理,接入外置 MCU 也可以很好的提升其電源管 理能力,包括對進(jìn)入睡眠模式的進(jìn)入退出等等。
如上所設(shè)置的 MCU 在一定程度上也可以被稱之為 Safe MCU(SMCU),開發(fā)系統(tǒng)過程 中需要使用一些安全等級較高的 MCU(一般需要達(dá)到 ASIL D 等級),如英飛凌 Aurix TC 系 列,瑞薩的 RH850 系列都可以充當(dāng) MCU 實(shí)現(xiàn)對 Orin 的 SMCU 接入。這樣的 SMCU 實(shí)際是可 以充當(dāng)整個(gè)系統(tǒng)開發(fā)的電源控制和嚴(yán)重失效故障規(guī)避的。
如上圖所示表示了基于英偉達(dá)芯片設(shè)計(jì)系統(tǒng)架構(gòu)的三層失效安全框架。整體上講,該架 構(gòu)從 SOC 層的基礎(chǔ)服務(wù)、操作系統(tǒng)、虛擬機(jī)、實(shí)施運(yùn)行環(huán)境再到 MCU 的實(shí)時(shí)運(yùn)行環(huán)境幾個(gè) 方面分別實(shí)現(xiàn)三層級失效安全保護(hù)。SOC 層和 MCU 層分別在 NvIVC、NvIPC、SPI/Error Pin 層 級上進(jìn)行健康和獨(dú)立的看門狗監(jiān)控。其中,SOC 內(nèi)部本身會(huì)承載一部分鎖步安全校驗(yàn) Lockstep FSI , 并 在 核 心 CPU 復(fù) 合 體 CCPLEX ( Carmel CPU complex running the capture stack and applications.表示運(yùn)行捕獲堆棧和應(yīng)用程序的 Carmel CPU 復(fù)合體)上運(yùn)行虛擬機(jī) Hypervisor,CPU 核上采用具備高功能安全等級的 QNX 操作系統(tǒng),完成應(yīng)用軟件看門狗、中間件、應(yīng)用 層軟件以及驅(qū)動(dòng)軟件的資源調(diào)度。當(dāng)然,對于實(shí)時(shí)運(yùn)行系統(tǒng)而言,還是運(yùn)行在標(biāo)準(zhǔn)的 Autosar 上。
如下圖所示的安全架構(gòu)表示了外置 MCU 如何支持在 SOC 上的啟動(dòng)數(shù)據(jù)流,并通過一個(gè) 標(biāo)準(zhǔn)錯(cuò)誤報(bào)告/傳播數(shù)據(jù)流來進(jìn)行有效的安全啟動(dòng)。其中,整個(gè)程序與數(shù)據(jù)引導(dǎo)加載過程包 括三個(gè)層面:Boot L1 級 CCPLEX、Boot L2 級 FSI、Boot L3 級 External MCU。
?啟動(dòng)鏈路設(shè)計(jì)
在 L1 級程序啟動(dòng)過程中,底層啟動(dòng)包括利用“引導(dǎo)和電源管理處理器(BPMP)”終端 (一個(gè)較小的 ARM 內(nèi)核位于系統(tǒng)的核心位置)加載底層啟動(dòng)程序到 BPMP 服務(wù)器,由虛擬機(jī)Hypervisor 或操作系統(tǒng) Safety OS 對相應(yīng)的啟動(dòng)程序文件進(jìn)行調(diào)用。總體上,BPMP 的 Cortex-R5 可以實(shí)現(xiàn):
1、鎖步核配對
2、Arm 7-R ISA
3、向量中斷支持:基于菊花鏈 Arm PL192 矢量中斷控制器(AVIC)
5、完備指令和數(shù)據(jù)緩存(其中涉及 32KB 指令緩存 I-Cache 和 32KB 數(shù)據(jù)緩存 D-Cache)
6、Arm 處理器修正
同時(shí),底層 iGPU 核也會(huì)由 RM 集成式服務(wù)器驅(qū)動(dòng)起來。最終在第一層加載啟動(dòng)程序 L1 CCPLEX(在 NVIDIA 中稱為 CPU Complex 即高性能 64 位 Arm 內(nèi)核)中完成操作系統(tǒng)任務(wù) 調(diào)度、引導(dǎo)管理程序加載、RM 服務(wù)器驅(qū)動(dòng) GPU 核等各項(xiàng)專業(yè)任務(wù)。
此外,L2 級主要還涉及前序文章中提到的功能安全島校驗(yàn) FSI。文章后續(xù)會(huì)單獨(dú)進(jìn)行說 明。
最后,外掛的 SMCU 可以另外在做一層安全保護(hù)和啟動(dòng)管理配置。這樣就可以從安全的 角度完整的驅(qū)動(dòng)整個(gè)芯片工作。
3.功能安全島設(shè)計(jì)原理
如圖2顯示了如何在英偉達(dá)系列芯片中加載 FSI 及底層相關(guān)模塊驅(qū)動(dòng)引導(dǎo)程序。英偉達(dá)系列芯片在功能安全設(shè)計(jì)上,Orin 系列通過制定目標(biāo)實(shí)現(xiàn) ASIL D 系統(tǒng)能力設(shè)計(jì)和ASIL B/D 隨機(jī)錯(cuò)誤管理能力設(shè)計(jì)。包括基于 SOC 芯片硬件的 ASIL 分解需求到各個(gè)核,確保核間設(shè)計(jì)一致性可以滿足 ASIL D 需求,并應(yīng)用標(biāo)準(zhǔn)的 ASIL D 開發(fā)流程到整個(gè)功能安全設(shè)計(jì)中,從底之上分別對安全流程、Drive AGX、操作系統(tǒng) Drive OS、Drive Work、傳感器、冗 余架構(gòu)設(shè)計(jì)、安全策略幾個(gè)方面分別進(jìn)行相應(yīng)的安全設(shè)計(jì)。
? 英偉達(dá)系列芯片的功能安全島(FSI)是一個(gè)包含 Cortex-R52 和 Cortex-R5F real 的處理器集群,并具有專用 I/O 控制器的時(shí)間處理器的核心。例如,Orin-X 中的 FSI 模塊具有自己的電壓軌、振蕩器和PLL、SRAM,以確保與 SOC 內(nèi)部的其他模塊相互作用最小,并實(shí)現(xiàn)如上模塊相互之間無干擾。
Orin-x 系列 FSI 功能包括:
Cortex-R52 處理器,也稱為安全 CPU,具有 DCLS(雙核鎖步)模式下的 4 個(gè)內(nèi)核(共 8 個(gè)物理內(nèi)核),可運(yùn)行經(jīng)典 AUTOSAR 操作系統(tǒng),實(shí)現(xiàn)錯(cuò)誤處理、系統(tǒng)故障處理和其他客戶工作負(fù)載,綜合性能約為 10KDMIPs。
Cortex-R5F 處理器,也稱為加密硬件安全模塊(CHSM),用于通過 CAN 接口運(yùn)行加密 和安全用例,如安全車載通信(SecOC)。
整個(gè)FSI機(jī)制上總體包含有如下的一些安全指令和控制接口信息:
1、安全和 CHSM CPU 每個(gè)核心的緊密耦合內(nèi)存、指令和數(shù)據(jù)緩存。
2、安全島上總共有 5MB 的片上專用 RAM,以確保代碼執(zhí)行和數(shù)據(jù)存儲可以保持在 FSI 內(nèi)。
3、島上有專門用于與外部組件通信的專用 I/O 接口。包含1個(gè) UART,4 個(gè) GPIO 口。
4、硬件安全機(jī)制,如 FSI 內(nèi)所有 IP 的 DLS、CRC、ECC、奇偶校驗(yàn)、超時(shí)等。
專用熱、電壓和頻率監(jiān)測器。
5、邏輯隔離,確保與 SoC 的其他部分有足夠的錯(cuò)誤恢復(fù)時(shí)間FFI。
FSI的實(shí)例解析1:
這里本文將通過一個(gè)例子說明設(shè)計(jì) FSI 為目的描述相應(yīng)的錯(cuò)誤處理機(jī)制,其中包括對如下過程的處理模式:
1、在基于 Xavier 的平臺上調(diào)試 CSI 捕獲錯(cuò)誤的各種方法。
2、如何確定使用哪種方法進(jìn)行調(diào)試。
3、如何識別錯(cuò)誤。
4、錯(cuò)誤的可能根本原因。
相機(jī)捕獲過程中可能發(fā)生錯(cuò)誤的圖層如下:
? 每當(dāng)解碼在 SoC CSI 接口接收到的 CSI 數(shù)據(jù)包并將原始幀數(shù)據(jù)寫入內(nèi)存遇到錯(cuò)誤時(shí),VI 硬件引擎就會(huì)將這些錯(cuò)誤通知給RCE。在 CCPLEX 上運(yùn)行的捕獲堆??梢詮?RCE 查詢捕獲狀態(tài)并顯示:CSI 數(shù)據(jù)流的 ID、發(fā)生錯(cuò)誤的 VC ID、錯(cuò)誤類型、每個(gè)錯(cuò)誤類型的詳細(xì)錯(cuò)誤。錯(cuò)誤狀態(tài)為確定根本原因和確定后續(xù)步驟提供了一個(gè)很好的起點(diǎn)。如果 VI 引擎沒有成功捕獲幀,也沒有遇到錯(cuò)誤并向 RCE 報(bào)告錯(cuò)誤,則會(huì)顯示幀啟動(dòng)或結(jié)束超時(shí)錯(cuò)誤消息提示。 ? 這可能是由于以下兩個(gè)原因之一: ?
1、解串器不是流數(shù)據(jù)。
2、VI 通道未配置為捕獲正確的數(shù)據(jù)類型/VC id。
4.英偉達(dá)系列芯片如何考慮信息安全
對于英偉達(dá)芯片來說,有效的保證信息安全主要是通過兩個(gè)層面:其一是信息安全芯片內(nèi)核模塊Tegra。盡管這一芯片曾經(jīng)在2018年也出現(xiàn)過安全漏洞。有極端黑客利用NVIDIA Tegra X1芯片中的漏洞破解了Switch主機(jī),此漏洞允許任何人在其上運(yùn)行任意代碼,這意味著自制系統(tǒng)和盜版軟件可以隨意運(yùn)行。然而,通過不斷地內(nèi)部優(yōu)化,英偉達(dá)已經(jīng)在很大程度上完成了漏洞修補(bǔ)。
比如,在使用相同 Tegra X1 CPU 的初始 Nintendo Switch 控制臺上,在 ROM 引導(dǎo)加載程序中發(fā)現(xiàn)了一個(gè)漏洞,就通過恢復(fù)模式和緩沖區(qū)溢出實(shí)現(xiàn)修復(fù)。NVIDIA 可以使用內(nèi)置可編程保險(xiǎn)絲將補(bǔ)丁存儲到內(nèi)部 ROM 中解決這類修復(fù)問題。這樣既考慮了薄弱環(huán)節(jié)又兼顧了安全性,減少代碼 bug。
又如,硬件設(shè)計(jì)的性質(zhì)意味著某些內(nèi)部硬件模塊無法被 CCPLEX 訪問,只有 BPMP 能夠操縱它們。包括 u-boot 在內(nèi)的所有低級引導(dǎo)步驟都可以通過簽名的二進(jìn)制文件來確保安全。它們的密鑰可以存儲在 CPU 中的一次性可編程保險(xiǎn)絲中。U-boot 本身可以配置為使用簽名的FIT 映像,從而提供一個(gè)安全的引導(dǎo)鏈,一直到 Linux 內(nèi)核。初始 ROM 引導(dǎo)加載程序和 TegraBoot 也都支持完全冗余的引導(dǎo)路徑。
Tegra是英偉達(dá)芯片中特有的信息安全芯片內(nèi)核,Tegra Security Controller(TESC)是一種信息安全子系統(tǒng),他有自己的可信任根ROM、IMEM、DMEM,Crypto 加速器(AES、SHA、RNG、PKA),關(guān)鍵鏈路和關(guān)鍵存儲。TSEC 提供了一個(gè)片上TEE(可信任執(zhí)行環(huán)境)可以運(yùn)行NVIDIA-標(biāo)記的為處理代碼。TSEC是一種典型的安全視頻回放解決方案,下載信息安全運(yùn)行所需的HDCP1.x 和2.x連接授權(quán)和完整的線端連接檢測。
整體來說,TSEC可以支持:
1)線端HDMI 1.4上的HDCP 1.4和 線端HDMI 2.3上的HDCP 2.0 2.1;
HDCP連接管理沒有暴露受保護(hù)的內(nèi)容,也無需運(yùn)行在CPU上的軟件鑰匙。用于 HDCP 鏈路管理的兩個(gè)軟件可編程獨(dú)立指令隊(duì)列(最多可容納 16 條指令);整個(gè)芯片能夠獨(dú)立于播放器在 HDCP 狀態(tài)檢查失敗時(shí)禁用 HDMI 輸出。
2)平臺安全控制器;
他是一個(gè)高安全子系統(tǒng),他可以保護(hù)和管理SOC中的資產(chǎn)(鑰匙、保險(xiǎn)絲、功能、特性),并提供可信任的服務(wù),提升自由的抵御對 SOC 的攻擊,并可以提高對子系統(tǒng)本身的軟件和硬件攻擊的保護(hù)水平。
3)鑰匙管理和保護(hù);
PSC 將是唯一可以訪問芯片中最關(guān)鍵秘鑰的機(jī)制。該子系統(tǒng)代表了 Orin-x 中最高級別的保護(hù),并且該子系統(tǒng)本身對各種軟件和硬件攻擊具有高度的彈性。
4)授信服務(wù);
例如,在 SOC 安全啟動(dòng)期間,主要的 PSC 服務(wù)可以完成有效的安全身份驗(yàn)證、提供額外的密鑰/ID/數(shù)據(jù)、密鑰訪問和管理、隨機(jī)數(shù)生成和授信的時(shí)間報(bào)告。
5)信息安全監(jiān)控。
PSC 將負(fù)責(zé)定期的安全管理任務(wù),包括持續(xù)評估 SOC 的安全狀態(tài),主動(dòng)監(jiān)控已知或潛在的攻擊模式(例如,電壓故障或熱攻擊),降低硬件攻擊風(fēng)險(xiǎn),并在檢測到有攻擊的情況下采取有效的措施。PSC 將能夠接受各種軟件更新來作為解決方法,以提高現(xiàn)場系統(tǒng)的穩(wěn)健性。
其二,是安全引擎(SE)的應(yīng)用。他可以為加密算法提供硬件加速。
安全引擎SE中有兩種情況針對軟件使用是有用的。其一,TZ-SE只能被可信任區(qū)域軟件所訪問。其二,NS/TZ-SE可配置用來被可信任的軟件區(qū)域或非安全軟件所訪問。安全引擎SE可以為各種加密算法提供硬件加速以及硬件支撐密鑰保護(hù)。SE提供的加密算法可以被軟件用來建立加密協(xié)議和安全特性。所有加密運(yùn)算都是基于國際標(biāo)準(zhǔn)技術(shù)協(xié)會(huì)NIST批準(zhǔn)的加密算法。
英偉達(dá)的安全引擎SE可支持包含如下的所有信息安全保障能力:
NIST合規(guī)的對稱以及非對稱加密和哈希算法、側(cè)信道對策(AES/RSA/ECC)、獨(dú)立并行信道、硬件鑰匙訪問控制(KAC)(基于規(guī)則,增強(qiáng)硬件訪問控制的對稱鑰匙)、16xAES,4xRSA/ECC鑰匙孔、硬件密鑰隔離(僅針對AES鑰匙孔)、讀保護(hù)(僅針對AES鑰匙孔)、硬件鑰匙孔函數(shù)、密鑰包裝/解包功能(AES->AES鑰匙孔)、鑰匙從鑰匙孔分離(KDF->AES鑰匙孔)、隨機(jī)鑰匙生成(RNG->AES鑰匙孔)。
5.總結(jié)
本文從整個(gè)英偉達(dá)芯片的核心架構(gòu)、功能安全、信息安全等角度完整的剖析了其在應(yīng)用過程中的主要特性和策略優(yōu)勢。對于如何利用英偉達(dá)系列芯片進(jìn)行開發(fā)而言,充分的考慮其內(nèi)部架構(gòu)并結(jié)合其功能安全和信息安全能力對于整個(gè)開發(fā)調(diào)優(yōu)都顯得尤為重要。后續(xù)文章將分別從硬件開發(fā)和軟件開發(fā)的角度分別進(jìn)行詳細(xì)的策略剖析。
編輯:黃飛
?
評論
查看更多