KR101650130B1 - 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 - Google Patents

불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 Download PDF

Info

Publication number
KR101650130B1
KR101650130B1 KR1020100045521A KR20100045521A KR101650130B1 KR 101650130 B1 KR101650130 B1 KR 101650130B1 KR 1020100045521 A KR1020100045521 A KR 1020100045521A KR 20100045521 A KR20100045521 A KR 20100045521A KR 101650130 B1 KR101650130 B1 KR 101650130B1
Authority
KR
South Korea
Prior art keywords
error correction
data
memory device
vector
copy
Prior art date
Application number
KR1020100045521A
Other languages
English (en)
Other versions
KR20110125892A (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 KR1020100045521A priority Critical patent/KR101650130B1/ko
Priority to US13/106,892 priority patent/US8751900B2/en
Publication of KR20110125892A publication Critical patent/KR20110125892A/ko
Application granted granted Critical
Publication of KR101650130B1 publication Critical patent/KR101650130B1/ko

Links

Images

Classifications

    • 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
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC 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/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
    • 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/13Linear codes
    • H03M13/136Reed-Muller [RM] 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/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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] 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/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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/155Shortening or extension of 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/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
    • H03M13/2909Product 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 따른 저장 장치는, 소스 영역으로부터의 독출 데이터를 출력하는 불휘발성 메모리 장치, 및 상기 독출 데이터에 포함되는 복수의 벡터들 각각에 대한 에러 정정 부호(ECC) 연산을 수행하여 상기 불휘발성 메모리 장치의 타깃 영역으로 기입하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 에러 정정 부호(ECC) 연산시 플래그 비트 없이 상기 복수의 벡터들 중 클린 영역에 대응하는 벡터를 디코딩 패스(Decoding pass)로 처리한다.

Description

불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법{STORAGE DEVICE COMPRISING A NON-VOLATILE MEMORY DEVICE AND COPY-BACK METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법에 관한 것이다.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다. 특히, 불휘발성 메모리 중에서 플래시 메모리(Flash memory)는 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다.
최근에는 기술의 진보와 플래시 메모리 장치의 가격 인하에 따라 플래시 메모리를 하드 디스크 드라이브(HDD)를 대체하기 위한 저장 매체로 사용되고 있다. 상술한 저장 장치를 솔리드 스테이트 드라이브(Solid State Drive) 또는 솔리드 스테이트 디스크(Solid State Disk)라고도 한다. 이하에서는 간단히 SSD라 칭하기로 한다. SSD는 고속으로 데이터를 입출력할 수 있으면서도 기계적 지연이나 실패율이 현저히 적다. 또한, SSD는 외부의 충격에도 데이터가 쉽게 손상되지 않으며, 발열·소음 및 전력소모가 적고, 소형화·경량화할 수 있는 장점이 있다. 따라서, 기계적으로 회전하는 플래터(Platter)를 사용하지 않는 SSD에 대한 수요는 저전력·대용량화의 모바일 트랜드에 따라 급격히 증가하고 있다.
상술한 SSD나 플래시 메모리 장치에서는 카피-백(Copy back)이라는 동작이 실행된다. 카피-백은 하나의 소스 페이지(Source page)로부터 데이터를 읽어 다른 타깃 페이지로 읽혀진 데이터를 복사하는 동작이다. 카피-백 동작은 가비지 컬렉션(Garbage collection)이나 머지(Merge) 동작시에 빈번하게 실행될 수 있다. 카피-백 동작시 신뢰성을 높이기 위한 기술로써 준외부 카피-백(Semi-external copy-back)이 있다. 소스 페이지로부터 읽혀진 데이터의 에러를 검출 및 정정하기 위해서는 에러 정정 코드(ECC) 연산이 필요하다. 이러한 연산을 위해서는 플래시 메모리 장치의 외부로 읽혀진 데이터의 출력이 불가피하다.
하지만, 하나의 페이지를 구성하는 복수의 섹터들은 다양한 상태로 존재할 수 있다. 하나의 페이지 내에서 어느 하나의 섹터에는 데이터가 존재하는 반면에, 다른 섹터에는 데이터가 존재하지 않을 수 있다. 하나의 섹터를 부호어(Codeword) 단위로 하는 에러 정정 부호 연산은 이러한 경우를 고려하여 설계되어야 한다. 특히, 에러 정정 부호 연산을 동반하는 준외부 카피-백이 사용되는 저장 장치에서는 상술한 상태를 고려한 에러 정정 부호의 설계가 필요할 것이다.
본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 플래그 비트 없이도 소거 상태의 섹터를 포함하는 페이지의 카피-백을 수행할 수 있는 저장 장치 및 그것의 카피-백 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 데이터 저장 장치는, 소스 영역으로부터의 독출 데이터를 출력하는 불휘발성 메모리 장치, 및 상기 독출 데이터에 포함되는 복수의 벡터들 각각에 대한 에러 정정 코드(ECC) 연산을 수행하여 상기 불휘발성 메모리 장치의 타깃 영역으로 기입하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 에러 정정 코드(ECC) 연산시 플래그 비트 없이 상기 복수의 벡터들 중 클린 영역에 대응하는 벡터를 디코딩 패스(Decoding pass)로 처리한다. 여기서, 디코팅 패스(Decoding pass)는 실제 디코딩이 수행되는 경우에는 디코딩 성공(Decoding success)을 의미한다. 또한, 디코팅 패스(Decoding pass)는 디코딩을 수행하지 않는 경우에는 디코딩 실패(Decoding fail)를 선언하지 않는 것을 의미한다.
상기 목적을 달성하기 위한 본 발명의 불휘발성 메모리 장치를 포함하는 저장 장치의 카피-백 방법은, 상기 불휘발성 메모리 장치의 소스 페이지로부터 데이터를 독출하는 단계, 상기 독출된 데이터에 포함된 복수의 벡터들 각각에 대한 에러 정정 코드(ECC) 연산을 수행하되, 상기 복수의 벡터들 중 클린 영역에 대응하는 벡터에 대해서 디코딩 패스(Decoding pass)로 처리하는 단계, 그리고 상기 에러 정정 부호 연산의 결과 데이터를 상기 불휘발성 메모리 장치의 타깃 페이지로 기입하는 단계를 포함한다.
이상과 같은 본 발명에 따른 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법에 따르면, 플래그 비트를 사용하지 않고 에러 정정 부호 연산을 수행하는 제반 카피-백 동작을 수행할 수 있다.
도 1은 본 발명의 외부 카피-백 동작을 보여주는 블록도;
도 2는 하나의 페이지 데이터의 구성을 보여주는 블록도;
도 3은 본 발명의 제 1 실시 예에 따른 저장 장치 및 그것의 카피-백 방법을 보여주는 블록도;
도 4는 도 3의 에러 정정 부호 연산의 일 예를 보여주는 도면;
도 5는 도 3의 에러 정정 부호 연산의 다른 예를 보여주는 도면;
도 6a 및 도 6b는 도 3의 에러 정정 부호 연산의 또 다른 예들을 보여주는 도면;
도 7은 도 3의 에러 정정 부호 연산의 적용 예를 보여주는 도면;
도 8은 본 발명의 제 2 실시 예에 따른 저장 장치를 보여주는 블록도;
도 9는 본 발명의 제 3 실시 예에 따른 저장 장치를 보여주는 블록도;
도 10은 본 발명의 제 2 및 제 3 실시 예에 따른 카피-백 방법을 보여주는 도면;
도 11은 본 발명의 제 4 실시 예에 따른 저장 장치 및 그것의 카피-백 방법을 보여주는 블록도;
도 12는 제 4 실시 예에 따른 카피-백 방법을 보여주는 순서도;
도 13은 본 발명의 카피-백이 적용되는 SSD를 보여주는 블록도;
도 14는 본 발명의 카피-백이 적용되는 메모리 카드를 보여주는 블록도; 및
도 15는 본 발명의 카피-백이 적용되는 플래시 메모리 장치를 포함하는 컴퓨터 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 플래시 메모리 장치(Flash memory device) 또는 SSD가 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
그리고, 본 발명의 설명에서 인코딩 또는 디코딩의 단위가 되는 데이터를 벡터(Vector)라 칭하기로 한다. 벡터(Vector)의 다른 용어로 부호어(Codeword)가 사용될 수 있다. 게다가, 본 발명에서 사용하는 '디코팅 패스(Decoding pass)'는 실제 디코딩이 수행되는 경우에는 디코딩 성공(Decoding success)을 의미한다. 또한, '디코팅 패스(Decoding pass)'는 디코딩을 수행하지 않는 경우에는 디코딩 실패(Decoding fail)를 선언하지 않는 것을 의미한다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 저장 장치에서 수행되는 카피-백 동작을 보여주는 도면이다. 도 1을 참조하면, 저장 장치(100)는 에러 정정 부호 유닛(110, 이하 ECC 유닛)과 불휘발성 메모리 장치(120)를 포함한다.
ECC 유닛(110)은 불휘발성 메모리 장치(120)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 이하에서는, 에러의 검출 및 에러의 정정 연산을 에러 정정 부호(ECC) 연산이라 통칭하기로 한다. ECC 유닛(110)은 인코딩 동작시 입력되는 데이터를 부호어(Codeword) 또는 벡터(Vector)로 변환한다. ECC 유닛(110)은 디코딩 동작시 에러를 검출 및 정정한다.
불휘발성 메모리 장치(120)는 셀 어레이(122)와 페이지 버퍼(124)를 포함한다. 셀 어레이(122)는 비트 라인과 워드 라인에 각각 연결되는 복수의 메모리 셀들을 포함한다. 하나의 워드 라인 방향으로는 하나 또는 그 이상의 페이지 단위의 데이터(예를 들면, 2KByte)가 저장된다. 페이지 버퍼(124)는 동작 모드에 따라 기입 드라이버(Write driver)로서 또는 감지 증폭기(Sense amplifier)로서 동작한다. 예를 들면, 페이지 버퍼(124)는 읽기 동작 모드에서 감지 증폭기로서 그리고 프로그램 동작 모드에서 기입 드라이버로서 동작한다.
카피-백 동작시, 소스 페이지(Source page)에 저장된 데이터는 페이지 버퍼(124)에 의해서 독출된다. 그리고 페이지 버퍼(124)에 저장된 데이터는 ECC 유닛(110)에 전달된다. ECC 유닛(110)에 전달된 데이터는 에러 정정 부호 연산에 의해서 처리된다. 에러 정정 부호 연산에 의해서 처리된 데이터는 다시 페이지 버퍼(124)에 전달된다. 페이지 버퍼(124)는 전달된 데이터를 타깃 페이지(Target page)에 기입한다.
상술한 카피-백 동작에는 불휘발성 메모리 장치(120)의 외부 버퍼링(External Buffering)이 존재하는 외부 카피-백 및 준외부 카피-백과, 외부 버퍼링이 없는 내부 카피-백이 있다. 준외부 카피-백은 상술한 바와 같이 경로(①→②→③→④)에 따라 카피-백 동작이 이루어진다. 하지만, 내부 카피-백은 데이터가 불휘발성 메모리 장치(120)의 외부로 출력되지 않는 카피-백 동작이다. 즉, 내부 카피-백은 경로(①→④)에 따라 데이터가 이동한다. 하지만, 불휘발성 메모리 장치(120)의 내부에도 ECC 유닛(110)이 구비될 수 있을 것이다.
또한, ECC 유닛(110)이 메모리 컨트롤러에 포함되는 경우, 경로(①→②→③→④)에 따라 카피-백 동작을 준외부 카피-백(Semi-external copy-back)이라고 부르기도 한다. 카피-백 동작시에 구동되는 ECC 유닛(110)의 상대적 위치에 따라 세분화하여 구분할 수 있으나, 이하에서는 카피-백 동작을 외부 또는 내부 카피-백으로 한정하지 않기로 한다. 단지, 카피-백 동작은 에러 정정 부호 연산을 동반하는 카피-백과, 에러 정정 연산을 동반하지 않는 카피-백으로 구분하여 사용될 것이다.
도 2는 카피-백 동작시 소스 페이지로부터 읽혀진 독출 데이터를 보여주는 도면이다. 도 2를 참조하면, 독출된 하나의 페이지는 유저 데이터(User Data)에 해당하는 복수의 섹터들(Sector 0~ Sector 3)과, 스페어 데이터(Spare Data)를 포함할 수 있다. 스페어 데이터(Spare Data)에는 유저 데이터(User Data)에 대한 제어 정보가 포함된다.
플래시 메모리 장치에서는 페이지 단위로 데이터가 프로그램되거나 독출된다. 최근에는, 하나의 페이지 중에서 일부 영역만을 프로그램하는 기술이 있다. 이러한 기술을 부분 프로그램(Partial program) 또는 랜덤 프로그램(Random program)이라고 한다. 부분 프로그램 또는 랜덤 프로그램에 따르면, 섹터 단위로 데이터가 프로그램될 수 있다. 따라서, 하나의 페이지 데이터에는 사용 섹터(Used sector)와 클린 섹터(Clean sector)가 공존할 수 있다. 사용 섹터(Used sector)는 실질적으로 기입된 데이터를 의미한다. 클린 섹터(Clean sector) 또는 클린 영역은 실질적으로 데이터의 기입이 없는 소거 상태의 메모리 셀들로부터 읽혀진 데이터를 의미한다.
하나의 페이지에 사용 섹터와 클린 섹터(Clean sector)가 공존할 수 있다. 그러나 호스트(Host)에 의해서 데이터의 기입이 없었기 때문에, 클린 섹터에 대한 호스트의 액세스는 일어나지 않는다. 하지만, 카피-백 동작에서는 문제가 달라진다. 카피-백 동작은 기본적으로 페이지 단위로 데이터가 이동한다. 따라서, 카피-백 동작시 하나의 소스 페이지를 타깃 페이지로 이동하기 위해서는 페이지 단위로 독출되고 프로그램된다. 이때, 클린 섹터(Clean Sector)가 독출될 수 있고, ECC 연산에 의해서 처리될 수 있다.
메타 데이터(Meta data)에는 유저 데이터(User data)에 대한 제어 정보가 저장된다. 예를 들면, 유저 데이터(User data)에 대한 에러 제어 코드(Error control code), 배드 블록 마킹, MLC 기입 여부를 지시하는 비트들이 메타 데이터(Meta data)에 포함될 수 있다. 에러 검출 및 정정을 동반하는 카피-백 동작에서는 클린 섹터(Clean sector)는 별도로 관리되어야 한다. 즉, 클린 섹터와 사용 섹터의 식별이 필요하다. 따라서, 종래에는 메타 데이터에 클린 섹터와 사용 섹터를 식별하기 위한 플래그 비트(Flag bit)가 포함되어야 했다.
하지만, 메타 데이터에 부가되는 플래그 비트(Flag bit)는 저장 장치(100, 도 1 참조)에 부담으로 작용한다. 플래그 비트(Flag bit)는 에러의 검출 및 정정을 동반하는 카피-백 동작에서만 주로 사용된다. 하지만, 플래그 비트(Flag bit)는 모든 페이지의 프로그램 시에 생성, 기입 그리고 관리되어야 한다. 따라서, 본 발명의 실시 예들에서는 플래그 비트(Flag bit)를 사용하지 않고도 에러의 검출 및 정정을 동반하는 카피-백 동작을 수행하기 위한 기술들이 소개될 것이다. 본 발명의 저장 장치는 카피-백 동작시 플래그 비트 없이 클린 섹터에 대한 에러 정정 부호 연산을 수행할 수 있다.
예외적으로, 덮어 쓰기된 데이터를 저장하는 블록(Block)의 경우, 유효 페이지(Valid page)를 찾기 위해 해당 블록에 포함된 모든 페이지를 독출하는 경우가 있다. 이 경우, 독출되는 페이지들 중 포함하는 모든 섹터들(Sector)이 클린 섹터(Clean sector)인 페이지가 존재할 수 있다. 이때, 본 발명의 저장 장치를 사용하지 않고는 ECC 연산을 적용하기 어렵다. 이처럼 본 발명의 이점은 카피-백 동작 외에도 클린 섹터(Clean sector)를 독출하는 제반 동작들에 적용될 수 있다.
도 3은 본 발명의 제 1 실시 예에 따른 저장 장치(200)를 간략히 보여주는 블록도이다. 도 3을 참조하면, 저장 장치(200)는 스토리지 컨트롤러(210) 및 불휘발성 메모리 장치(220)를 포함한다.
호스트(Host)는 데이터 교환 동작시에 저장 장치(200)를 제어한다. 호스트는, 예를 들면, 개인용/휴대용 컴퓨터, PDA, PMP, MP3 플레이어 등과 같은 휴대용 전자 장치들, HDTV, 그리고 그와 같은 것을 포함할 것이다.
스토리지 컨트롤러(210)는 호스트로부터의 요청에 응답하여 불휘발성 메모리 장치(220)를 액세스한다. 스토리지 컨트롤러(210)는 저장 장치(200) 내부의 메모리 관리를 위한 가비지 컬렉션(Garbage collection) 또는 머지(Merge) 동작을 위해서 불휘발성 메모리 장치(220)를 제어한다. 또한, 스토리지 컨트롤러(210)는 가비지 컬렉션 또는 머지 동작에 따라 요구되는 카피-백 동작을 위해 불휘발성 메모리 장치(220)를 제어할 수 있다.
특히, 에러 검출 및 에러 정정을 동반하는 카피-백 동작시, 스토리지 컨트롤러(210)는 소스 페이지로부터 읽혀진 데이터를 불휘발성 메모리 장치(220)로부터 제공받는다. 그리고 스토리지 컨트롤러(210)는 읽혀진 데이터에 대한 에러 검출 및 정정을 수행하고, 그 결과 데이터를 불휘발성 메모리 장치(220)의 타깃 페이지로 프로그램할 것이다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 랜더마이저(212), ECC 유닛(213) 및 메모리 인터페이스(214)를 포함한다. 호스트 인터페이스(211)는 호스트(Host)와 저장 장치(200)와의 물리적 연결을 제공한다. 즉, 호스트 인터페이스(211)는 호스트의 버스 포맷(Bus format)에 대응하여 저장 장치(200)와의 인터페이싱을 제공한다. 호스트(Host)의 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등으로 구성될 수 있다.
랜더마이저(212)는 프로그램 데이터에 대한 랜덤화 연산(Randomizer operation)을 수행한다. 랜더마이저(212)는 불휘발성 메모리 장치(220)로부터 독출된 데이터에 대해서 원래의 데이터 배열로 복귀시키는 디-랜덤화 연산(De-randomizer operation)을 수행한다. 랜더마이저(212)에 의해서 프로그램 데이터의 배열은 원래 데이터와는 달리 랜덤하게 변형된다. 랜덤화된 프로그램 데이터가 메모리 셀들에 저장되면, 메모리 셀들 간에 발생하는 간섭이 평균화될 수 있다. 또한, 랜덤화 연산을 통해서 데이터의 보안성이 강화될 수 있다.
ECC 유닛(213)은 프로그램 동작시 랜더마이저(212)로부터 전달받은 프로그램 데이터를 에러 정정 부호(Error correction code: ECC) 연산에 따라 인코딩한다. ECC 유닛(213)은 프로그램 데이터를 에러 검출 및 정정을 위한 최소 단위인 부호어로 구분한다. ECC 유닛(213)은 각각의 부호어에 대해서 에러의 검출 및 정정을 위한 처리를 수행한다. 에러 정정 부호(ECC) 연산에 따라 ECC 유닛(213)은 프로그램 데이터에 대응하는 패리티를 생성한다.
반면, ECC 유닛(213)은 독출 데이터가 제공되면, 에러를 검출하고 검출된 에러를 정정한다. ECC 유닛(213)은 독출 데이터에 포함되는 패리티를 참조하여, 유저 데이터에 에러가 존재하는지 검출할 것이다. 만일, 유저 데이터에 에러가 존재하는 경우, ECC 유닛(213)은 에러의 위치와 에러 값을 계산하여 정정한다. 에러가 정정된 유저 데이터는 랜더마이저(212)에 전달될 것이다.
특히, 본 발명의 ECC 유닛(213)은 에러 검출 및 정정 연산을 동반하는 카피-백(Copy-back) 동작시, 클린 섹터에 대해서 에러 정정 부호 연산을 수행할 수 있다. 예를 들면, 준-외부 카피-백(Semi-external copy-back) 동작시, ECC 유닛(213)은 모든 비트의 논리값이 '1'인 섹터에 대해 플래그 비트(Flag bit) 없이 클린 섹터로 판단할 수 있다. ECC 유닛(213)은 카피-백 동작시 독출된 클린 섹터에 대해서 에러를 검출하고 정정할 수 있다.
일반적인 데이터의 독출 시에는, 클린 섹터에 대한 액세스는 발생하지 않는다. 그러나 카피-백 동작시에는 페이지 단위의 데이터 이동을 위해서 클린 섹터도 사용 섹터와 동일하게 독출되어야 한다. ECC 유닛(213)은 카피-백을 위해서 독출된 클린 섹터(Clean sector)에 대한 에러 검출 및 정정 연산을 수행할 수 있다. 클린 섹터에 대한 에러 검출 및 정정 연산을 통해서, ECC 유닛(213)은 영 벡터의 신드롬(Syndrome)을 출력하도록 구성된다. 본 발명의 ECC 유닛(213)은 이러한 클린 섹터에 대한 카피-백 동작을 지원하기 위한 에러 정정 부호(ECC) 알고리즘을 지원할 수 있다.
즉, 본 발명의 ECC 유닛(213)은 아래의 수학식 1을 만족하는 패리티 검사 행렬 H를 갖는다.
Figure 112010031159813-pat00001
(단, S는 신드롬, H는 패리티 검사 행렬, c T는 부호어 c의 전치 행렬)
일반적인 경우, 카피-백 동작시 클린 섹터는 플래그 비트(Flag bit)에 의해서 인식되고, 에러 정정 부호 연산에서 배제되었다. 클린 섹터에 대응하는 벡터는 모든 비트들이 논리 '1'인 올원 벡터(All ones vector)이다. 모든 에러 정정 부호에서는 올제로 벡터(All zeros vector)가 정의되어 있다. 그러나, 올원 벡터의 경우, 모든 에러 정정 부호에서 부호어로 정의되어 있지는 않다. 경우에 따라 올원 벡터를 부호어로 가지고 있는 에러 정정 부호도 있지만, 올원 벡터를 부호어로 가지고 있지 않은 에러 정정 부호도 존재한다. 본 발명의 ECC 유닛(213)은 올원 벡터에 대한 처리 능력을 구비한다. 메모리 인터페이스(214)는 스토리지 컨트롤러(210)와 불휘발성 메모리 장치(220)를 인터페이싱 한다.
불휘발성 메모리 장치(220)는 에러 정정 부호 연산을 동반하는 카피-백 또는 그와 유사한 데이터 제어 동작을 수행하는 메모리 장치들을 포함할 수 있다. 불휘발성 메모리 장치(220)는 플래시 메모리 장치(Flash Memory Device)로 구성될 수 있으며, PRAM(Phase Change Random Access Memory)이나 RRAM(Resistance Random Access Memory)과 같은 저항 메모리(Resistive Memory)로 구성될 수 있다. 뿐만 아니라, 불휘발성 메모리 장치(220)는 NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 기억 소자들 중 어느 하나를 사용하는 메모리 장치로 구성될 수 있다.
이상의 본 발명의 제 1 실시 예에 따르면, ECC 유닛(213)은 카피-백 동작시에 플래그 비트의 제공없이 클린 섹터 또는 올원 벡터에 대해서 디코딩을 수행할 수 있다.
도 4는 도 3의 카피-백 동작의 일 예를 보여주는 도면이다. 도 4를 참조하면, 기본적으로 올원 벡터(All ones vector)에 대한 에러 정정 부호 연산을 지원하지만, 부호어의 사이즈가 섹터 사이즈와 매칭하지 않는 경우의 카피-백 방법을 보여준다. 예를 들면, 이진 BCH 부호(Bose-Chaudhuri-Hochquenghem code) 또는 RM 부호(Reed-Muller code)가 이러한 경우에 해당한다.
부호어의 사이즈와 섹터 사이즈를 매칭시키기 위하여, 이진 BCH 부호 또는 RM 부호 방식의 에러 정정 부호 연사에서는 패딩(Padding)과 단축(Shortening) 방법을 사용한다. 패딩(Padding)은 특정 비트들을 삽입하여 에러 정정 디코딩을 수행하는 것을 의미한다. 단축(Shortening)은 에러 정정 인코딩에 의해서 생성된 부호어의 일부를 제거하는 것을 의미한다. 패딩과 단축을 통해서 부호어의 길이를 용이하게 조절할 수 있다. 그리고 패딩과 단축은 부호어의 해밍 거리(Hamming distance)에는 영향을 미치지 않는다. 따라서, 원래의 부호어에 비하여 패딩된 부호어나 단축된 부호어의 에러 정정 능력은 차이가 없는 것으로 알려져 있다.
먼저 단계 ①에서, 카피-백을 위해 스토리지 컨트롤러(210)는 소스 페이지로부터 데이터를 독출한다. 그러면, 소스 페이지의 각 섹터들이 메모리 인터페이스(214)를 경유하여 ECC 유닛(213)에 전달된다. 불휘발성 메모리 장치(220)로부터 전달되는 하나의 섹터는 패리티(Parity)와 메시지(Message_R) 부분으로 구성된다.
단계 ②에서, ECC 유닛(213)은 불휘발성 메모리 장치(220)로부터 전달되는 하나의 부호어에 대응하는 섹터에 올원 비트들(111...1)을 메시지 뒷부분에 부가한다. 이러한 처리를 패딩(Padding)이라 한다. 올원 비트들(111...1)을 패딩하는 이유는, 에러 정정 부호 디코딩(ECC decoding)을 위해서는 섹터 사이즈의 부호어는 상대적으로 짧기 때문이다. ECC 인코딩의 결과로 생성되는 부호어는 하나의 섹터 사이즈보다 크다. 단계 ④, ⑤에서 설명되겠지만, ECC 인코딩의 결과로 생성되는 부호어는 뒷부분이 제거되고 섹터 사이즈로 줄여져서 프로그램되었기 때문이다.
단계 ③에서, ECC 유닛(213)은 패딩(Padding)에 의해서 구성된 부호어에 대한 ECC 디코딩을 수행한다. 즉, ECC 유닛(213)은 패리티(Parity)를 참조하여 부호어에 대한 에러의 검출 또는 검출된 에러에 대한 정정 연산을 수행한다.
단계 ④에서, ECC 유닛(213)은 카피-백을 위하여 에러가 정정된 풀 메시지(Full message)에 대한 ECC 인코딩을 수행한다. ECC 인코딩에 의하여 풀 메시지(Full message)에 대한 패리티(Parity)가 생성될 것이다. 그러나 이때 생성된 패리티(Parity)와 풀 메시지(Full message)는 하나의 부호어를 형성하나, 하나의 섹터 사이즈를 초과한다.
단계 ⑤에서, ECC 유닛(213)은 ECC 인코딩을 통해서 생성된 부호어를 하나의 섹터 사이즈에 맞추기 위하여 재구성한다. 풀 메시지와 패리티로 구성된 부호어가 하나의 섹터 사이즈를 초과하기 때문에 섹터 사이즈로 조정해 주어야 한다. 따라서, ECC 유닛(213)은 풀 메시지의 일부를 단축(Shortening)하여 제거(Discard)하고, 패리티와 남은 메시지 부분(Message_P)을 불휘발성 메모리 장치에 기입한다. 이러한 방식으로 구성되는 복수의 섹터들이 하나의 페이지를 구성하게 될 것이다.
상술한 카피-백 방법에 따르면, 이미 올원 벡터(All ones vector)를 부호어로 가지는 이진 BCH 부호(Bose-Chaudhuri-Hochquenghem code) 또는 RM 부호(Reed-Muller code)에서 용이하게 클린 섹터를 처리할 수 있다. 만일, 클린 섹터에 정정 가능한 비트 수의 에러가 발생하더라도, 상술한 방식의 카피-백에 의해서 타깃 페이지에 기입되는 데이터는 클린 섹터(Clean sector)로 정확히 유지될 수 있다.
도 5는 도 4의 ECC 연산에 대한 비이진 표현(Non-binary discription)을 보여주는 도면이다. 도 5를 참조하면, 리드-솔로몬(Reed-Solomon, 이하 RS) 부호와 같은 비이진 에러 정정 부호에 패딩(Padding)이나 단축(Shortening) 방식이 적용될 수 있다.
단계 ①에서, ECC 유닛(213)은 카피-백 동작을 위하여 불휘발성 메모리 장치(120)로부터 데이터를 전달받는다. 여기서, 불휘발성 메모리 장치(220)로부터 제공되는 데이터가 m진(m-ary) 심벌로 구성될 수 있다. 또는, ECC 유닛(213)은 불휘발성 메모리 장치(220)로부터 전달되는 2진(Binary) 데이터를 고성능의 에러 정정 부호 연산을 위해서 m-진 심벌로 변환할 수 있을 것이다. 독출된 데이터는 패리티(Paritym)와 메시지(Messagem)로 이루어진다.
RS 부호에서는 올원 벡터 벡터(All ones codeword vector)를 가진다. 하지만, 부호어 다항식 [c(x)= 1+x+x2+...+xn -1]에서, 부호어 c(x)는 m진(m-ary) 표현일 뿐, 이진(Binary)으로 표현했을 때에는 올원 벡터가 아닐 수 있다. 따라서, 이진 표현에서도 올원 벡터로 설정되도록 조정하기 위하여 부호어 다항식 c(x)에 α r 를 곱하면 된다. 여기서, α r 는 갈로아 필드 GF(2m) 상의 요소이며, 이진 표현으로 전환하면 m-비트의 올원 벡터가 된다.
단계 ②에서, 독출된 데이터의 메시지(Messagem) 부분에 이전의 인코딩 단계에서 단축(Shotrning)된 부분을 패딩(Padding)하는 절차가 진행된다. ECC 유닛(213)은 불휘발성 메모리 장치(220)로부터 전달되는 하나의 섹터에 대응하는 부호어 (Paritym + Messagem)에 올원 벡터(111...1)의 m-진 표현인 갈로아 필드 GF(2m) 상의 요소 (α r α r α r ...α r )를 뒷부분에 부가한다.
단계 ③에서, ECC 유닛(213)은 패딩(Padding)에 의해서 구성된 완전한 부호어에 대한 ECC 디코딩을 수행한다. 즉, ECC 유닛(213)은 패리티(Parity)를 참조하여 부호어에 대한 에러의 검출 또는 검출된 에러에 대한 정정 연산을 수행한다.
단계 ④에서, ECC 유닛(213)은 카피-백을 위하여 에러가 정정된 풀 메시지(Messagem + α r α r α r ...α r )에 대한 ECC 인코딩을 수행한다. ECC 인코딩에 의하여 풀 메시지(Messagem + α r α r α r ...α r )에 대한 패리티(Paritym)가 생성될 것이다. 만일, 패딩에 의해서 형성된 풀 메시지(Messagem + α r α r α r ...α r )에 에러가 없다면, 생성된 패리티(Paritym)는 독출된 섹터의 패리티(Paritym)와 동일한 값을 가질 것이다. 이때, 생성된 패리티 및 풀 메시지(Paritym + Messagem + α r α r α r ...α r )는 하나의 부호어를 형성하나, 부호어는 하나의 섹터 사이즈를 초과한다. 따라서, 프로그램을 위해서는 인코딩된 부호어의 단축이 필요하다.
단계 ⑤에서, ECC 유닛(213)은 ECC 인코딩을 통해서 생성된 부호어를 하나의 섹터 사이즈에 맞추기 위하여 단축(Shortening)한다. 풀 메시지와 패리티로 구성된 부호어(Paritym + Messagem + α r α r α r ...α r )가 하나의 섹터 사이즈를 초과하기 때문에 섹터 사이즈로 조정해 주어야 한다. 앞서 설명한 대로, 메시지의 일부를 단축(Shortening)하면, 부호어의 최소 거리에는 영향을 미치지 않으므로 원래의 부호어와 동일한 에러 정정 능력을 갖는다. 따라서, 스토리지 컨트롤러(210)는 풀 메시지의 일부를 제거하고, 패리티(Paritym)와 단축된 메시지 부분(Messagem)을 불휘발성 메모리 장치에 기입한다. 이러한 방식으로 구성되는 복수의 섹터들이 하나의 페이지를 구성하게 될 것이다.
상술한 카피-백 방법에 따르면, 이미 올원 벡터(All ones vector)를 지원하는 비이진 BCH(Bose-Chaudhuri-Hochquenghem) 코드 또는 RS 부호에서 용이하게 클린 섹터를 처리할 수 있다. 단축과 패딩을 통해서 부호어의 길이를 불휘발성 메모리 장치의 기준에 적합한 형태로 자유롭게 조절할 수 있다. 특히, 본 발명에 따른 카피-백 동작에서 패딩되는 데이터는 올원 부호라는 특징을 갖는다. 따라서, 클린 섹터에 정정 가능한 비트 수의 에러가 발생하더라도, 상술한 방식의 카피-백에 의해서 타깃 페이지에 기입되는 데이터는 클린 섹터로 정확히 유지될 수 있다.
도 6a 및 도 6b는 클린 섹터에 대한 카피-백을 지원하는 저밀도 패리티 검사(Low-Density Parity Check: 이하, LDPC) 부호의 설계 예를 간략히 보여주는 도면이다. LDPC 부호는 패리티 검사 행렬에서 '0' 원소의 수가 부호 길이에 비하여 상대적으로 많다. 따라서, LDPC 부호는 에러 검출 및 정정 연산을 위한 부담이 적은 반면에 높은 코딩 이득을 제공할 수 있다. 도 6a 및 도 6b에는 LDPC 부호에서, 클린 섹터에 대응하는 올원 벡터를 지원하기 위한 패리티 검사 행렬 H의 구성 방법이 각각 예시적으로 기술되어 있다.
도 6a를 참조하면, (7,3) LDPC 부호의 패리티 검사 행렬 H의 예를 보여준다. 본 발명에서는 올원 벡터(All ones vector)에 대한 패리티 검사시, 영 벡터의 신드롬을 제공할 수 있는 패리티 검사 행렬 H이 제공되어야 한다. 즉, 올원 벡터 c = [1111111]에 대한 패리티 검사 결과인 신드롬 S는 영 벡터로 출력되는 패리티 검사 행렬 H를 구비해야 한다.
즉, 도시된 패리티 검사 행렬 H에 대한 올원 벡터 c의 신드롬은 아래 수학식 2로 표현될 수 있다.
Figure 112010031159813-pat00002
신드롬 S를 구하기 위한 연산에서 덧셈 (+)은 GF(2)의 이진 유한체 상에서 배타적 논리합(XOR) 연산과 동일하다. 따라서, 올원 벡터 c = [1111111]에 대해 영 벡터의 신드롬을 제공하기 위한 패리티 검사 행렬을 설계하기 위해서는, 모든 행들에 포함되는 '1' 원소의 수를 짝수(Even)로 설정하면 된다.
이러한 조건을 만족하기 위한 패리티 검사 행렬 H의 예가 도 6a에 도시되어 있다. 일반적으로 LDPC 부호의 패리티 검사 행렬에서는 '0'원소의 수가 '1'보다 많다. 도시된 패리티 검사 행렬 H은 설명의 편의를 위해서 예시적으로 구성한 것이다. 즉, 1행에서 '1'의 수를 의미하는 가중치(Weight)는 4가 된다. 2행 및 3행의 가중치도 모두 '4'로 나타난다. 따라서, 올원 벡터 c = [1111111]에 대한 패리티 검사 연산에서 영 벡터의 결과를 제공할 수 있다. 이것은 올원 벡터 c = [1111111]를 패리티 검사 결과 패스로 출력하는 것을 의미한다.
도 6b는 LDPC 부호에 사용되는 패리티 검사 행렬을 설계하는 다른 방법을 간략히 보여주는 도면이다. 도 6b를 참조하면, (n, k) 부호에서 (n-1, k) 배열의 패리티 검사 행렬 H′를 먼저 구성한 이후에 각 행들의 가중치를 조정하기 위한 부가 행렬 e를 더하는 방식을 보여준다.
H′의 1열과 3열의 가중치는 각각 '3'으로 홀수에 해당한다. 따라서, H′의 1열과 3열의 가중치를 짝수로 조정하기 위한 부가 행렬 e를 추가하여 패리티 검사 행렬 H를 구성할 수 있다. 부가 행렬에 의해서 조정된 패리티 검사 행렬 H의 각 행들의 가중치는 '4'이다. 따라서, 올원 벡터 c = [1111111]에 대한 패리티 검사 연산시에 영 벡터가 출력될 수 있다.
도 7은 적 부호(Product code) 방식으로 에러 정정 코드(ECC)를 설계하는 방법을 보여준다. 도 7을 참조하면, (n1, k1, n2, k2) 적 부호(Product code)가 간략히 도시되어 있다.
적 부호를 구성하기 위해서는 먼저, 구성 부호(Component code)들 (n1, k1) 및 (n2, k2)이 형성된다. 구성 부호들 (n1, k1) 및 (n2, k2)은 앞서 설명된 이진 또는 비이진 BCH 코드, RM 코드, RS 부호나 LDPC 부호와 같은 방식으로 구성될 수 있다. 여기서, 각각의 구성 부호들 (n1, k1) 및 (n2, k2)이 올원 벡터(All ones vector)를 가지면, 적 부호도 올원 벡터(All ones vector)를 가진다.
도시된 적 부호(Product code)의 메시지 사이즈는 k1×k2이다. 이러한 메시지 부분은 섹션 I(Section I)으로 도시되어 있다. 적 부호를 만드는 방법은 다음과 같다. 먼저, k1×k2개의 심벌을 k1×k2 행렬 형태로 나열한다. 이 행렬을 세로 방향으로 (n2, k2) 부호로 인코딩하면, k1×(n2-k2)의 세로 방향의 패리티 행렬이 생성될 것이다. k1×(n2-k2)의 세로 방향의 패리티 행렬은 섹션 III(Section III)로 도시되어 있다. 결국, 섹션 I(Section I)과 섹션 III(Section III)로 구성되는 k1×n2 행렬이 구성된다.
이어서, k1×n2 행렬에 대한 가로 방향의 (n1, k1) 부호로 인코딩을 실행한다. 그러면, (n1-k1)×n2 사이즈의 세로 방향의 패리티 행렬이 생성될 것이다. (n1-k1)×n2 사이즈의 세로 방향의 패리티 행렬은 섹션 II(Section II) 및 섹션 IV(Section IV)로 나타나 있다. 이러한 적 부호(Product code)의 구성에 따라 인터리버(Interleaver)를 사용하는 효과가 기대될 수 있다. 따라서, 특정 셀 영역에서 집중적으로 발생하는 에러에 대해서 적절한 대응이 될 수 있다. 여기서, 섹션 IV(Section IV)는 가로 패리티나 세로 패리티 중 어느 하나로 사용될 수 있다. 또는, 패리티가 아닌 특정 목적으로 섹션 IV(Section IV)가 사용될 수도 있을 것이다.
이상의 도 3 내지 도 7에서 다양한 ECC 알고리즘에 대해서 본 발명의 이점이 설명되었다. 하지만, 본 발명의 기술적 특징이 소개된 ECC 알고리즘들에만 적용되지 않음은 쉽게 이해될 것이다. 즉, 올원 벡터에 대한 처리 방법이, 컨볼루션 부호(Convolutional code), RSC 부호(RSC code), 터보 부호(Turbo code) 등에서도 적용될 수 있을 것이다.
도 8은 본 발명의 제 2 실시 예에 따른 저장 장치(300)를 보여주는 블록도이다. 도 8을 참조하면, 저장 장치(300)는 스토리지 컨트롤러(310) 및 불휘발성 메모리 장치(320)를 포함한다. 하지만, 스토리지 컨트롤러(310)에 포함되는 ECC 유닛(313)은 상술한 올원 벡터가 부호어로 정의되지 않아도 무방하다. 불휘발성 메모리 장치(320)로부터 독출되는 모든 데이터가 반전되어 ECC 유닛(313)에 전달되기 때문이다. 좀더 자세히 설명하면 다음과 같다.
스토리지 컨트롤러(310)는 호스트로부터의 요청에 응답하여 불휘발성 메모리 장치(320)를 액세스한다. 스토리지 컨트롤러(310)는 저장 장치(300) 내부의 메모리 관리를 위한 가비지 컬렉션(Garbage collection) 또는 머지(Merge) 동작을 위해서 불휘발성 메모리 장치(320)를 제어한다. 또한, 스토리지 컨트롤러(310)는 가비지 컬렉션 또는 머지 동작을 수행하기 위한 카피-백 동작을 위해 불휘발성 메모리 장치(320)를 제어할 수 있다.
특히, 에러 검출 및 에러 정정을 동반하는 카피-백 동작시, 스토리지 컨트롤러(310)는 소스 페이지로부터 읽혀진 데이터를 불휘발성 메모리 장치(320)로부터 제공받는다. 그리고 스토리지 컨트롤러(310)는 읽혀진 데이터에 대한 ECC 연산을 수행하고, 그 결과 데이터를 불휘발성 메모리 장치(320)의 타깃 페이지로 프로그램할 것이다.
스토리지 컨트롤러(310)는 호스트 인터페이스(311), 랜더마이저(312), ECC 유닛(313), 인버터(314) 및 메모리 인터페이스(315)를 포함한다. 호스트 인터페이스(311), 랜더마이저(312), 메모리 인터페이스(315) 및 불휘발성 메모리 장치(320)는 도 3의 구성들과 실질적으로 동일하므로 설명을 생략하기로 한다.
하지만, 스토리지 컨트롤러(310)를 구성하는 ECC 유닛(313)은 도 3의 ECC 유닛(213)과는 다르다. 즉, 제 2 실시 예에 따른 스토리지 컨트롤러(310)의 ECC 유닛(313)은 올원 벡터에 대한 처리 능력을 보유할 필요가 없다. ECC 유닛(313)은 올원 벡터에 대해서 에러 검출 결과 디코딩 에러로 판정할 수도 있다. 다시 말하면, 올원 벡터가 부호어로 정의되지 않아도 무관하다.
카피-백 동작시에 올원 벡터에 대한 ECC 유닛(313)의 부담은 인버터(314)에 의해서 제거된다. 불휘발성 메모리 장치(320)로부터 독출된 카피-백 데이터가 ECC 유닛(313)으로 전달되기 위해서는 인버터(314)를 경유하게 된다. 인버터(314)를 경유하는 올원 벡터 c = [11111...1]는 올제로 벡터 z = [00000...0]로 반전된다. 대부분의 ECC 알고리즘에서는 올제로 벡터 z = [00000...0]는 항상 정의되어 있다. 따라서, 어떠한 패리티 검사 행렬에 의해서든지 올제로 벡터 z = [00000...0]에 대한 신드롬 S는 당연히 영 벡터가 된다. 따라서, 올원 벡터의 원인이 되는 클린 섹터로 인한 문제는 제거된다.
에러 검출 및 정정 연산에 의해서 디코딩된 카피-백 데이터는 다시 불휘발성 메모리 장치(320)에 기입된다. 이때, 올제로 벡터 z = [00000...0]는 인버터(314)에 의해서 다시 반전되어, 올원 벡터 c = [11111...1]로 불휘발성 메모리 장치(320)에 기입될 것이다.
도 9는 본 발명의 제 3 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 9를 참조하면, 본 발명의 저장 장치(400)는 스토리지 컨트롤러(410)와 불휘발성 메모리 장치(420)를 포함한다. 스토리지 컨트롤러(410)는 인버터의 기능을 포함하는 ECC 유닛(413)을 포함한다. 여기서, 호스트 인터페이스(411), 랜더마이저(412), 메모리 인터페이스(415) 및 불휘발성 메모리 장치(420)는 도 8의 구성들과 실질적으로 동일하므로 설명을 생략하기로 한다.
스토리지 컨트롤러(410)를 구성하는 ECC 유닛(413)은 올원 벡터에 대한 처리 능력을 가진다. 올원 벡터에 대한 처리 능력은 ECC 유닛(413)의 패리티 검사 행렬의 설계를 통해서가 아니라, 불휘발성 메모리 장치(420)로부터 카피-백되는 데이터에 대한 인버팅 기능을 통해서 제공된다. 즉, 카피-백을 위해서 ECC 유닛(413)으로 전달되는 데이터는 에러 검출 또는 정정 연산 이전에 인버터(414) 또는 반전 기능(Inverting function)에 의해서 토글링된다. 카피-백을 위해서 ECC 유닛(413)에 전달되는 데이터에 올원 벡터가 존재하는 경우, 반전에 의해서 올제로 벡터로 전환된다. 그러면, 올원 벡터에 대한 처리 능력이 없는 에러 정정 부호라 할지라도, 올제로 벡터에 대한 신드롬으로 영 벡터를 출력할 것이다. 따라서, 클린 섹터에 대한 카피-백 문제는 해결될 수 있을 것이다.
도 10은 도 8 및 도 9의 실시 예에 대한 데이터 처리 절차를 보여주는 도면이다. 도 10을 참조하면, 인버터 또는 반전 기능에 의해서 외부 카피-백 동작시 클린 섹터에서 발생하는 에러 문제는 해결될 수 있다.
먼저 단계 ①에서, 불휘발성 메모리 장치(420)로부터 소스 페이지로부터 카피-백을 위해서 독출되는 데이터에는 클린 섹터(Sector 2)가 포함될 수 있다. 카피-백을 위해서 독출된 페이지 단위의 데이터는 에러의 검출 및 정정을 위하여 부호어 단위로 구분된다. 그러나 클린 섹터(Sector 2)는 올원 벡터(All ones vector)를 구성할 것이다. 만일, 통상의 에러 검출 연산을 수행한다면, 클린 섹터(Sector 2)에 대응하는 부호어에서는 정정 불가한 에러가 검출될 것이다.
단계 ②에서, 소스 페이지로부터 카피-백을 위해서 독출된 데이터는 모두 반전된다. 사용 섹터(Sector 0, 1)에 기입된 데이터는 프로그램 당시에 랜더마이저(412)와 ECC 유닛(413) 그리고 인버터(414)에 의해서 랜덤화 연산, ECC 인코딩 그리고 반전 연산에 의하여 부호화된 데이터이다. 따라서, 카피-백 동작시 인버터(314 또는 414)에 의해서 반전된 섹터는 에러 검출 및 정정 연산시에 정상적으로 처리될 수 있다. 하지만, 클린 섹터(Sector 2)는 호스트 측에서 액세스가 발생하지 않은 데이터이다. 카피-백을 위하여 불가피하게 독출된 클린 섹터(Sector 2)는 인버터에 의해서 올제로 벡터(All zeros vector)로 반전된다.
단계 ③에서, 에러 정정 부호 유닛(313, 413)은 인버터(314, 414)에 의해서 반전된 부호어들에 대한 ECC 디코딩을 수행한다. 이때, 클린 섹터(Sector 2)에 대응하는 부호어는 올제로 벡터로 반전되어, 어떠한 패리티 검사 행렬을 통해서도 신드롬이 영 벡터(0)로 출력될 수 있다. 따라서, 클린 섹터(Sector 2)에 대응하는 부호어도 에러 검출 및 정정 연산시에 오류가 발생하지 않는다.
이후에, ECC 디코딩에 의해서 구성된 데이터는 다시 반전되어 불휘발성 메모리 장치(320, 420)에 프로그램될 것이다. 불휘발성 메모리 장치(320, 420)는 반전된 데이터를 제공받아 하나의 페이지 단위를 구성할 것이다. 구성된 하나의 페이지 데이터는 소스 페이지와는 다른 타깃 페이지로 프로그램될 것이다.
도 11은 본 발명의 제 5 실시 예를 보여주는 블록도이다. 도 11을 참조하면, 저장 장치(500)는 스토리지 컨트롤러(510) 및 불휘발성 메모리 장치(520)를 포함한다. 스토리지 컨트롤러(510)는 외부 카피-백 동작시에 불휘발성 메모리 장치(520)로부터 전달되는 섹터들 중 클린 섹터를 검출할 수 있다. 그리고 스토리지 컨트롤러(510)는 클린 섹터에 대한 ECC 연산을 비활성화한다. 좀더 자세히 설명하면 다음과 같다.
스토리지 컨트롤러(510)는 호스트 인터페이스(511), 랜더마이저(512), ECC 유닛(513), 올원 벡터 검출기(514) 및 메모리 인터페이스(515)를 포함한다. 여기서, 호스트 인터페이스(511), 랜더마이저(512), 메모리 인터페이스(515) 및 불휘발성 메모리 장치(520)는 도 3 및 도 8의 그것들과 실질적으로 동일하므로 설명을 생략하기로 한다.
카피-백 동작시, ECC 유닛(513)은 올원 벡터 검출기(514)의 제어에 따라 불휘발성 메모리 장치(520)로부터 제공되는 부호어에 대한 ECC 연산을 활성화하거나 비활성화한다. 올원 벡터 검출기(514)는 카피-백을 위해서 독출되는 데이터로부터 클린 섹터(Clean sector)에 대응하는 올원 벡터를 검출한다. 만일, ECC 유닛(513)으로 전달되는 부호어가 올원 벡터인 경우, 올원 벡터 검출기(514)는 해당 부호어에 대한 ECC 유닛(513)의 ECC 연산의 실행을 차단한다.
올원 벡터 검출기(514)는 플래그 비트(Flag bit) 없이 전달되는 부호어가 올원 벡터인지 판정할 수 있다. 올원 벡터 검출기(514)는 부호어에 포함되는 논리 '1'의 수가 기준치 이상으로 존재하는 경우, 올원 벡터로 판정할 수 있다. 또는, 올원 벡터 검출기(514)는 부호어에 포함되는 논리 '0'의 수가 기준치 이하로 존재하는 경우, 올원 벡터로 판정할 수 있다. 이러한, 설정을 통해서 클린 섹터에 대한 읽기 동작시에 발생하는 에러에 대해서 어느 정도 허용(Tolerance)될 수 있을 것이다.
도 12는 도 11의 저장 장치의 카피-백(또는, 준 외부 카피-백) 방법을 보여주는 순서도이다. 도 12를 참조하면, 올원 벡터 검출기(514)에 의해서 ECC 유닛(413)의 에러 검출 및 정정 연산이 활성화 또는 비활성화된다.
단계 S110에서, 카피-백을 위하여 스토리지 컨트롤러(510)는 불휘발성 메모리 장치(520)의 소스 페이지로부터 데이터를 독출한다. 제반 카피-백 동작의 특징은 하나의 페이지 단위로 데이터를 독출한다는 것이다. 예를 들면, 프로그램 시에 데이터가 기입되지 않은 클린 섹터(Clean sector)가 카피-백 동작시에는 독출될 수 있다.
단계 S120에서, 메모리 인터페이스(515)를 경유하여, 독출된 페이지 데이터는 섹터 단위 또는 부호어 단위로 ECC 유닛(513) 및 올원 벡터 검출기(514)에 제공된다. 이때, 올원 벡터 검출기(514)는 전달되는 부호어 또는 섹터를 검출하여 사용 섹터(Used sector)인지 또는 클린 섹터(=올원 벡터) 인지를 판단한다.
단계 S130에서, 전달되는 섹터 또는 부호어가 올원 벡터(AOCW)인 경우, 절차는 ECC 연산을 비활성화하기 위한 단계 S140으로 이동한다. 반면, 전달되는 섹터 또는 부호어가 올원 벡터(AOCW)가 아닌 경우, 절차는 ECC 연산을 활성화하기 위한 단계 S150으로 이동한다.
단계 S140에서, ECC 유닛(513)은 전달되는 섹터 또는 부호어에 대한 ECC 연산을 스킵(Skip)한다. ECC 유닛(513)은 올원 벡터를 지원하기 위한 알고리즘을 지원하지 않는다. 따라서, 올원 벡터에 대한 에러 검출 연산시에 디코딩 에러가 발생할 수 있다. 그러나, 올원 벡터 검출기(514)로부터의 제어에 따라, 올원 벡터가 전달되는 시점에는 에러 검출 및 정정 연산이 비활성화되고, 디코딩 에러의 발생은 차단될 수 있다.
단계 S150에서, ECC 유닛(513)은 제공되는 부호어 또는 섹터에 대한 에러 검출 및 정정 연산을 수행한다.
단계 S160에서, 스토리지 컨트롤러(510)는 ECC 유닛(513)에 의해서 처리된 부호어들을 다시 불휘발성 메모리 장치(520)에 프로그램한다.
도 13은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 SSD를 보여주는 블록도이다. 도 13을 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 그리고 불휘발성 메모리 장치(1230)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 불휘발성 메모리 장치(1230)를 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.
SSD 컨트롤러(1210)는 플래그 비트(Flag bit) 없이 클린 섹터나 올원 벡터를 처리할 수 있는 카피-백 동작(준 외부 카피-백)을 수행할 수 있다. 즉, 앞서 설명된 제 1 내지 제 5 실시 예에 대응하는 ECC 유닛들이 SSD 컨트롤러(1210)에 포함될 수 있다. ECC 연산을 동반하는 카피-백 동작시, SSD 컨트롤러(1210)는 클린 섹터 또는 올원 벡터에 대한 처리 능력을 구비하는 ECC 유닛을 포함할 수 있다. 또는, SSD 컨트롤러(1210)는 클린 섹터나 올원 벡터를 반전하는 인버터를 포함할 수 있다. 또는, SSD 컨트롤러(1210)는 클린 섹터나 올원 벡터를 플래그 비트 없이 검출하는 올원 벡터 검출기를 포함할 수 있다.
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(1230)로부터 읽혀진 데이터가 일시 저장된다. 호스트(1100)의 읽기 요청시에 불휘발성 메모리 장치(1230)에 존재하는 데이터가 캐시 되어 있는 경우에는, 버퍼 메모리(1220)는 캐시 된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
버퍼 메모리(1220)는 대용량의 보조 기억 장치로 사용되는 SSD(1200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(1220)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
불휘발성 메모리 장치(1230)는 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(1230)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 불휘발성 메모리 장치(1230)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(1230)가 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)이 포함될 수도 있다.
도 14는 본 발명에 따른 메모리 시스템(2000)을 간략히 보여주는 블록도이다. 도 14를 참조하면, 본 발명에 따른 메모리 시스템(2000)은 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)를 포함한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 것이다. 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)의 결합에 의해 메모리 카드 또는 반도체 디스크 장치(Solid State Disk: SSD)로 제공될 수 있을 것이다. SRAM(2110)은 프로세싱 유닛(2120)의 동작 메모리로 사용된다. 호스트 인터페이스(2130)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(2140)은 불휘발성 메모리 장치(2200)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱 한다. 프로세싱 유닛(2120)은 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
메모리 컨트롤러(2100)는 플래그 비트(Flag bit) 없이 클린 섹터나 올원 벡터를 처리할 수 있는 카피-백 동작(준 외부 카피-백)을 수행할 수 있다. 즉, 앞서 설명된 제 1 내지 제 5 실시 예에 대응하는 ECC 유닛들이 메모리 컨트롤러(2100)에 포함될 수 있다. ECC 연산을 동반하는 카피-백 동작시, 메모리 컨트롤러(2100)는 클린 섹터 또는 올원 벡터에 대한 처리 능력을 구비하는 ECC 유닛을 포함할 수 있다. 또는, 메모리 컨트롤러(2100)는 클린 섹터나 올원 벡터를 반전하는 인버터를 포함할 수 있다. 또는, 메모리 컨트롤러(2100)는 클린 섹터나 올원 벡터를 플래그 비트 없이 검출하는 올원 벡터 검출기를 포함할 수 있다.
불휘발성 메모리 장치(2200)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 메모리 시스템(2000)은 에러의 발생 확률이 낮은 높은 신뢰도의 저장 매체로 제공될 수 있다. 특히, 최근 활발히 연구되고 있는 반도체 디스크 장치(Solid State Disk: 이하 SSD)와 같은 메모리 시스템에서 본 발명의 플래시 메모리 장치가 구비될 수 있다. 이 경우, 메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다. 또한, 메모리 컨트롤러(2100)에는 랜덤 연산을 수행하기 위한 구성이 더 포함될 수 있다.
도 15에는 본 발명에 따른 불휘발성 메모리 장치(3120)를 포함한 컴퓨팅 시스템(3000)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(3000)은 시스템 버스(3600)에 전기적으로 연결된 마이크로프로세서(3200), 램(3300), 사용자 인터페이스(3400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(3500) 및 메모리 시스템(3100)을 포함한다. 메모리 시스템(3100)은 도 13 또는 도 14에 도시된 것과 실질적으로 동일하게 구성될 것이다. 본 발명에 따른 컴퓨팅 시스템(3000)이 모바일 장치인 경우, 컴퓨팅 시스템(3000)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(3000)에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(3100)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(3100)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
메모리 컨트롤러(3110)는 플래그 비트없이 클린 섹터나 올원 벡터를 처리할 수 있는 카피-백 동작(준외부 카피-백)을 수행할 수 있다. 즉, 앞서 설명된 제 1 내지 제 5 실시 예에 대응하는 ECC 유닛들이 메모리 컨트롤러(3110)에 포함될 수 있다. ECC 연산을 동반하는 카피-백 동작시, 메모리 컨트롤러(3110)는 클린 섹터 또는 올원 벡터에 대한 처리 능력을 구비하는 ECC 유닛을 포함할 수 있다. 또는, 메모리 컨트롤러(3110)는 클린 섹터나 올원 벡터를 반전하는 인버터를 포함할 수 있다. 또는, 메모리 컨트롤러(3110)는 클린 섹터나 올원 벡터를 플래그 비트 없이 검출하는 올원 벡터 검출기를 포함할 수 있다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : ECC 유닛
120, 220, 320, 420, 520 : 불휘발성 메모리 장치
122 : 셀 어레이
124 : 페이지 버퍼
210, 310, 410, 510 : 스토리지 컨트롤러
211, 311, 411, 511 : 호스트 인터페이스
212, 312, 412, 512 : 랜더마이저
213, 313, 413, 513 : ECC 유닛
214, 315, 415, 515 : 메모리 인터페이스
314, 414 : 인버터
514 : 올원 벡터 검출기
1100 : 호스트
1200 : SSD
1210 : SSD 컨트롤러
1220 : 버퍼 메모리
1230 : 불휘발성 메모리
2100 : 메모리 컨트롤러
2110 : 에스램
2120 : CPU
2130 : RAM
2140 : ECC 유닛
2150 : 메모리 인터페이스
2200 : 불휘발성 메모리 장치
3100 : 메모리 시스템
3110 : 메모리 컨트롤러
3120 : 플래시 메모리
3200 : CPU
3300 : 램
3400 : 유저 인터페이스
3500 : 모뎀
3600 : 시스템 버스

Claims (10)

  1. 소스 영역으로부터의 독출 데이터를 출력하는 불휘발성 메모리 장치; 및
    상기 독출 데이터에 포함되는 복수의 벡터들 각각에 대한 에러 정정 부호 연산을 수행하여 상기 불휘발성 메모리 장치의 타깃 영역으로 기입하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 에러 정정 부호 연산시, 플래그 비트 없이 상기 복수의 벡터들 중 클린 영역에 대응하는 벡터를 디코딩 패스(Decoding pass)로 처리하되,
    상기 플래그 비트는 상기 복수의 벡터들 각각의 프로그램 상태를 지시하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 클린 영역에 대응하는 벡터는 모든 원소가 논리 '1'인 올원 벡터인 저장 장치.
  3. 제 2 항에 있어서,
    상기 메모리 컨트롤러는 상기 올원 벡터에 대해 영 벡터의 신드롬을 제공하는 에러 정정 부호 유닛을 포함하는 저장 장치.
  4. 제 3 항에 있어서,
    상기 에러 정정 부호 유닛은, 상기 클린 영역에 대응하는 벡터의 크기가 상기 불휘발성 메모리 장치의 쓰기 단위와 다를 경우에는 단축(Shortening)을 통하여 상기 클린 영역에 대응하는 벡터의 크기와 상기 쓰기 단위를 일치시키는 저장 장치.
  5. 제 3 항에 있어서,
    상기 에러 정정 부호 유닛은, 상기 에러 정정 부호 연산에 적용되는 패리티 검사 행렬의 행 가중치(Row weight)가 모두 짝수로 설정되는 저장 장치.
  6. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 복수의 벡터들을 반전시키는 인버터; 및
    상기 반전된 복수의 벡터들에 대해서 상기 에러 정정 부호 연산을 수행하는 에러 정정 부호 유닛을 포함하는 저장 장치.
  7. 제 6 항에 있어서,
    상기 메모리 컨트롤러는,
    쓰기 동작시에는 쓰기 데이터를 상기 에러 정정 부호 유닛에 의해 인코딩되도록, 그리고 인코딩된 쓰기 데이터를 상기 인버터에 의해서 반전시키도록, 그리고 반전된 쓰기 데이터를 상기 불휘발성 메모리 장치에 저장하도록 설정되며,
    독출 동작시에는, 상기 불휘발성 메모리 장치로부터 독출된 데이터가 상기 인버터에 의해서 반전된 후에 상기 에러 정정 부호 유닛에 의해서 디코딩되도록 설정되는 저장 장치.
  8. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 복수의 벡터들에 대해서 상기 에러 정정 부호 연산을 수행하는 에러 정정 부호 유닛; 및
    상기 복수의 벡터들 중 올원 벡터를 검출하고, 검출 결과에 따라 상기 에러 정정 부호 유닛의 에러 정정 부호 연산을 비활성화시키는 올원 벡터 검출기를 포함하는 저장 장치.
  9. 제 1 항에 있어서,
    상기 독출된 데이터가 상기 메모리 컨트롤러에서 에러 정정 부호 연산에 의해서 처리된 후에 상기 타깃 영역에 기입되는 동작은 카피-백 동작인 것을 특징으로 하는 저장 장치.
  10. 불휘발성 메모리 장치를 포함하는 저장 장치의 카피-백 방법에 있어서:
    상기 불휘발성 메모리 장치의 소스 페이지로부터 데이터를 독출하는 단계;
    상기 독출된 데이터에 포함된 복수의 벡터들 각각에 대한 에러 정정 부호 연산을 수행하되, 상기 복수의 벡터들 중 클린 영역에 대응하는 벡터에 대해서 플래그 비트 없이 디코딩 패스(Decoding pass)로 처리하는 단계; 그리고
    상기 에러 정정 부호 연산의 결과 데이터를 상기 불휘발성 메모리 장치의 타깃 페이지로 기입하는 단계를 포함하는 카피-백 방법.
KR1020100045521A 2010-05-14 2010-05-14 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 KR101650130B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100045521A KR101650130B1 (ko) 2010-05-14 2010-05-14 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
US13/106,892 US8751900B2 (en) 2010-05-14 2011-05-13 Storage device having a non-volatile memory device and copy-back method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100045521A KR101650130B1 (ko) 2010-05-14 2010-05-14 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법

Publications (2)

Publication Number Publication Date
KR20110125892A KR20110125892A (ko) 2011-11-22
KR101650130B1 true KR101650130B1 (ko) 2016-08-24

Family

ID=44912802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100045521A KR101650130B1 (ko) 2010-05-14 2010-05-14 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법

Country Status (2)

Country Link
US (1) US8751900B2 (ko)
KR (1) KR101650130B1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101678919B1 (ko) 2011-05-02 2016-11-24 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
TWI467364B (zh) * 2011-07-12 2015-01-01 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與資料寫入方法
WO2013094792A1 (ko) * 2011-12-23 2013-06-27 주식회사 유니듀 플래시 메모리의 데이터 간섭 완화 장치
US20140089561A1 (en) * 2012-09-26 2014-03-27 Kiran Pangal Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory
KR102048765B1 (ko) * 2013-01-15 2020-01-22 삼성전자주식회사 메모리 시스템의 동작 방법 및 메모리 시스템
CN105518800B (zh) * 2013-06-14 2018-11-30 三星电子株式会社 半导体存储器装置及其ecc方法
KR102081081B1 (ko) * 2013-08-01 2020-02-25 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
US9164837B2 (en) * 2013-09-12 2015-10-20 Seagate Technology Llc Transfer unit management
KR102190399B1 (ko) * 2013-10-11 2020-12-11 삼성전자주식회사 신뢰성을 보장할 수 있는 불휘발성 메모리 장치의 동작 방법 및 상기 방법을 수행하는 메모리 시스템
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
US9582354B2 (en) 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9733870B2 (en) 2015-05-06 2017-08-15 International Business Machines Corporation Error vector readout from a memory device
DE102015111729B4 (de) * 2015-07-20 2017-03-30 Infineon Technologies Ag Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code
KR102438988B1 (ko) 2016-04-07 2022-09-02 삼성전자주식회사 랜덤화 연산을 수행하는 불휘발성 메모리 장치
US10133664B2 (en) 2016-04-27 2018-11-20 Silicon Motion Inc. Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
US9910772B2 (en) 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10110255B2 (en) 2016-04-27 2018-10-23 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10067827B2 (en) * 2016-06-29 2018-09-04 Micron Technology, Inc. Error correction code event detection
KR20180051881A (ko) * 2016-11-09 2018-05-17 에스케이하이닉스 주식회사 메모리 시스템
TWI628543B (zh) * 2017-09-07 2018-07-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
CN110134322B (zh) * 2018-02-02 2022-05-31 建兴储存科技(广州)有限公司 运用dram的储存装置及其相关数据处理方法
US10855314B2 (en) * 2018-02-09 2020-12-01 Micron Technology, Inc. Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
KR102599188B1 (ko) * 2018-11-09 2023-11-08 삼성전자주식회사 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법
US10951403B2 (en) * 2018-12-03 2021-03-16 Winbond Electronics Corporation Updating cryptographic keys stored in non-volatile memory
KR20200071484A (ko) * 2018-12-11 2020-06-19 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템
KR102313584B1 (ko) * 2019-02-07 2021-10-18 윈본드 일렉트로닉스 코포레이션 비-휘발성 메모리에 저장된 암호키 업데이트
US11183267B2 (en) * 2019-07-12 2021-11-23 Micron Technology, Inc. Recovery management of retired super management units
CN111562883B (zh) * 2020-04-26 2021-09-07 北京泽石科技有限公司 固态硬盘的缓存管理系统、方法、装置
US11177012B1 (en) * 2020-06-24 2021-11-16 Western Digital Technologies, Inc. Fast copy through controller
US11487611B2 (en) * 2020-10-02 2022-11-01 Western Digital Technologies, Inc. LDPC encoding for memory cells with arbitrary number of levels
KR20220124582A (ko) * 2021-03-03 2022-09-14 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102633829B1 (ko) * 2021-12-30 2024-02-02 성균관대학교산학협력단 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
US20230317195A1 (en) * 2022-04-04 2023-10-05 Micron Technology, Inc. Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate
KR20230152501A (ko) * 2022-04-27 2023-11-03 한국과학기술원 플래시 기반 저장 장치 및 그 카피백 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244017A (ja) 2005-03-02 2006-09-14 Matsushita Electric Ind Co Ltd データコピー方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282231A (ja) 1996-04-17 1997-10-31 Toshiba Corp ライトバック型キャッシュ装置
JP3705043B2 (ja) 1999-10-19 2005-10-12 ソニー株式会社 メモリ媒体及びメモリ処理システム並びにデータ管理方法
JP4563715B2 (ja) * 2003-04-29 2010-10-13 三星電子株式会社 パーシャルコピーバック動作モードを有するフラッシュメモリ装置
KR20070109686A (ko) * 2006-05-12 2007-11-15 주식회사 하이닉스반도체 멀티 레벨 셀 낸드 플래쉬 메모리에서 에러 정정 기법을사용한 개선된 카피백 동작
KR101437396B1 (ko) * 2008-02-27 2014-09-05 삼성전자주식회사 레이턴시를 줄일 수 있는 에러 정정 블록을 포함하는메모리 시스템 및 그것의 에러 정정 방법
KR101466270B1 (ko) * 2008-09-19 2014-11-28 삼성전자주식회사 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
KR20100111990A (ko) * 2009-04-08 2010-10-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 데이터 랜덤화 방법
US8464137B2 (en) * 2010-12-03 2013-06-11 International Business Machines Corporation Probabilistic multi-tier error correction in not-and (NAND) flash memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244017A (ja) 2005-03-02 2006-09-14 Matsushita Electric Ind Co Ltd データコピー方法

Also Published As

Publication number Publication date
US20110283166A1 (en) 2011-11-17
US8751900B2 (en) 2014-06-10
KR20110125892A (ko) 2011-11-22

Similar Documents

Publication Publication Date Title
KR101650130B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
US10740175B2 (en) Pool-level solid state drive error correction
US10901840B2 (en) Error correction decoding with redundancy data
US10998923B2 (en) Stopping criteria for layered iterative error correction
US9021339B2 (en) Data reliability schemes for data storage systems
US9317362B2 (en) Method and system to improve the performance and/or reliability of a solid-state drive
US9729171B2 (en) Techniques for soft decision decoding of encoded data
US8713411B2 (en) Encoding and/or decoding memory devices and methods thereof
US8769375B2 (en) Data storage device related method of operation
US8812935B2 (en) Using a data ECC to detect address corruption
KR102385138B1 (ko) 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치
US9003264B1 (en) Systems, methods, and devices for multi-dimensional flash RAID data protection
US20160062828A1 (en) Data accessing method, memory storage device and memory controlling circuit unit
US11182240B2 (en) Techniques to improve error correction using an XOR rebuild scheme of multiple codewords and prevent miscorrection from read reference voltage shifts
JP2019057752A (ja) メモリシステム
JP2021047712A (ja) メモリシステム
US20180203625A1 (en) Storage system with multi-dimensional data protection mechanism and method of operation thereof
US10951238B1 (en) Memory system and method for controlling non-volatile memory
KR20190132877A (ko) 컨트롤러 및 그것의 동작 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 4