專利名稱:用于具有定向i/o的虛擬機(jī)的熱交換有源存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例一般涉及系統(tǒng)存儲(chǔ)器管理,并且更具體地涉及指派到虛擬機(jī)的系統(tǒng)存儲(chǔ)器的管理。
背景技術(shù):
包括虛擬機(jī)(VM)的系統(tǒng)允許共享下層(underlying)物理機(jī)器及其資源。提供到 VM的虛擬化的軟件層稱作虛擬機(jī)監(jiān)視器(VMM)或管理器。VMM充當(dāng)VM的主機(jī)。VMM為VM 上執(zhí)行的系統(tǒng)軟件(例如操作系統(tǒng)軟件和應(yīng)用軟件)提供物理機(jī)器的抽象。VMM還能夠保留對(duì)處理器資源、物理存儲(chǔ)器、中斷管理和數(shù)據(jù)I/O的選擇性控制。I/O虛擬化描述了單個(gè)物理I/O單元由不止一個(gè)VM來(lái)共享的能力。現(xiàn)有技術(shù)解決方案經(jīng)由軟件模塊來(lái)實(shí)現(xiàn)I/O虛擬化。因此,到VM存儲(chǔ)器頁(yè)面的所有訪問(wèn)都從CPU發(fā)起, 并且由此引起顯著處理開(kāi)銷。此外,這種類型的虛擬化不允許指派到VM的裝置直接經(jīng)由直接存儲(chǔ)器訪問(wèn)(DMA)執(zhí)行存儲(chǔ)器操作。其它現(xiàn)有技術(shù)解決方案經(jīng)由又稱作定向I/O的硬件邏輯來(lái)實(shí)現(xiàn)I/O虛擬化。在這些解決方案中,裝置的DMA請(qǐng)求被限制到(通過(guò)VMM)指派到擁有該裝置的VM的存儲(chǔ)器域和存儲(chǔ)器區(qū)。這些硬件現(xiàn)有技術(shù)解決方案之一可描述為DMA重新映射硬件一即,定位在具有DMA能力的外圍設(shè)備與系統(tǒng)的物理存儲(chǔ)器之間的硬件單元。未修改的驅(qū)動(dòng)程序可在VM 中無(wú)縫運(yùn)行,VM將對(duì)指派到該VM的I/O資源具有完全的特權(quán);但是,由于DMA保護(hù)在芯片組級(jí)實(shí)施,因此對(duì)于指派到該VM的I/O裝置,阻止到虛擬機(jī)自有的物理頁(yè)面外部的物理存儲(chǔ)器的訪問(wèn)。一些高級(jí)計(jì)算機(jī)服務(wù)器存儲(chǔ)器特征要求“熱拆卸”或“熱交換”存儲(chǔ)器的能力(例如在使用DIMM時(shí)將其拆卸)。熱交換存儲(chǔ)器包括將(至少)一個(gè)使用中的頁(yè)面的內(nèi)容移到另一個(gè)頁(yè)面,而不打斷正進(jìn)行的執(zhí)行。如果I/O虛擬化經(jīng)由軟件模塊來(lái)完成,則熱交換存儲(chǔ)器在現(xiàn)有技術(shù)中是可能的。 在這種情況下,在頁(yè)面內(nèi)容正在被交換時(shí),VMM凍結(jié)各自的VM以阻止競(jìng)爭(zhēng)訪問(wèn)。在建立新映射后,將VM解凍,并且隨后的存儲(chǔ)器訪問(wèn)將重新定向到新映射的頁(yè)面。但是,沒(méi)有熱交換具有允許定向I/O的I/O虛擬化的VM的頁(yè)面的能力。這部分地歸因于VMM能夠凍結(jié)VM執(zhí)行、但對(duì)指派到所述VM的裝置沒(méi)有控制力的事實(shí)。這些指派的裝置能夠在任何時(shí)間,甚至當(dāng)那個(gè)頁(yè)面的熱交換正在進(jìn)行時(shí),向VM頁(yè)面發(fā)出DMA請(qǐng)求。這種競(jìng)爭(zhēng)情況是危險(xiǎn)的,因?yàn)樗梢鹋f頁(yè)面與新頁(yè)面之間的不一致。
發(fā)明內(nèi)容
按照本發(fā)明的一個(gè)方面,提供一種系統(tǒng),包括存儲(chǔ)器;處理器;經(jīng)由所述處理器來(lái)執(zhí)行的虛擬機(jī)(VM);
4
虛擬機(jī)監(jiān)視器(VMM),所述虛擬機(jī)監(jiān)視器經(jīng)由所述處理器來(lái)執(zhí)行,以控制所述VM對(duì)所述存儲(chǔ)器和所述處理器的訪問(wèn);發(fā)出熱頁(yè)面交換(HPS)請(qǐng)求,所述HPS請(qǐng)求包括由所述VM和指派給所述VM的裝置中的至少一個(gè)使用的虛擬地址、映射到所述虛擬地址的第一存儲(chǔ)器頁(yè)面位置、以及第二存儲(chǔ)器頁(yè)面位置,以及在所述HPS請(qǐng)求完成以前,阻塞所述VM到所述虛擬地址的訪問(wèn);以及DMA重新映射單元(DRU),可操作地耦合到所述處理器和所述存儲(chǔ)器,以接收和校驗(yàn)所述HPS請(qǐng)求,將所述第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到所述第二存儲(chǔ)器頁(yè)面位置;將所述虛擬地址從所述第一存儲(chǔ)器頁(yè)面位置重新映射到所述第二存儲(chǔ)器頁(yè)面位置,以及阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求。按照本發(fā)明的另一方面,提供一種方法,包括從虛擬機(jī)監(jiān)視器(VMM)接收和校驗(yàn)熱頁(yè)面交換(HPQ請(qǐng)求,所述HPS請(qǐng)求包括由至少一個(gè)虛擬機(jī)(VM)使用的虛擬地址、映射到所述虛擬地址的第一存儲(chǔ)器頁(yè)面位置、以及
第二存儲(chǔ)器頁(yè)面位置;在所述HPS請(qǐng)求完成以前阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求;將所述第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到所述第二存儲(chǔ)器頁(yè)面位置;以及將所述虛擬地址從所述第一存儲(chǔ)器頁(yè)面位置重新映射到所述第二存儲(chǔ)器頁(yè)面位置。按照本發(fā)明的另一方面,提供一種設(shè)備,包括第一邏輯,所述第一邏輯接收和校驗(yàn)熱頁(yè)面交換(HPQ,所述HPS請(qǐng)求包括虛擬地址、映射到由至少一個(gè)虛擬機(jī)(VM)使用的所述虛擬地址的第一存儲(chǔ)器頁(yè)面位置、以及第二存儲(chǔ)器頁(yè)面位置;裝置接口,所述裝置接口接收DMA請(qǐng)求,所述裝置接口在所述HPS請(qǐng)求完成以前阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求;以及第二邏輯,所述第二邏輯將所述第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到所述第二存儲(chǔ)器頁(yè)面位置,以及將所述虛擬地址從所述第一存儲(chǔ)器頁(yè)面位置重新映射到所述第二存儲(chǔ)器頁(yè)面位置。
以下描述包括對(duì)附圖的討論,附圖具有作為本發(fā)明實(shí)施例的實(shí)現(xiàn)示例給出的圖解。應(yīng)當(dāng)作為示例而不是限定來(lái)理解附圖。如本文所使用的,對(duì)一個(gè)或多個(gè)“實(shí)施例”的引用將被理解為描述本發(fā)明的至少一個(gè)實(shí)現(xiàn)中包含的具體特征、結(jié)構(gòu)或特性。因此,本文中出現(xiàn)的諸如“在一個(gè)實(shí)施例中”或“在備選實(shí)施例中”的短語(yǔ)描述了本發(fā)明的各種實(shí)施例和實(shí)現(xiàn),并且不一定都指同一個(gè)實(shí)施例。然而,它們也并不一定是相互排斥的。圖1是利用本發(fā)明實(shí)施例的系統(tǒng)的框圖。圖2是DMA重新映射單元的實(shí)施例的框圖。圖3是根據(jù)本發(fā)明實(shí)施例處理熱頁(yè)面交換請(qǐng)求的流程圖。
圖4示出使熱頁(yè)面交換操作期間需要阻塞的DMA請(qǐng)求的數(shù)量為最少的示例過(guò)程。下面是某些細(xì)節(jié)和實(shí)現(xiàn)的描述,包括可描繪下文所述實(shí)施例的部分或全部的附圖的描述,以及討論本文呈現(xiàn)的發(fā)明概念的其它潛在實(shí)施例或?qū)崿F(xiàn)。下面提供本發(fā)明的實(shí)施例的概述,之后是參照附圖的更詳細(xì)描述。
具體實(shí)施例方式本發(fā)明的實(shí)施例涉及用于具有定向I/O的VM的增強(qiáng)DMA功能性。本發(fā)明的實(shí)施例慮及以無(wú)競(jìng)爭(zhēng)和有效率的方式進(jìn)行的有源存儲(chǔ)器單元(例如,頁(yè)面)的熱交換。本發(fā)明的示例實(shí)施例描述處于芯片組級(jí)的增強(qiáng)DMA重新映射單元(DRU)。增強(qiáng)DRU 單元與VMM結(jié)合工作。DRU包括接受來(lái)自VMM的頁(yè)面交換請(qǐng)求的接口。一旦接收到請(qǐng)求, DRU執(zhí)行頁(yè)面交換,同時(shí)(至少部分地)阻塞定向到待交換頁(yè)面的DMA請(qǐng)求。本發(fā)明的實(shí)施例可包含在利用要求存儲(chǔ)器熱交換能力的特征的系統(tǒng)和服務(wù)器中。 所述特征包括例如可靠性、可用性和可服務(wù)性(RAS),諸如離線狀態(tài)的存儲(chǔ)器低功率模式 (其中切斷到DIMM的電力以省電),以及當(dāng)可用存儲(chǔ)器資源改變時(shí)將跨節(jié)點(diǎn)VM頁(yè)面重新組織為單個(gè)節(jié)點(diǎn)的不均勻存儲(chǔ)器訪問(wèn)(NUMA)節(jié)點(diǎn)親合力。這些特征要求將一個(gè)使用中的頁(yè)面的內(nèi)容熱交換到另一個(gè)頁(yè)面而不打斷正進(jìn)行的執(zhí)行的能力。圖1是利用本發(fā)明實(shí)施例的系統(tǒng)的框圖。系統(tǒng)100可包含在系統(tǒng)服務(wù)器、臺(tái)式計(jì)算機(jī)裝置、移動(dòng)計(jì)算機(jī)裝置或者利用處理器和系統(tǒng)存儲(chǔ)器的任何其它任意裝置中。如圖1的示例實(shí)施例中所示,系統(tǒng)100包括系統(tǒng)存儲(chǔ)器110、處理器120、系統(tǒng)裝置 130-139(例如,外部盤(pán)驅(qū)動(dòng)器、I/O裝置)、以及存儲(chǔ)器控制器150。在這個(gè)實(shí)施例中,裝置 130-139是具有DMA能力的裝置。系統(tǒng)100可進(jìn)一步包括VMM 170,以便管理VM 160,包括向VM 160分配存儲(chǔ)器的部分(即,頁(yè)面)。VM 160可包含運(yùn)行各種應(yīng)用的客戶操作系統(tǒng)(即,客戶軟件)。VM 160 和VMM 170都可經(jīng)由處理器120執(zhí)行。VMM 170可進(jìn)一步管理裝置130-139,并且向VM 160指派所述裝置中的至少一個(gè)。 在這個(gè)示例實(shí)施例中,將裝置130、131和139指派給VM 160。要理解,在備選實(shí)施例中,系統(tǒng)可包括多個(gè)VM,并且可以任何組合將系統(tǒng)裝置指派給各VM。提供客戶軟件的存儲(chǔ)器地址范圍,即客戶物理地址(GPA)范圍,可能與機(jī)器物理地址(MPA)范圍不同。具有DMA能力的裝置130、131和139使用MPA向/從物理存儲(chǔ)器位置傳遞數(shù)據(jù)。但是,在這個(gè)實(shí)施例中,VM 160的客戶軟件(即,客戶OS)包括控制裝置130、 131和139的裝置驅(qū)動(dòng)程序,并且因而提供GPA范圍而不是MPA范圍。DRU 155用來(lái)進(jìn)行所要求的地址轉(zhuǎn)換。由于GPA由VMM 170提供,所以GPA范圍必須轉(zhuǎn)換成MPA范圍。在一個(gè)實(shí)施例中,VMM170采用GPA到MPA轉(zhuǎn)換信息對(duì)DRU編程,使得DMA重新映射硬件能夠執(zhí)行必要的轉(zhuǎn)換。這個(gè)轉(zhuǎn)換信息在本文中稱作DMA重新映射頁(yè)面表(DRPT)。使用DRPT,來(lái)自裝置的數(shù)據(jù)這時(shí)能夠直接傳遞到適當(dāng)?shù)拇鎯?chǔ)器地址,而不是經(jīng)過(guò)中間軟件仿真層。存儲(chǔ)器110可包括存儲(chǔ)器的若干單元,例如多個(gè)DMM。“熱拆卸”或“熱交換”存儲(chǔ)器的能力包含在DIMM使用中將其拆卸。熱交換存儲(chǔ)器包含例如將(要掉電/移動(dòng)的) 第一 DMM中包括的(至少)一個(gè)使用中的頁(yè)面的內(nèi)容移到(將不會(huì)掉電/移動(dòng)的)第二DIMM中包括的另一個(gè)頁(yè)面,而不打斷正進(jìn)行的執(zhí)行。以這種方式交換頁(yè)面的操作在本文中稱作熱頁(yè)面交換(HPS)。在頁(yè)面交換期間,重要的是沒(méi)有對(duì)該頁(yè)面進(jìn)行訪問(wèn)。VMM 170能夠凍結(jié)VM 160的執(zhí)行,因而阻止VM 160訪問(wèn)待交換頁(yè)面。VMM170備選地能夠只凍結(jié)到待交換頁(yè)面的VM訪問(wèn)。然而,關(guān)于各裝置可發(fā)出的DMA請(qǐng)求,VMM 170對(duì)裝置130、131和139沒(méi)有控制力。有可能修改用于裝置130、131和139中的每個(gè)的VM 160中的裝置驅(qū)動(dòng)程序,以便搶先凍結(jié)指派的裝置。在開(kāi)始頁(yè)面交換操作之前,VMM 170可經(jīng)由VM 160向修改的裝置驅(qū)動(dòng)程序發(fā)送凍結(jié)請(qǐng)求。修改的裝置驅(qū)動(dòng)程序然后可用信號(hào)通知開(kāi)始熱交換操作是安全的。 一旦熱交換完成,則VMM 170可向修改的裝置驅(qū)動(dòng)程序發(fā)送解凍請(qǐng)求。但是,這個(gè)解決方案由于若干原因而不理想。凍結(jié)/解凍(即,停止/重新開(kāi)始)裝置的命令是費(fèi)時(shí)的操作。要求不確定的等待時(shí)間以確保處理完用于各裝置的所有正進(jìn)行的DMA請(qǐng)求,并且要求進(jìn)一步的時(shí)間以等待各裝置進(jìn)入靜止?fàn)顟B(tài)。這能夠進(jìn)一步對(duì)I/O吞吐量發(fā)生影響并影響系統(tǒng)性能。這個(gè)附加等待時(shí)間可進(jìn)一步阻止硬件優(yōu)化。更重要的是,由于公知的維護(hù)和分發(fā)考慮,避免對(duì)現(xiàn)有驅(qū)動(dòng)程序的修改是更好的。因此,本發(fā)明的實(shí)施例包括增強(qiáng)DRU單元155,以便從裝置130-139接收DMA請(qǐng)求并向存儲(chǔ)器控制器150轉(zhuǎn)發(fā)所述請(qǐng)求。DRU單元155還處理由VMM 170發(fā)出的熱頁(yè)面交換請(qǐng)求。通過(guò)從VMM170去除熱交換執(zhí)行并因而使VMM不再必須消除競(jìng)爭(zhēng)情況,裝置DMA請(qǐng)求以更有效方式受控。圖2是根據(jù)本發(fā)明的實(shí)施例的DRU 155的框圖。DRU 155包括熱頁(yè)面交換命令接口(HPSCI) 200,系統(tǒng)VMM能夠通過(guò)HPSCI 200把HPS請(qǐng)求通知給DRU。由VMM生成的HPS請(qǐng)求可包括指示待更新的目標(biāo)客戶頁(yè)面幀號(hào)(GPFN)、由目標(biāo) GPFN映射的原始機(jī)器頁(yè)面幀號(hào)(MPFN)、將由目標(biāo)GPFN映射的新MPFN的信息,以及為HPS 請(qǐng)求指示錯(cuò)誤和完成信息的狀態(tài)字段。GPFN可備選地稱作“虛擬地址”。要理解,原始MPFN 和新MPFN包含在系統(tǒng)存儲(chǔ)器110中。HPSCI 200對(duì)HPS請(qǐng)求執(zhí)行各種有效性檢查。例如,HPSCI 200可確保目標(biāo)GPFN 的映射與原始MPFN —致,或者所請(qǐng)求的交換是否因?yàn)闆](méi)有將存儲(chǔ)器指派給發(fā)出VM而無(wú)法完成。在HPS請(qǐng)求生效后,熱頁(yè)面交換代理(HPSA) 210可執(zhí)行頁(yè)面交換。HPSA 210從原始MPFN讀出內(nèi)容,然后寫(xiě)到新MPFN。在一個(gè)實(shí)施例中,這些存儲(chǔ)器訪問(wèn)請(qǐng)求與正進(jìn)行的裝置DMA請(qǐng)求交織。一旦存儲(chǔ)器復(fù)制結(jié)束,HPSA 210然后改變DRPT,以便反映目標(biāo)GPFN到新 MPFN的最近映射。HPSA 210可進(jìn)一步使內(nèi)部DMA重新映射TLB無(wú)效,以避免執(zhí)行HPS之后陳舊的映射條目。DRU 155還包括接受和滿足用于系統(tǒng)裝置的DMA請(qǐng)求的裝置接口 220。因此,DRU 155對(duì)裝置DMA請(qǐng)求具有控制力(與VMM相反),并且能夠在必要時(shí)阻塞到正被交換的頁(yè)面的DMA請(qǐng)求。上述HPSCI可以同步或異步方式植入。圖3是根據(jù)本發(fā)明實(shí)施例的HPSCI處理 HPS請(qǐng)求的流程圖。本文所示的流程圖提供各種過(guò)程動(dòng)作的序列的示例。雖然以特定序列或順序示出,但是除非載明,否則能夠修改動(dòng)作的順序。因此,所示實(shí)現(xiàn)應(yīng)當(dāng)僅理解為示例,
7所示過(guò)程能夠以不同順序執(zhí)行,并且一些動(dòng)作可并行執(zhí)行。另外,在本發(fā)明的各種實(shí)施例中,能夠省略一個(gè)或多個(gè)動(dòng)作;因此,并非在每一個(gè)實(shí)現(xiàn)中都要求全部動(dòng)作。其它過(guò)程流是可能的。過(guò)程300開(kāi)始于VMM接收命令以執(zhí)行HPS請(qǐng)求,310。這個(gè)HPS請(qǐng)求可以是向VMM 發(fā)出的處理器指令。VMM響應(yīng)于接收所述命令而鎖定DRPT,以免其它命令修改DRPT,320。VMM將諸如目標(biāo)GPFN、原始MPFN和新MPFN的必要熱交換信息編譯到HPS請(qǐng)求中, 330。VMM向DRU的HPSCI發(fā)送HPS請(qǐng)求,同時(shí)還阻塞VM訪問(wèn)相應(yīng)的GPFN,340。在這個(gè)實(shí)施例中,還阻塞VMM接收其它HPS請(qǐng)求。然后,HPSCI將校驗(yàn)HPS請(qǐng)求并且將其轉(zhuǎn)發(fā)給HPSA,350。在HPS操作期間應(yīng)當(dāng)阻塞到原始MPFN的訪問(wèn)。如上所述,阻塞VM訪問(wèn)原始MPFN(經(jīng)由相應(yīng)的GPFN)。還必須阻塞裝置經(jīng)由DMA請(qǐng)求來(lái)訪問(wèn)原始MPFN。這種阻塞經(jīng)由DRU來(lái)做到,360。然后,通過(guò)將原始MPFN的內(nèi)容交換到新MPFN來(lái)滿足HPS請(qǐng)求,365。HPSA還修改 DRPT,并清洗DMA重新映射TLB 370。HPSA通知HPSCI已經(jīng)滿足了該HPS請(qǐng)求,并且HPSCI 將這個(gè)通知進(jìn)一步送到VMM,380。DRU不阻塞來(lái)自系統(tǒng)裝置的DMA請(qǐng)求,390。VMM不阻塞 VM,并且對(duì)DRPT解鎖,395。在備選實(shí)施例中,HPSCI以異步方式來(lái)實(shí)現(xiàn)。在這個(gè)實(shí)施例中,在熱交換操作期間沒(méi)有阻塞VMM接收其它HPS請(qǐng)求。在這個(gè)實(shí)施例中,VMM能夠繼續(xù)將其它HPS請(qǐng)求排隊(duì),并且HPSCI可并行處理這些排隊(duì)的請(qǐng)求。在一個(gè)實(shí)施例中,VMM設(shè)置可服務(wù)的并行請(qǐng)求的數(shù)目的閾值。在上述示例實(shí)施例中,阻止裝置在主機(jī)交換過(guò)程中發(fā)出DMA請(qǐng)求。這些DMA請(qǐng)求可保存在DRU處或各裝置上的某個(gè)內(nèi)部緩沖區(qū)中,并且可僅當(dāng)重新建立新映射時(shí)處理這些 DMA請(qǐng)求。如果在熱交換操作期間發(fā)出太多DMA請(qǐng)求,則這個(gè)實(shí)施例具有緩沖區(qū)溢出的風(fēng)險(xiǎn),并且整體性能可能受到負(fù)面影響。圖4示出使HPS操作期間被阻塞的DMA請(qǐng)求的數(shù)量為最少的示例過(guò)程。如上所述, 為了熱交換使用中的頁(yè)面,舊頁(yè)面的全部?jī)?nèi)容必須復(fù)制到新頁(yè)面。這個(gè)復(fù)制過(guò)程必須確保新頁(yè)面包括最近的內(nèi)容。在一些系統(tǒng)中,即使阻塞了擁有系統(tǒng)裝置的VM,仍然存在從這些裝置發(fā)出的DMA 訪問(wèn)(即,寫(xiě)操作)。此外,雖然客戶軟件通常以頁(yè)面為單位(即,4Kb)來(lái)管理存儲(chǔ)器,但是存儲(chǔ)器控制器經(jīng)常以高速緩存行為單位(即,64字節(jié))來(lái)接受到存儲(chǔ)器DIMM的突發(fā)訪問(wèn)。因此,將舊頁(yè)面復(fù)制到新頁(yè)面引起數(shù)十個(gè)“高速緩存行”副本-例如,如果將熱交換一個(gè)頁(yè)面,則存在對(duì)那個(gè)操作出現(xiàn)的64個(gè)“高速緩存行”大小的寫(xiě)。雖然在整個(gè)頁(yè)面復(fù)制結(jié)束以前阻塞裝置DMA請(qǐng)求更容易,但是它添加了等待時(shí)間和裝置內(nèi)部緩沖區(qū)溢出的風(fēng)險(xiǎn)。過(guò)程400示出以交織方式處理HPS操作和DMA請(qǐng)求,因此允許裝置在大多數(shù)情況下訪問(wèn)交換中的頁(yè)面。在這個(gè)實(shí)施例中,內(nèi)部計(jì)數(shù)器用來(lái)在HPS操作期間跟蹤哪個(gè)“高速緩存行”當(dāng)前正在被復(fù)制。因此,當(dāng)DRU接收裝置DMA請(qǐng)求時(shí)410,DRU確定與內(nèi)部計(jì)數(shù)器關(guān)聯(lián)的所請(qǐng)求的存儲(chǔ)器的位置,420。如果DMA請(qǐng)求是針對(duì)比內(nèi)部計(jì)數(shù)器更小的“高速緩存行”,430,則這指示存儲(chǔ)器的這個(gè)特定部分已經(jīng)被交換,因此DMA目標(biāo)地址將改變并且改為針對(duì)新的“高速緩存行”位置(即,新MFPN),435。然后,允許更新的DMA請(qǐng)求,445。如果DMA請(qǐng)求是針對(duì)比內(nèi)部計(jì)數(shù)器更大的“高速緩存行”,440,則這指示存儲(chǔ)器的這個(gè)特定部分尚未被交換,因此允許到原始“高速緩存行”位置(即,原始MFPN)的DMA請(qǐng)求仍然是安全的,445。如果DMA請(qǐng)求是針對(duì)與內(nèi)部計(jì)數(shù)器相等的“高速緩存行”,則這指示存儲(chǔ)器的這個(gè)特定部分當(dāng)前正被交換,并且因此必須阻塞這個(gè)DMA請(qǐng)求,以防止競(jìng)爭(zhēng)情況或存儲(chǔ)器不一致,450。在一個(gè)實(shí)施例中,DRU單元等待當(dāng)前“高速緩存行”被交換,460,然后更新到新 MPFN的(這時(shí)不阻塞的)DMA請(qǐng)求的目標(biāo)地址(即,操作435)。然后允許更新的DMA請(qǐng)求, 445。將理解的是,圖4的示例過(guò)程減少了在HPS操作期間需要阻塞的DMA請(qǐng)求的數(shù)目。本文所述的以上稱作過(guò)程、服務(wù)器或工具的各種組件可以是用于執(zhí)行所描述功能的部件。本文所描述的各個(gè)組件包括軟件或硬件或者它們的組合。組件能夠?qū)崿F(xiàn)為軟件模塊、硬件模塊、特殊目的硬件(例如專用硬件、ASIC、DSP等)、嵌入式控制器、硬連線電路等等。軟件內(nèi)容(例如數(shù)據(jù)、指令、配置)可經(jīng)由包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的制造產(chǎn)品來(lái)提供, 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供表示能夠被執(zhí)行的指令的內(nèi)容。內(nèi)容可使計(jì)算機(jī)執(zhí)行本文所描述的各種功能/操作。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括以計(jì)算機(jī)(例如計(jì)算裝置、電子系統(tǒng)等)可訪問(wèn)形式來(lái)提供(即,存儲(chǔ)和/或傳送)信息的任何機(jī)制,諸如可記錄/不可記錄介質(zhì)(例如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤(pán)存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存裝置等)。內(nèi)容可以是直接可執(zhí)行的(“目標(biāo)”或者“可執(zhí)行”形式)、源代碼或差代碼(“增量”或“補(bǔ)丁” 代碼)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)也可包括能夠從其中下載內(nèi)容的存儲(chǔ)裝置或數(shù)據(jù)庫(kù)。計(jì)算機(jī)可讀介質(zhì)也可包括在銷售或交付時(shí)使內(nèi)容存儲(chǔ)于其中的裝置或產(chǎn)品。因此,交付具有已存儲(chǔ)內(nèi)容的裝置或者提供用于通過(guò)通信介質(zhì)下載的內(nèi)容可理解為提供具有本文所描述的這種內(nèi)容的制造產(chǎn)品。
權(quán)利要求
1.一種系統(tǒng),包括 存儲(chǔ)器;處理器;經(jīng)由所述處理器來(lái)執(zhí)行的虛擬機(jī)(VM);虛擬機(jī)監(jiān)視器(VMM),所述虛擬機(jī)監(jiān)視器經(jīng)由所述處理器來(lái)執(zhí)行,以 控制所述VM對(duì)所述存儲(chǔ)器和所述處理器的訪問(wèn);發(fā)出熱頁(yè)面交換(HPS)請(qǐng)求,所述HPS請(qǐng)求包括由所述VM和指派給所述VM的裝置中的至少一個(gè)使用的虛擬地址、映射到所述虛擬地址的第一存儲(chǔ)器頁(yè)面位置、以及第二存儲(chǔ)器頁(yè)面位置,以及在所述HPS請(qǐng)求完成以前,阻塞所述VM到所述虛擬地址的訪問(wèn);以及 DMA重新映射單元(DRU),可操作地耦合到所述處理器和所述存儲(chǔ)器,以 接收和校驗(yàn)所述HPS請(qǐng)求,將所述第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到所述第二存儲(chǔ)器頁(yè)面位置; 將所述虛擬地址從所述第一存儲(chǔ)器頁(yè)面位置重新映射到所述第二存儲(chǔ)器頁(yè)面位置,以及阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求。
2.如權(quán)利要求1所述的系統(tǒng),所述DRU還在所述HPS請(qǐng)求被滿足以前阻塞所有DMA請(qǐng)求。
3.如權(quán)利要求1所述的系統(tǒng),所述DRU還在所述HPS請(qǐng)求被滿足以前阻塞到所述第一存儲(chǔ)器頁(yè)面位置的所有DMA請(qǐng)求。
4.如權(quán)利要求1所述的系統(tǒng),所述DRU還如果DMA請(qǐng)求的存儲(chǔ)器的地址已經(jīng)被重新映射,則基于所述第二存儲(chǔ)器頁(yè)面位置滿足 DMA請(qǐng)求;以及如果DMA請(qǐng)求的存儲(chǔ)器的地址還必須被重新映射,則基于所述第一存儲(chǔ)器頁(yè)面位置滿足DMA請(qǐng)求。
5.如權(quán)利要求1所述的系統(tǒng),所述VMM還在所述HPS請(qǐng)求完成以前阻塞附加HPS請(qǐng)求。
6.如權(quán)利要求1所述的系統(tǒng),所述VMM還將附加HPS請(qǐng)求排隊(duì),所述DRU與所述HPS請(qǐng)求并行地處理附加HPS請(qǐng)求。
7.如權(quán)利要求1所述的系統(tǒng),所述HPS請(qǐng)求使能以下操作中的至少一個(gè) 切斷到所述第一存儲(chǔ)器頁(yè)面位置的電力,以及所述第一存儲(chǔ)器頁(yè)面位置的存儲(chǔ)器重新組織。
8.一種方法,包括從虛擬機(jī)監(jiān)視器(VMM)接收和校驗(yàn)熱頁(yè)面交換(HPQ請(qǐng)求,所述HPS請(qǐng)求包括由至少一個(gè)虛擬機(jī)(VM)使用的虛擬地址、映射到所述虛擬地址的第一存儲(chǔ)器頁(yè)面位置、以及第二存儲(chǔ)器頁(yè)面位置;在所述HPS請(qǐng)求完成以前阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求; 將所述第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到所述第二存儲(chǔ)器頁(yè)面位置;以及將所述虛擬地址從所述第一存儲(chǔ)器頁(yè)面位置重新映射到所述第二存儲(chǔ)器頁(yè)面位置。
9.如權(quán)利要求8所述的方法,還包括在所述HPS請(qǐng)求被滿足以前阻塞所有DMA請(qǐng)求。
10.如權(quán)利要求8所述的方法,還包括如果DMA請(qǐng)求的存儲(chǔ)器的地址已經(jīng)被重新映射,則基于所述第二存儲(chǔ)器頁(yè)面位置滿足 DMA請(qǐng)求;以及如果DMA請(qǐng)求的存儲(chǔ)器的地址還必須被重新映射,則基于所述第一存儲(chǔ)器頁(yè)面位置滿足DMA請(qǐng)求。
11.如權(quán)利要求8所述的方法,還包括在所述HPS請(qǐng)求完成以前阻塞附加HPS請(qǐng)求。
12.如權(quán)利要求8所述的方法,還包括與所述HPS請(qǐng)求并行地處理附加HPS請(qǐng)求。
13.如權(quán)利要求8所述的方法,還包括切斷到所述第一存儲(chǔ)器頁(yè)面位置的電力。
14.如權(quán)利要求8所述的方法,還包括重新組織所述第一存儲(chǔ)器頁(yè)面位置的存儲(chǔ)器。
15.一種設(shè)備,包括第一邏輯,所述第一邏輯接收和校驗(yàn)熱頁(yè)面交換(HPQ,所述HPS請(qǐng)求包括虛擬地址、 映射到由至少一個(gè)虛擬機(jī)(VM)使用的所述虛擬地址的第一存儲(chǔ)器頁(yè)面位置、以及第二存儲(chǔ)器頁(yè)面位置;裝置接口,所述裝置接口接收DMA請(qǐng)求,所述裝置接口在所述HPS請(qǐng)求完成以前阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求;以及第二邏輯,所述第二邏輯將所述第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到所述第二存儲(chǔ)器頁(yè)面位置,以及將所述虛擬地址從所述第一存儲(chǔ)器頁(yè)面位置重新映射到所述第二存儲(chǔ)器頁(yè)面位置。
16.如權(quán)利要求15所述的設(shè)備,所述裝置接口還在所述HPS請(qǐng)求被滿足以前阻塞所有 DMA請(qǐng)求。
17.如權(quán)利要求15所述的設(shè)備,所述裝置接口還如果DMA請(qǐng)求的存儲(chǔ)器的地址已經(jīng)被重新映射,則基于所述第二存儲(chǔ)器頁(yè)面位置滿足 DMA請(qǐng)求;以及如果DMA請(qǐng)求的存儲(chǔ)器的地址還必須被重新映射,則基于所述第一存儲(chǔ)器頁(yè)面位置滿足DMA請(qǐng)求。
18.如權(quán)利要求15所述的設(shè)備,所述第一邏輯還與所述HPS請(qǐng)求并行地處理附加HPS請(qǐng)求。
19.如權(quán)利要求15所述的設(shè)備,所述HPS請(qǐng)求使能以下操作中的至少一個(gè) 切斷到所述第一存儲(chǔ)器頁(yè)面位置的電力,以及所述第一存儲(chǔ)器頁(yè)面位置的存儲(chǔ)器重新組織。
全文摘要
本發(fā)明名稱為“用于具有定向I/O的虛擬機(jī)的熱交換有源存儲(chǔ)器”。本發(fā)明的實(shí)施例描述一種從虛擬機(jī)監(jiān)視器(VMM)接收熱頁(yè)面交換(HPS)請(qǐng)求的DMA重新映射單元(DRU),該HPS請(qǐng)求包括由至少一個(gè)虛擬機(jī)(VM)使用的、映射到第一存儲(chǔ)器頁(yè)面位置的虛擬地址,以及第二存儲(chǔ)器頁(yè)面位置。DRU還在HPS請(qǐng)求被滿足以前,阻塞到正被重新映射的存儲(chǔ)器的地址的DMA請(qǐng)求,將第一存儲(chǔ)器頁(yè)面位置的內(nèi)容復(fù)制到第二存儲(chǔ)器頁(yè)面位置,以及將虛擬地址從第一存儲(chǔ)器頁(yè)面位置重新映射到第二存儲(chǔ)器頁(yè)面位置。
文檔編號(hào)G06F13/28GK102346683SQ201110089878
公開(kāi)日2012年2月8日 申請(qǐng)日期2011年3月31日 優(yōu)先權(quán)日2010年3月31日
發(fā)明者K·田 申請(qǐng)人:英特爾公司