RISC的關鍵技術2_第1頁
RISC的關鍵技術2_第2頁
RISC的關鍵技術2_第3頁
RISC的關鍵技術2_第4頁
RISC的關鍵技術2_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、risc的關鍵技術risc要達到很高的性能,必須有響應的技術支持。目前,在risc處理機中采用主要技術有如下幾種: 1延時轉(zhuǎn)移技術在risc處理機中,指令一般采用流水線方式工作。取指令和執(zhí)行指令并行進行。如果取指令和執(zhí)行指令各需要一個周期,那么,在正常情況下,每一個周期就能執(zhí)行完一條指令。然而,在遇到轉(zhuǎn)移指令時,流水線就可能斷流。如圖2.15(a)所示的一個簡單程序,當執(zhí)行jmp next2指令時,由于轉(zhuǎn)移的目的地址要在指令執(zhí)行完成后才能產(chǎn)生,這時,下一條指令已經(jīng)取出來了,因此,必須把已經(jīng)取出來了的指令3作廢,并按照轉(zhuǎn)移地址重新取出正確的指令,如圖2.15(b)所示。如果已經(jīng)取出來了的指令3不

2、作廢,而繼續(xù)執(zhí)行,那么,整個程序的語義就可能發(fā)生錯誤。有兩種辦法可以作廢指令3,一種是用硬件來作廢指令3,即控制指令3的執(zhí)行結(jié)果不寫入目的寄存器。另一種辦法是通過軟件在轉(zhuǎn)移指令后面加入一條空操作指令(nop)。但是,無論采用那一種辦法,都要浪費一個周期。如果把jmp next2這條指令提前執(zhí)行,情況就完全不同了。如圖2.16(a)所示,把第一和第二條指令交換位置。程序在流水線中執(zhí)行的情況如圖2.16(b)所示。這時,流水線沒有斷流情況發(fā)生,程序語義也正確。如圖2.16所示。延遲轉(zhuǎn)移技術:在轉(zhuǎn)移指令之后插入一條有效的指令,程序執(zhí)行時,要等這條插入的指令執(zhí)行完成之后,才執(zhí)行轉(zhuǎn)移指令,因此,轉(zhuǎn)移指令

3、好象被延遲執(zhí)行了,這種技術稱為延遲轉(zhuǎn)移技術。圖2.15 因轉(zhuǎn)移指令引起的流水線斷流圖2.16 采用延時轉(zhuǎn)移技術的指令流水線    采用指令延遲轉(zhuǎn)移技術時,指令序列的調(diào)整由編譯器自動進行,一般不需要人來干預,但是,如果要在目標程序一級調(diào)試程序,這種已經(jīng)被調(diào)整過了的程序?qū)⒑茈y看懂,很容易引起人們的誤解。    很容易會提出這樣一個問題:如果是條件轉(zhuǎn)移指令時,還能不能采用延遲轉(zhuǎn)移技術呢?我們來看下面的程序:    1: move  r1, r2

4、0;   2: cmp r3, r4 ;(r3)與(r4)比較    3: beq exit ;如果(r3)(r4)則轉(zhuǎn)移到next    4: add r4, r5         n: next: move  r4, a    重新調(diào)整一下程序的指令序列,把原來的第一條指令插入到條件轉(zhuǎn)移指令之后。得到一個新的程序:  

5、60; 1: cmp r3, r4 ;(r3)與(r4)比較    2: beq exit ;如果(r3)(r4)則轉(zhuǎn)移到next    3: move  r1, r2 ;插入一條指令,但不能有數(shù)據(jù)相關,不能改變條件碼    4: add r4, r5        n: next: move  r4, a    以上程序在執(zhí)行

6、時流水線就不會有斷流情況發(fā)生。    必須注意:調(diào)整指令序列一定不能改變原來程序的數(shù)據(jù)相關關系,即被移動指令中的所有數(shù)據(jù)存儲單元與移動過程中所經(jīng)過的指令的所有數(shù)據(jù)存儲單元之間不能有數(shù)據(jù)的讀-寫、寫-讀和寫-寫相關。另外,還要求,被移動的指令不要破壞機器的條件碼,至少不要影響后面的條件碼測試指令所要求的條件碼。    如果找不到符合上述條件的指令來調(diào)整程序中指令序列,那么,編譯程序必須在條件轉(zhuǎn)移指令后面插入一條空操作指令。如果指令的執(zhí)行過程分為多個流水段,則要插入多條空操作指令。 2指令取消技術 

7、   采用指令延時技術,遇到條件轉(zhuǎn)移指令時,調(diào)整指令序列非常困難,在許多情況下找不到可以用來調(diào)整的指令。有些risc處理機采用指令取消技術。    在使用指令取消技術的處理機中,所有轉(zhuǎn)移指令和數(shù)據(jù)變換指令都可以決定下面待執(zhí)行的指令是否應該取消。如果指令被取消,其效果相當于執(zhí)行了一條空操作指令,不影響程序的運行環(huán)境。為了提高程序的執(zhí)行效率,應該盡量少取消指令,以保持指令流水線處于充滿狀態(tài)。因此,可以采用如下規(guī)則:如果是向后轉(zhuǎn)移(轉(zhuǎn)移的目標地址小于當前程序計數(shù)器pc的值),則在轉(zhuǎn)移不成功時取消下條指令,否則,執(zhí)行下條指令;如果是

8、向前轉(zhuǎn)移,則正好相反,在轉(zhuǎn)移不成功時執(zhí)行下條指令,否則,取消下條指令。  循環(huán)體的第一條指令(x x x)經(jīng)調(diào)整后安排在兩個位置,第一個位置是在循環(huán)體的前面,即在進入循環(huán)之前要先執(zhí)行一次。第二個位置安排在循環(huán)體的后面,即在循環(huán)的出口條件判斷指令comp的下面。如果轉(zhuǎn)移成功,則執(zhí)行下面的x x x指令,然后返回到loop;如果轉(zhuǎn)移不成功,則取消下面的x x x指令,接著執(zhí)行w w w指令。     由于向后轉(zhuǎn)移時,絕大多數(shù)情況下是轉(zhuǎn)移成功的,只有在循環(huán)全部結(jié)束最后一次,轉(zhuǎn)移才不成功。因此,采用這種指令取消技術能夠使指令流水線在絕大多數(shù)情況下不斷流

9、,保持很高的流水效率。    對于向前轉(zhuǎn)移的情況,即if then控制結(jié)構(gòu),有如下一個程序:        如果comp指令的轉(zhuǎn)移條件不成立,則下條指令t t t不取消,“then”部分的程序代碼照常執(zhí)行;如果轉(zhuǎn)移條件成立,下條指令t t t的執(zhí)行被取消,程序執(zhí)行轉(zhuǎn)向thru位置,“then”部分的程序代碼全部不執(zhí)行。    由于向前轉(zhuǎn)移成功與不成功的概率通常各為50,因此,采用正常的指令取消技術就可以了。  

10、60; 另外,對于條件分支中只有一條指令的情況,可以采用隱含轉(zhuǎn)移技術。例如,為了實現(xiàn)下面的語句:    if (ab) then bb1    用匯編語言可以寫成:    comp >=, ra, rb ;a與b已經(jīng)存放在通用寄存器ra和rb中    inc rb    指令comp比較a與b的大小,若(ra)>=(rb),則取消下條指令,否則,執(zhí)行下條指令。3重疊寄存器窗口

11、技術    risc的指令系統(tǒng)比較簡單,cisc中的一條復雜指令,在risc中通常要用一段子程序來實現(xiàn)。因此,risc程序中的call和return指令要比cisc程序中的多。在執(zhí)行call指令時,必須把硬件現(xiàn)場(主要包括程序計數(shù)器和處理機狀態(tài)字)和程序本身的軟件現(xiàn)場(主要指在子程序中要使用的通用寄存器等)保存到主存儲器中。另外,還要把執(zhí)行子程序所需要的參數(shù)從主程序傳送過去。在執(zhí)行return指令時,要做相反的工作,最后把運算結(jié)果傳送回主程序。因此,執(zhí)行call和return指令時,訪問存儲器的信息量非常大。據(jù)統(tǒng)計,在pascal語言和c語言中分別有15

12、和12的call和return操作,而它們訪問存儲器的信息量卻占整個訪存信息量的44和45。    為了使call和return操作盡量少訪問存儲器,美國加洲大學伯克利分校的f, baskett提出重疊寄存器窗口(overlapping register window)技術。并且首先在risc i上應用,在risc ii上,寄存器的數(shù)量增加到138個。目前,重疊寄存器窗口技術已經(jīng)成為risc的一種基本技術。    重疊寄存器窗口的基本思想是:在處理機中設置一個數(shù)量比較大的寄存器堆,并把它劃分成很多個窗口。每個過程使

13、用其中相鄰的3個窗口和一個公共的窗口,而在這些窗口中有一個窗口是與前一個過程共用,還有一個窗口是與下一個過程共用的。與前一過程共用的窗口可以用來存放前一過程傳送給本過程的參數(shù),同時也存放本過程傳送給前一過程的計算結(jié)果。同樣,與下一過程共用窗口可以用來存放本過程傳送給下一過程的參數(shù)和存放下一過程傳送給本過程的計算結(jié)果。    圖2.18是risc ii中采用的重疊寄存器窗口。共有138個寄存器,分成17個窗口,其中,有一個由10個寄存器組成的窗口是全局窗口,能被所有過程訪問。另外有8個窗口,每個窗口各10個寄存器,分別作為8個過程的局部寄存器。還有8個窗口

14、,每個窗口各有6個寄存器,是相鄰兩個過程公用的,稱為重疊寄存器窗口。每個過程均可以訪問32個寄存器,其中,有10個是所有過程公用的全局寄存器,有10個是只供本過程使用的局部寄存器,有6個是與上一過程公用的寄存器,還有6個是與下一過程公用的寄存器。圖2.18 重疊寄存器窗口技術    只要調(diào)用的深度不超過規(guī)定的層數(shù)(如8層),重疊寄存器窗口技術可以減少大量的訪存操作。當調(diào)用層數(shù)超過規(guī)定層數(shù)時,稱為寄存器溢出,這時,可以在主存中開辟一個堆棧,把超過規(guī)定層數(shù)的寄存器中的內(nèi)容壓入堆棧中。    在sun公司的sparc處理

15、機中,以及后來的super sparc和utra sparc處理機中,還把最后一個過程的公用寄存器與第一個過程的公用寄存器重疊起來,形成一個循環(huán)圈。在調(diào)用層數(shù)很多時,可以循環(huán)使用。    f, baskett等人使用quicksort和puzzle兩個程序?qū)拇嫫鞔翱诩夹g的有效性進行了測試。quicksort程序的特點是過程調(diào)用的次數(shù)在整個程序中所占的比例比較大,但調(diào)用的深度不大,而puzzle程序正好相反。risc ii與vax-11兩種機器的比較結(jié)果如表2.14所示,risc ii的訪存次數(shù)主要是寄存器窗口溢出引起的,而vax-11訪存次數(shù)是為了保持

16、和恢復通用寄存器中內(nèi)容而引起的。從表中看出,risc ii寄存器溢出的次數(shù)很少,只占千分之一左右,影響也不大。由于采用了寄存器窗口技術,由程序調(diào)用引起的訪問存儲器次數(shù)只占程序總訪存次數(shù)的1左右。表2.14寄存器窗口技術的效果 程序名稱調(diào)用次數(shù)最大調(diào)用深度risc ii溢出次數(shù)risc ii訪存次數(shù)vax-11訪存次數(shù)quicksort111k(0.7)10644k(0.8)696k(50)puzzle43k(8.0)201248k(1.0)444k(28)     表2.15是risc ii處理機與幾種cisc處理機的每次過程調(diào)用的開銷比較。從

17、表中可以看出,在執(zhí)行時間、執(zhí)行指令條數(shù)、訪問存儲器次數(shù)等方面,采用重疊寄存器窗口技術都是十分有效的。表2.15 過程調(diào)用所需開銷的比較機  器執(zhí)行指令條數(shù)執(zhí)行時間(微秒)訪問存儲器次數(shù)vax-11pdp-11mc68000risc ii5199626221921015120.2 3.重疊寄存器窗口技術原因:risc中,子程序比cisc中多因傳送參數(shù)而訪問存儲器的信息量很大。實現(xiàn)方法:設置一個數(shù)量比較大的寄存器堆,并把它劃分成很多個窗口。在每個過程使用的幾個窗口中有一個窗口是與前一個過程共用,還有個窗口是與下一個過程共用。risc機控制線路少,芯片上有大量通用寄存器,在執(zhí)行程

18、序時可以存放更多的操作數(shù)或公用參數(shù),采用寄存器窗口技術還可以更好地支持過程的調(diào)用和返回,提高機器工作效率。寄存器窗口技術就是把整個寄存器組分成很多小組,每個過程分配一個寄存器小組,當發(fā)生過程調(diào)用時, 自動地把cpu轉(zhuǎn)換到不同的寄存器小組使用,不再需要作保存和恢復的操作,這個寄存器小組就叫做寄存器窗口,相鄰的寄存器窗口間有部分是重疊的,便于調(diào)用參數(shù)傳送。給每個過程提供有限數(shù)量的寄存器窗口,讓各個過程的部分寄存器窗口是重疊的,這就是重疊寄存器窗口技術。圖4.4.3是risc ii的寄存器窗口。每個窗口內(nèi)的寄存器分為三個部分,一部分為參數(shù)寄存器有6個, 用來與高一級過程(本過程的主調(diào)過程)交換參數(shù),

19、第二部分為本地寄存器,供本過程自用有10個,第三部分為暫存寄存器也有6個,用來與低一級的過程交換參數(shù)。risc ii共有138個實際寄存器, 第0-9號實際寄存器為全局寄存器,存放各過程的公用參數(shù), 各窗口都能用,其余的128個實際寄存器分成8個窗口, 在任何一個時刻只能見到一個窗口,對這個窗口內(nèi)的寄存器編號,它們就是程序或過程所能訪問到的邏輯寄存器,共有32個,每個程序或過程只能直接訪問到32個寄存器,在過程調(diào)用或返回時只要切換窗口即可,每次從高一級過程轉(zhuǎn)到低一級過程時,前者的暫存寄存器和后者的參數(shù)寄存器是同一組的實際寄存器,這樣在過程轉(zhuǎn)換時,參數(shù)無需在寄存器中移動,窗口切換安排由編譯程序自

20、動完成。圖中給出了a、b、c三個過程,a過程調(diào)用b過程,b過程又調(diào)用 c過程, 這些窗口按堆棧方式組織,采用相鄰過程的低區(qū)和高區(qū)共用一組物理寄存器的重疊技術,不需要花費任何附加的操作可以實現(xiàn)兩過程參數(shù)直接交換,因而顯著減少過程調(diào)用和返回執(zhí)行時間、執(zhí)行的指令條數(shù)和訪問存儲器的次數(shù)。每次調(diào)用新過程,切換到一個相鄰的窗口,這種重疊寄存器窗口技術已經(jīng)被很多risc機采用。效果:可以顯著減少過程調(diào)用和返回執(zhí)行時間、執(zhí)行的指令條數(shù)和訪問存儲器的次數(shù)。另外,要在主存中開辟一個堆棧,當調(diào)用層數(shù)超過規(guī)定層數(shù)(寄存器溢出)時,把溢出部分的寄存器中內(nèi)容壓入堆棧。窗口數(shù)畢竟是有限的, 當過程調(diào)用超過8重時,可通過在寄

21、存器中開辟一個堆棧使得寄存器組有一個足夠大虛擬容量可提供使用,把老的過程參數(shù)保存到存儲器中,等嵌套深度減小后再恢復。環(huán)形管理窗口技術:寄存器組的組成實際上就像一個由互相間部分重疊的窗口構(gòu)成的環(huán)形緩沖器,圖4.4.4示出了一個有6個窗口(w0w5)的環(huán)形緩沖器。圖中畫的情況是這個緩沖器存放的深度為4(a調(diào)用b,b調(diào)用c,c調(diào)用d),現(xiàn)行的過程是d,有一個現(xiàn)用窗口指示器cwp指向現(xiàn)在活動的窗口。 機器指令中用的是邏輯寄存器編號,一條機器指令要從寄存器存取數(shù)時, 要通過cwp確定實際寄存器編號。還有一個已保存窗口指示器swp指向最近一次保存到存儲器去的窗口, 若出現(xiàn)過程d要調(diào)用到過程e,則應把e需要

22、的參數(shù)放在d的窗口暫存寄存器中(它同e窗口參數(shù)寄存器重疊),并把cwp推進一個窗口。如果 e過程再調(diào)用過程p, 因為f窗口同a窗口有重疊部分,過程f的參數(shù)將放到過程a的參數(shù)寄存器中, 這是不允許的。這時cwp已推進到同swp相等。此情況下就要發(fā)生中斷, 先把過程a窗口保存到存儲器中,把swp向前推進一個窗口,然后再調(diào)用過程f。當從過程f返回時,則cwp每次返回一個窗口, 一直退回到過程b。要返回到過程a,這時cwp又同swp相等, 再一次發(fā)生中斷, 把過程a的窗口從存儲器中取回寄存器,然后再返回到過程a。4指令流調(diào)整技術    為了使risc處理機中的指

23、令流水線高效率地工作,盡量不斷流。優(yōu)化編譯器必須分析程序的數(shù)據(jù)流和控制流,當發(fā)現(xiàn)指令流有斷流可能時,要調(diào)整指令序列。對有些可以通過變量重新命名來消除的有數(shù)據(jù)相關,要盡量消除。這樣,可以提高流水線的執(zhí)行效率,縮短程序的執(zhí)行時間。 例如,有圖2.19(a)這樣一個簡單的指令序列,由于存在r3寄存器的數(shù)據(jù)相關,第二條指令必須等第一條指令執(zhí)行完后才能開始執(zhí)行,后續(xù)的指令也是這樣。如果執(zhí)行一條指令需要兩個機器周期,那么,每兩條指令之間都要浪費一個周期。圖2.19 指令流調(diào)整技術    add r1, r2, r3 ;(r1)(r2)r3  &#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論