__m128i sse
uint64x2_t neon
__m256i avx2
__m512i avx512
vector altivec
distributor 库提供流量动态负载平衡功能,在这种场景下有一个分发器 lcore,负责负载平衡或分发数据包,以及一组 worker lcore,负责从分发器接收数据包和对它们进行操作。
此库中使用 sse 向量指令优化了匹配 flow 的过程。
使用 sse、avx512 指令优化 memcpy 函数,封装为 rte_memcpy 函数
sse、neon、avx512 三种向量指令的不同 crc 计算方式
DPDK LPM 库组件为 32 位密钥实现最长前缀匹配 (LPM) 表搜索方法,该方法通常用于在 IP 转发应用程序中查找最佳路由匹配
提供使用 sse、neon 指令实现的 rte_lpm_lookupx4 接口实现最长前缀匹配表搜索。
RTE_ACL_CLASSIFY_SSE
:向量实现,最多可以并行处理 8 个流。需要 SSE 4.1 支持。要求最大 SIMD 位宽至少为 128。
RTE_ACL_CLASSIFY_AVX2
:向量实现,最多可以并行处理16个流。需要 AVX2 支持。要求最大 SIMD 位宽至少为 256。
RTE_ACL_CLASSIFY_NEON
:向量实现,最多可以并行处理8个流。需要 NEON 支持。要求最大 SIMD 位宽至少为 128。
RTE_ACL_CLASSIFY_ALTIVEC
:向量实现,最多可以并行处理8个流。需要 ALTIVEC 支持。要求最大 SIMD 位宽至少为 128。
RTE_ACL_CLASSIFY_AVX512X16
:向量实现,最多可以并行处理16个流。使用 256 位宽的 SIMD 寄存器。需要 AVX512 支持。要求最大 SIMD 位宽至少为 256。
RTE_ACL_CLASSIFY_AVX512X32
:向量实现,最多可以并行处理32个流。使用 512 位宽的 SIMD 寄存器。需要 AVX512 支持。要求最大 SIMD 位宽至少为 512。
FIB 库为 32 位密钥或 128 位 IPv6 提供了快速的最长前缀匹配 (LPM) 搜索。它可以用于多种应用,其中最典型的是IPv4/IPv6转发。
FIB 库中使用 avx512 向量指令优化查表过程。
ip4_lookup_node_process_vec 函数支持 x86 sse 与 arm neon 向量指令优化。
lib/efd/rte_efd_x86.h
lib/hash/rte_cmp_x86.h
lib/hash/rte_cuckoo_hash.c
lib/hash/rte_thash.h
lib/hash/rte_thash_x86_gfni.h
lib/member/rte_member_x86.h
lib/sched/rte_sched.c