主要观点:AMD Zen 4 和 Zen 5 以及近期的 Intel 服务器处理器支持 AVX - 512 指令集,它是强大的 SIMD 指令,允许“掩码”操作,可快速将 ASCII 字符串转换为小写。
关键信息:
- AVX - 512 可一次加载 64 字节,可安全进行对齐加载,内存页按 64 字节划分。
- 有多种将 ASCII 字母转换为小写的函数实现,如使用 SIMD 指令的 tolower64 函数等。
- 有处理字符串转换为小写的函数,如处理 64 字节块的 lower64 函数,以 64 字节为块进行处理更高效。
- 该 AVX - 512 代码在 Intel Ice Lake 处理器和 LLVM 16 下的测试结果,在小字符串上比传统方法快 20 倍,在短字符串上仍有竞争力。
重要细节: - tolower64 函数通过比较和掩码操作将 64 字节块的字符转换为小写。
- lower64 函数处理字符串转换为小写,处理 64 字节块,考虑字符串对齐情况。
- 测试中使用不同大小的固定字符串进行基准测试,报告速度为 GB/s。
- 只有 AVX - 512 指令集能实现这种神奇性能,Intel 非服务器处理器不再包含 AVX - 512。
- 提到一年前与 Robert Clausecker 讨论过这些问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。