久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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ò)展,不過要在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ù)元素類型、移位操作對(duì)各個(gè)數(shù)據(jù)元素可變移位數(shù)的支持,、跨距訪存支持,。

跨距訪存支持

跨距訪存支持即訪存時(shí),每個(gè)SIMD數(shù)據(jù)的向量數(shù)據(jù)元素可以來自不相鄰的內(nèi)存地址,。AVX2的跨距訪存指令稱為”gather”指令,,該指令的操作數(shù)是一個(gè)基地址加一個(gè)向量寄存器,向量寄存器中存放著SIMD數(shù)據(jù)中各個(gè)元素相對(duì)基地址的偏移量是多少,。有了這條指令,,CPU可以輕松用一條指令實(shí)現(xiàn)若干不連續(xù)數(shù)據(jù)”聚集”到一個(gè)SIMD寄存器中。這會(huì)對(duì)編譯器和虛擬機(jī)充分利用向量指令帶來很大便利,,尤其是自動(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ì)非常大,聊剩于無,。

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

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

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

位操作指令支持

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

新增的位訪存操作指令

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

這一支持將使編譯器可以更靈活的使用這條指令協(xié)助自動(dòng)向量化。像參考5這類工作就能實(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之類的帶來很多加速。

編譯點(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ī),。不得不稱贊一下IBM的超前思想,。AVX2中的這些特性支持在幾年前的Power處理器中就已經(jīng)出現(xiàn)了。

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

  1. 理論上,,增加1倍的向量數(shù)據(jù)寬度,,將帶來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ì)齊貌似還是沒有好的方法,。還是要程序員自己吭哧吭哧寫向量化代碼,調(diào)試嗎,?芯片廠商可以每幾年升級(jí)一次寬度,,但兼容性如何保證,,原來有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)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(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)遵守用戶 評(píng)論公約

    類似文章 更多