CPU 是如何認識和執行代碼的


CPU的介紹

CPU 也稱為微處理器,是計算機的心臟和/或大腦。

深入研究計算機的核心,可以幫助我們有效地編寫計算機程序。

CPU 是計算機的心臟和大腦,它執行提供給他們的指令。它的主要工作是執行算術和邏輯運算並將指令編排在一起。

 

我們先來看一下CPU的主要組件是什么以及它們的作用:

 

處理器兩個主要組件

  • 控制單元 CU
  • 算術和邏輯單元 ALU

 

1.控制單元 CU

控制單元CU是CPU的一部分,它可以幫助CPU協調指令的執行,它告訴CPU該怎么辦。

並根據說明,它有助於激活將CPU連接到計算機的其他各個部分(包括ALU)。控制單元是CPU接收處理指令的第一個組件。

控制單元也有兩種類型:

  • 硬連線 控制單元。
  • 微型可編程(微型) 控制單元。

硬連線 控制單元是指硬件,需要對硬件進行更改以添加修改以使其正常工作,而可以對微可編程控制單元進行編程以更改其行為。硬接線CU處理指令的速度更快,而微編程的靈活性更高。

 

2.算術和邏輯單元 ALU

算術和邏輯單元ALU進行所有算術和邏輯計算。ALU執行加減運算。ALU由執行這些操作的邏輯電路或邏輯門組成。

大多數邏輯門接受兩個輸入並產生一個輸出,下面是一個半加法器電路的示例,該電路采用兩個輸入並輸出結果。這里A和B是輸入,S是輸出,C是進位。

 

 

 

 

存儲—寄存器和內存

CPU的主要工作是執行提供給它的指令,而要在大多數時間處理這些指令,它需要數據。一些數據是中間數據,其中一些是輸入,其他是輸出。這些數據和說明一起存儲在以下存儲器中:

寄存器

寄存器是一小組可以存儲數據的地方。寄存器是鎖存器的組合 。

鎖存器 也稱為 觸發器, 是存儲1位信息的邏輯門的組合 。

鎖存器有兩根輸入線,寫和輸入線,以及一根輸出線。我們可以啟用寫入線來更改存儲的數據。禁用寫線時,輸出始終保持不變。

 

 

 

CPU具有用於存儲輸出數據的寄存器,由於它是中間數據,因此發送到主存儲器(RAM)會很慢。

該數據被發送到通過BUS連接的其他寄存器 。寄存器可以存儲指令,輸出數據,存儲地址或任何類型的數據。

 

內存(RAM)

RAM是寄存器的集合,這些寄存器以優化的方式排列並壓縮在一起,以便可以存儲更多數據。

RAM(隨機存取存儲器)易失,當我們關閉電源時,數據會丟失。

由於RAM是用於讀取/寫入數據的寄存器的集合,因此RAM接受8位地址的輸入,輸入要存儲的實際數據的數據,最后讀取和寫入使能器,其對鎖存器的作用相同。

 

什么是指令

指令是計算機可執行的粒度計算,CPU可以處理各種指令。

包括:

  • 算術,例如 加法 和 減法
  • 邏輯指令,例如 和, 或,而 不是
  • 數據指令,例如 移動, 輸入, 輸出, 加載和 存儲
  • 控制流指令,例如 goto, 如果... goto,則 調用並 返回
  • 通知程序已經結束CPU 暫停

使用匯編語言將指令提供給計算機,或者由編譯器生成指令,或者以某些高級語言解釋指令。

這些指令被硬件連線到CPU內部,ALU包含算術和邏輯,而控制流由CU管理。

 

CPU時鍾

時鍾周期

計算機的速度取決於其時鍾周期。它是計算機每秒工作的 時鍾周期 數。單時鍾周期非常小,大約為250 * 10 * -12秒。時鍾周期越高,處理器速度就越快。

一個CPU時鍾循環以GHz(測量吉赫茲)。1GHz等於10⁹Hz(赫茲)。赫茲表示一秒鍾執行的次數。因此1 GHz意味着每秒10⁹個周期。

時鍾周期越快,CPU 可執行的指令越多 。時鍾周期= 1 / CPU時鍾頻率時間 = 時鍾周期數/時鍾頻率

這意味着可以通過優化提供給CPU的指令來縮短CPU時間,從而提高時鍾頻率或減少時鍾周期數。某些處理器可以增加時鍾周期,但由於是物理變化,因此可能會過熱甚至冒煙/起火。

在一個 時鍾周期內, 計算機可以執行一條指令,但是現代計算機可以執行多條指令。

計算機可以執行的一組指令稱為 指令集。

 

 

總線

CPU,寄存器,存儲器和IO設備之間的所有數據都通過總線傳輸。

為了將數據加載到剛剛添加的存儲器中,CPU將存儲器地址放入地址總線,並將總和結果放入數據總線,並在控制總線中啟用正確的信號。

這樣,數據將在總線的幫助下加載到內存中。

 

 

 

 

接下來來解釋指令如何執行

指令按順序存儲在 RAM 中。對於一個假設的CPU,指令由 OP 代碼(操作代碼)和 存儲器或寄存器地址組成。

在控制單元指令寄存器(IR)中 有兩個寄存器 ,用於加載指令的OP代碼;在 指令地址寄存器中 ,用於加載當前正在執行的指令的地址。CPU內還有其他寄存器,用於存儲存儲在指令后4位地址中的值。

以一組將兩個數字相加的指令為例,以下是說明:

步驟1 — LOAD_A 8:

最初將指令保存在RAM中,例如<1100 1000>。前4位是操作碼,它確定了指令。該指令被提取到控制單元的IR 中。指令被解碼為d_load_A,這意味着它需要將數據加載到地址1000中,該地址是指令A的最后4位。

步驟2 — LOAD_B 2

與上面類似,這會將內存地址2(0010)中的數據加載到CPU寄存器B。

第3 步-添加BA

現在,下一條指令是將這兩個數字相加。此處,CU告訴ALU執行加法運算並將結果保存回寄存器A。

步驟4 — STORE_A 23

這是一組非常簡單的說明,有助於將兩個數字相加。

現在我們已經成功地添加了兩個數字! (๑❛ᴗ❛๑) (๑❛ᴗ❛๑)

 

下面介紹一些計算機術語

快取

CPU還具有一種將指令預取到其緩存的機制。

眾所周知,處理器可以在一秒鍾內完成數百萬條指令。這意味着從RAM提取的指令要比執行指令花費更多的時間。因此,CPU高速緩存會預取一些指令以及數據,以便快速執行。

如果高速緩存和操作存儲器中的數據不同,則將數據標記為臟位。

指令流水線

現代CPU使用指令流水線來並行執行指令,把 提取,解碼,執行 當一條指令執行,當處於解碼階段時,CPU可以在提取階段處理另一條指令。

 

 

 

但是當一條指令依賴於另一條指令時,這將產生一個問題。因此,處理器以不相同的順序執行不相關的指令。

 

多核計算機

它基本上是不同的CPU,但是有一些共享資源,例如緩存。

性能

CPU的性能取決於其執行時間,性能= 1 /執行時間

假設一個程序執行需要20毫秒。CPU的性能為1/20 = 0.05ms,相對性能=執行時間1 /執行時間2

CPU性能要考慮的因素是指令執行時間CPU時鍾速度。因此,要提高程序的性能,我們要么需要提高時鍾速度,要么需要減少程序中的指令數量。處理器速度有限,具有多核功能的現代計算機每秒可支持數百萬條指令。但是,如果我們編寫的程序有很多指令,則會降低整體性能。

大O表示法 使用給定的輸入確定如何影響性能。

CPU中進行了許多優化,以使其更快,性能盡可能高。在編寫任何程序時,我們需要考慮減少提供給CPU的指令數量將如何提高計算機程序的性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM