芒果视频下载

網站分類(lei)
登錄 |    

處理器的大腦 讀懂CPU指令集

本文章由注冊用戶 擼白人森 上傳提供 評論 發布 反饋 0
摘要:CPU知識入門-特點-分類篇:文章對CPU指令集做了詳細的介紹說明。在支持SSE4指令集的處理器上,只需要采用4 SAD運算指令便完全代替了繁復的指令串,大幅提升動態預測及差分編碼的運算速度。

處理器的大腦 讀(du)懂(dong)CPU指令集

在我們(men)對一款(kuan)CPU進(jin)行全面的了(le)(le)解的時候(hou),我們(men)看(kan)(kan)看(kan)(kan)大多數人都遺漏了(le)(le)什么(me)。很(hen)多人一般先從處理器(qi)(qi)的架(jia)(jia)構開始,看(kan)(kan)看(kan)(kan)該處理器(qi)(qi)采用了(le)(le)什么(me)架(jia)(jia)構,相(xiang)比上一代或(huo)者競爭(zheng)對手的CPU在架(jia)(jia)構上都有什么(me)改進(jin)或(huo)者優勢。

其(qi)次(ci),再看這款CPU與(yu)同檔次(ci)的(de)(de)(de)處理(li)器(qi)的(de)(de)(de)主(zhu)頻(pin)(pin)孰(shu)(shu)高(gao)孰(shu)(shu)低,默認高(gao)主(zhu)頻(pin)(pin)的(de)(de)(de)處理(li)器(qi)一(yi)般(ban)是采(cai)用(yong)較好(hao)的(de)(de)(de)晶(jing)圓來制造的(de)(de)(de),穩定性更好(hao),再次(ci)是看該處理(li)器(qi)的(de)(de)(de)緩存(cun)容(rong)量有多少(尤其(qi)是Intel的(de)(de)(de)處理(li)器(qi)非(fei)常(chang)依(yi)賴緩存(cun)),緩存(cun)充當處理(li)器(qi)與(yu)緩存(cun)之間的(de)(de)(de)橋梁(liang),起到一(yi)定的(de)(de)(de)數據緩沖作(zuo)用(yong)。

全面了解處理器

最后我(wo)們(men)要看(kan)該處理(li)器采用的制程,一般制程越(yue)先(xian)進(jin),發熱量越(yue)低,而相對越(yue)好(hao)超,而比較關注節(jie)能(neng)性能(neng)的網友,還會著(zhu)重看(kan)該處理(li)器的功耗為多(duo)少。那么(me)我(wo)們(men)看(kan)完這些參數是不是漏了(le)些什么(me)呢?

其實仔細想(xiang)想(xiang),我們(men)會(hui)恍(huang)然(ran)大(da)悟,還有該處理(li)器支持的(de)指令集。處理(li)器單靠里面的(de)硬件電路(lu)是不會(hui)計算的(de),必須依靠指令來計算和(he)控(kong)制系(xi)統。

● CPU指令集至關重要

每(mei)款CPU設計的(de)(de)(de)時候就(jiu)(jiu)制(zhi)定(ding)了一套與內部電路配合的(de)(de)(de)指令(ling)系統(tong),從(cong)具體運用看,我們可以在(zai)很(hen)多(duo)CPU身上看到(dao)的(de)(de)(de)就(jiu)(jiu)有(you)MMX(Multi Media Extended)、SSE(Streaming SIMD Extensions)、SSE2、SSE3、SSSE3、SSE4(分為SSE4.1與SSE4.2兩代,AMD的(de)(de)(de)SSE4A包含在(zai)SSE4里面(mian),這個后面(mian)會(hui)提到(dao)),另外還有(you)AMD的(de)(de)(de)3D NOW!系列。

這(zhe)些指(zhi)令(ling)集可謂大(da)大(da)增強了CPU的(de)多媒體、圖形圖象和Internet等的(de)處理能力,下面就讓我們逐(zhu)個了解下。

● MMX增強多媒體表現

MMX(Multi Media eXtension,多媒體擴展指令(ling)集)指令(ling)集是英特爾于1996年推出,主要(yao)用于多媒體指令(ling)增強(qiang)。

MMX指令集(ji)中包括有(you)57條多(duo)媒(mei)體(ti)指令,通(tong)過這些指令可以一次處(chu)理多(duo)個數據,在處(chu)理結(jie)果超過實際處(chu)理能力的時(shi)(shi)候也能進行正常(chang)處(chu)理。MMX的益處(chu)在于,當時(shi)(shi)存在的操(cao)作系統不必為此而做(zuo)出(chu)任(ren)何修改便可以輕松(song)地執行MMX程(cheng)序。

支持(chi)MMX的(de)處(chu)理器(qi)擁有8個(ge)(ge)MMX寄(ji)存器(qi),每個(ge)(ge)有64-bit(8byte)的(de)容(rong)量。MMX僅支持(chi)整數操作(zuo),支持(chi)1/2/4/8-bytes數據。那即是說,一個(ge)(ge)MMX寄(ji)存器(qi)能夠儲存8/4/2/1個(ge)(ge)操作(zuo)。這造成了MMX指(zhi)令集與(yu)x87浮點運(yun)(yun)算(suan)指(zhi)令不能夠同(tong)時執行(xing),必(bi)須做密(mi)集式的(de)交錯切換(huan)才可以正常(chang)執行(xing),這種情(qing)況就勢必(bi)造成整個(ge)(ge)系統運(yun)(yun)行(xing)質(zhi)量的(de)下降。目前AMD和和英特爾處(chu)理器(qi)都(dou)支持(chi)這一指(zhi)令集。

● 3D NOW!加速三維渲染

3DNow!指令集是由AMD提出的(de),廣泛應用于其K6-2 、K6-3以及(ji)Athlon(K7)處理(li)器(qi)上。3DNow!跟后面提到的(de)SSE非(fei)常類似,但也有(you)一些不同。它擁有(you) 8個(ge)(ge)新的(de)寄存器(qi),卻(que)是64-bit的(de),并非(fei)128-bit。這樣,它只能(neng)存儲(chu)兩個(ge)(ge)浮(fu)點數據,而非(fei)四(si)個(ge)(ge)。

K6處理器開始具有3D NOW!指令集

3DNow!可以執(zhi)行操作:相加(jia)/相乘 /相除(chu)運(yun)算(suan),精確或者(zhe)近似(si)平分根。3DNow!指令(ling)集技術(shu)其實就是21條(tiao)機(ji)器碼的擴展指令(ling)集。3DNow!指令(ling)集主要(yao)針對三(san)維建模、坐(zuo)標變換 和效果渲染等三(san)維應(ying)用場合,在軟件的配(pei)合下(xia),可以大幅度(du)提高3D處(chu)理性能。后(hou)來在Athlon上開(kai)發(fa)了Enhanced 3DNow!。

● SSE加快處理多媒體應用

SSE全拼是Streaming SIMD Extension,中文(wen)名稱為SIMD擴(kuo)展流。SIMD英文(wen)全稱為 Single Istruction Multiple Data(單(dan)指(zhi)令多數(shu)據),即一條指(zhi)令可以完成多個操作。SSE是為提供處(chu)理(li)器浮點(dian)性能而開發的(de)擴(kuo)展指(zhi)令集。

SSE指(zhi)令集包括(kuo)了70條指(zhi)令,其中包含單指(zhi)令多數(shu)據(ju)浮點(dian)計(ji)算、以及額外的SIMD整(zheng)數(shu)和高(gao)速(su)緩存控制指(zhi)令。其優(you)勢(shi)包括(kuo):更(geng)(geng)高(gao)分辨率的圖像瀏覽和處理(li)、高(gao)質(zhi)量(liang)音頻、MPEG2視頻、同(tong)時MPEG2加解(jie)密;語音識別占用更(geng)(geng)少CPU資源;更(geng)(geng)高(gao)精度和更(geng)(geng)快響應(ying)速(su)度。

SSE指令(ling)與3DNow!指令(ling)彼(bi)此互不(bu)兼容(rong),但SSE包含了3DNow!技(ji)術的(de)絕(jue)大(da)部分功能,只是實現的(de)方法(fa)不(bu)同。SSE兼容(rong)MMX指令(ling),它可以通過SIMD和(he)單時鐘周期并(bing)行(xing)處理多(duo)個浮(fu)點(dian)數據來有效地提高浮(fu)點(dian)運算速度。

SSE(Streaming SIMD Extensions)是(shi)英(ying)特爾在AMD的(de)(de)(de)(de)3D Now!發布一(yi)年之后(hou),在其計算機芯片Pentium III中引入的(de)(de)(de)(de)指(zhi)(zhi)(zhi)令集(ji)(ji),是(shi)MMX的(de)(de)(de)(de)超集(ji)(ji)。AMD后(hou)來在Athlon XP中加(jia)入了(le)對(dui)這(zhe)(zhe)個指(zhi)(zhi)(zhi)令集(ji)(ji)的(de)(de)(de)(de)支持(chi)。這(zhe)(zhe)個指(zhi)(zhi)(zhi)令集(ji)(ji)增加(jia)了(le)對(dui)8個128位寄(ji)存(cun)器(qi)XMM0-XMM7的(de)(de)(de)(de)支持(chi),每(mei)個寄(ji)存(cun)器(qi)可以存(cun)儲4個單(dan)精度浮點(dian)數。使用(yong)這(zhe)(zhe)些寄(ji)存(cun)器(qi)的(de)(de)(de)(de)程序必須使用(yong)FXSAVE和(he)FXRSTR指(zhi)(zhi)(zhi)令來保持(chi)和(he)恢復狀(zhuang)態(tai)。但是(shi)在Pentium III對(dui)SSE的(de)(de)(de)(de)實(shi)現中,浮點(dian)數寄(ji)存(cun)器(qi)又一(yi)次(ci)被新的(de)(de)(de)(de)指(zhi)(zhi)(zhi)令集(ji)(ji)占用(yong)了(le),但是(shi)這(zhe)(zhe)一(yi)次(ci)切換運算模(mo)式不是(shi)必要的(de)(de)(de)(de)了(le),只是(shi)SSE和(he)浮點(dian)數指(zhi)(zhi)(zhi)令不能同(tong)時(shi)進入CPU的(de)(de)(de)(de)處(chu)理線而(er)已。

● SSE2 更精確處理浮點數

SSE2是英特爾為了應對AMD的(de)(de)3Dnow!+指(zhi)令(ling)集(ji),在SSE的(de)(de)基礎上(shang)開發了SSE2,增加了一些指(zhi)令(ling),使得其處理器性能有大(da)幅度提高。

最(zui)早(zao)在Pentium 4處理(li)器(qi)的(de)最(zui)初版(ban)本中引(yin)入,AMD后來(lai)在Opteron 和Athlon 64處理(li)器(qi)中也加(jia)入了(le)SSE2的(de)支持(chi)。到P4設計結束為止,Intel增(zeng)加(jia)了(le)一套(tao)包括144條新建(jian)指(zhi)令(ling)(ling)的(de)SSE2指(zhi)令(ling)(ling)集。SSE2涉及了(le)多(duo)重(zhong)的(de)數(shu)(shu)據目標上立(li)刻執行一單個(ge)的(de)指(zhi)令(ling)(ling)(即(ji)SIMD)。最(zui)重(zhong)要的(de)是SSE2能(neng)處理(li)128位和兩倍精密浮點數(shu)(shu)學(xue)運(yun)算。

處(chu)理(li)更精確浮點數(shu)的能力使SSE2成為加速多媒體(ti)程序、3D處(chu)理(li)工程以及工作站類型任(ren)務的基礎配(pei)置。

SSE2指(zhi)令(ling)集(ji)添加(jia)(jia)了對(dui)64位(wei)雙精度浮(fu)點數的(de)(de)支持,以(yi)(yi)及對(dui)整型數據的(de)(de)支持,也就(jiu)是(shi)說這(zhe)個(ge)(ge)指(zhi)令(ling)集(ji)中(zhong)所有的(de)(de)MMX指(zhi)令(ling)都是(shi)多(duo)余的(de)(de)了,同(tong)時也避免(mian)了占用浮(fu)點數寄(ji)存(cun)(cun)器。這(zhe)個(ge)(ge)指(zhi)令(ling)集(ji)還(huan)增加(jia)(jia)了對(dui)CPU快取的(de)(de)控制指(zhi)令(ling)。AMD對(dui)它(ta)的(de)(de)擴展增加(jia)(jia)了8個(ge)(ge)XMM寄(ji)存(cun)(cun)器,但(dan)是(shi)需(xu)要切(qie)換到64位(wei)模式(AMD64)才可以(yi)(yi)使(shi)用這(zhe)些寄(ji)存(cun)(cun)器。Intel后來在其EM64T架構中(zhong)也增加(jia)(jia)了對(dui)AMD64的(de)(de)支持。

● SSE3促進五個應用

SSE3指令(ling)(ling)(ling)集是規(gui)模(mo)最小的指令(ling)(ling)(ling)集,此前MMX包含有(you)57條(tiao)命(ming)令(ling)(ling)(ling),SSE包含有(you)50條(tiao)命(ming)令(ling)(ling)(ling),SSE2包含有(you)144條(tiao)命(ming)令(ling)(ling)(ling),SSE3包含有(you)13條(tiao)命(ming)令(ling)(ling)(ling)。此外Intel害針對SSE3指令(ling)(ling)(ling)集作了(le)一次額外擴(kuo)充,那就是SSSE3是,最早內建于Core 2 Duo處理(li)器中。

SSE3指(zhi)(zhi)令(ling)集共分為5個應用層: 第(di)一(yi)(yi)層是(shi)“數據(ju)傳輸”,只(zhi)有(you)(you)一(yi)(yi)條(tiao)(tiao)(tiao)指(zhi)(zhi)令(ling):FISTTP,它有(you)(you)利(li)于(yu)(yu)x87浮點轉(zhuan)換成整數,并可(ke)以(yi)大(da)(da)大(da)(da)提(ti)高優化(hua)(hua)的(de)(de)效(xiao)率。 第(di)二層是(shi)“數據(ju)處理(li)(li)”,指(zhi)(zhi)令(ling)共有(you)(you)五(wu)條(tiao)(tiao)(tiao),分別是(shi)ADDSUBPS,ADDSUBPD,MOVSHDUP,MOVSLDUP,MOVDDUP。這些(xie)指(zhi)(zhi)令(ling)可(ke)以(yi)簡化(hua)(hua)復雜(za)數據(ju)的(de)(de)處理(li)(li)過程(cheng)(cheng),由于(yu)(yu)未(wei)來數據(ju)處理(li)(li)流(liu)量將會越來越大(da)(da),因此Intel在這里應用的(de)(de)指(zhi)(zhi)令(ling)集最多、達到了五(wu)條(tiao)(tiao)(tiao)。 第(di)三層是(shi)“特殊處理(li)(li)”,也只(zhi)有(you)(you)一(yi)(yi)條(tiao)(tiao)(tiao):LDDQU。在這條(tiao)(tiao)(tiao)指(zhi)(zhi)令(ling)主要針對(dui)視頻(pin)解碼(ma),用來提(ti)高處理(li)(li)器對(dui)處理(li)(li)媒體(ti)數據(ju)結果(guo)的(de)(de)精確性(xing)。 第(di)四(si)層是(shi)“優化(hua)(hua)”,共有(you)(you)四(si)條(tiao)(tiao)(tiao)指(zhi)(zhi)令(ling),分別是(shi)HADDPS,HSUBPS,HADDPD,HSUBPD,它們可(ke)以(yi)對(dui)程(cheng)(cheng)序起到自動優化(hua)(hua)的(de)(de)作用,對(dui)處理(li)(li)3D圖形相當(dang)有(you)(you)用。 第(di)五(wu)層是(shi)“超線程(cheng)(cheng)性(xing)能增(zeng)強”,共有(you)(you)兩條(tiao)(tiao)(tiao)針對(dui)線程(cheng)(cheng)處理(li)(li)的(de)(de)指(zhi)(zhi)令(ling):MONITOR, MWAIT,這有(you)(you)助于(yu)(yu)增(zeng)加Intel超線程(cheng)(cheng)的(de)(de)處理(li)(li)能力、大(da)(da)大(da)(da)簡化(hua)(hua)了超線程(cheng)(cheng)的(de)(de)數據(ju)處理(li)(li)過程(cheng)(cheng)。

● SSE4.1改進視頻處理

SSE4.1是Intel在(zai)Penryn核心的(de)(de)(de)Core 2 Duo與(yu)Core 2 Solo處理(li)器(qi)時,新(xin)增的(de)(de)(de)47條新(xin)多(duo)媒(mei)體(ti)指(zhi)令(ling)集,用(yong)來(lai)加強視頻編輯等方面的(de)(de)(de)應用(yong)。另(ling)外,AMD也開發(fa)了(le)屬(shu)于自己的(de)(de)(de)SSE4a多(duo)媒(mei)體(ti)指(zhi)令(ling)集,并(bing)內建在(zai)Phenom與(yu)Opteron等K10架構處理(li)器(qi)中,不過(guo)相關(guan)應用(yong)都差不多(duo),并(bing)且無法與(yu)Intel的(de)(de)(de)SSE4系列指(zhi)令(ling)集相容。

據了解(jie),在(zai)進(jin)(jin)行(xing)視頻編碼時需要進(jin)(jin)行(xing)動(dong)態預(yu)測(ce)(Motion Estimation)及差分編碼方式(shi)去除相鄰2張影(ying)像之相關性,這是一(yi)個非常(chang)復雜的運算(suan)動(dong)作。在(zai)沒(mei)有SSE4指令(ling)集(ji)時,完成一(yi)個步驟需要以下(xia)指令(ling)語句:

for (int moveblock=0;moveblock<16;moveblock++)

for(int line=0; line<16; line++) // Does the 16 pixels large in 4 iteration

{

int i=0;

sum0+=abs( pBlock1[j]-pBlock2)+abs(pBlock1[j+1]-pBlock2[i+1])+abs(pBlock1[j+2]-pBlock2[i+2])+abs(pBlock1[j+3]-pBlock2[i+3]); // Compare with 0 pixel offset

sum1+=abs(pBlock1[j+1]-pBlock2)+abs(pBlock1[j+2]-pBlock2[i+1])+abs(pBlock1[j+3]-pBlock2[i+2])+abs(pBlock1[j+4]-pBlock2[i+3]); // Compare with 1 pixel offset

sum2+=abs(pBlock1[j+2]-pBlock2)+abs(pBlock1[j+3]-pBlock2[i+1])+abs(pBlock1[j+4]-pBlock2[i+2])+abs(pBlock1[j+5]-pBlock2[i+3]); // Compare with 2 pixel offset

sum3+=abs(pBlock1[j+3]-pBlock2)+abs(pBlock1[j+4]-pBlock2[i+1])+abs(pBlock1[j+5]-pBlock2[i+2])+abs(pBlock1[j+6]-pBlock2[i+3]); // Compare with 3 pixel offset

sum4+=abs(pBlock1[j+4]-pBlock2)+abs(pBlock1[j+5]-pBlock2[i+1])+abs(pBlock1[j+6]-pBlock2[i+2])+abs(pBlock1[j+7]-pBlock2[i+3]); // Compare with 4 pixel offset

sum5+=abs(pBlock1[j+5]-pBlock2)+abs(pBlock1[j+6]-pBlock2[i+1])+abs(pBlock1[j+7]-pBlock2[i+2])+abs(pBlock1[j+8]-pBlock2[i+3]); // Compare with 5 pixel offset

sum6+=abs(pBlock1[j+6]-pBlock2)+abs(pBlock1[j+7]-pBlock2[i+1])+abs(pBlock1[j+8]-pBlock2[i+2])+abs(pBlock1[j+9]-pBlock2[i+3]); // Compare with 6 pixel offset

sum7+=abs(pBlock1[j+7]-pBlock2)+abs(pBlock1[j+8]-pBlock2[i+1])+abs(pBlock1[j+9]-pBlock2[i+2])+abs(pBlock1[j+10]-pBlock2[i+3]); // Compare with 7 pixel offset

i=4;

j=moveblock+4;

… }

}

一大串的指(zhi)(zhi)令(ling)極度浪(lang)費處(chu)理器資源,而在(zai)支(zhi)持SSE4指(zhi)(zhi)令(ling)集的處(chu)理器上,只(zhi)需(xu)要采用4 SAD運算指(zhi)(zhi)令(ling):MPSADBW xmm0,xmm1,0便完(wan)全代替了以上繁復的指(zhi)(zhi)令(ling)串,大幅提升(sheng)動(dong)態(tai)預測(Motion Estimation)及差分編碼(ma)的運算速度。


網站提醒和聲明
本站(zhan)為(wei)注(zhu)冊用戶提供(gong)信(xin)息存儲空間服務,非“MAIGOO編輯上傳(chuan)提供(gong)”的文(wen)章/文(wen)字均(jun)是注(zhu)冊用戶自(zi)主發布上傳(chuan),不(bu)代表本站(zhan)觀點,版(ban)權歸(gui)原作者所有(you),如有(you)侵權、虛假信(xin)息、錯誤信(xin)息或(huo)任何問題,請及時聯系(xi)我們(men),我們(men)將(jiang)在第一(yi)時間刪除(chu)或(huo)更正。 申請刪除>> 糾錯>> 投訴侵權>> 網頁上相關信息的知識(shi)產權(quan)(quan)歸網站方所有(包括但不限于文字、圖片(pian)、圖表、著作權(quan)(quan)、商(shang)標權(quan)(quan)、為用(yong)(yong)戶提(ti)供的商(shang)業信息等(deng)),非經(jing)許可不得抄(chao)襲或使用(yong)(yong)。
提交說明: 快速提交發布>> 查看提交幫助>> 注冊登錄>>
發表評論
您還未登錄,依《網絡安全法》相關要求,請您登錄賬戶后再提交發布信息。點擊登錄>>如您還未注冊,可,感謝您的理解及支持!
最新評論
暫無評論
頁面相關分類
熱門模塊
已有4083129個品牌入駐 更新521332個招商信息 已發布1608415個代理需求 已有1391635條品牌點贊