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的指令數量將如何提高計算機程序的性能。