KR100932801B1 - 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체 - Google Patents

메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체 Download PDF

Info

Publication number
KR100932801B1
KR100932801B1 KR1020077005726A KR20077005726A KR100932801B1 KR 100932801 B1 KR100932801 B1 KR 100932801B1 KR 1020077005726 A KR1020077005726 A KR 1020077005726A KR 20077005726 A KR20077005726 A KR 20077005726A KR 100932801 B1 KR100932801 B1 KR 100932801B1
Authority
KR
South Korea
Prior art keywords
block
memory
physical
blocks
pseudo
Prior art date
Application number
KR1020077005726A
Other languages
English (en)
Other versions
KR20070061543A (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 KR20070061543A publication Critical patent/KR20070061543A/ko
Application granted granted Critical
Publication of KR100932801B1 publication Critical patent/KR100932801B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명에 따르면, 물리적 블록의 단위로 삭제되는 메모리가, 메모리가 물리적 블록보다 더 작은 의사 블록의 단위로 삭제되는 것처럼 제공된다. 물리적 블록들 중 하나는 여분(spare)으로 지정된다. 일실시예에서, 의사 블록을 삭제하기 위해, 대응 물리적 블록 내의 모든 다른 유효 데이터가 여분의 물리적 블록으로 복사되고, 목표 물리적 블록이 삭제되며, 다른 유효 데이터가 복사되거나 또는 목표 물리적 블록이 여분으로 된다. 다른 실시예에서는, 가상 블록과 논리적으로 결합되는 의사 블록을 삭제하기 위해, 가상 블록이 논리적으로 삭제된 것으로 표시되고, 의사 블록은 빈 가상 블록과 논리적으로 결합된다. 만약 필요하다면, 여분을 다른 적절한 물리적 블록과 교환함으로써 빈 가상 블록이 생성된다.

Description

메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장 매체{EMULATING SMALL BLOCK SIZE OF FLASH MEMORY}
본 발명은 블록 단위로 삭제되는 플래시 메모리와 같은 메모리에 관한 것으로, 보다 구체적으로는 삭제 블록의 물리적 크기가 실제보다 작은 것 같은 그러한 메모리에 액세스하는 방법에 관한 것이다.
플래시 메모리 장치는 판독, 기록(흔히 역사적인 이유로 "프로그래밍"이라고도 함), 삭제의 세 가지 기본 동작을 수행할 수 있다. 예를 들어 NAND 플래시 메모리와 같은 많은 유형의 플래시 메모리에 있어서, 기록 및 삭제는 모두 개별 메모리 셀에 대해서가 아니라 메모리 셀 그룹에 대해 집합적으로만 행해질 수 있다. 이들 그룹은 통상적으로 기록에 대해서는 비교적 작지만(통상적으로 NAND 플래시에 대해 한번에 512 byte 또는 2048 byte) 삭제에 대해서는 비교적 크다(통상적으로 NAND 플래시에 대해 32 Kbyte 또는 128 Kbyte). 함께 삭제되는 메모리의 셀의 단위를 이하에서는 블록(block)이라 한다.
플래시 메모리 산업의 최근 동향은 블록당 비트 수에 의해 삭제 블록의 크기를 증가시키는 쪽으로 진행되어 왔다. 이러한 동향은 다음과 같은 이유 때문이다.
a. 블록이 커진다는 것은 주변 회로에서의 오버헤드가 비교적 적다는 것을 의미하며, 따라서 소정의 저장 용량에 대해 메모리 장치당 실리콘 면적 및 비용이 작아진다는 것을 의미한다.
b. 최근에, 플래시 메모리 매매업자들은 전통적인 단일 레벨 셀(SLC; single-level cell) 장치의 셀당 1비트 저장과 반대로, 셀당 1보다 큰 비트, 통상적으로는 셀당 2비트를 저장하는 멀티 레벨 셀(MLC; multi-level cell)을 시장에 내놓았다. 셀당 2비트를 저장하면, 삭제 블록의 크기는 셀의 수에 의해 여전히 일정하겠지만, 데이터 비트에 의해 삭제 블록의 크기는 배가된다.
삭제 블록의 크기를 변화시키면, 하위 호환성(backward compatibility)이 생성된다. 플래시 메모리 장치에 데이터베이스를 관리하는 제어기를 고려해보자. 이러한 관리는 잦은 삭제 동작을 포함한다. 만약 플래시 장치가 상이한 블록 크기를 갖는 새로운 장치로 교체되면, 플래시 관리 소프트웨어는 통상적으로 적절히 작동하지 못한다. 예를 들어, 관리 소프트웨어가 기존의 블록 크기를 위해 설계되어 있는 경우 만약 새로운 블록의 크기가 기존의 블록 크기보다 더 크면, 제어기가 32 Kbytes를 삭제하라는 커맨드를 발행할 경우, 이 커맨드는 실제로는 128 Kbytes를 삭제하며, 따라서 의도와 달리 삭제되어서는 안 되는 데이터를 삭제해버릴 수 있다.
작은 블록 크기를 갖는 플래시 메모리 장치를 큰 블록 크기를 갖는 플래시 메모리로 교체하는 경우, 플래시 장치와 제어 소프트웨어 사이에 중간 제어층을 제공하는 것이 알려져 있다. 이 중간층은 장치의 실제 블록 크기에 따라서 플래시 장치를 제어하는 한편 장치의 호스트에 대해서는 보다 큰 블록 크기를 에뮬레이팅 한다. 예를 들어, Lasser의 미국 특허 제 6,591,330 호를 참조하라. 이러한 소형대 대형의 에뮬레이션은 비교적 쉬운데, 즉 제어 소프트웨어는 단지 큰 블록 크기를 담당하고, 그룹 내 작은 블록은 삭제하며, 개별 소형 블록의 삭제 옵션은 무시한다. 불행히도, 종래 기술은 대형대 소형 에뮬레이션은 언급하고 있지 않다.
따라서, 보다 작은 블록 크기를 갖는 플래시 메모리용의 소프트웨어를 사용하여 큰 블록 크기를 갖는 플래시 메모리를 관리하는 방법이 필요하고, 또한 매우 바람직하다.
본 발명에 따르면, 메모리 관리 방법에 있어서, (a) 소정의 크기를 갖는 복수의 물리적 블록으로서 상기 메모리를 구성하되, 상기 메모리는 상기 물리적 블록의 단위로 삭제되는 단계와, (b) 상기 메모리가 상기 물리적 블록보다 크기에 있어서 더 작은 의사 블록의 단위로 삭제되는 것처럼 상기 메모리를 제공하는 단계를 포함하는 메모리 관리 방법이 제공된다.
본 발명에 따르면, 메모리 장치에 있어서, (a) 소정의 크기를 갖는 복수의 물리적 블록을 포함하는 메모리와, (b) 상기 물리적 블록의 단위로 상기 메모리를 삭제하고, 상기 메모리가 상기 물리적 블록보다 크기가 더 작은 의사 블록의 단위로 삭제되는 것처럼 상기 메모리를 제공하는 제어기를 포함하는 메모리 장치가 제공된다.
본 발명에 따르면, 컴퓨터 판독 가능 매체로서, 상기 컴퓨터 판독 가능 매체에 수록된 컴퓨터 판독 가능 코드를 가지며, 상기 컴퓨터 판독 가능 코드는 소정 크기의 복수의 물리적 블록을 포함하는 메모리를 관리하고, 상기 컴퓨터 판독 가능 코드는 (a) 상기 물리적 블록의 단위로 상기 메모리를 삭제하는 프로그램 코드와, (b) 상기 메모리가 상기 물리적 블록보다 크기가 더 작은 의사 블록의 단위로 삭제되는 것처럼 상기 메모리를 제공하는 프로그램 코드를 포함하는 컴퓨터 판독 가능 매체가 제공된다.
가장 일반적으로, 본 발명의 방법은 복수의 물리적 블록으로서 구성되며 이들 물리적 블록의 단위, 즉 한번에 하나 이상의 물리적 블록이 삭제되는 메모리를 관리하는 방법이다. 메모리는, 메모리가 본 명세서에서 "의사 블록(pseudo-blocks)"이라고 하는 보다 작은 그룹의 셀의 단위로 삭제되는 것처럼 제공된다. 통상은, 아래 예들에서 추정하는 바와 같이, 물리적 블록의 크기가 의사 블록의 크기의 정수 배이다.
본 발명의 세 가지 특정 알고리즘을 이하에 논의한다.
제 1 알고리즘은 물리적 블록들 중 하나를 여분의 물리적 블록으로서 지정함으로써 시작한다. 데이터는, 메모리의 물리적 블록의 실제 크기와 같은 물리적 블록 내가 아니라 의사 블록과 크기가 유사한 물리적 블록에 데이터가 저장될 것으로 기대하는 호스트로부터 수신된다. 데이터는 여분의 물리적 블록 이외의 다른 물리적 블록 내에 저장된다. 데이터를 삭제하라는 커맨드가 수신되면, 삭제될 데이터를 제외한 다른 물리적 클록의 모든 유효 컨탠츠가 여분의 물리적 블록으로 복사된다. (메모리 셀의 "유효(valid)" 컨텐츠는 호스트가 유효 데이터로서 판독할 것으로 기대하는 메모리 셀의 컨텐츠로서, 예를 들면 물리적으로 또는 논리적으로 삭제된 메모리 셀의 컨텐츠 또는 아직 기록되지 않은 메모리 셀의 컨텐츠와 대조적이다.) 그 다음에 다른 물리적 블록이 삭제되고, 유효 컨텐츠가 다시 그 물리적 블록으로 복사되며, 여분의 물리적 블록은 삭제된다.
제 2 알고리즘은, 유효 컨텐츠를 다시 삭제된 데이터가 저장된 물리적 블록으로 복사하는 것을 제외하면 제 1 알고리즘과 유사한데, 삭제된 물리적 블록이 원래의 여분의 물리적 블록으로 대체된다. 그 후에 나머지 유효 데이터는 상기 여분의 물리적 블록을 통해 액세스된다.
제 3 알고리즘은 또한 제 1 물리적 블록을 여부의 물리적 블록으로서 지정함으로써 시작한다. 제 3 알고리즘은 또한 호스트가 그 데이터가 저장되어 있다고 생각하는 의사 블록을 상기 의사 블록과 크기가 동일하거나 또는 약간 더 큰 다른 물리적 블록의 대응 부분과 논리적으로 결합시킨다. 이들 부분은 본 명세서에서 "가상 블록"이라고 한다. 의사 블록을 삭제하라는 커맨드가 수신되면, 의사 블록이 논리적으로 결합되는 가상 블록이 논리적으로 삭제된 것으로 표시되는데, 가상 블록의 셀들이 그 내부에 저장된 데이터를 여전히 포함하지만, 그 데이터는 무효로 고려된다. 물리적으로 삭제되어 기록에 이용가능한 다른 가상 블록이 이제 탐색된다. 만약 그러한 가상 블록이 발견되면, 삭제되는 의사 블록이 그 가상 블록과 논리적으로 결합된다. 그렇지 않으면, 여분의 물리적 블록 이외의 물리적 블록들 중 하나로부터 데이터가 여분의 물리적 블록으로 복사된다. 데이터가 복사되는 물리적 블록은 최초에 삭제되는 의사 블록이 논리적으로 결합된 가상 블록을 포함하는 물리적 블록 또는 다른 물리적 블록일 수 있다. 물리적으로 삭제된 상태에서 여분의 물리적 블록의 가상 블록들 중 적어도 하나를 남겨두기 위해, 복사되는 물리적 블록의 일부만이 여분의 물리적 블록으로 복사된다. 삭제되는 의사 블록은 이제 여분의 물리적 블록의 물리적으로 삭제된 가상 블록들 중 하나와 논리적으로 결합된다. 마지막으로, 여분의 물리적 블록으로 부분적으로 복사된 물리적 블록이 삭제되고 여분의 물리적 블록으로 대체된다.
본 발명의 범위는 또한 본 발명의 방법을 구현하는 메모리 장치와, 본 발명의 방법을 구현하는 컴퓨터 판독 가능한 코드가 수록되어 있는 컴퓨터 판독 가능 저장 매체를 포함한다. 메모리 장치는 소정의 공통 크기의 복수의 물리적 블록을 갖는 메모리와, 이들 물리적 블록의 단위로 메모리를 삭제하지만 메모리가 물리적 블록보다 크기가 더 작은 의사 블록의 단위로 삭제되는 것처럼 메모리를 제공하는 제어기를 포함한다. 바람직하게는, 메모리는 플래시 메모리이다.
도 1은 메모리의 실제 물리적 구조와 메모리가 호스트에게 제공되는 방법을 대비시킨 도면.
도 2a 내지 2e는 본 발명의 제 1 알고리즘을 도시한 도면.
도 3a 내지 3c는 본 발명의 제 2 알고리즘을 도시한 도면.
도 4a 내지 4e는 본 발명의 제 3 알고리즘을 도시한 도면.
도 5는 본 발명의 플래시 메모리 장치의 하이 레벨 블록을 도시한 도면.
도 6은 본 발명의 컴퓨터 시스템의 부분적인 하이 레벨 블록도.
본 발명은 비교적 큰 삭제 블록을 갖는 메모리를 마치 메모리가 보다 작은 삭제 블록을 갖는 것처럼 관리하는 방법에 관한 것이다.
본 발명에 따른 메모리 관리의 원리 및 동작은 첨부한 도면 및 상세한 설명을 참조하면 잘 이해할 수 있을 것이다.
도 1은 NAND 플래시 메모리(도면의 우측)와 같은 메모리의 실제 물리적 구조와 메모리가 메모리의 호스트(도면의 좌측)에 제공되는 방법을 대비한 것이다. 이 "호스트"는, 예를 들면 원래는 보다 작은 삭제 블록 크기를 갖는 NAND 플래시 메모리를 관리하기 위한 NAND 플래시 메모리 제어기(도 5 참조) 또는 운영체제가 보다 작은 삭제 블록 크기를 갖는 NAND 플래시 메모리를 관리하기 위한 코드를 포함하는 컴퓨터 시스템(도 5 참조)일 수 있다. 메모리는 한 세트의 물리적 삭제 블록(10)을 포함하는데, 도 1에는 네 개(10A 내지 10D)가 도시되어 있다. 이 특정 예에서, 각각의 물리적 삭제 블록(10)은 8 Kbytes보다 약간 더 많이 포함한다. 이것은 현재의 표준에 의한 작은 수로서, 여기서는 단지 예로서 사용된다.
이 특정 예에서, 메모리의 호스트는 메모리의 블록 크기가 2Kbytes인 것으로 가정한다. 따라서, 메모리는 한 세트의 의사 블록(pseudo-block)(12)으로서 호스트에 제공되는데, 도 1에는 12 개(12A 내지 12L)가 도시되어 있다. 물리적 블록(10)의 일부분(14)(예 특정 예에서는 1/4)이 각 의사 블록(12)에 대응한다. 의사 블록(12)에 대응하는 물리적 블록(10)의 일부분(14)을 본 명세서에서는 가상 블록(virtual block)이라고 한다. 가상 블록(14)과 의사 블록(12) 사이의 대응은 도 1에 점선으로 표시되어 있다. 이 대응은 고정되거나(동일한 가상 블록(14)이 항상 동일한 의사 블록(12)에 대응함) 또는 변하지만(의사 블록(12)이 상이한 시간에 상이한 가상 블록(14)에 대응함), 어느 한 순간에는 각각의 가상 블록(14)이 많아야 하나의 의사 블록(12)에 대응한다. 이 특정 예에서는, 도 1에 도시된 바와 같이, 물리적 블록(10A)의 제 1 가상 블록(14)에 있어서, 각각의 가상 블록(14)은 512 바이트와 부기(bookkeeping) 용도로 사용되는 소수의 여분의 메모리 셀(18)로 각각 이루어진 네 개의 페이지(16)를 포함한다. 호스트는 판독 및 기록 커맨드를 의사 블록(12)의 대응 512 바이트 페이지로 보내고, 삭제 커맨드를 의사 블록(12)으로 보낸다. 호스트가 의사 블록(12)의 페이지에 기록하는 512 바이트 페이지 분량의 데이터는 대응 가상 블록(14) 내의 페이지(16)에 실제 기록된다. 호스트는 여분의 메모리 셀(18)을 알지 못한다.
모든 의사 블록(12)에 대해 대응 가상 블록(14)이 존재해야 하지만, 모든 가상 블록(14)에 대해 대응 의사 블록(12)이 존재할 필요는 없다. 구체적으로는, 하나의 물리적 블록(아래 예에서 적어도 처음 물리적 블록(10D))은 일반적으로, 삭제된 상태에 있으며 가상 블록(14)이 대응 의사 블록(12)을 갖지 않는 여분의(spare) 물리적 블록으로 남겨진다.
제 1 알고리즘
도 2a 내지 2e는 본 발명의 제 1 알고리즘을 도시한 것이다. 이 알고리즘에서, 가상 블록(14)과 의사 블록(12)의 결합은 고정된 결합이며, 도 2a 내지 2e에서 실선으로 도시되어 있다.
도 2a는 메모리의 최초 상태를 도시한 것으로, 유효 데이터가 음영으로 표시된 의사 블록(12A, 12B, 12C)에 대응하는 가상 블록(14)에 기록되어 있다. 의사 블록(12D)에 대응하는 가상 블록(14)은 비어 있다.
호스트는 의사 블록(12A)을 삭제하라는 커맨드를 발행한다. 도 2b에 도시된 바와 같이, 유효 데이터를 포함하는 물리적 블록(10A)의 다른 가상 블록(14), 즉 의사 블록(12B, 12C)에 대응하는 가상 블록(14)은 여분의 물리적 블록(10D) 내의 대응 가상 블록(14)으로 복사된다. 비어 있는 의사 블록(12D)에 대응하는 가상 블록(14)은 복사되지 않는다. 그 다음에, 도 2c에 도시된 바와 같이, 물리적 블록(10A)이 삭제된다. 마지막으로, 도 2d에 도시된 바와 같이 여분의 물리적 블록(10D)으로 카피된 데이터가 의사 블록(12B, 12C)에 대응하는 가상 블록(14)으로 복원되고, 도 2e에 도시된 바와 같이 여분의 물리적 블록(10D)이 삭제된다.
제 2 알고리즘
도 3a 내지 3c는 본 발명의 제 2 알고리즘을 도시하고 있다. 이 알고리즘에서, 가상 블록(14)과 의사 블록(12)의 결합은 도 3a 내지 3c에 화살표로 나타낸 논리 결합이다.
도 3a는 메모리의 최초 상태를 도시한 것으로, 유효 데이터가 음영으로 나타낸 의사 블록(12A, 12B, 12C)에 대응하는 가상 블록(14)에 기록되어 있다. 의사 블록(12D)에 대응하는 가상 블록(14)은 비어 있다.
호스트는 의사 블록(12A)을 삭제하기 위해 커맨드를 발행한다. 도 2b에 도 시된 바와 같이, 유효 데이터를 포함하는 물리적 블록(10A)의 다른 가상 블록(14), 즉 의사 블록(12B, 12C)에 대응하는 가상 블록(14)은 여분의 물리적 블록(10D) 내의 대응 가상 블록(14)에 복사된다. 의사 블록(12D)에 대응하는 비어 있는 가상 블록(14)은 카피되지 않는다. 그 다음에, 도 3c에 도시된 바와 같이, 물리적 블록(10A)이 삭제되고 의사 블록(12A 내지 12D)이 물리적 블록(10D) 내의 대응 가상 블록(14)과 논리적으로 결합된다. 의사 블록(12B)은 의사 블록(12B)의 데이터가 카피된 가상 블록(14)과 논리적으로 결합된다. 의사 블록(12C)은 의사 블록(12C)의 데이터가 카피된 가상 블록(14)과 논리적으로 결합된다. 의사 블록(12A, 12D)은 비어 있는 가상 블록(14)과 논리적으로 결합된다. 물리적 블록(10A)은 여분의 물리적 블록으로서 물리적 블록(10D)을 대체한다.
제 3 알고리즘
도 4a 내지 4e는 본 발명의 제 3 알고리즘을 도시한 것이다. 이 알고리즘에서, 가상 블록(14)과 의사 블록(12)의 결합은 도 4a 내지 4e에 화살표로 나타낸 논리적 결합이다. 제 3 알고리즘을 예시하기 위해 사용된 예에서는, 여분의 물리적 블록(10)의 일부분이 아닌 일부 가상 블록(14)도 대응 의사 블록(12)을 갖지 않는다.
도 4a는 메모리의 최초 상태를 도시한 것이다. 의사 블록(12A-12D, 12G, 12H)에 대응하는 가상 블록(14)은 유효 데이터를 포함한다. 두 개의 다른 가상 블록(14)은 무효 데이터를 포함하며 대응하는 의사 블록(12)을 갖지 않는다. 이들 데이터가 무효라는 것은 이들 가상 블록의 여분의 셀(18) 내의 적절한 플래그로 표시된다. 이들 플래그는 도 4a에 별표로 표시된다. 의사 블록(12E, 12F)에 대응하는 가상 블록(14)은 비어 있는데, 즉 삭제된 상태에 있다.
호스트는 의사 블록(12A)을 삭제하라는 커맨드를 발행한다. 도 4B에 도시된 바와 같이, 메모리의 제어기는 물리적 블록(10C) 내에서 대응 의사 블록(12)이 없는 빈 가상 블록(14)을 탐색 및 검출한다. 제어기는 이 가상 블록(14)에 대한 의사 블록(12A)의 논리적 결합을 변화시키고 의사 블록(12A)과 공식적으로 논리적으로 결합된 가상 블록(14) 내의 데이터를 무효로 플래그한다. 이제 의사 블록(12A)과 논리적으로 결합된 가상 블록(14)은 새로운 유효 데이터를 기록하는데 이용가능하다.
도 4c는 메모리의 최초 상태를 도시한 것으로, 여분의 물리적 블록(10D) 내의 가상 블록(14)만 비어 있다. 유효 데이터를 포함하는 가상 블록(14)만이 의사 블록(12)과 논리적으로 결합된다.
호스트는 의사 블록(12A)을 삭제하라는 커맨드를 발행한다. 메모리의 제어기는, 대응 의사 블록(12)이 없는 빈 가상 블록(14)을 검출하는데 실패하면, 삭제할 양호한 후보 물리적 블록(10)을 탐색한다. 삭제할 양호한 후보 물리적 블록(10)은 무효 데이터를 포함하는 비교적 많은 수의 가상 블록(14)을 갖는 물리적 블록(10)이다. 이 경우, 삭제할 최선의 후보 물리적 블록(10)은 각각의 물리적 블록(10A, 10B) 내의 단지 하나의 그러한 가상 블록(14)에 대해, 무효 데이터를 갖는 두 개의 가상 블록(14)을 갖는 물리적 블록(10C)이다. 도 4d에 도시된 바와 같이, 제어기는 물리적 블록(10C)의 유효 데이터, 즉 의사 블록(12G, 12H)과 논리적으로 관련되는 가상 블록(14) 내의 데이터를 여분의 물리적 블록(10D)으로 복사하고, 이들 유효 데이터가 복사된 물리적 블록(10D)의 가상 블록에 대한 의사 블록(12G, 12H)의 논리적인 결합을 변화시키며, 물리적 블록(10C)의 모든 데이터를 무효로 플래그하고, 여분의 물리적 블록(10D)의 빈 가상 블록에 대한 의사 블록(12A)의 논리적 결합을 변화시키며, 의사 블록(12A)과 공식적으로 논리적으로 결합된 가상 블록(14) 내의 데이터를 무효로 플래그한다. 이제 의사 블록(12A)과 논리적으로 관련된 가상 블록(14)은 새로운 유효 데이터를 기록하는데 이용가능하다. 마지막으로, 도 4e에 도시된 바와 같이, 제어기는 물리적 블록(10C)을 삭제하고, 이것에 의해 물리적 블록(10D)을 여분의 불리적 블록(10)으로서 물리적 블록(10C)과 교체한다.
도 5는 본 발명의 플래시 메모리 장치(110)의 하이 레벨 블록도이다. 도 5는 Ban의 미국 특허 제 5,404,485 호의 도 1에 기초하는데, 이 특허는 참고로서 본 명세서에 포함된다. 장치(110)는 NAND 플래시 메모리(112), 두 개의 플래시 메모리 제어기(114, 118), RAM(116)을 포함한다. 제어기(114)는 Ban의 미국특허 제 5,404,485 호 및 미국 특허 제 5,937,425 호에 개시된 메모리(112)를 관리하는데, 이 특허는 참고로서 본 명세서에 포함된다. (미국 특허 제 5,404,485 호는 일반적으로 플래시 메모리의 관리에 적용된다. 미국 특허 5,937,425 호는 NAND 플래시 메모리에 특유하다.) 제어기(114)는 메모리(112)에 저장된 데이터를 종래의 방법에서의 호스트 장치(도시되지 않음)와 교환한다. 예를 들어, 만약 장치(110)가 개 인용 컴퓨터와 같은 시스템에서 비휘발성 데이터 저장을 위해 사용되면, 제어기(114)는 시스템의 버스를 통해 시스템의 다른 구성요소와 통신한다. 만약 장치(110)가 예를 들어 Ban 등의 미국 특허 제 6,148,354 호에 개시된 USB 인터페이스와 같은 적절한 인터페이스를 이용하여 호스트에 착탈식으로 부착된 휴대형 저장 장치라면, 제어기(114)는 인터페이스를 통해 호스트와 통신한다.
제어기(114)는 원래 메모리(112)의 경우보다 더 작은 삭제 블록 크기를 갖는 NAND 플래시 메모리에 사용하기 위한 것이다. 따라서, 제어기(118)는 제어기(114)와 메모리(112) 사이에 개입된다. 제어기(118)는, 메모리(112)의 삭제 블록 크기가 제어기(114)가 예상하는 것보다 더 작은 삭제 블록 크기인 것처럼, 메모리(112)를 제어기(114)에게 제공한다.
장치(110)는 본 발명의 방법을 펌웨어로 구현한 일례이다. 도 6은 본 발명의 방법의 소프트웨어 구현의 일례인 본 발명의 컴퓨터 시스템(120)의 부분적인 하이 레벨 블록도이다. 시스템(120)은 프로세서(122), RAM(124), 집합적으로 I/O 블록(132)으로 표시된 키보드 및 디스플레이 스크린과 같은 입력 및 출력 장치, 하드 디스크(126) 및 NAND 플래시 메모리(130)의 두 개의 비휘발성 매체 저장 메모리를 포함한다. 구성요소(122, 124, 126, 130, 132)는 공통 버스(134)를 통해 서로 통신한다. 하드 디스크(126)에 저장된 데이터 중에 운영체제(128)의 코드가 이TEk. 시스템(120)에 전원이 켜지면, 프로세서(122)는 운영체제(128)의 코드를 RAM(124)에 다운로드한 다음에 RAM(124)으로부터 운영체제(128)의 코드를 실행시켜 시스템(120)의 동작을 관리한다. 따라서 하드 디스크(126)는 본 발명의 방법을 구현하 기 위한 컴퓨터 판독가능한 코드가 수록되어 있는 컴퓨터 판독가능 저장 매체의 일례이다.
운영체제(128)의 코드는 미국 특허 제 5,404,485 호 및 제 5,937,425 호에 개시된 바와 같이 NAND 플래시 메모리(130)를 관리하는 코드를 포함한다. 운영체제(128)의 코드는 또한 전술한 본 발명의 원리에 따라서 NAND 플래시 메모리(130)를 관리하기 위한 코드를 포함한다. NAND 플래시 관리 코드의 종래 기술 부분은 원래 NAND 플래시 메모리(130)의 삭제 블록 크기보다 더 작은 삭제 블록 크기를 갖고 있는 다른 NAND 플래시 메모리를 관리하기 위해 설치되었다. 이제, NAND 플래시 메모리(130)가 원래 시스템(120)에 설치된 NAND 플래시 메모리를 대신한다. 따라서 NAND 플래시 메모리(130)의 삭제 블록 크기가 원래 시스템(120)에 설치된 NAND 플래시 메모리의 보다 작은 삭제 블록 크기인 것처럼, NAND 플래시 관리 코드의 본 발명의 부분은 NAND 플래시 메모리(130)를 NAND 플래시 관리 코드의 종래기술 부분에 제공한다.
이상 실시예를 참조하여 본 발명을 설명하였지만, 본 발명의 많은 변형, 수정 및 기타 응용이 이루어질 수도 있다.

Claims (12)

  1. 메모리 관리 방법에 있어서,
    (a) 소정의 크기를 갖는 복수의 물리적 블록으로서 상기 메모리를 구성하는 단계 - 상기 메모리는 상기 물리적 블록의 단위로 삭제됨 -,
    (b) 상기 메모리가 상기 물리적 블록보다 크기에 있어서 더 작은 의사 블록의 단위로 삭제되는 것처럼 상기 메모리를 호스트에 제공하는 단계 - 각각의 물리적 블록은 복수의 가상 블록을 가지며, 각각의 의사 블록은 물리적 블록의 일부분에 대응함 - 를 포함하고,
    상기 메모리를 호스트에 제공하는 단계는,
    i) 상기 물리적 블록 중 하나를 여분의 물리적 블록으로서 지정하는 단계 - 여분의 물리적 블록은 상기 물리적 블록과 구별되고, 메모리 내에서의 의사 블록을 삭제하기 위한 커맨드를 관리하는데 이용됨 - ;
    ii) 의사 블록을 상기 여분의 물리적 블록과 구별되는 물리적 블록들 중 제1 물리적 블록 내의 제1 가상 블록과 논리적으로 연관시키는 단계를 더 포함하는
    메모리 관리 방법.
  2. 제 1 항에 있어서,
    상기 물리적 블록의 상기 크기는 상기 의사 블록의 상기 크기의 정수 배인
    메모리 관리 방법.
  3. 제 1 항에 있어서,
    상기 메모리를 호스트에 제공하는 단계는,
    iii) 상기 의사 블록을 삭제하는 커맨드를 수신하는 단계를 더 포함하고,
    상기 의사 블록을 삭제하는 커맨드를 수신한 후,
    a) 삭제될 의사 블록에 대응하는 물리적 블록에서의 가상 블록을 식별하는 단계;
    b) 유효 데이터를 가진 물리적 블록에서 하나 이상의 다른 가상 블록들을 결정하는 단계 - 상기 하나 이상의 다른 가상 블록들은 삭제될 의사 블록에 대응하는 물리적 블록에서의 가상 블록과 구별됨 - ;
    c) 상기 여분의 물리적 블록의 하나 이상의 가상 블록들로부터 데이터를 저장하는 단계; 및
    d) 삭제될 의사 블록에 대응하는 상기 물리적 블록을 삭제하는 단계를 수행하는 특징으로 하는
    메모리 관리 방법.
  4. 제 3 항에 있어서,
    상기 메모리를 호스트에 제공하는 단계는,
    (C) 상기 물리적 블록을 삭제하는 단계 후에, 상기 여분의 물리적 블록의 모든 유효 컨텐츠를 상기 물리적 블록으로 복사하는 단계와,
    (D) 상기 여분의 물리적 블록의 모든 유효 컨텐츠를 상기 물리적 블록으로 복사하는 단계 후에, 상기 여분의 물리적 블록을 삭제하는 단계를 포함하는 단계들에 의해 수행되는
    메모리 관리 방법.
  5. 제 3 항에 있어서,
    상기 메모리를 호스트에 제공하는 단계는, 상기 하나의 의사 블록을 삭제하라는 상기 커맨드 수신 시에,
    (C) 상기 물리적 블록을 삭제하는 단계 후에, 상기 물리적 블록을 상기 여분의 물리적 블록으로 대체하는 단계
    를 포함하는 단계에 의해 수행되는
    메모리 관리 방법.
  6. 제 1 항에 있어서,
    상기 메모리를 호스트에 제공하는 단계는,
    (A) 논리적으로 삭제될 상기 의사 블록과 연관된 상기 제1 가상 블록을 마킹(marking)하는 단계;
    (B) 메모리 내에서 물리적으로 삭제될 가상 블록을 탐색하는 단계
    를 포함하는 단계들에 의해 수행되는
    메모리 관리 방법.
  7. 제 6 항에 있어서,
    상기 메모리 제공 단계는 상기 하나의 의사 블록을 삭제하라는 상기 커맨드 수신 시에
    (C) 만약 상기 탐색 단계에서 상기 물리적으로 삭제된 가상 블록을 검출하면, 상기 하나의 의사 블록을 상기 물리적으로 삭제된 가상 블록과 논리적으로 결합시키는 단계와,
    (D) 그렇지 않으면,
    (I) 상기 여분의 물리적 블록 이외의 제 2 물리적 블록의 일부분만 상기 여분의 물리적 블록으로 복사하되, 물리적으로 삭제된 상태에서 상기 여분의 물리적 블록의 적어도 하나의 가상 블록을 남겨두고 복사하는 단계와,
    (II) 상기 복사 단계 후에, 상기 하나의 의사 블록을 상기 여분의 물리적 블록의 상기 적어도 하나의 물리적으로 삭제된 가상 블록들 중 하나와 결합시키는 단계와,
    (III) 상기 제 2 물리적 블록을 삭제하는 단계와,
    (IV) 상기 제 2 물리적 블록을 상기 여분의 물리적 블록으로 대체하는 단계
    를 포함하는 단계들에 의해 행해지는
    메모리 관리 방법.
  8. 제 7 항에 있어서,
    상기 제 1 및 제 2 물리적 블록은 동일한
    메모리 관리 방법.
  9. 제 7 항에 있어서,
    상기 제 1 및 제 2 물리적 블록은 상이한
    메모리 관리 방법.
  10. 메모리 장치에 있어서,
    (a) 소정의 크기를 갖는 복수의 물리적 블록을 포함하는 메모리와,
    (b) 제어기를 포함하고,
    상기 제어기는,
    상기 물리적 블록의 단위로 상기 메모리를 삭제하는 단계, 및
    상기 메모리가 상기 물리적 블록보다 크기가 더 작은 의사 블록의 단위로 삭제되는 것처럼 상기 메모리를 제공하는 단계 - 상기 의사 블록 각각은 물리적 블록의 일부분에 대응함 - 를 수행하고,
    상기 제어기는 상기 메모리의 제공 단계의 수행시에,
    (a) 상기 물리적 블록 중 하나의 물리적 블록을 여분의 물리적 블록으로서 지정하는 단계 - 상기 물리적 블록의 각각은 복수의 가상 블록을 가지며, 상기 여분의 물리적 블록은 상기 물리적 블록과 구별되고, 메모리 내에서의 의사 블록을 삭제하기 위한 커맨드를 관리하는데 이용됨 - ;
    (b) 제1 물리적 블록의 제1 가상 블록 내의 의사 블록과 연관된 데이터를 저장하는 단계; 및
    (c) 상기 제1 물리적 블록의 상기 제1 가상 블록 내의 상기 의사 블록을 논리적으로 연관시키는 단계를 더 수행하는 것을 특징으로 하는
    메모리 장치.
  11. 제 10 항에 있어서,
    상기 메모리는 플래시 메모리인
    메모리 장치.
  12. 컴퓨터 판독 가능 저장 매체로서,
    상기 컴퓨터 판독 가능 저장 매체에 수록된 컴퓨터 판독 가능 코드를 가지며, 상기 컴퓨터 판독 가능 코드는 소정 크기의 복수의 물리적 블록을 포함하는 메모리를 관리하고, 상기 컴퓨터 판독 가능 코드는,
    (a) 상기 물리적 블록의 단위로 상기 메모리를 삭제하는 프로그램 코드와,
    (b) 상기 메모리가 상기 물리적 블록보다 크기가 더 작은 의사 블록의 단위로 삭제되는 것처럼 상기 메모리를 제공하는 프로그램 코드 - 물리적 블록 각각은 복수의 가상 블록을 가지며, 상기 의사 블록의 각각은 물리적 블록의 일부분에 대응함 - 를 포함하고,
    상기 메모리를 제공하는 프로그램 코드는,
    i) 상기 물리적 블록 중 하나를 여분의 물리적 블록으로서 지정하는 프로그램 코드 - 여분의 물리적 블록은 상기 물리적 블록과 구별되고, 메모리 내에서의 의사 블록을 삭제하기 위한 커맨드를 관리하는데 이용됨 - ;
    ii) 의사 블록을 상기 여분의 물리적 블록과 구별되는 물리적 블록들 중 제1 물리적 블록 내의 제1 가상 블록과 논리적으로 연관시키는 프로그램 코드를 더 포함하는 것을 특징으로 하는
    컴퓨터 판독 가능 저장 매체.
KR1020077005726A 2004-09-16 2005-09-12 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체 KR100932801B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60997404P 2004-09-16 2004-09-16
US60/609,974 2004-09-16
US11/159,172 2005-06-23
US11/159,172 US20060059296A1 (en) 2004-09-16 2005-06-23 Emulating small block size of flash memory
PCT/IL2005/000966 WO2006030421A2 (en) 2004-09-16 2005-09-12 Emulating small block size of flash memory

Publications (2)

Publication Number Publication Date
KR20070061543A KR20070061543A (ko) 2007-06-13
KR100932801B1 true KR100932801B1 (ko) 2009-12-21

Family

ID=36035423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077005726A KR100932801B1 (ko) 2004-09-16 2005-09-12 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체

Country Status (3)

Country Link
US (1) US20060059296A1 (ko)
KR (1) KR100932801B1 (ko)
WO (1) WO2006030421A2 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4535117B2 (ja) * 2007-11-06 2010-09-01 ソニー株式会社 メモリ装置、メモリ管理方法、およびプログラム
KR100967108B1 (ko) * 2008-09-22 2010-07-05 주식회사 하이닉스반도체 반도체 메모리장치 및 이를 포함하는 메모리 시스템
US10120573B2 (en) 2015-09-14 2018-11-06 Microsoft Technology Licensing, Llc. Modular sequential writing of data to data storage devices
CN113391755B (zh) * 2020-02-26 2023-09-22 北京君正集成电路股份有限公司 一种并行双片nand flash中物理擦除块动态关联的方法
US11360691B2 (en) * 2020-06-10 2022-06-14 EMC IP Holding Company LLC Garbage collection in a storage system at sub-virtual block granularity level

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6148354A (en) * 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6742078B1 (en) * 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
DE60009031D1 (de) * 2000-03-28 2004-04-22 St Microelectronics Srl Verfahren zur logischen Aufteilung einer nichtflüchtigen Speichermatrix
US6591330B2 (en) * 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies

Also Published As

Publication number Publication date
WO2006030421A2 (en) 2006-03-23
WO2006030421A3 (en) 2006-08-10
KR20070061543A (ko) 2007-06-13
US20060059296A1 (en) 2006-03-16

Similar Documents

Publication Publication Date Title
CN107957961B (zh) 存储设备、存储系统和计算设备
US9489301B2 (en) Memory systems
US8533391B2 (en) Storage device and user device including the same
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
US7624239B2 (en) Methods for the management of erase operations in non-volatile memories
US6988175B2 (en) Flash memory management method that is resistant to data corruption by power loss
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US7680977B2 (en) Page and block management algorithm for NAND flash
US8700840B2 (en) Nonvolatile memory with write cache having flush/eviction methods
US8094500B2 (en) Non-volatile memory and method with write cache partitioning
US7275140B2 (en) Flash memory management method that is resistant to data corruption by power loss
JP4256175B2 (ja) 不揮発性半導体メモリ
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US7818492B2 (en) Source and shadow wear-leveling method and apparatus
US8225050B2 (en) Memory storage device and a control method thereof
JPH05282889A (ja) 不揮発性半導体メモリ装置
KR20020009564A (ko) 메모리 시스템
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US20100318726A1 (en) Memory system and memory system managing method
KR100932801B1 (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
KR20220068535A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR100982440B1 (ko) 단일 플래시 메모리의 데이터 관리시스템
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
KR20230115195A (ko) 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
JP2003242788A (ja) 不揮発性半導体メモリ装置及びその制御方法

Legal Events

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

Payment date: 20121123

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141120

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 10