KR20180020006A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20180020006A
KR20180020006A KR1020160104405A KR20160104405A KR20180020006A KR 20180020006 A KR20180020006 A KR 20180020006A KR 1020160104405 A KR1020160104405 A KR 1020160104405A KR 20160104405 A KR20160104405 A KR 20160104405A KR 20180020006 A KR20180020006 A KR 20180020006A
Authority
KR
South Korea
Prior art keywords
data
read
write operation
encoded
flagged
Prior art date
Application number
KR1020160104405A
Other languages
English (en)
Other versions
KR102697887B1 (ko
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 KR1020160104405A priority Critical patent/KR102697887B1/ko
Priority to US15/362,011 priority patent/US9778985B1/en
Priority to CN201611231438.6A priority patent/CN107767910A/zh
Publication of KR20180020006A publication Critical patent/KR20180020006A/ko
Application granted granted Critical
Publication of KR102697887B1 publication Critical patent/KR102697887B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1024Identification of the type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 장치의 동작 방법은 제1 데이터에 제1 플래그를 부가하여 제1 플래그된 데이터를 생성하는 단계; 상기 제1 플래그된 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 플래그된 데이터를 생성하는 단계; 상변화 메모리 영역의 타겟 위치에 상기 제1 인코딩된 플래그된 데이터를 저장하기 위해서 제1 라이트 동작을 수행하는 단계; 상기 제1 라이트 동작의 성공 여부를 판단하는 단계; 상기 제1 라이트 동작이 실패한 것으로 판단될 때, 상기 제1 데이터를 반전시킨 제2 데이터에 제2 플래그를 부가하여 제2 플래그된 데이터를 생성하는 단계; 상기 제2 플래그된 데이터에 대해 인코딩 동작을 수행하여 제2 인코딩된 플래그된 데이터를 생성하는 단계; 및 상기 타겟 위치에 상기 제2 인코딩된 플래그된 데이터를 저장하기 위해서 제2 라이트 동작을 수행하는 단계를 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 비휘발성 메모리 장치를 포함하는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
데이터 저장 장치는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
본 발명의 실시 예는 스턱된 메모리 셀들을 포함하는 상변화 메모리 장치의 수명을 연장시킨 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 제1 데이터에 제1 플래그를 부가하여 제1 플래그된 데이터를 생성하는 단계; 상기 제1 플래그된 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 플래그된 데이터를 생성하는 단계; 상변화 메모리 영역의 타겟 위치에 상기 제1 인코딩된 플래그된 데이터를 저장하기 위해서 제1 라이트 동작을 수행하는 단계; 상기 제1 라이트 동작의 성공 여부를 판단하는 단계; 상기 제1 라이트 동작이 실패한 것으로 판단될 때, 상기 제1 데이터를 반전시킨 제2 데이터에 제2 플래그를 부가하여 제2 플래그된 데이터를 생성하는 단계; 상기 제2 플래그된 데이터에 대해 인코딩 동작을 수행하여 제2 인코딩된 플래그된 데이터를 생성하는 단계; 및 상기 타겟 위치에 상기 제2 인코딩된 플래그된 데이터를 저장하기 위해서 제2 라이트 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 제1 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 데이터를 생성하는 단계; 상기 제1 인코딩된 데이터에 제1 플래그를 부가하여 제1 플래그된 인코딩된 데이터를 생성하는 단계; 상변화 메모리 영역의 타겟 위치에 상기 제1 플래그된 인코딩된 데이터를 저장하기 위해서 제1 라이트 동작을 수행하는 단계; 상기 제1 라이트 동작의 성공 여부를 판단하는 단계; 상기 제1 라이트 동작이 실패한 것으로 판단될 때, 상기 제1 인코딩된 데이터를 반전시킨 제2 인코딩된 데이터에 제2 플래그를 부가하여 제2 플래그된 인코딩된 데이터를 생성하는 단계; 상기 타겟 위치에 상기 제2 플래그된 인코딩된 데이터를 저장하기 위해서 제2 라이트 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치 및 그것의 동작 방법은 스턱된 메모리 셀들을 포함하는 상변화 메모리 장치의 수명을 연장시킬 수 있다.
도1a 및 도1b는 상변화 메모리 셀들이 스턱될 때, 저장되는 데이터에 따라 에러 비트들의 개수 변화를 도시하는 도면들,
도2는 스턱된 메모리 셀들에 반전된 데이터를 저장함으로써 에러 비트들의 개수가 감소하는 경우를 설명하기 위한 도면,
도3은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도,
도4a 및 도4b는 도3의 데이터 저장 장치가 외부 장치로부터 전송된 제1 데이터를 저장하는 방법을 도시하는 도면들,
도5는 도3의 데이터 저장 장치가 제1 데이터를 리드하여 출력하는 방법을 도시하는 도면,
도6은 도3의 데이터 저장 장치가 외부 장치로부터 라이트 요청된 제1 데이터를 저장하는 방법을 도시하는 순서도,
도7은 도3의 판단부가 제1 라이트 동작의 성공 여부를 판단하는 방법을 도시하는 순서도,
도8은 도3의 데이터 저장 장치가 외부 장치로부터 리드 요청된 제1 데이터를 리드하여 출력하는 방법을 도시하는 순서도,
도9는 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도,
도10a 및 도10b는 도9의 데이터 저장 장치가 외부 장치로부터 전송된 제1 데이터를 저장하는 방법을 도시하는 도면들,
도11a 및 도11b는 도9의 데이터 저장 장치가 제1 데이터를 리드하여 출력하는 방법을 도시하는 도면,
도12는 도9의 데이터 저장 장치가 외부 장치로부터 라이트 요청된 제1 데이터를 저장하는 방법을 도시하는 순서도,
도13a 및 도13b는 도9의 판단부가 제1 라이트 동작의 성공 여부를 판단하는 방법을 도시하는 순서도들,
도14는 도9의 데이터 저장 장치가 외부 장치로부터 리드 요청된 제1 데이터를 리드하여 출력하는 방법을 도시하는 순서도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1a 및 도1b는 상변화 메모리 셀들이 스턱될 때, 저장되는 데이터에 따라 에러 비트들의 개수 변화를 도시하는 도면들이다. 도1a는 오리지널 데이터(OD)가 저장되는 경우를 도시하고, 도1b는 오리지널 데이터(OD)로부터 반전된 데이터(ID)가 저장될 경우를 도시한다.
도1a를 참조하면, 예를 들어, 상변화 메모리 장치의 10개의 메모리 셀들(STMC)은 사용할수록 마모됨에 따라 "0" 또는 "1"을 저장한 상태로 스턱될 수 있다. 이때, 스턱된 메모리 셀들(STMC)에 10비트의 오리지널 데이터(OD)가 저장된 뒤 스턱된 메모리 셀들(STMC)로부터 데이터(ROD)가 리드되면, 스턱된 비트가 오리지널 비트와 불일치하는 7개의 스턱된 메모리 셀들(STMC)은 에러 비트들을 유발할 수 있다. 그리고, 스턱된 비트가 오리지널 비트와 일치하는 3개의 스턱된 메모리 셀들(STMC)은 정상 비트들을 출력할 수 있다.
도1b를 참조하면, 동일한 스턱된 메모리 셀들(STMC)에 반전된 데이터(ID)가 저장되고, 스턱된 메모리 셀들(STMC)로부터 데이터(RID)가 리드되면, 스턱된 비트가 반전된 비트와 불일치하는 3개의 스턱된 메모리 셀들(STMC)은 에러 비트들을 유발할 수 있다. 그리고, 스턱된 비트가 반전된 비트와 일치하는 7개의 스턱된 메모리 셀들(STMC)은 정상 비트들을 출력할 수 있다.
즉, 상변화 메모리 장치에서, 스턱된 비트가 오리지널 비트와 불일치함으로써 발생되는 에러 비트들의 개수에 따라, 오리지널 데이터 대신에 반전된 데이터를 저장하면 에러 비트들의 개수는 감소할 수 있다. 따라서, 스턱된 메모리 셀들로 인해 오리지널 데이터를 저장하기에는 사용되지 못할 메모리 영역일지라도, 반전된 데이터를 저장하는 데는 사용될 수 있고, 결과적으로 상변화 메모리 장치의 수명이 연장될 수 있다.
도2는 스턱된 메모리 셀들에 반전된 데이터를 저장함으로써 에러 비트들의 개수가 감소하는 경우를 설명하기 위한 도면이다. 제1 테이블(T1)은, 10개의 스턱된 메모리 셀들에 오리지널 데이터가 라이트될 때 에러 비트들의 개수를 도시하고, 제2 테이블(T2)은, 동일한 스턱된 메모리 셀들에 반전된 데이터가 라이트될 때 에러 비트들의 개수를 도시한다.
우선, 제1 테이블(T1)을 참조하면, 10개의 스턱된 메모리 셀들에 오리지널 데이터가 라이트될 때, 스턱된 비트가 오리지널 비트와 일치하는 스턱된 메모리 셀들의 개수는 "0"부터 "10"까지 중 어느 하나일 수 있다. 그리고, 각각의 경우들에 대해, 스턱된 비트가 오리지널 비트와 불일치하는 스턱된 메모리 셀들의 개수, 즉, 에러 비트들의 개수는 "10"부터 "0"까지일 수 있다.
이때, 에러 비트들의 개수가 "6"부터 "10"까지인 음영으로 표시된 경우들에 대해, 오리지널 데이터 대신 반전된 데이터가 라이트될 수 있다. 이러한 경우, 제2 테이블(T2)을 참조하면, 스턱된 비트가 반전된 비트와 일치하는 스턱된 메모리 셀들의 개수는 "10"부터 "6"까지일 수 있다. 결과적으로, 각각의 경우들에 대해, 에러 비트들의 개수는 "0"에서 "4"까지로 감소할 수 있다.
정리하면, "n"개의 스턱된 메모리 셀들에 오리지널 데이터가 저장되면 "[n/2]"보다 크고 "n"개보다 작은 에러 비트들이 발생되는 경우에는, 반전된 데이터를 저장함으로써 "[n/2]" 이하의 에러 비트들 만이 발생하도록 제어할 수 있다. 즉, 오리지널 데이터를 저장하면 데이터 저장 장치의 에러 정정 능력을 벗어나는 경우이더라도, 반전된 데이터를 저장하면 에러 정정 능력 아래의 경우일 수 있다. 후술될 바와 같이, 본 발명의 실시 예에 따른 데이터 저장 장치는, 상변화 메모리 영역에 오리지널 데이터를 저장한 뒤 에러 비트들의 개수를 체크하고, 에러 비트들의 개수에 따라 반전된 데이터를 다시 저장함으로써 에러 비트들의 개수를 에러 정정 능력 아래로 감소시키고 해당 메모리 영역을 사용할 수 있다.
도3은 본 발명의 실시 예에 따른 데이터 저장 장치(10A)를 도시한 블록도이다.
데이터 저장 장치(10A)는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치(10A)는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다.
데이터 저장 장치(10A)는 컨트롤러(100A) 및 상변화 메모리 영역(200)을 포함할 수 있다.
컨트롤러(100A)는 외부 장치로부터 제공된 제1 데이터를 상변화 메모리 장치(200)의 타겟 위치에 저장하기 위해 제1 라이트 동작을 수행할 수 있다. 그리고, 컨트롤러(100A)는 제1 라이트 동작이 실패할 때, 제1 데이터를 반전시킨 제2 데이터를 타겟 위치에 저장하기 위해 제2 라이트 동작을 수행할 수 있다.
컨트롤러(100A)는 반전부(110A), 인코더(120A), 판단부(130A), 디코더(140A), 제1 및 제2 인터페이스부들(150A, 160A)을 포함할 수 있다.
제1 인터페이스부(150A)는 외부 장치와 통신할 수 있고, 외부 장치로부터 전송된 제어 신호들을 컨트롤러의 내부 유닛들로 전송할 수 있다. 제1 인터페이스부(150A)는 외부 장치로부터 전송된 데이터를 반전부(110A)로 전송할 수 있고, 반전부(110A)로부터 전송된 데이터를 외부 장치로 전송할 수 있다.
반전부(110A)는 외부 장치로부터 제공된 제1 데이터를 제2 데이터로 선택적으로 반전시키고 플래그를 부가하여, 출력할 수 있다. 플래그는 제1 데이터가 반전되었는지 여부를 나타낼 수 있다. 예를 들어, 반전부(110A)는 제1 데이터를 반전시키지 않을 때 "0"인 플래그를 부가하고, 제1 데이터를 반전시킬 때 "1"인 플래그를 부가할 수 있다. 구체적으로, 반전부(110A)는 제1 라이트 동작을 위해 제1 데이터에 "0"인 플래그를 부가하여 제1 플래그된 데이터를 생성하고 출력할 수 있다. 그리고, 반전부(110A)는 판단부(130A)로부터 전송된 제1 라이트 동작에 대한 라이트 실패 보고에 응답하여, 제2 라이트 동작을 위해 제2 데이터에 "1"인 플래그를 부가하여 제2 플래그된 데이터를 생성하고 출력할 수 있다.
또한, 반전부(110A)는, 외부 장치의 리드 요청에 따라 상변화 메모리 장치(200)로부터 리드되고 디코더(140A)에 의해 디코딩 동작이 수행된 디코딩된 리드 데이터 및 디코딩된 리드 플래그를 수신할 수 있다. 반전부(110A)는 디코딩된 리드 플래그를 참조하여 디코딩된 리드 데이터를 선택적으로 반전시켜 제1 데이터를 획득하고, 제1 인터페이스부(150A)로 출력할 수 있다.
인코더(120A)는 반전부(110A)로부터 출력된 제1 플래그된 데이터에 대해 에러 정정 코드에 따라 인코딩 동작을 수행하여 제1 인코딩된 플래그된 데이터를 생성하고 출력할 수 있다. 제1 인코딩된 플래그된 데이터는 제1 플래그된 데이터에 대해 생성된 제1 패리티 데이터를 포함할 수 있다. 제1 인코딩된 플래그된 데이터는 제1 라이트 동작을 통해 상변화 메모리 장치(200)의 타겟 위치에 저장될 수 있다. 또한, 제1 인코딩된 플래그된 데이터는 제1 라이트 동작의 성공 여부 판단을 위해 판단부(130A)로 전송될 수 있다.
제1 라이트 동작이 실패할 때, 인코더(120A)는 반전부(110A)로부터 출력된 제2 플래그된 데이터에 대해 인코딩 동작을 수행하고 제2 인코딩된 플래그된 데이터를 생성할 수 있다. 제2 인코딩된 플래그된 데이터는 제2 플래그된 데이터에 대해 생성된 제2 패리티 데이터를 포함할 수 있다. 제2 인코딩된 플래그된 데이터는 제2 라이트 동작을 통해 상변화 메모리 장치(200)의 동일한 타겟 위치에 저장될 수 있다. 또한, 제2 인코딩된 플래그된 데이터는 제2 라이트 동작의 성공 여부 판단을 위해 판단부(130A)로 전송될 수 있다.
판단부(130A)는, 제1 라이트 동작이 수행된 뒤 제1 라이트 동작의 성공 여부를 판단할 수 있다. 구체적으로, 판단부(130A)는 제1 인코딩된 플래그된 데이터와 타겟 위치로부터 리드된 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하일 때 제1 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130A)는 에러 비트들의 개수가 임계치를 초과할 때 제1 라이트 동작이 실패한 것으로 판단하고, 반전부(110A)로 라이트 실패 보고를 전송할 수 있다.
한편, 판단부(130A)의 임계치는 디코더(140A)의 에러 정정 능력을 고려하여 설정될 수 있다. 예를 들어, 디코더(140A)가 최대 "t"개의 에러 비트들을 정정할 수 있을 때, 임계치는 "t" 이하로 설정될 수 있다.
또한, 판단부(130A)는 제2 라이트 동작이 수행된 뒤 제2 라이트 동작의 성공 여부를 판단할 수 있다. 구체적으로, 판단부(130A)는 제2 인코딩된 플래그된 데이터와 타겟 위치로부터 리드된 제2 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하일 때 제2 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130A)는 에러 비트들의 개수가 임계치를 초과할 때 제2 라이트 동작이 실패한 것으로 판단할 수 있다. 이러한 경우, 타겟 위치는 배드 영역으로 설정될 수 있고, 라이트 실패가 외부 장치로 보고될 수 있다.
디코더(140A)는, 외부 장치의 리드 요청에 따라 상변화 메모리 장치(200)의 타겟 위치로부터 리드된 타겟 리드 데이터에 대해 에러 정정 코드에 따라 디코딩 동작을 수행할 수 있다. 타겟 리드 데이터는 리드 데이터, 리드 플래그 및 리드 패리티 데이터를 포함할 수 있다. 디코더(140A)는 리드 패리티 데이터에 근거하여 리드 데이터 및 리드 플래그의 에러 비트들을 정정하고, 디코딩된 리드 데이터 및 디코딩된 리드 플래그를 생성할 수 있다. 디코딩 동작이 성공할 때, 디코더(140A)는 디코딩된 리드 데이터 및 디코딩된 리드 플래그를 반전부(110A)로 제공할 수 있다.
제2 인터페이스부(160A)는 상변화 메모리 영역(200)과 통신할 수 있고, 컨트롤러(100A)에서 생성된 명령들을 상변화 메모리 영역(200)로 전송할 수 있다. 제2 인터페이스부(160A)는 인코더(120A)로부터 전송된 데이터를 상변화 메모리 영역(200)으로 전송할 수 있고, 상변화 메모리 영역(200)으로부터 전송된 데이터를 디코더(140A)로 전송할 수 있다.
상변화 메모리 영역(200)은 컨트롤러(100A)의 제어에 따라, 컨트롤러(100A)로부터 전송된 데이터를 저장하고, 저장된 데이터를 리드하여 컨트롤러(100A)로 전송할 수 있다. 상변화 메모리 영역(200)은 하나 이상의 상변화 메모리 장치들을 포함할 수 있다.
실시 예에 따라, 데이터 저장 장치(10A)는 다른 타입의 비휘발성 메모리 장치를 더 포함할 수 있다. 비휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다. 상변화 메모리 영역(200)은 다른 타입의 비휘발성 메모리 장치와 함께 데이터를 저장하는 용도로 사용될 수 있다. 또한, 상변화 메모리 영역(200)은 다른 타입의 비휘발성 메모리 장치에 대한 캐시 메모리, 버퍼 메모리 또는 동작 메모리로 사용될 수 있다.
도4a 및 도4b는 도3의 데이터 저장 장치(10A)가 외부 장치로부터 전송된 제1 데이터(D1)를 저장하는 방법을 도시하는 도면들이다. 구체적으로, 도4a는 제1 데이터(D1)에 대한 제1 라이트 동작을 수행하는 방법을 도시하고, 도4b는 제1 라이트 동작의 실패 후에, 제1 데이터(D1)가 반전된 제2 데이터(D2)에 대한 제2 라이트 동작을 수행하는 방법을 도시한다.
도4a를 참조하면, 반전부(110A)는 제1 데이터(41, D1)를 수신할 수 있다. 반전부(110A)는 제1 데이터(D1)에 플래그(F1), 예를 들어, "0"을 부가하여 제1 플래그된 데이터(42)를 생성하고 출력할 수 있다. 또한, 반전부(110A)는 제1 라이트 동작이 실패할 것을 대비하여 제1 데이터(D1)를 저장할 수 있다.
인코더(120A)는 제1 플래그된 데이터(42)에 대해 인코딩 동작을 수행하여 제1 패리티 데이터(PF1)를 생성하고, 제1 플래그된 데이터(42)에 제1 패리티 데이터(PF1)를 부가하여 제1 인코딩된 플래그된 데이터(43)를 생성하고 출력할 수 있다. 제1 인코딩된 플래그된 데이터(43)는 제1 라이트 동작을 통해 상변화 메모리 영역(200)의 타겟 위치에 저장될 수 있다.
컨트롤러(100A)는 제1 라이트 동작이 성공했는지 여부를 판단하기 위해서 타겟 위치에 저장된 데이터를 제1 검증 데이터(44)로서 리드할 수 있다. 제1 검증 데이터(44)는 제1 리드 데이터(VD1), 제1 리드 플래그(VF1) 및 제1 리드 패리티 데이터(VPF1)를 포함할 수 있다.
판단부(130A)는 제1 인코딩된 플래그된 데이터(43)와 제1 검증 데이터(44)를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 판단부(130A)는 에러 비트들의 개수가 임계치 이하일 때 제1 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130A)는 에러 비트들의 개수가 임계치를 초과할 때 제1 라이트 동작이 실패한 것으로 판단하고, 반전부(110A)로 라이트 실패 보고(WRF)를 전송할 수 있다.
이어서 도4b를 참조하면, 반전부(110A)는 라이트 실패 보고(WRF)에 응답하여 제1 데이터(D1)를 반전시켜 제2 데이터(D2)를 생성할 수 있다. 그리고, 반전부(110A)는 제2 데이터(D2)에 제2 플래그(F2), 예를 들어, "1"을 부가하여 제2 플래그된 데이터(45)를 생성하고 출력할 수 있다.
인코더(120A)는 제2 플래그된 데이터(45)에 대해 인코딩 동작을 수행하여 제2 패리티 데이터(PF2)를 생성하고, 제2 플래그된 데이터(45)에 제2 패리티 데이터(PF2)를 부가하여 제2 인코딩된 플래그된 데이터(46)를 생성하고 출력할 수 있다. 제2 인코딩된 플래그된 데이터(46)는 제2 라이트 동작을 통해 상변화 메모리 영역(200)의 타겟 위치에 저장될 수 있다.
컨트롤러(100A)는 제2 라이트 동작이 성공했는지 여부를 판단하기 위해 타겟 위치에 저장된 데이터를 제2 검증 데이터(47)로서 리드할 수 있다. 제2 검증 데이터(47)는 제2 리드 데이터(VD2), 제2 리드 플래그(VF2) 및 제2 리드 패리티 데이터(VPF2)를 포함할 수 있다.
판단부(130A)는 제2 인코딩된 플래그된 데이터(46)와 제2 검증 데이터(47)를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 판단부(130A)는 에러 비트들의 개수가 임계치 이하일 때 제2 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130A)는 에러 비트들의 개수가 임계치를 초과할 때 제2 라이트 동작이 실패한 것으로 판단할 수 있다.
컨트롤러(100A)는, 제2 라이트 동작이 실패한 것으로 판단될 때 타겟 위치를 배드 영역으로 설정할 수 있다. 컨트롤러(100A)는 라이트 실패를 외부 장치에 보고할 수 있다. 컨트롤러(100A)는 외부 장치의 제어에 따라 상변화 메모리 영역(200)의 다른 위치에 제1 데이터(D1)를 저장하기 위해 상술한 방법에 따라 제1 및 제2 라이트 동작들을 반복할 수 있다.
도5는 도3의 데이터 저장 장치(10A)가 제1 데이터(D1)를 리드하여 출력하는 방법을 도시하는 도면이다.
도5를 참조하면, 컨트롤러(100A)는 제1 데이터(D1)에 대한 외부 장치의 리드 요청에 응답하여, 상변화 메모리 영역(200)의 타겟 위치에 저장된 데이터를 타겟 리드 데이터(51)로서 리드할 수 있다. 타겟 리드 데이터(51)는 리드 데이터(D), 리드 플래그(F) 및 리드 패리티 데이터(PF)를 포함할 수 있다.
디코더(140A)는 타겟 리드 데이터(51)에 대해 디코딩 동작을 수행하여 디코딩된 데이터(52)을 생성하고 출력할 수 있다. 구체적으로, 디코더(140A)는 리드 패리티 데이터(PF)에 근거하여 리드 데이터(D) 및 리드 플래그(F)에 포함된 에러 비트들을 정정하고, 디코딩된 리드 데이터(DD) 및 디코딩된 리드 플래그(DF)를 생성할 수 있다.
반전부(110A)는 디코딩된 데이터(52)에서 디코딩된 리드 플래그(DF)를 참조하여 디코딩된 리드 데이터(DD)를 선택적으로 반전시킬 수 있다. 반전부(110A)는 디코딩된 리드 플래그(DF)가, 예를 들어, "0"이면 디코딩된 리드 데이터(DD)를 제1 데이터(D1)로서 획득할 수 있다. 반전부(110A)는 디코딩된 리드 플래그(DF)가, 예를 들어, "1"이면 디코딩된 리드 데이터(DD)를 반전시킴으로써 제1 데이터(D1)를 획득할 수 있다. 컨트롤러(100A)는 획득된 제1 데이터(53, D1)를 외부 장치로 출력할 수 있다.
도6은 도3의 데이터 저장 장치(10A)가 외부 장치로부터 라이트 요청된 제1 데이터를 저장하는 방법을 도시하는 순서도이다.
단계(S110)에서, 반전부(110A)는 제1 데이터에 제1 플래그를 부가하여 제1 플래그된 데이터를 생성할 수 있다.
단계(S120)에서, 인코더(120A)는 제1 플래그된 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 플래그된 데이터를 생성할 수 있다.
단계(S130)에서, 컨트롤러(100A)는 상변화 메모리 영역(200)의 타겟 위치에 제1 인코딩된 플래그된 데이터를 저장하기 위해서 제1 라이트 동작을 수행할 수 있다.
단계(S140)에서, 판단부(130A)는 제1 라이트 동작의 성공 여부를 판단할 수 있다. 제1 라이트 동작이 성공한 것으로 판단될 때, 절차는 종료할 수 있다. 제1 라이트 동작이 실패한 것으로 판단될 때, 절차는 단계(S150)로 진행될 수 있다.
단계(S150)에서, 반전부(110A)는 제1 데이터를 반전시킨 제2 데이터에 제2 플래그를 부가하여 제2 플래그된 데이터를 생성할 수 있다.
단계(S160)에서, 인코더(120A)는 제2 플래그된 데이터에 대해 인코딩 동작을 수행하여 제2 인코딩된 플래그된 데이터를 생성할 수 있다.
단계(S170)에서, 컨트롤러(100A)는 타겟 위치에 제2 인코딩된 플래그된 데이터를 저장하기 위해서 제2 라이트 동작을 수행할 수 있다.
단계(S180)에서, 판단부(130A)는 제2 라이트 동작의 성공 여부를 판단할 수 있다. 제2 라이트 동작이 성공한 것으로 판단될 때, 절차는 종료할 수 있다. 제2 라이트 동작이 실패한 것으로 판단될 때, 절차는 단계(S190)로 진행될 수 있다.
단계(S190)에서, 컨트롤러(100A)는 타겟 위치를 배드 영역으로 설정하고, 라이트 실패를 외부 장치로 보고할 수 있다.
도7은 도3의 판단부(130A)가 제1 라이트 동작의 성공 여부를 판단하는 방법을 도시하는 순서도이다. 도7에 도시된 절차들은 도6의 단계(S140)의 구체적인 실시 예일 수 있다.
단계(S141)에서, 판단부(130A)는 타겟 위치로부터 리드된 제1 검증 데이터를 수신할 수 있다. 제1 검증 데이터는 제1 리드 데이터, 제1 리드 플래그 및 제1 리드 패리티 데이터를 포함할 수 있다.
단계(S142)에서, 판단부(130A)는 제1 인코딩된 플래그된 데이터 및 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트할 수 있다.
단계(S143)에서, 판단부(130A)는 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 에러 비트들의 개수가 임계치 이하일 때, 절차는 단계(S144)로 진행될 수 있다. 에러 비트들의 개수가 임계치를 초과할 때, 절차는 단계(S145)로 진행될 수 있다.
단계(S144)에서, 판단부(130A)는 제1 라이트 동작이 성공한 것으로 판단할 수 있다.
단계(S145)에서, 판단부(130A)는 제1 라이트 동작이 실패한 것으로 판단할 수 있다.
한편, 도6의 단계(S180)에서 판단부(130A)가 제2 라이트 동작의 성공 여부를 판단하는 방법은, 도7에 도시된 방법과 실질적으로 동일할 수 있다.
도8은 도3의 데이터 저장 장치(10A)가 외부 장치로부터 리드 요청된 제1 데이터를 리드하여 출력하는 방법을 도시하는 순서도이다.
단계(S210)에서, 컨트롤러(100A)는 상변화 메모리 영역(200)의 타겟 위치로부터 타겟 리드 데이터를 리드할 수 있다. 타겟 리드 데이터는 리드 데이터, 리드 플래그 및 리드 패리티 데이터를 포함할 수 있다.
단계(S220)에서, 디코더(140A)는 타겟 리드 데이터에 대해 디코딩 동작을 수행하여 디코딩된 데이터를 생성할 수 있다. 디코더(140A)는 리드 패리티 데이터에 근거하여, 리드 데이터 및 리드 플래그에 포함된 에러 비트들을 정정하고, 디코딩된 리드 데이터 및 디코딩된 리드 플래그를 생성할 수 있다.
단계(S230)에서, 반전부(110A)는 디코딩된 리드 플래그를 참조하여, 디코딩된 리드 데이터를 선택적으로 반전시켜 제1 데이터를 획득할 수 있다.
단계(S240)에서, 컨트롤러(100A)는 제1 데이터를 외부 장치로 출력할 수 있다.
도9는 본 발명의 실시 예에 따른 데이터 저장 장치(10B)를 도시한 블록도이다.
데이터 저장 장치(10B)는 컨트롤러(100B) 및 상변화 메모리 영역(200)을 포함할 수 있다.
컨트롤러(100B)는 외부 장치로부터 전송된 제1 데이터를 상변화 메모리 장치(200)의 타겟 위치에 저장하기 위해 제1 라이트 동작을 수행할 수 있다. 컨트롤러(100B)는 제1 라이트 동작이 실패할 때, 제1 데이터가 반전된 제2 데이터를 타겟 위치에 저장하기 위해 제2 라이트 동작을 수행할 수 있다. 다만, 컨트롤러(100B)는, 도3의 컨트롤러(100A)와 달리, 제1 데이터에 대한 제1 패리티 데이터도 반전시켜 제2 라이트 동작을 수행할 수 있다.
컨트롤러(100B)는 반전부(110B), 인코더(120B), 판단부(130B), 디코더(140B), 제1 및 제2 인터페이스부들(150B, 160B)을 포함할 수 있다. 제1 및 제2 인터페이스부들(150B, 160B)은 도3의 제1 및 제2 인터페이스부들(150A, 160A)과 실질적으로 동일하게 구성될 수 있다.
인코더(120B)는 외부 장치로부터 전송된 제1 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 데이터를 생성하고 출력할 수 있다. 제1 인코딩된 데이터는 제1 데이터에 대해 생성된 제1 패리티 데이터를 포함할 수 있다.
반전부(110B)는 인코더(120B)로부터 출력된 제1 인코딩된 데이터를 제2 인코딩된 데이터로 선택적으로 반전시키고 플래그를 부가하여, 출력할 수 있다. 플래그는 제1 인코딩된 데이터가 반전되었는지 여부를 나타낼 수 있다. 예를 들어, 반전부(110B)는 제1 인코딩된 데이터를 반전시키지 않을 때, 제1 값이 중복된 복수의 비트들, 예를 들어, "000"인 플래그를 부가할 수 있다. 반전부(110B)는 제1 인코딩된 데이터를 반전시킬 때, 제2 값이 중복된 복수의 비트들, 예를 들어, "111"인 플래그를 부가할 수 있다. 후술될 바와 같이, 플래그를 복수 비트들로 설정하는 것은 플래그에 에러 비트가 발생되더라도 정정가능하도록 할 수 있다.
구체적으로, 반전부(110B)는 제1 라이트 동작을 위해서, 제1 인코딩된 데이터에 "000"인 플래그를 부가하여 제1 플래그된 인코딩된 데이터를 생성하고 출력할 수 있다. 제1 플래그된 인코딩된 데이터는 제1 라이트 동작을 통해 상변화 메모리 장치(200)의 타겟 위치에 저장될 수 있다.
그리고, 반전부(110B)는 판단부(130B)로부터 전송된 제1 라이트 동작에 대한 라이트 실패 보고에 응답하여, 제2 라이트 동작을 위해서, 제1 인코딩된 데이터를 반전시켜 제2 인코딩된 데이터를 생성할 수 있다. 그리고, 반전부(110B)는 제2 인코딩된 데이터에 "111"인 플래그를 부가하여 제2 플래그된 인코딩된 데이터를 생성하고 출력할 수 있다. 제2 플래그된 인코딩된 데이터는 제2 라이트 동작을 통해 상변화 메모리 장치(200)의 타겟 위치에 저장될 수 있다.
그리고, 반전부(110B)는, 외부 장치의 리드 요청에 따라 상변화 메모리 장치(200)의 타겟 위치로부터 리드된 타겟 리드 데이터를 수신할 수 있다. 타겟 리드 데이터는 리드 데이터, 리드 패리티 데이터 및 리드 플래그를 포함할 수 있다. 반전부(110B)는 리드 플래그를 참조하여 리드 데이터 및 리드 패리티 데이터를 선택적으로 반전시켜 제3 데이터 및 제3 패리티 데이터를 생성하고 디코더(140B)로 출력할 수 있다.
한편, 반전부(110B)는 리드 플래그에 대해 해밍 거리에 근거하여 디코딩 동작을 수행하여 디코딩된 리드 플래그를 생성할 수 있다. 그리고, 반전부(110B)는 디코딩된 리드 플래그를 참조하여 리드 데이터 및 리드 패리티 데이터를 선택적으로 반전시켜 제3 데이터 및 제3 패리티 데이터를 생성하고 디코더(140B)로 출력할 수 있다. 즉, 반전부(110B)는 리드 플래그에 에러 비트가 발생되더라도 복수 비트들로 설정된 리드 플래그를 정정할 수 있다.
또한, 반전부(110B)는 디코더(140B)의 디코딩 실패 보고에 응답하여, 제3 데이터 및 제3 패리티 데이터를 반전시켜 제4 데이터 및 제4 패리티 데이터를 생성하고 디코더(140B)로 출력할 수 있다. 즉, 완전히 망가진 리드 플래그에 의해 제3 데이터 및 제3 패리티 데이터가 잘못 생성되었을 경우를 고려하여, 제4 데이터 및 제4 패리티 데이터에 대해 디코딩 동작이 다시 수행될 수 있다.
판단부(130B)는, 제1 라이트 동작이 수행된 뒤 제1 라이트 동작의 성공 여부를 판단할 수 있다. 구체적으로, 판단부(130B)는 제1 플래그된 인코딩된 데이터와 타겟 위치로부터 리드된 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하일 때 제1 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130B)는 에러 비트들의 개수가 임계치를 초과할 때 제1 라이트 동작이 실패한 것으로 판단하고, 반전부(110B)로 라이트 실패 보고를 전송할 수 있다.
한편, 판단부(130B)의 임계치는 디코더(140B)의 에러 정정 능력을 고려하여 설정될 수 있다. 예를 들어, 디코더(140B)가 최대 "t"개의 에러 비트들을 정정할 수 있을 때, 임계치는 "t" 이하로 설정될 수 있다.
실시 예에 따라, 판단부(130B)는, 제1 인코딩된 데이터에 대해서만 제1 라이트 동작의 성공 여부를 판단할 수 있다. 이러한 경우, 판단부(130B)는, 제1 인코딩된 데이터가 저장된 위치로부터 리드된 제1 검증 데이터를 제1 인코딩된 데이터와 비교하여 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 즉, 타겟 위치에 저장된 플래그 부분은 디코더(140B)로 입력되지 않을 것이기 때문에, 판단부(130B)는 디코딩 동작이 수행될 부분에 대해서만 에러 비트들의 개수가 임계치 이하인지 판단할 수 있다.
또한, 판단부(130B)는 제2 라이트 동작이 수행된 뒤에도 제2 라이트 동작의 성공 여부를 판단할 수 있다. 구체적으로, 판단부(130B)는 제2 플래그된 인코딩된 데이터와 타겟 위치로부터 리드된 제2 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하일 때 제2 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130B)는 에러 비트들의 개수가 임계치를 초과할 때 제2 라이트 동작이 실패한 것으로 판단할 수 있다. 이러한 경우, 타겟 위치는 배드 영역으로 설정될 수 있고, 라이트 실패가 외부 장치로 보고될 수 있다.
실시 예에 따라, 판단부(130B)는, 제2 인코딩된 데이터에 대해서만 제2 라이트 동작의 성공 여부를 판단할 수 있다. 이러한 경우, 판단부(130B)는, 제2 인코딩된 데이터가 저장된 위치로부터 리드된 제2 검증 데이터를 제2 인코딩된 데이터와 비교하여 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다.
디코더(140B)는 외부 장치의 리드 요청에 따라 상변화 메모리 장치(200)의 타겟 위치로부터 리드되고 반전부(110B)에 의해 선택적으로 반전된 데이터에 대해 제1 디코딩 동작을 수행할 수 있다. 디코더(140B)는 제1 디코딩 동작이 성공할 때, 제1 데이터를 획득하고 제1 인터페이스부(150B)로 전송할 수 있다. 그러나, 디코더(140B)는 제1 디코딩 동작이 실패할 때, 디코딩 실패 보고를 반전부(110B)로 전송할 수 있다.
디코더(140B)는 디코딩 실패 보고를 전송한 이후에, 반전부(110B)에 의해 반전된 데이터에 대해 제2 디코딩 동작을 수행할 수 있다. 디코더(140B)는 제2 디코딩 동작이 성공할 때, 제1 데이터를 획득하고 제1 인터페이스부(150B)로 전송할 수 있다. 그러나, 제2 디코딩 동작이 실패할 때, 컨트롤러(100B)는 외부 장치로 디코딩 실패를 보고할 수 있다.
도10a 및 도10b는 도9의 데이터 저장 장치(10B)가 외부 장치로부터 전송된 제1 데이터(D1)를 저장하는 방법을 도시하는 도면들이다. 구체적으로, 도10a는 제1 라이트 동작을 수행하는 방법을 도시하고, 도10b는 제1 라이트 동작의 실패 후에 제2 라이트 동작을 수행하는 방법을 도시한다.
도10a를 참조하면, 인코더(120B)는 제1 데이터(101, D1)를 수신할 수 있다. 인코더(120B)는 제1 데이터(D1)를 인코딩하여 제1 패리티 데이터(PD1)를 생성하고, 제1 데이터(D1)에 제1 패리티 데이터(PD1)를 부가하여 제1 인코딩된 데이터(102)를 생성하고 출력할 수 있다.
반전부(110B)는 제1 인코딩된 데이터(102)를 수신할 수 있다. 반전부(110B)는 제1 인코딩된 데이터(102)에 플래그(FP1), 예를 들어, "000"을 부가하여 제1 플래그된 인코딩된 데이터(103)를 생성하고 출력할 수 있다. 제1 플래그된 인코딩된 데이터(103)는 제1 라이트 동작을 통해 상변화 메모리 영역(200)의 타겟 위치에 저장될 수 있다. 한편, 반전부(110B)는 제1 라이트 동작이 실패할 것을 대비하여 제1 인코딩된 데이터(102)를 저장할 수 있다.
컨트롤러(100B)는 제1 라이트 동작이 성공했는지 여부를 판단하기 위해서 타겟 위치에 저장된 데이터를 제1 검증 데이터(104)로서 리드할 수 있다. 제1 검증 데이터(104)는 제1 리드 데이터(VD1), 제1 리드 패리티 데이터(VPD1) 및 제1 리드 플래그(VFP1)를 포함할 수 있다.
판단부(130B)는 제1 플래그된 인코딩된 데이터(103)와 제1 검증 데이터(104)를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 판단부(130B)는 에러 비트들의 개수가 임계치 이하일 때 제1 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130B)는 에러 비트들의 개수가 임계치를 초과할 때 제1 라이트 동작이 실패한 것으로 판단하고 반전부(110B)로 라이트 실패 보고(WRF)를 전송할 수 있다.
실시 예에 따라, 판단부(130B)는 제1 플래그된 인코딩된 데이터(103)의 제1 데이터(D1) 및 제1 패리티 데이터(PD1)와 제1 검증 데이터(104)의 제1 리드 데이터(VD1) 및 제1 리드 패리티 데이터(VPD1) 만을 비교하여 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 즉, 제1 검증 데이터(104)에서 제1 리드 플래그(VFP1)는 디코더(140B)로 입력되지 않기 때문에, 판단부(130B)는, 디코딩 동작이 수행될 제1 리드 데이터(VD1) 및 제1 리드 패리티 데이터(VPD1)에 대해서만 에러 비트들의 개수가 임계치 이하일 때, 제1 라이트 동작이 성공한 것으로 판단할 수 있다.
이어서 도10b를 참조하면, 반전부(110B)는 라이트 실패 보고(WRF)에 응답하여 제1 인코딩된 데이터, 즉, 제1 데이터(D1) 및 제1 패리티 데이터(PD1)를 반전시켜 제2 인코딩된 데이터(D2, PD2)를 생성할 수 있다. 그리고, 반전부(110B)는 제2 인코딩된 데이터(D2, PD2)에 제2 플래그(FP2), 예를 들어, "111"을 부가하여 제2 플래그된 인코딩된 데이터(105)를 생성하고 출력할 수 있다. 제2 플래그된 인코딩된 데이터(105)는 제2 라이트 동작을 통해 상변화 메모리 영역(200)의 타겟 위치에 저장될 수 있다.
컨트롤러(100B)는 제2 라이트 동작이 성공했는지 여부를 판단하기 위해서 타겟 위치에 저장된 데이터를 제2 검증 데이터(106)로서 리드할 수 있다. 제2 검증 데이터(106)는 제2 리드 데이터(VD2), 제2 리드 패리티 데이터(VPD2) 및 제2 리드 플래그(VFP2)를 포함할 수 있다.
판단부(130B)는 제2 플래그된 인코딩된 데이터(105)와 제2 검증 데이터(106)를 비교하여 에러 비트들의 개수를 카운트하고, 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 판단부(130B)는 에러 비트들의 개수가 임계치 이하일 때 제2 라이트 동작이 성공한 것으로 판단할 수 있다. 그러나, 판단부(130B)는 에러 비트들의 개수가 임계치를 초과할 때 제2 라이트 동작이 실패한 것으로 판단할 수 있다.
실시 예에 따라, 판단부(130B)는 제2 플래그된 인코딩된 데이터(105)의 제2 인코딩된 데이터(D2, PD2)와 제2 검증 데이터(106)의 제2 리드 데이터(VD2) 및 제2 리드 패리티 데이터(VPD2) 만을 비교하여 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 즉, 제2 검증 데이터(106)에서 제2 리드 플래그(VFP2)는 디코더(140B)로 입력되지 않기 때문에, 판단부(130B)는, 디코딩 동작이 수행될 제2리드 데이터(VD2) 및 제2 리드 패리티 데이터(VPD2)에 대해서만 에러 비트들의 개수가 임계치 이하일 때, 제2 라이트 동작이 성공한 것으로 판단할 수 있다.
컨트롤러(100B)는, 제2 라이트 동작이 실패한 것으로 판단될 때, 타겟 위치를 배드 영역으로 설정할 수 있다. 컨트롤러(100B)는 라이트 실패를 외부 장치에 보고할 수 있다. 컨트롤러(100B)는 외부 장치의 제어에 따라 상변화 메모리 영역(200)의 다른 위치에 제1 데이터(D1)를 저장하기 위해 상술한 방법에 따라 제1 및 제2 라이트 동작들을 반복할 수 있다.
도11a 및 도11b는 도9의 데이터 저장 장치(10B)가 제1 데이터(D1)를 리드하여 출력하는 방법을 도시하는 도면이다.
도11a을 참조하면, 컨트롤러(100B)는 제1 데이터(D1)에 대한 외부 장치의 리드 요청에 응답하여, 상변화 메모리 영역(200)의 타겟 위치에 저장된 데이터를 타겟 리드 데이터(111)로서 리드할 수 있다. 타겟 리드 데이터(111)는 리드 데이터(D), 리드 패리티 데이터(PD) 및 리드 플래그(FP)를 포함할 수 있다.
반전부(110B)는 타겟 리드 데이터(111)를 수신할 수 있다. 반전부(110B)는 리드 플래그(FP)를 참조하여 리드 데이터(D) 및 리드 패리티 데이터(PD)를 선택적으로 반전시켜, 제3 데이터(D3) 및 제3 패리티 데이터(P3)를 포함하는 데이터(112)을 생성하고 출력할 수 있다. 반전부(110B)는 리드 플래그(FP)가, 예를 들어, "000"이면 리드 데이터(D) 및 리드 패리티 데이터(PD)를 반전시키지 않고 제3 데이터(D3) 및 제3 패리티 데이터(P3)로서 출력할 수 있다. 반전부(110B)는 리드 플래그(FP)가, 예를 들어, "111"이면 리드 데이터(D) 및 리드 패리티 데이터(PD)를 반전시켜, 제3 데이터(D3) 및 제3 패리티 데이터(P3)로서 출력할 수 있다. 한편, 반전부(110B)는 디코더(140B)의 제1 디코딩 동작이 실패할 것을 대비하여, 제3 데이터(D3) 및 제3 패리티 데이터(P3)를 저장할 수 있다.
실시 예에 따라, 반전부(110B)는 해밍 거리에 근거하여 리드 플래그(FP)에 대해 디코딩 동작을 수행하고, 디코딩된 리드 플래그에 근거하여 데이터(112)를 생성할 수 있다. 즉, 도10a의 제1 플래그(FP1) 및 도10b의 제2 플래그(FP2) 각각은 소정 값이 중복된 복수의 비트들로 구성되므로, 해밍 거리가 작은 값에 근거하여 복구될 수 있다. 예를 들어, "000"인 제1 플래그(FP1)가 타겟 위치에 저장되었지만 "010"인 리드 플래그(FP)가 타겟 위치로부터 리드된 경우, 반전부(110B)는 리드 플래그(FP)를 "000"으로 복구하고 이를 참조할 수 있다. 다른 예로서, "111"인 제2 플래그(FP2)가 타겟 위치에 저장되었지만 "110"인 리드 플래그(FP)가 타겟 위치로부터 리드된 경우, 반전부(110B)는 리드 플래그(FP)를 "111"으로 복구하고 이를 참조할 수 있다. 이와 같은 방법에 의해, 인코딩 동작이 수행되지 않은 제1 플래그(FP1) 및 제2 플래그(FP2)에 에러 비트가 발생되더라도 정정 가능할 수 있다.
디코더(140B)는 데이터(112)에 대해 제1 디코딩 동작을 수행하여 제1 데이터(113, D1)를 획득하고 출력할 수 있다. 구체적으로, 디코더(140B)는 제3 패리티 데이터(P3)에 근거하여 제3 데이터(D3)에 포함된 에러 비트들을 정정하고 정정된 데이터를 제1 데이터(113, D1)로서 출력할 수 있다. 한편, 디코더(140B)는 데이터(112)에 대한 제1 디코딩 동작이 실패할 경우, 반전부(110B)로 디코딩 실패 보고(CRF)를 전송할 수 있다.
도11b를 참조하면, 반전부(110B)는 디코딩 실패 보고(CRF)에 응답하여 제3 데이터(D3) 및 제3 패리티 데이터(P3)를 반전시켜, 제4 데이터(D4) 및 제4 패리티 데이터(P4)를 포함하는 데이터(114)를 생성하고 출력할 수 있다. 즉, 도11a에서 정정불가능한 리드 플래그(FP)에 의해 제3 데이터(D3) 및 제3 패리티 데이터(P3)가 잘못 생성됨에 따라 제1 디코딩 동작이 실패했을 경우를 고려하여, 제3 데이터(D3) 및 제3 패리티 데이터(P3)가 반전된 제4 데이터(D4) 및 제4 패리티 데이터(P4)에 대해 제2 디코딩 동작이 수행될 수 있다.
디코더(140B)는 데이터(114)에 대해 제2 디코딩 동작을 수행하여 제1 데이터(115, D1)를 획득하고 출력할 수 있다. 구체적으로, 디코더(140B)는 제4 패리티 데이터(P4)에 근거하여 제4 데이터(D4)에 포함된 에러 비트들을 정정하고 정정된 데이터를 제1 데이터(115, D1)로서 출력할 수 있다.
도12는 도9의 데이터 저장 장치(10B)가 외부 장치로부터 라이트 요청된 제1 데이터를 저장하는 방법을 도시하는 순서도이다.
단계(S310)에서, 인코더(120B)는 제1 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 데이터를 생성할 수 있다.
단계(S320)에서, 반전부(110B)는 제1 인코딩된 데이터에 제1 플래그를 부가하여 제1 플래그된 인코딩된 데이터를 생성할 수 있다.
단계(S330)에서, 컨트롤러(100B)는 상변화 메모리 영역(200)의 타겟 위치에 제1 플래그된 인코딩된 데이터를 저장하기 위해서 제1 라이트 동작을 수행할 수 있다.
단계(S340)에서, 판단부(130B)는 제1 라이트 동작의 성공 여부를 판단할 수 있다. 제1 라이트 동작이 성공한 것으로 판단될 때, 절차는 종료할 수 있다. 제1 라이트 동작이 실패한 것으로 판단될 때, 절차는 단계(S350)로 진행될 수 있다.
단계(S350)에서, 반전부(110B)는 제1 인코딩된 데이터를 반전시킨 제2 인코딩된 데이터에, 제2 플래그를 부가하여 제2 플래그된 인코딩된 데이터를 생성할 수 있다.
단계(S360)에서, 컨트롤러(100B)는 타겟 위치에 제2 플래그된 인코딩된 데이터를 저장하기 위해서 제2 라이트 동작을 수행할 수 있다.
단계(S370)에서, 판단부(130B)는 제2 라이트 동작의 성공 여부를 판단할 수 있다. 제2 라이트 동작이 성공한 것으로 판단될 때, 절차는 종료할 수 있다. 제2 라이트 동작이 실패한 것으로 판단될 때, 절차는 단계(S380)로 진행될 수 있다.
단계(S380)에서, 컨트롤러(100B)는 타겟 위치를 배드 영역으로 설정하고, 라이트 실패를 외부 장치로 보고할 수 있다.
도13a 및 도13b는 도9의 판단부(130B)가 제1 라이트 동작의 성공 여부를 판단하는 방법을 도시하는 순서도들이다. 도13a 및 도13b에 도시된 절차들은 도12의 단계(S340)의 구체적인 실시 예일 수 있다.
도13a를 참조하면, 단계(S341A)에서, 판단부(130B)는 타겟 위치로부터 리드된 제1 검증 데이터를 수신할 수 있다. 제1 검증 데이터는 제1 리드 데이터, 제1 리드 패리티 데이터 및 제1 리드 플래그를 포함할 수 있다.
단계(S342A)에서, 판단부(130B)는 제1 플래그된 인코딩된 데이터 및 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트할 수 있다.
단계(S343A)에서, 판단부(130B)는 에러 비트들의 개수가 임계치 이하인지 여부를 판단할 수 있다. 에러 비트들의 개수가 임계치 이하일 때, 절차는 단계(S344A)로 진행될 수 있다. 에러 비트들의 개수가 임계치를 초과할 때, 절차는 단계(S345A)로 진행될 수 있다.
단계(S344A)에서, 판단부(130B)는 제1 라이트 동작이 성공한 것으로 판단할 수 있다.
단계(S345A)에서, 판단부(130B)는 제1 라이트 동작이 실패한 것으로 판단할 수 있다.
도13b를 참조하면, 단계(S341B)에서, 판단부(130B)는 제1 인코딩된 데이터가 저장된 위치로부터 리드된 제1 검증 데이터를 수신할 수 있다. 제1 검증 데이터는 제1 리드 데이터 및 제1 리드 패리티 데이터를 포함할 수 있다.
단계(S342B)에서, 판단부(130B)는 제1 인코딩된 데이터 및 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트할 수 있다.
단계들(S343B~S345B)은, 도13a의 단계들(S343A~S345A)과 동일하게 수행될 수 있고, 따라서 상세한 설명은 생략될 것이다.
한편, 도12의 단계(S370)에서 판단부(130B)가 제2 라이트 동작의 성공 여부를 판단하는 방법은, 도13a 또는 도13b에 도시된 방법과 실질적으로 동일할 수 있다.
도14는 도9의 데이터 저장 장치(10B)가 외부 장치로부터 리드 요청된 제1 데이터를 리드하여 출력하는 방법을 도시하는 순서도이다.
단계(S410)에서, 컨트롤러(100B)는 상변화 메모리 영역(200)의 타겟 위치로부터 리드 데이터, 리드 패리티 데이터 및 리드 플래그를 포함할 수 있다.
단계(S420)에서, 반전부(110B)는 리드 플래그를 참조하여 리드 데이터 및 리드 패리티 데이터를 선택적으로 반전시켜, 제3 데이터 및 제3 패리티 데이터를 생성할 수 있다. 반전부(110B)는 해밍 거리에 근거하여 리드 플래그(FP)에 대해 디코딩 동작을 수행하고, 디코딩된 리드 플래그에 근거하여 리드 데이터 및 리드 패리티 데이터를 선택적으로 반전시켜, 제3 데이터 및 제3 패리티 데이터를 생성할 수 있다.
단계(S430)에서, 디코더(140B)는 제3 데이터 및 제3 패리티 데이터에 대해 제1 디코딩 동작을 수행할 수 있다.
단계(S440)에서, 디코더(140B)는 제1 디코딩 동작이 성공했는지 여부를 판단할 수 있다. 제1 디코딩 동작이 성공한 경우, 절차는 단계(S450)로 진행될 수 있다. 제1 디코딩 동작이 실패한 경우, 절차는 단계(S460)로 진행될 수 있다.
단계(S450)에서, 컨트롤러(100B)는 제1 디코딩 동작을 통해 획득된 제1 데이터를 외부 장치로 출력할 수 있다.
단계(S460)에서, 반전부(110B)는 제3 데이터 및 제3 패리티 데이터를 반전시켜, 제4 데이터 및 제4 패리티 데이터를 생성할 수 있다.
단계(S470)에서, 디코더(140B)는 제4 데이터 및 제4 패리티 데이터에 대해 제2 디코딩 동작을 수행할 수 있다.
단계(S480)에서, 디코더(140B)는 제2 디코딩 동작이 성공했는지 여부를 판단할 수 있다. 제2 디코딩 동작이 성공한 경우, 절차는 단계(S450)로 진행될 수 있다. 제2 디코딩 동작이 실패한 경우, 절차는 단계(S490)로 진행될 수 있다.
단계(S490)에서, 컨트롤러(100B)는 외부 장치로 리드 실패를 보고할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10A: 데이터 저장 장치
100A: 컨트롤러
110A: 반전부
120A: 인코더
130A: 판단부
140A: 디코더
150A: 제1 인터페이스부
160A: 제2 인터페이스부
200: 상변화 메모리 영역

Claims (14)

  1. 제1 데이터에 제1 플래그를 부가하여 제1 플래그된 데이터를 생성하는 단계;
    상기 제1 플래그된 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 플래그된 데이터를 생성하는 단계;
    상변화 메모리 영역의 타겟 위치에 상기 제1 인코딩된 플래그된 데이터를 저장하기 위해서 제1 라이트 동작을 수행하는 단계;
    상기 제1 라이트 동작의 성공 여부를 판단하는 단계;
    상기 제1 라이트 동작이 실패한 것으로 판단될 때, 상기 제1 데이터를 반전시킨 제2 데이터에 제2 플래그를 부가하여 제2 플래그된 데이터를 생성하는 단계;
    상기 제2 플래그된 데이터에 대해 인코딩 동작을 수행하여 제2 인코딩된 플래그된 데이터를 생성하는 단계; 및
    상기 타겟 위치에 상기 제2 인코딩된 플래그된 데이터를 저장하기 위해서 제2 라이트 동작을 수행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 제1 라이트 동작의 성공 여부를 판단하는 단계는,
    상기 타겟 위치로부터 제1 검증 데이터를 리드하는 단계;
    상기 제1 인코딩된 플래그된 데이터 및 상기 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하는 단계; 및
    상기 개수가 임계치 이하일 때 상기 제1 라이트 동작이 성공한 것으로 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  3. 제1항에 있어서,
    상기 제2 라이트 동작의 성공 여부를 판단하는 단계; 및
    상기 제2 라이트 동작이 실패한 것으로 판단될 때, 상기 타겟 위치를 배드 영역으로 설정하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  4. 제3항에 있어서,
    상기 제2 라이트 동작의 성공 여부를 판단하는 단계는,
    상기 타겟 위치로부터 제2 검증 데이터를 리드하는 단계;
    상기 제2 인코딩된 데이터 그룹 및 상기 제2 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하는 단계; 및
    상기 개수가 임계치 이하일 때 상기 제2 라이트 동작이 성공한 것으로 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  5. 제1항에 있어서,
    상기 제1 데이터에 대한 리드 요청을 수신하는 단계;
    상기 타겟 위치로부터 리드 데이터, 리드 플래그 및 리드 패리티 데이터를 리드하는 단계;
    상기 리드 패리티 데이터에 근거하여 상기 리드 데이터 및 상기 리드 플래그의 에러 비트들을 정정하여 디코딩된 리드 데이터 및 디코딩된 리드 플래그를 생성하는 단계;
    상기 디코딩된 리드 플래그를 참조하여 상기 디코딩된 리드 데이터를 선택적으로 반전시켜 상기 제1 데이터를 획득하는 단계; 및
    상기 제1 데이터를 출력하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  6. 제1 데이터에 대해 인코딩 동작을 수행하여 제1 인코딩된 데이터를 생성하는 단계;
    상기 제1 인코딩된 데이터에 제1 플래그를 부가하여 제1 플래그된 인코딩된 데이터를 생성하는 단계;
    상변화 메모리 영역의 타겟 위치에 상기 제1 플래그된 인코딩된 데이터를 저장하기 위해서 제1 라이트 동작을 수행하는 단계;
    상기 제1 라이트 동작의 성공 여부를 판단하는 단계;
    상기 제1 라이트 동작이 실패한 것으로 판단될 때, 상기 제1 인코딩된 데이터를 반전시킨 제2 인코딩된 데이터에 제2 플래그를 부가하여 제2 플래그된 인코딩된 데이터를 생성하는 단계;
    상기 타겟 위치에 상기 제2 플래그된 인코딩된 데이터를 저장하기 위해서 제2 라이트 동작을 수행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  7. 제6항에 있어서,
    상기 제1 라이트 동작의 성공 여부를 판단하는 단계는,
    상기 타겟 위치로부터 제1 검증 데이터를 리드하는 단계;
    상기 제1 플래그된 인코딩된 데이터 및 상기 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하는 단계; 및
    상기 개수가 임계치 이하일 때 상기 제1 라이트 동작이 성공한 것으로 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  8. 제6항에 있어서,
    상기 제1 라이트 동작의 성공 여부를 판단하는 단계는,
    상기 제1 인코딩된 데이터가 저장된 위치로부터 제1 검증 데이터를 리드하는 단계;
    상기 제1 인코딩된 데이터 및 상기 제1 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하는 단계; 및
    상기 개수가 임계치 이하일 때 상기 제1 라이트 동작이 성공한 것으로 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  9. 제6항에 있어서,
    상기 제1 플래그는 제1 값이 중복된 복수의 비트들로 구성되고, 상기 제2 플래그는 제2 값이 중복된 복수의 비트들로 구성되는 데이터 저장 장치의 동작 방법.
  10. 제6항에 있어서,
    상기 제2 라이트 동작의 성공 여부를 판단하는 단계; 및
    상기 제2 라이트 동작이 실패한 것으로 판단될 때, 상기 타겟 위치를 배드 영역으로 설정하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  11. 제10항에 있어서,
    상기 제2 라이트 동작의 성공 여부를 판단하는 단계는,
    상기 타겟 위치로부터 제2 검증 데이터를 리드하는 단계;
    상기 제2 플래그된 인코딩된 데이터 및 상기 제2 검증 데이터를 비교하여 에러 비트들의 개수를 카운트하는 단계; 및
    상기 개수가 임계치 이하일 때 상기 제2 라이트 동작이 성공한 것으로 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  12. 제6항에 있어서,
    상기 제1 데이터에 대한 리드 요청을 수신하는 단계;
    상기 타겟 위치로부터 리드 데이터, 리드 패리티 데이터 및 리드 플래그를 리드하는 단계;
    상기 리드 플래그를 참조하여 상기 리드 데이터 및 상기 리드 패리티 데이터를 선택적으로 반전시켜 제3 데이터 및 제3 패리티 데이터를 생성하는 단계; 및
    상기 제3 데이터 및 상기 제3 패리티 데이터에 대해 제1 디코딩 동작을 수행하여 상기 제1 데이터를 획득하는 단계; 및
    상기 제1 데이터를 출력하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  13. 제12항에 있어서,
    상기 제1 디코딩 동작이 실패할 때, 상기 제3 데이터 및 상기 제3 패리티 데이터를 반전시켜 제4 데이터 및 제4 패리티 데이터를 생성하는 단계;
    상기 제4 데이터 및 상기 제4 패리티 데이터에 대해 제2 디코딩 동작을 수행하여 상기 제1 데이터를 획득하는 단계; 및
    상기 제1 데이터를 출력하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  14. 제12항에 있어서,
    상기 제3 데이터 및 상기 제3 패리티 데이터를 생성하는 단계는,
    상기 리드 플래그에 대해 해밍 거리에 근거하여 디코딩 동작을 수행하여 디코딩된 리드 플래그를 생성하는 단계; 및
    상기 디코딩된 리드 플래그를 참조하여 상기 리드 데이터 및 상기 리드 패리티 데이터를 선택적으로 반전시켜 상기 제3 데이터 및 상기 제3 패리티 데이터를 생성하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
KR1020160104405A 2016-08-17 2016-08-17 데이터 저장 장치 및 그것의 동작 방법 KR102697887B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160104405A KR102697887B1 (ko) 2016-08-17 2016-08-17 데이터 저장 장치 및 그것의 동작 방법
US15/362,011 US9778985B1 (en) 2016-08-17 2016-11-28 Operating method of data storage device
CN201611231438.6A CN107767910A (zh) 2016-08-17 2016-12-28 数据存储装置的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160104405A KR102697887B1 (ko) 2016-08-17 2016-08-17 데이터 저장 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20180020006A true KR20180020006A (ko) 2018-02-27
KR102697887B1 KR102697887B1 (ko) 2024-08-22

Family

ID=59928557

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160104405A KR102697887B1 (ko) 2016-08-17 2016-08-17 데이터 저장 장치 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US9778985B1 (ko)
KR (1) KR102697887B1 (ko)
CN (1) CN107767910A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210158008A (ko) * 2020-06-23 2021-12-30 삼성전자주식회사 저항성 메모리 셀을 포함하는 메모리 장치 및 상기 메모리 장치를 포함하는 전자 장치
US12013754B2 (en) 2018-12-11 2024-06-18 Samsung Electronics Co., Ltd. Nonvolatile memory device and memory system including nonvolatile memory device

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102457144B1 (ko) * 2017-04-18 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102467072B1 (ko) * 2017-10-26 2022-11-11 삼성전자주식회사 반복 연산 과정을 이용하여 디코딩을 수행하는 디코더 및 이를 이용한 스토리지 장치
US10951232B2 (en) * 2018-11-26 2021-03-16 Micron Technology, Inc. Error correction bit flipping scheme
KR20210004135A (ko) * 2019-07-03 2021-01-13 에스케이하이닉스 주식회사 패일 정보 제어회로, 이를 포함하는 반도체 장치 및 반도체 장치의 패일 정보 제어방법
US11340979B2 (en) * 2019-12-27 2022-05-24 Seagate Technology Llc Mitigation of solid state memory read failures with a testing procedure
JP2021141369A (ja) * 2020-03-02 2021-09-16 キオクシア株式会社 メモリシステム
US11461174B2 (en) 2020-08-31 2022-10-04 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit and method of operating same
JP2022102785A (ja) * 2020-12-25 2022-07-07 キオクシア株式会社 メモリシステム
US11626147B2 (en) 2021-03-26 2023-04-11 Changxin Memory Technologies, Inc. Transmission circuit, transmission method, storage apparatus, and storage medium
CN115129231A (zh) * 2021-03-26 2022-09-30 长鑫存储技术有限公司 传输电路、方法、存储装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090091968A1 (en) * 2007-10-08 2009-04-09 Stefan Dietrich Integrated circuit including a memory having a data inversion circuit
US8351290B1 (en) * 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
US20160283325A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Errors and erasures decoding from multiple memory devices

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100933859B1 (ko) * 2007-11-29 2009-12-24 주식회사 하이닉스반도체 플래시 메모리 소자 및 그것의 프로그램 방법
US8255758B2 (en) * 2008-01-21 2012-08-28 Apple Inc. Decoding of error correction code using partial bit inversion
US7969806B2 (en) * 2008-04-28 2011-06-28 Qimonda Ag Systems and methods for writing to a memory
KR101688050B1 (ko) 2009-12-22 2016-12-21 삼성전자 주식회사 반도체 장치 및 반도체 장치의 리드 또는 라이트 동작 수행 방법
CN101783165A (zh) * 2010-03-26 2010-07-21 上海宏力半导体制造有限公司 一种半导体存储器、半导体存储器系统及其对应编程方法
US8848465B2 (en) * 2011-07-06 2014-09-30 Samsung Electronics Co., Ltd. Memory devices including selective RWW and RMW decoding
JP5458064B2 (ja) * 2011-07-14 2014-04-02 株式会社東芝 不揮発性半導体メモリ
TWI533311B (zh) * 2013-07-17 2016-05-11 慧榮科技股份有限公司 快閃記憶體裝置及其運作方法
CN104681085B (zh) * 2015-03-03 2018-09-04 中国科学院微电子研究所 一种基于翻转编码电路的阻变存储器及相应数据存储方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090091968A1 (en) * 2007-10-08 2009-04-09 Stefan Dietrich Integrated circuit including a memory having a data inversion circuit
US8351290B1 (en) * 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
US20160283325A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Errors and erasures decoding from multiple memory devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12013754B2 (en) 2018-12-11 2024-06-18 Samsung Electronics Co., Ltd. Nonvolatile memory device and memory system including nonvolatile memory device
KR20210158008A (ko) * 2020-06-23 2021-12-30 삼성전자주식회사 저항성 메모리 셀을 포함하는 메모리 장치 및 상기 메모리 장치를 포함하는 전자 장치

Also Published As

Publication number Publication date
CN107767910A (zh) 2018-03-06
US9778985B1 (en) 2017-10-03
KR102697887B1 (ko) 2024-08-22

Similar Documents

Publication Publication Date Title
KR102697887B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN108399936B (zh) 具有延长产品寿命的存储系统及其操作方法
US8418026B2 (en) Hybrid error correction coding to address uncorrectable errors
US9043678B2 (en) Detecting effect of corrupting event on preloaded data in non-volatile memory
US10503588B2 (en) Memory systems including memory controllers and memory modules and methods of processing data in the memory systems
US9229801B2 (en) Method and device for write abort protection
US20140082456A1 (en) Data storage device with intermediate ecc stage
US9424126B2 (en) Memory controller
TW201346923A (zh) 使用單一錯誤偵測奇偶校驗的抹除修正
JP2008165805A (ja) フラッシュメモリ装置のecc制御器及びそれを含むメモリシステム
US20130315397A1 (en) System and method to scramble data based on a scramble key
US9870830B1 (en) Optimal multilevel sensing for reading data from a storage medium
US11184033B2 (en) Data storage device
US9852022B2 (en) Memory system, memory controller and memory control method
CN111312316B (zh) 非易失性存储器装置和存储器系统
US11003529B2 (en) Encoding method and memory storage apparatus using the same
US9128827B2 (en) Data modification based on matching bit patterns
US10514980B2 (en) Encoding method and memory storage apparatus using the same
US9015560B1 (en) Method and apparatus for ceasing access to a portion of a flash memory when less than a number of errors correctable by an error correction code exists
TWI686812B (zh) 記憶體測試方法及其記憶體裝置
CN110716824B (zh) 编码方法及使用所述编码方法的存储器存储装置
US11115063B2 (en) Flash memory controller, storage device and reading method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant