KR102374113B1 - 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템 - Google Patents

메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR102374113B1
KR102374113B1 KR1020170116115A KR20170116115A KR102374113B1 KR 102374113 B1 KR102374113 B1 KR 102374113B1 KR 1020170116115 A KR1020170116115 A KR 1020170116115A KR 20170116115 A KR20170116115 A KR 20170116115A KR 102374113 B1 KR102374113 B1 KR 102374113B1
Authority
KR
South Korea
Prior art keywords
data
parity
memory device
controller
difference
Prior art date
Application number
KR1020170116115A
Other languages
English (en)
Other versions
KR20180031572A (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 삼성전자주식회사
Publication of KR20180031572A publication Critical patent/KR20180031572A/ko
Application granted granted Critical
Publication of KR102374113B1 publication Critical patent/KR102374113B1/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6312Error control coding in combination with data compression
    • 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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3776Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using a re-encoding step during the decoding process

Landscapes

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

Abstract

본 발명의 메모리 시스템은, 데이터 채널, 상기 데이터 채널을 통해 요청을 출력하는 컨트롤러 및 데이터 및 대응하는 제 1 패리티를 저장하고, 상기 데이터 채널을 통한 상기 요청의 수신에 응답하여 제 2 패리티를 생성하기 위해 상기 데이터에 대한 디코딩 동작을 수행하고, 상기 제 1 패리티 및 상기 제 2 패리티와의 차이를 생성하고, 상기 차이를 압축하며, 상기 컨트롤러가 상기 데이터 및 압축된 차이(compressed difference)에 액세스할 수 있도록 하여 상기 요청을 충족시키는 메모리 장치를 포함한다.

Description

메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템{METHOD OF OPERATING MEMORY DEVICE, MEMORY DEVICE USING THE SAME AND MEMORY SYSTEM INCLUDING THE DEVICE}
본 발명의 실시 예는 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 상기 장치를 포함하는 메모리 시스템에 관한 것이다.
반도체 메모리 장치는 일반적으로 휘발성 또는 비 휘발성으로 분류 될 수 있다. DRAM, SRAM 등과 같은 휘발성 메모리는 인가된 전력이 없을 때 저장된 데이터를 잃어 버린다. 대조적으로, EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 비휘발성 메모리는 인가된 전력이 없을 때 저장된 데이터를 유지할 수 있다. 다른 유형의 비휘발성 메모리 중에서 플래시 메모리는 상대적으로 빠른 데이터 액세스 속도, 낮은 전력 소비 및 고밀도의 메모리셀 통합 밀도를 가진다. 이러한 요인들로 인해, 플래시 메모리는 데이터 저장 매체로서 다양한 애플리케이션에서 사용하기 위해 널리 채택되어 왔다.
SSD(solid-state drive)는 집적 회로 어셈블리를 메모리로서 사용하여 데이터를 지속적으로 저장하는 솔리드-스테이트 저장 장치이다. 일반적인 SSD는 채널(channel)을 통하여 하나 이상의 메모리 장치와 통신하는 컨트롤러를 포함한다. 그러나 채널에서 병목 현상이 발생하여 SSD의 응답 시간과 효율성이 감소한다. 따라서 이러한 병목 현상을 줄이거나 방지할 수 있는 SSD가 필요하다.
본 발명이 이루고자 하는 기술적인 과제는 채널에서의 병목 현상을 줄이거나 방지할 수 있는 메모리 시스템 및 상기 메모리 시스템의 동작 방법을 제공하는 것이다
본 발명의 일 실시 예에 따르면, 메모리 시스템은, 데이터 채널; 상기 데이터 채널을 통해 요청을 출력하는 컨트롤러; 및 데이터 및 대응하는 제 1 패리티를 저장하고, 상기 데이터 채널을 통한 상기 요청의 수신에 응답하여 제 2 패리티를 생성하기 위해 상기 데이터에 대한 디코딩 동작을 수행하고, 상기 제 1 패리티 및 상기 제 2 패리티와의 차이를 생성하고, 상기 차이를 압축하며, 상기 컨트롤러가 상기 데이터 및 압축된 차이(compressed difference)에 액세스할 수 있도록 하여 상기 요청을 충족시키는 메모리 장치를 포함한다.
상기 메모리 장치는 상기 디코딩 동작을 수행하도록 구성된 ECC(Error Checking and Correction) 디코더를 포함할 수 있다.
상기 메모리 장치는 상기 차이를 생성하기 위해 상기 제 1 패리티 및 상기 제 2 패리티에 대해 감산 동작을 수행하도록 구성된 감산기를 포함할 수 있다.
상기 감산기는 XOR 논리 회로일 수 있다.
상기 메모리 장치는 상기 차이에 대한 압축을 수행하도록 구성된 압축 회로를 포함할 수 있다.
상기 메모리 시스템은 입/출력 (I/O) 버퍼를 더 포함하고, 상기 메모리 장치는 상기 데이터 및 상기 압축된 차이를 상기 I/O 버퍼에 저장함으로써 상기 컨트롤러가 상기 데이터 및 상기 압축된 차이에 액세스할 수 있도록 할 수 있다.
상기 컨트롤러는 상기 요청을 발행한 후에 상기 메모리 장치로부터 상기 데이터 및 상기 압축된 차이를 검색할 수 있다.
상기 컨트롤러는 상기 압축된 차이를 사용하여 상기 데이터를 정정할 수 있다.
상기 컨트롤러는, 상기 검색된 데이터에 대해 인코딩 동작을 수행하여 제 1 결과를 생성하도록 구성된 ECC(error checking and correction) 디코더; 상기 검색된 압축된 차이에 대해 압축 해제 동작을 수행하여 제 2 결과를 생성하도록 구성된 압축 해제 회로; 상기 제 1 결과 및 상기 제 2 결과에 대해 감산 연산을 수행하여 복원된 패리티를 생성하는 감산기; 및 상기 검색된 데이터 및 상기 복원된 패리티에 대한 디코딩 동작을 수행하여 상기 정정된 데이터를 생성하도록 구성된 ECC 디코더를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 메모리 시스템을 제어하는 방법은, 상기 메모리 시스템의 메모리 장치에 의해, 컨트롤러로부터의 요청에 응답하여 데이터 및 패리티를 로딩하는 단계; 상기 메모리 장치에 의해, 로드된 패리티와 상기 로드된 데이터로부터 계산된 패리티 간의 차이를 압축하여 압축된 패리티 차이(compressed parity difference)를 생성하는 단계; 및 상기 메모리 장치에 의해, 상기 요청을 만족시키기 위해, 상기 컨트롤러가 상기 데이터 및 상기 압축된 패리티 차이를 액세스할 수 있게 하는 단계를 포함한다.
상기 압축된 패리티 차이를 생성하는 단계는, 상기 메모리 장치에 의해, 상기 로드된 데이터에 대해 인코딩 동작을 수행하여 상기 계산된 패리티를 생성하는 단계; 상기 메모리 장치에 의해, 상기 로드된 패리티 및 상기 계산된 패리티에 대해 감산 연산을 수행하여 결과를 생성하는 단계; 및 상기 메모리 장치에 의해, 상기 압축된 패리티 차이를 생성하기 위해 상기 결과를 압축하는 단계를 포함할 수 있다.
상기 방법은 상기 컨트롤러에 의해, 상기 데이터 채널을 사용하여 상기 메모리 장치로부터 상기 데이터 및 상기 압축된 패리티 차이를 검색하는 단계; 및 상기 압축된 패리티 차이를 이용하여 상기 검색된 데이터를 정정하는 단계를 포함할 수 있다.
상기 정정하는 단계는, 상기 압축된 패리티 차이 및 상기 검색된 데이터에 대한 연산을 수행하여 상기 복원된 패리티를 생성하는 단계; 및   상기 검색된 데이터 및 상기 복원된 패리티에 대해 디코딩 동작을 수행하여 상기 정정된 검색된 데이터를 생성하는 단계를 포함할 수 있다.
상기 복원된 패리티를 생성하는 단계는, 상기 컨트롤러에 의해, 검색된 데이터에 대한 인코딩 동작을 수행하여 제 1 입력을 생성하는 단계; 상기 컨트롤러에 의해, 압축된 패리티 차이를 압축 해제하여 제 2 입력을 생성하는 단계; 및 상기 컨트롤러에 의해, 상기 제 1 입력 및 제 2 입력에 대한 감산 연산을 수행하여 상기 복원된 패리티를 생성하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 메모리 시스템은, 데이터 채널; 상기 데이터 채널을 통해 요청을 출력하도록 구성된 컨트롤러; 및 데이터와 대응하는 오류 검출 코드 및 패리티를 저장하고, 상기 컨트롤러가 상기 저장된 데이터, 오류 검출 코드 및 상기 패리티를 액세스할 수 있도록 하여 상기 요청을 충족시키도록 구성된 메모리 장치를 포함한다.
상기 컨트롤러는 상기 데이터 채널을 통해 상기 데이터 및 상기 오류 검출 코드를 검색하고, 상기 오류 검출 코드를 사용하여 상기 데이터에 오류가 존재하는지 여부를 결정하고, 상기 오류가 존재하지 않는다고 결정된 경우 상기 호스트에 상기 데이터를 제공하고, 그렇지 않은 경우, 검색된 데이터를 정정하기 위해 데이터 채널을 통해 메모리 장치로부터 패리티를 검색한다.
상기 컨트롤러는 상기 검색된 패리티를 이용하여 상기 검색된 데이터를 정정하는 ECC (error checking and correction) 디코더를 포함할 수 있다.
상기 오류 검출 코드는 CRC (Cyclic Redundancy Check) 코드일 수 있다.
본 발명의 일 실시 예에 따르면, 메모리 시스템을 제어하는 방법은, 상기 메모리 시스템의 컨트롤러에 의해, 상기 메모리 시스템의 데이터 채널을 사용하여 메모리 장치에 저장된 메모리의 청크로부터 데이터 및 대응하는 오류 검출 코드를 검색하는 단계; 상기 컨트롤러에 의해, 상기 검색된 오류 검출 코드를 이용하여 상기 검색된 데이터에 오류가 있는지 여부를 결정하는 단계; 상기 컨트롤러에 의해, 상기 결정이 상기 검색된 데이터가 오류를 갖지 않는다고 나타내는 경우, 상기 검색된 데이터를 호스트에 제공하는 단계; 및 상기 컨트롤러에 의해, 상기 결정이 상기 검색된 데이터가 오류를 갖는다고 나타내는 경우, 상기 청크의 패리티를 사용하여 정정된 데이터를 상기 호스트에 제공하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 채널에서의 병목 현상을 줄이거나 방지할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른, 도 1의 컨트롤러 및 메모리 장치의 블록도이다.
도 3은 본 발명의 일 실시예에 따른, 도 2에 도시된 컨트롤러 및 메모리 장치를 이용하여 데이터를 읽는 방법을 도시한다.
도 4는 본 발명의 일 실시예에 따른, 도 2의 컨트롤러에서 사용하기 위해 압축된 패리티 차이를 생성하는 방법을 도시한다.
도 5는 본 발명의 일 실시예에 따른, 도 2에 도시된 컨트롤러 및 메모리 장치를 이용하여 데이터를 읽는 방법을 도시한다.
도 6은 본 발명의 일 실시예에 따른, 도 4의 방법에서 사용될 수 있는 패리티를 생성하는 방법을 도시한다.
도 7은 본 발명의 일 실시예에 따른, 도 1의 컨트롤러 및 메모리 장치의 블록도이다.
도 8은 본 발명의 일 실시예에 따른, 도 7의 시스템을 동작시키는 방법을 도시한다.
도 9는 본 발명의 일 실시 예에 따른 솔리드 스테이트 드라이브 시스템을 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도면들 또는 다음의 상세한 설명에서의 모듈들은 상세한 설명에서 설명되거나 도면들에 도시된 구성 요소들에 추가하여 다른 모듈들과 연결될 수 있다. 모듈 또는 구성 요소 간의 각 연결은 통신에 의한 연결일 수도 있고 물리적 연결일 수도 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템은 호스트 컨트롤러(host controller, 110) 및 관리 컨트롤러(managing controller, 120)(예를 들어, SSD 컨트롤러)를 포함한다.
호스트 컨트롤러(110)는 관리 컨트롤러(120)의 리드(read, 읽기) 및 라이트(write, 쓰기) 동작을 제어하며, 예를 들어, 중앙 처리 장치(CPU)에 대응할 수 있다. 컨트롤러(120)는 호스트 컨트롤러(110)의 제어에 따라, 라이트 동작 수행시 데이터를 저장하고, 리드 동작 수행시 저장된 데이터를 출력한다. SSD 컨트롤러는 호스트 인터페이스(host interface, 121), 프로세서(processor, 122), 리드 버퍼(read buffer, 123), 라이트 버퍼(write buffer, 124), 및 액세스 컨트롤러(access controller, 125)를 포함한다. 액세스 컨트롤러(125)는 메모리 장치(126)와 인터페이스 하도록 구성된다.
호스트 인터페이스(121)는 PATA(Parallel AT Attachment) 버스 및 SATA(Serial AT Attachment) 버스 중 어느 하나를 통해 호스트와 연결될 수 있다. 호스트 인터페이스(121)는 호스트(예컨대, 4100)의 프로토콜에 따라 컨트롤러(125) (125a 또는 125b)와의 인터페이스를 제공할 수 있다. 호스트 인터페이스(121)는 USB (Universal Serial Bus), SCSI (Small Computer System Interface), PCI Express, ATA, PATA (Parallel ATA), SATA (Serial ATA) 또는 SAS (Serial Attached SCSI)를 사용하여 호스트와 통신할 수 있다. 호스트 인터페이스(121)는 호스트가 컨트롤러(125)(125a 또는 125b)를 하드 디스크 드라이브(HDD)로서 인식할 수 있게 하는 디스크 에뮬레이션(disk emulation) 기능을 수행할 수 있다.
본 발명의 개념에 따른 예시적인 실시 예에서, 액세스 컨트롤러(126)는 메모리 장치로부터 수신된 패리티(parity)(예를 들어, 하나 이상의 패리티 비트)를 사용하여 메모리 장치로부터 수신된 데이터에 대해 오류 정정(error correction)을 수행하도록 구성된다.
메모리 장치(126)는 하나 이상의 비휘발성 메모리 장치를 포함할 수 있다. 일 실시예에서, 비휘발성 메모리 장치는 플래시 메모리(예를 들어, NAND 또는 NOR 타입)이다. 일 실시 예에서, 메모리 장치(126)는 전기적 소거 및 프로그램 가능 ROM(EEPROM: electrically erasable and programmable ROM), NAND 플래시 메모리, NOR 플래시 메모리, PRAM(phase-change RAM), 저항성 RAM (ReRAM), 강유전성 RAM(FRAM: ferroelectric RAM) 및 스핀 전달 토크 자기 RAM (STT-MRAM: spin-transfer torque magnetic RAM)와 같은 다양한 비 휘발성 메모리 장치로 구현될 수 있다.
일 실시 예에서, 메모리 장치(126)는 3 차원(3D) 메모리셀 어레이를 포함한다. 3D 메모리셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
본 발명의 일 실시예에서, 3 차원 메모리 셀 어레이는 수직 방향 특성을 가지며, 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치되는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 상기 적어도 하나의 선택 트랜지스터는 상기 메모리 셀과 동일한 구조를 가지며 상기 메모리 셀과 함께 모놀리식하게 형성된다.
본원에서 참조문헌으로 인용된 다음의 특허 문헌들-미국 등록 특허 7,679,133호, 8,553,466호, 8,654,587호, 및 8,559,235호와 미국 공개 특허 2011/0233648호-은 3 차원 메모리 어레이에 대한 적절한 구성을 개시한다.
호스트 컨트롤러(110)는 호스트 인터페이스(121)를 통해 관리 컨트롤러(120)와 신호를 교환하고, 프로세서(122)는 액세스 컨트롤러(125)를 제어한다. 리드 동작이 수행될 때, 리드 버퍼(123)는 메모리 장치(126)에 저장된 데이터를 수신하고, 수신된 데이터를 출력하며, 라이트 동작이 수행될 때 라이트 버퍼(124)는 외부 데이터를 수신한다. 또한, 액세스 컨트롤러(125)는 라이트 동작이 수행될 때 메모리 장치(126) 내에 데이터가 저장될 메모리에 대한 액세스 동작을 제어하고, 리드 동작이 수행될 때, 메모리 장치 내에 출력될 데이터가 저장되어 있는 메모리에 대한 액세스 동작을 제어한다. 메모리 장치(126)의 각 메모리는 라이트 동작이 수행될 때 데이터를 저장하고, 리드 동작이 수행될 때 저장된 데이터를 출력한다. 액세스 컨트롤러(125) 및 메모리 장치(126)는 데이터 채널(130)을 통해 서로 통신한다. 도 1에는 단일 메모리 장치(126)만 도시되어 있지만, 본 발명의 개념은 이에 한정되지 않는다. 예를 들어, 액세스 컨트롤러(125)는 다중 채널(multiple channels)을 통해 다수의 메모리 장치와 통신하거나, 또는 단일 채널을 통해 다수의 메모리 장치와 통신할 수 있다.
예시적인 실시예에서, 메모리 장치(126)는 멀티-플레인(multi-plane) 구조를 갖는다. 이 실시 예에서, 컨트롤러(125)는 다수의 플레인들 각각이 하나의 단위 메모리로서 액세스되도록 다수의 플레인들(planes) 각각을 제어한다.
메모리 장치(126)로부터 페이지 리드(예를 들어, NVM 페이지 리드)는 내부 어레이-투-버퍼 감지 시간(array-to-buffer sensing time) 및 채널(130)에서 관리 컨트롤러(125)로의 페이지 바이트들의 전송 지연(transmission delay)으로 구성될 수 있다. 예시적인 SSD 아키텍처는 8- 채널, 8 웨이(way)를 사용할 수 있으며, 각 웨이(way)는 병렬로 활성화될 수 있는 두 개의 플레인으로 나뉜다. 이러한 시스템의 리드 응답 시간(read response time)은 액세스 컨트롤러(125)와 메모리 장치(126) 사이에서 데이터, 명령 및 신호를 교환하는 데 사용되는 채널(예: 130)의 병목 현상으로 인해 지연이 발생할 수 있다. 리드 처리량(read throughput)은 버스 주파수(bus frequency) 또는 채널 수를 증가시킴으로써 향상될 수 있다. 그러나, 작은 명령 큐를 갖는 작업 부하에서의 과소 사용으로 인해 대역폭 대 전력 소비의 비율(ratio of bandwidth to power consumption)이 악화될 수 있다.
본 발명의 개념의 적어도 하나의 실시 예는 메모리 장치(126)로부터 컨트롤러(예를 들어, 120 또는 125)로의 전송 시간을 단축시킨다. 데이터의 경미한 오류 발생률은 해당 패리티 비트의 작은 변화를 초래할 수 있다. 데이터로부터 패리티를 계산할 수 있기 때문에, 컨트롤러(125)에 데이터 및 계산된 패리티(calculated parity)와 어레이-리드 패리티(array-read parity)와의 압축된 차이(compressed difference)를 전송하는 방식이 사용된다. 따라서, 전송되는 바이트의 양이 감소될 수 있고 레이턴시(latency) 및 처리량(throughput)이 향상될 수 있다.
본 발명의 개념에 따른 적어도 하나의 실시예는 리드 레이턴시(read latency)를 향상시킬 수 있다. 클라이언트 SSD에서 일반적인 랜덤-리드 작업 부하는 작은 명령 큐를 사용하여 4KB에서 16KB 데이터를 요청하며, 여기서, 리드 레이턴시가 성능 병목이다. 이는 단일 채널 또는 2 개의 채널, 1-2 개의 웨이 및 1 개의 계류중인 명령(pending command)을 포함하는 eMMC와 같은 모바일 NVM 시스템에도 적용될 수 있다.
도 2는 본 발명의 일 실시예에 따른, 도 1의 컨트롤러 및 메모리 장치의 블록도이다. 예를 들어, 도 1의 컨트롤러(125)는 도 2의 컨트롤러(125a)로 대체될 수 있다. 예를 들어, 도 1의 메모리 장치(126)는 도 2의 메모리(126a)로 대체될 수 있다. 내부 어레이-투-페이지 버퍼 감지(array-to-page buffer sensing) 후 메모리 장치(예: NAND 메모리 장치)에 대한 ECC 인코더(error checking and correction encoder)가 패리티를 계산하고, 이를 어레이로부터 리드한 패리티와 비교하고, 데이터와 함께 2 개의 패리티 블록들 사이의 차분 압축(differential compression)을 전송하도록 리드 플로우가 수정된다.
도 2를 참조하면, 메모리 장치(126a)는 메모리 어레이(201)(예를 들어, NAND 어레이), 페이지 버퍼(202), ECC 인코더(203), 감산기(subtractor, 204)(예를 들어, XOR 논리 회로), 압축기(compressor, 205), I/O 버퍼(input/output buffer, 206)를 포함하고, 액세스 컨트롤러(125a)는 I/O 버퍼(207), 압축 해제기(decompressor, 208)(예를 들어, 압축해제 회로), ECC 인코더(209)(예를 들어, 인코더 회로), 감산기(subtractor, 210)(예를 들어, XOR 논리 회로), ECC 디코더 (211)(예를 들어, 디코더 회로), 및 버스 인터페이스(212)(예를 들어, 버스 컨트롤러 또는 버스 인터페이스 회로)를 포함한다. 예시적인 실시예에서, ECC 디코더 (211)는 LDPC 또는 BCH 디코더이다. 그러나, 본 발명의 실시 예들은 이에 한정되지 않는다.
리드 요청(read request)은 호스트로부터 버스(127)를 통해 버스 인터페이스 (212)에 의해 수신될 수 있다. 리드 요청은 리드 명령 및 어드레스를 포함할 수 있다. 버스 인터페이스(212)는 리드 명령 및 어드레스를 페이지 버퍼(202)에 인가할 수 있으며, 페이지 버퍼(202)는 리드 명령 및 어드레스를 사용하여 메모리 어레이(201)로부터 대응하는 페이지를 검색한다. 검색된 페이지(retrieved page)는 데이터 부분(data portion) 및 대응하는 패리티 부분(parity portion)을 포함한다. 메모리 어레이(201)는 데이터 부분 및 대응하는 패리티 부분(예를 들어, 하나 이상의 패리티 또는 체크 비트)으로 미리 기입되었다고 가정한다.
패리티 비트 또는 체크 비트는 이진 코드(binary code)의 스트링에서 오류를 정정하거나 스트링의 오류를 검사하기 위해 스트링에 추가될 수 있다. 짝수 패리티의 경우, 주어진 비트 세트에 대해 값이 1 인 비트의 발생이 카운트된다. 그 카운트 값이 홀수인 경우, 패리티 비트 값은 1로 설정되어 전체 세트(패리티 비트 포함)에서 1의 발생 횟수를 짝수로 만든다. 주어진 비트 세트에서 1의 카운트 수가 이미 짝수이면 패리티 비트의 값은 0이다. 홀수 패리티의 경우에는 코딩은 반대이다. 주어진 비트 세트에 대해, 1의 값을 가진 비트들의 카운트 값이 짝수이면 패리티 비트 값이 1로 설정되어 전체 세트(패리티 비트 포함)에서 1의 총 카운트가 홀수가 된다. 1의 값을 가진 비트들의 수가 홀수일 경우, 카운트는 이미 홀수이므로 패리티 비트의 값은 0이다.
페이지 버퍼(202)는 ECC 인코더(203)에 데이터 부분(data portion)을 인가하며, ECC 인코더(203)는 데이터 부분으로부터 패리티를 계산한다. 패리티는 데이터 부분을 정정하는데 사용될 수 있다. ECC 인코더(201)는 계산된 패리티(calculated parity)를 제 1 입력으로서 감산기(204)에 인가한다. 페이지 버퍼(202)는 감산기(204)의 제 2 입력으로서 패리티 부분(parity portion)을 인가한다. 감산기(204)는 제 1 입력(예를 들어, 계산된 패리티)과 제 2 입력(예를 들어, 패리티 부분)을 비교하여 패리티 차이(parity difference)를 생성한다.
감산기(204)의 출력은 압축된 패리티 차이(CPdiff)를 생성하기 위해 압축 회로(205)로 출력된다. 일 실시예에서, 압축 회로(205)는 패리티 차이를 무손실 방식(lossless fashion)으로 압축하도록 구성된다. 예시적인 실시 예에서, 압축 회로(205)는 허프만 압축 알고리즘(Huffman compression algorithm)을 사용하여 패리티 차이를 압축한다. 감산기(204) 및 압축 회로(205)는 1 킬로-게이트(KG: Kilo-gates) 미만의 게이트들을 사용하여 구현될 수 있다.
예를 들어, 감산기(204)가 XOR 논리 회로인 경우, 제 1 및 제 2 입력에 대해 XOR 연산을 수행한다. 예를 들어 첫 번째 입력이 '1111111'이고 두 번째 입력이 '1111111'인 경우, 결과는 '0000000'이 되고, 이 결과(값)는 크게 압축될 수 있다. 예를 들어, 이 결과는 단일 0으로 압축될 수 있다. 그러나 제1 입력이 '0110111'이고 제2 입력이 '0000000'이면 결과는 '0110111 '이 되고, 이 결과는 첫 번째 예제만큼 압축할 수는 없다. 페이지 버퍼(202)의 데이터 부분은 I/O 버퍼(206)의 데이터 부분(data portion)에 저장되고 압축 회로(205)의 출력(예를 들어, CPdiff)은 데이터 부분에 해당하는 I/O 버퍼(206)의 압축 패리티 차이 부분(compressed parity difference portion)에 저장된다.
컨트롤러(125a)는 컨트롤러(125a)의 I/O 버퍼(207)에 저장하기 위해, 데이터 버스(13)를 통해 메모리 장치(126a)의 I/O 버퍼(206)에 저장된 데이터 부분 및 압축된 패리티 차이(CPdiff)를 검색한다. 컨트롤러(125a)의 ECC 인코더(209)는 I/O 버퍼 (207)의 데이터 부분에 대한 인코딩 동작을 수행하여 컨트롤러(125a)의 감산기(210)의 제1 입력으로 출력하기 위한 패리티 부분을 생성한다. 컨트롤러(125a)의 압축해제 회로(208)는 I/O 버퍼(206)로부터 대응하는 압축된 패리티 차이(CPdiff)를 검색하고, 압축된 패리티 차이(CPdiff)에 대해 압축 해제된 결과를 생성하기 위해 압축 해제 동작을 수행하고, 그 결과를 감산기(210)의 제 2 입력으로서 제공한다. 감산기(210)는 제 1 및 제 2 결과에 대해 감산 연산을 수행하여 패리티 부분을 생성한다. 일 실시예에서, 감산기(210)는 제 1 및 제 2 입력에 대해 XOR 연산을 수행하여 패리티 부분을 생성하는 XOR 논리 회로이다. 컨트롤러(125a)의 ECC 디코더(211)는 I/O 버퍼(207)에 저장된 데이터 부분 및 감산기(210)에 의해 출력된 패리티 부분에 대해 디코딩 동작을 수행하여 정정된 데이터를 생성한다. 정정된 데이터는 ECC디코더(211)로부터 버스 인터페이스(212)로 전송되어 버스(127)를 통해 출력될 수 있다. 이에 따라, 리드 요청이 완료될 수 있다.
도 3은 본 발명의 일 실시예에 따른, 도 2에 도시된 컨트롤러 및 메모리 장치를 이용하여 데이터를 읽는 방법을 도시한다.
도 3을 참조하면, 상기 방법은 메모리 장치(예를 들어, 126a)가 컨트롤러로부터의 요청(예를 들어, 리드 요청)에 응답하여 데이터 및 패리티를 로딩하는 단계(S310)를 포함한다. 상기 방법은 메모리 장치가 로드된 패리티(loaded parity)와 계산된 패리티(calculated parity)(즉, 로드된 데이터로부터 계산된 패리티)의 차이를 압축하여 압축된 패리티 차이(compressed parity difference)를 생성하는 단계(S320)를 더 포함한다. 상기 방법은 메모리 장치가 상기 요청을 만족시키기 위해, 상기 컨트롤러가 상기 데이터 및 상기 압축된 패리티 차이를 액세스할 수 있게 하는 단계(S330)를 더 포함한다. 예를 들어, 메모리 장치는 컨트롤러가 요청한 데이터로 채워질 것으로 예상하는 메모리 장치의 I/O 버퍼에 데이터와 압축된 패리티 차이를 저장해 둘 수 있으며, 컨트롤러는 상기 컨트롤러와 상기 메모리 장치를 연결하는 데이터 버스를 사용하여 I/O 버퍼의 데이터를 액세스할 수 있다.
도 4는 본 발명의 일 실시예에 따른, 도 2의 컨트롤러에서 사용하기 위해 압축된 패리티 차이를 생성하는 방법을 도시한다.
도 4에 도시된 바와 같이, 본 방법은 메모리 장치가 로드된 데이터에 대해 인코딩 동작(예를 들어, ECC 인코딩 동작)을 수행하여 계산된 패리티를 생성하는 단계(S322)를 포함한다. 상기 방법은 메모리 장치가 로드된 패리티 및 계산된 패리티에 대해 감산 동작(예를 들어, 배타적 논리합 연산)을 수행하여 결과를 생성하는 단계(S324)를 더 포함한다. 그 다음, 상기 방법은 메모리 장치가, 결과를 압축하여 압축된 패리티 차이를 생성하는 단계(S326)를 포함한다.
도 5는 본 발명의 일 실시예에 따른, 도 2에 도시된 컨트롤러 및 메모리 장치를 이용하여 데이터를 읽는 방법을 도시한다. 요청에 대응하는 데이터 및 컨트롤러가 액세스할 수 있는 압축된 패리티 차이를 생성하기 위해 도 3의 방법이 실행된 이후에, 도 5의 방법이 수행될 수 있다. 상기 방법은 컨트롤러가 메모리 장치로부터 데이터 및 압축된 패리티 차이를 검색(retrieving data and the compress parity difference)하는 단계(S410)를 포함한다. 예를 들어, 컨트롤러는 컨트롤러와 메모리 장치를 연결하는 데이터 버스를 사용하여 메모리의 버퍼로부터 데이터 및 상응하는 압축된 패리티 차이를 검색한다. 상기 방법은 다음으로, 컨트롤러가 압축된 패리티 차이 및 데이터에 대한 연산을 수행하여 패리티를 생성하는 단계(S420)를 포함한다. 상기 방법은, 다음으로, 컨트롤러가 상기 데이터와 상기 생성된 패리티에 대해 디코딩 동작(예를 들어, ECC 디코딩 동작)을 수행하여 정정된 데이터를 생성하는 단계(S430)를 포함한다.
패리티를 생성하는 동작을 수행하는 단계(S420)는, 본 발명의 일 실시예에 따른 도 6의 방법에 의해 수행될 수 있다. 도 6을 참조하면, 상기 방법은 컨트롤러가 상기 검색된 데이터에 대해 인코딩 동작(예를 들어, ECC 인코딩 동작)을 수행하여 제 1 입력을 생성하는 단계(S422)를 포함한다. 일 실시예에서, 제 1 입력은 제 1 패리티이다. 상기 방법은 컨트롤러가 압축된 패리티 차이를 압축 해제하여 제 2 입력을 생성하는 단계(S424)를 더 포함한다. 일 실시 예에서, 제 2 입력은 제 2 패리티이다. 단계 S424는 단계 S424 이전 또는 이후에 수행될 수 있다. 그 다음, 상기 방법은 컨트롤러가, 상기 패리티를 생성하기 위해 상기 제 1 입력 (예를 들어, 제 1 패리티) 및 제 2 입력(예를 들어, 제 2 패리티)에 대해 감산 (예를 들어, 배타적 논리합 연산)을 수행하는 단계(S426)를 포함한다. 생성된 패리티는 단계 S430에서 사용되는 생성된 패리티에 해당한다.
도 5의 방법에 의해 생성된 정정된 데이터는, 호스트에 의한 요청 (예를 들어, 리드 요청)에 응답하여 컨트롤러에 의해 호스트로 전송될 수 있다.
도 3 내지 도 5에 도시된 방법의 효율은, 사용된 ECC 코드에 따라 다르다. 보다 구체적으로, 비트 오류율(BER)에 대한 변경된 패리티 비트들(changed parity bits)의 평균 합계(average sum)의 비율은 압축률을 결정한다. 예를 들어, 저밀도 패리티 체크(LDPC: low-density parity-check) 코드에서 각 데이터 비트(변수 노드(variable node))는 최대 5 개의 체크 노드(check nodes)에 연결될 수 있다. 따라서 데이터 비트의 각 오류는 패리티 비트에서 최대 5 개의 반전(flips)을 초래한다.
도 2에 도시된 방식의 일 실시 예는, XOR 및 압축 컴포넌트와 함께 온-칩 메모리 장치 하드웨어 디코더(예를 들어, NAND 하드웨어 인코더)를 사용한다. 그러나, 도 7 및 도 8에 도시된 본 발명의 개념에 따른 실시 예는, 저비용 구현이며, 메모리 장치(예컨대, NAND)의 수정을 필요로 하지 않는다. 이 방식에서, 코드 워드(codeword)의 데이터는 청크(chunk)로 분할된다. 각각의 청크에 대해, 오류 검출 CRC(error-detecting cyclic redundancy check) 및 하나 이상의 패리티 비트가 메모리 장치(예를 들어, NAND)로 라이트되기 전에 부가된다. 실시 예에서, CRC는 32 비트 값이다. 리드시, 각 데이터 청크 및 대응하는 CRC는 컨트롤러에서 검증된다. 오류가 감지되지 않으면 컨트롤러는 관련 패리티의 리드(read)를 건너뛴다. ECC 패리티에서만 오류가 존재하면, 종래의 리드와는 대조적으로 디코딩이 회피된다.
이러한 접근법에서, 추가적인 CRC 비트들과 전송 시간 단축으로 인한 처리량/레이턴시 개선 간의 트레이드 오프가 존재한다. N 비트의 데이터 블록이 주어진다면, 블록에 오류가 없을 확률은 다음의 수학식 1에 따라 결정될 수 있다.
Figure 112017088129842-pat00001
데이터 벡터는 다수의 청크들로 분할되며, 여기서 청크 크기는 BER 및 무오류(error-free) 확률의 파라미터이다. 청크 크기는 최적의 이득을 위해 프로그램/삭제 (P/E) 사이클에 따라 동적으로 조정될 수 있다. CRC 코드는, 예를 들어, BCH(Bose, Chaudhuri 및 Hocquenghem) 코드 또는 LDPC 코드일 수 있다.
도 7은 본 발명의 일 실시예에 따른, 도 1의 컨트롤러 및 메모리 장치의 블록도이다. 예를 들어, 도 1의 컨트롤러(125)는 도 7의 컨트롤러(125b)로 대체될 수 있다. 예를 들어, 도 1의 메모리 장치(126)는 도 2의 메모리(126b)로 대체될 수 있다.
도 7을 참조하면, 메모리 장치(126b)는 메모리 어레이(701)(예를 들어, NAND 어레이) 및 I/O 버퍼(702)를 포함한다. 컨트롤러(125b)(예를 들어, SSD 컨트롤러)는 버스 인터페이스(212), I/O 버퍼(703), CRC 검증 회로(CRC verification circuit, 704), 판정 회로(determination circuit, 705), 패리티 검색 회로(parity retrieval circuit, 706), 데이터 버퍼(707) 및 ECC 디코더(708)를 포함한다. 컨트롤러(125b)는 데이터 채널(130)을 통해 메모리 장치(126b)와 통신한다. 컨트롤러(125b)는 버스(127)를 통해 호스트 인터페이스(121)와 통신한다.
컨트롤러(125b)는 호스트 인터페이스(121)로부터 버스(127)를 통해 리드 요청을 수신할 수 있다. 리드 요청은 리드 명령 및 리드 어드레스를 포함할 수 있다. 컨트롤러(125b)는 버스 인터페이스(212)를 사용하여 리드 요청을 수신하고, 리드 명령/리드 어드레스를 데이터 채널(130)을 통해 메모리 장치 (126b)의 I/O 버퍼(702)에 인가할 수 있다. 메모리 어레이(701)는 이미 데이터 청크들 및 각 데이터 청크에 대해 대응하는 CRC 및 패리티를 저장하고 있다고 가정한다. 예를 들어, 리드 어드레스가 Data1을 포함하는 데이터에 대응하는 경우, I/O 버퍼(702)는 Data1, 대응하는 CRC1 및 대응하는 패리티 P1을 로드(load)한다. 일 실시 예에서, 요청 데이터 이외에, 버퍼(702)는 Data1에 인접한 다른 데이터(예를 들어, Data2, CRC2, P2 등)를 로드한다. 예를 들어, I/O 버퍼 (702)는 대응 페이지의 전체 라인 또는 전체 대응 페이지를 로드할 수 있다.
컨트롤러(125b)의 I/O 버퍼(703)는 데이터 채널(130)을 통해 메모리 장치(126b)의 I/O 버퍼(702)에 저장된 데이터(예를 들어, Data1) 및 그에 대응하는 CRC(예를 들어, CRC1)를 I/O 버퍼(703)로 복사한다.
컨트롤러(125b)의 CRC 검증 회로(704)는 대응하는 CRC(예컨대, CRC1)를 사용하여 데이터(예를 들어, Data1)에 대한 검증 동작을 수행하여 CRC 오류 (CRC failure)가 발생했는지 여부를 결정하고, CRC 오류 발생 여부를 나타내는 결과를 출력한다. CRC 오류가 발생하지 않은 경우, 판정 회로(705)는 데이터 버퍼 (707)에 데이터(예를 들어, Data1)를 인출하여 버스 인터페이스(212)로 전달하도록 통보한다. 버스 인터페이스(212)는 데이터를 호스트에 송신함으로써 요청에 응답할 수 있다.
판정 회로(705)는 CRC 오류(CRC failure)이 발생한 경우, 패리티 검색 회로(706)에 메모리 장치(126b)로부터의 데이터에 대응하는 패리티를 검색하고, 패리티를 ECC 디코더(708)에 출력하도록 통지하고, 데이터 버퍼(707)에 ECC 디코더(708)로 데이터를 출력하도록 통지한다. ECC 디코더(708)는 패리티를 사용하여 데이터에 대한 디코딩 동작을 수행하여 정정된 데이터(corrected Data1)를 생성한다. 예를 들어, 데이터가 Data1이면, 검색 회로(706)는 데이터 채널(130)을 사용하여 버퍼 (702)로부터 패리티(P1)를 검색하고, ECC 디코더(708)는 패리티(P1)를 이용하여 데이터(Data1)에 대한 디코딩 동작을 수행하여, 버스 인터페이스(212)로 출력하기 위한 정정된 데이터를 생성한다. 버스 인터페이스(212)는 정정된 데이터를 호스트에 송신함으로써 요청에 응답할 수 있다.
회로(704-707)는 별개의 소자로서 도시되어 있지만, 대안의 실시 예에서, 이들 회로는 더 적은 수의 소자 또는 단일 소자로 구현될 수 있다.
도 8은 본 발명의 일 실시예에 따른, 도 7의 시스템을 동작시키는 방법을 도시한다.
도 8을 참조하면, 상기 방법은 요청에 응답하여 메모리의 청크 (chunk)로부터 데이터 및 대응하는 오류 검출 코드(예를 들어, CRC 코드)를 검색하는 단계(S510)를 포함한다. 예를 들어, 컨트롤러(125b)는 데이터 채널 (130)을 사용하여 메모리 장치(126b)로부터 데이터 및 대응하는 오류 검출 코드를 검색할 수 있다.
상기 방법은 검색된 오류 검출 코드를 이용하여 상기 검색된 데이터에 대한 검증 동작을 수행하는 단계(S520)를 더 포함한다. 예를 들어, 컨트롤러(125b)는 해당 검색된 CRC를 이용하여 검색된 데이터에 대한 검증 동작을 수행하여 검증 결과를 출력할 수 있다.
상기 방법은 상기 결과가 실패(failure) 발생을 나타내는지 여부를 판단하는 단계(S530)를 더 포함한다. 예를 들어, 결과는 성공을 나타내는 제 1 값 (예를 들어, 1) 및 실패를 나타내는 제 2 다른 값 (예컨대, 0) 일수 있다.
성공이 발생했다고 판단하면, 상기 방법은 검색된 데이터로 상기 요청에 응답하는 S540 단계로 진행한다. 예를 들어, 컨트롤러(125b)는 검색된 데이터로 호스트에 응답할 수 있다.
실패가 발생했다고 판단하면, 상기 방법은 S550으로 진행하여, 동일한 메모리 청크로부터 패리티를 검색한다. 예를 들어, 컨트롤러(125b)는 데이터 채널(130)을 사용하여 메모리 장치(125b)로부터 데이터에 대응하는 패리티를 검색할 수 있다.
상기 방법은, 다음으로, 상기 검색된 패리티를 이용하여 상기 검색된 데이터에 대해 디코딩 동작을 수행하여 정정된 데이터를 생성하는 단계(S560)를 포함한다. 예를 들어, 컨트롤러(125b)는 디코딩 동작을 수행하기 위해 내부 ECC 디코더 회로(예를 들어, 708)를 사용할 수 있다.
상기 방법은, 다음으로, 상기 정정된 데이터를 사용하여 상기 요청에 응답하는 단계(S570)를 포함한다. 예를 들어, 컨트롤러(125b)는 정정된 데이터로 호스트에 응답할 수 있다.
상술한 방법은 하나 이상의 컴퓨터 판독 가능 매체(즉, 하드 디스크, 자기 플로피 디스크, RAM, ROM, CD ROM, 플래시 메모리 등과 같은 프로그램 저장 장치) 상에 명백하게 구현될 수 있으며, 프로세서, 메모리 및 입/출력 인터페이스를 갖는 범용 디지털 컴퓨터와 같은 적절한 아키텍처를 포함하는 임의의 장치 또는 기계에 의해 실행될 수 있다.
도 9는 본 발명의 일 실시 예에 따른 솔리드 스테이트 드라이브 시스템(solid state drive system)을 나타내는 블록도이다. 도 9를 참조하면, 솔리드 스테이트 드라이브(SSD) 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다. 호스트(4100)는 호스트 인터페이스(4111), 호스트 컨트롤러(4120) 및 DRAM (4130)을 포함한다.
호스트(4100)는 SSD(4200)에 데이터를 라이트하거나 SSD (4200)로부터 데이터를 리드할 수 있다. 호스트 컨트롤러(4120)는 호스트 인터페이스(4111)를 통해 SSD(4200)에 명령, 어드레스, 제어 신호 등과 같은 신호들(SGL)을 전송할 수 있다. DRAM(4130)은 호스트(4100)의 메인 메모리일 수 있다.
SSD(4200)는 호스트 인터페이스(4211)를 통해 호스트(4100)와 신호들(SGL)을 교환하고 전원 커넥터(4221)를 통해 전원을 공급받을 수 있다. SSD (4200)는 복수의 비 휘발성 메모리들(4201 내지 420n), SSD 컨트롤러(4210) 및 보조 전원 공급부(amuxiliary power supply, 4220)를 포함한다. 여기서, 비 휘발성 메모리들 (4201 내지 420n)은 플래시 메모리뿐만 아니라 PRAM, MRAM, ReRAM 등으로 구현될 수 있다. SSD 컨트롤러(4210)는 도 2의 컨트롤러(125a) 또는 도 7의 컨트롤러(125b)에 의해 구현될 수 있다. 메모리 장치들(4201 내지 420n) 각각은 도 2의 메모리 장치 (126b) 또는 도 7의 메모리 장치(126a)에 의해 구현될 수 있다.
복수의 비 휘발성 메모리들 (4201 내지 420n)은 SSD (4200)의 저장 매체로 사용될 수 있다. 복수의 비 휘발성 메모리들 (4201 내지 420n)은 복수의 채널들(CH1 내지 CHn)을 통해 SSD 컨트롤러(4210)와 연결될 수 있다. 하나의 채널은 하나 이상의 비 휘발성 메모리와 연결될 수 있다. 채널들(CH1 내지 CHn) 각각은 도 2 및 도 7에 도시된 데이터 채널(130)에 대응할 수 있다. 하나의 채널로 연결된 비 휘발성 메모리는 동일한 데이터 버스와 연결될 수 있다.
SSD 컨트롤러(4210)는 호스트 인터페이스(4211)를 통해 호스트(4100)와 신호들(SGL)을 교환할 수 있다. 여기서, 신호들(SGL)은 명령, 주소 및 데이터 등을 포함할 수 있다. SSD 컨트롤러(4210)는 호스트(4100)의 명령에 따라 대응하는 비 휘발성 메모리에 데이터를 라이트 또는 리드하도록 구성될 수 있다.
보조 전원 공급부(4220)는 전원 커넥터(4221)를 통해 호스트 (4100)와 연결될 수 있다. 보조 전원 공급부(4220)는 호스트(4100)로부터 전원(PWR)에 의해 충전될 수 있다. 보조 전원 공급부(4220)은 SSD(4200) 내에 또는 SSD(4200) 외부에 배치될 수 있다. 예를 들어, 보조 전원 공급부(4220)은 메인 보드에 장착되어 보조 전원을 SSD(4200)에 공급할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110: 호스트 컨트롤러(host controller)
120, 125a: 관리 컨트롤러(managing controller)
121: 호스트 인터페이스(host interface)
122: 프로세서(processor)
123: 리드 버퍼(read buffer)
124: 라이트 버퍼(write buffer)
125: 액세스 컨트롤러(access controller)
126, 126a: 메모리 장치
201: 메모리 어레이
202: 페이지 버퍼(202)
203, 209: ECC 인코더
204, 210: 감산기(subtractor)
205: 압축기(compressor)
206, 207: I/O 버퍼(input/output buffer)
208: 압축 해제기(decompressor)
211: ECC 디코더
212: 버스 인터페이스

Claims (13)

  1. 데이터 채널;
    상기 데이터 채널을 통해 요청을 출력하는 컨트롤러; 및
    버퍼를 포함하고, 데이터 및 대응하는 제 1 패리티를 저장하고, 상기 데이터 채널을 통한 상기 요청의 수신에 응답하여 제 2 패리티를 생성하기 위해 상기 데이터에 대한 인코딩 동작을 수행하고, 상기 제 1 패리티 및 상기 제 2 패리티와의 차이를 생성하고, 상기 차이를 압축하여 압축된 패리티 차이(compressed parity difference)를 생성하고, 상기 데이터 및 상기 압축된 패리티 차이를 상기 버퍼에 저장하도록 구성된 메모리 장치를 포함하고 상기 컨트롤러는 상기 요청을 발행한 후에 상기 데이터 채널을 통해 상기 버퍼로부터 상기 데이터 및 상기 압축된 패리티 차이를 검색하고, 상기 검색된 데이터 및 상기 검색된 압축된 패리티 차이를 사용하여 수정된 데이터를 생성하도록 구성된 것인 메모리 시스템.
  2. 제 1 항에 있어서, 상기 메모리 장치는
    상기 인코딩 동작을 수행하도록 구성된 ECC(Error Checking and Correction) 인코더를 포함하는 메모리 시스템.
  3. 제 1 항에 있어서, 상기 메모리 장치는
    상기 차이를 생성하기 위해 상기 제 1 패리티 및 상기 제 2 패리티에 대해 감산 동작을 수행하도록 구성된 감산기를 포함하는 메모리 시스템.
  4. 제 1 항에 있어서, 상기 메모리 시스템은
    입/출력 (I/O) 버퍼를 더 포함하고,
    상기 메모리 장치는 상기 데이터 및 상기 압축된 차이를 상기 I/O 버퍼에 저장함으로써 상기 컨트롤러가 상기 데이터 및 상기 압축된 차이에 액세스할 수 있도록 하는, 메모리 시스템.
  5. 삭제
  6. 제 1 항에 있어서, 상기 컨트롤러는,
    검색된 데이터에 대해 인코딩 동작을 수행하여 제 1 결과를 생성하도록 구성된 ECC(error checking and correction) 인코더; 및
    상기 검색된 압축된 차이에 대해 압축 해제 동작을 수행하여 제 2 결과를 생성하도록 구성된 압축 해제 회로;를 포함하고,
    상기 컨트롤러는 상기 검색된 데이터, 상기 제 1 결과 및 상기 제 2 결과를 사용하여 정정된 데이터를 생성하는 것인 메모리 시스템.
  7. 메모리 시스템의 동작 방법에 있어서,
    상기 메모리 시스템의 메모리 장치에 의해, 컨트롤러로부터의 요청에 응답하여 데이터 및 패리티를 로딩하는 단계;
    상기 메모리 장치에 의해, 로드된 패리티와 상기 로드된 데이터로부터 계산된 패리티 간의 차이를 압축하여 압축된 패리티 차이(compressed parity difference)를 생성하는 단계; 상기 메모리 장치에 의해, 상기 로드된 데이터 및 상기 압축된 패리티 차이를 상기 메모리 장치의 버퍼에 저장하는 단계;
    상기 컨트롤러에 의해, 상기 요청을 발행한 후에 데이터 채널을 통해 상기 버퍼로부터 상기 데이터 및 상기 압축된 패리티 차이를 검색하는 단계;및
    상기 컨트롤러에 의해, 상기 검색된 데이터 및 상기 검색된 압축된 패리티 차이를 사용하여 수정된 데이터를 생성하는 단계;를 포함하는 메모리 시스템의 동작 방법.
  8. 제 7 항에 있어서, 상기 압축된 패리티 차이를 생성하는 단계는,
    상기 메모리 장치에 의해, 상기 로드된 데이터에 대해 인코딩 동작을 수행하여 상기 계산된 패리티를 생성하는 단계;
    상기 메모리 장치에 의해, 상기 로드된 패리티 및 상기 계산된 패리티에 대해 감산 연산을 수행하여 결과를 생성하는 단계; 및
    상기 메모리 장치에 의해, 상기 압축된 패리티 차이를 생성하기 위해 상기 결과를 압축하는 단계를 포함하는 메모리 시스템의 동작 방법.
  9. 삭제
  10. 삭제
  11. 제3항에 있어서, 상기 감산기는 XOR 논리 회로인 메모리 시스템.
  12. 제1항에 있어서, 상기 메모리 장치는
    상기 차이에 대한 압축을 수행하도록 구성된 압축 회로를 포함하는 메모리 시스템.
  13. 제6항에 있어서, 상기 컨트롤러는
    상기 제 1 결과 및 상기 제 2 결과에 대해 감산 연산을 수행하여 복원된 패리티를 생성하는 감산기; 및
    상기 검색된 데이터 및 상기 복원된 패리티에 대한 디코딩 동작을 수행하여 상기 정정된 데이터를 생성하도록 구성된 ECC 디코더를 더 포함하는 메모리 시스템.
KR1020170116115A 2016-09-20 2017-09-11 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템 KR102374113B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/270,292 2016-09-20
US15/270,292 US10372534B2 (en) 2016-09-20 2016-09-20 Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device

Publications (2)

Publication Number Publication Date
KR20180031572A KR20180031572A (ko) 2018-03-28
KR102374113B1 true KR102374113B1 (ko) 2022-03-14

Family

ID=61621079

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170116115A KR102374113B1 (ko) 2016-09-20 2017-09-11 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템

Country Status (2)

Country Link
US (1) US10372534B2 (ko)
KR (1) KR102374113B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481972B1 (en) * 2015-08-10 2019-11-19 Google Llc File verification using cyclic redundancy check
EP3669460A4 (en) 2017-08-18 2021-05-19 Nokia Solutions and Networks Oy USING LDPC BASIC GRAPHICS FOR NR
US10691533B2 (en) * 2017-12-12 2020-06-23 Micron Technology, Inc. Error correction code scrub scheme
US10719397B2 (en) 2018-06-08 2020-07-21 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
KR20200034420A (ko) 2018-09-21 2020-03-31 삼성전자주식회사 복수의 에러 정정 기능을 갖는 메모리 장치 및 메모리 시스템과 그 동작 방법
US10725911B2 (en) * 2018-12-10 2020-07-28 Sap Se Non-Uniform pagination of columnar data
TWI740187B (zh) * 2019-02-20 2021-09-21 慧榮科技股份有限公司 存取方法
US20220137835A1 (en) * 2020-10-30 2022-05-05 Kioxia Corporation Systems and methods for parity-based failure protection for storage devices
KR20220075948A (ko) * 2020-11-30 2022-06-08 에스케이하이닉스 주식회사 컨트롤러 및 이의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036901A1 (en) 2004-08-13 2006-02-16 Gemini Storage Data replication method over a limited bandwidth network by mirroring parities
US20120233521A1 (en) 2011-03-08 2012-09-13 Kwok Zion S Apparatus, system, and method for decoding linear block codes in a memory controller

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110073932A (ko) * 2009-12-24 2011-06-30 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
KR102041874B1 (ko) * 2012-11-15 2019-11-07 삼성전자주식회사 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036901A1 (en) 2004-08-13 2006-02-16 Gemini Storage Data replication method over a limited bandwidth network by mirroring parities
US20120233521A1 (en) 2011-03-08 2012-09-13 Kwok Zion S Apparatus, system, and method for decoding linear block codes in a memory controller

Also Published As

Publication number Publication date
KR20180031572A (ko) 2018-03-28
US20180081754A1 (en) 2018-03-22
US10372534B2 (en) 2019-08-06

Similar Documents

Publication Publication Date Title
KR102374113B1 (ko) 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템
US10581458B2 (en) Data storage apparatus and operating method thereof
US10153782B2 (en) Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes
US10116333B2 (en) Decoder with parallel decoding paths
US10193577B2 (en) Stopping criteria for layered iterative error correction
US10326479B2 (en) Apparatuses and methods for layer-by-layer error correction
TWI612527B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10153052B2 (en) Flash command that reports a count of cell program failures
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
US11169873B2 (en) Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US9430375B2 (en) Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
TWI670725B (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
KR102004928B1 (ko) 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
JP7186262B2 (ja) 共有データ統計情報を使用したコンテンツアウェア復号(Content Aware Decoding)
KR20220120859A (ko) 메모리 시스템 내 에러 정정 코드를 사용하는 장치 및 방법
CN107301873B (zh) 译码方法、存储器储存装置及存储器控制电路单元
CN107590018B (zh) 译码方法、存储器控制电路单元及存储器存储装置
US11923867B1 (en) Iterative decoder with a dynamic maximum stop condition
US11901911B1 (en) Stall detection and mitigation in iterative decoders
TWI829252B (zh) 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置
US11923868B1 (en) Stall mitigation in iterative decoders
TWI764602B (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
US11705925B2 (en) Dynamic bit flipping order for iterative error correction
CN117785545A (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN113129968A (zh) 数据存取方法、存储器控制电路单元以及存储器存储装置

Legal Events

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