先行控制

1.先行控制方式的原理

採用二次重疊執行方式必須解決兩個問題:

(1)有獨立的取指令部件、指令分析部件和指令執行部件

把一個集中的指令控制器,分解成三個獨立的控制器:存儲控制器、指令控制器、運算控制器

(2)要解決訪問主存儲器的衝突問題

取指令、分析指令、執行指令都可能要訪問存儲器,可以採用先行控制技術解決存儲器衝突。
採用先行控制技術的關鍵是緩衝技術和預處理技術。

緩衝技術通--在工作速度不固定的兩個功能部件之間設定緩衝棧,用以平滑功能部件之間的工作速度。

預處理技術--將進入運算器的指令均處理成RR型指令,而某些棧為其提供所需的運算元(先行讀數棧、後續寫數棧),這樣運算器在進行預算時無需訪問存儲器,從而加快速度。

在採用了緩衝技術和預處理技術之後,運算器能夠專心於數據的運算,從而大幅度提高程式的執行速度。

2.處理機結構
三個獨立的控制器:存儲控制器、指令控制器、運算控制器。
四個緩衝棧:先行指令緩衝棧、先行讀數緩衝棧、先行操作棧、後行寫數棧。

3.工作原理

充分利用主存頻寬,在主存空閒時,即從主存中取出指令放入先行指令緩衝棧,以供指令分析器使用。--預取

先行指令緩衝棧遵循先進先出,緩衝戰充滿後不能進入,一旦指令被指令分析器取走即從緩衝棧作廢。

指令分析器對緩衝棧中的指令進行預處理,並送入先行操作棧。
對於無條件轉移指令--指令分析器將轉移地址送入先行程式計數器以及現行程式計數器中,然後作廢先行指令緩衝棧中的指令,重新從主存中預取指令;而此時先行操作棧中可能還有未執行的指令,因此作廢緩衝棧中的指令對流水線影響不大。
對於條件轉移指令--由於分析較慢,因此可能有停頓,要分轉移成功和不成功來處理(控制相關的處理方法)。

以上兩種類型指令能在分析器中直接處理,因此稱為吸收型指令。

對於運算類的指令--則要處理成RR型的指令,如果指令本身就是RR型,則不作任何處理;如果是RS型,則分析器計算出運算元有效地之後送入先行讀數棧或後行寫數棧的地址暫存器,並將對應的地址暫存器的編號代替指令中的主存地址後送入先行操作棧;如果是RI型,則將立即數送入先行讀數棧的運算元暫存器,並用此暫存器的編號代替指令中的立即數欄位。這樣,所有的運算類指令執行時都將訪問暫存器,加快運算速度。

再看先行讀數棧,每當先行讀數棧收到分析器送來的有效地之後,即將地址有效標誌位置位,並向主存申請讀運算元,取得的運算元放入對應的先行運算元緩衝暫存器中,並置數據有效標誌位,做廢剛才的地址有效標誌位,以供相應的指令使用運算元。

再看後行寫數棧,每當後行寫數棧收到分析器送來的有效地之後,即將地址有效標誌位置位;這樣,當相應的運算類指令執行完畢後不再馬上寫主存,而是先送入相應的後行寫數據緩衝暫存器中,並置數據有效標誌位。控制器自動根據相應的後行寫地址緩衝暫存器中的地址向主存發出寫請求。

4.小結

無論是先行取指還是先行讀數,抑或是後行寫數,都是充分利用主存頻寬,並且優先等級由低至高。
通過對指令流和數據流的預處理和緩衝,則能使指令分析部件和指令執行部件(運算器)獨立並行工作,並始終處於忙碌狀態。

相關詞條

相關搜尋

熱門詞條

聯絡我們