Glibc删除了各种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

当前文章:Glibc删除了各种SSSE3优化的代码路径
URL地址:http://www.hantingmc.com/qtweb/news20/399870.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联