KR20230075334A - 키-값 데이터 저장 디바이스를 위한 ecc 패리티 바이어싱 - Google Patents

키-값 데이터 저장 디바이스를 위한 ecc 패리티 바이어싱 Download PDF

Info

Publication number
KR20230075334A
KR20230075334A KR1020220062758A KR20220062758A KR20230075334A KR 20230075334 A KR20230075334 A KR 20230075334A KR 1020220062758 A KR1020220062758 A KR 1020220062758A KR 20220062758 A KR20220062758 A KR 20220062758A KR 20230075334 A KR20230075334 A KR 20230075334A
Authority
KR
South Korea
Prior art keywords
memory
sub
tiles
parity
database
Prior art date
Application number
KR1020220062758A
Other languages
English (en)
Inventor
자미르 란
아브라함 데이비드
바잘스키 알렉산더
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20230075334A publication Critical patent/KR20230075334A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

키-값 데이터 저장 디바이스들을 위한 오류 정정 코드(error correction code, ECC) 코딩. 일 실시예에서, 제어기는 메모리와 인터페이싱(interfacing)하도록 구성된 메모리 인터페이스; 메모리에 저장된 데이터에 대해 ECC 코딩을 수행하도록 구성된 ECC 엔진; 플래시 변환 계층 및 네임스페이스 데이터베이스를 포함하는 제어기 메모리; 및 전자 프로세서를 포함한다. 전자 프로세서는 저장될 데이터를 수신하고, 데이터를 복수의 서브 코드 블록들로 분리하며, 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 패리티 비트들을 할당하도록 구성된다.

Description

키-값 데이터 저장 디바이스를 위한 ecc 패리티 바이어싱{ECC PARITY BIASING FOR KEY-VALUE DATA STORAGE DEVICES}
본 출원은 일반적으로 데이터 저장 디바이스들에 관한 것으로, 보다 상세하게는 데이터 저장 디바이스들에서의 오류 정정 코드(error correction code, ECC) 코딩에 관한 것이다.
키-값(Key-Value, KV) 데이터베이스는 어드레싱가능한 키와 연관된 일정량의 사용자 데이터를 완전한 엔티티로서 저장한다. 예를 들어, 사용자 데이터는 포토, 레코드, 또는 파일일 수 있다. 호스트 관점에서, 포토 또는 파일은 포토를 구성하는 데이터를 포함하는 다수의 판독 어드레스들보다는 단일 키/판독 어드레스를 사용하여 리트리빙(retrieving)될 수 있다. 단일 키/판독 어드레스의 사용은 특정 애플리케이션들에 대한 데이터베이스 관리를 단순화하며, 이는 이들 애플리케이션들의 성능 증가를 가져온다.
본 개시의 기술들은 상술한 KV 데이터베이스의 동작을 개선한다. 구체적으로, 본 개시의 KV 데이터 저장 디바이스는 각각의 값이 전부 그리고 순서대로 기록되는, 그리고 각각의 값이 전부, 또는 일부 지점까지 판독되어야 하지만, 인덱스로부터 판독되지 않아야 하는 KV 데이터베이스의 고유한 구조를 이용한다. 아래에서 더 상세히 설명되는 바와 같이, 본 개시의 KV 데이터 저장 디바이스는 이러한 고유한 구조를 이용하여 KV 데이터 저장 디바이스의 더 양호한 성능, 감소된 레이턴시, 감소된 전력 소비, 및 더 양호한 정정 능력, 신뢰성, 및 내구성을 제공한다.
저장 디바이스 수준에서 KV 데이터베이스를 지원하는 것의 첫 번째 이점은 초당 전달 측면에서 성능이 증가한다는 것이다. 이러한 이점은 두 가지 이유로 일어난다: 1) 호스트에서의 키/값으로부터 블록 저장소로의 변환 계층이 제거될 수 있거나 필요하지 않게 만들어지고, 2) 변환 계층의 제거는 맵핑 및 트랜잭션 정보의 두 계층을 제거하며, 이는 초당 트랜잭션의 양을 증가시키고, 기록 증폭을 감소시키며, 버스를 통한 커맨드들이 전체 키 값 쌍에 대한 단일 전달로 감소되기 때문에 레이턴시를 감소시킨다.
본 개시의 KV 데이터 저장 디바이스의 두 번째 이점은 컴퓨트 저장(근거리 저장 컴퓨트)의 단순화와 활성화이다. KV 데이터 저장 디바이스 상의 사용자 데이터는 이제 정상적인 저장 동작에서 인접할 수도 인접하지 않을 수도 있는 다양한 조각들과는 대조적으로 완전한 유닛으로서 식별가능하다.
본 개시는 일 실시예에서, 메모리 인터페이스, 오류 정정 코드(ECC) 엔진, 제어기 메모리, 및 ECC 엔진 및 제어기 메모리에 통신가능하게 연결된 전자 프로세서를 포함하는 데이터 저장 제어기를 제공한다. 메모리 인터페이스는 메모리와 인터페이싱하도록 구성된다. 오류 정정 코드(ECC) 엔진은 메모리에 저장된 데이터에 대해 ECC 코딩을 수행하도록 구성된다. 제어기 메모리는 플래시 변환 계층(flash translation layer, FTL) 및 네임스페이스 데이터베이스를 포함한다. 전자 프로세서는 FTL을 실행할 때, 저장될 데이터를 수신하고, 데이터를 복수의 서브 코드 블록들로 분리하며, 각각의 서브 코드 블록에 ECC 엔진에 의해 생성되는 패리티 비트들을 할당하도록 구성된다.
본 개시는 또한 방법을 제공한다. 일 실시예에서, 방법은, 데이터 저장 제어기의 전자 프로세서를 이용하여, 키-값(KV) 데이터베이스에 저장될 데이터를 수신하는 단계, 데이터를 복수의 서브 코드 블록들로 분리하는 단계, 및 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 패리티 비트들을 할당하는 단계를 포함한다.
본 개시는 또한, 데이터를 키 값 네임스페이스에 저장하는 것을 지원하는 메모리 디바이스를 제공한다. 메모리 디바이스는 메모리 및 제어기를 포함한다. 메모리는 키-값(KV) 데이터베이스를 포함한다. 제어기는 KV 데이터베이스에 사용자 데이터를 기록할 때 사용자 데이터에 패리티를 할당하는 제1 ECC 코딩 프로세스를 수행하도록 구성된다.
이러한 방식으로, 본 개시의 다양한 양태들은 적어도 데이터 저장 디바이스들의 기술분야 및 이의 설계 및 아키텍처의 개선을 제공한다. 본 개시는 펌웨어에 의해 제어되는 하드웨어 또는 회로들(즉, 프로세서 상에서 실행되는 코드), 및 컴퓨터 시스템들 및 네트워크들; 뿐만 아니라 하드웨어 구현 방법들, 신호 처리 회로들, 메모리 어레이들, 응용 특정 집적 회로들, 필드 프로그래밍 가능 게이트 어레이들 등을 포함하는 다양한 형태들로 구현될 수 있다. 위의 발명의 내용은 단지 본 개시의 다양한 양태들의 일반적인 개념을 제공하도록 의도되며, 어떠한 방식으로든 본 개시의 범주를 제한하지 않는다.
도 1은 본 개시의 일부 실시예들에 따른, ECC 코딩/디코딩을 이용하는 데이터 저장 디바이스를 포함하는 시스템의 블록도이다.
도 2는 본 개시의 일부 실시예들에 따른, 상이한 길이들의 예시적인 LDPC 코드들의 정정 능력을 도시한 그래프이다.
도 3은 본 개시의 일부 실시예들에 따른, 비대칭 패리티 할당을 이용하는 코드 워드를 도시한 도해이다.
도 4는 본 개시의 일부 실시예들에 따른, 비대칭 패리티 할당 프로세스를 도시한 흐름도이다.
도 5는 본 개시의 일부 실시예들에 따른, 공간적으로 결합된 LDPC 구조를 이용하는 예시적인 패리티 검사 행렬을 도시한 도해이다.
도 6은 본 개시의 일부 실시예들에 따른, 또 다른 비대칭 패리티 할당 프로세스를 도시한 흐름도이다.
도 7은 본 개시의 일부 실시예들에 따른, 대안적인 예시적인 공간적으로 결합된 LDPC 구조를 도시한 도해이다.
도 8은 본 개시의 일부 실시예들에 따른, 또 다른 비대칭 패리티 할당 프로세스를 도시한 흐름도이다.
다음의 설명에서, 본 발명의 하나 이상의 양태의 이해를 제공하기 위해, 데이터 저장 디바이스 구성들, 제어기 동작들 등과 같은 다수의 상세 사항들이 기재된다. 이들 특정 상세 사항들은 단지 예시적이며 본 출원의 범주를 제한하고자 의도하는 것이 아님이 당업자에게 용이하게 명백할 것이다. 특히, 메모리 디바이스와 연관된 기능들은 하드웨어(예를 들어, 아날로그 또는 디지털 회로들), 하드웨어와 소프트웨어의 조합(예를 들어, 프로세싱 또는 제어 회로부에 의해 실행되는, 비일시적 컴퓨터 판독가능 매체에 저장된 프로그램 코드 또는 펌웨어), 또는 임의의 다른 적합한 수단에 의해 수행될 수 있다. 다음의 설명은 단지 본 개시의 다양한 양태들의 일반적인 개념을 제공하도록 의도되며, 어떠한 방식으로든 본 개시의 범주를 제한하지 않는다.
도 1은 본 개시의 일부 실시예들에 따른, ECC 코딩/디코딩을 이용하는 데이터 저장 디바이스(102)를 포함하는 시스템(100)의 블록도이다. 도 1의 예에서, 시스템(100)은 데이터 저장 디바이스(102) 및 호스트 디바이스(150)("외부 전자 디바이스"라고도 지칭됨)를 포함한다. 데이터 저장 디바이스(102)는 제어기(120) 및 제어기(120)에 결합된 메모리(104)(예컨대, 비휘발성 메모리)를 포함한다.
제어기(120)에 의해 제공되는 구조적 및 기능적 특징부들의 일 예가 도 1에 도시되어 있다. 그러나, 제어기(120)는 도 1의 제어기(120)에 의해 제공되는 구조적 및 기능적 특징부들로 제한되지 않는다. 제어기(120)는 도 1에 도시되지 않은 더 적거나 추가적인 구조적 및 기능적 특징부들을 포함할 수 있다.
데이터 저장 디바이스(102) 및 호스트 디바이스(150)는 버스 또는 무선 연결부와 같은 연결부(예를 들어, 통신 경로(110))와 동작가능하게 결합될 수 있다. 일부 예들에서, 데이터 저장 디바이스(102)는 호스트 디바이스(150) 내에 내장될 수 있다. 대안적으로, 다른 예들에서, 데이터 저장 디바이스(102)는 호스트 디바이스(150)로부터 제거가능할 수 있다(즉, 호스트 디바이스(150)에 "제거가능하게" 결합될 수 있다). 예로서, 데이터 저장 디바이스(102)는 제거가능한 범용 직렬 버스(USB) 구성에 따라 호스트 디바이스(150)에 제거가능하게 결합될 수 있다. 일부 구현예들에서, 데이터 저장 디바이스(102)는 내장형 저장 드라이브(예컨대, 모바일 내장형 저장 드라이브), 기업 저장 드라이브(ESD), 클라이언트 저장 디바이스, 또는 클라우드 저장 드라이브, 또는 다른 적합한 저장 드라이브들로서 사용될 수 있는 고체 상태 드라이브(SSD)를 포함하거나 그에 대응할 수 있다.
데이터 저장 디바이스(102)는 유선 통신 경로 및/또는 무선 통신 경로와 같은 통신 경로(110)를 이용하여 호스트 디바이스(150)에 결합되도록 구성될 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 이를테면 인터페이스(108)가 호스트 디바이스(150)에 통신가능하게 결합될 때, 데이터 저장 디바이스(102)와 호스트 디바이스(150) 사이의 통신 경로(110)와의 통신을 가능하게 하는 인터페이스(108)(예를 들어, 호스트 인터페이스)를 포함할 수 있다.
호스트 디바이스(150)는 전자 프로세서 및 메모리를 포함할 수 있다. 메모리는 전자 프로세서에 의해 실행가능할 수 있는 데이터 및/또는 명령어들을 저장하도록 구성될 수 있다. 메모리는 단일 메모리일 수 있거나, 하나 이상의 비휘발성 메모리, 하나 이상의 휘발성 메모리, 또는 이들의 조합과 같은 하나 이상의 메모리를 포함할 수 있다. 호스트 디바이스(150)는 데이터 저장 디바이스(102)의 메모리(104)에서 데이터를 소거하거나, 메모리(104)로부터 데이터를 판독하거나, 메모리(104)에 데이터를 기록하기 위한 하나 이상의 요청(134)과 같은 하나 이상의 커맨드를 데이터 저장 디바이스(102)에 발행할 수 있다. 예를 들어, 하나 이상의 요청(134)은 사용자 데이터(132) - 여기서 사용자 데이터(132)는 전체 포토, 전체 레코드, 또는 전체 파일임 - 와 연관된 키-값(KV) 또는 판독 어드레스를 포함할 수 있다. 또한, 호스트 디바이스(150)는 메모리(104)에 저장될 사용자 데이터(132)와 같은 데이터를 제공하거나 메모리(104)로부터 판독될 데이터를 요청하도록 구성될 수 있다. 호스트 디바이스(150)는 모바일 스마트폰, 음악 플레이어, 비디오 플레이어, 게임 콘솔, 전자 책 판독기, 개인 휴대 정보 단말기(PDA), 컴퓨터, 예를 들어 랩톱 컴퓨터 또는 노트북 컴퓨터, 이들의 임의의 조합, 또는 다른 적합한 전자 디바이스와 같은 컴퓨터를 포함할 수 있다.
호스트 디바이스(150)는 메모리(104)로부터 판독하고 메모리(104)에 기록하는 것을 가능하게 하는 메모리 인터페이스와 통신한다. 일부 예들에서, 호스트 디바이스(150)는 범용 플래시 스토리지(UFS) 호스트 제어기 인터페이스 규격과 같은 산업 규격에 따라 동작할 수 있다. 다른 예들에서, 호스트 디바이스(150)는 보안 디지털(SD) 호스트 제어기 규격 또는 다른 적합한 산업 규격과 같은 하나 이상의 다른 규격에 따라 동작할 수 있다. 호스트 디바이스(150)는 또한 임의의 다른 적합한 통신 프로토콜에 따라 메모리(104)와 통신할 수 있다.
데이터 저장 디바이스(102)의 메모리(104)는 비휘발성 메모리(예를 들어, NAND, BiCS 메모리 제품군, 또는 다른 적합한 메모리)를 포함할 수 있다. 일부 예들에서, 메모리(104)는 임의의 타입의 플래시 메모리일 수 있다. 예를 들어, 메모리(104)는 2차원(2D) 메모리 또는 3차원(3D) 플래시 메모리일 수 있다. 메모리(104)는 하나 이상의 메모리 다이(103)를 포함할 수 있다. 하나 이상의 메모리 다이(103) 각각은 하나 이상의 블록(예를 들어, 하나 이상의 소거 블록)을 포함할 수 있다. 각각의 블록은 저장 요소들(107A 내지 107N)의 대표 그룹과 같은, 저장 요소들의 하나 이상의 그룹을 포함할 수 있다. 저장 요소들(107A 내지 107N)의 그룹은 워드라인으로서 구성될 수 있다. 저장 요소들(107A 내지 107N)의 그룹은 다수의 저장 요소들(예컨대, 본 명세서에서 "스트링"으로 지칭되는 메모리 셀들), 예컨대 대표 저장 요소들(109A, 109N)을 각각 포함할 수 있다.
메모리(104)는 하나 이상의 메모리 다이(103)의 동작을 지원하기 위해 판독/기록 회로부(140)와 같은 지원 회로부를 포함할 수 있다. 단일 컴포넌트로 도시되지만, 판독/기록 회로부(140)는 판독 회로부 및 기록 회로부와 같은 메모리(104)의 별개의 컴포넌트들로 분할될 수 있다. 판독/기록 회로부(140)는 메모리(104)의 하나 이상의 메모리 다이(103)의 외부에 있을 수 있다. 대안적으로, 하나 이상의 개별 메모리 다이는, 다른 메모리 다이들 중 임의의 메모리 다이에서의 임의의 다른 판독 및/또는 기록 동작들과는 독립적으로 개별 메모리 다이 내의 저장 요소들로부터 판독하고/하거나 그에 기록하도록 동작가능한, 대응하는 판독/기록 회로부를 포함할 수 있다.
데이터 저장 디바이스(102)는 버스(106) 및 메모리 인터페이스(122)(예를 들어, 인터페이스 회로부), 또 다른 구조체, 또는 이들의 조합을 이용하여 메모리(104)(예를 들어, 하나 이상의 메모리 다이(103))에 결합된 제어기(120)를 포함한다. 예를 들어, 버스(106)는 제어기(120)가, 다른 메모리 다이들(103)과의 통신과 병렬로 그리고 독립적으로, 하나 이상의 메모리 다이(103) 각각과 통신할 수 있게 하기 위해 다수의 개별의 채널들을 포함할 수 있다. 일부 구현예들에서, 메모리(104)는 플래시 메모리일 수 있다.
제어기(120)는 메모리 인터페이스(122)를 이용하여 호스트 디바이스(150)로부터 데이터 및 명령어들을 수신하고 호스트 디바이스(150)로 데이터를 송신하도록 구성된다. 예를 들어, 제어기(120)는 인터페이스(108)를 이용하여 호스트 디바이스(150)로 데이터를 송신할 수 있고, 제어기(120)는 인터페이스(108)를 이용하여 호스트 디바이스(150)로부터 데이터를 수신할 수 있다.
제어기(120)는 메모리 인터페이스(122)를 이용하여 데이터 및 커맨드들(예를 들어, 메모리 동작(136))을 메모리(104)에 송신하도록 구성된다. 예를 들어, 제어기(120)는 메모리 인터페이스(122)를 이용하여 메모리(104)로 하여금 데이터를 메모리(104)의 특정된 어드레스에 저장하게 하도록 데이터 및 기록 커맨드를 송신하도록 구성된다. 기록 커맨드는 데이터를 저장할 메모리(104)의 일부분의 물리적 어드레스(예를 들어, 메모리(104)의 워드라인의 물리적 어드레스)를 특정할 수 있다.
제어기(120)는 메모리 인터페이스(122)를 이용하여 메모리(104)의 특정된 어드레스로부터의 데이터에 액세스하기 위해 판독 커맨드를 메모리(104)로 송신하도록 구성된다. 판독 커맨드는 메모리(104)의 영역의 물리적 어드레스(예를 들어, 메모리(104)의 워드라인의 물리적 어드레스)를 특정할 수 있다. 제어기(120)는 또한, 메모리 인터페이스(122)를 이용하여 백그라운드 스캐닝 동작들, 가비지 수집(garbage collection) 동작들, 및/또는 웨어-레벨링 동작들, 또는 다른 적합한 메모리 동작들과 연관된 데이터 및 커맨드들을 메모리(104)로 송신하도록 구성될 수 있다.
제어기(120)는 메모리(124), 오류 정정 코드(ECC) 엔진(126), 및 프로세서(128)를 포함할 수 있다. 메모리(124)는 프로세서(128)에 의해 실행가능할 수 있는 데이터 및/또는 명령어들을 저장하도록 구성될 수 있다. 메모리(124)는 플래시 변환 계층(160) 및 네임스페이스 데이터베이스(162)를 포함할 수 있다. 플래시 변환 계층(160)은 프로세서(128)에 의해 실행가능한 하드웨어 회로 또는 명령어들일 수 있다. 플래시 변환 계층(160)은 프로세서(128)로 하여금 메모리(104)의 상이한 물리적 영역들과 연관된 네임스페이스 데이터베이스(162)에 네임스페이스들(즉, 키-값(KV) 네임스페이스들 및 블록 IO 네임스페이스들)을 셋업하게 할 수 있다. 일부 예들에서, 호스트 디바이스(150)는 프로세서(128)로 하여금 KV 네임스페이스들 및 블록 IO 네임스페이스들을 포함하는 네임스페이스들을 셋업하게 하기 위한 커맨드를 요청(134)에 포함시킨다. 다른 예들에서, 플래시 변환 계층(160)은 호스트 디바이스(150)로부터의 요청(134)에서 키들을 수신하는 것에 응답하여, 프로세서(128)로 하여금 KV 네임스페이스들 및 블록 IO 네임스페이스들을 포함하는 네임스페이스들을 셋업하게 할 수 있다.
KV 네임스페이스들은 데이터 저장 디바이스(102)에서의 KV 데이터베이스를 나타내고, 각각의 KV 네임스페이스는 복수의 어드레스들에 걸친 데이터의 양과 연관된 키를 포함하고, 이 키에 따라 데이터가 인덱싱된다. 일부 예들에서, 각각의 KV 네임스페이스는 또한, 다수의 키 값 쌍들을 포함할 수 있다. 각각의 블록 IO 네임스페이스는 논리 어드레스 범위를 포함하고, 호스트 디바이스(150)는 그 논리 어드레스 범위에서의 임의의 어드레스에 액세스할 수 있다.
플래시 변환 계층(160)은 또한, 요청(134) 및 사용자 데이터(132)의 크기 중 하나에 기초하여 KV 네임스페이스들 또는 블록 IO 네임스페이스들 중 하나를 선택하거나 생성할 수 있다. 예를 들어, 요청(134)이 키를 포함하고 사용자 데이터(132)의 크기가 임계치(예를 들어, 4KB) 이상일 때, 플래시 변환 계층(160)은 키와 연관된 KV 네임스페이스들 중 하나를 (키가 새로운 것일 때) 생성하거나 (키가 이전에 보여졌을 때) 선택한다. 대안적으로, 요청(134)이 키를 포함하고 사용자 데이터(132)의 크기가 임계치(예를 들어, 4KB) 미만일 때, 플래시 변환 계층(160)은 키 및 단일 어드레스와 연관된 블록 IO 네임스페이스들 중 하나를 (키가 새로운 것일 때) 생성하거나 (키가 이전에 보여졌을 때) 선택한다. 나아가, 요청(134)이 단일 어드레스를 포함할 때, 플래시 변환 계층(160)은 어드레스와 연관된 블록 IO 네임스페이스들 중 하나를 (어드레스가 새로운 것일 때) 생성하거나 (어드레스가 이전에 보여졌을 때) 선택한다. 다른 예들에서, 요청(134)은 또한, 사용자 데이터(132)가 블록 IO 네임스페이스 또는 KV 네임스페이스에 저장될 것을 요청한다.
KV 네임스페이스들 또는 블록 IO 네임스페이스들 중 하나를 생성하거나 선택 시, 플래시 변환 계층(160)은 선택된 네임스페이스 및 사용자 데이터(132)에 기초하여, 그리고 메모리 인터페이스(122) 및 메모리 동작(136)으로 ECC 코딩/디코딩을 수행하도록 ECC 엔진(126)을 제어할 수 있다. 일부 예들에서, ECC 엔진(126)은 키-값(KV) 네임스페이스의 선택에 기초하여 메모리 동작(136)으로 비대칭 ECC 코딩/디코딩 - 본 명세서에서 "비대칭 ECC 코딩/디코딩"으로서 지칭되고 도 3 내지 도 8과 관련하여 아래에서 더 상세히 설명됨 - 을 수행할 수 있다. 또한, 이러한 예들에서, ECC 엔진(126)은 또한, KV 네임스페이스의 선택에 기초하여 메모리 동작(136)으로 공간적으로 결합된 저밀도 패리티 체크(Spatially-Coupled Low Density Parity Check, SC-LDPC) 코드를 사용하여 ECC 코딩/디코딩 - 본 명세서에서 "SC-LDPC 비대칭 ECC 코딩/디코딩"으로서 지칭되고 도 5 내지 도 8과 관련하여 아래에서 더 상세히 설명됨 - 을 수행할 수 있다. 나아가, 일부 예들에서, 메모리(124)에 저장된 임의의 애플리케이션과 분리되고 별개인 애플리케이션 또는 회로부가 본 명세서에서 설명되는 바와 같이 비대칭 ECC 코딩/디코딩 또는 SC-LDPC 비대칭 ECC 코딩/디코딩을 수행하도록 ECC 엔진(126)을 제어할 수 있다.
데이터 저장 디바이스(102)에서의 KV 데이터베이스의 리트리브 커맨드는 값들이 시작으로부터 그리고 어느 지점까지 전부 판독되고, 인덱스에 기초하여 판독되지 않을 것을 요구한다. 본 명세서에서 설명되는 방법들은 KV 데이터베이스 리트리브 커맨드의 고유 구조를 사용하여 데이터 저장 디바이스(102)의 보다 더 양호한 성능, 레이턴시, 전력 소비, 및 보정 능력을 제공한다.
ECC가 길수록 성능이 양호하고 짧은 ECC보다 디코딩 실패가 적다. 예를 들어, 도 2는 X4 메모리 다이들에 대한 다양한 ECC 길이들의 예를 도시한 그래프(200)이다. 그래프(200)의 y축(202)은 범례(206)에 의해 정의된 각각의 코드 길이의 블록 오류율(Block Error Rate, BLER)을 제공한다. 그래프(200)의 x축(204)은 범례(206)에 의해 정의된 각각의 코드 길이의 비트 오류율(Bit Error Rate, BER)을 제공한다. 보다시피, 더 긴 ECC는 더 짧은 ECC보다 더 큰 정정 능력을 갖는다.
도 3은 코드 블록(300)의 서브 코드들 사이에 코드 패리티를 비대칭적으로 할당하는 예를 제공한다. 서브 코드 구조는 예를 들어, 데이터의 더 작은 섹션들이 (예를 들어, 다른 서브 코드들의 데이터 없이) 이들을 국부적으로 디코딩하는 데 사용될 수 있는 국부적 패리티 비트들을 갖는 코드 구조이다. 또한, 보다 더 양호한 정정 능력을 위해 서브 코드들이 또한 더 긴 코드로서 공동으로 디코딩될 수 있도록 여러 서브 코드들을 함께 연결하는 공동 패리티 비트들이 있을 수 있다. 코드 블록(300)은 (이를테면, 제1 서브 코드(302A), 제2 서브 코드(302B), 마지막 서브 코드(302N)까지에 이르는) 복수의 서브 코드들(302)을 포함한다. 코드 블록(300)은 임의의 수의 서브 코드들(302)을 가질 수 있다. 각각의 서브 코드는 데이터 블록(304) 및 패리티 블록(306)을 포함한다. 예를 들어, 제1 서브 코드(302A)는 제1 데이터 블록(304A) 및 제1 패리티 블록(306A)을 갖고, 제2 서브 코드(302B)는 제2 데이터 블록(304B) 및 제2 패리티 블록(306B)을 가지며, 마지막 서브 코드(302N)는 마지막 데이터 블록(304N) 및 마지막 패리티 블록(306N)을 갖는다. 또한, 코드 블록(300)은 마지막 패리티 블록(306N)에 후속하는 전역적 패리티 블록(308)을 포함한다.
일부 예들에서, 패리티는 각각의 서브 코드 간에 균일하게 분산된다. 예를 들어, 제1 서브 코드(302A), 제2 서브 코드(302B), 및 마지막 서브 코드(302N)에는 각각 동일한 양의 패리티가 할당된다. 다른 예들에서, 제2 서브 코드(302B) 및 마지막 서브 코드(302N)와 같은 나중에 오는 서브 코드들보다 제1 서브 코드(302A)와 같은 더 이전의 서브 코드들에 더 많은 패리티가 할당된다. 패리티 할당은 패리티가 각각의 서브 코드(302)에 할당됨에 따라 선형적으로 감소할 수 있다. 다른 예들에서, 패리티의 감소는 제1 패리티 블록(306A) 및 제2 패리티 블록(306B)이 동일한 수의 패리티 비트들(예를 들어, N 개의 패리티 비트들)을 갖고, 후속 패리티 블록들(306)이 더 적은 패리티 비트들(예를 들어, 0.75N개의 패리티 비트)을 갖도록 비선형일 수 있다. 이에 따라, 제1 패리티 블록(306A)은 제2 패리티 블록(306B)보다 크거나(즉, 보다 더 많은 패리티 비트를 포함함) 동일하고(즉, 동일한 수의 패리티 비트를 포함함), 제2 패러티 블록(306B)은 마지막 패리티 블록(306N)보다 크다. KV 데이터베이스에서의 코드들이 연속적으로 판독됨에 따라, (제1 서브 코드(302A)와 같은) 시작에서 서브 코드들(302)은 독자적으로 판독될 수 있고, 이에 따라 후속 서브 코드들(302) 없이 디코딩되어, 길이가 더 짧을 수 있다. 또한, 후속 서브 코드들은 항상 이전 코드들 이후에 판독되며, 이에 따라 이전 서브 코드들이 사용될 수 있고 더 긴 코드 길이를 갖는다. 이에 따라, 후속 서브 코드들은 동일한 정정량에 대해 패리티를 덜 필요로 한다. 이에 따라, 할당될 전체 패리티가 제한됨에 따라, 더 많은 패리티가 초기 서브 코드들(302)에 할당되어 이들의 정정성을 증가시킨다.
도 4는 본 개시의 다양한 양태들에 따른 비대칭 패리티 할당 프로세스(400)(즉, 비대칭 ECC 코딩/디코딩)를 도시한 흐름도이다. 도 4는 도 1의 제어기(120)와 관련하여 설명된다.
도 4에 도시된 바와 같이, 비대칭 패리티 할당 프로세스(400)는 메모리(104)에 저장될 데이터를 수신하는 제어기(120)를 포함한다(블록 402에서). 데이터는 예를 들어 사용자 데이터(132)일 수 있다. 비대칭 패리티 할당 프로세스(400)는 데이터를 서브 코드 블록들(302)과 같은 서브 코드 블록들로 분리하는 제어기(120)를 포함한다(블록 404에서).
비대칭 패리티 할당 프로세스(400)는 서브 코드 블록들 사이에 패리티 비트들을 비대칭적으로 삽입하는 제어기(120)를 포함한다. 예를 들어, 제1 패리티 블록(306A)이 제1 서브 코드(302A)에 부가되고(즉, 할당되고), 제2 패리티 블록(306B)이 제2 서브 코드(302B)에 부가되며, 마지막 패리티 블록(306N)이 마지막 서브 코드(302N)에 부가된다. 일부 예들에서, 전역적 패리티 블록(308)이 데이터에 추가된다.
비대칭 패리티 할당 프로세스(400)는 서브 코드 블록들을 메모리(104)에 기록하는 제어기(120)를 포함한다. 일부 예들에서, 제어기(120)는 서브 코드 블록들을 메모리(124)에 기록한다. 다른 예들에서, 제어기(120)는 서브 코드 블록들을 호스트 디바이스(150)의 메모리에 기록한다. 비대칭 패리티 할당 프로세스(400)는 서브 코드 블록들을 순차적인 순서(예를 들어, 연속적인 순서, 처음/마지막 순서, 또는 다른 순차적인 순서)로 디코딩하는 제어기(120)를 포함한다. 일부 예들에서, 단지 제1 데이터 블록(304A) 및 제1 패리티 블록(306A)을 포함하는 제1 서브 코드(302A)만이 제어기(120)에 의해 디코딩된다. 다른 예들에서, 제1 서브 코드(302A)와, 제2 데이터 블록(304B) 및 제2 패리티 블록(306B)을 포함하는 제2 서브 코드(302B) 양자가 디코딩된다. 일부 예들에서, 전체 코드 블록(300)이 디코딩된다.
비대칭 패리티 할당은 또한, SC-LDPC 코드를 사용하여 구현될 수 있다. SC-LDPC 코드는 타일들로 구성된다. 도 5는 본 개시의 다양한 양태들에 따른, 예시적인 SC-LDPC 패리티 검사 행렬 구조(500)를 제공한다. SC-LDPC 패리티 검사 행렬 구조(500)는 제1 타일(502A), 제2 타일(502B), 제3 타일(502C), 제4 타일(502D), 및 제5 타일(502E)과 같은 복수의 타일들(502)을 포함한다. 패리티는 각각의 타일(502)에 불균일하게 할당된다. 구체적으로, 시작에서 타일들에 보다 더 많은 패리티(예를 들어, 패리티 검사 행렬에서의 더 많은 행들)가 할당되고, SC-LDPC 패리티 검사 행렬 구조(500)의 끝으로 갈수록 타일들에 더 적은 패리티가 할당된다. 예를 들어, 제1 타일(502A)은 최대 패리티를 수신하고, 제5 타일(502E)은 최소 패리티를 수신한다.
도 6은 본 개시의 다양한 양태들에 따른 비대칭 패리티 할당 프로세스(600)(즉, SC-LDPC 비대칭 ECC 코딩/디코딩)를 도시한 흐름도이다. 도 6은 도 1의 제어기(120)와 관련하여 설명된다.
도 6에 도시된 바와 같이, 비대칭 패리티 할당 프로세스(600)는 메모리(104)에 저장될 데이터를 수신하는 제어기(120)를 포함한다(블록 602에서). 데이터는 예를 들어 사용자 데이터(132)일 수 있다. 비대칭 패리티 할당 프로세스는 데이터를 복수의 타일들(502)과 같은 공간 타일들로 분리하는 제어기(120)를 포함한다(블록 604에서).
비대칭 패리티 할당 프로세스(600)는 복수의 공간 타일들(502) 각각에 패리티 비트들을 비대칭적으로 할당하는 제어기(120)를 포함한다(블록 606에서). 비대칭 패리티 할당 프로세스(600)는 복수의 공간 타일들(502)을 메모리(104)에 기록하는 제어기(120)를 포함한다(블록 608에서). 일부 예들에서, 복수의 공간 타일들(502) 각각은 메모리(104)에 순차적인 순서(예를 들어, 연속적인 순서, 처음/마지막 순서, 또는 다른 순차적인 순서)로 기입된다. 예를 들어, 처음에 제1 타일(502A)이 메모리(104)에 기록되고, 두 번째로 제2 타일(502B)이 메모리(104)에 기록되는 등이다. 일부 예들에서, 제어기(120)는 복수의 공간 타일들(502)을 메모리(124)에 기록한다. 다른 예들에서, 제어기(120)는 복수의 공간 타일들(502)을 호스트 디바이스(150)의 메모리에 기록한다. 비대칭 패리티 할당 프로세스(600)는 복수의 공간 타일들(502)을 순차적인 순서로 디코딩하는 제어기(120)를 포함한다(블록 610에서). 일부 예들에서, 타일들은 슬라이딩 윈도우 프로세스에서 디코딩된다.
도 7은 본 개시의 다양한 양태들에 따른, 또 다른 예시적인 SC-LDPC 패리티 검사 행렬 구조(700)를 도시한다. SC-LDPC 패리티 검사 행렬 구조(700)는 제1 타일(702A), 제2 타일(702B), 제3 타일(702C), 및 제4 타일(702D)과 같은 복수의 타일들(702)을 포함한다. 패리티는 각각의 타일(702)에 불균일하게 할당된다. SC-LDPC 코드에서의 처음과 마지막 타일들이 본질적으로 더 많은 패리티를 갖고, 처음에 메모리(104)에 저장될 수 있다. 도 7의 예에서, 제1 타일(702A) 및 제4 타일(702D)은 제2 타일(702B) 및 제3 타일(702C)보다 더 많은 패리티를 포함한다. 제1 타일(702A) 및 제4 타일(702D)이 더 많은 패리티를 포함함에 따라, 처음에 이들이 메모리(104)에 기록된다.
도 8은 본 개시의 다양한 양태들에 따른 비대칭 패리티 할당 프로세스(800)를 도시한 흐름도이다. 도 8은 도 1의 제어기(120)와 관련하여 설명된다.
도 8에 도시된 바와 같이, 비대칭 패리티 할당 프로세스(800)는 메모리(104)에 저장될 데이터를 수신하는 제어기(120)를 포함한다(블록 802에서). 데이터는 예를 들어 사용자 데이터(132)일 수 있다. 비대칭 패리티 할당 프로세스는 데이터를 복수의 타일들(702)과 같은 공간 타일들로 분리하는 제어기(120)를 포함한다(블록 804에서).
비대칭 패리티 할당 프로세스(800)는 복수의 공간 타일들(702) 각각에 패리티 비트들을 비대칭적으로 할당하는 제어기(120)를 포함한다(블록 806에서). 비대칭 패리티 할당 프로세스(800)는 처음 공간 타일(즉, 제1 타일(702A))을 메모리(104)에 기록하는 제어기(120)를 포함한다(블록 808에서). 비대칭 패리티 할당 프로세스(800)는 마지막 공간 타일(즉, 제4 타일(702D))을 메모리(104)에 기록하는 제어기(120)를 포함한다(블록 810에서). 전술한 바와 같이, SC-LDPC 패리티 검사 행렬 구조(500, 700)에서의 처음과 마지막 공간 타일들은 본질적으로 더 많은 패리티를 갖는다. 제1 공간 타일 직후에 마지막 공간 타일을 저장함으로써, 저장된 메모리 블록의 시작에서 더 많은 패리티가 할당된다.
비대칭 패리티 할당 프로세스(800)는 나머지 공간 타일들(702)을 메모리(104)에 기록하는 제어기(120)를 포함한다(블록 812에서). 일부 예들에서, 제어기(120)는 복수의 공간 타일들(702)을 메모리(124)에 기록한다. 다른 예들에서, 제어기(120)는 복수의 공간 타일들(702)을 호스트 디바이스(150)의 메모리에 기록한다. 일부 예들에서, 나머지 공간 타일들(702) 각각은 메모리(104)에 순차적인 순서(예를 들어, 연속적인 순서, 처음/마지막 순서, 또는 다른 순차적인 순서)로 기입된다. 예를 들어, 제4 타일(702D) 다음에, 제어기(120)는 제2 타일(702B)을 메모리(104)에 기록하며, 그 다음에 제3 타일(702C)을 기록한다. 비대칭 패리티 할당 프로세스(800)는복수의 공간 타일들(702)을 기록된 바와 같이 순차적인 순서로 메모리(104)에 디코딩하는 제어기(120)를 포함한다(블록 814에서). 일부 예들에서, 타일들은 슬라이딩 윈도우 프로세스에서 디코딩된다.
본 명세서에 기술된 프로세스들, 시스템들, 방법들, 휴리스틱들 등과 관련하여, 그러한 프로세스들의 단계들 등이 소정의 순서화된 순서에 따라 발생하는 것으로 기술되었지만, 이러한 프로세스들은 기술된 단계들이 본 명세서에 기술된 순서와 다른 순서로 수행되게 실행될 수 있음이 이해되어야 한다. 또한, 소정 단계들이 동시에 수행될 수 있거나, 다른 단계들이 추가될 수 있거나, 또는 본 명세서에 기술된 소정 단계들이 생략될 수 있다는 것이 이해되어야 한다. 다시 말해서, 본 명세서의 프로세스들의 설명들은 소정 실시예들을 설명하기 위한 목적으로 제공되며, 어떠한 방식으로든 청구범위를 제한하는 것으로 해석되어서는 안 된다.
따라서, 위의 설명은 예시적인 것이며 비제한적인 것으로 의도된다는 것이 이해될 것이다. 제공된 예들과는 다른 많은 실시예들 및 응용들이 상기 설명을 읽으면 명백해질 것이다. 범주는 상기 설명을 참조하지 않고 결정되어야 하지만, 대신에 이러한 청구범위의 권리를 갖는 등가물들의 전체 범주에 따라 첨부된 청구범위를 참조하여 결정되어야 한다. 본 명세서에 논의된 기술들에서 미래의 개발들이 이루어질 것이고, 개시된 시스템들 및 방법들이 그러한 미래의 실시예들에 포함될 것으로 예상되고 의도된다. 요약하면, 본 출원은 수정 및 변형이 가능하다는 것을 이해해야 한다.
청구범위에서 사용되는 모든 용어들은 본 명세서에 정반대에 대한 명백한 지시가 없는 한, 본 명세서에 기술된 기술들에서 알 수 있는 것에 의해 이해되는 바와 같은 가장 광범위한 합리적인 구성들 및 그들의 통상의 의미들을 제공하기 위한 것으로 의도된다. 특히, "a", "the", "상기" 등과 같은 단수형 관사들의 사용은, 청구항이 반대로 명시적인 제한을 기술하지 않는 한, 지시된 요소들 중 하나 이상을 인용하기 위한 것으로 해석되어야 한다.
요약은 독자가 신속하게 기술적 개시의 특성을 확인할 수 있도록 제공된다. 그것은 청구범위의 범주 또는 의미를 해석하거나 제한하는 데 사용되지 않을 것이라는 이해와 함께 제출된다. 또한, 위의 발명을 실시하기 위한 구체적인 내용에서, 다양한 특징부들이 본 개시를 간소화할 목적으로 다양한 실시예들에서 함께 그룹화된다는 것을 알 수 있다. 본 개시의 이러한 방법은 청구된 실시예들이 각각의 청구항에서 명백하게 인용되는 것보다 더 많은 특징부들을 필요로 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 다음의 청구범위가 반영함에 따라, 본 발명의 요지는 개시된 단일 실시예의 모든 특징부들보다 적은 특징에 있다.따라서, 다음의 청구범위는 이에 의해 발명을 실시하기 위한 구체적인 내용에 포함되며, 각각의 청구항은 개별적으로 청구된 요지로서 그 자체로 존재한다.

Claims (20)

  1. 데이터 저장 제어기로서,
    메모리와 인터페이싱(interfacing)하도록 구성된 메모리 인터페이스;
    상기 메모리에 저장된 데이터에 대해 오류 정정 코드(error correction code, ECC) 코딩을 수행하도록 구성된 ECC 엔진;
    플래시 변환 계층(flash translation layer, FTL) 및 네임스페이스 데이터베이스를 포함하는 제어기 메모리; 및
    상기 ECC 엔진 및 상기 제어기 메모리에 통신가능하게 연결된 전자 프로세서를 포함하며, 상기 전자 프로세서는 상기 FTL을 실행할 때:
    저장될 데이터를 수신하도록,
    상기 데이터를 복수의 서브 코드 블록들로 분리하도록, 그리고
    상기 ECC 엔진에 의해 생성된 패리티 비트들을 상기 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 할당하도록 구성되는, 데이터 저장 제어기.
  2. 제1항에 있어서, 상기 패리티 비트들은 상기 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 비대칭으로 할당되는, 데이터 저장 제어기.
  3. 제2항에 있어서, 상기 복수의 서브 코드 블록들 중 처음 서브 코드 블록이 상기 복수의 서브 코드 블록들 중 마지막 서브 코드 블록보다 더 많은 패리티 비트들을 수신하는, 데이터 저장 제어기.
  4. 제1항에 있어서, 상기 전자 프로세서는 상기 FTL을 실행할 때,
    상기 패리티 비트들을 상기 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 할당한 후, 상기 복수의 서브 코드 블록들을 상기 메모리에 기록하도록 추가로 구성되며, 상기 복수의 서브 코드 블록들은 순차적으로 기록되는, 데이터 저장 제어기.
  5. 제1항에 있어서, 상기 복수의 서브 코드 블록들은 공간적으로 결합된 저밀도 패리티 검사(Spatially-Coupled Low Density Parity Check, SC-LDPC) 구조체의 일부인 복수의 타일들인, 데이터 저장 제어기.
  6. 제5항에 있어서, 상기 전자 프로세서는 상기 FTL을 실행할 때,
    상기 패리티 비트들을 상기 복수의 타일들의 각각의 타일에 할당한 후, 상기 복수의 타일들 중 처음 타일을 상기 메모리에 기록하도록, 그리고
    상기 복수의 타일들 중 상기 처음 타일을 상기 메모리에 기록한 후, 상기 복수의 타일들 중 마지막 타일을 상기 메모리에 기록하도록 추가로 구성되는, 데이터 저장 제어기.
  7. 제5항에 있어서, 상기 전자 프로세서는 상기 FTL을 실행할 때,
    상기 패리티 비트들을 상기 복수의 타일들의 각각의 타일에 할당한 후, 상기 복수의 타일들을 상기 메모리에 기록하도록 추가로 구성되며, 상기 복수의 타일들은 메모리에 순차적으로 기록되는, 데이터 저장 제어기.
  8. 제7항에 있어서, 상기 전자 프로세서는 상기 FTL을 실행할 때,
    슬라이딩 윈도우 프로세스를 사용하여 상기 복수의 타일들이 상기 메모리에 기록되었던 순서로 상기 메모리로부터의 상기 복수의 타일들을 디코딩하도록 추가로 구성되는, 데이터 저장 제어기.
  9. 방법으로서,
    데이터 저장 제어기의 전자 프로세서를 이용하여, 키-값(key-value, KV) 데이터베이스에 저장될 데이터를 수신하는 단계;
    상기 데이터를 복수의 서브 코드 블록들로 분리하는 단계; 및
    패리티 비트들을 상기 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 할당하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 패리티 비트들은 상기 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 비대칭으로 할당되는, 방법.
  11. 제10항에 있어서, 상기 복수의 서브 코드 블록들 중 처음 서브 코드 블록이 상기 복수의 서브 코드 블록들 중 마지막 서브 코드 블록보다 더 많은 패리티 비트들을 수신하는, 방법.
  12. 제9항에 있어서,
    상기 패리티 비트들을 상기 복수의 서브 코드 블록들의 각각의 서브 코드 블록에 할당한 후, 상기 복수의 서브 코드 블록들을 상기 키-값(KV) 데이터베이스에 기록하는 단계를 추가로 포함하는, 방법.
  13. 제9항에 있어서, 상기 복수의 서브 코드 블록들은 공간적으로 결합된 저밀도 패리티 검사(SC-LDPC) 구조체의 일부인 복수의 타일들인, 방법.
  14. 제13항에 있어서, 상기 서브 코드 블록들을 상기 KV 데이터베이스에 기록하는 단계는:
    상기 복수의 타일들 중 처음 타일을 상기 KV 데이터베이스에 기록하는 단계, 및
    상기 복수의 타일들 중 상기 처음 타일을 상기 KV 데이터베이스에 기록한 후, 상기 복수의 타일들 중 마지막 타일을 상기 KV 데이터베이스에 기록하는 단계를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 복수의 타일들이 상기 KV 데이터베이스에 기록되었던 순서로 상기 KV 데이터베이스로부터의 상기 복수의 타일들을 디코딩하는 단계를 더 포함하며, 상기 복수의 타일들은 슬라이딩 윈도우 프로세스를 사용하여 디코딩되는, 방법.
  16. 키 값 네임스페이스에 데이터를 저장하는 것을 지원하는 메모리 디바이스로서,
    키-값(KV) 데이터베이스를 포함하는 메모리; 및
    상기 KV 데이터베이스에 사용자 데이터를 기록할 때 상기 사용자 데이터 내에 패리티를 할당하는 제1 오류 정정 코드(ECC) 코딩 프로세스를 수행하도록 구성된 제어기를 포함하는, 메모리 디바이스.
  17. 제16항에 있어서, 상기 제어기는 외부 전자 디바이스 내에 위치된 제2 KV 데이터베이스에 상기 사용자 데이터를 기록할 때 상기 사용자 데이터 내에 패리티를 할당하는 제2 ECC 코딩 프로세스를 수행하도록 추가로 구성되는, 메모리 디바이스.
  18. 제16항에 있어서, 상기 제1 ECC 코딩 프로세스는 상기 사용자 데이터 내에 상기 패리티를 비대칭적으로 할당하고, 상기 제1 ECC 코딩 프로세스는 상기 사용자 데이터의 종료에서 보다 상기 사용자 데이터의 시작에서 더 많은 수의 패리티 비트들을 할당하는, 메모리 디바이스.
  19. 제16항에 있어서, 상기 KV 데이터베이스에 상기 사용자 데이터를 기록할 때 상기 사용자 데이터 내에 상기 패리티를 할당하는 상기 제1 ECC 코딩 프로세스를 수행하기 위해, 상기 제어기는
    상기 사용자 데이터를 공간적으로 결합된 저밀도 패리티 검사(SC-LDPC) 구조체의 복수의 타일들로 분리하도록, 그리고
    상기 복수의 타일들에 패리티를 비대칭으로 할당하도록 추가로 구성되는, 메모리 디바이스.
  20. 제19항에 있어서, 상기 KV 데이터베이스에 상기 사용자 데이터를 기록할 때 상기 사용자 데이터 내에 상기 패리티를 할당하는 상기 제1 ECC 코딩 프로세스를 수행하기 위해, 상기 제어기는
    상기 복수의 타일들 중 처음 타일을 상기 KV 데이터베이스에 기록하도록, 그리고
    상기 처음 타일을 상기 KV 데이터베이스에 기록한 후, 상기 복수의 타일들 중 마지막 타일을 상기 KV 데이터베이스에 기록하도록 추가로 구성되는, 메모리 디바이스.
KR1020220062758A 2021-11-22 2022-05-23 키-값 데이터 저장 디바이스를 위한 ecc 패리티 바이어싱 KR20230075334A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/531,975 2021-11-22
US17/531,975 US11934264B2 (en) 2021-11-22 2021-11-22 ECC parity biasing for Key-Value data storage devices

Publications (1)

Publication Number Publication Date
KR20230075334A true KR20230075334A (ko) 2023-05-31

Family

ID=86349390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220062758A KR20230075334A (ko) 2021-11-22 2022-05-23 키-값 데이터 저장 디바이스를 위한 ecc 패리티 바이어싱

Country Status (4)

Country Link
US (1) US11934264B2 (ko)
JP (1) JP7407230B2 (ko)
KR (1) KR20230075334A (ko)
CN (1) CN116149900A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230418491A1 (en) * 2022-06-22 2023-12-28 Micron Technology, Inc. Memory block utilization in memory systems

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490243B1 (en) * 1997-06-19 2002-12-03 Kabushiki Kaisha Toshiba Information data multiplex transmission system, its multiplexer and demultiplexer and error correction encoder and decoder
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
ATE443292T1 (de) 2003-10-07 2009-10-15 Nokia Corp Verfahren und vorrichtung zur handhabung von text-und binär-markup-sprachen in einer datenverarbeitungseinrichtung
US20070271493A1 (en) * 2006-05-16 2007-11-22 Samsung Electronics Co., Ltd. Unequal error protection method and apparatus using the same
KR20100104840A (ko) * 2009-03-19 2010-09-29 삼성전자주식회사 셀 패턴에 따라 추가 ecc가 가능한 반도체 메모리 장치,상기 장치를 포함하는 전자 시스템
US8948272B2 (en) * 2012-12-03 2015-02-03 Digital PowerRadio, LLC Joint source-channel decoding with source sequence augmentation
US10142419B2 (en) 2016-03-04 2018-11-27 Sandisk Technologies Llc Erasure correcting coding using data subsets and partial parity symbols
US10474374B2 (en) 2016-05-24 2019-11-12 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
KR20180003320A (ko) 2016-06-30 2018-01-09 삼성전자주식회사 데이터 복구 방법 및 이를 적용하는 메모리 시스템 및 레이드 스토리지 시스템
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
JP2019008730A (ja) 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム
US20200042223A1 (en) 2018-08-02 2020-02-06 Alibaba Group Holding Limited System and method for facilitating a high-density storage device with improved performance and endurance
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US11182101B2 (en) 2018-12-03 2021-11-23 Western Digital Technologies, Inc. Storage system and method for stream management in a multi-host virtualized storage system
US10871910B1 (en) 2019-09-27 2020-12-22 Western Digital Technologies, Inc. Non-volatile memory with selective interleaved coding based on block reliability
US11733919B2 (en) * 2019-10-14 2023-08-22 Samsung Electronics Co., Ltd. Method and system for offloading lookup operation to NAND offload apparatus
US11281981B2 (en) 2019-12-09 2022-03-22 Western Digital Technologies, Inc. Storage system and sorting-based method for random read command prediction in a multi-queue system
KR20210092361A (ko) * 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US20220179593A1 (en) 2020-10-02 2022-06-09 Western Digital Technologies, Inc. DRAM-Less SSD With Secure HMB For Low Latency
US11366749B2 (en) * 2020-11-10 2022-06-21 Western Digital Technologies, Inc. Storage system and method for performing random read
US11989461B2 (en) 2020-11-16 2024-05-21 Dell Products L.P. Preventing unauthorized access to non-volatile memory (NVM) subsystem namespaces
US11340986B1 (en) 2020-12-08 2022-05-24 Western Digital Technologies, Inc. Host-assisted storage device error correction
US20220359033A1 (en) * 2021-05-04 2022-11-10 Micron Technology, Inc. Health scan for content addressable memory
US11768807B2 (en) 2021-10-28 2023-09-26 EMC IP Holding Company LLC Destination namespace and file copying

Also Published As

Publication number Publication date
JP2023076370A (ja) 2023-06-01
US11934264B2 (en) 2024-03-19
US20230161666A1 (en) 2023-05-25
JP7407230B2 (ja) 2023-12-28
CN116149900A (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
CN108984420B (zh) 管理非易失性存储器(nvm)中的多个名称空间
JP6422600B2 (ja) メモリにおけるストライプマッピング
US8910017B2 (en) Flash memory with random partition
US10698814B2 (en) Data storage devices and data processing methods
KR101491943B1 (ko) 트랜잭션 로그 복구
KR102603070B1 (ko) 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법
US20110099350A1 (en) Block boundary resolution for mismatched logical and physical block sizes
CN108027764B (zh) 可转换的叶的存储器映射
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
US11200159B2 (en) System and method for facilitating efficient utilization of NAND flash memory
TW202008170A (zh) 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器
KR20200074464A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
US20220058136A1 (en) Method and system for a solid state drive with on-chip memory integration
CN110780806B (zh) 促进元数据和数据捆绑存储的原子性保证的方法和系统
US10896002B2 (en) Reverse directory structure in a garbage collection unit (GCU)
CN112599170A (zh) 用于在存储器系统中提供多流操作的设备和方法
CN107562639B (zh) 擦除块读请求处理方法与装置
CN107562654B (zh) Io命令处理方法与装置
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US10338850B2 (en) Split-page queue buffer management for solid state storage drives
US11762735B2 (en) Interleaved ECC coding for key-value data storage devices
US20240134747A1 (en) Apparatus and method for distributing and storing write data in plural memory regions
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法