US20190294382A1 - Mass storage virtualization for cloud computing - Google Patents
Mass storage virtualization for cloud computing Download PDFInfo
- Publication number
- US20190294382A1 US20190294382A1 US16/437,854 US201916437854A US2019294382A1 US 20190294382 A1 US20190294382 A1 US 20190294382A1 US 201916437854 A US201916437854 A US 201916437854A US 2019294382 A1 US2019294382 A1 US 2019294382A1
- Authority
- US
- United States
- Prior art keywords
- interface
- mass storage
- processing unit
- communication interface
- host
- 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.)
- Abandoned
Links
- 238000004891 communication Methods 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 52
- 238000005516 engineering process Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 abstract description 53
- 238000012986 modification Methods 0.000 abstract description 6
- 230000004048 modification Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 40
- 230000002093 peripheral effect Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000007787 solid Substances 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
-
- 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
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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]
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/352—Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/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
- A63F13/95—Storage media specially adapted for storing game information, e.g. video game cartridges
-
- 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/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- 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/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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]
Definitions
- aspects present disclosure relates to storage virtualization. Further aspects of the present disclosure relate to storage virtualization for cloud computing applications designed for embedded platforms.
- cloud computing involves offloading certain computing tasks to one or more remote computing resources and utilizing the remote computing resources to provide services to a local device.
- Cloud computing is often implemented as a client-server model, with the remote server providing desired computing capabilities to a local client device, avoiding the need for the local client device to perform certain computing tasks on its own.
- the computing resources can be entirely or almost entirely offloaded to the server, with the client providing little or no more than a user interface for the cloud computing task, allowing potentially any internet connected device to serve as a client for a particular application.
- Cloud computing has been adopted in a wide variety of computing services, including remote data storage solutions, music and video streaming services, and a wide variety of other consumer and business solutions.
- cloud computing provides several well-known benefits, including increased efficiencies through the use of shared resources, increased flexibility in accessing content without restriction to a particular device, lower up-front costs when hardware upgrades become available, and other advantages.
- cloud computing has yet to achieve widespread adoption is in the ever popular field of video gaming.
- Video games including personal computer (PC) games, home console games, handheld console games, and the like, remain a popular source of entertainment among consumers.
- cloud gaming provides a particularly attractive solution to many video game demands.
- a user would be able to instantly access any video game title from among a vast collection of remotely stored titles, without needing a physical copy of the game, without having to wait for the title to download, and without locally possessing the hardware system or resources needed to run the game.
- Unfortunately, implementing this type of service within a traditional cloud computing server design presents several technical challenges that have thus far prevented widespread adoption of cloud gaming for many video game platforms.
- An implementation of the present disclosure may include an interface device having a first communication interface, a second communication interface, and a specialized processing unit operatively coupled to said communication interfaces.
- the first communication interface is a mass storage interface.
- the second communication interface is an expansion interface.
- the specialized processing unit includes a mass storage device controller connected to the first communication interface and a direct memory access (DMA) engine connected to the second communication interface.
- the mass storage device controller is configured to receive a mass storage data request through the first communication interface.
- the DMA engine is configured to notify a host system of the mass storage data request through the second communication interface.
- Another implementation of the present disclosure may include a system having a central processing unit; a first memory unit operatively coupled to the central processing unit; a storage process embodied in the first memory unit and executable by the central processing unit (CPU); a first communication interface; and a specialized processing unit operatively coupled to the first communication interface.
- the first communication interface is a mass storage interface.
- the specialized processing unit has a mass storage device controller connected to the first communication interface and a memory access interface operatively coupled to the CPU.
- the mass storage device controller is configured to receive a mass storage data request from through the first communication interface.
- the memory access interface is configured to notify the storage process of the mass storage data request.
- the storage process is configured to process the data request by accessing a storage system.
- Another implementation may include a method comprising: a) receiving, from a first computing device, a mass storage data request at a mass storage device controller; b) notifying, with a memory access interface connected to the mass storage device controller, a storage process embodied in a second computing device of the data request; c) accessing, with the storage process of the second computing device, a storage system having data corresponding to the data request; d) storing, with the storage process of the second computing device, the data corresponding to the data request on a first memory unit; e) programming, with the storage process of the second computing device, the mass storage device controller to access the data from the first memory unit in order to complete the data request.
- FIG. 1 is a schematic diagram of an example streaming technique over a network.
- FIG. 2 is a schematic diagram of another example streaming technique over a network.
- FIG. 3 is a schematic diagram of an example host system having an interface card to provide storage virtualization for a terminal system.
- FIG. 4A-4B is a schematic diagram of an example computer architecture for a host system coupled to a terminal system.
- FIG. 4A is a schematic diagram of an example terminal system architecture.
- FIG. 4B is an example host system and interface card architecture.
- FIG. 5 is a schematic diagram of an example interface card design having a specialized processing unit.
- FIG. 6 is a schematic diagram of an example method of emulating a mass storage device.
- aspects of the present disclosure relate to systems and methods for virtualizing mass storage using an interface card, or other special hardware unit, operatively coupled to a host system.
- the interface device and host system may collectively emulate a mass storage device for another “terminal” computing system in a manner that is transparent to the terminal system.
- a mass storage device may be emulated in a manner that is transparent to the terminal system, without requiring modifications to the terminal platform's hardware or software architecture.
- Virtual machine software such as VMWare, VirtualBox or Parallels, which allow, e.g., a ‘virtual’ session of an older operating system (e.g., Windows XP) to run within a session of a newer operating system (e.g., Windows 7).
- Virtual machine software is often used to simulate physical hardware components, such as disk drives, network cards, video cards in software for compatibility reasons. According to aspects of the present disclosure specialized hardware and software can virtualize a mass storage device in situations where it is impractical to do so with software alone.
- FIG. 1 a first illustrative example of a distributed computing system 100 is depicted in FIG. 1 .
- the distributed system 100 depicted in FIG. 1 involves a plurality of computing devices 102 , 104 connected over a network 106 , such as the internet.
- a streaming server 102 executes a program 108 in order to provide a real-time stream of the program output to the remotely connected client device 104 through the network 106 .
- the program 104 may be a video game program which processes control inputs received from the client device 104 and sends a compressed audio and video stream to the client device 104 in accordance with the execution of the program 108 .
- a user located at the client side may interact with the program through a user interface of the client device 104 , e.g. by providing control inputs and receiving the audio and video game output at a display and/or speakers connected to the client device 104 .
- the computational load for processing the inputs, rendering the video game graphics, and the like may be entirely offloaded to the streaming server 102 for remote execution.
- the streaming server 102 may be configured to not only execute the game program 108 , but the streaming server 102 may also implement a “streaming server process” 110 embodied in the server 102 , which may perform various functions to coordinate the program inputs/outputs for communication between the client device 104 and the streaming server 102 over the network 106 .
- the streaming server process 110 may be embodied in one or more applications which are run on the streaming server 102 in coordination with the game software 108 .
- Remote execution of the game 108 together with the streaming server process 110 may be performed with minimal or no latency between the inputs and outputs at the client device 104 so that the user at the client side perceives that the program 108 is being executed locally.
- a wide collection of remotely stored programs may be accessible for execution. For example, in a cloud gaming application, the user would like to be able to select any game designed for the relevant video game platform, and the remote server would be able to load the game, execute it, and streams its output to the client device in accordance with inputs received from the user and with no perceptible latency between the received inputs and audio/video outputs.
- this may be accomplished by executing both the streaming server process 110 and the game code 108 at the same computing device, e.g., the streaming server 102 .
- the streaming server may access a selected program from potentially any storage device, such as a locally connected mass storage device, a storage server, a network, and the like, through a suitable connection.
- any storage device such as a locally connected mass storage device, a storage server, a network, and the like.
- this may be readily implemented if the software application 108 that is executed at the server 102 for the client 104 is designed to run personal computer (PC) architecture or other computer architecture that is similar to the streamliner server 102 .
- PC personal computer
- a readily available x86 based server may be used to not only implement the streaming server process 110 , but also execute the PC game program 108 once it is accessed by the server 102 .
- the example technique 100 depicted in FIG. 1 may not be suitable for certain applications in which the program 108 is designed to be executed on embedded platforms and other specialized architectures.
- the desired program is a video game designed for a dedicated console platform
- the game software may not be able to run on the server architecture without some type of emulator.
- a software emulator executed on a streaming server may be an undesirable solution, particularly in graphics intensive applications where interpretation of the code by the emulator at run-time would introduce a perceptible delay.
- an emulator could be a desirable solution, but a suitable emulator might not be available.
- FIG. 2 An illustrative example of a distributed system 200 which utilizes such a technique is depicted in FIG. 2 , in which a “terminal system” 212 is connected to a streaming server 202 , and the terminal system executes a desired application 208 .
- the streaming server can provide resources for network storage and video compression if the terminal system does not otherwise have sufficient free resources for these functions.
- the terminal system 212 may be an embedded system or other computing system having a specialized architecture, such as a video game console, while the streaming server 202 may be based on any computing architecture, such as an x86 instruction set architecture, which is adapted to provide streaming services and does not necessarily have to have a similar architecture as the terminal system 212 .
- the streaming server 202 may be configured to execute a streaming server process 202 and provide the usual cloud services for the terminal system program 208 , and the computing devices at the server side, e.g. the streaming server 202 and the terminal system 212 , may collectively operate to provide video game streaming services for a client device 204 .
- the configuration in the simplified schematic depicted in FIG. 2 may provide a practical and flexible server solution that can be readily adapted to a variety of different software platforms designed for a variety of different computing architectures.
- any streaming server 202 could be adapted to stream software applications designed for a variety of different computing architectures by locally connecting a terminal system which runs the software.
- executing the desired software on a terminal system 212 at the server side may present certain challenges within a cloud computing framework.
- the terminal system 212 may be able to execute any selected program for a current streaming session from among a variety of different programs, similar to the process described above with respect to the example setup depicted in FIG. 1 .
- any other data reads/writes to a storage device required by the program 208 running on the terminal system 212 could be freed from constraints of local storage by the terminal system.
- Storage data requests are typically accomplished through a local mass storage connection in the terminal system 212 , such as a serial Advanced Technology Attachment (SATA) connection or other mass storage interface.
- SATA serial Advanced Technology Attachment
- a user at the client device 204 may be assigned to a “cloud terminal system” 212 for a gaming session.
- the game 208 the user wants to play should be available on the cloud terminal system 212 .
- the terminal system 212 should be restored to a clean state for a next session by a different user, which may involve a different game.
- FIG. 3 An illustrative example of a storage virtualization technique according to various implementations of the present disclosure is depicted in in FIG. 3 .
- a mass storage device is emulated using a “host system” having a specialized piece of hardware, so that a mass storage device may be emulated for a terminal system connected thereto.
- the example technique of FIG. 3 may be implemented in a cloud streaming application similar to that depicted in FIG. 2 , in which the terminal system may be a specialized system running the desired application, and the host system for the mass storage device emulation is a streaming server.
- storage virtualization in accordance with principles herein may be implemented in other contexts, including cloud computing applications beyond game streaming, and local implementations where storage virtualization for a computing device is desired, particularly where it is desired without making modifications to the computing device.
- virtualized storage is provided for the terminal system 312 using a specialized interface device 320 coupled to a host system 302 for the interface device, which is in this case the streaming server.
- the interface device 320 together with a storage process 322 embodied in the host system 302 may perform various mass storage device data requests received from the terminal system 312 .
- the interface device 320 may be a piece of hardware which looks like an actual mass storage device to the terminal system, but under the hood its data may come from a storage server (not pictured).
- a normal mass storage device typically uses a SATA connection or other standard mass storage interface.
- the interface device 320 of FIG. 3 may include a similar SATA connection or other mass storage communication interface compatible with the mass storage communication interface of terminal system, along with additional components such as a specialized processing unit, a memory, and other components.
- the interface device 320 may be implemented as an expansion card, such as a PCI-Express add-on card, which may be connected to the host system 302 through an expansion interface of the host system.
- the interface card may receive disk read and/or write requests from the terminal system through its mass storage connection (e.g. through a SATA port). These data access requests may be ultimately processed by a storage application 322 on the host system 302 , and the storage application may access data from a file, storage server, or something else.
- the interface device 320 may also optionally include additional components to provide other functionality that may be especially useful in a cloud streaming context.
- the interface device 320 may optionally include one or more additional interfaces for audio and/or video data transfer, as well as corresponding functionality to support audio/video (A/V) streaming via a streaming process of the host system 302 in order to support cloud gaming or other cloud computing implementations.
- the optional A/V interface of the interface device 320 may be compatible with the terminal system 312 and may configured according to any of a variety of A/V standards, such as HDMI, composite video, component video, S-video, or another A/V communication interface.
- FIGS. 4A and 4B provide a more detailed overview of an illustrative hardware/software architecture of an interface device and certain computing devices according to various implementations of the present disclosure.
- FIG. 4A illustrates a computing architecture for an example terminal system according to various aspects of the present disclosure.
- FIG. 4B illustrates a computing architecture for an example host system having an example interface device according to various implementations of the present disclosure.
- the terminal system may be an existing embedded system, video game console, or other computing device having a specialized architecture.
- the host system may be a streaming server configured to stream an application running on the terminal system to a client device, e.g. as depicted in FIG. 2 .
- the example terminal system 412 may include a mass storage host controller 424 (also sometimes known as a host adapter or host bus adapter), which may be, e.g., a SATA host controller (AHCI), USB host controller, or a host controller for another mass storage communication interface standard.
- the terminal system 412 may also include a corresponding mass storage device driver 426 that is compatible with the mass storage device host controller 424 to facilitate communication via the storage device interface.
- the host controller 424 In order to connect to a mass storage device, normally the host controller 424 would be connected to the mass storage device using a corresponding connector (such as a SATA cable, USB cable, or other connector depending on the mass storage device interface of the terminal system).
- the host controller 424 would be connected to a mass storage device controller (also sometimes known as a “disk controller”, although the mass storage device may be a solid state drive or other storage device that does not necessarily use a disk) of the particular mass storage device to which it is connected.
- a mass storage device controller also sometimes known as a “disk controller”
- the host controller 424 is instead connected to the interface device 420 , which together with its host system 402 emulates a mass storage device for the terminal system 412 .
- the interface device 420 may include a communication interface for mass storage device connections that is compatible with the storage communication interface used by the terminal system 412 .
- the communication interface of the interface device may include one or more mass storage ports 414 , such as one or more SATA ports, USB ports, or other compatible mass storage interface hardware.
- the interface device 402 may include a specialized processing unit operatively coupled to the mass storage hardware interface, with the specialized processing unit having logic 428 that is dedicated to performing functions associated with mass storage device emulation, and optionally other functions, for signals received through the storage connector from the terminal system 402 .
- the logic 428 may also support communication with the host system 402 through an additional communication interface, which may communicate with a peripheral bus of the host system 402 in order to interface with a storage process embodied in the host system.
- the interface device 420 may be an add-on card which communicates with the host system 402 process bus through an expansion interface, such as peripheral component interconnect (PCI),), PCI-eXtended (PCI-X), PCI-Express (PCIe), or another interface which facilitates communication with the host system 402 e.g., via a peripheral bus.
- the host system may include an interface device driver 426 to support the exchange of signals via the interface device 420 .
- the specialized processing unit may be a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another specialized processing unit having dedicated units of logic configured in accordance with principles described herein.
- the logic units 428 of the specialized processing unit may also include dedicated logic to support various functions for cloud streaming in addition to storage virtualization, such as audio/video capture of the output from an application 408 running on the terminal system 402 , which may facilitate streaming of the A/V output over the network by the host system 402 in implementations involving cloud gaming.
- the interface card 402 may include an A/V communication interface, such as one or more HDMI ports or other A/V ports, as well as a compatible A/V receiver 430 to receive the A/V output of the application running on the terminal system through a corresponding A/V connector.
- A/V communication interface such as one or more HDMI ports or other A/V ports
- a compatible A/V receiver 430 to receive the A/V output of the application running on the terminal system through a corresponding A/V connector.
- a mass storage device controller embodied in the logic 428 of the specialized processing unit is controlled by the interface device driver 426 in the host system 402 , and a storage process 432 embodied in the host system 402 , e.g. a software application running on a central processing unit 404 , may provide data transport services for the interface device driver 426 .
- a storage process 432 embodied in the host system 402 e.g. a software application running on a central processing unit 404 , may provide data transport services for the interface device driver 426 .
- the terminal system 412 requests to read data from its disk drive or other mass storage device connected to via the mass storage connector, this request may make it through the mass storage host controller 424 , the mass storage device controller contained in the logic 428 , the interface device driver 426 , to the storage process 432 embodied in the host system.
- the storage process 432 may then retrieve the data, which it could get from a variety of sources.
- the storage process 432 may retrieve the data from a disk drive or other mass storage device locally connected to the host machine, or it may retrieve it from a memory drive or a storage server over a network. Whichever method the storage process uses is transparent to the terminal system 402 .
- the host system 402 may optionally be a streaming server adapted to transmit over a network a stream of output from the application 408 running on the terminal system 412 .
- the host system 402 may include an A/V process 434 , which may be an application running on the host system 402 .
- the A/V capture process may coordinate with dedicated logic 428 in the specialized processing unit for capturing an A/V stream sent through an A/V connector connected to the interface card 420 .
- the streaming server 402 may include an Ethernet adapter or other network adapter 436 , and a corresponding Ethernet driver or other network driver 438 for the operating system of the host 402 , with a compatible network library 439 providing protocol support for the network communication.
- the host system may also include system memory 440 , controlled by a corresponding memory driver 442 (e.g. tmpfs) and supported by a file system library 444 .
- a streaming server process 446 may be run on the host system 402 to perform functions associated with provide a real time stream to a client device connected over a network (not pictured in FIGS. 4A-4B ).
- data storage may be implemented using a combination of a remote storage server 448 (shown in phantom in FIG. 4A ), the memory 440 and the memory driver 442 .
- a remote storage server 448 shown in phantom in FIG. 4A
- data may only be read from the storage server 448 and written to the memory 440 by the memory driver 442 .
- the terminal system 412 may include various other components to support the application 408 , which may be, e.g., video game software designed for an existing embedded platform.
- the terminal system 412 may include a file system layer 427 to access storage, as well various components to support graphics rendering for the application 408 .
- the terminal system 412 may include a graphics processing unit (GPU) 450 , which may be operated by a graphics driver 452 and supported by a graphics library 454 .
- An A/V transmitter 456 such HDMI transmitter, may be included to transmit the application audio and/or video output to the host interface device in the host system through a compatible A/V connector.
- FIG. 5 a schematic diagram of an example interface device 520 that may be implemented on the interface card 420 , some components on it, and internals of an example specialized processing unit 560 is depicted in accordance with various implementations of the present disclosure.
- the interface device 520 may be configured as an add-on card having components attached to a printed circuit board (PCB), and the interface card 520 may interface with a peripheral bus of a host system through a host hardware interface 562 , such as a peripheral expansion port or other expansion communication interface which allows communication the peripheral bus of a host system when connected.
- PCB printed circuit board
- the example specialized processing unit 560 may include various blocks of logic dedicated to specialized functionality in accordance with various aspects of the present disclosure.
- the specialized processing unit may be implemented, e.g., as an FPGA, ASIC, or similar specialized processing unit.
- the specialized processing unit 560 may include a host interface block 564 which implements part of a protocol stack for the communication interface between the interface card 520 and a peripheral bus of a host system (not pictured in FIG. 5 ) for the interface device 560 .
- Communication busses like PCI-Express can be thought of as a protocol stack having several layers. Different communication protocols have different layers. Typically there is an ‘application layer’ at the top, then some transport related layers in the middle and some physical layer at the bottom.
- the host interface block 564 need not implement all layers of such a protocol stack. Instead, the host interface block may take care of the physical layer, which is responsible for putting digital information on a communication link, e.g., through electrical or optical signals.
- the host interface block may also be responsible for portions or possibly all of the ‘transport layers’ of the protocol stack, but need not be responsible for the application layer.
- the host interface block 564 may be a hard PCIe block for communication through a PCI-Express connection, and which embeds the protocol stack for a PCIe interface or other interface for accessing a local bus of the host system.
- the host interface block 564 may be integrated into a memory access interface unit 566 which, together with other logic units of the specialized processing unit 560 , may directly access system memory of a host system through the host hardware interface 562 , e.g., using an interrupt of the request to the host system.
- the memory access interface 566 may include components that provide memory access and interrupt functionality.
- the host interface block 564 may be configured to provide an connection between an on-chip-interconnect 572 and the host hardware interface 562 in a way that makes any on-chip device accessible from the host system using memory mapped Input/Output (I/O). This functionality would allow the host system to program any device connected to the on-chip-interconnect 572 , such as the mass storage controller 570 , memory controller 576 , or GPIO 582 .
- the memory access interface 566 may also include an interrupt connection 565 that allows any connected device, e.g., the mass storage controller 570 , to generate an interrupt upon an event (e.g., a mass storage read request) arrival). It is desirable for the memory access interface to provide this functionality if there can be only one device interfacing with the host hardware interface hardware 562 .
- the memory access interface 566 may also (optionally) include a direct memory access (DMA) engine 567 .
- DMA direct memory access
- the DMA engine 567 may implement data move operations between the host interface block 564 and the host hardware interface 562 .
- the memory access interface unit 566 may implement portions of a protocol stack (e.g., PCI Express) not provided by the host interface block 564 , such as connecting the host interface block 564 to the on-chip-interconnect 572 .
- a protocol stack e.g., PCI Express
- the interface device 520 may include one or more mass storage device communication interfaces 568 , which may be implemented in the form of one or more SATA ports 569 and/or connectors, or other mass storage device communication interfaces, and which may be attached to a circuit board of the interface device 520 .
- the interface card 520 may contain two SATA ports to facilitate connection to two terminal systems, although it is noted that the interface device may alternatively contain a different number of mass storage device connectors so that a single interface device 520 may service a different number of terminal systems.
- the mass storage device connectors 568 there may be a corresponding mass storage device controller 570 embodied in the specialized processing unit 560 that is compatible with the particular mass storage communication interface (e.g. SATA).
- the one or more mass storage device controllers 570 may be connected to other logic units of the specialized processing unit 560 through the on-chip interconnect 572 , which may provide each of the mass storage device controllers 572 access to host system interface components (e.g. PCI-Express).
- the on-chip interconnect may be configured to a standard on-chip bus architecture configured to connect functional blocks on a specialized processing unit (e.g. an FPGA or ASIC).
- a specialized processing unit e.g. an FPGA or ASIC
- the components of the specialized processing unit may be interconnected using master-slave architecture, e.g., an Advanced Microcontroller Bus Architecture (AMBA), such as AXI4 or AXI4-Lite, or another suitable on-chip bus architecture.
- AMBA Advanced Microcontroller Bus Architecture
- AXI4 may be used for large data transport and AXI-Lite may be used for low performance connections or for configuration purposes.
- the on-chip interconnections of the specialized processing unit logic blocks may be configured according to a master-slave type configuration as shown in FIG. 5 .
- “M” and the corresponding bold lines represent represents a master connection
- “S” and the corresponding dotted lines represent a slave connection
- “Ctrl” represents control.
- the interface device 520 may include one or more memory units 574 which may be controlled by a memory controller 576 provided in the logic of the specialized processing unit 560 .
- the memory unit may support data transport between a terminal system connected through the mass storage interface 568 and a host system connected through the host hardware interface 562 , in accordance with data requests issued by the terminal system.
- the memory unit 574 may be a temporary RAM unit, such as DDR3 RAM, or another volatile memory unit configured to temporarily store data requested by read requests issued by the terminal system, in accordance with principles described herein.
- the memory controller 576 may be connected to the on chip bus architecture 572 to perform memory read/write operations according to signals received from other logical units of the specialized processing unit 560 .
- a mass storage host controller of a computing device may request the mass storage device controller 570 to perform read, write, and other operations.
- the mass storage device controller 570 may notify an interface device driver and storage process on the host system (not shown in FIG. 5 ) using an interrupt of the request, through the host hardware interface 562 , e.g. PCI-Express.
- the software components on the host system may then make decisions on handling the request.
- the storage application in the host system may retrieve this data from some storage source and store it in the interface device memory unit 574 across the host hardware interface 562 .
- the storage application on the host system may program the mass storage device controller 570 on the specialized processing unit 560 to complete the read request by reading from the interface device memory 574 .
- the mass storage host controller 424 may be a SATA controller.
- the mast storage host controller 424 on the streaming server 402 raises an interrupt.
- the mass storage host driver 426 on the streaming server 402 checks the state of the mass storage host controller 424 .
- the mass storage host controller 424 is programmed to write its data to the memory 574 (e.g., DDR3 memory) on the interface device 520 .
- the mass storage host controller 424 may have its own built-in DMA engine 567 for this purpose. Another interrupt is raised when the data has been written to the memory 574 .
- the mass storage host driver 426 then issues a DMA request using the DMA Engine 567 to copy from memory 574 to host system memory 440 .
- a buffer in the host system memory 440 may be directly shared with the storage process.
- the storage process is notified of the write request and it will finish the write transaction. It may write data to a disk, to a network storage device or to wherever it pleases to store the data.
- a memory 574 on the interface device 520 might not be needed for the read or write operations. It is possible for the mass host storage controller 424 to directly write to host system memory 440 .
- the memory access interface unit 566 could map PCI-Express to AXI4 and also AXI4 to PCI-Express. This feature would allow any AXI4 Master device to write to host system memory.
- the interface device may optionally include various other components which provide additional functionality for streaming applications run on a terminal system, such as cloud gaming streaming.
- the specialized processing unit 560 may also include one or more audio and/or video capture blocks 578 for capturing an A/V stream from one or more terminal systems.
- Each of the one or more A/V capture logic units 578 may be operatively coupled to a corresponding A/V receiver 530 , each of which may in turn be connected to a suitable A/V hardware interface 580 , such as an HDMI port or other A/V connection port as shown in FIG. 5 .
- A/V output from the terminal system may be connected to the A/V receiver 530 through the A/V interface 580 using a compatible A/V connector.
- the A/V capture unit 578 may communicate with the interface device driver and A/V process on the host system through the host hardware interface 562 , which may be connected to a host system bus (e.g., a peripheral bus), and the host system may then deliver the A/V stream to a client device over a network.
- a host system bus e.g., a peripheral bus
- the interface device 582 may also include one or more general purpose input/output (GPIO) blocks to support additional functionality.
- GPIO general purpose input/output
- each of the GPIO blocks may be connected to a corresponding one of the terminal system to provide additional functionality, such as power control of the terminal systems and other functionality.
- the specialized processing unit 560 may be implemented, e.g., as an FPGA, ASIC, or other integrated circuit having blocks dedicated to certain functionality, such as a mass storage device controller, memory controller, DMA engine, and the like, in accordance with various aspects of the present disclosure.
- one or more of these units may be provided as reusable units of logic or other chip design commonly referred to in the art as IP blocks or IP cores.
- FIG. 6 depicts an example flow chart for emulating a mass storage device for a terminal system 612 in accordance with various aspects of the present disclosure.
- an interface device 620 and host system 602 operatively coupled to each other are configured to emulate a mass storage device for the terminal system 612 .
- FIG. 6 depicts emulation for a read request issued by the terminal system for purposes of explanation, it is noted that implementations of the present disclosure may be configured to complete write requests and other mass storage data requests issued by the terminal system using the illustrated components.
- a mass storage device may be emulated for a terminal system 612 or any other computing system, which may have a central processing unit (CPU) 681 and a memory unit 682 configured to run various applications (not pictured).
- the terminal system 612 may make various read, write, and other data requests through a mass storage device connector using a mass storage device controller 624 . Ordinarily, these requests would be completed by a local mass storage device having a corresponding device controller.
- these data requests may be met by an interface device 620 in communication with a host computer system 602 , which may access some other storage source 699 to handle the various data requests.
- a read request 684 is issued by the mass storage host controller 624 of the terminal system 612 , which is received at a mass storage device controller 670 of the specialized processing unit 660 .
- the mass storage device controller 670 notify the storage process 632 embodied in the host system 602 using an interrupt of the request 684 , e.g. via a DMA engine 666 as shown in FIG. 6 .
- the storage process may be an application embodied in the system memory 640 of the host system 602 , which may be executed by a central processing unit 686 of the host system 602 to make decisions on handling the request 684 .
- the storage process may retrieve the requested data 687 from some other storage source 699 , such as a storage server.
- the storage process may store the retrieved data 689 in the interface device memory unit 674 , e.g., through an expansion interface (not pictured), such as PCI-e, or other communication interface with a peripheral bus of the host system 602 .
- an expansion interface such as PCI-e, or other communication interface with a peripheral bus of the host system 602 .
- the interface device 620 may be implemented as with the specialized processing unit 660 connected directly to the host system peripheral bus and provided as an integral part of the host system 602 .
- the specialized processing unit 660 e.g., FPGA, ASIC, or equivalent circuitry, could be placed directly on the motherboard of the streaming server 402 and connected to a peripheral bus on the streaming server.
- the specialized processing unit could be connected over PCI-Express.
- the storage process may program the mass storage device controller 670 to complete the request by accessing the stored data 689 in the interface memory and sending it to the terminal system 612 .
- the mass storage device controller 670 may raise an interrupt (which could be transferred using an interrupt functionality built into the DMA engine 666 ) to a storage driver in the operating system of the host system 602 . If the request is determined to be a read request 684 , the storage driver asks the storage process 632 to ‘read the data’ which is stored in the host memory 640 (which may be shared with the storage driver). Once all data has been read, the DMA engine 666 may be programmed to transfer the data 689 from the host memory 640 to the interface memory 674 .
- Implementations of the present disclosure may provide mass storage device for emulation for any computing device, which may not involve cloud computing or cloud gaming.
- implementations of the present disclosure may utilize any of a variety of mass storage communication protocols, including SATA, USB, IDE, RS232, Firewire, Thunderbolt, and other mass storage communication interface standards.
- implementations of the present disclosure may utilize any of a variety of audio and/or video standards, including HDMI, S-Video, component video, composite video, Display Port, VGA, DVI, and other A/V communication interface standards.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Bus Control (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
- This application is a division of co-pending U.S. patent application Ser. No. 14/135,213 filed Dec. 19, 2019, the entire contents of which are incorporated herein by reference.
- This application is related to commonly-assigned, co-pending U.S. patent application Ser. No. 14/135,374, to Roelof Roderick Colenbrander, entitled “VIDEO LATENCY REDUCTION”, (Attorney Docket No. SCEA13037US00), filed Dec. 19, 2013, now U.S. Pat. No. 9,497,358, the entire contents of which are herein incorporated by reference.
- Aspects present disclosure relates to storage virtualization. Further aspects of the present disclosure relate to storage virtualization for cloud computing applications designed for embedded platforms.
- With bandwidths and data transfer rates of telecommunication systems continuing to advance, many of today's computing needs are shifting towards network-based distributed computing systems, commonly referred to as “cloud computing.” Generally speaking, cloud computing involves offloading certain computing tasks to one or more remote computing resources and utilizing the remote computing resources to provide services to a local device. Cloud computing is often implemented as a client-server model, with the remote server providing desired computing capabilities to a local client device, avoiding the need for the local client device to perform certain computing tasks on its own. In many instances, the computing resources can be entirely or almost entirely offloaded to the server, with the client providing little or no more than a user interface for the cloud computing task, allowing potentially any internet connected device to serve as a client for a particular application.
- Cloud computing has been adopted in a wide variety of computing services, including remote data storage solutions, music and video streaming services, and a wide variety of other consumer and business solutions. In general, cloud computing provides several well-known benefits, including increased efficiencies through the use of shared resources, increased flexibility in accessing content without restriction to a particular device, lower up-front costs when hardware upgrades become available, and other advantages.
- One arena in which cloud computing has yet to achieve widespread adoption is in the ever popular field of video gaming. Video games, including personal computer (PC) games, home console games, handheld console games, and the like, remain a popular source of entertainment among consumers. With a large and ever growing collection of available video game titles, cloud gaming provides a particularly attractive solution to many video game demands. Ideally, within a cloud gaming framework a user would be able to instantly access any video game title from among a vast collection of remotely stored titles, without needing a physical copy of the game, without having to wait for the title to download, and without locally possessing the hardware system or resources needed to run the game. Unfortunately, implementing this type of service within a traditional cloud computing server design presents several technical challenges that have thus far prevented widespread adoption of cloud gaming for many video game platforms.
- One challenge is that many of today's video games are very fast paced and action packed, with advanced graphics that require a significant amount of computing resources to render. Particularly in a video streaming based server design, in which all of the game computations and graphics rendering computations are performed remotely, the game needs be able to perform all these tasks and deliver a compressed audio/video stream to the client device with minimal to no perceptible latency in response to control inputs. Otherwise, this may disrupt the timing for the player and fail to replicate the responsiveness of a traditional locally executed gaming session.
- Another challenge stems from the fact that there has traditionally been a distinction between PC games on the one hand, which are designed to run on personal computers, laptops, and other computing systems of a general purpose nature, and console games on the other hand, which are designed to run on specialized systems known as video game consoles. Video game consoles are typically designed as embedded platforms having unique computing architectures specially adapted for the video gaming environment. Using dedicated console hardware as a video gaming platform provides several benefits, particularly in the form of optimizing the hardware for the high computing resource demands of graphics rendering and gaming computations required to produce many of today's video games. As a result, while PC games have achieved some popularity, console games have traditionally dominated the video game market and may continue to do so in the future.
- However, adapting video game consoles and other embedded platforms to a cloud streaming service presents several challenges. Extensive modifications of the hardware or software architecture of the specialized platform may present compatibility issues with applications designed for the specialized platform. As a result, traditional storage server and storage virtualization techniques are not a viable solution for cloud based streaming of applications designed for many of these platforms.
- It is within this context that the present disclosure arises.
- An implementation of the present disclosure may include an interface device having a first communication interface, a second communication interface, and a specialized processing unit operatively coupled to said communication interfaces. The first communication interface is a mass storage interface. The second communication interface is an expansion interface. The specialized processing unit includes a mass storage device controller connected to the first communication interface and a direct memory access (DMA) engine connected to the second communication interface. The mass storage device controller is configured to receive a mass storage data request through the first communication interface. The DMA engine is configured to notify a host system of the mass storage data request through the second communication interface.
- Another implementation of the present disclosure may include a system having a central processing unit; a first memory unit operatively coupled to the central processing unit; a storage process embodied in the first memory unit and executable by the central processing unit (CPU); a first communication interface; and a specialized processing unit operatively coupled to the first communication interface. The first communication interface is a mass storage interface. The specialized processing unit has a mass storage device controller connected to the first communication interface and a memory access interface operatively coupled to the CPU. The mass storage device controller is configured to receive a mass storage data request from through the first communication interface. The memory access interface is configured to notify the storage process of the mass storage data request. The storage process is configured to process the data request by accessing a storage system.
- Another implementation may include a method comprising: a) receiving, from a first computing device, a mass storage data request at a mass storage device controller; b) notifying, with a memory access interface connected to the mass storage device controller, a storage process embodied in a second computing device of the data request; c) accessing, with the storage process of the second computing device, a storage system having data corresponding to the data request; d) storing, with the storage process of the second computing device, the data corresponding to the data request on a first memory unit; e) programming, with the storage process of the second computing device, the mass storage device controller to access the data from the first memory unit in order to complete the data request.
- The teachings of the present disclosure can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
-
FIG. 1 is a schematic diagram of an example streaming technique over a network. -
FIG. 2 is a schematic diagram of another example streaming technique over a network. -
FIG. 3 is a schematic diagram of an example host system having an interface card to provide storage virtualization for a terminal system. -
FIG. 4A-4B is a schematic diagram of an example computer architecture for a host system coupled to a terminal system.FIG. 4A is a schematic diagram of an example terminal system architecture.FIG. 4B is an example host system and interface card architecture. -
FIG. 5 is a schematic diagram of an example interface card design having a specialized processing unit. -
FIG. 6 is a schematic diagram of an example method of emulating a mass storage device. - Although the following detailed description contains many specific details for the purposes of illustration, anyone of ordinary skill in the art will appreciate that many variations and alterations to the following details are within the scope of the invention. Accordingly, the exemplary embodiments of the invention described below are set forth without any loss of generality to, and without imposing limitations upon, the claimed invention.
- Aspects of the present disclosure relate to systems and methods for virtualizing mass storage using an interface card, or other special hardware unit, operatively coupled to a host system. In various implementations, the interface device and host system may collectively emulate a mass storage device for another “terminal” computing system in a manner that is transparent to the terminal system. Moreover, in various implementations, a mass storage device may be emulated in a manner that is transparent to the terminal system, without requiring modifications to the terminal platform's hardware or software architecture.
- Those skilled in the art may be familiar with ‘virtual machine’ software, such as VMWare, VirtualBox or Parallels, which allow, e.g., a ‘virtual’ session of an older operating system (e.g., Windows XP) to run within a session of a newer operating system (e.g., Windows 7). Virtual machine software is often used to simulate physical hardware components, such as disk drives, network cards, video cards in software for compatibility reasons. According to aspects of the present disclosure specialized hardware and software can virtualize a mass storage device in situations where it is impractical to do so with software alone.
- To better illustrate various aspects of the present disclosure, a first illustrative example of a distributed
computing system 100 is depicted inFIG. 1 . The distributedsystem 100 depicted inFIG. 1 involves a plurality ofcomputing devices network 106, such as the internet. - In the example distributed system, a
streaming server 102 executes aprogram 108 in order to provide a real-time stream of the program output to the remotely connectedclient device 104 through thenetwork 106. In the illustrated schematic diagram ofFIG. 1 , theprogram 104 may be a video game program which processes control inputs received from theclient device 104 and sends a compressed audio and video stream to theclient device 104 in accordance with the execution of theprogram 108. A user located at the client side may interact with the program through a user interface of theclient device 104, e.g. by providing control inputs and receiving the audio and video game output at a display and/or speakers connected to theclient device 104. In the example ofFIG. 1 , the computational load for processing the inputs, rendering the video game graphics, and the like, may be entirely offloaded to thestreaming server 102 for remote execution. - In order to implement the cloud gaming using the
system 100 depicted inFIG. 1 , the streamingserver 102 may be configured to not only execute thegame program 108, but thestreaming server 102 may also implement a “streaming server process” 110 embodied in theserver 102, which may perform various functions to coordinate the program inputs/outputs for communication between theclient device 104 and thestreaming server 102 over thenetwork 106. By way of example, the streamingserver process 110 may be embodied in one or more applications which are run on thestreaming server 102 in coordination with thegame software 108. Remote execution of thegame 108 together with the streamingserver process 110 may be performed with minimal or no latency between the inputs and outputs at theclient device 104 so that the user at the client side perceives that theprogram 108 is being executed locally. Moreover, a wide collection of remotely stored programs may be accessible for execution. For example, in a cloud gaming application, the user would like to be able to select any game designed for the relevant video game platform, and the remote server would be able to load the game, execute it, and streams its output to the client device in accordance with inputs received from the user and with no perceptible latency between the received inputs and audio/video outputs. - In the example depicted in
FIG. 1 , this may be accomplished by executing both thestreaming server process 110 and thegame code 108 at the same computing device, e.g., the streamingserver 102. The streaming server may access a selected program from potentially any storage device, such as a locally connected mass storage device, a storage server, a network, and the like, through a suitable connection. For cloud gaming, and other cloud computing implementations, this may be readily implemented if thesoftware application 108 that is executed at theserver 102 for theclient 104 is designed to run personal computer (PC) architecture or other computer architecture that is similar to thestreamliner server 102. By way of example, and not by way of limitation, for a PC cloud gaming implementation, a readily available x86 based server may be used to not only implement thestreaming server process 110, but also execute thePC game program 108 once it is accessed by theserver 102. - However, the
example technique 100 depicted inFIG. 1 may not be suitable for certain applications in which theprogram 108 is designed to be executed on embedded platforms and other specialized architectures. For example, if the desired program is a video game designed for a dedicated console platform, the game software may not be able to run on the server architecture without some type of emulator. Unfortunately, in a cloud computing environment in which minimizing latency is a chief concern, a software emulator executed on a streaming server may be an undesirable solution, particularly in graphics intensive applications where interpretation of the code by the emulator at run-time would introduce a perceptible delay. Moreover, in many cases it would be impractical to build a dedicated server for each unique architecture for which a cloud service is desired. In other situations, an emulator could be a desirable solution, but a suitable emulator might not be available. - In order to address these challenges, it may be desirable to utilize an additional computing device at the server side for execution of the program, whereby the additional computing device executes the desired program while the streaming server coupled thereto performs its usual functions for interfacing with a client device. An illustrative example of a distributed
system 200 which utilizes such a technique is depicted inFIG. 2 , in which a “terminal system” 212 is connected to astreaming server 202, and the terminal system executes a desiredapplication 208. The streaming server can provide resources for network storage and video compression if the terminal system does not otherwise have sufficient free resources for these functions. - In certain implementations, the
terminal system 212 may be an embedded system or other computing system having a specialized architecture, such as a video game console, while thestreaming server 202 may be based on any computing architecture, such as an x86 instruction set architecture, which is adapted to provide streaming services and does not necessarily have to have a similar architecture as theterminal system 212. The streamingserver 202 may be configured to execute astreaming server process 202 and provide the usual cloud services for theterminal system program 208, and the computing devices at the server side, e.g. the streamingserver 202 and theterminal system 212, may collectively operate to provide video game streaming services for aclient device 204. - The configuration in the simplified schematic depicted in
FIG. 2 may provide a practical and flexible server solution that can be readily adapted to a variety of different software platforms designed for a variety of different computing architectures. For example, potentially anystreaming server 202 could be adapted to stream software applications designed for a variety of different computing architectures by locally connecting a terminal system which runs the software. - However, executing the desired software on a
terminal system 212 at the server side may present certain challenges within a cloud computing framework. For example, theterminal system 212 may be able to execute any selected program for a current streaming session from among a variety of different programs, similar to the process described above with respect to the example setup depicted inFIG. 1 . Likewise, any other data reads/writes to a storage device required by theprogram 208 running on theterminal system 212 could be freed from constraints of local storage by the terminal system. Storage data requests are typically accomplished through a local mass storage connection in theterminal system 212, such as a serial Advanced Technology Attachment (SATA) connection or other mass storage interface. It would be desirable to provide a virtualized storage solution for the terminal system without having to make modifications to its hardware architecture or consuming additional computing resources with the storage virtualization process. - To better appreciate the challenge in the context of a cloud gaming environment, the following example illustrates how the server set up in
FIG. 2 might be utilized in a particular cloud gaming implementation. Specifically, a user at theclient device 204 may be assigned to a “cloud terminal system” 212 for a gaming session. At the time the user starts playing, thegame 208 the user wants to play should be available on thecloud terminal system 212. Similarly, once the gaming session is over and the user is done, theterminal system 212 should be restored to a clean state for a next session by a different user, which may involve a different game. - Unfortunately, virtualizing game storage in this manner using storage virtualization software within the
terminal system 212 would consume valuable computational resources (e.g. CPU and memory) and may produce compatibility issues with the game. Moreover, in an application involving a heavy computational load, such as many modern video games, which incorporate advanced graphics and other resources intensive tasks, consuming additional resources from the terminal system for storage virtualization may not be a viable solution. - An illustrative example of a storage virtualization technique according to various implementations of the present disclosure is depicted in in
FIG. 3 . In the example virtualization technique ofFIG. 3 , a mass storage device is emulated using a “host system” having a specialized piece of hardware, so that a mass storage device may be emulated for a terminal system connected thereto. The example technique ofFIG. 3 may be implemented in a cloud streaming application similar to that depicted inFIG. 2 , in which the terminal system may be a specialized system running the desired application, and the host system for the mass storage device emulation is a streaming server. However, it is understood that storage virtualization in accordance with principles herein may be implemented in other contexts, including cloud computing applications beyond game streaming, and local implementations where storage virtualization for a computing device is desired, particularly where it is desired without making modifications to the computing device. - Turning to the example of
FIG. 3 in more detail, virtualized storage is provided for theterminal system 312 using aspecialized interface device 320 coupled to ahost system 302 for the interface device, which is in this case the streaming server. Theinterface device 320 together with astorage process 322 embodied in thehost system 302 may perform various mass storage device data requests received from theterminal system 312. - In the example depicted in
FIG. 3 , theinterface device 320 may be a piece of hardware which looks like an actual mass storage device to the terminal system, but under the hood its data may come from a storage server (not pictured). A normal mass storage device typically uses a SATA connection or other standard mass storage interface. In order emulate the mass storage device and receive the data requests, theinterface device 320 ofFIG. 3 may include a similar SATA connection or other mass storage communication interface compatible with the mass storage communication interface of terminal system, along with additional components such as a specialized processing unit, a memory, and other components. - In various implementations, in order to facilitate easy integration of the storage virtualization functionality into computing system, such as a streaming server or other “host” system, the
interface device 320 may be implemented as an expansion card, such as a PCI-Express add-on card, which may be connected to thehost system 302 through an expansion interface of the host system. During operation, the interface card may receive disk read and/or write requests from the terminal system through its mass storage connection (e.g. through a SATA port). These data access requests may be ultimately processed by astorage application 322 on thehost system 302, and the storage application may access data from a file, storage server, or something else. - Although not necessary for the storage virtualization functionality, the
interface device 320 may also optionally include additional components to provide other functionality that may be especially useful in a cloud streaming context. For example, in order to support streaming functionality in the host system, theinterface device 320 may optionally include one or more additional interfaces for audio and/or video data transfer, as well as corresponding functionality to support audio/video (A/V) streaming via a streaming process of thehost system 302 in order to support cloud gaming or other cloud computing implementations. The optional A/V interface of theinterface device 320 may be compatible with theterminal system 312 and may configured according to any of a variety of A/V standards, such as HDMI, composite video, component video, S-video, or another A/V communication interface. -
FIGS. 4A and 4B provide a more detailed overview of an illustrative hardware/software architecture of an interface device and certain computing devices according to various implementations of the present disclosure.FIG. 4A illustrates a computing architecture for an example terminal system according to various aspects of the present disclosure.FIG. 4B illustrates a computing architecture for an example host system having an example interface device according to various implementations of the present disclosure. In some implementations, the terminal system may be an existing embedded system, video game console, or other computing device having a specialized architecture. In some implementations, the host system may be a streaming server configured to stream an application running on the terminal system to a client device, e.g. as depicted inFIG. 2 . - The
example terminal system 412 may include a mass storage host controller 424 (also sometimes known as a host adapter or host bus adapter), which may be, e.g., a SATA host controller (AHCI), USB host controller, or a host controller for another mass storage communication interface standard. Theterminal system 412 may also include a corresponding massstorage device driver 426 that is compatible with the mass storagedevice host controller 424 to facilitate communication via the storage device interface. In order to connect to a mass storage device, normally thehost controller 424 would be connected to the mass storage device using a corresponding connector (such as a SATA cable, USB cable, or other connector depending on the mass storage device interface of the terminal system). Specifically, thehost controller 424 would be connected to a mass storage device controller (also sometimes known as a “disk controller”, although the mass storage device may be a solid state drive or other storage device that does not necessarily use a disk) of the particular mass storage device to which it is connected. In the example system depicted inFIGS. 4A-4B , thehost controller 424 is instead connected to theinterface device 420, which together with itshost system 402 emulates a mass storage device for theterminal system 412. - The
interface device 420 may include a communication interface for mass storage device connections that is compatible with the storage communication interface used by theterminal system 412. The communication interface of the interface device may include one or moremass storage ports 414, such as one or more SATA ports, USB ports, or other compatible mass storage interface hardware. Theinterface device 402 may include a specialized processing unit operatively coupled to the mass storage hardware interface, with the specialized processingunit having logic 428 that is dedicated to performing functions associated with mass storage device emulation, and optionally other functions, for signals received through the storage connector from theterminal system 402. Thelogic 428 may also support communication with thehost system 402 through an additional communication interface, which may communicate with a peripheral bus of thehost system 402 in order to interface with a storage process embodied in the host system. By way of example, and not by way of limitation, theinterface device 420 may be an add-on card which communicates with thehost system 402 process bus through an expansion interface, such as peripheral component interconnect (PCI),), PCI-eXtended (PCI-X), PCI-Express (PCIe), or another interface which facilitates communication with thehost system 402 e.g., via a peripheral bus. The host system may include aninterface device driver 426 to support the exchange of signals via theinterface device 420. - In certain implementations, the specialized processing unit may be a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another specialized processing unit having dedicated units of logic configured in accordance with principles described herein. The
logic units 428 of the specialized processing unit may also include dedicated logic to support various functions for cloud streaming in addition to storage virtualization, such as audio/video capture of the output from anapplication 408 running on theterminal system 402, which may facilitate streaming of the A/V output over the network by thehost system 402 in implementations involving cloud gaming. Theinterface card 402 may include an A/V communication interface, such as one or more HDMI ports or other A/V ports, as well as a compatible A/V receiver 430 to receive the A/V output of the application running on the terminal system through a corresponding A/V connector. - In the example depicted in
FIGS. 4A-4B , a mass storage device controller embodied in thelogic 428 of the specialized processing unit is controlled by theinterface device driver 426 in thehost system 402, and astorage process 432 embodied in thehost system 402, e.g. a software application running on acentral processing unit 404, may provide data transport services for theinterface device driver 426. For example if theterminal system 412 requests to read data from its disk drive or other mass storage device connected to via the mass storage connector, this request may make it through the massstorage host controller 424, the mass storage device controller contained in thelogic 428, theinterface device driver 426, to thestorage process 432 embodied in the host system. Thestorage process 432 may then retrieve the data, which it could get from a variety of sources. For example, thestorage process 432 may retrieve the data from a disk drive or other mass storage device locally connected to the host machine, or it may retrieve it from a memory drive or a storage server over a network. Whichever method the storage process uses is transparent to theterminal system 402. - In certain implementations, the
host system 402 may optionally be a streaming server adapted to transmit over a network a stream of output from theapplication 408 running on theterminal system 412. For example, thehost system 402 may include an A/V process 434, which may be an application running on thehost system 402. The A/V capture process may coordinate withdedicated logic 428 in the specialized processing unit for capturing an A/V stream sent through an A/V connector connected to theinterface card 420. The streamingserver 402 may include an Ethernet adapter orother network adapter 436, and a corresponding Ethernet driver orother network driver 438 for the operating system of thehost 402, with acompatible network library 439 providing protocol support for the network communication. The host system may also includesystem memory 440, controlled by a corresponding memory driver 442 (e.g. tmpfs) and supported by afile system library 444. A streamingserver process 446 may be run on thehost system 402 to perform functions associated with provide a real time stream to a client device connected over a network (not pictured inFIGS. 4A-4B ). - In some situations, data storage may be implemented using a combination of a remote storage server 448 (shown in phantom in
FIG. 4A ), thememory 440 and thememory driver 442. By way of example, and not by way of limitation, in some implementations data may only be read from the storage server 448 and written to thememory 440 by thememory driver 442. - The
terminal system 412 may include various other components to support theapplication 408, which may be, e.g., video game software designed for an existing embedded platform. Theterminal system 412 may include afile system layer 427 to access storage, as well various components to support graphics rendering for theapplication 408. In addition to a central processing unit (CPU), theterminal system 412 may include a graphics processing unit (GPU) 450, which may be operated by agraphics driver 452 and supported by agraphics library 454. An A/V transmitter 456, such HDMI transmitter, may be included to transmit the application audio and/or video output to the host interface device in the host system through a compatible A/V connector. - Turning now to
FIG. 5 , a schematic diagram of anexample interface device 520 that may be implemented on theinterface card 420, some components on it, and internals of an examplespecialized processing unit 560 is depicted in accordance with various implementations of the present disclosure. By way of example, and not by way of limitation, theinterface device 520 may be configured as an add-on card having components attached to a printed circuit board (PCB), and theinterface card 520 may interface with a peripheral bus of a host system through ahost hardware interface 562, such as a peripheral expansion port or other expansion communication interface which allows communication the peripheral bus of a host system when connected. - The example specialized processing
unit 560 may include various blocks of logic dedicated to specialized functionality in accordance with various aspects of the present disclosure. The specialized processing unit may be implemented, e.g., as an FPGA, ASIC, or similar specialized processing unit. Thespecialized processing unit 560 may include ahost interface block 564 which implements part of a protocol stack for the communication interface between theinterface card 520 and a peripheral bus of a host system (not pictured inFIG. 5 ) for theinterface device 560. - Communication busses like PCI-Express can be thought of as a protocol stack having several layers. Different communication protocols have different layers. Typically there is an ‘application layer’ at the top, then some transport related layers in the middle and some physical layer at the bottom. The
host interface block 564 need not implement all layers of such a protocol stack. Instead, the host interface block may take care of the physical layer, which is responsible for putting digital information on a communication link, e.g., through electrical or optical signals. The host interface block may also be responsible for portions or possibly all of the ‘transport layers’ of the protocol stack, but need not be responsible for the application layer. - By way of example, and not by way of limitation, the
host interface block 564 may be a hard PCIe block for communication through a PCI-Express connection, and which embeds the protocol stack for a PCIe interface or other interface for accessing a local bus of the host system. Thehost interface block 564 may be integrated into a memoryaccess interface unit 566 which, together with other logic units of thespecialized processing unit 560, may directly access system memory of a host system through thehost hardware interface 562, e.g., using an interrupt of the request to the host system. - In some implementations, the
memory access interface 566 may include components that provide memory access and interrupt functionality. In particular, thehost interface block 564 may be configured to provide an connection between an on-chip-interconnect 572 and thehost hardware interface 562 in a way that makes any on-chip device accessible from the host system using memory mapped Input/Output (I/O). This functionality would allow the host system to program any device connected to the on-chip-interconnect 572, such as themass storage controller 570,memory controller 576, orGPIO 582. - The
memory access interface 566 may also include an interruptconnection 565 that allows any connected device, e.g., themass storage controller 570, to generate an interrupt upon an event (e.g., a mass storage read request) arrival). It is desirable for the memory access interface to provide this functionality if there can be only one device interfacing with the hosthardware interface hardware 562. - The
memory access interface 566 may also (optionally) include a direct memory access (DMA)engine 567. As used herein, and as is generally understood by those skilled in the art, the term direct memory access (DMA) refers to a feature that allows certain hardware subsystems within a computer to access system memory independently of the computer's central processing unit (CPU). TheDMA engine 567 may implement data move operations between thehost interface block 564 and thehost hardware interface 562. In some implementations, the memoryaccess interface unit 566 may implement portions of a protocol stack (e.g., PCI Express) not provided by thehost interface block 564, such as connecting thehost interface block 564 to the on-chip-interconnect 572. - For purposes of functionality for mass storage device virtualization, the
interface device 520 may include one or more mass storage device communication interfaces 568, which may be implemented in the form of one ormore SATA ports 569 and/or connectors, or other mass storage device communication interfaces, and which may be attached to a circuit board of theinterface device 520. By way of example, and not by way of limitation, theinterface card 520 may contain two SATA ports to facilitate connection to two terminal systems, although it is noted that the interface device may alternatively contain a different number of mass storage device connectors so that asingle interface device 520 may service a different number of terminal systems. For each of the massstorage device connectors 568, there may be a corresponding massstorage device controller 570 embodied in thespecialized processing unit 560 that is compatible with the particular mass storage communication interface (e.g. SATA). - The one or more mass
storage device controllers 570 may be connected to other logic units of thespecialized processing unit 560 through the on-chip interconnect 572, which may provide each of the massstorage device controllers 572 access to host system interface components (e.g. PCI-Express). The on-chip interconnect may be configured to a standard on-chip bus architecture configured to connect functional blocks on a specialized processing unit (e.g. an FPGA or ASIC). For example, if thespecialized processing unit 560 is an FPGA, the components of the specialized processing unit may be interconnected using master-slave architecture, e.g., an Advanced Microcontroller Bus Architecture (AMBA), such as AXI4 or AXI4-Lite, or another suitable on-chip bus architecture. AXI4 may be used for large data transport and AXI-Lite may be used for low performance connections or for configuration purposes. The on-chip interconnections of the specialized processing unit logic blocks may be configured according to a master-slave type configuration as shown inFIG. 5 . In the illustrated schematic, “M” and the corresponding bold lines represent represents a master connection, “S” and the corresponding dotted lines represent a slave connection, and “Ctrl” represents control. - The
interface device 520 may include one ormore memory units 574 which may be controlled by amemory controller 576 provided in the logic of thespecialized processing unit 560. The memory unit may support data transport between a terminal system connected through themass storage interface 568 and a host system connected through thehost hardware interface 562, in accordance with data requests issued by the terminal system. For example, thememory unit 574 may be a temporary RAM unit, such as DDR3 RAM, or another volatile memory unit configured to temporarily store data requested by read requests issued by the terminal system, in accordance with principles described herein. Thememory controller 576 may be connected to the onchip bus architecture 572 to perform memory read/write operations according to signals received from other logical units of thespecialized processing unit 560. - During operation, a mass storage host controller of a computing device (not pictured in
FIG. 5 ) connected through thestorage interface 560 may request the massstorage device controller 570 to perform read, write, and other operations. Upon receiving such a request, the massstorage device controller 570 may notify an interface device driver and storage process on the host system (not shown inFIG. 5 ) using an interrupt of the request, through thehost hardware interface 562, e.g. PCI-Express. The software components on the host system may then make decisions on handling the request. - For example, in the case of a read request from the terminal system, the storage application in the host system (not pictured) may retrieve this data from some storage source and store it in the interface
device memory unit 574 across thehost hardware interface 562. When done, the storage application on the host system may program the massstorage device controller 570 on thespecialized processing unit 560 to complete the read request by reading from theinterface device memory 574. By way of example, and not by way of limitation, suppose the massstorage host controller 424 may be a SATA controller. For a SATA transaction (read/write and there are others), the maststorage host controller 424 on thestreaming server 402 raises an interrupt. The massstorage host driver 426 on thestreaming server 402 checks the state of the massstorage host controller 424. If the request is determined to be a ‘write request’, then the massstorage host controller 424 is programmed to write its data to the memory 574 (e.g., DDR3 memory) on theinterface device 520. The massstorage host controller 424 may have its own built-inDMA engine 567 for this purpose. Another interrupt is raised when the data has been written to thememory 574. The massstorage host driver 426 then issues a DMA request using theDMA Engine 567 to copy frommemory 574 tohost system memory 440. - A buffer in the
host system memory 440 may be directly shared with the storage process. When the DMA transaction to hostsystem memory 440 is done, the storage process is notified of the write request and it will finish the write transaction. It may write data to a disk, to a network storage device or to wherever it pleases to store the data. - It is noted that a
memory 574 on theinterface device 520 might not be needed for the read or write operations. It is possible for the masshost storage controller 424 to directly write tohost system memory 440. For example, the memoryaccess interface unit 566 could map PCI-Express to AXI4 and also AXI4 to PCI-Express. This feature would allow any AXI4 Master device to write to host system memory. - The interface device may optionally include various other components which provide additional functionality for streaming applications run on a terminal system, such as cloud gaming streaming. For example, the
specialized processing unit 560 may also include one or more audio and/or video capture blocks 578 for capturing an A/V stream from one or more terminal systems. Each of the one or more A/Vcapture logic units 578 may be operatively coupled to a corresponding A/V receiver 530, each of which may in turn be connected to a suitable A/V hardware interface 580, such as an HDMI port or other A/V connection port as shown inFIG. 5 . A/V output from the terminal system may be connected to the A/V receiver 530 through the A/V interface 580 using a compatible A/V connector. The A/V capture unit 578 may communicate with the interface device driver and A/V process on the host system through thehost hardware interface 562, which may be connected to a host system bus (e.g., a peripheral bus), and the host system may then deliver the A/V stream to a client device over a network. - The
interface device 582 may also include one or more general purpose input/output (GPIO) blocks to support additional functionality. By way of example, and not by way of limitation, each of the GPIO blocks may be connected to a corresponding one of the terminal system to provide additional functionality, such as power control of the terminal systems and other functionality. - As noted above, the
specialized processing unit 560 may be implemented, e.g., as an FPGA, ASIC, or other integrated circuit having blocks dedicated to certain functionality, such as a mass storage device controller, memory controller, DMA engine, and the like, in accordance with various aspects of the present disclosure. In certain implementations of the present disclosure, one or more of these units may be provided as reusable units of logic or other chip design commonly referred to in the art as IP blocks or IP cores. -
FIG. 6 depicts an example flow chart for emulating a mass storage device for aterminal system 612 in accordance with various aspects of the present disclosure. In the example depicted inFIG. 6 , aninterface device 620 andhost system 602 operatively coupled to each other are configured to emulate a mass storage device for theterminal system 612. While the illustrative example ofFIG. 6 depicts emulation for a read request issued by the terminal system for purposes of explanation, it is noted that implementations of the present disclosure may be configured to complete write requests and other mass storage data requests issued by the terminal system using the illustrated components. - As shown in
FIG. 6 , a mass storage device may be emulated for aterminal system 612 or any other computing system, which may have a central processing unit (CPU) 681 and amemory unit 682 configured to run various applications (not pictured). Theterminal system 612 may make various read, write, and other data requests through a mass storage device connector using a massstorage device controller 624. Ordinarily, these requests would be completed by a local mass storage device having a corresponding device controller. In the example ofFIG. 6 , these data requests may be met by aninterface device 620 in communication with ahost computer system 602, which may access someother storage source 699 to handle the various data requests. - In the illustration of
FIG. 6 , aread request 684 is issued by the massstorage host controller 624 of theterminal system 612, which is received at a massstorage device controller 670 of thespecialized processing unit 660. The massstorage device controller 670 notify thestorage process 632 embodied in thehost system 602 using an interrupt of therequest 684, e.g. via aDMA engine 666 as shown inFIG. 6 . The storage process may be an application embodied in thesystem memory 640 of thehost system 602, which may be executed by acentral processing unit 686 of thehost system 602 to make decisions on handling therequest 684. - As shown in
FIG. 6 , the storage process may retrieve the requesteddata 687 from someother storage source 699, such as a storage server. The storage process may store the retrieveddata 689 in the interfacedevice memory unit 674, e.g., through an expansion interface (not pictured), such as PCI-e, or other communication interface with a peripheral bus of thehost system 602. It is noted that, instead of being implemented as an add-on card or other peripheral component which communicates with the peripheral bus through an expansion interface, in some implementations theinterface device 620 may be implemented as with thespecialized processing unit 660 connected directly to the host system peripheral bus and provided as an integral part of thehost system 602. - In alternative implementations, the
specialized processing unit 660, e.g., FPGA, ASIC, or equivalent circuitry, could be placed directly on the motherboard of thestreaming server 402 and connected to a peripheral bus on the streaming server. The specialized processing unit could be connected over PCI-Express. - Once the data retrieved by the storage process is stored in the
interface memory 674, the storage process may program the massstorage device controller 670 to complete the request by accessing the storeddata 689 in the interface memory and sending it to theterminal system 612. - During a read operation the mass
storage device controller 670 may raise an interrupt (which could be transferred using an interrupt functionality built into the DMA engine 666) to a storage driver in the operating system of thehost system 602. If the request is determined to be a readrequest 684, the storage driver asks thestorage process 632 to ‘read the data’ which is stored in the host memory 640 (which may be shared with the storage driver). Once all data has been read, theDMA engine 666 may be programmed to transfer thedata 689 from thehost memory 640 to theinterface memory 674. - It is noted that aspects of the present disclosure have been described with reference to cloud gaming as a particular example in which a need for mass storage virtualization in accordance with various implementations of the present disclosure may be desirable, but implementations of the present disclosure are not so limited. Implementations of the present disclosure may provide mass storage device for emulation for any computing device, which may not involve cloud computing or cloud gaming.
- It is noted that implementations of the present disclosure may utilize any of a variety of mass storage communication protocols, including SATA, USB, IDE, RS232, Firewire, Thunderbolt, and other mass storage communication interface standards.
- It is noted that implementations of the present disclosure may utilize any of a variety of audio and/or video standards, including HDMI, S-Video, component video, composite video, Display Port, VGA, DVI, and other A/V communication interface standards.
- While the above is a complete description of the preferred embodiment of the present invention, it is possible to use various alternatives, modifications and equivalents. Therefore, the scope of the present invention should be determined not with reference to the above description but should, instead, be determined with reference to the appended claims, along with their full scope of equivalents. Any feature described herein, whether preferred or not, may be combined with any other feature described herein, whether preferred or not. In the claims that follow, the indefinite article “a”, or “an” refers to a quantity of one or more of the item following the article, except where expressly stated otherwise. The appended claims are not to be interpreted as including means-plus-function limitations, unless such a limitation is explicitly recited in a given claim using the phrase “means for.”
Claims (11)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/437,854 US20190294382A1 (en) | 2013-12-19 | 2019-06-11 | Mass storage virtualization for cloud computing |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/135,213 US10353633B2 (en) | 2013-12-19 | 2013-12-19 | Mass storage virtualization for cloud computing |
US16/437,854 US20190294382A1 (en) | 2013-12-19 | 2019-06-11 | Mass storage virtualization for cloud computing |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/135,213 Division US10353633B2 (en) | 2013-12-19 | 2013-12-19 | Mass storage virtualization for cloud computing |
Publications (1)
Publication Number | Publication Date |
---|---|
US20190294382A1 true US20190294382A1 (en) | 2019-09-26 |
Family
ID=53400073
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/135,213 Active 2034-06-28 US10353633B2 (en) | 2013-12-19 | 2013-12-19 | Mass storage virtualization for cloud computing |
US16/437,854 Abandoned US20190294382A1 (en) | 2013-12-19 | 2019-06-11 | Mass storage virtualization for cloud computing |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/135,213 Active 2034-06-28 US10353633B2 (en) | 2013-12-19 | 2013-12-19 | Mass storage virtualization for cloud computing |
Country Status (9)
Country | Link |
---|---|
US (2) | US10353633B2 (en) |
EP (2) | EP3690664A1 (en) |
JP (1) | JP2016534463A (en) |
KR (1) | KR101788724B1 (en) |
CN (2) | CN110888599B (en) |
BR (1) | BR112016004712B1 (en) |
RU (1) | RU2649771C2 (en) |
TW (1) | TWI531958B (en) |
WO (1) | WO2015094474A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111372115A (en) * | 2020-03-03 | 2020-07-03 | 北京奇艺世纪科技有限公司 | Application program access method and device and communication system |
US11287973B2 (en) | 2016-02-02 | 2022-03-29 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9086995B2 (en) | 2012-10-04 | 2015-07-21 | Sony Computer Entertainment America, LLC | Method and apparatus for improving decreasing presentation latency |
US9497358B2 (en) | 2013-12-19 | 2016-11-15 | Sony Interactive Entertainment America Llc | Video latency reduction |
US9332216B2 (en) | 2014-03-12 | 2016-05-03 | Sony Computer Entertainment America, LLC | Video frame rate compensation through adjustment of vertical blanking |
US9795879B2 (en) * | 2014-12-31 | 2017-10-24 | Sony Interactive Entertainment America Llc | Game state save, transfer and resume for cloud gaming |
US10554713B2 (en) * | 2015-06-19 | 2020-02-04 | Microsoft Technology Licensing, Llc | Low latency application streaming using temporal frame transformation |
US10744407B2 (en) * | 2015-09-08 | 2020-08-18 | Sony Interactive Entertainment LLC | Dynamic network storage for cloud console server |
KR102335715B1 (en) * | 2015-12-04 | 2021-12-06 | 한국전자기술연구원 | Embedded hardware development and verification framework based on virtualization |
US10423331B2 (en) * | 2016-02-02 | 2019-09-24 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
US11816043B2 (en) * | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103234A1 (en) * | 2002-11-21 | 2004-05-27 | Aviad Zer | Combination non-volatile memory and input-output card with direct memory access |
US20080083828A1 (en) * | 2006-10-10 | 2008-04-10 | Le Trung V | Memory card with host interface and including internal interface for receiving micro-size memory cards |
US20080162788A1 (en) * | 2006-12-27 | 2008-07-03 | Bum-Seok Yu | Memory Controller with Automatic Command Processing Unit and Memory System Including the Same |
US20090106470A1 (en) * | 2007-10-23 | 2009-04-23 | Brocade Communications Systems, Inc. | Host bus adapter with multiple hosts |
US20100280817A1 (en) * | 2009-04-30 | 2010-11-04 | Spansion Llc | Direct pointer access and xip redirector for emulation of memory-mapped devices |
US20110271067A1 (en) * | 2010-05-03 | 2011-11-03 | Pixel8 Networks, Inc. | Efficient Cloud Network Attached Storage |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5034817A (en) | 1990-02-28 | 1991-07-23 | The United States Of America As Represented By The Secretary Of The Navy | Reconfigurable video line digitizer and method for storing predetermined lines of a composite video signal |
US5502462A (en) | 1993-11-01 | 1996-03-26 | The 3Do Company | Display list management mechanism for real-time control of by-the-line modifiable video display system |
US5969828A (en) | 1997-03-12 | 1999-10-19 | Minolta Co., Ltd. | Digital copying machine, image reading device used in said digital copying machine, and image processing method used in these devices |
US20020010150A1 (en) * | 2000-04-28 | 2002-01-24 | Cortese Stephanie M. | Homostatic compositions of polyacids and polyalkylene oxides and methods for their use |
AR031640A1 (en) * | 2000-12-08 | 2003-09-24 | Applied Research Systems | ISOTHERMAL AMPLIFICATION OF NUCLEIC ACIDS IN A SOLID SUPPORT |
US6874060B2 (en) * | 2001-12-07 | 2005-03-29 | Dell Products L.P. | Distributed computer system including a virtual disk subsystem and method for providing a virtual local drive |
US20030110300A1 (en) * | 2001-12-12 | 2003-06-12 | Micro-Star Int'l Co., Ltd. | Virtual storage interface device |
CN1243313C (en) * | 2001-12-27 | 2006-02-22 | 中国科学院计算技术研究所 | Data flow processing board with large volume memory |
US7711847B2 (en) * | 2002-04-26 | 2010-05-04 | Sony Computer Entertainment America Inc. | Managing users in a multi-user network game environment |
US7505890B2 (en) | 2003-01-15 | 2009-03-17 | Cox Communications, Inc. | Hard disk drive emulator |
US7106352B2 (en) | 2003-03-03 | 2006-09-12 | Sun Microsystems, Inc. | Automatic gain control, brightness compression, and super-intensity samples |
US7287099B1 (en) * | 2003-03-18 | 2007-10-23 | Unisys Corporation | System for support of remote console by emulation of local console with multipath data flow structure |
US7565408B2 (en) * | 2003-03-20 | 2009-07-21 | Dell Products L.P. | Information handling system including a local real device and a remote virtual device sharing a common channel |
JP4179556B2 (en) * | 2004-06-25 | 2008-11-12 | 株式会社日立情報システムズ | Computer centralized operation center system and data management control method and program thereof |
US20060061517A1 (en) | 2004-09-23 | 2006-03-23 | Jolly Paul A | Delivering pixels received at a lower data transfer rate over an interface that operates at a higher data transfer rate |
JP4390694B2 (en) * | 2004-12-24 | 2009-12-24 | 富士通株式会社 | DMA circuit and disk array device using the same |
US20100017189A1 (en) * | 2006-01-04 | 2010-01-21 | Andriy Naydon | Transparent Intellectual Network Storage Device |
WO2007119236A2 (en) | 2006-04-13 | 2007-10-25 | Yosef Mizrachi | Method and apparatus for providing gaming services and for handling video content |
US8179388B2 (en) | 2006-12-15 | 2012-05-15 | Nvidia Corporation | System, method and computer program product for adjusting a refresh rate of a display for power savings |
US8838856B2 (en) * | 2007-02-16 | 2014-09-16 | Emulex Corporation | Virtual universal asynchronous receiver transmitter for server systems |
US20090135916A1 (en) | 2007-11-26 | 2009-05-28 | Mediatek Inc. | Image processing apparatus and method |
WO2009079560A1 (en) | 2007-12-17 | 2009-06-25 | Stein Gausereide | Real time video inclusion system |
JP5198584B2 (en) * | 2008-02-26 | 2013-05-15 | ヴイエムウェア インク | Enhanced server virtual machine configuration for server-based clients |
US8499119B2 (en) * | 2008-04-07 | 2013-07-30 | Qualcomm Incorporated | Method and apparatus for delivering and caching multiple pieces of content |
US8225019B2 (en) * | 2008-09-22 | 2012-07-17 | Micron Technology, Inc. | SATA mass storage device emulation on a PCIe interface |
JP4581012B2 (en) | 2008-12-15 | 2010-11-17 | 株式会社東芝 | Electronic device and display control method |
US8918488B2 (en) * | 2009-02-04 | 2014-12-23 | Citrix Systems, Inc. | Methods and systems for automated management of virtual resources in a cloud computing environment |
US8635387B2 (en) * | 2009-10-09 | 2014-01-21 | Emulex Design & Manufacturing Corporation | Enhanced I/O performance in a multi-processor system via interrupt affinity schemes |
DE102009058795A1 (en) | 2009-12-18 | 2011-06-22 | Epcos Ag, 81669 | Piezoelectric ceramic material, method for producing the piezoelectric ceramic material, multilayer piezoelectric component, and method of manufacturing the piezoelectric multilayer component |
US8669993B2 (en) | 2010-01-11 | 2014-03-11 | Apple Inc. | User interface unit for fetching only active regions of a frame |
JP5569053B2 (en) * | 2010-03-11 | 2014-08-13 | ソニー株式会社 | Content distribution apparatus, content distribution method, and transmission server |
CN101937261A (en) * | 2010-05-18 | 2011-01-05 | 上海同悦信息科技有限公司 | Cloud computing terminal based on universal serial bus |
EP2641363B1 (en) * | 2010-11-16 | 2018-05-23 | Telefonaktiebolaget LM Ericsson (publ) | Message targeting platform |
KR101312268B1 (en) | 2010-12-24 | 2013-09-25 | 주식회사 케이티 | Method, cloud computing server, and cloud computing system for providing game service in cloud computing environment |
PL2472879T3 (en) | 2010-12-31 | 2014-03-31 | Advanced Digital Broadcast Sa | A method and a system for determining a video frame type |
US20120306926A1 (en) | 2011-06-06 | 2012-12-06 | Apple Inc. | Inline scaling unit for mirror mode |
US8281288B1 (en) | 2011-10-20 | 2012-10-02 | Google Inc. | Integrated development environment with network-based compilation and sandboxed native machine-language capabilities |
US10319333B2 (en) | 2012-09-26 | 2019-06-11 | Apple Inc. | Refresh rate matching for displays |
US20140195634A1 (en) * | 2013-01-10 | 2014-07-10 | Broadcom Corporation | System and Method for Multiservice Input/Output |
US20140281023A1 (en) | 2013-03-18 | 2014-09-18 | Nvidia Corporation | Quality of service management server and method of managing quality of service |
US9497358B2 (en) | 2013-12-19 | 2016-11-15 | Sony Interactive Entertainment America Llc | Video latency reduction |
-
2013
- 2013-12-19 US US14/135,213 patent/US10353633B2/en active Active
-
2014
- 2014-10-21 WO PCT/US2014/061633 patent/WO2015094474A1/en active Application Filing
- 2014-10-21 BR BR112016004712-5A patent/BR112016004712B1/en active IP Right Grant
- 2014-10-21 JP JP2016538830A patent/JP2016534463A/en active Pending
- 2014-10-21 KR KR1020167007888A patent/KR101788724B1/en active IP Right Grant
- 2014-10-21 EP EP20165552.9A patent/EP3690664A1/en active Pending
- 2014-10-21 RU RU2016107200A patent/RU2649771C2/en active
- 2014-10-21 EP EP14872001.4A patent/EP3036646B1/en active Active
- 2014-10-22 TW TW103136465A patent/TWI531958B/en active
- 2014-12-12 CN CN201910971908.XA patent/CN110888599B/en active Active
- 2014-12-12 CN CN201410771149.XA patent/CN104735123B/en active Active
-
2019
- 2019-06-11 US US16/437,854 patent/US20190294382A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103234A1 (en) * | 2002-11-21 | 2004-05-27 | Aviad Zer | Combination non-volatile memory and input-output card with direct memory access |
US20080083828A1 (en) * | 2006-10-10 | 2008-04-10 | Le Trung V | Memory card with host interface and including internal interface for receiving micro-size memory cards |
US20080162788A1 (en) * | 2006-12-27 | 2008-07-03 | Bum-Seok Yu | Memory Controller with Automatic Command Processing Unit and Memory System Including the Same |
US20090106470A1 (en) * | 2007-10-23 | 2009-04-23 | Brocade Communications Systems, Inc. | Host bus adapter with multiple hosts |
US20100280817A1 (en) * | 2009-04-30 | 2010-11-04 | Spansion Llc | Direct pointer access and xip redirector for emulation of memory-mapped devices |
US20110271067A1 (en) * | 2010-05-03 | 2011-11-03 | Pixel8 Networks, Inc. | Efficient Cloud Network Attached Storage |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11287973B2 (en) | 2016-02-02 | 2022-03-29 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
CN111372115A (en) * | 2020-03-03 | 2020-07-03 | 北京奇艺世纪科技有限公司 | Application program access method and device and communication system |
Also Published As
Publication number | Publication date |
---|---|
TW201537447A (en) | 2015-10-01 |
EP3036646A4 (en) | 2017-07-19 |
KR20160046893A (en) | 2016-04-29 |
WO2015094474A1 (en) | 2015-06-25 |
CN110888599B (en) | 2023-06-27 |
BR112016004712B1 (en) | 2022-06-14 |
CN104735123B (en) | 2019-11-08 |
US10353633B2 (en) | 2019-07-16 |
EP3690664A1 (en) | 2020-08-05 |
JP2016534463A (en) | 2016-11-04 |
TWI531958B (en) | 2016-05-01 |
RU2016107200A (en) | 2017-08-30 |
EP3036646A1 (en) | 2016-06-29 |
CN110888599A (en) | 2020-03-17 |
CN104735123A (en) | 2015-06-24 |
BR112016004712A2 (en) | 2017-08-01 |
US20150178018A1 (en) | 2015-06-25 |
KR101788724B1 (en) | 2017-10-20 |
RU2649771C2 (en) | 2018-04-04 |
EP3036646B1 (en) | 2020-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190294382A1 (en) | Mass storage virtualization for cloud computing | |
US7917674B2 (en) | KVM switch with PIP functions using remote desktop sharing technique | |
US9141571B2 (en) | PCI express switch with logical device capability | |
US8473715B2 (en) | Dynamic accelerator reconfiguration via compiler-inserted initialization message and configuration address and size information | |
CN103034524B (en) | Half virtualized virtual GPU | |
US8610732B2 (en) | System and method for video memory usage for general system application | |
US20240012777A1 (en) | Computer system and a computer device | |
US10761822B1 (en) | Synchronization of computation engines with non-blocking instructions | |
EP2711845A2 (en) | PCI express switch with logical device capability | |
JP2023532484A (en) | Fast save data storage for cloud games | |
US8516079B2 (en) | Remote desktop control system using USB interface and method thereof | |
TWI437493B (en) | Computer system and operation systen loading method | |
WO2010077813A2 (en) | Composite device emulation | |
US10705993B2 (en) | Programming and controlling compute units in an integrated circuit | |
US9361123B2 (en) | Boot from logical volume spanning plurality of PCI devices | |
US11061654B1 (en) | Synchronization of concurrent computation engines | |
TWI787673B (en) | Hybrid cluster system and computing node thereof | |
US11422963B2 (en) | System and method to handle uncompressible data with a compression accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SONY INTERACTIVE ENTERTAINMENT LLC, CALIFORNIA Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:SONY INTERACTIVE ENTERTAINMENT AMERICA LLC;SONY INTERACTIVE ENTERTAINMENT LLC;REEL/FRAME:049436/0165 Effective date: 20180323 Owner name: SONY COMPUTER ENTERTAINMENT AMERICA LLC, CALIFORNI Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COLENBRANDER, ROELOF RODERICK;REEL/FRAME:049436/0013 Effective date: 20131217 Owner name: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC, CALIFO Free format text: CHANGE OF NAME;ASSIGNOR:SONY COMPUTER ENTERTAINMENT AMERICA LLC;REEL/FRAME:049439/0699 Effective date: 20160331 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |