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