加速内存操作的利器
SPDK从去年7月(20.07 release)开始,开始发布SPDK 加速框架(SPDK acceleration framework)的模块,这个模块可以对支持内存操作卸载的硬件(诸如I/OAT或者DSA)进行抽象和封装,使得上层软件层可以简便的使用,从而卸载CPU的一些工作量。
SDPK加速框架介绍
图1给出了SPDK 加速框架(Acceleration Framework)的抽象图,主要分为以下几个部分:
I. 抽象层:
提供统一的API接口。SPDK的Acceleration Framework 主要支持以下几种的内存加速操作:
a. 内存拷贝(ACCEL_COPY)
b. 内存填充(ACCEL_FILL)
c. 内存比较(ACCEL_COMPARE)
d. 内存双播(ACCEL_DUALCAST)
e. 内存CRC32C的计算 (ACCEL_CRC32C)
f. 内存的DIF操作(ACCEL_DIF)主要用于一些存储协议中的使用,诸如NVMe over Fabrics.
g. 内存的拷贝加CRC32C操作 (ACCEL_COPY_CRC32C)
一些常用的API 包括spdk_accel_batch_prep_crc32c,spdk_accel_submit_copy等。目前代码位于如下的位置:
- 头文件位于:include/spdk/accel_engine.h(外部头文件), spdk_internal/accel_engine.h(内部头文件)
- C代码位于 :lib/accel。