CN112422606A - 云游戏数据存储和检索的高速数据通信架构的系统和方法 - Google Patents
云游戏数据存储和检索的高速数据通信架构的系统和方法 Download PDFInfo
- Publication number
- CN112422606A CN112422606A CN202010794328.0A CN202010794328A CN112422606A CN 112422606 A CN112422606 A CN 112422606A CN 202010794328 A CN202010794328 A CN 202010794328A CN 112422606 A CN112422606 A CN 112422606A
- Authority
- CN
- China
- Prior art keywords
- cloud
- storage system
- pcie
- cloud storage
- cloud computing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 236
- 238000013500 data storage Methods 0.000 title description 48
- 238000004891 communication Methods 0.000 title description 18
- 238000003860 storage Methods 0.000 claims abstract description 898
- 239000000872 buffer Substances 0.000 claims abstract description 194
- 239000004744 fabric Substances 0.000 claims abstract description 181
- 230000008569 process Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 25
- 230000001960 triggered effect Effects 0.000 claims description 17
- 230000002093 peripheral effect Effects 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 11
- 239000004020 conductor Substances 0.000 claims description 7
- 238000009434 installation Methods 0.000 claims description 7
- 230000011664 signaling Effects 0.000 claims 2
- 239000000306 component Substances 0.000 description 44
- 238000010586 diagram Methods 0.000 description 15
- 238000013507 mapping Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000006837 decompression Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000001965 increasing effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 230000007727 signaling mechanism Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100226364 Arabidopsis thaliana EXT1 gene Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- 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/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
-
- 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
- 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/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 or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- 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 fabric)彼此连接的云存储系统和云计算系统。所述云存储系统包括计算机存储器。所述云计算系统包括计算机存储器。所述方法还包括操作所述云计算系统以生成用于数据读取操作的命令缓冲区。所述方法还包括操作所述云计算系统以通过所述PCIe架构将所述命令缓冲区写入到所述云存储系统的所述计算机存储器。所述方法还包括操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云存储系统的所述计算机存储器。所述方法还包括操作所述云存储系统以从所述云存储系统的所述计算机存储器读取所述命令缓冲区。所述方法还包括操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据。所述方法还包括操作所述云存储系统以通过所述PCIe架构将所述所请求的数据写入到所述云计算系统的所述计算机存储器。所述方法还包括操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中。
在示例性实施方案中,公开了一种用于在云游戏系统中请求和传送数据的方法。所述方法包括具有云游戏系统,所述云游戏系统包括通过PCIe架构(PCIe fabric)彼此连接的云存储系统和云计算系统。所述云存储系统包括计算机存储器。所述云计算系统包括计算机存储器。所述方法还包括操作所述云计算系统以生成用于数据读取操作的命令缓冲区。所述方法还包括操作所述云计算系统以将所述命令缓冲区写入到所述云计算系统的所述计算机存储器。所述方法还包括操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云计算系统的所述计算机存储器。所述方法还包括操作所述云存储系统以通过所述PCIe架构从所述云计算系统的所述计算机存储器读取所述命令缓冲区。所述方法还包括操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据。所述方法还包括操作所述云存储系统以通过所述PCIe架构将所述所请求的数据写入到所述云计算系统的所述计算机存储器。所述方法还包括操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中。
在示例性实施方案中,公开了一种用于在云游戏系统中请求和传送数据的方法。所述方法包括具有云游戏系统,所述云游戏系统包括通过PCIe架构(PCIe fabric)彼此连接的云存储系统和云计算系统。所述云存储系统包括计算机存储器。所述云计算系统包括计算机存储器。所述方法还包括操作所述云计算系统以生成用于数据读取操作的命令缓冲区。所述方法还包括操作所述云计算系统以将所述命令缓冲区写入到所述云计算系统的所述计算机存储器。所述方法还包括操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云计算系统的所述计算机存储器。所述方法还包括操作所述云存储系统以通过所述PCIe架构从所述云计算系统的所述计算机存储器读取所述命令缓冲区。所述方法还包括操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据,并将所述所请求的数据写入在所述云存储系统的所述计算机存储器中。所述方法还包括操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云存储系统的所述计算机存储器中。所述方法还包括操作所述云计算系统以通过所述PCIe架构从所述云存储系统的所述计算机存储器读取所述所请求的数据。
在示例性实施方案中,公开了一种用于在云游戏系统中进行数据传送的方法。所述方法包括具有云游戏系统,所述云游戏系统包括通过PCIe架构(PCIe fabric)彼此连接的云存储系统和云计算系统。所述云存储系统包括计算机存储器。所述云计算系统包括计算机存储器。所述方法还包括操作所述云存储系统以生成文件标识表,所述文件标识表指定所述云存储系统的所述计算机存储器中的存储不同的数据文件的存储器地址。所述方法还包括操作所述云计算系统以使用所述文件标识表来确定所述云存储系统的所述计算机存储器中的存储所需数据文件的存储器地址。所述方法还包括操作所述云计算系统以通过所述PCIe架构从所述云存储系统的所述计算机存储器读取所述所需数据文件。
根据结合附图进行的以下详细描述,本发明的其他方面将变得更显而易见,以下详细描述通过举例的方式来说明本发明。
附图说明
图1A示出了PCIe架构的概图。
图1B示出了PCIe交换机的示例性配置。
图1C示出了包括一个PCIe通道的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示出了根据一些实施方案的用于在云游戏系统中进行数据传送的方法。
具体实施方式
在以下描述中,提出了许多具体细节,以便提供对本发明的透彻的了解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的一些或全部的情况下实践本发明。在其它情况下,众所周知的过程操作未进行详细描述,以免不必要地混淆本发明。
以下详细描述包括对附图的参考,附图形成详细描述的一部分。附图示出了根据示例性实施方案的图示。足够详细地描述了这些示例性实施方案(在本文中也称为“示例”),以使本领域技术人员能够实践所提出的主题。在不脱离所要求保护的范围的情况下,能够组合实施方案,能够利用其他实施方案,或者能够进行结构、逻辑和电气改变。因此,以下详细描述不应以限制性意义看待,并且范围由所附权利要求及其等效物限定。在本文献中,如在专利文献中常见的那样,使用术语“一个”和“一种”来包括一个或一个以上。在本文献中,除非另外指示,否则术语“或”用于指非排他性的“或”,使得“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基本规范修订5.0版本1.0中描述的高性能的通用输入/输出互连件,PCI-SIG是负责指定外围部件互连(PCI)计算机总线、扩展外围部件互连(PCI-X)计算机总线和PCIe计算机总线的电子工业联盟。PCIe是双向的点对点数据总线,最初是为个人计算机(PC)和服务器设计的以提供主机装置与其他装置(诸如图形处理单元(GPU)、网卡、声卡、存储控制器等)的通信。PCI基本规范修订5.0版本1.0出于所有目的以引用的方式全文并入本文中。应理解,本文中提到的任何PCIe特征均指在由PCI-SIG发布的PCI基本规范的任何修订和/或版本中描述的对应的PCIe特征。因此,应理解,本文中提到的任何PCIe特征不限于仅仅在PCI基本规范的修订5.0版本1.0中的对应的PCIe特征的描述,而且可对应于由PCI-SIG发布的PCI基本规范的任何修订和/或版本中的对应的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根线),并且每周期在发射方向和接收方向中的每一者上载运两个位。x4PCIe链路具有四个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的存储器映射中的前2GB。应理解,可通过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中的一个或多个NVMe SSD。而且,在一些实施方案中,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的CPU365的情况下)直接访问云存储系统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,虚拟存储器地址是连续的,因此应用程序能够看到存储器块(例如,64MB的存储器块)并在该存储器块上操作,但实际上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大于一。PCIe交换机305包括所述数量的(D个)PCIe端口315-315(D),云计算系统303(1)-303(D)分别通过对应的PCIe链路309(1)-309(D)连接到所述数量的PCIe端口315-315(D)。在一些实施方案中,PCIe链路309(1)-309(D)中的每个PCIe链路具有某一数量的(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大于一。云存储系统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交换机具有对应的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链路可能发生故障,和/或PCIe交换机305(1)-305(E)中的一个或多个PCIe交换机可能发生故障。可检测和处置这些各种故障模式。例如,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规范定义某一量的信号损耗,其对于PCIe4.0为大约26dB。这种信号损耗预算遍及整个信号路径,例如遍及构成整个信号路径的芯片的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的存储CPU331被配置为有效地处理存储命令,但是可能不够强大而无法运行操作系统和管理使用网卡和网络交换机来安排云存储系统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和Win32API的开销很大,这是因为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(偏移量)”是存储器中相对于文件开始的位置,要读取的数据位于该位置处/在该位置处开始。偏移量通常为零,但是可使用非零值来从文件中与文件开头相距某一距离的位置读取数据。
在一些实施方案中,用于读取文件和写入文件(readFile/writeFile)的游戏特定API映射到命令缓冲区。命令缓冲区是除其他内部数据结构之外的至少含有传递给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控制器363的中断所表示的,存储CPU331通知主CPU 325并将结果输送回到应用程序。在一些实施方案中,在从存储装置检索数据之后的其他操作可包括数据的解压缩和解密,如由存储CPU 331通过诸如解压缩/压缩引擎335之类的其他协处理器所管理的那样。
尽管如上文讨论的用于读取文件和写入文件(readFile/writeFile)的游戏特定API用于专用的游戏API,但是常规的POSIX和/或Win32API可由云计算系统303用于其他数据类型,并且这些常规API可映射到不同类型的命令缓冲区。一般来说,整个数据路径预期随着操作系统的更多处理和处置而有所不同。然而,最终的数据访问请求仍可传递通过存储CPU 331。
在一些云游戏实现方式中,根据本文公开的实施方案,云计算系统303可能不具有其自己的本地数据存储区,诸如HDD和/或SSD。或者,云计算系统303可具有用于存储操作系统的一部分的最小本地数据存储装置。应理解,在这些实施方案中,可利用连接云计算系统303与云存储系统301的PCIe架构来扩展云计算系统303的存储CPU331对命令缓冲区的处置。在一些情况下,可通过云存储系统301来处理指示对存储在云存储系统301内的某一位置的数据的访问的命令缓冲区。可选地,在一些情况下,可由云计算系统301在绕过云存储系统301中的CPU 365的情况下管理指示对存储在云存储系统301内的某一位置的数据的访问的命令缓冲区。
如下描述各种实施方案,其中通过云存储系统301来处理指示对存储在云存储系统301内的某一位置的数据的访问的命令缓冲区。在这些实施方案中,云存储系统301的CPU365从云计算系统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包括多个命令缓冲区队列。在这些实施方案中,可为不同的命令缓冲区队列分配不同的处理优先级等级,使得较高优先级的命令缓冲区进入较高优先级的命令缓冲区队列中。而且,下面讨论的示例性实施方案主要涉及游戏内容只读数据访问命令缓冲区,诸如由如上文讨论的用于读取文件和写入文件(readFile/writeFile)的游戏特定API生成的命令缓冲区。然而,应理解,下面讨论的示例性实施方案的原理也可用于读取和写入其他数据类型,诸如操作系统数据和/或用户特定数据,所述数据类型可使用较常规的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的存储CPU331操作以修改原始命令缓冲区以包括由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的存储CPU331操作以修改原始命令缓冲区以包括由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架构从云计算系统301的计算机存储器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中。在一些实施方案中,云计算系统301具有客户端存储器映射,所述客户端存储器映射保存分配给云计算系统301的部件的存储器地址。在这些实施方案中,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可访问的网络(互联网)访问。POSIXAPI可通过命令缓冲区进行映射,所述命令缓冲区触发对此类用户特定数据的数据访问。为了提高云游戏性能,可操作云存储系统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获得云计算系统303DMA数据来卸载云存储系统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、磁带和其他光学和非光学数据存储装置。计算机可读介质可包括分布在网络耦合的计算机系统上的计算机可读有形介质,使得以分布式方式存储和执行计算机可读代码。
尽管为了清楚理解的目的而略微详细地描述了前述发明,但很显然,可在所附权利要求的范围内实践某些变化和修改。因此,本实施方案将被认为是说明性的而非限制性的,并且本发明不限于本文给出的细节,而是可在所描述的实施方案的范围和等效范围内进行修改。
Claims (89)
1.一种云游戏系统,所述云游戏系统包括:
云存储系统,所述云存储系统具有快速外围部件互连(PCIe)接口,所述云存储系统包括计算机存储器;
PCIe交换机,所述PCIe交换机连接到所述云存储系统的所述PCIe接口;以及
云计算系统,所述云计算系统具有连接到所述PCIe交换机的PCIe接口,所述云计算系统具有保存分配给所述云计算系统的部件的存储器地址的客户端存储器映射,所述PCIe交换机被配置为将保存在所述客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述客户端存储器映射中的给定存储器地址的访问由所述PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
2.如权利要求1所述的云游戏系统,其中所述云存储系统和所述云计算系统定位在机架中。
3.如权利要求2所述的云游戏系统,其中所述云计算系统的所述PCIe接口连接到所述机架的背板,并且其中所述PCIe交换机设置在所述机架的所述背板内,并且其中所述机架的所述背板通过电缆连接到所述云存储系统。
4.如权利要求1所述的云游戏系统,其中所述云计算系统是多个云计算系统中的第一云计算系统,所述多个云计算系统中的每一者具有连接到所述PCIe交换机的相应的PCIe接口。
5.如权利要求4所述的云游戏系统,其中所述多个云计算系统中的每一者是具有相应的客户端存储器映射的相应的云计算系统,所述相应的客户端存储器映射保存分配给所述相应的云计算系统的部件的存储器地址,所述PCIe交换机被配置为将保存在所述相应的客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述相应的客户端存储器映射中的给定存储器地址的访问由所述PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
6.如权利要求5所述的云游戏系统,其中所述云存储系统的所述PCIe接口通过某一数量的(N个)通道连接到所述PCIe交换机,并且其中所述多个云计算系统中的每一者的所述相应的PCIe接口通过某一数量的(M个)通道连接到所述PCIe交换机,其中每个通道具有用于通过差分信令接收数据的第一对电信号导体和用于通过差分信令发射数据的第二对电信号导体。
7.如权利要求6所述的云游戏系统,其中通道的所述数量(N)等于通道的所述数量(M)乘以所述多个云计算系统的数量。
8.如权利要求6所述的云游戏系统,其中通道的所述数量(N)小于通道的所述数量(M)乘以所述多个云计算系统的数量。
9.如权利要求4所述的云游戏系统,其中所述云计算系统是在计算抽屉上实现的多个云计算系统中的第一云计算系统,所述计算抽屉包括PCIe接口,所述多个云计算系统中的每一者具有连接到所述计算抽屉的所述PCIe接口的相应的PCIe接口。
10.如权利要求9所述的云游戏系统,其中所述计算抽屉和所述云存储系统安装在机架中,其中所述计算抽屉的所述PCIe接口连接到所述机架的背板,并且其中所述PCIe交换机设置在所述机架的所述背板内,并且其中所述机架的所述背板通过电缆连接到所述云存储系统。
11.如权利要求10所述的云游戏系统,其中所述计算抽屉是安装在所述机架中的多个计算抽屉中的第一计算抽屉,其中所述多个计算抽屉中的每一者具有相应的PCIe接口,其中所述多个计算抽屉的每个PCIe接口连接到所述机架的所述背板。
12.如权利要求1所述的云游戏系统,其中所述PCIe交换机是多个PCIe交换器中的第一PCIe交换机,所述多个PCIe交换机中的每一者连接到所述云存储系统的所述PCIe接口。
13.如权利要求12所述的云游戏系统,其中所述PCIe交换机中的每一者是相应的PCIe交换机,所述相应的PCIe交换机具有连接到所述相应的PCIe交换机的至少一个云计算系统,所述至少一个云计算系统中的每一者是具有相应的客户端存储器映射的相应的云计算系统,所述相应的客户端存储器映射保存分配给所述相应的云计算系统的部件的存储器地址,所述相应的PCIe交换机被配置为将保存在所述相应的客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述相应的客户端存储器映射中的给定存储器地址的访问由所述相应的PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
14.如权利要求1所述的云游戏系统,其中所述PCIe交换机包括PCIe非透明桥(NTB)并且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,或者
其中所述云存储系统包括输入/输出存储器管理单元(IOMMU)并且所述云存储系统的所述PCIe接口连接到所述IOMMU,或者
其中所述PCIe交换机包括所述PCIe NTB且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,并且所述云存储系统包括所述IOMMU且所述云存储系统的所述PCIe接口连接到所述IOMMU。
15.如权利要求1所述的云游戏系统,所述云游戏系统还包括:
至少一个额外部件,所述至少一个额外部件具有连接到所述PCIe交换机的PCIe接口,所述至少一个额外部件是图形处理单元(GPU)、网络适配器、快速非易失性存储器(NVMe)装置、通用异步接收器-发射器(UART)控制器、传感器装置和/或通用输入/输出(GPIO)装置中的一者或多者,所述PCIe交换机被配置为将所述至少一个额外部件分配给所述云存储系统的所述计算机存储器中的存储器地址范围。
16.如权利要求1所述的云游戏系统,其中所述PCIe交换机暴露门铃寄存器,其中通过所述云计算系统对所述门铃寄存器进行写入致使在所述云存储系统上触发中断,这又致使所述云存储系统处置所述中断,所述中断指示所述云存储系统从所述云存储系统的所述计算机存储器中的指定位置读取消息,所述消息指示所述云存储系统执行指定动作。
17.如权利要求16所述的云游戏系统,其中所述指定动作是从所述云存储系统可访问的存储装置读取特定量的数据以及将所述特定量的数据写入到所述云存储系统的所述计算机存储器中,并且通知所述云计算系统所述特定量的数据在所述云存储系统的所述计算机存储器中被存储在的存储器地址。
18.一种云游戏系统,所述云游戏系统包括:
云存储系统,所述云存储系统具有快速外围部件互连(PCIe)接口,所述云存储系统包括计算机存储器;
第一PCIe交换机,所述第一PCIe交换机连接到所述云存储系统的所述PCIe接口;
第二PCIe交换机,所述第二PCIe交换机连接所述第一PCIe交换机;
第三PCIe交换机,所述第三PCIe交换机连接到所述第一PCIe交换机;
第一云计算系统,所述第一云计算系统具有连接到所述第二PCIe交换机的PCIe接口,所述第一云计算系统具有保存分配给所述第一云计算系统的部件的存储器地址的第一客户端存储器映射,所述第一PCIe交换机和所述第二PCIe交换机中的一者或两者被配置为将保存在所述第一客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述第一客户端存储器映射中的给定存储器地址的访问被转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址;以及
第二云计算系统,所述第二云计算系统具有连接到所述第三PCIe交换机的PCIe接口,所述第二云计算系统具有保存分配给所述第二云计算系统的部件的存储器地址的第二客户端存储器映射,所述第一PCIe交换机和所述第三PCIe交换机中的一者或两者被配置为将保存在所述第二客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述第二客户端存储器映射中的给定存储器地址的访问被转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
19.如权利要求18所述的云游戏系统,其中所述第一云计算系统是第一多个云计算系统中的一者,所述第一多个云计算系统中的每一者具有连接到所述第二PCIe交换机的相应的PCIe接口,并且
其中所述第二云计算系统是第二多个云计算系统中的一者,所述第二多个云计算系统中的每一者具有连接到所述第三PCIe交换机的相应的PCIe接口。
20.如权利要求18所述的云游戏系统,其中所述第一云计算系统是在第一计算抽屉上实现的第一多个云计算系统中的一者,所述第一计算抽屉包括PCIe接口,所述第一多个云计算系统中的每一者具有连接到所述第一计算抽屉的所述PCIe接口的相应的PCIe接口,并且
其中所述第二云计算系统是在第二计算抽屉上实现的第二多个云计算系统中的一者,所述第二计算抽屉包括PCIe接口,所述第二多个云计算系统中的每一者具有连接到所述第二计算抽屉的所述PCIe接口的相应的PCIe接口。
21.如权利要求20所述的云游戏系统,其中所述第一计算抽屉和所述第二计算抽屉两者都安装在同一机架中,或其中所述第一计算抽屉安装在第一机架中并且所述第二计算抽屉安装在第二机架中。
22.一种用于在云游戏系统中请求数据的方法,所述方法包括:
具有云游戏系统,所述云游戏系统包括具有快速外围部件互连(PCIe)接口的云存储系统,所述云存储系统包括计算机存储器,所述云游戏系统包括连接到所述云存储系统的所述PCIe接口的PCIe交换机,所述云游戏系统包括具有连接到所述PCIe交换机的PCIe接口的云计算系统,所述云计算系统包括计算机存储器,所述PCIe交换机暴露由所述云存储系统监视的门铃寄存器;
操作所述云计算系统以对所述门铃寄存器进行写入,其中对所述门铃寄存器进行写入致使在所述云存储系统上触发中断;以及
操作所述云存储系统以处置所述中断,所述中断指示所述云存储系统从指定的计算机存储器位置读取消息,所述消息指示所述云存储系统从所述云存储系统可访问的存储装置读取所请求的数据。
23.如权利要求22所述的方法,所述方法还包括:
操作所述云存储系统以将所述所请求的数据写入到所述云存储系统的所述计算机存储器中;以及
通知所述云计算系统所述所请求的数据在所述云存储系统的所述计算机存储器中被存储在的存储器地址。
24.如权利要求23所述的方法,其中通知所述云计算系统所述存储器地址包括对由所述云计算系统监视的门铃寄存器进行写入。
25.如权利要求23所述的方法,所述方法还包括:
操作所述云计算系统以从所述云存储系统的所述计算机存储器读取所述所请求的数据。
26.如权利要求22所述的方法,所述方法还包括:
操作所述云存储系统以将所述所请求的数据写入到所述云计算系统的计算机存储器中;以及
通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中被存储在的存储器地址。
27.如权利要求26所述的方法,其中通知所述云计算系统所述存储器地址包括对由所述云计算系统监视的门铃寄存器进行写入。
28.如权利要求26所述的方法,所述方法还包括:
操作所述云计算系统以从所述云计算系统的所述计算机存储器读取所述所请求的数据。
29.如权利要求22所述的方法,其中所述云计算系统具有保存分配给所述云计算系统的部件的存储器地址的客户端存储器映射,所述PCIe交换机被配置为将保存在所述客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述客户端存储器映射中的给定存储器地址的访问由所述PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
30.如权利要求22所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
31.如权利要求22所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
32.一种用于在云游戏系统中进行数据传送的方法,所述方法包括:
具有云游戏系统,所述云游戏系统包括通过快速外围部件互连(PCIe)架构彼此连接的云存储系统和云计算系统,所述云存储系统包括计算机存储器,所述云计算系统包括计算机存储器;
操作所述云存储系统以生成文件标识表,所述文件标识表指定所述云存储系统的所述计算机存储器中的存储不同的数据文件的存储器地址;
操作所述云计算系统以使用所述文件标识表来确定所述云存储系统的所述计算机存储器中的存储所需数据文件的存储器地址;以及
操作所述云计算系统以通过所述PCIe架构从所述云存储系统的所述计算机存储器读取所述所需数据文件。
33.如权利要求32所述的方法,其中操作所述云存储系统以生成所述文件标识表是在游戏包的安装期间完成的,其中所述不同的数据文件是所述游戏包的数据文件。
34.如权利要求32所述的方法,所述方法还包括:
操作所述云存储系统以将所述文件标识表存储在所述云存储系统的所述计算机存储器中。
35.如权利要求34所述的方法,所述方法还包括:
操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述文件标识表在所述云存储系统的所述计算机存储器中的位置,以及操作所述云计算系统以通过所述PCIe架构从所述云存储系统的所述计算机存储器读取所述文件标识表。
36.如权利要求35所述的方法,其中操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述文件标识表在所述云存储系统的所述计算机存储器中的所述位置包括操作所述云存储系统以对通过PCIe交换机暴露的门铃寄存器进行写入,所述云存储系统和所述云计算系统两者都连接到所述PCIe交换机。
37.如权利要求32所述的方法,所述方法还包括:
操作所述云存储系统以通过所述PCIe架构将所述文件标识表存储在所述云计算系统的所述计算机存储器中。
38.如权利要求37所述的方法,所述方法还包括:
操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述文件标识表在所述云计算系统的所述计算机存储器中的位置,以及操作所述云计算系统以从所述云计算系统的所述计算机存储器读取所述文件标识表。
39.如权利要求38所述的方法,其中操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述文件标识表在所述云计算系统的所述计算机存储器中的所述位置包括操作所述云存储系统以对通过PCIe交换机暴露的门铃寄存器进行写入,所述云存储系统和所述云计算系统两者都连接到所述PCIe交换机。
40.如权利要求32所述的方法,其中所述PCIe架构包括连接到所述云存储系统的PCIe接口并连接到所述云计算系统的PCIe接口的PCIe交换机。
41.如权利要求40所述的方法,其中所述PCIe交换机包括PCIe非透明桥(NTB)并且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,或者
其中所述云存储系统包括输入/输出存储器管理单元(IOMMU)并且所述云存储系统的所述PCIe接口连接到所述IOMMU,或者
其中所述PCIe交换机包括所述PCIe NTB且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,并且所述云存储系统包括所述IOMMU且所述云存储系统的所述PCIe接口连接到所述IOMMU。
42.一种用于在云游戏系统中请求和传送数据的方法,所述方法包括:
具有云游戏系统,所述云游戏系统包括通过快速外围部件互连(PCIe)架构彼此连接的云存储系统和云计算系统,所述云存储系统包括计算机存储器,所述云计算系统包括计算机存储器;
操作所述云计算系统以生成用于数据读取操作的命令缓冲区;
操作所述云计算系统以通过所述PCIe架构将所述命令缓冲区写入到所述云存储系统的所述计算机存储器;
操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云存储系统的所述计算机存储器;
操作所述云存储系统以从所述云存储系统的所述计算机存储器读取所述命令缓冲区;
操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据,并将所述所请求的数据写入在所述云存储系统的所述计算机存储器中;
操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云存储系统的所述计算机存储器中;以及
操作所述云计算系统以通过所述PCIe架构从所述云存储系统的所述计算机存储器读取所述所请求的数据。
43.如权利要求42所述的方法,其中所述PCIe架构包括连接到所述云存储系统的PCIe接口并连接到所述云计算系统的PCIe接口的PCIe交换机。
44.如权利要求43所述的方法,其中操作所述云计算系统以通知所述云存储系统所述命令缓冲区已被写入到所述云存储系统的所述计算机存储器包括操作所述云计算系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
45.如权利要求44所述的方法,其中对所述门铃寄存器进行写入致使在所述云存储系统上触发中断,这又致使所述云存储系统处置所述中断,所述中断指示所述云存储系统从指定的计算机存储器位置读取消息,所述消息指示所述云存储系统从所述云存储系统的所述计算机存储器读取所述命令缓冲区。
46.如权利要求45所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
47.如权利要求45所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
48.如权利要求43所述的方法,其中操作所述云存储系统以通知所述云计算系统所述所请求的数据在所述云存储系统的所述计算机存储器中包括操作所述云存储系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
49.如权利要求48所述的方法,其中对所述门铃寄存器进行写入致使在所述云计算系统上触发中断,这又致使所述云计算系统处置所述中断,所述中断指示所述云计算系统从指定的计算机存储器位置读取消息,所述消息通知所述云计算系统所述所请求的数据存储在所述云存储系统的所述计算机存储器中的何处。
50.如权利要求49所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
51.如权利要求49所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
52.如权利要求43所述的方法,其中所述PCIe交换机包括PCIe非透明桥(NTB)并且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,或者
其中所述云存储系统包括输入/输出存储器管理单元(IOMMU)并且所述云存储系统的所述PCIe接口连接到所述IOMMU,或者
其中所述PCIe交换机包括所述PCIe NTB且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,并且所述云存储系统包括所述IOMMU且所述云存储系统的所述PCIe接口连接到所述IOMMU。
53.如权利要求43所述的方法,其中所述云计算系统具有保存分配给所述云计算系统的部件的存储器地址的客户端存储器映射,所述PCIe交换机被配置为将保存在所述客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述客户端存储器映射中的给定存储器地址的访问由所述PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
54.一种用于在云游戏系统中请求和传送数据的方法,所述方法包括:
具有云游戏系统,所述云游戏系统包括通过快速外围部件互连(PCIe)架构彼此连接的云存储系统和云计算系统,所述云存储系统包括计算机存储器,所述云计算系统包括计算机存储器;
操作所述云计算系统以生成用于数据读取操作的命令缓冲区;
操作所述云计算系统以通过所述PCIe架构将所述命令缓冲区写入到所述云存储系统的所述计算机存储器;
操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云存储系统的所述计算机存储器;
操作所述云存储系统以从所述云存储系统的所述计算机存储器读取所述命令缓冲区;
操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据;
操作所述云存储系统以通过所述PCIe架构将所述所请求的数据写入到所述云计算系统的所述计算机存储器;
操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中;以及
操作所述云计算系统以从所述云计算系统的所述计算机存储器读取所述所请求的数据。
55.如权利要求54所述的方法,其中所述PCIe架构包括连接到所述云存储系统的PCIe接口并连接到所述云计算系统的PCIe接口的PCIe交换机。
56.如权利要求55所述的方法,其中操作所述云计算系统以通知所述云存储系统所述命令缓冲区已被写入到所述云存储系统的所述计算机存储器包括操作所述云计算系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
57.如权利要求56所述的方法,其中对所述门铃寄存器进行写入致使在所述云存储系统上触发中断,这又致使所述云存储系统处置所述中断,所述中断指示所述云存储系统从指定的计算机存储器位置读取消息,所述消息指示所述云存储系统从所述云存储系统的所述计算机存储器读取所述命令缓冲区。
58.如权利要求57所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
59.如权利要求57所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
60.如权利要求55所述的方法,其中操作所述云存储系统以通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中包括操作所述云存储系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
61.如权利要求60所述的方法,其中对所述门铃寄存器进行写入致使在所述云计算系统上触发中断,这又致使所述云计算系统处置所述中断,所述中断指示所述云计算系统从指定的计算机存储器位置读取消息,所述消息通知所述云计算系统所述所请求的数据存储在所述云计算系统的所述计算机存储器中的何处。
62.如权利要求61所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
63.如权利要求61所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
64.如权利要求55所述的方法,其中所述PCIe交换机包括PCIe非透明桥(NTB)并且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,或者
其中所述云存储系统包括输入/输出存储器管理单元(IOMMU)并且所述云存储系统的所述PCIe接口连接到所述IOMMU,或者
其中所述PCIe交换机包括所述PCIe NTB且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,并且所述云存储系统包括所述IOMMU且所述云存储系统的所述PCIe接口连接到所述IOMMU。
65.如权利要求55所述的方法,其中所述云计算系统具有保存分配给所述云计算系统的部件的存储器地址的客户端存储器映射,所述PCIe交换机被配置为将保存在所述客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述客户端存储器映射中的给定存储器地址的访问由所述PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
66.一种用于在云游戏系统中请求和传送数据的方法,所述方法包括:
具有云游戏系统,所述云游戏系统包括通过快速外围部件互连(PCIe)架构彼此连接的云存储系统和云计算系统,所述云存储系统包括计算机存储器,所述云计算系统包括计算机存储器;
操作所述云计算系统以生成用于数据读取操作的命令缓冲区;
操作所述云计算系统以将所述命令缓冲区写入到所述云计算系统的所述计算机存储器;
操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云计算系统的所述计算机存储器;
操作所述云存储系统以通过所述PCIe架构从所述云计算系统的所述计算机存储器读取所述命令缓冲区;
操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据;
操作所述云存储系统以通过所述PCIe架构将所述所请求的数据写入到所述云计算系统的所述计算机存储器;
操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中;以及
操作所述云计算系统以从所述云计算系统的所述计算机存储器读取所述所请求的数据。
67.如权利要求66所述的方法,其中所述PCIe架构包括连接到所述云存储系统的PCIe接口并连接到所述云计算系统的PCIe接口的PCIe交换机。
68.如权利要求67所述的方法,其中操作所述云计算系统以通知所述云存储系统所述命令缓冲区已被写入到所述云计算系统的所述计算机存储器包括操作所述云计算系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
69.如权利要求68所述的方法,其中对所述门铃寄存器进行写入致使在所述云存储系统上触发中断,这又致使所述云存储系统处置所述中断,所述中断指示所述云存储系统从指定的计算机存储器位置读取消息,所述消息指示所述云存储系统从所述云计算系统的所述计算机存储器读取所述命令缓冲区。
70.如权利要求69所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
71.如权利要求69所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
72.如权利要求67所述的方法,其中操作所述云存储系统以通知所述云计算系统所述所请求的数据在所述云计算系统的所述计算机存储器中包括操作所述云存储系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
73.如权利要求72所述的方法,其中对所述门铃寄存器进行写入致使在所述云计算系统上触发中断,这又致使所述云计算系统处置所述中断,所述中断指示所述云计算系统从指定的计算机存储器位置读取消息,所述消息通知所述云计算系统所述所请求的数据存储在所述云计算系统的所述计算机存储器中的何处。
74.如权利要求73所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
75.如权利要求73所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
76.如权利要求67所述的方法,其中所述PCIe交换机包括PCIe非透明桥(NTB)并且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,或者
其中所述云存储系统包括输入/输出存储器管理单元(IOMMU)并且所述云存储系统的所述PCIe接口连接到所述IOMMU,或者
其中所述PCIe交换机包括所述PCIe NTB且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,并且所述云存储系统包括所述IOMMU且所述云存储系统的所述PCIe接口连接到所述IOMMU。
77.如权利要求67所述的方法,其中所述云计算系统具有保存分配给所述云计算系统的部件的存储器地址的客户端存储器映射,所述PCIe交换机被配置为将保存在所述客户端存储器映射中的所述存储器地址转换为所述云存储系统的所述计算机存储器中的存储器地址,使得对所述客户端存储器映射中的给定存储器地址的访问由所述PCIe交换机转换为改为访问所述云存储系统的所述计算机存储器中的给定存储器地址。
78.一种用于在云游戏系统中请求和传送数据的方法,所述方法包括:
具有云游戏系统,所述云游戏系统包括通过快速外围部件互连(PCIe)架构彼此连接的云存储系统和云计算系统,所述云存储系统包括计算机存储器,所述云计算系统包括计算机存储器;
操作所述云计算系统以生成用于数据读取操作的命令缓冲区;
操作所述云计算系统以将所述命令缓冲区写入到所述云计算系统的所述计算机存储器;
操作所述云计算系统以通过所述PCIe架构通知所述云存储系统所述命令缓冲区已被写入到所述云计算系统的所述计算机存储器;
操作所述云存储系统以通过所述PCIe架构从所述云计算系统的所述计算机存储器读取所述命令缓冲区;
操作所述云存储系统以处理所述命令缓冲区以从云存储系统可访问的存储装置读取所请求的数据,并将所述所请求的数据写入在所述云存储系统的所述计算机存储器中;
操作所述云存储系统以通过所述PCIe架构通知所述云计算系统所述所请求的数据在所述云存储系统的所述计算机存储器中;以及
操作所述云计算系统以通过所述PCIe架构从所述云存储系统的所述计算机存储器读取所述所请求的数据。
79.如权利要求78所述的方法,其中所述PCIe架构包括连接到所述云存储系统的PCIe接口并连接到所述云计算系统的PCIe接口的PCIe交换机。
80.如权利要求79所述的方法,其中操作所述云计算系统以通知所述云存储系统所述命令缓冲区已被写入到所述云计算系统的所述计算机存储器包括操作所述云计算系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
81.如权利要求80所述的方法,其中对所述门铃寄存器进行写入致使在所述云存储系统上触发中断,这又致使所述云存储系统处置所述中断,所述中断指示所述云存储系统从指定的计算机存储器位置读取消息,所述消息指示所述云存储系统从所述云计算系统的所述计算机存储器读取所述命令缓冲区。
82.如权利要求81所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
83.如权利要求81所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
84.如权利要求79所述的方法,其中操作所述云存储系统以通知所述云计算系统所述所请求的数据在所述云存储系统的所述计算机存储器中包括操作所述云存储系统以对通过所述PCIe交换机暴露的门铃寄存器进行写入。
85.如权利要求84所述的方法,其中对所述门铃寄存器进行写入致使在所述云计算系统上触发中断,这又致使所述云计算系统处置所述中断,所述中断指示所述云计算系统从指定的计算机存储器位置读取消息,所述消息通知所述云计算系统所述所请求的数据存储在所述云存储系统的所述计算机存储器中的何处。
86.如权利要求85所述的方法,其中所述指定的计算机存储器位置是在所述云存储系统的所述计算机存储器中。
87.如权利要求85所述的方法,其中所述指定的计算机存储器位置是在所述云计算系统的所述计算机存储器中。
88.如权利要求79所述的方法,其中所述PCIe交换机包括PCIe非透明桥(NTB)并且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,或者
其中所述云存储系统包括输入/输出存储器管理单元(IOMMU)并且所述云存储系统的所述PCIe接口连接到所述IOMMU,或者
其中所述PCIe交换机包括所述PCIe NTB且所述云计算系统的所述PCIe接口通过所述PCIe NTB连接到所述PCIe交换机,并且所述云存储系统包括所述IOMMU且所述云存储系统的所述PCIe接口连接到所述IOMMU。
89.如权利要求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 US11311800B2 (en) | 2019-08-09 | 2019-08-29 | Systems implementing high-speed data communication fabric for cloud gaming data storage and retrieval |
US16/556,032 | 2019-08-29 | ||
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 | 2019-08-29 | ||
US16/556,011 | 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 |
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,046 | 2019-08-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112422606A true CN112422606A (zh) | 2021-02-26 |
Family
ID=74498530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010794328.0A Pending CN112422606A (zh) | 2019-08-09 | 2020-08-10 | 云游戏数据存储和检索的高速数据通信架构的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (6) | US20210042255A1 (zh) |
CN (1) | CN112422606A (zh) |
TW (2) | TWI779325B (zh) |
WO (1) | WO2021030020A1 (zh) |
Families Citing this family (20)
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 |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11736565B2 (en) | 2020-09-28 | 2023-08-22 | Vmware, Inc. | Accessing an external 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 |
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 |
US11606310B2 (en) | 2020-09-28 | 2023-03-14 | Vmware, Inc. | Flow processing offload using virtual port identifiers |
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 | 英業達股份有限公司 | 具有頻寬切換功能之伺服器系統 |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
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 |
US20240143526A1 (en) * | 2022-10-31 | 2024-05-02 | Mellanox Technologies, Ltd. | Data processing unit with transparent root complex |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148032A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for communication between host systems using a queuing system and shared memories |
US20110202701A1 (en) * | 2009-11-05 | 2011-08-18 | Jayanta Kumar Maitra | Unified system area network and switch |
US20130254477A1 (en) * | 2011-09-15 | 2013-09-26 | 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 |
US9804988B1 (en) * | 2015-10-30 | 2017-10-31 | Amazon Technologies, Inc. | Device full memory access through standard PCI express bus |
US20180181530A1 (en) * | 2016-12-28 | 2018-06-28 | Intel Corporation | Techniques for Coalescing Doorbells in a Request Message |
US20180349165A1 (en) * | 2017-05-31 | 2018-12-06 | Ati Technologies Ulc | Direct doorbell ring in virtualized processing device |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4575410B2 (ja) * | 2007-08-29 | 2010-11-04 | 株式会社東芝 | 半導体記憶装置およびその動作方法 |
US8463881B1 (en) * | 2007-10-01 | 2013-06-11 | Apple Inc. | 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 |
US8799914B1 (en) * | 2009-09-21 | 2014-08-05 | Tilera Corporation | Managing shared resource in an operating system by distributing reference to object and setting protection levels |
US8677068B2 (en) * | 2010-06-18 | 2014-03-18 | Lsi Corporation | Scalable storage devices |
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 |
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 |
US10191691B2 (en) * | 2015-04-28 | 2019-01-29 | Liqid Inc. | Front-end quality of service differentiation in storage system operations |
US10019388B2 (en) * | 2015-04-28 | 2018-07-10 | Liqid Inc. | Enhanced initialization for data storage assemblies |
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 |
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 |
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 |
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 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 |
US20190205153A1 (en) * | 2017-12-29 | 2019-07-04 | Virtual Instruments Corporation | System and method of dynamically assigning device tiers based on application |
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,011 patent/US11311800B2/en active Active
- 2019-08-29 US US16/556,032 patent/US11420117B2/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
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148032A1 (en) * | 2006-12-19 | 2008-06-19 | Freimuth Douglas M | System and method for communication between host systems using a queuing system and shared memories |
US20110202701A1 (en) * | 2009-11-05 | 2011-08-18 | Jayanta Kumar Maitra | Unified system area network and switch |
US20130254477A1 (en) * | 2011-09-15 | 2013-09-26 | 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 |
US9804988B1 (en) * | 2015-10-30 | 2017-10-31 | Amazon Technologies, Inc. | Device full memory access through standard PCI express bus |
US20180181530A1 (en) * | 2016-12-28 | 2018-06-28 | Intel Corporation | Techniques for Coalescing Doorbells in a Request Message |
US20180349165A1 (en) * | 2017-05-31 | 2018-12-06 | Ati Technologies Ulc | Direct doorbell ring in virtualized processing device |
Also Published As
Publication number | Publication date |
---|---|
TW202107297A (zh) | 2021-02-16 |
US20210038994A1 (en) | 2021-02-11 |
US20230381642A1 (en) | 2023-11-30 |
TWI779325B (zh) | 2022-10-01 |
US11311801B2 (en) | 2022-04-26 |
WO2021030020A1 (en) | 2021-02-18 |
US11420117B2 (en) | 2022-08-23 |
US11311800B2 (en) | 2022-04-26 |
US20210038980A1 (en) | 2021-02-11 |
US20210042255A1 (en) | 2021-02-11 |
TW202234263A (zh) | 2022-09-01 |
US11724185B2 (en) | 2023-08-15 |
US20220347568A1 (en) | 2022-11-03 |
US20210042059A1 (en) | 2021-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11724185B2 (en) | Methods implementing doorbell register/file identification table with high-speed data communication fabric for cloud gaming data storage and retrieval | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
US9760386B2 (en) | Accelerator functionality management in a coherent computing system | |
US8214576B2 (en) | Zero copy transport for target based storage virtual appliances | |
TWI793654B (zh) | 雲端遊戲系統及操作雲端遊戲系統之方法 | |
US11635902B2 (en) | Storage device processing stream data, system including the same, and operation method | |
BR112016004712B1 (pt) | Dispositivo de interface, sistema, método, e, mídia legível por computador | |
JP2023015243A (ja) | バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 | |
US9223706B2 (en) | System, method and a non-transitory computer readable medium for a pre-fetch operation | |
Markussen et al. | Smartio: Zero-overhead device sharing through pcie networking | |
CN115129625A (zh) | 外围设备中的增强的存储协议仿真 | |
US20240168675A1 (en) | Storage apparatus and method for data integrity | |
US11914879B2 (en) | Storage controller and storage system comprising the same | |
US11422963B2 (en) | System and method to handle uncompressible data with a compression accelerator | |
Yang | Programming for I/O and Storage | |
KR20170127691A (ko) | 스토리지 장치 및 이의 동작방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |