上篇文章NVIDIA ADAS-英偉達DriveOS入門,介紹了英偉達的軟件,本篇文章來說明下現在英偉達在智能駕駛上已商用最新的硬件芯片Orin。
目前Orin訂單火爆,上汽的R和智己,理想L9、蔚來ET7、小鵬新一代P7,威馬M7、比亞迪、沃爾沃XC90,還有自動駕駛卡車公司智加科技,Robotaxi等眾多明星企業Cruise、Zoox、滴滴、小馬智行、AutoX、軟件公司Momonta等等,都搭載Orin平臺進行開發,看陣容就不可小覷,可謂地表最強算力芯片。
1. 英偉達智駕SoC芯片發展史

從2015年開始,英偉達開始進入車載SoC和車載計算平臺領域,為自動駕駛提供基礎計算能力。此后英偉達幾乎每隔兩年發布一款車規級SoC芯片,且不斷拉升算力水平。2020年,Xavier芯片算力為30 TOPS,2022年發布的Orin算力為254 TOPS,2022秋季GTC大會上發布了新自動駕駛芯片Thor,算力為2000TFLOPS@FP8、4000TOPS@INT8,取代了之 前發布的算力達1000TOPS的Altan。
也就是說目前商用最新的芯片就是Orin。英偉達使用的車企陣容強大,如下圖:

1.1 Xavier平臺

NVIDIA在2018年CES上推出了Xavier平臺,作為Driver PX2 的進化版本。NVIDIA稱Xavier 是“世界上最強大的SoC(片上系統)”,Xavier可處理來自車輛雷達、攝像頭、激光雷達和超聲波等傳感器的自主駕駛感知數據,能效比市場上同類產品更高,體積更小?!癗VIDIA Jetson AGX Xavier 為邊緣設備的計算密度、能效和 AI 推理能力樹立了新的標桿。”
2020年4月上市的小鵬汽車P7,成為首款搭載 NVIDIA DRIVE AGX Xavier 自動駕駛平臺的量產車型,小鵬 P7 配備了13 個攝像頭、5 個毫米波雷達、12 個超聲波雷達,集成開放式的 NVIDIA DRIVE OS 操作系統。
Xavier SoC基于臺積電12nm FinFET工藝,集成90億顆晶體管,芯片面積350平方毫米,CPU采用NVIDIA自研8核ARM64架構(代號Carmel), 集成了Volta架構的GPU(512個CUDA核心),支持FP32/FP16/INT8,20W功耗下單精度浮點性能1.3TFLOPS,Tensor核心性能20TOPs,解鎖到30W后可達30TOPs。
Xavier是一顆高度異構的SoC處理器,集成多達八種不同的處理器核心或者硬件加速單元。使得它能同時、且實時地處理數十種算法,以用于傳感器處理、測距、定位和繪圖、視覺和感知以及路徑規劃等任務負載。
除了強大的計算資源外,Xavier SoC擁有豐富的IO接口資源:

Xavier的主處理器可以達到ASIL-B級別的功能安全等級需求。Ecotron公司基于NVIDIA Xavier SoC和Infineon TC297 MCU打造、面向L3/L4級別自動駕駛領域的高性能中央計算平臺。按照設計方案考慮,Xavier智能處理器用于環境感知、圖像融合、路徑規劃等,TC297 MCU用于滿足ISO26262功能安全需求(ASIL-C/D級別)的控制應用場景(也即作為Safety Core)?,比如安全監控、冗余控制、網關通訊及整車控制。

雙Xavier+TC297 MCU的方案結構圖:

此用法雖然是舊平臺的,但是其方案之后也是一直繼承的,即TCXXX的車控芯片獨立運行AUTOSAR,這里畫出了兩個域:智駕域(NVIDIA)+車控域(TC),座艙一般直接使用成熟便宜的手機安卓技術了。就看未來是否有中央式架構實現的可能了,目前還是三域架構。
1.2 Orin平臺

2019年12月英偉達發布了新一代面向自動駕駛和機器人領域Orin芯片和計算平臺。具有ARM Hercules CPU內核和英偉達下一代GPU架構。Orin SoC包含170億晶體管,晶體管的數量幾乎是Xavier SoC的兩倍,具有12個ARM Hercules內核,將集成Nvidia下一代Ampere架構的GPU,提供200 TOPS@INT8性能,接近Xavier SoC的7倍,Orin SOC將在2021年提供樣片,2022年正式面向車廠量產。
2020年5月GTC上,英偉達介紹了即將發布的新一代自動駕駛Drive AGX Orin平臺,它可以搭載兩個Orin SoC和兩塊NVIDIA Ampere GPU,可以實現從入門級ADAS解決方案到L5級自動駕駛出租車(Robotaxi)系統的全方位性能提升,平臺最高可提供2000TOPS算力。未來L4/L5級別的自動駕駛系統將需要更復雜、更強大的自動駕駛軟件框架和算法,借助強勁的計算性能,Orin計算平臺將有助于并發運行多個自動駕駛應用和深度神經網絡模型算法。
作為一顆專為自動駕駛而設計的車載智能計算平臺,Orin可以達到ISO 26262 ASIL-D 等級的功能安全標準。
借助于先進的7nm制程工藝,Orin擁有非常出色的功耗水平。在擁有200TOPS的巨大算力時,TDP僅為50W。NVIDIA Orin處理器功能模塊圖

下表是Jetson AGX Orin的片上系統的性能參數:

image.png
1.3 Thor平臺
NVIDIA DRIVE Thor 是NVIDIA新一代集中式車載計算平臺,可在單個安全、可靠的系統上運行高級駕駛員輔助應用和車載信息娛樂應用。DRIVE Thor 超級芯片借助我們新的 CPU 和 GPU 突破,可提供出色的 2000 萬億次浮點運算性能,同時降低總體系統成本,計劃于2025年開始量產。
可以看到三域開始變兩域了,智駕和座艙統一了,一統天下看來指日可待了,就需要利用安全技術解決最后一個車控MCU就可以了。
DRIVE Thor 還在深度神經網絡準確性方面實現了令人難以置信的飛躍。Transformer 引擎是NVIDIA GPU Tensor Core的新組件。Transformer 網絡將視頻數據作為單個感知幀進行處理,使計算平臺能夠隨著時間的推移處理更多數據。
該SoC能夠進行多域計算,這意味著它可以劃分自動駕駛和車載信息娛樂的任務。這種多計算域隔離可以讓并發的時間關鍵進程不間斷地運行。在一臺計算機上,車輛可以同時運行Linux、QNX和Android。通常,這些類型的功能由分布在車輛各處的數十個電子控制單元控制。制造商現在可以利用 DRIVE Thor 隔離特定任務的能力來整合車輛功能,而不是依賴這些分布式ECU。

所有車輛顯示器、傳感器等都可以連接到這個單一SoC,從而簡化了汽車制造商極其復雜的供應鏈。
參考:https://blogs.nvidia.com/blog/drive-thor/
2. Orin架構介紹
以 Orin-x 為例,其中的 CPU 包括基于 Arm Cortex-A78AE 的主CPU 復合體,它提供通用高速計算能力;以及基于 Arm Cortex-R52 的功能安全島(FSI),它提供了隔離的片上計算資源, 減少了對外部 ASIL D 功能安全 CPU 處理的需求。

GPU 則是 NVIDIAAmpere GPU,為 CUDA 語言提供高級并行處理計算能力,并支持多種工具, 如 TensorRT,一種深度學習推理優化器和運行時,可提供低延遲和高吞吐量。Ampere 還提供最先進的圖形功能,包括實時光線跟蹤。域特定硬件加速器(DSA)是一組專用硬件引擎,旨在從計算引擎中卸載各種計算任務,并以高吞吐量和高能效執行這些任務。
整個芯片內部架構設計主要是按分塊進行功能設計區分。包括操作系統底層軟件QNX BSP(時鐘Clock源&系統重啟、CAN/SPI/I2C/GPIO/UART控制器、配置寄存器、系統配置)、實時運行系統QNX RTOS、Nv多媒體處理模塊(傳感器處理模塊MCU(R5)、PVA、DLA、Audio Processor、MCU R5配置實時相機輸入)、經典Autosar處理模塊(用于Safety Island Lock-Step R52s)、安全服務Safety Service(ARM Cotex-A78AE CPU Complex、CPU Switch fabric Coherent、信息安全PSC)、神經網絡處理模塊(CUDA & TensorRT)。
下圖顯示了 SoC 的高級架構,分為三個主要處理復合體:CPU、GPU 和硬件加速器。

?

2.1 CPU相關

Orin系統架構中,CPU從之前自研的Carmel架構回到了到5納米工藝的ARM Cortex-A78上。Orin-x中CPU包括 12個 Cortex-A78,可以提供通用的目標高速計算兼容性。同時,Arm Cortex R52 基于功能安全設計(FSI),可以提供獨立的片上計算資源,這樣就可以不用增加額外的 CPU(ASIL D)芯片用來提供功能安全等級。
CPU 族群所支持的特性包括 Debug 調試,電源管理,Arm CoreLink 中斷控制器,錯誤檢測與報告。CPU需要對芯片進行整體性能監控,每個核中的性能監控單元提供了六個計算單元,每個單元可以計算處理器中的任何事件?;?PMUv3 架構上,在每個 Runtime 期間這些計算單元會收集不同的統計值并運行在處理器和存儲系統上。
2.2 GPU

Orin采用了新一代的Ampere架構GPU,由2個GPC(Graphics Processing Clusters,圖形處理簇)組成。每個GPC又包含4個TPC(Texture Processing Clusters, 紋理處理簇),每個TPC由2個SM(Streaming Multiprocesor,流處理器)組成,下圖為Orin的GPU架構。每個SM有192KB的L1緩存和4MB的L2緩存,包含128個CUDA Core和4個Tensor Core。因此Orin總計2048個CUDA Core和64個Tensor Core,INT8稀疏算力為170 TOPS(Tensor Core提供),INT8稠密算力為54TOPS,FP32算力為5.3TFLOP(由Cuda Core提供)。
NVIDIA Ampere GPU 可以提供先進的并行處理計算架構。開發者可以使用 CUDA 語言進行開發(后續將對CUDA架構進行詳細說明),并支持 NVIDIA 中各種不同的工具鏈(如開發 Tensor Core 和 RT Core 的應用程序接口)。一個深度學習接口優化器和實時運行系統可以傳遞低延遲和高效輸出。Ampere GPU 同時可以提供如下一些的特性來實現對高分辨率、高復雜度的圖像處理能力(如實時光流追蹤)。
稀疏化::細粒度結構化稀疏性使吞吐量翻倍,減少對內存消耗。浮點處理能力:每個時鐘周期內可實現 2 倍 CUDA 浮點性能。
緩存::流處理器架構可以增加 L1 高速緩存帶寬和共享內存,減少緩存未命中延遲。提升異步計算能力,后 L2 緩存壓縮。
2.3 加速器

特定域硬件加速器(DSAs、DLA、PVA)是一組特殊目的硬件引擎,實現計算引擎多任務、高效、低功率等特性。計算機視覺和深度學習簇包括兩個主要的引擎:可編程視覺加速器 PVA 和深度學習加速器 DLA(而在最新的中級算力 Orin n 芯片則取消了 DLA 處理器)。
PVA 是第二代 NVIDIA 視覺DSP架構,它是一種特殊應用指令矢量處理器,這種處理器是專門針對計算機視覺、ADAS、ADS、虛擬現實系統。PVA 有一些關鍵的要素可以很好的適配預測算法領域,且功耗和延遲性都很低。Orin-x需要通過內部的R核(Cortex-R5)子系統可以用于 PVA 控制和任務監控。一個 PVA 簇可以完成如下任務:雙向量處理單元(VPU)帶有向量核,指令緩存和 3 矢量數據存儲單元。每個單元有 7 個可見的插槽,包含可標量和向量指令。此外,每個 VPU 還含有 384 KBytes的3端口存儲容量。
DLA 是一個固定的函數引擎,可用于加速卷積神經網絡中的推理操作。Orin-x 單獨設置了 DLA 用于實現第二代 NVIDIA 的 DLA架構。DLA支持加速 CNN 層的卷積、去卷積、激活、池化、局部歸一化、全連接層。最終支持優化結構化稀疏、深度卷積、一個專用的硬件調度器,以最大限度地提高效率。
2.4 第二代視覺加速器PVA和VIC

Orin中對PVA進行了升級,包括雙7路VLIW(超長指令字)矢量處理單元、雙DMA和Cortex-R5,支持計算機視覺中過濾、變形、圖像金字塔、特征檢測和FFT等功能。
Orin還包含一個Gen 4.2視頻成像合成器 (Video Imaging Compositor,VIC) 2D 引擎,支持鏡頭畸變校正和增強、時間降噪、視頻清晰度增強、像素處理(色彩空間轉換、縮放、混合和合成)等圖像處理功能。
為了調用Orin SoC上的多個硬件組件(PVA、VIC、CPU、GPU、 ENC等),英偉達開發了視覺編程接口?( Vision Programming Interface,VPI)?。作為一個軟件庫,VPI附帶了多種圖像處理算法(如框過濾、卷積、圖像重縮放和重映射)和計算機視覺算法(如哈里斯角檢測、KLT 特征跟蹤器、光流、背景減法等)。
2.5 內存和通訊

image.png
上圖顯示了Orin各組件中,通過內存控制器結構(Fabric)和DRAM如何通訊和數據交互。
Orin最高支持64GB的256位LPDDR5和64GB的eMMC。DRAM支持3200MHz的最大時鐘速度,每個引腳6400Gbps,支持204.8GB/s的內存帶寬,是Xavier內存帶寬 memory bandwidth 的1.4倍、存儲storage的2倍。
3. 基于Orin的自動駕駛平臺架構設計

常規的 SOC 系統架構通常是包含有常規的 SOC+MCU 雙芯片甚至三芯片的方式進行設計的。SOC 由于計算性能上的優勢,一般在前端感知、規劃中的計算應用場景比 MCU 更好。
MCU 由于具備較高的功能安全等級,可以作為控制執行的校驗輸出。業界對于英偉達芯片是否可以單純作為類似 TDA4 一樣的超異構芯片而獨立承擔任務, 一直都是褒貶不一的。原則上,從無論 Xavier 還是 Orin 系列,英偉達系列芯片設計都兼具豐富的 AI 和 CPU 算力能力??紤] L2+級別以上的自動駕駛系統開發而言,這種能力都是可以完全適配整個方案設計的??赡苁菍τ诎踩筝^高的車控MCU不光是技術上先進就可以替代,主要還是裝機量,需要用起來安全才可以。
3.1 安全考慮

可以看到基本R52核實現的安全島達到了ASIL-D,其他基本還是只滿足ISO 26262。所以需要一個SMCU作為輔助實現車控域。如英飛凌 Aurix TC系 列,瑞薩的 RH850 系列都可以充當 MCU 實現對 Orin 的 SMCU 接入。這樣的 SMCU 實際是可以充當整個系統開發的電源控制和嚴重失效故障規避的。在英偉達賣的開發平臺上就可以看到SMCU TC397的身影,如下圖:

通過可信安全加載技術,ATF中BL1存入ROM,里面有BL2的安全校驗,然后形成鏈式安全加載。包括 u-boot 在內的所有低級引導步驟都可以通過簽名的二進制文件來確保安全。它們的密鑰可以存儲在 CPU 中的一次性可編程保險絲中。U-boot 本身可以配置為使用簽名的FIT 映像,從而提供一個安全的引導鏈,一直到 Linux 內核。初始 ROM 引導加載程序和 TegraBoot 也都支持完全冗余的引導路徑。
3.2 FSI介紹

上圖顯示了如何在英偉達系列芯片中加載 FSI 及底層相關模塊驅動引導程序。英偉達系列芯片在功能安全設計上,Orin 系列通過制定目標實現 ASIL D 系統能力設計和ASIL B/D 隨機錯誤管理能力設計。包括基于 SOC 芯片硬件的 ASIL 分解需求到各個核,確保核間設計一致性可以滿足 ASIL D 需求,并應用標準的 ASIL D 開發流程到整個功能安全設計中,從底之上分別對安全流程、Drive AGX、操作系統 Drive OS、Drive Work、傳感器、冗余架構設計、安全策略幾個方面分別進行相應的安全設計。
英偉達系列芯片的功能安全島(FSI)是一個包含 Cortex-R52 和 Cortex-R5F real 的處理器集群,并具有專用 I/O 控制器的時間處理器的核心。例如,Orin-X 中的 FSI 模塊具有自己的電壓軌、振蕩器和PLL、SRAM,以確保與 SOC 內部的其他模塊相互作用最小,并實現如上模塊相互之間無干擾。
Cortex-R52 處理器,也稱為安全CPU,具有 DCLS(雙核鎖步)模式下的 4 個內核(共 8 個物理內核),可運行經典 AUTOSAR 操作系統,實現錯誤處理、系統故障處理和其他客戶工作負載,綜合性能約為 10KDMIPs。
Cortex-R5F 處理器,也稱為加密硬件安全模塊(CHSM),用于通過 CAN 接口運行加密 和安全用例,如安全車載通信(SecOC)。
整個FSI機制上總體包含有如下的一些安全指令和控制接口信息:
1、安全和 CHSM CPU 每個核心的緊密耦合內存、指令和數據緩存。
2、安全島上總共有 5MB 的片上專用 RAM,以確保代碼執行和數據存儲可以保持在 FSI 內。
3、島上有專門用于與外部組件通信的專用 I/O 接口。包含1個 UART,4 個 GPIO 口。
4、硬件安全機制,如 FSI 內所有 IP 的 DLS、CRC、ECC、奇偶校驗、超時等。專用熱、電壓和頻率監測器。
5、邏輯隔離,確保與 SoC 的其他部分有足夠的錯誤恢復時間FFI。
3.3 TESC
Tegra是英偉達芯片中特有的信息安全芯片內核,Tegra Security Controller(TESC)是一種信息安全子系統,他有自己的可信任根ROM、IMEM、DMEM,Crypto 加速器(AES、SHA、RNG、PKA),關鍵鏈路和關鍵存儲。TSEC 提供了一個片上TEE(可信任執行環境)可以運行NVIDIA-標記的為處理代碼。TSEC是一種典型的安全視頻回放解決方案,下載信息安全運行所需的HDCP1.x 和2.x連接授權和完整的線端連接檢測。
1)線端HDMI 1.4上的HDCP 1.4和 線端HDMI 2.3上的HDCP 2.0 2.1;?HDCP連接管理沒有暴露受保護的內容,也無需運行在CPU上的軟件鑰匙。用于 HDCP 鏈路管理的兩個軟件可編程獨立指令隊列(最多可容納 16 條指令);整個芯片能夠獨立于播放器在 HDCP 狀態檢查失敗時禁用 HDMI 輸出。
2)平臺安全控制器;?他是一個高安全子系統,他可以保護和管理SOC中的資產(鑰匙、保險絲、功能、特性),并提供可信任的服務,提升自由的抵御對 SOC 的攻擊,并可以提高對子系統本身的軟件和硬件攻擊的保護水平。
3)鑰匙管理和保護;?PSC 將是唯一可以訪問芯片中最關鍵秘鑰的機制。該子系統代表了 Orin-x 中最高級別的保護,并且該子系統本身對各種軟件和硬件攻擊具有高度的彈性。
4)授信服務;?例如,在 SOC 安全啟動期間,主要的 PSC 服務可以完成有效的安全身份驗證、提供額外的密鑰/ID/數據、密鑰訪問和管理、隨機數生成和授信的時間報告。
5)信息安全監控。?PSC 將負責定期的安全管理任務,包括持續評估 SOC 的安全狀態,主動監控已知或潛在的攻擊模式(例如,電壓故障或熱攻擊),降低硬件攻擊風險,并在檢測到有攻擊的情況下采取有效的措施。PSC 將能夠接受各種軟件更新來作為解決方法,以提高現場系統的穩健性。
3.4 安全引擎(SE)
安全引擎SE中有兩種情況針對軟件使用是有用的。其一,TZ-SE只能被可信任區域軟件所訪問。其二,NS/TZ-SE可配置用來被可信任的軟件區域或非安全軟件所訪問。安全引擎SE可以為各種加密算法提供硬件加速以及硬件支撐密鑰保護。SE提供的加密算法可以被軟件用來建立加密協議和安全特性。所有加密運算都是基于國際標準技術協會NIST批準的加密算法。
英偉達的安全引擎SE可支持包含如下的所有信息安全保障能力:
NIST合規的對稱以及非對稱加密和哈希算法、側信道對策(AES/RSA/ECC)、獨立并行信道、硬件鑰匙訪問控制(KAC)(基于規則,增強硬件訪問控制的對稱鑰匙)、16xAES,4xRSA/ECC鑰匙孔、硬件密鑰隔離(僅針對AES鑰匙孔)、讀保護(僅針對AES鑰匙孔)、硬件鑰匙孔函數、密鑰包裝/解包功能(AES->AES鑰匙孔)、鑰匙從鑰匙孔分離(KDF->AES鑰匙孔)、隨機鑰匙生成(RNG->AES鑰匙孔)。
4. GPU編程CUDA

image.png
上圖表示了 CUDA 架構示意圖,表示了CPU,GPU,應用程序,CUDA 開發庫,運行環境,驅動之間的關系
4.1 GPU軟件架構
自動駕駛領域使用的 AI 算法多為并行結構。AI 領域中用于圖像識別的深度學習、用于決策和推理的機器學習以及超級計算都需要大規模的并行計算,更適合采用 GPU 架構。由于神經網絡的分層級數(通常隱藏層的數量越多,神經網絡模擬的結果越精確)會很大程度的影響其在預測結果。擅長并行處理的 GPU 可以很好的對神經網絡算法進行處理和優化。因為,神經網絡中的每個計算都是獨立于其他計算的,這意味著任何計算都不依賴于任何其他計算的結果,所有這些獨立的計算都可以在 GPU 上并行進行。通常 GPU 上進行的單個卷積計算要比 CPU 慢,但是對于整個任務來說,CPU 幾乎是串行處理方式,需要要逐個依次完成,因此,其速度要大大慢于 GPU。因此,卷積運算可以通過使用并行編程方法和GPU來加速。
英偉達通過 CPU+GPU+DPU 形成產品矩陣,全面發力數據中心市場。利用 GPU 在AI 領域的先天優勢,英偉達借此切入數據中心市場。針對芯片內部帶寬以及系統級互聯等諸多問題,英偉達推出了 Bluefield DPU 和 Grace CPU,提升了整體硬件性能。
對于英偉達的GPU而言,一個 GPC 中有一個光柵引擎(ROP)和 4 個紋理處理集群(TPC),每個引擎可以訪問所有的存儲。

4.2 CUDA編程
CUDA(Compute Unified Device Architecture,統一計算架構) 作為連接 AI 的中心節點,CUDA+GPU 系統極大推動了 AI 領域的發展。搭載英偉達 GPU 硬件的工作站(Workstation)、服務器(Server)和云(Cloud)通過 CUDA軟件系統以及開發的 CUDA-XAI 庫,為自動駕駛系統 AI 計算所需要的機器學習、深度學習的訓練(Train)和推理(Inference)提供了對應的軟件工具鏈,來服務眾多的框架、云服務等等,是整個英偉達系列芯片軟件開發中必不可少的一環。
CUDA 是一個基于英偉達 GPU 平臺上面定制的特殊計算體系/算法,一般只能在英偉達的 GPU 系統上使用。這里從開發者角度我們講講在英偉達 Orin 系列芯片中如何在 CUDA架構上進行不同軟件級別開發。
從CUDA 體系結構的組成來說,它包含了三個部分:開發庫、運行期環境和驅動。
“Developer Lib 開發庫”?是基于 CUDA 技術所提供的應用開發庫。例如高度優化的通用數學庫,即cuBLAS、cuSolver 和 cuFFT。核心庫,例如 Thrust 和 libcu++;通信庫, 例如 NCCL 和 NVSHMEM,以及其他可以在其上構建應用程序的包和框架。
“Runtime 運行期環境”?提供了應用開發接口和運行期組件,包括基本數據類型的定義和各類計算、類型轉換、內存管理、設備訪問和執行調度等函數。
“Driver 驅動部分”?是 CUDA使能GPU的設備抽象層,提供硬件設備的抽象訪問接口。CUDA 提供運行期環境也是通過這一層來實現各種功能的。
在 CUDA 架構下,一個程序分為兩個部份:host端和 device端。Host端是指在 CPU 上執行的部份,而 device端則是在顯示芯片(GPU)上執行的部份。Device 端的程序又稱為 "kernel"。通常 host 端程序會將數據準備好后,復制到顯卡的內存中,再由顯示芯片執行 device 端程序,完成后再由 host 端程序將結果從顯卡的內存中取回。這里需要注意的是,由于 CPU 存取顯存時只能透過 PCI Express 接口,因此速度較慢 (PCI Express x16 的理論帶寬是雙向各 4GB/s),因此不能經常進行,以免降低效率。
基于以上分析可知,針對大量并行化問題,采用 CUDA 來進行問題處理,可以有效隱藏內存的延遲性 latency,且可以有效利用顯示芯片上的大量執行單元,同時處理上千個線程 thread 。因此,如果不能處理大量并行化的問題,使用 CUDA 就沒辦法達到最好的效率了。
對于這一應用瓶頸來說,英偉達也在數據存取上做出了較大的努力提升。一方面,優化的CUDA 改進了 DRAM 的讀寫靈活性,使得GPU與CPU的機制相吻合。另一方面,CUDA提供了片上(on-chip)共享內存,使得線程之間可以共享數據。應用程序可以利用共享內存來減少 DRAM 的數據傳送,更少的依賴 DRAM 的內存帶寬。
此外,CUDA 還可以在程序開始時將數據復制進 GPU 顯存,然后在 GPU 內進行計算,直到獲得需要的數據,再將其復制到系統內存中。為了讓研發人員方便使用 GPU 的算力,英偉達不斷優化 CUDA 的開發庫及驅動系統。操作系統的多任務機制可以同時管理 CUDA 訪問 GPU 和圖形程序的運行庫,其計算特性支持利用 CUDA 直觀地編寫 GPU 核心程序。
后記:
對于軟件開發人員學習SoC架構也是非常有用的,在制定軟件方案的時候需要參考硬件上有那些通路,性能是否可以滿足,有那些硬件可以利用來支撐功能實現。在驅動開發的時候,需要羅列那些硬件模塊的需求需要開發,驅動對上層提供的服務要達到什么程度形成封裝API接口。
本篇文章為了更加全面準確的介紹Orin,除了參考官網的資料外,參考了大量他人的文章,見參考資料章節,對于芯片更細節的東西需要注冊英偉達官網賬號,甚至購買后有芯片的data sheet和FAE支持,這里不涉及。芯片研發和使用需要大量人力物力,這里雖只是冰山一角都這么多,也寫的比較流水賬,大家多多擔待。
審核編輯:黃飛
?
電子發燒友App

















評論