自動駕駛的到來勢不可擋,但該如何保障其安全發展?
《給學弟妹的矽谷 AI / Software 指南》是一個矽谷工程師自發的眾籌寫作計劃,由源來適你社群推動。這將是一個在台灣軟體學生圈內很有影響力的文章系列。已有 >10 篇準備發布,目標 100 篇並出書,歡迎 tag 強者大神來寫!

全自動駕駛的發展
特斯拉的全自動駕駛軟體已經從2014 年更新到 2024 年的 FSD v12.5,硬體從由 Mobileye 設計的 HW1.0 到現在特斯拉自研的 HW4.0,同時系統一開始除了鏡頭之外,還需要雷達 (Radar) 跟超聲波聲納 (Ultrasonics Sensor) 來輔助能見度較低的場景,到現在所謂的 Tesla Vision 只需要鏡頭就能實現全自動駕駛,不只降低了成本,由於影像資料跟雷達資料相比,相當容易取得,大大地加快了軟體發展的速度。短短十年全自動駕駛的進步令人難以想像,當然最大的推進力為「神經網絡模型」和「人工智慧硬體加速器」的發展。
這篇文章就要來聊聊,人工智慧硬體的發展,尤其在自駕電腦的架構上來討論重要的東西是什麼。
自駕電腦架構
自駕電腦需要各種嚴格的要求來達到好的自駕行為,最直觀的不外乎是運算能力,根據 Nvidia 的資料,自駕電腦至少要有辦法在 33 ms 約為相機 30 FPS 的速度處理高達 2000 萬畫素的影像 (10 個相機),且需要約 250 兆運算吞吐量 (250 TOPS)。除此之外,自駕電腦將被使用在終端裝置,如電動車,這些裝置也會有嚴格的能耗需求,確保使用者合理的使用時間,以 Nvidia Orin 為例,其能耗介於 40W 到 60W 之間,而 Nvidia 當前最高規格的消費者 GPU 4090 Ti 約有 90 TOPS 的運算吞吐量以及 600W 的功率,可見自駕電腦的架構是極其的有效率。
究竟為什麼呢?就讓我們以 Nvidia Orin 架構為例,了解原因。
如下圖 Nvidia Orin 自駕電腦架構圖所示,一台自動駕駛電腦主要由 5 個部份組成:
- 中央處理器 (CPU)
- 圖形處理器(GPU)
- AI 加速器 (Accelerator)
- 記憶體區塊 (包含 Cache、SRAM以及 DRAM 等)
- 安全島 (Safety Island or Safety Chip)

之所以自駕電腦可以達到強大的運算吞吐量以及省電的效率,在於有效的分工:CPU 從記憶體提取資料,提供 GPU/AI 加速器進行運算以及進行與外界溝通的橋樑,GPU 負責處理影像有關的加速以及處理較複雜的深度學習模型所需的運算,至於 AI 加速器則是針對深度學習模型運算中基本、常出現的運算模式個別做加速,達到更有效率的運算效能。
以上無不運用到「專業化 SoC」 的概念,針對自駕電腦所需要的技術規格來設計晶片,有興趣可以參考以下文章,了解更詳細的 SoC 介紹:
當然,最重要沒有之一為「GPU/AI 加速器」的部分,因為這兩個元件就是專門進行 AI 深度學習相關的運算,做出自駕行為的「大腦皮層部分」,擁有極強大的思考、運算能力。而這個也是業界、市場著重的效能衡量指標,擁有越高的 TOPS 代表此自駕電腦愈好,不過對一台自駕系統「好壞」衡量指標不單單只是「運算效能」而已,更重要的應該是「安全係數」。
我們剛剛唯一沒提到的安全島,可以說是自駕最重要的元件,它負責確保整個自駕電腦的安全,確保當有任何軟硬體錯誤發生時,整個系統可以做緊急處理,降低意外發生機率。
安全島的功能及架構
“That’s the function of the safety island. This is designed to fault-manage and control the rest of the system, to enable recovery of complex domains within the chip and signal failures to external systems.” — 以上擷取自 Arteris 的行銷副總 Kurt Shuler 在 Semiconductor Engineering 論壇對於安全島功能的敘述
如果自駕電腦中負責處理大量運算的 CPU、GPU、AI Accelerator 比擬做大腦的部分的話,安全島就好比「腦幹」,負責處理有即時性 (real-time) 的工作以及監控整個系統的運作情形,就如同腦幹需要負責反射動作以及維持呼吸心跳這些維持生命的基本功能,有鑑於此,安全島如果失靈的話,整個自駕系統將無法進行運作。

而如何衡量自駕電腦的安全性,我們就必須要去看電腦內所使用的元件是否有得到 ISO-26262 的認證 (道路車輛功能安全國際標準),一台車輛的每個元件根據以下三點,定義出 ASIL A~D 的安全階級 (低風險 ~ 極高風險)
- 嚴重程度(對駕駛員及乘客造成的傷害類型): S0 ~ S3 (無傷害 ~ 致命傷)
- 發生機率(車輛是否經常接觸危害): E0 ~ E4 (極不可能 ~ 極可能)
- 可控制性 (駕駛員能阻止傷害的程度): C0 ~ C3 (可控 ~ 不可控)
而自駕電腦系統就屬於最高危害 (S3 + E4 + C3) 的组合,會需要 ASIL-D 的安全階級才能符合 ISO-26262 的規範

在了解到自駕系統需要 ASIL-D 的安全認證後,我們就能進一步去分析該使用什麼樣的硬體 IP (矽智財)、如何撰寫軟體來設計安全島晶片。
*ASIL 階級是對一整個系統進行評估,需要同時考慮到軟體跟硬體,舉例來說要達到
ASIL-D 並不一定需要 ASIL-D 的元件,可以使用數個 ASIL-B 的元件並搭配軟
體架構來達到 ASIL-D,最終的結果是希望能達到更好的 FIT (Failure in Time,
每十億小時出錯的次數,ASIL-D 的規範為 < 10 FIT)。
這篇文章,我們從安全島晶片挑選幾個部分來介紹:
一、中央處理器 (CPU Cores)
在挑選 CPU Cores 時,通常會選擇具有雙核鎖步 (DCLS — Dual-core Lockstep) 功能的核心, 迅速偵測系統錯誤。其原理是兩個相同的處理器同時執行相同的指令,並立即比對執行結果是否一樣,如果結果不同,代表其中一個處理器有錯誤,讓系統能馬上進一步的除錯。它能偵測任何的硬體錯誤 (電子元件本身就有發生隨機錯誤 Random Failures 的風險。
DCLS 提供一個相當有效使用硬體的方式提高系統穩定性的方法,幾乎不需要撰寫什麼軟體來支援它,因此在不管航太以及汽車等高安全標準的產業下,相當重要的技術。能被使用在這些產業的晶片矽智財都會有這項功能,譬如說 Arm Cortex-R52。
當然這只是其中一項在處理器晶片達到更高安全性的技術,其他還有很多像技術列在下圖 ISO-26262 Table D 針對處理器單元推薦的安全技術

二、記憶體 (Memory)
記憶體會使用「更正錯誤記憶體」 (ECC — Error-Correcting Code memory) ,確保記憶體資料的正確性。由於宇宙充滿輻射的影響,這些電磁波都會影響電子元件的運作,對記憶體會造成單位元翻轉 (Single Bit-Flip) 的問題,改變記憶體中資料的內容。
ECC 即是用來解決這樣的問題,當處理器在存取記憶體時,會讀寫額外的加密位元,並且與欲存取的資料做比對,如果比對結果不同,代表記憶體內容出現錯誤,系統可以透過加密的位元來還原正確的記憶體內容。此是相當有效降低記憶體出錯機率的技術,大量使用在需要很高的系統穩定性的應用,如資料中心以及航太、汽車電子零件上。
三、硬體 I/O 周邊元件 (Hardware I/O Peripherals)
在設計自駕電腦系統時,需要使用多種硬體 I/O 周邊元件,例如:I2C / SPI / CAN / Ethernet 等,而這些 I/O 元件的硬體設計圖通常由其他公司提供矽智財(IP),例如 BOSCH、NXP 和 TI 等硬體大廠。最主要的重點是,這些矽智財通常標示依照 ISO-26262 規範設計,描述在設計時做過如何的安全檢驗。這不僅僅是一個認證的樣態而已,在 ISO-26262 規範了一系列從設計到驗證的的流程,也讓開發人員在設計安全攸關系統時,有個可靠的依據。

前面提到要達到更好的 ASIL 等級,我們要去觀察整體系統安全強度,因此在各個部件使用符合 ISO-26262 規範的硬體 IP ,可以幫助欲設計的系統達到更高的 ASIL 安全階級。

四、錯誤管理單元 (Fault Management Unit)
最後一個部分 — 錯誤管理單元 — 甚是安全島最重要的一個元件,這個單元接收自駕系統上各個部件的硬體錯誤訊號,每個訊號都代表各個硬體的運作狀況、健康程度,安全島接收這些信號,判斷目前自駕系統是否正常,舉例來說,當安全島收到 CPU 出現雙核鎖步的錯誤訊息,代表某一個核心的執行結果有異常,安全島可以馬上進行除錯,並紀錄各項訊息供工程師後續分析。

錯誤管理單元之所以重要,在於他是在硬體層次上的偵錯,相比於軟體上的監控,反應時間更快速,且更可靠,因為他靠的是物理世界上的訊號直接傳遞,就算軟體死當,錯誤單元還是可以可靠的偵錯。這個系統再加上冗餘 (Redundancy) 的概念,可以將系統的安全層提升到更高的層次。
現階段很多自駕電腦都擁有兩個以上的冗餘,意思就是擁有兩個同樣的自駕電腦,而彼此監控對方的健康狀況,當對方的錯誤單元偵測到錯誤時,訊息會同時送到自己的系統,以及另一個冗餘的系統,就算自己的軟體沒辦法運行,另一個電腦依然可以接管,進行除錯、記錄,錯誤管理單元可以說是除錯的最後一道防線。
更深入了解自動駕駛硬體安全
現在各方在討論無人駕駛計程車時,主要都專注在人工智慧訓練、模型的部分,譬如說該加速模型訓練、計算吞吐量,以及是否需要使用雷達、光達感測器等等,重點在軟體演算法的開發,畢竟現今還未有公司能完全解決這個問題。但當這些演算法發展成熟後,下個課題便是該如何達到「安全」。
我們可以參考航空產業的發展歷史。我認為航空的安全標準和無人駕駛車的標準有許多相似之處,因為這兩者都是極為複雜的應用,且容錯率非常低。從 1903 年人們開始嘗試製造飛機,當時大家對於「航空安全」幾乎沒有概念,畢竟當時想要造一架飛機本身就是很困難的事情。然而,隨著航空技術的發展,安全問題逐漸浮現。舉例來說,在 1924 年商用貨機每 15,000 哩就會發生一次致命事故,相當於台美來回兩次就會有一個乘客死亡,這也因此讓後續航空技術的開被重視安全、可靠,如噴射引擎的發展、飛行前機體檢驗以及導航系統。一直到百年後的現在,航空安全仍然是重要的問題。

自動駕駛技術也如此,現今我們正處於自動駕駛的早期階段,各個公司都想要開發出第一個自動駕駛的系統,自從 2015 特斯拉推出第一版開放給大眾使用的自動駕駛系統開始,也才發展到第 9 年,我們對於定義自動駕駛是否安全、法規該如何規範都還相當的模糊,不過我深信這個主題如同航空產業發展一樣,當技術成熟到某一個階段後,將開啟另一個篇章,引領未來自動駕駛百年的發展。
而如果各位對於了解安全性晶片主題有興趣的話,可以參考 Arteris 這家公司,他們旨在開發安全的矽智財供給輔助、自動駕駛系統使用,相信對於這塊領域有興趣的同學,會有很大的幫助。