計算機系統概述(1)計算機基本結構、處理器寄存器和指令的執行過程

一、基本構成

宏觀上看,計算機系統由處理器、I/O設備和內存組成。如下圖所示,他們通過系統總線連接在一起。

處理器的一種功能是和存儲器交換數據,所以其內部有兩類寄存器:地址寄存器和緩衝寄存器。地址寄存器確定下一次讀寫的地址或輸入輸出設備;緩衝寄存器暫時存放需要讀寫的數據。

內存模塊由一組單元組成,這些單元由順序編號的地址定義。每個單元包含一個二進制數,可以解釋爲一個指令或數據。

輸入/輸出模塊包含內存緩衝區,用於臨時保存數據,直到它們被髮送出去。

 

                                                

操作系統控制和協調應用程序對硬件資源的使用,可以將操作系統看做資源分配器。計算機系統可能有許多資源,用來解決CPU時間、內存空間、文件存儲空間、I/O設備等問題。操作系統管理這些資源。面對許多甚至衝突的資源請求,操作系統必須決定如何爲各個程序和用戶分配資源,以便計算機系統能有效而公平地運行。 

二、處理器寄存器

寄存器可以提供一定的存儲能力,訪問速度比內存快,但存儲空間有限。可分爲用戶可見寄存器控制和狀態寄存器

用戶可見寄存器可以由程序決定哪些變量保存在內存或寄存器中,對所有的程序可用。通常包括數據寄存器和地址寄存器。

           數據寄存器可以被分配給各種函數。它們實際上是通用的,可被執行數據操作的任何機器指令使用。但通常也有一些限制,例如對浮點數運算使用專用的寄存器,而對整數運算使用其他寄存器。

           地址寄存器存放數據和指令的內存地址,或者存放用於計算完整地址或有效地址的部分地址。這些寄存器可以是通用的,或者可以用來以特定方式或模式尋址存儲器。

                   變址寄存器:通過給一個基值加一個索引來獲得有效地址。

                   段指針:對於分段尋址方式,存儲器被劃分成段,這些段由長度不等的字塊組成。,段由若干長度的字組成。一個存儲器引用由一個特定段號和段內的偏移量組成;採用這種尋址方式需要一個寄存器保存段的基地址(起始地址)。

                   棧指針:對用戶可見的棧進行尋址,應該有一個專門的寄存器指向棧頂。這樣就可以使用不包含地址域的指令,如入棧和出棧。

控制和狀態寄存器由操作系統例程使用,用於控制處理器的操作。比如MAR、MBR、I/O AR、I/O BR寄存器(如圖1.1所示),程序計數器(將取指令的地址)和指令寄存器(最近取的指令內容)都是指令執行必須的。

 

                                                

三、指令的執行

處理器執行的程序是由一組保存在存儲器中的指令組成的。在一個指令週期內,存在取指階段和執行階段,處理區從存儲器中一次讀取一條指令然後執行。

 

                                                

每個指令週期開始時,處理器會從存儲器中取一條指令,程序計數器(PC)保存下一次要取的指令地址。取得指令被放置在處理器的指令寄存器(IR)中,包含確定處理器將要執行的操作的位。處理器會解釋並執行對應的操作:

  • 處理器一存儲器:數據可以從處理器傳送到存儲器,或者從存儲器傳送到處理器。
  • 控制:某些指令可以改變執行順序。例如,處理器從地址爲149的存儲單元中取出一條指令, 該指令指定下一條指令應該從地址爲182的存儲單元中取,這樣處理器要把程序計數器設置爲182。因此,在下一個取指階段中,將從地址爲182的存儲單元而不是地址爲150的存儲單元中取指令。
  • 數據處理:處理器可以執行很多與數據相關的算術操作或邏輯操作。
  • 處理器一I/O:通過處理器和I/O模塊間的數據傳送,數據可以輸出到外部設備,或者從外部設備輸人數據。

指令執行實例:

假設一臺機器的處理器包含一個稱爲累加器(AC)的數據寄存器,所有指令和數據長度均爲16位,指令格式中有4位是操作碼,剩餘的12位都用於存放數據。具體特徵如下圖所示:

 

                                               

累加過程:將地址爲940的存儲單元中的內容與地址爲941的存儲單元中的內容相加。注意:300~302中指令四個數字的第一個數字代表了將要進行的操作,參考圖1.3。940~941存儲單元存放的是將要運算的數值。具體的累加過程如下圖所示。

 

                                               

I/O模塊(例如磁盤控制器)可以直接與處理器交換數據。正如處理器可以通過指定存儲單元的地址來啓動對存儲器的讀和寫一樣,處理器也可以從I/O模塊中讀數據或向I/O模塊中寫數據。對於後一種情況,處理器需要指定被某一I/O模塊控制的具體設備。因此,指令序列的格式與圖1.4中的格式類似,只是用I/O指令代替了存儲器訪問指令。

在某些情況下,允許I/O模塊直接與內存發生數據交換,以減輕在完成I/O任務過程中的處理器負擔。此時,處理器允許I/O模塊具有從存儲器中讀或往存儲器中寫的特權,這樣I/O模塊與存儲器之間的數據傳送無需通過處理器完成。在這類傳送過程中,I/O模塊對存儲器發出讀命令或寫命令,從而免去了處理器負責數據交換的任務。這個操作稱爲直接內存存取(DirectMemory Access, DMA )。