CPU從儲存器或高速緩衝儲存器中取出指令,放入指令暫存器,並對指令譯碼。 它把指令分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。 指令是計算機規定執行操作的型別和運算元的基本命令。 指令是由一個位元組或者多個位元組組成,其中包括操作碼欄位、一個或多個有關運算元地址的欄位以及一些表徵機器狀態的狀態字以及特徵碼。 有的指令中也直接包含運算元本身。 提取 第一階段,提取,從儲存器或高速緩衝儲存器中檢索指令(為數值或一系列數值)。 由程式計數器(ProgramCounter)指定儲存器的位置,程式計數器儲存供識別目前程式位置的數值。 換言之,程式計數器記錄了CPU在目前程式裡的蹤跡。 提取指令之後,程式計數器根據指令長度增加儲存器單元。 指令的提取必須常常從相對較慢的儲存器尋找,因此導致CPU等候指令的送入。 這個問題主要被論及在現代處理器的快取和管線化架構。 解碼 CPU根據儲存器提取到的指令來決定其執行行為。 在解碼階段,指令被拆解為有意義的片斷。 根據CPU的指令集架構(ISA)定義將數值解譯為指令。 一部分的指令數值為運算碼(Opcode),其指示要進行哪些運算。 其它的數值通常供給指令必要的資訊,諸如一個加法(Addition)運算的運算目標。 這樣的運算目標也許提供一個常數值(即立即值),或是一個空間的定址值:暫存器或儲存器位址,以定址模式決定。 在舊的設計中,CPU裡的指令解碼部分是無法改變的硬體裝置。 不過在眾多抽象且複雜的CPU和指令集架構中,一個微程式時常用來幫助轉換指令為各種形態的訊號。 這些微程式在已成品的CPU中往往可以重寫,方便變更解碼指令。 執行 在提取和解碼階段之後,接著進入執行階段。 該階段中,連線到各種能夠進行所需運算的CPU部件。 例如,要求一個加法運算,算數邏輯單元(ALU,ArithmeticLogicUnit)將會連線到一組輸入和一組輸出。 輸入提供了要相加的數值,而輸出將含有總和的結果。 ALU內含電路系統,易於輸出端完成簡單的普通運算和邏輯運算(比如加法和位元運算)。 如果加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裡,運算溢位(ArithmeticOverflow)標誌可能會被設定。 寫回 最終階段,寫回,以一定格式將執行階段的結果簡單的寫回。 運算結果經常被寫進CPU內部的暫存器,以供隨後指令快速存取。 在其它案例中,運算結果可能寫進速度較慢,但容量較大且較便宜的主記憶體中。 某些型別的指令會操作程式計數器,而不直接產生結果。 這些一般稱作“跳轉”(Jumps),並在程式中帶來迴圈行為、條件性執行(透過條件跳轉)和函式。 許多指令也會改變標誌暫存器的狀態位元。 這些標誌可用來影響程式行為,緣由於它們時常顯出各種運算結果。 例如,以一個“比較”指令判斷兩個值的大小,根據比較結果在標誌暫存器上設定一個數值。 這個標誌可藉由隨後的跳轉指令來決定程式動向。 在執行指令並寫回結果之後,程式計數器的值會遞增,反覆整個過程,下一個指令週期正常的提取下一個順序指令。 如果完成的是跳轉指令,程式計數器將會修改成跳轉到的指令位址,且程式繼續正常執行。 許多複雜的CPU可以一次提取多個指令、解碼,並且同時執行。 這個部分一般涉及“經典RISC管線”,那些實際上是在眾多使用簡單CPU的電子裝置中快速普及(常稱為微控制(Microcontrollers))。 編輯本段基本結構 CPU包括運算邏輯部件、暫存器部件和控制部件等。 運算邏輯部件 運算邏輯部件,可以執行定點或浮點的算術運算操作、移位操作以及邏輯操作,也可執行地址的運算和轉換。 暫存器部件 暫存器部件,包括通用暫存器、專用暫存器和控制暫存器。 32位CPU的暫存器通用暫存器又可分定點數和浮點數兩類,它們用來儲存指令中的暫存器運算元和操作結果。 通用暫存器是中央處理器的重要組成部分,大多數指令都要訪問到通用暫存器。 通用暫存器的寬度決定計算機內部的資料通路寬度,其埠數目往往可影響內部操作的並行性。 專用暫存器是為了執行一些特殊操作所需用的暫存器。 控制暫存器通常用來指示機器執行的狀態,或者保持某些指標,有處理狀態暫存器、地址轉換目錄的基地址暫存器、特權狀態暫存器、條件碼暫存器、處理異常事故暫存器以及檢錯暫存器等。 有的時候,中央處理器中還有一些快取,用來暫時存放一些資料指令,快取越大,說明CPU的運算速度越快,目前市場上的中高階中央處理器都有2M左右的二級快取,高階中央處理器有4M左右的二級快取。 控制部件 控制部件,主要負責對指令譯碼,並且發出為完成每條指令所要執行的各個操作的控制訊號。 其結構有兩種:一種是以微儲存為核心的微程式控制方式; 一種是以邏輯硬佈線結構為主的控制方式。 微儲存中保持微碼,每一個微碼對應於一個最基本的微操作,又稱微指令; 各條指令是由不同序列的微碼組成,這種微碼序列構成微程式。 中央處理器在對指令譯碼以後,即發出一定時序的控制訊號,按給定序列的順序以微週期為節拍執行由這些微碼確定的若干個微操作,即可完成某條指令的執行。 簡單指令是由(3~5)個微操作組成,複雜指令則要由幾十個微操作甚至幾百個微操作組成。 邏輯硬佈線控制器則完全是由隨機邏輯組成。 指令譯碼後,控制器透過不同的邏輯閘的組合,發出不同序列的控制時序訊號,直接去執行一條指令中的各個操作。 編輯本段發展歷史 CPU這個名稱,早期是對一系列可以執行復雜的計算機程式或電腦程式的邏輯機器的描述。 這個空泛的定義很容易在“CPU”這個名稱被普遍使用之前將計算機本身也包括在內。 誕生 中央處理器(Intel)但從20世紀70年代開始,由於積體電路的大規模使用,把本來需要由數個獨立單元構成的CPU整合為一塊微小但功能空前強大的微處理器時。 這個名稱及其縮寫才真正在電子計算機產業中得到廣泛應用。 儘管與早期相比,CPU在物理形態、設計製造和具體任務的執行上都有了戲劇性的發展,但是其基本的操作原理一直沒有改變。 1971年,當時還處在發展階段的Intel公司推出了世界上第一臺真正的微處理器--4004。 這不但是第一個用於計算器的4位微處理器,也是第一款個人有能力買得起的電腦處理器。 4004含有2300個電晶體,功能相當有限,而且速度還很慢,被當時的藍色巨人IBM以及大部分商業使用者不屑一顧,但是它畢竟是劃時代的產品,從此以後,Intel公司便與微處理器結下了不解之緣。 可以這麼說,CPU的歷史發展歷程其實也就是Intel公司X86系列CPU的發展歷程,就透過它來的“CPU歷史之旅”。 起步的角逐 中央處理器(Intel)1978年,Intel公司再次領導潮流,首次生產出16位的微處理器,並命名為i8086,同時還生產出與之相配合的數學協處理器i8087,這兩種晶片使用相互相容的指令集,但在i8087指令集中增加了一些專門用於對數、指數和三角函式等數學計算的指令。 由於這些指令集應用於i8086和i8087,所以人們也把這些指令集中統一稱之為X86指令集。 雖然以後Intel公司又陸續生產出第二代、第三代等更先進和更快的新型CPU,但都仍然相容原來的X86指令,而且Intel公司在後續CPU的命名上沿用了原先的X86序列,直到後來因商標註冊問題,才放棄了繼續用阿拉伯數字命名。 至於在後來發展壯大的其他公司,例如AMD和Cyrix等,在486以前(包括486)的CPU都是按Intel的命名方式為自己的X86系列CPU命名,但到了586時代,市場競爭越來越厲害了,由於商標註冊問題,它們已經無法繼續使用與Intel的X86系列相同或相似的命名,只好另外為自己的586.686相容CPU命名了。 1979年,Intel公司推出了8088晶片,它仍舊是屬於16位微處理器,內含29000個電晶體,時鐘頻率為4.77MHz,地址匯流排為20位,可使用1MB記憶體。 8088內部資料匯流排都是16位,外部資料匯流排是8位,而它的兄弟8086是16位。 微機時代的來臨 中央處理器(概念圖)1981年,8088晶片首次用於IBM的PC(個人電腦PersonalComputer)機中,開創了全新的微機時代。 也正是從8088開始,PC的概念開始在全世界範圍內發展起來。 早期的CPU通常是為大型及特定應用的計算機而訂製。 但是,這種昂貴為特定應用定製CPU的方法很大程度上已經讓位於開發便宜、標準化、適用於一個或多個目的的處理器類。 這個標準化趨勢始於由單個電晶體組成的大型機和微機年代,隨著積體電路的出現而加速。 積體電路使得更為複雜的CPU可以在很小的空間中設計和製造出來(在微米的量級)。 1982年,許多年輕的讀者尚在襁褓之中的時候,Intel公司已經推出了劃時代的最新產品80286晶片,該晶片比8086和8088都有了飛躍的發展,雖然它仍舊是16位結構,但是在CPU的內部含有13.4萬個電晶體,時鐘頻率由最初的6MHz逐步提高到20MHz。 其內部和外部資料匯流排皆為16位,地址匯流排24位,可定址16MB記憶體。 從80286開始,CPU的工作方式也演變出兩種來:真實模式和保護模式。 中央處理器(AMD速龍64FX概念圖)1985年,Intel公司推出了80386晶片,它是80X86系列中的第一種32位微處理器,而且製造工藝也有了很大的進步,與80286相比,80386內部內含27.5萬個電晶體,時鐘頻率為12.5MHz,後提高到20MHz、25MHz、33MHz。 80386的內部和外部資料匯流排都是32位,地址匯流排也是32位,可定址高達4GB記憶體。 它除具有真實模式和保護模式外,還增加了一種叫虛擬86的工作方式,可以透過同時模擬多個8086處理器來提供多工能力。 除了標準的80386晶片,也就是經常說的80386DX外,出於不同的市場和應用考慮,Intel又陸續推出了一些其它型別的80386晶片:80386SX、80386SL、80386DL等。 1988年,Intel推出的80386SX是市場定位在80286和80386DX之間的一種晶片,其與80386DX的不同在於外部資料匯流排和地址匯流排皆與80286相同,分別是16位和24位(即定址能力為16MB)。 高速CPU時代的騰飛 1990年,Intel公司推出的80386SL和80386DL都是低功耗、節能型晶片,主要用於便攜機和節能型桌上型電腦。 80386SL與80386DL的不同在於前者是基於80386SX的,後者是基於80386DX的,但兩者皆增加了一種新的工作方式:系統管理方式。 當進入系統管理方式後,CPU就自動降低執行速度、控制顯示屏和硬碟等其它部件暫停工作,甚至停止執行,進入“休眠”狀態,以達到節能目的。 1989年,大家耳熟能詳的80486晶片由Intel公司推出,這種晶片的偉大之處就在於它突破了100萬個電晶體的界限,集成了120萬個電晶體。 80486的時鐘頻率從25MHz逐步提高到了33MHz、50MHz。 80486是將80386和數學協處理器80387以及一個8KB的快取記憶體整合在一個晶片內,並且在80X86系列中首次採用了RISC(精簡指令集)技術,可以在一個時鐘週期內執行一條指令。 它還採用了突發匯流排方式,大大提高了與記憶體的資料交換速度。 由於這些改進,80486的效能比帶有80387數學協處理器的80386DX提高了4倍。 80486和80386一樣,也陸續出現了幾種型別。 上面介紹的最初型別是80486DX。 1990年,Intel公司推出了80486SX,它是486型別中的一種低價格機型,其與80486DX的區別在於它沒有數學協處理器。 80486DX2由於用了時鐘倍頻技術,也就是說晶片內部的執行速度是外部匯流排執行速度的兩倍,即晶片內部以2倍於系統時鐘的速度執行,但仍以原有時鐘速度與外界通訊。 80486DX2的內部時鐘頻率主要有40MHz、50MHz、66MHz等。 80486DX4也是採用了時鐘倍頻技術的晶片,它允許其內部單元以2倍或3倍於外部匯流排的速度執行。 為了支援這種提高了的內部工作頻率,它的片內快取記憶體擴大到16KB。 80486DX4的時鐘頻率為100MHz,其執行速度比66MHz的80486DX2快40%。 80486也有SL增強型別,其具有系統管理方式,用於便攜機或節能型桌上型電腦。 CPU的標準化和小型化都使得這一類數字裝置(香港譯為“電子零件”)在現代生活中中央處理器(Intel)的出現頻率遠遠超過有限應用專用的計算機。 現代微處理器出現在包括從汽車到手機到兒童玩具在內的各種物品中。 編輯本段效能指標主頻 主頻也叫時鐘頻率,單位是兆赫(MHz)或千兆赫(GHz),用來表示CPU的運算、處理資料的速度。 CPU的主頻=外頻×倍頻係數。 主頻和實際的運算速度存在一定的關係,但並不是一個簡單的線性關係。 所以,CPU的主頻與CPU實際的運算能力是沒有直接關係的,主頻表示在CPU內數字脈衝訊號震盪的速度。 在Intel的處理器產品中,也可以看到這樣的例子:1GHzItanium晶片能夠表現得差不多跟2.66GHz至強(Xeon)/Opteron一樣快,或是1.5GHzItanium2大約跟4GHzXeon/Opteron一樣快。 CPU的運算速度還要看CPU的流水線、匯流排等等各方面的效能指標。 外頻 外頻是CPU的基準頻率,單位是MHz。 CPU的外頻決定著整塊主機板的執行速度。 通俗地說,在臺式機中,所說的超頻,都是超CPU的外頻(當然一般情況下,CPU的倍頻都是被鎖住的)相信這點是很好理解的。 但對於伺服器CPU來講,超頻是絕對不允許的。 前面說到CPU決定著主機板的執行速度,兩者是同步執行的,如果把伺服器CPU超頻了,改變了外頻,會產生非同步執行,(桌上型電腦很多主機板都支援非同步執行)這樣會造成整個伺服器系統的不穩定。 目前的絕大部分電腦系統中外頻與主機板前端匯流排不是同步速度的,而外頻與前端匯流排(FSB)頻率又很容易被混為一談。 前端匯流排(FSB)頻率 前端匯流排(FSB)頻率(即匯流排頻率)是直接影響CPU與記憶體直接資料交換速度。 有一條公式可以計算,即資料頻寬=(匯流排頻率×資料位寬)/8,資料傳輸最大頻寬取決於所有同時傳輸的資料的寬度和傳輸頻率。 比方,現在的支援64位的至強Nocona,前端匯流排是800MHz,按照公式,它的資料傳輸最大頻寬是6.4GB/秒。 中央處理器(Intel)外頻與前端匯流排(FSB)頻率的區別:前端匯流排的速度指的是資料傳輸的速度,外頻是CPU與主機板之間同步執行的速度。 也就是說,100MHz外頻特指數字脈衝訊號在每秒鐘震盪一億次; 而100MHz前端匯流排指的是每秒鐘CPU可接受的資料傳輸量是100MHz×64bit÷8bit/Byte=800MB/s。 其實現在“HyperTransport”構架的出現,讓這種實際意義上的前端匯流排(FSB)頻率發生了變化。 IA-32架構必須有三大重要的構件:記憶體控制器Hub(MCH),I/O控制器Hub和PCIHub,像Intel很典型的晶片組Intel7501.Intel7505晶片組,為雙至強處理器量身定做的,它們所包含的MCH為CPU提供了頻率為533MHz的前端匯流排,配合DDR記憶體,前端匯流排頻寬可達到4.3GB/秒。 但隨著處理器效能不斷提高同時給系統架構帶來了很多問題。 而“HyperTransport”構架不但解決了問題,而且更有效地提高了匯流排頻寬,比方AMDOpteron處理器,靈活的HyperTransportI/O匯流排體系結構讓它整合了記憶體控制器,使處理器不透過系統匯流排傳給晶片組而直接和記憶體交換資料。 這樣,前端匯流排(FSB)頻率在AMDOpteron處理器就不知道從何談起了。 CPU的位和字長 中央處理器(德州儀器)位:在數位電路和電腦技術中採用二進位制,程式碼只有“0”和“1”,其中無論是“0”或是“1”在CPU中都是一“位”。 字長:電腦技術中對CPU在單位時間內(同一時間)能一次處理的二進位制數的位數叫字長。 所以能處理字長為8位資料的CPU通常就叫8位的CPU。 同理32位的CPU就能在單位時間內處理字長為32位的二進位制資料。 位元組和字長的區別:由於常用的英文字元用8位二進位制就可以表示,所以通常就將8位稱為一個位元組。 字長的長度是不固定的,對於不同的CPU、字長的長度也不一樣。 8位的CPU一次只能處理一個位元組,而32位的CPU一次就能處理4個位元組,同理字長為64位的CPU一次可以處理8個位元組。 倍頻係數 倍頻係數是指CPU主頻與外頻之間的相對比例關係。 在相同的外頻下,倍頻越高CPU的頻率也越高。 但實際上,在相同外頻的前提下,高倍頻的CPU本身意義並不大。 這是因為CPU與系統之間資料傳輸速度是有限的,一味追求高主頻而得到高倍頻的CPU就會出現明顯的“瓶頸”效應-CPU從系統中得到資料的極限速度不能夠滿足CPU運算的速度。 一般除了工程樣版的Intel的CPU都是鎖了倍頻的,少量的如Intel酷睿2核心的奔騰雙核E6500K和一些至尊版的CPU不鎖倍頻,而AMD之前都沒有鎖,現在AMD推出了黑盒版CPU(即不鎖倍頻版本,使用者可以自由調節倍頻,調節倍頻的超頻方式比調節外頻穩定得多)。 快取 快取大小也是CPU的重要指標之一,而且快取的結構和大小對CPU速度的影響非常大,CPU內快取的執行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統記憶體和硬碟。 實際工作時,CPU往往需要重複讀取同樣的資料塊,而快取容量的增大,可以大幅度提升CPU內部讀取資料的命中率,而不用再到記憶體或者硬碟上尋找,以此提高系統性能。 但是由於CPU芯片面積和成本的因素來考慮,快取都很小。 L1 Cache(一級快取)是CPU第一層快取記憶體,分為資料快取和指令快取。 內建的L1快取記憶體的容量和結構對CPU的效能影響較大,不過高速緩衝儲存器均由靜態RAM組成,結構較複雜,在CPU管芯面積不能太大的情況下,L1級快取記憶體的容量不可能做得太大。 一般伺服器CPU的L1快取的容量通常在32-256KB。 L2 Cache(二級快取)是CPU的第二層快取記憶體,分內部和外部兩種晶片。 內部的晶片二級快取執行速度與主頻相同,而外部的二級快取則只有主頻的一半。 L2快取記憶體容量也會影響CPU的效能,原則是越大越好,以前家庭用CPU容量最大的是512KB,現在膝上型電腦中也可以達到2M,而伺服器和工作站上用CPU的L2快取記憶體更高,可以達到8M以上。 L3 Cache(三級快取),分為兩種,早期的是外接,現在的都是內建的。 而它的實際作用即是,L3快取的應用可以進一步降低記憶體延遲,同時提升大資料量計算時處理器的效能。 降低記憶體延遲和提升大資料量計算能力對遊戲都很有幫助。 而在伺服器領域增加L3快取在效能方面仍然有顯著的提升。 比方具有較大L3快取的配置利用物理記憶體會更有效,故它比較慢的磁碟I/O子系統可以處理的資料請求。 具有較大L3快取的處理器提供更有效的檔案系統快取行為及較短訊息和處理器佇列長度。 其實最早的L3快取被應用在AMD釋出的K6-III處理器上,當時的L3快取受限於製造工藝,並沒有被整合進晶片內部,而是整合在主機板上。 在只能夠和系統匯流排頻率同步的L3快取同主記憶體其實差不了多少。 後來使用L3快取的是英特爾為伺服器市場所推出的Itanium處理器。 接著就是P4EE和至強MP。 Intel還打算推出一款9MBL3快取的Itanium2處理器,和以後24MBL3快取的雙核心Itanium2處理器。 但基本上L3快取對處理器的效能提高顯得不是很重要,比方配備1MBL3快取的XeonMP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比快取增加帶來更有效的效能提升。 CPU擴充套件指令集 CPU依靠指令來自計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。 指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。 從現階段的主流體系結構講,指令集可分為複雜指令集和精簡指令集兩部分(指令集共有四個種類),而從具體運用看,如Intel的MMX(MultiMediaExtended,此為AMD猜測的全稱,Intel並沒有說明詞源)、SSE、SSE2(Streaming-Singleinstructionmultipledata-Extensions2)、SSE 3、SSE4系列和AMD的3DNow!等都是CPU的擴充套件指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。 通常會把CPU的擴充套件指令集稱為”CPU的指令集”。 SSE3指令集也是目前規模最小的指令集,此前MMX包含有57條命令,SSE包含有50條命令,SSE2包含有144條命令,SSE3包含有13條命令。 CPU核心和I/O工作電壓 從586CPU開始,CPU的工作電壓分為核心電壓和I/O電壓兩種,通常CPU的核心電壓小於等於I/O電壓。 其中核心電壓的大小是根據CPU的生產工藝而定,一般製作工藝越小,核心工作電壓越低; I/O電壓一般都在1.6~5V。 低電壓能解決耗電過大和發熱過高的問題。
CPU從儲存器或高速緩衝儲存器中取出指令,放入指令暫存器,並對指令譯碼。 它把指令分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。 指令是計算機規定執行操作的型別和運算元的基本命令。 指令是由一個位元組或者多個位元組組成,其中包括操作碼欄位、一個或多個有關運算元地址的欄位以及一些表徵機器狀態的狀態字以及特徵碼。 有的指令中也直接包含運算元本身。 提取 第一階段,提取,從儲存器或高速緩衝儲存器中檢索指令(為數值或一系列數值)。 由程式計數器(ProgramCounter)指定儲存器的位置,程式計數器儲存供識別目前程式位置的數值。 換言之,程式計數器記錄了CPU在目前程式裡的蹤跡。 提取指令之後,程式計數器根據指令長度增加儲存器單元。 指令的提取必須常常從相對較慢的儲存器尋找,因此導致CPU等候指令的送入。 這個問題主要被論及在現代處理器的快取和管線化架構。 解碼 CPU根據儲存器提取到的指令來決定其執行行為。 在解碼階段,指令被拆解為有意義的片斷。 根據CPU的指令集架構(ISA)定義將數值解譯為指令。 一部分的指令數值為運算碼(Opcode),其指示要進行哪些運算。 其它的數值通常供給指令必要的資訊,諸如一個加法(Addition)運算的運算目標。 這樣的運算目標也許提供一個常數值(即立即值),或是一個空間的定址值:暫存器或儲存器位址,以定址模式決定。 在舊的設計中,CPU裡的指令解碼部分是無法改變的硬體裝置。 不過在眾多抽象且複雜的CPU和指令集架構中,一個微程式時常用來幫助轉換指令為各種形態的訊號。 這些微程式在已成品的CPU中往往可以重寫,方便變更解碼指令。 執行 在提取和解碼階段之後,接著進入執行階段。 該階段中,連線到各種能夠進行所需運算的CPU部件。 例如,要求一個加法運算,算數邏輯單元(ALU,ArithmeticLogicUnit)將會連線到一組輸入和一組輸出。 輸入提供了要相加的數值,而輸出將含有總和的結果。 ALU內含電路系統,易於輸出端完成簡單的普通運算和邏輯運算(比如加法和位元運算)。 如果加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裡,運算溢位(ArithmeticOverflow)標誌可能會被設定。 寫回 最終階段,寫回,以一定格式將執行階段的結果簡單的寫回。 運算結果經常被寫進CPU內部的暫存器,以供隨後指令快速存取。 在其它案例中,運算結果可能寫進速度較慢,但容量較大且較便宜的主記憶體中。 某些型別的指令會操作程式計數器,而不直接產生結果。 這些一般稱作“跳轉”(Jumps),並在程式中帶來迴圈行為、條件性執行(透過條件跳轉)和函式。 許多指令也會改變標誌暫存器的狀態位元。 這些標誌可用來影響程式行為,緣由於它們時常顯出各種運算結果。 例如,以一個“比較”指令判斷兩個值的大小,根據比較結果在標誌暫存器上設定一個數值。 這個標誌可藉由隨後的跳轉指令來決定程式動向。 在執行指令並寫回結果之後,程式計數器的值會遞增,反覆整個過程,下一個指令週期正常的提取下一個順序指令。 如果完成的是跳轉指令,程式計數器將會修改成跳轉到的指令位址,且程式繼續正常執行。 許多複雜的CPU可以一次提取多個指令、解碼,並且同時執行。 這個部分一般涉及“經典RISC管線”,那些實際上是在眾多使用簡單CPU的電子裝置中快速普及(常稱為微控制(Microcontrollers))。 編輯本段基本結構 CPU包括運算邏輯部件、暫存器部件和控制部件等。 運算邏輯部件 運算邏輯部件,可以執行定點或浮點的算術運算操作、移位操作以及邏輯操作,也可執行地址的運算和轉換。 暫存器部件 暫存器部件,包括通用暫存器、專用暫存器和控制暫存器。 32位CPU的暫存器通用暫存器又可分定點數和浮點數兩類,它們用來儲存指令中的暫存器運算元和操作結果。 通用暫存器是中央處理器的重要組成部分,大多數指令都要訪問到通用暫存器。 通用暫存器的寬度決定計算機內部的資料通路寬度,其埠數目往往可影響內部操作的並行性。 專用暫存器是為了執行一些特殊操作所需用的暫存器。 控制暫存器通常用來指示機器執行的狀態,或者保持某些指標,有處理狀態暫存器、地址轉換目錄的基地址暫存器、特權狀態暫存器、條件碼暫存器、處理異常事故暫存器以及檢錯暫存器等。 有的時候,中央處理器中還有一些快取,用來暫時存放一些資料指令,快取越大,說明CPU的運算速度越快,目前市場上的中高階中央處理器都有2M左右的二級快取,高階中央處理器有4M左右的二級快取。 控制部件 控制部件,主要負責對指令譯碼,並且發出為完成每條指令所要執行的各個操作的控制訊號。 其結構有兩種:一種是以微儲存為核心的微程式控制方式; 一種是以邏輯硬佈線結構為主的控制方式。 微儲存中保持微碼,每一個微碼對應於一個最基本的微操作,又稱微指令; 各條指令是由不同序列的微碼組成,這種微碼序列構成微程式。 中央處理器在對指令譯碼以後,即發出一定時序的控制訊號,按給定序列的順序以微週期為節拍執行由這些微碼確定的若干個微操作,即可完成某條指令的執行。 簡單指令是由(3~5)個微操作組成,複雜指令則要由幾十個微操作甚至幾百個微操作組成。 邏輯硬佈線控制器則完全是由隨機邏輯組成。 指令譯碼後,控制器透過不同的邏輯閘的組合,發出不同序列的控制時序訊號,直接去執行一條指令中的各個操作。 編輯本段發展歷史 CPU這個名稱,早期是對一系列可以執行復雜的計算機程式或電腦程式的邏輯機器的描述。 這個空泛的定義很容易在“CPU”這個名稱被普遍使用之前將計算機本身也包括在內。 誕生 中央處理器(Intel)但從20世紀70年代開始,由於積體電路的大規模使用,把本來需要由數個獨立單元構成的CPU整合為一塊微小但功能空前強大的微處理器時。 這個名稱及其縮寫才真正在電子計算機產業中得到廣泛應用。 儘管與早期相比,CPU在物理形態、設計製造和具體任務的執行上都有了戲劇性的發展,但是其基本的操作原理一直沒有改變。 1971年,當時還處在發展階段的Intel公司推出了世界上第一臺真正的微處理器--4004。 這不但是第一個用於計算器的4位微處理器,也是第一款個人有能力買得起的電腦處理器。 4004含有2300個電晶體,功能相當有限,而且速度還很慢,被當時的藍色巨人IBM以及大部分商業使用者不屑一顧,但是它畢竟是劃時代的產品,從此以後,Intel公司便與微處理器結下了不解之緣。 可以這麼說,CPU的歷史發展歷程其實也就是Intel公司X86系列CPU的發展歷程,就透過它來的“CPU歷史之旅”。 起步的角逐 中央處理器(Intel)1978年,Intel公司再次領導潮流,首次生產出16位的微處理器,並命名為i8086,同時還生產出與之相配合的數學協處理器i8087,這兩種晶片使用相互相容的指令集,但在i8087指令集中增加了一些專門用於對數、指數和三角函式等數學計算的指令。 由於這些指令集應用於i8086和i8087,所以人們也把這些指令集中統一稱之為X86指令集。 雖然以後Intel公司又陸續生產出第二代、第三代等更先進和更快的新型CPU,但都仍然相容原來的X86指令,而且Intel公司在後續CPU的命名上沿用了原先的X86序列,直到後來因商標註冊問題,才放棄了繼續用阿拉伯數字命名。 至於在後來發展壯大的其他公司,例如AMD和Cyrix等,在486以前(包括486)的CPU都是按Intel的命名方式為自己的X86系列CPU命名,但到了586時代,市場競爭越來越厲害了,由於商標註冊問題,它們已經無法繼續使用與Intel的X86系列相同或相似的命名,只好另外為自己的586.686相容CPU命名了。 1979年,Intel公司推出了8088晶片,它仍舊是屬於16位微處理器,內含29000個電晶體,時鐘頻率為4.77MHz,地址匯流排為20位,可使用1MB記憶體。 8088內部資料匯流排都是16位,外部資料匯流排是8位,而它的兄弟8086是16位。 微機時代的來臨 中央處理器(概念圖)1981年,8088晶片首次用於IBM的PC(個人電腦PersonalComputer)機中,開創了全新的微機時代。 也正是從8088開始,PC的概念開始在全世界範圍內發展起來。 早期的CPU通常是為大型及特定應用的計算機而訂製。 但是,這種昂貴為特定應用定製CPU的方法很大程度上已經讓位於開發便宜、標準化、適用於一個或多個目的的處理器類。 這個標準化趨勢始於由單個電晶體組成的大型機和微機年代,隨著積體電路的出現而加速。 積體電路使得更為複雜的CPU可以在很小的空間中設計和製造出來(在微米的量級)。 1982年,許多年輕的讀者尚在襁褓之中的時候,Intel公司已經推出了劃時代的最新產品80286晶片,該晶片比8086和8088都有了飛躍的發展,雖然它仍舊是16位結構,但是在CPU的內部含有13.4萬個電晶體,時鐘頻率由最初的6MHz逐步提高到20MHz。 其內部和外部資料匯流排皆為16位,地址匯流排24位,可定址16MB記憶體。 從80286開始,CPU的工作方式也演變出兩種來:真實模式和保護模式。 中央處理器(AMD速龍64FX概念圖)1985年,Intel公司推出了80386晶片,它是80X86系列中的第一種32位微處理器,而且製造工藝也有了很大的進步,與80286相比,80386內部內含27.5萬個電晶體,時鐘頻率為12.5MHz,後提高到20MHz、25MHz、33MHz。 80386的內部和外部資料匯流排都是32位,地址匯流排也是32位,可定址高達4GB記憶體。 它除具有真實模式和保護模式外,還增加了一種叫虛擬86的工作方式,可以透過同時模擬多個8086處理器來提供多工能力。 除了標準的80386晶片,也就是經常說的80386DX外,出於不同的市場和應用考慮,Intel又陸續推出了一些其它型別的80386晶片:80386SX、80386SL、80386DL等。 1988年,Intel推出的80386SX是市場定位在80286和80386DX之間的一種晶片,其與80386DX的不同在於外部資料匯流排和地址匯流排皆與80286相同,分別是16位和24位(即定址能力為16MB)。 高速CPU時代的騰飛 1990年,Intel公司推出的80386SL和80386DL都是低功耗、節能型晶片,主要用於便攜機和節能型桌上型電腦。 80386SL與80386DL的不同在於前者是基於80386SX的,後者是基於80386DX的,但兩者皆增加了一種新的工作方式:系統管理方式。 當進入系統管理方式後,CPU就自動降低執行速度、控制顯示屏和硬碟等其它部件暫停工作,甚至停止執行,進入“休眠”狀態,以達到節能目的。 1989年,大家耳熟能詳的80486晶片由Intel公司推出,這種晶片的偉大之處就在於它突破了100萬個電晶體的界限,集成了120萬個電晶體。 80486的時鐘頻率從25MHz逐步提高到了33MHz、50MHz。 80486是將80386和數學協處理器80387以及一個8KB的快取記憶體整合在一個晶片內,並且在80X86系列中首次採用了RISC(精簡指令集)技術,可以在一個時鐘週期內執行一條指令。 它還採用了突發匯流排方式,大大提高了與記憶體的資料交換速度。 由於這些改進,80486的效能比帶有80387數學協處理器的80386DX提高了4倍。 80486和80386一樣,也陸續出現了幾種型別。 上面介紹的最初型別是80486DX。 1990年,Intel公司推出了80486SX,它是486型別中的一種低價格機型,其與80486DX的區別在於它沒有數學協處理器。 80486DX2由於用了時鐘倍頻技術,也就是說晶片內部的執行速度是外部匯流排執行速度的兩倍,即晶片內部以2倍於系統時鐘的速度執行,但仍以原有時鐘速度與外界通訊。 80486DX2的內部時鐘頻率主要有40MHz、50MHz、66MHz等。 80486DX4也是採用了時鐘倍頻技術的晶片,它允許其內部單元以2倍或3倍於外部匯流排的速度執行。 為了支援這種提高了的內部工作頻率,它的片內快取記憶體擴大到16KB。 80486DX4的時鐘頻率為100MHz,其執行速度比66MHz的80486DX2快40%。 80486也有SL增強型別,其具有系統管理方式,用於便攜機或節能型桌上型電腦。 CPU的標準化和小型化都使得這一類數字裝置(香港譯為“電子零件”)在現代生活中中央處理器(Intel)的出現頻率遠遠超過有限應用專用的計算機。 現代微處理器出現在包括從汽車到手機到兒童玩具在內的各種物品中。 編輯本段效能指標主頻 主頻也叫時鐘頻率,單位是兆赫(MHz)或千兆赫(GHz),用來表示CPU的運算、處理資料的速度。 CPU的主頻=外頻×倍頻係數。 主頻和實際的運算速度存在一定的關係,但並不是一個簡單的線性關係。 所以,CPU的主頻與CPU實際的運算能力是沒有直接關係的,主頻表示在CPU內數字脈衝訊號震盪的速度。 在Intel的處理器產品中,也可以看到這樣的例子:1GHzItanium晶片能夠表現得差不多跟2.66GHz至強(Xeon)/Opteron一樣快,或是1.5GHzItanium2大約跟4GHzXeon/Opteron一樣快。 CPU的運算速度還要看CPU的流水線、匯流排等等各方面的效能指標。 外頻 外頻是CPU的基準頻率,單位是MHz。 CPU的外頻決定著整塊主機板的執行速度。 通俗地說,在臺式機中,所說的超頻,都是超CPU的外頻(當然一般情況下,CPU的倍頻都是被鎖住的)相信這點是很好理解的。 但對於伺服器CPU來講,超頻是絕對不允許的。 前面說到CPU決定著主機板的執行速度,兩者是同步執行的,如果把伺服器CPU超頻了,改變了外頻,會產生非同步執行,(桌上型電腦很多主機板都支援非同步執行)這樣會造成整個伺服器系統的不穩定。 目前的絕大部分電腦系統中外頻與主機板前端匯流排不是同步速度的,而外頻與前端匯流排(FSB)頻率又很容易被混為一談。 前端匯流排(FSB)頻率 前端匯流排(FSB)頻率(即匯流排頻率)是直接影響CPU與記憶體直接資料交換速度。 有一條公式可以計算,即資料頻寬=(匯流排頻率×資料位寬)/8,資料傳輸最大頻寬取決於所有同時傳輸的資料的寬度和傳輸頻率。 比方,現在的支援64位的至強Nocona,前端匯流排是800MHz,按照公式,它的資料傳輸最大頻寬是6.4GB/秒。 中央處理器(Intel)外頻與前端匯流排(FSB)頻率的區別:前端匯流排的速度指的是資料傳輸的速度,外頻是CPU與主機板之間同步執行的速度。 也就是說,100MHz外頻特指數字脈衝訊號在每秒鐘震盪一億次; 而100MHz前端匯流排指的是每秒鐘CPU可接受的資料傳輸量是100MHz×64bit÷8bit/Byte=800MB/s。 其實現在“HyperTransport”構架的出現,讓這種實際意義上的前端匯流排(FSB)頻率發生了變化。 IA-32架構必須有三大重要的構件:記憶體控制器Hub(MCH),I/O控制器Hub和PCIHub,像Intel很典型的晶片組Intel7501.Intel7505晶片組,為雙至強處理器量身定做的,它們所包含的MCH為CPU提供了頻率為533MHz的前端匯流排,配合DDR記憶體,前端匯流排頻寬可達到4.3GB/秒。 但隨著處理器效能不斷提高同時給系統架構帶來了很多問題。 而“HyperTransport”構架不但解決了問題,而且更有效地提高了匯流排頻寬,比方AMDOpteron處理器,靈活的HyperTransportI/O匯流排體系結構讓它整合了記憶體控制器,使處理器不透過系統匯流排傳給晶片組而直接和記憶體交換資料。 這樣,前端匯流排(FSB)頻率在AMDOpteron處理器就不知道從何談起了。 CPU的位和字長 中央處理器(德州儀器)位:在數位電路和電腦技術中採用二進位制,程式碼只有“0”和“1”,其中無論是“0”或是“1”在CPU中都是一“位”。 字長:電腦技術中對CPU在單位時間內(同一時間)能一次處理的二進位制數的位數叫字長。 所以能處理字長為8位資料的CPU通常就叫8位的CPU。 同理32位的CPU就能在單位時間內處理字長為32位的二進位制資料。 位元組和字長的區別:由於常用的英文字元用8位二進位制就可以表示,所以通常就將8位稱為一個位元組。 字長的長度是不固定的,對於不同的CPU、字長的長度也不一樣。 8位的CPU一次只能處理一個位元組,而32位的CPU一次就能處理4個位元組,同理字長為64位的CPU一次可以處理8個位元組。 倍頻係數 倍頻係數是指CPU主頻與外頻之間的相對比例關係。 在相同的外頻下,倍頻越高CPU的頻率也越高。 但實際上,在相同外頻的前提下,高倍頻的CPU本身意義並不大。 這是因為CPU與系統之間資料傳輸速度是有限的,一味追求高主頻而得到高倍頻的CPU就會出現明顯的“瓶頸”效應-CPU從系統中得到資料的極限速度不能夠滿足CPU運算的速度。 一般除了工程樣版的Intel的CPU都是鎖了倍頻的,少量的如Intel酷睿2核心的奔騰雙核E6500K和一些至尊版的CPU不鎖倍頻,而AMD之前都沒有鎖,現在AMD推出了黑盒版CPU(即不鎖倍頻版本,使用者可以自由調節倍頻,調節倍頻的超頻方式比調節外頻穩定得多)。 快取 快取大小也是CPU的重要指標之一,而且快取的結構和大小對CPU速度的影響非常大,CPU內快取的執行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統記憶體和硬碟。 實際工作時,CPU往往需要重複讀取同樣的資料塊,而快取容量的增大,可以大幅度提升CPU內部讀取資料的命中率,而不用再到記憶體或者硬碟上尋找,以此提高系統性能。 但是由於CPU芯片面積和成本的因素來考慮,快取都很小。 L1 Cache(一級快取)是CPU第一層快取記憶體,分為資料快取和指令快取。 內建的L1快取記憶體的容量和結構對CPU的效能影響較大,不過高速緩衝儲存器均由靜態RAM組成,結構較複雜,在CPU管芯面積不能太大的情況下,L1級快取記憶體的容量不可能做得太大。 一般伺服器CPU的L1快取的容量通常在32-256KB。 L2 Cache(二級快取)是CPU的第二層快取記憶體,分內部和外部兩種晶片。 內部的晶片二級快取執行速度與主頻相同,而外部的二級快取則只有主頻的一半。 L2快取記憶體容量也會影響CPU的效能,原則是越大越好,以前家庭用CPU容量最大的是512KB,現在膝上型電腦中也可以達到2M,而伺服器和工作站上用CPU的L2快取記憶體更高,可以達到8M以上。 L3 Cache(三級快取),分為兩種,早期的是外接,現在的都是內建的。 而它的實際作用即是,L3快取的應用可以進一步降低記憶體延遲,同時提升大資料量計算時處理器的效能。 降低記憶體延遲和提升大資料量計算能力對遊戲都很有幫助。 而在伺服器領域增加L3快取在效能方面仍然有顯著的提升。 比方具有較大L3快取的配置利用物理記憶體會更有效,故它比較慢的磁碟I/O子系統可以處理的資料請求。 具有較大L3快取的處理器提供更有效的檔案系統快取行為及較短訊息和處理器佇列長度。 其實最早的L3快取被應用在AMD釋出的K6-III處理器上,當時的L3快取受限於製造工藝,並沒有被整合進晶片內部,而是整合在主機板上。 在只能夠和系統匯流排頻率同步的L3快取同主記憶體其實差不了多少。 後來使用L3快取的是英特爾為伺服器市場所推出的Itanium處理器。 接著就是P4EE和至強MP。 Intel還打算推出一款9MBL3快取的Itanium2處理器,和以後24MBL3快取的雙核心Itanium2處理器。 但基本上L3快取對處理器的效能提高顯得不是很重要,比方配備1MBL3快取的XeonMP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比快取增加帶來更有效的效能提升。 CPU擴充套件指令集 CPU依靠指令來自計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。 指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。 從現階段的主流體系結構講,指令集可分為複雜指令集和精簡指令集兩部分(指令集共有四個種類),而從具體運用看,如Intel的MMX(MultiMediaExtended,此為AMD猜測的全稱,Intel並沒有說明詞源)、SSE、SSE2(Streaming-Singleinstructionmultipledata-Extensions2)、SSE 3、SSE4系列和AMD的3DNow!等都是CPU的擴充套件指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。 通常會把CPU的擴充套件指令集稱為”CPU的指令集”。 SSE3指令集也是目前規模最小的指令集,此前MMX包含有57條命令,SSE包含有50條命令,SSE2包含有144條命令,SSE3包含有13條命令。 CPU核心和I/O工作電壓 從586CPU開始,CPU的工作電壓分為核心電壓和I/O電壓兩種,通常CPU的核心電壓小於等於I/O電壓。 其中核心電壓的大小是根據CPU的生產工藝而定,一般製作工藝越小,核心工作電壓越低; I/O電壓一般都在1.6~5V。 低電壓能解決耗電過大和發熱過高的問題。