Embodiments described herein relate generally to a memory system.
A NAND flash memory is known in which memory cells are three-dimensionally arranged.
In general, according to one embodiment, a memory system includes: a memory including a first memory chip and a second memory chip; and a controller controlling the memory. Each of the first and second memory chips includes: string units including NAND strings, wherein memory cell transistors including a charge storage layer and a control gate are connected in series in the NAND strings; and blocks including the string units. The memory holds information for the first and second memory chips indicating a partial bad block including a bad string unit, and indicating which one of string units is the bad string unit in the partial bad block.
A memory system according to a first embodiment will be described.
1.1 Configuration of Memory System
1.1.1 Entire Configuration of Memory System
First, the configuration of the memory system according to the present embodiment will be described with reference to
A memory system 100 is connected with a host apparatus (referred to as a host below) 200 via a host interface (I/F) 140, and functions as an external memory device of the host 200. The host 200 is, for example, a personal computer, a mobile telephone or an imaging device. Further, the memory system 100 is a memory card such as an SD™ card or an SSD (solid state drive).
As illustrated in
The host I/F 140 is a communication interface such as SATA (Serial Advanced Technology Attachment) or SAS (Serial Attached SCSI), and connects the memory system 100 and the host 200. The host I/F 140 receives commands such as a read command and a write command from the host 200.
The data buffer 130 temporarily stores data to be transferred to and from the host 200 and data to be transferred to and from the memory 110. Further, the data buffer 130 includes a first memory region 131, a second memory region 132 and a third memory region 133, and these regions hold information for managing the memory 110. This management information will be described in detail later. The data buffer 130 is a general-purpose memory such as an SRAM (Static Random Access Memory) or a DRAM (Dynamic Random Access Memory).
The memory 110 holds data given from the host 200 or data for managing the memory system 100. The memory 110 includes a plurality of memory chips (memory chips 0 to N where N is a natural number equal to or more than 1 in
The controller 120 controls the memory 110. The function of the controller 120 may be realized by a processor which executes firmware stored in a ROM (Read Only Memory) or the like included in the memory 110 or the controller 120, or by hardware. The controller 120 reads data from the memory 110 and writes data in the memory 110 according to a command from the host 200.
As illustrated in
The encoder 125 encodes data held in the data buffer 130, and generates a code word including data and a redundant portion (parity). Any method may be adopted for an encoding method. For example, RS (Reed Solomon) encoding, BCH (Bose Chaudhuri Hocquenghem) encoding, and LDPC (Low Density Parity Check Code) encoding can be used. The decoder 126 obtains the code word read from the memory 110, from the memory I/F 128, and decodes the obtained code word. The decoder 126 notifies the read-controller 122 of a read error when error correction fails in decoding.
The memory I/F 128 is a controller which controls the memory 110. The memory I/F 128 writes in the memory 110 the code word input from the encoder 125 under control of the write-controller 123 or the like. Further, the memory I/F 128 reads the code word from the memory 110 under control the read-controller 122 or the like, and transfers the code word to the decoder 126. Furthermore, the memory I/F 128 erases data in the memory 110 under control of the erase-controller 124 or the like.
The memory I/F 128 and each memory chip 111 are connected by a bus which complies with a NAND interface. Signals to be transmitted and received on this bus include a chip enable signal/CE, an address latch enable signal ALE, a command latch enable signal CLE, a write enable signal/WE, a read enable signal/RE and an input/output signal I/O. The signal/CE is a signal for enabling the memory chip 111. The signal ALE is a signal for notifying the memory chip 111 that an input signal is an address. The signal CLE is a signal for notifying the memory chip 111 that an input signal is a command. The signal/WE is a signal for causing the memory chip 111 to take in an input signal. The signal/RE is a signal for causing the controller 120 to take in an output signal. The input/output signal I/O is a signal such as a net command, address and data.
The data manager 121 manages at which position of the memory 110 data is stored. The data manager 121 holds an address conversion table 129 which associates a logical address given from the host 200 and a physical position (physical address) on the memory 110. Further, the data manager 121 performs garbage collection according to a use status of blocks (described later) included in the memory 110. In the embodiment, the address conversion table 129 is stored in the data manager 121, but the address conversion table 129 may be stored in the DRAM or SRAM (not shown) in the controller 122. Further, or may be stored in the memory 110. The region for storing the address conversion table 129 is not ristricted
The read-controller 122 executes processing of reading data from the memory 110 according to a command notified from the host 200. More specifically, the read-controller 122 obtains a physical position on the memory 110 corresponding to the physical address of read data, from the data manager 121, and notifies the memory I/F 128 of the physical position. The read data is transmitted to the host 200 through the decoder 126, the data buffer 130 or the like.
The write-controller 123 executes processing of writing data in the memory 110 according to a command notified from the host 200. More specifically, the write-controller 123 obtains a physical position on the memory 110 at which data needs to be written, from the data manager 121, and outputs the physical position and the code word output from the encoder 125, to the memory I/F 128.
The erase-controller 124 also executes processing of erasing data in the memory 110 likewise according to a command notified from the host 200.
1.1.2 Configuration of Memory Chip 111
Next, the configuration of the memory chip 111 will be described.
As illustrated in
The core 10 includes a plurality of planes PN (two planes PN0 and PN1 in this example). The plane PN includes a memory cell which stores data, and is a unit which writes data in the memory cell and reads data from the memory cell. The planes PN0 and PN1 can independently operate (single-plane operation), and can operate in parallel (simultaneously) (multi-plane operation). Each plane PN includes a memory cell array 11, a row decoder 12 and a sense amplifier 13.
The memory cell array 11 includes a plurality of blocks BLK (BLK0, BLK1, BLK2 and . . . ) which is a set of a plurality of non-volatile memory cells associated with word lines and bit lines, respectively. Each block BLK includes a plurality of string chunks SC (SC0 to SC3) which is a set of NAND strings 14 in which memory cells are connected in series. Naturally, the number of blocks BLK and the number of string chunks SC in one block BLK are arbitrary.
The row decoder 12 decodes a block address or a page address, and selects one of word lines of the corresponding block BLK. Further, the row decoder 12 applies an adequate voltage to the selected word line and non-selected word lines.
The sense amplifier 13 senses data read from a memory cell to a bit line in reading of data. Further, the sense amplifier 13 transfers write data to the memory cell in writing of data. Data is read from and written in the memory cell array 11 in units of a plurality of memory cells which are page units.
The row decoder 12 and the sense amplifier 13 read data from the memory cells and write data in the memory cells.
The logic circuit 20 includes a sequencer 21, a command register 22, an address register 23 and a status register 24.
The command register 22 temporarily holds a command received from the controller 120. The address register 23 temporarily holds an address received from the controller 120, and transfers the address to the row decoder 12 and the sense amplifier 13 of the plane PN0 or PN1. The status register 24 holds various pieces of status information of the memory chip 111.
The sequencer 21 controls the entire operation of the memory chip 111 based on information of each of the registers 22 to 24. That is, the sequencer 21 controls an operation of writing, reading and erasing data in the planes PN0 and/or PN1.
1.1.3 Configuration of Block BLK
Next, the configuration of the block BLK included in the memory cell array 11 will be described with reference to
As described above, one block BLK includes, for example, the four string chunks SC, and each string chunk SC includes a plurality of NAND strings 14.
Each NAND string 14 includes, for example, eight memory cell transistors MT (MT0 to MT7) and selection transistors ST1 and ST2. The memory cell transistor MT includes a control gate and a charge storage layer, and holds data in a non-volatile manner. Further, the memory cell transistor MT is connected in series between a source of the selection transistor ST1 and a drain of the selection transistor ST2.
Gates of the selection transistors ST1 of the string chunks SC0 to SC3 are connected to selection gate lines SGD0 to SGD3, respectively. The gates of the selection transistor ST2 are connected to, for example, a common selection gate line SGS (or may be connected to different selection gate lines SGS0 to SGS3). Further, control gates of the memory cell transistors MT0 to MT7 in the same block BLK are commonly connected to word lines WL0 to WL7, respectively.
Furthermore, the drains of the selection transistors ST1 of the NAND strings 14 in the same row in the memory cell array 11 are commonly connected to bit lines BL (BL0 to BL(L-1) where (L-1) is a natural number equal to or more than one). That is, the bit lines BL commonly connect the NAND strings 14 between a plurality of blocks BLK. Further, the sources of a plurality of selected transistors ST2 are commonly connected to a source line SL.
That is, the string chunk SC is a set of the NAND strings 14 which are connected to different bit lines BL and to one selection gate line SGD. Further, the block BLK is a set of a plurality of string chunks SC which are commonly connected to a word line WL. Furthermore, the memory cell array 11 is a set of a plurality of blocks BLK which commonly connect the bit lines BL.
Data in each plane PN is collectively written and read in and from the memory cell transistor MT connected to one of the word lines WL of one of the string chunks SC. This unit is referred to as a “page”.
Further, data can be erased in block BLK units or smaller units than the block BLK units. For example, U.S. patent application Ser. No. 13/235,389 filed on Sep. 18, 2011 entitled “NONVOLATILE SEMICONDUCTOR MEMORY DEVICE” discloses an erasing method. Further, U.S. patent application Ser. No. 12/694,690 filed on Jan. 27, 2010 entitled “NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE” also discloses an erasing method. Furthermore, U.S. patent application Ser. No. 13/483,610 filed on May 30, 2012 entitled “NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF” also discloses an erasing method. These patent applications are entirely incorporated herein by reference.
Further, memory holes 36 which penetrate these interconnect layers 35, 33 and 37 and reach the well region 30 are formed. In a lateral surface of the memory hole 36, a block insulation film 38, a charge storage layer 39 (insulation film) and a gate insulation film 40 are sequentially formed, and a conductive film 41 is buried in the memory hole 36. The conductive film 41 functions a current path of the NAND string 14, and is a region in which a channel is formed when the memory cell transistor MT and the selection transistors ST1 and ST2 operate.
In each NAND string 14, a plurality of (four in this example) interconnect layers 37 are commonly connected electrically and connected to the same selection gate line SGS. That is, these four interconnect layers 37 function as a gate electrode of substantially one selection transistor ST2. The same applies to the selection transistor ST1 (the selection gate lines SGD of four layers).
According to the above configuration, the selection transistor ST2, a plurality of memory cell transistors MT and the selection transistor ST1 are sequentially stacked above the well region 30 in each NAND string 14.
At an upper end of the conductive film 41, an interconnect layer 42 which functions as the bit line BL is formed. The bit line BL is connected to the sense amplifier 13.
Further, in the surface of the p-well region 30, n+-impurity diffusion layer 43 and a p+-impurity diffusion layer 44 are formed. A contact plug 45 is formed on the diffusion layer 43, and an interconnect layer 46 which functions as the source line SL is formed on the contact plug 45. Further, a contact plug 47 is formed on the diffusion layer 44, and an interconnect layer 48 which functions as a well interconnect line CPWELL is formed on the contact plug 47.
A plurality of the above configurations is aligned in a depth direction of
In addition, the configuration of the memory cell array 11 may be another configuration. That is, U.S. patent application Ser. No. 12/407,403 filed on Mar. 19, 2009 entitled “THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY” discloses the configuration of the memory cell array 11. Further, U.S. patent application Ser. No. 12/406,524 filed on Mar. 18, 2009 entitled “THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”, U.S. patent application Ser. No. 12/679,991 filed on Mar. 25, 2010 entitled “NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME” and U.S. patent application Ser. No. 12/532,030 filed on Mar. 23, 2009 entitled “SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME” disclose the configurations of the memory cell array 11. These patent applications are entirely incorporated herein by reference.
1.1.4 Block Grouping
Next, the concept of block grouping according to the present embodiment will be described. In the present embodiment, the block grouping unit 127 of the controller 120 manages as one group (referred to as a block group BG) a set of a plurality of physical blocks BLK selected from each of a plurality of memory chips 111. Further, the controller 120 issues an access command to a plurality of blocks BLK belonging to the same block group BG when accessing a plurality of memory chips 111 in parallel.
As illustrated in
Information related to the above block grouping is held as a table (block group table: BG table) in, for example, the first memory region 131 of the data buffer 130.
1.1.5 Partial Bad Block Table
Next, a partial bad block table (PB table) according to the present embodiment will be described.
As described with reference to
In above example, the good SCs are used in the partial bad block irrespective of the number of the good SCs. In other case, the good SCs may be not used and the partial bad block may be designated as a bad block when the number of the bad SCs exceeds a predetermined number.
Further, information indicating which block BLK is a partial bad block and information indicating which string chunk SC in the partial bad block is the bad SC is managed using the PB table. The PB table is held in, for example, a ROM fuse of one of the memory chips 111. Further, the PB table is read to the status register 24 according to power-on read when, for example, the memory 110 is powered on, and is held in the third memory region 133 of the data buffer 130 of the memory system 100.
Hence, in the example in
1.2 Operation of Memory System
Next, the operation of the memory system 100 according to the present embodiment will be described. The controllers 122, 123 and 124 according to the present embodiment refer to the BG table and the PB table when accessing the memory 110, and issue adequate commands, addresses and necessary data based on a reference result.
1.2.1 Erasing Operation
First, a data erasing operation will be described.
Then, the erase-controller 124 transmits the erase command and transmits a chip address which designates the memory chip #1. Further, the erase-controller 124 transmits block address which designates the blocks BLK0 of the planes PN0 belonging to the block group BG0 and BSC information (“0000”) of the blocks BLK0, and further transmits block address which designates the blocks BLK0 of the planes PN1 and BSC information (“0000”) of the blocks BLK0.
Commands, addresses and BSC information are transmitted likewise to the memory chips #2 and #3.
The memory chip 111 having received the command performs the erasing operation according to the received address and BSC information. The memory chip #0 erases data of the block BLK0 of the plane PN0, and data of the block BLK0 of the plane PN1 in parallel. For example, items of data in the blocks BLK are collectively erased.
Subsequently, erase-verify is performed. The erase-verify is an operation of checking whether or not a threshold of the memory cell transistor MT is sufficiently lowered as a result of the erasing operation, and is performed in, for example, string chunk SC units. More specifically, a voltage VSG is applied to the selection gate lines SGD and SGS in the erase-verify target string chunk SC, the selection transistors ST1 and ST2 are placed in an on state and an erase-verify voltage Vevfy is applied to the word lines WL0 to WL7. In this state, when currents flow from a predetermined number of the bit lines BL to the source line SL, the string chunk SC passes the erase-verify. When the string chunk SC fails to pass the erase-verify, the erasing operation is performed again.
In the erase-verify, the sequencer 21 determines the erase-verify target string chunk SC based on the received BSC information. The BSC information received from the controller 120 is held in, for example, the status register 24. The controller 120 does not erase-verify a string chunk whose bit is “1”, i.e., the bad SC in the BSC information in this status register 24. Hence, in an example in
The same also applies to the memory chip #1 to #3 below. The memory chip #2 does not erase-verify the bad string chunk SC2 of the block BLK0 of the plane PN0 and the bad string chunk SC2 of the block BLK0 of the plane PN1 as erase-verify targets.
In addition, data can also be erased in the string chunk SC units. In this case, the operation of erasing to the bad SCs may not be performed based on the BSC information.
1.2.2 Writing Operation
Next, a data writing operation will be described. Some examples where data is written in the blocks BLK1 of the memory chips #0 and #1 in
When determining the memory chips #0 and #1 as write regions, the write-controller 123 of the controller 120 next refers to the PB table. Thus, the write-controller 123 recognizes that the string chunk SC0 of the block BLK1 of the plane PN1 of the memory chip #0 is the bad SC.
Then, the write-controller 123 first transmits a first write command, and transmits a chip address which is an destination of this write command and designates the memory chip #0. The first write command is a command for executing the single-plane writing operation.
Next, the write-controller 123 issues a block address which designates the block BLK1 of the plane PN0, and sequentially issues a WL address and a SC address which designates the next write target word line WL and string chunk SC0. Further, the write-controller 123 transmits write data D0 of one page from, for example, the data buffer 130 to the memory chip #0.
Next, the write-controller 123 transmits a second write command, and transmits a chip address which designates the memory chip #1. The second write command is a command for executing the multi-plane writing operation. That is, the write-controller 123 recognizes based on the PB table that the string chunks SC0 in the block BLK1 of the memory chip #1 are the good SCs in both of the planes PN0 and PN1, and therefore it is possible to perform the multi-plane operation. Hence, the write-controller 123 issues the second write command instead of the first write command.
Next, the write-controller 123 issues a block address which designates the block BLK1 in the plane PN0, and issues a block address which designates the block BLK1 in the plane PN1. Further, the write-controller 123 sequentially issues a WL address and a SC address which designates the write target word line WL and string chunk SC0. Furthermore, the write-controller 123 transmits write data D1 and D2 of one page for the planes PN0 and PN1, to the memory chip #1. In addition, in this sequence, the WL address and the SC address are commonly used in the two planes PN0 and PN1.
The memory 110 having received the command performs the writing operation according to the received address and data. First, the data D0 is written in the block BLK1 of the plane PN0 of the memory chip #0. In this regard, the data D0 is collectively written in a plurality of memory cell transistors MT connected to the word line WL0 of the string chunk SC0. The command issued to the memory chip #0 is used to cause the single-plane operation as described above, and therefore the writing operation is not performed on the plane PN1.
The writing operation is performed on the blocks BLK1 of the planes PN0 and PN1 in the memory chip #1 in parallel. That is, the data D1 and D2 is collectively written in a plurality of memory cell transistors MT connected to the word lines WL0 of the string chunks SC0 of the planes PN0 and PN1.
In addition, the command sequences described in this description are not limited to the present example, and not only the blocks BLK but also the planes PN to which the blocks BLK belong are designated by block addresses. Further, the command sequences described in this description conceptually represent information transmitted from the controller 120 to the memory 110, and the order that various pieces of information are transmitted and commands to be issued can be optionally changed. The illustrated command sequences are absolutely exemplary sequences, and, when, for example, a single-plane write command (first command) is issued, the controller 120 may issue an end command after the data D0 is transmitted. Then, the NAND flash memory 110 starts a writing operation in response to this end command. Further, when the multi-plane write command (second command) is issued, the second write command may be transmitted, then a chip address, a block address, a WL address, a SC address and data may be sequentially transmitted, a continuation command indicating that a command is continuously transmitted to another plane may be further issued, the second and subsequent write commands may be issued likewise, and an end command may finally be issued.
As illustrated in
According to the present example, it is possible to set the arbitrary values to the addresses of the write target block BLK, word line WL and string chunk SC of each plane PN.
As illustrated in
The sequencer 21 prepares for the multi-plane operation for the memory chip #0 having received the second write command. However, the block address for the plane PN1 is an invalid address, and therefore the sequencer 21 does not perform the writing operation for the plane PN1. That is, the single-plane operation is executed with respect to the plane PN0 in the memory chip #0. Further, when writing data in the plane PN0 is finished, the memory chip #0 sets a status indicating that writing the data is normally finished, to the status register 24 (program-fail is not set). The controller 120 can obtain this status by issuing a status read command.
In addition, when an invalid block address is issued, dummy data is not necessary required, and may not be transmitted. The same also applies to the following description.
As illustrated in
The operation of the memory chip #0 is as described in the third example.
In addition, although not described, a reading operation is the same as the writing operation, and the read-controller 122 issues a read command instead of a write command.
1.3 Effect of Present Embodiment
According to the configuration of the present embodiment, it is possible to improve memory access efficiency. The effect of the present embodiment will be described below.
A memory system including a plurality of memory chips to which an access can be made in units smaller (e.g., the string chunks SC) than the size of blocks may be difficult to improve in terms of access efficiency since access to a plurality of memory chips is made in parallel.
More specifically, a case where, for example, the numbers of blocks (good BLKs) which do not include the bad SCs vary between a plurality of memory chips is assumed. In this regard, when access to a plurality of memory chips is made in parallel, a case where, while there is the good BLK which can be accessed in a given memory chip, there is not the good BLK which can be accessed in another memory chip occurs. That is, only the blocks BLK selected from a limited number of memory chips can be grouped. The same also applies to string chunk units. A case where, while there is the string chunk SC which can be accessed in a given memory chip, there is not the string chunk SC in another memory chip occurs. As a result, only the string chunks SC selected from a limited number of memory chips can be simultaneously selected. In such a case, only a limited number of memory chips can be operated in parallel, and therefore access efficiency lowers.
In this regard, BSC information is prepared per block BLK according to the present embodiment. Further, as described with reference to
Specifically, a virtual number <BG#> is allocated to each of the block groups BG which includes a plurality of the physical blocks, and the virtual physical page address is expressed using that number <BG#>, the chip number <CH#>, the plane number <PN#>, the SC number <SC#>, and word line number <WL#>. The physical address of the physical block is determined by <BG#>, <CH#>, <PN#>, and the table shown in
Furthermore, according to the configuration of the present embodiment, the PB table includes addresses of partial bad blocks and bad SC information of the partial bad blocks. That is, the PB table does not need to hold all pieces of BSC information of the blocks BLK in the memory 110, and only needs to hold the requisite minimum of information. Consequently, it is possible to reduce a data amount of management information of the memory 110.
Next, a memory system according to a second embodiment will be described. The present embodiment differs from the first embodiment in registering a corresponding good SC in an other plane PN, too, as a bad SC when the bad SC is found. Only differences from the first embodiment will be described below.
2.1 PB Table Creating Method
The PB table creating method according to the present embodiment will be described with reference to
First, for example, a tester tests whether or not each string chunk SC of a memory chip 111 is bad (step S10). When the string chunk SC fails the test, i.e., when the string chunk SC is the bad SC (step S11, YES), the tester decides that the corresponding string chunk SC in the other plane PN in the same chip is also the bad SC (step S12). Further, the tester sets a bad SC flag to a corresponding entry in the PB table (step S13). In addition, a testing operation is not limited to the tester, and may be performed by a controller 120.
A specific example of the above operation will be described with reference to
As illustrated in an upper view of
In this case, as illustrated in a lower view of
2.2 Effect of Present Embodiment
According to the present embodiment, when the string chunk SC in one plane PN is the bad SC in the given memory chip 111, and, even when the corresponding string chunk SC in the other plane PN is the good SC, the good SC is regarded as the bad SC. As a result, as illustrated in the lower view of
Hence, it is not necessary to distinguish the BSC information in the PB table between the planes PN0 and PN1. That is, plane information is not necessary in the PB table, so that it is possible to further reduce an information amount of the PB table.
Further, a system which assumes that error correction is performed in multi-plane units is likely to have difficulty in error correction when one of a plurality of planes includes the bad SC. In this regard, in the present embodiment, it is possible to prevent the bad SC and the good SC from being mixed in multi-plane operation target string chunks SC, and improve error correction reliability.
In addition, the present embodiment can be optionally modified. A case where the memory chip 111 includes the two planes PN0 and PN1 has been described as an example in the above embodiment. However, the memory chip 111 may include three or more planes. Further, a configuration including four planes regards one bad SC in the same way as that in the first embodiment when there is only one bad SC. However, when, for example, the two or more string chunks SC are the bad SCs, all string chunks SC may be regarded as the bad SCs as described in the second embodiment.
Next, a memory system according to a third embodiment will be described. The present embodiment differs from the first and second embodiments in changing block grouping, i.e., an allocation of physical addresses of blocks BLK to logical block addresses based on a distribution of bad SCs. Only differences from the first embodiment will be described below.
3.1 Block Grouping
Next, a flow of processing of the block grouping according to the present embodiment will be described with reference to
As illustrated in
Further, the block grouping unit 127 decides whether or not a distribution state of the bad SCs is adequate (step S21). This decision criterion will be described below using specific examples in 3.2, 3.3 and 3.4.
When the distribution of the bad SCs is not adequate (step S21, NO), the block grouping unit 127 changes a combination of the blocks BLK in each block group BG such that the distribution becomes adequate (step S22). Further, a BG table is updated (step S23). The specific examples will be described below.
3.2 Specific Example 1
In the present example, block grouping is performed to reduce a difference between data sizes to which a parallel access can be made in a writing (or reading) operation.
That is, a difference between a set of the string chunks SC having the best access efficiency and a set of the string chunks SC having the worst access efficiency is three pages in access units.
Hence, the block grouping unit 127 changes the block grouping to reduce this difference. More specifically, as illustrated in, for example, a lower view of
As a result, the number of bad SCs included in the set of a plurality of string chunks SC to which a parallel access is made is one at maximum. That is, in an upper view of
A write command sequence in the present example will be briefly described below.
As illustrated in
Similarly to
In addition, an example where the access is made according to the sequences described with reference to
3.3 Specific Example 2
Next, another example will be described. In the present example, a memory capacity difference between the block groups BG is reduced.
That is, a memory capacity difference between the block groups BG0 and BG1 having the largest volume and the block group BG3 having the smallest volume corresponds to eight string chunks.
Hence, the block grouping unit 127 changes the block grouping to reduce this difference. More specifically, as illustrated in, for example, a lower view of
As a result, the numbers of bad SCs included in the four block groups BG0 to BG3 become three and equal, so that it is possible to eliminate the memory capacity difference between the block group BG.
3.4 Specific Example 3
Next, another example will be described. The above two examples can be phrased as methods of leveling a distribution of the bad SCs to reduce a size difference between a set of the string chunks SC to which an access is simultaneously made or a memory capacity difference between the block groups BG. On the contrary, in the present example, the bad SCs are collected in the specific block group BG to efficiency to access another block group BG is improved by collecting the bad SCs in the specific block group BG.
Then, the block grouping unit 127 collects the blocks BLK which do not include the bad SCs from each memory chip 111, and make the block groups BG. In the present example, the block groups BG0 and BG2 do not include the bad SCs, and are formed by the good SCs. Hence, it is possible to efficiently access these block groups BG0 and BG2. In addition, the bad SCs are intensively collected in the block groups BG1 and BG3.
Hence, the block groups BG0 and BG2 have extremely good access efficiency, and, by contrast with this, the block groups BG1 and BG3 have extremely bad access efficiency. Hence, the controller 120 may grasp the characteristics of the block groups BG, and select the block group BG to access according to write data.
3.5 Specific Example 4
Next, another example will be described. In the present example, the blocks BLK having the same numbers of bad SCs are selected from the memory chips #0 to #3, and a set of these blocks BLK forms the block groups BG. The present example corresponds to, for example, an example illustrated in
In addition, the blocks BLK which are block-grouped are not limited to the blocks BLK whose numbers of bad SCs are completely the same, and the blocks BLK whose numbers of bad SCs are close may be grouped. That is, when the block groups BG cannot be formed by the blocks BLK whose numbers of bad SCs are completely the same, part of the good SCs may be handled as the bad SCs to preferentially improve access efficiency.
Hence, as illustrated in a lower view of
The block group BG grouped as described above is shown in
In addition, that “the numbers of bad SCs are close” can be defined as follows. That is,
(1) a difference between the numbers of bad SCs of blocks BLK in the block group BG is a designated constant or less. That is, when a maximum value of the number of the bad SCs included in the blocks BLK of the block group BG is Nmax, and a minimum value is Nmin, Nmax−Nmin≤constant is satisfied. Alternatively,
(2) a total sum of differences between a maximum value of the numbers of bad SCs included in the blocks BLK in the block group BG and the numbers of bad SCs included in the blocks BLK is a designated constant or less. That is, when the maximum value is Nmax, each block BLK is BLKi (i takes 0 to n and n is an integer) and the number of bad SCs of the block BLKi is BSC(blk_i), {Nmax−BSC(blk_0)}+{Nmax−BSC(blk_1)}+ . . . +{Nmax−BSC(blk_i)}+ . . . +{Nmax−BSC(blk_n)}≤ constant is satisfied.
3.5 Effect of Present Embodiment
According to the present embodiment, the block grouping unit 127 can arbitrarily select the blocks BLK to be included in each block group BG. It is assumed that, in, for example, the upper view of
Further, when the volume difference between the block groups BG is preferentially reduced, the block BLK including the bad SC may be replaced with the good BLK in each memory chip 111 as illustrated in
Further, when access performance is preferentially optimized, in an upper view of
In addition, the four specific examples have been described as the criteria for block grouping in the present embodiment.
However, block grouping may be naturally changed based on other criteria.
Next, a memory system according to a fourth embodiment will be described. The present embodiment differs from the first to third embodiments in that a data buffer 130 does not hold a PB table, and reads the PB table from a memory 110 when necessary. Only differences from the first to third embodiments will be described below.
4.1 PB Table Reading Method
First, a PB table reading method will be described with reference to
As illustrated in
As illustrated in
When taking in the command “XXH”, the memory chip 111 reads the PB table. In this period, the memory chip 111 enters a busy state, and a ready/busy signal which is not illustrated becomes an “L” level. When the memory chip 111 returns to a ready state, the ready/busy signal becomes the “H” level, and the controller 120 asserts a signal/RE (“L” level) in response to a change in the level of the ready/busy signal. As a result, the controller 120 reads the PB table in the status register 24.
In addition, the PB table related to all memory chips 111 in the memory 110 may be held in one of the memory chips 111. In this case, the operations described with reference to
In another example, individual memory chips #0 to #N may hold PB tables of the memory chip #0 to #N, respectively. In this case, the operations described with reference to
4.2 Effect of Present Embodiment
According to the present embodiment, the controller 120 reads the PB table from the memory 110 at a point of time at which the PB table is necessary. Hence, a dedicated region which holds the PB table becomes unnecessary in the controller 120. In, for example, the example in
In addition, the controller 120 may read the PB table from the memory 110 at any timing. For example, the timing comes when an access to the memory 110 needs to be made in response to an access command such as a read request received from a host 200.
Further, information which needs to be read according to a status read command may be only partial information in the PB table. That is, only BSC information of one of blocks BLK in the given memory chip 111 may be read.
Further, the status read command illustrated in
Next, a memory system according to a fifth embodiment will be described. The present embodiment differs from the first to fourth embodiments that an acquired bad SC is handled. Only differences from the first to fourth embodiments will be described below.
5.1 Operation of Controller 120
The above processing may be performed by, for example, a read-controller 122. In this case, in reading of data, the read-controller 122 can decide that performance of the good SC has lowered when a time required for error correction by a decoder 126 exceeds a certain period of time or the number of error bits exceeds a certain number of error bits. Further, the above processing may be performed by a write-controller 123 and an erase-controller 124. In this case, the controllers 123 and 124 issue status read commands after a writing operation and an erasing operation, and check whether or not the writing operation and the erasing operation have been normally finished. Further, when the number of times that the operations are not normally finished exceeds a certain number of times, the string chunk SC may be decided as the bad SC.
5.2 Effect of Present Embodiment
According to the present embodiment, when performances of the string chunks SC lower after the memory system is shipped, and cannot be appropriately used, these string chunks SC can be handled as the bad SCs. Thus, by updating the PB table according to a state of the memory system, it is possible to perform adequate management even when the state of the memory system changes.
Further, the controller 120 may write the updated PB table in the memory 110.
Next, a memory system according to a sixth embodiment will be described. The present embodiment differs from the fifth embodiment in not only updating a PB table but also updating a BG table. Only differences from the fifth embodiment will be described below.
6.1 Operation of Controller 120
6.2 Effect of Present Embodiment
According to the present embodiment, it is possible to perform adequate block grouping even when the acquired bad SC is generated.
In addition, a timing to update the PB table and a timing to update the block group BG does not necessarily match. When, for example, error correction (ECC) is performed using block grouping, if there is no effective data in the block group BG and an erasable state (or unwritten state) is not provided, block grouping cannot be changed in some cases. Further, replaceable blocks BLK are necessary to change block grouping. Hence, when the acquired bad SC is generated, the controller 120 registers this bad SC as the bad SC. Further, even when it is decided that it is better to change block grouping, if there is not a replaceable block, block grouping is not changed. Furthermore, when the replaceable block group BG or one given block BLK can be used, the block grouping may be changed. In addition, this “one given block BLK” is, for example, the block BLK such as a preliminary block which is not block-grouped (referred to as Single BLK). Data is written in or erased from the block-grouped block BLK in block group points, and error correction is also performed in the block group units. By contrast with this, data is written in or erased from the single BLK in single BLK units. Consequently, it is possible to change the block-grouping if there is a single BLK which is in an unwritten state or an erasable state and which can be suitably replaced.
Next, a memory system according to a seventh embodiment will be described. The present embodiment differs from the first to sixth embodiment in changing not only a combination of blocks BLK but also a combination of string chunks SC to which a parallel access can be made similarly to the third embodiment. Only differences from the first to sixth embodiments will be described.
7.1 String Chunk Grouping (SC Grouping)
In the above embodiments, a region of a given block group BG to which a parallel access is made is a set of string chunks SC0, a set of string chunks SC1, a set of string chunks SC2 and a set of string chunks SC3. In this regard, in the present embodiment, the string chunks SC0 to SC3 are arbitrarily block-grouped (referred to as SC grouping) similarly to block grouping.
The SC grouping may be performed by, for example, a block grouping unit 127 in
In this regard, for example, the block grouping unit 127 or the SC grouping unit causes, for example, a second memory region 132 of a data buffer 130 to hold a SCG table which holds a relationship between the string chunk groups SCG and the string chunks SC included in the string chunk groups SCG.
7.2 Other Example of SC Grouping (1)
Various methods of performing SC grouping can be adopted.
As illustrated in
Hence, how block grouping is performed differs from those of the first to sixth embodiments.
Further,
7.3 Other Example of SC Grouping (2)
In the present example, the block groups BG are formed by collecting blocks whose the number of bad SCs included in the blocks BLK are the same or close, and the string chunk groups SCG are formed in that block groups BG. In the example in
In this case, the string chunk group SCG can be formed as illustrated in, for example,
7.4 Effect of Present Embodiment
According to the present embodiment, it is possible to arbitrarily group not only the blocks BLK but also sets of the string chunks SC to which a parallel access can be made. Consequently, it is possible to improve access efficiency more. In addition, a criterion for performing string chunk grouping may be based on the idea described in 3.2, 3.3 and 3.4 in the third embodiment or may be another criterion.
Next, a memory system according to an eighth embodiment will be described. A controller 120 according to the first to seventh embodiments manages a memory 110 in logical block units, and further manages good regions and bad regions in string chunk SC units smaller than physical blocks BLKs in each logical block. The present embodiment relates to a unit different from the string chunks SC.
In the first example, management is performed in layer units in the blocks BLK.
As illustrated in
When failure is found in the layer R0 and is not found in the layer R2 upon a test, the layer R2 is regarded as a good layer and the layer R0 is regarded as a bad layer. In this case, the layer R1 may be also regarded as a bad layer. The same also applies to the reverse case. When all layers R0 to R2 are the good layers, the blocks BLK are naturally the good BLKs. Thus, management may be performed in units of the layers R0 and R2 instead of the string chunks SC. Naturally, the number of layers is not limited to two.
In a second example, string chunk units described in the first to seventh embodiments and layer units described in the above first example are combined.
The third example illustrates that management is performed in word line units.
8.4 Effect of Present Embodiment
As described in the present embodiment, block BLK management units are not limited to the string chunks SC, and are not limited as long as the management units are smaller than the blocks BLK. In this regard, management is preferably performed in units larger than pages from a view point of a management information amount.
As described above, a memory system 100 according to an embodiment includes:
a memory (110 in
The configuration includes failure information in block units, and failure information in string units of each block. Consequently, it is possible to improve access efficiency in a memory system which includes a plurality of memory chips, and can perform a multi-plane operation.
In addition, the embodiments are not limited to the above described embodiments, and can be variously deformed and can be arbitrarily combined and carried out.
For example, each element in a controller 120 may be realized by software to be executed by a processor, by hardware or by a combination thereof. Further, first to third memory regions 131 to 133 in a data buffer 130 may be independent memory chips or may be different regions in the same memory chip.
Further, processing orders in the flowcharts described in the above embodiments can be switched where necessary or may be omitted.
Furthermore, the above embodiments are not limited to the configuration where memory cells are three-dimensionally stacked. The above embodiments are applicable to, for example, a normal flat NAND flash memory formed by two-dimensionally aligning memory cell transistors MT and selected transistors ST on a semiconductor substrate. Further, a memory system is not limited to a NAND flash memory and is generally applicable to memory systems which can be managed in at least two units (the blocks BLK1 and string chunks SC in the above example) in each memory chip.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
This application claims the benefit of U.S. Provisional Application No. 62/132,244, filed Mar. 12, 2015, the entire contents of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
5860080 | James | Jan 1999 | A |
6381174 | Roohparvar | Apr 2002 | B1 |
7177191 | Fasoli | Feb 2007 | B2 |
8966330 | Raghu | Feb 2015 | B1 |
20020085419 | Kwon | Jul 2002 | A1 |
20050111259 | Fukuda | May 2005 | A1 |
20050169057 | Shibata | Aug 2005 | A1 |
20060064537 | Oshima | Mar 2006 | A1 |
20060146608 | Fasoli | Jul 2006 | A1 |
20070201274 | Yu | Aug 2007 | A1 |
20070253250 | Shibata | Nov 2007 | A1 |
20080055989 | Lee | Mar 2008 | A1 |
20080127104 | Li | May 2008 | A1 |
20090125671 | Flynn | May 2009 | A1 |
20090267128 | Maejima | Oct 2009 | A1 |
20090268522 | Maejima | Oct 2009 | A1 |
20100107004 | Bottelli | Apr 2010 | A1 |
20100207195 | Fukuzumi et al. | Aug 2010 | A1 |
20100214838 | Hishida et al. | Aug 2010 | A1 |
20110284946 | Kiyotoshi | Nov 2011 | A1 |
20120026775 | Yamada | Feb 2012 | A1 |
20120069663 | Itagaki et al. | Mar 2012 | A1 |
20120182803 | Shirakawa | Jul 2012 | A1 |
20120307557 | Itagaki | Dec 2012 | A1 |
20130094294 | Kwak | Apr 2013 | A1 |
20130332769 | Parat | Dec 2013 | A1 |
20140063952 | Hara | Mar 2014 | A1 |
20140085982 | Asaoka | Mar 2014 | A1 |
20140086001 | Fukano | Mar 2014 | A1 |
20150262699 | Shirakawa | Sep 2015 | A1 |
20160267003 | Morio | Sep 2016 | A1 |
Number | Date | Country |
---|---|---|
2012-146369 | Aug 2012 | JP |
2014-63551 | Apr 2014 | JP |
2014-63556 | Apr 2014 | JP |
2015-174118 | Oct 2015 | JP |
2015-176628 | Oct 2015 | JP |
Number | Date | Country | |
---|---|---|---|
20160266955 A1 | Sep 2016 | US |
Number | Date | Country | |
---|---|---|---|
62132244 | Mar 2015 | US |