This application is based on and claims priority under 35 U.S.C. § 119 to Korean Patent Application No. 10-2023-098998, filed on Jul. 28, 2023, in the Korean Intellectual Property Office, the disclosure of which is incorporated by reference herein in its entirety.
A flash memory device is a nonvolatile memory and may maintain data stored therein even though power thereto is cut off. Recently, storage devices including a flash memory device, such as an embedded multimedia card (eMMC), a universal flash storage (UFS), a solid-state drive (SSD), or a memory card, have been widely used to store or move data.
A flash memory device may perform a background operation, such as reclaim (or read reclaim) or garbage collection. For example, because a flash memory device has the possibility that data stored in some blocks is lost due to degradation over time, a reclaim operation (or a read reclaim operation) of copying data stored in a degraded block to another block may be performed, or a garbage collection operation of generating a new free block by selectively copying valid data stored in blocks to another block may be performed.
However, due to the background operation, an internal input/output operation (IO) (e.g., an internal IO) may be performed between a memory controller and a memory device, and a host IO operation (e.g., a host IO) according to a host's request cannot be performed during the background operation, and thus, the performance of a flash memory device may be degraded such that a response to the host is delayed.
The subject matter of the present application relates to a memory controller for performing an efficient background operation by setting a ratio between a host input/output (IO) operation and an internal IO operation, an operation method of the memory controller, and a storage device.
In general, according to some aspects, the subject matter of the present disclosure is directed to a memory controller including: a health grade determining circuit configured to determine a health grade of a first block based on a combination of an error detecting result of data read from at least one page of the first block among a plurality of blocks included in a memory device and block information related to determination of a degree of degradation of the first block; and an IO ratio setter circuit configured to set, according to the determined health grade, an IO ratio between a host IO operation that exchanges data with the memory device in response to a request from a host and an internal IO operation that exchanges data with the memory device in relation to a background operation on the memory device, wherein the memory controller performs the host IO operation and the internal IO operation with the memory device according to the set IO ratio during a period in which the background operation on the first block is performed.
In general, according to some aspects, the present disclosure is directed to an operation method of a memory controller, in which the method includes: triggering a background operation on a first block among a plurality of blocks included in a memory device, according to an error detecting result of data read from at least one first page of the first block; setting an IO ratio between a host IO operation that exchanges data with the memory device in response to a request from a host and an internal IO operation that exchanges data with the memory device in relation to a background operation on the memory device, as a first value according to a health grade of the first block, determined based on block information related to determination of a degree of degradation of the first block and an error detecting result of data read from at least one second page of the first block; and performing the host IO operation and the internal IO operation with the memory device according to the IO ratio set as the first value, during a period in which the background operation on the first block is performed.
In general, according to some aspects, the present disclosure is directed to a storage device including: a nonvolatile memory device including a plurality of blocks; and a memory controller configured to perform a host IO operation that exchanges data with the nonvolatile memory device in response to a request from a host and to perform an internal IO operation that exchanges data with the nonvolatile memory device in relation to a background operation on the nonvolatile memory device, wherein the memory controller is further configured to set, as a first value, a performing ratio of the internal IO operation to the host IO operation with respect to a first block among the plurality of blocks based on block information related to determination of a degree of degradation of the first block and set, as a second value, a performing ratio of the internal IO operation to the host IO operation with respect to a second block among the plurality of blocks based on block information related to determination of a degree of degradation of the second block, and when the first value is greater than the second value, a speed of a background operation on the first block is faster than a speed of a background operation on the second block.
Implementations of the present disclosure will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings in which:
Referring to
For example, the memory system 10 may communicate with a host through various interfaces, e.g., a universal serial bus (USB) interface, a multimedia card (MMC) interface, an embedded multimedia card (eMMC) interface, a peripheral component interconnection (PCI) interface, a PCI-express (PCI-E) interface, an advanced technology attachment (ATA) interface, a serial-ATA interface, a parallel-ATA interface, a small computer small interface (SCSI), an enhanced small disk interface (ESDI), an integrated drive electronics (IDE) interface, a Firewire interface, a universal flash storage (UFS) interface, and a nonvolatile memory express (NVMe) interface.
According to some implementations, the memory device 200 may include an NVM device, such as flash memory. In some implementations, the memory system 10 may be implemented by an embedded or detachable memory in an electronic device, and for example, the memory system 10 may be implemented in various forms, such as an embedded UFS memory device, an eMMC, a solid state drive (SSD), a UFS memory card, a compact flash (CF) card, a secure digital (SD) card, a micro-SD card, a mini-SD card, an extreme digital (xD) card, and a memory stick. In addition, the memory system 10 may be referred to as a storage device when data is stored in a nonvolatile manner.
The memory controller 100 may control the memory device 200 in response to a write/read request from a host so that data stored in the memory device 200 is read or data is written on the memory device 200. For example, the memory controller 100 may include a processor 110, and the processor 110 may control a general internal operation of the memory controller 100 and control a memory operation on the memory device 200. Particularly, the memory controller 100 may control write, read, and erase operations on the memory device 200 by providing an address ADD, a command CMD, and a control signal CTRL to the memory device 200. In addition, data DATA to be stored in the memory device 200 and the data DATA read from the memory device 200 may be exchanged between the memory controller 100 and the memory device 200.
The memory cell array 210 may include a plurality of memory cells, e.g., flash memory cells. Hereinafter, the implementations are described in detail by assuming that the plurality of memory cells are NAND flash memory cells. However, the inventive concept is not limited thereto, and in some implementations, the plurality of memory cells may be resistive memory cells, such as resistive random access memory (ReRAM), phase change random access memory (PRAM), or magnetic random access memory (MRAM).
In some implementations, the memory cell array 210 may include a three-dimensional memory cell array, the three-dimensional memory cell array may include a plurality of NAND strings, and each NAND string may include memory cells respectively connected to word lines vertically stacked on a substrate. However, the inventive concept is not limited thereto, and in some implementations, the memory cell array 210 may include a two-dimensional memory cell array, and the two-dimensional memory cell array may include a plurality of NAND strings in row and column directions.
The voltage generator 220 may generate various kinds of voltages, e.g., a program voltage for a program operation and a read voltage for a read operation, to be used in the memory device 200. In addition, the voltage generator 220 may variously adjust the levels of the program voltage and the read voltage based on control by the control logic 230.
The control logic 230 may control a general operation of the memory device 200, for example, output various kinds of internal control signals for programming data on the memory cell array 210 or reading data from the memory cell array 210, based on the command CMD, the address ADD, and the control signal CTRL received from the memory controller 100. In addition, the control logic 230 may output a voltage control signal (not shown) for adjusting the levels of the various kinds of voltages to be output from the voltage generator 220 in relation to a program operation, a read operation, and an erase operation.
The memory system 10 may perform a memory operation in response to a request from the host, and the memory controller 100 may provide write data to the memory device 200 or receive read data from the memory device 200. That is, the memory controller 100 may perform a host input/output (IO) with the memory device 200 in response to a request from the host.
In addition, the memory system 10 may perform a background operation as an internal process irrelevant to a request from the host, and for example, the background operation may include various kinds of operations, such as reclaim (or read reclaim) and garbage collection. For example, the memory system 10 may copy data stored in a degraded block (or a source block) to another block (or a destination block) by performing a reclaim operation and may also generate a new free block by selectively copying valid data stored in a plurality of source blocks to one or more destination blocks in a garbage collection operation. In such a background operation, data read from the memory device 200 may be provided to the memory controller 100, and in addition, data may be provided from the memory controller 100 to the memory device 200 to copy the data. That is, the memory controller 100 may perform an internal IO with the memory device 200 in relation to a background operation.
For example, during a period until reclaim is completed after the reclaim was triggered, the memory system 10 may perform both a reclaim operation and a memory operation in response to a request from the host. For example, according to a certain set ratio, the memory controller 100 may transmit and receive data to and from the memory device 200 in response to a request from the host and in relation to a background operation irrelevant to a request from the host. The memory controller 100 may set an IO ratio indicating a performing ratio of an internal IO operation (“internal IO”) to a host IO operation (“host IO”, or the other way, and perform the host IO and the internal IO according to the set IO ratio. Accordingly, as the performing ratio of the host IO is set high, a response to a request from the host may be quickly provided, and thus, the performance of the memory system 10 may be improved. However, as the performing ratio of the internal IO is set low, the time taken for the background operation increases because the speed of a background operation decreases, and thus, data stored in a degraded block may be lost, thereby increasing the possibility of the occurrence of an uncorrectable error correction code (UECC) error.
On the contrary, as the performing ratio of the internal IO is set high, the time taken for the background operation decreases because the speed of the background operation increases, and thus, the possibility of the occurrence of a UECC error may decrease, thereby improving data stability. However, when the performing ratio of the host IO is set low, a response to a request from the host may be delayed, and thus, the performance of the memory system 10 may degrade. That is, it is necessary to perform an efficient background operation such that the performance of a response to the host is not degraded while maintaining the reliability of the memory system 10.
Some example implementations are described below.
The memory controller 100 may further include an error correction code (ECC) circuit 120, a health grade determining circuit 130, and an IO ratio setting circuit 140. The ECC circuit 120 may perform an error detecting operation and an error correction operation based on a certain algorithm, on data read from the memory device 200. For example, the ECC circuit 120 may detect the number of errors that occurred or a bit error rate (BER) in a certain error detecting unit (e.g., a page unit), and the memory controller 100 may determine whether to perform a background operation in a block unit, according to an error detecting result. In the description of implementations below, although a reclaim operation is described as an example of a background operation, implementations are applicable to other various types of background operations in which an internal IO is performed. In addition, an error detecting result may include various kinds of detecting results including the number of errors that occurred, a BER, and the like with respect to data of a certain error detecting unit.
, the health grade determining circuit 130 may determine the health grade of a block on which reclaim is to be performed. In addition, the IO ratio setting circuit 140 may adjust the speed of a reclaim operation by setting a ratio between a host IO and an internal IO for performing a reclaim operation on a corresponding block, based on the determined health grade. For example, if the ratio of the host IO is set high, a data transmission and reception frequency according to a request from the host may increase between the memory controller 100 and the memory device 200. Otherwise, if the ratio of the internal IO is set high, a data transmission and reception frequency for a reclaim operation may increase between the memory controller 100 and the memory device 200.
If it is determined based on error detecting or the like that the reliability of a block is degraded, a reclaim operation on the block may be triggered. In this case, it is necessary that the reclaim operation on the block is completed before a UECC error occurs, and the memory controller 100 may set an IO ratio for completing the reclaim operation within a read reclaim (RR) to UECC value (the allowed number of reads after reclaim triggering). For example, when the RR to UECC value is large, a relatively large number of read operations are allowed even after reclaim is triggered, and thus, a host IO ratio may be set high when the IO ratio is set. However, because the reliability of a flash memory device, such as VNAND, may decrease due to a cause, such as an increase in the number of stages or the like in the flash memory device, the RR to UECC value may decrease, and thus, there may be limitations on how high the host IO ratio may be set. In addition, when the IO ratio is calculated based on a worst case of the RR to UECC values of a plurality of NAND chips included in a flash memory device and a plurality of blocks included in each NAND chip, the performing frequency of the host IO may further decrease.
On the other hand, an IO ratio may be set based on a health grade determined on a block on which a reclaim operation is to be actually performed instead of based on the RR to UECC value of a most degraded block, and thus setting the host IO ratio excessively lower than an actual degree of degradation of a block may be prevented or avoided, thereby maintaining the optimal performance of the memory system 10. For example, according to error detecting results of blocks on which reclaim is to be performed, IO ratios of different values may be set for the blocks.
In addition, in implementations, the health grade determining circuit 130 may further receive block information (not shown) related to a plurality of blocks included in the memory cell array 210 and determine the health grade of each block based on a combination of an error detecting result and the block information. For example, the block information may include at least some of pieces of information, such as a block write/erase count value, a current temperature, a block location (or block address information), and a reliability index (RI). The block information may be stored in the memory device 200 in a nonvolatile manner and provided to the memory controller 100 when the memory system 10 is initially driven. Alternatively, the block information may be stored in a storing circuit (not shown) of the memory controller 100 in a nonvolatile manner and provided to the health grade determining circuit 130 when a health grade is determined.
In addition, a portion of the block information may be determined through a test in a manufacturing process of the memory system 10 and stored in the memory controller 100 and/or the memory device 200. In addition, the other portion of the block information may be detected or determined during an operation of the memory system 10 and determined and changed through various kinds of circuits in the memory controller 100 and/or the memory device 200. A health grade may be differently determined for each block based on the various kinds of information described above, and the health grade may be related to the RR to UECC value of a corresponding block.
Although it is shown in the implementation of
In addition, although it has been described above that the IO ratio setting refers to block information, this term may be variously defined. For example, IO ratio setting may refer to various kinds of information that influence the reliability of the memory device 200, e.g., chip unit information, information detected from the memory system 10, and other kinds of information. That is, in certain implementations, block information may include not only information related to a corresponding block but also various kinds of information which may be related to the reliability of the memory system 10.
Referring to
The working memory 350 may be implemented by various kinds of memories, e.g., at least one of cache memory, dynamic random access memory (DRAM), static random access memory (SRAM), PRAM, and MRAM. In addition, as an example of the firmware, an FTL may be loaded in the working memory 350, and various functions related to a flash memory operation may be performed by driving the FTL.
The host interface 310 may communicate with a host through various kinds of interfaces according to the implementation described above. In addition, the memory interface 320 provides a physical connection between the memory controller 300 and the memory device. For example, a command/address, data, and the like may be exchanged between the memory controller 300 and the memory device through the memory interface 320.
The ECC circuit 340 may perform ECC encoding processing on data requested to be written and may perform ECC decoding processing on read data. The ECC circuit 340 may generate an error detecting result by performing ECC decoding processing on certain-unit data read from the memory device. For example, data read from a page of a block according to reading in response to a request from the host or internal reading of a memory system may be provided to the ECC circuit 340, and whether reclaim on the block is performed may be determined based on an error detecting result of the ECC circuit 340. For example, if the number of errors that occurred in the read data is greater than a certain reference value, or if the BER of the read data is greater than a certain reference value, the block may be selected as a reclaim target.
The block information storing circuit 380 may include storing elements storing certain information in a nonvolatile manner and store pieces of block information BLK Info about a plurality of blocks included in the memory device. For example, a test process on a plurality of blocks included a chip (e.g., a NAND chip) may be performed in a manufacturing process of the memory system, and the reliability index (RI) of the NAND chip and/or the plurality of blocks may be measured and stored in the block information storing circuit 380.
The health grade determining circuit 360 may determine the health grade of a block on which reclaim is to be performed, by using at least some of the error detecting result of the ECC circuit 340, block information BLK Info from the block information storing circuit 380, and pieces of information provided from various kinds of circuits included in the memory system. In addition, according to the implementation described above, the IO ratio setting circuit 370 may set an IO ratio related to a reclaim operation on the block on which reclaim is to be performed, based on the health grade determined for the block on which reclaim is to be performed. For example, a block determined to have a health grade indicating a relatively low degree of degradation may be set to have a higher performing ratio of a host IO than a block determined to have a health grade indicating a relatively high degree of degradation.
Each of the health grade determining circuit 360 and the IO ratio setting circuit 370 shown in
Referring to
Referring to
The at least one sample page may be selected from among a plurality of pages included in the first block, and sample pages at the same or different locations may be set for a plurality of blocks. For example, in each block, a sample page may correspond to at least one page having relatively low reliability among a plurality of pages. In addition, in an implementation, a sample page set for each block may be tested and determined in a manufacturing process of a memory device, and information indicating the location of the sample page may be stored in the memory device or a memory controller.
In addition, block information of the first block may be determined in operation S13, and according to the implementations described above, the block information may include various pieces of information, such as pre-stored information, pieces of information (e.g., a write/erase count value, temperature information, and the like) generated by various kinds of circuit blocks in the memory system, and a block address indicating the location of the first block. In addition, in operation S14, the health grade of the first block may be determined based on a combination of an error detecting result and the block information and the IO ratio of the first block may also be set based on a result of the determination of the health grade. An RR to UECC value of the first block may be calculated or estimated according to the determined health grade, and a ratio between a host IO and an internal IO may be set to correspond to the determined health grade. In addition, in a process of performing reclaim on the first block, a host IO and an internal IO may be performed according to the set ratio in operation S15.
Although it is illustrated in the description above that reclaim is triggered based on an error detecting result of a random page by a host request or internal reading and a health grade is determined based on an error detecting result of a sample page, implementations may be variously modified. For example, a health grade may be determined based on an error detecting result of a random page by a host request or internal reading. Alternatively, a health grade may be determined by combining an error detecting result of a random page and an error detecting result of a sample page.
Referring to
If it is determined that the first block has a low health grade, the allowed number of reads before a UECC error occurs is small, and thus, it is necessary that the internal IO ratio of the first block is set to be relatively higher than in a case where a health grade is high. Otherwise, if it is determined that the first block has a high health grade, the allowed number of reads before a UECC error occurs is large, and thus, the internal IO ratio of the first block is set to be relatively lower than in a case where a health grade is low. That is, when reclaim on any one block is performed, according to the degree of degradation of a block, the speed of a reclaim operation may be increased by setting an internal IO ratio high (or setting a host IO ratio low) or a response to a request from a host may be quickly provided by setting the internal IO ratio low (or setting the host IO ratio high).
Referring to
The memory cell array 510 may be connected to word lines WL, string select lines SSL, ground select lines GSL, and bit lines BL. The memory cell array 510 may be connected to the address decoder 520 through the word lines WL, the string select lines SSL, and the ground select lines GSL and connected to the page buffer 530 through the bit lines BL. The memory cell array 510 may include a plurality of memory blocks BLK1 to BLKn.
Each of the plurality of memory blocks BLK1 to BLKn may include a plurality of pages PG1 to PGm. Each of the plurality of pages PG1 to PGm may correspond to a data program or read unit in one memory block. In some implementations, memory cells included in each of the plurality of pages PG1 to PGm may be connected to the same word line. The address decoder 520 may select one of the plurality of memory blocks BLK1 to BLKn in the memory cell array 510, select one of the word lines WL of the selected memory block, and select one of the string select lines SSL.
The control logic 550 may output various kinds of control signals for performing program, read, and erase operations on the memory cell array 510, based on the command CMD, the address ADD, and the control signal CTRL. The control logic 550 may provide a row address X-ADD to the address decoder 520, provide a column address Y-ADD to the page buffer 530, and provide a voltage control signal CTRL_Vol to the voltage generator 540.
In some implementations, the control logic 550 may perform a reclaim operation in a unit of each of the plurality of memory blocks BLK1 to BLKn. For example, the control logic 550 may perform a read operation on pages of a source block for which reclaim has been triggered among the plurality of memory blocks BLK1 to BLKn, copy the read data to a destination block, and perform an erase operation on the source block after the copy operation is completed. In addition, the control logic 550 may control a garbage collection operation on the plurality of memory blocks BLK1 to BLKn, e.g., selectively read valid data stored in two or more source blocks and copy the read valid data to one or more destination blocks. The number of source blocks may be greater than the number of destination blocks, and accordingly, one or more blocks may be free based on the garbage collection operation.
The page buffer 530 may operate as a write driver or a sense amplifier according to an operation mode. In a read operation, the page buffer 530 may sense a bit line BL of a memory cell selected under control by the control logic 550. The page buffer 530 may dump sensed data to the IO circuit 560 under control of the control logic 550. The IO circuit 560 may transmit and receive various kinds of signals/data to and from a memory controller (not shown) outside the memory device 500, and the host IO and the internal IO in the implementations described above may be performed through the IO circuit 560.
The control logic 550 may receive, from the memory controller, an address (e.g., a host address HOST ADD) for a memory operation according to a request from a host or an address (e.g., an internal address Internal ADD) for an internal processing operation, such as a reclaim operation. In addition, when performing an IO operation with the memory controller, the IO circuit 560 may perform a host IO for transmitting and receiving data in response to a request from the host or perform an internal IO for transmitting and receiving data related to an internal processing operation, such as a reclaim operation. In addition, according to the implementations described above, the health grade of a block for which reclaim has been triggered among the plurality of memory blocks BLK1 to BLKn may be determined, and a ratio between a host IO and an internal IO for the block may be set according to a result of the determination.
In addition, a sample page may be set for each of the plurality of memory blocks BLK1 to BLKn, and the sample page may include one or more pages in each block. Address information of a sample page may be generated through a test operation in a manufacturing process of the memory device 500 and stored in the memory device 500 and/or the memory controller. Alternatively, the error occurrence frequencies of pages in a block may be detected while driving the memory device 500, and at least one page having the lowest reliability may be determined as a sample page.
Referring to
After forming the peripheral circuit in the second semiconductor layer L2, the first semiconductor layer L1 including the memory cell array 210 may be formed, and metal patterns may be formed for electrically connecting the word lines WL and the bit lines BL of the memory cell array 210 to the peripheral circuit formed in the second semiconductor layer L2. For example, the bit lines BL may extend in a first horizontal direction or first direction HD1, and the word lines WL may extend in a second horizontal direction or second direction HD2.
Referring to
Referring to
A plurality of pillars P sequentially arranged in the first direction HD1 and passing through the plurality of insulating layers IL in the vertical direction VD are provided on the substrate SUB. For example, the plurality of pillars P may be in contact with the substrate SUB by passing through the plurality of insulating layers IL. Particularly, a surface layer S of each pillar P may include a silicon material having a first type and function as a channel region. Accordingly, a pillar P may be referred to as a vertical channel structure. An internal layer I of each pillar P may include an insulating material, such as silicon oxide, or an air gap.
A charge storage layer CS is provided along exposed surfaces of insulating layers IL, pillars P, and the substrate SUB. The charge storage layer CS may include a gate insulating layer, a charge trap layer, and a blocking insulating layer. For example, the charge storage layer CS may have an oxide-nitride-oxide (ONO) structure. In addition, a gate electrode GE including a ground select line GSL, a string select line SSL, and word lines WL0 to WL7 is provided to an exposed surface of the charge storage layer CS. In addition, the charge storage layer CS, the surface layer S, and the ground select line GSL may function as a gate select transistor GST. The charge storage layer CS, the surface layer S and the string select line SSL may function as a string select transistor SST. Drains DR are provided on the plurality of pillars P. For example, the drains DR may include a silicon material doped with impurities having the second conductive type. Bit lines BL1 to BL3 extending in the first direction HD1 and separated from each other by a particular distance in the second direction HD2 are provided on the drains DR.
Referring to
For example, an error detecting result may indicate a ratio of the number of error bits which occurred in a sample page to the number of error bits correctable by an ECC circuit employed in a memory system, and it may be determined that the degree of degradation of a block decreases as the ratio decreases. For example, a health point may have a value of 1 when an error detecting result has a value less than 60%, whereas a health point may have a value of 5 when an error detecting result has a value greater than 90%.
As another example, a health point may have any one value from among 1 to 5 according to a temperature result of the inside of a memory controller or a memory device. Although it is illustrated in
As another example, the endurance of a block may be determined based on various pieces of block information, and for example, the endurance of a block may decrease as the write/erase count value of the block increases. For example, a write/erase count threshold allowed to the block may be defined, and a health point according to a ratio of the current write/erase count value of the block to the write/erase count threshold. For example, if it is determined that the ratio is less than 30%, a health point may have a value of 1, and if it is determined that the ratio is greater than 90%, a health point may have a value of 5.
As another example, a block address may indicate the location of a block in a memory device, and in the example shown in
As another example, an RI of a chip may be applied to determine the health grade of each block. For example, a test may be performed on a wafer having a plurality of chips formed thereon, and an index indicating reliability for each chip may be calculated and stored in a corresponding chip. The RI may be defined as a plurality of steps, and
On the contrary, a fourth health grade as the highest health grade has 5 to 10 as a value obtained by summing up health points, and in this case, an internal IO ratio may have a relatively low value. For example, a ratio between a host IO and an internal IO during a reclaim period may be set to 99:1. That is, because a large number of reads are allowed to a block having the highest health grade until a UECC error occurs, a host IO ratio may relatively increase.
The numeric values illustrated in
Referring to
In an initial operation of the memory system 600, various kinds of information for operating the memory system 600 may be provided from the memory device 620 to the memory controller 610. For example, the memory cell array 621 may store at least one piece of block information BLK Info to be used for health grade determination, and the at least one piece of block information BLK Info may be provided to the memory controller 610. The memory cell array 621 may include one or more NAND chips, each NAND chip may include a plurality of blocks, and the at least one piece of block information BLK Info may include information related to the reliability of each of the plurality of blocks together with information related to the reliability of a NAND chip unit. The information related to the reliability may include various pieces of information, e.g., information indicating that the data retention characteristic of each block is high or low. In addition, the at least one piece of block information BLK Info may be information generated and stored in a manufacturing process of the memory device 620 and having fixed values. Alternatively, the at least one piece of block information BLK Info may be information having values changed and updated along with the progress of an operation of the memory device 620 and may further include, for example, information indicating the progressing state of degradation of blocks and information about a block determined as a bad block.
According to the implementations described above, the health grade determining circuit 614 may determine the health grade of a block by using an error detecting result (e.g., an error detecting result of a sample page) and the at least one piece of block information BLK Info. For example, the health grade determining circuit 614 may receive temperature information from the temperature sensor 611, receive a block write/erase cycle count value from the counter 612, receive an error detecting result from the ECC circuit 613, and receive the at least one piece of block information BLK Info described above.
In the implementation shown in
The memory controller may read one or more pages of a block in response to a request from a host, patrol read irrelevant to a request from the host, or RINC in operation S21 and determine in operation S22 whether the number of errors that occurred in the read data or an error ratio of the read data is greater than or equal to a certain threshold. If it is determined that the number of errors or the error ratio is greater than or equal to the certain threshold, reclaim on a corresponding block (hereinafter, referred to as a first block) may be triggered in operation S23.
The degradation state of the first block may be estimated according to the error detecting result described above, and in operation S24, one or more sample pages having relatively low reliability may be selected from among the plurality of pages of the first block and error detecting and determination may be performed on data read from the one or more sample pages. In addition, one or more pieces of block information related to the first block may be determined in operation S25, and in operation S26, the health grade of the first block may be determined based on a combination of the error detecting result and the one or more pieces of block information of the one or more sample pages and the IO ratio of the first block may be set.
According to the implementation described above, a reference for reclaim triggering and a reference for health grade determination may be related to error detecting results of different pages of the first block. For example, if the number of errors in a random page of the first block is greater than the certain threshold, reclaim on the first block is triggered, but a sample page of the first block may have lower reliability than the random page, and thus, the RR to UECC value of the first block may be more accurately determined by the error detecting result of the sample page. That is, by differently setting the reference for reclaim triggering and the reference for health grade determination, the speed of a reclaim operation on the first block before the occurrence of a UECC error may be optimally set.
Referring to
In addition, when reclaim is triggered on the first block BLK 1 and the Ath block BLK A, block information of each of the first block BLK 1 and the Ath block BLK A may be determined. In some implementations, block information may include a block address, and the reliability characteristic of a block may vary according to a location at which the block is formed in horizontal NAND or vertical NAND. According to a block address, if it is determined that the block characteristic of the first block BLK 1 is lower than the block characteristic of the Ath block BLK A, even though error detecting results of the sample pages of the first block BLK 1 and the Ath block BLK A are the same, the first block BLK 1 may have a higher internal IO ratio than the Ath block BLK A and the Ath block BLK A may have a higher host IO ratio than the first block BLK 1.
Referring to
If reclaim is triggered according to an error detecting result of any one block included in the superblock, a reclaim operation on all the blocks included in the superblock may be performed at the same time. In this case, a health grade determination operation using an error detecting result of a sample page and block information may be performed on each of the blocks included in the superblock. In addition, an IO ratio may be set based on a block determined to have the lowest health grade, and the reclaim operation on all the blocks included in the superblock may be performed according to the set IO ratio.
Alternatively error detecting results may be generated from the sample pages of all the blocks included in the superblock, and a health grade determination operation using block information may be selectively performed on only a block having the worst error characteristic. An IO ratio may be set according to a health grade determined for the selected block, and the set IO ratio may be applied to all the blocks included in the superblock.
Alternatively each of the first to Kth NAND chips NAND 1 to NAND K may include, as block information, reliability information indicating the RI of a corresponding chip. In this case, the locations of all the blocks included in the super block may be the same in the first to Kth NAND chips NAND 1 to NAND K, respectively, and the degrees of degradation of the blocks may be substantially the same because write/erase and the like are performed at the same time. In addition, temperatures detected from the first to Kth NAND chips NAND 1 to NAND K included in the memory device 700B may be the same. In this case, factors influencing the health grades of all the blocks included in the superblock may include an error detecting result of a sample page of each of the K blocks included in the superblock and chip reliability information.
For example, a block which is a reference for setting an IO ratio among the K blocks included in the superblock may be selected according to a result obtained by calculating a health point according to an error detecting result and a health point according to a chip RI. In some implementations, the chip RI may have a fixed value, and a block which is the reference for setting an IO ratio may be determined according to the error detecting results of the K blocks included in the superblock. For example, even though the error characteristic of the sample page of the block in the first NAND chip NAND 1 is worse than the error characteristic of the sample page of the block in the Kth NAND chip NAND K, if the chip reliability of the Kth NAND chip NAND K is lower than the chip reliability of the first NAND chip NAND 1, the block in the Kth NAND chip NAND K may be the reference for setting an IO ratio. However, if the error characteristic of the sample page of the block in the first NAND chip NAND 1 is worse because the degree of degradation of the block in the first NAND chip NAND 1 increases more, a block which is the reference for setting an IO ratio may be changed from the block in the Kth NAND chip NAND K to the block in the first NAND chip NAND 1.
When reclaim on ath to jth blocks Block_a to Block_j is triggered, pieces of block address information of the ath to jth blocks Block_a to Block_j may be stored in the reclaim queue. According to the current order of the pieces of block address information stored in the reclaim queue, reclaim may be performed in the order of the ath to jth blocks Block_a to Block_j.
The degrees of degradation of blocks about which pieces of information are stored in the reclaim queue may be determined in every certain period or aperiodically, and an order of the pieces of information stored in the reclaim queue may be changed according to a result of the determination. For example, the health grade determination in the implementations described above may be used for the order change, and as shown in
In addition, when reclaim is performed on a block about which information is stored in the reclaim queue, the health grade determination according to the implementations described above may be performed again at the timing of performing the reclaim. For example, when reclaim on the gth block Block_g is performed, the health grade of the gth block Block_g may be determined, and an IO ratio may be set according to a result of the determination. Accordingly, different IO ratios may be set for the ath to jth blocks Block_a to Block_j, and reclaim on the ath to jth blocks Block_a to Block_j may be performed at different speeds.
In some implementations, a change in a reclaim order of blocks may be performed in other various methods. For example, in relation to a change in a reclaim order, an error detecting result of a sample page of each of the ath to jth blocks Block_a to Block_j may be used. According to the error detecting result of the sample page, a reclaim order may be changed so that a block having a higher BER is first reclaimed. Alternatively, if a plurality of blocks stored in the reclaim queue are blocks included in a plurality of NAND chips, the change in a reclaim order may be performed based on a combination of error detecting results of sample pages and the RIs of the plurality of NAND chips.
Referring to
Pieces of block address information of a plurality of blocks may be stored in the reclaim queue, and errors of all the blocks in the reclaim queue may be scanned periodically or aperiodically in operation S33. The error scan may include an operation of reading sample pages of all the blocks in the reclaim queue and detecting errors of data read from the sample pages. In addition, the pieces of block address information stored in the reclaim queue may be changed to change a reclaim order of the plurality of blocks, based on error detecting results of the sample pages in operation S34.
After changing the pieces of block address information stored in the reclaim queue, reclaim on a block may be performed in a newly set order, and block information of the block on which reclaim is to be performed may be determined in operation S35. In addition, in some implementations, errors of a sample page of the block on which reclaim is to be performed may be detected again. According to the implementations described above, in operation S36, the health grade of the block may be determined based on a combination of an error detecting result and/or the block information and an IO ratio corresponding to the determined health grade may be set.
According to some implementations above, pieces of information to be used for reclaim triggering, an information change for changing an order in the reclaim queue, and IO ratio setting may be variously set. That is without being limited to the method shown in
Referring to
While this disclosure contains many specific implementation details, these should not be construed as limitations on the scope of what may be claimed. Certain features that are described in this disclosure in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially be claimed as such, one or more features from a combination can in some cases be excised from the combination, and the combination may be directed to a subcombination or variation of a subcombination.
While the inventive concept has been particularly shown and described with reference to embodiments thereof, it will be understood that various changes in form and details may be made therein without departing from the spirit and scope of the following claims.
| Number | Date | Country | Kind |
|---|---|---|---|
| 10-2023-0098998 | Jul 2023 | KR | national |