iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
自我挑戰組

來場計概入門課吧X資訊人該了解的通識素養系列 第 4

Day 4 | 拆解計算機架構(上)|認識電腦的大腦-CPU的組成

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20230916/2014936245pyFCehQ8.jpg
這一章節要來認識CPU的組成,一切要回歸到設計的起點 ﹣馮紐曼模型 Von Neumann model(也稱范紐曼架構/馮紐曼模式),現在計算機的通用架構大部分都是基於它,主要精髓在於「儲存程式」的概念,由以下四大部分所購成:

  • 控制單元 (Control Unit)
  • 算術邏輯單元 (Arithemetic Logic Unit)
  • 記憶體 (Memory)
  • 輸入/輸出 (Input/Output)

其中控制單元 + 算數邏輯單元 = 中央處理器 (CPU, Central Processing Unit) ,記憶體和輸入/輸出將在之後兩篇提到
那麼~以下將對CPU裡的組成元件做介紹:

中央處理器 (CPU)

https://ithelp.ithome.com.tw/upload/images/20230917/20149362Aix967kuR9.jpg
圖片取自sitebay.com

CPU是由以下幾個元件組成:

  1. 控制單元 (CU)
  2. 算數邏輯單元 (ALU)
  3. 記憶體單元 (由快取 (Cache) 和暫存器 (Register) 組成)

就像我們的大腦管理著身體的所有功能,如血液循環和消化系統,處理器(CPU) 就如同電腦的大腦,用來執行存在記憶體的指令以及控制資料的處理、運算、儲存,它的外觀是一個晶片,位在主機板上,CPU內部的每個元件都很重要,都有屬於自己的專屬的工作要做,一般常說電腦的效能好不好跟 CPU 也有著密不可分的關係
https://ithelp.ithome.com.tw/upload/images/20230917/20149362xWsvRTPerM.png


控制單元 (Control Unit,簡稱CU)

https://ithelp.ithome.com.tw/upload/images/20230912/20149362NpcAnTQOnU.png
職責:指揮電腦執行程式的流程,控制記憶體,輸入/輸出、算數邏輯的運作

控制單元就是一位樂隊指揮,不必親自下去表演!但要負責指揮各個區域的演奏者,如同負責指揮電腦各個系統單元間所要進行的任務,協調系統單元間的運作,例如:控制單元會從記憶體中將要執行的指令搬到暫存器並對指令解碼,然後交給算數邏輯單元運算,再將運算完的結果放回暫存器或是記憶體

欲執行的指令 ➜ 暫存器 ➜ 解碼 ➜ 算數邏輯單元運算 ➜ 結果(放在暫存器或記憶體)


算術邏輯單元(Arithmetic Logic Unit,簡稱ALU)

https://ithelp.ithome.com.tw/upload/images/20230912/20149362A74bKrQnkt.png

算數邏輯單元(ALU) = 算數單元(AU) + 邏輯單元(LU)

職責:負責處理數字數據的運算(加減乘除)和邏輯,像是比較兩個數的大小, 產生亂數等

就像是一位「高等」數學家(高等是我自己加上的XD),除了基本運算,也負責AND、OR、XOR(eXclusive OR,兩者相同為0、反之為1)、NOT、位元運算等邏輯運算。算數邏輯單元也擁有對 CPU、記憶體及輸入/輸出設備的直接讀入、讀出許可權(恩~聽起來好像很高等
某些CPU會包含一個以上的ALU,一個用來進行定點數操作(Fixed-Point Operations),另一個進行浮點數運算(Floating-Point Operations),如果有人好奇這兩者的差別,這裡直接附上chatGPT給我的回覆

總之,算術邏輯單元的設計是 CPU 中的很關鍵的部分,因為它處理了大部分的數字計算和邏輯

X | Y | AND | OR | XOR
------------- | -------------
0 | 0 | 0 | 0 | 0
0 | 1 | 0 | 1 | 1
1 | 0 | 0 | 1 | 1
1 | 1 | 1 | 1 | 0

X NOT
0 1
1 0

暫存器

CPU中有一個極小的儲存裝置,稱為 「暫存器」(register),既然都叫暫存器了,顧名思義就是存放暫時性的指令、位址和任何類型資料的小倉庫,例如:位元組順序(Byte Order, Endianness)或是單個字符

暫存器的存取速度比主記憶體(RAM)快很多!因此,當CPU需要頻繁存取某個資料時,將它儲放在暫存器中可以提高效能,這樣處理器就不需要每次都從主記憶體中進行讀取、操作,可以直接從暫存器中獲取資料,有了這些臨時小倉庫,可以大大提升CPU的效能,在計算機執行複雜任務的同時,可以快速訪問和操作資料

常見的暫存器的大小

就像倉庫有小、中、大、超大的差別,暫存器也有,常見的是以下幾種:

  • 8 bit: 可以儲存相當於 1 byte 的資料,通常用於「基本的運算」和「數據操作」
  • 16 bit: 可以儲存相當於 2 byte 的資料,在較舊的處理器或需要 16 位操作的特定架構中可以看到
  • 32 bit: 可以儲存相當於 4 byte 的資料,被廣泛的應用在許多處理器中,能夠處理更大的資料量和更複雜的計算
  • 64 bit: 可以儲存相當於 8 byte 的資料,在現代處理器中也是蠻常見的,提供了更強的計算能力和紀錄位址的功能

32 bit 和 64 bit的暫存器是目前電腦比較常搭配的規格,這些數字代表暫存器的大小和寬度以及可以在單個操作中處理的資料量,在某些特殊架構中,像是向量處理、加密操作、大數據集,可能可以找到更大的暫存器,例如 128 bit、256 bit、甚至更大,這些較大的暫存器通常用於特定用途

暫存器的種類

暫存器有分很多種,像是Data Reginster, Accumulator, Control Registers等,其中以下兩種是比較特殊的:

  1. 指令暫存器(Instruction Register, IR): 用於儲存當前正在執行的「指令」,從解碼、準備到執行完成的過程中都會被持續的儲存

  2. 程式計數暫存器/程式指標暫存器(Program Counter): 記錄當前正在執行的的指令「位址」,每當程式計數暫存器獲取了程式指令後,計數器就會將指令指標的值 + 1,接著就會指向序列中的下一條程式指令。就像糖果屋中的小男孩和小女孩每走幾步路,就丟一顆石子在地上紀錄當前位子一樣,當計算機重啟或重置時,程序計數器就會恢復為 0


快取記憶體(Cache)

暫存器(Register)和快取(Cache)都是CPU中處理記憶體的單元(Memory Unit)
暫存器的速度最快,但價格也最高; 快取雖比暫存器的速度慢,但價格相對便宜,容量也比暫存器多很多,請看以下表格:

https://ithelp.ithome.com.tw/upload/images/20230917/20149362W9i75jwojJ.png

為什麼需要 Cache ???

如果每次CPU在執行時,都要從主記憶體裡擷取資料,而主記憶體傳送到CPU的速度比較慢,效率上就會大打折扣!不論CPU與記憶體的速度再快,也會受限於匯流排(下一篇會提到)的速度,這稱為馮紐曼頻頸(Von Neumann Bottleneck),為了解決這個問題,使用快取可以提高CPU與記憶體之間的頻寬。在實務上,可以把快取想像成一個透明部件,人類無法直接干涉對快取的操作,必須要去猜測哪些主記憶體的區段會被執行,先將這部分搬到快取,可想而知,如果猜測準確,執行效率就高,反之亦然!

Cache 能發揮其效用,主要是因為程式運行時對記憶體的存取展現出了局部性特徵,這種局部性包括空間局部性(Spatial Locality)和時間局部性(Temporal Locality),擅用它快取便可以達到極高的命中率(嗯嗯,看起來是有方向的通靈

Cache運作流程簡要

當CPU發出記憶體存取的請求時,會先檢查快取內是否有請求的資料,如果有,則不經存取記憶體直接返回該資料;如果沒有,則要先把記憶體中的相應資料載入快取,再將其返回CPU

如果想對快取有更深入的了解可以看這篇文章維基百科的講解

PS. CPU 內部也有匯流排(bus),叫做「內部匯流排」,下一篇也會針對「匯流排」進行介紹


總結

CPU如同電腦的大腦,負責執行存在記憶體的指令以及控制資料的處理、運算、儲存。主要由控制單元 (CU)算數邏輯單元 (ALU)記憶體單元 (快取和暫存器) 所組成! 此外,目前大家所看到的電腦,都是基於「馮紐曼模型 Von Neumann model」(也稱范紐曼架構/馮紐曼模式),這對CPU的發展有極大的貢獻!在馮紐曼模式之前,電腦的運算程序都是使用「繞線方式」進行,換句話說就是我們在安裝軟體時,要使用一大堆線路,這會是怎麼樣的世界啊?/images/emoticon/emoticon06.gif

參考資源

  1. 處理器、記憶體、硬碟 的三角關係 基礎篇
  2. What is a Register in a CPU and How Does it Work?
  3. program counter
  4. What is CPU

PS. 若有解說不清或是不正確之處,歡迎指教/images/emoticon/emoticon41.gif

閒聊

在講到「程式計數暫存器」那裏,有拿糖果屋舉例,於是就讓AI幫我繪圖,沒想到出來比我估狗的還美!!偏要放(≧∀≦)ゞ
https://ithelp.ithome.com.tw/upload/images/20230919/20149362DAj3ltrQte.png


上一篇
Day 3 | 計算機的翻譯官 - 編譯與直譯
下一篇
Day 5 | 拆解計算機架構(中)|(I/O)、匯流排
系列文
來場計概入門課吧X資訊人該了解的通識素養31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言