WO2015005635A1 - 메모리 시스템 및 메모리의 데이터 처리 방법 - Google Patents

메모리 시스템 및 메모리의 데이터 처리 방법 Download PDF

Info

Publication number
WO2015005635A1
WO2015005635A1 PCT/KR2014/006098 KR2014006098W WO2015005635A1 WO 2015005635 A1 WO2015005635 A1 WO 2015005635A1 KR 2014006098 W KR2014006098 W KR 2014006098W WO 2015005635 A1 WO2015005635 A1 WO 2015005635A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
cell
value
programming
Prior art date
Application number
PCT/KR2014/006098
Other languages
English (en)
French (fr)
Inventor
오현오
Original Assignee
주식회사 윌러스표준기술연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 윌러스표준기술연구소 filed Critical 주식회사 윌러스표준기술연구소
Priority to PCT/KR2014/006098 priority Critical patent/WO2015005635A1/ko
Priority to US14/903,600 priority patent/US20160155495A1/en
Publication of WO2015005635A1 publication Critical patent/WO2015005635A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Definitions

  • the present invention relates to a memory system and a data processing method of a memory, and more particularly, to a memory system and a data processing method of a memory for efficiently processing data.
  • Memory devices are the most essential microelectronic devices in digital logic design. Such memory devices are classified into volatile memory devices and nonvolatile memory devices.
  • the nonvolatile memory device may store data even when power is cut off. Data stored in non-volatile memory may be permanent or reprogrammable, depending on the memory fabrication technique. Non-volatile memory devices can be used in applications of various industries.
  • Flash memory can be used in numerous media that store data, including smartphones, digital cameras, solid-state drives (SSDs), and black boxes.
  • SSDs using NAND flash memory are widely used as storage media in laptops, desktops, and servers due to their low power consumption, miniaturization, and impact resistance compared to hard disk drives (HDDs).
  • HDDs hard disk drives
  • a cell in a flash memory can write and delete data by filling and emptying electrons in a floating gate.
  • NAND flash memory has a disadvantage in that, unlike DRAM or HDD, overwrite in-place of data is not allowed. That is, in order to overwrite, the overwrite should be performed after deleting the portion previously written in the memory cell. In other words, the flash memory must return the data to its initial state or erased state before writing the data. This is called erasure-before-write. Therefore, even when data of 1 byte is changed due to the characteristics of a cell that cannot be overwritten, a problem arises in that the entire block must be erased first and then all pages in the block must be rewritten. The minimum unit is page and the minimum unit of deletion is block).
  • the cell of the flash memory can only be allowed to overwrite a certain number of times. In other words, if a certain number of overwrites is exceeded, additional overwrites are no longer possible and only reads are possible.
  • the update period may be different depending on the type of data. For example, most small data files are frequently written and deleted (i.e., updated), while most large data files are mostly accessible only for read operations.
  • the metadata may be one of hot data that is updated more frequently than the general data. Therefore, there is a need for a method of increasing the lifespan of a flash memory in consideration of these points.
  • An object of the present invention is to efficiently use a memory system.
  • a data processing method of a memory the step of acquiring the number of programming information of the page to program the data; Determining a set of driving voltage values including a lowest level value and a highest level value to be programmed to each memory cell in the page based on the obtained programming number information; And programming the data to each memory cell in the page using a plurality of voltages between the lowest and highest level values of the determined set of driving voltage values, wherein the lowest and highest level values are the And shifting in response to an increase in programming number information.
  • the determining may include determining the driving voltage set based on a value of the programming number information (mod 'the total number of driving voltage level values of the memory cell minus 1').
  • the programming count information is increased by one, and the determining of the data includes the lowest level value and the highest level value of the memory cell to which the first level value and the second level value are respectively assigned. And changing to a second level value and a third level value.
  • the page includes a pilot cell in a predetermined position set to have a threshold voltage between the lowest level value and the highest level value and a data cell in which the data is programmed,
  • the threshold voltage value being programmed is shifted in response to an increase in the programming count information
  • the method includes: reading a written voltage value of the pilot cell in response to a request for reading data written to the page; Setting a read voltage value for reading the data cell with reference to the read pilot cell voltage value; And reading data of the data cell based on the set read voltage value.
  • the memory cell is a multi level cell (MLC), and the method comprises: determining a size of data to be programmed; If the size of the determined data is smaller than half of the size of the page, programming the data into each memory cell with 1 bit information using the lowest level value and the highest level value; Shifting the lowest level value and the highest level value in response to the overwrite request of the data; And reprogramming the data into each memory cell of the page using the shifted lowest level value and the highest level value.
  • MLC multi level cell
  • a memory having a plurality of physical blocks, each of the plurality of physical blocks includes a plurality of pages; And a memory controller configured to control the memory, wherein the memory controller includes a programming module for writing / deleting data in the memory, a reading module for reading data written in the memory, and a reading with the programming module.
  • a control module for controlling the module wherein the control module obtains programming number information of a page to program data, and based on the obtained programming number information, a lowest level value to be programmed in each memory cell in the page; Determine a set of driving voltage values comprising a highest level value, and wherein the programming module uses the plurality of voltages between the lowest and highest level values of the determined set of driving voltage values to provide the data to each memory cell in the page. Program, but remind The lowest level value and the highest level value are shifted in response to an increase in the programming count information.
  • a data processing method of a memory may include: programming data by applying a voltage of a predetermined nominal value to a pilot cell at a predetermined position in the memory; Reading the recorded voltage value of the pilot cell; Calibrating a nominal value corresponding to the data based on the read voltage value of the pilot cell; And programming the data to a data cell of the memory using the calibrated nominal value.
  • the reading may include reading a voltage value of the pilot cell at a resolution higher than a voltage step between the data for programming.
  • the calibrating may include calculating a difference value between the read voltage value of the pilot cell and the predetermined nominal value; And adding the calculated difference value to the predetermined nominal value to obtain the corrected nominal value.
  • the calibrating may include calculating a ratio between the voltage value of the read pilot cell and the predetermined nominal value; And obtaining the corrected nominal value by scaling the predetermined nominal value based on the calculated ratio.
  • pilot cell is located in the same block or page as the data cell.
  • the data processing method may further include obtaining erase count information of a block in which the pilot cell is located or write count information of a page; And shifting the position of the pilot cell based on the erase count information or the write count information.
  • the pilot cell may include a plurality of cells each corresponding to a plurality of nominal values used for programming the memory.
  • a memory having a plurality of physical blocks, each of the plurality of physical blocks includes a plurality of pages; And a memory controller configured to control the memory, wherein the memory controller includes a programming module for writing / deleting data in the memory, a reading module for reading data written in the memory, and a reading with the programming module.
  • a control module for controlling the module wherein the programming module applies data of a predetermined nominal value to the pilot cell at a predetermined position in the memory to program the data, and the read module writes the recorded voltage of the pilot cell. Reads a value, the control module corrects a nominal value corresponding to the data based on the read pilot cell voltage value, and uses the corrected nominal value in the data cell of the memory. It is characterized by programming.
  • the step of programming data in the pilot cell and the data cell in the memory using a voltage of a predetermined nominal value is A cell of a predetermined position each corresponding to at least one nominal value used for programming; Reading the recorded voltage value of the pilot cell; Setting a threshold voltage value for reading the data cell with reference to the read pilot cell voltage value; And reading data of a data cell of the memory based on the set threshold voltage value.
  • the reading may include reading a voltage value of the pilot cell at a resolution higher than a voltage step between the data for programming.
  • pilot cell is located in the same block or page as the data cell.
  • the data processing method may further include obtaining erase count information of a block in which the pilot cell is located or write count information of a page; And shifting the pilot cell based on the erase count information or the write count information.
  • the pilot cell may include a plurality of cells each corresponding to a plurality of nominal values used for programming the memory.
  • the setting of the threshold voltage value may further include obtaining read voltage values of a plurality of pilot cells programmed using the same nominal value in the memory, wherein the read voltage values of the obtained plurality of pilot cells are obtained.
  • the threshold voltage value is set based on the average of the values.
  • a memory having a plurality of physical blocks, each of the plurality of physical blocks includes a plurality of pages; And a memory controller configured to control the memory, wherein the memory controller includes a programming module for writing / deleting data in the memory, a reading module for reading data written in the memory, and a reading with the programming module.
  • a control module for controlling the module, wherein the programming module programs data into pilot cells and data cells in the memory using a voltage of a predetermined nominal value, the pilot cell being at least used for programming of the memory.
  • the reading module may read data of a data cell of the memory based on the set threshold voltage value.
  • the memory system can be used efficiently.
  • 1 exemplarily shows characteristics of SLC and MLC.
  • FIG. 2 is a diagram schematically illustrating a memory system 200 according to an aspect of the present invention.
  • FIG. 3 schematically illustrates a memory system 300 in accordance with an aspect of the present invention.
  • FIG. 5 illustratively illustrates an overwriting scheme in one cell of a memory device in accordance with another aspect of the present invention.
  • FIG. 6 is a flowchart illustrating a data processing method of a memory according to an aspect of the present invention.
  • FIG. 7 illustratively illustrates a data block including pilot cells in accordance with an aspect of the present invention.
  • FIG. 8 exemplarily illustrates a change in arrangement of pilot cells according to a programming count and according to a page according to an aspect of the present invention.
  • FIG. 9 illustratively illustrates a read technique using pilot cells within a page in accordance with an aspect of the present invention.
  • 10 illustratively illustrates a change in threshold voltage after data programming.
  • FIG. 11 illustrates an exemplary voltage readout mechanism using pilot cells in accordance with an aspect of the present invention.
  • FIG. 12 illustratively illustrates a voltage readout technique of a data cell using a switch in accordance with an aspect of the present invention.
  • FIG. 13 illustratively illustrates a data cell read technique using a switch in accordance with an aspect of the present invention.
  • 15 is a flowchart illustrating a data processing method of a memory according to an aspect of the present invention.
  • 16 is a flowchart illustrating a data processing method of a memory according to another aspect of the present invention.
  • the term "unit of information" as used herein may mean a unit in which data or the like may be stored or represented in a data storage system or a communication system.
  • the information unit may include bit, byte, trit, ban, decit, dit, decimal digit, nat, nit, nepit, and the like.
  • a bit will be described as an example of an information unit, but other information units other than these bits may also be included within the scope of the present specification.
  • 1 exemplarily shows characteristics of SLC and MLC.
  • Cells used in NAND flash memory include a single level cell (SLC), a multi level cell (MLC), and a triple level cell (TLC).
  • the data may be classified into SLC, MLC, and TLC according to a method of storing data in a cell, which is a minimum unit for storing data in a flash memory. That is, the cells constituting the flash memory are the same, but may be divided into SLC, MLC, and TLC depending on how the cells are operated.
  • SLC can store one bit of information (i.e. two states) in one cell
  • MLC can store two bits of information (i.e. four states) in one cell
  • TLC is one cell It can store 3 bits of information (ie 8 states).
  • MLC and TLC which can store more bits in one cell, may have a larger capacity than SLC, but in the order of performance and lifespan of flash memory, SLC > MLC > TLC. Since MLC and TLC allow multiple bits (ie, various states) to be written to a cell by varying the amount of electron filling (i.e., the magnitude or state of the voltage) in the floating gate, MLC and TLC are better than SLC. Not only can the writing and reading speed be slow, but the incidence of errors can be high. That is, MLC and TLC may use a higher level of ECC than SLC, which may increase the load on the system. In addition, as more bits are written in one cell, the difference in voltage is smaller for each state. Therefore, when the resistance value of the oxide film due to the electrons accumulated in the oxide film in the memory cell increases, the voltage difference is applied. Indistinguishable. Thus, MLC and TLC may have a shorter lifetime than SLC.
  • MLC has advantages in terms of production cost since it has a higher storage capacity per cell than SLC.
  • MLC has an advantage of having a high lifetime and good performance compared to TLC. This MLC is currently used in many applications.
  • the SLC can record two states (ie, 1 bit of 1 and 0) in one cell through the magnitude of two types of voltages.
  • the MLC can record four states (ie, 2 bits of '11', '10', '01' and '00') in one cell through four types of voltage magnitudes.
  • the SLC performs a write operation in such a manner as to implement a transition from an erase state '1' to another state (eg, a write state) '0' by shifting the threshold voltage Vt value. can do.
  • the charged electrons may return to the state from 0 to 1 again by the erase operation.
  • MLC is exemplified for the type of cell of a nonvolatile memory in this specification, memory cells having additional levels other than TLC may also be included within the scope of the present invention.
  • FIG. 2 is a diagram schematically illustrating a memory system 200 according to an aspect of the present invention.
  • the memory system 200 in FIG. 2 may be largely composed of an application 201 (or a host), a file system 202, and an SSD 203.
  • the components in FIG. 2 are merely exemplary, and some of the components in FIG. 2 may be omitted, or components other than the components in FIG. 2 may be included in the memory system 200.
  • the SSD 203 in FIG. 2 may be replaced with a memory device and a memory controller capable of performing similar functions.
  • applications 1 through N 201 may include any device or program that requires data storage to a flash memory device, such as an SSD.
  • file system 202 may be referred to as a host or application area with application 201.
  • This file system 202 can access any data on the SSD via a logical sector address.
  • the flash translation layer 206 of the SSD controller 204 may map the logical sector address and the physical address by converting the logical sector address into a physical address.
  • file system 202 may mean a virtual sector implemented by flash translation layer 206.
  • the file system 202 herein may be used interchangeably with the application 201.
  • Flash translation layer 206 may refer to system software developed for this purpose.
  • the flash translation layer 206 includes a mapping algorithm for converting a logical address into a physical address, an algorithm for determining a data file size, an algorithm for dividing pages of the flash memory 205 into a plurality of subpages, and an algorithm for performing wear leveling. And an algorithm for controlling a voltage to be applied to the flash memory 205.
  • the flash translation layer 206 of the SSD controller 204 includes an address allocator 208 for mapping logical and physical addresses, and a wear leveler for performing wear leveling. leveler 210 and garbage collector 209, data file size analyzer 211 for analyzing and comparing the size of data files, and voltage controllers for controlling voltages to be applied to flash memory 205 216, and the like. Additionally, the components of the flash translation layer 206 described above are illustrative only and additional components may be included in the flash translation layer 206 or some of the components described above may be omitted.
  • the wear leveler 210 may perform wear leveling in units of blocks, pages, and / or bits in order to increase the lifespan of the flash memory 205.
  • the garbage collector 209 is configured to mark invalid data or obsolete data, copy back to other blocks, pages and / or bits, and delete the unnecessary data at once in blocks. Wear leveling may be implemented by performing an operation or the like.
  • the address allocator 208 may implement allocation of logical addresses and physical addresses in units of blocks, pages, or bits (cells) of memory. Thus, data that is inserted into the appropriate physical block location, page location, and / or bit location may be allocated to implement wear leveling. In addition, the address allocator 208 may generate a mapping table or the like for mapping bits entering the memory cell having a plurality of voltage state levels (eg, MLC, TLC, etc.) to appropriate voltage state levels.
  • a plurality of voltage state levels eg, MLC, TLC, etc.
  • the voltage controller 216 may apply, for example, a driving voltage level higher than or equal to the previous in-cell write mode to the memory cell to represent one or more bits. The application of this voltage may be performed based on the mapping table generated by the address allocator 208. The voltage controller 216 may also determine the driving voltage level value to be applied to the memory cell by checking the voltage level of the memory cell corresponding to one or more bits written to the previous memory cell.
  • the in-cell write mode herein may indicate a value that counts the number of in-cell writes within one erase cycle (or erase count).
  • the data file size analyzer 211 may determine the size of an incoming data file. Through this determination, the data file size analyzer 211 may determine whether the incoming data file is smaller than the size of the divided subpage, for example.
  • the flash translation layer 206 of the SSD controller 204 may include a hot data identifier 211.
  • the hot data identifier 211 may assist in the implementation of wear leveling by performing operations for identifying and detecting frequently accessed data and cold data that are not frequently accessed.
  • the SSD controller 204 may include a programming module (write and delete) and a read module for writing, erasing, and reading data into the flash memory 205.
  • the SSD controller 204 may control overall operations of the SSD.
  • the SSD controller 204 may receive a logical address from the application 201 or the file system 202.
  • the flash translation layer 206 of the SSD controller 204 may convert the input logical address into a physical address.
  • the translated physical address may be transferred to the memory technology device layer 207 or the flash memory 205.
  • the memory technology device layer 207 may refer to an interface layer for supporting various flash memories or RAMs. In addition, such memory technology device layer 207 may be an optional configuration.
  • the flash memory 205 may be composed of a plurality of memory cells having a string structure, as is well known to those skilled in the art.
  • the set of memory cells is generally referred to as a cell array.
  • the cell array of the flash memory 205 is composed of a plurality of memory blocks.
  • Each memory block 212 is composed of a plurality of pages 213.
  • Each page consists of a plurality of memory cells or data cells 214 that share one word line.
  • a single bit data, a single bit data, a triple bit data, or a triple bit dadta may be stored in one memory cell or data cell 214.
  • a memory cell capable of storing single bit data is referred to as a single level cell (SLC)
  • a memory cell capable of storing multi bit data is a multi level cell (MLC).
  • MLC multi level cell
  • TLC triple level cell
  • each page 213 in block 212 in flash memory 205 may be comprised of a plurality of subpages 215.
  • the size of the page 213 is 4 KB
  • four sub pages 215 in units of 1 KB may be formed in one page 213.
  • FIG. 3 schematically illustrates a memory system 300 in accordance with an aspect of the present invention.
  • the memory system 300 may include a memory controller 301 and a flash memory 302.
  • the memory controller 301 may control overall operations of the flash memory 302.
  • the memory controller 301 includes a control module 303 for performing wear leveling, bit allocation, voltage control and page division, a programming module 304 for performing write and erase operations, and a reading module for performing read operations. 305 may be included.
  • control module 303 is based on the metadata stored in the meta area 306, etc., when an operation request for the flash memory 302 is received from a host or an application or the like. Wear leveling, bit allocation, voltage control and page division may be performed. In addition, the control module 303 may control the operations of the programming module 304 and the reading module 305.
  • control module 303 may determine an in-cell write mode based on the number of data write requests for the memory cell.
  • the control module 303 may determine a driving voltage level value to be applied to represent one or more bits in the memory cell based on the determined in-cell write mode.
  • control module 303 may generate a mapping table or the like in which one or more bits are mapped from the low state levels of the memory cells to the high or the same level state according to the in-cell write mode.
  • the generated mapping table may be stored in the flash memory 302 (eg, the meta region 306).
  • control module 303 may assign one or more information units to the memory cell in one erase cycle based on a plurality of predetermined factors, using the same number of states as the maximum number of states that can be represented in the memory cell.
  • One of a technique of writing once and a technique of writing one or more information units into the memory cell a plurality of times in one erase cycle may be selected using fewer states than the maximum number of states that can be represented in the memory cell. This selection may be determined based on factors such as, for example, the nature of the data, the size of the data file, the wear leveling state in flash memory, and the like.
  • control module 303 may divide the page 310 of the flash memory 302 into subpages.
  • control module 303 may sequentially allocate the divided incoming data (overwritten data) to the divided subpages.
  • the sequentially allocated data may correspond to the same logical address. That is, data sequentially allocated may mean the same file.
  • control module 303 may set and store a state value of each of the subpages. These status values include a valid state in which the last update value of the data is recorded, an obsolete state in which the value before the data update request is recorded, and an empty state in which no data has been recorded yet. It may include.
  • Wear leveling may refer to in-page wear leveling or micro wear leveling, not inter-page wear leveling. More specifically, bad blocks are typically generated when one or more cells exceed a wear threshold, rather than a group of cells on a page basis.
  • the control module 303 changes the bit position within the page (e.g., shifts (or rotates, reversing). And / or scrambling or changing (eg, inversion) of data values written to bit positions in the page.
  • control module 303 can determine the type of data to be written and determine a technique for writing each data bit into one page based on the determined type of data. More specifically, the control module 303 can determine the type of data to be recorded (eg, file type (doc, xls, ppt, txt, pdf, wav, mp3, jpg, zip, avi, etc.). The information related to the type of may be included in a request for recording of data, etc. When the type of data to be recorded is determined, the control module 303 based on a predetermined algorithm, according to the type of the above-described micro wear leveling based on a predetermined algorithm.
  • Selecting one of the techniques shifting, reversing, scrambling and inversion), determining whether to split subpages, determining the number of subpages to be split, or one or more according to the state levels of a memory cell.
  • the allocation scheme of bits can be determined.
  • control module 303 may be implemented in firmware.
  • the wear control module 303 may be included in a flash translation layer (FTL).
  • the flash translation layer is system software that manages an erase / write / read operation in order to use the flash memory 302 as a hard disk as described above.
  • the flash translation layer may perform subpage division, voltage control, mapping information management, bad block management, data retention management in case of unexpected power failure, and wear management.
  • the programming module 304 may write the data bits to be written in one page under the control of the control module 301. More specifically, the programming module 304 may apply a driving voltage level value for representing one or more bits to the memory cell according to the voltage value determined by the control module 301. In addition, the programming module 304 may sequentially write data to the divided subpages. In addition, the programming module 304 may perform an erase operation on the memory cell in response to a subsequent write request when the plurality of state levels of the memory cell are used up. In addition, the programming module 304 may perform an erase operation on the memory cell in response to a subsequent write request when all subpages in the page are used. As described above, the programming module 304 can write data to or delete data from the user area 307 of the flash memory 302. When a write and / or erase operation is performed, the programming module 304 reads the meta data stored in the meta area 306 of the flash memory 302 (eg, in-cell write information, erase count or write mode count, etc.). You can change it.
  • the reading module 305 may read data written to the user area 307 of the flash memory 302.
  • the reading module 305 may read the data recorded in the user area 307 based on the mapping information between the logical address and the physical address with reference to the data stored in the meta area 306. That is, the reading module 305 reads from the physical address with reference to the write mode count stored in the meta area 306, the in-cell write mode information, the voltage state level of the memory cell, the mapping information, and / or the count information. Information can be interpreted as appropriate logical addresses.
  • the flash memory 302 may include a meta area 306 and a user area 307.
  • the meta area 306 may store meta data (or control data) for managing the flash memory 302.
  • metadata may include intra-cell recording mode information, recording mode count information, a mapping table, and the like.
  • the meta region 306 may include at least one physical block composed of a plurality of physical pages having a plurality of memory cells.
  • meta area 306 may be incorporated into user area 307.
  • metadata such as, for example, intra-cell recording mode information and / or count information may be stored in page 309 or block 308 of user area 307.
  • the metadata may be stored in a page 309 of the user area 307 or in a header (not shown) at block 308.
  • the user area 307 may mean a data storage of a general flash memory.
  • the user area 307 may include at least one physical block composed of a plurality of physical pages having a plurality of cells.
  • one page 309 of the user area 307 of the flash memory 302 may include a plurality of memory cells 310.
  • Each of the memory cells 310 may represent three or more different states according to driving voltage level values. For example, when memory cell 310 is MLC, memory cell 310 may represent four different states. In addition, when the memory cell 310 is a TLC, the memory cell 310 may represent eight different states. Although three states (state 0, state 1, and state 2) are illustrated in FIG. 3, it will be apparent to those skilled in the art that there may be three or more different states through the configuration for the memory cell 310.
  • one page 309 may be divided into a plurality of subpages.
  • the memory cell in FIG. 4 uses MLC as an example.
  • This MLC can represent four different voltage level states.
  • the code mapping scheme in the conventional MLC uses two bits of values of '11' in the L1 state, '10' in the L2 state, '01' in the L3 state, and '00' in the L4 state.
  • Can record For example, when writing 2-bit data of '10', data of '10' may be written to the memory cell by applying a driving voltage corresponding to the L2 state.
  • L1 to L4 indicate different driving voltage values programmed into the memory cell.
  • the code mapping scheme may allow one bit to be written three times in the example of MLC. More specifically, in a memory cell that is empty after the erase operation, when a write request is received, a value of 1 may be mapped to an L1 state and a value of 0 may be mapped to an L2 state. Next, when a subsequent write request is received, a value of 1 may be mapped to the L2 state of the memory cell and a value of 0 to the L3 state. When a write request is then drawn, a value of 1 may be mapped to the L3 state of the memory cell and a value of 0 to the L4 state. Meanwhile, in FIG. 4 and the following description, 'X' means that a corresponding voltage level is not used for data mapping.
  • three write counts wc or three write modes w_mode (or in-cell write mode) per one erase count (ec) write mode) may be allowed.
  • the number of write modes w_mode may be determined based on a value of 'write count (mod' total number of driving voltage level values of memory cells minus 1 ')'. That is, in the case of MLC, the recording mode w_mode may be determined as 'wc (mod 3)'.
  • an in-cell write mode may be determined based on the number of data write requests for a memory cell. In-cell write mode and write mode are used interchangeably herein.
  • the memory controller 301 may determine to apply the voltage value of L2.
  • the memory controller 301 may determine to apply the voltage value of L3.
  • a value of 1 or 0 may be rewritten to the memory cell.
  • the current recording mode is 1, there are four identical MLCs (ie, Cell 1, Cell 2, Cell 3 and Cell 4), and L1, L2, The voltage difference between L3 and L4 is assumed to be 0.1V. In addition, it is assumed that data of 0, 1, 1, and 0 are recorded in four cells in the current state.
  • the count value of the write mode (ie, in-cell write mode) is increased from 1 to 2.
  • the count value of the write mode ie, in-cell write mode
  • incoming data can be recorded according to a new code mapping relationship. More specifically, assume that the subsequent write request requests writing of data of 1, 0, 1, 0 to 4 cells, respectively. In this case, since cell 1 has zero of the L3 state in the previous write mode, a write voltage of L3 would be required to write 1 in the new write mode (i.e., 1 without applying a voltage). Can be recorded).
  • the techniques according to an aspect of the present invention increase the wear rate of the memory cell caused by the erase cycle since the erase count for the memory cell is reduced to a maximum of 1/3 (in the case of MLC) compared to the conventional techniques. Can be minimized.
  • the lifespan of the memory device eg, flash memory
  • the operation mode of the memory cell and the number of bits stored in one memory may be variously configured. That is, the memory system according to another embodiment of the present invention, according to the operation mode of the memory cell, one erase cycle of one or more information units using less than the maximum number of states that can be represented in one memory cell Multiple writes can be made to one memory cell within the memory cell. For example, when the memory cell is a TLC, eight different states may be represented in total, and one TLC memory cell may write a maximum of 3 bits. In this case, the memory system according to an embodiment of the present invention may allocate one or two bits of data to one TLC memory cell. According to an embodiment of the present invention, when controlling to write one bit to one TLC memory cell, the memory system expresses one bit with a different voltage state level for each in-cell write mode as shown in Table 1 below. Can be assigned to
  • one TLC bit when one bit is allocated to one TLC memory cell, one TLC bit may use seven different write modes, and the memory system 100 may perform up to seven times without an erase operation. Data can be rewritten in one memory cell.
  • a value of 1 rather than X may be assigned to a level before the level at which the value of 0 is written. In this case, when the input of 1 is drawn in, the value of 1 can be written in the same cell without a rise (shift) of the voltage level.
  • the bit allocation method for this embodiment is represented in Table 2 below.
  • a TLC memory cell may represent eight different states, and the memory system 100 according to an embodiment of the present invention may be configured to represent two bits in one TLC memory cell. .
  • the data may be read according to the above-described mapping method even when data is read.
  • the read module or memory controller if the read module or memory controller is currently in write mode 4 and the voltage level state of the memory cell has been read as 4, the read module or memory controller has written or stored in that memory cell. It can be read that the data is zero.
  • the method of allocating two bits to one TLC memory cell by the memory system 100 may be as shown in Table 3 below.
  • the maximum number of states (ie, levels) that can be represented in one memory cell is eight.
  • the data is written to one memory cell using a number of states less than the maximum number of states that can be represented in one memory cell, and the memory cells are used at least once without erase operation using different in-cell write modes. All of the overwrite operations may be included in the scope of the present invention.
  • the data may be read according to the above-described mapping method even when data is read.
  • the read module or memory controller may read that the data written or stored in the memory cell is 01. have.
  • memory cells having different operating states may be used together.
  • a memory device constituting a memory system at least some memory cells may be configured as MLC memory cells, and some other memory cells may be configured as TLC memory cells.
  • the memory system may set, for each memory cell, the number of states for representing one or more information units (eg, bits) in the memory cell to be less than the maximum number of states that can be expressed in the memory cell.
  • the memory cell according to an additional aspect of the present invention is a TLC
  • two writes to one cell in 2-bit units may be allowed in one erase cycle.
  • three writes to one cell in one bit unit may be allowed along with one write to one cell in two bit units within one erase cycle.
  • a memory cell according to an additional aspect of the present invention includes, for example, three voltage state levels, two writes to one cell in one bit unit may be allowed.
  • MLC and TLC may be implemented alternately. In this case, an additional wear leveling effect may be achieved.
  • the same recording method is implemented. At least one may be performed.
  • FIG. 5 illustratively illustrates an overwriting technique in one cell of a memory device in accordance with another aspect of the present invention.
  • the overwrite scheme shown in FIG. 5 has a difference between the overwrite scheme shown in FIG. 4 and the mapping scheme. That is, the overwrite scheme illustrated in FIG. 5 may be set such that a value of 1 is mapped to a voltage state level lower than a voltage state level having a value of zero.
  • the voltage value can be shifted only if the data to be stored has a value of zero.
  • the code mapping scheme may allow one bit to be written three times in the example of MLC. More specifically, in a memory cell that is empty after the erase operation, when a write request is received, a value of 1 may be mapped to an L1 state and a value of 0 may be mapped to an L2 state. Next, when a subsequent write request is received, a value of 1 may be mapped to the L2 state of the memory cell, a value of 1 to the L2 state of the memory cell, and a value of 0 to the L3 state. When a write request is then incoming, a value of 1 may be mapped to the L1, L2 and L3 states of the memory cell and a value of 0 to the L4 state.
  • a driving voltage corresponding to the state of L1 may be applied to the memory cell.
  • the memory controller 301 can write a value of 1 in the write mode 1 without shifting the voltage.
  • the memory controller 301 may determine to apply a voltage value having a value of L3.
  • the lifetime of the memory cell is extended by applying a voltage of the shifted level value only when a value of 0 is requested while allowing three consecutive overwrites in units of one bit (in the case of MLC). Can be maximized.
  • FIG. 6 is a flowchart illustrating a data processing method of a memory according to an aspect of the present invention.
  • the method shown in FIG. 6 may be performed by the memory controller 301, for example. It will be apparent to those skilled in the art that additional steps other than those shown in FIG. 6 may also be included in the method, and some steps may be omitted.
  • the memory controller obtains programming number information of a page for programming data (S110).
  • the programming count information is used as a concept including the count information that can be used under various names such as write count information of a corresponding page and data write request count information of a memory cell.
  • the programming count information is incremented by one by a request for writing data (or a programming request) for a corresponding page.
  • the memory controller determines a set of driving voltage values including the lowest level value and the highest level value to be programmed to each memory cell in the page, based on the obtained programming number information (S120).
  • the memory controller may determine an in-cell write mode based on the number of programming information.
  • the in-cell write mode may be determined as' programming count information (mod 'total number of driving voltage level values of a memory cell minus 1'). For example, in the case of MLC, the total number of driving voltage level values of the memory cell is 4, and thus, the in-cell write mode may be determined as 'programming count information mod 3'.
  • the memory controller shifts at least one of the lowest level value and the highest level value of the set of driving voltage values in response to an increase in the programming count information.
  • the memory controller may shift the lowest level value and the highest level value together in response to an increase in programming count information.
  • the lowest level value and the highest level value may be set to always have a constant level difference.
  • the memory controller may set the lowest level value and the highest level value to L2, respectively, in response to an increase in programming count information. You can shift to L3.
  • the memory controller may shift only the highest level value in response to an increase in programming count information. For example, when the data '0' is mapped to the highest level value, only the driving voltage level value for writing the data '0' may be changed in response to the increase in the programming count information. Further, the data '1' may be set to all the voltage levels lower than the voltage level mapped to the data '0'. That is, when the lowest level value and the highest level value allocated to the memory cells of the corresponding page are L1 and L2, respectively, the memory controller may set the lowest level value and the highest level value to L1 and L3, respectively, in response to an increase in programming count information. You can change it.
  • the memory controller may refer to the mapping relationship between the bits and the voltage level value in the previous write mode and / or the mapping relationship between the bits and the voltage level value in the current write mode.
  • the memory controller may determine a driving voltage level value (that is, a shift voltage value) to be applied according to a voltage level value at which bits are written in the last write mode and a value of data requested in the current write mode.
  • the memory controller programs data to each memory cell in the page using a plurality of voltages between the lowest level value and the highest level value of the determined driving voltage value set (S130).
  • the memory controller may apply a driving voltage level value for representing one or more bits to the memory cell based on the determined in-cell write mode.
  • Such application may mean applying a drive voltage value higher or equal to the drive voltage value of the previous in-cell write mode to represent one or more bits to the memory cell.
  • the number of states for representing the one or more information units in the memory cell may be less than the maximum number of states that can be expressed in the memory cell. That is, the number of states of the memory cell used in the write once may be less than the maximum number of states that can be represented in the memory cell.
  • the maximum number of states that can be represented in the memory cell will be eight.
  • the number of states of the memory cell used in the write once may have a number less than eight (e.g., two states for representing one bit or four states for representing two bits).
  • each page of the memory may include pilot cells at preset positions, and the memory controller may read data using the pilot cells. That is, one page may include a pilot cell at a predetermined position and a data cell in which data is programmed. A threshold voltage for reading data programmed in the data cell may be written in the pilot cell.
  • the memory controller may program a threshold voltage between the lowest level value and the highest level value shifted in response to the increase in the programming count information in the pilot cell. At this time, the threshold voltage value programmed in the pilot cell is shifted in response to an increase in programming count information.
  • the memory controller reads the written voltage value of the pilot cell in response to a read request for data written to the page.
  • the memory controller may set a read voltage value for reading the data cell with reference to the read pilot cell voltage value, and read data of the data cell based on the set read voltage value.
  • the memory controller may shift the threshold voltage value written to the pilot cell in response to the shifting of the driving voltage value set used for programming the data cell.
  • the memory controller may read data of the data cell based on the read voltage obtained from the pilot cell. That is, the memory controller may read data as '0' when the voltage of the data cell is higher than the read voltage, and read data as '1' when the voltage of the data cell is lower than the read voltage. According to the aspect of the present invention, the memory controller does not need to refer to the number of programming times when reading the data programmed in the data cell, and directly obtains the read voltage value of the data cell from the pilot cell of the corresponding page. Data can be read.
  • the memory controller may apply the overwrite technique in one cell to only the small data whose size of data to be programmed is equal to or less than a predetermined reference.
  • the memory controller when the memory cell is an MLC, the memory controller performs in-cell overwriting of the corresponding page only when the size of the data is smaller than half the size of the page. In this case, when an overwrite request (or an update request) for the corresponding data is received, the memory controller may overwrite the data as it is on the page.
  • the memory controller determines the size of the data requested for programming and determines whether the size of the determined data is less than half the size of the page. If the size of the data is smaller than half the size of the page, the memory controller programs the data into each memory cell with 1-bit information using the lowest level value and the highest level value described above. When the overwrite request for the programmed data is received, the memory controller shifts the lowest level value and the highest level value for the corresponding page as described above, and uses the shifted lowest level value and the highest level value. Reprogram the data into each memory cell on the page. In this case, the data reprogrammed in each memory cell may be data updated when the overwrite request is made.
  • a new data different from the data stored in a specific page is not programmed, but a logical address (or log data) mapped to data in the page by updating and reprogramming data previously stored in the page. You do not need to change).
  • mapping scheme and the order of 0 and 1 in the present invention is merely exemplary, the order of 0 and 1 in the present specification may be changed variably. That is, 0 and 1 may be mapped in reverse.
  • FIG. 7 illustratively illustrates a data block including pilot cells in accordance with an aspect of the present invention.
  • memory devices such as flash memory may use arrays of analog memory cells to store data.
  • Each analog memory cell may store an amount of analog values, such as a charge amount or a voltage, to represent the information stored within the cell.
  • each memory cell has a certain amount of charge.
  • These ranges of analog values can generally be divided into specific regions, each of which can correspond to one or more data bit values.
  • SLC may be divided into two regions, and cells having a plurality of levels such as MLC may be divided into four or more regions.
  • data can be written to analog memory by writing a nominal analog value corresponding to the required bits. Since these analog values can have various statistical distributions, the choice of nominal values used to program different levels can have a significant impact on the performance of the memory cell array.
  • the nominal values are adjacent to each other, there is a high probability that an error will occur in the reading of the memory cell.
  • the nominal values differ greatly from each other, the dynamic range of analog values in the memory cell array can be increased. In this case, more power may be consumed and the programming speed of the memory cell may be slowed down.
  • the use of certain predetermined values for reading and writing may affect the performance of a memory device such as a bit error rate (BER), etc. This may adversely affect.
  • BER bit error rate
  • the probability of an error occurring due to the nature of the analog voltage in writing and reading data may be higher.
  • the present invention proposes a programming technique that uses predetermined nominal values in a pilot cell located in a predetermined region of a page.
  • analog voltages read in pilot cells can be used to compensate for errors and variations in voltages in adjacent data cells.
  • one page in a block of a memory device in accordance with an aspect of the present invention may consist of one or more (eg, four) pilot cells and a plurality of (eg, 32768) data cells. have. Although four pilot cells are exemplarily illustrated in FIG. 7, more or less number of panomialot cells may also be included in the scope of the present invention.
  • Figure 7 illustrates an SSD composed of MLC with four nominal values.
  • Four pilot cells labeled A, B, C and D, may be preset in each page.
  • pilot cell A may be allocated to '11'
  • pilot cell B may be allocated to '10'
  • pilot cell C may be allocated to '00'
  • pilot cell D may have a nominal value (ie, a reference voltage value).
  • pilot cells A, B, C, and D may be fixed values, may be assigned differently for each page, or may be changed in various ways to implement wear leveling.
  • these pilot cells A to D may be disposed at various positions within the page. The placement of such pilot cells may be determined based on the type of pages, programming count, random manner, and the like.
  • pilot cells By using such pilot cells, data can be programmed using predefined nominal values in pilot cells placed at a predetermined location within the page. Next, a read or write operation may be performed on the data cell by referring to the values of the pilot cells.
  • FIG. 8 exemplarily illustrates a change in arrangement of pilot cells according to a programming count and according to a page according to an aspect of the present invention.
  • pilot cells may be placed in various locations based on programming counts and / or pages. Through such placement into various locations, pilot cells can represent more useful values in providing reference to data cells. In addition, such placement into various locations may also achieve a wear leveling effect within the page.
  • the memory controller 301 after the memory controller 301 writes data by applying a voltage value to the pilot cells, the memory controller 301 reads the pilot cells before writing or reading the data cells to write or read the data cells.
  • the voltage value to be used can be determined.
  • the memory controller 301 may read analog voltage values for the pilot cells after writing the values to the pilot cells.
  • programming generally may include a process of re-reading the voltage for verification.
  • the write operation may be performed using the nominal values calculated in relation to the read voltages in the pilot cells. That is, as described above, when the nominal values in the read process do not reach the intended reference voltage values (write 5V and read 4.7V), the difference between the voltage value at the time of writing and the voltage value at the time of reading As many voltages (eg, 0.3V) may be considered in programming the data cells. That is, when programming the data cell, it can be written at a voltage of 5.3V. In this case, a more accurate read can be made when the reference voltage value uses 5V for reading the data cell.
  • the voltage e.g., the difference between the voltage value at the time of reading and the voltage value at the time of reading
  • the voltage can be considered in programming the data cells. That is, when programming the data cell, it can be written at a voltage of 4.7V. In this case, a more accurate read can be made when the reference voltage value uses 5V for reading the data cell.
  • This technique may be based on the assumption that the sensitivity and responsiveness of the cells to voltage within a page are similar. That is, other variables affecting wear level, temperature, and cell sensitivity may have similar characteristics in programming within the same page. Thus, due to programming with feedback from these pilot cells, an optimal nominal value can be determined and maintained. Through this process, since the programming is reflected by the feedback from the pilot cells, the reading process can be simply performed using a predefined reference voltage value without any special calculation operation.
  • FIG. 9 illustratively illustrates a read technique using pilot cells within a page in accordance with an aspect of the present invention.
  • the memory controller 301 may perform programming for the data region using the predefined nominal values used in the pilot cells without reflecting the feedback referenced in the pilot cells. That is, a page containing pilot cells and data cells can be programmed using the same nominal values given. Instead, in the read process, the memory controller 301 calculates threshold voltage values to be used to read the data cells by first reading the pilot cells and then referring to the read analog voltage values in the pilot cells.
  • FIG. 9 exemplarily illustrates a process for determining a read voltage value for data cells by first referring to read voltage values of pilot cells in a read process.
  • Each of the pilot cells A, B, C, and D may be programmed using nominal values (reference voltage values) corresponding to '11', '10', '00', and '01'. Voltage values that can be read in the programmed cells are indicated by circles in FIG. 9. For example, as illustrated in FIG. 9, in the case of pilot cell A in which a value of '11' is recorded, the pilot cell A may be read as a voltage value lower than the reference voltage value. In addition, the pilot cell B in which the value of '10' is recorded may be read as a voltage value higher than the reference voltage value.
  • the read voltage value for these pilot cells can be used as the new reference voltage for that page. That is, the voltage level for reading the value of '10' is actually used to read pilot cell B, not the default reference voltage that was used when writing the value of '10', as shown in FIG.
  • the measured reference voltage value may be used as a voltage level value for reading data cells in the page.
  • analog voltage values or nominal values may be averaged on a block basis and calculated or Or it may be calculated by averaging over time.
  • analog values can be stored in a temporary memory, for example DRAM, for faster data access.
  • 10 illustratively illustrates a change in threshold voltage after data programming.
  • the nominal voltage values can be adaptively selected during the programming of the data. These voltage values can then be stored as parameters to be used to read the storage. It must be stored with a different parameter value for each page. However, these parameters can be a huge overhead for storage. In other words, a large amount of space must be provided for allocating these parameters.
  • the pilot voltage level when the pilot voltage level is determined by referring to the pilot cells in advance, the response characteristics of each cell even if the voltage level changes after programming of data. Without knowing the appropriate threshold voltage value can be found. That is, when using pilot cells, more robust threshold voltage values can be generated without wasting storage space.
  • FIG. 11 illustrates an exemplary voltage readout mechanism using pilot cells in accordance with an aspect of the present invention.
  • FIG. 11 shows a plurality of cell arrays having a plurality of columns and rows of memory cells within one block.
  • the memory cells shown in FIG. 11 are connected to each other within a particular array configuration.
  • Such an array configuration of memory cells is exemplary and other types of memory cells or other array configurations may also be included within the scope of the present invention.
  • the value stored (or written) in the memory cell can be read by measuring the threshold voltage Vt of the cell.
  • This read threshold voltage may represent the amount of charge stored in the memory cell.
  • one page may include four pilot cells 1101 and 32768 data cells 1102.
  • Each memory cell includes a floating gate transistor.
  • the pilot cells 1101 and data cells 1102 ie, gates of the transistors of the cells
  • the sources of the transistors in each column may be connected to each other by bit lines. In the case of a NOR cell, the sources may be directly connected to the bit lines, and in the case of a NAND cell, the bit line may be connected to a string of the floating gate.
  • the exemplary data block may further include a switch 1103 and / or a page buffer 1104.
  • This switch 1103 may be placed in the path from the drains of the pilot cells to the sources of data cells.
  • a target page to read may be determined in response to a data read request.
  • the step voltage may be applied to the target page to be read.
  • the memory controller 301 or the read module 305 may read the threshold voltage Vt of a specific memory cell by applying this step voltage to the gate of the cell (ie, the word line to which the cell is connected). This may be implemented by checking whether the drain current of a particular cell has exceeded the threshold voltage Vt. That is, the memory controller 301 or the read module 305 may determine the minimum gate voltage value at which the drain current exceeds the threshold voltage Vt by applying the step voltage to the word line to which the specific cell is connected.
  • the memory controller 301 or the read module 305 may apply a step voltage to a word line of a target page to measure a read threshold voltage value of the pilot cells 1101 in the target page. That is, when the threshold voltage Vt corresponding to the pilot cell (eg, pilot cell A) in the target page is exceeded, the switch 1103 is closed to allow current to flow to the data cell 1102 in the corresponding page.
  • the threshold voltage Vt corresponding to the pilot cell eg, pilot cell A
  • FIG. 12 illustratively illustrates a data cell read technique using a switch in accordance with an aspect of the present invention.
  • the step voltage may be input to the word line for the target page by the memory controller 301 or the read module 305.
  • the switch for the control gate may be driven. Accordingly, current flows into the bit lines of the data cells, and the data cells can be read according to the adaptive threshold voltage value determined by the pilot cell A.
  • Pilot cells B, C, and D may also be implemented in the same manner as that of pilot cell A through different threshold voltage values at different timings in sequence.
  • FIG. 13 illustratively illustrates a data cell read technique using a switch in accordance with an aspect of the present invention.
  • the drain voltage of the pilot cell may be directly connected to the data cell by a switch connecting a word line to the data cell.
  • the switch when the step voltage passes the threshold voltage Vt corresponding to pilot cell A, the switch does not flow current to the control gate, but to the gates of the data cells. Can flow directly. Thus, changes in nominal values can also be automatically reflected in the data cell.
  • the change in the threshold voltage values can be reflected directly into the data cells through the pilot cells.
  • pilot cells may be grouped and used to achieve additional robustness in reading data to the data cells. That is, a plurality of pilot cells may be used for each nominal value. Such a group of pilot cells may be commonly used for one data block or one page.
  • threshold voltage level for the data cell is determined by referring to the pilot cells in advance, even if the voltage level changes after programming of the data, an appropriate threshold voltage value may be found without understanding the response characteristics of the cells. That is, when using pilot cells, more robust threshold voltage values can be generated without wasting storage space.
  • the level distribution of threshold voltage values at a programming time point may change as shown in FIG. 14A through FIG. 14B as time passes.
  • the technique according to an aspect of the present invention may find an optimal threshold voltage value for the data cell through the value of the voltage read from the pilot cell despite the change of the threshold voltage values. That is, according to one aspect of the present invention, the probability of a read error of a data cell due to such a change in threshold voltage values can be reduced.
  • FIG. 15 is a flowchart illustrating a data processing method of a memory according to an aspect of the present invention. It will be apparent to those skilled in the art that additional steps other than those shown in FIG. 15 may be included in the method and some steps may be omitted.
  • the memory controller programs data by applying a voltage of a predetermined nominal value to a pilot cell at a predetermined position in the memory (S210).
  • the pilot cell is located in the same block or page as the data cell.
  • the pilot cell corresponds to each of at least one nominal value used for programming the memory.
  • the pilot cell includes a plurality of cells each corresponding to a plurality of nominal values used for memory programming.
  • the memory controller reads the written voltage value of the pilot cell (S220).
  • the memory controller may read the voltage value of the pilot cell at a higher resolution than the voltage step between each data for programming. For example, if the nominal value of each data for programming has a voltage step of 1V, then the memory controller will display the pilot cell's voltage value at a resolution of 0.2V, which is higher than the 1V interval (e.g., 5 times the resolution). Can be read.
  • the memory controller corrects the nominal value corresponding to the data of the pilot cell based on the read voltage value of the pilot cell (S230).
  • the memory controller may calculate a difference value between the read voltage value of the pilot cell and the predetermined nominal value and add the calculated difference value to the predetermined nominal value to obtain a corrected nominal value.
  • the memory controller calculates a ratio between the voltage value of the read pilot cell and the predetermined nominal value, and scales the predetermined nominal value based on the calculated ratio to correct the nominal value. Can be obtained.
  • the memory controller programs the data in the data cell of the memory by using the corrected nominal value (S240).
  • the memory controller may acquire information about the number of times of erasing the block or the number of times the page is written, in which the pilot cell is located.
  • the memory controller may shift the position of the pilot cell based on the erase count information or the write count information.
  • FIG. 16 is a flowchart illustrating a data processing method of a memory according to another aspect of the present invention. It will be apparent to those skilled in the art that additional steps other than those shown in FIG. 16 may be included in the method, and some steps may be omitted.
  • the memory controller programs data into pilot cells and data cells in the memory by using a voltage of a predetermined nominal value (S310).
  • a pilot cell refers to a cell at a predetermined location that each corresponds to at least one nominal value used for programming of the memory.
  • the pilot cell may include a plurality of cells each corresponding to a plurality of nominal values used for memory programming. The pilot cell may be located in the same block or the same page as the data cell.
  • the memory controller reads the written voltage value of the pilot cell (S320).
  • the memory controller may read the voltage value of the pilot cell at a higher resolution than the voltage step between each data for programming.
  • the memory controller sets a threshold voltage value for reading the data cell with reference to the read pilot cell voltage value (S330).
  • the threshold voltage value is intended to be used as a read voltage of a data cell.
  • the threshold voltage value may be set to a value lower than a voltage value of a read pilot cell.
  • a memory controller obtains read voltage values of a plurality of pilot cells programmed using the same nominal value in a memory, and based on an average of read voltage values of the obtained plurality of pilot cells The threshold voltage value can be set.
  • the memory controller reads data of data cells of the memory based on the set threshold voltage value (S340).
  • the memory controller may acquire information about the number of times of erasing the block or the number of times the page is written, in which the pilot cell is located.
  • the memory controller may shift the position of the pilot cell based on the erase count information or the write count information.
  • steps and / or operations of a method or algorithm described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination thereof.
  • steps or operations of a method or algorithm may be present as at least one or any combination of a set of codes or instructions on a machine-readable medium, or a computer-readable medium, and Can be integrated into computer program objects.
  • article of manufacture as used herein, is intended to include a computer program accessible from any suitable computer-readable device or medium.
  • the present invention can be applied to various types of memory and a memory system including the same.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 메모리 시스템 및 메모리의 데이터 처리 방법에 관한 것으로서, 더욱 상세하게는 데이터를 효율적으로 처리하기 위한 메모리 시스템 및 메모리의 데이터 처리 방법에 관한 것이다. 이를 위해 본 발명은, 데이터를 프로그래밍할 페이지의 프로그래밍 횟수 정보를 획득하는 단계; 상기 획득된 프로그래밍 횟수 정보에 기초하여, 상기 페이지 내의 각 메모리 셀에 프로그래밍 될 최하위 레벨 값 및 최상위 레벨 값을 포함하는 구동 전압 값 세트를 결정하는 단계; 및 상기 결정된 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 사이의 복수의 전압들을 이용하여 상기 페이지 내의 각 메모리 셀에 상기 데이터를 프로그래밍 하는 단계를 포함하되, 상기 최하위 레벨 값 및 최상위 레벨 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하는 것을 특징으로 하는 메모리의 데이터 처리 방법 및 이를 이용한 메모리 시스템을 제공한다.

Description

메모리 시스템 및 메모리의 데이터 처리 방법
본 발명은 메모리 시스템 및 메모리의 데이터 처리 방법에 관한 것으로서, 더욱 상세하게는 데이터를 효율적으로 처리하기 위한 메모리 시스템 및 메모리의 데이터 처리 방법에 관한 것이다.
메모리 장치는, 디지털 로직 설계에 있어서 가장 필수적인 마이크로 전자 소자이다. 이러한 메모리 장치는 크게 휘발성 메모리 장치와 비휘발성 메모리 장치로 나누어진다. 비휘발성 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 비휘발성 메모리에 저장되는 데이터는 메모리 제조 기법에 따라서 영구적이 되거나 재프로그래밍가능할 수 있다. 비휘발성 메모리 장치는 다양한 산업분야의 애플리케이션들에서 사용될 수 있다.
비휘발성 메모리의 대표적인 예로서 플래시 메모리가 존재한다. 플래시 메모리는 스마트폰, 디지털 카메라, SSD(Solid-state Drive) 및 블랙박스 등 데이터를 저장하는 수많은 매체에서 사용될 수 있다. 특히, NAND 플래시 메모리를 사용하는 SSD는 하드 디스크 드라이브(HDD)에 비해 소모전력이 적고 소형화가 가능할뿐만 아니라 충격에 강하다는 장점 때문에 랩탑, 데스크탑 및 서버 등에서의 저장매체로 널리 사용되고 있다. 나아가, 최근 스마트폰과 SSD의 발전으로 인하여 NAND 플래시 메모리에 대한 활용도는 점점 높아지고 있는 추세에 있다.
기본적으로 플래시 메모리의 셀은 플로팅 게이트(floating gate)에 전자를 채우고 비우는 방식으로 데이터를 기록하고 삭제할 수 있다.
보다 구체적으로, 비어있는(empty) 셀인 상태에서 컨트롤 게이트(control gate)로 터널 효과가 일어날 만큼의 전압이 인가되면, 인가된 전압에 따라 발생하는 전기장의 영향으로 소스에서 드레인으로 이동하던 전자의 일부가 절연체인 산화막을 통과함으로써 플로팅 게이트의 전자가 채워질 수 있다. 그리고 나서, 인가된 전압이 끊어지면, 절연체로 커버된 플로팅 게이트에 채워진 전자들은 플로팅 게이트 안에 갇히게 된다. 따라서, 전자들은 전력이 공급되지 않더라도 플로팅 게이트로 채워진 상태로 유지될 수 있다. 전술한 동작들에 의하여 플래시 메모리 셀의 기록(write) 동작이 구현될 수 있다.
플로팅 게이트에 전자가 채워진 상태에서, 터널 릴리즈가 발생할 수 있는 양의 전압이 P층으로 인가되는 경우, 플로팅 게이트에 갇혀 있던 전자들이 절연층을 통과하여 플로팅 게이트의 외부로 배출될 수 있다. 이에 의하여, 셀은 다시 비어있는(empty) 상태로 되돌아 갈 수 있다. 전술한 동작들에 의하여 플래시 메모리 셀의 삭제(erase) 동작이 구현될 수 있다.
하지만, NAND 플래시 메모리는 DRAM이나 HDD와는 달리 데이터의 제자리 덮어쓰기(overwrite in-place)이 허용되지 않는다는 단점이 있다. 즉, 덮어쓰기를 하기 위해서는 메모리 셀에 사전에 기록된 부분을 삭제한 후에 덮어쓰기를 수행하여야 한다. 다시 말하면, 플래시 메모리는 데이터를 기록하기 전에, 데이터를 초기 상태 또는 삭제된 상태로 되돌려 놓아야 한다. 이는 기록 전 삭제 동작(erage-before-write)이라고 지칭된다. 따라서, 덮어쓰기가 불가능한 셀의 특성으로 인해 1Byte 의 데이터를 바꾸는 경우라도 먼저 블록 전체를 지우고 나서 해당 블록 내의 모든 페이지를 다시 기록해야만 하는 문제가 발생하게 된다(여기서, NAND 플래시 메모리의 기록 및 판독의 최소 단위는 페이지이고 삭제의 최소 단위는 블록이다).
또한, 앞서 설명한 바와 같은 메모리 셀의 상태 변경은 메모리 셀의 마모를 유발시키기 때문에, 일반적으로 플래시 메모리의 셀은 일정한 횟수의 덮어쓰기만이 허용될 수 있다. 즉, 일정한 덮어쓰기 횟수가 초과되는 경우에는 추가적인 덮어쓰기는 더이상 불가능해지고 단순히 판독(read)만이 가능해진다.
플래시 메모리에 저장되는 데이터의 속성으로 인하여, 업데이트가 되는 주기는 데이터의 타입에 따라서 상이할 수 있다. 예를 들어, 대부분의 작은 용량을 갖는 데이터 파일들은 빈번하게 기록 및 삭제되는(즉, 업데이트되는) 반면에, 대부분의 큰 용량을 갖는 데이터 파일들은 대부분 판독동작을 위해서만 액세스될 수 있다. 더불어, 메타 데이터는 일반적인 데이터에 비해 보다 빈번하게 업데이트되는 핫 데이터 중 하나일 수 있다. 따라서, 이러한 점들을 고려하여 플래시 메모리의 수명을 증대시키는 방안에 대한 필요성이 존재한다.
본 발명은 메모리 시스템을 효율적으로 사용하기 위한 목적을 가지고 있다.
상기와 같은 과제를 해결하기 위해, 본 발명의 실시예에 따른 메모리의 데이터 처리 방법은, 데이터를 프로그래밍할 페이지의 프로그래밍 횟수 정보를 획득하는 단계; 상기 획득된 프로그래밍 횟수 정보에 기초하여, 상기 페이지 내의 각 메모리 셀에 프로그래밍 될 최하위 레벨 값 및 최상위 레벨 값을 포함하는 구동 전압 값 세트를 결정하는 단계; 및 상기 결정된 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 사이의 복수의 전압들을 이용하여 상기 페이지 내의 각 메모리 셀에 상기 데이터를 프로그래밍 하는 단계를 포함하되, 상기 최하위 레벨 값 및 최상위 레벨 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하는 것을 특징으로 하는 것을 특징으로 한다.
또한, 상기 결정하는 단계는, '상기 프로그래밍 횟수 정보 (mod '상기 메모리 셀의 구동 전압 레벨 값의 총 개수 - 1')' 값에 기초하여 상기 구동 전압 세트를 결정하는 것을 특징으로 한다.
또한, 데이터의 프로그래밍 요청에 대응하여 상기 프로그래밍 횟수 정보는 1 증가되고, 상기 결정하는 단계는, 제1 레벨 값 및 제2 레벨 값이 각각 할당 된 상기 메모리 셀의 최하위 레벨 값 및 최상위 레벨 값을, 제2 레벨 값 및 제3 레벨 값으로 변경하는 것을 특징으로 한다.
본 발명의 다른 실시예에 따르면, 상기 페이지는 상기 최하위 레벨 값 및 최상위 레벨 값 사이의 임계 전압을 갖도록 설정되는 미리 지정된 위치의 파일럿 셀 및 상기 데이터가 프로그래밍 되는 데이터 셀을 포함하되, 상기 파일럿 셀에 프로그래밍 되는 임계 전압 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하고, 상기 방법은, 상기 페이지에 기록된 데이터의 판독 요청에 대응하여, 상기 파일럿 셀의 기록된 전압 값을 판독하는 단계; 상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 판독 전압 값을 설정하는 단계; 및 상기 설정된 판독 전압 값에 기초하여 상기 데이터 셀의 데이터를 판독하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 상기 메모리 셀은 MLC(Multi Level Cell)이며, 상기 방법은, 프로그래밍 요청되는 데이터의 사이즈를 결정하는 단계; 상기 결정된 데이터의 사이즈가 상기 페이지의 사이즈의 절반 보다 작을 경우, 상기 최하위 레벨 값 및 최상위 레벨 값을 이용한 1비트 정보로 상기 데이터를 각 메모리 셀에 프로그래밍 하는 단계; 상기 데이터의 오버라이트 요청에 대응하여, 상기 최하위 레벨 값 및 최상위 레벨 값을 시프팅 하는 단계; 및 상기 시프팅 된 최하위 레벨 값 및 최상위 레벨 값을 이용하여 상기 데이터를 상기 페이지의 각 메모리 셀에 재 프로그래밍 하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 실시예에 따른 메모리 시스템은, 복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및 상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며, 상기 제어 모듈은 데이터를 프로그래밍할 페이지의 프로그래밍 횟수 정보를 획득하고, 상기 획득된 프로그래밍 횟수 정보에 기초하여, 상기 페이지 내의 각 메모리 셀에 프로그래밍 될 최하위 레벨 값 및 최상위 레벨 값을 포함하는 구동 전압 값 세트를 결정하며, 상기 프로그래밍 모듈은 상기 결정된 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 사이의 복수의 전압들을 이용하여 상기 페이지 내의 각 메모리 셀에 상기 데이터를 프로그래밍 하되, 상기 최하위 레벨 값 및 최상위 레벨 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하는 것을 특징으로 한다.
한편, 본 발명의 다른 실시예에 따른 메모리의 데이터 처리 방법은, 상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널(nominal)값의 전압을 인가하여 데이터를 프로그래밍하는 단계; 상기 파일럿 셀의 기록된 전압 값을 판독하는 단계; 상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하는 단계; 및 상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 판독하는 단계는, 상기 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 상기 파일럿 셀의 전압 값을 판독하는 것을 특징으로 한다.
또한, 상기 교정하는 단계는, 상기 판독된 파일럿 셀의 전압 값과 상기 미리 결정된 노미널 값 간의 차분값을 산출하는 단계; 및 상기 산출된 차분값을 상기 미리 결정된 노미널 값에 합산하여 상기 교정된 노미널 값을 획득하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 교정하는 단계는, 상기 판독된 파일럿 셀의 전압 값과 상기 미리 결정된 노미널 값 간의 비율을 산출하는 단계; 및 상기 산출된 비율에 기초하여 상기 미리 결정된 노미널 값을 스케일링하여 상기 교정된 노미널 값을 획득하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 데이터 셀과 동일한 블록 또는 페이지 내에 위치하는 것을 특징으로 한다.
또한, 상기 데이터 처리 방법은, 상기 파일럿 셀이 위치한 블록의 삭제 횟수 정보 또는 페이지의 기록 횟수 정보를 획득하는 단계; 및 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 상기 파일럿 셀의 위치를 시프팅하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함하는 것을 특징으로 한다.
또한, 본 발명의 다른 실시예에 따른 메모리 시스템은, 복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및 상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며, 상기 프로그래밍 모듈은 상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널 값의 전압을 인가하여 데이터를 프로그래밍하고, 상기 판독 모듈은 상기 파일럿 셀의 기록된 전압 값을 판독하고, 상기 제어 모듈은 상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하고, 상기 상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는 것을 특징으로 한다.
한편, 본 발명의 또 다른 실시예에 따른 메모리의 데이터 처리 방법은, 미리 결정된 노미널 값의 전압을 이용하여 상기 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 하는 단계, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀임; 상기 파일럿 셀의 기록된 전압 값을 판독하는 단계; 상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 임계 전압 값을 설정하는 단계; 및 상기 설정된 임계 전압 값에 기초하여 상기 메모리의 데이터 셀의 데이터를 판독하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 판독하는 단계는, 상기 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 상기 파일럿 셀의 전압 값을 판독하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 데이터 셀과 동일한 블록 또는 페이지 내에 위치하는 것을 특징으로 한다.
또한, 상기 데이터 처리 방법은, 상기 파일럿 셀이 위치한 블록의 삭제 횟수 정보 또는 페이지의 기록 횟수 정보를 획득하는 단계; 및 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 상기 파일럿 셀을 시프팅하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함하는 것을 특징으로 한다.
또한, 상기 임계 전압 값을 설정하는 단계는, 상기 메모리 내의 동일한 노미널 값을 이용하여 프로그래밍 된 복수의 파일럿 셀의 판독 전압 값을 획득하는 단계를 포함하며, 상기 획득된 복수의 파일럿 셀의 판독 전압 값의 평균에 기초하여 상기 임계 전압 값을 설정하는 것을 특징으로 한다.
또한, 본 발명의 또 다른 실시예에 따른 메모리 시스템은, 복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및 상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며, 상기 프로그래밍 모듈은 미리 결정된 노미널 값의 전압을 이용하여 상기 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 하되, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀이며, 상기 판독 모듈은 상기 파일럿 셀의 기록된 전압 값을 판독하고, 상기 제어 모듈은 상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 임계 전압 값을 설정하고, 상기 판독 모듈은 상기 설정된 임계 전압 값에 기초하여 상기 메모리의 데이터 셀의 데이터를 판독하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 메모리 시스템을 효율적으로 사용할 수 있다.
도 1은 SLC와 MLC의 특성을 예시적으로 도시한다.
도 2는 본 발명의 일 양상에 따른 메모리 시스템(200)을 개략적으로 도시한 도면이다.
도 3은 본 발명의 일 양상에 따른 메모리 시스템(300)을 개략적으로 도시한다.
도 4는 본 발명의 일 양상에 따라 메모리 디바이스의 하나의 셀에서의 덮어쓰기 방식을 예시적으로 도시한다.
도 5는 본 발명의 다른 양상에 따라 메모리 디바이스의 하나의 셀에서의 덮어쓰기 방식을 예시적으로 도시한다.
도 6은 본 발명의 일 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다.
도 7은 본 발명의 일 양상에 따라 파일럿 셀들을 포함하는 데이터 블록을 예시적으로 도시한다.
도 8는 본 발명의 일 양상에 따라 프로그래밍 카운트에 따른 그리고 페이지에 따른 파일럿 셀들의 배치 변화를 예시적으로 나타낸다.
도 9는 본 발명의 일 양상에 따라 페이지 내에서의 파일럿 셀들을 이용한 판독 기법을 예시적으로 도시한다.
도 10은 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
도 11은 본 발명의 일 양상에 따라 파일럿 셀들을 이용한 예시적인 전압 판독 메커니즘을 도시한다.
도 12는 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀의 전압 판독 기법을 예시적으로 나타낸다.
도 13은 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀 판독 기법을 예시적으로 나타낸다.
도 14는 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
도 15는 본 발명의 일 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다.
도 16은 본 발명의 다른 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다.
다양한 양상들이 이제 도면들을 참조로 하여 기재되며, 여기서 유사한 참조번호는 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예들에서, 설명의 목적으로, 다수의 특정한 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위하여 제시된다. 그러나, 이러한 양상들이 이러한 구체적인 세부사항들 없이도 실시될 수 있다는 점은 명백할 것이다.
본 개시내용의 다양한 양상들이 이하에서 설명된다. 본 명세서에서의 설명들이 폭넓은 형태들로 구현될 수 있다. 또한, 여기에서 개시되는 임의의 특정 구조, 기능성 또는 이들 모두는 단지 대표적인 것이라는 점이 명백하다. 본 명세서에서의 설명들에 기반하여, 당해 출원 발명이 속하는 기술분야에 있어서 통상의 지식을 가진 자는, 여기에서 개시되는 양상이 임의의 다른 양상들과 독립적으로 구현될 수 있다는 점을 그리고 이러한 양상들 중 둘 이상의 양상들이 다양한 방식들로 결합될 수 있다는 점을 인식하여야 한다. 예를 들어, 여기에서 제시되는 임의의 개수의 양상들을 이용하여 장치가 구현될 수 있거나 또는 방법이 실시될 수 있다. 또한, 여기에서 제시되는 양상들 중 하나 이상의 양상들과 다른 또는 이에 추가하여 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 장치가 구현될 수 있거나 또는 이러한 방법이 실시될 수 있다. 더불어, 본 발명의 일 양상은 청구항의 적어도 하나의 엘리먼트를 포함할 수 있다.
본 명세서는 예시적으로 플래시 메모리에 대해여 기재하고 있지만, 이러한 플래시 메모리(즉, 비휘발성 메모리) 이외의 다른 메모리 디바이스(예컨대, 휘발성 메모리) 또한 본 발명의 범위내에 포함될 수 있다. 또한, 본 명세서에서 사용되는 용어 "정보 단위(unit of information)"는 데이터 스토리지 시스템 또는 통신 시스템 등에서 데이터 등이 저장 또는 표현될 수 있는 단위를 의미할 수 있다. 예를 들어, 정보 단위로는, bit, byte, trit, ban, decit, dit, decimal digit, nat, nit, nepit 등이 존재할 수 있다. 이하의 본 명세서에서는 정보 단위의 일례로서 bit(비트)가 기재될 것이지만, 이러한 비트 이외의 다른 정보 단위들 또한 본 명세서의 범위 내에 포함될 수 있다.
도 1은 SLC와 MLC의 특성을 예시적으로 도시한다.
NAND 플래시 메모리에서 사용되는 셀은 SLC(Single Level Cell), MLC(Multi Level Cell) 및 TLC(Triple Level Cell) 등이 있다. 플래시 메모리에서 데이터를 저장하기 위한 최소 단위인 셀에 데이터를 저장하는 방식에 따라서 SLC, MLC 및 TLC 등으로 분류될 수 있다. 즉, 플래시 메모리를 구성하는 셀들은 동일하지만 이러한 셀들을 어떠한 방식으로 운영하느냐에 따라 SLC, MLC 및 TLC로 나뉠 수 있다. SLC는 하나의 셀에 1비트의 정보(즉, 2개의 상태)를 저장할 수 있으며, MLC는 하나의 셀에 2비트의 정보(즉, 4개의 상태)를 저장할 수 있으며, 그리고 TLC는 하나의 셀에 3비트의 정보(즉, 8개의 상태)를 저장할 수 있다.
따라서, 하나의 셀에 보다 많은 비트를 저장할 수 있는 MLC 및 TLC가 SLC에 비하여 큰 용량을 가질 수 있지만, 플래시 메모리의 성능과 수명에 있어서는 SLC > MLC > TLC의 순서를 갖는다. MLC와 TLC는 플로팅 게이트에 전자를 채우는 양(즉, 전압의 크기 또는 상태)을 다양하게 분포시킴으로서 하나의 셀에 멀티 비트(즉, 다양한 상태)가 기록되도록 허용하기 때문에, MLC와 TLC는 SLC보다 기록 및 판독 속도가 느릴 수 있을뿐만 아니라 에러의 발생률도 높을 수 있다. 즉, MLC와 TLC는 SLC보다 높은 레벨의 ECC를 사용해야되기 때문에 시스템으로의 부하가 가중될 수도 있다. 더불어, 하나의 셀에 많은 비트들을 기록할수록 각각의 상태 별로 전압의 차이가 적기 때문에 메모리 셀에서의 산화막에 축적된 전자들로 인한 산화막의 저항값이 증가하게 되는 경우에는 전압의 차이를 두어 상태들을 구별할 수 없게 된다. 다라서, MLC와 TLC는 SLC보다 수명이 짧을 수 있다.
그럼에도 불구하고, MLC는, SLC에 비하여 높은 셀당 저장 용량을 갖기 때문에 생산 가격적인 부분에 있어서 장점을 갖는다. 또한, MLC는 TLC에 비해서는 높은 수명과 양호한 성능을 갖는다는 장점이 있다. 이러한 MLC는 현재 많은 애플리케이션들에서 사용되고 있다.
도 1에서 도시되는 바와 같이, SLC는 2개의 타입의 전압의 크기를 통하여 하나의 셀에 2개의 상태(즉, 1과 0의 1 bit)를 기록할 수 있다. MLC는 4개의 타입의 전압의 크기를 통하여 하나의 셀에 4개의 상태(즉, '11', '10', '01' 및 '00'의 2bits)를 기록할 수 있다. 예를 들어, SLC는 임계전압 Vt값을 쉬프팅시킴으로써 삭제 상태(erase state) '1'로부터 다른 상태(예컨대, 기록 상태(write state)) '0'으로의 전환을 구현하는 방식으로 기록 동작을 수행할 수 있다. 또한, 충전된 전자는 삭제 동작에 의하여 0으로부터 1의 상태로 다시 되돌아 갈 수 있다.
본 명세서에서는 비휘발성 메모리의 셀의 타입에 대하여 MLC를 예시로 들었지만, TLC이외의 추가적인 레벨들을 갖는 메모리 셀 또한 본 발명의 범위 내에 포함될 수 있다.
도 2는 본 발명의 일 양상에 따른 메모리 시스템(200)을 개략적으로 도시한 도면이다.
도 2에서의 메모리 시스템(200)은 크게 애플리케이션(201)(또는 호스트), 파일 시스템(202) 및 SSD(203)로 구성될 수 있다. 도 2에서의 컴포넌트들은 예시적인 것일 뿐이며, 도 2에서의 컴포넌트들의 일부가 생략될 수 있거나 또는 도 2에서의 컴포넌들 이외의 컴포넌트들이 메모리 시스템(200)에 포함될 수도 있다. 추가적으로, 도 2에서의 SSD(203)는 유사한 기능을 수행할 수 있는 메모리 디바이스 및 메모리 컨트롤러로 대체될 수도 있다.
본 발명의 일 양상에서, 애플리케이션 1 내지 N(201)은 SSD와 같은 플래시 메모리 장치로 데이터 저장을 요구하는 임의의 장치 또는 프로그램을 포함할 수 있다.
본 발명의 일 양상에서, 파일 시스템(202)은 애플리케이션(201)과 함께 호스트 또는 애플리케이션 영역으로 지칭될 수 있다. 이러한 파일 시스템(202)은 논리 섹터 주소(logical sector address)를 통해 SSD의 임의의 데이터를 액세스할 수 있다. 이러한 경우, SSD 컨트롤러(204)의 플래시 변환 계층(Flash Translation Layer)(206)은 논리 섹터 주소를 물리 주소(physical address)로 변환함으로써 논리 섹터 주소와 물리 주소를 맵핑할 수 있다. 추가적으로, 파일 시스템(202)은 플래시 변환 계층(206)에 의해 구현된 가상의 섹터를 의미할 수도 있다. 또한, 본 명세서에서의 파일 시스템(202)은 애플리케이션(201)과 상호교환가능하게 사용될 수도 있다.
플래시 메모리(205)의 물리적 특성으로 인해, 플래시 메모리(205)를 하드 디스크처럼 사용하기 위해서는, 판독/기록/삭제 동작에 대한 별도의 관리가 필요하다. 플래시 변환 계층(206)은 이러한 목적으로 개발된 시스템 소프트웨어를 의미할 수 있다. 플래시 변환 계층(206)은 논리 주소를 물리 주소로 변환하는 맵핑 알고리즘, 데이터 파일 사이즈를 결정하는 알고리즘, 플래시 메모리(205)의 페이지들을 복수의 서브 페이지로 분할하는 알고리즘, 웨어 레벨링을 수행하기 위한 알고리즘, 및 플래시 메모리(205)로 인가할 전압을 제어하는 알고리즘 등을 포함할 수 있다.
본 발명의 일 양상에서, SSD 컨트롤러(204)의 플래시 변환 계층(206)은 논리 주소와 물리 주소를 맵핑하기 위한 주소 할당기(address allocator)(208), 웨어 레벨링을 수행하기 위한 웨어 레벨러(wear leveler)(210) 및 가비지 콜렉터(garbage collector)(209), 데이터 파일의 사이즈를 분석 및 비교하기 위한 데이터 파일 사이즈 분석기(211), 및 플래시 메모리(205)로 인가될 전압을 제어하기 위한 전압 제어기(216) 등을 포함할 수 있다. 추가적으로, 전술한 플래시 변환 계층(206)의 컴포넌트들을 예시적인 것일 뿐이며, 추가적인 컴포넌트들이 플래시 변환 계층(206)에 포함될 수 있거나 전술한 컴포넌트들의 일부분이 생략될 수도 있다.
웨어 레벨러(210)는 플래시 메모리(205)의 수명을 증대시키기 위하여, 블록 단위, 페이지 단위 및/또는 비트 단위의 웨어 레벨링을 수행할 수 있다.
가비지 콜렉터(209)는 필요없는 데이터(invalid data or obsolete data)를 마킹하는 동작, 다른 블록, 페이지 및/또는 비트로의 카피 백(copy back) 동작, 및 상기 필요없는 데이터를 블록 단위로 한번에 삭제하는 동작 등을 수행함으로써 웨어 레벨링을 구현할 수 있다.
주소 할당기(208)는 메모리의 블록, 페이지 또는 비트(셀) 단위의 논리 주소와 물리 주소의 할당을 구현할 수 있다. 따라서, 웨어 레벨링을 구현하기 위하여 적절한 물리적 블록 위치, 페이지 위치, 및/또는 비트 위치에 인입되는 데이터가 할당될 수 있다. 추가적으로, 주소 할당기(208)는 복수의 전압 상태 레벨들을 갖는 메모리 셀(예컨대, MLC, TLC 등)로 인입되는 비트들을 적절한 전압 상태 레벨들로 맵핑하기 위한 맵핑 테이블 등을 생성할 수 있다.
전압 제어기(216)는 하나 이상의 비트들을 표현하기 위하여 예를 들어, 이전 셀-내 기록 모드보다 높거나 같은 값의 구동 전압 레벨을 메모리 셀에 인가할 수 있다. 이러한 전압의 인가는 주소 할당기(208)에 의해서 생성된 맵핑 테이블에 기초하여 수행될 수 있다. 또한, 전압 제어기(216)는 이전의 메모리 셀에 기록된 하나 이상의 비트에 대응하는 메모리 셀의 전압 레벨을 체크함으로써, 메모리 셀로 인가될 구동 전압 레벨값을 결정할 수도 있다. 여기서의 셀-내 기록 모드는 하나의 삭제 사이클(또는 삭제 카운트) 내에서의 셀-내 기록 횟수를 카운트하는 값을 표시할 수 있다.
데이터 파일 사이즈 분석기(211)는 인입되는 데이터 파일의 사이즈를 결정할 수 있다. 이러한 결정을 통하여, 데이터 파일 사이즈 분석기(211)는 예를 들어, 인입되는 데이터 파일이 분할된 서브 페이지의 크기보다 작은지 여부를 결정할 수 있다.
도 2에서 도시되지는 않았지만, SSD 컨트롤러(204)의 플래시 변환 계층(206)은 핫 데이터 식별자(211)를 포함할 수도 있다. 핫 데이터 식별자(211)는 빈번하게 액세스되는 데이터(hot data) 및 빈번하게 액세스되지 않는 데이터(cold data)를 식별 및 검출하는 동작 등을 수행함으로써 웨어 레벨링의 구현을 보조할 수 있다.
또한, 도 2에서 도시되지는 않았지만, SSD 컨트롤러(204)는 플래시 메모리(205)로의 데이터 기록, 삭제 및 판독을 위한 프로그래밍 모듈(기록 및 삭제) 및 판독 모듈을 포함할 수 있다.
이처럼 SSD 컨트롤러(204)는 SSD의 전반적인 동작들을 제어할 수 있다. SSD 컨트롤러(204)는 애플리케이션(201) 혹은 파일 시스템(202)으로부터 논리 주소를 입력받을 수 있다. SSD 컨트롤러(204)의 플래시 변환 계층(206)은 입력된 논리 주소를 물리 주소로 변환할 수 있다. 변환된 물리 주소는 메모리 테크놀로지 디바이스 계층(Memory Technology Device Layer)(207) 또는 플래시 메모리(205)로 전달될 수 있다. 메모리 테크놀로지 디바이스 계층(207)은 다양한 플래시 메모리 또는 RAM 등을 지원하기 위한 인터페이스 계층을 의미할 수 있다. 추가적으로, 이러한 메모리 테크놀로지 디바이스 계층(207)은 선택적인 구성일 수 있다.
플래시 메모리(205)는 당업자에게 잘 알려진 바와 같이, 스트링 구조(string structure)를 갖는 복수의 메모리 셀들로 구성될 수 있다. 메모리 셀들의 집합은 일반적으로 셀 어레이(cell array)라고 지칭된다. 플래시 메모리(205)의 셀 어레이는 복수의 메모리 블럭들(memory blocks)으로 구성된다. 각각의 메모리 블럭(212)은 복수의 페이지들(pages)(213)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀 또는 데이터 셀(214)들로 구성된다. 여기서 하나의 메모리 셀 또는 데이터 셀(214)에는 싱글 비트 데이터(Single Bit Data), 멀티 비트 데이터(Multi Bit Data), 또는 트리플 비트 데이터(Triple Bit Dadta) 등이 저장될 수 있다. 예를 들어, 싱글 비트 데이터가 저장될 수 있는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라 지칭되고, 멀티 비트 데이터가 저장될 수 있는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라 지칭되고, 트리플 비트 데이터가 저장될 수 있는 메모리 셀은 트리플 레벨 셀(Triple Level Cell; TLC)이라 지칭된다.
본 발명의 일 양상에서, 플래시 메모리(205)에서의 블록(212) 내의 페이지(213) 각각은 복수의 서브 페이지(215)들로 구성될 수 있다. 예를 들어, 페이지(213)의 사이즈가 4KB인 경우, 1KB 단위의 4개의 서브 페이지(215)들이 하나의 페이지(213) 내에서 형성될 수 있다.
도 3은 본 발명의 일 양상에 따른 메모리 시스템(300)을 개략적으로 도시한다.
도 3에서 도시되는 바와 같이, 메모리 시스템(300)은 메모리 컨트롤러(301) 및 플래시 메모리(302)를 포함할 수 있다.
메모리 컨트롤러(301)는 플래시 메모리(302)의 전반적인 동작들을 제어할 수 있다. 메모리 컨트롤러(301)는 웨어 레벨링, 비트 할당, 전압 제어 및 페이지 분할 등을 수행하기 위한 제어 모듈(303), 기록 및 삭제 동작을 수행하기 위한 프로그래밍 모듈(304) 및 판독 동작을 수행하기 위한 판독 모듈(305)을 포함할 수 있다.
본 발명의 일 양상에서, 제어 모듈(303)은 호스트 또는 애플리케이션 등으로부터 플래시 메모리(302)에 대한 동작 요청이 수신되는 경우, 메타 영역(meta area)(306)에 저장된 메타 데이터 등을 기초로 하여 웨어 레벨링, 비트 할당, 전압 제어 및 페이지 분할 등을 수행할 수 있다. 또한, 제어 모듈(303)은 프로그래밍 모듈(304) 및 판독 모듈(305)의 동작을 제어할 수 있다.
본 발명의 일 양상에서, 제어 모듈(303)은 메모리 셀에 대한 데이터 기록 요청 횟수에 기초하여, 셀-내 기록 모드(in-cell write mode)를 결정할 수 있다. 제어 모듈(303)은 결정된 셀-내 기록 모드에 기초하여, 상기 메모리 셀에 하나 이상의 비트를 표현하기 위하여 인가될 구동 전압 레벨값을 결정할 수 있다. 또한, 제어 모듈(303)은 셀-내 기록 모드에 따라서 메모리 셀의 상태 레벨들 중 낮은 상태 레벨들로부터 높거나 동일한 레벨 상태로 하나 이상의 비트들이 맵핑되는 맵핑 테이블 등을 생성할 수 있다. 이렇게 생성된 맵핑 테이블은 플래시 메모리(302)(예컨대, 메타 영역(306))에 저장될 수도 있다.
더불어, 제어 모듈(303)은 미리결정된 복수의 인자들에 기초하여, 메모리 셀에서 표현가능한 상태들의 최대수와 동일한 수의 상태들을 사용하여 하나 이상의 정보 단위를 하나의 삭제 사이클에서 상기 메모리 셀에 일 회 기록하는 기법, 및 상기 메모리 셀에서 표현가능한 상태들의 최대 수보다 적은 수의 상태들을 사용하여 하나 이상의 정보 단위를 하나의 삭제 사이클에서 상기 메모리 셀에 복수회 기록하는 기법 중 하나를 선택할 수 있다. 이러한 선택은, 예를 들어, 데이터의 속성, 데이터 파일의 사이즈, 플래시 메모리에서의 웨어 레벨링 상태 등과 같은 인자들을 기초로 하여 결정될 수 있다.
나아가, 제어 모듈(303)은 플래시 메모리(302)의 페이지(310)를 서브 페이지들로 분할할 수 있다. 또한, 제어 모듈(303)은 분할된 인입되는 데이터(덮어쓰기 되는 데이터)를 분할된 서브 페이지에 순차적으로 할당할 수 있다. 여기서, 순차적으로 할당되는 데이터들은 동일한 논리 주소(logical address)와 대응될 수 있다. 즉, 순차적으로 할당되는 데이터들은 동일한 파일을 의미할 수 있다.
이러한 할당은 기록요청되는 데이터의 사이즈를 기초로 하여 수행될 수 있다. 추가적으로, 제어 모듈(303)은 서브 페이지들 각각의 상태값을 설정 및 저장할 수 있다. 이러한 상태 값은 데이터의 최종 업데이트 값이 기록되어 있는 유효(valid) 상태, 데이터의 업데이트 요청 이전의 값이 기록되어 있는 옵솔리트(obsolete) 상태 및 아직 데이터가 기록되지 않은 빈(empty) 상태를 등을 포함할 수 있다.
본 발명의 추가적인 양상에 따른 웨어 레벨링은 인터-페이지(inter-page) 웨어 레벨링이 아닌, 인-페이지(in-page) 웨어 레벨링 또는 마이크로 웨어 레벨링을 의미할 수 있다. 보다 구체적으로, 배드 블록(bad block)들은 일반적으로 페이지 단위의 셀들의 그룹이 아니라 하나 이상의 셀들이 마모 임계치를 초과한 경우에 발생되는 경우가 많다. 따라서, 이러한 셀 단위의(즉, 비트 레벨의) 웨어 레벨링을 구현하기 위하여, 제어 모듈(303)은 페이지 내에서의 비트 위치의 변경(예컨대, 쉬프트(또는 로테이팅(rotating), 리버싱(reversing) 및/또는 스크램블링(scrambling)) 또는 페이지 내의 비트 위치로 기록되는 데이터 값의 변경(예컨대, 반전(inversion))을 수행할 수 있다.
추가적으로, 제어 모듈(303)는, 기록될 데이터의 타입을 결정하고, 그리고 결정된 데이터의 타입에 기초하여 각각의 데이터 비트들을 하나의 페이지 내에 기록하기 위한 기법을 결정할 수 있다. 보다 구체적으로, 제어 모듈(303)은 기록될 데이터의 타입(예컨대, 파일 타입(doc, xls, ppt, txt, pdf, wav, mp3, jpg, zip, 및 avi 등)을 결정할 수 있다. 이러한 파일의 타입과 관련된 정보는 데이터의 기록 요청 등에 포함될 수 있다. 기록될 데이터의 타입이 결정되는 경우, 제어 모듈(303)은 미리결정된 알고리즘에 기초하여, 상기 결정된 데이터에 타입에 따라 전술한 마이크로 웨어 레벨링 기법들(쉬프팅, 리버싱, 스크램블링 및 반전) 중 적절한 기법을 선택하거나, 서브 페이지들을 분할할지 여부를 결정하거나, 분할될 서브 페이지들의 개수를 결정하거나, 또는 메모리 셀의 상태 레벨들에 따른 하나 이상의 비트들의 할당 기법을 결정할 수 있다.
또한, 제어 모듈(303)은 펌웨어(Firmware)로 구현될 수 있다. 예를 들어, 웨어 제어 모듈(303)은 플래시 변환 계층(Flash Translation Layer; FTL)에 포함될 수 있다. 여기서, 플래시 변환 계층은 전술한 바와 같이, 플래시 메모리(302)를 하드 디스크처럼 사용하기 위해서 삭제/기록/판독 동작을 관리하는 시스템 소프트웨어이다. 플래시 변환 계층은 서브 페이지 분할, 전압 제어, 맵핑 정보 관리, 배드 블록 관리, 예상치 못한 전원 차단시 데이터 보존성 관리, 마모도 관리 등을 수행할 수 있다.
프로그래밍 모듈(304)은, 제어 모듈(301)의 제어에 따라, 기록될 데이터 비트들을 하나의 페이지 내에 기록할 수 있다. 보다 구체적으로, 프로그래밍 모듈(304)은 제어 모듈(301)에 의해 결정된 전압값에 따라서, 메모리 셀에 하나 이상의 비트를 표현하기 위한 구동 전압 레벨값을 인가할 수 있다. 또한, 프로그래밍 모듈(304)은 분할된 서브 페이지들에 순차적으로 데이터를 기록할 수 있다. 추가적으로, 프로그래밍 모듈(304)은 메모리 셀의 복수의 상태 레벨들이 모두 사용된 경우에, 후속적인 기록 요청에 응답하여, 메모리 셀에 대한 삭제(erase) 동작을 수행할 수 있다. 또한, 프로그래밍 모듈(304)은 페이지 내의 모든 서브페이지들이 사용된 경우, 후속적인 기록 요청에 응답하여, 메모리 셀에 대한 삭제 동작을 수행할 수 있다. 전술한 바와 같이, 프로그래밍 모듈(304)은 플래시 메모리(302)의 사용자 영역(307)으로 데이터를 기록하거나 사용자 영역(307)으로부터의 데이터를 삭제할 수 있다. 기록 및/또는 삭제 동작이 수행되는 경우, 프로그래밍 모듈(304)은 플래시 메모리(302)의 메타 영역(306)에 저장된 메타 데이터(예컨대, 셀-내 기록 정보, 삭제 카운트 또는 기록 모드 카운트 등)를 변경시킬 수 있다.
본 발명의 일 양상에서, 판독 모듈(305)은 플래시 메모리(302)의 사용자 영역(307)에 기록된 데이터를 판독할 수 있다. 판독 모듈(305)은 메타 영역(306)에 저장된 데이터를 참고하여 논리 주소와 물리 주소 간의 맵핑 정보를 기초로 하여 사용자 영역(307)에 기록된 데이터를 판독할 수 있다. 즉, 판독 모듈(305)은 메타 영역(306)에 저장된 기록 모드 카운트, 셀-내 기록 모드 정보, 메모리 셀의 전압 상태 레벨, 맵핑 정보, 및/또는 카운트 정보 등을 참고하여 물리 주소로부터 판독된 정보를 적절한 논리 주소로 해석할 수 있다.
본 발명의 일 양상에 따른 플래시 메모리(302)는 메타 영역(306) 및 사용자 영역(307)을 포함할 수 있다.
본 발명의 일 양상에서, 메타 영역(306)은 플래시 메모리(302)를 관리하기 위한 메타 데이터(또는 제어 데이터)를 저장할 수 있다. 이러한 메타 데이터에는 셀-내 기록 모드 정보, 기록 모드 카운트 정보 및 맵핑 테이블 등을 포함할 수 있다. 메타 영역(306)은 복수의 메모리 셀들을 갖는 복수의 물리 페이지들로 구성된 적어도 하나의 물리 블록들을 포함할 수 있다.
추가적으로, 메타 영역(306)은 사용자 영역(307)에 통합될 수도 있다. 이러한 경우, 예를 들어, 셀-내 기록 모드 정보 및/또는 카운트 정보와 같은 메타 데이터들은 사용자 영역(307)의 페이지(309) 또는 블록(308)에 저장될 것이다. 추가적으로, 메타 데이터들은 사용자 영역(307)의 페이지(309) 또는 블록(308)에서의 헤더(미도시)에 저장될 수도 있다.
사용자 영역(307)은 일반적인 플래시 메모리의 데이터 저장소를 의미할 수 있다. 이러한 사용자 영역(307)은 복수의 셀들을 갖는 복수의 물리 페이지들로 구성된 적어도 하나의 물리 블록들을 포함할 수 있다.
도 3에서 도시되는 바와 같이, 플래시 메모리(302)의 사용자 영역(307)의 하나의 페이지(309)는 복수의 메모리 셀(310)들을 포함할 수 있다. 이러한 메모리 셀(310) 각각은 구동 전압 레벨값에 따라 각각 3개 이상의 상이한 상태들을 표현할 수 있다. 예를 들어, 메모리 셀(310)이 MLC인 경우에, 상기 메모리 셀(310)은 4개의 상이한 상태들을 표현할 수 있다. 또한, 메모리 셀(310)이 TLC인 경우에, 상기 메모리 셀(310)은 8개의 상이한 상태들을 표현할 수 있다. 도 3에서는 3개의 상태들(state 0, state 1 및 state 2)을 도시하였지만, 메모리 셀(310)에 대한 설정을 통하여 3개 이상의 다양한 상태들이 존재할 수 있다는 점은 당업자에게 명백할 것이다.
추가적으로, 도 3에서는 도시되지 않았지만, 하나의 페이지(309)는 복수의 서브 페이지들로 분할될 수 있다.
도 4는 본 발명의 일 양상에 따른 메모리 디바이스의 하나의 셀에서의 덮어쓰기 기법을 예시적으로 도시한다.
도 4에서의 메모리 셀은 MLC를 예로 들고 있다. 이러한 MLC는 4개의 상이한 전압 레벨 상태들을 표현할 수 있다. 도 4에서 도시되는 바와 같이, 기존의 MLC에서의 코드 맵핑 방식은 L1 상태에 '11', L2 상태에 '10', L3 상태에 '01' 그리고 L4 상태에 '00'의 2비트의 값들을 기록할 수 있다. 예를 들어, '10'의 2비트 데이터를 기록하고자 하는 경우, L2 상태에 대응하는 구동 전압을 인가함으로써 '10'의 데이터가 메모리 셀에 기록될 수 있다. 상기 L1 내지 L4는 메모리 셀에 프로그래밍 되는 서로 다른 구동 전압 값을 가리킨다.
전술한 바와 같이, 기존의 맵핑 방식에서는 한번의 기록에 의하여 2비트들이 하나의 셀에 기록될 수 있다. 이러한 경우, 동일한 메모리 셀에 대한 덮어쓰기(overwrite) 요청이 인입되는 경우, 해당 메모리 셀을 삭제한 이후에 덮어쓰기 요청에 따른 데이터를 기록해야만 한다. 다시 말하면, 기존의 맵핑 방식에서는 하나의 삭제 사이클 동안에 한번의 기록만이 허용될 수 있다.
이러한 기존의 맵핑 방식의 경우, 하나의 삭제 사이클에서는 하나의 기록만이 허용될 수 있기 때문에, 메모리 디바이스의 특정 셀의 마모도를 증가시켜 메모리 디바이스의 수명이 감소될 수 있다는 단점이 존재한다.
이러한 기록 및 삭제 사이클을 최소화하여 메모리 디바이스(예컨대, 플래시 메모리)의 수명을 증대시키기 위한 기법이 이하에서 설명된다.
도 4에서 도시되는 바와 같이, 본 발명의 일 양상에 따른 코드 맵핑 방식은, MLC의 예시에서 하나의 비트가 세번 기록되는 것을 허용할 수 있다. 보다 구체적으로, 삭제 동작 이후에 비어있는(empty) 상태인 메모리 셀에서, 기록 요청이 인입되는 경우, 메모리 셀의 L1 상태에 1의 값이 그리고 L2 상태에 0의 값이 맵핑될 수 있다. 다음으로, 후속 기록 요청이 인입되는 경우, 메모리 셀의 L2 상태에 1의 값이 그리고 L3 상태에 0의 값이 맵핑될 수 있다. 그 다음 기록 요청이 인입되는 경우, 메모리 셀의 L3 상태에 1의 값이 그리고 L4 상태에 0의 값이 맵핑될 수 있다. 한편, 도 4 및 이하 설명에서 'X'는 해당 전압 레벨이 데이터 맵핑에 사용되지 않음을 의미한다.
이러한 신규한 맵핑 방식을 통하여, 기존의 맵핑 방식에 비하여 하나의 삭제 사이클 동안에 최대 세번의 기록이 허용될 수 있다. 즉, L1과 L2 상태들을 통하여 1비트의 데이터가 기록될 수 있으며, L2와 L3 상태들을 통하여 1비트의 추가적인 데이터가 기록될 수 있으며, 그리고 L3과 L4 상태들을 통하여 1비트의 추가적인 데이터가 기록될 수 있다.
도 4에서 도시되는 바와 같이, 본 발명의 일 양상에 따르면, 하나의 삭제 카운트(ec) 당 3회의 기록 카운트(wc) 또는 3회의 기록 모드(w_mode)(또는 셀-내 기록 모드(in-cell write mode))가 허용될 수 있다. 본 발명의 실시예에 따르면, 기록 모드(w_mode)의 개수는 '기록 카운트 (mod '메모리 셀의 구동 전압 레벨 값의 총 개수 - 1')' 값에 기초하여 결정될 수 있다. 즉, MLC의 경우 기록 모드(w_mode)는 'wc (mod 3)'으로 결정될 수 있다. 본 발명의 일 양상에서, 메모리 셀에 대한 데이터 기록 요청 횟수에 기초하여 셀-내 기록 모드가 결정될 수 있다. 본 명세서에서의 셀-내 기록 모드 및 기록 모드는 상호 교환가능하게 사용된다.
본 발명의 일 양상에서, 기록 모드(w_mode)가 0인 상태에서, 바이너리 1의 데이터가 도 4에서 도시되는 메모리 셀에 기록되었다고 가정한다. 이러한 경우, 상기 메모리 셀은 L1의 상태에 대응하는 구동 전압이 인가되어 있을 것이다.
여기서, 기록 모드가 1인 상태로 변경되면서, 기록될 데이터가 바이너리 1인 경우, 메모리 컨트롤러(301)는 L2의 전압값을 인가할 것을 결정할 수 있다. 또는, 기록될 데이터가 바이너리 0인 경우, 메모리 컨트롤러(301)는 L3의 전압값을 인가할 것을 결정할 수 있다. 이와 같이, 상위 레벨의 전압값이 메모리 셀에 인가되는 경우, 1 또는 0의 값이 상기 메모리 셀에 재기록될 수 있다.
다른 예시에서, 도 4에서의 맵핑 테이블 하에서, 현재의 기록 모드는 1인 상태이고, 동일한 MLC가 4개(즉, 셀1, 셀2, 셀3 및 셀4) 존재하며, 그리고 L1, L2, L3 및 L4들 간의 전압차이는 모두 0.1V로 가정한다. 또한, 현재 상태에서 4개의 셀에 각각 0, 1, 1, 0 이라는 데이터가 기록되어 있다고 가정한다.
이러한 상태에서, 후속적인 기록 요청이 인입되는 경우, 기록 모드(즉, 셀-내 기록 모드)의 카운트 값은 1에서 2로 증가된다. 이러한 셀-내 기록 모드의 변경에 따라서, 새로운 코드 맵핑 관계에 따라 인입되는 데이터가 기록될 수 있다. 보다 구체적으로, 상기 후속적인 기록 요청이 4개의 셀에 각각 1, 0, 1, 0 이라는 데이터의 기록을 요청한다고 가정하자. 이러한 경우, 셀 1의 경우 이전 기록 모드에서의 L3 상태의 0이 기록되어 있기 때문에, 새로운 기록 모드에서 1을 기록하기 위해서는 L3의 그대로의 전압이 요구될 것이다(즉, 전압을 인가하지 않고도 1을 기록할 수 있다). 셀 2의 경우 이전 기록 모드에서의 L2 상태의 1이 기록되어 있기 때문에, 새로운 기록 모드에서 0을 기록하기 위해서는 L4의 전압이 요구될 것이다(즉, L4의 전압이 셀 2로 인가되는 경우, 셀 2로 0의 값이 재기록 될 수 있다). 셀 3 및 셀 4의 경우도 전술한 방식과 동일한 방식에 의하여, 각각 전압이 인가되는 경우 셀 3 및 셀 4에 1 및 0의 값이 재기록될 수 있다.
즉, 본 발명의 일 양상에 따른 기법들은 기존의 기법들에 비하여 메모리 셀에 대한 삭제 횟수가 (MLC의 경우) 최대 1/3로 줄어들기 때문에, 삭제 사이클에 의하여 발생되는 메모리 셀의 마모도의 증가를 최소화시킬 수 있다. 따라서, 본 발명의 일 양상에 따르면, 하나의 삭제 사이클 내에서 하나의 셀에 복수의 기록들이 허용될 수 있기 때문에, 메모리 디바이스(예컨대, 플래시 메모리)의 수명이 증대될 수 있다.
전술한 실시예는 예시적인 것이며, 본 발명의 다른 실시예에 따라 메모리 셀의 동작 모드 및 하나의 메모리에 저장되는 비트 수는 다양하게 구성될 수 있다. 즉, 본 발명의 다른 실시예에 따른 메모리 시스템은, 메모리 셀의 동작 모드에 따라, 하나의 메모리 셀에서 표현가능한 최대 상태들의 수 보다 적은 수의 상태들을 사용하여 하나 이상의 정보 단위를 하나의 삭제 사이클 내에서 하나의 메모리 셀에 복수회 기록할 수 있다. 예를 들어, 메모리 셀이 TLC인 경우에는 총 8개의 상이한 상태들을 표현할 수 있으며, 하나의 TLC 메모리 셀은 최대 3 비트를 기록할 수 있다. 이 경우, 본 발명의 일 실시예에 따른 메모리 시스템은 하나의 TLC 메모리 셀에 1 비트 혹은 2비트의 데이터를 기록하도록 할당할 수 있다. 본 발명의 일 실시예에 따라, 하나의 TLC 메모리 셀에 하나의 비트를 기록하도록 제어하는 경우, 메모리 시스템은 아래 표 1과 같이 셀-내 기록 모드별로 상이한 전압 상태 레벨을 하나의 비트를 표현하기 위해 할당할 수 있다.
표 1
전압상태레벨 0 전압상태레벨 1 전압상태레벨 2 전압상태레벨 3 전압상태레벨 4 전압상태레벨 5 전압상태레벨 6 전압상태레벨 7
기록모드 1 1 0 X X X X X X
기록모드 2 X 1 0 X X X X X
기록모드 3 X X 1 0 X X X X
기록모드 4 X X X 1 0 X X X
기록모드 5 X X X X 1 0 X X
기록모드 6 X X X X X 1 0 X
기록모드 7 X X X X X X 1 0
표 1에 도시된 바와 같이, 하나의 TLC 메모리 셀에 1의 비트를 할당하는 경우 하나의 TLC 비트는 서로 상이한 7개의 기록 모드를 사용할 수 있으며, 메모리 시스템(100)은 삭제 동작 없이도 최대 7번까지 하나의 메모리 셀에 데이터를 재기록할 수 있다.
또한, 하나의 TLC 메모리 셀에 1의 비트를 할당하는 다른 실시예에서는, 0의 값이 기록된 레벨 이전의 레벨에 대해서는 X가 아닌 1의 값을 할당할 수도 있다. 이러한 경우에는, 1의 입력이 인입되는 경우에는 전압 레벨의 상승(쉬프트)없이 1의 값이 동일한 셀에 기록될 수 있다. 이러한 실시예에 대한 비트 할당 방법은 이하의 표 2에서 표현된다.
표 2
전압상태레벨 0 전압상태레벨 1 전압상태레벨 2 전압상태레벨 3 전압상태레벨 4 전압상태레벨 5 전압상태레벨 6 전압상태레벨 7
기록모드 1 1 0 X X X X X X
기록모드 2 1 1 0 X X X X X
기록모드 3 1 1 1 0 X X X X
기록모드 4 1 1 1 1 0 X X X
기록모드 5 1 1 1 1 1 0 X X
기록모드 6 1 1 1 1 1 1 0 X
기록모드 7 1 1 1 1 1 1 1 0
본 발명의 다른 실시예에서, TLC 메모리 셀이 8개의 상이한 상태들을 표현하고, 본 발명의 일 실시예에 따른 메모리 시스템(100)이 하나의 TLC 메모리 셀에 두 개의 비트를 표현하도록 구성될 수 있다.
추가적으로, 본 명세서에서는 데이터를 기록하는 방식에 초점을 두어 기재되었지만, 데이터를 판독하는 경우에도 전술한 맵핑 방식에 따라 판독될 수 있다. 예를 들어, 표 2의 예시에서, 판독 모듈 또는 메모리 컨트롤러가 현재 기록 모드가 4이고, 해당 메모리 셀의 전압 레벨 상태를 4로 판독한 경우, 판독 모듈 또는 메모리 컨트롤러는 해당 메모리 셀에 기록 또는 저장된 데이터는 0임을 판독할 수 있다.
본 발명의 다른 실시예에서 메모리 시스템(100)이 하나의 TLC 메모리 셀에 2개의 비트를 할당하는 방법은 아래 표 3과 같을 수 있다.
표 3
전압상태레벨 0 전압상태레벨 1 전압상태레벨 2 전압상태레벨 3 전압상태레벨 4 전압상태레벨 5 전압상태레벨 6 전압상태레벨 7
기록모드 1 11 10 01 00 X X X X
기록모드 2 X X X X 11 10 01 00
TLC 메모리 셀 및/또는 MLC 메모리 셀을 사용하는 전술한 실시예들은 예시적인 것이다. 본 발명의 또 다른 실시예에 따라, 하나의 메모리 셀에 표현 가능한 최대 상태(즉, 레벨)들의 최대 수는 8이다. 이 경우 하나의 메모리 셀에 표현 가능한 최대 상태 수 보다 적은 상태 수를 사용하여 데이터를 하나의 메모리 셀에 기록하도록 설정하고, 서로 다른 셀-내 기록 모드를 사용하여 삭제 동작 없이 적어도 한 번 이상 메모리 셀 내 덮어쓰기(overwrite) 동작을 수행하는 것은 모두 본 발명의 권리범위에 포함될 수 있다.
추가적으로, 본 명세서에서는 데이터를 기록하는 방식에 초점을 두어 기재되었지만, 데이터를 판독하는 경우에도 전술한 맵핑 방식에 따라 판독될 수 있다. 예를 들어, 표 3에 예시에서, 판독 모듈 또는 메모리 컨트롤러가 해당 메모리 셀의 전압 레벨 상태를 2로 판독한 경우, 판독 모듈 또는 메모리 컨트롤러는 해당 메모리 셀에 기록 또는 저장된 데이터는 01임을 판독할 수 있다.
본 발명의 다른 실시예에서, 메모리 시스템을 구성하는 하나의 메모리 디바이스내에서, 서로 상이한 동작 상태를 가지는 메모리 셀들이 함께 사용될 수 있다. 예를 들어, 본 발명의 일 실시예에 따른 메모리 시스템을 구성하는 메모리 디바이스에서 적어도 일부의 메모리 셀들은 MLC 메모리 셀, 그리고 다른 일부의 메모리 셀들은 TLC 메모리 셀들로 구성될 수도 있다. 이 경우, 메모리 시스템은 각 메모리 셀 별로, 메모리 셀에서 하나 이상의 정보 단위(예컨대, 비트)를 표현하기 위한 상태들의 수가, 상기 메모리 셀에서 표현가능한 상태들의 최대수보다 적도록 설정할 수 있다.
본 발명의 추가적인 양상에 따른 메모리 셀이 TLC인 경우에는, 하나의 삭제 사이클 내에서 2비트 단위로 하나의 셀로의 2회 기록이 허용될 수 있다. 나아가, 메모리 셀이 TLC인 경우에는, 하나의 삭제 사이클 내에서 2비트 단위로 하나의 셀로의 1회 기록과 함께 1비트 단위로 하나의 셀로의 3회 기록이 허용될 수 있다.
또한, 본 발명의 추가적인 양상에 따른 메모리 셀이 예컨대, 3개의 전압 상태 레벨을 포함하는 경우, 1비트 단위로 하나의 셀로의 2회 기록이 허용될 수 있다.
추가적으로, 하나의 셀이 MLC와 TLC의 레벨들을 모두 구현가능할 수 있기 때문에, MLC 및 TLC(또는 다른 레벨의 셀)이 번갈아가면서 구현될 수도 있다. 이러한 경우에 추가적인 웨어 레벨링 효과가 달성될 수도 있다.
더불어, 본 발명의 일 양상에서, 메모리 컨트롤러(301)는 SLC, MLC 및 TLC 등의 조합에 의해서 표현될 수 있는 상태들의 최대수(예컨대, 14=2(SLC)+4(MLC)+8(TLC))보다 적은 수의 상태들을 사용하여 하나 이상의 정보 단위를 표현할 수도 있다. 즉, SLC, MLC 등과 같은 다양한 상태 레벨들을 갖는 메모리 셀들의 조합(즉, 여러 셀들을 묶어서 하나 이상의 정보 단위를 표현) 또한 본 발명의 범위 내에 포함될 수 있다.
나아가, 본 발명의 일 양상에 따른 기록 방법에 의하여 미리 결정된 횟수의 기록이 하나의 셀에 기록된 경우에는, 해당 셀을 삭제하는 동작 및/또는 다른 페이지를 결정하여 동일한 기록 방법을 구현하는 동작 중 적어도 하나가 수행될 수 있다.
도 5는 본 발명의 다른 양상에 따라 메모리 디바이스의 하나의 셀에서의 덮어쓰기 기법을 예시적으로 도시한다.
도 5에서 도시되는 덮어쓰기 기법은 도 4에서 도시되는 덮어쓰기 기법과 맵핑 방식에 있어서의 차이점을 갖는다. 즉, 도 5에서 도시되는 덮어쓰기 기법은, 0의 값을 갖는 전압 상태 레벨보다 하위의 전압 상태 레벨에는 모두 1의 값이 맵핑되도록 설정될 수 있다.
이러한 맵핑 기법을 통하여, 각각의 기록 스테이지에서, 저장될 데이터가 0의 값을 갖는 경우에만 전압값이 쉬프트될 수 있다.
도 5에서 도시되는 바와 같이, 본 발명의 일 양상에 따른 코드 맵핑 방식은, MLC의 예시에서 하나의 비트가 3번 기록되는 것을 허용할 수 있다. 보다 구체적으로, 삭제 동작 이후에 비어있는(empty) 상태인 메모리 셀에서, 기록 요청이 인입되는 경우, 메모리 셀의 L1 상태에 1의 값이 그리고 L2 상태에 0의 값이 맵핑될 수 있다. 다음으로, 후속 기록 요청이 인입되는 경우, 메모리 셀의 L2 상태에 1의 값이, 메모리 셀의 L2 상태에 1의 값이 그리고 L3 상태에 0의 값이 맵핑될 수 있다. 그 다음 기록 요청이 인입되는 경우, 메모리 셀의 L1, L2 및 L3 상태에 1의 값이 그리고 L4 상태에 0의 값이 맵핑될 수 있다.
본 발명의 일 양상에서, 기록 모드(w_mode)가 0인 상태에서, 바이너리 1의 데이터가 도 5에서 도시되는 메모리 셀에 기록되었다고 가정한다. 이러한 경우, 상기 메모리 셀은 L1의 상태에 대응하는 구동 전압이 인가되어 있을 것이다.
여기서, 기록 모드가 1인 상태로 변경되면서, 기록될 데이터가 바이너리 1인 경우, 기록 모드 1에서의 1의 값이 맵핑된 전압 레벨 상태 L1과 기록 모드 0에서의 1의 값이 맵핑된 전압 레벨 상태 L1이 동일하기 때문에, 메모리 컨트롤러(301)는 전압을 쉬프트 시키지 않고, 기록 모드 1에서의 1의 값을 기록할 수 있다. 또는, 기록될 데이터가 바이너리 0인 경우, 메모리 컨트롤러(301)는 L3의 값을 갖는 전압값을 인가할 것을 결정할 수 있다.
다시 말하면, 후속적인 기록 요청이 데이터 1의 기록을 요청하는 경우에는 전압값이 인가되지 않고서도 1의 값이 해당 메모리 셀에 재기록될 수 있다.
따라서, 전술한 기법을 통하여, 전압을 인가하는데 있어서 발생되는 메모리 셀의 플로팅 게이트에서의 스트레스를 줄일 수 있다. 그러므로, (MLC의 경우) 하나의 셀에서의 1비트 단위의 연속적인 3개의 덮어쓰기를 허용함과 동시에 0의 값이 요청되는 경우에만 시프팅 되는 레벨 값의 전압을 인가함으로써 메모리 셀의 수명이 최대화될 수 있다.
더불어, 도 5에서 도시되는 기법들 또한 TLC 및 다른 복수의 레벨들을 갖는 메모리 셀에 적용될 수 있다는 점은 당업자에게 명백할 것이다.
도 6은 본 발명의 일 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다. 도 6에서 도시되는 방법은 예를 들어, 메모리 컨트롤러(301)에 의해 수행될 수 있다. 도 6에서 도시되는 단계들 이외의 추가적인 단계들 또한 상기 방법에 포함될 수 있으며, 일부의 단계들이 생략될 수도 있다는 점은 당업자에게 명백할 것이다.
먼저, 메모리 컨트롤러는 데이터를 프로그래밍할 페이지의 프로그래밍 횟수 정보를 획득한다(S110). 본 발명에서 프로그래밍 횟수 정보는 해당 페이지의 기록 카운트 정보, 메모리 셀의 데이터 기록 요청 횟수 정보 등 다양한 명칭으로 사용될 수 있는 횟수 정보를 포함하는 개념으로 사용된다. 상기 프로그래밍 횟수 정보는 해당 페이지에 대한 데이터의 기록 요청(또는, 프로그래밍 요청)에 의해 1씩 증가된다.
다음으로, 메모리 컨트롤러는 획득된 프로그래밍 횟수 정보에 기초하여, 페이지 내의 각 메모리 셀에 프로그래밍 될 최하위 레벨 값 및 최상위 레벨 값을 포함하는 구동 전압 값 세트를 결정한다(S120). 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 프로그래밍 횟수 정보에 기초하여 셀-내 기록 모드(in-cell write mode)를 결정할 수 있다. 이때, 상기 셀-내 기록 모드는 '프로그래밍 횟수 정보 (mod '메모리 셀의 구동 전압 레벨 값의 총수 - 1')'로 결정될 수 있다. 예를 들어, MLC의 경우 상기 '메모리 셀의 구동 전압 레벨 값의 총수'는 4이며, 따라서, 셀-내 기록 모드는 '프로그래밍 횟수 정보 (mod 3)'으로 결정될 수 있다.
본 발명의 양상에 따르면, 메모리 컨트롤러는 프로그래밍 횟수 정보의 증가에 대응하여 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 중 적어도 하나를 시프팅 한다.
도 4를 참조로 설명된 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 프로그래밍 횟수 정보의 증가에 대응하여 상기 최하위 레벨 값 및 최상위 레벨 값을 함께 시프팅 할 수 있다. 이때, 상기 최하위 레벨 값 및 최상위 레벨 값은 항상 일정한 레벨 차를 갖도록 설정될 수 있다. 예를 들어, 해당 페이지의 메모리 셀에 할당된 최하위 레벨 값 및 최상위 레벨 값이 각각 L1, L2일 경우, 메모리 컨트롤러는 프로그래밍 횟수 정보의 증가에 대응하여 상기 최하위 레벨 값 및 최상위 레벨 값을 각각 L2, L3로 시프팅할 수 있다.
또한 도 5를 참조로 설명된 본 발명의 다른 양상에 따르면, 메모리 컨트롤러는 프로그래밍 횟수 정보의 증가에 대응하여 상기 최상위 레벨 값만을 시프팅 할 수 있다. 이를 테면 데이터 '0'이 최상위 레벨 값에 맵핑 되는 경우, 프로그래밍 횟수 정보의 증가에 대응하여 데이터 '0'을 기록하기 위한 구동 전압 레벨 값만 변경될 수 있다. 또한, 데이터 '0'에 맵핑 되는 전압 레벨보다 하위의 전압 레벨에는 모두 데이터 '1'이 맵핑 되도록 설정될 수 있다. 즉, 해당 페이지의 메모리 셀에 할당된 최하위 레벨 값 및 최상위 레벨 값이 각각 L1, L2일 경우, 메모리 컨트롤러는 프로그래밍 횟수 정보의 증가에 대응하여 상기 최하위 레벨 값 및 최상위 레벨 값을 각각 L1, L3로 변경할 수 있다. 이때, 메모리 컨트롤러는 직전 기록 모드에서의 비트들과 전압 레벨 값의 맵핑 관계 및/또는 현재 기록 모드에서의 비트들과 전압 레벨 값의 맵핑 관계를 참조할 수 있다. 메모리 컨트롤러는 직전 기록 모드에서 비트들이 기록된 전압 레벨 값 및 현재 기록 모드에서 요청되는 데이터의 값에 따라서, 인가될 구동 전압 레벨 값(즉, 쉬프트 전압 값)을 결정할 수 있다.
다음으로, 메모리 컨트롤러는 결정된 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 사이의 복수의 전압들을 이용하여 페이지 내의 각 메모리 셀에 데이터를 프로그래밍 한다(S130). 메모리 컨트롤러는 상기 결정된 셀-내 기록 모드에 기초하여, 상기 메모리 셀에 하나 이상의 비트를 표현하기 위한 구동 전압 레벨값을 인가할 수 있다. 이러한 인가는, 하나 이상의 비트를 표현하기 위하여 이전 셀-내 기록 모드의 구동 전압 값보다 높거나 같은 구동 전압 값을 상기 메모리 셀에 인가하는 것을 의미할 수 있다.
본 발명의 일 양상에서, 상기 메모리 셀에서 상기 하나 이상의 정보 단위를 표현하기 위한 상태들의 수는, 상기 메모리 셀에서 표현 가능한 상태들의 최대수보다 적을 수 있다. 즉, 일회 기록에 있어서 사용되는 메모리 셀의 상태들의 수는 메모리 셀에서 표현 가능한 상태들의 최대수보다 적을 수 있다.
예를 들어, 메모리 셀인 TLC인 경우 메모리 셀에서 표현될 수 있는 상태들의 최대수는 8일 것이다. 따라서, 일회 기록에 있어서 사용되는 메모리 셀의 상태들의 수는 8보다 적은 수를 가질 수 있다(예컨대, 1비트를 표현하기 위한 2개의 상태 또는 2비트를 표현하기 위한 4개의 상태).
한편, 본 발명의 다른 양상에 따르면, 후술하는 바와 같이 메모리의 각 페이지는 미리 설정된 위치의 파일럿 셀을 포함할 수 있으며, 메모리 컨트롤러는 상기 파일럿 셀을 이용하여 데이터의 판독을 수행할 수 있다. 즉, 하나의 페이지에는 미리 설정된 위치의 파일럿 셀과 데이터가 프로그래밍 되는 데이터 셀이 포함될 수 있는데, 상기 데이터 셀에 프로그래밍 된 데이터를 판독하기 위한 임계 전압을 파일럿 셀에 기록할 수 있다.
더욱 구체적으로, 메모리 컨트롤러는 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 되는 최하위 레벨 값과 최상위 레벨 값 사이의 임계 전압을 파일럿 셀에 프로그래밍 할 수 있다. 이때, 파일럿 셀에 프로그래밍 되는 임계 전압 값은 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 된다. 다음으로, 메모리 컨트롤러는 페이지에 기록된 데이터의 판독 요청에 대응하여, 파일럿 셀의 기록된 전압 값을 판독한다. 그리고 메모리 컨트롤러는 상기 판독된 파일럿 셀의 전압 값을 참조하여 데이터 셀을 판독하기 위한 판독 전압 값을 설정하며, 설정된 판독 전압 값에 기초하여 데이터 셀의 데이터를 판독할 수 있다.
메모리 컨트롤러는 데이터 셀의 프로그래밍에 사용하는 구동 전압 값 세트의 시프팅에 대응하여, 파일럿 셀에 기록되는 임계 전압 값을 시프팅 할 수 있다. 메모리 컨트롤러는 파일럿 셀로부터 획득된 판독 접압을 기초로 하여, 데이터 셀의 데이터를 판독할 수 있다. 즉, 메모리 컨트롤러는 데이터 셀의 전압이 판독 전압보다 높을 경우 데이터 '0'으로, 데이터 셀의 전압이 판독 전압보다 낮을 경우 데이터 '1'로 판독할 수 있다. 이와 같은 본 발명의 양상에 따르면, 메모리 컨트롤러는 데이터 셀에 프로그래밍 된 데이터의 판독 시 별도의 프로그래밍 횟수 정도 등을 참조하지 않아도 되며, 해당 페이지의 파일럿 셀로부터 데이터 셀에 대한 판독 전압 값을 바로 획득하여 데이터를 판독할 수 있다.
다음으로, 본 발명의 또 다른 양상에 따르면, 메모리 컨트롤러는 프로그래밍 될 데이터의 크기가 일정 기준 이하에 해당하는 스몰 데이터에 대해서만 전술한 하나의 셀에서의 덮어쓰기 기법을 적용할 수 있다. 일 실시예로, 메모리 셀이 MLC인 경우, 메모리 컨트롤러는 데이터의 사이즈가 페이지의 사이즈의 절반 보다 작을 경우에만 해당 페이지에 대한 셀 내 덮어쓰기를 수행한다. 이때, 메모리 컨트롤러는 해당 데이터에 대한 오버라이트 요청(또는, 업데이트 요청)이 수신되었을 때, 상기 데이터를 해당 페이지에 그대로 오버라이트 할 수 있다.
더욱 구체적으로, 메모리 컨트롤러는 프로그래밍 요청되는 데이터의 사이즈를 결정하고, 결정된 데이터의 사이즈가 페이지의 사이즈의 절반보다 작은지 여부를 판별한다. 만약 데이터의 사이즈가 페이지의 사이즈의 절반보다 작을 경우, 메모리 컨트롤러는 전술한 최하위 레벨 값 및 최상위 레벨 값을 이용한 1비트 정보로 데이터를 각 메모리 셀에 프로그래밍 한다. 상기 프로그래밍 된 데이터에 대한 오버라이트 요청이 수신될 경우, 메모리 컨트롤러는 전술한 바와 같이 해당 페이지에 대한 최하위 레벨 값 및 최상위 레벨 값을 시프팅 하고, 시프팅 된 최하위 레벨 값 및 최상위 레벨 값을 이용하여 데이터를 페이지의 각 메모리 셀에 재 프로그래밍 한다. 이때, 각 메모리 셀에 재 프로그래밍 되는 데이터는 상기 오버라이트 요청 시 업데이트 된 데이터일 수 있다. 이와 같은 본 발명의 양상에 따르면, 특정 페이지에 저장된 데이터와 다른 새로운 데이터가 프로그래밍 되는 것이 아니라, 해당 페이지에 기 저장된 데이터를 업데이트하여 재 프로그래밍 함으로 해당 페이지 내의 데이터에 맵핑되는 논리 주소(또는, log data)를 변경하지 않아도 된다.
한편, 본 발명에서의 맵핑 방식 및 0과 1의 순서는 예시적인 것일 뿐이며, 본 명세서에서의 0과 1의 순서는 가변적으로 바뀔 수도 있다. 즉, 0과 1은 반대로 맵핑될 수도 있다.
도 7은 본 발명의 일 양상에 따라 파일럿 셀들을 포함하는 데이터 블록을 예시적으로 도시한다.
전술한 바와 같이, 플래시 메모리와 같은 메모리 디바이스들은 데이터를 저장하기 위해 아날로그 메모리 셀들의 어레이들을 사용할 수 있다. 각각의 아날로그 메모리 셀은 셀 내에 저장된 정보를 표현하기 위하여 전하량 또는 전압과 같은 아날로그 값들의 양을 저장할 수 있다. 예를 들어, 각각의 메모리 셀은 특정한 양의 전하량을 보유하고 있다. 이러한 아날로그 값들의 범위는 일반적으로 특정한 영역(region)들로 나뉠수 있으며, 각각의 영역은 하나 이상의 데이터 비트 값들과 대응될 수 있다. 예를 들어, SLC는 2개의 영역들로 나뉠 수 있으며, MLC 등의 복수의 레벨들을 갖는 셀들은 4개 이상의 영역들로 나뉠 수 있다.
SSD와 같은 메모리 디바이스에서, 데이터는 요구되는 비트들에 대응하는 노미널(nominal) 아날로그 값을 기록함으로써 아날로그 메모리에 기록될 수 있다. 이러한 아날로그 값들은 다양한 통계적인 분포를 가질 수 있기 때문에, 상이한 레벨들을 프로그래밍하기 위해 사용되는 노미널 값들에 대한 선택은 메모리 셀 어레이의 성능에 큰 영향을 미칠 수 있다.
노미널 값들이 서로 인접한 경우에는, 메모리 셀의 판독에 있어서 에러가 발생될 확률이 높다. 반면에, 노미널 값들이 서로 차이가 많이 나는 경우에는, 메모리 셀 어레이에서의 아날로그 값들의 동적인 범위를 증가시킬 수 있다. 이러한 경우에는 보다 많은 전력이 소모될 수 있을 뿐만 아니라 메모리 셀의 프로그래밍 속도가 늦어질 수도 있다.
각각의 셀에서의 노미널 값들은 시간적으로 그리고 공간적으로 변경될 수 있는 속성을 갖고 있기 때문에, 판독 및 기록하는데 있어서 일정한 미리결정된 값을 사용하는 것은 BER(bit error rate) 등과 같은 메모리 디바이스의 성능에 있어서 악영향을 미칠 수 있다.
또한, 하나의 셀에서의 보다 많은 전압 레벨 상태들이 존재하는 경우에, 데이터를 기록 및 판독하는데 있어서 아날로그 전압의 특성상 에러가 발생될 확률이 보다 높을 수 있다.
이러한 상황에서, 본 발명은 페이지의 미리결정된 영역에 위치한 파일럿 셀에서의 미리결정된 노미널 값들을 이용하는 프로그래밍 기법을 제안한다. 이러한 프로그래밍 기법을 통하여, 파일럿 셀들에서 판독되는 아날로그 전압들은 인접한 데이터 셀들에서의 전압들의 에러 및 변화 등을 보상하기 위해서 사용될 수 있다.
도 7에서 도시되는 바와 같이, 본 발명의 일 양상에 따른 메모리 디바이스의 블록내의 하나의 페이지는 하나 이상(예컨대, 4개의)의 파일럿 셀 및 복수의(예컨대, 32768개의) 데이터 셀들로 구성될 수 있다. 도 7에서는 4개의 파일럿 셀들을 예시적으로 도시하였지만, 그 이상 또는 그 이하의 개수의 파노미널일럿 셀들 또한 본 발명의 범위 내에 포함될 수 있다.
도 7에서는 4개의 노미널 값들을 갖는 MLC로 구성된 SSD를 예시한다. 각각의 페이지에 A, B, C 및 D로 표시된 4개의 파일럿 셀들이 미리설정될 수 있다. 각각의 파일럿 셀에 대하여, 파일럿 셀 A는 '11'로, 파일럿 셀 B는 '10'으로, 파일럿 셀 C는 '00'으로 그리고 파일럿 셀 D는 '01'으로 할당될 수 있다. 이러한 파일럿 셀들 각각은 공칭값(즉, 기준 전압 값)을 가질 수 있다.
파일럿 셀들 A, B, C 및 D에 대응하는 노미널 값들은 고정된 값일 수 있거나, 각각의 페이지에 대하여 상이하게 할당될 수 있거나 또는 웨어 레벨링을 구현하기 위하여 다양한 방식으로 변경될 수도 있다. 또한, 이러한 파일럿 셀들(A 내지 D)은 페이지 내에서의 다양한 위치에 배치될 수 있다. 이러한 파일럿 셀들의 배치는 페이지들의 타입, 프로그래밍 카운트, 및 랜덤한 방식 등에 기초하여 결정될 수도 있다.
이러한 파일럿 셀들을 사용함으로써, 페이지 내에 미리결정된 위치에 배치된 파일럿 셀들에서의 미리정의된 노미널 값들을 사용하여 데이터가 프로그래밍될 수 있다. 다음으로, 파일럿 셀들의 값들을 참고함으로써 데이터 셀에 대한 판독 또는 기록 동작이 수행될 수 있다.
도 8은 본 발명의 일 양상에 따라 프로그래밍 카운트에 따른 그리고 페이지에 따른 파일럿 셀들의 배치 변화를 예시적으로 나타낸다.
도 8에서 도시되는 바와 같이, 파일럿 셀들은 프로그래밍 카운트 및/또는 페이지에 기초하여 다양한 위치에 배치될 수 있다. 이러한 다양한 위치로의 배치를 통하여, 파일럿 셀들은 데이터 셀들에 대한 참조를 제공함에 있어서 보다 유용한 값들을 나타낼 수 있다. 추가적으로, 이러한 다양한 위치로의 배치는 페이지 내에서의 웨어 레벨링 효과 또한 달성할 수도 있다.
본 발명의 일 양상에 따르면, 메모리 컨트롤러(301)는 파일럿 셀들로 전압값을 인가하여 데이터를 기록한 이후에, 데이터 셀들로의 기록 또는 판독 이전에 파일럿 셀들을 판독하여 데이터 셀들로의 기록 또는 판독에 사용될 전압값을 결정할 수 있다.
본 발명의 일 양상에 따라, 메모리 컨트롤러(301)는 파일럿 셀들로 값들을 기록한 이후에, 파일럿 셀들에 대한 아날로그 전압 값들을 판독할 수 있다. 본 명세서에서, 일반적으로 프로그래밍한다는 것은 검증을 위하여 전압을 재-판독하는 프로세스를 포함할 수 있다.
검증을 위한 판독 프로세스 대신에, 프로그래밍을 위하여 사용되는 전압 스텝들보다 높은 정확도(resolution)를 사용하여, 보다 정확한 전압 값들이 판독될 수 있다. 예를 들어, 파일럿 셀 D에 00의 값을 기록할 때, 5V의 전압으로 기록될 수 있다. 하지만, 해당 셀을 판독할 때, 4.7V의 전압으로 판독될 수 있다. 반대의 상황 또한 발생될 수 있다.
이러한 상황에서, 데이터 영역들에서의 프로그래밍 시점에서는, 파일럿 셀들에서의 판독 전압들과 관련되어 계산된 노미널 값들을 이용하여 기록 동작이 수행될 수 있다. 즉, 전술한 바와 같이, 판독 프로세스에서의 노미널 값들이 의도된 기준 전압값에 도달하지 않는 경우에서(기록 5V 및 판독 4.7V), 기록할 때의 전압값과 판독될 때의 전압값의 차이만큼의 전압(예컨대, 0.3V)이 데이터 셀을 프로그래밍하는데 있어서 고려될 수 있다. 즉, 데이터 셀을 프로그래밍할 때, 5.3V의 전압으로 기록될 수 있다. 이러한 경우, 데이터 셀을 판독하는데 있어서 기준 전압 값이 5V를 사용하는 경우 보다 정확한 판독이 이루어질 수 있다.
반대로, 판독 프로세스에서의 노미널 값들이 의도한 기준 전압값을 초과하는 경우에서는(기록 5V 및 판독 5.3V), 기록할 때의 전압값과 판독될 때의 전압값의 차이만큼의 전압(예컨대, -0.3V)이 데이터 셀을 프로그래밍하는데 있어서 고려될 수 있다. 즉, 데이터 셀을 프로그래밍할 때, 4.7V의 전압으로 기록될 수 있다. 이러한 경우, 데이터 셀을 판독하는데 있어서 기준 전압 값이 5V를 사용하는 경우 보다 정확한 판독이 이루어질 수 있다.
이러한 기법은 하나의 페이지 내에서는 셀들의 전압에 대한 민감도(sensitivity) 및 응답성(responsiveness)이 유사하다는 가정에 기초할 수 있다. 즉, 웨어 레벨, 온도 및 셀들의 민감도에 영향을 미치는 다른 변수들은 동일한 페이지 내에서의 프로그래밍에 있어서 유사한 특성을 가질 수 있다. 따라서, 이러한 파일럿 셀들로부터의 피드백을 이용한 프로그래밍으로 인하여, 최적의 노미널 값이 결정 및 유지될 수 있다. 이러한 프로세스를 통하여, 프로그래밍 프로세스에서 파일럿 셀들로부터의 피드백을 반영하여 프로그래밍하였기 때문에, 판독 프로세스는 특별한 계산 동작 없이 미리정의된 기준 전압값을 이용하여 간단하게 수행될 수 있다.
도 9는 본 발명의 일 양상에 따라 페이지 내에서의 파일럿 셀들을 이용한 판독 기법을 예시적으로 도시한다.
메모리 컨트롤러(301)는 파일럿 셀들에서 참조된 피드백을 반영하지 않고 파일럿 셀들에서 사용된 미리정의된 노미널 값들을 사용하여 데이터 영역에 대한 프로그래밍을 수행할 수 있다. 즉, 파일럿 셀들과 데이터 셀들을 포함하는 페이지는 주어진 동일한 노미널 값들을 이용하여 프로그래밍될 수 있다. 대신에, 판독 프로세스에서는, 메모리 컨트롤러(301)는 파일럿 셀들을 먼저 판독하고, 그리고나서 파일럿 셀들에서의 판독 아날로그 전압값들을 참고함으로써 데이터 셀들을 판독하는데 사용될 임계 전압값들을 계산한다.
도 9는 판독 프로세스에서 파일럿 셀들의 판독 전압값들을 먼저 참고하여 데이터 셀들에 대한 판독 전압 값을 결정하기 위한 프로세스를 예시적으로 나타낸다.
파일럿 셀들(A, B, C 및 D) 각각은 '11', '10', '00', '01'에 대응하여 노미널 값(기준 전압값)들을 이용하여 프로그래밍될 수 있다. 프로그래밍된 셀들에서 판독될 수 있는 전압값들은 도 9에서 원으로 표시된다. 예를 들어, 도 9에서 도시되는 바와 같이, '11'의 값이 기록된 파일럿 셀 A의 경우 기준 전압값보다 낮은 전압값으로 판독될 수 있다. 또한, '10'의 값이 기록된 파일럿 셀 B의 경우 기준 전압값보다 높은 전압값으로 판독될 수 있다.
이러한 파일럿 셀들에 대한 판독 전압값은 해당 페이지에 대한 새로운 기준 전압으로 사용될 수 있다. 즉, '10'의 값을 판독하기 위한 전압 레벨은 도 9에서 도시된 바와 같이, '10' 값을 기록할 때에 사용되었던 전압 레벨값(default reference voltage)이 아닌 파일럿 셀 B를 판독하는데 있어서 실제로 측정된 전압 레벨값(proposed reference voltage)이 해당 페이지 내에서의 데이터 셀들을 판독하기 위한 전압 레벨값으로 사용될 수 있다.
따라서, 이러한 방식의 파일럿 셀들을 이용한 판독 프로세스는 기존의 판독 프로세스 보다 적은 판독 에러를 발생시킬 수 있다.
본 발명의 추가적인 양상에서, 본 명세서에서는 하나의 블록 내에서의 노미널 값들에 대한 다수의 파일럿 셀들을 제시하였지만, 대안적으로 아날로그 전압값들 또는 노미널 값들은 블록 단위로 평균화되어 계산될 수 있거나 또는 시간에 따라 평균화되어 계산될 수도 있다. 나아가, 이러한 아날로그 값들은 예를 들어, DRAM과 같은 일시적 메모리에 저장될 수 있어서, 보다 빠른 데이터 액세스를 도모할 수 있다.
도 10은 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
데이터가 프로그래밍된 이후에 임의의 시간이 지나게되면, 아날로그 전압값의 분포는 도 10에서 도시된 바와 같이 변화될 수 있다. 이러한 상황에서, 각각의 페이지에 대하여 노미널 값들이 적응적으로 정의되는 방법이 고려될 수 있다. 이러한 방법은 셀들의 상이한 응답 특성을 고려하기 때문에, 에러 발생 및 전력 소비에 대한 장점을 가질 수 있다.
보다 구체적으로, 노미널 전압값들은 데이터의 프로그래밍 동안에 적응적으로 선택될 수 있다. 다음으로, 이러한 전압값들은 스토리지를 판독하기 위해 사용될 파라미터들로서 저장될 수 있다. 이는 각각의 페이지 마다 상이한 파라미터 값으로 저장되어야 한다. 하지만, 이러한 파라미터들은 스토리지 입장에서는 방대한 오버헤드일 수 있다. 즉, 이러한 파라미터들을 할당하기 위한 별도의 방대한 공간을 마련해야만 할 것이다.
앞서 도 8 및 도 9와 관련된 본 발명의 일 양상에 따른 기술적 특징들은 이러한 파라미터들을 저장하기 위한 별도의 공간을 요구하지 않고서도 파일럿 셀들에 대한 아날로그 전압값들을 참조하여 데이터 셀에 대한 데이터를 효율적으로 판독할 수 있다.
따라서, 본 발명의 일 양상에 따르면, 도 10에서 도시되는 바와 같이, 파일럿 셀들을 미리 참조하여 파일럿 전압 레벨을 결정하게 되는 경우, 데이터의 프로그래밍 이후 전압 레벨의 변경이 발생하더라도 각각의 셀들의 응답 특성을 파악하지 않고서 적절한 임계 전압값을 찾을 수 있다. 즉, 파일럿 셀들을 사용하는 경우에는 스토리지 공간을 낭비하지 않고 보다 강건한 임계 전압값들을 생성할 수 있다.
도 11은 본 발명의 일 양상에 따라 파일럿 셀들을 이용한 예시적인 전압 판독 메커니즘을 도시한다.
도 11은 하나의 블록 내에서의 메모리 셀들의 복수의 열(column)과 행(raw)들을 갖는 복수의 셀 어레이를 나타낸다. 도 11에서 도시되는 메모리 셀들은 특정 어레이 구성 내에서 서로 접속되어 있다. 이러한 메모리 셀들의 어레이 구성은 예시적인 것이며, 다른 타입의 메모리 셀들 또는 다른 어레이 구성들 또한 본 발명의 범위내에 포함될 수 있다.
전술한 바와 같이, 메모리 셀에 저장된(또는 기록된) 값은 셀의 임계 전압(Vt)을 측정함으로써 판독될 수 있다. 이러한 판독 임계 전압은 메모리 셀에 저장된 전하의 양을 나타낼 수 있다.
도 11에서 도시되는 바와 같이, 예를 들어, 하나의 페이지는 4개의 파일럿 셀들(1101) 및 32768개의 데이터 셀들(1102)을 포함할 수 있다. 각각의 메모리 셀들은 플로팅 게이트 트랜지스터를 포함하고 있다. 이러한 하나의 페이지 내에서의 파일럿 셀들(1101) 및 데이터 셀들(1102)(즉, 셀들의 트랜지스터들의 게이트들)은 동일한 워드 라인을 공유하고 있다. 또한, 각각의 열 내에서의 트랜지스터들의 소스들은 비트 라인에 의해 서로 접속될 수 있다. NOR 셀의 경우에는 소스들이 비트 라인들에 직접적으로 접속될 수 있으며, NAND 셀의 경우에는 플로팅 게이트의 스트링에 비트 라인이 접속될 수 있다.
도 11에서는 MLC의 경우를 예로 들었기 때문에, 4개의 상이한 노미널 값들이 존재할 수 있다. 이러한 4개의 상이한 노미널 값들은 각각 파일럿 셀 A, B, C 및 D로의 기록을 위해 사용될 수 있다.
본 발명의 일 양상에서, 예시적인 데이터 블록은 스위치(1103) 및/또는 페이지 버퍼(1104)를 더 포함할 수 있다. 이러한 스위치(1103)는 파일럿 셀들의 드레인들로부터 데이터 셀들의 소스들로의 경로 내에 배치될 수 있다.
데이터 판독 요청에 대응하여 판독할 타겟 페이지(target page to read)가 결정될 수 있다. 판독될 타겟 페이지에 스텝 전압이 인가될 수 있다. 메모리 컨트롤러(301) 또는 판독 모듈(305)은 셀의 게이트(즉, 셀이 접속되어 있는 워드 라인)에 이러한 스텝 전압을 인가함으로써 특정 메모리 셀의 임계 전압(Vt)을 판독할 수 있다. 이는 특정 셀의 드레인 전류가 임계전압(Vt)를 초과하였는지 여부를 체크함으로써 구현될 수도 있다. 즉, 메모리 컨트롤러(301) 또는 판독 모듈(305)은 스텝 전압을 특정 셀이 접속된 워드 라인에 인가함으로써, 드레인 전류가 임계 전압(Vt)를 초과하는 최소의 게이트 전압 값을 결정할 수 있다.
도 11에서 도시되는 바와 같이, 메모리 컨트롤러(301) 또는 판독 모듈(305)은 타겟 페이지의 워드 라인에 스텝 전압을 인가하여 타겟 페이지 내의 파일럿 셀들(1101)의 판독 임계 전압값을 측정할 수 있다. 즉, 타겟 페이지 내의 파일럿 셀(예컨대, 파일럿 셀 A)에 대응하는 임계 전압(Vt)이 초과되는 경우, 스위치(1103)가 닫혀 해당 페이지 내의 데이터 셀(1102)로 전류가 흐를 수 있다.
도 12는 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀 판독 기법을 예시적으로 나타낸다.
도 12에서 도시되는 바와 같이, 메모리 컨트롤러(301) 또는 판독 모듈(305)에 의해 스텝 전압이 타겟 페이지에 대한 워드 라인으로 입력될 수 있다. 스텝 전압이 파일럿 셀 A에 대응하는 임계 전압(Vt)을 통과할 때, 제어 게이트(control gate)에 대한 스위치가 구동될 수 있다. 이에 따라, 데이터 셀들의 비트 라인들로 전류가 흐르게 되고, 데이터 셀들은 파일럿 셀 A에 의하여 결정된 적응형 임계 전압값에 따라 판독될 수 있다.
파일럿 셀들 B, C 및 D에 대해서도 순차적으로 상이한 타이밍에서 상이한 임계 전압값들을 통하여 파일럿 셀 A의 방식과 동일한 방식으로 구현될 수 있다.
도 13은 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀 판독 기법을 예시적으로 나타낸다.
도 13에서 도시되는 바와 같이, 파일럿 셀의 드레인 전압은 데이터 셀에 대한 워드 라인을 접속시키는 스위치에 의해 직접적으로 데이터 셀로 연결될 수 있다. 본 발명의 일 양상에 따라, 스텝 전압이 파일럿 셀 A에 대응하는 임계 전압(Vt)을 통과할 때, 스위치는 전류를 제어 게이트(control gate)로 흐르게하는 것이 아니라, 데이터 셀들의 게이트들로 전류를 직접적으로 흐르게 할 수 있다. 따라서, 노미널 값들의 변화 또한 자동적으로 데이터 셀로 반영될 수 있다.
전술한 방식들에 따라, 임계 전압값들의 변화는 파일럿 셀들을 통하여 직접적으로 데이터 셀들로 반영될 수 있다. 이러한 적응형 구현들은 기존의 메커니즘에 추가적인 계산을 요구하지 않는다.
본 발명의 추가적인 양상에서, 데이터 셀에 대한 데이터 판독의 있어서 추가적인 강건성을 도모하기 위하여, 파일럿 셀들이 그룹화되어 사용될 수도 있다. 즉, 각각의 노미널 값에 대하여 복수의 파일럿 셀들이 사용될 수도 있다. 이러한 파일럿 셀들의 그룹은 하나의 데이터 블록 또는 하나의 페이지에 대하여 공통적으로 사용될 수도 있다.
도 14는 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
파일럿 셀들을 미리 참조하여 데이터 셀을 위한 임계 전압 레벨을 결정하게되는 경우, 데이터의 프로그래밍 이후 전압 레벨의 변경이 발생하더라도 각각의 셀들의 응답 특성을 파악하지 않고서 적절한 임계 전압값을 찾을 수 있다. 즉, 파일럿 셀들을 사용하는 경우에는 스토리지 공간을 낭비하지 않고 보다 강건한 임계 전압값들을 생성할 수 있다.
도 14에서 도시되는 바와 같이, 프로그래밍 시점에서의 임계 전압값들의 레벨 분포는 시간이 지남에 따라 도 14(a)에서 도 14(b)와 같이 변화할 수 있다. 하지만, 본 발명의 일 양상에 따른 기법은 이러한 임계전압 값들의 변화에도 불구하고, 파일럿 셀에서 판독되는 전압의 값을 통하여 데이터 셀에 대한 최적의 임계 전압값을 찾을 수 있다. 즉, 본 발명의 일 양상에 따르면, 이러한 임계 전압 값들의 변화로 인한 데이터 셀의 판독 에러 확률이 감소될 수 있다.
도 15는 본 발명의 일 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다. 도 15에서 도시되는 단계들 이외의 추가적인 단계들이 상기 방법에 포함될 수 있으며, 일부의 단계들이 생략될 수도 있다는 점은 당업자에게 명백할 것이다.
도 15에서 도시되는 바와 같이, 메모리 컨트롤러는 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널 값의 전압을 인가하여 데이터를 프로그래밍 한다(S210). 본 발명의 양상에 따르면, 상기 파일럿 셀은 데이터 셀과 동일한 블록 또는 페이지 내에 위치한다. 또한, 파일럿 셀은 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값들에 각각 대응된다. 본 발명의 일 양상에 따르면, 파일럿 셀은 메모리 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함한다.
다음으로, 메모리 컨트롤러는 파일럿 셀의 기록된 전압 값을 판독한다(S220). 이때, 메모리 컨트롤러는 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 파일럿 셀의 전압 값을 판독할 수 있다. 예를 들어, 프로그래밍을 위한 각 데이터의 노미널 값이 1V의 전압 스텝을 가진다면, 메모리 컨트롤러는 1V 간격 보다 높은 해상도(이를 테면, 5배의 해상도)인 0.2V의 해상도로 파일럿 셀의 전압 값을 판독할 수 있다.
다음으로, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값에 기초하여 파일럿 셀의 데이터에 대응하는 노미널 값을 교정한다(S230). 이때, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값과 미리 결정된 노미널 값 간의 차분값을 산출하고, 산출된 차분값을 상기 미리 결정된 노미널 값에 합산하여 교정된 노미널 값을 획득할 수 있다. 본 발명의 다른 양상에 따르면, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값과 미리 결정된 노미널 값 간의 비율을 산출하고, 산출된 비율에 기초하여 상기 미리 결정된 노미널 값을 스케일링하여 교정된 노미널 값을 획득할 수 있다.
메모리 컨트롤러는 교정된 노미널 값을 이용하여 메모리의 데이터 셀에 데이터를 프로그래밍 한다(S240).
한편, 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 파일럿 셀이 위치한 블록의 삭제 횟수 또는 페이지의 기록 횟수 정보를 획득할 수 있다. 메모리 컨트롤러는 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 파일럿 셀의 위치를 시프팅 할 수 있다.
도 16은 본 발명의 다른 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다. 도 16에서 도시되는 단계들 이외의 추가적인 단계들이 상기 방법에 포함될 수 있으며, 일부의 단계들이 생략될 수도 있다는 점은 당업자에게 명백할 것이다.
도 16에서 도시되는 바와 같이, 메모리 컨트롤러는 미리 결정된 노미널 값의 전압을 이용하여 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 한다(S310). 전술한 바와 같이, 파일럿 셀은 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀을 가리킨다. 본 발명의 일 양상에 따르면, 파일럿 셀은 메모리 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함할 수 있다. 파일럿 셀은 데이터 셀과 동일한 블록 또는 동일한 페이지 내에 위치할 수 있다.
다음으로, 메모리 컨트롤러는 파일럿 셀의 기록된 전압 값을 판독한다(S320). 이때, 메모리 컨트롤러는 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 파일럿 셀의 전압 값을 판독할 수 있다.
다음으로, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값을 참조하여 데이터 셀을 판독하기 위한 임계 전압 값을 설정한다(S330). 상기 임계 전압 값은 데이터 셀의 판독 전압으로 사용되기 위한 것으로서, 일 양상에 따르면 상기 임계 전압 값은 판독된 파일럿 셀의 전압 값보다 일정 수준 낮은 값으로 설정될 수 있다. 또한 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 메모리 내의 동일한 노미널 값을 이용하여 프로그래밍 된 복수의 파일럿 셀의 판독 전압 값을 획득하고, 획득된 복수의 파일럿 셀의 판독 전압 값의 평균에 기초하여 임계 전압 값을 설정할 수 있다.
메모리 컨트롤러는 설정된 임계 전압 값에 기초하여 메모리의 데이터 셀의 데이터를 판독한다(S340).
한편, 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 파일럿 셀이 위치한 블록의 삭제 횟수 또는 페이지의 기록 횟수 정보를 획득할 수 있다. 메모리 컨트롤러는 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 파일럿 셀의 위치를 시프팅 할 수 있다.
여기에서 설명되는 다양한 양상들 또는 특징들은 표준 프로그래밍 및/또는 엔지니어링 기법들을 사용하는 방법, 장치, 또는 제조물로서 구현될 수 있다. 또한, 여기에서 개시되는 양상들과 관련하여 설명되는 방법 또는 알고리즘의 단계들 및/또는 동작들은 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이들의 조합으로 직접 구현될 수 있다. 추가적으로, 몇몇의 양상들에서, 방법 또는 알고리즘의 단계들 또는 동작들은 기계-판독가능 매체, 또는 컴퓨터-판독가능 매체 상의 코드들 또는 명령들의 세트의 적어도 하나의 또는 임의의 조합으로서 존재할 수 있으며, 이는 컴퓨터 프로그램 물건으로 통합될 수 있다. 여기에서 사용되는 용어 제조물은 임의의 적절한 컴퓨터-판독가능 디바이스 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포함하도록 의도된다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
전술한 바와 같이, 발명의 실시를 위한 최선의 형태에서 관련 사항을 기술하였다.
본 발명은 다양한 형태의 메모리 및 이를 포함하는 메모리 시스템에 적용될 수 있다.

Claims (6)

  1. 메모리의 데이터 처리 방법으로서,
    데이터를 프로그래밍할 페이지의 프로그래밍 횟수 정보를 획득하는 단계;
    상기 획득된 프로그래밍 횟수 정보에 기초하여, 상기 페이지 내의 각 메모리 셀에 프로그래밍 될 최하위 레벨 값 및 최상위 레벨 값을 포함하는 구동 전압 값 세트를 결정하는 단계; 및
    상기 결정된 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 사이의 복수의 전압들을 이용하여 상기 페이지 내의 각 메모리 셀에 상기 데이터를 프로그래밍 하는 단계를 포함하되,
    상기 최하위 레벨 값 및 최상위 레벨 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하는 것을 특징으로 하는,
    메모리의 데이터 처리 방법.
  2. 제1 항에 있어서,
    상기 결정하는 단계는,
    '상기 프로그래밍 횟수 정보 (mod '상기 메모리 셀의 구동 전압 레벨 값의 총 개수 - 1')' 값에 기초하여 상기 구동 전압 세트를 결정하는 것을 특징으로 하는,
    메모리의 데이터 처리 방법.
  3. 제1 항에 있어서,
    데이터의 프로그래밍 요청에 대응하여 상기 프로그래밍 횟수 정보는 1 증가되고,
    상기 결정하는 단계는, 제1 레벨 값 및 제2 레벨 값이 각각 할당 된 상기 메모리 셀의 최하위 레벨 값 및 최상위 레벨 값을, 제2 레벨 값 및 제3 레벨 값으로 변경하는 것을 특징으로 하는,
    메모리의 데이터 처리 방법.
  4. 제1 항에 있어서,
    상기 페이지는 상기 최하위 레벨 값 및 최상위 레벨 값 사이의 임계 전압을 갖도록 설정되는 미리 지정된 위치의 파일럿 셀 및 상기 데이터가 프로그래밍 되는 데이터 셀을 포함하되, 상기 파일럿 셀에 프로그래밍 되는 임계 전압 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하고,
    상기 방법은, 상기 페이지에 기록된 데이터의 판독 요청에 대응하여,
    상기 파일럿 셀의 기록된 전압 값을 판독하는 단계;
    상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 판독 전압 값을 설정하는 단계; 및
    상기 설정된 판독 전압 값에 기초하여 상기 데이터 셀의 데이터를 판독하는 단계를 더 포함하는,
    메모리의 데이터 처리 방법.
  5. 제1 항에 있어서,
    상기 메모리 셀은 MLC(Multi Level Cell)이며,
    상기 방법은,
    프로그래밍 요청되는 데이터의 사이즈를 결정하는 단계;
    상기 결정된 데이터의 사이즈가 상기 페이지의 사이즈의 절반 보다 작을 경우, 상기 최하위 레벨 값 및 최상위 레벨 값을 이용한 1비트 정보로 상기 데이터를 각 메모리 셀에 프로그래밍 하는 단계;
    상기 데이터의 오버라이트 요청에 대응하여, 상기 최하위 레벨 값 및 최상위 레벨 값을 시프팅 하는 단계; 및
    상기 시프팅 된 최하위 레벨 값 및 최상위 레벨 값을 이용하여 상기 데이터를 상기 페이지의 각 메모리 셀에 재 프로그래밍 하는 단계를 포함하는,
    메모리의 데이터 처리 방법.
  6. 복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및
    상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며,
    상기 제어 모듈은 데이터를 프로그래밍할 페이지의 프로그래밍 횟수 정보를 획득하고, 상기 획득된 프로그래밍 횟수 정보에 기초하여, 상기 페이지 내의 각 메모리 셀에 프로그래밍 될 최하위 레벨 값 및 최상위 레벨 값을 포함하는 구동 전압 값 세트를 결정하며,
    상기 프로그래밍 모듈은 상기 결정된 구동 전압 값 세트의 최하위 레벨 값 및 최상위 레벨 값 사이의 복수의 전압들을 이용하여 상기 페이지 내의 각 메모리 셀에 상기 데이터를 프로그래밍 하되,
    상기 최하위 레벨 값 및 최상위 레벨 값은 상기 프로그래밍 횟수 정보의 증가에 대응하여 시프팅 하는 것을 특징으로 하는,
    메모리의 시스템.
PCT/KR2014/006098 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법 WO2015005635A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/KR2014/006098 WO2015005635A1 (ko) 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법
US14/903,600 US20160155495A1 (en) 2013-07-08 2014-07-08 Memory system and method for processing data in memory

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361843898P 2013-07-08 2013-07-08
US61/843,898 2013-07-08
PCT/KR2014/006098 WO2015005635A1 (ko) 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법

Publications (1)

Publication Number Publication Date
WO2015005635A1 true WO2015005635A1 (ko) 2015-01-15

Family

ID=56234721

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/006098 WO2015005635A1 (ko) 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법

Country Status (2)

Country Link
US (1) US20160155495A1 (ko)
WO (1) WO2015005635A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372551B2 (en) * 2019-08-01 2022-06-28 Samsung Electronics Co., Ltd. Memory controllers for performing state shaping operation, memory systems including the memory controllers, and methods of operating the same

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102238592B1 (ko) * 2014-08-08 2021-04-09 삼성전자주식회사 비휘발성 메모리 장치의 디폴트 독출 전압 설정 방법 및 비휘발성 메모리 장치의 데이터 독출 방법
JP2017059281A (ja) * 2015-09-15 2017-03-23 ソニー株式会社 半導体記憶装置および半導体記憶装置におけるデータ消去方法
US9672928B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Method and apparatus for estimating read levels of nonvolatile memory and for programming pilot signals used for such estimation
US10360973B2 (en) 2016-12-23 2019-07-23 Western Digital Technologies, Inc. Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity
TWI658405B (zh) * 2017-03-17 2019-05-01 合肥兆芯電子有限公司 資料程式化方法、記憶體儲存裝置及記憶體控制電路單元
KR20200136173A (ko) * 2019-05-27 2020-12-07 에스케이하이닉스 주식회사 메모리 장치 및 그 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110202710A1 (en) * 2010-02-17 2011-08-18 Qun Zhao Protection against data corruption for multi-level memory cell (mlc) flash memory
US8135913B1 (en) * 2009-07-22 2012-03-13 Marvell International Ltd. Mixed multi-level cell and single level cell storage device
US20120239976A1 (en) * 2010-07-09 2012-09-20 Stec, Inc. Apparatus and method for determining a read level of a flash memory after an inactive period of time
US20130036253A1 (en) * 2011-08-03 2013-02-07 Micron Technology, Inc. Wear leveling for a memory device
US20130117600A1 (en) * 2009-06-23 2013-05-09 International Business Machines Corporation Memory management in a non-volatile solid state memory device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117600A1 (en) * 2009-06-23 2013-05-09 International Business Machines Corporation Memory management in a non-volatile solid state memory device
US8135913B1 (en) * 2009-07-22 2012-03-13 Marvell International Ltd. Mixed multi-level cell and single level cell storage device
US20110202710A1 (en) * 2010-02-17 2011-08-18 Qun Zhao Protection against data corruption for multi-level memory cell (mlc) flash memory
US20120239976A1 (en) * 2010-07-09 2012-09-20 Stec, Inc. Apparatus and method for determining a read level of a flash memory after an inactive period of time
US20130036253A1 (en) * 2011-08-03 2013-02-07 Micron Technology, Inc. Wear leveling for a memory device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372551B2 (en) * 2019-08-01 2022-06-28 Samsung Electronics Co., Ltd. Memory controllers for performing state shaping operation, memory systems including the memory controllers, and methods of operating the same

Also Published As

Publication number Publication date
US20160155495A1 (en) 2016-06-02

Similar Documents

Publication Publication Date Title
WO2015005635A1 (ko) 메모리 시스템 및 메모리의 데이터 처리 방법
WO2015005634A1 (ko) 메모리 시스템 및 이의 제어 방법
US10275165B2 (en) Memory controller
US5930815A (en) Moving sequential sectors within a block of information in a flash memory mass storage architecture
TWI474324B (zh) 平均讀寫記憶元件的方法及記憶體系統
US5845313A (en) Direct logical block addressing flash memory mass storage architecture
US6223308B1 (en) Identification and verification of a sector within a block of mass STO rage flash memory
WO2009139574A2 (en) Memory device and method of managing memory data error
US8078923B2 (en) Semiconductor memory device with error correction
WO2010076966A2 (ko) 메모리 컨트롤러 및 메모리 관리 방법
US10580485B2 (en) System and method for adjusting read levels in a storage device based on bias functions
WO2015005636A1 (ko) 메모리 시스템 및 메모리의 데이터 처리 방법
CN112506438B (zh) 一种映射表管理方法及固态硬盘
US20110145485A1 (en) Method for managing address mapping table and a memory device using the method
KR20130125303A (ko) 제어 장치, 기억 장치, 데이터 기입 방법
JP2008276832A (ja) 半導体記憶装置およびその駆動方法
JP2020113187A (ja) メモリシステム
JP5494086B2 (ja) 不揮発性記憶装置および不揮発性メモリコントローラ
CN113467713A (zh) 数据分离方法及固态硬盘
US20210034541A1 (en) Memory system, memory control device, and memory control method
TWI486956B (zh) 多階儲存單元非揮發性記憶體之高效率位元轉換結構以及其方法
US7606993B2 (en) Flash memory controller, memory control circuit, flash memory system, and method for controlling data exchange between host computer and flash memory
JP2024043775A (ja) メモリシステム
KR101604949B1 (ko) 메모리 제어 방법 및 메모리 제어 장치
JP4068594B2 (ja) フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14822782

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 14903600

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 14822782

Country of ref document: EP

Kind code of ref document: A1