芒果视频下载

網站(zhan)分類
登錄 |    

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

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

處(chu)理器的大腦 讀(du)懂CPU指令(ling)集(ji)

在我(wo)們對一(yi)(yi)款CPU進(jin)行全面(mian)的(de)了(le)解的(de)時(shi)候,我(wo)們看(kan)看(kan)大(da)多(duo)數人都(dou)遺漏了(le)什么(me)(me)。很(hen)多(duo)人一(yi)(yi)般先從處理器的(de)架構開始,看(kan)看(kan)該處理器采用了(le)什么(me)(me)架構,相比上一(yi)(yi)代或者(zhe)競爭對手(shou)的(de)CPU在架構上都(dou)有什么(me)(me)改進(jin)或者(zhe)優勢。

其次,再看這款CPU與同(tong)檔次的(de)(de)處(chu)(chu)理器的(de)(de)主(zhu)頻孰(shu)高(gao)孰(shu)低,默認高(gao)主(zhu)頻的(de)(de)處(chu)(chu)理器一般是采用(yong)較好的(de)(de)晶圓來(lai)制造的(de)(de),穩定性更好,再次是看該(gai)處(chu)(chu)理器的(de)(de)緩(huan)存容量有多少(shao)(尤其是Intel的(de)(de)處(chu)(chu)理器非常依賴緩(huan)存),緩(huan)存充(chong)當處(chu)(chu)理器與緩(huan)存之(zhi)間的(de)(de)橋梁,起(qi)到一定的(de)(de)數據緩(huan)沖作用(yong)。

全面了解處理器

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

其實仔細(xi)想想,我(wo)們會恍然大悟,還有(you)該處理器支持的(de)指令(ling)集。處理器單靠里面的(de)硬件電路是不會計算的(de),必須依靠指令(ling)來計算和控制系(xi)統。

● CPU指令集至關重要

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

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

● MMX增強多媒體表現

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

MMX指(zhi)令(ling)集中包括有57條(tiao)多媒體指(zhi)令(ling),通過這些指(zhi)令(ling)可(ke)(ke)以一次處理多個數據(ju),在處理結果超過實(shi)際處理能(neng)力(li)的時候也能(neng)進行正常(chang)處理。MMX的益處在于,當時存在的操作(zuo)系統不(bu)必為(wei)此(ci)而(er)做(zuo)出任何(he)修改便可(ke)(ke)以輕松地執行MMX程序(xu)。

支(zhi)持(chi)(chi)(chi)MMX的處理(li)器擁(yong)有(you)8個(ge)(ge)MMX寄(ji)存器,每個(ge)(ge)有(you)64-bit(8byte)的容量(liang)。MMX僅(jin)支(zhi)持(chi)(chi)(chi)整(zheng)數操作,支(zhi)持(chi)(chi)(chi)1/2/4/8-bytes數據。那即是說,一(yi)個(ge)(ge)MMX寄(ji)存器能夠儲存8/4/2/1個(ge)(ge)操作。這(zhe)(zhe)造(zao)成了MMX指(zhi)令(ling)集與x87浮(fu)點運算指(zhi)令(ling)不能夠同時執行(xing)(xing),必須做密(mi)集式的交錯切換才可(ke)以正常執行(xing)(xing),這(zhe)(zhe)種情(qing)況就勢必造(zao)成整(zheng)個(ge)(ge)系統(tong)運行(xing)(xing)質量(liang)的下降。目前AMD和(he)和(he)英特(te)爾處理(li)器都支(zhi)持(chi)(chi)(chi)這(zhe)(zhe)一(yi)指(zhi)令(ling)集。

● 3D NOW!加速三維渲染

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

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

3DNow!可(ke)(ke)以執行操作:相(xiang)加(jia)/相(xiang)乘 /相(xiang)除運算,精確或者近似平(ping)分根。3DNow!指令(ling)(ling)集技術其實就(jiu)是(shi)21條(tiao)機(ji)器碼(ma)的擴展(zhan)指令(ling)(ling)集。3DNow!指令(ling)(ling)集主要(yao)針對(dui)三(san)維建模、坐標變換 和效(xiao)果渲(xuan)染等(deng)三(san)維應用場合,在軟件(jian)的配合下,可(ke)(ke)以大幅度提高(gao)3D處理性(xing)能。后來在Athlon上開發了(le)Enhanced 3DNow!。

● SSE加快處理多媒體應用

SSE全(quan)拼(pin)是Streaming SIMD Extension,中文名稱(cheng)為(wei)SIMD擴(kuo)展流。SIMD英文全(quan)稱(cheng)為(wei) Single Istruction Multiple Data(單指令多(duo)數(shu)據),即一條指令可以完成多(duo)個操(cao)作。SSE是為(wei)提供處理器浮(fu)點性能(neng)而開發的擴(kuo)展指令集(ji)。

SSE指(zhi)令(ling)集包(bao)(bao)括了70條指(zhi)令(ling),其中包(bao)(bao)含單指(zhi)令(ling)多數(shu)(shu)據浮點計算、以(yi)及額(e)外(wai)的SIMD整數(shu)(shu)和(he)高速緩存控制(zhi)指(zhi)令(ling)。其優(you)勢(shi)包(bao)(bao)括:更高分辨率(lv)的圖像瀏覽和(he)處理、高質量音頻(pin)、MPEG2視頻(pin)、同(tong)時MPEG2加解密;語音識(shi)別占(zhan)用更少CPU資源;更高精度和(he)更快響應速度。

SSE指(zhi)令(ling)與3DNow!指(zhi)令(ling)彼(bi)此互不兼容(rong),但SSE包含了3DNow!技術的絕(jue)大部分功能,只是實現(xian)的方法不同(tong)。SSE兼容(rong)MMX指(zhi)令(ling),它(ta)可以通過SIMD和單時鐘周(zhou)期并行處理多個浮點數據來有(you)效地提高(gao)浮點運算速度(du)。

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

● SSE2 更精確處理浮點數

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

最(zui)早(zao)在(zai)Pentium 4處(chu)理器的(de)最(zui)初版本(ben)中(zhong)(zhong)引(yin)入,AMD后來在(zai)Opteron 和Athlon 64處(chu)理器中(zhong)(zhong)也加(jia)入了SSE2的(de)支(zhi)持。到P4設計結束為止,Intel增加(jia)了一(yi)(yi)套包(bao)括(kuo)144條新(xin)建指(zhi)(zhi)令(ling)的(de)SSE2指(zhi)(zhi)令(ling)集。SSE2涉及了多重的(de)數據(ju)目(mu)標上立(li)刻執行(xing)一(yi)(yi)單個的(de)指(zhi)(zhi)令(ling)(即SIMD)。最(zui)重要的(de)是SSE2能處(chu)理128位和兩倍精(jing)密浮(fu)點數學(xue)運算。

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

SSE2指令集(ji)添加(jia)(jia)了(le)對64位雙精度浮點(dian)數的(de)(de)支(zhi)持(chi),以及對整(zheng)型數據的(de)(de)支(zhi)持(chi),也就是說這(zhe)個指令集(ji)中(zhong)所有的(de)(de)MMX指令都是多余的(de)(de)了(le),同時也避免了(le)占(zhan)用浮點(dian)數寄(ji)存器。這(zhe)個指令集(ji)還增加(jia)(jia)了(le)對CPU快取的(de)(de)控制指令。AMD對它的(de)(de)擴展增加(jia)(jia)了(le)8個XMM寄(ji)存器,但是需要切換(huan)到64位模式(AMD64)才(cai)可以使用這(zhe)些(xie)寄(ji)存器。Intel后來在其(qi)EM64T架構中(zhong)也增加(jia)(jia)了(le)對AMD64的(de)(de)支(zhi)持(chi)。

● SSE3促進五個應用

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

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

● SSE4.1改進視頻處理

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

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

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;

… }

}

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


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