Systems and methods for data storage, and storage devices

CN118051180BActive Publication Date: 2026-09-25SAMSUNG ELECTRONICS CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202311526707.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2023-09-01
Filing Date
2023-11-16
Publication Date
2026-09-25
Estimated Expiration
2043-11-16

Smart Images

  • Figure CN118051180B_ABST
    Figure CN118051180B_ABST
Patent Text Reader

Abstract

Systems and methods for data storage, and storage devices are provided, the methods comprising: receiving, by a first storage device from a first set of resources, information for performing a first function on the first storage device using a first tool, and wherein the first storage device comprises the first tool and is associated with a second set of resources corresponding to the first set of resources.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application claims priority and benefit to U.S. Provisional Application No. 63 / 425,954, filed November 16, 2022, entitled “Polymorphic Computing Architecture for Computation Storage”; U.S. Application No. 18 / 296,727, filed April 6, 2023; and Korean Patent Application No. 10-2023-0116400, filed September 1, 2023, the entire contents of which are incorporated herein by reference. Technical Field

[0002] One or more aspects of one or more embodiments of this disclosure relate to systems and methods for polymorphic computing architectures for computing storage. As used herein, "polymorphism" means the ability to use different types of components interchangeably. Background Technology

[0003] This background section is intended to provide background information only, and the disclosure of any embodiments or concepts in this section does not constitute an admission that the embodiments or concepts are prior art.

[0004] In the field of computer storage, a system may include a host and one or more storage devices connected to (e.g., communicatively integrated into) the host. Such computer storage systems have become increasingly popular to some extent because they allow many different users to share the system's computing resources. As the number of users of such systems, and the number and complexity of applications running on them, have increased, storage demands have grown over time.

[0005] Therefore, there may be a need for methods, systems, and apparatuses suitable for using storage devices in improved storage systems. Summary of the Invention

[0006] One or more embodiments of this disclosure relate to computer storage systems and provide improvements to computing storage.

[0007] According to one or more embodiments of the present disclosure, a method for data storage is provided, the method comprising: receiving information from a first set of resources by a first storage device for performing a first function on the first storage device using a first tool, wherein the first storage device includes the first tool and is associated with a second set of resources corresponding to the first set of resources.

[0008] Based on the performance or power consumption associated with the first tool, the first tool may be selected to perform the first function.

[0009] The first set of resources may be a set of resources used to provide the interface to one or more applications and may be configured to manage the first resource corresponding to the first function, and the second set of resources may be a set of instances of resources configured to manage the second resource used to perform the first function using the first tool, the second resource being different from the first resource.

[0010] The second set of resources can be configured to receive information from the first set of resources for performing a first function on the first storage device using a first tool.

[0011] The third set of resources associated with the first set of resources can be configured to receive information from the first set of resources for performing a second function using a second tool that is different from the first tool.

[0012] The first tool may include dedicated processing circuitry, and the second tool may include general-purpose processing circuitry.

[0013] The third set of resources associated with the first set of resources can be configured to receive information from the first set of resources for performing a second function using a second storage device different from the first storage device.

[0014] The first tool may include at least one of an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a graphics processing unit (GPU), a neural processing unit (NPU), an advanced reduced instruction set computer (ARM), and a complex instruction set computer (CISC).

[0015] The method may further include: determining, based on a table indicating performance characteristics associated with a first tool or a second tool, that the first tool is capable of performing a first function more efficiently than a first processor or a second tool; selecting a first tool for performing the first function; and creating a second set of resources based on files stored in a storage device.

[0016] According to one or more other embodiments of the present disclosure, a system for data storage is provided, the system including a first storage device and configured to receive information from a first set of resources by the first storage device for performing a first function on the first storage device using a first tool, wherein the first storage device includes the first tool and is associated with a second set of resources corresponding to the first set of resources.

[0017] Based on the performance or power consumption associated with the first tool, the first tool may be selected to perform the first function.

[0018] The first set of resources may be a set of resources used to provide the interface to one or more applications and may be configured to manage the first resource corresponding to the first function, and the second set of resources may be a set of instances of resources configured to manage the second resource used to perform the first function using the first tool, the second resource being different from the first resource.

[0019] The second set of resources can be configured to receive information from the first set of resources for performing a first function on the first storage device using a first tool.

[0020] The third set of resources associated with the first set of resources can be configured to receive information from the first set of resources for performing a second function using a second tool that is different from the first tool.

[0021] The first tool may include dedicated processing circuitry, and the second tool may include general-purpose processing circuitry.

[0022] The third set of resources associated with the first set of resources can be configured to receive information from the first set of resources for performing a second function using a second storage device different from the first storage device.

[0023] The first tool may include at least one of an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a graphics processing unit (GPU), a neural processing unit (NPU), an advanced reduced instruction set computer (ARM), and a complex instruction set computer (CISC).

[0024] The system can be configured to: determine, based on a table indicating performance characteristics associated with a first tool or a second tool, that a first tool can perform a first function more efficiently than a first processor or a second tool; select a first tool for performing the first function; and create a second set of resources based on files stored in a storage device.

[0025] According to one or more other embodiments of the present disclosure, a storage device is provided, the storage device comprising: a computing module configured to perform a function on the storage device based on information received at the storage device from a set of resources, wherein the information is sent to the storage device based on the storage device, the computing module, and the set of resources being associated with a tool for performing the function.

[0026] The storage device may include the set of resources. Attached Figure Description

[0027] Non-limiting and non-exhaustive embodiments of this disclosure are described with reference to the accompanying drawings, wherein, unless otherwise stated, the same reference numerals denote the same parts throughout the various drawings.

[0028] Figure 1This is a system diagram depicting a polymorphic computing architecture for computing storage using interface containers and instance containers, according to one or more embodiments of the present disclosure.

[0029] Figure 2A This is a system diagram, according to one or more embodiments of the present disclosure, for describing the processing flow within a system for using interface containers and instance containers for computational storage.

[0030] Figure 2B This is a diagram depicting a table used in a system for computing storage using interface containers and instance containers, according to one or more embodiments of the present disclosure.

[0031] Figure 3 This is a flowchart depicting a method for using a polymorphic computing architecture for computation storage according to one or more embodiments of the present disclosure.

[0032] Throughout the accompanying drawings, corresponding reference numerals indicate corresponding components. Those skilled in the art will understand that the elements in the drawings are shown for simplicity and clarity and are not necessarily drawn to scale. For example, the dimensions of some elements, layers, and regions in the drawings may be exaggerated relative to other elements, layers, and regions to help improve clarity and understanding of the various embodiments. Furthermore, common but well-known elements and components unrelated to the description of the embodiments may not be shown to facilitate less obstructive observation of these various embodiments and to make the description clearer. Detailed Implementation

[0033] The aspects of this disclosure and methods for implementing them can be more readily understood by referring to the detailed description and accompanying drawings of one or more embodiments. Hereinafter, embodiments will be described in more detail with reference to the accompanying drawings. However, the described embodiments may be implemented in various different forms and should not be construed as being limited to the embodiments shown herein. Rather, these embodiments are provided as examples so that this disclosure will be thorough and complete and will fully convey the aspects of this disclosure to those skilled in the art. Therefore, descriptions of processes, elements, and techniques that are unnecessary for those skilled in the art to fully understand the aspects and features of this disclosure may be omitted.

[0034] Unless otherwise stated, the same reference numerals, characters, or combinations thereof denote the same elements throughout the drawings and written description, and therefore their description will not be repeated. Furthermore, for clarity, parts unrelated to the description of the embodiments may be omitted. In the drawings, the relative dimensions of elements, layers, and regions may be exaggerated for clarity.

[0035] In the detailed description, numerous specific details are set forth for illustrative purposes to provide a full understanding of the various embodiments. However, it will be clear that various embodiments may be practiced without these specific details or with one or more equivalent arrangements.

[0036] It will be understood that although the terms “zeroth,” “first,” “second,” “third,” etc., may be used herein to describe various elements, components, regions, layers, and / or portions, these elements, components, regions, layers, and / or portions should not be limited by these terms. These terms are used to distinguish one element, component, region, layer, or portion from another element, component, region, layer, or portion. Therefore, without departing from the spirit and scope of this disclosure, the first element, first component, first region, first layer, or first portion described below may be referred to as a second element, second component, second region, second layer, or second portion.

[0037] It will be understood that when an element or component is referred to as being "on," "connected to," or "joined to" another element or component, it may be directly on, connected to, or joined to the other element or component, or there may be one or more intermediate elements or components. However, "directly connected / directly joined" indicates that one component is directly connected to or joined to another component without any intermediate components. Similarly, other expressions describing relationships between components (such as "between," "immediately between," or "adjacent to" and "closely adjacent to") can be interpreted similarly. Furthermore, it will be understood that when an element or component is referred to as being "between" two elements or components, it may be the only element or component between the two elements or components, or there may be one or more intermediate elements or components.

[0038] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit this disclosure. As used herein, the singular form is intended to include the plural form as well, unless the context clearly indicates otherwise. It will also be understood that when the terms “comprising,” “having,” and “including” are used in this specification, they indicate the presence of the stated features, integrals, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integrals, steps, operations, elements, components, and / or groups thereof. As used herein, each of the terms “or” and “and / or” includes any and all combinations of one or more of the associated listed items.

[0039] For the purposes of this disclosure, when a statement such as “at least one of…” follows an element in a column, it modifies the entire column of elements, rather than individual elements in the column. For example, “at least one of X, Y, and Z” and “at least one selected from the group consisting of X, Y, and Z” can be interpreted as only X, only Y, only Z, or any combination of two or more of X, Y, and Z (such as XYZ, XY, YZ, and XZ).

[0040] As used herein, the terms “substantially,” “about,” “approximately,” and similar terms are used as terms of approximation rather than terms of degree and are intended to take into account the inherent biases of measured or calculated values ​​that would be recognized by one of ordinary skill in the art. As used herein, “about” or “approximately” includes stated values ​​and indicates an acceptable range of deviation for a particular value as determined by one of ordinary skill in the art, taking into account the measurement in question and errors associated with the measurement of a particular quantity (i.e., limitations of the measurement system). For example, “about” may mean within one or more standard deviations, or within ±30%, ±20%, ±10%, or ±5% of the stated value. Furthermore, the use of “may” in describing embodiments of this disclosure indicates “one or more embodiments of this disclosure.”

[0041] When one or more embodiments can be implemented differently, a particular order of processing can be performed in a manner different from that described. For example, two consecutively described processes can be performed substantially simultaneously or in the reverse order of their description.

[0042] Any component or combination of components described (e.g., in any system diagram included herein) may be used to perform one or more operations in any flowchart included herein. Furthermore, (i) the operations are merely examples and may involve various additional operations not explicitly covered, and (ii) the temporal order of the operations may be changed.

[0043] Electronic or electrical devices and / or any other related devices or components according to embodiments of the present disclosure described herein can be implemented using any suitable hardware, firmware (e.g., application-specific integrated circuits), software, or a combination of software, firmware, and hardware. For example, various components of such devices may be formed on a single integrated circuit (IC) chip or separate IC chips. Furthermore, various components of such devices may be implemented on a flexible printed circuit film, a carrier package, a printed circuit board (PCB), or formed on a substrate.

[0044] Furthermore, the various components of these devices can be processes or threads that execute computer program instructions and interact with other system components to perform the various functions described herein, running on one or more processors in one or more computing devices. The computer program instructions are stored in memory, which may be implemented in the computing device using standard memory devices, such as random access memory (RAM). The computer program instructions may also be stored in other non-transitory computer-readable media, such as CD-ROMs, flash drives, etc. Moreover, those skilled in the art will recognize that, without departing from the spirit and scope of the embodiments of this disclosure, the functions of various computing devices may be combined or integrated into a single computing device, or the functions of a particular computing device may be distributed across one or more other computing devices.

[0045] Unless otherwise defined, all terms used herein (including technical and scientific terms) shall have the same meaning as commonly understood by one of ordinary skill in the art to which the inventive concept pertains. It will also be understood that, unless clearly defined herein, terms (such as those defined in a general dictionary) shall be interpreted as having the same meaning as they have in the context of the relevant field and / or in this specification, and shall not be interpreted in an idealized or overly formalistic manner.

[0046] As mentioned above, in the field of computer storage, a system may include a host and one or more storage devices communicatively coupled to the host. The storage devices may be configured to perform functions for applications running on the host. For example, the storage device may be a computational storage device. As used herein, a "computational storage device" is a storage device that includes a computing module (e.g., processing circuitry) in addition to a storage device controller. The computing module may include (e.g., may be) general-purpose processing circuitry (e.g., a central processing unit (CPU)) or function-specific circuitry (e.g., a dedicated processing unit, an application-specific integrated circuit (ASIC), or a field-programmable gate array (FPGA)). The computing module may be configured to perform functions for applications running on the host. For example, the system may be configured such that an application can select a storage device approach for performing a function, rather than a host processor approach. For example, the storage device approach may be more efficient than the host processor approach in performing the function.

[0047] Storage devices may include one or more implementations (also referred to as implementations) for performing functions. For example, one storage device may be configured to perform compression operations using an ASIC, while another storage device may be configured to perform compression operations using a general-purpose processor. Although compression and scanning operations are discussed in this disclosure, it should be understood that this disclosure is not limited thereto. Compression and scanning operations are two of the most common operations performed by computational storage devices. One or more aspects of one or more embodiments of this disclosure may be used in conjunction with any function performed by a storage device.

[0048] In other words, computing storage devices can be diverse and offer a variety of functions and tools. Storage system users should be able to use specific functions regardless of the vendor and tools. One or more aspects of one or more embodiments of this disclosure introduce a way of achieving this goal using the concept of microservices.

[0049] The microservices concept enables flexible, polymorphic computing architectures that utilize a pair of containers for compute storage. This pair of containers allows for the decoupling of interfaces and their tools. For example, it allows for the decoupling of device management and host management. In one or more embodiments, the first container in this pair (the “interface container”, or, for example, the host container) may be responsible for implementing a common infrastructure to present a consistent (e.g., uniform) interface to applications, regardless of the underlying hardware and its capabilities (e.g., regardless of the underlying storage devices and their respective capabilities). This interface (e.g., the generic interface) allows applications to consistently reuse it even when a new storage device replaces an existing one. As used herein, a “container” (also referred to as a “set of resources”) is a unit of compute and resources associated with an operating system (OS) that implements specific functionality. For example, in some embodiments, a container is a package of software that includes all resources and dependencies for running software. In some embodiments, a container includes all resources for performing computations using compute storage.

[0050] The second container in this pair (“instance container”, e.g., device container) can be configured to interact with the interface container and can be responsible for implementing specific mechanisms for a given device and a given function. For example, the instance container can be used to implement interface semantics using the underlying hardware and the functions of the underlying hardware.

[0051] Depending on the capabilities of the given storage device, the instance container can be configured to run at a host or the device. If the instance container runs at a host, it can be configured to control the behavior of the storage device. For example, if the storage device has Non-Volatile Memory Fast (NVMe) capability (e.g., NVMeTP4091 capability), the instance container can be configured to include (e.g., have) tools using an NVMe-based interface. On the other hand, if the storage device includes a general-purpose embedded CPU (e.g., an advanced (Reduced Instruction Set Computing) RISC machine (ARM) or RISC-V), it can be configured to run the instance container within the storage device. In this case, the host can be configured to communicate with the storage device via Remote Procedure Call (RPC).

[0052] If no specific storage device or function exists that allows the instance container to run on a storage device, both the instance container and the interface container can be configured to run on the host. Optionally, the interface container can be configured to act as both an interface container and an instance container. In one or more embodiments, each specific device and function may have one instance container. Optionally, an instance container can be configured to support multiple devices and / or multiple functions. For example, a scanning operation can be implemented using a host CPU, embedded CPU, FPGA, ASIC, or a combination thereof, and a single set of scanning interfaces can be used for any of these tools. Thus, the interface container can be configured to provide a public microservice interface, and the instance container can be configured to implement microservices based on the type and capabilities of the storage device.

[0053] In summary, one or more aspects of one or more embodiments of this disclosure provide a container pair architecture for implementing functionality. This architecture can provide a consistent interface to applications, regardless of the tool, while optimizing for open tools. For example, applications may be able to select from a variety of tools with different performance characteristics to meet specific priorities (e.g., power budget metrics or latency metrics) while interacting only with the interface container. Therefore, the polymorphic computing architecture according to this disclosure provides flexibility regardless of device capabilities and platform (e.g., application) environment, and is easy to deploy and use.

[0054] Figure 1 This is a system diagram depicting a polymorphic computing architecture for computing storage using interface containers and instance containers, according to one or more embodiments of the present disclosure.

[0055] Reference Figure 1The system 1 for computing storage may include a host 100 and one or more storage devices 200 (e.g., computing storage devices) connected (e.g., communicatively coupled) to the host 100. For example, storage devices 200 may include a first storage device 200a and a second storage device 200b. In one or more embodiments, storage devices 200 may be connected to the host 100 via a communication link 124. The communication link 124 may include various technologies or be implemented in various ways. For example, the communication link 124 may be compatible with one or more of the following protocols: Representational State Transfer (REST) ​​ / Inter-Process Communication (IPC) / RPC over NVMe / NVMe over a Network (NVMe-oF) / Compute Fast Link (CXL) / Peripheral Component Interconnect Fast (PCIe) / Remote Direct Memory Access (RDMA) / Transmission Control Protocol (TCP) / Internet Protocol (IP), etc.

[0056] Host 100 may include a host processor (not shown). For example, the host processor may be a central processing unit (CPU) or a graphics processing unit (GPU). Host 100 may include one or more applications 111 running on host 100. For example, application 111 may run on the host processor of host 100. The host processor may be configured to perform functions for application 111. Application 111 may be configured to communicate with an end user via end-user interface 102 (e.g., end-user computing interface). Application 111 may communicate with one or more interface containers 106 (or “host tasks” or “host containers”) on host 100 via application programming interface (API) gateway 130. Application 111 may be configured to request functions to be performed by the host or by storage devices. In one or more embodiments, application 111 may request functions to be performed by storage devices by passing information for performing functions via API gateway 130 (which may also be simply referred to as “API”). In one or more embodiments, application 111 may communicate with API gateway 130 via one or more stub interfaces 104 (e.g., design pattern stub interfaces). API gateway 130 can be configured to communicate with one or more interface containers 106 (e.g., host containers) on host 100. API gateway 130 can be configured to determine whether interface container 106 and / or instance container 300 are available to perform a given requested function (e.g., whether the container has been downloaded for use on system 1). If interface container 106 and instance container 300 are available on system 1, API gateway 130 can invoke the requested function for application 111. As will be discussed further below, a given interface container 106 can be configured to provide a public microservice interface to application 111. A given interface container 106 can also be configured to manage resources in the host OS for performing specific functions. For example, a given interface container 106 can be configured to interact with a corresponding instance container 300 to perform a compression operation. Another given interface container 106 can be configured to provide a public microservice interface to application 111 to request a scan operation.

[0057] Any given functionality can be provided through one or more tools 112. For example, one tool for the compression operation can be implemented as a dedicated computing module 210, which is an ASIC of the first storage device 200a. Another tool for the compression operation can be implemented as a general-purpose computing module, which is an ARM processor of the first storage device 200a or the second storage device 200b. In some embodiments, one or more tools 112 may include one or more of ASIC, FPGA, GPU, NPU, ARM, and CISC.

[0058] Interface container 106 can be configured to communicate with one or more instance containers 300 (e.g., storage device containers) (e.g., make API calls to one or more instance containers 300 (e.g., storage device containers)) to enable the execution of a given function using any of one or more tools 112 provided by storage device 200. When the function is implemented via a dedicated computing module 210, the corresponding instance container 300 can be a pre-built container. For example, a pre-built container may include (e.g., be) hardware pre-built by the storage device vendor. When the function is implemented via a general-purpose computing module 210, the corresponding instance container 300 can be a custom container. For example, host 100 can be configured to download any program to general-purpose computing module 210 and run that program. Host 100 can be configured to communicate with storage device 200 via device driver 114.

[0059] Any given instance container 300 can be configured to manage device resources (e.g., storage device resources) and computation for a given tool 112. In other words, a given instance container 300 may be responsible for managing device-specific (e.g., storage device-specific) mechanisms for using a specific tool 112 on storage device 200 to perform a specific function. Instance container 300 can be configured to run on host 100 or on storage device 200 depending on the corresponding storage device capabilities. For example, if instance container 300 runs on host 100, it can be configured to control the behavior of the corresponding storage device 200. In one or more embodiments, if storage device 200 is configured for a specific protocol (e.g., NVMe TP4091 capability), the corresponding instance container 300 can be configured to have tools using an interface compatible with that specific protocol (e.g., an NVMe-based interface). On the other hand, if the storage device 200 has a general-purpose computing module 210 (e.g., an embedded CPU (such as ARM or RISC-V)), the storage device 200 can be configured to run a corresponding instance container 300 within the storage device 200. In such an embodiment using the general-purpose computing module 210, the host 100 can be configured to communicate with the storage device 200 via a remote procedure call (RPC) client 116.

[0060] In one or more embodiments, one or more storage devices 200 may include one or more of the following components. Storage device 200 may include storage medium 216. For example, storage medium 216 may include (e.g., may be) non-volatile memory for storing data. Storage device 200 may include storage device controller 212 for managing access to storage medium 216. Storage device 200 may include memory medium 214. Memory medium 214 may include (e.g., may be) volatile memory containing a data cache. Storage device 200 may be configured to communicate with host 100 via NVMe interface 202. Storage device 200 may include firmware 206 for performing one or more functions of storage device 200.

[0061] In one or more embodiments, one or more instance containers 300 may include one or more of the following components: Instance container 300 may include an RPC client 116 for communicating between host 100 and storage device 200. Instance container 300 may include a compute storage (CS) API 118 for providing standardized access to storage device 200. Instance container 300 may include a CS library 120 containing device-specific code. Instance container 300 may include a CS device driver 122 for communicating between host 100 and storage device 200. Instance container 300 may include an NVMe CS interface 204. Instance container 300 may include an RPC server 208 (e.g., an RPC server in a sandbox). For example, storage device 200 may internally run RPC server 208 to serve instance containers 300 or receive requests from other entities, including interface container 106, instance container 300, storage device 200, and host 100. RPC server 208 can run in a sandbox (such as a virtual machine) to protect storage device 200 from RPC server crashes or vulnerabilities. RPC server 208 can handle multiple protocols (including REST, IPC, RPC, TCP, IP, NVMe, CXL, PCIe, RDMA, Ethernet interface, and wireless network interface) through hardware interfaces.

[0062] Figure 2A This is a system diagram illustrating the processing flow within a system 1 for using computational storage with interface container 106 and instance container 300, according to one or more embodiments of the present disclosure.

[0063] Figure 2B This is a diagram depicting a table 50 used in a system 1 for computing storage using an interface container 106 and an instance container 300, according to one or more embodiments of the present disclosure.

[0064] Reference Figure 2AOne or more embodiments of this disclosure provide systems and methods that allow an application 111 running on host 100 to use functionality provided by storage device 200 (e.g., computing storage device) via an interface that remains consistent regardless of changes to the underlying storage device 200 and how the functionality is implemented on storage device 200. For example, storage device 200 may include a first storage device 200a and a second storage device 200b.

[0065] System 1 can provide container pairs to implement a polymorphic computing architecture. For example, each container pair may include an interface container 106 on host 100 and one of the storage devices 200 or an instance container 300 on host 100. Container pairs allow for decoupling of the interface between application 111 and storage device 200. As discussed above, interface containers 106a and 106b (or...) Figure 1 106) can provide public microservice interfaces to application 111 and manage host-side computing and host-side resources. Instance containers 300a to 300e (e.g., instance container A-1 300a included in the first storage device 200a and instance containers A-2 300b, B-1 300c, A-1 300d and B-1 300e included in the host 100) (or Figure 1 The instance container 300 can manage device-side computing and device-side resources while implementing specific microservices based on the capabilities of a specific storage device 200. In one or more embodiments, each interface container 106 may include one or more plugins 312 corresponding to the corresponding instance container 300 (e.g., XA-1, XA-2, and YA-1 included in interface container A 106a and XB-1 and YB-1 included in interface container B 106b). The plugins provide an API that allows application 111 to execute specific tools on storage device 200 through instance container 300 (e.g., tools A-1 112a, A-2 112b, and B-1 112c included in first storage device 200a and tools A-1 112d and B-1 112e included in second storage device 200b), instead of application 111 directly accessing storage device 200 containing data to process and execute tools on storage device 200. For example, in order to access the namespace associated with tool 112a (e.g., ... Figure 2B The data execution tool 112a, located on the namespace NSa described in the diagram, allows application 111 to first send a query to API gateway 130 and receive the location of interface container 106a and the namespace NSa associated with tool 112a. Then, application 111 can invoke plugin 312 (located on interface container 106a and associated with tool 112a)... Figure 2AThe API (described as "XA-1") provides access to instance container 300a. Tool 112a can be invoked by instance container 300a, and the results can be sent back to application 111.

[0066] As an example of a processing flow, the first storage device 200a of system 1 may be configured to perform a first function using a first tool 112c. The first function may be a compression algorithm (e.g., Gzip compression algorithm), and the first tool 112c may include (e.g., may be) an ASIC configured to perform the compression algorithm (see [link to documentation]). Figure 2B The second storage device 200b of System 1 can be configured to perform the first function using the second tool 112e. For example, the second tool 112e can be a general-purpose processor (e.g., an x86 microprocessor) configured to perform a compression algorithm (e.g., Gzip compression algorithm) (see [link]). Figure 2B The performance characteristics associated with the first tool 112c and the performance characteristics associated with the second tool 112e may be stored in Table 50 (e.g., a storage device function catalog) (see Table 50). Figure 2B Table 50 may also provide details of the location (e.g., a repository) where container files used to create a specific instance container 300c to perform a first function using the first tool 112c are stored. In other words, the instance container 300 can be created based on container files stored, for example, in a repository.

[0067] Application 111 running on host 100 may refer to Table 50 and may select the first tool 112c based on the determination that performing a function using the first tool 112c is more efficient than performing a function using the second tool 112e. Application 111 may send a request to API gateway 130 on host 100 to compress file F using the first tool 112c. API gateway 130 may determine whether a container file for performing a first function using the first tool 112c has been downloaded for use on system 1. If the container file has not been downloaded, API gateway 130 may cause host 100 to download the container file. The container file may be stored in one or more repositories 60. In one or more embodiments, the one or more repositories 60 may be located on host 100. In one or more embodiments, the one or more repositories 60 may be managed by a management entity. If the container file has been downloaded, API gateway 130 may invoke the function for application 111 based on the selected tool.

[0068] API gateway 130 can send information for performing a first function to interface container 106b associated with the first function. For example, interface container 106b can (e.g., using different storage devices and different types of processing units) manage host-side resources and computation for performing compression algorithms corresponding to various tools 112. Interface container 106b can also send information for performing the first function to instance container 300c based on instance container 300c corresponding to the first tool 112c. For example, file F can be sent from interface container 106b to instance container 300c. Instance container 300c can manage device-side resources and computation for performing compression algorithms using the first tool 112c (e.g., compressing file F using the first tool 112c).

[0069] In one or more embodiments, interface container 106 may be configured to communicate with its respective instance container 300 via IPC / function call 123. In one or more embodiments, instance containers 300 may be configured to communicate with their respective storage devices 200 via communication link 124 (as discussed above).

[0070] Therefore, while device-specific details are implemented by instance containers 300a to 300e, application 111 can use various storage device functions corresponding to various tools 112a to 112e by interacting with a common API (e.g., API gateway 130) and interface containers 106a and 106b.

[0071] Reference Figure 2B The above is about Figure 2A Table 50 discussed may include information for selecting a specific tool from tools 112a to 112e. For example, the first column 50a depicted in Table 50 may list the namespaces NS (e.g., NSa, NSb, NSc, NSd, and NSe) on storage device 200 corresponding to each of the specific tools 112a to 112e. That is, each tool 112a to 112e available on storage device 200a or 200b may be provided based on the namespace NS corresponding to the specific storage device 200a or 200b. For example, (as mentioned above regarding...) Figure 2AThe first tool 112c (discussed) may correspond to a first namespace NSc associated with the first storage device 200a. The second tool 112e may correspond to a second namespace NSe associated with the second storage device 200b. The second column 50b depicted in Table 50 may list the specific functions associated with each tool 112a to 112e. The third column 50c depicted in Table 50 may list the specific processing unit PU associated with each tool 112a to 112e. For example, and referring to the second column 50b and the third column 50c, tool 112a may be an ARM processor configured to perform a filter function for a scan operation; tool 112b may be an ASIC configured to perform a filter function for a scan operation; tool 112c may be an ASIC configured to perform a compression algorithm (e.g., the GZip algorithm); tool 112d may be an FPGA configured to perform a filter function for a scan operation; and tool 112e may be an x86 microprocessor configured to perform a compression algorithm (e.g., the GZip algorithm). The fourth column 50d depicted in Table 50 may list specific performance characteristics associated with each tool 112a to 112e. For example, performance characteristics may include performance per watt (e.g., average performance per power consumption in megabytes (MB) / watt) associated with each corresponding tool 112a to 112e, where higher performance characteristic values ​​may correspond to more efficient performance characteristics. In some embodiments, depending on the application, performance characteristics may include floating-point operations per second (FLOPS / s), MB / s, etc. The fifth column 50e depicted in Table 50 may list specific peak power consumption characteristics associated with each tool 112a to 112e. Performance characteristics and peak power consumption characteristics may be used to determine which tools can be utilized to meet priorities associated with System 1. For example, priorities may include power budgets (e.g., power budgets associated with host 100 and / or one or more storage devices 200) or latency requirements. The sixth column 50f depicted in Table 50 may be an interface column listing specific storage libraries (e.g., locations) for the interface container 106 associated with each tool 112a to 112e. The seventh column 50g depicted in Table 50 may be an instance column listing a specific repository for the instance containers 300 associated with each tool 112a to 112e. For example, the sixth column 50f as an interface column and the seventh column 50g as an instance column may identify a specific location of a container file (e.g., a container image) used to configure system 1 to perform a specific function.

[0072] Figure 3 This is a flowchart depicting a method 3000 for using a polymorphic computing architecture for computation storage according to one or more embodiments of the present disclosure. See also... Figure 1 To describe Figure 3 The description.

[0073] Reference Figure 3 Method 3000 may include the following example operations. API gateway 130 on host 100 may receive a request (3001) from application 111 for performing a first function. Application 111 may base its request on table 50, which indicates performance characteristics (see Table 50). Figure 2A The application 111 determines that a first tool on storage device 200 is more efficient at performing the first function than the host processor or a second tool (operation 3002). The application 111 can select a first tool for performing the first function (operation 3003). The application 111 can interact with an interface container 106 (e.g., a first set of resources) corresponding to the first function, and can cause the interface container 106 to send information for performing the first function on storage device 200 using the first tool to an instance container 300 (e.g., a second set of resources) corresponding to the interface container 106 (operation 3004). Based on the fact that storage device 200 includes the first tool and is associated with instance container 300, storage device 200 can receive information from interface container 106 (operation 3005). Storage device 200 can use the first tool to perform the first function (operation 3006). In one embodiment, an instance container 300 (e.g., a third set of resources) associated with interface container 106 (e.g., the first set of resources) may receive information from interface container 106 (e.g., the first set of resources) for performing a second function using a second tool different from the first tool. In another embodiment, an instance container 300 (e.g., a third set of resources) associated with interface container 106 (e.g., the first set of resources) may receive information from interface container 106 (e.g., the first set of resources) for performing a second function using a second storage device 200b different from the first storage device 200a. For example, the second function may be the same as or different from the first function, and is not limited thereto.

[0074] Therefore, one or more aspects of one or more embodiments of this disclosure can provide improvements to computing storage systems by providing a general interface to an application in the manner of an interface container and configuring device-specific tools in the manner of an instance container.

[0075] The disclosed example embodiments are extendable to, but not limited to, the following statements:

[0076] Statement 1. An example method includes: receiving information from a first set of resources by a first storage device for performing a first function on the first storage device using a first tool, wherein the first storage device includes the first tool and is associated with a second set of resources corresponding to the first set of resources.

[0077] Statement 2, Example Method includes the method described in Statement 1, wherein the first tool is selected to perform the first function based on the performance or power consumption associated with the first tool.

[0078] Declaration 3, Example Method includes the method described in any one of Declarations 1 and 2, wherein the first set of resources is a set of resources for providing the interface to one or more applications and is configured to manage the first resource corresponding to the first function; and the second set of resources is a group of instances of resources configured to manage the second resource for performing the first function using the first tool, the second resource being different from the first resource.

[0079] Statement 4, Example Method includes the method of any one of Statements 2 and 3, wherein the second set of resources is configured to: receive information from the first set of resources for performing a first function on the first storage device using the first tool.

[0080] Declaration 5, Example Method includes the method described in any one of Declarations 1 to 4, wherein a third set of resources associated with the first set of resources is configured to receive information from the first set of resources for performing a second function using a second tool different from the first tool.

[0081] Statement 6, Example Method includes the method described in Statement 5, wherein the first tool includes dedicated processing circuitry and the second tool includes general-purpose processing circuitry.

[0082] Statement 7, Example Method includes the method described in any one of Statements 1 to 4, wherein a third set of resources associated with the first set of resources is configured to: receive information from the first set of resources for performing a second function using a second storage device different from the first storage device.

[0083] Statement 8. The example method includes the method described in any one of Statements 1 to 4, wherein the first tool includes at least one of Application-Specific Integrated Circuit (ASIC), Field-Programmable Gate Array (FPGA), Graphics Processing Unit (GPU), Neural Processing Unit (NPU), Advanced Reduced Instruction Set Computing Machine (ARM), and Complex Instruction Set Computer (CISC).

[0084] Statement 9, the example method includes the method of any one of statements 1 to 4, and further includes: determining, based on a table indicating performance characteristics associated with the first tool or the second tool, that the first tool is capable of performing the first function more efficiently than the first processor or the second tool; selecting the first tool for performing the first function; and creating a second set of resources based on files stored in a storage device.

[0085] Statement 10. An example system for performing the method of any one of Statements 1 to 9 includes: a first storage device and a second storage device.

[0086] Statement 11. An example apparatus includes: a computing module configured to perform a first function as described in any one of statements 1 to 4 based on information received from a first set of resources.

[0087] Statement 12: The example apparatus includes the apparatus described in Statement 11, and includes a first set of resources.

[0088] While embodiments of the present disclosure have been specifically shown and described with reference to the examples described herein, those skilled in the art will understand that various changes in form and detail may be made therein without departing from the spirit and scope of the disclosure as set forth in the appended claims and their equivalents.

Claims

1. A method for data storage, the method comprising: Based on the fact that the first storage device includes a first tool and is associated with a second set of resources corresponding to the first set of resources, the first storage device receives information from the first set of resources for performing a first function on the first storage device using the first tool. The second set of resources is configured to manage the second resource used to perform the first function using the first tool. The first set of resources includes an interface container configured to provide public microservice interfaces to one or more applications, and The second set of resources includes instance containers configured to implement microservices based on the type and capacity of the first storage device. in: The first set of resources is a set of resources used to provide interfaces to the one or more applications, and is configured to manage the first resources corresponding to the first function, wherein the interfaces include public microservice interfaces; and The second group of resources is a group of instances of resources that are different from the first group of resources. The second set of resources is configured to receive information from the first set of resources for performing a first function on the first storage device using a first tool. The method further includes: Based on a table indicating the performance characteristics associated with the first tool or the second tool, it is determined that the first tool is able to perform the first function more efficiently than the first processor or the second tool; Select the first tool for performing the first function; and A second set of resources is created based on files stored on the storage device.

2. The method according to claim 1, wherein, The first tool is selected to perform the first function based on its performance or power consumption associated with it.

3. The method according to claim 1, wherein, The third set of resources associated with the first set of resources is configured to receive information from the first set of resources for performing a second function using a second tool that is different from the first tool.

4. The method according to claim 3, wherein, The first tool includes dedicated processing circuitry, and the second tool includes general-purpose processing circuitry.

5. The method according to claim 1, wherein, The third set of resources associated with the first set of resources is configured to receive information from the first set of resources for performing a second function using a second storage device different from the first storage device.

6. The method according to claim 1, wherein, The first tool includes at least one of an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a graphics processing unit (GPU), a neural processing unit (NPU), an advanced reduced instruction set computer (ARM), and a complex instruction set computer (CISC).

7. A system for data storage, the system comprising a first storage device and configured to: based on the first storage device including a first tool and associated with a second set of resources corresponding to a first set of resources, the first storage device receives information from the first set of resources for performing a first function on the first storage device using the first tool. The second set of resources is configured to manage the second resource used to perform the first function using the first tool. in, The first set of resources includes an interface container configured to provide public microservice interfaces to one or more applications, and The second set of resources includes instance containers configured to implement microservices based on the type and capacity of the first storage device. in: The first set of resources is a set of resources used to provide interfaces to the one or more applications, and is configured to manage the first resources corresponding to the first function, wherein the interfaces include public microservice interfaces; and The second group of resources is a group of instances of resources that are different from the first group of resources. The second set of resources is configured to receive information from the first set of resources for performing a first function on the first storage device using a first tool. The system is further configured as follows: Based on a table indicating the performance characteristics associated with the first tool or the second tool, it is determined that the first tool is able to perform the first function more efficiently than the first processor or the second tool; Select the first tool for performing the first function; and A second set of resources is created based on files stored on the storage device.

8. The system according to claim 7, wherein, The first tool is selected to perform the first function based on its performance or power consumption associated with it.

9. The system according to claim 7, wherein, The third set of resources associated with the first set of resources is configured to receive information from the first set of resources for performing a second function using a second tool that is different from the first tool.

10. The system according to claim 9, wherein, The first tool includes dedicated processing circuitry, and the second tool includes general-purpose processing circuitry.

11. The system according to claim 7, wherein, The third set of resources associated with the first set of resources is configured to receive information from the first set of resources for performing a second function using a second storage device different from the first storage device.

12. The system according to claim 7, wherein, The first tool includes at least one of an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a graphics processing unit (GPU), a neural processing unit (NPU), an advanced reduced instruction set computer (ARM), and a complex instruction set computer (CISC).

13. A storage device, comprising: The computing module is configured to perform functions on the storage device based on information received from the first set of resources at the storage device. The information is sent to the storage device, which is associated with the storage device, the computing module, the first set of resources, and the second set of resources, as well as the tools used to perform the function. The second set of resources is configured to manage a second resource used to perform the function using the tool. The first set of resources includes an interface container configured to provide public microservice interfaces to one or more applications, and The second set of resources includes instance containers configured to implement microservices based on the type and capabilities of the storage device. in: The first set of resources is a set of resources used to provide interfaces to the one or more applications, and is configured to manage the first resources corresponding to the functions, wherein the interfaces include public microservice interfaces; and The second group of resources is a group of instances of resources that are different from the first group of resources. The second set of resources is configured to receive information from the first set of resources for performing the function on the storage device using the tool. The second set of resources is created based on the following steps: Based on a table indicating performance characteristics associated with the tool or another tool, it is determined that the tool is capable of performing the function more efficiently than the first processor or the other tool; Select the tool used to perform the function; and A second set of resources is created based on files stored on the storage device.

14. The storage device according to claim 13, further comprising: The second set of resources.

Citation Information

Patent Citations

  • Automatic transfer, inserting and discharge system for manufacturing lens

    KR1020230116400A

  • System and method for storage device resource management

    CN114880253A

  • System and method for managing functions

    CN115309322A