Patent ID: 12223179

DETAILED DESCRIPTION

For purposes of this disclosure, an information handling system may include any instrumentality or aggregate of instrumentalities operable to compute, calculate, determine, classify, process, transmit, receive, retrieve, originate, switch, store, display, communicate, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, or other purposes. For example, an information handling system may be a personal computer (e.g., desktop or laptop), tablet computer, mobile device (e.g., personal digital assistant (PDA) or smart phone), server (e.g., blade server or rack server), a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include random access memory (RAM), one or more processing resources such as a central processing unit (CPU) or hardware or software control logic, ROM, and/or other types of nonvolatile memory. Additional components of the information handling system may include one or more disk drives, one or more network ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, touchscreen and/or a video display. The information handling system may also include one or more buses operable to transmit communications between the various hardware components.

In one embodiment, IHS100,FIG.1, includes a processor102, which is connected to a bus104. Bus104serves as a connection between processor102and other components of IHS100. An input device106is coupled to processor102to provide input to processor102. Examples of input devices may include keyboards, touchscreens, pointing devices such as mouses, trackballs, and trackpads, and/or a variety of other input devices known in the art. Programs and data are stored on a mass storage device108, which is coupled to processor102. Examples of mass storage devices may include hard discs, optical disks, magneto-optical discs, solid-state storage devices, and/or a variety of other mass storage devices known in the art. IHS100further includes a display110, which is coupled to processor102by a video controller112. A system memory114is coupled to processor102to provide the processor with fast storage to facilitate execution of computer programs by processor102. Examples of system memory may include random access memory (RAM) devices such as dynamic RAM (DRAM), synchronous DRAM (SDRAM), solid state memory devices, and/or a variety of other memory devices known in the art. In an embodiment, a chassis116houses some or all of the components of IHS100. It should be understood that other buses and intermediate circuits can be deployed between the components described above and processor102to facilitate interconnection between the components and the processor102.

Referring now toFIG.2, an embodiment of a networked system200is illustrated that may provide the autonomous compute storage device system of the present disclosure. In the illustrated embodiment, the networked system200includes one or more computing devices202. In an embodiment, the computing device(s)202may be provided by the IHS100discussed above with reference toFIG.1, and/or may include some or all of the components of the IHS100, and in specific examples may include server devices, desktop computing devices, laptop/notebook computing devices, tablet computing devices, mobile phones, and/or other computing devices that would be apparent to one of skill in the art in possession of the present disclosure. However, while illustrated and discussed as being provided by particular computing devices, one of skill in the art in possession of the present disclosure will recognize that the autonomous compute storage devices of the present disclosure may be provided in a variety of systems or devices that are configured to operate similarly as the computing device(s)202discussed below.

As illustrated, the computing device(s)202may be coupled to a network204that may be provided by a Local Area Network (LAN), the Internet, combinations thereof, and/or other networks that would be apparent to one of skill in the art in possession of the present disclosure. Furthermore, in the illustrated embodiment, an autonomous compute storage device signature/application provisioning system206is coupled to the network204. In an embodiment, the autonomous compute storage device signature/application provisioning system206may be provided by the IHS100discussed above with reference toFIG.1, and/or may include some or all of the components of the IHS100, and in specific examples may include one or more server devices. However, while illustrated and discussed as being provided by server devices, one of skill in the art in possession of the present disclosure will recognize that the autonomous compute storage device signature/application provisioning system of the present disclosure may be provided in a variety of systems or devices that are configured to operate similarly as the autonomous compute storage device signature/application provisioning system206discussed below.

As described in further detail below, the autonomous compute storage device signature/application provisioning system206may provide an autonomous compute storage device application store (“app store”) that is accessible via the network204by autonomous compute storage device(s) in the computing device(s)202to retrieve the autonomous compute storage device signatures and autonomous compute storage device applications for utilization in providing the autonomous compute functionality described below. As such, in the illustrated embodiment, one or more autonomous compute storage device signature/application developer systems208are coupled to the network204. In an embodiment, the autonomous compute storage device signature/application developer system(s)208may be provided by the IHS100discussed above with reference toFIG.1, and/or may include some or all of the components of the IHS100, and in specific examples may include desktop computing devices, laptop/notebook computing devices, and/or other computing devices that would be apparent to one of skill in the art in possession of the present disclosure. However, while illustrated and discussed as being provided by particular computing devices, one of skill in the art in possession of the present disclosure will recognize that the autonomous compute storage device signature/application developer system(s) of the present disclosure may be provided in a variety of systems or devices that are configured to enable the autonomous compute storage device signature/application development required to develop the autonomous compute storage device signatures and autonomous compute storage device applications described below.

For example, the autonomous compute storage device signature/application developer system(s)208may be utilized to develop any autonomous compute storage device signature/application combinations described below that allow the autonomous compute storage devices of the present disclosure to perform any of the autonomous compute functionality described below, and then publish, transmit, and/or otherwise provide those autonomous compute storage device signature/application combinations via the network204to the autonomous compute storage device signature/application provisioning system206. The autonomous compute storage devices of the present disclosure may then register with the autonomous compute storage device signature/application provisioning system206and subscribe, download, and/or otherwise retrieve autonomous compute storage device signature/application combinations needed to perform desired autonomous compute functionality. As such, a variety of autonomous compute functionality may be developed by “third-party” developers and then made available to autonomous compute storage devices via an autonomous compute storage device app store using the networked system200illustrated inFIG.2.

However, while a specific networked system200has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that the autonomous compute storage device system of the present disclosure may be provided using a variety of components and/or component configurations while remaining within the scope of the present disclosure as well. For example, rather than having the autonomous compute storage devices connected to the autonomous compute storage device signature/application provision system206via the network204as illustrated inFIG.2, the autonomous compute storage device signature/application provisioning system of the present disclosure may be included in a computing device (e.g., a server device) with the autonomous compute storage devices that use it in order to provide a “localized app store” for those autonomous compute storage devices (e.g., a localized app store enabled by a CPU in that server device for the autonomous compute storage devices in that server device).

Referring now toFIG.3, an embodiment of an autonomous compute storage device signature/application provisioning system300is illustrated that may provide the autonomous compute storage device signature/application provisioning system206discussed above with reference toFIG.2. As such, the autonomous compute storage device signature/application provisioning system300may be provided by the IHS100discussed above with reference toFIG.1and/or may include some or all of the components of the IHS100, and in specific examples may be provided by one or more server devices. However, while illustrated and discussed as being provided by server device(s), one of skill in the art in possession of the present disclosure will recognize that the functionality of the autonomous compute storage device signature/application provisioning system300discussed below may be provided by other devices that are configured to operate similarly as the autonomous compute storage device signature/application provisioning system300discussed below.

In the illustrated embodiment, the autonomous compute storage device signature/application provisioning system300includes a chassis302that houses the components of the autonomous compute storage device signature/application provisioning system300, only some of which are illustrated and discussed below. For example, the chassis302may house a processing system (not illustrated, but which may include the processor102discussed above with reference toFIG.1) and a memory system (not illustrated, but which may include the memory114discussed above with reference toFIG.1) that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide an autonomous compute storage device signature/application provisioning engine304that is configured to perform the functionality of the autonomous compute storage device signature/application provisioning engines and/or autonomous compute storage device signature/application provisioning systems discussed below.

The chassis302may also house a storage system (not illustrated, but which may include the storage108discussed above with reference toFIG.1) that is coupled to the autonomous compute storage device signature/application provisioning engine304(e.g., via a coupling between the storage system and the processing system) and that may include a plurality of databases that are configured to store any of the information utilized by the autonomous compute storage device signature/application provisioning engine304discussed below. For example, an autonomous compute signature database306amay be configured to store the autonomous compute signatures discussed below as being provided to autonomous compute storage devices by the autonomous compute storage device signature/application provisioning engine304, an autonomous compute application database306bmay be configured to store the autonomous compute applications discussed below as being provided to autonomous compute storage devices by the autonomous compute storage device signature/application provisioning engine304, and up to an autonomous compute results database306cmay be configured to store the autonomous compute results discussed below as being received by the autonomous compute storage device signature/application provisioning engine304from autonomous compute storage devices. However, while a plurality of databases are illustrated and described, one of skill in the art in possession of the present disclosure will appreciate how any of those databases may be combined while remaining within the scope of the present disclosure. Furthermore, while particular databases storing particular data are illustrated and described, one of skill in the art in possession of the present disclosure will appreciate how other databases may store other data utilized by the autonomous compute storage device signature/application provisioning engine304while remaining within the scope of the present disclosure as well.

The chassis302may also house a communication system308that is coupled to the autonomous compute storage device signature/application provisioning engine304(e.g., via a coupling between the communication system308and the processing system) and that may be provided by a Network Interface Controller (NIC), wireless communication systems (e.g., BLUETOOTH®, Near Field Communication (NFC) components, WiFi components, etc.), and/or any other communication components that would be apparent to one of skill in the art in possession of the present disclosure. However, while a specific autonomous compute storage device signature/application provisioning system300has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that autonomous compute storage device signature/application provisioning systems (or other systems operating according to the teachings of the present disclosure in a manner similar to that described below for the autonomous compute storage device signature/application provisioning system300) may include a variety of components and/or component configurations for providing conventional functionality, as well as the functionality discussed below, while remaining within the scope of the present disclosure as well.

Referring now toFIG.4, an embodiment of a computing device400is illustrated that may provide any of the computing device(s)202discussed above with reference toFIG.2. As such, the computing device400may be provided by the IHS100discussed above with reference toFIG.1and/or may include some or all of the components of the IHS100, and in specific examples may be provided by a server device, desktop computing device, laptop/notebook computing device, tablet computing device, mobile phone, and/or other computing devices that would be apparent to one of skill in the art in possession of the present disclosure. However, while illustrated and discussed as being provided by particular computing devices, one of skill in the art in possession of the present disclosure will recognize that the functionality of the computing device400discussed below may be provided by other devices that are configured to operate similarly as the computing device400discussed below.

In the illustrated embodiment, the computing device400includes a chassis402that houses the components of the computing device400, only some of which are illustrated and discussed below. For example, the chassis402may house a processing system (not illustrated, but which may include the processor102discussed above with reference toFIG.1) and a memory system (not illustrated, but which may include the memory114discussed above with reference toFIG.1) that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a host engine that is configured to perform the functionality of the host engines and/or computing devices discussed below. For example, as would be appreciated by one of skill in the art in possession of the present disclosure, the host engine404may be enabled by a Central Processing Unit (CPU) and is described below as providing read instructions and/or write instructions, but one of skill in the art in possession of the present disclosure will recognize that the host engine404may perform a variety of other host functionality while remaining within the scope of the present disclosure as well.

In the illustrated embodiment, the chassis402also houses one or more autonomous compute storage devices406(e.g., that may provide the storage108discussed above with reference toFIG.1) that are coupled to the host engine404(e.g., via a coupling between the autonomous compute storage device(s)406and the processing system) and that may be provided according to the teachings of the present disclosure. The chassis402may also house a communication system408that is coupled to the host engine404(e.g., via a coupling between the communication system408and the processing system) and that may be provided by a Network Interface Controller (NIC), wireless communication systems (e.g., BLUETOOTH®, Near Field Communication (NFC) components, WiFi components, etc.), and/or any other communication components that would be apparent to one of skill in the art in possession of the present disclosure. However, while a specific computing device400has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that the autonomous compute storage devices of the present disclosure may be included in other devices or systems that include a variety of components and/or component configurations for providing conventional functionality, as well as the functionality discussed below, while remaining within the scope of the present disclosure as well.

Referring now toFIG.5, an embodiment of an autonomous compute storage device500is illustrated that may provide the autonomous compute storage device(s)406discussed above with reference toFIG.4. As such, the autonomous compute storage device500may be provided in the IHS100discussed above with reference toFIG.1(e.g., as the storage device108), and in specific examples may be provided by a Solid State Drive (SSD) storage device such as a Non-Volatile Memory express (NVMe) SSD storage device. However, while illustrated and discussed as being provided by particular storage devices, one of skill in the art in possession of the present disclosure will recognize that the functionality of the autonomous compute storage device500discussed below may be provided by other storage devices utilizing other storage technologies while remaining within the scope of the present disclosure as well.

In the illustrated embodiment, the autonomous compute storage device500includes a chassis502that houses the components of the autonomous compute storage device500, only some of which are illustrated and discussed below. For example, the chassis502may house a storage device processing system (not illustrated, but which may include the processor102discussed above with reference toFIG.1) and a storage device memory system (not illustrated, but which may include the memory114discussed above with reference toFIG.1) that is coupled to the storage device processing system and that includes instructions that, when executed by the storage device processing system, cause the storage device processing system to provide a storage device management engine504that is configured to perform the functionality of the storage device engines and/or autonomous compute storage devices discussed below. In a specific example, the storage device management engine504may be provided by an Application Specific Integrated Circuit (ASIC), firmware, an SSD controller, and/or other storage device processing/memory components that would be apparent to one of skill in the art in possession of the present disclosure.

In the illustrated embodiment, the memory system housed in the chassis502includes instructions that, when executed by the processing system, cause the processing system to provide a communication engine504athat is part of the storage device management engine504and that is configured to perform communication functionality for the autonomous compute storage device500including, for example, utilizing a communication protocol (e.g., an NVMe communication protocol) to enable communications between the storage device management engine504and the host engine404in the computing device400discussed above with reference toFIG.4. In the illustrated embodiment, the memory system housed in the chassis502also includes instructions that, when executed by the processing system, cause the processing system to provide an autonomous compute storage device management engine504bthat is part of the storage device management engine504and that is configured to perform the autonomous compute functionality for the autonomous compute storage device500discussed below. In a specific example, the autonomous compute storage device management engine504bmay be provided by a Flash Translation Layer (FTL) subsystem, although one of skill in the art in possession of the present disclosure will appreciate how other storage device subsystems may provide the autonomous compute storage device management engine504bwhile remaining within the scope of the present disclosure as well.

In the illustrated embodiment, the memory system housed in the chassis502also includes instructions that, when executed by the processing system, cause the processing system to provide one or more storage subsystem control engines504cthat are part of the storage device management engine504and that are configured to perform the storage subsystem control functionality for the autonomous compute storage device500discussed below. In a specific example, the storage subsystem control engine(s)504cmay be provided by NAND/flash protocol sequencing engines that are configured to translate NAND/flash device commands to NAND/flash device specific protocol sequences, although one of skill in the art in possession of the present disclosure will appreciate how other storage subsystems may require the use of other storage subsystem control engine(s) while remaining within the scope of the present disclosure as well. In the illustrated embodiment, the chassis502may also house a storage system that is coupled to the autonomous compute storage device management engine504bin the storage device management engine504(e.g., via a coupling between the storage system and the processing system) and that includes an autonomous compute storage device database506that is configured to store any of the information utilized by the autonomous compute storage device management engine504bdiscussed below.

The chassis502may also house a memory subsystem508that is coupled to the autonomous compute storage device management engine504band the storage subsystem control engine(s)504cin the storage device management engine504(e.g., via a coupling between the memory subsystem508and the processing system). In a specific example, the memory subsystem508illustrated inFIG.5may represent multiple different memory subsystems that are accessible to the autonomous compute storage device management engine504bsuch as, for example, an internal memory subsystem that may be provided by an “on-chip” memory subsystem that is included in the processing system that provides the storage device management engine504and that may be used for the read operations discussed below that are relatively faster, more prevalent, and require relatively less power, as well as a Dynamic Random Access Memory (DRAM) memory subsystem that may be used for write operations and background operations (or other combined read/write operations) that are relatively slower, less prevalent, and require relatively more power.

However, while the memory subsystem508is illustrated and described as being included in the chassis502, one of skill in the art in possession of the present disclosure will appreciate how the memory subsystem508may be included outside the chassis502as well. For example, embodiments of the memory subsystem508that include the DRAM memory subsystem discussed above may provide that DRAM memory subsystem inside the chassis502(e.g., as an internal DRAM memory subsystem in the autonomous compute storage device500) or outside the chassis502(e.g., as an external DRAM memory subsystem provided in the chassis402of the computing device400discussed above with reference toFIG.4and coupled to the autonomous computer storage device500) while remaining accessible to the autonomous compute storage device management engine504bas described below. Furthermore, other embodiments of the memory subsystem508may include temporary First In First Out (FIFO) memory, temperature holding buffer memory, and/or other memory subsystems that, as discussed in some of the specific examples below, may be utilized to hold data streamed from the storage subsystem310to another storage subsystem as part of, for example, Direct Memory Access (DMA) operations.

The chassis502may also house a storage subsystem510that is coupled to the storage subsystem control engine(s)504cin the storage device management engine504(e.g., via a coupling between the storage subsystem510and the processing system). In a specific example, the storage subsystem510may be provided by NAND/flash devices, although one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how other storage devices using other storage technologies will benefit from the teachings of the present disclosure and thus will fall within it scope as well. The chassis502may also house a communication system512that is coupled to the communication engine504ain the storage device management engine504(e.g., via a coupling between the communication system512and the processing system) and that may be provided by any of a variety of storage device communication components that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. However, while a specific autonomous compute storage device500has been illustrated and described, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will recognize that autonomous compute storage devices (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the autonomous compute storage device500) may include a variety of components and/or component configurations for providing conventional storage device functionality, as well as the functionality discussed below, while remaining within the scope of the present disclosure as well.

With reference toFIG.6, a specific example of an autonomous compute storage device600is illustrated that may provide the autonomous compute storage devices406and/or500discussed above. As such, the autonomous compute storage device600may be provided in the IHS100discussed above with reference toFIG.1(e.g., as the storage device108), and in specific examples may be provided by an SSD storage device such as an NVMe SSD storage device. However, while illustrated and discussed as being provided by particular storage devices, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will recognize that the functionality of the autonomous compute storage device600discussed below may be provided by other storage devices utilizing other storage technologies while remaining within the scope of the present disclosure as well.

The inventors of the present disclosure have developed a microservice storage device that may be utilized to provide the autonomous compute storage device of the present disclosure, and that microservice storage device is described in U.S. patent application Ser. No. 17/969,874, filed on Oct. 20, 2022; U.S. patent application Ser. No. 17/969,818, filed on Oct. 20, 2022; and U.S. patent application Ser. No. 17/969,917, filed on Oct. 20, 2022; the disclosures of which are incorporated by reference herein in their entirety. As discussed in those patent documents, a microservice storage device may be configured to utilize its storage device compute hardware to provide a storage device operating system, and that storage device operating system may then be utilized to provide a container including a storage device management engine, while also providing one or more containers including microservices in some embodiments. As discussed below, the autonomous compute signatures and/or autonomous compute applications may be provided using the microservices described above, although one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how the provisioning of the autonomous compute signatures and/or autonomous compute applications using other techniques will fall within the scope of the present disclosure as well.

In the illustrated embodiment, the autonomous compute storage device600includes a chassis602that houses the components of the autonomous compute storage device600, only some of which are illustrated and discussed below. Similarly as discussed above, the chassis602of the autonomous compute storage device600may house storage device compute hardware604that may be provided by the storage device processing system, the storage device memory system, and/or other Central Processing Unit (CPU), Application-Specific Integrated Circuit (ASIC), SSD controller, and/or compute hardware discussed above, storage device peripherals/hardware that allows the compute hardware to communicate with the storage subsystem510(e.g., NAND devices), accelerator devices, encryption/decryption devices, and/or other elements of the microservice storage device600, as well as any other storage device compute hardware that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. The specific example of the autonomous compute storage device600ofFIG.6illustrates how the storage device compute hardware604may be utilized to provide a storage device operating system606such as, for example, a LINUX® operating system and/or other operating systems that one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure would appreciate may be run on the storage device compute hardware described herein.

The specific example of the microservice storage device600ofFIG.6also illustrates how a container management system608may be provided using the storage device operating system606. For example, the container management system608may be provided by DOCKER® container management open-source software that includes a set of Platform as a Service (PaaS) products that, as discussed below, may utilize the storage device operating system606to perform operating-system-level virtualization operations to provide microservices in packages called “containers”, as well as any other container management software that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. As illustrated inFIG.6, the autonomous compute storage device600may include one or more microservices610that may be provided in the containers managed by the container management system608. As discussed above and in further detail below, the microservice(s)610may be utilized to provide the autonomous compute signatures and/or autonomous compute applications described herein. Furthermore, in some embodiments, the autonomous compute storage device600may include a container orchestration system612. For example, the container orchestration system612may be provided by a KUBERNETES® container orchestration open-source software that is configured to automate the microservice/container deployment, scaling, and management that one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure would recognize as allowing for the functionality discussed below, as well as any other container orchestration software that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure.

As such, in a specific example, the autonomous compute storage device600may be an SSD storage device with storage device compute hardware604that provides an SSD controller that is configured to run a LINUX® storage device operating system606, a DOCKER® container management system608, the microservice(s)610in container(s), and a KUBERNETES® container orchestration system612described above. However, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how the autonomous compute storage device may utilize other storage device compute hardware to run other storage device operating systems, other container management systems, microservice(s) in container(s), and/or other container orchestration systems, while remaining within the scope of the present disclosure as well

With reference toFIG.7, a specific example of an autonomous compute storage device700is illustrated that may provide the autonomous compute storage devices406,500, and/or600discussed above. As such, the autonomous compute storage device700may be provided in the IHS100discussed above with reference toFIG.1(e.g., as the storage device108), and in specific examples may be provided by an SSD storage device such as an NVMe SSD storage device. However, while illustrated and discussed as being provided by particular storage devices, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will recognize that the functionality of the autonomous compute storage device700discussed below may be provided by other storage devices utilizing other storage technologies while remaining within the scope of the present disclosure as well.

As discussed above, the inventors of the present disclosure have developed a microservice storage device that may be utilized to provide the autonomous compute storage device of the present disclosure, and that microservice storage device is described in U.S. patent application Ser. No. 17/969,874, filed on Oct. 20, 2022; U.S. patent application Ser. No. 17/969,818, filed on Oct. 20, 2022; and U.S. patent application Ser. No. 17/969,917, filed on Oct. 20, 2022; the disclosures of which are incorporated by reference herein in their entirety. In the illustrated embodiment, the autonomous compute storage device700includes a chassis702that houses the components of the autonomous compute storage device700, only some of which are illustrated and discussed below. As described in the patent documents discussed above, the chassis702of the autonomous compute storage device700may house storage device compute hardware704that may include, for example, the storage device compute hardware604in the microservice storage device600and/or the storage device processing system and the storage device memory system that are described above as providing the storage device management engine504in the microservice storage device500. As such, the storage device compute hardware704and storage device management engine code, instructions, or other data may be utilized to provide a storage device operating system706, which as discussed above for the storage device operating system606in the microservice storage device600, may include a LINUX® operating system and/or other operating systems that one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure would appreciate may be run on the storage device compute hardware described herein.

Furthermore, a container management system (e.g., similar to the container management system608discussed above with reference toFIG.6) may be provided in the microservice storage device700and may utilize the storage device operating system706to perform operating-system-level virtualization operations to generate, create, and/or otherwise provide a container710, and then provide a storage device management engine710ain that container710that may include a communication engine710b, an autonomous compute storage device management engine710c, and storage subsystem control engine(s)710das illustrated inFIG.7(which may be similar to the storage device management engine504including the communication engine504a, the autonomous compute storage device management engine504b, and storage subsystem control engine(s)504cillustrated inFIG.5). As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, the container710may be provided by a virtual container that packages the storage device management engine code, instructions, and/or other data, along with all of its dependencies, in order to allow the storage device management engine710ato run quickly and reliably from one computing environment to another. As such, the container710may be provided by a lightweight, standalone, executable package of software that includes everything needed to run the storage device management engine710including code information, runtime information, system tools, system libraries, settings, and/or other data that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. Furthermore, while not described herein in detail, a container orchestration system (e.g., similar to the container orchestration system612discussed above with reference toFIG.6) may be provided in the microservice storage device700in order to automate the storage device management engine710a/container710deployment, scaling, and management that one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure would recognize as allowing for the functionality described below.

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure,FIG.7illustrates how the container710/storage device management engine710aallows the components of the storage device management engine710ato communicate with the storage device operating system706, and with storage device compute hardware704via a storage device compute hardware library708(e.g., via the respective arrows between the storage device operating system706and each of the communication engine710b, the autonomous compute storage device management engine710c, and the storage subsystem control engine(s)710d; as well as via the respective arrows between the storage device compute hardware library708and each of the communication engine710b, the microservice provisioning engine710c, and the storage subsystem control engine(s)710d, and the arrow between the storage device compute hardware library708and the storage device compute hardware704).

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, the storage device compute hardware library708may include device-specific code that is configured to abstract the “uniqueness” of the autonomous compute storage device700from the containers/microservices provided therein so that those containers/microservices may operate agnostically with regard to the storage device compute hardware704, allowing any communications between the storage device compute hardware704and any of the storage device management engine710a, the communication engine710b, the microservice provisioning engine710c, and/or the storage subsystem control engine(s)710dthat are required to allow for the functionality described herein. For example, the storage device compute hardware library708may be configured to allow containers/microservices provided in the autonomous compute storage device700to identify a number of NAND die, a number of blocks per NAND die, and/or other autonomous compute storage device inventory information that may be relatively unique to the autonomous compute storage device700without a need to code a plurality of different containers/microservices for relatively similar autonomous compute storage devices.

As such, the storage device management engine710aand microservices712a,714a, and up to716amay operate without hardware dependencies. As discussed herein, the storage device management engine710amay be considered a storage device management microservice, and may utilize an abstraction layer provided by the storage device compute hardware library to operate on different types of storage device compute hardware (e.g., like the storage device compute hardware704illustrated inFIG.7) via the “library view” of that storage device compute hardware described above. As such, storage device compute hardware libraries in different autonomous compute storage devices may provide the same API to the storage device management engine710aregardless of the particular implementation of their storage device compute hardware. However, while a particular functionality for the storage device compute hardware library708has been described, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how other functionality and/or uses of the storage device compute library (e.g., by providing direct access to processing hardware in order to enable faster performance) will fall within the scope of the present disclosure as well.

Furthermore, the provisioning of microservices on the autonomous compute storage device700may be performed substantially as described above for the storage device management engine710a. As such, with reference toFIG.7, the storage device operating system706provided using the storage device compute hardware704may utilize microservice code, instructions, or other data to provide signature/compute microservices712a,714a, and up to716(discussed in further detail below) in the microservice storage device700. For example, similarly as described for the storage device management engine710a, a container management system (e.g., similar to the container management system608discussed above with reference toFIG.6) may be provided in the microservice storage device700and may utilize the storage device operating system706to perform operating-system-level virtualization operations to generate, create, and/or otherwise provide containers712,714, and up to716using the storage device operating system706, and then provide the signature/compute microservices712a,714a, and716ain those containers712,714, and up to716, respectively.

Similarly as described above, the containers712,714, and up to716may be provided by respective virtual containers that package the microservice code, instructions, and/or other data, along with all of its dependencies, in order to allow the signature/compute microservices712a,714a, and up to716a, respectively, to run quickly and reliably from one computing environment to another. As such, the containers712,714, and up to716may each be provided by a respective lightweight, standalone, executable package of software that includes everything needed to run its microservice including code information, runtime information, system tools, system libraries, settings, and/or other data that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. Furthermore, while not described herein in detail, the container orchestration system (e.g., similar to the container orchestration system612discussed above with reference toFIG.6) that may be provided in the microservice storage device700as discussed above may operate to automate the microservice/container deployment, scaling, and management that one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure would recognize as allowing for the functionality discussed below.

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, from the point of view of the storage device operating system706, the storage device management engine710aprovided in the container710and the signature/compute microservices712a,714a, and up to716aprovided in the containers712,714, and up to716, respectively, may all be viewed as respective microservices (i.e., the storage device management engine710amay simply be viewed as a microservice that performs “storage device management” compute functions). As such, while described as a “storage device management engine” and “signature/compute microservices”, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate that the storage device operating system706in the microservice storage device700illustrated inFIG.7Cmay “see” a plurality of containers710,712,714, and up to716that each include a respective microservice. Furthermore, as described in further detail below, any microservices provided in the autonomous compute storage device700may communicate with each other in order to perform desired functionality.

Referring now toFIG.8, an embodiment of a method800for configuring autonomous compute storage devices is illustrated. As discussed below, the systems and methods of the present disclosure provide an autonomous compute storage device signature application provisioning system (also referred to as an “autonomous compute storage device app store”) that is accessible by the autonomous compute storage devices of the present disclosure to retrieve the autonomous compute signatures/applications that enable the autonomous compute operations discussed below. For example, the autonomous compute storage device app store of the present disclosure may receive and store autonomous compute signatures/applications from autonomous compute storage device signature application developers, with the autonomous compute storage devices retrieving autonomous compute signatures from the autonomous compute storage device app store for use in identifying data that is currently subject to storage operations (e.g., read or write operations, background operations, etc.), as well as retrieving the corresponding autonomous compute application from the autonomous compute storage device app store and executing that autonomous compute application in order to perform compute operations on that data. As such, an autonomous compute storage device ecosystem may be provided that enables any of a variety of desired autonomous compute functionality from storage devices.

As discussed above, while the autonomous compute storage device signature/application provisioning system206(or autonomous compute storage device “app store”) is illustrated and described as being accessed by the autonomous compute storage devices via the network204in the examples below, in other non-illustrated embodiments the autonomous compute storage device signature/application provisioning system206may be hosted locally on a network (e.g., a Local Area Network (LAN) controlled by a single company or other entity), with the autonomous compute storage device signatures/applications developed and validated locally. Furthermore, in yet other embodiments, the autonomous compute storage device signature/application provisioning system206of the present disclosure may be provided per-computing-device (e.g., hosted in a server device by the host engine404), per-computing-device-rack (e.g., hosted by a rack controller or other subsystem in a rack that houses a plurality of computer devices), and/or in other manners that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure.

The method800begins at block802where an autonomous compute storage device signature/application provisioning system receives autonomous compute signature/application combinations. With reference toFIGS.9A and9B, in an embodiment of block802, the autonomous compute storage device signature/application provisioning engine304in the autonomous compute storage device signature/application provisioning system206/300may perform autonomous compute signature/application receiving operations900that include receiving, via the network204, autonomous compute signature/application combinations from the autonomous compute storage device signature/application developer system(s)208via its communication system308. Furthermore, in response to receiving the autonomous compute signature/application combinations, the autonomous compute storage device signature/application provisioning engine304may perform autonomous compute signature/application storage operations902that, in the illustrated embodiment, includes storing the autonomous compute signature(s) in the autonomous compute signature database306a, and storing the autonomous compute application(s) in the autonomous compute application database306b.

As discussed in further detail below, the autonomous compute signatures/applications of the present disclosure may be configured to operate on data streams that may be provided by data flowing between the host engine404and the storage subsystem510in the autonomous compute storage device406/500during host read or write operations, or that may be provided by data flowing in and out of the storage subsystem510in the autonomous compute storage device406/500during background operations. However, while described as operating on data streams flowing between particular locations, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how the autonomous compute signatures/applications may operate on data transmitted in other manners while remaining within the scope of the present disclosure as well.

In some embodiments, the autonomous compute signatures/applications of the present disclosure may be developed by the autonomous compute storage device signature/application developer system(s)208using an autonomous compute signature/application interpreted programming language that allows the autonomous compute signatures/applications to be configured for use with different storage device configurations (e.g., different storage device Central Processing Unit (CPU) architectures). For example, the autonomous compute signature/application interpreted programming language used to develop the autonomous compute signatures/applications may minimize implementation dependencies by, for example, providing a mechanism for allocating memory (e.g., allocating either “normal speed” subset of memory or “fast” subset of memory from the memory subsystem508in the autonomous compute storage device500) that allows the autonomous compute signatures/applications to request memory without a need to know details about that memory, and then receive back virtual memory addresses for memory allocated to it.

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, different storage device configurations may perform memory allocation in different manners, and the autonomous compute signature/application interpreted programming language may provide a common memory allocation interface for autonomous compute signatures/applications while allowing the different memory allocation operations required by the different storage device configurations discussed above. Furthermore, while a specific example has been provided, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how dependencies other than the memory allocation dependencies discussed above may be resolved by the autonomous compute storage device manufacturer/vendor via, for example, the storage device operating system that is integrated with the storage device compute hardware included in the autonomous compute storage device.

In a specific example, the autonomous compute storage device signature/application developer system(s)208may utilize the autonomous compute signature/application interpreted programming language to develop autonomous compute signatures/applications that may operate in a “sandbox” in the autonomous compute storage device, and may validate developed autonomous compute signatures/applications by compiling the autonomous compute signatures/applications to produce bytecode, and then providing that bytecode to an interpreter that is executed in a hardware-independent simulator. As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, the autonomous compute signature/application interpreted programming language may allow developers of the autonomous compute storage device signature/application developer system(s)208to “write once, run anywhere”, or otherwise develop autonomous compute signature/application code that is configured to run on a variety of different autonomous compute storage devices having different storage device configurations.

Furthermore, operating systems provided on autonomous compute storage devices may include interpreters as well, with those interpreters converting bytecode (produced via the compiling of the autonomous compute signature/application) to assembly code (or other locally executable machine code) that may be provided to a CPU in the autonomous compute storage device that is configured to execute that assembly code. For example, such bytecode-to-assembly-code conversions may be performed “on-the-fly” (e.g., using a Just In Time (JIT) scheme) as the autonomous compute signature/application is executed, or using an Ahead Of Time (AOT) scheme that provides the assembly code available for local execution to eliminate the use of the interpreter during execution of the autonomous compute signature/application. As such, each autonomous compute storage device manufacturer/vendor may configure the interpreter in their autonomous compute storage devices to operate based on the storage device hardware, configuration, and/or other characteristics of those autonomous compute storage devices, with those interpreters implemented in software, hardware, or combinations thereof, and in some examples omitted if the hardware is configured to directly execute the bytecode (or portions thereof).

In a specific embodiment, the autonomous compute signatures discussed above may include an autonomous compute signature algorithm that may be configured to be executed on data, and an autonomous compute signature definition that defines the “signature” of data that triggers the execution of the autonomous compute applications discussed in further detail below. For example, the autonomous compute signature algorithm may be provided by a hash algorithm, a Cyclic Redundancy Check (CRC) algorithm, a decryption algorithm, and/or other data transformation algorithms known in the art that are configured to transform data to produce a data signature, and the autonomous compute signature definition may be compared to the data signature to determine whether there is a match (with the corresponding autonomous compute application executed in response to a match as discussed in further detail below). However, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how simplified scenarios may exist where the autonomous compute signature definition is compared directly to a data signature of the data at issue (rather than a transformation of that data), and thus embodiments of the autonomous compute signature algorithm may include a “identity function” that does not modify or transform the data. However, while autonomous compute signatures having autonomous compute signature algorithms and autonomous compute signature definitions have been described, one of skill in the art in possession of the present disclosure will appreciate how the autonomous compute signature algorithms may be omitted in some scenarios (e.g., in the embodiments in which transformation of the data at issue is not required) while remaining within the scope of the present disclosure as well.

The method800then proceeds to block804where an autonomous compute signature is provided to an autonomous compute storage device, and in some embodiments to optional block806as well where an autonomous compute application corresponding to the autonomous compute signature may be provided to the autonomous compute storage device. With reference toFIG.10A, in an embodiment of block804, the autonomous compute storage device signature/application provisioning engine304in the autonomous compute storage device signature/application provisioning system300may perform autonomous compute signature provisioning operations1000that may include retrieving an autonomous compute signature from the autonomous compute signature database306aand transmitting that autonomous compute signature via its communication system308. With reference toFIG.10B, in an embodiment of optional block806, the autonomous compute storage device signature/application provisioning engine304in the autonomous compute storage device signature/application provisioning system300may perform autonomous compute application provisioning operations1002that may include retrieving an autonomous compute application from the autonomous compute application database306bthat corresponds to the autonomous compute signature retrieved at block804from the autonomous compute signature database306a, and then transmitting that autonomous compute application via its communication system308.

With reference toFIGS.10C,10D, and10E, the autonomous compute signature provisioning operations1000performed at block804may include transmitting the autonomous compute signature via the network204and to the computing device202/400such that it is received by the host engine404via its communication system408, and provided by the host engine404to the autonomous compute storage device406/500such that it is received by the communication engine504avia the communication subsystem512and provided by the communication engine504ato the autonomous compute storage device management engine504b. As such, at block804and in response to receiving the autonomous compute signature, the autonomous compute storage device management engine504bmay perform autonomous compute signature storage operations1004that include storing the autonomous compute signature in the autonomous compute storage device database506.

Similarly, in embodiments in which optional block806is performed, the autonomous compute application provisioning operations1000may include transmitting the autonomous compute application via the network204and to the computing device202/400such that it is received by the host engine404via its communication system408, and provided by the host engine404to the autonomous compute storage device406/500such that it is received by the communication engine504avia the communication subsystem512and provided by the communication engine504ato the autonomous compute storage device management engine504b. As such, in embodiments in which optional block806is performed and in response to receiving the autonomous compute application, the autonomous compute storage device management engine504bmay perform autonomous compute application storage operations1006that include storing the autonomous compute application in the autonomous compute storage device database506.

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, the provisioning of the autonomous compute signature (and in some cases the corresponding autonomous compute application) as part of the method800may be initiated based on a variety of criteria. For example, a user of the computing device400may use the host engine404to configure the autonomous compute storage device406/500with any particular autonomous compute functionality, and that configuration may include “downloading” or otherwise retrieving the autonomous compute signature (and in some cases the autonomous compute application) from the autonomous compute storage device signature/application provisioning system206/300. Furthermore, subsequent to that configuration, the autonomous compute storage device signature/application provisioning system206/300may periodically update the autonomous compute storage device signature/application provisioning system206/300with updated versions of the autonomous compute signature (and in some cases, updated versions of the autonomous compute application).

In specific examples, the autonomous compute storage device406/500may “register” with the autonomous compute storage device signature/application provisioning system206/300(e.g., an autonomous compute storage device app store) and select one or more autonomous compute signatures (and in some cases, corresponding autonomous compute application(s)) in order to have them provided on the autonomous compute storage device406/500in the manner described above. As such, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how the autonomous compute signatures (and in some cases the autonomous compute applications) may be provided on the autonomous compute storage device406/500via “push” operations (e.g., push operations performed by the autonomous compute storage device signature/application provisioning system206/300), “pull” operations (e.g., pull operations performed by the autonomous compute storage device406/500), combinations thereof, and/or in other manners that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure.

As described herein, in some embodiments, the method800include the performance of block804to provide an autonomous compute signature on the autonomous compute storage device406/500without the performance of optional block806to provide the corresponding autonomous compute application on that autonomous compute storage device406/500, and as discussed in further detail below, that autonomous compute signature may then be used to identify data upon which compute operations should be performed, followed by the retrieval of the corresponding autonomous compute application and execution of that corresponding autonomous compute application in order to perform those compute operations. As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, such embodiments operate to conserve storage space on the autonomous compute storage device406/500and only utilize that storage space for any autonomous compute application in the event it is needed (i.e., in the event data is identified via its corresponding autonomous compute signature).

However, in other embodiments, the method800include the performance of block804to provide an autonomous compute signature on the autonomous compute storage device406/500along with the performance of optional block806to provide the corresponding autonomous compute application on that autonomous compute storage device406/500. As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, such embodiments may allow for relatively quicker execution of the autonomous compute application to perform the compute operations, but at the expense of storage space in the autonomous compute storage device406/500. As such, the autonomous compute storage device management engine504bmay be configured store a relatively limited number of autonomous compute applications in the autonomous compute storage device database506, and may implement policies to track, monitor, and/or analyze the use of autonomous compute applications in order to identify which autonomous compute applications should be stored “locally” on the autonomous compute storage device406/500.

Referring now toFIG.11, an embodiment of a method1100for autonomously performing compute operations using a storage device is illustrated. As discussed below, the systems and methods of the present disclosure provide storage devices that perform compute operations autonomously from the host processing system in the computing device in which they are included and on data that is subject to storage operations being performed on that data. For example, the autonomous compute storage device system of the present disclosure may include a computing device and a storage device that is coupled to the computing device. The storage device identifies a storage operation for a storage subsystem that is included in the storage device and, in response, performs the storage operation and stores data in a memory subsystem that is accessible to the storage device as part of the performance of the storage operation. If the storage device determines that an autonomous compute signature matches the data that was stored in the memory subsystem, it executes an autonomous compute application to perform compute operations that are associated with the data that was stored in the memory subsystem and generate at least one compute operation result. As such, storage device autonomous computing is enabled that addresses many of the issues present in conventional computational storage systems discussed above.

The method1100begins at block1102where a storage device identifies a storage operation for a storage subsystem in the storage device. As discussed in further detail below, storage operations that are identified at block1102for a storage subsystem in a storage device may include any of a variety of storage operations that may be initiated by entities other than the storage device (e.g., by a host), initiated by the storage device and/or subsystems internal to the storage device, and/or in any other manner that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. As such, while the specific examples below describe read operations, write operations, and background operations, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how any other storage operations on data stored in the storage subsystem of a storage device will fall within the scope of the present disclosure as well.

With reference toFIGS.12A and12B, an example of a host-initiated storage operation is illustrated. In an embodiment, at block1102, the host engine404in the computing device400may perform storage operation instruction provisioning operations1200that include transmitting a storage operation instruction to an autonomous compute storage device406/500, with the communication engine504ain the storage device management engine504of that autonomous compute storage device406/500receiving that storage operation instruction via the communication subsystem512, and providing that storage operation instruction to the autonomous compute storage device management engine504b. As discussed in the specific examples provided below, in some embodiments the storage operation instruction is a read instruction that identifies data in the storage subsystem510of the autonomous compute storage device500, while in other embodiments the storage operation instruction is a write instruction that includes data for storage in the storage subsystem510of the autonomous compute storage device500, and in yet other embodiments the storage operation instruction is a background operation instruction that instructs a background operation on data stored in the storage subsystem510of the autonomous compute storage device500. As such, at block1102, the autonomous compute storage device management engine504bin the autonomous compute storage device500may identify a storage operation for the storage subsystem510that was initiated by the host engine404by identifying a read operation instructed via a read instruction received from the host engine404, identifying a write operation instructed via a write instruction received from the host engine404, or identifying a “self-generated” background operation that may be instructed via a background operation instruction received from the autonomous compute storage device management engine504b, the storage subsystem control engine(s)504c, etc.

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, background operations performed on a storage device may include media scan background operations, garbage collection background operations, error recovery background operations (e.g., a Redundant Array of Independent Disk (RAID) rebuild operation), wear-leveling operations, heat map generation operations (e.g., to generate a “heat” map or other usage map of the storage subsystem510), and/or other background operations known in the art. Furthermore, while some “system level” background operations may be initiated by the host engine404(e.g., media scan background operations may be performed by an operating system provided by the host engine404) via read instructions and/or write instructions similar to those discussed above, at block1102the autonomous compute storage device management engine504bin the autonomous compute storage device500may identify a storage operation for the storage subsystem510that was initiated internally to that autonomous compute storage device500by identifying a background operation initiated by the storage device and/or subsystems internal to the storage device using a variety of techniques that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure.

The method1100then proceeds to block1104where the storage device performs the storage operation and stores data in a memory subsystem that is accessible to the storage device as part of the performance of the storage operation. With reference toFIG.13A, in an embodiment block1104in which the storage operation is a read operation instructed via a read instruction that identified data in the storage subsystem510, the autonomous compute storage device management engine504bin the autonomous compute storage device500may perform the read operation by performing storage subsystem data retrieval operations1300that may include transmitting a storage subsystem data retrieval instruction that identifies that data to the storage subsystem control engine(s)504cand that causes the storage subsystem control engine(s)504cto convert that storage subsystem data retrieval instruction into one or more storage subsystem data retrieval commands and provide those storage subsystem data retrieval command(s) to the storage subsystem510.

To provide a specific example, at block1104the autonomous compute storage device management engine504bmay use an Application Programming Interface (API) to generate a plurality of storage subsystem data retrieval instructions based on the read instruction received from the host engine404(e.g., in response to a read instruction from the host engine404to read 128 KB of data starting at a particular address in the storage subsystem510, the autonomous compute storage device management engine504bmay generate a plurality of storage subsystem data retrieval API instructions that identify NAND/flash devices, block, and address combinations that store 4 KB portions of that data), and transmit those storage subsystem data retrieval instructions to the storage subsystem control engine(s)504c. The storage subsystem control engine(s)504cmay then convert those storage subsystem data retrieval instructions to corresponding storage subsystem retrieval commands (e.g., by converting the storage subsystem data retrieval API instructions to corresponding NAND/flash device commands), and then provide those storage subsystem retrieval commands to the storage subsystem510.

With reference toFIG.13B, in response to receiving the storage subsystem data retrieval command(s), the storage subsystem510may perform memory system data storage preparation operations to prepare the data identified in the storage subsystem retrieval commands for storage in the memory subsystem508, and the storage subsystem control engine(s)504cmay then perform memory system data storage operations1304that may include retrieving the data from the storage subsystem510and storing that data in the memory subsystem508. As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, the storage subsystem control engine(s)504cmay perform a variety of operations on the data prior to storing it in the memory system508such as, for example, descrambling operations, Error Correction Code (ECC) operations, and/or other operations that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. In response to storing the data in the memory subsystem508, the storage subsystem control engine(s)504cmay perform memory subsystem data storage confirmation operations1305that may include transmitting a memory subsystem data storage confirmation to the autonomous compute storage device management engine504bin the storage device management engine504.

With reference toFIGS.13C and13D, in response to receiving the memory subsystem data storage confirmation, the autonomous compute storage device management engine504bin the storage device management engine504may perform memory subsystem data retrieval operations1306that may include retrieving the data from the memory subsystem508(i.e., the data that was stored in the memory subsystem508by the storage subsystem510as part of the read operations performed by the autonomous compute storage device management engine504b). The autonomous compute storage device management engine504bmay then perform data transmission operations1308that may include providing that data to the communication engine504ain the storage device management engine504in order to cause the communication engine504ato transmit that data via the communication system512and to the host engine404in order to complete the read operation instructed by the host engine404. As such, the read operation performed at block1104includes storing data that is the subject of the read operation in the memory subsystem508, and while the read operation is described herein as being completed during block1104, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how any or all of the subsequent blocks of the method1104may be performed and/or completed prior to the completion of the read operation while remaining within the scope of the present disclosure.

With reference toFIGS.14A and14B, in an embodiment block1104in which the storage operation is a write operation instructed via a write instruction that included data for storage in the storage subsystem510, the autonomous compute storage device management engine504bin the autonomous compute storage device500may perform the write operation by performing memory subsystem data storage operations1400that may include storing that data in the memory subsystem508, as well as by performing storage subsystem data storage instruction provisioning operations1402that may include transmitting a storage subsystem data storage instruction that identifies that data in the memory subsystem508to the storage subsystem control engine(s)504c. In response to receiving the storage subsystem data storage instruction, the storage subsystem control engine(s)504cmay perform storage subsystem data storage operations1404that may include retrieving the data identified in the storage subsystem data storage instruction from the memory subsystem508, and storing that data in the storage subsystem510.

To provide a specific example, at block1104the autonomous compute storage device management engine504bmay use an Application Programming Interface (API) to generate a plurality of storage subsystem data storage instructions based on the write instruction received from the host engine404(e.g., in response to a write instruction from the host engine404to write 128 KB of data in the storage subsystem510, the autonomous compute storage device management engine504bmay generate a plurality of storage subsystem data storage API instructions that identify NAND/flash devices, block, and address combinations that store 4 KB portions of that data), and transmit those storage subsystem data storage instructions to the storage subsystem control engine(s)504c. The storage subsystem control engine(s)504cmay then convert those storage subsystem data storage instructions to corresponding storage subsystem storage commands (e.g., by converting the storage subsystem data storage API instructions to corresponding NAND/flash device commands), and then provide those storage subsystem storage commands to the storage subsystem510.

With continued reference toFIG.14B, the storage subsystem control engine(s)504cmay perform memory subsystem data retrieval operations1404that may include retrieving the data identified in the storage subsystem data storage command(s) from the memory subsystem508and providing that data to the storage subsystem510for storage according to the storage subsystem storage commands. As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, the storage subsystem control engine(s)504cmay perform a variety of operations on the data prior to storing it in the storage subsystem510such as, for example, scrambling operations, Error Correction Code (ECC) operations, and/or other operations that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure. With reference toFIG.14C, in response to storing the data in the storage subsystem510, the storage subsystem510may perform storage subsystem data storage confirmation operations1406that may include transmitting a storage subsystem data storage confirmation to the storage subsystem control engine(s)504cin the storage device management engine504, which causes the storage subsystem control engine(s)504cto provide a storage subsystem data storage confirmation to the autonomous compute storage device management engine504bin the storage device management engine504.

With reference toFIGS.14C and14D, in response to receiving the storage subsystem data storage confirmation, the autonomous compute storage device management engine504bin the storage device management engine504may perform write operation confirmation operations1408that may include transmitting a write operation confirmation to the communication engine504ain the storage device management engine504in order to cause the communication engine504ato transmit that write operation confirmation via the communication system512and to the host engine404in order to complete the write operation instructed by the host engine404. As such, the write operation performed at block1104includes storing data that is the subject of the write operation in the memory subsystem508, and while the write operation is described herein as being completed during block1104, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how any or all of the subsequent blocks of the method1104may be performed and/or completed prior to the completion of the write operation while remaining within the scope of the present disclosure.

With reference toFIG.15A, in an embodiment block1104in which the storage operation is a background operation, the autonomous compute storage device management engine504bin the autonomous compute storage device500may perform the background operation by performing storage subsystem data retrieval operations1500that may include transmitting a storage subsystem data retrieval instruction that identifies data subject to the background operation to the storage subsystem control engine(s)504cand that causes the storage subsystem control engine(s)504cto convert that storage subsystem data retrieval instruction into one or more storage subsystem data retrieval commands and provide those storage subsystem data retrieval command(s) to the storage subsystem510.

With reference toFIG.15B, in response to receiving the storage subsystem data retrieval command(s), the storage subsystem510may perform memory subsystem data storage preparation operations to prepare the data identified in the storage subsystem retrieval commands for storage in the memory subsystem508, and the storage subsystem control engine(s)504cmay then perform memory system data storage operations1504that may include retrieving the data from the storage subsystem510and storing that data in the memory subsystem508. Furthermore, in response to storing the data in the memory subsystem508, the storage subsystem control engine(s)504cmay perform memory subsystem data storage confirmation operations1505that may include transmitting a memory subsystem data storage confirmation to the autonomous compute storage device management engine504bin the storage device management engine504.

In response to receiving the memory subsystem data storage confirmation, the autonomous compute storage device management engine504bin the storage device management engine504may perform a variety of different operations in order to perform the background operation at block1104. For example, with reference toFIG.15C, the autonomous compute storage device management engine504bmay perform memory subsystem data processing operations1506that may include retrieving the data from the memory subsystem508(i.e., the data that was stored in the memory subsystem508by the storage subsystem510as part of the read operations performed by the autonomous compute storage device management engine504b), performing any of a variety of background operation data processing operations on that data that would be apparent to one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure to generate processed data, and then storing that processed data in the memory subsystem508.

In another example, with reference toFIG.15D, the autonomous compute storage device management engine504bmay perform storage subsystem data storage instruction provisioning operations1508that may include transmitting a storage subsystem data storage instruction that identifies the processed data in the memory subsystem508to the storage subsystem control engine(s)504cand that causes the storage subsystem control engine(s)504cto convert that storage subsystem data storage instruction into one or more storage subsystem data storage commands and provide those storage subsystem data storage command(s) to the storage subsystem510. Furthermore, the storage subsystem control engine(s)504cmay also perform memory subsystem data retrieval operations1510that may include retrieving the data identified in the storage subsystem data storage command(s) from the memory subsystem508and storing that data in the storage subsystem510.

In another example, with reference toFIG.15Eand in some cases in response to storing the data in the storage subsystem510, the storage subsystem510may perform background operation result transmission operations1512that include transmitting result(s) and/or other data associated with the background operations to the storage subsystem control engine(s)504cin the storage device management engine504, which causes the storage subsystem control engine(s)504cto provide the result(s) and/or other data associated with the background operations to the autonomous compute storage device management engine504bin the storage device management engine504.

As will be appreciated by one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure, one or more of the background operation actions illustrated and described above with reference toFIGS.15A-15F, as well as other background operation actions known in the art, may be performed in the autonomous compute storage device406/500in order to perform the background operations at block1104. For example, as discussed above, the background operation performed at block1104may be a media scan background operation, a garbage collection background operation, an error recovery background operation such as a RAID rebuild operations, a wear-leveling operation, a heat map generation operation, and/or other background operations known in the art, and one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how different combinations of reads of data from the storage subsystem510, writes of data to the storage subsystem510, processing of data to produce processed data, reporting of unprocessed data or processed data to the host engine404and/or via the network, and/or other background operation actions may be performed based on the specific goals of the background operation being performed. As such, the background operation performed at block1104includes storing data that is the subject of the background operation in the memory subsystem508, and while the background operation is described herein as being completed during block1104, one of skill in the art in possession of the present disclosure in the art in possession of the present disclosure will appreciate how any or all of the subsequent blocks of the method1104may be performed and/or completed prior to the completion of the read operation while remaining within the scope of the present disclosure.

While several specific examples of the storage of data in the memory subsystem as part of a storage operation have been described, one of skill in the art in possession of the present disclosure will appreciate that data may be stored in a variety of memory subsystems as part of a variety of storage operations, followed by the operations of the method1100discussed below being performed using that data while remaining within the scope of the present disclosure as well. For example, as part of the streaming of data from the storage subsystem310to another storage subsystem as part of DMA operations, that data may be placed in temporary FIFO memory, temporary holding buffer memory, and/or other DMA memory subsystems known in the art, and then the subsequent blocks of the method1100may be performed using that data while remaining within the scope of the present disclosure as well. As such, while the discussion below focuses on read operations, write operations, and background operations, other storage operations may result in data being stored in a memory subsystem and allow the autonomous compute operations described herein to be performed similarly as discussed below.

The method1100then proceeds to decision block1106where it is determined whether an autonomous compute signature matches the data that was stored in the memory subsystem. With reference toFIG.16, in an embodiment of decision block1106, the autonomous compute storage device management engine504bmay perform data/autonomous compute signature matching operations1600that may include accessing the data that was stored in the memory subsystem508as part of the storage operations1104discussed above and determining whether that data matches any autonomous compute signatures that were stored in the autonomous compute storage device database506(e.g., during the method800described above). As such, one of skill in the art in possession of the present disclosure will appreciate how multiple autonomous compute signatures may be compared to any particular data stored in the memory subsystem508, and how any particular data may match more than one autonomous compute signature and, in turn, trigger the execution of more than one autonomous compute application, discussed below.

Continuing with the specific example provided above, the autonomous compute signatures stored in the autonomous compute storage device database506may include an autonomous compute signature algorithm that may be configured to be executed on the data that was stored in the memory subsystem508as part of the storage operations1104, and an autonomous compute signature definition that defines the “signature” of data that triggers the execution of the corresponding autonomous compute application for that autonomous compute signature. As such, at decision block1106, the autonomous compute signature algorithm (e.g., provided by a hash algorithm, a Cyclic Redundancy Check (CRC) algorithm, a decryption algorithm, and/or other data transformation algorithms known in the art) may be performed on the data that was stored in the memory subsystem508as part of the storage operations1104in order to transform that data to produce a data signature, and the autonomous compute signature definition may be compared to that data signature to determine whether there is a match.

However, one of skill in the art in possession of the present disclosure will appreciate how simplified scenarios may exist where the autonomous compute signature definition is compared directly to a data signature of the data at issue (rather than a transformation of that data), and thus embodiments of the autonomous compute signature algorithm may include a “identity function” that does not modify or transform the data. Thus, while autonomous compute signatures having autonomous compute signature algorithms and autonomous compute signature definitions have been described, one of skill in the art in possession of the present disclosure will appreciate how the autonomous compute signature algorithms may be omitted in some scenarios (e.g., in the embodiments in which transformation of the data at issue is not required) while remaining within the scope of the present disclosure as well. Furthermore, while the use of a particular autonomous compute signature has been described, one of skill in the art in possession of the present disclosure will appreciate how other autonomous compute signatures will fall within the scope of the present disclosure as well.

If, at decision block1106, it is determined that an autonomous compute signature does not match the data that was stored in the memory subsystem, the method1100returns to block1102. As such, the method1100may loop through blocks1102and1104such that the storage device identifies storage operations for its storage subsystem, performs those storage operations and stores data in its memory subsystem as part of those storage operations, and determines whether that data stored in its memory subsystem matches any autonomous compute signatures stored in its autonomous compute storage device database as long as no data is found to match any of those autonomous compute signatures. As will be appreciated by one of skill in the art in possession of the present disclosure, in some embodiments, following a determination that data stored in its memory subsystem508does not match any autonomous compute signatures stored in its autonomous compute storage device database506, the autonomous compute storage device management engine504bmay erase that data from the memory subsystem508(e.g., in order to ensure sufficient storage space in the memory subsystem for subsequent storage operations), although embodiments in which data stored in the memory subsystem508remains in that memory subsystem508subsequent to determining that it does not match any autonomous compute signatures (at least for some period of time) will fall within the scope of the present disclosure as well.

If, at decision block1106, it is determined that an autonomous compute signature matches the data that was stored in the memory subsystem, the method1100proceeds to decision block1108where it is determined whether an autonomous compute application corresponding to the autonomous compute signature is included in the storage device. In some embodiments, in response to determining that an autonomous compute signature matches the data that was stored in the memory subsystem508, the autonomous compute storage device management engine504bmay be configured to generate an alert and transmit that alert to the host engine404, to a device or system connected to the network204, and/or to any other entity that would be apparent to one of skill in the art in possession of the present disclosure.

As discussed above, in some embodiments autonomous compute signatures included in autonomous compute signature/application combinations may be stored in the autonomous compute storage device database506without their corresponding autonomous compute application. As such, in those embodiments and in response to determining that the data that was stored in the memory subsystem508as part of the storage operations performed at block1104matches an autonomous compute signature, at decision block1108the autonomous compute storage device management engine504bmay determine whether the autonomous compute application corresponding to that autonomous compute signature is stored in the autonomous compute storage device database506. However, one of skill in the art in possession of the present disclosure will appreciate how in embodiments in which autonomous compute signatures are stored with their corresponding autonomous compute applications (e.g., in the autonomous compute storage device database506), decision block1106and subsequent block1108may be skipped.

If, at decision block1108, it is determined that an autonomous compute application corresponding to the autonomous compute signature is not included in the storage device, the method1100proceeds to block1110where the storage device retrieves the autonomous compute application corresponding to the autonomous compute signature. With reference toFIGS.17A,17B,17C, and17D, in an embodiment and in response to determining that the autonomous compute application is not included in the storage device at decision block1106, at block1110the autonomous compute storage device management engine504bmay perform autonomous compute application request operations1700that may include generating an autonomous compute application request that identifies the autonomous compute application corresponding to the autonomous compute signature that matched the data stored in the memory subsystem508at decision block1106, transmitting the autonomous compute application request to the communication engine504ain order to cause the communication engine504ato transmit the autonomous compute application request via the communication subsystem512. In the illustrated embodiment, that autonomous compute application request is received by the host engine404that forwards that autonomous compute application request via the communication system408and through a network204to the autonomous compute storage device signature/application provisioning system206such that the autonomous compute storage device signature/application provisioning engine304receives the autonomous compute application request via its communication system308.

However, while the autonomous compute application request is illustrated and described as being transmitted to the autonomous compute storage device signature/application provisioning system206via the host engine404, one of skill in the art in possession of the present disclosure will appreciate how the autonomous compute storage device406/500may be configured to transmit the autonomous compute application request directly to the autonomous compute storage device signature/application provisioning system206and without the use of the host engine404while remaining within the scope of the present disclosure as well.

With reference toFIG.18A, in response to receiving the autonomous compute application request, the autonomous compute storage device signature/application provisioning engine304may perform autonomous compute application retrieval operations1800that may include retrieving the autonomous compute application identified in the autonomous compute application request from the autonomous compute application database306b. As will be appreciated by one of skill in the art in possession of the present disclosure, the autonomous compute application retrieval operations1800may be configured to retrieve the latest version of the autonomous compute application identified in the autonomous compute application request (i.e., when autonomous compute applications are regularly updated by, for example, the autonomous compute storage device signature/application developer system(s)208). Furthermore, with reference toFIGS.18A,18B,18C, and18D, in response to retrieving the autonomous compute application, the autonomous compute storage device signature/application provisioning engine304may perform autonomous compute application provisioning operations1802that include transmitting the autonomous compute application via its communication system308and through the network204to the computing device202/400. In the illustrated embodiment, the host engine404receives the autonomous compute application via is communication system408and transmits that autonomous compute application to the autonomous compute storage device406/500such that the autonomous compute storage device management engine504breceives that autonomous compute application via its communication system512and the communication engine504a, and performs autonomous compute application storage operations1804that may include storing the autonomous compute application in the autonomous compute storage device database506.

However, while the autonomous compute application is illustrated and described as being transmitted to the autonomous compute storage device406/500via the host engine404, one of skill in the art in possession of the present disclosure will appreciate how the autonomous compute storage device signature/application provisioning system206may be configured to transmit the autonomous compute application request directly to the autonomous compute storage device406/500and without the use of the host engine404while remaining within the scope of the present disclosure as well. Furthermore, while the autonomous compute application is illustrated and described as being stored in the autonomous compute storage device database506after being retrieved from the autonomous compute storage device signature/application provisioning system206, one of skill in the art in possession of the present disclosure will appreciate how the autonomous compute application may be utilized as discussed below following its retrieval from the autonomous compute storage device signature/application provisioning system206and without the need to store it in the autonomous compute storage device database506while remaining within the scope of the present disclosure as well.

Following block1110, or if at decision block1106it is determined that an autonomous compute application corresponding to the autonomous compute signature is included in the storage device, the method1100proceeds to block1112where the storage device executes the autonomous compute application corresponding to the autonomous compute signature to perform compute operations associated with the data that was stored in the memory subsystem and generate one or more compute operation results. With reference toFIG.19, in an embodiment of block1112, the autonomous compute storage device management engine504bmay perform autonomous compute application retrieval operations1900that may include retrieving the autonomous compute application from the autonomous compute storage device database506. As such, in some examples the autonomous compute application retrieved from the autonomous compute storage device database506at block1112may have been stored in the autonomous compute storage device database506along with the autonomous compute signature that matched the data in the memory subsystem508at decision block1106. In other examples the autonomous compute application retrieved from the autonomous compute storage device database506at block112may have been stored in the autonomous compute storage device database506following its retrieval from the autonomous compute storage device signature/application provisioning system206at block1110. Furthermore, in yet other examples and as discussed above, the autonomous compute application need not be retrieved from the autonomous compute storage device database506, and rather may be utilized as retrieved from the autonomous compute storage device signature/application provisioning system206at block1110.

With reference toFIG.20, the autonomous compute storage device504bmay then perform autonomous compute application execution operations2000that may include executing the autonomous compute application corresponding to the autonomous compute signature that matched the data stored in the memory subsystem508as part of the storage operations performed at block1104in order to perform compute operations associated with that data and generate one or more compute operation results.FIG.20indicates the autonomous compute application execution operations2000as including or otherwise being performed using the data that was stored in the memory subsystem508as part of the storage operations performed at block1104, but one of skill in the art in possession of the present disclosure will appreciate how data stored in the memory subsystem508as part of the storage operations performed at block1104may initiate compute operations using the autonomous compute application that need not include or otherwise be performed using that data while remaining within the scope of the present disclosure as well.

To provide a specific example, the compute operations performed in response to the execution of the autonomous compute application at block1112may include virus scan compute operations. In this embodiment the autonomous compute signature may include a virus signature, and thus the matching of the autonomous compute signature with the data that was stored in the memory subsystem508as part of the storage operations at block1104may indicate that that data matches the virus signature included in the autonomous compute signature. With reference toFIG.21, the execution of the autonomous compute application in this embodiment may include the autonomous compute storage device management engine504bperforming a variety of virus remediation compute operations2100via the storage subsystem control engine(s)504cand with the storage subsystem510such as, for example, purging, deleting, erasing, and/or otherwise removing the data (i.e., the data that was stored in the memory subsystem508as part of the storage operations at block1104) from the storage subsystem510(as well as from the memory subsystem508), ensuring that that data will not be reconstructed (e.g., by configuring an FTL subsystem that provides the autonomous compute storage device management engine504bto prevent reconstruction of that data as part of, for example, a RAID operation), generating a virus alert that may provide at least a portion of the compute operation result(s) described herein and performing compute operation result provisioning operations2102that may include transmitting that virus alert via the communication engine504aand through the communication subsystem512, and/or any other virus remediation actions and/or virus reporting actions that would be apparent to one of skill in the art in possession of the present disclosure.

To provide another specific example, the compute operations performed in response to the execution of the autonomous compute application at block1112may include database privacy compute operations. In this embodiment the autonomous compute signature may include a privacy/security data signature (e.g., a data format that matches a Social Security Number (SSN) format (e.g., xxx-xx-xxxx), a phone number format (e.g., (xxx) xxx-xxx), a bank account or credit card format, and/or other formats that one of skill in the art in possession of the present disclosure would recognize as being utilized by data such a Personal Identifiable Information (PII) that is associated with privacy/security issues), and thus the matching of the autonomous compute signature with the data that was stored in the memory subsystem508as part of the storage operations at block1104may indicate that that data matches the privacy/security data signature included in the autonomous compute signature. With reference toFIG.22, the execution of the autonomous compute application in this embodiment may include the autonomous compute storage device management engine504bperforming a variety of privacy/security data modification compute operations2200via the storage subsystem control engine(s)504cand with the storage subsystem510such as, for example, encrypting, masking, and/or otherwise obfuscating the data (i.e., the data that was stored in the memory subsystem508as part of the storage operations at block1104) in the storage subsystem510and that is associated with privacy/security issues in order to satisfy privacy/security, governance, and/or other policies, generating a privacy/security data alert that may provide at least a portion of the compute operation result(s) described herein and performing compute operation result provisioning operations2202that may include transmitting that privacy/security data alert via the communication engine504aand through the communication subsystem512, and/or any other privacy/security data modification compute operations that would be apparent to one of skill in the art in possession of the present disclosure.

To provide yet another specific example, the compute operations performed in response to the execution of the autonomous compute application at block1112may include file system integrity check compute operations. In this embodiment the autonomous compute signature may include a file system signature (e.g., a data structure that matches a file system), and thus the matching of the autonomous compute signature with the data that was stored in the memory subsystem508as part of the storage operations at block1104may indicate that that data matches the file system signature included in the autonomous compute signature. As will be appreciated by one of skill in the art in possession of the present disclosure, such file system integrity check compute operations may be performed during boot operations or other initialization operations for the autonomous compute storage device406/500, or during runtime for the autonomous compute storage device406/500. With reference toFIG.23, the execution of the autonomous compute application in this embodiment may include the autonomous compute storage device management engine504bperforming a variety of file system integrity verification compute operations that one of skill in the art in possession of the present disclosure will appreciate may be configured to verify the integrity of a file system, generating a file system integrity check result that may provide at least a portion of the compute operation result(s) described herein, performing compute operation result provisioning operations2300that may include transmitting that privacy/security data alert via the communication engine504aand through the communication subsystem512, and/or any other file system integrity check compute operations that would be apparent to one of skill in the art in possession of the present disclosure.

However, while several specific compute operations that may be performed via the execution of the autonomous compute applications of the present disclosure have been described above, one of skill in the art in possession of the present disclosure will appreciate how autonomous compute applications may be developed for execution by the autonomous compute storage device as discussed above in order to enable the performance of any desired compute operations while remaining within the scope of the present disclosure as well. For example, video stream surveillance systems may utilize video cameras to monitor a secure area, with video data generated by the video cameras (e.g., in response to detecting motion) stored on the autonomous compute storage devices of the present disclosure. As will be appreciated by one of skill in the art in possession of the present disclosure, the autonomous compute signatures and autonomous compute applications described herein may be utilized to execute an autonomous image inference application in response to an identified signature in the video data in order to, for example, recognize a face in the video data and determine an identity associated with that face, determine whether that identity is authorized to be in the area being surveilled, log that identity, append data (e.g., a timestamp, temperature, location, etc.) to the video data, etc.

The method1100then proceeds to block1114where the storage device transmits the compute operation result(s) via a network. With reference toFIG.24A, in an embodiment of block1114and as part of compute operation result provisioning operations performed by the autonomous compute storage device management engine504b(e.g., the compute operation result provisioning operations2102,2202, and/or2300performed in the specific examples provided above), compute operation result(s) may be transmitted by the autonomous compute storage device406/500to the host engine404. As will be appreciated by one of skill in the art in possession of the present disclosure, in some embodiments the compute operations performed in response to the execution of the autonomous compute applications discussed above may only involve the provisioning of compute operation results to the host engine404.

However, in other embodiments and in response to receiving the compute operation results, the host engine404may perform compute operation results transmission operations2400that include transmitting the compute operation results received from the autonomous compute storage device406/500via its communication system408and through the network204to the autonomous compute storage device signature/application provisioning system206such that the autonomous compute storage device signature/application provisioning engine304receives the compute operation results from via its communication system308. In response to receiving the compute operation results, the autonomous compute storage device signature/application provisioning engine304may perform compute operation result storage operations2402that may include storing the compute operation results in the autonomous compute results database306c. For example, the compute operation result storage operations2402may include the autonomous compute storage device signature/application provisioning engine304storing the compute operations results in the autonomous compute results database306cin association with the autonomous compute application that was used to generate those autonomous compute results, although other compute operation result storage strategies are envisioned as falling within the scope of the present disclosure as well.

While the compute operation results are illustrated and described as being transmitted to the autonomous compute storage device signature/application provisioning system206via the host engine404, one of skill in the art in possession of the present disclosure will appreciate how the autonomous compute storage device406/500may be configured to transmit the compute operation results directly to the autonomous compute storage device signature/application provisioning system206and without the use of the host engine404while remaining within the scope of the present disclosure as well. The method1100then returns to block1102. As such, the method1100may loop such that storage operations are identified and performed such that data is stored in the memory subsystem508as part of those storage operations at blocks1102and1104, and whenever an autonomous compute signature matches that data stored in the memory subsystem508, an autonomous compute application is used to perform compute operations associated with that data in order to generate a compute operation result that may be transmitted via a network.

Thus, systems and methods have been described that provide storage devices that perform compute operations autonomously from the host processing system in the computing device in which they are included and on data that is subject to storage operations being performed on that data. For example, the autonomous compute storage device system of the present disclosure may include a computing device and a storage device that is included in the computing device. The storage device identifies a storage operation for a storage subsystem that is included in the storage device and, in response, performs the storage operation and stores data in a memory subsystem that is accessible to the storage device as part of the performance of the storage operation. If the storage device determines that an autonomous compute signature matches the data that was stored in the memory subsystem, it executes an autonomous compute application to perform compute operations that are associated with the data that was stored in the memory subsystem and generate at least one compute operation result. As such, storage device autonomous computing is enabled that addresses many of the issues present in conventional computational storage systems discussed above.

Although illustrative embodiments have been shown and described, a wide range of modification, change and substitution is contemplated in the foregoing disclosure and in some instances, some features of the embodiments may be employed without a corresponding use of other features. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the embodiments disclosed herein.