KR20220061833A - 공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩 - Google Patents

공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩 Download PDF

Info

Publication number
KR20220061833A
KR20220061833A KR1020210081792A KR20210081792A KR20220061833A KR 20220061833 A KR20220061833 A KR 20220061833A KR 1020210081792 A KR1020210081792 A KR 1020210081792A KR 20210081792 A KR20210081792 A KR 20210081792A KR 20220061833 A KR20220061833 A KR 20220061833A
Authority
KR
South Korea
Prior art keywords
decoder
codeword
data statistics
data
statistics
Prior art date
Application number
KR1020210081792A
Other languages
English (en)
Other versions
KR102479236B1 (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 KR20220061833A publication Critical patent/KR20220061833A/ko
Application granted granted Critical
Publication of KR102479236B1 publication Critical patent/KR102479236B1/ko

Links

Images

Classifications

    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms

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)
  • Error Detection And Correction (AREA)
  • Memory System (AREA)

Abstract

콘텐츠 인식 디코딩을 위한 방법 및 장치는 데이터 통계치들을 공유하는 디코더들의 풀을 활용한다. 각각의 디코더는 그가 디코딩하는 콘텐츠의 통계적 데이터를 생성하고, 이들 통계치들을 공동 통계치 풀에 제공한다. 코드워드들이 디코더 풀에 도착함에 따라, 공동 통계치들을 활용하여, 임의의 손상된 또는 누락된 비트 값들을 추정하거나 예측한다. 코드워드들은, 신드롬 가중치 또는 비트 에러율에 기초하여, 계층 1 디코더, 계층 2 디코더, 또는 계층 3 디코더와 같은 특정 디코더에 할당될 수 있다. 할당된 디코더는 코드워드를 프로세싱한 후에 공동 통계치 풀을 업데이트한다. 일부 실시예들에서, 각각의 디코더는 추가적으로 코드워드들에 관한 로컬 통계치들을 유지하고, 로컬 통계치들과 공동 통계치 풀 사이에 통계적으로 상당한 부정합이 있을 때 로컬 통계치들을 사용할 수 있다.

Description

공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩{CONTENT AWARE DECODING USING SHARED DATA STATISTICS}
관련 출원의 상호 참조
본 출원은 2020년 11월 6일자로 출원된 미국 가특허 출원 제63/110,738호의 이익을 주장하며, 이 출원은 본 명세서에 참고로 포함된다.
기술분야
본 발명의 실시예들은 대체적으로 데이터 에러 검출 및 정정에 관한 것이며, 특히, 콘텐츠 인식 에러 검출 및 정정을 위한 데이터 통계치들의 사용에 관한 것이다.
데이터 저장 제품 요건들이 증가함에 따라, 호스트로 송신하기 위한 저장된 데이터의 단일 디코더의 성능 한계에 도달했다. 이에 응답하여, 많은 데이터 저장 제품들은 디코더들의 풀(pool)들을 채용했다. 함께 디코딩된 데이터의 블록들이 전형적으로 유사한 데이터 특성들을 갖기 때문에, 서비스 품질(quality of service, QoS)을 개선시키기 위해, 개별 디코더는 콘텐츠 특성들에 관한 통계적 정보를 유지할 수 있다. 통계적 정보를 유지함으로써, 디코더는 데이터 통계치들에 기초하여 자신의 디코딩 전략을 예측적으로 구성함으로써 더 효율적으로 디코딩하도록 구성될 수 있다.
그러나, 데이터 통계치들이 개별 디코더에 의해 디코딩된 데이터에 기초하기 때문에, 그들의 예측 능력이 제한되어, 예를 들어, QoS를 열화시킬 수 있는 "헤드 오브 라인 블록킹(head of line blocking)" 시나리오들을 초래하는 누락된 예측들을 생성할 수 있다.
이들 및 다른 결함들을 극복하는 시스템들 및 방법들이 필요하다.
본 발명은 대체적으로 공유 데이터 통계치들을 사용하는 콘텐츠 인식 디코딩에 관한 것이다. 각각의 디코더는 그가 디코딩하는 콘텐츠의 통계적 데이터를 생성하고, 이들 통계치들을 공동 통계치 풀(joint statistics pool)에 제공한다. 코드워드들이 디코더 풀에 도착함에 따라, 공동 통계치들을 활용하여, 임의의 손상된 또는 누락된 비트 값들을 추정하거나 예측한다. 코드워드들은, 신드롬 가중치(syndrome weight) 또는 비트 에러율(bit error rate, BER)에 기초하여, 계층(tier) 1 디코더, 계층 2 디코더, 또는 계층 3 디코더와 같은 특정 디코더에 할당될 수 있다. 할당된 디코더는 코드워드를 프로세싱한 후에 공동 통계치 풀을 업데이트한다. 일부 실시예들에서, 각각의 디코더는 추가적으로 코드워드들에 관한 로컬 통계치들을 유지하고, 로컬 통계치들과 공동 통계치 풀 사이에 통계적으로 상당한 부정합이 있을 때 로컬 통계치들을 사용할 수 있다.
일 실시예에서, 비휘발성 메모리(non-volatile memory, NVM), 및 제1 코드워드를 수신하도록 구성된 제1 디코더 - 제1 디코더는 제1 코드워드에 대한 제1 데이터 통계치들을 생성하도록 구성됨 - 및 제2 코드워드를 수신하도록 구성된 제2 디코더 - 제2 디코더는 제2 코드워드에 대한 제2 데이터 통계치들을 생성하도록 구성됨 - 의 복수의 디코더들을 포함하는 NVM에 결합된 제어기를 포함하는 데이터 저장 디바이스가 개시된다. 데이터 저장 디바이스는 제1 및 제2 데이터 통계치들을 수신하도록 구성된 공동 데이터 통계치 모듈을 추가로 포함한다.
다른 실시예에서, 데이터 저장 디바이스를 위한 제어기가 개시된다. 제어기는 하나 이상의 NVM들에 대한 I/O, 및 콘텐츠 인식 디코딩을 위한 방법을 수행하도록 구성된 프로세서를 포함한다. 방법은, 제1 디코더에서 하나 이상의 NVM들로부터의 코드워드를 수신하는 단계, 코드워드에 대한 데이터 통계치들을 생성하는 단계, 및 데이터 통계치들을 공동 통계치 모듈에 제공하는 단계를 포함하며, 공동 통계치 모듈은 제1 디코더를 포함하는 복수의 디코더들에 결합된다.
다른 실시예에서, NVM 수단, 및 콘텐츠 인식 디코딩을 위한 방법을 실행하기 위한 제어기 수단을 포함하는, 데이터를 저장하기 위한 시스템이 개시된다. 방법은, 복수의 디코더 수단의 제1 디코더 수단에서 NVM 수단으로부터 제1 코드워드를 수신하는 단계, 제1 디코더 수단에서 제1 코드워드를 디코딩하는 단계, 및 제1 코드워드를 디코딩한 것에 기초하여 제1 데이터 통계치를 생성하는 단계를 포함한다. 방법은, 복수의 디코더 수단 각각에 결합된 공동 데이터 통계치 모듈을 제1 데이터 통계치를 이용하여 업데이트하는 단계, NVM 수단으로부터 제2 코드워드를 수신하는 단계, 및 공동 데이터 통계치 모듈에 기초하여, 복수의 디코더 수단의 제2 디코더 수단에 제2 코드워드를 할당하는 단계를 추가로 포함한다.
상기에 언급된 본 발명의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 발명의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 발명의 전형적인 실시예들을 도시하는 것이므로 본 발명의 범주를 제한하는 것으로 간주되지 않아야 한다는 것에 유의해야 하는데, 이는 본 발명이 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 소정 실시예들에 따른, 데이터 저장 디바이스가 호스트 디바이스를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템을 예시하는 개략적인 블록도이다.
도 2는 소정 실시예들에 따른, 디코더 풀 아키텍처를 예시하는 개략적인 블록도이다.
도 3a는 4 비트 워드들의 세트의 일례이다. 도 3b는 소정 실시예들에 따른, 4 비트 워드 배열 빈도를 예시하는 히스토그램이다.
도 4는 소정 실시예들에 따른, 반복적 콘텐츠 인식 디코더(Iterative Content Aware Decoder, ICAD) 로직(logic)의 개략도이다.
도 5는 소정 실시예들에 따른, 디코더 풀 내의 ICAD의 구현예를 예시하는 개략적인 블록도이다.
도 6은 소정 실시예들에 따른, 디코더 풀 내의 ICAD를 공유하는 선택적인 데이터의 구현예를 예시하는 개략적인 블록도이다.
도 7은 소정 실시예들에 따른, 디코더 풀 내의 ICAD의 구현예를 예시하는 흐름도이다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 발명의 실시예들을 참조한다. 그러나, 본 발명은 구체적으로 설명된 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 발명을 구현하고 실시하기 위해 고려된다. 게다가, 본 발명의 실시예가 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 발명의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 발명"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 안되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 발명은 대체적으로 공유 데이터 통계치들을 사용하는 콘텐츠 인식 디코딩에 관한 것이다. 각각의 디코더는 그가 디코딩하는 콘텐츠의 통계적 데이터를 생성하고, 이들 통계치들을 공동 통계치 풀에 제공한다. 코드워드들이 디코더 풀에 도착함에 따라, 공동 통계치들을 활용하여, 임의의 손상된 또는 누락된 비트 값들을 추정하거나 예측한다. 코드워드들은, 신드롬 가중치 또는 비트 에러율에 기초하여, 계층 1 디코더, 계층 2 디코더, 또는 계층 3 디코더와 같은 특정 디코더에 할당될 수 있다. 할당된 디코더는 코드워드를 프로세싱한 후에 공동 통계치 풀을 업데이트한다. 일부 실시예들에서, 각각의 디코더는 추가적으로 코드워드들에 관한 로컬 통계치들을 유지하고, 로컬 통계치들과 공동 통계치 풀 사이에 통계적으로 상당한 부정합이 있을 때 로컬 통계치들을 사용할 수 있다.
도 1은 소정 실시예들에 따른, 데이터 저장 디바이스(106)가 호스트 디바이스(104)를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템(100)을 예시하는 개략적인 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터 저장 디바이스(106)에 포함된 비휘발성 메모리(NVM)(110)를 활용하여 데이터를 저장 및 검색할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함한다. 일부 실시예들에서, 저장 시스템(100)은 저장 어레이로서 동작할 수 있는, 데이터 저장 디바이스(106)와 같은, 복수의 저장 디바이스들을 포함할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)를 위한 대용량 저장 디바이스로서 집합적으로 기능하는 RAID(redundant array of inexpensive/independent disks)로서 구성된 복수의 데이터 저장 디바이스들(106)을 포함할 수 있다.
호스트 디바이스(104)는 데이터 저장 디바이스(106)와 같은 하나 이상의 저장 디바이스들에 그리고/또는 그로부터 데이터를 저장 및/또는 검색할 수 있다. 도 1에 예시된 바와 같이, 호스트 디바이스(104)는 인터페이스(114)를 통해 데이터 저장 디바이스(106)와 통신할 수 있다. 호스트 디바이스(104)는 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 전화 핸드셋, 예컨대 소위 "스마트" 폰, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스, 또는 데이터 저장 디바이스로부터의 데이터를 전송 또는 수신할 수 있는 다른 디바이스들을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수 있다.
데이터 저장 디바이스(106)는 제어기(108), NVM(110), 전력 공급부(111), 휘발성 메모리(112), 인터페이스(114), 및 기록 버퍼(116)를 포함한다. 일부 실시예들에서, 데이터 저장 디바이스(106)는 명료함을 위해 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다. 예를 들어, 데이터 저장 디바이스(106)는, 데이터 저장 디바이스(106)의 컴포넌트들이 그에 기계적으로 부착되고, 데이터 저장 디바이스(106)의 컴포넌트들 등을 전기적으로 상호접속하는 전기 전도성 트레이스(trace)들을 포함하는 인쇄 회로 기판(printed circuit board, PCB)을 포함할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)의 물리적 치수들 및 커넥터(connector) 구성들은 하나 이상의 표준 폼 팩터를 따를 수 있다. 일부 예시적인 표준 폼 팩터들은 3.5" 데이터 저장 디바이스(예컨대, HDD 또는 SSD), 2.5" 데이터 저장 디바이스, 1.8" 데이터 저장 디바이스, PCI(peripheral component interconnect), PCI-X(PCI-extended), PCIe(PCI Express)(예컨대, PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI 등)를 포함하지만, 이로 제한되지 않는다. 일부 예들에서, 데이터 저장 디바이스(106)는 호스트 디바이스(104)의 마더보드에 직접 결합(예컨대, 직접 솔더링)될 수 있다.
데이터 저장 디바이스(106)의 인터페이스(114)는 호스트 디바이스(104)와 데이터를 교환하기 위한 데이터 버스 및 호스트 디바이스(104)와 커맨드들을 교환하기 위한 제어 버스 중 하나 또는 둘 모두를 포함할 수 있다. 인터페이스(114)는 임의의 적합한 프로토콜에 따라 동작할 수 있다. 예를 들어, 인터페이스(114)는 다음의 프로토콜들 중 하나 이상에 따라 동작할 수 있다: ATA(advanced technology attachment)(예컨대, SATA(serial-ATA) 및 PATA(parallel-ATA)), FCP(Fibre Channel Protocol), SCSI(small computer system interface), SAS(serially attached SCSI), PCI, 및 PCIe, NVMe(non-volatile memory express), OpenCAPI, GenZ, CCIX(Cache Coherent Interface Accelerator), OCSSD(Open Channel SSD) 등. 인터페이스(114)의 전기 접속(예컨대, 데이터 버스, 제어 버스, 또는 둘 모두)은 제어기(108)에 전기적으로 접속되어, 호스트 디바이스(104)와 제어기(108) 사이의 전기 접속을 제공하여서, 데이터가 호스트 디바이스(104)와 제어기(108) 사이에서 교환될 수 있게 한다. 일부 실시예들에서, 인터페이스(114)의 전기 접속은 또한 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 전력을 수신할 수 있게 할 수 있다. 예를 들어, 도 1에 예시된 바와 같이, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 전력을 수신할 수 있다.
NVM(110)은 복수의 메모리 디바이스 또는 메모리 유닛을 포함할 수 있다. NVM(110)은 데이터를 저장 및/또는 검색하도록 구성될 수 있다. 예를 들어, NVM(110)의 메모리 유닛은 데이터, 및 데이터를 저장하라고 메모리 유닛에게 지시하는 제어기(108)로부터의 메시지를 수신할 수 있다. 유사하게, NVM(110)의 메모리 유닛은 데이터를 검색하라고 메모리 유닛에게 지시하는 제어기(108)로부터의 메시지를 수신할 수 있다. 일부 예들에서, 메모리 유닛들 각각은 다이(die)로 지칭될 수 있다. 일부 실시예들에서, 단일 물리적 칩이 복수의 다이들(즉, 복수의 메모리 유닛들)을 포함할 수 있다. 일부 실시예들에서, 각각의 메모리 유닛은 비교적 많은 양의 데이터(예를 들어, 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB 등)를 저장하도록 구성될 수 있다.
일부 실시예들에서, NVM(110)의 각각의 메모리 유닛은 플래시 메모리 디바이스들, PCM(phase-change memory) 디바이스들, ReRAM(resistive random-access memory) 디바이스들, MRAM(magnetoresistive random-access memory) 디바이스들, F-RAM(ferroelectric random-access memory), 홀로그래픽 메모리 디바이스들, 및 임의의 다른 유형의 NVM 디바이스들과 같은 임의의 유형의 NVM 디바이스들을 포함할 수 있다.
NVM(110)은 복수의 플래시 메모리 디바이스 또는 메모리 유닛을 포함할 수 있다. NVM 플래시 메모리 디바이스들은 NAND 또는 NOR 기반 플래시 메모리 디바이스들을 포함할 수 있고, 각각의 플래시 메모리 셀에 대한 트랜지스터의 플로팅 게이트에 포함된 전하에 기초하여 데이터를 저장할 수 있다. NVM 플래시 메모리 디바이스들에서, 플래시 메모리 디바이스는 복수의 다이들로 분할될 수 있으며, 여기서 복수의 다이들 중의 각각의 다이는 복수의 블록들을 포함하고, 복수의 블록들은 복수의 페이지들로 추가로 분할될 수 있다. 특정 메모리 디바이스 내의 복수의 블록들 중의 각각의 블록은 복수의 NVM 셀들을 포함할 수 있다. NVM 셀들의 행(row)들은 워드 라인을 이용하여 전기적으로 접속되어 복수의 페이지들 중 소정 페이지를 정의할 수 있다. 복수의 페이지들 각각 내의 각자의 셀들은 각자의 비트 라인들에 전기적으로 접속될 수 있다. 또한, NVM 플래시 메모리 디바이스들은 2D 또는 3D 디바이스들일 수 있고, 싱글 레벨 셀(single level cell, SLC), 멀티-레벨 셀(multi-level cell, MLC), 트리플 레벨 셀(triple level cell, TLC), 또는 쿼드 레벨 셀(quad level cell, QLC)일 수 있다. 제어기(108)는 페이지 레벨에서 NVM 플래시 메모리 디바이스들에 데이터를 기록하고 그로부터 데이터를 판독하고, 블록 레벨에서 NVM 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
데이터 저장 디바이스(106)는 데이터 저장 디바이스(106)의 하나 이상의 컴포넌트에 전력을 제공할 수 있는 전력 공급부(111)를 포함한다. 표준 모드에서 동작할 때, 전력 공급부(111)는 호스트 디바이스(104)와 같은 외부 디바이스에 의해 제공되는 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 예를 들어, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 수신된 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 일부 실시예들에서, 전력 공급부(111)는 셧다운 모드에서 동작할 때, 예컨대 외부 디바이스로부터의 전력 수신이 중단되는 경우 하나 이상의 컴포넌트에 전력을 제공하도록 구성된 하나 이상의 전력 저장 컴포넌트를 포함할 수 있다. 이러한 방식으로, 전력 공급부(111)는 온보드 백업(onboard backup) 전원으로서 기능할 수 있다. 하나 이상의 전력 저장 컴포넌트의 일부 예들은 커패시터(capacitor)들, 수퍼 커패시터들, 배터리들 등을 포함하지만, 이들로 제한되지 않는다. 일부 실시예들에서, 하나 이상의 전력 저장 컴포넌트에 의해 저장될 수 있는 전력의 양은 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기(예를 들어, 면적/체적)의 함수일 수 있다. 다시 말해서, 하나 이상의 전력 저장 컴포넌트에 의해 저장되는 전력의 양이 증가함에 따라, 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기가 또한 증가한다.
데이터 저장 디바이스(106)는 또한 휘발성 메모리(112)를 포함하며, 이는 제어기(108)에 의해 정보를 저장하는 데 사용될 수 있다. 휘발성 메모리(112)는 하나 이상의 휘발성 메모리 디바이스들을 포함할 수 있다. 일부 실시예들에서, 제어기(108)는 휘발성 메모리(112)를 캐시로서 사용할 수 있다. 예를 들어, 제어기(108)는 캐싱된 정보가 NVM(110)에 기록될 때까지 캐싱된 정보를 휘발성 메모리(112)에 저장할 수 있다. 도 1에 예시된 바와 같이, 휘발성 메모리(112)는 전력 공급부(111)로부터 수신된 전력을 소비할 수 있다. 휘발성 메모리(112)의 예들은 RAM(random-access memory), DRAM(dynamic random access memory), SRAM(static RAM), 및 SDRAM(synchronous dynamic RAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 등)을 포함하지만, 이로 제한되지 않는다.
데이터 저장 디바이스(106)는 제어기(108)를 포함하며, 이는 데이터 저장 디바이스(106)의 하나 이상의 동작을 관리할 수 있다. 예를 들어, 제어기(108)는 NVM(110)으로부터의 데이터의 판독 및/또는 그에의 데이터의 기록을 관리할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 커맨드를 수신할 때, 제어기(108)는 NVM(110)에 데이터를 저장하는 데이터 저장 커맨드를 개시하고 데이터 저장 커맨드의 진행을 모니터링할 수 있다. 제어기(108)는 저장 시스템(100)의 적어도 하나의 동작 특성을 결정하고 적어도 하나의 동작 특성을 NVM(110)에 저장할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기록 커맨드를 수신할 때, 제어기(108)는 NVM(110)으로 데이터를 전송하기 전에 기록 커맨드와 연관된 데이터를 내부 메모리 또는 기록 버퍼(116)에 임시로 저장한다.
제어기(108)는 디코더 풀(150)을 포함한다. 디코더 풀(150)은 제어기(108)의 LDPC(low-density parity-check) 엔진의 일부일 수 있다. 디코더 풀(150)은 하나 이상의 디코더들을 포함할 수 있으며, 여기서 하나 이상의 디코더들 각각은 하나 이상의 기어(gear)들을 갖는다. 하나 이상의 기어들 각각은 계층 1, 계층 2, 또는 계층 3 디코더 중 어느 하나일 수 있다. 상이한 계층들의 디코더들의 예는 제한하도록 의도되지 않으며, 가능한 실시예의 예를 제공한다. 예를 들어, 용어 "계층"의 사용은 상이한 경우들에 대해 전문화된 상이한 디코더들에 대한 플레이스홀더(placeholder)로서 활용될 수 있다. 추가로, 예시된 것보다 많거나 적은 디코더의 계층들이 고려된다.
계층 2 디코더는 낮은 비트 에러율(bit error rate, BER) 코드워드들에 대한 것과 같은 덜 집약적인 디코딩 태스크들에 활용될 수 있고, 계층 3 디코더는 더 높은 BER 코드워드들에 대한 것과 같은 더 집약적인 디코딩 태스크들에 활용될 수 있다. 다른 실시예들에서, 선택된 디코더는 수신된 코드워드가 계층 1 디코더, 계층 2 디코더, 또는 계층 3 디코더의 일부 소정의 신드롬 가중치 임계치를 초과하는지 여부에 기초할 수 있다. 활용되는 디코더는 디코딩 동작뿐만 아니라, 데이터 저장 디바이스의 다른 컴포넌트들에 의한 현재 전력 소비와 같은 활용되는 현재 자원들에 의존할 수 있다. 다양한 디코더들은 정정 능력에 대한 전력과 레이턴시(latency) 사이의 트레이드오프(tradeoff)를 사용하여, 트레이드오프가 기어 시프팅 방식이도록 할 수 있다. 예를 들어, 계층 1 디코더는 비트 플립핑(bit flipping) 디코더일 수 있고, 한편 계층 2 디코더 및 계층 3 디코더는 메시지 전달 디코더들일 수 있다. 이와 관련하여, 계층 2 디코더는 더 빠른 메시지 전달 디코더이고, 한편 계층 3 디코더는 더 강한 메시지 전달 디코더일 것이다.
도 2는 개시된 실시예들에 따른, 디코더 풀 아키텍처(200)를 예시하는 개략적인 블록도이다. 디코더 풀 아키텍처(200)는 도 1의 디코더 풀(150)일 수 있다. 종래의 접근법들에서, 디코더 풀에 제공되는 코드워드는 먼저 하위 디코더(예컨대, 계층 1 디코더)에 제공될 수 있지만, 하위 디코더가 실패하는 경우, 코드워드는 상위 디코더(예컨대, 계층 2 디코더 및/또는 계층 3 디코더)에 전송될 수 있다. 단일의 계층 1 + 계층 2 + 계층 3 엔진을 사용하기보다는, 기어들은 독립적인 디코더들의 풀들로 분할된다. 예를 들어, 코드워드가 계층 3 디코더에서 긴 디코드 레이턴시를 취하는 경우, 계층 1 디코더 및 계층 2 디코더는 계층 3 디코더보다 더 짧은 디코드 레이턴시를 가질 수 있는 다른 코드워드들을 여전히 디코딩할 수 있다. 디코더 풀 아키텍처는 복수의 계층 1 디코더들(204a 내지 204n), 복수의 계층 2 디코더들(206a 내지 206n), 및 복수의 계층 3 디코더들(208a 내지 208n)을 포함한다. 일부 실시예들에서, 계층 1 디코더들의 수는 계층 2 디코더들의 수보다 많고, 계층 2 디코더들의 수는 계층 3 디코더들의 수보다 많다.
또한, 제어기(108)와 같은 제어기는 복수의 디코더들(204a 내지 204n, 206a 내지 206n, 208a 내지 208n) 중 어느 디코더가 수신된 코드워드를 디코딩할 것인지를 결정하도록 구성될 수 있다. 수신된 코드워드는 도 1의 휘발성 메모리(112)와 같은 휘발성 메모리로부터, 또는 도 1의 NVM(110)과 같은 NVM으로부터의 것일 수 있다. 예를 들어, 제어기가, 수신된 코드워드가 높은 BER을 포함한다고 결정하는 경우, 수신된 코드워드는 복수의 계층 1 디코더들(204a 내지 204n) 중 하나 또는 복수의 계층 2 디코더들(206a 내지 206n) 중 하나보다는, 복수의 계층 3 디코더들(208a 내지 208n) 중 하나에 의해 디코딩될 수 있다. 코드워드가 하위 디코더에 전송되지만 적절히 디코딩하는 데 실패하는 경우, 계층 1 디코더는 공동 통계치 풀을 업데이트하고(후술됨), 일부 실시예들에서, 코드워드를 상위 디코더에 전달하기 전에 그 자신의 데이터 통계치들을 또한 업데이트할 수 있다(후술됨).
디코더 풀(202)의 복수의 디코더들(204a 내지 204n, 206a 내지 206n, 208a 내지 208n)의 각각의 디코더에 반복적 콘텐츠 인식 디코더(ICAD)가 내장(embed)될 수 있다. ICAD는, 더 양호한 호스트 데이터 통계치들이 저장될 때 디코더가 더 양호하게 작동하도록, 호스트 데이터 통계치들이 디코더 계산 로직 내에 내장되는 것을 허용한다. 호스트 데이터 통계치들이 이용가능하지 않을 때, 데이터 통계치들은 관련 코드워드에 대해 추정된다. 추가로, ICAD는, ICAD가 코드워드를 디코딩하는 것과 호스트 데이터 통계치들을 재추정하는 것 사이에서 반복하도록 반복적인 방식으로 작동한다.
호스트 최소 데이터 크기가 플래시 메모리 유닛(flash memory unit, FMU) 크기보다 클 수 있기 때문에, 데이터는 도 1의 NVM(110)과 같은 NVM의 다수의 순차적인 FMU들에 걸쳐 저장될 수 있다. 데이터가 순차적으로 판독되기 때문에, 코드워드들은 유사한 호스트 데이터를 보유할 수 있고 유사한 데이터 통계치들을 가질 수 있다. ICAD는 데이터 통계치들을 추출하고, 추출된 데이터 통계치들을 디코더 풀(202)의 복수의 디코더들(204a 내지 204n, 206a 내지 206n, 208a 내지 208n)의 디코더들 사이에서 공유할 수 있다. 추가로, 데이터 통계치들은 또한, 디코더 풀(202)의 복수의 디코더들(204a 내지 204n, 206a 내지 206n, 208a 내지 208n)의 디코더들 사이에서 공동으로 추정되고 공유될 수 있다. 데이터 통계치들을 공동으로 추정하고 공동 추정된 통계치들을 디코더 풀(202)의 복수의 디코더들(204a 내지 204n, 206a 내지 206n, 208a 내지 208n)의 각각의 디코더에 걸쳐 공유함으로써, 디코더 레이턴시, 정정 능력, 및 시스템 성능이 개선될 수 있다. 전술된 예는 제한하도록 의도된 것이 아님을 이해해야 한다.
도 3a는 4 비트 워드들의 세트(300)의 일례이다. 도 3b는 도 3a의 세트(300)의 4 비트 워드 배열 빈도를 예시하는 히스토그램(350)이다. 각각의 4 비트 조합은 십진값의 이진 표현인 비트 워드에 대응한다. 예를 들어, 4 비트 조합은 "abcd"의 형태일 수 있으며, 여기서 "a", "b", "c", 및 "d" 각각은 0 또는 1 중 어느 하나에 대응한다. 4 비트 조합은 하기의 방정식에 의해 이진법으로부터 십진법으로 변환될 수 있으며: (abcd)2 = (a × 23) + (b × 22) + (c × 21) + (d × 20) = (x)10, 여기서, "x"는 이진법 4 비트 조합의 십진값이다. 4 비트 워드들 각각은 0 내지 15의 값에 대응한다. 예를 들어, 0000은 0과 동일하고, 0110은 6과 동일하고, 1111은 15와 동일하다.
히스토그램(350)은 세트(300)의 4 비트 워드의 각각의 값의 빈도의 그래픽 표현이다. 예를 들어, 세트(300) 내에서 0000 또는 0이 4회 발생하고 1111 또는 15가 10회 발생한다. 히스토그램(350)은 세트(300)의 각각의 새로운 4 비트 워드에 대해 동적으로 업데이트될 수 있다. 예를 들어, 값 15는 최고 빈도를 가지며, 값 5는 최저 빈도를 갖는다. 디코더 또는 공동 데이터 통계치 모듈이 4 비트 워드를 수신 - 여기서, 비트들 중 하나 이상이 손상됨 - 할 때, 디코더 또는 공동 데이터 통계치 모듈은 히스토그램(350)을 활용하여 하나 이상의 비트 값이 무엇일 수 있는지를 결정할 수 있다. 예를 들어, 4 비트 워드 x110이 디코더 또는 공동 데이터 통계치 모듈에 의해 수신되며, 여기서 "x"는 알려지지 않은 비트를 지칭한다. 4 비트 워드는 6이거나(여기서, 4 비트 워드는 0110임) 또는 14일 수 있다(여기서 4 비트 워드는 1110임). 히스토그램(350)을 분석할 때, 6의 값은 14의 값보다 더 높은 발생 확률을 가지므로, 디코더 또는 공동 데이터 통계치 모듈은 알려지지 않은 비트가 "0"이라고 추정할 수 있다. 그러나, 히스토그램(350) 통계치들이 없으면, 알려지지 않은 비트가 무엇일 수 있는지에 대한 최상의 추측 추정치는 50% "0" 및 50% "1"일 것이다.
도 4는 개시된 실시예들에 따른, ICAD 로직(400)의 개략도이다. ICAD 로직(400)은 하나 이상의 심볼 노드들(402, 404), 복수의 비트 노드들(406a 내지 406p), 및 복수의 체크 노드들(408a 내지 408h)을 포함한다. 복수의 비트 노드들(406a 내지 406p)은 복수의 비트 노드들(406)로 총칭될 수 있고, 복수의 체크 노드들(408a 내지 408h)은 복수의 체크 노드들(408)로 총칭될 수 있다. 묘사된 실시예에서 하나 이상의 심볼 노드들(402, 404) 각각은 약 8개의 비트 노드들과 연관될 수 있어서, 제1 심볼 노드(402)가 비트 노드들(406a 내지 406h)과 연관되고 제2 심볼 노드(404)가 비트 노드들(406i 내지 406p)과 연관되게 한다.
일 실시예에서, 데이터 내의 비트들은 종속적이다. 예를 들어, 텍스트 파일 내에서, 비트들은 바이트들로 조직화되고, 여기서 각각의 바이트는 문자를 표현한다. 텍스트 파일의 예에서, 가장 많이 사용되는 문자들은 영숫자, 스페이스(space)들 및 구두점들이고, 한편 나머지 문자들은 덜 흔하다. 이는, 동일한 바이트로부터의 비트들이 통계적으로 의존적이고, 바이트 내의 비트들의 일부를 아는 것이 동일한 바이트 내의 다른 비트들의 신뢰도를 증가시킨다는 것을 나타낸다. 데이터는, 그룹 내의 모든 비트들이 통계적으로 의존적이도록, 그룹들로 분할될 수 있다. 각각의 그룹은 심볼 또는 심볼 노드로 간주된다.
도 4에서, 심볼들은 8개의 비트 노드들(406a 내지 406h, 406i 내지 406p)로 나타내진 8 비트의 그룹들이다. ICAD에 의해 수행되는 디코딩 동작 동안, 하나 이상의 심볼 노드들(402, 404) 각각은 복수의 비트 노드들(406)의 각각의 비트 노드에 메시지를 전송한다. 메시지는, 동일한 코드워드의 다른 비트들로부터의 정보 및 각각의 심볼의 확률을 반영하는 데이터 통계치들에 따라, 도 3a 및 도 3b에서 전술된 바와 같이, 비트가 "0" 또는 "1"일 확률을 포함할 수 있다. 체크 노드들(408)은, 비트 노드 값들이 정확하다는 것을 보장하기 위해 복수의 비트 노드들(406)의 비트 노드들 각각 내의 값들을 체크하도록 제공된다. 체크 노드들(408)은, 비트 노드 값들이 제약되도록, 코드워드 비트들의 패리티 제약들을 포함할 수 있다.
확률들이 인코딩 절차 동안 학습될 수 있으며, 여기서 데이터는 에러들 없이 획득된다. 그러나, 학습된 통계치들이 데이터 저장 디바이스의 메모리, 예컨대 도 1의 NVM(110) 내에 저장될 필요가 있을 것이기 때문에, 인코딩 절차 동안 통계치들을 학습하는 것은 비용이 많이 들 수 있다. 예컨대 전술된 데이터 통계치 추정 방식 동안, 데이터를 스캔하고 데이터 내에서의 각각의 심볼의 발생을 카운팅함으로써, 향후의 데이터 판독들에 대한 추가 정보로서 확률들이 계산되고 저장된다. 추가로, 확률들은 판독 데이터 자체로부터 학습될 수 있다. 에러들의 수가 충분히 낮을 수 있어서, 높은 정확성을 갖는 확률들이 얻어질 수 있다. 확률들은 또한 디코딩 절차 동안 추정될 수 있다. 각각의 디코딩 스테이지(stage)에서, 전술한 바와 같이, 각각의 비트는 "0" 또는 "1"이 될 그의 확률을 보유한다. 이들 확률들이 주어지면, 각각의 심볼의 각각의 발생에 대한 확률들이 획득될 수 있다.
도 5는 개시된 실시예들에 따른, 디코더 풀 내의 ICAD의 구현예를 예시하는 개략적인 블록도이다. 디코더 풀은 도 2의 디코더 풀(202)일 수 있다. 복수의 디코더들(502a 내지 502n)의 각각의 디코더에 대한 호스트 데이터 통계치 추정 모듈을 갖기보다는, 복수의 디코더들(502a 내지 502n)이 공동 데이터 통계치 추정 모듈(504)에 결합되어, 데이터 통계치들이 공동 데이터 통계치 추정 모듈(504)에 결합된 복수의 디코더들(502a 내지 502n)의 디코더들 모두에 의해 공동으로 추정되게 한다.
데이터 통계치들은 "k" 비트 길이의 모든 코드워드들에 대한 데이터 통계치들의 공동 표현을 유지함으로써 복수의 디코더들(502a 내지 502n)의 각각의 디코더에 대해 공동으로 추정될 수 있으며, 여기서 "k"는 비트 길이의 수치값을 지칭한다. 데이터 통계치들은 복수의 디코더들(502a 내지 502n)의 각각의 디코더 내에, 도 3의 히스토그램(350)과 같은 히스토그램으로서 저장될 수 있으며, 여기서, 히스토그램은 "k" 비트 길이로 디코딩된 각각의 코드워드로 계속 업데이트된다. 복수의 디코더들(502a 내지 502n) 각각은 업데이트된 통계치들을 공동 데이터 통계치 추정 모듈(504)에 전송하며, 여기서 공동 데이터 통계치 추정 모듈(504)은 개별 업데이트된 통계치들을 통합하고, 복수의 디코더들(502a 내지 502n)의 각각의 디코더에 글로벌 통계치들을 다시 전송한다.
제1 디코더(502a)와 같은 개별 디코더가 업데이트된 데이터 통계치들을 공동 데이터 통계치 추정 모듈(504)에 전달하는 각각의 단계에서, 디코더는 이전 추정치와의 차이를 전달한다. 예를 들어, 차이는 "bin1: +5, bin2: -7" 등으로 예시화될 수 있다. 코드워드의 디코딩이 완료될 때, 디코딩된 코드워드와 연관된 호스트 데이터는 호스트 디바이스와 같은 타깃(target) 위치로 전송되며, 여기서 데이터 통계치들은 잡음이 없는 버전일 수 있다.
각각의 디코더로부터의 데이터는, 거의 또는 완전히 디코딩된 코드워드들보다, 디코딩 동작의 시작 시의 또는 높은 비트 에러율을 갖는 코드워드들에 더 높은 가중치가 주어지도록, 신뢰도를 반영하는 가중치를 사용하여 취해질 수 있다. 추가로, 과거에 디코딩된 코드워드들은 또한 소정 가중치와 함께 고려될 수 있는데, 이 소정 가중치는 데이터 내의 변화들을 반영하기 위해 그리고 데이터 통계치들이 시간에 관련하여 변하는 것을 허용하기 위해 시간에 따라 감소할 수 있다. 가중치들은 도 3a 및 도 3b에서 기술된 바와 같은, 코드워드의 소정 비트를 수신할 확률을 설명할 수 있다.
도 7의 흐름도(700)를 참조하면, 블록(702)에서, 제1 디코더(502a)는 도 1의 NVM(110)과 같은 NVM으로부터 제1 코드워드를 수신한다. 제1 코드워드는, 비트 에러율과 같은 코드워드의 특성들에 기초하여 계층 1, 계층 2, 또는 계층 3 디코더에 할당될 수 있다. 블록(704)에서, 제1 코드워드는 제1 디코더(502a)에 의해 디코딩되며, 여기서 제1 코드워드에 대한 제1 데이터 통계치가 생성되고 제1 디코더(502a)에 의해 저장된다. 제1 코드워드에 대한 제1 데이터 통계치를 생성한 후, 블록(706)에서, 생성된 제1 데이터 통계치가 공동 데이터 통계치 추정 모듈(504)로 전송된다. 생성된 제1 데이터 통계치를 공동 데이터 통계치 추정 모듈로 전송하는 타이밍은 도 1의 데이터 저장 디바이스(106)와 같은 데이터 저장 디바이스의 동작 또는 조건들에 기초한 구성가능한 또는 적응적인 타이밍일 수 있다는 것이 이해될 것이다. 블록(708)에서, 도 1의 제어기(108)와 같은 제어기는, 공동 데이터 통계치 추정 모듈(504)이 1개 초과의 유사한 데이터 통계치를 포함하는지를 결정한다. 호스트 데이터가 종종 ECC 코드 워드보다 길고 보통 순차적으로 판독되므로, 시간적으로 매우 근접하는 디코딩된 ECC 워드들은 유사한 데이터 통계치들을 가질 수 있다. 유사한 데이터 통계치가 없는 경우, 제어기는 제2 코드워드를 수신하여 디코더에 할당하기를 기다린다.
블록(702)에서, 제2 디코더(502b)는 NVM으로부터 제2 코드워드를 수신한다. 제2 코드워드 및 제1 코드워드는 실질적으로 유사하므로, 코드워드들의 데이터 통계치들은 유사하다. 블록(704)에서, 제2 디코더(502b)는 제2 코드워드를 디코딩하고, 제2 코드워드와 연관된 제2 데이터 통계치를 생성한다. 블록(706)에서, 생성된 제2 데이터 통계치가 공동 데이터 통계치 추정 모듈(504)로 전송된다.
블록(708)에서, 공동 데이터 통계치 추정 모듈(504)은 생성된 제1 데이터 통계치 및 생성된 제2 데이터 통계치 둘 모두를 수신한다. 제1 코드워드 및 제2 코드워드가 실질적으로 유사하기 때문에, 생성된 제1 데이터 통계치는 생성된 제2 데이터 통계치에 의해 업데이트되어서, 블록(710)에서, 글로벌 통계치들이 생성된 제1 데이터 통계치 및 생성된 제2 데이터 통계치를 포함하게 한다. 추가로, 블록(710)에서, 공동 데이터 통계치 추정 모듈(504)은 글로벌 통계치들을 활용하여 히스토그램을 생성한다.
블록(712)에서, 제3 코드워드가 도 1의 제어기(108)와 같은 제어기에 의해 NVM으로부터 검색된다. 글로벌 통계치들에 기초하여, 복수의 디코더들(502a 내지 502n) 중 적절한 디코더가 제3 코드워드를 수신한다. 예를 들어, 생성된 히스토그램 및 글로벌 통계치들에 기초하여 제1 디코더(502a)가 제3 코드워드를 수신할 수 있다. 블록(714)에서, 제3 코드워드가 디코딩되고, 제3 데이터 통계치들이 생성된다. 블록(716)에서, 제어기는 생성된 제3 데이터 통계치들과 글로벌 통계치들 사이에 부정합이 있는지를 결정한다. 블록(716)에서 부정합이 없는 경우, 블록(718)에서, 생성된 제3 데이터 통계치들은 공동 데이터 통계치 추정 모듈(504)로 전송되고, 여기서 글로벌 통계치들 및 히스토그램은 생성된 제3 데이터 통계치들을 사용하여 블록(710)에서 업데이트된다. 일부 예들에서, 제1 코드워드, 제2 코드워드, 및 제3 코드워드는 순차적이다.
도 6은 개시된 실시예들에 따른, 디코더 풀 내의 ICAD를 공유하는 선택적인 데이터의 구현예를 예시하는 개략적인 블록도이다. 도 6의 디코더 풀 내의 ICAD를 공유하는 선택적인 데이터의 태양들은 도 5에서 설명된 디코더 풀 내의 ICAD의 태양들과 유사할 수 있다. 추가로, 디코더 풀은 도 2의 디코더 풀(202)일 수 있다. 도 5에 묘사된 실시예와 같이, 복수의 디코더들(602a 내지 602n)의 각각의 디코더를 공동 데이터 통계치 추정 모듈(604)에 결합시키기보다는, 복수의 디코더들(602a 내지 602n)의 각각의 디코더는 복수의 데이터 통계치 추정 모듈(606a 내지 606n)의 각자의 데이터 통계치 추정 모듈에 결합된다. 따라서, 제1 디코더(602a)와 제1 데이터 통계치 추정 모듈(606a)과 같은 각각의 디코더-데이터 통계치 추정 모듈 쌍이 공동 데이터 통계치 추정 모듈(604)에 결합된다.
제1 디코더와 같은 디코더의 데이터 통계치들과 공동 데이터 통계치 추정 모듈(604)의 글로벌 통계치들 사이에 부정합이 있는 경우, 디코더는 글로벌 통계치들보다는 로컬 데이터 통계치들을 계속 사용하도록 결정할 수 있다. 유사하게, 글로벌 통계치들은 로컬 데이터 통계치들을 사용하여 업데이트되지 않을 수 있다. 부정합은 상관관계에 의해 또는 KL 또는 JS 발산과 같은 일부 다른 형태의 거리에 의해 측정될 수 있고, 어느 한 측에 대해 상이한 임계치들을 보유할 수 있다. 예를 들어, 글로벌 통계치들은 업데이트되지만 로컬 데이터 통계치들은 업데이트되지 않는 경우 또는 그 반대인 경우가 있을 수 있다.
도 5의 예에서 확장하여, 생성된 제1 데이터 통계치들, 생성된 제2 데이터 통계치들, 및 생성된 제3 데이터 통계치들을 공동 데이터 통계치 추정 모듈(604)에 직접 제공하기보다는, 생성된 데이터 통계치들이 관련 데이터 통계치 추정 모듈(606a, 606b)에 의해 저장될 수 있다. 예를 들어, 블록(706)에서, 생성된 제1 데이터 통계치 및 생성된 제2 데이터 통계치가 공동 데이터 통계치 추정 모듈(604)로 전송되고, 여기서 공동 데이터 통계치 추정 모듈(604)은 블록(710)에서 글로벌 통계치들 및 글로벌 통계치들에 기초한 히스토그램을 생성한다.
그러나, 블록(716)에서, 생성된 제3 데이터 통계치와 제1 데이터 통계치 추정 모듈(606a)에 제공된 글로벌 통계치들의 부정합으로 인해, 블록(720)에서 생성된 제3 데이터 통계치들이 국부적으로 저장될 수 있다. 이어서, 블록(720)에서, 제1 데이터 통계치 추정 모듈(606a)은 글로벌 통계치들 및 연관된 히스토그램보다는, 국부적으로 저장된 집계된 데이터 통계치 및 연관된 히스토그램을 활용할 수 있다. 복수의 디코더들(602a 내지 602n)의 각각의 디코더는 로컬 데이터 통계치를 유지할 수 있어서, 부정합의 경우에, 더 정확한 집계된 데이터 통계치 및 연관된 히스토그램이 활용될 수 있게 된다.
추가로, 새롭게 생성된 데이터 통계치의 가중치가 더 예전의 생성된 데이터 통계치보다 더 관련이 있는 것으로 가중되도록, 생성된 데이터 통계치들 각각은 가중치와 연관될 수 있다. 가중치는 수신된 코드워드에 대한 글로벌 통계치 또는 로컬 데이터 통계치의 더 양호한 유연성 및 적응성을 허용할 수 있어서, 데이터 통계치들 및 연관된 히스토그램이 새롭게 생성된 코드워드들 상에 더 큰 값을 배치하게 한다. 예를 들어, 두 번째로 생성된 데이터 통계치는 첫 번째로 생성된 데이터 통계치의 것보다 생성된 데이터 통계치와 연관된 더 큰 가중치를 가질 수 있으며, 여기서 첫 번째로 생성된 데이터 통계치는 두 번째로 생성된 데이터 통계치 이전에 생성된 것이다.
도 5 및 도 6을 참조하면, 소정 구현예들에서, 제1 공동 데이터 통계치 추정 모듈이 제2 통계치 추정 모듈에 결합되도록, 1개 초과의 공동 데이터 통계치 추정 모듈이 있을 수 있다. 추가로, 상이한 유형들의 디코더들이 데이터 통계치들의 상이한 실현물을 요구할 수 있다는 것이 이해될 것이다. 예를 들어, 비트 플립핑 디코더와 같은 제1 디코더는 "k" 비트 히스토그램을 활용할 수 있으며, 메시지 전달 디코더와 같은 제2 디코더는 "n" 비트 히스토그램을 활용하고, 여기서 "k" 및 "n"은 각각의 히스토그램과 연관된 비트 수의 값들이다. 동일한 유형의 디코더들의 각각의 그룹(즉, "k" 비트 히스토그램들을 활용하는 디코더들)은 동일한 유형의 데이터 통계치와 연관된 글로벌 통계치들을 보유할 것이다. 공동 데이터 통계치 추정 모듈(504, 604)은 상이한 유형들의 글로벌 통계치들을 개별적으로 저장하도록 구성될 수 있다.
다른 예에서, 전술한 각각의 디코더 그룹이 상이한 데이터 통계치 묶음(book)들에 대한 것일 수 있더라도(즉, "k" 비트 히스토그램들을 활용하는 디코더들 및 "n" 비트 히스토그램들을 활용하는 디코더들), 동일한 분포로부터의 데이터가 그룹들 사이에 전달될 수 있다. 그룹들 사이에서 데이터를 전달하기 위해, 데이터가 조정될 수 있다. 예를 들어, 8 비트 히스토그램은 데이터 손실 없이 동일한 4개의 MSB를 공유하는 모든 조합들에 걸쳐 누적함으로써 4 비트 히스토그램으로 변환될 수 있다. 다른 예에서, 4 비트 히스토그램들은 8 비트 히스토그램의 결과들과 조합될 수 있으며, 여기서 8 비트의 각각의 그룹에 소정 인자가 주어진다. 8 비트 각각에서, 관련 4개의 LSB들 또는 4개의 MSB는 4 비트 히스토그램 내의 소정 값에 대응할 수 있다.
디코더 풀의 아키텍처를, 공유 데이터 통계치들을 사용하여 콘텐츠 인식 디코딩을 처리하도록 적응시킴으로써, 디코딩의 레이턴시는 감소될 수 있고, QoS는 개선될 수 있고, 디코더의 정정 능력이 개선될 수 있다.
일 실시예에서, NVM, 및 제1 코드워드를 수신하도록 구성된 제1 디코더 - 제1 디코더는 제1 코드워드에 대한 제1 데이터 통계치들을 생성하도록 구성됨 - 및 제2 코드워드를 수신하도록 구성된 제2 디코더 - 제2 디코더는 제2 코드워드에 대한 제2 데이터 통계치들을 생성하도록 구성됨 - 를 포함하는 복수의 디코더들을 포함하는, NVM에 결합된 제어기를 포함하는 데이터 저장 디바이스가 개시된다. 데이터 저장 디바이스는 제1 및 제2 데이터 통계치들을 수신하도록 구성된 공동 데이터 통계치 모듈을 추가로 포함한다.
공동 데이터 통계치 모듈은 제1 및 제2 데이터 통계치들에 기초하여 데이터 히스토그램을 생성하도록 추가로 구성된다. 제어기는 제3 코드워드를 수신하도록 구성되며, 제3 코드워드는 데이터 히스토그램에 기초하여 복수의 디코더들 중 하나에 할당된다. 제1 코드워드 및 제2 코드워드는 실질적으로 유사하고, 제1 데이터 통계치들은 공동 데이터 통계치 모듈 내에서 제2 데이터 통계치들에 의해 업데이트된다. 제1 디코더는 제1 데이터 통계치들을 저장한다. 제어기는 제3 코드워드를 수신하도록 구성된다. 제1 코드워드, 제2 코드워드, 및 제3 코드워드 각각은 신드롬 가중치 또는 비트 에러율에 기초하여 제1 디코더에 할당된다. 제1 디코더는 제1 데이터 통계치들에 기초하여 복수의 디코더들 중 하나에 제3 코드워드를 제공한다. 복수의 디코더들의 각각의 디코더는 계층 1 디코더, 계층 2 디코더, 및 계층 3 디코더 중 하나를 포함한다. 제어기는 제3 코드워드를 수신하도록 구성된다. 제3 코드워드는, 신드롬 가중치 또는 비트 에러율에 기초하여 계층 1 디코더, 계층 2 디코더, 및 계층 3 디코더 중 하나에 할당된다.
다른 실시예에서, 데이터 저장 디바이스를 위한 제어기가 개시된다. 제어기는 하나 이상의 NVM들에 대한 I/O, 및 콘텐츠 인식 디코딩을 위한 방법을 수행하도록 구성된 프로세서를 포함한다. 방법은, 제1 디코더에서 하나 이상의 NVM들로부터의 코드워드를 수신하는 단계, 코드워드에 대한 데이터 통계치들을 생성하는 단계, 및 데이터 통계치들을 공동 통계치 모듈에 제공하는 단계를 포함하며, 공동 통계치 모듈은 제1 디코더를 포함하는 복수의 디코더들에 결합된다.
복수의 디코더들의 각각의 디코더는 계층 1 디코더, 계층 2 디코더, 및 계층 3 디코더 중 하나를 포함한다. 방법은, NVM들 중 하나 이상으로부터 제2 코드워드를 수신하는 단계, 및 공동 통계치 모듈에 기초하여 복수의 디코더들 중 하나에 제2 코드워드를 할당하는 단계를 추가로 포함한다. 복수의 디코더들의 각각의 디코더는 데이터 통계치들을 국부적으로 유지하고, 데이터 통계치들을 공동 통계치 모듈에 제공한다. 방법은, 국부적으로 유지되는 데이터 통계치들에 기초하여 복수의 디코더들 중 하나에 제2 코드워드를 할당하는 단계를 추가로 포함한다. 방법은, 국부적으로 유지되는 데이터 통계치들과 공동 통계치 모듈 사이에서 통계적 부정합이 검출되는 것을 추가로 포함한다. 방법은, 공동 통계치 모듈 및 국부적으로 유지되는 데이터 중 하나가 히스토그램을 포함하는 것을 추가로 포함한다. 방법은, 데이터 통계치들 중 더 새로운 것이 데이터 통계치들 중 더 예전의 것보다 더 관련이 있는 것으로 가중되는 것을 추가로 포함한다.
다른 실시예에서, NVM 수단, 및 콘텐츠 인식 디코딩을 위한 방법을 실행하기 위한 제어기 수단을 포함하는, 데이터를 저장하기 위한 시스템이 개시된다. 방법은, 복수의 디코더 수단의 제1 디코더 수단에서 NVM 수단으로부터 제1 코드워드를 수신하는 단계, 제1 디코더 수단에서 제1 코드워드를 디코딩하는 단계, 및 제1 코드워드를 디코딩한 것에 기초하여 제1 데이터 통계치를 생성하는 단계를 포함한다. 방법은, 복수의 디코더 수단 각각에 결합된 공동 데이터 통계치 모듈을 제1 데이터 통계치를 이용하여 업데이트하는 단계, NVM 수단으로부터 제2 코드워드를 수신하는 단계, 및 신드롬 가중치 또는 비트 에러율에 기초하여, 복수의 디코더 수단의 제2 디코더 수단에 제2 코드워드를 할당하는 단계를 추가로 포함한다.
방법은, 제2 디코더 수단에서 제2 데이터 통계치를 생성하는 단계 및 제2 데이터 통계치들에 기초하여 공동 데이터 통계치 모듈을 업데이트하는 단계를 추가로 포함한다. 제2 데이터 통계치는 데이터 통계치들보다 더 관련이 있는 것으로 가중된다. 복수의 디코더 수단의 각각의 디코더 수단은 데이터 통계치들을 공동 데이터 통계치 모듈에 제공하도록 구성된다. NVM 수단으로부터의 후속 코드워드들을 복수의 디코더 수단 중 하나에 할당하는 것은 신드롬 가중치 또는 비트 에러율에 기초한다.
전술한 것은 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 및 추가 실시예들이 본 발명의 기본 범주로부터 벗어남이 없이 고안될 수 있으며, 본 발명의 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 데이터 저장 디바이스로서,
    비휘발성 메모리(non-volatile memory, NVM); 및
    상기 NVM에 결합된 제어기를 포함하고, 상기 제어기는,
    복수의 디코더들로서,
    제1 코드워드를 수신하도록 구성된 제1 디코더 - 상기 제1 디코더는 상기 제1 코드워드에 대한 제1 데이터 통계치들을 생성하도록 구성됨 -; 및
    제2 코드워드를 수신하도록 구성된 제2 디코더 - 상기 제2 디코더는 상기 제2 코드워드에 대한 제2 데이터 통계치들을 생성하도록 구성됨 - 를 포함하는, 상기 복수의 디코더들; 및
    상기 제1 및 제2 데이터 통계치들을 수신하도록 구성된 공동 데이터 통계치 모듈을 포함하는, 데이터 저장 디바이스.
  2. 제1항에 있어서, 상기 공동 데이터 통계치 모듈은 상기 제1 및 제2 데이터 통계치들에 기초하여 데이터 히스토그램을 생성하도록 추가로 구성되는, 데이터 저장 디바이스.
  3. 제1항에 있어서, 상기 제어기는 제3 코드워드를 수신하도록 구성되고, 상기 제1 코드워드, 상기 제2 코드워드, 및 상기 제3 코드워드 각각은 신드롬 가중치(syndrome weight) 또는 비트 에러율에 기초하여 상기 복수의 디코더들 중 하나에 할당되는, 데이터 저장 디바이스.
  4. 제1항에 있어서, 상기 제1 코드워드 및 제2 코드워드는 실질적으로 유사하고, 상기 제1 데이터 통계치들은 상기 공동 데이터 통계치 모듈 내에서 상기 제2 데이터 통계치들에 의해 업데이트되는, 데이터 저장 디바이스.
  5. 제4항에 있어서, 상기 제1 디코더는 상기 제1 데이터 통계치들을 저장하고, 상기 제어기는 제3 코드워드를 수신하도록 구성되고, 상기 제3 코드워드는 공동 데이터 통계치들에 기초하여 상기 제1 디코더에 할당되고, 상기 제1 디코더는 상기 제1 데이터 통계치들에 기초하여 상기 복수의 디코더들 중 하나에 상기 제3 코드워드를 제공하는, 데이터 저장 디바이스.
  6. 제1항에 있어서, 상기 복수의 디코더들의 각각의 디코더는 계층(tier) 1 디코더, 계층 2 디코더, 및 계층 3 디코더 중 하나로 구성되는, 데이터 저장 디바이스.
  7. 제6항에 있어서, 상기 제어기는 제3 코드워드를 수신하도록 구성되고, 상기 제3 코드워드는, 신드롬 가중치 또는 비트 에러율에 기초하여 상기 계층 1 디코더, 상기 계층 2 디코더, 및 상기 계층 3 디코더 중 하나에 할당되는, 데이터 저장 디바이스.
  8. 데이터 저장 디바이스를 위한 제어기로서,
    하나 이상의 비휘발성 메모리(NVM)들에 대한 I/O; 및
    콘텐츠 인식 디코딩을 위한 방법을 수행하도록 구성된 프로세서를 포함하고, 상기 방법은,
    제1 디코더에서 상기 하나 이상의 NVM들로부터 코드워드를 수신하는 단계;
    상기 코드워드에 대한 데이터 통계치들을 생성하는 단계; 및
    상기 제1 디코더를 포함하는 복수의 디코더들에 결합된 공동 통계치 모듈을 동작시키고 상기 데이터 통계치들에 기초하여 출력을 제공하는 단계를 포함하는, 제어기.
  9. 제8항에 있어서, 상기 복수의 디코더들의 각각의 디코더는 계층 1 디코더, 계층 2 디코더, 및 계층 3 디코더 중 하나를 포함하는, 제어기.
  10. 제9항에 있어서, 상기 프로세서에 의해 수행가능한 상기 방법은, 상기 NVM들 중 하나 이상으로부터 제2 코드워드를 수신하는 단계, 및 신드롬 가중치 또는 비트 에러율에 기초하여 상기 복수의 디코더들 중 하나에 상기 제2 코드워드를 할당하는 단계를 추가로 포함하는, 제어기.
  11. 제10항에 있어서, 상기 프로세서에 의해 수행가능한 상기 방법은, 상기 복수의 디코더들의 각각의 디코더는 데이터 통계치들을 국부적으로 유지하고, 데이터 통계치들을 상기 공동 통계치 모듈에 제공하는 것을 추가로 포함하는, 제어기.
  12. 제11항에 있어서, 상기 프로세서에 의해 수행가능한 상기 방법은, 국부적으로 유지되는 데이터 통계치들에 기초하여 상기 복수의 디코더들 중 하나에 상기 제2 코드워드를 할당하는 단계를 추가로 포함하는, 제어기.
  13. 제12항에 있어서, 상기 프로세서에 의해 수행가능한 상기 방법은, 통계적 부정합이 국부적으로 유지되는 데이터 통계치들과 상기 공동 통계치 모듈 사이에서 검출되는 것을 추가로 포함하는, 제어기.
  14. 제13항에 있어서, 상기 프로세서에 의해 수행가능한 상기 방법은, 상기 공동 통계치 모듈 및 국부적으로 유지되는 데이터 통계치들 각각 중 하나가 히스토그램을 포함하는 것을 추가로 포함하는, 제어기.
  15. 제14항에 있어서, 상기 프로세서에 의해 수행가능한 상기 방법은, 상기 데이터 통계치들 중 더 새로운 것이 상기 데이터 통계치들 중 더 예전의 것보다 더 관련이 있는 것으로 가중되는 것을 추가로 포함하는, 제어기.
  16. 데이터를 저장하기 위한 시스템으로서,
    비휘발성 메모리(NVM) 수단; 및
    콘텐츠 인식 디코딩을 위한 방법을 실행하도록 구성된 제어기 수단을 포함하고, 상기 방법은,
    복수의 디코더 수단의 제1 디코더 수단에서 상기 NVM 수단으로부터 제1 코드워드를 수신하는 단계;
    상기 제1 디코더 수단에서 상기 제1 코드워드를 디코딩하는 단계;
    상기 제1 코드워드를 디코딩한 것에 기초하여 제1 데이터 통계치를 생성하는 단계;
    상기 복수의 디코더 수단 각각에 결합되고 출력을 생성하도록 구성된 공동 데이터 통계치 모듈을 동작시키고, 상기 제1 데이터 통계치를 상기 공동 데이터 통계치 모듈에 제공하는 단계;
    상기 NVM 수단으로부터 제2 코드워드를 수신하는 단계; 및
    신드롬 가중치 또는 비트 에러율에 기초하여, 상기 복수의 디코더 수단의 제2 디코더 수단에 상기 제2 코드워드를 할당하는 단계를 포함하는, 시스템.
  17. 제16항에 있어서, 상기 방법은, 상기 제2 디코더 수단에서 제2 데이터 통계치를 생성하는 단계 및 상기 제2 데이터 통계치에 기초하여 상기 공동 데이터 통계치 모듈을 업데이트하는 단계를 추가로 포함하는, 시스템.
  18. 제17항에 있어서, 상기 제2 데이터 통계치는 상기 데이터 통계치들보다 더 관련있는 것으로 가중되는, 시스템.
  19. 제16항에 있어서, 상기 복수의 디코더 수단의 각각의 디코더 수단은 데이터 통계치들을 상기 공동 데이터 통계치 모듈에 제공하도록 구성되는, 시스템.
  20. 제19항에 있어서, 상기 NVM 수단으로부터의 후속 코드워드들을 상기 복수의 디코더 수단 중 하나에 할당하는 것은 상기 신드롬 가중치 또는 상기 비트 에러율에 기초하는, 시스템.
KR1020210081792A 2020-11-06 2021-06-23 공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩 KR102479236B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063110738P 2020-11-06 2020-11-06
US63/110,738 2020-11-06
US17/211,605 2021-03-24
US17/211,605 US11528038B2 (en) 2020-11-06 2021-03-24 Content aware decoding using shared data statistics

Publications (2)

Publication Number Publication Date
KR20220061833A true KR20220061833A (ko) 2022-05-13
KR102479236B1 KR102479236B1 (ko) 2022-12-19

Family

ID=81453669

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210081792A KR102479236B1 (ko) 2020-11-06 2021-06-23 공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩

Country Status (3)

Country Link
US (1) US11528038B2 (ko)
JP (1) JP7186262B2 (ko)
KR (1) KR102479236B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230396271A1 (en) * 2022-06-01 2023-12-07 Micron Technology, Inc. Early stopping of bit-flip low density parity check decoding based on syndrome weight

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110111108A (ko) * 2010-04-02 2011-10-10 삼성전자주식회사 반도체 장치 및 이의 복호 방법
US20150113311A1 (en) * 2013-10-18 2015-04-23 Sony Corporation Storage control apparatus, storage apparatus, information processing system, and storage control method therefor
US20170163287A1 (en) * 2012-11-08 2017-06-08 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US20190393901A1 (en) * 2018-06-21 2019-12-26 Western Digital Technologies, Inc. Memory device with adaptive descrambling
US20200099402A1 (en) * 2018-09-20 2020-03-26 Western Digital Technologies, Inc. Data driven icad graph generation
US20200099404A1 (en) * 2018-09-20 2020-03-26 Western Digital Technologies, Inc. Content aware decoding method and system
KR20200091798A (ko) * 2019-01-22 2020-07-31 웨스턴 디지털 테크놀로지스, 인코포레이티드 에러 정정이 향상된 메모리 디바이스

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381106B1 (en) 2000-04-12 2002-04-30 International Business Machines Corporation Top spin valve sensor that has a free layer structure with a cobalt iron boron (cofeb) layer
US6809900B2 (en) 2001-01-25 2004-10-26 Seagate Technology Llc Write head with magnetization controlled by spin-polarized electron current
US7035062B1 (en) 2001-11-29 2006-04-25 Seagate Technology Llc Structure to achieve sensitivity and linear density in tunneling GMR heads using orthogonal magnetic alignments
US6928590B2 (en) 2001-12-14 2005-08-09 Matrix Semiconductor, Inc. Memory device and method for storing bits in non-adjacent storage locations in a memory array
US7696548B2 (en) 2005-08-09 2010-04-13 Magic Technologies, Inc. MRAM with super-paramagnetic sensing layer
WO2007082626A2 (en) 2006-01-17 2007-07-26 Thomson Licensing Method and apparatus for error correction decoding
US20080112095A1 (en) 2006-11-15 2008-05-15 Hitachi Global Storage Technologies Netherlands B.V. Dual current-perpendicular-to-the-plane (cpp) magnetoresistive sensor with heusler alloy free layer and minimal current-induced noise
US8583981B2 (en) 2006-12-29 2013-11-12 Marvell World Trade Ltd. Concatenated codes for holographic storage
WO2008142683A2 (en) 2007-05-21 2008-11-27 Ramot At Tel Aviv University Ltd. Memory-efficient ldpc decoding
KR20080108016A (ko) 2007-06-07 2008-12-11 가부시끼가이샤 도시바 자기 기록 헤드 및 자기 기록 장치
JP4919901B2 (ja) 2007-09-04 2012-04-18 株式会社東芝 磁気記録ヘッド及び磁気記録装置
US20090122450A1 (en) 2007-11-08 2009-05-14 Headway Technologies, Inc. TMR device with low magnetostriction free layer
JP5036585B2 (ja) 2008-02-13 2012-09-26 株式会社東芝 磁性発振素子、この磁性発振素子を有する磁気ヘッド、および磁気記録再生装置
US8057925B2 (en) 2008-03-27 2011-11-15 Magic Technologies, Inc. Low switching current dual spin filter (DSF) element for STT-RAM and a method for making the same
US20090310244A1 (en) 2008-06-17 2009-12-17 Tdk Corporation Thin-film magnetic head for microwave assist and microwave-assisted magnetic recording method
US8416539B2 (en) 2008-08-07 2013-04-09 HGST Netherlands B.V. Magnetic field sensing system using spin-torque diode effect
JP5320009B2 (ja) 2008-10-06 2013-10-23 株式会社東芝 スピントルク発振子、磁気記録ヘッド、磁気ヘッドアセンブリ及び磁気記録装置
US8301979B2 (en) 2008-10-07 2012-10-30 Sandisk Il Ltd. Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders
JP5173750B2 (ja) 2008-11-06 2013-04-03 株式会社東芝 スピントルク発振子、磁気記録ヘッド、磁気ヘッドアセンブリ及び磁気記録装置
JP5448438B2 (ja) 2008-12-19 2014-03-19 エイチジーエスティーネザーランドビーブイ 磁気リード・ヘッド
US8286048B1 (en) 2008-12-30 2012-10-09 Qualcomm Atheros, Inc. Dynamically scaled LLR for an LDPC decoder
US8374026B2 (en) 2009-01-30 2013-02-12 Sandisk Il Ltd. System and method of reading data using a reliability measure
US8259409B2 (en) 2009-06-25 2012-09-04 Hitachi Global Storage Technologies Netherlands B.V. Spin torque oscillator sensor
US7982996B2 (en) 2009-12-07 2011-07-19 Hitachi Global Storage Technologies Netherlands B.V. Perpendicular magnetic recording write head and system with improved spin torque oscillator for microwave-assisted magnetic recording
US8549385B2 (en) 2009-12-15 2013-10-01 Marvell World Trade Ltd. Soft decoding for quantizied channel
US8085490B2 (en) 2009-12-23 2011-12-27 Hitachi Global Storage Technologies, Netherlands B.V. Slider fly-height control in a hard disk drive
US8300356B2 (en) 2010-05-11 2012-10-30 Headway Technologies, Inc. CoFe/Ni Multilayer film with perpendicular anistropy for microwave assisted magnetic recording
US8464137B2 (en) 2010-12-03 2013-06-11 International Business Machines Corporation Probabilistic multi-tier error correction in not-and (NAND) flash memory
US8320080B1 (en) 2011-05-31 2012-11-27 Hitachi Global Storage Technologies Netherlands B.V. Three-terminal spin-torque oscillator (STO)
US20130064971A1 (en) 2011-09-13 2013-03-14 Matthew J. Carey Method for making a current-perpendicular-to-the-plane (cpp) magnetoresistive (mr) sensor with an antiparallel free (apf) structure formed of an alloy requiring post-deposition high temperature annealing
JP5172004B1 (ja) 2011-09-20 2013-03-27 株式会社日立製作所 磁気記録ヘッド及び磁気記録装置
US8924815B2 (en) * 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
JP5808273B2 (ja) 2012-03-01 2015-11-10 株式会社日立製作所 磁気ヘッド、ヘッド駆動制御装置、磁気記憶装置、その制御方法
JP5701801B2 (ja) 2012-03-22 2015-04-15 株式会社東芝 磁気記録ヘッド、これを備えたヘッドジンバルアッセンブリ、およびディスク装置
US9203432B2 (en) 2012-08-28 2015-12-01 Marvell World Trade Ltd. Symbol flipping decoders of non-binary low-density parity check (LDPC) codes
US8582240B1 (en) 2012-08-29 2013-11-12 Headway Technologies, Inc. Magnetic recording assisted by spin torque oscillator with a radio frequency current bias
US8970996B2 (en) 2012-09-27 2015-03-03 HSGT Netherlands B.V. Spin-torque oscillator for microwave assisted magnetic recording
JP2014103172A (ja) 2012-11-16 2014-06-05 Toshiba Corp 磁性薄膜、その製造方法、磁性薄膜を用いた、高周波発振素子、磁気ヘッド、磁気記録媒体、及び磁気記録再生装置
US8953283B2 (en) 2012-11-29 2015-02-10 Kabushiki Kaisha Toshiba Magnetic head, magnetic head assembly, and magnetic recording/reproduction apparatus
US8988826B2 (en) 2012-12-20 2015-03-24 HGST Netherlands B.V. MAMR head with a multi-layered side gap for stable oscillation of the STO
US8760818B1 (en) 2013-01-09 2014-06-24 Western Digital (Fremont), Llc Systems and methods for providing magnetic storage elements with high magneto-resistance using heusler alloys
US20140203383A1 (en) 2013-01-24 2014-07-24 T3Memory, Inc. Perpendicular magnetoresistive memory element
JP2015011745A (ja) 2013-06-28 2015-01-19 株式会社東芝 磁気ヘッド、及び磁気記録再生装置
US9076467B2 (en) 2013-07-02 2015-07-07 HGST Netherlands B.V. Current-perpendicular-to-the-plane (CPP) magnetoresistive sensor with multilayer reference layer including a crystalline CoFeX layer and a Heusler alloy layer
US9230597B2 (en) 2013-11-01 2016-01-05 HGST Netherlands B.V. Magnetic head having a spin torque oscillator (STO) with a hybrid heusler field generation layer (FGL)
US9236564B2 (en) 2013-12-11 2016-01-12 Samsung Electronics Co., Ltd. Method and system for providing an engineered magnetic layer including Heusler layers and an amorphous insertion layer
US9064508B1 (en) 2014-03-17 2015-06-23 HGST Netherlands B.V. Pile spin-torque oscillator with AF-mode oscillation for generating high AC-field in microwave-assisted magnetic recording
US9407294B2 (en) 2014-07-07 2016-08-02 Kabushi Kaisha Toshiba. Non-volatile memory controller with error correction (ECC) tuning via error statistics collection
US9368135B2 (en) 2014-07-25 2016-06-14 Seagate Technology Llc Data storage device with phase lock spin-torque oscillation stabilization
JP6092162B2 (ja) 2014-07-25 2017-03-08 株式会社東芝 磁気記録ヘッド及び磁気記録装置
US9230571B1 (en) 2014-08-26 2016-01-05 Headway Technologies, Inc. MgO based perpendicular spin polarizer in microwave assisted magnetic recording (MAMR) applications
US9305574B1 (en) 2014-09-23 2016-04-05 HGST Netherlands B.V. Negative-polarization spin-torque-oscillator
US9099124B1 (en) 2014-09-28 2015-08-04 HGST Netherlands B.V. Tunneling magnetoresistive (TMR) device with MgO tunneling barrier layer and nitrogen-containing layer for minimization of boron diffusion
US9099107B1 (en) 2015-01-23 2015-08-04 HGST Netherlands B.V. Stabilizing layer for a spin torque oscillator (STO)
US9337415B1 (en) 2015-03-20 2016-05-10 HGST Netherlands B.V. Perpendicular spin transfer torque (STT) memory cell with double MgO interface and CoFeB layer for enhancement of perpendicular magnetic anisotropy
US9837117B2 (en) 2015-11-19 2017-12-05 International Business Machines Corporation Track-dependent decoding
US9412410B1 (en) * 2015-11-19 2016-08-09 International Business Machines Corporation Track-dependent decoding
US10498366B2 (en) 2016-06-23 2019-12-03 SK Hynix Inc. Data dependency mitigation in parallel decoders for flash storage
JP6495841B2 (ja) 2016-02-16 2019-04-03 株式会社東芝 磁気記録ヘッド及び磁気記録再生装置
US10536172B2 (en) * 2016-03-04 2020-01-14 Western Digital Technologies, Inc. ECC and raid-type decoding
US10063258B2 (en) 2016-03-04 2018-08-28 Sandisk Technologies Llc Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding
US9893273B2 (en) 2016-04-08 2018-02-13 International Business Machines Corporation Light element doped low magnetic moment material spin torque transfer MRAM
US10366714B1 (en) 2016-04-28 2019-07-30 Western Digital Technologies, Inc. Magnetic write head for providing spin-torque-assisted write field enhancement
US10460752B2 (en) 2016-12-08 2019-10-29 Western Digital Technologies, Inc. Spin-torque oscillator with multilayer seed layer between the write pole and the free layer in a magnetic recording write head
US10566015B2 (en) 2016-12-12 2020-02-18 Western Digital Technologies, Inc. Spin transfer torque (STT) device with template layer for heusler alloy magnetic layers
US9881637B1 (en) 2017-02-17 2018-01-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods and devices for spin torque oscillator control and monitoring
JP2018147540A (ja) 2017-03-08 2018-09-20 株式会社東芝 磁気ヘッド及び磁気記録再生装置
JP7011768B2 (ja) 2017-03-17 2022-01-27 株式会社東芝 磁気記録装置および磁気記録ヘッド
US10446175B2 (en) 2017-05-16 2019-10-15 Western Digital Technologies, Inc. Spin transfer torque device with oxide layer beneath the seed layer
US10491243B2 (en) 2017-05-26 2019-11-26 SK Hynix Inc. Deep learning for low-density parity-check (LDPC) decoding
JP6850231B2 (ja) 2017-09-19 2021-03-31 株式会社東芝 磁気ヘッド及び磁気記録再生装置
JP2019057337A (ja) 2017-09-19 2019-04-11 株式会社東芝 磁気ヘッド及び磁気記録再生装置
US10700706B2 (en) 2017-09-22 2020-06-30 SK Hynix Inc. Memory system with decoders and method of operating such memory system and decoders
US10734013B2 (en) 2017-10-03 2020-08-04 Western Digital Technologies, Inc. Spin transfer torque (STT) device with multilayer seed layers for magnetic recording and memory
US10522744B2 (en) 2017-10-10 2019-12-31 Taiwan Semiconductor Manufacturing Company, Ltd. High thermal stability by doping of oxide capping layer for spin torque transfer (STT) magnetic random access memory (MRAM) applications
US10121497B1 (en) 2017-10-12 2018-11-06 Tdk Coporation Magnetic recording head with spin torque oscillator layers satisfying width, thickness and angle relationship formulas
KR102426047B1 (ko) * 2017-11-06 2022-07-26 삼성전자주식회사 폴라 부호 복호화 장치 및 방법
US10613927B1 (en) * 2018-03-09 2020-04-07 Toshiba Memory Corporation System and method for improved memory error rate estimation
US11070234B2 (en) 2018-03-16 2021-07-20 SK Hynix Inc. Memory system with hybrid decoding scheme with information exchange and method of operating such memory system
US10325618B1 (en) 2018-07-17 2019-06-18 Headway Technologies, Inc. Perpendicular magnetic recording (PMR) writer with one or more spin flipping elements in the gap
US11005029B2 (en) 2018-09-28 2021-05-11 Samsung Electronics Co., Ltd. Spin transfer torque switching of a magnetic layer with volume uniaxial magnetic crystalline anistotropy
US11546000B2 (en) * 2020-05-04 2023-01-03 Samsung Electronics Co., Ltd. Mobile data storage

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110111108A (ko) * 2010-04-02 2011-10-10 삼성전자주식회사 반도체 장치 및 이의 복호 방법
US20170163287A1 (en) * 2012-11-08 2017-06-08 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US20150113311A1 (en) * 2013-10-18 2015-04-23 Sony Corporation Storage control apparatus, storage apparatus, information processing system, and storage control method therefor
US20190393901A1 (en) * 2018-06-21 2019-12-26 Western Digital Technologies, Inc. Memory device with adaptive descrambling
US20200099402A1 (en) * 2018-09-20 2020-03-26 Western Digital Technologies, Inc. Data driven icad graph generation
US20200099404A1 (en) * 2018-09-20 2020-03-26 Western Digital Technologies, Inc. Content aware decoding method and system
US20200350930A1 (en) * 2018-09-20 2020-11-05 Western Digital Technologies, Inc. Content aware decoding method and system
KR20200091798A (ko) * 2019-01-22 2020-07-31 웨스턴 디지털 테크놀로지스, 인코포레이티드 에러 정정이 향상된 메모리 디바이스

Also Published As

Publication number Publication date
US20220149870A1 (en) 2022-05-12
KR102479236B1 (ko) 2022-12-19
JP7186262B2 (ja) 2022-12-08
US11528038B2 (en) 2022-12-13
JP2022075487A (ja) 2022-05-18

Similar Documents

Publication Publication Date Title
US11817883B2 (en) Variable length ECC code according to value length in NVMe key value pair devices
US10186302B2 (en) Semiconductor systems performing double-write operations and methods of operating the same
KR102479236B1 (ko) 공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩
US11569844B2 (en) Optimizations for variable sector size in storage device namespaces
US11537510B2 (en) Storage devices having minimum write sizes of data
US11177012B1 (en) Fast copy through controller
KR20220033975A (ko) CbA 기술을 사용한 재배치 흐름
US20190356331A1 (en) Error correction code unit and error correction method
US11687405B2 (en) Centralized SRAM error location detection and recovery mechanism
US11557350B2 (en) Dynamic read threshold calibration
US11294598B2 (en) Storage devices having minimum write sizes of data
US11704027B2 (en) Optimizing recovery of recurrent blocks using bloom filter
US11755407B2 (en) Multi-rate ECC parity for fast SLC read
US11853160B2 (en) Variable length ECC code according to data entropy in NVMe key value pair devices
US11733876B2 (en) Content aware decoding in KV devices
US11487611B2 (en) LDPC encoding for memory cells with arbitrary number of levels
US11853607B2 (en) Optimizing flash memory utilization for NVMe KV pair storage
US11662941B2 (en) System and method for mitigating effect of erase cells on adjacent cells
US11537292B2 (en) Methods and apparatus for enhancing uber rate for storage devices
US20240143337A1 (en) Data Storage With Optimized Boot Files Loading
US11704190B2 (en) UECC failure handling method
US11531499B2 (en) Data storage that controls decode performance by changing program PLC
US20230342244A1 (en) Read Look Ahead Optimization According To NVMe Dataset Management Hints
US20220121640A1 (en) Emulation of relational data table relationships using a schema
CN113468082A (zh) 用于ssd的总线多路复用器网格的高级ce编码

Legal Events

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