為什么avx指令集發(fā)熱量這么大(avx指令集不支持怎么辦)

發(fā)布時間:2024-01-21
本文主要介紹為什么avx指令集發(fā)熱量這么大(avx指令集不支持怎么辦),下面一起看看為什么avx指令集發(fā)熱量這么大(avx指令集不支持怎么辦)相關(guān)資訊。
許多讀者和朋友在閱讀我們的文章時可能會經(jīng)??吹叫g(shù)語avx指令集。比如在cpu評測中經(jīng)常可以看到。一些新玩家可能不理解這個術(shù)語的含義。今天本文就簡單介紹一下這個指令集的來龍去脈。
并梳理了其目前在實踐中的應(yīng)用。
從simd開始,要了解avx指令集的功能,我們必須先了解它是什么。定義很簡單。它是x86處理器上的一組simd指令集,是經(jīng)典sse系列指令集的直接繼承者。那么什么是simd呢?
在計算機(jī)早期,馮諾依曼計算機(jī)一次只能通過輸入一條指令對一對數(shù)據(jù)進(jìn)行運(yùn)算,例如,‘,a,b’可以使ab相加,
這是單指令流(單數(shù)據(jù)流)。顯然,面對大量的數(shù)據(jù),這種操縱數(shù)據(jù)的方法是低效的。
程序員想讓一個操作對多組數(shù)據(jù)生效,應(yīng)該怎么做?引入了單指令流和多數(shù)據(jù)流的思想。
它使得用一條指令操作多組數(shù)據(jù)成為可能。
在上面的示意圖中可以看到更直觀的區(qū)別。
在20世紀(jì)80年代和90年代,許多處理器開發(fā)人員意識到了simd的前景,他們開始在自己的處理器中添加simd支持。1996年,
英特爾發(fā)布了基于全新p55c架構(gòu)的奔騰mmx系列處理器(最早的奔騰處理器是p5架構(gòu)),引入了全新的mmx指令集,開始支持simd。
從mmx到sse,再到avxpentium mmx系列處理器,新推出的mmx指令集開創(chuàng)了x86處理器支持simd運(yùn)算的先河。指令集定義了8個64位寬的寄存器。
每個寄存器的64位容量可以放入8個8位整數(shù)、4個16位整數(shù)或2個32位整數(shù),cpu在識別到mmx指令集的新指令時會自動對寄存器中的數(shù)據(jù)進(jìn)行除法運(yùn)算,這樣
單個指令成功操作多個數(shù)據(jù),實現(xiàn)了simd。
然而,mmx畢竟太年輕了。它實際上是通過重用cpu中x87浮點單元的寄存器來實現(xiàn)simd的,所以與運(yùn)行浮點運(yùn)算的x87指令集沖突,所以兩者不能互換使用,必須先切換。另外,由于上述沖突,它只支持整數(shù)運(yùn)算。
在即將到來的3d時代似乎有點不足。
英特爾當(dāng)然很清楚mmx指令集的局限性,以及競爭對手的新3dnow!指令集(amd k6-2,1998)支持浮點simd運(yùn)算。
因此,1999年2月,他們很快在經(jīng)典的奔騰3處理器上推出了新的sse(流simd擴(kuò)展)指令集。
sse指令集解決了mmx指令集存在的兩大問題,通過引入新的獨(dú)立寄存器解決了與浮點運(yùn)算的沖突,還支持浮點simd運(yùn)算。當(dāng)然,它比mmx強(qiáng)得多。
隨著處理器架構(gòu)的進(jìn)步,它的寄存器寬度已經(jīng)達(dá)到了128位,使得一條simd指令可以操作更多的數(shù)據(jù),效率得到了很大的提高。但原sse指令集的單寄存器只支持長度為32位的浮點數(shù)。
還是有很大的局限性。這個問題在pentium 4(willamette,2000)上引入的sse2中已經(jīng)解決,simd操作靈活得多。
隨后在約莫8年的時間里,intel一直在更新sse指令集,從sse出到sse4,amd方面則是一直在跟進(jìn),到了sse4.2,amd開始想要在指令集上面尋找自己的翻身點,
于是推出了只有自家支持的sse4a子集,隨后更是提前于intel提出了sse5。
但intel不干,我是x86的老大,我不能跟著你來。他們另起爐灶,準(zhǔn)備在未來的sandy bridge架構(gòu)中引入一套新的simd指令集,這套新指令集在2008年公布,
被命名為高級向量擴(kuò)展(advanced vector extensions)。
革新的avx,越來越寬的寄存器相比起迭代了多年的sse系列指令集,avx指令集帶來了巨大的革新,其中最為主要的是,它在兼容sse指令集性的同時,
將sse時代最大寬度為128-bit的寄存器拓寬到了256-bit。
不過初代avx指令集還是比較保守的,它沒有將所有指令寬度拓寬到256-bit,而是選擇停留在128-bit上面。全面進(jìn)入256-bit時代這個任務(wù),
還是交給了隨后的haswell架構(gòu)來完成(2013年6月份)。
同處理器用不同指令集的能效對比
但如果以為intel會就此停下腳步的話,那就大錯特錯了,他們很快搗鼓出了更寬的avx-512指令集,顧名思義,其寄存器寬度再次加倍,來到512-bit。
首個支持avx-512指令集的處理器其實是intel的xeon phi加速卡,首次跑到cpu上已經(jīng)是skylake-x系列了。而avx-512也并不再是一個單一的指令集,
它實際上指代的是多個指令集的集合,目前這個數(shù)字是17,之后可能還會增多。所有支持avx-512的處理器都必須支持avx-512 foundation子集,從命名上也可以看出,
它其實是avx-512指令集的基礎(chǔ)。
長長的avx-512子集列表
目前只有基于skylake-server和ice lake這兩個架構(gòu)的處理器可以支持avx-512(cannon lake死了,不然也算),使用門檻較高,一般新一點的應(yīng)用也只是針對avx2進(jìn)行優(yōu)化。
寬度越大,處理器的計算能力也就越強(qiáng),尤其是在浮點運(yùn)算方面,理論上提升有一倍之多,而實際應(yīng)用中,如果優(yōu)化得當(dāng),其提升幅度還要大一些。但是,
新指令集在帶來性能增長的同時也帶來了另一個讓人感到頭痛的問題——功耗。
性能強(qiáng)了,峰值功耗也高了avx指令集在帶來更高性能的同時讓cpu的峰值功耗也變高了,可以通過下面的例子進(jìn)行理解:
飛機(jī)發(fā)動機(jī)是按照最大起飛重量設(shè)計的,如果實際的載重沒有到最大起飛重量的話,飛行員就可以減推力起飛來降低油耗。cpu也是一樣的,最吃功耗的執(zhí)行單元是根據(jù)最大寬度來設(shè)計的,
平時用不到最大寬度的時候它的功耗就小了,而一旦用到極限,它也就會全開,此時cpu的功耗就上去了。
intel avx is designed to achieve higher throughput for certain integer and floating-point operations. using these instructions may cause processors to operate at less than the marked tdp frequency. these reductions in frequency occur because high-power intel avx instructions require additional voltage and electrical current.
現(xiàn)如今cpu的功耗是根據(jù)負(fù)載大小來的,在同頻下面,avx2的負(fù)載明顯高于sse負(fù)載,因此它的功耗也會大上去。為了讓cpu的功耗保持在tdp范圍之內(nèi),intel特地設(shè)計了一個avx偏移頻率,
讓工作在avx狀態(tài)下面的處理器降低一點頻率以減小發(fā)熱量和功耗,保證使用安全。intel官方也在2014年的一份avx指令集優(yōu)化白皮書中明確說明使用avx指令集需要額外的電壓和電流。
只在跑分上看到?其實不然對于我們這些要做跑分評測的編輯來說,最常接觸到的avx應(yīng)用其實就是aida64了,那么可能有讀者就要問了,這個指令集都已經(jīng)推出十年了難道只能用來跑分烤機(jī)嗎?當(dāng)然不是,
在intel的推廣之下,現(xiàn)如今已經(jīng)有大量的生產(chǎn)力應(yīng)用支持它了,主要在渲染、視頻編碼、加解密和數(shù)學(xué)計算等方面有應(yīng)用,新的avx-512還針對深度學(xué)習(xí)推出了avx-512 vnni子集,另外,
普通玩家最為關(guān)心的游戲方面也是有越來越多的應(yīng)用了,下面舉幾個例子。
渲染、視頻編碼渲染方面最常見的有blender,它不僅僅在我們的測試中被用的多,是真的有很多人都會用它做動畫或者cg圖,它的渲染引擎可以調(diào)用avx2指令集進(jìn)行加速計算,吃滿你的cpu。
跟渲染方面有點搭邊的就是視頻編碼了,x264和x265這兩個知名開源視頻編碼器想必已經(jīng)不用再多介紹了,它們都在前幾年中紛紛加入了對于avx指令集的支持,后者甚至加入了針對avx-512的支持,
不過還需要繼續(xù)優(yōu)化。另外,intel方面自己也開源了一套名為svt的視頻編碼器,配合不同后端可以實現(xiàn)不同的編碼,對avx和多核的優(yōu)化相當(dāng)好。
深度學(xué)習(xí)深度學(xué)習(xí)方面,google著名的開源深度學(xué)習(xí)框架tensorflow在1.6版本之后就已經(jīng)需要一顆支持avx指令集的cpu了,換言之,它應(yīng)用了avx指令集。
另外,avx-512的大寬度讓它很適合用來跑深度學(xué)習(xí),所以intel也針對深度學(xué)習(xí)設(shè)計了一套子指令集——avx-512 vnni,用來加速深度學(xué)習(xí)相關(guān)的計算,在測試中,它表現(xiàn)出了相當(dāng)?shù)膶嵙Α?
加解密加解密計算場景中對cpu的計算吞吐量有較大的要求,此時avx指令集就可以發(fā)揮作用,常見的軟件支持就有openssl這個堪稱是互聯(lián)網(wǎng)基石的加密庫,
另外像很多程序會使用的libsodium加密庫也提供了從avx到avx-512的優(yōu)化,而linux內(nèi)核也支持使用avx和avx2指令集進(jìn)行加解密計算,還會配合aes-ni這個專用的指令集。
實際上目前還有很多數(shù)字貨幣的計算過程支持使用avx指令集,不過這個應(yīng)該是真的沒有人會用了……
游戲近兩三年的大作基本都開始啟用avx指令集來進(jìn)行計算了,一般在游戲中cpu負(fù)責(zé)除了圖形以外的雜活,比如說計算各種npc的運(yùn)動路徑,計算各種動體的軌跡這樣的雜活。
不過近兩年也有廠商想讓intel參與進(jìn)游戲圖形計算,甚至是當(dāng)下熱門的光線追蹤運(yùn)算,比如intel的光線追蹤計算庫embree就可以被整合進(jìn)游戲中,目前已經(jīng)有《坦克世界》 等游戲使用了它,
embree庫高度依賴avx指令集,也對cpu的游戲性能提出了新的闡述方式:直接參與圖形渲染。
總結(jié):未來是avx的總的來說,avx目前還沒有完全展露出它的價值,這也是軟件優(yōu)化缺位導(dǎo)致的。不過隨著各路編譯器的跟進(jìn)、處理器迭代使得支持avx指令集的處理器普及,
相信我們的常用軟件也會加入avx優(yōu)化,比如說在圖片處理時調(diào)用它。配合上已經(jīng)展開應(yīng)用的各種生產(chǎn)力應(yīng)用,avx的前景非常廣闊。
上一個:蘋果系統(tǒng)怎么充錢王者榮耀(王者怎么充值蘋果手機(jī))
下一個:短信發(fā)送設(shè)置-市場咨詢

硬盤有壞道還可以用嗎,求解釋硬盤有壞道就不能用了嗎
新買電腦怎么看配置新舊,買電腦時怎樣辨別硬件是新的還是舊的
退耦電容在電路中起到的作用
win7點擊鼠標(biāo)右鍵沒有反應(yīng)(win7系統(tǒng)鼠標(biāo)右鍵不管用了怎么辦)
修理電腦英語,修理電腦用英語怎么說
成都那里有七里香 七里香花海在哪里
有房產(chǎn)證的農(nóng)村房屋可以買賣嗎
edmund optics有限共軛物鏡#34
筆記本電腦分區(qū)win10系統(tǒng),電腦win10系統(tǒng)怎么分區(qū)硬盤
中壓變頻器維護(hù)中應(yīng)該注意的問題
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos