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 代码路径。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
索尼为 exFAT Linux 驱动提供了 73% 以上的性能改进
索尼工程师最新提交了一个补丁,以改进Linux 内核 exFAT 文件系统驱动程序的性能。exFAT 文件系统是 FAT32 的替代者,它由微软开发,但是不仅用于 Windows 系统。目前 exFAT 在整个电子行业中都得到了广泛应用,特别是 SD 卡、USB 闪存驱动、数码相机和 MP3 播放器中使用最为充分。 根据介绍,当 exFAT 文件系统以其“dirsync”模式挂载时,该改进减少了 cluster 清零时的 block requests。 “如果启用了'dirsync',在对 cluster 进行清零时,逐个扇区提交将产生许多 block requests,导致 block device 不能完全发挥其性能。 这种 commit 方式使得 cluster 中的扇区被一次性提交,它将减少 block requests 的数量;使得 block device 的性能得到充分的发挥。” 索尼工程师 Yuezhang Mo 在带有 SD 卡存储的 Arm 测试平台上进行的测试结果表明,此改进带来了 73% 的性能提升甚至更高。“在 imx6q-sabrelite 上,性能已经提高...
- 下一篇
GitHub 称黑客使用窃取的 OAuth 令牌入侵了 npm 等数十个组织
GitHub 首席安全官 Mike Hanley 透露,攻击者正在使用被盗的 OAuth 用户令牌从私有存储库中下载数据。 有证据表明,攻击者滥用被盗的 OAuth 用户令牌发给两个第三方 OAuth 集成商 Heroku 和 Travis-CI,然后从包括 npm 在内的数十个组织下载数据。这些集成商维护的应用程序被 GitHub 用户使用,包括 GitHub 本身。 攻击者并非通过入侵 GitHub 或其系统获得了这些令牌,因为 GitHub 未以原始可用格式存储相关令牌。 应用程序和服务使用 OAuth 访问令牌以授权访问特定的用户数据并相互通信,而无需共享实际凭据。OAuth 访问令牌是用于将授权从单点登录 ( SSO ) 服务传递到另一个应用程序的最常用方法之一。 GitHub 安全于 4 月 12 日发现,有攻击者使用泄露的 AWS API 密钥对 GitHub 的 npm 生产基础设施进行未经授权的访问。这个 AWS API 密钥是攻击者通过使用窃取的 OAuth 令牌从一组私有 npm 仓库中获得的,但攻击者没有修改任何 GitHub 包或访问任何用户帐户数据,只下载了...
相关文章
文章评论
共有0条评论来说两句吧...