三、時序係統與時序控製方式
計算機的操作需要分步實現。用一段程序去解決某個問題,需要分成若幹條指令。每一條指令的讀取與執行,又要分成若幹階段,諸如:讀指令,讀取源操作數,讀取目的操作數,運算,存放結果等。每一階段的操作所需時間可能不等,也可能還要細分為幾步去實現,如從主存中讀取源操作數,很可能要分成二步:從指定寄存器中取得地址,按照該地址訪問主存以讀取操作數。
可見這裏有三個問題需要解決:何提供時間標誌,即如何建立一套時序係統?各步操作與時序信號之間的關係,是同步的還是異步的?各條指令間的銜接,在時間上是串行的還是重迭的,甚至是並行執行的?本節隻討論前兩個問題。
1.時序係統
計算機中需要一套時序係統,它是產生時間號序列的邏輯電路,包含振蕩器與分頻電路。振蕩器產生一定頰率的振蕩信號,作為全機工作的時間基準,例如IBM-PC機原來的時鍾頻率是4.7MHZ,即每秒鍾振蕩470萬次,由一個石英晶體保證這個頻率的穩定。分頻電路實際上就是一些計數電路,將振蕩信號加到計數器的CP計數端,經過一位觸發器可獲得二分頻的輸出,頻率降為輸入的一半,經過二位就獲得四分頻輸出。通過這些分頻電路,就可以產生一些具有一定時間寬度的時序信號,用來控製有關操作的時間。
在計算機中,有二種比較常見的分級時序方式:
(1)二級時序:時鍾周期、工作脈衝。
在許多計算機中將每步操作所需的時間規定為一個時鈞周期,在時鍾周期中設置一個脈衝,通常用脈衝的上升沿作為打入寄存器的定時信號,如用它將運算結果打入某個寄存器。二個脈衝的下降沿之間,就是一個時鍾周期。有些操作可以在一個時鍾周期內完成,如一次並行加法運算,有些操作則可能需要占用幾個時鍾周期才能完成,時鍾周期就是給各種操作分配時間的基本單位。
(2)三級時序:工作周期、節拍、脈衝。
在有些計算機中,為了讓計算機知道,在某一時期中應該做什麼操作,就將時序分成更多級:
①工作周期。
某一工作階段所需的時間周期,相應地為各神周期設定狀態標誌。例如將指令周期(一條指令的讀取與執行)劃分成幾種工作周期:取指周期,取源操作數周期,取目的操作數(或目的地址)周期,執行周期等。
②節拍(時鍾周期)。
每一步操作所需的時間。例如一次並行加法運算所需的時間,讀一次主存所需的時間(有許多計算機則將訪問主存操作交由異步方式實現),一次寄存器傳送所需的時間。通常選取最長的一種操作時間,作為一個時鍾周期的長度,全機中各時鍾周期的寬度是統一的。
如前所述,脈衝用來定時,利用脈衝上升沿打入數據,下降沿表示一個周期的結束,另一周期開始。同步控製與異步控製(1)同步控製方式
這種控製方式是指:各項操作由統一的時序信號進行控製,CPU內部通常采用同步控製方式。這意味著為各種操作安排一定的時鍾周期,用統一的脈衝信號定時。時間一到,一種操作完成,自動轉人下一操作。
(2)異步控製方式
這種控製方式是指:各項操作按不同需要選擇不同的時間,不采取統一的周期節拍,各操作間的銜接與各部件間的信息交換,采取異步應答方式。用總線連接CPU、主存儲器與外圍設備接口等部件時,可以采用異步控製方式,也可以采用同步控製方式,以異步方式較為常見。
申請控製並使用總線的設備,稱為主設備;響應主設備要求並與之通訊的設備,稱為從設備。
現在我們舉出一個異步應答方式的例子。假設係統總線原來由CPU控製,現在有另一個設備如DMA控製器,申請使用總線,就由該設備發出總線請求信號。CPU在適當時刻發出總線批準信號,並脫離總線,將總線交給申請者使用。申請使用總線的設備,向總線發送總線地址,與數據傳送方向控製命令;並送出總線忙信號,表示現在由它控製總線。當數據傳送完畢後,降下總線忙信號,將總線控製權交回CPU。
四、指令的執行流程
計算機究竟怎樣執行指令?這是計算機內部工作機製的一個核心問題。不同CPU,指令的具體執行過程可能不同。現在我們給出一個假想機的內部結構粗框圖,所謂假想機是一種假設的計算機模型,它可以簡化許多細節,教學中常使用這類模型,以便講解內部工作原理,本節也以此為基礎,舉例說明指令的一般執行過程。
例1:傳送指令MOV(Ro),(R.),
這條指令的含意是將某個主存單元的內容(源操作數),傳送到另一主存單元(目的地)。源操作數所在單元的地址,在寄存器R。中;目的單元的地址碼則在寄存器1中。我們用下述描述形式,表明該指令的讀取與執行過程。所要訪問單元的地址碼;MBR是主存數據寄存器,提供寫入主存單元的內容,或暫存由主存單元中讀出的內容;PC是程序計數器,提供指令所在單元的地址碼;IR是指令寄存器,存放現行指令代碼,它的內容是形成有關操作命令的基本依據;1-與1是兩個通用寄存器,在本例中作為地址指針,提供源地址與目的地址。
(1)、(2)、(3)三步可稱為取指階段。首先將PC的內容送往地址寄存器,準備選取指令所在單元。第(2)步讀主存,取出指令代碼,先暫存在數據寄存器MBR由,隨即送往指令寄存器I;R。通過譯碼,就知道所要執行的是一條傳送指令,並知道按什麼方式去尋找操作數。第(3)步將程序計數器PC的內容加1,指向下一單元,為讀取後繼指令作準備,因為在多數情況下程序是順序執行的。
(4)、(5)步可稱為取源操作數階段,第(4)步從指定寄存器仏中取出操作數地址,送入地址寄存器MAR。第(5)步讀主存,將讀出的源操作數暫存在數據寄存器MBR中。
第(6)步是取目的地址,從指定寄存器R:中取出目的地址,送入地址寄存器MAR,指向接收數據的目的單元。
由於源操作數已在通用寄存器Ro中,運算時可以直接送往運算部件ALU,所以不需要單獨的取源操作數階段。
第(4)步從指定寄存器1中取出地址碼,送入地址寄存器MAR,第(5)步從主存中讀取目的操作數,暫存在數據寄存器MBR中。
第(6)步將二個操作數從各自所在的寄存器,送往運算部件ALU,實現相加,結果暫存在MBR中。第(7)步將運算結果由MBR寫入主存。是哪一個單元?由於地址寄存器MAR仍保留著第(4)步結果,即原來存放目的數的單元地址,所以在執行加法指令後,目的操作數不再保留,改在該單元存放求和結果。
通過上麵二個例子,可以了解在計算機內部究竟是怎樣執行程序的。這二個例子的分析是以的結構為基礎,實際的CPU要比它複雜,功能更強,因此一條指令的讀取與執行,不一定需要分成這麼多步,可以更快些。不過對多數計算機,一條指令流程往往也要占幾個時鍾周期。
通過分析還可以得出結論:計算機的操作基本上可歸納為信息的傳送。例如上麵二個例子,指令流程實際上是一組信息傳送的流程。一條是控製流,如指令代碼的傳送。另一條是數據流,如地址碼的傳送,操作數的傳送,運算結果的傳送。
五、控製命令的產生——組合邏輯控製與微程序控製
為了實現指令流程,控製器的基本功能,就是產生有關的微操作命令,即對各種基本操作(如開門、關門、打入等)的控製命令。在第一章,我們曾用一句通俗的話描述控製器的作用:決定計算機各部分,在什麼時間、根據什麼、做什麼事?這裏有兩個問題需要解決,首先是根據哪些因素產生控製命令,然後是由什麼樣的邏輯部件產生控製命令。
產生微操作命令的依據,大致有二個方麵:邏輯條件與時間條件。而邏輯條件又包含三個方麵:指令代碼、運行狀態、外部狀態與請求。
產生微操作命令的方法有兩類,相應地控製器按微命令形成方法可分為兩類:組合邏輯控製器,微程序控製器。
1.組合邏輯控製器
各種微操作命令的產生條件,可分別用邏輯式推述。組合邏輯控製器就是用相應的邏輯電路,分別產生這些微操作命令。硬件製造完畢,所有邏輯電路都用連線接好,所以組合邏輯控製器又稱為硬聯邏輯控製器。
它的設計過程大致如下:(1)首先擬出各種指令、各種操作的執行流程,即什麼周期、什麼節拍、發什麼命令、完成什麼操作。(2)歸納出全機究竟需要哪些微命令,逐個地進行化簡與優化,列出它們的邏輯式。這些邏輯式的左邊是微命令的名稱,右邊是產生微命令的有關條件,其中有:指令代碼,工作狀態,外部狀態,外部請求,時序信號(周期、節拍、脈衝)等。(3)采用與各個邏輯式相對應的邏輯電路。因此,在組合還輯控製器中,所謂的微操作信號發生器,實際上就是若幹邏輯電路,相當零亂、分散。