複製鏈接
請複製以下鏈接發送給好友

先行控制

鎖定
先行控制實質上是緩衝技術和預處理技術相結合的結果。通過對指令流和數據流的預處理和緩衝,能夠儘量使指令分析器和指令執行部件獨立地工作,並始終處於忙碌狀態。先行控制技術很好地解決了指令分析器和主內存之間速度不匹配的問題,能夠很好地解決對於控制相關、指令相關、通用寄存器相關和變址相關等問題。
中文名
先行控制
外文名
advanced control
領    域
計算機
組    成
三個獨立的控制器、四個緩衝棧
關鍵技術
緩衝技術、預處理技術
應    用
解決控制相關、指令相關等問題

先行控制處理機結構

圖1:採用先行控制技術的處理機構 圖1:採用先行控制技術的處理機構
先行控制的處理機結構(如圖1所示) [1]  包括三個獨立的控制器和四個緩衝棧。其中,控制器分別為:存儲控制器、指令分析器、運算控制器;緩衝棧分別為:先行指令緩衝棧、先行讀數棧、先行操作棧、後行寫數棧。
先行控制是指在處理機內部設置一定容量的指令緩衝棧,把指今分折器所需要的指令事先取到指令緩衝棧中,而不必訪問主存儲器。這樣,就能夠使取指令、分析指令和執行指令重疊起來執行。如果指令分析器每次都能夠在先行指令緩衝棧中得到,則取指令只需要很短的時間就能夠完成,因此,可以把指令與分析指令合併到一起,從而構成圖2所示的一次重疊執行方式。
圖2 圖2
如果分析指今和執行指今所需要的時間都是t,則採用一次重疊執行方式連續執行n條指令所需要的時間為:T=(1+n)t。

先行控制組成元素介紹

先行控制緩衝棧

先行指令緩衝棧作為主存儲器與指令分析器之間的一個緩衝部件,用它來平滑主存儲器和指令分析器的工作。當指令分析器分析某一條指令所需要的時間比較長,或者主存儲器有空閒時,就從主存儲器中多取出幾條指令存放在先行指令緩衝棧中。而當指令分析器分析指令很快,或者主存儲器比較忙時,指令分析器也能夠從先行指令緩衝棧中得到所需要的指令。

先行控制指令分析器

指令分析器對已經存放在先行指令緩衝棧裏的指令進行預處理,把處理機後的指令送入先行操作棧。對於無條件轉移及條件轉移等程序控制指令,一般在指令分析器中就能夠直接執行。各種運算型指令、移位指令、數據傳送指令等都要先處理成寄存器-寄存器型(RR型指令),然後送入先行操作棧。為了與指令系統中原有的RR型指令相區別,通常把送入先行操作棧中的指令稱為RR*型指令。

先行控制先行操作棧

先行操作棧是指令分析器和運算控制器之間的一個緩衝存儲器。指令分析器每預處理完一條指令,就把形成的RR*型指令送入先行操作棧,使得指令分析器能夠繼續對後續的指令進行預處理。每當運算器執行完一條RR*型指令,就由運算控制器從先行操作棧中取出下一條RR*型指令。有了這個緩衝存儲器,指令分析器和運算器就能夠各自完成獨立的工作。先行操作棧採用先進先出方式工作,它由一個先行指令寄存器堆和有關控制邏輯等組成。先行讀數棧是主存儲器與運算器之間的一個緩衝存儲器,用來平滑運算器與主存儲器的工作。

先行控制先行讀數棧

先行讀數棧由一個緩衝寄存器和有關控制邏輯等組成。每一個緩衝寄存器由三個部分組成,包括先行地址緩衝寄存器、先行操作數緩衝寄存器和標誌字段。每當先行地址緩衝寄存器收到從指令分析器中送來的有效地址,就把地址的有效標誌置位,並開始向主存儲器申請讀操作數。從主存儲器讀出的操作數可以存放在先行讀數棧的操作數緩衝寄存器中,也可以覆蓋掉原來的先行地址寄存器中的地址,同時要置位數據有效標誌。先行讀數棧一般也採用先進先出方式工作。設置了先行讀數棧後,運算器能夠直接從先行讀數棧中取得所需要的操作數,而不必等待訪問主存儲器。這樣,指令的執行速度就能夠大大加快。

先行控制後行寫數棧

後行寫數棧是主存儲器與運算器之間的一個緩衝存儲器。如果在指令分析器中遇到向主存儲器的“寫數”指令,則把形成的有效地址送入後行寫數棧的後行地址緩衝寄存器中,並把預處理好的RR*型指令送入先行操作棧。當然,這條RR*型指令中的目標寄存器就是後行寫數棧的緩衝寄存器編號。當運算器執行這條RR*型寫數指令時,只要把寫到主存中去的數據送到後行寫數棧的後行數據緩衝寄存器中即可,由後行寫數棧負責把數據寫回到主存儲器。這樣,運算器不必等待數據寫回到主存,就可以繼續執行後行的指令。

先行控制原理

1、在主存空閒時,即從主存中取出指令放入先行指令緩衝棧,以供指令分析器使用。預取先行指令緩衝棧遵循先進先出。指令分析器對緩衝棧中的指令進行預處理,並送入先行操作棧。
2、對於運算類的指令--則要處理成RR型的指令。如果指令本身就是RR型,則不作任何處理;如果是RS型,則分析器計算出操作數有效地之後送入先行讀數棧或後行寫數棧的地址寄存器,並將對應的地址寄存器的編號代替指令中的主存地址後送入先行操作棧;如果是RI型,則將立即數送入先行讀數棧的操作數寄存器,並用此寄存器的編號代替指令中的立即數字段。這樣,所有的運算類指令執行時都將訪問寄存器,加快運算速度。
3、每當先行讀數棧收到分析器送來的有效地之後,即將地址有效標誌位置位,並向主存申請讀操作數,取得的操作數放入對應的先行操作數緩衝寄存器中,並置數據有效標誌位,做廢剛才的地址有效標誌位,以供相應的指令使用操作數。
4、每當後行寫數棧收到分析器送來的有效地之後,即將地址有效標誌位置位;這樣,當相應的運算類指令執行完畢後不再馬上寫主存,而是先送入相應的後行寫數據緩衝寄存器中,並置數據有效標誌位。控制器自動根據相應的後行寫地址緩衝寄存器中的地址向主存發出寫請求。

先行控制關鍵技術

採用先行控制技術的關鍵是緩衝技術和預處理技術。
1、緩衝技術:在工作速度不固定的兩個功能部件之間設置緩衝棧,用以平滑功能部件之間的工作速度。
2、預處理技術:將進入運算器的指令均處理成RR型指令,而某些棧為其提供所需的操作數(先行讀數棧、後續寫數棧),這樣運算器在進行預算時無需訪問存儲器,從而加快速度。

先行控制執行情況

在採用先行控制方式的處理機中,一個程序的執行情況如下表所示。
指令地址
指令執行情況
……
k-i-1
已經執行完成的指令
k-i
……
k-1
在“後行寫數棧”中等待把結果寫到主存儲器中的指令
k
正在“指令執行部件”中執行的指令
k+1
……
k+j
已經由“指令分析器”預處理完成,被存放在“先行操作棧”中的RR*型指令,指令所需要的操作數也已經讀到“先行讀數棧”中
k+j+1
……
k+j+n
指令已經由“指令分析器”預處理完成,存放在“先行操作棧”中,指令所需要的操作數還沒有讀到“先行讀數棧”中
k+j+n+1
正在“指令分析器”中進行分析和預處理的指令
k+j+n+2
……
k+j+n+m
已經從主存儲器中預取到“先行指令緩衝棧”中的指令
k+j+n+m+1
……
還沒有進入處理機的指令
參考資料
  • 1.    康牧,宋銘利. 先行控制技術的分析及改進[J]. 信陽師範學院學報(自然科學版),2006,(03):362-363.