Virtual Computing Storage Device
Through the virtual computing storage simulation module, the data and requests are translated and forwarded between the storage element and the computing element, the problem of virtual computing storage device simulation in the prior art is solved, and the virtual computing storage device under various hardware settings is realized Function, improving system flexibility and adaptability.
Patent Information
- Application Number
- CN202210626207.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-06-17
- Filing Date
- 2022-06-02
- Publication Date
- 2025-01-07
- Estimated Expiration
- 2042-06-02
AI Technical Summary
It is difficult for the prior art to effectively provide virtual computing storage devices, especially in the case where there are limited or lack of storage devices that support computing functions, how to implement simulation of virtual computing storage devices and processing of data storage and computing requests.
A system is designed, including a virtual computing storage simulation module, which stores data associated with the virtual computing storage device through storage components, and translates and forwards the computing requests and storage requests to the corresponding computing components and storage components to realize the virtual computing storage device. simulation.
In the absence of a storage device that supports computing functions, it realizes the function of providing virtual computing storage devices, improves the flexibility and adaptability of computing storage devices, and can operate normally in a variety of underlying physical component systems.
Smart Images

Figure CN115437559B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to and the benefit of U.S. Provisional Application No. 63 / 196,081, filed on June 2, 2021, entitled “Virtual Computational Storage Device,” the entire contents of which are incorporated herein by reference. Technical Field
[0003] The present disclosure generally relates to systems and methods for virtualizing computing storage devices. Background Art
[0004] Computational storage devices provide computing functions and data storage. Therefore, the host device can store data at the computing storage device and hand over the computing to the computing storage device. However, the computing system may include storage devices that do not support computing functions.
[0005] The above information disclosed in this Background section is only for enhancement of understanding of the background of the present disclosure and therefore may contain information that does not constitute prior art. Summary of the invention
[0006]
[0013] In various embodiments, the subject matter described herein includes systems, methods, and apparatus related to virtual computing storage devices.
[0007] A system includes: a virtual computing storage emulation module configured to provide a virtual computing storage device. The system also includes a storage element, wherein the virtual computing storage emulation module is configured to store data associated with the virtual computing storage device at the storage element. The system also includes a computing element. The virtual computing storage emulation module is configured to send a computing request associated with the virtual computing storage device to the computing element.
[0008] A method includes: providing a virtual computing storage device at a virtual computing storage device emulation module. Data associated with the virtual computing storage device is stored at a storage element. The method also includes receiving a computing request for the virtual storage device at the virtual computing storage device emulation module. The method also includes sending a translation of the computing request to the computing element.
[0009] A system includes: a computing element of a first device and a storage element of a second device. The system also includes a computing storage client and a processor. The processor is configured to receive a computing request from the computing storage client. The processor is also configured to send a translation of the computing request to the computing element of the first device. The processor is also configured to receive a storage request from the computing storage client. The processor is also configured to send the translation of the storage request to the storage element of the second device. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The above-described aspects and other aspects of the present technology will be better understood when this application is read in conjunction with the accompanying drawings, wherein like reference numerals represent similar or identical elements.
[0011] Figure 1A is a block diagram of a system for providing a virtual computing storage device.
[0012] Figure 1B is a block diagram of storage request processing in a system for providing virtual computing storage.
[0013] Figure 1C is a block diagram depicting command translation in a system for providing virtual computing storage.
[0014] Figure 2A is a block diagram of a system for providing a virtual computing storage device supported by more than one storage element.
[0015] Figure 2B is a block diagram of a system for providing a virtual computing storage device supported by more than one computing element.
[0016] Figure 3A is a block diagram of a system for providing more than one virtual computing storage device.
[0017] Figure 3B is a block diagram of a system for providing more than one virtual computing storage device that shares a storage element.
[0018] Figure 3C is a block diagram of a system for providing one or more virtual computing storage devices that share computing elements.
[0019] Figure 4A is a block diagram of a system for providing a virtual computing storage device supported by components of a computing device executing a hypervisor.
[0020] Figure 4B is a block diagram of a system for providing a virtual computing storage device backed by a physical computing storage device.
[0021] Figure 4C is a block diagram of a system for providing a virtual computing storage device supported by a component external to a computing device executing a virtual machine manager.
[0022] Figure 4D is a block diagram of a system for providing a virtual computational storage device supported by various components.
[0023] Figure 5A is a flow chart of a method for providing a virtual computing storage device that supports computing requests.
[0024] Figure 5B is a flow chart of a method for providing a virtual computing storage device that supports storage requests.
[0025] Figure 5C A flow chart of a method for providing a virtual computational storage device that returns command results in a computational storage format.
[0026] Figure 6 is a block diagram of a computing system for providing a virtual computing storage device.
[0027] While the present technology is susceptible to various modifications and alternative forms, specific embodiments of the present technology are shown by way of example in the drawings and will be described herein. The drawings may not be drawn to scale. However, it should be understood that the drawings and their detailed description are not intended to limit the present technology to the specific forms disclosed, but rather to cover all modifications, equivalents, and alternatives that fall within the spirit and scope of the present technology as defined by the appended claims. DETAILED DESCRIPTION
[0028] The details of one or more embodiments of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, drawings, and claims.
[0029] Now, various embodiments of the present disclosure will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all, embodiments are shown. In fact, the present disclosure can be implemented in many different forms and should not be construed as limited to the embodiments set forth herein; on the contrary, these embodiments are provided so that the present disclosure meets applicable legal requirements. In this document, unless otherwise specified, the term "or" is used both in alternative meanings and in combined meanings. The terms "illustrative" and "example" are used as examples without indicating a level of quality. Throughout the specification, similar figure numerals refer to similar elements. The arrows in each figure depict bidirectional data flow and / or the ability of bidirectional data flow. In this document, the terms "path", "way" and "route" are used interchangeably.
[0030] Embodiments of the present disclosure may be implemented in various ways, including as a computer program product having a manufactured article. A computer program product may include a non-transitory computer-readable storage medium storing an application, a program, a program component, a script, a source code, a program code, an object code, a byte code, a compiled code, an interpreted code, a machine code, an executable instruction, etc. (also referred to herein as an executable instruction, an instruction for execution, a computer program product, a program code, and / or similar terms used interchangeably herein). Such non-transitory computer-readable storage medium includes all computer-readable media (including volatile and non-volatile media).
[0031] In one embodiment, the non-volatile computer-readable storage medium may include a floppy disk, a flexible disk, a hard disk, a solid-state storage device (SSS) (e.g., a solid-state drive (SSD)), a solid-state card (SSC), a solid-state module (SSM), an enterprise flash drive, a magnetic tape, or any other non-transitory magnetic medium, etc. The non-volatile computer-readable storage medium may also include a punch card, a paper tape, an optical marker sheet (or any other physical medium having a pattern of holes or other optically recognizable marks), a compact disk read-only memory (CD-ROM), a compact disk rewritable (CD-RW), a digital versatile disk (DVD), a Blu-ray disk (BD), any other non-transitory optical medium, etc. Such non-volatile computer-readable storage medium may also include a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a flash memory (e.g., serial, NAND, NOR, etc.), a multimedia memory card (MMC), a secure digital (SD) memory card, a smart media (SmartMedia) card, a compact flash (CF, CompactFlash) card, a memory stick, etc. In addition, the non-volatile computer-readable storage medium may also include a conductive bridging random access memory (CBRAM), a phase change random access memory (PRAM), a ferroelectric random access memory (FeRAM), a non-volatile random access memory (NVRAM), a magnetoresistive random access memory (MRAM), a resistive random access memory (RRAM), a silicon-oxide-nitride-oxide-silicon memory (SONOS), a floating junction gate random access memory (FJG RAM), a thin film (Millipede) memory, a racetrack memory, etc.
[0032] In one embodiment, the volatile computer-readable storage medium may include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), fast page mode dynamic random access memory (FPM DRAM), extended data output dynamic random access memory (EDO DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), double data rate type two synchronous dynamic random access memory (DDR2 SDRAM), double data rate type three synchronous dynamic random access memory (DDR3 SDRAM), Rambus dynamic random access memory (RDRAM), two-transistor RAM (TTRAM), thyristor RAM (T-RAM), zero capacitor (Z-RAM), Rambus in-line memory module (RIMM), dual in-line memory module (DIMM), single in-line memory module (SIMM), video random access memory (VRAM), cache memory (including various levels), flash memory, register memory, etc. It will be appreciated that where embodiments are described as using computer-readable storage media, other types of computer-readable storage media may be used in place of or in addition to the computer-readable storage media described above.
[0033] It should be understood that various embodiments of the present disclosure may also be implemented as methods, apparatuses, systems, computing devices, computing entities, etc. Therefore, embodiments of the present disclosure may take the form of apparatuses, systems, computing devices, computing entities, etc. that execute instructions stored on a computer-readable storage medium to perform specific steps or operations. Therefore, embodiments of the present disclosure may also take the form of an embodiment that is entirely hardware that performs specific steps or operations, an embodiment that is entirely a computer program product, and / or an embodiment that includes a combination of a computer program product and hardware.
[0034] Below, the embodiment of the present disclosure will be described with reference to the block diagram and flow chart. Therefore, it should be understood that each block in the block diagram and flow chart can be described in the form of a computer program product, a combination of hardware implementation, hardware and computer program product, and / or an instruction, operation, step and similar words (e.g., executable instructions, instructions for execution, program code, etc.) executed on a computer-readable storage medium for execution, system, computing equipment, computing entity, etc. to achieve. For example, the retrieval, loading and execution of code can be performed in sequence so as to retrieve, load and execute an instruction at a time. In some example embodiments, retrieval, loading and / or execution can be performed in parallel so as to retrieve, load and / or execute multiple instructions together. Therefore, this embodiment can produce a specially configured machine that performs the steps or operations specified in the block diagram and flow chart description. Therefore, the block diagram and flow chart description support various combinations of embodiments for executing specified instructions, operations or steps.
[0035] As used herein, a computational storage device refers to a storage device that supports computing tasks. For example, a computational storage device may include a storage element (e.g., a non-volatile memory such as flash memory, etc.) and a computing element (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC) (such as a tensor processing unit), a processor core, etc.), and is configured to support the storage of data at the computing element and the execution of computing tasks at the computing element. Therefore, the computational storage device can provide storage capabilities to a computational storage client (e.g., a computing device), and can support the transfer of computing tasks from the computational storage client to the computational storage device. Reference Figure 1A , a block diagram depicting a system 100 for providing virtual computing storage is shown.
[0036] The system 100 includes a virtual computing storage emulation module 102, a computing element 106, a storage element 108, and a computing storage client 104. The virtual computing storage emulation module 102 may correspond to software (e.g., a virtual machine manager) that can be executed by a processing device (not shown) of a computing device (e.g., a server device) to provide access to a virtual computing storage device 110. The virtual computing storage device 110 may be a logical structure, rather than a physical computing storage device. The virtual computing storage emulation module 102 provides the virtual computing storage device 110 by emulating (e.g., reproducing) the functions of a physical computing storage device. The functions of the virtual computing storage device 110 are implemented by the computing element 106 and the storage element 108. As further described herein, the virtual computing storage emulation module 102 is configured to emulate a physical computing storage device to provide storage request translation and provide computing request translation. The computing element 106 and the storage element 108 may be components of a physical computing storage device or one or more other types of devices.
[0037] The computing element 106 may correspond to a CPU, a GPU, an FPGA, an ASIC, a processor core, another type of processor element, or a combination thereof. The storage element 108 may correspond to a solid-state drive, a hard disk drive, another type of non-volatile memory, or a combination thereof. The computing element 106 and the storage element 108 may correspond to different devices or a single device. For example, the computing element 106 and the storage element 108 may correspond to a physical computing storage device. In some embodiments, the computing element 106 and the storage element 108 are inside the device that executes the virtual computing storage simulation module 102. In some embodiments, the computing element 106 and the storage element 108 are outside the device that executes the virtual computing storage simulation module 102. Although a single computing element and a single storage element are shown, the system 100 may include additional computing elements and additional storage elements. In addition, although the virtual computing storage device 110 is shown as being supported by a single computing element and a single storage element, the virtual computing storage device 110 may be supported by more than one computing element and / or more than one storage element. In addition, the virtual computing storage simulation module 102 may provide more than one virtual computing storage device. The communication between the virtual computing storage emulation module 102 and the computing element 106 and the storage element 108 may be carried out through one of the following ways: a peripheral component interconnect (PCI) link, a PCI Express (PCIe) link, a serial advanced technology attachment (SATA) link, a serial small computer system interface (SCSI) link, a fiber channel, an Ethernet link, an Institute of Electrical and Electronics Engineers (IEEE) 802.11 link, another type of link, or a combination thereof. The communication between the virtual computing storage emulation module 102 and the computing element 106 and the storage element 108 may include non-volatile memory express (NVMe) communication.
[0038] The computing storage client 104 corresponds to a computing device or software configured to issue computing requests and storage requests to the virtual computing storage emulation module 102. In an embodiment where the computing storage client 104 corresponds to software, the computing storage client 104 may correspond to a virtual computing device provided by a virtual machine manager that executes instructions at a computing element (e.g., computing element 106) to emulate a computing device. The communication between the computing storage client 104 and the virtual computing storage emulation module 102 may be performed in one of the following ways: a peripheral component interconnect (PCI) link, a PCI Express (PCIe) link, a serial advanced technology attachment (SATA) link, a serial small computer system interface (SCSI) link, a fiber channel, an Ethernet link, an Institute of Electrical and Electronics Engineers (IEEE) 802.11 link, another type of link, or a combination thereof. The communication between the virtual computing storage emulation module 102 and the computing element 106 and the storage element 108 may include non-volatile memory express (NVMe) communication.
[0039] In operation, storage element 108 stores data 112 associated with virtual computing storage device 110, and computing element 106 performs computing requests associated with virtual computing storage device 110. In response to a request from computing storage client 104, data 112 may be written to storage element 108 by virtual computing storage emulation module 102. Figure 1A As shown, the virtual computing storage emulation module 102 provides computing request translation.
[0040] In the example shown, the compute storage client 104 sends a compute request 114 to the virtual compute storage emulation module 102. The compute request 114 may be addressed to the virtual compute storage device 110. The virtual compute storage emulation module 102 may maintain a mapping of the virtual compute storage device 110 to the compute element 106, and accordingly translate the compute request 114 into a request for the compute element 106. Thus, the virtual compute storage emulation module 102 may forward the compute request 114 to the compute element 106. It should be noted that while the above example describes the compute request 114 as being forwarded to the compute element 106, in practice, the message sent to the compute element 106 may be different from the message received by the virtual compute storage emulation module 102 from the compute storage client 104. For example, the compute request 114 may correspond to an NVMe request (or other type of request) such as an NVMe command to load and / or execute a program, but the compute element 106 may not support NVMe (or other type of protocol). Thus, the virtual compute storage emulation module 102 may translate the compute request 114 into a translated message of a protocol supported by the compute element 106. Instead of forwarding the compute request 114, the virtual compute storage emulation module 102 may forward the translated message to the compute element 106. As described above, the virtual compute storage emulation module 102 may support emulation of a physical compute storage device. The translation of the compute request may include an aspect of the emulation.
[0041] In some embodiments, the virtual computing storage device 110 may correspond to more than one computing element. In this case, the virtual computing storage emulation module 102 may select which computing element to forward the computing request 114 to based on a load balancing algorithm. Additionally or alternatively, the virtual computing storage emulation module 102 may select a computing element to which the computing request 114 is to be forwarded based on the address of the data targeted by the computing request 114. For example, the virtual computing storage emulation module 102 may forward the computing request 114 to a specific computing storage device in response to determining that the computing request 114 is targeted at data stored on a specific computing storage device.
[0042] The computing element 106 may return the result (not shown) of the computing request 114 to the computing storage client 104 directly or through the virtual computing storage emulation module 102. Similarly, the computing element 106 may communicate with the storage element 108 directly or through the virtual computing storage emulation module 102. For example, the computing request 114 may be for data 112. The computing element 106 may retrieve the data 112 directly from the storage element 108, or the virtual computing storage emulation module 102 may retrieve the data 112 from the storage element 108 and forward the data 112 to the computing element 106 through the computing request 114. In an embodiment where the computing element 106 returns the result through the virtual computing storage emulation module 102, the virtual computing storage emulation module may translate the result into a protocol supported by the computing storage client 104 (e.g., a protocol configured to support communication between the computing storage client and the computing storage device). As described above, the virtual computing storage emulation module 102 may support the emulation of a physical computing storage device. The translation of the computing request result may include an aspect of the emulation.
[0043] Figure 1B The virtual computing storage emulation module 102 of the system 100 is shown to provide an example of storage request translation. In the example shown, the computing storage client 104 sends a storage request 116 to the virtual computing storage emulation module 102. The storage request 116 may correspond to a read request or a write request. In some embodiments, the storage request 116 corresponds to an NVMe request. The storage request 116 is directed to the virtual computing storage device 110. The virtual computing storage emulation module 102 maintains a mapping between the virtual computing storage device and the storage element. Based on the mapping, the virtual computing storage emulation module 102 can forward the storage request 116 to the storage element 108. It should be noted that although the above example describes the storage request 116 as being forwarded to the storage element 108, in practice, the message sent to the storage element 108 may be different from the message received by the virtual computing storage emulation module 102 from the computing storage client 104. For example, the storage request 116 may correspond to an NVMe request (or other type of request), but the storage element 108 may not support NVMe (or other types of protocols). Thus, the virtual computing storage emulation module 102 may translate the storage request 116 into a translated message of a protocol supported by the storage element 108. Instead of forwarding the storage request 116, the virtual computing storage emulation module 102 may forward the translated message to the storage element 108. As described above, the virtual computing storage emulation module 102 may support emulation of a physical computing storage device. Translation of storage requests may include an aspect of this emulation.
[0044] In some embodiments, the virtual computing storage device 110 may correspond to more than one storage element. In this case, the virtual computing storage emulation module 102 may select the storage element to which the storage request 116 is forwarded based on the address (e.g., logical block address (LBA)) targeted by the storage request 116. For example, for each virtual computing storage device, the virtual computing storage emulation module 102 may maintain a mapping of storage elements to address (e.g., LBA) ranges. In an example where the storage request 116 corresponds to a write request, the virtual computing storage emulation module 102 may select which storage element to forward the storage request 116 to based on a load balancing algorithm. The virtual computing storage emulation module 102 may update the mapping of addresses to storage elements to reflect which storage element the write request is sent to. For example, in response to sending a write for LBA A to a first storage element, the virtual computing storage emulation module 102 may update the mapping to indicate that LBA A is associated with the first storage element.
[0045] The computing element 106 may return the result of the storage request 116 (not shown) to the computing storage client 104 directly or through the virtual computing storage emulation module 102. For example, the storage element 108 may send the data 112 to the computing storage client 104 in response to a read request. As another example, the storage element 108 may send a read request to the computing storage client 104 in response to a write request (alternatively, the virtual computing storage emulation module 102 may send the read request to the computing storage client 104). In the example where the result is returned through the virtual computing storage emulation module 102, the virtual computing storage emulation module 102 may translate the result into a protocol used by the computing storage client 104. As described above, the virtual computing storage emulation module 102 may support emulation of physical computing storage devices. The translation of the storage request result may include an aspect of the emulation. Further, reference will be made to Figure 1C To describe the simulation.
[0046] In some examples, storage request 116 corresponds to a request to write data 112 to storage element 108. Virtual compute storage emulation module 102 may translate storage request 116 and forward it to storage element 108 as described above.
[0047] Figure 1C An example of a system 100 that provides emulation of a computational storage device is depicted. In the illustrated example, a computational storage client 104 and a virtual computational storage emulation module 102 communicate according to a protocol supported by the computational storage device (e.g., NVMe). The virtual computational storage emulation module 102 is configured to translate between these computational storage messages and messages according to one or more protocols supported by the computational elements 106 and the storage elements 108.
[0048] In the example shown, the compute storage client 104 sends a compute storage (CSD) command 118 (e.g., a compute command, a storage command, or other type of command) to the virtual compute storage emulation module 102. The CSD command 118 complies with a CSD protocol (e.g., NVMe) supported by the compute storage client 104 and the virtual compute storage emulation module 102. The virtual compute storage emulation module 102 translates the CSD command 118 into a hardware command 120 that complies with the protocol used by the compute element 106 and sends the hardware command 120 to the compute element 106. Part of the translation may include translating an address identified in the CSD command 118 into an address associated with the storage element 108. For example, LBA A of the virtual compute storage device 110 may be mapped to LBA B at the storage element 108. In some embodiments, the virtual compute storage emulation module 102 may extract data from the storage element 108 based on the translated address and include the extracted data in the hardware command 120. Although the previous example describes both the virtual computing storage device and the storage element 108 as supporting LBA, the virtual computing storage device 110 and the storage element 108 may support different types of addressing schemes (e.g., key-value). The virtual computing storage emulation module 102 may translate between the addressing scheme presented by the virtual computing storage device 110 and the addressing scheme supported by the storage element 108. In response to the hardware command 120, the computing element 106 generates a hardware result 122 and sends the hardware result 122 to the virtual computing storage emulation module 102. The virtual computing storage emulation module 102 translates the hardware result 122 into a CSD result 124 that conforms to the CSD protocol used by the computing storage client 104, and transmits the CSD result 124 to the computing storage client 104.
[0049] Although Figure 1CDepicting an example where the CSD command 118 corresponds to a compute command, it should be noted that the virtual compute storage emulation module 102 can provide similar storage command translations. For example, the CSD command 118 can correspond to a storage request. Therefore, the virtual compute storage emulation module 102 can translate the CSD command 118 into a hardware command 120, and send the hardware command 120 to the storage element 108. As described above, the CSD command 118 and the hardware command 120 can belong to different protocols and / or use different addressing schemes. In this case, the storage element 108 can return a hardware result 122 (e.g., a hardware result 122 including data 112) to the virtual compute storage emulation module 102, and the virtual compute storage emulation module 102 can translate the hardware result 122 into a CSD result 124, and send the CSD result 124 to the compute storage client 104. Therefore, the virtual compute storage emulation module 102 can provide translations of both compute commands and storage commands addressed to the virtual compute storage device.
[0050] In addition to providing translation of computing storage device messages, the virtual computing storage simulation module 102 can simulate other functions of the computing storage device. For example. The virtual computing storage simulation module 102 can maintain one or more submission queues (or other data structures) associated with the computing storage device in the memory (not shown) of the computing device executing the virtual computing storage simulation module. As another example, the virtual computing storage simulation module 102 can publish the availability of the computing storage device to the computing storage client 104 according to the CSD protocol. It should be noted that the published capabilities can correspond to the simulated capabilities. That is, the virtual computing storage simulation module 102 can publish hardware capabilities, and the published hardware capabilities can be implemented in software.
[0051] therefore, Figure 1A-Figure 1C A system for providing a virtual computing storage device is shown. The system supports storage device translation and forwarding, computing device translation and forwarding, and simulation of other functions of computing storage devices. As further described below, the underlying hardware used by the virtual computing storage simulation module 102 to provide a virtual computing storage device can take many forms. Therefore, Figure 1A-Figure 1C The system 100 can provide the functionality of a computational storage device to computational storage clients in a variety of hardware configurations.
[0052] As described above, the virtual computing storage device provided by the virtual computing storage emulation module 102 may be supported by more than one storage element and / or more than one computing element. Figure 2A-2B Different examples are shown where virtual computing storage devices are supported by additional physical components.
[0053] Figure 2AAn example of system 100 is shown in which virtual computing storage device 110 corresponds to first storage element 202 and second storage element 204 that replace storage element 108. First storage element 202 stores first data 206 associated with virtual computing storage device 110, and second storage element 204 stores second data 208 associated with virtual computing storage device 110.
[0054] The computing storage client 104 may send a first storage request 210 to the virtual computing storage emulation module 102. The first storage request 210 may identify a first address 212 (e.g., a first LBA). The virtual computing storage emulation module 102 may route the first storage request 210 to the first storage element 202 based on the first address 212. For example, the virtual computing storage emulation module 102 may store a mapping of the address of the virtual computing storage device 110 to the addresses of the first storage element 202 and the second storage element 204. In some embodiments, the first storage request 210 may correspond to a write request, and the virtual computing storage emulation module 102 may send the first storage request 210 to the first storage element 202 based on a load balancing algorithm. For example, the virtual computing storage emulation module 102 may distribute the write request in a round-robin manner (or according to some other algorithm) among the storage elements. In response to writing data for a specific virtual storage device address to a specific address of the storage element, the virtual computing storage emulation module 102 may update the mapping of the virtual computing storage device address to the storage element address to indicate that the specific virtual storage device address is mapped to the specific address of the storage element.
[0055] In the example shown, the compute storage client 104 issues a second storage request 214 identifying the second address 216, and forwards the second storage request 214 to the second storage element 204. The virtual compute storage emulation module 102 may identify the second storage element 204 using the above-described techniques with respect to the first storage request 210 to receive the second storage request 214. It should be noted that, like the storage request 116 described above, the first storage request 210 and the second storage request 214 may be translated by the virtual compute storage emulation module 102 into messages that conform to one or more protocols used by the first storage element 202 and the second storage element 204. The first storage element 202 and the second storage element 204 may support different protocols.
[0056] Figure 2BAn example of a system 100 in which a virtual computing storage device 110 corresponds to a first computing element 218 and a second computing element 220 that replaces a computing element 106 is shown. In the example shown, the computing storage client 104 sends a first computing request 224 and a second computing request 228 to the virtual computing storage emulation module 102. Both the first computing request 224 and the second computing request 228 are directed to the virtual computing storage device 110. The first computing request 224 identifies a first address 226, and the second computing request 228 identifies a second address 230. The virtual computing storage emulation module 102 forwards the first computing request 224 to the first computing element 218, and forwards the second computing request 228 to the second computing element 220. The virtual computing storage emulation module 102 can route the first computing request 224 to the first computing element 218 based on the first address 226. For example, the virtual computing storage emulation module 102 can manage a mapping of virtual computing storage device addresses to computing elements. In another example, the virtual computing storage emulation module 102 can route the computing requests according to a load balancing algorithm. As described above, the virtual computing storage emulation module 102 may translate the computing requests 224 and 228 into different protocols before forwarding them to the computing elements 218 and 220. In some embodiments, the virtual computing storage emulation module 102 retrieves data associated with the first address 226 from the storage element 108 and forwards the data to the first computing element 218 via the first computing request 224. Similarly, the virtual computing storage emulation module 102 may retrieve data associated with the second address 230 from the storage element 108 and forward the data to the second computing element 220 via the second computing request 228.
[0057] It should be noted that a virtual computing storage device may correspond to more than one computing element and more than one storage element. Figure 2A-2B An example with two storage elements and an example with two computing elements are shown respectively, but other numbers of storage elements and / or computing elements can be used by the virtual computing storage emulation module 102 to provide a virtual computing storage device. In addition, the virtual computing storage emulation module 102 can support more than one virtual computing storage device. Figure 3A-3C , an example is shown in which the virtual computing storage simulation module 102 supports more than one virtual computing storage device.
[0058] exist Figure 3A, the virtual computing storage emulation module 102 provides a first virtual computing storage device 302 and a second virtual computing storage device 304 that replace the virtual computing storage device 110. The first virtual computing storage device 302 is supported by a first computing element 306 and a first storage element 308. The first storage element 308 stores first data 310 associated with the first virtual computing storage device 302. The second virtual computing storage device 304 is supported by a second computing element 312 and a second storage element 314. The second storage element 314 stores second data 316 associated with the second virtual computing storage device 304.
[0059] The virtual computing storage emulation module 102 is configured to provide computing request translation, storage request translation, and virtual computing storage device emulation for the first virtual computing storage device and the second virtual computing storage device, as described above with reference to the virtual computing storage device 110. The virtual computing storage emulation module 102 may route (and translate) storage commands for the first virtual computing storage device 302 to a storage element (e.g., the first storage element 308) supporting the first virtual computing storage device 302. The virtual computing storage emulation module 102 may route (and translate) computing commands for the first virtual computing storage device 302 to a computing element (e.g., the first computing element 306) supporting the first virtual computing storage device 302. Similarly, the virtual computing storage emulation module 102 may route (and translate) computing commands and storage commands for the second virtual computing storage device 304 to devices (e.g., the second computing element 312 and the second storage element 314) supporting the second virtual computing storage device 304. In addition, as described above, the virtual computing storage emulation module 102 can emulate other functions of the first virtual computing storage device 302 and the second virtual computing storage device 304. For example, the virtual computing storage emulation module 102 can maintain submission queues associated with the virtual computing storage device 302 and the virtual computing storage device 304, publish the availability of the virtual computing storage device 302 and the virtual computing storage device 304, and so on.
[0060] Although Figure 3A The virtual computing storage devices are shown to be backed by unique underlying physical devices, but it should be noted that physical devices may be shared between virtual computing storage devices. Figure 3B An example is shown in which the first virtual computing storage device 302 and the second virtual computing storage device 304 share a storage element 330. Therefore, the virtual computing storage emulation module 102 can forward (and / or translate) a first storage request 332 for the first virtual computing storage device 302 and a second storage request 334 for the second virtual computing storage device 304 to the storage element 330.
[0061] Figure 3CAn example of a first virtual computing storage device 302 and a second virtual computing storage device 304 sharing a computing element 350 is shown. Therefore, the virtual computing storage emulation module 102 can forward (and / or translate) a first computing request 352 for the first virtual computing storage device 302 and a second computing request 354 for the second virtual computing storage device 304 to the computing element 350. Therefore, Figure 3A-3C The virtual computing storage emulation module 102 is shown to support different examples of more than one virtual computing storage device. As shown, different virtual computing storage devices can be supported by different underlying physical devices, or can share underlying physical devices.
[0062] It should be noted that although the examples described herein include a single host, the virtual computing storage emulation module 102 can support more than one host. In some examples, the virtual computing storage device is dedicated to the host. In other examples, the virtual computing storage device is shared between hosts. It should also be noted that the virtual computing storage emulation module 102 can support virtual computing storage devices with different functions. For example, the virtual computing storage emulation module 102 can provide a first virtual computing storage device capable of compression / decompression and a second virtual computing storage device capable of encryption / decryption. The virtual computing storage emulation module 102 can perform compression / decompression of data for a request associated with the first virtual computing storage device as part of emulating the first virtual computing storage device. In addition, the virtual computing storage emulation module 102 can perform encryption / decryption of data for a request associated with the second virtual computing storage device as part of emulating the second virtual computing storage device.
[0063] As described above, the system 100 can provide a virtual computing storage device using computing elements and storage elements from various sources. Referring to FIG. 4, a system 400 for providing a virtual computing storage device. The system 400 includes a computing device 402. The computing device 402 includes a computing element 404 and a storage element 406. The computing element 404 may include a processing device and may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, or the second computing element 312 described above. The storage element 406 may include a non-volatile storage device and may correspond to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, or the second storage element 314. The computing device 402 is configured to execute a virtual machine manager 408 including a virtual computing storage emulation module 410. The virtual machine manager 408 may be executed at the computing element 404 or at another processor of the computing device 402. The virtual computing storage emulation module 410 may correspond to the virtual computing storage emulation module 102 described above.
[0064] The virtual machine manager 408 is configured to provide a first virtual machine 412 and a second virtual machine 416. In some implementations, the first virtual machine 412 or the second virtual machine 416 corresponds to the computing storage client 104. The virtual computing storage emulation module 410 is configured to present a first virtual computing storage device 414 to the first virtual machine 412 and a second virtual computing storage device 418 to the second virtual machine 416. The first virtual computing storage device 414 may correspond to the virtual computing storage device 110, the first virtual computing storage device 302, or the second virtual computing storage device 304. The second virtual computing storage device 418 may correspond to the virtual computing storage device 110, the first virtual computing storage device 302, or the second virtual computing storage device 304.
[0065] The virtual computing storage emulation module 410 is configured to use the components of the computing device 402 to provide the functions of the virtual computing storage device 414 and the virtual computing storage device 418. Therefore, as described above, the virtual computing storage emulation module 410 can translate the computing requests for the virtual computing storage device 414 and the virtual computing storage device 418 into the computing requests for the computing element 404, and translate the storage requests for the virtual computing storage device 414 and the virtual computing storage device 418 into the storage requests for the storage element 406. Therefore, Figure 4A It is shown that a computing device (eg, a server) can provide virtual computing storage device functionality using components of the computing device.
[0066] refer to Figure 4B, shows an alternative embodiment of a system 400 in which a computing device 402 communicates with a first computing storage device 430 and a second computing storage device 432 (e.g., communicating via PCIe or some other connection). The first computing storage device 430 includes a first computing element 434 and a first storage element 436. The second computing storage device 432 includes a first computing element 438 and a second storage element 440. The first computing element 434 may include a processing device and may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, or the second computing element 312 described above. Similarly, the second computing element 438 may include a processing device and may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, or the second computing element 312 described above. The first storage element 436 may include a non-volatile storage device and may correspond to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, or the second storage element 314. Similarly, the second storage element 440 may include a non-volatile memory device and may correspond to the storage element 108 , the first storage element 202 , the second storage element 204 , the first storage element 308 , or the second storage element 314 .
[0067] The virtual computing storage emulation module 410 is configured to use the components of the computing storage devices 430 and 432 to provide the functions of the virtual computing storage devices 414 and 418. Therefore, as described above, the virtual computing storage emulation module 410 can translate the computing requests for the virtual computing storage devices 414 and 418 into the computing requests for the components of the first computing storage device 430 and / or the components of the second computing storage device 432. Therefore, Figure 4B Components illustrating physical computing storage devices may be virtualized by the disclosed system.
[0068] refer to Figure 4C , shows an alternative embodiment of a system 400 in which a computing device 402 communicates (e.g., via PCIe or some other connection) with a computing element 450 and a storage element 452. The computing element 450 may include a processing device (e.g., an FPGA) and may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, or the second computing element 312 described above. The storage element 452 may include a non-volatile storage device (e.g., a non-computing storage device) and may correspond to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, or the second storage element 314.
[0069] The virtual computing storage emulation module 410 is configured to use the external computing element 450 and the storage element 452 to provide the functions of the virtual computing storage device 414 and the virtual computing storage device 418. Therefore, as described above, the virtual computing storage emulation module 410 can translate the computing requests for the virtual computing storage device 414 and the virtual computing storage device 418 into the computing requests for the computing element 450, and translate the storage requests for the virtual computing storage device 414 and the virtual computing storage device 418 into the storage requests for the storage element 452. Therefore, Figure 4C It is shown that a computing device (eg, a server) can use external components to provide virtual computing storage device functionality.
[0070] Figure 4D The virtual computing storage simulation module 410 can use reference Figure 4A -Any combination of the devices described in Figure C to provide a virtual computing storage device. Therefore, the virtual computing storage emulation module 410 can provide a virtual computing device corresponding to an internal (inside the device executing the virtual computing storage emulation module) processing element, an internal storage device, an external (outside the device executing the virtual computing storage emulation module) processing element, an external storage device, a physical computing storage device, or any combination thereof.
[0071] Figure 5A is a flow chart of a method 500 for providing a virtual computing storage device. The method 500 may be performed by a virtual computing storage emulation module (e.g., by one or more processors executing such a module), such as the virtual computing storage emulation module 102 or the virtual computing storage emulation module 410. The method 500 includes: in 502, providing a virtual computing storage device at a virtual computing storage device emulation module, wherein data associated with the virtual computing storage device is stored at a storage element. For example, the virtual computing storage emulation module 102 may provide a virtual computing storage device 110. The data 112 of the virtual computing storage device 110 may be stored at the storage element 108. In another example, the first data 206 of the virtual computing storage device may be stored at the first storage element 202, and the second data 208 may be stored at the second storage element 204. In another example, the virtual computing storage emulation module 102 may provide a first virtual computing storage device 302 and a second virtual computing storage device 304. The first data 310 of the first virtual computing storage device 302 may be stored at the first storage element 308, and the second data 316 of the second virtual computing storage device 304 may be stored at the second storage element 314. In another example, the first data 310 of the first virtual computing storage device 302 and the second data 316 of the second virtual computing storage device 304 may be stored at the storage element 330.
[0072] The method 500 also includes receiving a computing request for the virtual storage device at the virtual computing storage device emulation module at 504. For example, the virtual computing storage emulation module 102 may receive a computing request 114, a CSD command 118, a first computing request 224, a second computing request 228, a first computing request 352, or a second computing request 354 from a computing storage client 104.
[0073] Method 500 also includes, at 506, sending a translation of the compute request to the compute element. For example, virtual compute storage emulation module 102 may send a translation (e.g., hardware command 120) of compute request 114, first compute request 224, second compute request 228, first compute request 352, or second compute request 354 to compute element 106, first compute element 218, second compute element 220, first compute element 306, or second compute element 312. The generated translation may include mapping a request under a first protocol (e.g., NVMe) to a request under a second protocol (e.g., a protocol supported by the processing element).
[0074] Therefore, method 500 can provide a technique for virtualization of computational storage devices. Therefore, computational storage clients can enjoy the benefits of computational storage devices in systems with a variety of underlying physical components.
[0075] In some examples, method 500 further includes: initializing the virtual computing storage device. For example, virtual computing storage simulation module 102 or virtual computing storage simulation module 410 can generate one or more mapping tables of virtual computing storage devices to physical components. The mapping table can map the address of the virtual computing storage device to the address of the physical storage device. The mapping table can also map the virtual computing storage device to the computing element. The physical component can be assigned to the virtual computing storage device, and the mapping table can be set based on a command from a computing storage client, based on a load balancing algorithm, or a combination thereof.
[0076] Figure 5Bis a flow chart of a method 510 for providing a virtual computing storage device that supports storage requests. The method 510 may be performed by a virtual computing storage emulation module (e.g., by one or more processors executing such a module) (such as the virtual computing storage emulation module 102 or the virtual computing storage emulation module 410). The method 510 includes: in 512, providing a virtual computing storage device at the virtual computing storage device emulation module, wherein data associated with the virtual computing storage device is stored at a storage element. For example, the virtual computing storage emulation module 102 may provide a virtual computing storage device 110. The data 112 of the virtual computing storage device 110 may be stored at the storage element 108. In another example, the first data 206 of the virtual computing storage device may be stored at the first storage element 202, and the second data 208 may be stored at the second storage element 204. In another example, the virtual computing storage emulation module 102 may provide a first virtual computing storage device 302 and a second virtual computing storage device 304. The first data 310 of the first virtual computing storage device 302 may be stored at the first storage element 308, and the second data 316 of the second virtual computing storage device 304 may be stored at the second storage element 314. In another example, the first data 310 of the first virtual computing storage device 302 and the second data 316 of the second virtual computing storage device 304 may be stored at the storage element 330.
[0077] The method 510 also includes receiving a storage request for the virtual storage device at the virtual computing storage device emulation module at 514. For example, the virtual computing storage emulation module 102 may receive the storage request 116, the CSD command 118, the first storage request 210, the second storage request 214, the first storage request 332, or the second storage request 334 from the computing storage client 104.
[0078] The method 510 also includes sending the translation of the storage request to the storage element at 516. For example, the virtual compute storage emulation module 102 may send a translation (e.g., hardware command 120) of the storage request 116, the CSD command 118, the first storage request 210, the second storage request 214, the first storage request 332, or the second storage request 334 to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, or the second storage element 314. The generated translation may include mapping a request under a first protocol (e.g., NVMe) to a request under a second protocol (e.g., a protocol supported by the storage element).
[0079] Thus, method 510 may provide a technique for virtualization of a computational storage device supporting storage commands. Thus, computational storage clients may enjoy the benefits of computational storage devices in systems having a variety of underlying physical components.
[0080] Figure 5C Flowchart of method 520 for providing a virtual computing storage device that returns command results in a computing storage format. Method 520 may be performed by a virtual computing storage emulation module (e.g., by one or more processors executing such a module) (such as virtual computing storage emulation module 102 or virtual computing storage emulation module 410). The method includes: at 524, receiving a command result from a hardware device at the virtual computing storage device emulation module. For example, virtual computing storage emulation module 102 may receive hardware result 122 from computing element 106 (or storage element 108). Hardware result 122 may correspond to a message generated in response to a computing command or a storage command. For example, hardware result 122 may include a result of a computation from computing element 106 or data retrieved from storage element 108.
[0081] The method 520 also includes sending the translation of the hardware result to the compute storage client at 526. For example, the virtual compute storage emulation module 102 may send the CSD result 124 to the compute storage client 104. The CSD result 124 may correspond to a translated version of the hardware result 122. In some implementations, the CSD result 124 is a message that conforms to the NVMe protocol, although the hardware result 122 may conform to a different protocol.
[0082] Thus, method 520 can provide a technique for virtualizing a computational storage device that returns the result of a command to a computational storage client. Thus, a computational storage client can enjoy the benefits of a computational storage device in a system with a variety of underlying physical components. It should be noted that one or more of method 500, method 510, method 520 (or aspects thereof) can be combined and / or performed by the same device.
[0083] Figure 6 6 is a block diagram of a computing system 600 that can provide a virtual computing storage device. Computing system 600 includes computing device 602. Computing device 602 can correspond to computing device 402 described above. Computing device 602 includes processor device 606 and memory device 608. Processor device 606 can include a CPU, a CPU core, another type of processor device, or a combination thereof.
[0084] The memory device 608 may include non-volatile memory, volatile memory, or a combination thereof. As used herein, the memory device 608 is an article of manufacture. The memory device 608 stores virtual computing storage device (CSD) instructions 610 that can be executed by the processor device 606 to provide a virtual computing storage device. The virtual CSD instructions may correspond to the virtual computing storage emulation module 102, the virtual machine manager 408, the virtual computing storage emulation module 410, or a combination thereof. The virtual CSD instructions 610 may be executed by the processor device 606 to perform one or more of the methods 500, 510, and 520.
[0085] Computing system 600 also includes storage device 612. Storage device 612 may correspond to a non-volatile storage device, such as a solid state drive or other storage device.
[0086] The storage device also includes a communication interface 614 that is configured to communicate with external components. The communication interface 614 can correspond to an Ethernet interface, an IEEE 802.11 interface, a PCIe interface, a SATA interface, a SAS interface, another type of interface, or a combination thereof. In some embodiments, the communication interface 614 can be configured to send messages to a computing storage client (such as the computing storage client 104) and / or receive messages from it.
[0087] The communication interface 614 is connected to the computing storage device 616, the storage device 618, and the processor device 620. The virtual CSD instruction 610 can be executed by the processor device 606 to provide a virtual computing storage device using one or more computing elements and one or more storage elements. The one or more computing elements may include the processor device 606, the computing storage device 616, the processor device 620, or a combination thereof. The one or more storage elements may include the storage device 612, the computing storage device 616, the storage device 618, or a combination thereof. The processor device 606 may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, the second computing element 312, the computing element 404, the first computing element 434, the second computing element 438, the computing element 450, or a combination thereof. The computing storage device 616 may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, the second computing element 312, the first computing storage device 430, the second computing storage device 432, or a combination thereof. The processor device 620 may correspond to the computing element 106, the first computing element 218, the second computing element 220, the first computing element 306, the second computing element 312, the computing element 450, or a combination thereof.
[0088] In some implementations, the memory device 608 also includes instructions executable by the processor device 606 to provide a computational storage client, such as the computational storage client 104, the first virtual machine 412, the second virtual machine 416, or a combination thereof.
[0089] The storage device 612 may correspond to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, the second storage element 314, the storage element 330, the first storage element 308, the second storage element 314, the storage element 406, or a combination thereof. The computational storage device 616 may correspond to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, the second storage element 314, the storage element 330, the first storage element 308, the first computational storage device 430, the second computational storage device 432, or a combination thereof. The storage device 618 may correspond to the storage element 108, the first storage element 202, the second storage element 204, the first storage element 308, the second storage element 314, the storage element 330, the first storage element 308, the storage element 452, or a combination thereof.
[0090] Thus, as described herein, computing system 600 can provide virtualization of computing storage devices. Computing system 600 can include more or fewer of the components shown. For illustration, some examples may not include computing storage device 616, storage device 618, processor device 620, or any combination thereof.
[0091] Particular embodiments may be implemented in one or a combination of hardware, firmware, and software. Other embodiments may also be implemented as instructions stored on a computer-readable storage device, which may be read and executed by at least one processor to perform the operations described herein. A computer-readable storage device may include any non-transitory memory mechanism for storing information in a machine (e.g., computer) readable form. For example, a computer-readable storage device may include a read-only memory (ROM), a random access memory (RAM), a disk storage medium, an optical storage medium, a flash memory device, and other storage devices and media.
[0092] As used herein, the word "exemplary" means "serving as an example, instance, or illustration." Any embodiment described herein as "exemplary" is not necessarily to be construed as being preferred or advantageous over other embodiments. The terms "computing device," "user device," "communication station," "station," "handheld device," "mobile device," "wireless device," and "user equipment" (UE) as used herein refer to wireless communication devices such as cellular phones, smart phones, tablet computers, netbooks, wireless terminals, laptop computers, microcells, high data rate (HDR) user stations, access points, printers, point of sale devices, access terminals, or other personal communication system (PCS) devices. The device may be mobile or fixed.
[0093] As used in this document, the term "communication" is intended to include transmission, or reception, or both transmission and reception. The above terms may be particularly useful in claims when describing an organization of data transmitted by one device and received by another device, as requiring only the functionality of one of these devices would infringe the claim. Similarly, a two-way data exchange between two devices (during the exchange, both devices transmit and receive) can be described as "communication", where only the functionality of one of these devices is required. The term "communication" used herein for wireless communication signals includes transmitting wireless communication signals and / or receiving wireless communication signals. For example, a wireless communication unit capable of transmitting wireless communication signals may include a wireless transmitter and / or a wireless communication receiver, wherein the wireless transmitter transmits the wireless communication signal to at least one other wireless communication unit and the wireless communication receiver receives the wireless communication signal from at least one other wireless communication unit.
[0094] Some embodiments may be used in conjunction with various devices and systems, such as a personal computer (PC), a desktop computer, a mobile computer, a laptop computer, a portable computer, a tablet computer, a server computer, a handheld computer, a handheld device, a personal digital assistant (PDA) device, a handheld PDA device, an airborne device, an off-airborne device, a hybrid device, an in-vehicle device, an off-vehicle device, a mobile or portable device, a consumer device, a non-mobile or non-portable device, a wireless communication station, a wireless communication device, a wireless access point (AP), a wired or wireless router, a wired or wireless modem, a video device, an audio device, an audio video (A / V) device, a wired or wireless network, a wireless area network, a wireless video area network (WVAN), a local area network (LAN), a wireless LAN (WLAN), a personal area network (PAN), a wireless PAN (WPAN), etc.
[0095] Some embodiments may be used in conjunction with one of the following: one-way and / or two-way radio communication systems, cellular radio telephone communication systems, mobile phones, cellular phones, wireless phones, personal communication system (PCS) devices, PDA devices including wireless communication devices, mobile or portable global positioning system (GPS) devices, devices including GPS receivers or transceivers or chips, devices including RFID elements or chips, multiple-input multiple-output (MIMO) transceivers or devices, single-input multiple-output (SIMO) transceivers or devices, multiple-input single-output (MISO) transceivers or devices, devices including one or more internal antennas and / or external antennas, digital video broadcasting (DVB) devices or systems, multi-standard radio devices or systems, wired or wireless handheld devices (e.g., smart phones, wireless application protocol (WAP) devices), etc.
[0096] Some embodiments may be used in conjunction with one or more types of wireless communication signals and / or systems that comply with one or more wireless communication protocols, such as radio frequency (RF), infrared (IR), frequency division multiplexing (FDM), orthogonal FDM (OFDM), time division multiplexing (TDM), time division multiple access (TDMA), extended TDMA (E-TDMA), general packet radio service (GPRS), extended GPRS, code division multiple access (CDMA), wideband CDMA (WCDMA), CDMA 2000, single carrier CDMA, multi-carrier CDMA, multi-carrier modulation (MDM), discrete multi-tone (DMT), Bluetooth TM , Global Positioning System (GPS), Wi-Fi, Wi-Max, ZigBee TM , Ultra Wideband (UWB), Global System for Mobile Communications (GSM), 2G, 2.5G, 3G, 3.5G, 4G, fifth generation (5G) mobile network, 3GPP, Long Term Evolution (LTE), LTE Advanced (LTE advanced), Enhanced Data Rates for GSM Evolution (EDGE), etc. Other embodiments can be used for various other devices, systems and / or networks.
[0097] Although an example processing system has been described above, embodiments of the subject matter and functional operations described herein may be implemented in other types of digital electronic circuits, or in computer software, firmware, or hardware including the structures disclosed in this specification and their structural equivalents, or in a combination of one or more of them.
[0098] The embodiments of the subject matter and operations described herein may be implemented in digital electronic circuits, or in computer software, firmware or hardware including the structures disclosed in this specification and their structural equivalents, or in a combination of one or more of them. The embodiments of the subject matter described herein may be implemented as one or more computer programs, i.e., one or more components of computer program instructions, which are encoded on a computer storage medium to be executed by an information / data processing device or to control the operation of an information / data processing device. Alternatively or additionally, program instructions may be encoded on an artificially generated propagation signal, such as a machine-generated electrical, optical or electromagnetic signal, which is generated to encode information / data for transmission to a suitable receiver device to be executed by an information / data processing device. A computer storage medium may be or may be included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. In addition, although a computer storage medium is not a propagation signal, a computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagation signal. A computer storage medium may also be or may be included in one or more separate physical components or media (e.g., multiple CDs, disks or other storage devices).
[0099] The operations described herein may be implemented as operations performed by an information / data processing apparatus on information / data stored on one or more computer-readable storage devices or received from other sources.
[0100] The term "data processing apparatus" includes all kinds of apparatus, devices and machines for processing data, including, for example, a programmable processor, a computer, a system on a chip, or multiple or a combination of the foregoing. The apparatus may include special-purpose logic circuits, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, the apparatus may also include code that creates an execution environment for the relevant computer program, for example, code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform operating environment, a virtual machine, or a combination of one or more of them. The apparatus and the execution environment can implement a variety of different computing model infrastructures, such as network services, distributed computing, and grid computing architectures.
[0101] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language (including compiled or interpreted languages, declarative or procedural languages), and it may be deployed in any form, including as a stand-alone program or as a part, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but does not necessarily, correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or information / data (e.g., one or more scripts stored in a markup language file), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files storing one or more components, subroutines, or code portions). A computer program may be deployed to execute on one computer, or may be deployed to execute on multiple computers, where the multiple computers are located at one site, or distributed across multiple sites and interconnected by a communications network.
[0102] The processes and logic flows described herein can be performed in the following manner: one or more programmable processors execute one or more computer programs to perform actions by operating on input information / data and generating output. For example, processors suitable for executing computer programs include general-purpose microprocessors and special-purpose microprocessors, as well as any one or more processors of any kind of digital computer. In general, the processor will receive instructions and information / data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for performing actions according to instructions and one or more memory devices for storing instructions and data. In general, the computer also includes or is operably coupled to one or more large-capacity storage devices (e.g., magnetic disks, magneto-optical disks, or optical disks) for storing data to receive information / data from and / or transfer information / data to it. However, the computer does not necessarily have such a device. Devices suitable for storing computer program instructions and information / data include all forms of non-volatile memory, media, and memory devices, including, for example: semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM disks and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0103] To provide interaction with a user, embodiments of the subject matter described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information / data to the user, and a keyboard and pointing device (e.g., a mouse or trackball) that the user can use to provide input to the computer. Other kinds of devices may also be used to provide interaction with the user; for example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including voice, speech, or tactile input. In addition, the computer may interact with the user by sending files to and receiving files from a device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.
[0104] Embodiments of the subject matter described herein may be implemented in a computing system that includes a back-end component (e.g., as an information / data server), or in a computing system that includes a middleware component (e.g., an application server), or in a computing system that includes a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with embodiments of the subject matter described herein), or in any combination of one or more such back-end components, middleware components, or front-end components. The components of the system may be interconnected by any form or medium of digital information / data communication, such as a communication network. Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), interconnected networks (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0105] A computing system may include a client and a server. The client and the server are generally remote from each other and typically interact via a communication network. The relationship between the client and the server is due to computer programs running on respective computers and having a client-server relationship with each other. In some embodiments, the server transmits information / data (e.g., an HTML page) to a client device (e.g., to display the information / data to a user interacting with the client device and to receive user input from the user). Information / data generated at the client device (e.g., the result of a user interaction) can be received at the server from the client device.
[0106] Although this specification contains many specific embodiment details, these details should not be understood as limitations on the scope of any embodiment or what may be claimed, but should be understood as descriptions of features that are exclusive to a particular embodiment. Specific features described in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments individually or in any suitable sub-combination. In addition, although the above-mentioned features may be described as working in a particular combination, and even initially claimed as such, in some cases, one or more features may be removed from the claimed combination, and the claimed combination may be directed to a sub-combination or a variant of a sub-combination.
[0107] Similarly, although the drawings depict operations in a particular order, this should not be understood as requiring that the operations be performed in the particular order shown or in sequence, or that all of the operations shown be performed to achieve the desired result. In certain circumstances, multitasking and parallel processing may be advantageous. In addition, the separation of various system components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated into a single software product, or packaged as multiple software products.
[0108] Thus, specific embodiments of the present subject matter have been described. Other embodiments also fall within the scope of the appended claims. In some cases, the actions set forth in the claims can be performed in a different order and still achieve the desired results. In addition, the processes depicted in the accompanying drawings do not necessarily require the specific order shown or sequential order to achieve the desired results. In certain embodiments, multitasking and parallel processing may be advantageous.
[0109] Many modifications and other embodiments of the disclosures set forth herein will occur to those skilled in the art to which these embodiments relate, with the benefit of the foregoing description and the teachings presented in the associated drawings. Therefore, it should be understood that these embodiments are not limited to the specific embodiments disclosed, and modifications and other embodiments are also included within the scope of the appended claims. Although specific terms are employed herein, these terms are used only in a general and descriptive sense and not for the purpose of limitation.
Claims
1. A system comprising: a processor configured to execute a virtual computing storage emulation module for providing a virtual computing storage device; a storage element, wherein the virtual computing storage emulation module is configured to store data associated with the virtual computing storage device at the storage element; and The computing element, wherein the processor is further configured to execute a virtual computing storage emulation module to: receiving a first computing request associated with a virtual computing storage device, the first computing request complying with a first protocol; translating the first computing request into a second computing request, the second computing request complying with a second protocol; and The second computation request is sent to the computation element for generating an output in response to the second computation request.
2. The system according to claim 1, wherein: The storage element includes a solid state drive, and wherein the storage element and the computing element correspond to components of a computing storage device.
3. The system according to claim 1, wherein: The storage element and the computing element correspond to components of the server device.
4. The system according to claim 1, wherein: The storage element corresponds to a component of a storage device, and wherein the computing element corresponds to a component of a device distinct from the storage device.
5. The system according to claim 1, wherein: The processor is further configured to execute the virtual computing storage emulation module to advertise the availability of the virtual computing storage device.
6. The system according to claim 1, wherein: The system also includes a second storage element, wherein the processor is further configured to execute the virtual computing storage emulation module to store second data associated with the virtual computing storage device at the second storage element.
7. The system according to claim 6, wherein: A first address range of the virtual computing storage device is associated with a storage element, wherein a second address range of the virtual computing storage device is associated with a second storage element, and wherein the processor is further configured to execute the virtual computing storage emulation module to: In response to a first request to store data representing a first address range, storing data at a storage element; and In response to a second request to store second data representing a second address range, the second data is stored at the second storage element.
8. The system according to claim 6, wherein: The processor is further configured to execute the virtual computing storage emulation module to select a second storage element storing the second data based on a load balancing algorithm.
9. The system according to claim 1, wherein: The system also includes a second computing element, wherein the processor is further configured to execute the virtual computing storage emulation module to send a second computing request associated with the virtual computing storage device to the second computing element.
10. The system according to claim 9, wherein: The processor is further configured to execute the virtual compute storage emulation module to select a second compute element for the second compute request based on an address of data associated with the second compute request.
11. The system according to claim 9, wherein: The processor is further configured to execute the virtual computing storage emulation module to select a second computing element for a second computing request based on a load balancing algorithm.
12. The system of claim 1, wherein: The processor is further configured to execute the virtual computing storage emulation module to provide a second virtual computing storage device.
13. The system according to claim 12, wherein: The processor is also configured to execute the virtual computing storage emulation module to store second data associated with the second virtual computing storage device at the storage element.
14. The system according to claim 12, wherein: The processor is further configured to execute the virtual computing storage emulation module to send a second computing request associated with the second virtual computing storage device to the computing element.
15. A method comprising: providing a virtual computing storage device at a virtual computing storage device emulation module, wherein data associated with the virtual computing storage device is stored at a storage element; Receiving, at the virtual computing storage device emulation module, a computing request for a virtual computing storage device; and The translation of the computation request is sent to the computation element, wherein sending the translation of the computation request includes translating the computation request from a first protocol to a second protocol.
16. The method according to claim 15, wherein: Sending a translation of the compute request includes translating an address of a virtual compute storage device identified by the compute request into a translated address of a storage element.
17. The method according to claim 15, further comprising: receiving a storage request identifying a first address of a virtual computing storage device; as well as A translated storage request is sent to the storage element, the translated storage request identifying a translated address of the storage element.
18. A system comprising: a computing element of a first device; a storage element of a second device; Computational storage client; and A processor configured to: Receive a computing request from a computing storage client; sending a translation of the computational request to a computational element of the first device, wherein, when sending the translation of the computational request, the processor is configured to translate the computational request from a first protocol to a second protocol; receiving a storage request from a computational storage client; and The translation of the storage request is sent to a storage element of the second device.
19. The system of claim 18, wherein: The computing element corresponds to a field programmable gate array (FPGA).
Citation Information
Patent Citations
Constructing virtual motherboards and virtual storage devices
CN105723338A
Computing cluster updating system, method and device
CN110874256A