1.cpu是什么
cpu(central processing unit):cpu從系統ram(random access memory,臨時數據存儲介質)中提取指令,然后解碼指令,然后由cpu的相關部分執行。
2.cpu內部結構:由控制單元和算術邏輯單元(alu)構成
.控制單元:從內存中提取指令並解碼執行
.算數邏輯單元:處理算數和邏輯運算
從功能看:cpu內部由寄存器、控制器、運算器和時鍾四部分組成,各部分之間通過電信號連通。
.寄存器:暫存指令、數據和地址。cpu就是寄存器的集合體。
.控制器:將內存上的指令、數據讀入寄存器,並根據指令的結果控制計算機
.運算器:負責運算從內存中讀取到寄存器的指令及數據
.時鍾:發出cpu開始計時的時鍾信號
內存通過控制芯片與cpu直連,內存的每個字節都有一個地址編號。cpu通過地址讀取指令和數據,也可以寫入數據。
3.計算機語言
低級語言:機器語言、匯編語言(通過匯編器轉換為機器語言)
高級語言:c,java,都需要編譯轉換為機器語言后運行
4.寄存器分類:
累加寄存器:存儲運行的數據和運算后的數據
標志寄存器:用於反映處理器的狀態及運算結果的某些特征以及控制指令的執行
程序計數據器(program counter):存放下一條指令所在單元的地址
基址寄存器:存儲數據內存的起始地址
變址寄存器:存儲基址寄存器的相對地址
通用寄存器:存儲任意數據
指令寄存器:儲存正在被運行的指令,cpu內部用,程序員無法對該寄存器進行讀寫
棧寄存器:存儲棧區域的起始位置
program counter:控制着程序的流程。順序執行:每執行一條指令,程序計數器的值+1。條件和循環會使程序計數器的值指向任意的地址。
標志寄存器:條件或循環會使用jump(跳轉指令),根據當前的指令來判斷是否跳轉。無論當前累加寄存器的運算結果是正數、負數還是零,標志寄存器都會保存是否溢出和奇偶校驗。32位標志寄存器第0、1、2個字節
各自結果為1時,分別代表正數、零、負數。
函數調用機制:兩個重要指令call,return。call會把函數執行后要執行的指令保存在棧中,函數執行完再通過函數的出口執行return指令將上面保存的地址設定至程序計數器以便繼續執行。如下圖:調用前 0154保存到棧中,函數執行完后繼續從0154執行.
通過地址和索引實現數組
32位的寄存器便可查看 00000000~FFFFFFFF的內存地址
我們用兩個寄存器(基址寄存器和變址寄存器)來表示內存的值
cpu指令執行過程:
.取指令:將內存中的指令讀取到寄存器,程序計數器存儲下一條指令內存地址。
.指令譯碼:對寄存器中的指指令進行拆分和解釋
.執行指令:完成指令的功能
.訪問取數:根據指令要求,可能需要從內存中提取數據
.結果寫回:指令執行的結果回寫至cpu內存寄存器中,以便被后續的指令快速存取