TW201629783A - 模擬端點組態 - Google Patents

模擬端點組態 Download PDF

Info

Publication number
TW201629783A
TW201629783A TW104132725A TW104132725A TW201629783A TW 201629783 A TW201629783 A TW 201629783A TW 104132725 A TW104132725 A TW 104132725A TW 104132725 A TW104132725 A TW 104132725A TW 201629783 A TW201629783 A TW 201629783A
Authority
TW
Taiwan
Prior art keywords
configuration
analog
pci
space
access request
Prior art date
Application number
TW104132725A
Other languages
English (en)
Other versions
TWI655542B (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 TW201629783A publication Critical patent/TW201629783A/zh
Application granted granted Critical
Publication of TWI655542B publication Critical patent/TWI655542B/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/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation

Abstract

用於藉由一周邊裝置模擬一組態空間之技術可包含:接收一組態存取請求;判定該組態存取請求係針對除該周邊裝置之一原生組態空間之外的一組態空間;及自一模擬組態空間擷取一模擬組態。然後可藉由使用該模擬組態來服務該組態存取請求。

Description

模擬端點組態 [相關申請案交叉參照]
本申請案係2014年10月5日申請之以引用方式整體併入本文中之美國臨時申請案第62/059,914號之一非臨時申請案並主張該美國臨時申請案之優先權。
計算系統可包含多個周邊裝置。周邊裝置可擴展、調適及/或修改計算系統之功能性。一周邊裝置可實施一或多個功能。舉例而言,一周邊裝置可係提供網路連接性功能之一網路介面卡,或提供資料儲存功能之一大容量儲存裝置,等。
某些周邊裝置可包含用以控制周邊裝置之行為之組態暫存器。舉例而言,若周邊裝置係一周邊組件互連(PCI)相容裝置,則周邊裝置可具有一組PCI組態空間暫存器。組態暫存器可包含可經讀取以指示周邊裝置之能力之欄位,且可包含可經寫入以啟用、停用或更改周邊裝置之功能之欄位。一般而言,組態暫存器實施為實體硬體暫存器,且該等欄位係根據周邊裝置之特定能力及功能而經定義及硬編碼。因此,一旦製造,周邊裝置之組態暫存器之定義通常便係固定的且無法改變。
100‧‧‧計算系統
102‧‧‧處理器
104a‧‧‧根複合體
104b‧‧‧根複合體
106‧‧‧記憶體子系統
108‧‧‧交換機
110a‧‧‧端點
110b‧‧‧端點
110c‧‧‧端點
112a‧‧‧端點/舊有端點
112b‧‧‧端點/舊有端點
112c‧‧‧端點/舊有端點
114‧‧‧橋接器
116‧‧‧共用周邊組件互連匯流排/匯流排
118a‧‧‧匯流排
118e‧‧‧匯流排
118f‧‧‧匯流排
120‧‧‧Wi-Fi轉接器
122‧‧‧無線存取點
124‧‧‧監視器
126‧‧‧揚聲器
128‧‧‧閘道器裝置
130‧‧‧網路
200‧‧‧周邊裝置
202‧‧‧匯流排
210‧‧‧匯流排介面核心
212‧‧‧原生組態空間
214‧‧‧匯流排介面
220‧‧‧組態管理模組
230‧‧‧本機硬體
232‧‧‧作業系統
236‧‧‧模擬模組
240‧‧‧記憶體
242‧‧‧模擬組態空間
300‧‧‧高速周邊組件互連周邊裝置
302‧‧‧匯流排
310‧‧‧高速周邊組件互連核心
312‧‧‧原生組態空間
312a‧‧‧進階錯誤報告能力暫存器
312b‧‧‧訊息信號中斷擴展能力暫存器
312c‧‧‧電源預算能力暫存器
314‧‧‧匯流排介面
314a‧‧‧網路協定層/交易層
314b‧‧‧網路協定層/資料連結層
314c‧‧‧網路協定層/媒體存取層
314d‧‧‧網路協定層/實體層
316‧‧‧類型0/1共同暫存器標頭
320‧‧‧組態管理模組
330‧‧‧本機硬體
332‧‧‧作業系統
332a‧‧‧使用者模式
332b‧‧‧特權模式
334‧‧‧安全模式
336‧‧‧模擬模組
340‧‧‧記憶體
342‧‧‧模擬組態空間
400‧‧‧周邊裝置
408‧‧‧組態交易記錄單元
410‧‧‧匯流排介面核心
412‧‧‧原生組態空間
430‧‧‧模擬模組
440‧‧‧記憶體
442‧‧‧模擬組態空間
500‧‧‧周邊裝置
508‧‧‧組態交易記錄單元
510‧‧‧匯流排介面核心
512‧‧‧原生組態空間
530‧‧‧模擬模組
540‧‧‧記憶體
542‧‧‧模擬組態空間
600‧‧‧周邊裝置
602‧‧‧高速周邊組件互連埠
604‧‧‧內部路由
606a‧‧‧內部路由
606m‧‧‧內部路由
610a‧‧‧實體功能
610m‧‧‧實體功能
612a‧‧‧組態資源
612m‧‧‧組態資源
614a‧‧‧位址轉譯快取記憶體
614m‧‧‧位址轉譯快取記憶體
618a‧‧‧實體資源
618m‧‧‧實體資源
620a至620c‧‧‧虛擬功能
621a至621c‧‧‧虛擬功能
1000‧‧‧構架
1002‧‧‧使用者
1004(1)‧‧‧使用者計算裝置
1004(N)‧‧‧使用者計算裝置
1006‧‧‧應用程式
1008‧‧‧網路
1010‧‧‧服務提供者電腦
1012‧‧‧第三方電腦
1014‧‧‧記憶體
1016‧‧‧處理器
1018‧‧‧記憶體
1020‧‧‧處理器
1022‧‧‧儲存裝置
1024‧‧‧通信連接
1026‧‧‧輸入/輸出裝置
1028‧‧‧作業系統
1030‧‧‧資料儲存區
1032‧‧‧管理緩衝器
1040‧‧‧記錄緩衝器
1100‧‧‧實例性環境/系統
1102‧‧‧電子用戶端裝置/用戶端裝置
1104‧‧‧網路
1106‧‧‧網頁伺服器
1108‧‧‧應用程式伺服器
1110‧‧‧資料儲存區
1112‧‧‧生產資料
1114‧‧‧記錄資料
1116‧‧‧使用者資訊
將參考圖式描述根據本發明之各種實施例,在圖式中:圖1圖解說明根據某些實施例之包含多個周邊裝置之一計算系統 之一實例;圖2圖解說明根據某些實施例之具有一模擬組態空間之一周邊裝置之一方塊圖;圖3圖解說明根據某些實施例之具有一模擬組態空間之一周邊裝置之一方塊圖;圖4圖解說明根據某些實施例之服務一組態讀取交易之一周邊裝置之一實例;圖5圖解說明根據某些實施例之服務一組態寫入請求之一周邊裝置之一實例;圖6圖解說明根據某些實施例之經組態以實施單根輸入/輸出虛擬化(SR-IOV)之一周邊裝置之一方塊圖;圖7圖解說明根據某些實施例之用於服務一組態存取請求之一流程圖;圖8圖解說明根據某些實施例之用於服務一組態存取請求以讀取一組態暫存器之一程序之一實例;圖9圖解說明根據某些實施例之用於服務一組態存取請求以寫入一組態暫存器之一程序之一實例;圖10圖解說明根據某些實施例之本文中所描述之包含經由一或多個網路連接之一或多個服務提供者電腦及/或一使用者裝置之特徵及系統之一實例性構架;及圖11圖解說明根據某些實施例之用於實施態樣之一計算系統之一實例性環境之態樣。
在以下說明中,將描述各種實施例。出於闡釋目的,陳述特定組態及細節以便提供對實施例之一透徹理解。然而,熟習此項技術者亦將明白可實踐該等實施例而無需特定細節。此外,可省略或簡化周 所周知之特徵以便不使所描述之實施例便模糊。
計算系統可包含多個周邊裝置。周邊裝置可擴展、調適及/或修改計算系統之功能性。舉例而言,周邊裝置可提供儲存、網路連接性及/或對一計算系統之音訊及視訊支援等。周邊裝置通常透過一或多個匯流排與一計算系統通信。一匯流排上之資料傳送可由一匯流排協定定義。匯流排協定之實例可包含匯流排協定(例如,PCI、擴展PCI(PCI-eXtended;PCI-X)、高速PCI(PCI Express;PCIe)、PCI派生物,諸如圖形加速埠(AGP)等)之周邊組件互連(PCI)族,以及其他。
本文中所描述之技術包含模擬一周邊裝置之某些或全部組態空間之組件及方法。模擬組態空間可由一周邊裝置用以將其本身表示為具有不同能力之不同類型之周邊裝置。舉例而言,模擬組態空間可允許一周邊裝置將其本身在某些例項表示為一網路介面卡,或在其他例項中表示為一視訊卡,等。模擬組態空間亦可經動態地修改、擴增、加倍,或替換為一完全不同組態空間。另外,多個模擬組態空間可維持用於不同功能。模擬組態空間亦可需要較少硬體。舉例而言,實施單根I/O虛擬化(SR-IOV)之一裝置可包含如下之模擬組態:其可針對任一數目個實體及/或虛擬功能而經按比例調整而無需針對每一功能之實體硬體暫存器。此外,由模擬組態空間模擬之功能之數目可經動態地修改。
本文中所描述之技術亦可提供一模擬模組以促進對模擬組態空間之存取。模擬模組可實施為軟體、硬體或軟體與硬體之一組合(例如,由周邊裝置之一處理器執行之軟體)。模擬模組可與模擬組態空間相互作用,包含對組態暫存器之讀取及寫入表示。
I. 系統
圖1圖解說明包含多個周邊裝置之一計算系統100之一實例。周邊裝置可包含可附接至一計算系統以將功能性添加至該系統之硬體裝 置及/或包含硬體與軟體之一組合之裝置。周邊裝置之實例包含儲存裝置、視訊卡、音訊卡、有線及/或無錢網路轉接器、用以提供至系統之額外埠(諸如,串列及/或並列埠)之轉接器,以及橋接器、集線器及/或提供用於額外周邊裝置之埠之交換機,以及其他。一般而言,周邊裝置可與計算系統連接及斷開連接以改變系統之功能性。在某些情形中,因添加或移除一周邊裝置而必須將計算系統斷電。在其他情形中,可在為電腦系統供電時附接或移除周邊裝置(例如,通常稱為「熱交換」或「熱插拔」)。
圖1中之實例圖解說明包含實施周邊組件互連(PCI)匯流排標準之一或多個變化形式之周邊器件之一系統。一匯流排係在一計算系統內或在一計算系統與其他裝置之間傳送資料之一通信通道。一標準化匯流排協定係各個製造商已針對其定義並採用一規範之一資料傳送協定。相容裝置與實施匯流排協定之計算系統相容,且反之亦然。PCI描述一相關標準化匯流排協定族。如本文中所使用,PCI包含原始PCI標準、擴展PCI(PCI-X),圖形加速埠(AGP),以及高速PCI(PCIe,亦稱為PCI-XP)。如本文中所使用,術語「PCI」可用以描述匯流排協定之PCI族中之任何協定。在圖1中所展示之實例中,PCI經提供為可由一計算系統實施之一匯流排協定之實例。其他匯流排協定可包含(舉例而言)行業標準構架(ISA)、擴展ISA(EISA)、視訊電子標準協會(VESA)、微通道、匯流排之進階技術附件(ATA)族中之任一者,等。所圖解說明之實例亦可以標準化匯流排協定、專屬匯流排協定之一組合及/或以標準化及專屬匯流排協定之一組合而實施。
實例性計算系統100可包含一處理器102、一或多個根複合體104a至104b、一記憶體子系統106、一交換機108、一橋接器114,以及數個周邊裝置。周邊裝置可稱為「端點」。處理器102可係一通用計算單元(諸如,由Intel®、AMD®、ARM®、Qualcomm®等製造之通用計算 單元),且一般而言能夠執行軟體程式碼。處理器102可包含多個處理核心。
根複合體104a可係將處理器100及記憶體子系統106連接至端點110a至110c、112a至112c之一硬體裝置或一硬體與軟體裝置。端點110a至110c、112a至112c可直接連接至根複合體104a。另一選擇係或另外,端點110a至110c、112a至112c可透過一交換機108或一集線器等連接至根複合體104a。橋接器114亦可連接至根複合體104a。根複合體104a可轉送交易及回應往返於處理器102,且/或可代表處理器102產生且回應於交易。在某些情形中,根複合體104a亦可將交易自一個端點110a至110c、112a至112c路由至另一個端點,及/或在端點110a至110c、112a至112c、交換機108及橋接器114之間路由交易。根複合體104a可為電腦系統100提供服務,諸如一熱插拔控制器、電源管理控制器、中斷控制器及/或錯誤偵測及報告。在某些情形中,根複合體104a及/或104b可實施為一主機系統(例如,處理器102)之部分。在某些實施例中,計算系統100可包含一個以上根複合體。每一根複合體可連接至一不同組之周邊裝置。在某些情形中,周邊裝置中之一或多者可連接至一個以上根複合體。舉例而言,如在圖1中所圖解說明,端點110a可連接至根複合體104a及104b兩者。
記憶體子系統106提供對可由計算系統100使用之資料之暫時或長期儲存。記憶體子系統106可包含動態隨機存取記憶體(DRAM)(例如,同步DRAM(SDRAM)、雙資料速率(DDR)SDRAM等)及/或其他類型之記憶體,諸如靜態隨機存取記憶體(SRAM)、快閃記憶體等
端點110a至110c、112a至112c係可產生及/或回應於資料交易之周邊裝置。舉例而言,端點110a至110c、112a至112c可係「請求者」(交易產生器)及/或「完成者」(交易回應器)。在PCI實施中,端點110a至110c可包含實施PCIe之周邊裝置,且端點112a至112c可包含實 施舊有PCI之周邊裝置。端點110a至110c、112a至112c可透過一共用匯流排連接至計算系統100。舉例而言,舊有端點112b至112c連接至一共用PCI匯流排116。另一選擇係或另外,端點110a至110c、112a至112c可依一交換組構拓撲而經連接。一交換組構拓撲可包含連接至組構之裝置之間的點對點連接,且可包含用於在裝置之間傳遞訊息之一路由系統。在一交換組構中,交易可跨多個實體連結擴散。組構中之裝置之間的連接118a至118f亦可稱為匯流排。
交換機108用作各個周邊裝置(包含根複合體104a以及端點110a至110c、112a)之間的一橋接器。交換機108可在端點110a至110c、112a之間且在端點110a至110c、112a及根複合體104路由交易。交換機108亦可提供對設定傳入及傳出資料交易之優先級之仲裁。根複合體104及端點110a至110c、112a可將交換機108看作另一周邊裝置請求者及/或完成者。
橋接器114可提供至其他匯流排或交換組構之連接性。其他匯流排或交換組構可實施一PCI變化形式或另一協定。舉例而言,在圖1之實例中,橋接器114提供至實施舊有PCI標準之一匯流排之連接性。橋接器114可包含用以自一個匯流排標準(諸如,舊有PCI)轉譯至另一協定(諸如,PCIe)之機構。
在圖1之實例中,諸如處理器102、根複合體104a至104b、記憶體子系統106、交換機108、橋接器114以及端點110a至110c、112a至112c之組件圖解說明為單獨組件。在某些實施中,此等組件中之一或多者可組合成一單個組件。在其他實施中,此等組件中之一或多者可實施於一單個晶片上。在其他實施中,此等組件中之一或多者可部分或全部實施於硬體中、軟體中,及/或硬體與軟體之一組合中。
如上文所述,端點或周邊裝置可添加至及/或修改計算系統之功能性100。舉例而言,一個端點110a可實施一Wi-Fi轉接器120。使用 Wi-Fi轉接器120,計算系統100可能夠與一無線存取點122無錢地通信,且藉此存取一網路。作為另一實例,另一端點110b可實施一視訊卡。一視訊卡可包含一埠以連接一監視器124或其他顯示裝置。作為又一實例,計算系統100可包含實施一聲卡之一舊有端點112a。一聲卡可包含接受用於一揚聲器126或其他音訊輸出裝置之一插頭之一埠或插孔。作為再一實例,一端點110c可實施一乙太網路轉接器,且提供至一閘道器裝置128(諸如,一DSL或纜線數據機)之一連接。使用閘道器裝置128,計算系統100可存取一網路130。
如由此等實例所圖解說明,不同類型之周邊裝置(包含網路轉接器、視訊卡、音訊卡,以及其他)可連接至系統。在某些情形中,一周邊裝置可實施一個以上功能裝置。舉例而言,在某些情形中,一單個端點可包含用於輸出至一監視器124之一視訊卡及用於輸出至一揚聲器126之一聲卡兩者。在某些實施中,功能亦可(舉例而言)藉由將子卡或外部裝置連接至周邊裝置上之擴充槽或外部埠而添加至一周邊裝置。在某些實施例中,實施PCI之周邊裝置可包含高達八個單獨功能。在此等實施中,PCI裝置可使用一類別代碼及選用子類別代碼指示所實施之一或多個功能。類別代碼及選用子類別代碼可位於一組態暫存器中。在下文進一步詳細地描述組態暫存器。
表1列出PCI裝置類別代碼及其描述。類別代碼給定為一8位元十六進位值。
當一計算系統(諸如,圖1中圖解說明之計算系統100)初始地通電時,處理器102可未覺察到連接至系統之任何端點。處理器102可覺察到根複合體104a至104b,且可能亦覺察到根複合體連接至一或多個匯流排。處理器102可藉由執行一程序來掃描及組態系統而發現端點110a至110c、112a至112c以及其提供之功能。此程序可稱為一列舉程序。在一列舉程序期間,處理器102上之軟體執行可掃描連接至根複合體104之每一匯流排118a、118e、118f,且識別附接至每一匯流排118a、118e、118f之每一端點110a至110c、112a至112c、交換機108及/或橋接器114。處理器102可進一步指導根複合體104起始讀取及寫入每一端點110a至110c、112a至112c、交換機108及/或橋接器114中之組態暫存器之交易。組態讀取交易可向處理器102通知每一端點110a至110c、112a至112c、交換機108及/或橋接器114之裝置之能力及類型。組態寫入交易可用以組態並控制每一端點110a至110c、112a至 112c、交換機108及/或橋接器114。舉例而言,在列舉期間,可為每一端點110a至110c、112a至112c、交換機108及/或橋接器114指配一匯流排及裝置數目。組態暫存器通常實施為周邊裝置之實體硬體暫存器,且一周邊裝置中之組態暫存器之定義通常係固定的且無法動態地改變。
如上文所述,一端點可實施多個功能。一列舉程序亦可發現由每一端點實施之功能。在某些情形中,每一功能可包含其自己的組態暫存器集合。特定讀取功能組態暫存器可向處理器102通知功能之性質(例如,功能實施一視訊驅動程式)。特定功能組態暫存器亦可儲存特定於功能之組態及設定。特定寫入功能暫存器可組態計算系統或處理器102所需之功能。
在發現交換機108後,處理器102旋即亦可掃描並組態連接至交換機108之端點110a至110c。在發現橋接器114後,處理器102旋即亦可掃描並組態附接至橋接器114之另一側上之匯流排116之端點112b至112c。
在某些情形中,實施一模擬組態空間之一周邊裝置可向計算系統表示其本身為不同周邊裝置。舉例而言,實施一模擬組態空間之一周邊裝置可在某些例項中表示其本身為具有特定於一網路介面卡之組態暫存器之一網路介面卡,或在其他例項中表示其本身為具有特定於此一周邊裝置之組態暫存器之一不同周邊裝置(諸如,一視訊卡或一聲卡)。模擬組態空間亦可經修改、加倍,或替換為一完全不同組態空間。另外,多個模擬組態空間可維持用於一特定功能。舉例而言,一計算系統可運行多個虛擬機器,其中每一虛擬機器運行一不同作業系統。每一虛擬機器可需要針對由一周邊裝置提供之同一功能之一不同組態。在此類情形中,一周邊裝置中之模擬組態空間可提供針對每一虛擬機器之一模擬組態。模擬組態空間亦可需要較少硬體。舉例而 言,包含SR-IOV之一裝置可包含針對任一數目個實體及/或虛擬功能之模擬組態,而不需要針對每一功能之實體硬體暫存器。
II. 模擬組態空間
圖2圖解說明根據某些實施例之實施一模擬組態空間之一周邊裝置200之一實例。舉例而言,周邊裝置200可用以替換圖1所圖解說明之端點及/或根複合體中之一或多者。儘管周邊裝置200展示為一獨立裝置,但應注意周邊裝置200之組件可與一主機系統(例如,主機處理器)整合,使得周邊裝置200及主機系統可實施於同一矽晶粒或封裝上。舉例而言,周邊裝置200可係在同一晶片上實施為一主機處理器之一積體圖形裝置。所圖解說明之實例性周邊裝置可實施任何匯流排協定,諸如PCI協定族、ISA、EISA、VESA、多通道等。一匯流排協定可提供對一周邊裝置預期包含之具有指定位址之組態暫存器的定義。圖2之周邊裝置200可模擬針對所實施匯流排協定定義之組態位址空間之至少一部分。在某些情形中,周邊裝置200亦可包含不被模擬之組態暫存器,諸如用於實施周邊裝置之基本功能性(例如,用於設定匯流排速度等)及/或實施一特定匯流排協定之所有周邊裝置所共同之基本功能性之組態暫存器。此等不被模擬組態暫存器可稱為「原生」組態空間。
在某些實施中,模擬係指一程式或裝置模仿另一程式或裝置之能力。舉例而言,圖2之周邊裝置200可包含用以模擬不同周邊裝置之一或多個功能之模擬組態空間。舉例而言,周邊裝置200可在一種內容脈絡中模擬一視訊卡,且在另一內容脈絡中模擬一大容量儲存裝置。作為另一實例,實施一個功能且由一家公司製造之周邊裝置200可能夠模擬一不同公司且實施相同功能之一周邊裝置。在某些實施例中,周邊裝置200可用以模擬一個以上周邊裝置,且因此在某些情景中,周邊裝置200可模擬一整個周邊子系統。
周邊裝置200可包含一匯流排介面核心210、一組態管理模組220、本機硬體230,以及一記憶體240。周邊裝置200可經由一匯流排202與一計算系統通信。匯流排202可實施一特定匯流排協定。
匯流排介面核心210可包含周邊裝置200與匯流排202通信所需之電路及邏輯。舉例而言,匯流排介面核心210可包含用於與匯流排202通信之一匯流排介面214。匯流排介面214可包含至匯流排202之一實體連接,包含用以管理至匯流排202之連結之任何電性質之電路。匯流排介面214可進一步包含用於以下之邏輯:同步化至匯流排202,將傳入交易解碼並將傳出交易編碼,以及/或偵測並可能地管理傳入或傳出資料中之錯誤,以及其他操作。
匯流排介面核心210亦可包含一原生組態空間212。在不包含一模擬組態空間之周邊裝置中,通常,匯流排介面核心210包含(舉例而言)由匯流排協定定義的周邊裝置之所有組態暫存器。此外,在此類實施中,匯流排介面核心210通常服務對組態暫存器之所有讀取及寫入交易(其亦可稱為組態存取請求或組態存取),且提供對匯流排202之一回應(若需要)。相反,在實例性周邊裝置200中,原生組態空間212可包含係周邊裝置200之組態暫存器之一子組的原生組態暫存器。舉例而言,原生組態暫存器可與可係針對一給定匯流排協定之所有周邊裝置所共同之基本功能性(例如,用於設定匯流排速度等)相關聯,且/或否則可係不必或不便模擬之組態暫存器。在某些實施例中,亦可模擬原生組態空間212。
在某些實施中,匯流排介面核心210可偵測定址至原生組態空間212之讀取及寫入交易。在此類實施中,匯流排介面核心210可服務被引導至原生組態暫存器212之組態交易。此外,在此等實施中,定址至非原生組態空間212內之組態空間之組態交易可被引導至組態管理模組220。在其他實施中,匯流排介面核心210將所有組態讀取及寫入 交易(而不管其被定址至何處)引導至組態管理模組220,且組態管理模組220可判定該交易是否針對原生組態空間212。
組態管理模組220可提供被引導至組態暫存器之讀取及寫入交易之管理。在某些實施中,組態管理模組220可提供交易記錄。交易記錄可由記錄或追蹤傳入組態交易之硬體及/或軟體實施。在接收一組態交易後,匯流排介面核心210旋即可用組態管理模組220來記錄交易。匯流排介面核心210可繼續其他操作,而無需等待所記錄組態交易完成。組態交易可自交易記錄讀取且(舉例而言)在本機硬體230有時間時由本機硬體230服務。本機硬體230可在讀取了一交易時自記錄移除該交易,或可在交易已經執行且回應於或以其他方式在記錄中指示該交易已被服務或在被服務之程序中之後移除該交易。
本機硬體230可實施為經調適以處理組態交易之一或多個本機處理器、一或多個本機處理器核心、一本機處理器叢集、可程式化閘陣列,或控制邏輯電路。在包含多個處理器或處理器核心之實施中,每一處理器或處理器核心可獨立地或共操作地執行軟體程式碼。在此類實施中,每一處理器或處理器核心可並行地服務來自組態管理模組210之多個交易。在包含一個處理器之實施中,處理器可係多執行緒的,且亦能夠並行地服務多個交易。本機硬體230可運行一作業系統232。作業系統232可係一商業作業系統(諸如,Linux、Windows®、iOS®等),或可係一專屬作業系統。
本機硬體230可實施或執行一模擬模組236。在某些實施例中,由於組態交易可需要快速回應時間,因此模擬模組可在一安全環境中執行或在被賦予充分特權之情況下執行以使得對組態交易之處理不中斷。模擬模組236可自組態管理模組220接收交易(包含組態交易),且可服務彼等交易。服務一交易可包含:識別交易之類型(例如,讀取及/或寫入),識別交易之來源,識別交易被引導至的目的地,執行交 易,及/或產生對交易之一回應(若需要)。舉例而言,一組態讀取交易可包含讀取一組態暫存器且用自暫存器讀取之資訊做出回應。作為另一實例,一組態寫入暫存器可包含更新組態暫存器之內容。在某些情形中,可用對已完成寫入交易之確認來對一組態寫入做出回應。
在某些實施中,模擬模組236可判定一組態交易是被引導至原生組態空間212還是模擬組態空間242。當一組態交易被引導至原生組態空間212時,模擬模組236可匯流排介面核心210與通信以讀取或寫入原生組態暫存器。當一組態讀取被引導至模擬組態空間242時,模擬模組236可自模擬組態空間242讀取表示組態暫存器之內容之一值。當一組態寫入被引導至模擬組態空間242時,模擬模組236可寫入或更新模擬組態空間242中之表示組態暫存器之內容之資料。在某些實施中,一組態交易可被引導至與一或多個功能相關聯之組態暫存器,在該情形中,模擬模組236可識別功能並存取特定於彼功能之模擬組態暫存器。在其他實施中,一組態交易可來自多個來源中之一者,諸如可運行不同作業系統之數個虛擬機器中之一者。在此類實施中,模擬模組236可識別來源,且存取可被指定或適於彼來源之模擬組態暫存器。
記憶體240提供對可由本機硬體230對其進行操作之資料之儲存。記憶體模組240可包含DRAM(例如,SDRAM、DDR-SDRAM)、SRAM、快閃,或某一其他記憶體類型,或其任一組合。在某些實施例中,記憶體240可實施為一外部記憶體模組,或實施為周邊裝置200之一內部記憶體,或其一組合。記憶體模組240可儲存一模擬組態空間242。模擬組態空間242可包含對針對任一數目個周邊裝置經定義之所有或某些組態暫存器位址空間之表示。在某些實施中,模擬組態空間242包含可影響周邊裝置之一功能之操作之組態空間。在某些實施中,模擬組態空間242不包含可係實施匯流排協定之所有周邊裝置的 基本及/或共同之原生組態空間,或者可不必或不便模擬之原生組態空間。模擬組態暫存器可包含如下之欄位:僅讀取,讀取後即清除(clear-on-read)(或具有「讀取後即清除」位元),可係可讀取且可寫入兩者,可係寫入0便清除(write-zero-to-clear)(或具有「寫入0便清除」位元),以及/或寫入1便設定(write-one-to-set)(或具有「寫入1便設定」位元)。
模擬組態空間242可作為一文字檔案、源程式碼、目的程式碼,作為一指令碼,及/或依可由模擬模組236讀取之某一其他格式儲存於記憶體240中。在某些實施例中,模擬組態242可經加密。在某些實施中,模擬組態242可經修改或替換。舉例而言,可(例如)透過網際網路上之一網站提供額外模擬組態暫存器或模擬組態暫存器之更新版本。在此等實施中,額外或經更新模擬組態暫存器可自網際網路下載並上載至記憶體240。在某些實施中,記憶體240可儲存多個模擬組態空間242,或同一模擬組態空間242之多個版本。
圖3圖解說明根據某些實施例之一周邊裝置300之一PCIe實施之一實例。圖3之PCIe周邊裝置300可包含一PCIe核心310、一組態管理模組320、本機硬體330,以及一記憶體340。PCIe周邊裝置300可透過一匯流排302與一計算系統通信。匯流排302可實施PCIe協定。
PCIe核心310可包含支援使用PCIe之一匯流排上之通信所需之功能性之至少某些功能性。PCIe核心310可包含一匯流排介面314。匯流排介面314可實施管理傳入及傳出交易之網路協定層314a至314d。對於出站交易,交易層314a可與由一交易起始者(諸如,PCIe核心310本身、組態管理模組320,或本機硬體330)提供之資訊一起形成一封包。資料連結層314b可將額外資訊(舉例而言,可由交易之接收者使用來驗證資訊之完整性之錯誤檢查資訊及/或封包標頭資訊)添加至封包。媒體存取層314c可提供定址資訊,諸如交易之來源及目的地之實 體位址。實體層314d可將封包編碼成電信號且將封包傳輸至匯流排302上。對於傳入交易,實體層314d自匯流排302接受一封包並將封包解碼。媒體存取層314c可處理交易之來源及目的地位址。資料連結層可314b可剖析封包標頭資訊並檢查錯誤。交易層314a可將含於封包中之資訊轉變成可由PCIe核心310及/或本機處理器330處理之一格式。
PCIe核心310亦可包含原生組態空間312。原生組態空間312可包含與基本功能性相關聯,及/或可係所有基於PCIe之周邊裝置所共同,及/或可不必或不便模擬的組態暫存器。此類暫存器之實例包含一類型0/1共同暫存器標頭316、進階錯誤報告能力暫存器312a、訊息信號中斷擴展(MSI-X)能力暫存器312b,以及電源預算能力暫存器312c。可(舉例而言)在模擬組態空間324中發現任何剩餘組態暫存器空間。在某些實施例中,亦可模擬原生組態空間312。因而,舉例而言,在某些實施例中,一基於PCIe之周邊裝置可使其所有PCI組態空間暫存器被模擬。
在某些實施中,PCIe核心310可偵測定址至原生組態空間312之讀取及寫入交易。在此類實施中,PCIe核心310可服務被引導至原生組態空間312之組態交易。此外,在此等實施中,定址至不在原生組態空間312內之一組態空間之組態交易可被引導至組態管理模組320。在其他實施中,PCIe核心310將所有組態讀取及寫入交易引導至組態管理模組320,而不管其是否定址至原生組態空間312。
組態管理模組320可提供對被引導至組態暫存器之讀取及寫入交易之管理。在某些實施中,組態管理模組310可提供交易記錄。在接收到一組態交易後,PCIe核心310旋即可用組態管理模組320來記錄交易。PCIe核心310然後可繼續其他操作。組態交易可自記錄讀取並由本機硬體330服務。本機處理器330可在讀取了一交易時自記錄移除該交易,或可在交易已經執行且回應於或以其他方式在記錄中指示該交 易已被服務或在被服務之程序中之後移除該交易。
本機硬體330可包含經調適以處理組態交易之一或多個處理器、一或多個處理器核心、一處理器叢集、可程式化閘陣列,或控制邏輯電路。本機硬體330可運行一作業系統332。作業系統332可提供一使用者模式332a及一特權模式332b。使用者模式332a可執行(舉例而言)已經載入至PCIe周邊裝置300中之使用者應用程式。特權模式332b可執行系統功能。
本機硬體330亦可包含操作之一安全模式334(例如,ARM安全模式等)。在安全模式334中運行之一程式或軟體可與本機硬體330內之其他程式隔離。舉例而言,作業系統模組332及/或在作業系統模組332之頂部運行之應用程式可無法存取在安全模組334內運行之模組。相反地,在某些實施例中,在安全模式334內運行之程式可無法影響在安全模組234外部運行之模組。因此,安全模式334可提供其中一程式可在無來自可在本機硬體330內執行之其他程式之干涉或干擾之情況下執行之一環境。在安全模式334中執行之程式可經高度最佳化,且/或可具有優先於其他程式之優先級。在某些實施例中,安全模式334可實施為在本機硬體330內邏輯上地及/或實體地經隔離之一硬體及/或軟體區段。
在某些實施例中,一模擬模組336可實施為本機硬體330中之模擬控制邏輯電路,及/或實施為在安全模式334中執行之模擬軟體。模擬軟體可稱為ConfigSpace模擬軟體(CSES)。模擬模組336可自組態管理模組320接收交易(包含組態交易),且可服務彼等交易。舉例而言,服務一組態讀取交易可包含自一模擬組態空間讀取一組態暫存器,且用自暫存器讀取之資訊來做出回應。作為另一實例,服務一組態寫入暫存器可包含更新模擬組態空間中之組態暫存器之內容。在某些情形中,可用對已完成寫入交易之確認來對一組態寫入做出回應。
在某些實施中,模擬模組336可接收被引導至周邊裝置之某些或所有組態交易。在某些實施中,模擬模組336可判定一組態交易是被引導至原生組態空間312還是模擬組態空間342。當一組態交易被引導至原生組態空間312時,模擬模組336可PCIe核心310與通信以讀取或寫入原生組態暫存器。在某些實施例中,組態管理模組可處理原生組態暫存器存取而不涉及模擬模組336。當一組態讀取被引導至模擬組態342時,模擬模組336可自模擬組態空間342讀取表示組態暫存器之內容之一值。當一組態寫入被引導至模擬組態空間342時,模擬模組336可寫入或更新模擬組態空間342中之表示組態暫存器之資料。在某些實施中,模擬模組336可本身地內部模擬一或多個組態暫存器。在此類實施中,模擬模組336可讀取或寫入其對一組態暫存器之內部表示,其可不需存取模擬組態空間342。
在某些實施中,模擬模組336可使用PCI中斷機構以處理模擬組態暫存器存取。舉例而言,模擬模組336可將PCIe核心0中斷定義為一安全中斷,且將一處理常式暫存至此中斷。一中斷處理常式可係在接收到一中斷時觸發之一獨立軟體功能。當觸發PCIe核心0中斷時,可警告模擬模組336,且模擬模組336可開始服務來自組態管理模組320之交易。藉由將PCIe核心0中斷定義為安全的,可對不安全模組(諸如,作業系統模組332)隱藏或遮蔽該中斷。在某些實施例中,一安全中斷亦可中斷一不安全中斷處理常式。
記憶體340提供對可由本機硬體330對其進行操作之資料之儲存。記憶體340可包含DRAM(例如,SDRAM、DDR-SDRAM等)、SRAM、快閃記憶體,或某一其他記憶體類型或其組合。在某些實施例中,記憶體340可實施為一外部記憶體模組,或實施為周邊裝置200之一內部記憶體,或其一組合。記憶體340可儲存一模擬組態空間342。模擬組態空間342可包含對4KB之PCIe組態位址中之所有或某 些之表示。在某些實施中,模擬組態空間342可包含PCIe擴展能力暫存器。舉例而言,模擬組態空間342可包含進階錯誤報告能力暫存器、虛擬通道能力暫存器、裝置序列號暫存器,及/或電源預算能力暫存器。另一選擇係或另外,模擬組態空間342可包含SR-IOV擴展能力暫存器。在此類情形中,模擬組態空間342可包含允許控制SR-IOV實體及虛擬功能之能力暫存器。在下文以進一步細節論述SR-IOV。
在某些實施中,可動態地替換及/或修改模擬組態空間342。舉例而言,可在模擬組態空間342中添加或移除PCIe擴展能力。在其他實施中,PCIe周邊裝置300可包含適於不同虛擬機器、不同作業系統及/或不同裝置類型之多個模擬組態空間。
表2說明一模擬組態空間342之一實例。偏移描述與模擬組態空間之開始之一偏移。偏移給定為一12位元十六進位值。模擬組態可包含關於每一模擬組態暫存器之其他資訊。舉例而言,某些模擬組態暫存器可標記為僅讀取、僅寫入,或僅可由一根複合體讀取/寫入。作為另一實例,某些模擬組態暫存器可提供為具有一預設或重設值。在某些實施例中,模擬組態空間342可包含對表2中展示之多組組態暫存器之表示。舉例而言,在某些實施例中,PCIe周邊裝置300可用以實施可提供對一或多個PCI端點之連接性之一PCI交換機、橋接器或集線器。在此類情景中,模擬組態空間342可包含對交換機、橋接器或集線器之組態暫存器以及用於與交換機、橋接器或集線器相關聯之每一端點裝置之組態暫存器之表示。
如上文所述及,組態交易記錄可經實施以追蹤傳入組態交易。組態交易記錄可維持某些或所有傳入組態讀取及寫入交易之一記錄。在某些實施中,組態交易記錄可使用數個暫存器來記錄一給定組態交易。此等暫存器可包含一位址暫存器、一資料暫存器,以及一完成暫存器。
可在一組態讀取或寫入交易經傳輸至組態交易記錄時設定位址暫存器。位址暫存器可含有識別係入站組態交易之目標之組態暫存器所需之資訊。在某些情形中,位址暫存器可在由模擬模組336讀取時被清除。作為一實例,位址暫存器可包含資訊,諸如指示位址暫存器是否有效之一有效指示符、一組態類型(例如,類型0或類型1)、一目標暫存器偏移、指示交易是一讀取存取還是一寫入存取之讀取/寫入指示符、指示哪個實體或虛擬功能係組態存取之目標之一裝置功能欄位,以及一目標匯流排編號。在某些實施例中,設定有效指示符可觸發對一模擬模組之一中斷或低延遲通知以請求模擬模組服務組態存取請求。
資料暫存器可儲存與組態交易相關聯之資料。對於組態寫入交易,資料暫存器可儲存將被寫入之資料。對於組態讀取交易,資料暫存器可儲存由模擬模組336自目標組態暫存器讀取之資料。
完成暫存器指示一組態讀取或寫入交易之狀態。可在模擬模組336完成一組態交易時由模擬模組336至完成暫存器。經寫入至完成暫存器之值可用以格式化發送至組態交易之起始者(例如,一根複合體) 之一完成回應。舉例而言,完成暫存器中之值可用以產生一完成指示。一完成指示可識別匯流排編號、裝置編號,及/或周邊裝置之功能編號,以及接受並服務組態交易之功能。在某些情形中,當模擬模組336寫入至完成暫存器時,擱置中組態交易被視為完成的且可被釋放。在某些情形中,可針對每一入站組態交易僅寫入一次完成暫存器。
作為一實例,完成暫存器可包含諸如一完成狀態、一目標匯流排編號、一目標裝置編號及一目標功能編號之資訊。完成狀態可指示組態交易是否已經成功地完成,組態交易是否無效(例如,目標功能或目標匯流排編號可不存在),組態交易是否應重試(例如,周邊裝置可能不接受組態交易,且組態交易應由交易之起始者再次傳輸),或組態交易是否已中止(例如,周邊裝置接受但可能不完成組態交易)。目標匯流排編號可指示將在完成識別符中使用哪個匯流排編號(例如,返回在位址暫存器中提供之目標匯流排編號,或返回與目標功能相關聯之一匯流排編號)。舉例而言,周邊裝置可駐留於匯流排編號1上。一入站組態交易可係組態類型1,且可被引導至匯流排編號2。在此情形中,模擬模組可返回匯流排編號1或2。目標裝置編號可指示將在完成識別符中使用哪個目標裝置編號(例如,返回在位址暫存器中提供之目標裝置編號,或返回與目標功能相關聯之一目標裝置編號)。目標功能編號可指示將在完成識別符中使用哪個目標功能編號(例如,返回在位址暫存器中提供之目標功能編號,或返回一埠功能編號)。
除靈活性及可組態性之外,具有模擬組態技術之一周邊裝置亦可提供經增強安全性,其對不被模擬周邊裝置可係不可得的。
舉例而言,一周邊裝置可經受一拒絕服務攻擊。在此一攻擊中,一惡意虛擬機器可用嘗試導致裝置硬體及/或軟體失敗之組態交 易淹沒周邊裝置。然而,具有一模擬模組之一周邊裝置可能夠追蹤藉由虛擬機器之組態存取之速率(例如,藉由監視交易記錄)。模擬模組可因此偵測藉由一虛擬機器之存取之一異常增加,且可拒絕來自彼虛擬機器之任何進一步存取。
作為另一實例,一虛擬機器可存取一未經初始化或不存在的功能。一般周邊裝置在此類情形中可掛斷。然而,模擬模組可擷取此類存取,並藉由模擬用於未經初始化或不存在的功能之組態暫存器或辨識彼存取係一不存在的功能而適當地做出回應。模擬模組可因此防止周邊裝置自掛斷。
作為又一實例,一虛擬機器可在一不適當時間起始對一功能之重設。然而,模擬模組可擷取並記錄此類基於之軟體重設。模擬模組可隨後在一適當時間(舉例而言,在允許完成所有擱置中交易之後)處理該重設。另一選擇係,模擬模組可簡單地阻擋不適當重設。
作為一最後實例,一虛擬機器可嘗試一無效或不合時宜組態改變。舉例而言,虛擬機器可嘗試改變匯流排連結之速度或寬度。然而,模擬模組可擷取所有組態存取(包含此等不適當組態改變),且可拒絕此等無效或不合時宜組態改變存取。
III. 組態交易程序
圖4圖解說明服務一組態讀取交易之一周邊裝置400之一實例。圖4之周邊裝置400可靈活地模擬其他周邊裝置及/或多個裝置功能。周邊裝置400可包含一匯流排介面核心410、組態交易記錄單元408、原生組態空間412、一模擬模組430,以及一記憶體440。
匯流排介面核心410可包含用於與將周邊裝置400連接至一計算系統之一匯流排通信之功能性。匯流排介面核心410可包含至匯流排之一實體連接,且可提供用以管理至匯流排之電連接,用以將傳入交易解碼且將傳出交易編碼,及/或用以管理傳入及傳出交易中之錯誤 的硬體及/或軟體。
組態交易記錄單元408可追蹤傳入組態交易。組態交易記錄單元408可維持某些或所有傳入組態讀取及寫入交易之一記錄。該記錄可採取一清單或表,或清單及/或表之一組合之形式。在某些實施中,組態交易記錄單元408可為傳入組態交易指派優先權,使得某些交易可早於其他被服務。在此類實施中,組態交易記錄單元408亦可維持同調性,亦即,確保讀取及寫入以一適當次序發生。舉例而言,當在針對一暫存器之一寫入交易之後接收到同一暫存器之一讀取交易時,寫入交易必須首先發生。在其他實施中,組態記錄408將傳入交易維持於其被接收之次序中。
原生組態空間412可包含不正被周邊裝置400模擬之原生組態暫存器。原生組態暫存器通常具有實體位址,且因此可佔據一或多個位址空間。
模擬模組430可使用經調適以處理組態交易之一或多個處理器、一或多個處理器核心、一處理器叢集、可程式化閘陣列或控制邏輯電路而實施。模擬模組430可執行軟體程式碼,諸如一作業系統及/或一模擬軟體,如上文所描述。在某些實施例中,模擬軟體之功能性可實施於硬體(例如,控制邏輯電路)中。模擬模組430可服務某些或所有傳入組態讀取及寫入交易,包含目標為原生組態空間412之交易及目標為模擬組態空間442之交易兩者。
記憶體440提供對可由模擬模組430對其進行操作之資料之儲存。記憶體440可儲存一模擬組態空間442。模擬組態空間442可包含對針對正被周邊裝置400模擬之一或多個周邊裝置所定義之某些或所有組態暫存器之表示。在某些實施中,模擬組態空間442可主要包含實現正被模擬之周邊裝置之操作之組態暫存器。模擬組態空間442可依一文字檔案、源程式碼、目的程式碼、一指令碼之形式或某一其他 格式被儲存。在某些實施例中,模擬組態空間442可經加密。在某些實施中,記憶體440可包含一個以上模擬組態空間。舉例而言,一周邊裝置可正模擬多個其他周邊裝置及/或多個功能。在此類情形中,記憶體440可包含用於正被模擬之每一周邊裝置及/或用於正被模擬之每一功能之一模擬組態空間。
圖4之實例圖解說明在接收到一組態讀取交易時可由周邊裝置400執行之步驟。在步驟452處,自匯流排(例如,自一根複合體或一主機)接收一組態讀取交易。匯流排介面核心410可接收組態交易,且判定其應接受交易。匯流排介面核心410可檢查(舉例而言)交易中之一目標匯流排識別符、裝置識別符、功能識別符及/或位址以做出此判定。周邊裝置400可正模擬一個以上周邊裝置及/或一個以上功能。因而,匯流排介面核心410可接受針對正被模擬之任一數目個周邊裝置之交易。
在步驟454處,匯流排介面核心410可將組態讀取交易發送至組態交易記錄單元408。組態交易記錄單元408可將讀取交易添加至其交易記錄。在某些實施例中,一旦讀取交易已經記錄,匯流排介面核心410便可轉向其他操作,且不需等待讀取交易完成。
在步驟456處,組態交易記錄單元408可將一中斷發送至模擬模組430。模擬模組430可藉由調用一模擬程序而回應於中斷。模擬程序可自組態交易記錄單元408擷取組態交易,並服務該組態交易。在某些實施例中,模擬模組430可每當其準備好服務組態交易時或根據一中斷常式服務組態交易。在某些實施例中,模擬模組430可包含用於服務組態交易之專用資源。舉例而言,模擬模組430可具有被指定用於服務組態交易之一處理器核心或執行執行緒。另外或另一選擇係,組態交易記錄單元408可每當在步驟454處將一交易發送至組態交易記錄時將一中斷發送至模擬模組430。該中斷向模擬模組430通知其應行 動。在某些情形中,模擬模組430亦可需要遵守由匯流排指示之時序要求。舉例而言,某些匯流排協定可期望一周邊裝置將在一特定時間內回應於一讀取交易。
可在步驟456處以與在步驟452處匯流排介面核心410接收組態交易相同之次序取得或接收該等組態交易。另一選擇係,組態交易記錄單元408可重新設定所記錄交易之優先級,使得首先服務較高優先級交易。
在接收或取得一組態讀取交易後,模擬模組430旋即可判定交易是被引導至模擬組態空間442還是原生組態空間412。此判定可基於可位於模擬組態空間或原生組態空間內之將被讀取之組態暫存器之位址。在某些情形中,當讀取交易被引導至模擬組態空間442時,模擬模組430可在步驟458a處自記憶體440中之模擬組態空間442讀取表示目標組態暫存器之內容之一值。在其他情形中,模擬模組430可判定目標組態暫存器不正被模擬且係原生組態空間412之部分。在此類情形中,模擬模組430可在步驟458b處自原生組態空間412讀取一組態暫存器之內容。
接著,在步驟460處,模擬模組430可產生對組態讀取之一回應。在某些實施中,模擬模組430可將所擷取資料發送至匯流排介面核心410。在此類實施中,匯流排介面核心410可封裝讀取資料以用於在匯流排上傳輸,並傳輸經封裝資料。在其他實施中,模擬模組430可在將資料提供至匯流排介面核心410之前封裝所讀取之資料。
在步驟462處,模擬模組430可在步驟462之後更新組態交易記錄單元408以指示進行了組態讀取交易。在某些實施中,模擬模組430可在服務讀取交易之後自組態交易記錄單元408移除讀取交易。
周邊裝置400可係實施PCI之一周邊裝置。當周邊裝置400係一PCI周邊裝置時,可在下文根據某些實施例描述上述步驟。
在步驟452處,可(舉例而言)自一根複合體接收一組態讀取交易層封包(TLP)。可在一PCIe匯流排上接收組態讀取TLP,且可由一PCIe核心接收該組態讀取TLP。PCIe核心可解包TLP並將組態請求簡化為更易於處理之一格式。
在步驟454處,PCIe核心可將組態讀取請求傳送至組態交易記錄。舉例而言,PCIe核心可用組態讀取請求資訊來更新組態交易記錄中之一位址暫存器。組態交易記錄可將組態讀取請求添加至其擱置中組態交易記錄中。在將組態讀取請求傳送至組態交易記錄之後,PCIe核心可自由執行其他操作。
在步驟456處,組態交易記錄可將一中斷發送至模擬模組。在接收到中斷後,模擬模組旋即可調用一模擬程序,且組態交易記錄可等待一回應。
在步驟458a處,模擬模組可尋找組態讀取交易設為目標之模擬組態暫存器目標。模擬模組可存取記憶體中之模擬組態空間,且將所請求之模擬組態暫存器定位於其中。在定位所請求之模擬組態暫存器後,模擬模組旋即可讀取模擬組態暫存器之值。在某些情形中,服務對模擬組態暫存器之讀取請求可需要來自周邊裝置之硬體之額外資訊。在此等情形中,模擬模組可讀取一額外組態暫存器,諸如一實體埠組態暫存器或原生組態空間中之一暫存器。
在步驟460處,模擬模組可將自模擬組態暫存器讀取之值傳送至組態交易記錄單元,且將完成狀態更新為組態交易記錄單元中之一成功完成。在步驟462處,模擬模組或組態交易記錄單元將所讀取值傳達至PCIe裝置核心,且PCIe裝置核心隨後封裝讀取值並將其傳輸至根複合體。舉例而言,PCIe裝置核心可將一組態完成TLP傳輸至根複合體。在某些實施例中,若無法完成組態讀取請求,則模擬模組可因此更新完成狀態。
圖5圖解說明服務一組態寫入請求之一周邊裝置500之一實例。周邊裝置500可靈活地模擬不同周邊裝置及/或多個裝置功能。周邊裝置500可包含一匯流排介面核心510、組態交易記錄單元508、原生組態空間512、一模擬模組530,以及一記憶體540。匯流排介面核心510可包含用於與將周邊裝置連接至一計算系統之一匯流排通信之功能性。組態交易記錄單元508可追蹤傳入組態交易。組態交易記錄單元508可維持某些或所有傳入組態讀取及寫入交易之一記錄。原生組態空間512可包含不正被周邊裝置500模擬之組態暫存器。模擬模組530可使用經調適以處理組態交易之一或多個處理器、一或多個處理器核心、一處理器叢集、可程式化閘陣列或控制邏輯電路而實施。模擬模組530可執行軟體程式碼,諸如一作業系統及/或一模擬模組。在某些實施例中,模擬軟體之功能性可實施於硬體(例如,控制邏輯電路)中。記憶體540提供對可由模擬模組530對其進行操作之資料之儲存。記憶體540可包含一或多個模擬組態空間。一模擬組態空間542可包含針對將被模擬之一周邊裝置及/或功能所定義之某些或所有組態暫存器之表示。在某些實施例中,記憶體540可包含用於將被模擬之每一周邊裝置及/或功能之一模擬組態空間542。
圖5中展示之實例圖解說明在接收到一組態寫入交易時可由周邊裝置500執行之步驟。在步驟552處,自匯流排(例如,自一根複合體或一主機)接收一組態寫入請求。匯流排介面核心510可接收組態寫入交易,並判定其應接受交易。周邊裝置500可正模擬一個以上周邊裝置及/或功能。因而,裝置核心510可接受針對正被模擬之任一數目個周邊裝置之交易。
在一步驟554處,匯流排介面核心510可將組態寫入交易發送至組態交易記錄508。組態交易記錄508可將組態寫入交易添加至其交易記錄。一旦組態寫入交易已經記錄,匯流排介面核心510便可轉向其 他操作,且不需要等待寫入交易完成。
在一步驟556處,組態交易記錄508可將一中斷發送至模擬模組530。模擬模組530可藉由調用一模擬模組而回應於中斷。模擬模組530可自組態交易記錄508擷取組態交易,並服務該組態交易。模擬模組530可每當其準備好服務組態交易時服務組態交易。在某些實施例中,模擬模組530可包含用於服務組態交易之專用資源。在某些情形中,模擬模組530可每當在步驟554處將一組態交易添加至組態交易記錄單元508時接收一中斷。
在接收或取得一組態寫入交易後,模擬模組530旋即可判定交易是被引導至模擬組態空間542還是原生組態空間512。在某些情形中,當組態寫入交易被引導至模擬組態空間542時,程序叢集530可在步驟558a處用寫入資料來更新模擬組態空間542中之目標組態暫存器之表示。當寫入交易被引導至原生組態空間512時,模擬模組530可在步驟558b處以寫入資料更新原生組態空間512中之組態暫存器。
在步驟562處,模擬模組530可更新組態交易記錄單元508以指示進行了組態寫入交易。在某些實施中,模擬模組530可在服務寫入交易之後自組態交易記錄單元508移除寫入交易。
在某些實施中,模擬模組530可產生對寫入交易之一回應,以指示寫入交易已經成功地完成。在此等實施中,模擬模組530可指示匯流排介面核心510產生一回應。另一選擇係,模擬模組530可本身產生一回應,且將回應傳輸至匯流排。
周邊裝置500可係實施PCI之一周邊裝置。當周邊裝置500係一PCI周邊裝置時,可在下文根據某些實施例描述上述步驟。
在步驟552處,可自(舉例而言)一根複合體接收一組態寫入TLP。可在一PCIe匯流排上接收組態寫入TLP,且可由一PCIe核心接收該組態寫入TLP。PCIe核心可解包TLP並將組態請求簡化為更易於處理之 一格式。
在步驟554處,PCIe核心可(舉例而言)藉由以組態寫入請求資訊來更新一位址暫存器而將組態寫入請求傳送至組態交易記錄。組態交易記錄可將組態寫入請求添加至其擱置中組態交易記錄。在將組態寫入請求傳送至組態交易記錄單元之後,PCIe核心可自由執行其他操作。
在步驟556處,組態交易記錄單元可將一中斷發送至模擬模組。在接收到中斷後,模擬模組旋即可調用一模擬模組,且組態交易記錄單元可等待一回應。
在步驟558a處,模擬模組可尋找將由組態寫入交易寫入之模擬組態暫存器。模擬模組可存取記憶體中之模擬組態空間,且將所請求之模擬組態暫存器定位於其中。在定位目標模擬組態暫存器後,模擬模組旋即可用寫入資料來更新模擬組態空間中之模擬組態暫存器。在某些情形中,寫入至模擬組態暫存器之值可需要對周邊裝置500之硬體之更新。在此等情形中,模擬模組可寫入一額外組態暫存器,諸如一實體埠組態暫存器或原生組態空間中之一暫存器。
在步驟562處,模擬模組可更新組態交易記錄中之一完成狀態。此完成狀態可指示組態寫入交易已經成功地完成。組態交易記錄可將完成狀態傳達至PCIe裝置核心。PCIe裝置核心可向根複合體指示成功完成。舉例而言,PCIe裝置核心可將一組態完成TLP傳輸至根複合體。在某些實施例中,若無法完成組態寫入請求,則模擬模組可因此更新完成狀態。
圖4至圖5圖解說明具有一模擬組態空間之一周邊裝置可如何服務組態讀取及寫入交易之一實例。模擬組態空間可經修改及/或替換,藉此修改及/或替換正被模擬之周邊裝置及/或功能。此外,周邊裝置之模擬組態空間可包含多個模擬組態,使得周邊裝置可模擬多個 裝置及/或功能。模擬技術可因此達成具有靈活且可調適組態空間之周邊裝置之構造,且在某些情形中,減少或消除對周邊裝置之固定且不可改變組態定義。
IV. SR-IOV
圖6圖解說明具有單根輸入/輸出虛擬化(SR-IOV)能力之一周邊裝置600之一實例。SR-IOV係允許一實體資源(例如,一單個網路介面控制器)呈現為多個資源(例如,六十四網路介面控制器)之一擴展能力。因此,提供一特定功能性之一周邊裝置可呈現為提供彼功能性之多個裝置。一SR-IOV能力周邊裝置之功能可被分類為實體功能(PF)與虛擬功能(VF)。實體功能係可被發現、管理及操控的裝置之完整特徵功能。實體功能具有可用以組態或控制周邊裝置之組態資源。實體功能包含一非虛擬化裝置將具有之相同組態位址空間及記憶體位址空間。一實體功能可具有與實體功能相關聯之數個虛擬功能。虛擬功能類似於實體功能,但其係無組態資源且通常受其基本實體功能之組態控制之輕量功能。實體功能及/或虛擬功能中之每一者可指派給在一計算系統上運行之執行(諸如,舉例而言,一虛擬機器)之一各別執行緒。
圖6中展示之實例性SR-IOV能力裝置600可包含一PCIe埠602、內部路由604及606a至606m、一或多個實體功能610a至610m,以及每實體功能610a至610m之一或多個虛擬功能(例如,620a至620c、621a至621c)。PCIe埠602可提供至一PCIe匯流排之一實體連接。內部路由604及606a至606m可將匯流排交易引導至適當實體功能610a至610m,以及虛擬功能。每一實體功能610a至610m可透過內部路由604連接至PCIe埠602。每一虛擬功能可透過一第一層級之內部路由606a至606m且然後透過一第二層級之內部路由604而連接至PCIe埠602。內部路由604可提供每一實體功能610a至610m與PCIe埠602或任何虛擬功能 6120a至6120f與PCIe埠602之間的點對點連接性。
每一實體功能610a至610m可與實體資源相關聯以實施其各別實體功能。舉例而言,PF 0 610a可與實體資源618a相關聯,且PF m 610m可與實體資源618m相關聯。虛擬功能中之每一者亦可與各別實體資源相關聯以實施虛擬功能之功能性。每一實體功能610a至610m亦可包含各別組態資源612a至612m以及各別位址轉譯快取記憶體(ATC)614a至614m。組態資源612a至612m中之每一者可包含(舉例而言)4KB組態位址空間。位址轉譯快取記憶體614a至614m中之每一者可儲存新近使用之位址轉譯。實體功能610a至610m可在對一計算系統可見之位址空間不同於所附接周邊裝置之實體位址空間時提供位址轉譯。舉例而言,存取一位置之一虛擬機器可使用被轉譯為一實體位址之一虛擬位址。
在某些實施例中,可在一周邊裝置之模擬組態空間中模擬與SR-IOV相關聯之組態暫存器。每一實體功能可包含一特定數目個基底位址暫存器(BAR)。基底位址暫存器係指定實體功能之I/O之位址範圍及/或記憶體位址範圍之組態暫存器。儲存於一基底位址暫存器中之值可根據需要進行修改,以改變指派給實體功能之位址空間。基底位址暫存器可包含於模擬組態空間中。模擬組態空間可包含(舉例而言)表示對與實體功能相關聯之六個BAR、用於SR-IOV能力之六個BAR以及儲存一擴展唯讀記憶體(ROM)之位址(在其中周邊裝置併入有一裝置ROM之情形中)之一個BAR。在某些實施中,一實體功能之模擬組態空間之基底位址暫存器可具有一預設值。
實體功能模擬組態空間亦可包含SR-IOV能力暫存器之表示。在某些情形中,SR-IOV能力暫存器可處於可自實體功能模擬組態空間中之一能力清單讀取之一偏移。另一選擇係或另外,模擬模組可維持此偏移之一本機複本,使得模擬模組可存取SR-IOV能力暫存器而無 需首先讀取能力清單。
在某些實施中,對SR-IOV能力暫存器中之設定(例如,組態寫入)之改變可需要停用虛擬功能。舉例而言,對虛擬功能及/或虛擬功能之基底位址暫存器之編號之改變可需要停用虛擬功能。在某些情形中,停用虛擬功能以及重新啟用虛擬功能可導致重設虛擬功能。當一SR-IOV能力暫存器中之設定改變時,實體功能可重設所有作用中虛擬功能。實體功能可進一步讀取經修改SR-IOV能力暫存器,且判定哪些設定已經改變。實體功能然後可(若需要)基於SR-IOV能力暫存器中之經修改設定而更新虛擬功能之組態。
在某些實施中,用於一實體功能及其相關聯虛擬功能之模擬組態空間可係被組織至處於一第一位址偏移之一實體功能組態空間、處於一第二位址偏移之一虛擬功能組態空間以及處於一第三位址偏移之一額外組態影像中之一組態影像之部分。
用於SR-IOV之模擬組態空間可包含至少三個組分:用於每一實體功能之SR-IOV能力組態空間;用於維持每一虛擬功能之狀態及能力之組態空間;以及用於SR-IOV基底位址暫存器(BAR)之組態空間。在某些實施中,可藉由捕捉並處理到達PCIe核心之組態空間存取來處理對實體功能模擬組態及虛擬功能模擬組態之存取。在某些實施中,可(舉例而言)藉由在原生組態空間中保留至少一對基底位址暫存器以使用原生組態空間中基底位址暫存器而實施SR-IOV基底位址暫存器。
在某些實施例中,利用對應實體功能及相關聯虛擬功能而將對組態空間中之特定位元(諸如,功能層級重設(FLR)、匯流排主控啟用(BME)、記憶體空間啟用(MSE)等)之改變傳達至應用程式。舉例而言,應用程式可接收並確認FLR請求,且模擬模組可推遲對針對一功能擱置中FLR之任何交易做出回應直至應用程式確認FLR經完成為 止。應用程式可在執行任何命令之前檢查每一功能(FLR、BME、MSE等)之狀態。應用程式可向模擬模組通知是否存在針對每一功能之擱置中交易,且檢查經組態至組態空間之各個設定(諸如,BAR、虛擬功能編號等)。
在某些實施例中,實體功能及相關聯虛擬功能之狀態(亦可稱為功能性質)可維持於模擬組態空間中且被傳達至應用程式或模擬模組。用於追蹤每一功能之狀態之記憶體空間之大小可係(舉例而言)每實體或虛擬功能一4位元組整數。第一整數可提供實體功能之狀態,且第二整數可提供第一虛擬功能之狀態,等等。
每一功能之狀態可包含不需要即時應用程式回應,但係應用程式應在I/O處理期間檢測之性質的資訊。舉例而言,若一功能係擱置中FLR,則應丟棄接收之針對其之任何命令。作為另一實例,若BME未經設定,則應用程式應避免公佈針對該功能之DMA交易。在某些實施例中,每一功能之狀態可提供諸如以下之資訊:是否啟用該功能(可總是啟用實體功能),該功能是否具有一FLR擱置,是否啟用MSE(針對實體功能),是否啟用BME,以及是否啟用MSI-X。
下文提供執行一功能層級重設之一實例。功能層級重設提供用於重設一特定實體功能及其相關聯虛擬功能之一機構。一般而言,重設一實體功能可觸發對與實體功能相關聯之虛擬功能之重設。功能層級重設係一漸進機構,且允許虛擬及實體功能完成擱置中操作並進入一安靜或閒置狀態。一旦功能處於一靜止狀態中,便可對其進行重設。
模擬模組可接收識別實體功能以重設之一功能層級重設請求。相關聯虛擬功能可首先進入一靜止狀態。模擬模組可指示正在藉由設定虛擬功能之功能性質中之FLR位元來重設虛擬功能。模擬模組可接著將一FLR訊息發送至應用程式佇列,且將以一「不被支援請求」回 應而對對虛擬功能之任何進一步請求做出回應直至應用程式確認FLR為止。一旦虛擬功能已經完成任何擱置中交易,應用程式便將確認功能層級重設請求。應用程式然後可將一訊息發送至模擬模組之佇列。當模擬模組接收一組態存取請求時,模擬模組輪詢佇列且接收FLR確認。模擬模組然後可回應於對虛擬功能之進一步請求。可更新虛擬功能之狀態或性質。舉例而言,可停用MSI-X及BME。
對於一實體功能,在接收功能層級重設後,模擬模組旋即可經由MSE及BME狀態位元停用記憶體空間及匯流排主控器。此外,模擬模組可將所有模擬及原生組態暫存器還原為預設值。模擬模組可進一步將一FLR訊息發送至應用程式佇列,且將以一「不被支援請求」回應對對實體功能之任何進一步請求做出回應直至應用程式以其他方式做出指示為止。應用程式可重設其實體功能資料結構及擱置中交易佇列。在完成此等操作後,應用程式旋即可藉由將一訊息發送至模擬模組之佇列來確認功能層級重設請求。當模擬模組接收一組態存取請求時,模擬模組輪詢佇列並接收FLR確認。模擬模組然後可回應於對實體功能之進一步請求。可停用與實體功能相關聯之所有虛擬直至由一根複合體重新啟用為止。
以下實例圖解說明藉由一周邊裝置對SR-IOV能力之模擬。周邊裝置可包含(舉例而言)被指定為PF0之一個實體功能。用於PF0之模擬組態包含SR-IOV擴展能力暫存器。此外,PF0可由周邊裝置用來發現、組態及管理與PF0相關聯之虛擬功能。一般而言,模擬SR-IOV暫存器可上載至具有與由SR-IOV協定定義的相同之預設值之周邊裝置。在某些實施中,SR-IOV暫存器可以其他值上載。舉例而言,被指定為PF0之虛擬功能之總數目可設定為4K,對模擬SR-IOV暫存器內之第一虛擬功能之預設偏移可設定為257,且預設虛擬功能步幅可設定為1。
在此實例中,虛擬功能可包含MSI-X能力。此外,實體功能及虛擬功能兩者可包含進階路由識別(ARI)能力。ARI提供允許一周邊裝置支援八個以上功能之一機構。支援ARI之周邊裝置可將PCI組態標頭中之裝置ID欄位解譯為功能編號之部分。此為周邊裝置提供用以支援高達256個功能之能力。
在某些實施中,SR-IOV控制暫存器指示是否啟用ARI能力階層。啟用ARI能力階層允許(舉例而言)虛擬功能使用功能數目為8至255。ARI能力階層設定亦指示已經在根複合體中或在緊靠周邊裝置上游之一交換機中啟用ARI。根複合體可設定ARI能力階層設定以匹配根複合體中或交換機中之ARI轉送啟用設定。周邊裝置可使用ARI能力階層設定之組態來判定第一虛擬功能之偏移。舉例而言,對於ARI及非ARI模式兩者,對第一虛擬功能之預設偏移可設定為257。
一般而言,在由根複合體列舉包含於一計算系統中之PCI階層之前,不指派匯流排及裝置編號。在列舉程序期間,模擬模組可製止對不以PF0為目標之組態存取做出回應。此係由於周邊裝置可不期望給根複合體留下周邊裝置包含一個以上實體功能之印象。在計算系統中之功能及裝置已經根複合體映射之後,根複合體可啟用ARI能力階層設定,並設定SR-IOV組態暫存器中之虛擬功能啟用設定。
在某些情形中,模擬模組可擷取啟用虛擬功能之交易。在此等情形中,一旦虛擬功能已經啟用,模擬模組便可能夠接受目標為匯流排編號、裝置編號及除指派給PF0之外的功能編號之組態交易。
在某些實施中,周邊裝置可模擬位於比針對實體功能之匯流排編號高之匯流排編號上之虛擬功能。在此等實施中,對虛擬功能之組態存取可係組態類型1,此意指組態存取應橋接至一較高編號匯流排。表3提供可如何處理此實例中之各個組態交易之一實例。組態交易可係組態類型0(被引導至一本機匯流排)或組態類型1(被引導至一 較高層級匯流排,且應經橋接以便到達彼匯流排)。目標匯流排可係實例性周邊裝置位於其上者,或可係一較高匯流排編號。給定組態類型及目標匯流排,該表指示組態交易是否可以實體功能及/或任何相關聯虛擬功能為目標。最後,該表指示周邊裝置可如何回應於此等組態交易。
在其中組態交易以不指派給實體功能或虛擬功能中之任一者之一匯流排編號為目標之情形中,周邊裝置可以一不被支援請求做出回應。
表4提供針對不同編號之虛擬功能之匯流排指派之一實例。
可藉由讀取實體及虛擬功能之模擬組態獲知匯流排指派以及哪些實體及虛擬功能係可用的。當接收到針對一不存在的功能之一組態交易時,模擬模組可以一不被支援請求回應做出回應。
表5提供基於是否啟用虛擬功能以及是否啟用ARI能力階層之回應之一實例。
V. 方法
圖7至圖9圖解說明用於模擬一周邊裝置之組態空間之方法之實施例。此等方法可由上文所描述之系統實施。
圖7圖解說明用於服務一組態存取請求之一程序700。可由包含一模擬組態空間之一周邊裝置接收組態存取請求。一模擬組態空間可允許周邊裝置模擬一或多個不同周邊裝置及/或功能。一組態存取請求可係用以讀取一組態暫存器及/或寫入一組態暫存器之一請求。
在步驟702處,一周邊裝置可接收一組態存取請求。可經由一匯流排接收組態存取請求。組態存取請求可包含識別組態存取請求之目標之資訊。舉例而言,組態存取請求可包含一匯流排識別符、一裝置 識別符、一功能識別符,及/或一位址。此識別資訊可指示一周邊裝置是否應接受並服務組態存取請求。在某些實施中,一周邊裝置可模擬多個周邊裝置及/或功能。在此類實施中,周邊裝置可接受針對一個以上周邊裝置及/或功能之組態存取請求。
在步驟706處,周邊裝置可判定組態存取請求係針對除周邊裝置之原生組態空間之外的組態空間。組態存取請求可係針對處於正被模擬之一位址空間中之一組態暫存器。可以不同於由程序700所圖解說明之方式處理針對原生組態空間之組態存取請求。舉例而言,可由周邊裝置中之原生硬體(諸如,周邊裝置之匯流排介面核心)處理對原生組態之組態存取請求。
在步驟710處,周邊裝置可自一模擬組態空間擷取一模擬組態。模擬組態可包含對一或多個組態暫存器之表示。在某些實施中,模擬組態空間包含模擬組態標頭及/或用於一個以上功能之暫存器(其可稱為模擬組態)。在此類實施中,周邊裝置可判定針對組態存取請求之一目標功能,且擷取適當模擬組態。
在步驟712處,周邊裝置可使用模擬組態服務組態存取請求。服務組態存取請求可包含識別組態存取請求正請求對其之存取之暫存器。在某些實施中,服務組態存取請求可包含將模擬組態提供給組態存取請求之來源。在此類實施中,周邊裝置可自模擬組態讀取對所識別組態暫存器之一表示。在其他實施中,服務組態存取請求可包含更新模擬組態。在此類實施中,周邊裝置可寫入或更新對模擬組態中之所識別組態暫存器之表示。
圖8圖解說明用於服務用以讀取一組態暫存器之一組態存取請求之一程序800之一實例。使用PCI作為可由一周邊裝置實施之一匯流排協定之一實例來圖解說明程序800。周邊裝置可正在實施一PCI模擬組態空間。一PCI模擬組態空間可允許周邊裝置模擬一或多個PCI裝置及 /或功能。在某些實施例中,程序800可用其他匯流排協定實施(諸如,在其中一周邊裝置正在使用經裁製以用於一不同匯流排協定之一模擬組態空間之情形中)。
在步驟802處,周邊裝置之PCI核心可自一根複合體接收一PCI組態存取請求。組態存取請求可包含識別組態存取請求之目標之資訊。識別資訊可指示周邊裝置是否應接受並服務組態存取請求。周邊裝置可模擬多個周邊裝置及/或功能。在此類實施中,周邊裝置可接受針對一個以上周邊裝置及/或功能之組態存取請求。
在步驟804處,周邊裝置之PCI核心可將PCI組態存取請求發送至周邊裝置中之一組態管理模組。組態管理模組可維持一組態存取請求記錄。該記錄可保持對已經由周邊裝置接收之組態存取請求之追蹤。
在步驟806處,組態管理模組可判定PCI組態存取請求以除一原生組態空間之外的一組態空間為目標。原生組態空間可包含用於基本功能性(諸如,可不必且/或不期望模擬之匯流排速度選擇)之組態暫存器。可模擬除一原生組態空間之外的組態空間。可使用模擬組態標頭表示模擬組態空間。
在步驟808處,周邊裝置之組態管理模組可將一低延遲通知(例如,一中斷請求)發送至周邊裝置中之一模擬模組(其可實施為(例如)一處理器、控制邏輯電路等)。中斷可向周邊裝置中之模擬模組通知已經接收了組態存取請求,且/或模擬模組應服務組態存取請求。
在步驟810處,周邊裝置之模擬模組可回應於中斷請求(例如,藉由執行組態空間模擬軟體以處理組態存取請求)。模擬模組可自一模擬組態空間擷取一模擬組態。在某些實施中,周邊裝置可正在模擬一或多個周邊裝置及/或功能。在此類實施中,組態存取請求可包含對一目標模擬周邊裝置及/或功能之識別。此外,組態空間模擬軟體可擷取用於目標模擬周邊裝置及/或功能之組態。在某些實施中,將模 擬組態空間儲存於DRAM中,或可內部地模擬該模擬組態空間。一永久性記憶體亦可用以儲存模擬組態空間以使得模擬組態空間在失電期間保留於記憶體中。在某些實施例中,儲存於永久性記憶體中之模擬組態空間可在啟動時載入至一DRAM或本機記憶體以提供對模擬組態空間之較快速存取。在某些實施中,在一經隔離環境中執行組態空間模擬軟體。在一經隔離環境中,組態空間模擬軟體可能夠安全地執行,而無來自其他軟體之干涉或干擾。
在步驟812處,可使用所擷取模擬組態服務PCI組態存取請求。在某些實施中,組態存取請求可係一組態讀取請求。在此類實施中,程序800可包含一步驟814,在步驟814中,服務組態存取請求可包含將所擷取模擬組態發送至PCI根複合體。在某些實施例中,若正被讀取之模擬組態包含在經讀取後旋即改變其狀態之一暫存器類型(例如,讀取後即清除暫存器,或具有讀取後即清除位元),則程序800亦可修改作為服務組態存取請求之部分之模擬組態之內容。
圖9圖解說明用於服務用以寫入一組態暫存器之一組態存取請求之一程序900之一實例。使用PCI作為可由一周邊裝置實施之一匯流排協定之一實例來圖解說明程序900。周邊裝置可正在實施一PCI模擬系統。一PCI模擬系統可允許周邊裝置模擬一或多個PCI裝置及/或功能。程序900可用其他匯流排協定實施(諸如,在其中一周邊裝置正在使用使用一不同匯流排協定之一模擬系統之情形中)。
在步驟902處,周邊裝置之PCI核心可自一根複合體接收一PCI組態存取請求。組態存取請求可包含識別組態存取請求之目標之資訊。識別資訊可指示周邊裝置是否應接受並服務組態存取請求。周邊裝置可模擬多個周邊裝置及/或功能。在此類實施中,周邊裝置可接受針對一個以上周邊裝置及/或功能之組態存取請求。
在步驟904處,周邊裝置之PCI核心可將PCI組態存取請求發送至 周邊裝置中之一組態管理模組。組態管理模組可維持一組態存取請求記錄。該記錄可保持對已經由周邊裝置接收之組態存取請求之追蹤。
在步驟906處,組態管理模組可判定PCI組態存取請求以除一原生組態空間之外的一組態空間為目標。原生組態空間可包含用於基本功能性(諸如,可不必且/或不期望模擬之匯流排速度選擇)之組態暫存器。可模擬除一原生組態空間之外的組態空間。可使用模擬組態標頭表示模擬組態空間。
在步驟908處,周邊裝置之組態管理模組可將一低延遲通知(例如,一中斷請求)發送至周邊裝置中之一模擬模組。中斷可向周邊裝置中之模擬模組通知已經接收了組態存取請求,且/或模擬模組應服務組態存取請求。
在步驟910處,周邊裝置之模擬模組可回應於中斷請求(例如,執行組態空間模擬軟體)。模擬模組可自一模擬組態空間擷取一模擬組態。在某些實施中,周邊裝置可正在模擬一或多個周邊裝置及/或功能。在此類實施中,組態存取請求可包含對一目標模擬周邊裝置及/或功能之識別。此外,組態空間模擬軟體可擷取用於目標模擬周邊裝置及/或功能之組態。在某些實施中,將模擬組態空間儲存於DRAM中,或可內部地模擬該模擬組態空間。一永久性記憶體亦可用以儲存模擬組態空間以使得模擬組態空間在失電期間保留於記憶體中。在某些實施例中,儲存於永久性記憶體中之模擬組態空間可在啟動時載入至一DRAM或本機記憶體以提供對模擬組態空間之較快速存取。在某些實施中,在一經隔離環境中執行組態空間模擬軟體。在一經隔離環境中,組態空間模擬軟體可能夠安全地執行,而無來自其他軟體之干涉或干擾。
在步驟912處,可使用模擬組態標頭服務PCI組態存取請求。在某些實施中,組態存取請求可係一組態寫入請求。在此類實施中,程 序900可包含一步驟914,在步驟914中,服務組態存取請求可包含更新模擬組態。
圖7至圖9中所圖解說明之某些或所有程序(或本文中描述之任何其他程序,或變化形式,及/或其組合)可在組態有可執行指令之一或多個電腦系統之控制下執行,且可藉由硬體或其組合實施為共同地在一或多個處理器上執行之程式碼(例如,可執行指令、一或多個電腦程式,或一或多個應用程式)。該程式碼可(舉例而言)以包括可由一或多個處理器執行之複數個指令之一電腦程式形式儲存於一電腦可讀取儲存媒體上。電腦可讀取儲存媒體可係非暫時性的。
一般而言,可部分地或全部地以硬體或以硬體與軟體之一組合之形式實施本文中揭示之組件、系統及周邊器件中之任一者。硬體可包含電子電路,諸如一系統單晶片(SoC)、一特殊應用積體電路(ASIC)、一處理器,或一場可程式化閘陣列(FPGA)。
VI. 電腦系統
圖10圖解說明根據至少一項實例性實施例之本文中所描述之包含經由一或多個網路連接之一或多個服務提供者電腦及/或一使用者裝置之特徵及系統之一實例性構架。圖1至圖14中論述之裝置可使用圖10中所描述之計算裝置之一或多個組件,或可表示圖10中所描述之一或多個計算裝置。在所圖解說明之構架1000中,一或多個使用者1002可使用使用者計算裝置1004(1)至1004(N)以經由一或多個網路1008存取一應用程式1006(例如,一網頁瀏覽器或行動裝置應用程式)。在某些態樣中,應用程式1006可由一計算資源服務或服務提供者託管、管理及/或提供。一或多個服務提供者電腦1010可提供經組態以在使用者1002可與其相互作用之使用者裝置1004上運行之一原生應用程式。在某些實例中,服務提供者電腦1010可提供諸如(但不限於)以下之計算資源:用戶端實體、低延遲資料儲存、耐久性資料儲 存、資料存取、管理、虛擬化、雲端基於之軟體解決方案、電子內容效能管理等。服務提供者電腦1010亦可係可操作的以向使用者1002提供網頁託管、電腦應用程式開發及/或實施平臺、前述之組合或類似者。在某些實例中,服務提供者電腦1010可與一或多個第三方電腦1012通信。
在某些實例中,網路1008可包含諸多不同類型之網路(諸如,纜線網路、網際網路、無錢網路、蜂巢式網路以及其他私人及/或公共網路)中之任何一者或一組合。儘管所圖解說明之實例表示使用者1002經由網路1008存取一應用程式1006,但所描述之技術可同樣地適用於其中使用者1002經由使用者裝置1004通過一陸線電話、經由一資訊站或以任何其他方式與服務提供者電腦1010相互作用之例項中。亦應注意,所描述之技術可適用於其他用戶端/伺服器配置(例如,機上盒等)中,以及非用戶端/伺服器配置(例如,本機地儲存之應用程式等)中。
如上文所簡要描述,應用程式1006可允許使用者1002與服務提供者電腦1010相互作用(諸如)以存取網頁內容(例如,網頁、音樂、視訊等)。可依一伺服器叢集或作為一伺服器場配置之服務提供者電腦1010可託管應用程式1006及/或基於雲端之軟體服務。其他伺服器構架亦可用以託管應用程式1006。應用程式1006可能夠處理來自諸多使用者1002之請求並回應地服務各種項目網頁。應用程式1006可提供支援使用者相互作用的任何類型之網站,包含社交網路網站、線上零售商、資訊網站、博客網站、搜尋引擎網站、新聞及娛樂網站等等。如上文所論述,所描述之技術可在應用程式1006外部(諸如)藉助在使用者裝置1004上運行之其他應用程式而類似地實施。
使用者裝置1004可係任何類型之計算裝置,諸如(但不限於)一行動電話、一智慧型電話、一個人數位助理(PDA)、一膝上型電腦、一 桌上型電腦、一精簡型用戶端裝置、一平板PC、一電子書(e-book)閱讀器等。在某些實例中,使用者裝置1004可經由網路1008或經由其他網路連接與服務提供者電腦1010通信。另外,使用者裝置1004可係由服務提供者電腦1010管理、控制或以其他方式係其之部分的分散式系統之部分(例如,與服務提供者電腦1010整合之一控制台裝置)。
在一個說明性組態中,一使用者裝置1004可包含至少一個記憶體1014及一或多個處理單元(或處理器1016)。處理器1016可視情況以硬體、電腦可執行指令、韌體或其組合而實施。處理器1016之電腦可執行指令或韌體實施可包含以任何適合程式化語言寫入以執行所描述之各個功能之電腦可執行或機器可執行指令。使用者裝置1004亦可包含用於提供及/或記錄與使用者裝置1004相關聯之地理位置資訊之地理位置裝置(例如,一全球定位系統(GPS)裝置或類似者)。
記憶體1014可儲存可載入且可在處理器1016上執行之程式指令,以及在此等程式執行期間產生之資料。取決於使用者裝置1004之組態及類型,記憶體1014可係揮發性的(諸如,隨機存取記憶體(RAM))及/或非揮發性的(諸如,唯讀記憶體(ROM)、快閃記憶體等)。使用者裝置1004亦可包含額外可抽換式儲存裝置及/或不可抽換式儲存裝置,其包含(但不限於)磁性儲存裝置、光碟及/或磁帶儲存裝置。磁碟機及其相關聯電腦可讀取媒體可提供對電腦可讀取指令、資料結構、程式模組及計算裝置之其他資料之非揮發性儲存。在某些實施中,記憶體1014可包含多個不同類型之記憶體,諸如靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)或ROM。
以更多細節轉向記憶體1014之內容,記憶體1014可包含用於實施本文中揭示之特徵之一作業系統及一或多個應用程式或服務,包含諸如經由一瀏覽器應用程式1006或專用應用程式(例如,智慧型電話應用程式、平板電腦應用程式等)之至少一使用者提供之輸入元件或 電子服務網頁。瀏覽器應用程式1006可經組態以接收、儲存及/或顯示用於與服務提供者電腦1010相互作用之一網站或其他介面。另外,記憶體1014可儲存存取認證及/或其他使用者資訊,諸如(但不限於)使用者ID、密碼及/或其他使用者資訊。在某些實例中,使用者資訊可包含驗證一帳戶存取請求之資訊,諸如(但不限於)一裝置ID、一小型文字檔(cookie)、一IP位址、一位置或諸如類似者。另外,使用者資訊可包含對由使用者裝置1004獲得之一地理位置或一安全問題之一使用者提供之回應。
在某些態樣中,服務提供者電腦1010亦可係任何類型之計算裝置,諸如(但不限於)一行動電話、一智慧型電話、一個人數位助理(PDA)、一膝上型電腦、一桌上型電腦、一伺服器電腦、一精簡型用戶端裝置、一平板PC等。另外,應注意,在某些實施例中,服務提供者電腦1010係由實施於一託管計算環境中之一或多個虛擬機器執行。託管計算環境可包含一或多個快速佈建釋放之計算資源,該等計算資源可包含計算、聯網及/或儲存裝置。一託管計算環境亦可稱為一雲端計算環境。在某些實例中,服務提供者電腦1010可經由網路1008或經由其他網路連接與使用者裝置1004及/或其他服務提供者通信。服務提供者電腦1010可包含可能依一叢集、作為一伺服器場或作為不與彼此相關聯之各別伺服器配置之一或多個伺服器。此等伺服器可經組態以將本文中所描述之關鍵字分類及分級特徵服務實施為一整合的分散式計算環境之部分。
在一個說明性組態中,服務提供者電腦1010可包含至少一個記憶體1018及一或多個處理單元(或處理器1020)。處理器1020可視情況以硬體、電腦可執行指令、韌體或其組合而實施。處理器1020之電腦可執行指令或韌體實施可包含以任何適合程式化語言寫入以執行所描述之各個功能之電腦可執行或機器可執行指令。
在某些例項中,硬體處理器1020可係一單核心處理器或一多核心處理器。一多核心處理器可包含相同處理器內之多個處理單元。在某些實施例中,多核心處理器可共用某些資源,諸如匯流排以及多個核心之間的第二或第三層級之快取記憶體。在某些例項中,一單核心或多核心處理器中之每一核心亦可包含多個執行邏輯處理器(或執行緒)。在此一核心(其支援多個邏輯處理器)中,亦可共用數個級之執行管線以及亦較低層級快取記憶體。
記憶體1018可儲存可載入且可在處理器1020上執行之程式指令,以及在此等程式執行期間產生之資料。取決於服務提供者電腦1010之組態及類型,記憶體1018可係揮發性(諸如,RAM)的及/或非揮發性的(諸如,ROM、快閃記憶體等)。服務提供者電腦1010或伺服器亦可包含額外儲存裝置1022,其可包含可抽換式儲存及/或不可抽換式儲存。額外儲存裝置1022可包含(但不限於)磁性儲存裝置、光碟及/或磁帶儲存裝置。磁碟機及其相關聯電腦可讀取媒體可提供對電腦可讀取指令、資料結構、程式模組及計算裝置之其他資料之非揮發性儲存。在某些實施中,記憶體1018可包含多種不同類型之記憶體,諸如SRAM、DRAM或ROM。
記憶體1018、額外儲存裝置1022(可抽換式及不可抽換式兩者)全部係電腦可讀取儲存媒體之實例。舉例而言,電腦可讀取儲存媒體可包含以用於資訊(諸如,電腦可讀取指令、資料結構、程式模組或其他資料)之儲存之任何方法或技術實施之揮發性或非揮發性、可抽換式或不可抽換式媒體。記憶體1018及額外儲存裝置1022全部係電腦儲存媒體之實例。可存在於服務提供者電腦1010中之額外類型之電腦儲存媒體可包含(但不限於)PRAM、SRAM、DRAM、RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、DVD或其他光學儲存、磁帶盒、磁帶、磁碟儲存或其他磁性儲存裝置,或可用以儲 存所要資訊且可由服務提供者電腦1010存取之任何其他媒體。上文中之任一者之組合亦應包含於電腦可讀取媒體之範疇內。
另一選擇係,電腦可讀取通信媒體可包含電腦可讀取指令、程式模組或在一資料信號(諸如,一載波或其他傳輸)內傳輸之其他資料。然而,如本文中所使用,電腦可讀取儲存媒體不包含電腦可讀取通信媒體。
服務提供者電腦1010亦可含有允許服務提供者電腦1010與一所儲存資料庫通信之通信連接1024、另一計算裝置或伺服器、使用者終端機及/或網路1008上之其他裝置。服務提供者電腦1010亦可包含I/O裝置1026,諸如一鍵盤、一滑鼠、一筆、一語音輸入裝置、一觸控輸入裝置、一顯示器、揚聲器、一印表機及諸如此類者。
記憶體1018可包含一作業系統1028、一或多個資料儲存區1030及/或用於實施本文中揭示之特徵之一或多個應用程式或服務,包含一管理緩衝器1032及一記錄緩衝器1040。本文中所描述之模組可係軟體模組、硬體模組或其一適合組合。若模組係軟體模組,則該等模組可實施於一非暫時性電腦可讀取媒體上且由本文中所描述之電腦系統中之任一者中之一處理器來處理。應注意,所描述之程序及構架可即時地或在任何使用者相互作用之前依一不同步模式執行。模組可以圖10中提議之方式經組態,且/或本文中所描述之功能可由存在之一或多個模組提供,此乃因本文中所描述之單獨模組及/或模組功能可遍佈於多個模組上。
圖11圖解說明根據各項實施例之用於實施態樣之一實例性環境1100之態樣。如將理解,儘管出於闡釋目的使用一基於網頁(網頁)之環境,但可視情況使用不同環境來實施各項實施例。該環境包含一電子用戶端裝置1102,其可包含可操作以經由一適當網路1104發送並接收請求、訊息或資訊並將資訊傳送回至裝置之一使用者之任何適當裝 置。此類用戶端裝置之實例包含個人電腦、行動電話、手持型傳訊裝置、膝上型電腦、機上盒、個人資料助理、電子書閱讀器及諸如此類者。網路可包含任何適當網路、包含一內部網路、網際網路、一蜂巢式網路、一區域網路或任何其他此類網路或其組合。用於此一系統之組件可至少部分地取決於所選擇網路及/或環境之類型。用於經由此一網路通信之協定及組件係眾所周知的且在本文中將不加以詳細論述。可藉由有線或無線連接及其組合而啟用經由網路之通信。在此實例中,網路包含網際網路,此乃因環境包含用於接收請求並回應於其而服務內容之一網頁伺服器1106,不過對於其他網路,可使用服務一類似目的之一替代性裝置,如熟習此項技術者將理解。
說明性環境包含至少一個應用程式伺服器1108及一資料儲存區1110。應理解可存在數個應用程式伺服器、層,或可鏈結或以其他方式組態之其他元件、程序或組件,其等可相互作用以執行諸如自一適當資料儲存裝置獲得資料之任務。如本文中所使用,術語「資料儲存裝置」係指能夠儲存、存取及擷取資料之任何裝置或裝置之組合,其可包含任何標準、分散式或叢集式環境中的任何組合及數目之資料伺服器、資料庫、資料儲存裝置及資料儲存媒體。應用程式伺服器可包含用於與執行用戶端裝置之一或多個應用程式之態樣所需之資料儲存區整合,處理一應用程式之資料存取及商務邏輯之大部分的任何適當硬體及軟體。應用程式伺服器提供與資料儲存區協作之存取控制服務且能夠產生諸如將傳送至使用者之文字、圖形、音訊及/或視訊之內容,該內容在此實例中可由網頁伺服器以超文字標記語言(「HTML」)、可延伸標記語言(「XML」)或另一適當結構化語言之形式服務給使用者。所有請求及回應之處理以及內容在用戶端裝置1102與應用程式伺服器1108之間的遞送可由網頁伺服器處理。應理解,網頁及應用程式伺服器係不要求的且僅係實例性組件,此乃因可 對本文中其他處論述之任何適當裝置或主機機器執行本文中論述之結構化程式碼。
資料儲存區1110可包含數個單獨資料表、資料庫或用於儲存與一特定態樣相關之資料之其他資料儲存機構及媒體。舉例而言,所圖解說明之資料儲存區包含用於儲存可用以服務生產側之內容之生產資料1112及使用者資訊1116之機構。資料儲存區亦展示為包含用於儲存可用於報告、分析或其他此類目的之記錄資料1114之一機構。應理解,可存在可需要儲存於資料儲存區中以(諸如)用於頁面影像資訊及用以存取正確資訊之諸多其他態樣,該等資訊可視情況儲存於上文列出之機構中之任一者中或儲存於資料儲存區1110中之額外機構中。資料儲存區1110係可操作的,透過與其相關聯之邏輯,以自應用程式伺服器1108接收指令並回應於其而獲得、更新或以其他方式處理資料。在一項實例中,一使用者可提出針對一某一類型之項目之一搜尋請求。在此情形中,資料儲存區可存取使用者資訊以驗證使用者之身份且可存取目錄細節資訊以獲得有關彼類型之項目之資訊。資訊然後可諸如以使用者能夠經由使用者裝置1102上之一瀏覽器查看的一網頁上之一結果清單形式返回給使用者。可在瀏覽器之一專用頁面或窗口中查看受關注之一特定項目之資訊。
每一伺服器通常將包含提供用於彼伺服器之一般性管理及操作之可執行程式指令之一作業系統,且通常將包含儲存在由伺服器之一處理器執行時允許伺服器執行其預期功能之指令之一電腦可讀取儲存媒體(例如,一影碟、隨機存取記憶體、唯讀記憶體等)。特別是按照本發明,伺服器之作業系統及一般功能性之適合實施係已知的或係市場上可購得的,且由熟習此項技術者容易地實施。
一項實施例中之環境係利用經由通信連結使用一或多個電腦網路或直接連接互連之數個電腦系統及組件之一分散式計算環境。然 而,熟習此項技術者將瞭解,此一系統可具有比圖11中所圖解說明的更少或更大數目個組件之一系統。因此,對圖11中之系統1100之繪示應視為在性質上係說明性的且不限制本發明之範疇。
各項實施例可進一步實施於各種操作環境中,該等操作環境在某些情形中可包含可用以操作數個應用程式中之任一者之一或多個使用者電腦、計算裝置或處理裝置。使用者或用戶端裝置可包含數個通用個人電腦(諸如,運行一標準作業系統之桌上型或膝上型電腦)以及運行行動軟體且能夠支援數個聯網及傳訊協定之蜂巢式、無線及手持型裝置中之任一者。此一系統亦可包含運行各種市場上可購得之作業系統以及用於諸如開發及資料庫管理之目的之其他已知應用程式中之任一者之數個工作站。此等裝置亦可包含其他電子裝置,諸如虛設終端機、精簡型用戶端、遊戲系統及能夠經由一網路通信之其他裝置。
大部分實施例利用熟習此項技術者所熟知的用於使用各種市場上可購得之協定中之任一者支援通信之至少一個網路,該等市場上可購得之協定諸如傳輸控制協定/網際網路協定(「TCP/IP」)、開發系統互連(「OSI」)、檔案傳送協定(「FTP」)、通用隨插即用(「UpnP」)、網路檔案系統(「NFS」)、通用網際網路檔案系統(「CIFS」)及AppleTalk。網路可係(舉例而言)一區域網路、一廣域網路、一虛擬私人網路、網際網路、一內部網路、一外部網路、一公共交換電話網路、一紅外線網路、一無錢網路及其任何組合。
在利用一網頁伺服器之實施例中,網頁伺服器可運行各種伺服器或中層應用程式中之任一者,包含超文字傳送協定(「HTTP」)伺服器、FTP伺服器、通用閘道介面(「CGI」)伺服器、資料伺服器、Java伺服器及商務應用程式伺服器。伺服器亦可能夠(諸如)藉由執行可實施為以任何程式化語言(諸如,Java®、C、C#或C++)或任何指令碼語言(諸如,Perl、Python或TCL)以及其組合寫入之一或多個指令碼 或程式之一或多個網頁應用程式,執行來自使用者裝置之回應請求中之程式或指令碼。伺服器亦可包含資料庫伺服器,包含(但不限於)市場上可自Oracle®、Microsoft®、Sybase®及IBM®購得者。
環境可包含各種資料儲存區以及其他記憶體及儲存媒體,如上文所論述。此等可駐留於各種位置上,諸如駐留於在電腦中之一或多者本機(及/或駐留於其中)或在跨網路之任何或所有電腦遠端之一儲存媒體上。在一特定組之實施例中,資訊可駐留於熟習此項技術者所熟知之一儲存區網路(「SAN」)中。類似地,可視情況本機地及/或遠端地儲存用於執行歸屬於電腦、伺服器或其他網路裝置之功能之任何必要檔案。在一系統包含電腦化裝置之情況下,每一此類裝置可包含可經由一匯流排電耦合之硬體元件,該等元件包含(舉例而言)至少一個中央處理單元(「CPU」)、至少一個輸入裝置(例如,一滑鼠、鍵盤、控制器、觸控螢幕或小鍵盤)以及至少一個輸出裝置(例如,一顯示裝置、印表機或揚聲器)。此一系統亦可包含一或多個儲存裝置,諸如磁碟機、光學儲存裝置及固態儲存裝置,諸如隨機存取記憶體(「RAM」)或唯讀記憶體(「ROM」),以及可抽換式媒體裝置、記憶體卡、快閃記憶卡等
此類裝置亦可包含一電腦可讀取儲存媒體閱讀器、一通信裝置(例如,一數據機、一網路卡(無線或有線)、一紅外線通信裝置等)以及工作記憶體,如上文所描述。電腦可讀取儲存媒體閱讀器可與一電腦可讀取儲存媒體連接,或經組態以接收一電腦可讀取儲存媒體,該電腦可讀取儲存媒體表示用於暫時地及/或更永久性地含有、儲存、傳輸及擷取電腦可讀取資訊之遠端、本機、固定及/或可抽換式儲存裝置以及儲存媒體。系統及各種裝置通常亦將包含數個軟體應用程式、模組、服務或位於至少一個工作記憶體裝置內之其他元件,包含一作業系統及應用程式,諸如一用戶端應用程式或網頁瀏覽器。應瞭 解,替代實施例可具有自上文所描述者之眾多變化形式。舉例而言,亦可使用定製硬體,且/或可在硬體、軟體(包括便攜式軟體,諸如小應用程式等)或二者中實施特定元件。此外,可採用至其他計算機裝置(諸如,網路輸入/輸出裝置)之連接。
用於含有程式碼或程式碼之部分之儲存媒體及電腦可讀取媒體可包含此項技術中已知或使用之任何適當媒體,包含儲存媒體及通信媒體,諸如(但不限於)以用於儲存及/或傳輸資訊(諸如,電腦可讀取指令、資料結構、程式模組或其他資料)之任何方法或技術實施之揮發性及非揮發性、可抽換式及不可抽換式媒體,包含RAM、ROM、電子抹除式可程式化唯讀記憶體(「EEPROM」)、快閃記憶體或其他記憶體技術、光碟唯讀記憶體(「CD-ROM」)、數位通用磁碟(DVD)或其他光學儲存裝置、磁帶盒、磁帶、磁碟儲存裝置或其他磁性儲存裝置,或可用以儲存所要資訊且可由一系統裝置存取之任何其他媒體。基於本文中所提供之揭示內容及教示,熟習此項技術者將瞭解用以實施各項實施例之其他方式及/或方法。
因此,應將說明書及圖式視為說明性意義而非限制性意義。然而,將顯而易見的是,可在不背離如申請專利範圍中所陳述之本發明之較廣義精神及範疇之情況下對本發明做出各種修改及改變。
其他變化形式在本發明之精神內。因此,儘管所揭示之技術易受各種修改及替代性構造,但在圖式中展示且在上文已經詳細描述了所圖解說明之其某些實施例。然而,應理解,不意欲將本發明限制於所揭示之一或多個具體形式,而是相反地,意欲涵蓋落在本發明之精神及範疇內之所有修改、替代性構造及等效形式,如在隨附申請專利範圍中所界定。
除非本文中另有指示或上下文明顯矛盾,否則在描述所揭示之實施例之上下文中(尤其在以下申請專利範圍之上下文中)使用之術語 「一(a/an)」及及「該」及類似指示物應視為涵蓋單數與複數兩者。除非另外註明,否則術語「包括」、「具有」、「包含」及「含有」應視為開放式術語(亦即,意指「包括(但不限於)」)。術語「連接」視為部分地或整體地含納於內、附接至,或連結在一起,即使存在介入件。除非本文另外指明,否則本文所列舉之數值範圍僅意欲作為個別提及此範圍內之每一單獨值之一速記方法,且每一單獨值係如同在本文中個別列舉一般併入本說明書中。除非本文另有說明或上下文明顯矛盾,否則本文所描述之所有方法可以任何適宜次序實施。除非另有主張,否則,本文中所提供的任何及所有實例或例示性語言(例如,「諸如」)的使用僅意欲更好地闡明本發明且並不對本發明之範疇強加限制。本說明書中之任何語言皆不應視為指示任何未主張要素對於本發明之實踐必不可少。
除非本文另外明確指明,否則諸如片語「X、Y或Z中之至少一者」之析取語言意欲理解為在上下文內一般性地用以呈現一項目、項等可係X、Y或Z,或其任一組合(例如,X、Y及/或Z)。因此,此類析取語言通常不意欲且不應暗示某些實施例需要呈現X中之至少一者、Y中之至少一者,或Z者中之至少一者中的每一者。
本文中描述本發明之各種實施例,包括發明人已知用於實施本發明之最佳模式。熟習此項技術者在閱讀前述說明之後可旋即明瞭彼等實施例之變化形式。發明人預期熟習此項技術者視情況採用此類變化形式,且發明人意欲以除本文明確描述之外的方式實踐本發明。因此,本發明包含如適用法律允許之本文隨附申請專利範圍中所列舉標的物之所有修改形式及等效形式。此外,除非本文中另有指示或上下文另外明顯矛盾,否則本發明涵蓋上述要素在其所有可能的變化形式中之任何組合。

Claims (25)

  1. 一種用於模擬一周邊組件互連(PCI)組態空間之方法,該方法包括:藉由一PCI裝置之一PCI核心自一PCI根複合體接收一PCI組態存取請求;藉由該PCI核心將該PCI組態存取請求發送至該PCI裝置之一組態管理模組;藉由該組態管理模組判定該PCI組態存取請求係針對除該PCI核心之一原生組態空間之外的一組態空間;藉由組態管理硬體將與該PCI組態存取請求相關聯之一中斷請求發送至該PCI裝置之一模擬模組;回應於該中斷請求,藉由該模擬模組執行組態空間模擬軟體以自一模擬組態空間擷取一模擬組態;及使用該模擬組態服務該PCI組態存取請求。
  2. 如請求項1之方法,其中服務該PCI組態存取請求包含在該PCI組態存取請求係一組態讀取請求時將該模擬組態發送至該PCI根複合體。
  3. 如請求項2之方法,其中服務該PCI組態存取請求進一步包含修改該模擬組態。
  4. 如請求項1之方法,其中服務該PCI組態存取請求包含在該PCI組態存取請求係一組態寫入請求時更新該模擬組態。
  5. 如請求項1之方法,其中該模擬組態空間包含針對複數個PCI裝置之模擬組態。
  6. 如請求項1之方法,其中該模擬組態空間儲存於一DRAM中。
  7. 如請求項1之方法,其中該模擬組態空間儲存於一永久性記憶體 中。
  8. 如請求項1之方法,其中該組態空間模擬軟體係在一經隔離環境中執行。
  9. 一種設備,其包括:一模擬組件;一匯流排介面核心,其包含一組原生組態暫存器;及一組態管理組件,其耦合至該匯流排介面核心,該組態管理組件經組態以:自該匯流排介面核心接收一組態存取請求;請求該模擬組件自一模擬組態空間擷取一模擬組態;及使用該模擬組態服務該組態存取請求。
  10. 如請求項9之設備,其中該模擬組態空間包含針對複數個周邊裝置之模擬組態。
  11. 如請求項9之設備,其中該模擬組態表示一實體功能資源。
  12. 如請求項9之設備,其中該模擬組態表示一虛擬功能資源。
  13. 如請求項9之設備,其中經由執行在一經隔離環境中運行之組態模擬軟體而擷取該模擬組態。
  14. 如請求項9之設備,其中該組態管理組件包含用以追蹤該組態存取請求之進程之一狀態暫存器,且其中該狀態暫存器在完成服務該組態存取請求之後更新。
  15. 如請求項9之設備,其中該模擬組件耦合至一DRAM,且其中該模擬組態空間儲存於該DRAM中。
  16. 如請求項9之設備,其中該模擬組件耦合至一永久性記憶體,且其中該模擬組態空間儲存於該永久性記憶體中。
  17. 如請求項9之設備,其中該模擬組態空間儲存為一文字檔案。
  18. 如請求項9之設備,其中該模擬組件、該匯流排介面核心及該組 態管理組件中之至少一者包括一電子電路。
  19. 如請求項9之設備,其中該設備實施於一系統單晶片(SoC)、一特殊應用積體電路(ASIC)、一處理器或一場可程式化閘陣列(FPGA)中。
  20. 一種用於藉由一周邊裝置模擬一組態空間之方法,該方法包括:藉由該周邊裝置接收一組態存取請求;藉由該周邊裝置判定該組態存取請求係針對一模擬組態空間;藉由該周邊裝置自該模擬組態空間擷取一模擬組態;及藉由該周邊裝置使用該模擬組態服務該組態存取請求。
  21. 如請求項20之方法,其中該模擬組態空間包含針對複數個周邊裝置功能之模擬組態。
  22. 如請求項20之方法,其中該模擬組態表示一實體功能資源。
  23. 如請求項20之方法,其中該模擬組態表示一虛擬功能資源。
  24. 如請求項20之方法,其中服務該組態存取請求包含將該模擬組態提供給該組態存取請求之一來源。
  25. 如請求項20之方法,其中服務該組態存取請求包含更新該模擬組態。
TW104132725A 2014-10-05 2015-10-05 用於模擬組態空間之方法及周邊裝置 TWI655542B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462059914P 2014-10-05 2014-10-05
US62/059,914 2014-10-05

Publications (2)

Publication Number Publication Date
TW201629783A true TW201629783A (zh) 2016-08-16
TWI655542B TWI655542B (zh) 2019-04-01

Family

ID=54364667

Family Applications (2)

Application Number Title Priority Date Filing Date
TW104132725A TWI655542B (zh) 2014-10-05 2015-10-05 用於模擬組態空間之方法及周邊裝置
TW106117105A TWI655543B (zh) 2014-10-05 2015-10-05 用於模擬組態空間之方法及周邊裝置

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW106117105A TWI655543B (zh) 2014-10-05 2015-10-05 用於模擬組態空間之方法及周邊裝置

Country Status (9)

Country Link
US (4) US10521365B2 (zh)
EP (1) EP3204862B1 (zh)
JP (2) JP6543714B2 (zh)
KR (2) KR102125604B1 (zh)
CN (2) CN106796556B (zh)
IL (1) IL251417B (zh)
SG (1) SG11201702584UA (zh)
TW (2) TWI655542B (zh)
WO (1) WO2016057315A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321247B2 (en) 2014-10-05 2022-05-03 Amazon Technologies, Inc. Emulated endpoint configuration

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951412B (zh) * 2015-06-06 2018-01-02 华为技术有限公司 一种通过内存总线访问的存储装置
US10846195B2 (en) * 2015-10-05 2020-11-24 Unisys Corporation Configuring logging in non-emulated environment using commands and configuration in emulated environment
US10572180B1 (en) * 2015-11-09 2020-02-25 Seagate Technology Llc Method and apparatus to perform a function level reset in a memory controller
US10817456B2 (en) * 2015-11-18 2020-10-27 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10860520B2 (en) * 2015-11-18 2020-12-08 Oracle International Corporation Integration of a virtualized input/output device in a computer system
US10853303B2 (en) * 2015-11-18 2020-12-01 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
CN110537171B (zh) * 2017-04-21 2023-04-14 雷蛇(亚太)私人有限公司 测试设备及用于对设备驱动器软件进行测试的方法
US10360092B1 (en) * 2017-05-17 2019-07-23 Amazon Technologies, Inc. Hybrid hardware and software reporting management
US10908998B2 (en) 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
US20190095554A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Root complex integrated endpoint emulation of a discreet pcie endpoint
US10509758B1 (en) 2017-09-28 2019-12-17 Amazon Technologies, Inc. Emulated switch with hot-plugging
US10996969B1 (en) * 2017-11-28 2021-05-04 Amazon Technologies, Inc. Controlling access by a network interface
US10877766B2 (en) 2018-05-24 2020-12-29 Xilinx, Inc. Embedded scheduling of hardware resources for hardware acceleration
US10705993B2 (en) 2018-11-19 2020-07-07 Xilinx, Inc. Programming and controlling compute units in an integrated circuit
US11030144B2 (en) 2018-12-14 2021-06-08 Texas Instruments Incorporated Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC)
US10984062B2 (en) * 2019-01-07 2021-04-20 Citrix Systems, Inc. Device augmentation of real time communications
US10783100B2 (en) * 2019-03-27 2020-09-22 Intel Corporation Technologies for flexible I/O endpoint acceleration
US11265247B2 (en) * 2019-05-14 2022-03-01 Red Hat, Inc. Downtime reduction with VF MAC filter programming by hypervisors
CN111831330B (zh) * 2020-07-10 2022-02-01 深圳致星科技有限公司 用于联邦学习的异构计算系统设备交互方案
US11386034B2 (en) 2020-10-30 2022-07-12 Xilinx, Inc. High throughput circuit architecture for hardware acceleration
US20220197679A1 (en) * 2020-12-18 2022-06-23 Advanced Micro Devices (Shanghai) Co., Ltd. Modifying device status in single virtual function mode
CN113037286A (zh) * 2021-02-26 2021-06-25 许继集团有限公司 一种继电保护模拟量采样控制方法及装置
KR102568909B1 (ko) * 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 펑션 및 그 동작 방법
US11928070B2 (en) 2021-04-13 2024-03-12 SK Hynix Inc. PCIe device
KR102568906B1 (ko) * 2021-04-13 2023-08-21 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US11734217B2 (en) * 2021-12-13 2023-08-22 Xilinx, Inc. Software or firmware managed hardware capability and control configuration for PCIe devices
TWI831654B (zh) * 2023-03-21 2024-02-01 威聯通科技股份有限公司 儲存擴充系統與其資源配置方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60125116U (ja) 1984-01-31 1985-08-23 トヨタ自動車株式会社 ストツク手段を備えたシ−ト溶着装置
JPH09288583A (ja) * 1996-04-19 1997-11-04 Nec Corp 情報処理装置
JPH11288400A (ja) 1998-04-03 1999-10-19 Nec Shizuoka Ltd Pciブリッジデバイス
US6553439B1 (en) * 1999-08-30 2003-04-22 Intel Corporation Remote configuration access for integrated circuit devices
US6647434B1 (en) * 1999-12-28 2003-11-11 Dell Usa, L.P. Multifunction device with register space for individually enabling or disabling a function of plurality of functions in response to function configuration
US7035850B2 (en) * 2000-03-22 2006-04-25 Hitachi, Ltd. Access control system
US6823418B2 (en) * 2001-06-29 2004-11-23 Intel Corporation Virtual PCI device apparatus and method
US7103743B2 (en) * 2002-08-23 2006-09-05 Intel Corporation System and method of accessing vital product data
JP2005010919A (ja) * 2003-06-17 2005-01-13 Canon Inc 情報処理装置及び情報処理方法及びプログラム並びに記憶媒体
US7051749B2 (en) * 2003-11-24 2006-05-30 Advanced Technology Materials, Inc. Gas delivery system with integrated valve manifold functionality for sub-atmospheric and super-atmospheric pressure applications
US7383547B1 (en) * 2004-12-03 2008-06-03 Lecroy Corporation Apparatus and technique for device emulation
US7392172B2 (en) 2005-04-28 2008-06-24 Hewlett-Packard Development Company, L.P. Providing virtual device access via firmware
JP2007048019A (ja) * 2005-08-10 2007-02-22 Sony Computer Entertainment Inc エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム
US7743197B2 (en) * 2006-05-11 2010-06-22 Emulex Design & Manufacturing Corporation System and method for virtualizing PCIe devices
US7613847B2 (en) 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
JP4810349B2 (ja) * 2006-08-11 2011-11-09 日本電気株式会社 I/o装置及び方法
US20080228971A1 (en) 2007-03-13 2008-09-18 Rothman Michael A Device modeling in a multi-core environment
US8683110B2 (en) * 2007-08-23 2014-03-25 Nec Corporation I/O system and I/O control method
US7827343B2 (en) * 2007-09-20 2010-11-02 International Business Machines Corporation Method and apparatus for providing accelerator support in a bus protocol
JP2009187368A (ja) 2008-02-07 2009-08-20 Hitachi Ltd Usbポートの共有制御方法
US8359408B2 (en) * 2008-06-30 2013-01-22 Intel Corporation Enabling functional dependency in a multi-function device
JP5272265B2 (ja) * 2008-09-29 2013-08-28 株式会社日立製作所 Pciデバイス共有方法
US8346997B2 (en) * 2008-12-11 2013-01-01 International Business Machines Corporation Use of peripheral component interconnect input/output virtualization devices to create redundant configurations
US20100169069A1 (en) * 2008-12-29 2010-07-01 Nimrod Diamant Composite device emulation
US8595386B2 (en) * 2009-08-03 2013-11-26 Advanced Micro Devices, Inc. Software controlled redirection of configuration address spaces
US8521915B2 (en) 2009-08-18 2013-08-27 Fusion-Io, Inc. Communicating between host computers and peripheral resources in an input/output (I/O) virtualization system
JP5482263B2 (ja) * 2010-02-08 2014-05-07 日本電気株式会社 エンドポイント共有システムおよびデータ転送方法
US9852087B2 (en) * 2010-04-20 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Inline PCI-IOV adapter
US8782461B2 (en) * 2010-09-24 2014-07-15 Intel Corporation Method and system of live error recovery
US8527666B2 (en) * 2011-02-21 2013-09-03 International Business Machines Corporation Accessing a configuration space of a virtual function
US8966477B2 (en) 2011-04-18 2015-02-24 Intel Corporation Combined virtual graphics device
US9218195B2 (en) 2011-05-17 2015-12-22 International Business Machines Corporation Vendor-independent resource configuration interface for self-virtualizing input/output device
US9311127B2 (en) * 2011-12-16 2016-04-12 International Business Machines Corporation Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
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
US8832499B2 (en) 2012-08-06 2014-09-09 Lsi Corporation Methods and structure for trapping requests directed to hardware registers of an electronic circuit
JP2014085956A (ja) * 2012-10-25 2014-05-12 Fujitsu Semiconductor Ltd シミュレーション制御プログラム、シミュレーションプログラム、シミュレーション制御装置、シミュレーション装置、シミュレーション制御方法、およびシミュレーション方法
US8886671B1 (en) * 2013-08-14 2014-11-11 Advent Software, Inc. Multi-tenant in-memory database (MUTED) system and method
IN2013CH05400A (zh) * 2013-11-22 2015-05-29 Ineda Systems Pvt Ltd
WO2016057315A1 (en) 2014-10-05 2016-04-14 Amazon Technologies, Inc. Emulated endpoint configuration

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321247B2 (en) 2014-10-05 2022-05-03 Amazon Technologies, Inc. Emulated endpoint configuration
US11886355B2 (en) 2014-10-05 2024-01-30 Amazon Technologies, Inc. Emulated endpoint configuration

Also Published As

Publication number Publication date
KR20180129998A (ko) 2018-12-05
CN111258930B (zh) 2024-04-12
US10521365B2 (en) 2019-12-31
US20220253392A1 (en) 2022-08-11
CN106796556B (zh) 2020-02-11
JP2017535894A (ja) 2017-11-30
US20240126705A1 (en) 2024-04-18
IL251417B (en) 2020-06-30
US20160098365A1 (en) 2016-04-07
US20200133892A1 (en) 2020-04-30
US11321247B2 (en) 2022-05-03
SG11201702584UA (en) 2017-04-27
JP2019091494A (ja) 2019-06-13
JP6543714B2 (ja) 2019-07-10
IL251417A0 (en) 2017-05-29
KR20170051475A (ko) 2017-05-11
KR102125604B1 (ko) 2020-06-22
EP3204862B1 (en) 2019-09-18
TWI655542B (zh) 2019-04-01
WO2016057315A1 (en) 2016-04-14
US11886355B2 (en) 2024-01-30
JP6871957B2 (ja) 2021-05-19
CN111258930A (zh) 2020-06-09
CN106796556A (zh) 2017-05-31
TW201805821A (zh) 2018-02-16
KR102111229B1 (ko) 2020-05-14
EP3204862A1 (en) 2017-08-16
TWI655543B (zh) 2019-04-01

Similar Documents

Publication Publication Date Title
US11886355B2 (en) Emulated endpoint configuration
US11249937B1 (en) Storage adapter device for communicating with network storage
US10241951B1 (en) Device full memory access through standard PCI express bus
US9940123B1 (en) Updating device code through a bus
JP6514330B2 (ja) 複数のコンピュートサブシステムを備えるチップ上のシステム
US10067741B1 (en) Systems and methods for I/O device logging
US10621114B1 (en) Standardized interface for storage using an input/output (I/O) adapter device
US10509758B1 (en) Emulated switch with hot-plugging
US10915486B1 (en) Ingress data placement
US9912750B2 (en) Data path selection for network transfer using high speed RDMA or non-RDMA data paths
US10621134B1 (en) Generating transactions with a configurable port
US9864701B1 (en) Resource mapping for an input/output device
US10437760B2 (en) Virtual universal serial bus peripheral controller
EP3259673A1 (en) System on a chip comprising an i/o steering engine
US9984021B1 (en) Location-aware self-configuration of a peripheral device
US9836421B1 (en) Standardized interface for network using an input/output (I/O) adapter device
TW201514690A (zh) 基板管理控制器虛擬系統及方法