欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對(duì)mmu仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器的制作方法

文檔序號(hào):6613134閱讀:272來源:國知局

專利名稱::對(duì)mmu仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器的制作方法
技術(shù)領(lǐng)域
:本發(fā)明一般地涉及計(jì)算機(jī)系統(tǒng)仿真領(lǐng)域,并且具體而言涉及一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元(memorymanagementunit,MMU)仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器。
背景技術(shù)
:幾乎所有的計(jì)算機(jī)體系結(jié)構(gòu)都可以通過仿真器來進(jìn)行評(píng)估和研究。仿真器通過允許設(shè)計(jì)者快速地評(píng)估各種各樣的體系結(jié)構(gòu)的性能,降低了成本,并且節(jié)省了項(xiàng)目的開發(fā)時(shí)間。例^(口,在JoshuaJ.Yi、DavidJ.Liljia所著的"SimulationofComputerArchitectures:Simulators,Benchmarks,Methodologies,andRecommendations"(IEEETransactionsonComputers,2006年3月,第55巻,第3期,第268-280頁)中,對(duì)仿真器技術(shù)及其分類進(jìn)行了粗略的介紹。仿真器在一臺(tái)計(jì)算機(jī)上使用軟件程序來仿真某一真實(shí)計(jì)算機(jī)中的所有組件。典型的計(jì)算機(jī)體系結(jié)構(gòu)由一個(gè)或多個(gè)中央處理單元(CPU)、存儲(chǔ)器、外圍設(shè)備和總線組成,其中,CPU是計(jì)算機(jī)的核心并用于執(zhí)行計(jì)算任務(wù),總線上附接了存儲(chǔ)器和各種外圍設(shè)備。全系統(tǒng)仿真器是用于為操作系統(tǒng)(OS)和應(yīng)用提供虛擬化執(zhí)行環(huán)境的程序。例如,全系統(tǒng)仿真器可以使得PowerPCLinux和相關(guān)的Linux應(yīng)用程序能夠在x86的Windows平臺(tái)上運(yùn)行。二進(jìn)制翻譯(BT)技術(shù)是當(dāng)前的一種用于加速全系統(tǒng)仿真器的技術(shù)。二進(jìn)制翻譯可以是靜態(tài)的或動(dòng)態(tài)的(與執(zhí)行時(shí)間有關(guān))。在靜態(tài)二進(jìn)制翻譯(Staticbinarytranslation,SBT)中,翻譯過程在程序的執(zhí)行甚至仿真器的執(zhí)行之前開始實(shí)施。所有的源二進(jìn)制代碼僅被翻譯一次。在所述翻譯過程的階段之后,不再實(shí)施翻譯,而所輸出的二進(jìn)制代碼可以在需要時(shí)被執(zhí)行任意多次。在動(dòng)態(tài)二進(jìn)制翻譯(Dynamicbinarytranslation,DBT)中,僅當(dāng)代碼被需要和執(zhí)行時(shí)進(jìn)行翻譯。當(dāng)代碼首次被翻譯時(shí),其被存儲(chǔ)在高速緩存中,并在執(zhí)行同一代碼的任何時(shí)候被重新使用。翻譯在運(yùn)行時(shí)被實(shí)施,所以對(duì)于仿真代碼所花費(fèi)的時(shí)間來說,必須要加上翻譯代碼的時(shí)間。因此,翻譯必須被盡可能快地實(shí)施。這也意味著執(zhí)行已翻譯代碼的利益必須大大超過翻譯代碼所花費(fèi)的時(shí)間。采用動(dòng)態(tài)翻譯技術(shù)實(shí)現(xiàn)的全系統(tǒng)仿真器的典型例子包括在由RichardUhlig、RomanFishtein、OrenGershon、IsraelHirsh和HongWang所著的"SoftSDV:APresiliconSoftwareDevelopmentEnvironmentfortheIA-64Architecture"(IntelTechnologyJournalQ4,1999年)中/>開的仿真器;以及QEMU(可參見http:Vfabrice.bellard.free.fr/qemu/)。此外,典型的全系統(tǒng)仿真器還包括Simics系統(tǒng)(可參見http:〃virtutech.com/)、Skyeye系統(tǒng)(可參見http:〃www.skyeye.org/index.shtml)和Wukong系統(tǒng)(可參見http:〃embedded.zju.edu.cn/wukong/)。在本文中,將針對(duì)使用DBT技術(shù)的全系統(tǒng)仿真器進(jìn)行描述,并且為了簡(jiǎn)單起見,將利用DBT技術(shù)的全系統(tǒng)仿真器簡(jiǎn)稱為全系統(tǒng)仿真器。大多數(shù)現(xiàn)代計(jì)算機(jī)都包含MMU,其用于將軟件所使用的虛擬地址翻譯成用來訪問存儲(chǔ)器和I/O設(shè)備的物理地址。MMU為操作系統(tǒng)和所有的應(yīng)用創(chuàng)建了虛擬地址空間,其自由地將物理存儲(chǔ)頁面映射到虛擬地址存儲(chǔ)頁面。MMU為每個(gè)虛擬頁面^L置了不同的屬性和4呆護(hù)。因此,MMU仿真是全系統(tǒng)仿真的一個(gè)重要部分。但是由于MMU是一種具有復(fù)雜行為的復(fù)雜硬件,用軟件仿真所述行為是困難的,因此,已知的用于實(shí)現(xiàn)MMU仿真的解決方案引入了較大的性能開銷。例如,在EmmettWitchel和MendelRosenblum所著的"Embra:fastandflexiblemachinesimulation,,(Proceedingsofthe1996ACMSIGMETRICSInternationalConferenceonMeasurementandModelingofComputerSystems,美國賓夕法尼亞州費(fèi)城,1996年,第68-79頁)中,公開了一種使用MMU仿真的全系統(tǒng)仿真器。其中,提供了下述的報(bào)告結(jié)果如果對(duì)MMU進(jìn)行仿真,當(dāng)客戶機(jī)(guestmachine)和宿主機(jī)(hostmachine)都是無內(nèi)部互鎖流水級(jí)的微處理器(MicroprocessorwithoutInterlockedPipedStages,MIPS)機(jī)器時(shí),則整個(gè)系統(tǒng)的速度會(huì)降低1/3或1/4。同時(shí),在申請(qǐng)人進(jìn)行的試驗(yàn)中,當(dāng)在x86宿主機(jī)上仿真PowerPCISA(InstructionSetArchitecture,指令集體系結(jié)構(gòu))時(shí),在典型的指令分布模式下,MMU仿真自身導(dǎo)致了速度降低大約41。/。。在此,所述典型的指令分布模式的意思是,在所有動(dòng)態(tài)指令中,平均1/3的指令為加載/存儲(chǔ)指令,并且平均1/5的指令為分支。圖1示出了傳統(tǒng)的MMU仿真的邏輯結(jié)構(gòu)。如圖1所示,在該圖的左側(cè)示出了翻譯之前的一個(gè)示例性代碼段,在圖l的中間示出了在對(duì)該示例性代碼段進(jìn)行翻譯之后所得到的代碼段,而在圖l的右側(cè)示出了地址轉(zhuǎn)換旁路緩沖器(TranslationLookasideBuffer,TLB)中所存儲(chǔ)的內(nèi)容(在下文中,將其稱為TLB表)。MMU在TLB的幫助下完成地址翻譯的任務(wù)。TLB表中的每個(gè)TLB條目(entry)包含4k大小的虛擬存儲(chǔ)頁面的地址(即,虛擬地址)以及該頁面的相應(yīng)物理存儲(chǔ)器地址,并且其中還包含有某些比特位用于權(quán)限和保護(hù)的目的(為了簡(jiǎn)單起見,在圖1中并未示出這些比特位)。需要注意的是,在仿真器中,TLB表就是一個(gè)大數(shù)組,所以可以直接存取,并且這里所說的TLB表是在仿真器內(nèi)部仿真的TLB表,而不是真實(shí)硬件的TLB表。代碼段中的每條加載/存儲(chǔ)(load/store)指令都需要進(jìn)行地址翻譯,而地址翻譯的過程很復(fù)雜。一般說來,在進(jìn)行代碼二進(jìn)制翻譯時(shí),一條客戶機(jī)的加載/存儲(chǔ)指令需要被翻譯成多條宿主機(jī)的指令才能完成相應(yīng)功能。一般是把加載/存儲(chǔ)指令翻譯成函數(shù)調(diào)用,在該函數(shù)內(nèi)部完成復(fù)雜功能。也就是說,將一條客戶機(jī)的加載/存儲(chǔ)指令翻譯成宿主機(jī)上的一個(gè)函數(shù)。其中,10與加載和存儲(chǔ)指令相對(duì)應(yīng)的函數(shù)是事先確定好的。對(duì)于不同公司的仿真器產(chǎn)品而言,對(duì)應(yīng)的函數(shù)可能是不同的,但是在同一個(gè)仿真器中其對(duì)應(yīng)的函數(shù)是固定的。所以,在翻譯過程中,只需將每條客戶機(jī)上的加載指令翻譯成一個(gè)與之對(duì)應(yīng)的宿主機(jī)上的函數(shù)調(diào)用,將每條客戶機(jī)上的存儲(chǔ)指令翻譯成另一個(gè)與之對(duì)應(yīng)的宿主機(jī)上的函數(shù)調(diào)用。由于對(duì)加載/存儲(chǔ)指令的執(zhí)行都需要進(jìn)行地址翻譯和訪問,因此在下文中對(duì)二者的具體功能不做區(qū)分,本發(fā)明僅關(guān)注于地址翻譯過程的優(yōu)化。在當(dāng)前的MMU仿真方法中,把每條加載/存儲(chǔ)指令翻譯成對(duì)TLB搜索進(jìn)行建模的函數(shù)的調(diào)用。在每次需要進(jìn)行地址翻譯時(shí),對(duì)仿真的TLB進(jìn)行搜索(如圖1所示)。如果虛擬地址在TLB中,則可以獲得相應(yīng)的物理地址。如果虛擬地址不在TLB中,則MMU可以生成一個(gè)TLB缺失異常(TLB-missexception),或者M(jìn)MU自動(dòng)地從仿真的內(nèi)存中讀取頁表填充到TLB中。搜索結(jié)果包括虛擬頁號(hào)和物理頁號(hào),其中,在32位計(jì)算機(jī)系統(tǒng)的情形中,虛擬頁號(hào)和物理頁號(hào)在一般情況下均為32位長的地址,其中低12位為0。這是因?yàn)椋谝话愕?2位計(jì)算機(jī)系統(tǒng)中,一個(gè)32位長的地址可以分成兩部分,其中,高20位為頁號(hào),低12位為頁內(nèi)偏移(對(duì)于64位的計(jì)算機(jī)系統(tǒng)可執(zhí)行類似的處理)。頁內(nèi)偏移在虛擬地址空間和物理地址空間內(nèi)是相同的。如上所述,在典型的指令分布模式中,平均1/3的指令為加載/存儲(chǔ)指令。由于需要頻繁地執(zhí)行加載/存儲(chǔ)指令,所以MMU的速度會(huì)直接影響到整個(gè)系統(tǒng)的性能。然而,由于TLB搜索是非常耗時(shí)的過程,所以仿真的MMU運(yùn)行速度不會(huì)很快。從真實(shí)硬件上來看,TLB本質(zhì)上是一個(gè)高速緩存,因此,有關(guān)TLB的查找或搜索算法實(shí)質(zhì)上就是高速緩存的查找或搜索算法,因此,可以參見"ComputerArchitecture:AQuantitativeApproach"(作者JohnLHennessy,DavidA.Patterson,譯者鄭綿民,湯志忠,汪東升,電子工業(yè)出版社2004年7月出版,ISBN號(hào)為7-5053-9916-0)。簡(jiǎn)單地說,TLB可以被看作是包含很多行,每一行都包含一個(gè)虛擬地址和一個(gè)物理地址(如圖1所示)?;镜腡LB搜索方法有兩種(1)如果知道某個(gè)虛擬地址,則在TLB中逐行地進(jìn)行對(duì)比,如果發(fā)現(xiàn)某一行的虛擬地址相同,就返回該行中對(duì)應(yīng)的物理地址。如果在真實(shí)硬件中實(shí)現(xiàn),搜索的速度會(huì)非???,因?yàn)橛布梢圆⑿械厮阉鞫嘈?,例如,可以一次搜?00行或更多行。因此,無論搜索多少行,其所需的時(shí)間都和搜索一行的時(shí)間是相同的。這種TLB被稱為全相聯(lián)的TLB(fully-associatedTLB)。(2)假定一個(gè)虛擬地址只能放在某一固定的行上面。例如,可以規(guī)定如果虛擬地址被10除后余1,就放在第一行,余2就放在第2行,等等諸如此類。這樣的話,TLB就只需要有IO行即可。但是,可能會(huì)出現(xiàn)有很多虛擬地址都可以放在同一行中的情況,從而產(chǎn)生了沖突。因此,一般的做法是,誰最近被使用過,就把誰放在該位置上。這樣的話,搜索起來很方便,對(duì)于給定的一個(gè)虛擬地址而言,首先找到它對(duì)應(yīng)的行號(hào),然后判斷該行上的虛擬地址和給出的虛擬地址是否相同,如果相同,就表示該虛擬地址在TLB中找到了,因此,返回該行中所包含的物理地址。這種TLB可以被稱為組相聯(lián)的TLB(set-associatedTLB)。從仿真器的角度來看,仿真器的目的是要對(duì)真實(shí)硬件進(jìn)行仿真,所以仿真器要仿真上述TLB搜索的過程。對(duì)全相聯(lián)的TLB而言,軟件不能做到并行搜索(并行搜索用軟件實(shí)現(xiàn)開銷很大,得不償失),只能逐行地去對(duì)比,這往往是通過一個(gè)循環(huán)體程序來實(shí)現(xiàn)的。這樣的話,對(duì)于一個(gè)包含64行的TLB,就需要比較64次,所以TLB搜索的速度^艮慢。而對(duì)于組相聯(lián)的TLB而言,可以直接算出行號(hào),然后再去進(jìn)行搜索,但是其搜索的速度還是不夠快。經(jīng)過實(shí)踐分析,如果將計(jì)算和比較的過程計(jì)算在內(nèi),QEMU需要至少20條匯編指令才能完成上述功能。例如,當(dāng)客戶機(jī)ISA是PowerPC,而宿主機(jī)ISA為x86時(shí),在一個(gè)良好設(shè)計(jì)的全系統(tǒng)仿真器QEMU中,一條加載/存儲(chǔ)指令被翻譯為大約20條匯編指令。不過,在現(xiàn)有技術(shù)的仿真器中,上述這樣的指令翻譯效率所實(shí)現(xiàn)的MMU仿真的速度仍然不盡如人意,因此,需要提供新的仿真MMU的方法和全系統(tǒng)仿真器,以進(jìn)一步減少對(duì)加載/存儲(chǔ)指令進(jìn)行翻譯后的指令數(shù)目,從而提高M(jìn)MU仿真以及全系統(tǒng)仿真的運(yùn)行速度。
發(fā)明內(nèi)容為了克服現(xiàn)有技術(shù)中所存在的缺陷,并進(jìn)一步加快MMU仿真的速度,進(jìn)而提高整個(gè)系統(tǒng)的性能,而提出了本發(fā)明。根據(jù)本發(fā)明的一個(gè)方面,提出了一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元(MMU)仿真進(jìn)行加速的方法,所述宿主系統(tǒng)支持全系統(tǒng)仿真器,在所述全系統(tǒng)仿真器上仿真客戶系統(tǒng),所述方法包括以下步驟在所述宿主系統(tǒng)為所述全系統(tǒng)仿真器分配的邏輯空間中設(shè)置邊界,從而將所述邏輯空間劃分為安全區(qū)域和仿真器占用區(qū)域;將全系統(tǒng)仿真器自身從所占用的初始宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中;以及將所述安全區(qū)域供所述客戶系統(tǒng)的至少一部分使用。根據(jù)本發(fā)明的另一方面,提出了一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元(MMU)仿真進(jìn)行加速的裝置,所述宿主系統(tǒng)支持全系統(tǒng)仿真器,在所述全系統(tǒng)仿真器上仿真客戶系統(tǒng),所述裝置包括邊界i殳置裝置,用于在所述宿主系統(tǒng)為所述全系統(tǒng)仿真器分配的邏輯空間中設(shè)置邊界,從而將所述邏輯空間劃分為安全區(qū)域和仿真器占用區(qū)域;仿真器轉(zhuǎn)移裝置,用于將全系統(tǒng)仿真器自身從所占用的初始宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中;以及安全區(qū)域管理裝置,用于將所述安全區(qū)域供所g戶系統(tǒng)的至少一部分使用。根據(jù)本發(fā)明的又一方面,提出了一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元(MMU)仿真進(jìn)行加速的全系統(tǒng)仿真器,包括以上所述的裝置。本發(fā)明所提出的用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器,省略了大量的地址翻譯過程,從而大大減少了需要執(zhí)行的宿主指令,因此,顯著提高了MMU仿真以及全系統(tǒng)仿真的運(yùn)行速度和系統(tǒng)性能。在附帶的權(quán)利要求中闡明了被認(rèn)為是本發(fā)明新穎特性的特征。然而,通過參考以下結(jié)合附圖的說明性實(shí)施例的詳細(xì)描述,將最好地理解本發(fā)明本身以及其優(yōu)選使用模式、另外的目的和優(yōu)點(diǎn),在附圖中圖1示出了傳統(tǒng)的MMU仿真的邏輯結(jié)構(gòu);圖2A和2B示出了在全系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯中的傳統(tǒng)的地址翻譯機(jī)制;圖3示出了根據(jù)本發(fā)明的地址轉(zhuǎn)換過程的簡(jiǎn)要示圖;圖4示出了通常的代碼翻譯過程與本發(fā)明的代碼翻譯過程的比較;圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例的示例性仿真器操作的整體流程圖;圖6是仿真器的初始化操作的流程圖7示出了仿真器自身和安全區(qū)域在為仿真器分配的宿主邏輯空間中的分布;圖8示出了分段錯(cuò)誤異常被觸發(fā)之后的TLB條目填充操作的流程圖9A和圖9B是分別描述了針對(duì)32位客戶系統(tǒng)和64位客戶系統(tǒng)進(jìn)行的對(duì)加載/存儲(chǔ)指令進(jìn)行翻譯和執(zhí)行的流程圖10示出了使客戶TLB條目無效化的操作的流程圖;以及圖ll示出了根據(jù)本發(fā)明的全系統(tǒng)仿真器的框圖。需要注意,在全體附圖中,相同或相似的標(biāo)號(hào)指代的是相同或相似的單元或組件。1具體實(shí)施例方式在下文中將結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例進(jìn)行描述。為了清楚和簡(jiǎn)明起見,在說明書中并未描述實(shí)際實(shí)現(xiàn)方式的所有特征。然而,應(yīng)該了解,在開發(fā)任何這種實(shí)際實(shí)施例的過程中必須做出很多實(shí)現(xiàn)方式所特定的決定,以便實(shí)現(xiàn)開發(fā)人員的具體目標(biāo),例如符合與系統(tǒng)及業(yè)務(wù)相關(guān)的那些限制條件,其中,這些限制條件會(huì)隨著實(shí)施方式的不同而改變。此外,還應(yīng)該了解,雖然開發(fā)工作有可能是非常復(fù)雜和費(fèi)時(shí)的,但對(duì)得益于這個(gè)公開內(nèi)容的本領(lǐng)域技術(shù)人員來說,這種開發(fā)工作僅僅是例行的任務(wù)。此外,還需要說明的一點(diǎn)是,為了避免因不必要的細(xì)節(jié)而混淆了本發(fā)明,在附圖中僅僅示出了與根據(jù)本發(fā)明的方案密切相關(guān)的裝置結(jié)構(gòu)和/或處理步驟,而省略了與本發(fā)明關(guān)系不大的其它細(xì)節(jié)。為了更好地理解本發(fā)明的基本原理以便更好地實(shí)施本發(fā)明,首先參考圖2A和2B,圖2A和2B示出了在全系統(tǒng)動(dòng)態(tài)二進(jìn)制翻譯中的傳統(tǒng)的地址翻譯機(jī)制。在圖2A中,從下往上依次為宿主機(jī)210、宿主操作系統(tǒng)(OS)220、動(dòng)態(tài)二進(jìn)制翻譯器230、客戶操作系統(tǒng)(OS)240、應(yīng)用250。其中,宿主OS220運(yùn)行于宿主機(jī)210上。宿主OS220支持動(dòng)態(tài)二進(jìn)制翻譯器230的運(yùn)行。從而,通過動(dòng)態(tài)二進(jìn)制翻譯器230,客戶OS240以及在其上運(yùn)行的應(yīng)用250凈皮宿主機(jī)220和宿主OS220所支持。具體而言,客戶OS240以及在其上運(yùn)行的應(yīng)用250在運(yùn)行時(shí)所要訪問的有效地址(EA)能夠通過動(dòng)態(tài)二進(jìn)制翻譯器230被翻譯為宿主機(jī)210上的宿主OS220所支持的物理地址(PA)。需要注意,本發(fā)明可以應(yīng)用于任意的宿主機(jī),并且對(duì)宿主機(jī)的硬件資源和宿主OS沒有任何特殊的要求。同樣,本發(fā)明可以支持任意可用的客戶OS以及在其上運(yùn)行的應(yīng)用,而無需對(duì)它們進(jìn)行任何修改或改變。圖2B更具體示出了所述地址翻譯機(jī)制。當(dāng)一應(yīng)用在客戶系統(tǒng)上運(yùn)行時(shí),其中的指令進(jìn)行地址調(diào)用,該地址被稱為客戶OS中的有效地址(EA),也被稱為邏輯地址,其是虛擬地址。在客戶MMU(其也是被仿真的)中,所調(diào)用的有效地址被轉(zhuǎn)換為客戶OS中的物理地址(PA),所述客戶物理地址仍舊是虛擬地址,因此需要繼續(xù)通過映射表^f皮轉(zhuǎn)換為宿主OS中的有效地址(宿主EA)。在可替換實(shí)施例中,所述客戶OS中的物理地址可以直接代表宿主OS中的有效地址,而不再需要映射表。接著,所述宿主OS中的有效地址通過宿主MMU(通常為真實(shí)硬件)被轉(zhuǎn)換為宿主OS中的物理地址(宿主PA)。這樣,該應(yīng)用中的指令所進(jìn)行的地址調(diào)用才可以完成。本發(fā)明旨在消除從客戶OS中的有效地址(客戶EA)到宿主OS中的有效地址(宿主EA)的地址轉(zhuǎn)換過程(如虛線框中所示出的),以便減少地址翻譯機(jī)制的開銷,以及提高系統(tǒng)仿真的性能。圖3示出了本發(fā)明所要實(shí)現(xiàn)的地址轉(zhuǎn)換過程的簡(jiǎn)要示圖。顯而易見,通過實(shí)施本發(fā)明,在大多數(shù)情況下,客戶OS中的有效地址可以作為宿主OS中的有效地址而被直接傳遞到宿主MMU,并被宿主MMU映射到宿主OS中的物理地址,因此軟件地址翻譯的開銷被完全移除,從而大幅提高系統(tǒng)的整體運(yùn)行速度和效率??蛻鬗MU仍舊保留,因?yàn)樗梢杂脕硖幚砦赐ㄟ^本發(fā)明的機(jī)制處理的一些指令,詳細(xì)細(xì)節(jié)稍后將在下文中描述。接著用一個(gè)具體示例來說明本發(fā)明所能實(shí)現(xiàn)的效果。參見圖4,圖4示出了通常的代碼翻譯過程與本發(fā)明的代碼翻譯過程的比較。在x86的宿主機(jī)上仿真PowerPC的客戶系統(tǒng)的情形中,例如在客戶系統(tǒng)上運(yùn)行的客戶指令為stwr20,24(r21),該指令所執(zhí)行的操作是將客戶寄存器r21中的數(shù)值加上24,得到客戶系統(tǒng)中的有效地址(EA),然后將客戶寄存器r20中的數(shù)值存儲(chǔ)到該有效地址對(duì)應(yīng)的存儲(chǔ)器單元中。對(duì)于該指令,在通常的翻譯過程中,首先在客戶系統(tǒng)上進(jìn)行邏輯到物理的寄存器轉(zhuǎn)換以及有效地址(EA)計(jì)算,這會(huì)占用大約5條宿主指令。接著實(shí)施客戶有效地址(客戶EA)到客戶物理地址(客戶PA)的翻譯(如圖2的虛線框所示),這會(huì)占用大約15條宿主指令。經(jīng)過翻譯后,所得到的指令為moveaxl,(%ebxl),其中,eaxl是宿主寄存器,其中的值等于客戶寄存器r20中的值,ebxl也是宿主寄存器,其中的值等于從客戶EA所翻譯的客戶PA,也即宿主EA(假設(shè)已經(jīng)經(jīng)過映射或者不需要映射表)。之后,宿主EA將被傳遞到宿主MMU并,皮翻譯為宿主PA。與通常的代碼翻譯過程相比而言,在本發(fā)明的解決方案中,對(duì)于同一條客戶指令stwr20,24(r21),該指令僅需要在客戶系統(tǒng)上進(jìn)行邏輯到物理的寄存器轉(zhuǎn)換以及有效地址(EA)計(jì)算,這會(huì)占用大約5條宿主指令。然后,如上所述,通過本發(fā)明的機(jī)制,客戶EA可以被直接用作宿主EA,并且所得到的指令為moveax2,(%ebx2),其中,eax2是宿主寄存器,其中的值等于客戶寄存器r20中的值,ebx2也是宿主寄存器,其中的值等于客戶EA,也即宿主EA(因?yàn)樵诒景l(fā)明實(shí)施例中,二者是等同的)。之后,宿主EA將被傳遞到宿主MMU中并被翻譯為宿主PA。可以看出,根據(jù)本發(fā)明的翻譯代碼過程可以節(jié)省M戶EA到宿主EA的地址翻譯過程所引入的幾乎所有系統(tǒng)開銷,從而將所生成的宿主指令數(shù)量從大約20條減少為大約5條。在對(duì)于現(xiàn)有技術(shù)的DBT仿真器QEMU的試驗(yàn)中,所得到的數(shù)據(jù)示出,通過實(shí)施本發(fā)明而達(dá)到的理想性能收益可以達(dá)到180%左右。以上通過示例描述了本發(fā)明的基本思想和所要達(dá)到的效果,下面將結(jié)合附圖詳細(xì)地介紹本發(fā)明的具體實(shí)施方法。由于對(duì)MMU仿真的已知解決方案將每條加載/存儲(chǔ)指令翻譯成執(zhí)行TLB查找的函數(shù)調(diào)用,而TLB查找是很費(fèi)時(shí)的,因此,考慮到下述事實(shí),即,在宿主機(jī)上運(yùn)行的仿真器會(huì)被分配很大的邏輯空間,例如,在64位宿主機(jī)上運(yùn)行的仿真器會(huì)占據(jù)2"字節(jié)的邏輯空間,而在多數(shù)情況下仿真器實(shí)際上僅消耗4艮小一部分區(qū)域,則能夠設(shè)想,可以令在仿真器上運(yùn)行的客戶系統(tǒng)與仿真器自身安全地共享所述邏輯空間。那么,在客戶系統(tǒng)執(zhí)行每條加載/存儲(chǔ)指令時(shí),所仿真的MMU不必進(jìn)行TLB查找,而是直接將客戶EA對(duì)應(yīng)于宿主EA。接著,由宿主MMU(宿主CPU中的硬件)來完成從宿主EA到宿主PA的地址翻譯過程。由此,在現(xiàn)有技術(shù)中客戶EA到宿主EA的地址翻譯過程被省去,從而節(jié)省了大量的系統(tǒng)開銷。具體而言,可以在為仿真器分配的邏輯空間區(qū)域中設(shè)置某一邊界,從而仿真器可以把其自身的代碼和數(shù)據(jù)移動(dòng)到該邊界之上的邏輯空間區(qū)域,并將該邊界之下的區(qū)域保留為安全區(qū)域,以供所仿真的客戶系統(tǒng)使用,其中所述邊界是一個(gè)特定的邏輯地址。如此一來,在低于所述邊界(即,處于安全區(qū)域中)的客戶系統(tǒng)中使用的客戶EA可以被看作是宿主系統(tǒng)中的宿主EA,并可通過宿主MMU直接映射到宿主PA。通過此方式,對(duì)于在仿真的客戶系統(tǒng)中對(duì)安全區(qū)域中的地址的幾乎所有加栽/存儲(chǔ)指令來說,由所仿真的客戶MMU實(shí)施的TLB查找和EA到PA翻譯的工作負(fù)荷實(shí)際上被移除。只要該安全區(qū)域足夠大以容納整個(gè)客戶系統(tǒng),則幾乎所有TLB查找都不再需要。例如,在64位的宿主機(jī)上仿真32位的客戶系統(tǒng)的情況下,由于為仿真器分配的地址空間遠(yuǎn)大于32位的客戶系統(tǒng)所需的地址空間,所以可以在所分配的地址空間中為該客戶系統(tǒng)保留出大得足以容納整個(gè)客戶系統(tǒng)的安全區(qū)域。而在64位的宿主機(jī)上仿真64位的客戶系統(tǒng)的情況下,盡管無法為該客戶系統(tǒng)保留出可以容納整個(gè)客戶系統(tǒng)的安全區(qū)域,但可以將安全區(qū)域供客戶系統(tǒng)的一部分所使用。這通過采用一種地址安全判斷機(jī)制來實(shí)現(xiàn)。如果加載/存儲(chǔ)指令所訪問的地址確實(shí)落在安全區(qū)域中,則本發(fā)明的方法將^艮好地適用。如果加載/存儲(chǔ)指令所訪問的地址未落在安全區(qū)域中,則使用通常的地址翻譯方法,即,調(diào)用客戶MMU的TLB查找和EA到PA翻譯的過程。在下文中的具體實(shí)施例中,為了便于描述和理解,在未明確另行指定的情況下,均假定宿主機(jī)為64位,但是在諸如128位、32位的宿主機(jī)上也可以同等地應(yīng)用本發(fā)明。注意,盡管在本發(fā)明的優(yōu)選實(shí)施例中將安全區(qū)域設(shè)置為在邊界之下,但這并不是必須的。本領(lǐng)域技術(shù)人員可以容易地想到,在可替換實(shí)施例中,安全區(qū)域也可以位于邊界之上,而將仿真器占用的空間設(shè)置為在邊界之下。下面對(duì)本發(fā)明的方法進(jìn)行詳細(xì)的說明?,F(xiàn)在參考圖5,圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例的示例性仿真器操作的整體流程圖。首先,所述方法的過程開始于步驟500,并繼續(xù)進(jìn)行到步驟505,在其中進(jìn)行仿真器的初始化操作。該初始化操作可以在宿主系統(tǒng)為仿真器分配的邏輯空間中根據(jù)所設(shè)置的邊界劃分出安全區(qū)域,并將客戶系統(tǒng)和仿真器自身分別置于安全區(qū)域和安全區(qū)域以上的區(qū)域(可被稱為仿真器占用區(qū)域)中。以下參考圖6描述了所述初始化操作的具體流程?,F(xiàn)在參考圖6,示出了仿真器的初始化操作的流程圖。首先所述初始化操作開始于步驟600,并繼續(xù)進(jìn)行到步驟605,在其中設(shè)置邊界和安全區(qū)域,其中所述安全區(qū)域是在在為仿真器分配的邏輯空間中位于邊界之下的區(qū)域。這樣,如上面已經(jīng)描述的,對(duì)于宿主系統(tǒng)為仿真器分配的邏輯空間區(qū)域來說,除了可以用仿真器占用區(qū)域來容納仿真器本身之外,還可以用安全區(qū)域來容納所仿真的系統(tǒng)的至少一部分。在所仿真的系統(tǒng)(即客戶系統(tǒng))為32位的情形中,將所述安全區(qū)域的邊界固定地設(shè)置為OxFFFFFFFF。也就是說,在為仿真器分配的宿主邏輯空間中,從OxFFFFFFFF到0x00000000的4G字節(jié)被設(shè)置為安全區(qū)域,供客戶系統(tǒng)使用。由于客戶系統(tǒng)為32位,因此所設(shè)置的4G的安全區(qū)域已經(jīng)大到足以容納整個(gè)客戶系統(tǒng)所需要的空間。在所仿真的系統(tǒng)(即客戶系統(tǒng))為64位的情形中,所述安全區(qū)域的邊界被設(shè)置為一個(gè)特定地址。對(duì)該地址的設(shè)置取決于仿真器自身所占用的大小以及在其上所仿真的客戶系統(tǒng)及其應(yīng)用所需要的大小。一般而言,針對(duì)同一仿真器,該邊界可以被程序員或者管理員設(shè)置為固定值。所述邊界可以凈皮i殳置為比OxFFFFFFFF更高的一個(gè)地址,以l更創(chuàng)建更大的安全區(qū)域。安全區(qū)域越大,能供客戶系統(tǒng)使用的空間就越大,從而能夠帶來更多的性能改善。在步驟605所述邊界被設(shè)置之后,即安全區(qū)域的大小被確定,接著所述操作進(jìn)行到步驟610,將仿真器自身從所占用的初始宿主邏輯空間(存儲(chǔ)了仿真器的代碼和數(shù)據(jù))轉(zhuǎn)移到所述邊界之上的空間中。所述邊界為OxFFFFFFFF(32位客戶系統(tǒng)的情形)或者某一特定地址(64位客戶系統(tǒng)的情形)。圖7示出了在步驟610完成之后仿真器自身和安全區(qū)域在為仿真器分配的宿主邏輯空間中的分布。在宿主系統(tǒng)為仿真器分配的宿主邏輯空間中,仿真器與安全區(qū)域被所述邊界劃分為兩個(gè)部分。上部分為用于存儲(chǔ)仿真器的代碼和數(shù)據(jù)的仿真器占用部分,而下部分為供客戶系統(tǒng)使用的安全區(qū)域。如上所述,在可替換實(shí)施例中,仿真器占用區(qū)域可以在邊界之下,而安全區(qū)域可以在邊界之上,而此時(shí)的邊界也將是另外的值。在某些情形中,由于一些技術(shù)原因仿真器無法-故轉(zhuǎn)移。例如,仿真器需要調(diào)用位于安全區(qū)域中的固定地址的函數(shù)或者具有指向安全區(qū)域中的固定地址的指針的函數(shù)。在此時(shí),可以不必轉(zhuǎn)移仿真器,而是將仿真器保留在其原始位置,并將安全區(qū)域調(diào)整到更高的地址空間。對(duì)于在客戶系統(tǒng)上運(yùn)行的加載/存儲(chǔ)指令的翻譯模式,可以向所述翻譯模式注入在有效地址(EA)計(jì)算完成之后的一條加法操作或指令。從而,在未來每當(dāng)加載/存儲(chǔ)指令出現(xiàn)時(shí),該加法操作或指令向加載/存儲(chǔ)指令所要訪問的初始的客戶EA附加一個(gè)地址偏移,從而將客戶系統(tǒng)所要訪問的邏輯地址轉(zhuǎn)到位于更高位置的地址空間中的安全區(qū)域。由于該操作針對(duì)每次加載/存儲(chǔ)操作僅增加了一條加法操作或指令,從而引入了額外的極小的開銷,所以此特定情形對(duì)于系統(tǒng)性能的影響很小。因此在以下的描述中,為了簡(jiǎn)明和便于理解,假定該情形并未發(fā)生,即,無需向客戶EA附加地址偏移。接著,回到圖6的初始化操作,所述操作繼續(xù)進(jìn)行到步驟615,在其中將安全區(qū)域標(biāo)記為未映射區(qū)域,即,將安全區(qū)域中的所有地址標(biāo)記為未映射地址。這樣做的目的是,任意指令對(duì)此區(qū)域中的某一地址的首次訪問將發(fā)現(xiàn)未映射地址,從而觸發(fā)分段錯(cuò)誤異常(segmentationfaultexception)。在觸發(fā)此異常之后可以執(zhí)行進(jìn)一步的客戶TLB填充操作,將在下文中詳細(xì)描述。在步驟615之后,所述初始化操作結(jié)束于620?,F(xiàn)在回到圖5的過程,在步驟505的仿真器的初始化操作完成之后,在指令的翻譯執(zhí)行流程中,在步驟508判斷仿真器所要執(zhí)行的指令是否是客戶加載/存儲(chǔ)指令。如果否,則在步驟509對(duì)該指令實(shí)施通常的翻譯和執(zhí)行操作。否則,如果該指令是客戶加載/存儲(chǔ)指令,則在步驟510翻譯該指令并生成相應(yīng)的宿主指令,即,用于仿真客戶加載/存儲(chǔ)指令的多條宿主指令,如上文所描述的。所述宿主指令用于在宿主系統(tǒng)上進(jìn)行邏輯到物理的寄存器轉(zhuǎn)換以及計(jì)算客戶有效地址(EA),該客戶EA將被用來訪問宿主物理地址空間。需要注意,步驟510是可選的步驟,僅在每一特定的加載/存儲(chǔ)指令第一次出現(xiàn)時(shí)才需要對(duì)該指令進(jìn)行翻譯。在加載/存儲(chǔ)指令第一次被翻譯之后,所翻譯的宿主指令可被存儲(chǔ)在存儲(chǔ)裝置中,諸如仿真器中的翻譯緩存模塊。這樣,當(dāng)下一次調(diào)用該指令時(shí),就可以直接從所述翻譯緩存模塊中調(diào)用翻譯后的指令,即,步驟510可以被跳過。在此時(shí),需要一種將客戶邏輯頁面映射到宿主物理頁面以及仿真客戶TLB狀態(tài)的機(jī)制。所述操作接著進(jìn)行到步驟515,在其中宿主MMU將檢查該客戶EA是否是未映射的。如果判斷結(jié)果是肯定的,則所述操作進(jìn)行到步驟520,在其中分段錯(cuò)誤異常被觸發(fā),并且在分段錯(cuò)誤異常被觸發(fā)之后實(shí)施客戶TLB條目填充操作。應(yīng)該注意,在安全區(qū)域中的任一地址被首次訪問時(shí),其均處于未映射狀態(tài),因此必然會(huì)觸發(fā)分段異常錯(cuò)誤以及隨后實(shí)施客戶TLB條目填充操作。以下參考圖8描述了所述TLB條目填充操作的具體流程。首先需要指出,對(duì)客戶TLB的條目進(jìn)行填充的原因主要是因?yàn)樵诳蛻舨僮飨到y(tǒng)的運(yùn)行過程中需要客戶TLB中的信息,并且需要對(duì)客戶TLB進(jìn)行操作,因此,在仿真過程中需要保證客戶TLB中的狀態(tài)與其實(shí)際狀態(tài)一致。此處的實(shí)際狀態(tài),指客戶操作系統(tǒng)在真實(shí)的宿主CPIJ硬件上運(yùn)行時(shí),TLB中的狀態(tài)。由于TLB的狀態(tài)改變,通常僅在對(duì)其進(jìn)行條目填充和條目無效兩種操作時(shí)發(fā)生,因而,需要對(duì)這兩種操作進(jìn)行仿真。并且,只要能夠正確仿真這兩種操作,即可保證客戶TLB的狀態(tài)與其實(shí)際狀態(tài)一致。TLB條目填充操作在某一個(gè)客戶EA所在的邏輯頁面首次被訪問到的時(shí)候發(fā)生。由此,需要捕捉該頁面首次被訪問的時(shí)刻。為此,需要將安全區(qū)域中的所有客戶EA(事實(shí)上也是宿主EA)初始化為未映射。這樣,當(dāng)2一個(gè)客戶EA被訪問時(shí),如果該客戶EA所在的頁面從未被訪問過,即,該客戶EA為未映射,則此時(shí)就是該頁面凈皮首次訪問的時(shí)刻。由此,可以在被觸發(fā)的異常服務(wù)進(jìn)程中對(duì)客戶TLB的條目填充操作進(jìn)行仿真。同時(shí),在宿主MMU中,該宿主EA到宿主PA的映射關(guān)系也會(huì)被建立起來。也即,客戶TLB條目填充的時(shí)刻也正是宿主EA到宿主PA的映射關(guān)系被建立的時(shí)刻。現(xiàn)在參考圖8,示出了分段錯(cuò)誤異常被觸發(fā)之后的TLB條目填充操作的流程圖。所述TLB條目填充操作包括增加新的TLB條目以及更新現(xiàn)有的TLB條目的操作。在翻譯代碼執(zhí)行流程中,當(dāng)仿真器遇到加載/存儲(chǔ)指令并執(zhí)行該指令時(shí),如果宿主MMU檢測(cè)到指令所使用的初始客戶EA是未映射地址,則分段錯(cuò)誤異常被觸發(fā),步驟805。接著進(jìn)行TLB條目填充操作,所述操作是一種服務(wù)例程,其中將仿真客戶TLB操作。首先,在步驟810,進(jìn)行客戶TLB檢查。接著在步驟815,判斷TLB在此時(shí)是否已滿。如果判斷結(jié)果是否定的,則在步驟820向客戶TLB中填入新的條目。接著在步驟835,由宿主MMU將包括初始的客戶EA的邏輯頁面直接映射到宿主物理頁面。如果在步驟815的判斷結(jié)果是肯定的,則在步驟825用新的條目來替換客戶TLB中的現(xiàn)有條目,并且在步驟830將對(duì)應(yīng)于該現(xiàn)有條目的宿主存儲(chǔ)器中的物理頁面去除映射。接著在步驟835,由宿主MMU將包括初始的客戶EA的邏輯頁面直接映射到宿主物理頁面。這樣,加載/存儲(chǔ)指令就能夠在步驟530進(jìn)行存儲(chǔ)器訪問并執(zhí)行相應(yīng)的加載/存儲(chǔ)指令的操作,如下文將詳細(xì)描述的。而當(dāng)該邏輯頁面中的該客戶EA下一次被訪問時(shí),該客戶EA成為已映射地址,則加載/存儲(chǔ)指令就可以通過客戶EA直接訪問宿主存儲(chǔ)器的相應(yīng)位置,而不會(huì)觸發(fā)任何異常??蛻鬞LB在所有對(duì)存儲(chǔ)器的正常訪問中均不被訪問,而僅在仿真客戶TLB的條目填充和條目無效操作時(shí)才需要進(jìn)行訪問。另外,實(shí)際上,在可替換實(shí)施例中,如果客戶系統(tǒng)自身可以確保當(dāng)頁表?xiàng)l目不在TLB中(例如被臨時(shí)存儲(chǔ)到寄存器中)時(shí)也不會(huì)被修改,則一種對(duì)本發(fā)明的方法進(jìn)行進(jìn)一步優(yōu)化的技術(shù)可以被實(shí)現(xiàn)。即,當(dāng)客戶TLB已22滿并且需要填入新的TLB條目時(shí),直接向客戶TLB中添加該新條目而不進(jìn)行TLB條目替換和物理頁面去除映射的工作。這樣做的原因在于,在仿真過程中,客戶TLB實(shí)質(zhì)上是軟件數(shù)據(jù)結(jié)構(gòu),其可以容納比實(shí)際設(shè)定數(shù)量更多的條目,同時(shí),宿主TLB可以大于客戶TLB。這樣,就可以仿真大于其實(shí)際大小的客戶TLB以同時(shí)容納更多TLB條目,而避免了相關(guān)的TLB條目替換和物理頁面去除映射的開銷。理論上,所仿真的客戶TLB的大小最大可以達(dá)到宿主TLB的大小。當(dāng)在客戶系統(tǒng)上運(yùn)行了多個(gè)應(yīng)用,并進(jìn)行應(yīng)用切換時(shí),即把一個(gè)應(yīng)用臨時(shí)切換到另一個(gè)應(yīng)用時(shí),邏輯頁面到宿主物理頁面的映射對(duì)應(yīng)關(guān)系將會(huì)4皮改變。而當(dāng)前一應(yīng)用,皮切換回來時(shí),所述映射對(duì)應(yīng)關(guān)系會(huì)4皮再次改變。如果這樣的切換頻繁發(fā)生,勢(shì)必造成系統(tǒng)開銷的大幅增長并影響整體性能。因此,另一種優(yōu)化技術(shù)在于,在所迷前一應(yīng)用被切換時(shí),與其相關(guān)的邏輯頁面到宿主物理頁面的映射對(duì)應(yīng)關(guān)系可以械床存到額外的空間(例如寄存器)中并保持不變,從而在該應(yīng)用被切換回來時(shí),這些映射對(duì)應(yīng)關(guān)系可以;f皮立刻應(yīng)用。如上所述,在所述TLB條目填充操作完成之后,之前處于未映射狀態(tài)的地址被保存到客戶TLB中,從而在之后對(duì)該地址的調(diào)用中,其可以直接被應(yīng)用?,F(xiàn)在返回圖5,在步驟520的TLB條目填充操作完成之后,或者如果在步驟515的判斷結(jié)果是否定的,即所使用的客戶EA是已映射的,則所述操作進(jìn)行到步驟530,在其中基于所述加載/存儲(chǔ)指令的具體功能進(jìn)行存儲(chǔ)器訪問并執(zhí)行相應(yīng)的加載/存儲(chǔ)指令的操作。為了便于更清楚的理解,以下參考圖9A和圖9B描述了所述對(duì)加載/存儲(chǔ)指令進(jìn)行翻譯和執(zhí)行的具體流程。圖9A和圖9B是分別描述了針對(duì)32位客戶系統(tǒng)和64位客戶系統(tǒng)進(jìn)行的對(duì)加載/存儲(chǔ)指令進(jìn)行翻譯和執(zhí)行的流程圖。注意,僅在出現(xiàn)未映射的客戶EA時(shí)才會(huì)由于觸發(fā)分段錯(cuò)誤異常以及隨后的客戶TLB條目填充過程,該客戶EA在之后被訪問時(shí)都會(huì)是已映射的,因此,在圖9A和圖9B中省略了所述操作。在針對(duì)32位客戶系統(tǒng)的圖9A的流程中,在步驟905,首先在客戶系統(tǒng)上進(jìn)行邏輯到物理的寄存器轉(zhuǎn)換。然后在步驟910,進(jìn)行有效地址(EA)計(jì)算。所計(jì)算出的EA是客戶EA。這兩個(gè)步驟可以在圖5中的步驟510的期間執(zhí)行,二者均是本領(lǐng)域內(nèi)已知的,在此不做進(jìn)一步說明。由于32位客戶系統(tǒng)可以被完全容納于上述安全區(qū)域中,因此不需要進(jìn)行客戶EA是否處于安全區(qū)域的判斷。接著在步驟915,進(jìn)行直接存儲(chǔ)器訪問。由于所計(jì)算出的客戶EA可以被直接用作宿主機(jī)上的宿主EA,因此可以通過宿主EA經(jīng)由宿主MMU進(jìn)行直接存儲(chǔ)器訪問。之后,對(duì)加載/存儲(chǔ)指令的執(zhí)行完成。在針對(duì)64位客戶系統(tǒng)的圖9B的流程中,首先在步驟955,在客戶系統(tǒng)上進(jìn)行邏輯到物理的寄存器轉(zhuǎn)換。然后在步驟960,進(jìn)行有效地址(EA)計(jì)算。所計(jì)算出的EA是客戶EA。上述兩個(gè)步驟與圖9A中的步驟卯5和910相同,可以在圖5中的步驟510的期間執(zhí)行。由于64位客戶系統(tǒng)無法被完全容納于上述安全區(qū)域中,因此在步驟965,判斷所述客戶EA是否處于安全區(qū)域。如果判斷結(jié)果是肯定的,則在步驟970進(jìn)行直接存儲(chǔ)器訪問。與圖9A的步驟915相同,由于所計(jì)算出的客戶EA可以直接用作宿主機(jī)上的宿主EA,因此可以通過宿主EA經(jīng)由宿主MMU進(jìn)行直接存儲(chǔ)器訪問。如果在步驟965的判斷結(jié)果是否定的,則所述客戶EA不在安全區(qū)域中,本發(fā)明的機(jī)制無法被應(yīng)用。接著遵循傳統(tǒng)的地址翻譯流程,在步驟975由所仿真的客戶MMU實(shí)施客戶EA到客戶PA的翻譯以及TLB查找,以及在步驟980通過所翻譯的客戶PA(等同于宿主EA或可映射到宿主EA)進(jìn)行通常的存儲(chǔ)器訪問。之后,對(duì)加載/存儲(chǔ)指令的執(zhí)行完成。由于在圖9B的流程中嵌入了安全區(qū)域檢查,而該檢查自身引入了一定的開銷。于是,當(dāng)對(duì)64位客戶系統(tǒng)進(jìn)行仿真時(shí),通過實(shí)現(xiàn)本發(fā)明的方法所能實(shí)現(xiàn)的性能提高取決于有多少要訪問的有效地址落在所述安全區(qū)域中?;氐綀D5所述的過程,在步驟530完成對(duì)存儲(chǔ)器的訪問以及對(duì)所述加載/存儲(chǔ)指令的操作。接著在步驟535判斷是否存在更多加載/存儲(chǔ)指令。如果是,則所述操作循環(huán)回到步驟510,繼續(xù)進(jìn)行對(duì)下一個(gè)加載/存儲(chǔ)指令進(jìn)行處理。直到不存在更多加載/存儲(chǔ)指令時(shí),所述操作在步驟540結(jié)束。另外,當(dāng)客戶邏輯頁面到宿主物理頁面的映射發(fā)生變化時(shí),為了確保正確的映射關(guān)系,使得客戶TLB的狀態(tài)與其實(shí)際狀態(tài)一致,則需要了解所有的客戶TLB條目無效操作的發(fā)生以便及時(shí)進(jìn)行去除映射的工作。這可以通過將一個(gè)代碼段插入到所有TLB無效指令的翻譯模式中來實(shí)現(xiàn),如圖IO所示?,F(xiàn)在參考圖10,示出了使客戶TLB條目無效的操作的流程圖。首先將一個(gè)特定代碼段插入到翻譯模式中,以便在TLB條目變得無效之后立即進(jìn)行去除映射的工作。所述操作首先開始于步驟1000,并繼續(xù)進(jìn)行到步驟1005,在客戶指令執(zhí)行流程中出現(xiàn)TLB無效指令。在發(fā)現(xiàn)TLB無效指令之后,所述代碼段就開始進(jìn)行客戶TLB條目無效操作,步驟1010。即,使得相關(guān)的TLB條目變?yōu)闊o效條目。在步驟1015將對(duì)應(yīng)于此條目的宿主存儲(chǔ)器中的邏輯頁面去除映射。接著所述操作在步驟1020結(jié)束。通過所述使客戶TLB條目無效的操作,可以保持宿主存儲(chǔ)器映射關(guān)系與客戶TLB的狀態(tài)同步。以上是對(duì)根據(jù)本發(fā)明的用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)MMU仿真進(jìn)行加速的方法進(jìn)行的詳細(xì)描述,在同一發(fā)明構(gòu)思下,提供了一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)MMU仿真進(jìn)行加速的裝置和全系統(tǒng)仿真器。圖ll示出了根據(jù)本發(fā)明的全系統(tǒng)仿真器的框圖。如圖11所示,所述全系統(tǒng)仿真器包括客戶系統(tǒng)1100以及根據(jù)本發(fā)明的動(dòng)態(tài)二進(jìn)制翻譯器1150。在所述動(dòng)態(tài)二進(jìn)制翻譯器1150中應(yīng)用了根據(jù)本發(fā)明的用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)MMU仿真進(jìn)行加速的方法而設(shè)計(jì)的裝置,所述裝置主要由初始化模塊1105、指令翻譯優(yōu)化模塊1115及客戶TLB控制模塊1120組成??蛻粝到y(tǒng)1100為在根據(jù)本發(fā)明的全系統(tǒng)仿真器上所仿真的客戶系統(tǒng),其提供了在其上運(yùn)行操作系統(tǒng)和應(yīng)用所需的全部單元,包括仿真的存儲(chǔ)器1101、仿真的MMU和TLB1102、仿真的寄存器1103、以及仿真的I/O設(shè)備1104。其中,仿真的存儲(chǔ)器1101是由宿主機(jī)分配的虛擬內(nèi)存。客戶系統(tǒng)中的操作系統(tǒng)和應(yīng)用都存儲(chǔ)在這個(gè)仿真的存儲(chǔ)器中。從所仿真的客戶系統(tǒng)的角度來看,仿真的存儲(chǔ)器1101就好像是實(shí)際機(jī)器內(nèi)的物理存儲(chǔ)器一樣。仿真的MMU和TLB1102可以仿真地址翻譯功能。仿真的寄存器1103可以仿真客戶機(jī)系統(tǒng)中的寄存器。例如,如果客戶系統(tǒng)是x86,則仿真的寄存器可以包括eax、ebx等。如果客戶系統(tǒng)是PowerPC,則仿真的寄存器可以包括r0、rl等。仿真的寄存器1103在宿主機(jī)系統(tǒng)上通過32位或64位長的整數(shù)來進(jìn)行仿真。仿真的I/O設(shè)備1104類似于串行端口、物理接口卡等。由于通常情況下客戶系統(tǒng)需要具備這些設(shè)備的功能,所以全系統(tǒng)仿真器必須仿真這些單元。當(dāng)然,根據(jù)設(shè)計(jì)需要,所述全系統(tǒng)仿真器還可以仿真其它設(shè)備,在此為了簡(jiǎn)單起見并未示出。如圖ll所示,根據(jù)本發(fā)明的動(dòng)態(tài)二進(jìn)制翻譯器1150進(jìn)一步包括初始化模塊1105、指令翻譯模塊1110、指令翻譯優(yōu)化模塊1115、客戶TLB控制模塊1120、翻譯緩存模塊1125以及仿真器控制模塊1130。如前所述,初始化模塊1105、指令翻譯優(yōu)化模塊1115以及客戶TLB控制模塊1120真進(jìn)行加速的裝置。初始化4莫塊1105用于執(zhí)行仿真器的初始化操作。初始化模塊1105進(jìn)一步包括邊界設(shè)置裝置1106、仿真器轉(zhuǎn)移裝置1107和安全區(qū)域管理裝置1108。具體而言,邊界設(shè)置裝置1106用于在所述宿主系統(tǒng)為所述全系統(tǒng)仿真器分配的邏輯空間中設(shè)置邊界,從而將所述邏輯空間劃分為安全區(qū)域和仿真器占用區(qū)域(其中在優(yōu)選實(shí)施例中,所述安全區(qū)域是在所述邏輯空間中位于邊界之下的區(qū)域);仿真器轉(zhuǎn)移裝置1107用于將全系統(tǒng)仿真器自身從所占用的初始宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中;以及安全區(qū)域管理裝置1108用于將所述安全區(qū)域供所g戶系統(tǒng)的至少一部分使用,以及將最初所設(shè)置的安全區(qū)域標(biāo)記為未映射區(qū)域。指令翻譯模塊1110與傳統(tǒng)的全系統(tǒng)仿真器中的指令翻譯模塊相同。26即,對(duì)要執(zhí)行的指令進(jìn)行翻譯,并將指令傳送到翻譯緩存模塊1125中進(jìn)行存儲(chǔ)。在遇到客戶指令中的加載/存儲(chǔ)指令時(shí),則將所述指令傳送給指令翻譯優(yōu)化模塊1115進(jìn)行翻譯。指令翻譯優(yōu)化模塊1115負(fù)責(zé)在指令翻譯模塊1110遇到客戶系統(tǒng)的加載/存儲(chǔ)指令時(shí),具體使用本發(fā)明中提出的加載/存儲(chǔ)指令翻譯模式對(duì)此類指令進(jìn)行翻譯,并將翻譯后生成的代碼回傳給指令翻譯模塊1110。所述翻譯才莫式的具體流程可以參見圖5、圖9A和9B并結(jié)合上文的相應(yīng)描述,在此不再詳細(xì)4又述??蛻鬞LB控制模塊1120負(fù)責(zé)對(duì)所仿真的TLB進(jìn)行管理,包括填入新的TLB條目、更新TLB條目、以及使TLB的現(xiàn)有條目無效。所述操作都是為了保證客戶TLB中的狀態(tài)與其實(shí)際狀態(tài)一致。所述操作的具體流程可以參照?qǐng)D8、圖10并結(jié)合上文的相應(yīng)描述,在此不再詳細(xì)敘述。仿真器控制模塊1130用于在仿真器運(yùn)行過程中對(duì)各個(gè)模塊的操作進(jìn)行調(diào)度控制。以上是對(duì)根據(jù)本發(fā)明的用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)MMU仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器進(jìn)行的詳細(xì)描述。應(yīng)該注意,由于TLB在實(shí)地址模式下不工作,因此本發(fā)明的方法、裝置和全系統(tǒng)仿真器在此模式下也不工作。從而當(dāng)所仿真的客戶系統(tǒng)(通常為早期的系統(tǒng))在實(shí)地址下運(yùn)行時(shí),根據(jù)本發(fā)明的方法、裝置和全系統(tǒng)仿真器僅進(jìn)行對(duì)加載/存儲(chǔ)指令的通常翻譯。而當(dāng)客戶系統(tǒng)切換到保護(hù)地址模式之后,根據(jù)本發(fā)明的方法、裝置和全系統(tǒng)仿真器可以對(duì)存儲(chǔ)器訪問進(jìn)行優(yōu)化,從而提供了改善的性能。這意味著,本發(fā)明可以完全兼容早期的系統(tǒng)。實(shí)際上,由于現(xiàn)代計(jì)算機(jī)系統(tǒng)極少在實(shí)地址模式下運(yùn)行,因此該設(shè)計(jì)方案對(duì)仿真性能基本沒有影響。以下列出了本發(fā)明對(duì)于性能提高的試驗(yàn)結(jié)果。表1是在全系統(tǒng)仿真器QEMU上仿真32位的客戶系統(tǒng)的情形中,在未實(shí)施本發(fā)明和已實(shí)施本發(fā)明的仿真器上分別運(yùn)行dhrystone和bzip2而得出的試驗(yàn)結(jié)果,所述試驗(yàn)結(jié)果是通過Benchmark測(cè)試軟件所得出的數(shù)據(jù),其中dhrystone和bzip2是用來進(jìn)行測(cè)試而運(yùn)行的軟件應(yīng)用。在此情形中,所有的加載/存儲(chǔ)指令均可跳過傳統(tǒng)的客戶有效地址到宿主有效地址的翻譯過程,而直接通過客戶有效地址進(jìn)行宿主存儲(chǔ)器訪問。表l<table>tableseeoriginaldocumentpage28</column></row><table>由表1可以看出,經(jīng)過本發(fā)明優(yōu)化的全系統(tǒng)仿真器可以大大地縮短代碼執(zhí)行時(shí)間,從而實(shí)現(xiàn)比傳統(tǒng)的全系統(tǒng)仿真器更快的代碼執(zhí)行速度。其中,如表1所示,運(yùn)行dhrystone達(dá)到的速度提高為1.8倍,而運(yùn)行bzip2達(dá)到的速度提高為2.0倍。表2是在全系統(tǒng)仿真器QEMU上仿真64位的客戶系統(tǒng)的情形中,在未實(shí)施本發(fā)明和已實(shí)施本發(fā)明的仿真器上分別運(yùn)行dhrystone和bzip2而得出的試驗(yàn)結(jié)果。在此情形中,僅有部分的加載/存儲(chǔ)指令可以跳過傳統(tǒng)的客戶有效地址到宿主有效地址的翻譯過程,而直接通過客戶有效地址進(jìn)行宿主存儲(chǔ)器訪問,而其余的加載/存儲(chǔ)指令需要執(zhí)行傳統(tǒng)的地址翻譯過程。表2<table>tableseeoriginaldocumentpage28</column></row><table>由表2可以看出,在該試驗(yàn)結(jié)果中,性能收益取決于客戶系統(tǒng)落在安全區(qū)域中的比例(命中率)。如上文所描述的,所訪問的客戶地址落在安全區(qū)域中的比例越高,所獲得的性能改善就越高。當(dāng)所訪問的客戶地址落在安全區(qū)域中的比例(命中率)為0時(shí),經(jīng)過本發(fā)明優(yōu)化的全系統(tǒng)仿真器并未顯示出性能上的改善,這是因?yàn)樵谔幚砑虞d/存儲(chǔ)指令的過程中,均按照通常的方法進(jìn)行地址翻譯,且引入了額外的指令開銷(參見圖9B),所以反而微弱地影響了系統(tǒng)性能。而隨著所訪問的客戶地址落在安全區(qū)域中的比例(命中率)增大,本發(fā)明對(duì)性能的改善也越來越大。在極端情況下,當(dāng)所訪問的客戶地址落在安全區(qū)域中的比例(命中率)為100%時(shí),與仿真32位的客戶系統(tǒng)的情形相同,所有的加載/存儲(chǔ)指令均可跳過傳統(tǒng)的地址翻譯過程而直接進(jìn)行宿主存儲(chǔ)器訪問。因此經(jīng)過本發(fā)明優(yōu)化的全系統(tǒng)仿真器可以大大地縮短代碼執(zhí)行時(shí)間,從而實(shí)現(xiàn)比初始的全系統(tǒng)仿真器更快的速度。其中,如表2所示,運(yùn)行dhrystone達(dá)到的最大速度提高為1.5倍,而運(yùn)行bzip2達(dá)到的最大速度提高為1.6倍。需要指出,在通常情況下,命中率為0的事件幾乎不可能發(fā)生。進(jìn)一步地,可以由程序員或管理員確定將客戶系統(tǒng)的哪些部分放入安全區(qū)域中,所以所述命中率在編程中是可控的,因此可以在設(shè)計(jì)和編程階段就將命中率預(yù)先置于一個(gè)較高的水平,從而確保了通過實(shí)施本發(fā)明對(duì)系統(tǒng)性能的改善。以上是參考實(shí)施例對(duì)本發(fā)明的用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)MMU仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器的詳細(xì)描述。盡管在所描述的優(yōu)選實(shí)施例中僅介紹了在64位的宿主機(jī)上仿真32位或者64位客戶系統(tǒng)的情形,但是對(duì)于本領(lǐng)域普通技術(shù)人員來說顯而易見,在任意位的宿主機(jī)上仿真小于或等于其位數(shù)的客戶系統(tǒng)的情形中同樣適用本發(fā)明,例如,在128位甚至更高位的宿主機(jī)上仿真64位、128位的客戶系統(tǒng)。如本領(lǐng)域普通技術(shù)人員可以了解的,本發(fā)明可以體現(xiàn)為方法、系統(tǒng)和/或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可以呈現(xiàn)為完全硬件實(shí)施形式、完全軟件實(shí)施形式或者軟件和硬件組合實(shí)施形式。此外,本發(fā)明可以被呈現(xiàn)為在機(jī)器可讀媒體上包括的計(jì)算機(jī)程序產(chǎn)品,機(jī)器可讀媒體上存儲(chǔ)了用于對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行編程以執(zhí)行根據(jù)本發(fā)明的過程的機(jī)器可執(zhí)行程序指令。這里所使用的術(shù)語"機(jī)器可讀媒體"包括向計(jì)算機(jī)系統(tǒng)提供用于執(zhí)行的指令的任意媒體。這種々某體可以采用多種形式,包括但是不局限于非易失性媒體、易失性媒體和傳輸媒體。非易失性媒體的常見形式例如包括軟盤、軟磁盤、硬盤、磁帶或者任何其它磁+某體、光盤ROM(CD-ROM)或者任何其它光媒體、打孔卡或者任何其它帶有孔圖案的物理媒體、可編程ROM(PROM)、可擦寫PROM(EPROM)、電EPROM(EEPROM)、閃速存儲(chǔ)器、任何其它存儲(chǔ)芯片或者盒式磁帶(cartridge)、或者計(jì)算機(jī)系統(tǒng)可以讀取并適合存儲(chǔ)指令的任何其它媒體。此外,可以理解,方框圖和/或流程圖中的每個(gè)方框以及方框圖和流程圖中的一些方框的組合可以用一些計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給一通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一機(jī)器,使得這些指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理i殳備的處理器的執(zhí)行創(chuàng)建用于實(shí)現(xiàn)在方框圖和/或流程圖內(nèi)或者方框內(nèi)所指定的功能的裝置。盡管已經(jīng)參考優(yōu)選實(shí)施例具體地示出并描述了本發(fā)明,4旦其不是為了以公開的形式窮舉或限制本發(fā)明。對(duì)于本領(lǐng)域的普通技術(shù)人員,可以在形式上和細(xì)節(jié)上進(jìn)行各種改變而不會(huì)背離本發(fā)明的精神和范圍。選擇并描述了實(shí)施例是為了最好地解釋本發(fā)明的原理和實(shí)際的應(yīng)用,以及為了使本領(lǐng)域的其它普通技術(shù)人員能夠理解對(duì)于各種實(shí)施例的本發(fā)明,所述實(shí)施例具有適合于預(yù)期的具體使用的各種修改。權(quán)利要求1.一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元仿真進(jìn)行加速的方法,所述宿主系統(tǒng)支持全系統(tǒng)仿真器,在所述全系統(tǒng)仿真器上仿真客戶系統(tǒng),所述方法包括以下步驟在所述宿主系統(tǒng)為所述全系統(tǒng)仿真器分配的邏輯空間中設(shè)置邊界,從而將所述邏輯空間劃分為安全區(qū)域和仿真器占用區(qū)域;將全系統(tǒng)仿真器自身從所占用的初始宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中;以及將所述安全區(qū)域供所述客戶系統(tǒng)的至少一部分使用。2.根據(jù)權(quán)利要求l所述的方法,其中當(dāng)運(yùn)行宿主系統(tǒng)的宿主機(jī)為64位而所仿真的客戶系統(tǒng)為32位時(shí),所述邊界被設(shè)定為OxFFFFFFFF,從而所述安全區(qū)域可以容納整個(gè)客戶系統(tǒng);以及當(dāng)運(yùn)行宿主系統(tǒng)的宿主機(jī)為64位而所仿真的客戶系統(tǒng)也為64位時(shí),所述邊界為一個(gè)特定的固定值,從而所述安全區(qū)域可以容納客戶系統(tǒng)的某些部分,其中將客戶系統(tǒng)的哪些部分放置于所述安全區(qū)域中是可控的。3.根據(jù)權(quán)利要求l所述的方法,其中所述將全系統(tǒng)仿真器自身從所占用的宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中的步驟進(jìn)一步包括如果所迷全系統(tǒng)仿真器無法被轉(zhuǎn)移到所述仿真器占用區(qū)域,則將所迷全系統(tǒng)仿真器保留在其原始位置,而將所述安全區(qū)域向上或向下調(diào)整;以及向所述客戶系統(tǒng)中的加載/存儲(chǔ)指令的翻譯模式中注入下述操作在未來的加載/存儲(chǔ)指令所要訪問的初始的客戶有效地址的計(jì)算完成之后向其附加一個(gè)地址偏移,以用于訪問位于調(diào)整后的地址空間中的所述安全區(qū)域。4.根據(jù)權(quán)利要求l所述的方法,進(jìn)一步包括在所述安全區(qū)域被設(shè)置之后,將最初所,沒置的安全區(qū)域標(biāo)記為未映射區(qū)域。5.根據(jù)權(quán)利要求4所述的方法,進(jìn)一步包括當(dāng)在所^戶系統(tǒng)上執(zhí)行加載/存儲(chǔ)指令時(shí),確定所述加載/存儲(chǔ)指令要訪問的客戶有效地址是否是未映射地址;如果所述加載/存儲(chǔ)指令要訪問的客戶有效地址不是未映射地址,則進(jìn)行存儲(chǔ)器訪問并執(zhí)行所述加載/存儲(chǔ)指令的操作;以及如果所述加載/存儲(chǔ)指令要訪問的客戶有效地址是未映射地址,則對(duì)所述全系統(tǒng)仿真器所仿真的存儲(chǔ)器管理單元中的地址轉(zhuǎn)換旁路緩沖器中的條目進(jìn)行填充,以及使得所述客戶有效地址是已映射地址,并隨后進(jìn)行存儲(chǔ)器訪問并執(zhí)行所述加載/存儲(chǔ)指令的操作。6.根據(jù)權(quán)利要求5所述的方法,其中所述進(jìn)行存儲(chǔ)器訪問并執(zhí)行所述加載/存儲(chǔ)指令的操作的步驟進(jìn)一步包括如果所述加載/存儲(chǔ)指令所要訪問的客戶有效地址位于所述安全區(qū)域之中,則所述客戶有效地址直接用作宿主系統(tǒng)中可識(shí)別的宿主有效地址,使得所述加載/存儲(chǔ)指令能夠直接對(duì)宿主機(jī)中的存儲(chǔ)器進(jìn)行存儲(chǔ)器訪問;以及如果所述加載/存儲(chǔ)指令所要訪問的客戶有效地址位于所述安全區(qū)域之外,則使得所述存儲(chǔ)器管理單元通過所述地址轉(zhuǎn)換旁路緩沖器查找進(jìn)行客戶有效地址到客戶物理地址的轉(zhuǎn)換,然后通過對(duì)應(yīng)于客戶物理地址的宿主有效地址對(duì)宿主機(jī)中的存儲(chǔ)器進(jìn)行存儲(chǔ)器訪問。7.根據(jù)權(quán)利要求5所述的方法,其中所述對(duì)所述全系統(tǒng)仿真器所仿真的存儲(chǔ)器管理單元中的地址轉(zhuǎn)換旁路緩沖器中的條目進(jìn)行填充的步驟是通過由于所述加載/存儲(chǔ)指令所要訪問的有效地址為未映射地址而觸發(fā)異常而得以進(jìn)行的。8.根據(jù)權(quán)利要求5所述的方法,其中所述對(duì)所述全系統(tǒng)仿真器所仿真的存儲(chǔ)器管理單元中的地址轉(zhuǎn)換旁路緩沖器中的條目進(jìn)行填充的步驟進(jìn)一步包括進(jìn)行所迷地址轉(zhuǎn)換旁路緩沖器的檢查;如果所述地址轉(zhuǎn)換旁路緩沖器未滿,則直接向所述地址轉(zhuǎn)換旁路緩沖器中填入新的條目;如果所述地址轉(zhuǎn)換旁路緩沖器已滿,則替換所述地址轉(zhuǎn)換旁路緩沖器中的現(xiàn)有條目,并將對(duì)應(yīng)于現(xiàn)有條目的宿主物理頁面去除映射;以及將所述客戶有效地址對(duì)應(yīng)的邏輯頁面直接映射到宿主物理頁面。9.根據(jù)權(quán)利要求8所述的方法,其中,如果所仿真的客戶系統(tǒng)自身可以確保當(dāng)頁表?xiàng)l目不在所述地址轉(zhuǎn)換旁路緩沖器中時(shí)也不會(huì)被修改,則使所述地址轉(zhuǎn)換旁路緩沖器容納比實(shí)際設(shè)定數(shù)量更多的條目,從而直接將該條目添加到所述地址轉(zhuǎn)換旁路緩沖器中,而不進(jìn)行所述地址轉(zhuǎn)換旁路緩沖器中的條目替換和物理頁面去除映射的工作,其中所述地址轉(zhuǎn)換旁路緩沖器的大小最大可以達(dá)到宿主機(jī)中的宿主地址轉(zhuǎn)換旁路緩沖器的大小。10.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括使所述地址轉(zhuǎn)換旁路緩沖器的條目無效的步驟,所述步驟包括檢測(cè)地址轉(zhuǎn)換旁路緩沖器無效指令;使得相關(guān)的地址轉(zhuǎn)換旁路緩沖器的條目變?yōu)闊o效條目;以及將對(duì)應(yīng)于此條目的宿主機(jī)中的存儲(chǔ)器中的邏輯頁面去除映射。11.一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元仿真進(jìn)行加速的裝置,所述宿主系統(tǒng)支持全系統(tǒng)仿真器,在所述全系統(tǒng)仿真器上仿真客戶系統(tǒng),所述裝置包括邊界設(shè)置裝置,用于在所述宿主系統(tǒng)為所述全系統(tǒng)仿真器分配的邏輯空間中設(shè)置邊界,從而將所述邏輯空間劃分為安全區(qū)域和仿真器占用區(qū)域;仿真器轉(zhuǎn)移裝置,用于將全系統(tǒng)仿真器自身從所占用的初始宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中;以及安全區(qū)域管理裝置,用于將所述安全區(qū)域供所ii^戶系統(tǒng)的至少一部分使用。12.根據(jù)權(quán)利要求11所述的裝置,其中所述邊界設(shè)置裝置進(jìn)一步用于當(dāng)運(yùn)行宿主系統(tǒng)的宿主機(jī)為64位而所仿真的客戶系統(tǒng)為32位時(shí),將所述邊界設(shè)定為OxFFFFFFFF,從而所述安全區(qū)域可以容納整個(gè)客戶系統(tǒng);以及當(dāng)運(yùn)行宿主系統(tǒng)的宿主機(jī)為64位而所仿真的客戶系統(tǒng)也為64位時(shí),將所述邊界設(shè)定為一個(gè)特定的固定值,從而所述安全區(qū)域可以容納客戶系統(tǒng)的某些部分,其中將客戶系統(tǒng)的哪些部分放置于所述安全區(qū)域中是可控的。13.根據(jù)權(quán)利要求ll所述的裝置,其中所述仿真器轉(zhuǎn)移裝置進(jìn)一步用于如果所述全系統(tǒng)仿真器無法被轉(zhuǎn)移到所述仿真器占用區(qū)域,則將所述全系統(tǒng)仿真器保留在其原始位置,而將所述安全區(qū)域向上或向下調(diào)整;以及向所述客戶系統(tǒng)中的加載/存儲(chǔ)指令的翻譯模式中注入下述操作在未來的加載/存儲(chǔ)指令所要訪問的初始的客戶有效地址的計(jì)算完成之后向其附加一個(gè)地址偏移,以用于訪問位于調(diào)整后的地址空間中的所述安全區(qū)域。14.根據(jù)權(quán)利要求ll所述的裝置,其中所述安全區(qū)域管理裝置進(jìn)一步包括用于將最初所設(shè)置的安全區(qū)域標(biāo)記為未映射區(qū)域的裝置。15.根據(jù)權(quán)利要求ll所述的裝置,進(jìn)一步包括指令翻譯模塊,用于對(duì)所述客戶系統(tǒng)上執(zhí)行的指令進(jìn)行翻譯,并在遇到加載/存儲(chǔ)指令時(shí),將所述指令傳送給指令翻譯優(yōu)化模塊進(jìn)行翻譯;指令翻譯優(yōu)化模塊,用于當(dāng)執(zhí)行所述加載/存儲(chǔ)指令時(shí),確定所述加載/存儲(chǔ)指令要訪問的客戶有效地址是否是未映射地址,并且如果所述客戶有效地址不是未映射地址,進(jìn)行存儲(chǔ)器訪問并執(zhí)行所述加載/存儲(chǔ)指令的操作;以及客戶地址轉(zhuǎn)換旁路緩沖器管理模塊,用于如果所述加載/存儲(chǔ)指令要訪問的客戶有效地址是未映射地址,則對(duì)所述全系統(tǒng)仿真器所仿真的存儲(chǔ)器管理單元中的地址轉(zhuǎn)換旁路緩沖器中的條目進(jìn)行填充,以及使得所述客戶有效地址是已映射地址。16.根據(jù)權(quán)利要求15所述的裝置,其中所述指令翻譯優(yōu)化模塊進(jìn)一步包括用于如果所述加載/存儲(chǔ)指令所要訪問的客戶有效地址位于所述安全區(qū)域之中,則所述客戶有效地址直接用作宿主系統(tǒng)中可識(shí)別的宿主有效地址,使得所述加載/存儲(chǔ)指令能夠直接對(duì)宿主機(jī)中的存儲(chǔ)器進(jìn)行存儲(chǔ)器訪問的裝置;以及用于如果所述加載/存儲(chǔ)指令所要訪問的客戶有效地址位于所述安全區(qū)域之外,則使得所述存儲(chǔ)器管理單元通過所述地址轉(zhuǎn)換旁路緩沖器查找進(jìn)行客戶有效地址到客戶物理地址的轉(zhuǎn)換,然后通過對(duì)應(yīng)于客戶物理地址的宿主有效地址對(duì)宿主機(jī)中的存儲(chǔ)器進(jìn)行存儲(chǔ)器訪問的裝置。17.根據(jù)權(quán)利要求15所述的裝置,其中所述地址轉(zhuǎn)換旁路緩沖器管理模塊對(duì)所仿真的存儲(chǔ)器管理單元中的地址轉(zhuǎn)換旁路緩沖器中的條目進(jìn)行填充是通過由于所述指令管理模塊確定所述加載/存儲(chǔ)指令所要訪問的有效地址為未映射地址而觸發(fā)異常而得以進(jìn)行的。18.根據(jù)權(quán)利要求15所述的裝置,其中所述地址轉(zhuǎn)換旁路緩沖器管理模塊進(jìn)一步包括用于進(jìn)行所述地址轉(zhuǎn)換旁路緩沖器的檢查的裝置;用于如果所述地址轉(zhuǎn)換旁路緩沖器未滿,則直接向所述地址轉(zhuǎn)換旁路緩沖器中填入新的條目的裝置;用于如果所述地址轉(zhuǎn)換旁路緩沖器已滿,則替換所述地址轉(zhuǎn)換旁路緩沖器中的現(xiàn)有條目,并將對(duì)應(yīng)于現(xiàn)有條目的宿主物理頁面去除映射的裝置;以及用于將所述客戶有效地址對(duì)應(yīng)的邏輯頁面直接映射到宿主物理頁面的裝置;其中,所述地址轉(zhuǎn)換旁路緩沖器管理模塊進(jìn)一步包括下述裝置,用于如果所仿真的客戶系統(tǒng)自身可以確保當(dāng)頁表?xiàng)l目不在所述地址轉(zhuǎn)換旁路緩沖器中時(shí)也不會(huì)被修改,則使所述地址轉(zhuǎn)換旁路緩沖器容納比實(shí)際設(shè)定數(shù)量更多的條目,從而直接將該條目添加到所述地址轉(zhuǎn)換旁路緩沖器中,而不進(jìn)行所述地址轉(zhuǎn)換旁路緩沖器中的條目替換和物理頁面去除映射的工作,其中所述地址轉(zhuǎn)換旁路緩沖器的大小最大可以達(dá)到宿主機(jī)中的宿主地址轉(zhuǎn)換旁路緩沖器的大小。19.根據(jù)權(quán)利要求11所述的裝置,所述地址轉(zhuǎn)換旁路緩沖器管理模塊進(jìn)一步包括用于使所述地址轉(zhuǎn)換旁路緩沖器的條目無效的裝置,其包括用于檢測(cè)地址轉(zhuǎn)換旁路緩沖器無效指令的裝置;用于使得相關(guān)的地址轉(zhuǎn)換旁路緩沖器的條目變?yōu)闊o效條目的裝置;以及用于將對(duì)應(yīng)于此條目的宿主機(jī)中的存儲(chǔ)器中的邏輯頁面去除映射的裝置。20.—種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元仿真進(jìn)行加速的全系統(tǒng)仿真器,包括根據(jù)權(quán)利要求11至19中任何一項(xiàng)所述的裝置。全文摘要一種用于通過在宿主系統(tǒng)上的直接地址映射而對(duì)存儲(chǔ)器管理單元(MMU)仿真進(jìn)行加速的方法、裝置和全系統(tǒng)仿真器,所述宿主系統(tǒng)支持全系統(tǒng)仿真器,在所述全系統(tǒng)仿真器上仿真客戶系統(tǒng),所述方法包括以下步驟在所述宿主系統(tǒng)為所述全系統(tǒng)仿真器分配的邏輯空間中設(shè)置邊界,從而將所述邏輯空間劃分為安全區(qū)域和仿真器占用區(qū)域;將全系統(tǒng)仿真器自身從所占用的初始宿主邏輯空間轉(zhuǎn)移到所述仿真器占用區(qū)域中;以及將所述安全區(qū)域供所述客戶系統(tǒng)的至少一部分使用。文檔編號(hào)G06F9/455GK101425020SQ200710167039公開日2009年5月6日申請(qǐng)日期2007年10月31日優(yōu)先權(quán)日2007年10月31日發(fā)明者A·蓋特,鯤王,王華勇,宇章申請(qǐng)人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
江永县| 米脂县| 朔州市| 樟树市| 手机| 江山市| 汽车| 克什克腾旗| 平武县| 堆龙德庆县| 罗江县| 太保市| 墨脱县| 和平区| 泰来县| 绍兴县| 福海县| 剑川县| 绩溪县| 拉孜县| 华坪县| 宜都市| 抚松县| 双柏县| 巴林左旗| 龙陵县| 青川县| 沛县| 北海市| 枣阳市| 凤阳县| 湄潭县| 洛隆县| 金塔县| 江华| 东山县| 叙永县| 静安区| 弥渡县| 南宫市| 莲花县|