TWI649658B - 用於分散式虛擬化之設備、系統、控制器及方法 - Google Patents

用於分散式虛擬化之設備、系統、控制器及方法 Download PDF

Info

Publication number
TWI649658B
TWI649658B TW106104350A TW106104350A TWI649658B TW I649658 B TWI649658 B TW I649658B TW 106104350 A TW106104350 A TW 106104350A TW 106104350 A TW106104350 A TW 106104350A TW I649658 B TWI649658 B TW I649658B
Authority
TW
Taiwan
Prior art keywords
dvc
host computing
computing device
transaction
virtualization
Prior art date
Application number
TW106104350A
Other languages
English (en)
Other versions
TW201732633A (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 TW201732633A publication Critical patent/TW201732633A/zh
Application granted granted Critical
Publication of TWI649658B publication Critical patent/TWI649658B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1423Reconfiguring to eliminate the error by reconfiguration of paths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • 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/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • 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

Abstract

本發明包含關於分散式輸入/輸出(I/O)虛擬化之設備及方法。若干項實施例包含一種設備,該設備包括:一主機運算裝置;一分散式虛擬化控制器(DVC),其安置於該主機運算裝置上;及一虛擬化輸入/輸出(I/O)裝置,其與該DVC通信。

Description

用於分散式虛擬化之設備、系統、控制器及方法
本發明一般而言係關於分散式運算架構,且更特定而言,係關於與運算架構中之分散式輸入/輸出(I/O)虛擬化相關之系統、方法及設備。
分散式運算架構之特徵通常在於在多個主機運算裝置(例如,連接至一電腦網路之實體運算資源、電腦、伺服器、叢集等)當中共用一軟體系統及/或硬體系統之組件。舉例而言,一分散式運算架構可包含共用一或多個軟體組件及/或實體運算資源(例如,對硬體組件進行存取)之複數個主機運算裝置。主機運算裝置可分散於一有限地理區域內,或該等主機運算裝置可跨越各個地理區域而廣泛地分散。為促進軟體及/或實體運算資源之共用,主機運算裝置可與一網路交換器、管理主機及/或可允許主機運算裝置之間的互動的其他裝置通信。
在一主機運算裝置經組態以與一網路交換器通信之實例中,該交換器可將資料封包自一個主機運算裝置之一輸出路由至一或多個其他主機運算裝置之一輸入。以此方式,可在一分散式運算架構中之主機運算裝置當中共用各種軟體組件及/或硬體組件。
本發明之實施例包含用於分散式虛擬化之設備、系統、控制器及方法。根據本案所請發明之一實施例,提供一種分散式虛擬化設備,其包括:一主機運算裝置;一分散式虛擬化控制器(DVC),其包括實體地安置於該主機運算裝置上之電路;及一虛擬化輸入/輸出(I/O)裝置。該DVC包括實體地安置於該主機運算裝置上之電路,且該虛擬化I/O裝置係與該DVC通信。該虛擬化I/O裝置經組態以在該主機運算裝置與耦合至該虛擬化I/O裝置之另一主機運算裝置之間共用該虛擬化I/O裝置之資源,且其中該DVC經組態以將該I/O裝置虛擬化至於其上實體地安置該DVC之該主機運算裝置。
根據本案所請發明之另一實施例,提供一種分散式虛擬化系統,其包括:一第一主機運算裝置,其包含一第一分散式虛擬化控制器(DVC),該第一DVC包括實體地安置於該第一主機運算裝置上之電路;一第二主機運算裝置,其包含一第二DVC,該第二DVC包括實體地安置於該第二主機運算裝置上之電路;及一網路交換器,其與該第一主機運算裝置及該第二主機運算裝置通信。該第一DVC及該第二DVC與至少一個虛擬化輸入/輸出(I/O)裝置通信。於某些實施例中,該第一DVC經組態以將該至少一個虛擬化I/O裝置虛擬化至該第一主機運算裝置,且該第二DVC經組態以將該至少一個虛擬化I/O裝置虛擬化至該第二主機運算裝置。
根據本案所請發明之又一實施例,提供一種分散式虛擬化控制器(DVC),其包括:一虛擬化層輸入/輸出(I/O)處理區塊;一實體層I/O處理區塊;及一佇列介面。該虛擬化層I/O處理區塊經組態以判定一I/O異動是否將被轉發至與該DVC通信之一實體I/O且回應於該I/O異動將被轉發之該判定而將該I/O異動轉發至一實體層I/O處理區塊。該DVC係於實體地耦合 至該主機運算裝置之硬體中實施,且其中該DVC經組態以將該I/O虛擬化至與該DVC實體地耦合之該主機運算裝置。
根據本案所請發明之再一實施例,提供一種分散式虛擬化方法,其可包括:在包括電路並實體地耦合至一主機運算裝置之一分散式虛擬化控制器(DVC)處接收一輸入/輸出(I/O)異動;在與該DVC相關聯之一虛擬化層中識別用以接收該I/O異動之一實體I/O;及將該I/O異動轉發至與該DVC相關聯之一實體層。該DVC經組態以將該I/O異動虛擬化至與該DVC實體地耦合之該主機運算裝置。
120-1‧‧‧主機運算裝置
120-2‧‧‧主機運算裝置
120-N‧‧‧主機運算裝置
122‧‧‧交換器
124‧‧‧管理主機/管理主機運算裝置
126‧‧‧虛擬化輸入/輸出裝置
128-1‧‧‧分散式虛擬化控制器
128-2‧‧‧分散式虛擬化控制器
128-M‧‧‧分散式虛擬化控制器/管理主機運算裝置分散式虛擬化控制器
128-N‧‧‧分散式虛擬化控制器
230‧‧‧虛擬化層/虛擬層
232‧‧‧虛擬輸入/輸出組態空間介面
234‧‧‧虛擬輸入/輸出暫存器介面
236‧‧‧虛擬層輸入/輸出處理
238‧‧‧虛擬層佇列介面/虛擬佇列介面
240‧‧‧實體層
242‧‧‧實體輸入/輸出暫存器介面
244‧‧‧錯誤處理引擎
246‧‧‧實體層輸入/輸出處理
248‧‧‧實體層佇列介面
328-1‧‧‧分散式虛擬化控制器/分散式虛擬化控制器0
328-2‧‧‧分散式虛擬化控制器/分散式虛擬化控制器1
328-N‧‧‧分散式虛擬化控制器/分散式虛擬化控制器N-1
350-1‧‧‧輸入/輸出佇列/輸入/輸出暫存器/第一輸入/輸出暫存器/輸入/輸出
350-2‧‧‧輸入/輸出佇列/輸入/輸出暫存器/輸入/輸出
350-N‧‧‧輸入/輸出佇列/輸入/輸出暫存器/輸入/輸出
351-1‧‧‧佇列基底位址暫存器/第一佇列基底位址暫存器qDVC0[I/Ox]
351-2‧‧‧佇列基底位址暫存器/第二佇列基底位址暫存器qDVC1[I/Ox]
351-N‧‧‧佇列基底位址暫存器/第(n-1)佇列基底位址暫存器qDVCN-1[I/Ox]
352-1‧‧‧佇列基底位址暫存器
352-2‧‧‧佇列基底位址暫存器
352-N‧‧‧佇列基底位址暫存器
353-1‧‧‧佇列基底位址暫存器
353-2‧‧‧佇列基底位址暫存器
353-N‧‧‧佇列基底位址暫存器/輸入/輸出
圖1係根據本發明之若干項實施例之用於分散式I/O虛擬化之一系統之一方塊圖。
圖2係根據本發明之若干項實施例之一分散式虛擬化控制器架構之一方塊圖。
圖3係圖解說明根據本發明之若干項實施例之用於一分散式I/O虛擬化系統之一佇列介面之一圖式。
本發明包含與運算架構中之分散式輸入/輸出(I/O)虛擬化相關之系統、方法及設備。若干項實施例包含一種設備,該設備包括:一主機運算裝置;一分散式虛擬化控制器(DVC),其安置於該主機裝置上;及一虛擬化輸入/輸出(I/O)裝置,其與該DVC通信。
本發明之若干項實施例包含一種用於分散式輸入/輸出(I/O)虛擬化之方法,該方法包括:在安置於一主機運算裝置上之一分散式虛擬化控制器(DVC)處攔截一輸入/輸出(I/O)異動;在與該DVC相關聯之一虛擬化層中 識別用以接收該I/O異動之一實體I/O;及將該I/O異動轉發至與該DVC相關聯之一實體層。
如上文所論述,通常在一分散式運算架構中之主機運算裝置當中共用某些軟體組件及/或實體運算資源。然而,某些習用分散式運算架構不共用輸入/輸出(I/O)裝置。舉例而言,在某些習用分散式運算架構中,存在與每一主機運算裝置相關聯之一或多個各別專用I/O裝置。
已使用稱為I/O虛擬化之方法做出允許在主機運算裝置當中共用I/O裝置之某些嘗試。I/O虛擬化可允許在複數個主機運算裝置當中共用與一特定I/O裝置相關聯之主機運算裝置。雖然I/O虛擬化可允許一I/O裝置呈現為用作多於一個I/O裝置(即使每一虛擬I/O裝置係與一特定主機運算裝置相關聯),但某些涉及I/O虛擬化之當前可用方案可遭受若干個缺點。
舉例而言,某些用於I/O虛擬化之方法具有有限可擴縮性,此乃因該等方法係基於軟體的或依賴於一集中式控制器來提供I/O虛擬化功能性。然而,隨著頻寬增加及I/O處理要求變得更加嚴格,此等方法可係不充分的。另外,隨著一分散式運算架構中之主機運算裝置(例如,伺服器及/或叢集)之數目增加,系統要求同樣增加,此進一步使此等系統之效能中之不利效應加劇。為解決此等缺點,某些用於I/O虛擬化之方法已包含添加一或若干額外控制器(舉例而言,一集中式虛擬控制器)。然而,添加額外控制器增加費用及系統之複雜性且可遭受有限可擴縮性。
相比而言,本發明之實施例包含一分散式運算架構,其中虛擬化功能性係分散至分散式運算架構中之主機運算裝置且以硬體實施。在至少一項實施例中,本文中所闡述之分散式運算架構可包含使用具有一多佇列介面(例如,非揮發性記憶體主機控制器介面工作組(NVMe)、Intel®虛擬機 器裝置佇列(VMDq)等)之一協定,或可包含使用一多功能高速周邊組件互連(PCIe)I/O(諸如一單一根I/O虛擬化順應I/O裝置)。
本發明之某些實施例可允許與某些依賴於集中式虛擬化控制器之先前方法相比具有經增加效能,舉例而言,此乃因與此等方法相比而言,完成異動不必多次橫穿交換器網狀架構(switch fabric)。舉例而言,來自一虛擬化I/O之一I/O異動可僅橫穿網路交換器一次。因此,與某些先前方法相比可改良延遲。另外,某些實施例可允許相對於某些先前方法改良可擴縮性,此乃因將虛擬化功能性分散至分散式運算架構中之一或多個主機運算裝置不需要額外控制器。此外,由於虛擬化功能性係跨越多個裝置被劃分,因此一分散式I/O虛擬化架構之一效能佔據面積可增加。
在某些實施例中,經分配用於虛擬化之記憶體可為分散式,此與在某些先前方法中關聯於一單個位置相反。舉例而言,在某些實施例中,經分配用於虛擬化之記憶體可由一分散式運算架構中之複數個主機運算裝置提供。在某些實施例中,與該等主機運算裝置中之一或多者相關聯之記憶體之某一部分可用於擴大虛擬化功能性。
另外,本發明之實施例可允許減小與部署複數個集中式控制器相關聯之複雜性及/或減小管理錯誤。此外,可使在某些先前方法中可由集中式控制器使用之額外交換埠可用於額外主機運算裝置及/或I/O,及/或交換網狀架構之大小可得以減小,藉此減少與分散式運算架構相關聯之成本。
在本發明之以下詳細說明中,參考形成本文之一部分且其中由圖解說明方式展示可如何實踐本發明之一或多項實施例之附圖。充分詳細地闡述此等實施例以使熟習此項技術者能夠實踐本發明之實施例,且應理解,可利用其他實施例且可在不背離本發明之範疇之情況下做出程序、電及/ 或結構改變。如本文中所使用,諸如「N」、「M」等標示符(特定而言,關於圖式中之元件符號)指示可包含如此標示之若干個特定特徵。如本文中所使用,「若干個」某一特定事物可係指此類事物中之一或多者(例如,若干個記憶體陣列可係指一或多個記憶體陣列)。「複數個」意欲指代此類事物中之多於一者。
本文中之各圖遵循其中第一個數字或前幾個數字對應於圖式之圖編號且其餘數字識別圖式中之一元件或組件之一編號慣例。不同圖之間的類似元件或組件可藉由使用類似數字來識別。舉例而言,在圖1中150可指代元件「50」,且在圖2中一類似元件可指代為250。如將瞭解,可添加、更換及/或消除本文中各種實施例中所展示之元件以便提供本發明之若干項額外實施例。另外,如將瞭解,各圖中所提供之元件之比例及相對尺度意欲圖解說明本發明之某些實施例且不應視為具有一限制意義。
圖1係根據本發明之若干項實施例之用於分散式I/O虛擬化之一系統之一方塊圖。如圖1中所圖解說明,各自包含一各別分散式虛擬化控制器(DVC)128-1、128-2、128-N之複數個主機運算裝置120-1、120-2、...、120-N通信地耦合至複數個虛擬化I/O裝置126。複數個主機運算裝置120-1、120-2、...、120-N可經由一交換器122(例如,一網路交換器)通信地耦合至複數個虛擬化I/O裝置126。虛擬化I/O裝置126可係網路介面卡、儲存裝置、圖形渲染裝置或其他虛擬化I/O裝置。在圖1之實例中,圖解說明一單個交換器122;然而,可使用其他交換拓撲。舉例而言,可使用一多級/級聯交換拓撲(諸如一樹結構(例如,胖樹))。在某些實施例中,系統包含一管理主機124,管理主機124包含一DVC 128-M。
在某些實施例中,DVC 128-1、128-2、...、128-N可經組態以提供 各種功能性,該功能性允許在主機運算裝置120-1、120-2、...、120-N及/或管理主機運算裝置124之間有效地共用虛擬化I/O裝置126當中之I/O裝置。舉例而言,每一各別DVC 128-1、128-2、...、128-N可為其安置於上面之主機運算裝置提供針對虛擬化I/O裝置126中之一或多者之虛擬化功能性。亦即,在某些實施例中,安置於主機運算裝置120-1上之DVC 128-1可經組態使得虛擬化I/O裝置126中之一或多者可由主機運算裝置120-1使用,而DVC 128-2可經組態使得虛擬化I/O裝置126中之一或多者由主機運算裝置120-2使用。在某些實施例中,每一各別DVC 128-1、128-2、...、128-N可經由交換器122而與管理主機運算裝置DVC 128-M通信以協調系統之各別主機運算裝置120-1、120-2、...、120-N當中的虛擬化功能性。本文中結合圖2對DVC 128-1、128-2、...、128-N之功能性進行更詳細地闡述。
圖2係根據本發明之若干項實施例之一分散式虛擬化控制器(DVC)架構之一方塊圖。如圖2中所圖解說明,DVC包含一虛擬化層230及一實體層240。虛擬化層230可與在主機運算裝置(例如,主機運算裝置120-1、120-2、...、120-N)上運行之系統軟體(例如,作業系統軟體、BIOS軟體等)進行通信。在某些實施例中,虛擬化層230可將一或多個周邊組件互連(PCI)及/或一或多個高速周邊組件互連(PCIe)功能公開給系統軟體。為簡單起見,本文中所揭示之實施例參考PCIe;然而,如熟習此項技術者將瞭解,亦預期其他互連系統(諸如PCI以及其他)。
虛擬化層230可包含一虛擬I/O組態空間介面232、一虛擬I/O暫存器介面234、虛擬層I/O處理236及/或一虛擬層佇列介面238。實體層240可包含一實體I/O暫存器介面242、錯誤處理引擎244、實體層I/O處理246及/ 或實體層佇列介面248。在某些實施例中,虛擬化層230及實體層240之組件、區塊及/或引擎可包含經組態以執行某些任務或行動之硬體及/或軟體(但至少包含硬體)。舉例而言,虛擬化層230及實體層240之組件可呈一特殊應用積體電路(ASIC)之形式。
在某些實施例中,系統軟體可偵測已由DVC公開之一PCIe功能,且回應於此而對一虛擬I/O裝置進行組態。舉例而言,PCIe功能之偵測及組態可在枚舉期間執行。然後,系統軟體可載入用於虛擬I/O裝置之任何相關裝置驅動程式並將該等相關裝置驅動程式附加至適當網路驅動程式堆疊。舉例而言,若I/O係一網路介面卡(NIC),則系統軟體可載入一NIC驅動程式並將該NIC驅動程式附加至網路驅動程式堆疊。在某些實施例中,新載入之驅動程式對虛擬I/O裝置進行組態,如同該驅動程式係直接對實體I/O裝置進行定址。在某些實施例中,驅動程式可在其虛擬I/O裝置上設置各種暫存器。
在某些實施例中,DVC可接收來自一多佇列介面之支援。由於主機運算裝置期望I/O支援一佇列介面,因此虛擬化層230可將一佇列介面公開給主機運算裝置。在某些實施例中,虛擬佇列介面238可獨立於與一實體I/O相關聯之一佇列介面。舉例而言,可將與經虛擬化之實體I/O相關聯之一單個佇列指派給一DVC;然而,該DVC仍可將多個佇列公開給主機運算裝置。
虛擬化層230可包含虛擬層I/O處理236。在某些實施例中,虛擬層I/O處理236可包含DVC自主機運算裝置攔截I/O異動。然後,可(舉例而言)由虛擬層I/O處理236來在本端處理此等異動。在某些實施例中,可使用用於I/O處理之一推入(push)或提取(pull)方法來執行虛擬層I/O處理 236。舉例而言,對於本文中所闡述之架構,是否使用一推入或提取方法來進行I/O處理可係顯而易見的。
虛擬層I/O處理236負責檢查來自主機運算裝置之一I/O異動及判定該I/O異動是否將被轉發至一實體I/O。在某些實施例中,虛擬層I/O處理236區塊負責識別用以接收I/O異動之實體I/O。舉例而言,虛擬層I/O處理236可在系統中之複數個實體I/O裝置當中識別將接收一特定I/O異動之一實體I/O裝置。
在完成I/O異動之後,旋即可將一通知發送至主機運算裝置以指示已完成異動。通知之方法取決於由裝置驅動程式支援之方案;然而,在至少一項實施例中,通知可呈一中斷之形式。舉例而言,諸如INTx、MSI及MSI-X等中斷機制可用於提供通知。然而,實施例並非限於此;且亦可使用輪詢(例如,輪詢I/O或軟體驅動I/O)機制來提供通知。
在某些實施例中,DVC負責為一單個主機運算裝置來虛擬化I/O。此可簡化錯誤隔離,因為每一主機運算裝置可與發生於分散式運算架構中之其他主機運算裝置上之問題隔離。
DVC之實體層240可包含一實體層佇列介面248,實體層佇列介面248可與系統中之實際、實體硬體介接且可由管理軟體組態。舉例而言,在系統初始化期間,管理軟體可在DVC中建立裝置佇列。在某些實施例中,DVC可係安置於耦合至主機運算裝置之一卡上。舉例而言,DVC可位於實體地耦合至主機運算裝置之一卡上。該等佇列可係一單個裝置上之一多佇列介面之部分,或該等佇列可係一多功能I/O裝置(例如,一單一根I/O虛擬化(SR-IOV)裝置)上之一多佇列介面之部分。
在某些實施例中,將DVC上之至少一個佇列指派給支援一多佇列介 面之實體I/O。在一SR-IOV順應I/O裝置之實例中,實體I/O上之一虛擬功能係映射至DVC上之一虛擬I/O裝置。在某些實施例中,每一I/O佇列暫存器(例如,每一I/O佇列基底位址暫存器)可被1:1地映射至實體層佇列介面248。舉例而言,一第一I/O佇列暫存器可經由實體層佇列介面映射至DVC上之一各別佇列。
DVC亦可包含實體層I/O處理246。在某些實施例中,當虛擬化層230識別出用以接收一I/O異動之一實體I/O時,該異動可被轉發至實體層240。在某些實施例中,實體層240上之實體層I/O處理246可修改指向與該異動相關聯之資料之位址,且可將該異動遞送至實體I/O。在某些實施例中,該異動可係用於一主機匯流排配接器(HBA)之一儲存命令及/或用於一NIC之一描述符。
在某些實施例中,該位址可係一64位元記憶體位址,其中保留8個位元用於路由欄位。高位址位元可用於路由及/或用以允許I/O自與主機運算裝置中之一或多者相關聯之記憶體存取資料。舉例而言,對異動之位址修改可用於路由目的且可允許I/O自相關儲存位置(例如,主機運算裝置記憶體)存取資料。然而,實施例並非限於此;且記憶體位址及/或路由欄位之大小可更小或更大,只要該位址包含足夠位元以用於定址目的即可。
在某些實施例中,分散式I/O虛擬化允許執行中(in-flight)位址修改。舉例而言,可在由I/O裝置提取指向與一I/O異動相關聯之資料之一位址時修改該位址。此可允許一虛擬化系統所使用之記憶體之一減少。在某些實施例中,執行中位址修改可由I/O介面協定指定。
實體層I/O處理246可接收及/或處理來自一實體I/O之一異動完成之通知。在某些實施例中,實體層240處之一異動通知獨立於虛擬層230處之 一異動通知。在某些實施例中,可基於來自實體I/O之一回應暗示一通知,而至主機運算裝置之一完成通知可係一顯式中斷機制。
在某些實施例中,DVC之實體層240包含一實體I/O暫存器介面242。該實體I/O暫存器介面可為DVC提供對實體I/O暫存器之存取。舉例而言,在某些實施例中,並非佇列介面之部分之實體I/O暫存器僅由管理主機(例如,圖1中所圖解說明之管理主機124)寫入。在某些實施例中,DVC可存取唯讀實體I/O暫存器。舉例而言,實體I/O暫存器介面242可允許DVC接收與實體I/O暫存器相關聯之值,使得DVC可與實體I/O暫存器通信而不必修改該等值。
DVC之實體層240可包含錯誤處理引擎244。在某些實施例中,若DVC與一或多個虛擬化I/O之間的通信發生故障,則錯誤處理引擎244可模擬一回應以指示一錯誤。舉例而言,錯誤處理引擎244可模擬一完成中止(CA)或未受支援請求(UR)回應以將錯誤指示給驅動程式。舉例而言,錯誤處理引擎244可模擬一PCIe CA或PCIe UR回應。在某些實施例中,此可防止整個系統之故障及/或可防止主機運算裝置上之作業系統崩潰。若發生一故障,則可由管理主機在實體I/O上起始一恢復機制。舉例而言,管理主機可回應於實體I/O之一故障或實體I/O無回應之一指示而起始呈對實體I/O之一重設及/或電力循環之形式之一恢復機制。在某些實施例中,可使用一頻帶外控制路徑(例如,獨立於一頻帶內資料路徑之一路徑)來起始恢復機制。
在某些實施例中,可在虛擬化層230及實體層240上實施服務品質(QoS)。在虛擬層上,DVC可跨越與一虛擬I/O相關聯之多個佇列實施任何QoS方案(例如,循環法(round robin)、加權循環法、加權公平佇列 等)。在某些實施例中,可舉例說明此等佇列或將此等佇列指派給一或多個虛擬機器。可為每一佇列指派一權重或可強加一嚴格優先權方案。
在實體層240處,每一實體I/O可組態有針對映射至一DVC之每一佇列之仲裁優先權。舉例而言,實體I/O裝置然後可使用佇列優先權來區分主機運算裝置之間的訊務。在某些實施例中,DVC可實施一適應性方法,其中一或多個參數可經調整以適合各種QoS要求。
圖3係圖解說明根據本發明之若干項實施例之用於一分散式I/O虛擬化系統之一佇列介面之一圖式。在圖3之實例中,自DVC及I/O之角度圖解說明具有N個主機運算裝置及M個I/O之一系統。如圖3中所圖解說明,qDVC[I/O x ]表示DVC上映射至I/Ox之一佇列。與每一I/O佇列350-1、350-2、...、350-N相關聯之位址暫存器可被映射至每一各別DVC 328-1、328-2、...、328-N。
在某些實施例中,每一I/O暫存器350-1、350-2、...、350-N可具有與其相關聯之複數個佇列基底位址暫存器(QBAR)。舉例而言,一第一I/O暫存器350-1可具有與其相關聯之一第一QBAR qDVC 0 [I/O x ]351-1、一第二QBAR qDVC 1 [I/O x ]351-2及一第(n-1)QBAR qDVC N-1 [I/O x ]351-N。類似地,額外I/O暫存器(例如,I/O暫存器350-2、...、350-N)可具有與其相關聯之複數個QBAR。
如圖3中所圖解說明,與各種I/O 350-1、350-2、...、350-N相關聯之QBAR可被映射至各別DVC 328-1、328-2、...、328-N,,使得與每一I/O 350-1、350-2、...、350-N相關聯之一各別QBAR(例如,QBAR 351-1、351-2、...、351-N、352-1、352-2、...、352-N)被公開給各別DVC 328-1、328-2、...、328-N。舉例而言,與I/O 350-1相關聯之QBAR 351- 1可被映射至DVC0 328-1之第一佇列,與I/O 350-1相關聯之QBAR 351-2可被映射至DVC1 328-2之第一佇列,且與I/O 350-1相關聯之QBAR 351-N可被映射至DVCN-1 328-N之第一佇列。類似地,與I/O 350-2相關聯之一QBAR 352-1可被映射至DVC0 328-1之第二佇列,與I/O 350-2相關聯之QBAR 352-2可被映射至DVC1 328-2之第二佇列,且與I/O 350-2相關聯之QBAR 352-N可被映射至DVCN-1 328-N之第二佇列。此映射可持續至一第n DVC及一第n I/O,使得與I/O 353-N相關聯之QBAR 353-1可被映射至DVC0 328-1之一第n佇列,與I/O 353-N相關聯之QBAR 353-2可被映射至DVC1 328-2之一第n佇列,且與I/O 353-N相關聯之QBAR 353-N可被映射至DVCN-1 328-N之一第n佇列。
雖然本文中已圖解說明及闡述特定實施例,但熟習此項技術者將瞭解,經計算以達成相同結果之一配置可替代所展示之特定實施例。本發明意欲涵蓋本發明之一或多項實施例之更改或變化形式。應理解,以上說明已以一說明性方式而非一限定性方式做出。在審閱以上說明後,熟習此項技術者旋即將明瞭以上實施例之組合及本文中未具體闡述之其他實施例。本發明之一或多項實施例之範疇包含其中使用以上結構及方法之其他應用。因此,應參考隨附申請專利範圍連同此申請專利範圍被授權之等效內容之全部範圍來判定本發明之一或多項實施例之範疇。
在前述「實施方式」中,出於簡化本發明之目的,將某些特徵一起分群於一單項實施例中。本發明之此方法不應解釋為反映本發明之所揭示實施例必須使用比每一請求項中所明確陳述多之特徵之一意圖。而是,如以下申請專利範圍反映,發明性標的物在於少於一單項所揭示實施例之所有特徵。因此,特此將以下申請專利範圍併入至「實施方式」中,其中每 一請求項獨立地作為一單獨實施例。

Claims (21)

  1. 一種分散式虛擬化(distributed virtualization)設備,其包括:一主機運算裝置;一分散式虛擬化控制器(DVC),其包括實體地安置於該主機運算裝置上之電路(circuitry);及一虛擬化輸入/輸出(I/O)裝置,其與該DVC通信,其中該虛擬化I/O裝置經組態以在該主機運算裝置與耦合至該虛擬化I/O裝置之另一主機運算裝置之間共用該虛擬化I/O裝置之資源,且其中該DVC經組態以將該I/O裝置虛擬化至於其上實體地安置該DVC之該主機運算裝置。
  2. 如請求項1之設備,其進一步包括一管理主機運算裝置,該管理主機運算裝置包含安置於其上之一DVC,其中該管理主機運算裝置與一網路交換器通信。
  3. 如請求項2之設備,其中該管理主機運算裝置經組態以回應於一錯誤狀況而在與該DVC通信之一實體I/O裝置上起始一恢復機制。
  4. 如請求項1之設備,其中該DVC經組態以將至少一個佇列(queue)公開給該主機運算裝置。
  5. 如請求項4之設備,其中該至少一個佇列係一多佇列介面之部分。
  6. 如請求項1之設備,其中該DVC包括一虛擬化層及一實體層,該虛擬化層將至少一個周邊裝置公開給該主機運算裝置,且該實體層提供介於一實體I/O裝置與該主機運算裝置之間的一介面。
  7. 如請求項1之設備,其中該DVC至少部分地基於該主機運算裝置偵測到一周邊裝置而對一虛擬I/O裝置進行組態。
  8. 如請求項1之設備,其中該DVC經組態以將與一實體I/O裝置相關聯之一功能映射至該DVC上之一虛擬化I/O裝置以提供該虛擬化I/O裝置與該DVC之間的通信。
  9. 一種分散式虛擬化系統,其包括:一第一主機運算裝置,其包含一各別第一分散式虛擬化控制器(DVC),該各別第一DVC包括實體地安置於該第一主機運算裝置上之電路;一第二主機運算裝置,其包含一各別第二DVC,該各別第二DVC包括實體地安置於該第二主機運算裝置上之電路,其中該第一DVC及該第二DVC與至少一個虛擬化輸入/輸出(I/O)裝置通信,其中該第一DVC經組態以將該至少一個虛擬化I/O裝置虛擬化至該第一主機運算裝置,且其中該第二DVC經組態以將該至少一個虛擬化I/O裝置虛擬化至該第二主機運算裝置;及一網路交換器,其與該第一主機運算裝置及該第二主機運算裝置通信。
  10. 如請求項9之系統,其進一步包括包含一各別管理主機DVC之一管理主機運算裝置,該管理主機運算裝置與該交換器通信。
  11. 如請求項9之系統,其進一步包括與該至少一個虛擬化I/O裝置相關聯之複數個佇列基底位址暫存器(QBAR)。
  12. 如請求項11之系統,其中與該至少一個虛擬化I/O裝置相關聯之一第一QBAR被映射至該第一主機運算裝置,且與該至少一個虛擬化I/O裝置相關聯之一第二QBAR被映射至該第二主機運算裝置。
  13. 如請求項9之系統,其中來自該I/O裝置之一I/O異動橫穿該網路交換器僅一次。
  14. 一種分散式虛擬化控制器(DVC),其包括:一虛擬化層輸入/輸出(I/O)處理區塊;一實體層I/O處理區塊;及一佇列介面,其中該虛擬化層I/O處理區塊經組態以:判定一I/O異動(transaction)是否將被轉發至與該DVC通信之一實體I/O;且回應於該I/O異動將被轉發之該判定而將該I/O異動轉發至一實體層I/O處理區塊,其中該DVC係於實體地耦合至該主機運算裝置之硬體中實施,且其中該DVC經組態以將該I/O虛擬化至與該DVC實體地耦合之該主機運算裝置。
  15. 如請求項14之DVC,其中該DVC係安置於一分散式運算架構中之一主機運算裝置上。
  16. 如請求項14之DVC,其中該虛擬層I/O處理區塊進一步經組態以回應於該I/O異動正被轉發至該實體I/O而將一通知發送至與該DVC相關聯之一主機運算裝置。
  17. 如請求項14之DVC,其中該實體層I/O處理區塊進一步經組態以回應於該I/O異動正被處理而接收來自該實體I/O之一通知。
  18. 如請求項14之DVC,其中該實體層I/O處理區塊經組態以:修改與該I/O異動相關聯之一位址;且將該I/O異動轉發至該實體I/O。
  19. 如請求項18之DVC,其中該實體層I/O處理區塊經組態以在將該I/O異動轉發至該實體I/O之同時修改與該I/O異動相關聯之一位址。
  20. 一種分散式虛擬化方法,其包括:在包括電路並實體地耦合至一主機運算裝置之一分散式虛擬化控制器(DVC)處接收一輸入/輸出(I/O)異動,其中該DVC經組態以將該I/O異動虛擬化至與該DVC實體地耦合之該主機運算裝置;在與該DVC相關聯之一虛擬化層中識別用以接收該I/O異動之一實體I/O;及將該I/O異動轉發至與該DVC相關聯之一實體層。
  21. 如請求項20之方法,其進一步包括在於該DVC處接收該I/O異動之同時修改與該I/O異動相關聯之一位址。
TW106104350A 2016-02-11 2017-02-10 用於分散式虛擬化之設備、系統、控制器及方法 TWI649658B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/041,207 US10073725B2 (en) 2016-02-11 2016-02-11 Distributed input/output virtualization
US15/041,207 2016-02-11

Publications (2)

Publication Number Publication Date
TW201732633A TW201732633A (zh) 2017-09-16
TWI649658B true TWI649658B (zh) 2019-02-01

Family

ID=59561528

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106104350A TWI649658B (zh) 2016-02-11 2017-02-10 用於分散式虛擬化之設備、系統、控制器及方法

Country Status (6)

Country Link
US (2) US10073725B2 (zh)
EP (1) EP3414669A4 (zh)
KR (1) KR101942228B1 (zh)
CN (1) CN108701115A (zh)
TW (1) TWI649658B (zh)
WO (1) WO2017139116A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10380042B2 (en) * 2016-11-22 2019-08-13 International Business Machines Corporation Dispatch input/output traffic to channels with multiple channel communication array queues
US20180335971A1 (en) * 2017-05-16 2018-11-22 Cisco Technology, Inc. Configurable virtualized non-volatile memory express storage
US10884878B2 (en) * 2018-06-07 2021-01-05 International Business Machines Corporation Managing a pool of virtual functions
US11314833B1 (en) 2021-08-24 2022-04-26 metacluster lt, UAB Adaptive data collection optimization

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430630B2 (en) 2005-10-27 2008-09-30 International Business Machines Corporation Routing mechanism in PCI multi-host topologies using destination ID field
JP2007249441A (ja) * 2006-03-15 2007-09-27 Hitachi Ltd 仮想化システム及び障害対処方法
KR100956640B1 (ko) * 2007-11-06 2010-05-11 전자부품연구원 리소스 자율 공유 인터페이스 장치 및 방법
GB2455347B (en) 2007-12-07 2012-04-11 Virtensys Ltd Control path I/O virtualisation
US9880954B2 (en) 2008-12-01 2018-01-30 Micron Technology, Inc. Method and apparatus for providing data access
US8868675B2 (en) * 2008-12-04 2014-10-21 Cisco Technology, Inc. Network optimization using distributed virtual resources
US8671405B2 (en) * 2010-03-31 2014-03-11 Microsoft Corporation Virtual machine crash file generation techniques
US9218219B2 (en) 2010-11-24 2015-12-22 International Business Machines Corporation Managing virtual functions of an input/output adapter
US8412818B2 (en) * 2010-12-21 2013-04-02 Qualcomm Incorporated Method and system for managing resources within a portable computing device
US20120263191A1 (en) * 2011-04-12 2012-10-18 Red Hat Israel, Inc. Mechanism For Managing Quotas In a Distributed Virtualization Environment
WO2014101218A1 (zh) * 2012-12-31 2014-07-03 华为技术有限公司 一种计算存储融合的集群系统
US9239730B2 (en) 2013-01-11 2016-01-19 Red Hat Israel, Ltd. Managing connections in a distributed virtualization environment
US9733958B2 (en) * 2014-05-15 2017-08-15 Nutanix, Inc. Mechanism for performing rolling updates with data unavailability check in a networked virtualization environment for storage management
US9703652B2 (en) * 2014-06-07 2017-07-11 Vmware, Inc. VM and host management function availability during management network failure in host computing systems in a failover cluster
US9542320B2 (en) * 2015-01-12 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-node cache coherency with input output virtualization
US9952889B2 (en) * 2015-11-11 2018-04-24 Nutanix, Inc. Connection management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services

Also Published As

Publication number Publication date
US20170235584A1 (en) 2017-08-17
US11086703B2 (en) 2021-08-10
TW201732633A (zh) 2017-09-16
US10073725B2 (en) 2018-09-11
KR20180102224A (ko) 2018-09-14
CN108701115A (zh) 2018-10-23
US20180341536A1 (en) 2018-11-29
WO2017139116A1 (en) 2017-08-17
EP3414669A1 (en) 2018-12-19
KR101942228B1 (ko) 2019-04-11
EP3414669A4 (en) 2019-09-11

Similar Documents

Publication Publication Date Title
US11102117B2 (en) In NIC flow switching
US9734096B2 (en) Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US7913024B2 (en) Differentiating traffic types in a multi-root PCI express environment
US7546386B2 (en) Method for virtual resource initialization on a physical adapter that supports virtual resources
EP1851626B1 (en) Modification of virtual adapter resources in a logically partitioned data processing system
US8144582B2 (en) Differentiating blade destination and traffic types in a multi-root PCIe environment
US7398328B2 (en) Native virtualization on a partially trusted adapter using PCI host bus, device, and function number for identification
TWI649658B (zh) 用於分散式虛擬化之設備、系統、控制器及方法
JP5490336B2 (ja) Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け
US8751713B2 (en) Executing virtual functions using memory-based data in a PCI express SR-IOV and MR-IOV environment
US8972611B2 (en) Multi-server consolidated input/output (IO) device
US20170054593A1 (en) Transformation of peripheral component interconnect express compliant virtual devices in a network environment
US20060195848A1 (en) System and method of virtual resource modification on a physical adapter that supports virtual resources
US20150149661A1 (en) Sharing single root io virtualization peripheral component interconnect express devices
JP5469081B2 (ja) 制御パス入出力仮想化方法
US11940933B2 (en) Cross address-space bridging
US20220327080A1 (en) PCIe DEVICE AND OPERATING METHOD THEREOF
Markussen et al. Flexible device sharing in pcie clusters using device lending
Shim et al. Design and implementation of initial OpenSHMEM on PCIe NTB based cloud computing
US8527745B2 (en) Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
US11809349B1 (en) Direct injection of a virtual interrupt
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof
CN115396250A (zh) 具有一致事务排序的多插槽网络接口控制器