1 / 137

中央處理單元

第 2 章. 中央處理單元. 學習目標. 看完本章 , 您應該學會以下主題: 認識 CPU 在電腦中扮演的角色 CPU 運作的原理 CPU 的規格與技術名. 2-1 CPU 的功用.

Télécharger la présentation

中央處理單元

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 2 章 中央處理單元

  2. 學習目標 • 看完本章, 您應該學會以下主題: • 認識 CPU 在電腦中扮演的角色 • CPU 運作的原理 • CPU 的規格與技術名

  3. 2-1 CPU 的功用 • CPU 的全名是 Central Processing Unit (中央處理單元), 也就是一般人俗稱的『處理器』 (Processor)。在電腦的五大單元中, CPU 就包含了控制(CU, Control Unit)及算術/邏輯 (ALU, Arithmetic/Logic Unit) 兩大單元, 它在整部電腦的重要性, 就宛如大腦之於人的地位一般!

  4. 2-1 CPU 的功用 • CPU 負責系統中資料的運算 (例如:加、減、乘、除) 與邏輯判斷 (例如 AND、OR...等, 請參考第 6 章) 等核心工作, 是電腦中最重要、最複雜的一個元件, 電腦若沒有了 CPU, 將無法正常運作。而CPU 的能力往往是用來評斷電腦執行效能的主要指標! • CPU 除了計算的工作外, 還必須指揮、協調其它元件之間執行、搭配的步調, 我們也才得以順利操作、使用電腦上的所有軟硬體。

  5. 2-1 CPU 的功用

  6. 2-1 CPU 的功用 • 電腦的運作必定包含輸入→運算→輸出這 3 個過程。舉例來說, 我們將自己的名字用鍵盤輸入到電腦, 電腦螢幕便將名字顯示出來, 這些輸入與輸出的過程對我們而言很容易理解, 但是運算呢?我們的操作 (如按滑鼠左鈕 2 下這個動作) 要怎麼『運算』呢?

  7. 2-1 CPU 的功用 • 其實對 CPU 而言, 我們對電腦的操作會轉成一連串的指令, 而探究指令的本質, 其實就是數字資料 (0 和 1) 的組合, 實際上在電腦中所有的資料、指令都是數字。而將『數字』 拿來做運算本來就是再正常不過的了!

  8. 2-1 CPU 的功用 • CPU 的種類繁多, 一般常見的 PC 個人電腦, 幾乎都是採用 x86 系列的 CPU, 但在個人電腦以外的裝置 (如 PDA、行動電話... 等), 則大多採用非 x86 系列的 CPU。 • 以下我們以最常用的 x86 系列 CPU 為例, 說明其內部結構, 以及實際運作時, 是如何從輸入、經過運算, 到最後產生輸出。待 2-3 節, 再介紹一些比較常見的非 x86 CPU。

  9. 隨堂練習 1. 請簡述 CPU 的工作是什麼 ?

  10. 2-2 CPU 的工作原理-以 x86 CPU 為例 • 在了解 CPU 的工作原理之前, 我們先從 CPU 的結構開始認識起。

  11. 2-2-1 CPU 的構造 • CPU 的構造包含了控制單元(CU, Control Unit)、算術/邏輯單元 (ALU, Arithmetic/Logic Unit)、暫存器(Register) 等, 並透過匯流排 (Bus) 來溝通:

  12. 2-2-1 CPU 的構造

  13. 2-2-1 CPU 的構造 • 在上圖中, 快取記憶體 (Cache Memory) 雖然也會設置在 CPU 內部, 不過就傳統 C P U 的結構 (Architecture) 來說, 快取記憶體並不屬於 CPU 的一部份。關於快取記憶體, 稍後會有詳細的介紹。

  14. 控制單元 • 控制單元(Control Unit) 負責控制資料流和指令流。當我們輸入指令 (如鍵盤或滑鼠的操作) 時, 控制單元會讀取並解譯指令, 以便將需要運算的資料送到算術/邏輯單元進行運算, 並將運算完成的資料流或指令流, 送到輸出或輸入單元。 • 其實說穿了, 控制單元的主要任務就是在『控制』輸出與輸入而已。

  15. 算術/邏輯單元 • 算術/邏輯單元 (Arithmetic/Logic Unit), 從字面上來理解就是負責算術運算及邏輯運算。簡單地說, 算術運算就是加、減、乘、除等運算, 而邏輯運算則是 AND 、OR、NOT等運算, 這些都是數學上再熟悉不過的運算方法了。 • 關於邏輯運算 (AND、OR...等), 在第 6 章會有詳細介紹。

  16. 暫存器 • 暫存器(Register) 是 CPU 內部用來暫時存放資料的地方, 是相當重要的一個元件。暫存器其實就是記憶體, 位於記憶體階層的最上層 (關於記憶體階層的詳細介紹, 請參考 3-1 節)。 • 主要是為了配合 CPU 的高速運算而設置。雖然暫存器的存取速度相當快, 但因成本太高, 所以通常只能配置幾個位元組 (Bytes) 的容量。每個暫存器的大小 (寬度) 也決定了 CPU 所能處理的字組 (Word) 大小。

  17. 暫存器 • 字組 (Word) 是一個單位, 表示 CPU 在一個指令週期(詳細後述)所處理的資料量。若 CPU 一次能處理 32 位元大小的字組, 則這個 CPU 就稱為 32 位元 CPU。 • CPU 裏的暫存器有很多個, 依功能的不同會分別配置在控制單元及算術/邏輯單元中。通常, 對程式設計者而言, 只要學習 CPU 的指令, 並且熟習暫存器的用法, 便可以順利的控制 CPU 動作。

  18. 暫存器

  19. 暫存器 • 不同架構 CPU, 其暫存器種類、數量都不同, 以下介紹 x86 系列 CPU 中幾種較常見的暫存器: • 一般用途暫存器 (General Purpose Register) :一般用途暫存器是用來存放運算的資料、指令或位址。一般用途暫存器依其功能而有不同的名稱, 以下是幾種常見的一般用途暫存器:

  20. 暫存器 • 資ƒ 料暫存器 (Data Register):資料暫存器即用來存放資料的地方。 • 累加器 (Accumulator):累加器通常會被單獨拿出來介紹, 因為累加器是算術/邏輯運算單元中相當重要的部份, 是用來存放運算過程及運算結果的資料。 • 指令暫存器(Instruction Register):通常設置在控制單元內, 用來存放目前被執行的指令。 • 程式計數器 (Program Counter):用來記錄 CPU 下一個要執行指令所存放的位址。

  21. 暫存器 • 位址暫存器(Address Register):用來記錄資料存放在記憶體的位址, 也稱為指位器(Pointer)。常見的位址暫存器有以下幾種: • 堆疊暫存器 (Stack Register):堆疊暫存器是用來記錄堆疊最頂端位址的暫存器。堆疊 (Stack) 是一種重要的資料結構 (Data Structure) , 就是規定資料元素必須依著後進先出 (LIFO, Last In First Out) 之次序來存取。例如下圖, 我們將甲、乙、丙、丁這 4 個資料依次堆入 (Push) 堆疊:

  22. 暫存器

  23. 暫存器 • 當我們想由堆疊取出 (Pop) 資料時, 其次序會是丁、丙、乙、甲。也就是說, 像 "甲" 這個最早被 Push 的資料是最後才會被 Pop 的。這是因為堆疊是一種單一出入口的資料結構體, 自然就會造成 『後進先出』 這樣的特性了。以此例來說, 堆疊暫存器記錄的就是 『丁』 的位址。 • 所謂的資料結構指的是資料組織與管理的方法。有關資料結構的詳細說明, 請參考第 16 章。

  24. 暫存器 • 基底暫存器 (Base Register):基底暫存器是『基底定址法』 在做暫存器定址時所使用的暫存器。基底定址法就是以基底暫存器所指位址為起點, 再加上一固定距離來得到資料所在的位址。舉例來說, 如果要從堆疊區取資料, 那麼必須先指定基底的位置, 再依指定的距離找到要存取的位置:

  25. 暫存器

  26. 暫存器 • 如上圖所示, 假設我們要取 『丁』, 那麼可以指定 『乙』 的位址為基底, 加上 2 Bytes 的距離就可以找到 『丁』的位址;或是以 『丙』的位址為基底, 加上 1 Bytes 的距離也可以找到 『丁』 的位址。 • 所謂定址法(Addressing Mode) 就是 CPU 尋找資料所在位置的方法。簡言之, 就是 CPU 存取(Access) 資料的途徑, CPU 除了可以對暫存器定址, 也可以對主記憶體定址。

  27. 暫存器 • 索引暫存器 (Index Register):索引暫存器是『索引定址法』在做暫存器定址時使用的暫存器。 • 索引定址法的原理與基底定址法是一樣的, 但這時是以固定之位址 (如堆疊的開頭) 為基底, 再加上索引暫存器儲存的值以得到資料所在位址。 • 同樣以從堆疊區取資料為例, 如下圖所示,假設我們要取 『丁』 , 此時會固定以 『甲』 為基底, 再加上 3 (索引暫存器所記錄的值) 的距離來找到『丁』 的位址。索引定址法和基底定址法最大的不同, 就是說我們無須、也無法指定基底的位址。

  28. 暫存器

  29. 暫存器 • 旗標暫存器 (Flag Register):旗標暫存器是一種比較特殊的暫存器, 是用來記錄 CPU 在處理運算時的狀態, 或運算之後的狀態。

  30. 匯流排 • 電腦上各元件傳送資料的管道就是匯流排(Bus)。從字面上解讀, 取其 『匯流』 之意, 就大致可以明白這個傳送資料的管道, 是由許多不同的管道整合在一起的。 • 而這樣做的好處在於管道 (也就是主機板上的電子線路) 容易安排, 也能確保所有元件都能互相傳送資料。

  31. 匯流排 • 舉例來說, 就像高速公路也是採用 『匯流』 的概念一樣, 不同的地點都以交流道和高速公路銜接, 而不是地點和地點之間各自連接。如此, 就算新增加了一個地點, 只要此地點有交流道連上高速公路,還是可以確保我們一定能到達該處。

  32. 匯流排 • 在電腦中匯流排主要分為三大類: • 內部匯流排 (Internal Bus):CPU 內部用來傳送資料的通道。控制單元、算術/邏輯單元及暫存器在讀取、存放資料時, 都是經過內部匯流排。 • 系統匯流排 (System Bus或Processor System Bus):CPU 與主機板上晶片組傳送資料的通道。依傳輸資料種類、方式的不同還可區分為以下三種匯流排:

  33. 匯流排 • 資料匯流排 (data bus):傳送指令或資料的管道, 其傳輸方向為雙向。 • 位址匯流排 (address bus):CPU 指定資料存取的位址, 其傳輸方向為單向。 • 控制匯流排 (control bus):CPU 傳送控制單元 (Control Unit) 訊號的管道, 其傳輸方向為單向。 • 擴充匯流排 (Expansion Bus):晶片組和主機板上除了 CPU 之外的各元件傳送資料的通道。

  34. 匯流排

  35. 何謂晶片組 • 早期主機板必須佈滿許多電阻、電容、IC 晶片、與複雜的電子線路, 才能供應主機板所需的各項功能, 不但製造成本高, 維修時更是困難重重。不過, 拜半導體科技突飛猛進之賜, 現在只要以 2、3 顆晶片便能取代原先眾多的元件與線路, 在功能上更是有過之而無不及。 • 這幾顆晶片必須整組運用在同一塊板子上, 因此便稱為 『晶片組』。通常晶片組是由北橋(North Bridge) 與南橋 (South Bridge) 晶片所組成的。

  36. 何謂晶片組 • 所以用最簡單的一句話來解釋, 晶片組就負責整個主機板上所有裝置、元件間溝通與控制的樞紐。而北橋與南橋晶片所負責的元件如下表:

  37. 何謂晶片組 • 隨半導體及相關技術持續演進, 以及為了進一步提昇系統效能, 所以 CPU 與晶片組的架構也持續在演變, 例如近年來廠商先是將存取記憶體或其它高速裝置的匯流排移到 CPU 上, 讓CPU 不必多繞一圈即可直接存取記憶體或高速的週邊, 也簡化晶片組的設計。 • 或是將繪圖晶片 (GPU)、音效控制晶片整合在晶片組中, 降低消費者的硬體採購成本。近來廠商更進一步將顯示晶片整合至 CPU 封裝中, 有可能成為未來的主流。

  38. 快取記憶體 • CPU 利用暫存器來進行資料的存取和運算, 但暫存器和主記憶體的速度差異實在太大, 若從暫存器直接和主記憶體進行輸出或輸入, 可能造成 CPU 長時間的閒置, 只為了等待主記憶體將資料送進來。 • 為了提升系統的效能, 於是在暫存器和主記憶體間, 配置了快取記憶體 (Cache Memory)。

  39. 快取記憶體 • 快取記憶體是位於記憶體階層的第二層, 相較於主記憶體, 仍是屬於速度快、成本高的記憶體, 因此通常也只能配置容量遠少於主記憶體的容量。

  40. 快取記憶體 • 快取記憶體的容量雖然小, 但可以存放較常使用的指令或資料。由於 CPU 讀取需要的指令或資料時, 會直接到快取記憶體尋找, 若找不到需要的資料才會到主記憶體中讀取。 • 因此, 若 CPU 在快取就能找到需要的資料, 便無需再到主記憶體讀取, 而資料傳送的時間就能大幅縮短了;這樣的工作方式正是快取記憶體能夠提高效能的最主要原因。

  41. 快取記憶體 • 快取記憶體通常與 CPU 直接整合在一起, 因此我們是無法自行增減快取記憶體的大小。快取記憶體依層級 (Level) 區分為 Level1 (L1, 資料/指令快取) 與 Level2 (L2, 記憶快取) 等 2 種。 • 在高階伺服器版本的 CPU 上, 還會看到有第 3 層快取 (L3 Cache) , 其速度以 L1 快取最快, 接著依次是 L2 和 L3。通常我們較會注意到的是 L2 Cache 的大小, 目前 CPU 使用的 L2 快取已經多達 1 MB。

  42. 快取記憶體 • 理論上 Cache 愈大、CPU 的效能愈好, 也因此目前新型的 CPU 都不斷加大快取記憶體。不過, 快取記憶體一旦超過一個『額度』後, 其帶來的效益差異將變得不明顯了。目前主流 CPU 多為 1,024 KB (1 MB), 入門級產品則縮減為 512 KB。

  43. 2-2-2 CPU 的規格與技術名詞 • 在了解 CPU 的架構和一些重要的元件之後, 接著要介紹一些 CPU 常見的規格和技術名詞, 認識這些規格和技術名詞, 對於學習 CPU 是相當有幫助的。

  44. CPU 如何執行指令 • 認識了控制單元、算術/邏輯單元及暫存器之後, 我們就可以開始來瞭解指令是如何在CPU 當中運作的。 • 當我們操作電腦而產生指令時, 指令會放在記憶體中, 接著 CPU 會讀取指令, 再由控制單位進行解譯指令的工作。指令解譯完成後, 會由控制單元或算術/邏輯單元執行指令。 • 而在上述過程中, CPU 會使用暫存器來存放處理前及處理後的資料。

  45. CPU 如何執行指令 • 上述 CPU 執行指令的一連串過程, 就稱之為機器週期 (Machine Cycle), 亦可稱為指令週期(Instruction Cycle)。過程中, 控制單元從讀取指令到解譯完成的時間叫做指令時間 (Instruction Time), 而算術/邏輯單元從運算到運算完成並存入暫存器的時間, 叫做執行時間 (Execution Time), 如下圖所示:

  46. CPU 如何執行指令

  47. CPU 如何執行指令 • 上圖為指令執行流程的示意圖, 實際上指令並不一定在算術/邏輯單元中執行, 也可能是由控制單元來執行的。

  48. CPU 如何執行指令 • 通常我們用指令週期衡量 CPU 運算的速度。一個指令週期所需的時間, 大約幾百萬分之一秒, 也就是說一秒鐘可執行幾百萬個的指令。 • 而用來計量 CPU 運算速度的單位稱為 MIPS (Millions of Instruction Per Second, 每秒百萬個指令), 意即 CPU 一秒鐘可以執行幾百萬個的指令。MIPS 值越高, 代表 CPU 的運算速度越快。

  49. CPU 的工作時脈 • 一般描述 CPU 的效能時, 都是以 CPU 運作的 「時脈頻率」, 也稱為 「工作時脈」來描述, 早期其單位為 MHz (每秒百萬次);如 Celeron 950、Duron 800 就是指其時脈頻率分別為 950 MHz 與 800 MHz。近來則發展到 GHz (每秒十億次) 的速度, 例如 Intel Core i3-540 具有 3.06 G 的工作時脈。

  50. CPU 的工作時脈 • CPU 時脈的計算方式如下: • 關於內頻、外頻和倍頻係數分別說明如下: • 內頻 (Internal Clock):是 CPU 內部在工作時的頻率, 以 AMD Athlon II X2-255 的 CPU 為例, 其內頻即是 3100 MHz。

More Related