上海 2025年6月23日 /美通社/ -- 近期,黑芝麻智能分享了其如何通過零拷貝共享內(nèi)存技術(shù),解決車載多域間大數(shù)據(jù)傳輸?shù)难舆t與資源消耗問題。核心技術(shù)包括全局內(nèi)存管理單元和dmabuf機(jī)制優(yōu)化,顯著降低CPU負(fù)載與DDR帶寬占用,推動(dòng)汽車向 "場(chǎng)景驅(qū)動(dòng)" 架構(gòu)演進(jìn)。
零拷貝共享內(nèi)存對(duì)車載大數(shù)據(jù)傳輸?shù)男侍嵘?/b>
武當(dāng)C1200家族芯片典型應(yīng)用場(chǎng)景會(huì)有多個(gè)系統(tǒng)同時(shí)運(yùn)行,如儀表域,輔助駕駛域,座艙域三個(gè)系統(tǒng),系統(tǒng)之間存在數(shù)據(jù)共享的需求。雖然可以通過以太網(wǎng)等接口交換數(shù)據(jù),但是對(duì)于圖像和視頻等較大的數(shù)據(jù),傳統(tǒng)傳輸方式存在許多缺點(diǎn),比如:傳輸延遲較高;存在數(shù)據(jù)拷貝,消耗CPU和帶寬資源;增加系統(tǒng)負(fù)載和功耗等。進(jìn)而會(huì)導(dǎo)致車機(jī)系統(tǒng)出現(xiàn)卡頓,操作響應(yīng)延遲,發(fā)熱發(fā)燙,電源消耗過快,待機(jī)時(shí)間變短,器件壽命變短等各種問題。
對(duì)于大數(shù)據(jù)量數(shù)據(jù)交換應(yīng)用場(chǎng)景,需要一套零拷貝的共享內(nèi)存機(jī)制來提高傳輸效率,并降低系統(tǒng)負(fù)載和功耗。因此在武當(dāng)C1200家族芯片系統(tǒng)中我們專門設(shè)計(jì)全局內(nèi)存管理單元,通過該單元來集中管理全芯片的共享內(nèi)存的申請(qǐng)和釋放,可以實(shí)現(xiàn)在多個(gè)域、多個(gè)系統(tǒng)中共享一個(gè)或者多個(gè)內(nèi)存塊。該方案具有如下優(yōu)勢(shì):
Linux dmabuf機(jī)制:從"中間商"到"直達(dá)通道"的技術(shù)躍遷
早期Linux系統(tǒng)中,不同硬件設(shè)備(如攝像頭、顯卡、GPU)之間的數(shù)據(jù)傳輸需要多次內(nèi)存拷貝。例如,攝像頭采集的畫面需要先復(fù)制到CPU內(nèi)存,再由CPU傳給GPU處理,最后再復(fù)制到顯存用于顯示。
這種"中間商賺差價(jià)"的方式不僅耗時(shí),還浪費(fèi)資源,就像快遞員每次送貨都要重新打包一樣低效。此時(shí)急需一種"直達(dá)通道",讓硬件設(shè)備像流水線工人一樣直接傳遞半成品,無需中間搬運(yùn)。Linux dmabuf機(jī)制的誕生就是為了充當(dāng)這個(gè)"直達(dá)通道"。
該機(jī)制可以想象成一種"共享白板"系統(tǒng),讓不同硬件設(shè)備(比如顯卡、攝像頭、GPU)高效傳遞數(shù)據(jù),避免重復(fù)"抄寫"內(nèi)容。舉個(gè)例子:假設(shè)畫家(GPU)在畫布上作畫,完成后需要快遞員(顯示驅(qū)動(dòng))把畫布送到畫廊(屏幕)展示。傳統(tǒng)方式需要快遞員重新復(fù)制一份畫布再運(yùn)輸,而dmabuf機(jī)制允許快遞員直接拿走原畫布,省去了復(fù)制步驟。
Linux dmabuf heap機(jī)制提供了用戶態(tài)分配dmabuf的接口,它就像硬件設(shè)備的"共享快遞柜",通過統(tǒng)一接口和獨(dú)立權(quán)限控制,讓不同硬件像快遞員一樣高效協(xié)作,直接存取數(shù)據(jù)包裹。用戶只需"掃碼取件",復(fù)雜的底層操作由內(nèi)存池自動(dòng)完成。
在Linux-5.10 內(nèi)核中dmabuf heap提供了分配dmabuf的多個(gè)后端實(shí)現(xiàn),通過自定義一種后端實(shí)現(xiàn)ipc heap,將dmabuf的分配請(qǐng)求通過ipc(核間通信)發(fā)送給全局內(nèi)存管理單元來處理,以此來實(shí)現(xiàn)不同系統(tǒng)間共享內(nèi)存的統(tǒng)一管理。
全局內(nèi)存管理單元: ASIL D級(jí)安全與O(1)高效算法的雙引擎
全局內(nèi)存管理單元負(fù)責(zé)全局內(nèi)存的分配,釋放和導(dǎo)入等操作,其上運(yùn)行滿足功能安全ASIL D要求的高效內(nèi)存管理算法,具有如下優(yōu)勢(shì):
Linux前端對(duì)外提供的接口基于標(biāo)準(zhǔn)的dmabuf heap接口進(jìn)行擴(kuò)展,現(xiàn)有的應(yīng)用程序,只需要較小的改動(dòng)即可使用這個(gè)流程。具體方案如下圖所示:
不同汽車功能域的操作系統(tǒng)選擇與其應(yīng)用場(chǎng)景的特性密切相關(guān),比如輔助駕駛域一般使用Linux系統(tǒng),儀表域一般使用QNX或者Linux系統(tǒng),座艙域使用Android系統(tǒng),R核控制域使用RTOS系統(tǒng)。各域操作系統(tǒng)在安全性、實(shí)時(shí)性、生態(tài)兼容性之間實(shí)現(xiàn)平衡,支撐汽車從分布式控制向"軟件定義"轉(zhuǎn)型。圖中一共三個(gè)系統(tǒng),以Linux系統(tǒng)為例,對(duì)于需要在兩個(gè)系統(tǒng)間共享內(nèi)存的場(chǎng)景,軟件實(shí)現(xiàn)流程如下:
1. Linux應(yīng)用軟件調(diào)用dmabuf heap接口分配內(nèi)存,指定使用ipc heap,dmabuf heap通過ipc調(diào)用從全局內(nèi)存管理單元獲取內(nèi)存塊的全局文件描述符,并將其導(dǎo)出為本地Linux dmabuf,得到本系統(tǒng)內(nèi)的文件描述符。
2. 在Linux系統(tǒng)內(nèi)共享,將本地系統(tǒng)文件描述符傳給使用者,使用者根據(jù)文件描述符即可導(dǎo)入dmabuf,實(shí)現(xiàn)本系統(tǒng)內(nèi)設(shè)備之間共享使用。
3. 跨系統(tǒng)共享,通過dmabuf heap接口獲取對(duì)應(yīng)的全局文件描述符,將全局文件描述符傳給需要使用該內(nèi)存塊的系統(tǒng)。
案例 1:智能座艙與輔助駕駛的協(xié)同渲染——從導(dǎo)航界面到緊急信息零延遲
這種設(shè)計(jì)既保證了Linux系統(tǒng)的靈活性,又兼容了RTOS的高效性,支撐汽車向"軟件定義"演進(jìn)。
案例 2:環(huán)境建模與AR導(dǎo)航的實(shí)時(shí)聯(lián)動(dòng)——從傳感器到AR-HUD的毫秒級(jí)響應(yīng)
性能實(shí)測(cè): C1200跨域內(nèi)存機(jī)制如何打破"煙囪式"數(shù)據(jù)孤島
不同并發(fā)與負(fù)載場(chǎng)景下,對(duì)ADAS域內(nèi)和全局內(nèi)存管理單元的性能測(cè)試數(shù)據(jù),如下所示:
表1是ADAS域在不同負(fù)載和并發(fā)的測(cè)試場(chǎng)景下,Linux系統(tǒng)內(nèi)核使用系統(tǒng)自帶的機(jī)制來分配和釋放域內(nèi)內(nèi)存的時(shí)間的測(cè)試數(shù)據(jù)。
表2是ADAS域在不同負(fù)載和并發(fā)的測(cè)試場(chǎng)景下,Linux系統(tǒng)內(nèi)核使用我們提供的跨域內(nèi)存機(jī)制分配和釋放內(nèi)存的時(shí)間的測(cè)試數(shù)據(jù)。
表3是R核域在空負(fù)載和并發(fā)線程數(shù)1的測(cè)試場(chǎng)景下,RTOS系統(tǒng)使用我們提供的跨域內(nèi)存機(jī)制分配和釋放內(nèi)存的時(shí)間的測(cè)試數(shù)據(jù)。
通過對(duì)比表1,2,3中的數(shù)據(jù),可以得出如下結(jié)論:
C1200全局跨域內(nèi)存機(jī)制的性能指標(biāo)參數(shù)與ADAS域Linux系統(tǒng)內(nèi)核自帶的機(jī)制的性能指標(biāo)參數(shù)處于同一數(shù)量級(jí),可滿足實(shí)際業(yè)務(wù)需求。
跨域內(nèi)存共享技術(shù)打破了傳統(tǒng)"煙囪式"數(shù)據(jù)孤島,支撐多域?qū)崟r(shí)協(xié)同,是汽車從"功能疊加"向"場(chǎng)景驅(qū)動(dòng)"演進(jìn)的關(guān)鍵使能技術(shù)。