MEMORY SYSTEM AND CONTROL METHOD

By rearranging data within the memory system to match the original writing order, the system enhances cache hit rates and read processing efficiency, addressing the inefficiencies in command execution times for sequential read operations.

JP7618440B2Active Publication Date: 2025-01-21KIOXIA CORP
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2020209603
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2020-12-17
Publication Date
2025-01-21
Estimated Expiration
2040-12-17

AI Technical Summary

Technical Problem

Existing memory systems face challenges in shortening the time required to complete processing commands due to variations in read processing times across channels, leading to decreased efficiency and increased command execution times for sequential read operations.

Method used

The memory system employs a controller that rearranges data read from a first memory area based on log information to match the original writing order, and then writes it back to a second memory area using internal processing, ensuring data is accessed in sequential order during subsequent read commands.

Benefits of technology

This approach improves cache hit rates and read processing efficiency, thereby reducing the time needed to complete sequential read commands.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007618440000001
    Figure 0007618440000001
  • Figure 0007618440000002
    Figure 0007618440000002
  • Figure 0007618440000003
    Figure 0007618440000003
Patent Text Reader

Abstract

To shorten the time lasting from when a command is received to when processing according to the command is completed.SOLUTION: In a memory system, a controller is configured to: write a plurality of pieces of cluster data into a first memory region via a plurality of channels according to a write command on sequential data from a host; identify an order in which the plurality of pieces of cluster data are written, according to log information and generate order information according to the identified order, the order information being information associating cluster identification information with information indicating the write order; read the plurality of pieces of cluster data from the first memory region according to a read instruction on internal processing and rearrange the plurality of pieces of read cluster data according to the order information; and write the plurality of pieces of rearranged cluster data into a second memory region via the plurality of channels according to a write instruction on internal processing.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present embodiment relates to a memory system and a control method. [Background technology]

[0002] In a memory system such as an SSD (Solid State Drive), when a command is received from a host, the memory system performs processing according to the received command. At this time, it is desirable for the memory system to shorten the time from receiving the command to completing the processing according to the command. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] JP 2010-152517 A [Patent Document 2] U.S. Patent No. 9,384,124 [Patent Document 3] U.S. Patent No. 9,898,207 Summary of the Invention [Problem to be solved by the invention]

[0004] An object of one embodiment is to provide a memory system and a control method that can easily reduce the time from receiving a command to completing processing according to the command. [Means for solving the problem]

[0005] According to one embodiment, there is provided a memory system having a controller, a plurality of channels, and a non-volatile memory. The plurality of channels are connected to the controller. The non-volatile memory includes a first memory area and a second memory area. The first memory area and the second memory area are each accessible by the controller via the plurality of channels. In response to a write command for sequential data from a host, the controller writes data of the plurality of clusters to the first memory area via the plurality of channels. The controller identifies an order in which the data of the plurality of clusters was written in response to log information. The controller generates order information in response to the identified order. The order information is information in which cluster identification information and information indicating a write order are associated with each other. The controller reads data of the plurality of clusters in response to a read command for internal processing. Data of several valid clusters of Selectively The controller reads the first memory area. valid The data in the cluster is rearranged according to the order information. The controller sequentially reassigns physical addresses to the reordered valid clusters of data. The controller writes the rearranged clusters of data to the second memory area via multiple channels in response to a write command related to internal processing. In order of remapped physical addresses Write. [Brief description of the drawings]

[0006] [Figure 1] FIG. 1 is a diagram illustrating a configuration of a memory system according to an embodiment. [Diagram 2] FIG. 2 is a diagram showing a logical page in the embodiment. [Diagram 3] FIG. 3 is a diagram showing a plurality of parallel operating elements in the embodiment. [Figure 4] FIG. 4 is a diagram illustrating a physical block according to the embodiment. [Diagram 5] FIG. 5 is a diagram showing the configuration and operation of an internal processing unit in the embodiment. [Figure 6] FIG. 6 is a diagram illustrating a process for generating order information in the embodiment. [Figure 7]FIG. 7 is a diagram showing a process of rearranging data of a plurality of clusters in the embodiment. [Figure 8] FIG. 8 is a flowchart illustrating an example of the operation of the memory system according to the embodiment. [Figure 9] FIG. 9 is a flowchart showing a process of rearranging data of a plurality of clusters in the embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0007] Hereinafter, a memory system according to an embodiment will be described in detail with reference to the accompanying drawings. Note that the present invention is not limited to the embodiment.

[0008] (Embodiment) The memory system according to the embodiment is configured by connecting a nonvolatile memory and a controller via a plurality of channels. The controller can write and read data to and from the nonvolatile memory via the plurality of channels in response to a command from the host. The controller may receive from the host a group of write commands having a relatively long logical address length and a plurality of clusters of data corresponding to the group of write commands. This group of write commands is referred to as a sequential write command. The sequential write command includes a plurality of logical addresses, and the plurality of logical addresses are continuous for a certain length or more. A cluster is a unit of data management by the controller. In response to the sequential write command, the controller assigns a plurality of sequential logical addresses to a plurality of sequential physical addresses. The plurality of sequential physical addresses are used by selecting a plurality of channels in a sequential order. The controller writes the plurality of clusters of data to a plurality of sequential physical addresses in a first memory area in the nonvolatile memory via the plurality of channels. At this time, the memory system generates address conversion information for the first memory area such that a correspondence relationship between "plurality of sequential logical addresses" and "plurality of sequential physical addresses" is established.

[0009] The memory system may also perform internal processing autonomously without being based on a command from the host. The internal processing includes garbage collection, refresh, wear leveling, and the like. When performing internal processing, the memory system may issue a read command for the written data of the plurality of clusters and read the data from the first memory area in the nonvolatile memory via the plurality of channels. At this time, the time required for the read processing is likely to vary among the plurality of channels, and the read data of the plurality of clusters may be received in an order that is swapped from the order in which the data was written. The memory system issues a write command according to the internal processing for the read data of the plurality of clusters while keeping the order swapped, and writes the data to a second memory area different from the first memory area in the nonvolatile memory via the plurality of channels. At this time, the memory system generates address translation information for the second memory area in which the correspondence between the "sequential plurality of logical addresses" and the "sequential plurality of physical addresses" is partially lost.

[0010] For example, the host may subsequently receive a group of read commands with a relatively long logical address length. This group of read commands is referred to as sequential read commands. In this case, the memory system accesses the second memory area using address conversion information in which the correspondence between "sequential logical addresses" and "sequential physical addresses" is partially lost in response to the sequential read command. That is, the memory system accesses the multiple physical addresses in the second memory area via multiple channels in a partially non-sequential order. A cache is provided for each channel in the non-volatile memory. Therefore, if multiple channels are sometimes selected in a partially non-sequential order, the cache hit rate during reading may decrease and the frequency of internal data transfer may increase. Therefore, compared to when the multiple physical addresses in the second memory area are not accessed in a non-sequential order, the efficiency of the read process may decrease and the command execution time until the execution of the sequential read command is completed may be longer.

[0011] Therefore, in this embodiment, in a memory system, data of multiple clusters read from a first memory area by a read command related to an internal process is rearranged in a write order specified according to log information. In a subsequent write command related to an internal process, the data is written back to the second memory area in the rearranged order. This shortens the execution time of subsequent sequential read commands.

[0012] Specifically, the memory system 1 is configured as shown in Fig. 1. Fig. 1 is a diagram showing the configuration of the memory system 1.

[0013] The memory system 1 is connected to a host 100 via a communication medium, and functions as an external storage medium for the host 100. The host 100 includes, for example, a personal computer or a CPU core. The memory system 1 includes, for example, an SSD (Solid State Drive).

[0014] The memory system 1 includes a controller 5, a plurality of channels Ch0 to Ch17, a volatile memory 22, and a nonvolatile memory 7. The controller 5 and the nonvolatile memory 7 are connected via a plurality of channels Ch0 to Ch17. Although a configuration having 18 channels Ch is illustrated in FIG. 1, the number of channels Ch is not limited to 18.

[0015] The controller 5 includes a host interface (host I / F) 11, a central processing unit (CPU) 21, a volatile memory 22, an error correction code (ECC) circuit 23, and a memory interface (memory I / F) 24. The memory I / F 24 and the non-volatile memory 7 are connected via a plurality of channels Ch0 to Ch17.

[0016] In the memory system 1, data is stored in a nonvolatile manner using a nonvolatile memory 7. The nonvolatile memory 7 includes a NAND type flash memory, a three-dimensional structure flash memory, a resistive random access memory (ReRAM), a ferroelectric random access memory (FeRAM), a phase change memory (PCM), a magnetoresistive random access memory (MRAM), etc. FIG. 1 illustrates a case where the nonvolatile memory 7 is a NAND type flash memory.

[0017] A plurality of logical blocks are allocated to the non-volatile memory 7 by the controller 5. Some of the plurality of logical blocks are allocated to a management information storage area 30, and the remaining (most) logical blocks are allocated to a storage area 31. Each logical block includes a plurality of logical pages. The storage area 31 is an area where data requested to be written by the host 100 is stored, and the management information storage area 30 is an area where management information by the controller 5 is stored.

[0018] For example, logical block BL0 includes multiple logical pages PG0 to PG(N-1) (when the logical pages are not particularly distinguished from one another, they will be referred to as PG). N represents any integer equal to or greater than 2. Each logical page PG includes multiple banks that allow bank interleaving. Bank interleaving is possible for two banks BK (BK0, BK1) for each of channels Ch0 to Ch17. Each bank BK includes multiple memory chips CP. Each memory chip CP may include multiple planes that can be accessed in parallel.

[0019] For example, logical page PG0 includes two banks BK0 and BK1 as shown in Fig. 2. Fig. 2 is a diagram illustrating an example of the configuration of logical page PG0, and the configurations of the other logical pages PG1 to PG(N-1) are similar to the configuration of logical page PG0.

[0020] The multiple banks BK0 and BK1 are configured to be capable of parallel operation by bank interleaving. The bank BK0 includes memory chips CP0, CP2, . . . , CP34 (hereinafter referred to as CP0 to CP34). The memory chips CP0 to CP34 in the bank BK0 can be accessed in parallel from the memory I / F 24 via multiple channels Ch0 to Ch17. The bank BK1 includes memory chips CP1, CP3, . . . , CP35 (hereinafter referred to as CP1 to CP35). The memory chips CP1 to CP35 in the bank BK1 can be accessed in parallel from the memory I / F 24 via multiple channels Ch0 to Ch17. Each of the memory chips CP0 to CP35 may include multiple planes Plane0 and Plane1 that can operate in parallel within each of the memory chips CP0 to CP35. Each of the memory chips CP0 to CP35 includes multiple memory cell arrays MAR, and some of these memory cell arrays MAR configure one or multiple physical blocks.

[0021] As shown in FIG. 3, the non-volatile memory 7 is composed of a plurality of channel parallel operation elements 2 (2-0 to 2-17). The plurality of channel parallel operation elements 2-0 to 2-17 and the memory I / F 24 are connected by a plurality of channels Ch0 to Ch17. The plurality of channel parallel operation elements 2-0 to 2-17 correspond to a plurality of channels Ch0 to Ch17. Each channel Ch0 to Ch17 includes a plurality of communication lines connecting the corresponding channel parallel operation element 2 and the memory I / F 24. For example, each channel Ch0 to Ch17 has a control signal line CTR, an I / O signal line IO, chip enable signal lines CE[0][0:1] to

[17] [0:1], and ready / busy signal lines RB[0] to RB

[17] , respectively. Each channel parallel operation element 2-0 to 2-17 constitutes a plurality of banks (two banks BK0 to BK1 in FIG. 2 and FIG. 3), and each bank BK is constituted by a plurality of memory chips CP. Each memory chip CP has a plurality of planes, Plane 0 to Plane 1. Each plane includes a memory cell array MAR and a cache CSH. The cache CSH is electrically connected between the memory cell array MAR and an input / output terminal in the memory chip CP.

[0022] In the channel parallel operation element 2-k (k=0 to 17), the controller 5 controls the banks BK0 to BK1, which share the control signal line CTR and the I / O signal line IO, individually for each bank by two chip enable signal lines CE[k][0:1]. CE[k][0] is the chip enable signal line for bank BK0, and CE[k][1] is the chip enable signal line for bank BK1. Here, the value of CE[k][0] indicates the selection state of bank BK0 (one of CP0 to CP34), and the value of CE[k][1] indicates the selection state of bank BK1 (one of CP1 to CP35). The controller 5 monitors the access state of the banks BK0 to BK1, which share the control signal line CTR and the I / O signal line IO, by using one ready / busy signal line RB[k]. When CE[k][0] becomes active, the value of RB[k] indicates the access state of bank BK0 (CP0 to CP34), and when CE[k][1] becomes active, the value of RB[k] indicates the access state of bank BK1 (CP1 to CP35). Here, the signal RB=Low indicates the busy state, and the signal RB=High indicates the ready state.

[0023] In each memory chip CP, write and read processing is performed in units called physical pages, and erase processing is performed in units called physical blocks, each of which includes multiple physical pages. The controller 5 can perform erase processing collectively in units of logical blocks, each of which includes multiple physical blocks. Each memory chip includes multiple planes (Plane 0, Plane 1 in Figures 2 and 3) as units that can be accessed in parallel. Each plane includes one or more physical blocks. Each physical block includes memory cells at the intersections of multiple word lines and multiple bit lines, as shown in Figure 4. Figure 4 is a diagram showing the configuration of a physical block.

[0024] Each physical block BLK has a plurality of string units SU0 to SU3. The plurality of string units SU0 to SU3 correspond to a plurality of select gate lines SGD0 to SGD3 and share the select gate line SGS. Each of the string units SU0 to SU3 functions as a drive unit in the physical block BLK. Each of the string units SU0 to SU3 is driven by a corresponding select gate line among the plurality of select gate lines SGD0 to SGD3 and the select gate line SGS. Each of the string units SU0 to SU3 includes a plurality of memory strings MST.

[0025] Each memory string MST includes, for example, four memory cell transistors MT (MT0 to MT3) and select transistors SDT and SST. The memory cell transistors MT have a control gate and a charge storage film, and store data in a non-volatile manner. The four memory cell transistors MT (MT0 to MT3) are connected in series between the source of the select transistor SDT and the drain of the select transistor SST. The number of memory cell transistors MT in the memory string MST is not limited to four.

[0026] The bit lines BL0 to BL(p-1) (when not distinguishing between the individual bit lines, they will be referred to as BL) are connected to the memory string MST. When the selection transistor SDT is turned on, the channel region of each memory cell transistor MT in the memory string MST is made conductive to the bit line BL.

[0027] The word lines WL0 to WL3 (when not distinguishing between the word lines, they are indicated by WL) commonly connect the control gates of the memory cell transistors MT between the memory strings MST in each string unit SU in the physical block BLK. That is, the control gates of the memory cell transistors MT in the same row in each string unit SU in the physical block BLK are connected to the same word line WL. That is, the string unit SU of the physical block BLK includes a plurality of cell units CU corresponding to a plurality of word lines WL, and each cell unit CU includes p memory cell transistors MT connected to the same word line WL. When each memory cell transistor MT is configured to be able to hold a 1-bit value (when operating in single level cell (SLC) mode), the p memory cell transistors MT (i.e., the cell units CU) connected to the same word line WL are treated as one physical page, and data write processing and data read processing are performed for each physical page. Note that, although four word lines WL (WL0 to WL3) are illustrated in FIG. 4, the number of word lines WL is not limited to four.

[0028] Each memory cell transistor MT may be configured to be capable of holding a multi-bit value. For example, if each memory cell transistor MT can store a value of n (n≧2) bits, the storage capacity per cell unit CU is equal to the size of n physical pages. In a multi-level cell (MLC) mode in which each memory cell transistor MT stores a 2-bit value, each cell unit CU stores data for two physical pages. In a triple-level cell (TLC) mode in which each memory cell transistor MT stores a 3-bit value, each cell unit CU stores data for three physical pages.

[0029] Returning to FIG. 1, the nonvolatile memory 7 further includes a cache area 32. The cache area 32 is disposed between the storage area 31 and the multiple channels Ch0 to Ch17. The cache area 32 includes multiple caches CM0 to CM17. The multiple caches CM0 to CM17 correspond to the multiple channels Ch0 to Ch17. Each of the caches CM0 to CM17 temporarily stores data exchanged between the controller 5 and the storage area 31 via the corresponding channel Ch. Each cache CM includes a cache CSH electrically connected between the memory cell array MAR and an input / output terminal in the memory chip CP connected via the corresponding channel Ch. For example, the cache CM0 includes the cache CSH of the memory chip CP0 and the cache CSH of the memory chip CP1 (see FIG. 3).

[0030] The controller 5 is configured by, for example, a semiconductor chip (SoC: System on a Chip) such as an LSI (Large-Scale Integrated circuit). The controller 5 controls data transfer between the host 100 and the non-volatile memory 7, etc.

[0031] In the controller 5, when the host I / F 11 receives a write command including a logical address and write data from the host 100, it transfers the write command to the CPU 21. When the host I / F 11 receives a read command including a logical address from the host 100, it transfers the read command to the CPU 21. The CPU 21 has a write controller 21a, a block management unit 21b, an internal processing unit 21c, and a read controller 21d.

[0032] The volatile memory 22 is a volatile semiconductor memory that can be accessed faster than the nonvolatile memory 7, and may be a static random access memory (SRAM) or a dynamic random access memory (DRAM). In FIG. 1, the volatile memory 22 is illustrated as a DRAM.

[0033] The volatile memory 22 has a write buffer 221, a read buffer 222, and an internal processing buffer 223. The write buffer 221 is an area in which write data instructed by a write command from the host 100 is temporarily stored. The read buffer 222 is an area in which data read from the nonvolatile memory 7 by a read command from the host 100 is temporarily stored. The internal processing buffer 223 is a buffer in which data to be the subject of internal processing is temporarily stored when internal processing is executed in the memory system 1. The volatile memory 22 may also store address conversion information (LUT) 224. The address conversion information (LUT) 30b is information in which the correspondence between the logical address and the physical address of the user data stored in the nonvolatile memory 7 is recorded, and is also called a lookup table (LUT). The logical address includes a logical block address (LBA: Logical Block Address). The physical address includes a logical cluster address (MCA: Media Cluster Address) to be described later. The CPU 21 stores the address conversion information (LUT) 224 in the volatile memory 22 in the management information storage area 30 as address conversion information (LUT) 30b at a predetermined timing, and makes the information nonvolatile.

[0034] When the write controller 21a receives a write command and data to be written from the host 100 via the host I / F 11, the write controller 21a performs error correction coding processing on the data using the ECC circuit 23, generates a symbol including a data portion corresponding to the data and an error correction code, and temporarily stores the symbol in the write buffer 221. The write controller 21a assigns the logical address included in the write command to a physical address, and updates the address conversion information (LUT) 224 and the log information (LogCluster) 30a accordingly. The log information 30a is information indicating the history of the write process, and is information in which the correspondence between the logical address and the physical address at the time of writing is recorded. The write controller 21a writes the symbol temporarily stored in the write buffer 221 to the assigned physical address in the non-volatile memory 7 via the memory I / F 24 and the channel Ch. The write controller 21a also stores the updated log information 30a in the management information storage area 30.

[0035] The block management unit 21b manages the number of free blocks, which are logical blocks into which data can be written, the valid data rate within the logical blocks, and the like. When the number of free blocks is insufficient, the block management unit 21b increases the number of free blocks by having the internal processing unit 21c execute garbage collection. Furthermore, when there is an area within a block whose performance has dropped below a predetermined standard, the block management unit 21b rewrites the data of that area to another area within the block or to another block, thereby suppressing the drop in performance. The block management unit 21b instructs the internal processing unit 21c to execute internal processing.

[0036] The internal processing unit 21c controls the operation of each unit involved in the internal processing using the internal processing buffer 223. The internal processing includes garbage collection, refresh, wear leveling, and the like. Garbage collection is a process of arranging unused or used logical pages in a logical block. By performing garbage collection, scattered used logical pages are consolidated into one logical block to secure a free block. Refresh is a process of rewriting data of a worn-out logical block, such as when the bit error rate in the logical block is higher than a predetermined value, to another logical page. By performing refresh, read / write performance is secured. Wear leveling is a process of smoothing the number of writes or erases per block among multiple logical blocks. As one type of wear leveling, refresh may be performed to move valid data between blocks.

[0037] When the read controller 21d receives a read command from the host 100 via the host I / F 11, it refers to the address translation information (LUT) 224 and identifies a physical address (MCA) corresponding to the logical address (LBA) included in the read command. The read controller 21d reads a symbol including a data portion and an error correction code from the identified physical address in the non-volatile memory 7 via the memory I / F 24 and the channel Ch. The read controller 21d performs an error correction decoding process on the data portion using the error correction code included in the read symbol, and temporarily stores the processed data in the read buffer 222 as read data. The read controller 21d returns the read data to the host 100 via the host I / F 11.

[0038] In the memory system 1, the controller 5 performs internal data management in cluster units, and data update from the host 100 is performed in sector units. In FIG. 2, a square having a value of "0" to "287" written therein indicates a cluster. As shown in FIG. 2, a logical page PG is a unit that groups together a plurality of clusters, and a cluster is a unit that groups together a plurality of sectors. A sector is the minimum access unit of data from the host 100. A sector has a size of, for example, 512B, and a cluster has a size of, for example, 4KB. The host 100 can specify data to be accessed by LBA (Logical Block Addressing). The controller 5 can further specify a logical cluster address (MCA: Media Cluster Address) according to the cluster to be accessed within the logical block for the logical block address (LBA) specified by the host 100.

[0039] The controller 5 may receive from the host 100 a group of write commands having a relatively long logical address length and a plurality of clusters of data corresponding to the group of write commands. This group of write commands is called a sequential write command. The sequential write command includes a plurality of logical addresses, and the plurality of logical addresses are continuous for a certain length or more. The controller 5 assigns the plurality of sequential logical addresses to a plurality of sequential physical addresses in response to the sequential write command. The plurality of sequential physical addresses are obtained by selecting a plurality of channels Ch0 to Ch17 in a sequential order. The controller 5 writes the plurality of clusters of data to a plurality of sequential physical addresses in a first memory area in the non-volatile memory 7 via the plurality of channels Ch0 to Ch17.

[0040] For example, as shown in FIG. 2, the controller 5 assigns the logical address included in the sequential write command to a physical address, and updates the address translation information (LUT) 224 accordingly. At the same time, the controller 5 updates the log information (LogCluster) 30a. The controller 5 writes the first 18 cluster data to the plane 0 of the bank BK0 of the logical page PG0 of the logical block BL0 in the nonvolatile memory 7, using multiple channels Ch0 to Ch17 in order. In FIG. 2, the order of writing to each cluster is indicated by the numbers "0" to "17". Similarly, for the "18th" to "287th" cluster data, the controller 5 writes them to the corresponding clusters in the logical page PG0 of the logical block BL0 in the nonvolatile memory 7, using multiple channels Ch0 to Ch17 in order. At the same time, the controller 5 updates the log information 30a. When the write process is completed, the controller 5 stores the updated log information 30a in the management information storage area 30.

[0041] Furthermore, the controller 5 may autonomously perform internal processing without being based on a command from the host 100. At this time, the controller 5 identifies the order in which the data of the multiple clusters was written according to the log information 30a. The controller 5 generates the order information 223e according to the identified order. The order information 223e is information in which the identification information of the clusters is associated with information indicating the writing order (see FIG. 6). The controller 5 reads the data of the multiple clusters from the first memory area in the nonvolatile memory 7 according to a read command related to the internal processing. The controller 5 rearranges the read data of the multiple clusters according to the order information 223e. The controller 5 assigns multiple consecutive logical cluster addresses to the rearranged data of the multiple clusters, and updates the log information 30a accordingly. The controller 5 writes the data of the multiple clusters to the second memory area in the nonvolatile memory 7 via multiple channels Ch0 to Ch17 according to a write command related to the internal processing. When the internal processing is completed, the controller 5 stores the log information 30a in the management information storage area 30.

[0042] 5, the internal processing unit 21c has a valid cluster determination unit 21c1, a read management unit 21c2, a read result sorting unit 21c3, and an MCA allocation unit 21c4. Each component in the internal processing unit 21c is functionally realized by the CPU 21 as firmware is executed by the controller 5. Note that each component in the internal processing unit 21c may be at least partially realized by hardware (circuitry).

[0043] The internal processing unit 21c performs internal processing for a plurality of logical pages for each logical page. When the valid cluster determination unit 21c1 receives a request for internal processing from the block management unit 21b, it accesses the management information storage area 30 of the nonvolatile memory 7 and reads out the log information (LogCluster) 30a. The valid cluster determination unit 21c1 temporarily stores the log information 30a in the internal processing buffer 223 as the log information 223a. As shown in FIG. 6, the log information 30a or 223a is information in which the logical block address (LBA) and the logical cluster address (MCA) are associated with each other and recorded in chronological order. FIG. 6 is a diagram showing a process of generating the sequence information 223e. In the case of FIG. 6, the log information 30a or 223a is information that is newly recorded in the order from the top row to the bottom row. The logical block address (LBA) is a logical address that indicates a logical block specified by the host 100. The logical cluster address (MCA) is a physical address that indicates a physical location where data is recorded in the nonvolatile memory 7. The logical cluster address (MCA) may include a logical block address (MBA: Media Block Address)+a logical page address (MPA: Media Page Address)+a cluster offset (MCO: Media Cluster Offset) within the logical page.

[0044] 6, the address conversion information 30b or 224 is shown next to the log information 30a or 223a. The log information 30a or 223a and the address conversion information 30b or 224 are common in that they are information in which a logical address (for example, a logical block address (LBA) designated by the host) is associated with a physical address (for example, a logical cluster address (MCA) designated by the controller). Also, the log information 30a or 223a indicates the history of the association between the logical address and the physical address at the time of past writing, whereas the address conversion information 30b or 224 is different from each other in that it indicates the association between the latest logical address and the physical address.

[0045] The valid cluster determination unit 21c1 shown in FIG. 5 refers to the log information 30a or 223a and the address conversion information 30b or 224 to determine a valid cluster in the logical page to be processed. That is, the valid cluster determination unit 21c1 reads the log information 30a of the logical page to be processed from the nonvolatile memory 7, and temporarily stores the read log information 30a in the internal processing buffer 223 as the log information 223a. The valid cluster determination unit 21c1 refers to the address conversion information 30b or 224 using the logical block address (LBA) of the log information 223a as a key. The valid cluster determination unit 21c1 compares the logical cluster address (MCA) corresponding to the logical block address (LBA) on the log information 223a with the logical cluster address (MCA) corresponding to the logical block address (LBA) on the address conversion information 224. If the two are the same, the valid cluster determination unit 21c1 determines that the cluster indicated by the logical cluster address (MCA) on the log information 223a is a valid cluster. If the two are different, the valid cluster determination unit 21c1 determines that the cluster indicated by the logical cluster address (MCA) on the log information 223a is an invalid cluster.

[0046] 6, when logical page PG0 of logical block BL0 is the logical page to be processed, the valid cluster determination unit 21c1 refers to the log information 223a and identifies logical cluster addresses "MBA=0x10, MPA=0x2, MCO=0x154" to "MBA=0x10, MPA=0x2, MCO=0x165" corresponding to the logical block addresses 0x00000100 to 0x00000111 corresponding to the logical page PG0. The valid cluster determination unit 21c1 refers to the address conversion information 224 using the logical block addresses 0x00000100 to 0x00000111 corresponding to the logical page PG0 as keys. The valid cluster determination unit 21c1 identifies logical cluster addresses "MBA=0x10, MPA=0x2, MCO=0x154" to "MBA=0x10, MPA=0x3, MCO=0x118" corresponding to each logical block address 0x00000100 to 0x00000111 on the address conversion information 224. The valid cluster determination unit 21c1 compares the logical cluster addresses on the log information 223a with the logical cluster addresses on the address conversion information 224 for each logical block address 0x00000100 to 0x00000111. If the two are the same, the valid cluster determination unit 21c1 determines that the cluster indicated by the logical cluster address (MCA) on the log information 223a is a valid cluster.

[0047] For example, for the logical block address 0x00000100, the logical cluster address "MBA=0x10, MPA=0x2, MCO=0x154" in the log information 223a is the same as the logical cluster address "MBA=0x10, MPA=0x2, MCO=0x154" in the address conversion information 224. Therefore, the valid cluster determination unit 21c1 determines that the cluster indicated by the logical cluster address "MBA=0x10, MPA=0x2, MCO=0x154" is a valid cluster.

[0048] Furthermore, for the logical block address 0x00000102, the logical cluster address "MBA=0x10, MPA=0x2, MCO=0x156" in the log information 223a differs from the logical cluster address "MBA=0x10, MPA=0x3, MCO=0x010" in the address conversion information 224. Therefore, the valid cluster determination unit 21c1 determines that the cluster indicated by the logical cluster address "MBA=0x10, MPA=0x2, MCO=0x156" is an invalid cluster.

[0049] Similarly, the valid cluster determination unit 21c1 determines a cluster indicated by a logical cluster address not hatched with diagonal lines among the logical cluster addresses on the log information 223a in FIG. 6 as a valid cluster, and determines a cluster indicated by a logical cluster address hatched with diagonal lines as an invalid cluster.

[0050] The valid cluster determination unit 21c1 shown in FIG. 5 checks whether the logical cluster address on the log information 223a for each logical block address corresponding to the logical page to be processed is the physical address of a valid cluster or the physical address of an invalid cluster in address order, and generates or sequentially updates the valid cluster pool 223b according to the check result and stores it in the internal processing buffer 223. If the logical cluster address is the physical address of a valid cluster, the valid cluster determination unit 21c1 adds it to the valid cluster pool 223b. If the logical cluster address is the physical address of an invalid cluster, the valid cluster determination unit 21c1 does not add it to the valid cluster pool 223b. As a result, as shown in FIG. 6, the logical cluster addresses of valid clusters are stored in the valid cluster pool 223b in the write order. This write order is the same order as the order in which they were previously written by a sequential write command, and refers to the order in which they should be written in the internal processing. If the valid cluster pool 223b has a FIFO (First In First Out) structure, the logical cluster addresses of valid clusters are stored in the valid cluster pool 223b in the write order from the beginning to the end.

[0051] The read management unit 21c2 shown in Fig. 5 refers to the valid cluster pool 223b, and as shown in Fig. 6, identifies the write order of valid clusters in the logical page to be processed, and generates order information 223e according to the identified write order. The order information 223e is information in which the MCA allocation order 223e1 and the logical cluster identification information 223e2 are associated with each other for a plurality of logical clusters. The MCA allocation order 223e1 is information indicating the order in which new logical cluster addresses (MCAs) should be allocated, for example, information indicating a sequence. The logical cluster identification information 223e2 is information for identifying a plurality of logical clusters from each other, for example, the currently allocated logical cluster address.

[0052] Moreover, the read management unit 21c2 shown in FIG. 5 refers to the valid cluster pool 223b, and issues a read command according to the internal process for the logical page to be processed, in a form including the logical cluster addresses of the valid clusters in order, as shown in FIG. 7. The read management unit 21c2 supplies the issued read command to the non-volatile memory 7 via multiple channels Ch. FIG. 7 is a diagram showing a process of rearranging data of multiple clusters. In response to this, the non-volatile memory 7 executes the read command while using the cache area 32, reads data of multiple clusters from a specified physical location in the storage area 31, and returns the read result to the read management unit 21c2 via multiple channels Ch.

[0053] At this time, the time required for the read process of the data of the multiple clusters in the non-volatile memory 7 is likely to vary, and the read management unit 21c2 may receive the read data of the multiple clusters in a swapped order.

[0054] For example, when the read management unit 21c2 shown in FIG. 5 receives the read result, it restores the data portion, generates the read result 223c as shown in FIG. 7, and stores it in the internal processing buffer 223. In this read result 223c, the order of the logical cluster addresses is swapped compared to the read command. In the case of FIG. 7, for example, the cluster "MBA=0x10, MPA=0x2, MCO=0x154" that was at the top of the read command is the third from the back in the read result 223c. The cluster "MBA=0x10, MPA=0x2, MCO=0x15F" that was second from the back in the read command is the top in the read result 223c.

[0055] For this reason, the read result sorting unit 21c3 shown in Fig. 5 sorts the data of the multiple clusters included in the read result 223c based on the MCA allocation order 223e1 with reference to the order information 223e as shown in Fig. 7. The read result sorting unit 21c3 stores the sorting result 223d in the internal processing buffer 223. Alternatively, the read result sorting unit 21c3 may directly input the sorting result 223d to the MCA allocation unit 21c4.

[0056] The MCA allocation unit 21c4 shown in Fig. 5 sequentially allocates new logical cluster addresses to the data of a plurality of clusters with reference to the rearrangement result 223d as shown in Fig. 7. In the case of Fig. 7, logical cluster addresses "MBA=0x11, MPA=0x1, MCO=0x154" to "MBA=0x11, MPA=0x1, MCO=0x15C" are newly allocated to the clusters of logical cluster addresses "MBA=0x10, MPA=0x2, MCO=0x154" to "MBA=0x10, MPA=0x2, MCO=0x160" in the rearrangement result 223d, respectively.

[0057] 5 issues a write command for the logical page to be processed according to the internal process, as shown in Fig. 7, including the logical cluster addresses of valid clusters in order, and supplies the write command to the nonvolatile memory 7 via multiple channels Ch. In response to this, the nonvolatile memory 7 executes the write command while using the cache area 32, writes data of multiple clusters to specified physical locations in the storage area 31, and returns a completion notification to the MCA allocation unit 21c4.

[0058] That is, data is written to the storage area 31 by the internal process in the same order as the past sequential write command, and is written to multiple sequential physical addresses. As a result, when a sequential read command is subsequently received from the host, the memory system 1 can read data via multiple channels in order from multiple sequential physical addresses in the memory area written by the internal process in response to the sequential read command. This can improve the cache hit rate during reading, and can improve the efficiency of the read process, thereby shortening the command execution time until the execution of the sequential read command is completed.

[0059] The cache hit rate is the probability that data exists in the cache CM. When the nonvolatile memory 7 receives a read command via the channel Ch, it transfers data from the memory cell array MAR to the cache CM (cache CSH). When the read command is a sequential read command, if the data exists in the cache CM, the process of transferring the data from the memory cell array MAR to the cache CM can be omitted, thereby improving the efficiency of the read process.

[0060] Next, the operation of the memory system 1 will be described with reference to Fig. 8. Fig. 8 is a flowchart showing the operation of the memory system 1.

[0061] In the controller 5 of the memory system 1, the valid cluster determination unit 21c1 determines valid clusters on the nonvolatile memory 7 and stores the valid cluster information in the valid cluster information pool 223b (S1). The read management unit 21c2 extracts valid cluster information from the valid cluster information pool 223b, and generates order information 223e by adding the MCA allocation order 223e1. The read management unit 21c2 also supplies a read command according to the valid cluster information to the nonvolatile memory 7 (S2). The read result sorting unit 21c3 sorts the read results 223e in an order according to the MCA allocation order 223e1, generates sorted results 223d, and supplies the sorted results 223d to the MCA allocation unit 21c4 (S3).

[0062] For example, in S3, the following process is performed as shown in FIG. 9. FIG. 9 is a flowchart showing a process of rearranging a plurality of cluster data. When the read result rearrangement unit 21c3 receives one cluster's worth of read results from the non-volatile memory 7 (S31), it stores the read result 223c in the internal processing buffer 223 (S32). If the cluster in the current MCA allocation order is not in the internal processing buffer 223 (No in S33), the read result rearrangement unit 21c3 returns the process to S31. If the cluster in the current MCA allocation order is in the buffer (Yes in S33), the read result rearrangement unit 21c3 supplies the cluster in the MCA allocation order to the MCA allocation unit 21c4 (S34). The read result rearrangement unit 21c3 increments the MCA allocation order and proceeds to the next (S35). If the read result sorting unit 21c3 has not checked the MCA allocation order 223e1 of the order information 223e to the end (No in S36), the process returns to S31. If the read result sorting unit 21c3 has checked the MCA allocation order to the end (Yes in S36), the process ends.

[0063] When S3 is completed, the MCA allocation unit 21c4 allocates logical cluster addresses (MCAs) in the write order according to the rearrangement result 223d, and supplies a write command to the non-volatile memory 7 (S4).

[0064] As described above, in the memory system 1 of this embodiment, the controller 5 reads out a plurality of clusters of data from a memory area in the non-volatile memory 7 to which data has been written by a sequential write command in response to a read command related to internal processing. The controller 5 rearranges the read out plurality of clusters of data in a write order specified according to the log information. The controller 5 writes the rearranged plurality of clusters of data back to another memory area in the non-volatile memory 7 in response to a write command related to internal processing. This allows the writing of data by internal processing to the non-volatile memory 7 to be performed in a plurality of sequential physical addresses in the same order as the past sequential write command. As a result, when a sequential read command is subsequently received from the host, the memory system 1 can read out data via a plurality of channels in order from a plurality of sequential physical addresses in the memory area to which data has been written by internal processing in response to the sequential read command. This can improve the cache hit rate during reading and improve the efficiency of the read processing, thereby shortening the command execution time until the execution of the sequential read command is completed.

[0065] In the embodiment, the case where the process of rearranging the data of multiple clusters is performed in units of one logical page is illustrated, but the process of rearranging the data of multiple clusters may be performed in units of multiple logical pages. In this case, if a write command including multiple cluster data is issued in the rearranged order, the data can be written to the non-volatile memory 7 by the internal process in the same order as the previous sequential write command.

[0066] In addition, when a read command for internal processing is executed, multiple cluster data are returned in a different order from the order specified by the read command as a read result from the non-volatile memory 7. In response to this, it is difficult to adopt a method of directly copying the data of the logical block that is the subject of internal processing. This is because the defective parts and error correction coding rate may differ between the source logical block and the destination logical block, making it difficult to transfer the data appropriately.

[0067] Although some embodiments of the present invention have been described, these embodiments are presented as examples and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, substitutions, and modifications can be made without departing from the spirit of the invention. These embodiments and their modifications are included in the scope and spirit of the invention, and are included in the scope of the invention and its equivalents described in the claims. [Explanation of symbols]

[0068] 1 memory system, 5 controller, 7 non-volatile memory, channels Ch0~Ch17.

Claims

1. A controller; a plurality of channels connected to the controller; a non-volatile memory including a first memory area and a second memory area each accessible by the controller via the plurality of channels; Equipped with the controller writes data of a plurality of clusters to the first memory area via the plurality of channels in response to a write command for sequential data from a host, identifies an order in which the data of the plurality of clusters was written in response to log information, generates order information in which cluster identification information and information indicating a write order are associated in response to the identified order, selectively reads data of a plurality of valid clusters from the first memory area in response to a read command for internal processing, rearranges the data of the plurality of valid clusters read out in response to the order information, sequentially reassigns physical addresses to the rearranged data of the plurality of valid clusters, and writes the rearranged data of the plurality of clusters to the second memory area via the plurality of channels in the order of the rearranged physical addresses in response to a write command for the internal processing. Memory system.

2. The controller reads the data of the plurality of clusters from the second memory area via the plurality of channels in response to a read command for the sequential data from the host.

2. The memory system of claim 1.

3. The controller writes in parallel to a plurality of areas in the first memory area via the plurality of channels, writes in parallel to a plurality of areas in the second memory area via the plurality of channels, and reads in parallel from a plurality of areas in the second memory area via the plurality of channels.

3. The memory system of claim 2.

4. The controller assigns a plurality of logical cluster addresses to the plurality of clusters when writing data of the plurality of clusters to the first memory area, records the plurality of logical cluster addresses in the log information in an order in which the data is written, specifies an order in which the data of the plurality of clusters is written according to an order of the plurality of logical cluster addresses recorded in the log information, and assigns a plurality of logical cluster addresses to the rearranged data of the plurality of clusters when writing the rearranged data of the plurality of clusters to the second memory area.

4. The memory system according to claim 1.

5. the first memory area includes a plurality of areas allocated to a plurality of logical pages; The controller generates the sequence information for each of the logical pages, reads data for each of the logical pages from the first memory area in response to the read command, and rearranges the data for each of the logical pages in response to the sequence information.

5. The memory system according to claim 1.

6. 1. A memory system having a non-volatile memory including a first memory area and a second memory area each accessible via a plurality of channels, comprising: writing a plurality of clusters of data to the first memory area via the plurality of channels in response to a write command for sequential data from a host; Identifying an order in which data of the plurality of clusters was written according to log information; generating sequence information in which cluster identification information and information indicating a writing sequence are associated with each other according to the specified sequence; selectively reading out from the first memory area data of a plurality of valid clusters among the data of the plurality of clusters in response to a read command related to an internal process; rearrange the read data of the valid clusters in accordance with the order information; sequentially reassigning physical addresses to the rearranged valid clusters of data; writing the rearranged cluster data to the second memory area in the order of the rearranged physical addresses via the channels in response to a write command related to the internal processing; A control method comprising:

Citation Information

Patent Citations

  • Nonvolatile semiconductor memory drive device and address management method for the same

    JP2010152517A

  • Memory management device and memory management method

    JP2011154547A

  • Memory system

    JP2011197788A

  • Data storage device and data readout method

    JP2012027649A

  • Memory controller, nonvolatile memory system provided with memory controller, and method for controlling nonvolatile memory

    JP2012037971A