與電腦系統(tǒng)一樣,如今的車載計算系統(tǒng)也有硬盤,重要的數(shù)據(jù)和訓(xùn)練好的權(quán)重模型存在硬盤(即eMMC或UFS)里。UFS4.0版本的接口帶寬是23.2Gbps也就是2.9GB/s,遠低于DRAM的帶寬,連LPDDR3都不如,eMMC就更低了,只有400MB/s。
目前電腦SSD硬盤是M.2接口居多,M.2跑PCIe 4.0的話帶寬是64Gb/s。有幾個定義需要分清,SSD指固態(tài)存儲,對應(yīng)的是以前的機械硬盤存儲或磁帶存儲,無論是車載的NVMe、PCIe還是手機的UFS,都是SSD。M.2是硬盤接口標(biāo)準,可以對應(yīng)機械硬盤的SATA,也可以對應(yīng)固態(tài)硬盤的NVMe。NVMe是通訊協(xié)議標(biāo)準,PCIe是物理層標(biāo)準,SATA是接口類型,機械硬盤的通訊協(xié)議是AHCI,手機的UFS使用的是MIPI的M-PHY物理層,SCSI-SAM通訊協(xié)議。今天我們說的車規(guī)級SSD硬盤指的是PCIe做物理層,NVMe做通訊協(xié)議的固態(tài)硬盤。
每次運算的時候,CPU發(fā)出指令,權(quán)重模型從UFS中被取出暫存在DRAM中,如果有顯存的話,就放在顯存里,通常顯存比共享DRAM帶寬要高得多,這樣每次運算就無需從UFS中取出,這也是DRAM和顯存存在的意義,它的速度比UFS快太多了。
存儲行業(yè)的標(biāo)準制定者JEDEC在2022年11月通過了JESD312標(biāo)準,12月14日正式公開發(fā)布。JESD312定義了用于汽車和類似應(yīng)用的SSD封裝、協(xié)議、環(huán)境要求和電氣接口。車用SSD將使用BGA形式直接貼裝在PCB板上,尺寸不大于28 x 28毫米,使用PCIe 4.0 x4接口提供最高8GB/s的峰值傳輸速率。
JESD312充分考慮汽車電子架構(gòu)變化,以軟件定義汽車,中央計算架構(gòu)為目標(biāo),允許分割存儲陣列。
來源:JEDEC
JESD312將操作系統(tǒng)與應(yīng)用代碼分開,并支持單根輸入/輸出虛擬化(SR-IOV,全稱SingleRoot I/O Virtualization),用于許多處理器共享SSD資源的應(yīng)用。
為什么要用車規(guī)級SSD,UFS不是SSD么?UFS當(dāng)然也可以算是SSD,但UFS太慢了,而車規(guī)級SSD采用的是PCIe標(biāo)準,PCIe的彈性空間極大,潛力巨大。JESD312確定的是PCIe 4.0標(biāo)準,實際其包含多個速率,4通道是最低的PCIe 4.0標(biāo)準,16通道雙工可以到64GB/s,而PCIe5.0標(biāo)準已在2019年發(fā)布了,PCIe5.0將信號速率翻倍到了32GT/s,x16雙工帶寬更是接近128GB/s。極高的信號速率,使得PCIe5.0能夠更好支持對吞吐量要求高的高性能設(shè)備,如用于AI的GPU、網(wǎng)絡(luò)設(shè)備等。PCIe 6.0標(biāo)準也已在2022年初發(fā)布,單工達到128GB/s的帶寬。PCI-SIG的目標(biāo)是大約每3年將PCIe帶寬翻一番。
UFS的速度太慢,特別是UFS標(biāo)準的升級速度也慢。2018年1月,JEDEC發(fā)布UFS3.0標(biāo)準,2022年8月才有UFS4.0標(biāo)準。所以UFS的速率是永遠追不上PCIe的,差距會越來越大。除了速率帶寬UFS太慢外,UFS還需要考慮體積和功耗,因此UFS通常都是單芯片,功耗盡量低。汽車領(lǐng)域體積和功耗都可以放寬些,PCIe SSD通常是多芯片并行,可以滿足許多汽車領(lǐng)域的特別需求,UFS就無能為力了。
來源:NVM Express
NVMe支持超長隊列,可以大幅緩解并行計算時存儲瓶頸問題。
現(xiàn)在汽車Infotainment、T-Box、儀表和ADAS域都有分散存儲,數(shù)量眾多。中央計算時代,存儲需要統(tǒng)一到中央計算器上,PCIe是最佳選擇,如上圖所示,通過PCIe交換機將SSD連接在中央SoC計算單元上。
PCIe完美支持中央計算架構(gòu), JESD312還有SR-IOV (Single Root I/O Virtualization)特色,針對虛擬機。在虛擬機中,一切皆虛擬。比如網(wǎng)卡,虛擬機看來好像有一個真實網(wǎng)卡,但這個網(wǎng)卡是宿主機虛擬出來的硬件,也就是一堆軟件代碼而已,沒有真實硬件。車載系統(tǒng)的儀表、T-Box、ADAS域、座艙域不可能都裝一個PCIe網(wǎng)卡,為解決這個問題,Intel提出了SR-IOV。SR-IOV最初應(yīng)用在網(wǎng)卡上。簡言之,就是一個物理網(wǎng)卡可以虛擬出來多個輕量化的PCI-e物理設(shè)備,從而可以分配給虛擬機使用。
最主要的還是PCIe對汽車功能安全或者說ISO26262支持度很高,不是UFS能比的。
來源:PCI-SIG
PCIe有兩個錯誤檢查功能,一個是LCRC,另一個是ECRC。其中LCRC是Link CRC,是用來檢測在兩個設(shè)備之間的鏈路(Link)上發(fā)生的錯誤,這些錯誤大多是由于物理層的信號質(zhì)量問題引起的。
因為僅是針對Link和互聯(lián)的兩個設(shè)備,LCRC換個說法也可以叫Local CRC。當(dāng)TLP報文通過Switch時,在入口(ingress port)被DLL層校驗LCRC。而在Switch的出口(egress port)會重新生成LCRC。當(dāng)接收端檢測到TLP報文的LCRC不正確時,將會發(fā)送一個NAK報文給發(fā)送端,要求重傳此TLP。因此,LCRC錯誤是可修正錯誤,因為可以通過重傳來修正。
ECRC是End-to-End CRC,是檢測TLP報文的內(nèi)容在Requester和Completer之間的路徑上是否損壞。例如switch在轉(zhuǎn)發(fā)TLP報文時由于某些bug發(fā)生了數(shù)據(jù)不一致。
ECRC是requester/initiator的TL層生成的。如果Completer檢測到ECRC錯誤,會上報通知系統(tǒng)處理。并沒有重傳機制,因此是不可修正錯誤。當(dāng)TLP報文進入Switch時,Switch并不會修改ECRC,并完整把TLP報文發(fā)出去。換言之,TLP經(jīng)過路徑上的Switch內(nèi)容不會發(fā)生任何改變,甚至ECRC是錯誤的,Switch也視而不見繼續(xù)發(fā)出去。TLP的錯誤,需要軟件參與,由上層軟件決定是否重發(fā)。
來源:PCI-SIG
PCIe還有個更復(fù)雜的AER(高級錯誤報告),這個異常復(fù)雜的安全機制牽涉面很廣,其中包括了復(fù)雜的Linux內(nèi)核協(xié)助,如ACPI PCI驅(qū)動和ARCH PCI驅(qū)動,還包括物理層。具體的原理無法展開描述。簡單地說它可以方便我們準確的定位,糾正和分析錯誤,增強系統(tǒng)的健壯性和可靠性,輕松達到ASIL-D級。
PCIe總線也能保證整個系統(tǒng)的安全性。
PCIe非常適合車載應(yīng)用,順便說一句,PCIe總線是英特爾在1992年發(fā)明的,距今已超30年,但活力依舊很旺盛。
來源:NVM Express
除了PCIe的安全性,JESD312還加了SPDM安全協(xié)議,采用384bit最小安全協(xié)議,保證網(wǎng)絡(luò)安全萬無一失。
JESD312還特別按應(yīng)用類型做了分類,一類是私家車,另一類是商用車。DWPD是另一個耐久度指標(biāo),主要用于企業(yè)級SSD。DWPD確定用戶在保修期內(nèi)每天可以重寫驅(qū)動器的容量,私家車是每天0.31TB,即310GB,商用車是0.24TB,即240GB,還有一個TBW,即在保修期內(nèi)的最高寫入數(shù)據(jù)量,私家車是200TB,商用車是12.8TB。實際就算是最頂級的智能駕駛加智能座艙,每天寫入的數(shù)據(jù)也不會超過1GB,JESD312留了幾百倍的余量。
如果你實在不放心,那么還有選配。
免責(zé)說明:本文觀點和數(shù)據(jù)僅供參考,和實際情況可能存在偏差。本文不構(gòu)成投資建議,文中所有觀點、數(shù)據(jù)僅代表筆者立場,不具有任何指導(dǎo)、投資和決策意見。