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