Storage device and memory management method using unsupervised learning scheme

Through unsupervised learning algorithms, the input/output requests of flash memory devices are sampled and classified, and the thermal data table is generated, which solves the problem of limited accuracy of thermal data identification in the prior art, and achieves efficient management and life extension.

CN113051185BActive Publication Date: 2025-08-12SAMSUNG ELECTRONICS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202011377125.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-26
Filing Date
2020-11-30
Publication Date
2025-08-12
Estimated Expiration
2040-11-30

AI Technical Summary

Technical Problem

The prior art is limited by the memory window when identifying and managing hot and cold data in flash memory devices, and increasing the memory window size will lead to an increase in overhead, making it difficult to efficiently manage high-speed and high-capacity storage devices and extend their lifespan.

Method used

Unsupervised learning algorithms are used to sample and classify input/output requests, generate a thermal data table of thermal data range, identify thermal data by analyzing cluster characteristics, and manage memory blocks with high accuracy without increasing overhead.

Benefits of technology

It improves the accuracy of identification of hot data, reduces the number of page copies of garbage collected, improves the management efficiency of storage devices and extends its life.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113051185B_ABST
    Figure CN113051185B_ABST
Patent Text Reader

Abstract

A method is disclosed, comprising: sampling input / output requests from a host to generate sampled input / output requests; classifying the sampled input / output requests into clusters using an unsupervised learning algorithm; determining a hot data range based on characteristics of the clusters; and incorporating the determined hot data range into a hot data table.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of Korean Patent Application No. 10-2019-0175237 filed on December 26, 2019, in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0003] Devices, apparatuses, systems, and methods consistent with the present disclosure relate to semiconductor memory devices, and more particularly, to memory devices and memory management methods thereof using an unsupervised learning scheme. Background Art

[0004] Flash memory devices are widely used as voice and image data storage media for information devices such as computers, smartphones, personal digital assistants (PDAs), digital cameras, portable cameras, video cameras, MP3 players, and handheld computers. Flash memory devices are becoming increasingly versatile as storage devices. Currently, semiconductor memory devices with three-dimensional array structures are being developed to increase the integration of flash memory devices. Flash memory devices with three-dimensional array structures have cell strings stacked perpendicular to the substrate. That is, the memory cells are arranged on a substrate in rows and columns and stacked perpendicular to the substrate to form a three-dimensional structure.

[0005] A storage device using flash memory devices identifies and manages hot and cold data to improve garbage collection efficiency. Hot data refers to data that is updated relatively frequently, while cold data refers to data that is updated relatively infrequently. By managing data in hot and cold states, the number of page copies required for garbage collection can be reduced.

[0006] However, the method of using limited memory to store logical block addresses (LBAs) is still used as a solution for classifying data into hot and cold data. In this case, the storage window for storing input LBAs is limited, and therefore accuracy is limited. As the size of the memory window increases, accuracy can be improved, but at the cost of increased overhead. To effectively manage high-speed, high-capacity storage devices and increase their lifespan, it would be advantageous to have a technology that can more efficiently identify hot data. Summary of the Invention

[0007] One aspect is to provide a storage device and an operating method thereof that can identify hot data with high accuracy without increasing overhead.

[0008] According to one aspect of an exemplary embodiment, a method is provided, the method including: a processor sampling a plurality of input / output requests from a host to generate sampled input / output requests; the processor classifying the sampled input / output requests into a plurality of clusters using an unsupervised learning algorithm; the processor determining a hot data range based on characteristics of the plurality of clusters; and the processor incorporating the determined hot data range into a hot data table.

[0009] According to another aspect of the exemplary embodiment, there is provided a storage device including: a storage controller configured to sample a plurality of input / output requests sent from a host during a first period to generate sampled data, classify the sampled data into a plurality of clusters using an unsupervised learning algorithm, determine a hot data range based on characteristics of the plurality of clusters, and incorporate the determined hot data range into a hot data table; and a nonvolatile memory device configured to provide a memory block for storing write request data under control of the storage controller, wherein the storage controller refers to the hot data table to determine whether the input / output request sent from the host corresponds to hot data during a second period.

[0010] According to yet another aspect of the exemplary embodiments, there is provided a memory system comprising: a storage device configured to receive multi-stream data and allocate memory blocks based on the streams; and a host configured to: sample a plurality of input / output requests from at least one application during a first period to generate sampled data, classify the sampled data into a plurality of clusters using an unsupervised learning algorithm, determine a hot data range based on characteristics of the plurality of clusters, incorporate the determined hot data range into a hot data table, and allocate stream identifiers to be sent to the storage device during a second period based on the hot data table. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The above and other aspects will become apparent by describing in detail exemplary embodiments thereof with reference to the accompanying drawings, in which:

[0012] Figure 1 is a block diagram illustrating a storage device according to an embodiment;

[0013] Figure 2 is a diagram showing a method according to an embodiment of the present invention. Figure 1 A block diagram of a configuration of a storage controller of a storage device;

[0014] Figure 3 is a block diagram illustrating a nonvolatile memory device according to an embodiment;

[0015] Figure 4 is a flowchart illustrating a method in which a memory controller forms a thermal data table by using an unsupervised learning algorithm according to an embodiment;

[0016] Figure 5 is a block diagram illustrating characteristics of an unsupervised learning module according to an embodiment;

[0017] Figure 6 is a diagram illustrating a sampling period and a sampling cycle for sampling input / output requests by an unsupervised learning module according to an embodiment;

[0018] Figure 7 It is shown in Figure 6 a graph of input / output requests sampled by the unsupervised learning module during the sampling period of ;

[0019] Figure 8 is a table illustrating a method of analyzing sampled and clustered input / output requests according to an embodiment;

[0020] Figure 9 is a flow chart illustrating a method of using a thermal data table according to an embodiment;

[0021] Figure 10 is a diagram showing a thermal data table according to an embodiment;

[0022] Figure 11 is a diagram showing how to use the Figure 10 A flowchart of a method for processing input / output requests using a hot data table;

[0023] Figure 12 is a block diagram illustrating a memory system according to another embodiment;

[0024] Figure 13 is a diagram showing a method according to an embodiment of the present invention. Figure 12 A block diagram of the software architecture of the host computer of the memory system is shown; and

[0025] Figure 14 is a block diagram illustrating a memory system according to another embodiment. DETAILED DESCRIPTION

[0026] It should be understood that both the foregoing general description and the following detailed description are provided as examples and should be considered to provide additional description. Reference numerals will be used in detail in the various embodiments discussed below, examples of which are illustrated in the accompanying drawings. Wherever possible, the same or similar reference numerals are used in the drawings and the description to indicate the same or similar parts.

[0027] Below, a storage device using a flash memory device will be illustrated to describe the features and functions of various exemplary embodiments. However, those skilled in the art can easily understand other advantages and performances of the exemplary embodiments based on the content disclosed herein. The exemplary embodiments can be implemented or applied through other embodiments. In addition, the detailed description can be changed or modified depending on the viewpoint and application without departing from the scope and spirit of the present disclosure as set forth in the appended claims.

[0028] Figure 1 is a block diagram showing a storage device according to an embodiment. Figure 1 , the storage device 100 may include a storage controller 110 and a non-volatile memory device 1120. In some embodiments, each of the storage controller 110 and the non-volatile memory device 120 may be implemented with one chip, one package, or one module. Alternatively, in other embodiments, the storage controller 110 and the non-volatile memory device 120 may be implemented with one chip, one package, or one module to constitute a storage system such as a memory card, a memory stick, or a solid-state drive (SSD).

[0029] The memory controller 110 may be configured to control the nonvolatile memory device 120. For example, in response to an input / output request (I / OReq) from a host, the memory controller 110 may write data to the nonvolatile memory device 120 or may read data stored in the nonvolatile memory device 120. To access the nonvolatile memory device 120, the memory controller 110 may provide command, address, data, and control signals to the nonvolatile memory device 120.

[0030] Specifically, according to an embodiment, the storage controller 110 may include an unsupervised learning (UL) module 114. The storage controller 110 may sample input / output (I / O) requests provided from the host. The time when sampling is performed is called a "sampling period". During the operation time of the storage device 100, the sampling period is allocated at a given cycle. The time between the sampling periods is called a "sampling cycle". During the sampling period, the storage controller 110 may randomly sample the input / output requests provided from the host. Sampling the input / output request means: selecting a portion of the input / output request and storing characteristic information (such as a logical block address (LBA) and data size) of the selected portion of the input / output request to a reserved memory.

[0031] The unsupervised learning module 114 can identify hot data or cold data by using the sampling results. The unsupervised learning module 114 can classify the sampled LBAs and classify the data of the sampled LBAs into hot data and cold data. The unsupervised learning module 114 clusters the sampled LBAs through unsupervised learning. The unsupervised learning module 114 can analyze the clustering results to generate a hot data table HDT. The hot data table HDT may include the following statistical information about the hot data: LBA range, overwrite ratio (i.e., the ratio of the number of overwrites to the number of writes), input / output count, input / output interval and / or input / output request, etc. In some embodiments, the overwrite count can be used in addition to or instead of the overwrite ratio.

[0032] The storage controller 110 may refer to the hot data table HDT to determine whether a received input / output request is associated with an LBA corresponding to hot data. The hot data table HDT is used to manage address region-based information related to an LBA range, rather than to manage information related to a specific range of LBAs. That is, according to the hot data table HDT, hot data information related to all LBAs supported by the storage device 100 may be provided. The hot data table HDT may provide information capable of determining whether a received input / output request is included in an LBA range of hot data (or referred to as a "hot data LBA range" or a "hot data range"). Therefore, when the hot data table HDT is used, hot data may be identified at high speed for all received LBAs.

[0033] Under the control of the memory controller 110, the nonvolatile memory device 120 may store data received from the memory controller 110 or transmit data stored in the nonvolatile memory device 120 to the memory controller 110. The nonvolatile memory device 120 may include a plurality of memory blocks BLK1 to BLKi. Each of the plurality of memory blocks BLK1 to BLKi may have a three-dimensional memory structure in which word line layers are stacked in a direction perpendicular to a substrate.

[0034] According to an embodiment, the storage device 100 can sample received input / output requests in real time and cluster the sampling results using an unsupervised learning algorithm. The storage device 100 can analyze the (e.g., continuous or random) LBA characteristics of each cluster and generate a hot data table HDT based on the address region. According to the storage device 100, whether a received input / output request is associated with hot data can be determined for all input / output requests by using (i.e., referring to) the hot data table HDT, regardless of the range of the input LBA.

[0035] Figure 2 is a diagram showing a method according to an embodiment of the present invention. Figure 1A block diagram of a configuration of a storage controller of a storage device 100 is shown. Figure 2 , the memory controller 110 includes a processor 111, a working memory 113, a host interface (I / F) 115, an error correction code (ECC) block 117, and a memory interface (I / F) 119. However, it is well understood that the components of the memory controller 110 are not limited to Figure 2 For example, the memory controller 110 may further include a read-only memory (ROM) and / or other components that store code data for an initial boot operation.

[0036] The processor 111 may include a central processing unit (CPU) or a microprocessor. The processor 111 may manage the overall operation of the memory controller 110. The processor 111 is configured to execute firmware for driving the memory controller 110.

[0037] Software (or firmware) or data for controlling the memory controller 110 may be loaded onto the working memory 113. The stored software and data may be executed or processed by the processor 111. In particular, according to some embodiments, at least one firmware that performs a memory management operation may be loaded onto the working memory 113. For example, firmware or software such as a flash translation layer (FTL) may be loaded onto the working memory 113 and may be called or executed by the processor 111. Typically, the flash translation layer (FTL) executed by the processor 111 performs functions such as an address mapping function, a garbage collection function, and / or a wear leveling function.

[0038] In addition, an unsupervised learning module 114 may be loaded into the working memory 113. When the processor 111 executes the unsupervised learning module 114, it may sample input / output requests sent to the storage controller 110. Using the sampling results, the unsupervised learning module 114 classifies the data of the I / O requests into hot data and cold data, and forms a hot data table (HDT). To identify hot data and cold data from the sampling results, the unsupervised learning module 114 may use a heuristic algorithm or an unsupervised learning algorithm. Algorithms such as the K-means algorithm, the Density-Based Spatial Clustering of Applications with Noise (DBSCAN) algorithm, the Gaussian Mixture algorithm, or the Balanced Iterative Reduction and Clustering using Hierarchy (BIRCH) algorithm may be used as unsupervised learning algorithms. The unsupervised learning module 114 may analyze the clustering results and generate a hot data table (HDT). The hot data table (HDT) may include the following statistical information about the hot data: LBA range, overwrite ratio, input / output count, input / output interval, and / or input / output requests. The hot data table (HDT) manages address-region-based information related to LBA ranges, rather than information related to a specific range of LBAs. The storage controller 110 can refer to the HDT to determine whether a received input / output request is associated with an LBA corresponding to hot data. Therefore, using the HDT allows for high-speed identification of hot data for all received LBAs.

[0039] The host interface (I / F) 115 provides an interface between the host and the storage controller 110. The host and the storage controller 110 can be connected through one of various standardized interfaces. Here, the standardized interface includes various interfaces such as an Advanced Technology Attachment (ATA) interface, a Serial ATA (SATA) interface, an external SATA (e-SATA) interface, a Small Computer Small Form Factor Interface (SCSI), a Serial Attached SCSI (SAS), a Peripheral Component Interconnect (PCI) interface, a PCI Express (PCI-E) interface, a Universal Serial Bus (USB) interface, an IEEE 1394 interface, a Universal Flash Storage (UFS) interface or a card interface, etc.

[0040] The ECC block 117 can correct errors in data that is damaged due to various reasons. For example, the ECC block 117 can perform calculations to detect or correct errors in data read from the non-volatile memory device 120. Specifically, the ECC block 117 can detect the number of error bits in the data read from the memory cell in units of word lines or from the bit error rate (BER) of the read data, based on a request from the unsupervised learning module 114.

[0041] The memory interface (I / F) 119 may provide an interface between the memory controller 110 and the non-volatile memory device 120. For example, data processed by the processor 111 may be stored in the non-volatile memory device 120 through the memory interface (I / F) 119. For another example, data stored in the non-volatile memory device 120 may be provided to the processor 111 through the memory interface (I / F) 119.

[0042] The components of storage controller 110 have been described above. According to the functions of storage controller 110, storage controller 110 samples input / output requests provided by the host and generates a hot data table HDT based on an address region. Storage controller 110 can refer to hot data table HDT to determine whether an input / output request received after HDT generation is associated with hot data. Therefore, without limiting the LBA range, storage controller 110 can quickly determine whether a received input / output request is associated with hot data.

[0043] Figure 3 is a block diagram illustrating a nonvolatile memory device according to an embodiment. Figure 3 The nonvolatile memory device 120 may include a memory cell array 121 , a decoder 122 , a page buffer 123 , an input / output (I / O) buffer 124 , and a control logic circuit 125 .

[0044] Memory cell array 121 is connected to decoder 122 via word lines WL and select lines SSL and GSL. Memory cell array 121 is connected to page buffer 123 via bit lines BL. Memory cell array 121 includes a plurality of memory cells BLK1 to BLKi. Each of memory blocks BLK1 to BLKi may include a plurality of NAND cell strings. Data may be written to memory cell array 121 on a page basis. An erase operation may be performed on a memory block basis.

[0045] According to some embodiments, the memory cell array 121 may be implemented as a three-dimensional (3D) memory array. The three-dimensional memory array may be monolithically formed in one or more physical levels of memory cell arrays, each having an active region and circuitry associated with the operation of the memory cell arranged on a silicon substrate.

[0046] In some embodiments, a 3D memory array may include vertical NAND strings oriented vertically such that at least one memory cell is located above another memory cell. At least one memory cell includes a charge trapping layer. Each vertical NAND string may include at least one select transistor located above the memory cell. The at least one select transistor may have the same structure as the memory cell and may be monolithically formed with the memory cell.

[0047] The decoder 122 can select one of the memory blocks BLK1 to BLKi of the memory cell array 121 in response to the address ADD. The decoder 122 can provide a word line voltage corresponding to the operation mode to the word line of the selected memory block. The decoder 122 can provide a selection signal to the select lines SSL and GSL to select the memory block. In a read operation, a read voltage Vrd can be applied to the selected word line of the memory block, and a pass read voltage Vread can be provided to unselected word lines.

[0048] Page buffer 123 can operate as a write driver or a sense amplifier depending on the operating mode. During a program operation, page buffer 123 provides a bit line voltage corresponding to the data to be programmed to the bit lines of memory cell array 121. During a read operation, page buffer 123 senses the data stored in the selected memory cell via the bit line. Page buffer 123 latches the sensed data and outputs the latched data to input / output buffer 124.

[0049] The input / output (I / O) buffer 124 provides write data received in a program operation to the page buffer 123. The input / output (I / O) buffer 124 outputs data provided from the page buffer 123 to the outside in a read operation. The input / output (I / O) buffer 124 may provide a received address or a received command to the control logic circuit 125 or the decoder 122.

[0050] The control logic circuit 125 controls the decoder 122 and the page buffer 123 in response to the command CMD and / or the control signal CTRL. The control logic circuit 125 can control the decoder 122 to generate biases in various schemes according to program commands. In particular, the control logic circuit 125 can output information related to programming results according to a request from the memory controller 110.

[0051] The number of word lines stacked in each of the memory blocks BLK1 to BLKi increases to realize a high-capacity memory device. Also, the number of bits of data to be stored in each memory cell increases. Therefore, in the case of quickly identifying hot data and assigning the identified hot data to the memory block for storing the hot data, the number of page copies that occur in garbage collection can be reduced. According to various exemplary embodiments, due to the unsupervised learning module 114 (refer to Figure 1 ) performs memory management, thereby improving the efficiency of garbage collection and extending the life of the storage device 100.

[0052] Figure 41 is a flowchart illustrating a method in which a memory controller forms a hot data table HDT by using an unsupervised learning algorithm according to an embodiment. Figure 4 The storage controller 110 samples input / output (I / O) requests from the host within a sampling period and can determine an LBA range corresponding to hot data based on the sampling result.

[0053] In operation S110, the storage controller 110 receives an input / output (I / O) request from the host. Upon receiving the I / O request, the storage controller 110 may extract the LBA included in the I / O request. For example, the I / O request may include a write request, a read request, an erase request, etc. The I / O request may include a logical block address (LBA) and a data size (e.g., a sector count).

[0054] In operation S120, the storage controller 110 randomly samples input / output (I / O) requests. The sampling occurs randomly because many resources would be required to sample all received input / output (I / O) requests, and the overhead caused by the calculation would be very large. Therefore, the input / output (I / O) requests are randomly sampled so that the randomly sampled input / output (I / O) requests reflect the characteristics of all input / output (I / O) requests. The sampled input / output (I / O) requests can be regarded as representing the characteristics of all input / output (I / O) requests.

[0055] Sampling refers to obtaining and storing information related to the following items: the LBA or data size corresponding to the current input / output (I / O) request. Here, the input / output (I / O) request can be randomly sampled by using a random number. For example, when the generated random number is an even number, the input / output (I / O) request currently sent from the host can be sampled. In contrast, when the generated random number is an odd number, the sampling of the input / output (I / O) request currently sent from the host can be skipped. However, it can be well understood that random sampling using random numbers is only an example, and there is no particular limitation on the manner in which the input / output (I / O) request is randomly sampled. In other embodiments, different methods of randomly sampling the input / output (I / O) request can be used.

[0056] In operation S130, the storage controller 110 checks whether the number of sampled input / output (I / O) requests is greater than a threshold value TH. That is, the storage controller 110 may determine whether the number of sampled input / output (I / O) requests has reached a value (e.g., TH) that can represent hot data and cold data during a given time period. When it is determined that the number of sampled input / output (I / O) requests is greater than the threshold value TH (S130, Yes), the process proceeds to operation S140. Conversely, when it is determined that the number of sampled input / output (I / O) requests is not greater than the threshold value TH (S130, No), the process proceeds to operation S110 to perform additional sampling of the input / output (I / O) requests.

[0057] In operation S140, the sampled input / output (I / O) requests are clustered. That is, the unsupervised learning module 114 of the storage controller 110 performs clustering by classifying the characteristics of the LBAs or the sampled input / output (I / O) requests. For example, the LBAs included in the input / output (I / O) requests can be clustered. For LBA clustering, the unsupervised learning module 114 can use a heuristic algorithm or an unsupervised learning scheme. Specifically, at least one of the algorithms such as the K-means algorithm, the DBSCAN algorithm, the Gaussian mixture algorithm, or the BIRCH (Balanced Iterative Reduction and Clustering using Hierarchy) algorithm can be used for unsupervised learning.

[0058] In operation S150, the unsupervised learning module 114 analyzes the clustered LBAs. The unsupervised learning module 114 may analyze the data of each clustered LBA and may search for clusters having a strong random trend (i.e., random characteristics) and a relatively large overwrite ratio (i.e., overwrite characteristics). For example, the unsupervised learning module 114 may calculate the following for each LBA cluster: LBA continuity count, LBA overwrite ratio, LBA range (LBA_min, LBA_max), total I / O count, total write size, I / O interval and / or I / O request size statistics (e.g., mean / standard deviation / center value), etc. In addition to the above information, the unsupervised learning module 114 may also extract various characteristic information related to the LBA cluster and may utilize the extracted information in memory management operations.

[0059] For example, to obtain an LBA continuity count for a cluster, the unsupervised learning module 114 may arrange the LBAs of input / output (I / O) requests belonging to the cluster in ascending order of the LBA input time. Based on the arranged LBAs, the unsupervised learning module 114 may calculate whether the value of the sum of the LBA input at time "t" and the requested data size is equal to the value of the LBA at time "t+1." A case where the value corresponding to time "t" is equal to the value of the LBA corresponding to time "t+1" corresponds to LBA continuity, and a case where the value corresponding to time "t" is not equal to the value of the LBA corresponding to time "t+1" corresponds to LBA discontinuity. For a cluster, the number of times LBA continuity is detected corresponds to the LBA continuity count. When the ratio of the LBA continuity count to the total I / O count of the cluster is a reference ratio or greater, the corresponding cluster may be determined to be a sequential cluster. Conversely, when the ratio of the LBA continuity count to the total I / O count of the cluster is less than the reference ratio, the corresponding cluster may be determined to be a random cluster.

[0060] In operation S160, the unsupervised learning module 114 determines a hot data LBA range based on the analysis results performed in operation S150. For example, the unsupervised learning module 114 may determine a cluster as a hot data range if the ratio of the LBA continuity count to the total I / O count of the cluster is less than a reference ratio. Alternatively, the unsupervised learning module 114 may determine a cluster as a hot data range if the ratio of the LBA overwrite ratio of the cluster is higher than a reference value.

[0061] In operation S170, the unsupervised learning module 114 may incorporate the determined hot data range into the hot data table. For example, the unsupervised learning module 114 may newly register the determined hot data range in the hot data table HDT, or may update the hot data table HDT with the determined hot data range. Whether an input / output (I / O) request input after operation S170 corresponds to hot data can be determined using the updated hot data table HDT.

[0062] The memory controller 110 may perform sampling, clustering, and analysis on input / output (I / O) requests within a sampling period and may generate a hot data table HDT based on the analysis result.

[0063] Figure 5 is a block diagram illustrating the characteristics of the unsupervised learning module 114 according to an embodiment. Figure 5 , the unsupervised learning module 114 may include an input / output (I / O) sampler 114 a , an input / output (I / O) analyzer 114 b , a hot data table 114 c , and a table manager 114 d .

[0064] The I / O sampler 114a and the I / O analyzer 114b are activated during a sampling period. During the sampling period, the I / O sampler 114a and the I / O analyzer 114b can analyze the I / O requests and update the hot data table 114c. For all I / O requests sent after the sampling period, the table manager 114d refers to the hot data table 114c to determine whether the received I / O request is associated with hot data. The sampling period is repeated after the sampling period. The hot data table 114c can be updated in units of sampling periods.

[0065] When an I / O request is received, the I / O request may be provided to the I / O sampler 114a and the table manager 114d. First, the I / O sampler 114a randomly samples the I / O request. The I / O sampler 114a may extract the command, LBA, data size, etc. included in the received I / O request. The I / O sampler 114a may perform random sampling by using random numbers or other methods as described above.

[0066] The input / output (I / O) analyzer 114b analyzes the sampled input / output (I / O) requests and determines the LBA range corresponding to the hot data. For example, as described above, the input / output (I / O) analyzer 114b clusters the sampled input / output (I / O) requests based on characteristics such as discontinuity, continuity, and / or overwrite ratio. For LBA clustering, the input / output (I / O) analyzer 114b can use a heuristic algorithm or an unsupervised learning algorithm, such as a K-means algorithm, a DBSCAN algorithm, a Gaussian mixture algorithm, or a BIRCH (Balanced Iterative Reduction and Clustering using Hierarchy) algorithm. The input / output (I / O) analyzer 114b can analyze the clustered LBAs and data and can search for clusters with strong random trends and relatively large overwrite ratios. That is, the input / output (I / O) analyzer 114b can calculate the following for each LBA cluster: LBA continuity count, LBA overwrite ratio, LBA range (LBA_min, LBA_max), total I / O count, total write size, I / O interval and / or I / O request size statistics (e.g., mean / standard deviation / center value), etc.

[0067] The input / output (I / O) analyzer 114b determines a hot data range based on the results of analyzing each cluster. For example, in some embodiments, the input / output (I / O) analyzer 114b may determine the following random cluster as a hot data range: the random cluster is analyzed as having a ratio of an LBA continuity count to a total I / O count of the cluster that is less than a reference ratio. Alternatively, in other embodiments, the input / output (I / O) analyzer 114b may determine a cluster having an LBA overwrite ratio higher than a reference value as a hot data range. The input / output (I / O) analyzer 114b may register the determined hot data range in the hot data table HDT, or may use the determined hot data range to update the hot data table HDT.

[0068] The LBA range corresponding to the hot data is stored in the hot data table 114c. In addition to the LBA range, statistical information of each cluster corresponding to the hot data can also be stored in the hot data table 114c. The hot data table 114c can be updated during the sampling period repeated in each sampling cycle.

[0069] When an input / output (I / O) request is received from the host, the table manager 114d may search the hot data table 114c and determine whether the LBA corresponding to the input / output (I / O) request corresponds to the hot data area. When it is found that the LBA of the input / output (I / O) request is included in the hot data range, the table manager 114d may generate a hot flag and return the hot flag to the storage controller 110. In this case, the storage controller 110 may allocate a memory block for processing the input / output (I / O) request based on the hot flag. For example, the storage controller 110 may allocate input / output (I / O) data determined to be hot data to a first memory block. Conversely, the storage controller 110 may allocate input / output (I / O) data determined not to be hot data (i.e., determined to be cold data) to a second memory block different from the first memory block.

[0070] The exemplary functions and operations of the unsupervised learning module 114 are described above by using a block diagram. In some embodiments, the unsupervised learning module 114 may be provided in the storage controller 110 in the form of firmware or software executed by the processor 111. Alternatively, in some embodiments, the input / output (I / O) sampler 114a, the input / output (I / O) analyzer 114b, the hot data table 114c, and the table manager 114d of the unsupervised learning module 114 may be implemented in the form of a hardware circuit. For example, in some embodiments, the input / output (I / O) sampler 114a, the input / output (I / O) analyzer 114b, the hot data table 114c, and the table manager 114d of the unsupervised learning module 114 may be implemented in the form of intellectual property (or functional blocks).

[0071] Figure 6 is a diagram illustrating a sampling period and a sampling cycle for sampling input / output (I / O) requests by an unsupervised learning module according to an embodiment. Figure 6 The unsupervised learning module 114 can update the thermal data table 114c (refer to Figure 1 ). The sampling period ΔTs is repeated in each sampling cycle ΔTc.

[0072] During a sampling period ΔTs from time T0 to time T1, sampling, clustering, and analysis are performed by the input / output (I / O) sampler 114a and the input / output (I / O) analyzer 114b. During the period ΔTs from time T0 to time T1, the input / output (I / O) sampler 114a randomly samples the input / output (I / O) requests. During the sampling period ΔTs, the input / output (I / O) analyzer 114b clusters and analyzes the input / output (I / O) requests sampled. The input / output (I / O) analyzer 114b determines the hot data LBA range based on the analysis results. The input / output (I / O) analyzer 114b may register the determined hot data range in the hot data table 114c, or may update the hot data table 114c with the determined hot data range.

[0073] From time T1 to time T3, thermal data table 114c identifies whether received I / O requests correspond to thermal data. That is, the first application period based on the updated thermal data table 114c corresponds to the interval from time T1 to time T3. I / O requests received between time T1 and time T2 are not sampled. When sampling period ΔTc elapses from time T0, sampling of I / O requests resumes at time T2.

[0074] During a sampling period ΔTs from time T2 to time T3, sampling, clustering, and analysis are performed by the input / output (I / O) sampler 114a and the input / output (I / O) analyzer 114b. During the period ΔTs from time T2 to time T3, the input / output (I / O) sampler 114a randomly samples the input / output (I / O) requests. During the sampling period ΔTs, the input / output (I / O) analyzer 114b clusters and analyzes the sampled input / output (I / O) requests. The input / output (I / O) analyzer 114b can determine the hot data LBA range based on the analysis results and can update the hot data table 114c.

[0075] The hot data table 114c updated at time T3 identifies whether the input / output (I / O) request received from time T3 to time T5 corresponds to hot data. That is, the second application period based on the updated hot data table 114c corresponds to the interval from time T3 to time T5. The input / output (I / O) request received between time T3 and time T4 is not sampled. When the sampling period ΔTc elapses from time T2, sampling of the input / output (I / O) request resumes at time T4.

[0076] Sampling of input / output (I / O) requests and updating of thermal data table 114c are performed from time T4 to time T5. Thermal data table 114c updated at time T5 identifies whether the input / output (I / O) request received at time T5 corresponds to thermal data. A third application period based on the updated thermal data table 114c begins at time T5.

[0077] Therefore, if Figure 6 As shown, sampling of input / output (I / O) requests is performed randomly during a sampling period ΔTs. The sampling period ΔTs may be repeated every sampling cycle ΔTc.

[0078] Figure 7 is a diagram showing the Figure 6 Graph of input / output requests sampled by the unsupervised learning module in the sampling period T0 to T1 of . Figure 7 , the horizontal axis represents time, and the vertical axis represents LBA. The hot data ranges HDR1 and HDR2 may be detected with reference to 'n' input / output (I / O) requests randomly sampled during a sampling period.

[0079] Assume that during a sampling period T0 to T1, the unsupervised learning module 114 samples "n" input / output (I / O) requests. The input / output (I / O) requests are sampled at sampling times t1, t2, t3, ..., tn, respectively. The unsupervised learning module 114 obtains and stores information related to the following items at each sampling time: the LBA and / or data size corresponding to the input / output (I / O) request. Here, as described above, the sampling times t1, t2, t3, ..., tn can be randomly determined by using random numbers.

[0080] like Figure 7As shown by the line in , the pattern of I / O requests belonging to the LBA range below "150" has a linear characteristic with a given slope over time. In this case, this linear characteristic can mean that the LBAs of the I / O requests continuously increase like streaming data. Therefore, the number of repeated requests for the same LBA is small. In contrast, it can be observed that in the LBA range from "150" to "300", I / O requests for relatively small-sized data are randomly made over time.

[0081] In such Figure 7 When an input / output (I / O) request is detected as shown in the pattern shown, LBA ranges 150 to 300 and 500 to 800 having relatively small LBA continuity counts may be determined as hot data ranges HDR1 and HDR2.

[0082] Figure 8 is a table showing a method for analyzing sampled and clustered input / output (I / O) requests. Figure 8 The unsupervised learning module 114 may analyze the clustered input / output (I / O) requests and determine the LBA range corresponding to the thermal data using the analysis results, and may update the thermal data table 114c with the determined data.

[0083] The unsupervised learning module 114 can analyze input / output (I / O) requests clustered by LBA based on various characteristics. In this case, each of a plurality of clusters classified by LBA range can be analyzed. For each LBA cluster, the unsupervised learning module 114 can calculate the following: LBA range (LBA_min, LBA_max), LBA continuity count, LBA overwrite ratio, average I / O interval, total I / O count, total write size, average I / O interval, and / or I / O request size statistics (e.g., request size mean, request size standard deviation, and / or request size median).

[0084] For example, the unsupervised learning module 114 can calculate characteristic information for the first cluster corresponding to the LBA range of "0" to "149". That is, the unsupervised learning module 114 can calculate the LBA continuity count of the first cluster, and can determine the LBA continuity count as "50". Similarly, the LBA overwrite ratio can be calculated as "0", the average I / O interval can be calculated as "500ms", the total I / O count can be calculated as "5", the total write size can be calculated as "560M" (i.e., 560MB), the request size average (i.e., the average size of write request data) can be calculated as "250M" (i.e., 250MB), and the request size standard deviation (i.e., the standard deviation of write request data) can be calculated as "120" by the unsupervised learning module 114. The calculation and analysis of characteristic information can be performed for each cluster 1, 2, ..., n in a similar manner.

[0085] The unsupervised learning module 114 can analyze the characteristics of each cluster and use the analysis results to determine the hot data range. In addition, the unsupervised learning module 114 can search for a cluster with a strong random trend and a relatively large overwrite ratio based on the analysis results of each cluster, and determine the LBA range corresponding to the cluster as the hot data range. For example, Figure 8 In the example shown, the LBA ranges corresponding to clusters 2 and 4 can be determined as hot data ranges. In some embodiments, the unsupervised learning module 114 can classify clusters classified as hot data into more detailed levels based on the analyzed characteristic information. In addition, in some embodiments, in addition to the analyzed information described above, the unsupervised learning module 114 can also extract various characteristic information related to the LBA clusters and utilize the extracted information in memory management operations.

[0086] The unsupervised learning module 114 may determine the LBA range of the thermal data based on the analysis result, and may update the thermal data table HDT with the determined LBA range of the thermal data.

[0087] Figure 9 is a flow chart illustrating a method of using a thermal data table according to an embodiment. Figure 9 , table manager 114d (refer to Figure 5 ) may refer to the hot data table 114c to determine whether an input / output (I / O) request received from the host corresponds to hot data.

[0088] In operation S210, the table manager 114d receives an input / output (I / O) request from the host. When receiving the input / output (I / O) request, the table manager 114d may selectively receive an LBA included in the input / output (I / O) request.

[0089] In operation S220 , the table manager 114 d may search whether an LBA included in an input / output (I / O) request exists in the hot data table 114 c .

[0090] In operation S230, the table manager 114d may determine whether the LBA included in the input / output (I / O) request is hit or miss based on the search. The table manager 114d performs an operation branch based on whether a hit occurs for the LBA of the input / output (I / O) request. When the LBA included in the input / output (I / O) request exists in the hot data table 114c (S230, Yes), the process proceeds to operation S240. When the LBA included in the input / output (I / O) request does not exist in the hot data table 114c (S230, No), the process proceeds to operation S250.

[0091] In operation S240, the table manager 114d may return "hot" to the storage controller 110. That is, the table manager 114d may inform the storage controller 110 that the data of the I / O request is hot data.

[0092] In operation S250, the table manager 114d may return "cold" to the storage controller 110. That is, the table manager 114d may inform the storage controller 110 that the data of the I / O request is cold data.

[0093] The storage controller 110 receives the hot or cold information returned from the table manager 114d and can allocate memory blocks for processing corresponding input / output (I / O) requests. In this case, data classified as hot data and data classified as cold data can be allocated to different memory blocks, respectively.

[0094] Figure 10 FIG is a diagram showing a thermal data table according to an embodiment. Figure 10 The hot data table HDT may define an LBA range (LBA_min, LBA_max) corresponding to the hot data and a heat intensity of each cluster corresponding to the hot data.

[0095] The unsupervised learning module 114 may determine clusters "2" and "4" corresponding to the hot data ranges, respectively, from among the plurality of clusters, as corresponding to the hot data (refer to Figure 8). In addition, the unsupervised learning module 114 may assign a thermal intensity to each of the clusters "2" and "4" corresponding to the hot data through additional analysis. For example, the unsupervised learning module 114 may determine the thermal intensity with reference to at least one of the following items: LBA continuity count of the I / O request size, LBA overwrite ratio, total I / O count, total write size, average I / O interval, or statistical value (e.g., average / standard deviation / center value) of each of the clusters "2" and "4". A higher level of thermal intensity may be assigned to the following clusters (or LBA ranges) among the clusters (or LBA ranges) each corresponding to the hot data: the overwrite ratio is relatively high, or the LBA continuity count is relatively small.

[0096] Depending on the thermal intensity, different memory blocks can be assigned to clusters designated as hot data. For example, a thermal intensity of "2" can be assigned to the second cluster (Cluster 2) determined to be a hot data area. For example, a thermal intensity of "1" can be assigned to the fourth cluster (Cluster 4) determined to be a hot data area. The data included in the second cluster and the data included in the fourth cluster can be classified as hot data, but can be programmed to different memory blocks.

[0097] The above describes the case where different levels of heat intensity are given to clusters according to the characteristics of hot data. When hot data of different heat intensities are programmed to different memory blocks, the number of page copies that occur during garbage collection operations may be reduced.

[0098] Figure 11 is a flow chart illustrating a method of processing an input / output (I / O) request by using a hot data table according to an embodiment. Figure 10 The example of the thermal data table shown is used to describe Figure 11 . Reference Figures 10 and 11 , table manager 114d (refer to Figure 5 ) Different memory blocks or different stream identifiers SID can be assigned to hot data, the heat intensity of which is at least two or more in number.

[0099] In operation S310, the table manager 114d receives an input / output (I / O) request from the host. Upon receiving the input / output (I / O) request, the table manager 114d may receive an LBA included in the input / output (I / O) request.

[0100] In operation S320, the table manager 114d may search whether the LBA included in the input / output (I / O) request exists in the hot data table 114c. That is, the table manager 114d may refer to the hot data table 114c to determine a hit or miss of the LBA included in the input / output (I / O) request.

[0101] In operation S330, the table manager 114d may determine a hit or miss of the LBA included in the input / output (I / O) request based on the search. If the LBA included in the input / output (I / O) request exists in the hot data table 114c (S330, Yes), the process proceeds to operation S350. If the LBA included in the input / output (I / O) request does not exist in the hot data table 114c (S330, No), the process proceeds to operation S340.

[0102] In operation S340 , the table manager 114 d may return “1” as a stream identifier SID with respect to a currently received input / output (I / O) request.

[0103] In operation S350, the table manager 114d checks the heat intensity specified in the heat data table. Figure 10 In the example of the heat data table shown, when the heat intensity of the currently received input / output (I / O) request is found to be "1", the process proceeds to operation S360. On the contrary, when the heat intensity of the currently received input / output (I / O) request is found to be "2", the process proceeds to operation S370.

[0104] In operation S360, the table manager 114d may return "3" as the flow identifier SID with respect to the currently received input / output (I / O) request. In operation S370, the table manager 114d may return "3" as the flow identifier SID with respect to the currently received input / output (I / O) request.

[0105] In operations S360 and S370, different stream identifiers (SIDs) may be assigned to data corresponding to hot data but having different heat intensities. Assigning different stream identifiers to data means assigning the data to different memory blocks of a storage device in a multi-streaming solution. Therefore, it is understood that data determined to be hot data may also be managed using different solutions based on heat intensity.

[0106] Figure 12 FIG. 1 is a block diagram illustrating a memory system according to another embodiment. Figure 12 In the memory system 200, the host 210 may determine whether an input / output (I / O) request corresponds to hot data before sending the I / O request to the storage device 220. The host 210 may send a stream identifier SID corresponding to the input / output (I / O) request to the storage device 220 according to whether the input / output (I / O) request corresponds to hot data.

[0107] The host 210 may write data in the storage device 220 or may read data stored in the storage device 220. The host 210 generates a command for writing data into the storage device 220 or reading data stored in the storage device 220. The host 210 includes a central processing unit 211, a working memory 213, a storage interface 215, and a system bus 217.

[0108] The central processing unit 211 executes various software (e.g., application programs, operating systems, and device drivers) loaded onto the working memory 213. The central processing unit 211 can execute the operating system OS and application programs. The central processing unit 211 can be implemented using a homogeneous multi-core processor or a heterogeneous multi-core processor.

[0109] The operating system OS to be executed by the central processing unit 211 or data to be processed by the central processing unit 211 is loaded onto the working memory 213. The application program 230, the file system 240, the device driver 250, etc. may be loaded onto the working memory 213. In particular, the device driver 250 that performs an interface connection with the storage device 220 may be loaded onto the working memory 213 and executed. The device driver 250 may perform operations with the storage device 220. Figure 1 The device driver 250 has the same function as the unsupervised learning module 114. That is, the device driver 250 can sample the input / output (I / O) request to be transmitted from the application 230 or the file system 240 to the storage device 220, and can determine whether the input / output (I / O) request corresponds to hot data by using the sampling result. The device driver 250 can cluster the sampled LBAs by using an unsupervised learning algorithm. The device driver 250 can generate a hot data table HDT by using the clustering result. The hot data table HDT may include the following statistical information related to the hot data: LBA range, overwrite ratio, input / output (I / O) count, input / output (I / O) interval and / or input / output (I / O) request, etc. In addition, various software for driving the device of the host 210 can be loaded onto the working memory 213.

[0110] The storage interface 215 provides a physical connection between the host 210 and the storage device 220. That is, the storage interface 215 converts commands, addresses, data, and the like corresponding to various access requests generated from the host 210 into a scheme suitable for interfacing with the storage device 220. The storage interface 215 may include at least one of protocols such as Universal Serial Bus (USB), Small Computer System Interface (SCSI), PCI Express, ATA, Parallel ATA (PATA), Serial ATA (SATA), and / or Serial Attached SCSI (SAS).

[0111] The storage device 220 may include a storage controller 221, a random access memory (RAM) 223, and non-volatile memory devices 224, 225, and 226. The storage device 220 may access the non-volatile memory devices 224, 225, and 226 in response to a command CMD from the host 210, or may perform various requested operations. The storage device 220 may select a memory block to process an input / output (I / O) request provided from the host 210. The storage device 220 may allocate or select a memory block according to a stream identifier SID provided from the host 210. That is, Figure 1 Unlike the storage device 100 of the host, the storage device 220 may allocate a memory block corresponding to a stream identifier SID of the host 210.

[0112] Figure 13 is a diagram showing a method according to an embodiment of the present invention. Figure 12 FIG2 is a block diagram of a software structure of a host computer 210 of a memory system 200. The software structure of the host computer 210 can be executed by a central processing unit 211 of the host computer 210. Figure 13 , the device driver 250 may sample access requests to be transmitted from the application 230 or the file system 240 to the storage device 220 by using unsupervised learning, and may generate a flow identifier SID according to the sampling result.

[0113] The application 230 is provided as a program for managing the storage device 220. For example, the application 230 may be provided as a dedicated program for controlling the storage device 220. The application 230 may include a plurality of application programs APP1, APP2, APP3, and APP4. Each of the plurality of application programs APP1, APP2, APP3, and APP4 may send an input / output (I / O) request of a hot data pattern or a cold data pattern to the file system 240 according to characteristics.

[0114] The file system 240 is defined as a set of abstract data structures used to hierarchically store, search, access, and manipulate data at the operating system (OS) level. Specifically, the file system 240 can convert data accessed and requested by an upper-level program (e.g., the operating system (OS) or application 230) from a file unit into a management unit for the device driver 250. For example, when a write request for a specific file is sent from the application 230, the file system 240 opens the file and sends the write request data to the device driver 250.

[0115] The device driver 250 may be a control module for controlling the storage device 220 at the operating system (OS) level. When a user or a plurality of application programs APP1, APP2, APP3, and APP4 request access to the storage device 220, the device driver 250 is called. The device driver 250 may be implemented using a kernel software module for controlling the storage device 220.

[0116] The device driver 250 may include an unsupervised learning (UL) module 255. The UL module 255 samples requests from the file system 240 and clusters the sampled LBAs using unsupervised learning. The UL module 255 may analyze the clustering results and generate a hot data table (HDT). The HDT may include the following statistical information related to hot data: LBA range, overwrite ratio, input / output (I / O) count, input / output (I / O) interval, and / or input / output (I / O) requests.

[0117] The unsupervised learning module 255 can refer to the hot data table HDT to determine whether the received input / output (I / O) request is associated with the LBA corresponding to hot data. The hot data table HDT is used to manage address area-based information related to the LBA range, rather than information related to a specific range of LBAs. The hot data table HDT can provide information that can determine whether the LBA included in the received input / output (I / O) request is included in the hot data area. Therefore, when the hot data table HDT is used, hot data can be identified at high speed for all received LBAs. In addition, when the device driver 250 of the host 210 identifies hot data or cold data, the device driver 250 of the host 210 can generate a stream identifier SID based on the identification result.

[0118] Here, the unsupervised learning module 255 is described as being included in the device driver 250, but exemplary embodiments are not limited thereto. For example, the unsupervised learning module 255 may be provided in the form of a software module or a hardware function block independent of the device driver 250.

[0119] Figure 14 3 is a block diagram illustrating a memory system according to another embodiment. The memory system 300 may include a host 310 and a storage device 320. The hardware configurations of the host 310 and the storage device 320 may be similar to Figure 12 The hardware configurations of the host 210 and the storage device 220 are shown in FIG, and therefore, repeated description thereof is omitted for the sake of brevity. Figure 14, the host 310 can send data to the storage device 320 in a multi-stream scheme. Specifically, the host 310 can form a hot data table HDT by using an unsupervised learning algorithm, and when generating an input / output (I / O) request, the host 310 can refer to the hot data table HDT to generate a stream identifier SID. This will be described in detail below.

[0120] The host 310 may assign different stream identifiers SIDs indicating hot data and cold data to input / output (I / O) requests using a hot data table HDT, and may send the input / output (I / O) requests to the storage device 320. The device driver 312 of the host 310 may classify data into different streams according to whether the data is hot or cold. The device driver 312 may classify the stream corresponding to the cold data as a first stream Stream_1 and may assign the stream identifier SID_1 to the cold data. Conversely, the device driver 312 may classify the hot data Hot1 that is frequently updated or has a high random tendency as a second stream Stream_2 and may assign the stream identifier SID_2 to the hot data Hot1. In addition, the device driver 312 may classify the hot data Hot2 that has a higher random tendency than the hot data Hot1 or has a higher update frequency than the hot data Hot1 as a third stream Stream_3 and may assign the stream identifier SID_3 to the hot data Hot3.

[0121] The interface circuit 315 transmits the multi-stream data I / O requested from the device driver 312 to the storage device 320 via the data channel. In this case, the stream data may be transmitted randomly. However, each data transmission unit (e.g., packet) may have a stream identifier. Therefore, the storage device 320 can identify the data attributes of each received packet by using the stream identifier SID.

[0122] The storage device 320 includes a storage controller 322 and a non-volatile memory device 324. The storage controller 322 manages multi-stream data in units of streams. For example, the storage controller 322 can select and allocate memory blocks in which to store write data based on stream identifiers. The storage controller 322 can select memory block BLK3 to store data of stream identifier SID_1. Thereafter, upon receiving write data of stream identifier SID_1, the storage controller 322 can centrally program the write data of stream identifier SID_1 into memory block BLK3. Conversely, the storage controller 322 can select memory block BLK9 to store data of stream identifier SID_2. Upon receiving an input / output (I / O) request for write data of stream identifier SID_2, the storage controller 322 can centrally program the write data of stream identifier SID_2 into memory block BLK9. As described above, the storage controller 322 can respond to the input / output (I / O) request for data of stream identifier SID_3.

[0123] According to various embodiments, a storage device capable of identifying hot data with high accuracy without overhead and an operating method thereof may be provided.

[0124] While various exemplary embodiments have been described above, it will be apparent to those skilled in the art that various changes and modifications can be made thereto without departing from the spirit and scope of the present disclosure as set forth in the following claims.

Claims

1. A method comprising: The processor samples a plurality of input / output requests from the host to generate a sampled input / output request; The processor classifies the sampled input / output requests into a plurality of clusters using an unsupervised learning algorithm; analyzing statistical information related to a logical block address (LBA) range, an LBA continuity count, an overwrite ratio, an input / output count, an input / output interval, and an input / output request for each of the plurality of clusters; determining, based on a result of the analyzing, one or more clusters among the plurality of clusters having random characteristics and overwriting characteristics; The processor determines a hot data range based on the one or more clusters; as well as The processor incorporates the determined thermal data range into a thermal data table.

2. The method according to claim 1, wherein The sampling includes storing a logical block address LBA or a data size of each of the sampled input / output requests.

3. The method according to claim 1, wherein The sample input / output request is selected at a random time from among the plurality of input / output requests from the host.

4. The method according to claim 3, wherein: The sampling is performed during only a sampling period in a period in which the plurality of input / output requests are transmitted from the host.

5. The method according to claim 1, wherein The unsupervised learning algorithm includes at least one of a heuristic algorithm, a K-means algorithm, a density-based spatial clustering DBSCAN algorithm with noise, a Gaussian mixture algorithm, or a balanced iterative reduction and clustering BIRCH algorithm using a hierarchy.

6. The method according to claim 1, further comprising: receiving a first input / output request sent from the host; searching in the hot data table whether there is a logic block address corresponding to the first input / output request; as well as Based on the search result, a memory block is selected to store data corresponding to the first input / output request.

7. The method according to claim 6, wherein: The selecting of the memory block is performed by determining a stream identifier to be assigned to data corresponding to the first input / output request.

8. A storage device comprising: a storage controller configured to: sample a plurality of input / output requests sent from a host during a first period to generate sampled data, classify the sampled data into a plurality of clusters using an unsupervised learning algorithm, analyze statistical information related to a logical block address (LBA) range, an LBA continuity count, an overwrite ratio, an input / output count, an input / output interval, and an input / output request of each of the plurality of clusters, determine one or more clusters having random characteristics and overwrite characteristics among the plurality of clusters based on a result of the analysis, determine a hot data range based on the one or more clusters, and incorporate the determined hot data range into a hot data table; and a nonvolatile memory device configured to provide a memory block for storing write request data under the control of the memory controller, The storage controller refers to the hot data table and determines whether the input / output request sent from the host corresponds to hot data during a second period.

9. The storage device according to claim 8, wherein: The hot data range is a logical block address LBA range.

10. The storage device according to claim 9, wherein During the first period, the memory controller samples the plurality of input / output requests at random times to generate the sampled data. The storage device according to claim 8 , wherein: The unsupervised learning algorithm includes at least one of a heuristic algorithm, a K-means algorithm, a DBSCAN algorithm based on density-based spatial clustering with noise applications, a Gaussian mixture algorithm, and a balanced iterative reduction and clustering BIRCH algorithm using hierarchy.

12. The storage device according to claim 8, wherein The storage controller receives the plurality of input / output requests in a multi-stream scheme, and The storage controller assigns flow identifiers to the plurality of input / output requests sent from the host during the second period based on the hot data table.

13. The storage device according to claim 8, wherein: The memory controller classifies thermal intensities of the thermal data into one of a plurality of thermal intensities and allocates different memory blocks to the plurality of thermal intensities, respectively.

14. A memory system comprising: A storage device configured to: receive multiple streams of data and allocate memory blocks based on the streams; as well as A host is configured to: sample a plurality of input / output requests from at least one application during a first period to generate sampled data, classify the sampled data into a plurality of clusters using an unsupervised learning algorithm, analyze statistical information related to a logical block address (LBA) range, an LBA continuity count, an overwrite ratio, an input / output count, an input / output interval, and an input / output request of each of the plurality of clusters, determine one or more clusters having random characteristics and overwrite characteristics among the plurality of clusters based on a result of the analysis, determine a hot data range based on the one or more clusters, incorporate the determined hot data range into a hot data table, and assign a stream identifier to be sent to a storage device during a second period based on the hot data table.

15. The memory system according to claim 14, wherein: The host includes a device driver that executes the unsupervised learning algorithm.

16. The memory system according to claim 14, wherein: The unsupervised learning algorithm includes at least one of a heuristic algorithm, a K-means algorithm, a DBSCAN algorithm based on density-based spatial clustering with noise applications, a Gaussian mixture algorithm, and a balanced iterative reduction and clustering BIRCH algorithm using hierarchy.

17. The memory system according to claim 14, wherein: The host randomly samples the plurality of input / output requests during the first period to generate the sampled data.

Citation Information

Patent Citations

  • Automatic tiering of storage using dynamic grouping

    US10095418B1

  • Selectively storing data into allocations areas using streams

    US20180260154A1