專利名稱:采用虛擬寄存器結(jié)構(gòu)設(shè)計(jì)java處理機(jī)的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及設(shè)計(jì)JAVA處理機(jī)結(jié)構(gòu)的新方法。
應(yīng)用的需求推動(dòng)了計(jì)算機(jī)性能的提高,計(jì)算機(jī)的性能是由核心部分,即處理機(jī)性能決定的。
由于微電子大規(guī)模集成電路VLSI的發(fā)展,VLSI芯片上電路的工作速度越來愈快,而芯片與芯片之間的工作速度要慢到5倍到10倍,用技術(shù)術(shù)語來說,片上(On-chip)的頻寬很高,而片外(Off-chip)頻寬較低。因此,現(xiàn)代新型處理機(jī)的設(shè)計(jì)都要充分利用On-chip頻寬,才能使處理機(jī)速度(性能)充分提高,而寄存器堆是做在片上(On-chip)的,主存是在處理機(jī)芯片以外的,所以,最新處理機(jī)的設(shè)計(jì)要充分發(fā)揮寄存器與寄存器之間互相操作的指令,盡管減少處理機(jī)(有時(shí)處理機(jī)即為CPU)與主存之間的操作指令。(然而,由于高速緩存Cache是做在芯片上的,所以CPU與Cache之間的操作也相當(dāng)快)。現(xiàn)代處理機(jī)RISC設(shè)計(jì)就基于上述思想,CISC設(shè)計(jì)也往這方面轉(zhuǎn)變。
正是由于上述技術(shù)的驅(qū)動(dòng),現(xiàn)代計(jì)算機(jī)研究十分重視寄存器堆的設(shè)計(jì)。然而,所謂要充分發(fā)揮寄存器-寄存器操作,并不是說要把處理機(jī)芯片上寄存器堆的寄存器數(shù)量做得愈多就愈好,寄存器數(shù)愈多,也會(huì)造成如下缺點(diǎn)(1)寄存器數(shù)太多,在發(fā)生文本切換(Context Switching)而要保存現(xiàn)場和恢復(fù)現(xiàn)場時(shí),保存和恢復(fù)的寄存器數(shù)太多,從而使開銷增加,但在一般情況下,寄存器堆太大(即其中包含寄存器數(shù)太多)有時(shí)又用不完,形成浪費(fèi)。
(2)寄存器數(shù)太多,工藝制造上會(huì)增加復(fù)雜性和成本。
因此,目前大多數(shù)新型RISC處理機(jī)中設(shè)計(jì)的寄存器堆中的通用寄存器數(shù)為32個(gè),稱之為物理寄存器,如
圖1所示。每個(gè)物理寄存器都有標(biāo)號(hào),R0,R1,…R31。
然而,物理寄存器又會(huì)引起其它的缺點(diǎn),即在以流水線方式執(zhí)行指令時(shí),尤其是在編譯時(shí),有時(shí)會(huì)發(fā)生兩個(gè)或兩個(gè)以上的中間結(jié)果,指向同一個(gè)物理寄存器的情況,從而會(huì)引起寄存器的相關(guān)性,但這種相關(guān)性有時(shí)是一種偽相關(guān)性,只要寄存器數(shù)量較多,這種偽相關(guān)性就沒有了,如下面一個(gè)例子就可能產(chǎn)生偽相關(guān)性。
①x=R1+R2②y=R3+R4③m=(x-y)+R10在編譯或執(zhí)行指令時(shí),就有可能把(R1+R2)的中間結(jié)果暫時(shí)存放在R5中,而(R3+R4)的中間結(jié)果也暫存在R5中,這就發(fā)生了相關(guān)性,而①與②有相關(guān)性,而③暫無法執(zhí)下去,如圖2所示。
發(fā)生相關(guān)性,就會(huì)影響到指令流以流水線方式高效率地并發(fā)地執(zhí)行下去,在新型的多發(fā)射結(jié)構(gòu)處理機(jī)(即在一個(gè)周期中,同時(shí)取出多條指令,要求并發(fā)地執(zhí)行多條指令)中,這種相關(guān)性的可能性愈大,而相關(guān)性(不論是真是偽)對(duì)處理機(jī)性能的影響也愈大,編譯優(yōu)化可解決一些相關(guān)性,但那也有一定的代價(jià)。
用技術(shù)術(shù)語來說,相關(guān)性會(huì)降低指令級(jí)的并行性ILP,而提高ILP是國際上當(dāng)前研究提高處理機(jī)性能的極其重要的研究方向。
國際上互聯(lián)網(wǎng)絡(luò)(Internet)發(fā)展很快,SUN公司提出的JAVA語言具有不依附于任何特定的操作系統(tǒng)和特定硬件平臺(tái)的優(yōu)點(diǎn);因此,執(zhí)行JAVA語言的JAVA處理機(jī)作為Internet的網(wǎng)絡(luò)終端具有十分光明的發(fā)展前途,(網(wǎng)絡(luò)終端又稱網(wǎng)絡(luò)計(jì)算機(jī)NC或網(wǎng)絡(luò)PC,NetPC)。為了打破INTEL和MICROSOFT(微軟)結(jié)盟WINTEL軟/硬件平臺(tái)的壟斷,IBM,DEC等大計(jì)算機(jī)公司都極力支持JAVA,從而使JAVA意義更加重要。
用其它處理機(jī)來仿真執(zhí)行JAVA語言是可以的,但其效率要比直接執(zhí)行的JAVA處理機(jī)要低得多,JAVA處理機(jī)芯片目前尚未大批量銷售問世,但JAVA處理機(jī)和其設(shè)計(jì)已成為世人注目的焦點(diǎn),1996年底,美國雜志上登載了JAVA處理機(jī)的主要結(jié)構(gòu)。
執(zhí)行JAVA高級(jí)語言的JAVA處理機(jī)是面向堆棧的結(jié)構(gòu),所以JAVA處理機(jī)的核心是設(shè)計(jì)有一個(gè)64個(gè)寄存器(32位)組成的JAVA堆棧,具有64個(gè)入口,其中存放Method1,2或3的內(nèi)容,如圖3所示。所謂Method,實(shí)際上和一般了解的過程相當(dāng),Method的內(nèi)容包括存放的參數(shù)和局部變量,Method,F(xiàn)rame狀態(tài),以及堆棧操作數(shù)內(nèi)容,所以每一個(gè)Method要占用很多寄存器數(shù),因此,在發(fā)生Method調(diào)用(類似過程調(diào)用)時(shí),就有可能發(fā)生64個(gè)寄存器堆棧不夠用的情況,但是,JAVA堆棧的寄存器堆也不能做得太大,其原因在本說明書第一部分中闡述的寄存器堆大小的討論完全一樣。因此,JAVA的發(fā)明者SUN公司是如圖4所示的方法技術(shù)來解決Method調(diào)用所發(fā)生的堆棧不夠用的問題的。
當(dāng)Method A已占用64個(gè)寄存器JAVA堆棧41的一大部分,如圖4(1)中用斜線表示,當(dāng)MethodA加上Method B所用的寄存器總數(shù)已超過JAVA堆棧41的容量,超出的部分43用虛線表示。SUN公司是用另外設(shè)計(jì)一個(gè)暫存的寄存器堆42來解決此問題的,其方法如下先做(a)步,即把JAVA堆棧41中Method A所占的寄存器內(nèi)容“騰空”出來,即把它們暫時(shí)挪動(dòng)到暫存的寄存器堆中42去;然后做(b)步,把所調(diào)用的Method B內(nèi)容中所超出JAVA堆棧41的寄存器43(虛線)內(nèi)容放到Method A所“騰空”出的位置中去。最后走(c)步,即等到MethodB執(zhí)行完畢以后,B的內(nèi)容都已清零;再把暫存的寄存器堆中所保存的Method A的部分內(nèi)容,再放回到JAVA堆棧41中原來“騰空”的寄存器中,恢復(fù)Method A的內(nèi)容,以便從Method A的主程序再繼續(xù)執(zhí)行下去。
美國SUN公司JAVA處理機(jī)設(shè)計(jì)技術(shù)的特點(diǎn)
(I)目前圖4所示的例子是MethodA調(diào)用Method B,程序設(shè)計(jì)中十分可能產(chǎn)生的情況是Method A調(diào)用Method B,Method B還調(diào)用C,C還調(diào)用D,...這就是所謂嵌套,嵌套的深度為多少級(jí)是隨機(jī)的,是無法預(yù)測的,在發(fā)生多級(jí)嵌套時(shí),不能馬上恢復(fù)A,而是必須從底層逐漸向高層恢復(fù)。在這種情況下,在調(diào)用過程中所需的寄存器數(shù),會(huì)大大超過JAVA堆棧所設(shè)計(jì)的64個(gè)寄存器,而這些超出JAVA堆棧所需的大量寄存器數(shù)都必須把其內(nèi)容“積壓”在暫存的寄存器堆中而不得很快恢復(fù)。因此,這個(gè)暫存的寄存器堆必須設(shè)計(jì)得很大,甚至“喧賓奪主”,還要遠(yuǎn)大于JAVA處理機(jī)的核心—JAVA堆棧。
可是,在一般嵌套深度很小的情況工作時(shí),太大的暫存的寄存器堆又形同“虛設(shè)”,是一種浪費(fèi)。
(II)從圖4可知,美國SUN公司公布的JAVA處理機(jī)之所以會(huì)產(chǎn)生要用暫存的寄存器堆,根本原因是由于JAVA堆棧太小,只有64個(gè)寄存器,因此在發(fā)生Method A調(diào)用Method B時(shí),就已經(jīng)顯得不夠,所以要設(shè)計(jì)出“很難設(shè)計(jì)的”暫存的寄存器堆,并且采用“拆東墻,補(bǔ)西墻”的方法去“交換”(Swapping)和恢復(fù)(Recovering),這一段“拆補(bǔ)”過程還要耗費(fèi)很大的時(shí)間開銷。當(dāng)然,由前述可知,JAVA堆棧做得太大,又會(huì)產(chǎn)生很多缺點(diǎn)。
因此,為什么不能把JAVA堆棧做成可變長度的寄存器堆,而且它最大長度可以幾乎沒有限制,從而在嵌套深度很深時(shí),仍然可以滿足寄存器數(shù)的需要,這樣從“源頭”上消除了“拆東墻,補(bǔ)西墻”的起因,可以不必另外設(shè)計(jì)一個(gè)暫存的寄存器堆。而本發(fā)明提出的“虛擬寄存器結(jié)構(gòu)”正好滿足這樣的需要。
本發(fā)明的目的在于為克服已有的JAVA處理機(jī)結(jié)構(gòu)的不足之處,提出用虛擬寄存器結(jié)構(gòu)設(shè)計(jì)JAVA處理機(jī)的新方法,不但可以省去“很難設(shè)計(jì)的”暫存寄存器堆棧,而且可在有限長度的物理寄存器堆棧中進(jìn)行大容量的方法(即Method)調(diào)用時(shí)消除偽相關(guān)性,并節(jié)省時(shí)間開銷和簡化邏輯。
本發(fā)明提出一種設(shè)計(jì)JAVA處理機(jī)結(jié)構(gòu)的方法,包括在JAVA處理機(jī)芯片上設(shè)置由多個(gè)物理寄存器組成的物理寄存器堆棧和高速緩存器,其特征在于在所說的高速緩存器中構(gòu)造由可變長度的虛擬寄存器組成的虛擬寄存器堆棧,該虛擬堆棧提供長度不受限制的邏輯地址空間;用所說的虛擬寄存器進(jìn)行方法調(diào)用操作,調(diào)用完畢再將最后結(jié)果映象到所說的物理寄存器堆棧中去;該映象過程是采用快速換名表實(shí)現(xiàn)的,該換名表包括虛擬寄存器特征、虛擬寄存器生命計(jì)數(shù)值和虛擬寄存器號(hào)與三個(gè)位域以及數(shù)十個(gè)以上的入口。
本發(fā)明提出的另一種設(shè)計(jì)JAVA處理機(jī)結(jié)構(gòu)的方法,包括在JAVA處理機(jī)芯片上設(shè)置由多個(gè)物理寄存器組成的物理寄存器堆棧和高速緩存器,其特征在于在所說的高速緩存器中構(gòu)造由可變長度的虛擬寄存器組成折虛擬寄存器堆棧,該虛擬堆棧提供長度不受限制的邏輯地址空間;用所說的物理寄存器進(jìn)行方法調(diào)用操作,當(dāng)該物理寄存器容量不夠時(shí),將多余部分暫存于所說的虛擬寄存器堆棧中去,調(diào)用完畢則可一次地或分批地映象到所說的物理寄存器堆棧中去;該映象過程是采用快速換名表實(shí)現(xiàn)的,該換名表包括虛擬寄存器特征、虛擬寄存器生命計(jì)數(shù)值和虛擬寄存器號(hào)與三個(gè)位域以及數(shù)十個(gè)以上的入口。
本發(fā)明所述的虛擬寄存器結(jié)構(gòu)工作原理現(xiàn)代新型處理機(jī)對(duì)于編譯優(yōu)化和指令調(diào)度都十分重視,本發(fā)明所采用的虛擬寄存器是沿用了這一新技術(shù)趨勢,即在程序經(jīng)過編譯及優(yōu)化最后產(chǎn)生執(zhí)行碼的中間,產(chǎn)生一個(gè)中間代碼,見圖5,程序在經(jīng)過編譯器以后,先產(chǎn)生中間代碼,在產(chǎn)生中間代碼階段,為變量分配的是按邏輯地址的虛擬寄存器,而不是物理寄存器,然后,再經(jīng)過編譯優(yōu)化和指令調(diào)度器。
在這一階段,才把虛擬寄存器61映射(分配)到物理寄存器中去見圖6。實(shí)際上可把每一個(gè)虛擬寄存器61看成是一個(gè)抽象變量,而且這個(gè)虛擬寄存器堆的長度可以比物理寄存器堆62長,可以可變長度而不受限制(實(shí)際上應(yīng)用所需對(duì)長度不超過200個(gè))。在編譯化階段,虛擬寄存器再映射到具有物理編號(hào)的物理寄存器中,這時(shí),一些寄存器相關(guān)性和偽相關(guān)性就可以消除了,計(jì)算的兩個(gè)中間結(jié)果指向同一個(gè)寄存器的可能性就沒有了。
虛擬寄存器堆實(shí)際上是存放在片上的Cache中,現(xiàn)有的處理機(jī)的片上Cache一般在4KB以上,所以遠(yuǎn)遠(yuǎn)超過虛擬寄存器最大數(shù)量200個(gè)所需的要求。而且,Cache一行讀出一般可達(dá)4個(gè)字的寬度,況且,物理寄存器堆和Cache都是在片上的,所以映射(Mapping)的工作速度可以很快,如果專門設(shè)計(jì)采用虛擬寄存器結(jié)構(gòu)的片上Cache,其容量可遠(yuǎn)小于4KB或8KB,共映射工作速度可以更快。
本發(fā)明設(shè)計(jì)的采用虛擬寄存器結(jié)構(gòu)的映射機(jī)制如圖7所示。
該映象過程是采用快速換名表71實(shí)現(xiàn)的,該換名包括虛擬寄存器特征711,虛擬寄存器生命計(jì)數(shù)值712,虛擬寄存器號(hào)713與三個(gè)領(lǐng)域以及數(shù)十個(gè)以上的入口,虛擬堆棧提供長度不受限制的邏輯地址空間,用虛擬寄存器進(jìn)行方法調(diào)用操作,調(diào)用完畢再將最后結(jié)果映象到所說的物理寄存器堆棧72中去,物理寄存器堆棧包括標(biāo)志721與內(nèi)容722。
圖7中,特征值可以記下一些虛擬寄存器使用歷史的記錄,如它已被前面使用過,或它不能再被他人使用等等。虛擬寄存器生命計(jì)數(shù)值用來登記在映象過程中的映象時(shí)間關(guān)系。這些都是在編譯優(yōu)化和指令調(diào)度時(shí)的重要參考數(shù)據(jù),因此這是編譯優(yōu)化和指令調(diào)度技術(shù),其詳細(xì)細(xì)節(jié)不在本項(xiàng)專利申請(qǐng)范圍以內(nèi)。
本發(fā)明具有如下特點(diǎn)(1)本發(fā)明提出的虛擬寄存器技術(shù),是用片上的寄存器堆與片上的高速緩存Cache進(jìn)行交換,使用戶看到的是一個(gè)抽象的、長度可變的虛擬寄存器堆,它與虛擬存儲(chǔ)器的根本不同之處在于(I)虛擬寄存器的根本目標(biāo),是提高指令執(zhí)行的并行性ILP(如第一部分所述的消除寄存器相關(guān)性和偽相關(guān)性等等),而不是虛擬存儲(chǔ)器的擴(kuò)大用戶編程地址空間。
(II)虛擬寄存器是用戶編程時(shí)看不到的,這是在編譯時(shí)使用的,而且可大大促使編譯優(yōu)化技術(shù)。
(III)虛擬寄存器是靠片上的寄存器堆與片上的Cache交換來實(shí)現(xiàn)的,這兩者都在片上,所以其工作速度是在同一個(gè)數(shù)量級(jí),當(dāng)VLSI技術(shù)進(jìn)展,片上頻寬增高,交換速度也隨之正比增加,而虛擬存儲(chǔ)器是靠主存與外存磁盤存儲(chǔ)器交換來實(shí)現(xiàn)的,主存已經(jīng)比寄存器與Cache的芯片慢一個(gè)數(shù)量級(jí),而且磁盤是以毫秒(ms)級(jí)速度工作,比CPU速度慢十萬倍、百萬倍。(CPU工作周期<10毫微秒)。交換所損失的時(shí)間開銷巨大得不能相比,此外,這種時(shí)間損失還受到系統(tǒng)總線等頻寬限制,受限因素太多。
(IV)物理寄存器堆中寄存器數(shù)只有32個(gè),尋址長度只有7位,據(jù)本發(fā)明人實(shí)驗(yàn)分析,所需求的虛擬寄存器數(shù)最大值不過100~200個(gè)。(對(duì)于絕大多數(shù)程序而言),而物理存儲(chǔ)器容量在幾百萬個(gè)單元,而且要跨過系統(tǒng)總線與I/O設(shè)備與磁盤相交換,所以虛擬寄存器結(jié)構(gòu)的控制邏輯,要比虛擬存儲(chǔ)器的控制邏輯簡單得多,實(shí)現(xiàn)要簡易得多。
(2)本發(fā)明的第一個(gè)內(nèi)容就是用虛擬寄存器結(jié)構(gòu)取代JAVA堆棧作用(堆棧實(shí)際上是物理寄存器堆,內(nèi)有64個(gè)物理寄存器),從而可以避免在Method調(diào)用時(shí),因物理寄存器數(shù)不夠時(shí),要用另外設(shè)計(jì)的暫存的寄存器堆來暫時(shí)存放和恢復(fù)。(我們俗稱為“拆東墻,補(bǔ)西墻)。由虛擬寄存器結(jié)構(gòu)構(gòu)成的JAVA堆棧,我們稱之為JAVA虛擬堆棧,最后再映象到物理的JAVA堆?;蚱渌锢砑拇嫫鞫?。
(3)本發(fā)明的另一內(nèi)容是把虛擬寄存器結(jié)構(gòu)取代很難設(shè)計(jì)的“暫存的寄存器堆”(美國SUN公司稱之為“Dnibbler)。假如SUN公司認(rèn)為其JAVA堆棧是不容許更換的話。
附圖簡要說明圖1為通用(物理)寄存器堆棧結(jié)構(gòu)示意圖。
圖2為用適用寄存器堆棧產(chǎn)生偽相關(guān)性示意圖。
圖3為已有的JAVA物理堆棧結(jié)構(gòu)示意圖。
圖4為已有的JAVA物理堆棧方法調(diào)用示意圖。
圖5為本發(fā)明虛擬寄存器結(jié)構(gòu)工作原理示意圖。
圖6為本發(fā)明虛擬寄存器堆映象到物理寄存器堆的工作原理圖。
圖7為本發(fā)明虛擬寄存器的映象機(jī)制原理圖。
圖8為本發(fā)明用虛擬寄存器構(gòu)造JAVA處理機(jī)的實(shí)施例之一原理圖。
圖9為實(shí)施例一的方法調(diào)用程序圖。
圖10為本發(fā)明用虛擬寄存器構(gòu)造JAVA處理機(jī)的實(shí)施例之二原理圖。
本發(fā)明用虛擬寄存器構(gòu)造JAVA處理機(jī)的方法的實(shí)施例一,如圖8所示。
本實(shí)施例用虛擬寄存器結(jié)構(gòu)取代JAVA堆棧,形成虛擬堆棧,及其執(zhí)行Method調(diào)用(多級(jí)嵌套)技術(shù)。
圖8中,JAVA的用戶程序先遇到的是由虛擬寄存器堆組成的JAVA虛擬堆棧81,堆棧中使用邏輯地址指針,這個(gè)虛擬堆棧中的虛擬寄存器數(shù)是不受限制而且是可變長度的。實(shí)際上,這些虛擬寄存器堆,正如前面介紹虛擬寄存器結(jié)構(gòu)時(shí)所說的,是保存在JAVA處理機(jī)芯片上的Cache內(nèi)的。
由于虛擬寄存器數(shù)不受限制,所以在發(fā)生Method調(diào)用時(shí),如Method A調(diào)用Method B,而Method B又調(diào)用Method C這樣的多級(jí)嵌套調(diào)用時(shí),JAVA處理機(jī)芯片的Cache可以提供出足夠多的虛擬寄存器數(shù),滿足需求,而不必去暫時(shí)存放在暫存的寄存器堆中,然后再恢復(fù)的操作(即“拆東墻,補(bǔ)西墻)。從用戶程序看來,虛擬堆棧81提供的邏輯地址空間遠(yuǎn)遠(yuǎn)大于物理上JAVA堆棧82的64個(gè)寄存器地址空間,而在嵌套調(diào)用結(jié)束,最后通過虛擬寄存器映象機(jī)制,映象到物理寄存器堆82中,或者稱JAVA堆棧中。由于這時(shí)嵌套調(diào)用結(jié)束,真正需要映象到物理寄存器堆或稱JAVA堆棧中去的內(nèi)容,只是那些在回到主程序時(shí)所需要用到的Method A中的那些寄存器的內(nèi)容,如圖9所示。這些Method A中的寄存器數(shù)較少,所以映象是很簡單的,由此也可以看出,本實(shí)施例有很多優(yōu)點(diǎn),它完全可以避免使用美國SUN公司公布的JAVA堆棧中使用暫存的寄存器堆,并使其暫存和恢復(fù)(拆東墻,補(bǔ)西墻)的操作成為不必要。
本發(fā)明用虛擬寄存器構(gòu)造JAVA處理機(jī)方法實(shí)施例2,如圖10所示。
本實(shí)施例是在保留美國公布的JAVA處理機(jī)的結(jié)構(gòu)中的JAVA堆棧101不動(dòng),而是用本發(fā)明提出的虛擬寄存器102結(jié)構(gòu)去代替美國JAVA結(jié)構(gòu)中的暫存的寄存器堆(Dribbler)。
圖10中,美國公布的JAVA堆棧101保存不動(dòng),但在發(fā)生Method調(diào)用時(shí),Method A斜線表示部分A,要調(diào)用Method B,JAVA堆棧中的64個(gè)物理寄存器已經(jīng)不夠使用,即可把Method B所需的“不夠”部分虛線表示部分B的寄存器放入我們提的虛擬寄存器堆中去,而不必放入美國公布的JAVA結(jié)構(gòu)中的暫存的寄存器堆(Dribler)中去。如果又發(fā)生Method B調(diào)用Method C,則Method C所需的寄存器數(shù)也放入虛擬寄存器堆中去,如此類推,可以一起多級(jí)嵌套調(diào)用JAVA結(jié)構(gòu)中專門設(shè)置的暫存的寄存器堆(Dribbler)本身數(shù)量不夠的情況。
等到多級(jí)嵌套調(diào)用執(zhí)行完畢,虛擬寄存器堆中剩下的有用的寄存器可以十分簡單地通過虛擬寄存器映象機(jī)制映象到物理的JAVA堆棧中去。如果這時(shí)只剩下Method A的寄存器有用,則只需一對(duì)一地映象到JAVA堆棧中去,如剩下的Method A所需的寄存器數(shù)大于JAVA堆棧物理寄存器數(shù),或者剩下需要返回主程序時(shí)還需要其他一些更多的寄存器參數(shù),則可以分兩次映象到JAVA堆棧中去。
這種方法的優(yōu)點(diǎn)實(shí)際上是提供了一個(gè)長度不受限制,而且根據(jù)程序執(zhí)行過程中調(diào)用情況不同而長度可變的一個(gè)暫存的寄存器堆(Dribbler)。
權(quán)利要求
1.設(shè)計(jì)JAVA處理機(jī)結(jié)構(gòu)的方法,包括在JAVA處理機(jī)芯片上設(shè)置由多個(gè)物理寄存器組成的物理寄存器堆棧和高速緩存器,其特征在于在所說的高速緩存器中構(gòu)造由可變長度的虛擬寄存器組成的虛擬寄存器堆棧,該虛擬堆棧提供長度不受限制的邏輯地址空間;用所說的虛擬寄存器進(jìn)行方法調(diào)用操作,調(diào)用完畢再將最后結(jié)果映象到所說的物理寄存器堆棧中去;該映象過程是采用快速換名表實(shí)現(xiàn)的,該換名表包括虛擬寄存器特征、虛擬寄存器生命計(jì)數(shù)值和虛擬寄存器號(hào)與三個(gè)位域以及數(shù)十個(gè)以上的入口。
2.設(shè)計(jì)JAVA處理機(jī)結(jié)構(gòu)的方法,包括在JAVA處理機(jī)芯片上設(shè)置由多個(gè)物理寄存器組成的物理寄存器堆棧和高速緩存器,其特征在于在所說的速緩緩存器中構(gòu)造由可變長度的虛擬寄存器組成的虛擬寄存器堆棧,該虛擬堆棧提供長度不受限制的邏輯地址空間;用所說的物理寄存器進(jìn)行方法調(diào)用操作,當(dāng)該物理寄存器容量不夠時(shí),將多余部分暫存于所說的虛擬寄存器堆棧中去,調(diào)用完畢則可一次地或分批地映象到所說的物理寄存器堆棧中去;該映象過程是采用快速換名表實(shí)現(xiàn)的,該換名表包括虛擬寄存器特征、虛擬寄存器生命計(jì)數(shù)值和虛擬寄存器號(hào)與三個(gè)位域以及數(shù)十個(gè)以上的入口。
全文摘要
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,本發(fā)明包括在JAVA處理機(jī)芯片上設(shè)置由多個(gè)物理寄存器組成的物理寄存器堆棧和高速緩存器,其特點(diǎn)是在高速緩存器中構(gòu)造虛擬寄存器堆棧,提供長度不受限制的邏輯地址空間;用虛擬寄存器進(jìn)行方法調(diào)用操作,或作為暫存寄存器堆,再將最后結(jié)果映象到所說的物理寄存器堆棧中去。本發(fā)明不但可以省去物理暫存寄存器堆棧,而且可在進(jìn)行大容量的方法調(diào)用時(shí)消除偽相關(guān)性,并節(jié)省時(shí)間開銷和簡化邏輯。
文檔編號(hào)G06F12/08GK1164706SQ9710414
公開日1997年11月12日 申請(qǐng)日期1997年4月25日 優(yōu)先權(quán)日1997年4月25日
發(fā)明者李三立 申請(qǐng)人:清華大學(xué)