科普一下CPU技術(shù)指令
2019-12-24 02:58:40
供稿:網(wǎng)友
因?yàn)樽罱依锏碾娔X要升級(jí),考慮到買cpu的問(wèn)題,今天就把cpu的一些基礎(chǔ)知識(shí)拿出來(lái)科普下,希望各位不要見(jiàn)笑,給新手朋友學(xué)習(xí)一下!相互學(xué)習(xí),相互進(jìn)步,卡飯有你更精彩!
CPU頻率
l 主頻
主頻也叫時(shí)鐘頻率,單位是MHz,表示CPU的運(yùn)算速度。CPU主頻=倍頻*外頻。很多人認(rèn)為CPU主頻就是CPU運(yùn)行的速度,其實(shí)這認(rèn)為是很片面的,畢竟雙核2.0GHz比單核3.0GHz快很多,對(duì)吧?CPU主頻表示CPU內(nèi)數(shù)字脈沖信號(hào)振蕩頻率,與CPU實(shí)際的運(yùn)算能力是沒(méi)有直接關(guān)系的。
當(dāng)然,主頻和實(shí)際的運(yùn)算速度是有關(guān)的,但是目前還沒(méi)有一個(gè)確定的公式來(lái)表示能夠表示兩者之間的數(shù)值關(guān)系,且CPU運(yùn)算速度還要看其他指標(biāo)。所以,主頻僅僅是CPU運(yùn)算速度的一個(gè)方面,很多JS喜歡這樣子來(lái)蒙騙小白。
l 外頻
外頻是CPU的基準(zhǔn)頻率,單位也是MHz。外頻是CPU與主板之間同步運(yùn)行的速度,目前的絕大部分電腦系統(tǒng)中外頻也是內(nèi)存與主板之間的同步運(yùn)行素的。所以我們一般認(rèn)為外頻是CPU與內(nèi)存之間的同步運(yùn)行速度,但不等同于總線。
l 倍頻系數(shù)
倍頻系數(shù)是指CPU主頻和外頻之間的相對(duì)比例關(guān)系。在相同的外頻下,倍頻越高,則主頻也越高。
l 前端總線頻率
前端總線(Front Side Bus,F(xiàn)SB)是CPU與外界溝通的唯一通道。處理器必須通過(guò)它才能獲得數(shù)據(jù),也只能通過(guò)它將運(yùn)算結(jié)果傳送出其他對(duì)應(yīng)設(shè)備。前端總線的傳輸速度越快,CPU的數(shù)據(jù)傳輸也就越迅速。前端總線的速度主要使用前端總線的頻率來(lái)衡量的。前端總線有兩個(gè)概念,一是總線的物理工作頻率,,二是有效工作頻率,它直接決定了前端總線的數(shù)據(jù)傳輸速率。由于英特爾和AMD采用了不同的技術(shù),所以他們之間FSB頻率的關(guān)系式也就不一樣。
外頻與前端總線的區(qū)別是,前端總線的速度指的是數(shù)據(jù)傳輸?shù)乃俾剩忸l是CPU與主板同步運(yùn)行的速率。也就是說(shuō),100MHz外頻特指數(shù)字脈沖信號(hào)在每秒震蕩1000萬(wàn)次,而100MHz前端總線指的是CPUCPU沒(méi)買哦可接受的數(shù)據(jù)傳輸量。
高速緩存
緩存(Cache)指的是可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器,功能與內(nèi)存相同,但是速度比內(nèi)存快得多。它限于內(nèi)存和CPU交換數(shù)據(jù),速度很快。
L1高速緩存,就是一級(jí)緩存。在CPU里內(nèi)置高速緩存可以提高CPU的運(yùn)行效率。內(nèi)置的L1高速緩存的公糧和結(jié)構(gòu)對(duì)CPU的性能影響較大,不過(guò)高速緩存的容量不可能做的很大。
L2高速緩存指的是CPU二級(jí)緩存,分外部和內(nèi)部?jī)煞N芯片。內(nèi)部二級(jí)緩存運(yùn)行速度與主頻相同,外部二級(jí)緩存速度只有主頻的一半。目前的二級(jí)緩存都是內(nèi)置的。
由于CPU性能發(fā)展很快,CPU還發(fā)展出了三級(jí)緩存,作用于二級(jí)緩存差不多。Intel在SNB架構(gòu)處理器中內(nèi)置的三級(jí)緩存甚至可以代替原來(lái)的二級(jí)緩存。
指令集
現(xiàn)在,就到了本文的重點(diǎn)部分,CPU指令集。CPU依靠指令計(jì)算和控制系統(tǒng),指令集的先進(jìn)與豐富程度是衡量CPU性能的重要指標(biāo),指令集是提高CPU效率的最有效方法之一。從現(xiàn)階段主流體系來(lái)看,指令集分為復(fù)雜指令集和精簡(jiǎn)指令集兩部分。我們通常所說(shuō)的CPU指令集是CPU的擴(kuò)展指令集。
下面我們來(lái)熟悉一下重要的CPU擴(kuò)展指令集。
1. MMX指令集
MMX指令集最初包含在Intel的處理器 Pentium MMX上,是一種“單指令流,多數(shù)據(jù)流”的處理方式。它允許CPU同時(shí)對(duì)多個(gè)數(shù)據(jù)進(jìn)行并行處理。它有效提高了多媒體方面的處理速度,但CPU所負(fù)責(zé)的運(yùn)算主要就是浮點(diǎn)運(yùn)算,而MMX指令集對(duì)CPU浮點(diǎn)運(yùn)算能力沒(méi)有太大幫助,因此MMX在3D處理方面基本沒(méi)有意義。
2.3D Now!指令集
3D Now!指令集是一種3D加速指令集,由AMD公司開(kāi)發(fā)。它和MMX指令集一樣是一種“單指令流,多數(shù)據(jù)流”的處理方式,但它加速的是CPU的浮點(diǎn)運(yùn)算。繼承了3D Now!指令集的K6-2CPU,性能甚至超過(guò)了Pentium 2,但是必須有足夠好的優(yōu)化才能發(fā)揮這個(gè)指令集的強(qiáng)大威力。
3.SSE指令集
SSE指令集(Streaming SIMD Extension)也叫KNI指令集,是Intel公司嵌套在Pentium 3中的第二套多媒體指令集。和MMX指令集不同的是,SSE主要加速CPU的浮點(diǎn)運(yùn)算能力。它總共包括70多條指令:50條SIMD(單指令多數(shù)據(jù))浮點(diǎn)指令,主要用于3D處理。12條新MMX指令,加速整數(shù)運(yùn)算速度。8條系統(tǒng)內(nèi)存數(shù)據(jù)流傳輸優(yōu)化指令。從實(shí)際效果來(lái)看,SSE比3D Now!指令集更勝一籌。
4.SSE2指令集
SSE2指令集包含了兩個(gè)組成部分,SSE部分和MMX部分。SSE部分主要用于處理浮點(diǎn)數(shù)據(jù),MMX部分主要用于處理整數(shù)運(yùn)算。相對(duì)于MMX指令集,SSE2指令集的寄存器多了1倍,這使得SSE2指令集性能可達(dá)MMX指令集的兩倍。
l SSE3指令集
SSE3指令集在最新的Prescott核心的Pentium 4處理器中嵌套,SSE3指令集分為五個(gè)應(yīng)用層,共包括13條指令集包。
第一層為數(shù)據(jù)傳輸命令,只有1條指令(FISTTP指令),它有利于X87的浮點(diǎn)轉(zhuǎn)換成整數(shù),大大提高優(yōu)化的效率。
第二層數(shù)據(jù)處理命令,共5條指令,分別是ADDSUBPS指令、ADDSUBPD指令、MOVSHDUP指令MOVSLDUP指令和MOVDDUP指令。它增強(qiáng)了復(fù)數(shù)的運(yùn)算,簡(jiǎn)化復(fù)雜數(shù)據(jù)的處理過(guò)程,適應(yīng)未來(lái)數(shù)據(jù)處理流量將會(huì)越來(lái)越大的情況。
第三層特殊處理命令,只有一條指令。用于視頻解碼,用來(lái)提高處理器處理媒體數(shù)據(jù)結(jié)果的精確性。
第四層優(yōu)化命令,共四條指令,分別是HADDPS指令、HSBPS指令、HADDPD指令和HSUBPD指令,針對(duì)單指令多數(shù)據(jù)流進(jìn)行優(yōu)化,偏重處理3D圖形。
第五層超線程性能增強(qiáng),有2條針對(duì)線程處理的指令:MONITOR指令和MWAIT指令。
與SSE2指令集相比,SSE3指令集對(duì)CPU性能有明顯的提升,尤其是在專門針對(duì)SSE3優(yōu)化的軟件和圖像插件時(shí)比較明顯。
l SSE4.1指令集
SSE4.1指令集由一套全新指令構(gòu)成,可以提升一系列應(yīng)用程序的性能和能效。SSE4.1指令集可以支持開(kāi)發(fā)人員輕松改進(jìn)產(chǎn)品,同時(shí)保持必要的應(yīng)用級(jí)兼容性,以適應(yīng)CPU不斷還貸的需求。
SSE4.1指令集包含54條指令,主要分為兩類:矢量化編譯器和媒體加速器,以及高效加速字符串和文本處理。其中,矢量化編譯器和媒體加速器可提供高性能的編譯器函數(shù)庫(kù),如封包(同時(shí)使用多個(gè)操作數(shù))整數(shù)運(yùn)算和浮點(diǎn)運(yùn)算,可生成性能優(yōu)化型代碼。此外,它還包括高度優(yōu)化的媒體相關(guān)運(yùn)算,如絕對(duì)差值求和、浮點(diǎn)點(diǎn)積和內(nèi)存負(fù)載等。矢量化編譯器和媒體加速器可改進(jìn)音頻、視頻和圖像編輯應(yīng)用、視頻編碼器、3D應(yīng)用和游戲的性能。
高速加速字符串和文本處理包含多個(gè)壓縮字符串比較指令,允許同時(shí)運(yùn)行多項(xiàng)比較和搜索操作。
7.SSE4.2指令集
SSE4.2指令集新加入了STINI(字符串文本新指令)和ATA(面向應(yīng)用的加速器)兩大優(yōu)化指令。
SSE4.2新加入的幾條新指令集有兩類,第一類是字符串與文本新指令STTNI,STTNI包括4條具體指令。SYNNI可以對(duì)兩個(gè)16位的數(shù)據(jù)進(jìn)行匹配操作,以加速在XML分析方面的性能。根據(jù)Intel公司的說(shuō)法,新指令可以在XML分析方面取得3.8倍的性能提升。第二類指令是面向應(yīng)用的加速指令A(yù)TA。ATA包括冗余校驗(yàn)的CRC32指令、計(jì)算源操作中非0位個(gè)數(shù)的POPCNT指令,以及對(duì)于打包的64位算術(shù)運(yùn)算的SIMD指令。
8.SSE5指令集
SSE5指令集是AMD公司推出的全新指令集,它的功能是增強(qiáng)高性能計(jì)算應(yīng)用,并充分發(fā)揮多核心、多媒體的并行優(yōu)勢(shì)。SSE5一共170條指令,其中基礎(chǔ)指令64條。SSE5指令集增加了幾條新指令:(1)三操作數(shù)指令(3-Operand Instructions):X86指令以往只能處理雙操作數(shù),而SSE5會(huì)提高到三操作數(shù),達(dá)到RISC架構(gòu)的水平,從而把多個(gè)簡(jiǎn)單的指令集整合到更高級(jí)的單獨(dú)指令中,提高執(zhí)行效率。(2)熔合乘法累積(Fused Multiply Accumulate,F(xiàn)MACxx):該技術(shù)可以把乘法和其他算法結(jié)合起來(lái),保證只用一條指令就可以完成迭代運(yùn)算,從而簡(jiǎn)化代碼、提高效率,適用于真實(shí)圖形著色、快速照相渲染、空間化音頻、復(fù)向量(矢量)數(shù)學(xué)等場(chǎng)合。(3)除此之外,SSE5還新增了整數(shù)乘法累積指令(IMAC,IMADC)、置換與條件移動(dòng)指令、向量比較與測(cè)試指令、精度控制舍入與變換指令,等等。
9.AVX指令集
AVX指令集(Advanced Vector Extensions,高級(jí)矢量擴(kuò),展)是Intel在SNB架構(gòu)中新推出的全新一代SIMD指令集,直接跳過(guò)SSE5(由AMD所定義),AVX指令集借鑒了一些AMD SSE5指令集的設(shè)計(jì)思路,進(jìn)行擴(kuò)展和加強(qiáng),形成一套新一代的完整SIMD指令集規(guī)范。
AVX指令集將原來(lái)的128位XMM寄存器擴(kuò)充為256位的YMM寄存器,從而支持256位的vector計(jì)算。改進(jìn)和加強(qiáng)了原有的在3個(gè)operands指令的編碼和語(yǔ)法,使之更靈活。
增加一個(gè)全新的VEX prefix,實(shí)現(xiàn)對(duì)原有的prefix集成。
AVX指令集通過(guò)VEX prefix可實(shí)現(xiàn)4個(gè)operands。AVX指令集不支持MMX寄存器。