KR20180021324A - 저장 장치 및 그것의 동작 방법 - Google Patents

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

Info

Publication number
KR20180021324A
KR20180021324A KR1020160105370A KR20160105370A KR20180021324A KR 20180021324 A KR20180021324 A KR 20180021324A KR 1020160105370 A KR1020160105370 A KR 1020160105370A KR 20160105370 A KR20160105370 A KR 20160105370A KR 20180021324 A KR20180021324 A KR 20180021324A
Authority
KR
South Korea
Prior art keywords
code
rio
channel
decoding
data
Prior art date
Application number
KR1020160105370A
Other languages
English (en)
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 KR1020160105370A priority Critical patent/KR20180021324A/ko
Priority to US15/676,623 priority patent/US10459788B2/en
Publication of KR20180021324A publication Critical patent/KR20180021324A/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • 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/1072Adding 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 multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes

Abstract

본 발명은 k 비트 멀티 레벨 셀들을 갖는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 디코딩 방법을 개시한다. 본 발명은, 멀티 레벨 셀들로부터
Figure pat00127
회 이하의 센싱 동작들을 수행하는 단계, RIO(random input/output) 코드를 이용하여 채널 에러를 정정하면서 상기 센싱 동작들의 각각에 대응하는 페이지들을 디코딩하는 단계, 및 상기 디코딩된 페이지들로부터 사용자 데이터를 추출하는 단계를 포함할 수 있다. 이로써, 읽기 성능을 향상시키면서 동시에 채널 에러 특성을 좋게 할 수 있다.

Description

저장 장치 및 그것의 동작 방법{STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명의 저장 장치 및 그것의 동작 방법에 관한 것이다.
플래시 메모리에서는 동일한 셀에 더 많은 비트를 저장하기 위하여 셀 당 여러 비트의 데이터를 저장한다. 셀 당 저장되는 비트 수가 증가할수록 데이터를 읽어내기 위해서 보다 많은 메모리 센싱 과정이 필요하고, 이로 인하여 낸드 플래시 메모리 읽기 성능이 저하된다. 이러한 성능 저하를 방지하기 위한 목적으로 최근에는 RIO (Random IO) 코드 등의 기술이 제안된 바 있다. 종래의 RIO 코드에서는 플래시 메모리 채널에서 발생하는 노이즈를 고려하지 않고 설계되었다. 따라서 플래시 메모리를 읽는 과정에서 발생한 비트 에러가 RIO 디코더를 통과하면서 증폭되어 본래보다 에러 비트의 수가 크게 증가하게 된다.
본 발명은 위에서 설명한 기술적 과제를 해결하기 위한 것으로, 본 발명의 목적은 채널 에러를 감소시키면서 메모리 읽기 성능을 향상시키는 저장 장치 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 저장 장치의 동작 방법은, RIO(random input/output) 코드를 이용하여 사용자 데이터를 인코딩 하는 단계, 상기 인코딩된 데이터를 멀티 레벨 셀들로 프로그램시키는 단계, 및 상기 멀티 레벨 셀들로부터 한 번의 메모리 센싱을 통해 상기 사용자 데이터의 일부를 읽는 단계, 및 상기 RIO 코드를 이용하여 채널 에러를 정정하면서 상기 읽혀진 데이터를 디코딩하는 단계를 포함하고, 상기 RIO 코드는 채널 에러를 정정하기 위한 채널 코드를 포함할 수 있다.
본 발명의 실시 예에 다른 k 비트 멀티 레벨 셀들을 갖는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 디코딩 방법은, 멀티 레벨 셀들로부터
Figure pat00001
회(여기서,
Figure pat00002
는 floor 연산자) 이하의 센싱 동작들을 수행하는 단계, RIO(random input/output) 코드를 이용하여 채널 에러를 정정하면서 상기 센싱 동작들의 각각에 대응하는 페이지들을 디코딩하는 단계, 및 상기 디코딩된 페이지들로부터 사용자 데이터를 추출하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 저장 장치는, k-비트 멀티 레벨 셀들을 갖는 적어도 하나의 비휘발성 메모리 장치, 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 메모리 제어기는, 사용자 데이터를 제 1 코드를 이용하여 인코딩하는 에러 정정 인코더, 상기 제 1 인코딩된 데이터를 제 2 코드를 이용하여 인코딩 하는 RIO(random input/output) 인코더, 상기 k-비트 멀티 레벨 셀들로부터
Figure pat00003
회 이하의 센싱 동작들을 통하여 읽혀진 페이지들을 채널 에러를 복구하면서 상기 제 2 코드를 이용하여 디코딩하는 RIO 디코더, 및 에러 정정을 위해 상기 디코딩된 페이지들의 각각을 상기 제 1 코드를 이용하여 디코딩하는 에러 정정 디코더를 포함할 수 있다.
본 발명의 저장 장치 및 그것의 동작 방법은, 한 번의 센싱 동작으로 읽혀진 데이터를 채널 코딩을 갖는 RIO 코드를 이용하여 디코딩함으로써, 채널 에러를 복구하면서 사용자 데이터의 일부를 읽을 수 있다. 이에, 읽기 성능을 향상시키면서 동시에 채널 에러를 현저하게 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 장치를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 저장 장치에서 사용자 데이터 구분 및 데이터 매핑 방법을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 저장 장치에서 L 레벨 메모리 셀을 위한 RIO 코드 모델링을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 저장 장치에서 3-레벨 셀을 위한 RIO 코드 모델링에 대한 실시 예를 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 저장 장치에서 3-레벨 셀을 위한 RIO 코드 모델링에 대한 다른 실시 예를 보여주는 도면이다.
도 6은 도 5에 도시된 RIO 코드 모델링을 K 레벨 셀을 위한 RIO 코드 모델링으로 확장시킨 것을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 다른 실시 예에 따른 저장 장치를 예시적으로 보여주는 도면이다.
도 8은 새롭게 얻은 벡터 채널 Wvec과 그에 대응하는 새로운 입력신호 Un을 예시적으로 보여주는 도면이다.
도 9는 n 개의 편향 채널로 분리된 새로운 벡터 채널을 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 편향된 채널을 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 첫 번째 페이지의 인코딩 과정을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 두 번째 페이지의 인코딩 과정을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 두 번째 페이지의 간략화 된 인코딩 과정을 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 그래프 형 알고리즘을 이용한 연속적인 제거(successive cancellation) 과정을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 데이터 서버 시스템을 예시적으로 보여주는 블록도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명의 실시 예에 따른 저장 장치 및 그것의 동작 방법은 메모리 채널에서 발생하는 비트 에러를 정정하면서, 동시에 1회의 센싱 만으로 데이터 복원 가능한 RIO(random input/output) 코드를 사용할 수 있다. 여기서 RIO 코드는, RIO 코드 스킴을 모델링 한 후, 정보이론적 분석을 통하여 이론적 한계분석을 하고, 그 한계치에 근접하는 성능을 내는 채널 코드(예를 들어, 폴라 코드(polar code))를 이용할 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 장치(10)를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 저장 장치(10)는 적어도 하나의 비휘발성 메모리 장치(NVM(s), 100) 및 그것을 제어하는 메모리 제어기(NVM CTRL, 200)를 포함할 수 있다. 실시 예에 있어서, 저장 장치(10)는 SSD(solid state drive), UFS(universal flash storage) 장치, eMMC(embedded multimedia card), SD(secure digital) 카드, 혹은 그와 같은 것일 수 있다.
적어도 하나의 비휘발성 메모리 장치(100)는 데이터를 저장하도록 구현될 수 있다. 실시 예에 있어서, 적어도 하나의 비휘발성 메모리 장치(100)는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM), TRAM(Thyristor Random Access Memory) 등을 포함할 수 있다.
또한, 비휘발성 메모리는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명의 실시 예를 들어, 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 혹은 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 혹은 기판 위에 위치할 수 있다. 모놀리식(monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착 됨을 의미한다.
본 발명의 개념에 따른 실시 예를 들어, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 혹은 비트 라인들을 갖는다. 3차원 메모리 어레이에 적합한 구성은, 삼성전자에서 출원하였으며, 이 출원의 참고문헌으로 결합된 US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 2011/0233648에 설명될 것이다. 본 발명의 비휘발성 메모리(NVM)는 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다.
적어도 하나의 비휘발성 메모리 장치(100)는 복수의 비휘발성 메모리 셀들을 포함할 수 있다. 여기서 복수의 비휘발성 메모리 셀들의 각각은, 멀티 비트 데이터를 저장하는 멀티 비트 셀(multi bit cell, MLC)일 수 있다. 예를 들어, 비휘발성 메모리 셀들의 각각은 k-비트 데이터를 저장할 수 있다.
메모리 제어기(200)는 적어도 하나의 비휘발성 메모리 장치(100)에 적어도 하나의 메모리 채널을 통하여 연결되고, 적어도 하나의 비휘발성 메모리 장치(100)의 프로그램/읽기 동작을 제어하도록 구현될 수 있다.
또한, 메모리 제어기(200)는 RIO 인코더(220) 및 RIO 디코더(240)를 포함할 수 있다.
RIO 인코더(220)는 사용자 데이터(user data)를 수신하고, RIO 코드(code)의 인코딩 알고리즘에 따라 사용자 데이터를 변환시키도록 구현될 수 있다. 여기서 RIO 코드는, 메모리 채널 내부의 비트 에러를 복구하면서, 동시에 k (k는 1 보다 큰 정수) 비트 멀티 레벨 셀들(MLCs)에 저장된 사용자 데이터를 최대
Figure pat00004
(여기서,
Figure pat00005
는 floor 연산자)회의 센싱 동작들에 의해 추출하도록 사용자 데이터를 인코딩할 수 있다.
실시 예에 있어서, RIO 코드는, 메모리 채널의 에러를 복구하기 위한 채널 코딩(channel coding)을 포함할 수 있고, 폴라 코드(polar code)를 이용하여 구현될 수 있다.
실시 예에 있어서, 인코딩된 데이터는 데이터 비트들, RIO 코드 패리티, 및 채널 패리티를 포함할 수 있다. 실시 예에 있어서, 데이터 비트들, RIO 코드 패리티(parity), 혹은 채널 코드 패리티의 위치는 컨디션널 엔트로피(conditional entropy)에 의해 결정될 수 있다. 다른 실시 예에 있어서, 데이터 비트들, RIO 코드 패리티(parity), 혹은 채널 코드 패리티의 위치는 바타차야 파라미터(Bhattacharyya parameter)에 의해 결정될 수 있다.
RIO 디코더(240)는 비휘발성 메모리 장치(100)로부터 읽혀진 인코딩된 데이터를 RIO 코드 알고리즘에 따라 디코딩하도록 구현될 수 있다. 예를 들어, RIO 디코더(240)는 한 번의 메모리 센싱 동작으로 읽혀진 페이지 데이터를 디코딩함으로써, 채널 에러를 복구하면서 동시에 사용자 데이터의 일부를 추출할 수 있다.
종래의 저장 장치는, RIO 코드와 ECC (error correction code)를 분리해서 수행하였다. 일반적으로 쓰기 동작을 수행할 때, 사용자 데이터를 비휘발성 메모리 장치에서 발생하는 비트 에러를 정정하도록 ECC 인코딩에서 사용자 데이터에 패리티 비트가 덧붙여진다. 종래의 저장 장치는 비휘발성 메모리 장치에서 전하 손실(charge loss), 읽기 디스터번스(read disturbance) 등으로 발생된 비트 에러의 개수가 RIO 디코더를 통과하는 순간에 크게 증가할 수 있다. 이를 에러 전파(error propagation)이라고 하는데, 비트 에러를 포함한 데이터를 이용하여 각종 연산을 수행하면서 특정 위치의 에러가 다른 위치들로 전파되는 것이다. 비휘발성 메모리 장치에서 발생된 비트 에러의 개수가 매우 적더라도, RIO 디코더를 통과하면서 ECC 정정 능력을 벗어나는 수준으로 에러의 개수가 늘어날 수 있다.
반면에, 본 발명의 실시 예에 따른 저장 장치(10)는 RIO 디코더(240)에서 RIO 코드 디코딩과 채널 코드 디코딩을 동시에 수행함으로써, 종래의 그것과 비교하여 에러 전파를 줄이거나, 혹은 없애 수 있다. 예를 들어, 본 발명의 RIO 디코더(240)는 채널 에러를 정정하는 기능을 포함함으로써, 종래의 그것과 비교하여 에러 전파를 현저하게 줄이거나 차단시킬 수 있다.
한편, 본 발명의 저장 장치(10)는 폴라 코드(polar code)를 이용한 RIO 코드로 구현될 수 있다. 아래에서는 설명의 편의를 위하여 폴라 코드를 이용한 RIO 코드에 대한 설계 방법을 설명하겠다. 하지만, 본 발명의 채널 코딩이 반드시 여기에 제한되지는 않는다고 이해되어야 할 것이다. 우선, RIO 코드 설계 방법은, 브로드캐스트 채널 모델링하는 동작을 수행할 수 있다. 이후, 모델링 된 채널을 근거로 하여 폴라 인코딩 방법과 폴라 디코딩 방법이 설계될 수 있다.
도 2는 본 발명의 실시 예에 따른 저장 장치(10)에서 사용자 데이터 구분 및 데이터 매핑 방법을 예시적으로 보여주는 도면이다. 본 발명의 실시 예에 따른 RIO 코드는, 사용자 데이터를 L-1 개의 작은 데이터 청크(Chunk, 혹은 'page')로 나누고, K (K는 자연수) 번째 데이터 청크를 인코딩 시킴으로써, K-1번째 상태와 K 번째 상태를 구분하는 문턱전압(혹은, 읽기 레벨)으로 K 번째 데이터 청크를 검출할 수 있도록 한다. 도 2에서는 설명의 편의를 위하여, 4-비트 MLC의 경우 사용자 데이터 구분 및 데이터 매핑 방법이 도시된다.
도 2를 참조하면, 사용자 데이터의 제 1 데이터 청크는 소거 상태(E)와 나머지 상태들(P1 ~ P15)을 구분함으로써 읽혀질 수 있다. 제 2 데이터 청크는 제 1 프로그램 상태(P1)의 이하 상태들(E, P1)와 그것의 나머지 상태들(P2 ~ P15)을 구분함으로써 읽혀질 수 있다. 유사한 방법으로, 제 16 데이터 청크는, 제 14 프로그램 상태(P14)의 이하 상태들(E ~ P14)와 나머지 상태(P15) 상태를 구분함으로써 읽혀질 수 있다. 즉, RIO 코드는 상태들(E, P1 ~ P15)의 각각을 구분하는 읽기 레벨에 대응하는 데이터 청크를 발생할 수 있다. 상술 된 RIO 인코딩 방법을 사용하면, 센싱 동작이 진행될 때마다 한 개의 데이터 청크가 읽혀질 수 있다.
도 3은 본 발명의 실시 예에 따른 저장 장치(10)에서 L 레벨 메모리 셀을 위한 RIO 코드 모델링을 예시적으로 보여주는 도면이다. 도 3을 참조하면, RIO 코딩 방법은 아래와 같이 모델링 할 수 있다.
사용자 데이터는 K개의 작은 데이터 청크들(W1, ..., WK, 혹은 "페이지들")을 포함할 수 있다. 여기서, W1은 E와 P1 사이의 골을 센싱하는 동작을 통해 읽어낼 수 있는 데이터 청크이고, WK는 K 번째 문턱전압 센싱 동작으로 읽어낼 수 있는 데이터 청크이다.
이 K 개의 데이터 청크들은 RIO 인코더(220, 도 1 참조) 통과하여 Xn 으로 변환되고, 변환된 Xn이 메모리 셀에 저장될 수 있다. 이후 필요한 데이터 청크 WK를 얻기 위해서, 다음과 같은 동작이 수행될 것이다. K-1 상태와 K 번째 상태 사이의 센싱 동작을 수행함으로써
Figure pat00006
이 얻어진다. 이때,
Figure pat00007
는 아래의 수학식으로 결정될 수 있다.
Figure pat00008
Figure pat00009
를 RIO 디코더(240, 도 1 참조)에 통과 시키면, 사용자 데이터를 디코딩한
Figure pat00010
가 계산될 수 있다.
도 4는 본 발명의 실시 예에 따른 저장 장치(10)에서 3-레벨 셀을 위한 RIO 코드 모델링에 대한 실시 예를 보여주는 도면이다. 비휘발성 메모리 장치(100, 도 1 참조)의 프로그램 동작, 읽기 동작은 이상적이지 않기 때문에, 열 노이즈, 프로그래밍 노이즈, 셀간 간섭, 인접 레벨 간의 간섭 등이 존재한다. 이러한 영향들을 고려하여 RIO 코드 설계(code design)는, 도 4에 도시된 바와 모델링 될 수 있다. 여기서, p는 일어날 확률이고, q는 일어나지 않을 확률이다.
도 5는 본 발명의 실시 예에 따른 저장 장치(10)에서 3-레벨 셀을 위한 RIO 코드 모델링에 대한 다른 실시 예를 보여주는 도면이다. 도 5를 참조하면, RIO 코드 모델링은, 디터미니스틱(deterministic, 결정) 브로드캐스트(broadcast) 채널로써 노이즈가 없는 부분(V1, V2)과 노이즈가 있는 이진 채널(binary channel) 부분(Y1, Y2)으로 구성될 수 있다. 이러한 RIO 코드 모델링은 블랙웰 채널(blackwell channel) 노이즈에 강력한 효과를 갖는다.
도 6은 도 5에 도시된 RIO 코드 모델링을 K 개의 청크들을 갖는 경우로 확장시킨 모델링을 예시적으로 보여주는 도면이다. 도 6을 참조하면, K 개의 청크들에 대응하는 상태들(X, 0 ~ K)의 각각은 디터미니스틱 브로드캐스트 채널을 통해 매핑된 후(V1 ~ VK), 대응하는 이진 채널로 매핑될 수 있다(Y1 ~ YK).
한편, 본 발명의 실시 예에 따른 저장 장치는 에러 정정 코드(error correction code)를 더 포함할 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 저장 장치(20)를 예시적으로 보여주는 도면이다. 도 7을 참조하면, 저장 장치(20)는 적어도 하나의 비휘발성 메모리 장치(100) 및 그것을 제어하는 메모리 제어기(200a)를 포함할 수 있다.
메모리 제어기(200a)는, 도 1에 도시된 그것과 비교하여, 메모리 제어기 ECC를 수행하는 ECC 인코더(210), ECC 디코더(250)를 더 포함할 수 있다.
ECC 인코더(210)는 데이터를 수신하고, ECC 코드 (혹은, "제 1 코드")를 이용하여 데이터에 대응하는 패리티를 발생시키고, 이것들을 RIO 인코더(220)로 전송하도록 구현될 수 있다. 실시 예에 있어서, ECC 코드는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation), 혹은 그와 같은 것일 수 있다.
ECC 디코더(250)는 RIO 디코더(240)로부터 데이터 및 패리티 값을 수신하고, 이것들을 ECC 코드(혹은, "제 1 코드")를 이용하여 디코딩 함으로써, 데이터의 에러를 검출 및 정정하도록 구현될 수 있다.
아래에서는 폴라 코드를 이용한 RIO 인코더/디코더 구현을 좀더 자세하게 설명하겠다. E.Arikan에 의해서 발명된 폴라 코드는, 채널 편향 현상을 이용한 코드로써, Shannon에 의해서 주장된 정보이론적 한계를 달성할 수 있는 채널 코드이다. 채널 편향 현상은 n 개의 i.i.d.(independent identically distributed)채널 W 앞에 채널 편향 현상을 일으킬 수 있는 행렬 Gn (편향행렬)을 곱해서 얻은 새로운 벡터 채널 Wvec 이 완벽히 신호를 복구할 수 있는 채널과 신호를 복구할 수 없는 채널로 분리되는 현상을 가리킨다.
도 8은 새롭게 얻은 벡터 채널 Wvec과 그에 대응하는 새로운 입력신호 Un을 예시적으로 보여주는 도면이다. 이렇게 얻은 새로운 벡터 채널은 더 이상 i.i.d.(independent identically distributed)하지 않는 n 개의 채널로 다시 분리할 수 있다.
도 9는 n 개의 편향 채널로 분리된 새로운 벡터 채널을 보여주는 도면이다. 아래는 분리된 편향 채널에 대응하는 수학식이다.
Figure pat00011
이렇게 분리된 n 개의 채널은 완벽히 좋은 채널이거나 노이즈 때문에 신호를 복구할 수 없는 나쁜 채널 중 하나로 수렴하는 양상을 갖는다. 이런 현상은 n이 커짐에 따라 더욱 뚜렷하게 나타난다. 만약 좋은 채널로 편향되는 채널들의 인덱스들을 안다면, 새로운 입력신호의 해당 위치에 전송하고자 하는 정보를 싣고 나쁜 채널로 편향하는 채널들에는 이미 약속된 비트(예로서 "0")를 싣는 것으로 안정된 통신을 할 수 있다. n이 충분히 클 때 편향현상을 이용하여 벡터 채널 Wvec을 통하여 전송할 수 있는 최대의 메시지 량은, 즉 좋은 채널로 편향되는 채널수는
Figure pat00012
이다. 즉 앞서 언급했던 Shannon의 정보이론적 한계 즉 채널의 커패시티를 달성할 수 있다.
Arikan은 채널의 입력신호가 이진 신호이고, n이 2의 제곱수일 때, 즉
Figure pat00013
일 때, 아래와 같은 수학식에 따른 편향행렬 Gn을 사용하여 이와 같은 편향현상을 증명하였다.
Figure pat00014
여기서
Figure pat00015
는 행렬의 Kronecker product 연산을 의미한다. 폴라 코드를 이용한 K+1 레벨의 RIO 코드 스킴의 설계는 다음과 같다.
K+1 개의 상태들을 갖는 비휘발성 메모리 장치에 1회의 tR로 데이터를 추출하는 방법은 도 6에서 모델링 되었다. 이러한 모델링을 근거로 하여 폴라 코드 인코딩 방법에 대하여 설명하겠다.
일반적으로 폴라 코드의 인코딩 과정은 다음과 같이 수행된다. 채널에서 기대되는 에러율이 낮은 비트 인덱스는 사용자 데이터를 그대로 채워 넣는다. 반면에 채널에서 기대되는 에러율이 높은 비트 인덱스는 인코더와 디코더가 모두 아는 신호를 채워 넣는다. 상술 된 과정을 통해 얻은 결과에 Gn을 곱한다.
도 10은 명의 실시 예에 따른 편향된 채널을 예시적으로 보여주는 도면이다. 도 10을 참조하면, 채널에서 기대되는 에러율이 높은 비트 인덱스들과 그렇지 않은 비트 인덱스들이 도시된다. 채널에서 기대되는 에러율이 높은 비트의 인덱스에 사용자 데이터를 저장하면, 디코더에서 복구하지 못할 확률이 높아질 것이다. 반면에, 채널에서 기대되는 비트 에러율이 낮은 비트 인덱스에 사용자 데이터를 저장하면, 디코더에서 높은 확률로 디코딩에 성공할 수 있다.
RIO 코드의 인코딩을 수행하기에 앞서 편향된 채널에서 각 비트 인덱스의 특성이 파악되고, 특정 비트 인덱스의 유저 데이터, RIO 패리티, ECC 패리티 중에 어는 것으로 사용할 지가 결정되어야 한다. 이는 바타차야(Bhattacharyya) 파라미터 값을 보고 알 수 있다. 이진 입력 신호 확률분포
Figure pat00016
와 채널전이 확률분포
Figure pat00017
가 주어졌을 때, Bhattacharyya 파라미터는 아래의 수학식으로 계산될 수 있다.
Figure pat00018
Bhattacharyya 파라미터를 이용하여 각각의 비트 인덱스가 아래의 수학식과 같이 분류될 수 있다.
Figure pat00019
여기서
Figure pat00020
집합에 j 번째 Page의 i번째 비트는 다음과 같은 특성을 가진다. 동일 Page 내의 이전 비트들
Figure pat00021
에 대하여 독립적이고, j-1 번째 Page (이전 Page,
Figure pat00022
)에 대하여 독립적이고, 베르누이 (1/2)의 확률 분포를 가진다는 것이다. 즉, 직관적으로 이 집합에 속해 있는 비트 인덱스들은 다른 비트들에 의존적이지 않기 때문에 메시지(혹은, 사용자 데이터)를 실어도 되는 좋은 채널로 생각할 수 있다.
반대로 집합
Figure pat00023
에 속해있는 인덱스들은 다음과 같은 특성을 갖는다. 동일 Page내의 이전 비트들
Figure pat00024
에 대하여 의존적이고 j-1 번째 Page (이전 Page,
Figure pat00025
)에 대하여 의존적이라는 것이다. 이 집합에 속하는 비트 인덱스들은 다른 비트들에 의하여 디터미니스틱(deterministic)하게 결정되므로 독립적인 메시지를 싣기에는 부적절하다.
집합
Figure pat00026
에 속해있는 비트 인덱스 i는 다음과 같은 특성을 갖는다. 동일 Page 내의 이전 비트들
Figure pat00027
에 대하여 독립적이고, 동일 Page 내의 메모리 센싱 결과
Figure pat00028
에 대하여 독립적이라는 것이다. 이 집합에 속하는 비트 인덱스들은 디코딩 과정에서 j번째 Page에 대한 정확한 정보를 가지고 있다고 해도
Figure pat00029
를 복구할 수 없다.
집합
Figure pat00030
에 속해있는 인덱스 i에 관해서는
Figure pat00031
가 철저하게
Figure pat00032
에 의존하기 때문에, j 번째 Page가
Figure pat00033
에 대한 정보를 가지고
Figure pat00034
를 복구할 수 있다. 즉 디코딩 입장에서는 이 집합에 속해있는 채널 인덱스들은 디코딩을 위한 좋은 채널로 생각할 수 있다.
집합
Figure pat00035
Figure pat00036
도 상술 된 설명과 유사하게 해석될 수 있다. 이와 같이 인코딩에 필요한 좋은 비트 인덱스들과 디코딩화에 필요한 비트 인덱스들은 서로 다른 집합에 속한다. 따라서 이들을 적절히 잘 조합하여 메시지를 실을 수 있는 채널들과 디코딩화에 유리한 채널들로 채널 분리를 진행함으로써, RIO 인코더 및 RIO 디코더가 구현될 수 있다.
아래에서는 RIO 코드 생성 및 RIO 인코딩 과정에 대하여 설명하겠다. 아래에서는 설명의 편의를 위하여 Page가 두 개인 경우에 대하여 폴라 코드를 이용한 전송 방식에 대해 설명하겠다. 동일한 방식을 Page가 3개 이상일 때도 적용하는 것이 가능하다. 첫 번째 Page에 저장할 데이터는 다음과 같이 결정된다. 각 비트 인덱스 별로 Bhattacharyya 파라미터를 구하고 아래와 수학식과 같이 세 가지 집합으로 분류한다.
Figure pat00037
도 11은 본 발명의 실시 예에 따른 첫 번째 페이지의 인코딩 과정을 예시적으로 보여주는 도면이다. 첫 번째 사용자는 집합
Figure pat00038
에 속하는 인덱스들에 유저 데이터를 싣게 된다. 여기서
Figure pat00039
를 살펴보면
Figure pat00040
에 속해있기 때문에
Figure pat00041
는 앞에서 순차적으로 생성된
Figure pat00042
과는 독립적이므로 메시지를 실을 수 있는 반면에
Figure pat00043
에도 속해있기 때문에 사용자가 받은 신호
Figure pat00044
과 앞서 복구한
Figure pat00045
를 사용하여
Figure pat00046
를 복구할 수 있게 된다. 나머지 집합
Figure pat00047
Figure pat00048
도 자신이 속한 집합들의 성질에 따라서 그 인코딩 및 디코딩화 방법이 정해지게 된다.
첫 번째 Page는 다음의 수학식과 같은 인코딩 방법으로 각 채널 입력신호를 정한다.
Figure pat00049
이렇게 정해진 신호
Figure pat00050
에 역편향행렬
Figure pat00051
을 곱하여
Figure pat00052
을 계산한다. 이는 차후에 다른 페이지의 인코딩 결과
Figure pat00053
를 계산한 뒤 최종적으로 비휘발성 메모리 장치의 상태로 매핑된다.
도 12는 본 발명의 실시 예에 따른 두 번째 페이지의 인코딩 과정을 예시적으로 보여주는 도면이다. 두 번째 Page에서는 각 비트 인덱스들을 다음의 수학식과 같은 5개의 집합으로 구분한다.
Figure pat00054
두 Page의 비트 인덱스 분류에서
Figure pat00055
집합에 속하는 비트 인덱스들은 첫 번째 Page에 저장된 정보 (
Figure pat00056
)를 모른다면, 정확히 복구할 수 없게 되는 성질을 가지고 있다. 첫 번째 Page에 저장된 정보를 알기 위해서는 추가적인 메모리 센싱이 필요하므로, 이는 한 번의 메모리 센싱을 통해 데이터를 읽어낸다는 목적에 위배된다. 다행히도 n이 충분히 클 때
Figure pat00057
의 크기가 0임을 이론적으로 증명할 수 있다.
도 13은 본 발명의 실시 예에 따른 간략화 된 인코딩 과정을 예시적으로 보여주는 도면이다. 도 13을 참조하면, Page의 인코딩은 다음과 같이 간단해진다.
두 번째 Page는 집합
Figure pat00058
에 속하는 인덱스들에 사용자 데이터를 싣게 된다. 여기서
Figure pat00059
를 살펴보면
Figure pat00060
에 속해있기 때문에
Figure pat00061
는 앞에서 순차적으로 생성된
Figure pat00062
와 첫 번째 사용자
Figure pat00063
메시지
Figure pat00064
과는 독립적이므로 메시지를 실을 수 있는 반면에
Figure pat00065
에도 속해있기 때문에 사용자가 받은 신호
Figure pat00066
과 앞서 복구한
Figure pat00067
를 사용하여
Figure pat00068
를 복구할 수 있다.
나머지 집합
Figure pat00069
Figure pat00070
,
Figure pat00071
도 자신이 속한 집합들의 성질에 따라서 그 인코딩 및 디코딩화 방법이 정해지게 된다.
두 번째 Page는 다음과 같은 수학식에 따른 인코딩 방법으로 각 채널 입력신호를 정한다.
Figure pat00072
이렇게 정해진 신호
Figure pat00073
에 역편향행렬
Figure pat00074
을 곱하여
Figure pat00075
을 계산한다. 이렇게
Figure pat00076
Figure pat00077
을 구한 후 함수
Figure pat00078
의 역매핑을 이용하여, 아래의 수학식과 같이
Figure pat00079
을 계산한다.
Figure pat00080
만약
Figure pat00081
이 공집합이면 전송기는 오류를 선언한다.
한편, 아래에서는 RIO디코딩 과정을 설명하겠다.
첫 Page의 디코딩 과정은 아래와 수학식과 같이 진행될 것이다.
Figure pat00082
디코딩과 인코딩 과정에서 a posteriori probability에 대한 계산과정이 많이 반복되는데, 연속적인 제거(successive cancellation) 알고리즘 혹은 리스트 연속적인 제거(list successive cancellation) 알고리즘을 사용하여 계산 복잡도를 감소시킬 수 있다.
일예로
Figure pat00083
의 확률은 다음의 수학식들과 같이 재귀적으로 계산할 수 있다.
Figure pat00084
Figure pat00085
이는
Figure pat00086
등 다른 a posteriori probability에서도 동일한 방식으로 계산 가능하다. 이때 재귀적으로 각각의 확률을 구하는 것은
Figure pat00087
꼴의 높은 복잡도를 보인다. 그러므로 그래프 형 알고리즘을 이용한다.
도 14는 본 발명의 실시 예에 따른 그래프 형 알고리즘을 이용한 연속적인 제거 과정을 예시적으로 보여주는 도면이다.
4비트를 채널로 전송한다고 가정하고 2번째 4번째 비트가
Figure pat00088
에 속하고 1번째 3번째 비트가
Figure pat00089
에 속하는 상황에서의 전송을 가정해보자.
Figure pat00090
는 채널을 통해 받은 출력부의 결과 4비트이다.
위의 노드들은 각각 알고리즘에 따라 발현되는 순서로 진행되어 있다. 좌측의 1,8,9,12 번 노드는 각각
Figure pat00091
에서 i가 1,2,3,4인 경우에 해당되며 3,4,6,7는 채널편향을 적용하기 전 원래 채널의 확률 분포에서 계산 가능하다.
예를 들어, 폴라 코드를 적용하는 채널이 p의 crossover probability를 가지는 binary symmetric channel일 경우
Figure pat00092
으로 계산 가능하다.
가장 먼저 1번 노드에서는
Figure pat00093
를 계산하여야 한다. 이때 1번노드는 각각 2,5 번 노드를 발현시키며, 2, 5번 노드는 각각 3, 4번 노드와 6, 7번 노드를 발현시킨다. 이때 3, 4, 6, 7번 노드에서 원 채널에 따른
Figure pat00094
를 계산한 후, 이의 값을 수학식 12 재귀공식을 통해 2, 5번 노드에서 필요한
Figure pat00095
의 값을 각각 계산한 후 수학식 12 재귀 공식을 한 번 더 거쳐 1번 노드로 반환한다.
이와 마찬가지로 그래프를 구성하는 방식으로
Figure pat00096
을 계산할 수 있다. 이 때 첫 번째 비트는
Figure pat00097
에 속하므로
Figure pat00098
의 확률이 1/2 이상이면,
Figure pat00099
으로 디코딩화시키며 그 외의 경우 1로 디코딩 한다.
그 다음의 8번 노드에서는
Figure pat00100
을 계산하여야 한다. 이는 2번 5번 노드가 이미 계산되어 있으므로 이를 수학식 13 재귀공식에 대입하면, 바로
Figure pat00101
를 계산할 수 있다. 마찬가지의 방법으로
Figure pat00102
을 계산할 수 있다. 이 때 2번째 비트는
Figure pat00103
에 속하므로
Figure pat00104
을 기준으로
Figure pat00105
를 디코딩 한다.
3번째 비트에서는
Figure pat00106
를 계산한다. 이때 9번 노드는 10번 노드와 11번 노드를 발현시키고 10번과 11번 노드는 각각 3, 4번과 6, 7번 노트에서 계산한 값을 수학식 13 재귀공식에 대입하여 각각의 확률인
Figure pat00107
Figure pat00108
을 생성한다. 이후 9번 노드는 10번 노드와 11번 노드에서 계산된 값을 수학식 12 재귀공식에 대입하여
Figure pat00109
을 계산한다. 마찬가지의 방식으로
Figure pat00110
을 계산할 수 있다. 이때 3번째 비트는
Figure pat00111
에 속하므로
Figure pat00112
을 기준으로
Figure pat00113
을 디코딩할 수 있다.
4번째 비트에서는
Figure pat00114
을 계산한다. 이 때 12번 노드는 10번 노드와 11번 노드에서 계산된 값을 수학식 13 재귀 공식에 대입하여 바로
Figure pat00115
을 계산할 수 있다. 마찬가지의 방식으로
Figure pat00116
을 계산할 수 있다. 마지막 비트는
Figure pat00117
에 속하므로
Figure pat00118
을 기준으로
Figure pat00119
을 디코딩한다.
상술 된 방식을 통해 본 발명의 RIO 인코딩 및 디코딩화 복잡도를
Figure pat00120
으로 감소될 수 있다.
본 발명의 실시 예에 따른 저장 장치 및 그것의 동작 방법은, 멀티 레벨 셀 메모리에서 1회의 메모리 센싱만으로 발생한 비트 에러를 정정하면서 동시에 사용자 데이터의 일부를 추출하는 RIO 인코딩/디코딩을 수행할 수 있다.
본 발명의 실시 예에 따른 MLCs을 갖는 메모리를 포함하는 저장 장치는, 메모리 영역에 프로그램될 데이터를 수신하고, 수신된 데이터를 한 번의 메모리 센싱만으로 추출 및 비트 에러 복구가 동시에 가능하도록 하는 RIO 인코더를 포함할 수 있다. 또한, 본 발명의 실시 예에 따른 저장 장치는 한 번의 메모리 센싱을 통해 얻어진 신호를 이용하여 비트 에러 복구 및 사용자 데이터의 일부를 추출하는 작동을 동시에 가능케 하는 RIO 디코더를 포함할 수 있다.
한편, 본 발명은 데이터 서버에 응용 가능하다.
도 15는 본 발명의 실시 예에 따른 데이터 서버 시스템(1000)을 예시적으로 보여주는 블록도이다. 도 15를 참조하면, 데이터 서버 시스템(1000)은 데이터 베이스 관리 시스템(RDBMS, 1100), 캐시 서버(1200), 및 어플리케이션 서버(1300)를 포함할 수 있다.
캐시 서버(1200)는 데이터 베이스 관리 시스템(1100)으로부터의 무효화 통지에 대응하여 서로 다른 키(key), 값(value) 쌍을 유지하고, 삭제하는 키값 저장을 포함할 수 있다.
데이터 베이스 관리 시스템(RDBMS, 1100), 캐시 서버(1200), 및 어플리케이션 서버(1300) 중 적어도 하나는 도 1 내지 도 14에서 설명된 저장 장치 및 그것의 동작 방법으로 구현될 수 있다. 이로써, 읽기 성능을 향상시키면서, 동시에 채널 특성도 좋은 데이터 관리 환경이 마련될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10, 20: 저장 장치
100: 비휘발성 메모리 장치
200, 200a: 메모리 제어기
220: RIO 인코더
240: RIO 디코더
210: ECC 인코더
250: ECC 디코더

Claims (10)

  1. 저장 장치의 동작 방법에 있어서:
    RIO(random input/output) 코드를 이용하여 사용자 데이터를 인코딩 하는 단계;
    상기 인코딩된 데이터를 멀티 레벨 셀들로 프로그램시키는 단계; 및
    상기 멀티 레벨 셀들로부터 한 번의 메모리 센싱에 의해 상기 사용자 데이터의 일부를 읽는 단계; 및
    상기 RIO 코드를 이용하여 채널 에러를 정정하면서 상기 읽혀진 데이터를 디코딩하는 단계를 포함하고,
    상기 RIO 코드는 채널 에러를 정정하기 위한 채널 코드를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 멀티 레벨 셀들의 각각은 k 비트 데이터를 저장하고,
    상기 멀티 레벨 셀들에 저장된 상기 인코딩된 데이터는
    Figure pat00121
    회(여기서,
    Figure pat00122
    는 floor 연산자) 회 이하의 센싱 동작들에 의해 읽혀지는 방법.
  3. 제 1 항에 있어서,
    상기 RIO 코드는 폴라 코드를 이용하여 구현되고,
    상기 인코딩 데이터는 메시지 비트들, 채널 코드 패리티, 및 RIO 코드 패리티를 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 인코딩 데이터에서 상기 메시지 비트들, 상기 채널 코드 패리티, 및 상기 RIO 코드 패리티 중 적어도 하나의 위치는 컨디셔널 엔트로피(conditional entropy)에 의해 결정되는 방법.
  5. 제 3 항에 있어서,
    상기 인코딩 데이터에서 상기 메시지 비트들, 상기 채널 코드 패리티, 및 상기 RIO 코드 패리티 중 적어도 하나의 위치는 바타챠야(Bhataacharyya) 파라미터에 의해 결정되는 방법.
  6. 제 3 항에 있어서,
    상기 인코딩 데이터에서 상기 RIO 코드 패리티는 연속적인 제거거(successive cancellation) 혹은 리스트 연속적인 제거(list successive cancellation)로 결정되는 방법.
  7. k 비트 멀티 레벨 셀들을 갖는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 디코딩 방법에 있어서:
    멀티 레벨 셀들로부터
    Figure pat00123
    회(여기서,
    Figure pat00124
    는 floor 연산자) 이하의 센싱 동작들을 수행하는 단계;
    RIO(random input/output) 코드를 이용하여 채널 에러를 정정하면서 상기 센싱 동작들의 각각에 대응하는 페이지들을 디코딩하는 단계; 및
    상기 디코딩된 페이지들로부터 사용자 데이터를 추출하는 단계를 포함하는 방법.
  8. 제 7 항에 있어서,
    ECC(error correction code)를 이용하여 상기 디코딩된 페이지들의 각각의 에러를 정정하는 단계를 더 포함하는 방법.
  9. 제 7 항에 있어서,
    상기 디코딩하는 단계는,
    복수의 RIO 디코더들에 의해 대응하는 페이지들의 각각을 디코딩하는 단계를 포함하는 방법.
  10. k-비트 멀티 레벨 셀들을 갖는 적어도 하나의 비휘발성 메모리 장치; 및
    상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고,
    상기 메모리 제어기는,
    사용자 데이터를 제 1 코드를 이용하여 인코딩하는 에러 정정 인코더;
    상기 제 1 인코딩된 데이터를 제 2 코드를 이용하여 인코딩 하는 RIO(random input/output) 인코더;
    상기 k-비트 멀티 레벨 셀들로부터
    Figure pat00125
    회(여기서,
    Figure pat00126
    는 floor 연산자) 이하의 센싱 동작들을 통하여 읽혀진 페이지들을 채널 에러를 복구하면서 상기 제 2 코드를 이용하여 디코딩하는 RIO 디코더; 및
    에러 정정을 위해 상기 디코딩된 페이지들의 각각을 상기 제 1 코드를 이용하여 디코딩하는 에러 정정 디코더를 포함하는 저장 장치.
KR1020160105370A 2016-08-19 2016-08-19 저장 장치 및 그것의 동작 방법 KR20180021324A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160105370A KR20180021324A (ko) 2016-08-19 2016-08-19 저장 장치 및 그것의 동작 방법
US15/676,623 US10459788B2 (en) 2016-08-19 2017-08-14 Data coding to reduce read-sensing operations in storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160105370A KR20180021324A (ko) 2016-08-19 2016-08-19 저장 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20180021324A true KR20180021324A (ko) 2018-03-02

Family

ID=61191716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160105370A KR20180021324A (ko) 2016-08-19 2016-08-19 저장 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10459788B2 (ko)
KR (1) KR20180021324A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210062845A (ko) 2019-11-22 2021-06-01 삼성전자주식회사 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101301774B1 (ko) 2007-07-23 2013-09-02 삼성전자주식회사 메모리 셀의 데이터 읽기 장치 및 방법
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9070427B2 (en) * 2010-08-13 2015-06-30 Sandisk Technologies Inc. Data coding using divisions of memory cell states
JP2012181761A (ja) 2011-03-02 2012-09-20 Toshiba Corp 半導体メモリ装置および復号方法
US9256522B1 (en) 2012-04-19 2016-02-09 Sk Hynix Memory Solutions Inc. Method and system for generating soft-information after a single read in NAND flash using expected and measured values
KR101991911B1 (ko) 2012-05-22 2019-06-24 삼성전자주식회사 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템
US9503126B2 (en) 2012-07-11 2016-11-22 The Regents Of The University Of California ECC polar coding and list decoding methods and codecs
US20140169102A1 (en) 2012-12-19 2014-06-19 Western Digital Technologies, Inc. Log-likelihood ratio and lumped log-likelihood ratio generation for data storage systems
CN104038234B (zh) 2013-03-07 2017-09-29 华为技术有限公司 极性码的译码方法和译码器
KR102068519B1 (ko) 2013-07-01 2020-01-21 삼성전자주식회사 저장 장치, 그것의 쓰기 방법 및 읽기 방법
US9007241B2 (en) * 2013-09-16 2015-04-14 Seagate Technology Llc Reduced polar codes
US10135460B2 (en) * 2013-10-01 2018-11-20 Texas Instruments Incorporated Apparatus and method for multilevel coding (MLC) with binary alphabet polar codes
CN107077886A (zh) * 2014-01-17 2017-08-18 加州理工学院 使用极性码的不对称纠错和闪速存储器重写
KR102305095B1 (ko) * 2015-04-13 2021-09-24 삼성전자주식회사 비휘발성 메모리 컨트롤러의 동작 방법
EP3364542A4 (en) * 2015-12-23 2019-04-03 Huazhong University of Science and Technology ERROR CORRECTION ENCODING METHOD BASED ON CASCADE POLAR CODES AND REPETITION CODES OR MULTIBIT PARITY CHECK CODES

Also Published As

Publication number Publication date
US10459788B2 (en) 2019-10-29
US20180052733A1 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
TWI459402B (zh) 記憶體系統、用於讀取儲存於記憶體裝置的記憶體單元中的資料的方法
KR102265220B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
TWI676178B (zh) 控制器、半導體記憶體系統及其操作方法
Dong et al. Enabling NAND flash memory use soft-decision error correction codes at minimal read latency overhead
CN111200440B (zh) Ldpc解码器、半导体存储器系统及其操作方法
KR101438072B1 (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
KR102370292B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US20160274971A1 (en) Ldpc decoder, semiconductor memory system and operating method thereof
CN106997777A (zh) 具有改进的硬解码吞吐量的vss ldpc解码器
US20150248325A1 (en) Systems for and methods of extending lifetime of non-volatile memory
KR102257050B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR102631407B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102556479B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US9250994B1 (en) Non-binary low-density parity check (LDPC) decoding using trellis maximization
KR20180027803A (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20150129325A (ko) 솔리드 스테이트 메모리에 저장된 데이터 디코딩
CN107634764A (zh) 使用低密度奇偶校验码的解码器及存储控制器
KR20210115961A (ko) Ldpc 디코더 및 그것의 동작 방법
US9748974B2 (en) Non-binary LDPC decoder using binary subgroup processing
KR102314481B1 (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
Rajab et al. Soft‐input bit‐flipping decoding of generalised concatenated codes for application in non‐volatile flash memories
CN110853690B (zh) 解码器、解码器的操作方法和包括该解码器的存储器系统
KR20180021324A (ko) 저장 장치 및 그것의 동작 방법
Dong et al. Reducing data transfer latency of NAND flash memory with soft-decision sensing
KR20230019573A (ko) 컨트롤러 및 컨트롤러의 동작 방법