上海 2025年6月23日 /美通社/ -- 近期,黑芝麻智能分享了其如何通过零拷贝共享内存技术,解决车载多域间大数据传输的延迟与资源消耗问题。核心技术包括全局内存管理单元和dmabuf机制优化,显著降低CPU负载与DDR带宽占用,推动汽车向 "场景驱动" 架构演进。
零拷贝共享内存对车载大数据传输的效率提升
武当C1200家族芯片典型应用场景会有多个系统同时运行,如仪表域,辅助驾驶域,座舱域三个系统,系统之间存在数据共享的需求。虽然可以通过以太网等接口交换数据,但是对于图像和视频等较大的数据,传统传输方式存在许多缺点,比如:传输延迟较高;存在数据拷贝,消耗CPU和带宽资源;增加系统负载和功耗等。进而会导致车机系统出现卡顿,操作响应延迟,发热发烫,电源消耗过快,待机时间变短,器件寿命变短等各种问题。
对于大数据量数据交换应用场景,需要一套零拷贝的共享内存机制来提高传输效率,并降低系统负载和功耗。因此在武当C1200家族芯片系统中我们专门设计全局内存管理单元,通过该单元来集中管理全芯片的共享内存的申请和释放,可以实现在多个域、多个系统中共享一个或者多个内存块。该方案具有如下优势:
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要求的高效内存管理算法,具有如下优势:
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接口获取对应的全局文件描述符,将全局文件描述符传给需要使用该内存块的系统。
案例 1:智能座舱与辅助驾驶的协同渲染——从导航界面到紧急信息零延迟
这种设计既保证了Linux系统的灵活性,又兼容了RTOS的高效性,支撑汽车向"软件定义"演进。
案例 2:环境建模与AR导航的实时联动——从传感器到AR-HUD的毫秒级响应
性能实测: C1200跨域内存机制如何打破"烟囱式"数据孤岛
不同并发与负载场景下,对ADAS域内和全局内存管理单元的性能测试数据,如下所示:
表1是ADAS域在不同负载和并发的测试场景下,Linux系统内核使用系统自带的机制来分配和释放域内内存的时间的测试数据。
表2是ADAS域在不同负载和并发的测试场景下,Linux系统内核使用我们提供的跨域内存机制分配和释放内存的时间的测试数据。
表3是R核域在空负载和并发线程数1的测试场景下,RTOS系统使用我们提供的跨域内存机制分配和释放内存的时间的测试数据。
通过对比表1,2,3中的数据,可以得出如下结论:
C1200全局跨域内存机制的性能指标参数与ADAS域Linux系统内核自带的机制的性能指标参数处于同一数量级,可满足实际业务需求。
跨域内存共享技术打破了传统"烟囱式"数据孤岛,支撑多域实时协同,是汽车从"功能叠加"向"场景驱动"演进的关键使能技术。