先行控制

先行控制

先行控制實質上是緩衝技術和預處理技術相結合的結果。通過對指令流和數據流的預處理和緩衝,能夠儘量使指令分析器和指令執行部件獨立地工作,並始終處於忙碌狀態。先行控制技術很好地解決了指令分析器和主記憶體之間速度不匹配的問題,能夠很好地解決對於控制相關、指令相關、通用暫存器相關和變址相關等問題。

基本介紹

  • 中文名:先行控制
  • 外文名:advanced control
  • 領域:計算機
  • 組成:三個獨立的控制器、四個緩衝棧
  • 關鍵技術:緩衝技術、預處理技術
  • 套用:解決控制相關、指令相關等問題
處理機結構,組成元素介紹,緩衝棧,指令分析器,先行操作棧,先行讀數棧,後行寫數棧,原理,關鍵技術,執行情況,

處理機結構

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

組成元素介紹

緩衝棧

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

指令分析器

指令分析器對已經存放在先行指令緩衝棧里的指令進行預處理,把處理機後的指令送入先行操作棧。對於無條件轉移及條件轉移等程式控制指令,一般在指令分析器中就能夠直接執行。各種運算型指令、移位指令、數據傳送指令等都要先處理成暫存器-暫存器型(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
……
還沒有進入處理機的指令

相關詞條

熱門詞條

聯絡我們