KR20140139545A - 물리 페이지, 논리 페이지, 및 코드워드 대응 - Google Patents

물리 페이지, 논리 페이지, 및 코드워드 대응 Download PDF

Info

Publication number
KR20140139545A
KR20140139545A KR1020147028217A KR20147028217A KR20140139545A KR 20140139545 A KR20140139545 A KR 20140139545A KR 1020147028217 A KR1020147028217 A KR 1020147028217A KR 20147028217 A KR20147028217 A KR 20147028217A KR 20140139545 A KR20140139545 A KR 20140139545A
Authority
KR
South Korea
Prior art keywords
logical
data
memory
page
pages
Prior art date
Application number
KR1020147028217A
Other languages
English (en)
Other versions
KR101660150B1 (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 KR20140139545A publication Critical patent/KR20140139545A/ko
Application granted granted Critical
Publication of KR101660150B1 publication Critical patent/KR101660150B1/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/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
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity
    • 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/061Improving I/O performance
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 물리 페이지, 논리 페이지, 및 코드워드 대응을 위한 장치들 및 방법들을 포함한다. 다수의 방법들은 데이터의 다수의 논리 페이지들을 다수의 코드워드들로 에러 코딩하는 단계 및 다수의 코드워드들을 메모리의 다수의 물리 페이지들에 기록하는 단계를 포함한다. 데이터의 다수의 논리 페이지들은 메모리의 다수의 물리 페이지들과 상이할 수 있다.

Description

물리 페이지, 논리 페이지, 및 코드워드 대응{PHYSICAL PAGE, LOGICAL PAGE, AND CODEWORD CORRESPONDENCE}
본 발명은 일반적으로 반도체 메모리 및 방법들에 관한 것으로, 보다 상세하게는 물리 페이지(physical page), 논리 페이지(logical page), 및 코드워드(codeword) 대응을 위한 장치들 및 방법들에 관한 것이다.
메모리 디바이스들(memory devices)은 통상적으로 컴퓨터들(computers) 또는 다른 전자 디바이스들 내에 내부의, 반도체, 집적 회로들로 제공된다. 휘발성 및 비-휘발성 메모리를 포함하는 많은 상이한 타입들의 메모리가 있다. 휘발성 메모리는 그것의 정보(예를 들어, 데이터(data), 에러 정보(error information) 등)를 유지하기 위해 전력을 필요로 할 수 있고, 그 중에서도 랜덤-액세스 메모리(RAM; random-access memory), 동적 랜덤 액세스 메모리(DRAM; dynamic random access memory), 및 동기식 동적 랜덤 액세스 메모리(SDRAM; synchronous dynamic random access memory)를 포함한다. 비-휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 지속적인 데이터를 제공할 수 있고, 그 중에서도 NAND 플래시 메모리(flash memory), NOR 플래시 메모리, 판독 전용 메모리(ROM; read only memory), 전기적 소거 프로그램가능 ROM(EEPROM; Electrically Erasable Programmable ROM), 소거 프로그램가능 ROM(EPROM; Erasable Programmable ROM), 및 저항 가변 메모리 예컨대, 상 변화 랜덤 액세스 메모리(PCRAM; phase change random access memory), 저항 랜덤 액세스 메모리(RRAM; resistive random access memory), 및 자기저항 랜덤 액세스 메모리(MRAM; magnetoresistive random access memory)를 포함할 수 있다.
메모리 디바이스들은 고체 상태 드라이브(SSD; solid state drive)와 같은 메모리 시스템(memory system)의 저장 볼륨(storage volume)을 형성하기 위해 함께 결합될 수 있다. 고체 상태 드라이브는 다양한 다른 타입들의 비-휘발성 및 휘발성 메모리 중에서도 비-휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고/있거나, 휘발성 메모리(예를 들어, DRAM 및 SRAM)를 포함할 수 있다.
SSD가 성능, 크기, 중량, 견고성, 동작 온도 범위, 및 전력 소모의 관점에서 하드 드라이브들(hard drives)에 비해 장점들을 가질 수 있으므로, SSD는 하드 디스크 드라이브들을 컴퓨터에 대한 메인 저장 볼륨으로 대체하기 위해 사용될 수 있다. 예를 들어, SSD들은 그의 구동 부분들의 부족으로 인해 자기 디스크 드라이브들과 비교할 때 우수한 성능을 가질 수 있으며, 이는 자기 디스크 드라이브들과 연관된 탐색 시간, 레이턴시(latency), 및 다른 전기 기계 지연들을 회피할 수 있다. SSD 제조자들은 내부 배터리(battery) 공급을 사용하지 않을 수 있는 플래시 SSD들을 만들기 위해 비-휘발성 플래시 메모리를 사용할 수 있으며, 따라서 드라이브가 더 다목적이고 소형이 되는 것을 허용한다.
SSD는 데이터를 전송하기 위해(예를 들어, 메모리 디바이스들과 호스트(host) 사이에서) 판독 및 기록 동작들과 같은 메모리 동작들과 공동으로 호스트로부터 커맨드들(commands)을 수신할 수 있다. 그것은 예를 들어, SSD와 연관된 처리량을 증가시키고/시키거나 SSD들의 저장 용량을 증가시키는데 유익할 수 있다.
도 1은 본 발명의 다수의 실시예들에 따른 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태인 장치의 블록도이다.
도 2는 본 발명의 다수의 실시예들에 따른 페이지 스트라이프 레이아웃(page stripe layout)의 블록도이다.
도 3은 본 발명의 다수의 실시예들에 따른 알려진 불량 부분을 포함하는 페이지 스트라이프 레이아웃의 블록도이다.
도 4는 본 발명의 다수의 실시예들에 따른 강제 유닛 액세스(unit access)를 포함하거나 부가 기록 데이터를 포함하지 않는 페이지 스트라이프 레이아웃의 블록도이다.
도 5는 본 발명의 다수의 실시예들에 따른 논리 페이지를 기록하기 위한 버퍼(buffer) 할당의 블록도이다.
도 6은 본 발명의 다수의 실시예들에 따른 웨어 레벨링(wear leveling)을 위한 버퍼 할당의 블록도이다.
본 발명은 물리 페이지, 논리 페이지, 및 코드워드 대응을 위한 장치들 및 방법들을 포함한다. 다수의 방법들은 데이터의 다수의 논리 페이지들을 다수의 코드워드들로 에러 코딩(error coding)하는 단계 및 다수의 코드워드들을 메모리의 다수의 물리 페이지들에 기록하는 단계를 포함한다. 데이터의 다수의 논리 페이지들은 메모리의 다수의 물리 페이지들과 상이할 수 있다.
페이지 매핑(page mapping)에 대한 몇몇 이전의 접근법들은 데이터의 논리 페이지들과 메모리의 물리 페이지들 사이의 일대일 대응을 포함했다. 즉, 데이터의 하나의 논리 페이지 내의 데이터의 양은 메모리의 하나의 물리 페이지에 저장된 데이터의 양과 동일했다. 대조적으로, 본 발명의 다수의 실시예들은 데이터의 논리 페이지의 크기(예를 들어, 호스트 논리 페이지 크기)를 메모리의 물리 페이지의 크기(예를 들어, NAND 페이지 크기)와 분리한다. 본 발명의 몇몇 실시예들에서, 코드워드들(예를 들어, 에러 정정 코드(ECC; error correction code) 코드워드들)은 메모리의 물리 페이지의 크기에 의존할 수 있지만, 데이터의 논리 페이지의 크기와 독립적일 수 있다. 따라서, 데이터의 논리 페이지들의 플렉시블 크기들(flexible sizes)은 상이한 호스트 섹터 크기들이 메모리의 임의적 페이지로 매핑될 수 있도록, 임의의 코드워드 크기들에 걸쳐 제공될 수 있다.
본 발명의 다수의 실시예들은 일정한 코드워드 크기를 유지하면서 ECC 코드워드들에 대한 가변 코드 레이트(code rate)를 포함할 수 있다. 따라서, 본 발명의 몇몇 실시예들은 버퍼 메모리(buffer memory)를 코드워드 페이로드(payload) 크기들로(예를 들어, 물리 페이지 페이로드 크기들로보다는) 관리할 수 있다. RAIN 스트라이프들(예를 들어, 플렉시블 스트라이프 길이를 포함함)의 인에이블먼트(enablement)는 결함 보호를 제공하기 위해 유지될 수 있다. 펌웨어(firmware)는 속도를 개선하기 위해 수행 경로에 들어가지 않을 수 있다.
본 발명의 이하의 상세한 설명에서, 그것의 일부를 형성하고, 본 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는지의 예시로서 도시되는 첨부 도면들에 대한 참조가 이루어진다. 이러한 실시예들은 당해 기술에서 통상의 기술자들이 본 발명의 실시예들을 실행할 수 있게 하도록 충분히 상세하게 설명되고, 다른 실시예들이 이용될 수 있고 프로세스(process), 전기적, 및/또는 구조적 변화들이 본 발명의 범위로부터 벗어나지 않고 이루어질 수 있다는 점이 이해되어야 한다. 본 명세서에 사용된 바와 같이, 특히 도면들 내의 참조 번호들에 대한 지시자 "N"은 그렇게 지시된 다수의 특정 피쳐(feature)가 포함될 수 있는 것을 표시한다. 본 명세서에 사용된 바와 같이, "다수의" 특정한 것은 하나 이상의 그러한 것들을 나타낼 수 있다(예를 들어, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 나타낼 수 있다).
본 명세서에서의 도면들은 첫 번째 숫자 또는 숫자들이 도면의 도면 부호에 대응하고 나머지 숫자들이 도면들 내의 요소 또는 구성요소를 식별하는 번호 부여 규정을 따른다. 상이한 도면들 사이의 유사한 요소들 또는 구성요소들은 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 222는 도 2의 요소 "22"를 참조할 수 있고, 유사한 요소는 도 3의 322로 참조될 수 있다. 이해되는 바와 같이, 본 명세서에서의 다양한 실시예들에 도시된 요소들은 본 발명의 다수의 부가적인 실시예들을 제공하기 위해, 추가, 교환, 및/또는 제거될 수 있다. 또한, 이해되는 바와 같이, 도면들에 제공된 요소들의 비율 및 상대적인 축척은 본 발명의 특정 실시예들을 예시하도록 의도되고, 제한적인 의미로 해석되지 않아야 한다.
도 1은 본 발명의 다수의 실시예들에 따른 적어도 하나의 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 형태인 장치의 블록도이다. 본 명세서에 사용된 바와 같이, 메모리 시스템(104), 컨트롤러(controller)(108), 또는 메모리 디바이스(110)는 개별적으로 "장치(apparatus)"로 간주될 수도 있다. 메모리 시스템(104)은 예를 들어, 고체 상태 드라이브(SSD; solid state drive)일 수 있고, 호스트 인터페이스(host interface)(106), 컨트롤러(108)(예를 들어, 프로세서 및/또는 다른 제어 회로조직), 및 다수의 메모리 디바이스들(110-1, ..., 110-N)(예를 들어, NAND 플래시 디바이스들과 같은 고체 상태 메모리 디바이스들)을 포함할 수 있으며, 이는 저장 볼륨을 메모리 시스템(104)에 제공한다.
도 1에 예시된 바와 같이, 컨트롤러(108)는 복수의 채널들을 통해 호스트 인터페이스(106) 및 메모리 디바이스들(110-1, ..., 110-N)에 결합될 수 있고, 메모리 시스템(104)과 호스트(102) 사이에서 데이터를 전송하기 위해 사용될 수 있다. 인터페이스(106)는 표준화된 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(104)이 컴퓨팅 시스템(100) 내의 데이터 저장을 위해 사용될 때, 인터페이스(106)는 다른 커넥터들(connectors) 및 인터페이스들 중에서 특히 SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), 또는 USB(universal serial bus)일 수 있다. 그러나, 일반적으로, 인터페이스(106)는 인터페이스(106)를 위한 호환가능 리셉터들(receptors)을 갖는 메모리 시스템(104)과 호스트(102) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 통과시키는 인터페이스를 제공할 수 있다.
호스트(102)는 다양한 다른 타입들의 호스트들 중에서 특히 개인용 랩톱 컴퓨터, 데스크톱 컴퓨터, 디지털 카메라(digital camera), 이동 전화, 또는 메모리 카드 리더(memory card reader)와 같은 호스트 시스템일 수 있다. 호스트(102)는 시스템 마더보드(system motherboard) 및/또는 백플레인(backplane)을 포함할 수 있고, 다수의 메모리 액세스 디바이스들(memory access devices)(예를 들어, 다수의 프로세서들)을 포함할 수 있다.
컨트롤러(108)는 다른 동작들 중에서 특히 데이터 판독, 기록, 및 소거 동작들을 제어하기 위해 메모리 디바이스들(110-1, ..., 110-N)과 통신할 수 있다. 구체적으로 예시되지 않지만, 몇몇 실시예들에서, 컨트롤러(108)는 컨트롤러(108)를 메모리 디바이스들(110-1, ..., 110-N)에 결합하는 각각의 채널에 대한 개별 메모리 채널 컨트롤러(memory channel controller)를 포함할 수 있다. 컨트롤러(108)는 예를 들어, 다수의 메모리 디바이스들(110-1, ..., 110-N)에의 액세스를 제어하고/하거나 호스트(102)와 메모리 디바이스들(110-1, ..., 110-N) 사이에서 데이터 전송을 용이하게 하기 위한 소프트웨어(software) 및/또는 펌웨어(firmware)(예를 들어, 하나 이상의 집적 회로들) 및/또는 하드웨어(hardware)의 형태로 다수의 구성요소들을 포함할 수 있다.
몇몇 실시예들에서, 그리고 도 1에 예시된 바와 같이, 컨트롤러(108)는 에러 코딩(error coding) 구성요소(112)(예를 들어, 에러 정정 코드(ECC; error correction code) 엔진(engine)과 같은 에러 코더(error coder)), 버퍼링(buffering) 구성요소(114), 매핑 구성요소(116), 및 복수 어레이 독립 NAND(RAIN; redundant array of independent NAND) 구성요소(118)를 포함할 수 있다. 각각의 에러 코딩 구성요소(112), 버퍼링 구성요소(114), 매핑 구성요소(116), 및 RAIN 구성요소(118)는 주문형 집적 회로(ASIC; application specific integrated circuit)와 같은 개별 구성요소들일 수 있거나, 반드시 컨트롤러(108)의 다른 부분들로부터 분리되는 개별 물리 형태를 갖는 것은 아닌 컨트롤러(108) 내의 회로조직에 의해 기능상 제공되는 구성요소들을 반영할 수 있다. 도 1의 컨트롤러(108) 내의 구성요소들로 예시되지만, 각각의 에러 코딩 구성요소(112), 버퍼링 구성요소(114), 매핑 구성요소(116), 및 RAIN 구성요소(118)는 컨트롤러(108) 외부에 있거나 컨트롤러(108) 내에 위치된 다수의 구성요소들 및 컨트롤러(108) 외부에 위치된 다수의 구성요소들을 가질 수 있다. 예를 들어, 버퍼링 구성요소는 컨트롤러(108) 상에 위치된 다수의 버퍼들 및 컨트롤러(108) 외부에 위치된 다수의 버퍼들을 포함할 수 있다.
에러 코딩 구성요소(112)는 데이터의 다수의 논리 페이지들을 다수의 코드워드들로 에러 코딩하도록 구성될 수 있다. 예를 들어, 에러 코딩 구성요소(112)는 본 명세서에 더 상세히 설명되는 바와 같이, 데이터의 비-정수의 논리 페이지들을 정수의 코드워드들로 에러 코딩하도록 구성될 수 있다. 에러 코딩 구성요소(112)는 데이터의 논리 페이지 및 데이터의 비-정수의 부가 논리 페이지들을 정수의 코드워드들로 에러 코딩하도록 구성될 수 있다.
코드워드는 랩퍼(wrapper) 및 페이로드(payload)를 포함하는 전체 크기를 가질 수 있다. 코드워드 페이로드는 코드워드 내에 인코딩되는 데이터(예를 들어, 사용자 데이터)를 나타낼 수 있다. 코드워드 랩퍼는 사용자 데이터와 함께 코드워드 내에 인코딩되는 에러 정보를 나타낼 수 있다. 에러 코딩 구성요소(112)는 가변 코드워드 랩퍼 크기 및 가변 코드워드 페이로드 크기를 프로그램가능하게 사용할 수 있다. 가변 코드워드 랩퍼 및 페이로드 크기들은 사용자 기능으로 프로그램가능(예를 들어, 호스트 인터페이스(106)를 통해 프로그램가능)할 수 있거나 특정 응용(application)을 위한 제조 후에 프로그램될 수 있다. 예를 들어, 코드워드 랩퍼 크기는 코드워드 페이로드에 대한 소정의 양의 에러 정정에 따라 프로그램될 수 있다. 몇몇 실시예들에서, 코드워드 페이로드 크기는 특정 코드워드 랩퍼 크기에 기초하여 프로그램될 수 있다(예를 들어, 여기서 고정된 숫자 및/또는 정수의 코드워드들은 코드워드의 전체 크기가 고정되는 한편 랩퍼 및/또는 페이로드 크기들이 가변이도록, 물리 페이지 내에 적합하게 설계될 수 있다). 전체 코드워드 크기 중, 더 큰 코드워드 랩퍼는 더 많은 에러 보호를 코드워드 페이로드에 제공하지만, 그 후 사용자 데이터는 그것과 함께 저장된 더 큰 코드워드 랩퍼를 각각 갖는 더 작은 부분들로 분할되기 때문에, 사용자 데이터의 관점에서 더 작은 코드워드 페이로드, 및 이에 따른 감소된 메모리 밀도를 야기한다. 특정 코드워드 랩퍼 및/또는 코드워드 페이로드 크기가 프로그램되면, 데이터는 프로그램된 페이로드 크기를 갖는 코드워드들로 에러 코딩될 수 있다.
코드워드 페이로드 크기 대 전체 코드워드 크기의 비율은 본 명세서에서 코드 레이트(code rate)로 언급된다. 본 발명의 몇몇 실시예들에서, 데이터의 제 1 논리 페이지의 일부는 제 1 코드 레이트를 사용하는 제 1 코드워드로 에러 코딩될 수 있고, 데이터의 제 2 논리 페이지의 일부는 제 2 코드 레이트를 사용하는 제 2 코드워드로 에러 코딩될 수 있다. 제 1 및 제 2 코드워드들의 크기는 동일할 수 있다. 따라서, 제 1 코드워드의 코드워드 페이로드 크기는 제 2 코드워드의 코드워드 페이로드 크기와 상이할 수 있다. 다수의 실시예들에서, 코드 레이트는 프로그램가능 옵션(option)으로 설정될 수 있다.
버퍼링 구성요소(114)는 (예를 들어, 특정 물리 버퍼가 하나보다 더 많은 논리 버퍼 세그먼트(segment)로 세그먼트되도록) 복수의 논리 버퍼 세그먼트들로 세그먼트된 복수의 물리 버퍼들을 포함할 수 있다. 각각의 논리 버퍼 세그먼트는 코드워드 페이로드 크기에 대응할 수 있다(예를 들어, 각각의 논리 버퍼 세그먼트는 코드워드 페이로드만큼 많은 정보를 저장할 수 있다). 각각의 물리 버퍼는 물리 페이지 크기에 대응할 수 있다(예를 들어, 각각의 물리 버퍼는 각각의 물리 페이지만큼 많은 정보를 저장할 수 있음). 복수의 물리 버퍼들 중 다수는 컨트롤러(108) 외부 및/또는 내부에 있을 수 있다. 컨트롤러(108)는 논리 페이지 크기에 기초하여 호스트(102)와 통신하고 전체 코드워드 크기에 기초하여 메모리 디바이스들(110-1, ..., 110-N)을 버퍼 관리하도록 구성될 수 있다.
다수의 실시예들에서, 컨트롤러(108)는 데이터의 다수의 논리 페이지들의 일부를 다수의 논리 버퍼 세그먼트들 각각의 크기와 동일한 페이로드 크기를 각각 갖는 다수의 코드워드들로 에러 코딩함으로써, 데이터의 다수의 논리 페이지들의 일부를 다수의 코드워드들로 에러 코딩하도록 구성될 수 있다. 다수의 코드워드들의 페이로드들은 메모리의 물리 페이지에 기록되기 전에 다수의 논리 버퍼 세그먼트들에서 버퍼링될 수 있다.
다수의 실시예들에서, 컨트롤러(108)는 매핑 구성요소(116)를 포함할 수 있고, 데이터의 복수의 논리 페이지들을 메모리의 복수의 대응하는 물리 페이지들에 매핑하도록 구성될 수 있다. 데이터의 비-정수의 복수의 논리 페이지들은 메모리의 복수의 물리 페이지들 각각에 매핑될 수 있다. 매핑 구성요소(116)와 연관된 부가적인 기능은 본 명세서에 더 상세히, 그리고 특히 도 5에 대해 설명된다.
RAIN 구성요소(118)는 메모리 디바이스들(110, ..., 110-N)에 저장된 데이터를 보호하는데 도움이 될 수 있다. RAIN은 예를 들어, 다수의 메모리 디바이스들 중에서 특히 정보를 분할하고/하거나 복제하는 컴퓨터 정보 저장 방식들에 대한 포괄적 용어이다. RAIN 어레이 내의 다수의 메모리 디바이스들은 사용자 및 컴퓨터의 운영 체제에 단일 메모리 디바이스(예를 들어, 디스크)로 나타날 수 있다. RAIN은 정보의 상이한 부분들이 상이한 메모리 디바이스들(예를 들어, 메모리 디바이스들(110, ..., 110-N)) 상에 저장되도록, 스트라이핑(striping)(예를 들어, 분할) 정보를 포함할 수 있다. 분할된 데이터를 저장하는 하나보다 많은 디바이스의 부분들은 총괄하여 스트라이프(stripe)로 언급된다. 대조적으로, RAIN은 미러링(mirroring)을 포함할 수도 있으며, 이는 하나보다 많은 디바이스 상에 데이터의 복제 카피들(copies)을 저장하는 것을 포함할 수 있다. 일 예로서, 기록 데이터는 N 메모리 디바이스들 중 N-1에 걸쳐 스트라이핑될 수 있으며, 여기서 에러 정보는 N번째 메모리 디바이스에 저장될 수 있다. 에러 정보(예를 들어, 패리티 데이터(parity data))는 RAIN 구성요소(118)에 의해(예를 들어, XOR 회로조직에 의해) 계산되고 N번째 메모리 디바이스에 기록될 수 있다. RAIN 구성요소(118)는 플렉시블 스트라이프 길이를 이용할 수 있다. RAIN 구성요소(118)는 복수의 메모리 디바이스들(110-1, ..., 110-N)에 걸쳐 스트라이프들에 데이터를 기록하고/하거나 판독하도록 구성될 수 있다. 예를 들어, 컨트롤러(108)는 메모리의 복수의 물리 페이지들로부터 데이터의 스트라이프를 판독하도록 구성될 수 있으며, 여기서 메모리의 복수의 물리 페이지들 각각은 각각의 복수의 코드워드들을 저장한다. 컨트롤러(108)는 데이터의 논리 페이지를 형성하기 위해 메모리의 복수의 물리 페이지들 중 하나로부터 하나 보다 많은 각각의 복수의 코드워드들 중 페이로드 부분들을 결합하도록 구성될 수 있다. 그 후, 데이터의 논리 페이지는 호스트에(예를 들어, 다수의 섹터들로) 전송될 수 있다. RAIN 동작에 관한 부가적인 상세들은 본 명세서에 더 상세히, 그리고 특히 도 2에 대해 설명된다.
메모리 디바이스들(110-1, ..., 110-N)은 메모리 셀들(memory cells)(예를 들어, 비-휘발성 메모리 셀들)의 다수의 어레이들을 포함할 수 있다. 어레이들은 예를 들어 NAND 아키텍처(architecture)를 갖는 플래시 어레이들일 수 있다. 그러나, 실시예들은 특정 타입의 메모리 어레이 또는 어레이 아키텍처에 제한되지 않는다. 메모리 셀들은 예를 들어, 다수의 물리 페이지들을 포함하는 다수의 블록들로 그룹화될 수 있다. 다수의 블록들은 메모리 셀들의 평면(plane)에 포함될 수 있고, 어레이는 다수의 평면들을 포함할 수 있다. 일 예로서, 메모리 디바이스는 페이지 당 8KB(kilobytes)의 사용자 데이터, 블록 당 128 페이지들의 사용자 데이터, 평면 당 2048 블록들, 및 디바이스 당 16 평면들을 저장하도록 구성될 수 있다.
동작 시, 데이터는 예를 들어, 데이터의 물리 페이지로서 메모리 시스템의 메모리 디바이스(예를 들어, 시스템(104)의 메모리 디바이스들(110-1, ..., 110-N))에 기록되고/되거나 이로부터 판독될 수 있다. 이와 같이, 데이터의 물리 페이지는 메모리 시스템의 데이터 전송 크기로 언급될 수 있다. 데이터는 섹터들(sectors)(예를 들어, 호스트 섹터들)로 언급되는 데이터 세그먼트들 내의 호스트(예를 들어, 호스트(102))에/로부터 전송될 수 있다. 이와 같이, 데이터의 섹터는 호스트의 데이터 전송 크기로 언급될 수 있다. 복수의 섹터들은 데이터의 논리 페이지를 구성할 수 있다.
데이터의 물리 페이지가 다수의 바이트의 사용자 데이터(예를 들어, 다수의 섹터들의 데이터를 포함하는 데이터 페이로드) 뿐만 아니라 그것에 대응하는 메타데이터(metadata)를 포함할 수 있지만, 데이터의 물리 페이지의 크기는 종종 다수의 바이트의 사용자 데이터만을 나타낼 수 있다. 일 예로서, 4KB의 페이지 크기를 갖는 데이터의 물리 페이지는 4KB의 사용자 데이터(예를 들어, 데이터의 4KB 논리 페이지) 뿐만 아니라 사용자 데이터에 대응하는 다수의 바이트(예를 들어, 32B, 54B, 224B 등)의 메타데이터를 포함할 수 있다. 메타데이터는 사용자 데이터에 대응하는 다른 메타데이터 중에서 특히 에러 데이터(예를 들어, 에러 검출 및/또는 정정 코드 데이터) 및/또는 어드레스 데이터(address data)(예를 들어, 논리 어드레스 데이터)와 같은 무결성 데이터를 포함할 수 있다.
도 2는 본 발명의 다수의 실시예들에 따른 페이지 스트라이프 레이아웃(page stripe layout)(220)의 블록도이다. 페이지 스트라이프 레이아웃은 본 발명의 다수의 실시예들에 따른, 다수의 논리 페이지들(222), 다수의 코드워드들(224), 및 다수의 물리 페이지들(226) 사이의 상관을 예시한다. 데이터의 다수의 논리 페이지들(222)은 다수의 코드워드들(224)로 에러 코딩될 수 있다. 예를 들어, 물리 페이지 메타데이터(228), 논리 페이지(LP0), 및 논리 페이지(LP1)의 일부는 코드워드들(CW0, CW1, CW2, 및 CW3)로 에러 코딩될 수 있다. 다수의 코드워드들(224)은 메모리의 다수의 물리 페이지들(226)에 기록될 수 있으며, 여기서 데이터의 다수의 논리 페이지들(222)은 메모리의 다수의 물리 페이지들(226)과 상이하다. 예를 들어, 코드워드들(CW0, CW1, CW2, 및 CW3)은 물리 페이지(D0P0)(예를 들어, 다이(die) 0, 평면 0과 연관된 물리 페이지)에 기록될 수 있다. 몇몇 실시예들에서, 물리 페이지 메타데이터(228)는 스트라이프(예를 들어, 스트라이프 길이)의 정의, 타임스탬프(timestamp), 소거 카운트(count), 블록 타입(block type), 및/또는 더 많거나 더 적은 정보를 포함할 수 있다. 도 2에 예시된 바와 같이, 물리 페이지 메타데이터(228)는 전용 코드워드를 갖는 아니라, 그 대신에 논리 페이지의 일부와 함께 인코딩된다(예를 들어, CW0는 물리 페이지 메타데이터(228) 및 LP0의 일부를 포함한다).
몇몇 실시예들에서, 데이터의 다수의 논리 페이지들(222)의 일부(예를 들어, LP0 및 LP1의 일부)는 다수의 코드워드들(224)(예를 들어, CW0, CW1, CW2, 및 CW3)로 인코딩될 수 있다. 다수의 코드워드들(224)(예를 들어, CW0, CW1, CW2, 및 CW3)은 메모리의 하나의 물리 페이지(예를 들어, D0P0)에 기록될 수 있다. 데이터의 다수의 논리 페이지들의 일부는 데이터의 특정 논리 페이지(예를 들어, LP0)를 제 1 코드워드(예를 들어, CW0)의 제 1 페이로드 부분 및 제 2 코드워드(예를 들어, CW1)의 제 2 페이로드 부분으로 에러 코딩함으로써 에러 코딩될 수 있다. 제 1 코드워드(예를 들어, CW0)의 크기는 제 2 코드워드(예를 들어, CW1)의 크기와 동일할 수 있다. 메모리의 물리 페이지의 크기는 데이터의 다수의 논리 페이지들(222) 중 임의의 것의 크기와 독립적일 수 있다.
도 2에 예시된 바와 같이, 논리 페이지(LP1)의 나머지 부분은 물리 페이지(D0P1)(예를 들어, 물리 페이지 메타데이터, 논리 페이지(LP2), 및 논리 페이지(LP3)의 일부와 함께)와 연관되고 이에 기록되는 상이한 코드워드(CW0)(예를 들어, 물리 페이지 메타데이터 및 논리 페이지(LP2)의 일부와 함께)로 에러 코딩될 수 있다. 따라서, 데이터의 다수의 논리 페이지들을 에러 코딩하는 것은 데이터의 비-정수의 논리 페이지들을 정수의 코드워드들로 에러 코딩하는 것을 포함할 수 있다. 도 2에 예시된 바와 같이, 몇몇 실시예들에서, 메모리의 각각의 물리 페이지는 정수의 코드워드들(예를 들어, 물리 페이지 당 4개의 코드워드들, 그러나 실시예들은 페이지 당 특정 다수의 코드워드들에 제한되지 않음)과 연관될 수 있다. 정수의 코드워드들은 메모리의 정수의 물리 페이지들에 기록될 수 있다. 주어진 스트라이프에 대해, 다수의 코드워드들(222)은 그것과 연관된 데이터의 다수의 논리 페이지들(224) 및 메모리의 다수의 물리 페이지들(226)과 상이할 수 있다.
도 2에 예시된 실시예에 구체적으로, 데이터의 다수의 논리 페이지들(222)을 에러 코딩하는 것은 물리 페이지 메타데이터(228) 및 데이터의 제 1 논리 페이지(예를 들어, LP0)의 제 1 부분을 제 1 코드워드(예를 들어, CW0)로 에러 코딩하는 것, 데이터의 제 1 논리 페이지(예를 들어, LP0)의 제 2 부분을 제 2 코드워드(예를 들어, CW1)로 에러 코딩하는 것, 데이터의 제 1 논리 페이지(예를 들어, LP0)의 제 3 부분 및 데이터의 제 2 논리 페이지(예를 들어, LP1)의 제 1 부분을 제 3 코드워드(예를 들어, CW2)로 에러 코딩하는 것, 데이터의 제 2 논리 페이지(예를 들어, LP1)의 제 2 부분을 제 4 코드워드(예를 들어, CW3)로 에러 코딩하는 것을 포함할 수 있다. 다수의 코드워드들(224)을 메모리의 다수의 물리 페이지들(226)에 기록하는 것은 제 1 코드워드(예를 들어, CW0), 제 2 코드워드(예를 들어, CW1), 제 3 코드워드(예를 들어, CW2), 및 제 4 코드워드(예를 들어, CW3)를 메모리의 제 1 물리 페이지(예를 들어, D0P0)에 기록하는 것을 포함할 수 있다. 데이터의 다수의 논리 페이지들(222)을 에러 코딩하는 것은 제 2 물리 페이지에 대한 물리 페이지 메타데이터, 데이터의 제 2 논리 페이지(예를 들어, LP1)의 제 3 부분, 및 데이터의 제 3 논리 페이지(예를 들어, LP2)의 제 1 부분을 제 5 코드워드(예를 들어, D0P1 내의 CW0)로 에러 코딩하는 것을 더 포함할 수 있다. 다른 정보 중에서 특히, 제 5 코드워드(예를 들어, D0P1 내의 CW0)는 메모리의 제 2 물리 페이지(예를 들어, D0P1)에 기록될 수 있다.
또한 도 2에 예시된 바와 같이, 페이지 스트라이프 레이아웃(220)은 스트라이프에 대한 패리티 데이터의 다수의 페이지들(예를 들어, "DnP0 - 평면 0 패리티" 및 "DnP1 - 평면 1 패리티"이지만, 실시예들은 패리티 데이터의 특정 다수의 페이지들에 제한되지 않음)을 포함할 수 있다. 또한, 패리티 데이터 전에, 도 2는 데이터의 마지막 논리 페이지(예를 들어, LPx)의 끝에 "폐기" 데이터를 예시한다. 이러한 "폐기" 데이터는 본 명세서에 설명된 바와 같이, 데이터의 비-정수의 논리 페이지들이 정수의 코드워드들로 인코딩될 수 있기 때문에, 데이터의 다수의 논리 페이지들에 이용가능한 데이터의 양이 본 발명의 다수의 실시예들에 따른 스트라이프에 대한 코드워드 경계에서 끝나지 않을 수 있으므로, 마지막 코드워드를 채우기 위해 사용될 수 있다. 몇몇 실시예들에서, 메모리의 물리 페이지 당 정수의 코드워드들은 정수의 코드워드들 중 임의의 것에 대한 코드 레이트와 관계없이 일정할 수 있다.
판독 동작들에 대해, 데이터의 스트라이프는 메모리의 복수의 물리 페이지들(226)로부터 판독될 수 있으며, 여기서 메모리의 물리 페이지들(226) 각각은 각각의 복수의 코드워드들(224)을 저장하고, 메모리의 물리 페이지들 중 하나로부터의 하나보다 많은 각각의 복수의 코드워드들(224) 중 페이로드 부분들은 데이터의 논리 페이지(222)를 형성하기 위해 결합될 수 있다. 예를 들어, 제 1 코드워드(예를 들어, CW0)의 일부 및 제 3 코드워드(예를 들어, CW2)의 일부는 제 2 코드워드(예를 들어, CW1)와 결합될 수 있으며, 각각은 데이터의 제 1 논리 페이지(예를 들어, LP0)를 형성하기 위해 제 1 물리 페이지(예를 들어, D0P0)로부터 판독된다. 메모리의 하나보다 많은 복수의 물리 페이지들(226)로부터의 하나보다 많은 각각의 복수의 코드워드들(224) 중 페이로드 부분들은 데이터의 논리 페이지(222)를 형성하기 위해 결합될 수 있다. 예를 들어, 메모리의 제 1 물리 페이지(예를 들어, D0P0)로부터의 제 3 코드워드(예를 들어, CW2) 및 제 4 코드워드(예를 들어, CW3)의 일부는 데이터의 제 2 논리 페이지(예를 들어, LP1)를 형성하기 위해 메모리의 제 2 물리 페이지(예를 들어, D0P1)로부터의 제 1 코드워드(예를 들어, CW0)의 일부와 결합될 수 있다.
데이터의 스트라이프를 판독하는 것은 정수의 코드워드들(224)을 판독하는 것을 포함할 수 있다. 예를 들어, 정수의 코드워드들(224)은 다른 것들 중에서 특히 메모리의 물리 페이지(226) 마다, 다이(die) 마다(예를 들어, D0, D1, ..., Dn 마다), 스트라이프 마다 판독될 수 있다. 복수의 물리 페이지들(226)로부터의 각각의 복수의 코드워드들(224)의 페이로드 부분들은 데이터의 복수의 논리 페이지들(222)을 형성하기 위해 결합될 수 있다. 각각의 복수의 코드워드들(222)의 페이로드 부분들을 결합하는 것은 데이터의 논리 페이지(예를 들어, D0P0와 연관된 LP1)를 형성하기 위해 각각의 복수의 코드워드들(예를 들어, CW3) 중 제 1 코드워드의 전체 페이로드 부분을 각각의 복수의 코드워드들(예를 들어, CW2) 중 제 2 코드워드의 전체보다 적은 페이로드 부분과 결합하는 것을 포함할 수 있다.
또한, 예시적 논리 페이지 포맷(format)(230)(예를 들어, LP4의 포맷)이 도 2에 예시된다. 논리 페이지 포맷(230)은 논리 페이지 메타데이터(232) 및 다수의 호스트 섹터들(234)(예를 들어, 논리 페이지 당 8개의 섹터들; 그러나 실시예들은 그렇게 제한되지 않음)을 포함할 수 있다. 논리 페이지 메타데이터(232)는 더 많거나 더 적은 정보 중에서 특히 논리 블록 어드레스(LBA; logical block address) 수, 유효 섹터 비트맵(valid sector bitmap), 및 논리 페이지 타입을 포함할 수 있다. 호스트 섹터들(234)은 더 많거나 더 적은 정보 중에서 특히 페이로드(예를 들어, 512-528 바이트, 그러나 실시예들은 그렇게 제한되지 않음) 및 데이터 경로 보호(DPP; data path protection) 정보를 포함할 수 있다. 몇몇 실시예들에서, 순환 코드 중복 검사(CRC; code redundancy check) 정보와 같은, 에러 정보는 논리 페이지 포맷으로 포함될 수 있다.
본 발명의 다른 이득들 중에서 특히, 본 명세서에 설명된 페이지 스트라이프 레이아웃은 가변 압축 비율들에 대한 다른 베이스들(bases) 중에서 특히, 페이지 바이 페이지(page-by-page)로 가변 압축 비율들을 허용하는 사용자 데이터 압축 방식들을 가능하게 할 수 있다. 그러한 가변 압축 방식들의 상세들은 본 발명의 범위를 넘는다.
도 3은 본 발명의 다수의 실시예들에 따른 알려진 불량 부분(336)을 포함하는 페이지 스트라이프 레이아웃(320)의 블록도이다. 알려진 불량 부분(336)은 제외하고, 페이지 스트라이프 레이아웃(320)은 도 2에 예시된 페이지 스트라이프 레이아웃(220)과 유사할 수 있다. 즉, 페이지 스트라이프 레이아웃(320)은 데이터의 논리 페이지들(322), 코드워드들(324), 및 데이터의 물리 페이지들(326)을 포함할 수 있다. 데이터의 복수의 논리 페이지들(322)은 메모리의 복수의 대응하는 물리 페이지들(326)에 매핑될 수 있는 한편, 비-정수의 복수의 논리 페이지들(322)은 메모리의 복수의 물리 페이지들(326) 각각에 매핑된다.
예로서, 도 3에서, 알려진 불량 부분(336)은 메모리 셀들의 불량 물리 블록(예를 들어, D1P1과 연관된 물리 페이지가 그 결과 또한 불량인 것으로 알려져 있도록, D1P1과 연관됨)일 수 있다. 스트라이프 레이아웃(320)이 알려진 불량 부분(336)을 포함하는 경우들에 대해, 컨트롤러는 복수의 논리 페이지들(322)의 특정 논리 페이지의 특정 부분(336)이 메모리의 알려진 불량 물리 페이지(예를 들어, D1P1)에 매핑되는 것에 대응하여, 복수의 논리 페이지들(322)의 특정 논리 페이지를 호스트 데이터와 적어도 부분적으로 스킵 파퓰레이팅하도록 구성될 수 있다. 스킵 파퓰레이팅(skip populating)은 컨트롤러가 불량 물리 페이지(예를 들어, D1P1)에 대응하는 데이터의 논리 페이지들(322)을 호스트 데이터와 파퓰레이팅(populating)하는 것을 회피할 수 있다는 것을 의미한다. 데이터의 그러한 논리 페이지들(322)에 그 외에 파퓰레이팅되는 데이터는 페이지 스트라이프 레이아웃(320) 내의 데이터의 후속 논리 페이지들(322)(예를 들어, 적어도 하나의 데이터의 후속 논리 페이지)에 파퓰레이팅될 수 있다.
컨트롤러는 데이터의 복수의 논리 페이지들(322)의 특정 논리 페이지의 제 2 부분을 에러 데이터와 파퓰레이팅하도록 더 구성될 수 있으며, 여기서 데이터의 복수의 논리 페이지들(322)의 특정 논리 페이지의 제 2 부분은 메모리의 알려진 양호한 물리 페이지에 매핑된다. 컨트롤러는 데이터의 복수의 논리 페이지들(322)을 RAIN 스트라이프 내의 메모리의 복수의 물리 페이지들(326)에 매핑하도록 구성될 수 있다.
예를 들어, D1P1과 연관된 메모리의 물리 페이지는 불량인 것으로 알려져 있다. D1P1과 연관된 메모리의 물리 페이지는 원본 페이지 스트라이프 레이아웃(320) 내의 논리 페이지들(LP5, LP6, 및 LP7)의 부분들에 적어도 대응한다. 따라서, LP5의 일부 및 LP7의 일부만이 D1P1과 연관된 메모리의 물리 페이지에 대응한다 하더라도, 논리 페이지들(LP5, LP6, 및 LP7)은 컨트롤러(예를 들어, 호스트 데이터와 파퓰레이팅되지 않는)에 의해 스킵 파퓰레이팅될 수 있다. LP5, LP6, 및 LP7에 그 외에 파퓰레이팅되었던 데이터는 후속 논리 페이지들(예를 들어, LP8, LP9, 및 LP10)에 파퓰레이팅될 수 있다. 도 3에 예시된 바와 같이, LP5의 일부 및 LP7의 일부는 메모리의 양호한 물리 페이지들(예를 들어, D1P0 및 D2P0)에 대응한다. 따라서, LP5 및 LP7, 또는 메모리의 양호한 물리 페이지들에 대응하는 LP5 및 LP7의 적어도 그러한 부분들은 RAIN 스트라이프를 유지하기 위해 사용될 수 있는 에러 데이터와 파퓰레이팅될 수 있다(예를 들어, 패리티 데이터가 RAIN 스트라이프에 대해 계산되고 유효할 수 있도록). 몇몇 실시예들에서, 스킵 파퓰레이팅된 논리 페이지들에 파퓰레이팅된 에러 데이터, 또는 메모리의 양호한 물리 페이지들에 대응하는 그것의 부분들은 랜덤(random)하게 생성된 데이터일 수 있다.
도 4는 본 발명의 다수의 실시예들에 따른 강제 유닛 액세스(FUA; forced unit access)를 포함하거나 부가 기록 데이터를 포함하지 않는 페이지 스트라이프 레이아웃(420)의 블록도이다. FUA는 물리 메모리에 즉시(예를 들어, 메모리의 부가 물리 페이지가 동시에 프로그램될 수 있도록, 파퓰레이팅될 데이터의 후속 양을 대기하는 것 없이) 기록될 데이터의 논리 페이지에 대해 표시될 수 있다. 몇몇 실시예들에서, FUA에 대한 메모리 동작은 이용가능한 부가 기록 데이터가 없을 때의 메모리 동작과 유사할 수 있다.
예를 들어, 도 4에 대해, FUA는 임의의 데이터가 메모리의 부가 논리 페이지(예를 들어, LP5)에 대해 파퓰레이팅되기 전에, LP4 내의 데이터가 메모리의 상응하는 물리 페이지(예를 들어, D1P0)에 기록되도록, LP4에 대해 표시될 수 있다. RAIN 스트라이프 레이아웃(420)이 유지될 수 있으나, 물리 페이지들(D1P0 및 D1P1)은 FUA로 인해 상이한 기록 동작들(예를 들어, 동시가 아닌) 동안 기록될 수 있다.
유사하게, 데이터의 논리 페이지(LP4) 후에 이용가능한 부가 기록 데이터가 있지 않으면, LP4 내의 데이터는 임의의 데이터가 메모리의 부가 논리 페이지(예를 들어, LP5)에 대해 파퓰레이팅되기 전에, 메모리의 대응하는 물리 페이지(예를 들어, D1P0)에 기록되어야 한다. RAIN 스트라이프 레이아웃(420)이 유지될 수 있으나; 물리 페이지들(D1P0 및 D1P1)은 예를 들어, 부가 기록 데이터의 일시적 부족으로 인해 상이한 기록 동작들(예를 들어, 동시가 아닌) 동안 기록될 수 있다.
따라서, 몇몇 실시예들에서, 컨트롤러는 기록을 위해 현재 이용가능한 부가 기록 데이터가 없는 것 및/또는 데이터의 복수의 논리 페이지들(422)의 이전 논리 페이지와 연관된 FUA에 대응하여, 복수의 논리 페이지들(422)의 특정 논리 페이지(예를 들어, LP5)를 호스트 데이터와 적어도 부분적으로 스킵 파퓰레이팅하도록 구성될 수 있다. 컨트롤러는 LP4가 호스트 데이터와 파퓰레이팅된 후이지만, 데이터의 복수의 논리 페이지들(422)의 이전 논리 페이지(예를 들어, LP4)와 연관된 데이터를 메모리의 다수의 복수의 물리 페이지들(426)(예를 들어, 물리 페이지(D1P0))에 기록하기 전에, 복수의 논리 페이지들(422)의 특정 논리 페이지(예를 들어, LP5)의 제 1 부분(440)을 에러 데이터(예를 들어, 본 명세서에 설명된 바와 같이, 몇몇 예에서 랜덤 데이터 또는 다른 비-호스트 데이터일 수 있는 RAIN 스트라이프에 대한 패리티 데이터)와 파퓰레이팅하도록 구성될 수 있다. 본 명세서에 설명된 바와 같이, 예를 들어, 그러한 에러 데이터는 RAIN 스트라이프(예를 들어, RAIN 스트라이프에 대한 패리티 데이터)를 유지하는데 도움이 될 수 있고, 그러한 에러 데이터는 랜덤하게 생성된 데이터를 포함할 수 있다. 에러 데이터의 다른 예들은 모든 0, 모든 1 등을 포함할 수 있다.
컨트롤러는 FUA 후 및/또는 부가 기록 데이터가 이용가능해진 후, 데이터의 복수의 논리 페이지들(422)의 특정 논리 페이지(예를 들어, LP5)의 제 2 부분(442)을 에러 데이터와 파퓰레이팅하도록 구성될 수 있다. 예를 들어, 컨트롤러는 FUA 후 및/또는 부가 기록 데이터가 이용가능해질 때, 유효 호스트 데이터를 데이터의 다음 논리 페이지(예를 들어, LP6)에 파퓰레이팅하는 것을 재개하도록 구성될 수 있다.
도 5는 본 발명의 다수의 실시예들에 따른 논리 페이지를 기록하기 위한 버퍼 할당의 블록도이다. 본 명세서에 설명된 바와 같이, 물리 버퍼는 다수의 논리 버퍼 세그먼트들로 분리될 수 있다. 예를 들어, 물리 버퍼(546-0)는 제 1 다수의 논리 버퍼 세그먼트들(548-0)(예를 들어, "버퍼0", "버퍼1", "버퍼2", 및 "버퍼3")로 분리될 수 있고, 물리 버퍼(546-1)는 제 2 다수의 논리 버퍼 세그먼트들(548-1)(예를 들어, "버퍼4", "버퍼5", "버퍼6", 및 "버퍼7")로 분리될 수 있으며, 물리 버퍼(546-2)는 제 3 다수의 논리 버퍼 세그먼트들(548-2)(예를 들어, "버퍼8")로 분리될 수 있다. 물리 버퍼들은 임의의 수의 논리 버퍼 세그먼트들로 분리될 수 있고, 실시예들은 도 5에 예시된 예들에 제한되지 않는다. 물리 버퍼는 메모리의 물리 페이지와 동일한 크기를 가질 수 있다(예를 들어, 물리 버퍼(546-0)는 메모리의 물리 페이지(526-0)와 동일한 크기를 가질 수 있다). 몇몇 실시예들에서, 논리 버퍼 세그먼트는 코드워드 페이로드 크기와 동일한 크기를 가질 수 있다. 예를 들어, 제 1 논리 버퍼 세그먼트(예를 들어, "버퍼0")에서 버퍼링가능한 정보의 양은 ECC 코드워드의 페이로드와 동일할 수 있다. 논리 버퍼 세그먼트들은 메모리의 물리 페이지 내에 저장을 위해 데이터를 에러 코딩하기 전에 데이터를 버퍼링할 수 있다. 따라서, 코드워드 페이로드와 동일한 크기를 논리 버퍼 세그먼트들에 제공하는 것은 버퍼링 구성요소(예를 들어, 도 1에 예시된 버퍼링 구성요소(114))와 에러 코딩 구성요소(예를 들어, 도 1에 예시된 에러 코딩 구성요소(112)) 사이의 데이터의 고속이고 효율적인 전송을 제공하는데 도움이 될 수 있다.
기록 동작(예를 들어, 스트라이프 기록 동작)은 데이터의 제 1 논리 페이지에 대한 기록 요청으로 시작할 수 있다. 데이터의 논리 페이지를 저장하기에 충분한 다수의 논리 버퍼 세그먼트들이 할당될 수 있다(예를 들어, 이 예에서 3개의 논리 버퍼 세그먼트들("버퍼0", "버퍼1", "버퍼2", 및 "버퍼3")). 제 1 논리 버퍼 세그먼트(예를 들어, "버퍼0")의 일부는 메모리 메타데이터의 물리 페이지(528) 및 데이터 메타데이터의 논리 페이지(532-0)를 버퍼링할 수 있다. 제 1 논리 버퍼 세그먼트(예를 들어, "버퍼0") 내의 개시 부분들의 위치들은 메모리 메타데이터의 물리 페이지(528)(예를 들어, 위치 0) 및 데이터 메타데이터의 논리 페이지(예를 들어, 위치 27) 각각에 대해 매핑될 수 있다. 데이터의 논리 페이지의 개시 부분의 위치(예를 들어, 위치 28)가 매핑(예를 들어, 스트라이프에 매핑)될 수 있다. 데이터의 논리 페이지의 개시 부분의 위치는 다수의 코드워드들로 에러 코딩되는 데이터의 다수의 논리 페이지들의 일부에 대응할 수 있다. 다양한 매핑들은 스트라이프로부터 다양한 부분들을 판독하는데 유익할 수 있다. 예를 들어, 매핑은 데이터의 논리 페이지의 개시 부분을 포함하는 스트라이프를 식별하기 위해 사용될 수 있고, 오프셋(offset)은 메모리의 복수의 물리 페이지들 중 하나 및 데이터의 논리 페이지의 개시 부분을 포함하는 특정 코드워드를 식별하기 위해 스트라이프로 산출될 수 있다. 다수의 실시예들에서, 데이터의 논리 페이지에 대한 어드레스(address)는 예를 들어, 메모리의 물리 페이지 전체 크기, 메모리의 물리 페이지 메타데이터 크기, 코드워드 전체 크기, 코드워드 페이로드 크기, 호스트 섹터 크기, 및 논리 페이지 메타데이터 크기를 포함하는 한 세트의 파라미터들(parameters)에 기초하여 결정될 수 있다.
호스트 섹터들은 데이터의 논리 페이지(예를 들어, 기록 요청과 연관된 데이터의 논리 페이지)로 파퓰레이팅될 수 있다. 할당된 논리 버퍼 세그먼트들(예를 들어, "버터0", "버퍼1", "버퍼2", 및 "버퍼3")은 데이터의 논리 페이지를 적어도 부분적으로 버퍼링할 수 있다. 몇몇 실시예들에서, 컨트롤러는 호스트 섹터 바이 호스트 섹터(host sector by host sector)로, 할당된 논리 버퍼 세그먼트들에서 정보를 적어도 부분적으로 버퍼링하도록 구성될 수 있다. 예를 들어, 제 1 호스트 섹터 "0", 제 2 호스트 섹터 "1", 및 제 3 호스트 섹터 "2"는 제 1 논리 버퍼 세그먼트(예를 들어, "버퍼0")에서 버퍼링될 수 있다. 제 4 호스트 섹터 "3"의 일부는 제 1 논리 버퍼 세그먼트를 완전히 채우기 위해 제 1 논리 버퍼 세그먼트(예를 들어, "버퍼0")에서 버퍼링될 수 있다. 제 4 호스트 섹터 "3"의 나머지는 제 2 논리 버퍼 세그먼트(예를 들어, "버퍼1")에서 버퍼링될 수 있다. 몇몇 실시예들에서, 데이터의 논리 페이지는 8개의 호스트 섹터들(예를 들어, 호스트 섹터들(0-7))을 포함할 수 있지만, 실시예들은 데이터의 논리 페이지 당 특정 다수의 호스트 섹터들에 제한되지 않는다. 도 5에 예시된 바와 같이, 호스트 섹터들(4-7)은 제 2 논리 버퍼 세그먼트(예를 들어, "버퍼1") 및 제 3 논리 버퍼 세그먼트(예를 들어, "버퍼2")의 일부에서 버퍼링될 수 있다. 컨트롤러는 데이터의 논리 페이지가 할당된 논리 버퍼 세그먼트들 중 하나를 제외하고 모두를 채우도록(예를 들어, 완전히 채우도록), 할당된 논리 버퍼 세그먼트들에서 데이터의 논리 페이지를 적어도 부분적으로 버퍼링하도록 구성될 수 있다(예를 들어, 여기서 데이터의 논리 페이지는 논리 버퍼 세그먼트 "버퍼0" 및 논리 버퍼 세그먼트 "버퍼1"을 완전히 채우고 논리 버퍼 세그먼트 "버퍼2"를 부분적으로 채운다).
데이터의 후속 논리 페이지는 데이터의 제 1 논리 페이지와 동일한 기록 요청 또는 후속 기록 요청의 부분이든지, 그것에 할당된 논리 버퍼 세그먼트들을 가질 수 있다. 예를 들어, 제 3 논리 버퍼 세그먼트(예를 들어, "버퍼2")의 나머지는 제 4 논리 버퍼 세그먼트(예를 들어, "버퍼3") 및 제 5 논리 버퍼 세그먼트(예를 들어, "버퍼4")와 함께 그것에 할당될 수 있다. 후속 할당된 논리 버퍼 세그먼트들은 데이터의 제 1 논리 페이지가 제 3 논리 버퍼 세그먼트(예를 들어, "버퍼2")에서 중지된 곳에서 시작하여, 예를 들어, 논리 페이지 메타데이터(532-1)를 버퍼링한 후에 채워질 수 있다. 도 5에 예시된 바와 같이, 데이터의 후속 논리 페이지(예를 들어, 후속 호스트 섹터들(0-7)을 포함하는)는 제 3 논리 버퍼 세그먼트(예를 들어, "버퍼2") 및 제 4 논리 버퍼 세그먼트(예를 들어, "버퍼3")에서 버퍼링되고, 제 5 논리 버퍼 세그먼트(예를 들어, "버퍼4")에서 부분적으로 버퍼링될 수 있다. 또한, 도 5는 논리 버퍼 세그먼트들(예를 들어, "버퍼4", "버퍼5", 및 "버퍼6")에서 버퍼링되는 데이터의 제 3 논리 페이지(예를 들어, 제 3 호스트 섹터들(0-7)을 포함하는)를 예시한다. 또한, 도 5는 논리 버퍼 세그먼트들(예를 들어, "버퍼6", "버퍼7", 및 "버퍼8")에서 버퍼링되는 데이터의 제 4 논리 페이지(예를 들어, 제 3 호스트 섹터들(0-7)을 포함하는)를 예시한다.
데이터의 논리 페이지(및 적어도 하나의 호스트 섹터)는 논리 버퍼 경계(예를 들어, 제 1 할당된 논리 버퍼 세그먼트 "버퍼0"와 제 2 할당된 논리 버퍼 세그먼트 "버퍼1" 사이의 경계)를 트래버스(traverse)할 수 있다. 링크(link)는 할당된 논리 버퍼 세그먼트들(예를 들어, "버퍼0")의 제 1 세그먼트로부터 할당된 논리 버퍼 세그먼트들(예를 들어, "버퍼1")의 제 2 세그먼트로 매핑될 수 있다. 링크는 제 1 논리 버퍼 세그먼트(예를 들어, "버퍼0")와 제 2 논리 버퍼 세그먼트(예를 들어, "버퍼1") 사이의 논리 버퍼 경계를 트래버스하는 특정 호스트 섹터와 공동으로 사용될 수 있다. 더욱이, 링크들은 후속 논리 버퍼 세그먼트들 사이에(예를 들어, 논리 버퍼 세그먼트 "버퍼1" 및 논리 버퍼 세그먼트 "버퍼2" 사이에 등) 매핑될 수 있다.
물리 버퍼(예를 들어, 그 안에 포함된 논리 버퍼 세그먼트들을 포함하는)가 채워진 후에, 그것은 에러 코딩되어 메모리의 물리 페이지에 기록될 수 있다. 예를 들어, 물리 버퍼(546-0)는 에러 코딩되어 메모리의 물리 페이지(526-0)에 기록될 수 있고, 물리 버퍼(546-1)는 에러 코딩되어 메모리의 물리 페이지(526-1)에 기록될 수 있다. 몇몇 실시예들에서, 다수의 물리 버퍼들은 메모리의 다수의 물리 페이지들에 함께(예를 들어, 멀티-평면(multi-plane) 기록 동작, 및 RAIN 스트라이프 기록 동작 등으로) 기록될 수 있다.
본 명세서에 설명된 바와 같이, 메모리는 복수의 논리 버퍼 세그먼트들 각각에서 각각의 코드워드의 페이로드를 버퍼링함으로써 전체 코드워드 크기에 기초하여 버퍼 관리될 수 있다. 호스트와의 통신들은 데이터의 논리 페이지를 호스트로 전달함으로써 논리 페이지 크기에 기초할 수 있으며, 여기서 데이터의 논리 페이지는 복수의 논리 버퍼 세그먼트들 각각으로부터 각각의 코드워드 페이로드를 포함한다.
도 6은 본 발명의 다수의 실시예들에 따른 웨어 레벨링(wear leveling) 동작을 위한 버퍼 할당의 블록도이다. 웨어 레벨링 동작의 일 예는 가비지 콜렉션(garbage collection)으로 알려져 있다. 가비지 콜렉션은 최대 무효 페이지들을(예를 들어, "그리디 알고리즘(greedy algorithm)"에 따라) 갖는 블록들을 리클레임(reclaim)하는 것(예를 들어, 소거하는 것 및 기록을 이용가능하게 하는 것)을 포함할 수 있다. 대안적으로, 가비지 콜렉션은 임계량보다 더 많은 무효 페이지들을 갖는 블록들을 리클레임하는 것을 포함할 수 있다. 예를 들어, 무효 페이지는 상이한 페이지로 갱신되었던 데이터의 페이지일 수 있다.
예를 들어, 데이터의 2개의 논리 페이지들(예를 들어, 데이터의 제 1 논리 페이지(622-0) 및 데이터의 제 2 논리 페이지(622-1))은 웨어 레벨링을 위해 식별될 수 있다. 이 예에서, 데이터의 제 1 논리 페이지(622-0)는 호스트 섹터들(0-7)을 포함할 수 있고, 데이터의 제 2 논리 페이지(622-1)는 호스트 섹터들(8-15)을 포함할 수 있다. 데이터의 각각의 논리 페이지는 대응하는 다수의 코드워드들을 가질 수 있으나(예를 들어, 3개의 코드워드들은 각각의 논리 페이지에 각각 대응할 수 있다), 정수의 코드워드들은 데이터의 비-정수의 논리 페이지들에 대응할 수 있다. 즉, 예를 들어, 데이터의 각각의 논리 페이지는 3개의 대응하는 코드워들을 가질 수 있으나, 데이터의 특정 논리 페이지는 모든 3개의 코드워드들에서 정보 모두를 저장하지 않을 수 있다. 웨어 레벨링을 위해 식별된 논리 페이지들에 대해 대응하는 다수의 코드워드들이 판독될 수 있고, 코드워드 페이로드들은 웨어 레벨링 동작을 위해 할당된 다수의 논리 버퍼 세그먼트들에서 버퍼링될 수 있다(예를 들어, 제 1 논리 페이지(622-0)에 대한 코드워드 페이로드들은 제 1 다수의 논리 버퍼 세그먼트들(648-0)에서 버퍼링될 수 있고, 제 2 논리 페이지(622-1)에 대한 코드워드 페이로드들은 제 2 다수의 논리 버퍼 세그먼트들(648-1)에서 버퍼링될 수 있다).
데이터의 2개의 논리 페이지들 각각의 개시 부분들의 위치(예를 들어, 특정 논리 버퍼 세그먼트 내의 위치)는 본 명세서에 설명된 바와 같이, 알려져 있을 수 있다(예를 들어, 데이터의 논리 페이지(622-0)는 이전 물리 페이지 메타데이터(628-X) 후이지만 이전 제 1 논리 페이지 메타데이터(632-X0)를 포함하는 19에 개시 부분의 위치를 가질 수 있고, 데이터의 논리 페이지(622-1)는 이전 제 2 데이터의 논리 페이지 메타데이터(632-X1)를 포함하는 231에 개시 부분의 위치를 가질 수 있음). 물리 버퍼로부터 세그먼트되는, 제 3 다수의 논리 버퍼 세그먼트들(648-2)(예를 들어, "버퍼9", "버퍼10", "버퍼11", 및 "버퍼12")은 웨어 레벨링 동작을 위해 할당될 수 있다. 새로운 물리 페이지가 웨어 레벨링 동작의 일부로 기록되는 물리 페이지 메타데이터(628-Y)는 새롭게 할당된 버퍼 세그먼트들(예를 들어, "버퍼9")의 처음에서 생성되어 버퍼링될 수 있다.
링크된 리스트는 웨어 레벨링 동작의 일부로서 단일 페이지 기록에 대해 파퓰레이팅될 수 있다. 링크된 리스트는 웨어 레벨링 동작을 위해 할당되는 제 1 논리 버퍼 세그먼트(예를 들어, 다수의 논리 버퍼 세그먼트들(648-2) 내의 "버퍼9")의 위치의 식별, 물리 페이지 메타데이터(628-Y)에 대한 카운트(count), 링크 및 데이터의 제 1 논리 페이지(622-0) 및 데이터의 제 2 논리 페이지(622-1)를 저장하는 각각의 버퍼에 대한 카운트를 포함할 수 있다. 링크된 리스트 내의 엔트리들은 각각의 엔트리(entry)에 대한 카운트 및 다음 엔트리와의 링크를 갖는 논리 버퍼 세그먼트(예를 들어, "버퍼0"에서 "버퍼1"까지와 같은 다음 논리 버퍼 세그먼트)에 의해 파퓰레이팅될 수 있다. 카운트들은 각각의 엔트리와 연관된 정보의 양을 식별할 수 있다. 링크된 리스트는 전체 리스트에 대한 전체 카운트를 포함할 수도 있다. 따라서, 데이터의 제 1 논리 페이지(622-0) 및 데이터의 제 2 논리 페이지(622-1)로부터의 데이터는 논리 버퍼 세그먼트들(648-2)(예를 들어, 버퍼들(9-12))로 이동될 수 있다. 그 후, 논리 버퍼 세그먼트들(648-2)(예를 들어, 버퍼들(9-12))은 메모리의 물리 페이지(626)에 기록될 수 있다.
데이터의 제 1 논리 페이지(622-0) 및 데이터의 제 2 논리 페이지(622-1)가 논리 버퍼 세그먼트들(648-2)에서 버퍼링된 후에, 데이터의 제 1 논리 페이지(622-0) 및 데이터의 제 2 논리 페이지(622-1)의 일부는 메모리의 물리 페이지(626)에 기록될 수 있다. 예를 들어, 메모리의 물리 페이지(626)에 기록된 데이터의 제 1 논리 페이지(622-0) 및 데이터의 제 2 논리 페이지(622-1)의 일부는 제 1 논리 페이지 메타데이터(632-Y0), 제 2 논리 페이지 메타데이터(632-Y1), 호스트 섹터들(0-14) 모두 및 호스트 섹터(15)의 일부를 포함할 수 있다. 호스트 섹터(15)의 나머지는 데이터의 제 2 논리 페이지(622-1)에 대한 논리-대-물리 어드레스들의 테이블(예를 들어, LBA 테이블)에서 엔트리를 갱신하기 전에 메모리의 새로운 물리 페이지에 기록될 수 있다.
결론
본 발명은 물리 페이지, 논리 페이지, 및 코드워드 대응을 위한 장치들 및 방법들을 포함한다. 다수의 방법들은 데이터의 다수의 논리 페이지들을 다수의 코드워드들로 에러 코딩하는 단계 및 다수의 코드워드들을 메모리의 다수의 물리 페이지들에 기록하는 단계를 포함한다. 데이터의 다수의 논리 페이지들은 메모리의 다수의 물리 페이지들과 상이할 수 있다.
특정 실시예들이 본 명세서에 예시되고 설명되었지만, 당해 기술의 통상의 기술자들은 동일한 결과들을 달성하기 위해 산출되는 배열이 도시된 특정 실시예들을 대신할 수 있다는 것을 이해할 것이다. 본 발명은 본 발명의 하나 이상의 실시예들의 개조들 또는 변형들을 망라하도록 의도된다. 상기 설명은 예시적인 방식으로 이루어지고, 제한적인 방식으로 이루어지지 않았다는 점이 이해되어야 한다. 상기 실시예들, 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예들의 조합은 상기 설명을 검토한 직후에 당해 기술의 통상의 기술자에게 분명할 것이다. 본 발명의 하나 이상의 실시예들의 범위는 상기 구조들 및 방법들이 사용되는 다른 응용들을 포함한다. 따라서, 본 발명의 하나 이상의 실시예들의 범위는 첨부된 특허청구범위에 권리를 부여하는 균등물들의 전체 범위와 함께, 그러한 특허청구범위와 관련하여 결정되어야 한다.
전술한 상세한 설명에서, 일부 피쳐들(features)은 본 발명을 간소화할 목적으로 단일 실시예에서 함께 그룹화된다. 이러한 발명의 방법은 본 발명의 개시된 실시예들이 각각의 청구항에서 명확히 인용되는 더 많은 피쳐들을 사용해야 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 이하의 특허청구범위가 반영하는 바와 같이, 본 발명의 발명 대상은 단일 개시된 실시예의 모든 피쳐들보다 적게 있다. 따라서, 이하의 특허청구범위는 개별 실시예로서 그 자체에 기초하는 각각의 청구항과 함께, 이로써 상세한 설명에 통합된다

Claims (59)

  1. 메모리(memory)를 동작시키는 방법으로서,
    데이터(data)의 다수의 논리 페이지들(logical pages)을 다수의 코드워드들(codewords)로 에러 코딩(error coding)하는 단계; 및
    상기 다수의 코드워드들을 메모리의 다수의 물리 페이지들(physical pages)에 기록하는 단계를 포함하며, 상기 데이터의 다수의 논리 페이지들은 상기 메모리의 다수의 물리 페이지들과 상이한 방법.
  2. 청구항 1에 있어서,
    상기 데이터의 다수의 논리 페이지들을 상기 다수의 코드워드들로 에러 코딩하는 단계는 데이터의 비-정수(non-integer)의 논리 페이지들을 정수의 코드워드들로 에러 코딩하는 단계를 포함하는 방법.
  3. 청구항 2에 있어서,
    상기 다수의 코드워드들을 상기 메모리의 다수의 물리 페이지들에 기록하는 단계는 상기 정수의 코드워드들을 메모리의 정수의 물리 페이지들에 기록하는 단계를 포함하는 방법.
  4. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 다수의 코드워드들은 상기 데이터의 다수의 논리 페이지들 및 상기 메모리의 다수의 물리 페이지들과 상이한 방법.
  5. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 데이터의 다수의 논리 페이지들을 에러 코딩하는 단계는,
    물리 페이지 메타데이터(metadata) 및 데이터의 제 1 논리 페이지의 제 1 부분을 제 1 코드워드로 에러 코딩하는 단계; 및
    상기 데이터의 제 1 논리 페이지의 제 2 부분을 제 2 코드워드로 에러 코딩하는 단계를 더 포함하고;
    상기 다수의 코드워드들을 기록하는 단계는 상기 제 1 코드워드 및 상기 제 2 코드워드를 메모리의 제 1 물리 페이지에 기록하는 단계를 더 포함하는 방법.
  6. 청구항 5에 있어서,
    상기 데이터의 다수의 논리 페이지들을 에러 코딩하는 단계는,
    상기 데이터의 제 1 논리 페이지의 제 3 부분 및 데이터의 제 2 논리 페이지의 제 1 부분을 제 3 코드워드로 에러 코딩하는 단계; 및
    상기 데이터의 제 2 논리 페이지의 제 2 부분을 제 4 코드워드로 에러 코딩하는 단계를 더 포함하고;
    상기 다수의 코드워드들을 기록하는 단계는 상기 제 3 코드워드 및 상기 제 4 코드워드를 상기 메모리의 제 1 물리 페이지에 기록하는 단계를 더 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 데이터의 다수의 논리 페이지들을 에러 코딩하는 단계는,
    상기 물리 페이지 메타데이터, 상기 데이터의 제 2 논리 페이지의 제 3 부분, 및 데이터의 제 3 논리 페이지의 제 1 부분을 제 5 코드워드로 에러 코딩하는 단계; 및
    상기 제 5 코드워드를 메모리의 제 2 물리 페이지에 기록하는 단계를 더 포함하는 방법.
  8. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 에러 코딩하는 단계는 상기 데이터의 다수의 논리 페이지들을 상기 다수의 코드워드들로 에러 코딩하기 위해 메모리 장치의 컨트롤러(controller)를 사용하는 단계를 포함하는 방법.
  9. 메모리를 동작시키는 방법으로서,
    전체 코드워드 크기의 가변 코드워드 페이로드(payload) 크기 및 가변 코드워드 랩퍼(wrapper) 크기를 사용하여 데이터를 에러 코딩하는 단계; 및
    상기 코드워드 페이로드에 대한 소정의 양의 에러 정정에 기초하여 상기 데이터를 에러 코딩하기 전에 특정 코드워드 랩퍼 크기를 표시하는 입력을 수신하는 단계를 포함하는 방법.
  10. 청구항 9에 있어서,
    상기 방법은,
    상기 특정 코드워드 랩퍼 크기에 기초하여 특정 코드워드 페이로드 크기를 설정하는 단계; 및
    상기 데이터를 상기 특정 코드워드 페이로드 크기를 갖는 코드워드들로 에러 코딩하는 단계를 더 포함하는 방법.
  11. 청구항 9에 있어서,
    상기 전체 코드워드 크기는 고정된 전체 코드워드 크기를 포함하는 방법.
  12. 청구항 9 내지 11 중 어느 한 항에 있어서,
    상기 방법은,
    논리 페이지 크기에 기초하여 호스트(host)와 통신하는 단계; 및
    상기 전체 코드워드 크기에 기초하여 상기 메모리를 버퍼(buffer) 관리하는 단계를 더 포함하는 방법.
  13. 청구항 12에 있어서,
    상기 전체 코드워드 크기에 기초하여 상기 메모리를 버퍼 관리하는 단계는 복수의 논리 버퍼 세그먼트들(segments) 각각에서 각각의 코드워드의 페이로드를 버퍼링(buffering)하는 단계를 포함하고;
    상기 논리 페이지 크기에 기초하여 상기 호스트와 통신하는 단계는 데이터의 논리 페이지를 상기 호스트에 전달하는 단계를 포함하며, 상기 데이터의 논리 페이지는 상기 복수의 논리 버퍼 세그먼트들 각각으로부터의 각각의 코드워드 페이로드를 포함하는 방법.
  14. 청구항 9 내지 11 중 어느 한 항에 있어서,
    에러 코딩하는 단계는 상기 전체 코드워드 크기의 상기 가변 코드워드 페이로드 크기 및 상기 가변 코드워드 랩퍼 크기를 사용하여 데이터를 에러 코딩하기 위해 메모리 장치의 컨트롤러를 사용하는 단계를 포함하는 방법.
  15. 메모리를 동작시키는 방법으로서,
    메모리의 복수의 물리 페이지들로부터 데이터의 스트라이프(stripe)를 판독하는 단계로서, 상기 메모리의 복수의 물리 페이지들 각각은 각각의 복수의 코드워드들을 저장하는, 상기 판독하는 단계; 및
    데이터의 논리 페이지를 형성하기 위해 상기 메모리의 복수의 물리 페이지들 중 하나로부터 하나보다 많은 상기 각각의 복수의 코드워드들의 페이로드 부분들을 결합하는 단계를 포함하는 방법.
  16. 청구항 15에 있어서,
    상기 방법은 데이터의 부가 논리 페이지를 형성하기 위해 하나보다 많은 상기 메모리의 복수의 물리 페이지들로부터 하나보다 많은 상기 각각의 복수의 코드워드들의 페이로드 부분들을 결합하는 단계를 더 포함하는 방법.
  17. 청구항 15에 있어서,
    상기 방법은 데이터의 복수의 논리 페이지들을 형성하기 위해 상기 메모리의 복수의 물리 페이지들로부터 상기 각각의 복수의 코드워드들의 페이로드 부분들을 결합하는 단계를 더 포함하는 방법.
  18. 청구항 15에 있어서,
    상기 페이로드 부분들을 결합하는 단계는 상기 데이터의 논리 페이지를 형성하기 위해 상기 각각의 복수의 코드워드들 중 제 1 코드워드의 전체 페이로드 부분을 상기 각각의 복수의 코드워드들 중 제 2 코드워드의 전체보다 적은 페이로드 부분과 결합하는 단계를 포함하는 방법.
  19. 청구항 15 내지 18 중 어느 한 항에 있어서,
    상기 데이터의 스트라이프를 판독하는 단계는 정수의 코드워드들을 판독하는 단계를 포함하는 방법.
  20. 청구항 15 내지 18 중 어느 한 항에 있어서,
    상기 페이로드 부분들을 결합하는 단계는 상기 데이터의 논리 페이지를 형성하기 위해 상기 메모리의 복수의 물리 페이지들 중 하나로부터 하나보다 많은 상기 각각의 복수의 코드워드들의 페이로드 부분들을 결합하기 위해 메모리 장치의 컨트롤러를 사용하는 단계를 포함하는 방법.
  21. 메모리를 동작시키는 방법으로서,
    데이터의 논리 페이지의 개시 부분을 포함하는 상기 데이터의 논리 페이지의 일부만을 특정 코드워드로 인코딩(encoding)하는 단계; 및
    메모리의 복수의 물리 페이지들을 스트라이프로 기록하는 단계로서, 상기 메모리의 복수의 물리 페이지들 중 하나는 상기 특정 코드워드를 포함하는 정수의 코드워드들을 포함하는, 상기 기록하는 단계를 포함하는 방법.
  22. 청구항 21에 있어서,
    상기 방법은 상기 데이터의 논리 페이지의 상기 개시 부분의 위치를 상기 스트라이프에 매핑(mapping)하는 단계를 더 포함하는 방법.
  23. 청구항 22에 있어서,
    상기 방법은,
    상기 데이터의 논리 페이지의 상기 개시 부분을 포함하는 상기 스트라이프를 식별하기 위해 상기 매핑을 사용하고;
    상기 데이터의 논리 페이지의 상기 개시 부분을 포함하는 상기 특정 코드워드 및 상기 메모리의 복수의 물리 페이지들 중 하나를 식별하기 위해 오프셋(offset)을 상기 스트라이프로 산출함으로써, 상기 데이터의 논리 페이지를 판독하는 단계를 더 포함하는 방법.
  24. 청구항 21 내지 23 중 어느 한 항에 있어서,
    상기 방법은,
    메모리 전체 크기의 물리 페이지;
    물리 페이지 메타데이터 크기;
    코드워드 전체 크기;
    코드워드 페이로드 크기;
    호스트 섹터 크기; 및
    논리 페이지 메타데이터 크기
    를 포함하는 한 세트(set)의 파라미터들(parameters)에 기초하여 상기 데이터의 논리 페이지에 대한 어드레스(address)를 결정하는 단계를 더 포함하는 방법.
  25. 청구항 21 내지 23 중 어느 한 항에 있어서,
    상기 인코딩하는 단계는 상기 데이터의 논리 페이지의 상기 개시 부분을 포함하는 상기 데이터의 논리 페이지의 상기 일부만을 상기 특정 코드워드로 인코딩하기 위해 메모리 장치의 컨트롤러를 사용하는 단계를 포함하는 방법.
  26. 장치로서,
    다수의 메모리 디바이스들(memory devices); 및
    상기 다수의 메모리 디바이스들에 결합되고,
    데이터의 제 1 논리 페이지의 일부를 제 1 코드 레이트(code rate)를 사용하는 제 1 코드워드로 에러 코딩하고;
    데이터의 제 2 논리 페이지의 일부를 제 2 코드 레이트를 사용하는 제 2 코드워드로 에러 코딩하도록 구성된 컨트롤러를 포함하며, 상기 제 1 코드워드의 크기는 상기 제 2 코드워드의 크기와 동일한 장치.
  27. 청구항 26에 있어서,
    상기 컨트롤러는 정수의 코드워드들을 메모리의 물리 페이지에 기록하도록 더 구성되며, 상기 정수의 코드워드들은 데이터의 비-정수의 논리 페이지들에 대응하는 장치.
  28. 청구항 27에 있어서,
    상기 정수의 코드워드들은 상기 정수의 코드워드들 중 임의의 것에 대한 코드 레이트와 관계없이 일정한 장치.
  29. 청구항 26 내지 28 중 어느 한 항에 있어서,
    상기 제 1 코드워드의 페이로드 크기는 상기 제 2 코드워드의 페이로드 크기와 상이한 장치.
  30. 청구항 26 내지 28 중 어느 한 항에 있어서,
    상기 컨트롤러는 코드 레이트를 프로그램가능 옵션으로 설정하기 위해 입력을 수신하도록 구성되는 장치.
  31. 장치로서,
    다수의 메모리 디바이스들; 및
    상기 다수의 메모리 디바이스들에 결합되고,
    데이터의 다수의 논리 페이지들의 일부를 다수의 코드워드들로 에러 코딩하고;
    상기 다수의 코드워드들을 메모리의 하나의 물리 페이지에 기록하도록 구성된 컨트롤러를 포함하며;
    상기 메모리의 물리 페이지의 크기는 상기 데이터의 다수의 논리 페이지들 중 임의의 것의 크기와 독립적인 장치.
  32. 청구항 31에 있어서,
    상기 메모리의 물리 페이지의 상기 크기는 상기 데이터의 다수의 논리 페이지들 중 임의의 것의 상기 크기와 상이한 장치.
  33. 청구항 31에 있어서,
    상기 메모리의 물리 페이지의 상기 크기는 상기 데이터의 다수의 논리 페이지들의 특정 논리 페이지의 상기 크기와 상이한 장치.
  34. 청구항 31 내지 33 중 어느 한 항에 있어서,
    상기 컨트롤러는 상기 다수의 코드워드들로 에러 코딩된 상기 데이터의 다수의 논리 페이지들의 상기 일부에 대응하는 상기 데이터의 다수의 논리 페이지들 중 하나의 개시 부분의 위치를 매핑하도록 더 구성되는 장치.
  35. 청구항 31에 있어서,
    상기 컨트롤러는 상기 데이터의 다수의 논리 페이지들의 상기 일부를 다수의 논리 버퍼 세그먼트들 각각의 크기와 동일한 페이로드 크기를 각각 갖는 상기 다수의 코드워드들로 에러 코딩함으로써 상기 데이터의 다수의 논리 페이지들의 상기 일부를 상기 다수의 코드워드들로 에러 코딩하도록 구성되는 장치.
  36. 청구항 35에 있어서,
    상기 컨트롤러는 상기 다수의 코드워드들을 상기 메모리의 물리 페이지에 기록하기 전에 상기 다수의 논리 버퍼 세그먼트들에서 상기 다수의 코드워드들의 페이로드들을 버퍼링하도록 더 구성되는 장치.
  37. 청구항 31에 있어서,
    상기 컨트롤러는 데이터의 특정 논리 페이지를 제 1 코드워드의 제 1 페이로드 부분 및 제 2 코드워드의 제 2 페이로드 부분으로 에러 코딩함으로써 상기 데이터의 다수의 논리 페이지들의 상기 일부를 에러 코딩하도록 구성되는 장치.
  38. 청구항 37에 있어서,
    상기 제 1 코드워드의 크기는 상기 제 2 코드워드의 크기와 동일한 장치.
  39. 장치로서,
    다수의 메모리 디바이스들; 및
    상기 다수의 메모리 디바이스들에 결합되고,
    데이터의 복수의 논리 페이지들을 메모리의 복수의 대응하는 물리 페이지들에 매핑하도록 구성된 컨트롤러를 포함하며, 비-정수의 상기 데이터의 복수의 논리 페이지들은 상기 메모리의 복수의 물리 페이지들 중 적어도 하나에 매핑되는 장치.
  40. 청구항 39에 있어서,
    상기 컨트롤러는 상기 복수의 논리 페이지들 중 특정 논리 페이지의 특정 부분이 메모리의 알려진 불량 물리 페이지에 매핑되는 것에 대응하여 상기 복수의 논리 페이지들 중 상기 특정 논리 페이지를 호스트 데이터와 적어도 부분적으로 스킵 파퓰레이팅(skip populating)하도록 더 구성되는 장치.
  41. 청구항 40에 있어서,
    상기 컨트롤러는 상기 복수의 논리 페이지들 중 상기 특정 논리 페이지의 제 2 부분을 에러 데이터(error data)와 파퓰레이팅하도록 더 구성되며, 상기 복수의 논리 페이지들 중 상기 특정 논리 페이지의 상기 제 2 부분은 메모리의 알려진 양호한 물리 페이지에 매핑되는 장치.
  42. 청구항 41에 있어서,
    상기 컨트롤러는 상기 복수의 논리 페이지들을 상기 메모리의 복수의 대응하는 물리 페이지들에 복수 어레이 독립 NAND(RAIN; redundant array of independent NAND) 스트라이프로 매핑하도록 구성되는 장치.
  43. 청구항 42에 있어서,
    상기 에러 데이터는 상기 RAIN 스트라이프를 유지하기 위해 데이터를 포함하는 장치.
  44. 청구항 43에 있어서,
    상기 에러 데이터는 랜덤 데이터(random data)를 포함하는 장치.
  45. 청구항 40에 있어서,
    상기 컨트롤러는 상기 복수의 논리 페이지들의 상기 특정 논리 페이지에 후속되는 상기 복수의 논리 페이지들 중 하나를 호스트 데이터와 파퓰레이팅하도록 더 구성되는 장치.
  46. 청구항 39 내지 45 중 어느 한 항에 있어서,
    상기 컨트롤러는 상기 복수의 논리 페이지들의 이전 논리 페이지들과 연관된 강제 유닛 액세스(FUA; forced unit access)에 대응하여 상기 복수의 논리 페이지들 중 특정 논리 페이지를 호스트 데이터와 적어도 부분적으로 스킵 파퓰레이팅하도록 더 구성되는 장치.
  47. 청구항 46에 있어서,
    상기 컨트롤러는 상기 복수의 논리 페이지들 중 상기 이전 논리 페이지와 연관된 데이터를 상기 복수의 물리 페이지들의 다수에 기록하기 전에 상기 복수의 논리 페이지들의 상기 특정 논리 페이지의 제 1 부분을 에러 데이터와 파퓰레이팅하도록 더 구성되는 장치.
  48. 청구항 46에 있어서,
    상기 컨트롤러는 상기 FUA 후에 상기 복수의 논리 페이지들 중 상기 특정 논리 페이지의 제 2 부분을 에러 데이터와 파퓰레이팅하도록 더 구성되는 장치.
  49. 청구항 39 내지 45 중 어느 한 항에 있어서,
    상기 컨트롤러는 부가 호스트 데이터가 기록을 위해 현재 이용가능하지 않은 것에 대응하여 상기 복수의 논리 페이지들 중 특정 논리 페이지를 호스트 데이터와 적어도 부분적으로 스킵 파퓰레이팅하도록 더 구성되는 장치.
  50. 장치로서,
    다수의 메모리 디바이스들;
    복수의 논리 버퍼 세그먼트들로 세그먼트되는 복수의 물리 버퍼들로서, 상기 논리 버퍼 세그먼트 각각은 코드워드 페이로드 크기에 대응하고, 상기 물리 버퍼 각각은 물리 페이지 크기에 대응하는, 상기 복수의 물리 버퍼들; 및
    상기 다수의 메모리 디바이스들 및 상기 복수의 물리 버퍼들에 결합되는 컨트롤러로서,
    호스트 섹터들(host sectors)을 데이터의 논리 페이지로 파퓰레이팅하고;
    상기 데이터의 논리 페이지에 대해 상기 복수의 논리 버퍼 세그먼트들의 다수를 할당하며;
    상기 데이터의 논리 페이지가 적어도 하나의 논리 버퍼 경계를 트래버스(traverse)하고 적어도 하나의 호스트 섹터가 논리 버퍼 경계를 트래버스하기 위해, 상기 복수의 논리 버퍼 세그먼트들의 상기 다수에 상기 데이터의 논리 페이지를 적어도 부분적으로 채우도록 구성된 컨트롤러를 포함하는 장치.
  51. 청구항 50에 있어서,
    상기 컨트롤러는,
    할당된 상기 논리 버퍼 세그먼트들 중 제 1 세그먼트의 제 1 부분에 물리 페이지 메타데이터를 채우고;
    논리 페이지 메타데이터에 대한 개시 부분의 위치를 상기 물리 페이지 메타데이터의 끝에 매핑하고;
    할당된 상기 논리 버퍼 세그먼트들 중 상기 제 1 세그먼트의 제 2 부분에 상기 논리 페이지 메타데이터를 채우며;
    상기 호스트 섹터들에 대한 개시 부분의 위치를 상기 논리 페이지 메타데이터의 끝에 매핑하도록 더 구성되는 장치.
  52. 청구항 50에 있어서,
    상기 컨트롤러는 링크를 할당된 상기 논리 버퍼 세그먼트들 중 제 1 세그먼트로부터 할당된 상기 논리 버퍼 세그먼트들 중 제 2 세그먼트로 매핑하도록 더 구성되며, 상기 링크는 상기 논리 버퍼 경계를 트래버스하는 호스트 섹터와 공동으로 사용되고, 상기 논리 버퍼 경계는 할당된 상기 논리 버퍼 세그먼트들 중 상기 제 1 세그먼트와 상기 제 2 세그먼트 사이의 경계인 장치.
  53. 청구항 50에 있어서,
    상기 컨트롤러는 호스트 섹터 바이 호스트 섹터(host sector by host sector)로 할당된 상기 논리 버퍼 세그먼트들을 적어도 부분적으로 채우도록 구성되는 장치.
  54. 청구항 50에 있어서,
    상기 컨트롤러는 상기 데이터의 논리 페이지가 할당된 상기 논리 버퍼 세그먼트들 중 하나를 제외하고 모두를 채우기 위해, 할당된 상기 논리 버퍼 세그먼트들을 적어도 부분적으로 채우도록 구성되는 장치.
  55. 청구항 50에 있어서,
    상기 복수의 물리 버퍼들은 상기 컨트롤러 내부에 있는 장치.
  56. 청구항 50에 있어서,
    상기 복수의 물리 버퍼들은 상기 컨트롤러 외부에 있는 장치.
  57. 청구항 50 내지 56 중 어느 한 항에 있어서,
    상기 장치는 상기 데이터의 논리 페이지 및 데이터의 비-정수의 부가 논리 페이지들을 정수의 코드워드들로 에러 코딩하도록 구성된 에러 코딩 구성요소를 포함하는 장치.
  58. 청구항 50 내지 56 중 어느 한 항에 있어서,
    상기 컨트롤러는,
    웨어 레벨링(wear leveling)을 위한 복수의 논리 페이지들을 식별하고;
    상기 복수의 논리 페이지들에 대응하는 다수의 코드워드들을 제 1 다수의 상기 복수의 논리 버퍼 세그먼트들로 판독하고;
    상기 웨어 레벨링을 위한 제 2 다수의 상기 복수의 논리 버퍼 세그먼트들을 할당하고;
    링크된 리스트들(lists)을 사용하여, 상기 다수의 코드워드들의 버퍼 페이로드들을 상기 제 2 다수의 상기 복수의 논리 버퍼 세그먼트들로 재위치시키며;
    상기 복수의 논리 페이지들에 대응하는 재위치된 상기 코드워드들의 일부를 메모리의 물리 페이지에 기록하도록 구성되는 장치.
  59. 청구항 58에 있어서,
    상기 다수의 코드워드들은 다수의 호스트 섹터들을 포함하고, 상기 다수의 코드워드들의 상기 일부는 상기 다수의 호스트 섹터들 중 적어도 하나를 배제하는 장치.
KR1020147028217A 2012-03-15 2013-03-08 물리 페이지, 논리 페이지, 및 코드워드 대응 KR101660150B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/421,088 2012-03-15
US13/421,088 US9026887B2 (en) 2012-03-15 2012-03-15 Physical page, logical page, and codeword correspondence
PCT/US2013/029919 WO2013138190A1 (en) 2012-03-15 2013-03-08 Physical page, logical page, and codeword correspondence

Publications (2)

Publication Number Publication Date
KR20140139545A true KR20140139545A (ko) 2014-12-05
KR101660150B1 KR101660150B1 (ko) 2016-09-26

Family

ID=49158860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147028217A KR101660150B1 (ko) 2012-03-15 2013-03-08 물리 페이지, 논리 페이지, 및 코드워드 대응

Country Status (7)

Country Link
US (4) US9026887B2 (ko)
EP (1) EP2825960B1 (ko)
JP (1) JP6053078B2 (ko)
KR (1) KR101660150B1 (ko)
CN (3) CN110941507A (ko)
TW (1) TWI514139B (ko)
WO (1) WO2013138190A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200140394A (ko) * 2018-05-08 2020-12-15 마이크론 테크놀로지, 인크. 판독 오류 복구

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9159422B1 (en) * 2011-04-12 2015-10-13 Sk Hynix Memory Solutions Inc. Cross page management to avoid NAND physical page size limitation
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9176812B1 (en) * 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US9183085B1 (en) * 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9442840B2 (en) * 2012-12-19 2016-09-13 Qualcomm Incorporated Virtual boundary codes in a data image of a read-write memory device
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
KR102195298B1 (ko) 2014-02-13 2020-12-24 삼성전자주식회사 비휘발성 메모리 장치의 부분 페이지 프로그램 방법
US9299457B2 (en) 2014-02-23 2016-03-29 Qualcomm Incorporated Kernel masking of DRAM defects
US9448745B2 (en) * 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
KR102308777B1 (ko) 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
CN105278867A (zh) * 2014-07-24 2016-01-27 宇瞻科技股份有限公司 储存装置的载入方法及分割方法
US10176039B2 (en) 2014-09-19 2019-01-08 Micron Technology, Inc. Self-accumulating exclusive OR program
TWI556254B (zh) * 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
WO2016154079A1 (en) * 2015-03-20 2016-09-29 Burlywood, LLC Configurable multi-level error correction in a storage controller
TWI560718B (en) * 2015-03-27 2016-12-01 Silicon Motion Inc Data storage device and encoding method thereof
US20160299844A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Mapping Logical Groups of Data to Physical Locations In Memory
US9946594B2 (en) * 2015-08-19 2018-04-17 International Business Machines Corporation Validation bits and offsets to represent logical pages split between data containers
US9940034B2 (en) 2016-01-25 2018-04-10 International Business Machines Corporation Reducing read access latency by straddling pages across non-volatile memory channels
US10318378B2 (en) 2016-02-25 2019-06-11 Micron Technology, Inc Redundant array of independent NAND for a three-dimensional memory array
US10198313B2 (en) * 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
US10169142B2 (en) * 2016-07-12 2019-01-01 Futurewei Technologies, Inc. Generating parity for storage device
KR20180027803A (ko) * 2016-09-07 2018-03-15 에스케이하이닉스 주식회사 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
US10877842B2 (en) * 2017-09-08 2020-12-29 Intel Corporation Detecting silent data corruption for mass storage devices
TWI664531B (zh) * 2018-01-25 2019-07-01 矽創電子股份有限公司 快閃記憶體之控制器及控制方法
CN110489351B (zh) * 2018-05-14 2021-03-09 英韧科技(上海)有限公司 芯片指纹管理装置及安全芯片
US11221910B2 (en) 2018-07-24 2022-01-11 Micron Technology, Inc. Media scrubber in memory system
US10824502B2 (en) * 2018-08-08 2020-11-03 Micron Technology, Inc. Enhanced codeword for media persistence and diagnostics
US10817430B2 (en) 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US10789126B2 (en) * 2018-10-09 2020-09-29 Micron Technology, Inc. Multiple memory devices having parity protection
US11188250B2 (en) * 2018-10-25 2021-11-30 Micron Technology, Inc. Two-stage hybrid memory buffer for multiple streams
US10963342B2 (en) 2019-02-01 2021-03-30 Micron Technology, Inc. Metadata-assisted encoding and decoding for a memory sub-system
US10915400B1 (en) * 2019-11-08 2021-02-09 Micron Technology, Inc. Dynamic over provisioning allocation for purposed blocks
US11144392B1 (en) * 2020-07-17 2021-10-12 Toshiba Memory Corporation Payload distribution in solid state drives
US11481151B2 (en) * 2020-07-17 2022-10-25 Kioxia Corporation Payload spill boundary table assisted read in solid state drives
US11620068B2 (en) * 2021-01-06 2023-04-04 EMC IP Holding Company LLC Data transfer optimizations
US11550658B1 (en) 2021-09-02 2023-01-10 Western Digital Technologies, Inc. Storage system and method for storing logical-to-physical address table entries in a codeword in volatile memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100139010A (ko) * 2008-03-11 2010-12-31 에이저 시스템즈 인크 멀티-레벨 셀 플래쉬 메모리 디바이스 내에 데이터를 저장하는 방법 및 멀티-레벨 셀 플래쉬 메모리 디바이스
US20110280068A1 (en) * 2010-05-17 2011-11-17 Seagate Technology Llc Joint encoding of logical pages in multi-page memory architecture

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3020060A (en) 1960-07-13 1962-02-06 Gen Motors Corp Steering arrangement for a solid front axle suspension
WO1992002879A1 (en) 1990-08-03 1992-02-20 Du Pont Pixel Systems Limited Virtual memory system
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US7739577B2 (en) * 2004-06-03 2010-06-15 Inphase Technologies Data protection system
US20060282643A1 (en) * 2005-06-10 2006-12-14 Subramanyam Chandramouli Transparent low-density mode for multi-level cell flash memory devices
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
JP4633802B2 (ja) * 2005-12-09 2011-02-16 パナソニック株式会社 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US8020060B2 (en) * 2006-01-18 2011-09-13 Sandisk Il Ltd Method of arranging data in a multi-level cell memory device
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US20070180349A1 (en) * 2006-01-31 2007-08-02 Jacobsen Eric A Techniques for uequal error protection for layered protection applications
US7810017B2 (en) * 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
KR100843135B1 (ko) * 2006-11-20 2008-07-02 삼성전자주식회사 비휘발성 메모리 관리 방법 및 장치
US7873779B2 (en) 2007-05-14 2011-01-18 Qualcomm Incorporated Memory page size auto detection
US8427867B2 (en) * 2007-10-22 2013-04-23 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
JP5150245B2 (ja) * 2007-12-27 2013-02-20 株式会社東芝 半導体記憶装置
KR101398200B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8433847B2 (en) * 2008-04-11 2013-04-30 Lg Electronics Inc. Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
CN101676882B (zh) 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
US20100070733A1 (en) 2008-09-18 2010-03-18 Seagate Technology Llc System and method of allocating memory locations
KR100965051B1 (ko) 2008-10-01 2010-06-21 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
WO2010125574A1 (en) * 2009-04-27 2010-11-04 Kamlesh Gandhi Description
US20110004720A1 (en) 2009-07-02 2011-01-06 Chun-Ying Chiang Method and apparatus for performing full range random writing on a non-volatile memory
TWI400707B (zh) * 2009-07-09 2013-07-01 Phison Electronics Corp 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8266501B2 (en) 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
KR20110073932A (ko) * 2009-12-24 2011-06-30 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
US8589766B2 (en) 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8406051B2 (en) * 2010-05-17 2013-03-26 Seagate Technology Llc Iterative demodulation and decoding for multi-page memory architecture
TWI496161B (zh) * 2010-08-06 2015-08-11 Phison Electronics Corp 記憶體識別碼產生方法、管理方法、控制器與儲存系統
TWI451435B (zh) * 2010-10-08 2014-09-01 Phison Electronics Corp 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法
WO2012056491A1 (en) * 2010-10-26 2012-05-03 Hitachi, Ltd. Storage apparatus and data control method
TWI579692B (zh) * 2010-10-29 2017-04-21 三星電子股份有限公司 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US8589761B2 (en) * 2011-05-31 2013-11-19 Micron Technology, Inc. Apparatus and methods for providing data integrity
US9311969B2 (en) * 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100139010A (ko) * 2008-03-11 2010-12-31 에이저 시스템즈 인크 멀티-레벨 셀 플래쉬 메모리 디바이스 내에 데이터를 저장하는 방법 및 멀티-레벨 셀 플래쉬 메모리 디바이스
US20110280068A1 (en) * 2010-05-17 2011-11-17 Seagate Technology Llc Joint encoding of logical pages in multi-page memory architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200140394A (ko) * 2018-05-08 2020-12-15 마이크론 테크놀로지, 인크. 판독 오류 복구
US11775181B2 (en) 2018-05-08 2023-10-03 Micron Technology, Inc. Read error recovery

Also Published As

Publication number Publication date
EP2825960B1 (en) 2019-04-24
WO2013138190A1 (en) 2013-09-19
CN107967187A (zh) 2018-04-27
TWI514139B (zh) 2015-12-21
CN110941507A (zh) 2020-03-31
US9026887B2 (en) 2015-05-05
US10055285B2 (en) 2018-08-21
EP2825960A4 (en) 2016-01-06
US20130246891A1 (en) 2013-09-19
US20180336093A1 (en) 2018-11-22
US20150212882A1 (en) 2015-07-30
US20200272538A1 (en) 2020-08-27
EP2825960A1 (en) 2015-01-21
JP2015510213A (ja) 2015-04-02
CN107967187B (zh) 2019-11-26
CN104272262B (zh) 2018-01-19
TW201346550A (zh) 2013-11-16
CN104272262A (zh) 2015-01-07
US10664345B2 (en) 2020-05-26
JP6053078B2 (ja) 2016-12-27
US11354187B2 (en) 2022-06-07
KR101660150B1 (ko) 2016-09-26

Similar Documents

Publication Publication Date Title
KR101660150B1 (ko) 물리 페이지, 논리 페이지, 및 코드워드 대응
US11379301B2 (en) Fractional redundant array of silicon independent elements
US11144389B2 (en) Non-volatile memory program failure recovery via redundant arrays
US9323612B2 (en) Mixed granularity higher-level redundancy for non-volatile memory
JP2014507717A (ja) より高いレベルの冗長な情報の計算
EP2646922A2 (en) Dynamic higher-level redundancy mode management with independent silicon elements
TWI531902B (zh) 矽獨立元件之部分冗餘陣列

Legal Events

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

Payment date: 20190910

Year of fee payment: 4