This application claims benefit of priority to Korean Patent Application No. 10-2023-0033997, filed on Mar. 15, 2023, in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference in its entirety.
The present disclosure relates to a storage device and a method of operating the same.
A semiconductor memory device is a memory device implemented using semiconductor materials such as silicon (Si), germanium (Ge), gallium arsenide (GaAs), and indium phosphide (InP). In general, semiconductor memory devices are classified into volatile memory devices and nonvolatile memory devices.
Volatile memory devices lose stored data thereof when power supplies thereof are interrupted. The volatile memory devices include a static random access memory (SRAM), a dynamic random access memory (DRAM), a synchronous DRAM (SDRAM), and the like. Meanwhile, nonvolatile memory devices retain stored data thereof even when power supplies thereof are interrupted. The nonvolatile memory devices include a read-only memory (ROM), a programmable ROM (PROM), an electrically programmable ROM (EPROM), an electrically erasable and programmable ROM (EEPROM), a flash memory device, a phase-change RAM (PRAM), a magnetic RAM (MRAM), a resistive RAM (ReRAM), a ferroelectric RAM (FRAM), and the like.
A flash memory has been used in a variety of fields due to features thereof such as a high operation speed and low power consumption. In general, since characteristics of a flash memory are affected by a temperature at a time point at which a program operation is performed, there is a need to store information of a temperature at the time of performing the program operation and to utilize the stored information of the temperature in an operation of the flash memory. In this case, the amount of stored temperature information is increased as capacity of the flash memory is increased. Accordingly, there is an increasing need for technology allowing usage of a working memory to be reduced by more efficiently managing temperature information.
Example embodiments provide a storage device for more efficiently storing temperature information to reduce usage of a working memory, and a method of operating the same.
According to an example embodiment, a storage device includes a nonvolatile memory comprising a plurality of user blocks and a controller configured to manage the plurality of user blocks in units of super blocks. The controller may perform a first program operation in units of first pages of the super block, and may manage temperature information, associated with the first program operation, in units of a predetermined number of super pages.
The storage device may include a temperature sensor and a working memory. The controller may obtain temperature information through the temperature sensor based on the first program operation, match the obtained temperature information with identification information of the predetermined number of super pages, and store the matched temperature information in the working memory.
The nonvolatile memory may include a plurality of reserved blocks replacing a bad block when among the plurality of user blocks, a user block is turned into the bad block, and the controller may perform a second program operation on the plurality of reserved blocks in units of pages and may manage temperature information, associated with the second program operation, in units of a predetermined number of pages.
The controller may obtain temperature information through the temperature sensor based on the second program operation, match the obtained temperature information with identification information of the predetermined number of pages, and store the matched temperature information in the working memory.
The controller may update the obtained temperature information in a temperature table loaded into the working memory, and the temperature table may include a first area, in which temperature information on the plurality of user blocks is managed in units of the super blocks, and a second area in which temperature information on the plurality of reserved blocks is managed in units of the blocks.
The first area may include first sub-temperature tables in which temperature information on user blocks, included in each of the super blocks, is stored in units of the predetermined number of super pages, and the second area may include second sub-temperature tables in which temperature information on each of the reserved blocks is stored in units of the predetermined number of pages.
The controller may be configured to update the obtained temperature information in the first area when a location, in which the program operation is performed, is included in the plurality of user blocks and update the obtained temperature information in the second area when the location, in which the program operation is performed, is included in the plurality of reserved blocks.
The controller may be configured to store the temperature table, stored in the working memory, in the nonvolatile memory for an idle time or while power of the storage device is turned off and load the temperature table, stored in the nonvolatile memory, into the working memory when the power of the storage device is turned on.
The controller may perform a read operation based on the temperature table loaded into the working memory.
The nonvolatile memory may be a NAND flash memory, and the working memory may include at least one of a DRAM and an SRAM.
According to an example embodiment, a method of operating a storage device, including a nonvolatile memory including a plurality of user blocks, includes performing a first program operation in units of super pages of a super block into which the plurality of user blocks are grouped and managing temperature information, associated with the first program operation, in units of a predetermined number of super pages.
The managing the temperature information, associated with the first program operation, in units of the predetermined number of super pages may include obtaining temperature information based on the first program operation and matching the obtained temperature information with identification information of the predetermined number of super pages and storing the matched temperature information.
The nonvolatile memory may include a plurality of reserved blocks replacing a bad block when among the plurality of user blocks, a user block is turned into the bad block. The method may include performing a second program operation on the plurality of reserved blocks in units of pages and managing temperature information, associated with the second program operation, in units of a predetermined number of pages.
The managing the temperature information, associated with the second program operation, in units of the predetermined number of pages may include obtaining temperature information based on the second program operation and matching the obtained temperature information with identification information of the predetermined number of pages and storing the matched temperature information.
The storing the matched temperature information may include updating the obtained temperature information in a temperature table, and the temperature table may include a first area, in which temperature information on the plurality of user blocks is managed in units of the super blocks, and a second area in which temperature information on the plurality of reserved blocks is managed in units of the blocks.
The first area may include first sub-temperature tables in which temperature information on user blocks, included in each of the super blocks, is stored in units of the predetermined number of super pages, and the second area may include second sub-temperature tables in which temperature information on each of the reserved blocks is stored in units of the predetermined number of pages.
The updating the obtained temperature information in the temperature table may include updating the obtained temperature information in the first area when a location, in which the program operation is performed, is included in the plurality of user blocks and updating the obtaining information in the second area when the location, in which the program pertain is performed, is included in the plurality of reserved blocks.
The method may include performing a read operation based on the temperature table.
According to an example embodiment, a controller controlling an operation of a nonvolatile memory including a plurality of user blocks includes a working memory and a processor configured to manage the plurality of user blocks in units of super blocks. The processor may perform a first program operation in units of super pages of the super blocks, and may store temperature information, associated with the first program operation, in the working memory in units of a predetermined number of super pages.
The nonvolatile memory may include a plurality of reserved blocks replacing a bad block when among the plurality of user blocks, a user blocks is turned into the bad block, and the processor may perform a second program operation on the plurality of reserved blocks in units of blocks, and may store temperature information, associated with the second program operation, in the working memory in units of a predetermined number of pages.
The above and other aspects, features, and advantages of the present disclosure will be more clearly understood from the following detailed description, taken in conjunction with the accompanying drawings.
Hereinafter, example embodiments will be described with reference to the accompanying drawings.
The terms “first,” “second,” etc. used herein are used to identify a plurality of components from one another, and are not intended to limit the order or importance of the relevant components.
The non-volatile memory 120 may program data, received from the controller 110, or transmit stored data to the controller 110 under the control of the controller 110. For example, it will be assumed that the nonvolatile memory 120 includes NAND flash memories. However, example embodiments are not limited thereto, and the nonvolatile memory 120 may include nonvolatile memory devices such as a NAND flash memory, a PRAM, an ReRAM, an MRAM, and an FRAM that have a three-dimensional structure.
The controller 110 may control the overall operation of the storage device 100. For example, the controller 110 may program data received from an external device into the nonvolatile memory 120, or may read data stored in the nonvolatile memory 120.
A threshold voltage Vth of a memory cell included in the nonvolatile memory 120 may be affected by a temperature at the time of performing a program operation. Accordingly, an error may occur when a read operation is performed without consideration of the temperature at the time of performing the program operation. To prevent the occurrence of the error, the controller 110 may store temperature information at the time of performing the program operation in a working memory, and may perform a read operation using the stored temperature information.
In this case, the controller 110 may store temperature information for each program operation, resulting in an issue in which usage of a working memory for storing the temperature information is increased as capacity of the nonvolatile memory 120 is increased.
In general, a temperature of the nonvolatile memory 120 is unlikely to significantly change while a program operation is performed. Therefore, by defining a unit group of the nonvolatile memory 120 having temporal simultaneity associated with the program operation and storing and managing information on a representative temperature at the time of performing the program operation in units of defined groups, memory usage associated with temperature information may be reduced.
For example, the controller 110 may manage a plurality of user blocks, included in the nonvolatile memory 120, in units of super blocks. For example, the controller 110 may perform a program operation in units of super pages, and may perform an erase operation in units of super blocks. The term “super block” refers to a block formed by grouping a plurality of user blocks based on a predetermined criterion.
In a system managing user blocks in units of super blocks, each super page of a super block has temporal simultaneity associated with a program operation. For example, pages included in a single super page are near-simultaneously subjected to a program operation. Accordingly, temperature information associated with the program operation may be managed in units of a predetermined number of super pages to reduce memory usage associated with the temperature information.
To this end, according to an example embodiment, the controller 110 may manage temperature information, associated with a program operation, in units of a predetermined number of super pages. For example, the controller 110 may manage the temperature information in units of a single super page. Alternatively, the controller 110 may manage the temperature information in units of two or more super pages. According to example embodiments, the controller 110 may manage the temperature information in units of super blocks, for example, in units of all super pages included in the super blocks.
According to an example embodiment, the controller 110 may include a temperature table manager 116. The temperature table manager 116 may manage a temperature table, in which the temperature information at the time of performing the program operation of the nonvolatile memory 120 is listed, in units of a predetermined number of super pages. For example, the temperature table manager 116 may obtain temperature information based on a program operation in units of super pages, and may update the obtained temperature information in the temperature table loaded into the working memory.
Referring to
The memory controller 110A and the nonvolatile memory device 120A may be provided by different chips, different packages, and different modules, respectively. The memory controller 110A and the nonvolatile memory device 120A may be electrically connected to each other. The memory controller 110A and the nonvolatile memory device 120A may be mounted based on packages such as POP (Package on Package), Ball grid arrays (BGAs), Chip scale packages (CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-Line Package (PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flatpack (TQFP), Small Outline (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline (TSOP), Thin Quad Flatpack (TQFP), System In Package (SIP), Multi Chip Package (MCP), Wafer-level Fabricated Package (WFP), Wafer-Level Processed Stack Package (WSP) to be provided as a nonvolatile memory system.
The controller 110A may receive a program or read request (RQ), an address ADDR_log, and data (DATA) from an external device (for example, a host, an application processor, or the like), and may control the nonvolatile memory 120A in response to the received signals. For example, the controller 110A may program the DATA, received from the external device, into the nonvolatile memory 120A, or may transmit a command (CMD), an address ADDR, and a control signal (CTRL) to the nonvolatile memory 120A to read DATA stored in the nonvolatile memory 120A.
For example, the address ADDR_log received from the external device may be a logical address, and the address ADDR transmitted to the nonvolatile memory 120A may be a physical address of the nonvolatile memory 120A. The controller 110A may manage address translation information based on a mapping table.
The nonvolatile memory 120A may include a user area 121. The user area 121 may be an area in which user data is stored, and may include a plurality of user blocks. In this case, the user data stored in the user area 121 may include various types of data, used or generated in a software layer of an external device, such as a program code and a file.
The temperature sensor 105 may measure a temperature of the nonvolatile memory 120, and may provide the measured temperature to the controller 110A.
For example, when the controller 110A and the nonvolatile memory 120A are mounted or assembled on a printed circuit board (PCB), the temperature sensor 105 may be connected to the controller 110A through conductive patterns provided on the PCB. In this case, the temperature sensor 105 may be disposed on or inside the nonvolatile memory 120A. Alternatively, the temperature sensor 105 may be disposed adjacent to the nonvolatile memory 120A. Accordingly, temperature information of the nonvolatile memory 120A, measured by the temperature sensor 105, may be provided to the controller 110A.
According to an example embodiment, when the nonvolatile memory 120A is implemented as a plurality of chips or packages, the temperature sensor 105 may be included in each chip or package. In this case, the temperature sensor 105 included in each chip or package may provide temperature information of the nonvolatile memory 120A, included in the corresponding chip or package, to the controller 110A.
According to alternative embodiments, a single temperature sensor 105 may be included for a plurality of chips or packages. In this case, the controller 110A may estimate temperature information of the nonvolatile memory 120A, included in each chip or each package, using the temperature information and offset information obtained through the temperature sensor 105. The offset information may vary depending on a distance or a location relationship between the temperature sensor 105 and chips or packages, and may be obtained in advance through an experiment, a test, a simulation, or the like.
When the storage device 100A is mounted or assembled on a mainboard together with an external device (for example, a host, an application processor, or the like), the temperature sensor 105 may be included outside the storage device 100A. In this case, the controller 110A may estimate the temperature of the nonvolatile memory 120A in consideration of a spatial arrangement of the storage device 100A and the temperature sensor 105.
For example, according to an example embodiment, the controller 110A may manage a plurality of user blocks of the user area 121 in units of super blocks. Accordingly, the controller 110A may perform a first program operation on a plurality of user blocks of the user area 121 in units of super pages (hereinafter, a program operation performed in units of super pages will be referred to as a “first program operation”). The super block and the super page will be described later in detail.
The controller 110A may manage temperature information, associated with the first program operation, in units of a predetermined number of super pages. For example, the controller 110A may obtain temperature information through the temperature sensor 105 based on the first program operation, match the obtained temperature information with identification information of a predetermined number of super pages, and store the matched temperature information in a working memory.
For example, in an example embodiment in which temperature information is managed in units of a single super page, the controller 110A may receive the temperature information of the nonvolatile memory 120A from the temperature sensor 105 when a program operation of a corresponding super page is performed. The obtained temperature information may be matched with identification information of the corresponding super page, and may then be stored in a working memory.
Alternatively, in an example embodiment in which temperature information is managed in units of two super pages, the controller 110A may obtain temperature information of the nonvolatile memory 120A from the temperature sensor 105 when a program operation of corresponding super pages is performed, match the obtained temperature information with the corresponding super pages, and store the matched temperature information in a working memory. In this case, according to an example embodiment, the controller 110A may obtain and store temperature information during a program operation of a super page, programmed first, of the two super pages, or may obtain and store temperature information during a program operation of a super page, programmed later, of the two super pages. Alternatively, temperature information of each of the two super pages may be obtained, and an average value thereof may then be stored.
Example embodiments, in which temperature information is managed in units of three or more super pages, are also possible and will be understood in the same manner as described above.
According to an example embodiment, temperature information may be managed through a temperature table. To this end, the controller 110A may include a temperature table manager 116.
The temperature table manager 116 may manage a temperature table in which a temperature of the nonvolatile memory 120A at the time of performing a program operation is listed.
For example, the temperature table manager 116 may store a temperature table, stored in a working memory, in the nonvolatile memory 120A and may load the temperature table, stored in the nonvolatile memory 120A, into the working memory.
Also, the temperature table manager 116 may update the temperature table. For example, the temperature table may include a first area in which temperature information on a plurality of user blocks, included in the user area 121, is managed in units of super blocks. In this case, the first area may include first sub-temperature tables corresponding to each super block, and temperature information on user blocks included in the corresponding super block may be listed in each of the sub-temperature tables in units of a predetermined number of super pages. Accordingly, the temperature table manager 116 may obtain temperature information from the temperature sensor 105 based on the first program operation and may update the obtained temperature information in the first sub-temperature table to update the temperature table.
As described above, according to example embodiments, the temperature information may be managed in units of a predetermined number of super pages. Thus, memory usage associated with the temperature information may be reduced.
Referring to
The application 101 may refer to various application programs driven in the external device. For example, the application 101 may include an operating system (OS), a word processor, a web browser, a video player, a game program, or the like.
The file system 102 may serve to organize a file or data, used by the application 101, when the file or data is stored in the storage device 100A. For example, the file system 102 may provide a logical address ADDR_log of the file or data to the storage device 100A.
The file system 102 may have a form varying depending on an OS of the external device. For example, the file system 102 may include a FAT (File Allocation Table), a FAT32, NTFS (NT File System), HFS (Hierarchical File System), JSF2 (Journaled File System2), XFS, ODS-5 (On-Disk Structure-5), UDF, ZFS, UFS (Unix File System), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, WinFS, or the like. Also, the file system 102 may define data in units of sectors. Also, the file system 102 may be driven by the external device.
The FTL 111 may provide interfacing between the external device and the storage device 100A to efficiently use the storage device 100A. For example, the storage device 100A may program and read data in units of super pages or pages. However, the file system 102 manages a file or data in units of sectors, so that the FTL 111 may serve to receive and translate the logical address ADDR_log into a physical address available in the storage device 100A. The FTL 111 may manage such an address translation operation through a mapping table.
Also, the FTL 111 may manage a plurality of memory blocks, included in the nonvolatile memory 120, after dividing the plurality of memory blocks into user blocks and reserved blocks. The FTL may perform address translation to write data in the user blocks. In this case, when one of the user blocks is turned into a bad block, the FTL 111 may replace the user block, turned into the bad block, with one of the reserved blocks. Such an operation may be referred to as a “remapping operation.”
The FTL 111 may perform operations such as garbage collection GC, wear leveling, and the like. For example, the FTL 111 may manage the number of program/erase (P/E) cycles of the plurality of memory blocks included in the storage device 100A, and may perform wear leveling such that the number of P/E cycles of the memory blocks may be equalized. The FTL 111 may perform a garbage collection operation of programming valid data, among data included in at least one memory block, into a free memory block and erasing at least one memory block.
The memory cell array 123 may include a user area 121. The user area 121 may be an area in which user data is stored, and may include a plurality of user blocks.
The plurality of user blocks may all be memory blocks. A memory block may include a plurality of strings, and each of the plurality of strings may include a plurality of memory cells. Each of the plurality of memory cells may be provided as a single-level cell (SLC), in which one bit is stored in each memory cell, or a multi-level cell (MLC) in which two or more bits are stored in each memory cell.
The address decoder 124 may be connected to the memory cell array 123 through a string select line (SSL), a ground select line (GSL), and a plurality of wordlines (WLs). The address decoder 124 may receive a physical address ADDR, and may decode the received physical address ADDR. The address decoder 124 may control voltages of the SSL, the GSL, and the plurality of WLs based on the decoded address.
The control logic 125 may control the address decoder 124 and the I/O circuit 126 in response to a CMD and a CTRL. The control logic 125 may generate various voltage required when the nonvolatile memory 124A operates. For example, the control logic 125 may control a voltage generator, not illustrated, to generate various voltages such as a plurality of read voltages, a plurality of program voltages, a plurality of pass voltages, and a plurality of erase voltages.
The I/O circuit 126 may be connected to the memory cell array 126 through a plurality of bitlines (BLs). The I/O circuit 126 may program DATA, received from the controller 110A, into the memory cell array 123. In this case, the I/O circuit 126 may operate as a write driver. The I/O circuit 123 may read DATA stored in the memory cell array 123, and may transmit the read DATA to the controller 110. In this case, the I/O circuit 123 may operate as a sense amplifier.
The FTL, the temperature table manager 116 have already been described with reference to
The working memory 113 may store data used in an operation of the controller 110A. For example, the working memory 113 may temporarily sore data processed by the processor 112 or data to be processed by the processor 112. The working memory 113 may be used as a buffer or cache memory of the controller 110A.
To this end, the working memory 113 may include a volatile memory such as an SRAM, a DRAM, or an SDRAM, and/or a nonvolatile memory such as a flash memory, a PRAM, an MRAM, an ReRAM, or an FRAM.
For example, the working memory 113 may store temperature information of a nonvolatile memory 120A at the time of performing a program operation. For example, temperature information obtained based on a first program operation may be matched with identification information of a predetermined number of super pages and then stored in the working memory 113.
According to an example embodiment, the working memory 113 may store a temperature table in which the temperature information of the nonvolatile memory 120A at the time of performing the first program operation is listed. The temperature table may include a first area in which temperature information on a plurality of user blocks included in the user area 121 is managed in units of super blocks. In this case, the first area may include first sub-temperature tables in which temperature information on user blocks included in each super block is stored in units of a predetermined number of super pages. The temperature table and the sub-temperature table will be described in more detail later.
The processor 112 may control the overall operation of the controller 110A. The processor 112 may process various types of arithmetic operations and/or logical operations. To this end, the processor 112 may include a special-purpose logic circuit (for example, a field programmable gate array (FPGA), application specific integrated chips (ASICs), or the like) configured to process operations. For example, the processor 112 may include one or more processor cores, and may be implemented with a general-purpose processor, a special-purpose processor, and/or an application processor, but example embodiments are not limited thereto.
For example, the processor 112 may control an operation of the nonvolatile memory 120A including a plurality of user blocks. For example, the processor 112 may manage the plurality of user blocks in units of super blocks.
Accordingly, the processor 112 may store temperature information, associated with the first program operation, in the working memory 113 in units of a predetermined number of super pages. For example, the processor 112 may obtain temperature information through the temperature sensor 105 based on the first program operation, and may match the obtained temperature information with identification information of a predetermined number of super pages and then store the matched temperature information in the working memory 113.
According to an example embodiment, the processor 112 may drive the FTL 111 and the temperature table manager 116 provided in the form of software. In this case, an operation of the temperature table manager 116 described above in
According to example embodiments, the temperature table manager 116 may be implemented as a hardware logic, separately from the processor 112. In this case, operations of the processor 112, associated with the above-described temperature information, may be performed by the temperature table manager 116.
The processor 112 may read a mapping table and a temperature table stored in the nonvolatile memory 120A. The mapping table and the temperature table, read from nonvolatile memory 120A, may be stored in the working memory 113 and managed by the processor 112.
The ROM 14 may store various types of information, required when the controller 110A operates, in the form of firmware.
The controller 110A may communicate with an external device through the host interface 115. For example, the host interface 115 may various interfaces such as various interfaces such as a universal serial bus (USB), a multimedia card (MMC), an embedded-MMC, a peripheral component interconnection (PCI), a PCI-express, an advanced technology attachment (ATA), a serial-ATA, a parallel-ATA, a small computer small interface (SCSI), an enhanced small disk interface (ESDI), an integrated drive electronics (IDE), a mobile industry processor interface (MIPI), and a nonvolatile memory-express (NVM-e). The controller 110A may communicate with the nonvolatile memory 120A through the flash interface 117.
Although not illustrated in the drawing, the controller 110A may further include a sensor interface, not illustrated, transmitting a request for temperature information to the temperature sensor 105 or receiving the temperature information from the temperature sensor 150.
In
Referring to
The nonvolatile memory 120A may include a first memory die DIE0, which may input and output data through a 0-th channel CH0, and a second memory die DIE1 which may input and output data through a first channel CH1. In this case, the 0-th channel CH0 and the first channel CH1 may input and output data in an interleaving scheme.
The first memory die DIE0 may include a plurality of planes PLANE00 and PLANE01, respectively corresponding to a plurality of ways WAY0 and WAY1 sharing the 0-th channel CH0 to input and output data in the interleaving scheme. The second memory die DIE1 may include a plurality of planes PLANE10 and PLANE11, respectively corresponding to a plurality of ways WAY2 and WAY3 sharing the first channel CH1 to input and output data in the interleaving scheme.
As illustrated in the drawing. PLANE01 may include BLK000, BLK001, BLK002 to BLK00N, PLANE02 may include BLK010, BLK011, BLK012 to BLK01N, PLANE03 may include BLK100, BLK101, BLK102 to BLK10N, and PLANE04 may include BLK110, BLK111, BLK112 to BLK11N.
As described above, a plurality of blocks included in the nonvolatile memory 120 may have physical locations divided based on ways or channels.
In
The controller 110A may group a plurality of memory blocks based on whether the plurality of memory blocks may be simultaneously selected, rather than the above-described physical locations, and may then manage the plurality of memory blocks in units of super blocks.
There may be various manners, in which the controller 110A groups a plurality of memory blocks and then manages the plurality of memory blocks, depending on selection of a designer.
In
A first manner is a manner in which a single block of a first plane, included in a single memory die, and a single block of a second plane, included in the single memory die, are grouped and then managed as a super block. In
A second manner is a manner in which a single block of a first plane of a first memory die and a single block of a first plane of a second memory die are grouped and a single block of a second plane of the first memory die and a single block of a second plane of the second memory die are grouped, and then the grouped blocks are managed as a super block. In
A third manner is a manner in which a single block of a first plane included in a first memory die and a single block of a second plane included in the first memory die, and a single block of a first plane included in a second memory die and a single block of a second plane included in the second memory die are grouped and then managed as a super block. In
Memory blocks, included in a single super block, may be selected substantially simultaneously through various interleaving manners such as channel interleaving, memory die interleaving, memory chip interleaving, and way interleaving, regardless of a manner of grouping the memory blocks.
For example, in example embodiments, the controller 110A may group and manage a plurality of user blocks in units of super blocks. Since user blocks included in a super block may be simultaneously selected, the controller 110A may perform a program operation on the plurality of user blocks in units of super blocks.
In this case, the super page may include a single page of each of the user blocks constituting the super block. For example, referring to
As described above, user blocks included in a super block may be simultaneously selected, and the controller 110A may perform a program operation in units of super blocks. In this case, the controller 110A may sequentially perform a program operation on the super pages constituting the super block in units of super pages, and respective pages included in a single super page may have temporal simultaneity in relation to the program operation.
In
As described above, when temperature information is managed in units of super pages, memory usage may be reduced. In detail, when temperature information is managed in general program units, for example, in units of pages, temperature information at the time of programming each page is stored in each user block, so that, for example, 3*(M+1) pieces of temperature information may be stored. However, when temperature information is managed in units of a single super page according to an example embodiment, the temperature information is stored in units of super pages, so that only (M+1) pieces of temperature information may be stored and memory usage for storing the temperature information may be reduced by ⅓ times, as compared with the case in which temperature information is managed in units of pages. When the temperature information is managed in units of two super pages, the memory usage may be reduced by ⅙ times. When the temperature information is managed in units of a single super block, the memory usage may be reduced by 1/(3*(M+1)) times.
As described above, a single super page has temporal simultaneity in terms of program operation, so that the controller 110A may manage temperature information in units of a single super page according to an example embodiment.
For example, when a program command for super pages included in the super block of
Although a single super page has temporal simultaneity in terms of a program operation, a temperature is unlikely to be significantly changed while a program operation is performed successively on a plurality of super pages in consideration of a program operation speed of the controller 110A. Therefore, according to example embodiments, the controller 110A may mange the temperature information in units of a plurality of super pages.
According to an example embodiment, the controller 110A may manage temperature information in units of two consecutive super pages.
For example, when a program command for super pages included in the super block of
In
Referring to
In operation S920, the storage device 100A may manage temperature information, associated with the first program operation, in units of a predetermined super pages. For example, the storage device 100A obtain the temperature information through the temperature sensor 105 based on the first program operation, match the obtained temperature information with identification information of the predetermined number of super pages, and store the matched temperature information in the working memory 113.
In the storage device 100B of
Referring to
When more than a predetermined number of memory cells, among memory cells in a user block, reach the end of their lifespan or are physically damaged to be no longer usable, a user block including the corresponding memory cells may be turned into a bad block. In addition, a user block including memory cells, which are unusable from the beginning due to manufacturing process issues, may also be turned into a bad block. Such bad blocks may be replaced with reserved blocks of the reserved area 122.
To this end, the controller 110B may include the bad block manager 118. The bad block manager 118 may replace a bad block with one of the user blocks of the reserved area 122 when the bad block occurs in the user area 121.
According to an example embodiment, the controller 110B may manage a plurality of reserved blocks of the reserved area 122 in units of blocks. For example, the controller 110B may perform a second program operation on the plurality of reserved blocks in units of pages (hereinafter, a program operation performed in units of pages will be referred to as a “second program operation”)
Also, the controller 110B may manage temperature information, associated with to the second program operation, in units of a predetermined number of pages. For example, the controller 110B may obtain temperature information through the temperature sensor 105 based on the second program operation, match the obtained temperature information with identification information of the predetermined number of pages, and store the matched temperature information in the working memory 113.
For example, in an example embodiment in which temperature information is managed in units of one page, the controller 110B may obtain temperature information of the nonvolatile memory 120B from the temperature sensor 105 when a program operation of a corresponding page is performed, match the obtained temperature information with identification information of the corresponding page, and store the matched temperature information in the working memory 113.
Alternatively, in an example embodiment in which temperature information is managed in units of two pages, the controller 110B may obtain temperature information of the nonvolatile memory 120B from the temperature sensor 105 when a program operation of the corresponding pages is performed, match the obtained temperature information with identification information of the corresponding pages, and store the matched temperature information in the working memory 113. In this case, according to example embodiments, the controller 110B may obtain and store temperature information during a program operation of a page, programmed first, of the two pages, or may obtain and store temperature information during a program operation of a page, programmed later, of the two pages. Alternatively, the controller 110B may obtain each temperature information and then store an average value.
Example embodiments, in which temperature information is managed in units of three or more super pages, are also possible and will be understood in the same manner as described above.
According to an example embodiment, temperature information may be managed through a temperature table. To this end, the temperature table manager 116 may manage a temperature table in which the temperature of the nonvolatile memory 120B at the time of performing the program operation is listed.
For example, the temperature table manager 116 may update a temperature table. For example, according to an example embodiment, the temperature table may include a second area in which temperature information on a plurality of reserved blocks, included in a reserved area, is managed in units of blocks. In this case, the second area may include second sub-temperature tables corresponding to each reserved block, and temperature information on a corresponding reserved block is listed, in units of a predetermined number of pages, in each of the second sub-temperature tables. Accordingly, the temperature table manager 116 may obtain temperature information from the temperature sensor 105 based on the second program operation and update a corresponding second sub-temperature table to update the temperature table.
According to an example embodiment, the temperature table may include a first area, in which temperature information on a plurality of user blocks area managed in units of super blocks, and a second area in which temperature information on a plurality of reserved blocks are managed in units of blocks. Therefore, the temperature table manager 116 may update the obtained temperature information in the first area when a location, in which a program command is executed, is included in the plurality of user blocks, and may update the obtained temperature information in the second area when a location, in which a program command is executed, is included in the plurality of reserved blocks.
As described above, according to an example embodiment, in the case of reserved blocks, temperature information is managed in units of a predetermined of page units, separately from user blocks. Therefore, the temperature information may be utilized without deterioration in performance of the storage device 100B even when a bad block occurs and is replaced with a reserved block.
A detailed description of an issue, occurring when temperature information on reserved blocks is not separately managed, will be provided. For example, when among user blocks a1, a2, and a3 included in a super block A, the user block a2 is turned into a bad block, the user block a2 may be replaced with a reserved block (for example, r1) among a plurality of reserved blocks r1 to rn.
In this case, when a program operation is performed on the super block A, data to be programmed into the user block a2 may be programmed into the reserved block r1. In this case, the temperature information may be stored in units of a predetermined number of super pages for the super block A, as described above. For example, temperature information on the reserved block r1 may not be stored separately.
When a data read operation is then performed on the super block A, the temperature information on the super block A should be read and used together. In this case, in the case of the user blocks a1 and a3, the temperature information on the super block A may be obtained in parallel with the data read operation and the obtained temperature information may be used in the data read operation.
However, in the case of the reserved block r1 corresponding to the user block a2, a separately stored temperature information is not present, so that a process of identifying a source block of the reserved block r1 may be additionally required. For example, in the case of the reserved block r1, temperature information may not be obtained in parallel with the data read operation, and the source block of the reserved block r1 may be traced back and temperature information on the super block A, in which a traced-back block a2 is included, may then be obtained. This may cause a deterioration in performance of the storage device.
However, as described above, according to an example embodiment, the temperature information on the reserved blocks may be managed, separately from the user blocks. Therefore, the temperature information may be obtained in parallel with the data read operation even in the case of the reserved block r1. As a result, the above-described issue may be addressed.
Since a software layer of an external device and the storage device 100B illustrated in
The FTL 111, the processor 112, the working memory 113, the ROM 114, the host interface 115, the temperature table manager 116, and the flash interface 117 are the same as those of the controller 110A of
Temperature information, obtained based on a second program operation, may be matched with identification information of a predetermined number of pages and then stored in the working memory 113.
According to an example embodiment, the working memory 113 may store a temperature table in which temperature information of the nonvolatile memory 120B at the time of performing the second program operation is listed. In this case, the temperature table may include a second area in which temperature information on a plurality of reserved blocks included in the reserved area 122 is managed in units of blocks. In this case, the second area may include second sub-temperature tables in which temperature information on each reserved block is stored in units of a predetermined number of pages.
The processor may control an operation of the nonvolatile memory 120B further including a plurality of reserved blocks. For example, the processor 112 may manage the plurality of reserved blocks in units of blocks.
Accordingly, the processor 112 may temperature information, associated with the second program operation, in the working memory 113 in units of a predetermined number of pages. For example, the processor 112 may obtain temperature information through the temperature sensor 105 based on the second program operation, match the obtained temperature information with identification information of the predetermined number of pages, and store the matched temperature information in the working memory 113.
According to an example embodiment, the processor 112 may drive the FTL 111, the bad block manager 118, and the temperature table manager 116 provided in the form of software. In this case, operations of the temperature table manager 116 and the bad block manager 118 described above may be performed by the processor 112.
According to example embodiments, the bad block manager 118 may be implemented as a hardware logic, separately from the processor 112. In this case, operations of the bad block manager 118 may be separately performed by the bad block manager 118.
Referring to
According to an example embodiment, the controller 110B may manage temperature information for a reserved block in units of pages.
For example, when a program command for the super pages included in the super block of
According to an example embodiment, the controller 110B may manage temperature information in units of a plurality of pages. According to an example embodiment, the controller 110 may manage temperature information in units of two consecutive pages.
For example, when a program command for super pages included in the super block of
In
Referring to
In operation S1420, the storage device 100B may manage temperature information, associated with the second program operation, in units of a predetermined number of pages. For example, the storage device 100B may obtain temperature information through the temperature sensor 105 based on the second program operation, match the obtained temperature information with identification information of the predetermined number of pages, and store the matched temperature information in the working memory 113.
Referring to
In this case, the first area may include first sub-temperature tables (1) in which temperature information on user blocks, included in respective super block SB1 to SBn, is stored in units of a predetermined number of super pages. The sub-temperature table described above with reference to
The second region may include second sub-temperature tables (2) in which temperature information on respective reserved block is stored in units of a predetermined number of pages. The sub-temperature table described above with reference to
According to an example embodiment, the controller 110B may identify a location of the nonvolatile memory 120 in which the program operation is to be performed in response to a program command, and may perform a program operation in the identified location. In this case, the controller 110B may obtain temperature information through the temperature sensor 105 while performing the program operation.
For example, when a program request RQ, address ADDR_log, and DATA are received from an external device, the controller 110B may translate a logical address ADDR_log into a physical address ADDR based on a mapping table. Accordingly, the controller 110 may identify the address ADDR of the nonvolatile memory 120B into which data is to be programmed, and may program data into the identified location.
In this case, the controller 110B may update obtained temperature information in the first area when the location, in which the data is programmed, is included in the user area 121 including a plurality of user blocks. When the location, in which data is programmed, is included in the reserved area 122 including a plurality of reserved blocks, the controller 110 may update the obtained temperature information in the second area.
As can be seen from
Referring to
In this case, the temperature table may include a first area, in which temperature information on a plurality of user blocks is managed in units of super blocks, and a second area in which temperature information on a plurality of reserved blocks is managed in units of blocks.
The first area may include first sub-temperature tables in which temperature information on user blocks included in each super block is stored in units of a predetermined number of super pages, and the second area may include second sub-temperature tables in which temperature information on each reserved block is stored in units of the predetermined number of pages.
In operation S1620, the storage device 100B may update the obtained temperature information in the first area when the location, in which the program operation is performed, is included in the plurality of user blocks.
In operation S1630, the storage device 100B may update the obtained temperature information in the second area when the location, in which the program operation is performed, is included in the plurality of reserved blocks.
The story device 100B may perform a read operation based on the temperature table.
The above-described temperature table may be stored in the nonvolatile memory 120 when power of the storage device 100 is turned off, and may be loaded into the working memory 113 to be utilized or updated in a read operation of the nonvolatile memory 120 when power of the storage device 100 is turned on.
To this end, according to an example embodiment, the controller 110 may store a temperature table Temp. Table, stored in the working memory 113, in the nonvolatile memory 120 for an idle time or while the power of the storage device 100 is turned off. Also, when the power of the storage device 100 is turned on, the controller 110 may load the temperature table, stored in the nonvolatile memory 120, into the working memory 113.
According to the above-described various embodiments, temperature information may be managed in units of a predetermined number of super pages or in units of a predetermined number of pages. Thus, memory usage for temperature information may be reduced.
In addition, temperature information may be managed in units of a predetermined number of pages for the reserved blocks, separately from user blocks. Accordingly, even when a bad block occurs and is replaced with a reserved block, the temperature information may be utilized without deterioration in performance of the storage device 100 or the controller 110.
As set forth above, according to example embodiments, temperature information may be more efficiently stored to reduce usage of a working memory.
According to an example embodiment, the method according to the above-described embodiments may be provided as being included in a computer program product. The computer program product may be traded as a product between a seller and a consumer. The computer program product may be distributed online in the form of machine-readable storage media (for example, compact disc read only memory (CD-ROM)) or through an application store (for example, Play Store™) or distributed online. In the case of online distribution, at least a portion of the computer program product may be at least temporarily stored or temporarily generated in a server of the manufacturer, a server of the application store, or a machine-readable storage medium such as memory of a relay server.
According to example embodiments, the respective elements (for example, module or program) of the elements mentioned above may include a single entity or a plurality of entities. Furthermore, at least one element or operation from among the corresponding elements mentioned above may be omitted, or at least one other element or operation may be added. Alternatively or additionally, a plurality of components (e.g., module or program) may be combined to form a single entity. As such, the integrated entity may perform functions of at least one function of an element of each of the plurality of elements in the same manner as or in a similar manner to that performed by the corresponding element from among the plurality of elements before integration. The module, a program module, or operations executed by other elements according to variety of embodiments may be executed consecutively, in parallel, repeatedly, or heuristically, or at least some operations may be executed according to a different order, may be omitted, or the other operation may be added thereto.
While example embodiments have been shown and described above, it will be apparent to those skilled in the art that modifications and variations could be made without departing from the scope of the concept as defined by the appended claims.
| Number | Date | Country | Kind |
|---|---|---|---|
| 10-2023-0033997 | Mar 2023 | KR | national |