Superblock-based programming temperature awareness in memory devices
By using the programming temperature characterization in the memory in the controller to determine the reference voltage, the problem of high error bit count in the NAND memory when reading the page at different temperatures is solved, and the reliability of data reading is improved.
Patent Information
- Application Number
- CN202411294747.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-12-26
- Filing Date
- 2024-09-14
- Publication Date
- 2025-06-24
AI Technical Summary
The cross-temperature effect causes high error bits when NAND memory reads pages at different temperatures than when programming, affecting the reliability of data reading.
By configuring the processor in the controller, obtaining the programmed temperature characterization of the superblock in the record from the memory, determining the corresponding reference voltage, and using the reference voltage to read the page of the superblock to reduce errors caused by the cross-temperature effect.
It effectively reduces the number of error bits caused by the cross temperature effect, and improves the data reading reliability of NAND memory under different temperature conditions.
Smart Images

Figure CN120199307A_ABST
Abstract
Description
Background Art
[0001] The development of NAND memory has made significant progress, leading to continuous improvements in storage density and performance. This trend has positioned NAND memory as a key element in modern storage technologies, providing reliable and efficient data storage solutions.
[0002] NAND memory operates by leveraging the accumulation and release of charge. Through voltage control, charge is stored in the floating gate of NAND memory cells, representing the logical states of individual bits. During data readout, a voltage is applied to the memory cells to measure the change in gate voltage, enabling the determination of the data state. When writing data, a specific voltage level is applied to accumulate or release charge within the memory cells, thereby modifying the data state. This mechanism allows for reliable storage and retrieval of data in NAND memory.
[0003] The threshold voltage Vth is used to define the different states of NAND memory cells. In the case of single-level cells (SLCs), a single threshold voltage Vth is used to define two states, "1" and "0". In the case of multi-level cells (MLCs), three threshold voltages Vth0, Vth1, and Vth2 are used to define four states, "11", "10", "01", and "00". In the case of triple-level cells (TLCs), seven threshold voltages are used to define eight states, "111", "110", "101", "100", "011", "010", "001", and "000". In the case of quad-level cells (QLCs), fifteen threshold voltages are used to define sixteen states, "1111", "1110", "1101", "1100", "1011", "1010", "1001", "1000", "0111", "0110", "0101", "0100", "0011", "0010", "0001", and "0000".
[0004] NAND memory cells are composed of different materials that exhibit varying degrees of resistance to temperature changes. As the temperature increases or decreases, the threshold voltage Vth of NAND memory cells can also change.
[0005] It is well known that cell conductance, sense trip levels, and reference voltages used for verifying programmed data and during read operations are affected by temperature. This phenomenon is commonly referred to as the cross-temperature effect. Figure 1 This may help to better understand this effect.
[0006] Figure 1Taking TLC (Three-Level Cell) as an example, the difference in the threshold voltage distribution and the corresponding reference voltages between high temperature and low temperature is schematically illustrated. The threshold voltage distribution and the reference voltages V R1 、V R2 、V R3 、V R4 、V R5 、V R6 and V R7 at high temperature are represented by solid lines, while the threshold voltage distribution and the reference voltages V’ R1 、V’ R2 、V’ R3 、V’ R4 、V’ R5 、V’ R6 and V’ R7 at low temperature are represented by dashed lines.
[0007] As can be seen from Figure 1 , compared with the lines representing the threshold voltage distribution and the corresponding reference voltages under high temperature conditions, the lines representing the threshold voltage distribution and the corresponding reference voltages under low temperature conditions shift to the right (higher voltage).
[0008] Due to the cross-temperature effect, if a NAND page is read at a temperature different from the programming temperature, a high number of error bits (Fail Bits Count, abbreviated as FBC) may occur.
[0009] To reduce the FBC caused by the cross-temperature effect, the reference voltage should be carefully adjusted. SUMMARY OF THE INVENTION
[0010] The present disclosure provides a controller and an operation method for a non-volatile storage system, which incorporates super-block-based programming temperature awareness.
[0011] In one embodiment, the controller may have a processor configured to obtain a record from a memory. The record includes a characterization of the programming temperature of a super-block of a non-volatile memory of the non-volatile storage system. The non-volatile memory is located on multiple dies. The super-block includes multiple blocks of the non-volatile memory, and the multiple blocks are not on the same die. The processor is further configured to determine a reference voltage based on the characterization of the programming temperature and use the reference voltage to read pages of the super-block.
[0012] In one embodiment, the method may include obtaining a record from a memory. The record includes a characterization of a programming temperature of a superblock of a non-volatile memory. The non-volatile memory is located over a plurality of dies. The superblock has a plurality of blocks of the non-volatile memory, and the plurality of blocks are not on the same die. The method may further include determining a reference voltage based on the characterization of the programming temperature and reading a page of the superblock using the reference voltage.
[0013] In one embodiment, a system such as a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device may include a controller described in the present disclosure.
[0014] In one embodiment, a non-transitory machine-readable medium may have information stored therein. When the information is read by a hardware processor system, the information causes the hardware processor system to perform any method in the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Figure 1 Schematically illustrates the difference in threshold voltage distribution and corresponding reference voltage between high temperature and low temperature.
[0016] Figure 2A Schematically shows a non-volatile storage system.
[0017] Figure 2B Schematically shows a non-volatile storage system.
[0018] Figure 3 Is a flowchart of a process of programming temperature characterization data into a non-volatile storage system.
[0019] Figure 4 Is a flowchart of a process of reading data from a non-volatile storage system.
[0020] Figure 5 Is a flowchart of a process of error correction.
[0021] Figure 6 Schematically shows an example of programming temperature information for a superblock divided into a plurality of block groups.
[0022] Figure 7 Is a flowchart of a page reading process according to Embodiment I of the present disclosure.
[0023] Figure 8 Is a flowchart of a page reading process according to Embodiment II of the present disclosure.
[0024] Figure 9 Schematically shows an example of programming temperature information that may be used in Embodiment III.
[0025] Figure 10 Another example of the programmed temperature information that can be used in Embodiment III is schematically shown.
[0026] Figure 11 is a flowchart of a page reading process according to Embodiment III of the present disclosure. Detailed implementation manners
[0027] Although various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for illustrative purposes and are not intended to be limiting, and the true scope and spirit are indicated by the appended claims.
[0028] A non-volatile storage system, a controller of the non-volatile storage system, and a method of operating the non-volatile storage system as disclosed herein can reduce FBC caused by cross-temperature effects.
[0029] The characteristics of the non-volatile memory (e.g., NAND memory) of the non-volatile storage system can be used to prepare different reference voltage settings for different programming-read temperature combinations. For example, assuming that the operating temperature range of the storage cells of the non-volatile memory is 0 - 80 °C, the operating temperature range can be divided into four temperature segments, namely 0 - 20 °C, 20 - 40 °C, 40 - 60 °C, and 60 - 80 °C. These temperature segments are indexed by 0, 1, 2, and 3 respectively. As shown in Table 1 below, a cross-temperature reference voltage table with 16 entries can be provided through characterization. Each entry is represented as Entry[i][j], where i and j are the indices of the segments of the read temperature and the programmed temperature respectively. Table 1
[0030] The cross-temperature reference voltage table can be a look-up table, where the rows correspond to the respective read temperature segments and the columns correspond to the respective programmed temperature segments.
[0031] When a page is to be read from the non-volatile memory of the non-volatile storage system, if the programmed temperature and the current read temperature of the page are available, the entry associated with the programmed temperature and the read temperature can be used for the read operation.
[0032] For example, if the programming temperature of a page is known to be 30°C, the programming temperature segment index is 1. If the current read temperature is 50°C (corresponding to the read temperature segment index 2), then Entry[2][1] should be used to read the page, which may help reduce the FBC and enable the error correction code decoder to correctly recover the data. If the page data is read using the reference voltage in a given entry and the data can be fully recovered by the error correction code decoder, the read operation is called successful. If the error correction code decoder cannot fully recover the data, the read operation is called unsuccessful, or the read operation fails.
[0033] Although it is easy to obtain the current read temperature when the page is ready to be read, such as using the temperature sensor 110, the programming temperature of the page is usually difficult to obtain unless it is stored somewhere in the non-volatile storage system. If the programming temperature is not stored, all the reference voltage settings related to the read temperature will be tried one by one. In the above example, the read operation first tries Entry[2][0]. If the read operation fails (i.e., any error in the data read cannot be corrected), it will continue to try Entry[2][1], Entry[2][2], and Entry[2][3] in sequence until a successful read operation is obtained. In this case, by assuming that the programming temperature is evenly distributed between 0°C and 80°C, for the cross-temperature test, the average number of reads to correctly obtain the page data is approximately (1 + 2 + 3 + 4) / 4 = 2.5.
[0034] If the programming temperature is stored in the non-volatile memory, additional read operations may be required to obtain the programming temperature information (PTI). This may further increase the read latency and degrade the performance of the non-volatile storage system.
[0035] If the programming temperature of each word line is stored, there will be too much memory overhead. For example, if the capacity of a non-volatile storage system using QLC cells is 1TB, the memory overhead is (1TB / 16KB / 4)×7 = 14MB.
[0036] Blocks in the non-volatile storage system that have the same block ID across multiple planes and multiple dies are grouped into a single superblock to improve throughput and performance. A superblock can be divided into several groups ("block groups").
[0037] A non-volatile storage system can maintain some information for a superblock (SPB INFO, i.e., SuperBlock Information). The SPB INFO can include, but is not limited to, the number of P / E cycles, the index of bad blocks, the open block status, and the timestamp of the first programming of the superblock. The SPB INFO can be stored in the SRAM of the controller, the DRAM of the non-volatile storage system, or the non-volatile memory. The SPB INFO can include a characterization of the programming temperature of the superblock ("programing temperature information" or "PTI").
[0038] Figure 2A And Figure 2B respectively schematically show non-volatile storage systems 100A and 100B.
[0039] The non-volatile storage system 100A or 100B can include a controller 102 and a non-volatile memory (NVM) 104. When the non-volatile storage system 100A or 100B is connected to a host, it can provide data storage and / or access to the stored data. The NVM 104 can be a NAND memory.
[0040] As previously mentioned, the reference voltage for reading data stored in the NVM 104 can be affected by the on-die temperature in real time. The on-die temperature can refer to the temperature of the NVM 104. A temperature sensor 110 can be included in the non-volatile storage system 100A or 100B to measure the on-die temperature.
[0041] The controller 102 can have a processor 106. The processor 106 can be a computer processor, such as, but not limited to, a microprocessor or a microcontroller.
[0042] The processor 106 is configured to obtain a record from the memory 108 of the non-volatile storage system 100A or 100B. The record includes a characterization of the programming temperature of the NVM 104 superblock.
[0043] The term "programming temperature of the superblock" should refer to the temperature during the programming of the superblock. The word "during" should include the start and the end.
[0044] Figure 2A An embodiment of the memory 108 in the controller 102 is shown, while Figure 2B an embodiment where the memory 108 is part of the NVM104 is shown. The memory 108 can be located anywhere in the non-volatile storage system 100A or 100B.
[0045] The non-volatile memory is located on multiple dies. A superblock includes multiple blocks of the NVM 104 that are not on the same die. For example, a superblock can include blocks with the same block ID on multiple planes and multiple dies.
[0046] The processor 106 can be configured to determine a reference voltage based on a characterization of the programming temperature and use the reference voltage to read pages of the superblock.
[0047] As described above, a superblock can be divided into multiple block groups. In some embodiments, the record can further include an index of the block group among the multiple block groups. The processor 106 can be configured to further determine the reference voltage based on the index of the block group.
[0048] In some embodiments, the processor 106 can be configured to further determine the reference voltage based on a characterization of the temperature of the NVM 104 when determining the reference voltage. For simplicity, this temperature can be referred to as the "read temperature".
[0049] The expression "the temperature of the non-volatile memory when determining the reference voltage" or "the read temperature" does not mean the temperature measured at the exact moment of determining the reference voltage. It can be the temperature measured some time before that determination, or the average temperature over a period of time before that determination. Generally, the read temperature does not change rapidly. Therefore, the temperature measured some time before the exact moment of determination or the average temperature during a period of time before the exact moment of determination can be used as the temperature when determining the reference voltage.
[0050] In some embodiments, the processor 106 can be configured to further determine the reference voltage based on the index of the superblock.
[0051] In some embodiments, the processor 106 can be configured to read pages of the superblock using a reference voltage with an offset. In some cases, the offset can be a positive offset, and the processor 106 can be configured to read using the voltage (Vref + Vdelta), where Vref is the previously determined reference voltage and +Vdelta is the positive offset. In some cases, the offset can be a negative offset, and the processor 106 can be configured to read using the voltage (Vref - Vdelta), where Vref is the previously determined reference voltage and -Vdelta is the negative offset.
[0052] Figure 3 is a flowchart of a process of programming data into a non-volatile storage system. Figure 3 The process shown can be performed by Figure 2A or Figure 2B the processor 106 shown. In other words, the processor 106 can be configured to perform Figure 3The process shown.
[0053] In Figure 3 In step S310 of the process, a characterization of the programming temperature is determined based on the temperature at which the superblock is programmed. In step S320, the characterization of the programming temperature is stored in a record in the memory 108.
[0054] Figure 4 is a flowchart of a process for reading data from a non-volatile storage system. Figure 4 The process shown can be performed by Figure 2A or Figure 2B the processor 106 shown. In other words, the processor 106 can be configured to perform Figure 4 the process shown.
[0055] In Figure 4 In step S410 of the process, a record is retrieved from the memory 108. As described above, the record has a characterization of the programming temperature of the superblock. In step S420, a reference voltage is determined based on the characterization of the programming temperature. The reference voltage can further be determined based on the index of the block group. In some embodiments, the reference voltage can further be determined based on the reading temperature. In some embodiments, the reference voltage can further be determined based on the index of the superblock. In step S430, the reference voltage can be used to read the pages of the superblock. As described above, in some embodiments, a reference voltage with an offset can be used to read the pages of the superblock.
[0056] The following is an example of a data reading process using a lookup table (e.g., Table 1), which can be performed by the processor 106.
[0057] When a page is ready to be read, the block group index of the page can be used as an index to obtain the PTI associated with the block group.
[0058] Based on the PTI and the current reading temperature (e.g., measured by the temperature sensor 110), an entry is selected from the lookup table, and the reference voltage in the entry is used to read the page.
[0059] If reading using the reference voltage in the selected entry is unsuccessful or unsatisfactory, the entries in the same row of the lookup table (corresponding to the same reading temperature) can be tried one by one (e.g., in the order of increasing absolute value of the difference between the programming temperature segment index of the selected entry and the programming temperature segment indices of the other entries in the same row). The following will refer to Figure 5 for a further description of this process.
[0060] Figure 5 is a flowchart of an error recovery process when applying an entry obtained by using the PTI and the current reading temperature.
[0061] As Figure 5 shown, Entry[r][p] is an entry selected based on the PTI with temperature segment index p and the current read temperature with temperature segment index r. In other words, the reference voltage in Entry[r][p] can be utilized to initiate a read operation.
[0062] In step S502, the page is read using Entry[r][p] (i.e., the reference voltage in Entry[r][p] is used to read the page). In step S504, it is determined whether the read operation is successful.
[0063] If the read operation is successful, the read operation is performed in step S530.
[0064] If the read operation is not successful (i.e., the page cannot be read and the data cannot be fully recovered by using the reference voltage in Entry[r][p]), another read attempt will be performed by using the reference voltage in Entry[r][p - 1] or Entry[r][p + 1]. If these two directly adjacent entries fail again, Entry[r][p - 2] and Entry[r][p + 2] will be tried until all entries in the same row (i.e., Entry[r][…]) have been tried. If all entries are unsuccessful, another error recovery method, such as soft read, can be used.
[0065] In step S506, t is set to 1.
[0066] In step S508, it is determined whether Entry[r][p - t] is valid. If the entry can be found in the lookup table, the entry is valid. If it is valid, the process proceeds to step S510. If it is invalid, the process proceeds to step S514.
[0067] In step S510, the page is read using Entry[r][p - t]. In step S512, it is determined whether the read operation is successful. If the read operation is successful, the read operation is performed in step S530. If the read operation is not successful, the process proceeds to step S514.
[0068] In step S514, it is determined whether Entry[r][p + t] is valid. If it is valid, the process proceeds to step S516.
[0069] In step S516, the page is read using Entry[r][p + t]. In step S520, it is determined whether the read operation is successful. If the read operation is successful, the read operation is performed in step S530. If the read operation is not successful, the process proceeds to step S522.
[0070] In step S522, the parameter t is incremented by 1, i.e., t = t + 1, and then the process jumps to step S508 for another iteration.
[0071] If it is determined in step S514 that Entry[r][p + t] is invalid, the process proceeds to step S518. In step S518, if it is determined that both Entry[r][p - t] and Entry[r][p + t] are invalid, the process proceeds to step S540 to attempt another error recovery method. In step S518, if it is determined that Entry[r][p - t] and Entry[r][p + t] are not both invalid, the process proceeds to step S522 to start another iteration.
[0072] In the following, embodiments of various representations of the programming temperature will be described in more detail.
[0073] As described above, the representation of the programming temperature is stored in a record in the memory 108 while programming data into the NVM 104, and is obtained from the record obtained from the memory 108 when reading data from the NVM 104.
[0074] In some embodiments, the representation of the programming temperature is the programming temperature itself. For example, exact programming temperature measurements such as "25°C", "28°C", and "27°C" etc. can be used as the representation of the programming temperature.
[0075] In some embodiments, the representation of the programming temperature is a temperature segment index representing the range in which the programming temperature lies. For example, the indices "0", "1", "2", and "3" representing 0–20°C, 20–40°C, 40–60°C, and 60–80°C respectively can be used as the representation of the programming temperature.
[0076] In some embodiments, the representation of the programming temperature includes a first representation of the first programming temperature of a first block group among a plurality of block groups and a second representation of the second programming temperature of a second block group among the plurality of block groups.
[0077] The expression "the first programming temperature of the first block group" refers to the temperature during programming of the first block group, and the expression "the second programming temperature of the second block group" refers to the temperature during programming of the second block group. The terms "first block group" and "second block group" do not indicate any particular order, but rather any block group among the plurality of block groups.
[0078] In some further embodiments, the first programming temperature is the temperature measured at the start or end of programming the first block group.
[0079] Using the characterization of the programming temperature, a reference voltage can be determined based on a first characterization of a first programming temperature and a second characterization of a second programming temperature. The processor 106 can be configured to determine the reference voltage based on the first characterization of the first programming temperature and the second characterization of the second programming temperature.
[0080] In some embodiments, the first characterization of the first programming temperature and the second characterization of the second programming temperature can be used to determine the reference voltage by interpolation or extrapolation. The processor 106 can be configured to use the first characterization of the first programming temperature and the second characterization of the second programming temperature to determine the reference voltage by interpolation or extrapolation.
[0081] Interpolation or extrapolation can be used for at least two cases.
[0082] In one case, if the programming temperatures of some block groups are not stored in the memory 108, the programming temperature of the block group can be estimated by interpolation or extrapolation. For example, the block group index of the first block group is 0 and the first programming temperature is 25 °C; the block group index of the second block group is 4 and the second programming temperature is 45 °C. The programming temperatures of the block groups with block group indices 1, 2, and 3 are not stored in the memory 108. Then, the programming temperatures of the block groups with block group indices 1, 2, and 3 can be determined by interpolation (e.g., 30 °C, 35 °C, and 40 °C respectively); the programming temperatures of the block groups with block group indices 5 and 6 can be determined by extrapolation (e.g., 50 °C and 55 °C respectively).
[0083] In another case, the programming temperature of the block group can be used as the programming temperature of the page to be read, and only one programming temperature is stored for the block group, e.g., the temperature at the start or end of programming the block group. The programming temperature of the blocks in the block group (the current block group) can be estimated by interpolating the programming temperatures of the current block group and the next block group, or by extrapolating the programming temperatures of the previous block group and the current block group. An example of such interpolation is described in Embodiment I below.
[0084] In some embodiments, if the programming temperature segment indices of the first block group and the block groups between the first block group and the second block group are the same, the PTI of the block groups between the first block group and the second block group is not stored. When reading data from the NVM 104, the programming temperature segment index of the block groups between the first block group and the second block group can be determined as the first characterization of the first programming temperature, and the reference voltage of these block groups can be determined based on the first characterization of the first programming temperature.
[0085] Figure 6 An example of the PTI in which a super block is divided into multiple block groups is schematically shown. Embodiments I and II will be described based on this example below.
[0086] In Figure 6 In the example shown, a superblock has 128 blocks, where the block indices are 0 to 127 respectively. The 128 blocks are divided into 8 block groups, where the block group indices are 0 to 7 respectively. Each block group has 16 blocks.
[0087] When the superblock is programmed, the PTI detected by the temperature sensor 110 at the start of each block group is stored in the record as the PTI in the SPB INFO. The temperature at the end of superblock programming can also be stored. As Figure 6 shown, the programming temperatures at the start of the blocks with indices 0, 16, 32, 48, 64, 80, 96, and 112 (the starts of the block groups with indices 0 to 7) and the end of the block with index 127 are 25°C, 28°C, 27°C, 37°C, 45°C, 55°C, 67°C, 75°C, and 76°C respectively.
[0088] Assume that the operating temperature range of the NAND is 0 - 80°C and can be divided into four temperature segments, 0 - 20°C, 20 - 40°C, 40 - 60°C, and 60 - 80°C, each having a temperature segment index of 0, 1, 2, and 3 respectively. Figure 6 The temperature segment indices of the programming temperatures at the starts of the block groups with indices 0 to 7 shown are 1, 1, 1, 1, 2, 2, 3, and 3 respectively.
[0089] As Figure 6 shown, the PTI can be stored in different ways, as described below.
[0090] Embodiment I
[0091] In Embodiment I, the PTI can be the exact temperature value provided by the temperature sensor 110. In other words, the characterization of the programming temperature is the programming temperature.
[0092] The temperature information at the start of the programming operation, i.e., the programming temperature of each block group, is detected by the temperature sensor 110 and stored in the record in the memory 108 as part of the SPB INFO.
[0093] When the interpolation method is used to estimate the programming temperature of a certain block group, the temperature value at the end of superblock programming is also written into the record as part of the SPB INFO.
[0094] In Figure 6 the example shown, the corresponding detected values of 25°C, 28°C, 27°C, 37°C, 45°C, 55°C, 67°C, 75°C, and 76°C will be stored in the record as the PTI.
[0095] The following table shows the PTI stored in the record of the superblock in the memory 108 as part of the SPB INFO in Embodiment I. Store the corresponding temperature values.
[0096] By storing the actual temperature values in Example I, the SPB INFO memory overhead of the PTI is 8 x 7 bits + 7 bits = 63 bits.
[0097] Figure 7 is a flowchart of the process of page reading.
[0098] When a page is to be read, in step S702, the superblock index of the superblock containing the page can be obtained, for example, based on the L2P (logical address to physical address) table.
[0099] In step S704, the SPB INFO associated with the superblock can be obtained from, for example, the memory 108. As described above, the SPB INFO includes a characterization of the programming temperature of the superblock, or PTI.
[0100] In step S706, the block index of the page in the superblock is obtained, and the block group index can also be calculated, which can provide an index for the PTI.
[0101] In step S708, the PTI of the block group containing the page to be read can be obtained from the SPB INFO.
[0102] In step S710, the programming temperature of the page to be read can be obtained from the PTI.
[0103] In Example I, the PTI is a temperature value. There may be two ways to obtain the programming temperature.
[0104] The first method, which can be called the "direct mapping method", is to use the programming temperature associated with the block group containing the page to be read as the programming temperature of the page to be read.
[0105] The second method, which can be called the "interpolation method", is to use the estimated programming temperature of the block containing the page to be read as the programming temperature of the page to be read.
[0106] Since only one programming temperature is stored for the block group, for example, at the start or end of programming the block group, the programming temperature values of the current block group and the next block group can be used to estimate the programming temperature of the blocks included in the block group (current block group) by interpolation (or extrapolation).
[0107] The interpolation can be performed as follows.
[0108] Assume that a block group has N blocks. The page to be read is in the k-th block of the g-th block group, and the programming temperatures in the g-th and (g + 1)-th block groups stored in SPBINFO are T(g) and T(g + 1), respectively. Here, both k and g are non-negative integers.
[0109] The estimated programming temperature of the page to be read can be: T(g) + k × (T(g + 1) - T(g)) / N.
[0110] In step S712, the programming temperature of the page to be read obtained in step S710 can be converted into a temperature segment index p.
[0111] On the other hand, when reading a page, in step S722, the current reading temperature can be obtained by using the temperature sensor 110.
[0112] Then, in step S724, the reading temperature segment index r can be calculated based on the current reading temperature.
[0113] When the reading temperature segment index r and the programming temperature segment index p are available, in step S730, Entry[r][p] can be selected by looking up a reference voltage table (e.g., Table 1).
[0114] In step S740, the page is read with the reference voltage in Entry[r][p].
[0115] As referred to above Figure 5 it is possible to perform an error recovery method. Assume that Entry[r][p] is selected. If the page cannot be correctly read using the reference voltage in Entry[r][p], another read retry will be performed using the reference voltage in Entry[r][p - 1] or Entry[r][p + 1]. If these two directly adjacent entries fail again, the reference voltages in Entry[r][p - 2] and Entry[r][p + 2] will be tried until all Entry[r][…] are tried. If the reference voltages in all entries cannot correctly read the page, another error recovery method, such as soft reading plus soft decoding, can be used.
[0116] The reference voltage selection example of Embodiment I will be introduced below.
[0117] Assume that the page to be read belongs to block 63 and the current temperature is 10°C. The reading temperature segment index r is 0, i.e., r = 0.
[0118] The programming temperature of the block group is stored as PTI or a characterization of the programming temperature. Each block group includes 16 blocks.
[0119] According to the first method, or the direct mapping method, the programming temperature value of the block group is used as the programming temperature of the page to be read.
[0120] The page to be read belongs to block 63, and block 63 is the last block in block group 3.
[0121] The programming temperature value of block group 3 is 37, as Figure 6 shown. Therefore, the programming temperature segment index p of the page to be read is 1, i.e., p = 1.
[0122] Therefore, according to the first method, the reference voltage in Entry[0][1] will be used to read the page.
[0123] According to the error recovery process described in the previous reference Figure 5 if the reference voltage in Entry[0][1] is not successful, i.e., the read operation fails, then Entry[0][0], Entry[0][2], and Entry[0][3] will be tried one by one.
[0124] On the other hand, according to the second method, or the interpolation method, the estimated programming temperature of block 63 will be used as the programming temperature value of the page to be read.
[0125] The page to be read belongs to block 63, and block 63 is the last block in block group 3. The next group is block group 4.
[0126] The programming temperature values of block group 3 and block group 4 obtained from SPB INFO are 37 and 45 respectively, as Figure 6 shown. The estimated programming temperature of the page is: 7 + 15×(45 - 37)) / 16 = 44.5.
[0127] Therefore, the corresponding programming temperature segment index p is 2, i.e., p = 2.
[0128] Therefore, according to the second method, the reference voltage in Entry[0][2] will be used to read the page.
[0129] According to the error recovery process described in the previous reference Figure 5 if reading the page using the reference voltage in Entry[0][2] fails, then Entry[0][1], Entry[0][3], and Entry[0][0] will be tried one by one.
[0130] Embodiment II
[0131] In Embodiment II, the PTI can be the temperature segment index corresponding to the temperature provided by the temperature sensor 110. In other words, the characterization of the programming temperature is the temperature segment index representing the range in which the programming temperature lies.
[0132] The temperature information at the start of the programming operation for each group is detected by the temperature sensor 110 and stored in the record as part of the SPB INFO.
[0133] In Figure 6 the example shown, the corresponding temperature segment indices 1, 1, 1, 1, 2, 2, 3, and 3 will be stored in the record as PTI.
[0134] The following table shows the PTI stored in the record of the superblock stored in the memory 108 as part of the SPB INFO in Embodiment II. The corresponding temperature values are stored. Block group index Programming temperature information (PTI) 0 1 1 1 2 1 3 1 4 2 5 2 6 3 7 3 Table 2
[0135] In Embodiment II, by storing the temperature segment index, the SPB INFO memory overhead of the PTI is 8 × 2 bits = 16 bits.
[0136] Figure 8 is a flowchart of the page reading process according to Embodiment II of the present disclosure.
[0137] In Embodiment II, the PTI is the temperature segment index. The PTI can be directly used to look up the reference voltage setting.
[0138] When a page is to be read, in step S802, the superblock index of the superblock containing the page can be obtained, for example, based on the L2P (Logical Address to Physical Address) table.
[0139] In step S804, the SPB INFO associated with the superblock can be obtained from, for example, the memory 108. As described above, the SPB INFO includes the characterization of the programming temperature of the superblock, or the PTI.
[0140] In step S806, the block index of the page in the superblock is obtained. The block group index can be calculated, which can provide an index for the PTI.
[0141] In step S808, the PTI of the block group containing the page to be read can be obtained from the SPB INFO.
[0142] In step S812, the programming temperature segment index p can be obtained.
[0143] On the other hand, when a page is to be read, in step S822, the current reading temperature can be obtained by using the temperature sensor 110.
[0144] In step S824, the programming temperature segment index r can be calculated accordingly.
[0145] When the read temperature segment index r and the programmed temperature segment index p are available, in step S830, Entry[r][p] can be selected by looking up a reference voltage table.
[0146] In step S840, the page is read using the reference voltage in Entry[r][p].
[0147] As referenced above Figure 5 As described, an error recovery process can be performed. Assuming Entry[r][p] is selected, if the page cannot be correctly read using the reference voltage in Entry[r][p], another read retry will be performed using the reference voltage in Entry[r][p - 1] or Entry[r][p + 1]. If the reference voltages of directly adjacent entries fail again, the reference voltages in Entry[r][p - 2] and Entry[r][p + 2] will be tried until all Entry[r][…] are tried. If all entries are unsuccessful, another error recovery method such as soft read plus soft decoding can be used.
[0148] The reference voltage selection example of Embodiment II will be introduced below.
[0149] Assume that the page to be read belongs to block 63 and the current temperature is 10°C. The read temperature segment index r for reading is 0, i.e., r = 0.
[0150] The programmed temperature segment index is stored as PTI or a representation of the programmed temperature. Each block group includes 16 blocks.
[0151] The page to be read belongs to block 63, and block 63 is the last block in block group 3.
[0152] The programmed temperature segment index of group 3 obtained from SPB INFO is 1. Therefore, the programmed temperature segment index p of the page to be read is 1, i.e., p = 1.
[0153] Therefore, Entry[0][1] will be used to read the page.
[0154] According to the error recovery process referenced above Figure 5 If the reference voltage in Entry[0][1] is unsuccessful, i.e., the read operation fails, the reference voltages in Entry[0][0], Entry[0][2], and Entry[0][3] will be tried one by one.
[0155] Embodiment III
[0156] In Embodiment III, the characterization of the programming temperature includes the programming temperature segment index of the block group and the index of the block group. In other words, the PTI can be a pair of values including the block group index and the programming temperature segment index. If the programming temperature segment index is the same for multiple consecutive block groups, only the programming temperature information of the first block group among the multiple consecutive block groups is stored in the record. For subsequent block groups among the multiple consecutive block groups with an unchanged programming temperature segment index, none of their PTI is stored in the record. After the programming temperature segment index changes for multiple consecutive programming block groups, the PTI of the programming block group will be stored in the record.
[0157] Specifically, monitor the index of the programming temperature segment (or the programming temperature segment index) of each block group of the superblock at the start of programming.
[0158] At the start of programming of the first block group of the superblock, the index of the programming temperature segment is stored in the record.
[0159] If the index of the programming temperature segment at the start of block group programming is different from the previously stored programming temperature segment index, both the index of the current block group and its corresponding programming temperature segment index are stored in the record.
[0160] On the other hand, if the index of the programming temperature segment at the start of block group programming is the same as the previously stored index, there is no need to store the PTI of this block group.
[0161] Figure 9 Schematically shows an example of the PTI that can be used in Embodiment III.
[0162] As Figure 9 shown, a superblock has 16 blocks and 16 block groups. Each block group has only 1 block.
[0163] The metrics of the programming temperature segment are defined as follows: 0: 0–20 °C, 1: 20 - 40 °C, 2: 40 - 60 °C, 3: 60–80 °C.
[0164] The programming temperatures at the starting points of 16 block groups (or blocks) with indexes from 0 to 15 are 25 °C, 27 °C, 35 °C, 39 °C, 45 °C, 50 °C, 61 °C, 63 °C, 67 °C, 70 °C, 55 °C, 49 °C, 45 °C, 39 °C, 35 °C, and 33 °C respectively. The programming temperature segment indexes of 16 block groups (or blocks) with indexes from 0 to 15 are 1, 1, 1, 1, 2, 2, 3, 3, 2, 1, 1 respectively.
[0165] The PTI stored in the record is (0, 1), (4, 2), (6, 3), (10, 2), and (13, 1).
[0166] The PTI has a total of 5 entries. For each PTI entry, the first data refers to the block group index, and the second data refers to the programming temperature segment index of the block group. The total memory overhead size is 5 × (4 + 2) = 30 bits.
[0167] Figure 10 Another example of the PTI that can be used in Embodiment III is schematically shown.
[0168] As Figure 10 shown, a superblock has 16 blocks and 8 block groups. Each block group has two blocks.
[0169] The index of the programming temperature segment is defined as follows: 0: 0 - 20 °C, 1: 20 - 40 °C, 2: 40 - 60 °C, 3: 60–80 °C.
[0170] The programming temperatures at the starting points of 8 block groups with indexes from 0 to 7 are 25 °C, 35 °C, 45 °C, 61 °C, 67 °C, 55 °C, 45 °C, and 35 °C respectively. The programming temperature segment indexes of the programming temperatures at the starting points of the block groups with indexes from 0 to 7 are 1, 1, 1, 1, 2, 2, 3, and 3 respectively.
[0171] The PTI stored in the record is (0, 1), (2, 2), (3, 3), (5, 2), and (7, 1).
[0172] The PTI has a total of 5 entries. For each PTI entry, the first data refers to the block group index, and the second data refers to the programming temperature segment index of the block group. The total memory overhead size is 5 × (3 + 2) = 25 bits.
[0173] Figure 11 is a flowchart of the page reading process according to Embodiment III of the present disclosure.
[0174] When a page is to be read, in step S902, the superblock index of the superblock containing the page can be obtained, for example, based on the L2P (Logical Address to Physical Address) table.
[0175] In step S904, the SPB INFO associated with the superblock can be obtained from, for example, the memory 108. As described above, the SPB INFO includes the characterization of the programming temperature of the superblock, or the PTI.
[0176] In step S906, the block index of the page in the superblock is obtained, and the block group index can also be calculated, which can provide an index for the PTI.
[0177] In step S908, as part of the SPB INFO, the programming temperature segment index p of the block group containing the page to be read can be obtained from the PTI or the characterization of the PTI stored in the record in the memory 108.
[0178] In step S908, the programming temperature segment index (p) can be calculated by a unidirectional search algorithm or a binary search algorithm.
[0179] The following is a brief description of the unidirectional search algorithm.
[0180] For i=(n - 1):0
[0181] if B >= PTI[i][0]
[0182] p = PTI[i][1]
[0183] break
[0184] Where n is the number of PTI entries of the superblock stored in the storage record, and B is the block group index of the page to be read.
[0185] On the other hand, when reading a page, in step S922, the current reading temperature can be obtained by using the temperature sensor 110.
[0186] In step S924, the programming temperature segment index r can be calculated accordingly.
[0187] When the reading temperature segment index r and the programming temperature segment index p are available, in step S930, Entry[r][p] can be selected by looking up the reference voltmeter.
[0188] In step S940, the page is read with the reference voltage in Entry[r][p].
[0189] As mentioned above Figure 5 the error recovery process can be performed. Assuming that Entry[r][p] is the selected entry, if the selected entry is not conducive to recovering the page data, entries in the same row of the lookup table will be tried one by one in ascending order of the absolute value of the difference between the programming temperature segment index of the selected entry and the programming temperature segment index of the consecutive entry. If all entries in the r-th row are unsuccessful, another error recovery method, such as soft reading, can be used.
[0190] Next, Figure 9 and Figure 10 two examples of reading reference voltage selection in the embodiments are described.
[0191] In Figure 9 the shown example, if the block index of the page to be read is 9, then the block group index is 9.
[0192] The current temperature is 10°C. The reading temperature segment index r is 0, that is, r = 0.
[0193] By using a unidirectional search algorithm or a binary search algorithm, the programming temperature segment index p can be determined to be 3, i.e., p = 3.
[0194] Therefore, the reference voltage in Entry[0][3] will be used to read the page.
[0195] According to the error recovery process described previously Figure 5 If the reference voltage in Entry[0][3] is not successful, i.e., the read operation fails, another entry in the first row will be used in the order of Entry[0][2], Entry[0][1], and Entry[0][0].
[0196] If all four entries in the first row of Table 1 are not successful, soft reading can be used to read the page.
[0197] In Figure 10 In the example shown, if the block index of the page to be read is 9, the block group index is 4.
[0198] The current temperature is 10°C. The read temperature segment index r is 0, i.e., r = 0.
[0199] By using a unidirectional search algorithm or a binary search algorithm, the programming temperature segment index p can be determined to be 3, i.e., p = 3.
[0200] Therefore, the reference voltage in Entry[0][3] will be used to read the page.
[0201] According to the error recovery process described previously Figure 5 If the reference voltage in Entry[0][3] is not successful, i.e., the read operation fails, another entry in the first row will be used in the order of Entry[0][2], Entry[0][1], and Entry[0][0].
[0202] If all four entries in the first row of Table 1 are not successful, soft reading and soft decoding can be used to read the page.
[0203] In one embodiment, a system includes a controller as described in the present disclosure. The system can be a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device.
[0204] In one embodiment, a non - transitory machine - readable medium has information stored therein. When the information is read by a hardware processor system, the information causes the hardware processor system to perform any method in the present disclosure.
[0205] Any disclosed method and operation can be implemented as computer-executable instructions (e.g., software code for the operations described herein) stored on one or more computer-readable storage media (e.g., non-transitory computer-readable media such as one or more optical disc media, volatile storage components (such as DRAM or SRAM), or non-volatile storage components (such as hard disk drives)) and executed on a device controller (e.g., firmware executed by an ASIC). Any computer-executable instructions for implementing the disclosed techniques and any data created and used during the implementation of the disclosed embodiments can be stored on one or more computer-readable media (e.g., non-transitory computer-readable media).
[0206] Although various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for illustrative purposes and not intended to be limiting, and the true scope and spirit are indicated by the appended claims.
Claims
1. A controller, characterized in that: include: a processor configured to retrieve a record from a memory; wherein the record includes a representation of a programming temperature of a superblock of a non-volatile memory; wherein the non-volatile memory is located on a plurality of dies; wherein the super block includes a plurality of blocks of the non-volatile memory, and the plurality of blocks are not on a same die; Wherein the processor is further configured to determine a reference voltage based on the characterization of the programming temperature, and to read a page of the super block using the reference voltage.
2. The controller according to claim 1, characterized in that: The programming temperature is characterized as the programming temperature.
3. The controller according to claim 1, characterized in that: The representation of the programming temperature is a temperature segment index representing the range in which the programming temperature is located.
4. The controller according to claim 1, characterized in that: The super block is divided into a plurality of block groups; wherein the record further comprises an index of a block group in the plurality of block groups.
5. The controller according to claim 4, characterized in that: The processor is configured to determine the reference voltage further based on an index of the block group.
6. The controller according to claim 1, characterized in that: The super block is divided into a plurality of block groups; wherein the representation of the programming temperature comprises a first representation of a first programming temperature of a first block group of the plurality of block groups and a second representation of a second programming temperature of a second block group of the plurality of blocks.
7. The controller according to claim 6, characterized in that: The first programming temperature is a temperature at the beginning or end of programming the first block group.
8. The controller according to claim 6, characterized in that: The processor is configured to determine the reference voltage based on a first characterization of the first programming temperature and a second characterization of the second programming temperature.
9. The controller according to claim 8, characterized in that: The processor is configured to determine the reference voltage by interpolation or extrapolation using a first representation of the first programming temperature and a second representation of the second programming temperature.
10. The controller according to claim 1, characterized in that: The controller is configured to read a page of the super block using a reference voltage having an offset.
11. The controller according to claim 1, characterized in that: The processor is configured to determine the reference voltage further based on a characterization of a temperature of the non-volatile memory when determining the reference voltage.
12. The controller according to claim 1, characterized in that: The processor is configured to determine the reference voltage further based on an index of the super block.
13. The controller according to claim 1, characterized in that: The processor is configured to determine a representation of the programming temperature based on a temperature when the super block is programmed and store the representation of the programming temperature in the record.
14. The controller according to claim 1, characterized in that: The memory is in the controller or in the non-volatile memory.
15. A system comprising the controller according to claim 1, characterized in that: The system is a solid state drive (SSD), a flash drive, a motherboard, a processor, a computer, a server, a gaming device, or a mobile device.
16. A method, characterized in that include: Retrieving a record from a memory, wherein the record includes a representation of a programming temperature of a superblock of a non-volatile memory; wherein the non-volatile memory is located on a plurality of dies; wherein the super block includes a plurality of blocks of the non-volatile memory, and the plurality of blocks are not on a same die; determining a reference voltage based on the characterization of the programming temperature; as well as A page of the super block is read using the reference voltage.
17. The method according to claim 16, characterized in that The programming temperature is characterized as the programming temperature.
18. The method according to claim 16, characterized in that The representation of the programming temperature is a temperature segment index representing the range in which the programming temperature is located.
19. The method according to claim 16, characterized in that The super block is divided into a plurality of block groups; wherein The record also includes an index of a block group among the plurality of block groups.
20. The method according to claim 19, characterized in that The reference voltage is further determined based on an index of the block group.
21. The method according to claim 16, characterized in that The super block is divided into a plurality of block groups; wherein The representation of the programming temperature includes a first representation of a first programming temperature of a first block group of the plurality of blocks and a second representation of a second programming temperature of a second block group of the plurality of blocks.
22. The method according to claim 21, characterized in that The first programming temperature is a temperature at the beginning or end of programming the first block group.
23. The method according to claim 21, characterized in that The reference voltage is determined based on a first characterization of the first programming temperature and a second characterization of the second programming temperature.
24. The method according to claim 23, characterized in that A reference voltage is determined by interpolation or extrapolation using a first characterization of the first programming temperature and a second characterization of the second programming temperature.
25. The method according to claim 16, characterized in that Further included is reading the page using the reference voltage having an offset.
26. The method according to claim 16, characterized in that The reference voltage is further determined based on a characterization of temperature when determining the reference voltage.
27. The method according to claim 16, characterized in that The reference voltage is further determined based on an index of the super block.
28. The method according to claim 16, characterized in that The memory is in the controller or in non-volatile memory.
29. A non-transitory machine-readable medium having information, characterized in that: The information, when read by a hardware processor system, causes the hardware processor system to execute the method according to claim 16 .