KR20140053395A - 동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더 - Google Patents

동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더 Download PDF

Info

Publication number
KR20140053395A
KR20140053395A KR1020147008374A KR20147008374A KR20140053395A KR 20140053395 A KR20140053395 A KR 20140053395A KR 1020147008374 A KR1020147008374 A KR 1020147008374A KR 20147008374 A KR20147008374 A KR 20147008374A KR 20140053395 A KR20140053395 A KR 20140053395A
Authority
KR
South Korea
Prior art keywords
bitstream
attached
pattern
reconstructed
appended
Prior art date
Application number
KR1020147008374A
Other languages
English (en)
Other versions
KR101612202B1 (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 KR20140053395A publication Critical patent/KR20140053395A/ko
Application granted granted Critical
Publication of KR101612202B1 publication Critical patent/KR101612202B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0054Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • 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
    • 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/33Synchronisation based on error coding or decoding

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)
  • Artificial Intelligence (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 명세서에는 메모리 컨트롤러 내의 최대 공산 디코더를 통해 데이터 동기화를 위한 장치, 시스템, 및 방법이 설명되어 있다. 상기 방법은 비휘발성 메모리(NVM)로부터 채널을 통해 구속 코드워드를 수신하는 단계 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 및 상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 최대 공산(ML) 추정기를 적용하는 동기화 절차를 호출함으로써 수신된 구속 코드워드를 디코딩하는 단계를 포함한다.

Description

동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더{MAXIMUM-LIKELIHOOD DECODER IN A MEMORY CONTROLLER FOR SYNCHRONIZATION}
본 발명의 실시예들은 일반적으로 비휘발성 메모리 분야에 관한 것이다. 더욱 구체적으로, 본 발명의 실시예들은 메모리 컨트롤러에서 최대 공산(maximum-likelihood) 디코딩을 통해 데이터 동기화를 위한 장치, 시스템, 및 방법에 관한 것이다.
플래시 메모리(예를 들어, NAND 플래시 메모리)는 직사각형 격자(rectangular lattice)로 배열된 셀들의 그리드(grid)로 이루어진다. 셀은 부동 게이트이고, 이들 부동 게이트에 전하로서 정보가 저장된다. 멀티 레벨 셀(multi-level-cell; MLC)은 셀당 1보다 많은 비트를 저장한다. NAND 플래시에서의 셀의 프로그래밍은 이상적인 프로그램된 전압이 달성될 때까지 Fowler-Nordhiem 터널링에 의해 달성된다. 그러나 프로그래밍 시간 제약들로 인해, 일부 허용 오차가 수락되고, 실제 프로그램된 전압은 이상적인 값의 일부 범위 내에 있는 것으로 허용된다.
판독 레벨은 평균 프로그래밍 레벨 근처의 일부 분포를 갖는 랜덤 변수이다. 레벨 분포들의 중첩 때문에 판독 중에 에러가 발생한다. 원시 비트 에러 레이트(raw bit error rate; RBER)가 낮게 유지되어야 하는 경우, 분포들은 좁아야 한다. 분포들이 넓어지는 하나의 가능한 이유는, 이웃하는 셀들 간의 용량성 결합 이다. 이러한 현상을 셀 간 간섭(inter-cell-interference; ICI)이라고 부른다. ICI는 부동 게이트-대-부동 게이트 결합(floating-gate to floating-gate coupling)으로 인해 생기고, 가벼운 것으로부터 심각한 것까지 이를 수 있다.
본 발명의 실시예들은 비휘발성 메모리(NVM)에 결합된 메모리 컨트롤러 내의 최대 공산 디코딩을 통해 데이터 동기화를 위한 장치, 시스템, 및 방법에 관한 것이다.
일 실시예에서, 방법은, 비휘발성 메모리(NVM)로부터 채널을 통해 구속 코드워드를 수신하는 단계 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 및 상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 최대 공산(ML) 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는 단계를 포함한다.
일 실시예에서, 메모리 컨트롤러(장치)는, NVM으로부터 채널을 통해 구속 코드워드를 수신하고 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 ML 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는 디코더를 포함한다.
일 실시예에서, 시스템은, 채널을 통해 NVM에 결합된 메모리 컨트롤러를 포함하는 고체 상태 드라이브(solid state drive; SSD)를 포함하고, 상기 메모리 컨트롤러는, 상기 NVM으로부터 상기 채널을 통해 구속 코드워드를 수신하고 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 ML 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는 디코더; 및 상기 SSD에 저장된 내용들을 디스플레이하는 디스플레이 유닛을 포함한다.
일 실시예에서, 제조 물품은, 실행될 때, 프로세서로 하여금, NVM으로부터 채널을 통해 구속 코드워드를 수신하는 단계 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 및 상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 ML 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는 단계를 포함하는 방법을 수행하게 하는 머신 실행 가능한 명령어들을 포함하는 머신 저장 매체를 포함한다.
이러한 요약에서 본 발명은 그의 특정 실시예들과 함께 설명되었지만, 그러한 실시예들의 많은 대안들, 수정들 및 변형들은 전술한 설명에 비추어 이 기술분야의 통상의 기술자에게 명백할 것이다. 본 발명의 실시예들은 첨부된 청구항들의 넓은 범위 내에 있는 것으로서 모든 그러한 대안들, 수정들 및 변형들을 포함하도록 의도된다.
본 발명의 실시예들은 아래 주어진 상세한 설명으로부터 그리고 본 발명의 다양한 실시예들에 대한 첨부 도면들로부터 더욱 완전하게 이해될 것이지만, 본 발명의 실시예들은 본 발명을 특정 실시예들로 한정하는 것으로 생각되어서는 안 되고, 오직 설명 및 이해를 위한 것이다.
도 1은 본 발명의 일 실시예에 따른, 메모리 컨트롤러 내의 최대 공산(maximum-likelihood) 디코딩을 통해 데이터 동기화를 위한 비휘발성 메모리를 갖는 고레벨 시스템이다.
도 2는 8 레벨들을 위한 셀당 3 비트의 전압 레벨 분포이다.
도 3은 본 발명의 일 실시예에 따른, 최대 공산 디코더를 통해 데이터 동기화를 위한 방법의 고레벨 흐름도이다.
도 4는 본 발명의 일 실시예에 따른, 데이터 동기화를 트리거하기 위한 잡음 없는 첨부된 비트 스트림과 불일치하는 재구성된 첨부된 비트 스트림의 예이다.
도 5는 본 발명의 일 실시예에 따른, 최대 공산 디코딩을 통한 데이터 동기화를 위해 이용되는 수정된 구속 코드(constrained code)를 생성하기 위한 인코딩 방법의 흐름도이다.
도 6은 본 발명의 일 실시예에 따른, 최대 공산 디코딩을 통한 데이터 동기화를 위한 디코딩 방법의 흐름도이다.
도 7은 본 발명의 일 실시예에 따른, 삽입 및 삭제 에러들로부터 복구를 위한 데이터 동기화를 위한 예시적인 트렐리스(Trellis)이다.
도 8은 본 발명의 일 실시예에 따른, 최대 공산 디코딩을 통한 데이터 동기화를 위한 메모리 컨트롤러 및/또는 프로세서를 포함하는 시스템 레벨도이다.
본 발명의 실시예들은 비휘발성 메모리(NVM)에 결합된 메모리 컨트롤러 내의 최대 공산 디코딩을 통해 데이터 동기화를 위한 장치, 시스템, 및 방법에 관한 것이다. 배경기술에서 논의한 바와 같은 ICI를 제거하기 위하여, 구속 코딩(constrained coding)이 가능한 해결책이다. 구속 코딩은 특정 인접 셀 전하 레벨 결합들을 금지하는 것을 수반한다. 다양한 타입의 구속 코드들이 존재할 수 있고, 하나의 타입의 구속 코드들은 모든 페이지를 디코딩하는 동안 레벨 정보가 이용 가능하다고 가정한다. 그러나 판독 레이턴시 요건들로 인해, 레벨 정보는 모든 페이지를 판독하는 동안 이용 가능하지 않을 수 있다. 또한, 에러 전파는 구속 디코딩의 프로세스를 열화하여 부정확한 데이터의 디코딩을 일으킨다.
본 명세서에서 실시예들은 NVM 내의 모든 페이지를 디코딩하는 동안 레벨 정보를 필요로 하지 않는 수정된 구속 코드를 설명한다. 수정된 구속 코드의 기술적 효과는, 하부 및 중간 페이지를 디코딩하는 동안 레벨 정보가 요구되지 않기 때문에 평균 판독 레이턴시가 감소한다는 것이다. 또한, 디코딩 단에서 효율적인 동기화가 가능하다. 본 명세서에 논의된 실시예들은, 채널 잡음에 강건한 수정된 구속 코드를 이용함으로써, 가변 길이 구속 코드들을 디코딩하기 위한 중대한 정격감소 인자(crucial degrading factor)인, 에러 전파(error propagation)를 감소하고/하거나 제거한다. 본 명세서에서 실시예들은 또한 에러 전파를 감소(억제)하는 데이터 동기화를 위한 디코딩 알고리즘을 설명한다.
다음의 설명에서, 본 발명의 실시예들의 더욱 완전한 설명을 제공하기 위하여 다수의 상세가 논의된다. 그러나 본 발명의 실시예들은 이들 특정 상세 없이 실시될 수 있다는 것이 이 기술분야의 통상의 기술자에게 명백할 것이다. 다른 사례에서, 공지된 구조들 및 장치들은 본 발명의 실시예들을 불명료하게 하는 것을 피하기 위하여, 상세하게 보다는, 블록도 형태로 도시된다.
실시예들의 대응하는 도면들에서, 신호들은 선들로 표현된다는 것에 주목한다. 일부 선들은 더 구성적인(more constituent) 신호 경로들을 나타내기 위하여 더 두꺼울 수 있고/있거나, 주 정보 흐름 방향을 나타내기 위하여 하나 이상의 단에서 화살표들을 가질 수 있다. 이러한 표시들은 제한인 것으로 의도되지 않는다. 오히려, 선들은 회로 또는 논리적 유닛의 더 쉬운 이해를 가능하게 하기 위하여 하나 이상의 예시적인 실시예들과 결합하여 이용된다. 설계 요구들 또는 선호도들에 의해 지시되는 바와 같은 임의의 표현된 신호는 사실상 어느 한 방향으로 이동할 수 있고 임의의 적절한 타입의 신호 스킴으로 구현될 수 있는 하나 이상의 신호들을 포함할 수 있다.
다음의 설명 및 청구항들에서, 용어 "결합된" 및 그의 파생어들이 이용될 수 있다. 본 명세서에서 용어 "결합된"은 2개 이상의 요소들이 (물리적, 전기적, 기계적, 광학적 등등으로) 직접 접촉하고 있음을 가리킨다. 본 명세서에서 용어 "결합된"은 또한 2개 이상의 요소들이 서로 직접 접촉하고 있지 않지만, 여전히 서로 협력 또는 상호작용하고 있음을 가리킬 수 있다.
본 명세서에서 이용되는 바와 같이, 달리 특정되지 않는 한, 공통 객체를 설명하기 위한 서수 형용사 "제1", "제2" 및 "제3" 등의 이용은 단지 유사한 객체들의 상이한 인스턴스들이 참조됨을 나타내며, 그렇게 설명된 객체들이 주어진 시퀀스에서, 시간적으로, 공간적으로, 순위로 또는 임의의 다른 방식으로 있어야 한다는 것을 암시하는 것으로 의도되지 않는다.
도 1은 본 발명의 일 실시예에 따른, 메모리 컨트롤러 내의 최대 공산 디코딩을 통해 데이터 동기화를 위한 고레벨 메모리 시스템(100)이다. 일 실시예에서, 시스템(100)은 고체 상태 드라이브(SSD)(101)를 포함한다. 일 실시예에서, 시스템(100)은 메모리 컨트롤러(108)를 포함하는 SOC(system on chip)(109), 및 메모리 컨트롤러(108)에 결합된 프로세서(114)를 포함한다. 일 실시예에서, 메모리 컨트롤러(108)는 데이터 동기화를 위해 이용될 수 있는 수정된 구속 코드(119)를 생성하도록 동작 가능한 인코더(104)를 포함한다. 일 실시예에서, 메모리 컨트롤러(108)는 데이터 패턴에서 임의의 불일치들을 동기화함으로써 에러 전파를 억제하기 위해 동기화기(synchronizer)(120)를 갖는 디코더(106)를 포함한다(도 2 내지 도 7을 참조하여 아래에 설명됨). 일 실시예에서, SOC(109)는 다른 컴포넌트들, 예를 들어, 무선 안테나, 메모리, 프로세서 등을 포함한다.
일 실시예에서, SOC(109)는 SATA(Serial Advance Technology Attachment) 입출력(I/O) 버스(112)를 통해 호스트(110)와 통신한다. 일 실시예에서, SOC(109)는 SAS(Serially Attached Small System Computer) 입출력(I/O) 버스(112)를 통해 호스트(110)와 통신한다. 다른 실시예들에서, 실시예들의 본질을 변경하지 않고 112에 대해서 다른 타입들의 버스들, 예를 들어, SCSI(Small Computer Systems Interface) 입출력(I/O) 버스, FC(Fiber Channel) 입출력(I/O) 버스, iSCSI(SCSI over Internet) 입출력(I/O) 버스, 또는 USB(Universal Serial Bus) 입출력(I/O) 버스, PCIe(Peripheral Component Interconnect Express) 등 중 임의의 것이 이용될 수 있다.
그러한 실시예들에 따르면, 호스트(110)가 SCSI 프로토콜에 따라 메모리 장치(101)와 데이터 및/또는 커맨드를 교환하는 경우, SCSI 프로토콜은 ANSI(American National Standards Institute) SCSI-2(Small Computer Systems Interface-2) ANSI/INCITS(International Committee for Information Technology Standards) 131-1994 명세서에 설명된 프로토콜을 준수하고/하거나 그와 호환 가능할 수 있다.
일 실시예에서, SOC(109)와 NVM(102)은 SSD(101)의 부분이다. 하나의 그러한 실시예에서, SOC(109)는 NVM 컨트롤러를 포함한다. 일 실시예에서, SSD(101)는 퍼스널 컴퓨터, 태블릿, 스마트폰(스마트 장치라고도 함) 등의 내부에 위치한다. 일 실시예에서, 메모리 컨트롤러(108) 및/또는 SOC(109)는 호스트(110) 및 NVM(102)에 결합된 독립형 집적 회로이다. 다른 실시예에서, 메모리 컨트롤러(108) 및/또는 SOC(109)는 호스트(110)에 통합된다.
일 실시예에서, 호스트(110)는 프로세서(114)를 포함한다. 일 실시예에서, 호스트(110) 내의 프로세서(114)는 캘리포니아주 산타 클라라의 INTEL CORP.에 의해 설계되어 제조된 마이크로프로세서이다. 다른 실시예에서, 다른 벤더들에 의해 설계되어 제조된 다른 프로세서들이 호스트(110)를 위해 이용될 수 있다. 일 실시예에서, 호스트(110)는 퍼스널 컴퓨터, 서버, 클라이언트, 랩톱, 스마트폰, 및/또는 태블릿 등 중 하나이다. 실시예들은 메모리 컨트롤러(108)에 결합된 하나 또는 복수의 NVM(1181-N)을 가질 수 있다. 일부 실시예들은 호스트(110) 및 NVM(102)과 통신하는 메모리 컨트롤러(108)에 대하여 설명되지만, 실시예들은 또한 호스트(110) 및 NVM(102)과 통신하는 SOC(109)와 동작한다는 것을 이해한다.
일 실시예에서, 비휘발성 메모리(102)는 NVMRAM(random-access non-volatile memory)이다. 일 실시예에서, NVM(102)은 SSD의 부분이다. 일 실시예에서, NVM(102)은 데이터의 페이지들을 갖는 NAND 플래시 메모리이다. 일 실시예에서, NVM(102)은 NOR 플래시 메모리이다. 일 실시예에서, NVM(102)은 PCM(phase change memory), 스택형 PCM(PCM 및 스위치라고도 불리는 PCMS), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 또는 임의의 다른 타입의 NVM 장치 중 하나이다. 일 실시예에서, NVM(102)은 착탈식 드라이브, 예를 들어, USB(Universal Serial Bus) 메모리 스틱, 플래시 카드 등이다.
일 실시예에서, 호스트(110)는 디스플레이 유닛(116)에 결합된다. 일 실시예에서, 디스플레이 유닛(116)은 NVM(102)에 저장된 내용들을 디스플레이하도록 동작 가능한 터치 패드이다.
도 2는 8 레벨들을 위한 셀당 3 비트의 전압 레벨 분포(200)이다. x-축은 다수의 인코딩된 레벨들에 대해, 메모리들(1181-N) 중 플래시 메모리의, 셀의 임계 전압 레벨들을 나타낸다. y-축은 셀들의 정규화된 개수를 나타낸다. 배경기술에서 언급한 바와 같이, 멀티 레벨 셀(MLC) 플래시 메모리는 복수의 전압 레벨들로 프로그램될 수 있는 셀들을 포함한다. MLC 플래시 메모리 시스템들은 셀당 다수의 비트들, 예를 들어, 3 비트/셀(bits/cell), 4 비트/셀 등을 지원한다. 3 비트/셀 내지 4 비트/셀에 대하여, 개별 셀들은 각각 8 또는 16 별개의 레벨들로 프로그램된다. 이웃하는 셀들 간의 용량성 결합으로 인해, 셀들의 임계 전압은 이웃하는 셀들과의 결합 및 그것들의 전하에 의존한다. 셀 간 간섭(inter-cell interference; ICI)으로 알려진 이러한 효과는 셀들의 레벨 분포가 넓어지게 함으로써, 원시 비트 에러 레이트(raw bit error rate; RBER)를 효과적으로 증가시킨다.
ICI를 완화하기 위한 하나의 방식이 구속 코드들을 이용하는 것이다. 각각의 셀은 한 페이지에 대해 1 비트를 포함하는데, 즉, 멀티 비트 셀에서의 각각의 비트는 상이한 페이지와 연관된다. 3 비트/셀의 실시예에 대하여, 제1 비트는 하부 페이지에 대응하고, 제2 비트는 중간 페이지에 대응하고, 제3 비트는 상부 페이지에 대응한다(그와 연관된다). 도 2에 도시된 바와 같이, 각각의 셀은 8개의 별개의 레벨들(201-208)로 프로그램될 수 있고, 각각의 레벨은 정보의 3 비트에 대응한다. 각각의 전압 레벨 분포에 대응하는 비트들은 레벨에 맵핑된다. 이러한 예시적인 실시예에서, 비트들 111은 레벨-0(L0(201))에 맵핑되고, 비트들 011은 레벨-1(L1(202))에 맵핑되고, 비트들 001은 레벨-2(L2(203))에 맵핑되고, 비트들 101은 레벨-3(L3(204))에 맵핑되고, 비트들 100은 레벨-4(L4(205))에 맵핑되고, 비트들 000은 레벨-5(L5(206))에 맵핑되고, 비트들 010은 레벨-6(L6(207))에 맵핑되고, 비트들 110은 레벨-7(L7(208))에 맵핑된다. 다른 실시예들에서, 다른 형태들의 맵핑이 이용될 수 있다.
판독 동작 동안, 메모리 컨트롤러는 NVM으로부터 페이지 정보를 요청하고, 예를 들어, 컨트롤러는 NVM(102)으로부터 하부 페이지 판독을 요청할 수 있다. 하부 페이지 판독에 대하여, 임계 전압 레벨 R1이 이용되고, 비트들은 R1을 이용하여 셀로부터 판독된다. 종래의 구속 코딩이 적용되면, 비트 정보는 충분하지 않고, 레벨 정보는 또한 구속 코드를 디코딩하기 위해 필요하다. 구속 코드가 레벨 정보를 비트 정보에 맵핑하기 때문에, 임의의 페이지(상부이든지, 중간이든지, 하부이든지)를 디코딩하기 위하여, 레벨 정보는 의무적이 된다. 그러한 종래의 구속 코드들은 성능 장애물이 될 수 있는 더 높은 판독 레이턴시를 야기한다.
본 명세서에 논의된 실시예들은 인코더(104)에 의해 생성된 수정된 구속 코드(119)를 설명한다. 일 실시예에서, 수정된 구속 코드(119)는 종래의 구속 코드에 의해 요구되는 바와 같이 모든 페이지를 인코딩/디코딩하기 위한 레벨 정보를 필요로 하지 않는다. 본 발명의 실시예들을 불명료하게 하지 않기 위하여, 본 명세서에 논의된 실시예들은 7개의 레벨을 갖는 3 비트/셀 예를 이용한다. 그러나 실시예들은 임의의 셀당 비트 수에 대해 이용될 수 있다.
일 실시예에서, 수정된 구속 코드는 특수 패턴들에 대해 ICI를 제거하거나 또는 거의 제거한다. 특수 패턴의 일 예는 레벨-7-레벨-0-레벨-7 패턴(L7-L0-L7)이다. ICI는 2개의 높은 전하 공격자(charge aggressor)가 레벨-0(L0)에 대한 임계 전압을 드리프트하기 때문에 특수 패턴들에 대해 가장 심각하다. 다음의 실시예들에서, 레벨-7-레벨-0-레벨-7 특수 패턴들은 7-0-7로서 축약된다.
실시예들에서 오직 3개의 특수 패턴들(7-0-7, 7-0-6, 및 6-0-7)이 고려되지만, 방법은 임의의 세트의 금지된 패턴들(하나 이상의 패턴들)에 대해 일반화될 수 있다. 용어 "금지된 패턴(forbidden pattern)"(특수 패턴들이라고도 함)은 본 명세서에서 높은 전하 공격자들(예를 들어, L7)이 낮은 전하 희생자(charge victim)(예를 들어, L0)의 임계 전압을 드리프트하기 때문에 심각한 ICI를 나타내는 레벨 패턴들을 가리킨다.
일 실시예에서, 구속 디코더(106)는 오직 상부 페이지를 디코딩하기 위해 레벨 정보를 필요로 한다. 그러한 실시예에서, 하부 및 중간 페이지의 데이터는 구속 인코딩에 의해 영향을 받지 않는다. 본 명세서에 논의된 실시예들은 또한, 하부 페이지가 아닌, 상부 및 중간 페이지들을 디코딩하기 위해 레벨 정보를 필요로 하는 구속 코드들을 설계하도록 커스터마이즈(customize)될 수 있다. 따라서, 판독 레이턴시 요건들에 따라, 실시예들은 레벨 정보 이용 가능성에 대한 요건들에 커스터마이즈될 수 있다.
도 3은 본 발명의 일 실시예에 따른, 메모리 컨트롤러(108) 내의 최대 공산 디코더(106)를 통해 데이터 동기화를 위한 방법의 고레벨 흐름도(300)이다. 도 3은 도 1-2를 참조하여 논의된다. 일 실시예에서, 인코더(104)는 수정된 구속 코드(119)를 생성한다. 일 실시예에서, 수정된 구속 코드(119)는 NVM(102)에(예를 들어, 메모리들(1181-N) 중 하나에) 저장된다. 일 실시예에서, 블록(301)에서, NVM(102)에 저장된 수정된 구속 코드(119)는 디코더(106)에 의해 수신되고, 여기서 (도 4를 참조하여 논의된) 수정된 구속 코드(119)는 3개의 특수 패턴에 대응하는 첨부된 비트 스트림, 특수 패턴 중 어느 것이 데이터 패턴에서 발생하였는지를 나타내는 비트들, 및 (도 7을 참조하여 논의된) 트렐리스(Trellis)를 종료하기 위한 종료 패턴을 포함한다.
블록(302)에서, 디코더(106)는 재구성된 첨부된 비트 스트림에서 임의의 삽입, 삭제, 또는 에러의 위치를 추정하기 위하여 최대 공산 추정기를 적용하는 동기화기(120)를 호출한다. 본 명세서에 논의된 실시예들에서, 동기화기(120)는 시스템(100)에서 에러 전파를 감소/억제한다.
도 4는 본 발명의 일 실시예에 따른, 동기화기(120)에 의한 데이터 동기화를 트리거하기 위한 잡음 없는 첨부된 비트 스트림과 불일치하는 재구성된 첨부된 비트 스트림의 예(400)이다. 도 4의 실시예는 데이터 동기화기(120)가 호출될 때를 예를 들어 설명하기 위한 예시적인 실시예이다.
일 실시예에서, 하부, 상부 및 중간 페이지 비트들이 구속 인코더(104)에 입력되고, 구속 인코더(104)는 이 비트들을 레벨들에 맵핑한다. 도 2를 참조하여 위에서 언급한 바와 같이, 비트들로부터 레벨들로의 맵핑은 1 레벨을 생성하기 위하여 한번에 3 비트를 클러빙(clubbing)하는 것으로 이루어진다. 일 실시예에서, 비트들의 맵핑은 RBER을 최소화하도록 선택된다. 구속 인코더에 의해 생성된 여분의 비트들을 본 명세서에서는 첨부된 비트들이라고 한다. 일 실시예에서, 첨부된 비트 스트림은 널(null) 스트림으로 초기화된다.
일 실시예에서, 레벨들의 시퀀스로 이루어지는 입력이 인코더(104)에 의해 좌측에서 우측으로 스캔되고, 여기서 1 레벨이 클록마다 우측으로 증분되고(마지막 3개의 레벨이 7-0-7 또는 6-1-6이면 2 레벨들), 5개의 연속 레벨들이 관측된다. 일 실시예에서, 7-0-7 패턴이 5-투플(tuple) 레벨들에서 마지막 3 레벨들로서 보이는 경우, 그것은 6-1-6 패턴으로 대체되고, 첨부된 비트 스트림에는 1-비트가 첨부된다. 일 실시예에서, 6-1-6 패턴이 5-레벨 패턴에서 마지막 3 레벨들로 보이는 경우, 첨부된 비트 스트림에는 0-비트가 첨부된다. 일 실시예에서, 레벨 정보를 인코딩하는 단에서, 첨부된 비트 스트림은 인코더(104)에 의해 레벨들로 변환되고, 이들 레벨들은 수정된 구속 코드워드(119)를 생성하기 위해 인코딩된 레벨 스트림에 첨부된다.
일 실시예에서, 인코더(104)는 오직 레벨-7에서 레벨-6으로 그리고 레벨-0에서 레벨-1로 변경한다. 그러한 실시예에서, 하부 및 중간 페이지의 비트들은 인코더(104)에 의해 수행된 인코딩에 의해 터치되지 않은 채로 남는다. 일 실시예에서, 하부 및 중간 페이지의 디코더(106)에 의한 디코딩은 레벨 정보의 지식 없이 행해질 수 있다. 일 실시예에서, 첨부된 비트 스트림은 가변 길이 비트 스트림이다. 일 실시예에서, 첨부된 비트 스트림의 길이는 입력 레벨들의 함수이다. 일 실시예에서, 첨부된 비트 스트림의 길이는 오버헤드의 양을 줄이기 위해 고정된다.
일 실시예에서, 오버헤드 사이즈 N은 확률 함수 N(p,m)에 의해 결정되고, 여기서 'p'는 특수 패턴 7-0-7의 수가 고정된 수 'm'보다 작을 확률이다. 일 실시예에서, 오버헤드 사이즈가 고정된 경우, 첨부된 비트 스트림 길이는 고정되고, 그것은 전부 제로 비트들(all-zero bits)로 초기화된다.
가변 길이 오버헤드를 지원하는 애플리케이션들에서, 오버헤드 레벨 정보에 의사(spurious) 7-0-7 패턴이 여전히 존재할 수 있다. 가변 길이 오버헤드에 대하여, 코드의 평균 레이트가 계산될 수 있다. 완벽한 소스 코딩을 가정하면, 입력 레벨들은 균일한 분포를 가질 것이다. 모든 3-투플 레벨들 중에서, 하나의 여분의 비트가 2개의 패턴에 대해서만 요구된다. 오버헤드 비트들이 레벨들에 맵핑되기 때문에, 모든 3-투플 레벨들에 대해, 평균하여 2/(833) 레벨들이 추가된다. 따라서, 이러한 가변 레이트 구속 코드의 평균 레이트는 83/(83 + 2/3) = 0.9987이다.
다음의 예는 잡음없는 조건들에 대한 맵핑을 예시한다. 일 실시예에서, 디코더(106)는 스트림의 제1 비트를 가리키도록 초기화되는 첨부된 비트 스트림에 대한 포인터를 갖는다. 일 실시예에서, 레벨들의 인코딩된 시퀀스는 각각의 디코드 순간에 1 레벨의 증분으로 좌측에서 우측으로 스캔된다. 일 실시예에서, 각각의 디코드 동안, 5개의 연속 레벨들이 관측되고, 6-1-6 패턴이 5-레벨 판독에서 마지막 3 레벨들로서 보이는 경우, 포인터에 의해 지시되는 첨부된 비트 스트림 내의 하나의 비트가 판독된다. 일 실시예에서, 이 비트가 0이면, 레벨 정보가 변경되지 않은 채로 남는다. 일 실시예에서, 이 비트가 1이면, 6-1-6 패턴이 7-0-7 패턴으로 변경된다. 맵핑은 거꾸로 될 수 있다는 것이 이해된다.
일 실시예에서, 포인터는 첨부된 비트 스트림에서 다음 비트를 가리키도록 증분된다. 맵핑의 가역성(invertibility)은 잡음없는 판독의 경우에 쉽게 볼 수 있다. 동일한 구성 원리에서, 일 실시예에 따라, 그것들을 각각 6-1-6, 7-1-6 및 6-1-7 패턴들에 맵핑함으로써 7-0-7, 7-0-6, 및 6-0-7 패턴들을 제거(또는 거의 제거)하는 구속 코드들을 구성하는 것이 가능하다(가역성은 적절한 인코더 수정에 의해 보장되어야 한다). 6개의 패턴을 본 명세서에서는 특수 패턴들이라고 한다.
일 실시예에서, 패턴이 변경되면 첨부된 비트 스트림에 1 비트가 첨부되고, 패턴이 변경되지 않으면 첨부된 비트 스트림에 0 비트가 첨부된다. 첨부된 비트 스트림에 1 비트(1/3 레벨들)를 추가할 수 있는 6개의 패턴이 존재하기 때문에, 이러한 구속 코드의 평균 레이트는 83/(6/3 + 83) = 0.9961이다.
데이터 패턴(401)은 레벨들의 형태로 비트 패턴에 대응한다. 굵고 밑줄친 레벨 패턴들은 대부분의 ICI를 일으키는 특수 패턴들에 대응한다. 데이터 패턴(401)은 인코더(104)에 의해 구속 인코딩된다. 데이터 패턴(402)은 구속 인코딩된 코드에 대응한다. 굵고 밑줄친 레벨 패턴들은 401의 굵고 밑줄친 특수 패턴들에 맵핑하는 맵핑된 패턴들이다. 위에서 언급한 바와 같이, 특수 데이터 패턴들의 시퀀스들 7-0-7, 6-0-7, 및 7-0-6은 각각 시퀀스들 6-1-6, 6-1-7, 및 7-1-6에 맵핑된다. 특수 데이터 패턴이 새로운 시퀀스에 맵핑되었음을 나타내는 첨부된 비트 스트림(1110)이 데이터 패턴(402)에 첨부된다. 위의 예에서의 1110의 첨부된 비트 스트림은 그 다음에 레벨-0(도 2의 201 참조)의 첨부된 레벨-스트림에 맵핑되어 수정된 구속 코드(119)를 형성한다.
넓어진 레벨 분포들로 인해, 6-1-6 패턴 또는 6-1-7 패턴 또는 7-1-6 패턴은 상이한 (비-특수) 패턴으로 판독될 수 있다. 대안적으로, 비-특수 패턴은 특수 패턴으로서 판독될 수 있다. 이것은 에러 전파를 일으킬 수 있는데, 이것은 그것이 특수 패턴 정보에 대하여 첨부된 비트 스트림 정렬을 벗어나게 하기 때문이다. 일 실시예에서, 첨부된 비트 스트림 내의 에러는 에러 전파를 일으키지 않는데, 이것은 그것이 그의 관련된 패턴에만 로컬화(localize)되기 때문이다. 에러 전파를 억제하기 위하여, 일 실시예에 따라 수정된 구속 코드(119)가 이용된다.
일 실시예에서, (수정 또는 무-수정(no modification)을 나타내기 위하여) 특수 패턴 중 하나가 일어날 때마다 1 비트를 첨부하는 대신에, 6개의 패턴 중 어느 것이 발생하였는지를 나타내기 위하여 3개의 더 많은 비트들이 인코더(104)에 의해 첨부된다. 그러한 실시예에서는, 총 6개의 특수 패턴이 인코딩되어야 하고, 3개의 비트로 충분하다. 일 실시예에서, 모든 특수 패턴에 대해 4 비트가 첨부된다. 따라서, 83 패턴의 평균에 대해, 24 비트가 첨부됨으로써, 수정된 구속 코드(119)에 대하여 83/(24/3 + 83) = 0.9865의 평균 레이트를 제공한다.
본 명세서에서 실시예들은 3 비트/셀 NAND 플래시 메모리인 MLC를 참조하여 설명된다. 본 발명의 실시예들의 본질을 변경하지 않고 임의의 셀당 비트수에 대해 동일한 개념들이 이용될 수 있다.
일 실시예에서, 판독 동작 동안, 판독된 레벨들은 디코더(106)에 입력된다. 일 실시예에서, 첨부된 비트 스트림의 특수 패턴 정보는 수정된 구속 코드의 판독 레벨들로부터 재구성된다. 이러한 재구성된 스트림을 본 명세서에서는 재생된 첨부된 비트 스트림(reproduced appended bit-stream)이라고 한다.
일 실시예에서, 플래시의 판독된 첨부된 비트 스트림으로부터의 특수 패턴 정보는 그 다음에 재생된 첨부된 비트 스트림과 비교된다. 잡음 없는 경우에, 재생된 첨부된 비트 스트림과 플래시 판독된 첨부된 비트 스트림은 동일하다. 판독된 첨부된 비트 스트림에 에러가 없다고 가정하면, 레벨 판독들에서의 잡음은 삽입/삭제 채널로 이어진다.
용어 "삭제"는 본 명세서에서 디코더(106)에 판독된 수정된 구속 코드에서의 삭제를 가리킨다. 특수 패턴들 중 임의의 것이 비-특수 패턴으로서 판독되는 경우에 삭제가 발생한다. 이것은 재생된 첨부된 비트 스트림에서 특수 패턴 로깅(special pattern logging)의 손실을 발생시킨다.
용어 "삽입"은 본 명세서에서 디코더(106)에 판독된 수정된 구속 코드에서의 데이터의 삽입을 가리킨다. 특수하지 않은 패턴이 특수 패턴으로서 판독되는 경우에 삽입이 발생한다. 이것은 재생된 첨부된 비트 스트림에서 특수 패턴으로서 비-특수 패턴의 로깅을 야기한다.
일 실시예에서, 재구성된 첨부된 비트 스트림은 디코더(106)에 의해 잡음 있는 첨부된 비트 스트림과 비교된다. 재구성된 첨부된 비트 스트림과 잡음 있는 첨부된 비트 스트림을 비교함으로써, 일 실시예에 따라 동기화기(120)에 의해 동기화가 실현될 수 있다. 또한, 잡음 있는 첨부된 비트 스트림에 에러들이 존재할 수 있다. 일 실시예에서, 2개의 시퀀스 간의 동기화는 삽입들, 삭제들, 및 에러들의 위치들을 추정함으로써 획득될 수 있다. 일 실시예에서, 판독된 첨부된 비트 스트림을 조건으로 하는 재구성된 첨부된 비트 스트림의 확률을 최대화하는 동기화기(120) 내의 추정기는 최대 공산(ML) 추정기이다. 일 실시예에서, ML 추정기는 삽입들, 삭제들, 및 에러들로부터 복구하기 위한 비터비(Viterbi) 검출기이다.
일 실시예에서, 동기화기(120)는 2개의 시퀀스 - 재구성된 첨부된 비트 스트림 및 잡음 있는 첨부된 비트 스트림 - 간에 동기화의 손실이 존재할 때 ML 추정기를 호출한다. 일 실시예에서, 동기화기(120)의 추정기는 어느 이벤트가 최고 확률을 갖는지에 따라 삽입, 삭제, 또는 에러가 발생하였는지를 추정하도록 동작 가능하다. 일단 동기화가 획득되면, 특수 패턴들과 첨부된 비트 스트림의 정렬 이탈(off-alignment)로 인한 재앙적(catastrophic) 에러 전파가 회피된다.
도 4의 예를 계속해서 참조하면, 데이터 패턴(403)은 디코더(106)에 의해 판독된 잡음 있는 레벨들을 나타낸다. 인코더(104)에 의해 402에서 6-1-6에 맵핑된 401의 제1 7-0-7이 삭제로서 디코더(106)에 의해 403의 6-1-5로서 판독된다. 402의 데이터 패턴 5-1-7은 재구성된 첨부된 비트 스트림에서 삽입을 야기하는 403의 6-1-7에 맵핑된다. 판독된 잡음 있는 레벨들로부터 재구성된 첨부된 비트 스트림에서, 재구성된 패턴들은 404에 의해 도시된 바와 같이 (607)(706)(706)(616)...이다. 판독된 잡음 없는 첨부된 비트 스트림은 405에 의해 도시된 바와 같이 레벨들 (707)(706)(706)(616)...을 나타낼 것이다. 일 실시예에서, 동기화기(120)는 재구성된 첨부된 비트 스트림에서 삽입들/삭제들 및 에러들을 찾기 위하여 재구성된 첨부된 비트 스트림을 잡음 있는 첨부된 비트 스트림에 맵핑하기 위한 동기화 알고리즘을 호출한다.
일 실시예에서, 성공적인 동기화가 일어나면, 그것은 (707)의 삭제 및 (607) 패턴의 삽입이 존재함을 나타낸다. 일 실시예에서, 삽입된 특수 패턴 위치가 알려져 있기 때문에 삽입이 결정된다. 위의 예에서, (607) 패턴의 삽입이 404에서 발생하였다는 것이 알려져 있고, 그래서 가장 공산이 큰 비-특수 패턴들 중 하나에 대한 이 패턴의 맵핑이 행해진다.
일 실시예에서, 삭제는 404에서의 제2 (706) 패턴 전에 삭제가 발생하였다고 결정하는 것에 의해 식별된다. 일 실시예에서, 제2 패턴의 발생 전의 모든 3개의 연속 레벨들이 6-1-6 패턴과 비교되고, 가장 공산이 큰 비-특수 패턴이 6-1-6 패턴에 맵핑된다. 그러한 실시예에서, 정확하게 검출된 삽입들 및 삭제들이 레벨 정보의 보정 및 잡음 영향의 감소를 돕기 때문에 동기화는 또한 에러 레이트를 효과적으로 감소시킨다.
도 5는 본 발명의 일 실시예에 따른, 최대 공산 디코더(106)를 통한 데이터 동기화를 위해 이용되는 수정된 구속 코드(119)를 생성하기 위한 인코딩 방법의 흐름도(500)이다.
흐름도(500) 내의 블록들이 특정 순서로 도시되지만, 작용 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 상이한 순서로 수행될 수 있고, 일부 작용/블록은 병렬로 수행될 수 있다. 부가적으로, 최대 공산 디코더(106)를 통한 데이터 동기화를 위해 이용되는 수정된 구속 코드(119)를 생성하기 위한 다양한 실시예에서 하나 이상의 작용/블록이 생략될 수 있다. 흐름도(500)의 블록들은 도 1 내지 도 4를 참조하여 논의된다. 반복을 피하기 위하여, 도 1 내지 도 4를 참조하여 위에서 설명을 요약한 블록들만이 설명된다.
블록(501)에서, 첨부된 비트 스트림은 인코더(104)에 의해 널 스트림으로 초기화된다. 널 스트림은 데이터 스트림 내의 특수 패턴들의 존재에 따라 그것이 1들 및 0들로 수정되기 전에, 첨부된 비트 스트림이 공지된 상태를 갖도록, 즉, 모든 비트가 0이 되도록 보장한다. 블록(502)에서, 인코더(104)는 데이터 스트림 내의 특수 패턴이 다른 패턴에 맵핑될 때, 예를 들어, 401의 좌측단에서의 굵고 밑줄친 패턴(707)이 402의 좌측단에서의 616에 맵핑될 때, 첨부된 비트 스트림(이전에 NULL)에 1 비트를 첨부한다. 블록(503)에서, 인코더(104)는 데이터 스트림 내의 특수 패턴이 변경되지 않은 채로 남으면, 예를 들어, 401 및 402의 우측단에서의 굵고 밑줄친 패턴(616)이 변경되지 않은 채로 남으면, 첨부된 비트 스트림에 0 비트를 첨부한다. 특수 패턴들에 기초하여 1 및 0을 첨부함으로써, 구속 코드가 인코더(104)에 의해 생성된다.
블록(504)에서, 구속 코드는 특수 패턴들 중 어느 특수 패턴이 데이터 스트림에서 발생하였는지를 나타내는 비트들을 삽입함으로써 인코더(104)에 의해 수정된다. 예를 들어, 패턴 7-0-7을 표현하기 위하여, 3개의 비트를 이용하여 7-0-7 패턴이 데이터 스트림에서 발생하였음을 나타낼 수 있다.
블록(505)에서, 미리 결정된 비트 패턴이 첨부된 비트 스트림의 끝에서 인코더(104)에 의해 첨부된다. 일 실시예에서, 미리 결정된 비트 패턴을 이용하여 디코딩 및 동기화 절차 동안 동기화기(120)에 의해 생성되는 트렐리스를 종료한다.
도 6은 본 발명의 일 실시예에 따른, 최대 공산 디코더(106)를 통한 데이터 동기화를 위한 디코딩 방법의 흐름도(600)이다.
흐름도(600) 내의 블록들은 특정 순서로 도시되지만, 작용 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 상이한 순서로 수행될 수 있고, 일부 작용/블록은 병렬로 수행될 수 있다. 부가적으로, 최대 공산 디코더(106)를 통한 데이터 동기화를 위한 다양한 실시예에서 하나 이상의 작용/블록이 생략될 수 있다. 흐름도(600)의 블록들은 도 1 내지 도 5를 참조하여 논의된다. 반복을 피하기 위하여, 도 1 내지 도 5를 참조하여 위에서 설명을 요약한 블록들만이 설명된다.
일 실시예에서, 디코더(106)는 NVM(102)으로부터 수정된 구속 코드(119)를 판독한다. 일 실시예에서, 디코더(106)는 재구성된 비트 스트림을 생성하고, 블록(601)에서 삽입들, 삭제들, 및 에러들을 포함하는 잡음 있는 첨부된 비트 스트림과 재구성된 비트 스트림을 비교한다. 블록(602)에서, 디코더(106)는 블록(601)에서의 비교에 응답하여 재구성된 비트 스트림 및 잡음 있는 첨부된 비트 스트림에서 불일치가 존재하는지를 결정한다. 불일치가 존재하지 않으면, 블록(603)에서, 2개의 비트 스트림은 이미 동기화되어 있고, 동기화기(120)를 트리거/호출할 필요가 없다. 불일치가 존재하면, 디코더(106)는 동기화기(120)를 호출하여 블록들(604-607)을 실행한다.
블록(604)에서, 동기화기(120)는 재구성된 첨부된 비트 스트림에서 삭제 확률을 계산한다. 블록(605)에서, 동기화기(120)는 재구성된 첨부된 비트 스트림에서 삽입 확률을 계산한다. 블록(606)에서, 동기화기(120)는 블록들(604 및 605)에서 계산된 삭제 및 삽입 확률과 연관된 상태들을 갖는 재구성된 첨부된 비트 스트림에서의 가장 공산이 큰 삽입 또는 삭제의 위치 및 패턴들을 결정하기 위해 트렐리스를 생성한다. 블록(607)에서, 재구성된 첨부된 비트 스트림에서 트렐리스에 의해 결정된 가장 공산이 큰 삽입 또는 삭제를 갖는 가장 공산이 큰 위치에서 맵핑함으로써 최종 패턴이 맵핑된다. 동기화 절차들(604-607)은 도 7의 예에 의해 더욱 상세히 논의된다.
도 7은 본 발명의 일 실시예에 따른, 삽입 및 삭제 에러들로부터 복구를 위한 데이터 동기화를 위한 예시적인 트렐리스(700)이다.
블록들(604 및 605)에서 언급한 바와 같이, 동기화기(120)는 삽입 및 삭제 확률을 생성한다. 'δ'를 삭제 확률로 하고, 'λ'를 삽입 확률로 한다. RBER은 r로 한다. 위에서 언급한 바와 같이, 비-특수 패턴에 맵핑되는 특수 패턴은 삭제를 생성한다. 도 4를 참조하여 논의된 예에서, 401의 첫번째 최좌측의 굵고 밑줄친 패턴을 고려하면, 7-0-7 패턴은 402의 6-1-6 패턴에 맵핑되고, 6-1-6 패턴에서의 임의의 레벨이 다른 레벨에 맵핑되는 경우에 삭제가 발생한다. 그러한 실시예에서, 6-1-6 패턴은 확률 6r을 갖는 비-특수 패턴으로 트랜짓(transit)할 수 있다. 따라서, 삭제 확률 δ는 6r이다. 위에서 언급한 바와 같이, 임의의 비-특수 패턴이 6-1-6 패턴에 맵핑하는 경우에 삽입이 발생한다. 이것을 일으킬 수 있는 가장 공산이 큰 패턴들은 6-2-6, 5-1-6, 6-0-6, 6-1-5, 7-1-6, 및 6-1-7이다. 따라서, 삽입 확률 λ= 12r/83이다.
판독 레벨 정보를 r = r1 r2 r3...이라고 하고, 첨부된 비트 스트림으로부터의 잡음 있는 레벨 정보를 y = y1 y2 y3...이라고 한다. 삽입들/삭제들이 r-시퀀스에서 발생하고, 에러들이 y-시퀀스에서 발생한다. 동기화기(120)에 의한 동기화의 목적은 삽입/삭제 및 에러들에 대한 ML 추정을 이용하여 'r' 시퀀스를 'y'와 정렬하는 것이다. 동기화기(120)는 동기화 프로세스를 진행하기 위하여 'r'이 삽입/삭제를 갖고 'y'가 에러들을 갖는다는 사실을 이용한다.
본 발명의 실시예들을 불명료하게 하지 않기 위하여, 이진 시퀀스들에서 삽입/삭제 및 에러에 대한 동기화 분석이 에러 없는 'y'의 가정으로 예시된다. 위의 예시를 참조하여, 본 명세서에 논의된 실시예는, 본 발명의 실시예들의 본질을 변경하지 않고 에러 발생이 쉬운 'y'로 확장될 수 있다.
도 7에서 3개의 시퀀스 'A', 'B' 및 't'(시간 인덱스)를 고려한다. 'A'는 이상적인 비트 스트림(이것은 잡음 없는 첨부된 비트 스트림에 대응함)이고, 'B'는 삽입/삭제에 의해 손상된 비트 스트림(이것은 재구성된 첨부된 비트 스트림에 대응함)이고, 't'는 시간 인덱스 시퀀스이다.
시간 인덱스 2에서, 삭제가 존재한다. 시간 인덱스 14에서, 삽입이 존재한다. 일 실시예에서, 디코더(106)는 시간 인덱스 1로부터 시작하는 시퀀스들 'A' 및 'B'을 비교하고, 불일치의 시간 인덱스에서, 동기화기(120)는 시퀀스 'A' 및 'B'를 재동기화하기 위해 호출된다. 일 실시예에서, 동기화기(120)는 어느 것이든 가장 공산이 큰, 삽입, 삭제, 에러 또는 이들의 조합이 발생하였는지를 추정하려고 시도한다. 일 실시예에서, 트렐리스는 어느 것이든 가장 공산이 큰, 삽입, 삭제, 에러 또는 이들의 조합이 발생하였는지 추정을 결정하기 위해 동기화기(120)에 의해 구성된다.
일 실시예에서, 동기화기(120)는 위의 목적을 수행하기 위해 ML 추정기를 호출한다. 일 실시예에서, ML 추정기는 완전한/종래의 비터비 검출기는 계산상 고비용이기 때문에 수정된 비터비 검출기(유한한 개수의 트렐리스 섹션들로 절단된 검출기)이다.
도 7에 도시된 바와 같이, 일 실시예에서, 트렐리스 구성은 동기화의 손실이 존재할 때 동기화기(120)에 의해 시작되고, 그 다음에 가장 공산이 큰 삽입/삭제 패턴을 추적하여 2개의 시퀀스를 재동기화시킨다. 위에서 언급한 바와 같이, 현재의 분석에서는, 첨부된 비트 스트림 내의 에러들이 발생하지 않는다고, 즉, 에러 없는 'y'를 가정한다. 일 실시예에서, 트렐리스에서의 상이한 상태들의 확률은 삽입 및 삭제의 확률의 함수로서 계산될 수 있다.
일 실시예에서, 트렐리스는 동기(sync) 상태로부터 시작한다. 전술한 예에서, 시퀀스 'B'의 시간 인덱스 2 동안 동기의 손실이 발생하고 있기 때문에, 고려되는 비트는 시퀀스 'B'의 비트 2이다. 동기 상태로부터 나오는 상태들의 제1 세트에 대하여, 상태들에 대한 수들은 시퀀스 'B'의 비트 2와 동기화되는 시퀀스 'A'의 비트에 대한 시간 인덱스들을 나타낸다. 하나의 삭제가 발생하고 나서 삽입/삭제가 발생하지 않는 경우에 시퀀스 'B'의 비트 2와 시퀀스 'A'의 비트 3이 동일함을 나타내기 위해 동기 상태로부터 상태 3으로의 에지(edge)가 존재한다.
하나의 삭제를 고려하여 시퀀스 'B'에 대한 시간 인덱스 2는 시퀀스 'A'의 시간 인덱스 3과 동기화되고, 그래서 동기 상태 대 상태 3을 접속하는 에지의 확률은 δ(1-δ)(1-λ)로 주어진다. 유사하게, 수 5를 갖는 상태는 삽입/삭제가 뒤따르지 않는 3개의 삭제를 나타내고, 따라서, 그의 확률은 δ3(1-δ)(1-λ)이다. 일 실시예에서, (1-δ)(1-λ)항은 에지들 전부에 공통이기 때문에, 그것이 추정을 변경하지 않을 것이므로, 계산에서 고려되지 않는다.
일 실시예에서, 수 1을 갖는 상태는 삽입, 즉, 가장 높은 삽입 확률에 대응한다. 동기 상태로부터 나오는 무한히 많은 상태가 존재할 수 있기 때문에, 트렐리스는 간결하게 된다(pruned). 일 실시예에서, 수락 가능한 복잡도(complexity), δ 및 λ의 값들에 의존하여, 중요한 확률을 갖는 브랜치들만이 유지된다. 일 실시예에서, δ>>λ이면, 삽입 상태들보다 더 많은 삭제들이 고려된다.
트렐리스의 제2 섹션은 시간 인덱스 3에서 시퀀스 'B'의 비트에 대응한다. 트렐리스는 기술적으로 무한정 성장할 수 있다. 결정을 행하기 위한 다양한 방식들이 존재한다. 일 실시예에서, 고정된 수의 트렐리스 섹션들('n'이라 함) 후에, 가장 높은 확률을 갖는 상태가 선택되고, 그 상태에 의해 주어진 삽입/삭제 조합을 고려하여 동기화가 획득된다. 일 실시예에서, 수 'n'은 트렐리스 섹션당 상태들의 수에 의존한다. 일 실시예에서, 결정은 가장 높은 확률을 갖는 상태로서 생존자(survivor) 상태를 선택함으로써 행해진다. 일 실시예에서, 일단 생존자 상태가 선택되면, 동기화는 어서트된다(asserted).
일 실시예에서, 위에서 구성된 트렐리스는 첨부된 비트 스트림이 에러들을 갖는 경우, 즉, 에러 발생이 쉬운 y인 경우를 고려하기 위해 매우 쉽게 확장될 수 있다. 일 실시예에서, 트렐리스의 절단(truncation)은 성능을 악화시킬 수 있기 때문에 적절한 트렐리스 종료가 요구된다. 블록(505)에서 논의한 바와 같이, 고정된 미리 결정된 패턴이 트렐리스 종료를 위해 첨부된 비트 스트림의 끝에 삽입된다. 일 실시예에서, 종료되는 패턴은 요구된 길이의 넌-제로 스트링이다.
일 실시예에서, 동기화는 패턴(특수 또는 임의의 금지된 패턴)이 디코더(106)에 판독되어 트렐리스에 기초하여 (확률적 의미에서) 가장 가까운 허용 가능한 패턴에 맵핑될 때 완료된다. 예를 들어, 7-0-7 패턴(또는 임의의 금지된 패턴)이 보이는 경우, 그것은 (확률적 의미에서) 가장 가까운 허용 가능한 패턴에 맵핑된다.
일 실시예에서, 레벨 정보가 중간 페이지를 디코딩하기 위해서도 이용 가능한 애플리케이션들에 대하여, 코드들의 설계에 있어서 더 많은 유연성이 존재한다. 그러한 실시예에서, 레벨들 0, 1, 2, 및 3은 함께 그룹화될 수 있고, 레벨들 4, 5, 6, 및 7은 함께 그룹화될 수 있고, 코드 설계는 그룹들 간이 아니라 그룹들 내에서 레벨 맵핑을 허용한다. 그러한 실시예는 하부 페이지 비트들이 구속 인코딩에 의해 터치되지 않도록 보장한다.
도 8은 본 발명의 일 실시예에 따른, 인코더(104)에 의해 수정된 구속 코드를 생성하기 위한 메모리 컨트롤러 및/또는 프로세서를 포함하는 시스템 레벨도(1300)이고, 수정된 구속 코드는 메모리 컨트롤러 내의 최대 공산 디코더(106)를 통한 데이터 동기화를 위해 이용된다.
도 8은 또한 다양한 실시예들의 방법들을 수행하도록 컴퓨터 판독 가능한 명령어들을 실행하기 위한 머신 판독 가능한 저장 매체를 포함한다. 실시예들의 요소들은 또한 컴퓨터 실행 가능한 명령어들(예를 들어, 도 4 내지 도 6의 흐름도 및 프로세스들을 구현하기 위한 명령어들)을 저장하기 위한 머신 판독 가능한 매체로서 제공된다. 머신 판독 가능한 매체는 플래시 메모리, 광학 디스크, CD-ROM, DVD ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 또는 컴퓨터 실행 가능한 명령어들을 저장하는 데 적절한 다른 타입의 머신 판독 가능한 매체를 포함할 수 있고, 이것으로 한정되지 않는다. 예를 들어, 본 발명의 실시예들은 통신 링크(예를 들어, 모뎀 또는 네트워크 접속)를 통해 데이터 신호들에 의해 원격 컴퓨터(예를 들어, 서버)로부터 요구하는 컴퓨터(예를 들어, 클라이언트)로 전달될 수 있는 컴퓨터 프로그램(예를 들어, BIOS)으로서 다운로드될 수 있다. 일 실시예에서, 머신 판독 가능한 매체는 SSD(101)(SOC(109)의 부분)에 위치할 수 있다.
일 실시예에서, 시스템(1300)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 넷북, 태블릿, 노트북 컴퓨터, PDA(personal digital assistant), 서버, 워크스테이션, 셀룰러 전화기, 모바일 컴퓨팅 장치, 스마트폰, 인터넷 어플라이언스(Internet appliance) 또는 임의의 다른 타입의 컴퓨팅 장치를 포함하고, 이것으로 한정되지 않는다. 다른 실시예에서, 시스템(1300)은 본 명세서에 개시된 방법들을 구현하고, SOC(system on a chip) 시스템일 수 있다.
일 실시예에서, 프로세서(1310)는 하나 이상의 프로세싱 코어들(1312 및 1312N)을 갖고, 1312N은 프로세서(1310) 내부의 N번째 프로세서 코어를 나타내고, N은 양의 정수이다. 일 실시예에서, 시스템(1300)은 프로세서들(1310 및 1305)을 포함한 복수의 프로세서들을 포함하고, 프로세서(1305)는 프로세서(1310)의 로직과 유사하거나 동일한 로직을 갖는다. 일 실시예에서, 시스템(1300)은 프로세서(1305)가 프로세서(1310)의 로직과 완전히 독립적인 로직을 갖도록 프로세서들(1310 및 1305)을 포함한 복수의 프로세서들을 포함한다. 그러한 실시예에서, 멀티 패키지 시스템(1300)은 이종 멀티 패키지 시스템이고, 이것은 프로세서들(1310 및 1305)이 상이한 논리적 유닛들을 갖기 때문이다. 일 실시예에서, 프로세싱 코어(1312)는 명령어들을 인출하기 위한 사전 인출 로직, 명령어들을 디코딩하기 위한 디코드 로직, 명령어들을 실행하기 위한 실행 로직 등을 포함하고, 이것으로 한정되지 않는다. 일 실시예에서, 프로세서(1310)는 시스템(1300)의 명령어들 및/또는 데이터를 캐싱하기 위한 캐시 메모리(1316)를 갖는다. 본 발명의 다른 실시예에서, 캐시 메모리(1316)는 레벨 1, 레벨 2 및 레벨 3 캐시 메모리, 또는 프로세서(1310) 내의 임의의 다른 구성의 캐시 메모리를 포함한다.
일 실시예에서, 프로세서(1310)는 프로세서(1310)가 휘발성 메모리(1332) 및/또는 비휘발성 메모리(1334)를 포함하는 메모리(1330)와 액세스하고 통신할 수 있게 하는 기능들을 수행하도록 동작 가능한 메모리 컨트롤 허브(memory control hub; MCH)(1314)를 포함한다. 일 실시예에서, 메모리 컨트롤 허브(MCH)(1314)는 독립적 집적 회로로서 프로세서(1310)의 외부에 위치한다.
일 실시예에서, 프로세서(1310)는 메모리(1330) 및 칩셋(1320)과 통신하도록 동작 가능하다. 일 실시예에서, 프로세서(1310)(도 1의 114와 동일함) 및 칩셋(1320)은 도 1의 호스트(110)의 부분이다. 일 실시예에서, 칩셋(1320)은 SATA 버스(1350)(도 1의 버스(112)와 동일함)를 통해 SSD(1380)(도 1의 101과 동일함)에 결합된다. 일 실시예에서, SSD(1380)는 도 4 내지 도 6의 흐름도 및 프로세스들을 구현하기 위한 컴퓨터 실행 가능한 명령어들을 저장하기 위한 머신 판독 가능한 매체를 포함한다. 그러한 실시예에서, SSD(1380)는 SSD(1380)가 파워 업될 때 컴퓨터 실행 가능한 명령어들을 실행한다.
일 실시예에서, 프로세서(1310)는 또한 무선 신호들을 송신하고/하거나 수신하도록 구성된 임의의 장치와 통신하기 위해 무선 안테나(1378)에 결합된다. 일 실시예에서, 무선 안테나 인터페이스(1378)는 IEEE 802.11 표준 및 그의 관련 계열(family), HPAV(HomePlug AV), UWB(Ultra Wide Band), 블루투스, WiMAX, 또는 임의의 형태의 무선 통신 프로토콜(이것으로 한정되지 않음)에 따라 동작한다.
일 실시예에서, 휘발성 메모리(1332)는 SDRAM(Synchronous Dynamic Random Access Memory), DRAM(Dynamic Random Access Memory), RDRAM(RAMBUS Dynamic Random Access Memory), 및/또는 임의의 다른 타입의 랜덤 액세스 메모리 장치를 포함하고, 이것으로 한정되지 않는다. 비휘발성 메모리(1334)는 플래시 메모리(예를 들어, NAND, NOR), PCM(phase change memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 또는 임의의 다른 타입의 비휘발성 메모리 장치를 포함하고, 이것으로 한정되지 않는다.
메모리(1330)는 프로세서(1310)에 의해 실행될 정보 및 명령어들을 저장한다. 일 실시예에서, 메모리(1330)는 프로세서(1310)가 명령어들을 실행하고 있는 동안 임시 변수 또는 다른 중간 정보를 저장할 수도 있다. 일 실시예에서, 칩셋(1320)은 점대점(PtP 또는 P-P) 인터페이스들(1317 및 1322)을 통해 프로세서(1310)와 접속한다. 일 실시예에서, 칩셋(1320)은 프로세서(1310)가 시스템(1300) 내의 다른 모듈들에 접속할 수 있게 한다. 본 발명의 일 실시예에서, 인터페이스들(1317 및 1322)은 INTEL® 퀵패스 인터커넥트(QuickPath Interconnect; QPI) 등과 같은 PtP 통신 프로토콜에 따라 동작한다.
일 실시예에서, 칩셋(1320)은 프로세서(1310, 1305), 디스플레이 장치(1340), 및 다른 장치들(1372, 1376, 1374, 1360, 1362, 1364, 1366, 1377) 등과 통신하도록 동작 가능하다. 일 실시예에서, 칩셋(1320)은 또한 무선 신호들을 송신하고/하거나 수신하도록 구성된 임의의 장치와 통신하기 위해 무선 안테나(1378)에 결합된다.
일 실시예에서, 칩셋(1320)은 인터페이스(1326)를 통해 디스플레이 장치(1340)에 접속한다. 일 실시예에서, 디스플레이(1340)는 LCD(liquid crystal display), 플라즈마, CRT(cathode ray tube) 디스플레이, 또는 임의의 다른 형태의 시각적 디스플레이 장치를 포함하고, 이것으로 한정되지 않는다. 본 발명의 일 실시예에서, 프로세서(1310) 및 칩셋(1320)은 단일 SOC 내로 병합된다. 또한, 칩셋(1320)은 다양한 모듈(1374, 1360, 1362, 1364, 및 1366)을 상호접속하는 하나 이상의 버스(1350 및 1355)에 접속한다. 일 실시예에서, 버스들(1350 및 1355)은 버스 속도 또는 통신 프로토콜에 있어서 불일치가 존재하는 경우에 버스 브리지(1372)를 통해 함께 상호접속될 수 있다. 일 실시예에서, 칩셋(1320)은 인터페이스(1324), 스마트 TV(1376), 소비자 가전제품(1377) 등을 통해 비휘발성 메모리(1360), 대용량 저장 장치(들)(1362), 키보드/마우스(1364), 및 네트워크 인터페이스(1366)(이것으로 한정되지 않음)와 결합한다.
일 실시예에서, 대용량 저장 장치(1362)는 고체 상태 드라이브, 하드 디스크 드라이브, 범용 직렬 버스 플래시 메모리 드라이브, 또는 임의의 다른 형태의 컴퓨터 데이터 저장 매체를 포함하고, 이것으로 한정되지 않는다. 일 실시예에서, 네트워크 인터페이스(1366)는 이더넷 인터페이스, USB(universal serial bus) 인터페이스, PCI(Peripheral Component Interconnect) 익스프레스 인터페이스, 무선 인터페이스, 및/또는 임의의 다른 적절한 타입의 인터페이스를 포함하지만 이것으로 한정되지 않는 임의의 타입의 공지된 네트워크 인터페이스에 의해 구현된다. 일 실시예에서, 무선 인터페이스는 IEEE 802.11 표준 및 그의 관련 계열, HPAV(HomePlug AV), UWB(Ultra Wide Band), 블루투스, WiMAX, 또는 임의의 형태의 무선 통신 프로토콜(이것으로 한정되지 않음)에 따라 동작한다.
도 5에 도시된 모듈들은 시스템(1300) 내의 별개의 블록들로서 도시되지만, 이들 블록 중 일부에 의해 수행된 기능들은 단일 반도체 회로 내에 통합될 수 있거나 2개 이상의 별개의 집적 회로들을 이용하여 구현될 수 있다. 예를 들어, 캐시 메모리(1316)가 프로세서(1310) 내의 별개의 블록으로서 도시되지만, 캐시 메모리(1316)는 각각 프로세서 코어(1312) 내로 통합될 수 있다. 일 실시예에서, 시스템(1300)은 본 발명의 다른 실시예에서 하나보다 많은 프로세서/프로세싱 코어를 포함할 수 있다.
명세서에서 "실시예", "일 실시예", "일부 실시예들", 또는 "다른 실시예들"에 대한 참조는 그 실시예들과 관련하여 설명된 특정 특징, 구조, 또는 특성이 적어도 일부 실시예들에 포함되지만, 반드시 모든 실시예들에 포함되는 것은 아님을 의미한다. "실시예", "일 실시예", 또는 "일부 실시예들"의 다양한 출현은 반드시 모두 동일한 실시예들을 가리키는 것은 아니다. 명세서가 컴포넌트, 특징, 구조, 또는 특성이 포함될 수 있다("may," "might," or "could" be included)고 기재하는 경우, 그 특정 컴포넌트, 특징, 구조, 또는 특성이 포함되도록 요구되지 않는다. 명세서 또는 청구항이 한("a" or "an") 요소를 가리키는 경우, 그것은 요소들 중 하나만이 존재함을 의미하지 않는다. 명세서 또는 청구항이 "부가적인" 요소를 가리키는 경우, 그것은 하나보다 많은 부가적인 요소가 존재함을 배제하지 않는다.
본 발명이 그의 특정 실시예들과 관련하여 설명되었지만, 그러한 실시예들의 많은 대안들, 수정들 및 변형들이 전술한 설명에 비추어 이 기술분야의 통상의 기술자에게 명백할 것이다. 본 발명의 실시예들은 첨부된 청구항들의 넓은 범위 내에 있는 것으로서 모든 그러한 대안들, 수정들 및 변형들을 수용하는 것으로 의도된다.

Claims (29)

  1. 비휘발성 메모리(non-volatile memory; NVM)로부터 채널을 통해 구속 코드워드(constrained codeword)를 수신하는 단계 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 및
    상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 최대 공산(maximum-likelihood; ML) 추정기를 적용하는 동기화 절차(procedure)를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 첨부된 비트 스트림은 특수 패턴들 중 어느 특수 패턴이 입력에서 발생하였는지를 나타내는 비트들을 삽입함으로써 생성되는, 방법.
  3. 제2항에 있어서,
    상기 첨부된 비트 스트림은 또한,
    상기 특수 패턴이 다른 패턴에 맵핑될 때 상기 첨부된 비트 스트림에 1 비트를 첨부하는 단계; 및
    상기 특수 패턴이 변경되지 않은 채로 있을 때 상기 첨부된 비트 스트림에 0 비트를 첨부하는 단계
    에 의해 생성되는, 방법.
  4. 제2항에 있어서,
    디코딩 단계는,
    에러들 및 삽입들 또는 삭제들을 포함하는 잡음 있는 첨부된 비트 스트림과 상기 재구성된 첨부된 비트 스트림을 비교하는 단계
    를 포함하고, 상기 비교하는 단계는 상기 잡음 있는 첨부된 비트 스트림과 상기 재구성된 첨부된 비트 스트림 사이의 임의의 불일치(mismatch)를 결정하기 위한 것이고,
    상기 동기화 절차는 불일치가 결정될 때 호출되는, 방법.
    제2항에 있어서,
    3-비트 멀티 레벨 셀(multi-level-cell; MLC)에 대한 상기 특수 패턴들은,
    7-0-7 레벨 패턴;
    6-0-7 레벨 패턴;
    7-0-6 레벨 패턴;
    6-1-6 레벨 패턴;
    6-1-7 레벨 패턴; 및
    7-1-6 레벨 패턴
    을 포함하는, 방법.
  5. 제1항에 있어서,
    상기 동기화 절차는,
    상기 재구성된 첨부된 비트 스트림 내의 가장 공산이 큰(most likely) 삽입 또는 삭제의 위치 및 패턴을 결정하기 위해 트렐리스(Trellis)를 생성하는 단계 - 상기 트렐리스는 연관된 삭제 및 삽입 확률들을 갖는 상태들을 가짐 - ; 및
    상기 재구성된 첨부된 비트 스트림에서, 상기 트렐리스에 의해 결정된 상기 가장 공산이 큰 삽입 또는 삭제를 갖는 가장 공산이 큰 위치에서 패턴을 맵핑하는 단계
    를 포함하는, 방법.
  6. 제6항에 있어서,
    상기 동기화 절차는,
    상기 재구성된 첨부된 비트 스트림에서 삭제 확률을 계산하는 단계; 및
    상기 재구성된 첨부된 비트 스트림에서 삽입 확률을 계산하는 단계
    를 포함하는, 방법.
  7. 제6항에 있어서,
    상기 트렐리스를 종료하기 위해, 상기 첨부된 비트 스트림의 끝에서, 미리 결정된 비트 패턴을 첨부하는 단계
    를 더 포함하는 방법.
  8. 제8항에 있어서,
    상기 미리 결정된 비트 패턴은 넌-제로 비트 패턴인, 방법.
  9. 제1항에 있어서,
    상기 ML 추정기는 상기 재구성된 첨부된 비트 스트림에서 삽입, 삭제, 또는 에러가 발생하였는지를 추정하기 위한 절단된 비터비 검출기(truncated Viterbi detector)인, 방법.
  10. 제1항에 있어서,
    상기 첨부된 비트 스트림을 널(null) 스트림으로 초기화하는 단계
    를 더 포함하는 방법.
  11. 제1항에 있어서,
    상기 NVM은 NAND 플래시 메모리인, 방법.
  12. 제1항에 있어서,
    상기 첨부된 비트 스트림은 가변 길이 비트 스트림인, 방법.
  13. 메모리 컨트롤러로서,
    디코더를 포함하고,
    상기 디코더는,
    비휘발성 메모리(NVM)로부터 채널을 통해 구속 코드워드를 수신하고 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ;
    상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 최대 공산(ML) 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는, 메모리 컨트롤러.
  14. 제14항에 있어서,
    인코더를 더 포함하고,
    상기 인코더는,
    특수 패턴들 중 어느 특수 패턴이 입력에서 발생하였는지를 나타내는 비트들을 삽입함으로써 상기 첨부된 비트 스트림을 생성하고;
    상기 특수 패턴이 다른 패턴에 맵핑될 때 상기 첨부된 비트 스트림에 1 비트를 첨부하고;
    상기 특수 패턴이 변경되지 않은 채로 있을 때 상기 첨부된 비트 스트림에 0 비트를 첨부하는, 메모리 컨트롤러.
  15. 제15항에 있어서,
    상기 인코더는,
    트렐리스를 종료하기 위해, 상기 첨부된 비트 스트림의 끝에서, 미리 결정된 비트 패턴을 첨부하도록 동작 가능한, 메모리 컨트롤러.
  16. 제16항에 있어서,
    상기 미리 결정된 비트 패턴은 넌-제로 비트 패턴인, 메모리 컨트롤러.
  17. 제15항에 있어서,
    상기 인코더는,
    상기 첨부된 비트 스트림을 널(null) 스트림으로 초기화하기 위한 것인, 메모리 컨트롤러.
  18. 제14항에 있어서,
    상기 디코더는,
    에러들 및 삽입들 또는 삭제들을 포함하는 잡음 있는 첨부된 비트 스트림과 상기 재구성된 첨부된 비트 스트림을 비교하도록 동작 가능하고, 상기 비교는 상기 잡음 있는 첨부된 비트 스트림과 상기 재구성된 첨부된 비트 스트림 사이의 임의의 불일치를 결정하기 위한 것이고,
    상기 동기화 절차는 불일치가 결정될 때 호출되는, 메모리 컨트롤러.
  19. 제14항에 있어서,
    상기 디코더는,
    상기 재구성된 첨부된 비트 스트림 내의 가장 공산이 큰 삽입 또는 삭제의 위치 및 패턴을 결정하기 위해 트렐리스(Trellis)를 생성하고 - 상기 트렐리스는 연관된 삭제 및 삽입 확률들을 갖는 상태들을 가짐 - ;
    상기 재구성된 첨부된 비트 스트림에서, 상기 트렐리스에 의해 결정된 상기 가장 공산이 큰 삽입 또는 삭제를 갖는 가장 공산이 큰 위치에서 패턴을 맵핑함으로써 상기 동기화 절차를 수행하도록 동작 가능한, 메모리 컨트롤러.
  20. 제20항에 있어서,
    상기 디코더는 또한,
    상기 재구성된 첨부된 비트 스트림에서 삭제 확률을 계산하고;
    상기 재구성된 첨부된 비트 스트림에서 삽입 확률을 계산하도록 동작 가능한, 메모리 컨트롤러.
  21. 제14항에 있어서,
    상기 ML 추정기는 상기 재구성된 첨부된 비트 스트림에서 삽입, 삭제, 또는 에러가 발생하였는지를 추정하기 위한 절단된 비터비 검출기인, 메모리 컨트롤러.
  22. 제14항에 있어서,
    상기 NVM은 NAND 플래시 메모리인, 메모리 컨트롤러.
  23. 시스템으로서,
    채널을 통해 비휘발성 메모리(NVM)에 결합된 메모리 컨트롤러를 포함하는 고체 상태 드라이브(solid state drive; SSD)
    를 포함하고,
    상기 메모리 컨트롤러는,
    디코더; 및
    상기 SSD에 저장된 내용들을 디스플레이하는 디스플레이 유닛
    을 포함하고,
    상기 디코더는,
    상기 NVM으로부터 상기 채널을 통해 구속 코드워드를 수신하고 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ;
    상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 최대 공산(ML) 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는, 시스템.
  24. 제24항에 있어서,
    인코더를 더 포함하고,
    상기 인코더는,
    특수 패턴들 중 어느 특수 패턴이 입력에서 발생하였는지를 나타내는 비트들을 삽입함으로써 상기 첨부된 비트 스트림을 생성하고;
    상기 특수 패턴이 다른 패턴에 맵핑될 때 상기 첨부된 비트 스트림에 1 비트를 첨부하고;
    상기 특수 패턴이 변경되지 않은 채로 있을 때 상기 첨부된 비트 스트림에 0 비트를 첨부하는, 시스템.
  25. 제25항에 있어서,
    상기 인코더는,
    트렐리스를 종료하기 위해, 상기 첨부된 비트 스트림의 끝에서, 미리 결정된 비트 패턴을 첨부하도록 동작 가능한, 시스템.
  26. 제24항에 있어서,
    상기 디코더는,
    에러들 및 삽입들 또는 삭제들을 포함하는 잡음 있는 첨부된 비트 스트림과 상기 재구성된 첨부된 비트 스트림을 비교하도록 동작 가능하고, 상기 비교는 상기 잡음 있는 첨부된 비트 스트림과 상기 재구성된 첨부된 비트 스트림 사이의 임의의 불일치를 결정하기 위한 것이고,
    상기 동기화 절차는 불일치가 결정될 때 호출되는, 시스템.
  27. 제24항에 있어서,
    상기 디코더는,
    상기 재구성된 첨부된 비트 스트림 내의 가장 공산이 큰 삽입 또는 삭제의 위치 및 패턴을 결정하기 위해 트렐리스를 생성하고 - 상기 트렐리스는 연관된 삭제 및 삽입 확률을 갖는 상태들을 가짐 - ;
    상기 재구성된 첨부된 비트 스트림에서, 상기 트렐리스에 의해 결정된 상기 가장 공산이 큰 삽입 또는 삭제를 갖는 가장 공산이 큰 위치에서 패턴을 맵핑함으로써 상기 동기화 절차를 수행하도록 동작 가능한, 시스템.
  28. 제24항에 있어서,
    상기 NVM은 NAND 플래시 메모리인, 시스템.
  29. 실행될 때 프로세서로 하여금 방법을 수행하게 하는 머신 실행 가능한 명령어들을 포함하는 머신 저장 매체를 갖는 제조 물품으로서,
    상기 방법은,
    비휘발성 메모리(NVM)로부터 채널을 통해 구속 코드워드를 수신하는 단계 - 상기 구속 코드워드는 첨부된 비트 스트림을 포함함 - ; 및
    상기 첨부된 비트 스트림을 재구성하고 상기 재구성된 첨부된 비트 스트림에서의 임의의 삽입, 삭제, 또는 에러의 위치들을 추정하기 위해 최대 공산(ML) 추정기를 적용하는 동기화 절차를 호출함으로써 상기 수신된 구속 코드워드를 디코딩하는 단계
    를 포함하는, 제조 물품.
KR1020147008374A 2011-09-28 2011-09-28 동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더 KR101612202B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/053663 WO2013048385A1 (en) 2011-09-28 2011-09-28 Maximum-likelihood decoder in a memory controller for synchronization

Publications (2)

Publication Number Publication Date
KR20140053395A true KR20140053395A (ko) 2014-05-07
KR101612202B1 KR101612202B1 (ko) 2016-04-12

Family

ID=47996132

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008374A KR101612202B1 (ko) 2011-09-28 2011-09-28 동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더

Country Status (3)

Country Link
US (1) US9294224B2 (ko)
KR (1) KR101612202B1 (ko)
WO (1) WO2013048385A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014219672A1 (de) 2014-05-02 2015-11-05 Hyundai Motor Company Standardmaschinenkalttestsystem und -verfahren

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102247087B1 (ko) * 2014-07-08 2021-05-03 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5432803A (en) * 1992-04-30 1995-07-11 Novatel Communications, Ltd. Maximum likelihood convolutional decoder
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6606728B1 (en) * 1999-06-23 2003-08-12 Agere Systems Inc. Rate (M/N) code encoder, detector, and decoder for control data
US6950976B1 (en) 2002-01-25 2005-09-27 Palmone, Inc. Maximum likelihood decoding for input streams containing known data
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
KR100950654B1 (ko) 2006-03-03 2010-04-01 삼성전자주식회사 다중 입력 다중 출력 방식을 사용하는 통신 시스템에서신호 송수신 장치 및 방법
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US8225186B2 (en) * 2006-07-14 2012-07-17 Qualcomm Incorporated Ecoding and decoding methods and apparatus for use in a wireless communication system
US7493439B2 (en) 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US7457155B2 (en) 2006-08-31 2008-11-25 Micron Technology, Inc. Non-volatile memory device and method having bit-state assignments selected to minimize signal coupling
US7734861B2 (en) * 2006-09-08 2010-06-08 Sandisk Corporation Pseudo random and command driven bit compensation for the cycling effects in flash memory
GB2445005B (en) * 2006-12-19 2012-01-18 Martin Tomlinson Concatenated coding system
US7984360B2 (en) 2006-12-31 2011-07-19 Ramot At Tel Aviv University Ltd. Avoiding errors in a flash memory by using substitution transformations
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8331857B2 (en) 2009-05-13 2012-12-11 Micron Technology, Inc. Wireless interface to program phase-change memories
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8914568B2 (en) 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
KR101625641B1 (ko) * 2010-04-08 2016-05-30 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법 및 이를 포함하는 장치들
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
TW201225088A (en) * 2010-07-21 2012-06-16 Mosaid Technologies Inc Multipage program scheme for flash memory
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US8549382B2 (en) 2010-12-17 2013-10-01 Intel Corporation Storage drive with LDPC coding
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8649215B2 (en) * 2010-12-22 2014-02-11 HGST Netherlands B.V. Data management in flash memory using probability of charge disturbances
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US8605531B2 (en) 2011-06-20 2013-12-10 Intel Corporation Fast verify for phase change memory with switch
US8463948B1 (en) 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
US8549380B2 (en) 2011-07-01 2013-10-01 Intel Corporation Non-volatile memory error mitigation
US8667360B2 (en) 2011-07-01 2014-03-04 Intel Corporation Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length
WO2013048470A1 (en) 2011-09-30 2013-04-04 Intel Corporation Statistical wear leveling for non-volatile system memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014219672A1 (de) 2014-05-02 2015-11-05 Hyundai Motor Company Standardmaschinenkalttestsystem und -verfahren

Also Published As

Publication number Publication date
WO2013048385A1 (en) 2013-04-04
US20130259170A1 (en) 2013-10-03
US9294224B2 (en) 2016-03-22
KR101612202B1 (ko) 2016-04-12

Similar Documents

Publication Publication Date Title
US10437668B2 (en) Memory controller, memory system, and method for controlling memory system
US10353622B2 (en) Internal copy-back with read-verify
KR101306645B1 (ko) 시행착오에 의한 에러 보정 디코딩
US8667360B2 (en) Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length
US8756365B2 (en) Apparatus and method for enhancing flash endurance by encoding data
US8799559B2 (en) Endurance enhancement coding of compressible data in flash memories
WO2021000531A1 (zh) 一种基于llr的分段翻转极化码译码方法和智能终端
US9582359B2 (en) Write mapping to mitigate hard errors via soft-decision decoding
KR101576721B1 (ko) 비휘발성 메모리의 에러 경감
US20130275829A1 (en) Using a soft decoder with hard data
WO2008075351A2 (en) Soft decoding of hard and soft bits read from a flash memory
US9032278B2 (en) Method for performing data shaping, and associated memory device and controller thereof
CN104283570A (zh) 低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼
US8832525B2 (en) Memory controller with low density parity check code decoding capability and relevant memory controlling method
KR101612202B1 (ko) 동기화를 위한 메모리 컨트롤러 내의 최대 공산 디코더
KR20160150036A (ko) 부분 페이지 압축을 위한 메모리 시스템
Motwani Hierarchical constrained coding for floating-gate to floating-gate coupling mitigation in flash memory
CA2918136A1 (en) High sum-rate write-once memory
KR101496052B1 (ko) 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로
CN113496753A (zh) 利用历史解码信息对纠错码进行解码的系统和方法
US9985647B2 (en) Encoder and decoder design for near-balanced codes
KR102515337B1 (ko) 오류 정정 부호 삽입 방법 및 장치
US11876535B1 (en) Memory controller and method for controlling data in decoding pipeline
US11496241B2 (en) Method and apparatus for data transmission mitigating interwire crosstalk

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 4