SDMA介绍及使能
System Direct Memory Access(SDMA)是系统中负责数据的高带宽低延迟搬运的模块,是一种分布式分离式的DMA引擎。SDMA driver适配鲲鹏920专业版处理器的SDMA引擎,提供安全和性能两种模式,可满足多种应用场景需求。
SDMA为DMA的控制器,接受来自软件或者调度器的搬移任务,然后控制硬件完成搬移操作,最后通知软件的搬移完成状态,实现高带宽、低延迟的数据搬移。由于SDMA和其他device上的加速器是异步的,因此数据搬移可以在计算过程中完成,将数据搬移的开销掩盖在计算流水内,降低业务的非计算额外开销。
使能SDMA首先需要开启SMMU配置,具体开启方式参考上文提到的SMMU配置。
SDMA 组件分为用户态驱动和内核态驱动,使能系统中SDMA功能时,需要确保SDMA用户态驱动和内核态驱动加载正确。
通过下述命令查询SDMA内核态驱动是否加载:
ll /dev/sdma*
SDMA内核态驱动加载正确时,该路径下能够查询到4个SDMA设备,分别是sdma0、sdma1、sdma2、sdma3。
通过下述命令查询SDMA用户软件包是否正确安装:
ll /usr/lib64 | grep sdma
SDMA用户态软件包正确安装时,/usr/lib64目录下能够查询到libsdma_dk.so。
父主题: 鲲鹏920专业版SDMA编程