計數器中的硬體

Ocean&&Star發表於2020-10-14

在這裡插入圖片描述

CPU

CPU是計算機的大腦,主要和記憶體進行互動,從記憶體中讀取指令然後並執行它。 一個CPU的執行週期是從記憶體中提取第一條指令,解碼(成010101)並決定它的型別和運算元,執行;然後再提取,解碼執行後續指令,重複該迴圈然後直到程式執行完畢。

CPU主要由兩部分組成:控制單元算術邏輯單元(ALU)

  • 控制單元:從記憶體中提取指令並且解碼執行
  • 演算法邏輯單元:處理算術和邏輯運算

從功能上看,CPU的內部由暫存器、控制器、運算器和時鐘四部分組成,各部分之間通過電訊號聯通

  • 暫存器:用於暫存指令、資料和地址,可以看成是記憶體的一種。一般一個CPU內部會有20-100個暫存器
  • 控制器:負責把記憶體上的指令、資料讀入暫存器,並根據指令的結果控制暫存器
  • 運算器:負責運算從記憶體中讀取暫存器的資料
  • 時鐘: 負責發出CPU開始計時的時鐘訊號

其中,我們最應該關注的是暫存器

由於訪問記憶體獲取指令比執行指令花費的時間長,因此CPU內部都會包含一些暫存器來儲存關鍵變數和臨時結果。

每個CPU都有一組可以執行的特定指令集。

  • 有的指令用於把關鍵字從記憶體載入到暫存器中
  • 有的指令用於把關鍵字從暫存器載入到記憶體中
  • 有的指令用於把暫存器和記憶體中的操作進行組合

除了用於儲存變數和臨時結果的通用暫存器外,還有些程式設計師可見(常用於Debug程式)的特殊暫存器:

  • 程式計數器(program counter):用於指示下一條需要從記憶體中讀取的指令的地址。提取指令之後,程式計數器將更新為下一條需要提取的地址。
  • 堆疊指標(stack pointer):指向記憶體中當前棧的頂端。堆疊指標會包含輸入過程中的有關引數、區域性變數以及沒有儲存在暫存器中的臨時變數
  • PSW(Program Status Word)程式狀態暫存器:由作業系統維護(一般程式設計師應該忽略它),它會跟蹤當前系統的狀態。PSW在系統呼叫和IO中起著重要作用,

除了嵌入式系統的非常簡單的CPU之外,多數CPU都有兩種模式:核心態、使用者態

  • 通常,PSW暫存器中的一個二進位制會控制當前狀態是核心態還是使用者態。
  • 核心態時CPU能夠執行任何指令集中的指令並能夠使用硬體的功能。

在桌上型電腦和伺服器上,作業系統通常以核心模式執行。在大多數嵌入式系統中,一部分執行在核心態,一部分執行在使用者態。

  • 使用者態下,CPU只能執行指令集中的一部分並且只能訪問硬體的一部分功能。

應用程式通常執行在使用者態下。

使用者態無法轉為核心態。應用系統想要操作硬體,必須通過系統呼叫,才能從使用者態轉為執行態。

作業系統必須瞭解所有的暫存器,在時間多路複用CPU中,常常發生程式的切換,作業系統需要暫停某個程式轉為執行另一個程式,每次作業系統暫停程式時,需要儲存當前程式的暫存器的所有暫存器的值,以便後續重新執行該程式。

一個CPU上在一個時刻只能有一個程式執行。當一個執行緒想要從記憶體中讀取指令(耗時比CPU執行指令慢得多)時,多執行緒CPU可以快速切換到另外一個執行緒。這個就叫做程式的併發。

現在的晶片基本上都是多核。那為什麼晶片要是多核的呢?

我們先來了解下什麼是多核。 比如說一個4核晶片上面承載了4個微型晶片,每個微型晶片上都有自己獨立的CPU。多個CPU可以讓多個程式併發的執行。
在這裡插入圖片描述
在這裡插入圖片描述

記憶體

相關文章