KR20180021324A - 저장 장치 및 그것의 동작 방법 - Google Patents
저장 장치 및 그것의 동작 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0745—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1072—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
Abstract
본 발명은 k 비트 멀티 레벨 셀들을 갖는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 디코딩 방법을 개시한다. 본 발명은, 멀티 레벨 셀들로부터 회 이하의 센싱 동작들을 수행하는 단계, RIO(random input/output) 코드를 이용하여 채널 에러를 정정하면서 상기 센싱 동작들의 각각에 대응하는 페이지들을 디코딩하는 단계, 및 상기 디코딩된 페이지들로부터 사용자 데이터를 추출하는 단계를 포함할 수 있다. 이로써, 읽기 성능을 향상시키면서 동시에 채널 에러 특성을 좋게 할 수 있다.
Description
본 발명의 저장 장치 및 그것의 동작 방법에 관한 것이다.
플래시 메모리에서는 동일한 셀에 더 많은 비트를 저장하기 위하여 셀 당 여러 비트의 데이터를 저장한다. 셀 당 저장되는 비트 수가 증가할수록 데이터를 읽어내기 위해서 보다 많은 메모리 센싱 과정이 필요하고, 이로 인하여 낸드 플래시 메모리 읽기 성능이 저하된다. 이러한 성능 저하를 방지하기 위한 목적으로 최근에는 RIO (Random IO) 코드 등의 기술이 제안된 바 있다. 종래의 RIO 코드에서는 플래시 메모리 채널에서 발생하는 노이즈를 고려하지 않고 설계되었다. 따라서 플래시 메모리를 읽는 과정에서 발생한 비트 에러가 RIO 디코더를 통과하면서 증폭되어 본래보다 에러 비트의 수가 크게 증가하게 된다.
본 발명은 위에서 설명한 기술적 과제를 해결하기 위한 것으로, 본 발명의 목적은 채널 에러를 감소시키면서 메모리 읽기 성능을 향상시키는 저장 장치 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 저장 장치의 동작 방법은, RIO(random input/output) 코드를 이용하여 사용자 데이터를 인코딩 하는 단계, 상기 인코딩된 데이터를 멀티 레벨 셀들로 프로그램시키는 단계, 및 상기 멀티 레벨 셀들로부터 한 번의 메모리 센싱을 통해 상기 사용자 데이터의 일부를 읽는 단계, 및 상기 RIO 코드를 이용하여 채널 에러를 정정하면서 상기 읽혀진 데이터를 디코딩하는 단계를 포함하고, 상기 RIO 코드는 채널 에러를 정정하기 위한 채널 코드를 포함할 수 있다.
본 발명의 실시 예에 다른 k 비트 멀티 레벨 셀들을 갖는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하는 저장 장치의 디코딩 방법은, 멀티 레벨 셀들로부터 회(여기서, 는 floor 연산자) 이하의 센싱 동작들을 수행하는 단계, RIO(random input/output) 코드를 이용하여 채널 에러를 정정하면서 상기 센싱 동작들의 각각에 대응하는 페이지들을 디코딩하는 단계, 및 상기 디코딩된 페이지들로부터 사용자 데이터를 추출하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 저장 장치는, k-비트 멀티 레벨 셀들을 갖는 적어도 하나의 비휘발성 메모리 장치, 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 메모리 제어기는, 사용자 데이터를 제 1 코드를 이용하여 인코딩하는 에러 정정 인코더, 상기 제 1 인코딩된 데이터를 제 2 코드를 이용하여 인코딩 하는 RIO(random input/output) 인코더, 상기 k-비트 멀티 레벨 셀들로부터 회 이하의 센싱 동작들을 통하여 읽혀진 페이지들을 채널 에러를 복구하면서 상기 제 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는 본 발명의 실시 예에 따른 데이터 서버 시스템을 예시적으로 보여주는 블록도이다.
도 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)에 저장된 사용자 데이터를 최대 (여기서, 는 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 번째 상태 사이의 센싱 동작을 수행함으로써 이 얻어진다. 이때, 는 아래의 수학식으로 결정될 수 있다.
도 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 개의 편향 채널로 분리된 새로운 벡터 채널을 보여주는 도면이다. 아래는 분리된 편향 채널에 대응하는 수학식이다.
이렇게 분리된 n 개의 채널은 완벽히 좋은 채널이거나 노이즈 때문에 신호를 복구할 수 없는 나쁜 채널 중 하나로 수렴하는 양상을 갖는다. 이런 현상은 n이 커짐에 따라 더욱 뚜렷하게 나타난다. 만약 좋은 채널로 편향되는 채널들의 인덱스들을 안다면, 새로운 입력신호의 해당 위치에 전송하고자 하는 정보를 싣고 나쁜 채널로 편향하는 채널들에는 이미 약속된 비트(예로서 "0")를 싣는 것으로 안정된 통신을 할 수 있다. n이 충분히 클 때 편향현상을 이용하여 벡터 채널 Wvec을 통하여 전송할 수 있는 최대의 메시지 량은, 즉 좋은 채널로 편향되는 채널수는 이다. 즉 앞서 언급했던 Shannon의 정보이론적 한계 즉 채널의 커패시티를 달성할 수 있다.
K+1 개의 상태들을 갖는 비휘발성 메모리 장치에 1회의 tR로 데이터를 추출하는 방법은 도 6에서 모델링 되었다. 이러한 모델링을 근거로 하여 폴라 코드 인코딩 방법에 대하여 설명하겠다.
일반적으로 폴라 코드의 인코딩 과정은 다음과 같이 수행된다. 채널에서 기대되는 에러율이 낮은 비트 인덱스는 사용자 데이터를 그대로 채워 넣는다. 반면에 채널에서 기대되는 에러율이 높은 비트 인덱스는 인코더와 디코더가 모두 아는 신호를 채워 넣는다. 상술 된 과정을 통해 얻은 결과에 Gn을 곱한다.
도 10은 명의 실시 예에 따른 편향된 채널을 예시적으로 보여주는 도면이다. 도 10을 참조하면, 채널에서 기대되는 에러율이 높은 비트 인덱스들과 그렇지 않은 비트 인덱스들이 도시된다. 채널에서 기대되는 에러율이 높은 비트의 인덱스에 사용자 데이터를 저장하면, 디코더에서 복구하지 못할 확률이 높아질 것이다. 반면에, 채널에서 기대되는 비트 에러율이 낮은 비트 인덱스에 사용자 데이터를 저장하면, 디코더에서 높은 확률로 디코딩에 성공할 수 있다.
RIO 코드의 인코딩을 수행하기에 앞서 편향된 채널에서 각 비트 인덱스의 특성이 파악되고, 특정 비트 인덱스의 유저 데이터, RIO 패리티, ECC 패리티 중에 어는 것으로 사용할 지가 결정되어야 한다. 이는 바타차야(Bhattacharyya) 파라미터 값을 보고 알 수 있다. 이진 입력 신호 확률분포 와 채널전이 확률분포 가 주어졌을 때, Bhattacharyya 파라미터는 아래의 수학식으로 계산될 수 있다.
Bhattacharyya 파라미터를 이용하여 각각의 비트 인덱스가 아래의 수학식과 같이 분류될 수 있다.
여기서 집합에 j 번째 Page의 i번째 비트는 다음과 같은 특성을 가진다. 동일 Page 내의 이전 비트들 에 대하여 독립적이고, j-1 번째 Page (이전 Page, )에 대하여 독립적이고, 베르누이 (1/2)의 확률 분포를 가진다는 것이다. 즉, 직관적으로 이 집합에 속해 있는 비트 인덱스들은 다른 비트들에 의존적이지 않기 때문에 메시지(혹은, 사용자 데이터)를 실어도 되는 좋은 채널로 생각할 수 있다.
반대로 집합에 속해있는 인덱스들은 다음과 같은 특성을 갖는다. 동일 Page내의 이전 비트들 에 대하여 의존적이고 j-1 번째 Page (이전 Page, )에 대하여 의존적이라는 것이다. 이 집합에 속하는 비트 인덱스들은 다른 비트들에 의하여 디터미니스틱(deterministic)하게 결정되므로 독립적인 메시지를 싣기에는 부적절하다.
집합 에 속해있는 비트 인덱스 i는 다음과 같은 특성을 갖는다. 동일 Page 내의 이전 비트들 에 대하여 독립적이고, 동일 Page 내의 메모리 센싱 결과 에 대하여 독립적이라는 것이다. 이 집합에 속하는 비트 인덱스들은 디코딩 과정에서 j번째 Page에 대한 정확한 정보를 가지고 있다고 해도 를 복구할 수 없다.
집합 에 속해있는 인덱스 i에 관해서는 가 철저하게 에 의존하기 때문에, j 번째 Page가 에 대한 정보를 가지고 를 복구할 수 있다. 즉 디코딩 입장에서는 이 집합에 속해있는 채널 인덱스들은 디코딩을 위한 좋은 채널로 생각할 수 있다.
집합 와 도 상술 된 설명과 유사하게 해석될 수 있다. 이와 같이 인코딩에 필요한 좋은 비트 인덱스들과 디코딩화에 필요한 비트 인덱스들은 서로 다른 집합에 속한다. 따라서 이들을 적절히 잘 조합하여 메시지를 실을 수 있는 채널들과 디코딩화에 유리한 채널들로 채널 분리를 진행함으로써, RIO 인코더 및 RIO 디코더가 구현될 수 있다.
아래에서는 RIO 코드 생성 및 RIO 인코딩 과정에 대하여 설명하겠다. 아래에서는 설명의 편의를 위하여 Page가 두 개인 경우에 대하여 폴라 코드를 이용한 전송 방식에 대해 설명하겠다. 동일한 방식을 Page가 3개 이상일 때도 적용하는 것이 가능하다. 첫 번째 Page에 저장할 데이터는 다음과 같이 결정된다. 각 비트 인덱스 별로 Bhattacharyya 파라미터를 구하고 아래와 수학식과 같이 세 가지 집합으로 분류한다.
도 11은 본 발명의 실시 예에 따른 첫 번째 페이지의 인코딩 과정을 예시적으로 보여주는 도면이다. 첫 번째 사용자는 집합 에 속하는 인덱스들에 유저 데이터를 싣게 된다. 여기서 를 살펴보면 에 속해있기 때문에 는 앞에서 순차적으로 생성된 과는 독립적이므로 메시지를 실을 수 있는 반면에 에도 속해있기 때문에 사용자가 받은 신호 과 앞서 복구한 를 사용하여 를 복구할 수 있게 된다. 나머지 집합 과 도 자신이 속한 집합들의 성질에 따라서 그 인코딩 및 디코딩화 방법이 정해지게 된다.
첫 번째 Page는 다음의 수학식과 같은 인코딩 방법으로 각 채널 입력신호를 정한다.
도 12는 본 발명의 실시 예에 따른 두 번째 페이지의 인코딩 과정을 예시적으로 보여주는 도면이다. 두 번째 Page에서는 각 비트 인덱스들을 다음의 수학식과 같은 5개의 집합으로 구분한다.
두 Page의 비트 인덱스 분류에서 집합에 속하는 비트 인덱스들은 첫 번째 Page에 저장된 정보 ()를 모른다면, 정확히 복구할 수 없게 되는 성질을 가지고 있다. 첫 번째 Page에 저장된 정보를 알기 위해서는 추가적인 메모리 센싱이 필요하므로, 이는 한 번의 메모리 센싱을 통해 데이터를 읽어낸다는 목적에 위배된다. 다행히도 n이 충분히 클 때 의 크기가 0임을 이론적으로 증명할 수 있다.
도 13은 본 발명의 실시 예에 따른 간략화 된 인코딩 과정을 예시적으로 보여주는 도면이다. 도 13을 참조하면, Page의 인코딩은 다음과 같이 간단해진다.
두 번째 Page는 집합 에 속하는 인덱스들에 사용자 데이터를 싣게 된다. 여기서 를 살펴보면 에 속해있기 때문에 는 앞에서 순차적으로 생성된 와 첫 번째 사용자 메시지 과는 독립적이므로 메시지를 실을 수 있는 반면에 에도 속해있기 때문에 사용자가 받은 신호 과 앞서 복구한 를 사용하여 를 복구할 수 있다.
두 번째 Page는 다음과 같은 수학식에 따른 인코딩 방법으로 각 채널 입력신호를 정한다.
한편, 아래에서는 RIO디코딩 과정을 설명하겠다.
첫 Page의 디코딩 과정은 아래와 수학식과 같이 진행될 것이다.
디코딩과 인코딩 과정에서 a posteriori probability에 대한 계산과정이 많이 반복되는데, 연속적인 제거(successive cancellation) 알고리즘 혹은 리스트 연속적인 제거(list successive cancellation) 알고리즘을 사용하여 계산 복잡도를 감소시킬 수 있다.
이는 등 다른 a posteriori probability에서도 동일한 방식으로 계산 가능하다. 이때 재귀적으로 각각의 확률을 구하는 것은 꼴의 높은 복잡도를 보인다. 그러므로 그래프 형 알고리즘을 이용한다.
도 14는 본 발명의 실시 예에 따른 그래프 형 알고리즘을 이용한 연속적인 제거 과정을 예시적으로 보여주는 도면이다.
위의 노드들은 각각 알고리즘에 따라 발현되는 순서로 진행되어 있다. 좌측의 1,8,9,12 번 노드는 각각 에서 i가 1,2,3,4인 경우에 해당되며 3,4,6,7는 채널편향을 적용하기 전 원래 채널의 확률 분포에서 계산 가능하다.
가장 먼저 1번 노드에서는 를 계산하여야 한다. 이때 1번노드는 각각 2,5 번 노드를 발현시키며, 2, 5번 노드는 각각 3, 4번 노드와 6, 7번 노드를 발현시킨다. 이때 3, 4, 6, 7번 노드에서 원 채널에 따른 를 계산한 후, 이의 값을 수학식 12 재귀공식을 통해 2, 5번 노드에서 필요한 의 값을 각각 계산한 후 수학식 12 재귀 공식을 한 번 더 거쳐 1번 노드로 반환한다.
이와 마찬가지로 그래프를 구성하는 방식으로 을 계산할 수 있다. 이 때 첫 번째 비트는 에 속하므로 의 확률이 1/2 이상이면, 으로 디코딩화시키며 그 외의 경우 1로 디코딩 한다.
그 다음의 8번 노드에서는 을 계산하여야 한다. 이는 2번 5번 노드가 이미 계산되어 있으므로 이를 수학식 13 재귀공식에 대입하면, 바로 를 계산할 수 있다. 마찬가지의 방법으로 을 계산할 수 있다. 이 때 2번째 비트는 에 속하므로 을 기준으로 를 디코딩 한다.
3번째 비트에서는 를 계산한다. 이때 9번 노드는 10번 노드와 11번 노드를 발현시키고 10번과 11번 노드는 각각 3, 4번과 6, 7번 노트에서 계산한 값을 수학식 13 재귀공식에 대입하여 각각의 확률인 과 을 생성한다. 이후 9번 노드는 10번 노드와 11번 노드에서 계산된 값을 수학식 12 재귀공식에 대입하여 을 계산한다. 마찬가지의 방식으로 을 계산할 수 있다. 이때 3번째 비트는 에 속하므로 을 기준으로 을 디코딩할 수 있다.
4번째 비트에서는 을 계산한다. 이 때 12번 노드는 10번 노드와 11번 노드에서 계산된 값을 수학식 13 재귀 공식에 대입하여 바로 을 계산할 수 있다. 마찬가지의 방식으로 을 계산할 수 있다. 마지막 비트는 에 속하므로 을 기준으로 을 디코딩한다.
본 발명의 실시 예에 따른 저장 장치 및 그것의 동작 방법은, 멀티 레벨 셀 메모리에서 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 디코더
100: 비휘발성 메모리 장치
200, 200a: 메모리 제어기
220: RIO 인코더
240: RIO 디코더
210: ECC 인코더
250: ECC 디코더
Claims (10)
- 저장 장치의 동작 방법에 있어서:
RIO(random input/output) 코드를 이용하여 사용자 데이터를 인코딩 하는 단계;
상기 인코딩된 데이터를 멀티 레벨 셀들로 프로그램시키는 단계; 및
상기 멀티 레벨 셀들로부터 한 번의 메모리 센싱에 의해 상기 사용자 데이터의 일부를 읽는 단계; 및
상기 RIO 코드를 이용하여 채널 에러를 정정하면서 상기 읽혀진 데이터를 디코딩하는 단계를 포함하고,
상기 RIO 코드는 채널 에러를 정정하기 위한 채널 코드를 포함하는 방법. - 제 1 항에 있어서,
상기 RIO 코드는 폴라 코드를 이용하여 구현되고,
상기 인코딩 데이터는 메시지 비트들, 채널 코드 패리티, 및 RIO 코드 패리티를 포함하는 방법. - 제 3 항에 있어서,
상기 인코딩 데이터에서 상기 메시지 비트들, 상기 채널 코드 패리티, 및 상기 RIO 코드 패리티 중 적어도 하나의 위치는 컨디셔널 엔트로피(conditional entropy)에 의해 결정되는 방법. - 제 3 항에 있어서,
상기 인코딩 데이터에서 상기 메시지 비트들, 상기 채널 코드 패리티, 및 상기 RIO 코드 패리티 중 적어도 하나의 위치는 바타챠야(Bhataacharyya) 파라미터에 의해 결정되는 방법. - 제 3 항에 있어서,
상기 인코딩 데이터에서 상기 RIO 코드 패리티는 연속적인 제거거(successive cancellation) 혹은 리스트 연속적인 제거(list successive cancellation)로 결정되는 방법. - 제 7 항에 있어서,
ECC(error correction code)를 이용하여 상기 디코딩된 페이지들의 각각의 에러를 정정하는 단계를 더 포함하는 방법. - 제 7 항에 있어서,
상기 디코딩하는 단계는,
복수의 RIO 디코더들에 의해 대응하는 페이지들의 각각을 디코딩하는 단계를 포함하는 방법. - k-비트 멀티 레벨 셀들을 갖는 적어도 하나의 비휘발성 메모리 장치; 및
상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고,
상기 메모리 제어기는,
사용자 데이터를 제 1 코드를 이용하여 인코딩하는 에러 정정 인코더;
상기 제 1 인코딩된 데이터를 제 2 코드를 이용하여 인코딩 하는 RIO(random input/output) 인코더;
상기 k-비트 멀티 레벨 셀들로부터 회(여기서, 는 floor 연산자) 이하의 센싱 동작들을 통하여 읽혀진 페이지들을 채널 에러를 복구하면서 상기 제 2 코드를 이용하여 디코딩하는 RIO 디코더; 및
에러 정정을 위해 상기 디코딩된 페이지들의 각각을 상기 제 1 코드를 이용하여 디코딩하는 에러 정정 디코더를 포함하는 저장 장치.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210062845A (ko) | 2019-11-22 | 2021-06-01 | 삼성전자주식회사 | 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터 |
Family Cites Families (19)
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 |
-
2016
- 2016-08-19 KR KR1020160105370A patent/KR20180021324A/ko unknown
-
2017
- 2017-08-14 US US15/676,623 patent/US10459788B2/en active Active
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) | 컨트롤러 및 컨트롤러의 동작 방법 |