EP3964956A1 - A mechanism to discover computational storage functions and devices - Google Patents

A mechanism to discover computational storage functions and devices Download PDF

Info

Publication number
EP3964956A1
EP3964956A1 EP21190626.8A EP21190626A EP3964956A1 EP 3964956 A1 EP3964956 A1 EP 3964956A1 EP 21190626 A EP21190626 A EP 21190626A EP 3964956 A1 EP3964956 A1 EP 3964956A1
Authority
EP
European Patent Office
Prior art keywords
discovery
computational
storage unit
statement
computational storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP21190626.8A
Other languages
German (de)
French (fr)
Inventor
Oscar P. Pinto
Vishwanath Maram
Hingkwan Huen
Danqing JIN
William Martin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of EP3964956A1 publication Critical patent/EP3964956A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof

Definitions

  • the disclosure relates generally to storage devices, and more particularly to discovery and use of computational storage devices.
  • Storage device capacities continue to increase, with the size of data stored on such storage devices increasing in parallel. Processing of that data-searching it, performing queries, and the like-en masse may require moving significant amounts of data from storage to memory for the processor to then process the data.
  • Embodiments of the disclosure include a storage device that may be associated with a computational storage unit. Upon discovery, the storage device or the computational storage unit may return information about the computational storage unit. This information may then permit an application to locate and use the computational storage unit.
  • first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first module could be termed a second module, and, similarly, a second module could be termed a first module, without departing from the scope of the disclosure.
  • the former might be longer than the latter.
  • the computer may spend more time bringing the data closer to the processor than to actually process the data.
  • the larger the amount of data to be moved the greater this difference may become.
  • the problem may be exacerbated if the results of the processing are to be moved back to storage: in such a situation the data is moved twice (once from storage to memory, and once from memory back to storage), which may double the time spent moving data to and from storage.
  • storage devices may include processing that is closer to the storage.
  • a storage device might include an in-storage processor, or a nearby accelerator. Because such resources may be located closer to the data, it may be possible to reduce (and/or potentially eliminate) the need to move data between storage and memory. By reducing or eliminating the time spent moving data between storage and memory, processing data closer to storage may result in faster overall processing of the data.
  • the host processor since the processing may be performed closer to the storage, the host processor may be freed to execute other commands.
  • applications need to be able to determine that such resources are available. If an application is not able to determine that a particular resource is available, the application might not use the resource. As a result, the application may send processing commands to the processor rather than a resource that might perform the command more quickly and/or more efficiently.
  • embodiments of the disclosure may include a system and method for discovery of such resources, which may be termed computational storage units.
  • computational storage units Once computational storage units are discovered, applications may receive notification of their existence, either through a discovery process being initiated by the application or through a discovery service that may identify the available computational storage units.
  • An application programming interface API may be used to permit the application to use the computational resource without having to determine the specific interface and/or protocol used by the computational storage unit, with the implementation of the API hiding these specifics from the application.
  • FIG. 1 shows a system including a storage device associated with a computational storage unit that may be discovered, according to embodiments of the disclosure.
  • machine 105 may include processor 110, memory 115, storage device 120, and discovery unit 125.
  • Processor 110 may be any variety of processor. (Processor 110, along with the other components discussed below, are shown outside the machine for ease of illustration: embodiments of the disclosure may include these components within the machine.) While FIG.
  • machine 105 may include any number of processors, each of which may be single core or multi-core processors, each of which may implement a Reduced Instruction Set Computer (RISC) architecture or a Complex Instruction Set Computer (CISC) architecture (among other possibilities), and may be mixed in any desired combination.
  • RISC Reduced Instruction Set Computer
  • CISC Complex Instruction Set Computer
  • Memory 115 may be any variety of memory, such as flash memory, Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Persistent Random Access Memory, Ferroelectric Random Access Memory (FRAM), or Non-Volatile Random Access Memory (NVRAM), such as Magnetoresistive Random Access Memory (MRAM) etc.
  • Memory 115 may also be any desired combination of different memory types, and may be managed by memory controller 130.
  • Memory 115 may be used to store data that may be termed "short-term”: that is, data not expected to be stored for extended periods of time. Examples of short-term data may include temporary files, data being used locally by applications (which may have been copied from other storage locations), and the like.
  • Processor 110 and memory 115 may also support an operating system under which various applications may be running. These applications may issue requests (which may also be termed commands) to read data from or write data to either memory 115 or storage device 120.
  • Storage device 120 may be accessed using device driver 135.
  • Storage device 120 may be associated with a computational storage unit. As discussed below with reference to FIGs. 3A-3D , the computational storage unit may be part of storage device 120 or it may be separate from storage device 120.
  • the phrase "associated with" is intended to cover both a storage device that includes a computational storage unit and a storage device that is paired with a computational storage unit that is not part of the storage device itself. In other words, a storage device and a computational storage unit may be said to be “paired" when they are physically separate devices but are connected in a manner that enables them to communicate with each other.
  • connection between the storage device and the paired computational storage unit might enable the two devices to communicate, but might not enable one (or both) devices to work with a different partner: that is, the storage device might not be able to communicate with another computational storage unit, and/or the computational storage unit might not be able to communicate with another storage device.
  • the storage device and the paired computational storage unit might be connected serially (in either order) to the fabric, enabling the computational storage unit to access information from the storage device in a manner another computational storage unit might not be able to achieve.
  • FIG. 1 uses the generic term “storage device”
  • embodiments of the disclosure may include any storage device formats that may be associated with computational storage, examples of which may include hard disk drives and Solid State Drives (SSDs). Any reference to “SSD” below should be understood to include such other embodiments of the disclosure.
  • SSD Solid State Drive
  • Discovery unit 125 may be any unit that may assist in the discovery of components within machine 105.
  • Discovery unit 125 may be a component that may send out queries along connections within machine 105 to determine what components are included within machine 105.
  • Discovery unit 125 may, for example, determine that storage device 120 is located in machine 105, and more particularly may discover that storage device 120 is associated with a computational storage unit and learn information about the computational storage unit.
  • Example implementations of discovery unit 125 may include a circuit built into processor 110, a management controller (such as a Baseboard Management Controller), and the like.
  • Discovery unit 125 may also be implemented as software running on processor 110. While FIG. 1 shows machine 105 including only one discovery unit 125, machine 105 may include two or more discovery units 125. In addition, while FIG. 1 shows machine 105 as including discovery unit 125, discovery unit 125 may be located in a machine that is remote from machine 105 across a network.
  • Fabric 140 is intended to represent any fabric along which information may be passed.
  • Fabric 140 may include fabrics that may be internal to machine 105, and which may use interfaces such as Peripheral Component Interconnect Express (PCIe), Serial AT Attachment (SATA), Small Computer Systems Interface (SCSI), among others.
  • PCIe Peripheral Component Interconnect Express
  • SATA Serial AT Attachment
  • SCSI Small Computer Systems Interface
  • Fabric 140 may also include fabrics that may be external to machine 105, and which may use interfaces such as Ethernet, Infiniband, or Fibre Channel, among others.
  • fabric 140 may support one or more protocols, such as Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP), among others.
  • NVMe Non-Volatile Memory Express
  • NVMe-oF NVMe over Fabrics
  • SSDP Simple Service Discovery Protocol
  • FIG. 1 shows both processor 105 and storage device 120 as being connected to fabric 140 because processor 105 and storage device 120 may communicate via a fabric.
  • storage device 120 may include a connection to fabric 120 that may include the ability to communicate with a remote machine and/or a network: for example, a network-capable Solid State Drive (SSD).
  • SSD Solid State Drive
  • machine 105 may include a connection to another machine and/or a network (which connection may be considered part of fabric 140)
  • storage device 120 might not be connected to another machine and/or network.
  • storage device 120 and its associated computational storage unit may still be reachable from a remote machine, but such commands may pass through processor 110 or discovery unit 125, among other possibilities, to reach storage device 120.
  • storage device 120 While the discussion above (and below) focuses on storage device 120 as being associated with a computational storage unit, embodiments of the disclosure may extend to devices other than storage devices that may include or be associated with a computational storage unit. Any reference to "storage device” above (and below) may be understood as also encompassing other devices that might be associated with a computational storage unit.
  • FIG. 2 shows details of machine 105 of FIG. 1 , according to embodiments of the disclosure.
  • machine 105 includes one or more processors 110, which may include memory controllers 130 and clocks 205, which may be used to coordinate the operations of the components of the machine.
  • processors 110 may also be coupled to memories 115, which may include random access memory (RAM), read-only memory (ROM), or other state preserving media, as examples.
  • RAM random access memory
  • ROM read-only memory
  • Processors 110 may also be coupled to storage devices 120, and to network connector 210, which may be, for example, an Ethernet connector or a wireless connector.
  • Processors 110 may also be connected to buses 215, to which may be attached user interfaces 220 and Input/Output (I/O) interface ports that may be managed using I/O engines 225, among other components.
  • I/O Input/Output
  • FIGs. 3A-3D show various arrangements of the computational storage unit that may be associated with storage device 120 of FIG. 1 , according to embodiments of the disclosure.
  • storage device 305 and computational device 310-1 (which may be termed merely a "device") are shown.
  • Storage device 305 may include controller 315 and storage 320-1, and may be reachable across queue pairs: queue pairs 325 may be used both for management of storage device 305 and to control I/O of storage device 305.
  • Computational device 310-1 may be paired with storage device 305.
  • Computational device 310-1 may include any number (one or more) processors 330, which may offer one or more services 335-1 and 335-2.
  • each processor 330 may offer any number (one or more) services 335-1 and 335-2 (although embodiments of the disclosure may include computational device 310-1 including exactly two services 335-1 and 335-2).
  • Computational device 310-1 may be reachable across queue pairs 340, which may be used for both management of computational device 310-1 and/or to control I/O of computational device 310-1.
  • Processor 330 may be thought of as near-storage processing: that is, processing that is closer to storage device 305 than processor 110 of FIG. 1 . Because processor 330 is closer to storage device 305, processor 330 may be able to execute commands on data stored in storage device 305 more quickly than for processor 110 of FIG. 1 to execute such commands. While not shown in FIG. 3A , processors 330 may have associated memory which may be used for local execution of commands on data stored in storage device 305.
  • FIG. 3A shows storage device 305 and computational device 310-1 as being separately reachable across fabric 140
  • embodiments of the disclosure may also include storage device 305 and computational device 310-1 being serially connected. That is, commands directed to storage device 305 and computational device 310-1 might both be received at the same physical connection to fabric 140 and may pass through one device to reach the other.
  • computational device 310-1 may receive commands directed to both computational device 310-1 and storage device 305: computational device 310-1 may process commands directed to computational device 310-1, and may pass commands directed to storage device 305 to storage device 305.
  • Services 335-1 and 335-2 may offer a number of different functions that may be executed on data stored in storage device 305.
  • services 335-1 and 335-2 may offer predefined functions, such as encryption, decryption, compression, and/or decompression of data, erasure coding, and/or applying regular expressions.
  • services 335-1 and 335-2 may offer more general functions, such as data searching and/or SQL functions.
  • Services 335-1 and 335-2 may also support running application-specific code. That is, the application using services 335-1 and 335-2 may provide custom code to be executed using data on storage device 305. Services 335-1 and 335-2 may also any combination of such functions. Table 1 lists some examples of services that may be offered by processor 330.
  • Table 1 Service Types Compression Encryption Database filter Erasure coding
  • RAID Hash/CRC RegEx pattern matching
  • Scatter Gather Pipeline Video compression Data Deduplication
  • BPF Berkeley packet filter
  • Processors 330 may be implemented in any desired manner.
  • Example implementations may include a local processor, such as Central Processing Unit (CPU), a Graphics Processing Unit (GPU), a General Purpose GPU (GPGPU), a Data Processing Unit (DPU), and a Tensor Processing Unit (TPU), among other possibilities.
  • Processors 330 may also be implemented using Field Programmable Gate Array (FPGA) or an Application-Specific Integrated Circuit (ASIC), among other possibilities.
  • FPGA Field Programmable Gate Array
  • ASIC Application-Specific Integrated Circuit
  • each processor may be implemented as described above. For example, computational device 310-1 might have one each of CPU, TPU, and FPGA, or computational device 310-1 might have two FPGAs, or computational device 310-1 might have two CPUs and one ASIC, etc.
  • computational device 310-1 or processor(s) 330 may be thought of as a computational storage unit.
  • FIG. 3A shows storage device 305 and computational device 310-1 as separate devices
  • computational device 310-2 may include controller 315, storage 320-1, and processor(s) 330 offering services 335-1 and 335-2.
  • management and I/O commands may be received via queue pairs 340.
  • FIG. 3B may still be thought of as including a storage device that is associated with a computational storage unit.
  • computational device 310-3 may include controller 315 and storage 320-1, as well as processor(s) 330 offering services 335-1 and 335-2. But even though computational device 310-3 maybe thought of as a single component including controller 315, storage 320-1, and processor(s) 330 (and also being thought of as a storage device associated with a computational storage unit), unlike the implementation shown in FIG. 3B controller 315 and processor(s) 330 may each include their own queue pairs 325 and 340 (again, which may be used for management and/or I/O). By including queue pairs 325, controller 315 may offer transparent access to storage 320-1 (rather than requiring all communication to proceed through processor(s) 330).
  • processor(s) may have proxied storage access 345 to use to access storage 320-1.
  • processor(s) 330 may be able to directly access the data from storage 320-1.
  • controller 315 and proxied storage access 345 are shown with dashed lines to represent that they are optional elements, and may be omitted depending on the implementation.
  • FIG. 3D shows yet another implementation.
  • computational device 310-4 is shown, which may include an array. Similar to computational device 310-3 of FIG. 3C , the array may include one or more storage 320-1 through 320-4. While FIG. 3D shows four storage elements, embodiments of the disclosure may include any number (one or more) of storage elements. In addition, the individual storage elements may be other storage devices, such as those shown in FIGs. 3A-3D .
  • computational device 310-4 may include more than one storage element 320-1 through 320-4
  • computational device 310-4 may include array controller 350.
  • Array controller 350 may manage how data is stored on and retrieved from storage elements 320-1 through 320-4. For example, if storage elements 320-1 through 320-4 are implemented as some level of a Redundant Array of Independent Disks (RAID), array controller 350 may be a RAID controller. If storage elements 320-1 through 320-4 are implemented using some form of Erasure Coding, then array controller 350 may be an Erasure Coding controller.
  • RAID Redundant Array of Independent Disks
  • FIG. 4 shows details of storage device 120 of FIG. 1 implemented using a Solid State Drive (SSD), according to embodiments of the disclosure.
  • Interface 405 may be an interface used to connect SSD 120 to machine 105 of FIG. 1 .
  • SSD 120 may include more than one interface 405: for example, one interface might be used for block-based read and write requests, and another interface might be used for key-value read and write requests. While FIG. 4 suggests that interface 405 is a physical connection between SSD 120 and machine 105 of FIG. 1 , interface 405 may also represent protocol differences that may be used across a common physical interface. For example, SSD 120 might be connected to machine 105 using a U.2 or an M.2 connector, but may support block-based requests and key-value requests: handling the different types of requests may be performed by a different interface 405.
  • SSD 120 might be connected to machine 105 using a U.2 or an M.2 connector, but may support block-based requests and key-value requests: handling the different types of requests may be performed by a different interface 405.
  • SSD 120 may also include host interface layer 410, which may manage interface 405. If SSD 120 includes more than one interface 405, a single host interface layer 410 may manage all interfaces, SSD 120 may include a host interface layer for each interface, or some combination thereof may be used. Host interface layer 410 may manage receiving requests across interface 405 and sending results back across interface 405.
  • SSD 120 may also include SSD controller 315, various channels 415-1, 415-2, 415-3, and 415-4, along which various flash memory chips 420-1, 420-2, 420-3, 420-4, 420-3, 420-6, 420-7, and 420-8 may be arrayed.
  • SSD controller 315 may manage sending read requests and write requests to flash memory chips 420-1 through 420-8 along channels 415-1 through 415-4.
  • FIG. 4 shows four channels and eight flash memory chips, embodiments of the disclosure may include any number (one or more, without bound) of channels including any number (one or more, without bound) of flash memory chips.
  • the space may be organized into blocks, which may be further subdivided into pages, and which may be grouped into superblocks.
  • the page is typically the smallest unit of data that may be read or written on an SSD. Page sizes may vary as desired: for example, a page may be 4 KB of data. If less than a full page is to be written, the excess space is "unused".
  • SSDs While pages may be written and read, SSDs typically do not permit data to be overwritten: that is, existing data may be not be replaced "in place” with new data. Instead, when data is to be updated, the new data is written to a new page on the SSD, and the original page is invalidated (marked ready for erasure).
  • SSD pages typically have one of three states: free (ready to be written), valid (containing valid data), and invalid (no longer containing valid data, but not usable until erased) (the exact names for these states may vary).
  • the block is the basic unit of data that may be erased. That is, pages are not erased individually: all the pages in a block are typically erased at the same time. For example, if a block contains 256 pages, then all 256 pages in a block are erased at the same time.
  • This arrangement may lead to some management issues for the SSD: if a block is selected for erasure that still contains some valid data, that valid data may need to be copied to a free page elsewhere on the SSD before the block may be erased.
  • the unit of erasure may differ from the block: for example, it may be a superblock, which may be a set of multiple blocks.
  • SSD controller 315 may include flash translation layer 425 (which may be termed more generally a logical-to-physical translation layer, for storage devices that do not use flash storage), receiver 430, transmitter 435, and log page unit 440.
  • Flash translation layer 425 may handle translation of logical block addresses (LBAs) or other logical IDs (as used by processor 110 of FIG. 1 ) and physical block addresses (PBAs) or other physical addresses where data is stored in flash chips 420-1 through 420-8.
  • LBAs logical block addresses
  • PBAs physical block addresses
  • Receiver 430 may be used to receive discovery requests from discovery unit 125 of FIG. 1
  • transmitter 435 may be used to transmit discovery responses back to discovery unit 125 of FIG. 1 .
  • Log page unit 440 may be used to generate log pages, which may be provide additional information to discovery unit 125 of FIG.
  • Table 2 shows information that may be included in a discovery response sent to discovery unit 125 of FIG. 1 ;
  • Table 4 shows information that may be included in a log page generated by log page unit 440.
  • FIGs. 5A-5B show discovery of storage device 120 of FIG. 1 , according to embodiments of the disclosure.
  • discovery request 505 may be sent to storage device 120.
  • Discovery request 505 may be a standard discovery request message, such as might be specified using protocols such as NVMe, NVMe-oF, SSDP, and others; or discovery request 505 may be a custom discovery request message designed to probe for attached devices and/or their controllers.
  • Discovery request 505 may also be sent using a custom plug-in software that may be used to recognize devices attached via a particular fabric and/or using a particular protocol.
  • the unit that sends discovery request 505 may be machine 105, discovery unit 125, or application 510.
  • machine 105 might not be the machine including storage device 120, as discussed further with reference to FIG. 6 below.
  • the protocol-for example, NVMe-oF- may specify how a remote discovery request may be used to identify devices and/or their controllers.
  • Discovery response 515 may include information 520 about one or more computational storage unit associated with (or included in) storage device 120. As discussed above with reference to FIG. 4 , Table 2 may represent information that may be included in discovery response 515 as information 520. Discovery response 515, like discovery request 505, may be in a form specified by a standard such as NVMe, NVMe-oF, SSDP, and others; or discovery response 515 may be a custom message including information about storage device 120 and associated computational storage.
  • log page request 525 may be sent to storage device 120.
  • Log page request 525 may be sent by the same unit that sends discovery request 505 of FIG. 5A , or log page request 525 may be sent by another unit.
  • log page request 525 may be omitted, if storage device 120 sends log page response 530 automatically.
  • Log page response 530 may include log page 535, which may provide information about a computational storage unit associated with storage device 120, as described above with reference to Table 4. If storage device 120 is associated with more than one computational storage unit, log page response 530 may include more than one log page 535: for example, log page response 530 may include one log page 535 for each computational storage unit associated with storage device 120.
  • the information about the computational storage unit associated with storage device 120-information 520 of FIG. 5A and log page 535 of FIG. 5B - may be forwarded to a discovery service, which may permit other devices and/or applications to be aware of the computational storage unit associated with storage device 120.
  • FIG. 6 shows various machines connected by fabric 140 of FIG. 1 including modules involved in the discovery and use of storage device 120 of FIG. 1 , according to embodiments of the disclosure.
  • Machine 105-1 may include storage device 120.
  • Machine 105-2 may include discovery unit 125.
  • Machine 105-3 may include discovery service 605, which may be used by other devices, machines, and/or applications to learn about the computational storage unit associated with storage device 120.
  • machine 105-4 may include application 510.
  • FIG. 6 thus demonstrates that storage device 120, discovery unit 125, discovery service 605, and application 510 may be located on different machines connected via network/fabric 140. But while FIG. 6 shows each unit being included with a different machine, embodiments of the disclosure may support any number of machines, each of which may include any or all of the units shown.
  • computational storage (CS) APIs may provide a standardized way to access compute offload capable devices. These may be connected, for example, in direct attached and/or network attached manners. In some embodiments of the disclosure, CS APIs may apply to these and other types of connected devices and may provide an interface that may be seamless and/or standardized across existing and/or future computational storage capable devices.
  • APIs may be used, as discussed below. Any function names, variable names, and constant names shown below are merely exemplary, and may be replaced with different such names.
  • csQueryCSPList() may be used to return one or more processors available based on search criteria.
  • csQueryCSPList() may take as input the name of a discovery service to query, and may return as output a buffer that lists the available computational storage units known by the discovery service. The returned list of computational storage units may be parsed and a selected entry may then be contacted by the application.
  • csGetCSPFromPath() may be used to return a computational storage unit associated with a given file or path.
  • csQueryCSPList() may take as input a string that denotes a path to a file or directory that resides on a device or a device path. The file/directory may also indirectly refer to a namespace and partition. If the path is only partially qualified, the path may be fully qualified before the function completes. csQueryCSPList() may then return the qualified name to the computational storage unit.
  • csQueryDeviceProperties() may be used to query a device for its properties.
  • csQueryDeviceProperties() may take as input a handle to a computational storage unit, and may return a buffer that includes the properties of the computational storage unit.
  • csQueryDeviceCapabilities() may be used to query a computational storage unit for its capabilities, such as the built-in computational storage-related functions.
  • csQueryDeviceCapabilities() may take as input a handle to a computational storage unit, and may return a buffer that includes the built-in computational storage-related functions of the computational storage unit.
  • APIs such as those shown above, the specifics of how the computational storage unit may be discovered may be hidden beneath the API itself.
  • An application may simply search for a computational storage unit using the APIs, without concern for the particular fabric connecting the application to the computational storage unit or the protocol the computational storage unit uses.
  • storage devices with associated computational storage units may be virtualized, so that the resources offered by the storage device/computational storage unit may be used by more than one application. That is, instead of the storage device/computational storage unit offering multiple interfaces (real or logical) that may be used by different applications, a virtual machine (VM) may manage access to the storage device/computational storage unit. Then, when an application desired to use the services offered by the storage device/computational storage unit, the application may communicate with the VM, which may act as the "sole" client of the storage device/computational storage unit.
  • VM virtual machine
  • FIG. 7 shows details of discovery unit 125 of FIG. 1 , according to embodiments of the disclosure.
  • discovery unit 125 is shown as including plug-in 705, transmitter 710, receiver 715, and memory 720.
  • Plug-in 705 may be used to construct discovery request 505 of FIG. 5A .
  • FIG. 7 shows discovery unit 125 as including one plug-in 705, embodiments of the disclosure may include any number (one or more) of plug-ins: each plug-in may be used to construct discovery request 505 of FIG. 5A appropriate to a particular fabric 140 of FIG. 1 and/or a particular protocol used to communicate over fabric 140 of FIG. ##A.
  • plug-in suggests that additional plug-ins 705 may be added to discovery unit 125 as needed, which is correct; but discovery unit 125 may also include the built-in equivalent of one or more plug-ins 705 for some fabrics 140 of FIG. 1 and/or protocols.
  • discovery unit 125 may have built-in information for communicating across fabrics such as Ethernet, Infiniband, and/or Fibre Channel, as well as information about protocols such as NVMe and/or NVMe-oF.
  • Transmitter 710 may be used to send discovery request 505 of FIG. 5A to storage device 120.
  • Transmitter 710 may also be used to send information 520 of FIG. 5A and/or log page 535 of FIG. 5B , once received from storage device 120 of FIG.
  • Receiver 715 may be used to receive discovery response 515 of FIG. 5A from storage device 120 of FIG. 1 .
  • Memory 720 may be used store information 520 of FIG. 5A and/or log page 535 of FIG. 5B as received from storage device 120 of FIG. 1 .
  • FIG. 8 shows details of discovery service 605 of FIG. 6 , according to embodiments of the disclosure.
  • discovery service 605 may include a data structure, such as a table, that may be stored in memory 115 of FIG. 1 (or another memory) within machine 105 of FIG. 1 .
  • This data structure may include information such as identifier 805 for a particular host (such as machine 105 of FIG. 1 ) including storage device 120 of FIG. 1 , identifier 810 including a device ID for storage device 120 of FIG. 1 , identifier 815 of a computational storage capability of storage device 120 of FIG. 1 , identifier 820 of a computational storage type of storage device 120 of FIG. 1 , information 520 of FIG.
  • identifier 825 may include the device ID for the paired device including the computational storage unit). Note that not all information shown in FIG. 6 must be included: embodiments of the disclosure may include or omit information as desired. Nor is the information shown necessarily representative of the form any information stored in discovery service 605 may take: for example, rather than an Internet Protocol (IP) address, identifier 805 might just include a host ID of some sort, and leave resolution of the network address from the host ID to some other service.
  • IP Internet Protocol
  • identifiers 810 and/or 825 may be local device IDs that are not necessarily globally unique: for example, identifiers 810 and/or 825 may be enumeration IDs assigned to the device(s) when enumerated during discovery. Alternatively, identifiers 810 and/or 825 may be globally unique identifiers such as a device serial number.
  • FIG. 9 shows a flowchart of an example high-level overview of how discovery may be performed, according to embodiments of the disclosure.
  • discovery may begin. Discovery may be started during enumeration of devices in machine 105 of FIG. 1 , or discovery may be started when application 510 of FIGs. 5A-5B is interested in locating a device including a particular computational storage unit.
  • discovery unit 125 of FIG. 1 may determine the connections available. These connections may include the type of fabric 140 of FIG. 1 and/or the protocols that may be used across fabric 140 of FIG. 1 . Based on the available connections, at block 915, discovery unit 125 of FIG. 1 may invoke the appropriate discovery code (built-in) or an appropriate plug-in.
  • discovery unit 125 of FIG. 1 may attempt to locate one or more devices across fabric 140 of FIG. 4 and using a particular protocol across fabric 140 of FIG. 1 .
  • Block 920 may involve sending discovery request 505 of FIG. 5A using the particular protocol over fabric 140 of FIG. 1 .
  • discovery unit 125 of FIG. 1 may determine whether a device (or its controller) was located or not. Block 925 may involve determining whether discovery unit 125 of FIG. 1 has received discovery response 515 of FIG. 5A from storage device 120. If the device was located, then at block 930 discovery unit 125 of FIG. 1 may return the identified device and/or its service (function) to application 510 of FIG. 5A . Block 930 may also be used to transmit the identified device and/or its service (function) to discovery service 605 of FIG. 6 .
  • FIG. 9 shows a linear sequence without any repetition
  • embodiments of the disclosure may include discovery unit 125 of FIG. 1 sending multiple discovery requests 505 of FIG. 5A using multiple protocols across multiple fabrics 140 of FIG. 1 .
  • FIG. 9 is not intended to imply that the operations shown in FIG. 9 are performed once and once only.
  • FIG. 10 shows a flowchart of an example procedure for storage device 120 of FIG. 1 to be discovered by machine 105 of FIG. 1 , discovery unit 125 of FIG. 1 , and/or application 510 of FIGs. 5A-5B , according to embodiments of the disclosure.
  • any reference to discovery unit 125 of FIG. 1 should be understood to include host 105 of FIG. 1 and/or application 510 of FIGs. 5A-5B as substitutes for discovery unit 125 of FIG. 1 .
  • storage device 120 of FIG. 1 may receive discovery request 505 of FIG. 5A from discovery unit 125 of FIG. 1 .
  • storage device 120 of FIG. 1 may generate discovery response 515 of FIG. 5A .
  • storage device 120 of FIG. 1 may send discovery response 515, which may include information 520 of FIG. 5A , to discovery unit 125 of FIG. 1 .
  • storage device 120 of FIG. 1 may receive log page request 525 of FIG. 5B from discovery unit 125 of FIG. 1 .
  • Block 1020 may be omitted, as shown by dashed line 1025.
  • log page unit 440 of FIG. 4 may generate log page 535 of FIG. 5B .
  • storage device 120 of FIG. 1 may send log page response 530 of FIG. 5B , including log page 535 of FIG. 5B , to discovery unit 125 of FIG. 1 . If multiple log pages 535 of FIG. 5B are to be generated (for example, if storage device 120 of FIG.
  • blocks 1030 and 1035 may be repeated as often as necessary, as shown by dashed line 1040. Finally, if no log page 535 is to be generated, then blocks 1030 and 1035 may be omitted, as shown by dashed line 1045.
  • FIG. 11 shows a flowchart of an example procedure for machine 105 of FIG. 1 , discovery unit 125 of FIG. 1 , and/or application 510 of FIGs. 5A-5B to discover storage device 120 of FIG. 1 , according to embodiments of the disclosure.
  • any reference to discovery unit 125 of FIG. 1 should be understood to include host 105 of FIG. 1 and/or application 510 of FIGs. 5A-5B as substitutes for discovery unit 125 of FIG. 1 .
  • discovery unit 125 of FIG. 1 may send discovery request 505 of FIG. 5A to storage device 120 of FIG. 1 .
  • discovery unit 125 of FIG. 1 may receive discovery response 515 of FIG. 5A , which may include information 520 of FIG. 5A , from storage device 120 of FIG. 1 .
  • discovery unit 125 of FIG. 1 may send log page request 525 of FIG. 5B to storage device 120 of FIG. 1 .
  • Block 1115 may be omitted, as shown by dashed line 1120.
  • discovery unit 125 of FIG. 1 may receive log page response 530 of FIG. 5B , which may include log page 535 of FIG. 5B , from storage device 120 of FIG. 1 .
  • discovery unit 125 of FIG. 1 may forward information 520 of FIG. 5A and/or log page 535 of FIG. 5B to discovery service 605 of FIG. 6 .
  • Blocks 1125 and 1130 may be variously omitted, as shown by dashed lines 1135 and 1140.
  • FIG. 12 shows a flowchart of an example procedure for discovery service 605 of FIG. 6 to use information about a computational storage unit, according to embodiments of the disclosure.
  • discovery service 605 of FIG. 6 may receive information 520 of FIG. 5A and/or log page 535 of FIG. 5B from discovery unit 125 of FIG. 1 , machine 105 of FIG. 1 , and/or application 510 of FIGs. 5A-5B .
  • discovery service 605 of FIG. 6 may store information 520 of FIG. 5A and/or log page 535 of FIG. 5B .
  • discovery service 605 of FIG. 6 may receive a request from application 510 of FIGs. 5A-5B for information 520 of FIG.
  • discovery service 605 of FIG. 6 may return information 520 of FIG. 5A and/or log page 535 of FIG. 5B at storage device 120 of FIG. 1 to application 510 of FIGs. 5A-5B .
  • FIG. 13 shows a flowchart of an example procedure for application 510 of FIGs. 5A-5B to locate and use a computational storage unit, according to embodiments of the disclosure.
  • application 510 of FIGs. 5A-5B may identify storage device 120 of FIG. 1 to be used by application 510 of FIGs. 5A-5B .
  • identifying storage device 120 of FIG. 1 should be understood to mean identifying a particular functionality of interest to application 510 of FIGs. 5A-5B , rather than literally identifying a particular storage device to be the one sought.
  • 5A-5B might indicate a desire to use a storage device that supports data encryption, or that has some minimum available capacity: these criteria may (indirectly) identify storage device 120 of FIG. 1 as being usable by application 510 of FIGs. 5A-5B (and there may also be other storage devices available that might also be usable by application 510 of FIGs. 5A-5B ). But in embodiments of the disclosure, application 510 of FIGs. 5A-5B may specifically identify storage device 120 of FIG. 1 as being the one storage device of interest.
  • application 510 of FIGs. 5A-5B may send discovery request 505 of FIG. 5A to storage device 120 of FIG. 1 to discover its computational storage capabilities.
  • application 510 of FIGs. 5A-5B may send a query to discovery service 605 of FIG. 6 to learn the computational storage capabilities of storage device 120 of FIG. 1 .
  • application 510 of FIGs. 5A-5B may receive discovery response 515 of FIG. 5A or a result of the query sent to discovery service 605 of FIG. 6 .
  • application 510 of FIGs. 5A-5B may send a command to storage device 120 of FIG. 1 .
  • FIG. 14 shows a flowchart of an example procedure for application 510 of FIGs. 5A-5B to identify a computational storage unit, according to an embodiment of the disclosure.
  • application 510 of FIGs. 5A-5B might not literally identify storage device 120 of FIG. 1 , but instead might "identify" storage device 120 of FIG. 1 based on some criteria for the desired storage device.
  • application 510 of FIGs. 5A-5B may identify storage device 120 of FIG. 1 by type.
  • application 510 of FIGs. 5A-5B may identify storage device 120 of FIG. 1 by capability.
  • application 510 of FIGs. 5A-5B may also specify other criteria (not described in FIG. 14 ) that may be used to identify storage device 120 of FIG. 1 .
  • FIGs. 9-14 some embodiments of the disclosure are shown. But a person skilled in the art will recognize that other embodiments of the disclosure are also possible, by changing the order of the blocks, by omitting blocks, or by including links not shown in the drawings. All such variations of the flowcharts are considered to be embodiments of the disclosure, whether expressly described or not.
  • Embodiments of the disclosure offer technical advantages over the prior art.
  • applications may locate a storage device associated with a computational storage unit that may satisfy the requirements of the application.
  • applications may be able to locate such storage devices with associated computational storage units using commands, regardless of the protocol supported by the storage device/computational storage unit and/or the fabric used to communicate with the storage device/computational storage unit: the API may handle translation of a shared command structure into a command appropriate to the particular storage device/computational storage unit.
  • machine or machines may be controlled, at least in part, by input from conventional input devices, such as keyboards, mice, etc., as well as by directives received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signal.
  • VR virtual reality
  • machine is intended to broadly encompass a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together.
  • Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., as well as transportation devices, such as private or public transportation, e.g., automobiles, trains, cabs, etc.
  • the machine or machines may include embedded controllers, such as programmable or non-programmable logic devices or arrays, Application Specific Integrated Circuits (ASICs), embedded computers, smart cards, and the like.
  • the machine or machines may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communicative coupling.
  • Machines may be interconnected by way of a physical and/or logical network, such as an intranet, the Internet, local area networks, wide area networks, etc.
  • network communication may utilize various wired and/or wireless short range or long range carriers and protocols, including radio frequency (RF), satellite, microwave, Institute of Electrical and Electronics Engineers (IEEE) 802.11, Bluetooth ® , optical, infrared, cable, laser, etc.
  • RF radio frequency
  • IEEE Institute of Electrical and Electronics Engineers
  • Embodiments of the present disclosure may be described by reference to or in conjunction with associated data including functions, procedures, data structures, application programs, etc. which when accessed by a machine results in the machine performing tasks or defining abstract data types or low-level hardware contexts.
  • Associated data may be stored in, for example, the volatile and/or non-volatile memory, e.g., RAM, ROM, etc., or in other storage devices and their associated storage media, including hard-drives, floppy-disks, optical storage, tapes, flash memory, memory sticks, digital video disks, biological storage, etc.
  • Associated data may be delivered over transmission environments, including the physical and/or logical network, in the form of packets, serial data, parallel data, propagated signals, etc., and may be used in a compressed or encrypted format. Associated data may be used in a distributed environment, and stored locally and/or remotely for machine access.
  • Embodiments of the disclosure may include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors, the instructions comprising instructions to perform the elements of the disclosures as described herein.
  • the various operations of methods described above may be performed by any suitable means capable of performing the operations, such as various hardware and/or software component(s), circuits, and/or module(s).
  • the software may comprise an ordered listing of executable instructions for implementing logical functions, and may be embodied in any "processor-readable medium" for use by or in connection with an instruction execution system, apparatus, or device, such as a single or multiple-core processor or processor-containing system.
  • a software module may reside in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD ROM, or any other form of storage medium known in the art.
  • RAM Random Access Memory
  • ROM Read Only Memory
  • EPROM Electrically Programmable ROM
  • EEPROM Electrically Erasable Programmable ROM
  • registers hard disk, a removable disk, a CD ROM, or any other form of storage medium known in the art.
  • Embodiments of the disclosure may extend to the following statements, without limitation:

Abstract

A device is described. The device may include a connector to connect the device to a component. The device may also include a computational storage unit. A receiver may receive a discovery request from a discovery service, and a transmitter may transmit a discovery response to the discovery service, the discovery response including information about the computational storage unit.

Description

    RELATED APPLICATION DATA
  • This application claims the benefit of U.S. Provisional Patent Application Serial No. 63/073,922, filed September 2, 2020 , and U.S. Provisional Patent Application Serial No. 63/144,469, filed February 1, 2021 , both of which are incorporated by reference herein for all purposes.
  • FIELD
  • The disclosure relates generally to storage devices, and more particularly to discovery and use of computational storage devices.
  • BACKGROUND
  • Storage device capacities continue to increase, with the size of data stored on such storage devices increasing in parallel. Processing of that data-searching it, performing queries, and the like-en masse may require moving significant amounts of data from storage to memory for the processor to then process the data.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The drawings described below are examples of how embodiments of the disclosure may be implemented, and are not intended to limit embodiments of the disclosure. Individual embodiments of the disclosure may include elements not shown in particular figures and/or may omit elements shown in particular figures. The drawings are intended to provide illustration and may not be to scale.
    • FIG. 1 shows a system including a storage device associated with a computational storage unit that may be discovered, according to embodiments of the disclosure.
    • FIG. 2 shows details of the machine of FIG. 1, according to embodiments of the disclosure.
    • FIG. 3A shows a first example arrangement of a computational storage unit that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 3B shows a second example arrangement of a computational storage unit that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 3C shows a third example arrangement of a computational storage unit that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 3D shows a fourth example arrangement of a computational storage unit that may be associated with the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 4 shows details of the storage device of FIG. 1 implemented using a Solid State Drive (SSD), according to embodiments of the disclosure.
    • FIG. 5A shows discovery of the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 5B continues the discovery of the storage device of FIG. 1 shown in FIG. 5A, according to embodiments of the disclosure.
    • FIG. 6 shows various machines connected by the fabric of FIG. 1 including modules involved in the discovery and use of the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 7 shows details of the discovery unit of FIG. 1, according to embodiments of the disclosure.
    • FIG. 8 shows details of the discovery service of FIG. 6, according to embodiments of the disclosure.
    • FIG. 9 shows a flowchart of an example high-level overview of how discovery may be performed, according to embodiments of the disclosure.
    • FIG. 10 shows a flowchart of an example procedure for the storage device of FIG. 1 to be discovered by the machine of FIG. 1, the discovery unit of FIG. 1, and/or the application of FIGs. 5A-5B, according to embodiments of the disclosure.
    • FIG. 11 shows a flowchart of an example procedure for by the machine of FIG. 1, the discovery unit of FIG. 1, and/or the application of FIGs. 5A-5B to discover the storage device of FIG. 1, according to embodiments of the disclosure.
    • FIG. 12 shows a flowchart of an example procedure for the discovery service of FIG. 6 to use information about a computational storage unit, according to embodiments of the disclosure.
    • FIG. 13 shows a flowchart of an example procedure for the application of FIGs. 5A-5B to locate and use a computational storage unit, according to embodiments of the disclosure.
    • FIG. 14 shows a flowchart of an example procedure for the application of FIGs. 5A-5B to identify a computational storage unit, according to an embodiment of the disclosure.
    SUMMARY
  • Embodiments of the disclosure include a storage device that may be associated with a computational storage unit. Upon discovery, the storage device or the computational storage unit may return information about the computational storage unit. This information may then permit an application to locate and use the computational storage unit.
  • DETAILED DESCRIPTION
  • Reference will now be made in detail to embodiments of the disclosure, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth to enable a thorough understanding of the disclosure. It should be understood, however, that persons having ordinary skill in the art may practice the disclosure without these specific details. In other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments.
  • It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first module could be termed a second module, and, similarly, a second module could be termed a first module, without departing from the scope of the disclosure.
  • The terminology used in the description of the disclosure herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used in the description of the disclosure and the appended claims, the singular forms "a", "an", and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term "and/or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms "comprises" and/or "comprising," when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The components and features of the drawings are not necessarily drawn to scale.
  • When comparing the time required to move the data from storage to memory with the time required to process the data, the former might be longer than the latter. In other words, the computer may spend more time bringing the data closer to the processor than to actually process the data. The larger the amount of data to be moved, the greater this difference may become. The problem may be exacerbated if the results of the processing are to be moved back to storage: in such a situation the data is moved twice (once from storage to memory, and once from memory back to storage), which may double the time spent moving data to and from storage.
  • A need remains for a mechanism for discovery and use of computational storage resources.
  • In embodiments of the disclosure, storage devices may include processing that is closer to the storage. For example, a storage device might include an in-storage processor, or a nearby accelerator. Because such resources may be located closer to the data, it may be possible to reduce (and/or potentially eliminate) the need to move data between storage and memory. By reducing or eliminating the time spent moving data between storage and memory, processing data closer to storage may result in faster overall processing of the data. In addition, since the processing may be performed closer to the storage, the host processor may be freed to execute other commands.
  • But to be able to use such resources, applications need to be able to determine that such resources are available. If an application is not able to determine that a particular resource is available, the application might not use the resource. As a result, the application may send processing commands to the processor rather than a resource that might perform the command more quickly and/or more efficiently.
  • Thus, embodiments of the disclosure may include a system and method for discovery of such resources, which may be termed computational storage units. Once computational storage units are discovered, applications may receive notification of their existence, either through a discovery process being initiated by the application or through a discovery service that may identify the available computational storage units. An application programming interface (API) may be used to permit the application to use the computational resource without having to determine the specific interface and/or protocol used by the computational storage unit, with the implementation of the API hiding these specifics from the application.
  • FIG. 1 shows a system including a storage device associated with a computational storage unit that may be discovered, according to embodiments of the disclosure. To enable discovery of a storage device associated with a computational storage unit, machine 105 may include processor 110, memory 115, storage device 120, and discovery unit 125. Processor 110 may be any variety of processor. (Processor 110, along with the other components discussed below, are shown outside the machine for ease of illustration: embodiments of the disclosure may include these components within the machine.) While FIG. 1 shows a single processor 110, machine 105 may include any number of processors, each of which may be single core or multi-core processors, each of which may implement a Reduced Instruction Set Computer (RISC) architecture or a Complex Instruction Set Computer (CISC) architecture (among other possibilities), and may be mixed in any desired combination.
  • Processor 110 may be coupled to memory 115. Memory 115 may be any variety of memory, such as flash memory, Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Persistent Random Access Memory, Ferroelectric Random Access Memory (FRAM), or Non-Volatile Random Access Memory (NVRAM), such as Magnetoresistive Random Access Memory (MRAM) etc. Memory 115 may also be any desired combination of different memory types, and may be managed by memory controller 130. Memory 115 may be used to store data that may be termed "short-term": that is, data not expected to be stored for extended periods of time. Examples of short-term data may include temporary files, data being used locally by applications (which may have been copied from other storage locations), and the like.
  • Processor 110 and memory 115 may also support an operating system under which various applications may be running. These applications may issue requests (which may also be termed commands) to read data from or write data to either memory 115 or storage device 120. Storage device 120 may be accessed using device driver 135. Storage device 120 may be associated with a computational storage unit. As discussed below with reference to FIGs. 3A-3D, the computational storage unit may be part of storage device 120 or it may be separate from storage device 120. The phrase "associated with" is intended to cover both a storage device that includes a computational storage unit and a storage device that is paired with a computational storage unit that is not part of the storage device itself. In other words, a storage device and a computational storage unit may be said to be "paired" when they are physically separate devices but are connected in a manner that enables them to communicate with each other.
  • In addition, the connection between the storage device and the paired computational storage unit might enable the two devices to communicate, but might not enable one (or both) devices to work with a different partner: that is, the storage device might not be able to communicate with another computational storage unit, and/or the computational storage unit might not be able to communicate with another storage device. For example, the storage device and the paired computational storage unit might be connected serially (in either order) to the fabric, enabling the computational storage unit to access information from the storage device in a manner another computational storage unit might not be able to achieve.
  • While FIG. 1 uses the generic term "storage device", embodiments of the disclosure may include any storage device formats that may be associated with computational storage, examples of which may include hard disk drives and Solid State Drives (SSDs). Any reference to "SSD" below should be understood to include such other embodiments of the disclosure.
  • Discovery unit 125 may be any unit that may assist in the discovery of components within machine 105. Discovery unit 125 may be a component that may send out queries along connections within machine 105 to determine what components are included within machine 105. Discovery unit 125 may, for example, determine that storage device 120 is located in machine 105, and more particularly may discover that storage device 120 is associated with a computational storage unit and learn information about the computational storage unit. Example implementations of discovery unit 125 may include a circuit built into processor 110, a management controller (such as a Baseboard Management Controller), and the like. Discovery unit 125 may also be implemented as software running on processor 110. While FIG. 1 shows machine 105 including only one discovery unit 125, machine 105 may include two or more discovery units 125. In addition, while FIG. 1 shows machine 105 as including discovery unit 125, discovery unit 125 may be located in a machine that is remote from machine 105 across a network.
  • Processor 105 and storage device 120 are shown as connecting to fabric 140. Fabric 140 is intended to represent any fabric along which information may be passed. Fabric 140 may include fabrics that may be internal to machine 105, and which may use interfaces such as Peripheral Component Interconnect Express (PCIe), Serial AT Attachment (SATA), Small Computer Systems Interface (SCSI), among others. Fabric 140 may also include fabrics that may be external to machine 105, and which may use interfaces such as Ethernet, Infiniband, or Fibre Channel, among others. In addition, fabric 140 may support one or more protocols, such as Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP), among others. Thus, fabric 140 may be thought of as encompassing both internal and external networking connections, over which commands may be sent, either directly or indirectly, to storage device 120 (and more particularly, the computational storage unit associated with storage device 120).
  • FIG. 1 shows both processor 105 and storage device 120 as being connected to fabric 140 because processor 105 and storage device 120 may communicate via a fabric. In some embodiments of the disclosure, storage device 120 may include a connection to fabric 120 that may include the ability to communicate with a remote machine and/or a network: for example, a network-capable Solid State Drive (SSD). But in other embodiments of the disclosure, while machine 105 may include a connection to another machine and/or a network (which connection may be considered part of fabric 140), storage device 120 might not be connected to another machine and/or network. In such embodiments of the disclosure, storage device 120 and its associated computational storage unit may still be reachable from a remote machine, but such commands may pass through processor 110 or discovery unit 125, among other possibilities, to reach storage device 120.
  • While the discussion above (and below) focuses on storage device 120 as being associated with a computational storage unit, embodiments of the disclosure may extend to devices other than storage devices that may include or be associated with a computational storage unit. Any reference to "storage device" above (and below) may be understood as also encompassing other devices that might be associated with a computational storage unit.
  • FIG. 2 shows details of machine 105 of FIG. 1, according to embodiments of the disclosure. In FIG. 2, typically, machine 105 includes one or more processors 110, which may include memory controllers 130 and clocks 205, which may be used to coordinate the operations of the components of the machine. Processors 110 may also be coupled to memories 115, which may include random access memory (RAM), read-only memory (ROM), or other state preserving media, as examples. Processors 110 may also be coupled to storage devices 120, and to network connector 210, which may be, for example, an Ethernet connector or a wireless connector. Processors 110 may also be connected to buses 215, to which may be attached user interfaces 220 and Input/Output (I/O) interface ports that may be managed using I/O engines 225, among other components.
  • FIGs. 3A-3D show various arrangements of the computational storage unit that may be associated with storage device 120 of FIG. 1, according to embodiments of the disclosure. In FIG. 3A, storage device 305 and computational device 310-1 (which may be termed merely a "device") are shown. Storage device 305 may include controller 315 and storage 320-1, and may be reachable across queue pairs: queue pairs 325 may be used both for management of storage device 305 and to control I/O of storage device 305.
  • Computational device 310-1 may be paired with storage device 305. Computational device 310-1 may include any number (one or more) processors 330, which may offer one or more services 335-1 and 335-2. To be clearer, each processor 330 may offer any number (one or more) services 335-1 and 335-2 (although embodiments of the disclosure may include computational device 310-1 including exactly two services 335-1 and 335-2). Computational device 310-1 may be reachable across queue pairs 340, which may be used for both management of computational device 310-1 and/or to control I/O of computational device 310-1.
  • Processor 330 may be thought of as near-storage processing: that is, processing that is closer to storage device 305 than processor 110 of FIG. 1. Because processor 330 is closer to storage device 305, processor 330 may be able to execute commands on data stored in storage device 305 more quickly than for processor 110 of FIG. 1 to execute such commands. While not shown in FIG. 3A, processors 330 may have associated memory which may be used for local execution of commands on data stored in storage device 305.
  • While FIG. 3A shows storage device 305 and computational device 310-1 as being separately reachable across fabric 140, embodiments of the disclosure may also include storage device 305 and computational device 310-1 being serially connected. That is, commands directed to storage device 305 and computational device 310-1 might both be received at the same physical connection to fabric 140 and may pass through one device to reach the other. For example, if computational device 310-1 is located between storage device 305 and fabric 140, computational device 310-1 may receive commands directed to both computational device 310-1 and storage device 305: computational device 310-1 may process commands directed to computational device 310-1, and may pass commands directed to storage device 305 to storage device 305.
  • Services 335-1 and 335-2 may offer a number of different functions that may be executed on data stored in storage device 305. For example, services 335-1 and 335-2 may offer predefined functions, such as encryption, decryption, compression, and/or decompression of data, erasure coding, and/or applying regular expressions. Or, services 335-1 and 335-2 may offer more general functions, such as data searching and/or SQL functions. Services 335-1 and 335-2 may also support running application-specific code. That is, the application using services 335-1 and 335-2 may provide custom code to be executed using data on storage device 305. Services 335-1 and 335-2 may also any combination of such functions. Table 1 lists some examples of services that may be offered by processor 330. Table 1: Service Types
    Compression
    Encryption
    Database filter
    Erasure coding
    RAID
    Hash/CRC
    RegEx (pattern matching)
    Scatter Gather
    Pipeline
    Video compression
    Data Deduplication
    Operating System Image Loader
    Container Image Loader
    Berkeley packet filter (BPF) loader
    FPGA Bitstream loader
    Large Data Set
  • Processors 330 (and, indeed, computational device 310-1) may be implemented in any desired manner. Example implementations may include a local processor, such as Central Processing Unit (CPU), a Graphics Processing Unit (GPU), a General Purpose GPU (GPGPU), a Data Processing Unit (DPU), and a Tensor Processing Unit (TPU), among other possibilities. Processors 330 may also be implemented using Field Programmable Gate Array (FPGA) or an Application-Specific Integrated Circuit (ASIC), among other possibilities. If computational device 310-1 includes more than one processor 330, each processor may be implemented as described above. For example, computational device 310-1 might have one each of CPU, TPU, and FPGA, or computational device 310-1 might have two FPGAs, or computational device 310-1 might have two CPUs and one ASIC, etc.
  • Depending on the desired interpretation, either computational device 310-1 or processor(s) 330 may be thought of as a computational storage unit.
  • Whereas FIG. 3A shows storage device 305 and computational device 310-1 as separate devices, in FIG. 3B they may be combined. Thus, computational device 310-2 may include controller 315, storage 320-1, and processor(s) 330 offering services 335-1 and 335-2. As with storage device 305 and computational device 310-1 of FIG. 3A, management and I/O commands may be received via queue pairs 340. Even though computational device 310-2 is shown as including both storage and processor(s) 330, FIG. 3B may still be thought of as including a storage device that is associated with a computational storage unit.
  • In yet another variation shown in FIG. 3C, computational device 310-3 is shown. Computational device 310-3 may include controller 315 and storage 320-1, as well as processor(s) 330 offering services 335-1 and 335-2. But even though computational device 310-3 maybe thought of as a single component including controller 315, storage 320-1, and processor(s) 330 (and also being thought of as a storage device associated with a computational storage unit), unlike the implementation shown in FIG. 3B controller 315 and processor(s) 330 may each include their own queue pairs 325 and 340 (again, which may be used for management and/or I/O). By including queue pairs 325, controller 315 may offer transparent access to storage 320-1 (rather than requiring all communication to proceed through processor(s) 330).
  • In addition, processor(s) may have proxied storage access 345 to use to access storage 320-1. Thus, instead of routing access requests through controller 315, processor(s) 330 may be able to directly access the data from storage 320-1.
  • In FIG. 3C, both controller 315 and proxied storage access 345 are shown with dashed lines to represent that they are optional elements, and may be omitted depending on the implementation.
  • Finally, FIG. 3D shows yet another implementation. In FIG. 3D, computational device 310-4 is shown, which may include an array. Similar to computational device 310-3 of FIG. 3C, the array may include one or more storage 320-1 through 320-4. While FIG. 3D shows four storage elements, embodiments of the disclosure may include any number (one or more) of storage elements. In addition, the individual storage elements may be other storage devices, such as those shown in FIGs. 3A-3D.
  • Because computational device 310-4 may include more than one storage element 320-1 through 320-4, computational device 310-4 may include array controller 350. Array controller 350 may manage how data is stored on and retrieved from storage elements 320-1 through 320-4. For example, if storage elements 320-1 through 320-4 are implemented as some level of a Redundant Array of Independent Disks (RAID), array controller 350 may be a RAID controller. If storage elements 320-1 through 320-4 are implemented using some form of Erasure Coding, then array controller 350 may be an Erasure Coding controller.
  • FIG. 4 shows details of storage device 120 of FIG. 1 implemented using a Solid State Drive (SSD), according to embodiments of the disclosure. Interface 405 may be an interface used to connect SSD 120 to machine 105 of FIG. 1. SSD 120 may include more than one interface 405: for example, one interface might be used for block-based read and write requests, and another interface might be used for key-value read and write requests. While FIG. 4 suggests that interface 405 is a physical connection between SSD 120 and machine 105 of FIG. 1, interface 405 may also represent protocol differences that may be used across a common physical interface. For example, SSD 120 might be connected to machine 105 using a U.2 or an M.2 connector, but may support block-based requests and key-value requests: handling the different types of requests may be performed by a different interface 405.
  • SSD 120 may also include host interface layer 410, which may manage interface 405. If SSD 120 includes more than one interface 405, a single host interface layer 410 may manage all interfaces, SSD 120 may include a host interface layer for each interface, or some combination thereof may be used. Host interface layer 410 may manage receiving requests across interface 405 and sending results back across interface 405.
  • SSD 120 may also include SSD controller 315, various channels 415-1, 415-2, 415-3, and 415-4, along which various flash memory chips 420-1, 420-2, 420-3, 420-4, 420-3, 420-6, 420-7, and 420-8 may be arrayed. SSD controller 315 may manage sending read requests and write requests to flash memory chips 420-1 through 420-8 along channels 415-1 through 415-4. Although FIG. 4 shows four channels and eight flash memory chips, embodiments of the disclosure may include any number (one or more, without bound) of channels including any number (one or more, without bound) of flash memory chips.
  • Within each flash memory chip, the space may be organized into blocks, which may be further subdivided into pages, and which may be grouped into superblocks. The page is typically the smallest unit of data that may be read or written on an SSD. Page sizes may vary as desired: for example, a page may be 4 KB of data. If less than a full page is to be written, the excess space is "unused".
  • While pages may be written and read, SSDs typically do not permit data to be overwritten: that is, existing data may be not be replaced "in place" with new data. Instead, when data is to be updated, the new data is written to a new page on the SSD, and the original page is invalidated (marked ready for erasure). Thus, SSD pages typically have one of three states: free (ready to be written), valid (containing valid data), and invalid (no longer containing valid data, but not usable until erased) (the exact names for these states may vary).
  • But while pages may be written and read individually, the block is the basic unit of data that may be erased. That is, pages are not erased individually: all the pages in a block are typically erased at the same time. For example, if a block contains 256 pages, then all 256 pages in a block are erased at the same time. This arrangement may lead to some management issues for the SSD: if a block is selected for erasure that still contains some valid data, that valid data may need to be copied to a free page elsewhere on the SSD before the block may be erased. (In some embodiments of the disclosure, the unit of erasure may differ from the block: for example, it may be a superblock, which may be a set of multiple blocks.)
  • SSD controller 315 may include flash translation layer 425 (which may be termed more generally a logical-to-physical translation layer, for storage devices that do not use flash storage), receiver 430, transmitter 435, and log page unit 440. Flash translation layer 425 may handle translation of logical block addresses (LBAs) or other logical IDs (as used by processor 110 of FIG. 1) and physical block addresses (PBAs) or other physical addresses where data is stored in flash chips 420-1 through 420-8. Receiver 430 may be used to receive discovery requests from discovery unit 125 of FIG. 1, and transmitter 435 may be used to transmit discovery responses back to discovery unit 125 of FIG. 1. Log page unit 440 may be used to generate log pages, which may be provide additional information to discovery unit 125 of FIG. 1 regarding a computational storage unit associated with SSD 120 (as described above with reference to FIGs. 3A-3D). Table 2 shows information that may be included in a discovery response sent to discovery unit 125 of FIG. 1; Table 4 shows information that may be included in a log page generated by log page unit 440.
    Figure imgb0001
    Figure imgb0002
  • FIGs. 5A-5B show discovery of storage device 120 of FIG. 1, according to embodiments of the disclosure. In FIG. 5A, discovery request 505 may be sent to storage device 120. Discovery request 505 may be a standard discovery request message, such as might be specified using protocols such as NVMe, NVMe-oF, SSDP, and others; or discovery request 505 may be a custom discovery request message designed to probe for attached devices and/or their controllers. Discovery request 505 may also be sent using a custom plug-in software that may be used to recognize devices attached via a particular fabric and/or using a particular protocol.
  • Note that the unit that sends discovery request 505 may be machine 105, discovery unit 125, or application 510. In addition, note that machine 105 might not be the machine including storage device 120, as discussed further with reference to FIG. 6 below. In cases where machine 105 is remote from the machine including storage device 120, the protocol-for example, NVMe-oF-may specify how a remote discovery request may be used to identify devices and/or their controllers.
  • Upon receiving discovery request 505, storage device 120 may respond by sending discovery response 515. Discovery response 515 may include information 520 about one or more computational storage unit associated with (or included in) storage device 120. As discussed above with reference to FIG. 4, Table 2 may represent information that may be included in discovery response 515 as information 520. Discovery response 515, like discovery request 505, may be in a form specified by a standard such as NVMe, NVMe-oF, SSDP, and others; or discovery response 515 may be a custom message including information about storage device 120 and associated computational storage.
  • In FIG. 5B, log page request 525 may be sent to storage device 120. Log page request 525 may be sent by the same unit that sends discovery request 505 of FIG. 5A, or log page request 525 may be sent by another unit. In addition, log page request 525 may be omitted, if storage device 120 sends log page response 530 automatically. Log page response 530 may include log page 535, which may provide information about a computational storage unit associated with storage device 120, as described above with reference to Table 4. If storage device 120 is associated with more than one computational storage unit, log page response 530 may include more than one log page 535: for example, log page response 530 may include one log page 535 for each computational storage unit associated with storage device 120.
  • The information about the computational storage unit associated with storage device 120-information 520 of FIG. 5A and log page 535 of FIG. 5B-may be forwarded to a discovery service, which may permit other devices and/or applications to be aware of the computational storage unit associated with storage device 120.
  • FIG. 6 shows various machines connected by fabric 140 of FIG. 1 including modules involved in the discovery and use of storage device 120 of FIG. 1, according to embodiments of the disclosure. In FIG. 6, four machines 105-1, 105-2, 105-3, and 105-4 are shown. Machine 105-1 may include storage device 120. Machine 105-2 may include discovery unit 125. Machine 105-3 may include discovery service 605, which may be used by other devices, machines, and/or applications to learn about the computational storage unit associated with storage device 120. Finally, machine 105-4 may include application 510. FIG. 6 thus demonstrates that storage device 120, discovery unit 125, discovery service 605, and application 510 may be located on different machines connected via network/fabric 140. But while FIG. 6 shows each unit being included with a different machine, embodiments of the disclosure may support any number of machines, each of which may include any or all of the units shown.
  • Up until now, the discussion has focused on the mechanism for discovery of a storage device associated with a computational storage unit. But how that mechanism operates may also be discussed.
  • In some embodiments of the disclosure, computational storage (CS) APIs may provide a standardized way to access compute offload capable devices. These may be connected, for example, in direct attached and/or network attached manners. In some embodiments of the disclosure, CS APIs may apply to these and other types of connected devices and may provide an interface that may be seamless and/or standardized across existing and/or future computational storage capable devices.
  • To assist in discovery of storage devices associated with computational storage units, some APIs may be used, as discussed below. Any function names, variable names, and constant names shown below are merely exemplary, and may be replaced with different such names.
  • csQueryCSPList() may be used to return one or more processors available based on search criteria. csQueryCSPList() may take as input the name of a discovery service to query, and may return as output a buffer that lists the available computational storage units known by the discovery service. The returned list of computational storage units may be parsed and a selected entry may then be contacted by the application.
  • csGetCSPFromPath() may be used to return a computational storage unit associated with a given file or path. csQueryCSPList() may take as input a string that denotes a path to a file or directory that resides on a device or a device path. The file/directory may also indirectly refer to a namespace and partition. If the path is only partially qualified, the path may be fully qualified before the function completes. csQueryCSPList() may then return the qualified name to the computational storage unit.
  • csQueryDeviceProperties() may be used to query a device for its properties. csQueryDeviceProperties() may take as input a handle to a computational storage unit, and may return a buffer that includes the properties of the computational storage unit.
  • csQueryDeviceCapabilities() may be used to query a computational storage unit for its capabilities, such as the built-in computational storage-related functions. csQueryDeviceCapabilities() may take as input a handle to a computational storage unit, and may return a buffer that includes the built-in computational storage-related functions of the computational storage unit.
  • By using APIs such as those shown above, the specifics of how the computational storage unit may be discovered may be hidden beneath the API itself. An application may simply search for a computational storage unit using the APIs, without concern for the particular fabric connecting the application to the computational storage unit or the protocol the computational storage unit uses.
  • In some embodiments of the disclosure, storage devices with associated computational storage units may be virtualized, so that the resources offered by the storage device/computational storage unit may be used by more than one application. That is, instead of the storage device/computational storage unit offering multiple interfaces (real or logical) that may be used by different applications, a virtual machine (VM) may manage access to the storage device/computational storage unit. Then, when an application desired to use the services offered by the storage device/computational storage unit, the application may communicate with the VM, which may act as the "sole" client of the storage device/computational storage unit.
  • FIG. 7 shows details of discovery unit 125 of FIG. 1, according to embodiments of the disclosure. In FIG. 7, discovery unit 125 is shown as including plug-in 705, transmitter 710, receiver 715, and memory 720. Plug-in 705 may be used to construct discovery request 505 of FIG. 5A. While FIG. 7 shows discovery unit 125 as including one plug-in 705, embodiments of the disclosure may include any number (one or more) of plug-ins: each plug-in may be used to construct discovery request 505 of FIG. 5A appropriate to a particular fabric 140 of FIG. 1 and/or a particular protocol used to communicate over fabric 140 of FIG. ##A. The use of the term "plug-in" suggests that additional plug-ins 705 may be added to discovery unit 125 as needed, which is correct; but discovery unit 125 may also include the built-in equivalent of one or more plug-ins 705 for some fabrics 140 of FIG. 1 and/or protocols. For example, discovery unit 125 may have built-in information for communicating across fabrics such as Ethernet, Infiniband, and/or Fibre Channel, as well as information about protocols such as NVMe and/or NVMe-oF. Transmitter 710 may be used to send discovery request 505 of FIG. 5A to storage device 120. Transmitter 710 may also be used to send information 520 of FIG. 5A and/or log page 535 of FIG. 5B, once received from storage device 120 of FIG. 1, to discovery service 605 of FIG. 6. Receiver 715 may be used to receive discovery response 515 of FIG. 5A from storage device 120 of FIG. 1. Memory 720 may be used store information 520 of FIG. 5A and/or log page 535 of FIG. 5B as received from storage device 120 of FIG. 1.
  • FIG. 8 shows details of discovery service 605 of FIG. 6, according to embodiments of the disclosure. In FIG. 8, discovery service 605 may include a data structure, such as a table, that may be stored in memory 115 of FIG. 1 (or another memory) within machine 105 of FIG. 1. This data structure may include information such as identifier 805 for a particular host (such as machine 105 of FIG. 1) including storage device 120 of FIG. 1, identifier 810 including a device ID for storage device 120 of FIG. 1, identifier 815 of a computational storage capability of storage device 120 of FIG. 1, identifier 820 of a computational storage type of storage device 120 of FIG. 1, information 520 of FIG. 5A (which may also include supplemental information such as log page 535 of FIG. 5B), and identifier 825 of a paired device (as discussed above, in some embodiments of the disclosure storage device 120 of FIG. 1 might be associated with but not include the computational storage unit: identifier 825 may include the device ID for the paired device including the computational storage unit). Note that not all information shown in FIG. 6 must be included: embodiments of the disclosure may include or omit information as desired. Nor is the information shown necessarily representative of the form any information stored in discovery service 605 may take: for example, rather than an Internet Protocol (IP) address, identifier 805 might just include a host ID of some sort, and leave resolution of the network address from the host ID to some other service. Similarly, identifiers 810 and/or 825 may be local device IDs that are not necessarily globally unique: for example, identifiers 810 and/or 825 may be enumeration IDs assigned to the device(s) when enumerated during discovery. Alternatively, identifiers 810 and/or 825 may be globally unique identifiers such as a device serial number.
  • FIG. 9 shows a flowchart of an example high-level overview of how discovery may be performed, according to embodiments of the disclosure. In FIG. 9, at block 905, discovery may begin. Discovery may be started during enumeration of devices in machine 105 of FIG. 1, or discovery may be started when application 510 of FIGs. 5A-5B is interested in locating a device including a particular computational storage unit. At block 910, discovery unit 125 of FIG. 1 may determine the connections available. These connections may include the type of fabric 140 of FIG. 1 and/or the protocols that may be used across fabric 140 of FIG. 1. Based on the available connections, at block 915, discovery unit 125 of FIG. 1 may invoke the appropriate discovery code (built-in) or an appropriate plug-in. At block 920, discovery unit 125 of FIG. 1 may attempt to locate one or more devices across fabric 140 of FIG. 4 and using a particular protocol across fabric 140 of FIG. 1. Block 920 may involve sending discovery request 505 of FIG. 5A using the particular protocol over fabric 140 of FIG. 1.
  • At block 925, discovery unit 125 of FIG. 1 may determine whether a device (or its controller) was located or not. Block 925 may involve determining whether discovery unit 125 of FIG. 1 has received discovery response 515 of FIG. 5A from storage device 120. If the device was located, then at block 930 discovery unit 125 of FIG. 1 may return the identified device and/or its service (function) to application 510 of FIG. 5A. Block 930 may also be used to transmit the identified device and/or its service (function) to discovery service 605 of FIG. 6.
  • Note that while FIG. 9 shows a linear sequence without any repetition, embodiments of the disclosure may include discovery unit 125 of FIG. 1 sending multiple discovery requests 505 of FIG. 5A using multiple protocols across multiple fabrics 140 of FIG. 1. Thus, FIG. 9 is not intended to imply that the operations shown in FIG. 9 are performed once and once only.
  • FIG. 10 shows a flowchart of an example procedure for storage device 120 of FIG. 1 to be discovered by machine 105 of FIG. 1, discovery unit 125 of FIG. 1, and/or application 510 of FIGs. 5A-5B, according to embodiments of the disclosure. In the discussion below, any reference to discovery unit 125 of FIG. 1 should be understood to include host 105 of FIG. 1 and/or application 510 of FIGs. 5A-5B as substitutes for discovery unit 125 of FIG. 1.
  • In FIG. 10, at block 1005, storage device 120 of FIG. 1 may receive discovery request 505 of FIG. 5A from discovery unit 125 of FIG. 1. At block 1010, storage device 120 of FIG. 1 may generate discovery response 515 of FIG. 5A. At block 1015, storage device 120 of FIG. 1 may send discovery response 515, which may include information 520 of FIG. 5A, to discovery unit 125 of FIG. 1.
  • At block 1020, storage device 120 of FIG. 1 may receive log page request 525 of FIG. 5B from discovery unit 125 of FIG. 1. Block 1020 may be omitted, as shown by dashed line 1025. At block 1030, log page unit 440 of FIG. 4 may generate log page 535 of FIG. 5B. At block 1035, storage device 120 of FIG. 1 may send log page response 530 of FIG. 5B, including log page 535 of FIG. 5B, to discovery unit 125 of FIG. 1. If multiple log pages 535 of FIG. 5B are to be generated (for example, if storage device 120 of FIG. 1 is associated with more than one computational storage unit), then blocks 1030 and 1035 may be repeated as often as necessary, as shown by dashed line 1040. Finally, if no log page 535 is to be generated, then blocks 1030 and 1035 may be omitted, as shown by dashed line 1045.
  • FIG. 11 shows a flowchart of an example procedure for machine 105 of FIG. 1, discovery unit 125 of FIG. 1, and/or application 510 of FIGs. 5A-5B to discover storage device 120 of FIG. 1, according to embodiments of the disclosure. As with FIG. 10, in the discussion below, any reference to discovery unit 125 of FIG. 1 should be understood to include host 105 of FIG. 1 and/or application 510 of FIGs. 5A-5B as substitutes for discovery unit 125 of FIG. 1.
  • In FIG. 11, at block 1105, discovery unit 125 of FIG. 1 may send discovery request 505 of FIG. 5A to storage device 120 of FIG. 1. At block 1110, discovery unit 125 of FIG. 1 may receive discovery response 515 of FIG. 5A, which may include information 520 of FIG. 5A, from storage device 120 of FIG. 1.
  • At block 1115, discovery unit 125 of FIG. 1 may send log page request 525 of FIG. 5B to storage device 120 of FIG. 1. Block 1115 may be omitted, as shown by dashed line 1120. At block 1125, discovery unit 125 of FIG. 1 may receive log page response 530 of FIG. 5B, which may include log page 535 of FIG. 5B, from storage device 120 of FIG. 1. At block 1130, discovery unit 125 of FIG. 1 may forward information 520 of FIG. 5A and/or log page 535 of FIG. 5B to discovery service 605 of FIG. 6. Blocks 1125 and 1130 may be variously omitted, as shown by dashed lines 1135 and 1140.
  • FIG. 12 shows a flowchart of an example procedure for discovery service 605 of FIG. 6 to use information about a computational storage unit, according to embodiments of the disclosure. In FIG. 12, at block 1205, discovery service 605 of FIG. 6 may receive information 520 of FIG. 5A and/or log page 535 of FIG. 5B from discovery unit 125 of FIG. 1, machine 105 of FIG. 1, and/or application 510 of FIGs. 5A-5B. At block 1210, discovery service 605 of FIG. 6 may store information 520 of FIG. 5A and/or log page 535 of FIG. 5B. At block 1215, discovery service 605 of FIG. 6 may receive a request from application 510 of FIGs. 5A-5B for information 520 of FIG. 5A and/or log page 535 of FIG. 5B at storage device 120 of FIG. 1. Finally, at block 1220, discovery service 605 of FIG. 6 may return information 520 of FIG. 5A and/or log page 535 of FIG. 5B at storage device 120 of FIG. 1 to application 510 of FIGs. 5A-5B.
  • FIG. 13 shows a flowchart of an example procedure for application 510 of FIGs. 5A-5B to locate and use a computational storage unit, according to embodiments of the disclosure. In FIG. 13, at block 1305, application 510 of FIGs. 5A-5B may identify storage device 120 of FIG. 1 to be used by application 510 of FIGs. 5A-5B. Note that saying "identifying" storage device 120 of FIG. 1 should be understood to mean identifying a particular functionality of interest to application 510 of FIGs. 5A-5B, rather than literally identifying a particular storage device to be the one sought. For example, application 510 of FIGs. 5A-5B might indicate a desire to use a storage device that supports data encryption, or that has some minimum available capacity: these criteria may (indirectly) identify storage device 120 of FIG. 1 as being usable by application 510 of FIGs. 5A-5B (and there may also be other storage devices available that might also be usable by application 510 of FIGs. 5A-5B). But in embodiments of the disclosure, application 510 of FIGs. 5A-5B may specifically identify storage device 120 of FIG. 1 as being the one storage device of interest.
  • Once application 510 of FIGs. 5A-5B has identified storage device 120 of FIG. 1 as being of interest, at block 1310, application 510 of FIGs. 5A-5B may send discovery request 505 of FIG. 5A to storage device 120 of FIG. 1 to discover its computational storage capabilities. Alternatively, application 510 of FIGs. 5A-5B may send a query to discovery service 605 of FIG. 6 to learn the computational storage capabilities of storage device 120 of FIG. 1. At block 1315, application 510 of FIGs. 5A-5B may receive discovery response 515 of FIG. 5A or a result of the query sent to discovery service 605 of FIG. 6. Finally, at block 1320, application 510 of FIGs. 5A-5B may send a command to storage device 120 of FIG. 1.
  • FIG. 14 shows a flowchart of an example procedure for application 510 of FIGs. 5A-5B to identify a computational storage unit, according to an embodiment of the disclosure. As discussed above with reference to FIG. 13, application 510 of FIGs. 5A-5B might not literally identify storage device 120 of FIG. 1, but instead might "identify" storage device 120 of FIG. 1 based on some criteria for the desired storage device. In FIG. 14, at block 1405, application 510 of FIGs. 5A-5B may identify storage device 120 of FIG. 1 by type. Alternatively (or in combination), at block 1410 application 510 of FIGs. 5A-5B may identify storage device 120 of FIG. 1 by capability. In addition, application 510 of FIGs. 5A-5B may also specify other criteria (not described in FIG. 14) that may be used to identify storage device 120 of FIG. 1.
  • In FIGs. 9-14, some embodiments of the disclosure are shown. But a person skilled in the art will recognize that other embodiments of the disclosure are also possible, by changing the order of the blocks, by omitting blocks, or by including links not shown in the drawings. All such variations of the flowcharts are considered to be embodiments of the disclosure, whether expressly described or not.
  • Embodiments of the disclosure offer technical advantages over the prior art. By enabling discovery of computational storage units associated with storage devices, applications may locate a storage device associated with a computational storage unit that may satisfy the requirements of the application. Further, by using APIs, applications may be able to locate such storage devices with associated computational storage units using commands, regardless of the protocol supported by the storage device/computational storage unit and/or the fabric used to communicate with the storage device/computational storage unit: the API may handle translation of a shared command structure into a command appropriate to the particular storage device/computational storage unit.
  • The following discussion is intended to provide a brief, general description of a suitable machine or machines in which certain aspects of the disclosure may be implemented. The machine or machines may be controlled, at least in part, by input from conventional input devices, such as keyboards, mice, etc., as well as by directives received from another machine, interaction with a virtual reality (VR) environment, biometric feedback, or other input signal. As used herein, the term "machine" is intended to broadly encompass a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., as well as transportation devices, such as private or public transportation, e.g., automobiles, trains, cabs, etc.
  • The machine or machines may include embedded controllers, such as programmable or non-programmable logic devices or arrays, Application Specific Integrated Circuits (ASICs), embedded computers, smart cards, and the like. The machine or machines may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communicative coupling. Machines may be interconnected by way of a physical and/or logical network, such as an intranet, the Internet, local area networks, wide area networks, etc. One skilled in the art will appreciate that network communication may utilize various wired and/or wireless short range or long range carriers and protocols, including radio frequency (RF), satellite, microwave, Institute of Electrical and Electronics Engineers (IEEE) 802.11, Bluetooth®, optical, infrared, cable, laser, etc.
  • Embodiments of the present disclosure may be described by reference to or in conjunction with associated data including functions, procedures, data structures, application programs, etc. which when accessed by a machine results in the machine performing tasks or defining abstract data types or low-level hardware contexts. Associated data may be stored in, for example, the volatile and/or non-volatile memory, e.g., RAM, ROM, etc., or in other storage devices and their associated storage media, including hard-drives, floppy-disks, optical storage, tapes, flash memory, memory sticks, digital video disks, biological storage, etc. Associated data may be delivered over transmission environments, including the physical and/or logical network, in the form of packets, serial data, parallel data, propagated signals, etc., and may be used in a compressed or encrypted format. Associated data may be used in a distributed environment, and stored locally and/or remotely for machine access.
  • Embodiments of the disclosure may include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors, the instructions comprising instructions to perform the elements of the disclosures as described herein.
  • The various operations of methods described above may be performed by any suitable means capable of performing the operations, such as various hardware and/or software component(s), circuits, and/or module(s). The software may comprise an ordered listing of executable instructions for implementing logical functions, and may be embodied in any "processor-readable medium" for use by or in connection with an instruction execution system, apparatus, or device, such as a single or multiple-core processor or processor-containing system.
  • The blocks or steps of a method or algorithm and functions described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a tangible, non-transitory computer-readable medium. A software module may reside in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD ROM, or any other form of storage medium known in the art.
  • Having described and illustrated the principles of the disclosure with reference to illustrated embodiments, it will be recognized that the illustrated embodiments may be modified in arrangement and detail without departing from such principles, and may be combined in any desired manner. And, although the foregoing discussion has focused on particular embodiments, other configurations are contemplated. In particular, even though expressions such as "according to an embodiment of the disclosure" or the like are used herein, these phrases are meant to generally reference embodiment possibilities, and are not intended to limit the disclosure to particular embodiment configurations. As used herein, these terms may reference the same or different embodiments that are combinable into other embodiments.
  • The foregoing illustrative embodiments are not to be construed as limiting the disclosure thereof. Although a few embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible to those embodiments without materially departing from the novel teachings and advantages of the present disclosure. Accordingly, all such modifications are intended to be included within the scope of this disclosure as defined in the claims.
  • Embodiments of the disclosure may extend to the following statements, without limitation:
    • Statement 1. An embodiment of the disclosure includes a device, comprising:
      • a connector to connect the device to a component;
      • a computational storage unit;
      • a receiver to receive a discovery request from a discovery service; and
      • a transmitter to send a discovery response to the discovery service, the discovery response including information about the computational storage unit.
    • Statement 2. An embodiment of the disclosure includes the device according to statement 1, wherein the information about the computational storage unit includes at least one bit identifying a computational storage capability of the computational storage unit.
    • Statement 3. An embodiment of the disclosure includes the device according to statement 1, wherein the information about the computational storage unit includes at least one bit identifying a type of the computational storage unit.
    • Statement 4. An embodiment of the disclosure includes the device according to statement 1, further comprising a log page unit to generate a log page, the log page including supplemental information about the computational storage unit.
    • Statement 5. An embodiment of the disclosure includes the device according to statement 4, wherein:
      • the device further comprises a second computational storage unit; and
      • the log page unit is configured to generate a second log page including second supplemental information about the second computational storage unit.
    • Statement 6. An embodiment of the disclosure includes the device according to statement 1, wherein the connector connects the device to the component using an interface drawn from a set including Peripheral Component Interconnect Express (PCIe), Ethernet, Infiniband, or Fibre Channel.
    • Statement 7. An embodiment of the disclosure includes the device according to statement 1, wherein the connector supports a protocol drawn from the set including Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP).
    • Statement 8. An embodiment of the disclosure includes the device according to statement 1, wherein the computational storage unit includes a storage device.
    • Statement 9. An embodiment of the disclosure includes the device according to statement 8, wherein the storage device includes a Solid State Drive (SSD).
    • Statement 10. An embodiment of the disclosure includes the device according to statement 8, wherein the device further comprises a second computational storage unit drawn from a set including an in-storage processor or an accelerator.
    • Statement 11. An embodiment of the disclosure includes the device according to statement 8, wherein the storage device is paired with a second computational storage unit.
    • Statement 12. An embodiment of the disclosure includes the device according to statement 1, wherein the computational storage unit is paired with a storage device.
    • Statement 13. An embodiment of the disclosure includes the device according to statement 1, wherein the device is local to a host including the discovery service.
    • Statement 14. An embodiment of the disclosure includes the device according to statement 1, wherein the device is remote from a host including the discovery service.
    • Statement 15. An embodiment of the disclosure includes a system, comprising:
      • a device including a computational storage unit; and
      • a discovery unit, including:
        • a transmitter to send a discovery request to the device; and
        • a receiver to receive a discovery response from the device, the discovery response including information about the computational storage unit.
    • Statement 16. An embodiment of the disclosure includes the system according to statement 15, wherein the information about the computational storage unit includes at least one bit identifying a computational storage capability of the computational storage unit.
    • Statement 17. An embodiment of the disclosure includes the system according to statement 15, wherein the information about the computational storage unit includes at least one bit identifying a type of the computational storage unit.
    • Statement 18. An embodiment of the disclosure includes the system according to statement 15, wherein the discovery unit is configured to access a log page including supplemental information about the computational storage unit.
    • Statement 19. An embodiment of the disclosure includes the system according to statement 18, wherein:
      • the device further includes a second computational storage unit; and
      • the discovery unit is configured to access a second log page including second supplemental information about the second computational storage unit.
    • Statement 20. An embodiment of the disclosure includes the system according to statement 18, wherein the transmitter is configured to send a log page request to the device.
    • Statement 21. An embodiment of the disclosure includes the system according to statement 15, wherein the device connects to the system using an interface drawn from a set including Peripheral Component Interconnect Express (PCIe), Ethernet, Infiniband, or Fibre Channel.
    • Statement 22. An embodiment of the disclosure includes the system according to statement 15, wherein the device communicates with the system using a protocol drawn from the set including Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP).
    • Statement 23. An embodiment of the disclosure includes the system according to statement 15, wherein the transmitter is configured to forward the information about the device to a discovery service.
    • Statement 24. An embodiment of the disclosure includes the system according to statement 15, wherein the computational storage unit includes a storage device.
    • Statement 25. An embodiment of the disclosure includes the system according to statement 24, wherein the storage device includes a Solid State Drive (SSD).
    • Statement 26. An embodiment of the disclosure includes the system according to statement 24, wherein the device further includes a second computational storage unit drawn from a set including an in-storage processor or an accelerator.
    • Statement 27. An embodiment of the disclosure includes the system according to statement 24, wherein the storage device is paired with a second computational storage unit.
    • Statement 28. An embodiment of the disclosure includes the system according to statement 15, wherein the computational storage unit is paired with a storage device.
    • Statement 29. An embodiment of the disclosure includes the system according to statement 15, wherein the device is local to the system.
    • Statement 30. An embodiment of the disclosure includes the system according to statement 15, wherein the device is remote from the system.
    • Statement 31. An embodiment of the disclosure includes a method, comprising:
      • receiving a discovery request from a discovery serviceat a device, the device including a computational storage unit;
      • generating a discovery response, the discovery response including information about the computational storage unit; and
      • sending the discovery response from the device to the discovery service.
    • Statement 32. An embodiment of the disclosure includes the method according to statement 31, wherein the information about the computational storage unit includes at least one bit identifying a type of the computational storage unit.
    • Statement 33. An embodiment of the disclosure includes the method according to statement 31, further comprising generating a log page including supplemental information about the computational storage unit.
    • Statement 34. An embodiment of the disclosure includes the method according to statement 33, wherein:
      • the device further includes a second computational storage unit; and
      • the method further comprises generating a second log page including second supplemental information about the second computational storage unit.
    • Statement 35. An embodiment of the disclosure includes the method according to statement 31, wherein the computational storage unit includes a storage device.
    • Statement 36. An embodiment of the disclosure includes the method according to statement 35, wherein the storage device includes a Solid State Drive (SSD).
    • Statement 37. An embodiment of the disclosure includes the method according to statement 35, wherein the device includes a second computational storage unit drawn from a set including an in-storage processor or an accelerator.
    • Statement 38. An embodiment of the disclosure includes the method according to statement 35, wherein the storage device is paired with a second computational storage unit.
    • Statement 39. An embodiment of the disclosure includes the method according to statement 31, wherein the computational storage unit is paired with a storage device.
    • Statement 40. An embodiment of the disclosure includes the method according to statement 31, wherein receiving the discovery request from the discovery serviceat the device includes receiving the discovery request from the discovery serviceat the device over an interface drawn from a set including Peripheral Component Interconnect Express (PCIe), Ethernet, Infiniband, or Fibre Channel.
    • Statement 41. An embodiment of the disclosure includes the method according to statement 31, wherein receiving the discovery request from the discovery serviceat the device includes receiving the discovery request from the discovery serviceat the device using a protocol drawn from a set including Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP).
    • Statement 42. An embodiment of the disclosure includes the method according to statement 31, wherein the device is local to a host including the discovery service.
    • Statement 43. An embodiment of the disclosure includes the method according to statement 31, wherein the device is remote from a host including the discovery service.
    • Statement 44. An embodiment of the disclosure includes a method, comprising:
      • sending a discovery request to a device from a discovery service, the device including a computational storage unit; and
      • receiving a discovery response from the device at the discovery service, the discovery response including information about the computational storage unit.
    • Statement 45. An embodiment of the disclosure includes the method according to statement 44, wherein the information about the computational storage unit includes at least one bit identifying a computational storage capability of the computational storage unit.
    • Statement 46. An embodiment of the disclosure includes the method according to statement 44, wherein the information about the computational storage unit includes at least one bit identifying a type of the computational storage unit.
    • Statement 47. An embodiment of the disclosure includes the method according to statement 44, further comprising accessing a log page including supplemental information about the computational storage unit.
    • Statement 48. An embodiment of the disclosure includes the method according to statement 47, wherein:
      • the device includes a second computational storage unit; and
      • the method further comprising accessing a second log page including second supplemental information about the second computational storage unit.
    • Statement 49. An embodiment of the disclosure includes the method according to statement 47, further comprising requesting the log page from the device.
    • Statement 50. An embodiment of the disclosure includes the method according to statement 44, wherein sending the discovery request to the device from the discovery service includes sending the discovery request to the device from the discovery service over an interface drawn from a set including Peripheral Component Interconnect Express (PCIe), Ethernet, Infiniband, or Fibre Channel.
    • Statement 51. An embodiment of the disclosure includes the method according to statement 44, wherein sending the discovery request to the device from the discovery service includes sending the discovery request to the device from the discovery service using a protocol drawn from a set including Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP).
    • Statement 52. An embodiment of the disclosure includes the method according to statement 44, further comprising forwarding the information about the device to a discovery service.
    • Statement 53. An embodiment of the disclosure includes the method according to statement 44, wherein the computational storage unit includes a storage device.
    • Statement 54. An embodiment of the disclosure includes the method according to statement 53, wherein the storage device includes a Solid State Drive (SSD).
    • Statement 55. An embodiment of the disclosure includes the method according to statement 53, wherein the device further includes a second computational storage unit drawn from a set including an in-storage processor or an accelerator.
    • Statement 56. An embodiment of the disclosure includes the method according to statement 53, wherein the storage device is paired with a second computational storage unit.
    • Statement 57. An embodiment of the disclosure includes the method according to statement 44, wherein the computational storage unit is paired with a storage device.
    • Statement 58. An embodiment of the disclosure includes the method according to statement 44, wherein the device is local to a host including the discovery service.
    • Statement 59. An embodiment of the disclosure includes the method according to statement 44, wherein the device is remote from a host including the discovery service.
    • Statement 60. An embodiment of the disclosure includes an article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
      • receiving a discovery request from a discovery service at a device, the device including a computational storage unit;
      • generating a discovery response, the discovery response including information about the computational storage unit; and
      • sending the discovery response from the device to the discovery service.
    • Statement 61. An embodiment of the disclosure includes the article according to statement 60, wherein the information about the computational storage unit includes at least one bit identifying a type of the computational storage unit.
    • Statement 62. An embodiment of the disclosure includes the article according to statement 60, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in generating a log page including supplemental information about the computational storage unit.
    • Statement 63. An embodiment of the disclosure includes the article according to statement 62, wherein:
      • the device further includes a second computational storage unit; and
      • the non-transitory storage medium has stored thereon further instructions that, when executed by the machine, result in generating a second log page including second supplemental information about the second computational storage unit.
    • Statement 64. An embodiment of the disclosure includes the article according to statement 60, wherein the computational storage unit includes a storage device.
    • Statement 65. An embodiment of the disclosure includes the article according to statement 64, wherein the storage device includes a Solid State Drive (SSD).
    • Statement 66. An embodiment of the disclosure includes the article according to statement 64, wherein the device includes a second computational storage unit drawn from a set including an in-storage processor or an accelerator.
    • Statement 67. An embodiment of the disclosure includes the article according to statement 64, wherein the storage device is paired with a second computational storage unit.
    • Statement 68. An embodiment of the disclosure includes the article according to statement 60, wherein the computational storage unit is paired with a storage device.
    • Statement 69. An embodiment of the disclosure includes the article according to statement 60, wherein receiving the discovery request from the discovery service at the device includes receiving the discovery request from the discovery service at the device over an interface drawn from a set including Peripheral Component Interconnect Express (PCIe), Ethernet, Infiniband, or Fibre Channel.
    • Statement 70. An embodiment of the disclosure includes the article according to statement 60, wherein receiving the discovery request from the discovery service at the device includes receiving the discovery request from the discovery service at the device using a protocol drawn from a set including Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP).
    • Statement 71. An embodiment of the disclosure includes the article according to statement 60, wherein the device is local to a host including the discovery service.
    • Statement 72. An embodiment of the disclosure includes the article according to statement 60, wherein the device is remote from a host including the discovery service.
    • Statement 73. An embodiment of the disclosure includes an article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
      • sending a discovery request to a device from a discovery service, the device including a computational storage unit; and
      • receiving a discovery response from the device at the discovery service, the discovery response including information about the computational storage unit.
    • Statement 74. An embodiment of the disclosure includes the article according to statement 73, wherein the information about the computational storage unit includes at least one bit identifying a computational storage capability of the computational storage unit.
    • Statement 75. An embodiment of the disclosure includes the article according to statement 73, wherein the information about the computational storage unit includes at least one bit identifying a type of the computational storage unit.
    • Statement 76. An embodiment of the disclosure includes the article according to statement 73, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in accessing a log page including supplemental information about the computational storage unit.
    • Statement 77. An embodiment of the disclosure includes the article according to statement 76, wherein:
      • the device includes a second computational storage unit; and
      • the non-transitory storage medium has stored thereon further instructions that, when executed by the machine, result in accessing a second log page including second supplemental information about the second computational storage unit.
    • Statement 78. An embodiment of the disclosure includes the article according to statement 76, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in requesting the log page from the device.
    • Statement 79. An embodiment of the disclosure includes the article according to statement 73, wherein sending the discovery request to the device from the discovery service includes sending the discovery request to the device from the discovery service over an interface drawn from a set including Peripheral Component Interconnect Express (PCIe), Ethernet, Infiniband, or Fibre Channel.
    • Statement 80. An embodiment of the disclosure includes the article according to statement 73, wherein sending the discovery request to the device from the discovery service includes sending the discovery request to the device from the discovery service using a protocol drawn from a set including Non-Volatile Memory Express (NVMe), NVMe over Fabrics (NVMe-oF), or Simple Service Discovery Protocol (SSDP).
    • Statement 81. An embodiment of the disclosure includes the article according to statement 73, the non-transitory storage medium having stored thereon further instructions that, when executed by the machine, result in forwarding the information about the device to a discovery service.
    • Statement 82. An embodiment of the disclosure includes the article according to statement 73, wherein the computational storage unit includes a storage device.
    • Statement 83. An embodiment of the disclosure includes the article according to statement 82, wherein the storage device includes a Solid State Drive (SSD).
    • Statement 84. An embodiment of the disclosure includes the article according to statement 82, wherein the device further includes a second computational storage unit drawn from a set including an in-storage processor or an accelerator.
    • Statement 85. An embodiment of the disclosure includes the article according to statement 82, wherein the storage device is paired with a second computational storage unit.
    • Statement 86. An embodiment of the disclosure includes the article according to statement 73, wherein the computational storage unit is paired with a storage device.
    • Statement 87. An embodiment of the disclosure includes the article according to statement 73, wherein the device is local to a host including the discovery service.
    • Statement 88. An embodiment of the disclosure includes the article according to statement 73, wherein the device is remote from a host including the discovery service.
    • Statement 89. An embodiment of the disclosure includes a memory, comprising:
      • a data structure stored in the memory, the data structure including:
        • a first identifier of a device, the device including a computational storage unit; and
        • a second identifier of a capability of the computational storage unit.
    • Statement 90. An embodiment of the disclosure includes the memory according to statement 89, wherein the data structure further includes a third identifier of a type of the computational storage unit.
    • Statement 91. An embodiment of the disclosure includes the memory according to statement 89, wherein the data structure further includes a third identifier of a host including the device.
    • Statement 92. An embodiment of the disclosure includes the memory according to statement 89, wherein the memory is configured to return the first identifier of the device in response to a query from an application.
    • Statement 93. An embodiment of the disclosure includes the memory according to statement 92, wherein the memory is further configured to return the second identifier of the capability of the computational storage unit to the application.
    • Statement 94. An embodiment of the disclosure includes the memory according to statement 89, wherein the data structure further includes a supplemental information about the computational storage unit.
    • Statement 95. An embodiment of the disclosure includes the memory according to statement 89, wherein the data structure further includes a third identifier that the device is paired with a second computational storage unit.
    • Statement 96. An embodiment of the disclosure includes a method, comprising:
      • receiving information about a computational storage unit of a device at a discovery service;
      • storing the information about the computational storage unit of the device in a data structure;
      • receiving a request from an application for the information about the computational storage unit of the device; and
      • returning to the application the information about the computational storage unit of the device.
    • Statement 97. An embodiment of the disclosure includes the method according to statement 96, wherein receiving the information about the computational storage unit of the device at the discovery service includes receiving supplemental information about the computational storage unit of the device at the discovery service.
    • Statement 98. An embodiment of the disclosure includes the method according to statement 96, wherein the information about the computational storage unit of the device includes at least one of an identifier of a computational storage capability of the computational storage unit, a type of the computational storage unit, and supplemental information about the computational storage unit.
    • Statement 99. An embodiment of the disclosure includes a method, comprising:
      • identifying a computational storage unit to be used by an application;
      • sending a discovery request from the application;
      • receiving a discovery response at the application, the discovery response identifying a device including the computational storage unit; and
      • sending a command from the application to the device.
    • Statement 100.An embodiment of the disclosure includes the method according to statement 99, wherein identifying the computational storage unit to be used by the application includes identifying a type of the computational storage unit to be used by the application.
    • Statement 101.An embodiment of the disclosure includes the method according to statement 99, wherein identifying the computational storage unit to be used by the application includes identifying a computational storage capability of the computational storage unit to be used by the application.
    • Statement 102.An embodiment of the disclosure includes the method according to statement 99, wherein:
      • sending the discovery request from the application includes sending the discovery request from the application to a discovery service; and
      • receiving the discovery response at the application includes receiving the discovery response at the application from the discovery service.
    • Statement 103.An embodiment of the disclosure includes the method according to statement 99, wherein:
      • sending the discovery request from the application includes sending the discovery request from the application to the device; and
      • receiving the discovery response at the application includes receiving the discovery response at the application from the device.
    • Statement 104.An embodiment of the disclosure includes an article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
      • receiving information about a computational storage unit of a device at a discovery service;
      • storing the information about the computational storage unit of the device in a data structure;
      • receiving a request from an application for the information about the computational storage unit of the device; and
      • returning to the application the information about the computational storage unit of the device.
    • Statement 105.An embodiment of the disclosure includes the article according to statement 104, wherein receiving the information about the computational storage unit of the device at the discovery service includes receiving supplemental information about the computational storage unit of the device at the discovery service.
    • Statement 106.An embodiment of the disclosure includes the article according to statement 104, wherein the information about the computational storage unit of the device includes at least one of an identifier of a computational storage capability of the computational storage unit, a type of the computational storage unit, and supplemental information about the computational storage unit.
    • Statement 107.An embodiment of the disclosure includes an article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:
      • identifying a computational storage unit to be used by an application;
      • sending a discovery request from the application;
      • receiving a discovery response at the application, the discovery response identifying a device including the computational storage unit; and
      • sending a command from the application to the device.
    • Statement 108.An embodiment of the disclosure includes the article according to statement 107, wherein identifying the computational storage unit to be used by the application includes identifying a type of the computational storage unit to be used by the application.
    • Statement 109.An embodiment of the disclosure includes the article according to statement 107, wherein identifying the computational storage unit to be used by the application includes identifying a computational storage capability of the computational storage unit to be used by the application.
    • Statement 110.An embodiment of the disclosure includes the article according to statement 107, wherein:
      • sending the discovery request from the application includes sending the discovery request from the application to a discovery service; and
      • receiving the discovery response at the application includes receiving the discovery response at the application from the discovery service.
    • Statement 111.An embodiment of the disclosure includes the article according to statement 107, wherein:
      • sending the discovery request from the application includes sending the discovery request from the application to the device; and
      • receiving the discovery response at the application includes receiving the discovery response at the application from the device.
  • Consequently, in view of the wide variety of permutations to the embodiments described herein, this detailed description and accompanying material is intended to be illustrative only, and should not be taken as limiting the scope of the disclosure. What is claimed as the disclosure, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto.

Claims (20)

  1. A device, comprising:
    a connector to connect the device to a component;
    a computational storage unit;
    a receiver to receive a discovery request from a discovery service; and
    a transmitter to send a discovery response to the discovery service, the discovery response including information about the computational storage unit.
  2. The device according to claim 1, wherein the information about the computational storage unit includes at least one bit identifying a computational storage capability of the computational storage unit.
  3. The device according to claim 1, further comprising a log page unit to generate a log page, the log page including supplemental information about the computational storage unit.
  4. The device according to claim 3, wherein:
    the device further comprises a second computational storage unit; and
    the log page unit is configured to generate a second log page including second supplemental information about the second computational storage unit.
  5. The device according to claim 1, wherein the computational storage unit includes a storage device.
  6. The device according to claim 1, wherein the computational storage unit is paired with a storage device.
  7. The device according to claim 1, wherein the device is remote from a host including the discovery service.
  8. A system, comprising:
    a device including a computational storage unit; and
    a discovery unit, including:
    a transmitter to send a discovery request to the device; and
    a receiver to receive a discovery response from the device, the discovery response including information about the computational storage unit.
  9. The system according to claim 8, wherein the information about the computational storage unit includes at least one bit identifying a computational storage capability of the computational storage unit.
  10. The system according to claim 8, wherein the discovery unit is configured to access a log page including supplemental information about the computational storage unit.
  11. The system according to claim 10, wherein the transmitter is configured to send a log page request to the device.
  12. The system according to claim 8, wherein the transmitter is configured to forward the information about the device to a discovery service.
  13. The system according to claim 8, wherein the device is remote from the system.
  14. A method, comprising:
    receiving a discovery request from a discovery service at a device, the device including a computational storage unit;
    generating a discovery response, the discovery response including information about the computational storage unit; and
    sending the discovery response from the device to the discovery service.
  15. The method according to claim 14, further comprising generating a log page including supplemental information about the computational storage unit.
  16. The method according to claim 15, wherein:
    the device further includes a second computational storage unit; and
    the method further comprises generating a second log page including second supplemental information about the second computational storage unit.
  17. The method according to claim 14, wherein the computational storage unit includes a storage device.
  18. The method according to claim 17, wherein the storage device is paired with a second computational storage unit.
  19. The method according to claim 14, wherein the computational storage unit is paired with a storage device.
  20. The method according to claim 14, wherein the device is remote from a host including the discovery service.
EP21190626.8A 2020-09-02 2021-08-10 A mechanism to discover computational storage functions and devices Pending EP3964956A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063073922P 2020-09-02 2020-09-02
US202163144469P 2021-02-01 2021-02-01
US17/234,780 US20220066799A1 (en) 2020-09-02 2021-04-19 Mechanism to discover computational storage functions and devices

Publications (1)

Publication Number Publication Date
EP3964956A1 true EP3964956A1 (en) 2022-03-09

Family

ID=77316813

Family Applications (1)

Application Number Title Priority Date Filing Date
EP21190626.8A Pending EP3964956A1 (en) 2020-09-02 2021-08-10 A mechanism to discover computational storage functions and devices

Country Status (6)

Country Link
US (1) US20220066799A1 (en)
EP (1) EP3964956A1 (en)
KR (1) KR20220030198A (en)
CN (1) CN114201112A (en)
AU (1) AU2021218131A1 (en)
TW (1) TW202213068A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4350500A1 (en) * 2022-10-06 2024-04-10 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for transferring programs for computational storage devices

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11818031B2 (en) 2021-03-04 2023-11-14 Dell Products L.P. Automated internet protocol (IP) route update service for ethernet layer 3 (L3) IP storage area networks (SANs)
US11805171B2 (en) * 2021-03-04 2023-10-31 Dell Products L.P. Automated ethernet layer 3 (L3) connectivity between non-volatile memory express over fabric (NVMe-oF) hosts and NVM-oF subsystems using bind
US20240020056A1 (en) * 2022-07-12 2024-01-18 Dell Products L.P. Systems and methods for send log page commands for pull model devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180063145A1 (en) * 2016-08-24 2018-03-01 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
US20200081640A1 (en) * 2018-09-10 2020-03-12 Exten Technologies, Inc. Target Optimized Auto Provisioning of Storage in a Discoverable Storage Network

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6473807B2 (en) * 2014-10-03 2019-02-20 インターデイジタル パテント ホールディングス インコーポレイテッド Method for limited direct discovery
US11360829B2 (en) * 2018-10-16 2022-06-14 Ngd Systems, Inc. System and method for communicating between computational storage devices
US11687276B2 (en) * 2021-01-26 2023-06-27 Seagate Technology Llc Data streaming for computational storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180063145A1 (en) * 2016-08-24 2018-03-01 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
US20200081640A1 (en) * 2018-09-10 2020-03-12 Exten Technologies, Inc. Target Optimized Auto Provisioning of Storage in a Discoverable Storage Network

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "NVM Express TM over Fabrics Revision 1.1", 22 October 2019 (2019-10-22), pages 1 - 83, XP055877791, Retrieved from the Internet <URL:https://nvmexpress.org/wp-content/uploads/NVMe-over-Fabrics-1.1-2019.10.22-Ratified.pdf> [retrieved on 20220111] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4350500A1 (en) * 2022-10-06 2024-04-10 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for transferring programs for computational storage devices

Also Published As

Publication number Publication date
US20220066799A1 (en) 2022-03-03
AU2021218131A1 (en) 2022-03-17
CN114201112A (en) 2022-03-18
TW202213068A (en) 2022-04-01
KR20220030198A (en) 2022-03-10

Similar Documents

Publication Publication Date Title
EP3964956A1 (en) A mechanism to discover computational storage functions and devices
JP7252789B2 (en) FPGA-based acceleration module and system for SSD and method of operation
US8140785B2 (en) Updating metadata in a logical volume associated with a storage controller for data units indicated in a data structure
TWI702500B (en) System, method and article for using multi-streaming
US11513977B2 (en) Pipelined data processing in fabric-enabled computational storage
US11966343B2 (en) Universal mechanism to access and control a computational device
US11321244B2 (en) Block interface emulation for key value device
US7275064B2 (en) Apparatus for managing virtualized-information
US20150356108A1 (en) Storage system and storage system control method
US11960419B2 (en) Systems and methods for data prefetching for low latency data read from a remote server
EP3937000A1 (en) Key value storage device and method for sorting key
US20230244664A1 (en) Hybrid database scan acceleration system
US20220391224A1 (en) Plugin framework mechanism to manage computational storage devices
EP4332748A1 (en) Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
EP4332747A1 (en) Systems and methods for integrating a compute resource with a storage device
US20230198740A1 (en) Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
KR102405890B1 (en) Method for copying data initial and computing device for executing the method
US11036424B2 (en) Garbage collection in a distributed storage system
TW202411867A (en) Multi-function device and methods for integrating fully homomorphic encryption (fhe) with a storage device
CN117648052A (en) Multifunction device and method for a multifunction device
CN117648203A (en) Multifunction device and method for a multifunction device

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN PUBLISHED

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20220321

RBV Designated contracting states (corrected)

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20230428

P01 Opt-out of the competence of the unified patent court (upc) registered

Effective date: 20230520