国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      虛擬機(jī)中的內(nèi)存訪問方法和裝置及查找器的制作方法

      文檔序號(hào):6367590閱讀:195來源:國知局
      專利名稱:虛擬機(jī)中的內(nèi)存訪問方法和裝置及查找器的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種虛擬機(jī)中的內(nèi)存訪問方法和裝置及查找器。
      背景技術(shù)
      隨著計(jì)算機(jī)硬件設(shè)計(jì)技術(shù)的發(fā)展,計(jì)算機(jī)硬件平臺(tái)日益多元化,在帶來計(jì)算性能大幅提升的同時(shí),也加劇了軟件兼容性問題。異構(gòu)虛擬機(jī)技術(shù)是解決軟件兼容性問題的重要手段。異構(gòu)虛擬機(jī)能夠在一種硬件平臺(tái)上運(yùn)行針對(duì)另一種硬件平臺(tái)編寫的二進(jìn)制可執(zhí)行程序,其原理是在宿主硬件平臺(tái)上通過軟件或軟硬件結(jié)合的方式虛擬出目標(biāo)硬件平臺(tái)的指令系統(tǒng)和相關(guān)硬件部件,從而使針對(duì)目標(biāo)硬件平臺(tái)設(shè)計(jì)的軟件能夠在其上運(yùn)行。在異構(gòu)虛擬機(jī)系統(tǒng)中,TLB (Translation Lookaside Buffer,轉(zhuǎn)譯后備緩沖器)的模擬效率是影響虛擬機(jī)整體效率的關(guān)鍵。TLB為典型的內(nèi)容可尋址存儲(chǔ)器,存放虛擬地址和其對(duì)應(yīng)的物理地址條目,用來加速虛擬地址到物理地址的轉(zhuǎn)換過程。其索引關(guān)鍵字為虛擬內(nèi)存地址,索引結(jié)果為物理內(nèi)存地址。當(dāng)CPU在執(zhí)行過程中需要訪問內(nèi)存時(shí),會(huì)根據(jù)指令中的虛擬內(nèi)存地址向TLB發(fā)出查詢請(qǐng)求。如果請(qǐng)求的虛擬地址在TLB中存在,TLB將在非常短的時(shí)間內(nèi)返回對(duì)應(yīng)的物理地址給CPU,之后CPU就可以使用得到的物理地址訪問內(nèi)存。如果請(qǐng)求的虛擬地址不在TLB中,就會(huì)使用軟件的頁表進(jìn)行虛實(shí)地址轉(zhuǎn)換,而軟件頁表的訪問速度比TLB慢很多。由于訪存操作在一般軟件中的執(zhí)行頻率非常高,因而TLB模擬器在虛擬機(jī)的執(zhí)行過程中的訪問頻率也非常高,TLB模擬器的性能直接影響整個(gè)虛擬機(jī)的執(zhí)行性能。已有的虛擬機(jī)大多采用純軟件的方法模擬目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程(如QEMU, Bochs, Simple-scalar等)。以著名開源虛擬機(jī)軟件QEMU為例,其目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程可分為三步1)由目標(biāo)機(jī)虛擬地址到目標(biāo)機(jī)物理地址的轉(zhuǎn)換,這里的目標(biāo)機(jī)物理地址實(shí)質(zhì)上是QEMU模擬的目標(biāo)機(jī)內(nèi)存的物理地址。QEMU通過純軟件模擬的TLB完成這一轉(zhuǎn)換過程。2)由目標(biāo)機(jī)物理地址到宿主機(jī)虛擬地址的轉(zhuǎn)換,QEMU通過把目標(biāo)機(jī)物理地址與模擬的目標(biāo)機(jī)內(nèi)存首地址對(duì)應(yīng)的宿主機(jī)虛擬地址相加完成這一轉(zhuǎn)換。3)由宿主機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換,這一步轉(zhuǎn)換不是由虛擬機(jī)直接完成,而是交由宿主機(jī)硬件完成。QEMU在上述步驟I中采用純軟件的方式模擬TLB的功能,通過哈希查找的方式完成由目標(biāo)機(jī)虛擬地址到目標(biāo)機(jī)物理地址的轉(zhuǎn)換,以目標(biāo)計(jì)算平臺(tái)基本塊的首條指令物理地址作為檢索鍵值,以宿主計(jì)算平臺(tái)基本塊的首條指令虛擬地址作為檢索內(nèi)容。為了提高轉(zhuǎn)換效率,QEMU對(duì)高頻執(zhí)行的基本塊,建立每個(gè)鏈最多只有一個(gè)node的hash快表(稱為指令cache),在針對(duì)一個(gè)指令地址查找基本塊時(shí),采用兩級(jí)查找首先在指令cache、其次在hash表中進(jìn)行查找。這種純軟件的TLB模擬方式將原本硬件完成的工作上升到軟件層次完成,使得需要用軟件指令處理不同體系結(jié)構(gòu)之間的差異性,因而會(huì)帶來明顯的額外性能開銷。具體來說,圖I中虛線部分示出這種純軟件TLB模擬方法,包括步驟(I):查找軟件TLB;如果查找到,獲取相應(yīng)的物理地址,如果查找不到,執(zhí)行步驟(2):進(jìn)行TLB缺失異常處理。在上述的步驟(I)中,查找TLB需要遍歷軟件TLB表,包含循環(huán)操作,其時(shí)間復(fù)雜度與TLB表項(xiàng)數(shù)成正比。即使在某些情況下可通過hash表加速其查找過程,仍需要數(shù)十條指令方可完成,因而會(huì)帶來明顯的額外性能開銷。針對(duì)相關(guān)技術(shù)中的上述問題,目前尚未提出有效的解決方案。

      發(fā)明內(nèi)容
      本發(fā)明提供了一種虛擬機(jī)中的內(nèi)存訪問方法和裝置及查找器,以至少解決相關(guān)技術(shù)中虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來額外性能開銷的問題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種虛擬機(jī)中的內(nèi)存訪問方法,包括根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器;若在第一查找 器中查找到與虛擬地址對(duì)應(yīng)的物理地址,則訪問查找到的物理地址指示的物理內(nèi)存。優(yōu)選的,根據(jù)指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址包括判斷CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,檢索鍵值為來自虛擬機(jī)的訪問指令中的虛擬地址;若CAM中是存在索弓I域內(nèi)容與檢索鍵值相同的表項(xiàng),則CAM返回索引域內(nèi)容與檢索鍵值相同的數(shù)據(jù)域內(nèi)容。優(yōu)選的,根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址之后,還包括若在第一查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址,則通過第二查找器查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第二查找器為純軟件物理地址查找器;若在第二查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址,則獲取虛擬地址對(duì)應(yīng)的物理地址,并根據(jù)獲取的虛擬地址對(duì)應(yīng)的物理地址訪問物理內(nèi)存。優(yōu)選的,通過第二查找器查找與虛擬地址對(duì)應(yīng)的物理地址之后,還包括若在第二查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址,則分配內(nèi)存地址與虛擬地址對(duì)應(yīng),并訪問分配的內(nèi)存地址;將虛擬地址和分配的內(nèi)存地址存入第二查找器。優(yōu)選的,其特征在于,還包括若在第二查找器中記錄的物理地址被查找的頻率超過預(yù)定閾值,則將虛擬地址和與虛擬地址對(duì)應(yīng)的物理地址存入第一查找器的CAM中。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種查找器,該查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,包括第一查找單元,用于根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址查找與虛擬地址對(duì)應(yīng)的物理地址;第一訪問單元,用于在第一查找單元查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),訪問查找到的物理地址指示的物理內(nèi)存。優(yōu)選的,第一查找單元包括第一判斷模塊,用于判斷CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,檢索鍵值為來自虛擬機(jī)的訪問指令中的虛擬地址;第一返回模塊,用于在第一判斷模塊判斷出CAM中是存在索弓I域內(nèi)容與檢索鍵值相同的表項(xiàng)時(shí),返回CAM中索引域內(nèi)容與檢索鍵值相同的數(shù)據(jù)域內(nèi)容。根據(jù)本發(fā)明的又一個(gè)方面,提供了一種虛擬機(jī)中的內(nèi)存訪問裝置,該裝置包括第二查找單元,用于根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器;第二訪問單元,用于在第一查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),訪問查找到的物理地址指示的物理內(nèi)存。優(yōu)選的,第二查找單元包括第二判斷模塊,用于判斷CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,檢索鍵值為來自虛擬機(jī)的訪問指令中的虛擬地址;第二返回模塊,用于在CAM中是存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng)時(shí),返回CAM中索引域內(nèi)容與檢索鍵值相同的數(shù)據(jù)域內(nèi)容。優(yōu)選的,還包括第三查找單元,用于在第一查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),通過第二查找器查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第二查找器為純軟件物理地址查找器;第三訪問單元,用于在第二查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),獲取虛擬地址對(duì)應(yīng)的物理地址,并根據(jù)獲取的虛擬地址對(duì)應(yīng)的物理地址訪問物理內(nèi)存。
      優(yōu)選的,還包括分配單元,用于在第二查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),分配內(nèi)存地址與虛擬地址對(duì)應(yīng),并訪問分配的內(nèi)存地址;第一存儲(chǔ)單元,用于將虛擬地址和分配的內(nèi)存地址存入第二查找器。通過本發(fā)明,在虛擬機(jī)中從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程中,首先在由內(nèi)容索引全相聯(lián)存儲(chǔ)器CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器中進(jìn)行查找,若查找到虛擬地址對(duì)應(yīng)的物理地址,直接訪問查找到的物理地址。這種使用CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器將大部分的查找操作從查找內(nèi)存中的數(shù)組轉(zhuǎn)化為查找硬件CAM,能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,解決了相關(guān)技術(shù)中虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來額外性能開銷的問題,達(dá)到減小了虛擬機(jī)工作過程中的開銷的技術(shù)效果。


      此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)相關(guān)技術(shù)的純軟件的TLB模擬方式的一種示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問方法的一種優(yōu)選的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的查找器的一種優(yōu)選的結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問裝置的一種優(yōu)選的結(jié)構(gòu)圖;圖5是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問裝置的又一種優(yōu)選的結(jié)構(gòu)圖;圖6是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問裝置的又一種優(yōu)選的結(jié)構(gòu)圖;圖7是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問裝置的又一種優(yōu)選的結(jié)構(gòu)圖;圖8是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問裝置的另一種優(yōu)選的結(jié)構(gòu)圖;圖9是根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)中的內(nèi)存訪問方法的一種優(yōu)選的流程示意圖。
      具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。實(shí)施例I本實(shí)施例提供了一種虛擬機(jī)中的內(nèi)存訪問方法,具體地,如圖2所示,該方法包括S202,根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第一查找器為由內(nèi)容索引全相聯(lián)存儲(chǔ)器CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器;S204,若在第一查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址,則訪問查找到的物理地址指示的物理內(nèi)存。上述優(yōu)選的實(shí)施方式的實(shí)施,在虛擬機(jī)中從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程中,首先在由內(nèi)容索引全相聯(lián)存儲(chǔ)器CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器(第一查找器)中進(jìn)行查找,若查找到虛擬地址對(duì)應(yīng)的物理地址,直接訪問查找到的物理地址。這種使用CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器將大部分的查找操作從查找內(nèi)存中的數(shù)組轉(zhuǎn)化為查找硬件CAM,能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,解決了相關(guān)技術(shù)中虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來 額外性能開銷的問題,減小了虛擬機(jī)工作過程中的開銷。本優(yōu)選的實(shí)施例還提供了一種根據(jù)指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址的方法,具體來說,該方法包括判斷CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,檢索鍵值為來自虛擬機(jī)的訪問指令中的虛擬地址;若CAM中是存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),則CAM返回索引域內(nèi)容與檢索鍵值相同的數(shù)據(jù)域內(nèi)容。在上述優(yōu)選的實(shí)施方式中,把虛擬地址作為檢索鍵值在第一查找器CAM的索引域內(nèi)容查找虛擬地址對(duì)應(yīng)的物理地址,由于第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,因此能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,減小了虛擬機(jī)工作過程中的開銷。本優(yōu)選的實(shí)施例還對(duì)上述的虛擬機(jī)中的內(nèi)存訪問方法進(jìn)行了優(yōu)化,具體地,在根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址之后,該方法還包括若在第一查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址,則通過第二查找器查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第二查找器為純軟件物理地址查找器;若在第二查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址,則獲取虛擬地址對(duì)應(yīng)的物理地址,并根據(jù)獲取的虛擬地址對(duì)應(yīng)的物理地址訪問物理內(nèi)存。在上述優(yōu)選的實(shí)施方式中,在虛擬機(jī)從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程中,先通過第一查找器查找,由于第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,因此能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,可以減小虛擬機(jī)工作過程中的開銷,在第一查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),使用純軟件的物理地址查找器查找,保證虛擬機(jī)從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程的順利完成。本實(shí)施例還對(duì)上述的虛擬機(jī)中的內(nèi)存訪問方法進(jìn)行了進(jìn)一步優(yōu)化了,優(yōu)選的,通過第二查找器查找與虛擬地址對(duì)應(yīng)的物理地址之后,還包括若在第二查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址,則分配內(nèi)存地址與虛擬地址對(duì)應(yīng),并訪問分配的內(nèi)存地址;將虛擬地址和分配的內(nèi)存地址存入第二查找器。在上述優(yōu)選的實(shí)施方式中,優(yōu)化了上述的虛擬機(jī)中的內(nèi)存訪問方法,在第二查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),系統(tǒng)分配分配新的內(nèi)存地址與虛擬地址對(duì)應(yīng),并訪問分配的內(nèi)存地址,進(jìn)一步保證虛擬機(jī)從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程的順利完成。
      優(yōu)選的,若在第二查找器中記錄的物理地址被查找的頻率超過預(yù)定閾值,則將虛擬地址和與虛擬地址對(duì)應(yīng)的物理地址存入第一查找器的CAM中。上述優(yōu)選的技術(shù)方案的實(shí)施,在第二查找器被查找的物理地址頻率較高時(shí),可將虛擬地址和虛擬地址對(duì)應(yīng)的物理地址存入第一查找器,方便以后第一查找器的查找,進(jìn)一步的,減小了虛擬機(jī)工作過程中系統(tǒng)的開銷。實(shí)施例2在上述實(shí)施例I的基礎(chǔ)上,本優(yōu)選的實(shí)施例提供了一種查找器,該查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,優(yōu)選的,上述的CAM中包含索引域和與該索引域?qū)?yīng)的數(shù)據(jù)域。具體來說,如圖3所示,該查找器包括第一查找單元302,用于根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址查找與虛擬地址對(duì)應(yīng)的物理地址;第一訪問單元304,用于在第一查找單元302查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),訪問查找到的物理地址指示的物理內(nèi)存。上述優(yōu)選的實(shí)施方式的實(shí)施,在虛擬機(jī)中從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的 轉(zhuǎn)換過程中,首先在由內(nèi)容索引全相聯(lián)存儲(chǔ)器CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器中進(jìn)行查找,若查找到虛擬地址對(duì)應(yīng)的物理地址,直接訪問查找到的物理地址。這種使用CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器將大部分的查找操作從查找內(nèi)存中的數(shù)組轉(zhuǎn)化為查找硬件CAM,能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,解決了相關(guān)技術(shù)中虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來額外性能開銷的問題,減小了虛擬機(jī)工作過程中的開銷。進(jìn)一步地,本實(shí)施例還對(duì)上述第一查找單元302進(jìn)行了改進(jìn),優(yōu)選的,如圖4所示,上述第一查找單元302包括第一判斷模塊402,用于判斷CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,檢索鍵值為來自虛擬機(jī)的訪問指令中的虛擬地址;第一返回模塊404,用于在第一判斷模塊402判斷出CAM中是存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng)時(shí),返回CAM中索引域內(nèi)容與檢索鍵值相同的數(shù)據(jù)域內(nèi)容,上述優(yōu)選的技術(shù)方案的實(shí)施,提供了一種具體的根據(jù)指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址的方法,以實(shí)現(xiàn)在虛擬機(jī)中從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程。實(shí)施例3在上述實(shí)施例I和實(shí)施例2的基礎(chǔ)上,本實(shí)施例提供了一種虛擬機(jī)中的內(nèi)存訪問裝置,具體來說,如圖5所示,該裝置包括第二查找單元502,用于根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器;第二訪問單元504,用于在第一查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),訪問查找到的物理地址指示的物理內(nèi)存。在虛擬機(jī)中從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程中,首先在由內(nèi)容索引全相聯(lián)存儲(chǔ)器CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器(第一查找器)中進(jìn)行查找,若查找到虛擬地址對(duì)應(yīng)的物理地址,直接訪問查找到的物理地址。這種使用CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器將大部分的查找操作從查找內(nèi)存中的數(shù)組轉(zhuǎn)化為查找硬件CAM,能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,解決了相關(guān)技術(shù)中虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來額外性能開銷的問題,減小了虛擬機(jī)工作過程中的開銷。本實(shí)施例還對(duì)上述第二查找單元502進(jìn)行了改進(jìn),以實(shí)現(xiàn)根據(jù)指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址。為實(shí)現(xiàn)上述目的,具體地,如圖6所示,上述第二查找單元502還包括第二判斷模塊602,用于判斷CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,檢索鍵值為來自虛擬機(jī)的訪問指令中的虛擬地址;第二返回模塊604,用于在CAM中是存在索弓I域內(nèi)容與檢索鍵值相同的表項(xiàng)時(shí),返回CAM中索引域內(nèi)容與檢索鍵值相同的數(shù)據(jù)域內(nèi)容。在上述優(yōu)選的實(shí)施方式中,把虛擬地址作為檢索鍵值在第一查找器CAM的索引域內(nèi)容查找虛擬地址對(duì)應(yīng)的物理地址,由于第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,因此能夠·在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,減小了虛擬機(jī)工作過程中的開銷。本實(shí)施例還對(duì)上述虛擬機(jī)中的內(nèi)存訪問裝置進(jìn)行了優(yōu)化,具體來說,如圖7所示,該裝置還包括第三查找單元702,用于在第一查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),通過第二查找器查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第二查找器為純軟件物理地址查找器;第三訪問單元704,用于在第二查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),獲取虛擬地址對(duì)應(yīng)的物理地址,并根據(jù)獲取的虛擬地址對(duì)應(yīng)的物理地址訪問物理內(nèi)存。在上述優(yōu)選的實(shí)施方式中,在虛擬機(jī)從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程中,先通過第一查找器查找,由于第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,因此能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,可以減小虛擬機(jī)工作過程中的開銷,在第一查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),使用純軟件的物理地址查找器查找,保證虛擬機(jī)從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程的順利完成。本實(shí)施例還對(duì)上述虛擬機(jī)中的內(nèi)存訪問裝置進(jìn)行了進(jìn)一步的優(yōu)化,具體來說,如圖8所示,該裝置還包括分配單元802,用于在第二查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),分配物理內(nèi)存地址與虛擬地址對(duì)應(yīng),并訪問分配的物理內(nèi)存地址;第一存儲(chǔ)單元804,用于將虛擬地址和分配的內(nèi)存地址存入第二查找器。在上述優(yōu)選的實(shí)施方式中,優(yōu)化了上述的虛擬機(jī)中的內(nèi)存訪問方法,在第二查找器未查找到與虛擬地址對(duì)應(yīng)的物理地址時(shí),系統(tǒng)分配分配新的物理地址與虛擬地址對(duì)應(yīng),并訪問分配的內(nèi)存地址,進(jìn)一步保證虛擬機(jī)從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程的順利完成。優(yōu)選的,上述虛擬機(jī)中的內(nèi)存訪問裝還包括第二存儲(chǔ)單元,若在第二查找器中記錄的物理地址被查找的頻率超過預(yù)定閾值,則將虛擬地址和與虛擬地址對(duì)應(yīng)的物理地址存入第一查找器的CAM中。上述優(yōu)選的技術(shù)方案的實(shí)施,在第二查找器被查找的物理地址頻率較高時(shí),可將虛擬地址和虛擬地址對(duì)應(yīng)的物理地址存入第一查找器,方便以后第一查找器的查找,進(jìn)一步的,減小了虛擬機(jī)工作過程中系統(tǒng)的開銷。實(shí)施例4在上述實(shí)施例1-3的基礎(chǔ)上,本發(fā)明還提供了一種具體的虛擬機(jī)中的內(nèi)存訪問方法,圖9虛線內(nèi)示出該方法具體的步驟步驟(I):查找CAM;具體來說,虛擬機(jī)的虛擬CPU在執(zhí)行過程中,以循環(huán)的方式不斷取出目標(biāo)指令。如果該目標(biāo)指令為訪存指令,則取出該指令的地址(即目標(biāo)機(jī)虛擬地址),作為模擬器的輸入。以目標(biāo)機(jī)虛擬地址作為檢索鍵值,查找CAM。如果CAM中存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),則CAM會(huì)返回對(duì)應(yīng)的數(shù)據(jù)域內(nèi)容,即查找結(jié)果,執(zhí)行步驟(4)。如果CAM中不存在符合條件的表項(xiàng),則返回一個(gè)失敗信號(hào),執(zhí)行步驟(2)。優(yōu)選的,在上述步驟(I)中,如果CAM的容量不足,需要將之前存入CAM的虛擬地址和物理地址索引信息替換出去。優(yōu)選的,可以采用全部清空策略,先進(jìn)先出策略(FIFO),隨機(jī)策略(Random)或最近最少使用策略(LRU)。優(yōu)選的,在上述步驟(I)中,CAM中的數(shù)據(jù)域存儲(chǔ)的內(nèi)容可以是目標(biāo)機(jī)的物理地址,也可以是宿主機(jī)的虛擬地址或者宿主機(jī)的物理地址,具體存儲(chǔ)哪種地址可根據(jù)虛擬機(jī)運(yùn)行的軟硬件環(huán)境和實(shí)現(xiàn)復(fù)雜度來選擇。步驟(2):查找軟件TLB ;具體來說,在CAM沒有查找到虛擬地址對(duì)應(yīng)的物理地址時(shí),使用目標(biāo)虛擬地址在軟件實(shí)現(xiàn)的TLB查找器中查找物理地址。優(yōu)選的,軟件TLB查找器使用數(shù)組存儲(chǔ)目標(biāo)虛擬地 址和物理地址對(duì)應(yīng)信息,優(yōu)選的,可通過對(duì)數(shù)組內(nèi)容建立hash索弓I加快查找速度,優(yōu)選的,為了提高查找效率,可使用多級(jí)hash表存儲(chǔ)虛擬地址和物理地址的索引信息。如果hash索引中存在與目標(biāo)虛擬地址相同的鍵值,則返回對(duì)應(yīng)的數(shù)組內(nèi)容,即為所要查找的物理地址,執(zhí)行步驟(4)。同時(shí),將目標(biāo)虛擬地址和對(duì)應(yīng)的物理地址裝入CAM以供下次查詢使用。優(yōu)選的,也可在物理地址被查找的頻率超過預(yù)定閾值時(shí)再將將目標(biāo)虛擬地址和對(duì)應(yīng)的物理地址裝入CAM以供下次查詢使用。如果hash索引中不存在與目標(biāo)虛擬地址相同的鍵值,則返回軟件TLB缺失信號(hào),執(zhí)行步驟(3)。步驟(3) =TLB缺失異常處理;重新分配內(nèi)存地址與虛擬地址對(duì)應(yīng),并訪問分配的內(nèi)存地址;優(yōu)選的,將虛擬地址和分配的內(nèi)存地址存入軟件的TLB查找器中。步驟(4):根據(jù)找到的物理地址,完成計(jì)算機(jī)物理內(nèi)存的訪問。以上就是本發(fā)明的一次完整模擬過程。在這一過程中,使用CAM將傳統(tǒng)的純軟件模擬TLB方法改為軟硬件結(jié)合完成,將其中90%以上的查找操作從查找內(nèi)存中的數(shù)組轉(zhuǎn)化為查找硬件CAM,查找開銷從數(shù)十條指令減少到一次CAM訪問。下面以在龍芯3A平臺(tái)上運(yùn)行X86虛擬機(jī)為例,說明在這兩種異構(gòu)平臺(tái)上用CAM實(shí)現(xiàn)軟硬件協(xié)同TLB模擬器的方法。龍芯3A完全兼容MIPS指令系統(tǒng),能夠同時(shí)支持4K,16K等不同頁面,常見的X86的CPU和操作系統(tǒng)可支持4K頁面,因而,能夠以龍芯3A為宿主計(jì)算平臺(tái)模擬目標(biāo)X86的虛擬機(jī)。具體地,在龍芯3A中實(shí)現(xiàn)了一個(gè)包含64項(xiàng)存儲(chǔ)空間的CAM,并提供了 3條CAM操作指令,優(yōu)選的,該指令包括=CAMPV (查詢CAM表項(xiàng)),CAMWI (寫CAM表項(xiàng)),CAMRD (讀CAM表項(xiàng))。假設(shè)虛擬機(jī)使用連續(xù)的宿主機(jī)物理內(nèi)存模擬X86物理內(nèi)存,并且其初始物理地址為0x40000000。在虛擬的X86的CPU中,應(yīng)用程序存在如下虛擬地址到物理地址的映射關(guān)系虛擬地址0x834e0000,該虛擬地址對(duì)應(yīng)的物理地址為0x00070000,并且此映射關(guān)系已經(jīng)被裝入CAM中。此時(shí),應(yīng)用程序需要執(zhí)行指令:M0V ECX,0x834e0002。此指令經(jīng)虛擬機(jī)翻譯后成為如下龍芯3A指令
      Iui tO,0x834e0000ori tO,0x0002Iw s0,0(t0)宿主機(jī)龍芯3A的CPU在執(zhí)行最后一條Iw s0,0(t0)指令時(shí),使用虛擬的頁面基地址0x834e0000作為查詢鍵值,使用指令CAMPV向CAM發(fā)出查詢請(qǐng)求。因?yàn)镃AM中存在索引域?yàn)?x834e0000的表項(xiàng),CAMPV會(huì)返回該表項(xiàng)中數(shù)據(jù)域的內(nèi)容,即0x40070000。這一物理地址再加上頁內(nèi)偏移0x00000002,即為實(shí)際的物理地址0x40070002。從上述描述中可以看出,本發(fā)明所提供的虛擬機(jī)中的內(nèi)存訪問方法能夠在單條 (PU指令周期(CAMPV指令)內(nèi)返回正確的物理地址。過程簡單,能明顯減少開銷。從以上的描述中,可以看出,本發(fā)明在虛擬機(jī)中從目標(biāo)機(jī)虛擬地址到宿主機(jī)物理地址的轉(zhuǎn)換過程中,首先在由內(nèi)容索引全相聯(lián)存儲(chǔ)器CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器中進(jìn)行查找,若查找到虛擬地址對(duì)應(yīng)的物理地址,直接訪問查找到的物理地址。這種使用CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器將大部分的查找操作從查找內(nèi)存中的數(shù)組轉(zhuǎn)化為查找硬件CAM,能夠在單次CAM訪問的時(shí)間內(nèi)獲得需要的結(jié)果,解決相關(guān)技術(shù)中虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來額外性能開銷的問題,減小虛擬機(jī)工作過程中的開銷。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種虛擬機(jī)中的內(nèi)存訪問方法,其特征在于,包括 根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與所述虛擬地址對(duì)應(yīng)的物理地址,其中,所述第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器; 若在所述第一查找器中查找到與所述虛擬地址對(duì)應(yīng)的物理地址,則訪問查找到的所述物理地址指示的物理內(nèi)存。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述根據(jù)指令中的虛擬地址在第一查找器中查找與所述虛擬地址對(duì)應(yīng)的物理地址包括 判斷所述CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,所述檢索鍵值為所述來自虛擬機(jī)的訪問指令中的虛擬地址; 若所述CAM中是存在索引域內(nèi)容與所述檢索鍵值相同的表項(xiàng),則所述CAM返回所述索引域內(nèi)容與所述檢索鍵值相同的數(shù)據(jù)域內(nèi)容。
      3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與所述虛擬地址對(duì)應(yīng)的物理地址之后,還包括 若在所述第一查找器未查找到與所述虛擬地址對(duì)應(yīng)的物理地址,則通過第二查找器查找與所述虛擬地址對(duì)應(yīng)的物理地址,其中,所述第二查找器為純軟件物理地址查找器; 若在所述第二查找器中查找到與所述虛擬地址對(duì)應(yīng)的物理地址,則獲取所述虛擬地址對(duì)應(yīng)的物理地址,并根據(jù)獲取的所述虛擬地址對(duì)應(yīng)的物理地址訪問物理內(nèi)存。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,通過第二查找器查找與所述虛擬地址對(duì)應(yīng)的物理地址之后,還包括 若在所述第二查找器未查找到與所述虛擬地址對(duì)應(yīng)的物理地址,則分配內(nèi)存地址與所述虛擬地址對(duì)應(yīng),并訪問所述分配的內(nèi)存地址; 將所述虛擬地址和所述分配的內(nèi)存地址存入所述第二查找器。
      5.根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括 若在所述第二查找器中記錄的物理地址被查找的頻率超過預(yù)定閾值,則將所述虛擬地址和與所述虛擬地址對(duì)應(yīng)的物理地址存入第一查找器的CAM中。
      6.一種查找器,其特征在于,所述查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器,包括 第一查找單元,用于根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址查找與所述虛擬地址對(duì)應(yīng)的物理地址; 第一訪問單元,用于在所述第一查找單元查找到與所述虛擬地址對(duì)應(yīng)的物理地址時(shí),訪問查找到的所述物理地址指示的物理內(nèi)存。
      7.根據(jù)權(quán)利要求6所述的查找器,其特征在于,所述第一查找單元包括 第一判斷模塊,用于判斷所述CAM中是否存在索引域內(nèi)容與所述檢索鍵值相同的表項(xiàng),其中,所述檢索鍵值為所述來自虛擬機(jī)的訪問指令中的虛擬地址; 第一返回模塊,用于在所述第一判斷模塊判斷出所述CAM中是存在索引域內(nèi)容與所述檢索鍵值相同的表項(xiàng)時(shí),返回所述CAM中索引域內(nèi)容與所述檢索鍵值相同的數(shù)據(jù)域內(nèi)容。
      8.—種虛擬機(jī)中的內(nèi)存訪問裝置,其特征在于,包括 第二查找單元,用于根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與所述虛擬地址對(duì)應(yīng)的物理地址,其中,所述第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器; 第二訪問單元,用于在所述第一查找器中查找到與所述虛擬地址對(duì)應(yīng)的物理地址時(shí),訪問查找到的所述物理地址指示的物理內(nèi)存。
      9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第二查找單元包括 第二判斷模塊,用于判斷所述CAM中是否存在索引域內(nèi)容與檢索鍵值相同的表項(xiàng),其中,所述檢索鍵值為所述來自虛擬機(jī)的訪問指令中的虛擬地址; 第二返回模塊,用于在所述CAM中是存在索引域內(nèi)容與所述檢索鍵值相同的表項(xiàng)時(shí),返回所述CAM中索引域內(nèi)容與所述檢索鍵值相同的數(shù)據(jù)域內(nèi)容。
      10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,還包括 第三查找單元,用于在所述第一查找器未查找到與所述虛擬地址對(duì)應(yīng)的物理地址時(shí),通過第二查找器查找與所述虛擬地址對(duì)應(yīng)的物理地址,其中,所述第二查找器為純軟件物理地址查找器; 第三訪問單元,用于在所述第二查找器中查找到與所述虛擬地址對(duì)應(yīng)的物理地址時(shí),獲取所述虛擬地址對(duì)應(yīng)的物理地址,并根據(jù)獲取的所述虛擬地址對(duì)應(yīng)的物理地址訪問物理內(nèi)存。
      11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,還包括 分配單元,用于在所述第二查找器未查找到與所述虛擬地址對(duì)應(yīng)的物理地址時(shí),分配內(nèi)存地址與所述虛擬地址對(duì)應(yīng),并訪問所述分配的內(nèi)存地址; 第一存儲(chǔ)單元,用于將所述虛擬地址和所述分配的內(nèi)存地址存入所述第二查找器。
      全文摘要
      本發(fā)明提供了一種虛擬機(jī)中的內(nèi)存訪問方法和裝置及查找器,其中,該方法包括根據(jù)來自虛擬機(jī)的訪問指令中的虛擬地址在第一查找器中查找與虛擬地址對(duì)應(yīng)的物理地址,其中,第一查找器為由CAM和物理地址查找邏輯組成的軟硬件協(xié)同物理地址查找器;若在第一查找器中查找到與虛擬地址對(duì)應(yīng)的物理地址,則訪問查找到的物理地址指示的物理內(nèi)存。本發(fā)明解決了相關(guān)技術(shù)中的虛擬機(jī)技術(shù)使用純軟件TLB進(jìn)行內(nèi)存訪問會(huì)帶來額外性能開銷的問題,達(dá)到減小了虛擬機(jī)工作過程中的開銷的技術(shù)效果。
      文檔編號(hào)G06F9/455GK102662869SQ20121009659
      公開日2012年9月12日 申請(qǐng)日期2012年4月1日 優(yōu)先權(quán)日2012年4月1日
      發(fā)明者姜海濤, 胡偉武, 靳國杰, 高翔 申請(qǐng)人:龍芯中科技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1