TWI528290B - 用以建立虛擬裝置之設備與方法 - Google Patents

用以建立虛擬裝置之設備與方法 Download PDF

Info

Publication number
TWI528290B
TWI528290B TW103107874A TW103107874A TWI528290B TW I528290 B TWI528290 B TW I528290B TW 103107874 A TW103107874 A TW 103107874A TW 103107874 A TW103107874 A TW 103107874A TW I528290 B TWI528290 B TW I528290B
Authority
TW
Taiwan
Prior art keywords
virtual
pci
compatible
address
request
Prior art date
Application number
TW103107874A
Other languages
English (en)
Other versions
TW201502992A (zh
Inventor
楊偉
徐超
梁莉
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201502992A publication Critical patent/TW201502992A/zh
Application granted granted Critical
Publication of TWI528290B publication Critical patent/TWI528290B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Description

用以建立虛擬裝置之設備與方法 發明領域
此處描述的實施例大致上係有關於處理裝置,及更明確言之,係有關於用以建立虛擬之週邊組件互連(PCI)裝置以及虛擬之記憶體對映輸入輸出(MMIO)裝置的通用方法。
發明背景
計算系統可包括多個組件,諸如處理裝置(例如微控制器、微處理器等)、記憶體區塊、計時來源、週邊裝置、外部介面、類比介面、電壓調節器、電源管理電路等。記憶體區塊、外部介面、或其它組件可包括功能區塊,又稱IP區塊或控制器,其提供處理裝置與週邊裝置間之介面。
計算系統中之組件可與可存取至該計算系統的軟體及與週邊裝置以不同方式通訊,諸如經由一週邊組件互連(PCI)匯流排。軟體可從某些週邊裝置諸如快閃記憶體啟動,及然後藉該計算系統中之處理裝置執行。
但於該計算系統中之有些組件諸如功能區塊可能為非PCI可相容性,因而無法與使用PCI匯流排用於通訊的軟體通訊。此外,有些軟體無法從某些週邊裝置啟動諸如PCI可相容週邊裝置啟動。
已經運用多個解決方案以解決此等議題。解決一功能區塊無能力與使用PCI匯流排用於通訊的軟體通訊之目前解決辦法包括一硬體辦法及一軟體辦法。目前硬體辦法要求改變功能區塊之硬體設計以使得該功能區塊為PCI可相容性。目前軟體辦法要求產生用於該功能區塊之軟體,諸如針對該功能區塊之特定裝置驅動器,其可環繞該功能區塊之不可相容性工作。解決軟體無能力從PCI可相容週邊裝置啟動之目前解決辦法要求改變PCI可相容週邊裝置之硬體組成(例如改變矽晶片)。但此等辦法可能耗用大量時間及成本。
依據本文揭示之一個實施例,係特地提出一種用以建立一虛擬裝置之設備包含一記憶體,及通訊式耦接至該記憶體之一處理裝置,該處理裝置接收針對一週邊組件互連(PCI)可相容裝置之一PCI請求,及基於該PCI可相容裝置建立該虛擬裝置,其中該虛擬裝置係建立為一虛擬PCI裝置或一虛擬輸入/輸出(I/O)裝置中之至少一者。
100‧‧‧裝置
105‧‧‧主機
110‧‧‧處理模組
115‧‧‧功能區塊
120‧‧‧處理裝置
125、200‧‧‧虛擬裝置模組
130、145‧‧‧軟體組件
135‧‧‧其它模組
140‧‧‧週邊裝置
205‧‧‧虛擬裝置決定模組
210‧‧‧虛擬PCI裝置產生模組
215‧‧‧虛擬I/O裝置產生模組
220‧‧‧虛擬I/O裝置位址轉譯模組
250‧‧‧記憶體模組
255‧‧‧虛擬裝置資訊
300、400、500、600‧‧‧方法
305-325、405-415、505-510、605-615‧‧‧方塊
700、800‧‧‧單晶片系統(SoC)
702A-N、806、807‧‧‧核心
704‧‧‧快取單元
706‧‧‧分享快取單元
708‧‧‧整合式圖形邏輯
710‧‧‧系統代理器單元
712‧‧‧互連體單元
714‧‧‧整合式記憶體控制器單元(IMC)
716‧‧‧匯流排控制器單元
718‧‧‧媒體處理器
720‧‧‧應用程式處理器
724‧‧‧影像處理器
726‧‧‧音訊處理器
728‧‧‧視訊處理器
730‧‧‧靜態隨機存取記憶體(SRAM)單元
732‧‧‧直接記憶體存取(DMA)單元
740‧‧‧顯示單元
808‧‧‧快取控制
809‧‧‧匯流排介面單元
810‧‧‧L2快取記憶體
810‧‧‧互連體
815、922‧‧‧圖形處理單元(GPU)
820‧‧‧視訊編解碼器
825‧‧‧視訊介面
830‧‧‧用戶身分模組(SIM)
835‧‧‧啟動ROM
840‧‧‧SDRAM控制器
845‧‧‧快閃控制器
850‧‧‧周邊控制器
855‧‧‧電源控制器
860‧‧‧動態隨機存取記憶體(DRAM)
865‧‧‧快閃記憶體
870‧‧‧藍牙模組
875‧‧‧3G數據機
870‧‧‧全球定位系統(GPS)
885‧‧‧無線保真(Wi-Fi)
900‧‧‧電腦系統
904‧‧‧主記憶體
906‧‧‧靜態記憶體
908‧‧‧網路介面裝置
910‧‧‧視訊顯示單元
912‧‧‧文數輸入裝置
914‧‧‧游標控制裝置
916‧‧‧信號生成裝置
918‧‧‧資料儲存裝置
920‧‧‧網路
924‧‧‧機器可讀取媒體
926‧‧‧軟體、指令、處理邏輯
928‧‧‧視訊顯示單元
930‧‧‧匯流排
932‧‧‧音訊處理單元
從後文給定之詳細說明部分及從本文揭示之各種實施例之附圖將更完整地瞭解本文揭示。但附圖不應解 譯為限制本文揭示於特定實施例,反而僅用於解譯及瞭解目的。
圖1為具現建立一虛擬裝置為一虛擬PCI裝置或一虛擬I/O裝置之一通用方法的一處理裝置之一個實施例之方塊圖;圖2為方塊圖例示依據本文揭示之一實施例具現建立一虛擬裝置為一虛擬PCI裝置或一虛擬I/O裝置之一通用方法的一虛擬裝置模組;圖3為流程圖例示依據本文揭示之一實施例用以建立一虛擬裝置為一虛擬PCI裝置或一虛擬I/O裝置之一方法;圖4為流程圖例示依據本文揭示之一實施例用以建立一虛擬裝置為一虛擬PCI裝置之一方法;圖5為流程圖例示依據本文揭示之一實施例用以建立一虛擬裝置為一虛擬I/O裝置之一方法;圖6為流程圖例示依據本文揭示之一實施例用以使用一虛擬裝置之一方法;圖7為依據本文揭示之一實施例一種電腦系統之一方塊圖;圖8為依據本文揭示之另一實施例一種電腦系統之一方塊圖;圖9為依據本文揭示之另一實施例一種電腦系統之一方塊圖。
較佳實施例之詳細說明
軟體諸如作業系統或在計算系統之作業系統上跑的應用程式可使用驅動器存取該計算系統中之硬體裝置(例如週邊裝置)。當該驅動器要求存取該硬體裝置時,該驅動器可透過與該硬體裝置相聯結的一功能區塊而發送該存取請求。然後該功能區塊可存取該硬體裝置,接收來自該硬體裝置之一應答,及發送一應答給該驅動器。因此,該功能區塊作為該驅動器(及相對應軟體)與該硬體裝置間之一介面。該功能區塊對該驅動器及/或該硬體裝置為透明。該驅動器可藉將針對該硬體裝置之指令(例如存取指令諸如讀取或寫入)寫至該計算系統中之一週邊組件互連(PCI)匯流排而要求存取該硬體裝置。但若相對應於該硬體裝置之該功能區塊為非PCI可相容,該功能區塊可能不知曉該驅動器試圖存取該硬體裝置,或可能無法與該驅動器通訊。
此外,一作業系統可能只能從有些硬體裝置諸如輸入/輸出(I/O)裝置啟動而無法從其它硬體裝置啟動。舉例言之,一作業系統可能無法從該作業系統將其視為可卸式裝置諸如PCI可相容裝置的一週邊裝置啟動。但計算系統可能不將硬體裝置視為可卸式,且可能想讓作業系統從硬體裝置啟動。
本文揭示之實施例提出一種用以建立一虛擬裝置為一虛擬PCI裝置或一虛擬I/O裝置之通用方法。於一個實施例中,本文揭示之方法包括接收針對一PCI可相容裝置的請求。該方法進一步包括基於針對該PCI可相容裝置的請求而建立一虛擬裝置,於該處該虛擬裝置係建立為一虛擬 PCI裝置或一虛擬I/O裝置中之至少一者。
該虛擬裝置可建立為針對非PCI可相容的一功能區塊之一虛擬PCI裝置,及該虛擬裝置可建立為針對PCI可相容裝置之一虛擬I/O裝置,其係與欲從該PCI可相容裝置啟動的一作業系統相聯結。針對非PCI可相容的一功能區塊藉由建立該虛擬裝置為一虛擬PCI裝置,藉PCI匯流排上的軟體針對與該功能區塊相聯結的PCI可相容裝置發送之任何存取及/或請求可由該虛擬裝置辨識,且可發送給該功能區塊。因此,該虛擬裝置提供針對非PCI可相容的該功能區塊之一介面以接收PCI可相容之存取及/或請求。針對與欲從該PCI可相容裝置啟動的一作業系統相聯結的一PCI可相容裝置,藉由建立該虛擬裝置為一虛擬I/O裝置,該作業系統可從虛擬裝置啟動,原因在於該作業系統將決定從其中啟動之該裝置為一I/O裝置而非一PCI可相容裝置。
圖1為一裝置100之方塊圖,其具現依據本文揭示之一實施例用以建立一虛擬之週邊組件互連(PCI)裝置以及一虛擬之記憶體對映輸入輸出(MMIO)裝置的通用方法。裝置100之若干實施例可包括但非限制性,行動通訊裝置諸如小區式手機或智慧型手機、行動計算裝置諸如平板電腦、小筆電、筆記型電腦、膝上型電腦、桌上型電腦、伺服器電腦等。
裝置100例如可包括主機105以處理裝置100之基本操作。主機105可包括例如,處理模組110、功能區塊115、記憶體模組120、及其它模組135。處理模組110可包括位在 分開組件中的一或多個處理器(又稱處理裝置),或另外,具現於單一積體電路(IC)的一或多個處理核心例如排列成單晶片系統(SOC)組態。
功能區塊115可包括經組配以支援處理模組110之電路。功能區塊115可包括介面/橋接電路。於一個實施例中,各個功能區塊115為一積體電路(IC)經組配以處理與裝置100中之特定匯流排(例如PCI、串列AT附接(SATA)、通用串列匯流排(USB)等)或介面(例如多媒體卡(MMC)裝置、嵌置式多媒體卡(eMMC)裝置、安全數位(SD)裝置等)相聯結的通訊。舉例言之,若裝置100包括針對PCI、SATA、USB、MMC、eMMC、及SD裝置的一匯流排及/或介面,則裝置100將包括一功能區塊115(例如控制器)其為PCI控制器、一功能區塊115其為SATA控制器、一功能區塊115其為USB控制器、一功能區塊115其為MMC控制器、一功能區塊115其為eMMC控制器、及一功能區塊115其為SD控制器。藉從一種型別/速度的通訊轉換成另一種,功能區塊115可處理各種模組間之發訊。各個功能區塊115也可與多種不同裝置可相容以允許不同系統具現、升級等。功能區塊115之若干功能也可結合入處理模組110、記憶體模組120、或其它模組135內。
處理模組110可執行指令。指令可包括程式碼以允許處理模組110從事活動諸如但非限制性,讀取資料、寫入資料、處理資料、格式化資料、轉換資料、變換資料等。資訊含指令、資料等(圖中未顯示)可儲存於記憶體模組 120。
記憶體模組120可包括呈固定式或可卸式格式的隨機存取記憶體(RAM)或唯讀記憶體(ROM)。RAM可包括記憶體以保有裝置100操作期間的資訊,諸如靜態RAM(SRAM)或動態RAM(DRAM)。ROM可包括記憶體諸如計算裝置BIOS記憶體以當裝置100作動時提供指令、可規劃記憶體諸如可電子規劃ROM(EPROM)、快閃記憶體等。其它固定式及/或可卸式記憶體可包括磁性記憶體諸如軟碟、硬碟機等、電子記憶體諸如固態快閃記憶體(例如eMMC等)、可卸式記憶卡或記憶棒(例如USB、微-SD等)、光學記憶體諸如以光碟為基礎之ROM(CD-ROM)、全像術等。
其它模組135可包括針對支援裝置100內部的其它功能之模組。其它模組135例如可包括供應電力給裝置100之模組、支援裝置100中之有線及/或無線通訊之模組、提供裝置100中之使用者介面(UI)特性件之模組、支援特化功能之模組等。其它模組100之組成例如可取決於形狀因數、裝置100已被組配之用途等而改變。
週邊裝置140可包括可卸式或非可卸式週邊裝置,諸如PCI可相容式週邊裝置、記憶體對映I/O(MMIO)週邊裝置、磁性記憶體諸如軟碟、硬碟機等、電子記憶體諸如固態快閃記憶體(例如eMMC等)、可卸式記憶卡或記憶棒(例如USB、微-SD等)、光學記憶體諸如以光碟為基礎之ROM(CD-ROM)、全像術記憶體等。一週邊裝置可藉其附接的一匯流排號碼及藉針對該週邊裝置型別之裝置號碼識 別。一週邊裝置140可包括儲存在該週邊裝置140上的一或多個軟體組件145(例如應用程式、作業系統等)。
記憶體模組120之一實施例可包括一虛擬裝置模組125及一或多個軟體組件130。軟體組件130可包括應用程式、作業系統、BIOS、系統管理中斷(SMI)處理器等。於一個實施例中,軟體組件130發送針對一週邊裝置140的一請求(例如枚舉請求、存取請求等)給虛擬裝置模組125。該請求可為針對該週邊裝置140獲得資訊之請求,諸如賣方識別符、裝置識別符、及週邊裝置140之位址資訊。若該資訊係由虛擬裝置模組125所回送,則軟體組件130可使用該資訊通過PCI而與週邊裝置140通訊。
虛擬裝置模組125可接收針對該週邊裝置140之請求。虛擬裝置模組125可基於針對該週邊裝置140之該請求而建立一虛擬裝置。該虛擬裝置可為虛擬PCI裝置或虛擬MMIO裝置。
若該虛擬裝置模組125決定於該請求中的週邊裝置140係與非PCI可相容的功能區塊115相聯結,則虛擬裝置模組125可建立一虛擬裝置其為一虛擬PCI裝置。若一功能區塊115無法讀取或寫入存取請求至一PCI匯流排,則該功能區塊115為非PCI可相容。於一個實施例中,虛擬裝置模組125藉讀取或寫入一存取請求至該功能區塊115而決定該功能區塊115是否為非PCI可相容。若功能區塊115回送一錯誤或其它指示功能區塊115無法讀取或寫入該存取請求,則虛擬裝置模組125可決定該功能區塊115為非PCI可相容。於 一替代實施例中,虛擬裝置模組125藉從功能區塊115獲得可相容性資訊及決定針對該功能區塊115之該可相容性資訊是否包括PCI而決定該功能區塊115為非PCI可相容。於另一個實施例中,虛擬裝置模組125藉從針對裝置100之硬體規格獲得可相容性資訊而決定該功能區塊115為非PCI可相容。於又另一個實施例中,虛擬裝置模組125藉從SMI處理器(圖中未顯示)、BIOS(圖中未顯示)等獲得可相容性資訊而決定該功能區塊115為非PCI可相容。若該功能區塊115之可相容性資訊不包括PCI,則該功能區塊115為非PCI可相容。於一個實施例中,虛擬裝置模組125藉針對一虛擬PCI裝置決定資訊(例如賣方識別符、裝置識別符、及位址資訊)而建立該虛擬裝置為該虛擬PCI裝置。於若干實施例中,應答於來自軟體組件130的請求該虛擬裝置模組125發送該資訊給軟體組件130。
若該虛擬裝置模組125決定於該請求中的週邊裝置140係與欲從該週邊裝置140啟動的一軟體組件145相聯結,則該虛擬裝置模組125可建立一虛擬裝置其為一虛擬MMIO裝置。於一個實施例中,虛擬裝置模組125藉存取儲存於週邊裝置140上的一或多個軟體組件145及決定該等軟體組件中之任一者是否為預先定義的軟體組件(例如作業系統等),來決定週邊裝置140是否係與欲從該週邊裝置啟動的一軟體組件145相聯結。於一個實施例中,藉捨棄接收自軟體組件130之該請求及決定針對該虛擬I/O裝置之一I/O位址範圍,虛擬裝置模組125建立虛擬裝置為一虛擬I/O裝 置。
一旦針對一週邊裝置140建立虛擬裝置,虛擬裝置模組125可儲存該虛擬裝置於一記憶體,諸如記憶體模組120。於若干實施例中,若虛擬裝置為針對週邊裝置140之一虛擬PCI裝置,則該虛擬裝置模組125提供軟體組件130(例如發送針對週邊裝置140之請求的軟體組件130)具有一賣方識別符、裝置識別符、及針對該所產生的虛擬裝置之位址資訊。於若干實施例中,若虛擬裝置為針對週邊裝置140之一虛擬I/O裝置,則該軟體組件130不再直接地存取該請求被發送給的該週邊裝置140,反而存取針對週邊裝置140之虛擬PCI裝置或虛擬I/O裝置。虛擬裝置模組125可進一步提供軟體組件130與虛擬裝置間之一介面。於若干實施例中,當接收來自一軟體組件130存取至一I/O位址時,該虛擬裝置模組125決定該I/O位址是否係在一虛擬裝置其為虛擬I/O裝置之一範圍內。於此等實施例中,若該虛擬裝置模組125決定該I/O位址是否係在一虛擬裝置其為虛擬I/O裝置之一範圍內,則在提供該存取請求給與該虛擬I/O裝置相聯結的的一週邊裝置140之前,該虛擬裝置模組125轉譯該I/O位址成為一PCI位址。
圖2例示依據本文揭示之一個實施例一虛擬裝置模組200以具現一通用方法而建立一虛擬PCI裝置及一虛擬MMIO裝置。於一個實施例中,該虛擬裝置模組200係與前文就圖1描述的虛擬裝置模組125相同。該虛擬裝置模組200可包括一虛擬裝置決定模組205、一虛擬PCI裝置產生模組 210、一虛擬I/O裝置產生模組215、及一虛擬I/O裝置位址轉譯模組220。更多或更少的組件可含括於該虛擬裝置模組200內而不喪失其通用性。
虛擬裝置決定模組205可接收針對一週邊裝置之一請求。該請求可包括有關該請求之識別資訊,諸如該請求是否為一存取請求、一枚舉請求等。該請求可進一步包括週邊裝置之識別資訊,諸如週邊裝置之一位址。基於針對該週邊裝置之該請求,虛擬裝置模組125可決定是否建立該虛擬裝置為一虛擬PCI裝置或一虛擬I/O裝置。
若於該請求中的週邊裝置係與非PCI可相容的功能區塊相聯結,則虛擬裝置決定模組205可建立一虛擬裝置其為一虛擬PCI裝置。於一個實施例中,虛擬裝置決定模組205藉從功能區塊獲得可相容性資訊及決定針對該功能區塊之該可相容性資訊是否包括PCI而決定於該請求中的週邊裝置是否為非PCI可相容。於本實施例中,若該功能區塊之可相容性資訊不包括PCI,則該虛擬裝置決定模組205決定該功能區塊為非PCI可相容。於本實施例中,若該功能區塊之可相容性資訊確實包括PCI,則該虛擬裝置決定模組205決定該功能區塊為PCI可相容。於替代實施例中,該虛擬裝置決定模組205藉從一SMI處理器(圖中未顯示)、捕獲處理器(圖中未顯示)、或中斷處理器(圖中未顯示)獲得資訊而決定於該請求中的該週邊裝置是否係與非PCI可相容的功能區塊相聯結。若該週邊裝置係與非PCI可相容的功能區塊相聯結,則該虛擬裝置決定模組205可發送一請求給虛擬 PCI裝置產生模組210以建立一虛擬PCI裝置為虛擬裝置。
若於該請求中的該週邊裝置係與欲從該週邊裝置啟動之軟體(例如作業系統)相聯結,則虛擬裝置決定模組205可決定該虛擬裝置須建立為一虛擬I/O裝置。於一個實施例中,虛擬裝置決定模組205藉存取儲存於週邊裝置上的軟體及決定該軟體中之任一者是否為預定型別的軟體(例如作業系統等)而決定該週邊裝置是否係與欲從該週邊裝置啟動之軟體相聯結。於一替代實施例中,該虛擬裝置決定模組205藉從一SMI處理器、一捕獲處理器、或一中斷處理器獲得資訊而決定該週邊裝置是否係與欲從該週邊裝置啟動之軟體相聯結。若於該請求中之該週邊裝置係與欲從該週邊裝置啟動之軟體相聯結,則該虛擬裝置決定模組205可發送一請求給虛擬I/O裝置產生模組215以建立一虛擬I/O裝置為虛擬裝置。
虛擬PCI裝置產生模組210可從該虛擬裝置決定模組205接收一請求以產生一虛擬PCI裝置。虛擬PCI裝置產生模組210藉基於與該週邊裝置相聯結的該功能區塊而決定針對該虛擬PCI裝置之識別資訊及位址資訊,能夠產生該虛擬PCI裝置。該識別資訊可包括一賣方識別符、一裝置識別符等。該位址資訊可包括可由一軟體(圖中未顯示)用以存取該虛擬PCI裝置之一位址範圍。於一個實施例中,該虛擬PCI裝置產生模組210從一SMI處理器、一捕獲處理器、或一中斷處理器獲得識別資訊及位址資訊。一旦該虛擬PCI裝置產生模組210產生一虛擬PCI裝置,該虛擬PCI裝置產生 模組210可將該虛擬PCI裝置儲存於記憶體。於一個實施例中,該虛擬PCI裝置產生模組210將該虛擬PCI裝置作為一虛擬裝置而以虛擬裝置資訊255儲存於記憶體模組250之中。
虛擬I/O裝置產生模組215可接收來自該虛擬裝置決定模組205之一請求以產生一虛擬I/O裝置。該虛擬I/O裝置產生模組215藉捨棄針對該週邊裝置之該請求及決定針對該虛擬I/O裝置之一I/O位址範圍能夠產生該虛擬I/O裝置。於一個實施例中,該虛擬I/O裝置產生模組215藉不應答針對該週邊裝置之該請求而捨棄針對該週邊裝置之該請求。於替代實施例中,該虛擬I/O裝置產生模組215藉發送一應答給請求失敗的該請求(例如PCI讀取不成功)而捨棄針對該週邊裝置之該請求。一旦虛擬I/O裝置產生模組215產生一虛擬I/O裝置,該虛擬I/O裝置產生模組215可儲存該虛擬I/O裝置於記憶體。於一個實施例中,虛擬I/O裝置產生模組215將該虛擬I/O裝置以虛擬裝置資訊255儲存於記憶體模組250之中。
虛擬I/O裝置位址轉譯模組220可接收一請求或一存取至一I/O位址。於一個實施例中,該請求或存取係接收自軟體。應答於該請求或存取,該虛擬I/O裝置位址轉譯模組220可決定該I/O位址是否係在其為虛擬I/O裝置的一虛擬裝置之該位址範圍內。該虛擬I/O裝置位址轉譯模組220可藉比較該I/O位址與其為虛擬I/O裝置的各個虛擬裝置之該位址範圍而決定該I/O位址是否係在一虛擬I/O裝置之該位址範圍內。於一個實施例中,虛擬I/O裝置位址轉譯模組 220比較該I/O位址與虛擬裝置資訊255中之該位址範圍。若該虛擬I/O裝置位址轉譯模組220決定該I/O位址係在其為虛擬I/O裝置的一虛擬裝置之一位址範圍內,則該虛擬I/O裝置位址轉譯模組220可轉譯該I/O位址成一PCI位址,且能使得與該虛擬裝置相聯結的該週邊裝置之該PCI位址欲被存取。
圖3為依據本文揭示之一實施例用以建立一虛擬PCI裝置及一虛擬MMIO裝置之方法300之一流程圖。方法300可藉處理邏輯執行,該處理邏輯可包括硬體(例如電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如在處理裝置上跑的指令)、韌體、或其組合。於一個實施例中,方法300係藉就圖1描述之裝置100執行。
於方塊305,處理邏輯接收針對一PCI可相容裝置的一請求。該PCI可相容裝置可為能夠附接至一PCI匯流排的一週邊裝置。針對該PCI可相容裝置的該請求可包括有關該請求的識別資訊,諸如該請求是否為存取請求、枚舉請求等。於一個實施例中,該請求為接收自一SMI處理器的枚舉請求,而執行方法300之一處理裝置係在系統管理模式(SMM)。
SMM乃一種操作模式,於該處該處理裝置的全部正常執行(含OS)皆被擱置,而特殊分開軟體(通常為韌體或硬體協助的除錯器)係以高特權模式被執行。SMM提供分離的記憶體及執行環境,及SMM碼為作業系統(OS)所不可見,同時保有完整存取記憶體,及對週邊裝置諸如PCI可相 容裝置等的完全控制。當SMM被啟動時,處理裝置之目前狀態被儲存,全部其它處理皆停止。高特權操作可於SMM模式執行,諸如除錯、硬體管理、安全功能、仿真等,接著為基於該處理裝置之儲存態,該處理裝置恢復操作。當發生系統管理中斷(SMI)時,該處理裝置可進入SMM及執行一SMI處理器。當起始(啟動)該處理裝置之執行時,當添加一新週邊裝置至該裝置時等,可生成一SMI。舉例言之,當啟動時韌體或BIOS可生成一SMI。
接收一SMI時,該SMI處理器可藉查詢(例如試圖讀取)一PCI匯流排以決定PCI可相容裝置而枚舉該處理裝置可用之PCI可相容(週邊)裝置。若SMI係應答於啟動而生成,則在該裝置中的全部PCI可相容裝置可能尚未枚舉。若SMI係應答於一新PCI可相容裝置的添加而生成,則該新PCI可相容裝置可能尚未枚舉。SMI處理器可針對尚未被枚舉的各個PCI可相容裝置而生成一枚舉請求。該枚舉請求可包括針對該PCI可相容裝置之識別資訊,諸如針對該PCI可相容裝置之匯流排號碼及裝置號碼。
回頭參考圖3,於方塊310,處理邏輯決定於該請求中之該PCI可相容裝置是否係與非PCI可相容的功能區塊相聯結。若一功能區塊無法讀取或寫入存取請求至一PCI匯流排,則該功能區塊為非PCI可相容性。
於一個實施例中,藉從與該PCI可相容裝置相聯結的一功能區塊獲得可相容性資訊,及決定針對該功能區塊之該可相容性資訊是否包括PCI可相容性,處理邏輯決定 於該請求中之該PCI可相容裝置係與非PCI可相容的功能區塊相聯結。若針對該功能區塊之該可相容性資訊包括PCI可相容性,則處理邏輯決定該PCI可相容裝置係不與非PCI可相容的功能區塊相聯結(換言之,該PCI可相容裝置係與PCI可相容之功能區塊相聯結)。若該功能區塊之可相容性資訊不包括PCI可相容性,則處理邏輯決定該PCI可相容裝置係與非PCI可相容的功能區塊相聯結。
於替代實施例中,藉從一SMI處理器獲得針對與該PCI可相容裝置相聯結的功能區塊的可相容性資訊,處理邏輯決定在該請求中之該週邊裝置是否與非PCI可相容的功能區塊相聯結。該可相容性資訊能夠包括與該PCI可相容裝置相聯結的功能區塊是否為PCI可相容性。該SMI處理器能夠收集有關驅動器及/或正在或將在該處理裝置上跑的軟體(例如應用程式)之相關資訊,且能決定哪些PCI可相容裝置係由該驅動器及/或軟體所支援。該SMI處理器能夠從文件、從驅動器或軟體來源碼等收集有關該驅動器及/或軟體之資訊。當決定由該驅動器及/或軟體所支援的PCI可相容裝置時,該SMI處理器能夠決定針對該等PCI可相容裝置各自之該相對應功能區塊(例如控制器),及決定該相對應功能區塊是否為PCI可相容。該SMI處理器可存取該等功能區塊各自以決定該等功能區塊各自之PCI可相容性。針對該等功能區塊各自之裝置型別資訊可由該SMI處理器存取。於一個實施例中,處理邏輯能夠藉發送針對一功能區塊之可相容性資訊的一請求,及從該SMI處理器接收針對該功能區塊 之可相容性資訊,而針對與該PCI可相容裝置相聯結的功能區塊,從該SMI處理器獲得可相容性資訊。於替代實施例中,處理邏輯能夠藉存取由SMI處理器寫入的一預定記憶體位置而從該SMI處理器獲得針對該功能區塊的可相容性資訊。若該可相容性資訊包括可相容性資訊該功能區塊係非PCI可相容性,則處理邏輯決定PCI可相容裝置係與非PCI可相容的一功能區塊相聯結。若該功能區塊之該可相容性資訊包括該功能區塊係為PCI可相容性之資訊,則處理邏輯決定PCI可相容裝置係與非PCI可相容的一功能區塊不相聯結(換言之,該PCI可相容裝置係與PCI可相容的一功能區塊相聯結)。
於另一替代實施例中,藉讀取或寫入一存取請求至該請求中的該週邊裝置,處理邏輯決定在該請求中的該週邊裝置是否為非PCI可相容性。若在該請求中的該週邊裝置回送一錯誤或其它指示在該請求中的該週邊裝置無法讀取或寫入該存取請求,則處理邏輯可決定在該請求中的該週邊裝置係為非PCI可相容性。
若處理邏輯決定該PCI可相容裝置係與非PCI可相容的一功能區塊不相聯結,則方法300前進至方塊320。若處理邏輯決定該PCI可相容裝置係與非PCI可相容的一功能區塊相聯結,則方法300前進至方塊315。
於方塊315,處理邏輯建立一虛擬裝置為一虛擬PCI裝置。處理邏輯可藉決定針對該虛擬裝置之PCI識別資訊及位址資訊而建立該虛擬裝置為一虛擬PCI裝置。建立一 虛擬裝置為一虛擬PCI裝置的一個具現係參考圖4描述如下。於一個實施例中,當建立該虛擬裝置時,處理邏輯可選擇性地提供一應答給於方塊305接收的請求。對該請求的該應答能夠包括與該虛擬裝置相聯結的預定暫存器之一成功的讀取,且能夠進一步包括針對該虛擬裝置之識別符資訊,諸如針對該虛擬裝置之賣方識別符、裝置識別符、I/O位址範圍,及MMIO位址範圍。舉例言之,針對具有一通用輸入/輸出(GPIO)控制器且為非PCI可相容的針對GPIO裝置之一枚舉請求將接收成功的應答,及包括針對與該GPIO裝置相聯結的該GPIO控制器產生的一虛擬裝置之賣方識別符(例如0x8888)、裝置識別符(例如0x9999)、I/O位址範圍(例如0x200-0x20F),及MMIO位址範圍(0xA0000-0xA00FF)。
於方塊320,處理邏輯決定該PCI可相容裝置是否與欲從該PCI可相容裝置啟動的軟體相聯結。欲從該PCI可相容裝置啟動的軟體可為作業系統、軟體應用程式、BIOS等。於若干實施例中,欲從該PCI可相容裝置啟動的該軟體乃要求從一I/O裝置啟動的軟體,諸如記憶體對映I/O週邊裝置。於此等實施例中,軟體可設計成不從被視為可卸式裝置的週邊裝置啟動,諸如PCI可相容裝置(例如嵌置式多媒體卡(eMMC)等)。但有些PCI可相容裝置為非可卸式,諸如於SOC內之PCI裝置。
於一個實施例中,處理邏輯藉存取儲存於該PCI可相容裝置上的軟體組件及決定該等軟體組件是否為預定軟體組件而決定該PCI可相容裝置是否與欲從該PCI可相容 裝置啟動的該軟體相聯結。藉比較該軟體組件與已經被決定為在非可卸式之一週邊裝置(例如在一eMMC上的一作業系統等)上的一或多個預定軟體組件,處理邏輯可決定該軟體組件是否為一預定軟體組件。若該比較指示儲存於該PCI可相容裝置上的該等軟體組件包括該等預定軟體組件中之一或多者,則處理邏輯可決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的該軟體相聯結。若該比較指示儲存於該PCI可相容裝置上的該等軟體組件不包括該等預定軟體組件中之一或多者,則處理邏輯可決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的該軟體不相聯結。
於一替代實施例中,處理邏輯藉從一SMI處理器獲得軟體資訊而決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的該軟體相聯結。於一個此種實施例中,得自該SMI處理器之軟體資訊包括於該PCI可相容裝置上的該等軟體組件。於本實施例中,該SMI處理器可收集有關驅動器及/或儲存於該PCI可相容裝置上的軟體組件之資訊。於本實施例中,處理邏輯可獲得軟體資訊,及比較軟體資訊與已經決定為係在非可卸式的一週邊裝置(例如在一eMMC上的一作業系統等)上的一或多個預定軟體組件。若該比較指示該軟體資訊包括一或多個預定軟體組件,則處理邏輯可決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的該軟體相聯結。若該比較指示該軟體資訊不包括一或多個預定軟體組件,則處理邏輯可決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的該軟體不相聯結。於另一此種實 施例中,軟體資訊包括在該PCI可相容裝置上的該等軟體組件中之任一者是否欲從該PCI可相容裝置啟動的一指標(例如正指標諸如一位元設定為1,或負指標諸如一位元設定為0)。於本實施例中,處理邏輯獲得該軟體資訊,及基於該指標決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的軟體相聯結。若該指標指示在該PCI可相容裝置上的軟體係欲從該PCI可相容裝置啟動(例如正指標),則處理邏輯可決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的軟體相聯結。若該指標指示該PCI可相容裝置上係非與欲從該PCI可相容裝置啟動之軟體相聯結(例如負指標),則處理邏輯可決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的軟體不相聯結。
於一個實施例中,處理邏輯藉發送針對該PCI可相容裝置之該軟體資訊之一請求,及從該SMI處理器接收針對該PCI可相容裝置之該軟體資訊而能夠從該SMI處理器獲得針對該PCI可相容裝置之該軟體資訊。於一替代實施例中,處理邏輯藉存取藉該SMI處理器寫至一預定記憶體位置而能夠從該SMI處理器獲得針對該PCI可相容裝置之該軟體資訊。
若處理邏輯決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的軟體不相聯結,則方法300結束而未建立虛擬裝置。若處理邏輯決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的軟體相聯結,則方法300前進至方塊325。
於方塊325,處理邏輯建立一虛擬裝置為一虛擬I/O裝置。於一個實施例中,該虛擬I/O裝置為一虛擬MMIO裝置。建立一虛擬裝置為一虛擬I/O裝置之一個具現係參考圖5描述如下。於一個實施例中,當建立該虛擬裝置時,處理邏輯可選擇性地提供一應答給於方塊305接收的該請求。對該請求之該應答可包括與該PCI可相容裝置相聯結的預定暫存器之讀取不成功。
圖4為依據本文揭示之一實施例用以建立一虛擬裝置為一虛擬PCI裝置之方法400之流程圖。方法400可藉處理邏輯執行,該處理邏輯可包括硬體(例如電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如在處理裝置上跑的指令)、韌體、或其組合。於一個實施例中,方法400係藉就圖1描述之裝置100執行。
於方塊405,處理邏輯針對虛擬裝置決定一賣方識別符。於一個實施例中,該賣方識別符係藉從一SMI處理器或BIOS獲得該賣方識別符決定。從該SMI處理器或BIOS識別的賣方可藉該SMI處理器或BIOS指定,或可匹配由一驅動器或一軟體組件要求的賣方識別符。舉例言之,若一驅動器要求一賣方識別符「0x8086」,則該SMI處理器或BIOS將分配賣方識別符「0x8086」給該虛擬裝置。於一替代實施例中,該賣方識別符之決定方式係經由決定與該PCI可相容裝置相聯結的一賣方識別符,及組配針對該虛擬裝置之該賣方識別符為與該所決定的賣方識別符相同。例如,若該PCI可相容裝置為具有0x8888之一賣方識別符的一 GPIO裝置,則針對該虛擬裝置之該相對應賣方識別符將也是0x8888。
於方塊410,處理邏輯決定針對虛擬裝置之一虛擬識別符。於一個實施例中,該裝置識別符係藉從一SMI處理器或BIOS獲得裝置識別符而予決定。從SMI處理器或BIOS識別的賣方可由該SMI處理器或BIOS指派,或可匹配由一驅動器或軟體組件所要求的一賣方識別符。舉例言之,若一驅動器要求一裝置識別符「0x8086」,則該SMI處理器或BIOS將指派裝置識別符「0x8086」給該虛擬裝置。於替代實施例中,裝置識別符之決定方式係藉決定與該PCI可相容裝置相聯結的一裝置識別符,及針對該虛擬裝置組配該裝置識別符與所決定的裝置識別符相同。例如,若PCI可相容裝置為具有0x9999之一裝置識別符之一GPIO裝置,則針對該虛擬裝置之相對應於裝置識別符也將為0x9999。
於方塊415,處理邏輯決定針對該虛擬裝置之位址資訊。針對該虛擬裝置之位址資訊可為針對該虛擬裝置之一位址I/O位址範圍及一MMIO位址範圍。於一個實施例中,位址資訊係藉從SMI處理器、BIOS、或硬體規格獲得該位址資訊決定。於替代實施例中,該位址資訊係經由決定與PCI可相容裝置相聯結的位址資訊及組配針對該PCI可相容裝置之位址資訊與該所決定的位址資訊相同而予決定。舉例言之,若PCI可相容裝置為一GPIO裝置具有位址資訊含0x200至0x20F之一I/O範圍及0xA0000至0xA00FF之一MMIO範圍,則該虛擬裝置之相對應位址資訊將也是0x200 至0x20F之一I/O範圍及0xA0000至0xA00FF之一MMIO範圍。位址資訊可包括針對該虛擬裝置之一位址範圍,可由軟體組件(圖中未顯示)用以存取該虛擬裝置。
圖5為依據本文揭示之一實施例用以建立一虛擬裝置為一虛擬I/O裝置之方法500之流程圖。方法500可藉處理邏輯執行,該處理邏輯可包括硬體(例如電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如在處理裝置上跑的指令)、韌體、或其組合。於一個實施例中,方法500係藉就圖1描述之裝置100執行。
於方塊505,處理邏輯捨棄針對一PCI可相容裝置的一請求。於一個實施例中,該請求為與PCI可相容裝置相聯結的一枚舉請求。藉捨棄針對該PCI可相容裝置的該請求,處理邏輯可提供回授給做出請求的軟體,並無與PCI可相容裝置相聯結的請求。如此將使得該軟體相信該軟體係儲存於一MMIO裝置上,或該軟體係正在存取一MMIO裝置。於一個實施例中,處理邏輯藉不應答該請求而捨棄針對該PCI可相容裝置的該請求。於替代實施例中,處理邏輯藉對包括與PCI可相容請求相聯結的一或多個預定暫存器(例如與該請求中提供的一賣方識別符及裝置識別符相聯結的PCI組態暫存器)之一讀取不成功的該請求生成一應答而捨棄針對該PCI可相容裝置的該請求。
於方塊510,處理邏輯針對該虛擬I/O裝置決定一I/O位址範圍。於一個實施例中,該I/O位址範圍為一MMIO位址範圍。於一個實施例中,處理邏輯藉從一SMI處理器獲 得該I/O位址範圍而針對該虛擬I/O裝置決定該I/O位址範圍。於替代實施例中,處理邏輯藉從一高階組態及功率介面(ACPI)表獲得(例如剖析)針對該PCI可相容裝置之該I/O位址範圍而針對該虛擬I/O裝置決定該I/O位址範圍。ACPI規格可藉作業系統提供裝置組態及功率管理之一開放標準。該ACPI表可包括針對該系統中可用裝置之裝置資源資訊。針對一裝置之裝置資源資訊可包括裝置名稱、MMIO位址範圍、I/O位址範圍、中斷機構、與該裝置相聯結的一裝置等。
圖6為依據本文揭示之一實施例用以使用一虛擬裝置之方法600之流程圖。方法600可藉處理邏輯執行,該處理邏輯可包括硬體(例如電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如在處理裝置上跑的指令)、韌體、或其組合。於一個實施例中,方法600係藉就圖1描述之裝置100執行。
於方塊605,處理邏輯接收針對一I/O位址的存取請求。於一個實施例中,該I/O位址為一MMIO位址。於一個實施例中,針對該I/O位址的該存取請求係接收自軟體。
於方塊610,處理邏輯決定該I/O位址是否係在屬於虛擬I/O裝置的一虛擬裝置之位址範圍內。處理邏輯可藉比較該I/O位址與在一計算系統中之各個虛擬I/O裝置之位址範圍而能夠決定該I/O位址是否係在屬於虛擬I/O裝置的一虛擬裝置之位址範圍內。若處理邏輯決定該I/O位址不在屬於虛擬I/O裝置的一虛擬裝置之位址範圍內,則方法600結束。若處理邏輯決定該I/O位址係在屬於虛擬I/O裝置的一 虛擬裝置之位址範圍內,則方法600前進至方塊615。於一個實施例中,方塊610為選擇性的且不執行。於本實施例中,決定該I/O位址是否係在屬於虛擬I/O裝置的一虛擬裝置之位址範圍內係藉一SMI處理器執行。
於方塊615,處理邏輯決定相對應於該I/O位址之一PCI裝置之一PCI位址。處理邏輯藉從一SMI處理器獲得針對該I/O位址之一PCI位址而能夠決定相對應於該I/O位址之一PCI裝置之一PCI位址。於一個實施例中,若該處理邏輯並未支援記憶體空間捕獲(trap),則方塊615為選擇性的。於本實施例中,處理邏輯將存取先前針對該虛擬I/O裝置決定的該虛擬I/O裝置之I/O位址,其揭示與PCI裝置之I/O位址相同的I/O位址。
舉例言之,若該系統支援在一記憶體空間的一捕獲,則當在屬於虛擬I/O裝置的一虛擬裝置之受監視的位址範圍內發生一存取時,處理邏輯觸發一SMI。於本實施例中,一SMI處理器將被觸發,及決定該I/O位址是否係在該虛擬裝置之位址範圍內,及從該I/O位址轉譯成一PCI位址。
圖7為依據本文揭示之一實施例,包括邏輯電路以建立一虛擬PCI裝置及一虛擬MMIO裝置的SoC 700之一方塊圖。虛線框為更先進SoC上的選擇性特性件。於圖7中,互連體單元712係耦接至:一應用程式處理器720其包括一集合之一或多個核心702A-N及分享快取單元706;一系統代理器單元710;一匯流排控制器單元716;一整合式記憶體控制器單元714;一集合或一或多個媒體處理器718,其可 包括整合式圖形邏輯708、用以提供靜像及/或視訊相機功能的一影像處理器724、用以提供硬體音訊加速的一音訊處理器726、及用以提供視訊編碼/解碼加速的一視訊處理器728;一靜態隨機存取記憶體(SRAM)單元730;一直接記憶體存取(DMA)單元732;及用以耦接至一或多個外部顯示器的一顯示單元740。
該記憶體階層包括在該等核心內部之一或多個層級的快取、一集合或一或多個分享快取單元706、及耦接至該集合整合式記憶體控制器單元714的外部記憶體(圖中未顯示)。該集合之分享快取單元706可包括一或多個中間層級快取,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級快取、最末層級快取(LLC)、及/或其組合。
於若干實施例中,核心702A-N中之一或多者能夠執行多執行緒。
系統代理器710包括協作及操作核心702A-N的該等組件。該系統代理器單元710可包括例如一功率控制單元(PCU)及一顯示單元。該PCU可為或可包括調節核心702A-N及整合式圖形邏輯708之功率態需要的邏輯及組件。該顯示單元係用以驅動一或多個外部連結的顯示器。
就架構及/或指令集而言,該等核心702A-N可為同機種或不同機種。例如該等核心702A-N中之部分可為有序,而其它者為失序。至於另一個實施例,該等核心702A-N中之二或多者可執行相同指令集,而其它者可能只執行該指令集之一子集或一不同指令集。
應用程式處理器720可為通用處理器,諸如核心(CoreTM)i3、i5、i7、2雙重及四重、席翁(XeonTM)、伊塔尼(ItaniumTM)、叉級(XScaleTM)或強臂(StrongARMTM)處理器,係得自英特爾公司,加州聖塔卡拉。另外,應用程式處理器720可得自另一公司,諸如ARM控股公司、MIPS等。應用程式處理器720可為特用處理器諸如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器等。應用程式處理器720可在一或多個晶片上具現。應用程式處理器720可為基體之一部分及/或可使用多個處理技術諸如BiCMOS、CMOS、或NMOS中之任一者在一或多個基體上具現。
於一個實施例中,該應用程式處理器720也包括邏輯以具現依據本發明之實施例建立一虛擬PCI裝置及一虛擬MMIO裝置。舉例言之,該應用程式處理器720可包括執行一虛擬裝置模組之邏輯,諸如就圖1描述的虛擬裝置模組125,於該處該虛擬裝置模組可基於針對一週邊裝置之一請求而建立一虛擬裝置。該虛擬裝置可為一虛擬PCI裝置或一虛擬MMIO裝置。
圖8為依據本文揭示的一單晶片系統(SOC)設計之一實施例之方塊圖。至於特定例示實施例,SOC 800係含括於使用者設備(UE)中。於一個實施例中,UE指稱由最終使用者使用以通訊的任何裝置,諸如手持式電話、智慧型手機、平板電腦、超薄筆記型電腦、附寬頻配接器的筆記型電腦、或任何其它類似之通訊裝置。經常一UE連結至一 用戶站台或節點,其可能本質上相對應於GSM網路內之行動站台(MS)。
此處,SOC 800包括兩個核心亦即806及807。核心806及807可符合指令集架構,諸如以英特爾架構核心為基礎之處理器、超微(AMD)處理器、以MIPS為基礎之處理器、以ARM為基礎之處理器設計、或其用戶以及其被授權人或採用者。核心806及807係耦接至快取控制808,其係與匯流排介面單元809及L2快取810相聯結以與系統800之其它部分通訊。互連體810包括晶片上互連體,諸如IOSF、AMBA、或前文討論的其它互連體,其潛在地具現所描述之揭示的一或多個面向。
介面810提供通訊頻道給其它組件,諸如一用戶身分模組(SIM)830以介接一SIM卡,一啟動ROM 835以保有啟動碼用以由核心806及807執行而初始化及啟動SOC 800,一SDRAM控制器840以介接外部記憶體(例如DRAM 860),一快閃控制器845以介接非依電性記憶體(例如快閃記憶體865),一周邊控制850(例如串列周邊介面)以介接周邊,視訊編解碼器820及視訊介面825以顯示及接收輸入(例如觸摸作動的輸入)、GPU 815以執行圖形相關計算等。此等介面中之任一者可結合此處描述之本文揭示之面向。
於一個實施例中,核心806及807也包括邏輯以具現依據本發明之實施例建立一虛擬PCI裝置及一虛擬MMIO裝置。舉例言之,該核心806及807可包括邏輯以執行一虛擬裝置模組,諸如就圖1描述的虛擬裝置模組125,於 該處該虛擬裝置模組可基於針對一週邊裝置諸如DRAM 860、快閃記憶體865等的一請求而建立一虛擬裝置。該虛擬裝置可為一虛擬PCI裝置或一虛擬MMIO裝置。
此外,SOC 800例示用於通訊之周邊,諸如藍牙模組870、3G數據機875、GPS 880、及Wi-Fi 885。注意如前文陳述,一UE包括通訊用之無線電。結果,並非全部需要此等周邊通訊模組。但於一UE中,可包括某種形式之外部通訊用之無線電。
圖9例示呈電腦系統900之一範例形式的機器之圖解代表圖,於其中可執行一指令集用以使得該機器從事此處討論之方法中之任一者或多者。於替代實施例中,該機器可連結(例如聯網)至一LAN、企業網路、企業外聯網、或網際網路中的其它機器。機器可以賓主網路環境內的伺服器或用戶裝置之容量操作,或於同級(或分散式)網路環境內的同級機器操作。該機器可為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理器(PDA)、小區式電話、網路設施、伺服器、網路路由器、交換器或橋接器、或能夠執行載明由該機器所採取的動作之一指令集(循序或其它)的任何機器。又,雖然圖中只例示單一機器,但「機器」一詞也須視為包括個別地或聯合地執行一指令集(或多指令集)以從事此處討論之方法中之任一者或多者的任何機器集合。
電腦系統900包括一處理裝置902、一主記憶體904(例如唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記 憶體(DRAM)(諸如同步DRAM(SDRAM)或DRAM(RDRAM))等)、一靜態記憶體906(例如快閃記憶體、靜態隨機存取記憶體(SRAM)等)、及一資料儲存裝置918,其係透過一匯流排930而彼此通訊。
處理裝置902表示一或多個通用處理裝置,諸如微處理器、中央處理單元等。更明確言之,該處理裝置可為複雜指令集電腦(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、或具現其它指令集之處理器、或具現其它指令集之組合的處理器。處理裝置902也可為一或多個特用處理裝置,諸如特定應用積體電路(ASIC)、可現場程式規劃閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器等。於一個實施例中,處理裝置902可包括一或多個處理核心。該處理裝置902係經組配以執行指令926用以從事此處討論的操作。於一個實施例中,處理裝置902係與就圖1描述之處理裝置100相同其具現用以建立一虛擬PCI裝置及一虛擬MMIO裝置之通用方法。舉例言之,處理裝置902可包括一虛擬裝置模組,諸如圖1之虛擬裝置模組125。
電腦系統900可進一步包含通訊式耦接至一網路920的一網路介面裝置908。該電腦系統900也可包括一視訊顯示單元910(例如液晶顯示器(LCD)或陰極射線管(CRT))、一文數輸入裝置912(例如鍵盤)、一游標控制裝置914(例如滑鼠)、一信號生成裝置916(例如揚聲器)、或其它周邊裝置。又復,電腦系統900可包括一圖形處理單元922、一視訊處 理單元928、及一音訊處理單元932。
資料儲存裝置918可包括於其上儲存軟體926具現此處描述的功能方法中之一或多者的機器可讀取儲存媒體924,諸如具現如前述建立一虛擬PCI裝置及一虛擬MMIO裝置之通用方法。軟體926也可完全地或至少部分地駐在主記憶體904內部作為指令926及/或於其藉電腦系統900執行期間駐在處理裝置902內部作為處理邏輯926;主記憶體904及處理裝置902也組成機器可存取儲存媒體。
機器可讀取儲存媒體924也可用以儲存具現建立一虛擬PCI裝置及一虛擬MMIO裝置之一通用方法的指令926,如就圖1之裝置100之描述,及/或一軟體存庫含有調用前述應用程式之方法。雖然於一具體實施例中機器可讀取儲存媒體924顯示為單一媒體,但「機器可存取儲存媒體」一詞須解譯為儲存一或多個指令集的單一媒體或多個媒體(例如集中式或分散式資料庫,及/或相聯結的快取記憶體及伺服器)。「機器可讀取儲存媒體」一詞須解譯為能夠儲存、編碼或攜帶由該機器執行的一指令集其使得該機器從事本文揭示之該等方法中之任一者的任何媒體。因此,「機器可讀取儲存媒體」一詞須解譯為包括但非限制性,固態記憶體、及光學及磁性媒體。
下列實施例係有關於進一步實施例。
實施例1為一種用以建立一虛擬裝置之設備包含:1)一記憶體;及2)通訊式耦接至該記憶體之一處理裝置,該處理裝置接收針對一週邊控制器互連(PCI)可相容裝置之一 PCI請求,及基於該PCI可相容裝置建立該虛擬裝置,其中該虛擬裝置係建立為一虛擬PCI裝置或一虛擬輸入/輸出(I/O)裝置中之至少一者。
於實施例2中,實施例1之該PCI可相容裝置可選擇性地與一軟體驅動器相聯結,其中該軟體驅動器係傳輸一PCI可相容之存取請求給該虛擬裝置,其中該虛擬裝置提供該PCI可相容之存取請求給一功能區塊,及其中該功能區塊係基於該PCI可相容之存取請求而與該PCI可相容裝置通訊。
於實施例3中,一作業系統係將使用實施例1之該虛擬裝置而從該PCI可相容裝置啟動。
於實施例4中,基於該PCI可相容裝置建立該虛擬裝置,實施例1之該處理裝置可選擇性地當決定該PCI可相容裝置係與非PCI可相容的一功能區塊相聯結時,建立該虛擬裝置為該虛擬PCI裝置;及當決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動之一作業系統相聯結時,建立該虛擬裝置為該虛擬I/O裝置。
於實施例5中,建立該虛擬裝置為一虛擬PCI裝置,實施例4之該處理裝置可選擇性地決定針對該虛擬裝置之一賣方識別符;決定針對該虛擬裝置之裝置資訊;及決定針對該虛擬裝置之位址資訊。
於實施例6中,應答於針對該PCI可相容裝置之該請求,實施例5之該處理裝置可選擇性地發送針對該虛擬裝置之該賣方識別符、針對該虛擬裝置之該裝置資訊、及針 對該裝置之該位址資訊。
於實施例7中,實施例4之建立該虛擬裝置為一虛擬I/O裝置可選擇性地捨棄針對該PCI可相容裝置之該PCI枚舉請求;及決定針對該虛擬裝置之一I/O位址範圍。
於實施例8中,實施例1之處理裝置係選擇性地接收針對一I/O位址的一記憶體存取;當該虛擬裝置係建立為一虛擬I/O裝置時,決定該I/O位址是否係與該虛擬裝置相聯結;及當決定當該虛擬裝置係建立為一虛擬I/O裝置時該I/O位址係與該虛擬裝置相聯結時,決定與該I/O位址相對應的該PCI裝置相聯結的一PCI位址。
於實施例9中,實施例1之該虛擬I/O裝置可選擇性地包含一記憶體對映輸入輸出(MMIO)裝置。
於實施例10中,實施例1之該請求可選擇性地包含針對該PCI可相容裝置之一PCI枚舉請求。
各種實施例可具有前文描述之操作特徵的不同組合。例如,前述設備之全部選擇性特徵也可就此處描述之一方法或處理具現。於該等實施例中之特定細節可用於一或多個實施例之任一處。
實施例11為一種用以建立一虛擬裝置之方法包含1)接收針對一週邊控制器互連(PCI)可相容裝置之一PCI請求;及2)基於該PCI可相容裝置建立該虛擬裝置,其中該虛擬裝置係建立為一虛擬PCI裝置或一虛擬輸入/輸出(I/O)裝置中之至少一者。
於實施例12中,實施例11之該PCI可相容裝置係 與一軟體驅動器相聯結,其中該軟體驅動器係傳輸一PCI可相容之存取請求給該虛擬裝置,其中該虛擬裝置提供該PCI可相容之存取請求給一功能區塊,及其中該功能區塊係基於該PCI可相容之存取請求而與該PCI可相容裝置通訊。
於實施例13中,一作業系統係選擇性地使用實施例11之該虛擬裝置而從該PCI可相容裝置啟動。
於實施例14中,基於該PCI可相容裝置建立該虛擬裝置,實施例11之該處理裝置可選擇性地當決定該PCI可相容裝置係與非PCI可相容的一功能區塊相聯結時,建立該虛擬裝置為該虛擬PCI裝置;及當決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動之一作業系統相聯結時,建立該虛擬裝置為該虛擬I/O裝置。
於實施例15中,實施例14之建立該虛擬裝置為一虛擬PCI裝置可選擇性地決定針對該虛擬裝置之一賣方識別符;決定針對該虛擬裝置之裝置資訊;及決定針對該虛擬裝置之位址資訊。
於實施例16中,實施例15之主旨可選擇性地包含應答於針對該PCI可相容裝置之該請求,發送針對該虛擬裝置之該賣方識別符、針對該虛擬裝置之該裝置資訊、及針對該裝置之該位址資訊。
於實施例17中,實施例14之建立該虛擬裝置為一虛擬I/O裝置可選擇性地包含捨棄針對該PCI可相容裝置之該PCI枚舉請求;及決定針對該虛擬裝置之一I/O位址範圍。
於實施例18中,實施例11之主旨可選擇性地包含接收針對一I/O位址的一記憶體存取;當該虛擬裝置係建立為一虛擬I/O裝置時,決定該I/O位址是否係與該虛擬裝置相聯結;及當決定當該虛擬裝置係建立為一虛擬I/O裝置時該I/O位址係與該虛擬裝置相聯結時,決定與該I/O位址相對應的該PCI裝置相聯結的一PCI位址。
於實施例19中,實施例11之該虛擬I/O裝置可選擇性地包含一記憶體對映輸入輸出(MMIO)裝置。
於實施例20中,實施例11之該請求可選擇性地包含針對該PCI可相容裝置之一PCI枚舉請求。
各種實施例可具有前文描述之操作特徵的不同組合。例如,前述方法之全部選擇性特徵也可就一非暫時性電腦可讀取儲存媒體具現。於該等實施例中之特定細節可用於一或多個實施例之任一處。
實施例21為一種包括資料之非暫時性機器可讀取儲存媒體,其當由一處理裝置存取時使得該處理裝置執行實施例11至20之方法。
實施例22為一種用以建立一虛擬裝置之設備包含:1)一記憶體;及2)耦接至該記憶體之一計算系統,其中該計算系統係經組配以執行請求項11至20中任一項之方法。
於實施例23中,實施例22之該計算系統可選擇性地包含一介面以接收針對一週邊控制器互連(PCI)可相容裝置之一PCI請求;及耦接至該介面之一虛擬裝置處理區塊。
實施例24為一種建立一虛擬裝置之計算系統包含:一介面以接收針對一週邊控制器互連(PCI)可相容裝置之一PCI請求;及耦接至該介面之一虛擬裝置處理區塊,其中該虛擬裝置處理區塊係基於該PCI可相容裝置建立該虛擬裝置,其中該虛擬裝置係建立為一虛擬PCI裝置或一虛擬輸入/輸出(I/O)裝置中之任一者。
於實施例25中,實施例24之該虛擬裝置處理區塊可選擇性地包含:一虛擬裝置決定區塊以決定該PCI可相容裝置是否與非PCI可相容之一功能區塊相聯結,及決定該PCI可相容裝置是否與欲從該PCI可相容裝置啟動的一作業系統相聯結;一虛擬PCI裝置產生區塊以當該PCI可相容裝置係與欲從該PCI可相容裝置啟動的一作業系統相聯結時建立虛擬裝置為虛擬PCI裝置;及一虛擬I/O裝置產生區塊以當該PCI可相容裝置係與欲從該PCI可相容裝置啟動的一作業系統相聯結時建立虛擬裝置為虛擬I/O裝置。
於實施例26中,為了建立虛擬裝置為虛擬PCI裝置,實施例25之虛擬PCI裝置產生區塊係選擇性地決定針對該虛擬裝置之一賣方識別符;針對該虛擬裝置決定裝置資訊;及針對該虛擬裝置決定位址資訊。
於實施例27中,為了建立虛擬裝置為虛擬I/O裝置,實施例25之虛擬I/O裝置產生區塊係選擇性地捨棄針對該PCI可相容裝置之PCI枚舉請求;及決定針對該虛擬裝置之一I/O位址範圍。
於實施例28中,應答於針對PCI可相容裝置之該 請求,實施例24之虛擬裝置處理區塊可選擇性地發送針對該虛擬裝置之賣方識別符、針對該虛擬裝置之裝置資訊、及針對該虛擬裝置之位址資訊。
於實施例29中,實施例24之虛擬裝置處理區塊可選擇性地包含一虛擬I/O裝置位址轉譯區塊以接收針對一I/O位址之一記憶體存取,當該虛擬裝置被建立為一虛擬I/O裝置時決定該I/O位址是否與該虛擬裝置相聯結,及當該虛擬裝置被建立為一虛擬I/O裝置時決定該I/O位址係與該虛擬裝置相聯結,決定與該PCI裝置相聯結的一PCI位址相對應於該I/O位址。
實施例30為一種包括指令之非暫時性機器可讀取儲存媒體,其當由一計算系統存取時使得該計算系統執行操作包含:1)接收針對一週邊控制器互連(PCI)可相容裝置之一PCI請求;及2)基於該PCI可相容裝置建立該虛擬裝置,其中該虛擬裝置係建立為一虛擬PCI裝置或一虛擬輸入/輸出(I/O)裝置中之至少一者。
於實施例31中,實施例30之該PCI可相容裝置可選擇性地與一軟體驅動器相聯結,其中該軟體驅動器係傳輸一PCI可相容之存取請求給該虛擬裝置,其中實施例30之該虛擬裝置提供該PCI可相容之存取請求給一功能區塊,及其中該功能區塊係基於該PCI可相容之存取請求而與該PCI可相容裝置通訊。
於實施例32中,一作業系統係將使用實施例30之該虛擬裝置而從該PCI可相容裝置啟動。
於實施例33中,其中基於實施例30之該PCI可相容裝置建立該虛擬裝置可選擇性地包含:當決定該PCI可相容裝置係與非PCI可相容的一功能區塊相聯結時,建立該虛擬裝置為該虛擬PCI裝置;及當決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動之一作業系統相聯結時,建立該虛擬裝置為該虛擬I/O裝置。
於實施例34中,實施例33之建立該虛擬裝置為一虛擬PCI裝置可選擇性地包含決定針對該虛擬裝置之一賣方識別符;決定針對該虛擬裝置之裝置資訊;及決定針對該虛擬裝置之位址資訊。
於實施例35中,實施例34之建立該虛擬裝置為一虛擬PCI裝置可選擇性地包含應答於針對該PCI可相容裝置之該請求,發送針對該虛擬裝置之該賣方識別符、針對該虛擬裝置之該裝置資訊、及針對該裝置之該位址資訊。
於實施例36中,實施例33之建立該虛擬裝置為一虛擬I/O裝置可選擇性地包含捨棄針對該PCI可相容裝置之該PCI枚舉請求;及決定針對該虛擬裝置之一I/O位址範圍。
於實施例37中,實施例30之主旨可選擇性地包含:接收針對一I/O位址的一記憶體存取;當該虛擬裝置係建立為一虛擬I/O裝置時,決定該I/O位址是否係與該虛擬裝置相聯結;及當決定當該虛擬裝置係建立為一虛擬I/O裝置時該I/O位址係與該虛擬裝置相聯結時,決定與該I/O位址相對應的該PCI裝置相聯結的一PCI位址。
實施例38為一種用以建立一虛擬裝置之設備包含:1)一介面以接收針對一週邊控制器互連(PCI)可相容裝置之一PCI請求;及2)用以基於該PCI可相容裝置建立該虛擬裝置之構件,其中該虛擬裝置係建立為一虛擬PCI裝置或一虛擬輸入/輸出(I/O)裝置中之至少一者。
於實施例39中,實施例38之用以基於該PCI可相容裝置建立該虛擬裝置之構件可選擇性地包含:用以決定該PCI可相容裝置是否與非PCI可相容的一功能區塊相聯結之構件;當決定該PCI可相容裝置係與非PCI可相容的一功能區塊相聯結時,用以建立該虛擬裝置為虛擬PCI裝置之構件;用以決定該PCI可相容裝置是否與欲從該PCI可相容裝置啟動的一作業系統相聯結的構件;及當決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動的一作業系統相聯結時,用以建立該虛擬裝置為虛擬I/O裝置之構件。
於前文詳細說明部分中,陳述無數細節。但熟諳技藝人士顯然易知揭示內容可無此等特定細節實施。於若干情況下,眾所周知之結構及裝置係以方塊圖形式顯示而非以細節顯示以免遮掩本文揭示。
詳細說明之有些部分係以演算法及操作之符號表示型態在一電腦記憶體內部的資料位元上呈現。此等演算法描述及表示型態乃熟諳資料處理技藝界人士用以最有效地傳遞其工作實質給其它業界人士的手段。一演算法於此處及通用地構想為可獲得期望結果之首尾一貫的操作序列。該等操作為要求實體量之實體操作者。通常地,雖然 並非必然地,此等量呈能夠被儲存、轉移、組合、比較、及以其它方式操控的電氣或磁性信號形式。主要為了習慣用語的理由,已經證實偶爾方便地將此等信號指稱為位元、值、元素、符號、字元、項目、編號等。此處描述的區塊可為硬體、軟體、韌體、或其組合。
但須牢記全部此等及類似術語係與適當實體量相聯結,且只是施加至此等量之方便標示。如從前文討論顯然易知,除非特別地另行陳述,否則須瞭解於全文描述中,利用術語諸如「發送」、「接收」、「生成」、「決定」、「產生」、「轉譯」、「捨棄」、「比較」等的討論係指一計算系統或類似的電子計算裝置的動作及處理,其操控及變換在該計算系統之暫存器及記憶體內部表示為實體(例如電子)量之資料成為在該計算系統之記憶體或暫存器或其它此等資訊儲存、傳輸、或顯示裝置內部類似地表示為實體量之其它資料。
本文揭示也係有關於一種用以執行此處操作之設備。該設備可特別地針對要求的目的而予建構,或其可包括一通用電腦選擇性地藉儲存於該電腦中的一電腦程式活化或重新組配。此種電腦程式可儲存於電腦可讀取儲存媒體,諸如但非僅限於任何型別的碟片含軟碟、光碟、CD-ROM、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、EPROM、EEPROM、磁卡或光卡、或適用以儲存電子指令的任何型別之媒體,各自耦接至一電腦系統匯流排。
此處呈示之演算法及顯示器本質上並非與任何特定電腦或其它設備相關。依據此處教示,各種通用系統可用於程式,或可證實方便地建構更特化設備以執行操作。多個此等系統所要求的結構由後文描述將更為彰顯。此外,本實施例並不參照任何特定程式語言描述。須瞭解多種程式語言可用以具現如此處描述的實施例之教示。
本文揭示可提供為一電腦程式產品或軟體,可包括其上儲存有指令之一機器可讀取媒體,其可用以規劃一電腦系統(或其它電子裝置)以執行依據本文揭示之處理。一機器可讀取媒體包括用以以機器(例如電腦)可讀取形式儲存或傳輸資訊的任何技術。舉例言之,機器可讀取(例如電腦可讀取)媒體包括一機器(例如電腦)可讀取儲存媒體(例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等)等。
雖然熟諳技藝人士於研讀前文詳細說明部分之後無疑地顯然易知本文揭示之許多變更及修改,但須瞭解藉由例示顯示及描述的任何特定實施例絕非意圖考慮為限制性。因此,述及各種實施例之細節絕非意圖限制申請專利範圍各項之範圍,各請求項本身只引述有關本文揭示之該等特徵。
100‧‧‧裝置
105‧‧‧主機
110‧‧‧處理模組
115‧‧‧功能區塊
120‧‧‧記憶體模組
125‧‧‧虛擬裝置模組
130、145‧‧‧軟體組件
135‧‧‧其它模組
140‧‧‧週邊裝置

Claims (22)

  1. 一種用以建立虛擬裝置之設備,其包含:記憶體;及通訊式耦接至該記憶體之處理裝置,該處理裝置係用於:接收針對週邊控制器互連(PCI)可相容裝置的PCI請求;基於該PCI可相容裝置建立該虛擬裝置,其中基於該PCI可相容裝置建立該虛擬裝置,該處理裝置係用於:當決定該PCI可相容裝置係與非PCI可相容的功能區塊相聯結時,建立該虛擬裝置作為虛擬PCI裝置;及當決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動之作業系統相聯結時,建立該虛擬裝置作為虛擬I/O裝置。
  2. 如請求項1之設備,其中該PCI可相容裝置係與軟體驅動器相聯結,其中該軟體驅動器係用於傳輸PCI可相容之存取請求給該虛擬裝置,其中該虛擬裝置提供該PCI可相容之存取請求給功能區塊,且其中該功能區塊基於該PCI可相容之存取請求而與該PCI可相容裝置通訊。
  3. 如請求項1之設備,其中作業系統將使用該虛擬裝置而從該PCI可相容裝置啟動。
  4. 如請求項1之設備,其中建立該虛擬裝置作為該虛擬PCI裝置包含:決定針對該虛擬裝置之賣方識別符; 決定針對該虛擬裝置之裝置資訊;及決定針對該虛擬裝置之位址資訊。
  5. 如請求項4之設備,其中該處理裝置係進一步用於:應答於針對該PCI可相容裝置之該請求,發送針對該虛擬裝置之該賣方識別符、針對該虛擬裝置之該裝置資訊、及針對該裝置之該位址資訊。
  6. 如請求項1之設備,其中建立該虛擬裝置作為該虛擬I/O裝置包含:捨棄針對PCI可相容裝置之PCI枚舉請求;及決定針對該虛擬裝置之I/O位址範圍。
  7. 如請求項1之設備,其中該處理裝置係進一步用於:接收針對I/O位址的記憶體存取;當該虛擬裝置被建立作為該虛擬I/O裝置時,決定該I/O位址是否係與該虛擬裝置相聯結;及當該虛擬裝置被建立作為該虛擬I/O裝置時而當決定該I/O位址係與該虛擬裝置相聯結時,決定與該I/O位址相對應的該PCI裝置相聯結的PCI位址。
  8. 如請求項1之設備,其中該虛擬I/O裝置為虛擬記憶體對映輸入輸出(MMIO)裝置。
  9. 一種用以建立虛擬裝置之方法,該方法包含:藉處理裝置來接收針對週邊控制器互連(PCI)可相容裝置的PCI請求; 藉該處理裝置而基於該PCI可相容裝置來建立該虛擬裝置,其中基於該PCI可相容裝置來建立該虛擬裝置包含:當決定該PCI可相容裝置係與非PCI可相容的功能區塊相聯結時,建立該虛擬裝置作為虛擬PCI裝置;及當決定該PCI可相容裝置係與欲從該PCI可相容裝置啟動之作業系統相聯結時,建立該虛擬裝置作為該虛擬I/O裝置。
  10. 如請求項9之方法,其中該PCI可相容裝置係與軟體驅動器相聯結,其中該軟體驅動器係用於傳輸PCI可相容之存取請求給該虛擬裝置,其中該虛擬裝置提供該PCI可相容之存取請求給功能區塊,且其中該功能區塊係基於該PCI可相容之存取請求而與該PCI可相容裝置通訊。
  11. 如請求項9之方法,其中作業系統將使用該虛擬裝置而從該PCI可相容裝置啟動。
  12. 如請求項9之方法,其中建立該虛擬裝置為該虛擬PCI裝置包含:決定針對該虛擬裝置之賣方識別符;決定針對該虛擬裝置之裝置資訊;及決定針對該虛擬裝置之位址資訊。
  13. 如請求項12之方法,其進一步包含:應答於針對該PCI可相容裝置之該請求,發送針對該虛擬裝置之該賣方識別符、針對該虛擬裝置之該裝置資 訊、及針對該裝置之該位址資訊。
  14. 如請求項9之方法,其中建立該虛擬裝置作為該虛擬I/O裝置包含:捨棄針對PCI可相容裝置之PCI枚舉請求;及決定針對該虛擬裝置之I/O位址範圍。
  15. 如請求項9之方法,其進一步包含:接收針對I/O位址的記憶體存取;當該虛擬裝置被建立作為該虛擬I/O裝置時,決定該I/O位址是否係與該虛擬裝置相聯結;及當該虛擬裝置係建立為該虛擬I/O裝置時而當決定該I/O位址係與該虛擬裝置相聯結時,決定與該I/O位址相對應的該PCI裝置相聯結的PCI位址。
  16. 如請求項9之方法,其中該請求為針對該PCI可相容裝置之PCI枚舉請求。
  17. 一種包括指令的非暫時性機器可讀取儲存媒體,該等指令當由計算系統執行時使得該計算系統行使下列操作,包含:接收針對週邊控制器互連(PCI)可相容裝置的PCI請求;基於該PCI可相容裝置建立該虛擬裝置,其中基於該PCI可相容裝置建立該虛擬裝置的操作包含:當決定該PCI可相容裝置係與非PCI可相容的功能區塊相聯結時,建立該虛擬裝置作為虛擬PCI裝置;及當決定該PCI可相容裝置係與欲從該PCI可相容 裝置啟動之作業系統相聯結時,建立該虛擬裝置作為該虛擬I/O裝置。
  18. 如請求項17之非暫時性機器可讀取儲存媒體,其中該PCI可相容裝置係與軟體驅動器相聯結,其中該軟體驅動器係用於傳輸PCI可相容之存取請求給該虛擬裝置,其中該虛擬裝置提供該PCI可相容之存取請求給功能區塊,且其中該功能區塊係基於該PCI可相容之存取請求而與該PCI可相容裝置通訊。
  19. 如請求項17之非暫時性機器可讀取儲存媒體,其中作業系統係將使用該虛擬裝置而從該PCI可相容裝置啟動。
  20. 如請求項17之非暫時性機器可讀取儲存媒體,其中建立該虛擬裝置作為該虛擬PCI裝置的操作包含:決定針對該虛擬裝置之賣方識別符;決定針對該虛擬裝置之裝置資訊;及決定針對該虛擬裝置之位址資訊。
  21. 如請求項17之非暫時性機器可讀取儲存媒體,其中建立該虛擬裝置作為該虛擬I/O裝置的操作包含:捨棄針對該PCI可相容裝置之PCI枚舉請求;及決定針對該虛擬裝置之I/O位址範圍。
  22. 如請求項17之非暫時性機器可讀取儲存媒體,其中該等操作進一步包含:接收針對I/O位址的記憶體存取;當該虛擬裝置被建立作為該虛擬I/O裝置時,決定該 I/O位址是否係與該虛擬裝置相聯結;及當該虛擬裝置係建立為該虛擬I/O裝置時而當決定該I/O位址係與該虛擬裝置相聯結時,決定與該I/O位址相對應的該PCI裝置相聯結的PCI位址。
TW103107874A 2013-03-14 2014-03-07 用以建立虛擬裝置之設備與方法 TWI528290B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/072583 WO2014139115A1 (en) 2013-03-14 2013-03-14 Generic method to build virtual pci device and virtual mmio device

Publications (2)

Publication Number Publication Date
TW201502992A TW201502992A (zh) 2015-01-16
TWI528290B true TWI528290B (zh) 2016-04-01

Family

ID=51535808

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103107874A TWI528290B (zh) 2013-03-14 2014-03-07 用以建立虛擬裝置之設備與方法

Country Status (7)

Country Link
US (1) US20150026379A1 (zh)
EP (1) EP2972922A1 (zh)
KR (1) KR101698707B1 (zh)
CN (1) CN104995613B (zh)
RU (1) RU2611018C2 (zh)
TW (1) TWI528290B (zh)
WO (1) WO2014139115A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9454394B2 (en) * 2013-11-22 2016-09-27 Red Hat Israel, Ltd. Hypervisor dynamically assigned input/output resources for virtual devices
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
CN106648878B (zh) * 2015-10-29 2021-08-20 华为技术有限公司 一种系统及其动态分配mmio资源的方法
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10055160B2 (en) 2016-04-11 2018-08-21 Dell Products L.P. Systems and methods for BIOS emulation of PCIe device
KR102331926B1 (ko) 2017-11-17 2021-11-29 삼성전자주식회사 저장 장치를 포함하는 호스트 시스템의 동작 방법 및 저장 장치 제어기의 동작 방법
CN112988272A (zh) * 2021-03-22 2021-06-18 成都申威科技有限责任公司 一种在uboot中支持多路pcie rc的方法、装置及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664124A (en) * 1994-11-30 1997-09-02 International Business Machines Corporation Bridge between two buses of a computer system that latches signals from the bus for use on the bridge and responds according to the bus protocols
US6823418B2 (en) * 2001-06-29 2004-11-23 Intel Corporation Virtual PCI device apparatus and method
US7546599B2 (en) * 2004-12-20 2009-06-09 Intel Corporation Method, apparatus and system for instructing a virtual device from a virtual machine
CN101676894B (zh) * 2008-08-15 2011-08-17 北京北大众志微系统科技有限责任公司 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法
US20110106522A1 (en) * 2009-11-05 2011-05-05 Chinya Gautham N virtual platform for prototyping system-on-chip designs
WO2012023151A2 (en) * 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd I/o virtualization and switching system
US8769175B2 (en) * 2011-03-09 2014-07-01 International Business Machines Corporation Adjustment of post and non-post packet transmissions in a communication interconnect
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
WO2012164716A1 (ja) * 2011-06-02 2012-12-06 株式会社日立製作所 仮想計算機の制御方法及び仮想計算機システム
US9411654B2 (en) * 2011-12-16 2016-08-09 International Business Machines Corporation Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
WO2013159315A1 (en) * 2012-04-26 2013-10-31 Hewlett-Packard Development Company, L.P. Providing virtual optical disk drive

Also Published As

Publication number Publication date
US20150026379A1 (en) 2015-01-22
RU2015134102A (ru) 2017-02-16
CN104995613A (zh) 2015-10-21
KR101698707B1 (ko) 2017-01-20
EP2972922A1 (en) 2016-01-20
RU2611018C2 (ru) 2017-02-17
WO2014139115A1 (en) 2014-09-18
KR20150103373A (ko) 2015-09-10
CN104995613B (zh) 2018-02-16
TW201502992A (zh) 2015-01-16

Similar Documents

Publication Publication Date Title
TWI528290B (zh) 用以建立虛擬裝置之設備與方法
US9940123B1 (en) Updating device code through a bus
TWI477967B (zh) 用以實現gpu加速位址轉換之系統及方法以及圖形處理器
RU2599340C2 (ru) Использование аутентифицированных манифестов для обеспечения внешней сертификации многопроцессорных платформ
US8874953B2 (en) System and method of cloud testing and remote monitoring for integrated circuit components in system validation
US10496388B2 (en) Technologies for securing a firmware update
US9208105B2 (en) System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
US9423958B2 (en) System and method for managing expansion read-only memory and management host thereof
CN109426613B (zh) 在uefi中检索调试数据的方法及其电脑系统
US9612930B2 (en) Providing autonomous self-testing of a processor
US11573845B2 (en) Remote debug for scaled computing environments
US9881680B2 (en) Multi-host power controller (MHPC) of a flash-memory-based storage device
US10491736B2 (en) Computer system and method thereof for bluetooth data sharing between UEFI firmware and OS
TWI603199B (zh) 基於能力的裝置驅動程式架構
TW201015545A (en) Light weight and high throughput test case generation methodology for testing cache/TLB intervention and diagnostics
TW201734766A (zh) 使用處理器指令前綴的二進制轉譯支援
US11295000B1 (en) Static configuration of accelerator card security modes
Arzenšek et al. Criteria for selecting mobile application testing tools
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
CN107169378B (zh) 一种计算机开机加密的方法和设备
CN110383260A (zh) 耦合到计算机总线的设备的功能状态