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

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

Info

Publication number
WO2015005636A1
WO2015005636A1 PCT/KR2014/006099 KR2014006099W WO2015005636A1 WO 2015005636 A1 WO2015005636 A1 WO 2015005636A1 KR 2014006099 W KR2014006099 W KR 2014006099W WO 2015005636 A1 WO2015005636 A1 WO 2015005636A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
cell
pilot
programming
Prior art date
Application number
PCT/KR2014/006099
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 US14/903,601 priority Critical patent/US20160148700A1/en
Priority to PCT/KR2014/006099 priority patent/WO2015005636A1/ko
Publication of WO2015005636A1 publication Critical patent/WO2015005636A1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • 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
    • 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/12Programming voltage switching 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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 nonvolatile memory may be permanent or reprogrammable, depending on memory fabrication techniques.
  • 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 in the block must be rewritten first after erasing the entire block (where NAND flash memory can be written and read). 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.
  • nonvolatile processors may use nonvolatile memory to replace conventional CMOS registers.
  • NVM non-volatile processor
  • new conditions such as increased lifetime of processor hardware to implement the above-described compiler optimizations. ) May be present.
  • An object of the present invention is to efficiently use a memory system.
  • the compilation method the step of detecting data to be assigned to the register from the source code; Generating correlation information indicating a correlation between data stored in each of one or more registers and the data to be allocated; Determining a target register to which the data to be allocated is to be allocated among the registers based on the correlation information; And allocating the data to be allocated to the determined target register.
  • the determining may include determining the least used register as a target register when a target register having a correlation greater than or equal to a predetermined correlation with the data to be allocated is not determined.
  • the compiling method may further include determining the least used register as a target register based at least in part on the number of uses of the register recorded by the wear leveling module. .
  • the allocating may include allocating the data to be allocated to the target register without rewriting when the correlation between the data to be allocated and the data stored in the target register is greater than or equal to a predetermined correlation.
  • the determining may include determining, as a target register, a register currently storing data having the highest correlation with the data to be allocated among the registers based on the correlation information.
  • the generating of the correlation information may further include reading values of data currently stored in each of the one or more registers on the virtual processor by configuring a virtual processor; Comparing values of the read data with values of data detected from the source code; And generating the correlation information based on the comparison.
  • the allocating may include allocating two or more pieces of data having a correlation higher than a predetermined correlation to the same register.
  • the computer-readable medium stores the following instructions for converting the source code into machine language, the instructions, from the source code to the data to be assigned to the register Instructions for detecting; Instructions for generating correlation information indicating a correlation between data stored in each of one or more registers and the data to be allocated; Determining a target register to which the data to be allocated is to be allocated among the registers based on the correlation information; And an instruction for allocating the data to be allocated to the determined target register.
  • a processor may include one or more registers to which data detected from source code may be assigned; And a controller for controlling the processor, wherein the controller generates correlation information indicating correlation between data stored in each of one or more registers and the data to be allocated, and among the registers based on the correlation information. And determining a target register to allocate the data to be allocated, and assigning the data to be allocated to the determined target register.
  • a data processing method of a memory the step of programming the data by applying a predetermined voltage of the nominal (nominal) value to the pilot cell of the 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, the pilot cell is programming of the memory A cell of a predetermined location, each corresponding to at least one nominal value used in the; 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.
  • FIG. 1 is a diagram schematically illustrating a memory system according to an aspect of the present invention.
  • FIG. 2 schematically illustrates a memory system in accordance with an aspect of the present invention.
  • FIG. 3 illustrates a method of file auto save over time in a memory system, in accordance with an embodiment of the invention.
  • FIG. 4 illustrates a flow diagram for processing data upon file auto save in a memory system, in accordance with an aspect of the present invention.
  • Figure 5 illustrates the process by which data is allocated from a source code to a target system via a compilation system in accordance with an embodiment of the present invention.
  • FIG. 6 schematically illustrates a target system according to an embodiment of the present invention.
  • FIG. 7 illustrates an example in which an existing compiler allocates data to a register.
  • FIG. 8 illustrates an example in which a compiler allocates data to a register according to an embodiment of the present invention.
  • FIG. 9 is a flowchart illustrating a method of allocating data to a register according to an embodiment of the present invention.
  • 10 illustratively shows a data block including pilot cells in accordance with an aspect of the present invention.
  • 11 illustratively illustrates a change in placement of pilot cells according to a programming count and according to a page in accordance with an aspect of the present invention.
  • FIG. 14 illustrates an exemplary voltage readout mechanism using pilot cells in accordance with an aspect of the present invention.
  • 15 illustratively illustrates a voltage readout technique of a data cell using a switch in accordance with an aspect of the present invention.
  • 16 illustratively illustrates a data cell read technique using a switch in accordance with an aspect of the present invention.
  • 17 exemplarily shows a change in the threshold voltage after data programming.
  • FIG. 18 is a flowchart illustrating a data processing method of a memory according to an aspect of the present invention.
  • FIG. 19 is a flowchart illustrating a data processing method of a memory according to another aspect of the present invention.
  • FIG. 1 is a diagram schematically illustrating a memory system 100 according to an aspect of the present invention.
  • flash memory Although described herein by way of example for flash memory, other memory devices (eg, volatile memory) other than such flash memory (ie, nonvolatile memory) may also be included within the scope of the present invention.
  • the memory system 100 in FIG. 1 may be largely composed of an application 101 (or a host), a file system 102, and an SSD 103.
  • the components in FIG. 1 are merely exemplary, and some of the components in FIG. 1 may be omitted, or components other than the components in FIG. 1 may be included in the memory system 100.
  • the SSD 103 in FIG. 1 may be replaced with a memory and a memory controller capable of performing similar functions.
  • applications 1 through N 101 may include any device or program that requires data storage to a flash memory device, such as an SSD.
  • file system 102 may be referred to as a host or application area with application 101. This file system 102 can access any data on the SSD via a logical sector address.
  • the flash translation layer 106 of the SSD controller 104 may map the logical sector address and the physical address by converting the logical sector address into a physical address.
  • file system 102 may refer to a virtual sector implemented by flash translation layer 106.
  • the file system 102 herein may be used interchangeably with the application 201.
  • Flash translation layer 106 may refer to system software developed for this purpose.
  • the flash translation layer 106 includes a mapping algorithm for converting a logical address into a physical address, an algorithm for determining a data file size, an algorithm for performing wear leveling, an algorithm for controlling a voltage to be applied to the flash memory 105, and the like. It may include.
  • the flash translation layer 106 of the SSD controller 104 includes an address allocator 108 for mapping logical and physical addresses, and a wear leveler for performing wear leveling. leveler 110 and garbage collector 109, a data file size analyzer 111 for analyzing and comparing the size of the data file, and a voltage controller for controlling the voltage to be applied to the flash memory 105 116 and the like. Additionally, the components of the flash translation layer 106 described above are illustrative only and additional components may be included in the flash translation layer 106 or some of the components described above may be omitted.
  • the wear leveler 110 may perform wear leveling in units of blocks, pages, and / or bits in order to increase the lifespan of the flash memory 105.
  • the garbage collector 109 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. Thus, data that is inserted into the appropriate physical block location, page location, and / or bit location may be allocated to implement wear leveling.
  • the address allocator 108 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 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.
  • the address allocator 108 may implement allocation of logical addresses and physical addresses in blocks, pages, or bits (cells) of memory.
  • the voltage controller 116 may apply a driving voltage level to the memory cell at, for example, a value higher than or equal to the previous in-cell write mode to represent one or more bits. The application of this voltage may be performed based on the mapping table generated by the address allocator 108. The voltage controller 116 may also determine the drive 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 111 may determine the size of an incoming data file. Through this determination, the data file size analyzer 111 may determine whether the incoming data file is smaller than the size of the divided subpage, for example.
  • SSD controller 104 may include a programming module (write and delete) and a read module for writing, erasing, and reading data into flash memory 105.
  • the SSD controller 104 may control overall operations of the SSD.
  • the SSD controller 104 may receive a logical address from the application 101 or the file system 102.
  • the flash translation layer 106 of the SSD controller 104 may convert the input logical address into a physical address.
  • the translated physical address may be transferred to the memory technology device layer 107 or the flash memory 105.
  • the memory technology device layer 107 may refer to an interface layer for supporting various flash memories or RAMs. In addition, such memory technology device layer 107 may be an optional configuration.
  • the flash memory 105 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 105 is composed of a plurality of memory blocks.
  • Each memory block 112 is composed of a plurality of pages 113.
  • Each page is composed of a plurality of memory cells or data cells 114 sharing one word line.
  • single bit data, multi bit data, or triple bit dadta may be stored in one memory cell or data cell 114.
  • 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).
  • a memory cell in which triple bit data may be stored is referred to as a triple level cell (TLC).
  • FIG. 2 schematically illustrates a memory system 200 in accordance with an aspect of the present invention.
  • the memory system 200 may include a memory controller 201 and a flash memory 202.
  • the memory controller 201 may control overall operations of the flash memory 202.
  • the memory controller 201 includes a control module 203 for performing wear leveling, bit allocation, voltage control and page division, a programming module 204 for performing write and erase operations, and a reading module for performing read operations. 205 and a conversion module 206 for integrating data to perform conversion to another address.
  • control module 203 when receiving an operation request for the flash memory 202 from a host, an application, or the like, wear leveling, based on metadata stored in the meta area, etc. Bit allocation, voltage control and page division can be performed.
  • control module 203 may control the operations of the programming module 204 and the reading module 205.
  • the control module 203 is based on the number of data write requests for a memory cell, in-cell write mode or in-page write mode. Can be determined.
  • the control module 203 may determine a driving voltage level value to be applied to represent one or more bits in the memory cell based on the determined write mode.
  • the control module 203 may generate a mapping table or the like in which one or more bits are mapped from the low level among the state levels of the memory cell to the same or higher level according to the write mode.
  • the generated mapping table may be stored in the flash memory 202 (eg, meta area).
  • 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 203 may change (eg, shift (or rotate, reversing) bit positions within the page. And / or scrambling or changing (eg, inversion) of data values written to bit positions in the page.
  • control module 203 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 203 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 data, etc. When the type of data to be recorded is determined, the control module 203 based on a predetermined algorithm, according to the type of the above-described micro wear leveling, based on a predetermined algorithm.
  • One of the techniques (shifting, reversing, scrambling and inversion), determining whether to split subpages, determining the number of subpages to be split, or one according to the state levels of a memory cell
  • the allocation scheme of the above bits can be determined.
  • control module 203 may be implemented by firmware.
  • the wear control module 203 may be included in a flash translation layer (FTL).
  • the flash translation layer is system software that manages the erase / write / read operation in order to use the flash memory 202 as a hard disk as described above.
  • the flash translation layer can perform voltage control, mapping information management, bad block management, data retention management in the event of unexpected power failure, and wear management.
  • the programming module 204 may write the data bits to be written in one page under the control of the control module 201. More specifically, the programming module 204 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 201. In addition, the programming module 204 may sequentially write data to the pages 208 that make up block 207. In addition, the programming module 204 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, when all subpages in the page are used, the programming module 204 may perform an erase operation on the memory cell in response to a subsequent write request.
  • programming module 204 can write data to or delete data from the user area of flash memory 202.
  • the programming module 204 reads the meta data stored in the meta area 206 of the flash memory 202 (eg, in-cell write information, erase count or write mode count, etc.). You can change it.
  • the programming module 204 may include the difference data corresponding to the difference generated by the comparison of the data of the previous file and the data of the current file in a file auto save function to be described later. 208 may be sequentially assigned to the data of the original file. In addition, the page 208 may include a spare area 209, and the programming module 204 may allocate the difference data to the spare area 209.
  • the programming module 204 compares the data of the previous file with the data of the current file for file auto save, and when the data corresponding to the difference of the data is no longer found, In order to generate the corresponding data, the difference data corresponding to the difference may be inserted and / or added to the data of the original file, and the data of the final file generated from the data of the difference with the data of the original file may be added to the new address. Can be assigned to a specified new page 208.
  • the reading module 205 may read data written in the user area of the flash memory 202.
  • the reading module 205 may read data recorded in the user area based on the mapping information between the logical address and the physical address with reference to the data stored in the meta area. That is, the read module 205 refers to the write mode count, the write mode information, the voltage state level of the memory cell, the mapping information, and / or the count information stored in the meta area, and converts the information read from the physical address into an appropriate logical address. Can be interpreted
  • the meta area may store meta data (or control data) for managing the flash memory 202.
  • metadata may include recording mode information, recording mode count information, a mapping table, and the like.
  • the meta area may include at least one physical block composed of a plurality of physical pages having a plurality of memory cells.
  • the meta data may include difference data, a recording mode information, a recording mode count information, a mapping table, and the like, indicating difference between a data of an original file generated by a file auto save function and a data of a current file. It may include.
  • the meta area may be integrated into the user area.
  • metadata such as recording mode information and / or count information may be stored in a page or block of the user area.
  • the metadata may be stored in a header (not shown) in the page or block of the user area.
  • the user area may mean a data storage of a general flash memory.
  • the user area may include at least one physical block composed of a plurality of physical pages having a plurality of cells.
  • page 113 in block 112 in flash memory 105 may be comprised of a plurality of data cells, in which data may be sequentially stored in the plurality of cells. For example, if a page is 4KB in size, and the current source file is 2KB in size, data is sequentially loaded from the next 2KB data cell in the physical order of the memory cells in response to subsequent storage of the same data. Can be added.
  • one page of a user area of flash memory 202 may include a plurality of memory cells.
  • Each of these memory cells may represent three or more different states according to driving voltage level values. For example, if the memory cell is an MLC, the memory cell may represent four different states. In addition, when the memory cell is TLC, the memory cell can represent eight different states.
  • the reading module 205 may read data stored in the flash memory.
  • the reading module 205 reads the difference data by comparing the data of the current file with the data of the previous file sequentially assigned to the page 208 at the time of file auto save, which will be described later. It may be.
  • the programming module 204 may modify the data of the file modified by inserting and / or adding the difference data into the original data in the process of generating the data of the final file for file auto save.
  • the reading module 205 corresponds to the difference between the data of the original file stored in the page 208 as well as the data of the previous file and the data of the current file sequentially stored in the page 208. The difference data can be read.
  • the conversion module 206 may generate data of the modified file by the difference data corresponding to the difference between the data of the previous file and the data of the current file and the data of the original file.
  • the data of the last file can be converted into a new page 208 addressed.
  • the conversion module 206 may determine and / or determine that the difference data according to the comparison of the data of the previous file and the data of the current file no longer occurs, and thus to the final file in the flash memory.
  • a plurality of sequentially stored difference data can be added and / or inserted into original file data, and converted to a new address in flash memory (for example, as shown in FIG. 3). Likewise, from 0x2001 to 0x2002).
  • the conversion module 206 may perform a conversion operation as shown in FIG. 3 in response to a file close request. For example, upon forced termination of the application 101 by the user, the application 101 may request to close the file, and the conversion module 206 automatically performs a conversion operation as shown in FIG. 3 in response thereto. Can be done. This conversion operation may be automatically performed according to not only the file close request but also a preset number of storages (eg, 10 storages) and a preset time (eg, 30 minutes).
  • a preset number of storages eg, 10 storages
  • a preset time eg, 30 minutes
  • FIG. 3 illustrates a method of file auto save over time in a memory system, in accordance with an embodiment of the invention.
  • the memory system according to the present invention shown in FIG. 3 has a difference indicating a difference generated by comparing data of an original file and / or data of a previous file with data of a current file according to file auto save. It presents a technical feature that can store and / or add data sequentially from the next cell of data in the original file that is physically stored within the same page.
  • the file auto save method in the existing memory system may be configured to allow the user of the application 101 to store data of the original file during the first period according to a predetermined autosave period. It includes a technical feature to modify, allocate, and / or store the modified data by converting the entire changed data into a page of a new address in flash memory. Thereafter, the second to nth cycles also have difficulty in managing memory efficiently by adding and / or changing data, which are different from previous data, to a page designated by a new address through the same method. As a result, the wear level of the nonvolatile memory system (eg, flash memory) is increased, thereby shortening the lifespan of the memory system. Furthermore, in the case of the existing technology, there may also be inconveniences in that the modified data must be converted to the proper position of the new page every time the data is modified.
  • the nonvolatile memory system eg, flash memory
  • FIG. 3 shows that the original data of the user of the application 101 is compared with previous data by the modification and / or change until the modification and / or change is completed.
  • the difference data can be stored within the same page specified at the same address where the data of the original file is assigned and / or stored. Accordingly, each difference data can be edited and converted into final file data and assigned to a new page designated with a new address.
  • data of an original file may be stored and / or allocated to a page designated by address 0x2001 in a flash memory.
  • a predetermined period e.g., 5 seconds
  • the user of the application 101 can modify the data of the original file, thereby saving the modified data in the flash memory. Additional work may be required.
  • the memory system of FIG. 3 if the user modifies the data of the original file within a first period, By comparing the data and the data of the file modified in the first period, only the first difference data corresponding to the difference of the data are sequentially assigned to the same page of the same address of 0x2001 where the data of the original file is stored. And / or stored.
  • the location in the same page where the data is additionally stored may be the location of spare area 209 that is pre-allocated on the page.
  • the memory system determines that the data of the original file file and the first difference data and the file modified within the second period are correct. By comparing the data, only the second difference data corresponding to the difference of the data may be sequentially allocated and / or stored on the same page of the same address of 0x2001 where the data of the original file and the first difference data are stored. .
  • the third difference data and the fourth difference data shown in FIG. 3 are 20 seconds corresponding to four periods
  • the data of the original file and the first difference data are stored on the page designated by the address of 0x2001.
  • the fourth difference data may be sequentially allocated and / or stored on the same page.
  • the memory system When the memory system no longer detects difference data corresponding to a difference between the data of the previous file and the data of the current file according to a file automatic storage cycle, the memory system ends the comparison detection operation with the data of the previous file. And inserting and / or converting the first to fourth difference data into the data of the original file so that the data of the original file can match the data of the last file that has been modified and / or edited. You can perform the operation.
  • the data of the converted final file may be stored in a new page corresponding to the new address 0x2002.
  • the memory system may terminate the comparison detection operation with the data of the previous file when the user or the application 101 is terminated after a predetermined period has elapsed, after which the data of the original file is modified. And / or insert and / or convert the difference data generated during the period into the data of the original file so as to match the data of the edited final file. At the same time or subsequently, the data of the converted final file may be stored in a new page corresponding to a new address.
  • each page 113 in block 112 in the flash memory 105 may be composed of a plurality of subpages. For example, when the size of the page 113 is 4 KB, four subpages in units of 1 KB may be formed in one page 113. Therefore, when a plurality of subpages exists, additional data newly stored may be sequentially stored according to the number of subpages.
  • FIG. 3 The technical features shown in FIG. 3 will be described in detail later along with the process of processing data during file auto save shown in FIG. 4.
  • FIG. 4 illustrates a flow diagram for processing data upon file auto save in a memory system, in accordance with an aspect of the present invention.
  • the memory system 200 may perform an operation of determining the changed data portion by comparing the data file of the previous version with the data file of the current version in response to the request for automatically saving the data file by the application 101 (S110). .
  • the file is flash memory 202 according to a predetermined time by a file auto save function provided by the memory system 200.
  • the data of the modified and / or changed part may be stored in the C).
  • the memory system 200 may compare the data of the previous version file and the data of the current version file, and may be modified and / or changed by the user to correspond to the data difference between the data of the previous version file and the current version file.
  • the data portion may be determined and determined (S120).
  • the data portion corresponding to the difference may be periodically determined and determined according to a predetermined time for file auto save, and file auto save along the cycle. There may be a plurality of data parts corresponding to the difference.
  • the memory system 200 may determine an area of an in-page 208 and an in-page in which data of a previous version file is stored after determining the changed data (S110). page) It is possible to identify the current storage area of the data to be stored later (S120).
  • the memory system 200 allocates the data corresponding to the difference in order to store the difference data determined and / or determined later in the same in-page area for automatic file storage. Identify the current storage area to be created.
  • the memory system 200 sequentially allocates a data portion corresponding to a difference between the data of the previous version file and the data of the current version file to the current storage area among the in-page areas. Or it may be stored (S130).
  • the data of the original file corresponding to the data of the previous version file is allocated to one page designated as an address of 0x2001, and the data of the previous version file is changed according to the change of the automatic storage time for the automatic file saving.
  • the data portion corresponding to the data difference between the data and the current version file is sequentially stored in the same page addressed to 0x2001 in flash memory.
  • the memory system 200 may form first difference data to fourth difference data when, for example, 4 cycles have elapsed according to a predetermined automatic storage time.
  • the difference data may be sequentially stored in the same page in the flash memory. That is, the memory system 200 sequentially stores the data corresponding to the difference corrected by comparing with the previous data without inserting the difference data into the original data and storing the difference data in the new data at every cycle of the automatic storage time. Can be.
  • the memory system 200 may determine and / or determine that the difference data according to the comparison of the data of the previous file and the data of the current file no longer occurs.
  • the memory system 200 may receive a file termination request from an application.
  • the memory system 200 may determine that a predetermined time period has elapsed or that a predetermined number of times of automatic storage have been performed. Accordingly, in order to store the data corresponding to the final file in the flash memory, the memory system 200 allocates a new address in the flash memory and inserts the plurality of sequentially stored difference data into an appropriate location of the original file data.
  • the file data can be converted into the final version of the file (for example, from 0x2001 to 0x2002 as shown in FIG. 3) (S140).
  • the memory system 200 may form difference data periodically according to a predetermined automatic storage time (eg, 5 seconds) of the file automatic storage function, and thus, the memory system 200 A plurality of difference data can be generated.
  • a predetermined automatic storage time eg, 5 seconds
  • the file auto save function in the existing flash memory is modified and / or inserted into the previous data when the data is modified and / or edited by the user using the application 101 due to the characteristics of the flash memory.
  • edit data cannot be stored in the same page in flash memory, so that whenever the file autosave function is executed, edit data added and / or modified to previous data is assigned to a new page address in flash memory. And stored.
  • difference data corresponding to a difference between the previous file data and the current file data may be sequentially stored in a page allocated to one address.
  • wear leveling in memory may be implemented by editing the difference data and / or converting the difference data into a new address. Accordingly, the life of the flash memory can be increased by efficiently managing the flash memory.
  • Figure 5 illustrates the process by which data is allocated from a source code to a target system via a compilation system in accordance with an embodiment of the present invention.
  • compilation system 501 may communicate with a file and target system 508 that generates source code 502.
  • the compilation system 501 may include a compiler 503, an assembler 504, a linker 505, a debugger 506, and libraries 507.
  • the components shown in FIG. 5 are merely exemplary, and additional components may exist or some of the components shown in FIG. 5 may be omitted.
  • Compiling system 501 may refer to a set of programming tools for generating a program suitable for target system 508. Compilation performed in compilation system 501 may include online compilation and / or offline compilation.
  • Such a compilation system 501 may be referred to as a tool chain. That is, the output of each of the components of the compilation system 501 can be used as an input for another component.
  • Compiling system 501 may also be replaced with compiler 503.
  • compiler 503 may refer to a higher concept collectively referred to as assembler 504, linker 505, debugger 506, and libraries 507.
  • target system 508 may comprise, for example, a CPU / processor.
  • Target system 508 may refer to a system for actually executing application software.
  • source code 502 may refer to codes composed of various languages, including, for example, C code. This may be generated by a host system (not shown) that develops source code 502 application software.
  • Compiler 503, assembler 504, and linker 505 may convert source code into a program executable in target system 508.
  • An object file may be generated through the compiler 503 and the assembler 504.
  • the linker 505 may convert such an object file into a program file.
  • Interface data associated with the target system 508 stored in the libraries 507 may be considered in this linker's translation process.
  • the libraries 507 may include an interface to the target system 508.
  • the debugger 506 may perform debugging on the generated program file.
  • Compiling system 501 may convert the source code into machine code suitable for the target system.
  • the compiling system 501 detects data to be assigned to a register of the target access team 508 from the source code and indicates correlation between the data stored in each of the one or more registers and the data to be assigned. And a target register to which the data to be allocated is to be allocated among the registers based on the correlation information. Compiling system 501 may also allocate the data to be allocated to the determined target register.
  • FIG. 6 schematically illustrates a target system 600 according to one embodiment of the invention.
  • the CPU and the processor may be used interchangeably.
  • a processor 601 may include a controller 602, a register (s) 603, a multiplier 604, an arithmetic and logic unit (ALU) 605, And a shifter 606.
  • the components shown in FIG. 6 are merely exemplary and additional components may be present or some of the components shown in FIG. 6 may be omitted.
  • the processor 601 may include a volatile processor and / or a nonvolatile processor.
  • the controller 602 may control the overall operation of the processor 601.
  • the controller 602 may receive compiled machine code (ie, compiled data) from a compilation system.
  • the controller 602 may compile the source code into machine code.
  • the controller 602 may perform operations of retrieving registers in which data is currently stored and allocating data to the retrieved registers.
  • controller 602 may include a wear level detection module and an allocation module.
  • operations of the controller 602 which will be described later may be implemented by the compiling system 501 or the compiler 503 of FIG. 5.
  • the wear level detection module may record the number of uses of each register 603 of the processor 601 and perform a wear leveling operation.
  • the register 603 of the nonvolatile processor 601 may have a limit on the number of overwrites.
  • the controller 602 needs to ensure that only certain registers (or specific memory cells within certain registers) of the processor 601 are not used repeatedly. .
  • the wear level detection module may perform a wear leveling operation such that all registers are used evenly.
  • the wear level detection module may record and manage how many times a rewrite operation is performed individually for every register of the processor 601.
  • the wear level detection module may refer to the number of rewrite operations of all registers of the processor 601 so that the corresponding data may be used evenly to allow all registers to be used evenly. You can also convert the mapping table of logical and physical addresses to be written to the appropriate register.
  • the controller 602 can detect, from source code, data to be assigned to a register in accordance with one embodiment of the present invention.
  • the controller 602 may generate correlation information indicating a correlation between data stored in each of the one or more registers and data to be allocated.
  • the correlation information may indicate the similarity between the data to be allocated and the data stored in the register. Such similarity may mean, for example, the similarity in bits of both data.
  • the controller 602 can read the values of data currently stored in each of one or more registers on the virtual processor by configuring a virtual processor. In this case, the controller 602 may generate the correlation information by comparing the values of the read data with the values of the data detected from the source code.
  • controller 602 may determine a target register to which data is to be allocated among the registers 603 based on the correlation information. Next, the controller 602 may allocate the data to be allocated to the determined target register.
  • the controller 602 may determine the least used register as the target register when a target register having a correlation greater than or equal to a predetermined correlation is determined.
  • the operation of such a controller may be implemented using the above-described wear leveling module.
  • the controller 602 may retrieve, based on the correlation information, a register in which data having the highest correlation with data to be allocated to the register is stored from the source code. That is, the controller 602 may determine, as a target register, a register currently storing data having the highest correlation with the data to be allocated among the registers based on the correlation information.
  • the controller 602 assigns the allocation to the retrieved register without rewriting. Allocate data to be done.
  • the registers retrieved by the above-described operations may include an invalid page (obsolete page, garbage page) in which old versions of data are stored, or a valid page in which current versions of data are stored. .
  • the allocation module of the controller 602 may allocate data generated by the compiler to the register 603.
  • the allocation module may allocate data to the retrieved register (ie, target register) according to an embodiment of the present invention.
  • the compiler allocates data to the register 603, according to an embodiment of the present invention to search for a register currently stored data that is highly correlated with the data to be allocated, to allocate data to the register (ie, target register) Can be.
  • the corresponding data may be allocated to the corresponding register without rewriting, thereby increasing the life of the register.
  • the data to be allocated is allocated and recorded and stored in a register in which data having a predetermined level or higher correlation with the data to be allocated is stored, since the amount of rewriting of data can be reduced, a wear leveling effect can be achieved.
  • the controller 602 may allocate the data to the least used register when there is no data stored in a register having a correlation greater than or equal to a predetermined correlation. In addition, the controller 602 may allocate data to the least used register based at least in part on the number of uses of the register recorded by the wear leveling module. Therefore, the usage amount of the register can be set so as not to bias the specific register.
  • the multiplier 604, ALU 605, and shifter 606 may perform processes related to arithmetic, math, logic, and the like.
  • multiplier 604 may obtain values from two registers and multiply them and store the result in another register.
  • the ALU 605 may perform operations such as addition, subtraction, absolute value operations, logical operations (AND, OR, XOR and NOT), transformation, and the like.
  • the shifter 606 may perform binary operations such as shifting, rotating, and the like.
  • FIG. 7 illustrates an example in which an existing compiler allocates data to a register.
  • the value of the register may change when the code runs on the processor.
  • the code in the example shown in FIG. 7 relates to simple mathematics, where calculation 1 calculates 1 + (-1) and stores the result, and calculation 2 calculates 1-(-1) and stores the result.
  • each integer (1, -1) variable, m and n is mapped to a register.
  • the data are mapped to randomly selected registers.
  • m is mapped to register R0 and n is mapped to register R1, respectively.
  • the registers herein may be general purpose registers.
  • R0 and R1 Given data (constant) 1 ($ 0001) and -1 ($ FFFF) are assigned to R0 and R1, respectively. This assignment is performed by the move operation in FIG. Then, an addition operation of R0 and R1 may be performed and the result may be recorded in the accumulator (or ALU) A. Accumulator A may also be preallocated to a specific area of the register.
  • register R0 may be updated sequentially from $ 2352 to $ 0001, and to the $ FFFF value.
  • register R1 can be updated sequentially from $ 0111 to $ FFFF and $ 0001.
  • the compiler is characterized in that it selects in particular the register to which the variables m and n are mapped. According to one embodiment of the invention, the compiler may select a register to map the variable.
  • m is mapped to R1 which stores the closest (high correlation) value ($ 0111) of $ 0001, which is a value to be allocated among candidate registers.
  • n is mapped to R2 in which a value ($ FFF3) closest to $ FFFF, which is a value to be allocated, is stored.
  • m and n are mapped to R 0 and R 1, respectively, and updated with completely different values.
  • the compiler in the example of FIG. 8 checks the previous value of each register and proposes a register to be mapped to map m and R2 and perform an optimization process of mapping n and R1. Can be. Therefore, in the above-described process, each register may not be updated (that is, overwritten). Therefore, the register of the nonvolatile processor may not be worn when compared with the existing technique of FIG. 6.
  • the above-described data and register mappings are exemplary only, and various types of data may be mapped to various types of registers.
  • mapping scheme illustrated in FIG. 8 provides a minimum register without increasing the computational complexity of the processor through, for example, efficient register mapping that maximizes the lifetime of a nonvolatile processor (nonvolatile register). You can allow updates.
  • the same result can be obtained by updating only three values.
  • the number of updates can be reduced, thereby increasing the life of the processor.
  • the need for the move operation in calculation 2 can be eliminated, and the compiler only needs to save two operation cycles as a result.
  • the compiler may detect correlations between data to be assigned to registers. For example, as shown in FIG. 8, m in calculation 1 and n in calculation 2 may be correlated data. This correlation can be detected or determined by the compiler (or controller). In the step of allocating the data to a register, the compiler may allocate two or more data among the data having correlations above a predetermined correlation to the same register. For example, m in calculation 1 and n in calculation 2 have the same data of 1. Thus, it can be equally assigned to register R1. Correlation above a predetermined correlation may mean, for example, that both data are the same.
  • the above-described data and registers are merely examples and various data may be assigned to various registers.
  • the correlation described above is merely an example, and there may be various types of correlations for efficient compilation.
  • the correlation may not only mean a case where the data are the same, but also mean a case where a predetermined number or more bits are the same in the data unit.
  • the compiler can assign data to the least used register for wear leveling.
  • the compiler may then search for the least used register based at least in part on the number of uses of the memory recorded by the wear leveling tool.
  • FIG. 9 is a flowchart illustrating a method of allocating data to a register according to an embodiment of the present invention.
  • each step of the flowchart shown in FIG. 9 is not essential, and some steps may be omitted or added as necessary.
  • registers constituting the nonvolatile processor may be formed in the form of a nonvolatile memory such as an SSD.
  • a nonvolatile memory such as an SSD.
  • a problem in the lifetime of the register is caused by proper wear leveling due to the characteristics of the SSD.
  • the compiler may detect data to be allocated to registers located in the processor or the CPU from the source code (S210). For example, as described with reference to FIG. 8, data 1 may be 1 to be assigned to m, -1 to be assigned to n, and the like in calculation 1.
  • data 1 may be 1 to be assigned to m, -1 to be assigned to n, and the like in calculation 1.
  • the above-described data is only an example, and the present invention may include all kinds of data that can be allocated as registers by the compiler.
  • a general compiler compiles and allocates data to a register.
  • a compiler may first detect data to be allocated to a register from source code so that the compiler may perform efficient compilation. have.
  • the compiler may generate correlation information indicating a correlation between data stored in each of one or more registers and the data to be allocated (S220). More specifically, such correlation information, for example, reads values of data currently stored in each of one or more registers on the virtual processor by configuring a virtual processor, and detects values of the read data from the source code. Can be generated by comparing the values of the generated data. That is, by the above-described method, it may be determined what value is written to a specific register through a previous operation on the source code.
  • the compiler may determine a target register to allocate the data to be allocated among the registers based on the correlation information (S230).
  • the compiler may register R1 (ie, a target register) in which $ 0111, which is data having the highest correlation with $ 0001, which is data to be allocated in calculation 1, is stored. You can search for This correlation can be determined by comparing the number of bits to match by comparing the data to be allocated with the data stored in the register. The more bits the data to be allocated and the data stored in the register write, the higher the correlation between the data to be allocated and the data stored in the register.
  • the compiler may allocate the data to be allocated to the determined target register (S240).
  • the compiler may store data in R1 (that is, a target register) in which data $ 0111 having the highest correlation with data $ 0001 to be allocated is stored. Can be assigned.
  • R1 that is, a target register
  • the compiler may allocate the data to be allocated to the target register without rewriting when the correlation between the data to be allocated and the data stored in the target register is greater than or equal to a predetermined correlation. That is, when a register in which the same value as the data to be allocated is stored is found, the compiler may allocate the data to be allocated to the found register without rewriting. This data allocation allows you to allocate data without affecting the number of rewrites of the register.
  • the compiler may allocate the data to the least used register when there is no data stored in a register having a correlation greater than or equal to a preset correlation. Since the registers of the nonvolatile processor have a limited number of writes, there is a need to use all registers evenly. Thus, using the wear leveling module, the number of uses of a register can be recorded, and data can be allocated from the least used register so that the number of use of all registers is evenly distributed. Thus, the compiler or controller can search for the least used register based at least in part on the number of uses of the register written by the wear leveling module. The compiler or controller may assign data to the searched register (target register).
  • the compiler may detect from the source code the correlation of the data to be assigned to the register.
  • the compiler may allocate two or more data having correlations above or equal to a predetermined correlation among the data to the same register.
  • m in calculation 1 and n in calculation 2 may be data having the correlation.
  • the compiler may allocate the data to the same register.
  • m in calculation 1 and n in calculation 2 have the same value of 1. Therefore, the compiler can allocate the m and n to the register R1.
  • the correlation greater than or equal to the preset correlation may mean that both data are the same.
  • the above-described data and registers are merely examples and various data may be assigned to various registers.
  • the correlation described above is also merely an example, and there may be various correlations for efficient compilation.
  • the correlation may not only mean a case where the data are the same, but also mean a case where a predetermined number or more bits are the same in the data unit.
  • 10 illustratively shows a data block including pilot cells in accordance with an aspect of the present invention.
  • memories 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 the 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.
  • 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 memory 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. .
  • four pilot cells are exemplarily illustrated in FIG. 10, more or less pilot cells may also be included in the scope of the present invention.
  • pilot cell 10 illustrates an SSD composed of MLC having four nominal values.
  • Four pilot cells labeled A, B, C and D, may be preset in each page.
  • pilot cell A may be assigned to 11, pilot cell B to 10, pilot cell C to 00, and pilot cell D to 01.
  • Each of these pilot cells may have a unique nominal value (ie, a reference voltage value).
  • pilot cells A, B, C, and D may be fixed values, differently assigned for each page, or changed in various ways to implement wear leveling.
  • these pilot cells A to D may be disposed at various positions within the page.
  • the pilot cells may be located at the front, middle, or end of 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.
  • 11 illustratively illustrates a change in placement of pilot cells according to a programming count and according to a page in accordance with 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 201 after the memory controller 201 writes data by applying a voltage value to the pilot cells, the memory controller 201 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 201 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.
  • the memory controller 201 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 201 calculates threshold voltage values to be used to read the data cells by first reading the pilot cells and referring to the read analog voltage values in the pilot cells.
  • FIG. 12 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. 12. For example, as illustrated in FIG. 12, in the case of pilot cell A in which a value of '11' is recorded, it 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 not the default reference voltage that was used when reading the value of '10' as shown in FIG.
  • the actually measured reference voltage may be used as the voltage level value for reading the 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.
  • the distribution of the analog voltage values may change as shown in FIG. In such a situation, how the nominal values are adaptively defined for each page may be considered. This method can take advantage of error generation and power consumption because it takes into account the different response characteristics of the cells.
  • 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. 14 illustrates an exemplary voltage readout mechanism using pilot cells in accordance with an aspect of the present invention.
  • FIG. 14 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. 14 are connected to each other in 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 1401 and 32768 data cells 1402.
  • Each memory cell includes a floating gate transistor.
  • the pilot cells 1401 and data cells 1402 ie, the gates of the transistors of the cells) within this one page share the same word line.
  • 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 example data block may further include a switch 1403 and / or page buffer 1404.
  • This switch 1403 may be disposed 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 201 or the read module 205 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 201 or the read module 205 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 201 or the read module 205 may apply a step voltage to a word line of a target page to measure a read threshold voltage value of the pilot cells 1401 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 1403 is closed to allow current to flow to the data cell 1402 in the page.
  • the threshold voltage Vt corresponding to the pilot cell eg, pilot cell A
  • 15 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 201 or the read module 205.
  • 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.
  • 16 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.
  • 17 exemplarily shows a change in the threshold voltage after data programming.
  • 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 the programming time point may change as shown in FIG. 17A to FIG. 17B 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. 18 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. 18 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 (S310).
  • 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 (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. For example, if the nominal value of each data for programming has a voltage step of 1V, the memory controller can read the voltage value of the pilot cell at a resolution of 0.2V, which is higher than the 1V interval.
  • 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 (S330).
  • 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 cells of the memory by using the corrected nominal 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.
  • FIG. 19 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. 19 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 using a predetermined nominal voltage (S410).
  • 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 (S420).
  • 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 (S430).
  • 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 (S440).
  • 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.
  • the various embodiments presented herein may be embodied in a method, apparatus, or article of manufacture using standard programming and / or engineering techniques.
  • article of manufacture includes a computer program, carrier, or media accessible from any computer-readable device.
  • computer-readable media may include magnetic storage devices (eg, hard disks, floppy disks, magnetic strips, etc.), optical discs (eg, CDs, DVDs, etc.), smart cards, and flash memory. Devices, such as, but not limited to, EEPROM, cards, sticks, key drives, and the like.
  • various storage media presented herein include one or more devices and / or other machine-readable media for storing information.
  • machine-readable medium includes, but is not limited to, a wireless channel and various other media capable of storing, holding, and / or delivering instruction (s) and / or data.
  • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 메모리 시스템 및 메모리의 데이터 처리 방법에 관한 것으로서, 더욱 상세하게는 데이터를 효율적으로 처리하기 위한 메모리 시스템 및 메모리의 데이터 처리 방법에 관한 것이다. 이를 위해 본 발명은, 메모리의 데이터 처리 방법으로서, 상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널(nominal)값의 전압을 인가하여 데이터를 프로그래밍하는 단계; 상기 파일럿 셀의 기록된 전압 값을 판독하는 단계; 상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하는 단계; 및 상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는 단계; 를 포함하는 메모리의 데이터 처리 방법 및 이를 이용한 메모리 시스템을 제공한다.

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)만이 가능해진다.
플래시 메모리에 저장되는 데이터의 속성으로 인하여, 업데이트가 되는 주기는 데이터의 타입에 따라서 상이할 수 있다. 예를 들어, 대부분의 작은 용량을 갖는 데이터 파일들은 빈번하게 기록 및 삭제되는(즉, 업데이트되는) 반면에, 대부분의 큰 용량을 갖는 데이터 파일들은 대부분 판독동작을 위해서만 액세스될 수 있다. 더불어, 메타 데이터는 일반적인 데이터에 비해 보다 빈번하게 업데이트되는 핫 데이터 중 하나일 수 있다. 따라서, 이러한 점들을 고려하여 플래시 메모리의 수명을 증대시키는 방안에 대한 필요성이 존재한다.
또한, 플래시 메모리의 저장 용량은 점점 증가되고 있는 추세이다. 더불어, 효율적인 어드레싱을 위하여 플래시 메모리 내의 블록 사이즈 및 페이지 사이즈 또한 증가되고 있다. 하지만, 현재까지도 사용량이 많은 대다수의 파일은 작은 사이즈의 파일이기 때문에, 하나의 파일만이 하나의 페이지에 저장될 수 있는 상황에서는 페이지의 사용에 있어서 비효율성이 존재할 수 있다.
한편, 프로세서에서 동작하는 모든 소프트웨어(software)는 타겟 시스템에 적합하도록 컴파일(compile)되어야 한다. 컴파일러의 최적화는 어플리케이션의 성능에 큰 영향을 미칠 수 있다. 이러한 최적화를 구현하기 위해서 프로세싱(processing) 속도 및 메모리 활용에 초점이 맞추어지고 있다. 소프트웨어 파이프라이닝(pipelining)과 루프 불변 코드(loop invariant code)의 동작이 이러한 컴파일러의 최적화의 예시이다.
또한, 임베디드 또는 모바일 환경에서, 컴퓨팅 시스템은 높은 전력 소비와 관련된 문제점을 갖고 있다. 일부 저전력 프로세서들은 유휴(idle) 상태에서 누설 전류를 제거하기 위하여 전력 공급을 차단하고 있다. 하지만, 이러한 경우, 휘발성 레지스터들과 같은 휘발성 메모리에 저장된 데이터들이 손실될 수도 있기 때문에, 시스템 복원이 비효율적이거나 불가능할 수도 있다는 단점이 존재한다.
저전력 프로세서의 데이터 백업과 관련된 문제점을 해결하기 위하여, 비휘발성 프로세서에 대한 기법들이 제안될 수 있다. 이러한 비휘발성 프로세서는 일반적인 CMOS 레지스터를 대체하기 위하여 비휘발성 메모리를 사용할 수 있다. 그러나, 비휘발성 메모리의 물리적인 속성으로 인하여, 비휘발성 프로세서(NVP:non-volatile processor) 패러다임(paradigm)에서는 전술한 컴파일러 최적화를 구현하기 위하여 프로세서 하드웨어(hardware)의 수명 증가와 같은 새로운 조건(condition)이 존재할 수 있다.
본 발명은 메모리 시스템을 효율적으로 사용하기 위한 목적을 가지고 있다.
상기와 같은 과제를 해결하기 위해, 본 발명의 실시예에 따른 컴파일링 방법은, 레지스터에 할당할 데이터를 소스 코드로부터 검출하는 단계; 하나 이상의의 레지스터들 각각에 저장된 데이터와 상기 할당할 데이터 간의 상관성(correlation)을 표시하는 상관성 정보를 생성하는 단계; 상기 상관성 정보에 기초하여 상기 레지스터들 중에서 상기 할당할 데이터를 할당할 타겟 레지스터를 결정하는 단계; 및 상기 결정된 타겟 레지스터에 상기 할당할 데이터를 할당하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 결정하는 단계는, 상기 할당할 데이터와 미리 설정된 상관성 이상의 상관성을 가지는 타겟 레지스터가 결정되지 않을 경우, 가장 적게 사용된 레지스터를 타겟 레지스터로 결정하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 컴파일링 방법은, 웨어 레벨링 모듈(wear leveling module)에 의해 기록된 레지스터의 사용 횟수에 적어도 부분적으로 기초하여 가장 적게 사용된 레지스터를 타겟 레지스터로 결정하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 할당하는 단계는, 상기 할당할 데이터와 상기 타겟 레지스터에 저장된 데이터의 상관성이 미리 설정된 상관성 이상인 경우, 재기록 없이 상기 타겟 레지스터에 상기 할당할 데이터를 할당하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 결정하는 단계는, 상기 상관성 정보에 기초하여, 상기 레지스터들 중 상기 할당할 데이터와 상관성이 가장 높은 데이터가 현재 저장된 레지스터를 타겟 레지스터로 결정하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 상관성 정보를 생성하는 단계는, 가상의 프로세서를 구성함으로써 상기 가상의 프로세서 상의 하나 이상의 레지스터들 각각에 현재 저장된 데이터의 값들을 판독하는 단계; 상기 판독된 데이터의 값들과 상기 소스 코드로부터 검출된 데이터의 값을 비교하는 단계; 및 상기 비교에 기초하여, 상기 상관성 정보를 생성하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 할당하는 단계는, 미리 설정된 상관성 이상의 상관성을 갖는 둘 이상의 데이터들을 동일한 레지스터에 할당하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 실시예에 따른 컴퓨터 판독가능 매체는, 상기 컴퓨터 판독 가능한 매체는, 소스 코드를 기계어로 변환하기 위한 이하의 명령들을 저장하며, 상기 명령들은, 레지스터에 할당할 데이터를 소스 코드로부터 검출하기 위한 명령; 하나 이상의 레지스터들 각각에 저장된 데이터와 상기 할당할 데이터 간의 상관성(correlation)을 표시하는 상관성 정보를 생성하기 위한 명령; 상기 상관성 정보에 기초하여 상기 레지스터들 중에서 상기 할당할 데이터를 할당할 타겟 레지스터를 결정하기 위한 명령; 및 상기 결정된 타겟 레지스터에 상기 할당할 데이터를 할당하기 위한 명령을 포함하는 것을 특징으로 한다.
또한, 본 발명의 실시예에 따른 프로세서는, 소스 코드로부터 검출된 데이터가 할당될 수 있는 하나 이상의 레지스터들; 및 상기 프로세서를 제어하기 위한 컨트롤러를 포함하고, 상기 컨트롤러는, 하나 이상의 레지스터들 각각에 저장된 데이터와 상기 할당할 데이터 간의 상관성을 표시하는 상관성 정보를 생성하고, 상기 상관성 정보에 기초하여 상기 레지스터들 중에서 상기 할당할 데이터를 할당할 타겟 레지스터를 결정하며, 상기 결정된 타겟 레지스터에 상기 할당할 데이터를 할당하는 것을 특징으로 한다.
한편, 본 발명의 실시예에 따른 메모리의 데이터 처리 방법은, 상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널(nominal)값의 전압을 인가하여 데이터를 프로그래밍하는 단계; 상기 파일럿 셀의 기록된 전압 값을 판독하는 단계; 상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하는 단계; 및 상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 판독하는 단계는, 상기 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 상기 파일럿 셀의 전압 값을 판독하는 것을 특징으로 한다.
또한, 상기 교정하는 단계는, 상기 판독된 파일럿 셀의 전압 값과 상기 미리 결정된 노미널 값 간의 차분값을 산출하는 단계; 및 상기 산출된 차분값을 상기 미리 결정된 노미널 값에 합산하여 상기 교정된 노미널 값을 획득하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 교정하는 단계는, 상기 판독된 파일럿 셀의 전압 값과 상기 미리 결정된 노미널 값 간의 비율을 산출하는 단계; 및 상기 산출된 비율에 기초하여 상기 미리 결정된 노미널 값을 스케일링하여 상기 교정된 노미널 값을 획득하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 데이터 셀과 동일한 블록 또는 페이지 내에 위치하는 것을 특징으로 한다.
또한, 상기 데이터 처리 방법은, 상기 파일럿 셀이 위치한 블록의 삭제 횟수 정보 또는 페이지의 기록 횟수 정보를 획득하는 단계; 및 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 상기 파일럿 셀의 위치를 시프팅하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함하는 것을 특징으로 한다.
또한, 본 발명의 실시예에 따른 메모리 시스템은, 복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및 상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며, 상기 프로그래밍 모듈은 상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널 값의 전압을 인가하여 데이터를 프로그래밍하고, 상기 판독 모듈은 상기 파일럿 셀의 기록된 전압 값을 판독하고, 상기 제어 모듈은 상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하고, 상기 상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는 것을 특징으로 한다.
한편, 본 발명의 다른 실시예에 따른 메모리의 데이터 처리 방법은, 미리 결정된 노미널 값의 전압을 이용하여 상기 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 하는 단계, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀임; 상기 파일럿 셀의 기록된 전압 값을 판독하는 단계; 상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 임계 전압 값을 설정하는 단계; 및 상기 설정된 임계 전압 값에 기초하여 상기 메모리의 데이터 셀의 데이터를 판독하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 판독하는 단계는, 상기 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 상기 파일럿 셀의 전압 값을 판독하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 데이터 셀과 동일한 블록 또는 페이지 내에 위치하는 것을 특징으로 한다.
또한, 상기 데이터 처리 방법은, 상기 파일럿 셀이 위치한 블록의 삭제 횟수 정보 또는 페이지의 기록 횟수 정보를 획득하는 단계; 및 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 상기 파일럿 셀을 시프팅하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함하는 것을 특징으로 한다.
또한, 상기 임계 전압 값을 설정하는 단계는, 상기 메모리 내의 동일한 노미널 값을 이용하여 프로그래밍 된 복수의 파일럿 셀의 판독 전압 값을 획득하는 단계를 포함하며, 상기 획득된 복수의 파일럿 셀의 판독 전압 값의 평균에 기초하여 상기 임계 전압 값을 설정하는 것을 특징으로 한다.
또한, 본 발명의 다른 실시예에 따른 메모리 시스템은, 복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및 상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며, 상기 프로그래밍 모듈은 미리 결정된 노미널 값의 전압을 이용하여 상기 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 하되, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀이며, 상기 판독 모듈은 상기 파일럿 셀의 기록된 전압 값을 판독하고, 상기 제어 모듈은 상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 임계 전압 값을 설정하고, 상기 판독 모듈은 상기 설정된 임계 전압 값에 기초하여 상기 메모리의 데이터 셀의 데이터를 판독하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 메모리 시스템을 효율적으로 사용할 수 있다.
도 1은 본 발명의 일 양상에 따른 메모리 시스템을 개략적으로 도시한 도면이다.
도 2은 본 발명의 일 양상에 따른 메모리 시스템을 개략적으로 도시한다.
도 3은 본 발명의 일 실시예에 따른, 메모리 시스템 내에서의 시간에 따른 파일 자동 저장(file auto save) 방법을 도시한다.
도 4는 본 발명의 일 양상에 따라, 메모리 시스템 내에서의 파일 자동 저장(file auto save)시 데이터를 처리하는 단계에 관한 순서도를 도시한다.
도 5는 본 발명의 일 실시예에 따라 소스 코드로부터 컴파일링 시스템을 통하여 타겟 시스템으로 데이터가 할당되는 프로세스를 컴포넌트들로 도시한다.
도 6은 본 발명의 일 실시예에 따른 타겟 시스템을 개략적으로 도시한다.
도 7은 기존의 컴파일러가 레지스터에 데이터를 할당하는 예시를 도시한다.
도 8은 본 발명의 일 실시예에 따른 컴파일러가 레지스터에 데이터를 할당하는 예시를 도시한다.
도 9는 본 발명의 일 실시예에 따른 레지스터에 데이터가 할당되는 방법을 도시하는 순서도이다.
도 10은 본 발명의 일 양상에 따라 파일럿 셀들을 포함하는 데이터 블록을 예시적으로 도시한다.
도 11은 본 발명의 일 양상에 따라 프로그래밍 카운트에 따른 그리고 페이지에 따른 파일럿 셀들의 배치 변화를 예시적으로 나타낸다.
도 12는 본 발명의 일 양상에 따라 페이지 내에서의 파일럿 셀들을 이용한 판독 기법을 예시적으로 도시한다.
도 13은 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
도 14는 본 발명의 일 양상에 따라 파일럿 셀들을 이용한 예시적인 전압 판독 메커니즘을 도시한다.
도 15는 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀의 전압 판독 기법을 예시적으로 나타낸다.
도 16은 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀 판독 기법을 예시적으로 나타낸다.
도 17은 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
도 18은 본 발명의 일 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다.
도 19는 본 발명의 다른 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다.
다양한 양상들이 이제 도면들을 참조로 하여 기재되며, 여기서 유사한 참조번호는 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예들에서, 설명의 목적으로, 다수의 특정한 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위하여 제시된다. 그러나, 이러한 양상들이 이러한 구체적인 세부사항들 없이도 실시될 수 있다는 점은 명백할 것이다.
본 개시내용의 다양한 양상들이 이하에서 설명된다. 본 명세서에서의 설명들이 폭넓은 형태들로 구현될 수 있다. 또한, 여기에서 개시되는 임의의 특정 구조, 기능성 또는 이들 모두는 단지 대표적인 것이라는 점이 명백하다. 본 명세서에서의 설명들에 기반하여, 당해 출원 발명이 속하는 기술분야에 있어서 통상의 지식을 가진 자는, 여기에서 개시되는 양상이 임의의 다른 양상들과 독립적으로 구현될 수 있다는 점을 그리고 이러한 양상들 중 둘 이상의 양상들이 다양한 방식들로 결합될 수 있다는 점을 인식하여야 한다. 예를 들어, 여기에서 제시되는 임의의 개수의 양상들을 이용하여 장치가 구현될 수 있거나 또는 방법이 실시될 수 있다. 또한, 여기에서 제시되는 양상들 중 하나 이상의 양상들과 다른 또는 이에 추가하여 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 장치가 구현될 수 있거나 또는 이러한 방법이 실시될 수 있다. 더불어, 본 발명의 일 양상은 청구항의 적어도 하나의 엘리먼트를 포함할 수 있다.
도 1은 본 발명의 일 양상에 따른 메모리 시스템(100)을 개략적으로 도시한 도면이다.
본 명세서는 예시적으로 플래시 메모리에 대해여 기재하고 있지만, 이러한 플래시 메모리(즉, 비휘발성 메모리) 이외의 다른 메모리 디바이스(예컨대, 휘발성 메모리) 또한 본 발명의 범위내에 포함될 수 있다.
도 1에서의 메모리 시스템(100)은 크게 애플리케이션(101)(또는 호스트), 파일 시스템(102) 및 SSD(103)로 구성될 수 있다. 도 1에서의 컴포넌트들은 예시적인 것일 뿐이며, 도 1에서의 컴포넌트들의 일부가 생략될 수 있거나 또는 도 1에서의 컴포넌들 이외의 컴포넌트들이 메모리 시스템(100)에 포함될 수도 있다. 추가적으로, 도 1에서의 SSD(103)는 유사한 기능을 수행할 수 있는 메모리 및 메모리 컨트롤러로 대체될 수도 있다.
본 발명의 일 양상에서, 애플리케이션 1 내지 N(101)은 SSD와 같은 플래시 메모리 장치로 데이터 저장을 요구하는 임의의 장치 또는 프로그램을 포함할 수 있다.
본 발명의 일 양상에서, 파일 시스템(102)은 애플리케이션(101)과 함께 호스트 또는 애플리케이션 영역으로 지칭될 수 있다. 이러한 파일 시스템(102)은 논리 섹터 주소(logical sector address)를 통해 SSD의 임의의 데이터를 액세스할 수 있다. 이러한 경우, SSD 컨트롤러(104)의 플래시 변환 계층(Flash Translation Layer)(106)은 논리 섹터 주소를 물리 주소(physical address)로 변환함으로써 논리 섹터 주소와 물리 주소를 맵핑할 수 있다. 추가적으로, 파일 시스템(102)은 플래시 변환 계층(106)에 의해 구현된 가상의 섹터를 의미할 수도 있다. 또한, 본 명세서에서의 파일 시스템(102)은 애플리케이션(201)과 상호 교환 가능하게 사용될 수도 있다.
플래시 메모리(105)의 물리적 특성으로 인해, 플래시 메모리(105)를 하드 디스크처럼 사용하기 위해서는, 판독/기록/삭제 동작에 대한 별도의 관리가 필요하다. 플래시 변환 계층(106)은 이러한 목적으로 개발된 시스템 소프트웨어를 의미할 수 있다. 플래시 변환 계층(106)은 논리 주소를 물리 주소로 변환하는 맵핑 알고리즘, 데이터 파일 사이즈를 결정하는 알고리즘, 웨어 레벨링을 수행하기 위한 알고리즘, 및 플래시 메모리(105)로 인가할 전압을 제어하는 알고리즘 등을 포함할 수 있다.
본 발명의 일 양상에서, SSD 컨트롤러(104)의 플래시 변환 계층(106)은 논리 주소와 물리 주소를 맵핑하기 위한 주소 할당기(address allocator)(108), 웨어 레벨링을 수행하기 위한 웨어 레벨러(wear leveler)(110) 및 가비지 콜렉터(garbage collector)(109), 데이터 파일의 사이즈를 분석 및 비교하기 위한 데이터 파일 사이즈 분석기(111), 및 플래시 메모리(105)로 인가될 전압을 제어하기 위한 전압 제어기(116) 등을 포함할 수 있다. 추가적으로, 전술한 플래시 변환 계층(106)의 컴포넌트들을 예시적인 것일 뿐이며, 추가적인 컴포넌트들이 플래시 변환 계층(106)에 포함될 수 있거나 전술한 컴포넌트들의 일부분이 생략될 수도 있다.
웨어 레벨러(110)는 플래시 메모리(105)의 수명을 증대시키기 위하여, 블록 단위, 페이지 단위 및/또는 비트 단위의 웨어 레벨링을 수행할 수 있다.
가비지 콜렉터(109)는 필요없는 데이터(invalid data or obsolete data)를 마킹하는 동작, 다른 블록, 페이지 및/또는 비트로의 카피 백(copy back) 동작, 및 상기 필요없는 데이터를 블록 단위로 한번에 삭제하는 동작 등을 수행함으로써 웨어 레벨링을 구현할 수 있다. 따라서, 웨어 레벨링을 구현하기 위하여 적절한 물리적 블록 위치, 페이지 위치, 및/또는 비트 위치에 인입되는 데이터가 할당될 수 있다.
추가적으로, 주소 할당기(108)는 복수의 전압 상태 레벨들을 갖는 메모리 셀(예컨대, MLC, TLC 등)로 인입되는 비트들을 적절한 전압 상태 레벨들로 맵핑하기 위한 맵핑 테이블 등을 생성할 수 있다.
주소 할당기(108)는 메모리의 블록, 페이지 또는 비트(셀) 단위의 논리 주소와 물리 주소의 할당을 구현할 수 있다.
전압 제어기(116)는 하나 이상의 비트들을 표현하기 위하여 예를 들어, 이전 셀-내 기록 모드보다 높거나 같은 값의 구동 전압 레벨을 메모리 셀에 인가할 수 있다. 이러한 전압의 인가는 주소 할당기(108)에 의해서 생성된 맵핑 테이블에 기초하여 수행될 수 있다. 또한, 전압 제어기(116)는 이전의 메모리 셀에 기록된 하나 이상의 비트에 대응하는 메모리 셀의 전압 레벨을 체크함으로써, 메모리 셀로 인가될 구동 전압 레벨값을 결정할 수도 있다. 여기서의 셀-내 기록 모드는 하나의 삭제 사이클(또는 삭제 카운트) 내에서의 셀-내 기록 횟수를 카운트하는 값을 표시할 수 있다.
데이터 파일 사이즈 분석기(111)는 인입되는 데이터 파일의 사이즈를 결정할 수 있다. 이러한 결정을 통하여, 데이터 파일 사이즈 분석기(111)는 예를 들어, 인입되는 데이터 파일이 분할된 서브 페이지의 크기보다 작은지 여부를 결정할 수 있다.
도 1에서 도시되지는 않았지만, SSD 컨트롤러(104)는 플래시 메모리(105)로의 데이터 기록, 삭제 및 판독을 위한 프로그래밍 모듈(기록 및 삭제) 및 판독 모듈을 포함할 수 있다.
이처럼 SSD 컨트롤러(104)는 SSD의 전반적인 동작들을 제어할 수 있다. SSD 컨트롤러(104)는 애플리케이션(101) 혹은 파일 시스템(102)으로부터 논리 주소를 입력받을 수 있다. SSD 컨트롤러(104)의 플래시 변환 계층(106)은 입력된 논리 주소를 물리 주소로 변환할 수 있다. 변환된 물리 주소는 메모리 테크놀로지 디바이스 계층(Memory Technology Device Layer)(107) 또는 플래시 메모리(105)로 전달될 수 있다. 메모리 테크놀로지 디바이스 계층(107)은 다양한 플래시 메모리 또는 RAM 등을 지원하기 위한 인터페이스 계층을 의미할 수 있다. 추가적으로, 이러한 메모리 테크놀로지 디바이스 계층(107)은 선택적인 구성일 수 있다.
플래시 메모리(105)는 당업자에게 잘 알려진 바와 같이, 스트링 구조(string structure)를 갖는 복수의 메모리 셀들로 구성될 수 있다. 메모리 셀들의 집합은 일반적으로 셀 어레이(cell array)라고 지칭된다. 플래시 메모리(105)의 셀 어레이는 복수의 메모리 블럭들(memory blocks)으로 구성된다. 각각의 메모리 블럭(112)은 복수의 페이지들(pages)(113)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀 또는 데이터 셀(114)들로 구성된다. 여기서 하나의 메모리 셀 또는 데이터 셀(114)에는 싱글 비트 데이터(Single Bit Data), 멀티 비트 데이터(Multi Bit Data), 또는 트리플 비트 데이터(Triple Bit Dadta) 등이 저장될 수 있다. 예를 들어, 싱글 비트 데이터가 저장될 수 있는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라 지칭되고, 멀티 비트 데이터가 저장될 수 있는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라 지칭되고, 트리플 비트 데이터가 저장될 수 있는 메모리 셀은 트리플 레벨 셀(Triple Level Cell; TLC)이라 지칭된다.
도 2은 본 발명의 일 양상에 따른 메모리 시스템(200)을 개략적으로 도시한다.
도 2에서 도시되는 바와 같이, 메모리 시스템(200)은 메모리 컨트롤러(201) 및 플래시 메모리(202)를 포함할 수 있다.
메모리 컨트롤러(201)는 플래시 메모리(202)의 전반적인 동작들을 제어할 수 있다. 메모리 컨트롤러(201)는 웨어 레벨링, 비트 할당, 전압 제어 및 페이지 분할 등을 수행하기 위한 제어 모듈(203), 기록 및 삭제 동작을 수행하기 위한 프로그래밍 모듈(204), 판독 동작을 수행하기 위한 판독 모듈(205) 및 데이터를 통합하여 다른 주소로 변환(conversion)하는 동작을 수행하기 위한 변환 모듈(206)을 포함할 수 있다.
본 발명의 일 양상에서, 제어 모듈(203)은 호스트 또는 애플리케이션 등으로부터 플래시 메모리(202)에 대한 동작 요청이 수신되는 경우, 메타 영역(meta area)에 저장된 메타 데이터 등을 기초로 하여 웨어 레벨링, 비트 할당, 전압 제어 및 페이지 분할 등을 수행할 수 있다.
또한, 제어 모듈(203)은 프로그래밍 모듈(204) 및 판독 모듈(205)의 동작을 제어할 수 있다.
본 발명의 일 양상에서, 제어 모듈(203)은 메모리 셀에 대한 데이터 기록 요청 횟수에 기초하여, 셀-내 기록 모드(in-cell write mode) 또는 페이지-내 기록모드(in-page write mode)를 결정할 수 있다. 제어 모듈(203)은 결정된 기록 모드에 기초하여, 상기 메모리 셀에 하나 이상의 비트를 표현하기 위하여 인가될 구동 전압 레벨값을 결정할 수 있다. 또한, 제어 모듈(203)은 기록 모드에 따라서 메모리 셀의 상태 레벨들 중 낮은 상태 레벨들로부터 높거나 동일한 레벨 상태로 하나 이상의 비트들이 맵핑되는 맵핑 테이블 등을 생성할 수 있다. 이렇게 생성된 맵핑 테이블은 플래시 메모리(202)(예컨대, 메타 영역)에 저장될 수도 있다.
본 발명의 추가적인 양상에 따른 웨어 레벨링은 인터-페이지(inter-page) 웨어 레벨링이 아닌, 인-페이지(in-page) 웨어 레벨링 또는 마이크로 웨어 레벨링을 의미할 수 있다. 보다 구체적으로, 배드 블록(bad block)들은 일반적으로 페이지 단위의 셀들의 그룹이 아니라 하나 이상의 셀들이 마모 임계치를 초과한 경우에 발생되는 경우가 많다. 따라서, 이러한 셀 단위의(즉, 비트 레벨의) 웨어 레벨링을 구현하기 위하여, 제어 모듈(203)은 페이지 내에서의 비트 위치의 변경(예컨대, 쉬프트(또는 로테이팅(rotating), 리버싱(reversing) 및/또는 스크램블링(scrambling)) 또는 페이지 내의 비트 위치로 기록되는 데이터 값의 변경(예컨대, 반전(inversion))을 수행할 수 있다.
추가적으로, 제어 모듈(203)는, 기록될 데이터의 타입을 결정하고, 결정된 데이터의 타입에 기초하여 각각의 데이터 비트들을 하나의 페이지 내에 기록하기 위한 기법을 결정할 수 있다. 보다 구체적으로, 제어 모듈(203)은 기록될 데이터의 타입(예컨대, 파일 타입(doc, xls, ppt, txt, pdf, wav, mp3, jpg, zip, 및 avi 등)을 결정할 수 있다. 이러한 파일의 타입과 관련된 정보는 데이터의 기록 요청 등에 포함될 수 있다. 기록될 데이터의 타입이 결정되는 경우, 제어 모듈(203)은 미리결정된 알고리즘에 기초하여, 상기 결정된 데이터에 타입에 따라 전술한 마이크로 웨어 레벨링 기법들(시프팅, 리버싱, 스크램블링 및 반전) 중 적절한 기법을 선택하거나, 서브 페이지들을 분할할지 여부를 결정하거나, 분할될 서브 페이지들의 개수를 결정하거나, 또는 메모리 셀의 상태 레벨들에 따른 하나 이상의 비트들의 할당 기법을 결정할 수 있다.
또한, 제어 모듈(203)은 펌웨어(Firmware)로 구현될 수 있다. 예를 들어, 웨어 제어 모듈(203)은 플래시 변환 계층(Flash Translation Layer; FTL)에 포함될 수 있다. 여기서, 플래시 변환 계층은 전술한 바와 같이, 플래시 메모리(202)를 하드 디스크처럼 사용하기 위해서 삭제/기록/판독 동작을 관리하는 시스템 소프트웨어이다. 플래시 변환 계층은 전압 제어, 맵핑 정보 관리, 배드 블록 관리, 예상치 못한 전원 차단시 데이터 보존성 관리, 마모도 관리 등을 수행할 수 있다.
프로그래밍 모듈(204)은, 제어 모듈(201)의 제어에 따라, 기록될 데이터 비트들을 하나의 페이지 내에 기록할 수 있다. 보다 구체적으로, 프로그래밍 모듈(204)은 제어 모듈(201)에 의해 결정된 전압값에 따라서, 메모리 셀에 하나 이상의 비트를 표현하기 위한 구동 전압 레벨값을 인가할 수 있다. 또한, 프로그래밍 모듈(204)은 블록(207)을 구성하는 페이지(208)들에 순차적으로 데이터를 기록할 수 있다. 추가적으로, 프로그래밍 모듈(204)은 메모리 셀의 복수의 상태 레벨들이 모두 사용된 경우에, 후속적인 기록 요청에 응답하여, 메모리 셀에 대한 삭제(erase) 동작을 수행할 수 있다. 또한, 프로그래밍 모듈(204)은 페이지 내의 모든 서브페이지들이 사용된 경우, 후속적인 기록 요청에 응답하여, 메모리 셀에 대한 삭제 동작을 수행할 수 있다.
추가적으로, 프로그래밍 모듈(204)은 플래시 메모리(202)의 사용자 영역으로 데이터를 기록하거나 사용자 영역으로부터의 데이터를 삭제할 수 있다. 기록 및/또는 삭제 동작이 수행되는 경우, 프로그래밍 모듈(204)은 플래시 메모리(202)의 메타 영역(206)에 저장된 메타 데이터(예컨대, 셀-내 기록 정보, 삭제 카운트 또는 기록 모드 카운트 등)를 변경시킬 수 있다.
본 발명의 일 양상에 따라, 프로그래밍 모듈(204)은 후술될 파일 자동 저장(file auto save) 기능에 이전 파일의 데이터와 현재 파일의 데이터의 비교에 의해 생성되는 차이에 해당하는 차이 데이터를 페이지(208)에 할당된 원본 파일의 데이터에 순차로 할당할 수 있다. 또한, 페이지(208)는 여분 영역(spare area)(209)을 포함할 수 있으며, 상기 프로그래밍 모듈(204)에 의해서 상기 차이 데이터를 상기 스페어 영역(209)에 할당할 수도 있다.
추가적으로, 프로그래밍 모듈(204)은 파일 자동 저장(file auto save)을 위해 이전 파일의 데이터와 현재 파일의 데이터를 비교에 의해 상기 데이터들의 차이에 해당하는 데이터가 더 이상 발견되지 않는 경우, 최종 파일에 해당하는 데이터를 생성하기 위하여 상기 차이에 해당하는 차이 데이터들을 원본 파일의 데이터에 삽입 및/또는 추가할 수 있고, 상기 원본 파일의 데이터와 차이의 데이터들로 생성된 최종 파일의 데이터를 새로운 주소로 지정된 새로운 페이지(208)에 할당할 수 있다.
본 발명의 일 양상에서, 판독 모듈(205)은 플래시 메모리(202)의 사용자 영역에 기록된 데이터를 판독할 수 있다. 판독 모듈(205)은 메타 영역에 저장된 데이터를 참고하여 논리 주소와 물리 주소 간의 맵핑 정보를 기초로 하여 사용자 영역에 기록된 데이터를 판독할 수 있다. 즉, 판독 모듈(205)은 메타 영역에 저장된 기록 모드 카운트, 기록 모드 정보, 메모리 셀의 전압 상태 레벨, 맵핑 정보, 및/또는 카운트 정보 등을 참고하여 물리 주소로부터 판독된 정보를 적절한 논리 주소로 해석할 수 있다.
본 발명의 일 양상에서, 메타 영역은 플래시 메모리(202)를 관리하기 위한 메타 데이터(또는 제어 데이터)를 저장할 수 있다. 이러한 메타 데이터에는 기록 모드 정보, 기록 모드 카운트 정보 및 맵핑 테이블 등을 포함할 수 있다. 메타 영역은 복수의 메모리 셀들을 갖는 복수의 물리 페이지들로 구성된 적어도 하나의 물리 블록들을 포함할 수 있다.
또한, 상기 메타 데이터는 파일 자동 저장(file auto save) 기능에 의해 생성된 원본 파일의 데이터와 현재 파일의 데이터의 비교에 의한 차이를 나타내는 차이 데이터, 기록 모드 정보, 기록 모드 카운트 정보 및 맵핑 테이블 등을 포함할 수 있다.
추가적으로, 메타 영역은 사용자 영역에 통합될 수도 있다. 이러한 경우, 예를 들어, 기록 모드 정보 및/또는 카운트 정보와 같은 메타 데이터들은 사용자 영역의 페이지 또는 블록에 저장될 것이다.
추가적으로, 메타 데이터들은 사용자 영역의 페이지 또는 블록에서의 헤더(미도시)에 저장될 수도 있다.
사용자 영역은 일반적인 플래시 메모리의 데이터 저장소를 의미할 수 있다. 이러한 사용자 영역은 복수의 셀들을 갖는 복수의 물리 페이지들로 구성된 적어도 하나의 물리 블록들을 포함할 수 있다.
본 발명의 일 양상에서, 플래시 메모리(105)에서의 블록(112) 내의 페이지(113)는 복수의 데이터 셀들로 구성될 수 있으며, 상기 복수의 셀에 순차적으로 데이터가 저장될 수 있다. 예를 들면, 페이지 하나의 사이즈가 4KB 인 경우, 그리고 현재 원본 파일의 사이즈가 2KB인 경우, 동일한 데이터에 대한 후속적인 저장에 응답하여 메모리 셀의 물리적인 순서로 2KB 다음번 데이터 셀 부터 순차적으로 데이터가 추가될 수 있다.
본 발명의 일 양상에서, 플래시 메모리(202)의 사용자 영역의 하나의 페이지는 복수의 메모리 셀들을 포함할 수 있다. 이러한 메모리 셀 각각은 구동 전압 레벨값에 따라 각각 3개 이상의 상이한 상태들을 표현할 수 있다. 예를 들어, 메모리 셀이 MLC인 경우에, 상기 메모리 셀은 4개의 상이한 상태들을 표현할 수 있다. 또한, 메모리 셀이 TLC인 경우에, 상기 메모리 셀은 8개의 상이한 상태들을 표현할 수 있다.
본 발명의 일 양상에 따라, 판독 모듈(205)은 플래시 메모리에 저장된 데이터를 판독할 수 있다. 추가적으로, 판독 모듈(205)은 후술될 파일 자동 저장(file auto save)시 페이지(208)에 순차적으로 할당되어 있는 이전 파일의 데이터와 현재 파일의 데이터의 비교에 의한 차이(difference) 데이터들을 판독할 수도 있다.
상술한 바와 같이, 프로그래밍 모듈(204)은 파일 자동 저장(file auto save)을 위한 최종 파일의 데이터를 생성과정에서 상기 차이 데이터들이 원본 데이터에 삽입 및/또는 추가되는 과정을 통해 수정된 파일의 데이터를 생성할 수 있고, 상기 과정에서 판독 모듈(205)은 페이지(208)에 저장된 원본 파일의 데이터 뿐만 아니라, 페이지(208)에 순차로 저장된 이전 파일의 데이터 및 현제 파일의 데이터의 차이에 해당하는 차이 데이터들을 판독할 수 있다.
변환 모듈(206)은 파일 자동 저장(file auto save)시, 이전 파일의 데이터와 현재 파일의 데이터의 차이에 해당하는 차이 데이터 및 원본 파일의 데이터에 의해서 수정 파일의 데이터를 생성할 수 있고, 새로운 주소로 지정된 새로운 페이지(208)내로 상기 최종 파일의 데이터를 변환(conversion) 시킬수 있다.
구체적으로, 상기 변환 모듈(206)은 상기 이전 파일의 데이터와 현재 파일의 데이터의 비교에 따른 차이 데이터가 더 이상 발생하지 않음을 판단 및/또는 결정할 수 있고, 이에 따라 플래시 메모리 내에서 최종 파일에 해당하는 데이터를 저장하기 위하여, 상기 순차로 저장되어진 복수의 차이 데이터를 원본 파일 데이터에 추가 및/또는 삽입 편집할 수 있으며, 플래시 메모리 내의 새로운 주소로 변환(예를 들어, 도 3에서 도시된 바와 같이 0x2001 에서 0x2002로의 변환)할 수 있다.
또는, 변환 모듈(206)은 파일 클로즈(close) 요청에 응답하여 도 3에 도시된 바와 같은 변환 동작을 수행할 수 있다. 예를 들면, 사용자에 의한 어플리케이션(101)의 강제 종료시, 어플리케이션(101)은 파일 클로즈(close) 요청할 수 있고, 변환 모듈(206)은 이에 응답하여 자동적으로 도 3에 도시된 바와 같은 변환 동작을 수행할 수 있다. 이러한 변환 동작은 파일 클로즈 요청뿐만 아니라 미리설정된 저장 횟수(예컨대, 10번의 저장) 및 미리설정된 시간(예컨대, 30분) 등에 따라 자동적으로 수행될 수도 있다.
도 3은 본 발명의 일 실시예에 따른, 메모리 시스템 내에서의 시간에 따른 파일 자동 저장(file auto save) 방법을 도시한다.
도 3에서 도시하고 있는 본 발명이 제시하는 메모리 시스템은, 파일 자동 저장(file auto save)에 따라 원본 파일의 데이터 및/또는 이전 파일의 데이터와 현재 파일의 데이터를 비교하여 생성된 차이를 나타내는 차이 데이터를, 동일한 페이지 내에 물리적으로 저장되어 있는 원본 파일의 데이터 다음번 셀 부터 순차로 저장 및/또는 추가할 수 있는 기술적 특징을 제시한다.
도 3에서 도시하고 있는 바와 같이, 기존 메모리 시스템에서의 파일 자동 저장(file auto save)방법은 미리 결정된 자동 저장 주기에 따라, 어플리케이션(101)을 사용하는 사용자가 원본 파일의 데이터를 제 1 주기 동안 수정하여 변경된 데이터 전체를 플래시 메모리 내의 새로운 주소의 페이지로 변환하여 할당 및/또는 저장하는 기술적 특징을 포함한다. 이후에 제 2 주기 내지 제 n 주기도 상기와 같은 방법을 통해 이전 데이터와 비교하여 차이를 보이는 데이터들을 새로운 주소로 지정된 페이지에 추가 및/또는 변경함으로써, 기존 메모리 시스템은 메모리의 효율적인 관리에 어려움이 있었고, 이에 따라 비휘발성 메모리 시스템(예를 들어, 플래시 메모리)의 마모도 레벨이 증가하여, 메모리 시스템의 수명이 짧아지는 문제점이 있었다. 나아가, 기존 기술의 경우, 데이터가 수정될 때마다 새로운 페이지의 적절한 위치로 수정된 데이터를 변환해야만 한다는 불편함 또한 존재할 수 있다.
그러나, 도 3에서 도시하고 있는 본원 발명의 기술적 특징은, 어플리케이션(101) 사용자의 원본 데이터가 수정 및/또는 변경이 끝날 때까지, 상기 수정 및/또는 변경에 의해 이전 데이터와 비교되어 차이를 보이는 차이 데이터들을 원본 파일의 데이터가 할당 및/또는 저장되어 있는 동일한 주소로 지정된 동일한 페이지 내부에 저장할 수 있다. 이에 따라, 상기 각각의 차이 데이터들을 최종 파일 데이터로 편집 및 변환하여 새로운 주소로 지정된 새로운 페이지에 할당할 수 있다.
도 3을 참조하면, 원본 파일의 데이터는 플래시 메모리 내의 0x2001 주소로 지정된 페이지에 저장 및/또는 할당되어 있을 수 있다. 파일 자동 저장(file auto save) 기능에 의해 미리 결정된 주기(예를 들어, 5초) 내에 어플리케이션(101)의 사용자는 원본 파일의 데이터를 수정할 수 있으며, 이에 따라 플래시 메모리 내에서, 수정된 데이터를 추가하는 작업이 요구될 수 있다.
예를 들면, 도 3의 메모리 시스템은, 수정된 전체의 파일 데이터를 새로운 주소에 할당하는 기존의 메모리 시스템과는 달리, 제 1 주기 내에 상기 사용자가 원본 파일의 데이터를 수정하면, 상기 원본 파일의 데이터와 제 1 주기 내에 수정된 파일의 데이터를 비교하여, 상기 데이터들의 차이에 해당되는 제 1 의 차이 데이터만을 원본 파일의 데이터가 저장되어 있는 0x2001의 동일 주소의 동일 페이지(page)에 순차로 할당 및/또는 저장시킬 수 있다.
상기 데이터가 추가로 저장되는 동일한 페이지 내의 위치는 해당 페이지에서 미리 할당되어있는 여분 영역(spare area)(209)의 위치 일수도 있다.
이후에, 상기 메모리 시스템은, 제 2 주기 내에 상기 사용자가 원본 파일의 데이터 및 제 1 의 차이 데이터를 수정하면, 상기 원본 파일 파일의 데이터 및 제 1 의 차이 데이터와 제 2 주기 내에 수정된 파일의 데이터를 비교하여, 상기 데이터들의 차이에 해당되는 제 2의 차이 데이터만을 원본 파일의 데이터 및 제 1의 차이 데이터가 저장되어 있는 0x2001의 동일 주소의 동일 페이지에 순차로 할당 및/또는 저장 시킬 수 있다.
같은 과정으로, 도 3에서 도시하고 있는 제 3 의 차이 데이터 및 제 4 의 차이 데이터는 4주기에 해당하는 20초가 되었을 때, 0x2001의 주소로 지정된 페이지에 원본 파일의 데이터 및 제 1 의 차이 데이터 내지 제 4 의 차이 데이터가 동일한 페이지에 순차적으로 할당 및/또는 저장될 수 있다.
상기 메모리 시스템은, 예를 들어, 파일 자동 저장 주기에 따라 더 이상 이전 파일의 데이터와 현재 파일의 데이터의 차이에 해당하는 차이 데이터를 검출하지 못하는 경우, 이전 파일의 데이터와의 비교 검출 동작을 종료할 수 있으며, 이후에 원본 파일의 데이터가 수정 및/또는 편집된 최종 파일의 데이터와 일치할 수 있도록 상기 제 1 의 차이 데이터 내지 제 4 의 차이 데이터를 원본 파일의 데이터에 삽입 및/또는 변환하는 동작을 수행할 수 있다. 이와 동시에 또는 후차로, 상기 변환된 최종 파일의 데이터는 새로운 주소 0x2002에 해당하는 새로운 페이지에 저장될 수 있다.
추가적으로, 상기 메모리 시스템은 일정 주기가 경과된 이후에, 사용자 또는 어플리케이션(101)에 의해 종료가 된 경우, 이전 파일의 데이터와의 비교 검출 동작을 종료 할 수 있으며, 이후에 원본 파일의 데이터가 수정 및/또는 편집된 최종 파일의 데이터와 일치할 수 있도록 상기 주기동안 생성된 차이 데이터를 원본 파일의 데이터에 삽입 및/또는 변환하는 동작을 수행할 수 있다. 이와 동시에 또는 후차로, 상기 변환된 최종 파일의 데이터는 새로운 주소에 해당하는 새로운 페이지에 저장될 수 있다.
본 발명의 추가적인 양상에서, 플래시 메모리(105)에서의 블록(112) 내의 페이지(113) 각각은 복수의 서브 페이지들로 구성될 수도 있다. 예를 들면, 페이지(113)의 사이즈가 4KB인 경우, 1KB 단위의 4개의 서브 페이지들이 하나의 페이지(113) 내에서 형성될 수 있다. 따라서, 복수의 서브 페이지가 존재하는 경우에는, 새롭게 저장되는 추가 데이터가 서브 페이지의 넘버에 따라서 순차적으로 저장될 수 있다.
이는 기존의 메모리 시스템과 달리 플래시 메모리를 효율적으로 관리할 수 있으며, 새로운 페이지를 낭비하지 않을 수 있을뿐만 아니라, 웨어 레벨링의 효과 또한 달성시킬 수 있어서, 종국적으로 플래시 메모리의 수명을 연장시킬 수 있다.
도 3에서 도시하고 있는 기술적 특징은 도 4에서 도시하고 있는 파일 자동 저장(file auto save)시 데이터를 처리하는 단계와 함께 자세하게 후술하기로 한다.
도 4는 본 발명의 일 양상에 따라, 메모리 시스템 내에서의 파일 자동 저장(file auto save)시 데이터를 처리하는 단계에 관한 순서도를 도시한다.
메모리 시스템(200)은 어플리케이션(101)에 의해 데이터 파일 자동 저장 요청에 응답하여, 이전 버전의 데이터 파일과 현재 버전의 데이터 파일을 비교하여 변화된 데이터 부분을 결정하는 동작을 수행할 수 있다(S110).
상기 어플리케이션(101)의 사용자에 의해서 파일이 수정 및/또는 변경된 경우, 상기 파일은 메모리 시스템(200)이 제공하는 파일 자동 저장(file auto save) 기능에 의해 미리 결정된 시간에 따라, 플래시 메모리(202) 내에 상기 수정 및/또는 변경된 부분의 데이터가 저장될 수 있다.
이 경우, 메모리 시스템(200)은 이전 버전 파일의 데이터와 현재 버전 파일의 데이터를 비교할 수 있으며, 상기 사용자에 의하여 수정 및/또는 변경되어 이전 버전 파일의 데이터와 현재 버전 파일의 데이터 차이에 해당하는 데이터 부분을 판단 및 결정할 수 있다(S120).
본 발명의 일 양상에 따라, 상기 차이에 해당하는 데이터 부분은 파일 자동 저장(file auto save)을 위해 미리 결정된 시간에 따라 주기적으로 판단 및 결정될 수 있으며, 상기 주기를 따라 파일 자동 저장(file auto save)을 위한 상기 차이에 해당하는 데이터 부분은 복수로 존재할 수 있다.
상기 메모리 시스템(200)은, 상기 변화된 데이터를 결정하는 단계(S110) 이후에 이전 버전 파일의 데이터가 저장되어 있는 인-페이지(in-page)(208)의 영역과 상기 인-페이지(in-page)영역에 차후로 저장될 데이터의 현재 저장 영역을 식별할 수 있다(S120).
구체적으로, 상기 메모리 시스템(200)은, 파일 자동 저장을 위해서 판단 및/또는 결정된 상기 차이 데이터를 동일한 인-페이지(in-page)영역에 차후로 저장하기 위하여, 상기 차이에 해당하는 데이터가 할당 되어질 현재 저장 영역을 식별할 수 있다.
이후에, 상기 메모리 시스템(200)은, 상기 이전 버전 파일의 데이터와 현재 버전 파일의 데이터 차이에 해당하는 데이터 부분을 상기 인-페이지(in-page)영역 중에서 현재 저장 영역에 순차로 할당 및/또는 저장할 수 있다(S130).
도 3에 도시된 바와 같이, 0x2001의 주소로 지정된 하나의 페이지에 이전 버전 파일의 데이터에 해당하는 원본 파일의 데이터가 할당되어 있고, 파일 자동 저장을 위한 자동 저장 시간의 추이에 따라 이전 버전 파일의 데이터와 현재 버전 파일의 데이터 차이에 해당하는 데이터 부분이 플래시 메모리 내의 0x2001의 주소로 지정된 동일한 페이지에 순차적으로 저장된다.
보다 구체적으로, 상기 메모리 시스템(200)은 미리 결정된 자동 저장 시간에 따라 예를 들어, 4 주기가 경과되면, 제 1 의 차이 데이터 내지 제 4 의 차이 데이터를 형성할 수 있다. 상기 차이 데이터들은 플래시 메모리 내의 동일한 페이지 내에 순차적으로 저장될 수 있다. 즉, 메모리 시스템(200)은 자동 저장 시간의 주기 마다 상기 차이 데이터를 원본 데이터에 삽입하여 새로운 다른 주소에 저장하지 않고, 이전 데이터와 비교하여 수정 되어진 차이에 해당하는 데이터들을 순차적으로 동일한 페이지에 저장할 수 있다.
본 발명의 일 양상에 따라, 메모리 시스템(200)은 상기 이전 파일의 데이터와 현재 파일의 데이터의 비교에 따른 차이 데이터가 더 이상 발생하지 않음을 판단 및/또는 결정할 수 있다. 또는, 메모리 시스템(200)은 애플리케이션으로부터 파일 종료 요청을 수신할 수 있다. 또는, 메모리 시스템(200)은 미리 결정된 시간 기간이 경과되거나 미리 결정된 횟수의 자동 저장이 이루어졌음을 결정할 수 있다. 이에 따라 메모리 시스템(200)은 플래시 메모리 내에서 최종 파일에 해당하는 데이터를 저장하기 위하여, 플래시 메모리 내의 새로운 주소를 할당하여 상기 순차적으로 저장된 복수의 차이 데이터를 원본 파일 데이터의 적절한 위치에 삽입시켜 원본 파일 데이터를 최종 버전의 파일로 변환할 수 있다(예를 들어, 도 3에서 도시된 바와 같이 0x2001 에서 0x2002로의 변환)(S140).
상기 언급한 바와 같이, 메모리 시스템(200)은 파일 자동 저장 기능의 미리 결정된 자동 저장 시간(예컨대, 5초)에 따라 주기적으로 차이 데이터를 형성할 수 있으며, 이에 따라, 상기 메모리 시스템(200)은 복수의 차이 데이터를 생성할 수 있다.
기존의 플래시 메모리에서의 파일 자동 저장(file auto save) 기능은 플래시 메모리의 특성 상, 어플리케이션(101)을 사용하는 사용자에 의해 데이터가 수정 및/또는 편집되면, 이전 데이터에 삽입되는 수정 및/또는 편집 데이터를 플래시 메모리 내의 동일한 페이지에 저장할 수 없는 문제가 있으며, 이에 따라, 파일 자동 저장 기능이 실행 될 때마다, 이전의 데이터에 수정 및/또는 추가된 편집 데이터를 플래시 메모리 내의 새로운 페이지 주소에 할당하여 저장하였다.
그러나, 도 4에서 도시하고 있는 단계들(S110 내지 S140)에 따르면, 하나의 주소로 할당 되어진 페이지에서 이전의 파일 데이터와 현재의 파일 데이터의 차이에 해당하는 차이 데이터를 순차적으로 저장해 놓을 수 있으며, 최종적인 파일 데이터를 형성하는 과정에서 상기 차이 데이터를 편집 및/또는 새로운 주소로의 변환을 통하여, 메모리에서의 웨어 레벨링을 구현할 수 있다. 이에 따라, 플래시 메모리를 효율적으로 관리하여 플래시 메모리의 수명이 증가될 수 있다.
도 5는 본 발명의 일 실시예에 따라 소스 코드로부터 컴파일링 시스템을 통하여 타겟 시스템으로 데이터가 할당되는 프로세스를 컴포넌트들로 도시한다.
본 발명의 일 실시예에 따르면, 컴파일링 시스템(501)은 소스 코드(502)를 생성하는 파일 및 타겟 시스템(508)과 통신할 수 있다.
도 5에 도시된 바와 같이, 컴파일링 시스템(501)은, 컴파일러(503), 어셈블러(504), 링커(505), 디버거(506) 및 라이브러리들(507)을 포함할 수 있다. 도 5에서 도시되는 컴포넌트들은 예시적인 것일 뿐이며, 추가적인 컴포넌트들이 존재할 수 있거나 도 5에서 도시되는 컴포넌트들의 일부가 생략될 수도 있다. 컴파일링 시스템(501)은 타겟 시스템(508)에 적합한 프로그램을 생성하기위 한 프로그래밍 툴들의 세트를 의미할 수 있다. 컴파일링 시스템(501)에서 수행되는 컴파일레이션은 온라인 컴파일레이션 및/또는 오프라인 컴파일레이션을 포함할 수 있다.
이러한 컴파일링 시스템(501)은 툴 체인(tool chain)으로 지칭될 수도 있다. 즉, 컴파일링 시스템(501)의 각각의 컴포넌트들의 출력은 다른 컴포넌트의 입력으로 사용될 수 있다.
또한, 컴파일링 시스템(501)은 컴파일러(503)로 대체될 수도 있다. 이러한 경우, 컴파일러(503)는 어셈블러(504), 링커(505), 디버거(506) 및 라이브러리들(507)을 통칭하는 상위 개념을 의미할 수 있다.
본 발명의 일 양상에서, 타겟 시스템(508)은 예를 들어 CPU/프로세서를 포함할 수 있다. 타겟 시스템(508)은 응용 소프트웨어를 실제로 수행하기 위한 시스템을 의미할 수 있다.
본 발명의 일 양상에서, 소스 코드(502)는 예를 들어 C 코드를 포함하는 다양한 언어들로 구성된 코드들을 의미할 수 있다. 이러한, 소스 코드(502) 응용 소프트웨어를 개발하는 호스트 시스템(미도시)에 의해 생성될 수 있다.
컴파일러(503), 어셈블러(504) 및 링커(505)는 소스 코드를 타겟 시스템(508)에서 실행가능한 프로그램으로 변환할 수 있다. 컴파일러(503) 및 어셈블러(504)를 통하여 오브젝트(object) 파일이 생성될 수 있다. 또한, 링커(505)는 이러한 오브젝트 파일을 프로그램 파일로 변환할 수 있다. 이러한 링커의 변환 프로세스에서 라이브러리들(507)에 저장된 타겟 시스템(508)과 관련된 인터페이스 데이터들이 고려될 수 있다. 라이브러리들(507)은 타겟 시스템(508)에 대한 인터페이스를 포함할 수 있다. 디버거(506)는 생성된 프로그램 파일에 대한 디버깅을 수행할 수 있다.
컴파일링 시스템(501)은 소스 코드를 타겟 시스템에 적합한 기계어 코드로 변환할 수 있다. 컴파일링 시스템(501)은 타겟 세스팀(508)의 레지스터에 할당할 데이터를 소스 코드로부터 검출하고, 하나 이상의의 레지스터들 각각에 저장된 데이터와 상기 할당할 데이터 간의 상관성(correlation)을 표시하는 상관성 정보를 생성하고, 상기 상관성 정보에 기초하여 상기 레지스터들 중에서 상기 할당할 데이터를 할당할 타겟 레지스터를 결정할 수 있다. 또한, 컴파일링 시스템(501)은 상기 결정된 타겟 레지스터에 상기 할당할 데이터를 할당할 수도 있다.
도 6은 본 발명의 일 실시예에 따른 타겟 시스템(600)을 개략적으로 도시한다.
본 명세서에서 CPU 및 프로세서는 상호 교환가능하게 사용될 수 있다.
도 6에서 도시되는 바와 같이, 본 발명의 일 양상에 따른 프로세서(601)는 컨트롤러(602), 레지스터(들)(603), 멀티플라이어(604), ALU(Arithmetic and Logic Unit)(605), 및 쉬프터(606)를 포함할 수 있다. 도 6에서 도시되는 컴포넌트들은 예시적인 것일 뿐이며, 추가적인 컴포넌트들이 존재할 수 있거나 도 6에서 도시되는 컴포넌트들의 일부가 생략될 수도 있다.
또한, 프로세서(601)는 휘발성 프로세서 및/또는 비휘발성 프로세서를 포함할 수 있다.
컨트롤러(602)는 프로세서(601)의 전반적인 동작을 제어할 수 있다.
본 발명의 일 양상에서, 컨트롤러(602)는 컴파일링 시스템으로부터 컴파일링된 기계어 코드(즉, 컴파일링된 데이터)를 수신할 수 있다.
본 발명의 추가적인 양상에서, 컨트롤러(602)는, 소스 코드를 기계어 코드로 컴파일링할 수도 있다. 컨트롤러(602)가 컴파일링을 수행하는 경우, 컨트롤러(602)는 데이터가 현재 저장된 레지스터들을 검색하고, 상기 검색된 레지스터에 데이터를 할당하는 동작들을 수행할 수 있다.
도 6에 도시되지는 않았지만, 컨트롤러(602)는 웨어 레벨 검출 모듈 및 할당 모듈을 포함할 수 있다. 또한, 이하에서 후술될 컨트롤러(602)의 동작들은 도 5의 컴파일링 시스템(501) 또는 컴파일러(503)에 의해 구현될 수도 있다.
웨어 레벨 검출 모듈은 프로세서(601)의 각 레지스터(603)의 사용 횟수를 기록하고, 웨어 레벨링 동작을 수행할 수 있다. 비휘발성 프로세서(601)의 레지스터(603)는 재기록(overwrite) 횟수에 제한이 존재할 수 있다. 따라서, 이러한 레지스터의 수명을 증가시키기 위해, 레지스터에 데이터를 기록할 때, 컨트롤러(602)는 프로세서(601)의 특정 레지스터(또는 특정 레지스터 내의 특정 메모리셀)만 반복적으로 사용되지 않도록 할 필요성이 있다. 따라서, 웨어 레벨 검출 모듈은 모든 레지스터들이 고르게 사용 되도록 하는 웨어 레벨링 동작을 수행할 수 있다. 웨어 레벨 검출 모듈은 프로세서(601)의 모든 레지스터마다 개별적으로 총 몇번의 재기록 작업이 이루어졌는지를 기록하여 관리할 수 있다.
본 발명의 추가적인 양상에서, 호스트 시스템으로부터 새로운 데이터가 기록될 경우 웨어 레벨 검출 모듈은 프로세서(601)의 모든 레지스터의 재기록 작업의 횟수를 참조하여, 모든 레지스터가 고르게 사용되는 것을 허용하기 위하여 해당 데이터가 적절한 레지스터에 기록되도록 논리 주소와 물리 주소의 맵핑 테이블(mapping table)을 변환할 수도 있다.
컨트롤러(602)는 본 발명의 일 실시예에 따라 레지스터에 할당할 데이터를 소스 코드로부터 검출할 수 있다. 또한, 컨트롤러(602)는 하나 이상의의 레지스터들 각각에 저장된 데이터와 할당할 데이터 간의 상관성(correlation)을 표시하는 상관성 정보를 생성할 수 있다. 상관성 정보는, 할당할 데이터와 레지스터에 저장된 데이터의 유사도를 표시할 수 있다. 이러한 유사도는 예를 들어, 양 데이터들의 비트 단위의 유사도를 의미할 수 있다.
이러한 상관성 정보를 생성하기 위하여, 컨트롤러(602)는, 가상의 프로세서를 구성함으로써 상기 가상의 프로세서 상의 하나 이상의 레지스터들 각각에 현재 저장된 데이터의 값들을 판독할 수 있다. 이러한 경우, 컨트롤러(602)느 상기 판독된 데이터의 값들과 상기 소스 코드로부터 검출된 데이터의 값을 비교하여, 상기 상관성 정보를 생성할 수 있다.
또한, 컨트롤러(602)는, 상관성 정보에 기초하여 레지스터들(603) 중에서 데이터를 할당할 타겟 레지스터를 결정할 수 있다. 다음으로, 컨트롤러(602)는 결정된 타겟 레지스터에 상기 할당할 데이터를 할당할 수 있다.
컨트롤러(602)는 할당할 데이터와 미리 설정된 상관성 이상의 상관성을 가지는 타겟 레지스터가 결정되지 않을 경우에는 가장 적게 사용된 레지스터를 타겟 레지스터로 결정할 수 있다. 이러한 컨트롤러의 동작은 전술한 웨어 레벨링 모듈을 이용하여 구현될 수 있다.
더불어, 컨트롤러(602)는 상관성 정보에 기초하여, 소스 코드로부터 레지스터에 할당할 데이터와 상관성이 가장 높은 데이터가 현재 저장된 레지스터를 검색할 수 있다. 즉, 컨트롤러(602)는 상관성 정보에 기초하여, 상기 레지스터들 중 상기 할당할 데이터와 상관성이 가장 높은 데이터가 현재 저장된 레지스터를 타겟 레지스터로 결정할 수 있다.
본 발명의 일 실시예에 따라 컨트롤러(602)는 상기 할당할 데이터와 상기 검색된 레지스터에 저장된 데이터의 상관성이 미리 설정된 상관성 이상인 경우(예컨데, 양 데이터가 동일한 경우), 재기록 없이 상기 검색된 레지스터에 상기 할당할 데이터를 할당할 수 있다.
본 발명의 일 양상에서, 예를 들어, 8개의 비트들의 입력이 인입되는 경우, 미리결정된 비율(예컨대, 60%)이상의 일치값을 갖는 비트들(예컨대, 5개)을 갖는 사정 저장된 데이터가 존재한다면, 이러한 양 데이터는 미리 설정된 상관성이 존재한다고 결정될 수 있다. 전술한 비율은 예시일 뿐이며, 다양한 방식의 데이터 간 상관성 결정 방법이 존재할 수 있다.
전술한 동작들에 의하여 검색되는 레지스터들은 구버전(oldversion)의 데이터가 저장된 무효 페이지(invalid page, obsolete page, garbage page)또는 현재버전의 데이터가 저장되어있는 유효 페이지(valid page)를 포함할 수 있다.
컨트롤러(602)의 할당 모듈은 컴파일러에서 생성된 데이터를 레지스터(603)에 할당할 수 있다. 또한, 할당 모듈은 본 발명의 일 실시예에 따라서, 상기 검색된 레지스터(즉, 타겟 레지스터)에 데이터를 할당할 수 있다. 컴파일러가 레지스터(603)에 데이터를 할당하는 경우, 본 발명의 일 실시예에 따라서 할당할 데이터와 상관성이 높은 데이터가 현재 저장된 레지스터를 검색하여, 상기 레지스터(즉, 타겟 레지스터)에 데이터를 할당할 수 있다. 이경우, 할당할 데이터와, 현재 저장된 데이터의 상관 관계가 일정 수준 이상이면(예컨데, 동일한 데이터) 재기록 없이 해당 데이터를 해당 레지스터에 할당하여, 레지스터의 수명을 증가시킬 수 있다. 더불어, 할당될 데이터와 일정 수준 이상의 상관성을 갖는 데이터가 저장된 레지스터에 상기 할당될 데이터를 할당하여 기록 및 저장하는 경우, 데이터의 재기록의 양이 줄어들 수 있기 때문에, 웨어 레벨링 효과가 달성될 수 있다.
또한, 컨트롤러(602)는 할당할 데이터와 미리 설정된 상관성 이상의 상관성을 가지는 레지스터에 저장된 데이터가 존재하지 않을 경우, 가장 적게 사용된 레지스터에 상기 데이터를 할당할 수 있다. 또한, 컨트롤러(602) 웨어 레벨링 모듈에 의해 기록된 레지스터의 사용 횟수에 적어도 부분적으로 기초하여 가장 적게 사용된 레지스터에 데이터를 할당할 수 있다. 따라서, 레지스터의 사용량이 특정 레지스터에 치우치지 않도록 설정될 수 있다.
본 발명의 일 양상에서, 멀티플라이어(604), ALU(605) 및 쉬프터(606)는 산술, 수학 및 논리 등과 관련된 프로세스들을 수행할 수 있다. 예를 들어, 멀티플라이어(604)는 2개의 레지스터들로부터의 값들을 획득하여 이들을 곱하여 다른 레지스터에 결과값을 저장할 수 있다. 또한, 예를 들어, ALU(605)는 덧셈, 뺄셈, 절대값 연산, 논리 연산(AND, OR, XOR 및 NOT), 변환 등의 연산들을 수행할 수 있다. 더불어, 예를 들어, 쉬프터(606)는 시프팅(shifting), 로테이팅(rotating) 등과 같은 바이너리 연산을 수행할 수 있다.
도 7은 기존의 컴파일러가 레지스터에 데이터를 할당하는 예시를 도시한다.
도 7은 기존의 컴파일러에 의해 컴파일 되는 어셈블리 코드(assembly code) 또는 기계어 코드의 예시를 도시한다. 상기 예시에서 레지스터의 값은 코드가 프로세서에서 동작할 때 변경될 수 있다.
도 7에서 도시되는 예시에서의 코드는 간단한 수학과 관련한 것으로, 계산1은 1+(-1)을 계산해서 결과를 저장하고, 계산 2는 1-(-1)을 계산해서 결과를 저장한다. 컴파일러에서 컴파일이 되는 경우 각각의 정수(1, -1) 변수들, m 및 n이 레지스터에 맵핑(mapping)된다.
기존의 방법에서는 상기 데이터들은 무작위로 선택된 레지스터에 맵핑된다. 따라서, 계산1에서 m은 레지스터 R0에, n은 레지스터 R1에 각각 맵핑된다. 예를 들어, 여기서의 레지스터들은 범용 레지스터들일 수 있다.
주어진 데이터(상수) 1($0001) 및 -1($FFFF)는 각각R0, R1에 할당된다. 이러한 할당은 도 7에서의 move 동작에 의해 수행된다. 그리고, R0과 R1의 덧셈 연산이 수행되고 그 결과가 누산기(또는 ALU) A에 기록될 수 있다. 누산기 A 또한 레지스터의 특정 영역에 미리 할당될 수 있다.
또한, 계산 2를 수행할 때, m은 레지스터 R0에, n은 레지스터 R1에 각각 맵핑되고, R0에는 -1($FFFF)가 할당되고, R1에는 1($0001)가 할당된다. 따라서 계산2를 수행할 때 m = R0 = -1 , n = R1 = 1이 각각 맵핑될 수 있도록, 레지스터 R0, R1는 각각 업데이트된다.
도 7에서 도시된 예시에서 레지스터 R0는 $2352에서 $0001로, 그리고 $FFFF 값으로 순차적으로 업데이트 될 수 있다. 또한, 레지스터R1은 $0111에서 $FFFF로 그리고 $0001로 순차적으로 업데이트 될 수 있다.
도 8은 본 발명의 일 실시예에 따른 레지스터에 데이터가 할당되는 예시를 도시한다. 전술한 예시와 동일한 코드에서 컴파일러가 특히 변수 m, n이 맵핑되는 레지스터를 선택하는 것을 특징으로 한다. 본 발명의 일 실시예에 따라 컴파일러는 변수를 맵핑하는 레지스터를 선택할 수 있다.
계산1 과정에서, m은 후보 레지스터들 중에서 할당할 값인 $0001과 가장 가까운(상관성이 높은) 값($0111)이 저장된 R1에 맵핑된다. 또한, n은 할당할 값인 $FFFF와 가장 가까운 값($FFF3)이 저장된 R2에 맵핑된다. 계산2를 수행하기 위한 맵핑 과정에서 본 발명의 일 양상에 따른 기법에 의한 기술적 효과가 발생한다. 도 6의 예시에서는 m, n이 각각 R0, R1에 맵핑되어 각각 완전히 다른 값으로 업데이트되었다.
그러나 본 발명의 일 실시예에 따라 도 8의 예시에서의 컴파일러는 각 레지스터의 이전 값을 확인하여 맵핑할 레지스터를 제안하여, m과 R2를 맵핑하고, n과 R1을 맵핑하는 최적화 과정을 수행할 수 있다. 따라서 전술한 과정에서 각 레지스터는 업데이트(즉, 재기록(overwrite)) 되지 않을 수 있다. 따라서, 비휘발성 프로세서의 레지스터는 도 6에서의 기존의 기법과 비교 했을때, 웨어링(wearing)되지 않을 수 있다. 전술한 데이터와 레지스터 맵핑은 예시일 뿐이며 다양한 타입의 데이터가 다양한 타입의 레지스터에 맵핑될 수 있다.
도 7과 도 8을 비교하면, 도 8에서 도시되는 맵핑 방식은, 예를 들어, 비휘발성 프로세서(비휘발성 레지스터)의 수명을 극대화 하는 효율적인 레지스터 맵핑을 통해 프로세서의 계산량을 증가시키지 않고도 최소한의 레지스터 업데이트를 허용할 수 있다.
전술한 예시에서, 16진수 값들이 기존의 방법으로 업데이트 된 경우와 비교하였을 때, 본 발명의 일 실시예에 의한 방법을 적용하는 경우, 오직 3개의 값만을 업데이트 하고도 동일한 결과를 얻을 수 있다. 따라서, 본 발명의 일 양상에 따른 기법을 사용하는 경우, 업데이트 횟수가 줄어들 수 있어서, 프로세서의 수명이 증대될 수 있다. 더불어, 본 발명의 일 양상을 따르면, 계산2에서의 move동작에 대한 필요성이 제거될수 있으며, 컴파일러는 결과적으로 두번의 동작 사이클을 저장하면 된다.
또한, 도 5 및 6과 관련하여 앞서 설명된 바와 같이, 컴파일러는 레지스터에 할당할 데이터들간의 상관성을 검출할 수 있다. 예를 들어, 도 8에서와 같이, 계산1에서의 m과 계산 2에서의n은 상관성을 가지는 데이터일 수 있다. 이러한 상관성은 컴파일러(또는 컨트롤러)에 의해 검출 또는 결정 될 수 있다. 상기 데이터를 레지스터에 할당하는 단계에서, 컴파일러는 데이터들 중 미리 설정된 상관성 이상의 상관성을 갖는 둘 이상의 데이터들을 동일한 레지스터에 할당할 수 있다. 예를 들면, 계산1에서의 m과 계산2에서의 n은 1이라는 동일한 데이터를 가진다. 따라서, 이를 동일하게 레지스터 R1에 할당할 수 있다. 미리 설정된 상관성 이상의 상관성은 예를 들어 양 데이터가 동일한 경우를 의미할 수 있다. 전술한 데이터 및 레지스터는 예시일 뿐이며 다양한 데이터들이 다양한 레지스터에 할당될 수 있다. 또한, 전술한 상관성은 예시일 뿐이며, 효율적인 컴파일링을 위한 다양한 타입의 상관성들이 존재할 수 있다. 또한, 상관성은 데이터들이 동일한 경우를 의미하는 것뿐만 아니라, 데이터 단위에서 예컨대 일정 이상의 비트(bit)들이 동일한 경우를 의미할 수 있다.
입력할 데이터와 적절하게 매칭되는 데이터가 저장된 레지스터가 존재하지 않는 경우에 컴파일러는 웨어 레벨링을 위해 가장 적게 사용된 레지스터에 데이터를 할당할 수 있다. 이때 컴파일러는 웨어 레벨링 툴에 의해 기록된 메모리의 사용 횟수에 적어도 부분적으로 기초하여 가장 적게 사용된 레지스터를 탐색할 수 있다.
도 9는 본 발명의 일 실시예에 따른 레지스터에 데이터가 할당되는 방법을 도시하는 순서도이다.
또한, 도 9에 도시된 순서도의 각 단계는 필수적인 것은 아니며 필요에 따라 일부 단계들이 생략되거나 추가될 수도 있다.
전술한 바와 같이, 비휘발성 프로세서(NVP) 패러다임에서는 비휘발성 프로세서를 구성하는 레지스터들은 SSD와 같은 비휘발성 메모리의 형태로 형성될 수 있다. 예를 들어, 비휘발성 프로세서로 구성된 CPU의 경우, SSD로 이루어진 레지스터에서는 수많은 데이터들의 기록 및 덮어쓰기(재기록) 작업이 이루어지기 때문에, SSD의 특성상 웨어 레벨링을 적절히 수행하지 않으면 레지스터의 수명에 있어서 문제가 될 수 있다.
본 발명의 일 실시예에 따라 컴파일러(또는 프로세서의 컨트롤러)는 프로세서 또는 CPU에 위치한 레지스터들에 할당할 데이터를 소스 코드로부터 검출할 수 있다(S210). 예를 들면 도 8을 참조하여 설명한 바와 같이, 계산1에서 m에 할당할 1, n에 할당할 -1등이 데이터가 될 수 있다. 전술한 데이터는 예시일 뿐이며, 본 발명은 컴파일러에서 레지스터로 할당할 수 있는 모든 종류의 데이터를 포함할 수 있다.
추가적으로, 일반적인 컴파일러는 컴파일링을하며 레지스터에 데이터를 할당하는데, 본 발명의 일 실시예에 따른 컴파일러는 먼저 레지스터에 할당할 데이터를 소스 코드로부터 검출하여 컴파일러가 효율적인 컴파일링을 수행할 수 있도록 할 수도 있다.
본 발명의 일 실시예에 따라 컴파일러는 하나 이상의의 레지스터들 각각에 저장된 데이터와 상기 할당할 데이터 간의 상관성(correlation)을 표시하는 상관성 정보를 생성할 수 있다(S220). 보다 구체적으로, 예를 들어, 이러한 상관성 정보는, 가상의 프로세서를 구성함으로써 상기 가상의 프로세서 상의 하나 이상의 레지스터들 각각에 현재 저장된 데이터의 값들을 판독하고, 판독된 데이터의 값들과 상기 소스 코드로부터 검출된 데이터의 값을 비교함으로써 생성될 수 있다. 즉, 전술한 방식에 의하여, 소스 코드 상의 이전 연산을 통하여 특정 레지스터에 어떠한 값이 기록되었는지가 결정될 수 있다.
컴파일러는 상관성 정보에 기초하여 상기 레지스터들 중에서 상기 할당할 데이터를 할당할 타겟 레지스터를 결정할 수 있다(S230).
예를 들면, 도 8을 참조하여 설명한 바와 같이, 본 발명의 일 실시예에 따른 컴파일러는 계산1에서 할당할 데이터인 $0001과 가장 높은 상관성을 가지는 데이터인 $0111가 저장된 레지스터 R1(즉, 타겟 레지스터)을 검색할 수 있다. 이러한 상관성은 할당할 데이터와 레지스터에 저장된 데이터를 비교하여, 일치하는 비트(bit)의 수를 통해 결정될 수 있다. 할당할 데이터와 레지스터에 저장된 데이터가 일지하는 비트 수가 많을수록 할당할 데이터와 레지스터에 저장된 데이터의 상관성은 높을 수 있다.
본 발명의 일 실시예에 따라 컴파일러는 상기 결정된 타겟 레지스터에 상기 할당할 데이터를 할당할 수 있다(S240).
예를 들면, 도 8을 참조하여 설명한 바와 같이, 본 발명의 일 실시예에 따른 컴파일러는 할당할 데이터 $0001과 가장 높은 상관 관계를 가진 데이터($0111)가 저장된 R1(즉, 타겟 레지스터)에 데이터를 할당할 수 있다.
또한, 컴파일러는 상기 할당할 데이터와 타겟 레지스터에 저장된 데이터의 상관성이 미리 설정된 상관성 이상인 경우 재기록 없이 타겟 레지스터에 상기 할당할 데이터를 할당할 수도 있다. 즉, 컴파일러는 상기 할당할 데이터와 동일한 값이 저장된 레지스터가 검색된 경우, 재기록 없이 상기 검색된 레지스터에 상기 할당할 데이터를 할당할 수 있다. 이러한 데이터 할당을 통해 레지스터의 재기록 횟수에 영향을 주지 않고 데이터를 할당할 수 있다.
또한, 컴파일러는 상기 할당할 데이터와 미리 설정된 상관성 이상의 상관성을 가지는 레지스터에 저장된 데이터가 존재하지 않을 경우, 가장 적게 사용된 레지스터에 상기 데이터를 할당할 수 있다. 비휘발성 프로세서의 레지스터는 기록 횟수에 제한이 있으므로, 모든 레지스터를 고르게 사용할 필요성이 존재한다. 따라서 웨어 레벨링 모듈을 이용하여, 레지스터의 사용 횟수가 기록될 수 있고, 모든 레지스터의 사용 횟수가 고르게 분포하도록 가장 적게 사용된 레지스터부터 데이터가 할당될 수 있다. 따라서, 컴파일러 또는 컨트롤러는 웨어 레벨링 모듈에 의해 기록된 레지스터의 사용 횟수에 적어도 부분적으로 기초하여 가장 적게 사용된 레지스터를 탐색할 수 있다. 컴파일러 또는 컨트롤러는 상기 탐색된 레지스터(타겟 레지스터)에 데이터를 할당할 수 있다.
나아가 본 발명의 다른 일 실시예에 따라, 컴파일러는 레지스터에 할당할 데이터들의 상관성를 소스 코드로부터 검출할 수 있다. 컴파일러는 상기 데이터들 중 미리 설정된 상관성 이상의 상관성을 갖는 둘 이상의 데이터들을 동일한 레지스터에 할당할 수 있다. 도 8을 참조하여 설명한 바와 같이, 계산1에서의 m과 계산2에서의 n은 상기 상관성을 가지는 데이터들 일 수 있다. 이때, 상기 데이터들을 레지스터에 할당할때, 컴파일러는 상기 데이터들을 동일한 레지스터에 할당할 수 있다. 예를 들면, 계산 1에서의 m과 계산 2에서의 n은 1이라는 동일한 값을 가진다. 따라서, 컴파일러는 상기 m, n을 레지스터 R1에 할당할 수 있다. 이때 미리 설정된 상관성 이상의 상관성은 양 데이터가 동일한 경우를 의미할 수 있다. 전술한 데이터 및 레지스터는 예시일 뿐이며 다양한 데이터들이 다양한 레지스터에 할당될 수 있다. 또한, 전술한 상관성 또한 예시일 뿐이며, 효율적인 컴파일링을 위한 다양한 상관성이 존재할 수 있다. 또한, 상관성은 데이터들이 동일한 경우를 의미하는 것뿐 아니라, 데이터 단위에서 일정 이상의 비트(bit)들이 동일한 경우를 의미할 수 있다.
도 10은 본 발명의 일 양상에 따라 파일럿 셀들을 포함하는 데이터 블록을 예시적으로 도시한다.
전술한 바와 같이, 플래시 메모리와 같은 메모리들은 데이터를 저장하기 위해 아날로그 메모리 셀들의 어레이들을 사용할 수 있다. 각각의 아날로그 메모리 셀은 셀 내에 저장된 정보를 표현하기 위하여 전하량 또는 전압과 같은 아날로그 값들의 양을 저장할 수 있다. 예를 들어, 각각의 메모리 셀은 특정한 양의 전하량을 보유하고 있다. 이러한 아날로그 값들의 범위는 일반적으로 특정한 영역(region)들로 나뉠수 있으며, 각각의 영역은 하나 이상의 데이터 비트 값들과 대응될 수 있다. 예를 들어, SLC는 2개의 영역들로 나뉠 수 있으며, MLC 등의 복수의 레벨들을 갖는 셀들은 4개 이상의 영역들로 나뉠 수 있다.
SSD와 같은 메모리에서, 데이터는 요구되는 비트들에 대응하는 노미널(nominal) 아날로그 값을 기록함으로써 아날로그 메모리에 기록될 수 있다. 이러한 아날로그 값들은 다양한 통계적인 분포를 가질 수 있기 때문에, 상이한 레벨들을 프로그래밍하기 위해 사용되는 노미널 값들에 대한 선택은 메모리 셀 어레이의 성능에 큰 영향을 미칠 수 있다.
노미널 값들이 서로 인접한 경우에는, 메모리 셀의 판독에 있어서 에러가 발생될 확률이 높다. 반면에, 노미널 값들이 서로 차이가 많이 나는 경우에는, 메모리 셀 어레이에서의 아날로그 값들의 동적인 범위를 증가시킬 수 있다. 이러한 경우에는 보다 많은 전력이 소모될 수 있을 뿐만 아니라 메모리 셀의 프로그래밍 속도가 늦어질 수도 있다.
각각의 셀에서의 노미널 값들은 시간적으로 그리고 공간적으로 변경될 수 있는 속성을 갖고 있기 때문에, 판독 및 기록하는데 있어서 일정한 미리결정된 값을 사용하는 것은 BER(bit error rate) 등과 같은 메모리의 성능에 있어서 악영향을 미칠 수 있다.
또한, 하나의 셀에서의 보다 많은 전압 레벨 상태들이 존재하는 경우에, 데이터를 기록 및 판독하는데 있어서 아날로그 전압의 특성상 에러가 발생될 확률이 보다 높을 수 있다.
이러한 상황에서, 본 발명은 페이지의 미리결정된 영역에 위치한 파일럿 셀에서의 미리결정된 노미널 값들을 이용하는 프로그래밍 기법을 제안한다. 이러한 프로그래밍 기법을 통하여, 파일럿 셀들에서 판독되는 아날로그 전압들은 인접한 데이터 셀들에서의 전압들의 에러 및 변화 등을 보상하기 위해서 사용될 수 있다.
도 10에서 도시되는 바와 같이, 본 발명의 일 양상에 따른 메모리의 블록내의 하나의 페이지는 하나 이상(예컨대, 4개의)의 파일럿 셀 및 복수의(예컨대, 32768개의) 데이터 셀들로 구성될 수 있다. 도 10에서는 4개의 파일럿 셀들을 예시적으로 도시하였지만, 그 이상 또는 그 이하의 개수의 파일럿 셀들 또한 본 발명의 범위 내에 포함될 수 있다.
도 10에서는 4개의 노미널 값들을 갖는 MLC로 구성된 SSD를 예시한다. 각각의 페이지에 A, B, C 및 D로 표시된 4개의 파일럿 셀들이 미리설정될 수 있다. 각각의 파일럿 셀에 대하여, 파일럿 셀 A는 11로, 파일럿 셀 B는 10으로, 파일럿 셀 C는 00으로 그리고 파일럿 셀 D는 01으로 할당될 수 있다. 이러한 파일럿 셀들은 각각 고유의 노미널 값(즉, 기준 전압 값)을 가질 수 있다.
파일럿 셀들 A, B, C 및 D에 각각 대응하는 노미널 값들은 고정된 값이거나, 각각의 페이지에 대하여 상이하게 할당되거나, 웨어 레벨링을 구현하기 위하여 다양한 방식으로 변경될 수도 있다. 또한, 이러한 파일럿 셀들(A 내지 D)은 페이지 내에서의 다양한 위치에 배치될 수 있다. 예를 들어, 상기 파일럿 셀들은 페이지의 앞, 중간, 또는 끝 부분에 위치할 수 있다. 이러한 파일럿 셀들의 배치는 페이지들의 타입, 프로그래밍 카운트, 및 랜덤한 방식 등에 기초하여 결정될 수도 있다.
이러한 파일럿 셀들을 사용함으로써, 페이지 내에 미리결정된 위치에 배치된 파일럿 셀들에서의 미리정의된 노미널 값들을 사용하여 데이터가 프로그래밍될 수 있다. 다음으로, 파일럿 셀들의 값들을 참고함으로써 데이터 셀에 대한 판독 또는 기록 동작이 수행될 수 있다.
도 11은 본 발명의 일 양상에 따라 프로그래밍 카운트에 따른 그리고 페이지에 따른 파일럿 셀들의 배치 변화를 예시적으로 나타낸다.
도 11에서 도시되는 바와 같이, 파일럿 셀들은 프로그래밍 카운트 및/또는 페이지에 기초하여 다양한 위치에 배치될 수 있다. 이러한 다양한 위치로의 배치를 통하여, 파일럿 셀들은 데이터 셀들에 대한 참조를 제공함에 있어서 보다 유용한 값들을 나타낼 수 있다. 추가적으로, 이러한 다양한 위치로의 배치는 페이지 내에서의 웨어 레벨링 효과 또한 달성할 수도 있다.
본 발명의 일 양상에 따르면, 메모리 컨트롤러(201)는 파일럿 셀들로 전압값을 인가하여 데이터를 기록한 이후에, 데이터 셀들로의 기록 또는 판독 이전에 파일럿 셀들을 판독하여 데이터 셀들로의 기록 또는 판독에 사용될 전압값을 결정할 수 있다.
본 발명의 일 양상에 따라, 메모리 컨트롤러(201)는 파일럿 셀들로 값들을 기록한 이후에, 파일럿 셀들에 대한 아날로그 전압 값들을 판독할 수 있다. 본 명세서에서, 일반적으로 프로그래밍한다는 것은 검증을 위하여 전압을 재-판독하는 프로세스를 포함할 수 있다.
검증을 위한 판독 프로세스 대신에, 프로그래밍을 위하여 사용되는 전압 스텝들보다 높은 해상도(resolution)를 사용하여, 보다 정확한 전압 값들이 판독될 수 있다. 예를 들어, 파일럿 셀 D에 ‘00’의 값을 기록할 때, 5V의 전압으로 기록될 수 있다. 하지만, 해당 셀을 판독할 때, 4.7V의 전압으로 판독될 수 있다. 반대의 상황 또한 발생될 수 있다.
이러한 상황에서, 데이터 영역들에서의 프로그래밍 시점에서는, 파일럿 셀들에서의 판독 전압들과 관련되어 계산된 노미널 값들을 이용하여 기록 동작이 수행될 수 있다. 즉, 전술한 바와 같이, 판독 프로세스에서의 노미널 값들이 의도된 기준 전압값에 도달하지 않는 경우에서(기록 5V 및 판독 4.7V), 기록할 때의 전압값과 판독될 때의 전압값의 차이만큼의 전압(예컨대, 0.3V)이 데이터 셀을 프로그래밍하는데 있어서 고려될 수 있다. 즉, 데이터 셀을 프로그래밍할 때, 5.3V의 전압으로 기록될 수 있다. 이러한 경우, 데이터 셀을 판독하는데 있어서 기준 전압 값이 5V를 사용하는 경우 보다 정확한 판독이 이루어질 수 있다.
반대로, 판독 프로세스에서의 노미널 값들이 의도한 기준 전압값을 초과하는 경우에서는(기록 5V 및 판독 5.3V), 기록할 때의 전압값과 판독될 때의 전압값의 차이만큼의 전압(예컨대, -0.3V)이 데이터 셀을 프로그래밍하는데 있어서 고려될 수 있다. 즉, 데이터 셀을 프로그래밍할 때, 4.7V의 전압으로 기록될 수 있다. 이러한 경우, 데이터 셀을 판독하는데 있어서 기준 전압 값이 5V를 사용하는 경우 보다 정확한 판독이 이루어질 수 있다.
이러한 기법은 하나의 페이지 내에서는 셀들의 전압에 대한 민감도(sensitivity) 및 응답성(responsiveness)이 유사하다는 가정에 기초할 수 있다. 즉, 웨어 레벨, 온도 및 셀들의 민감도에 영향을 미치는 다른 변수들은 동일한 페이지 내에서의 프로그래밍에 있어서 유사한 특성을 가질 수 있다. 따라서, 이러한 파일럿 셀들로부터의 피드백을 이용한 프로그래밍으로 인하여, 최적의 노미널 값이 결정 및 유지될 수 있다. 이러한 프로세스를 통하여, 프로그래밍 프로세스에서 파일럿 셀들로부터의 피드백을 반영하여 프로그래밍하였기 때문에, 판독 프로세스는 특별한 계산 동작 없이 미리정의된 기준 전압값을 이용하여 간단하게 수행될 수 있다.
도 12는 본 발명의 일 양상에 따라 페이지 내에서의 파일럿 셀들을 이용한 판독 기법을 예시적으로 도시한다.
메모리 컨트롤러(201)는 파일럿 셀들에서 참조된 피드백을 반영하지 않고 파일럿 셀들에서 사용된 미리정의된 노미널 값들을 사용하여 데이터 영역에 대한 프로그래밍을 수행할 수 있다. 즉, 파일럿 셀들과 데이터 셀들을 포함하는 페이지는 주어진 동일한 노미널 값들을 이용하여 프로그래밍될 수 있다. 대신에, 판독 프로세스에서는, 메모리 컨트롤러(201)는 파일럿 셀들을 먼저 판독하고, 파일럿 셀들에서의 판독 아날로그 전압값들을 참고함으로써 데이터 셀들을 판독하는데 사용될 임계 전압값들을 계산한다.
도 12는 판독 프로세스에서 파일럿 셀들의 판독 전압값들을 먼저 참고하여 데이터 셀들에 대한 판독 전압 값을 결정하기 위한 프로세스를 예시적으로 나타낸다.
파일럿 셀들(A, B, C 및 D) 각각은 ‘11’, ‘10’, ‘00’, ‘01’에 대응하여 노미널 값(기준 전압값)들을 이용하여 프로그래밍될 수 있다. 프로그래밍된 셀들에서 판독될 수 있는 전압값들은 도 12에서 원으로 표시된다. 예를 들어, 도 12에서 도시되는 바와 같이, ‘11’의 값이 기록된 파일럿 셀 A의 경우 기준 전압값보다 낮은 전압값으로 판독될 수 있다. 또한, ‘10’의 값이 기록된 파일럿 셀 B의 경우 기준 전압값보다 높은 전압값으로 판독될 수 있다.
이러한 파일럿 셀들에 대한 판독 전압값은 해당 페이지에 대한 새로운 기준 전압으로 사용될 수 있다. 즉, ‘10’의 값을 판독하기 위한 전압 레벨은 도 12에서 도시된 바와 같이, ‘10’의 값을 기록할 때에 사용되었던 전압 레벨값(default reference voltage)이 아닌 파일럿 셀 B를 판독하는데 있어서 실제로 측정된 전압 레벨값(proposed reference voltage)이 해당 페이지 내에서의 데이터 셀들을 판독하기 위한 전압 레벨값으로 사용될 수 있다.
따라서, 이러한 방식의 파일럿 셀들을 이용한 판독 프로세스는 기존의 판독 프로세스 보다 적은 판독 에러를 발생시킬 수 있다.
본 발명의 추가적인 양상에서, 본 명세서에서는 하나의 블록 내에서의 노미널 값들에 대한 다수의 파일럿 셀들을 제시하였지만, 대안적으로 아날로그 전압값들 또는 노미널 값들은 블록 단위로 평균화되어 계산될 수 있거나 또는 시간에 따라 평균화되어 계산될 수도 있다. 나아가, 이러한 아날로그 값들은 예를 들어, DRAM과 같은 일시적 메모리에 저장될 수 있어서, 보다 빠른 데이터 액세스를 도모할 수 있다.
도 13은 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
데이터가 프로그래밍된 이후에 임의의 시간이 지나게되면, 아날로그 전압값의 분포는 도 13에서 도시된 바와 같이 변화될 수 있다. 이러한 상황에서, 각각의 페이지에 대하여 노미널 값들이 적응적으로 정의되는 방법이 고려될 수 있다. 이러한 방법은 셀들의 상이한 응답 특성을 고려하기 때문에, 에러 발생 및 전력 소비에 대한 장점을 가질 수 있다.
보다 구체적으로, 노미널 전압값들은 데이터의 프로그래밍 동안에 적응적으로 선택될 수 있다. 다음으로, 이러한 전압값들은 스토리지를 판독하기 위해 사용될 파라미터들로서 저장될 수 있다. 이는 각각의 페이지 마다 상이한 파라미터 값으로 저장되어야 한다. 하지만, 이러한 파라미터들은 스토리지 입장에서는 방대한 오버헤드일 수 있다. 즉, 이러한 파라미터들을 할당하기 위한 별도의 방대한 공간을 마련해야만 할 것이다.
앞서 도 11 및 도 12와 관련된 본 발명의 일 양상에 따른 기술적 특징들은 이러한 파라미터들을 저장하기 위한 별도의 공간을 요구하지 않고서도 파일럿 셀들에 대한 아날로그 전압값들을 참조하여 데이터 셀에 대한 데이터를 효율적으로 판독할 수 있다.
따라서, 본 발명의 일 양상에 따르면, 도 13에서 도시되는 바와 같이, 파일럿 셀들을 미리 참조하여 파일럿 전압 레벨을 결정하게 되는 경우, 데이터의 프로그래밍 이후 전압 레벨의 변경이 발생하더라도 각각의 셀들의 응답 특성을 파악하지 않고서 적절한 임계 전압값을 찾을 수 있다. 즉, 파일럿 셀들을 사용하는 경우에는 스토리지 공간을 낭비하지 않고 보다 강건한 임계 전압값들을 생성할 수 있다.
도 14는 본 발명의 일 양상에 따라 파일럿 셀들을 이용한 예시적인 전압 판독 메커니즘을 도시한다.
도 14는 하나의 블록 내에서의 메모리 셀들의 복수의 열(column)과 행(raw)들을 갖는 복수의 셀 어레이를 나타낸다. 도 14에서 도시되는 메모리 셀들은 특정 어레이 구성 내에서 서로 접속되어 있다. 이러한 메모리 셀들의 어레이 구성은 예시적인 것이며, 다른 타입의 메모리 셀들 또는 다른 어레이 구성들 또한 본 발명의 범위내에 포함될 수 있다.
전술한 바와 같이, 메모리 셀에 저장된(또는 기록된) 값은 셀의 임계 전압(Vt)을 측정함으로써 판독될 수 있다. 이러한 판독 임계 전압은 메모리 셀에 저장된 전하의 양을 나타낼 수 있다.
도 14에서 도시되는 바와 같이, 예를 들어, 하나의 페이지는 4개의 파일럿 셀들(1401) 및 32768개의 데이터 셀들(1402)을 포함할 수 있다. 각각의 메모리 셀들은 플로팅 게이트 트랜지스터를 포함하고 있다. 이러한 하나의 페이지 내에서의 파일럿 셀들(1401) 및 데이터 셀들(1402)(즉, 셀들의 트랜지스터들의 게이트들)은 동일한 워드 라인을 공유하고 있다. 또한, 각각의 열 내에서의 트랜지스터들의 소스들은 비트 라인에 의해 서로 접속될 수 있다. NOR 셀의 경우에는 소스들이 비트 라인들에 직접적으로 접속될 수 있으며, NAND 셀의 경우에는 플로팅 게이트의 스트링에 비트 라인이 접속될 수 있다.
도 14에서는 MLC의 경우를 예로 들었기 때문에, 4개의 상이한 노미널 값들이 존재할 수 있다. 이러한 4개의 상이한 노미널 값들은 각각 파일럿 셀 A, B, C 및 D로의 기록을 위해 사용될 수 있다.
본 발명의 일 양상에서, 예시적인 데이터 블록은 스위치(1403) 및/또는 페이지 버퍼(1404)를 더 포함할 수 있다. 이러한 스위치(1403)는 파일럿 셀들의 드레인들로부터 데이터 셀들의 소스들로의 경로 내에 배치될 수 있다.
데이터 판독 요청에 대응하여 판독할 타겟 페이지(target page to read)가 결정될 수 있다. 판독될 타겟 페이지에 스텝 전압이 인가될 수 있다. 메모리 컨트롤러(201) 또는 판독 모듈(205)은 셀의 게이트(즉, 셀이 접속되어 있는 워드 라인)에 이러한 스텝 전압을 인가함으로써 특정 메모리 셀의 임계 전압(Vt)을 판독할 수 있다. 이는 특정 셀의 드레인 전류가 임계전압(Vt)를 초과하였는지 여부를 체크함으로써 구현될 수도 있다. 즉, 메모리 컨트롤러(201) 또는 판독 모듈(205)은 스텝 전압을 특정 셀이 접속된 워드 라인에 인가함으로써, 드레인 전류가 임계 전압(Vt)를 초과하는 최소의 게이트 전압 값을 결정할 수 있다.
도 14에서 도시되는 바와 같이, 메모리 컨트롤러(201) 또는 판독 모듈(205)은 타겟 페이지의 워드 라인에 스텝 전압을 인가하여 타겟 페이지 내의 파일럿 셀들(1401)의 판독 임계 전압값을 측정할 수 있다. 즉, 타겟 페이지 내의 파일럿 셀(예컨대, 파일럿 셀 A)에 대응하는 임계 전압(Vt)이 초과되는 경우, 스위치(1403)가 닫혀 해당 페이지 내의 데이터 셀(1402)로 전류가 흐를 수 있다.
도 15는 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀 판독 기법을 예시적으로 나타낸다.
도 15에서 도시되는 바와 같이, 메모리 컨트롤러(201) 또는 판독 모듈(205)에 의해 스텝 전압이 타겟 페이지에 대한 워드 라인으로 입력될 수 있다. 스텝 전압이 파일럿 셀 A에 대응하는 임계 전압(Vt)을 통과할 때, 제어 게이트(control gate)에 대한 스위치가 구동될 수 있다. 이에 따라, 데이터 셀들의 비트 라인들로 전류가 흐르게 되고, 데이터 셀들은 파일럿 셀 A에 의하여 결정된 적응형 임계 전압값에 따라 판독될 수 있다.
파일럿 셀들 B, C 및 D에 대해서도 순차적으로 상이한 타이밍에서 상이한 임계 전압값들을 통하여 파일럿 셀 A의 방식과 동일한 방식으로 구현될 수 있다.
도 16은 본 발명의 일 양상에 따라 스위치를 사용한 데이터 셀 판독 기법을 예시적으로 나타낸다.
도 16에서 도시되는 바와 같이, 파일럿 셀의 드레인 전압은 데이터 셀에 대한 워드 라인을 접속시키는 스위치에 의해 직접적으로 데이터 셀로 연결될 수 있다. 본 발명의 일 양상에 따라, 스텝 전압이 파일럿 셀 A에 대응하는 임계 전압(Vt)을 통과할 때, 스위치는 전류를 제어 게이트(control gate)로 흐르게하는 것이 아니라, 데이터 셀들의 게이트들로 전류를 직접적으로 흐르게 할 수 있다. 따라서, 노미널 값들의 변화 또한 자동적으로 데이터 셀로 반영될 수 있다.
전술한 방식들에 따라, 임계 전압값들의 변화는 파일럿 셀들을 통하여 직접적으로 데이터 셀들로 반영될 수 있다. 이러한 적응형 구현들은 기존의 메커니즘에 추가적인 계산을 요구하지 않는다.
본 발명의 추가적인 양상에서, 데이터 셀에 대한 데이터 판독의 있어서 추가적인 강건성을 도모하기 위하여, 파일럿 셀들이 그룹화되어 사용될 수도 있다. 즉, 각각의 노미널 값에 대하여 복수의 파일럿 셀들이 사용될 수도 있다. 이러한 파일럿 셀들의 그룹은 하나의 데이터 블록 또는 하나의 페이지에 대하여 공통적으로 사용될 수도 있다.
도 17은 데이터 프로그래밍 이후의 임계 전압의 변화를 예시적으로 나타낸다.
파일럿 셀들을 미리 참조하여 데이터 셀을 위한 임계 전압 레벨을 결정하게되는 경우, 데이터의 프로그래밍 이후 전압 레벨의 변경이 발생하더라도 각각의 셀들의 응답 특성을 파악하지 않고서 적절한 임계 전압값을 찾을 수 있다. 즉, 파일럿 셀들을 사용하는 경우에는 스토리지 공간을 낭비하지 않고 보다 강건한 임계 전압값들을 생성할 수 있다.
도 17에서 도시되는 바와 같이, 프로그래밍 시점에서의 임계 전압값들의 레벨 분포는 시간이 지남에 따라 도 17(a)에서 도 17(b)와 같이 변화할 수 있다. 하지만, 본 발명의 일 양상에 따른 기법은 이러한 임계전압 값들의 변화에도 불구하고, 파일럿 셀에서 판독되는 전압의 값을 통하여 데이터 셀에 대한 최적의 임계 전압값을 찾을 수 있다. 즉, 본 발명의 일 양상에 따르면, 이러한 임계 전압 값들의 변화로 인한 데이터 셀의 판독 에러 확률이 감소될 수 있다.
도 18은 본 발명의 일 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다. 도 18에서 도시되는 단계들 이외의 추가적인 단계들이 상기 방법에 포함될 수 있으며, 일부의 단계들이 생략될 수도 있다는 점은 당업자에게 명백할 것이다.
도 18에서 도시되는 바와 같이, 메모리 컨트롤러는 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널 값의 전압을 인가하여 데이터를 프로그래밍 한다(S310). 본 발명의 양상에 따르면, 상기 파일럿 셀은 데이터 셀과 동일한 블록 또는 페이지 내에 위치한다. 또한, 파일럿 셀은 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값들에 각각 대응된다. 본 발명의 일 양상에 따르면, 파일럿 셀은 메모리 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함한다.
다음으로, 메모리 컨트롤러는 파일럿 셀의 기록된 전압 값을 판독한다(S320). 이때, 메모리 컨트롤러는 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 파일럿 셀의 전압 값을 판독할 수 있다. 예를 들어, 프로그래밍을 위한 각 데이터의 노미널 값이 1V의 전압 스텝을 가진다면, 메모리 컨트롤러는 1V 간격 보다 높은 해상도인 0.2V의 해상도로 파일럿 셀의 전압 값을 판독할 수 있다.
다음으로, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값에 기초하여 파일럿 셀의 데이터에 대응하는 노미널 값을 교정한다(S330). 이때, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값과 미리 결정된 노미널 값 간의 차분값을 산출하고, 산출된 차분값을 상기 미리 결정된 노미널 값에 합산하여 교정된 노미널 값을 획득할 수 있다. 본 발명의 다른 양상에 따르면, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값과 미리 결정된 노미널 값 간의 비율을 산출하고, 산출된 비율에 기초하여 상기 미리 결정된 노미널 값을 스케일링하여 교정된 노미널 값을 획득할 수 있다.
메모리 컨트롤러는 교정된 노미널 값을 이용하여 메모리의 데이터 셀에 데이터를 프로그래밍 한다(S340).
한편, 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 파일럿 셀이 위치한 블록의 삭제 횟수 또는 페이지의 기록 횟수 정보를 획득할 수 있다. 메모리 컨트롤러는 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 파일럿 셀의 위치를 시프팅 할 수 있다.
도 19는 본 발명의 다른 양상에 따른 메모리의 데이터 처리 방법을 나타낸 순서도이다. 도 19에서 도시되는 단계들 이외의 추가적인 단계들이 상기 방법에 포함될 수 있으며, 일부의 단계들이 생략될 수도 있다는 점은 당업자에게 명백할 것이다.
도 19에서 도시되는 바와 같이, 메모리 컨트롤러는 미리 결정된 노미널 값의 전압을 이용하여 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 한다(S410). 전술한 바와 같이, 파일럿 셀은 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀을 가리킨다. 본 발명의 일 양상에 따르면, 파일럿 셀은 메모리 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함할 수 있다. 파일럿 셀은 데이터 셀과 동일한 블록 또는 동일한 페이지 내에 위치할 수 있다.
다음으로, 메모리 컨트롤러는 파일럿 셀의 기록된 전압 값을 판독한다(S420). 이때, 메모리 컨트롤러는 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 파일럿 셀의 전압 값을 판독할 수 있다.
다음으로, 메모리 컨트롤러는 판독된 파일럿 셀의 전압 값을 참조하여 데이터 셀을 판독하기 위한 임계 전압 값을 설정한다(S430). 상기 임계 전압 값은 데이터 셀의 판독 전압으로 사용되기 위한 것으로서, 일 양상에 따르면 상기 임계 전압 값은 판독된 파일럿 셀의 전압 값보다 일정 수준 낮은 값으로 설정될 수 있다. 또한 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 메모리 내의 동일한 노미널 값을 이용하여 프로그래밍 된 복수의 파일럿 셀의 판독 전압 값을 획득하고, 획득된 복수의 파일럿 셀의 판독 전압 값의 평균에 기초하여 임계 전압 값을 설정할 수 있다.
메모리 컨트롤러는 설정된 임계 전압 값에 기초하여 메모리의 데이터 셀의 데이터를 판독한다(S440).
한편, 본 발명의 일 양상에 따르면, 메모리 컨트롤러는 파일럿 셀이 위치한 블록의 삭제 횟수 또는 페이지의 기록 횟수 정보를 획득할 수 있다. 메모리 컨트롤러는 상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 파일럿 셀의 위치를 시프팅 할 수 있다.
본 발명의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 "소프트웨어"로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 발명의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.
여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 "제조 물품"은 임의의 컴퓨터-판독가능 장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다. 용어 "기계-판독가능 매체"는 명령(들) 및/또는 데이터를 저장, 보유, 및/또는 전달할 수 있는 무선 채널 및 다양한 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다.
제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 발명의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
전술한 바와 같이, 발명의 실시를 위한 최선의 형태에서 관련 사항을 기술하였다.
본 발명은 다양한 형태의 메모리 및 이를 포함하는 메모리 시스템에 적용될 수 있다.

Claims (15)

  1. 메모리의 데이터 처리 방법으로서,
    상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널(nominal)값의 전압을 인가하여 데이터를 프로그래밍하는 단계;
    상기 파일럿 셀의 기록된 전압 값을 판독하는 단계;
    상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하는 단계; 및
    상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는 단계;
    를 포함하는 메모리의 데이터 처리 방법.
  2. 제1 항에 있어서,
    상기 판독하는 단계는,
    상기 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 상기 파일럿 셀의 전압 값을 판독하는,
    메모리의 데이터 처리 방법.
  3. 제1 항에 있어서,
    상기 교정하는 단계는,
    상기 판독된 파일럿 셀의 전압 값과 상기 미리 결정된 노미널 값 간의 차분값을 산출하는 단계; 및
    상기 산출된 차분값을 상기 미리 결정된 노미널 값에 합산하여 상기 교정된 노미널 값을 획득하는 단계를 포함하는,
    메모리의 데이터 처리 방법.
  4. 제1 항에 있어서,
    상기 교정하는 단계는,
    상기 판독된 파일럿 셀의 전압 값과 상기 미리 결정된 노미널 값 간의 비율을 산출하는 단계; 및
    상기 산출된 비율에 기초하여 상기 미리 결정된 노미널 값을 스케일링하여 상기 교정된 노미널 값을 획득하는 단계를 포함하는,
    메모리의 데이터 처리 방법.
  5. 제1 항에 있어서,
    상기 파일럿 셀은 상기 데이터 셀과 동일한 블록 또는 페이지 내에 위치하는 것을 특징으로 하는,
    메모리의 데이터 처리 방법.
  6. 제5 항에 있어서,
    상기 파일럿 셀이 위치한 블록의 삭제 횟수 정보 또는 페이지의 기록 횟수 정보를 획득하는 단계; 및
    상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 상기 파일럿 셀의 위치를 시프팅하는 단계를 더 포함하는
    메모리의 데이터 처리 방법.
  7. 제1 항에 있어서,
    상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함하는,
    메모리의 데이터 처리 방법.
  8. 메모리 시스템으로서,
    복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및
    상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며,
    상기 프로그래밍 모듈은 상기 메모리 내의 미리 결정된 위치의 파일럿 셀에 미리 결정된 노미널 값의 전압을 인가하여 데이터를 프로그래밍하고,
    상기 판독 모듈은 상기 파일럿 셀의 기록된 전압 값을 판독하고,
    상기 제어 모듈은 상기 판독된 파일럿 셀의 전압 값에 기초하여 상기 데이터에 대응하는 노미널 값을 교정하고,
    상기 상기 교정된 노미널 값을 이용하여 상기 메모리의 데이터 셀에 상기 데이터를 프로그래밍 하는,
    메모리 시스템.
  9. 메모리의 데이터 처리 방법으로서,
    미리 결정된 노미널 값의 전압을 이용하여 상기 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 하는 단계, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀임;
    상기 파일럿 셀의 기록된 전압 값을 판독하는 단계;
    상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 임계 전압 값을 설정하는 단계; 및
    상기 설정된 임계 전압 값에 기초하여 상기 메모리의 데이터 셀의 데이터를 판독하는 단계;
    를 포함하는 메모리의 데이터 처리 방법.
  10. 제9 항에 있어서,
    상기 판독하는 단계는,
    상기 프로그래밍을 위한 각 데이터 간의 전압 스텝보다 높은 해상도로 상기 파일럿 셀의 전압 값을 판독하는,
    메모리의 데이터 처리 방법.
  11. 제9 항에 있어서,
    상기 파일럿 셀은 상기 데이터 셀과 동일한 블록 또는 페이지 내에 위치하는 것을 특징으로 하는,
    메모리의 데이터 처리 방법.
  12. 제11 항에 있어서,
    상기 파일럿 셀이 위치한 블록의 삭제 횟수 정보 또는 페이지의 기록 횟수 정보를 획득하는 단계; 및
    상기 삭제 횟수 정보 또는 기록 횟수 정보에 기초하여 상기 파일럿 셀을 시프팅하는 단계를 더 포함하는
    메모리의 데이터 처리 방법.
  13. 제9 항에 있어서,
    상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 복수의 노미널 값들에 각각 대응되는 복수의 셀을 포함하는,
    메모리의 데이터 처리 방법.
  14. 제9 항에 있어서,
    상기 임계 전압 값을 설정하는 단계는,
    상기 메모리 내의 동일한 노미널 값을 이용하여 프로그래밍 된 복수의 파일럿 셀의 판독 전압 값을 획득하는 단계를 포함하며,
    상기 획득된 복수의 파일럿 셀의 판독 전압 값의 평균에 기초하여 상기 임계 전압 값을 설정하는,
    메모리의 데이터 처리 방법.
  15. 메모리 시스템으로서,
    복수의 물리적 블록들을 갖는 메모리, 상기 복수의 물리적 블록들은 각각 복수의 페이지들을 포함함; 및
    상기 메모리를 제어하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 메모리에 데이터를 기록/삭제하기 위한 프로그래밍 모듈, 상기 메모리에 기록된 데이터를 판독하기 위한 판독 모듈, 및 상기 프로그래밍 모듈과 판독 모듈을 제어하는 제어 모듈을 포함하며,
    상기 프로그래밍 모듈은 미리 결정된 노미널 값의 전압을 이용하여 상기 메모리 내의 파일럿 셀 및 데이터 셀에 데이터를 프로그래밍 하되, 상기 파일럿 셀은 상기 메모리의 프로그래밍에 사용되는 적어도 하나의 노미널 값에 각각 대응되는 미리 결정된 위치의 셀이며,
    상기 판독 모듈은 상기 파일럿 셀의 기록된 전압 값을 판독하고,
    상기 제어 모듈은 상기 판독된 파일럿 셀의 전압 값을 참조하여 상기 데이터 셀을 판독하기 위한 임계 전압 값을 설정하고,
    상기 판독 모듈은 상기 설정된 임계 전압 값에 기초하여 상기 메모리의 데이터 셀의 데이터를 판독하는,
    메모리 시스템.
PCT/KR2014/006099 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법 WO2015005636A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/903,601 US20160148700A1 (en) 2013-07-08 2014-07-08 Memory system and data procesing method for memory
PCT/KR2014/006099 WO2015005636A1 (ko) 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법

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/006099 WO2015005636A1 (ko) 2013-07-08 2014-07-08 메모리 시스템 및 메모리의 데이터 처리 방법

Publications (1)

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

Family

ID=56234722

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US20160148700A1 (ko)
WO (1) WO2015005636A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10007462B1 (en) 2016-03-31 2018-06-26 EMC IP Holding Company LLC Method and system for adaptive data migration in solid state memory
US10983704B1 (en) 2016-05-20 2021-04-20 Emc Corporation Method and system for adaptive wear leveling in solid state memory
US10599342B2 (en) 2016-12-30 2020-03-24 EMC IP Holding Company LLC Method and system for offset mirroring in a storage system
US10416904B1 (en) 2016-12-30 2019-09-17 EMC IP Holding Company LLC Method and system for recovering storage object records in solid state memory
KR102267046B1 (ko) 2017-03-29 2021-06-22 삼성전자주식회사 스토리지 장치 및 배드 블록 지정 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060098483A1 (en) * 2004-04-06 2006-05-11 Jian Chen Variable programming of non-volatile memory
US20060239081A1 (en) * 2003-05-08 2006-10-26 Micron Technology, Inc. NAND flash memory with read and verification threshold uniformity
KR20100080896A (ko) * 2007-09-17 2010-07-13 쌘디스크 코포레이션 비휘발성 메모리 및 인접한 셀의 전하를 교란하기 위해 프로그래밍 동안 보상하는 방법
KR20100093089A (ko) * 2007-11-21 2010-08-24 마이크론 테크놀로지, 인크. M 비트 메모리 셀을 위한 m+n 프로그래밍 및 m+l 비트 읽기
US20110164449A1 (en) * 2007-07-26 2011-07-07 Micron Technology, Inc. Programming based on controller performance requirements

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009095902A2 (en) * 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8947941B2 (en) * 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8879325B1 (en) * 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060239081A1 (en) * 2003-05-08 2006-10-26 Micron Technology, Inc. NAND flash memory with read and verification threshold uniformity
US20060098483A1 (en) * 2004-04-06 2006-05-11 Jian Chen Variable programming of non-volatile memory
US20110164449A1 (en) * 2007-07-26 2011-07-07 Micron Technology, Inc. Programming based on controller performance requirements
KR20100080896A (ko) * 2007-09-17 2010-07-13 쌘디스크 코포레이션 비휘발성 메모리 및 인접한 셀의 전하를 교란하기 위해 프로그래밍 동안 보상하는 방법
KR20100093089A (ko) * 2007-11-21 2010-08-24 마이크론 테크놀로지, 인크. M 비트 메모리 셀을 위한 m+n 프로그래밍 및 m+l 비트 읽기

Also Published As

Publication number Publication date
US20160148700A1 (en) 2016-05-26

Similar Documents

Publication Publication Date Title
WO2015005636A1 (ko) 메모리 시스템 및 메모리의 데이터 처리 방법
WO2015005634A1 (ko) 메모리 시스템 및 이의 제어 방법
WO2015005635A1 (ko) 메모리 시스템 및 메모리의 데이터 처리 방법
WO2010076966A2 (ko) 메모리 컨트롤러 및 메모리 관리 방법
WO2009139574A2 (en) Memory device and method of managing memory data error
US5845313A (en) Direct logical block addressing flash memory mass storage architecture
KR102657076B1 (ko) 공간 메모리 스트리밍 트레이닝을 위한 장치 및 방법
CN103985415B (zh) 基于保留漂移历史的非易失性存储器读取阈值最优化
US5930815A (en) Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5838614A (en) Identification and verification of a sector within a block of mass storage flash memory
US6978342B1 (en) Moving sectors within a block of information in a flash memory mass storage architecture
TWI639085B (zh) 用於多位元記憶體的變型操作次序
US10580485B2 (en) System and method for adjusting read levels in a storage device based on bias functions
KR20070107689A (ko) 플래시 메모리에서의 복사 동작을 관리하는 방법
JP7448646B2 (ja) 不揮発性ランダム・アクセス・メモリにおける補正読取り電圧オフセットの計算
WO2015070771A1 (zh) 一种数据缓存系统和方法
US11079967B2 (en) Memory system, memory controller and operating method of memory controller
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
KR101604949B1 (ko) 메모리 제어 방법 및 메모리 제어 장치
US10770155B2 (en) Determining a read apparent voltage infector page and infected page
KR20160021550A (ko) 메모리 시스템 및 메모리의 데이터 처리 방법
KR20160021549A (ko) 메모리 시스템 및 메모리의 데이터 처리 방법
JP2010129038A (ja) 半導体記憶装置
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
WO2020241918A1 (ko) 부팅 프로세스를 수행하는 디지털 디바이스 및 그 제어 방법

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: 14823069

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: 14903601

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 14823069

Country of ref document: EP

Kind code of ref document: A1