KR101544309B1 - Method and apparatus for controlling non-volatile memory based on stream - Google Patents

Method and apparatus for controlling non-volatile memory based on stream Download PDF

Info

Publication number
KR101544309B1
KR101544309B1 KR1020140022316A KR20140022316A KR101544309B1 KR 101544309 B1 KR101544309 B1 KR 101544309B1 KR 1020140022316 A KR1020140022316 A KR 1020140022316A KR 20140022316 A KR20140022316 A KR 20140022316A KR 101544309 B1 KR101544309 B1 KR 101544309B1
Authority
KR
South Korea
Prior art keywords
data sets
stream
volatile memory
data
pages
Prior art date
Application number
KR1020140022316A
Other languages
Korean (ko)
Inventor
강수용
원유집
차재혁
윤성로
최종무
정영진
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020140022316A priority Critical patent/KR101544309B1/en
Application granted granted Critical
Publication of KR101544309B1 publication Critical patent/KR101544309B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Abstract

Provided are a method and an apparatus for controlling a non-volatile memory using a stream. The method is configured to detect at least one data set satisfying a predetermined condition among data sets indicated by received writing requests as a stream, determine a page of the non-volatile memory in which a data set of a detected stream is to be written, and write the data set of the detected stream in the determined page, thereby reducing a load of a garbage collection in the non-volatile memory when the data sets written in the non-volatile memory are removed.

Description

TECHNICAL FIELD [0001] The present invention relates to a stream-based non-volatile memory control method and apparatus,

The following description relates to a method of controlling a non-volatile memory, and more particularly to a method of controlling a non-volatile memory based on a stream detected from data sets written to the non-volatile memory.

Flash memory based storage devices are used in a variety of electronic devices, including embedded systems, smart phones and laptops. In particular, recently, the use range of a flash memory based storage device has been extended to an enterprise environment including a server. As the range of use of flash memory based storage devices expands, the demand for large capacity and high performance flash memory is also increasing.

Flash memory based storage devices may include memory controllers and flash modules (flash chips or dies).

Writing of data to the flash memory may be performed only on a page-by-page basis, and erasing of data written to the flash memory may be performed only on a block-by-block basis. Therefore, in order to erase the data written to the flash memory, first, other valid pages belonging to the same block as the page on which data to be erased is written are copied to another block, and then data to be erased is written Blocks should be erased.

However, copying of repeated pages and erasing of blocks may increase the load of the flash memory and may shorten the life of the flash memory.

Therefore, there is a need for a method that can reduce the load on the nonvolatile memory when the data written to the nonvolatile memory such as the flash memory is erased, while increasing the access parallelism to the data written to the nonvolatile memory.

Korean Patent Laid-Open No. 10-2012-0074707 (filed on Jul. 06, 2012) includes a step of judging a writing pattern of data, a block mapping method of forming a mapping unit into blocks of a predetermined size, Selecting at least one mapped method among a page mapping constituting a mapping unit to a page of a size and a range mapping constituting a mapping unit with the size of the data, allocating a page for the data corresponding to the write pattern, A method for managing address mapping and data page allocation of a flash memory including a flash memory is disclosed.

One embodiment includes a method for detecting at least one set of data that meets a predetermined condition in the data sets as a stream and determining the blocks of the non-volatile memory and the page of the block in which the data set of the detected stream is to be written, Device can be provided.

One embodiment detects at least one data set of data sets as a stream based on the causal relationship of updates between data sets, and determines whether the data set of the detected stream corresponds to the blocks of non-volatile memory to be written, Can be provided.

In one aspect, there is provided a method comprising: receiving one or more write requests for one or more sets of data, performed by an electronic device comprising a non-volatile memory; receiving at least one data set Determining one or more pages of the non-volatile memory and the one or more pages of the block into which the at least one data set of the detected stream is to be written, And writing the data set of the non-volatile memory.

The at least one data set of the stream may be written to a separate page for each data set.

The non-volatile memory control method may further include setting a predetermined stream size.

The detected stream may include a greater number of data sets than the predetermined scream size.

The predetermined stream size may be set based on the size of the block of the non-volatile memory.

The predetermined stream size may be set adaptively based on the workload of the electronic device.

The stream may be a collection of correlated data sets with properties that are updated together.

The step of detecting the at least one data set as a stream may comprise identifying a logical page number (LPN) of at least one logical page to which each of the write requests is directed.

The step of detecting the at least one data set as a stream may include determining data sets for consecutive logical pages indicated by the write requests as a stream based on the identified LPN.

Wherein determining the at least one data set as the stream comprises determining data sets for the contiguous logical pages as a stream if the number of data sets for the contiguous logical pages exceeds a predetermined stream size .

Wherein detecting the at least one data set as a stream comprises:

And identifying logical pages in which update histories within a predetermined time of the logical pages indicated by the write requests exist.

The step of determining the at least one data set as the stream may include determining data sets for the identified logical pages as a stream.

The detecting the at least one data set as a stream may include identifying data sets that are related to each other among the data sets based on a causal relationship of updates between the data sets.

The detecting the at least one data set as a stream may comprise determining the identified associated data sets as a stream.

Wherein identifying the interrelated data sets may identify first data sets belonging to a first one of the data sets as the interrelated data sets.

The identifying the mutually related data sets may identify the second set of data belonging to a plurality of files associated with each other among the data sets as the mutually related data sets.

Wherein detecting the at least one data set as a stream includes receiving at least one of the received times of one or more other write requests received that indicate different data sets for the first logical pages and at least one of the received write requests And determining a causal relationship of the predetermined update based on the one.

Wherein identifying the interrelated data sets may identify the data sets pointed to by at least one write request having a causal relationship of the determined ones of the write requests as interrelated data sets.

In another aspect, there is provided a computer program product for receiving one or more write requests for a non-volatile memory and one or more data sets comprising one or more blocks, and for receiving at least one data set satisfying a predetermined condition among the data sets as a stream Determining at least one block of the blocks and the one or more pages of the at least one block in which the at least one data set of the detected stream is to be written and writing the data sets to the determined pages , An electronic device is provided.

At least one data set that satisfies a predetermined condition among the data sets is detected as a stream and the data sets of the detected stream are written to the same block of the nonvolatile memory so that nonvolatile A method and apparatus are provided to reduce the load of garbage collection of memory.

By writing the data sets associated with each other among the data sets as a stream in the same block of the nonvolatile memory, it is possible to reduce the number of pages to be copied and the number of erased blocks in erasing of the associated data sets written in the nonvolatile memory, A method and apparatus are provided that can improve the lifetime of the memory.

1 shows an electronic device according to an embodiment.
2 shows a method of operation of an electronic device according to an embodiment.
Figure 3 illustrates a method of writing data sets to a non-volatile memory of an electronic device.
4 illustrates a method for updating or erasing data sets written to a non-volatile memory of an electronic device.
5 shows a method of controlling a non-volatile memory of an electronic device according to an embodiment.
6 illustrates a method of detecting at least one data set as a stream based on a logical page number (LPN) of a logical page represented by each of write requests according to an example.
7 shows a method for detecting at least one data set as a stream based on the update history of logical pages indicated by write requests according to an example.
Figure 8 illustrates a method for detecting at least one data set as a stream based on the causal relationship of updates between data sets according to an example.
9 illustrates a method of writing data sets to a non-volatile memory of an electronic device according to an example.
10 illustrates a method for updating or erasing data sets written to a non-volatile memory of an electronic device according to an example.
11 illustrates a method for detecting a stream from data sets according to an example.

In the following, embodiments will be described in detail with reference to the accompanying drawings. Like reference symbols in the drawings denote like elements.

1 shows an electronic device according to an embodiment.

The electronic device 100 may include a controller 110 and a non-volatile memory 120.

The control unit 110 may be a device that manages the nonvolatile memory 120. In addition, the control unit 110 can manage other components of the electronic device 100, which are not shown. The control unit 110 may execute a program for managing the nonvolatile memory 120 used by the electronic device 100 and may perform operations necessary for executing the program and processing the data for managing the nonvolatile memory 120 Lt; / RTI > For example, the control unit 110 may be a memory controller of the nonvolatile memory 120. [

The control unit 110 may receive a write request for one or more data sets from the host 130. The control unit 110 may write the data set indicated by the write request into the nonvolatile memory 120 based on the write request from the host 130. [ The control unit 110 may also receive a read request or an erase request for the data set written to the nonvolatile memory 120 from the host 130 and may read the data set The nonvolatile memory 120 can be controlled by reading or erasing the nonvolatile memory 120. [

Nonvolatile The memory 120 may include, for example, a flash memory, a NAND flash memory, an embedded Multi-Media Card (eMMC), or a solid state drive (SSD).

Non-volatile memory 120 may include one or more blocks. Each block of non-volatile memory 120 may include one or more pages. The control unit 110 may write each of the data sets indicated by the write request from the host 130 to a page of the nonvolatile memory 120. [ That is to say, the control unit 110 can assign each of the data sets indicated by the write request to pages of the nonvolatile memory 120. [

The control unit 110 can write the data set on a page basis to the nonvolatile memory 120 and erase the data sets written to the nonvolatile memory 120 on a block basis. The data set may be data written to the nonvolatile memory 120 on a page basis. The size of each data set may be less than the size of the page.

The control unit 110 can detect at least one data set satisfying a predetermined condition among the data sets as a stream by analyzing the data sets indicated by the write request and / or write request from the host 130. [ The control unit 110 can determine pages of blocks and blocks of the nonvolatile memory 120 to which the data set belonging to the detected stream is to be written. Volatile memory 120 in which the data set is to be written such that the load of the garbage collection of the non-volatile memory 120 at the time of erasing the data sets written in the non-volatile memory 120 is minimized, ) And the page of the block.

The operation method of the electronic device 100 will be described in more detail with reference to FIG. 2 to be described later.

The control unit 110 detects at least one data set satisfying a predetermined condition among the data sets as a stream and determines a block and a block page of the nonvolatile memory 120 to which a data set belonging to the detected stream is to be written Will be described in more detail with reference to Figs. 5 to 11 to be described later.

2 shows a method of operation of an electronic device according to an embodiment.

As described above with reference to FIG. 1, the controller 110 may write a set of data pointed to by a write request from the host 130 to a page of a block of the non-volatile memory 120.

A write request from the host 130 may indicate one or more data sets. The size of each data set may be less than or equal to the size of the page of non-volatile memory 120. [ For example, one data set may be written to one page of non-volatile memory 120.

Non-volatile memory 120 may be a flash memory based non-volatile memory as shown. The non-volatile memory 120 may include a plurality of channels, and each channel may include one or more flash modules. For example, the plurality of flash modules of the non-volatile memory 120 may share one bus, and the plurality of flash modules may provide the controller 110 with parallel access in a pipelined fashion (multiple ways) rescue). Alternatively, the plurality of flash modules of the non-volatile memory 120 may use a plurality of buses, and the plurality of flash modules may provide the controller 110 with parallel access of interleaving type (multi-channel structure). Alternatively, the structure of the non-volatile memory 120 may be a structure in which a multi-channel structure and a multi-way structure are mixed.

The illustrated non-volatile memory 120 may include n-1 channels, and each channel may include m-1 flash modules. n and m may be an integer of 2 or more. Each flash module may be a flash memory chip or a die.

The flash module 210 may include one or more blocks. For example, as shown, the flash module 210 may include four blocks. Block 220 may include one or more pages. The page 230 of block 220 may be a physical page of the non-volatile memory 120.

The control unit 110 may include a host interface unit, a write buffer, a stream detector, and a Flash Translation Layer (FTL) unit. The host interface unit may receive write requests for data sets from the host 130 and the write buffer may temporarily store the data sets indicated by the received write requests before writing them to the non-volatile memory 120. [ The stream detector may detect as a stream at least one data set that meets a predetermined condition among the data sets indicated by the write requests. The FTL unit may be a hardware configuration item such as a chip that performs the function of the FTL. The FTL unit may map each of the logical pages of the non-volatile memory 120 to each of the physical pages of the non-volatile memory 120. For example, the FTL unit may allocate a data set for the logical page of the non-volatile memory 120 indicated by the write request from the host to the physical page of the non-volatile memory 120. [

The FTL unit may assign each of the data sets pointed to by the write requests to each page of the non-volatile memory 120. For example, the FTL unit may be configured to provide a stream detected by the stream detector such that the load of the garbage collection of the non-volatile memory 120 is minimal and / or the access parallelism between the flash modules of the non-volatile memory 120 is maximized To each page of the non-volatile memory 120. < RTI ID = 0.0 >

The control unit 110 detects at least one data set satisfying a predetermined condition among the data sets as a stream and determines a block and a block page of the nonvolatile memory 120 to which a data set belonging to the detected stream is to be written Will be described in more detail with reference to Figs. 5 to 11 to be described later.

The technical contents described above with reference to FIG. 1 can be applied as it is, so a detailed description will be omitted below.

In FIGS. 3, 4, 9 and 10, which will be described later, the non-volatile memory 120 includes four flash modules, each flash module including four blocks, each block including four pages Although shown, the number of flash modules, blocks, and pages that the non-volatile memory 120 includes may be different from that shown. Further, each of the flash modules 1 to 4 to be described later may belong to the same or different channels.

Figure 3 illustrates a method of writing data sets to a non-volatile memory of an electronic device.

The control unit 110 may include a write buffer 310 and an FTL unit 320. Each of the write buffer 310 and the FTL unit 320 may correspond to the write buffer and FTL unit described above with reference to FIG.

The write buffer 310 may store the data sets D1 through D39. The data sets D1 through D39 may be data sets pointed to by one or more write requests from the host 130. For example, the control unit 110 may receive four write requests from the host 130, the first write request may point to the data sets D1 and D2, and the second write request may indicate the data sets D7 To D15, a third write request may indicate data sets D37 to D39, and a fourth write request may indicate data sets D22 to D27.

The data sets pointed to by the same write request may have a causality of update. For example, the data sets pointed to by the same write request may be updated simultaneously or within a predetermined time.

The FTL unit 320 may assign each of the data sets D1 to D39 to each page of the flash module 1 to the flash module 4. [ For example, the FTL unit 320 may allocate each of the data sets D1 to D39 to each page of the flash module 1 to the flash module 4 in a round-robin manner.

That is to say, each of the data sets D1 to D39 can be sequentially allocated so that the access parallelism between the flash modules 1 to 4 from the page of the block 0 of the flash module 1 is maximized. For example, as shown, data sets D1, D9, D13, and D38 may be assigned to block 0 of flash module 1, and D24 may be assigned to block 1 of flash module 1.

If the data sets D1 to D39 are written to the non-volatile memory 120 as shown, the data sets indicated by the same write request are written to the non-volatile memory 120 The load of garbage collection may be increased at the time of updating or erasing the data sets.

The manner in which the data sets D1 to D39 written to the nonvolatile memory 120 are updated or erased will be described in more detail with reference to FIG. 4 to be described later.

The technical contents described with reference to FIG. 1 and FIG. 2 may be applied as they are, so a detailed description will be omitted below.

4 illustrates a method for updating or erasing data sets written to a non-volatile memory of an electronic device.

The data sets written to the non-volatile memory 120 may be erased only on a block-by-block basis, as described above with reference to FIG. 3, and the data sets written to the non-volatile memory 120 indicated by the same write request, Lt; / RTI > of time.

FIG. 4 shows the state of the electronic device 100 when the data sets D7 through D15 indicated by the second write request described above with reference to FIG. 3 are updated or erased simultaneously.

If a request to update or erase data sets D7 to D15 from host 130 is received and update or erase is performed on data sets D7 to D15, data sets D7 to D15 The written pages may be invalidated. The invalid pages can be retrieved by performing the garbage collection of the FTL unit 320. [ For execution of the garbage collection, the valid pages to which the data sets D1, D38, D2, D39, D22, D37 and D23 have been written can be copied to other pages, (Blocks 0 through 4 of FIG. 1) may be erased. That is to say, the erasing of the data sets D7 to D15 may require the copying of seven pages and the erasure of four blocks. The load of the non-volatile memory 120 may be proportional to the number of pages to be copied and the number of blocks to be erased.

In one embodiment, the control unit 110 may detect at least one data set that satisfies a predetermined condition among the data sets D1 to D39 as a stream, and the data set belonging to the detected stream may be non-volatile A block of memory 120 and a page of a block may be determined. The control unit 110 can reduce the number of pages requiring copying and / or the number of blocks required to be erased in erasing by writing data sets belonging to the same stream in the same block based on the detected stream.

The method by which the control unit 110 detects a stream from the data sets D1 to D39 and writes the data sets belonging to the stream to the pages of the nonvolatile memory 120 will be described with reference to FIGS. 5 to 11 Will be described in more detail.

The technical contents described with reference to Figs. 1 to 3 can be applied as it is, and a detailed description will be omitted below.

5 shows a method of controlling a non-volatile memory of an electronic device according to an embodiment.

5, the control unit 110 of the electronic device 100 described above with reference to Figs. 1 to 4 detects the data sets indicated by the write requests from the host 130 as a stream, and the data sets belonging to each stream are written A method of determining the pages of the non-volatile memory 120 is illustrated.

At step 510, the control unit 110 may receive one or more write requests for one or more data sets from the host 130. [ The data sets indicated by the received write requests may be temporarily stored in the write buffer 310 of the control unit 110. [ One write request may indicate one or more data sets. Each of the data sets may be one in which the data indicated by the write request is divided into page units. Each size of the data sets may be less than or equal to the size of the page, and each data set may be written to each page of the non-volatile memory 120.

In step 515, the control unit 110 may set a predetermined stream size. The stream may be a collection of associated data sets that may be detected from the data sets pointed to by the write requests from the host 130. For example, a stream may be a collection of correlated data sets with properties that can be updated together. Alternatively, data sets belonging to the same stream may be updated or deleted simultaneously or within a predetermined time.

The stream size may be set based on the size of the block of non-volatile memory 120. For example, the stream size may be less than or equal to the number of pages the block of non-volatile memory 120 contains.

Alternatively, the stream size may be set adaptively based on the workload of the electronic device 100. The smaller the stream size, the greater the false detection rate of stream detection upon stream detection, and the workload of electronic device 100 may also increase. For example, the control unit 110 can identify the workload of the electronic device 100, and if the identified workload is equal to or greater than a predetermined threshold, the stream size can be set to a predetermined value or more.

In step 520, the control unit 110 may detect as a stream at least one data set that satisfies a predetermined condition among the data sets indicated by the write requests from the host 130. The predetermined condition for detecting the stream may be determined based on the association between the logical pages indicated by the write requests and / or the data sets indicated by the write requests.

The control unit 110 may detect as a stream data sets that are related to one another among the data sets indicated by the write requests from the host 130. [ The data sets pointed to by one write request may be related to each other. For example, data sets D1 and D2, data sets D7 through D15, data sets D37 through D39, and data sets D22 and D27 may be data sets associated with each other. For example, the control unit 110 may detect a plurality of data sets among the data sets indicated by the same write request as a stream.

Alternatively, the controller 110 may analyze the data sets indicated by the write requests and / or write requests from the host 130 and determine the logical pages indicated by the write request, the logical page number of the logical pages. LPNs, and the causal relationship of updates between data sets.

The manner in which the control unit 110 detects at least one data set as a stream will be described in more detail with reference to FIGS. 6 to 11 to be described later.

The detected stream may include a number of data sets equal to or greater than a predetermined scream size set at step 515. [

In step 530, the controller 110 may determine one or more pages of one or more blocks and blocks of the non-volatile memory 120 to which at least one data set of the detected stream is to be written.

The controller 110 may determine pages of blocks and blocks so that the number of blocks in which at least one data set belonging to the detected stream among the data sets is stored is minimum. For example, the control unit 110 may determine pages of blocks and blocks such that data sets belonging to the detected stream are written to pages of the same block.

In step 540, the control unit 110 may write at least one data set of the detected stream to the pages determined in step 530. [ For example, at least one data set of the detected stream may be written to a separate page for each data set. That is to say, the control unit 110 can write each of the data sets belonging to the detected stream to each of the determined pages.

Each of the data sets pointed out by the write requests from the host 130 that do not belong to the detected stream can be written to each of the pages of the blocks of the non-volatile memory 120 in a round-robin manner.

In other words, the control unit 110 controls the non-volatile memory 120 so that the access parallelism between the flash modules of the non-volatile memory 120 is maximized while minimizing the load of garbage collection at the time of erasing the data sets written to the non-volatile memory 120 120, < / RTI >

The technical contents described above with reference to Figs. 1 to 4 can be applied as they are, so that a more detailed description will be omitted below.

6 illustrates a method of detecting at least one data set as a stream based on a logical page number of a logical page represented by each of write requests according to an example.

Step 520 described above with reference to FIG. 5 may include steps 610 and 620 described below.

In step 610, the controller 110 may identify the LPN of the at least one logical page to which each of the write requests from the host 130 is directed.

In step 620, the controller 110 may determine data sets for consecutive logical pages indicated by write requests from the host 130 based on the identified LPN as the same stream. That is to say, the control unit 110 can identify logical pages having logical LPNs among the logical pages indicated by the write requests from the host 130, and can store data for the identified logical pages among the data sets indicated by the write requests Sets may be determined as the same stream.

The data sets for the contiguous logical pages may be interrelated data sets and may be likely to be updated simultaneously or within a predetermined time period by locality.

The controller 110 may determine the data sets for consecutive logical pages as a stream if the number of data sets for consecutive logical pages exceeds a predetermined stream size. The predetermined stream size may be set by performing the step 515 described above with reference to FIG.

The technical contents described above with reference to Figs. 1 to 5 may be applied as they are, so that a more detailed description will be omitted below.

7 shows a method for detecting at least one data set as a stream based on the update history of logical pages indicated by write requests according to an example.

Step 520 described above with reference to FIG. 5 may include steps 710 and 720 described below.

In step 710, the controller 110 may identify logical pages in which update histories within a predetermined time of the logical pages indicated by the write requests from the host 130 exist. For example, the control unit 110 may identify LPNs of logical pages within a predetermined time of the logical pages indicated by the write requests or at the same time, in which update history is updated.

Alternatively, the controller 110 may identify logical pages whose update frequency within a predetermined time is equal to or greater than a predetermined value among logical pages indicated by write requests from the host 130.

In step 720, the control unit 110 may determine the data sets for the logical pages identified in step 710 as a stream. That is to say, the control unit 110 can determine, as a stream, data sets for logical pages that are likely to be re-updated in terms of temporal locality. A logical page in which an update history within a predetermined time exists may be a logical page highly likely to be updated again. The determined stream may be a hot_stream.

The technical contents described above with reference to Figs. 1 to 6 can be applied as they are, so that a more detailed description will be omitted below.

Figure 8 illustrates a method for detecting at least one data set as a stream based on the causal relationship of updates between data sets according to an example.

Step 520 described above with reference to FIG. 5 may include steps 805 through 820 described below.

In step 805, the controller 110 may determine the causal relationship of the updates between the data sets to which the write requests from the host 130 are directed. The control unit 110 can determine the causal relationship of the updates between the data sets by analyzing the data sets indicated by the write requests and write requests from the host 130. [

Alternatively, the controller 110 may determine that the received time of one or more other write requests, which indicate different sets of data for the logical pages of the non-volatile memory 120, and at least one of the other write requests, The causal relationship of the predetermined update can be determined based on the fact that the update is causal.

In step 810, the controller 110 may identify data sets that are related to each other among the data sets based on the causal relationship of updates between the data sets pointed to by the write requests from the host 130. [ The control unit 110 can identify data sets in which there is a causal update of the data sets. For example, data sets belonging to the same file may have a causal relationship of updates between data sets. That is to say, the control unit 110 can identify the first data sets belonging to the first one of the data sets as mutually related data sets. Alternatively, the control unit 110 may identify the second set of data belonging to a plurality of mutually related files among the data sets as mutually related data sets. For example, a plurality of files constituting the same program or a plurality of files in the case where user data and metadata are stored in separate files may be associated with each other.

Alternatively, the control unit 110 may identify the data sets indicated by the at least one write request having a causal relationship of the update determined in step 805 among the write requests as mutually related data sets. For example, the control unit 110 indicates the logical pages indicated by the causal relationship of the determined update, and refers to the data sets indicated by the write requests received in a predetermined time and / or in a predetermined order indicated by the causal relationship of the determined updates, As shown in FIG.

Alternatively, the control unit 110 may be configured to select, as a node, each of the LPNs of the logical pages indicated by the other write requests received from the host 130, The data sets for the logical pages corresponding to the LPNs that are nodes of the graph among the logical pages indicated by the write requests can be identified as interrelated data sets.

In step 820, the control unit 110 may determine the associated data sets identified in step 810 as a stream.

In steps 530 and 540 described above with reference to Figure 5, the controller 110 may determine the pages of the non-volatile memory 120 to which the data sets pertaining to the determined stream are to be written, Lt; / RTI >

The technical contents described with reference to Figs. 1 to 7 can be applied as they are, so that a more detailed description will be omitted below.

9 illustrates a method of writing data sets to a non-volatile memory of an electronic device according to an example.

5, data sets D1 and D2, data sets D7 through D15, data sets D37 through D39, and data sets D22 and D27, .

The control unit 110 can detect the data sets D7 to D10 as the first stream, the data sets D11 to D14 as the second stream, and the data sets D22 to D25 as the third stream . At this time, the stream size may be set based on the size of the block of the nonvolatile memory 120, and the set stream size may be 4.

The control unit 110 can write data sets belonging to the same stream in the same block. For example, as shown, the data sets D7 through D10 of the first stream correspond to block 0 of flash module 1, the data sets D11 through D14 of the second stream correspond to block 0 of flash module 2, The data sets D22 to D25 of the stream may be written to block 0 of the flash module 3. [ Data sets that do not belong to the stream may be written to pages of the non-volatile memory 120 in a round-robin manner.

Compared to the method described above with reference to Fig. 3, which writes all data sets D1 to D39 in pages in a round-robin manner, the depicted method is similar to the method described above with reference to Fig. 3, It is possible to maintain the parallelism between accesses.

If sufficient data sets can not be stored because the size of the write buffer 310 is small, the streams may not be detected because the data sets can not be sufficiently analyzed. At this time, the controller 110 may write the data sets stored in the write buffer 310 to the pages of the nonvolatile memory 120 in a round-robin manner.

The technical contents described with reference to Figs. 1 to 8 can be applied as they are, so that a more detailed description will be omitted below.

10 illustrates a method for updating or erasing data sets written to a non-volatile memory of an electronic device according to an example.

FIG. 10 shows the state of the electronic device 100 when the data sets D7 through D15 described above with reference to FIG. 9 are updated or canceled simultaneously.

If a request to update or erase data sets D7 to D15 from host 130 is received and update or erase is performed on data sets D7 to D15, data sets D7 to D15 The written pages may be invalidated. The invalid pages can be retrieved by performing the garbage collection of the FTL unit 320. [ For execution of the garbage collection, the valid pages into which the data sets D1, D2, and D37 are written can be copied to other pages, and the blocks including the invalid pages (flash modules 1, 2 and 4 ) May be erased. That is to say, the erasing of the data sets D7 to D15 may require the copying of three pages and the erasure of three blocks.

Compared to the method described above with reference to Fig. 4, which erases the data sets D7 to D15, in the illustrated method the number of pages required to be copied can be reduced from 7 to 3, Can be reduced from 4 to 3.

That is to say, the illustrated method can reduce the load on the non-volatile memory 120 compared to the method described above with reference to FIG. 4, while maintaining the approach parallelism between flash modules at the same level as the method described above with reference to FIG. have.

The technical contents described with reference to FIGS. 1 to 9 can be applied as they are, so that a more detailed description will be omitted below.

11 illustrates a method for detecting a stream from data sets according to an example.

In Fig. 10, a method of detecting the stream described above with reference to Figs. 5 to 8 performed by the control unit 110 is shown. The pseudo code shown shows how to detect a stream from the data sets pointed to by write requests from the host 130.

5, the controller 110 can set the stream size (Stream_size), and the number of consecutive LPNs among the LPNs of the logical pages indicated by the write requests from the host 130 is smaller than the set stream size , It is possible to detect the data sets for the continuous LPNs as a stream.

Alternatively, the control unit 110 may detect data sets for logical pages updated within a predetermined time (time_threshold) among the logical pages indicated by the write requests from the host 130 as hot_streams.

Alternatively, the control unit 110 may detect, as a stream, data sets for logical pages with causality of updates among the logical pages indicated by the write requests.

The technical contents described above with reference to Figs. 1 to 10 can be applied as they are, so that a detailed description will be omitted below.

The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable array (FPA) A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

  While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

100: Electronic device
110:
120: Nonvolatile memory
310: write buffer
320: FTL part

Claims (15)

A non-volatile memory storage device,
Receiving one or more write requests for one or more data sets;
Detecting as a stream at least one data set indicated by the write request among the data sets;
Determining one or more blocks of the non-volatile memory and one or more pages of the blocks into which the at least one data set of the detected stream is to be written; And
Writing the at least one data set to the determined pages
Volatile memory.
The method according to claim 1,
Wherein the at least one data set of the stream is written to a separate page for each data set.
The method according to claim 1,
Setting a predetermined stream size
Further comprising:
Wherein the detected stream comprises a number of data sets equal to or greater than the predetermined scrim size.
The method of claim 3,
Wherein the predetermined stream size is set based on a size of a block of the non-volatile memory.
The method of claim 3,
Wherein the predetermined stream size is set adaptively based on a workload of the non-volatile memory storage device.
The method according to claim 1,
Wherein the stream is a collection of correlated data sets having characteristics that are updated together.
The method according to claim 1,
Wherein detecting the at least one data set as a stream comprises:
Identifying a logical page number (LPN) of at least one logical page pointed to by each of the write requests; And
Determining data sets for consecutive logical pages indicated by the write requests as a stream based on the identified LPN
Volatile memory.
8. The method of claim 7,
The step of determining as the stream
And determines the data sets for the contiguous logical pages as a stream if the number of data sets for the contiguous logical pages exceeds a predetermined stream size.
The method according to claim 1,
Wherein detecting the at least one data set as a stream comprises:
Identifying logical pages in which there is an update history within a predetermined time of the logical pages indicated by the write requests; And
Determining data sets for the identified logical pages as a stream
Volatile memory.
The method according to claim 1,
Wherein detecting the at least one data set as a stream comprises:
Identifying data sets associated with each other of the data sets based on a causal relationship of the updates between the data sets; And
Determining the identified associated data sets as a stream
Volatile memory.
11. The method of claim 10,
Wherein identifying the interrelated data sets identifies first data sets belonging to a first one of the data sets as the interrelated data sets.
11. The method of claim 10,
Wherein identifying the interrelated data sets identifies, as the interrelated data sets, second data sets belonging to a plurality of files associated with each other among the data sets.
11. The method of claim 10,
Wherein detecting the at least one data set as a stream comprises:
Determining a causal relationship of a given update based on at least one of a received time of one or more other write requests received that indicate different data sets for the first logical pages and a received order of each of the other write requests step
Lt; / RTI >
Wherein identifying the interrelated data sets identifies, as interrelated data sets, data sets pointed to by at least one write request having a causal relationship of the determined ones of the write requests.
A computer-readable recording medium containing a program for performing the method according to any one of claims 1 to 13. A non-volatile memory including one or more blocks; And
The method comprising: receiving one or more write requests for one or more data sets, detecting as a stream a set of at least one of the data sets indicated by the write request, and wherein the at least one data set of the detected stream is to be written Determine at least one block of the blocks and one or more pages of the at least one block, and write the data sets to the determined pages.
KR1020140022316A 2014-02-26 2014-02-26 Method and apparatus for controlling non-volatile memory based on stream KR101544309B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140022316A KR101544309B1 (en) 2014-02-26 2014-02-26 Method and apparatus for controlling non-volatile memory based on stream

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140022316A KR101544309B1 (en) 2014-02-26 2014-02-26 Method and apparatus for controlling non-volatile memory based on stream

Publications (1)

Publication Number Publication Date
KR101544309B1 true KR101544309B1 (en) 2015-08-12

Family

ID=54060989

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140022316A KR101544309B1 (en) 2014-02-26 2014-02-26 Method and apparatus for controlling non-volatile memory based on stream

Country Status (1)

Country Link
KR (1) KR101544309B1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180052465A (en) * 2016-11-10 2018-05-18 삼성전자주식회사 Solid state drive device and storage system having the same
KR20180119473A (en) * 2017-04-25 2018-11-02 삼성전자주식회사 Methods for multi-stream garbage collection
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10698808B2 (en) 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US10824576B2 (en) 2015-07-13 2020-11-03 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US11907568B2 (en) 2020-10-14 2024-02-20 Samsung Electronics Co., Ltd. Storage controller, storage device, and operation method of storage device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196447A (en) 2004-01-07 2005-07-21 Toshiba Corp Memory control device and memory card using it

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005196447A (en) 2004-01-07 2005-07-21 Toshiba Corp Memory control device and memory card using it

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392297B2 (en) 2015-07-13 2022-07-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10824576B2 (en) 2015-07-13 2020-11-03 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US10739995B2 (en) 2016-10-26 2020-08-11 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US11048411B2 (en) 2016-10-26 2021-06-29 Samsung Electronics Co., Ltd. Method of consolidating data streams for multi-stream enabled SSDs
KR102610537B1 (en) * 2016-11-10 2023-12-06 삼성전자주식회사 Solid state drive device and storage system having the same
KR20180052465A (en) * 2016-11-10 2018-05-18 삼성전자주식회사 Solid state drive device and storage system having the same
US10698808B2 (en) 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US11194710B2 (en) 2017-04-25 2021-12-07 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
KR102252724B1 (en) 2017-04-25 2021-05-17 삼성전자주식회사 Methods for multi-stream garbage collection
US11630767B2 (en) 2017-04-25 2023-04-18 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
KR20180119473A (en) * 2017-04-25 2018-11-02 삼성전자주식회사 Methods for multi-stream garbage collection
US11907568B2 (en) 2020-10-14 2024-02-20 Samsung Electronics Co., Ltd. Storage controller, storage device, and operation method of storage device

Similar Documents

Publication Publication Date Title
KR101544309B1 (en) Method and apparatus for controlling non-volatile memory based on stream
CN111742291B (en) Method and system for user space storage I/O stack with user space flash translation layer
CN106354745B (en) Method for providing an interface of a computer device and computer device
US10732905B2 (en) Automatic I/O stream selection for storage devices
US9569351B2 (en) Storing corresponding data units in a common storage unit
US9122585B2 (en) Method for managing data in storage device and memory system employing such a method
KR101390134B1 (en) Handling dynamic and static data for a system having non-volatile memory
US11237742B2 (en) Apparatus and method for controlling data stored in memory system
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
KR102387935B1 (en) A data storage device including nonexclusive and exclusive memory region
US20170075614A1 (en) Memory system and host apparatus
US20140281158A1 (en) File differentiation based on data block identification
US11301173B2 (en) Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
CN110928807A (en) Apparatus and method for checking valid data in a memory system
CN113138939A (en) Memory system for garbage collection and method of operating the same
US8984251B2 (en) Hinting of deleted data from host to storage device
US9600209B2 (en) Flash storage devices and methods for organizing address mapping tables in flash storage devices
US20190042405A1 (en) Storing data based on writing frequency in data storage systems
KR20130081526A (en) Storage device, electronic device having the same, and data management methods thereof
CN110088722B (en) System and method for location detection in memory devices
US20200326874A1 (en) Storage device and control method thereof
KR20200014175A (en) Apparatus and method for performing garbage collection to predicting required time
Kwon et al. Data pattern aware FTL for SLC+ MLC hybrid SSD
KR101834082B1 (en) Apparatus and method of managing multi solid state disk system
KR20160065644A (en) Memory controller, system including the same, and method thereof

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 5