The technology disclosed relates to integrated circuit memory, including nonvolatile NAND flash memory and operating the same. In particular, the technology disclosed relates to performing read setup operations in NAND flash memory by implementing a read setup burst command to reduce voltage threshold distribution deviation over time.
NAND flash memory suffers a problem in that threshold voltages of cells can deviate over time, eventually and unintentionally changing logical states of cells. For example, this deviation of the threshold voltage can happen to a particular row of cells as a result of reading data from another row of cells. While error correcting codes (ECC) can be implemented to correct for read errors that occur as a result of the unintentional change of the logical states of the cells, error correction has limited capabilities.
Therefore, it is desirable to prevent the deviation of the threshold voltages of cells of NAND flash memory.
The technology disclosed describes a method of operating a memory that implements a read setup burst command to reduce voltage threshold deviation over time. The technology disclosed also describes a memory including control circuits that perform a read setup burst operation that reduces voltage threshold deviation over time. The technology disclosed further describes a controller that generates and provides a read setup burst command to the memory for implementing a read setup burst operation that reduces voltage threshold deviation over time.
In an embodiment, a memory is provided. The memory can include a memory array, comprising a plurality of blocks, and control circuits comprising logic to execute operations. The operations can include decoding a read setup burst command identifying (i) an address of the first read setup block in a set of read setup blocks and (ii) a number of read setup blocks, as candidates for read setup operations, and in response to the decoding of the setup burst command, performing a read setup burst operation on a plurality of read setup blocks of the set of read setup blocks.
In a further embodiment, the set of read setup blocks consists of sequential blocks.
In another embodiment, the number can represent a number of the sequential read setup blocks and the read setup burst operation can include performing read setup operations on the sequential read setup blocks of the set of read setup blocks starting from the first read setup block, as identified from the address included in the read setup burst command and continuing in sequential order of the sequential read setup blocks until a number of sequential read setup blocks that have had read setup operations performed thereon equals the number, as identified in the read setup burst command.
In an embodiment, the read setup burst operation can further include prior to performing the read setup operation on each respective read setup block of the sequential read setup blocks, determining whether the respective sequential read setup block is a bad block, and in response to determining that the respective sequential read setup block is a bad block, skipping the read setup operation for the respective sequential read setup block and continuing the performing of the read setup burst operation in the sequential order for a subsequent read setup block in the sequence.
In another embodiment, the number can represent a number of the sequential read setup blocks and the read setup burst operation can includes identifying, as a current read setup block, the first read setup block in dependence upon on the address included in the received read setup burst command, setting a counter c to equal the number of the identified sequential read setup blocks included in the received read setup burst command, the number being greater than 1, and until the counter c equals 0, performing the following operations: (i) determining whether or not the current read setup block is a bad block, (ii) in response to a determination that the current read setup block is not a bad block, performing a read setup operation on the current read setup block, (iii) upon a determination that the current read setup block is not the last block of the sequential read setup blocks, identifying the current read setup block as a subsequent block of the sequence of the sequential read setup blocks, and (iv) decreasing the counter c by a value of 1.
In an embodiment the operations can further comprise receiving a read setup list of candidate read setup blocks and storing and maintaining the received read setup list of candidate read setup blocks in a candidate list buffer, wherein the set of read setup blocks identifies one or more of candidate read setup blocks in the read setup list.
In a further embodiment the operations can further include determining whether any of the candidate read setup blocks are in sequential order as addressed in the memory, and in response to a determination that there are candidate read setup blocks in sequential order, identifying the candidate read setup blocks that are in the sequential order as the plurality of read setup blocks of the set of read setup blocks upon which the read setup burst operation is performed.
In another embodiment, the operations can further include identifying a first set of candidate read setup blocks from the read setup list, the first set including two or more candidate read setup blocks that are in sequential order as addressed in the memory, identifying a second set of candidate read setup blocks from the read setup list, the second set including two or more candidate read setup blocks that are in sequential order as addressed in the memory, the second set including candidate read setup blocks that are different from the candidate read setup blocks included in the first set, determining that the second set of candidate read setup blocks includes more candidate read setup blocks than the first set of candidate read setup blocks, and identifying the candidate read setup blocks from the second set as the plurality of read setup blocks of the set of read setup blocks upon which the read setup burst operation is performed.
In an embodiment, the read setup list can be generated from a least recently used (LRU) queue that identifies blocks of the memory in dependence upon their use.
In another embodiment, the read setup list can be generated to identify candidate read setup blocks from the LRU queue that have not been accessed for a period of time that exceeds a predetermined threshold.
In an embodiment, a method of a memory performing a read setup burst operation is provided. The memory can include a memory array, comprising a plurality of blocks, and the method can include decoding a read setup burst command identifying (i) an address of the first read setup block in a set of read setup blocks and (ii) a number of read setup blocks, as candidates for read setup operations, and in response to the decoding of the setup burst command, performing a read setup burst operation on a plurality of read setup blocks of the set of read setup blocks.
In another embodiment a method of operating a memory is provided. The method can include identifying a set of read setup blocks of the memory as candidates for read setup operations, generating a read setup burst command identifying (i) an address of the first read setup block in the set of read setup blocks and (ii) a number of read setup blocks, as candidates for read setup operations, and sending the generated read setup burst command to the memory to initiate performing of a read setup burst operation on a plurality of read setup blocks of the set of read setup blocks.
In a further embodiment, the method can further include sending a polling message to the memory requesting information regarding a status of the read setup burst operation, and receiving a response message from the memory indicating that the read setup burst operation is not complete.
In an embodiment, the method can include sending a polling message to the memory requesting information regarding a status of the read setup burst operation, receiving a response message from the memory indicating that the read setup burst operation is complete, and in response to receiving the message indicating that the read setup burst operation is complete, generating a subsequent read setup burst command and sending the subsequent read setup burst command to the memory.
In another embedment, the method can include sending a polling message to the memory requesting information regarding a status of the read setup burst operation and in response to not receiving a response message from the memory within a predetermined period of time, determining that the read setup burst operation is not complete.
In a further embodiment, the set of read setup blocks can consist of sequential blocks.
In another embodiment, the number can represent a number of the sequential read setup blocks and the read setup burst operation can include performing read setup operations on the sequential read setup blocks starting from the first read setup block, as identified from the address included in the read setup burst command, and continuing in sequential order of the sequential read setup blocks until a number of sequential read setup blocks that have had read setup operations performed thereon equals the number, as identified in the read setup burst command.
In an embodiment the read setup burst operation can further include, prior to performing the read setup operation on each respective read setup block of the sequential read setup blocks, determining whether the respective sequential read setup block is a bad block, and in response to determining that the respective sequential read setup block is a bad block, skipping the read setup operation for the respective sequential read setup block and continuing the performing of the read setup burst operation in the sequential order for a subsequent read setup block in the sequence.
In an embodiment, the method can further include maintaining a read setup list of candidate read setup blocks in memory, and wherein the set of read setup blocks includes candidate read setup blocks in the read setup list.
In a further embodiment, the method can include determining whether any of the candidate read setup blocks are in sequential order as addressed in the memory, and in response to a determination that there are candidate read setup blocks in sequential order, identifying the candidate read setup blocks that are in the sequential order as the plurality of read setup blocks of the set of read setup blocks upon which the read setup burst operation is performed.
Other aspects and advantages of the technology disclosed can be seen on review of the drawings, the detailed description and the claims, which follow.
A detailed description of embodiments of the technology disclosed is provided with reference to the
The structure also includes a plurality of parallel global bit line conductors 20 in a layer parallel to the substrate extending in the X direction as labeled in this figure, and above the string select lines. Each of the global bit line conductors superposes a respective column of the pillars in the array across multiple blocks, each column including one pillar in each subset of pillars for each string select line.
Each intersection of a pillar and a string select line defines a select gate of the pillar for connection to a corresponding bit line. Each of the pillars underlies and is coupled by the select gate of the pillar to one of the bit line conductors.
Lower select lines (lower SG) 13 are formed under the word line layers 11 to couple the pillars to one or more source lines such as a common source conductor 18. The common source conductor can be connected to bias circuitry by vertical connections between the blocks, or otherwise.
The structure of
In structures like that illustrated in
In a 3D NAND arrangement, the set of NAND strings of the block shown in
Also, each of the NAND strings includes a corresponding sub-block string select gate (e.g., 202) configured to connect the NAND string to a particular bit line (e.g., 203) in the plurality of bit lines.
A plurality of sub-block string select lines SSL0 to SSLn are operatively coupled to the string select gates of respective distinct subsets of NAND strings, where each subset of NAND strings includes a sub-block of the block of memory cells, to apply gate voltages to the sub-block string select gates.
Also, each of the NAND strings includes a corresponding lower select gate configured to connect the NAND string to the common source line or one of the one or more reference lines used to implement the common source line. A lower select gate layer GSL is coupled to all the lower select gates for the NAND strings in the block in this example. In another example, there can be a plurality of lower select gate lines arranged for connection to the lower select gates in the block.
In this example, a lower dummy word line DWLG lies between the lower select gate layer GSL and the lowest word line layer WL0, and an upper dummy word layer DWLS lies between the string select lines SSL0 to SSLn and the uppermost word line layer WLn+k.
In the circuit of
“Activate”, as used herein, means to apply a particular bias so as to give effect to the connected cells or switches. The bias may be high or low, depending on the operation and the memory design. For the purposes of this description, the term “charging” refers to both driving the node to a higher voltage and driving the node to a lower voltage, including ground and negative voltages in some embodiments.
A NAND block as described herein can be implemented using a 3D NAND memory technology. Implementations can also be made using 2D NAND technology, in which the NAND block is logically defined across the plurality of 2D NAND arrays.
The circuit in
The pass transistor 335 is controlled by a control signal BLC3, which controls connection and disconnection of the connecting node 323 to the sensing node 332. A transistor 336 is connected between the sensing node 332 and a bias voltage VGW2, and is controlled by signal BLC4. A capacitor 337 (capacitance) is coupled from sensing node 332 to a sense signal node 338. A sensing transistor 339 has a gate connected to the sensing node 332, a first current carrying terminal connected to the sense pulse node 338 and a second current carrying terminal providing a sense amplifier output, which can be connected to latches of a page buffer.
During read operations and other operations, the transistors 318, 327 and 321 can be operated to set a bias voltage level on the selected bit lines as suits a particular operation.
A plurality of global bit lines 412 (MBLs) superimposes, and is shared by, all of the blocks in the plane. A set of sense amplifiers and bit line bias circuits 405 (e.g.,
A read setup operation can be applied to only one block at a time in a given plane in some embodiments. In other embodiments, a read setup operation can be applied to multiple blocks simultaneously in a given plane. In other embodiments, the read setup operation for a block having a number “n” of sub-blocks, can be applied more than one and fewer than “n” sub-blocks simultaneously. In other embodiments, the read setup operation can be applied to one or more sub-blocks in one block and one or more sub-blocks in another block of the plane simultaneously.
A read setup operation can be applied to one block or multiple blocks in a single plane as discussed with reference to
Furthermore,
Specifically,
As illustrated, the first and second queues 1300, 1302 include a plurality of positions, including a front (frontmost) position, middle positions, and a back (backmost) position.
The positions in the first queue 1300 are used to identify blocks of the flash memory that have been accessed (e.g. read operation). As new blocks of the flash memory are accessed, their identifiers (e.g., block #12) are added the back position of the first queue 1300 (see item 1 of
Before an identifier of a block of flash memory is added to the first queue 1300, the technology disclosed checks to see if there is an identifier of the block of flash memory already included in the first queue 1300 or the second queue 1302. If there is not an identifier of the particular block of flash memory included in the first queue 1300 and there is not an identifier of the particular block of flash memory included in the second queue 1302, then the identifier of the particular block (e.g., block #12) can be added to the backmost position of the first queue 1300.
If a particular block of flash memory that is accessed is already identified in the first queue 1300 (e.g., block #63) (and not already identified in the second queue 1302), then an identifier of the particular block (e.g., block #63) is added to a backmost position of the second queue 1302 (see item 3 of
Specifically,
In
If the accessed block of memory is identified in either of the first or second queues 1300, 1302 (yes, in operation 1504), then operation 1508 determines whether the accessed block of flash memory is specifically identified in the first queue 1300. If the accessed block is determined to be identified in the first queue 1300 (yes, in operation 1508), then operation 1510 updates the second queue 1302 to identify the accessed block. As discussed with reference to
If it is determined at operation 1508 that the accessed block is not identified in the first queue 1300, then operation 1512 determines that the accessed block should be included in the second queue 1302 and then updates the location (position) of the identifier of the accessed block in the second queue 1302, as discussed above with reference to
Next, operation 1514 scans the second queue 1302 to identify any accessed blocks that qualify as read setup candidate blocks (also referred to as candidate read setup blocks). A block can be identified as a read setup candidate block if it has been identified as being present in the second queue 1302 longer than (or equal to) a predetermined threshold. A determination of whether a block has been present in the second queue 1302 longer than (or equal to) the predetermined threshold can be made using a timestamp or a time counter associated with the block in the second queue 1302. If the timestamp or time counter indicates that there has been a time lapse that is longer than (or equal to) the predetermined threshold, then the block has been present in the second queue 1302 longer than (or equal to) the predetermined threshold. The predetermined threshold for identifying read setup candidate blocks can be set to reflect any amount of time. In an example, the predetermined threshold can be set to 9 minutes, such that if the accessed block has been identified in the second queue 1302 for more than 9 minutes, then the accessed block will be identified as a read setup candidate block. The timestamp or time counter of the identified and accessed block can be set to zero when the block is first identified in the second queue 1302 or when it is moved to a backmost position in the second queue 1302 (as discussed below, the timestamp or time counter can be updated each time a scanning procedure is performed). The timestamp or time counter can be set relative to a time at which a block has been assessed and/or identified on the first and/or second queues 1300, 1302. For example, the timestamp or time counter of the identified and accessed block can be set to reflect a time (e.g., system clock time) at which the accessed block is identified in the first queue 1300 or it can be set to reflect a time (e.g., system clock time) at which the accessed block is initially identified in the second queue 1302 (e.g., when the identifier of the accessed block is moved from the first queue 1300 to the second queue 1302). The timestamp or time counter of the accessed block can also be set to reflect a time at which the location (position) of the identifier of the accessed block is moved to the back of the second queue 1302, as discussed above with reference to operation 1512. Other techniques for setting and/or changing the timestamp or time counter, such as those described below with reference to
Once the read setup candidate blocks have been identified, operation 1516 performs a read setup operation on the read setup candidate blocks. The read setup operation can be performed according to any of the techniques described herein. In an embodiment, the read setup operation may not be performed on all of the read setup candidate blocks, as other qualifications for performing the read setup operation on blocks may be considered. In an embodiment, the read setup operation is performed only on a portion of block, such as a particular page of the block. The page of the block can be identified using the same techniques described above or the page of the block can be identified in the identifier of the block itself as the block is identified in the first and second queues 1300 and 1302. Accordingly, the read setup operations can be performed on a page-by-page basis. Therefore, a read setup operation being performed on an identified block can include performing the read setup operation on a page of the block, on multiple pages of the block or on all pages of the block. These techniques for performing the read operation on a portion of a block (e.g., a page of a block) can be implemented by all other read setup operation techniques described herein.
Specifically,
At operation 1602, during the scanning a determination is made as to whether a time lapse of a particular block identified in the second queue 1302 is greater than (or equal to) the predetermined threshold (e.g., has a particular block been identified as being present in the second queue 1302 longer than a predetermined threshold). If the time lapse for that particular block is greater than (or equal to) the predetermined threshold, then operation 1604 can add an identifier of the particular block to a read setup list in operation 1604. Next, operation 1606 determines whether all positions of the second queue 1302 have been scanned. If they have not been scanned (no, at operation 1606), then operation 1602 checks the time lapse of another block identified in the second queue 1302.
If, on the other hand, operation 1602 determines that the time laps does not exceed (or equal) the predetermined threshold, then the identifier of the particular block is not added to the read setup list and operation 1606 checks to see if all positions of the second queue 1302 have been scanned. As illustrated, once all positions of the second queue 1302 have been scanned (i.e., yes in operation 1606), then operation 1608 performs the read setup operations on the blocks of the memory that are included in the read setup list by, for example, sending read setup commands to the memory. Further, for example, operation 1608 can send read setup commands from a host (e.g., a memory controller) to the memory 2308, such that the read setup commands are received by command decoder/control circuits 2334 of the memory 2308, then scheduled by a state machine of the memory 2308 and then executed on the memory 2308. After the read setup operations have been initiated and/or completed the read setup list can be cleared, so that it can be repopulated the next time the second queue 1302 is scanned (e.g., once the predetermined time increment has expired and it is time for the scanning operations to begin again).
Specifically,
At operation 1701, the scanning starts at position n of the second queue 1302. As discussed above, the scanning can start at a frontmost position, a backmost position or any other position of the second queue 1302. In this example, the scanning at operation 1701 will begin at the frontmost position of the second queue 1302, where n represents the number of positions in the second queue 1302. For example, if the second queue 1302 includes 12 positions for identifying different blocks of the memory, then n could initially equal 11 in operation 1701. This could be done in the reverse order, where n could start at 0 and increment up to 11 if there are 12 positions in the second queue 1302.
At operation 1701, a determination is made as to whether the time lapse for the block identified at position n (e.g., position 12, where n equals 11) is greater than (or equal to) the predetermined threshold.
In an embodiment, if the time lapse is not greater (or equal to) the predetermined threshold, then operation 1708 can increment the timestamp or time counter associated with the identifier of the block. In this particular embodiment, the timestamp or time counter associated with the block would initially be set to, for example 0 when the identifier of the block is added to the second queue 1302. Then, when the operation 1708 is performed, the timestamp or time counter will be incremented by the same time that the scanning is set to repeat. For example, if the scanning is set to repeat every 1 minute, then each time the scanning is performed and the identified block is still below the predetermined threshold, the timestamp or time counter will be incremented by 1 minute. Eventually, the timestamp or time counter associated with that particular block will be sufficiently incremented so that it equals or is greater than the predetermined threshold.
In another embodiment, operation 1708 can be omitted when the timestamp or time counter associated with the particular block is based on the system clock time at which the identifier of the particular block was added to, for example, the second queue 1302 (or the time at which the identifier was added to the first queue 1300 or the time at which the identifier was moved to the front of the second queue 1302 from another position in the second queue 1302). In this embodiment, there is no need for operation 1708, because the timestamp or time counter associated with the identifier of the particular block can be compared to the current system clock time to determine whether or not sufficient time has passed to meet or exceed the predetermined threshold. In this embodiment, operation 1708 is omitted, such that if operation 1701 results in “no,” then operation 1704 is performed to determine whether or not the backmost position of the second queue 1302 has been scanned. In an embodiment, the second queue 1302 is scanned starting from the frontmost position and ending with the backmost position, as described above. Therefore, if the backmost position has been scanned, then all of the positions will have been scanned. In another embodiment where, perhaps, the scanning starts at the backmost position heading towards the frontmost position, operation 1704 will determine whether the frontmost position has been scanned. Furthermore, in another embodiment, operation 1704 can simply determine whether or not all of the positions in the second queue 1302 have been scanned.
Moving back to the description of operation 1701, if the time lapse is greater than (or equal to) the predetermined threshold, then operation 1702 will add the identifier of the particular block that is in position n of the second queue 1302 to a read setup list. Once the identifier is added to the read setup list, operation 1704 determines whether the backmost position of the second queue 1302 has been scanned (i.e., whether all of the positions have been scanned).
If the backmost position has not yet been scanned, the value of n is decremented by one in operation 1706 so that operation 1701 can be performed on the next block in the second queue 1302. Note that in another embodiment, operation 1706 could increment the value of n, in a situation where, for example, n starts with a value of 0. This cycle will continue until all of the positions have been scanned.
Once all of the positions have been scanned (i.e., yes in operation 1704), operation 1608 performs read setup operations on blocks that are identified in the read setup list. After the read setup operations are performed, the read setup list can be cleared out so that the next time the scanning is performed at the predetermined time the read setup list will be empty.
Specifically,
Furthermore, as illustrated in
As the scanning is performed, if a particular timestamp or time counter (e.g., timestamp (Y)) associated with a particular block (e.g., block #06) is greater than (or equal to) the predetermined threshold, then an identifier of that particular block is added to the read setup list 1800.
The read setup list 1800 can be formed so as to have the same number of positions as the second queue 1302, such that there can be one-to-one mapping from the positions in the second queue 1302 to the positions in the read setup list 1800. Other types of read setup lists can be used that do not have a one-to-one mapping to the second queue 1302. Once the scanning iteration is complete, the read setup operations are performed on the blocks that are identified in the read setup list 1800. As mentioned above with respect to
In the early lifetime of blocks of memory, there may not be a need to perform the read setup operations because the rate at which the threshold voltages deviate over time is not yet undesirable. Therefore, in an embodiment of the technology disclosed, the read setup operations will only be performed on blocks have been sufficiently used.
If the number of errors (e.g., the ECC error count) is greater than (or equal to) the ECC threshold, then operation 1906 adds an identifier of the particular block to a read setup permitted list and then operation 1902 will be performed to identify another block. If the ECC error count is not greater than (or equal to) the ECC threshold (i.e., no at operation 1904) the identifier of the particular block is not added to the read setup permitted list and operation 1902 will be performed to identify another block. Further, if operation 1904 determines that the ECC error count is great than (or equal to) the ECC threshold for a particular block, then the block can be identified in the first or second queues 1300, 1302 or it can be identified in the read setup list (i.e., identified as a read setup candidate) regardless of whether the particular block of memory has been identified as present in the second queue 1302 longer than the predetermined threshold or regardless of whether the particular block of memory has been identified in any of the first and/or second queues 1300, 1302.
Using the ECC error count is only one way of determining whether a particular block of memory has been sufficiently used in order to be a read setup candidate. Other types of usage can be considered, such as the number of program and erase (PE) cycles of the particular block. Similar to what is describe above regarding the ECC error count, a list can be maintained the keeps track of the number of PE cycles for each block. If the number of PE cycles are greater than (or equal to) a particular PE threshold for a particular block, then an identifier of the block will be added to the read setup permitted list. Other techniques for determining whether a particular block of memory has been sufficiently used can also be implemented along with the ECC error count and/or the PE cycle count, or on their own.
In an embodiment of the technology disclosed, the read setup operations can be performed on blocks that are identified in the setup permitted list without using the techniques described above that use the first and second queues 1300, 1302. Or, as described below with reference to
Specifically,
Operation 2002 of
Specifically,
The controller 2102 can identify or obtain information identifying a number of sequential read setup blocks 2104 and an address of a first read setup block 2106 of the sequence of sequential read setup blocks. The (sequential or non-sequential) read setup blocks can be identified as candidates for read setup operations using any of the techniques described herein, such as using the first and second queues 1300, 1302, etc. Furthermore, the read setup blocks can also be non-sequential blocks of the memory. The “number” of the sequential read setup blocks represents the actual number of blocks of the flash memory 2100 that are candidates for the read setup operations and that are in sequential order. Alternatively, the controller 2102 can identify the first and last blocks of the sequence of the sequential read setup blocks or it can identify addresses of the first and last blocks of the sequence of sequential read setup blocks.
The controller 2102 generates a read setup burst command that identifies (i) an address of a first block in a set of (sequential or non-sequential) read setup blocks and (ii) a number of read setup blocks, as candidates for read setup operations and then provides the generated read setup burst command to the flash memory 2100. The generated read setup burst command can include additional information, as described herein. Alternatively, the read setup burst command can identify the first and last blocks of a sequence of sequential read setup blocks or it can identify addresses of the first and last blocks of a sequence of sequential read setup blocks.
As illustrated in
In response to receiving the read setup burst command from the controller 2102 or in response to decoding the read setup burst command, the flash memory 2100 can then perform the read operations on a plurality of read setup blocks of the set of read setup blocks. The receiving and/or decoding of the read setup burst command initiates a read setup burst operation on the flash memory 2100 that includes performing the read operations on a plurality of read setup blocks of the set of read setup blocks.
The controller 2102 can be part of a host, as discussed in more detail with reference to
Specifically,
In operation 2202, the controller 2102 can generate and send the read setup burst command to the flash memory 2100. As discussed above with reference to
After operation 2202 sends the read setup burst command, the controller 2102 can send a polling message to the flash memory 2100. The polling message can request information regarding a status of the read setup burst operation. The polling message can be sent after a predetermined amount/period of time has passed since the read setup burst command has been sent or it can be sent immediately after the read setup burst command has been sent. Alternatively, the polling message can be sent along with the read setup burst command.
Operation 2206 determines whether the controller 2102 has received a message from the flash memory 2100 indicating that the read setup burst operation is complete. If the message has not yet been received, operation 2204 can send another polling message to the flash memory 2100. If the message has been received from the flash memory 2100, then operation 2202 can generate and send another read setup burst command to the memory 2100. Operation 2204 is optional and the controller 2102 can just wait until the message indicating complete is received in operation 2206 before operation 2202 can be performed again. Alternatively, the controller 2102 can wait a predetermined amount of time before operation 2202 can be performed again.
In response to receiving the read setup burst command from the controller 2102, the flash memory 2100, operation 2208, can decode the read setup burst command, initiate the read setup burst operation starting at an address of the first block (or an address of a page of the first block). In an embodiment, operation 2208 can set a counter that is equal to the number identified in the read setup burst command and set a current block number to identify the first read setup block of the sequence of read setup blocks. For example, if the read setup burst command includes an address that identifies block #01, then the current block number identifies block #01 and if the read setup burst command identifies 99 blocks in the sequence of the read setup blocks, then the counter is set to 99.
Operation 2210, which is optional, determines whether or not the current block (identified by the current block number) is a bad block. In the example from above, operation 2210 would be performed on block #01, which was identified based on the address included in the read setup burst command. Operation 2210 can identify a bad block from a list or using logic and/or circuitry. A block can be identified as a bad block based on its performance, amount of use or other factors. If the current block (identified by the current block number) is not a bad block, then operation 2212 performs a read setup operation on the current block. If the current block (identified by the current block number) is determined to be a bad block, then the read setup operation is not performed on that block (i.e., operation 2212 is skipped), such that operation 2214 moves on to the next block (e.g., increments the current block number by 1) and adjusts the counter (e.g., decrements the counter by 1).
Continuing from the example from above, operation 2210 determines whether block #01 is a bad block. If block #01 is not a bad block (i.e., it is a good block), then operation 2212 performs the read setup operation on block #01.
Operation 2214 increments the block number by 1, so as to identify block #02, which is the next block in the sequence of the read setup blocks, as the current block. Operation 2214 also decreases the counter by a value of 1, such that the counter equals 98. Operation 2214 may not increment the current block number if the current block number identifies the last block in the sequence of sequential blocks. One way to determine whether the current block number is the last block in the sequence of the sequential block is to use the value of the counter. For example, if at operation 2214 the counter has a value of 1 before being decremented in operation 2214 or if the counter has a value of 0 after being decremented, then it can be determined that the current block is the last block in the sequence of the sequential read setup blocks and the incrementing of the current block number can be omitted.
After the counter is decremented by 1, operation 2216 determines whether the counter equals 0. If the counter does not equal 0, then optional operation 2210 and/or operation 2212 can be performed on the current block (note that the current block is now a different block, as the number identifying the current block has been updated in operation 2214). The counter can also start at a certain number that is below the number identified in the read setup burst command and increment up to the number identified in the read setup burst command.
From the example above, the current block number now identifies block #02 and the counter equals 98. Therefore, after operation 2216 determines that the counter does not equal 0, then operation 2210 will determine whether block #02 is a bad block. As discussed above, operation 2210 is optional. Therefore, if operation 2210 is omitted, then the determination that the counter does not equal 0 in operation 2214 can result in operation 2212 performing the read setup operation on block #02, which is now identified as the current block.
This loop of operations 2210, 2212, 2214 and 2216 will continue until the counter does equal 0 (i.e., all of the blocks in the sequence of read setup blocks have been considered. In the example from above, these operations will continue until the counter is decremented from 99 to 0, which will result in the read setup operations being performed on blocks #01 through #99, assuming that no bad blocks were identified in optional operation 2210. In response to the counter equaling 0, operation 2218 can transmit a message to the controller 2102 indicating that the read setup burst operation is complete. As discussed above, the message indicating “complete” can be used to allow the controller 2102 to perform operation 2202.
The read setup blocks can be sequential or non-sequential and can be identified using lists, such as the first and second queues 1300, 1302, etc. For example, a read setup list of candidate read setup blocks can be maintained and the set of read setup blocks can include read setup candidate blocks in the read setup list. A determination can be made as to whether any of the candidate read setup blocks are in sequential order as addressed in the memory. In response to the determination that there are candidate read setup blocks in sequential order, the candidate read setup blocks that are in the sequential order can be identified as the plurality of read setup blocks of the set of read setup blocks upon which the read setup burst operation is performed. Furthermore, the controller 2102 or the memory 2100 can identify a first set of candidate read setup blocks from the read setup list (where the first set includes two or more candidate read setup blocks that are in sequential order as addressed in the memory), identify a second set of candidate read setup blocks from the read setup list, (where the second set includes two or more candidate read setup blocks that are in sequential order as addressed in the memory, and the second set includes candidate read setup blocks that are different from the candidate read setup blocks included in the first set, determine that the second set of candidate read setup blocks includes more candidate read setup blocks than the first set of candidate read setup blocks, and identify the candidate read setup blocks from the second set as the plurality of read setup blocks of the set of read setup blocks upon which the read setup burst operation is performed.
The memory device 2308 in this example includes a memory array 2378 including a plurality of blocks as described above, each having a plurality of sub-blocks, on an integrated circuit substrate. The memory array 2378 can be a NAND flash memory implemented using two-dimensional or three-dimensional array technology.
In various embodiments, the memory device 2308 may have single-level cells (SLC), or multiple-level cells storing more than one bit per cell (e.g., MLC, TLC or XLC).
The memory device 2308 includes a memory array 2378, which can be a NAND flash memory implemented using three-dimensional array technology having one or multiple planes, each plane having multiple blocks, and each block having multiple sub-blocks.
A word line decoder 2376A is coupled via word line driver circuits 2376B to a plurality of word lines 2377 in the memory array 2378. SSL/GSL decoder 2378A is coupled via SSL/GSL driver circuits 2378B by SSL and GSL lines 2379, to bit line side (SSL) and common source side (GSL) string select gates in the array. Page buffer circuits 2338 are coupled by bit line driver circuits 2348 to bit lines 2366 in the memory array 2378. In some embodiments, column decoder circuits can be included for routing data from the bit line drivers to selected bit lines. The page buffer circuits 2338 can store pages of data that define a data pattern for a page program operation, and can include sensing circuits used in read and verify operations.
Bit lines for memory arrays can comprise global bit lines (GBL) and local bit lines. Bit lines generally comprise metal conductors in higher patterned layers that traverse a plurality of blocks of memory cells in an array. The global bit lines are connected to the NAND strings for current flow to and from the bit lines, which in turn are connected to the bit line driver circuits 2348 and page buffer circuits 2338. Likewise, the word lines can include global word lines and local word lines with corresponding supporting circuits 2376B in the word line drivers.
In a sensing operation, sensed data from the page buffer circuits 2338 are supplied via second data lines in bus system 2326 to cache circuits 2328, which are in turn coupled to input/output circuits 2318 via data path links 2316. Also, input data is applied in this example to the cache circuits 2328 on links 2316, and to the page buffer circuits 2338 on bus system 2326, for use in support of program operations. Additionally, the cache circuits 2328 can include a candidate list buffer 2384 that can store and maintain a read setup list of candidate read setup blocks. The read setup list can be received from the host 2302 along with the read setup burst command. Further, the memory 2308 can utilize the read setup list to perform read setup operations on blocks identified on the read setup list.
Input/output circuits 2318 are connected by link 2314 (including I/O pads) and provide communication paths for the data, addresses and commands with destinations external to the memory device 2308, including the host 2302 in this example. The input/output circuits 2318 provide a communication path by link 2316 to cache circuits 2328 which support memory operations. The cache circuits 2328 are in data flow communication (using for example a bus system 2326) with page buffer circuits 2338.
Control circuits 2334 are connected to the input/output circuits 2318, and include command decoder logic, address counters, state machines, timing circuits and other logic circuits that control various memory operations, including program, read, and erase operations for the memory array 2378. Control circuit signals are distributed to circuits in the memory device, as shown by arrows 2345, 2346, as required to support the operations of the circuits. The control circuits 2334 can include address registers and the like for delivery of addresses as necessary to the components of the memory device 2308, including delivery to the cache circuits 2328 and, on link 2344, to the page buffer circuits 2338, word line decoder 2376A and SSL/GSL decoder 2378A in this illustration.
In the example shown in
The control circuits 2334 can include modules implemented using special-purpose logic circuitry including state machines, as known in the art. In alternative embodiments, the control circuits 2334 can include modules implemented using a general-purpose processor, which can be implemented on the same integrated circuit, which execute a computer program to control the operations of the memory device 2308. In yet other embodiments, a combination of special-purpose logic circuitry and a general-purpose processor can be utilized for implementation of modules in control circuits 2334.
The flash memory array 2378 can comprise floating gate memory cells or dielectric charge trapping memory cells configured to store multiple bits per cell, by the establishment of multiple program levels that correspond to amounts of charge stored, which in turn establish memory cell threshold voltages Vt. The technology can be used with single-bit-per-cell flash memory, and with other multiple-bit-per-cell and single-bit-per-cell memory technologies. In other examples, the memory cells may comprise programmable resistance memory cells, phase change memory cells, and other types of non-volatile and volatile memory cell technologies.
In the illustrated example, the host 2302 is coupled to links 2314 on the memory device 2308, as well as other control terminals not shown, such as chip select terminals and so on, and can provide commands or instructions to the memory device 2308. In some examples, the host 2302 can be coupled to the memory device using a serial bus technology, using shared address and data lines. The host 2302 can comprise a general purpose processor, a special purpose processor, a processor configured as a memory controller, or other processor that uses the memory device 2308. All or part of the host 2302 can be implemented on the same integrated circuit as the memory. The memory controller can execute some or all of the processes described with reference to
The host 2302 can update data stored in the memory based on requests from an application program. In general, the host 2302 can include programs that perform memory management functions including, in some embodiments, functions to control or support read setup operations as described herein. Other memory management functions can include, for example, managing the first and second queues, identifying read setup candidates, managing timestamps, managing the read setup list and the read setup permitted list, as well as managing information disclosed herewith related to the determination of the read setup candidate and operations associated therewith and so the read setup burst commands. Additional memory management functions can include wear leveling, bad block recovery, power loss recovery, garbage collection, error correction, and so on. Also, the host 2302 can include application programs, file systems, flash translation layer programs and other components that can produce status information for data stored in the memory, including issuing commands to program data having addresses and data to be programmed.
In the example illustrated in
The host 2302 (e.g., the memory controller) can also include the first queue 1300, the second queue 1302, the read setup list 1800 and the read setup permitted list 2380. The host 2302 can implement the first queue 1300, the second queue 1302, the read setup list 1800 and the read setup permitted list 2380 in the various manners discussed herein. Alternatively, the memory device can include some or all of the first queue 1300, the second queue 1302, the read setup list 1800 and the read setup permitted list 2380 and the control circuits 2334, along with the read setup parameters 2335, can utilize some or all of the first queue 1300, the second queue 1302, the read setup list 1800 and the read setup permitted list 2380 to perform the read setup operations described herein.
A state machine on the memory device can access the read setup parameters, and execute a read setup operation including address generation and applying bias voltages to traverse the memory array to maintain read ready status across the memory. The operation can include a pattern of blocks in one plane or in multiple planes that can be subjected to the read setup operation simultaneously. The operation can be configured to traverse the array or parts of the array as a background operation, without external control. The operation can be configured to operate in response to read setup commands and/or read setup burst commands, carrying the read setup parameters and identifying segments of the array to be operated on by the read setup operation. The read setup commands and or read setup burst commands can be generated by a memory controller in the host for example, which monitors block status, such as by identifying read setup candidate blocks and sending commends identifying the read setup candidate blocks for read setup operations, as well as identifying cold blocks in a wear leveling operation as stale blocks, and can send commands identifying stale blocks, or can send commands during time intervals in which the memory array is idle or expected to be idle. The state machine can set a ready/busy pin on the memory device to signal the control program on the memory controller for coordination of the read setup operations.
A technology is described herein that can execute read setup operations at high speed, and more often than available in prior technologies, thereby improving the memory cell operation window by maintaining the memory cells in condition for having thresholds as set during the program operation. These technologies are particularly beneficial in large high density memory systems. For example, if there are multiple sub-blocks in one block, all the sub-blocks of one block can be subject of the read setup operation simultaneously to improve the speed of the operation. Also, if there are multiple blocks in one memory plane, multiple blocks can be subject of the read setup operation simultaneously to improve the speed of the operation. Also, if there are multiple planes in one memory device, the read setup operation can be applied simultaneously to blocks or sub-blocks in the multiple planes to improve the speed of the operation.
While the technology disclosed is disclosed by reference to the preferred embodiments and examples detailed above, it is to be understood that these examples are intended in an illustrative rather than in a limiting sense. It is contemplated that modifications and combinations will readily occur to those skilled in the art, which modifications and combinations will be within the spirit of the technology disclosed and the scope of the following claims.
Number | Name | Date | Kind |
---|---|---|---|
6327638 | Kirby | Dec 2001 | B1 |
7007193 | Fuld | Feb 2006 | B1 |
9230665 | Hosono | Jan 2016 | B2 |
10211218 | Lue | Feb 2019 | B2 |
10360101 | Kodama et al. | Jul 2019 | B2 |
10521287 | Khoueir et al. | Dec 2019 | B2 |
11270776 | Lien et al. | Mar 2022 | B1 |
20020039311 | Takeuchi et al. | Apr 2002 | A1 |
20040061704 | Ju | Apr 2004 | A1 |
20050146959 | Shiga | Jul 2005 | A1 |
20070140016 | Kamei | Jun 2007 | A1 |
20120047548 | Rowlands | Feb 2012 | A1 |
20120278819 | Cho | Nov 2012 | A1 |
20140016413 | Han et al. | Jan 2014 | A1 |
20160179402 | Iwashiro et al. | Jun 2016 | A1 |
20160205054 | Lu et al. | Jul 2016 | A1 |
20170185299 | Conley et al. | Jun 2017 | A1 |
20200012598 | Feng et al. | Jan 2020 | A1 |
20200226080 | Tarango et al. | Jul 2020 | A1 |
20200278808 | Zhu | Sep 2020 | A1 |
20210366561 | Senoo | Nov 2021 | A1 |
20220028460 | Kurose et al. | Jan 2022 | A1 |
20220068390 | Wang et al. | Mar 2022 | A1 |
Number | Date | Country |
---|---|---|
202038232 | Oct 2020 | TW |
Entry |
---|
U.S. Office Action in U.S. Appl. No. 17/153,525 dated Mar. 31, 2022, 12 pages. |
U.S. Office Action in U.S. Appl. No. 17/234,236 dated Apr. 19, 2022, 16 pages. |
Spinelli, et al., “Reliability of NAND Flash Memories: Planar Cells and Emerging Issues in 3D Devices,” Computers. 2017; 6(2), Apr. 21, 2017, 55 pages. |
Zambelli, et al., “First Evidence of Temporary Read Errors in TLC 3D-NAND Flash Memories exiting from an Idle State,” IEEE J. of the Electron Devices Society, vol. 8, Jan. 10, 2020, 6 pages. |
Number | Date | Country | |
---|---|---|---|
20220342597 A1 | Oct 2022 | US |