KR102041874B1 - 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법 - Google Patents

메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법 Download PDF

Info

Publication number
KR102041874B1
KR102041874B1 KR1020120129549A KR20120129549A KR102041874B1 KR 102041874 B1 KR102041874 B1 KR 102041874B1 KR 1020120129549 A KR1020120129549 A KR 1020120129549A KR 20120129549 A KR20120129549 A KR 20120129549A KR 102041874 B1 KR102041874 B1 KR 102041874B1
Authority
KR
South Korea
Prior art keywords
data
parity
memory device
partial
memory
Prior art date
Application number
KR1020120129549A
Other languages
English (en)
Other versions
KR20140062771A (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 KR1020120129549A priority Critical patent/KR102041874B1/ko
Priority to US14/071,771 priority patent/US9311181B2/en
Priority to DE102013112195.0A priority patent/DE102013112195A1/de
Priority to TW102140195A priority patent/TWI627535B/zh
Priority to JP2013235041A priority patent/JP2014099174A/ja
Priority to CN201310575217.0A priority patent/CN103824599B/zh
Publication of KR20140062771A publication Critical patent/KR20140062771A/ko
Application granted granted Critical
Publication of KR102041874B1 publication Critical patent/KR102041874B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 메모리 컨트롤러의 부분 데이터(partial data) 변경 방법에 관한 것으로, 본 발명은 호스트로부터 부분 데이터를 변경하기 위한 요청을 받는 단계; 에러 검출 코드(EDC)를 이용하여, 메모리 장치로부터 읽은 부분 데이터에 대한 에러를 검출하는 단계; 상기 메모리 장치로부터 읽은 부분 데이터에 에러가 없는 경우에, 상기 호스트로부터 제공되는 새 데이터(Dnew)와 상기 메모리 장치로부터 읽은 부분 데이터(Dold, 이하 기존 데이터라 함)의 차이를 구하고, 상기 데이터 차이(Ddif)와 상기 메모리 장치로부터 읽은 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산하는 단계; 및 상기 새 데이터와 상기 새 패러티를 상기 메모리 장치에 저장하는 단계를 포함한다. 본 발명에 의하면, 변경하고자 하는 일부 데이터에 에러가 있는 경우에, 에러를 조기에 검출하고 정정함으로 새 패러티에 에러가 발생하는 것을 방지할 수 있다.

Description

메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법{MEMORY CONTROLLER CHANGING PARTIAL DATA IN MEMORY DEVICE AND METHOD FOR CHANGING PARTIAL DATA THEREOF}
본 발명은 반도체 메모리 시스템에 관한 것으로, 더 상세하게는 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 DRAM이나 SRAM과 같은 휘발성 메모리 장치(Volatile Memory Device)와 플래시 메모리나 MRAM(Magnetic RAM)과 같은 불휘발성 메모리 장치(Nonvolatile Memory Device)를 포함한다.
메모리 장치에 데이터를 저장하고 저장된 데이터는 읽는 과정에서, 에러가 발생할 수 있다. 이러한 에러를 검출 및 정정하기 위하여, 다양한 에러 정정 코드들이 사용되고 있다. 에러 정정 코드들은 RS (Reed-Solomon) 코드, BCH (Bose-Chaudhuri-Hocquenghem) 코드, LDPC (Low Density Parity Check) 코드 등을 포함한다.
메모리 장치에 데이터를 저장할 때, 에러 정정을 위해 패러티(parity)도 데이터와 함께 메모리 장치에 저장된다. 메모리 장치에 저장된 일부 데이터가 변경된 경우에, 새로운 패러티를 생성하기 위해서는 패러티와 함께 저장된 모든 데이터를 읽어야 한다. 이것은 데이터 읽기 시간과 전력 소모가 증가하게 하는 원인이 될 수 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 메모리 장치에 저장된 일부 데이터가 변경되어 새로운 패러티를 생성하는 경우에, 데이터 읽기 시간과 전력 소모를 줄일 수 있는 메모리 컨트롤러 및 메모리 시스템을 제공하는 데 있다.
또한, 본 발명은 메모리 장치에 저장된 부분 데이터(partial data)의 에러를 검출 또는 정정하고 새로운 패러티를 생성하는 메모리 컨트롤러의 부분 데이터 변경 방법을 제공하는 데 있다.
본 발명은 메모리 컨트롤러의 부분 데이터(partial data) 변경 방법에 관한 것으로, 본 발명은 호스트로부터 부분 데이터를 변경하기 위한 요청을 받는 단계; 에러 검출 코드(EDC)를 이용하여, 메모리 장치로부터 읽은 부분 데이터에 대한 에러를 검출하는 단계; 상기 메모리 장치로부터 읽은 부분 데이터에 에러가 없는 경우에, 상기 호스트로부터 제공되는 새 데이터(Dnew)와 상기 메모리 장치로부터 읽은 부분 데이터(Dold, 이하 기존 데이터라 함)의 차이를 구하고, 상기 데이터 차이(Ddif)와 상기 메모리 장치로부터 읽은 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산하는 단계; 및 상기 새 데이터와 상기 새 패러티를 상기 메모리 장치에 저장하는 단계를 포함한다.
실시 예로서, 본 발명은 상기 기존 데이터에 에러가 있는 경우에, 상기 메모리 장치로부터 전체 데이터(whole data)를 읽고, 에러 정정 코드(ECC)를 이용하여 상기 기존 데이터의 에러를 정정하는 단계를 더 포함한다. 상기 기존 데이터의 에러를 정정한 다음에, 상기 호스트로부터 제공되는 새 데이터와 상기 에러를 정정한 기존 데이터의 차이를 구하고, 상기 데이터 차이(Ddif)와 상기 메모리 장치로부터 읽은 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산한다.
다른 실시 예로서, 본 발명은 상기 메모리 장치에 저장될 전체 데이터를 복수의 부분 데이터로 나누고, 각각의 부분 데이터의 EDC를 위한 패러티를 생성하고, 부분 부호화 데이터(partial encoded data)를 만드는 부분 데이터 인코딩 단계; 및 상기 부분 데이터 인코딩 단계를 수행한 다음에, 부분 부호화 데이터 전체의 ECC를 위한 패러티를 생성하는 전체 데이터 인코딩 단계를 더 포함한다.
또 다른 실시 예로서, 본 발명은 상기 메모리 장치에 저장될 전체 데이터의 ECC를 위한 패러티를 생성하는 전체 데이터 인코딩 단계; 상기 전체 데이터 인코딩 단계를 수행한 다음에, 상기 메모리 장치에 저장될 전체 데이터를 복수의 부분 데이터로 나누고, 전체 데이터의 EDC를 위한 패러티를 생성하는 단계; 및 각각의 부분 데이터의 EDC를 위한 패러티를 생성하고 부분 부호화 데이터(partial encoded data)를 만드는 부분 데이터 인코딩 단계를 포함한다. 상기 부분 데이터 인코딩 단계에서, 상기 전체 데이터 인코딩 단계에서 생성된 전체 데이터의 EDC를 위한 패러티에 따른 부호화 패러티를 생성한다.
본 발명의 다른 일면은 메모리 컨트롤러의 부분 데이터(partial data) 변경 방법에 관한 것으로, 호스트로부터 부분 데이터를 변경하기 위한 요청을 받는 단계; 에러 정정 코드(ECC)를 이용하여, 메모리 장치로부터 읽은 부분 데이터에 대한 에러를 검출하는 단계; 검출 결과 상기 메모리 장치로부터 읽은 부분 데이터에 에러가 있는 경우에 에러를 정정하고, 상기 호스트로부터 제공되는 새 데이터(Dnew)와 상기 에러 정정한 부분 데이터(Dold, 이하 기존 데이터라 함)의 차이를 구하고, 상기 데이터 차이(Ddif)와 상기 메모리 장치로부터 읽은 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산하는 단계; 및 상기 새 데이터와 상기 새 패러티를 상기 메모리 장치에 저장하는 단계를 포함한다.
실시 예로서, 본 발명은 상기 메모리 장치에 저장될 전체 데이터를 복수의 부분 데이터로 나누고, 각각의 부분 데이터의 ECC를 위한 패러티를 생성하고, 부분 부호화 데이터(partial encoded data)를 만드는 부분 데이터 인코딩 단계; 및 상기 부분 데이터 인코딩 단계를 수행한 다음에, 부분 부호화 데이터 전체의 ECC를 위한 패러티를 생성하는 전체 데이터 인코딩 단계를 더 포함한다.
다른 실시 예로서, 본 발명은 상기 메모리 장치에 저장될 전체 데이터의 ECC를 위한 패러티를 생성하는 전체 데이터 인코딩 단계; 및 상기 전체 데이터 인코딩 단계를 수행한 다음에, 상기 메모리 장치에 저장될 전체 데이터를 복수의 부분 데이터로 나누고, 전체 데이터의 ECC를 위한 패러티를 생성하는 단계; 및 각각의 부분 데이터의 ECC를 위한 패러티를 생성하고 부분 부호화 데이터(partial encoded data)를 만드는 부분 데이터 인코딩 단계를 더 포함한다. 상기 부분 데이터 인코딩 단계에서, 상기 전체 데이터 인코딩 단계에서 생성된 전체 데이터의 ECC를 위한 패러티에 따른 부호화 패러티를 생성한다.
또 다른 실시 예로서, 본 발명은 검출 결과 상기 메모리 장치로부터 읽은 부분 데이터에 에러가 없는 경우에, 상기 호스트로부터 제공되는 새 데이터(Dnew)와 상기 메모리 장치로부터 읽은 부분 데이터(Dold)의 차이를 구하고, 상기 데이터 차이(Ddif)와 상기 메모리 장치로부터 읽은 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산하는 단계를 더 포함한다.
본 발명은 메모리 장치에 저장된 데이터의 일부가 변경된 경우에, 변경되지 않은 데이터를 읽지 않고, 변경된 일부 데이터를 이용하여 새 패러티를 생성할 있다. 본 발명에 의하면, 변경된 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다. 또한, 본 발명은 변경하고자 하는 일부 데이터에 에러가 있는 경우에, 에러를 조기에 검출하고 정정함으로 새 패러티에 에러가 발생하는 것을 방지할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 장치(1100)를 보여주는 블록도이다.
도 3 및 도 4는 도 2에 도시된 메모리 셀 어레이의 실시 예를 보여주는 회로도이다.
도 5는 도 1에 도시된 메모리 컨트롤러를 보여주는 블록도이다.
도 6은 도 5에 도시된 새 패러티 생성기를 예시적으로 보여주는 블록도이다.
도 7 내지 도 11은 도 6에 도시된 새 패러티 생성기의 동작을 예시적으로 설명하기 위한 도표 또는 블록도이다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템의 새 패러티 생성 방법을 보여주는 순서도이다.
도 13은 패러티 체크 메트릭스(parity check matrix)의 예를 보여주는 도표이다.
도 14는 도 13에 도시된 패러티 체크 메트릭스(parity check matrix)에서 처음 1바이트 데이터가 변경되는 경우를 보여주는 도표이다.
도 15는 도 13에 도시된 패러티 체크 메트릭스(parity check matrix)에서 영역별로 새 패러티 생성 동작을 수행하는 예를 보여주는 도표이다.
도 16 및 도 17은 부분 데이터의 에러 검출 또는 정정을 위한 데이터 구조를 보여주는 도표이다.
도 18 및 도 19는 부분 데이터 인코딩(partial data encoding)과 전체 데이터 인코딩(whole data encoding)의 순서를 보여주는 개념도이다.
도 20 및 도 21은 본 발명의 실시 예에 따른 메모리 시스템의 에러 검출 또는 정정 동작을 수행하는 새 패러티 생성 방법을 보여주는 순서도이다.
도 22는 도 1에 도시된 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 23은 본 발명의 실시 예에 따른 메모리 시스템이 메모리 카드로 구현된 예를 보여준다.
도 24는 본 발명의 실시 예에 따른 메모리 시스템이 솔리드 스테이트 드라이브(SSD, Solid State Drive)로 구현된 예를 보여준다.
도 25는 본 발명의 실시 예에 따른 메모리 시스템이 컴퓨팅 시스템에 적용된 예를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
Ⅰ. ECC 인코더를 포함하는 메모리 시스템
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(1000)은 메모리 장치(1100), 메모리 컨트롤러(1200), 그리고 호스트(1300)를 포함한다.
메모리 장치(1100)는 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Nonvolatile Memory Device)를 포함한다. 휘발성 메모리 장치는 전원 공급이 차단되면 저장한 데이터를 잃는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM이나 DRAM 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 메모리 장치(1100)는 사용 중에 비트 에러(bit error)가 발생할 수 있고, 에러를 정정하기 위한 다양한 방법들이 사용되고 있다.
메모리 컨트롤러(1200)는 메모리 장치(1100)와 호스트(1300) 사이에 연결된다. 메모리 컨트롤러(1200)는 호스트(1300)의 요청에 응답하여 메모리 장치(1100)를 액세스한다. 메모리 컨트롤러(1200)는 호스트(1300)로부터 데이터(DATA)를 입력받고, 부호화된 데이터(DATA_C; coded data)를 생성할 수 있다. 메모리 컨트롤러(1200)는 메모리 장치(1100)로 커맨드(CMD), 어드레스(ADDR), 부호화 데이터(DATA_C), 그리고 제어 신호(CTRL)를 제공할 수 있다.
한편, 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 부호화 데이터(DATA_C)를 수신하고, 이를 복호화하여 원본 데이터(DATA; original data)를 복원할 수 있다. 메모리 컨트롤러(1200)는 복원된 데이터(DATA)를 호스트(1300)로 전송할 수 있다.
계속해서 도 1을 참조하면, 메모리 컨트롤러(1200)는 ECC 인코더(1270)를 포함한다. ECC 인코더(1270)는 메모리 장치(1100)로 제공될 데이터에 대하여 ECC 인코딩(encoding)을 수행하고, 패리티(parity)가 부가된 부호화 데이터(DTAT_C)를 생성한다. ECC 인코더(1270)는 패리티(parity)를 사용하여 에러를 정정할 수 있다.
ECC 인코더(1270)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러를 정정할 수 있다.
한편, ECC 인코더(1270)는 메모리 장치(1100)에 저장된 데이터의 일부가 변경된 경우에, 변경된 일부 데이터를 이용하여 새 패러티(new parity)를 생성할 있다. 본 발명의 실시 예에 따른 메모리 시스템(1000)은 새 패러티를 구할 때 변경되지 않은 데이터를 사용하지 않기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다.
도 2는 도 1에 도시된 메모리 장치(1100)를 보여주는 블록도이다. 도 2를 참조하면, 메모리 장치(1100)는 메모리 셀 어레이(1110), 어드레스 디코더(1120), 데이터 입출력 회로(1130), 그리고 제어 로직(1140)을 포함한다.
메모리 셀 어레이(1110)는 워드 라인들(WL)을 통해 어드레스 디코더(1120)에 연결되고, 비트 라인들(BL)을 통해 데이터 입출력 회로(1130)에 연결된다. 메모리 셀 어레이(1110)는 복수의 메모리 셀을 포함한다. 행(row) 방향으로 배열되는 메모리 셀은 워드 라인들(WL)에 연결된다. 열(column) 방향으로 배열되는 메모리 셀은 비트 라인들(BL)에 연결된다. 하나의 메모리 셀에 하나 또는 그 이상의 데이터가 저장될 수 있다.
어드레스 디코더(1120)는 워드 라인(WL)을 통해 메모리 셀 어레이(1110)에 연결된다. 어드레스 디코더(1120)는 메모리 컨트롤러(도 1 참조, 1200)로부터 어드레스(ADDR)를 수신한다. 어드레스(ADDR)는 행 어드레스(row address)와 열 어드레스(column address)를 포함할 수 있다. 어드레스 디코더(1120)는 행 어드레스를 이용하여 하나 또는 그 이상의 워드 라인(WL)을 선택하고, 열 어드레스(CA; Column Address)를 데이터 입출력 회로(1130)에 전달한다.
데이터 입출력 회로(1130)는 비트 라인들(BL)을 통해 메모리 셀 어레이(1110)에 연결되고, 메모리 컨트롤러(1200)와 부호화 데이터(DATA_C)를 교환한다. 데이터 입출력 회로(1130)는 제어 로직(1140)의 제어에 응답하여 동작한다. 데이터 입출력 회로(1130)는 어드레스 디코더(1120)로부터 열 어드레스(CA)를 입력받고, 하나 또는 그 이상의 비트 라인(BL)을 선택한다.
데이터 입출력 회로(1130)는 외부로부터 부호화 데이터(DATA_C)를 수신하고, 수신된 데이터(DATA_C)를 메모리 셀 어레이(1110)에 제공한다. 데이터 입출력 회로(1130)는 메모리 셀 어레이(1110)로부터 부호화 데이터(DATA_C)를 읽고, 읽은 데이터(DATA_C)를 메모리 컨트롤러(1200)로 출력한다.
제어 로직(1140)은 어드레스 디코더(1120)와 데이터 입출력 회로(1130)에 연결된다. 제어 로직(1140)은 메모리 컨트롤러(1200)로부터 커맨드(CMD)와 제어 신호(CTRL)를 입력받고, 메모리 장치(1100)의 제반 동작(예를 들면, 읽기나 쓰기 동작 등)을 제어할 수 있다.
도 3 및 도 4는 도 2에 도시된 메모리 셀 어레이의 실시 예를 보여주는 회로도이다. 도 3은 NAND 플래시 메모리의 예를 보여주고, 도 4는 STT-MRAM(Spin transfer torque magneto resistive random access memory)의 예를 보여준다.
도 3을 참조하면, 메모리 셀 어레이(1110a)는 복수의 플래시 메모리 셀을 포함한다. 행 방향을 따라 제공되는 메모리 셀들(MC1~MCm)은 워드 라인들(WL1~WLm)에 연결된다. 동일한 행의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결된다. 열 방향을 따라 제공되는 메모리 셀들(MC1~MCm)은 비트 라인들(BL1~BLn)에 대응한다. 동일한 열의 메모리 셀들(MC1~MCm)은 동일한 비트 라인(BL)에 연결된다.
비트 라인들(BL1~BLn)과 메모리 셀들(MC1~MCm) 사이에 스트링 선택 트랜지스터들(SST)이 연결된다. 스트링 선택 트랜지스터들(SST)은 스트링 선택 라인(SSL)에 연결된다. 공통 소스 라인(CSL)과 메모리 셀들(MC1~MCm) 사이에 접지 선택 트랜지스터들(GST)이 연결된다. 접지 선택 트랜지스터들(GST)은 접지 선택 라인(GSL)에 연결될 수 있다.
도 4를 참조하면, 메모리 셀 어레이(1110b)는 복수의 워드 라인(WL1~WLm), 복수의 비트라인(BL1~BLn), 그리고 워드 라인들(WL1~WLm)과 비트라인들(BL1~BLn)이 교차하는 영역에 배치되는 다수의 메모리 셀을 포함한다.
메모리 셀이 STT-MRAM(Spin transfer torque magneto resistive random access memory)셀로 구현되는 경우, 셀 트랜지스터 및 자성 물질을 가지는 자기 터널 접합 소자(magnetic tunnel junction, 이하 MTJ 소자)를 포함할 수 있다. MTJ 소자들은 상 변화 물질을 이용하는 PRAM(Phase Change Random Access Memory), 전이금속산화물(Complex Metal Oxide) 등의 가변 저항 물질을 이용한 RRAM(Resistive Random Access Memory) 등의 저항성 소자로 대체될 수도 있다.
다시 도 1을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(1000)은 메모리 컨트롤러(1200) 내에 ECC 인코더(1270)를 포함한다. 본 발명의 실시 예에 따른 ECC 인코더(1270)는 메모리 장치(1100)에 저장된 일부 데이터가 변경된 경우에, 변경된 일부 데이터를 이용하여 새 패러티(new parity)를 생성할 수 있다. 본 발명에 의하면, 변경된 일부 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다.
Ⅱ. 일부 데이터가 변경되는 경우에 새 패러티를 생성하는 방법
도 5는 도 1에 도시된 메모리 컨트롤러를 보여주는 블록도이다. 도 5를 참조하면, 메모리 컨트롤러(1200)는 시스템 버스(1210), 제어 유닛(1220), 램(1230), 호스트 인터페이스(1240), 메모리 인터페이스(1250), 그리고 ECC 인코더(1270)를 포함한다.
시스템 버스(1210)는 제어 유닛(1220), 램(1230), 호스트 인터페이스(1240), 메모리 인터페이스(1250), 그리고 ECC 인코더(1270) 사이에 채널을 제공한다. 제어 유닛(1220)은 메모리 컨트롤러(1200)의 제반 동작을 제어한다. 램(1230)은 제어 유닛(1220)의 동작 메모리, 캐시 메모리, 그리고 버퍼 메모리 중 적어도 하나로 이용될 수 있다.
호스트 인터페이스(1240)는 특정한 통신 규격에 따라 호스트(1300)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(1200)는 USB (Universal Serial Bus), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 그리고 파이어와이어(Firewire) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 호스트(도 1 참조, 1300)와 통신할 수 있다.
메모리 인터페이스(1250)는 메모리 장치(1100, 도 1 참조)와 인터페이싱한다. 예를 들면, 메모리 인터페이스(1250)는 낸드 플래시 인터페이스 또는 MRAM 인터페이스 등을 포함한다.
ECC 인코더(1270)는 호스트(1300)로부터 수신되는 데이터를 ECC 인코딩(ECC encoding)하고, 부호화 데이터(DATA_C; coded data)와 패러티(parity)를 메모리 장치(1100)로 제공한다. 여기에서, 부호화 데이터는 ECC 데이터라고도 하고도 한다. 메모리 장치(1100)에 저장될 데이터가 D1, D2, D3, D4라고 가정하면, 패러티(P)는 수학식 1에 의해 계산될 수 있다.
Figure 112012094089007-pat00001
위의 수학식 1에서 덧셈 연산은 XOR 연산 또는 mod2 연산이다. 비이진 코드, 비선형 코드에서는 그에 해당하는 연산이 될 수 있다.
계속해서 도 5를 참조하면, ECC 인코더(1270)는 새 패러티 생성기(1260)를 포함한다. ECC 인코더(1270)는 새 패러티 생성기(1260)를 사용하여, 메모리 장치(1100)에 저장된 데이터 중에서 일부가 변경된 경우에, 변경된 일부 데이터를 이용하여 새 패러티를 생성할 수 있다. 도 5에서 새 패러티 생성기(1260)는 ECC 인코더(1270)의 외부에 위치할 수도 있다.
도 6은 도 5에 도시된 새 패러티 생성기를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 새 패러티 생성기(1260)는 데이터 위치 식별기(1261), 데이터 차이 계산기(1262), 그리고 패러티 계산기(1263)를 포함한다.
데이터 위치 식별기(1261)는 호스트(1300)로부터 입력되는 새 데이터(Dnew)의 위치(location)를 식별하고, 위치 신호(LOC)를 데이터 차이 계산기(1262) 및 패러티 계산기(1263)로 제공한다. 여기에서, 새 데이터의 위치란 메모리 장치(1100)에 저장된 데이터 중에서 새 데이터(new data)로 변경될 데이터의 위치를 의미한다.
예를 들어, 패러티(P; Parity)가 4개의 데이터(D1, D2, D3, D4)를 통해 만들어진다고 가정하자. 이때 데이터 D1 내지 D4는 각각 d1 내지 d4 위치에 있다. D1과 D2가 새 데이터로 변경되는 경우에, 새 데이터의 위치는 d1과 d2이다. 이하에서는 d1 위치의 기존 데이터(old data)는 D1old로 표기하고, 새 데이터는 D1new로 표기한다. d1 위치의 기존 데이터(D2old)가 새 데이터(D2new)로 변경되는 경우에, 데이터 위치 식별기(1261)는 d1를 가리키는 위치 신호(LOC)를 제공한다.
데이터 차이 계산기(1262)는 데이터 위치 식별기(1261)로부터 새 데이터의 위치 신호(LOC)를 입력받고, 호스트(1300)로부터 입력된 새 데이터(Dnew)와 메모리 장치(1100)에 저장된 기존 데이터(Dold)의 차이를 계산한다. 데이터 차이 계산기(1262)는 새 데이터(Dnew)와 기존 데이터(Dold)의 데이터 차이(Ddif)를 패러티 계산기(1263)로 제공한다. 데이터 차이 계산기(1262)의 동작은 도 8 및 도 9를 참조하여 좀 더 상세하게 설명될 것이다.
패러티 계산기(1263)는 새 데이터의 위치 신호(LOC)를 입력받고, 데이터 차이 계산기(1262)로부터 입력된 데이터 차이(Ddif)와 메모리 장치(1100)에 저장된 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산한다. 패러티 계산기(1263)의 동작은 도 10 및 도 11을 참조하여 좀 더 상세하게 설명될 것이다.
한편, 도 6에 도시된 새 패러티 생성기의 구성 및 동작 원리는 다음과 같은 수학적 원리에 기초하고 있다. 메모리 장치(1100)에 데이터 D1old, D2old, D3old, D4old와 페러티 Pold가 저장되어 있다고 가정하자.
기존 패러티(Pold)는 수학식 1에 의해 다음과 같이 계산될 수 있다.
Pold=D1old+D2old+D3old+D4old ----- 식(1)
여기에서, D1old와 D2old가 D1new와 D2new로 바뀌면 Pold도 바뀌게 된다. 메모리 장치(1100)에 저장된 데이터 중에서 일부가 바뀌면, 종래의 메모리 시스템은 메모리 장치(1100)로부터 모든 데이터(D1old, D2old, D3old, D4old)를 읽고, 데이터를 변경한 다음에 새 패러티(Pnew)를 구해야 한다.
새 패러티(Pnew)는 수학식 1에 의해 다음과 같이 계산될 수 있다.
Pnew=D1new+D2new+D3old+D4old ----- 식(2)
위의 식(2)에서 식(1)을 빼면 다음과 같다.
Pnew-Pold=(D1old+D2old+D3old+D4old)-(D1new+D2new+D3old+D4old)
Pnew는 다음과 같이 계산될 수 있다.
Pnew=Pold+(D1new+D2new+D3old+D4old)-(D1old+D2old+D3old+D4old)
Pnew=Pold+(D1new+D2new)-(D1old+D2old)
Pnew=Pold+(D1new-D1old)+(D2new-D2old) ----- 식(3)
위의 식(3)을 구하는 과정을 살펴보면, 변경되지 않은 데이터(D3old, D4old)가 연산 과정에서 제거됨을 알 수 있다. 이것은 메모리 장치(1100)에 저장된 일부 데이터가 변경되는 경우에, 변경되지 않은 데이터는 불필요하다는 것을 말해준다.
종래의 메모리 시스템은 변경되지 않는 데이터(D3old, D4old)를 포함한 모든 데이터를 읽고 새 패러티를 계산한다. 종래의 메모리 시스템은, ECC 데이터의 사이즈(size)가 크고 변경되는 데이터의 사이즈가 작은 경우에도, 새 패러티 생성을 위해 모든 데이터를 읽어야 하기 때문에, 많은 데이터 읽기 시간이 소요되고 많은 전력을 소모하게 된다.
본 발명의 실시 예에 따른 메모리 시스템(1000)은 도 6에 도시된 새 패러티 생성기(1260)를 이용하여, 메모리 장치(1100)에 저장되어 있는 데이터 중에서 일부가 변경된 경우에, 모든 데이터를 읽지 않고 변경된 일부 데이터만을 이용하여 새 패러티를 생성할 수 있다. 본 발명의 실시 예에 따른 메모리 시스템은 변경된 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다.
도 7 내지 도 11은 도 6에 도시된 새 패러티 생성기의 동작을 예시적으로 설명하기 위한 도표 또는 블록도이다.
도 7의 도표를 참조하면, 메모리 장치(1100)에는 4개의 기존 데이터(Dold)와 1개의 기존 패러티(P)가 저장되어 있다고 가정하자. d1 내지 d4 위치에 있는 기존 데이터(Dold)는 각각 0, 0, 1, 1이다. 즉, D1old는 0이고, D2old는 0이고, D3old는 1이며, D4old는 1이다. 식(1)에 D1old 내지 D4old를 대입하면, Pold는 XOR 연산에 의해 0이 된다.
기존 데이터 D1old와 D2old가 새 데이터 D1new와 D2new로 변경된다고 가정하자. 도 7에서 보는 바와 같이, D1new는 0이고, D2new는 1이다. 도 7에서 변경되는 데이터(D1new, D2new)는 빗금으로 표시되어 있다. 도 6에 도시된 새 패러티 생성기(1260)는 변경되지 않은 데이터(D3old, D4old) 없이도 새 패러티(Pnew)를 생성할 수 있다. 이하에서는 D3old와 D4old 없이도, 새 패러티(Pnew)를 구하는 방법이 설명될 것이다.
도 8은 도 6에 도시된 데이터 차이 계산기를 보여주는 블록도이다. 도 8을 참조하면, 데이터 차이 계산기(1262)는 새 데이터의 위치 신호(LOC)를 입력받고, 새 데이터(Dnew)와 기존 데이터(Dold)의 차이를 계산한다. 데이터 차이(Ddif)는 수학식 2에 의해 계산된다.
Figure 112012094089007-pat00002
위의 수학식 2에서 뺄셈 연산은 XOR 연산 또는 mod2 연산이다. 비이진 코드, 비선형 코드에서는 그에 해당하는 연산이 될 수 있다.
위의 식(3)에서, 데이터 차이 계산기(1262)는 위치 신호(d1)를 입력받고 새 데이터(D1new)와 기존 데이터(D1old)의 차이(D1dif)를 계산한 다음에, 위치 신호(d2)를 입력받고 새 데이터(D2new)와 기존 데이터(D2old)의 차이(D2dif)를 계산한다. 여기에서, D1dif는 d1 위치에 있는 새 데이터(D1new)와 기존 데이터(D1old)의 데이터 차이를 의미한다. 데이터 차이 계산기(1262)는 위치 신호(d1, d2)를 입력받고, 데이터 차이(D1dif, D2dif)를 동시에 계산할 수도 있다. 데이터 차이(D1dif, D2dif)는 패러티 계산기(1263)로 제공된다.
도 9는 도 8에 도시된 데이터 차이 계산기의 동작을 예시적으로 설명하기 위한 도표이다. 앞에서 설명한 바와 같이, 기존 데이터(D1old, D2old)가 새 데이터(D1new, D2new)로 변경되면, D1new과 D1old는 모두 0이기 때문에, 수학식 2에 의하면 D1dif는 0이 될 것이다. 그리고 D2old는 0이고 D2new는 1이기 때문에 D2dif는 1이 될 것이다.
도 10은 도 6에 도시된 패러티 계산기를 보여주는 블록도이다. 도 10을 참조하면, 패러티 계산기(1263)는 새 데이터의 위치 신호(LOC)를 입력받고, 데이터 차이 계산기(1262)로부터 입력된 데이터 차이(Ddif)와 메모리 장치(1100)에 저장된 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 계산한다. 새 패러티(Pnew)는 수학식 3에 의해 계산된다.
Figure 112012094089007-pat00003
위의 예에서, Ddif는 D1dif와 D2dif의 합이다. 그리고 D1dif는 D1new와 D1old의 차이(difference)이고, D2dif는 D2new와 D2old의 차이다. 즉, 수학식 3은 앞에서 설명한 식(3)과 같이 표현될 수 있다.
Pnew=Pold+D1dif+D2dif=Pold+(D1new-D1old)+(D2new-D2old) ----- 식(3)
도 11은 도 10에 도시된 패러티 계산기의 동작을 예시적으로 설명하기 위한 도표이다. 도 9의 예에서 계산한 것과 같이, D1dif는 0이고 D2dif가 1이라고 하면, 전체 데이터 차이 Ddif는 1이 될 것이다. Pold는 0이고 Ddif는 1이기 때문에, 새 패러티(Pnew)는 1이 될 것이다.
수학식 3을 참조하면, 새 패러티(Pnew)는 기존 패러티(Pold)와 변경되는 데이터 차이(Ddif)의 함수 형태로 표현됨을 알 수 있다. 여기에서, 새 패러티(Pnew)를 구하는 함수는 변경하지 않는 데이터(예를 들면, D3old, D4old)와 무관함을 알 수 있다. 이것은 일반적인 비선형 부호 또는 비이진 부호에도 확장될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 변경된 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다. 특히 본 발명의 실시 예에 따른 메모리 시스템은 작은 단위의 데이터를 바꾸는 경우에 유용하게 활용될 수 있다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템의 새 패러티 생성 방법을 보여주는 순서도이다.
S110 단계에서, 메모리 컨트롤러(도 1 참조, 1200)는 메모리 장치(도 1 참조, 1100)로부터 기존 데이터(Dold)와 기존 패러티(Pold)를 읽는다. S120 단계에서, 메모리 컨트롤러(1200)는 호스트(도 1 참조, 1300)로부터 새 데이터(Dnew)를 입력받는다. S130 단계에서, 메모리 컨트롤러(1200)는 새 데이터(Dnew)와 기존 데이터(Dold)의 차이(Ddif)를 계산한다. S140 단계에서, 메모리 컨트롤러(1200)는 기존 패러티(Pold)와 데이터 차이(Ddif)를 이용하여 새 패러티(Pnew)를 계산한다.
도 13은 패러티 체크 메트릭스(parity check matrix)의 예를 보여주는 도표이다. 도 13을 참조하면, 메모리 장치(도 1 참조, 1100)에 저장된 데이터의 부호 길이(code length)는 72이고 데이터 길이(data length)는 64이다. 도 13은 (72, 64) 싱글 에러 정정-이중 에러 검출(SEC-DED; single error correction-double error detection)의 패러티 체크 메트릭스(parity check matrix)의 예이다. 여기에서, 싱글 에러 정정-이중 에러 검출(SEC-DED)는 하나의 오류를 정정할 수 있고 두 개의 에러를 검출하는 것을 의미한다.
도 13에서 하나의 행(row)은 하나의 패러티 체크식(parity check equation)으로 표현될 수 있다. 패러티(parity)는 하나의 행에서 1에 해당하는 위치의 부호 비트들이 더해져서 만들어진다. 예를 들어, 제 1 행(R1)에서 패러티(P0)는 식(4)에 의해 구할 수 있다.
P0=d0+d1+d2+d3+…+d53+d56+d57+d58 ----- 식(4)
위의 식(4)와 같은 방법으로 제 2 내지 제 8 행(R2~R8)에서의 패러티(P1~P7)도 구할 수 있다. 아래 표 1은 각 행에서의 패러티를 구하는 식을 보여준다.
P0 d0 + d1 + d2 + d3 +…+ d53 + d56 + d57 + d58
P1 d0 + d1 + d2 + d8 +…+ d58 + d59 + d60 + d61
P2 d3 + d4 + d5 + d8 +…+ d51 + d59 + d62 + d63
P3 d3 + d6 + d7 + d11 +…+ d47 + d48 + d51 + d59
P4 d3 + d11 + d14 + d15 +…+ d52 + d55 + d56 + d59
P5 d0 + d3 + d11 + d19 +…+ d54 + d57 + d60 + d63
P6 d1 + d4 + d7 + d8 +…+ d55 + d57 + d57 + d60 + d61
P7 d2 + d5 + d6 + d9 +…+ d60 + d61 + d62 + d63
본 발명의 실시 예에 따른 메모리 시스템(도 1 참조, 1000)은 복수의 행에 대하여 새 패러티를 생성할 수 있다. 도 13에서 보는 바와 같이 제 1 행 내지 제 8 행에 대하여 소정의 크기 단위로 새 패러티를 생성할 수 있다. 이 경우에도 앞에서 설명한 바와 같이, 일부 데이터만 변경된 경우에, 모든 데이터를 읽지 않고 변경된 일부 데이터를 이용하여 새 패러티를 생성할 수 있다.
도 14는 도 13에 도시된 패러티 체크 메트릭스(parity check matrix)에서 처음 1바이트 데이터가 변경되는 경우를 보여주는 도표이다. 도 14에서, 변경되지 않는 데이터 즉, 새 패러티(Pnew)를 구하는 데 이용하지 않은 데이터는 X표시 되어 있다.
메모리 장치(1100)에 저장되어 있는 데이터 중에서 처음 1바이트 데이터가 변경되면, 기존의 메모리 시스템은 도 13에 도시된 모든 데이터를 읽고 새 패러티를 생성한다. 그러나 본 발명의 실시 예에 따른 메모리 시스템(도 1 참조, 1000)은 처음 1바이트 데이터와 1바이트 패러티만을 읽고 새 패러티를 생성할 수 있다. 즉, 수학식 3과 같이, 본 발명의 실시 예에 따른 메모리 시스템(1000)은 1바이트 새 데이터(Dnew)와 1바이트 기존 데이터(Dold)의 차이를 구하고, 데이터 차이(Ddif)와 기존 패러티(Pold)를 이용하여, 새 패러티(Pnew)를 생성할 수 있다. 본 발명에 의하면, 변경된 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다.
한편, 도 14에 도시된 바와 같이 메모리 장치의 일부 데이터(예를 들면, 처음 1바이트 데이터)만을 이용하여 새 패러티를 구하는 경우에, 여러 가지 방법으로 ECC 인코딩을 수행할 수 있다. 예를 들어, 변경하지 않을 데이터를 모두 0으로 보고, ECC 인코딩을 수행할 수 있다. 즉, 도 14에서 X표시 되어 있는 데이터를 모두 0으로 간주하고, 변경되는 데이터의 차이(Ddif)와 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 구할 수 있다. 다른 방법으로는, 메모리 장치(도 1 참조, 1100)에 저장된 데이터를 일정 크기의 영역(section)으로 나누고, 영역별로 새 패러티 생성 동작을 수행할 수 있다.
도 15는 도 13에 도시된 패러티 체크 메트릭스(parity check matrix)에서 영역별로 새 패러티 생성 동작을 수행하는 예를 보여주는 도표이다. 영역별로 새 패러티 생성 동작을 수행하기 위해서, ECC 인코더(도 5 참조, 1270)는 영역별로 새 패러티 생성기를 구비할 수 있다.
제 1 영역(section1)의 데이터가 변경되는 경우에, 새 패러티(P0new)는 수학식 3에 의해 다음과 같이 계산될 수 있다.
P0new=P0old+D0dif+D1dif+D2dif+D3dif+D4dif+D5dif+D6dif+D7dif ---- 식(4)
여기에서, D1dif=D1new-D1old이다. 영역별 새 패러티 생성기는 위의 식(4)를 통해 설계될 수 있다. 도 15에 도시된 바와 같이 영역별 패러티 생성 동작이 바이트 단위로 수행되면, ECC 인코더(1270)는 바이트 마스킹 동작(byte-masking operation)을 수행할 수 있다.
이상에서 설명한 바와 같이,본 발명은 변경된 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다. 또한, 본 발명은 새 패러티 생성 동작을 영역별로 나누어 수행할 수 있다. 특히 본 발명의 실시 예에 따른 메모리 시스템은 작은 단위의 데이터를 바꾸는 경우에 유용하게 활용될 수 있다.
Ⅲ. 에러 검출 및 정정 동작을 포함하는 부분 데이터 변경 방법
앞에서 설명한 식(4)를 다시 참조하면, 제 1 영역(section1)의 데이터가 변경되는 경우에, 새 패러티(P0new)는 다음과 같다.
P0new=P0old+D0dif+D1dif+D2dif+D3dif+D4dif+D5dif+D6dif+D7dif ---- 식(4)
위 식(4)에서 변경하고자 하는 제 1 영역(section1)의 데이터에 에러가 있으면, 새 패러티(P0new)에도 에러가 발생할 수 있다.
본 발명은 변경하고자 하는 일부 데이터에 에러가 있는 경우에, 에러를 조기에 검출하고 정정함으로 새 패러티에 에러가 발생하는 것을 방지할 수 있다. 이를 위해 본 발명은 데이터를 인코딩하는 과정에서 각 영역별로 에러 검출 또는 정정을 위한 패러티를 생성한다. 이하에서는, 각 영역의 데이터는 부분 데이터(partial data)라고 부르기로 한다.
도 16 및 도 17은 부분 데이터의 에러 검출 또는 정정을 위한 데이터 구조를 보여주는 도표이다. 도 16은 부분 데이터의 에러 검출을 위한 데이터 구조이고, 도 17은 부분 데이터의 에러 정정을 위한 데이터 구조이다.
도 16을 참조하면, 전체 데이터(whole data)는 n개의 부분 데이터(partial DATA1~DATAn)로 나누어질 수 있다. 데이터 인코딩 과정에서, 각각의 부분 데이터(partial data)의 에러 검출(error detection)을 위한 패러티와 전체 데이터(whole data)의 에러 정정(error correction)을 위한 패러티가 생성될 수 있다. 도 17을 참조하면, 각각의 부분 데이터의 에러 정정을 위한 패러티와 전체 데이터의 에러 정정을 위한 패러티가 생성될 수 있다.
도 18 및 도 19는 부분 데이터 인코딩(partial data encoding)과 전체 데이터 인코딩(whole data encoding)의 순서를 보여주는 개념도이다. 도 18은 부분 데이터 인코딩을 먼저 한 다음에, 전체 데이터 인코딩을 수행하는 방법을 보여준다.
도 18을 참조하면, 전체 데이터(whole data, 110)는 n(n은 자연수) 개의 부분 데이터 영역(partial DATA1~DATAn)으로 나뉘어져 있다. 각각의 부분 데이터에 대해, 부분 데이터 인코딩 동작이 수행된다. 여기에서, 부분 데이터 인코딩 과정에서 에러 검출 또는 정정을 위한 패러티가 생성된다.
n개의 부분 데이터(partial DATA1~DATAn)로 구성된 전체 데이터(110)는 EDC 또는 ECC를 위한 부분 데이터 인코딩 동작(partial data encoding operation)을 통해 부분적으로 부호화된 전체 데이터(partially encoded whole data, 120)로 된다. 부분적으로 부호화된 전체 데이터(partially encoded whole data)는 n개의 부분 부호화 데이터(partial encoded DATA1~DATAn)로 구성된다. 각각의 부분 부호화 데이터는 부분 데이터(partial data)와 패러티(parity)를 포함한다.
예를 들어, 제 1 부분 데이터(partial DATA1)는 EDC 또는 ECC를 위한 부분 데이터 인코딩 동작을 통해 제 1 부분 부호화 데이터(partial encoded DATA1)로 된다. 제 1 부분 부호화 데이터는 제 1 부분 데이터(partial DATA1)와 제 1 패러티(P1)로 구성된다. 마찬가지로, 제 n 부분 부호화 데이터(partial encoded DATAn)는 제 n 부분 데이터(partial DATAn)와 제 n 패러티(Pn)로 구성된다.
다음으로, 부분적으로 부호화된 전체 데이터(partially encoded whole data, 120)는 ECC를 위한 전체 데이터 인코딩 동작(whole data encoding operation)을 통해 최종 부호화 데이터(final encoded data, 130)로 된다. 최종 부호화 데이터(130)는 부분적으로 부호화된 전체 데이터(131)와 패러티(132)로 구성된다. 여기에서, 패러티(132)는 부분적으로 부호화된 전체 데이터(131)에 대한 패러티이다.
도 19는 전체 데이터 인코딩을 한 다음에 부분 데이터 인코딩을 수행하는 방법을 보여준다. 도 19를 참조하면, 전체 데이터(whole data, 210)는 ECC를 위한 전체 데이터 인코딩 동작(whole data encoding operation)을 통해 전체적으로 부호화된 데이터(entirely encoded data, 220)로 된다.
전체적으로 부호화된 데이터(entirely encoded data, 220)는 전체 데이터(221)와 이것에 대한 패러티(222)로 구성된다. 도 19에서 점선 211, 221은 부분 데이터 영역(partial data section)으로 나뉘기 전의 전체 데이터(whole data)를 보여주기 위한 것이다. 그리고 패러티(222)는 전체 데이터(whole)의 에러 정정을 위한 것이다.
계속해서 도 19를 참조하면, 전체 데이터(221)는 제 1 내지 제 n 부분 데이터 영역(partial DATA1~DATAn)으로 나뉘어진다. 각각의 부분 데이터에 대해, EDC 또는 ECC를 위한 부분 데이터 인코딩 동작(Partial data encoding operation)이 수행된다. 여기에서, 부분 데이터 인코딩 과정에서 에러 검출 또는 정정을 위한 패러티가 생성된다.
n개의 부분 데이터(partial DATA1~DATAn)로 구성된 전체 데이터(221)는 EDC 또는 ECC를 위한 부분 데이터 인코딩 동작을 통해 부분적으로 부호화된 데이터(partially encoded data)로 된다. 예를 들어, 제 1 부분 데이터(partial DATA1)는 제 1 부분 부호화 데이터(partial encoded DATA1, 231)로 된다. 제 1 부분 부호화 데이터(partial encoded DATA1, 231)는 제 1 부분 데이터(partial DATA1)와 제 1 패러티(P1)로 구성된다.
한편, 전체 데이터의 패러티(222)는 EDC 또는 ECC를 위한 부분 데이터 인코딩 동작을 통해 부호화 패러티(encoded parity)로 된다. 여기에서, 부호화 패러티(encoded parity, 232)는 전제 데이터의 패러티(222)를 부호화한 것이다.
도 20 및 도 21은 본 발명의 실시 예에 따른 메모리 시스템의 에러 검출 또는 정정 동작을 수행하는 부분 데이터 변경 방법을 보여주는 순서도이다. 도 20은 EDC를 위한 부분 데이터 인코딩 동작(partial data encoding operation)을 수행하고, 도 21은 ECC를 위한 부분 데이터 인코딩 동작을 수행한다.
도 20을 참조하면, S210 단계에서 호스트(도 1 참조, 1300)로부터 메모리 컨트롤러(도 1 참조, 1200)로 부분 데이터(partial data)를 변경하기 위한 요청(request)이 인가된다.
S220 단계에서, 메모리 컨트롤러(1200)는 메모리 장치(도 1 참조, 1100)로부터 읽은 부분 데이터를 위한 EDC를 사용하여 에러 여부를 검사한다. 여기에서, 메모리 장치(1100)로부터 읽은 부분 데이터는 기존 데이터(Dold; old data)이다. 메모리 장치(1100)에는 기존 데이터(Dold)와 EDC를 위한 패러티(Pold)가 저장되어 있다.
S230 단계에서, 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 읽은 부분 데이터에 에러가 있는지를 판단한다. 판단 결과, 에러가 있으면(YES), 메모리 컨트롤러(1200)는 전체 데이터(whole data)를 읽고(S240), 전체 데이터를 위한 ECC를 이용하여 에러 데이터를 정정한다(S245).
S240 단계에서 에러가 없거나 S245 단계에서 에러가 정정된 경우에, S250 단계에서 메모리 컨트롤러(1200)는 부분 데이터를 읽고 새 패러티(Pnew)를 생성한다. 즉, 도 12에서 설명한 바와 같이, 새 데이터(Dnew)와 기존 데이터(Dold)의 데이터 차이(Ddif)와 기존 패러티(Pold)를 이용하여 새 패러티(Pnew)를 생성한다.
S260 단계에서, 새 부분 데이터(new partial data)와 새 패러티(Pnew)를 메모리 장치(1100)에 저장한다.
도 21은 ECC를 위한 부분 데이터 인코딩 동작(partial data encoding operation)을 보여준다. 도 21을 참조하면, S310 단계에서 부분 데이터(partial data)를 변경하기 위한 요청(request)이 인가된다.
S320 단계에서, 메모리 장치(1100)로부터 읽은 부분 데이터를 위한 ECC를 사용하여 에러 여부를 검사한다. 메모리 장치(1100)에는 기존 데이터(Dold)와 ECC를 위한 패러티(Pold)가 저장되어 있다.
S330 단계에서, 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 읽은 부분 데이터에 에러가 있는지를 판단한다. 판단 결과, 에러가 있으면(YES), 메모리 컨트롤러(1200)는 부분 데이터를 위한 ECC를 이용하여 에러 데이터를 정정한다(S340).
S330 단계에서 에러가 없거나 S340 단계에서 에러가 정정된 경우에, S350 단계에서 메모리 컨트롤러(1200)는 부분 데이터를 읽고 새 패러티를 생성한다. S360 단계에서, 새 부분 데이터(new partial data)와 새 패러티(Pnew)를 메모리 장치(1100)에 저장한다.
이상에서 설명한 바와 같이,본 발명은 변경된 데이터만을 사용하여 새 패러티를 구하기 때문에, 데이터 읽기 시간과 전력 소모를 줄일 수 있다. 본 발명은 새 패러티 생성 동작을 영역별로 나누어 수행할 수 있다. 본 발명은 변경하고자 하는 일부 데이터에 에러가 있는 경우에, 에러를 조기에 검출하고 정정함으로 새 패러티에 에러가 발생하는 것을 방지할 수 있다.
Ⅳ. 본 발명의 적용 예
도 22는 도 1에 도시된 메모리 시스템의 응용 예를 보여주는 블록도이다. 도 22를 참조하면, 메모리 시스템(2000)은 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 메모리 장치(2100)는 복수의 메모리 칩들을 포함한다. 복수의 메모리 칩들은 복수의 그룹들로 분할될 수 있다. 복수의 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성될 수 있다. 예시적으로, 복수의 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신할 수 있다.
도 23은 본 발명의 실시 예에 따른 메모리 시스템이 메모리 카드로 구현된 예를 보여준다. 도 23을 참조하면, 메모리 카드(3000)는 메모리 장치(3100), 컨트롤러(3200), 그리고 커넥터(3300)를 포함한다.
커넥터(3300)는 메모리 카드(3000)와 호스트를 전기적으로 연결할 수 있다. 메모리 카드(3000)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드들을 구성할 수 있다.
도 24는 본 발명의 실시 예에 따른 메모리 시스템이 솔리드 스테이트 드라이브(SSD, Solid State Drive)로 구현된 예를 보여준다. 도 24를 참조하면, 솔리드 스테이트 드라이브(4000)는 복수의 메모리 장치들(4100), 컨트롤러(4200), 그리고 커넥터(4300)를 포함한다. 커넥터(4300)는 솔리드 스테이트 드라이브(5000)와 호스트를 전기적으로 연결할 수 있다.
도 25는 본 발명의 실시 예에 따른 메모리 시스템이 컴퓨팅 시스템에 적용된 예를 보여주는 블록도이다. 도 25를 참조하면, 컴퓨팅 시스템(5000)은 버스(5100), 프로세서(5200), 메모리 시스템(5300), 모뎀(5400), 그리고 사용자 인터페이스(5500)를 포함한다.
버스(5100)는 컴퓨팅 시스템(5000)의 구성 요소들 사이에 채널을 제공한다. 프로세서(5200)는 컴퓨팅 시스템(5000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 메모리 시스템(5300)은 본 발명의 실시 예에 따른 메모리 시스템(1000 또는 2000)을 포함할 수 있다.
메모리 시스템(5300)은 컴퓨팅 시스템(5000)의 동작 메모리 또는 스토리지로 제공될 수 있다. 동작 메모리는 프로세서(5200)가 컴퓨팅 시스템(5000)을 제어하기 위하여 사용하는 저장 공간일 수 있다. 스토리지는 컴퓨팅 시스템(5000)이 데이터의 장기적인 보존을 위하여 사용하는 저장 공간일 수 있다.
메모리 시스템(5300)이 동작 메모리로 제공될 때, 컴퓨팅 시스템(5000)은 별도의 스토리지를 더 포함할 수 있다. 메모리 시스템(5300)이 스토리지로 제공될 때, 컴퓨팅 시스템(5000)은 별도의 동작 메모리를 더 포함할 수 있다. 모뎀(5400)은 외부와 유선 또는 무선 통신을 수행할 수 있다.
사용자 인터페이스(5500)는 카메라, 키보드, 마우스, 마이크, 터치 패드, 터치 패널, 버튼, 센서 등과 같은 사용자 입력 인터페이스, 디스플레이, 스피커, 램프, 모터 등과 같은 사용자 출력 인터페이스를 포함할 수 있다.
컴퓨팅 시스템(5000)은 스마트폰, 스마트 패드 등과 같은 모바일 멀티미디어 장치, 또는 스마트 텔레비전, 스마트 모니터, 컴퓨터, 노트북 컴퓨터 등과 같은 멀티미디어 장치를 형성할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000; 메모리 시스템
1100, 2100; 메모리 장치 1200, 2200; 컨트롤러
1110; 메모리 셀 어레이 1120; 어드레스 디코더
1130; 읽기 및 쓰기 회로 1140; 제어 로직
1210; 시스템 버스 1220; 제어 유닛
1230; 랜덤 액세스 메모리 1240; 호스트 인터페이스
1250; 메모리 인터페이스 1260; ECC 인코더

Claims (20)

  1. 호스트로부터 전체 데이터 중 기존 데이터를 변경하기 위한 요청을 받는 단계;
    메모리 장치로부터 상기 전체 데이터 중 상기 기존 데이터 및 상기 기존 데이터에 대응하는 기존 패러티만을 읽고, 상기 전체 데이터 중 상기 기존 데이터를 제외한 나머지 데이터는 읽지 않는 단계;
    상기 기존 패러티를 이용하여 상기 메모리 장치로부터 읽은 상기 기존 데이터에 대한 에러를 검출하는 단계;
    상기 기존 데이터에 에러가 없는 경우, 상기 호스트로부터 제공되는 새 데이터와 상기 기존 데이터 사이의 제1 데이터 차이를 계산하는 단계;
    상기 제1 데이터 차이와 상기 기존 패러티를 이용하여 상기 새 데이터에 대응하는 새 패러티를 계산하는 단계;
    상기 기존 데이터에 에러가 있는 경우, 상기 메모리 장치로부터 상기 전체 데이터를 읽는 단계;
    에러 정정 코드(ECC)를 이용하여 상기 기존 데이터의 에러를 정정하는 단계;
    상기 호스트로부터 제공되는 상기 새 데이터와 상기 에러가 정정된 기존 데이터 사이의 제2 데이터 차이를 계산하는 단계;
    상기 제2 데이터 차이와 상기 기존 패러티를 이용하여 상기 새 패러티를 계산하는 단계; 및
    상기 새 데이터와 상기 새 패러티를 상기 메모리 장치에 저장하는 단계를 포함하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 메모리 장치에 저장될 전체 데이터를 복수의 부분 데이터로 나누고, 각각의 부분 데이터의 에러 검출 코드(EDC)를 위한 패러티를 생성하고, 부분 부호화 데이터(partial encoded data)를 만드는 부분 데이터 인코딩 단계를 더 포함하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  5. 제 4 항에 있어서,
    상기 부분 데이터 인코딩 단계를 수행한 다음에, 상기 복수의 부분 데이터에 대응하는 상기 부분 부호화 데이터 전체의 ECC를 위한 패러티를 생성하는 전체 데이터 인코딩 단계를 더 포함하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  6. 제 1 항에 있어서,
    상기 메모리 장치에 저장될 전체 데이터의 ECC를 위한 패러티를 생성하는 전체 데이터 인코딩 단계를 더 포함하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  7. 제 6 항에 있어서,
    상기 전체 데이터 인코딩 단계를 수행한 다음에, 상기 메모리 장치에 저장될 전체 데이터를 복수의 부분 데이터로 나누고, 전체 데이터의 EDC를 위한 패러티를 생성하는 단계를 더 포함하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  8. 제 7 항에 있어서,
    상기 복수의 부분 데이터 각각의 EDC를 위한 패러티를 생성하고 부분 부호화 데이터(partial encoded data)를 만드는 부분 데이터 인코딩 단계를 더 포함하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  9. 제 8 항에 있어서,
    상기 부분 데이터 인코딩 단계에서, 상기 전체 데이터 인코딩 단계에서 생성된 상기 전체 데이터에 대한 부호화 패러티를 생성하는 메모리 컨트롤러의 부분 데이터 변경 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020120129549A 2012-11-15 2012-11-15 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법 KR102041874B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020120129549A KR102041874B1 (ko) 2012-11-15 2012-11-15 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법
US14/071,771 US9311181B2 (en) 2012-11-15 2013-11-05 Memory controller changing partial data in memory device and method for changing partial data thereof
DE102013112195.0A DE102013112195A1 (de) 2012-11-15 2013-11-06 Speichercontroller, der Teildaten in einer Speichervorrichtung ändert, sowie Verfahren zum Ändern von Teildaten davon
TW102140195A TWI627535B (zh) 2012-11-15 2013-11-06 記憶體裝置中改變部分資料的記憶體控制器以及其改變部分資料的方法
JP2013235041A JP2014099174A (ja) 2012-11-15 2013-11-13 メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法
CN201310575217.0A CN103824599B (zh) 2012-11-15 2013-11-15 改变存储器装置中的部分数据的存储器控制器及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120129549A KR102041874B1 (ko) 2012-11-15 2012-11-15 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법

Publications (2)

Publication Number Publication Date
KR20140062771A KR20140062771A (ko) 2014-05-26
KR102041874B1 true KR102041874B1 (ko) 2019-11-07

Family

ID=50890902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120129549A KR102041874B1 (ko) 2012-11-15 2012-11-15 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법

Country Status (1)

Country Link
KR (1) KR102041874B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102254102B1 (ko) * 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10372534B2 (en) * 2016-09-20 2019-08-06 Samsung Electronics Co., Ltd. Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110119429A1 (en) * 2009-11-18 2011-05-19 Mediatek Inc. Nonvolatile memory controller and method for writing data to nonvolatile memory
JP2011198272A (ja) * 2010-03-23 2011-10-06 Toshiba Corp 半導体記憶装置および半導体記憶装置の制御方法
JP2012507104A (ja) * 2008-10-28 2012-03-22 マイクロン テクノロジー, インク. 複数の半導体メモリユニットにおけるエラー訂正

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012507104A (ja) * 2008-10-28 2012-03-22 マイクロン テクノロジー, インク. 複数の半導体メモリユニットにおけるエラー訂正
US20110119429A1 (en) * 2009-11-18 2011-05-19 Mediatek Inc. Nonvolatile memory controller and method for writing data to nonvolatile memory
JP2011198272A (ja) * 2010-03-23 2011-10-06 Toshiba Corp 半導体記憶装置および半導体記憶装置の制御方法

Also Published As

Publication number Publication date
KR20140062771A (ko) 2014-05-26

Similar Documents

Publication Publication Date Title
US9996285B2 (en) Cyclically interleaved XOR array for error recovery
US10388400B2 (en) Generalized product codes for flash storage
US9602134B2 (en) Operating method of error correction code decoder and memory controller including the error correction code decoder
US9311181B2 (en) Memory controller changing partial data in memory device and method for changing partial data thereof
US10148287B2 (en) Bit-flipping LDPC decoding algorithm with hard channel information
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US11070234B2 (en) Memory system with hybrid decoding scheme with information exchange and method of operating such memory system
US10725863B2 (en) Memory system and method for operating the same
US20160334999A1 (en) Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks
US20190250986A1 (en) Memory system with adaptive information propagation and method of operating such memory
US11005503B2 (en) Memory system with hybrid decoding scheme and method of operating such memory system
US10348335B2 (en) Miscorrection avoidance for turbo product codes
KR102041874B1 (ko) 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법
US10671323B2 (en) Memory system with shared buffer architecture for multiple decoders and method of operating such memory system
KR102002044B1 (ko) 새 패러티를 생성하기 위한 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러와 메모리 시스템
US11023388B2 (en) Data path protection parity determination for data patterns in storage devices
US11115062B2 (en) Memory system with adaptive threshold decoding and method of operating such memory system
US11062758B2 (en) Memory system to process multiple word line failures with limited storage and method of operating such memory system
US11074128B2 (en) Memory system with hybrid iterative decoding capability and method of operating such memory system
US10141072B2 (en) Efficient encoder based on modified RU algorithm
US9996412B2 (en) Enhanced chip-kill schemes by using sub-trunk CRC
CN110047554B (zh) 具有超级芯片删除恢复的存储器系统及其操作方法
US10079613B2 (en) Data mapping scheme for generalized product codes

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)