Glibc 删除了各种 SSSE3 优化的代码路径

开发
最新的 GNU C Library (Glibc) 开发代码已经开始丢弃各种 SSSE3 优化代码路径。从上周开始,开发人员已经开始着手移除它。

最新的 GNU C Library (Glibc) 开发代码已经开始丢弃各种 SSSE3 优化代码路径。其中包括删除 mem{move| cpy }-ssse3-back、str{p}{n}cpy-ssse3、str{n}cat-ssse3、str{n}{case}cmp-ssse3 和 {w }memcmp-ssse3 代码路径。

根据介绍,Supplemental Streaming SIMD Extensions 3 (SSSE3) 可以追溯到十多年前的 Intel Xeon 5100 / Core 2 days 或 AMD Bobcat/Bulldozer,彼时的设想是作为 SSE 的一个迭代。但是由于 Glibc 也携带了与 SSSE3 差不多时间的旧版 SSE2 或 SSE4.1 的优化代码路径,加上用于较新的 Intel/AMD CPU 的 AVX2 和 EVEX 代码路径,SSSE3 代码路径正在被逐步淘汰。

考虑到 SSE2/SSE4.1/AVX2/EVEX 代码路径的存在,Glibc 开发人员认为不再值得提供 SSSE3 优化的代码路径;因为已经很少有 Intel/AMD CPU 留给 SSSE3 路径,且在代码中提供 SSSE3 支持需要的成本并不低。从上周开始,开发人员已经开始着手移除它。

围绕 memmove/mempcpy/memcpy 的 SSSE3 代码也有所减少。commit 内容解释称:

目标是删除大多数 SSSE3 function,因为 SSE4、AVX2 和 EVEX 通常更可取。memcpy/memmove 是一个例外,对于某些目标来说,用`palignr`避免无符号负载很重要。

此 commit 用一个更好的优化和更低的代码占用率的版本替换了 memmove-ssse3,同时它还将 memcpy 别名为 memmove。

除此之外,所有其他 SSSE3 functions 都应该可以安全删除。性能并没有发生太大变化,尽管显示了整体改进而没有任何重大的 regressions 或 gains。

  • bench-memcpy geometric_mean(N=50) New / Original: 0.957
  • bench-memcpy-random geometric_mean(N=50) New / Original: 0.912
  • bench-memcpy-large geometric_mean(N=50) New / Original: 0.892
  • Benchmarks where run on Zhaoxin KX-6840@2000MHz

完整的在 Zhaoxin KX-6840@2000MHz 上运行的基准测试结果可见附件。

更重要的是,此举在 memmove 中节省了 7246 个字节的代码大小,通过将 memmove 代码重新用于 memcpy 又节省了10741个字节(总共节省了 17987 个字节)。还有一个额外的 896 字节的 jump table entries 的rodata。

Glibc 2.36 版本正在逐步淘汰相关的 SSSE3 代码路径。

本文转自OSCHINA

本文标题:Glibc 删除了各种 SSSE3 优化的代码路径

本文地址:https://www.oschina.net/news/191709/glibc-dropping-ssse3-paths

责任编辑:未丽燕 来源: 开源中国
相关推荐

2021-07-01 10:15:25

Linux 5.14IDE代码内核

2013-09-04 09:55:32

C++

2021-01-15 05:16:37

Vue3开源代码量

2019-07-30 16:16:11

Windows 10删除快速访问

2021-11-29 07:06:40

代码公司 程序员

2023-07-10 16:18:18

性能优化开发

2019-08-20 15:55:14

Windows 10EFI分区Windows

2017-11-03 09:59:16

Linux文件空间

2022-07-26 09:48:55

微服务服务AKF

2011-07-13 17:28:53

sa密码SQL Server

2016-11-22 19:37:54

Linux恢复文件

2023-04-10 11:18:38

前端性能优化

2011-07-13 09:46:23

javaScript

2021-04-09 09:20:10

Windows 10微软浏览器

2023-03-05 22:11:20

删除文件磁盘

2020-08-08 11:49:04

微软应用商店Chromium

2012-02-22 10:23:59

WAN优化带宽管理

2023-09-18 23:42:27

C++编程

2023-12-08 08:01:14

Redis存储内存

2016-04-22 10:10:45

数据中心
点赞
收藏

51CTO技术栈公众号