訪問遠程機器上的設備的制作方法
【專利摘要】公開了一種方法,其可包括由本地機的虛擬機管理器主存具有設備驅動器的虛擬機。所述方法可包括由所述虛擬機管理器從遠程機上的占位驅動器獲取與所述遠程機上的I/O設備相關的信息。在遠程機上的I/O設備被綁定到遠程機上的占位驅動器。所述方法可包括由虛擬機管理器實例化本地機上對應于遠程機上的I/O設備的虛擬I/O設備。所述方法包括由所述虛擬機管理器與遠程機上的占位驅動器協作來為設備驅動器代表本地機上的程序對所述虛擬I/O設備的訪問實現對I/O設備的真實訪問。描述并要求保護其他實施例。
【專利說明】訪問遠程機器上的設備
【技術領域】
[0001]本發明通常涉及計算系統【技術領域】。尤其是,本公開涉及訪問在遠程機器上的設備。
【背景技術】
[0002]在此提供的背景描述目的在于一般性地展示本公開的上下文。在此除非特別指示,否則在此部分描述的內容并不構成本申請權利要求書的現有技術,并不因為在此部分包含而承認現有技術。
[0003]今天,很多用戶使用多個計算設備,例如平板、智能手機、和個人計算機。然而,當代技術設備并不能夠使得用戶在多個設備,例如膝上筆記本、智能手機、平板或甚至汽車信息娛樂系統之間無縫移動。
[0004]附圖簡述
[0005]作為例子但不是限制,展示了本發明的多個實施例,附圖中的標記相同參考數字指代相同元件。
[0006]圖1是適合用于實施本發明各種實施例的計算連續體的框圖。
[0007]圖2是根據本發明的各種實施例的計算連續體的框圖。
[0008]圖3是根據本發明各種實施例在本地計算機器側訪問方法的流程圖。
[0009]圖4是根據本發明各種實施例在遠程計算機器上的訪問方法的流程圖。
[0010]圖5是并入到本發明各種實施例中的計算機器的框圖。
[0011]具體實施例描述
[0012]本發明的多個實施例可涉及在遠程機器上訪問設備。為了克服與在本地機器和遠程機器之間共享資源相關的問題,可以配置本地機器的虛擬機管理器(VMM)來與遠程機器的占位驅動器(stub driver)協作。VMM與占位驅動器的協作使得本地機器能夠無縫訪問遠程機器上的設備。
[0013]優選地,在此公開的系統和方法使得硬件獨立和軟件透明的辦法能從本地機器上訪問遠程機器上的設備。
[0014]所展示實施例的各個方面將使用本領域技術人員將他們的工作的實質表達給本領域其他人員通常采用的術語來描述。然而,本領域技術人員將清楚,可以使用部分描述的方法來實施某些替換實施例。為了展示的目的,闡述了具體的數量、材料和結構,以便對所展示的實施例提供完全的理解。然而,本領域技術人員應當清楚,這些替換實施例沒有這些具體細節也是可以實施的。在其他情況下,省略或簡化了已知的特征以便不會模糊所展示的實施例。
[0015]進一步,各種操作將作為多個分離的操作以對于理解所示實施例最有利的方式依次進行描述;然而,描述的順序不應被解釋為暗含這些操作必須相互依賴的順序。尤其是,這些操作不需要以所展示的順序執行。
[0016]短語“在一個實施例中”被重復使用。該短語一般來說并不指代相同的實施例;然而,也有可能是這樣。術語“包括”、“具有”和“包含”是同義詞,除非文中專門指出。短語“A/B”意思是“A”或者“B”。短語“A和/或B”意思是“㈧、⑶或者(A和B) ”。短語“A、B和C中至少一個”意思是“ (A)、(B)、(C),(A和B),(A和C),(B和C)或者(A、B和C) ”。短語“㈧B”意思是“⑶或(A,B)”,SP A是可選的。
[0017]圖1顯示了適合執行本公開實施例的計算連續體(continuum) 100。計算連續體100可包括運行虛擬機管理器(VMM) 104的本地機102,所述虛擬機可通過通信信道106連接到運行占位驅動器110的遠程機108。計算連續體100提供了硬件獨立和軟件透明方案以使得本地機102能通過通信信道106訪問遠程機108上的一個或多個裝置。尤其是,VMM104可以與占位驅動器110進行通信以為遠程機108上的一個或多個裝置發射和接收指令和/或其他信息。所述通信信道106可以是多種有線或無線通信技術中的任何一種技術的信道,例如通用串行總線(USB)、以太網、藍牙?、W1-Fi?等等。
[0018]在此使用的術語“計算連續體”指的是多個計算機器的聯盟或聯合,例如平板、智能電話、膝上筆記本、臺式機、汽車信息娛樂系統、等等,其中無縫訪問在一個或多個(或所有)機器上的設備。雖然為了便于理解,計算連續體100展示為一個本地機102和一個遠程機108,但是本公開不不如此限制。正如從下面的說明書中將要理解的那樣,本公開可以通過兩個或多個計算機器的計算連續體來實施。進一步,以一種訪問情形訪問遠程機的本地機在另一訪問情形下其自身被訪問時也可以是遠程機。
[0019]正如在此使用的那樣,硬件的獨立性可意味著該方法能夠訪問附連到任何類型總線的任何種類的遠程資源,例如資源設備或I/o設備。如在此使用的那樣,軟件透明性意味著所公開的方法可與操作系統、設備驅動器和上層應用程序一起使用而無需對操作系統、設備驅動器或上層應用程序進行修改。
[0020]本地機102可以是多種計算設備的任何一種。例如,本地機102可以是個人計算機、平板、智能手機、個人數字助理、臺式機、膝上筆記本、游戲控制臺、或其他類似計算設備。本地機102可以運行包括操作系統、設備驅動器和應用程序的全部軟件棧。本地機102可以運行受益于能夠訪問位于遠程機108上的一個或多個設備或資源的一種或多種應用程序。例如,本地機102可以運行受益于訪問處于遠程機108上的圖形處理單元(GPU)的圖像密集應用程序。作為另一個例子,本地機102可以執行可受益于訪問遠程機108上的網絡接口設備的基于網絡的應用程序。根據各實施例,本地機102可以通過運行包括在本公開的示教中的VMM104來訪問遠程機108上的一個或多個設備。
[0021]VMM104可以被配置用以管理本地機102上的輸入/輸出(I/O)數據、設備驅動器、虛擬機、和/或操作系統。VMM可以是純基于軟件或者可以純基于硬件,或者是兩者的混合。在實施例中,VMM104可以被配置用于使得OS,例如顧客OS,能透明地訪問遠程機108上的一個或多個遠程設備。VMM104(與遠程機108的占位驅動器110 —起)可以被配置為使得本地機102上的一個或多個應用程序訪問遠程機108上的一個或多個設備。例如,VMM104可以主存虛擬機112,其可以運行本地機102的一個或多個操作系統、設備驅動器、和應用程序。VMM104也可以啟動或設置虛擬設備114以便于訪問由虛擬機112使用的或由設備驅動器或由虛擬機112執行的應用程序使用的遠程機108的一個或多個設備。在實施例中,虛擬設備114提供了運行在虛擬機112上的訪客OS,錯覺是訪客OS正在訪問本地機102上的真實設備。
[0022]根據各實施例,VMM104可以配置虛擬設備114以模擬源設備116或I/O設備118 (遠程設備116、118)。尤其是,VMM104可以配置虛擬設備114來包括或具有到I/O空間信息、直接存儲器訪問(DMA)信息和/或與遠程設備116、118相關的中斷信息的訪問。根據一個實施例,VMM104可以配置虛擬設備114的若干實例來同時在遠程機器108上模擬遠程設備116、118和/或其他遠程設備。通過配置虛擬設備114來模擬遠程設備116、118,VMM104能夠使得虛擬機112訪問虛擬設備114,就像遠程設備116、118的一個或多個被安裝在本地機102上,從而能夠使得本地機102和遠程機104形成計算連續體。
[0023]VMM104可以配置虛擬設備114通過與占位驅動器110聯合來模擬遠程設備116、118。換句話說,VMM104可以選擇性地和/或周期性地響應于預先定義的事件或任務傳輸數據、指令和/或其他信息到占位驅動器110,或從其接收。例如,為了初始化虛擬設備114,VMM104可以為位于遠程機108上的遠程設備116、118從占位驅動器110請求I/O配置信息以便于遠程設備的基于I/O地址空間的訪問。一旦接收到包含所請求的遠程設備116、118的I/O配置信息,VMM104和/或虛擬機112可以選擇遠程設備116、118中的一個或多個來模擬虛擬設備114。尤其是,VMM104首先選擇遠程設備116、118中的哪一個來輸入,然后VMM104發送請求以便接收所選設備的配置信息。作為協作的另一個例子,VMM104可以與占位驅動器110共享同虛擬設備114和遠程設備116、118的相應其中一個相關聯的基于直接存儲器訪問(DMA)的信息。作為協作的另一個例子,VMM104被配置用來從與遠程設備116、118相關聯的占位驅動器110接收中斷或與中斷相關的信息。
[0024]在實施例中,源設備116可以是遠程機108的多個源設備。例如,源設備116可以是圖形處理單元(GPU),并且VMM104可以配置虛擬設備114以與I/O空間信息的本地影子(shadow)副本、中斷處理、和GPU的緩存操作相關。
[0025]在實施例中,I/O設備118可以包括在遠程機108上的任意數量的I/O設備。例如,I/O設備118可以觸摸屏接口、全球定位系統(GPS)單元、網絡接口卡、顯示端口、通信端口、一個或多個傳感器、一個或多個通信設備,等等。
[0026]遠程機108可以被配置以使得占位驅動器110能夠從遠程機108上的一個或多個設備獲得指令、數據或其他信息以便于通過本地機102訪問所述一個或多個設備。例如,遠程機108可以將占位驅動器110綁定到源設備116或I/O設備118。綁定占位驅動器110到源設備116或I/O設備118可使得占位驅動器110能夠訪問遠程機1108上的通信和/或數據總線。綁定占位驅動器110到源設備116或I/O設備118能夠使得占位驅動器110能直接提供數據或指令給源設備116或I/O設備118。根據各實施例,占位驅動器110可以綁定到將要輸出給本地機102的遠程機108的所有I/O設備。在實施例中,遠程機108可以綁定占位驅動器110到I/O設備以便于路由中斷和/或源設備116或I/O設備118的I/O空間訪問到本地機102。根據其他實施例,遠程機108可以將占位驅動器110綁定到源設備116或I/O設備118以便于路由I/O空間信息和/或DMA相關的信息到本地機102。
[0027]總之,VMM104可以與占位驅動器110協作來使得虛擬設備114模擬遠程設備116、118。有利地,VMM104可以配置虛擬設備114來與虛擬機112或設備驅動器和/或由虛擬機112運行的應用程序接口,就像虛擬設備114是安裝在本地機102上的源設備116或I/O設備118似的。因此,VMM104可實現硬件獨立并軟件透明地從本地機102訪問遠程設備。有利地,占位驅動器I1可操作地與遠程設備116、118接口以獲得配置信息,以更新DMA信息,和/或以處理遠程設備116、118的中斷處理。這些動作可以由占位驅動器110執行,而無需對遠程設備116、118進行重新設計或永久修改。因此,根據各實施例,占位驅動器110能夠硬件獨立并軟件透明地訪問遠程設備116、118。
[0028]圖2顯示了根據本公開的實施例配置能夠使得本地機202訪問遠程機209的遠程設備116、118的計算連續體200。
[0029]本地機202可包括很多與本地機102相同的特征并且可以被配置來通過使得VMM104能夠與占位驅動器110協作來完成對遠程設備116、118的真實訪問。本地機202可包括通信代理204、存儲器206,并可以運行虛擬機112內的操作系統(0S)210和設備驅動器 212。
[0030]通信代理204可以被配置用于通過通信信道106與通信代理214進行通信。通信代理204和通信代理214每一個都可以被配置用來在本地機202和遠程機208之間建立有線或無線連接。在實施例中,通信代理204和通信代理214被配置通過通用串行總線(USB)協議、電氣和電子工程師協會(IEEE)802.1x無線協議等中的一個建立通信信道106。在實施例中,VMM104和占位驅動器110可使用通信代理204和通信代理214來交換數據、指令、中斷、或其他與I/O空間配置、DMA緩沖器、和中斷處理相關的信息。
[0031 ] 存儲器206可以連接到VMM104,并可以被配置以便于在VMM104和占位驅動器110之間各種類型的協作。根據各實施例,存儲器206指的是一般的物理地址空間,例如I/O地址空間和RAM地址空間。
[0032]在實施例中,存儲器206可以被配置用以支持遠程設備116、118的I/O空間的建立階段。設備驅動器212可以通過端口 I/O、或MMO(存儲器映射I/O)訪問I/O設備的I/O空間。為了輸入或輸出到遠程設備,遠程設備的I/O地址空間在存儲器206中被本地影子化(shadow)以向0S210和設備驅動器212提供遠程設備116、118中的一個是安裝在本地機202上的透明錯覺。然后,為了輸入或輸出到其中一個遠程機116、118,可以通過通信代理204和214重新定向I/O操作到遠程機208。在實施例中,VMM104可以配置存儲器206以支撐遠程設備116、118的I/O配置空間的建立階段。尤其是,VMM104可以在存儲器206中被分配來供虛擬機112使用的部分中影子化遠程設備116、118的I/O配置空間。然后,例如,I/O設備118的基礎地址寄存器可以直接暴露或者在一些轉換之后暴露。由于虛擬機112可以直接訪問本地機202的I/O配置空間,所以I/O空間信息的本地影子可向設備驅動器212提供遠程設備116、118中的一個被本地安裝在本地機202的透明錯覺。
[0033]VMM 104也可配置存儲器206來支持遠程設備116、118的運行時I/O轉移。當虛擬機112發布I/O操作給虛擬設備114時,VMM104可以從本地機202上的執行陷獲(trap)I/O操作。在陷獲I/O操作之后,VMM 104可以將該I/O操作轉給運行在遠程機上的占位驅動器110。占位驅動器110然后可在遠程設備116、118中的一個上分別執行該I/O操作,并將結果返回給VMM104。VMM104將該結果存儲在存儲器206的I/O空間中。為了 I/O讀取,從遠程設備116或118獲得的結果可以被存儲在存儲器206中或者可被直接饋送給虛擬機112。
[0034]VMM04可以配置存儲器206以支持遠程訪問遠程設備116、118的各種DMA操作。在此公開的DMA操作有助于使得計算連續體200能夠克服與針對本地機和遠程機之間的設備共享的傳統辦法相關聯的的I/O資源共享挑戰。
[0035]在單機環境中,DMA操作可涉及在存儲器和與DMA緩沖器相關設備之間用于數據移動的DMA緩沖器。在計算連續體200中,本地機202具有可以在存儲器206中分配的DMA緩沖器216。遠程機208也可具有在遠程機208的存儲器220中分配的DMA緩沖器218。根據實施例,遠程DMA緩沖器218可以由遠程機208上的占位驅動器110維持。該遠程DMA緩沖器218對于設備是可見的,并且可以使用該緩存器執行真正的DMA處理。本地DMA緩沖器216可以由來自OS 210的設備驅動器212分配,并可以由VMM104管理。本地DMA緩沖器216對于本地機202的本地SW棧可以是可見的,因此從虛擬機112和由虛擬機112主存的組件的有利角度而言,所有的DMA處理看起來將通過使用DMA緩沖器216來執行。本地DMA緩沖器216和遠程DMA緩沖器218兩者可以被看作彼此的影子,并且VMM 104可以與占位驅動器110 —起工作來保持DMA緩沖器216、218相互同步。因此,設備驅動器212工作就像是所有DMA操作發生在本地設備上,而真實的設備是處于遠程機上的。
[0036]在實施例中,DMA緩沖器操作與處理是不同的,這是因為某些DAM操作(例如那些與PCI或PCI高速代理相關的那些)可以由那些設備專用命令來觸發,這些命令一個接一個的進行解釋和解碼是不切實際的。(PCI =外設元件互連)。這不同于其中所有的操作都是標準的并且可以被解碼的其他情形(例如USB或SCSI代理)。(USB=通用串行總線;SCSI =小型計算機系統接口)。根據各實施例,為了解決解碼各個命令的問題,下面公開了用于同步本地和遠程DMA緩沖器216、218的新技術。
[0037]在DMA操作的運行時階段同步DMA緩沖器216、218之前,這些緩存器可被建立。VMM104可以通過解釋本地OS 21ODMA映射API來跟蹤當前為設備處于活躍的所有DMA緩沖器。DMA映射API提供了本地DMA緩沖器216信息,例如,開始地址、大小、和DMA類型(例如,DMA讀取或者DMA寫入)。VMM 104然后將DMA映射報告給遠程機208以便占位驅動器110可以分配遠程DMA緩沖器218。VMM 104和占位驅動器110可以協作地建立轉換表222。
[0038]轉換表222包括在遠程和本地DMA緩沖器216、218之間的映射。轉換表222可以被稱作輸入/輸出存儲器管理單元(10MMU)222。10MMU222可以純SW來實現,或可以通過芯片組固件來加速。遠程DMA緩沖器218然后可與本地DMA緩沖器216同步以便DMA緩沖器216、218被初始同步。
[0039]在運行時間階段,同步DMA緩沖器216、218會消耗開銷處理周期,因此,較不頻繁同步DMA緩沖器216、218會更有處理效率。一種方法是配置VMM104和占位驅動器110以在VMM104攔截到DMA緩沖器216、218中的任何一個的讀/寫訪問時來同步DMA緩沖器216、218。該方法產生了非常重要的運行時間開銷。另一種方法是在讀/寫緩存中緩存本地DMA緩沖器216讀/寫,并在原本可能發生錯誤時同步緩存。示例方法的實施例在下面分別為DMA讀和DMA寫進行討論。
[0040]在實施例中,對于本地DMA緩沖器216所有的寫都被同步到遠程機。然而,根據一個實施例,一旦每次存儲器寫到本地DMA緩沖器216中,那么不是將遠程DMA緩沖器218同步到本地DMA緩沖器216,VMM104而是將存儲器寫緩沖到寫緩存中。當一組先決條件中的一個發生時,VMM104就會暫停虛擬機112并將寫緩存發送到占位驅動器110。占位驅動器110基于寫緩存的內容填充遠程DMA緩沖器218,然后VMM104重新開始虛擬機112。在實施例中,VMM104可以在如下時刻同步:
[0041]a.VMM104檢測到本地虛擬機112正在讀/寫/來自/到遠程設備116、118的I/O寄存器或設備I/o存儲器(這可能潛在地觸發DMA寫事務);或者
[0042]b.VMM 104檢測到來自一個或多個遠程設備116、118的中斷到達(這可指示遠程設備116、118中的一個希望讀取更多數據)。
[0043]根據各實施例,由同步寫緩存引起的暫停虛擬機112的持續時間可以通過在任何合適的時候同步DMA緩沖器216和218來減少(例如,當在通信信道106上存在自由帶寬時),這是因為,當虛擬機112被暫停時,很可能大多數寫緩存可能已經被同步到遠程DMA緩沖器218。此外,任何合適的時候進行同步可以保證設備行為的正確性,這是因為某些設備在DMA存儲器中使用位來執行與OS的同步(例如,緩沖器所有權的仲裁)。
[0044]在實施例中,如果虛擬機112讀取了相應的本地DMA緩沖器216,那么可以取回遠程DMA緩沖器的內容。根據一個實施例,不是本地DMA緩沖器216的每一次存儲器讀取就進行取回,VMM104而是可在第一次讀取時取回整個DMA緩沖器218形成本地讀緩存,以便后續DMA緩沖器216的讀取是本地的,而不需要從遠程機208接收更新。在實施例中,VMM104可以在如下時刻使緩存失效以確保本地DMA緩存器216總是最新:
[0045]a.VMM104檢測到本地虛擬機112正在讀/寫/來自/到遠程設備116、118中的一個的I/o寄存器或設備I/O存儲器(這可能潛在地觸發DMA寫操作);或者
[0046]b.VMM 104檢測到其中一個遠程設備116、118的中斷到達(這指示DMA緩沖器216被重新以致該讀緩存可能是無效的)。
[0047]根據各實施例,因為DMA緩沖器216的各個位可被用于執行設備和OS之間的同步(例如,緩存權的仲裁),所以讀緩存可能周期性地無效。無效讀緩存的間隔可以被配置以便可以為各設備實現改進或優化的性能。
[0048]因此,可以通過提供DMA緩沖器空間以實現維護和更新本地DMA緩沖器216的目的來配置存儲器206以便在VMM104和占位驅動器110之間的各種類型的協作。此外,根據上面描述的技術,可以利用和同步多個DMA緩沖器以使得VMM104和占位驅動器110能夠確保遠程設備116、118對于本地機202是可用的。
[0049]從對DMA緩沖器同步的討論轉換一下,VMM 104占位驅動器110可以通過協調中斷處理來協作使得虛擬設備114能夠模擬遠程設備116、118。當遠程設備116、118中的一個觸發中斷時,占位驅動器110可以將該中斷轉發給VMM 104。響應于接收到中斷,VMM 104可以為虛擬機112注入中斷,從而設備驅動器212可以處理該中斷。
[0050]依賴于計算連續體200所使用的硬件類型,有不止一種類型的中斷可以使用。無論中斷是消息信號中斷(MSI)還是傳統INTx,遠程設備116、118可以產生的中斷都可以通過解析設備的配置空間,例如,PCI配置空間,來得以列舉。為了處理傳統INTx,在遠程機器208上的中斷被禁用,直到設備驅動器212已經處理了該中斷。為了處理MSI,由于他們可能類似于邊緣觸發中斷的行為,所以將鏡像的中斷注入到本地虛擬機112中,而沒有將其禁用。根據實施例,由于遠程設備116、118的配置空間已經在虛擬機中被鏡像,所以0S210和設備驅動器212可以正確地綁定該中斷處理程序。
[0051]如果遠程設備116、118中的一個在遠程機208上產生中斷,那么VMM104就在本地虛擬機112上模擬該中斷。然后,在本地虛擬機112上的設備驅動器就可以處理該設備中斷,就像是該設備被插入在本地機202似的。
[0052]上面公開的圖1和圖2的連續體可以根據各種實施例來實現。例如,占位驅動器110可以綁定到PCI設備,例如USB增強主機控制器接口主機控制器(EHCI HC),其是典型的PCI設備。在其他實施例中,可以使用其他基于PC1、基于標準工業化協會(ISA)總線或基于高級微控制器總線結構(AMBA)總線的設備來實現占位驅動器110。
[0053]圖3顯示了根據實施例在本地機側的訪問方法的流程圖。
[0054]在塊302,本地機的虛擬機管理器對本地機上的虛擬機進行歸屬和管理。
[0055]在塊304,虛擬機管理器從遠程設備的占位驅動器獲取與遠程機(例如,將參考圖4描述的機器)上的I/O設備相關的信息。
[0056]在塊306,虛擬機管理器在本地機上進行虛擬I/O設備的實例化。
[0057]在塊308,虛擬機管理器與占位驅動器協作來為到虛擬I/O設備的訪問執行對I/O設備的實際訪問。
[0058]圖4顯示了根據實施例在遠程機側訪問方法的流程圖。
[0059]在塊402,遠程機的占位驅動器將占位驅動器綁定到遠程機的I/O設備。
[0060]在塊404,占位驅動器檢測耦合到I/O設備的附加I/O設備。
[0061]在塊406,占位驅動器獲得附加I/O設備的配置信息。
[0062]在塊408,占位驅動器與第二機器(例如圖3的本地機)的虛擬機管理器協作以執行由第二機器對I/o設備的真實訪問。
[0063]圖5展示了根據本發明一種實現方式的計算設備500。計算設備500可以是圖1_2中描述的本地和遠程機102、202、108和208中的任何一個。計算設備500具有主板502。主板502包括多個元件,包括但不限于處理器504 (具有一個或多個處理核)和至少一個通信芯片506。處理器504可以物理地并電性地連接到主板502。根據各實施例,處理器504可以執行配置用于執行部分或全部的圖3中的操作方法或者執行部分或全部的圖中的操作方法的指令。在某些實施例中,至少一個通信芯片506也可以物理地并電性地連接到主板502。在進一步的實現方式中,通信芯片506可以是處理器504的一部分。
[0064]依賴于其應用程序,計算裝置500可以包括其他元件,這些元件可以物理地并電性地連接到主板502,也可以不連接。這些其他元件包括但不限于易失性存儲器(例如DRAM508)、非易失性存儲器(例如,ROM 510)、和永久存儲器528 (例如閃存或磁盤存儲器)。易失性存儲器508、非易失性存儲器510和永久存儲器528可以被用來存儲將由處理器504執行以使得計算裝置500能夠執行圖3和/或圖4的方法操作的指令的作業和永久備份。這些其他元件進一步包括圖像處理器512、數字信號處理器(沒有示出)、密碼處理器(沒有示出)、芯片組514、天線516、顯示器(沒有示出)、觸摸屏顯示器518、觸摸屏控制器520、電池522、音頻解碼(沒有示出)、視頻解碼(沒有示出)、功率放大器524、全球定位系統(GPS)設備526、加速度計(沒有示出)、陀螺儀(沒有示出)、揚聲器530、相機532和大容量存儲設備(沒有示出)(例如硬盤驅動器、光盤(CD)、數字多樣盤(DVD)等等)。根據各實施例,這些元件的任何一個可以是資源設備116或I/O設備118的其中一個。
[0065]通信芯片506能夠進行無線通信以傳輸數據到或來自計算設備500。術語“無線”及其衍生可以用來描述通過使用模擬電磁復審經由非固態介質傳輸數據的電路、設備、系統、方法、技術、通信信道等。術語并不暗含相關的設備不包含任何有線,雖然在某些實施例中,它們可能不是這樣。通信芯片506可以執行多種無線標準或協議的任何一種,包括但不限于 W1-Fi (IEEE 802.11 家族)、WiMAX (IEEE802.16 家族)、IEEE802.20、長期演進方案(LTE)、演進數據優化(Ev-DO)、演進高速分組接入(HSPA+)、高速下行鏈路分組接入(HSDPA+)、高速上行鏈路分組接入(HSUPA+)、增強數據速率GSM演進(EDGE)、全球移動系統(GSM)、通用分組無線業務)(GPRS)、碼分多址(CDMA)、時分多址(TDMA)、數字增強無繩電話(DECT)、藍牙及其衍生,以及任何其他設計為3G、4G、5G和超級的無線協議。計算設備500包括多個通信芯片506。例如,第一通信芯片506專用于短程無線通信,例如W1-Fi和藍牙,第二通信芯片506專用于長距離無線通信,例如GPS、EDGE、GPRS、CDMA、WiMAX、LTE, Ev-DO等。根據實施例中,通信芯片506可以是圖1-2的I/O設備118。
[0066]計算設備500的處理器504包括在處理器504內部封裝的集成電路管芯。在所公開的某些實施例中,處理器的集成電路管芯包括根據所公開的實施例可操作被配置的一個或多個設備。術語“處理器”可以指代用于處理來自寄存器和/或存儲器的電數據以將該電數據轉換成其他可以存儲在寄存器和/或存儲器中的電數據的任何設備或設備的部分。
[0067]通信芯片506也包括封裝在通信芯片506內的集成電路管芯。根據本公開的另一實現方式,通信芯片的集成電路管芯包括配置用于與外部設備和/或系統進行通信的一個或多個設備,例如I/o設備118。
[0068]在進一步實現方式中,包括在計算設備500中的另一元件包括具有諸如處理器核、緩存和一個或多個存儲控制器之類的一個或多個設備的集成電路管芯。
[0069]在各實現方式中,計算設備500可以是膝上筆記本、上網本、筆記本、超級本、智能電話、平板、個人數字助理(PDA)、超級移動PC、移動電話、臺式計算機、服務器、打印機、掃描儀、監視器、機頂盒、娛樂控制單元、數碼相機、便攜音樂播放器、或數字視頻錄放機。在進一步的實現方式中,計算設備500可以是處理數據的任何其他電子設備。
[0070]上述實施例任何一個具體特征可以被完全或部分地與一個或多個其他實施例組合,或者整體上,或者部分地,來形成本公開的新的實施例。
[0071]下面是本公開的附加示例實施例。
[0072]根據各示例實施例,計算機可讀介質具有指令,其配置用于使得本地機響應于本地機執行指令操作虛擬機管理器來主存和管理本地機上的虛擬機。虛擬機包括設備驅動器。所述指令能夠使得本地機從遠程機上的占位驅動器獲得有關遠程機上的資源的信息。在遠程機上的資源可以被綁定到遠程機上的占位驅動器。這些指令能使得本地機實例化本地機上對應于遠程機上的資源的虛擬資源,并與遠程機上的占位驅動器協作來為設備驅動器代表本地機上的程序訪問虛擬資源實現對遠程機上的資源的實際訪問。
[0073]在實施例中,資源包括I/O設備,獲得有關I/O設備的信息包括從占位驅動器獲取有關I/o設備的配置信息。
[0074]在實施例中,虛擬機管理器基于所獲得的信息在本地機上建立I/O設備的I/O地址空間的影子副本以便于基于I/o地址空間的對I/O設備的訪問。
[0075]在實施例中,虛擬機管理器至少部分地基于I/O地址空間的影子副本在本地機上執行設備驅動器的初始化例程以有效啟動用于訪問的I/O設備。
[0076]在實施例中,虛擬機管理器捕獲由虛擬機發出的I/O指令,將該I/O指令發送到占位驅動器以在I/o設備上操作來獲得I/O結果,并從占位驅動器接收I/O結果。
[0077]在實施例中,虛擬機管理器在捕獲到虛擬機的I/O指令之后,暫停該虛擬機。
[0078]在實施例中,虛擬機管理器從占位驅動器接收I/O設備的中斷通知。
[0079]在實施例中,虛擬機管理器響應于接收到I/O設備的中斷通知使得設備驅動器中斷該虛擬機。
[0080]在實施例中,虛擬機管理器以這樣一種方式中斷虛擬機:即,使得虛擬機能夠如同I/O設備直接連接到本地機的本地總線那樣來處理I/O設備的中斷通知。
[0081]在實施例中,虛擬機管理器響應于接收到I/O設備的中斷通知傳送禁用指令給占位驅動器以暫時禁用在遠程機上的中斷。
[0082]在實施例中,虛擬機管理器在本地機上分配本地直接存儲器訪問(DMA)緩存以有助于基于DMA的對I/O設備的訪問。
[0083]在實施例中,作為有助于基于DMA的對I/O設備的訪問的一部分,虛擬機管理器用基于DMA的對I/O設備的訪問的結果更新本地DMA緩沖器。
[0084]在實施例中,作為有助于基于DMA的對I/O設備的訪問的一部分,虛擬機管理器將DMA緩沖器與遠程機的相應DMA緩沖器進行同步。
[0085]在實施例中,虛擬機管理器可以在本地DMA緩沖器中緩存寫訪問操作,并響應于與在虛擬機和I/O設備之間的數據傳輸相關聯的DMA訪問或從占位驅動器接收到與DMA訪問相關聯的I/O設備的中斷通知,將所緩存的寫訪問操作傳送給占位驅動器。
[0086]在實施例中,虛擬機管理器在發射在DMA緩沖器中緩存的寫訪問操作之后暫停虛擬機的操作,并響應于從占位驅動器接收到指示遠程機上的相應DMA緩沖器已經與本地DMA緩沖器同步的同步通知重新開始虛擬機的操作。
[0087]在實施例中,響應于在從虛擬機的DMA緩沖器讀上檢測到本地讀操作,虛擬機管理器將本地DMA緩沖器與來自遠程機器上的相應DMA緩沖器的信息同步。
[0088]在實施例中,虛擬機管理器將本地DMA緩沖器與儲存在遠程機上的相應DMA緩沖器的內容進行同步。
[0089]在實施例中,所述占位驅動器包括外圍組件互連(PCI)卡驅動器。
[0090]在實施例中,源包括圖形處理單元、顯示端口、顯示器、用戶接口、通信設備、音頻設備或存儲器設備中的一個或多個。
[0091]根據各示例實施例,本地機訪問遠程機上資源的方法包括通過本地機的虛擬機管理器主存具有設備驅動器的虛擬機,和通過虛擬機管理器從遠程機上的占位驅動器獲取與遠程機上的資源相關的信息,其中遠程機上的資源被綁定到遠程機上的占位驅動器。該方法還包括通過虛擬機管理器實例化本地機上對應于遠程機上的資源的虛擬資源,和通過虛擬機管理器與遠程機上的占位驅動器協作來為設備驅動器代表本地機上的程序對虛擬資源的訪問實現對遠程機上的資源的真實訪問。
[0092]在實施例中,資源可以是I/O設備,并且獲取有關I/O設備的信息包括由虛擬機管理器從占位驅動器獲取與I/o設備的I/O地址空間相關的信息,和由虛擬機管理器在本地機上建立I/o設備的I/O地址空間的影子副本以便設備驅動器的基于I/O地址空間的對I/O設備的訪問。
[0093]在實施例中,方法包括通過虛擬機管理器執行本地機上設備驅動器的初始化例程以基于I/O地址空間的影子副本有效地初始化I/O設備以進行訪問。
[0094]在實施例中,資源包括I/O設備,所述方法包括通過虛擬機管理器捕獲由虛擬機發出的I/o指令,由虛擬機管理器將該I/O指令發送到占位驅動器以操縱I/O設備獲得I/O結果,并由虛擬機管理器從占位驅動器接收該I/O結果。
[0095]在實施例中,該方法包括在捕獲所述I/O指令之后,由虛擬機管理器暫停該虛擬機。
[0096]在實施例中,所述資源包括I/O設備,并且其中所述方法包括由虛擬機管理器從占位驅動器接收I/o設備的中斷通知。
[0097]在實施例中,所述資源包括I/O設備,并且協作包括由虛擬機管理器在本地機上分配本地直接存儲器訪問(DMA)緩存器以便設備驅動器的基于DMA訪問的1/0,和由虛擬機管理器與占位驅動器合作將本地DMA緩沖器和遠程機的相應DMA緩沖器同步。
[0098]在實施例中,協作包括由虛擬機管理器將虛擬機的寫訪問操作緩存到本地DMA緩沖器中,和由虛擬機管理器響應于在虛擬機和I/O設備之間傳送DMA訪問相關聯數據或者從占位驅動器接收DMA訪問相關聯的I/O設備的中斷通知來發送所緩存的寫訪問操作。
[0099]在實施例中,協作包括由虛擬機管理器在發送所緩存的寫訪問操作時暫停虛擬機的操作,和由虛擬機管理器響應于從占位驅動器接收到指示遠程機相應的DMA緩沖器已經與DMA緩沖器同步的同步通知來重新開始虛擬機的操作。
[0100]在實施例中,同步包括響應于檢測到虛擬機嘗試讀取本地DMA緩沖器復制遠程機的相應DMA緩沖器的所有緩存數據。
[0101]根據各實施例,系統包括本地計算機器。本地計算機器包括系統存儲器、通信接口、和一個或多個配置用于執行所公開實施例的任何方法的處理器。
[0102]根據各示例實施例,計算機可讀介質具有多條指令,其配置為使得具有較多資源的機器響應于由機器執行指令來提供占位驅動器以便由另一機器訪問這些資源,所述占位驅動器將該占位驅動器綁定到資源中的第一資源,檢測連接到該第一資源的一個或多個附加資源,獲取所述一個或多個附加資源的配置信息,并與機器的虛擬機管理器進行協作來實現由另一機器上的程序對資源中的一個或多個的真實訪問。
[0103]在實施例中,所述資源包括I/O設備,并且協作包括協作來便于基于I/O地址空間的對I/O設備的訪問。
[0104]在實施例中,所述資源包括I/O設備,并且協作包括協作來便于基于直接存儲器訪問(DMA)的對I/O設備的訪問。
[0105]在實施例中,所述資源包括I/O設備,并且協作包括將I/O設備的中斷路由到其他機器。
[0106]在實施例中,I/O設備可以是外圍組件互連(PCI)啟用的設備或PCI快速啟用的設備。
【權利要求】
1.一種計算機可讀介質,其具有多個指令,所述指令配置用于響應于本地機執行所述指令而使得本地機能夠操作虛擬機管理器以: 在所述本地機上主存和管理虛擬機,其中所述虛擬機包括設備驅動器; 從遠程機上的占位驅動器獲取與在所述遠程機上的資源相關的信息,其中在所述遠程機上的資源被綁定到遠程機上的占位驅動器; 實例化本地機上與所述遠程機上的所述資源相對應的虛擬資源;和 與所述遠程機上的占位驅動器協作以為設備驅動器代表所述本地機上的程序對所述虛擬資源的訪問實現對遠程機上的資源的真實訪問。
2.如權利要求1所述的計算機可讀介質,其特征在于,所述資源包括I/O設備,并且其中獲取與所述I/O設備相關的信息包括從所述占位驅動器獲取有關所述I/O設備的配置信肩、O
3.如權利要求2所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步基于所獲得的信息在所述本地機上建立所述I/o設備的I/O地址空間的影子副本,以便于對I/O設備的基于I/O地址空間的訪問。
4.如權利要求3所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步至少部分地基于所述I/O地址空間的影子副本在本地機上執行設備驅動器的初始化例程以有效初始化要訪問的I/O設備。
5.如權利要求2所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步: 捕獲由所述虛擬機發出的I/O指令; 將所述I/o指令發送到占位驅動器來在所述I/O設備上操作,以獲得I/O結果;以及 從所述占位驅動器接收所述I/o結果。
6.如權利要求5所述的計算機可讀介質,其特征在于,所述虛擬機管理器在捕獲所述虛擬機的I/o指令之后,進一步暫停所述虛擬機。
7.如權利要求2或5-6中的任一項所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步: 從所述占位驅動器接收所述I/O設備的中斷通知。
8.如權利要求7所述的計算機可讀介質,其特征在于,所述虛擬機管理器響應于接收到所述I/O設備的中斷通知進一步導致所述設備驅動器中斷所述虛擬機。
9.如權利要求8所述的計算機可讀介質,其特征在于,所述虛擬機管理器以使得虛擬機能夠如同I/o設備被直接連接到本地機的本地總線那樣來處理I/O設備的中斷通知的方式來中斷所述虛擬機。
10.如權利要求8所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步響應于接收到所述I/o設備的中斷通知將禁用指令發送到所述占位驅動器以暫時禁用在所述遠程機上的中斷。
11.如權利要求2或5-6中的任一項所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步: 在所述本地機上分配本地直接存儲器訪問(DMA)緩沖器以便于基于DMA的對I/O設備的訪問。
12.如權利要求11所述的計算機可讀介質,其特征在于,作為便于基于DMA的對I/O設備的訪問的一部分,所述虛擬機進一步使用基于DMA的對I/O設備的訪問的結果進一步更新所述本地DMA緩沖器。
13.如權利要求11所述的計算機可讀介質,其特征在于,作為便于基于DMA的對I/O設備的訪問的一部分,所述虛擬機將本地DMA緩沖器與遠程機的相應DMA緩沖器同步。
14.如權利要求13所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步: 在本地機DMA緩沖器上緩存寫訪問操作;以及 響應于所述虛擬機和所述I/O設備之間的DMA訪問相關聯數據傳輸或者從所述占位驅動器接收DMA訪問相關聯的所述I/O設備的中斷通知,將所緩存的寫訪問操作傳送到所述占位驅動器。
15.如權利要求14的計算機可讀介質,其特征在于,所述虛擬機管理器進一步: 在傳送所述DMA緩沖器上的所緩存的寫訪問操作之后暫停所述虛擬機的操作;以及 響應于從所述占位驅動器接收到指示在遠程機上的相應DMA緩沖器已經與所述本地DMA緩沖器同步的同步通知,重新開始所述虛擬機的操作。
16.如權利要求11所述的計算機可讀介質,其特征在于,所述虛擬機管理器響應于在從所述虛擬機的DMA緩沖器讀上檢測到本地讀操作,將所述本地DMA緩沖器與來自遠程機上的相應DMA緩沖器的信息進行同步。
17.如權利要求16所述的計算機可讀介質,其特征在于,所述虛擬機管理器進一步將所述本地DMA緩沖器與存儲在遠程機上的相應DMA緩沖器中的所有內容同步。
18.如權利要求11所述的計算機可讀介質,其特征在于,所述占位驅動器包括外圍組件互連(PCI)卡驅動器。
19.如權利要求1所述的計算機可讀介質,其特征在于,所述資源包括圖像處理單元、顯示端口、顯示器、用戶接口、通信設備、音頻設備、或存儲設備中的一個或多個。
20.一種用于本地機訪問遠程機上的資源的方法,包括: 由本地機的虛擬機管理器主存具有設備驅動器的虛擬機; 由所述虛擬機管理器從遠程機上的占位驅動器獲得與在所述遠程機上的資源相關的信息,其中在所述遠程機上的資源被綁定到所述遠程機上的占位驅動器; 由所述虛擬機管理器實例化所述本地機上與所述遠程機上的所述資源相對應的虛擬資源;以及 由所述虛擬機管理器與遠程機上的占位驅動器協作來為所述設備驅動器代表所述本地機上的程序對所述虛擬資源的訪問實現對遠程機上的資源的真實訪問。
21.如權利要求20所述的方法,其特征在于,所述資源是I/O設備,并且其中獲取有關所述I/O設備的信息包括: 由所述虛擬機管理器從所述占位驅動器獲取與所述I/O設備的I/O地址空間相關的信息;以及 由所述虛擬機管理器在所述本地機上建立所述I/O設備的I/O地址空間的影子副本以便于所述設備驅動器對所述I/O設備的基于I/O地址空間的訪問。
22.如權利要求21所述的方法,其特征在于,進一步包括: 通過所述虛擬機管理器在所述本地機上執行所述設備驅動器的初始化例程以基于所述I/O地址空間的影子副本有效初始化所述I/O設備以進行訪問。
23.如權利要求20所述的方法,其特征在于,所述資源包括I/O設備,并且其中所述方法進一步包括: 由所述虛擬機管理器捕獲由所述虛擬機發出的I/o指令; 由所述虛擬機管理器將所述I/o指令發送到所述占位驅動器來在所述I/O設備上進行操作以獲得I/o結果;以及 由所述虛擬機管理器從所述占位驅動器接收所述I/o結果。
24.如權利要求23所述的方法,其特征在于,還包括: 由所述虛擬機管理器在捕獲所述I/O指令之后暫停所述虛擬機。
25.如權利要求20所述的方法,其特征在于,所述資源包括I/O設備,并且其中所述方法進一步包括: 由所述虛擬機管理器從所述占位驅動器接收I/o設備的中斷通知。
26.如權利要求20所述的方法,其特征在于,所述資源包括I/O設備,并且其中協作包括: 由所述虛擬機管理器在所述本地機上分配本地直接存儲器訪問(DMA)緩沖器以便于所述設備驅動器的基于DMA訪問的I/O ;和 由所述虛擬機管理器與所述占位驅動器合作來將本地DMA緩沖器與所述遠程機的相應DMA緩沖器同步。
27.如權利要求26所述的方法,其特征在于,協作進一步包括: 由所述虛擬機管理器在所述本地DMA緩沖器上緩存所述虛擬機的寫訪問操作;以及相應于在所述虛擬機和所述I/O設備之間傳送DMA訪問相關聯數據或者從所述占位驅動器接收DMA訪問相關聯的I/O設備的中斷通知,由所述虛擬機管理器發送所緩存的寫訪問操作。
28.如權利要求27所述的方法,其特征在于,協作進一步包括: 當發送所緩存的寫訪問操作時,由所述虛擬機管理器暫停所述虛擬機的操作;以及響應于從所述占位驅動器接收到指示所述遠程機的相應DMA緩沖器已經與所述本地DMA緩沖器同步的同步通知,由所述虛擬機管理器重新開始所述虛擬機的操作。
29.如權利要求26所述的方法,其特征在于,所述同步包括:響應于檢測到所述虛擬機嘗試讀取所述本地DMA緩沖器,復制遠程機的相應DMA緩沖器的所有緩存數據。
30.一種系統,包括: 本地計算機器,包括 系統存儲器 通信接口 ;以及 配置用于執行權利要求20-29中的任一項所述的方法的一個或多個處理器。
31.一種具有多個指令的計算機可讀介質,所述指令配置為響應于由具有大量資源的機器執行所述指令使得所述機器提供占位驅動器以便于由另一機器訪問資源,所述占位驅動器用于: 將所述占位驅動器綁定到所述資源中的第一資源; 檢測連接到所述第一資源的一個或多個附加資源; 獲取所述一個或多個附加資源的配置信息;以及 與所述機器的虛擬機管理器協作以實現另一機器上的程序對所述資源中的一個或多個的真實訪問。
32.如權利要求31所述的計算機可讀介質,其特征在于,所述資源包括I/O設備,并且其中協作包括用來便于基于I/o地址空間的對I/O設備的訪問的協作。
33.如權利要求31所述的計算機可讀介質,其特征在于,所述資源包括I/O設備,并且其中協作包括用來便于基于直接存儲器訪問(DMA)的對I/O設備的訪問的協作。
34.如權利要求31所述的計算機可讀介質,其特征在于,所述資源包括I/O設備,其中協作包括將所述I/O設備的中斷路由到其他機器。
35.如權利要求32-34中的任一項所述的計算機可讀介質,其特征在于,所述I/O設備是執行外圍組件互連(PCI)啟用的設備或PCI快速啟用的設備。
【文檔編號】G06F9/455GK104205050SQ201280072138
【公開日】2014年12月10日 申請日期:2012年3月30日 優先權日:2012年3月30日
【發明者】Z·蔣, S·嚴, 吳甘沙 申請人:英特爾公司