TW202107297A - 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 - Google Patents
實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 Download PDFInfo
- Publication number
- TW202107297A TW202107297A TW109125785A TW109125785A TW202107297A TW 202107297 A TW202107297 A TW 202107297A TW 109125785 A TW109125785 A TW 109125785A TW 109125785 A TW109125785 A TW 109125785A TW 202107297 A TW202107297 A TW 202107297A
- Authority
- TW
- Taiwan
- Prior art keywords
- cloud
- pcie
- storage system
- cloud storage
- cloud computing
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/352—Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/90—Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/51—Server architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Pinball Game Machines (AREA)
Abstract
一種雲端遊戲系統包括經由PCIe交換機及PCIe組構連接在一起之雲端儲存系統及雲端計算系統。PCIe交換機經組態以將雲端儲存系統內之資源映射至雲端計算系統之記憶體映射。PCIe交換機經組態以將雲端計算系統內之資源映射至雲端儲存系統之記憶體映射。PCIe組構使得能夠藉由在雲端計算系統與雲端儲存系統之間的直接寫入或直接讀取來將由雲端計算系統生成之資料輸入/輸出命令緩衝區傳送至雲端儲存系統。PCIe組構使得能夠藉由在雲端計算系統與雲端儲存系統之間的直接寫入或直接讀取來在雲端儲存系統與雲端計算系統之間傳送資料,如命令緩衝區所指示。
Description
本發明是相關於實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法。
視訊遊戲產業多年以來已發生了許多變化。隨著計算能力之擴大,視訊遊戲之開發者同樣創建了利用增強之計算能力的遊戲軟體。為此,視訊遊戲開發者一直在編碼併入有複雜運算及數學之遊戲,以產生極真實之遊戲體驗。
除了適應不斷擴大之計算能力外,遊戲開發者亦開發增加使用者與遊戲系統之間的互動之線上遊戲。互動式線上遊戲向使用者提供了與網際網路上之其他使用者互動地比賽或一起玩且捕獲此等互動之能力。另外,隨著基於雲端之計算之增長趨勢,遊戲開發者正在開發利用增加之計算能力及增加之使用者互動性來玩現有傳統遊戲及開發新遊戲的新方式。基於雲端之計算系統可包括基於雲端之處理伺服器,該伺服器執行遊戲應用程式,且與存在於遊戲玩家之位置的遠端用戶端系統進行通信,其中遠端用戶端系統可經組態以自遊戲玩家接收輸入且在顯示器上呈現視訊以供遊戲玩家觀看。在此情況下本發明應運而生。
在一實例實施例中,揭露了一種雲端遊戲系統。該雲端遊戲系統包括一雲端儲存系統,該雲端儲存系統具有一快捷周邊組件互連(PCIe)介面。該雲端儲存系統亦包括一電腦記憶體。該雲端遊戲系統包括一PCIe交換機,該PCIe交換機連接至該雲端儲存系統之該PCIe介面。該雲端遊戲系統包括一雲端計算系統,該雲端計算系統具有連接至該PCIe交換機之一PCIe介面。該雲端計算系統具有一用戶端記憶體映射,該用戶端記憶體映射保存分配給該雲端計算系統之組件之記憶體位址。該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中之記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中之一給定記憶體位址。
在一實例實施例中,揭露了一種雲端遊戲系統。該雲端遊戲系統包括一雲端儲存系統,該雲端儲存系統具有一PCIe介面。該雲端儲存系統包括一電腦記憶體。該雲端遊戲系統包括一第一PCIe交換機,該第一PCIe交換機連接至該雲端儲存系統之該PCIe介面。該雲端遊戲系統包括連接至該第一PCIe交換機之一第二PCIe交換機。該雲端遊戲系統包括連接至該第一PCIe交換機之一第三PCIe交換機。該雲端遊戲系統包括一第一雲端計算系統,該第一雲端計算系統具有連接至該第二PCIe交換機之一PCIe介面。該第一雲端計算系統具有一第一用戶端記憶體映射,該第一用戶端記憶體映射保存分配給該第一雲端計算系統之組件之記憶體位址。該第一PCIe交換機及該第二PCIe交換機中之一者或兩者經組態以將保存在該第一用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中之記憶體位址,使得對該第一用戶端記憶體映射中之一給定記憶體位址的存取經轉換為改為存取該雲端儲存系統之該電腦記憶體中之一給定記憶體位址。該雲端遊戲系統包括一第二雲端計算系統,該第二雲端計算系統具有連接至該第三PCIe交換機之一PCIe介面。該第二雲端計算系統具有一第二用戶端記憶體映射,該第二用戶端記憶體映射保存分配給該第二雲端計算系統之組件之記憶體位址。該第一PCIe交換機及該第三PCIe交換機中之一者或兩者經組態以將保存在該第二用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中之記憶體位址,使得對該第二用戶端記憶體映射中之一給定記憶體位址的存取經轉換為改為存取該雲端儲存系統之該電腦記憶體中之一給定記憶體位址。
在一實例實施例中,揭露了一種用於在一雲端遊戲系統中請求資料之方法。該方法包括具有一雲端遊戲系統,該雲端遊戲系統包括具有一PCIe介面之一雲端儲存系統。該雲端儲存系統包括一電腦記憶體。該雲端遊戲系統亦包括一PCIe交換機,該PCIe交換機連接至該雲端儲存系統之該PCIe介面。該雲端遊戲系統亦包括一雲端計算系統,該雲端計算系統具有連接至該PCIe交換機之一PCIe介面。該雲端計算系統包括一電腦記憶體。該PCIe交換機暴露由該雲端儲存系統監視之一門鈴暫存器。該方法亦包括操作該雲端計算系統以對該門鈴暫存器進行寫入,其中對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷。該方法亦包括操作該雲端儲存系統以處置該中斷。該中斷指示該雲端儲存系統自該雲端儲存系統之該電腦記憶體中之一指定位置讀取訊息。該訊息指示該雲端儲存系統自該雲端儲存系統可存取之一儲存裝置讀取所請求之資料。
在一實例實施例中,揭露了一種用於在一雲端遊戲系統中請求及傳送資料之方法。該方法包括具有一雲端遊戲系統,該雲端遊戲系統包括經由一PCIe組構(PCIe fabric)彼此連接之一雲端儲存系統及一雲端計算系統。該雲端儲存系統包括一電腦記憶體。該雲端計算系統包括一電腦記憶體。該方法亦包括操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區。該方法亦包括操作該雲端計算系統以經由該PCIe組構將該命令緩衝區寫入至該雲端儲存系統之該電腦記憶體。該方法亦包括操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端儲存系統之該電腦記憶體。該方法亦包括操作該雲端儲存系統以自該雲端儲存系統之該電腦記憶體讀取該命令緩衝區。該方法亦包括操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料,且將該所請求之資料寫入在該雲端儲存系統之該電腦記憶體中。該方法亦包括操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中。該方法亦包括操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該所請求之資料。
在一實例實施例中,揭露了一種用於在一雲端遊戲系統中請求及傳送資料之方法。該方法包括具有一雲端遊戲系統,該雲端遊戲系統包括經由一PCIe組構彼此連接之一雲端儲存系統及一雲端計算系統。該雲端儲存系統包括一電腦記憶體。該雲端計算系統包括一電腦記憶體。該方法亦包括操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區。該方法亦包括操作該雲端計算系統以經由該PCIe組構將該命令緩衝區寫入至該雲端儲存系統之該電腦記憶體。該方法亦包括操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端儲存系統之該電腦記憶體。該方法亦包括操作該雲端儲存系統以自該雲端儲存系統之該電腦記憶體讀取該命令緩衝區。該方法亦包括操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料。該方法亦包括操作該雲端儲存系統以經由該PCIe組構將該所請求之資料寫入至該雲端計算系統之該電腦記憶體。該方法亦包括操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中。
在一實例實施例中,揭露了一種用於在一雲端遊戲系統中請求及傳送資料之方法。該方法包括具有一雲端遊戲系統,該雲端遊戲系統包括經由一PCIe組構彼此連接之一雲端儲存系統及一雲端計算系統。該雲端儲存系統包括一電腦記憶體。該雲端計算系統包括一電腦記憶體。該方法亦包括操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區。該方法亦包括操作該雲端計算系統以將該命令緩衝區寫入至該雲端計算系統之該電腦記憶體。該方法亦包括操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端計算系統之該電腦記憶體。該方法亦包括操作該雲端儲存系統以經由該PCIe組構自該雲端計算系統之該電腦記憶體讀取該命令緩衝區。該方法亦包括操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料。該方法亦包括操作該雲端儲存系統以經由該PCIe組構將該所請求之資料寫入至該雲端計算系統之該電腦記憶體。該方法亦包括操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中。
在一實例實施例中,揭露了一種用於在一雲端遊戲系統中請求及傳送資料之方法。該方法包括具有一雲端遊戲系統,該雲端遊戲系統包括經由一PCIe組構彼此連接之一雲端儲存系統及一雲端計算系統。該雲端儲存系統包括一電腦記憶體。該雲端計算系統包括一電腦記憶體。該方法亦包括操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區。該方法亦包括操作該雲端計算系統以將該命令緩衝區寫入至該雲端計算系統之該電腦記憶體。該方法亦包括操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端計算系統之該電腦記憶體。該方法亦包括操作該雲端儲存系統以經由該PCIe組構自該雲端計算系統之該電腦記憶體讀取該命令緩衝區。該方法亦包括操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料,且將該所請求之資料寫入在該雲端儲存系統之該電腦記憶體中。該方法亦包括操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中。該方法亦包括操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該所請求之資料。
在一實例實施例中,揭露了一種用於在一雲端遊戲系統中進行資料傳送之方法。該方法包括具有一雲端遊戲系統,該雲端遊戲系統包括經由一PCIe組構彼此連接之一雲端儲存系統及一雲端計算系統。該雲端儲存系統包括一電腦記憶體。該雲端計算系統包括一電腦記憶體。該方法亦包括操作該雲端儲存系統以生成一檔案標識表,該檔案標識表指定該雲端儲存系統之該電腦記憶體中的儲存不同之資料檔案之記憶體位址。該方法亦包括操作該雲端計算系統以使用該檔案標識表來判定該雲端儲存系統之該電腦記憶體中的儲存一所需資料檔案之一記憶體位址。該方法亦包括操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該所需資料檔案。
根據結合附圖進行之以下詳細描述,本發明之其他態樣將變得更顯而易見,以下詳細描述藉由舉例之方式來說明本發明。
在以下描述中,闡述了許多具體細節,以便提供對本發明之透徹瞭解。然而,於熟習此項技術者將明了,可在沒有此等具體細節之一些或全部的情況下實踐本發明。在其他情況下,熟知之程序操作未進行詳細描述,以免不必要地混淆本發明。
以下詳細描述包括對附圖之參考,附圖形成詳細描述之一部分。附圖示出了根據實例實施例之圖示。足夠詳細地描述了此等實例實施例(在本文中亦稱為「實例」),以使熟習此項技術者能夠實踐所提出之標的物。在不脫離所主張之範疇的情況下,可組合實施例,可利用其他實施例,或者可進行結構、邏輯及電氣改變。因此,以下詳細描述不應以限制性意義看待,且範疇由所附申請專利範圍及其等效物界定。在本文獻中,如在專利文獻中常見的,使用術語「一(a、an)」以包括一個或多於一個。在本文獻中,除非另外指示,否則術語「或」用於指非排他性之「或」,使得「A或B」包括「A而非B」、「B而非A」及「A及B」。
用於雲端遊戲系統之機架設計可包括一雲端儲存系統及許多雲端計算系統,例如遊戲控制台,其中雲端儲存系統由雲端計算系統共用。雲端儲存系統可包括快速儲存裝置,諸如固態驅動器(SSD)及硬碟驅動器(HDD)。雲端遊戲系統之機架設計假設,雲端儲存系統之資料儲存及擷取能力比雲端計算系統(例如,機架內之本地遊戲控制台之SSD或HDD)之資料儲存及擷取能力更快。然而,雲端計算系統(遊戲控制台)之資料儲存及擷取能力(例如,資料寫入速度及/或資料讀取速度)已大大提高。例如,雲端計算系統之資料儲存及擷取速度已經變得比當前可獲得之快捷非揮發性記憶體(NVMe)SSD可能實現之速度更快。因此,基於機架之雲端遊戲系統之當前挑戰為確保可以足夠有效之方式在機架內之雲端計算系統與雲端儲存系統之間交換資料,從而避免雲端計算系統之操作延遲。
而且,當前不可能僅藉由用更快之資料儲存裝置替換雲端儲存系統內之現存資料儲存裝置來解決上述挑戰,此乃因當前可獲得之最快之資料儲存裝置不夠快而無法跟上使用連接雲端計算系統與雲端儲存系統之習知資料交換基礎設施(例如,網路連接)的雲端計算系統之資料需求。另外,在雲端遊戲機架設計中連接雲端計算系統與雲端儲存系統之當前資料交換基礎設施在同時跨多個雲端計算系統輸送所需資料方面存在效能挑戰。而且,在雲端遊戲機架設計中連接雲端計算系統與雲端儲存系統之當前資料交換基礎設施的日益增加之費用值得關注。
本文揭露了系統及方法,其中在雲端遊戲系統之機架內使用快捷周邊組件互連(PCIe)組構將多個雲端計算系統連接至雲端儲存系統。在雲端遊戲系統之機架內使用PCIe組構將多個雲端計算系統連接至雲端儲存系統使得能夠將遊戲內容直接儲存在雲端儲存系統上之電腦記憶體中,以供多個雲端計算系統使用。在一些實施例中,雲端儲存系統上之電腦記憶體為隨機存取記憶體(RAM)。在一些實施例中,雲端儲存系統上之電腦記憶體為表現得像RAM之儲存類記憶體,但為持久性的,此乃因當關斷供應至電腦記憶體之電力時,儲存在儲存類記憶體中之資料不會丟失。在一些實施例中,儲存類記憶體提供比RAM更高之資料儲存容量。在一些實施例中,儲存類記憶體經組態為混合記憶體模組,其使用與RAM配對之大量快閃記憶體或等效技術。由於儲存類記憶體表現得像RAM,因此PCIe交換機可以與用以對RAM尋址之方式相同之方式來對儲存類記憶體尋址。而且,在雲端遊戲系統之機架內使用PCIe組構將多個雲端計算系統連接至雲端儲存系統提供視訊遊戲內容在雲端儲存系統可存取之NVMe資料儲存裝置上之初始儲存,及在快取未中事件時視訊遊戲內容自NVMe資料儲存裝置至雲端儲存系統之電腦記憶體之填充,快取未中事件在雲端計算系統中之任一者試圖自雲端儲存系統之電腦記憶體讀取特定視訊遊戲內容時發生。NVMe為用於存取經由PCIe鏈路附接之非揮發性儲存媒體(例如NAND快閃記憶體等)之開放邏輯裝置介面規範。
在本文揭露之系統及方法中,利用PCIe交換能力將多個雲端計算系統連接至一或多個共用之雲端儲存系統。在各種實施例中,多個雲端計算系統及一或多個共用之雲端儲存系統安裝在計算中心中之一或多個機架中。不要將安裝在計算中心中之機架中之雲端計算系統與使用者(例如,視訊遊戲之玩家)本地的遠端用戶端系統相混淆。更具體地,應理解,在一些實施例中,計算中心中之機架中之雲端計算系統及雲端儲存系統一起工作以生成視訊遊戲之串流視訊且將該串流視訊發射至正在玩視訊遊戲之使用者的遠端用戶端系統。使用PCIe交換能力將多個雲端計算系統連接至一或多個共用之雲端儲存系統提供用於解決雲端遊戲效能挑戰(諸如確保可以足夠有效之方式在機架內之雲端計算系統與雲端儲存系統之間交換資料以避免雲端計算系統之操作延遲,及諸如同時跨許多雲端計算系統輸送所需資料)之技術基礎。
PCIe為在由周邊組件互連特殊興趣小組(PCI-SIG)發佈之PCI Express®
基本規範修訂5.0版本1.0中描述的高效能之通用輸入/輸出互連件,PCI-SIG為負責指定周邊組件互連(PCI)電腦匯流排、周邊組件互連延伸(PCI-X)電腦匯流排及PCIe電腦匯流排之電子工業聯盟。PCIe為雙向之點對點資料匯流排,最初為個人電腦(PC)及伺服器而設計以提供主機裝置與其他裝置(諸如圖形處理單元(GPU)、網卡、聲卡、儲存控制器等)之通信。PCI Express®
基本規範修訂5.0版本1.0出於所有目的以引用之方式全文併入本文中。應理解,本文中提及之任何PCIe特徵均指在由PCI-SIG發佈之PCI Express®
基本規範之任何修訂及/或版本中描述的對應PCIe特徵。因此,應理解,本文中提及之任何PCIe特徵不限於僅僅在PCI Express®
基本規範之修訂5.0版本1.0中之對應PCIe特徵的描述,而且可對應於由PCI-SIG發佈之PCI Express®
基本規範之任何修訂及/或版本中的對應PCIe特徵之描述。
圖1A示出了PCIe組構之概圖。PCIe組構包括互連各種組件之點對點PCIe鏈路。PCIe組構中之組件及PCIe鏈路定義階層。圖1A之實例PCIe組構示出了主機裝置之連接至主機裝置之根複合體105的中央處理單元(CPU)101及電腦記憶體103。在各種實施例中,電腦記憶體103可為RAM或儲存類記憶體,或基本上等效於RAM及/或儲存類記憶體之另一類型之電腦記憶體。根複合體105代表將CPU 101及電腦記憶體103連接至主機裝置之輸入/輸出埠的輸入/輸出階層之根。根複合體105可具有任何數量之PCIe埠。根複合體105之每個PCIe埠為定義單獨之階層域的介面,其中與根複合體105之埠相對應的每個階層域可包括任意數量之端點或包括一或多個PCIe交換機及相關聯之端點的子階層域。例如,圖1A示出了根複合體105之一些埠經由各別PCIe鏈路連接至多個PCIe端點107。每個PCIe端點107可為利用PCIe匯流排架構及協定之任何類型之系統元件,諸如處理器、控制器、模組等。通常,PCIe組構中之端點係指可作為PCIe異動之請求者或完成者之一類功能。PCIe組構中之端點可為傳統端點、PCIe端點或根複合體整合端點。
而且,圖1A示出了根複合體105之埠經由PCIe鏈路連接至PCIe至PCI/PCI-X橋109。PCIe至PCI/PCI-X橋109用於將PCI/PCI-X階層111虛擬地或實際地連接至PCIe組構,例如連接至根複合體105之PCIe埠。圖1A亦示出了經由PCIe鏈路連接至PCIe交換機113之根複合體105之PCIe埠。PCIe交換機113用於連接兩個或多於兩個PCIe埠,以允許將資料封包自一個埠路由至另一埠。在圖1A之實例中,PCIe交換機113包括連接至根複合體105之上游PCIe埠。PCIe交換機113亦包括經由各別PCIe鏈路連接至多個傳統端點115之多個下游PCIe埠。PCIe交換機113亦包括經由各別PCIe鏈路連接至多個PCIe端點117之多個下游PCIe埠。PCIe交換機113在組態軟體看來似乎為兩個或多於兩個虛擬(邏輯)PCI至PCI橋之集合。
圖1B示出了PCIe交換機113之實例組態。PCIe交換機113包括上游PCIe埠119及一或多個下游PCIe埠125(1)-125(n)。上游PCIe埠119及一或多個下游PCIe埠125(1)-125(n)中之每一者連接至各別PCIe鏈路。PCIe交換機113包括連接至上游PCIe埠119之虛擬PCI-PCI橋121。PCIe交換機113亦包括分別連接至一或多個下游PCIe埠125(1)-125(n)之一或多個虛擬PCI-PCI橋123(1)-123(n)。虛擬PCI-PCI橋121及123(1)-123(n)之集合在PCIe交換機113內連接在一起,如線127所示。PCIe交換機113用於使用諸如基於位址之路由之PCI橋機制來轉送異動。PCIe交換機113亦用於在任一組PCIe埠之間轉送所有類型之異動層封包。PCIe交換機113之每個PCIe埠均經組態以符合PCIe異動流程控制規範。
PCIe鏈路代表兩個組件之間的雙重單工資料通信通道。PCIe鏈路支援至少一個PCIe線道。圖1C示出了包括一個PCIe線道129之PCIe鏈路的圖。圖1C示出了一個PCIe線道129包括低電壓差動驅動之發射導體對131及低電壓差動驅動之接收導體對133,其中組件A經視為發射器組件,而組件B經視為接收器組件。發射導體對131形成單向差動信號傳達機制。接收導體對133形成單向差動信號傳達機制。因此,單一PCIe線道129包括四個電信號導體或跡線。
資料跨越PCIe線道以每週期一個位元進行發射。為了增加頻寬且獲得更高之資料輸送量,PCIe鏈路可聚合多個PCIe線道。PCIe鏈路之大小由xN表示,其中N為PCIe鏈路中之PCIe線道的數量。x1 PCIe鏈路具有一個PCIe線道(四根線),且每週期在發射方向及接收方向中之每一者上載運一個位元。x2 PCIe鏈路具有兩個PCIe線道(8根線),且每週期在發射方向及接收方向中之每一者上載運兩個位元。x4 PCIe鏈路具有四個PCIe線道(16根線),且每週期在發射方向及接收方向中之每一者上載運四個位元。PCIe規範描述了x1、x2、x4、x8、x12、x16及x32之PCIe鏈路大小的操作。
PCIe連接為串列連接,其操作方式類似於網路而非匯流排。在PCIe組構中,每個PCIe鏈路都經由虛擬PCI至PCI橋進行映射,且具有相關聯之邏輯PCI匯流排。在圖1A之實例中,給定PCIe鏈路之虛擬PCI至PCI橋可為根複合體105之PCIe埠之一部分,或者為PCIe交換機113之上游PCIe埠119之一部分,或者為PCIe交換機113之下游PCIe埠125(1)-125(n)之一部分。根複合體105之PCIe埠稱為根埠,且為自根複合體105發起PCIe階層域之虛擬PCI至PCI橋。PCIe組構內之裝置經映射至組態空間,使得每個裝置將對特定裝置編號作出回應。
PCIe組構最初經設計為在主機計算裝置與用戶端計算裝置之間提供資料通信。然而,PCIe組構亦可用於在不同之主機計算裝置之間提供資料通信,但PCIe規範中不包括此應用及對應技術。為了經由PCIe組構達成主機裝置至主機裝置之資料通信,需要呈PCIe交換機形式之額外硬體。圖2A示出了根據本發明之一些實施例的關於可如何使用PCIe組構來連接兩個不同之主機計算裝置之圖。具體地,圖2A示出了藉由PCIe交換機205連接至第二主機計算裝置203之第一主機計算裝置201。第一主機計算裝置201之根複合體具有經由PCIe鏈路207連接至PCIe交換機205之PCIe埠的PCIe埠。而且,第二主機計算裝置203之根複合體具有經由PCIe鏈路209連接至PCIe交換機205之PCIe埠的PCIe埠。PCIe交換機205包括用以橋接第一主機計算裝置201及第二主機計算裝置203之記憶體位址空間的可程式化邏輯。例如,用於橋接第一主機計算裝置201及第二主機計算裝置203之記憶體位址空間的邏輯可包括非透明橋(NTB)或特殊直接記憶體存取(DMA)引擎,該NTB或DMA引擎可與第一主機計算裝置201及第二主機計算裝置203兩者通信且處理所需之任何記憶體位址轉換。
為了理解將不同之主機計算裝置彼此連接以具有直接資料通信能力為不平凡之原因,考量主機計算裝置之啟動程序為有益的。在主機計算裝置之啟動程序期間,主機計算裝置根據主機計算裝置之組態而經由其基本輸入/輸出系統(BIOS)或經由其統一可延伸韌體介面(UEFI)或經由其作業系統(OS)來創建記憶體映射。主機計算裝置之記憶體映射為將記憶體位址分配給主機計算裝置之電腦記憶體及連接至主機計算裝置的記憶體映射之組件裝置。應理解,自軟體開發角度來看,可連接至主機計算裝置之現代組件裝置看起來像記憶體。組件裝置之一些實例包括圖形處理單元(GPU)、儲存CPU、解密/加密引擎、解壓縮/壓縮引擎、直接記憶體存取(DMA)控制器、快捷非揮發性記憶體(NVMe)固態驅動器(SSD)、序列先進技術附接(SATA)控制器、硬碟驅動器等。許多組件裝置可連接至主機計算裝置。對於具有PCIe根複合體之主機計算裝置,列舉程序在系統開機時進行,在系統開機時發現了連接至主機計算裝置之組件裝置,且為每個組件裝置分配了在主機計算裝置之記憶體映射中的唯一記憶體位址範圍。
儘管可經由PCIe鏈路將多個主機計算裝置以直接方式電連接在一起,但此直接連接為有問題的,此乃因每個主機計算裝置在開機時獨立地創建其自己之記憶體映射,此導致由多個主機計算裝置創建之多個記憶體映射之間的記憶體位址衝突。然而,諸如圖2A所示,不同之主機計算系統之間的PCIe交換機之連接解決了不同之主機計算系統之間的記憶體位址衝突問題,此乃因PCIe交換機在由主機計算裝置獨立地創建之記憶體映射中看起來像另一組件裝置。PCIe交換機內之邏輯(例如NTB邏輯)用於將一個主機計算裝置中之記憶體「映射」至另一主機計算裝置之記憶體映射內之位置,從而允許主機計算裝置之間的「共用記憶體」。例如,關於圖2A,PCIe交換機205內之邏輯用於將第一主機計算裝置201中之記憶體位址範圍映射至第二主機計算裝置203中之記憶體位址範圍,反之亦然。
圖2B示出了根據本發明之一些實施例的由圖2A之處於主機裝置至主機裝置連接配置之PCIe交換機205執行的記憶體映射功能之實例圖。圖2B之左側部分示出了第一主機計算裝置201之記憶體映射,該記憶體映射由第一主機計算裝置在開機時獨立地創建。圖2B之右側部分示出了第二主機計算裝置203之記憶體映射,該記憶體映射由第二主機計算裝置在開機時獨立地創建。第一主機計算裝置201之記憶體映射包括用於PCIe交換機205之記憶體位址範圍0xC0000000至0x0FFFFFFF(作為實例,大小為2十億位元組(GB))。在圖2B之實例中,藉由PCIe交換機205中之重映射邏輯將第一主機計算裝置201對PCIe交換機205之記憶體位址範圍0xC0000000至0x0FFFFFFF的存取重映射至第二主機計算裝置203之記憶體映射中的對應之記憶體位址範圍,例如在此實例中重映射至第二主機計算裝置203之記憶體映射中之前2 GB。應理解,可藉由PCIe交換機205將第一主機計算裝置201之記憶體映射中之給定記憶體位址範圍重映射至第二主機計算裝置203之記憶體映射中具有對應大小的任何記憶體位址範圍。而且,應理解,可藉由PCIe交換機205將第一主機計算裝置201之記憶體映射中之給定記憶體位址範圍重映射至第二主機計算裝置203之記憶體映射中具有累積對應大小的任何多個記憶體位址範圍。一般而言,應理解,藉由PCIe交換機進行之不同之主機計算裝置之間的記憶體映射有效地提供了不同之主機計算裝置之間的共用記憶體,該等不同之主機計算裝置經由該PCIe交換機連接。
圖3A示出了根據本發明之一些實施例的關於可如何使用PCIe組構來連接雲端儲存系統301與雲端計算系統303之圖。具體地,圖3A示出了藉由PCIe交換機305連接至雲端計算系統303之雲端儲存系統301。PCIe交換機305連接雲端儲存系統301與雲端計算系統303,且使得能夠在雲端儲存系統301與雲端計算系統303之間共用記憶體。雲端儲存系統301經由PCIe鏈路307連接至PCIe交換機305。雲端計算系統303經由PCIe鏈路309連接至PCIe交換機305。在一些實施例中,PCIe交換機305安置在用戶端計算系統303內。然而,應理解,在其他實施例中,PCIe交換機305可位於雲端計算系統303之外部。
圖3B示出了根據一些實施例之雲端儲存系統301及雲端計算系統303之一些內部組件的實例圖。雲端儲存系統301之根複合體311具有經由PCIe鏈路307連接至PCIe交換機305之PCIe埠315的PCIe埠313。而且,雲端計算系統303之根複合體317具有經由PCIe鏈路309連接至PCIe交換機305之PCIe埠319的PCIe埠316。PCIe交換機305包括用以橋接雲端儲存系統301與雲端計算系統303之記憶體位址空間的邏輯。例如,用於橋接雲端儲存系統301及雲端計算系統303之記憶體位址空間的邏輯可包括非透明橋(NTB)或特殊直接記憶體存取(DMA)引擎,該NTB或DMA引擎可與雲端儲存系統301及雲端計算系統303兩者通信且處理所需之任何記憶體位址轉換。在一些實施例中,可在PCIe交換機305內實施DMA引擎。應理解,雲端計算系統303之根複合體311及雲端儲存系統301之根複合體317兩者都包括PCIe介面或等效介面,諸如根據例如由Gen-Z聯盟開發之Gen-Z通信/互連規範定義的Gen-Z介面,或基本上等效於PCIe介面或Gen-Z介面之其他未來開發之介面。
例如,在一些實施例中,PCIe交換機305視情況包括NTB 321。若PCIe交換機305包括NTB 321且處於NTB模式,則NTB 321用於將由雲端計算系統303寫入至資料I/O(輸入/輸出)命令緩衝區之記憶體存取命令中的實體記憶體位址轉換為雲端儲存系統301之電腦記憶體323內的可由雲端儲存系統301達到之記憶體位址。NTB 321在功能上操作以修改PCIe異動層之記憶體位址,在該異動層中,異動層封包(TLP)被組譯及反組譯。在一些實施例中,NTB 321亦操作以修改請求者標識符。若雲端計算系統303諸如藉由儲存CPU 331生成命令緩衝區,則該命令緩衝區最終由根複合體311包裹在TLP中。儲存CPU 331操作以確保由儲存CPU 331生成之命令緩衝區內之任何記憶體位址的正確性。而且,在雲端儲存系統301需要將資料寫回至雲端計算系統303之情況下,儲存CPU 331操作以確保命令緩衝區內之任何記憶體位址都為轉換後之位址。當雲端計算系統303將命令緩衝區寫入至雲端儲存系統301中之記憶體位址時,NTB 321開始起作用。在此情況下,藉由NTB 321及/或藉由雲端儲存系統301之電腦記憶體323中之輸入/輸出記憶體管理單元(IOMMU)381來轉換命令緩衝區被寫入至之記憶體位址。IOMMU 381將裝置可見之虛擬記憶體位址映射至實體記憶體位址。而且,在此情況下,NTB 321或IOMMU 381不會修改命令緩衝區本身之內容。
NTB模式使得多個根複合體能夠彼此通信,即與彼此交換資料。在一些實施例中,若PCIe交換機305連接至僅NTB裝置連接至之次級PCIe交換機,則次級PCIe交換機不需要使用NTB,此乃因它將僅轉送異動層封包(TLP)。在各種實施例中,電腦記憶體323可為RAM或儲存類記憶體,或基本上等效於RAM及/或儲存類記憶體之另一類型之電腦記憶體。NTB 321處置資料I/O命令緩衝區中之記憶體位址的轉換,且將轉換後之記憶體位址提供給雲端儲存系統301。若PCIe交換機305不使用NTB 321,則可生成寫入至資料I/O命令緩衝區之記憶體存取命令以包括其他元資料,諸如主機標識符或其他類型之元資料,該其他元資料可用於判定資料I/O命令緩衝區中之記憶體位址應被映射至的在雲端儲存系統之電腦記憶體323中之記憶體位址。在PCIe交換機305不使用NTB 321之一些實施例中,可使用DMA引擎來跨越PCIe交換機305將封包發送至正確的目的地。而且,在一些實施例中,若PCIe交換機305不使用NTB 321且連接至次級PCIe交換機,則次級PCIe交換機操作以將封包轉送至正確的目的地。
雲端計算系統303包括連接至內部資料匯流排327之至少一個CPU 325。在各種實施例中,雲端計算系統303亦可包括連接至內部資料匯流排327之GPU 329中之一或多者,及/或連接至內部資料匯流排327之儲存CPU 331中之一或多者,及/或連接至內部資料匯流排327之解密/加密引擎333中之一或多者,及/或連接至內部資料匯流排327之解壓縮/壓縮引擎335中之一或多者。內部資料匯流排327連接至雲端計算系統303之根複合體311。在各種實施例中,GPU 329為經組態以執行用於渲染影像、動畫及視訊以用於在電子顯示螢幕上顯示的並行操作之處理器。而且,在一些實施例中,GPU 329之並行處理能力可用於需要重複計算之非圖形應用中之矢量處理。
在各種實施例中,儲存CPU 331經組態以處置對儲存命令之請求且將儲存分派在特定類型之儲存媒體上。在各種實施例中,儲存CPU 331及主CPU 325可具有相同或不同之架構。例如,在一些實施例中,儲存CPU 331可為高級RISC(精簡指令集電腦)機器(ARM)處理器或MIPS處理器,而主CPU 325為x86處理器。應理解,在各種實施例中,儲存CPU 331可為基本上任何類型之合適的電腦處理器,而主CPU 325可為基本上任何類型之合適的電腦處理器。儲存CPU 331向其分派資料以進行儲存之儲存媒體的特定類型可根據儲存媒體之效能能力(例如,資料讀取速度及/或資料寫入速度)及/或資料儲存在儲存媒體上之形式(例如,基於檔案之資料儲存、基於檔案夾之資料儲存或基於位元組之資料儲存)而變化。在一些實施例中,儲存CPU 331操作以將資料分成多個資料塊以置放至雲端計算系統303之電腦記憶體337中的各別位置中,其中電腦記憶體337中之各個儲存位置係基於儲存表而跟蹤及更新的。在各種實施例中,電腦記憶體337可為RAM或儲存類記憶體,或基本上等效於RAM及/或儲存類記憶體之另一類型的電腦記憶體。儲存CPU 331亦可用以基於每秒輸入/輸出操作數(IOPS)而最佳化儲存。在一些實施例中,基於IOPS之儲存最佳化可與可用儲存媒體之存取速度相關,該可用儲存媒體可包括旋轉儲存媒體、固態儲存媒體及/或混合儲存媒體。在各種實施例中,解密/加密引擎333為經組態以用於且專用於應用密碼演算法來對加密之資料進行解密及對未加密之資料進行加密的處理器。在各種實施例中,解壓縮/壓縮引擎335經組態以用於且專用於應用演算法來將壓縮資料解壓縮及壓縮非壓縮資料。
在一些實施例中,雲端計算系統303之電腦記憶體337連接至根複合體311。在一些實施例中,雲端計算系統303亦包括連接至根複合體311之DMA控制器339。在一些實施例中,電腦記憶體337及/或DMA控制器339可連接至內部資料匯流排327,如分別由線361及363所示。而且,在一些實施例中,雲端計算系統303可包括經由PCIe鏈路343連接至根複合體311之PCIe埠345的NVMe SSD 341中之一或多者。而且,在一些實施例中,雲端計算系統303可包括經由PCIe鏈路349連接至根複合體311之PCIe埠351的SATA控制器347中之一或多者。SATA控制器347可用作HDD 353中之一或多個HDD與PCIe組構之間的橋。而且,在各種實施例中,一或多個其他支援PCIe之組件裝置355可經由各別PCIe鏈路359連接至根複合體311之一或多個各別PCIe埠357。在各種實施例中,一或多個其他支援PCIe之組件裝置355可包括一或多個GPU、一或多個場可程式化閘陣列(FPGA)、一或多個網路配接器、一或多個SSD、一或多個SATA/HHD及其他裝置。應理解,藉由實例之方式提供了圖3B所示之雲端計算系統303的架構。在各種實施例中,雲端計算系統303可包括比圖3B之實例中示出之組件更多或更少的組件。
雲端儲存系統301包括連接至內部資料匯流排367之至少一個CPU 365。在各種實施例中,雲端儲存系統301亦可包括連接至內部資料匯流排367之GPU 369中之一或多者及/或連接至內部資料匯流排367之網路介面卡(NIC)373中之一或多者。內部資料匯流排367連接至雲端儲存系統301之根複合體317。雲端儲存系統301亦可包括連接至根複合體317之NVMe SSD 371中之一或多者。而且,在一些實施例中,GPU 369及/或NIC 373及/或其他裝置可經組態以使用PCIe,且可直接連接至根複合體317,而非內部資料匯流排367。
在一些實施例中,雲端儲存系統301經組態及操作以將資料儲存分佈在複數個實體儲存媒體之間,且利用資料重複刪除方法來最佳化複數個實體儲存媒體之使用。雲端儲存系統301可存取/控制之複數個實體儲存媒體可位於藉由高速互連以及高速交換機互連之複數個不同之儲存盒中。在一些實施例中,包括雲端儲存系統301可存取/控制之複數個實體儲存媒體的複數個不同之儲存盒可安裝在資料中心內之單獨位置,或者安裝在地理上分散之多個資料中心中。在一些實施例中,可使用快取系統在多個資料中心之間管理資料儲存,使得可將特定請求實體(例如,由使用者用來玩雲端遊戲應用程式之特定遠端用戶端裝置)利用或需要之資料移動至最靠近該請求實體或為該請求實體提供可接受之服務品質的特定資料中心。在一些實施例中,快取系統可利用經定義為將使用者資料及/或遊戲資料遷移至特定資料中心之遷移演算法,該等特定資料中心可包括特定邊緣計算伺服器或節點,諸如雲端計算系統303。雲端計算系統303生成且向雲端儲存系統301之資料I/O命令緩衝區發射記憶體存取命令,以確保請求實體將具有用於以允許之潛時呈現應用程式輸出(諸如遊戲之圖形輸出)的必要資料/資訊。
可藉由儲存在雲端系統記憶體中(諸如在雲端計算系統303之電腦記憶體337中及/或雲端儲存系統301之電腦記憶體323中)的複數個資料緩衝區來管理雲端遊戲應用程式之資料儲存。在一些實施例中,此等資料緩衝區經最佳化以用於呈現將經壓縮且經由網路發射至請求實體之視訊訊框。資料緩衝區可用以儲存用於經壓縮之視訊訊框(例如I訊框及P訊框)的資料。在典型之雲端遊戲應用程式中,遊戲中之場景變化將需要生成新I訊框且將其發射至請求實體。當發生此情況時,儲存CPU 331可自解壓縮/壓縮引擎335接收資訊以將P訊框自電腦記憶體337中之資料緩衝區中清除,此乃因新場景(例如,剪輯場景)將需要新之I訊框。在一些實施例中,儲存CPU 331可不跟蹤哪些資料緩衝區儲存用於視訊訊框(諸如I訊框及P訊框)之資料。在此等實施例中,由儲存CPU 331自解壓縮/壓縮引擎335接收之資訊可指定為了清除必要之P訊框而將清除哪些資料緩衝區。因此,應理解,資料儲存操作為需要對雲端計算系統303及雲端儲存系統301中之資料緩衝區及儲存裝置進行處置之協調操作。
在一些實施例中,雲端計算系統303及/或雲端儲存系統301中之資料儲存處置及緩衝可利用人工智慧(AI)來向電腦記憶體337及/或電腦記憶體323載入預計將由雲端遊戲應用程式使用之資料,使得可在預計到執行雲端遊戲應用程式可需要之新場景的情況下執行圖形資料之更有效之載入及處理。應理解,可在雲端計算系統303及/或雲端儲存系統301之各個層級執行AI操作,以便在預計到用於呈現雲端遊戲應用程式之視訊訊框所需之資料的情況下最佳化資料之擷取。在一些實施例中,可基於機器學習及來自一或多個請求實體(例如來自玩雲端遊戲應用程式之一或多個使用者)之持續反饋來隨時間最佳化AI操作。例如,在一些實施例中,機器學習可用於識別遊戲中之特定類型之場景,該特定類型之場景將需要自雲端儲存系統301更快地擷取資料以用於及時地處理圖形。反過來,經識別為需要更快之資料擷取的特定類型之遊戲場景可觸發時間上提前之資料擷取操作,以減少與將視訊訊框流式傳輸至請求實體相關聯之潛時。
本文中揭露之系統及方法利用連接雲端計算系統303與雲端儲存系統301之PCIe組構以允許雲端計算系統303上之CPU 325及/或儲存CPU 331及/或DMA控制器339(及/或其他裝置)來指示在雲端儲存系統301之電腦記憶體323與雲端計算系統303之電腦記憶體337之間進行訊息發送及資料複製,反之亦然。使用PCIe組構連接雲端計算系統303與雲端儲存系統301且在組態PCIe交換機305之後的結果為跨雲端計算系統303及雲端儲存系統301之「共用記憶體」機制。雲端計算系統303可以非常少之額外負擔(例如,如箭頭379所示在繞過雲端儲存系統301之CPU 365的情況下)直接存取雲端儲存系統301內之電腦記憶體323之指定部分377。雲端計算系統303對雲端儲存系統301內之電腦記憶體323的直接存取可由雲端計算系統303內之能夠管理資料儲存請求且經由根複合體311連接至PCIe交換機305之任何裝置(諸如CPU 325及/或儲存CPU 331及/或DMA控制器339)指示。然而,應瞭解,管理資料儲存請求可能並非對雲端計算系統303之CPU 325之最高效的使用。因此,儲存CPU 331及/或DMA控制器339可主要用於藉由生成寫入至雲端儲存系統301之電腦記憶體323中之資料I/O命令緩衝區的記憶體存取命令來管理雲端計算系統303之資料儲存請求。
除了提供「共用記憶體」機制之外,經由PCIe交換機305將雲端計算系統303連接至雲端儲存系統301亦藉由將訊息直接寫入至雲端計算系統303之電腦記憶體337中或雲端儲存系統301之電腦記憶體323中或PCIe交換機305內之某一記憶體中來提供將「訊息」自雲端計算系統303發送至雲端儲存系統301,反之亦然。在雲端計算系統303與雲端儲存系統301之間的訊息發送可用於促進執行寫入至資料I/O命令緩衝區之記憶體存取命令。例如,若雲端計算系統303期望雲端儲存系統301執行導致自資料儲存裝置擷取某一所請求之資料且將它儲存在雲端計算系統303及雲端儲存系統301中存在的共用記憶體中之某處的某一記憶體存取命令,則可由雲端儲存系統301將訊息寫入至由雲端計算系統303監視之記憶體位置,以通知雲端計算系統303何時及何處所請求之資料可供雲端計算系統303使用。
在一些實施例中,可由雲端計算系統303或雲端儲存系統301將訊息發送至經由PCIe交換機305暴露之一或多個門鈴暫存器375。在一些實施例中,藉由雲端計算系統303對門鈴暫存器375進行寫入將致使在雲端儲存系統301上觸發中斷,此又致使雲端儲存系統301處置該中斷。在一些實施例中,雲端儲存系統301對中斷之處置致使雲端儲存系統301自雲端計算系統303及雲端儲存系統301中存在之共用記憶體中之指定位置讀取訊息(某一資料)。類似地,藉由雲端伺服器系統301對門鈴暫存器375進行寫入將致使在雲端計算系統303上觸發中斷,此又致使雲端計算系統303處置該中斷。在一些實施例中,雲端計算系統303對中斷之處置致使雲端計算系統303自雲端計算系統303及雲端儲存系統301中存在之共用記憶體中之指定位置讀取訊息(某一資料)。
訊息之內容取決於使用情況。在一些使用情況下,訊息可傳達自儲存裝置讀取某一量之資料且將讀取之資料儲存在雲端計算系統303及雲端儲存系統301中存在之共用記憶體中的請求。然後,在訊息中之請求完成之後,可發送另一訊息以通知完成。例如,若雲端計算系統303發送請求雲端儲存系統301自資料儲存裝置讀取某一特定資料之第一訊息,則雲端儲存系統301將執行第一訊息中之請求,然後發送第二訊息,該第二訊息通知雲端計算系統303完成了第一訊息請求,及特定之所請求資料儲存在雲端計算系統303及雲端儲存系統301中存在之共用記憶體中的何處。
雲端計算系統303及雲端儲存系統301為各自具有其自己之記憶體映射之獨立系統。記憶體映射保存電腦記憶體及系統中之其他裝置的記憶體位址。PCIe交換機305佔據了雲端計算系統303及雲端儲存系統301之每個記憶體映射中之記憶體位址空間的使用者可組態之區域。在各種實施例中,取決於PCIe交換機305之組態,雲端計算系統303之電腦記憶體337中之實體記憶體位址可映射至雲端儲存系統301之電腦記憶體323中之相同或不同的實體記憶體位址。
在一些實施例中,為了安全起見及/或其他原因,雲端儲存系統301可經組態以諸如藉由實施將裝置可見之虛擬記憶體位址映射至實體記憶體位址之IOMMU 381來隱藏其實際的實體記憶體位址。IOMMU 381經組態以將裝置記憶體位址映射至實體記憶體位址,而常規記憶體管理單元(MMU)經組態以將虛擬記憶體位址映射至實體記憶體位址。對於常規MMU,虛擬記憶體位址為連續的,使得應用程式可看到記憶體區塊(例如,64 MB之記憶體區塊)且在該記憶體區塊上操作,但實際上MMU將連續之虛擬記憶體位址映射至多個分開之實體記憶體位址,且向應用程式隱藏記憶體映射。類似於常規MMU,IOMMU 381將對雲端計算系統303可見之虛擬記憶體位址映射至電腦記憶體323中之多個分開的實體記憶體位址,且向雲端計算系統303隱藏記憶體映射。以此方式,使用IOMMU 381允許雲端計算系統303看到雲端儲存系統301上存在之連續之虛擬記憶體位址區塊,同時隱藏了連續之虛擬記憶體位址區塊實際上如何跨雲端儲存系統301之電腦記憶體323映射至不同之實體記憶體位址的複雜性。在一些實施例中,IOMMU 381包括在雲端儲存系統301之根複合體317中。在一些實施例中,雲端計算系統303之根複合體311亦可包括IOMMU 383。
在圖3B之組態中,IOMMU 381可允許雲端計算系統303將特定記憶體位址(裝置位址)視為與雲端儲存系統301之電腦記憶體323中之特定實體記憶體位址具有一一對應關係,但實際上IOMMU 381可將由雲端計算系統303所查看之特定記憶體位址重映射至雲端儲存系統301之電腦記憶體323中之不同的實體記憶體位址。而且,在一些實施例中,IOMMU 381可用於阻止存取雲端儲存系統301之電腦記憶體323中之未經授權由雲端計算系統303存取的一或多個指定之實體記憶體區域。而且,由於IOMMU 381有效地向雲端計算系統303隱藏了雲端儲存系統301之電腦記憶體323中之記憶體碎片,因此使用IOMMU 381可簡化雲端計算系統303中之DMA傳送操作。例如,若IOMMU 381未用於將電腦記憶體323中之碎片化實體記憶體位址作為連續之虛擬記憶體位址區塊展現給雲端計算系統303,則雲端計算系統303將需要執行多次DMA傳送操作或分散/收集異動來跨電腦記憶體323中之碎片化實體記憶體位址讀取資料。然而,藉由使用IOMMU 381來將電腦記憶體323中之碎片化實體記憶體位址作為連續之虛擬記憶體位址區塊展現給雲端計算系統303,雲端計算系統303可執行單次DMA傳送操作以跨電腦記憶體323中之碎片化實體記憶體位址讀取資料。
PCIe交換機305中之NTB 321及雲端儲存系統301中之IOMMU 381兩者都執行記憶體位址轉換。圖4示出了根據本發明之一些實施例的由PCIe交換機305中之NTB 321及雲端儲存系統301中之IOMMU 381執行的記憶體映射功能之實例圖。圖4示出了雲端計算系統303之電腦記憶體337中的藉由PCIe交換機305中之NTB 321及雲端儲存系統301中之IOMMU 381映射至雲端儲存系統301之電腦記憶體323中之實體記憶體位址範圍0x70000000-0x80000000的實例實體記憶體位址範圍0x30000000-0x40000000。雲端計算系統303不知道可見記憶體位址範圍0x30000000-0x40000000映射至之在雲端儲存系統301之電腦記憶體323中的實際實體記憶體位址範圍。圖4亦示出了雲端計算系統303之電腦記憶體337中的藉由PCIe交換機305中之NTB 321及雲端儲存系統301中之IOMMU 381以碎片化方式映射至雲端儲存系統301之電腦記憶體323中之兩個實體記憶體位址範圍0x30000000-0x3fffffff及0x40000000-0x4fffffff的實例實體記憶體位址範圍0x10000000-0x20000000。雲端計算系統303不知道可見記憶體位址範圍0x30000000-0x40000000如何映射至雲端儲存系統301之電腦記憶體323中的實際實體記憶體位址範圍。雲端計算系統303亦不知曉可見記憶體位址範圍0x30000000-0x40000000在雲端儲存系統301之電腦記憶體323中實際上為碎片化的。而且,雲端計算系統303不需要關心在雲端儲存系統301之電腦記憶體323中碎片化的可見記憶體位址範圍0x30000000-0x40000000。
儘管圖3A及圖3B示出了經由PCIe交換機305連接至一個雲端儲存系統301之一個雲端計算系統303,但應理解,在其他實施例中,雲端儲存系統301可經由PCIe組構連接至多個雲端計算系統。例如,圖5示出了根據一些實施例之雲端遊戲組態,其中雲端儲存系統301經由PCIe交換機305連接至某一數量之(D個)雲端計算系統303(1)-303(D),其中D大於1。PCIe交換機305包括該數量之(D個)PCIe埠315(1)-315(D),雲端計算系統303(1)-303(D)分別經由對應之PCIe鏈路309(1)-309(D)連接至該數量之PCIe埠315(1)-315(D)。在一些實施例中,PCIe鏈路309(1)-309(D)中之每一者具有某一數量之(M個)PCIe線道,且將雲端儲存系統301連接至PCIe交換機305之PCIe鏈路307具有某一數量之(N個)PCIe線道。在一些實施例中,雲端儲存系統301經組態以向雲端計算系統303(1)-303(D)中之每一者提供相同的資料通信介面頻寬。在此等實施例中,PCIe鏈路307中之PCIe線道之數量(N)等於雲端計算系統303(1)-303(D)之數量(D)乘以每個PCIe鏈路309(1)-309(D)中的PCIe線道之數量(M)。在一些實施例中,不一定每個雲端計算系統303(1)-303(D)同時需要最大資料通信介面頻寬。例如,不同之雲端計算系統303(1)-303(D)中之資料存取模式可指示每個雲端計算系統303(1)-303(D)不會同時需要最大資料通信介面頻寬。在此等實施例中,PCIe鏈路307中之PCIe線道之數量(N)可小於雲端計算系統303(1)-303(D)之數量(D)乘以每個PCIe鏈路309(1)-309(D)中的PCIe線道之數量(M)。PCIe鏈路307中之PCIe線道之數量(N)的減少可提供成本及能量節省。
在一些實施例中,雲端儲存系統301之根複合體317可連接至多個PCIe交換機。例如,圖6示出了根據一些實施例之雲端遊戲組態,其中雲端儲存系統301經由各別PCIe鏈路307(1)-307(E)連接至某一數量之(E個)PCIe交換機305(1)-305(E),其中E大於1。雲端儲存系統301包括某一數量之(E個)PCIe埠316(1)-316(E),該數量之(E個)PCIe鏈路307(1)-307(E)中之對應PCIe鏈路連接至該數量之PCIe埠316(1)-316(E)。PCIe交換機305(1)-305(E)中之每一者具有對應之PCIe埠319(1)-319(E),該數量之(E個)PCIe鏈路307(1)-307(E)中之對應PCIe鏈路連接至該對應之PCIe埠319(1)-319(E)。每個PCIe交換機305(1)-305(E)具有某一數量之(F個)PCIe埠315(1)-315(F),各別雲端計算系統303(1)-303(F)藉由對應之PCIe埠313(1)-313(F)及對應之PCIe鏈路309(1)-309(F)連接至該數量之PCIe埠315(1)-315(F)。PCIe埠315(1)-315(F)之數量(F)在不同之PCIe交換機305(1)-305(E)之間可有所不同。
在一些實施例中,PCIe交換機305(1)-305(E)安置在雲端儲存系統301內。在一些實施例中,PCIe交換機305(1)-305(E)安置在PCIe組構內、在雲端儲存系統301與各種雲端計算系統303(1)-303(F)之間的某一位置處。當單一PCIe交換機305(1)-305(E)沒有提供足夠之資料通信介面頻寬(PCIe線道)來支援下游雲端計算系統303(1)-303(E*F)之聚合時,圖6之組態可特別有用。而且,圖6之組態在PCIe組構中提供某一程度之冗餘。例如,使用多個PCIe交換機305(1)-305(E)減少了故障域,使得若一個(或甚至更多個)PCIe交換機305(1)-305(E)在給定雲端儲存系統301內發生故障,則僅丟失雲端儲存系統301之少量資料通信介面頻寬容量。
在各種情形中,雲端計算系統303(1)-303(E*F)中之一或多者可能發生故障,及/或其對應之PCIe鏈路309(1)-309(E*F)中之一或多者可能發生故障,及/或PCIe交換機305(1)-305(E)中之一或多者可能發生故障。可偵測及處置此等各種故障模式。例如,PCIe交換機305(1)-305(E)及/或雲端計算系統303(1)-303(E*F)及/或雲端儲存系統301可經組態以偵測PCIe鏈路309(1)-309(E*F)中之給定PCIe鏈路何時諸如因I/O請求超時而發生故障。當偵測到此故障時,可嘗試重新建立PCIe鏈路309(1)-309(E*F)中之發生故障之給定PCIe鏈路。若無法重新建立PCIe鏈路309(1)-309(E*F)中之發生故障的給定PCIe鏈路,則可需要終止對應之活動雲端遊戲會話。在此情況下,將錯誤報告給適當之軟體組件以終止雲端遊戲會話。然後,在適當時間,諸如在系統重新啟動時,可檢查且驗證PCIe鏈路309(1)-309(E*F)中之發生故障的給定PCIe鏈路。而且,當無法重新建立PCIe鏈路309(1)-309(E*F)中之發生故障的給定PCIe鏈路時,可將雲端計算系統303(1)-303(E*F)中之對應之雲端計算系統報告為「在線下」,使得使用者將不會被分配給它。
在一些實施例中,將一或多個雲端計算系統303連接至雲端儲存系統301之PCIe組構可包括多個PCIe交換機305之扇出組態。例如,圖7示出了根據一些實施例之雲端遊戲組態,其中雲端儲存系統301經由PCIe交換機305A、305B、305C之扇出組態連接至多個雲端計算系統303。雲端儲存系統301之PCIe埠316經由PCIe鏈路307連接至PCIe交換機305A之PCIe埠319A。PCIe交換機305A之PCIe埠315A經由PCIe鏈路701連接至PCIe交換機305B之PCIe埠319B。PCIe交換機305A之PCIe埠315B經由PCIe鏈路703連接至PCIe交換機305C之PCIe埠319C。PCIe交換機305B具有某一數量之(F個)PCIe埠315(1)-315(F),各別雲端計算系統303(1)-303(F)藉由對應之PCIe埠313(1)-313(F)及對應之PCIe鏈路309(1)-309(F)連接至該數量之PCIe埠315(1)-315(F)。PCIe交換機305C具有某一數量之(F個)PCIe埠315(1)-315(F),各別雲端計算系統303(1)-303(F)藉由對應之PCIe埠313(1)-313(F)及對應之PCIe鏈路309(1)-309(F)連接至該數量之PCIe埠315(1)-315(F)。PCIe埠315(1)-315(F)之數量(F)對於不同之PCIe交換機305B及305C可有所不同。而且,儘管圖7之實例示出了處於扇出組態之三個PCIe交換機305A、305B、305C,但應理解,其他實施例可在扇出組態中包括多於三個PCIe交換機305,且可包括連接至給定PCIe交換機305之下游PCIe埠315的多於兩個PCIe交換機305。
當單一PCIe交換機305沒有提供足夠之資料通信介面頻寬(PCIe線道)來支援下游雲端計算系統303之聚合時,多個PCIe交換機305之扇出組態可特別有用。而且,當多個雲端計算系統303同時及/或時刻需要最大資料通信介面頻寬(PCIe線道)時,多個PCIe交換機305之扇出組態可特別有用。而且,多個PCIe交換機305之扇出組態經由PCIe組構提供改良之信號完整性。例如,PCIe規範對電路板上或電纜中之電跡線具有最大長度。而且,電跡線之最大長度取決於所利用之PCIe技術之產生。PCIe規範定義某一信號損耗量,其對於PCIe 4.0為大約26 dB。此信號損耗預算遍及整個信號路徑,例如遍及構成整個信號路徑之晶片之I/O引腳、連接器、跡線/電纜等。在實施PCIe 4.0之實際系統中,整個信號路徑之最大長度為大約一米。然而,若注意且使用極高品質之材料,則整個信號路徑之最大長度可長達4米。由於每個PCIe交換機305都會再生行進通過PCIe組構之信號,因此使用多個PCIe交換機305之扇出組態可提供一種用以增加可經由PCIe組構發射信號所經過之總體電跡線距離的方法。在一些實施例中,增加可經由PCIe組構發射信號所經過之總體電跡線距離可使用用以在PCIe組構內在雲端儲存系統301與雲端計算系統303中之任何一或多個雲端計算系統之間的各個點處再生及/或增強信號之特殊邏輯實施。
儘管圖3A、圖3B、圖5、圖6及圖7之實例示出了包括雲端儲存系統301、多個PCIe交換機305、多個用戶端計算系統303及相關聯之PCIe鏈路之PCIe組構,但應理解,在各種實施例中之PCIe組構亦可包括其他PCIe相容裝置,諸如GPU、網路配接器、NVMe儲存裝置及/或基本上任何其他PCIe相容裝置,其中每個PCIe相容裝置都經由適當大小之PCIe鏈路連接至分配之PCIe交換機。在系統開機時,可經由PCIe組構之組態將PCIe組構內之任何給定PCIe相容裝置分配至給定之雲端計算系統303。通常,系統硬體組態在系統開機時為固定的。然而,在某些情況下,可使用PCIe熱插拔,諸如以便熱插拔例如NVMe SSD U.2,外觀尺寸為2.5英吋之裝置。以此方式,PCIe熱插拔類似於電纜快捷PCI。在一些實施例中,根複合體經組態以辨識新PCIe裝置之熱插拔連接且通知作業系統,其中作業系統又分配記憶體位址空間以供新PCIe裝置使用。而且,在各種實施例中,PCIe組構內之一或多個PCIe相容裝置可在PCIe組構內之多個雲端計算系統303之間共用。若PCIe相容裝置支援諸如單根輸入/輸出虛擬化(SR-IOV)之標準,則PCIe組構內之多個雲端計算系統303對PCIe相容裝置之此共用可為可能的,SR-IOV係藉由將PCIe相容裝置虛擬切片為虛擬功能來提供對PCIe組構內之單一PCIe裝置之共用的規範。例如,使用SR-IOV來實現對PCIe組構內之單一PCIe裝置之共用對於網路配接器、NVMe裝置及甚至某些GPU特別有用。
可將雲端遊戲之計算組織在計算抽屜中,其中每個計算抽屜包括一或多個獨立之雲端計算系統303、電力輸送系統、機架管理介面、PCIe介面及可選之網路連接性。圖8示出了根據一些實施例之實例計算抽屜801。計算抽屜801包括某一數量之(Y個)雲端計算系統303(1)-303(Y),其中(Y)為一或多個。計算抽屜亦包括PCIe介面805及將雲端計算系統303(1)-303(Y)連接至PCIe介面805之該數量之(Y個)PCIe鏈路807(1)-807(Y)。PCIe介面805經組態以將計算抽屜801連接至外部PCIe鏈路815。計算抽屜801亦包括經連接以將電力輸送至計算抽屜801上之所有電動組件之電力輸送系統803。電力輸送系統803經組態以自計算抽屜801外部之源接收電力。例如,在一些實施例中,電力輸送系統803經組態以連接至電力軌。在一些實施例中,電力輸送系統803包括電源。計算抽屜801亦包括機架管理介面813,諸如通用串列匯流排(USB)、通用異步接收器-發射器(UART)控制器、內部積體電路(I2C)系統等。計算抽屜801亦可包括一或多個額外組件811,該等額外組件中之任一者都可具有藉由對應之PCIe鏈路809連接至計算抽屜801之PCIe介面805的PCIe介面。而且,在一些實施例中,計算抽屜801可視情況包括諸如至計算抽屜801及/或至乙太網路連接及/或至雲端計算系統303(1)-303(Y)之網路連接性。
在一些實施例中,計算抽屜801上之每個雲端計算系統303(1)-303(Y)為包括諸如關於圖3B之實例所描述之裝置及連接性的獨立系統。在一些實施例中,每個雲端計算系統303(1)-303(Y)包括連接至計算抽屜801之PCIe介面805之PCIe介面。在一些實施例中,每個雲端計算系統303(1)-303(Y)上之PCIe介面為PCIe插槽及/或M2介面及/或OCuLink連接器及/或能夠載運PCIe信號且與PCIe組構(或等效組構)介接之另一類型之介面。
在一些實施例中,計算抽屜801中之PCIe介面805為每個雲端計算系統303(1)-303(Y)連接至之板。PCIe介面805之板經組態以自每個雲端計算系統303(1)-303(Y)收集PCIe信號,且在計算抽屜801之外部(例如背面)暴露連接器。在計算抽屜801之外部暴露之連接器可連接至機架之背板,其中背板將多個計算抽屜801連接至雲端儲存系統301。在一些實施例中,在計算抽屜801之外部暴露之連接器可在計算抽屜801與雲端儲存系統301之間提供電纜(有線)連接。在一些實施例中,計算抽屜801之PCIe介面805可包括電子組件,諸如用於增強信號完整性之組件及/或用於實施如關於圖7描述之多個PCIe交換機之扇出組態的PCIe交換機及PCIe鏈路。在一些實施例中,PCIe介面805包括輔助PCIe裝置,諸如UART控制器、溫度感測器、通用輸入/輸出裝置(GPIO)組件及/或用於實現對計算抽屜801之管理的其他組件。而且,PCIe介面805內之各種裝置/組件可供雲端計算系統303(1)-303(Y)及/或另一管理伺服器使用以用於計算抽屜801之操作目的,諸如以用於對特定之雲端計算系統303(1)-303(Y)通電。此管理伺服器可經組態以管理一或多個計算抽屜801、計算抽屜801之陣列或計算抽屜801之整個機架。在一些實施例中,雲端儲存系統301可用作管理伺服器。在一些實施例中,管理伺服器不同於雲端儲存系統301。
圖9示出了根據一些實施例之可在雲端遊戲中心內實施之機架901的實例圖。機架901包括機架交換機之頂部905,以使得機架901內之組件能夠連接至外部網路,諸如連接至網際網路。在一些實施例中,機架901包括多個計算陣列903A、903B、903C。每個計算陣列903A、903B、903C包括多個計算抽屜801。機架901亦包括雲端儲存系統301。每個計算陣列903A、903B、903C經由PCIe組構連接至雲端儲存系統301。在一些實施例中,給定計算陣列903A、903B、903C包括背板907,各種計算抽屜801之PCIe介面805連接至背板907中。在一些實施例中,給定計算陣列903A、903B、903C之背板907可包括PCIe交換機或一或多個其他電子組件以增強信號完整性。在一些實施例中,給定計算陣列903A、903B、903C之背板907可經由諸如OCuLink電纜之電纜或與PCIe組構相容的其他類型之連接裝置連接至雲端伺服器系統301。在一些實施例中,給定計算陣列903A、903B、903C之背板907可經組態以提供給定計算陣列903A、903B、903C內之計算抽屜801之聚合所需的最大PCIe頻寬量。然而,在一些實施例中,給定計算陣列903A、903B、903C之背板907可經組態以諸如藉由實施PCIe交換機之扇出組態來減少給定計算陣列903A、903B、903C內之個別計算抽屜801可用的PCIe頻寬。
應理解,出於描述之目的,藉由實例之方式提供了圖9所示之機架901之組態。在各種實施例中,機架901可包括基本上任何數量之計算陣列903A-903C,其中每個計算陣列903A-903C都包括基本上任何數量之計算抽屜801。而且,在各種實施例中,機架901可包括多於一個雲端儲存系統301。而且,在一些實施例中,給定機架901中之計算抽屜801經連接以僅與給定機架901內之一或多個雲端儲存系統301通信。然而,在一些實施例中,給定機架901中之計算抽屜801可經連接以與一或多個額外機架901中之雲端儲存系統301通信。而且,在一些實施例中,給定機架901中之雲端儲存系統301可經連接以與另一機架901中之另一雲端儲存系統301通信。而且,在一些實施例中,雲端儲存系統301之各種組件可分佈在多個機架901中。
因此,應理解,在一些實施例中,雲端儲存系統301及雲端計算系統303可位於同一機架901中。然而,在一些實施例中,雲端儲存系統301及雲端計算系統303可位於不同之機架901中。而且,在一些實施例中,單一機架901將包括多個雲端儲存系統301。而且,在一些實施例中,多個雲端儲存系統301中之每一者可經組態以託管不同之內容,例如,不同之雲端遊戲內容,其在一些實施例中可為不同之遊戲。在一些實施例中,取決於給定雲端計算系統303所需之遊戲內容,給定雲端計算系統303將與多個雲端儲存系統301中之不同之雲端儲存系統互動。在一些實施例中,在安裝雲端計算系統303之前,向雲端計算系統303提供關於將與哪個雲端儲存系統301進行通信之細節。在一些實施例中,雲端計算系統303經組態以維護提供關於哪些雲端儲存系統301可用於資料存取及關於儲存在各個雲端儲存系統301上之內容(例如,遊戲內容)之資訊的資料庫/清單。
在高級雲端遊戲系統中,用於雲端計算系統303之本地資料儲存解決方案可具有非常高之資料輸送量及非常低之潛時。在雲端遊戲中,為雲端計算系統303虛擬化資料儲存為有益的,此乃因通常不可能將所有提供之遊戲內容都儲存在雲端計算系統303本地之資料儲存裝置中,且此乃因將此大量之提供之遊戲內容儲存在個別雲端計算系統303本地之資料儲存裝置中將無法管理。出於至少此等原因,多個雲端計算系統303在一或多個雲端儲存系統301中共用資料儲存,一或多個雲端儲存系統可提供大量資料儲存容量。雲端儲存系統301可儲存可在多個雲端計算系統303之間共用之資料,諸如唯讀遊戲內容。雲端儲存系統301亦可儲存特定於給定雲端計算系統303且不可在多個雲端計算系統303之間共用之其他資料。雲端計算系統303經組態以基於其本地儲存系統之資料存取速度(例如,NVMe SSD之資料存取速度,其可非常快)進行操作。因此,雲端儲存系統301需要匹配雲端計算系統303之本地資料存取速度,以便避免不利地影響雲端計算系統303之操作效能。然而,當前可用於在雲端儲存系統301中使用之資料儲存裝置與雲端儲存系統301之基於網路之資料存取潛時相結合不會向雲端計算系統303提供足夠快的資料存取解決方案以致無法實現雲端計算系統303之本地資料存取速度之匹配。另外,當前不可使用習知之雲端遊戲機架架構來取得能夠匹配雲端計算系統303之資料存取效能需求的個別伺服器類儲存裝置。
本文中揭露之在雲端遊戲系統之機架901內使用PCIe組構來將多個雲端計算系統303連接至雲端儲存系統301的系統及方法使得每個雲端計算系統303能夠直接存取儲存在雲端儲存系統301之電腦記憶體323中之遊戲內容,存取速度及頻寬就像該遊戲內容儲存在雲端計算系統303之本地電腦記憶體337中一樣。在本文揭露之系統及方法中,利用PCIe交換技術來向雲端計算系統303提供對雲端儲存系統301之電腦記憶體323之高速存取,其中此高速存取超出了使用網卡及網路交換機可能實現之速度。而且,雲端計算系統303之儲存CPU 331經組態以有效地處理儲存命令,但可能不夠強大而無法運行作業系統及管理使用網卡及網路交換機來安排雲端儲存系統301與雲端計算系統303之間的資料通信將需要之高速網路連接操作。然而,在本文揭露之系統及方法中使用PCIe交換技術允許儲存CPU 331處置雲端儲存系統301與雲端計算系統303之間的資料通信,此有助於卸載雲端計算系統303之主CPU 325。以此方式,使用PCIe組構來連接雲端計算系統303與雲端儲存系統301提供了關於雲端計算系統303如何經組態以進行操作之相對自然的擴展。
如前所述,在一些實施例中,雲端計算系統303包括其自己之本地資料儲存裝置,諸如SATA-HDD 353、NVMe SSD 341及/或其他資料儲存裝置,諸如SATA-SSD等。雲端計算系統303之一或多個本地資料儲存裝置可儲存多種不同類型之資料,諸如作業系統資料(例如,系統庫、系統程式、服務、組態檔案、字體、影像、音訊檔案,及其他類型之資料)、使用者特定資料(保存之遊戲資料、使用者角色資料、下載之資料、瀏覽器書籤、圖片、音樂、視訊及其他類型之資料),及/或遊戲資料(給定遊戲之資料,包括可執行檔案、庫、紋理、音訊檔案、視訊、遊戲幾何及其他類型之資料)。在本地儲存在雲端計算系統303上之每種類型之資料可具有不同之效能要求及存取模式。例如,除組態檔案外,作業系統資料大多為唯讀的。而且,使用者特定資料可能經常有修改。而且,遊戲資料通常為唯讀的。另外,遊戲之任何寫入操作都會得到使用者特定資料,例如用於儲存遊戲進度之保存之遊戲資料檔案等。在一些實施例中,作業系統資料、使用者特定資料及遊戲資料儲存在單一儲存裝置上。而且,在一些實施例中,由於作業系統資料、使用者特定資料及遊戲資料具有不同之效能要求,因此作業系統資料、使用者特定資料及遊戲資料儲存在單一儲存裝置內之不同分區或名稱空間上。在一些實施例中,儲存裝置內之每個分區可使用不同之檔案系統,諸如FAT32、exFAT、NTFS、UFS、EXT4等等。
在雲端計算系統303開機時,雲端計算系統303之作業系統列舉雲端計算系統303可見之儲存裝置,且使用分區所需之檔案系統來安裝所需之任何分區。雲端計算系統303可用之大多數資料係在雲端計算系統303開機時安裝的。然而,在雲端計算系統303之操作期間可發生其他安裝操作。例如,使用者可插入額外之資料儲存媒體,諸如DVD、藍光光碟、USB密鑰及/或攜帶型硬碟驅動器等。而且,在一些實施例中,儲存在雲端計算系統303之本地資料儲存裝置上之資料本身可需要在使用之前安裝。例如,遊戲內容可以包括遊戲資料及遊戲可執行檔案之遊戲包格式來組織。在此實例中,在開始遊戲之前,可能有必要安裝遊戲包,使得可根據需要應用任何所需之數位版權管理(DRM)來對任何資料解密。
在雲端計算系統303之上下文中,遊戲資料之效能(存取及處理)為最關鍵的,此乃因它極大地影響遊戲載入時間及使用者體驗。在一些實施例中,特殊檔案系統及檔案API(應用程式設計介面)用於遊戲資料,而其他資料類型(作業系統資料及/或使用者特定資料)使用傳統檔案系統及傳統檔案API,諸如POSIX(可攜式作業系統介面)或Win32(WINDOWS 95及更高版本之32位元API)指定之檔案系統及檔案API。具體而言,當使用高速NVMe裝置時,傳統POSIX及Win32 API之額外負擔很大,此乃因API非常複雜且需要大量CPU側處理,此出於遊戲資料效能及潛時原因並非最佳的。在一些實施例中,用於讀取檔案及寫入檔案之專用之遊戲特定API的實例可為如下樣子:
readFile(uint32_t id, void *buffer, size_t size, size_t offset)
writeFile(uint32_t id, void *buffer, size_t size, size_t offset)
在此上下文中,「id」為檔案之標識符。在傳統作業系統中,檔案標識符係藉由匹配之「開放」API調用而獲得,該調用將「檔案路徑」映射至標識符,其中有關其工作方式之具體內容取決於作業系統及檔案系統。此亦可以不同方式完成。例如,在雲端計算系統303中,可以遊戲包(諸如ISO檔案、ISO影像或其他格式)組織資料,此遊戲包可包括檔案名稱至檔案標識符之映射表。例如,圖10示出了根據一些實施例之將檔案名稱映射至檔案標識符之映射表的實例。在一些實施例中,作為實例,應用程式可使用API調用來使用諸如圖10所示之映射表執行檔案標識符映射。
緩衝區為保存待讀取或寫入之資料的記憶體區塊。在如上所示之用於讀取檔案及寫入檔案之專用遊戲特定API的實例中,「size(大小)」為待讀取或寫入之資料量。緩衝區需要具有至少可容納待讀取或寫入之資料之「size」(即量)的資料儲存容量。在如上所示之用於讀取檔案及寫入檔案之專用遊戲特定API的實例中,「offset(偏移量)」為記憶體中相對於檔案開始之位置,待讀取之資料位於該位置處/在該位置處開始。偏移量通常為零,但可使用非零值以自檔案中與檔案開頭相距某一距離之位置讀取資料。
在一些實施例中,用於讀取檔案及寫入檔案之遊戲特定API(readFile/writeFile)映射至命令緩衝區。命令緩衝區為除其他內部資料結構之外的至少含有傳遞至readFile/writeFile API調用之參數的資料結構。由應用程式提供之「void *buffer」通常為應用程式本地之虛擬記憶體位址。在一些實施例中,命令緩衝區需要實體記憶體位址,此又需要虛擬記憶體位址與實體記憶體位址之間的變換。在一些實施例中,虛擬記憶體位址與實體記憶體位址之間的此變換由作業系統內核完成。此變換能力允許雲端計算系統303中之其他進程或協處理器(諸如儲存CPU 331等)到達記憶體緩衝區。
在一些實施例中,命令緩衝區置放在命令佇列上,以用於由雲端計算系統303之在主CPU 325上運行之作業系統進行處置。在一些實施例中,命令緩衝區諸如藉由由主CPU 325及儲存CPU 331兩者共用之電腦記憶體337被發送至儲存CPU 331。在一些實施例中,儲存CPU 331用於管理儲存輸入/輸出請求,其提供儲存輸入/輸出請求自主CPU 325之卸載。由於高效能儲存請求處理在中斷方面之要求非常高,因此使用儲存CPU 331可減少由主CPU 325處置之中斷,且對應地提高主CPU 325之處理效能。而且,由於儲存CPU 331與主CPU 325完全隔離,因此儲存CPU 331對儲存輸入/輸出請求之處置可在一定程度上提高資料安全性,應理解,儲存CPU 331可存取電腦記憶體337且可能諸如藉由使用門鈴暫存器在系統之間發送訊息。
在一些實施例中,本文中揭露之系統及方法(其中使用PCIe組構來將雲端計算系統303連接至雲端儲存系統301)包括使用儲存CPU 331及其命令緩衝區處理來實現雲端計算系統303與雲端儲存系統301之間的直接資料存取。在雲端計算系統303中,檔案標識符用作檔案系統表(例如,圖10)中之關鍵字/索引來查找檔案之元資料。在一些實施例中,檔案之元資料包括檔案在記憶體中(諸如在HDD或SSD上)之位置。如元資料中指定的檔案在記憶體中之位置亦可包括待讀取資料所處之偏移量,諸如HDD或SSD上之邏輯區塊尋址(LBA)扇區,或者相對於遊戲包之偏移量。檔案之元資料亦可包括檔案之大小及其他可選之元資料,諸如用於壓縮或加密目的之元資料。
檔案之元資料由雲端計算系統303用來對儲存裝置執行DMA操作以擷取/儲存由命令緩衝區標識之資料。在DMA操作完成後,如藉由來自DMA控制器339之中斷所表示,儲存CPU 331通知主CPU 325且將結果輸送回至應用程式。在一些實施例中,在自儲存裝置擷取資料之後的其他操作可包括資料之解壓縮及解密,如由儲存CPU 331經由諸如解壓縮/壓縮引擎335之其他協處理器所管理的。
儘管如上文論述之用於讀取檔案及寫入檔案之遊戲特定API(readFile/writeFile)用於專用遊戲API,但習知之POSIX及/或Win32 API可由雲端計算系統303用於其他資料類型,且此等習知API可映射至不同類型之命令緩衝區。一般而言,整個資料路徑預期隨著作業系統之更多處理及處置而有所不同。然而,最終之資料存取請求仍可傳遞通過儲存CPU 331。
在一些雲端遊戲實施方案中,根據本文揭露之實施例,雲端計算系統303可不具有其自己之本地資料儲存裝置,諸如HDD及/或SSD。或者,雲端計算系統303可具有用於儲存作業系統之一部分的最小本地資料儲存裝置。應理解,在此等實施例中,可利用連接雲端計算系統303與雲端儲存系統301之PCIe組構來擴展雲端計算系統303之儲存CPU 331對命令緩衝區之處置。在一些情況下,可藉由雲端儲存系統301來處理指示對儲存在雲端儲存系統301內之某一位置的資料之存取之命令緩衝區。替代地,在一些情況下,可由雲端計算系統303在繞過雲端儲存系統301中之CPU 365的情況下管理指示對儲存在雲端儲存系統301內之某一位置的資料之存取之命令緩衝區。
如下描述各種實施例,其中藉由雲端儲存系統301來處理指示對儲存在雲端儲存系統301內之某一位置的資料之存取之命令緩衝區。在此等實施例中,雲端儲存系統301之CPU 365自雲端計算系統303接收命令緩衝區,其中命令緩衝區包括關於待讀取或寫入哪些資料之資訊。命令緩衝區最初由readFile或writeFile操作生成。在一些實施例中,命令緩衝區經傳遞至雲端計算系統303之儲存CPU 331且由儲存CPU 331處置。命令緩衝區為包括指定將讀取或寫入哪些資料之資訊的資料結構。在此等實施例中,替代儲存CPU 331存取雲端計算系統303上之本地儲存裝置,儲存CPU 331經由PCIe組構與雲端儲存系統301互動。
下面描述了用於資料讀取操作之若干實例實施例,其中藉由雲端儲存系統301來處理指示對儲存在雲端儲存系統301內之某一位置的資料之讀取之命令緩衝區。實例實施例關於命令緩衝區經傳送至雲端儲存系統301之方式及關於所請求之資料經傳送至雲端計算系統303之方式有所變化。在雲端計算系統303與雲端儲存伺服器301之間交換命令緩衝區之程序稱為控制路徑。在雲端儲存系統301與雲端計算系統303之間交換資料之程序稱為資料路徑。下面描述之實例實施例中之每一者代表控制路徑及資料路徑之不同組合。在一些情況下,控制路徑及資料路徑兩者都可能卸載至專用硬體。然而,在某些情形中此可為困難的。因此,在一些情況下,諸如儲存CPU 331之CPU處置通常為有限工作量之控制路徑,且資料路徑自CPU經卸載以用於由專用硬體(諸如DMA控制器339或其他專用硬體)處置。
為了便於論述,下面關於單一命令緩衝區之處置描述了實例實施例。然而,應理解,實際上,雲端儲存伺服器301之任務為一次處置多個命令緩衝區,其中此等多個命令緩衝區可來自相同之雲端計算系統303或來自不同之雲端計算系統303。因此,在一些實施例中,雲端儲存系統301實施用於處置傳入之命令緩衝區的佇列機制。而且,在一些實施例中,由雲端儲存系統301實施之佇列機制對於每個雲端計算系統303包括多個命令緩衝區佇列。在此等實施例中,可為不同之命令緩衝區佇列分配不同之處理優先級等級,使得較高優先級之命令緩衝區進入較高優先級之命令緩衝區佇列中。而且,下面論述之實例實施例主要係關於遊戲內容唯讀資料存取命令緩衝區,諸如由如上文論述之用於讀取檔案及寫入檔案之遊戲特定API(readFile/writeFile)生成的命令緩衝區。然而,應理解,下面論述之實例實施例之原理亦可用於讀取及寫入其他資料類型,諸如作業系統資料及/或使用者特定資料,該等資料類型可使用較習知之POSIX及/或Win32 API及對應地調整之命令緩衝區。例如,使用習知POSIX API進行之讀取或寫入操作將類似於專用遊戲讀取操作,其需要進行一些調整才能將寫入命令緩衝區資料自雲端計算系統303傳輸至雲端儲存系統301。
在第一實例實施例中,藉由雲端計算系統303操作以藉由PCIe組構將命令緩衝區寫入至雲端儲存系統301之電腦記憶體323來將命令緩衝區傳送至雲端儲存系統301。雲端儲存伺服器301執行命令緩衝區以自雲端儲存伺服器301可存取之資料儲存裝置讀取所請求之資料。藉由雲端計算系統303操作以藉由PCIe組構自雲端儲存系統301之電腦記憶體323讀取所請求之資料來將所請求之資料傳送至雲端計算系統303。
在第一實例實施例中,雲端計算系統303生成命令緩衝區以自雲端儲存系統301讀取資料。待讀取之資料稱為所請求之資料。雲端計算系統303將命令緩衝區寫入至雲端儲存系統301上之電腦記憶體323。雲端計算系統303通知雲端儲存系統301命令緩衝區到達雲端儲存系統301之電腦記憶體323中。在一些實施例中,命令緩衝區到達雲端儲存系統301之電腦記憶體323中的此通知係藉由雲端計算系統303對門鈴暫存器進行寫入或向雲端儲存系統301發送訊息而完成的。門鈴暫存器可處於由雲端儲存系統301監視之任何記憶體位置。例如,門鈴暫存器可處於雲端儲存系統301之電腦記憶體323中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端計算系統303之電腦記憶體337中。命令緩衝區到達雲端儲存系統301之電腦記憶體323中的通知致使在雲端儲存系統301上觸發中斷。
回應於該中斷,雲端儲存系統301自雲端儲存系統301之電腦記憶體323讀取命令緩衝區,且處理該命令緩衝區以自雲端儲存系統301可存取之資料儲存裝置獲得所請求之資料。雲端儲存系統301將所請求之資料寫入至雲端儲存系統301之電腦記憶體323中。然後,雲端儲存系統301通知雲端計算系統303:所請求之資料在雲端儲存系統301之電腦記憶體323中可用,及所請求之資料位於雲端儲存系統301之電腦記憶體323中的何處。在一些實施例中,所請求之資料在雲端儲存系統301之電腦記憶體323中可用的此通知係藉由雲端儲存系統301對門鈴暫存器進行寫入或向雲端計算系統303發送訊息而完成的。門鈴暫存器可處於由雲端計算系統303監視之任何記憶體位置。例如,門鈴暫存器可處於雲端計算系統303之電腦記憶體337中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端儲存系統301之電腦記憶體323中。而且,在一些實施例中,門鈴暫存器為專用於此目的之硬體中之實際暫存器,諸如SRAM/正反器中之硬體暫存器。
回應於所請求之資料在雲端儲存系統301之電腦記憶體323中可用的通知,雲端計算系統303自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在一些實施例中,雲端計算系統303使用由雲端儲存系統301返回之記憶體位址以自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在一些實施例中,在雲端儲存系統301上之電腦記憶體323中之預先分配的固定記憶體位址專用於雲端計算系統303,且由雲端計算系統303知曉為可用於讀取所請求之資料的記憶體位址。在一些實施例中,雲端計算系統303上之儲存CPU 331藉由PCIe組構直接自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在一些實施例中,雲端計算系統303上之儲存CPU 331指示DMA引擎藉由PCIe組構自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在各種實施例中,DMA引擎可在雲端計算系統303內實施(例如,DMA控制器339),或在PCIe交換機305內實施,或在雲端計算系統303可經由PCIe組構存取之另一組件內實施。可使用DMA引擎以自雲端儲存系統301上之電腦記憶體323讀取所請求之資料,以幫助卸載雲端計算系統303之儲存CPU 331。
圖11示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統303之雲端儲存系統301。該方法包括用於具有雲端遊戲系統之操作1101,該雲端遊戲系統包括經由PCIe組構彼此連接之雲端儲存系統301及雲端計算系統303。雲端儲存系統301包括電腦記憶體323,且雲端計算系統303包括電腦記憶體337。PCIe組構包括連接至雲端儲存系統301之PCIe介面且連接至雲端計算系統303之PCIe介面的PCIe交換機305。該方法包括操作1103,其中雲端計算系統303操作以生成用於資料讀取操作之命令緩衝區。該方法包括操作1105,其中雲端計算系統303操作以經由PCIe組構將命令緩衝區寫入至雲端儲存系統301之電腦記憶體323。該方法包括操作1107,其中雲端計算系統303操作以經由PCIe組構通知雲端儲存系統301命令緩衝區已經寫入至雲端儲存系統301之電腦記憶體323。在一些實施例中,操作1107包括操作雲端計算系統303以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端儲存系統301監視。
該方法包括操作1109,其中雲端儲存系統301操作以自雲端儲存系統301之電腦記憶體323讀取命令緩衝區。該方法包括操作1111,其中雲端儲存系統301操作以處理命令緩衝區,以便自雲端儲存系統301可存取之儲存裝置讀取所請求之資料,且將所請求之資料寫入在雲端儲存系統301之電腦記憶體323中。該方法包括操作1113,其中雲端儲存系統301操作以經由PCIe組構通知雲端計算系統303所請求之資料在雲端儲存系統301之電腦記憶體323中。在一些實施例中,操作1113包括操作雲端儲存系統301以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端計算系統303監視。該方法包括操作1115,其中雲端計算系統303操作以經由PCIe組構自雲端儲存系統301之電腦記憶體323讀取所請求之資料。
在圖11之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305。在圖11之方法之一些實施例中,雲端儲存系統301包括IOMMU 381,且雲端儲存系統301之PCIe介面連接至IOMMU 381。在圖11之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端儲存系統301包括IOMMU 381,其中雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305,且其中雲端儲存系統301之PCIe介面連接至IOMMU 381。
在第二實例實施例中,藉由雲端計算系統303操作以藉由PCIe組構將命令緩衝區寫入至雲端儲存系統301之電腦記憶體323來將命令緩衝區傳送至雲端儲存系統301。雲端儲存伺服器301執行命令緩衝區以自雲端儲存伺服器301可存取之資料儲存裝置讀取所請求之資料。藉由雲端儲存系統301操作以藉由PCIe組構將所請求之資料寫入至雲端計算系統303之電腦記憶體337來將所請求之資料傳送至雲端計算系統303。
在第二實例實施例中,雲端計算系統303生成命令緩衝區以自雲端儲存系統301讀取資料。待讀取之資料稱為所請求之資料。命令緩衝區指定雲端計算系統303之電腦記憶體337中之實體記憶體位址,雲端儲存系統301可藉由PCIe組構在該實體記憶體位址處寫入所請求之資料。若PCIe交換機305包括NTB 321,則雲端計算系統303之電腦記憶體337中之在命令緩衝區中經指定為用於指示雲端儲存系統301可在其中寫入所請求之資料的實體記憶體位址為由NTB 321生成之轉換後之記憶體位址。在此情況下,雲端計算系統303之儲存CPU 331操作以修改原始命令緩衝區以包括由NTB 321生成之轉換後之記憶體位址。
雲端計算系統303藉由PCIe組構將命令緩衝區寫入至雲端儲存系統301上之電腦記憶體323。雲端計算系統303通知雲端儲存伺服器301命令緩衝區到達雲端儲存系統301之電腦記憶體323中。在一些實施例中,命令緩衝區到達雲端儲存系統301之電腦記憶體323中的此通知係藉由雲端計算系統303對門鈴暫存器進行寫入或向雲端儲存系統301發送訊息而完成的。門鈴暫存器可處於由雲端儲存系統301監視之任何記憶體位置。例如,門鈴暫存器可處於雲端儲存系統301之電腦記憶體323中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端計算系統303之電腦記憶體337中。命令緩衝區到達雲端儲存系統301之電腦記憶體323中的通知致使在雲端儲存系統301上觸發中斷。
回應於該中斷,雲端儲存系統301自雲端儲存系統301之電腦記憶體323讀取命令緩衝區,且處理該命令緩衝區以自雲端儲存系統301可存取之資料儲存裝置獲得所請求之資料。雲端儲存系統301可視情況將所請求之資料寫入至雲端儲存系統301之電腦記憶體323中。然後,雲端儲存伺服器301藉由PCIe組構將所請求之資料寫入至雲端計算系統303上之在命令緩衝區中指定的記憶體位址。在一些實施例中,雲端儲存系統301藉由PCIe組構將所請求之資料直接寫入至雲端計算系統303上之電腦記憶體337。在一些實施例中,雲端儲存系統301指示DMA引擎藉由PCIe組構將所請求之資料寫入至雲端計算系統303上之電腦記憶體337。在各種實施例中,DMA引擎可在雲端儲存系統301內實施,或在PCIe交換機305內實施,或在雲端儲存系統301可經由PCIe組構存取之另一組件內實施。可使用DMA引擎來將所請求之資料寫入至雲端計算系統303上之電腦記憶體337,以幫助卸載雲端儲存系統301之CPU 365。
然後,雲端儲存系統301通知雲端計算系統303所請求之資料在雲端計算系統303之電腦記憶體337中可用。在一些實施例中,所請求之資料在雲端計算系統303之電腦記憶體337中可用的此通知係藉由雲端儲存系統301對門鈴暫存器進行寫入或向雲端計算系統303發送訊息而完成的。門鈴暫存器可處於由雲端計算系統303監視之任何記憶體位置。例如,門鈴暫存器可處於雲端計算系統303之電腦記憶體337中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端儲存系統301之電腦記憶體323中。
圖12示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統303之雲端儲存系統301。該方法包括用於具有雲端遊戲系統之操作1201,該雲端遊戲系統包括經由PCIe組構彼此連接之雲端儲存系統301及雲端計算系統303。雲端儲存系統301包括電腦記憶體323,且雲端計算系統303包括電腦記憶體337。PCIe組構包括連接至雲端儲存系統301之PCIe介面且連接至雲端計算系統303之PCIe介面的PCIe交換機305。該方法包括操作1203,其中雲端計算系統303操作以生成用於資料讀取操作之命令緩衝區。該方法亦包括操作1205,其中雲端計算系統303操作以經由PCIe組構將命令緩衝區寫入至雲端儲存系統301之電腦記憶體323。該方法亦包括操作1207,其中雲端計算系統303操作以經由PCIe組構通知雲端儲存系統301命令緩衝區已經寫入至雲端儲存系統301之電腦記憶體323。在一些實施例中,操作1207包括操作雲端計算系統303以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端儲存系統301監視。
該方法亦包括操作1209,其中雲端儲存系統301操作以自雲端儲存系統301之電腦記憶體323讀取命令緩衝區。該方法亦包括操作1211,其中雲端儲存系統301操作以處理命令緩衝區,以便自雲端儲存系統301可存取之儲存裝置讀取所請求之資料。該方法亦包括操作1213,其中雲端儲存系統301操作以經由PCIe組構將所請求之資料寫入至雲端計算系統303之電腦記憶體337。該方法亦包括操作1215,其中雲端儲存系統301操作以經由PCIe組構通知雲端計算系統303所請求之資料在雲端計算系統303之電腦記憶體337中。在一些實施例中,操作1215包括操作雲端儲存系統301以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端計算系統303監視。
在圖12之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305。在圖12之方法之一些實施例中,雲端儲存系統301包括IOMMU 381,且雲端儲存系統301之PCIe介面連接至IOMMU 381。在圖12之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端儲存系統301包括IOMMU 381,其中雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305,且其中雲端儲存系統301之PCIe介面連接至IOMMU 381。若PCIe交換機305包括NTB 321,則雲端計算系統303之電腦記憶體337中之在命令緩衝區中經指定為用於指示雲端儲存系統301可在其中寫入所請求之資料的實體記憶體位址為由NTB 321生成之轉換後之記憶體位址。在此情況下,雲端計算系統303之儲存CPU 331操作以修改原始命令緩衝區以包括由NTB 321生成之轉換後之記憶體位址。
在第三實例實施例中,藉由雲端儲存伺服器301操作以藉由PCIe組構自雲端計算系統303之電腦記憶體337讀取命令緩衝區來將命令緩衝區傳送至雲端儲存系統301。雲端儲存伺服器301執行命令緩衝區以自雲端儲存伺服器301可存取之資料儲存裝置讀取所請求之資料。藉由雲端儲存系統301操作以藉由PCIe組構將所請求之資料寫入至雲端計算系統303之電腦記憶體337來將所請求之資料傳送至雲端計算系統303。
在第三實例實施例中,雲端計算系統303生成命令緩衝區以自雲端儲存系統301讀取資料。待讀取之資料稱為所請求之資料。命令緩衝區指定雲端計算系統303之電腦記憶體337中之實體記憶體位址,雲端儲存系統301可藉由PCIe組構在該實體記憶體位址處寫入所請求之資料。若PCIe交換機305包括NTB 321,則雲端計算系統303之電腦記憶體337中之在命令緩衝區中經指定為用於指示雲端儲存系統301可在其中寫入所請求之資料的實體記憶體位址為由NTB 321生成之轉換後之記憶體位址。在此情況下,雲端計算系統303之儲存CPU 331操作以修改原始命令緩衝區以包括由NTB 321生成之轉換後之記憶體位址。
雲端計算系統303將命令緩衝區寫入至雲端計算系統303上之電腦記憶體337。雲端計算系統303通知雲端儲存伺服器301命令緩衝區到達雲端計算系統303之電腦記憶體337中。在一些實施例中,命令緩衝區到達雲端計算系統303之電腦記憶體337中的此通知係藉由雲端計算系統303對門鈴暫存器進行寫入或向雲端儲存系統301發送訊息而完成的。門鈴暫存器可處於由雲端儲存系統301監視之任何記憶體位置。例如,門鈴暫存器可處於雲端儲存系統301之電腦記憶體323中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端計算系統303之電腦記憶體337中。命令緩衝區到達雲端計算系統303之電腦記憶體337中的通知致使在雲端儲存系統301上觸發中斷。
回應於該中斷,雲端儲存系統301藉由PCIe組構自雲端計算系統303之電腦記憶體337讀取命令緩衝區,且處理該命令緩衝區以自雲端儲存系統301可存取之資料儲存裝置獲得所請求之資料。雲端儲存系統301可視情況將所請求之資料寫入至雲端儲存系統301之電腦記憶體323中。然後,雲端儲存系統301藉由PCIe組構將所請求之資料寫入至雲端計算系統303上之在命令緩衝區中指定的記憶體位址。在一些實施例中,雲端儲存系統301藉由PCIe組構將所請求之資料直接寫入至雲端計算系統303上之電腦記憶體337。在一些實施例中,雲端儲存系統301指示DMA引擎藉由PCIe組構將所請求之資料寫入至雲端計算系統303上之電腦記憶體337。在各種實施例中,DMA引擎可在雲端儲存系統301內實施,或在PCIe交換機305內實施,或在雲端儲存系統301可經由PCIe組構存取之另一組件內實施。可使用DMA引擎來將所請求之資料寫入至雲端計算系統303上之電腦記憶體337,以幫助卸載雲端儲存系統301之CPU 365。
然後,雲端儲存系統301通知雲端計算系統303所請求之資料在雲端計算系統303之電腦記憶體337中可用。在一些實施例中,所請求之資料在雲端計算系統303之電腦記憶體337中可用的此通知係藉由雲端儲存系統301對門鈴暫存器進行寫入或向雲端計算系統303發送訊息而完成的。門鈴暫存器可處於由雲端計算系統303監視之任何記憶體位置。例如,門鈴暫存器可處於雲端計算系統303之電腦記憶體337中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端儲存系統301之電腦記憶體323中。
圖13示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統303之雲端儲存系統301。該方法包括用於具有雲端遊戲系統之操作1301,該雲端遊戲系統包括經由PCIe組構彼此連接之雲端儲存系統301及雲端計算系統303。雲端儲存系統301包括電腦記憶體323,且雲端計算系統303包括電腦記憶體337。PCIe組構包括連接至雲端儲存系統301之PCIe介面且連接至雲端計算系統303之PCIe介面的PCIe交換機305。該方法包括操作1303,其中雲端計算系統303操作以生成用於資料讀取操作之命令緩衝區。該方法亦包括操作1305,其中雲端計算系統303操作以將命令緩衝區寫入至雲端計算系統303之電腦記憶體337。該方法亦包括操作1307,其中雲端計算系統303操作以經由PCIe組構通知雲端儲存系統301命令緩衝區已經寫入至雲端計算系統303之電腦記憶體337。在一些實施例中,操作1307包括操作雲端計算系統303以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端儲存系統301監視。
該方法亦包括操作1309,其中雲端儲存系統301操作以經由PCIe組構自雲端計算系統303之電腦記憶體323讀取命令緩衝區。該方法亦包括操作1311,其中雲端儲存系統301操作以處理命令緩衝區,以便自雲端儲存系統301可存取之儲存裝置讀取所請求之資料。該方法亦包括操作1313,其中雲端儲存系統301操作以經由PCIe組構將所請求之資料寫入至雲端計算系統303之電腦記憶體337。該方法亦包括操作1315,其中雲端儲存系統301操作以經由PCIe組構通知雲端計算系統303所請求之資料在雲端計算系統303之電腦記憶體337中。在一些實施例中,操作1315包括操作雲端儲存系統301以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端計算系統303監視。
在圖13之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305。在圖13之方法之一些實施例中,雲端儲存系統301包括IOMMU 381,且雲端儲存系統301之PCIe介面連接至IOMMU 381。在圖13之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端儲存系統301包括IOMMU 381,其中雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305,且其中雲端儲存系統301之PCIe介面連接至IOMMU 381。若PCIe交換機305包括NTB 321,則雲端計算系統303之電腦記憶體337中之在命令緩衝區中經指定為用於指示雲端儲存系統301可在其中寫入所請求之資料的實體記憶體位址為由NTB 321生成之轉換後之記憶體位址。在此情況下,雲端計算系統303之儲存CPU 331操作以修改原始命令緩衝區以包括由NTB 321生成之轉換後之記憶體位址。
在第四實例實施例中,藉由雲端儲存伺服器301操作以藉由PCIe組構自雲端計算系統303之電腦記憶體337讀取命令緩衝區來將命令緩衝區傳送至雲端儲存系統301。雲端儲存伺服器301執行命令緩衝區以自雲端儲存伺服器301可存取之資料儲存裝置讀取所請求之資料。藉由雲端計算系統303操作以藉由PCIe組構自雲端儲存系統301之電腦記憶體323讀取所請求之資料來將所請求之資料傳送至雲端計算系統303。
在第四實例實施例中,雲端計算系統303生成命令緩衝區以自雲端儲存系統301讀取資料。待讀取之資料稱為所請求之資料。雲端計算系統303將命令緩衝區寫入至雲端計算系統303上之電腦記憶體337。雲端計算系統303通知雲端儲存伺服器301命令緩衝區到達雲端計算系統303之電腦記憶體337中。在一些實施例中,命令緩衝區到達雲端計算系統303之電腦記憶體337中的此通知係藉由雲端計算系統303對門鈴暫存器進行寫入或向雲端儲存系統301發送訊息而完成的。門鈴暫存器可處於由雲端儲存系統301監視之任何記憶體位置。例如,門鈴暫存器可處於雲端儲存系統301之電腦記憶體323中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端計算系統303之電腦記憶體337中。命令緩衝區到達雲端計算系統303之電腦記憶體337中的通知致使在雲端儲存系統301上觸發中斷。
回應於該中斷,雲端儲存系統301藉由PCIe組構自雲端計算系統303之電腦記憶體337讀取命令緩衝區,且處理該命令緩衝區以自雲端儲存系統301可存取之資料儲存裝置獲得所請求之資料。雲端儲存系統301將所請求之資料寫入至雲端儲存系統301之電腦記憶體323中。然後,雲端儲存系統301通知雲端計算系統303:所請求之資料在雲端儲存系統301之電腦記憶體323中可用,及所請求之資料位於雲端儲存系統301之電腦記憶體323中的何處。在一些實施例中,所請求之資料在雲端儲存系統301之電腦記憶體323中可用的此通知係藉由雲端儲存系統301對門鈴暫存器進行寫入或向雲端計算系統303發送訊息而完成的。門鈴暫存器可處於由雲端計算系統303監視之任何記憶體位置。例如,門鈴暫存器可處於雲端計算系統303之電腦記憶體337中或PCIe交換機305中,或甚至藉由PCIe組構處於雲端儲存系統301之電腦記憶體323中。
回應於所請求之資料在雲端儲存系統301之電腦記憶體323中可用的通知,雲端計算系統303自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在一些實施例中,雲端計算系統303使用由雲端儲存系統301返回之記憶體位址以自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在一些實施例中,在雲端儲存系統301上之電腦記憶體323中之預先分配的固定記憶體位址專用於雲端計算系統303,且由雲端計算系統303知曉為可用於讀取所請求之資料之記憶體位址。在一些實施例中,雲端計算系統303上之儲存CPU 331藉由PCIe組構直接自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在一些實施例中,雲端計算系統303上之儲存CPU 331指示DMA引擎藉由PCIe組構自雲端儲存系統301上之電腦記憶體323讀取所請求之資料。在各種實施例中,DMA引擎可在雲端計算系統303內實施(例如,DMA控制器339),或在PCIe交換機305內實施,或在雲端計算系統303可經由PCIe組構存取之另一組件內實施。可使用DMA引擎以自雲端儲存系統301上之電腦記憶體323讀取所請求之資料,以幫助卸載雲端計算系統303之儲存CPU 331。
圖14示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統303之雲端儲存系統301。該方法包括用於具有雲端遊戲系統之操作1401,該雲端遊戲系統包括經由PCIe組構彼此連接之雲端儲存系統301及雲端計算系統303。雲端儲存系統301包括電腦記憶體323,且雲端計算系統303包括電腦記憶體337。PCIe組構包括連接至雲端儲存系統301之PCIe介面且連接至雲端計算系統303之PCIe介面的PCIe交換機305。該方法包括操作1403,其中雲端計算系統303操作以生成用於資料讀取操作之命令緩衝區。該方法亦包括操作1405,其中雲端計算系統303操作以將命令緩衝區寫入至雲端計算系統303之電腦記憶體337。該方法亦包括操作1407,其中雲端計算系統303操作以經由PCIe組構通知雲端儲存系統301命令緩衝區已經寫入至雲端計算系統303之電腦記憶體337。在一些實施例中,操作1407包括操作雲端計算系統303以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端儲存系統301監視。
該方法亦包括操作1409,其中雲端儲存系統301操作以經由PCIe組構自雲端計算系統303之電腦記憶體337讀取命令緩衝區。該方法包括操作1411,其中雲端儲存系統301操作以處理命令緩衝區,以便自雲端儲存系統301可存取之儲存裝置讀取所請求之資料,且將所請求之資料寫入在雲端儲存系統301之電腦記憶體323中。
該方法包括操作1413,其中雲端儲存系統301操作以經由PCIe組構通知雲端計算系統303所請求之資料在雲端儲存系統301之電腦記憶體323中。在一些實施例中,操作1413包括操作雲端儲存系統301以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,其中門鈴暫存器由雲端計算系統303監視。該方法包括操作1415,其中雲端計算系統303操作以經由PCIe組構自雲端儲存系統301之電腦記憶體323讀取所請求之資料。
在圖14之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305。在圖14之方法之一些實施例中,雲端儲存系統301包括IOMMU 381,且雲端儲存系統301之PCIe介面連接至IOMMU 381。在圖14之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端儲存系統301包括IOMMU 381,其中雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305,且其中雲端儲存系統301之PCIe介面連接至IOMMU 381。
圖15示出了根據一些實施例之用於使用經由PCIe組構暴露之門鈴暫存器來在雲端遊戲系統中之雲端儲存系統301與雲端計算系統303之間請求及傳送資料的方法。該方法包括用於具有雲端遊戲系統之操作1501,該雲端遊戲系統包括具有PCIe介面之雲端儲存系統301,其中雲端儲存系統301包括電腦記憶體323。雲端遊戲系統包括連接至雲端儲存系統301之PCIe介面之PCIe交換機305。雲端遊戲系統亦包括具有連接至PCIe交換機305之PCIe介面的雲端計算系統303。在一些實施例中,PCIe交換機305暴露一或多個門鈴暫存器。該方法包括用於操作雲端計算系統303以對經由PCIe交換機305暴露之門鈴暫存器進行寫入之操作1503。回應於雲端計算系統303對門鈴暫存器進行寫入,該方法繼續進行用於在雲端儲存系統301上觸發中斷之操作1505。該方法包括操作1507,其中操作雲端儲存系統301以處置中斷。該中斷指示雲端儲存系統301自雲端儲存系統301之電腦記憶體323中的指定位置讀取訊息,其中該訊息指示雲端儲存系統301自雲端儲存系統301可存取之儲存裝置讀取所請求之資料。
在一些實施例中,圖15之方法亦包括操作雲端儲存系統301以將所請求之資料寫入至雲端儲存系統301之電腦記憶體323中。在此等實施例中,該方法亦包括通知雲端計算系統303所請求之資料在雲端儲存系統301之電腦記憶體323中所儲存在的記憶體位址。在一些實施例中,通知雲端計算系統303記憶體位址包括對門鈴暫存器進行寫入。在一些實施例中,該方法亦包括操作雲端計算系統303以自雲端儲存系統301之電腦記憶體323讀取所請求之資料。
在一些實施例中,圖15之方法包括操作雲端儲存系統301以將所請求之資料寫入至雲端計算系統303之電腦記憶體337中。在一些實施例中,雲端計算系統303具有用戶端記憶體映射,該用戶端記憶體映射保存分配給雲端計算系統303之組件的記憶體位址。在此等實施例中,PCIe交換機305經組態以將保存在用戶端記憶體映射中之記憶體位址轉換為雲端儲存系統301之電腦記憶體323中的記憶體位址,使得對用戶端記憶體映射中之給定記憶體位址的存取由PCIe交換機305轉換為改為存取雲端儲存系統301之電腦記憶體323中的給定記憶體位址。
雲端計算系統303包括用以開啟其硬體之韌體。此韌體可具有自本地儲存裝置、經由網路或經由PCIe組構啟動之程式碼。在雲端計算系統303經由網路啟動之情況下,雲端計算系統303之韌體可發出動態主機組態協定(DHCP)請求,以請求網際網路協定(IP)位址及關於儲存伺服器(諸如雲端儲存系統301)之資訊。關於雲端儲存系統301之資訊可包括用於定位資料之IP位址及檔案系統路徑,但亦可包括PCIe資訊。PCIe資訊可包括記憶體位址、PCIe匯流排/裝置/功能資訊,或允許雲端計算系統303定位上面儲存了資料之雲端儲存系統301之其他資訊。在一些實施例中,支援雲端計算系統303之啟動的資訊諸如在工廠或藉由另一機制(例如UART連接)等等經預載入至雲端計算系統303之韌體中。在雲端計算系統303使用PCIe組構進行對啟動資訊之資料存取的情況下,資料存取可經由儲存CPU 331發生,用於儲存CPU 331之對應之資料存取程式碼為雲端計算系統303之韌體的一部分。而且,雲端儲存系統301可將雲端計算系統303所需之開機資料預載入至可經由PCIe組構存取之記憶體中,或者可按需要將開機資料載入至可經由PCIe組構存取之記憶體中。
當使用者開啟雲端遊戲應用程式時,作為遊戲開啟程序之一部分,雲端遊戲系統可執行DRM相關之檢查,以驗證使用者之遊戲許可為當前有效的,且根據需要獲得可選之解密密鑰以對遊戲資料進行解密。在驗證使用者之遊戲許可後,雲端遊戲系統操作以安裝遊戲資料,尤其係在遊戲資料以特殊遊戲包格式儲存時。在雲端遊戲使用情況中,安裝可觸發雲端儲存系統301上之操作。例如,若雲端儲存系統301在其一或多個本地儲存裝置(例如電腦記憶體323、NVMe SSD 371或其他本地儲存裝置,諸如HDD)上沒有遊戲之副本,則雲端儲存系統301可能需要將遊戲下載至其一或多個本地儲存裝置。一旦雲端儲存系統301已識別遊戲內容,雲端儲存系統301便可將遊戲內容之全部或一部分傳送至快速儲存裝置,例如,將遊戲內容自HDD傳送至電腦記憶體,或者將遊戲內容自HDD傳送至SSD再至電腦記憶體。由於許多使用者可能玩同一遊戲,因此當判定遊戲內容已經存在於雲端儲存系統301上之適當位置時,雲端儲存伺服器301可跳過遊戲之下載且將遊戲內容傳送至快速儲存裝置。例如,在一些實施例中,雲端儲存系統301可使用資料庫來跟蹤其當前已經載入之遊戲的清單及對應之遊戲資料經載入至之記憶體中的位置。在一些實施例中,在雲端儲存伺服器301外部之雲端服務模組可能已經確保給定使用者經分配給雲端儲存伺服器301,其中雲端儲存伺服器301已經載入了給定使用者所請求之遊戲內容。為了促進此實施例,雲端儲存伺服器301可向雲端服務模組提供度量及/或其他元資料。應理解且瞭解,自使用者體驗之角度來看,自已經在本地儲存了遊戲內容之雲端儲存系統301載入遊戲內容可能為最佳的,此乃因減少了使用者之遊戲載入時間。
當雲端計算系統303將讀取命令緩衝區發送至雲端儲存系統301時,雲端儲存系統301具有關於如何獲得所請求之資料的選項。在一些情況下,雲端儲存系統301在安裝操作期間可能已將所有請求之資料預載入至電腦記憶體323中。若為此情況,則雲端儲存系統301僅需要將命令緩衝區所請求之資料的偏移量及長度轉換為雲端儲存系統301中之電腦記憶體323的偏移量及長度。在一些情況下,命令緩衝區中之偏移量可為相對於遊戲包之儲存位置。若如此,則雲端儲存系統301需要將此偏移量添加至遊戲包之開始之儲存位置。在一些情況下,遊戲包可跨越多個記憶體區進行儲存,諸如當沒有足夠之連續記憶體空間用於完整包時。在此等情況下,雲端儲存系統301需要將偏移量添加至記憶體之含有請求檔案的部分之位址。若涉及多個記憶體區,則雲端儲存系統301可返回多個記憶體區域。當在雲端儲存系統301中實施IOMMU 381時,假設雲端計算系統303負責自雲端儲存系統301讀取所請求之資料,則多個記憶體區域之細節將對雲端計算系統303隱藏。
在一些情況下,雲端儲存系統301可能沒有在遊戲之安裝期間將所有遊戲資料都載入至本地儲存裝置中。例如,雲端儲存系統301可能僅將檔案系統表及其他資料結構載入至雲端儲存系統301之電腦記憶體323中。當雲端儲存系統301接收到請求當前不在電腦記憶體323中之資料的命令緩衝區時,雲端儲存系統301操作以基於命令緩衝區擷取所請求之資料。例如,在區塊儲存設定中,一種方法為雲端儲存系統301基於偏移量參數及長度參數擷取所請求之資料,然後在電腦記憶體323中對所擷取之資料進行快取以供未來存取。在電腦記憶體323中對資料進行快取繞過了自諸如HDD或SSD之較慢之儲存裝置擷取資料的需要,且提高了雲端儲存系統301之效能。在一些情況下,可能難以預測遊戲應用程式將需要存取哪些其他資料。在此等情況下,快取未中可能頻繁發生。因此,在此等情況下,在剛剛存取之記憶體區塊之後儲存的資料亦以預測性方式在電腦記憶體323中進行快取,但遊戲應用程式可能不使用預測性快取之資料。
在一些實施例中,遊戲應用程式具有帶有諸如先前關於圖10所論述之檔案系統表的專用遊戲檔案系統。在此情況下,檔案系統相當「平坦」,且可視為鍵值儲存,其中每個檔案由檔案標識符標識。在此情況下,雲端儲存系統301具有關於輸入/輸出請求僅資料位置之更多資訊。更具體地,在此情況下,雲端儲存系統301知道什麼資料屬於給定檔案。因此,替代雲端儲存系統301操作以基於記憶體區塊執行快取,在此情況下,雲端儲存系統301可基於檔案級別來對資料執行更智慧之快取。例如,雲端儲存系統301可基於對彼檔案之資料請求來從頭至尾預先快取完整檔案。而且,雲端儲存系統301可在適當時預先快取檔案之部分。在鍵值方法中,由雲端儲存系統301實施之快取層可操作以維護一組快取元資料,該快取元資料包括一或多個計數器、時間戳記及關於快取至電腦記憶體323中之資料的其他資訊,諸如存取每個資料檔案之頻繁程度或最近時間。在一些實施例中,由雲端儲存系統301實施之快取層可使用快取元資料以自電腦記憶體323中驅出在指定時間量內未經存取或未經足夠頻繁地存取之資料。
在一些情況下,資料存取可針對使用者特定資料,使用者特定資料可位於HDD上,該HDD可由雲端儲存系統301在本地存取或經由雲端儲存系統301可存取之網路(網際網路)存取。POSIX API可經由命令緩衝區進行映射,該等命令緩衝區觸發對此使用者特定資料之資料存取。為了提高雲端遊戲效能,可操作雲端儲存系統301以自特定資料儲存裝置預取該使用者特定資料,且將使用者特定資料之任何修改版本保存回至特定資料儲存裝置。對使用者特定資料之預取可能需要與雲端計算系統303之硬體、軟體及可能多個伺服器進行深度互動。
上面關於圖11至圖15論述之實施例及方法涉及用戶端/伺服器關係,其中命令緩衝區指定自雲端計算系統303(用戶端)傳達至雲端儲存系統301(伺服器)之輸入/輸出資料請求。在此等實施例中,雲端儲存系統301上之CPU 365以某種能力參與命令緩衝區之處理,且可能參與雲端儲存系統301與雲端計算系統303之間的所請求之資料的交換。
在一些實施例中,可由雲端儲存系統301在繞過雲端儲存系統301之CPU 365的情況下執行命令緩衝區之處理及所請求之資料的交換。例如,在一些實施例中,雲端儲存系統301之CPU 365可包括一或多個CPU內核、一或多個記憶體控制器、一或多個PCIe根複合體及其他組件。雲端儲存系統301之CPU 365之卸載係指繞過CPU 365之一或多個CPU內核來進行任何軟體級處理。當CPU 365經卸載時,仍可利用CPU 365內之其他非CPU內核組件(諸如記憶體控制器、DMA引擎或其他組件)來實現命令緩衝區之處理及所請求之資料的交換。在處理命令緩衝區及交換所請求之資料時繞過CPU 365的一個益處係將避免中斷CPU 365內之CPU內核,且因此提高雲端儲存系統301之效能。應理解且瞭解,由CPU 365內之一或多個CPU內核進行之處理增加了額外負擔且導致更多潛時。CPU 365內之一或多個CPU內核亦為昂貴的且消耗功率,因此存在與CPU 365之卸載相關聯的成本節省及能量節省。
在一些實施例中,可藉由直接自雲端儲存系統301獲得雲端計算系統303 DMA資料來卸載雲端儲存系統301之CPU 365。在此等實施例中,雲端計算系統303使用檔案標識符表來定位在雲端儲存系統301之本地儲存裝置上的資料。在一些實施例中,在遊戲應用程式之安裝操作期間,雲端儲存系統301生成自訂檔案標識符表,該自訂檔案標識符表包括在雲端儲存系統301之電腦記憶體323中的用於所安裝之遊戲應用程式之遊戲包中列出的資料之記憶體位址。雲端儲存伺服器301使遊戲應用程式之檔案標識符表對雲端計算系統303可用。雲端計算系統303然後可使用檔案標識符表來判定特定所需資料所位於之在雲端儲存系統301之電腦記憶體323內的記憶體位址,且執行對應之DMA操作以直接自雲端儲存系統301之電腦記憶體323讀取所需資料而不必中斷雲端儲存系統301之CPU 365的一或多個CPU內核。而且,在此方法中,雲端計算系統303不需要將輸入/輸出命令緩衝區傳送至雲端儲存系統301。在雲端計算系統303上使用檔案標識符表及DMA操作之此方法特別適合於存取儲存在雲端儲存系統301中之唯讀資料(諸如遊戲包,及其他類型之資料)。而且,在雲端計算系統303上使用檔案標識符表及DMA操作之此方法很可能實現高水平之資料存取效能,此乃因它不需要雲端儲存伺服器301對每個命令緩衝區進行處理。
圖16示出了根據一些實施例之用於在雲端遊戲系統中進行資料傳送之方法。該方法包括用於具有雲端遊戲系統之操作1601,該雲端遊戲系統包括經由PCIe組構彼此連接之雲端儲存系統301及雲端計算系統303。雲端遊戲系統包括連接至雲端儲存系統301之PCIe介面之PCIe交換機305。雲端遊戲系統亦包括連接至雲端計算系統303之PCIe介面的PCIe交換機305。雲端儲存系統301包括電腦記憶體323。而且,雲端計算系統303包括電腦記憶體337。該方法包括操作1603,其中雲端儲存系統301操作以生成檔案標識表,該檔案標識表指定雲端儲存系統301之電腦記憶體323中之儲存不同資料檔案的記憶體位址。在一些實施例中,操作1603在遊戲包之安裝期間完成,其中不同資料檔案為遊戲包之資料檔案。
該方法亦包括用於將檔案標識表儲存在雲端計算系統303之電腦記憶體337中的操作1605。在一些實施例中,操作1605包括操作雲端儲存系統301以經由PCIe組構通知雲端計算系統303:檔案標識表在雲端儲存系統301之電腦記憶體323中可用,及檔案標識表儲存在雲端儲存系統301之電腦記憶體323中的何處。而且,操作1605可包括操作雲端計算系統303以經由PCIe組構自雲端儲存系統301之電腦記憶體323讀取檔案標識表。在一些實施例中,操作雲端儲存系統301以經由PCIe組構通知雲端計算系統303檔案標識表在雲端儲存系統301之電腦記憶體323中包括操作雲端儲存系統301以對經由PCIe交換機305暴露之門鈴暫存器進行寫入,雲端儲存系統301及雲端計算系統303兩者都連接至PCIe交換機305。該方法亦包括操作1607,其中雲端計算系統303操作以使用檔案標識表來判定雲端儲存系統301之電腦記憶體323中之儲存所需資料檔案的記憶體位址。該方法亦包括操作1609,其中雲端計算系統303操作以經由PCIe組構自雲端儲存系統301之電腦記憶體323讀取所需資料檔案。
在圖16之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305。在圖16之方法之一些實施例中,雲端儲存系統301包括IOMMU 381,且雲端儲存系統301之PCIe介面連接至IOMMU 381。在圖16之方法之一些實施例中,PCIe交換機305包括NTB 321,且雲端儲存系統301包括IOMMU 381,其中雲端計算系統303之PCIe介面經由NTB 321連接至PCIe交換機305,且其中雲端儲存系統301之PCIe介面連接至IOMMU 381。
儘管本文中以具體順序描述了一些方法操作,但應理解,可在操作之間執行其他內務處理操作,或者可調整操作,使得它們在略微不同之時間發生,或者可將操作分佈在允許處理操作以與該處理相關聯之各種間隔發生的系統中。本發明之實施例可藉由各種電腦系統組態來實踐,該電腦系統組態包括手持式裝置、微處理器系統、基於微處理器之或可程式化之消費電子裝置、小型電腦、大型電腦等。本發明亦可在分布式計算環境中實踐,其中任務由經由有線或無線網路鏈接之遠端處理裝置執行。
考量到以上實施例,應理解,本發明可採用涉及儲存在電腦系統中之資料的各種電腦實施之操作。此等操作為需要對實體量進行實體操縱之操作。本文描述之形成本發明之一部分的任何操作為有用之機器操作。本發明亦關於用於執行此等操作之裝置或設備。該設備可出於所需目的而專門構建而成,或該設備可為由儲存在電腦中之電腦程式選擇性地啟動或組態之通用電腦。具體地,各種通用機器可與根據本文之教導編寫之電腦程式一起使用,或者構建更專門之設備來執行所需操作可能更方便。
與本發明一起使用之各種組件可體現為電腦可讀媒體上之電腦可讀程式碼。電腦可讀媒體為可儲存資料之任何資料儲存裝置,該資料此後可由電腦系統讀取。電腦可讀媒體之實例包括硬碟驅動器、網路附接儲存裝置(NAS)、唯讀記憶體、隨機存取記憶體、CD-ROM、CD-R、CD-RW、磁帶及其他光學及非光學資料儲存裝置。電腦可讀媒體可包括分佈在網路耦合之電腦系統上之電腦可讀有形媒體,使得以分佈式方式儲存及執行電腦可讀程式碼。
儘管為了清楚理解之目的而略微詳細地描述了前述發明,但很顯然,可在所附申請專利範圍之範疇內實踐某些變化及修改。因此,本實施例應視為說明性的而非限制性的,且本發明不限於本文給出之細節,而是可在所描述之實施例之範疇及等效範疇內進行修改。
101:中央處理單元(CPU)
103:電腦記憶體
105:根複合體
107:快捷周邊組件互連(PCIe)端點
109:PCIe至PCI/PCI-X橋
111:PCI/PCI-X階層
113:PCIe交換機
115:傳統端點
117:PCIe端點
119:上游PCIe埠
121:虛擬PCI-PCI橋
123(1)-123(n):虛擬PCI-PCI橋
125(1)-125(n):下游PCIe埠
127:線
129:PCIe線道
131:低電壓差動驅動之發射導體對/發射導體對
133:低電壓差動驅動之接收導體對/接收導體對
201:第一主機計算裝置
203:第二主機計算裝置
205:PCIe交換機
207:PCIe鏈路
209:PCIe鏈路
301:雲端儲存系統/雲端伺服器系統/雲端儲存伺服器
303:雲端計算系統/用戶端計算系統
303(1):雲端計算系統
303(D):雲端計算系統
303(F):雲端計算系統
303(Y):雲端計算系統
305:PCIe交換機
305(1):PCIe交換機
305(E):PCIe交換機
305A:PCIe交換機
305B:PCIe交換機
305C:PCIe交換機
307:PCIe鏈路
307(1):PCIe鏈路
307(E):PCIe鏈路
309:PCIe鏈路
309(1):PCIe鏈路
309(D):PCIe鏈路
309(F):PCIe鏈路
311:根複合體
313:PCIe埠
313(1):PCIe埠
313(D):PCIe埠
313(F):PCIe埠
315:PCIe埠
315(1):PCIe埠
315(D):PCIe埠
315(F):PCIe埠
315A:PCIe埠
315B:PCIe埠
316:PCIe埠
316(1):PCIe埠
316(E):PCIe埠
317:根複合體
319:PCIe埠
319(1):PCIe埠
319(E):PCIe埠
319A:PCIe埠
319B:PCIe埠
319C:PCIe埠
321:非透明橋(NTB)
323:電腦記憶體
325:CPU
327:內部資料匯流排
329:圖形處理單元(GPU)
331:儲存CPU
333:解密/加密引擎
335:解壓縮/壓縮引擎
337:電腦記憶體
339:直接記憶體存取(DMA)控制器
341:快捷非揮發性記憶體固態驅動器(NVMe SSD)
343:PCIe鏈路
345:PCIe埠
347:序列先進技術附接(SATA)控制器
349:PCIe鏈路
351:PCIe埠
353:硬碟驅動器(HDD)/SATA-HDD
355:支援PCIe之組件裝置
357:PCIe埠
359:PCIe鏈路
361:線
363:線
365:CPU
367:內部資料匯流排
369:GPU
371:NVMe SSD
373:網路介面卡(NIC)
375:門鈴暫存器
377:電腦記憶體323之指定部分
379:箭頭
381:輸入/輸出記憶體管理單元(IOMMU)
383:IOMMU
701:PCIe鏈路
703:PCIe鏈路
801:計算抽屜
803:電力輸送系統
805:PCIe介面
807(1):PCIe鏈路
807(Y):PCIe鏈路
809:PCIe鏈路
811:額外組件
813:機架管理介面
815:外部PCIe鏈路
901:機架
903A:計算陣列
903B:計算陣列
903C:計算陣列
905:機架交換機之頂部
907:背板
1101:操作
1103:操作
1105:操作
1107:操作
1109:操作
1111:操作
1113:操作
1115:操作
1201:操作
1203:操作
1205:操作
1207:操作
1209:操作
1211:操作
1213:操作
1215:操作
1301:操作
1303:操作
1305:操作
1307:操作
1309:操作
1311:操作
1313:操作
1315:操作
1401:操作
1403:操作
1405:操作
1407:操作
1409:操作
1411:操作
1413:操作
1415:操作
1501:操作
1503:操作
1505:操作
1507:操作
1601:操作
1603:操作
1605:操作
1607:操作
1609:操作
[圖1A]示出了PCIe組構之概圖。
[圖1B]示出了PCIe交換機之實例組態。
[圖1C]示出了包括一個PCIe線道(lane)之PCIe鏈路之圖。
[圖2A]示出了根據本發明之一些實施例的關於可如何使用PCIe組構來連接兩個不同之主機計算裝置之圖。
[圖2B]示出了根據本發明之一些實施例的由圖2A之處於主機裝置至主機裝置連接配置之PCIe交換機執行的記憶體映射功能之實例圖。
[圖3A]示出了根據本發明之一些實施例的關於可如何使用PCIe組構來連接雲端儲存系統與雲端計算系統之圖。
[圖3B]示出了根據一些實施例之雲端儲存系統及雲端計算系統之一些內部組件的實例圖。
[圖4]示出了根據本發明之一些實施例的由PCIe交換機中之NTB及雲端儲存系統中之IOMMU執行的記憶體映射功能之實例圖。
[圖5]示出了根據一些實施例之雲端遊戲組態,其中雲端儲存系統經由PCIe交換機連接至某一數量之(D個)雲端計算系統,其中D大於1。
[圖6]示出了根據一些實施例之雲端遊戲組態,其中雲端儲存系統經由各別PCIe鏈路連接至某一數量之(E個)PCIe交換機,其中E大於1。
[圖7]示出了根據一些實施例之雲端遊戲組態,其中雲端儲存系統經由PCIe交換機之扇出組態連接至多個雲端計算系統。
[圖8]示出了根據一些實施例之實例計算抽屜(compute sled)。
[圖9]示出了根據一些實施例之可在雲端遊戲中心內實施的機架之實例圖。
[圖10]示出了根據一些實施例之將檔案名稱映射至檔案標識符之映射表的實例。
[圖11]示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統之雲端儲存系統。
[圖12]示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統之雲端儲存系統。
[圖13]示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統之雲端儲存系統。
[圖14]示出了根據一些實施例之用於在雲端遊戲系統中請求及傳送資料之方法,該雲端遊戲系統包括藉由PCIe組構連接至雲端計算系統之雲端儲存系統。
[圖15]示出了根據一些實施例之用於使用經由PCIe組構暴露之門鈴暫存器來在雲端遊戲系統中之雲端儲存系統與雲端計算系統之間請求及傳送資料的方法。
[圖16]示出了根據一些實施例之用於在雲端遊戲系統中進行資料傳送之方法。
301:雲端儲存系統/雲端伺服器系統/雲端儲存伺服器
303:雲端計算系統/用戶端計算系統
305:PCIe交換機
307:PCIe鏈路
309:PCIe鏈路
311:根複合體
313:PCIe埠
315:PCIe埠
316:PCIe埠
317:根複合體
319:PCIe埠
321:非透明橋(NTB)
323:電腦記憶體
325:CPU
327:內部資料匯流排
329:圖形處理單元(GPU)
331:儲存CPU
333:解密/加密引擎
335:解壓縮/壓縮引擎
337:電腦記憶體
339:直接記憶體存取(DMA)控制器
341:快捷非揮發性記憶體固態驅動器(NVMe SSD)
343:PCIe鏈路
345:PCIe埠
347:序列先進技術附接(SATA)控制器
349:PCIe鏈路
351:PCIe埠
353:硬碟驅動器(HDD)/SATA-HDD
355:支援PCIe之組件裝置
357:PCIe埠
359:PCIe鏈路
361:線
363:線
365:CPU
367:內部資料匯流排
369:GPU
371:NVMe SSD
373:網路介面卡(NIC)
375:門鈴暫存器
377:電腦記憶體323之指定部分
379:箭頭
381:輸入/輸出記憶體管理單元(IOMMU)
383:IOMMU
Claims (89)
- 一種雲端遊戲系統,該雲端遊戲系統包括: 一雲端儲存系統,該雲端儲存系統具有一快捷周邊組件互連(PCIe)介面,該雲端儲存系統包括一電腦記憶體; 一PCIe交換機,該PCIe交換機連接至該雲端儲存系統之該PCIe介面;及 一雲端計算系統,該雲端計算系統具有連接至該PCIe交換機之一PCIe介面,該雲端計算系統具有保存分配給該雲端計算系統之組件之記憶體位址的一用戶端記憶體映射,該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中之記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 如請求項1之雲端遊戲系統,其中該雲端儲存系統及該雲端計算系統定位在一機架中。
- 如請求項2之雲端遊戲系統,其中該雲端計算系統之該PCIe介面連接至該機架之一背板,且其中該PCIe交換機安置在該機架之該背板內,且其中該機架之該背板經由一電纜連接至該雲端儲存系統。
- 如請求項1之雲端遊戲系統,其中該雲端計算系統為複數個雲端計算系統中之一第一雲端計算系統,該複數個雲端計算系統中之每一者具有連接至該PCIe交換機之一各別PCIe介面。
- 如請求項4之雲端遊戲系統,其中該複數個雲端計算系統中之每一者為具有一各別用戶端記憶體映射之一各別雲端計算系統,該各別用戶端記憶體映射保存分配給該各別雲端計算系統之組件之記憶體位址,該PCIe交換機經組態以將保存在該各別用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該各別用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 如請求項5之雲端遊戲系統,其中該雲端儲存系統之該PCIe介面藉由某一數量之(N個)線道連接至該PCIe交換機,且其中該複數個雲端計算系統中之每一者之該各別PCIe介面藉由某一數量之(M個)線道連接至該PCIe交換機,其中每個線道具有用於藉由差動發信接收資料之一第一對電信號導體及用於藉由差動發信發射資料之一第二對電信號導體。
- 如請求項6之雲端遊戲系統,其中線道之該數量(N)等於線道之該數量(M)乘以該複數個雲端計算系統之一數量。
- 如請求項6之雲端遊戲系統,其中線道之該數量(N)小於線道之該數量(M)乘以該複數個雲端計算系統之一數量。
- 如請求項4之雲端遊戲系統,其中該雲端計算系統為在一計算抽屜上實施之複數個雲端計算系統中之一第一雲端計算系統,該計算抽屜包括一PCIe介面,該複數個雲端計算系統中之每一者具有連接至該計算抽屜之該PCIe介面之一各別PCIe介面。
- 如請求項9之雲端遊戲系統,其中該計算抽屜及該雲端儲存系統安裝在一機架中,其中該計算抽屜之該PCIe介面連接至該機架之一背板,且其中該PCIe交換機安置在該機架之該背板內,且其中該機架之該背板經由一電纜連接至該雲端儲存系統。
- 如請求項10之雲端遊戲系統,其中該計算抽屜為安裝在該機架中之複數個計算抽屜中之一第一計算抽屜,其中該複數個計算抽屜中之每一者具有一各別PCIe介面,其中該複數個計算抽屜之每個PCIe介面連接至該機架之該背板。
- 如請求項1之雲端遊戲系統,其中該PCIe交換機為複數個PCIe交換機中之一第一PCIe交換機,該複數個PCIe交換機中之每一者連接至該雲端儲存系統之該PCIe介面。
- 如請求項12之雲端遊戲系統,其中該等PCIe交換機中之每一者為一各別PCIe交換機,該各別PCIe交換機具有連接至該各別PCIe交換機之至少一個雲端計算系統,該至少一個雲端計算系統中之每一者為具有一各別用戶端記憶體映射之一各別雲端計算系統,該各別用戶端記憶體映射保存分配給該各別雲端計算系統之組件之記憶體位址,該各別PCIe交換機經組態以將保存在該各別用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該各別用戶端記憶體映射中之一給定記憶體位址的存取由該各別PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 如請求項1之雲端遊戲系統,其中該PCIe交換機包括一PCIe非透明橋(NTB)且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,或者 其中該雲端儲存系統包括一輸入/輸出記憶體管理單元(IOMMU)且該雲端儲存系統之該PCIe介面連接至該IOMMU,或者 其中該PCIe交換機包括該PCIe NTB且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,且該雲端儲存系統包括該IOMMU且該雲端儲存系統之該PCIe介面連接至該IOMMU。
- 如請求項1之雲端遊戲系統,該雲端遊戲系統進一步包括: 至少一個額外組件,該至少一個額外組件具有連接至該PCIe交換機之一PCIe介面,該至少一個額外組件為一圖形處理單元(GPU)、一網路配接器、一快捷非揮發性記憶體(NVMe)裝置、一通用異步接收器-發射器(UART)控制器、一感測器裝置及/或一通用輸入/輸出(GPIO)裝置中之一或多者,該PCIe交換機經組態以將該至少一個額外組件分配給該雲端儲存系統之該電腦記憶體中的一記憶體位址範圍。
- 如請求項1之雲端遊戲系統,其中該PCIe交換機暴露一門鈴暫存器,其中藉由該雲端計算系統對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷,此又致使該雲端儲存系統處置該中斷,該中斷指示該雲端儲存系統自該雲端儲存系統之該電腦記憶體中之一指定位置讀取一訊息,該訊息指示該雲端儲存系統執行一指定動作。
- 如請求項16之雲端遊戲系統,其中該指定動作為自該雲端儲存系統可存取之一儲存裝置讀取一特定量之資料及將該特定量之資料寫入至該雲端儲存系統之該電腦記憶體中,且通知該雲端計算系統該特定量之資料在該雲端儲存系統之該電腦記憶體中所儲存在的一記憶體位址。
- 一種雲端遊戲系統,該雲端遊戲系統包括: 一雲端儲存系統,該雲端儲存系統具有一快捷周邊組件互連(PCIe)介面,該雲端儲存系統包括電腦記憶體; 一第一PCIe交換機,該第一PCIe交換機連接至該雲端儲存系統之該PCIe介面; 一第二PCIe交換機,該第二PCIe交換機連接至該第一PCIe交換機; 一第三PCIe交換機,該第三PCIe交換機連接至該第一PCIe交換機; 一第一雲端計算系統,該第一雲端計算系統具有連接至該第二PCIe交換機之一PCIe介面,該第一雲端計算系統具有保存分配給該第一雲端計算系統之組件之記憶體位址的一第一用戶端記憶體映射,該第一PCIe交換機及該第二PCIe交換機中之一者或兩者經組態以將保存在該第一用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該第一用戶端記憶體映射中之一給定記憶體位址的存取經轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址;及 一第二雲端計算系統,該第二雲端計算系統具有連接至該第三PCIe交換機之一PCIe介面,該第二雲端計算系統具有保存分配給該第二雲端計算系統之組件之記憶體位址的一第二用戶端記憶體映射,該第一PCIe交換機及該第三PCIe交換機中之一者或兩者經組態以將保存在該第二用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該第二用戶端記憶體映射中之一給定記憶體位址的存取經轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 如請求項18之雲端遊戲系統,其中該第一雲端計算系統為第一複數個雲端計算系統中之一者,該第一複數個雲端計算系統中之每一者具有連接至該第二PCIe交換機之一各別PCIe介面,且 其中該第二雲端計算系統為第二複數個雲端計算系統中之一者,該第二複數個雲端計算系統中之每一者具有連接至該第三PCIe交換機之一各別PCIe介面。
- 如請求項18之雲端遊戲系統,其中該第一雲端計算系統為在一第一計算抽屜上實施之第一複數個雲端計算系統中之一者,該第一計算抽屜包括一PCIe介面,該第一複數個雲端計算系統中之每一者具有連接至該第一計算抽屜之該PCIe介面之一各別PCIe介面,且 其中該第二雲端計算系統為在一第二計算抽屜上實施之第二複數個雲端計算系統中之一者,該第二計算抽屜包括一PCIe介面,該第二複數個雲端計算系統中之每一者具有連接至該第二計算抽屜之該PCIe介面的一各別PCIe介面。
- 如請求項20之雲端遊戲系統,其中該第一計算抽屜及該第二計算抽屜兩者都安裝在一同一機架中,或其中該第一計算抽屜安裝在一第一機架中且該第二計算抽屜安裝在一第二機架中。
- 一種用於在一雲端遊戲系統中請求資料之方法,該方法包括: 具有一雲端遊戲系統,該雲端遊戲系統包括具有一快捷周邊組件互連(PCIe)介面之一雲端儲存系統,該雲端儲存系統包括一電腦記憶體,該雲端遊戲系統包括連接至該雲端儲存系統之該PCIe介面之一PCIe交換機,該雲端遊戲系統包括具有連接至該PCIe交換機之一PCIe介面之一雲端計算系統,該雲端計算系統包括一電腦記憶體,該PCIe交換機暴露由該雲端儲存系統監視之一門鈴暫存器; 操作該雲端計算系統以對該門鈴暫存器進行寫入,其中對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷;及 操作該雲端儲存系統以處置該中斷,該中斷指示該雲端儲存系統自一指定之電腦記憶體位置讀取一訊息,該訊息指示該雲端儲存系統自該雲端儲存系統可存取之一儲存裝置讀取所請求之資料。
- 如請求項22之方法,該方法進一步包括: 操作該雲端儲存系統以將該所請求之資料寫入至該雲端儲存系統之該電腦記憶體中;及 通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中所儲存在的一記憶體位址。
- 如請求項23之方法,其中通知該雲端計算系統該記憶體位址包括對由該雲端計算系統監視之一門鈴暫存器進行寫入。
- 如請求項23之方法,該方法進一步包括: 操作該雲端計算系統以自該雲端儲存系統之該電腦記憶體讀取該所請求之資料。
- 如請求項22之方法,該方法進一步包括: 操作該雲端儲存系統以將該所請求之資料寫入至該雲端計算系統之一電腦記憶體中;及 通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中所儲存在的一記憶體位址。
- 如請求項26之方法,其中通知該雲端計算系統該記憶體位址包括對由該雲端計算系統監視之一門鈴暫存器進行寫入。
- 如請求項26之方法,該方法進一步包括: 操作該雲端計算系統以自該雲端計算系統之該電腦記憶體讀取該所請求之資料。
- 如請求項22之方法,其中該雲端計算系統具有保存分配給該雲端計算系統之組件之記憶體位址的一用戶端記憶體映射,該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 如請求項22之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項22之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 一種用於在一雲端遊戲系統中進行資料傳送之方法,該方法包括: 具有一雲端遊戲系統,該雲端遊戲系統包括經由一快捷周邊組件互連(PCIe)組構彼此連接之一雲端儲存系統及一雲端計算系統,該雲端儲存系統包括一電腦記憶體,該雲端計算系統包括一電腦記憶體; 操作該雲端儲存系統以生成一檔案標識表,該檔案標識表指定該雲端儲存系統之該電腦記憶體中之儲存不同資料檔案的記憶體位址; 操作該雲端計算系統以使用該檔案標識表來判定該雲端儲存系統之該電腦記憶體中之儲存一所需資料檔案的一記憶體位址;及 操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該所需資料檔案。
- 如請求項32之方法,其中操作該雲端儲存系統以生成該檔案標識表係在一遊戲包之安裝期間完成的,其中該等不同資料檔案為該遊戲包之資料檔案。
- 如請求項32之方法,該方法進一步包括: 操作該雲端儲存系統以將該檔案標識表儲存在該雲端儲存系統之該電腦記憶體中。
- 如請求項34之方法,該方法進一步包括: 操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該檔案標識表在該雲端儲存系統之該電腦記憶體中的一位置,及操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該檔案標識表。
- 如請求項35之方法,其中操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該檔案標識表在該雲端儲存系統之該電腦記憶體中的該位置包括操作該雲端儲存系統以對經由一PCIe交換機暴露之一門鈴暫存器進行寫入,該雲端儲存系統及該雲端計算系統兩者都連接至該PCIe交換機。
- 如請求項32之方法,該方法進一步包括: 操作該雲端儲存系統以經由該PCIe組構將該檔案標識表儲存在該雲端計算系統之該電腦記憶體中。
- 如請求項37之方法,該方法進一步包括: 操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該檔案標識表在該雲端計算系統之該電腦記憶體中的一位置,及操作該雲端計算系統以自該雲端計算系統之該電腦記憶體讀取該檔案標識表。
- 如請求項38之方法,其中操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該檔案標識表在該雲端計算系統之該電腦記憶體中的該位置包括操作該雲端儲存系統以對經由一PCIe交換機暴露之一門鈴暫存器進行寫入,該雲端儲存系統及該雲端計算系統兩者都連接至該PCIe交換機。
- 如請求項32之方法,其中該PCIe組構包括連接至該雲端儲存系統之一PCIe介面且連接至該雲端計算系統之一PCIe介面的一PCIe交換機。
- 如請求項40之方法,其中該PCIe交換機包括一PCIe非透明橋(NTB)且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,或者 其中該雲端儲存系統包括一輸入/輸出記憶體管理單元(IOMMU)且該雲端儲存系統之該PCIe介面連接至該IOMMU,或者 其中該PCIe交換機包括該PCIe NTB且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,且該雲端儲存系統包括該IOMMU且該雲端儲存系統之該PCIe介面連接至該IOMMU。
- 一種用於在一雲端遊戲系統中請求及傳送資料之方法,該方法包括: 具有一雲端遊戲系統,該雲端遊戲系統包括經由一快捷周邊組件互連(PCIe)組構彼此連接之一雲端儲存系統及一雲端計算系統,該雲端儲存系統包括一電腦記憶體,該雲端計算系統包括一電腦記憶體; 操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區; 操作該雲端計算系統以經由該PCIe組構將該命令緩衝區寫入至該雲端儲存系統之該電腦記憶體; 操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端儲存系統之該電腦記憶體; 操作該雲端儲存系統以自該雲端儲存系統之該電腦記憶體讀取該命令緩衝區; 操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料,且將該所請求之資料寫入在該雲端儲存系統之該電腦記憶體中; 操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中;及 操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該所請求之資料。
- 如請求項42之方法,其中該PCIe組構包括連接至該雲端儲存系統之一PCIe介面且連接至該雲端計算系統之一PCIe介面的一PCIe交換機。
- 如請求項43之方法,其中操作該雲端計算系統以通知該雲端儲存系統該命令緩衝區已經寫入至該雲端儲存系統之該電腦記憶體包括操作該雲端計算系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項44之方法,其中對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷,此又致使該雲端儲存系統處置該中斷,該中斷指示該雲端儲存系統自一指定之電腦記憶體位置讀取一訊息,該訊息指示該雲端儲存系統自該雲端儲存系統之該電腦記憶體讀取該命令緩衝區。
- 如請求項45之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項45之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項43之方法,其中操作該雲端儲存系統以通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中包括操作該雲端儲存系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項48之方法,其中對該門鈴暫存器進行寫入致使在該雲端計算系統上觸發一中斷,此又致使該雲端計算系統處置該中斷,該中斷指示該雲端計算系統自一指定之電腦記憶體位置讀取一訊息,該訊息通知該雲端計算系統該所請求之資料儲存在該雲端儲存系統之該電腦記憶體中的何處。
- 如請求項49之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項49之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項43之方法,其中該PCIe交換機包括一PCIe非透明橋(NTB)且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,或者 其中該雲端儲存系統包括一輸入/輸出記憶體管理單元(IOMMU)且該雲端儲存系統之該PCIe介面連接至該IOMMU,或者 其中該PCIe交換機包括該PCIe NTB且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,且該雲端儲存系統包括該IOMMU且該雲端儲存系統之該PCIe介面連接至該IOMMU。
- 如請求項43之方法,其中該雲端計算系統具有保存分配給該雲端計算系統之組件之記憶體位址的一用戶端記憶體映射,該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 一種用於在一雲端遊戲系統中請求及傳送資料之方法,該方法包括: 具有一雲端遊戲系統,該雲端遊戲系統包括經由一快捷周邊組件互連(PCIe)組構彼此連接之一雲端儲存系統及一雲端計算系統,該雲端儲存系統包括一電腦記憶體,該雲端計算系統包括一電腦記憶體; 操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區; 操作該雲端計算系統以經由該PCIe組構將該命令緩衝區寫入至該雲端儲存系統之該電腦記憶體; 操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端儲存系統之該電腦記憶體; 操作該雲端儲存系統以自該雲端儲存系統之該電腦記憶體讀取該命令緩衝區; 操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料; 操作該雲端儲存系統以經由該PCIe組構將該所請求之資料寫入至該雲端計算系統之該電腦記憶體; 操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中;及 操作該雲端計算系統以自該雲端計算系統之該電腦記憶體讀取該所請求之資料。
- 如請求項54之方法,其中該PCIe組構包括連接至該雲端儲存系統之一PCIe介面且連接至該雲端計算系統之一PCIe介面的一PCIe交換機。
- 如請求項55之方法,其中操作該雲端計算系統以通知該雲端儲存系統該命令緩衝區已經寫入至該雲端儲存系統之該電腦記憶體包括操作該雲端計算系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項56之方法,其中對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷,此又致使該雲端儲存系統處置該中斷,該中斷指示該雲端儲存系統自一指定之電腦記憶體位置讀取一訊息,該訊息指示該雲端儲存系統自該雲端儲存系統之該電腦記憶體讀取該命令緩衝區。
- 如請求項57之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項57之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項55之方法,其中操作該雲端儲存系統以通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中包括操作該雲端儲存系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項60之方法,其中對該門鈴暫存器進行寫入致使在該雲端計算系統上觸發一中斷,此又致使該雲端計算系統處置該中斷,該中斷指示該雲端計算系統自一指定之電腦記憶體位置讀取一訊息,該訊息通知該雲端計算系統該所請求之資料儲存在該雲端計算系統之該電腦記憶體中的何處。
- 如請求項61之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項61之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項55之方法,其中該PCIe交換機包括一PCIe非透明橋(NTB)且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,或者 其中該雲端儲存系統包括一輸入/輸出記憶體管理單元(IOMMU)且該雲端儲存系統之該PCIe介面連接至該IOMMU,或者 其中該PCIe交換機包括該PCIe NTB且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,且該雲端儲存系統包括該IOMMU且該雲端儲存系統之該PCIe介面連接至該IOMMU。
- 如請求項55之方法,其中該雲端計算系統具有保存分配給該雲端計算系統之組件之記憶體位址的一用戶端記憶體映射,該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 一種用於在一雲端遊戲系統中請求及傳送資料之方法,該方法包括: 具有一雲端遊戲系統,該雲端遊戲系統包括經由一快捷周邊組件互連(PCIe)組構彼此連接之一雲端儲存系統及一雲端計算系統,該雲端儲存系統包括一電腦記憶體,該雲端計算系統包括一電腦記憶體; 操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區; 操作該雲端計算系統以將該命令緩衝區寫入至該雲端計算系統之該電腦記憶體; 操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端計算系統之該電腦記憶體; 操作該雲端儲存系統以經由該PCIe組構自該雲端計算系統之該電腦記憶體讀取該命令緩衝區; 操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料; 操作該雲端儲存系統以經由該PCIe組構將該所請求之資料寫入至該雲端計算系統之該電腦記憶體; 操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中;及 操作該雲端計算系統以自該雲端計算系統之該電腦記憶體讀取該所請求之資料。
- 如請求項66之方法,其中該PCIe組構包括連接至該雲端儲存系統之一PCIe介面且連接至該雲端計算系統之一PCIe介面的一PCIe交換機。
- 如請求項67之方法,其中操作該雲端計算系統以通知該雲端儲存系統該命令緩衝區已經寫入至該雲端計算系統之該電腦記憶體包括操作該雲端計算系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項68之方法,其中對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷,此又致使該雲端儲存系統處置該中斷,該中斷指示該雲端儲存系統自一指定之電腦記憶體位置讀取一訊息,該訊息指示該雲端儲存系統自該雲端計算系統之該電腦記憶體讀取該命令緩衝區。
- 如請求項69之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項69之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項67之方法,其中操作該雲端儲存系統以通知該雲端計算系統該所請求之資料在該雲端計算系統之該電腦記憶體中包括操作該雲端儲存系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項72之方法,其中對該門鈴暫存器進行寫入致使在該雲端計算系統上觸發一中斷,此又致使該雲端計算系統處置該中斷,該中斷指示該雲端計算系統自一指定之電腦記憶體位置讀取一訊息,該訊息通知該雲端計算系統該所請求之資料儲存在該雲端計算系統之該電腦記憶體中的何處。
- 如請求項73之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項73之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項67之方法,其中該PCIe交換機包括一PCIe非透明橋(NTB)且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,或者 其中該雲端儲存系統包括一輸入/輸出記憶體管理單元(IOMMU)且該雲端儲存系統之該PCIe介面連接至該IOMMU,或者 其中該PCIe交換機包括該PCIe NTB且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,且該雲端儲存系統包括該IOMMU且該雲端儲存系統之該PCIe介面連接至該IOMMU。
- 如請求項67之方法,其中該雲端計算系統具有保存分配給該雲端計算系統之組件之記憶體位址的一用戶端記憶體映射,該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
- 一種用於在一雲端遊戲系統中請求及傳送資料之方法,該方法包括: 具有一雲端遊戲系統,該雲端遊戲系統包括經由一快捷周邊組件互連(PCIe)組構彼此連接之一雲端儲存系統及一雲端計算系統,該雲端儲存系統包括一電腦記憶體,該雲端計算系統包括一電腦記憶體; 操作該雲端計算系統以生成用於一資料讀取操作之一命令緩衝區; 操作該雲端計算系統以將該命令緩衝區寫入至該雲端計算系統之該電腦記憶體; 操作該雲端計算系統以經由該PCIe組構通知該雲端儲存系統該命令緩衝區已經寫入至該雲端計算系統之該電腦記憶體; 操作該雲端儲存系統以經由該PCIe組構自該雲端計算系統之該電腦記憶體讀取該命令緩衝區; 操作該雲端儲存系統以處理該命令緩衝區以自雲端儲存系統可存取之一儲存裝置讀取所請求之資料,且將該所請求之資料寫入在該雲端儲存系統之該電腦記憶體中; 操作該雲端儲存系統以經由該PCIe組構通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中;及 操作該雲端計算系統以經由該PCIe組構自該雲端儲存系統之該電腦記憶體讀取該所請求之資料。
- 如請求項78之方法,其中該PCIe組構包括連接至該雲端儲存系統之一PCIe介面且連接至該雲端計算系統之一PCIe介面的一PCIe交換機。
- 如請求項79之方法,其中操作該雲端計算系統以通知該雲端儲存系統該命令緩衝區已經寫入至該雲端計算系統之該電腦記憶體包括操作該雲端計算系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項80之方法,其中對該門鈴暫存器進行寫入致使在該雲端儲存系統上觸發一中斷,此又致使該雲端儲存系統處置該中斷,該中斷指示該雲端儲存系統自一指定之電腦記憶體位置讀取一訊息,該訊息指示該雲端儲存系統自該雲端計算系統之該電腦記憶體讀取該命令緩衝區。
- 如請求項81之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項81之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項79之方法,其中操作該雲端儲存系統以通知該雲端計算系統該所請求之資料在該雲端儲存系統之該電腦記憶體中包括操作該雲端儲存系統以對經由該PCIe交換機暴露之一門鈴暫存器進行寫入。
- 如請求項84之方法,其中對該門鈴暫存器進行寫入致使在該雲端計算系統上觸發一中斷,此又致使該雲端計算系統處置該中斷,該中斷指示該雲端計算系統自一指定之電腦記憶體位置讀取一訊息,該訊息通知該雲端計算系統該所請求之資料儲存在該雲端儲存系統之該電腦記憶體中的何處。
- 如請求項85之方法,其中該指定之電腦記憶體位置係在該雲端儲存系統之該電腦記憶體中。
- 如請求項85之方法,其中該指定之電腦記憶體位置係在該雲端計算系統之該電腦記憶體中。
- 如請求項79之方法,其中該PCIe交換機包括一PCIe非透明橋(NTB)且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,或者 其中該雲端儲存系統包括一輸入/輸出記憶體管理單元(IOMMU)且該雲端儲存系統之該PCIe介面連接至該IOMMU,或者 其中該PCIe交換機包括該PCIe NTB且該雲端計算系統之該PCIe介面經由該PCIe NTB連接至該PCIe交換機,且該雲端儲存系統包括該IOMMU且該雲端儲存系統之該PCIe介面連接至該IOMMU。
- 如請求項79之方法,其中該雲端計算系統具有保存分配給該雲端計算系統之組件之記憶體位址的一用戶端記憶體映射,該PCIe交換機經組態以將保存在該用戶端記憶體映射中之該等記憶體位址轉換為該雲端儲存系統之該電腦記憶體中的記憶體位址,使得對該用戶端記憶體映射中之一給定記憶體位址的存取由該PCIe交換機轉換為改為存取該雲端儲存系統之該電腦記憶體中的一給定記憶體位址。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962885184P | 2019-08-09 | 2019-08-09 | |
US62/885,184 | 2019-08-09 | ||
US16/556,011 | 2019-08-29 | ||
US16/556,011 US11311800B2 (en) | 2019-08-09 | 2019-08-29 | Systems implementing high-speed data communication fabric for cloud gaming data storage and retrieval |
US16/556,046 US20210042255A1 (en) | 2019-08-09 | 2019-08-29 | Methods for Using High-Speed Data Communication Fabric to Enable Cross-System Command Buffer Writing for Data Retrieval in Cloud Gaming |
US16/556,059 US11311801B2 (en) | 2019-08-09 | 2019-08-29 | Methods for using high-speed data communication fabric to enable cross-system command buffer reading for data retrieval in cloud gaming |
US16/556,059 | 2019-08-29 | ||
US16/556,046 | 2019-08-29 | ||
US16/556,032 | 2019-08-29 | ||
US16/556,032 US11420117B2 (en) | 2019-08-09 | 2019-08-29 | Methods implementing doorbell register/file identification table with high-speed data communication fabric for cloud gaming data storage and retrieval |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202107297A true TW202107297A (zh) | 2021-02-16 |
TWI779325B TWI779325B (zh) | 2022-10-01 |
Family
ID=74498530
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109125785A TWI779325B (zh) | 2019-08-09 | 2020-07-30 | 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 |
TW111116923A TW202234263A (zh) | 2019-08-09 | 2020-07-30 | 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111116923A TW202234263A (zh) | 2019-08-09 | 2020-07-30 | 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 |
Country Status (4)
Country | Link |
---|---|
US (6) | US20210042255A1 (zh) |
CN (1) | CN112422606A (zh) |
TW (2) | TWI779325B (zh) |
WO (1) | WO2021030020A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220103490A1 (en) * | 2020-09-28 | 2022-03-31 | Vmware, Inc. | Accessing multiple external storages to present an emulated local storage through a nic |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US11606310B2 (en) | 2020-09-28 | 2023-03-14 | Vmware, Inc. | Flow processing offload using virtual port identifiers |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190167A (zh) * | 2020-01-14 | 2021-07-30 | 伊姆西Ip控股有限责任公司 | 用于管理计算设备的方法、电子设备和计算机存储介质 |
US11321259B2 (en) * | 2020-02-14 | 2022-05-03 | Sony Interactive Entertainment Inc. | Network architecture providing high speed storage access through a PCI express fabric between a compute node and a storage server |
US11068421B1 (en) * | 2020-02-20 | 2021-07-20 | Silicon Motion, Inc. | Memory device and associated flash memory controller |
US11782833B2 (en) | 2020-03-12 | 2023-10-10 | Samsung Electronics Co., Ltd. | System and method of determining available bandwidth in disaggregated tiered cache for cloud content storage |
US11765235B2 (en) * | 2020-03-12 | 2023-09-19 | Samsung Electronics Co., Ltd. | System and method of disk sharing for cloud content storage |
KR102518287B1 (ko) * | 2021-04-13 | 2023-04-06 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
US11782616B2 (en) | 2021-04-06 | 2023-10-10 | SK Hynix Inc. | Storage system and method of operating the same |
US11561909B2 (en) * | 2021-04-28 | 2023-01-24 | Western Digital Technologies, Inc. | Bandwidth allocation for storage system commands in peer-to-peer environment |
TWI783673B (zh) * | 2021-09-09 | 2022-11-11 | 英業達股份有限公司 | 具有頻寬切換功能之伺服器系統 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836129B2 (en) * | 2006-12-19 | 2010-11-16 | International Business Machines Corporation | Communication between host systems using a queuing system and shared memories |
JP4575410B2 (ja) * | 2007-08-29 | 2010-11-04 | 株式会社東芝 | 半導体記憶装置およびその動作方法 |
US8976799B1 (en) * | 2007-10-01 | 2015-03-10 | Apple Inc. | Converged computer I/O system and bridging mechanism for peer-to-peer communication |
US8503468B2 (en) * | 2008-11-05 | 2013-08-06 | Fusion-Io, Inc. | PCI express load sharing network interface controller cluster |
US8934347B1 (en) * | 2009-09-21 | 2015-01-13 | Tilera Corporation | Low latency dynamic route selection |
US8463934B2 (en) * | 2009-11-05 | 2013-06-11 | Rj Intellectual Properties, Llc | Unified system area network and switch |
CN103080917B (zh) * | 2010-06-18 | 2014-08-20 | Lsi公司 | 可扩展存储装置 |
US8830228B2 (en) * | 2010-12-20 | 2014-09-09 | Microsoft Corporation | Techniques for enabling remote management of servers configured with graphics processors |
US9141568B2 (en) * | 2011-08-25 | 2015-09-22 | Apple Inc. | Proportional memory operation throttling |
US8868867B2 (en) * | 2011-09-15 | 2014-10-21 | The Regents Of The University Of California | Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device |
KR20130062462A (ko) * | 2011-11-25 | 2013-06-13 | 한국전자통신연구원 | 스트리밍 게임 서비스를 위한 분산 서버 시스템 및 방법 |
US9348757B2 (en) * | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9075557B2 (en) * | 2013-05-15 | 2015-07-07 | SanDisk Technologies, Inc. | Virtual channel for data transfers between devices |
US9224187B2 (en) * | 2013-09-27 | 2015-12-29 | Apple Inc. | Wavefront order to scan order synchronization |
US9838498B2 (en) * | 2014-10-30 | 2017-12-05 | ScaleFlux | Remote direct non-volatile cache access |
US10019388B2 (en) | 2015-04-28 | 2018-07-10 | Liqid Inc. | Enhanced initialization for data storage assemblies |
US10191691B2 (en) * | 2015-04-28 | 2019-01-29 | Liqid Inc. | Front-end quality of service differentiation in storage system operations |
CN104951252B (zh) * | 2015-06-12 | 2018-10-16 | 北京联想核芯科技有限公司 | 一种数据访问方法及PCIe存储设备 |
US10162793B1 (en) | 2015-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Storage adapter device for communicating with network storage |
US9804988B1 (en) | 2015-10-30 | 2017-10-31 | Amazon Technologies, Inc. | Device full memory access through standard PCI express bus |
US9946642B2 (en) * | 2015-11-13 | 2018-04-17 | Samsung Electronics Co., Ltd | Distributed multimode storage management |
US9940123B1 (en) | 2015-12-29 | 2018-04-10 | Amazon Technologies, Inc. | Updating device code through a bus |
US10296256B2 (en) | 2016-07-14 | 2019-05-21 | Google Llc | Two stage command buffers to overlap IOMMU map and second tier memory reads |
US10445018B2 (en) * | 2016-09-09 | 2019-10-15 | Toshiba Memory Corporation | Switch and memory device |
US10327351B2 (en) * | 2016-10-26 | 2019-06-18 | MacStadium, Inc. | Sled, tray, and shelf assembly for computer data center |
US10013388B1 (en) * | 2016-12-19 | 2018-07-03 | Amazon Technologies, Inc. | Dynamic peer-to-peer configuration |
US10884970B2 (en) * | 2016-12-28 | 2021-01-05 | Intel Corporation | Techniques for coalescing doorbells in a request message |
US10911292B1 (en) * | 2017-03-30 | 2021-02-02 | Amazon Technologies, Inc. | Controlling peer-to-peer communication |
US10191812B2 (en) * | 2017-03-30 | 2019-01-29 | Pavilion Data Systems, Inc. | Recovery mechanism for low latency metadata log |
US11054886B2 (en) * | 2017-04-01 | 2021-07-06 | Intel Corporation | Supporting multiple refresh rates in different regions of panel display |
US10491666B2 (en) * | 2017-04-03 | 2019-11-26 | Sony Interactive Entertainment America Llc | Systems and methods for using a distributed game engine |
US10545800B2 (en) | 2017-05-31 | 2020-01-28 | Ati Technologies Ulc | Direct doorbell ring in virtualized processing device |
US10521273B2 (en) * | 2017-06-08 | 2019-12-31 | Cisco Technology, Inc. | Physical partitioning of computing resources for server virtualization |
KR102446733B1 (ko) | 2017-11-30 | 2022-09-23 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 |
US10831526B2 (en) * | 2017-12-29 | 2020-11-10 | Virtual Instruments Corporation | System and method of application discovery |
US10409524B1 (en) * | 2018-04-25 | 2019-09-10 | Advanced Micro Devices, Inc. | Dynamic memory traffic optimization in multi-client systems |
-
2019
- 2019-08-29 US US16/556,046 patent/US20210042255A1/en not_active Abandoned
- 2019-08-29 US US16/556,059 patent/US11311801B2/en active Active
- 2019-08-29 US US16/556,032 patent/US11420117B2/en active Active
- 2019-08-29 US US16/556,011 patent/US11311800B2/en active Active
-
2020
- 2020-07-22 WO PCT/US2020/043145 patent/WO2021030020A1/en active Application Filing
- 2020-07-30 TW TW109125785A patent/TWI779325B/zh active
- 2020-07-30 TW TW111116923A patent/TW202234263A/zh unknown
- 2020-08-10 CN CN202010794328.0A patent/CN112422606A/zh active Pending
-
2022
- 2022-07-13 US US17/864,317 patent/US11724185B2/en active Active
-
2023
- 2023-08-14 US US18/449,699 patent/US20230381642A1/en active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11824931B2 (en) | 2020-09-28 | 2023-11-21 | Vmware, Inc. | Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11716383B2 (en) * | 2020-09-28 | 2023-08-01 | Vmware, Inc. | Accessing multiple external storages to present an emulated local storage through a NIC |
US11736565B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Accessing an external storage through a NIC |
US11736566B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Using a NIC as a network accelerator to allow VM access to an external storage via a PF module, bus, and VF module |
US11606310B2 (en) | 2020-09-28 | 2023-03-14 | Vmware, Inc. | Flow processing offload using virtual port identifiers |
US20220103490A1 (en) * | 2020-09-28 | 2022-03-31 | Vmware, Inc. | Accessing multiple external storages to present an emulated local storage through a nic |
US11792134B2 (en) | 2020-09-28 | 2023-10-17 | Vmware, Inc. | Configuring PNIC to perform flow processing offload using virtual port identifiers |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US11875172B2 (en) | 2020-09-28 | 2024-01-16 | VMware LLC | Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
Also Published As
Publication number | Publication date |
---|---|
US20230381642A1 (en) | 2023-11-30 |
WO2021030020A1 (en) | 2021-02-18 |
US20210038980A1 (en) | 2021-02-11 |
CN112422606A (zh) | 2021-02-26 |
US11311801B2 (en) | 2022-04-26 |
US20210042255A1 (en) | 2021-02-11 |
US11311800B2 (en) | 2022-04-26 |
US20220347568A1 (en) | 2022-11-03 |
US20210038994A1 (en) | 2021-02-11 |
TWI779325B (zh) | 2022-10-01 |
US11420117B2 (en) | 2022-08-23 |
TW202234263A (zh) | 2022-09-01 |
US11724185B2 (en) | 2023-08-15 |
US20210042059A1 (en) | 2021-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI779325B (zh) | 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 | |
USRE49273E1 (en) | Switch and memory device | |
US9760386B2 (en) | Accelerator functionality management in a coherent computing system | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
US11656775B2 (en) | Virtualizing isolation areas of solid-state storage media | |
TWI793654B (zh) | 雲端遊戲系統及操作雲端遊戲系統之方法 | |
US11635902B2 (en) | Storage device processing stream data, system including the same, and operation method | |
KR20210119529A (ko) | 스토리지 장치 컨텐츠를 스트리밍하는 시스템들 및 방법들 | |
JP2023015243A (ja) | バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 | |
Markussen et al. | Smartio: Zero-overhead device sharing through pcie networking | |
JP7247405B2 (ja) | ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法 | |
CN114546902A (zh) | 基于多协议访问存储器的系统、设备和方法 | |
JP6825263B2 (ja) | ストレージ制御装置、およびストレージシステム | |
US11914879B2 (en) | Storage controller and storage system comprising the same | |
US20210149821A1 (en) | Address translation technologies | |
KR20230056920A (ko) | 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |