專利名稱:地址轉(zhuǎn)換器和地址轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及地址轉(zhuǎn)換器和地址轉(zhuǎn)換方法,更具體地說,涉及用于將虛擬地址轉(zhuǎn)換成真實地址的地址轉(zhuǎn)換器和地址轉(zhuǎn)換方法。
背景技術(shù):
由于近來資源量的增加,各種系統(tǒng)對大的真實地址空間的需求增加了,需要更靈活和更便宜的地址轉(zhuǎn)換器。對于地址轉(zhuǎn)換器來說,虛擬存儲器方案將程序指定的虛擬地址轉(zhuǎn)換為向真實存儲器顯示的真實地址,該方案極大地減小了對存儲空間的限制。
一些采用所述虛擬存儲器方案的傳統(tǒng)的地址轉(zhuǎn)換器具有根據(jù)管理員模式或用戶模式而切換的地址轉(zhuǎn)換緩沖器。用于管理員模式的地址轉(zhuǎn)換緩沖器不需要保留進(jìn)程號,因此節(jié)省了存儲器資源(例如參照日本未審查專利公布號6-52058(第 - 段,圖1))。
現(xiàn)在更多的提供實時處理的系統(tǒng)以混合方法運行多種操作系統(tǒng)(OS)。
發(fā)明內(nèi)容
本發(fā)明提供用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器。該地址轉(zhuǎn)換器包括用于基于處理器運行的多種操作系統(tǒng)來對所述虛擬地址和所述真實地址進(jìn)行分類和存儲的多個地址轉(zhuǎn)換緩沖器,以及用于根據(jù)正在運行的操作系統(tǒng),訪問一個地址轉(zhuǎn)換緩沖器來將所述虛擬地址轉(zhuǎn)換為所述真實地址的地址轉(zhuǎn)換控制器。
而且,本發(fā)明提供一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換方法,其根據(jù)正在運行的操作系統(tǒng),通過訪問用于基于處理器運行的多種操作系統(tǒng)將所述虛擬地址和所述真實地址進(jìn)行分類和存儲的地址轉(zhuǎn)換緩沖器中的一個,將所述虛擬地址轉(zhuǎn)換為所述真實地址。
通過下面的描述,結(jié)合通過舉例的方法而圖示本發(fā)明的優(yōu)選實施例的附圖,本發(fā)明的上述和其它特性和優(yōu)點將會很明顯。
圖1是本發(fā)明的地址轉(zhuǎn)換器的原理圖;圖2根據(jù)第一實施例,示出了微處理器的硬件結(jié)構(gòu)的例子;圖3示出了核心的硬件結(jié)構(gòu)的例子;圖4示出了緩存單元的硬件結(jié)構(gòu)的例子;圖5示出了ITRON和Linux的存儲器映射;圖6示出了向OS分配地址映射寄存器(AMR)和轉(zhuǎn)換參考緩沖器(Translation Look-aside Buffer,TLB);圖7是根據(jù)第一實施例的存儲器管理單元(MMU)的功能性方框圖;圖8是根據(jù)第二實施例的MMU的功能性方框圖;圖9解釋了真實地址輸出中的操作;圖10是根據(jù)第三實施例的MMU的功能性方框圖;圖11示出了AMR的存儲器映射;圖12是根據(jù)第四實施例的MMU的功能性方框圖;圖13根據(jù)第五實施例,示出了向MMU發(fā)射的命令。
具體實施例方式
如在背景技術(shù)的描述中所陳述的那樣,因為例如由于地址緩沖器的內(nèi)容可能改變而導(dǎo)致OS不使用相同的地址映射,所以,以混合方式運行多種OS的系統(tǒng)會由于算法和控制電路而出現(xiàn)高負(fù)載的問題。
另外,由于高的系統(tǒng)負(fù)載,這種系統(tǒng)會因為在OS之間的切換中發(fā)生的長延遲而出現(xiàn)開銷問題。
出于對前面所述內(nèi)容的考慮而提出本發(fā)明,并將提供能夠減小系統(tǒng)負(fù)載和在OS之間切換的開銷的地址轉(zhuǎn)換器和地址轉(zhuǎn)換方法。
現(xiàn)在參照圖1詳細(xì)描述本發(fā)明的原理。
參照該圖,本發(fā)明的地址轉(zhuǎn)換器具有地址轉(zhuǎn)換緩沖器1a和1b,以及地址轉(zhuǎn)換控制器2。
基于處理器運行的多種操作系統(tǒng),地址轉(zhuǎn)換緩沖器1a和1b將虛擬地址和真實地址分類并保存。例如,地址轉(zhuǎn)換緩沖器1a存儲對應(yīng)于操作系統(tǒng)OS1的虛擬地址和真實地址,而地址轉(zhuǎn)換緩沖器1b存儲對應(yīng)于操作系統(tǒng)OS2的虛擬地址和真實地址。
地址轉(zhuǎn)換控制器2訪問地址轉(zhuǎn)換緩沖器1a、1b,以根據(jù)正在運行的操作系統(tǒng)OS1、OS2將虛擬地址轉(zhuǎn)換為真實地址。例如,當(dāng)處理器運行操作系統(tǒng)OS1時,地址轉(zhuǎn)換控制器2訪問地址轉(zhuǎn)換緩沖器1a以進(jìn)行“從虛擬到真實”的地址轉(zhuǎn)換。
由于當(dāng)操作系統(tǒng)切換時不需要改變地址轉(zhuǎn)換緩沖器1a和1b的內(nèi)容,因此可以減小系統(tǒng)負(fù)載。另外,可以減小在操作系統(tǒng)之間切換的開銷。
現(xiàn)在將詳細(xì)描述第一實施例。
圖2根據(jù)第一實施例,示出了微處理器的硬件結(jié)構(gòu)的例子。
參照該圖,微處理器11是單片半導(dǎo)體設(shè)備,其具有核心12、同步DRAM(SDRAM)控制器13、局域總線接口14、直接存儲器訪問控制器(DMAC)15、總線橋16、調(diào)試支持單元(DSU)17、時鐘復(fù)位電源控制(CRPC)18、定時器19、通用異步收發(fā)器(UART)20、因特網(wǎng)控制器(IRC)21和通用輸入/輸出(GPIO)22。核心12可以是算術(shù)邏輯單元(ALU)。SDRAM 23、ASIC引擎24和閃存25被連接到微處理器11。
核心12包括中央處理單元(CPU)和緩存單元。核心12的CPU根據(jù)例如存儲在SDRAM 23中的數(shù)據(jù)(包括程序)來控制每個單元。在控制操作中,CPU使用緩存單元來載入和存儲數(shù)據(jù)。
現(xiàn)在參照圖3來詳細(xì)描述核心12。
參照該圖,核心12包括緩存單元31、整型單元32和浮點單元33。整型單元32和浮點單元33是CPU的一部分,通過與緩存單元31交換數(shù)據(jù)來執(zhí)行整型運算和浮點運算。
緩存單元31具有指令緩存、地址轉(zhuǎn)換單元(存儲器管理單元)和數(shù)據(jù)緩存。存儲器管理單元使用虛擬地址方法來控制數(shù)據(jù)的地址轉(zhuǎn)換,所述數(shù)據(jù)在指令緩存或數(shù)據(jù)緩存與整型單元32或浮點單元33之間交換。注意指令緩存是用于存儲指令代碼的緩存,數(shù)據(jù)緩存是用于存儲數(shù)據(jù)的緩存。
參照圖4詳細(xì)描述緩存單元31。
參照該圖,緩存單元31具有存儲器管理單元(MMU)41、指令緩存46和數(shù)據(jù)緩存47。專用寄存器(SR)48被連接到MMU 41。SR 48可以被安裝在緩存單元31中,或外部附加到緩存單元31。
MMU 41具有MMU控制器42、指令地址映射寄存器(IAMR)43、數(shù)據(jù)地址映射寄存器(DAMR)44和轉(zhuǎn)換參考緩沖器(TLB)45。
SR 48具有硬件狀態(tài)寄存器(HSR)48a、指令地址映射有效寄存器(IAMVR)48b和數(shù)據(jù)地址映射有效寄存器(DAMVR)48c。
IAMR 43、DAMR 44和TLB 45存儲由程序指定的虛擬地址和向?qū)嶋H存儲器顯示的真實地址,兩種地址相互關(guān)聯(lián)。
IAMR 43和DAMR 44靜態(tài)存儲虛擬地址和真實地址。即,一旦一個虛擬地址和一個真實地址被程序存儲在IAMR 43或DAMR 44中,那么它們的對應(yīng)關(guān)系就固定了。
TLB 45動態(tài)存儲虛擬地址和真實地址。即,當(dāng)既不在緩存中也不在TLB中的新數(shù)據(jù)被另外寄存在指令緩存46或數(shù)據(jù)緩存47中時,最近最少使用的數(shù)據(jù)的虛擬地址和真實地址就從TLB 45中被取出。然后新數(shù)據(jù)的虛擬地址和真實地址被存儲在TLB 45中。
MMU控制器42通過訪問HSR 48來控制上述存儲部件。
注意,IAMR 43存儲對應(yīng)于指令編碼的虛擬地址和真實地址,DAMR44存儲對應(yīng)于數(shù)據(jù)的虛擬地址和真實地址。由于TLB 45動態(tài)地工作,所以它能夠處理大型數(shù)據(jù)。
微處理器11能夠以混合方式運行多種OS以執(zhí)行實時處理。例如,一般情況下Linux運行,當(dāng)需要實時處理(例如產(chǎn)生中斷)時,ITRON運行。在下面的描述中,微處理器11運行的Linux和ITRON作為OS。
ITRON使用的存儲區(qū)域比Linux的小得多。內(nèi)核使用了Linux的存儲區(qū)域的一小部分,用戶應(yīng)用使用了其中的一大部分。因此,MMU 41將靜態(tài)的IAMR 43和DAMR 44分配給ITRON和Linux內(nèi)核,將動態(tài)的TLB45分配給Linux用戶應(yīng)用。
圖5示出了對應(yīng)于ITRON和Linux的存儲器映射。
該圖示出了對應(yīng)于ITRON和Linux的虛擬空間。對應(yīng)于Linux的虛擬空間被分割為內(nèi)核區(qū)域51和用戶應(yīng)用區(qū)域52。內(nèi)核區(qū)域51具有Kmap區(qū)域和驅(qū)動器區(qū)域。對應(yīng)于ITRON的存儲空間比對應(yīng)于Linux的小得多。
圖6示出了向OS分配AMR和TLB。
如該圖所示,TLB被分配給Linux用戶應(yīng)用,而AMR被分配給Linux內(nèi)核和ITRON。
該圖中的TLB相應(yīng)于圖4的TLB 45,AMR相應(yīng)于IAMR 43和DAMR 44。為了簡化解釋,示出了AMR而沒有區(qū)分對應(yīng)于指令的AMR(IAMR 43)和對應(yīng)于數(shù)據(jù)的AMR(DAMR 44)。
現(xiàn)在參照圖7,描述根據(jù)第一實施例的MMU 41的功能。
參照該圖,MMU 41具有AMR 61和62、TLB 63和選擇器64。TLB63相應(yīng)于圖4的TLB 45。AMR 61和62相應(yīng)于圖4的IAMR 43和DAMR44,但是在示出的時候沒有區(qū)分對應(yīng)于指令和對應(yīng)于數(shù)據(jù)的AMR。
AMR 61存儲被ITRON使用的虛擬地址和真實地址。
AMR 62存儲被Linux內(nèi)核使用的虛擬地址和真實地址。
TLB 63存儲被Linux用戶應(yīng)用使用的虛擬地址和真實地址。
選擇器64根據(jù)OS從CPU接收控制信號,并基于所述控制信號,通過訪問AMR 61、62和/或TLB 63來選擇性地輸出從虛擬地址轉(zhuǎn)換得到的真實地址。
例如,在ITRON運行時,當(dāng)選擇器64從CPU接收到控制信號時,它通過訪問AMR 61,選擇性地輸出從虛擬地址轉(zhuǎn)換得到的真實地址。另一方面,在Linux運行時,當(dāng)選擇器64從CPU接收到控制信號時,它通過訪問AMR 62和TLB 63,選擇性地輸出從虛擬地址轉(zhuǎn)換得到的真實地址。即,選擇器64根據(jù)CPU所運行的OS來為“從虛擬到真實”的地址轉(zhuǎn)換選擇AMR 61、62和/或TLB 63??梢詮腃PU以外的控制設(shè)備輸出控制信號。
如圖6所示,Linux和ITRON都使用AMR。因此,如果只提供一個AMR,那么它們可能會互相干擾。為了避免干擾,AMR的內(nèi)容應(yīng)該根據(jù)正在運行的是Linux還是ITRON而改變。
本發(fā)明提供對應(yīng)于ITRON的AMR 61和對應(yīng)于Linux的AMR 62和TLB 63,以基于OS并響應(yīng)于控制信號來輸出轉(zhuǎn)換得到的真實地址。因此,AMR的內(nèi)容不必改變,其結(jié)果是減小了由于算法和控制電路而出現(xiàn)的系統(tǒng)負(fù)載。另外,AMR中的內(nèi)容不變可以減小處理中的開銷。
現(xiàn)在參照附圖詳細(xì)描述第二實施例。
第一實施例對于Linux內(nèi)核和ITRON使用不同的AMR。但是,第二實施例使用一個AMR并與第一實施例具有相同的效果。
圖8根據(jù)第二實施例,示出了MMU的功能性方框圖。
參照該圖,MMU具有AMR 71、TLB 72和選擇器73。TLB 72相應(yīng)于圖4的TLB 45。AMR 71相應(yīng)于圖4的IAMR 43和DAMR 44,但是在示出的時候沒有區(qū)分對應(yīng)于指令和對應(yīng)于數(shù)據(jù)的AMR。
AMR 71存儲由ITRON和Linux內(nèi)核使用的虛擬地址和真實地址。注意,每個虛擬/真實地址對都被指定了一個有效位71a,如該圖所示。有效位是表明該虛擬/真實地址對是屬于ITRON和Linux中哪一個的信息。例如,有效位0表明虛擬/真實地址對被Linux內(nèi)核使用,而有效位1表明虛擬/真實地址對被ITRON使用。
TLB 72存儲被Linux用戶應(yīng)用使用的虛擬地址和真實地址。
選擇器73基于有效位71a和HSR的內(nèi)容,選擇性地輸出使用AMR71和/或TLB 72從虛擬地址轉(zhuǎn)換得到的真實地址。HSR是例如圖4的HSR48a,其存儲關(guān)于正在運行的OS的信息。
基于有效位71a,選擇器73輸出使用AMR 71轉(zhuǎn)換得到的真實地址。例如,當(dāng)Linux運行時,選擇器73輸出有效位為0的轉(zhuǎn)換得到的真實地址。當(dāng)ITRON運行時,選擇器73輸出有效位為1的轉(zhuǎn)換得到的真實地址。
有效位71a與虛擬地址/真實地址相關(guān)聯(lián)地存儲在AMR 71中。但是,可以提供不同的寄存器(地址映射有效寄存器(AMVR))來存儲有效位。在這種情況下,選擇器73訪問AMVR以輸出真實地址。注意,圖4的IAMVR 48b和DAMVR 48c相應(yīng)于該AMVR。如果只為OS提供一個AMVR,那么在每次切換OS時,AMVR的內(nèi)容應(yīng)該被保存在例如RAM這樣的存儲設(shè)備中并從中恢復(fù)。
另外,根據(jù)HSR的內(nèi)容,選擇器73輸出使用TLB 72轉(zhuǎn)換得到的真實地址。例如,當(dāng)ITRON運行時,選擇器73不輸出來自TLB 72的真實地址。相反,當(dāng)Linux運行時,選擇器73輸出來自TLB 72的真實地址。換句話說,選擇器73根據(jù)HSR的內(nèi)容來使得來自TLB 72的輸出有效或無效。
圖9解釋了如何通過使用AMVR來輸出真實地址。
所示的HSR的EDAT是用于確定使TLB 72的真實地址有效或無效的信息。EDAT=ON表示Linux正在運行,因此選擇器73使得來自TLB 72的真實地址有效(ON)。另一方面,EDAT=OFF表示ITRON正在運行,因此選擇器73使得來自TLB 72的真實地址無效(OFF)。
選擇器73輸出AMR 71中相應(yīng)于存儲在AMVR中的位0的真實地址。例如,圖9所示的AMVR的最左邊的位相應(yīng)于圖8的AMR 71的最上面一行,而AMVR的最右邊的位相應(yīng)于AMR 71的最下面一行。當(dāng)AMVR指示011011011時,選擇器73輸出從圖8的AMR 71從上面數(shù)第一、第四和第七行的轉(zhuǎn)換得到的真實地址。在100100100的情況下,選擇器73輸出從圖8的AMR 71從上面數(shù)第二、第三、第五、第六、第八和第九行的轉(zhuǎn)換得到的真實地址。
簡而言之,選擇器73根據(jù)AMVR中設(shè)置的位來輸出對應(yīng)于Linux內(nèi)核或ITRON的真實地址。
如上所述,向每個虛擬/真實地址對指定有效位,并且使得TLB中的真實地址有效或無效。因此,AMR的內(nèi)容不是必須改變的,其結(jié)果是減小了由于算法和控制電路而出現(xiàn)的系統(tǒng)負(fù)載,也減小了處理中的開銷。另外,由于可以使得TLB的真實地址有效或無效,因此可以防止ITRON和Linux用戶應(yīng)用互相干擾。
TLB一般是組相聯(lián)RAM或全相聯(lián)RAM。組相聯(lián)RAM容易安裝,但只處理固定的頁大小。全相聯(lián)RAM能夠處理各種頁大小,但很難安裝并會增加電路規(guī)模。
因此,使用組相聯(lián)RAM作為TLB,使用全相聯(lián)RAM作為AMR。例如,圖7所示的MMU使用全相聯(lián)RAM作為AMR 61和62,使用組相聯(lián)RAM作為TLB 63。圖8所示的MMU使用全相聯(lián)RAM作為AMR 71,使用組相聯(lián)RAM作為TLB 72。
每個傳統(tǒng)的微處理器只運行一種OS,即使當(dāng)有兩個地址轉(zhuǎn)換緩沖器(例如AMR和TLB)可以使用時,對組相聯(lián)RAM和全相聯(lián)RAM的使用也是根據(jù)OS而固定的。即,當(dāng)微處理器工作時,對它們的使用不能改變。
根據(jù)本發(fā)明,為了運行兩種OS,微處理器關(guān)聯(lián)使用TLB(組相聯(lián))和AMR(全相聯(lián))來管理虛擬地址和真實地址,并根據(jù)正在運行的OS來適當(dāng)?shù)馗淖儗LB和AMR的使用。這可以減小OS間切換的開銷,并可以根據(jù)OS,通過使用組相聯(lián)和全相聯(lián)以及簡單便宜的MMU的硬件結(jié)構(gòu)來設(shè)置最優(yōu)狀態(tài)。
現(xiàn)在參照附圖詳細(xì)描述第三實施例。
在組相聯(lián)TLB的情況下,為了在TLB的一整行中存儲新的真實地址,真實地址輸入重寫最近最少使用的地址。如果這種重寫經(jīng)常發(fā)生,那么性能就會極大地惡化。作為避免性能惡化的有效技術(shù),提高TLB中每個組的行數(shù)。但是,該技術(shù)增大了電路規(guī)模和成本。
由于系統(tǒng)失效抖動現(xiàn)象更可能連續(xù)出現(xiàn),所以第三實施例提供防止性能惡化的技術(shù),其中,從TLB取出的固定頁的條目被存儲在全相聯(lián)AMR的一部分中,當(dāng)TLB已滿時,地址被直接寄存在AMR中。
圖10是根據(jù)第三實施例的MMU的功能性方框圖。
參照該圖,MMU具有TLB 81、AMR 82和選擇器83。
TLB 81是N路組相聯(lián)TLB,其被劃分為N行(N為整數(shù))。AMR 82是全相聯(lián)。
當(dāng)Linux發(fā)出寄存新虛擬地址的請求時,選擇器83確定TLB 81是否在相應(yīng)行有空閑空間。如果TLB 81沒有空閑空間,那么選擇器83將存儲最近最少使用的真實地址的行的數(shù)據(jù)移入AMR 82。然后選擇器83將所述新虛擬地址寄存在TLB 81的空閑空間中。可替換地,選擇器83可以將Linux的新虛擬地址直接寄存在AMR 82中。
如參照圖6所描述的那樣,AMR被分配給靜態(tài)ITRON和Linux內(nèi)核。因此,應(yīng)當(dāng)在AMR 82的靜態(tài)區(qū)域內(nèi)創(chuàng)建對應(yīng)于動態(tài)Linux用戶應(yīng)用的區(qū)域。
圖11示出了AMR的存儲器映射。
所示的存儲器映射84屬于AMR。存儲器映射84具有對應(yīng)于ITRON、Linux內(nèi)核和Linux用戶應(yīng)用的區(qū)域。因此,TLB中對應(yīng)于用戶應(yīng)用的數(shù)據(jù)可以被移入AMR中。
如上所述,從TLB中取出的固定頁的條目被保存在AMR的一部分中??商鎿Q地,當(dāng)TLB沒有空閑空間時,在AMR中進(jìn)行直接寄存。這可以減少抖動(thrashing)的出現(xiàn)。
由于這些技術(shù)可以實現(xiàn)這種減少,而不增加TLB中每個組的行數(shù),因此可以控制電路規(guī)模。
注意,甚至可以通過將從全相聯(lián)緩沖器(AMR)中取出的最近最少使用的數(shù)據(jù)存儲在組相聯(lián)緩沖器(TLB)中,從而減少抖動的出現(xiàn)。
接下來,參照附圖詳細(xì)描述第四實施例。
如圖11所示,AMR應(yīng)該被分配給動態(tài)Linux用戶應(yīng)用,以使Linux用戶應(yīng)用不與Linux內(nèi)核和ITRON互相干擾。換句話說,應(yīng)該進(jìn)行這種分配,以使CPU不會在運行ITRON時訪問對應(yīng)于Linux用戶應(yīng)用的區(qū)域,反過來CPU也不會在運行Linux時訪問對應(yīng)于ITRON的區(qū)域。
對于該分配來說,向每個虛擬/真實地址對給出條目信息,所述條目信息表明虛擬地址和真實地址是動態(tài)條目(對應(yīng)于Linux用戶應(yīng)用)還是靜態(tài)條目(對應(yīng)于Linux內(nèi)核或ITRON)。然后基于向虛擬/真實地址對給出的條目信息,根據(jù)OS來進(jìn)行地址轉(zhuǎn)換。
圖12是根據(jù)第四實施例的MMU的功能性方框圖。
參照該圖,MMU具有AMR 91和選擇器92。注意,TLB沒有示出。
AMR 91存儲被ITRON、Linux內(nèi)核和Linux用戶應(yīng)用所使用的虛擬地址和真實地址。注意,如該圖所示,向每個虛擬/真實地址對給出了條目信息。所述條目信息表明虛擬地址和真實地址是動態(tài)條目還是靜態(tài)條目。
例如,向被ITRON和Linux內(nèi)核使用的虛擬/真實地址對給出條目信息S,表明其為靜態(tài)條目。向被Linux用戶應(yīng)用使用的虛擬/真實地址對給出條目信息D,表明其為動態(tài)條目。注意,當(dāng)虛擬地址和真實地址被寄存在AMR 91中時,給出所述條目信息。
選擇器92基于條目信息,根據(jù)操作模式(當(dāng)ITRON運行時為靜態(tài)模式或當(dāng)Linux運行時為動態(tài)模式)。例如,在靜態(tài)模式中,選擇器92輸出從條目信息為S的虛擬地址轉(zhuǎn)換得到的真實地址。另一方面,在動態(tài)模式中,選擇器92輸出條目信息為D的真實地址。
另外,在選擇器92中,地址獲取優(yōu)先權(quán)在動態(tài)模式中被設(shè)置為從動態(tài)條目到靜態(tài)條目的順序。地址獲取優(yōu)先權(quán)在靜態(tài)模式中被設(shè)置為從靜態(tài)條目到動態(tài)條目的順序。這是因為,在動態(tài)條目和靜態(tài)條目使用相同的區(qū)域,并且兩個不同的真實地址對應(yīng)于相同的虛擬地址的情況下,當(dāng)發(fā)出將虛擬地址轉(zhuǎn)換為真實地址的請求時,所述兩個真實地址被獲取。為了避免這種狀況的發(fā)生,例如在動態(tài)模式中,先執(zhí)行基于動態(tài)條目的“從虛擬到真實”的地址轉(zhuǎn)換,如果相應(yīng)的真實地址不存在,那么執(zhí)行基于靜態(tài)條目的地址轉(zhuǎn)換。
如上所述,向每個虛擬/真實地址對給出說明是動態(tài)條目還是靜態(tài)條目的條目信息,并被存儲。然后,基于所述條目信息,根據(jù)操作模式輸出真實地址。這可以防止動態(tài)條目和靜態(tài)條目互相干擾。
另外,在Linux內(nèi)核區(qū)域的一部分中創(chuàng)建了Linux用戶區(qū)域(用戶應(yīng)用區(qū)域)。為了動態(tài)地改變該用戶區(qū)域,內(nèi)核區(qū)域被設(shè)置為用于靜態(tài)條目的區(qū)域,用戶區(qū)域被設(shè)置為用于動態(tài)條目的區(qū)域。然后,Linux中的獲取優(yōu)先權(quán)被設(shè)置為從動態(tài)條目到靜態(tài)條目的順序,于是從用戶區(qū)域到內(nèi)核區(qū)域地執(zhí)行獲取。另外,ITRON中的獲取優(yōu)先權(quán)被設(shè)置為從靜態(tài)條目到動態(tài)條目的順序,于是從內(nèi)核區(qū)域到用戶區(qū)域地執(zhí)行獲取。通過這樣做,可以很容易地設(shè)置靈活的地址轉(zhuǎn)換。
注意,組相聯(lián)中的動態(tài)條目由于固定的頁大小而被稱為固定條目,而全相聯(lián)中的靜態(tài)條目由于可變的頁大小而被稱為可變條目。
現(xiàn)在參照附圖詳細(xì)描述第五實施例。
如在第四實施例中描述的那樣,能夠同時執(zhí)行動態(tài)地址轉(zhuǎn)換和靜態(tài)地址轉(zhuǎn)換的地址轉(zhuǎn)換器非常靈活而且有成本效益。但是,為了訪問希望的動態(tài)條目或靜態(tài)條目的數(shù)據(jù),就需要改變操作模式。第五實施例提供了一種LRA命令,以在不考慮操作模式的情況下訪問希望的靜態(tài)條目或動態(tài)條目。另外,通過在虛擬地址=真實地址處使用多個位(頁內(nèi)(in-page)偏移位)來向CPU通報關(guān)于例如不能執(zhí)行地址轉(zhuǎn)換的情況的異常報告。
圖13根據(jù)第五實施例,示出了向MMU發(fā)射的命令。
如該圖所示,該命令被劃分為三個字段101、102和103。字段101表明能夠在不考慮操作模式的情況下進(jìn)行所希望的對動態(tài)條目和靜態(tài)條目的訪問的程序命令代碼(LRA)。字段102包含要被轉(zhuǎn)換的地址。字段103包括說明了操作模式的信息。另外,還設(shè)置了表明是否需要關(guān)于地址轉(zhuǎn)換能否執(zhí)行的報告的信息。注意,該圖中x、y、z是0或1。
以圖12的MMU為例,當(dāng)字段103包含S=0時,不為了地址轉(zhuǎn)換而搜索AMR 91的靜態(tài)條目。相反,當(dāng)S=1時,則為了地址轉(zhuǎn)換而搜索AMR 91的靜態(tài)條目。當(dāng)D=0時,不為了地址轉(zhuǎn)換而搜索AMR 91和TLB的動態(tài)條目。當(dāng)D=1時,則為了地址轉(zhuǎn)換而搜索AMR 91和TLB的動態(tài)條目。
于是,通過設(shè)置S,D=1,0,可以實現(xiàn)與靜態(tài)模式相同的操作。通過設(shè)置S,D=0,1,可以實現(xiàn)與動態(tài)模式相同的操作。通過設(shè)置S,D=1,1,不論操作模式如何,兩種條目都被搜索。
因此,不論操作模式如何,都可以訪問所希望的動態(tài)條目和靜態(tài)條目。
當(dāng)字段103表明E=0時,不向CPU發(fā)送異常報告。相反,當(dāng)E=1時,向CPU發(fā)送異常報告。例如,當(dāng)相應(yīng)于被請求轉(zhuǎn)換的虛擬地址的真實地址不存在時,那么當(dāng)E=0時不向CPU告知此事,或者當(dāng)E=1時向CPU告知此事。
傳統(tǒng)上,這種異常報告的發(fā)出與例如地址轉(zhuǎn)換的發(fā)出不同。因此,需要不同的操作來獲得異常報告和地址轉(zhuǎn)換的結(jié)果,而這會很麻煩。本發(fā)明為異常報告在虛擬地址=真實地址處使用多個位或頁內(nèi)偏移位,提供了使用上的方便。
例如,假設(shè)虛擬地址和真實地址都包括32個位。當(dāng)虛擬地址和真實地址的較低的16位相同時,該真實地址可以被較高的16位指定。在這種情況下,由于真實地址的較低的16位不具有指定地址的信息,因此該較低的16位被用于異常報告。這種通過以這種方式使用用于異常報告的頁內(nèi)偏移位來增加異常報告的做法提供了使用上的方便。
當(dāng)S,D=1,1時,如果動態(tài)條目和靜態(tài)條目互相匹配,那么具有較高優(yōu)先權(quán)的條目被地址轉(zhuǎn)換獲得。
本發(fā)明的地址轉(zhuǎn)換器通過操作系統(tǒng)將虛擬地址和真實地址在地址轉(zhuǎn)換緩沖器中分類并存儲,以根據(jù)正在運行的操作系統(tǒng)來執(zhí)行“從虛擬到真實”的地址轉(zhuǎn)換。因此,當(dāng)切換操作系統(tǒng)時不必改變地址轉(zhuǎn)換緩沖器的內(nèi)容,而這可以減小系統(tǒng)負(fù)載。另外還可以減小操作系統(tǒng)間切換的開銷。
前面應(yīng)該被認(rèn)為僅是對本發(fā)明原理的解釋。而且,由于很多修改和改變對于本領(lǐng)域的技術(shù)人員來說是顯而易見的,因此不應(yīng)當(dāng)將本發(fā)明限定為已經(jīng)示出和描述的嚴(yán)格的結(jié)構(gòu)和應(yīng)用,并且相應(yīng)地,所有適當(dāng)?shù)男薷募暗韧锟梢员徽J(rèn)為落在所附權(quán)利要求及其等同物的本發(fā)明的范圍中。
權(quán)利要求
1.一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器,包括多個地址轉(zhuǎn)換緩沖器,用于基于處理器運行的多種操作系統(tǒng)來對所述虛擬地址和所述真實地址進(jìn)行分類和存儲;以及地址轉(zhuǎn)換控制器,用于根據(jù)所述多種操作系統(tǒng)中的正在運行的操作系統(tǒng),通過訪問所述多個地址轉(zhuǎn)換緩沖器來將所述虛擬地址轉(zhuǎn)換為所述真實地址。
2.如權(quán)利要求1所述的地址轉(zhuǎn)換器,其中,對應(yīng)于所述多種操作系統(tǒng)提供所述多個地址轉(zhuǎn)換緩沖器,為對應(yīng)的所述多種操作系統(tǒng)存儲所述虛擬地址和所述真實地址。
3.如權(quán)利要求1所述的地址轉(zhuǎn)換器,其中,所述多個所述地址轉(zhuǎn)換緩沖器被一個地址轉(zhuǎn)換緩沖器代替,所述一個地址轉(zhuǎn)換緩沖器用于與多個標(biāo)識相關(guān)聯(lián)地存儲所述虛擬地址和所述真實地址,所述標(biāo)識的每一個都表明虛擬地址和真實地址屬于所述多種操作系統(tǒng)中的哪一種。
4.如權(quán)利要求3所述的地址轉(zhuǎn)換器,還包括用于為所述多種操作系統(tǒng)之一存儲所述虛擬地址和所述真實地址的單個地址轉(zhuǎn)換緩沖器。
5.如權(quán)利要求4所述的地址轉(zhuǎn)換器,其中,組相聯(lián)緩沖器被用作所述地址轉(zhuǎn)換緩沖器和所述單個地址轉(zhuǎn)換緩沖器中的一個,全相聯(lián)緩沖器被用作所述地址轉(zhuǎn)換緩沖器和所述單個地址轉(zhuǎn)換緩沖器中的另外一個。
6.如權(quán)利要求5所述的地址轉(zhuǎn)換器,其中,當(dāng)最近最少使用的數(shù)據(jù)從所述組相聯(lián)緩沖器中被取出時,所述最近最少使用的數(shù)據(jù)被保存在所述全相聯(lián)緩沖器中。
7.如權(quán)利要求3所述的地址轉(zhuǎn)換器,其中所述地址轉(zhuǎn)換緩沖器具有對應(yīng)于動態(tài)條目和對應(yīng)于靜態(tài)條目的區(qū)域。
8.如權(quán)利要求1所述的地址轉(zhuǎn)換器,其中,所述地址轉(zhuǎn)換控制器響應(yīng)于程序命令執(zhí)行地址轉(zhuǎn)換,以將虛擬地址轉(zhuǎn)換為真實地址,而不考慮所述處理器正在運行的所述操作系統(tǒng)。
9.如權(quán)利要求8所述的地址轉(zhuǎn)換器,其中,所述地址轉(zhuǎn)換控制器響應(yīng)于所述程序命令,使用頁內(nèi)偏移位向所述處理器返回關(guān)于地址轉(zhuǎn)換的狀態(tài)信息。
10.一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換方法,包括根據(jù)處理器運行的多種操作系統(tǒng)中正在運行的操作系統(tǒng),通過訪問用于基于所述多種操作系統(tǒng)而將所述虛擬地址和所述真實地址進(jìn)行分類和存儲的地址轉(zhuǎn)換緩沖器,將所述虛擬地址轉(zhuǎn)換為所述真實地址。
11.一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器,其基于多種操作系統(tǒng),對用于存儲所述虛擬地址和所述真實地址的地址轉(zhuǎn)換緩沖器進(jìn)行分類,并將所述虛擬地址和所述真實地址存儲在所述地址轉(zhuǎn)換緩沖器中。
12.如權(quán)利要求11所述的地址轉(zhuǎn)換器,其中,所述地址轉(zhuǎn)換緩沖器對于不相應(yīng)的所述操作系統(tǒng)隱藏起來。
13.一種將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器,包括用于存儲所述虛擬地址和所述真實地址的地址轉(zhuǎn)換緩沖器;以及存儲單元,用于與多個標(biāo)識相關(guān)聯(lián)地存儲所述虛擬地址和所述真實地址,所述標(biāo)識表明所述虛擬地址和所述真實地址所屬于的操作系統(tǒng)。
14.如權(quán)利要求13所述的地址轉(zhuǎn)換器,還包括用于集中存儲所述標(biāo)識的標(biāo)識存儲單元,其中當(dāng)所述操作系統(tǒng)被切換時,所述標(biāo)識被共同保存和恢復(fù)。
15.一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器,包括第一組相聯(lián)地址轉(zhuǎn)換緩沖器;以及第二全相聯(lián)地址轉(zhuǎn)換緩沖器,其中所述第一組相聯(lián)地址轉(zhuǎn)換緩沖器存儲動態(tài)條目的所述虛擬地址和所述真實地址,所述第二全相聯(lián)地址轉(zhuǎn)換緩沖器存儲靜態(tài)條目的所述虛擬地址和所述真實地址。
16.如權(quán)利要求15所述的地址轉(zhuǎn)換器,其中,當(dāng)最近最少使用的數(shù)據(jù)從所述第一組相聯(lián)地址轉(zhuǎn)換緩沖器中被取出時,所述最近最少使用的數(shù)據(jù)被保存在所述第二全相聯(lián)地址轉(zhuǎn)換緩沖器中,直到被再次取出。
17.如權(quán)利要求15所述的地址轉(zhuǎn)換器,其中,當(dāng)最近最少使用的數(shù)據(jù)從所述第二全相聯(lián)地址轉(zhuǎn)換緩沖器中被取出時,所述最近最少使用的數(shù)據(jù)被保存在所述第一組相聯(lián)地址轉(zhuǎn)換緩沖器中,直到被再次取出。
18.一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器,包括用于存儲動態(tài)條目和靜態(tài)條目的所述虛擬地址和所述真實地址的地址轉(zhuǎn)換緩沖器,其中,當(dāng)所述動態(tài)條目和所述靜態(tài)條目使用相同區(qū)域時,所述動態(tài)條目和所述靜態(tài)條目具有地址轉(zhuǎn)換的優(yōu)先權(quán)順序。
19.一種用于將虛擬地址轉(zhuǎn)換為真實地址的地址轉(zhuǎn)換器,其中,對應(yīng)于動態(tài)條目的地址轉(zhuǎn)換、對應(yīng)于靜態(tài)條目的地址轉(zhuǎn)換或者根據(jù)向所述動態(tài)條目和所述靜態(tài)條目給出的優(yōu)先權(quán)順序而進(jìn)行的地址轉(zhuǎn)換可由程序命令指定。
20.如權(quán)利要求19所述的地址轉(zhuǎn)換器,其中,通過使用頁內(nèi)偏移位,向發(fā)射所述程序命令的處理器返回關(guān)于所述地址轉(zhuǎn)換的狀態(tài)信息。
全文摘要
一種能夠減小地址轉(zhuǎn)換中的系統(tǒng)負(fù)載和操作系統(tǒng)間切換的開銷的地址轉(zhuǎn)換器?;谔幚砥魉\行的多種操作系統(tǒng),多個地址轉(zhuǎn)換緩沖器將虛擬地址和真實地址進(jìn)行分類并存儲。例如,地址轉(zhuǎn)換緩沖器存儲對應(yīng)于操作系統(tǒng)的虛擬地址和真實地址。根據(jù)正在運行的操作系統(tǒng),地址轉(zhuǎn)換控制器訪問對應(yīng)的地址轉(zhuǎn)換緩沖器,以將虛擬地址轉(zhuǎn)換成真實地址。
文檔編號G06F9/46GK1704912SQ20041009109
公開日2005年12月7日 申請日期2004年11月16日 優(yōu)先權(quán)日2004年6月2日
發(fā)明者高橋清剛, 池敦 申請人:富士通株式會社