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

下載本文檔

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

文檔簡介

1、risc的關(guān)鍵技術(shù)risc要達(dá)到很高的性能,必須有響應(yīng)的技術(shù)支持。目前,在risc處理機(jī)中采用主要技術(shù)有如下幾種: 1延時轉(zhuǎn)移技術(shù)在risc處理機(jī)中,指令一般采用流水線方式工作。取指令和執(zhí)行指令并行進(jìn)行。如果取指令和執(zhí)行指令各需要一個周期,那么,在正常情況下,每一個周期就能執(zhí)行完一條指令。然而,在遇到轉(zhuǎn)移指令時,流水線就可能斷流。如圖2.15(a)所示的一個簡單程序,當(dāng)執(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)。但是,無論采用那一種辦法,都要浪費(fèi)一個周期。如果把jmp next2這條指令提前執(zhí)行,情況就完全不同了。如圖2.16(a)所示,把第一和第二條指令交換位置。程序在流水線中執(zhí)行的情況如圖2.16(b)所示。這時,流水線沒有斷流情況發(fā)生,程序語義也正確。如圖2.16所示。延遲轉(zhuǎn)移技術(shù):在轉(zhuǎn)移指令之后插入一條有效的指令,程序執(zhí)行時,要等這條插入的指令執(zhí)行完成之后,才執(zhí)行轉(zhuǎn)移指令,因此,轉(zhuǎn)移指令

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

4、下程序的指令序列,把原來的第一條指令插入到條件轉(zhuǎn)移指令之后。得到一個新的程序:1: cmp r3, r4 ;(r3)與(r4)比較2: beq exit ;如果(r3)(r4)則轉(zhuǎn)移到next3: move r1, r2 ;插入一條指令,但不能有數(shù)據(jù)相關(guān),不能改變條件碼4: add r4, r5n: next: move r4, a以上程序在執(zhí)行時流水線就不會有斷流情況發(fā)生。必須注意:調(diào)整指令序列一定不能改變原來程序的數(shù)據(jù)相關(guān)關(guān)系,即被移動指令中的所有數(shù)據(jù)存儲單元與移動過程中所經(jīng)過的指令的所有數(shù)據(jù)存儲單元之間不能有數(shù)據(jù)的讀-寫、寫-讀和寫-寫相關(guān)。另外,還要求,被移動的指令不要破壞機(jī)器的條件碼

5、,至少不要影響后面的條件碼測試指令所要求的條件碼。如果找不到符合上述條件的指令來調(diào)整程序中指令序列,那么,編譯程序必須在條件轉(zhuǎn)移指令后面插入一條空操作指令。如果指令的執(zhí)行過程分為多個流水段,則要插入多條空操作指令。2指令取消技術(shù)采用指令延時技術(shù),遇到條件轉(zhuǎn)移指令時,調(diào)整指令序列非常困難,在許多情況下找不到可以用來調(diào)整的指令。有些risc處理機(jī)采用指令取消技術(shù)。在使用指令取消技術(shù)的處理機(jī)中,所有轉(zhuǎn)移指令和數(shù)據(jù)變換指令都可以決定下面待執(zhí)行的指令是否應(yīng)該取消。如果指令被取消,其效果相當(dāng)于執(zhí)行了一條空操作指令,不影響程序的運(yùn)行環(huán)境。為了提高程序的執(zhí)行效率,應(yīng)該盡量少取消指令,以保持指令流水線處于充滿狀

6、態(tài)。因此,可以采用如下規(guī)則:如果是向后轉(zhuǎn)移(轉(zhuǎn)移的目標(biāo)地址小于當(dāng)前程序計數(shù)器pc的值),則在轉(zhuǎn)移不成功時取消下條指令,否則,執(zhí)行下條指令;如果是向前轉(zhuǎn)移,則正好相反,在轉(zhuǎn)移不成功時執(zhí)行下條指令,否則,取消下條指令。 循環(huán)體的第一條指令(x x x)經(jīng)調(diào)整后安排在兩個位置,第一個位置是在循環(huán)體的前面,即在進(jì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é)束最后

7、一次,轉(zhuǎn)移才不成功。因此,采用這種指令取消技術(shù)能夠使指令流水線在絕大多數(shù)情況下不斷流,保持很高的流水效率。對于向前轉(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,因此,采用正常的指令取消技術(shù)就可以了。另外,對于條件分支中只有一條指令的情況,可以采用隱含轉(zhuǎn)移技術(shù)。例如,為了實(shí)現(xiàn)下面的語句:if (ab) then bb1用匯編語言可以寫成

8、:comp =, ra, rb ;a與b已經(jīng)存放在通用寄存器ra和rb中inc rb指令comp比較a與b的大小,若(ra)=(rb),則取消下條指令,否則,執(zhí)行下條指令。3重疊寄存器窗口技術(shù)risc的指令系統(tǒng)比較簡單,cisc中的一條復(fù)雜指令,在risc中通常要用一段子程序來實(shí)現(xiàn)。因此,risc程序中的call和return指令要比cisc程序中的多。在執(zhí)行call指令時,必須把硬件現(xiàn)場(主要包括程序計數(shù)器和處理機(jī)狀態(tài)字)和程序本身的軟件現(xiàn)場(主要指在子程序中要使用的通用寄存器等)保存到主存儲器中。另外,還要把執(zhí)行子程序所需要的參數(shù)從主程序傳送過去。在執(zhí)行return指令時,要做相反的工作,

9、最后把運(yùn)算結(jié)果傳送回主程序。因此,執(zhí)行call和return指令時,訪問存儲器的信息量非常大。據(jù)統(tǒng)計,在pascal語言和c語言中分別有15和12的call和return操作,而它們訪問存儲器的信息量卻占整個訪存信息量的44和45。為了使call和return操作盡量少訪問存儲器,美國加洲大學(xué)伯克利分校的f, baskett提出重疊寄存器窗口(overlapping register window)技術(shù)。并且首先在risc i上應(yīng)用,在risc ii上,寄存器的數(shù)量增加到138個。目前,重疊寄存器窗口技術(shù)已經(jīng)成為risc的一種基本技術(shù)。重疊寄存器窗口的基本思想是:在處理機(jī)中設(shè)置一個數(shù)量比較大的

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

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

12、第一個過程的公用寄存器重疊起來,形成一個循環(huán)圈。在調(diào)用層數(shù)很多時,可以循環(huán)使用。f, baskett等人使用quicksort和puzzle兩個程序?qū)拇嫫鞔翱诩夹g(shù)的有效性進(jìn)行了測試。quicksort程序的特點(diǎn)是過程調(diào)用的次數(shù)在整個程序中所占的比例比較大,但調(diào)用的深度不大,而puzzle程序正好相反。risc ii與vax-11兩種機(jī)器的比較結(jié)果如表2.14所示,risc ii的訪存次數(shù)主要是寄存器窗口溢出引起的,而vax-11訪存次數(shù)是為了保持和恢復(fù)通用寄存器中內(nèi)容而引起的。從表中看出,risc ii寄存器溢出的次數(shù)很少,只占千分之一左右,影響也不大。由于采用了寄存器窗口技術(shù),由程序調(diào)用引

13、起的訪問存儲器次數(shù)只占程序總訪存次數(shù)的1左右。表2.14寄存器窗口技術(shù)的效果 程序名稱調(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處理機(jī)與幾種cisc處理機(jī)的每次過程調(diào)用的開銷比較。從表中可以看出,在執(zhí)行時間、執(zhí)行指令條數(shù)、訪問存儲器次數(shù)等方面,采用重疊寄存器窗口技術(shù)都是十分有效的。表2.15 過程調(diào)用所需開銷的比較機(jī) 器執(zhí)行指令條數(shù)執(zhí)行時間(微秒)訪問存儲器次數(shù)vax-11pdp-11m

14、c68000risc ii5199626221921015120.23.重疊寄存器窗口技術(shù)原因:risc中,子程序比cisc中多因傳送參數(shù)而訪問存儲器的信息量很大。實(shí)現(xiàn)方法:設(shè)置一個數(shù)量比較大的寄存器堆,并把它劃分成很多個窗口。在每個過程使用的幾個窗口中有一個窗口是與前一個過程共用,還有個窗口是與下一個過程共用。risc機(jī)控制線路少,芯片上有大量通用寄存器,在執(zhí)行程序時可以存放更多的操作數(shù)或公用參數(shù),采用寄存器窗口技術(shù)還可以更好地支持過程的調(diào)用和返回,提高機(jī)器工作效率。寄存器窗口技術(shù)就是把整個寄存器組分成很多小組,每個過程分配一個寄存器小組,當(dāng)發(fā)生過程調(diào)用時, 自動地把cpu轉(zhuǎn)換到不同的寄存器

15、小組使用,不再需要作保存和恢復(fù)的操作,這個寄存器小組就叫做寄存器窗口,相鄰的寄存器窗口間有部分是重疊的,便于調(diào)用參數(shù)傳送。給每個過程提供有限數(shù)量的寄存器窗口,讓各個過程的部分寄存器窗口是重疊的,這就是重疊寄存器窗口技術(shù)。圖4.4.3是risc ii的寄存器窗口。每個窗口內(nèi)的寄存器分為三個部分,一部分為參數(shù)寄存器有6個, 用來與高一級過程(本過程的主調(diào)過程)交換參數(shù),第二部分為本地寄存器,供本過程自用有10個,第三部分為暫存寄存器也有6個,用來與低一級的過程交換參數(shù)。risc ii共有138個實(shí)際寄存器, 第0-9號實(shí)際寄存器為全局寄存器,存放各過程的公用參數(shù), 各窗口都能用,其余的128個實(shí)際

16、寄存器分成8個窗口, 在任何一個時刻只能見到一個窗口,對這個窗口內(nèi)的寄存器編號,它們就是程序或過程所能訪問到的邏輯寄存器,共有32個,每個程序或過程只能直接訪問到32個寄存器,在過程調(diào)用或返回時只要切換窗口即可,每次從高一級過程轉(zhuǎn)到低一級過程時,前者的暫存寄存器和后者的參數(shù)寄存器是同一組的實(shí)際寄存器,這樣在過程轉(zhuǎn)換時,參數(shù)無需在寄存器中移動,窗口切換安排由編譯程序自動完成。圖中給出了a、b、c三個過程,a過程調(diào)用b過程,b過程又調(diào)用 c過程, 這些窗口按堆棧方式組織,采用相鄰過程的低區(qū)和高區(qū)共用一組物理寄存器的重疊技術(shù),不需要花費(fèi)任何附加的操作可以實(shí)現(xiàn)兩過程參數(shù)直接交換,因而顯著減少過程調(diào)用和

17、返回執(zhí)行時間、執(zhí)行的指令條數(shù)和訪問存儲器的次數(shù)。每次調(diào)用新過程,切換到一個相鄰的窗口,這種重疊寄存器窗口技術(shù)已經(jīng)被很多risc機(jī)采用。效果:可以顯著減少過程調(diào)用和返回執(zhí)行時間、執(zhí)行的指令條數(shù)和訪問存儲器的次數(shù)。另外,要在主存中開辟一個堆棧,當(dāng)調(diào)用層數(shù)超過規(guī)定層數(shù)(寄存器溢出)時,把溢出部分的寄存器中內(nèi)容壓入堆棧。窗口數(shù)畢竟是有限的, 當(dāng)過程調(diào)用超過8重時,可通過在寄存器中開辟一個堆棧使得寄存器組有一個足夠大虛擬容量可提供使用,把老的過程參數(shù)保存到存儲器中,等嵌套深度減小后再恢復(fù)。環(huán)形管理窗口技術(shù):寄存器組的組成實(shí)際上就像一個由互相間部分重疊的窗口構(gòu)成的環(huán)形緩沖器,圖4.4.4示出了一個有6個窗

18、口(w0w5)的環(huán)形緩沖器。圖中畫的情況是這個緩沖器存放的深度為4(a調(diào)用b,b調(diào)用c,c調(diào)用d),現(xiàn)行的過程是d,有一個現(xiàn)用窗口指示器cwp指向現(xiàn)在活動的窗口。 機(jī)器指令中用的是邏輯寄存器編號,一條機(jī)器指令要從寄存器存取數(shù)時, 要通過cwp確定實(shí)際寄存器編號。還有一個已保存窗口指示器swp指向最近一次保存到存儲器去的窗口, 若出現(xiàn)過程d要調(diào)用到過程e,則應(yīng)把e需要的參數(shù)放在d的窗口暫存寄存器中(它同e窗口參數(shù)寄存器重疊),并把cwp推進(jìn)一個窗口。如果 e過程再調(diào)用過程p, 因?yàn)閒窗口同a窗口有重疊部分,過程f的參數(shù)將放到過程a的參數(shù)寄存器中, 這是不允許的。這時cwp已推進(jìn)到同swp相等。此情況下就要發(fā)生中斷, 先把過程a窗口保存到存儲器中,把swp向前推進(jìn)一個窗口,然后再調(diào)用過程f。當(dāng)從過程f返回時,則cwp每次返回一個窗口, 一直退回到過程b。要返回到過程a,這時cwp又同swp相等, 再一次發(fā)生中斷, 把過程a的窗口從存儲器中取回寄存器,然后再

溫馨提示

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

評論

0/150

提交評論