KR20120005548A - 관리된 비휘발성 메모리에 대한 낮은 레이턴시 판독 동작 - Google Patents

관리된 비휘발성 메모리에 대한 낮은 레이턴시 판독 동작 Download PDF

Info

Publication number
KR20120005548A
KR20120005548A KR1020117029103A KR20117029103A KR20120005548A KR 20120005548 A KR20120005548 A KR 20120005548A KR 1020117029103 A KR1020117029103 A KR 1020117029103A KR 20117029103 A KR20117029103 A KR 20117029103A KR 20120005548 A KR20120005548 A KR 20120005548A
Authority
KR
South Korea
Prior art keywords
data
host controller
read
nvm
information
Prior art date
Application number
KR1020117029103A
Other languages
English (en)
Other versions
KR101382060B1 (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 KR20120005548A publication Critical patent/KR20120005548A/ko
Application granted granted Critical
Publication of KR101382060B1 publication Critical patent/KR101382060B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 시스템에서, 호스트 제어기는 비휘발성 메모리(NVM) 패키지(예를 들어, NAND 디바이스)에 커플링된다. 호스트 제어기는 낮은 레이턴시 판독 동작을 요청하는 판독 커맨드를 NVM 패키지에 송신한다. 판독 커맨드에 응답하여, NVM 패키지 내의 제어기는 데이터를 검색하고, 정정을 위해 ECC 엔진에 데이터를 송신한다. 판독 커맨드에 후속하여, 호스트 제어기는 NVM 패키지 내의 제어기에 판독 상태 요청 커맨드를 송신한다. 판독 상태 요청에 응답하여, 제어기는 데이터의 일부 또는 전부가 호스트 제어기로의 전송을 위해 사용가능함을 표시하는 상태 보고를 호스트 제어기에 송신한다. 보고에 응답하여, 호스트 제어기는 데이터를 전송한다. 언더런 상태는 정정되지 않은 데이터가 호스트 제어기에 전송되었음을 표시하기 위해 결정될 수 있다.

Description

관리된 비휘발성 메모리에 대한 낮은 레이턴시 판독 동작{LOW LATENCY READ OPERATION FOR MANAGED NON-VOLATILE MEMORY}
본 발명은 일반적으로는 관리된 비휘발성 메모리(NVM)의 액세스 및 관리에 관한 것이다.
플래시 메모리는 전기적으로 소거가능한 프로그램가능한 판독 전용 메모리(EEPROM)의 한 유형이다. 플래시 메모리들이 비휘발성이며 상대적으로 조밀하므로(dense), 핸드헬드 컴퓨터들, 모바일 전화들, 디지털 카메라들, 휴대용 음악 플레이어들, 및 다른 저장 솔루션들(예를 들어, 자기 디스크들)이 부적절한 많은 다른 디바이스들에 파일들 및 다른 지속성 객체들을 저장하기 위해 사용된다.
NAND는 하드 디스크 또는 메모리 카드와 같은 블록 디바이스처럼 액세스될 수 있는 플래시 메모리의 유형이다. 각각의 블록은 다수의 페이지들(예를 들어, 64-128 페이지들)로 구성된다. 통상적인 페이지 사이즈는 4KB-8KB 바이트이다. NAND 디바이스는 각각이 4096-8192개 블록들을 가지는 다수의 다이들을 가질 수 있다. 에러 검출 및 정정 체크섬들의 저장을 위해 사용되는 다수의 바이트들(예를 들어, 12-16바이트)이 각각의 페이지와 연관된다. 판독 및 프로그래밍은 페이지 기반으로 수행되며, 소거는 블록 기반으로 수행되고, 한 블록 내의 데이터는 오직 순차적으로만 기록될 수 있다. NAND는 정상적인 디바이스 동작 동안 플립할 수 있는 비트들을 보상하기 위해 에러 정정 코드(ECC)에 의존한다. 소거 또는 프로그래밍 동작들을 수행할 때, NAND 디바이스는 프로그래밍 또는 소거에 실패한 블록들을 검출하고 상기 블록들을 배드(bad) 블록 맵에 배드로서 마킹할 수 있다. 데이터는 다른 양호한 블록에 기록될 수 있으며, 배드 블록 맵은 업데이트된다.
관리된 NAND 디바이스들은 미가공(raw) NAND를 메모리 제어기와 결합시켜 에러 정정 및 검출 뿐만 아니라 NAND 메모리의 메모리 관리 기능들을 핸들링한다. 관리된 NAND는 Ball Grid Array (BGA) 패키지들 또는 표준화된 프로세서 인터페이스들, 예를 들어, MMC(Multimedia Memory Card) 및 SD(Secure Digital) 카드를 지원하는 다른 집적 회로(IC) 패키지에서 상업상 이용가능하다. 관리된 NAND 디바이스는 하나 이상의 칩 선택 신호들을 사용하여 액세스될 수 있는 다수의 NAND 디바이스들 또는 다이들을 포함할 수 있다. 칩 선택은 동일한 버스에 접속된 몇몇 칩들 중 하나의 칩을 선택하기 위해 디지털 전자회로에서 사용되는 제어 라인이다. 칩 선택은 통상적으로 해당 디바이스의 내부 회로에 디바이스 상의 입력 핀들을 접속시키는 대부분의 IC 패키지들 상의 커맨드 핀이다. 칩 선택 핀이 비활성 상태로 유지되는 경우, 칩 또는 디바이스는 자신의 입력 핀들의 상태에서의 변경들을 무시한다. 칩 선택 핀이 활성 상태로 유지되는 경우, 칩 또는 디바이스는 자신이 버스 상의 유일한 칩인 것처럼 응답한다.
개방 NAND 플래시 인터페이스 작업 그룹(Open NAND Flash Interface Working Group: ONFI)은 NAND 플래시 칩들로 하여금 상이한 제조자들로부터의 순응하는 NAND 디바이스들 사이의 상호운용성을 허용하게 하기 위한 표준화된 로우(low)-레벨 인터페이스를 개발하였다. ONFI 규격 버전 1.0은 TSOP-48, WSOP-48, LGA-52, 및 BGA-63 패키지들에서 NAND 플래시에 대한 표준 물리적 인터페이스(핀-아웃); NAND 플래시 칩들을 판독, 기록 및 소거하기 위한 표준 커맨드 세트; 및 자가-식별을 위한 메커니즘을 특정한다. ONFI 규격 버전 2.0은 듀얼 채널 인터페이스를 지원하는데, 짝수 칩 선택들(또한 칩 인에이블 또는 "CE"라고 지칭됨)은 채널 1에 접속되고, 짝수의 CE들은 채널 2에 접속된다. 물리적 인터페이스는 전체 패키지에 대해 최대 8개의 CE들을 가질 것이다.
ONFI 규격들이 상호운용성을 허용하지만, 현재 ONFI 규격들은 관리된 NAND 솔루션들을 완전히 이용하지 않는다.
메모리 시스템에서, 호스트 제어기는 비휘발성 메모리(NVM) 패키지(예를 들어, NAND 디바이스)에 커플링된다. 호스트 제어기는 낮은 레이턴시 판독 동작을 요청하는 판독 커맨드를 NVM 패키지에 송신한다. 판독 커맨드에 응답하여, NVM 패키지 내의 제어기는 데이터를 검색하고, 정정을 위해 상기 데이터를 ECC 엔진에 송신한다. 판독 커맨드에 후속하여, 호스트 제어기는 판독 상태 요청 커맨드를 NVM 패키지 내의 제어기에 송신한다. 판독 상태 요청에 응답하여, 제어기는 데이터의 일부 또는 전부가 호스트 제어기에 전송하기 위해 사용가능함을 표시하는 상태 보고를 호스트 제어기에 송신한다. 보고에 응답하여, 호스트 제어기는 데이터를 전송한다.
일부 구현예들에서, 언더런(underrun) 상태는 NVM 패키지 내의 제어기에 의해 결정되고, 판독 동작의 종료에서 호스트 제어기에 의해 송신되는 판독 동작 상태 요청 커맨드에 응답하여 호스트 제어기에 보고된다. NVM 패키지에 의해 보고되는 판독 동작 상태는 정정되지 않은 데이터가 호스트 제어기에 전송되는 언더런이 있었는지의 여부, 및 데이터가 정정가능한지 또는 정정 불가능한지의 여부를 표시한다. 판독 동작 상태에 기초하여, 호스트 제어기는, 예를 들어, 낮은 레이턴시와는 무관하게 또다른 판독 동작을 수행하는 등의 동작을 취할 수 있다.
개시된 낮은 레이턴시 판독 동작들의 장점은, 임의의 데이터가 호스트 제어기로 전송되기 전에 요청된 데이터 모두가 버퍼에 로딩되어 정정되는 종래의 비휘발성 메모리 시스템에 비해, 요청된 데이터의 정정된 부분들이 호스트 제어기에 전송될 수 있다는 점이다.
도 1은 관리된 NVM 패키지에 커플링된 호스트 프로세서를 포함하는 예시적인 메모리 시스템의 블록 다이어그램이다.
도 2는 도 1의 관리된 NVM 패키지에 대한 예시적인 어드레스 매핑을 예시한다.
도 3은 배드 블록 교체를 포함하는 도 2의 어드레스 매핑을 예시한다.
도 4는 관리된 비휘발성 메모리의 낮은 레이턴시 판독의 예시적인 방법을 예시한다.
도 5는 낮은 레이턴시 판독 동작에서 언더런 상태를 결정하기 위한 예시적인 프로세스를 예시한다.
도 6은 관리된 비휘발성 메모리의 낮은 레이턴시 판독의 또다른 예시적인 방법을 예시한다.
도 7은 호스트 제어기에 의해 수행되는 낮은 레이턴시 판독 동작들의 흐름도이다.
도 8은 NVM 제어기에 의해 수행되는 낮은 레이턴시 판독 동작들의 흐름도이다.
메모리 시스템 개요
도 1은 관리된 NVM 패키지(104)(예를 들어, NAND 디바이스)에 커플링된 호스트 제어기(102)를 포함하는 예시적인 메모리 시스템(100)의 블록도이다. NVM 패키지(104)는 다수의 NVM 디바이스들(108)(예를 들어, 다수의 미가공 NAND 디바이스들)을 포함하는, BGA 패키지 또는 다른 IC 패키지일 수 있다. 메모리 시스템(100)은 핸드헬드 컴퓨터들, 모바일 전화들, 디지털 카메라들, 휴대용 음악 플레이어들, 장난감, 썸 드라이브들, 이메일 디바이스들, 및 비휘발성 메모리가 바람직하거나 또는 요구되는 임의의 다른 디바이스들을 포함하지만 이에 제한되지 않는 다양한 디바이스들에서 사용될 수 있다. 본 명세서에서 사용되는, 미가공 NVM은 외부 호스트 프로세서에 의해 관리되는 메모리 디바이스 또는 패키지이고, 관리된 NVM은 예컨대, 에러 정정, 웨어 레벨링(wear leveling), 배드 블록 관리 등과 같은 적어도 하나의 내부 메모리 관리 기능을 포함하는 메모리 디바이스 또는 패키지이다.
일부 구현예들에서, NVM 패키지(104)는 내부 칩 선택 신호들을 사용하여 내부 채널들 상에서 NVM 디바이스들(108)을 액세스 및 관리하기 위한 제어기(106)를 포함할 수 있다. 내부 채널은 제어기(106)와 NVM 디바이스(108) 사이의 데이터 경로이다. 제어기(106)는 메모리 관리 기능(예를 들어, 웨어 레벨링, 배드 블록 관리)을 수행할 수 있고, 데이터 에러들(예를 들어, 플립된 비트들)을 검출 및 정정하기 위한 에러 정정(ECC) 엔진(110)을 포함할 수 있다. 일부 구현예들에서, ECC 엔진(110)은 제어기(106) 내의 하드웨어 컴포넌트로서 또는 제어기(106)에 의해 실행되는 소프트웨어 컴포넌트로서 구현될 수 있다. 일부 구현예들에서, ECC 엔진(110)은 NVM 디바이스들(108)에 위치될 수 있다.
일부 구현예들에서, 호스트 제어기(102) 및 NVM 패키지(104)는 호스트에 가시적인 통신 채널("호스트 채널") 상에서 정보(예를 들어, 제어 커맨드들, 어드레스들, 데이터)를 전달할 수 있다. 호스트 채널은 예를 들어, ONFI 규격 버전 2.0에 기술되는 바와 같은 표준 인터페이스들, 예컨대, 미가공 NAND 인터페이스들 또는 듀얼 채널 인터페이스들을 지원할 수 있다. 호스트 제어기(102)는 또한 호스트 칩 인에이블(CE) 신호를 제공할 수 있다. 호스트 CE는 호스트 채널을 선택하기 위해 호스트 채널(102)에 대해 가시적이다.
예시적인 메모리 시스템(100)에서, NVM 패키지(104)는 CE 은닉(hiding)을 지원한다. CE 은닉은 단일 호스트 CE가 NVM 패키지(104) 내의 각각의 내부 채널에 대해 사용되어, NVM 패키지(104)의 인터페이스를 지원하기 위해 요구되는 신호들의 수를 감소시키도록 한다. 메모리 액세스들은 도 2 및 3을 참조하여 기술되는 바와 같이, 어드레스 공간 및 어드레스 매핑을 사용하여 NVM 디바이스들(108) 및 내부 채널들에 매핑될 수 있다. 개별 NVM 디바이스들(108)은 제어기(106)에 의해 생성된 내부 CE 신호들을 사용하여 인에이블될 수 있다.
예시적인 어드레스 매핑
도 2는 도 1의 관리된 NVM 패키지(104)에 대한 예시적인 어드레스 매핑을 예시한다. 특히, 매핑은 각각의 다이가 잠재적으로 다수의 면들을 포함할 수 있는 다수의 다이들을 포함하는 관리된 NAND 디바이스들과 함께 사용될 수 있다. 일부 구현예들에서, 어드레스 매핑은 동시에 어드레스지정가능한 유닛(Concurrently Addressable Unit: CAU)들 상에서 동작한다. CAU는 NVM 패키지에서 다른 CAU들과 동시에 또는 이들과 병렬로 판독, 프로그래밍 또는 소거될 수 있는 단일 호스트 채널로부터 액세스가능한 물리적 저장소의 일부분이다. 예를 들어, CAU는 단일 면 또는 단일 다이일 수 있다. CAU 사이즈는 CAU에서 소거가능한 블록들의 수이다.
매핑은 도 2의 예시적인 메모리 아키텍처를 사용하여 기술될 것이다. 이러한 예시적인 아키텍처에서, 블록 사이즈는 소거가능한 블록에서의 페이지들의 수로서 정의된다. 일부 구현예들에서, 16바이트의 메타데이터가 각각의 4킬로바이트들의 데이터에 대해 사용가능하다. 다른 메모리 아키텍처들 역시 가능하다. 예를 들어, 메타데이터에는 더 많거나 더 적은 바이트들이 할당될 수 있다.
도 2에 도시된 어드레스 매핑은 미가공 NAND 프로토콜의 사용으로, 최적화된 성능을 인에이블하는 추가적인 커맨드들 및 NAND 블록들을 판독/ 프로그래밍/ 소거하도록 해준다. NVM 패키지(104)는 NAND의 데이터 신뢰성을 관리하기 위한 ECC 엔진(예를 들어, ECC 엔진(110))을 포함한다. 따라서, 호스트 제어기(102)는 ECC 엔진(110)을 포함하거나, 또는 그렇지 않은 경우, 신뢰성의 목적으로 데이터를 프로세싱할 필요가 없다.
NVM 패키지(104)는 다른 CAU들과 동시에 또는 이들과 병렬로 액세스될 수 있는(예를 들어, NAND 메모리 셀들로부터 내부 레지스터로 데이터를 이동시킴) 영역으로서 CAU를 정의한다. 이러한 예시적인 아키텍처에서, 모든 CAU들이 동일한 개수의 블록들을 포함한다고 가정된다. 다른 구현예들에서, CAU들은 상이한 개수의 블록들을 가질 수 있다. 아래 표 1은 CAU 내의 페이지에 액세스하기 위한 예시적인 행 어드레스 포맷을 기술한다.
Figure pct00001
예시적인 행 어드레스 포맷
표 1을 참조하면, 예시적인 n-비트(예를 들어, 24비트) 행 어드레스가 다음 포맷으로 NAND 디바이스 내의 제어기에 제시될 수 있다: [CAU: Block: Page]. CAU는 다이 또는 면을 나타내는 수(예를 들어, 정수)이다. Block은 CAU 수에 의해 식별되는 CAU 내의 블록 오프셋이고, Page는 Block에 의해 식별되는 블록의 페이지 오프셋이다. 예를 들어, 블록당 128개 페이지, CAU 당 8192개 블록들 그리고 6개의 CAU들을 가지는 디바이스에서, X는 7(27 = 128)이고, Y는 13이고(213 = 8192), Z는 3(22 < 6 < 23)일 것이다.
도 2에 도시된 예시적인 NVM 패키지(104)는 2개의 NAND 다이들(204a, 204b)을 포함하고, 각각의 다이는 2개 면들을 가진다. 예를 들어, 다이(204a)는 면들(206a, 206b)을 포함한다. 그리고, 다이(204b)는 면들(206c, 206d)을 포함한다. 이 예에서, 각각의 면은 CAU이고, 각각의 CAU는 블록 당 128개 페이지들을 가지는 2048개의 멀티-레벨 셀(MLC) 블록들이다. 프로그램 및 소거 동작들은 블록들의 스트라이드(각각의 CAU로부터의 블록) 상에서 수행될 수 있다. 스트라이드는 각각이 상이한 CAU로부터 오는 블록들의 어레이로서 정의된다. 도시된 예에서, "스트라이드 0"는 각각의 CAU들(0-3)로부터 블록 0을 정의하고, "스트라이드 1"은 각각의 CAU 들(0-3)로부터 블록 1을 정의하고, "스트라이드 2"는 각각의 CAU들(0-3)로부터 블록 2를 정의하는 등의 식이다.
NVM 패키지는 제어 버스(208) 및 어드레스/데이터 버스(210)를 통해 CAU들과 통신하는 NVM 제어기(202)를 포함한다. 동작 동안, NVM 제어기(202)는 호스트 제어기(미도시)로부터 커맨드들을 수신하고, 커맨드에 응답하여 제어 버스(208) 상에서 제어 신호들을 어써트(assert)하고, 어드레스/데이터 버스(210) 상에서 어드레스들 또는 데이터를 어써트하여 하나 이상의 CAU들 상에서 동작(예를 들어, 판독, 프로그램 또는 소거 동작)을 수행한다. 일부 구현예들에서, 커맨드는 도 2를 참조하여 기술된 바와 같이, 형식 [CAU: Block: Page]을 가지는 행 어드레스를 포함한다.
도 3은 배드 블록 교체를 포함하는 도 2의 어드레스 매핑을 예시한다. 이 예에서, 호스트 제어기(102)는 3개의 CAU들을 포함하는 NVM 패키지(104)에 대한 스트라이드 어드레스를 발행하며, 여기서, CAU들 중 하나는 스트라이드 블록 오프셋에서 배드 블록을 보유한다. "스트라이드 4" 어드레스는 정상적으로 CAU0: 블록4, CAU1: 블록4 및 CAU2: 블록4에 액세스할 것이다. 그러나, 이 예에서, 배드 블록 CAU1: 블록4는 CAU1: 블록2000에 의해 교체된다.
예시적인 낮은 레이턴시 판독 동작
도 4는 관리된 비휘발성 메모리의 낮은 레이턴시 판독 동작의 예시적인 방법을 예시한다. 낮은 레이턴시 판독 상태 기능은 호스트 제어기로 하여금 데이터의 페이지 부분들이 준비되자마자 판독 동작에 후속하여 데이터의 바이트들의 전송을 시작하도록 한다. 이러한 판독 상태 동작은 언제 데이터의 제1 부분이 준비되는지를 표시한다. 호스트 제어기 및 NVM 제어기 버스들이 유사한 타이밍을 사용하고, ECC 프로시져가 판독 동작 전반에 걸쳐 레이턴시에 크게 영향을 주지 않는다고 가정하면, 세그먼트가 준비되지마자 ECC 세그먼트의 전송을 시작하는 것은 상당한 레이턴시 개선을 제공할 수 있다.
페이지가 정확하게 전달되었다는 것을 증명하기 위해, 호스트 제어기는 데이터를 전송하기 전후에 NVM 제어기에 의해 제공된 상태를 판독할 수 있다. 상태 소유자에 관한 혼동을 방지하기 위해, 프로토콜은 동일한 행 어드레스를 사용하여 실행되는 2개의 계류중인 커맨드들을 가지는 것을 불법적인 조건으로서 특정할 수 있다. 다음의 표 2는 전술된 동작 판독 상태 기능에 의해 리턴되는 예시적인 정보를 기술한다. 이 예에 대해서는 8-비트 리턴 값이 가정된다.
비트 판독
0 1- ECC 지연(준비되기 전에 페이지의 판독 영역들을 호스팅한다). 사용자는 동작 판독 상태를 사용하고 잠재적으로 페이지를 재판독해야 한다.
1 1- 데이터가 디바이스로부터 적절하게 판독되었다. 사용자는 추가 상태 정보에 대한 동작 판독 상태를 사용해야 한다.
2 예약됨
3 예약됨
4 예약됨
5 예약됨
6 1- 데이터가 전송시작될 준비가 됨
7 예약됨
동작 판독 상태 기능에 대한 예시적인 리턴 정보
위의 표 2를 참조하면, NVM 제어기가 "0"을 리턴할 경우, ECC 지연이 존재하였다. 호스트 제어기는 페이지의 일부분이 ECC 엔진에 의해 프로세싱되기 전에 그 부분을 판독하였다. 이러한 조건이 발생하는 경우, 호스트 제어기는 동작 판독 상태를 사용하고 잠재적으로 페이지를 재판독할 수 있다. NVM 제어기가 "1"을 리턴하는 경우, 데이터는 NVM 패키지로부터 부적절하게 판독되었다. 호스트 제어기는 추가적인 상태 정보에 대한 또다른 판독 상태 커맨드를 발행할 수 있다. 다른 정보는 원하는 경우 NVM 패키지로부터의 상태에 리턴될 수 있다.
다시 도 4를 참조하면, 내부 버스, NVM 제어기, 낮은 레이턴시 외부 버스 및 정상 외부 버스에 의한 낮은 레이턴시 판독 동작 동안 수행되는 낮은 레이턴시 판독 이벤트들의 4개의 스택화된 행들이 도시된다. 시간은 x-축을 따라 왼쪽에서 오른쪽으로 증가한다. 내부 버스 및 NVM 제어기는 NVM 패키지(예를 들어, NAND 디바이스) 내에 위치된다. 낮은 레이턴시 및 정상 외부 버스들은 호스트 제어기(예를 들어, 호스트 제어기(102))를 NVM 패키지에 커플링한다.
이제 도 4를 참조하면, 낮은 레이턴시 판독 커맨드가 낮은 레이턴시 외부 버스를 통해 호스트 제어기로부터 NVM 제어기로 송신된다. 판독 커맨드는 NVM 제어기에 의해 프로세싱된다. 이 예에서, NVM 디바이스는 3개의 CAU들을 포함하며, 이들은 도 2를 참조하여 기술된 맵 어드레스지정(addressing)을 사용하여 액세스될 수 있다. NVM 제어기는 CAU들로부터 판독된 데이터의 ECC 세그먼트들의 프로세싱을 시작한다. 데이터의 세그먼트들(예를 들어, 하나 이상의 페이지들)은 메모리 셀들로부터 버퍼로 전송된다. ECC 세그먼트는 데이터 더하기 메타데이터를 포함하는 정정가능한 유닛 사이즈로서 정의될 수 있다. 일단 세그먼트가 버퍼 내에 있으면, 세그먼트는 ECC 엔진에 의해 프로세싱될 수 있고, 세그먼트가 ECC 엔진에 의해 정정되는지 또는 정정 불가능한지의 여부에 대한 표시가 레코딩될 수 있다.
호스트 제어기가 판독 커맨드를 발행한 후, 호스트 제어기는 ECC 세그먼트가 사용가능한지의 여부를 결정하기 위해 NVM 제어기에 낮은 레이턴시 상태 요청 커맨드("LL 상태")를 발행한다. NVM 제어기는 ECC 세그먼트가 호스트 제어기에 전송하기 위해 사용가능함을 표시하는 상태 또는 데이터에 문제가 있었음을 표시하는 에러 코드에 응답한다. 상기 상태가 ECC 세그먼트가 사용가능함을 표시하는 경우, 호스트 제어기는 외부 전송 커맨드("Ext Xfer")를 발행하여 외부 버스를 통해 호스트 제어기로 ECC 세그먼트를 전송한다. 이러한 프로세스는 판독이 완료되었음을 표시하는 ECC 세그먼트들이 더 이상 존재하지 않을 때까지 반복된다. 상태가 에러를 표시하는 경우, 배드 데이터를 핸들링하기 위한 정상 프로세스가 수행될 수 있다(예를 들어, 배드 블록 교체).
낮은 레이턴시 판독 동작 동안, ECC 엔진이 호스트 제어기로의 외부 전송을 위한 시간 내에 ECC 프로세스를 완료할 수 없으므로, 데이터의 세그먼트가 ECC 엔진에 의해 먼저 프로세싱되지 않고 외부 버스 상에서 전송되는 것이 가능하다. 이는 "언더런"이라고 칭한다. 이러한 이슈를 다루기 위해, 호스트 제어기는 ECC 프로세싱을 수신하지 않은 데이터가 전송되었는지의 여부 또는 임의의 배드 데이터가 정정 불가능했는지의 여부를 결정하기 위해 최종 상태 요청 커맨드를 발행한다. NVM 제어기가 언더런, 또는 세그먼트가 정정될 수 없는 배드 데이터를 포함함을 표시하는 상태를 제공하는 경우, 호스트 제어기 및 NVM 제어기는 정상 외부 버스 프로토콜을 사용하여 정상 판독 동작을 수행한다. 일부 구현예들에서, 정상 판독 동작은 판독될 데이터가 전체적으로 버퍼로 전송되게 한다. 이후, 데이터의 전체 버퍼는 정상 외부 버스를 통해 호스트 제어기로 전송되기 전에 ECC 엔진에 의해 프로세싱된다. 정상 판독 동작은 도 4의 최하부 행에 의해 예시된다.
예시적인 언더런 상태 결정
도 5는 낮은 레이턴시 판독 동작에서 언더런 상태를 결정하기 위한 예시적인 프로세스를 예시한다. 일부 구현예들에서, 2개의 포인터들: 호스트 판독 바이트 포인터(502) 및 최상위 어드레스 유효 바이트 포인터(504)가 유지된다. 포인터(502)는 n-비트 플립-플롭을 사용하여 구현될 수 있다. 포인터(502)는 호스트 버스 폭 청크들로 증분한다(예를 들어, 바이트들로 증분한다). 포인터(502)는 호스트 제어기에 의해 송신된 판독 커맨드에 포함된 행 어드레스[CAU: Bock: Page]에 특정되는 페이지 오프셋 어드레스로 초기화될 수 있다. 포인터(504)는 n-비트 플립플롭을 사용하여 구현될 수 있다. 포인터(504)는 또한 ECC 세그먼트들에서 증분한다. 포인터(504)는 ECC 세그먼트가 정정될 것으로 또는 정정 불가능한 것으로 알려지는 경우 증분된다.
포인터들(502, 504)은 포인터(502)의 값이 포인터(504)의 값보다 더 큰지의 여부 - 언더런을 표시함 - 를 결정하기 위해 비교기(506)에 의해 비교될 수 있다. 언더런이 검출되는 경우, 언더런 플립-플롭은 "1"로 세팅될 수 있다. 이 예에서, 언더런 플립플롭은 "0"으로 초기화되었다고 가정된다. 언더런 로직에 대한 4개의 결과물들이 있으며, 이들은 아래 표 3에 열거된다.
출력들 동작들
언더런 없음, 데이터 OK 정상으로서 진행
언더런 없음, 데이터 정정 불가능 정상으로서 진행
언더런, 데이터 OK 재시도, 조기-전송 시작 비트 무시
언더런, 데이터 정정불가능 정상으로서 진행, 또는 재시도
언더런 프로세스에 대한 예시적인 결과들 및 동작들
언더런이 존재하지 않고 데이터가 양호한 경우, 판독 동작이 정상으로서 진행될 것이다. 언더런이 존재하지 않고 정정 불가능한 배드 데이터가 존재하는 경우, 판독 동작은 정상으로서 진행될 수 있다(예를 들어, 배드 블록 교체를 수행한다). 언더런이 존재하고 데이터가 양호한 경우, 판독 동작은 호스트 제어기로의 ECC 세그먼트들의 조기 전송을 수행하지 않고 재시도될 수 있다. 언더런이 존재하고 데이터가 정정 불가능한 경우, 판독 동작은 정상으로서 진행될 수 있거나 또는 재시도될 수 있다.
대안적인 낮은 레이턴시 판독 동작
도 6은 관리된 비휘발성 메모리의 낮은 레이턴시 판독의 또다른 예시적인 방법을 예시한다. 도 6은 도 5의 형태와 유사하며, 도 5와 동일하게 해석되어야 한다. 이러한 예시적인 방법에서, 판독 커맨드는 외부의 낮은 레이턴시 버스를 통해 NVM 제어기에 송신된다. 판독 커맨드는 내부 버스를 통해 NVM 제어기로 전송된다. NVM 제어기는 요청된 데이터를 버퍼로 전송하고, 버퍼에서 데이터에 대해 ECC 동작들을 수행한다. 이러한 예에서, 판독 상태 커맨드는 NVM 제어기로 송신된다. NVM 제어기는 호스트 제어기로의 전송을 위해 사용가능한 ECC 세그먼트들의 수를 표시하는 상태를 리턴시킨다. 호스트 제어기는 사용가능한 ECC 세그먼트들의 전송을 개시한다. 전송의 완료 후, 최종 판독 상태는 호스트 프로세서에 의해 요청된다. 따라서, 전송 전에 전체 데이터가 프로세싱되기를 기다리는 것보다는, 도 6에 도시된 방법은 세그먼트들이 준비되자마자 ECC 세그먼트들의 전송을 허용한다. 데이터는 ECC 엔진에 의해 프로세싱될 때까지 전송되는 것이 허용되지 않으므로, 언더런은 이러한 방법을 사용하여 발생할 수 없다.
호스트 프로세서에 의해 수행되는 예시적인 프로세스들
도 7은 호스트 제어기(예를 들어, 호스트 제어기(102))에 의해 수행되는 낮은 레이턴시 판독 동작들(700, 722)의 흐름도이다. 프로세스(700)는 또한 방법 A(호스트)로서 참조되며, 프로세스(722)는 방법 B(호스트)로서 참조된다.
일부 구현예들에서, 프로세스(700)는 호스트 제어기가 NVM 제어기에 판독 커맨드를 송신할 때 시작한다(702). 판독 커맨드에 후속하여, 호스트 제어기는 NVM 제어기에 판독 상태 요청 커맨드를 송신한다(704). 호스트 제어기는 NVM 제어기로부터 상태 보고를 수신한다(706). 상태 보고는 ECC 세그먼트가 전송될 준비가 되었는지의 여부를 표시한다(708). ECC 세그먼트가 전송될 준비가 되지 않은 경우, 프로세스(700)는 단계(704)로 리턴한다. 그렇지 않은 경우, 데이터는 NVM 패키지로부터 판독되고(710) 호스트 제어기로 송신된다.
마지막 세그먼트가 판독되었는지의 여부에 관한 결정이 이루어진다(712). 마지막 세그먼트가 판독되지 않은 경우, 프로세스는 단계(704)로 리턴한다. 그렇지 않은 경우, 호스트 제어기는 정정 불가능한 ECC 세그먼트가 존재하는지의 여부를 결정하기 위해 최종 판독 상태 요청을 요청한다(714). 호스트 제어기는 동작 상태(716)를 수신한다. 상태 보고가 정정 불가능한 ECC 세그먼트를 표시하는 경우(718), 정정 불가능한 ECC 정책이 구현된다(720). 그렇지 않은 경우, 프로세스(700)는 종료된다.
프로세스(700)가 전송을 위해 준비된 데이터의 ECC 세그먼트들을 보고하고, 호스트 제어기는 정정된 또는 정정 불가능하다고 알려진 데이터만을 전송한다는 점에 주목한다.
일부 구현예들에서, 프로세스(722)는 호스트 제어기가 NVM 제어기로 판독 커맨드를 송신할 때 시작한다(724). 판독 커맨드에 후속하여, 호스트 제어기는 NVM 제어기에 판독 상태 요청 커맨드를 송신한다(726). 호스트 제어기는 NVM 제어기로부터 상태 보고를 수신한다(728). 상태 보고는 ECC 세그먼트가 조기 전송을 위한 준비가 되었는지의 여부를 표시한다(730). ECC 세그먼트가 조기 전송을 위한 준비가 되지 않은 경우, 프로세스(722)는 단계(726)로 리턴한다. 그렇지 않은 경우, ECC 세그먼트는 디바이스(732)로부터 판독되어 호스트 제어기에 전송된다. 호스트 제어기는 정정불가능한 ECC 세그먼트 또는 언더런이 존재하는지의 여부를 결정하기 위해 판독 상태를 요청한다(734).
호스트 제어기는 NVM 제어기로부터 상태를 수신한다(736). 언더런이 발생했는지의 여부 또는 정정 불가능한 ECC에 대한 결정이 이루어진다(738). 언더런이 발생했다면, 호스트 제어기는 호스트 제어기로의 데이터의 조기 전송 없이 정상 판독 동작(정상 레이턴시에서의 동작)을 수행한다(740). 정정 불가능한 ECC가 존재하는 경우(742), 정정 불가능한 ECC 정책이 수행된다(744). 그렇지 않은 경우, 프로세스(722)는 종료된다.
프로세스(722)에서, NVM 제어기는 자신이 데이터를 전송하기 시작할 수 있는 반면 여전히 데이터가 정정되었는지 또는 정정 불가능한지의 여부를 규정할 수 없지만, NVM 제어기가 자신이 호스트 제어기의 앞에 있을 수 있다고 여길만큼 충분히 늦어지고 있음(late)을 호스트 제어기에 보고한다. 또한, 프로세스(722)는 호스트 제어기가 데이터의 NVM 제어기 ECC 프로세싱 이전에 실행되었는지의 여부를 결정하기 위한 방법을 포함하며, 이는 "언더런"이라 칭한다.
NVM 제어기에 의해 수행되는 예시적인 프로세스들
도 8은 NVM 제어기에 의해 수행되는 낮은 레이턴시 판독 동작들(800, 816)의 흐름도이다. 프로세스(800)는 또한 방법 A(디바이스)로서 참조되고, 프로세스(816)는 방법 B(디바이스)로서 참조된다.
일부 구현예들에서, 프로세스(800)는 NVM 제어기기 판독 커맨드를 수신할 때 시작한다(802). 판독 커맨드에 응답하여, NVM 제어기는 ECC 세그먼트(또한, "청크"라고 지칭됨)를 내부 버퍼로 판독한다(804). 버퍼의 내용물은 ECC 세그먼트를 정정하기 위해 ECC 엔진에 의해 프로세싱된다(806). 일부 구현예들에서, 현재 ECC 세그먼트가 ECC 엔진에 의해 프로세싱되는 동안 다음 ECC 세그먼트가 판독될 수 있다.
다음으로, NVM 제어기는 판독 상태 요청을 수신하고 전송을 위해 사용가능한 데이터를 보고함으로써 요청에 응답한다(808). 보고는 다음 청크에 대한 정정 불가능한 ECC 상태 또는 전송을 위해 준비된 다수의 바이트들을 포함할 수 있다. 전송이 완료되었는지의 여부에 대한 결정이 이루어진다(810). 전송이 완료되고, 호스트 제어기에 의해 최종 상태 요청에 응답하는 경우, NVM 제어기는 정정가능한/정정 불가능한 상태의 보고를 호스트 제어기에 제공한다(814). 그렇지 않은 경우, 데이터는 호스트 제어기에 전송되고(812) 프로세스(800)는 단계(808)로 리턴한다. 일부 구현예들에서, 데이터는 단계(806)에서 기술된 호스트 요청에 대한 판독 루프와 동시에 전송된다. 설계에 의한 프로세스(800)에 대한 언더런은 존재하지 않는다.
일부 구현예들에서, 프로세스(816)는 NVM 제어기가 판독 커맨드를 수신하였을 때 시작한다(818). 판독 커맨드에 응답하여, NVM 제어기는 ECC 세그먼트/청크를 내부 버퍼로 판독한다(820). 버퍼의 내용물은 ECC 세그먼트를 정정하기 위해 ECC 엔진에 의해 프로세싱된다(822). 일부 구현예들에서, 현재 ECC 세그먼트가 ECC 엔진에 의해 프로세싱되는 동안 다음 ECC 세그먼트가 판독될 수 있다.
다음으로, 조기 전송을 위한 충분한 데이터가 존재하는지의 여부에 대한 결정이 이루어진다(824). 호스트 제어기로부터의 판독 상태 요청 커맨드에 응답하여, 데이터의 조기 전송이 시작할 수 있다는 보고가 NVM 제어기에 의해 제공된다(826). 데이터는 호스트 제어기로 전송된다(828). 일부 구현예들에서, 데이터는 단계(822)에서 기술되는 호스트 요청에 대한 판독 루프와 동시에 전송될 수 있다. 호스트 제어기로부터의 최종 판독 상태 요청 커맨드에 응답하여, NVM 제어기는 언더런 상태 및 정정가능한/정정 불가능한 상태를 호스트 제어기에 보고한다(830).
본 명세서가 많은 특정사항(specific)들을 포함하지만, 이들이 청구항들 또는 청구될 수 있는 범위에 대한 제한들로서 해석되어야 하는 것이 아니라, 특정 실시예들에 대해 특정한 특징들의 설명들로서 해석되어야 한다. 또한, 별도의 실시예들에 관련하여 본 명세서에 기술되는 특정 특징들은 단일 실시예와 결합하여 구현될 수 있다. 반면, 단일 실시예에 관련하여 기술되는 다양한 특징들은 별도로 또는 임의의 적절한 부분(sub) 결합으로 다수의 실시예들로서 구현될 수 있다. 또한, 특징들은 특정 조합들로 동작하는 것으로서 전술되고, 그에 따라 초기에 청구되지만, 청구된 결합으로부터 하나 이상의 특징들이 일부 경우들에서 결합으로부터 구현될 수 있고, 청구된 조합은 부분 결합 또는 부분 결합의 변경에 관한 것일 수 있다.
마찬가지로, 도면들에서는 동작들이 특정 순서로 도시되지만, 이는 원하는 결과들을 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행되는 것 또는 모든 예시된 동작들이 수행되는 것을 요구하는 것으로서 이해되지 않아야 한다. 특정 환경들에서, 멀티태스킹 및 병렬 프로세싱이 바람직할 수 있다. 또한, 전술된 실시예들에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 이러한 분리를 요구하는 것으로서 이해되지 않아야 하고, 기술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합될 수 있거나 또는 다수의 소프트웨어 제품들로 패키지화될 수 있다는 점이 이해되어야 한다.
따라서, 특정 실시예들이 기술되었다. 다른 실시예들은 후속하는 청구항들의 범위 내에 존재한다.

Claims (20)

  1. 비휘발성 메모리(NVM) 디바이스로서,
    상기 NVM 디바이스에 커플링된 호스트 제어기로부터 판독 상태 요청 및 판독 커맨드를 수신하도록 동작가능한 인터페이스;
    각각이 다수의 블록들을 포함하는 다수의 동시에 어드레스지정가능한 유닛들(Concurrently Addressable Unit); 및
    상기 인터페이스 및 상기 다수의 동시에 어드레스지정가능한 유닛들에 커플링된 제어기
    를 포함하고, 상기 제어기는,
    상기 판독 커맨드에 의해 특정된 상기 다수의 동시에 어드레스지정가능한 유닛들의 하나 이상의 블록들로부터 데이터를 판독하고,
    판독될 상기 데이터의 일부분을 에러 정정하고,
    상기 호스트 제어기로 전송하기 위해 상기 데이터의 에러 정정된 부분을 사용가능하게 하고,
    상기 데이터가 정정가능한지 또는 정정 불가능한지의 여부 또는 언더런 상태 중 하나 이상을 표시하는 정보를 가지고 상기 판독 상태 요청에 응답하도록 동작가능한 비휘발성 메모리 디바이스.
  2. 제1항에 있어서,
    상기 정보는 에러 정정 코드 지연을 표시하는 하나 이상의 비트들을 포함하는 비휘발성 메모리 디바이스.
  3. 제1항에 있어서,
    상기 정보는 상기 NVM 디바이스의 메모리 어레이로부터 데이터가 적절하게 판독되었음을 표시하는 하나 이상의 비트를 포함하는 비휘발성 메모리 디바이스.
  4. 제1항에 있어서,
    상기 정보는 데이터가 상기 NVM 디바이스로부터 상기 호스트 제어기로 전송될 준비가 되었음을 표시하는 하나 이상의 비트들을 포함하는 비휘발성 메모리 디바이스.
  5. 비휘발성 메모리(NVM) 디바이스와 커플링하도록 구성되는 호스트 제어기로서,
    상기 NVM 디바이스에 커플링하도록 구성되는 인터페이스; 및
    상기 인터페이스에 커플링되며, 상기 NVM 디바이스에 판독 커맨드 및 판독 상태 요청을 송신하고, 상기 NVM 디바이스로부터 데이터 및 정보를 수신하도록 구성되는 제어기
    를 포함하고, 상기 정보는 상기 데이터가 정정가능한지 또는 정정불가능한지의 여부 또는 언더런 상태 중 하나 이상을 표시하는 호스트 제어기.
  6. 비휘발성 메모리(NVM) 디바이스에 의해 수행되는 방법으로서,
    상기 NVM 디바이스에 커플링된 호스트 제어기로부터 판독 커맨드 및 판독 상태 요청을 수신하는 단계;
    상기 판독 커맨드에 의해 식별된 상기 NVM 디바이스 내의 다수의 동시에 어드레스지정가능한 유닛들로부터 데이터를 판독하는 단계;
    판독될 상기 데이터의 일부분을 에러 정정하는 단계;
    상기 호스트 제어기로 전송하기 위해 상기 데이터의 에러 정정된 부분을 사용가능하게 하는 단계; 및
    상기 데이터가 정정가능한지 또는 정정 불가능한지의 여부 또는 언더런 상태 중 하나 이상을 표시하는 정보를 가지고 상기 상태 요청에 응답하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 정보는 에러 정정 코드 지연을 표시하는 하나 이상의 비트들을 포함하는 방법.
  8. 제6항에 있어서,
    상기 정보는 상기 NVM 디바이스의 메모리 어레이로부터 데이터가 적절하게 판독되었음을 표시하는 하나 이상의 비트를 포함하는 방법.
  9. 제6항에 있어서,
    상기 정보는 데이터가 상기 NVM 디바이스로부터 상기 호스트 제어기로 전송될 준비가 되었음을 표시하는 하나 이상의 비트들을 포함하는 방법.
  10. 비휘발성 메모리(NVM) 디바이스와 커플링하도록 구성되는 호스트 제어기에 의해 수행되는 방법으로서,
    상기 NVM 디바이스에 판독 커맨드 및 판독 상태 요청을 송신하는 단계; 및
    상기 판독 상태 요청에 응답하여, 상기 NVM 디바이스로부터 데이터 및 정보를 수신하는 단계
    를 포함하고, 상기 정보는 상기 데이터가 정정 가능한지 또는 정정 불가능한지의 여부 또는 언더런 상태 중 하나 이상을 표시하는 방법.
  11. 제10항에 있어서,
    상기 호스트 제어기는 상기 정보에 응답하여 상기 NVM 디바이스에 또다른 판독 커맨드를 송신하는 방법.
  12. 제10항에 있어서,
    상기 정보는 에러 정정 코드 지연을 표시하는 하나 이상의 비트들을 포함하는 방법.
  13. 제10항에 있어서,
    상기 정보는 상기 NVM 디바이스로부터 데이터가 적절하게 판독되었음을 표시하는 하나 이상의 비트들을 포함하는 방법.
  14. 제10항에 있어서,
    상기 정보는 데이터가 상기 NVM 디바이스로부터 상기 호스트 제어기로 전송될 준비가 되었음을 표시하는 하나 이상의 비트들을 포함하는 방법.
  15. 제10항에 있어서,
    상기 정보는 데이터가 상기 호스트 제어기에 전송되기 전 또는 후에 상기 NVM 디바이스에 송신될 수 있는 방법.
  16. 제10항에 있어서,
    상기 정보는 상기 호스트 제어기에 전송하기 위해 사용가능한 에러 정정 코드 세그먼트들의 수를 표시하는 방법.
  17. 메모리 시스템으로서,
    호스트 제어기;
    비휘발성 메모리(NVM) 디바이스;
    상기 호스트 제어기 및 상기 NVM 디바이스를 커플링시키는 인터페이스 - 상기 호스트 제어기는 상기 인터페이스를 통해 상기 호스트 제어기로부터 상기 NVM 디바이스로 판독 커맨드 및 판독 상태 요청을 송신하도록 구성됨 - ;
    상기 NVM 디바이스 내에 포함된 다수의 동시에 어드레스지정가능한 유닛들 - 상기 유닛들은 다수의 블록들을 포함함 - ; 및
    상기 다수의 동시에 어드레스지정가능한 유닛들에 커플링된 상기 NVM 디바이스의 제어기
    를 포함하고, 상기 제어기는,
    상기 판독 커맨드에 의해 특정된 상기 다수의 동시에 어드레스지정가능한 유닛들의 상기 다수의 블록들로부터 데이터를 판독하고,
    판독될 상기 데이터의 일부분을 에러 정정하고,
    상기 데이터의 에러 정정된 부분을 상기 인터페이스를 통해 상기 NVM 디바이스로부터 상기 호스트 제어기로 전송하기 위해 상기 데이터의 에러 정정된 부분을 사용가능하게 하고,
    상기 NVM 디바이스로부터 상기 호스트 제어기로, 상기 데이터가 정정가능한지 또는 정정 불가능한지의 여부 또는 언더런 상태 중 하나 이상을 표시하는 정보를 송신하도록 동작가능한 메모리 시스템.
  18. 제17항에 있어서,
    상기 정보는 데이터가 상기 NVM 디바이스로부터 상기 호스트 제어기로 전송될 준비가 되었음을 표시하는 하나 이상의 비트들을 포함하는 메모리 시스템.
  19. 제17항에 있어서,
    상기 정보는 데이터가 상기 호스트 제어기에 전송되기 전 또는 후에 상기 NVM 디바이스에 송신될 수 있는 메모리 시스템.
  20. 제17항에 있어서,
    상기 정보는 상기 호스트 제어기에 전송하기 위해 사용가능한 에러 정정 코드 세그먼트들의 수를 표시하는 메모리 시스템.
KR1020117029103A 2009-05-06 2010-04-27 관리된 비휘발성 메모리에 대한 낮은 레이턴시 판독 동작 KR101382060B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17605509P 2009-05-06 2009-05-06
US61/176,055 2009-05-06
US12/538,053 2009-08-07
US12/538,053 US8438453B2 (en) 2009-05-06 2009-08-07 Low latency read operation for managed non-volatile memory
PCT/US2010/032627 WO2010129305A1 (en) 2009-05-06 2010-04-27 Low latency read operation for managed non-volatile memory

Publications (2)

Publication Number Publication Date
KR20120005548A true KR20120005548A (ko) 2012-01-16
KR101382060B1 KR101382060B1 (ko) 2014-04-04

Family

ID=42308338

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117029103A KR101382060B1 (ko) 2009-05-06 2010-04-27 관리된 비휘발성 메모리에 대한 낮은 레이턴시 판독 동작

Country Status (6)

Country Link
US (1) US8438453B2 (ko)
EP (1) EP2427824B1 (ko)
JP (1) JP5591917B2 (ko)
KR (1) KR101382060B1 (ko)
CN (1) CN102414666B (ko)
WO (1) WO2010129305A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417145B2 (en) 2016-12-30 2019-09-17 SK Hynix Inc. Memory system including a plurality of memory devices having different latencies and operation method thereof

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370603B2 (en) 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
US8489907B2 (en) 2009-09-16 2013-07-16 Apple Inc. Method of selective power cycling of components in a memory device independently by reducing power to a memory array or memory controller
JP5651457B2 (ja) * 2010-12-15 2015-01-14 株式会社東芝 半導体記憶装置
JP2012252558A (ja) * 2011-06-03 2012-12-20 Sony Corp 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム
US8738882B2 (en) 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US8656251B2 (en) * 2011-09-02 2014-02-18 Apple Inc. Simultaneous data transfer and error control to reduce latency and improve throughput to a host
WO2013089715A1 (en) * 2011-12-14 2013-06-20 Intel Corporation Storage of codeword portions
KR20140093855A (ko) 2013-01-18 2014-07-29 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 제어 방법
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
MY180992A (en) * 2013-03-13 2020-12-15 Intel Corp Memory latency management
US9690953B2 (en) * 2013-03-14 2017-06-27 Apple Inc. Generating efficient reads for a system having non-volatile memory
CN105190766A (zh) 2013-03-25 2015-12-23 惠普发展公司,有限责任合伙企业 具有错误纠正逻辑的存储器设备
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
US9262263B2 (en) 2013-11-25 2016-02-16 Qualcomm Incorporated Bit recovery system
KR20150061393A (ko) 2013-11-27 2015-06-04 삼성전자주식회사 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.
US9378081B2 (en) 2014-01-02 2016-06-28 Qualcomm Incorporated Bit remapping system
US9454422B2 (en) 2014-01-30 2016-09-27 International Business Machines Corporation Error feedback and logging with memory on-chip error checking and correcting (ECC)
US9323610B2 (en) 2014-01-30 2016-04-26 Sandisk Technologies Inc. Non-blocking commands
KR102069274B1 (ko) 2014-02-05 2020-01-22 삼성전자주식회사 메모리 제어 방법
US9653184B2 (en) 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
US20160232088A1 (en) * 2014-07-17 2016-08-11 Sandisk Enterprise Ip Llc Garbage Collection in Storage System with Distributed Processors
US9367392B2 (en) 2014-08-01 2016-06-14 Winbond Electronics Corporation NAND flash memory having internal ECC processing and method of operation thereof
KR102317787B1 (ko) 2015-02-11 2021-10-26 삼성전자주식회사 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스
US9880748B2 (en) 2015-02-13 2018-01-30 Qualcomm Incorporated Bifurcated memory management for memory elements
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
FR3039922B1 (fr) * 2015-08-06 2018-02-02 Stmicroelectronics (Rousset) Sas Procede d'ecriture dans une memoire du type eeprom et dispositif de memoire correspondant
KR102473209B1 (ko) 2015-12-14 2022-12-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
CN107783727B (zh) * 2016-08-31 2022-01-14 华为技术有限公司 一种内存设备的访问方法、装置和系统
CN109478168B (zh) * 2017-06-23 2020-12-04 华为技术有限公司 内存访问技术及计算机系统
US10607712B1 (en) 2018-09-28 2020-03-31 Toshiba Memory Corporation Media error reporting improvements for storage drives
US11307929B2 (en) * 2019-06-17 2022-04-19 Micron Technology, Inc. Memory device with status feedback for error correction
US11194643B1 (en) * 2020-06-03 2021-12-07 Micron Technology, Inc. Access operation status signaling for memory systems

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63285800A (ja) * 1987-05-19 1988-11-22 Fujitsu Ltd 半導体メモリ装置
US5341489A (en) 1992-04-14 1994-08-23 Eastman Kodak Company Memory card with programmable interleaving
US5434872A (en) * 1992-07-28 1995-07-18 3Com Corporation Apparatus for automatic initiation of data transmission
US5524218A (en) * 1993-12-23 1996-06-04 Unisys Corporation Dedicated point to point fiber optic interface
EP0669720B1 (en) 1994-02-18 2000-01-26 STMicroelectronics S.r.l. Programmable logic array structure for semiconductor nonvolatile memories, particularly flash-EPROMs
US5606710A (en) 1994-12-20 1997-02-25 National Semiconductor Corporation Multiple chip package processor having feed through paths on one die
US5615162A (en) 1995-01-04 1997-03-25 Texas Instruments Incorporated Selective power to memory
KR0157342B1 (ko) 1995-06-09 1998-12-01 김광호 불휘발성 반도체 메모리의 전압 센싱 방법
US5812335A (en) * 1995-09-01 1998-09-22 Adaptec, Inc. Programmable data transfer without sector pulses in a headerless disk drive architecture
US5751631A (en) 1996-10-21 1998-05-12 Liu; David K. Y. Flash memory cell and a new method for sensing the content of the new memory cell
US6092158A (en) 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6279114B1 (en) * 1998-11-04 2001-08-21 Sandisk Corporation Voltage negotiation in a single host multiple cards system
US6134149A (en) 1999-03-01 2000-10-17 Integrated Memory Technologies, Inc. Method and apparatus for reducing high current during chip erase in flash memories
US6148354A (en) * 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
JP4105819B2 (ja) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US7827348B2 (en) 2000-01-06 2010-11-02 Super Talent Electronics, Inc. High performance flash memory devices (FMD)
CN100442393C (zh) 1999-10-21 2008-12-10 松下电器产业株式会社 半导体存储卡的访问装置、初始化方法和半导体存储卡
US6684301B1 (en) 2001-05-31 2004-01-27 Lsi Logic Corporation Out of order execution memory access request FIFO
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US7346825B2 (en) * 2001-09-06 2008-03-18 Intel Corporation Error method, system and medium
US7181611B2 (en) 2002-10-28 2007-02-20 Sandisk Corporation Power management block for use in a non-volatile memory system
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US7069399B2 (en) 2003-01-15 2006-06-27 Via Technologies Inc. Method and related apparatus for reordering access requests used to access main memory of a data processing system
US20040153902A1 (en) * 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
JP4256198B2 (ja) * 2003-04-22 2009-04-22 株式会社東芝 データ記憶システム
US20060164907A1 (en) 2003-07-22 2006-07-27 Micron Technology, Inc. Multiple flash memory device management
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP4085983B2 (ja) 2004-01-27 2008-05-14 セイコーエプソン株式会社 情報処理装置およびメモリアクセス方法
JP4595342B2 (ja) * 2004-02-19 2010-12-08 日本電気株式会社 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム
US7490283B2 (en) * 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
EP1635261B1 (en) * 2004-09-10 2008-06-11 STMicroelectronics S.r.l. Memory with embedded error correction code circuit
KR100876084B1 (ko) 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US7424648B2 (en) * 2005-03-10 2008-09-09 Matsushita Electric Industrial Co., Ltd. Nonvolatile memory system, nonvolatile memory device, data read method, and data read program
US7444579B2 (en) * 2005-04-28 2008-10-28 Micron Technology, Inc. Non-systematic coded error correction
US7426672B2 (en) * 2005-04-28 2008-09-16 International Business Machines Corporation Method for implementing processor bus speculative data completion
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US20070050668A1 (en) * 2005-09-01 2007-03-01 Micron Technology, Inc. Test mode to force generation of all possible correction codes in an ECC memory
JP4999325B2 (ja) 2005-12-21 2012-08-15 ルネサスエレクトロニクス株式会社 フラッシュメモリ
US7423915B2 (en) 2006-01-17 2008-09-09 Spansion Llc Random cache read using a double memory
US7793059B2 (en) 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US7372715B2 (en) 2006-06-14 2008-05-13 Micron Technology, Inc. Architecture and method for NAND flash memory
US7609703B2 (en) 2006-09-15 2009-10-27 Hewlett-Packard Development Company, L.P. Group communication system and method
JP2008134736A (ja) 2006-11-27 2008-06-12 Fujifilm Corp 電子機器
KR101354152B1 (ko) 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치
JP5020625B2 (ja) 2006-12-22 2012-09-05 キヤノン株式会社 インタフェース回路
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
KR101466694B1 (ko) * 2007-08-28 2014-11-28 삼성전자주식회사 Ecc 회로, ecc 회로를 구비하는 메모리 시스템 및그의 오류 정정 방법
KR101433859B1 (ko) 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US7991943B2 (en) 2007-10-26 2011-08-02 Standard Microsystems Corporation Implementation of one time programmable memory with embedded flash memory in a system-on-chip
TWI384488B (zh) 2007-12-24 2013-02-01 Skymedi Corp Nonvolatile storage device and its data writing method
US8417893B2 (en) 2008-02-04 2013-04-09 Apple Inc. Memory mapping techniques
US7979658B2 (en) 2008-03-25 2011-07-12 Spansion Llc Secure management of memory regions in a memory
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US20100287329A1 (en) 2009-05-06 2010-11-11 Apple Inc. Partial Page Operations for Non-Volatile Memory Systems
US8321647B2 (en) 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US9092340B2 (en) 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
US8356137B2 (en) 2010-02-26 2013-01-15 Apple Inc. Data storage scheme for non-volatile memories based on data priority

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417145B2 (en) 2016-12-30 2019-09-17 SK Hynix Inc. Memory system including a plurality of memory devices having different latencies and operation method thereof

Also Published As

Publication number Publication date
KR101382060B1 (ko) 2014-04-04
CN102414666B (zh) 2015-03-25
CN102414666A (zh) 2012-04-11
EP2427824B1 (en) 2015-10-21
US20100287446A1 (en) 2010-11-11
US8438453B2 (en) 2013-05-07
JP2012526323A (ja) 2012-10-25
EP2427824A1 (en) 2012-03-14
WO2010129305A1 (en) 2010-11-11
JP5591917B2 (ja) 2014-09-17

Similar Documents

Publication Publication Date Title
KR101382060B1 (ko) 관리된 비휘발성 메모리에 대한 낮은 레이턴시 판독 동작
US8806151B2 (en) Multipage preparation commands for non-volatile memory systems
US8612791B2 (en) Method of selective power cycling of components in a memory device independently by turning off power to a memory array or memory controller
US20100287329A1 (en) Partial Page Operations for Non-Volatile Memory Systems
US8370603B2 (en) Architecture for address mapping of managed non-volatile memory
US8495332B2 (en) Controller for optimizing throughput of read operations
US8838877B2 (en) File system derived metadata for management of non-volatile memory
US10564899B2 (en) Data writing method for rewritable non-volatile memory modules based on use information, memory storage device and memory control circuit unit
US20140181372A1 (en) Data reading method, memory controller, and memory storage device
TWI584291B (zh) 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US8301981B2 (en) Data access method for flash memory and storage system and controller thereof
US20190377514A1 (en) Memory management method, memory control circuit unit and memory storage apparatus
US10884660B2 (en) Memory management method, memory storage device and memory control circuit unit
CN106940623B (zh) 存储器管理方法、存储器控制电路单元及存储器储存装置
TW202338617A (zh) 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Legal Events

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

Payment date: 20170302

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200227

Year of fee payment: 7