Reducing memory device overhead using artificial intelligence
By organizing data files in the memory subsystem using an artificial intelligence system, the problem of resource waste during garbage collection and read/recovery operations in memory devices is solved, thereby improving the performance and lifespan of the memory subsystem and optimizing power efficiency.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-08-16
- Publication Date
- 2026-04-10
AI Technical Summary
When memory devices perform garbage collection and read recovery operations, they cause performance degradation, reduced lifespan, and wasted power resources. Existing technologies are unable to effectively optimize the resource utilization of memory subsystems.
An artificial intelligence system is used to generate data usage levels based on file and device metadata. Data files are organized in the storage subsystem through an AI accelerator to ensure that files with the same data usage level are stored in the same block, thereby reducing the frequency of garbage collection and read recovery operations.
It improves the performance of the memory subsystem, extends its lifespan, optimizes power efficiency, and reduces resource waste in the memory subsystem.
Smart Images

Figure CN115708051B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present disclosure relates generally to electronic memory devices and methods, and more particularly to devices and methods associated with reducing memory device overhead using artificial intelligence (AI). BACKGROUND
[0002] Memory devices are typically provided as internal semiconductor integrated circuit devices in computers or other electronic devices. There are many different types of memory, including volatile and non-volatile memory. Volatile memory can require power to maintain its data, and includes random access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can provide persistent data by retaining stored data when unpowered, and can include NAND flash memory, NOR flash memory, read only memory (ROM), electrically
[0003] Memory is also used as a volatile and non-volatile data storage device for various electronic applications, including but not limited to personal computers, portable memory sticks, digital cameras, cellular telephones, portable music players such as MP3 players, movie players, and other electronic devices. Memory cells can be arranged in an array, where the array is used in a memory device. SUMMARY
[0004] In one aspect, the present application relates to a device for reducing overhead of a memory device using artificial intelligence, comprising: an AI accelerator implemented in a cloud system; and wherein the AI accelerator is configured to: receive file metadata of a data file and device metadata of the memory device; select a plurality of indicators to provide an indication of an expected usage of the data file in the memory device based on the file metadata and the device metadata; and provide the plurality of indicators to the memory device to store the data file together with different data files having matching indicators corresponding thereto.
[0005] In another aspect, the present application relates to a method for reducing overhead of a memory device using artificial intelligence, comprising: providing, from a host, a data file and a corresponding indicator to a memory subsystem; storing the data file in a storage area of the memory subsystem, the storage area allocated to store data files with the corresponding indicator; and tracking a storage time and a read count of the data file to determine whether the data file is stored in a proper storage area to reduce overhead of storing the data file in the memory subsystem.
[0006] In another aspect, the present application relates to a system for reducing overhead of a memory device using artificial intelligence, comprising: a memory subsystem; a host coupled to the memory subsystem and configured to: provide indicator data received from a cloud system to the memory subsystem, wherein the indicator data is based on an analysis of data files; request statistical data from the memory subsystem; and provide the statistical data to the cloud system, wherein the cloud system utilizes the statistical data to generate additional indicator data. BRIEF DESCRIPTION OF DRAWINGS
[0007] Figure 1 is a block diagram of a device in the form of a computing system including a memory subsystem according to a number of embodiments of the present disclosure.
[0008] Figure 2 illustrates a block diagram of a cloud system for organizing data according to a number of embodiments of the present disclosure.
[0009] Figure 3 illustrates a block diagram of a computing system for organizing data according to a number of embodiments of the present disclosure.
[0010] Figure 4 illustrates an example flow diagram for organizing data according to a number of embodiments of the present disclosure.
[0011] Figure 5 illustrates a block diagram for cloud processing by host reporting according to a number of embodiments of the present disclosure.
[0012] Figure 6 illustrates a block diagram of a data byte according to a number of embodiments of the present disclosure.
[0013] Figure 7 illustrates a block diagram for host reporting from a memory subsystem according to a number of embodiments of the present disclosure.
[0014] Figure 8 illustrates an example flow diagram of a method for storing data for garbage collection according to a number of embodiments of the present disclosure.
[0015] Figure 9An example machine of a computer system is described that can execute a set of instructions to perform the various methods described herein. DETAILED DESCRIPTION
[0016] The present disclosure includes apparatuses and methods related to reducing memory device overhead using artificial intelligence (AI). Memory device overhead can include resources of a memory device used to perform a particular task by the memory device. For example, the overhead of a memory device can include resources used to store memory in memory cells of the memory device. Memory device overhead can include resources used to perform garbage collection, and resources used to determine whether to use memory cells of a memory device as single level cells (SLC), triple level cells (TLC), quad level cells (QLC), among other examples of memory overhead.
[0017] Garbage collection is a form of automatic memory management. Garbage collection recycles memory occupied by objects that are no longer in use. Recycling memory with garbage collection allows the recycled memory to be available for storing additional data, whereas the memory was not available for storing additional data prior to being recycled.
[0018] Garbage collection can free programs from performing memory deallocation. Garbage collection can be performed to eliminate dangling pointers and memory leaks, among other examples of issues associated with deallocating memory. Performing garbage collection can result in a decrease in performance of a memory subsystem.
[0019] Other types of loads on a memory subsystem (e.g., memory overhead) can also benefit from data organization. For example, performing read recovery also creates a load on a memory subsystem such that performance of the memory subsystem is affected. Read recovery can include operations performed to recover data from a memory subsystem. For example, read recovery operations can include operations used to reprogram memory cells of a memory subsystem.
[0020] Memory overhead can not only result in a decrease in performance of a memory subsystem, but also a decrease in the useful life of a memory subsystem. Memory overhead also affects power resources of a memory subsystem. For example, performing garbage collection operations and read recovery operations can create a power overhead on a memory subsystem.
[0021] Aspects of the disclosure address the above-referenced deficiencies and others. In a number of instances, a data usage rating can be generated for a data file by an artificial intelligence (AI) system. The data usage rating, which can also be referred to as an indicator, can be used by a memory sub-system to organize data storage in a plurality of memory devices of the memory sub-system. The AI system can generate the data usage rating based on metadata of the data (e.g., data file) and / or metadata of the memory sub-system. For example, the AI system can generate the data usage rating based on usage of the memory sub-system, data type of the data file, and / or expected usage of the data in the particular memory sub-system.
[0022] The data file and the data usage rating can be provided to the memory sub-system. The memory sub-system can organize storage of the data file based on the data usage rating. For example, the memory sub-system can segment the data file including the data file with data files having similar data usage ratings. For example, the data file can be stored in the same block used to store different data files having the same data usage rating. The data file can have the same data usage rating if, for example, the data file expires at substantially the same time and / or the data file is used / read at the same interval. By storing the data file with data files having the same data usage rating, the memory sub-system can perform overhead operations (e.g., garbage collection operations and read recovery operations, etc.) on the block of the memory sub-system at the same time instead of performing multiple overhead operations. As used herein, an overhead operation includes an operation that utilizes resources of the memory sub-system to perform a particular task, such as storing data in a memory cell of the memory sub-system.
[0023] Performing the overhead operation on the block storing the data file and the different data file can improve performance of the memory sub-system, can increase a useful life of the memory sub-system, and / or can provide power efficiency of the memory sub-system as compared to instances where multiple instances of the overhead operation are performed on the data file and the data file stored in a plurality of blocks of the memory sub-system.
[0024] As used herein, AI refers to the ability of a machine to improve by “learning,” such as by storing patterns and / or instances that can be used to take action at a later time. Machine learning refers to the ability of a device to learn from data provided as instances. Machine learning can be a subset of AI. As used herein, an artificial neural network (ANN) can provide learning by forming a probabilistic weight association between inputs and outputs. The probabilistic weight association can be provided by a plurality of nodes that include the ANN. The nodes, along with weights, biases, and activation functions, can be used to generate an output of the ANN based on an input to the ANN. The ANN can utilize a plurality of inputs to generate a data usage rating (e.g., indicator).
[0025] In various examples, an AI system can be implemented in a cloud system. The AI system can be coupled to a host through the cloud system. The host can be coupled to a memory sub-system. A new command can be generated to provide a data usage level from the AI system to the memory sub-system via the host. For example, the new command can be used to provide a usage of the memory sub-system, a data type of a data file, and / or an expected usage of data in a particular memory sub-system. The new command will allow the memory sub-system to input from the host to the data set returned from the AI system, so that the memory sub-system can optimize its operation based on the feedback data returned from the AI system. Although examples herein are provided in terms of garbage collection, the examples described herein can also be applied to other overhead operations other than garbage collection.
[0026] The figures herein follow a numbering convention in which the first numeral(s) correspond to the figure number and the remaining numeral(s) identify an element or component within the figure. Similar elements or components between different figures can be identified by the use of similar numerals. For example, 112 can refer to element "12" in Figure 1 and like elements can be labeled as 212 in Figure 2 . A hyphen and a following number or letter can be used to denote a similar element in a different figure. See, e.g., elements 103-1,..., 103-N in Figure 1 . As will be appreciated, elements shown in the various embodiments herein can be added, exchanged, and / or removed so as to provide a number of additional embodiments of the present disclosure. Additionally, as should be appreciated, the proportions and relative scales of the various elements provided in the figures are intended to illustrate certain embodiments of the application and should not be taken in a limiting sense.
[0027] Figure 1 is a block diagram of an apparatus in the form of a computing system 100 that includes a memory sub-system 115 in accordance with a number of embodiments of the present disclosure. As used herein, a memory system 115, an AI accelerator 114, and memory devices 103-1 through 103-N and / or a host 102 may, for example, also be considered individually as an "apparatus."
[0028] The memory sub-system 115 can include media, such as volatile memory devices and / or non-volatile memory devices (e.g., memory devices 103-1 through 103-N). The memory devices 103-1 through 103-N can be referred to as memory devices 103.
[0029] The memory subsystem 115 can be a storage device, a memory module, or a hybrid of a storage device and a memory module. Examples of storage devices include a solid state drive (SSD), a flash drive, a universal serial bus (USB) flash drive, an embedded Multi-Media Controller (eMMC) drive, a Universal Flash Storage (UFS) drive, a Secure Digital (SD) card, and a hard disk drive (HDD). Examples of memory modules include a dual in-line memory module (DIMM), a small outline DIMM (SO-DIMM), and various types of non-volatile dual in-line memory modules (NVDIMM).
[0030] The computing system 100 can be a desktop computer, a laptop computer, a network server, a mobile device, a vehicle (e.g., an automobile, an airplane, a drone, a train, or other transportation vehicle), an Internet of Things (IoT) enabled device, an embedded computer (e.g., a computer included in a vehicle, industrial equipment, or a networked consumer device), or such computing device that includes memory and a processing device (e.g., a processor).
[0031] The computing system 100 can include a host system 102 coupled to one or more memory subsystems 115. In some embodiments, the host system 102 is coupled to different types of memory subsystems 115. Figure 1 An example of a host system 102 coupled to one memory subsystem 115 is illustrated. As used herein, “coupled to” or “coupled with” generally refers to a connection between components that can be an indirect communicative connection or a direct communicative connection (e.g., without intermediate components), whether wired or wireless, including connections such as electrical, optical, magnetic, etc.
[0032] The host system 102 can include a processor chipset and a software stack executed by the processor chipset. The processor chipset can include one or more cores, one or more caches, a memory controller (e.g., a NVDIMM controller), and a storage protocol controller (e.g., a PCIe controller, a SATA controller). For example, the host system 102 uses the memory subsystem 115 to write data to the memory subsystem 115 and read data from the memory subsystem 115.
[0033] The host system 102 can be coupled to the memory sub-system 115 via a physical host interface. Examples of a physical host interface include, but are not limited to, a serial advanced technology attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, a universal serial bus (USB) interface, Fibre Channel, Serial Attached SCSI (SAS), a small computer system interface (SCSI), a double data rate (DDR) memory bus, a dual in-line memory module (DIMM) interface (e.g., a DIMM socket interface that supports double data rate (DDR)), an open NAND flash interface (ONFI), double data rate (DDR), low power double data rate (LPDDR), or any other interface. The physical host interface can be used to transfer data between the host system 102 and the memory sub-system 115. When the memory sub-system 115 is coupled with the host system 102 by a PCIe interface, the host system 102 can further utilize an NVM Express (NVMe) interface to access components (e.g., the memory devices 103). The physical host interface can provide an interface for passing control, address, data, and other signals between the memory sub-system 115 and the host system 102. Figure 1 The memory sub-system 115 is illustrated as an example. In general, a host system 102 can access multiple memory sub-systems via the same communication connection, multiple separate communication connections, and / or a combination of communication connections.
[0034] The memory devices 103 can include different types of non-volatile memory devices and / or various combinations of volatile memory devices. Volatile memory devices can be, but are not limited to, random access memories (RAMs), such as dynamic random access memories (DRAMs) and synchronous dynamic random access memories (SDRAMs).
[0035] Some examples of non-volatile memory devices (e.g., the memory devices 103) include NAND-type flash memory and in-place write memory, such as a three-dimensional cross-point (“3D cross-point”) memory device, which is a cross-point array of non-volatile memory cells. A cross-point array of non-volatile memory can incorporate a stackable cross-gridded data access array to store bits based on changes in bulk resistance. Additionally, in contrast to many flash-based memories, a cross-point non-volatile memory can perform in-place write operations, where a non-volatile memory cell can be programmed without first erasing the non-volatile memory cell. NAND-type flash memory includes, for example, two-dimensional NAND (2D NAND) and three-dimensional NAND (3D NAND).
[0036] Each of the memory devices 103 can include one or more arrays of memory cells. One type of memory cell, such as a single-level cell (SLC), can store one bit of data per cell. Other types of memory cells, such as a multi-level cell (MLC), a triple-level cell (TLC), a quad-level cell (QLC), and a penta-level cell (PLC), can store multiple bits of data per cell. In some embodiments, each of the memory devices 103 can include one or more arrays of memory cells, such as SLC, MLC, TLC, QLC, PLC, or any combination of such. In some embodiments, a particular memory device can include SLC portions and MLC portions, TLC portions, QLC portions, or PLC portions of memory cells. The memory cells of the memory devices 103 can be grouped into pages, which can refer to a logical unit of the memory device for storing data. For some types of memory (e.g., NAND), pages can be grouped to form blocks.
[0037] Although non-volatile memory devices such as 3D cross-point non-volatile memory cell arrays and NAND-type memory (e.g., 2D NAND, 3D NAND) are described, the memory devices 103 can be based on various other types of non-volatile memory such as read-only memory (ROM), phase change memory (PCM), self-selecting memory, other chalcogenide-based memory, ferroelectric transistor random access memory (FeTRAM), ferroelectric random access memory (FeRAM), magnetic random access memory (MRAM), spin-transfer torque (STT)-MRAM, conductive-bridge RAM (CBRAM), resistive random access memory (RRAM), oxide-based RRAM (OxRAM), or non-volatile (NOR) flash memory, and electrically erasable programmable read-only memory (EEPROM).
[0038] The memory sub-system controller 116 (or simply the controller 116) can communicate with the memory devices 103 to perform operations such as reading data, writing data, or erasing data at the memory devices 103, among other such operations. The memory sub-system controller 116 can include hardware such as one or more integrated circuits and / or discrete components, a buffer memory, or a combination thereof. The hardware can include digital circuitry with dedicated (i.e., hard-coded) logic to perform the operations described herein. The memory sub-system controller 116 can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.), or other suitable processor.
[0039] The memory sub-system controller 116 can include a processing device, such as a processor 117, configured to execute instructions stored in local memory 118. In the illustrated example, the local memory 118 of the memory sub-system controller 116 includes embedded memory configured to store instructions for performing various processes, operations, logic flows, and routines that control operation of the memory sub-system 115, including handling communications between the memory sub-system 115 and the host system 102.
[0040] In some embodiments, the local memory 118 can include memory registers that store memory pointers, fetched data, and the like. For example, the local memory 118 can also include read-only memory (ROM) for storing microcode. While the local memory 118 is illustrated as being included in the memory sub-system controller 116, in another embodiment of the present disclosure, the memory sub-system 115 does not include the memory sub-system controller 116, but can rely on external control (e.g., provided by an external host or by a processor or controller separate from the memory sub-system). Figure 1
[0041] In general, the memory sub-system controller 116 can receive commands or operations from the host system 102 and can convert the commands or operations into instructions or appropriate commands to achieve the desired access to the memory devices 103. The memory sub-system controller 116 can be responsible for other operations such as wear leveling operations, garbage collection operations, error detection and error-correcting code (ECC) operations, encryption operations, caching operations, and address translations between a logical address (e.g., logical block address (LBA), name space) and a physical address (e.g., physical block address) associated with the memory devices 103. The memory sub-system controller 116 can further include host interface circuitry to communicate with the host system 102 via the physical host interface. The host interface circuitry can convert the commands received from the host system into command instructions to access the memory devices 103, as well as convert responses associated with the memory devices 103 into information for the host system 102.
[0042] The memory sub-system 115 can also include additional circuitry or components that are not illustrated. In some embodiments, the memory sub-system 115 can include a cache or buffer (e.g., DRAM) and address circuitry (e.g., row and column decoders) that can receive an address from the memory sub-system controller 116 and decode the address to access the memory devices 103.
[0043] In some embodiments, memory device 103 includes a local media controller that operates in conjunction with memory subsystem controller 116 to perform operations on one or more memory cells of memory device 103. An external controller (e.g., memory subsystem controller 116) may externally manage memory device 103 (e.g., perform media management operations on the memory device). In some embodiments, memory device 103 is a managed memory device, which is a native memory device combined with a local controller for media management within the same memory device package. An example of a managed memory device is a managed NAND (MNAND) device.
[0044] A memory subsystem controller 116 is coupled to an AI accelerator 114. The AI accelerator 114 may include hardware and / or firmware. For example, the AI accelerator 114 may include various circuit systems (e.g., hardware), such as one or more processing devices (e.g., microprocessors), such as a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), or a field-programmable gate array (FPGA). The processor of the AI accelerator 114 may perform low-precision arithmetic operations. For example, the AI accelerator 114 may be implemented using phase-change memory. The processor of the AI accelerator 114 may be a memory cell of a memory array. For example, a memory cell may be used to perform matrix multiplication. The memory cell may be configured to perform operations by controlling the resistance of the memory cell. The memory cell may be used to perform operations in parallel. In various instances, the AI accelerator 114 may implement a processor separate from the memory cells of the memory array.
[0045] For example, AI accelerator 114 may be a deep learning accelerator (DLA). The AI accelerator may be implemented at the edge of memory system 115. For example, AI accelerator 114 may be implemented externally to memory device 103. AI accelerator 114 may be coupled to the output path of the I / O circuitry system that couples memory device 103 to memory subsystem 115.
[0046] The memory subsystem controller 116 can control the AI accelerator 114. For example, the memory subsystem controller 116 can provide data to the AI accelerator 114 and can receive output from the AI accelerator. Inputs to the AI accelerator 114 can be provided as inputs to an ANN managed by the AI accelerator 114. The memory subsystem controller 116 can also provide the outputs of the AI accelerator 114 and / or the ANN to the memory device 103 and / or the host system 102.
[0047] The memory sub-system controller 116 can also include data organization circuitry 119. The data organization circuitry 119 can be configured to manage the output of the AI accelerator 114 to provide data usage levels and data files to the memory device 103. The data organization circuitry 119 can also be configured to provide input to the AI accelerator 114. For example, the data organization circuitry 119 can provide file metadata and device metadata to the AI accelerator 114. As used herein, file metadata is data that describes a data file. Device metadata is data that describes the memory sub-system 115 and / or the memory device 103. The data organization circuitry 119 can also be configured to perform additional processing on the input to the AI accelerator 114 and / or the output of the AI accelerator 114 as needed.
[0048] The AI accelerator 114 can be configured to output a data usage level for a particular data file. For example, input including file metadata and device metadata can be provided to an ANN hosted by the AI accelerator 114. The ANN can output a corresponding data usage level. The AI accelerator 114 can provide the data usage level to the data organization circuitry 119. The data organization circuitry 119 can be configured to provide the data file and the data usage level to the memory device 103. The memory device 103 can store the data file in view of the data usage level. For example, the memory device 103 can store the data file in a block of at least one of the memory devices 103 with other data files that share the data usage level.
[0049] The computing system 100 can be coupled to a cloud system via a network 195. The cloud system can include an AI system 112. For example, the AI system 112 can be an ANN. The host system 102 can couple the computing system 100 to the network 195.
[0050] Figure 2 A block diagram of a cloud system 220 for organizing data in accordance with a number of embodiments of the present disclosure is illustrated. The cloud system 220 includes an AI system 212 and a memory sub-system 215. For example, the AI system 212 can be coupled to the memory sub-system 215 by a host and / or a network. In various examples, the AI system 212 can implement an ANN.
[0051] In various cases, the AI system 212 receives input and based on the input, can generate output that can be used to organize data files in the memory sub-system 215. For example, the AI system 212 can receive as input file metadata corresponding to a data file and device metadata corresponding to the memory sub-system 215 and / or a memory device of the memory sub-system 215.
[0052] File metadata can include a data type of a data file, a size of the data file, and / or an expected use of the data file in the memory sub-system 215. For example, a data type of a data file can be a "pdf" type, a "gif" type, and / or a "mp4" type, among other possible types. The data type can also be a video type and / or a picture type, among other types. In various cases, the data type can be generated from an identifier of the data file. For example, the identifier of the data file can end with an extension. The extension can be used to assign a data type to the data file. It can be expected that data files of one type can be stored for similar durations and can be accessed a similar number of times.
[0053] The expected use of a data file in the memory sub-system 215 can describe how the memory sub-system 215 is expected to use the data file. For example, a likely use of the data file by the memory sub-system 215 can affect a duration for which the memory sub-system stores the data file and / or a number of times the data file is expected to be read during the duration. For example, if the first X data files of a same data type stored by the memory sub-system 215 are deleted immediately after storage, then a next data file of the same data type will have an expected use on the memory sub-system 215 consistent with being deleted immediately after storage.
[0054] Device metadata can include a use of the memory sub-system 215, a size of the memory sub-system 215, and / or an expected use of data files in the memory sub-system 215. The use of the memory sub-system 215 can describe how the memory sub-system 215 is used when data files are received at the memory device 215. For example, if the memory sub-system 215 is used for streaming video, then the use of the memory sub-system 215 can affect a duration for which the memory sub-system 215 stores data files and a number of times the data files are read. The size of the memory sub-system 215 can include a total size of the memory sub-system 215, a total size of memory devices of the memory sub-system 215, and / or an available size of the memory sub-system 215.
[0055] The AI system 212 can output a data usage rating based on the input. That is, the AI system 212 can utilize the device metadata and / or file metadata to generate a data usage rating. The data usage rating can be provided to the memory sub-system 215 in the form of additional device metadata and / or file metadata that the memory sub-system 215 can use to determine a storage location for a corresponding file. Thus, the AI system 212 can analyze the device metadata and / or file metadata to generate a data usage rating. The data usage rating can describe an expected usage of a data file in the memory sub-system 215. The data usage rating can be generated by the AI system 212. The data usage rating can include a plurality of indicator bits or bytes. The data usage rating can describe an expected duration that the memory sub-system 215 will store a data file and / or a number of times that the data file will be read during the expected duration. As an example, a pair of bits can be used to represent four different data usage ratings. For example, a first data usage rating (e.g., 00) can correspond to storing a data file for less than two hours, a second data usage rating (e.g., 01) can correspond to storing a data file between two hours and twenty-four hours, a third data usage rating (e.g., 10) can correspond to storing a data file between twenty-four hours and five days, and a fourth data usage rating (e.g., 11) can correspond to storing a data file between five days and thirty days.
[0056] The data usage rating can be provided to the memory sub-system 215. The memory sub-system 215 can receive a data file and the data usage rating. The memory sub-system 215 can store the data file in the same block that stores different data files having the same data usage rating. That is, the data files in the memory sub-system 215 can be organized based on the data usage rating such that data files having the same data usage rating are stored in the same block of the memory sub-system 215.
[0057] Storing data files sharing the same data usage rating in the same block can result in the data files expiring at substantially the same time. Storing data files sharing the same data usage rating in the same block can result in garbage collection operations being performed on the data files at substantially the same time. As used herein, the term “substantially” describes a measurement within a standard increment. For example, the duration that a data file is stored can be between two hours and twenty-four hours. Storing data files sharing the same data usage rating in the same block can result in read recovery operations being performed on the data files at substantially the same time.
[0058] The AI system 212 can also be trained. The AI system 212 can request feedback from the memory sub-system 215. The requested feedback can include a duration for which the memory sub-system 215 actually stores a data file (e.g., data storage time on the device) and / or a number of times the data file is read. Reading a data file can also be considered as using the data file. Thus, the feedback request can include a request for a frequency at which the memory sub-system 215 uses the data.
[0059] The memory sub-system 215 can track the duration for which a data file is stored and the number of times the data file is read. In response to receiving the request for feedback, the memory sub-system 215 can provide feedback that includes the duration for which the data file is stored and the number of times the data file is read.
[0060] The memory sub-system 215 can provide file metadata and device metadata (e.g., requests for data) to the AI system 212. The AI system 212 can use the file metadata and device metadata to identify particular cases. The AI system 212 can use the feedback to determine whether a correct prediction was made. For example, the AI system 212 can compare a duration for which data is stored in the memory sub-system 215 (e.g., an actual duration) and a number of times the data file is read (e.g., an actual access count) to an output generated using the file metadata and device metadata (e.g., a projected duration and a projected access count). If the actual duration and the actual access count are within an increment of the projected duration and the projected access count, the AI system 212 can determine that the output was correct and can update weights and biases of the ANN to reflect that the output was correct. If the actual duration and the actual access count are not within the increment of the projected duration and the projected access count, the AI system 212 can determine that the output was incorrect and can update the weights and biases of the ANN to reflect that the output was incorrect. That is, the AI system 212 can train the ANN with the file metadata, the device metadata, and the actual duration and the actual access count.
[0061] The training of the ANN can be performed using particular samples of data files stored by the memory sub-system 215. In various cases, the AI system 212 can label data files to be used for training such that the memory sub-system 215 does not have the burden of tracking the duration for which a data file is stored and the number of accesses of the data file for each data file stored by the memory sub-system 215.
[0062] Figure 3 A block diagram of a computing system 300 for organizing data in accordance with a number of embodiments of the present disclosure is illustrated. The computing system 300 can include a host 302 and a memory sub-system 315.
[0063] Host 302 can receive and / or access data files. Host 302 can generate metadata for the data files. For example, host 302 can generate the file extension and / or the size of the data files. The file extension and / or the size of the data files can be used to generate the type or category of the data files. Host 302 can provide the file extension, size, type, and / or category of the data files to storage subsystem 315. Host 302 can also provide data files and requests to store data files to storage subsystem 315.
[0064] The storage subsystem 315 can receive file metadata (e.g., data file extension, data file size, data file type, and / or data file category) and files. The storage subsystem 315 can generate data usage levels by utilizing file metadata and / or device metadata. The storage subsystem 315 can generate its own device metadata. For example, the storage subsystem 315 can generate metadata for itself and / or for the storage devices hosted by the storage subsystem 315 (e.g., ...). Figure 1 The memory device 103 in the middle generates metadata.
[0065] In various instances, the memory subsystem 315 can utilize AI accelerators (e.g., Figure 1 The AI accelerator 114 generates data usage levels. The memory subsystem 315 can also utilize... Figure 1 The data organization circuitry 119 generates data usage levels. The memory subsystem 315 can also utilize the data organization circuitry 119 and the AI accelerator 114 to generate data usage levels.
[0066] Based on data usage levels, the memory subsystem 315 may store data files in areas of the memory devices of the memory subsystem. Areas of the memory subsystem 315 may include multiple memory devices, memory devices, and / or blocks of memory devices, as well as other possible segments of the memory subsystem 315.
[0067] Memory sub-system 315 can segment a memory device such that each region of memory sub-system 315 stores only data files of a shared data usage class. Each time memory sub-system 315 determines that a different data usage class is needed, memory sub-system 315 can form a different segment of the memory device. For example, memory sub-system 315 can generate a first segment for a first data usage class. Once a second data usage class is needed, memory sub-system 315 can generate a second segment. Once a third data usage class is needed, memory sub-system 315 can generate a third segment, and so on. Segments can be separate from each other, or can be carved from regions of a non-segmented memory device. For example, a first segment can include all available regions of a memory device. A second segment can be carved from the first segment. A third segment can be carved from the first segment and / or the second segment. In other examples, making a first segment can form a non-segmented region and a first segment (e.g., a first region). A second segment can be generated from the non-segmented region such that the size of the non-segmented region is reduced. A third segment can be generated from the non-segmented region such that the size of the non-segmented region is reduced again.
[0068] In various cases, memory sub-system 315 can track data files to determine whether the data files are stored in an appropriate region of a memory device. If a data file is stored in an inappropriate region of a memory device, memory sub-system 315 can adjust a data usage class and can store the file in an appropriate region based on the adjusted data usage class. Memory sub-system 315 can provide feedback to host 302 indicating that a data file is stored in an inappropriate region and that the data usage class is readjusted. For example, memory sub-system 315 informs host 302 to store data files having a first type together with data files having a second type.
[0069] Host 302 can utilize the feedback to flag metadata corresponding to the data file. Host 302 can provide the flag to an Al system implemented on a cloud. Host 302 can attach the flag to future data files having metadata comparable to the metadata of the data file. Host 302 can provide the flag to memory sub-system 315. Memory sub-system 315 can utilize the flag to generate a data usage class that is different from a data usage class that would otherwise be generated for a future data file having the particular file metadata.
[0070] Host 302 can provide multiple flags with file metadata and data files. For example, host 302 can provide a first flag and a fourth flag. Actual data usage classes generated by memory sub-system 315 can be used in view of the flags that accompany the data files, the file metadata, and / or the device metadata.
[0071] In various cases, the host 302, the memory sub-system 315, and the cloud AI system (e.g., the AI system 212 in Figure 2 The cloud AI system can receive the flag provided by the host 302. The cloud AI system can utilize the flag to provide input to the memory sub-system 315, which can result in the memory sub-system 315 allocating data usage levels in different ways. For example, the cloud AI system can provide feedback to an ANN hosted by the memory sub-system 315 to train the ANN. The feedback provided by the cloud AI system can be based on the flag provided by the memory sub-system 315 and / or flags provided by a plurality of other memory sub-systems.
[0072] Figure 4 An example flow diagram for organizing data according to a number of embodiments of the disclosure is illustrated. The method can be performed in a number of locations. For example, the method can be performed in a host, a controller of a memory sub-system, an AI accelerator of a memory sub-system, and / or in a cloud AI system.
[0073] At block 437, a storage request and file metadata can be received. For example, the storage request and file metadata can be received at a controller of a memory sub-system.
[0074] At block 438, a file can be stored (e.g., segmented) in a storage region based on the file metadata and / or device metadata. Block 439 illustrates an example of different storage regions. Each of the rectangles in block 439 depicts a different storage region. The storage regions do not share blocks of one or more memory devices of the memory sub-system. As used herein, a storage region can describe a subset of memory cells of one or more memory devices. For example, a storage region can be composed of one or more blocks (e.g., erase blocks of a NAND device) of one or more memory devices. If a first storage region is composed of a first block of a first memory device, a second storage region can be composed of a second block of the first memory device or a different block of a different memory device. In various cases, a storage region can include a plurality of blocks of a first memory device and a second device. Each of the storage regions can be associated with a data usage level. The file metadata can include a class and / or a type corresponding to the file. Segmentation of the file can be performed based on the class and / or the type of the file. Thus, the file can be stored in different storage regions selected with the class of the file and / or the type of the file. For example, the file can also be stored in different storage regions selected with the class of the file, the type of the file, and / or the device metadata.
[0075] A first storage region can be associated with a first data usage class, and a second storage region can be associated with a second data usage class, etc. The first storage region stores data files assigned the first data usage class. The second storage region stores data files assigned the second data usage class. Thus, data files can be stored in particular regions of a memory sub-system.
[0076] At block 440, a duration (e.g., a storage lifetime) that a data file is stored in a particular region and a number of accesses (e.g., a read count) of the data file can be monitored. At block 441, a table (e.g., a lookup table) can be created and / or maintained. The table can associate a duration that a data file is stored in a plurality of storage regions with a number of accesses of the data file in the plurality of storage regions. For example, the table can associate a duration and a number of accesses with a plurality of storage regions with data usage classes. For example, the table can associate a plurality of data usage classes with a plurality of storage regions.
[0077] At block 445, a determination can be made that a storage lifetime and / or a read count of the data file matches a storage lifetime and / or a read count associated with a data usage class assigned to the particular storage region. As used herein, the terms "storage lifetime" and "storage time" can be used interchangeably. In response to the determination made at block 445, the flow can continue to block 438.
[0078] At block 442, a determination can be made that a storage lifetime and / or a read count of the data file does not match a storage lifetime and / or a read count associated with a data usage class assigned to the particular storage region. That is, a determination can be made whether the data file continues to belong to the particular storage region. For example, a determination can be made that the storage lifetime of the data file is greater than an upper threshold value of the storage lifetime associated with the particular storage region and / or the data usage class assigned to the particular storage region.
[0079] At block 443 and in response to determining that the data file does not belong to the particular storage region, a determination can be made that the data file is no longer valid. At block 444, a determination can be made that the data file is valid. If the data file is no longer valid, the method can return to block 440. If the data file is valid, at block 446, the lookup table (e.g., the access lookup table) can be referenced to determine whether the data file should be stored in a different storage region.
[0080] At block 449, a storage lifetime and / or read count of the data file can be determined to match a storage lifetime and / or read count associated with a different storage region. For example, a new data usage level can be generated for the data file, which can be determined to determine whether a different storage region is associated with the new data usage level in response thereto. If there is a different storage region associated with the new data usage level, the data file can be moved to the different storage region associated with the new data usage level. Moving the data file can include deleting the data file from the storage region and storing the data file in the different storage region.
[0081] At block 448, a storage lifetime and / or read count of the data file can be determined to not match an existing storage region, which can be in response to which a new storage region is created. For example, a new data usage level can be determined to not be associated with an existing storage region, which can be in response to which a new storage region is created. The new storage region can be associated with the new data usage level. The method can continue to block 438.
[0082] Figure 5 A block diagram for reporting by a host 502 for cloud processing is illustrated in accordance with a number of embodiments of the present disclosure. Figure 5 A cloud system 520 is shown that includes a host 502, a host driver 551, a memory sub-system 515, and an AI system 512. As used herein, a host driver 551 is a software interface that provides access to the host 502 as a hardware device. The cloud system 520 facilitates communication between the AI system 512 and the memory sub-system 515 through the host 50. NAND memory solutions are limited to making decisions based on input memory device data and monitoring of the memory device. Limiting decisions to input memory device data places restrictions on the memory device and / or the memory sub-system 515. That is, decisions can be limited by data stored in the memory sub-system 515, given that the memory sub-system 515 can not have access to other data to make decisions.
[0083] NAND manufacturing can also be limited to finding faults based on feedback from customers and / or internal testing that can not match all customer use cases. Additionally, feedback needs to be provided between the cloud system 520 and the memory sub-system 515. The memory sub-system 515 and / or the AI system 512 of the cloud system 520 can use the feedback to optimize the functionality of the memory sub-system 515.
[0084] Providing the ability to communicate between the memory sub-system 515 and the AI system 512 allows for the optimization of the memory sub-system 515 using feedback provided by the AI system 512. Allowing feedback between the memory sub-system 515 and the AI system 512 provides a manufacturing process for field screening materials. The examples described herein provide the ability to utilize multiple datasets (e.g., feedback) provided from multiple devices (e.g., the host 502 and / or the AI system 512) to make decisions by the memory sub-system 515.
[0085] Figure 5 Examples in accordance with this disclosure provide the option of allowing a system on a chip (e.g., the host 502) to upload statistics about data stored and / or data about performance of the memory sub-system 515 or defects of the memory sub-system 515 to the AI system 512 hosted by the cloud system 520 to perform analysis by AI or other methods. The examples described herein allow for communication between the memory sub-system 515 and the host driver 551, the host driver 551 and the host 502, and / or the host 502 and the AI system 512.
[0086] The AI system 512 can provide indicator data based on the statistics provided to the AI system 512. The host 502 can receive the indicator data. The host 502 can provide the indicator data to the memory sub-system 515 via the host driver 551. The memory sub-system 515 can use the input indicator feedback to optimize the memory sub-system 515. For example, the input indicator feedback can be used to resolve defective blocks and other operations.
[0087] The host driver 551 can also request statistics from the memory sub-system 515. The memory sub-system 515 can respond to the request by providing the statistics to the host driver 551. The statistics can be data that provides attributes of the memory sub-system 515. The statistics can also be referred to as metadata (e.g., device metadata, and / or file metadata) provided from the memory sub-system 515 to the AI system 512. The host driver 551 can provide the statistics provided by the memory sub-system 515 to the host 502. The host 502 can provide the statistics to the AI system 512. The AI system 512 can use the statistics to generate indicator data for the memory sub-system 515. That is, the AI system 512 can analyze the statistics to generate the indicator data. In various cases, the AI system 512 can receive data files instead of statistics. The AI system 512 can analyze the data files to generate the indicator data.
[0088] Figure 6 A block diagram of a data byte in accordance with a number of embodiments of the present disclosure is illustrated. Figure 6A command for requesting statistics provided by a host from a host driver and a frame structure 656 for a memory sub-system, and for returning statistics from the memory sub-system to the host by the host driver is shown. Figure 6 A command for requesting statistics provided by a host from a host driver and a frame structure 656 for a memory sub-system, and for returning statistics from the memory sub-system to the host by the host driver is shown. Figure 5 A frame structure 657 for providing input indicator feedback from an AI system 512 to a memory sub-system 515 by a host 502 and a host driver 551 is shown.
[0089] The frame structure 656 can include a plurality of fields 658, 659, 660, 661, 662, 663. The field 658 can provide a data storage indicator time length (e.g., duration of storing a data file / storage time). The field 659 can provide a data usage indicator usage frequency (e.g., number of accesses to a data file / read count). The field 660 can provide defect data describing information about defect experience for a corresponding memory sub-system and / or memory device. The field 661 can provide raw bit error rate. The field 662 can provide read retry data. The field 663 can be reserved for additional data as needed. The frame structure 656 can be used to request statistics from a memory sub-system and / or provide statistics from a memory sub-system to a host.
[0090] The frame structure 657 can include a plurality of fields 664, 665, 666, 667, 668, 669. The field 664 can provide a data storage indicator time length (e.g., duration of storing a data file / storage time). The field 665 can provide a data usage indicator usage frequency (e.g., number of accesses to a data file / read count). The field 666 can provide defect data describing information about defect experience for a corresponding memory sub-system and / or memory device. The field 667 can provide raw bit error rate. The field 668 can provide read retry data. The field 669 can be reserved for additional data as needed. The frame structure 657 can be used to provide input indicator feedback from an AI system to a memory sub-system.
[0091] Figure 7 A block diagram for reporting from a memory sub-system to a host according to a number of embodiments of the present disclosure is illustrated. Figure 7 A host 702, a host driver 751, and a memory sub-system 715 are included.
[0092] The host 702 can request detailed information about storage statistics for the memory sub-system 715. The memory sub-system can provide status data. Additional bits can be returned to indicate whether statistics are available. The host 702 can also request status of the memory sub-system 715 with the host driver 751.
[0093] Figure 8An example flow diagram of a method 880 for storing data for garbage collection in accordance with a number of embodiments of the present disclosure is illustrated. The method 880 can be performed by processing logic that can comprise hardware (e.g., processing device, circuitry, dedicated logic, programmable logic, microcode, hardware of a device, integrated circuit, etc.), software (e.g., instructions run or executed on a processing device), or a combination thereof. In some embodiments, the method 880 is performed by the control circuitry (e.g., controller) 116 of the memory sub-system 110. Although shown in a particular sequence or order, unless otherwise specified, the order of the processes can be modified. Thus, the illustrated embodiments should be understood only as examples, and the illustrated processes can be performed in a different order, and some processes can be performed in parallel. Additionally, one or more processes can be omitted in various embodiments. Thus, not all processes are required in every embodiment. Other process flows are possible. Figure 1
[0094] At block 881, a data file and a corresponding indicator can be provided from a host to a memory sub-system. At block 882, the data file can be stored in a storage region of the memory sub-system that is allocated to store the data file with the corresponding indicator. At block 883, a storage age and a read count of the data file can be tracked to determine whether the data file is stored in an appropriate storage region to reduce overhead of storing the data file in the memory sub-system. For example, the overhead can include performing garbage collection in the appropriate storage region.
[0095] Garbage collection can be performed concurrently on data files stored in storage regions of the memory sub-system. That is, a garbage collection operation can be performed on a plurality of blocks of memory cells that comprise a storage region. The garbage collection operation can be performed without interruption. The garbage collection operation can be performed to collectively perform garbage collection on the blocks.
[0096] The method 880 can also include determining whether a storage age and a read count of a data file matches a storage age and a read count of a data file stored in a storage region of the memory sub-system. In response to determining that the storage age and the read count of the data file matches the storage age and the read count of the data file, the data file can remain in the storage region. In response to determining that the storage age and the read count of the data file does not match the storage age and the read count of the data file and the data file is valid, it can be determined whether the storage age and the read count of the data file matches a storage age and a read count of a different storage region. In response to determining that the storage age and the read count of the data file matches the storage age and the read count of the different storage region, the data file can be moved to the different storage region. In response to determining that the storage age and the read count of the data file matches the storage age and the read count of the different storage region, a new storage region of the memory sub-system can be defined and the data file can be moved to the new storage region.
[0097] In a number of instances, file metadata of a data file and device metadata of a memory device can be received. For example, the file metadata and the device metadata can be received at an AI accelerator. Based on the file metadata and the device metadata, a number of indicators can be selected to provide an indication of an expected use of the data file in the memory device. The number of indicators can be provided to the memory device. The memory device can receive the data file and the number of indicators and store the data file with different data files having matching indicators corresponding thereto. The memory device can perform a garbage collection operation on the data file and the different data files.
[0098] An AI accelerator can receive a type of data file that can include file metadata. A size of the data file can also be received as the file metadata. Metadata of a computing system hosting the memory device can be received as device metadata. A size of the memory device can also be device metadata. Usage of the memory device can further include device metadata. Usage of the memory device can include a description of how the memory device is used. Thus, the AI accelerator can receive a description of how the memory device is used. For example, the memory device can be used for streaming data, or the memory device can be used for storing system library files.
[0099] A number of indicators representing a usage indicator from a number of usage indicators can be selected, where the number of usage indicators represent a number of different uses of the data file by the memory device. The data file can be stored to a physical block that is also used to store different data files, where the physical block stores data allocated with a number of indicator bits. The method can also include performing a garbage collection on data stored in the physical block simultaneously, the data including the data file and the different data files.
[0100] An AI accelerator can request feedback on a storage latency of a data file and a number of times the data file is read during the storage latency. As described herein, the storage latency describes a duration of time that the data file has been stored. The storage latency can also be referred to as a storage time. An ANN can be trained using feedback provided from a memory device to the AI accelerator, the feedback including a storage time of the data file and a number of times the data file is read during the storage time.
[0101] In various instances, indicator data received from a cloud system can be provided to a memory subsystem. The indicator data can be based on an analysis of a data file. Statistical data can be requested from the memory subsystem. In response to requesting the statistical data from the memory subsystem, the statistical data can be provided to the cloud system. The cloud system can utilize the statistical data to generate additional indicator data.
[0102] Providing indicator data to the memory subsystem may include a provision signal, the signal including a first number of bits describing the storage lifetime of the data file and a second number of bits describing the read count of the data file. Requesting statistics from the memory subsystem may further include a request signal, the signal including a first number of bits describing the storage lifetime of the data file and a second number of bits describing the read count of the data file.
[0103] Figure 9 An example machine of computer system 990 is shown, within which an instruction set can be executed to cause the machine to perform the various methods discussed herein. In various embodiments, computer system 990 may correspond to including, coupled to, or utilizing a memory subsystem (e.g., Figure 1 The memory subsystem 115) or can be used to execute the controller (e.g., Figure 1 The system operating the controller 116) (e.g., Figure 1 (Computing system 100). In alternative embodiments, the machine may be connected (e.g., networked) to other machines in a LAN, intranet, extranet, and / or the Internet. The machine may operate as a peer-to-peer (or distributed) network machine in a peer-to-peer (or distributed) network environment or as a server or client machine in a cloud computing infrastructure or environment, operating at the capacity of a server or client machine in a client-server network environment.
[0104] The machine may be a personal computer (PC), tablet PC, set-top box (STB), personal digital assistant (PDA), cellular phone, network appliance, server, network router, switch, or bridge, or any machine capable of executing (sequentially or otherwise) a set of instructions specifying actions to be taken by the machine. Furthermore, although a single machine is described, the term "machine" should be understood to include any set of machines that individually or collectively execute one or more sets of instructions to perform any one or more of the methods discussed herein.
[0105] The example computer system 990 includes a processing device 991, a main memory 993 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM), such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 997 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage system 998, which communicate with each other via a bus 996.
[0106] Processing device 991 represents one or more general-purpose processing devices such as a microprocessor, a central processing unit, or the like. More particularly, the processing device can be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 991 can also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 991 is configured to execute instructions 992 for performing the operations and steps discussed herein. The computer system 990 can further include a network interface device 994 to communicate over the network 995.
[0107] The data storage system 998 can include the machine-readable storage medium 999 (also known as computer-readable medium), on which are stored one or more sets of instructions 992 or software embodying any one or more of the methodologies or functions described herein. The instructions 992 can also reside, completely or at least partially, within the main memory 993 and / or within the processing device 991 during execution thereof by the computer system 990, the main memory 993 and the processing device 991 also constituting machine-readable storage media.
[0108] In one embodiment, the instructions 992 include instructions to implement functionality corresponding to Figure 1 of the host 102 and / or the memory sub-system 115. While the machine-readable storage medium 999 is shown in an example embodiment to be a single medium, the term "machine-readable storage medium" should be taken to include a single medium or multiple media that store one or more sets of instructions. The term "machine-readable storage medium" shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term "machine-readable storage medium" shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
[0109] As used herein, "a" or "an" can mean one or more. For example, a plurality of memory devices can mean one or more memory devices. As used herein, "a plurality" means two or more. Additionally, as used herein, designators such as "N," especially in connection with reference numerals in the drawings, indicates that a plurality of the particular feature so designated can be included with embodiments of the present disclosure.
[0110] The drawings herein are not drawn to scale. The drawings in the present disclosure follow a numbering convention in which the first digit or digits correspond to the drawing figure number and the remaining digits identify the element or components in the drawing figure. Similar elements or components between different figures can be identified by the use of similar digits. As will be appreciated, elements shown in different embodiments herein can be added, exchanged, and / or eliminated so as to provide a number of additional embodiments of the present disclosure. In addition, the proportions and relative proportions of the various elements in the figures are intended to represent exemplary embodiments of the present disclosure and are not to be construed as limiting the scope of the various embodiments of the present disclosure.
[0111] While specific embodiments have been shown and described in the present disclosure, it will be obvious to those skilled in the art that a number of modifications to the described embodiments can be made without departing from the scope of the present disclosure. The present disclosure is intended to cover any and all modifications within the scope of various embodiments of the present disclosure. It will be understood by those within the art that, in general, terms used herein, and especially
[0112] In the preceding specific embodiments, various features are grouped together in individual embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the disclosed embodiments of the present disclosure require more features than are explicitly recited in each claim. Rather, inventive subject matter can lie in fewer than all features of a single disclosed embodiment. Thus, the following claims are hereby expressly incorporated into this detailed description, with each claim acting as a separate embodiment of the present disclosure.
Claims
1. An apparatus for reducing the overhead of a memory device using artificial intelligence, comprising: Memory subsystem; AI accelerators are implemented in cloud systems; and The AI accelerator is configured to: Receive data files and device metadata of the memory device; Based on the data file and the device metadata, multiple indicators are selected to provide indications of the intended use of the data file in the memory device. The plurality of indicators include a data usage level, which describes the expected duration for which the storage device will store the data file and the expected number of times the data file will be read during the expected duration. The AI accelerator analyzes the data file to select the data usage level, and The device metadata is received from the memory subsystem containing the memory device, wherein the device metadata describes the memory subsystem and the memory device; and The plurality of indicators are provided to the memory device to organize the storage of the data files in the memory device such that several different data files stored together with the data files in a region of the memory device share a data usage level. The memory subsystem is configured to respond to a mismatch between the storage time and read count of the data file and the storage time and read count of the region: Define a new region; Move the data file to the new area.
2. The device of claim 1, wherein the AI accelerator is further configured to receive the type of the data file.
3. The device of claim 1, wherein the AI accelerator is further configured to receive the size of the data file.
4. The device of claim 1, wherein the AI accelerator is further configured to receive metadata of the computing system hosting the memory device.
5. The device of claim 1, wherein the AI accelerator is further configured to receive the size of the memory device.
6. The device of claim 1, wherein the AI accelerator is further configured to receive a description of how to use the memory device.
7. The device according to any one of claims 1 to 6, wherein the AI accelerator is further configured to select the plurality of indicators representing usage indicators from a plurality of usage indicators, wherein the plurality of usage indicators represent a plurality of different uses of the data file by the memory device.
8. The device according to any one of claims 1 to 6, wherein the AI accelerator is further configured to request feedback regarding the storage time of the data file and the read count of the data file.
9. The device of claim 8, wherein the AI accelerator is configured to train an artificial neural network (ANN) using feedback provided to the AI accelerator from the memory device, the feedback including the storage time of the data file and the read count of the data file.
10. A method for reducing the overhead of a memory device using artificial intelligence, comprising: The host provides the storage subsystem with data files and corresponding indicators for the intended use of the data files in the storage devices of the storage subsystem to organize the storage of the data files in the storage devices. The corresponding indicator includes a data usage level, which describes the expected duration for which the storage device will store the data file and the expected number of times the data file will be read during the expected duration. The analysis of the data files and device metadata is used to select the data usage level, and The device metadata is received by the host from the memory subsystem, and the device metadata describes the memory subsystem and the memory device. The data file and several data files sharing the corresponding indicator are stored in a storage area from multiple storage areas of the memory device of the memory subsystem, the storage area being allocated to store the several data files having the corresponding indicator, wherein garbage collection is performed simultaneously on the several data files stored in the storage area and the data file. The storage time and read count of the data file are tracked to determine whether the data file is stored in an appropriate storage area to reduce the overhead of storing the data file in the memory subsystem; and In response to the determination that the storage time and read count of the data file do not match the storage time and read count of different storage areas: Define a new storage region for the memory subsystem; and Move the data file to the new storage area.
11. The method of claim 10, further comprising determining whether the storage time and read count of the data file match the storage time and read count of the plurality of data files stored in the storage area of the memory subsystem.
12. The method of claim 11, further comprising, in response to determining that the storage time and read count of the data file match the storage time and read count of the plurality of data files, maintaining the data file in the storage area.
13. The method of claim 11, further comprising, in response to determining that the storage time and read count of the data file do not match the storage time and read count of the plurality of data files and that the data file is valid, determining whether the storage time and read count of the data file match the storage time and read count of different storage regions.
14. The method of claim 13, further comprising moving the data file to the different storage areas in response to determining that the storage time and read count of the data file match the storage time and read count of the different storage areas.
15. The method according to any one of claims 10 to 14, further comprising storing the data file to a physical block via the memory device, the physical block also being used to store several different data files, wherein the physical block stores data assigned with the corresponding indicator.
16. The method of claim 15, further comprising simultaneously performing garbage collection on the physical block via the memory device, the physical block comprising the data file and the various plurality of data files.
17. A system for reducing the overhead of a memory device using artificial intelligence, comprising: Memory subsystem; The host, coupled to the memory subsystem and configured to: Indicator data received from the cloud system is provided to the memory subsystem to organize the storage of data files in the memory devices of the memory subsystem, such that the data files are stored together with several other data files that share the indicator data. The indicator data includes a data usage level, which is described as follows: The memory device will store the data file for the expected duration, and The expected number of times the data file will be read during the expected duration. The data usage level is based on the analysis of the data file and device metadata, wherein the device metadata is received from the memory subsystem and describes the memory subsystem and the memory device; The indicator data thereon is an indicator for the intended use of the data file in the memory device of the memory subsystem; and Overhead operations are performed simultaneously on several different data files and the data files stored in the region of the memory subsystem; Request statistics from the memory subsystem; The statistical data is provided to the cloud system, which uses the statistical data to generate additional indicator data; and The memory device is further configured to, in response to determining that the storage time and read count of the data file do not match the storage time and read count of the region: Define a new region; Move the data file to the new area.
18. The system of claim 17, wherein the host configured to provide the indicator data to the memory subsystem is further configured to: Provide a signal, the signal including: A first number of bits describing the expected duration, and A second number of bits describing the expected number of times the data file will be read during the expected duration.
19. The system according to any one of claims 17 to 18, wherein the host configured to request the statistics from the memory subsystem is further configured to request a signal, the signal comprising: A first number of bits describing the storage time of the data file, and A second number of bits describing the read count of the data file.
Citation Information
Patent Citations
Placement of host data based on data characteristics
US20190377494A1
Access Pattern Driven Data Placement in Cloud Storage
US20210136150A1