国产精品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ī)的高性能定時器實現(xiàn)方法、虛擬機(jī)與流程

      文檔序號:11133704閱讀:423來源:國知局
      一種用于虛擬機(jī)的高性能定時器實現(xiàn)方法、虛擬機(jī)與制造工藝

      本發(fā)明涉及虛擬機(jī)高性能定時領(lǐng)域,尤其涉及一種用于虛擬機(jī)的高性能定時器實現(xiàn)方法、虛擬機(jī)。



      背景技術(shù):

      目前在虛擬化領(lǐng)域的應(yīng)用中,虛擬機(jī)性能是大家普遍關(guān)注的一個關(guān)鍵指標(biāo),一臺虛擬機(jī)能否具有和物理機(jī)相同的性能是虛擬化領(lǐng)域長期以來比較難以解決的難題,而嵌入式虛擬化由于其承載業(yè)務(wù)具有高實時性要求的特性,因此對虛擬化后的各項性能指標(biāo)要求更為苛刻,而影響虛擬機(jī)運行指標(biāo)中最為關(guān)鍵的一個就是虛擬機(jī)定時器精度問題。

      現(xiàn)有嵌入式虛擬化高精度定時器處理流程是:GuestOS配置偏移為0x380的Timer Initial Count寄存器定時值;硬件寫0x380寄存器產(chǎn)生VM_Exit到Hypervisor進(jìn)行指令解碼后寫入真實硬件寄存器;系統(tǒng)由Hypervisor返回到GuestOS繼續(xù)運行;高精度定時器定時到硬件產(chǎn)生中斷發(fā)生VM_Exit到Hypervisor處理中斷后將該中斷轉(zhuǎn)換為虛擬中斷注入GuestOS的IDT中斷處理流程。

      該方法存在影響嵌入式虛擬機(jī)高精度定時器性能的關(guān)鍵因素有兩個方面:第一是每次向0x380寄存器寫定時值會產(chǎn)生一次VM_Exit到Hypervisor處理產(chǎn)生指令解碼操作形成性能瓶頸;第二是當(dāng)定時到時高精度定時器會發(fā)出中斷產(chǎn)生VM_Exit到Hypervisor處理后再注入中斷到GuestOS IDT中斷處理例程, 這個過程增加了VM_Exit到Hypervisor切換和硬件中斷處理開銷,對于虛擬機(jī)定時器精度有較大的性能影響。

      因此,如何提供一種具備較高定時器精度的高性能定時器實現(xiàn)方法,是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。



      技術(shù)實現(xiàn)要素:

      本發(fā)明提供了一種用于虛擬機(jī)的高性能定時器實現(xiàn)方法、虛擬機(jī),以解決虛擬機(jī)定時器精度差的問題。

      本發(fā)明提供了一種用于虛擬機(jī)的高性能定時器實現(xiàn)方法,其包括:分區(qū)GuestOS產(chǎn)生定時要求,向高精度定時器寄存器0x380寫定時值;分區(qū)CPU捕獲寫0x380寄存器特權(quán)指令操作,產(chǎn)生VM_Exit到Hypervisor處理;嵌入式Hypervisor通過CPU獲取寫寄存器偏移和寫入值添加至定時器配置報文,發(fā)送至高速通訊隊列;高精度定時器模塊從高速通訊隊列中獲取定時器配置報文,并寫入硬件core寄存器。

      進(jìn)一步的,當(dāng)存在多個分區(qū)時,還包括:嵌入式Hypervisor將發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址整合,并添加至定時器配置報文。

      進(jìn)一步的,在將定時器配置報文發(fā)送至高速通訊隊列之后,還包括:通知高精度定時器模塊寫寄存器操作完成;高精度定時器模塊在收到通知后,從高速通訊隊列中獲取定時器配置報文。

      進(jìn)一步的,高精度定時器模塊將定時器配置報文寫入硬件core寄存器包括:高精度定時器模塊解析定時器配置報文,獲取寫寄存器偏移和寫入值,確定定 時器偏移及定時值,寫入硬件Core定時器。

      進(jìn)一步的,當(dāng)存在多個分區(qū)時,還包括:高精度定時器模塊解析定時器配置報文,獲取寫寄存器偏移和寫入值、發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址,以定時器偏移及定時值為VCPU所在的core id、硬件Posted Interrupt描述符地址存儲到虛擬機(jī)定時器模型;找出的最小定時值寫入硬件Core定時器。

      進(jìn)一步的,還包括:判斷硬件Core定時器是否處于非定時狀態(tài);如果硬件Core定時器處于非定時狀態(tài),則高精度定時器模塊查找虛擬機(jī)定時器數(shù)據(jù)模型,將找出的最小定時值寫入硬件Core定時器;如果硬件Core定時器處于定時狀態(tài),不進(jìn)行硬件Core定時器的寫入操作。

      進(jìn)一步的,還包括:部署分區(qū)虛擬機(jī)的core通過Hypervisor關(guān)閉高精度定時器。

      進(jìn)一步的,還包括:選擇一core,在core該運行嵌入式Hypervisor高精度定時器模塊。

      進(jìn)一步的,還包括:在嵌入式Hypervisor軟件層構(gòu)建各個分區(qū)虛擬機(jī)與高精度定時器模塊之間的高速通訊通道。

      進(jìn)一步的,還包括:硬件Core定時器在定時到達(dá)時,發(fā)送中斷通知至高精度定時器模塊,高精度定時器模塊向分區(qū)PI描述符寫入高精度定時器中斷標(biāo)志,向分區(qū)core發(fā)送PI物理中斷。

      進(jìn)一步的,當(dāng)存在多個分區(qū)時,還包括:高精度定時器模塊從虛擬機(jī)定時器模型中獲取定時到的虛擬機(jī)的VCPU的core id及虛擬機(jī)PI描述符地址信息,根據(jù)獲取的虛擬機(jī)PI描述符地址向?qū)?yīng)的PI描述符寫入高精度定時器中斷標(biāo) 志,根據(jù)獲取的VCPU的core id向?qū)?yīng)的core發(fā)送PI物理中斷。

      進(jìn)一步的,還包括:高精度定時器模塊從虛擬機(jī)定時器模型中刪除已經(jīng)完成定時中斷注入的分區(qū)定時器數(shù)據(jù),并從虛擬機(jī)定時器數(shù)據(jù)模型讀取下一個最小定時值,將讀取的虛擬機(jī)下一個最小定時值寫入硬件Core定時器。

      本發(fā)明提供了一種虛擬機(jī),其包括:分區(qū)GuestOS,用于產(chǎn)生定時要求,向高精度定時器寄存器0x380寫定時值;分區(qū)CPU,用于捕獲寫0x380寄存器特權(quán)指令操作,產(chǎn)生VM_Exit到Hypervisor處理;嵌入式Hypervisor,用于通過CPU獲取寫寄存器偏移和寫入值添加至定時器配置報文,發(fā)送至高速通訊隊列;高精度定時器模塊,用于從高速通訊隊列中獲取定時器配置報文,并寫入硬件core寄存器。

      進(jìn)一步的,當(dāng)存在多個分區(qū)時,嵌入式Hypervisor還用于將發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址整合,并添加至定時器配置報文。

      進(jìn)一步的,嵌入式Hypervisor在將定時器配置報文發(fā)送至高速通訊隊列之后,還用于通知高精度定時器模塊寫寄存器操作完成;高精度定時器模塊還用于在收到通知后,從高速通訊隊列中獲取定時器配置報文。

      進(jìn)一步的,高精度定時器模塊用于解析定時器配置報文,獲取寫寄存器偏移和寫入值,確定定時器偏移及定時值,寫入硬件Core定時器。

      進(jìn)一步的,當(dāng)存在多個分區(qū)時,高精度定時器模塊還用于解析定時器配置報文,獲取寫寄存器偏移和寫入值、發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址,以定時器偏移及定時值為VCPU所在的core id、硬件Posted Interrupt描述符地址存儲到虛擬機(jī)定時器模型;找出 的最小定時值寫入硬件Core定時器。

      進(jìn)一步的,高精度定時器模塊還用于判斷硬件Core定時器是否處于非定時狀態(tài);如果硬件Core定時器處于非定時狀態(tài),則查找虛擬機(jī)定時器數(shù)據(jù)模型,將找出的最小定時值寫入硬件Core定時器;如果硬件Core定時器處于定時狀態(tài),不進(jìn)行硬件Core定時器的寫入操作。

      進(jìn)一步的,部署分區(qū)虛擬機(jī)的core還用于通過Hypervisor關(guān)閉高精度定時器。

      進(jìn)一步的,嵌入式Hypervisor還用于選擇一core,在core該運行嵌入式Hypervisor高精度定時器模塊。

      進(jìn)一步的,嵌入式Hypervisor還用于在軟件層構(gòu)建各個分區(qū)虛擬機(jī)與高精度定時器模塊之間的高速通訊通道。

      進(jìn)一步的,硬件Core定時器還用于硬件Core定時器在定時到達(dá)時,發(fā)送中斷通知至高精度定時器模塊;高精度定時器模塊還用于向分區(qū)PI描述符寫入高精度定時器中斷標(biāo)志,向分區(qū)core發(fā)送PI物理中斷。

      進(jìn)一步的,當(dāng)存在多個分區(qū)時,高精度定時器模塊還用于從虛擬機(jī)定時器模型中獲取定時到的虛擬機(jī)的VCPU的core id及虛擬機(jī)PI描述符地址信息,根據(jù)獲取的虛擬機(jī)PI描述符地址向?qū)?yīng)的PI描述符寫入高精度定時器中斷標(biāo)志,根據(jù)獲取的VCPU的core id向?qū)?yīng)的core發(fā)送PI物理中斷。

      進(jìn)一步的,高精度定時器模塊還用于從虛擬機(jī)定時器模型中刪除已經(jīng)完成定時中斷注入的分區(qū)定時器數(shù)據(jù),并從虛擬機(jī)定時器數(shù)據(jù)模型讀取下一個最小定時值,將讀取的虛擬機(jī)下一個最小定時值寫入硬件Core定時器。

      本發(fā)明的有益效果:

      本發(fā)明提供了一種新的高性能定時器實現(xiàn)方法,在生成定時器配置報文并寫入定時器的過程中,不需要像現(xiàn)有技術(shù)那樣硬件寫0x380寄存器產(chǎn)生VM_Exit到Hypervisor進(jìn)行指令解碼后寫入真實硬件寄存器,這樣,GuestOS寫0x380寄存器不需要軟件進(jìn)行指令解碼,硬件會進(jìn)行指令解碼并直接在VM_Exit事件中將寄存器偏移地址和寫入值傳遞給Hypervisor處理,從本質(zhì)上消除了軟件指令解碼產(chǎn)生的時間瓶頸;進(jìn)一步的,在定時器到達(dá)后,高精度定時器模塊先向Posted Interrupt descriptor寫入高精度定時器中斷標(biāo)志,然后向?qū)?yīng)的core id發(fā)送Posted Interrupt核間中斷,Intel Posted Interrupt硬件虛擬化機(jī)制會自動根據(jù)上述配置完成對不同分區(qū)虛擬機(jī)高精度定時器的中斷注入,此過程中不會產(chǎn)生任何VM_Exit也不需要Hypervisor介入中斷處理,因此性能可以達(dá)到與物理機(jī)一致的水平。

      附圖說明

      圖1為本發(fā)明第一實施例提供的虛擬機(jī)的結(jié)構(gòu)示意圖;

      圖2為本發(fā)明第二實施例提供的高性能定時器實現(xiàn)方法的流程圖;

      圖3為本發(fā)明第三實施例提供的高性能定時器實現(xiàn)方法的流程圖。

      具體實施方式

      現(xiàn)通過具體實施方式結(jié)合附圖的方式對本發(fā)明做出進(jìn)一步的詮釋說明。

      第一實施例:

      圖1為本發(fā)明第一實施例提供的虛擬機(jī)的結(jié)構(gòu)示意圖,由圖1可知,在本 實施例中,本發(fā)明提供的虛擬機(jī)1包括:

      分區(qū)GuestOS11,用于產(chǎn)生定時要求,向高精度定時器寄存器0x380寫定時值;

      分區(qū)CPU12,用于捕獲寫0x380寄存器特權(quán)指令操作,產(chǎn)生VM_Exit到Hypervisor處理;

      嵌入式Hypervisor13,用于通過CPU獲取寫寄存器偏移和寫入值添加至定時器配置報文,發(fā)送至高速通訊隊列;

      高精度定時器模塊14,用于從高速通訊隊列中獲取定時器配置報文,并寫入硬件core寄存器15;

      硬件core寄存器15用于執(zhí)行定時器。

      在一些實施例中,當(dāng)存在多個分區(qū)時,上述實施例中的嵌入式Hypervisor13還用于將發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址整合,并添加至定時器配置報文。

      在一些實施例中,上述實施例中的嵌入式Hypervisor13在將定時器配置報文發(fā)送至高速通訊隊列之后,還用于通知高精度定時器模塊寫寄存器操作完成;高精度定時器模塊還用于在收到通知后,從高速通訊隊列中獲取定時器配置報文。

      在一些實施例中,上述實施例中的高精度定時器模塊14用于解析定時器配置報文,獲取寫寄存器偏移和寫入值,確定定時器偏移及定時值,寫入硬件Core定時器。

      在一些實施例中,當(dāng)存在多個分區(qū)時,上述實施例中的高精度定時器模塊 14還用于解析定時器配置報文,獲取寫寄存器偏移和寫入值、發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址,以定時器偏移及定時值為VCPU所在的core id、硬件Posted Interrupt描述符地址存儲到虛擬機(jī)定時器模型;找出的最小定時值寫入硬件Core定時器15。

      在一些實施例中,上述實施例中的高精度定時器模塊14還用于判斷硬件Core定時器15是否處于非定時狀態(tài);如果硬件Core定時器處于非定時狀態(tài),則查找虛擬機(jī)定時器數(shù)據(jù)模型,將找出的最小定時值寫入硬件Core定時器;如果硬件Core定時器處于定時狀態(tài),不進(jìn)行硬件Core定時器的寫入操作。

      在一些實施例中,上述實施例中的部署分區(qū)虛擬機(jī)的core還用于通過Hypervisor13關(guān)閉高精度定時器。

      在一些實施例中,上述實施例中的嵌入式Hypervisor13還用于選擇一core,在core該運行嵌入式Hypervisor高精度定時器模塊14。

      在一些實施例中,上述實施例中的嵌入式Hypervisor13還用于在軟件層構(gòu)建各個分區(qū)虛擬機(jī)與高精度定時器模塊14之間的高速通訊通道。

      在一些實施例中,上述實施例中的硬件Core定時器15還用于硬件Core定時器在定時到達(dá)時,發(fā)送中斷通知至高精度定時器模塊14;高精度定時器模塊14還用于向分區(qū)PI描述符寫入高精度定時器中斷標(biāo)志,向分區(qū)core發(fā)送PI物理中斷。

      在一些實施例中,當(dāng)存在多個分區(qū)時,上述實施例中的高精度定時器模塊14還用于從虛擬機(jī)定時器模型中獲取定時到的虛擬機(jī)的VCPU的core id及虛擬機(jī)PI描述符地址信息,根據(jù)獲取的虛擬機(jī)PI描述符地址向?qū)?yīng)的PI描述符寫入高精度定時器中斷標(biāo)志,根據(jù)獲取的VCPU的core id向?qū)?yīng)的core發(fā)送 PI物理中斷。

      在一些實施例中,上述實施例中的高精度定時器模塊14還用于從虛擬機(jī)定時器模型中刪除已經(jīng)完成定時中斷注入的分區(qū)定時器數(shù)據(jù),并從虛擬機(jī)定時器數(shù)據(jù)模型讀取下一個最小定時值,將讀取的虛擬機(jī)下一個最小定時值寫入硬件Core定時器。

      第二實施例:

      圖2為本發(fā)明第二實施例提供的高性能定時器實現(xiàn)方法的流程圖,由圖2可知,在本實施例中,本發(fā)明提供的高性能定時器實現(xiàn)方法包括以下步驟:

      S201:分區(qū)GuestOS產(chǎn)生定時要求,向高精度定時器寄存器0x380寫定時值;

      S202:分區(qū)CPU捕獲寫0x380寄存器特權(quán)指令操作,產(chǎn)生VM_Exit到Hypervisor處理;

      S203:嵌入式Hypervisor通過CPU獲取寫寄存器偏移和寫入值添加至定時器配置報文,發(fā)送至高速通訊隊列;

      S204:高精度定時器模塊從高速通訊隊列中獲取定時器配置報文,并寫入硬件core寄存器。

      在一些實施例中,當(dāng)存在多個分區(qū)時,上述實施例中的方法還包括:嵌入式Hypervisor將發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址整合,并添加至定時器配置報文。

      在一些實施例中,上述實施例中的方法在將定時器配置報文發(fā)送至高速通訊隊列之后,還包括:通知高精度定時器模塊寫寄存器操作完成;高精度定時器 模塊在收到通知后,從高速通訊隊列中獲取定時器配置報文。

      在一些實施例中,上述實施例中的高精度定時器模塊將定時器配置報文寫入硬件core寄存器包括:高精度定時器模塊解析定時器配置報文,獲取寫寄存器偏移和寫入值,確定定時器偏移及定時值,寫入硬件Core定時器。

      在一些實施例中,當(dāng)存在多個分區(qū)時,上述實施例中的方法還包括:高精度定時器模塊解析定時器配置報文,獲取寫寄存器偏移和寫入值、發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id、對應(yīng)硬件Posted Interrupt描述符地址,以定時器偏移及定時值為VCPU所在的core id、硬件Posted Interrupt描述符地址存儲到虛擬機(jī)定時器模型;找出的最小定時值寫入硬件Core定時器。

      在一些實施例中,上述實施例中的方法還包括:判斷硬件Core定時器是否處于非定時狀態(tài);如果硬件Core定時器處于非定時狀態(tài),則高精度定時器模塊查找虛擬機(jī)定時器數(shù)據(jù)模型,將找出的最小定時值寫入硬件Core定時器;如果硬件Core定時器處于定時狀態(tài),不進(jìn)行硬件Core定時器的寫入操作。

      在一些實施例中,上述實施例中的方法還包括:部署分區(qū)虛擬機(jī)的core通過Hypervisor關(guān)閉高精度定時器。

      在一些實施例中,上述實施例中的方法還包括:選擇一core,在core該運行嵌入式Hypervisor高精度定時器模塊。

      在一些實施例中,上述實施例中的方法還包括:在嵌入式Hypervisor軟件層構(gòu)建各個分區(qū)虛擬機(jī)與高精度定時器模塊之間的高速通訊通道。

      在一些實施例中,上述實施例中的方法還包括:硬件Core定時器在定時到達(dá)時,發(fā)送中斷通知至高精度定時器模塊,高精度定時器模塊向分區(qū)PI描述符寫入高精度定時器中斷標(biāo)志,向分區(qū)core發(fā)送PI物理中斷。

      在一些實施例中,當(dāng)存在多個分區(qū)時,上述實施例中的方法還包括:高精度定時器模塊從虛擬機(jī)定時器模型中獲取定時到的虛擬機(jī)的VCPU的core id及虛擬機(jī)PI描述符地址信息,根據(jù)獲取的虛擬機(jī)PI描述符地址向?qū)?yīng)的PI描述符寫入高精度定時器中斷標(biāo)志,根據(jù)獲取的VCPU的core id向?qū)?yīng)的core發(fā)送PI物理中斷。

      在一些實施例中,上述實施例中的方法還包括:高精度定時器模塊從虛擬機(jī)定時器模型中刪除已經(jīng)完成定時中斷注入的分區(qū)定時器數(shù)據(jù),并從虛擬機(jī)定時器數(shù)據(jù)模型讀取下一個最小定時值,將讀取的虛擬機(jī)下一個最小定時值寫入硬件Core定時器。

      現(xiàn)結(jié)合具體應(yīng)用場景對本發(fā)明做進(jìn)一步的詮釋說明。

      第三實施例:

      圖3為本發(fā)明第三實施例提供的高性能定時器實現(xiàn)方法的流程圖,由圖3可知,在本實施例中,本發(fā)明提供的高性能定時器實現(xiàn)方法包括以下步驟:

      S301:虛擬機(jī)初始化。

      初始化包括以下步驟:

      部署分區(qū)虛擬機(jī)的core通過Hypervisor關(guān)閉高精度定時器,防止產(chǎn)生不必要的外部中斷影響;

      單獨分離出一個core運行嵌入式Hypervisor高精度定時器模塊,啟動該core高精度定時器硬件功能,該模塊為不同分區(qū)高精度定時器提供時鐘源;

      在嵌入式Hypervisor軟件層構(gòu)建各個分區(qū)虛擬機(jī)與高精度定時器模塊之間的高速通訊通道,提供不同分區(qū)0x380寄存器定時值向高精度定時器模塊的寫 入機(jī)制;

      嵌入式Hypervisor配置分區(qū)虛擬機(jī)硬件APIC Register Virtualization功能,目的是讓GuestOS寫0x380寄存器不需要軟件進(jìn)行指令解碼,硬件會進(jìn)行指令解碼并直接在VM_Exit事件中將寄存器偏移地址和寫入值傳遞給Hypervisor處理,從本質(zhì)上消除了軟件指令解碼產(chǎn)生的時間瓶頸;

      S302:分區(qū)生成定時器配置報文。

      嵌入式Hypervisor捕獲GuestOS對0x380寄存器寫處理操作并不直接寫入當(dāng)前core的硬件寄存器,而是通過高速通訊通道將定時值、當(dāng)前core id及對應(yīng)的Posted Interrupt descriptor地址寫入高精度定時器模塊。

      具體的,本步驟包括:

      高精GuestOS產(chǎn)生定時要求向高精度定時器寄存器0x380寫定時值;

      CPU硬件捕獲寫0x380寄存器特權(quán)指令操作產(chǎn)生VM_Exit到Hypervisor處理;

      嵌入式Hypervisor通過CPU硬件獲取寫寄存器偏移和寫入值并將發(fā)起寄存器寫操作的分區(qū)VCPU所在的core id和對應(yīng)的硬件Posted Interrupt描述符地址整合后,通過定時器配置報文打包發(fā)送到高速通訊隊列;

      嵌入式Hypervisor發(fā)送事件通知高精度定時器模塊寫寄存器操作完成;

      高精度定時器模塊從高速通訊隊列中獲取定時器配置報文。

      S303:將定時值寫入硬件core定時器。

      高精度定時器模塊從高速通訊通道接收來自各個分區(qū)虛擬機(jī)配置的高精度定時器報文,更新內(nèi)部數(shù)據(jù)模型,并進(jìn)行計算與分析最后完成高精度定時器模塊所在core硬件高精度定時器的配置。

      具體的,本步驟包括:

      高精度定時器模塊收到Hypervisor消息事件通道通知,證明此時已經(jīng)有虛擬機(jī)分區(qū)寫入高精度定時器定時報文,準(zhǔn)備從通訊隊列讀取定時報文內(nèi)容;

      高精度定時器模塊解析消息事件信息獲取高速通訊隊列號,并從隊列中讀取虛擬機(jī)分區(qū)寫入的高精度定時器定時報文;

      高精度定時器模塊分析讀取的虛擬機(jī)配置定時器報文,以定時器偏移及定時值為索引將報文中的VCPU運行的coreid、硬件Posted Interrupt描述符地址存儲到虛擬機(jī)定時器數(shù)據(jù)模型;

      如果當(dāng)前硬件Core定時器處于非定時狀態(tài)則高精度定時器模塊查找虛擬機(jī)定時器數(shù)據(jù)模型,將找出的最小定時值寫入硬件Core定時器;如果當(dāng)前硬件Core定時器處于定時狀態(tài),不進(jìn)行硬件Core定時器的寫入操作。

      S304:硬件core定時器定時到達(dá),產(chǎn)生中斷。

      高精度定時器模塊所在的core硬件高精度定時器定時到后觸發(fā)高精度定時器模塊運行,通過內(nèi)部數(shù)據(jù)模型查找需要定時處理的分區(qū)虛擬機(jī)Posted Interrupt descriptor地址和core id,找到數(shù)據(jù)后先向Posted Interrupt descriptor寫入高精度定時器中斷標(biāo)志,然后向?qū)?yīng)的core id發(fā)送Posted Interrupt核間中斷,Intel Posted Interrupt硬件虛擬化機(jī)制會自動根據(jù)上述配置完成對不同分區(qū)虛擬機(jī)高精度定時器的中斷注入,此過程中不會產(chǎn)生任何VM_Exit也不需要Hypervisor介入中斷處理,因此性能可以達(dá)到與物理機(jī)一致的水平

      具體的,本步驟包括:

      硬件Core定時器定時到發(fā)中斷通知高精度定時器模塊;

      高精度定時器模塊從虛擬機(jī)定時器數(shù)據(jù)模型中獲取定時到的相關(guān)虛擬機(jī)coreid及PI描述符地址信息;

      根據(jù)從數(shù)據(jù)模型中獲取的虛擬機(jī)PI描述符地址向?qū)?yīng)的PI描述符寫入高精度定時器中斷標(biāo)志;

      根據(jù)從數(shù)據(jù)模型中獲取的VCPU的coreid向該core發(fā)送PI物理中斷;

      當(dāng)軟件Hypervisor完成本步驟后,硬件會自動從PI描述符中讀取高精度定時器中斷標(biāo)志并自動產(chǎn)生高精度定時器中斷并跳轉(zhuǎn)到GuestOS中斷處理例程執(zhí)行,整個過程不會產(chǎn)生VM_Exit,因此性能與物理機(jī)完全一致。

      S305:在硬件core定時器寫入下一定時信息。

      高精度定時器模塊從虛擬機(jī)定時器模型中刪除已經(jīng)完成定時中斷注入的分區(qū)定時器數(shù)據(jù),并從虛擬機(jī)定時器數(shù)據(jù)模型讀取下一個最小定時值;高精度定時器模塊將讀取的虛擬機(jī)下一個最小定時值寫入硬件Core高精度定時器。

      綜上可知,通過本發(fā)明的實施,至少存在以下有益效果:

      在生成定時器配置報文并寫入定時器的過程中,不需要像現(xiàn)有技術(shù)那樣硬件寫0x380寄存器產(chǎn)生VM_Exit到Hypervisor進(jìn)行指令解碼后寫入真實硬件寄存器,這樣,GuestOS寫0x380寄存器不需要軟件進(jìn)行指令解碼,硬件會進(jìn)行指令解碼并直接在VM_Exit事件中將寄存器偏移地址和寫入值傳遞給Hypervisor處理,從本質(zhì)上消除了軟件指令解碼產(chǎn)生的時間瓶頸;

      進(jìn)一步的,在定時器到達(dá)后,高精度定時器模塊先向Posted Interrupt descriptor寫入高精度定時器中斷標(biāo)志,然后向?qū)?yīng)的core id發(fā)送Posted Interrupt核間中斷,Intel Posted Interrupt硬件虛擬化機(jī)制會自動根據(jù)上述配置 完成對不同分區(qū)虛擬機(jī)高精度定時器的中斷注入,此過程中不會產(chǎn)生任何VM_Exit也不需要Hypervisor介入中斷處理,因此性能可以達(dá)到與物理機(jī)一致的水平;

      進(jìn)一步的,部署分區(qū)虛擬機(jī)的core通過Hypervisor關(guān)閉高精度定時器,防止產(chǎn)生不必要的外部中斷影響;

      進(jìn)一步的,單獨分離出一個core運行嵌入式Hypervisor高精度定時器模塊,啟動該core高精度定時器硬件功能,該模塊為不同分區(qū)高精度定時器提供時鐘源;

      進(jìn)一步的,在嵌入式Hypervisor軟件層構(gòu)建各個分區(qū)虛擬機(jī)與高精度定時器模塊之間的高速通訊通道,提供不同分區(qū)0x380寄存器定時值向高精度定時器模塊的寫入機(jī)制。

      以上僅是本發(fā)明的具體實施方式而已,并非對本發(fā)明做任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施方式所做的任意簡單修改、等同變化、結(jié)合或修飾,均仍屬于本發(fā)明技術(shù)方案的保護(hù)范圍。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1