小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Intel 的AVX2指令集解讀

 尋仙補(bǔ)記 2019-11-21

在Intel Sandy Bridge微架構(gòu)中,Intel引入了256位SIMD擴(kuò)展AVX,這套指令集在兼容原MMX、SSE、SSE2對128位整點(diǎn)SIMD支持的基礎(chǔ)上,把支持的總向量數(shù)據(jù)寬度擴(kuò)展成了256位。新增了若干條256位浮點(diǎn)SIMD指令。

昨天,Intel剛剛發(fā)布了AVX2指令集,這套指令集在AVX基礎(chǔ)上做了擴(kuò)展,不過要在2013年發(fā)布的Haswell處理器上才能支持。參考1給出了AVX2的詳細(xì)特性。

AVX2指令集概述

相比AVX,AVX2在如下方面做了擴(kuò)展。

  • 支持的整點(diǎn)SIMD數(shù)據(jù)寬度從128位擴(kuò)展到256位。Sandy Bridge雖然已經(jīng)將支持的SIMD數(shù)據(jù)寬度增加到了256位,但僅僅增加了對256位的浮點(diǎn)SIMD支持,整點(diǎn)SIMD數(shù)據(jù)的寬度還停留在128位上,
  • 增強(qiáng)廣播、置換指令支持的數(shù)據(jù)元素類型、移位操作對各個數(shù)據(jù)元素可變移位數(shù)的支持、跨距訪存支持。

跨距訪存支持

跨距訪存支持即訪存時,每個SIMD數(shù)據(jù)的向量數(shù)據(jù)元素可以來自不相鄰的內(nèi)存地址。AVX2的跨距訪存指令稱為”gather”指令,該指令的操作數(shù)是一個基地址加一個向量寄存器,向量寄存器中存放著SIMD數(shù)據(jù)中各個元素相對基地址的偏移量是多少。有了這條指令,CPU可以輕松用一條指令實(shí)現(xiàn)若干不連續(xù)數(shù)據(jù)”聚集”到一個SIMD寄存器中。這會對編譯器和虛擬機(jī)充分利用向量指令帶來很大便利,尤其是自動向量化。另外,參考2中對跨距訪存指令的功能描述中可以看到,當(dāng)該指令的偏移地址向量寄存器中任何兩個值相同時,都會出GP錯。這意味著編譯器還是需要些特殊處理才能利用好這條指令。

跨距訪存指令跨距訪存指令

但跨距訪存指令僅僅支持32位整點(diǎn)、64位整點(diǎn)、單精度浮點(diǎn)、雙精度浮點(diǎn)的跨距訪存操作。從參考4可以猜測其實(shí)gather指令只是在硬件上分解成若干條32位或64位的微訪存指令實(shí)現(xiàn)。這就移位著其實(shí)一條32×8的SIMD訪存其實(shí)就是8次32位普通數(shù)據(jù)訪存,其訪存延時和延時不確定性會非常大,聊剩于無。

拓寬原有整點(diǎn)SIMD指令

理論上從128位到256位的成倍SIMD寬度擴(kuò)展能帶來一倍的加速。

從128位擴(kuò)展到256位的整點(diǎn)SIMD指令

位操作指令支持

這些指令在加速數(shù)據(jù)庫壓縮、哈希,大數(shù)的算術(shù)計算方面會有幫助。

新增的位訪存操作指令

任意位置的SIMD數(shù)據(jù)置換支持

這一支持將使編譯器可以更靈活的使用這條指令協(xié)助自動向量化。像參考5這類工作就能實(shí)施在Intel的芯片中。

任意位置數(shù)據(jù)置換指令支持

向量-向量移位支持

之前Intel上的所有SIMD擴(kuò)展指令的移位操作僅支持所有SIMD數(shù)據(jù)同時移位相同的位數(shù),有了向量-向量移位支持,就可以為每個SIMD數(shù)據(jù)做不同的移位操作。

向量-向量移位操作支持

浮點(diǎn)乘法累積操作

之前的X86處理器上的累積操作多數(shù)針對整點(diǎn)數(shù)據(jù),這次針對浮點(diǎn)數(shù)據(jù)增加的60條SIMD操作會給Intel跑浮點(diǎn)Benchmark,比如linpack之類的帶來很多加速。

編譯點(diǎn)滴》評論

之前幾乎所有在通用微處理器上的SIMD指令,都傾向于一刀切策略,即所有的SIMD操作都針對SIMD數(shù)據(jù)實(shí)施完全相同的操作,并不存在特性化的指令。比如訪存都是從一塊連續(xù)的地址空間直接訪存、移位時所有的數(shù)據(jù)都移動相同的位數(shù),數(shù)據(jù)置換指令的支持也是最近才出現(xiàn)在通用CPU中的。AVX2的這些支持再次肯定了個性化的趨勢,CPU中的SIMD支持朝著GPU的方向大踏步前進(jìn),并最終趕上并超越向量機(jī)。不得不稱贊一下IBM的超前思想。AVX2中的這些特性支持在幾年前的Power處理器中就已經(jīng)出現(xiàn)了。

雖然AVX號稱可以擴(kuò)展到512位甚至1024位的SIMD支持,但是所帶來的問題怎么解決,期待AVX3或者AMD的小宇宙爆發(fā),或者威盛的黑馬:

  1. 理論上,增加1倍的向量數(shù)據(jù)寬度,將帶來2倍的晶體管數(shù)量提升。目前,Intel的AVX指令集只實(shí)現(xiàn)在片上每個core里,作為core中的一個功能部件,若擴(kuò)展到1024位,將增加4倍的晶體管。雖然制造工藝也會改進(jìn),但功耗還是會很大,怎么解決?
  2. 在自動向量化仍然不好用的前提下,普通程序很難利用到這些功能做加速,白白的浪費(fèi)這些晶體管嗎?
  3. 這么大的數(shù)據(jù)計算能力,訪存怎么供數(shù)?對齊貌似還是沒有好的方法。還是要程序員自己吭哧吭哧寫向量化代碼,調(diào)試嗎?芯片廠商可以每幾年升級一次寬度,但兼容性如何保證,原來有64位、128位、256位分別對應(yīng)MMX、XMM、YMM寄存器,以后呢?

參考

  1. http://software.intel.com/en-us/blogs/2011/06/13/haswell-new-instruction-descriptions-now-available/
  2. http://software.intel.com/file/36945
  3. http://en./wiki/Haswell_%28microarchitecture%29
  4. http://software.intel.com/en-us/forums/showthread.php?t=83459&o=a&s=lr
  5. http://portal./citation.cfm?id=1133996

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多