芒果视频下载

網(wang)站分類
登錄 |    

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

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

處理(li)器的大(da)腦 讀懂CPU指令集(ji)

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

其次,再看這款CPU與同檔(dang)次的(de)(de)處(chu)(chu)理(li)器的(de)(de)主頻孰高孰低,默(mo)認高主頻的(de)(de)處(chu)(chu)理(li)器一(yi)般是(shi)(shi)采(cai)用(yong)較好的(de)(de)晶圓來制造(zao)的(de)(de),穩定性更(geng)好,再次是(shi)(shi)看該處(chu)(chu)理(li)器的(de)(de)緩(huan)存(cun)容(rong)量有多少(尤其是(shi)(shi)Intel的(de)(de)處(chu)(chu)理(li)器非常依賴緩(huan)存(cun)),緩(huan)存(cun)充當處(chu)(chu)理(li)器與緩(huan)存(cun)之(zhi)間的(de)(de)橋(qiao)梁,起到一(yi)定的(de)(de)數(shu)據緩(huan)沖作用(yong)。

全面了解處理器

最后我(wo)們要看該處理器(qi)采用的制(zhi)程,一般制(zhi)程越(yue)先進,發熱量(liang)越(yue)低,而相(xiang)對越(yue)好(hao)超(chao),而比(bi)較關注節能性能的網友,還(huan)會著重看該處理器(qi)的功耗為多少。那么(me)我(wo)們看完這些參數(shu)是不是漏了些什么(me)呢?

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

● CPU指令集至關重要

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

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

● MMX增強多媒體表現

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

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

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

● 3D NOW!加速三維渲染

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

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

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

● SSE加快處理多媒體應用

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

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

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

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

● SSE2 更精確處理浮點數

SSE2是英(ying)特爾為(wei)了應對AMD的3Dnow!+指令(ling)集,在SSE的基礎上開發了SSE2,增加(jia)了一些(xie)指令(ling),使(shi)得其(qi)處(chu)理器性能(neng)有(you)大幅度(du)提高。

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

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

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

● SSE3促進五個應用

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

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

● SSE4.1改進視頻處理

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

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

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;

… }

}

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


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