新聞中心
根據(jù)介紹,Supplemental Streaming SIMD Extensions 3 (SSSE3) 可以追溯到十多年前的 Intel Xeon 5100 / Core 2 days 或 AMD Bobcat/Bulldozer,彼時(shí)的設(shè)想是作為 SSE 的一個(gè)迭代。但是由于 Glibc 也攜帶了與 SSSE3 差不多時(shí)間的舊版 SSE2 或 SSE4.1 的優(yōu)化代碼路徑,加上用于較新的 Intel/AMD CPU 的 AVX2 和 EVEX 代碼路徑,SSSE3 代碼路徑正在被逐步淘汰。

創(chuàng)新互聯(lián)建站,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站制作、自適應(yīng)網(wǎng)站建設(shè)、展示型網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)等服務(wù),幫助中小企業(yè)通過(guò)網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷(xiāo)推廣問(wèn)題。
考慮到 SSE2/SSE4.1/AVX2/EVEX 代碼路徑的存在,Glibc 開(kāi)發(fā)人員認(rèn)為不再值得提供 SSSE3 優(yōu)化的代碼路徑;因?yàn)橐呀?jīng)很少有 Intel/AMD CPU 留給 SSSE3 路徑,且在代碼中提供 SSSE3 支持需要的成本并不低。從上周開(kāi)始,開(kāi)發(fā)人員已經(jīng)開(kāi)始著手移除它。
圍繞 memmove/mempcpy/memcpy 的 SSSE3 代碼也有所減少。commit 內(nèi)容解釋稱:
目標(biāo)是刪除大多數(shù) SSSE3 function,因?yàn)?SSE4、AVX2 和 EVEX 通常更可取。memcpy/memmove 是一個(gè)例外,對(duì)于某些目標(biāo)來(lái)說(shuō),用`palignr`避免無(wú)符號(hào)負(fù)載很重要。
此 commit 用一個(gè)更好的優(yōu)化和更低的代碼占用率的版本替換了 memmove-ssse3,同時(shí)它還將 memcpy 別名為 memmove。
除此之外,所有其他 SSSE3 functions 都應(yīng)該可以安全刪除。性能并沒(méi)有發(fā)生太大變化,盡管顯示了整體改進(jìn)而沒(méi)有任何重大的 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 上運(yùn)行的基準(zhǔn)測(cè)試結(jié)果可見(jiàn)附件。
更重要的是,此舉在 memmove 中節(jié)省了 7246 個(gè)字節(jié)的代碼大小,通過(guò)將 memmove 代碼重新用于 memcpy 又節(jié)省了10741個(gè)字節(jié)(總共節(jié)省了 17987 個(gè)字節(jié))。還有一個(gè)額外的 896 字節(jié)的 jump table entries 的rodata。
Glibc 2.36 版本正在逐步淘汰相關(guān)的 SSSE3 代碼路徑。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:Glibc 刪除了各種 SSSE3 優(yōu)化的代碼路徑
本文地址:https://www.oschina.net/news/191709/glibc-dropping-ssse3-paths
分享標(biāo)題:Glibc刪除了各種SSSE3優(yōu)化的代碼路徑
轉(zhuǎn)載注明:http://m.fisionsoft.com.cn/article/djsoppp.html


咨詢
建站咨詢
