KR101176702B1 - 판독 실패 관리 방법 및 시스템 - Google Patents

판독 실패 관리 방법 및 시스템 Download PDF

Info

Publication number
KR101176702B1
KR101176702B1 KR1020090058952A KR20090058952A KR101176702B1 KR 101176702 B1 KR101176702 B1 KR 101176702B1 KR 1020090058952 A KR1020090058952 A KR 1020090058952A KR 20090058952 A KR20090058952 A KR 20090058952A KR 101176702 B1 KR101176702 B1 KR 101176702B1
Authority
KR
South Korea
Prior art keywords
memory
data
error
read
block
Prior art date
Application number
KR1020090058952A
Other languages
English (en)
Other versions
KR20100003244A (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 KR20100003244A publication Critical patent/KR20100003244A/ko
Application granted granted Critical
Publication of KR101176702B1 publication Critical patent/KR101176702B1/ko

Links

Images

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • 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/085Error detection or correction by redundancy in data representation, e.g. by using checking codes using codes with inherent redundancy, e.g. n-out-of-m codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 명세서에는 예로서 전자 디바이스 내의 NAND 메모리와 같은 메모리 내의 다양한 오류들을 관리하는 기술이 개시되었다. 일부 실시예에서, 삭제, 판독 및 프로그램 오류 등의 조작 오류가 관리된다.

Description

판독 실패 관리 방법 및 시스템{NAND ERROR MANAGEMENT}
전력 컴퓨터 시스템은 데이터를 서로 다른 유형의 저장 매체 및 디바이스에 저장한다. 이러한 저장 매체 및 디바이스는 비휘발성으로 간주될 수 있으며, 컴퓨터 시스템이 턴오프되었을 때 지속적으로 데이터를 저장한다. 비휘발성 저장 디바이스의 예로는 컴퓨터 시스템의 하드 디스크가 있다. 저장 디바이스는 또한 NAND 플래쉬 메모리 및 솔리드 상태 디스크(SSD)를 포함할 수 있다. 저장 매체는 저장 디바이스를 통해 액세스되는 실제 디스크 또는 플래터(platter)를 포함할 수 있다. 프로세서를 실행하는 동작 시스템(OS)은 저장 매체 상의 특정 위치에 대한 판독(read) 및 기록(write)과 같은 동작을 요청 또는 수행할 수 있다.
이러한 특정한 저장 디바이스 내의 위치로의 데이터 기록 또는 특정한 저장 디바이스로부터의 데이터 판독은 블록 내에서 구성될 수 있다. 디지털 정보(즉, 1 또는 0)를 나타내는 비트는 데이터로서 그룹화될 수 있다. 저장 디바이스에서, 비트는 셀 내에 저장될 수 있다. 셀은 페이지들로 조직화될 수 있다. 따라서, 페이지는 데이터를 나타낸다. 페이지의 크기는 NAND 플래쉬 메모리에 있어서 전형적으로 약 2,048 바이트이지만, 이는 하드 디스크 드라이브(HDD)에 대해서는 일반적이지 않다. 일부 예에서, 페이지는 다른 크기일 수 있다.
NAND-플래쉬와 같은 일부 비휘발성 메모리에서, 페이지는 삭제 블록(erase block)으로 배치될 수 있다. 삭제 블록은 전형적으로 약 64 페이지를 포함하지만, 일부 경우에 삭제 블록은 다른 개수의 페이지를 포함할 수도 있다. 이러한 메모리에서, 전형적으로 주어진 삭제 블록 내의 모든 페이지들이 개별적이 아니라 다함께 삭제될 것이 요구된다.
또한, NAND 플래쉬 메모리와 같은 비휘발성 메모리에서, 전형적으로 페이지들이 기록되기 전에 삭제될 것이 요구된다. 또한 삭제된 페이지들은 때때로 "블랭크(blank)" 또는 "블랭크 페이지"로 지칭된다. 따라서, 오직 블랭크 페이지만이 기록될 수 있다. 동일한 페이지를 두 번 기록하기 위해서는, 페이지가 제 1 기록 후 제 2 기록 전에 삭제된다. 이러한 규칙의 예외는 기록된 페이지 내의 비트들이 중간 삭제 없이 "1"로부터 "0"으로 토글링(toggle)될 수 있다는 것이다.
기록과 같은 동작이 저장 디바이스 또는 저장 매체의 페이지 상에서 수행될 때, 이러한 페이지를 포함하는 전체 삭제 블록은 처음에 임시 위치로 판독되고, 삭제 블록이 삭제되며, 요청된 페이지 기록을 제외한 모든 페이지 기록을 위한 임시 버퍼로부터의 데이터와 요청된 페이지 기록을 위한 새로운 데이터를 포함하는 모든 데이터가 삭제 블록 내의 블랭크 페이지로 재기록된다. 따라서, 페이지 기록을 전형적으로 해당 페이지를 포함하는 전체 삭제 블록에 대한 판독, 삭제 및 기록 동작을 요구하며, 이것은 비교적 상당히 느리다. 임시 위치는 컴퓨터 시스템의 휘발성 메모리 내에 있을 수 있다.
NAND 플래쉬 메모리와 같은 메모리의 삭제 블록들에 대해 수행된 삭제 사이클의 개수는 제한될 수 있다. 전형적으로, 이러한 삭제 동작들은 각 삭제 블록에 대해 100,000 사이클 이하로 수행되는 것이 추천된다.
따라서, 복수의 삭제 사이클로부터의 삭제 블록들에서 나타나는 열화 문제에 추가하여, 전체 삭제 블록들에 대한 동작을 수행할 때 성능 문제 또한 존재한다. 삭제 블록 및 임시 위치로/로부터 페이지를 이동시키는 것은 컴퓨터 시스템 내의 상당한 입력/출력(I/O) 트래픽을 포함하며 상당한 프로세서(즉, 컨트롤러) 리소스를 사용한다.
상세한 설명은 첨부된 도면을 참조로 하여 기술되었다.
본 명세서에는 일부 실시예에서 예로서 컴퓨터 시스템과 같은 전자 디바이스 내에 구현될 수 있는 NAND 오류 관리를 구현하는 예시적인 시스템 및 방법이 기술되었다. 아래의 설명에서, 다수의 특정 세부사항들이 다양한 실시예들에 대한 철저한 이해를 제공하도록 설정된다. 그러나, 당업자는 다양한 실시예들이 특정 세부사항 없이도 실시될 수 있음을 이해할 것이다. 다른 예시에서, 잘 알려진 방법, 절차, 구성요소 및 회로들은 특정 실시예를 불필요하게 흐리지 않도록 세부적으로 도시되거나 기술되지 않았다.
도 1은 디스크 캐시 및/또는 솔리드 상태 디스크(SSD:solid state disk)를 제공하는 컴퓨터 시스템(100)을 도시한다. 컴퓨터 시스템(100)은 개인 컴퓨터(PC), 랩탑 컴퓨터 및 서버 컴퓨터와 같은 다양한 디바이스 및 시스템들 중 하나를 포함한다. 컴퓨터 시스템(100)은 특히 디스크 캐시를 구현하는 저장 디바이스 또는 하드 디스크 드라이브에 빠른 또는 효율적인 캐싱(caching)(즉, 저장 매체에 대한 보다 효율적인 동작)을 수행하도록 구성될 수 있다. 이와 달리, 컴퓨터 시스템(100)은 본 명세서에서 기술되는 바와 같이 구현된 솔리드 상태 드라이브(SSD)를 포함하도록 구성될 수도 있다. 도시된 특정한 컴퓨터 시스템(100)은 디스크 캐시와 SSD 모두를 나타낸다. 컴퓨터 시스템(100)의 특정한 구현이 오직 디스크 캐시 또는 SSD 둘 중 하나만을 구비할 수 있거나, 어떠한 경우에는 (본 명세서에 도시된 바와 같 이) 디스크 캐시 및 SSD 모두가 구현된다. 저장 디바이스의 예로는 NAND 플래쉬 메모리, NOR 플래쉬 메모리, 폴리머 메모리, 또는 메모리 페이지를 포함하는 삭제 블록(erase block) 내에 조직된 임의의 다른 비휘발성 메모리를 포함한다.
컴퓨터 시스템(100)은 중앙 처리 장치(CPU) 또는 컨트롤러(102)를 포함한다. 일부 실시예에서, 컨트롤러(102)는 복수의 컨트롤러를 포함하는 두 개 또는 다수의 프로세서일 수 있다. 컨트롤러(102)는 컴퓨터 시스템(100) 내에 다양한 프로세스에 사용될 수 있으며, 특히 메모리 및 디스크 컨트롤러를 포함할 수 있다.
메모리(104)는 컴퓨터 시스템(100) 내에 포함된다. 메모리(104)는 컨트롤러(102)에 의해 제어된다. 메모리(104)는 랜덤 액세스 메모리(RAM)와 같은 하나 이상의 메모리를 포함할 수 있다. 메모리(104)는 휘발성 및 비휘발성 메모리를 포함할 수 있으며, 컴퓨터 시스템(100)이 턴오프되었을 때 휘발성 메모리에서는 데이터가 손실되며 비휘발성 메모리에서는 데이터가 손실되지 않는다. 이러한 예시에서, 메모리(104)는 특히 휘발성 메모리(106)를 포함한다. 휘발성 메모리(106)는 동적 랜덤 액세스 메모리(DRAM)일 수 있다.
이와 달리, 휘발성 메모리(106)는 디스크 캐시(108) 또는 SSD(110) 내에 위치할 수 있으며, 디스크 캐시(108) 및/또는 SSD(110)로부터 분리될 수도 있다. 또한, 컨트롤러(도시되지 않음)는 디스크 캐시(108) 또는 SSD(110) 내에 존재할 수 있으며, 또는 하드 디스크 드라이브(HDD)(112) 내에 존재할 수 있다. 레지던트 컨트롤러는 특히 휘발성 및 비휘발성 메모리 액세스를 제어한다. 또한, 디스크 캐시(108)는 도 1에 도시된 바와 같은 필터에 의해 접속되기보다는 분리될 수 있다. 특정한 구현에서, 디스크 캐시(108)는 HDD(112) 내에 존재한다.
이 예시에서, 휘발성 메모리(106)는 페이지 메타데이터(114)를 저장한다. 페이지 메타데이터(114)는 페이지(즉, 특별한 물리적 어드레스에 의해 식별되는 페이지)의 소비 상태 정보를 포함한다. 소비 상태 정보는 사용됨(used), 유효(valid), 블랭크(blank)와 같은 세 가지 상태를 포함한다. 아래에서 더 기술되는 바와 같이, 소비 상태 정보의 사용은 개별적인 페이지에 대한 작용이 수행되는 것을 허용함으로써, 전체 블록을 삭제할 필요성을 없앤다. 이것은 전체 삭제 블록이 아닌 개별적인 페이지에 대한 작용을 수행함으로써 빠른 디스크 캐싱 및 솔리드 상태 디스크 동작을 가능케 한다.
메모리(104)는 컨트롤러(102)에 의해 실행가능한 동작 시스템(116)을 저장할 수 있다. 애플리케이션 프로그램 또는 애플리케이션(118)은 메모리(104) 내에 저장될 수 있다. 애플리케이션(118)은 오퍼레이팅 시스템(116)에 의해 실행된다. 오퍼레이팅 시스템(116)은 특히 휘발성 메모리(106)와, 하드 디스크(112) 및/또는 SSD(110)와 같은 저장 디바이스에 대한 판독 및 기록 동작을 수행하는 데에 사용된다. 이러한 동작들은 애플리케이션(118)으로부터의 요청의 결과로 수행될 수 있다.
디스크 캐시(108)는 컴퓨터 시스템(100) 내에 포함된다. SSD(110)과 같은 메모리 디바이스가 HDD(112)를 대신하여 사용되는 구현에서, 디스크 캐시(118)에 의해 수행되는 것과 유사한 로직 또는 프로세스가 SSD(110)에 의해 수행된다. HDD(112)로부터 메모리(104)(즉, 오퍼레이팅 시스템(116) 또는 애플리케이션(118))로 전달된 데이터는 디스크 캐시(108) 및/또는 SSD(110)를 통과한다.
디스크 캐시(108)는 특히 HDD(112) 상에서 수행되는 동작에 사용된다. 예를 들어, 판독 요청은 오퍼레이팅 시스템(116)에 의해 수행된다. 만약 데이터가 디스크 캐시(108)에서 검색되면, 데이터는 디스크 캐시(108)로부터 오퍼레이팅 시스템(116)으로 전달된다. 만약 데이터가 디스크 캐시(108)에서 검색되지 않으면, 데이터는 HDD(112)로부터 판독된다.
만약 기록 동작이 오퍼레이팅 시스템(116)에 의해 수행되면, 데이터는 디스크 캐싱 로직에 따라 디스크 캐시(108) 및/또는 HDD(112)로 전달된다. 오퍼레이팅 시스템(116)이 활성 중이 아닌 시간 동안, 데이터는 디스크 캐시(108)로부터 HDD(112)로 전달될 수 있다.
페이지 메타데이터(114) 내의 정보는 개별적인 페이지의 상태 및 물리적인 어드레스 맵핑 테이블에 대한 로직과 같은 정보를 포함하고, 이는 전체 블록(즉, 삭제 블록)에 대한 복수의 동작들이 아닌 단일 페이지에 대한 동작들을 허용함으로써 더욱 빠른 디스크 캐싱 및 SSD(110) 동작(즉, 보다 효율적인 동작)을 가능케 한다.
도 2a는 디스크 캐시(108) 또는 솔리드 상태 디스크(SSD)(110)와 같은 비휘발성 메모리 내의 데이터 및 페이지 메타데이터의 레이아웃을 도시한다. 특히, 테이블(200)은 디스크 캐시(108) 또는 SSD(110)에 대한 비휘발성 메모리의 동적 어드레싱으로서 기술된 것을 지원한다. 동적 어드레싱은 각각의 논리적 기록 동작으로 하여금 데이터가 비휘발성 메모리의 이전에 삭제된 위치(즉, 서로 다른 물리적 어드레스) 내에 저장되는 것을 보장하도록 논리적 어드레스와 물리적 어드레스 사이의 맵핑을 계속 변화시킨다. 따라서, 동적 어드레싱을 사용하여, 각각의 논리적 기록 동작은 페이지에 대한 단일 동작을 생성한다. 이것은 비휘발성 메모리의 포함하는 삭제 블록으로의 세 개의 액세스를 사용하는 전형적인 어드레싱에 비교된다(하나는 특정된 어드레스를 포함하는 삭제 블록에서 데이터를 판독하고, 하나는 오래된 삭제 블록을 삭제/무효화하며, 다른 하나는 삭제 블록에서 업데이트된 데이터를 기록).
테이블(200)은 디스크 캐시(108) 또는 SSD(110)에 포함된 바와 같은 저장 매체 또는 저장 디바이스 내의 물리적 위치의 물리적 어드레스를 인덱스하는 물리적 어드레스 인덱스(202)를 포함한다. 테이블(200)은 특히 물리적 어드레스를 포함하지 않지만, 물리적 어드레스 인덱스(202)를 통해서 물리적 어드레스에 액세스한다. 인덱스는 물리적 어드레스를 포인팅하며, 물리적 어드레스는 데이터가 저장된 특정 삭제 블록 내의 특정 페이지를 정의한다.
테이블(200)은 실제 데이터를 나타내는 데이터 필드(204)를 포함한다. 테이블(200)은 메타데이터 필드(206)에 의해 표시되는 메타데이터를 더 포함한다. 메타데이터 필드는 디스크 캐시(108)에 의해 사용된 메타데이터를 기술하는 필드 캐시 메타데이터(208)를 포함할 수 있지만, 이러한 필드는 SSD(110) 동작을 요청하지 않을 수 있다. 캐시 메타데이터(208) 내에는 전형적인 종래 기술의 캐시 메타데이터 또는 애플리케이션 특정 메타데이터로 다이렉팅되는 서브-필드가 포함되며, 이는 다음의 예시적인 필드와 같이 표현된다: tag=disk LBA(논리적 블록 어드레스) 필드(212), 유효 비트 필드(214), 더티 비트 필드(216) 등. 이러한 정보 또는 애플리 케이션 특정 메타데이터를 포함하는 것은 당업계에서 잘 알려진 것이다.
논리적 어드레스 필드(218) 및 소비 상태 필드(220)는 저장 매체에 대한 신속한 디스크 캐싱 또는 효율적인 SSD 동작을 허용하도록 제공된다. 논리적 어드레스 필드(218)는 오퍼레이팅 시스템(110), 디스크 캐시(118), 또는 SSD(116) 내의 로직이 데이터를 위해 나갈 수 있는 어드레스를 나타낸다. 특히, 디스크 캐시(118) 또는 SSD(116) 내의 알고리즘은 디스크 캐시(108) 또는 SSD(110)로/로부터의 동작을 수행할 때, 논리적 어드레스(218)용 필드에 의해 정의되는 바와 같은 논리적 어드레스를 지칭한다. 소비 상태 필드(220)는 페이지의 세 가지 소비 상태 중 하나를 나타낸다. 제 1 소비 상태는 "blank"이며, 이것은 데이터가 페이지에 기록될 수 있음을 나타낸다. 제 2 소비 상태는 "valid"이며, 이것은 데이터가 페이지 내에 존재하고 판독될 수 있음을 나타낸다. 제 3 소비 상태는 "used"이며, 데이터가 페이지 내에 존재하지만, 더이상 유효하지 않거나 판독될 수 없음을 나타낸다. "used"로 식별되는 페이지는 삭제될 수 있는 페이지이다. 페이지에 대한 소비 상태 정보를 제공함으로써, 동작(예로서, 기록 또는 삭제)이 삭제 블록에 대한 동작을 수행하지 않고도 해당 페이지들에 수행될 수 있다.
이러한 예시에서, 테이블(200)은 물리적 페이지 1 내지 12를 차지하는 12 데이터 엔트리(222(1) 내지 222(12))를 포함하며, 이것은 물리적 어드레스 인덱스(202)에 의해 인덱싱된다. 특정한 데이터 엔트리(222(1))는 물리적 어드레스 인덱스(1)에 의해 인덱싱되고, 데이터 엔트리(222(2))는 물리적 어드레스 인덱스(2)에 의해 인덱스되며, 데이터 엔트리(222(3))는 물리적 어드레스 인덱스(3))에 의해 인덱싱되는 등과 같다.
자신들의 물리적 어드레스 인덱스에 의해 정의된 페이지는 삭제 블록 내에 그룹화될 수 있다. 예를 들어, 인덱스(1, 2, 3, 4)에 의해 정의된 페이지는 삭제 블록(1)으로 그룹화되고, 인덱스(5, 6, 7, 8)에 의해 정의된 페이지는 삭제 블록(2)으로 그룹화되며, 인덱스 어드레스(9, 10, 11, 12)에 의해 정의된 페이지는 삭제 블록(3)으로 그룹화된다. 페이지와 그들의 그룹의 개수는 예시적인 것이며, 전형적인 삭제 블록들은 4개보다 많은 페이지를 포함할 것으로 기대되며, 디스크 캐시(108) 및 SSD(110)는 3개보다 많은 삭제 블록을 포함할 것이다.
디스크 캐시(108) 또는 SSD(110)는 어드레싱할 수 있는 최대 논리적 페이지의 개수에 관한 한계를 가질 수 있다. 예를 들어, 이 예시에서, 최대값은 6 페이지일 수 있다. 따라서, 엔트리(222) 내의 6 페이지는 "valid" 소비 상태를 가질 수 있다. 이 예시에서, 이러한 엔트리는 엔트리(222(2)), 엔트리(222(3)), 엔트리(222(4)), 엔트리(222(6)), 엔트리(222(8)) 및 엔트리(222(9))이다. 엔트리(222)의 다른 엔트리들은 "used" 또는 "blank"이다.
도 2b는 휘발성 메모리(106)와 같은 휘발성 메모리 내의 페이지 메타데이터 정보를 포함한다. 특히, 물리적 어드레스(L2P) 테이블(224) 및 블랭크 풀 테이블(226)로의 논리적 어드레스가 휘발성 메모리(106) 내에 저장될 수 있다.
L2P 테이블(224)은 논리적 어드레스 인덱스 피드(230) 및 물리적 어드레스 필드(232)를 포함한다. 논리적 어드레스 인덱스 필드(230)는 특히 논리적 어드레스로의 인덱스를 제공하지만, 그러나 L2P 테이블(224)은 논리적 어드레스를 포함하지 않는다. 엔트리(234)는 논리적 어드레스 및 상응하는 물리적 어드레스로의 인덱스를 포함한다.
블랭크 풀 테이블(226)은 물리적 어드레스 인덱스 필드(236) 및 소비 상태 필드(238)를 포함한다. 전형적인 구현에서, 오직 "blank"의 소비 상태를 갖는 물리적 어드레스만이 블랭크 풀 테이블(226) 내에서 식별되어야 하기 때문에, 블랭크 풀(236)은 소비 상태 필드(238)를 포함하지 않는다. 다시 말하면, 블랭크 풀 테이블(226)은 소비 상태가 테이블(220) 내에서 블랭크인 물리적 어드레스의 리스트이다. 엔트리(240)의 각 엔트리는 "blank" 소비 상태를 갖는 물리적 어드레스(즉, 물리적 어드레스로의 인덱스들)를 포함한다. 이용가능하거나 또는 블랭크 페이지를 식별함으로써, 디스크 캐시(108) 또는 SSD(110) 로직은 특정한 블랭크 페이지로 기록할 수 있다. 소정의 구현에서, 테이블(200)이 데이터 필드(204) 없이 휘발성 메모리 내에 포함될 수도 있다. 휘발성 메모리에서, 테이블(200)은 대부분 비어있는 삭제 블록의 비교적 빠르고 보다 효율적인 식별을 허용하며, 요구된 테이블은 재배치에 대한 페이지 메타데이터를 업데이트하기 위한 논리를 검색한다.
테이블(200) 내의 정보가 비휘발성 메모리(즉, 디스크 캐시(108) 및/또는 SSD(110)) 내에 저장되었기 때문에, 휘발성 메모리(106) 내에서 데이터에 오류가 생기거나, 삭제되거나, 또는 이용할 수 없게 되면(즉, 전력 차단 후에 유지되지 않음), 테이블(224, 226) 내의 데이터가 테이블(200)로부터 데이터를 사용하여 생성 또는 재생성될 수 있다. 이것은 예를 들어 논리적-물리적 어드레스 맵핑의 연속적인 변화 및 휘발성 메모리 내의 L2P 테이블(224)의 유지에도 불구하고 디스크-캐싱 및 솔리드 상태 디스크 애플리케이션 모두에 대한 전력-손실 복구를 가능케 한다.
저장은 컴퓨터 시스템 내의 가장 큰 성능 체증 원인 중 하나이다. 일부 실시예에서, 컴퓨터 시스템(100)은 비휘발성 메모리에 대해 기록-백 디스크-캐싱을 구현하여 성능 체증을 뚜렷하게 완화시킬 수 있는 동시에 특히 모바일 플랫폼에서 중요한 전력-절감 이득을 제공한다. 솔리드 상태 디스크는 유사한 이익을 제공한다. 전술된 바를 참조하는 관련 애플리케이션은 높은 기록 지연(latency)과 재기록될 수 있기 이전에 삭제 블록(EB) 내에서 삭제되는 페이지 내에 조직된 데이터를 갖는 NAND 플래쉬와 같은 비휘발성(NV) 메모리 상의 디스크 캐시 및 SSD 애플리케이션에 대한 알고리즘을 구현한다. 이러한 알고리즘은 아래의 특성을 갖는다: a) 인디렉션 테이블(L2P)은 논리적 어드레스를 물리적 페이지 어드레스로 맵핑하도록 사용된다, b) 논리적 어드레스로의 기록은 빈 물리적 페이지로 기록되며, L2P는 이러한 페이지를 포인팅하도록 업데이트된다, c) 이상적인 시간에서, 삭제 블록 내의 유효 페이지는 제 1 블록을 삭제하기 전에 다른 삭제 블록으로 재배치되며, d) 논리적 어드레스로의 각 기록에 있어서, 시퀀스 넘버가 페이지 메타데이터 내에 저장되어 논리적 어드레스에 대한 현재 (가장 최근의) 기록의 식별을 가능케 한다. 이는 적절한 전력-손실 복구를 용이하게 한다.
그러나 이러한 방법은 기초적인 솔리드-상태 비휘발성 메모리가 판독, 기록 및 삭제 동작 중에 어떠한 오류도 갖지 않는다는 것을 가정한다. 실제로, 판독, 기록 및 삭제 동작 중에 오류가 주기적으로 발생하며, 신뢰가능한 동작을 유지하기 위해 가능할 때마다 데이터 보전을 파괴하지 않고 관리되어야 한다. 따라서, 컴퓨터 시스템(100)과 같은 컴퓨터 시스템 내의 판독, 프로그램 오류 및 판독 오류를 관리하기 위한 기술의 실시예가 본 명세서에 기술되었다. 보편성의 손실 없이, 단지 예시를 위해 기초적인 비휘발성 메모리가 NAND의 맥락으로 기술되었으며, 이 기술은 다른 유형의 메모리에도 적용가능하다. 따라서, 본 명세서에는 신뢰가능한 디스크-캐시 및 SSD 동작을 위해 NAND 오류를 다루는 신규한 방법이 기술된다.
예시적인 기술들이 도 3-6을 참조로 하여 기술되었다. 기술된 방법은 하드웨어, 소프트웨어, 펌웨어 또는 그 조합에서 구현될 수 있는 동작들의 시퀀스를 나타내는 논리적 순서도 내의 블록들의 집합으로 도시되었다. 소프트웨어의 맥락에서, 블록들은 하나 이상의 프로세서에 의해 실행되었을 때 기재된 동작들을 수행하는 컴퓨터 명령어들을 나타낸다. 프로세스는 컴퓨터 시스템(100)과 전술된 테이블(200, 224, 226)을 참조로 기술된다. 순서도로서 기술되었지만, 어떠한 프로세스들은 동시에 또는 다른 순서로 발생할 수 있음이 고려된다.
세 가지 주요한 오류 유형은 삭제 오류, 프로그램(기록) 오류 및 판독 실패이며, 이들 각각의 조작이 아래에 기술되었다. 오류를 다루는 알고리즘에서의 공통 주제는 오류가 기초 블록을 "불량(bad)" 블록으로 표시되도록 한다는 것이다. 만약 가능하다면, 블록 내의 임의의 현재(유효) 데이터가 다른 삭제 블록으로 이동된다. 이러한 재배치는 실패 블록으로의 임의의 사전 대기 메모리 액세스 동작의 재맵핑으로 이어진다. 시스템이 데이터를 실패 삭제 블록으로부터 재배치하는 프로세스 중에 예기치 못한 전력 손실이 발생하는 것이 가능하다. 시스템은 모든 현재(유효) 데이터가 재배치될 때까지 NV 불량 블록 리스트를 업데이트하는 것을 연기할 수 있다. 만약 NV(비휘발성) 불량 블록이 업데이트되기 전에 전력이 소실되면, 시스템은 다음 전력 사이클 중에 불량 블록을 재탐색할 것이다.
도 3은 일부 실시예에 따라 판독 액세스 오류를 관리하는 프로세스를 도시한 순서도이다. 동작(310)에서 블록 X라 지칭되는 주어진 메모리 블록 내에서 메모리 판독 액세스 오류가 발생한다. 동작(320)에서, 오류를 갖는 액세스를 포함한 모든 대기 메모리 동작들이 중단되고 실패 상태가 사용자에게 반환된다. 동작(330)에서 블록 X는 불량으로 표시된다. 동작(340)에서 블록 X로부터의 모든 유효 데이터는 정상 블록으로 재배치된다. 동작(350)에서 인디렉션 테이블이 업데이트된다.
도 4는 일부 실시예에 따라 메모리 판독 액세스 오류 뒤의 대기 메모리 액세스를 보존하는 메모리 판독 액세스 오류를 관리하는 프로세스를 도시한 순서도이다. 대기 메모리 액세스는 예를 들어 NAND 메모리 삭제, 프로그램, 또는 판독 동작일 수 있다.
동작(410)에서 블록 X로 지칭되는 주어진 메모리 블록 내에서 메모리 판독 액세스 오류가 발생한다. 동작(420)에서 오류를 갖는 액세스를 포함한 모든 대기 메모리 동작들이 중단되고 실패 상태가 사용자에게 반환된다. 동작(430)에서 블록 X는 불량으로 표시된다. 동작(440)에서 블록 X으로부터의 모든 유효 데이터는 정상 블록으로 재배치된다. 동작(450)에서 인디렉션 테이블이 업데이트된다. 동작(460)에서 대기 메모리 액세스는 업데이트되어 동작(450)에서 인디렉션 테이블에 이루어진 변화를 반영한다. 동작(470)에서 대기 메모리 동작의 실행이 재개된다.
일부 환경에서 시스템이 사용자에 의해 요청되지 않은 데이터 내의 정정할 수 없는 판독 오류를 발견하는 것이 가능하다. 이러한 경우 시스템은 내부적으로 오류를 플래그(flag)할 수 있지만, 사용자가 그 데이터를 요청할 때까지 사용자에게는 알리지 않아야 한다. 사용자가 판독 전에 플래그된(실패) 논리적 주소에서의 데이터를 오버라이팅하면, 플래그된 오류가 오버라이팅되어 사용자는 판독 오류를 겪지 않게 될 것이다.
도 5는 일부 실시예에 따라 NAND 판독 오류를 관리하는 프로세스를 도시한 순서도이다. 동작(510)에서 블록 X로서 지칭되는 주어진 메모리 블록에서 메모리 판독 액세스 오류가 발생한다. 동작(520)에서, 오류를 갖는 액세스를 포함한 모든 대기 메모리 동작들이 중단되고 실패 상태가 사용자에게 반환된다. 동작(530)에서 블록 X는 불량으로 표시된다. 동작(540)에서 인디렉션 테이블이 업데이트된다. 동작(550)에서 블록 X 내의 유효 데이터를 목표로 하는 판독 동작을 제외하고 동작(450) 내의 인디렉션 테이블에 이루어진 변화를 반영하도록 업데이트된다. 동작(560)에서 대기 메모리 동작의 실행이 재개된다. 동작(570)에서 블록 X로부터의 모든 유효 데이터가 정상 블록으로 재배치된다.
도 6은 일부 실시예에 따라 기록 액세스 오류를 관리하는 프로세스를 도시한 순서도이다. 동작(610)에서 블록 X에서 메모리 기록 액세스 오류가 발생한다. 동작(620)에서, 오류를 갖는 액세스를 포함한 모든 대기 메모리 동작들이 중단되고 실패 상태가 사용자에게 반환된다. 동작(630)에서 블록 X는 불량으로 표시된다. 동작(640)에서 블록 X로부터의 모든 유효 데이터가 정상 블록으로 재배치된다. 블록(650)에서 인디렉션 테이블이 업데이트된다. 동작(660)에서 실패 블록 내의 목표 위치인 대기 기록 동작이 정상 블록 내의 목표 위치로 재프로세싱된다. 동작(670)에서 대기 판독 액세스들이 인디렉션 테이블의 변화를 반영하도록 업데이트된다. 동작(680)에서 정상 명령 실행이 재개된다.
본 명세서에서 지칭하는 "논리적 명령어"는 하나 이상의 논리적 연산을 수행하는 하나 이상의 장치에 의해 이해될 수 있는 표현과 관련된다. 예를 들어, 논리적 명령어는 하나 이상의 데이터 객체에 대해 하나 이상의 연산을 실행하는 프로세서 컴파일러에 의해 해석될 수 있는 명령어를 포함할 수 있다. 그러나, 이것은 단지 장치-판독가능한 명령어의 예시일 뿐이며 실시예들은 이것으로 제한되지 않는다.
본 명세서에서 지칭되는 "컴퓨터 판독가능한 매체"라는 용어는 하나 이상의 장치에 의해 지각가능한 표현들을 유지할 수 있는 매체에 관련된다. 예를 들어, 컴퓨터 판독가능한 매체는 컴퓨터 판독가능한 명령어 또는 데이터를 저장하는 하나 이상의 저장 디바이스를 포함할 수 있다. 이러한 저장 디바이스는 예를 들어 광학적, 자기적 또는 반도체 저장 매체와 같은 저장 매체를 포함할 수 있다. 그러나, 이것은 단지 컴퓨터 판독가능한 매체의 예시일 뿐이며 실시예들은 이것으로 제한되지 않는다.
본 명세서에서 지칭되는 "로직(logic)"이라는 용어는 하나 이상의 논리적 연산을 수행하는 구조에 관련된다. 예를 들어, 로직은 하나 이상의 기록 신호에 기초하여 하나 이상의 출력 신호를 제공하는 회로소자를 포함할 수 있다. 이러한 회로소자는 디지털 입력을 수신하고 디지털 출력을 제공하는 유한 상태 장치, 또는 하나 이상의 아날로그 입력 신호에 응답하여 하나 이상의 아날로그 출력 신호를 제공하는 회로소자를 포함할 수 있다. 이러한 회로소자는 애플리케이션 특정 집적 회로(ASIC) 또는 필드 프로그램가능한 게이트 어레이(FPGA) 내에 제공될 수 있다. 또한, 로직은 장치-판독가능한 명령어를 실행하기 위한 프로세싱 회로와 조합하여 메모리 내에 저장된 장치-판독가능한 명령어를 포함할 수 있다. 그러나, 이것은 단지 로직을 제공할 수 있는 구조의 예시이며 실시예들은 이것으로 제한되지 않는다.
본 명세서에서 기술된 일부 방법들은 컴퓨터-판독가능한 매체 상의 논리적 명령어로서 구현될 수 있다. 프로세서 상에 실행되었을 때, 논리적 명령어는 프로세서가 기술된 방법을 구현하는 특정한 목적의 장치로서 프로그램되도록 한다. 본 명세서에서 기술된 방법을 실행하는 논리적 명령어에 의해 형성되는 프로세서는 기술된 방법들을 수행하는 구조를 구성한다. 이와 달리, 본 명세서에 기술된 방법들은 예로서 필드 프로그램가능한 게이트 어레이(FPGA), 애플리케이션 특정 집적 회로(ASIC) 등에 대한 논리로 감소될 수 있다.
설명과 특허청구범위에서, '연결된' 및 '접속된'과 같은 용어들이 그들의 파생어와 함께 사용될 수 있다. 특정한 실시예에서, 접속된다는 것은 둘 이상의 요소들이 직접 물리적 또는 전기적으로 서로 접촉함을 나타낸다. 연결된다는 것은 둘 이상의 요소들이 직접 물리적 또는 전기적으로 접촉함을 의미한다. 그러나, 연결되었다는 것은 둘 이상의 요소들이 서로 직접 접촉하지 않지만 여전히 서로 통합 또는 상호작용할 수도 있음을 의미할 수도 있다.
명세서에서 "일 실시예" 또는 "실시예"를 지칭하는 것은 실시예와 관련되어 기술된 특정한 특성, 구조 또는 특징이 적어도 하나의 구현에 포함됨을 의미한다. 명세서의 다수의 위치에서 등장하는 "일 실시예에서"라는 구절은 동일한 실시예를 나타낼 수도, 나타내지 않을 수도 있다.
실시예들이 구조적 특성 및/또는 방법론적인 동작들에 대해 특정된 언어로 기술되었지만, 특허청구된 대상은 기술된 특정한 특성 또는 동작들로 제한되지 않을 수 있음이 이해될 것이다. 오히려, 특정한 특성 또는 동작들은 특허청구된 대상을 구현하는 샘플 형태로서 개시된 것이다.
도 1은 일부 실시예에 따라 NAND 오류 관리를 구현하도록 사용될 수 있는 컴퓨터 시스템의 개략도.
도 2a는 일부 실시예에 따라 디스크 캐시 또는 솔리드 상태 디스크의 비휘발성 메모리 내에 포함된 페이지 메타데이터 정보의 블록도.
도 2b는 일부 실시예에 따라 디스크 캐시 또는 솔리드 상태 디스크를 제어하는 휘발성 메모리 내에 포함된 페이지 메타데이터 정보의 블록도.
도 3은 일부 실시예에 따라 NAND 판독 오류를 관리하는 프로세스를 도시한 순서도.
도 4는 일부 실시예에 따라 NAND 판독 오류를 관리하는 프로세스를 도시한 순서도.
도 5는 일부 실시예에 따라 NAND 판독 오류를 관리하는 프로세스를 도시한 순서도.
도 6은 일부 실시예에 따라 기록 액세스 오류를 관리하는 프로세스를 도시한 순서도.

Claims (15)

  1. 전자 디바이스 내의 인디렉션(indirected) 비휘발성(NV) 블록 메모리 상의 판독 실패를 관리하는 방법으로서,
    NV 메모리 블록 내의 판독 동작 또는 기록 동작 중 적어도 하나의 오류(error)를 검출하는 단계와,
    상기 NV 메모리 블록에 지시된 모든 대기 메모리 동작(queued memory operations)을 일시적으로 중지시키는 단계와,
    상기 오류와 연관된 상기 NV 메모리 블록을 불량으로 표시하는 단계와,
    상기 오류와 연관된 상기 NV 메모리 블록으로부터의 유효 사용자 데이터를 정상 블록으로 재배치하는 단계와,
    인디렉션 테이블(indirection table)을 업데이트하는 단계와,
    상기 인디렉션 테이블에 대한 변경을 반영하도록 상기 대기 메모리 동작의 적어도 일부를 업데이트하는 단계와,
    메모리 동작을 재개하는 단계를 포함하는
    판독 실패 관리 방법.
  2. 제 1 항에 있어서,
    상기 오류와 연관된 상기 NV 메모리 블록에 대한 대기 동작들을 중단하는 단계와,
    각각의 대기 동작에 대해서 사용자에게 실패 상태를 전달하는 단계를 더 포함하는
    판독 실패 관리 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 오류와 연관된 상기 NV 메모리 블록 내의 유효 데이터를 목표로 하는 적어도 하나의 대기 판독 동작에 대해서는 업데이트를 스킵하는(skip) 단계를 더 포함하는
    판독 실패 관리 방법.
  5. 제 1 항에 있어서,
    판독 실패에 대한 실패 상태를 사용자에게 전달하는 단계와,
    상기 사용자에게 상기 표시된 데이터의 후속하는 판독 동작들에 대해서 실패 상태를 전달하는 단계와,
    상기 데이터가 상기 사용자에 의해 재기록되면(re-written) 실패된 상기 데이터의 표시를 해제하는 단계를 더 포함하는
    판독 실패 관리 방법.
  6. 제 5 항에 있어서,
    상기 표시된 데이터가 상기 사용자에 의해 판독을 위해 액세스될 때까지 상기 사용자에게 실패 상태를 전달하는 것을 보류하는 단계를 더 포함하는
    판독 실패 관리 방법.
  7. 제 1 항에 있어서,
    상기 비휘발성 메모리는 NAND 메모리를 포함하는
    판독 실패 관리 방법.
  8. 제 7 항에 있어서,
    상기 인디렉션 비휘발성 블록 메모리는 페이지 레벨 인디렉션(page-level indirection) 메모리인
    판독 실패 관리 방법.
  9. 제 1 항에 있어서,
    무효(invalid) 사용자 데이터를 이동시키는 단계를 더 포함하는
    판독 실패 관리 방법.
  10. 제 1 항에 있어서,
    상기 판독 동작의 오류는 오류 정정 코드를 사용한 NV 데이터의 정정의 실패를 나타내는
    판독 실패 관리 방법.
  11. 제 1 항에 있어서,
    상기 판독 동작의 오류는 특정 문턱값을 초과하는 다수의 정정이 이어지는 NV 데이터 동작에 대한 오류 정정 코드를 나타내는
    판독 실패 관리 방법.
  12. 시스템으로서,
    컨트롤러와,
    비휘발성 저장 디바이스와.
    전자 디바이스 내의 인디렉션 비휘발성(NV) 블록 메모리 상의 판독 실패를 관리하는 로직을 포함하되,
    상기 로직은,
    NV 메모리 블록 내의 판독 동작 또는 기록 동작 중 적어도 하나의 오류를 검출하고,
    상기 NV 메모리 블록에 지시된 모든 대기 메모리 동작을 일시적으로 중지시키고,
    상기 오류와 연관된 상기 NV 메모리 블록을 불량으로 표시하고,
    상기 오류와 연관된 상기 NV 메모리 블록으로부터의 유효 사용자 데이터를 정상 블록으로 재배치하며,
    인디렉션 테이블을 업데이트하고,
    상기 인디렉션 테이블에 대한 변경을 반영하도록 상기 대기 메모리 동작의 적어도 일부를 업데이트하고,
    메모리 동작을 재개하는 로직을 포함하는
    시스템.
  13. 제 12 항에 있어서,
    상기 오류와 연관된 상기 NV 메모리 블록에 대한 대기 동작들을 중단하고,
    대기 동작 각각에 대해서 사용자에게 실패 상태를 전달하는 로직을 더 포함하는
    시스템.
  14. 삭제
  15. 제 12 항에 있어서,
    상기 오류와 연관된 상기 NV 메모리 블록 내의 유효 데이터를 목표로 하는 적어도 하나의 대기 판독 동작에 대해서는 업데이트를 스킵하는 로직을 더 포함하는
    시스템.
KR1020090058952A 2008-06-30 2009-06-30 판독 실패 관리 방법 및 시스템 KR101176702B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/215,915 2008-06-30
US12/215,915 US20090327837A1 (en) 2008-06-30 2008-06-30 NAND error management

Publications (2)

Publication Number Publication Date
KR20100003244A KR20100003244A (ko) 2010-01-07
KR101176702B1 true KR101176702B1 (ko) 2012-08-23

Family

ID=41449081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090058952A KR101176702B1 (ko) 2008-06-30 2009-06-30 판독 실패 관리 방법 및 시스템

Country Status (5)

Country Link
US (1) US20090327837A1 (ko)
KR (1) KR101176702B1 (ko)
CN (1) CN101673226B (ko)
DE (1) DE102009031125A1 (ko)
TW (1) TW201011767A (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE49818E1 (en) * 2010-05-13 2024-01-30 Kioxia Corporation Information processing method in a multi-level hierarchical memory system
CN103946813B (zh) 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
EP3451176B1 (en) 2011-09-30 2023-05-24 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
CN107391397B (zh) 2011-09-30 2021-07-27 英特尔公司 支持近存储器和远存储器访问的存储器通道
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US9202548B2 (en) 2011-12-22 2015-12-01 Intel Corporation Efficient PCMS refresh mechanism
US9418700B2 (en) * 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
US20140013031A1 (en) * 2012-07-09 2014-01-09 Yoko Masuo Data storage apparatus, memory control method, and electronic apparatus having a data storage apparatus
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR102137934B1 (ko) 2013-10-02 2020-07-28 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템
CN104199748A (zh) * 2014-08-25 2014-12-10 浪潮电子信息产业股份有限公司 一种基于错误注入测试存储***容忍坏扇区能力的方法
US9891833B2 (en) * 2015-10-22 2018-02-13 HoneycombData Inc. Eliminating garbage collection in nand flash devices
WO2017095911A1 (en) * 2015-12-01 2017-06-08 Huang Yiren Ronnie Method and apparatus for logically removing defective pages in non-volatile memory storage device
KR20180017608A (ko) 2016-08-10 2018-02-21 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
CN108038064B (zh) * 2017-12-20 2021-01-15 北京兆易创新科技股份有限公司 一种PairBlock擦除出错的处理方法及装置
KR20190075557A (ko) * 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN110413211B (zh) * 2018-04-28 2023-07-07 伊姆西Ip控股有限责任公司 存储管理方法、电子设备以及计算机可读介质
CN111161781A (zh) * 2018-11-07 2020-05-15 爱思开海力士有限公司 用于处理编程错误的存储器***及其方法
US10726936B2 (en) * 2018-12-20 2020-07-28 Micron Technology, Inc. Bad block management for memory sub-systems
KR20200079851A (ko) * 2018-12-26 2020-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN112230855A (zh) * 2020-10-20 2021-01-15 英韧科技(上海)有限公司 固态硬盘及其读写方法
CN113227959A (zh) 2021-03-30 2021-08-06 长江存储科技有限责任公司 具有读取错误处理的存储器控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998002816A1 (en) * 1996-07-11 1998-01-22 Memory Corporation Plc Block erasable memory system defect handling

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680640A (en) * 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US20080082736A1 (en) * 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
CN1716212B (zh) * 2004-06-29 2010-04-28 联想(北京)有限公司 一种灾难恢复***及方法
US20060156024A1 (en) * 2004-10-29 2006-07-13 Matsushita Electric Industrial Co., Ltd. Systems and methods for disk drive access under changes in environmental parameters
JP2006285600A (ja) * 2005-03-31 2006-10-19 Tokyo Electron Device Ltd 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
TWI308741B (en) * 2005-06-03 2009-04-11 Quanta Storage Inc A method of defect areas management
US7774643B2 (en) * 2006-01-06 2010-08-10 Dot Hill Systems Corporation Method and apparatus for preventing permanent data loss due to single failure of a fault tolerant array
US7890796B2 (en) * 2006-10-04 2011-02-15 Emc Corporation Automatic media error correction in a file server
US7953919B2 (en) * 2007-12-21 2011-05-31 Spansion Llc Physical block addressing of electronic memory devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998002816A1 (en) * 1996-07-11 1998-01-22 Memory Corporation Plc Block erasable memory system defect handling

Also Published As

Publication number Publication date
US20090327837A1 (en) 2009-12-31
TW201011767A (en) 2010-03-16
DE102009031125A1 (de) 2010-04-15
KR20100003244A (ko) 2010-01-07
CN101673226B (zh) 2013-08-07
CN101673226A (zh) 2010-03-17

Similar Documents

Publication Publication Date Title
KR101176702B1 (ko) 판독 실패 관리 방법 및 시스템
US7941692B2 (en) NAND power fail recovery
US20070094445A1 (en) Method to enable fast disk caching and efficient operations on solid state disks
US10255192B2 (en) Data storage device and data maintenance method thereof
US8417878B2 (en) Selection of units for garbage collection in flash memory
US10991422B2 (en) Data storage device using a host memory buffer for single-level cell storage and control method for non-volatile memory
US8122193B2 (en) Storage device and user device including the same
US7529879B2 (en) Incremental merge methods and memory systems using the same
US8762661B2 (en) System and method of managing metadata
CN105718530B (zh) 文件存储***及其文件存储控制方法
US20100235568A1 (en) Storage device using non-volatile memory
US20190188130A1 (en) Data Storage Device and Non-Volatile Memory Control Method
US20220004496A1 (en) Memory system, memory controller, and method of operating memory system
US9176866B2 (en) Active recycling for solid state drive
CN110674056B (zh) 一种垃圾回收方法及装置
US9384124B2 (en) Data storage device, memory control method, and electronic device with data storage device
US9798470B2 (en) Memory system for storing and processing translation information
JP2009289014A (ja) 記憶装置
JP5967308B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
TW201832085A (zh) 記憶體系統的操作方法
US20240070061A1 (en) Logical to physical (l2p) address mapping with fast l2p table load times
US7996598B2 (en) Memory management module
JP2013109404A (ja) 情報処理装置
TWI705328B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
JP2009211202A (ja) メモリシステム

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee