黑芝麻智能一芯多域零拷貝共享內存技術:破解車載大數據傳輸效能困局
通過零拷貝共享內存技術,黑芝麻智能解決車載多域間大數據傳輸的延遲與資源消耗問題。核心技術包括全局內存管理單元和dmabuf機制優化,顯著降低CPU負載與DDR帶寬占用,推動汽車向 "場景驅動" 架構演進。
零拷貝共享內存對車載大數據傳輸的效率提升
武當C1200家族芯片典型應用場景會有多個系統同時運行,如儀表域,輔助駕駛域,座艙域三個系統,系統之間存在數據共享的需求。雖然可以通過以太網等接口交換數據,但是對于圖像和視頻等較大的數據,傳統傳輸方式存在許多缺點,比如:傳輸延遲較高;存在數據拷貝,消耗CPU和帶寬資源;增加系統負載和功耗等。進而會導致車機系統出現卡頓,操作響應延遲,發熱發燙,電源消耗過快,待機時間變短,器件壽命變短等各種問題。
對于大數據量數據交換應用場景,需要一套零拷貝的共享內存機制來提高傳輸效率,并降低系統負載和功耗。因此在武當C1200家族芯片系統中我們專門設計全局內存管理單元,通過該單元來集中管理全芯片的共享內存的申請和釋放,可以實現在多個域、多個系統中共享一個或者多個內存塊。
該方案具有如下優勢:
·全芯片各個域實現數據零拷貝
·降低CPU負載和系統功耗
·降低DDR帶寬占用
·性能高效
·支持分配安全內存
·滿足ISO26262 ASIL D級別功能安全要求
Linux dmabuf機制:從“中間商”到“直達通道”的技術躍遷
早期Linux系統中,不同硬件設備(如攝像頭、顯卡、GPU)之間的數據傳輸需要多次內存拷貝。例如,攝像頭采集的畫面需要先復制到CPU內存,再由CPU傳給GPU處理,最后再復制到顯存用于顯示。
這種“中間商賺差價”的方式不僅耗時,還浪費資源,就像快遞員每次送貨都要重新打包一樣低效。此時急需一種“直達通道”,讓硬件設備像流水線工人一樣直接傳遞半成品,無需中間搬運。Linux dmabuf機制的誕生就是為了充當這個“直達通道”。
該機制可以想象成一種“共享白板”系統,讓不同硬件設備(比如顯卡、攝像頭、GPU)高效傳遞數據,避免重復“抄寫”內容。舉個例子:假設畫家(GPU)在畫布上作畫,完成后需要快遞員(顯示驅動)把畫布送到畫廊(屏幕)展示。傳統方式需要快遞員重新復制一份畫布再運輸,而dmabuf機制允許快遞員直接拿走原畫布,省去了復制步驟。
Linux dmabuf heap機制提供了用戶態分配dmabuf的接口,它就像硬件設備的“共享快遞柜”,通過統一接口和獨立權限控制,讓不同硬件像快遞員一樣高效協作,直接存取數據包裹。用戶只需“掃碼取件”,復雜的底層操作由內存池自動完成。
在Linux-5.10 內核中dmabuf heap提供了分配dmabuf的多個后端實現,通過自定義一種后端實現ipc heap,將dmabuf的分配請求通過ipc(核間通信)發送給全局內存管理單元來處理,以此來實現不同系統間共享內存的統一管理。
全局內存管理單元:ASIL D級安全與O(1)高效算法的雙引擎
全局內存管理單元負責全局內存的分配,釋放和導入等操作,其上運行滿足功能安全ASIL D要求的高效內存管理算法,具有如下優勢:
·實時性高,執行速度快,時間復雜度為O(1)
·碎片少,浪費少,利用率高
Linux前端對外提供的接口基于標準的dmabuf heap接口進行擴展,現有的應用程序,只需要較小的改動即可使用這個流程。具體方案如下圖所示:
不同汽車功能域的操作系統選擇與其應用場景的特性密切相關,比如輔助駕駛域一般使用Linux系統,儀表域一般使用QNX或者Linux系統,座艙域使用Android系統,R核控制域使用RTOS系統。各域操作系統在安全性、實時性、生態兼容性之間實現平衡,支撐汽車從分布式控制向“軟件定義”轉型。圖中一共三個系統,以Linux系統為例,對于需要在兩個系統間共享內存的場景,軟件實現流程如下:
1.Linux應用軟件調用dmabuf heap接口分配內存,指定使用ipc heap,dmabuf heap通過ipc調用從全局內存管理單元獲取內存塊的全局文件描述符,并將其導出為本地Linux dmabuf,得到本系統內的文件描述符。
2.在Linux系統內共享,將本地系統文件描述符傳給使用者,使用者根據文件描述符即可導入dmabuf,實現本系統內設備之間共享使用。
3.跨系統共享,通過dmabuf heap接口獲取對應的全局文件描述符,將全局文件描述符傳給需要使用該內存塊的系統。
o若目的域是Linux系統,根據拿到的全局文件描述符,將其導出為dmabuf, 得到本系統內的文件描述符,即可以在本系統內的設備之間共享使用。
o若目的域是RTOS域,由于不存在類似Linux上面的dmabuf heap內存分配框架,所以通過ipc調用根據全局描述符得到內存塊的物理地址,直接使用物理地址進行共享。
案例1:智能座艙與輔助駕駛的協同渲染——從導航界面到緊急信息零延遲
·座艙域(Android)生成導航界面,通過跨域內存機制共享給輔助駕駛域(Linux)疊加實時路況。
·輔助駕駛域處理完成后,再通過跨域內存機制傳遞給儀表域(QNX)顯示,確保緊急信息零延遲。
這種設計既保證了Linux系統的靈活性,又兼容了RTOS的高效性,支撐汽車向“軟件定義”演進。
案例2:環境建模與AR導航的實時聯動——從傳感器到AR-HUD的毫秒級響應
·輔助駕駛域生成環境模型。輔助駕駛系統(Linux/QNX系統)通過激光雷達、攝像頭等傳感器實時采集道路信息,構建高精度3D環境模型(包含障礙物、車道線、交通標志等數據),并將模型存儲在跨域共享內存中。
·智能座艙域調用共享數據。座艙域(Android系統)從共享內存池中直接讀取環境模型數據,通過AR-HUD(增強現實抬頭顯示)將導航指引、車道偏離預警等信息疊加到駕駛員視野中,實現零拷貝渲染。
·儀表域與控制域的協同響應。儀表域(QNX系統)從共享內存中提取關鍵駕駛狀態數據(如車速、能耗),實時刷新數字儀表顯示??刂朴颍≧TOS系統)直接訪問共享內存中的車輛控制指令(如緊急制動信號),通過CAN總線發送至執行機構,確保毫秒級響應。
性能實測:C1200跨域內存機制如何打破“煙囪式”數據孤島
不同并發與負載場景下,對ADAS域內和全局內存管理單元的性能測試數據,如下所示:
表1是ADAS域在不同負載和并發的測試場景下,Linux系統內核使用系統自帶的機制來分配和釋放域內內存的時間的測試數據。
表2是ADAS域在不同負載和并發的測試場景下,Linux系統內核使用我們提供的跨域內存機制分配和釋放內存的時間的測試數據。
表3是R核域在空負載和并發線程數1的測試場景下,RTOS系統使用我們提供的跨域內存機制分配和釋放內存的時間的測試數據。
通過對比表1,2,3中的數據,可以得出如下結論:
C1200全局跨域內存機制的性能指標參數與ADAS域Linux系統內核自帶的機制的性能指標參數處于同一數量級,可滿足實際業務需求。
跨域內存共享技術打破了傳統“煙囪式”數據孤島,支撐多域實時協同,是汽車從“功能疊加”向“場景驅動”演進的關鍵使能技術。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.