KR102081980B1 - 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 - Google Patents

메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 Download PDF

Info

Publication number
KR102081980B1
KR102081980B1 KR1020120111381A KR20120111381A KR102081980B1 KR 102081980 B1 KR102081980 B1 KR 102081980B1 KR 1020120111381 A KR1020120111381 A KR 1020120111381A KR 20120111381 A KR20120111381 A KR 20120111381A KR 102081980 B1 KR102081980 B1 KR 102081980B1
Authority
KR
South Korea
Prior art keywords
information
error check
data
compressed data
error
Prior art date
Application number
KR1020120111381A
Other languages
English (en)
Other versions
KR20140046597A (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 KR1020120111381A priority Critical patent/KR102081980B1/ko
Priority to US14/048,751 priority patent/US9158617B2/en
Publication of KR20140046597A publication Critical patent/KR20140046597A/ko
Application granted granted Critical
Publication of KR102081980B1 publication Critical patent/KR102081980B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation

Abstract

메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법에 관하여 개시한다. 메모리 시스템에서의 라이트 동작 수행 방법은 제1사이즈 단위의 데이터를 압축하는 단계, 상기 압축된 데이터에 기초하여 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계, 상기 압축된 데이터 및 상기 복수 유형의 오류 검사 정정용 정보들을 제2사이즈 단위로 조합하는 단계 및, 상기 제2사이즈 단위로 조합된 정보를 메모리 장치에 라이트하는 단계를 포함한다.

Description

메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법{Method for performing write operation or read operation in memory system}
본 발명은 메모리 시스템 및 메모리 시스템에 대한 제어 방법에 관한 것으로서, 더욱 상세하게는 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되며, 휘발성 메모리 장치와 비휘발성 메모리 장치로 구분된다. 이러한 메모리 장치의 특성은 사용 환경, 사용 횟수 또는 사용 시간이 경과함에 따라 변화될 수 있다. 따라서, 메모리 장치를 포함하는 메모리 시스템에서 동일한 ECC(Error Checking and Correction) 알고리즘을 사용하면서도 오류 정정 성능을 향상시키는 기술이 요구된다.
본 발명의 목적은 오류 정정 능력을 향상시키기 위한 메모리 시스템에서의 라이트 동작 수행 방법을 제공하는데 있다.
본 발명의 다른 목적은 오류 정정 능력을 향상시키기 위한 메모리 시스템에서의 리드 동작 수행 방법을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 일실시 예에 의한 메모리 시스템에서의 라이트 동작 수행 방법은 제1사이즈 단위의 데이터를 압축하는 단계, 상기 압축된 데이터에 기초하여 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계, 상기 압축된 데이터 및 상기 복수 유형의 오류 검사 정정용 정보들을 제2사이즈 단위로 조합하는 단계 및, 상기 제2사이즈 단위로 조합된 정보를 메모리 장치에 라이트하는 단계를 포함한다.
본 발명의 일실시 예에 따르면, 상기 제1사이즈 단위는 메모리 시스템의 ECC(Error Checking and Correction) 인코딩 처리 사이즈 단위로 결정될 수 있다.
본 발명의 일실시 예에 따르면, 상기 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계는 상기 압축된 데이터를 복수개로 나누는 단계, 상기 복수개 나누어진 압축 데이터의 일부에 대하여 1차적으로 ECC 인코딩 처리를 수행하여 제1패리티 정보를 생성시키는 단계 및, 상기 제1패리티 정보가 생성된 부분의 압축 데이터, 상기 제1패리티 정보 및, 상기 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 정보에 대하여 2차적으로 ECC 인코딩 처리를 수행하여 제2패리티 정보를 생성시키는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 제1패리티 정보를 생성시키는 단계는 상기 복수개 나누어진 압축 데이터의 일부에 초기 설정된 패딩 정보를 부가하여 제1사이즈의 제1정보를 생성시키는 단계 및, 상기 제1정보를 ECC 인코딩 처리하여 제1패리티 정보를 생성시키는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 제2패리티 정보를 생성시키는 단계 상기 제1패리티 정보가 생성된 부분의 압축 데이터, 상기 제1패리티 정보 및, 상기 제1패리티 정보가 생성되지 않은 부분의 압축 데이터로 구성된 정보에 초기 설정된 패딩 정보를 부가하여 제1사이즈의 제2정보를 생성시키는 단계 및 상기 제2정보를 ECC 인코딩 처리하여 제2패리티 정보를 생성시키는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계는 상기 압축된 데이터에 초기 설정된 패딩 정보를 부가하여 제1사이즈 단위의 제3정보를 생성시키는 단계, 상기 제3정보를 ECC 인코딩 처리하여 제3패리티 정보를 생성시키는 단계 및, 상기 제3패리티 정보가 생성된 복수의 제1사이즈 단위의 정보들에 대한 레이드(RAID) 패리티 정보를 생성시키는 단계를 포함하고, 상기 레이드 패리티 정보는 상기 복수의 제1사이즈 단위의 정보들 중 오류 정정 불능인 하나의 제1사이즈 단위의 정보를 복원 가능하도록 생성되는 것을 특징으로 한다.
본 발명의 일실시 예에 따르면, 상기 제2사이즈 단위로 조합하는 단계는 상기 압축된 데이터 및 상기 복수 유형의 오류 검사 정정용 정보들을 결합하고, 상기 결합된 정보에 초기 설정된 패딩 정보를 부가하여 제2사이즈 단위의 정보를 생성시킬 수 있다.
본 발명의 일실시 예에 따르면, 상기 제2사이즈 단위로 조합된 정보에 대한 속성 정보가 포함된 메타 데이터를 생성시키는 단계를 더 포함하고, 상기 속성 정보는 상기 복수 유형의 오류 검사 정정용 정보들을 생성시키는데 이용된 정보 또는 상기 제1,2사이즈 단위의 정보를 생성시키는데 이용된 패딩 사이즈 정보를 포함할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 일실시 예에 의한 메모리 시스템에서의 리드 동작 수행 방법은 데이터 독출 요구에 기초하여 메모리 장치로부터 독출된 데이터를 전송받는 단계, 상기 독출 데이터에 포함된 복수 유형의 오류 검사 정정용 정보들에 기초하여 상기 독출 데이터에 포함된 압축 데이터에 대하여 적어도 1회 이상의 오류 검사 정정 처리를 수행하는 단계 및, 상기 오류 검사 정정 처리된 압축 데이터에 대하여 압축 해제 처리를 수행하는 단계를 포함한다.
본 발명의 일실시 예에 따르면, 상기 오류 검사 정정 처리를 수행하는 단계는 상기 독출 데이터에 포함된 복수 유형의 오류 정정용 정보들 중의 제1유형의 오류 검사 정정용 정보에 기초하여 상기 독출 데이터에 포함된 압축 데이터에 대한 1차 오류 검사 정정 처리를 수행하는 단계 및, 상기 1차 오류 검사 정정 처리 결과 오류 정정에 실패하면, 상기 복수 유형의 오류 검사 정정용 정보들 중의 제2유형의 오류 검사 정정 정보에 기초하여 상기 독출 데이터에 포함된 압축 데이터에 대한 2차 오류 검사 정정 처리를 수행하는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 1차 오류 검사 정정 처리를 수행하는 단계는 상기 독출 데이터로부터 제2패리티 정보를 추출하는 단계, 상기 독출 데이터로부터 제1패리티 정보가 생성된 부분의 압축 데이터, 상기 제1패리티 정보 및, 상기 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 제1사이즈 단위의 제2정보를 생성시키는 단계 및, 상기 제2패리티 정보에 기초하여 상기 제2정보에 대한 오류 검사 정정 처리를 수행하는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 2차 오류 검사 정정 처리를 수행하는 단계는 상기 1차 오류 검사 정정 처리 결과 오류 정정에 실패하는 경우에, 상기 독출 데이터로부터 제1패리티 정보를 추출하는 단계, 상기 독출 데이터로부터 제1패리티 정보가 생성된 부분의 압축 데이터에 초기 설정된 패딩 정보를 부가하여 제1사이즈의 제1정보를 생성시키는 단계 및, 상기 제1패리티 정보에 기초하여 상기 제1정보에 대한 오류 검사 정정 처리를 수행하는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 2차 오류 검사 정정 처리된 부분의 압축 데이터, 상기 제1패리티 정보 및, 상기 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 제1사이즈 단위의 제2'정보를 생성시키는 단계 및, 상기 독출 데이터로부터 추출된 제2패리티 정보에 기초하여 상기 제2'정보에 대한 오류 검사 정정 처리를 수행하는 단계를 더 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 1차 오류 검사 정정 처리를 수행하는 단계는 상기 독출 데이터로부터 제3패리티 정보를 추출하는 단계, 상기 제3패리티 정보가 생성된 압축 데이터를 추출하고, 상기 압축 데이터에 초기 설정된 패딩 정보를 부가하여 제1사이즈의 제3정보를 생성시키는 단계 및, 상기 제3패리티 정보에 기초하여 상기 제3정보에 대한 오류 검사 정정 처리를 수행하는 단계를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 2차 오류 검사 정정 처리를 수행하는 단계는 상기 ECC 디코딩 처리 결과 오류 정정에 실패한 압축 데이터를 상기 독출 데이터에 포함된 레이드 패리티 정보를 이용하여 복원 처리할 수 있다.
본 발명에 의하면 메모리 장치에 저장할 데이터를 압축하고, 압축 데이터에 기초하여 복수 유형의 오류 검사 정정용 정보를 생성시킨 후에, 데이터 압축에 의하여 발생되는 여유 저장 영역을 이용하여 복수 유형의 오류 검사 정정용 정보를 메모리 장치에 라이트함으로써, ECC 알고리즘을 변경시키지 않고도 에러 정정 능력을 향상시킬 수 있는 효과가 발생된다.
또한, 본 발명에 의하면 섹터별 데이터 압축에 의하여 발생되는 여유 저장 영역에 초기 설정된 패딩 정보를 라이트하지 않고 다음 섹터 데이터를 앞당겨 라이트하여 확보된 여유 저장 영역에 레이드 패리티 정보를 저장함으로써, 오류 복원 능력을 향상시킬 수 있는 효과가 발생된다.
도 1은 본 발명의 일실시 예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 2는 도 1의 메모리 시스템에 포함된 메모리 장치를 상세하게 나타내는 블록도이다.
도 3은 도 2의 메모리 장치에 포함된 셀 어레이의 일 예를 나타낸다.
도 4는 도 3의 셀 어레이에 포함된 메모리 블록의 일 예를 나타내는 회로도이다.
도 5는 도 4의 메모리 블록에 포함된 메모리 셀의 일 예를 나타내는 단면도이다.
도 6은 도 1의 메모리 시스템의 소프트웨어 구조의 일 예를 보여주는 도면이다.
도 7은 본 발명의 다른 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법의 흐름도이다.
도 9는 도 8에 도시된 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 10은 도 9에 도시된 제1패리티 정보를 생성시키는 단계(S122A)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 11은 도 10에 도시된 제2패리티 정보를 생성시키는 단계(S123A)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 12는 도 8에 도시된 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120)에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 13은 도 8에 도시된 라이트 동작 수행 방법의 흐름도에 메타 데이터 생성 단계(S130_1)를 추가한 흐름도이다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템에서의 리드 동작 수행 방법의 흐름도이다.
도 15는 도 14에 도시된 오류 검사 정정 처리 단계(S220)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 16은 도 15에 도시된 1차 오류 검사 정정 처리 단계(S221)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 17은 도 15에 도시된 2차 오류 검사 정정 처리 단계(S223)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 18은 도 17에 도시된 2차 오류 검사 정정 처리 단계(S223A)에 따른 2차 오류 검사 정정 처리된 결과를 이용하여 1차 오류 검사 정정 처리를 다시 수행하는 방법을 보여주는 흐름도이다.
도 19는 도 15에 도시된 1차 오류 검사 정정 처리 단계(S221)에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 20은 도 15에 도시된 2차 오류 검사 정정 처리 단계(S223)에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 21은 본 발명의 일 실시 예에 따른 압축 데이터를 2개로 분할하여 복수 유형의 오류 검사 정정용 정보를 생성시켜 메모리 장치에 저장하는 원리를 설명하기 위한 도면이다.
도 22는 본 발명의 다른 실시 예에 따른 압축 데이터를 3개로 분할하여 복수 유형의 오류 검사 정정용 정보를 생성시켜 메모리 장치에 저장하는 원리를 설명하기 위한 도면이다.
도 23(a)~(e)는 본 발명의 일 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법에 따른 데이터 처리 과정을 설명하기 위한 개념도이다.
도 24(a)~(d)는 본 발명의 다른 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법에 따른 데이터 처리 과정을 설명하기 위한 개념도이다.
도 25(a)~(d)는 본 발명의 일 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법에 따른 메모리 장치의 하나의 페이지에 저장되는 데이터의 구조의 다양한 예들을 보여주는 도면이다.
도 26(a)~(b)는 본 발명의 다른 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법에 따른 메모리 장치의 하나의 페이지에 저장되는 데이터의 구조의 일 예를 보여주는 도면이다.
도 27(a)~(d)는 본 발명의 일 실시 예에 따른 메모리 시스템에서의 리드 동작 수행 방법에 따른 데이터 처리 과정을 설명하기 위한 개념도이다.
도 28(a)~(c)는 본 발명의 다른 실시 예에 따른 메모리 시스템에서의 리드 동작 수행 방법에 따른 데이터 처리 과정을 설명하기 위한 개념도이다.
도 29는 본 발명의 실시 예들에 따른 메모리 시스템을 메모리 카드에 적용한 예를 나타내는 블록도이다.
도 30은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 31은 본 발명의 실시 예들에 따른 메모리 시스템을 솔리드 스테이트 드라이브에 적용한 예를 나타내는 블록도이다.
도 32는 도 31의 SSD를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 개략적으로 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(10) 및 메모리 장치(20)를 포함할 수 있다. 메모리 컨트롤러(10)는 메모리 장치(20)에 대한 제어 동작을 수행할 수 있는데, 구체적으로, 메모리 컨트롤러(10)는 메모리 장치(20)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(20)에 대한 프로그램(또는 기록), 독출 및 소거 동작을 제어할 수 있다. 이하에서는, 메모리 컨트롤러(10) 및 메모리 장치(20)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 장치(20)는 메모리 셀 어레이(21)를 포함할 수 있는데, 메모리 셀 어레이(21)는 복수의 워드 라인들과 복수의 비트 라인들이 교차하는 영역들에 배치되는 복수의 메모리 셀들을 포함할 수 있다. 일 실시 예에서, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있고, 메모리 셀 어레이(21)는 낸드(NAND) 플래시 메모리 셀 어레이 또는 노아(NOR) 플래시 메모리 셀 어레이일 수 있다. 이하에서는, 복수의 메모리 셀들이 플래시 메모리 셀들인 경우를 예로 하여 본 발명의 실시 예들을 상술하기로 한다. 그러나, 본 발명은 이에 한정되지 아니하고, 다른 실시 예에서, 복수의 메모리 셀들은 RRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
메모리 컨트롤러(10)는 중앙처리장치(Central Processing Unit; CPU, 11), 압축 처리부(12), 압축 해제 처리부(13) 및, 오류 검사 정정(Error Checking and Correction; ECC) 처리부(114)를 포함할 수 있다.
CPU(11)는 메모리 시스템(100)의 전반적인 동작을 제어한다. 호스트로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(100)을 제어한다. 세부적으로, CPU(11)는 도 8 ~ 도 20에 도시된 본 발명의 실시 예들에 따른 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법의 흐름도를 수행하도록 메모리 시스템(100)을 제어할 수 있다.
압축 처리부(12)는 CPU(11)의 제어에 따라서 메모리 장치(20)에 저장될 데이터를 압축 처리한다. 압축 대상이 되는 데이터는 다양한 응용 프로그램 파일 및 호스트에서 제공되는 사용자 데이터 등이 될 수 있다. 물론, 압축 대상이 되는 데이터는 메타 데이터도 포함될 수 있다.
압축 처리부(12)는 제1단위 사이즈의 데이터를 압축하여 출력한다. 예로서, 제1단위 사이즈는 ECC 인코딩 처리 사이즈 단위와 같게 설정될 수 있다. 또한, 제1단위 사이즈는 섹터 사이즈 단위와 같게 설정될 수도 있다.
일 예로서, 압축 처리부(12)는 반복 길이 부호화(run-length encoding) 방식 또는 허프만 코딩(huffman coding) 방식을 이용하여 데이터를 압축 처리할 수 있다. 반복 길이 부호화 방식은 데이터에서 같은 값이 연속해서 나타나는 것을 데이터의 종류와 반복되는 수로 표현하는 압축 방식이다.
압축 해제 처리부(13)는 CPU(11)의 제어에 따라서 메모리 장치(20)로부터 수신된 압축 데이터를 수신하여 압축 전의 상태로 복원 처리한다. 압축 해제 처리부(13)는 압축 처리부(12)의 압축 원리를 역으로 적용하면 압축된 데이터를 복원 처리할 수 있다.
ECC 처리부(14)는 라이트(write) 동작 시에 RS 코드(Reed-Solomon code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code) 등과 같은 알고리즘을 이용하여 호스트로부터 수신되는 데이터에 대한 오류 검사 정정용 정보를 생성시킬 수 있다. 예로서, 오류 검사 정정용 정보는 패리티(parity) 정보 또는 레이드(RAID) 패리티 정보가 포함될 수 있다.
레이드 패리티 정보는 복수개의 ECC 처리 단위의 정보들 중 오류 정정 불능 상태가 발생된 하나의 ECC 처리 단위의 정보에 대한 복원이 가능하도록 생성된 오류 검사 정정용 정보이다. 예로서, 레이드 패리티 정보는 복수의 ECC 처리 단위의 정보들로부터 각각 대응되는 하나의 비트 값을 배타적 논리합(XOR) 연산 처리하여 생성시킬 수 있다.
세부적으로, ECC 처리부(14)는 복수의 ECC 처리 단위의 정보들 각각의 첫 번째 비트 값을 배타적 논리합(XOR) 연산 처리하여 레이드 패리티 정보의 첫 번째 비트 값을 생성시킬 수 있다. 다음으로, 복수의 ECC 처리 단위의 정보들 각각의 두 번째 비트 값을 추출하여 레이드 패리티 정보의 두 번째 비트 값을 생성시킬 수 있다. 이와 같은 방식으로 복수의 ECC 처리 단위의 정보들의 마지막 비트까지 순차적으로 배타적 논리합(XOR) 연산 처리하면 레이드 패리티 정보를 생성시킬 수 있다.
그리고, ECC 처리부(14)는 리드(read) 동작 시에는 데이터와 함께 독출된 오류 검사 정정용 정보를 이용하여 수신된 데이터에 대한 오류 검사 정정 처리를 수행한다.
동일한 ECC 알고리즘을 이용하는 경우에 단위 데이터 사이즈 당 오류 정정 능력은 ECC 사이즈에 비례하여 향상되는 특성을 갖는다. 일 예로서, 1024 Byte 데이터의 비트 오류를 16bit 이하까지 처리하는 ECC 알고리즘에서 4K Byte 페이지 당 112 바이트의 ECC 사이즈가 필요하다면, 1024 Byte 데이터의 비트 오류를 32bit 이하까지 처리하는 ECC 알고리즘에서는 4K Byte 페이지 당 224 Byte의 ECC 사이즈가 필요하게 된다. 즉, 4K Byte 페이지 당 처리할 수 있는 비트 오류를 16bit에서 32bit로 오류 정정 능력을 향상시키기 위해서는 ECC 사이즈를 2배로 증가시켜야 한다는 사실을 알 수 있다.
본 발명에서는 ECC 알고리즘을 변경하지 않고 동일한 ECC 알고리즘을 사용하면서 ECC 능력(strength)을 높이는 방안을 제안한다. 세부적으로, 본 발명에서는 데이터 압축을 통하여 확보된 메모리 장치(20)의 여유 저장 영역을 ECC 능력을 향상시키기 위한 추가적인 오류 검사 정정용 정보를 저장하는 영역으로 활용하는 방안을 제안한다.
예로서, 본 발명에서는 압축된 데이터에 기초하여 복수 유형의 오류 검사 정정용 정보들을 생성시키고, 복수 유형의 오류 검사 정정용 정보들을 데이터 압축을 통하여 확보된 메모리 장치(20)의 여유 저장 영역에 저장함으로써, ECC 능력을 향상시킨다. 이에 대해서는 아래에서 상세히 설명되어질 것이다.
우선, 본 발명의 실시 예에 따른 압축 데이터를 2개로 분할하여 복수 유형의 오류 검사 정정용 정보를 생성시킨 후에, 복수 유형의 오류 검사 정정용 정보들을 압축을 통하여 확보된 메모리 장치(20)의 여유 저장 영역에 저장하는 원리에 대하여 설명하기로 한다.
도 21을 참조하면, 예로서 ECC 인코딩 처리 사이즈 단위의 오리지널 데이터 DN을 압축하여 압축 데이터 DN'을 얻을 수 있다. 예로서, 압축 데이터 DN'을 2개로 분할하면 DN'_1 및 DN'_2를 얻을 수 있다. 그러면, 본 발명의 실시 예에서는 DN'_1에 대하여 1차적으로 ECC 인코딩 처리하여 제1유형의 오류 검사 정정용 정보(ECC1)를 생성시킨다(S1). 그리고 나서, (DN'_1 + ECC1 + DN'_2)에 대하여 2차적으로 ECC 인코딩 처리하여 제2유형의 오류 검사 정정용 정보(ECC2)를 생성시킨다(S2). 이와 같이, 1,2차적으로 ECC 인코딩 처리한 후에, 데이터 압축을 통하여 확보된 여유 저장 영역을 이용하여 (DN'_1 + ECC1 + DN'_2 + ECC2)를 메모리 장치(20)에 저장할 수 있다.
다음으로, 본 발명의 실시 예에 따른 압축 데이터를 3개로 분할하여 복수 유형의 오류 검사 정정용 정보를 생성시킨 후에, 복수 유형의 오류 검사 정정용 정보들을 압축을 통하여 확보된 메모리 장치(20)의 여유 저장 영역에 저장하는 원리에 대하여 설명하기로 한다.
도 22를 참조하면, 예로서 ECC 인코딩 처리 사이즈 단위의 오리지널 데이터 DN을 압축하여 압축 데이터 DN'을 얻을 수 있다. 예로서, 압축 데이터 DN'을 3개로 분할하면 DN'_1, DN'_2 및 DN'_3을 얻을 수 있다. 그러면, 본 발명의 실시 예에서는 DN'_1에 대하여 1차적으로 ECC 인코딩 처리하여 제1유형의 오류 검사 정정용 정보(ECC1)를 생성시킨다(S1'). 그리고 나서, (DN'_1 + ECC1 + DN'_2)에 대하여 2차적으로 ECC 인코딩 처리하여 제2유형의 오류 검사 정정용 정보(ECC2)를 생성시킨다(S2'). 다음으로, (DN'_1 + ECC1 + DN'_2 + ECC2 + DN'_3)에 대하여 3차적으로 제3유형의 오류 검사 정정용 정보(ECC3)를 생성시킨다(S3').
이와 같이, 1~3차적으로 ECC 인코딩 처리한 후에, 데이터 압축을 통하여 확보된 여유 저장 영역을 이용하여 (DN'_1 + ECC1 + DN'_2 + ECC2 + DN'_3 + ECC3)를 메모리 장치(20)에 저장할 수 있다.
위에서 설명한 바와 같은 원리를 이용하여 압축 데이터를 3개 이상으로 분할하여 복수 유형의 오류 검사 정정용 정보들을 생성시키고, 복수 유형의 오류 검사 정정용 정보들을 데이터 압축을 통하여 확보된 여유 저장 영역을 이용하여 메모리 장치(20)에 저장할 수도 있다.
아래에서는 압축 데이터를 2개로 분할하여 복수 유형의 오류 검사 정정용 정보를 생성시키고, 압축을 통하여 확보된 메모리 장치(20)의 여유 저장 영역에 저장함으로써 ECC 능력을 향상시키는 실시 예를 중심으로 설명하기로 한다.
ECC 처리부(14)는 압축 데이터에 대해서는 무효 데이터로 패딩(padding) 처리한 후에, 패딩 처리된 압축 데이터에 대하여 ECC 알고리즘을 적용하여 오류 검사 정정용 정보를 생성시킨다. 여기에서, 패딩 처리는 데이터 압축 전후의 사이즈가 일치되도록 압축 데이터에 초기 설정된 무효 데이터를 부가하여 패딩 처리할 수 있다. 무효 데이터를 패딩 정보라 칭하기도 한다. 예로서, 무효 데이터는 패딩되는 영역에 포함된 모든 비트 값을 0(zero)으로 설정할 수 있다. 다른 예로서, 무효 데이터는 패딩되는 영역에 포함된 모든 비트 값을 1로 설정할 수도 있다.
ECC 처리부(14)는 압축된 데이터에 기초하여 복수 유형의 오류 검사 정정용 정보들을 생성시킬 수 있다.
CPU(11)는 압축 처리부(12)에서 출력되는 압축 데이터를 복수개로 분할 처리하여 ECC 처리부(14)로 전달한다.
그러면, ECC 처리부(14)는 복수개로 분할된 하나 이상의 압축 데이터에 대하여 초기 설정된 무효 데이터를 부가하여 패딩 처리한 후에 1차적으로 ECC 인코딩 처리를 수행하여 오류 검사 정정용 정보인 제1패리티 정보를 생성시킬 수 있다.
예로서, 도 23(a)~(e)에 도시된 바와 같이, 오리지널 데이터(D1)로부터 압축 처리된 압축 데이터(D1')를 2개로 분할하여 D1'_1 및 D1'_2를 생성시킨 경우에, ECC 처리부(14)는 분할된 하나의 압축 데이터 D1'_1에 대하여 1차적으로 ECC 인코딩 처리를 수행하여 오류 검사 정정용 정보인 제1패리티 정보(ECC1)를 생성시킬 수 있다.
예로서, ECC 처리부(14)는 제1패리티 정보(ECC1)가 생성된 압축 데이터, 제1패리티 정보(ECC1) 및, 제1패리티 정보(ECC1)가 생성되지 않은 압축 데이터를 포함하는 정보에 대하여 2차적으로 ECC 인코딩 처리를 수행하여 제2패리티 정보를 생성시킬 수 있다.
예로서, 도 23(a)~(e)에 도시된 바와 같이, ECC 처리부(14)는 (D1'_1 + ECC1 + D1'_2)에 대하여 2차적으로 ECC 인코딩 처리를 수행하여 제2패리티 정보(ECC2)를 생성시킬 수 있다.
다른 실시 예로서, ECC 처리부(14)는 복수의 ECC 처리 단위의 정보들을 이용하여 레이드 패리티 정보를 생성시킬 수도 있다. 예로서, ECC 처리 단위는 섹터 사이즈 단위로 결정할 수 있다. 따라서, ECC 처리부(14)는 복수의 섹터 데이터를 이용하여 하나의 섹터 데이터를 복원할 수 있는 레이드 패리티 정보를 생성시킬 수 있다.
그리고, 리드 동작 시에 ECC 처리부(14)는 메모리 장치(20)로부터 수신된 독출 데이터에 포함된 복수 유형의 오류 검사 정정용 정보들에 기초하여 독출 데이터에 포함된 압축 데이터에 대하여 적어도 1회 이상의 오류 검사 정정 처리를 수행할 수 있다.
ECC 처리부(14)는 독출 데이터에 포함된 복수 유형의 에러 정정용 정보들 중의 제1유형의 오류 검사 정정용 정보에 기초하여 독출 데이터에 포함된 압축 데이터에 대한 1차 오류 검사 정정 처리를 수행할 수 있다.
예로서, ECC 처리부(14)는 제1패리티 정보가 생성된 부분의 압축 데이터, 제1패리티 정보 및, 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 정보에 대하여 독출 데이터로부터 획득한 제2패리티 정보에 기초하여 1차적으로 오류 검사 정정 처리를 할 수 있다.
1차 오류 검사 정정 처리 결과 오류 정정에 실패한 경우에, CPU(11)는 복수 유형의 오류 검사 정정용 정보들 중의 제2유형의 오류 검사 정정 정보에 기초하여 독출 데이터에 포함된 압축 데이터에 대한 2차 오류 검사 정정 처리를 수행하도록 ECC 처리부(14)를 제어할 수 있다.
예로서, 2차 오류 검사 정정 처리 결과 오류 정정에 성공하면, CPU(11)는 2차 오류 검사 정정 처리된 부분의 압축 데이터, 제1패리티 정보 및, 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 정보에 대하여 독출 데이터로부터 획득한 제2패리티 정보에 기초하여 오류 검사 정정 처리를 수행하도록 ECC 처리부(14)를 제어할 수 있다.
본 발명의 다른 실시 예에 따르면, ECC 처리부(14)는 독출 데이터에 포함된 각각의 압축 데이터들에 대하여 독출 데이터부터 획득한 제3패리티 정보에 기초하여 1차적으로 오류 검사 정정 처리를 할 수 있다.
1차 오류 검사 정정 처리 결과 오류 정정에 실패하면, CPU(11)는 독출 데이터부터 획득한 레이드 패리티 정보를 이용하여 2차적으로 오류 검사 정정 처리를 수행하여 오류 정정에 실패한 압축 데이터를 복원 처리하도록 ECC 처리부(14)를 제어할 수 있다.
도 2는 도 1의 메모리 시스템(100)에 포함된 메모리 장치(20)를 상세하게 나타내는 블록도이다.
도 2를 참조하면, 메모리 장치(20)는 메모리 셀 어레이(21), 제어 로직(22), 전압 발생기(23), 로우 디코더(24) 및 페이지 버퍼(25)를 포함할 수 있다.
제어 로직(22)은 메모리 컨트롤러(10)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여 메모리 셀 어레이(21)에 데이터를 기입하거나 메모리 셀 어레이(21)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이때, 제어 로직(22)에서 출력된 제어 신호는 전압 발생기(23), 로우 디코더(24) 및 페이지 버퍼(25)에 전달될 수 있다.
전압 발생기(23)는 제어 로직(22)으로부터 수신한 제어 신호를 기초로 하여 복수의 워드 라인들(WL)을 구동하기 위한 구동 전압(VWL)을 생성할 수 있다. 구체적으로, 구동 전압(VWL)은 기입 전압(또는 프로그램 전압), 독출 전압, 소거 전압 또는 패스(pass) 전압일 수 있다.
로우 디코더(24)는 로우 어드레스를 기초로 하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(24)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 한편, 기입 동작 시에 로우 디코더(24)는 선택된 워드 라인에 기입 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
페이지 버퍼(25)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(21)에 연결될 수 있다. 페이지 버퍼(25)는 메모리 셀 어레이(21)에 기록될 데이터 또는 메모리 셀 어레이(21)로부터 독출된 데이터를 임시적으로 저장할 수 있다.
도 3은 도 2의 메모리 장치(20)에 포함된 메모리 셀 어레이(21)의 일 예를 나타낸다.
도 3을 참조하면, 메모리 셀 어레이(21)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(21)는 a(a는 2 이상의 정수)개의 블록들(BLK0 내지 BLKa-1)을 포함하고, 각 블록들(BLK0 내지 BLKa-1)은 b(b는 2 이상의 정수)개의 페이지들(PAG0 내지 PAGb-1)을 포함하며, 각 페이지들(PAG0 내지 PAGb-1)은 c(c는 2 이상의 정수)개의 섹터들(SEC0 내지 SECc-1)을 포함할 수 있다. 도 3에서는 도시의 편의를 위해, 블록 BLK0에 대하여만 페이지들(PAG0 내지 PAGb-1) 및 섹터들(SEC0 내지 SECc-1)을 도시하였으나, 다른 블록들(BLK1 내지 BLKa-1)도 블록 BLK0와 동일한 구조를 가질 수 있다.
도 4는 도 3의 메모리 셀 어레이(21)에 포함된 메모리 블록(BLK0)의 일 예를 나타내는 회로도이다.
도 4를 참조하면, 메모리 셀 어레이(21)는 낸드 플래시 메모리의 메모리 셀 어레이일 수 있다. 이때, 도 3에 도시된 각 블록들(BLK0 내지 BLKa-1)은 도 4와 같이 구현될 수 있다. 도 4를 참조하면, 각 블록들(BLK0 내지 BLKa-1)은 비트 라인(BL0 내지 BLd-1) 방향으로, 8개의 메모리 셀(MCEL)들이 직렬로 연결되는 d(d는 2 이상의 정수)개의 스트링(STR)들을 포함할 수 있다. 각 스트링(STR)은 각각 직렬로 연결되는 메모리 셀(MCEL)들의 양 끝에 연결되는, 드레인(drain) 선택 트랜지스터(Str1) 및 소스(source) 선택 트랜지스터(Str2)를 포함할 수 있다.
도 4와 같은 구조를 갖는 낸드 플래시 메모리 장치는 블록 단위로 소거(erase)가 수행되고, 각 워드 라인(WL0 내지 WL7)에 대응되는 페이지(PAG) 단위로 프로그램을 수행한다. 도 4는 하나의 블록에 8개의 워드 라인들(WL0 내지 WL7)에 대한 8개의 페이지(PAG)들이 구비되는 예를 도시한다. 다만, 본 발명의 실시예에 따른 메모리 셀 어레이(21)의 블록들(BLK0 내지 BLKa-1)은 도 4에 도시되는 메모리 셀(MCEL) 및 페이지(PAG)의 개수와 다른 개수의 메모리 셀 및 페이지를 구비할 수도 있다. 또한, 도 1 및 도 2의 메모리 장치(20)는 이상에서 설명된 메모리 셀 어레이(21)와 동일한 구조로 동일한 동작을 수행하는 복수의 메모리 셀 어레이들을 포함할 수도 있다.
도 5는 도 4의 메모리 블록(BLK0)에 포함된 메모리 셀(MCEL)의 일 예를 나타내는 단면도이다.
도 5를 참조하면, 기판(SUB) 상에 소스(S) 및 드레인(D)이 형성되고, 소스(S)와 드레인(D)의 사이에는 채널 영역이 형성될 수 있다. 채널 영역의 상부에는 플로팅 게이트(FG)가 형성되는데, 채널 영역과 플로팅 게이트(FG)의 사이에는 터널링(tunneling) 절연층과 같은 절연층이 배치될 수 있다. 플로팅 게이트(FG)의 상부에는 컨트롤 게이트(CG)가 형성되는데, 플로팅 게이트(FG)와 컨트롤 게이트(CG)의 사이에는 블로킹(blocking) 절연층과 같은 절연층이 배치될 수 있다. 기판(SUB), 소스(S), 드레인(D) 및 컨트롤 게이트(CG)에는 메모리 셀(MCEL)에 대한 프로그램, 소거 및 독출 동작에 필요한 전압들이 인가될 수 있다.
플래시 메모리 장치에서는 메모리 셀(MCEL)의 문턱 전압(threshold voltage, Vth)의 구별에 의해 메모리 셀(MCEL)에 저장된 데이터가 독출될 수 있다. 이때, 메모리 셀(MCEL)의 문턱 전압(Vth)은 플로팅 게이트(FG)에 저장된 전자(electron)의 양에 따라 결정될 수 있다. 구체적으로, 플로팅 게이트(FG)에 저장된 전자가 많을수록 메모리 셀(MCEL)의 문턱 전압은 높아질 수 있다.
메모리 셀(MCEL)의 플로팅 게이트(FG)에 저장된 전자는 다양한 원인들에 의해 화살표 방향으로 누설(leakage)될 수 있고, 이에 따라, 메모리 셀(MCEL)의 문턱 전압이 변경될 수 있다. 예를 들어, 플로팅 게이트(FG)에 저장된 전자는 메모리 셀의 마모에 의해 누설될 수 있다. 구체적으로, 메모리 셀(MCEL)에 대한 프로그램, 소거 또는 독출과 같은 액세스 동작을 반복하면 채널 영역과 플로팅 게이트(FG) 사이의 절연막은 마모될 수 있고, 이에 따라, 플로팅 게이트(FG)에 저장된 전자가 누설될 수 있다. 또 다른 예로, 플로팅 게이트(FG)에 저장된 전자는 고온 스트레스 또는 프로그램/독출 시의 온도 차이 등에 의해 누설될 수도 있다. 이와 같은 누설 현상은 메모리 장치의 신뢰성을 저하시키는 요인이 된다.
플래시 메모리 장치에서는 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 호스트로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 호스트로부터 기입 또는 독출이 요청된 논리적 어드레스를 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 어드레스로 변환시키는 어드레스 변환 동작이 필요하다.
메모리 시스템(100)에서 논리적 어드레스를 물리적 어드레스로 변환시키는 과정을 도 6을 참조하여 설명하기로 한다.
도 6은 메모리 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 일 예로서, 도 6에서는 메모리 시스템(100)을 구성하는 메모리 장치(20)를 플래시 메모리 장치로 구현한 경우의 메모리 시스템(100)의 소프트웨어 구조를 보여준다.
도 6을 참조하면, 메모리 시스템(100)은 애플리케이션(101), 파일 시스템(102), 플래시 변환 계층(103), 그리고 플래시 메모리(104)순으로 소프트웨어 계층 구조를 갖는다. 여기에서, 플래시 메모리(104)는 물리적으로 도 2에 도시된 메모리 장치(20)를 의미한다.
애플리케이션(101)은 사용자 데이터를 가공하는 펌웨어를 의미한다. 예를 들어, 애플리케이션(101)은 워드 프로세서와 같은 문서 처리 소프트웨어, 계산 소프트웨어, 웹 브라우저와 같은 문서 뷰어가 될 수 있다. 애플리케이션(101)은 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리(104)에 저장하기 위한 커맨드를 파일 시스템(102)에 전달한다.
파일 시스템(102)은 플래시 메모리(104)에 사용자 데이터를 저장하기 위해 사용되는 구조 또는 소프트웨어를 의미한다. 파일 시스템(102)은 애플리케이션(101)으로부터의 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 어드레스를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템(102)으로부터 전달받은 논리적 어드레스를 플래시 메모리(104)에서의 읽기/쓰기 동작을 위한 물리적 어드레스로의 변환 과정을 수행한다. 플래시 변환 계층(103)에서는 매핑 테이블 정보를 이용하여 논리적 어드레스를 물리적 어드레스로 변환시킨다. 어드레스 매핑 방법은 페이지 매핑 방법 또는 블록 매핑 방법을 이용할 수 있다. 페이지 매핑 방법은 페이지 단위로 어드레스 매핑 동작을 수행하고, 블록 매핑 방법은 블록 단위로 어드레스 매핑 동작을 수행하는 방식이다. 또한, 페이지 매핑과 블록 매핑을 혼합한 혼합 매핑 방법이 적용될 수도 있다. 여기에서, 물리적 어드레스는 플래시 메모리(104)의 데이터 저장 위치를 나타낸다.
도 7은 본 발명의 다른 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 7을 참조하면, 메모리 시스템(1000)은 메모리 컨트롤러(1100) 및 메모리 장치(1200)를 포함한다.
메모리 장치(1200)는 비휘발성 반도체 메모리 장치로 구현될 수 있으며, 구체적으로 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구현될 수 있다. 메모리 장치(1200)는 도 1에 도시된 메모리 장치(20)와 구성 요소가 실질적으로 동일하므로 중복된 설명은 피하기로 한다.
예로서, 메모리 장치(1200)를 플래시 메모리 등과 같은 비휘발성 반도체 메모리로 구현하는 경우에 메모리 시스템(1000)은 SSD(Solid State Drive)가 될 수 있다. 메모리 컨트롤러(1100)는 호스트로부터 수신되는 커맨드에 응답하여 메모리 장치(1200)에서의 소거, 쓰기 또는 독출 동작을 제어한다.
메모리 컨트롤러(1100)는 RAM(Random Access Memory; 1110), CPU(Central Processing Unit; 1120), 압축 처리부(1130), 압축 해제 처리부(1140), 오류 검사 정정(Error Checking and Correction; ECC) 처리부(1150), 호스트 인터페이스(1160), 메모리 인터페이스(1170) 및, 버스(1180)를 포함한다.
버스(1180)는 메모리 컨트롤러(1100)의 구성 수단들 간의 데이터를 전송하는 전송로를 의미한다.
CPU(1120)는 메모리 시스템(1000)의 전반적인 동작을 제어한다. 예로서, 호스트로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(1000)을 제어한다.
CPU(1120)는 독출 동작 시에는 독출 커맨드 및 어드레스를 메모리 장치(122)에 제공하고, 라이트 동작 시에는 라이트 커맨드, 어드레스, 그리고 데이터를 제공한다. 그리고, CPU(1120)는 논리적 어드레스를 물리적 어드레스로 변환시키는 처리를 수행할 수 있다.
CPU(1120)는 본 발명에서 제안하는 메모리 시스템에서의 라이트 동작 또는 리드 동작을 수행하도록 메모리 시스템(1000)을 제어한다. 예로서, CPU(1120)는 도 8 ~ 도 20에 도시된 본 발명의 실시 예들에 따른 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법의 흐름도를 수행하도록 메모리 시스템(1000)을 제어할 수 있다.
RAM(1110)에는 호스트로부터 전송된 데이터가 임시로 저장되거나 메모리 장치(1200)에서 독출된 데이터가 임시로 저장된다. 또한, RAM(1110)에는 메모리 장치(1200)로부터 독출된 메모리 시스템 제어에 필요한 데이터도 저장된다. 예로서, 메모리 시스템 제어에 필요한 데이터는 메타 데이터가 포함될 수 있다. RAM(1110)은 DRAM, SRAM 등으로 구현될 수 있다.
참고적으로, 메타 데이터(meta data)는 메모리 시스템(1000)을 관리하기 위한 정보가 포함될 수 있다. 관리 정보인 메타 데이터에는 논리적 어드레스(Logical Address)를 메모리 장치(1200)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함될 수 있다.
호스트 인터페이스(1160)는 메모리 시스템(1000)과 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 시스템(1000)과 호스트를 상호 연결한다. 호스트 인터페이스(1160)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(1160)는 CPU(1120)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(1170)는 메모리 장치(1200)와 전기적으로 연결되어 있다. 메모리 인터페이스(1170)는 CPU(1120)의 제어에 따라서 메모리 장치(1200)와 커맨드, 어드레스 및 데이터를 교환한다. 메모리 인터페이스(1170)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(1170)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
압축 처리부(1130), 압축 해제 처리부(1140) 및 ECC 처리부(1150)에 대한 동작은 도 1에 도시된 압축 처리부(12), 압축 해제 처리부(13) 및 ECC 처리부(14)와 실질적으로 동일한 동작을 수행하므로 중복된 설명은 피하기로 한다.
그러면, CPU(1120)의 제어 동작에 따라서 수행되는 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법에 대하여 도 8 ~ 도 20의 흐름도를 참조하여 상세히 설명하기로 한다.
우선, 도 8의 흐름도를 참조하여 메모리 시스템(1000)에서 수행되는 본 발명의 실시 예에 따른 메모리 시스템에서의 라이트 동작 수행 방법을 설명하기로 한다.
CPU(1120)는 라이트 동작 모드에서 호스트 인터페이스(1160)를 통하여 RAM(1110)에 저장된 데이터를 제1사이즈 단위로 나누어 압축 처리부(1130)에 인가한다. 그러면, 압축 처리부(1130)는 제1사이즈 단위의 데이터를 압축 처리한다(S110). 예로서, 제1사이즈 단위는 ECC(Error Checking and Correction) 인코딩 처리 사이즈 단위로 결정할 수 있다. 그리고, 제1사이즈 단위는 섹터 사이즈 단위로 결정할 수도 있다.
도 23(a)~(e)를 참조하면, 도 23(a)에 도시된 바와 같은 제1사이즈 단위의 데이터(D1)를 압축 처리부(1130)에서 압축 처리하면 도 23(b)에 도시된 바와 같이 사이즈가 축소된 압축 데이터(D1')가 생성된다.
CPU(1120)는 압축 데이터(D1')에 기초하여 복수 유형의 오류 검사 정정용 정보들을 생성시키도록 메모리 시스템(1000)을 제어한다(S120).
예로서, CPU(1120)의 제어에 따라서 ECC 처리부(1150)는 복수개로 분할된 압축 데이터의 일부에 대하여 초기 설정된 무효 데이터를 부가하여 패딩 처리한 후에 1차적으로 ECC 인코딩 처리를 수행하여 제1유형의 오류 검사 정정용 정보인 제1패리티 정보를 생성시킬 수 있다. 그리고, CPU(1120)의 제어에 따라서 ECC 처리부(1150)는 제1패리티 정보가 생성된 부분의 압축 데이터, 제1패리티 정보 및, 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 정보에 대하여 2차적으로 ECC 인코딩 처리를 수행하여 제2유형의 오류 검사 정정용 정보인 제2패리티 정보를 생성시킬 수 있다.
CPU(1120)는 압축 처리부(1130)에서 생성된 압축 데이터 및 ECC 처리부(1150)에서 생성된 복수 유형의 오류 검사 정정용 정보들을 제2사이즈 단위로 조합하여 메모리 인터페이스(1170)로 전달한다(S130). 예로서, 제2사이즈 단위는 메모리 장치(1200)의 페이지 사이즈 단위로 결정할 수 있다. 예로서, 하나의 페이지에는 복수개의 섹터 데이터들이 저장될 수 있다.
CPU(1120)는 메모리 인터페이스(1170)로 전달한 제2사이즈 단위로 조합된 정보를 메모리 장치(1200)에 라이트하기 위한 제어 신호들을 생성시킨다(S140). 이에 따라서, 제2사이즈 단위가 페이지 사이즈 단위로 결정된 경우에, 조합된 압축 데이터 및 복수 유형의 오류 검사 정정용 정보들이 페이지 단위로 메모리 장치(1200)에 라이트된다.
도 9는 도 8에 도시된 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 9에 도시된 본 발명의 일실시 예에 따른 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120A)의 세부 흐름도에 따른 동작은 다음과 같다.
CPU(1120)는 압축 처리부(1130)에서 생성된 압축 데이터(D1')를 복수개로 분할한다(S121A). 도 23(a)~(d)를 참조하면, 압축 데이터(D1')를 2개로 분할하여 분할된 압축 데이터(D1'_1, D1'_2)가 생성되는 것을 보여준다. 본 발명의 일시 예에서는 압축 데이터를 2개로 분할하였으나, 3개 이상으로 분할 처리할 수도 있다.
CPU(1120)는 분할된 압축 데이터의 일부에 대하여 1차적으로 ECC 인코딩 처리하여 제1패리티 정보를 생성시키도록 ECC 처리부(1150)를 제어한다(S122A). 예로서, 압축 데이터를 2개로 분할할 경우에, 분할된 압축 데이터의 일부(D1'_1 또는 D1'_2)에 대하여 1차적으로 ECC 인코딩 처리하여 제1패리티 정보를 생성시킬 수 있다. 예로서, 도 23(a)~(e)에 도시된 바와 같이, 압축 데이터(D1')가 D1'_1 및 D1'_2로 분할된 경우에 분할된 압축 데이터의 일부분인 D1'_1에 대하여 1차적으로 ECC 인코딩 처리하여 제1패리티 정보(ECC1)를 생성시킬 수 있다.
CPU(1120)는 제1패리티 정보가 생성된 부분의 압축 데이터, 제1패리티 정보 및, 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 정보에 대하여 2차적으로 ECC 인코딩 처리를 수행하여 제2패리티 정보를 생성시키도록 ECC 처리부(1150)를 제어한다(S123A). 예로서, 도 23(e)에 도시된 바와 같이, 제1패리티 정보가 생성된 부분의 압축 데이터(D1'_1), 제1패리티 정보(ECC1), 제1패리티 정보(ECC1)가 생성되지 않은 부분의 압축 데이터(D1'_2)를 포함하는 정보에 대하여 제2패리티 정보(ECC2)를 생성시킬 수 있다.
도 10은 도 9에 도시된 제1패리티 정보를 생성시키는 단계(S122A)에 대한 일 실시 예에 따른 세부 흐름도이다.
CPU(1120)의 제어에 의하여 복수개로 분할된 압축 데이터의 일부에 패딩 정보를 부가하여 제1사이즈의 제1정보(INF1)를 생성시킨다(S122_1A). 예로서, 도 23(d)에 도시된 바와 같이, 분할된 압축 데이터의 일부분인 D1'_1에 패딩 정보(PAD)를 부가하여 제1사이즈의 제1정보(INF1)를 생성시킨다. 예로서, 제1정보는 ECC 처리부(1150)에서 생성시킬 수 있다. 다른 예로서, 제1정보는 CPU(1120)에서 생성시킬 수도 있다.
ECC 처리부(1150)는 제1정보를 ECC 인코딩 처리하여 제1패리티 정보(ECC1)를 생성시킨다(S122_2A). 예로서, 도 23(d)에 도시된 바와 같이, ECC 처리부(1150)는 분할된 압축 데이터의 일부인 D1'_1에 패딩 정보(PAD)가 부가된 제1사이즈의 제1정보(INF1)에 대한 제1패리티 정보(ECC1)를 생성시킬 수 있다.
도 11은 도 10에 도시된 제2패리티 정보를 생성시키는 단계(S123A)에 대한 일 실시 예에 따른 세부 흐름도이다.
CPU(1120)의 제어에 의하여 제1패리티 정보가 생성된 부분의 압축 데이터, 제1패리티 정보(ECC1) 및, 제1패리티 정보(ECC1)가 생성되지 않은 부분의 압축 데이터를 포함하는 정보에 패딩 정보를 부가하여 제1사이즈의 제2정보를 생성시킨다(S123_1A). 예로서, 도 23(e)에 도시된 바와 같이, 제1패리티 정보가 생성된 부분의 압축 데이터(D1'_1), 제1패리티 정보(ECC1) 및, 제1패리티 정보(ECC1)가 생성되지 않은 부분의 압축 데이터(D1'_2)에 패딩 정보(PAD) 정보를 부가하여 제1사이즈의 제2정보(INF2)를 생성시킨다. 예로서, 제2정보(INF2)는 ECC 처리부(1150)에서 생성시킬 수 있다. 다른 예로서, 제2정보(INF2)는 CPU(1120)에서 생성시킬 수도 있다.
ECC 처리부(1150)는 제2정보(INF2)를 ECC 인코딩 처리하여 제2패리티 정보(ECC2)를 생성시킨다(S123_2A). 예로서, 도 21(e)에 도시된 바와 같이, ECC 처리부(1150)는 (D1'_1 + ECC1 + D1'_2 + PAD)에 대한 제2패리티 정보(ECC2)를 생성시킬 수 있다.
도 12는 도 8에 도시된 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120)에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 12에 도시된 본 발명의 다른 실시 예에 따른 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120B)의 세부 흐름도에 따른 동작은 다음과 같다.
CPU(1120)의 제어에 의하여 압축 처리부(1130)에서 생성된 부분의 압축 데이터(D1')에 패딩 정보를 부가하여 제1사이즈 단위의 제3정보(INF3)를 생성한다(S121B). 도 24(a)~(d)를 참조하면, 압축 처리부(1130)는 제1사이즈 단위로 입력된 데이터(D1)를 압축 처리하여 압축된 데이터(D1')를 생성한다. 그리고, 압축된 데이터(D1')에 패딩 정보(PAD)를 부가하여 제1사이즈 단위의 제3정보(INF3)를 생성한다. 예로서, 제3정보(INF3)는 ECC 처리부(1150)에서 생성시킬 수 있다. 다른 예로서, 제3정보(INF1')는 CPU(1120)에서 생성시킬 수도 있다.
ECC 처리부(1150)는 제3정보(INF3)에 대하여 ECC 인코딩 처리하여 제3패리티 정보(ECC3)를 생성시킨다(S122B). 도 24(c)를 참조하면, ECC 처리부(1150)는 (D1' + PAD)에 대한 제3패리티 정보(ECC3)를 생성시킬 수 있다.
CPU(1120)의 제어에 의하여 ECC 처리부(1150)는 제3패리티 정보(ECC3)가 생성된 복수의 제1사이즈 단위의 정보들에 대한 레이드 패리티 정보를 생성한다(S123B). 예로서, 레이드 패리티 정보는 복수의 제1사이즈 단위의 정보들로부터 각각 하나의 비트 값을 배타적 논리합(XOR) 연산 처리하여 생성시킬 수 있다. 도 24(d)에 도시된 바와 같이, n개의 제1사이즈 단위의 정보들(INF1' ~ INFn')의 해당 비트 값들을 배타적 논리합(XOR) 연산 처리하여 레이드 패리티 정보를 생성시킬 수 있다. 예로서, n은 메모리 장치(1200)의 하나의 페이지에 저장되는 섹터들의 개수로 결정될 수 있다. 그리고, 레이드 패리티 정보는 페이지 단위로 생성시킬 수 있다.
도 13은 도 8에 도시된 라이트 동작 수행 방법의 흐름도에 메타 데이터 생성 단계(S130_1)를 추가한 흐름도이다.
CPU(1120)는 단계130(S130)을 수행하고 나서, 단계140(S140)을 수행하기 전에 메타 데이터 생성 단계(S130_1)를 수행하도록 메모리 시스템(1000)을 제어한다.
CPU(1120)는 단계130(S130)을 수행하고 나서, 제2사이즈 단위로 조합된 정보에 대한 속성 정보가 포함된 메타 데이터를 생성한다(S130_1). 예로서, 속성 정보는 복수 유형의 오류 검사 정정용 정보들을 생성시키는데 이용된 정보 또는 제1,2사이즈 단위의 정보를 생성시키는데 이용된 패딩 사이즈 정보가 포함될 수 있다. 세부적으로, 속성 정보에는 압축 데이터를 분할하는 개수에 대한 정보, 제1패리티 정보(ECC1)가 저장되는 위치 정보, 분할된 압축 데이터의 일부인 D1'_2가 저장되는 위치 정보 등이 포함될 수 있다.
도 9에 도시된 바와 같은 본 발명의 일실시 예에 따른 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120A)를 적용하는 경우에, 메모리 장치(1200)의 하나의 페이지에 저장되는 데이터 구조의 다양한 예들을 도 25(a) ~ (d)에 도시하였다.
도 25(a)에는 하나의 페이지에 저장되는 데이터의 구조의 일 예를 보여준다.
도 25(a)에 도시된 바와 같이, 하나의 페이지에는 복수개의 섹터 데이터(S1 ~ Sn)와 메타 데이터(Meta data)가 저장될 수 있다. 예로서, 섹터 사이즈는 메모리 컨트롤러(1100)의 ECC 인코딩 처리 사이즈와 동일하게 설정될 수 있다.
도 25(b)에는 하나의 섹터에 저장되는 데이터의 구조의 일 예를 보여준다. 도 25(b)에 도시된 바와 같이, 각각의 섹터에는 2개로 분할된 압축 데이터의 일부분인 D1'_1, 제1패리티 정보(ECC1), 2개로 분할된 압축 데이터의 나머지 부분인 D1'_2, 패딩 정보(PAD), 제2패리티 정보(ECC2) 순으로 저장될 수 있다.
도 25(c)에는 하나의 섹터에 저장되는 데이터의 구조의 다른 예를 보여준다. 도 25(c)에 도시된 바와 같이, 각각의 섹터에는 2개로 분할된 압축 데이터의 일부인 D1'_1, 2개로 분할된 압축 데이터 중의 나머지 부분인 D1'_2, 패딩 정보(PAD), 제1패리티 정보(ECC1), 제2패리티 정보(ECC2) 순으로 저장될 수 있다.
도 25(d)에는 하나의 섹터에 저장되는 데이터의 구조의 다른 예를 보여준다. 도 25(d)에 도시된 바와 같이, 각각의 섹터에는 2개로 분할된 압축 데이터의 일부인 D1'_1, 2개로 분할된 압축 데이터의 나머지 부분인 D1'_2, 제1패리티 정보(ECC1), 패딩 정보(PAD), 제2패리티 정보(ECC2) 순으로 저장될 수 있다.
도 12에 도시된 바와 같은 본 발명의 실시 예에 따른 복수 유형의 오류 검사 정정용 정보들을 생성시키는 단계(S120B)를 적용하는 경우에, 메모리 장치(1200)의 하나의 페이지에 저장되는 데이터 구조의 예를 도 26(a) ~ (b)에 도시하였다.
도 26(a)에는 하나의 페이지에 저장되는 데이터의 구조의 일 예를 보여준다.
도 26(a)에 도시된 바와 같이, 하나의 페이지에는 복수개의 섹터 데이터(S1 ~ Sn), 패딩 정보(PAD), 레이드 패리티 정보(RAID Parity) 및, 메타 데이터(Meta data)가 저장될 수 있다. 예로서, 섹터 사이즈는 메모리 컨트롤러(1100)의 ECC 인코딩 처리 사이즈와 동일하게 설정될 수 있다.
도 26(b)에는 하나의 섹터에 저장되는 데이터의 구조의 일 예를 보여준다. 도 26(b)에 도시된 바와 같이, 각각의 섹터에는 각 섹터에 대한 압축 데이터(D1')와 제3패리티 정보(ECC3)가 저장될 수 있다. 도 26(b)를 참조하면, 각 섹터에는 데이터 압축에 의한 여유 저장 영역이 패딩 정보로 채워지지 않고 압축 데이터와 에러 검사 정정용 정보(제3패리티 정보)가 저장된다는 사실을 알 수 있다. 데이터 압축으로 발생되는 여유 저장 영역에 패딩 정보를 라이트하지 않으므로 섹터 데이터 저장 공간은 줄어들게 된다. 이와 같이 섹터 데이터들의 압축을 통하여 확보된 저장 영역에 레이드 패리티 정보를 한다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템에서의 리드 동작 수행 방법의 흐름도이다.
CPU(1120)의 제어에 의하여 리드 동작 모드에서 메모리 장치(1200)로부터 독출된 데이터를 메모리 컨트롤러(1100)에서 수신한다(S210). 예로서, 독출 요구된 페이지에 대응되는 메모리 장치(1120)의 워드라인에 접속된 메모리 셀들로부터 독출된 데이터를 메모리 컨트롤러(1100)는 전송받을 수 있다. 예로서, 메모리 컨트롤러(1100)는 메모리 장치(1200)로부터 페이지 단위의 도 27(a)와 같은 독출 데이터를 전송받을 수 있다. 다른 예로서, 메모리 컨트롤러(1100)는 메모리 장치(1200)로부터 페이지 단위의 도 28(a)와 같은 독출 데이터를 전송받을 수도 있다.
CPU(1120)는 독출 데이터에 포함된 복수 유형의 오류 검사 정정용 정보들에 기초하여 독출 데이터에 포함된 압축 데이터에 대하여 적어도 1회 이상의 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S220). 예로서, CPU(1120)는 독출 데이터에 포함된 복수 유형의 오류 정정용 정보들 중의 제1유형의 오류 검사 정정용 정보에 기초하여 독출 데이터에 포함된 압축 데이터에 대한 1차 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어할 수 있다. 그리고, CPU(1120)는 1차 오류 검사 정정 처리 결과 오류 정정에 실패하는 경우에, 복수 유형의 오류 검사 정정용 정보들 중의 제2유형의 오류 검사 정정 정보에 기초하여 독출 데이터에 포함된 압축 데이터에 대한 2차 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어할 수 있다.
CPU(1120)는 단계220(S220)을 수행하고 나서, 오류 검사 정정 처리된 압축 데이터에 대하여 압축 해제 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S230). 예로서, ECC 처리부(1150)에서 오류 검사 정정 처리된 압축 데이터는 압축 해제 처리부(1140)로 전달된다. 그러면, 압축 해제 처리부(1140)는 압축 데이터에 대하여 압축 해제 처리를 수행한다.
도 15는 도 14에 도시된 오류 검사 정정 처리 단계(S220)에 대한 일 실시 예에 따른 세부 흐름도이다.
CPU(1120)는 독출 데이터에서 추출된 제1유형의 오류 검사 정정용 정보에 기초하여 독출 데이터에 포함된 압축 데이터에 대한 1차 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S221).
CPU(1120)는 제1유형의 오류 검사 정정용 정보에 기초한 1차 오류 검사 정정에 성공했는지를 판단한다(S222). CPU(1120)는 단계222(S222)의 판단 결과 1차 오류 검사 정정에 성공한 경우에는 단계230(S230)을 수행하도록 메모리 시스템(1000)을 제어한다.
CPU(1120)는 단계222(S222)의 판단 결과 1차 오류 검사 정정에 실패한 경우에, 독출 데이터에서 추출된 제2유형의 오류 검사 정정용 정보에 기초하여 독출 데이터에 포함된 압축 데이터에 대한 2차 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S223). 추가적인 예로서, 2차 오류 검사 정정 처리 결과를 반영한 후에 제1유형의 오류 검사 정정용 정보에 기초한 1차 오류 검사 정정 처리를 다시 수행할 수도 있다.
도 16은 도 15에 도시된 1차 오류 검사 정정 처리 단계(S221)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 16에 도시된 본 발명의 일실시 예에 따른 1차 오류 검사 정정 처리 단계(S221A)는 도 27(a)와 같은 타입의 독출 데이터를 전송받는 경우에 수행될 수 있다.
도 27(a) ~ (d)를 참조하면, 도 27(a)에는 메모리 장치(1200)로부터 전송받은 하나의 페이지에 대한 독출 데이터의 구조가 도시되어 있다. 도 27(a)에 도시된 바와 같이, 예로서, 하나의 페이지에 대한 독출 데이터에는 복수의 섹터 데이터(S1 ~ Sn) 및 메타 데이터(Meta data)가 포함된다. 예로서, 각각의 섹터 데이터에는 2개로 분할된 압축 데이터의 일부인 D1'_1, 제1패리티 정보(ECC1), 2개로 분할된 압축 데이터의 나머지 부분인 D1'_2 및, 제2패리티 정보(ECC2)가 포함될 수 있다.
CPU(1120)는 섹터 단위의 독출 데이터로부터 제2패리티 정보(ECC2)를 추출하도록 메모리 시스템(1000)을 제어한다(S221_1A).
CPU(1120)는 독출 데이터로부터 제1패리티 정보(ECC1)가 생성된 부분의 압축 데이터(D1'_1), 제1패리티 정보(ECC1) 및, 제1패리티 정보가 생성되지 않은 부분의 압축 데이터(D1'_2)를 포함하는 제1사이즈 단위의 제2정보(INF2)를 생성시키도록 메모리 시스템(1000)을 제어한다(S221_2A). 예로서, 도 27(b)에 도시된 바와 같이, (D1'_1 + ECC1 + D1'_2)에 패딩 정보(PAD)를 부가하여 ECC 처리 사이즈의 제2정보(INF2)를 생성시킨다.
CPU(1120)는 제2패리티 정보(ECC2)에 기초하여 단계221_2A(S221_2A)에서 생성된 제2정보(INF2)에 대한 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S221_3A). 예로서, ECC 처리부(1150)는 제2정보(INF2)인 (D1'_1 + ECC1 + D1'_2 + PAD)를 제2패리티 정보(ECC2)에 기초하여 오류 검사 정정 처리를 수행할 수 있다.
도 17은 도 15에 도시된 2차 오류 검사 정정 처리 단계(S223)에 대한 일 실시 예에 따른 세부 흐름도이다.
도 17에 도시된 본 발명의 일실시 예에 따른 2차 오류 검사 정정 처리 단계(S231A)는 도 27(a)와 같은 타입의 독출 데이터를 전송받는 경우에 수행될 수 있다.
CPU(1120)는 섹터 단위의 독출 데이터로부터 제1패리티 정보(ECC1)를 추출하도록 메모리 시스템(1000)을 제어한다(S223_1A).
CPU(1120)는 독출 데이터로부터 제1패리티 정보(ECC1)가 생성된 부분의 압축 데이터(D1'_1)에 패딩 정보(PAD)를 부가하여 제1사이즈의 제1정보를 생성시키도록 메모리 시스템(1000)을 제어한다(S223_2A). 예로서, 도 27(c)에 도시된 바와 같이, D1'_1 에 패딩 정보(PAD)를 부가하여 ECC 인코딩 처리 사이즈의 제1정보(INF1)를 생성시킨다.
CPU(1120)는 제1패리티 정보(ECC1)에 기초하여 제1정보(INF1)에 대한 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S223_3A). 예로서, ECC 처리부(1150)는 제1정보(INF1)인 (D1'_1 + PAD)를 제1패리티 정보(ECC1)에 기초하여 오류 검사 정정 처리를 수행할 수 있다.
도 18은 도 17에 도시된 2차 오류 검사 정정 처리 단계(S223A)에 따른 2차 오류 검사 정정 처리된 결과를 이용하여 1차 오류 검사 정정 처리를 다시 수행하는 방법을 보여주는 흐름도이다.
CPU(1120)는 2차 오류 검사 정정 처리된 부분의 압축 데이터(D1'_1_COR), 제1패리티 정보(ECC1) 및 제1패리티 정보(ECC1)가 생성되지 않은 부분의 압축 데이터(D1'_2)를 포함하는 제1사이즈의 제2'정보(INF2')를 생성시킨다(S224). D1'_1_COR는 도 17에 도시된 2차 오류 검사 정정 처리 단계(S231A)에서 압축 데이터의 일부인 D1'_1에 대한 오류 정정 처리된 정보를 나타낸다. 예로서, 도 27(d)에 도시된 바와 같이, (D1'_1_COR + ECC1 + D1'_2)에 패딩 정보(PAD)를 부가하여 ECC 인코딩 처리 사이즈의 제2'정보(INF2')를 생성시킬 수 있다.
CPU(1120)는 제2패리티 정보(ECC2)에 기초하여 제2'정보(INF2')에 대한 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S225). 예로서, ECC 처리부(1150)는 제2'정보(INF2')인 (D1'_1_COR + ECC1 + D1'_2 + PAD)를 제2패리티 정보(ECC2)에 기초하여 오류 검사 정정 처리를 수행할 수 있다.
도 19는 도 15에 도시된 1차 오류 검사 정정 처리 단계(S221)에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 19에 도시된 본 발명의 다른 실시 예에 따른 1차 오류 검사 정정 처리 단계(S221B)는 도 28(a)와 같은 타입의 독출 데이터를 전송받는 경우에 수행될 수 있다.
도 28(a) ~ (b)를 참조하면, 도 28(a)에는 메모리 장치(1200)로부터 전송받은 하나의 페이지에 대한 독출 데이터의 구조가 도시되어 있다. 도 28(a)에 도시된 바와 같이, 예로서, 하나의 페이지에 대한 독출 데이터에는 복수의 섹터 데이터(S1 ~ Sn), 패딩 정보(PAD), 레이드 패리티 정보(RAID Parity) 및, 메타 데이터(Meta data)가 포함된다. 예로서, 도 28(b)에 도시된 바와 같이, 각각의 섹터 데이터에는 압축 데이터(D1')와 제3패리티 정보(ECC3)가 포함될 수 있다.
CPU(1120)는 섹터 단위의 독출 데이터로부터 제3패리티 정보(ECC3)를 추출하도록 메모리 시스템(1000)을 제어한다(S221_1B).
CPU(1120)는 독출 데이터로부터 섹터 단위로 제3패리티 정보(ECC3)가 생성된 압축 데이터(D1')에 패딩 정보를 부가하여 제1사이즈의 제3정보를 생성시킨다(S221_2B). 예로서, 도 28(c)에 도시된 바와 같이, 압축 데이터 (D1')에 패딩 정보(PAD)를 부가하여 ECC 인코딩 처리 사이즈의 제3정보(INF3)를 생성시킬 수 있다.
CPU(1120)는 제3패리티 정보(ECC3)에 기초하여 제3정보(INF3)에 대한 오류 검사 정정 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S221_3B). 예로서, ECC 처리부(1150)는 제3정보(INF3)인 (D1' + PAD)를 제3패리티 정보(ECC3)에 기초하여 오류 검사 정정 처리를 수행할 수 있다.
도 20은 도 15에 도시된 2차 오류 검사 정정 처리 단계(S223)에 대한 다른 실시 예에 따른 세부 흐름도이다.
도 20에 도시된 본 발명의 다른 실시 예에 따른 2차 오류 검사 정정 처리 단계(S223B)는 도 28(a)와 같은 타입의 독출 데이터를 전송받는 경우에 수행될 수 있다.
CPU(1120)는 페이지 단위의 독출 데이터로부터 레이드 패리티 정보(RAID Parity)를 추출하도록 메모리 시스템(1000)을 제어한다(S223_1B). 예로서, 도 28(a)에 도시된 바와 같이, 페이지 단위로 독출된 데이터로부터 레이드 패리티 정보를 추출할 수 있다.
CPU(1120)는 레이드 패리티 정보를 이용하여 1차 오류 검사 정정에 실패한 압축 데이터에 대한 복원 처리를 수행하도록 메모리 시스템(1000)을 제어한다(S223_2B). 예로서, 도 28(a)를 참조하면, 하나의 페이지를 구성하는 복수개의 섹터 데이터(S1 ~ Sn) 중에서 오류 검사 정정 처리에 실패한 하나의 섹터 데이터를 레이드 패리티 정보를 이용하여 복원 처리할 수 있다. 예로서, ECC 처리부(1150)는 섹터 데이터 S2에 대한 오류 검사 정정 처리에서 실패한 경우에는, 오류 검사 정정 처리에 실패한 섹터 데이터를 제외한 나머지 섹터 데이터들(S1, S3 ~ Sn)과 레이드 패리티 정보를 이용하여 섹터 데이터 S2를 복원 처리한다.
예로서, ECC 처리부(1150)는 섹터 데이터들(S1, S3 ~ Sn)과 레이드 패리티 정보들의 해당 비트 값들을 배타적 논리합(XOR) 연산 처리하여 섹터 데이터 S2를 복원할 수 있다.
도 29는 본 발명의 실시 예들에 따른 메모리 시스템을 메모리 카드에 적용한 예를 나타내는 블록도이다.
도 29를 참조하면, 메모리 카드 시스템(2000)은 호스트(2100) 및 메모리 카드(2200)를 포함할 수 있다. 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 접속부(2120)를 포함할 수 있다. 메모리 카드(2200)는 카드 접속부(2210), 카드 컨트롤러(2220) 및 메모리 장치(2230)를 포함할 수 있다.
호스트(2100)는 메모리 카드(2200)에 데이터를 기입하거나, 메모리 카드(2200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(2110)는 커맨드(CMD), 호스트(2100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(2120)를 통해 메모리 카드(2200)로 전송할 수 있다.
카드 컨트롤러(2220)는 카드 접속부(2210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 장치(2230)에 저장할 수 있다. 메모리 장치(2230)는 호스트(2100)로부터 전송된 데이터를 저장할 수 있다. 이때, 카드 컨트롤러(2220)는 도 1 또는 도 7에 도시된 바와 같은 메모리 컨트롤러(10 또는 1100)로 구현할 수 있다.
메모리 카드(2200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 30은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 30을 참조하면, 컴퓨팅 시스템(3000)은 프로세서(3100), RAM(3200), 입출력 장치(3300), 전원 장치(3400) 및 메모리 시스템(1000)을 포함할 수 있다. 한편, 도 38에는 도시되지 않았지만, 컴퓨팅 시스템(3000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(3000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(3100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(3100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(3100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(3500)를 통하여 RAM(3200), 입출력 장치(3300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시예에 따라, 프로세서(3100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(3200)는 컴퓨팅 시스템(3000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(3200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(3300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(3400)는 컴퓨팅 시스템(3000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 31은 본 발명의 실시 예들에 따른 메모리 시스템을 SSD에 적용한 예를 나타내는 블록도이다.
도 31을 참조하면, SSD 시스템(4000)은 호스트(4100) 및SSD(4200)를 포함할 수 있다.SSD(4200)는 신호 커넥터(signal connector)(4211)를 통해 호스트(4100)와 신호를 주고 받으며, 전원 커넥터(power connector)(4221)를 통해 전원을 입력 받는다. SSD(4200)는 SSD 컨트롤러(4210), 보조 전원 장치(4220) 및 복수의 메모리 장치들(4230, 4240, 4250)을 포함할 수 있다. 이때, SSD 컨트롤러(4210)는 도 1 또는 도 7에 도시된 바와 같은 메모리 컨트롤러(10 또는 1100)로 구현할 수 있다.
도 32는 도 31의 SSD를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 블록도이다.
도 32를 참조하면, 본 발명의 실시예에 따른 네트워크 시스템(5000)은 네트워크(5200)를 통해 연결되는 서버 시스템(5100) 및 다수의 단말들(5300, 5400, 5500)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(5100)은 네트워크(5200)에 연결되는 다수의 단말들(5300, 5400, 5500)로부터 수신되는 요청을 처리하는 서버(5110) 및 단말들(5300, 5400, 5500)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(5120)를 포함할 수 있다. 이때, SSD(5120)는 도 31의 SSD(4000)일 수 있다.
한편, 상기에서 설명된 본 발명에 따른 플래시 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 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 MetricQuad 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 1000 : 메모리 시스템 10, 1100 : 메모리 컨트롤러
20, 1200 : 메모리 장치 11, 1120 : CPU
12, 1130 : 압축 처리부 13, 1140 : 압축 해제 처리부
14, 1150 : ECC 처리부 21 : 메모리 셀 어레이
22 : 제어 로직 23 : 전압 발생기
24 : 로우 디코더 25 : 페이지 버퍼
1110 : RAM 1160 : 호스트 인터페이스
1170 : 메모리 인터페이스 1180 : 버스

Claims (10)

  1. 제1사이즈 단위의 데이터를 압축하는 단계;
    상기 압축된 데이터에 기초하여 복수 유형의 오류 검사 정정용 정보들을 생성하는 단계;
    상기 압축된 데이터 및 상기 복수 유형의 오류 검사 정정용 정보들을 제2사이즈 단위로 조합하는 단계; 및
    상기 제2사이즈 단위로 조합된 정보를 메모리 장치에 라이트하는 단계를 포함하며,
    상기 복수 유형의 오류 검사 정정용 정보들을 생성하는 단계;는,
    상기 압축된 데이터를 복수의 부분들로 나누는 단계;
    상기 복수의 부분들 중 제1 부분에 대하여, 제1 유형의 오류 검사 정정용 정보를 생성하는 단계; 및
    상기 제1 부분, 상기 제1 유형의 오류 검사 정정용 정보 및 상기 제1 유형의 오류 검사 정정용 정보가 생성되지 않은 상기 복수의 부분들 중 제2 부분에 대하여, 제2 유형의 오류 검사 정정용 정보를 생성하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  2. 제1항에 있어서, 상기 제1 유형의 오류 검사 정정용 정보는, 상기 제1 부분에 대해 1차적으로 ECC 인코딩 처리를 수행하여 생성된 제1 패리티 정보를 포함하며,
    상기 제2 유형의 오류 검사 정정용 정보는, 상기 제2 부분에 대해 2차적으로 ECC 인코딩 처리를 수행하여 생성된 제2 패리티 정보를 포함하는 것을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  3. 제1항에 있어서, 상기 복수 유형의 오류 검사 정정용 정보들을 생성하는 단계는
    상기 압축된 데이터에 초기 설정된 패딩 정보를 부가하여 제1사이즈 단위의 제3정보를 생성하는 단계;
    상기 제3정보를 ECC 인코딩 처리하여 제3패리티 정보를 생성하는 단계; 및
    상기 제3패리티 정보가 생성된 복수의 제1사이즈 단위의 정보들에 대한 레이드(RAID) 패리티 정보를 생성하는 단계를 포함하고,
    상기 레이드 패리티 정보는 상기 복수의 제1사이즈 단위의 정보들 중 오류 정정 불능인 하나의 제1사이즈 단위의 정보를 복원 가능하도록 생성되는 것을 특징으로 하는 메모리 시스템에서의 라이트 동작 수행 방법.
  4. 데이터 독출 요구에 기초하여 메모리 장치로부터 독출 데이터를 전송받는 단계;
    상기 독출 데이터에 포함된 복수 유형의 오류 검사 정정용 정보들에 기초하여 상기 독출 데이터에 포함된 압축 데이터에 대하여 적어도 1회 이상의 오류 검사 정정 처리를 수행하는 단계; 및
    상기 오류 검사 정정 처리된 압축 데이터에 대하여 압축 해제 처리를 수행하는 단계를 포함하며,
    상기 복수 유형의 오류 검사 정정용 정보들은,
    상기 압축 데이터의 제1 부분에 대한 제1 유형의 오류 검사 정정용 정보; 및 상기 압축 데이터의 제1 부분, 상기 제1 유형의 오류 검사 정정용 정보 및 상기 제1 유형의 오류 검사 정정용 정보가 생성되지 않은 상기 압축된 데이터의 제2 부분에 대한 제2 유형의 오류 검사 정정용 정보;를 포함하는 것을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
  5. 제4항에 있어서, 상기 오류 검사 정정 처리를 수행하는 단계는
    상기 제1 유형의 오류 검사 정정용 정보에 기초하여 상기 독출 데이터에 포함된 압축 데이터에 대한 1차 오류 검사 정정 처리를 수행하는 단계; 및
    상기 1차 오류 검사 정정 처리 결과 오류 정정에 실패하면, 상기 제2 유형의 오류 검사 정정 정보에 기초하여 상기 독출 데이터에 포함된 압축 데이터에 대한 2차 오류 검사 정정 처리를 수행하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
  6. 제5항에 있어서, 상기 1차 오류 검사 정정 처리를 수행하는 단계는
    상기 독출 데이터로부터 제2패리티 정보를 추출하는 단계;
    상기 독출 데이터로부터 제1패리티 정보가 생성된 부분의 압축 데이터, 상기 제1패리티 정보 및, 상기 제1패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 제1사이즈 단위의 제2정보를 생성하는 단계; 및
    상기 제2패리티 정보에 기초하여 상기 제2정보에 대한 오류 검사 정정 처리를 수행하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
  7. 제5항에 있어서, 상기 2차 오류 검사 정정 처리를 수행하는 단계는
    상기 1차 오류 검사 정정 처리 결과 오류 정정에 실패하는 경우에, 상기 독출 데이터로부터 제1 패리티 정보를 추출하는 단계;
    상기 독출 데이터로부터 제1패리티 정보가 생성된 부분의 압축 데이터에 초기 설정된 패딩 정보를 부가하여 제1사이즈의 제1정보를 생성하는 단계; 및
    상기 제1패리티 정보에 기초하여 상기 제1정보에 대한 오류 검사 정정 처리를 수행하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
  8. 제7항에 있어서, 상기 2차 오류 검사 정정 처리된 부분의 압축 데이터, 상기 제1 패리티 정보 및, 상기 제1 패리티 정보가 생성되지 않은 부분의 압축 데이터를 포함하는 제1 사이즈 단위의 제2 정보를 생성시키는 단계; 및
    상기 독출 데이터로부터 추출된 제2 패리티 정보에 기초하여 상기 제2 정보에 대한 오류 검사 정정 처리를 수행하는 단계를 더 포함함을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
  9. 제5항에 있어서, 상기 1차 오류 검사 정정 처리를 수행하는 단계는
    상기 독출 데이터로부터 제3 패리티 정보를 추출하는 단계;
    상기 제3 패리티 정보가 생성된 압축 데이터를 추출하고, 상기 압축 데이터에 초기 설정된 패딩 정보를 부가하여 제1 사이즈의 제3 정보를 생성하는 단계; 및
    상기 제3 패리티 정보에 기초하여 상기 제3 정보에 대한 오류 검사 정정 처리를 수행하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
  10. 제5항에 있어서, 상기 2차 오류 검사 정정 처리를 수행하는 단계는 상기 1차 오류 검사 정정 처리를 수행한 결과에 기초하여 오류 정정에 실패한 압축 데이터를 상기 독출 데이터에 포함된 레이드 패리티 정보를 이용하여 복원 처리하는 것을 특징으로 하는 메모리 시스템에서의 리드 동작 수행 방법.
KR1020120111381A 2012-10-08 2012-10-08 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 KR102081980B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120111381A KR102081980B1 (ko) 2012-10-08 2012-10-08 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US14/048,751 US9158617B2 (en) 2012-10-08 2013-10-08 Method of performing write operation or read operation in memory system and system thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120111381A KR102081980B1 (ko) 2012-10-08 2012-10-08 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법

Publications (2)

Publication Number Publication Date
KR20140046597A KR20140046597A (ko) 2014-04-21
KR102081980B1 true KR102081980B1 (ko) 2020-02-27

Family

ID=50433746

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120111381A KR102081980B1 (ko) 2012-10-08 2012-10-08 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법

Country Status (2)

Country Link
US (1) US9158617B2 (ko)
KR (1) KR102081980B1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150067436A1 (en) * 2013-09-03 2015-03-05 Sandisk Technologies Inc. Nonvolatile Memory System Compression
US9160371B2 (en) * 2013-09-05 2015-10-13 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
KR101675371B1 (ko) 2014-12-23 2016-11-11 한국철도기술연구원 2층 승객용 비상탈출장치를 갖는 이층 고속열차
US10303622B2 (en) 2015-03-06 2019-05-28 Hewlett Packard Enterprise Development Lp Data write to subset of memory devices
KR101711056B1 (ko) * 2015-04-02 2017-02-28 한국외국어대학교 연구산학협력단 에러 정정 코드 생성방법 및 장치
US9971523B2 (en) * 2016-03-10 2018-05-15 Toshiba Memory Corporation Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system
US10437667B2 (en) * 2016-03-29 2019-10-08 International Business Machines Corporation Raid system performance enhancement using compressed data
US10037245B2 (en) * 2016-03-29 2018-07-31 International Business Machines Corporation Raid system performance enhancement using compressed data and byte addressable storage devices
KR101889864B1 (ko) * 2016-06-13 2018-08-21 주식회사 래코랩 압축률을 이용한 낸드 플래시 메모리 컨트롤러 및 이를 이용한 낸드 플래시 메모리 저장 방법
US10180875B2 (en) 2016-07-08 2019-01-15 Toshiba Memory Corporation Pool-level solid state drive error correction
US10275165B2 (en) * 2016-09-12 2019-04-30 Toshiba Memory Corporation Memory controller
KR102468721B1 (ko) * 2017-12-20 2022-11-21 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
JP2019168897A (ja) 2018-03-23 2019-10-03 東芝メモリ株式会社 メモリシステム
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
KR102139826B1 (ko) * 2018-12-27 2020-07-31 한양대학교 산학협력단 플래시 메모리 저장장치 저장 장치 및 그 구동 방법
US11204716B2 (en) * 2019-01-31 2021-12-21 EMC IP Holding Company LLC Compression offloading to RAID array storage enclosure
TWI740187B (zh) * 2019-02-20 2021-09-21 慧榮科技股份有限公司 存取方法
US11137921B2 (en) 2019-03-05 2021-10-05 Samsung Electronics Co., Ltd. Data storage device and system
US11055188B2 (en) 2019-04-12 2021-07-06 EMC IP Holding Company LLC Offloading error processing to raid array storage enclosure
US20230281124A1 (en) * 2020-08-06 2023-09-07 Alibaba Group Holding Limited Memory controller
US11847022B2 (en) * 2022-03-07 2023-12-19 International Business Machines Corporation Computation and placement of error correcting codes (ECC) in a computing system data cache
US20230352112A1 (en) * 2022-04-27 2023-11-02 Micron Technology, Inc. Apparatuses, systems, and methods for per row error scrub information registers
US11757472B1 (en) * 2022-05-16 2023-09-12 Seagate Technology Llc Coarse interleaving
CN116343890B (zh) * 2023-05-31 2023-07-25 深圳大普微电子科技有限公司 纠错单元管理方法、存储控制芯片及闪存设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037281A1 (en) * 1993-06-04 2003-02-20 Network Appliance, Inc. Providing parity in a raid sub-system using non-volatile memory
US20110289380A1 (en) * 2010-05-21 2011-11-24 Wilkerson Christopher B Method and apparatus for using cache memory in a system that supports a low power state

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159336A (en) * 1991-08-13 1992-10-27 Iomega Corporation Tape controller with data compression and error correction sharing a common buffer
KR0135873B1 (ko) 1992-03-14 1998-05-15 강진구 디지탈 자기기록재생방법 및 장치
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
KR100285109B1 (ko) 1993-04-27 2001-03-15 윤종용 디지탈 영상데이타 처리방법
JP3787934B2 (ja) 1996-12-16 2006-06-21 ソニー株式会社 再生装置
FR2837332A1 (fr) 2002-03-15 2003-09-19 Thomson Licensing Sa Dispositif et procede d'insertion de codes de correction d'erreurs et de reconstitution de flux de donnees, et produits correspondants
US6775751B2 (en) 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US20040083334A1 (en) 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US7133228B2 (en) 2003-10-10 2006-11-07 Seagate Technology Llc Using data compression to achieve lower linear bit densities on a storage medium
US7225297B2 (en) 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US8515249B2 (en) 2005-10-17 2013-08-20 Mediatek Inc. Methods and apparatus for creating and playing a playable unfinalized recordable disc
US7809994B2 (en) 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
KR20090087119A (ko) * 2006-12-06 2009-08-14 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 빈 데이터 토큰 지시어를 사용한 저장 장치 내의 데이터 관리 장치, 시스템 및 방법
US7877665B2 (en) * 2006-12-29 2011-01-25 Sandisk Corporation Page by page ECC variation in a memory device
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8316277B2 (en) * 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
JP5007676B2 (ja) * 2008-01-31 2012-08-22 富士通株式会社 符号化装置、復号化装置、符号化・復号化装置及び記録再生装置
US8347023B2 (en) 2008-10-06 2013-01-01 Marvell World Trade Ltd. Compression based wear leveling for non-volatile memory
US8261174B2 (en) 2009-01-13 2012-09-04 International Business Machines Corporation Protecting and migrating memory lines
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
WO2011002438A1 (en) * 2009-06-29 2011-01-06 Hewlett-Packard Development Company, L.P. Organizing and managing a memory blade with super pages and buffers
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
KR20110073932A (ko) * 2009-12-24 2011-06-30 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
JP4922433B2 (ja) 2010-05-31 2012-04-25 株式会社東芝 磁気ディスク装置及びデータブロックの書き換え方法
US8495464B2 (en) * 2010-06-28 2013-07-23 Intel Corporation Reliability support in memory systems without error correcting code support
US20110320910A1 (en) * 2010-06-29 2011-12-29 Yi-Chun Liu Storage management method and storage system
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8484543B2 (en) * 2011-08-08 2013-07-09 International Business Machines Corporation Fusebay controller structure, system, and method
KR101730497B1 (ko) * 2011-11-04 2017-04-27 삼성전자 주식회사 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
US9246511B2 (en) * 2012-03-20 2016-01-26 Sandisk Technologies Inc. Method and apparatus to process data based upon estimated compressibility of the data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037281A1 (en) * 1993-06-04 2003-02-20 Network Appliance, Inc. Providing parity in a raid sub-system using non-volatile memory
US20110289380A1 (en) * 2010-05-21 2011-11-24 Wilkerson Christopher B Method and apparatus for using cache memory in a system that supports a low power state

Also Published As

Publication number Publication date
US9158617B2 (en) 2015-10-13
US20140101514A1 (en) 2014-04-10
KR20140046597A (ko) 2014-04-21

Similar Documents

Publication Publication Date Title
KR102081980B1 (ko) 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
KR101730497B1 (ko) 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
US7865809B1 (en) Data error detection and correction in non-volatile memory devices
US8726140B2 (en) Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same
KR101990972B1 (ko) 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
TWI459396B (zh) 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置
KR101926608B1 (ko) 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
KR20140050145A (ko) 메모리 장치의 열화 상태 판정 방법 및 이를 이용한 메모리 시스템
US20130185268A1 (en) Methods of compressing and storing data and storage devices using the methods
KR20200042360A (ko) 에러 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템
CN112214347A (zh) 产生用于存储器子系统中的数据修改期间的错误检测的错误校验数据
CN104733051A (zh) 奇偶校验码的解码方法、存储器储存装置及控制电路单元
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
TWI467590B (zh) 資料處理方法、記憶體控制器及記憶體儲存裝置
KR20170012006A (ko) 메모리 컨트롤러와 이를 포함하는 메모리 시스템
TWI536749B (zh) 解碼方法、記憶體儲存裝置與記憶體控制電路單元
CN104424045A (zh) 解码方法、存储器储存装置与非易失性存储器模块
KR20200079811A (ko) 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템
US11177012B1 (en) Fast copy through controller
US11082068B2 (en) Error correction circuit, memory controller having error correction circuit, and memory system having memory controller
US11630588B2 (en) Controller and memory system including the same
TWI763310B (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
TW202336756A (zh) 編碼控制方法、記憶體儲存裝置及記憶體控制電路單元
KR20240048306A (ko) G-ldpc 인코더, g-ldpc 인코딩 방법 및 스토리지 장치

Legal Events

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