?上一篇就剛剛好把指令的知識講完了,原本應該寫至少一篇指令系統刷題的。但是無奈,實習生活還是比較累的,為了質量,還是決定周末再寫刷題版。

CPU的功能和組成

中央處理器(Control Processing Unit),是控制計算機自動完成取出指令跟執行指令的部件。是計算機的核心部件。 前面的概論我們知道,CPU主要是由運算器跟控制器組成。其中,運算器的功能是對數據進行加工,而控制器的功能是負責協調並控制各部件的指令序列(比如取指令,分析指令等等)。

CPU的具體功能包括:

- 指令控制

- 操作控制

- 時間控制

- 數據加工

- 中斷處理

CPU通過下面的三種方式,指揮全機運作:

1. 按規定的操作執行(即程序的順序執行)

2. 自動執行

3. 有秩序的執行

結合之前學過的指令系統知識,可以通過下面的視頻來了解指令的執行過程。

在計算機系統中,CPU由運算器跟控制器組成

運算器

運算器主要接收從控制器處傳來的命令,並執行相應的操作,對數據進行加工處理,主要以下面的幾部分組成

- 算術邏輯單元(ALU):主要進行算術/邏輯運算

- 暫存寄存器:用於暫存從主存讀出來的數據,該數據不能放在通用寄存器上,對應用程序員透明。

- 累加寄存器(ACC):一個通用寄存器組,用來暫存ALU的運算結果,當ALU執行算術和邏輯運算的時候,為ALU童工一個工作區(比如我們之前提到過的R1+R2 ->R1)

- 通用寄存器組:AX,BX,CX,DX.SP等等,用於存放操作數(包括源操作數,目的操作數以及中間結果)和各種地址信息。SP是堆棧指針,用於指向棧頂的地址。

- 程序狀態字信息(PSW): 用來表示各種工作狀態信息跟中斷情況。如下圖所示:

- 移位器:對操作數或者運算結果進行以為操作

- 計數器:控制乘除運算的步數

控制器

控制器是整個系統的指揮中心,在其控制下,使運算器,存儲器和輸入輸出設備等功能部件構成一個有機整體。其基本功能是執行指令。每條指令的執行是由控制器發出的一組微操做實現的。主要由以下幾部分組成:

- 程序計數器(PC):用於指出下一條指令在主存中的存放地址,CPU是根據PC中的內容去取得指令的。

- 指令寄存器(IR):用來保存從存儲器中取出,正在執行的指令,在執行該指令的過程中,指令寄存器的內容不允許更改,以確保實現指令的全部功能。

- 指令解碼器:對操作碼欄位進行解碼,向控制器提供特定操作信號。

- 存儲器地址寄存器(MAR):用於存放將要訪問的主存單元的地址。

- 存儲器數據寄存器(MDR):用於存放向主存寫入/讀出的信息。

- 時序系統:用於產生各種時序信號。由統一時鐘分頻所得。

- 微操作信號發生器:由IR,PSW的內容以及時序信號,產生控制整個計算機系統所需的各種控制信號。

控制器的原理,是根據指令操作碼,執行步驟,條件信號來形成當前計算機各部件所要的控制信號

寄存器的可見性

CPU內部的寄存器大致可以分成兩種;

1. 用戶可見寄存器:用戶可以通過程序去訪問的寄存器(如通用寄存器,PSW, PC等等)。 2. 用戶不可見寄存器:程序無法訪問,在程序的執行過程中自動賦值(如MAR,MDR IR等等)

指令的執行過程

指令周期

指令周期:從取指令,分析指令,到執行完該指令所需要的全部時間,稱為指令周期。也就是CPU完成一條指令的時間。

機器周期:也稱為CPU周期,把一條指令周期劃分為若干個機器周期,每個機器周期內完成一個基本操作,不同的指令可能包含不同數目的機器周期。通常它等於取指時間或者訪存時間。

T周期也稱時鐘周期或者節拍,是CPU操作的最基本的單位。在一個機器周期內,要完成若干個微操作,因而需要分成若干個時間段。所以也稱為節拍T。節拍的寬度取決於CPU完成一次基本的微操作所需要的時間。下圖說明了三者間的相互關係:

對於一些執行期間不需要訪存的指令,比如Jump,X.,這是一條無條件轉移指令,此時指令周期僅僅包含取指周期和執行周期。但是對於間接定址指令,為了取操作數,需要先訪問內存一次,取出有效地址後,再訪問主存,取出操作數,所以這種操作還包括間址周期。當CPU採用中斷方式實現主機跟I/O設備的信息交換的時候,如果有中斷請求,則CPU進入中斷響應階段,此時又稱為中斷周期。這樣,完整的指令周期為:

實際上,每個周期都有CPU在訪存,只不過是訪存的目的不同,分別為取指令,取EA,取操作數,保存斷點。

指令的執行過程:

取指周期:根據PC中的內容,聰明和主存中取出指令代碼,並放在IR中。(即CPU從何處取指,如何形成後續的指令)

間址周期:取操作數的有效地址

執行周期:根據IR中指令字的操作碼,操作數,通過ALU操作產生結果。

中斷周期:處理中斷請求,將程序斷點存入堆棧中,SP指示棧頂地址,則進棧操作是先秀海棧頂指針,後存入數據(那麼出棧的操作我們前面說過)。

下面的視頻是指令的執行過程(建議下載後觀看):

https://pan.baidu.com/s/1NjVBeaDtoaRu1RwylWBddQ?

pan.baidu.com


推薦閱讀:
相关文章