AVX指令集

AVX指令集

單指令多數據流
SandyBridge和Larrabee架構下的新指令集。Intel的微架構也進入了全速發展的時期,在剛剛結束的IDF峰會上Intel公司就發布了2010年的RoadMap。2010年Intel也将發布全新的處理器微架構SandyBridge,其中全新增加的指令集也将帶來CPU性能的提升。Intel公司将為SandyBridge帶來全新的指令擴展集IntelAdvancedVectorExtensions(IntelAVX)。AVX是在之前的128bit擴展到和256bit的SIMD(SingleInstruction,MultipleData)。而SandyBridge的SIMD演算單元擴展到256bits的同時數據傳輸也獲得了提升,所以從理論上看CPU内核浮點運算性能提升到了2倍。[1]
    中文名:AVX指令集 外文名: 适用領域: 所屬學科: 屬于:進入了全速發展的時期 包括:2010年的RoadMap 發布:處理器微架構Sandy Bridge

簡介

Intel的微架構進入了全速發展的時期,在2010年4月結束的IDF峰會上Intel公司就發布了2010年的RoadMap。2011年1月Intel發布了處理器微架構SandyBridge,其中全新增加的指令集也将帶來CPU性能的提升。Intel公司将為SandyBridge帶來全新的指令擴展集IntelAdvancedVectorExtensions(IntelAVX)。AVX是在之前的128bit擴展到和256bit的SIMD(SingleInstruction,MultipleData)。而SandyBridge的SIMD演算單元擴展到256bits的同時數據傳輸也獲得了提升,所以從理論上看CPU内核浮點運算性能提升到了2倍。nIntel全新的發展戰略也表明,從2010年開始軟件和新指令也将有更好的兼容,而SIMD浮點運算并非決定因素,所以CPU的性能就變得更加困難。而性能增強的同時,SIMD浮點運算在已有編碼的基礎上也必須會有更大的提升空間,特别是scalar整數運算部分。目前單線程整數運算性能的提升也遇到了瓶頸,本次IDF展會上,确定了這一CPU開發方向的同時也表明了技術進化趨勢。IntelAVX指令集,在SIMD計算性能增強的同時也沿用了的MMX/SSE指令集。不過和MMX/SSE的不同點在于增強的AVX指令,從指令的格式上就發生了很大的變化。x86(IA-32/Intel64)架構的基礎上增加了prefix(Prefix),所以實現了新的命令,也使更加複雜的指令得以實現,從而提升了x86CPU的性能。nAVX并不是x86CPU的擴展指令集,可以實現更高的效率,同時和CPU硬件兼容性也更好,并且也有着足夠的擴展空間,這都和其全新的命令格式系統有關。更加流暢的架構就是AVX發展的方向,換言之,就是擺脫傳統x86的不足,在SSE指令的基礎上AVX也使SSE指令接口更加易用。針對AVX的最新的命令編碼系統,Intel也給出了更加詳細的介紹,其中包括了大幅度擴充指令集的可能性。比如SandyBridge所帶來的融合了乘法的雙指令支持。從而可以更加容易地實現512bits和1024bits的擴展。而在2008年末到2009年推出的meniikoaCPU“Larrabee(LARAB)”處理器,就會采用AVX指令集。從地位上來看AVX也開始了Intel處理器指令集的新篇章。

VEX解決x86CPU瓶頸

AVX的VEX的編碼系統,從某一側面上也反應了Intel處理器今後的進化趨勢,因為它解決了x86系列CPU在decoding上的不足。CoreMA有着4條命令的執行通道,不過frontend卻存在着不足,首先L1緩存fetch端口也有着16字節的長度。而fetch的命令次數也被得到了限制。首先IA-32/Intel64命令的puridekodo也有着先天的瓶頸,而操作數和地址長度的指令prefix“LCP(LengthChangingPrefixes),使得puridekodo變得更慢,所以必須要改變長标注的算法。nCoreMA在puridekodo&decoding方面的不足,從根本上來看是IA-32/Intel64指令集架構本身的問題。IA-32/Intel64架構為了增強長命令而增設的緩存,使命令fetch拜年的更長,并且更加複雜的命令格式也由此産生。RISC(ReducedInstructionSetComputer)的命令格式也決定了其長度,decoding雖然容易,但x86系CPU也就要以犧牲資源為代價,同時也帶來了電力的額外消耗。實際上最新的Nehalem也有着類似CoreMA的不足,從某種程度上來看也延續了其不足,如果明确了這一問題的話,那麼Nehalem就必須要改進,其中16bytesfetch和puridekodo等方面的改進就勢在必行了。而改進所需要的龐大晶體管增加,也會帶來功耗的增加。

Nehalem的fetch&decoding

Nehalem的設計其實存在着疑問,不過從VEX格式來分析的話其意圖就非常明确了。Intel在完善了CPU的puridekodo&decoding硬件設計的同時,必須要改進指令格式本身。fetch的指令變短的同時,指令的标注卻更加複雜了,而解決的唯一辦法就是改進指令格式。在充分考慮硬件方面設計後,intel做出了VEX格式開始的決策。IDF上Valentine先生也對VEX格式進行了詳細的說明。他是CoreMA的frontend的fetch開發以及decoding的高級架構師,同時也是IA-32/Intel64指令編碼器的設計專家。n從整體來看AVX指令的話,可以看出intel公司都CPU開發的全部脈絡,Intel公司在對比beru的話,産生改進Drastic的指令集的微架構的想法就變得順理成章了,如果分析原因的話,那就是微架構本身的改進了。全新的CPU必然要有更好的性能表現,想要提高CPU的性能,那麼指令集是最行之有效的手段。AVX擴展指令包含了SSE指令,這也有助于AVX時代的過度。日前的SSEVEX格式也并不需要絕對的轉換過程。Intel公司的BennyEitan先生也提到,出于整體的考慮,Intel公司對于AVX普及的進行并不會太過迅速,并且也不會立刻停止SSE及MMX時代。SandyBridge也增強了解碼器的支持,和之前的IA-32/Intel64prefix相比,decoding也有了全新的VEX格式的支持。其中VEX指令對于decoding的命令數的支持上更加強勁,同時VEX在執行效率上也更加出色。不過這些和SandyBridge真正到來的時候可能還存在差異。

目前AMD新推出FMA指令也是AVX指令集中的一部分

Intel的FMA指令是3operands(操作數)的,被稱為FMA3,而AMD的FMA是4operands的,被稱為FMA4,AMD認為4operands更能提供效率。更加細化。

相關詞條

相關搜索

其它詞條