日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Intel 的AVX2指令集解讀

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

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

昨天,Intel剛剛發(fā)布了AVX2指令集,這套指令集在AVX基礎(chǔ)上做了擴(kuò)展,不過(guò)要在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位,但僅僅增加了對(duì)256位的浮點(diǎn)SIMD支持,整點(diǎn)SIMD數(shù)據(jù)的寬度還停留在128位上,
  • 增強(qiáng)廣播、置換指令支持的數(shù)據(jù)元素類(lèi)型、移位操作對(duì)各個(gè)數(shù)據(jù)元素可變移位數(shù)的支持、跨距訪存支持。

跨距訪存支持

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

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

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

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

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

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

位操作指令支持

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

新增的位訪存操作指令

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

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

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

向量-向量移位支持

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

向量-向量移位操作支持

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

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

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

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

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多