程式設計師的計算機修養-CPU
先看下計算機硬體的組成,這節主要是講中央處理器
CPU簡介
CPU內部結構圖
・ 暫存器是中央處理器內的組成部分。它們可以用來暫存指令、資料和地址。可以將其看作是記憶體 的一種。根據種類的不同,一個CPU內部會有20 - 100個暫存器。
・ 控制器負責把記憶體上的指令、資料讀入暫存器,並根據指令的結果控制計算機
・ 運算器負責運算從記憶體中讀入暫存器的資料
・時鐘 負責發出CPU開始計時的時鐘訊號
作為一個程式設計師,我們要關心的是暫存器的原理
種類 功能
累加暫存器 儲存執行的資料和運算後的資料。 標誌暫存器 用於反應處理器的狀態和運算結果的某些特徵以及控制指令的執行。 程式計數器 程式計數器是用於存放下一條指令所在單元的地址的地方。 基址暫存器 儲存資料記憶體的起始位置 變址暫存器 儲存基址暫存器的相對地址 通用暫存器 儲存任意資料 指令暫存器 儲存正在被執行的指令,CPU內部使用,程式設計師無法對該暫存器進行讀寫 棧暫存器 儲存棧區域的起始位置
程式計數器
程式計數器是記錄的下一條指令所在單元的地址的地方,如圖可以看出當執行條件判斷時候程式計數器的變化
標誌計數器
CPU在進行運算時,標誌暫存器的數值會根據當前運算的結果自動設定,運算結果的正、負和零三種 狀態由標誌暫存器的三個位表示。標誌暫存器的第一個位元組位、第二個位元組位、第三個位元組位各自的結 果都為1時,分別代表著正數、零和負數。
基址暫存器和變址暫存器
基址暫存器和變址暫存器有很多種用法,其中一種可以用來連續檢視陣列,如下圖,固定基址暫存器的值,它作為陣列實際地址的第一個元素地址,然後變址暫存器作為index使用。
指令的執行過程
我們知道,所有的高階語言或者低階語言,最終都會被編譯成機器語言,然後一條條執行指令
幾乎所有的馮•諾伊曼型計算機的CPU,其工作都可以分為5個階段:取指令、指令譯碼、執行指令、訪 存取數、結果寫回。
取指令階段,是將記憶體中的指令讀取到CPU中暫存器的過程,程式暫存器用於儲存下一條指令所 在的地址
指令譯碼階段,在取指令完成後,立馬進入指令譯碼階段,在指令譯碼階段,指令譯碼器按照預 定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取運算元的 方法。
執行指令階段,譯碼完成後,就需要執行這一條指令了,此階段的任務是完成指令所規定的各種 操作,具體實現指令的功能。
訪問取數階段,根據指令的需要,有可能需要從記憶體中提取資料,此階段的任務是:根據指令地 址碼,得到運算元在主存中的地址,並從主存中讀取該運算元用於運算。
結果寫回階段,作為最後一個階段,結果寫回(WHte Back, WB)階段把執行指令階段的執行 結果資料“寫回”到某種儲存形式:結果資料經常被寫到CPU的內部暫存器中,以便被後續的指令快 速地存取。