1. 程式人生 > 實用技巧 >程式設計師的計算機修養-CPU

程式設計師的計算機修養-CPU

先看下計算機硬體的組成,這節主要是講中央處理器

CPU簡介

CPU內部結構圖

・ 暫存器是中央處理器內的組成部分。它們可以用來暫存指令、資料和地址。可以將其看作是記憶體 的一種。根據種類的不同,一個CPU內部會有20 - 100個暫存器。

・ 控制器負責把記憶體上的指令、資料讀入暫存器,並根據指令的結果控制計算機

・ 運算器負責運算從記憶體中讀入暫存器的資料

・時鐘 負責發出CPU開始計時的時鐘訊號

作為一個程式設計師,我們要關心的是暫存器的原理

種類     功能

累加暫存器     儲存執行的資料和運算後的資料。

標誌暫存器     用於反應處理器的狀態和運算結果的某些特徵以及控制指令的執行。

程式計數器     程式計數器是用於存放下一條指令所在單元的地址的地方。

基址暫存器     儲存資料記憶體的起始位置

變址暫存器     儲存基址暫存器的相對地址

通用暫存器     儲存任意資料

指令暫存器     儲存正在被執行的指令,CPU內部使用,程式設計師無法對該暫存器進行讀寫

棧暫存器  儲存棧區域的起始位置

程式計數器

程式計數器是記錄的下一條指令所在單元的地址的地方,如圖可以看出當執行條件判斷時候程式計數器的變化

標誌計數器

CPU在進行運算時,標誌暫存器的數值會根據當前運算的結果自動設定,運算結果的正、負和零三種 狀態由標誌暫存器的三個位表示。標誌暫存器的第一個位元組位、第二個位元組位、第三個位元組位各自的結 果都為1時,分別代表著正數、零和負數。

基址暫存器和變址暫存器

基址暫存器和變址暫存器有很多種用法,其中一種可以用來連續檢視陣列,如下圖,固定基址暫存器的值,它作為陣列實際地址的第一個元素地址,然後變址暫存器作為index使用。

指令的執行過程

我們知道,所有的高階語言或者低階語言,最終都會被編譯成機器語言,然後一條條執行指令

幾乎所有的馮諾伊曼型計算機的CPU,其工作都可以分為5個階段:取指令、指令譯碼、執行指令、訪 存取數、結果寫回

取指令階段,是將記憶體中的指令讀取到CPU中暫存器的過程,程式暫存器用於儲存下一條指令所 在的地址

指令譯碼階段,在取指令完成後,立馬進入指令譯碼階段,在指令譯碼階段,指令譯碼器按照預 定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取運算元的 方法。

執行指令階段,譯碼完成後,就需要執行這一條指令了,此階段的任務是完成指令所規定的各種 操作,具體實現指令的功能。

訪問取數階段,根據指令的需要,有可能需要從記憶體中提取資料,此階段的任務是:根據指令地 址碼,得到運算元在主存中的地址,並從主存中讀取該運算元用於運算。

結果寫回階段,作為最後一個階段,結果寫回(WHte Back, WB)階段把執行指令階段的執行 結果資料“寫回”到某種儲存形式:結果資料經常被寫到CPU的內部暫存器中,以便被後續的指令快 速地存取。