第 2 章 中央處理單元
本章提要 2-1 CPU 的功用 2-2 CPU 的工作原理 2-3 CPU 的分類
2-1 CPU 的功用 什麼是 CPU CPU 在電腦中扮演的角色
什麼是 CPU CPU 的全名是 Central Processing Unit (中央處理單元), 也就是一般人俗稱的處理器 (Processor);它在整部電腦的重要性, 就宛如大腦之於人的地位一般! CPU 負責系統中資料的運算 (例如:加、減、乘、除) 與邏輯判斷 (例如大於、等於、小於) 等核心工作, 是電腦中最重要、最複雜的一個元件, 電腦若沒有了 CPU, 將無法正常運作!
什麼是 CPU CPU 除了計算的工作外, 還必須指揮、協調其它元件之間執行、搭配的步調, 我們也才得以順利操作、使用電腦上的所有軟硬體。
什麼是 CPU
CPU 在電腦中扮演的角色 在第一章我們曾經提過電腦的五大單元, 其中 CPU 就包含了控制單元及算術/ 邏輯單元兩大單元, 其地位可見一斑!我們再來複習一下電腦的五大單元:
CPU 在電腦中扮演的角色
CPU 在電腦中扮演的角色 電腦的運作必定包含輸入→運算→輸出這 3 個過程。 舉例來說, 我們將自己的名字用鍵盤輸入到電腦, 電腦螢幕便將名字顯示出來, 這些輸入與輸出的過程對我們而言很容易理解, 但是運算呢?我們的操作 (如按滑鼠左鈕 2 下這個動作) 要怎麼『運算』呢?
CPU 在電腦中扮演的角色 其實對 CPU 而言, 我們對電腦的操作會轉成一連串的指令, 而探究指令的本質, 其實就是數字資料 (0 和 1) 的組合, 實際上在電腦中的所有的資料、指令都是數字。而將『數字』拿來做數學運算本來就是再正常不過的了! 接下來我們會一探 CPU 的內部結構, 並理解電腦的運作是怎麼從輸入、經過運算、到最後產生輸出。
2-2 CPU 的工作原理 在了解 CPU 的工作原理之前, 我們先從 CPU 的結構開始認識起。
2-2-1 CPU 的構造 CPU 的構造包含了控制單元 (CU, Control Unit)、算術/邏輯單元 (ALU Arithmetic/Logic Unit)、暫存器 (Register) 等, 並透過匯流排 (Bus) 來溝通:
CPU 的構造 快取記憶體 (Cache Memory) 雖然也會設置在 CPU 內部, 不過就傳統 CPU 的結構 (Architecture) 來說, 快取記憶體並不屬於 CPU 的一部份。
控制單元 控制單元 (Control Unit) 負責控制資料流和指令流。 當我們輸入指令 (如鍵盤或滑鼠的操作) 時, 控制單元會讀取並解譯指令, 以便將需要運算的資料送到算術/邏輯單元進行運算, 並將運算完成的資料流或指令流, 送到輸出或輸入單元。 其實說穿了, 控制單元的主要任務就是在『控制』輸出與輸入而已。
算術/ 邏輯單元 算術/邏輯單元 (Arithmetic/Logic Unit), 從字面上來理解就是負責算術運算及邏輯運算。簡單地說, 算術運算就是加、減、乘、除等運算, 而邏輯運算則是 AND 、OR 、NOT 等運算, 這些都是數學上再熟悉不過的運算方法了。
暫存器 暫存器 (Register) 是 CPU 內部用來暫時存放資料的地方, 是相當重要的一個元件。
暫存器 雖然暫存器的存取速度相當快, 但因成本太高, 所以通常只能配置幾個位元組 (Bytes) 的容量。每個暫存器的大小(寬度)也決定了 CPU 所能處理的字組 (Word) 大小。 字組 (Word) 是一個單位, 表示 CPU 在一個指令週期 (詳細後述) 所處理的資料量。若 CPU 一次能處理 32 位元大小的字組, 則這個 CPU 就稱為 32 位元 CPU 。
暫存器 CPU 裏的暫存器有很多個, 依功能的不同會分別配置在控制單元及算術/邏輯單元中。 通常, 對程式設計者而言, 一個 CPU 可以看成是一群暫存器的組合, 只要學習 CPU 的指令, 並且熟習暫存器的用法, 便可以順利的控制 CPU 動作了。
暫存器
暫存器 不同架構的 CPU其暫存器種類、數量都不同, 以下介紹 x86 系列 CPU 中幾種較常見的暫存器: 一般用途暫存器 (General Purpose Register) :一般用途暫存器是用來存放運算的資料、指令或位址。一般用途暫存器依其功能而有不同的名稱, 以下是幾種常見的一般用途暫存器:
暫存器 資料暫存器 (Data Register):資料暫存器即用來存放資料的地方。 累加器 (Accumulator):累加器通常會被單獨拿出來介紹, 因為累加器是算術/邏輯運算單元中相當重要的部份, 是用來存放運算過程及運算結果的資料。 指令暫存器 (Instruction Register):通常設置在控制單元內, 用來存放目前被執行的指令。 程式計數器 (Program Counter):用來記錄 CPU 下一個要執行指令所存放的位址。
暫存器 位址暫存器 (Address Register):用來記錄資料存放在記憶體的位址, 也稱為指位器 (Pointer)。常見位址暫存器有以下幾種: 堆疊暫存器 (Stack Register):堆疊暫存器是用來記錄堆疊最頂端位址的暫存器。堆疊 (Stack) 是一種重要的資料結構 (Data Structure)。所謂的資料結構指的是資料組織與管理的方法。以堆疊而言, 就是規定資料元素必須依著後進先出 (LIFO, Last In First Out) 之次序來存取。例如下圖我們將甲、乙、丙、丁這 4 個資料依次堆入 (Push) 堆疊:
暫存器
暫存器 當我們想由堆疊取出 (Pop) 資料時, 其次序會是丁、丙、乙、甲。也就是說, 像 "甲" 這個最早被 Push 的資料是最後才會被 Pop 的。這是因為堆疊是一種單一出入口的資料結構體, 自然就會造成『後進先出』 這樣的特性了。以此例來說, 堆疊暫存器記錄的就是『丁』的位址。
暫存器 基底暫存器 ( Base Register):基底暫存器是『基底定址法』在做暫存器定址時所使用的暫存器。基底定址法就是以基底暫存器所指位址為起點, 再加上一固定距離來得到資料所在的位址。 舉例來說, 如果要從堆疊區取資料, 那麼必須先指定基底的位置, 再依指定的距離找到要存取的位置:
暫存器
暫存器 如上圖所示, 假設我們要取『丁』, 那麼可以指定『乙』的位址為基底, 加上 2 Bytes 的距離就可以找到『丁』的位址;或是以『丙』的位址為基底, 加上 1 Bytes 的距離也可以找到『丁』的位址。 所謂定址法 (Addressing Mode) 就是 CPU 尋找資料所在位置的方法。簡言之, 就是 CPU 存取 (Access) 資料的途徑, 因此 CPU 除了可以對暫存器定址, 也可以對主記憶體定址。
暫存器 索引暫存器 (Index Register) :索引暫存器是『索引定址法』在做暫存器定址時使用的暫存器。 索引定址法的原理與基底定址法是一樣的, 但這時是以固定之位址 (如堆疊的開頭) 為基底, 再加上索引暫存器儲存的值以得到資料所在位址。 同樣以從堆疊區取資料為例:
暫存器
暫存器 如上圖所示, 假設我們要取『丁』, 此時會固定以『甲』為基底, 再加上 3 (索引暫存器所記錄的值) 的距離來找到『丁』的位址。索引定址法和基底定址法最大的不同, 就是說我們無須、也無法指定基底的位址。
暫存器 旗標暫存器 (Flag Register):旗標暫存器是一種比較特殊的暫存器, 是用來記錄 CPU 在處理運算時的狀態, 或運算之後的狀態。
CPU 如何執行指令 認識了控制單元、算術/ 邏輯單元及暫存器之後, 我們就可以開始來瞭解指令是如何在 CPU 當中運作的。
CPU 如何執行指令 上述 CPU 執行指令的一連串過程, 就稱之為機器週期 (Machine Cycle), 亦可稱為指令週期 (Instruction Cycle)。 過程中, 控制單元從讀取指令到解譯完成的時間叫做指令時間 (Instruction Time), 而算術/邏輯單元從運算到運算完成並存入暫存器的時間, 叫做執行時間 (Execution Time), 如下圖所示:
CPU 如何執行指令
CPU 如何執行指令 圖 2-8 為指令執行流程的示意圖, 實際上指令並不一定在算術/邏輯單元中執行, 也可能是由控制單元來執行的。
CPU 如何執行指令 通常我們用指令週期衡量 CPU 運算的速度。一個指令週期所需的時間, 大約幾百萬分之一秒, 也就是說一秒鐘可以執行幾百萬個的指令。 而用來計量 CPU 運算速度的單位稱為 MIPS (Millions of Instruction Per Second, 每秒百萬個指令), 意即 CPU 一秒鐘可以執行幾百萬個的指令。MIPS 值越高, 代表CPU 的運算速度越快。
匯流排 電腦上各元件傳送資料的管道就是匯流排 (Bus)。從字面上解讀, 取其『匯流』 之意, 就大致可以明白這個傳送資料的管道, 是由許多不同的管道整合在一起的。 這樣做的好處在於管道 (也就是主機板上的電子線路) 容易安排, 也能確保所有元件都能互相傳送資料。
匯流排 舉例來說, 就像高速公路也是採用『匯流』 的概念一樣, 不同的地點都以交流道和高速公路銜接, 而不是地點和地點之間各自連接。 如此, 就算新增加了一個地點, 只要此地點有交流道連上高速公路,還是可以確保我們一定能到達該處。
匯流排 電腦中匯流排主要分為三大類: 內部匯流排 (Internal Bus):CPU 內部用來傳送資料的通道。控制單元、算術/邏輯單元及暫存器在讀取、存放資料時, 都是經過內部匯流排。 系統匯流排 (System Bus, 或 Processor System Bus):CPU 與主機板上晶片組傳送資料的通道, 在 2-2-2 節會詳細介紹。
匯流排 擴充匯流排 (Expansion Bus):晶片組和主機板上除了 CPU 之外的各元件傳送資料的通道。
匯流排示意圖
何謂晶片組 早期主機板必須佈滿許多電阻、電容、IC 晶片、與複雜的電子線路, 才能供應主機板所需的各項功能, 不但製造成本高, 維修時更是困難重重。 不過, 拜半導體科技突飛猛進之賜, 現在只要以 2、3 顆晶片便能取代原先眾多的元件與線路, 在功能上更是有過之而無不及。這幾顆晶片必須整組運用在同一塊板子上, 因此便稱為晶片組。
何謂晶片組 通常晶片組是由北橋 (North Bridge) 與南橋(South Bridge) 晶片所組成的。 所以用最簡單的一句話來解釋, 晶片組就負責整個主機板上所有裝置、元件間溝通與控制的樞紐。而北橋與南橋晶片所負責的元件如表:
CPU 的規格與技術名詞 在了解 CPU 的架構和一些重要的元件之後, 接著要介紹一些 CPU 常見的規格和技術名詞, 認識這些規格和技術名詞, 對於實務上學習 CPU 是相當有幫助的。
CPU 的工作時脈 一般描述 CPU 的效能時, 都是以 CPU 運作的「時脈頻率」, 也稱為「工作時脈」來描述, 早期其單位為 MHz (每秒百萬次);如 Celeron 950、Duron 800 就是指其時脈頻率分別為 950 MHz 與 800 MHz 。 近來則發展到 GHz (每秒十億次) 的速度, 像是 Pentium 4 3.2 G、Duron 1.8G 等;當然頻率愈高、執行效能愈快, 但相對價格也愈貴!
CPU 的工作時脈 現在 AMD 的 CPU 如:Athlon 64, 其所標示的數值並不是 CPU 真正的執行頻率、而是指其效能可獲致的結果! 例如 Athlon 64 3200+ 代表該 CPU 的效能可比擬、甚至超越 Pentium 4 的 3.2 G, 但是其實際工作時脈只有 2.0 GHz 左右而已。
CPU 的工作時脈 CPU 時脈的計算方式如下: CPU 的內頻 = CPU 的外頻 × 倍頻係數
CPU 的工作時脈 關於內頻、外頻、和倍頻係數說明如下: 內頻 (Internal Clock):是 CPU 內部在工作時的頻率, 以 Pentium 4 2.8G 的 CPU 為例, 其內頻即是 2800 MHz。 外頻 (External Clock):是主機板提供給 CPU 的時脈頻率。 倍頻係數 (Clock Multiplier Factor):以內頻除以外頻, 會得到一係數, 此係數即稱為倍頻係數, 也就是內頻和外頻相差的倍數。
什麼是超頻? 所謂的超頻, 就是讓原本時脈較低的 CPU 以更高的時脈運作。 超頻的方法不外乎是調高外頻或倍頻係數, 以提昇 CPU 的時脈。不過 CPU 廠商為了本身產品的區隔, 不希望 CPU 被超頻使用, 而大多把倍頻係數鎖住了。因此, 現在要超頻, 通常只能從外頻來著手。
什麼是超頻? 既然超頻可以得到額外的效能, 何樂而不為呢? 不過超頻可是有相當風險的, 因為迫使 CPU 以更高時脈運作, 當然會產生更高的溫度, 不僅 CPU 本身有燒壞的可能, 對於其它週邊也是一大考驗。 若是為了多一點效能, 而不慎燒毀 CPU 或硬碟...等其它元件, 都是很不划算的。
快取記憶體 CPU 利用暫存器來進行資料的存取和運算, 但暫存器和主記憶體的速度差異實在太大, 若從暫存器直接和主記憶體進行輸出或輸入, 可能造成 CPU 長時間的閒置, 只為了等待主記憶體將資料送進來。 為了提升系統的效能, 於是在暫存器和主記憶體之間, 配置了快取記憶體 (Cache Memory)。
快取記憶體 快取記憶體是位於記憶體階層的第二層, 相較於主記憶體, 仍是屬於速度快、成本高的記憶體, 因此通常也只能配置容量遠少於主記憶體的容量。 快取記憶體的容量雖然小, 但可以存放較常使用的指令或資料。 由於 CPU 讀取需要的指令或資料時, 會直接到快取記憶體尋找, 若找不到需要的資料才會到主記憶體中讀取。
快取記憶體 因此, 若 CPU 在快取就能找到需要的資料, 便無需再到主記憶體讀取, 而資料傳送的時間就便能大幅縮短了;這樣的工作方式正是快取記憶體能夠提高效能的最主要原因。 快取記憶體通常與 CPU 直接整合在一起, 因此我們是無法自行增減快取記憶體的大小。快取記憶體依層級 (Level) 區分為 Level1 (L1, 資料/指令快取) 與 Level2 (L2, 記憶快取) 等 2 種。
快取記憶體 在高階伺服器版本的 CPU 上, 還會看到有第 3 層快取 (L3 Cache) , 其速度以 L1 快取最快, 接著依次是 L2 和 L3。通常我們較會注意到的是 L2 Cache 的大小, 目前 CPU 使用的 L2 快取已經多達 1 MB 。
快取記憶體 理論上 Cache 愈大、CPU 的效能愈好, 也因此目前新型的 CPU 都不斷加大快取記憶體。不過, 快取記憶體一旦超過一個『額度』後, 其帶來的效益差異將變得不明顯了。 目前主流 CPU 多為 1,024 KB (1 MB) 或 512 KB, 入門級產品則縮減為 256 或 128 KB。
傳輸頻寬 傳輸頻寬 (Bandwidth) 是指單位時間內可傳送/接收的資料量 (Bytes/Sec);在電腦上各元件之間會使用不同的傳輸頻寬, 如北橋晶片和 CPU 之間的系統匯流排、和記憶體之間的擴充匯流排...等, 都有不同的傳輸頻寬, 這些頻寬都是可以計算出來的。在計算前, 必須先瞭解『頻寬』是如何算出來的: 傳輸頻寬 = 傳輸頻率 (MHz)× 資料寬度 (Bits)
傳輸頻寬 以使用 800 MHz 系統匯流排的 Pentium 4 CPU 為例, 其 CPU 的資料寬度為 64 位元, 故可傳輸的資料頻寬就是: (800 MHz × 64 Bits) = 51,200 MBits/Sec = 6,400 MBytes / Sec ≒ 6.4 GB/Sec
CPU 的指令集 從字面上來看, 指令集 (Instruction Set) 是一群指令的集合;而指令則是CPU 提供的服務。系統只要說明:『請執行 xxxx 服務, 所需的相關資料有:yyy, zzz, www, ...』, CPU 就會依序執行。 不過這是系統內部的運作, 當中的執行細節完全由 CPU 廠商來決定。您所要了解是:指令集提供的服務是影響 CPU 效能的重要關鍵。我們可舉 2 個例子來體會這個事實:
CPU 的指令集 相同指令, 需要不同執行週期 假設A、I 兩個相同頻率的 CPU 都執行相同的指令, I 需要 3 個執行週期, A 只需 2 個;則在相同時脈下, A 的效能自然比 I 快。 組合指令較慢 另一種情形則是:有些服務並非單一指令所提供, 而是由多道指令組合而成;您可以想像, 這類組合指令所需的執行週期自然比單一指令來得長。
CPU 的指令集 談到 CPU 的指令集, 就不能不提到 CISC 和 RISC 這兩種分類, 所以接著我們要來認識 CISC 與 RISC。
CISC 與 RISC CISC (Complex Instruction Set Computer) 稱為複雜指令集, 是指 CPU 內使用功能較多、較強的指令。 CISC 的電路設計較為複雜, 成本也較高, 但由於功能強大, 因此可以很容易處理很複雜的指令, 也使得編譯器 (Compiler) 的撰寫也較為簡單。 使用 CISC 最具代表性的 CPU, 即是 Intel X86 系列的CPU。
CISC 與 RISC 編譯器 (Compiler) 的功能是將高階語言 (如C、Visual Basic...等) 轉換為電腦看得懂的機械語言 (也就是 0 和 1的組合)。
CISC 與 RISC RISC (Reduced Instruction Set Computer) 稱為精簡指令集, 也就是使用少量、較常用的, 且功能較簡單的基本指令, 來完成複雜的指令。 雖然 RISC 的指令功能較少, 但因為每個指令較簡單, 所以執行的速度較快, 而相關的電路設計也較為容易。 使用 RISC 的 CPU 通常是非 X86 系統的 CPU, 最具代表性的是 IBM 、Motorola 與 Apple 共同開發的 PowerPC。
CISC 與 RISC
CISC 與 RISC 我們以電子計算機來比喻 CISC 和 RISC, 將計算機的使用者比喻成編譯器。CISC 就像工程用的計算機, 功能多而且強大, 可以很容易的算出開根號、三角函數等運算。然而要製作一台工程用的計算機比較困難, 成本比較高。 對於使用者來說, 不需要很強數學知識 (也就說編譯器不需要很強大, 比較容易設計) 就能完成高難度的數學運算。
CISC 與 RISC 而 RISC 就像普通的計算機, 只能使用加、減、乘、除這些簡單而基本的四則運算;若是較複雜的數學運算, 就運用許多次的四則運算來計算出結果, 也因此使用者必須具備很強的數學知識才行 (也就是說編譯器必須很強大, 因此設計上較困難)。 不過這個比喻只是形容 CISC 和 RISC 的概念而已, 可不能單純以此來比較 CISC 和 RISC 的優劣。
CISC 與 RISC CISC 的概念是利用硬體的電路來完成較複雜運算, 以增加電腦的效能;而複雜的電路設計也代表著必須使用更多的電晶體, 在以往的半導體技術不像現在這麼進步的時候, 很難在一塊晶片中放入大量的電晶體, 因此使用 CISC 必須付出較大的成本。
CISC 與 RISC 此外, 複雜的電路設計也代表 CPU 的指令週期將因此變長, 即使是處理較單純的指令, 效能仍然不佳。因而後來出現了 RISC 這樣的概念, 也盡可能只使用最精簡、最基本及最常用的功能, 而不加入其它複雜、強大、卻很少使用的功能。 以電子計算機來做比喻, 如果使用計算機一百次, 可能用不到一次『log』計算, 那麼做出這個功能不就是浪費了嗎?
CISC 與 RISC 而 RISC 因為指令的功能較簡單, 使得電路的設計較為精簡, 使用的電晶體也減少許多, CPU 的指令週期也得以縮短。 因此執行指令時, RISC 的執行效能更是遠勝 CISC, 再加上軟體技術越來越進步, 編譯器的功能越來越強大、越來越完整, 因而使得 RISC 大行其道, 甚至一度被認為將會取代 CISC。
CISC 與 RISC 關於 CISC 和 RISC 的比較整理如下:
CISC 與 RISC CISC 和 RISC 之爭存在已久, 雖然 RISC 一度情勢大好, 不過 CISC 還是有其價值, 並未因此消失。 其實現在的 CPU 已經找不到『純粹』CISC 或 RISC 設計了, 反而大多是兩種設計混合使用。
CISC 與 RISC 首先, 近來半導體技術的躍進, 使得一個晶片內可以放入更多的電晶體, 而 RISC 也不再堅持以往『少量電晶體』 的想法, 而加入了以往 CISC 主張-使用大量的電晶體, 並且加入了部份 CISC 的指令藉以應付複雜的運算。
CISC 與 RISC 而 CISC 也導入了 L1 快取記憶體的設計, 甚至將部份複雜的指令拆解成 RISC 指令來執行, 藉以提高效能。CISC 和 RISC 之爭在現在看來意義已不大, 重要的是彼此各取優點、各自發展, 以達成提高效能的目標。 L1 Cache 原本是 RISC 所採用的設計, 而 Intel 從 486 的 CPU 開始導入 L1 Cache 的設計。
CISC 與 RISC 隨著電腦的應用日趨複雜, 以往單純做文書處理等簡單應用已經不足以應付複雜的影像、聲音等龐大的多媒體資訊, 所以各家廠商紛紛研發特殊的指令集。 在後續的內容, 我們要介紹目前 x86 系列 CPU 上最常見的幾個指令集。
MMX 多媒體延伸指令集 MMX (MultiMedia eXtension) 指令集是 Intel 公司所發展的多媒體延伸指令集, 總共有 57 個指令, 專門負責多媒體的音效、影像、動畫等處理。 在 Pentium 處理器後期, Intel 才開始將 MMX 指令集加入 CPU 中, 爾後 Intel 也授權 AMD、Cyrix 等廠商, 同意他們將 MMX 指令集納入自家產品中。
MMX 多媒體延伸指令集
MMX 多媒體延伸指令集 在加入 MMX 指令集的同時, Intel 也採用 SIMD (Single Instruction Multiple Data) 新技術;讓 CPU 可對多道相同的服務要求, 以單一指令、同時執行不同資料的方式來運算, 藉此提高運作效能。
SSE 、SSE2 、SSE3 1999 年 Intel 推出 Pentium!!!, 除了提供 MMX 指令集外, 還額外增加 SSE (Streaming SIMD Extensions) 指令集, 也有人稱之為 MMX-2。SSE 包含了 70 個全新的指令, 可以更有效地加快影像、音訊與視訊等資料的處理、以及語音辨識的速度。
SSE 、SSE2 、SSE3 而在 2000 年的 Pentium 4 處理器再度針對指令集的部份作強化, 發展出 SSE2 (Streaming SIMD Extensions 2) 指令集。 SSE2 比起前一代, 又再度增加 144 個全新的指令, 提供倍精準 (Double Precision) 浮點運算、整合 SIMD 功能、以及記憶體管理等, 充分滿足各種應用軟體的需求。
SSE 、SSE2 、SSE3 2004 年 Intel 在 Prescott 核心的 Pentium 4 中, 除了 MMX、SSE/SSE2 指令集外, 另外增加了 13 個全新的指令, 並且將其稱為 SSE3 指令集。 SSE3 指令集可以增強 CPU 處理多媒體編碼、解碼的速度, 並且改善執行緒 (Thread) 的效能。
3DNow!、Enhanced 3DNow!、3DNow! Professional 在 MMX 推出後之後, AMD 於 1998 年也發表了 3DNow! 指令集, 其中內含 21 個指令, 能夠處理大量的浮點運算、3D 坐標轉換、3D 模型建立...等工作, 使 3D 圖形成像更加快速與精緻。 3DNow! 運用在 K6-2 系列的 CPU 上, 使得當時的 K6-2 CPU 不但具備 MMX, 而且還有 3DNow! 的功能。
3DNow!、Enhanced 3DNow!、3DNow! Professional Enhanced 3DNow! 則是在 Athlon 與 Duron 中開始加入的新指令集, 比原先的 3DNow! 多出了 24 個新增指令。 其中有 12 個指令是增強多媒體資料的整數運算效能、語音辨識技術、與視訊資料處理能力;7 個指令用來加快瀏覽器處理網路資料的速度 (包括圖形、Plug-In 等);最後 5 個指令乃加強 CPU 處理數位訊號的能力, 包括 MP3、杜比環繞音效等。
3DNow!、Enhanced 3DNow!、3DNow! Professional 由於 Intel CPU 的市場佔有率較高, 因此各廠商的軟體大多支援 Intel SSE/SSE2 指令集, 相對之下 AMD 的 3DNow!/Enhanced 3DNow! 指令集就比較缺少支援。 因此 AMD 新的 3DNow! Professional 指令集中, 除了加入原先 Enhanced 3DNow! 指令集外, 還增加了 51 個 SSE 指令, 讓 AMD 的 CPU 能夠和 Intel CPU 同樣享受到眾多軟體的支援。
3DNow!、Enhanced 3DNow!、3DNow! Professional AMD 最新的 K8 CPU 已經改支援 SSE2/SSE3 指令集, 因此未來多媒體指令可望統一。
針腳與對應之插槽 隨著 CPU 的演化, 封裝的針腳 (Pin) 數也愈來愈多, 從 462-Pin / 478-Pin 到目前的 754/778/939 Pin, 不同的 CPU 針腳就得搭配專屬插槽的主機板。
針腳與對應之插槽
系統匯流排 系統匯流排 (System Bus 或 PSB, Processor System Bus) , 也稱之為前側匯流排 (FSB, Front Side Bus)。 通常大多數的主機板 BIOS 和熟悉電腦組裝的使用者都習慣使用 FSB 一詞。 FSB 的速度是 CPU 對北橋晶片的運作速度。以目前 2 家 x86 CPU 大廠來看, Pentium 4 與 Athlon 64 都高達 800 MHz (Mega Herz, 百萬赫茲)或以上。
系統匯流排 不過先別被這樣的數據嚇到了, 其實 Intel 與 AMD 在這裡用了『倍頻』的概念, 分別以 QDR (Quad Data Rate, 四倍資料速率) 和 HyperTransport (超傳輸, 詳細後述) 技術達成前述的數據值。
Hyper Transport Hyper Transport (超傳輸, 簡稱為 H.T.) 技術是由 AMD 所開發, 主要是做為晶片與晶片之間的高速互連通道, 如:CPU 與北橋晶片、或南橋和北橋晶片之間的連結等;該通道具有雙向傳輸和可變寬度 (頻寬) 的特性, 工作頻率可從 200 MHz〜800 MHz, 傳輸的資料寬度更可有 2、4、8、16、32 位元 (Bits) 等組合。
Hyper-Threading Hyper-Threading 的中文翻譯成『超執行緒』, 同樣簡稱為『H.T.』, 但和 AMD 的 Hyper Transport 是完全不同的, 請您務必要注意。 用比較淺顯的概念來說, Hyper-Threading 就是把 1 個實體的 CPU『模擬』 成 2 顆 CPU、增加處理器運作效率, 藉以有效地善用資源、減少系統資源的浪費:
Hyper-Threading
Hyper-Threading 既然 Hyper-Threading 是『模擬』2 顆 CPU 的效果, 故其效能是無法等同 2 顆真正的 CPU, 或 1 顆雙核心 (稍後介紹) 的 CPU;但比起原先單一架構的處理器, 確實可提高不少的執行效率。
雙核心 目前 CPU 已經發展到了多核心的架構, 而雙核心的 CPU 已經逐漸變成主流。雙核心相當於將兩個 CPU (核心)包裝在單一個 CPU 晶片上。 不同於前文提過的 Hyper-Threading 技術, 是將單一核心的 CPU 模擬成兩個核心, 而是真正雙實體核心的 CPU, 其效能是遠超過使用 Hyper-Threading 技術的單核心 CPU 。
雙核心 以簡單的概念來解釋, 若將 CPU 比喻為廚房, 那麼單核心就像只有一位廚師, 一次只能做一道菜, 必須做完一道菜之後才能再做下一道。 若加上 Hyper-Threading 技術, 那麼這個廚師就有能力一次做兩道菜, 只不過這個廚師必須分心輪流做這兩道菜。
雙核心 而雙核心就像是兩個廚師, 可以同時專心做兩道菜, 當然速度要比一個廚師快得多了。若是再加上 Hyper-Threading 技術, 那麼這兩位廚師就可以同時做四道菜了!
64 位元和 32 位元 CPU 的區別 CPU 的位元數, 主要決定於 CPU 一次能處理的字組 (Word) 大小。而能處理多大的字組, 則是依暫存器的大小而定。暫存器越大, 一個指令週期所能執行的字組便越大。 以 Intel 早期的 8086 CPU 為例, 其一個指令週期可以執行一個 16 Bits 的字組 (Word), 因此 8086 被稱為 16 位元的 CPU。
64 位元和 32 位元 CPU 的區別 而所謂的 32 位元 CPU, 就是可以執行 32 Bits 的字組;同樣地, 64 位元的 CPU 就是可以執行 64 Bits 的字組。 Intel 與 AMD 所推出的 64 位元技術分別是EM64T 及 AMD64。若自行購買 CPU 時, 必須注意是否有使用 64 位元的技術。例如:Intel 的 Pentium 4, 就有分成 32 位元和 64 位元 (會標註 EM64T) 兩種, 並不是所有的 Pentium 4 都是 64 位元。
64 位元和 32 位元 CPU 的區別 64 位元 CPU 仍必須搭配針對 64 位元設計的軟體, 才能發揮效能。
64 位元和 32 位元 CPU 的區別 反過來說, 若是以 32 位元的 CPU 執行 64 位元的軟體, 由於軟體所傳送的是 64 位元的字組, 32 位元的 CPU 上根本就放不下, 因此 32 位元的CPU 是無法執行 64 位元的軟體。 例如 Intel X86 的 CPU 只能向下相容, 卻無法向上相容 (如16 位元的 286 CPU 無法執行設計給 386 CPU 使用的 32 位元軟體) 的原因即是如此。
64 位元和 32 位元 CPU 的區別 目前雖然仍以 32 位元的軟體最普遍, 不過微軟公司已經推出了 64 位元版本的作業系統, 而其後預計推出的最新版作業系統-Vista 也將會有 32 位元和 64 位元 2 種版本, 相信 64 位元的軟硬體變成主流已是指日可待了。
2-3 CPU 的分類 CPU 的使用相當廣泛, 從我們熟悉的各種電腦平台 (如:PDA 、筆記型電腦、桌上型電腦) , 到 3C 產品 (行動電話、MP3 隨身聽)、家電產品 (如:液晶電視、DVD 播放機)等, 都會使用到 CPU 。 本單元將焦點放在電腦平台, 介紹 CPU 的分類。
CPU 的分類 目前常見的 CPU 種類, 依其運算能力及省電性, 大致可區分為高階伺服器等級、桌上型個人電腦等級及筆記型電腦等級 3 種分類。以下會依這 3 種分類來分別說明。
高階伺服器等級的 CPU 高階伺服器由於需要長時間運作 (幾乎不關機), 處理的資料量龐大, 所以對於 CPU 的要求在於穩定性高、強大的運算能力和記憶體定址能力。 目前紅極一時的 64 位元 CPU 其實早已出現在高階伺服器當中了。
高階伺服器等級的 CPU 目前伺服器等級的 CPU 大致有下列幾種:
高階伺服器等級的 CPU 上表中的 Cell 處理器目前尚未問市, 生產廠商之一的 IBM 公司預計將會使用 Cell 處理器來建構高階的工作站, 甚至超級電腦。 而 Sony 和 Toshiba 兩家公司, 則分別預計將 Cell 處理器運用在 PlayStation 3遊戲主機及高階影音家電中。
桌上型個人電腦等級的 CPU 目前個人電腦市場大致以 Intel 與 AMD 兩家廠商所生產的 CPU 為主流。憑藉著半導體技術的進步, 個人電腦所使用的處理器不僅速度一日千里, 功能也大幅攀升, 逐步拉近了個人電腦與高階伺服器之間的差距。
Intel 市面上的產品分類
AMD 市面上的產品分類
桌上型個人電腦等級的 CPU 桌上型電腦除了 PC 之外, 尚有麥金塔 (MAC) 電腦這個不可忽視的族群。 麥金塔電腦原本使用的 CPU是 PowerPC, 不過在 2006 年初, 麥金塔電腦也開始改採用 Intel 的 CPU 了。
筆記型電腦等級的 CPU 筆記型電腦所使用的 CPU, 一般要求低耗電量、低發熱量。也因此筆記型電腦所使用的 CPU, 通常會加上特殊技術 (如:動態降頻技術、省電技術...等), 以致售價也會比桌上型電腦等級的 CPU 要高一些。
筆記型電腦等級的 CPU 在筆記型電腦的市場中, 仍以 Intel 及 AMD 兩大廠商為主流, 底下分別列出兩家廠商的產品規格列表:
筆記型電腦等級的 CPU
筆記型電腦等級的 CPU
筆記型電腦等級的 CPU 除了 Intel 和 AMD 這兩大廠商之外, 筆記型電腦尚有國內廠商-威盛電子 (VIA) 與全美達 (Transmeta) 推出速度較慢的 CPU , 以搶攻低價筆記型電腦的市場。
特 別 企 劃 CPU 進入多核心的時代 過去 CPU 主要以時脈作為評鑑效能的主要依據, 因此 CPU 廠商便不斷地提高 CPU 時脈, 汲汲營營於速度之王的寶座, 於是陷入時脈競爭的迷思裏了。 拜半導體技術躍進之賜, 我們得以一再地驗證摩爾定律 (積體電路每平方英吋上的電晶體數量, 每18 個月會增加一倍)。
特 別 企 劃 CPU 進入多核心的時代 若是以 1995 年上市的 100 MHz CPU, 相較於 2005 年上市的 3800 MHz CPU, 其 10 年間速度成長將近 40 倍! 然而 CPU 的發展面臨了瓶頸, 在單一晶片所能放入的電晶體數幾乎到了極限, 而高時脈的運作更帶來了驚人的耗熱!
特 別 企 劃 CPU 進入多核心的時代 殊不知五花八門的網路世界中, 也驗證過用 CPU 來煎蛋不是夢想!這種駭人聽聞的實驗並非網路笑話, 是不爭的事實啊!CPU 時脈再這樣繼續提高, 恐怕往後中秋烤肉只要帶一台 Notebook 出門, 再也不用燒炭生火了! 當然, CPU 廠商也體認到這個問題的嚴重性, 萬萬不會坐以待斃。於是想出了在單一晶片中, 置入兩個較低時脈的實體核心的做法。
特 別 企 劃 CPU 進入多核心的時代 雙核心的概念其實很容易理解。簡單地說, 就是將 1 個人的工作分給 2 個人做, 當然會效能大增, 這樣的概念稱之為平行運算。其實平行運算的應用已經有一段時間了, 許多工作站、伺服器...等大型主機, 就是使用多個 CPU 的架構。不過現在則是在一顆 CPU 中放入 2 個時脈較低核心, 以提升效能、減少耗電量及熱量的產生。
特 別 企 劃 CPU 進入多核心的時代 平行運算並不需要兩兩成對, 才能達成『平行』。目前市面上已經有 3 核心的 CPU 出現。知名的電玩主機-XBOX 360 所採用的 PowerPC, 就是 3 核心的 CPU, 其驚人的運算能力, 從高解析度、流暢的遊戲畫面上就可以感受得到。
特 別 企 劃 CPU 進入多核心的時代 話說回來, 要將雙核心的 CPU 發揮得淋漓盡致, 仍然需要軟體的配合才行。 目前 PC 上的軟體仍以單核心架構最普遍, 若這些軟體在雙核心的 CPU 上執行, 也只能利用到 1 個核心;因此短期內雙核心 CPU 可能無法展現出明顯的優勢。
特 別 企 劃 CPU 進入多核心的時代 不過, 一些新推出的軟體也漸漸採用多核心的架構設計, 如 Microsoft 推出的 SQL Server 2005 資料庫軟體, 就支援雙核心的架構, 可以表現出更高的效能。 相信將來的軟體設計, 都會以多核心的架構來開發了。
特 別 企 劃 CPU 進入多核心的時代 Intel 在 CPU 的發展時程表中, 已經預告在 2007 年將會發表第一顆 4 核心的 CPU, 甚至在 2008 年可能就會出現 8 核心的 CPU呢! 可以想見, 未來 CPU 將是以多核心架構掛帥, 也就是從以前的『比快』演變成『比多』了!