KR101861924B1 - 보호된 데이터로부터 분리된 패리티 데이터 저장 - Google Patents

보호된 데이터로부터 분리된 패리티 데이터 저장 Download PDF

Info

Publication number
KR101861924B1
KR101861924B1 KR1020160102536A KR20160102536A KR101861924B1 KR 101861924 B1 KR101861924 B1 KR 101861924B1 KR 1020160102536 A KR1020160102536 A KR 1020160102536A KR 20160102536 A KR20160102536 A KR 20160102536A KR 101861924 B1 KR101861924 B1 KR 101861924B1
Authority
KR
South Korea
Prior art keywords
data
parity
block
parity data
storage array
Prior art date
Application number
KR1020160102536A
Other languages
English (en)
Other versions
KR20170019330A (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 KR20170019330A publication Critical patent/KR20170019330A/ko
Application granted granted Critical
Publication of KR101861924B1 publication Critical patent/KR101861924B1/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/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
    • 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
    • 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/1064Adding 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 cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • 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
    • G11C2029/0411Online error correction
    • 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
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

저장 장치는, 복수의 메모리 장치를 포함하는 일차적인 저장 어레이, 하나 이상의 패리티 메모리 장치, 및 데이터의 블록을 저장하도록 구성된 제어기를 포함할 수 있을 것이다. 제어기가, 적어도: 데이터의 블록을 일차적인 저장 어레이에 기록하는 것, 데이터의 블록에 대한 패리티 데이터를 결정하는 것, 그리고 결정된 패리티 데이터의 적어도 일부를 하나 이상의 패리티 메모리 장치에 기록하는 것에 의해서, 데이터의 블록을 저장하도록 구성될 수 있을 것이다.

Description

보호된 데이터로부터 분리된 패리티 데이터 저장{STORING PARITY DATA SEPARATE FROM PROTECTED DATA}
본 개시 내용은 메모리 관리에 관한 것이고, 특히 저장 장치 내의 패리티 데이터 할당에 관한 것이다.
컴퓨터 또는 다른 전자 장치에서 이용되는 메모리 장치는 비-휘발성 메모리 또는 휘발성 메모리일 수 있을 것이다. 비-휘발성 메모리와 휘발성 메모리의 주요 차이는, 비-휘발성 메모리가 지속적인 전원을 필요로 하지 않으면서 데이터를 계속 저장할 수 있다는 것이다. 결과적으로, 비-휘발성 메모리 장치는 넓은 범위의 전자적 적용예를 위한 대중적인 유형의 메모리로 개발되었다. 예를 들어, 플래시 메모리 장치를 비롯한 비-휘발성 메모리 장치는 일반적으로 솔리드-스테이트 드라이브(solid-state drive)(SSD)와 같은 솔리드-스테이트 저장 장치 내로 통합된다.
일부 예에서, 비-휘발성 메모리 장치로 데이터를 기록(writing)할 때, 제어기가 메모리 오류로부터 데이터를 보호하기 위한 하나 이상의 동작을 실시할 수 있을 것이다. 예를 들어, 데이터를 비-휘발성 메모리 장치로 기록하는 것에 더하여, 제어기가 패리티 데이터를 생성하고 메모리 장치로 기록할 수 있을 것이고, 그러한 패리티 데이터는, 예를 들어 메모리 오류의 경우에, 데이터를 복원하기 위해서 이용될 수 있을 것이다.
하나의 예에서, 저장 장치는 복수의 메모리 장치를 포함하는 일차적인 저장 어레이, 하나 이상의 패리티 메모리 장치, 및 데이터의 블록을 저장하도록 구성된 제어기를 포함한다. 이러한 예에서, 제어기는, 적어도 데이터의 블록을 일차적인 저장 어레이에 기록하는 것, 데이터의 블록에 대한 패리티 데이터를 결정하는 것, 그리고 결정된 패리티 데이터의 적어도 일부를 하나 이상의 패리티 메모리 장치에 기록하는 것에 의해서 데이터의 블록을 저장하도록 구성된다.
다른 예에서, 방법이, 저장 장치의 제어기에 의해서, 데이터의 블록을 복수의 메모리 장치를 포함하는 일차적인 저장 어레이에 기록하는 단계, 제어기에 의해서, 데이터의 블록에 대한 패리티 데이터를 결정하는 단계, 및 제어기에 의해서, 결정된 패리티 데이터를 하나 이상의 패리티 메모리 장치에 기록하는 단계를 포함한다.
다른 예에서, 컴퓨터-판독 가능 저장 매체가 명령어를 저장하고, 그러한 명령어는, 실행될 때, 저장 장치의 하나 이상의 프로세서로 하여금: 데이터의 블록을 복수의 메모리 장치를 포함하는 일차적인 저장 어레이에 기록하게 하고, 데이터의 블록에 대한 패리티 데이터를 결정하게 하며; 그리고 결정된 패리티 데이터를 하나 이상의 패리티 메모리 장치에 기록하게 한다.
다른 예에서, 시스템은 복수의 메모리 장치를 포함하는 일차적인 저장 어레이, 하나 이상의 패리티 메모리 장치, 데이터의 블록을 일차적인 저장 어레이에 기록하기 위한 수단, 데이터의 블록에 대한 패리티 데이터를 결정하기 위한 수단, 및 결정된 패리티 데이터를 하나 이상의 패리티 메모리 장치에 기록하기 위한 수단을 포함한다.
하나 이상의 예에 관한 구체적인 내용이 첨부 도면 및 이하의 설명에서 기술된다. 다른 특징, 목적, 및 장점이 설명 및 도면으로부터, 그리고 청구항으로부터 명확해질 것이다.
도 1은, 본 개시 내용의 하나 이상의 기술에 따른, 저장 장치가 호스트 장치를 위한 저장 장치로서 기능할 수 있는, 예시적인 저장 환경을 도시하는 개념적 및 개략적 블록도이다.
도 2는, 본 개시 내용의 하나 이상의 기술에 따른, 복수의 페이지(page)를 각각 포함하는 복수의 블록을 포함하는 예시적인 메모리 장치를 도시한 개념적 블록도이다.
도 3은, 본 개시 내용의 하나 이상의 기술에 따른, 제어기의 예시적인 상세 내용을 도시한 개념적 및 개략적 블록도이다.
도 4는, 본 개시 내용의 하나 이상의 기술에 따른, 메모리 장치의 동일한 페이지에 저장된 사용자 데이터 및 상응하는 패리티 데이터의 예시적인 논리적 구성을 도시한 개념도이다.
도 5는, 본 개시 내용의 하나 이상의 기술에 따른, 메모리 장치의 동일한 페이지에 저장된 사용자 데이터 및 상응하는 패리티 데이터의 예시적인 물리적 구성을 도시한 개념도이다.
도 6은, 본 개시 내용의 하나 이상의 기술에 따른, 메모리 장치의 상이한 페이지들에 저장된 사용자 데이터 및 적어도 약간의 패리티 데이터의 예시적인 논리적 구성을 도시한 개념도이다.
도 7은, 본 개시 내용의 하나 이상의 기술에 따른, 메모리 장치의 상이한 페이지들에 저장된 사용자 데이터 및 적어도 약간의 패리티 데이터의 예시적인 물리적 구성을 도시한 개념도이다.
도 8은, 본 개시 내용의 하나 이상의 기술에 따른, 상이한 메모리 장치들에 저장된 사용자 데이터 및 적어도 약간의 패리티 데이터의 예시적인 논리적 구성을 도시한 개념도이다.
도 9는, 본 개시 내용의 하나 이상의 기술에 따른, 상이한 메모리 장치들에 저장된 사용자 데이터 및 적어도 약간의 패리티 데이터의 예시적인 물리적 구성을 도시한 개념도이다.
도 10은, 본 개시 내용의 하나 이상의 기술에 따른, 적어도 약간의 패리티 데이터를, 연관 사용자 데이터와 상이한 메모리 장치 내에 저장하기 위한 예시적인 기술을 도시한 흐름도이다.
이러한 개시 내용은, 사용자 데이터를 일차적인 메모리 장치 내에 저장하고 사용자 데이터와 연관된 적어도 약간의 오류 교정 코드(ECC) 패리티 데이터를 패리티 메모리 장치 내에 저장하도록 구성된 제어기를 포함하는 저장 장치를 설명한다. 적어도 약간의 ECC 패리티 데이터를 패리티 메모리 장치 내에 저장하는 것에 의해서, 더 많은 양의 저장이 ECC 패리티 데이터에 의해서 이용될 수 있을 것이고, 이는 더 강력한 ECC 패리티 기술을 가능하게 하여, 사용자 데이터의 무결성(integrity)을 보다 양호하게 보호하게 할 수 있을 것이다. 비교하자면, 일부 저장 장치에서, ECC 패리티 데이터의 크기가 사용자 데이터의 블록의 크기와 메모리 장치의 물리적 페이지의 크기 사이의 차이로 제한될 수 있을 것이다. 예를 들어, 메모리 장치 내의 물리적 페이지가 8320 바이트를 포함하고 사용자 데이터의 블록의 크기가 8192 바이트인 경우에, 패리티 데이터의 크기가 128 바이트로 제한될 수 있을 것이다. 적어도 약간의 ECC 패리티 데이터를 패리티 메모리 장치 내에 저장하는 것이 또한 탄력적인 ECC 강도(flexible ECC strength)를 촉진할 수 있을 것이고, 예를 들어 저장 장치의 시효(age)가 증가될 때 ECC 패리티 데이터의 양을 증가시킬 수 있을 것이다.
또한, 적어도 약간의 ECC 패리티 데이터를 패리티 메모리 장치 내에 저장하는 것이, ECC 패리티 정보를 저장하기 위해서 일차적인 메모리 장치 내의 복수의 데이터의 페이지를 이용하는 것에 비해서, 일차적인 메모리 장치의 판독 액세스(read access)를 감소시킬 수 있을 것이다. 일부 예에서, 예를 들어 제어기가 고급(advanced) 논리적-대-물리적 어드레스 맵핑 체계를 이용하는 경우에, 제어기에 의해서 사용되는 패리티 데이터의 크기가 메모리 장치의 물리적 페이지의 크기와 독립적이 되게 할 수 있을 것이다. 특히, 제어기는 패리티 데이터를 저장하기 위해서 복수의 물리적 페이지 어드레스를 할당할 수 있다. 이러한 방식으로, 제어기가 큰 ECC 강도를 이용할 수 있다. 그러나, 패리티 데이터의 일부가 사용자 데이터와 별개인 메모리 장치의 페이지 내에 저장됨에 따라, 사용자 데이터를 조회(retrieve)하기 위해서 제어기는 제1 물리적 페이지 및 제2 물리적 페이지 모두를 판독할 필요가 있을 수 있다. 유사하게, 사용자 데이터를 저장할 때, 제어기가 메모리 장치 내에서 2개의 상이한 물리적 어드레스를 기록할 필요가 있을 수 있고, 이는 (예를 들어, 사이클 계수(count) 증가, 성능 감소, 신뢰성 감소, 및 판독 장애 증가로 인해서) 바람직하지 못할 수 있다. 일차적인 메모리 장치의 판독 및 기록 액세스를 감소시키는 것이 마모를 줄이고 일차적인 메모리 장치의 수명을 연장할 수 있을 것이다.
본 개시 내용의 하나 이상의 기술에 따라서, 제어기가 ECC 패리티 데이터의 적어도 일부를 별개의 패리티 메모리 장치 내에 저장할 수 있을 것이다. 예를 들어, 제어기가 사용자 데이터의 블록과 연관된 패리티 데이터를 결정할 수 있을 것이고, 사용자 데이터의 블록을 일차적인 메모리 장치 내에 저장할 수 있을 것이며, 그리고 패리티 데이터의 적어도 일부를 일차적인 메모리 장치와 별개인 패리티 메모리 장치 내에 저장할 수 있을 것이다. 일부 예에서, 제어기가, 병렬로, 패리티 데이터의 적어도 일부를 패리티 메모리 장치에 기록할 수 있을 것이고 사용자 데이터의 블록을 일차적인 메모리 장치에 기록할 수 있을 것이다. 유사하게, 일부 예에서, 제어기가, 병렬로, 패리티 데이터의 적어도 일부를 패리티 메모리 장치로부터 판독할 수 있을 것이고 사용자 데이터의 블록을 일차적인 메모리 장치로부터 판독할 수 있을 것이다. 이러한 방식으로, 제어기는, 상당한 성능 저하 없이, 더 큰 크기의 패리티 데이터를 이용할 수 있을 것이다.
일부 예에서, 패리티 메모리 장치는 일차적인 메모리 장치와 동일한 유형의 메모리 장치일 수 있을 것이다. 예를 들어, 일부 예에서, 패리티 메모리 장치 및 일차적인 메모리 장치 모두가 NAND 플래시 메모리 장치일 수 있으나, 제어기에 의해서 별개로 어드레스될 수 있을 것이다. 그러나, 패리티 데이터의 크기가 사용자 데이터의 크기보다 상당히 작을 수 있을 것이고; 그에 따라 패리티 메모리 장치의 크기가 일차적인 메모리 장치의 크기보다 상당히 작을 수 있을 것이다. 예를 들어, 패리티 메모리 장치 내에 저장되는 패리티 데이터의 크기가 일차적인 메모리 장치 내에 저장되는 사용자 데이터의 크기의 1/10 미만일 수 있을 것이다.
본 개시 내용의 하나 이상의 기술에 따라, 저장 장치가 일차적인 메모리 장치, 및 일차적인 장치와 상이한 유형의 메모리 장치인 패리티 메모리 장치를 포함할 수 있을 것이다. 일부 예에서, 일차적인 저장 장치가 NAND 플래시 메모리 장치일 수 있을 것이고, 패리티 메모리 장치가, 자기저항형 랜덤-액세스 메모리(magnetoresisitve random-access memory)(MRAM) 장치, 상변화 랜덤-액세스 메모리(phase-change random-access memory)(PRAM) 장치, 또는 저항형 랜덤-액세스 메모리(ReRAM) 장치와 같은, 스토리지 클래스(storage class) 유형의 메모리 장치일 수 있을 것이다. 일부 플래시 메모리 장치(예를 들어, NAND 플래시 메모리 장치)와 비교하여, 그러한 스토리지 클래스 메모리 장치는 증가된 비트당 비용 및 감소된 대기 시간(예를 들어, 나노초 대 마이크로초)을 가질 수 있을 것이다. 전술한 바와 같이, 패리티 데이터의 크기가 사용자 데이터의 크기보다 상당히 작을 수 있을 것이다. 그에 따라, 패리티 메모리 장치의 크기가 일차적인 메모리 장치의 크기보다 상당히 작을 수 있고, 이는 패리티 메모리 장치 비용을 상당히 줄일 수 있게 한다. 부가적으로, 패리티 메모리 장치가 일차적인 메모리 장치보다 더 짧은 대기 시간을 가질 수 있기 때문에, 패리티 데이터를 패리티 메모리 장치에 기록하고 판독하는 것이 사용자 데이터를 일차적인 메모리 장치에 기록하고 판독하는 것보다 짧은 시간이 걸릴 수 있을 것이다. 이러한 방식으로, 제어기는, 상당한 성능 저하 없이, 더 큰 크기의 패리티 데이터를 이용할 수 있을 것이다.
도 1은, 본 개시 내용의 하나 이상의 기술에 따른, 저장 장치(6)가 호스트 장치(4)를 위한 저장 장치로서 기능할 수 있는, 예시적인 저장 환경(2)을 도시하는 개념적 및 개략적 블록도이다. 예를 들어, 호스트 장치(4)가, 데이터를 저장 및 조회하기 위해서 저장 장치(6) 내에 포함된 비-휘발성 메모리 장치를 이용할 수 있을 것이다. 일부 예에서, 저장 환경(2)은, 저장 어레이로서 동작할 수 있는, 저장 장치(6)와 같은 복수의 저장 장치를 포함할 수 있을 것이다. 예를 들어, 저장 환경(2)은, 호스트 장치(4)를 위한 대량 저장 장치로서 집합적으로 기능하는 복수 배열 저가 디스크(redundant array of inexpensive/independent disks)(RAID)로서 구성된 복수의 저장 장치(6)를 포함할 수 있을 것이다.
저장 환경(2)은, 저장 장치(6)와 같은 하나 이상의 저장 장치로 및/또는 그로부터 데이터를 저장 및/또는 조회할 수 있는 호스트 장치(4)를 포함할 수 있을 것이다. 도 1에 도시된 바와 같이, 호스트 장치(4)가 인터페이스(14)를 통해서 저장 장치(6)와 통신할 수 있을 것이다. 호스트 장치(4)는 컴퓨터 서버, 네트워크 부착 저장(NAS) 유닛, 데스크탑 컴퓨터, 노트북(즉, 랩탑) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 소위 "스마트" 폰과 같은 전화기 핸드셋, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 및 비디오 스트리밍 장치 등을 포함하는, 넓은 범위의 장치 중 임의의 장치를 포함할 수 있을 것이다.
도 1에 도시된 바와 같이, 저장 장치(6)가 제어기(8), 비-휘발성 메모리 어레이(10)(NVMA(10)), 휘발성 메모리(12), 인터페이스(14) 및 패리티 메모리 장치(들)(20)을 포함할 수 있을 것이다. 일부 예에서, 저장 장치(6)는 명료함을 위해서 도 1에 도시되지 않은 부가적인 구성요소를 포함할 수 있을 것이다. 예를 들어, 저장 장치(6)가 인쇄 기판(PB)을 포함할 수 있을 것이고, 그러한 인쇄 기판으로 저장 장치(6)의 구성요소가 기계적으로 부착되고, 인쇄된 기판은 저장 장치(6)의 구성요소들을 전기적으로 상호 연결하는 전기 전도성 트레이스(trace) 등을 포함한다. 일부 예에서, 저장 장치(6)의 물리적 치수 및 연결기 구성은 하나 이상의 표준 형상 인자를 따를 수 있을 것이다. 일부 예시적인 표준 형상 인자에는, 비제한적으로, 3.5" 하드 디스크 드라이브(HDD), 2.5" HDD, 1.8" HDD, 주변 구성요소 상호 연결부(PCI), PCI-확장형(PCI-X), PCI 익스프레스(PCIe)(예를 들어, PCIe x1, x4, x8, x16, PCIe 미니 카드(Mini Card), MiniPCI, 등)이 포함된다. 일부 예에서, 저장 장치(6)가 호스트 장치(4)의 마더보드에 직접적으로 결합될(예를 들어, 직접적으로 납땜될) 수 있을 것이다.
저장 장치(6)가 호스트 장치(4)와 인터페이싱하기 위한 인터페이스(14)를 포함할 수 있을 것이다. 인터페이스(14)가 호스트 장치(4)와 데이터를 교환하기 위한 데이터 버스 및 호스트 장치(4)와 명령을 교환하기 위한 제어 버스 중 하나 또는 둘 다를 포함할 수 있을 것이다. 인터페이스(14)가 임의의 적합한 프로토콜에 따라서 동작될 수 있을 것이다. 예를 들어, 인터페이스(14)가 이하의 프로토콜 중 하나 이상에 따라서 동작될 수 있을 것이다: 고급 기술 부착(Advanced Technology Attachment)(ATA)(예를 들어, 직렬-ATA(SATA) 및 병렬-ATA(PATA)), 파이버 채널(Fibre Channel), 소형 컴퓨터 시스템 인터페이스(SCSI), 직렬 부착 SCSI(SAS), 주변 구성요소 상호 연결부(PCI), PCI-익스프레스 또는 비-휘발성 메모리 익스프레스(NVMe). 인터페이스(14)(예를 들어, 데이터 버스, 제어 버스, 또는 둘 다)의 전기적 연결이 제어기(8)로 전기적으로 연결되어, 호스트 장치(4)와 제어기(8) 사이의 전기적 연결을 제공하고, 그에 따라 호스트 장치(4)와 제어기(8) 사이에 데이터가 교환될 수 있게 한다. 일부 예에서, 인터페이스(14)의 전기적 연결은 또한 저장 장치(6)가 호스트 장치(4)로부터 전력을 수신하게 할 수 있을 것이다.
저장 장치(6)가, 복수의 메모리 장치(16Aa-16Nn)(집합적으로 "메모리 장치(16)")를 포함할 수 있는 NVMA(10)를 포함할 수 있을 것이다. 각각의 메모리 장치(16)가 데이터를 저장하도록 및/또는 데이터를 조회하도록 구성될 수 있을 것이다. 예를 들어, 메모리 장치들(16) 중의 메모리 장치가, 메모리 장치로 하여금 데이터를 저장하도록 지시하는 제어기(8)로부터의 데이터 및 메시지를 수신할 수 있을 것이다. 유사하게, 메모리 장치들(16) 중의 메모리 장치가, 메모리 장치로 하여금 데이터를 조회하도록 지시하는 제어기(8)로부터의 메시지를 수신할 수 있을 것이다. 일부 예에서, 각각의 메모리 장치(16)는 다이로서 지칭될 수 있을 것이다. 일부 예에서, 단일 물리적 칩이 복수의 다이(즉, 복수의 메모리 장치(16))를 포함할 수 있을 것이다. 일부 예에서, 각각의 메모리 장치(16)가 비교적 많은 양의 데이터(예를 들어, 128MB, 256MB, 512MB, 1GB, 2GB, 4GB, 8GB, 16GB, 32GB, 64GB, 128GB, 256GB, 512GB, 1TB, 등)를 저장하도록 구성될 수 있을 것이다.
일부 예에서, 메모리 장치(16)가 플래시 메모리 장치를 포함할 수 있을 것이다. 플래시 메모리 장치는 NAND 또는 NOR 기반의 플래시 메모리 장치를 포함할 수 있을 것이고, 각각의 플래시 메모리 셀을 위한 트랜지스터의 부동 게이트(floating gate) 내에 포함되는 전하를 기초로 데이터를 저장할 수 있을 것이다. NAND 플래시 메모리 장치에서, 플래시 메모리 장치가 복수의 블록으로 분할될 수 있을 것이다. 도 2는, 복수의 페이지(19Aa-19Nm)(집합적으로, "페이지(19)")를 각각 포함하는 복수의 블록(17A-17N)(집합적으로, "블록(17)")을 포함하는 예시적인 메모리 장치(16Aa)를 도시한 개념적 블록도이다. 블록들(17) 중의 각각의 블록이 복수의 NAND 셀을 포함할 수 있을 것이다. NAND 셀의 행(row)이 워드 라인(word line)을 이용하여 직렬로 전기적으로 연결되어 페이지(페이지들(19) 중 하나의 페이지)를 형성할 수 있을 것이다. 복수의 페이지(19) 중의 각각의 페이지 내의 각각의 셀이 각각의 비트 라인에 전기적으로 연결될 수 있을 것이다. 제어기(8)가 페이지 레벨에서 NAND 플래시 메모리 장치로 데이터를 기록하고 그로부터 데이터를 판독할 수 있을 것이고, 블록 레벨에서 NAND 플래시 메모리 장치로부터 데이터를 소거할 수 있을 것이다.
일부 예에서, 메모리 장치(16)가 임의의 유형의 비-휘발성 메모리 장치를 포함할 수 있을 것이다. 메모리 장치(16)의 일부 예에는, 비제한적으로, 플래시 메모리 장치(예를 들어, NAND 또는 NOR), 상변화 메모리(PCM) 장치, 저항형 랜덤-액세스 메모리(ReRAM) 장치, 자기저항적 랜덤-액세스 메모리(MRAM) 장치, 강유전체 랜덤-액세스 메모리(ferroelectric random-access memory)(F-RAM), 홀로그래픽(holographic) 메모리 장치, 및 임의의 다른 유형의 비-휘발성 메모리 장치가 포함된다.
일부 예에서, 제어기(8)를 메모리 장치(16)의 각각의 메모리 장치에 별개로 연결하는 것은 실용적이지 않을 수 있다. 그에 따라, 메모리 장치(16)와 제어기(8) 사이의 연결이 다중화될 수 있을 것이다. 예로서, 메모리 장치(16)가 채널(18A-18N)(집합적으로, "채널(18)")로 그룹화될 수 있을 것이다. 예를 들어, 도 1에 도시된 바와 같이, 메모리 장치(16Aa-16An)가 제1 채널(18A)로 그룹화될 수 있을 것이고, 메모리 장치(16Na-16Nn)가 N 번째 채널(18N)로 그룹화될 수 있을 것이다. 각각의 채널(18)로 그룹화된 메모리 장치(16)가 제어기(8)에 대한 하나 이상의 연결을 공유할 수 있을 것이다. 예를 들어, 제1 채널(18A)로 그룹화된 메모리 장치(16)는 공통 I/O 버스 및 공통 제어 버스에 부착될 수 있을 것이다. 저장 장치(6)가 채널들(18) 중의 각각의 개별적인 채널을 위한 공통 I/O 버스 및 공통 제어 버스를 포함할 수 있을 것이다. 일부 예에서, 채널들(18) 중 각각의 채널이, 각각의 채널 상에서 메모리 장치를 다중화하기 위해서 이용될 수 있는 칩 인에이블(chip enable)(CE) 라인의 세트를 포함할 수 있을 것이다. 예를 들어, 각각의 CE라인이 메모리 장치들(16) 중 각각의 메모리 장치에 연결될 수 있을 것이다. 이러한 방식으로, 제어기(8)와 메모리 장치(16) 사이의 분리된 연결의 수가 감소될 수 있을 것이다. 또한, 각각의 채널이 제어기(8)에 대한 독립적인 연결의 세트를 가질 때, 연결의 감소가 데이터 처리율(throughput rate)에 실질적인 영향을 미치지 않을 수 있는데, 이는 제어기(8)가 상이한 명령들을 각각의 채널로 동시적으로 제공할 수 있을 것이기 때문이다.
저장 장치(6)는, 그러한 저장 장치(6)의 하나 이상의 구성요소로 전력을 제공할 수 있는 전원(11)을 포함할 수 있을 것이다. 표준 모드로 동작될 때, 전원(11)은, 호스트 장치(4)와 같은 외부 장치에 의해서 제공되는 전력을 이용하여 하나 이상의 구성요소로 전력을 제공할 수 있을 것이다. 예를 들어, 전원(11)은 인터페이스(14)를 통해서 호스트 장치(4)로부터 수신된 전력을 이용하여 하나 이상의 구성요소로 전력을 제공할 수 있을 것이다. 일부 예에서, 전원(11)은, 외부 장치로부터의 전력 수신이 중단되는 경우와 같은 차단 모드에서 동작될 때, 하나 이상의 구성요소로 전력을 제공하도록 구성된 하나 이상의 전력 저장 구성요소를 포함할 수 있을 것이다. 이러한 방식으로, 전원(11)이 내장형(onboard) 백업 전력 공급원으로서 기능할 수 있을 것이다. 하나 이상의 전력 저장 구성요소의 일부 예에는, 비제한적으로, 커패시터, 슈퍼 커패시터, 및 배터리, 등이 포함된다.
저장 장치(6)가 또한, 정보를 저장하기 위해서 제어기(8)에 의해서 이용될 수 있는 휘발성 메모리(12)를 포함할 수 있을 것이다. 일부 예에서, 제어기(8)가 캐시로서 휘발성 메모리(12)를 이용할 수 있을 것이다. 예를 들어, 제어기(8)는, 캐시(cached) 정보(13)가 메모리 장치(16)에 기록될 때까지, 캐시 정보(13)를 휘발성 메모리(12) 내에 저장할 수 있을 것이다. 도 1에 도시된 바와 같이, 휘발성 메모리(12)가 전원(11)으로부터 수신된 전력을 소비할 수 있을 것이다. 휘발성 메모리(12)의 예에는, 비제한적으로, 랜덤-액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 RAM(SRAM), 및 동기식 동적 RAM(SDRAM)(예를 들어, DDR1, DDR2, DDR3, DDR3L, LPDDR3, 및 DDR4, 등)이 포함된다.
저장 장치(6)는, 그러한 저장 장치(6)의 하나 이상의 동작을 관리할 수 있는 제어기(8)를 포함한다. 예를 들어, 제어기(8)는 메모리 장치(16)로부터의 데이터의 판독 및/또는 메모리 장치(16)로의 데이터의 기록을 관리할 수 있을 것이다. 일부 예에서, 제어기(8)믐 메모리 장치(16)에 의해서 저장된 데이터를 관리하기 위한 하나 이상의 동작을 실시할 수 있을 것이다. 예를 들어, 제어기(8)는, 메모리 장치(16)에 의해서 저장된 사용자 데이터에 대한 패리티 데이터를 저장하는 것과 같은, 메모리 장치(16)에 의해서 저장된 데이터의 무결정을 보장하기 위한 하나 이상의 동작을 실시할 수 있을 것이다. 제어기(8)에 관한 부가적인 상세 내용이 도 3을 참조하여 이하에서 설명된다.
이러한 개시 내용의 하나 이상의 기술에 따라서, 저장 장치(6)가, 적어도 약간의 패리티 정보를 저장하기 위해서 제어기(8)에 의해서 이용될 수 있는, 하나 이상의 패리티 메모리 장치(20)를 포함할 수 있을 것이다. 일부 예에서, 패리티 메모리 장치(20)가 임의의 유형의 비-휘발성 메모리 장치를 포함할 수 있을 것이다. 패리티 메모리 장치(20)의 일부 예에는, 비제한적으로, NAND 플래시 메모리 장치 및/또는 NOR 플래시 메모리 장치와 같은, 플래시 메모리 장치, 스토리지 클래스 메모리 장치, 홀로그래픽 메모리 장치, 및 임의의 다른 유형의 비-휘발성 메모리 장치가 포함된다. 스토리지 클래스 메모리 장치의 일부 예에는, 비제한적으로, 상변화 메모리(PCM) 장치, 저항형 랜덤-액세스 메모리(ReRAM) 장치, 자기저항적 랜덤-액세스 메모리(MRAM) 장치, 및 강유전체 랜덤-액세스 메모리(F-RAM)가 포함된다. 일부 예에서, 스토리지 클래스 메모리 장치는 바이트-액세스 가능할 수 있을 것이고, (플래시 메모리와 유사한 또는 그보다 큰) 비교적 큰 내구성(endurance)을 가질 수 있을 것이고, (예를 들어, 플래시 메모리보다 짧고, 일부 예에서 DRAM과 유사한) 비교적 짧은 기록 및 판독 대기 시간을 가질 수 있을 것이다.
전술한 바와 같이, 제어기(8)는, 메모리 장치(16), 패리티 메모리 장치(20), 또는 둘 다로 하여금 메모리 장치(16)에 의해서 저장된 사용자 데이터와 연관된 패리티 데이터를 저장하게 할 수 있을 것이다. 예를 들어, 사용자 데이터의 블록을 저장할 때, 제어기(8)가 사용자 데이터를 가지는 사용자 데이터의 블록의 배타적 논리합(exclusive-OR)(XOR)을 결정하고 저장할 수 있을 것이다. 사용자 데이터의 블록을 조회할 때, 제어기(8)가, 저장된 사용자 데이터의 블록 및 사용자 데이터의 블록과 연관된 저장된 패리티 데이터 모두를 판독하고 저장된 패리티 데이터를 이용하여 사용자 데이터의 블록을 확인할 수 있을 것이다. 일부 예에서, 제어기(8)는 사용자 데이터와 함께 패리티 데이터를 메모리 장치의 동일한 물리적 페이지 내에 저장할 수 있을 것이다. 예를 들어, 제어기(8)는 사용자 데이터와 함께 패리티 데이터를 도 2의 메모리 장치(16Aa)의 블록(17A)의 페이지(19Aa) 내에 저장할 수 있을 것이다.
제어기(8)에 의해서 이용되는 패리티 데이터의 크기가 ECC 강도로서 지칭될 수 있을 것이다. 일부 예에서, 패리티 데이터의 크기가 클수록, 데이터 손상 오류에 대한 보다 양호한 보호를 제공할 수 있을 것이다. 그러나, 패리티 데이터의 크기가 증가됨에 따라, 패리티 데이터에 의해서 소비되는 메모리의 양이 증가된다. 제어기(8)가 사용자 데이터와 함께 패리티 데이터를 메모리 장치의 동일한 물리적 페이지 내에 저장하는 경우와 같은 일부 예에서, 패리티 데이터의 크기가 사용자 데이터의 블록의 크기와 메모리 장치의 물리적 페이지의 크기 사이의 차이로 제한될 수 있을 것이다. 예를 들어, 물리적 페이지(19Aa)의 크기가 8320 바이트이고 사용자 데이터의 블록의 크기가 8192 바이트인 경우에, 제어기(8)가 사용자 데이터와 동일한 페이지 내에 저장할 수 있는 패리티 데이터의 크기가 128 바이트로 제한될 수 있을 것이다. 그러나, 동일한 예에서, 예를 들어, 데이터 손상 오류에 대한 보다 강력한 보호를 제공하기 위해서, 제어기(8)가 사용자 데이터의 블록의 크기와 메모리 장치의 물리적 페이지의 크기 사이의 제한된 크기 차이보다 더 큰 패리티 데이터를 저장하는 것이 바람직할 수 있을 것이다.
일부 예에서, 제어기(8)는, 패리티 데이터의 크기를 메모리 장치(16)의 물리적 페이지의 크기, 메모리 장치(16)의 물리적 페이지의 크기와 사용자 데이터의 블록의 크기 사이의 차이, 또는 둘 다로부터 독립적이 되게 할 수 있을 것이다. 예를 들어, 제어기(8)가 사용자 데이터 및 패리티 데이터의 적어도 일부를 메모리 장치(16) 내의 상이한 물리적 페이지들에 저장할 수 있을 것이다. 하나의 예로서, 제어기(8)가 사용자 데이터와 함께 패리티 데이터의 제1 부분을 메모리 장치(16Aa)의 페이지(19Aa) 내에 저장할 수 있을 것이고, 패리티 데이터의 제2 부분을 메모리 장치(16Aa)의 페이지(19Ab) 내에 저장할 수 있을 것이다. 그러나, 패리티 데이터의 제2 부분이 사용자 데이터와 별개인 메모리 장치(16)의 페이지 내에 저장됨에 따라, 사용자 데이터를 조회하고 디코딩하기 위해서 제어기(8)가 양 페이지(예를 들어, 페이지(19Aa) 및 페이지(19Ab))를 판독할 필요가 있을 수 있다. 유사하게, 사용자 데이터를 저장할 때, 제어기(8)가 메모리 장치(16) 내에서 2개의 상이한 물리적 페이지를 기록할 필요가 있을 수 있고, 이는 (예를 들어, 사이클 계수 증가, 성능 감소, 신뢰성 감소, 및 판독 장애 증가로 인해서) 바람직하지 못할 수 있다. 다른 예로서, 메모리 장치들(16) 중의 메모리 장치 내에서, 상응하는 사용자 데이터와 상이한 물리적 페이지에서 패리티 데이터를 저장하는 것에 반대되는 것으로서, 제어기(8)가 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20) 내에 저장할 수 있을 것이다. 예를 들어, 제어기(8)가 사용자 데이터의 블록에 대한 패리티 데이터를 결정할 수 있을 것이고, 사용자 데이터의 블록을 메모리 장치(16) 내에 저장할 수 있을 것이며, 그리고 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20) 내에 저장할 수 있을 것이다. 일부 예에서, 제어기(8)가, 병렬로, 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20)에 기록할 수 있을 것이고 사용자 데이터의 블록을 메모리 장치(16)에 기록할 수 있을 것이다. 유사하게, 일부 예에서, 제어기(8)가, 병렬로, 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20)로부터 판독할 수 있을 것이고 사용자 데이터의 블록을 메모리 장치(16)로부터 판독할 수 있을 것이다. 이러한 방식으로, 제어기(8)는, 바람직하지 못한 영향(예를 들어, 사이클 계수 증가, 성능 감소, 신뢰성 감소, 및 판독 장애 증가)이 없이 또는 바람직하지 못한 영향이 감소된 상태에서, 보다 큰 패리티 데이터의 크기를 이용할 수 있을 것이다.
도 3은 제어기(8)의 예시적인 상세 내용을 도시하는 개념적 및 개략적 블록도이다. 일부 예에서, 제어기(8)가 어드레스 변환 모듈(22), 기록 모듈(24), 유지 모듈(26), 판독 모듈(28), 스케쥴링 모듈(30), 및 복수의 채널 제어기(32A-32N)(집합적으로 "채널 제어기(32)")를 포함할 수 있을 것이다. 다른 예에서, 제어기(8)가 부가적인 모듈 또는 하드웨어 유닛을 포함할 수 있거나, 보다 적은 모듈 또는 하드웨어 유닛을 포함할 수 있을 것이다. 제어기(8)가 마이크로프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 다른 디지털 논리 회로망을 포함할 수 있을 것이다.
제어기(8)가 인터페이스(14)를 통해서 호스트 장치(4)와 인터페이스할 수 있고 메모리 장치(16)로의 데이터의 저장 및 메모리 장치(16)로부터의 데이터의 조회를 관리할 수 있을 것이다. 예를 들어, 제어기(8)의 기록 모듈(24)이 메모리 장치(16)에 대한 기록을 관리할 수 있을 것이다. 예를 들어, 기록 모듈(24)은, 저장 장치(6)로 하여금 논리적 어드레스와 연관된 데이터 및 사용자 데이터로서 지칭될 수 있는 데이터를 저장하도록 지시하는 메시지를 인터페이스(14)를 통해서 호스트 장치(4)로부터 수신할 수 있을 것이다. 기록 모듈(24)이 메모리 장치(16)에 대한 사용자 데이터의 기록을 관리할 수 있을 것이다.
예를 들어, 기록 모듈(24)이 어드레스 변환 모듈(22)과 통신할 수 있을 것이며, 그러한 어드레스 변환 모듈은 호스트 장치(4)에 의해서 사용되는 논리적 어드레스들 사이의 변환을 관리하여, 메모리 장치에 대한 데이터의 직접적인 기록을 위해서 기록 모듈(24)에 의해서 사용되는 물리적 블록 어드레스 및 데이터의 저장 위치를 관리한다. 제어기(8)의 어드레스 변환 모듈(22)은, 메모리 장치(16)에 의해서 저장된 데이터의 논리적 어드레스(또는 논리적 블록 어드레스)를 메모리 장치(16)에 의해서 저장된 데이터의 물리적 블록 어드레스로 변환하는 플래시 변환 층 또는 표(table)를 이용할 수 있을 것이다. 예를 들어, 호스트 장치(4)가 저장 장치(6)에 대한 명령어 또는 메시지 내의 메모리 장치(16)에 의해서 저장된 데이터의 논리적 블록 어드레스를 이용할 수 있는 한편, 기록 모듈(24)은 메모리 장치(16)에 대한 데이터의 기록을 제어하기 위해서 데이터의 물리적 블록 어드레스를 이용한다. (유사하게, 판독 모듈(28)이 메모리 장치(16)로부터의 데이터의 판독을 제어하기 위해서 물리적 블록 어드레스를 이용할 수 있을 것이다.) 물리적 블록 어드레스가 메모리 장치(16)의 실제의 물리적 블록에 상응한다. 일부 예에서, 어드레스 변환 모듈(22)이, 캐시 정보(13) 내와 같은, 휘발성 메모리(12) 내에 플래시 변환 층 또는 표를 저장할 수 있을 것이다.
이러한 방식으로, 호스트 장치(4)가 특정 데이터 세트에 대한 정적인 논리적 블록 어드레스를 이용할 수 있는 한편, 데이터가 실제로 저장되는 물리적 블록 어드레스가 변화될 수 있을 것이다. 논리적 블록 어드레스를 물리적 블록 어드레스로 맵핑하여 호스트 장치(4)가 정적인 논리적 블록 어드레스를 이용할 수 있게 허용하기 위해서, 어드레스 변환 모듈(22)이 플래시 변환 층 또는 표를 유지할 수 있는 한편, 예를 들어 웨어 레벨링(wear leveling), 또는 폐영역 회수(garbage collection) 등으로 인해서, 데이터의 물리적 블록 어드레스가 변화될 수 있을 것이다.
전술한 바와 같이, 제어기(8)의 기록 모듈(24)이, 메모리 장치(16)에 대한 데이터의 기록을 관리하기 위한 하나 이상의 동작을 실시할 수 있을 것이다. 예를 들어, 데이터를 저장하기 위해서 메모리 장치(16) 내의 하나 이상의 블록을 선택하는 것 그리고 선택된 블록을 포함하는 메모리 장치들(16) 중의 메모리 장치가 데이터를 실제로 저장하게 하는 것에 의해서, 기록 모듈(24)이 메모리 장치(16)에 대한 데이터의 기록을 관리할 수 있을 것이다. 전술한 바와 같이, 기록 모듈(24)이, 어드레스 변환 모듈(22)로 하여금 선택된 블록을 기초로 플래시 변환 층 또는 표를 업데이트하게 할 수 있을 것이다. 예를 들어, 기록 모듈(24)이 데이터의 유닛 및 논리적 블록 어드레스를 포함하는 호스트 장치(4)로부터의 메시지를 수신할 수 있을 것이고, 데이터를 저장하기 위해서 메모리 장치들(16) 중의 특정 메모리 장치 내의 블록을 선택할 수 있을 것이며, (예를 들어, 특정 메모리 장치에 상응하는 채널 제어기들(32) 중의 채널 제어기를 통해서) 메모리 장치들(16) 중의 특정 메모리 장치가 데이터를 실제로 저장하게 할 수 있으며, 그리고 논리적 블록 어드레스가 특정 메모리 장치 내의 선택된 블록에 상응한다는 것을 나타내기 위해서, 어드레스 변환 모듈(22)로 하여금 플래시 변환 층 또는 표를 업데이트하게 할 수 있을 것이다.
판독 모듈(28)이 메모리 장치(16)로부터의 데이터의 판독을 유사하게 제어할 수 있을 것이다. 예를 들어, 판독 모듈(28)은 연관된 논리적 블록 어드레스를 가지는 데이터를 요청하는 호스트 장치(4)로부터의 메시지를 수신할 수 있을 것이다. 어드레스 변환 모듈(22)이 플래시 변환 층 또는 표를 이용하여 논리적 블록 어드레스를 물리적 블록 어드레스로 전환할 수 있을 것이다. 이어서, 판독 모듈(28)이 하나 이상의 채널 제어기(32)를 제어하여 데이터를 물리적 블록 어드레스로부터 조회할 수 있을 것이다. 기록 모듈(24)과 유사하게, 판독 모듈(28)이 하나 이상의 블록을 선택할 수 있을 것이고 메시지를 채널 제어기(32)로 통신할 수 있을 것이며, 그러한 메시지는 채널 제어기(32)로 하여금 데이터를 선택된 블록으로부터 판독하게 할 수 있을 것이다.
(대전된(charged)) 0의 논리 값을 가지는 비트를 (대전되지 않은) 1의 이전의 논리 값을 가지는 비트에 기록하기 위해서, 큰 전류가 이용된다. 이러한 전류가 충분히 커서, 인접한 플래시 메모리 셀의 대전에 대한 우발적인 변화를 유발할 수 있을 것이다. 우발적인 변화에 대해서 보호하기 위해서, 블록 내의 셀로 임의의 데이터를 기록하기에 앞서서, 플래시 메모리 셀의 전체 블록이 (대전되지 않은) 1의 논리적 값으로 소거될 수 있을 것이다. 이로 인해서, 플래시 메모리 셀이 블록 레벨에서 소거될 수 있을 것이고 페이지 레벨에서 기록될 수 있을 것이다.
그에 따라, 심지어 하나의 페이지 미만을 소비할 수 있는 데이터량을 기록하기 위해서, 제어기(8)는 전체 블록이 소거되게 할 수 있을 것이다. 이는, 메모리 장치(16)로 기록하고자 하는 호스트 장치(4)로부터 수신된 데이터의 양과 메모리 장치(16)로 실제로 기록되는 데이터의 양 사이의 비율을 지칭하는, 기록 증폭(write amplification)을 초래할 수 있을 것이다. 기록 증폭은, 기록 증폭이 없는 경우에 발생할 수 있는 것보다 더 빠른 플래시 메모리 셀의 마모에 기여한다. 플래시 메모리 셀에 대한 마모는, 플래시 메모리 셀을 소거하기 위해서 이용되는 비교적 높은 전압으로 인해서, 플래시 메모리 셀이 소거될 때 발생될 수 있을 것이다. 복수의 소거 사이클에 걸쳐서, 비교적 높은 전압이 플래시 메모리 셀에 대한 변화를 초래할 수 있을 것이다. 결국, 플래시 메모리 셀이 마모될 수 있고, 그에 따라 데이터가 셀에 더 이상 기록되지 못할 수 있을 것이다.
기록 증폭 및 플래시 메모리 셀의 마모를 감소시키기 위해서 제어기(8)가 이용할 수 있는 하나의 기술에는, 호스트 장치(4)로부터 수신된 데이터를 미사용 블록(예를 들어, 도 2의 블록(17)) 또는 부분적으로 사용된 블록에 기록하는 것이 포함된다. 예를 들어, 만약 호스트 장치(4)가 저장 장치(6)에 의해서 이미 저장된 데이터로부터의 작은 변화만을 포함하는 데이터를 저장 장치(6)로 송신한다면, 제어기는 이전(old) 데이터를 효력 없는(stale) 또는 더이상 유효하지 않은 데이터로 표기할 수 있을 것이다. 시간이 지나면, 이는, 이전 데이터를 유지하는 블록을 소거하고 업데이트된 데이터를 동일한 블록에 기록하는 것에 대비하여, 노출되는 소거 동작 블록의 수를 감소시킬 수 있을 것이다.
호스트 장치(4)로부터의 기록 명령의 수신에 응답하여, 기록 모듈(24)은, 메모리 장치(16)의 어떠한 물리적 위치(블록(17))에 데이터를 기록할 것인지를 결정할 수 있을 것이다. 예를 들어, 기록 모듈(24)이, 어드레스 변환 모듈(22) 또는 유지 모듈(26)로부터, 비어 있는(예를 들어, 데이터를 저장하지 않은), 부분적으로 비어 있는(예를 들어, 블록의 일부 페이지만이 데이터를 저장하는), 또는 적어도 일부의 무효(또는 효력 없는) 데이터를 저장하는 하나 이상의 물리적 블록 어드레스를 요청 받을 수 있을 것이다. 하나 이상의 물리적 블록 어드레스를 수신하였을 때, 기록 모듈(24)이 하나 이상의 블록을 규정 및/또는 선택할 수 있을 것이고, 메시지를 채널 제어기(32A-32N)(집합적으로, "채널 제어기(32)")로 통신할 수 있을 것이며, 그러한 메시지는 채널 제어기(32)로 하여금 데이터를 블록에 기록하게 한다.
채널 제어기들(32) 중의 각각의 채널 제어기가 채널(18)의 각각의 채널에 연결될 수 있을 것이다. 일부 예에서, 제어기(8)가 저장 장치(6)의 채널(18)의 수와 동일한 수의 채널 제어기(32)를 포함할 수 있을 것이다. 채널 제어기(32)가, 예를 들어 기록 모듈(24), 판독 모듈(28), 및/또는 유지 모듈(26)의 제어 하에서, 각각의 채널에 연결된 메모리 장치(16)의 어드레싱, 프로그래밍, 소거, 및 판독에 관한 긴밀한(intimate) 제어를 실시할 수 있을 것이다.
유지 모듈(26)이 성능 유지 및 저장 장치(6)(예를 들어, 메모리 장치(16))의 유효 수명의 연장과 관련된 동작을 실시하도록 구성될 수 있을 것이다. 예를 들어, 유지 모듈(26)이 웨어 레벨링 또는 폐영역 회수 중 적어도 하나를 실시할 수 있을 것이다.
제어기(8)의 스케쥴링 모듈(30)이 메모리 장치(16)에 의해서 실시될 활동들을 스케쥴링하기 위한 하나 이상의 동작을 실시할 수 있을 것이다. 예를 들어, 스케쥴링 모듈(30)이 제어기(8)의 다른 구성요소로부터 수신된 요청을 스케쥴링하여, 메모리 장치(16) 중 하나 이상으로 하여금 실행-시간 중에 하나 이상의 활동을 실시하도록 명령할 수 있을 것이다. 일부 예에서, 스케쥴링 모듈(30)은, 요청이 수신된 순서로(예를 들어, 선입 선출(first-in first-out) 또는 FIFO) 요청들이 실시될 수 있게 스케쥴링할 수 있을 것이다. 일부 예에서, 스케쥴링 모듈(30)이, 비제한적으로, 요청의 유형(예를 들어, 판독 요청, 기록 요청, 소거 요청, 폐영역 회수 요청 등), 요청이 수신된 이후에 경과된 시간의 양, 요청의 실행에 의해서 소비될 수 있는 전력의 양, 및 대역폭 고려사항 등을 포함할 수 있는 하나 이상의 인자를 기초로 요청들을 스케쥴링할 수 있을 것이다.
일부 예에서, 사용자 데이터의 유닛이 메모리 장치(16)에 의해서 저장되게 하는 것에 더하여, 기록 모듈(24)은, 하나 이상의 블록이 실패(fail) 또는 손상되는 경우에 데이터의 유닛을 회복 및/또는 입증(validate)하기 위해서 이용될 수 있는 정보(패리티 데이터)를, 메모리 장치(16)로 하여금 저장하게 할 수 있을 것이다. 일부 예에서, 기록 모듈(24)은, 패리티 데이터가 사용자 데이터와 함께 메모리 장치들(16) 중의 메모리 장치의 동일한 물리적 페이지 내에 저장되게 한다. 예를 들어, 어드레스 변환 모듈(22)이, 단일 물리적 페이지 어드레스를 단일 논리적 페이지 어드레스로 맵핑할 수 있는 단순한 논리적-대-물리적 어드레스 맵핑 체계를 실시할 수 있을 것이다. 그러한 체계의 예가 도 4 및 도 5를 참조하여 아래에서 설명된다.
일부 예에서, 기록 모듈(24)이 사용자 데이터의 블록에 대해서 보다 많은 패리티 데이터가 저장되게 유도하는 것이 바람직할 수 있을 것이다. 예를 들어, 메모리 장치(16)가 이용되고 시효됨에 따라, 또는 시효됨에 따라, 메모리 장치(16)의 메모리 셀의 신뢰성이 저하될 수 있을 것이다. 일부 예에서, 메모리 장치(16)의 메모리 셀의 신뢰성이 비트 오류율(bit error rate)(BER)로서 정량화될 수 있을 것이다. 그에 따라, 판독 모듈(28)이 사용자 데이터의 블록을 성공적으로 조회할 수 있는 가능성을 개선하기 위해서, BER이 증가될 때 기록 모듈(24)이 보다 큰 크기의 패리티 데이터를 저장할 수 있을 것이다. 하나의 예로서, BER이 문턱값보다 낮을 때, 기록 모듈(24)은, BER이 문턱값보다 클 때보다, 사용자 데이터의 각각의 블록에 대한 적은 패리티 데이터를 저장할 수 있을 것이다.
그러나, 일부 예에서, 기록 모듈(24)은 저장된 패리티 데이터의 양이 용이하게 더 커지게 하지 못할 수 있다. 예를 들어, 기록 모듈(24)이 사용자 데이터의 블록에 대한 패리티 데이터가 메모리 장치들(16) 중의 메모리 장치의 동일한 물리적 페이지 내에 사용자 데이터와 함께 저장되게 하는 예에서, 패리티 데이터의 크기가 사용자 데이터의 블록의 크기와 메모리 장치의 물리적 페이지의 크기 사이의 차이로 제한될 수 있을 것이다. 예를 들어, 메모리 장치 내의 물리적 페이지가 8320 바이트를 저장할 수 있고 사용자 데이터의 블록의 크기가 8192 바이트인 경우에, 패리티 데이터의 크기가 128 바이트로 제한될 수 있을 것이다. 이러한 크기 제한은, 기록 모듈(24)이, 저장된 패리티 데이터의 양을 용이하게 증가시키는 것을 방해할 수 있을 것이고, 이는 바람직하지 않을 수 있다.
도 4는, 메모리 장치의 동일한 페이지에 저장된 사용자 데이터 및 상응하는 패리티 데이터의 예시적인 논리적 구성을 도시한 개념도이다. 도 4에 도시된 바와 같이, 사용자 데이터(40A) 및 상응하는 패리티 데이터(42A)가 논리적 페이지 어드레스(44A)와 연관될 수 있을 것이고, 사용자 데이터(40B) 및 상응하는 패리티 데이터(42B)가 논리적 페이지 어드레스(44B)와 연관될 수 있을 것이다. 길이(46)가 각각의 논리적 페이지 어드레스에서의 사용자 데이터 및 패리티 데이터의 조합된 길이를 나타낼 수 있을 것이다. 일부 예에서, 사용자 데이터(40A) 및 사용자 데이터(40B)가 각각 8192 바이트 길이일 수 있고, 패리티 데이터(42A) 및 패리티 데이터(42B)가 각각 128 바이트 길이일 수 있으며, 그에 따라 각각의 논리적 페이지 어드레스에서 저장하고자 하는 데이터의 조합된 길이가 8320 바이트일 수 있을 것이다. 도 5는, 메모리 장치의 동일한 페이지에 저장된 사용자 데이터 및 상응하는 패리티 데이터의 예시적인 물리적 구성을 도시한 개념도이다. 일부 예에서, 물리적 페이지 어드레스(50A) 및 물리적 페이지 어드레스(50B)가 도 2의 페이지(19Aa) 및 페이지(19Ab)에 각각 상응할 수 있을 것이다. 길이(48)는, 기록 모듈(24)이 각각의 물리적 페이지 어드레스에서 저장될 수 있게 하는 데이터의 최대 크기를 나타낼 수 있을 것이다. 일부 예에서, 길이(48)가 8320 바이트일 수 있을 것이다.
논리적 페이지 어드레스에서의 데이터의 블록들의 조합된 크기가 각각의 물리적 페이지 어드레스에서 저장될 수 있는 데이터의 최대 크기와 같거나 그 미만인 경우에, 기록 모듈(24)은 각각의 논리적 페이지 어드레스에서의 데이터의 블록이 재배열 없이 물리적 페이지 어드레스에 기록되게 할 수 있을 것이다. 도 4 및 도 5의 예에서, 논리적 페이지 어드레스(44A)에서의 데이터의 블록들(즉, 사용자 데이터(40A) 및 패리티 데이터(42A))의 조합된 길이가 길이(48)와 같거나 그 미만이기 때문에, 기록 모듈(24)은 논리적 페이지 어드레스(44A)에서의 데이터의 블록이 재배열 없이 물리적 페이지 어드레스(50A)에 기록되게 할 수 있을 것이다. 그러나, 이러한 예에서, 사용자 데이터(40A) 및 패리티 데이터(42A)의 조합된 크기가 길이(48)보다 크지 않은 상태에서, 기록 모듈(24)이 패리티 데이터(42A)의 크기를 증가시킬 수 없다. 전술한 바와 같이, 이러한 제한이 바람직하지 않을 수 있을 것이다.
일부 예에서, 기록 모듈(24)은, 패리티 데이터의 크기와 메모리 장치(16)의 물리적 페이지의 크기가 독립적이 되게 할 수 있을 것이다. 예를 들어, 기록 모듈(24)이 사용자 데이터 및 패리티 데이터의 적어도 일부를 메모리 장치(16) 내의 상이한 물리적 페이지들에 저장할 수 있을 것이다. 하나의 예로서, 제어기(8)가 사용자 데이터와 함께 패리티 데이터의 제1 부분을 메모리 장치(16Aa)의 페이지(19Aa) 내에 저장할 수 있을 것이고, 패리티 데이터의 제2 부분을 메모리 장치(16Aa)의 페이지(19Ab) 내에 저장할 수 있을 것이다. 패리티 데이터의 제2 부분이 사용자 데이터와 별개인 메모리 장치(16)의 페이지 내에 저장됨에 따라, 사용자 데이터를 조회하기 위해서 판독 모듈(28)이 양 페이지(예를 들어, 페이지(19Aa) 및 페이지(19Ab))를 판독할 수 있을 것이다. 유사하게, 사용자 데이터를 저장할 때, 기록 모듈(24)이 메모리 장치(16) 내에서 2개의 상이한 물리적 페이지에 기록할 수 있을 것이다.
일부 예에서, 기록 모듈(24)에 의해서 저장된 패리티 데이터의 크기가 메모리 장치의 물리적 페이지의 크기와 독립적이 되게 할 수 있을 것이다. 예를 들어, 어드레스 변환 모듈(22)이, 논리적 페이지 어드레스를 복수의 물리적 페이지 어드레스로 맵핑할 수 있는 고급 논리적-대-물리적 어드레스 맵핑 체계를 실시할 수 있을 것이다. 그러한 체계의 예가 도 6 및 도 7를 참조하여 아래에서 설명된다.
도 6은, 메모리 장치의 상이한 페이지들에 저장된 사용자 데이터 및 적어도 일부의 패리티 데이터의 예시적인 논리적 구성을 도시한 개념도이다. 도 6에 도시된 바와 같이, 사용자 데이터(40A) 및 상응하는 패리티 데이터(42A1) 및 패리티 데이터(42A2)가 논리적 페이지 어드레스(44A)와 연관될 수 있을 것이고, 사용자 데이터(40B) 및 상응하는 패리티 데이터(42B1) 및 패리티 데이터(42B2)가 논리적 페이지 어드레스(44B)와 연관될 수 있을 것이다. 길이(46)가 각각의 논리적 페이지 어드레스에서의 사용자 데이터 및 패리티 데이터의 조합된 길이를 나타낼 수 있을 것이다. 도 6의 예에서, 사용자 데이터(40A) 및 사용자 데이터(40B)가 각각 8192 바이트 길이일 수 있고, 패리티 데이터(42A1), 패리티 데이터(42A2), 패리티 데이터(42B1), 및 패리티 데이터(42B2)가 각각 128 바이트 길이일 수 있으며, 그에 따라 각각의 논리적 페이지 어드레스에서 저장하고자 하는 데이터의 조합된 길이가 8448 바이트일 수 있을 것이다. 도 7은, 메모리 장치의 상이한 페이지들에 저장된 사용자 데이터 및 적어도 일부의 패리티 데이터의 예시적인 물리적 구성을 도시한 개념도이다. 일부 예에서, 물리적 페이지 어드레스(50A), 물리적 페이지 어드레스(50B), 및 물리적 페이지 어드레스(50C)가 도 2의 페이지(19Aa), 페이지(19Ab), 및 페이지(19Ac)에 각각 상응할 수 있을 것이다. 길이(48)는, 기록 모듈(24)이 각각의 물리적 페이지 어드레스에서 저장될 수 있게 하는 데이터의 최대 크기를 나타낼 수 있을 것이다. 도 7의 예에서, 길이(48)가 8320 바이트일 수 있을 것이다.
전술한 바와 같이, 논리적 페이지 어드레스에서의 데이터의 블록들의 조합된 크기가 각각의 물리적 페이지 어드레스에서 저장될 수 있는 데이터의 최대 크기와 같거나 그 미만인 경우에, 기록 모듈(24)은 각각의 논리적 페이지 어드레스에서의 데이터의 블록이 재배열 없이 물리적 페이지 어드레스에 기록되게 할 수 있을 것이다. 그러나, 도 6 및 도 7의 예에서, 논리적 페이지 어드레스(44A)에서의 데이터의 블록들(즉, 사용자 데이터(40A), 패리티 데이터(42A1), 및 패리티 데이터(42A2))의 조합된 길이가 길이(48)보다 크기 때문에, 기록 모듈(24)은 논리적 페이지 어드레스(44A)에서의 데이터의 블록이 복수의 물리적 페이지 어드레스에 기록되게 할 수 있을 것이다. 예를 들어, 기록 모듈(24)이 논리적 페이지 어드레스(44A)에서 데이터의 블록을 저장할 수 있게 하기 위해서, 어드레스 변환 모듈(22)이 논리적 페이지 어드레스(44A)를 물리적 페이지 어드레스(50A)의 전부 및 물리적 페이지 어드레스(50B)의 제1 부분으로 맵핑할 수 있을 것이다. 유사하게, 기록 모듈(24)이 논리적 페이지 어드레스(44B)에서 데이터의 블록을 저장할 수 있게 하기 위해서, 어드레스 변환 모듈(22)이 논리적 페이지 어드레스(44B)를 물리적 페이지 어드레스(50B)의 제2 부분 및 물리적 페이지 어드레스(50C)의 제1 부분으로 맵핑할 수 있을 것이다. 맵핑을 기초로, 기록 모듈(24)이 사용자 데이터(40A) 및 패리티 데이터(42A1)를 물리적 페이지 어드레스(50A), 패리티 데이터(42A2) 및 사용자 데이터(40B)를 물리적 페이지 어드레스(50B)에, 그리고 패리티 데이터(42B1) 및 패리티 데이터(42B2)를 물리적 페이지 어드레스(50C)에 저장할 수 있을 것이다. 이러한 방식으로, 기록 모듈(24)이 더 큰 크기의 패리티 데이터를 저장할 수 있을 것이다.
패리티 데이터의 일부가 사용자 데이터와 별개인 페이지 내에 저장될 수 있기 때문에, 페이지 기록 모듈(24)이 사용자 데이터의 블록을 저장하기 위해서 2개의 기록 동작을 실시할 수 있을 것이다. 유사하게, 판독 모듈(28)이 사용자 데이터의 블록을 조회하기 위해서 2개의 판독 동작을 실시할 수 있을 것이다. 일부 예에서, (예를 들어, 사이클 계수 증가, 성능 감소, 신뢰성 감소, 및 판독 장애 증가로 인해서) 사용자 데이터의 단일 블록을 조회 또는 저장하기 위한 복수의 판독 또는 기록 동작이 바람직하지 않을 수 있을 것이다.
그에 따라, 일부 예에서, 단일 메모리 장치(예를 들어, 메모리 장치들(16) 중의 메모리 장치) 내에서, 상응하는 사용자 데이터와 상이한 물리적 페이지에서 패리티 데이터의 적어도 일부를 저장하는 대신에, 기록 모듈(24)이 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20) 내에 저장할 수 있을 것이다. 예를 들어, 기록 모듈(24)이 사용자 데이터의 블록에 대한 패리티 데이터를 결정할 수 있을 것이고, 사용자 데이터의 블록을 메모리 장치(16) 내에 저장할 수 있을 것이며, 그리고 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20) 내에 저장할 수 있을 것이다. 그러한 체계의 예가 도 8 및 도 9를 참조하여 아래에서 설명된다. 일부 예에서, 기록 모듈(24)이, 병렬로, 패리티 데이터의 일부를 패리티 메모리 장치(20)에 기록할 수 있을 것이고 사용자 데이터의 블록을 메모리 장치(16)에 기록할 수 있을 것이다. 유사하게, 일부 예에서, 판독 모듈(28)이, 병렬로, 패리티 데이터의 일부를 패리티 메모리 장치(20)로부터 판독할 수 있을 것이고 사용자 데이터의 블록을 메모리 장치(16)로부터 판독할 수 있을 것이다. 이러한 방식으로, 기록 모듈(24)은, 바람직하지 못한 영향(예를 들어, 사이클 계수 증가, 성능 감소, 신뢰성 감소, 및 판독 장애 증가)이 없이 또는 바람직하지 못한 영향이 감소된 상태에서, 보다 큰 패리티 데이터의 크기를 이용할 수 있을 것이다.
도 8은, 상이한 메모리 장치들에 저장된 사용자 데이터 및 적어도 일부의 패리티 데이터의 예시적인 논리적 구성을 도시한 개념도이다. 도 8에 도시된 바와 같이, 사용자 데이터(40A) 및 상응하는 패리티 데이터(42A1) 및 패리티 데이터(42A2)가 논리적 페이지 어드레스(44A)와 연관될 수 있을 것이고, 사용자 데이터(40B) 및 상응하는 패리티 데이터(42B1) 및 패리티 데이터(42B2)가 논리적 페이지 어드레스(44B)와 연관될 수 있을 것이다. 길이(46)가 각각의 논리적 페이지 어드레스에서의 사용자 데이터 및 패리티 데이터의 조합된 길이를 나타낼 수 있을 것이다. 도 8의 예에서, 사용자 데이터(40A) 및 사용자 데이터(40B)가 각각 8192 바이트 길이일 수 있고, 패리티 데이터(42A1), 패리티 데이터(42A2), 패리티 데이터(42B1), 및 패리티 데이터(42B2)가 각각 128 바이트 길이일 수 있으며, 그에 따라 각각의 논리적 페이지 어드레스에서 저장하고자 하는 데이터의 조합된 길이가 8448 바이트일 수 있을 것이다.
도 9는, 상이한 메모리 장치들에 저장된 사용자 데이터 및 적어도 일부의 패리티 데이터의 예시적인 물리적 구성을 도시한 개념도이다. 일부 예에서, 물리적 페이지 어드레스(50A) 및 물리적 페이지 어드레스(50B)가 도 2의 페이지(19Aa) 및 페이지(19Ab)에 각각 상응할 수 있을 것이다. 길이(48)는, 기록 모듈(24)이 메모리 장치(16)의 각각의 물리적 페이지 어드레스에서 저장될 수 있게 하는 데이터의 최대 크기를 나타낼 수 있을 것이다. 도 9의 예에서, 길이(48)가 8320 바이트일 수 있을 것이다. 길이(52)가, 패리티 메모리 장치들(20) 중의 패리티 메모리 장치에 기록된 패리티 데이터의 크기를 나타낼 수 있을 것이다.
도 9에 도시된 바와 같이, 기록 모듈(24)이 패리티 데이터의 적어도 일부를 패리티 메모리 장치(20) 내에 저장할 수 있을 것이다. 예를 들어, 기록 모듈(24)이 사용자 데이터(40A)에 대한 제1 패리티 데이터(42A1) 및 제2 패리티 데이터(42A2)를 결정할 수 있을 것이다. 도 8에 도시된 바와 같이, 사용자 데이터(40A), 제1 패리티 데이터(42A1), 및 제2 패리티 데이터(42A2) 모두가 논리적 페이지 어드레스(44A)와 연관될 수 있을 것이다. 어드레스 변환 모듈(22)이, 사용자 데이터(40A) 및 제1 패리티 데이터(42A1)를, 도 2의 페이지(19Aa)에 상응할 수 있는, 메모리 장치(16)의 물리적 페이지 어드레스(50A)로 맵핑하는, 그리고 제2 패리티 데이터(42A2)를 패리티 메모리 장치(20)로 맵핑하는 맵핑을 제공할 수 있을 것이다. 맵핑을 기초로, 기록 모듈(24)은, 사용자 데이터(40A) 및 제1 패리티 데이터(42A1)가 도 2의 메모리 장치(16Aa)의 페이지(19Aa)에 기록되게 할 수 있을 것이고, 제2 패리티 데이터(42A2)가 패리티 메모리 장치(20)에 기록되게 할 수 있을 것이다.
도 10은, 본 개시 내용의 하나 이상의 기술에 따른, 패리티 데이터를, 상응하는 사용자 데이터와 상이한 메모리 장치 내에 저장하기 위한 예시적인 기술을 도시한 흐름도이다. 비록 저장 장치(6) 또는 제어기(8)의 구성과 상이한 구성을 가지는 컴퓨팅 장치가 도 10의 기술을 실시할 수 있지만, 용이한 설명을 위해서 도 1 및 도 3의 저장 장치(6) 및 제어기(8)를 동시에 참조하여 도 10의 기술을 설명할 것이다.
도 10에 도시된 바와 같이, 제어기(8)가 저장하고자 하는 데이터의 블록을 수신할 수 있을 것이다(1002). 예를 들어, 제어기(8)의 기록 모듈(24)이, 저장하고자 하는 사용자 데이터의 블록을 도 1의 호스트(4)로부터 수신할 수 있을 것이다. 제어기(8)가 데이터의 블록에 대한 패리티 데이터를 결정할 수 있을 것이다(1004). 예를 들어, 기록 모듈(24)이 호스트 장치(4)로부터 수신된 사용자 데이터의 블록에 대한 XOR 패리티 데이터를 결정할 수 있을 것이다. 일부 예에서, 기록 모듈(24)이 데이터의 블록에 대해서 결정하기 위한 패리티 데이터의 크기를 선택할 수 있을 것이다. 예를 들어, 기록 모듈(24)이, 비트 오류율(BER)과 같은, 메모리 장치(16)의 하나 이상의 안정적인 통계(health statistic)를 기초로 패리티 데이터의 크기를 선택할 수 있을 것이다. 하나의 예로서, BER이 문턱값보다 작은 경우에, 기록 모듈(24)은, 데이터의 블록에 대해서 결정하기 위한, 이어서 BER이 문턱값(예를 들어, 데이터의 블록의 크기가 8192 바이트인 경우에, 256 바이트)보다 큰 때를 위한, 작은 크기의 패리티 데이터(예를 들어, 데이터의 블록의 크기가 8192 바이트인 경우에, 128 바이트)를 선택할 수 있을 것이다.
제어기(8)는, 패리티 데이터 및 데이터의 블록의 조합된 크기가 일차적인 저장 어레이의 페이지의 크기보다 큰지의 여부를 결정할 수 있을 것이다(1006). 예를 들어, 기록 모듈(24)은, 패리티 데이터 및 데이터의 블록의 조합된 크기가 비-휘발성 메모리 어레이(10)의 메모리 장치들(16) 중의 메모리 장치의 페이지의 크기보다 큰지의 여부를 결정할 수 있을 것이다.
만약 패리티 데이터 및 데이터의 블록의 조합된 크기가 일차적인 저장 어레이의 페이지의 크기보다 크지 않다면(1006의 "아니오" 분지), 제어기(8)는 데이터의 블록 및 패리티 데이터를 일차적인 저장 어레이의 페이지에 기록할 수 있을 것이다(1008). 예를 들어, 기록 모듈(24)은, 채널 제어기(32A)로 하여금, 데이터의 블록 및 패리티 데이터를 도 2의 메모리 장치(16Aa)의 블록(17A)의 페이지(19Aa)에 기록하게 할 수 있을 것이다.
만약 패리티 데이터 및 데이터의 블록의 조합된 크기가 일차적인 저장 어레이의 페이지의 크기보다 크다면(1006의 "예" 분지), 제어기(8)는 데이터의 블록 및 패리티 데이터의 제1 부분을 일차적인 저장 어레이의 페이지에 기록할 수 있을 것이고, 패리티 데이터의 제2 부분을 패리티 메모리 장치에 기록할 수 있을 것이다(1010). 예를 들어, 기록 모듈(24)은, 채널 제어기(32A)로 하여금 데이터의 블록 및 패리티 데이터의 제1 부분을 페이지(19Aa)에 기록하게 할 수 있을 것이고, 패리티 메모리 장치들(20) 중의 패리티 메모리 장치가 패리티 데이터의 제2 부분을 저장하게 할 수 있을 것이다. 이러한 방식으로, 제어기(8)가 패리티 데이터의 적어도 일부를 상응하는 데이터의 블록과 별개인 메모리 장치 내에 저장할 수 있을 것이다.
전술한 동작이 단지 하나의 예이고 다른 변경이 고려될 수 있을 것이다. 예를 들어, 일부 예에서, 제어기(8)가 일차적인 저장 어레이 내에 어떠한 패리티 데이터도 저장하지 않을 수 있을 것이고, 패리티 데이터의 크기와 관계없이, 패리티 데이터를 패리티 메모리 장치에 항상 저장할 수 있을 것이다.
이러한 개시 내용에서 설명된 기술이, 적어도 부분적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 실시될 수 있을 것이다. 예를 들어, 설명된 기술의 여러 가지 양태가, 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 임의의 다른 균등한 집적된 또는 구분된 논리 회로망뿐만 아니라, 그러한 구성요소의 임의의 조합을 포함하는, 하나 이상의 프로세서에서 실시될 수 있을 것이다. "프로세서" 또는 "프로세싱 회로망"이라는 용어가 일반적으로, 단독적인 또는 다른 논리 회로망이나 임의의 다른 균등한 회로망과 조합된, 전술한 논리 회로망 중 임의의 것을 지칭할 수 있을 것이다. 하드웨어를 포함하는 제어 유닛이 또한 이러한 개시 내용의 기술 중 하나 이상을 실시할 수 있을 것이다.
그러한 하드웨어, 소프트웨어, 및 펌웨어가 동일한 장치 내에서 또는 별개의 장치 내에서 구현되어 본 개시 내용에서 설명된 여러 가지 기술을 지원할 수 있을 것이다. 또한, 전술한 유닛, 모듈, 또는 구성요소 중 임의의 것이 함께, 또는 구분적이나 상호 동작 가능한 논리 장치로서 별개로 구현될 수 있을 것이다. 모듈 또는 유닛과 같은 다른 특징부에 관한 도시는 상이한 기능적 양태들을 강조하기 위한 것이고, 그러한 모듈 또는 유닛이 별개의 하드웨어, 펌웨어, 또는 소프트웨어 구성요소에 의해서 반드시 실현되어야 한다는 것을 반드시 의미하지는 않는다. 오히려, 하나 이상의 모듈 또는 유닛과 연관된 기능이 별개의 하드웨어, 펌웨어, 또는 소프트웨어 구성요소에 의해서 실시될 수 있거나, 공통의 또는 별개의 하드웨어, 펌웨어, 또는 소프트웨어 구성요소 내에 통합될 수 있을 것이다.
본 개시 내용에서 설명된 기술이 또한, 명령어로 인코딩된 컴퓨터-판독 가능 저장 매체를 포함하는 제조 물품 내에서 구현되거나 인코딩될 수 있을 것이다. 인코딩된 컴퓨터-판독 가능 저장 매체를 포함하는 제조 물품 내에 내장된 또는 인코딩된 명령어가, 예를 들어 컴퓨터-판독 가능 저장 매체 내에 포함된 또는 인코딩된 명령어가 하나 이상의 프로세서에 의해서 실행될 때, 하나 이상의 프로그래밍 가능 프로세서, 또는 다른 프로세서로 하여금, 본원에서 설명된 기술 중 하나 이상을 실시하게 할 수 있을 것이다. 컴퓨터 판독 가능 저장 매체가 랜덤 액세스 메모리 (RAM), 리드 온리 메모리 (ROM), 프로그래머블 리드 온리 메모리(PROM), 소거 가능 프로그래머블 리드 온리 메모리(EPROM), 전기적으로 소거 가능한 프로그래머블 리드 온리 메모리(EEPROM), 플래시 메모리, 하드 디스크, 콤팩트 디스크 ROM(CD-ROM), 플로피 디스크, 카세트, 자기 매체, 광 매체, 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있을 것이다. 일부 예에서, 제조 물품이 하나 이상의 컴퓨터-판독 가능 저장 매체를 포함할 수 있을 것이다.
일부 예에서, 컴퓨터-판독 가능 저장 매체가 비-일시적 메체를 포함할 수 있을 것이다. "비-일시적"이라는 용어는, 저장 매체가 반송파 또는 전파 신호(propagated signal)로 구현되지 않는다는 것을 나타낼 수 있을 것이다. 특정 예에서, 비-일시적 저장 매체가, (예를 들어, RAM 또는 캐시 내의) 시간에 걸쳐서 변화될 수 있는 데이터를 저장할 수 있을 것이다.
여러 가지 예가 설명되었다. 이러한 예 및 다른 예가 이하의 청구항의 범위 내에 포함된다.

Claims (20)

  1. 복수의 메모리 장치를 포함하는 일차적인 저장 어레이;
    하나 이상의 패리티 메모리 장치; 및
    적어도:
    데이터의 블록을 상기 일차적인 저장 어레이에 기록하는 것;
    상기 데이터의 블록에 대한 패리티 데이터를 결정하는 것;
    상기 데이터의 블록에 대해서 결정하기 위한 패리티 데이터의 크기를 선택하는 것;
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 클 때, 상기 결정된 패리티 데이터의 적어도 일부를 상기 하나 이상의 패리티 메모리 장치에 기록하는 것; 및
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 작거나 같을 때, 상기 결정된 패리티 데이터의 적어도 일부를 상기 일차적인 저장 어레이에 기록하는 것
    에 의해서, 상기 데이터의 블록을 저장하도록 구성되는 제어기를 포함하는, 저장 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 패리티 데이터를 결정하기 위해서, 상기 제어기가, 상기 데이터의 블록에 대한 제1 패리티 데이터 및 제2 패리티 데이터를 결정하도록 구성되고,
    상기 데이터의 블록을 상기 일차적인 저장 어레이에 기록하기 위해서, 상기 제어기가, 상기 데이터의 블록 및 상기 제1 패리티 데이터를 상기 일차적인 저장 어레이의 페이지에 기록하도록 구성되고, 그리고
    상기 패리티 데이터의 일부를 상기 하나 이상의 패리티 메모리 장치에 기록하기 위해서, 상기 제어기가, 상기 제2 패리티 데이터를 상기 하나 이상의 패리티 메모리 장치에 기록하도록 구성되는, 저장 장치.
  4. 제1항에 있어서,
    상기 제어기는 또한, 적어도:
    상기 데이터의 블록을 상기 일차적인 저장 어레이로부터 판독하는 것;
    상기 패리티 데이터를 상기 하나 이상의 패리티 메모리 장치로부터 판독하는 것; 그리고
    상기 패리티 데이터를 기초로 상기 데이터의 블록을 확인(verify)하는 것에 의해서, 상기 데이터의 블록을 조회(retrieve)하도록 구성되는, 저장 장치.
  5. 제1항에 있어서,
    상기 하나 이상의 패리티 메모리 장치가, 상기 일차적인 저장 어레이의 복수의 메모리 장치와 상이한 유형의 메모리 장치인, 저장 장치.
  6. 제5항에 있어서,
    상기 일차적인 저장 어레이의 복수의 메모리 장치가 복수의 플래시 메모리 장치를 포함하고, 상기 하나 이상의 패리티 메모리 장치가 하나 이상의 자기저항형 랜덤-액세스 메모리(MRAM), 상변화 랜덤-액세스 메모리(PRAM), 또는 저항형 랜덤-액세스 메모리(ReRAM) 장치를 포함하는, 저장 장치.
  7. 저장 장치의 제어기에 의해서, 데이터의 블록을 복수의 메모리 장치를 포함하는 일차적인 저장 어레이에 기록하는 단계;
    상기 제어기에 의해서, 상기 데이터의 블록에 대한 패리티 데이터를 결정하는 단계;
    상기 데이터의 블록에 대해서 결정하기 위한 패리티 데이터의 크기를 선택하는 단계;
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 클 때, 상기 제어기에 의해서, 상기 결정된 패리티 데이터의 적어도 일부를 하나 이상의 패리티 메모리 장치에 기록하는 단계; 및
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 작거나 같을 때, 상기 제어기에 의해서, 상기 결정된 패리티 데이터의 적어도 일부를 상기 일차적인 저장 어레이에 기록하는 단계
    를 포함하는, 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 패리티 데이터를 결정하는 단계가 상기 데이터의 블록에 대한 제1 패리티 데이터 및 제2 패리티 데이터를 결정하는 단계를 포함하고,
    상기 데이터의 블록을 상기 일차적인 저장 어레이에 기록하는 단계가, 상기 데이터의 블록 및 상기 제1 패리티 데이터를 상기 일차적인 저장 어레이의 페이지에 기록하는 단계를 포함하고, 그리고
    상기 패리티 데이터의 일부를 상기 하나 이상의 패리티 메모리 장치에 기록하는 단계가, 상기 제2 패리티 데이터를 상기 하나 이상의 패리티 메모리 장치에 기록하는 단계를 포함하는, 방법.
  10. 제7항에 있어서,
    상기 데이터의 블록을 조회하는 단계를 더 포함하고, 상기 조회하는 단계는 적어도:
    상기 데이터의 블록을 상기 일차적인 저장 어레이로부터 판독하는 단계;
    상기 패리티 데이터를 상기 하나 이상의 패리티 메모리 장치로부터 판독하는 단계; 그리고
    상기 패리티 데이터를 기초로 상기 데이터의 블록을 확인하는 단계에 의해서 수행되는, 방법.
  11. 제7항에 있어서,
    상기 하나 이상의 패리티 메모리 장치가, 상기 일차적인 저장 어레이의 복수의 메모리 장치와 상이한 유형의 메모리 장치인, 방법.
  12. 제11항에 있어서,
    상기 일차적인 저장 어레이의 복수의 메모리 장치가 복수의 플래시 메모리 장치를 포함하고, 상기 하나 이상의 패리티 메모리 장치가 하나 이상의 자기저항형 랜덤-액세스 메모리(MRAM), 상변화 랜덤-액세스 메모리(PRAM), 또는 저항형 랜덤-액세스 메모리(ReRAM) 장치를 포함하는, 방법.
  13. 명령어를 저장하는 컴퓨터-판독 가능 저장 매체에 있어서,
    상기 명령어는, 실행될 때, 저장 장치의 하나 이상의 프로세서로 하여금:
    데이터의 블록을 복수의 메모리 장치를 포함하는 일차적인 저장 어레이에 기록하게 하고;
    상기 데이터의 블록에 대한 패리티 데이터를 결정하게 하고;
    상기 데이터의 블록에 대해서 결정하기 위한 패리티 데이터의 크기를 선택하게 하고;
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 클 때, 상기 결정된 패리티 데이터의 적어도 일부를 하나 이상의 패리티 메모리 장치에 기록하게 하며;
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 작거나 같을 때, 상기 결정된 패리티 데이터의 적어도 일부를 상기 일차적인 저장 어레이에 기록하게 하는, 컴퓨터-판독 가능 저장 매체.
  14. 삭제
  15. 제13항에 있어서,
    상기 하나 이상의 프로세서로 하여금 상기 패리티 데이터를 결정하게 하는 상기 명령어가, 상기 하나 이상의 프로세서로 하여금 상기 데이터의 블록에 대한 제1 패리티 데이터 및 제2 패리티 데이터를 결정하게 하는 명령어를 포함하고,
    상기 하나 이상의 프로세서로 하여금 상기 데이터의 블록을 상기 일차적인 저장 어레이에 기록하게 하는 명령어가, 상기 하나 이상의 프로세서로 하여금 상기 데이터의 블록 및 상기 제1 패리티 데이터를 상기 일차적인 저장 어레이의 페이지에 기록하게 하는 명령어를 포함하며, 그리고
    상기 하나 이상의 프로세서로 하여금 상기 패리티 데이터의 일부를 상기 하나 이상의 패리티 메모리 장치에 기록하게 하는 명령어가, 상기 하나 이상의 프로세서로 하여금 상기 제2 패리티 데이터를 상기 하나 이상의 패리티 메모리 장치에 기록하게 하는 명령어를 포함하는, 컴퓨터-판독 가능 저장 매체.
  16. 제13항에 있어서,
    상기 하나 이상의 패리티 메모리 장치가, 상기 일차적인 저장 어레이의 복수의 메모리 장치와 상이한 유형의 메모리 장치인, 컴퓨터-판독 가능 저장 매체.
  17. 복수의 메모리 장치를 포함하는 일차적인 저장 어레이;
    하나 이상의 패리티 메모리 장치;
    데이터의 블록을 상기 일차적인 저장 어레이에 기록하기 위한 수단;
    상기 데이터의 블록에 대한 패리티 데이터를 결정하기 위한 수단;
    상기 데이터의 블록에 대해서 결정하기 위한 패리티 데이터의 크기를 선택하기 위한 수단;
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 클 때, 상기 결정된 패리티 데이터의 적어도 일부를 하나 이상의 패리티 메모리 장치에 기록하기 위한 수단; 및
    상기 데이터의 블록 및 상기 선택된 크기의 패리티 데이터의 조합된 크기가 상기 일차적인 저장 어레이의 페이지의 크기보다 작거나 같을 때, 상기 결정된 패리티 데이터의 적어도 일부를 상기 일차적인 저장 어레이에 기록하기 위한 수단
    을 포함하는, 시스템.
  18. 삭제
  19. 제17항에 있어서,
    상기 패리티 데이터를 결정하기 위한 수단이 상기 데이터의 블록에 대한 제1 패리티 데이터 및 제2 패리티 데이터를 결정하기 위한 수단을 포함하고,
    상기 데이터의 블록을 상기 일차적인 저장 어레이에 기록하기 위한 수단이, 상기 데이터의 블록 및 상기 제1 패리티 데이터를 상기 일차적인 저장 어레이의 페이지에 기록하기 위한 수단을 포함하고, 그리고
    상기 패리티 데이터의 일부를 상기 하나 이상의 패리티 메모리 장치에 기록하기 위한 수단이, 상기 제2 패리티 데이터를 상기 하나 이상의 패리티 메모리 장치에 기록하기 위한 수단을 포함하는, 시스템.
  20. 제17항에 있어서,
    상기 하나 이상의 패리티 메모리 장치가, 상기 일차적인 저장 어레이의 복수의 메모리 장치와 상이한 유형의 메모리 장치인, 시스템.
KR1020160102536A 2015-08-11 2016-08-11 보호된 데이터로부터 분리된 패리티 데이터 저장 KR101861924B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/823,796 US10133625B2 (en) 2015-08-11 2015-08-11 Storing parity data separate from protected data
US14/823,796 2015-08-11

Publications (2)

Publication Number Publication Date
KR20170019330A KR20170019330A (ko) 2017-02-21
KR101861924B1 true KR101861924B1 (ko) 2018-05-28

Family

ID=57799964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160102536A KR101861924B1 (ko) 2015-08-11 2016-08-11 보호된 데이터로부터 분리된 패리티 데이터 저장

Country Status (8)

Country Link
US (1) US10133625B2 (ko)
JP (1) JP2017079050A (ko)
KR (1) KR101861924B1 (ko)
CN (1) CN106445724B (ko)
AU (1) AU2016213809B2 (ko)
CA (1) CA2938584A1 (ko)
DE (1) DE102016009806A1 (ko)
GB (1) GB2541299B (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
US10120751B2 (en) * 2015-09-25 2018-11-06 Intel Corporation Techniques to recover data using exclusive OR (XOR) parity information
US10120797B1 (en) * 2016-09-30 2018-11-06 EMC IP Holding Company LLC Managing mapping metadata in storage systems
US20180137005A1 (en) * 2016-11-15 2018-05-17 Intel Corporation Increased redundancy in multi-device memory package to improve reliability
US10474527B1 (en) * 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
US10459809B2 (en) 2017-06-30 2019-10-29 Intel Corporation Stacked memory chip device with enhanced data protection capability
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
WO2019178538A1 (en) * 2018-03-16 2019-09-19 Micron Technology, Inc Clustered parity for nand data placement schema
US10997071B2 (en) * 2018-11-27 2021-05-04 Micron Technology, Inc. Write width aligned storage device buffer flush
US10949297B2 (en) 2018-12-05 2021-03-16 Micron Technology, Inc. NAND device mixed parity management
US10942809B2 (en) * 2018-12-20 2021-03-09 Micron Technology, Inc. Changing of error correction codes based on the wear of a memory sub-system
US11106534B2 (en) 2019-02-27 2021-08-31 Western Digital Technologies, Inc. 3-dimensional NAND flash layer variation aware SSD raid
CN109992444A (zh) * 2019-03-25 2019-07-09 深圳忆联信息系统有限公司 一种基于硬件的端对端数据保护方法、装置、计算机设备及存储介质
US11164652B2 (en) 2019-06-21 2021-11-02 Micron Technology, Inc. Two-layer code with low parity cost for memory sub-systems
US10838811B1 (en) * 2019-08-14 2020-11-17 Silicon Motion, Inc. Non-volatile memory write method using data protection with aid of pre-calculation information rotation, and associated apparatus
TWI714248B (zh) * 2019-09-09 2020-12-21 新唐科技股份有限公司 記憶體控制器與資料保護方法
KR20210034711A (ko) 2019-09-20 2021-03-31 삼성전자주식회사 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법
US11416336B2 (en) 2019-10-15 2022-08-16 International Business Machines Corporation Managing parity data associated with configuration register data
CN110708513B (zh) * 2019-10-18 2021-06-01 中国科学院长春光学精密机械与物理研究所 一种8k视频多核异构处理装置
US11119855B2 (en) * 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
US11004535B1 (en) 2019-12-17 2021-05-11 Sandisk Technologies Llc Robust storage of bad column data and parity bits on word line
US11630725B2 (en) * 2019-12-24 2023-04-18 Micron Technology, Inc. Management of parity data in a memory sub-system
US11200162B2 (en) 2020-04-28 2021-12-14 Western Digital Technologies, Inc. Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
US11296729B2 (en) 2020-07-23 2022-04-05 Micron Technology, Inc. Data reliability for extreme temperature usage conditions in data storage
US11385961B2 (en) * 2020-08-14 2022-07-12 Micron Technology, Inc. Adaptive parity techniques for a memory device
CN112764683B (zh) * 2021-01-22 2023-01-10 苏州浪潮智能科技有限公司 存储块管理信息同步记录方法、系统、终端及存储介质
JP2022146585A (ja) 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
US11822814B2 (en) * 2022-02-28 2023-11-21 Western Digital Technologies, Inc. Dynamic XOR bin mapping in memory devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013225830A (ja) * 2012-03-19 2013-10-31 Toshiba Corp メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05326871A (ja) 1992-05-26 1993-12-10 Kokusai Electric Co Ltd メモリモジュール
KR20080080882A (ko) * 2007-03-02 2008-09-05 삼성전자주식회사 Ecc용 레이어를 구비하는 다층 구조 반도체 메모리 장치및 이를 이용하는 에러 검출 및 정정 방법
CN103984587B (zh) * 2008-06-12 2017-10-20 普安科技股份有限公司 储存虚拟化系统中更新实体储存装置的控制程序的方法
US8516343B2 (en) 2008-11-10 2013-08-20 Fusion-Io, Inc. Apparatus, system, and method for retiring storage regions
KR101526497B1 (ko) * 2008-11-27 2015-06-10 삼성전자주식회사 시스템 온 칩 및 이에 대한 정보 처리 방법
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
KR20120093385A (ko) 2009-12-16 2012-08-22 샌디스크 아이엘 엘티디 멀티레벨 셀들에 기록된 데이터를 위한 보조 패리티 비트
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
EP2633409A4 (en) 2010-10-27 2014-07-23 Lsi Corp ADAPTIVE ECC TECHNIQUES FOR FLASH MEMORY AND BASED ON DATA STORAGE
US9058288B2 (en) 2011-04-03 2015-06-16 Apple Inc. Redundant storage in non-volatile memory by storing redundancy information in volatile memory
US9318166B2 (en) * 2011-07-22 2016-04-19 SanDisk Technologies, Inc. Systems and methods of storing data
JP5845876B2 (ja) 2011-12-20 2016-01-20 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US8898541B2 (en) * 2011-11-30 2014-11-25 Sony Corporation Storage controller, storage device, information processing system, and storage controlling method
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
KR101938210B1 (ko) 2012-04-18 2019-01-15 삼성전자주식회사 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법
WO2013190597A1 (en) 2012-06-21 2013-12-27 Hitachi, Ltd. Flash memory device and storage control method
US8924820B2 (en) * 2012-07-27 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
KR101700057B1 (ko) 2012-11-30 2017-01-26 가코호진 쥬오 다이가쿠 반도체 기억 장치 및 그 제어 방법
KR101977684B1 (ko) 2012-12-12 2019-05-13 삼성전자 주식회사 저항체를 이용한 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러 동작방법, 상기 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 시스템 및 비휘발성 메모리 장치
CN103164343B (zh) * 2013-02-27 2015-12-09 山东大学 基于相变存储器的分页、ecc校验及多位预取方法及其结构
US9262267B2 (en) 2013-12-02 2016-02-16 Intel Corporation Error correction in solid state drives (SSD)
US9262268B2 (en) * 2013-12-20 2016-02-16 Seagate Technology Llc Method to distribute user data and error correction data over different page types by leveraging error rate variations
WO2015170854A1 (ko) 2014-05-08 2015-11-12 엘지전자 주식회사 Mimo 수신기에서 re 그룹을 형성하여 수신 신호를 처리하는 방법
US9348695B2 (en) * 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data
KR102298607B1 (ko) * 2015-02-17 2021-09-06 삼성전자주식회사 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
US9830093B2 (en) * 2015-03-27 2017-11-28 Intel Corporation Method and apparatus for improving immunity to defects in a non-volatile memory
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013225830A (ja) * 2012-03-19 2013-10-31 Toshiba Corp メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法

Also Published As

Publication number Publication date
US10133625B2 (en) 2018-11-20
JP2017079050A (ja) 2017-04-27
AU2016213809A1 (en) 2017-03-02
US20170046221A1 (en) 2017-02-16
GB2541299A (en) 2017-02-15
CN106445724A (zh) 2017-02-22
AU2016213809B2 (en) 2017-11-23
GB2541299B (en) 2020-02-05
KR20170019330A (ko) 2017-02-21
DE102016009806A1 (de) 2017-02-16
CA2938584A1 (en) 2017-02-11
CN106445724B (zh) 2020-06-16

Similar Documents

Publication Publication Date Title
KR101861924B1 (ko) 보호된 데이터로부터 분리된 패리티 데이터 저장
US20200159418A1 (en) Multi-Tier Scheme for Logical Storage Management
US10275310B2 (en) Updating exclusive-or parity data
KR101908581B1 (ko) 저장 디바이스들에서의 웨어 레벨링
KR101933763B1 (ko) 연판정 디코딩을 위한 물리적 페이지 어드레스들을 상관시키는 것
US10289408B2 (en) Managing wear of system areas of storage devices
US9645769B2 (en) Performance acceleration during shutdown of a data storage device
US20170206170A1 (en) Reducing a size of a logical to physical data address translation table
US9582192B2 (en) Geometry aware block reclamation
US20170177241A1 (en) Automated latency monitoring
US10459803B2 (en) Method for management tables recovery
US10025664B2 (en) Selective buffer protection
US20180024751A1 (en) Metadata management on a storage device
US11733920B2 (en) NVMe simple copy command support using dummy virtual function
US20210389885A1 (en) Fast Recovery For Persistent Memory Region (PMR) of a Data Storage Device
CN114730247A (zh) 具有数据的最小写入大小的存储设备
US20160211024A1 (en) Decoding data using a reserved word line
US20240111427A1 (en) Data Storage Device That Detects And Releases Input Queue Bottlenecks
WO2023043501A1 (en) Data storage devices, systems, and related methods to determine writing fragmentation levels of memory devices
WO2023069148A1 (en) Data storage devices, systems, and related methods for grouping commands of doorbell transactions from host devices
WO2023080928A1 (en) Dynamic controller buffer management and configuration

Legal Events

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