加速内存操作的利器
--SPDK 加速框架介绍
SPDK从去年7月(20.07 release)开始,开始发布SPDK 加速框架(SPDK acceleration framework)的模块,这个模块可以对支持内存操作卸载的硬件(诸如I/OAT或者DSA)进行抽象和封装,使得上层软件层可以简便的使用,从而卸载CPU的一些工作量。
SDPK加速框架介绍
图1给出了SPDK 加速框架(Acceleration Framework)的抽象图,主要分为以下几个部分:
1. 抽象层:
提供统一的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。