KR101453264B1 - 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템 - Google Patents

메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템 Download PDF

Info

Publication number
KR101453264B1
KR101453264B1 KR1020107000413A KR20107000413A KR101453264B1 KR 101453264 B1 KR101453264 B1 KR 101453264B1 KR 1020107000413 A KR1020107000413 A KR 1020107000413A KR 20107000413 A KR20107000413 A KR 20107000413A KR 101453264 B1 KR101453264 B1 KR 101453264B1
Authority
KR
South Korea
Prior art keywords
block
data
lba
address
host
Prior art date
Application number
KR1020107000413A
Other languages
English (en)
Other versions
KR20100034743A (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 KR20100034743A publication Critical patent/KR20100034743A/ko
Application granted granted Critical
Publication of KR101453264B1 publication Critical patent/KR101453264B1/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/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/0607Interleaved 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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/7202Allocation control and policies
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

저장 어드레스 리매핑 방법과 시스템이 개시된다. 상기 방법은 클러스터의 블록 내의 논리 어드레스를 할당하는 단계 및 논리 어드레스를 저장 어드레스 공간에 리매핑하는 단계를 포함하고, 이때 논리 어드레스 공간에 분포된 숏 런 데이터는 저장 어드레스 공간 내의 블록에 연속적인 방식으로 매핑된다. 가용 수의 새로운 블록이 소정의 임계치 이하로 떨어질 때 데이터를 수신하기 위해 이용될 수 있는 새로운 블록을 만들기 위해 유효 및 무용 데이터를 모두 갖는 블록으로부터 유효 데이터가 플러시된다. 상기 시스템은 호스트 파일 시스템, 내장된 솔리드 스테이트 디스크와 같은 플래시 메모리 디바이스 상에 남아 있거나 호스트 파일 시스템으로부터 개별적으로 호스트 상에 남아 있는 프로세서 실행가능 명령어, 또는 논리 어드레스 공간으로부터의 데이터를 저장 어드레스 공간 내의 완전한 블록에 연속적인 방식으로 매핑하도록 구성되는 플래시 메모리 디바이스의 후미 메모리 관리자를 포함한다.

Description

메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템{METHOD AND SYSTEM FOR STORAGE ADDRESS RE-MAPPING FOR A MEMORY DEVICE}
본 출원은, 일반적으로 운영 시스템과 메모리 디바이스의 데이터 통신에 관한 것이다. 보다 구체적으로, 본 출원은, 재프로그램 가능한 비휘발성 반도체 플래시 메모리와 같은 메모리 시스템과 상기 메모리가 연결되거나 연결 가능한 호스트 장치의 작동에 관한 것이다.
종래의 플래시 데이터 메모리 시스템에 데이터를 기록할 때, 호스트는 일반적으로 메모리 시스템의 연속적인 가상 어드레스 공간 내의 섹터, 클러스터, 또는 기타 데이터 단위에 고유한 로컬 어드레스를 할당한다. 상기 호스트는 상기 메모리 시스템의 로컬 어드레스 공간 내에 데이터를 기록하거나 또는 상기 로컬 어드레스의 데이터를 판독한다. 그 후 상기 메모리 시스템은 보통 상기 로컬 어드레스 공간과 물리적 블록 또는 메모리의 메타블록 사이에 데이터를 매핑하고, 상기 블록에는 상기 로컬 어드레스 공간 내의 범위에 대응하는 고정된 논리 그룹에 데이터가 저장된다. 일반적으로, 각각의 고정 논리 그룹은 상기 메모리 시스템의 개별적인 물리적 블록에 저장된다. 상기 메모리 시스템에는 상기 논리 어드레스 공간이 물리적 메모리에 어떻게 매핑되었는지에 관한 기록이 남게 되지만 상기 호스트는 이를 인식하지 못한다. 상기 호스트에는 데이터 파일의 어드레스가 상기 논리 어드레스 공간 내에 기록되지만 상기 메모리 시스템은 이와 같은 매핑을 인식하지 못한 채 작동하게 된다.
이와 같은 방식으로 작동하는 메모리 시스템의 단점은 단편화이다. 예를 들어, NTFS 파일 시스템에 따라 작동하는 개인 컴퓨터(PC)의 솔리드 스테이트 디스크 (SSD) 드라이브에 기록된 데이터가 주로 상기 드라이브의 논리 어드레스 공간 내의 넓게 분포된 장소에서 연속적인 어드레스의 숏 런(short run)의 패턴에 의해 특징된다. 만약 호스트에 의해 이용되는 파일 시스템이 연속적인 파일의 새로운 데이터를 위한 일련의 어드레스를 할당한다 하더라도, 삭제된 파일의 임의의 패턴이 블록화된 단위의 새로운 파일 데이터에 가용 자유 메모리 공간이 할당되지 못하도록 단편화를 유발한다.
플래시 메모리 관리시스템은 물리적 어드레스의 메타블록에 연속적인 논리 어드레스의 블록을 매핑함으로써 작동하는 경향이 있다. 호스트로부터의 어드레스의 숏 런이 고립상태로 업데이트 되는 경우, 상기 런(run)을 포함하는 어드레스의 모든 논리 블록은 단일 메타블록으로의 장기간의 매핑을 유지해야 한다. 이는 논리-물리 메모리 관리시스템 내에서의 가비지 컬렉션(garbage collection) 작업을 필요로 하고, 여기서 호스트에 의해 업데이트 되지 않은, 논리 블록 내의 모든 데이터가 업데이트된 데이터와 결합되도록 재배치된다. 이는 상당한 부담으로서 기록속도 및 메모리 수명을 상당히 제한할 수 있다.
공지된 디스크 드라이브에 사용된 마그네틱 메모리와 비교해서 플래시 메모리가 현재 갖고 있는 제한된 수의 기록 주기가 제공되면, 숏 논리 어드레스 런과 단편화의 문제를 보상하기 위해 플래시 메모리를 이용하는 시스템의 성능을 향상시키는 것이 바람직하다. 이러한 것을 처리하게 위해, 메모리 디바이스에서 저장 어드레스 리매핑을 위한 방법과 시스템이 개시된다.
제 1 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법을 기술한다. 상기 방법은 상기 호스트 시스템으로부터 상기 대용량 저장 시스템에서 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하는 단계를 포함한다. 연속적인 저장 LBA 어드레스의 블록은 호스트 LBA 어드레스를 수신하기 위해 할당되고, 연속적인 저장 LBA 어드레스의 상기 블록은 무용 데이터만을 포함한다. 상기 방법은 또한 상기 수신된 데이터에 대한 호스트 LBA 어드레스 각각을 상기 연속적인 저장 LBA 어드레스 블록에 리매핑하는 단계를 포함하고, 이때 각각의 저장 LBA 어드레스는 호스트 LBA 어드레스에 관계없이 수신된 데이터가 수신되는 순서에 따라 수신된 데이터에 연속적인 방식으로 순차적으로 할당된다.
제 2 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법을 기술한다. 상기 방법은 호스트 시스템 상의 파일 시스템으로부터 호스트 논리 블록 어드레스 (LBA) 어드레스와 관련된 데이터를 수신하는 단계를 포함한다. 상기 수신된 호스트 LBA 어드레스는 연속적인 저장 LBA 어드레스의 블록에 수신되는 순서에 따라 리매핑되고, 할당시 미기록 용량만을 어드레스하는 연속적인 저장 LBA 어드레스의 추가적인 블록이 할당되며, 연속적인 저장 LBA 어드레스의 상기 블록이 완전히 프로그램된 후에만 나머지 수신된 호스트 LBA 어드레스가 연속적으로 상기 추가적인 블록에 리매핑된다. 미기록 용량만을 어드레스하는 연속적인 저장 LBA 어드레스의 새로운 블록 또한 생성된다.
본 발명의 다른 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법을 기술하고, 상기 방법은 상기 호스트 시스템으로부터 상기 대용량 저장 시스템에서 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하는 단계 및 연속적인 저장 LBA 어드레스의 블록에 수신되는 순서대로 상기 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하는 단계를 포함한다. 상기 방법은 또한 연속적인 저장 LBA 어드레스의 추가 블록을 할당하는 단계(상기 추가 블록은 할당시 기록되지 않은 용량만을 어드레싱함)와, 연속적인 저장 LBA 어드레스의 블록이 완전히 프로그래밍되었을 때에만 상기 추가 블록으로 나머지 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하는 단계를 포함한다. 또한, 상기 방법은 호스트 LBA 어드레스와 관련된 데이터가 연속적인 저장 LBA 어드레스에 리매핑됨에 따라 상기 호스트 LBA 어드레스를 저장 LBA 어드레스에 매핑하는 저장 어드레스 테이블을 생성하는 단계를 포함한다.
또 다른 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법을 기술하고, 상기 방법은 상기 대용량 저장 시스템 상의 애플리케이션에서 상기 호스트 시스템으로부터 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하는 단계 및 연속적인 저장 LBA 어드레스 블록에 수신되는 순서에 따라 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하는 단계를 포함한다. 상기 방법은 또한 연속적인 저장 LBA 어드레스의 추가 블록을 할당하는 단계(상기 추가 블록은 할당시 기록되지 않은 용량만을 어드레싱함)와, 연속적인 저장 LBA 어드레스의 블록이 완전히 프로그래밍되었을 때에만 상기 추가 블록으로 나머지 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하는 단계를 포함한다. 이전에 수신된 호스트 LBA 어드레스와 관련된 새로운 데이터를 수신하기 전에 유효 및 무용 데이터를 현재 어드레스하는 연속적인 저장 LBA 어드레스의 이전에 완전히 프로그램된 블록을 식별하는 단계, 및 현재 유효 및 무용 데이터를 어드레스하는 연속적인 저장 LBA 어드레스의 상기 식별된 이전에 완전히 프로그램된 블록으로부터의 미기록 용량만을 어드레스하는 연속적인 저장 LBA 어드레스의 새로운 블록을 생성하는 단계가 더 포함된다.
본 발명의 한 가지 양상에 있어서, 대용량 저장 메모리 시스템이 개시되고, 상기 시스템은 함께 삭제가능한 메모리 셀의 복수의 블록 내에 배열되는 재프로그램 가능한 비휘발성 메모리 셀, 호스트 논리 블록 어드레스(LBA) 어드레스로 어드레스된 호스트 시스템으로부터 데이터를 수신하는 인터페이스, 및 상기 인터페이스와 연통되는 제어기를 포함한다. 상기 제어기는 수신된 데이터에 대한 호스트 LBA 어드레스의 각각을 연속적인 저장 LBA 어드레스의 블록에 리매핑하도록 구성되고, 여기서 상기 제어기는 연속적인 저장 LBA 어드레스 각각을, 수신된 데이터와 관련된 호스트 LBA 어드레스와 관계없이 수신된 데이터가 수신되는 순서에 따라 수신된 데이터에 순차적으로 할당한다.
본 발명의 또 다른 양상에 따라, 대용량 저장 메모리 시스템은 함께 삭제가능한 메모리 셀의 복수의 블록 내에 배열되는 재프로그램 가능한 비휘발성 메모리 셀, 호스트 시스템으로부터 호스트 논리 블록 어드레스(LBA) 포맷으로 어드레스된 데이터를 수신하는 인터페이스, 및 상기 인터페이스와 연통되는 제어기를 포함한다. 상기 제어기는 호스트 시스템으로부터 대용량 저장 시스템에서 호스트 LBA 어드레스와 관련된 데이터를 수신하는 단계를 실행하고, 연속적인 저장 LBA 어드레스의 블록에 수신되는 순서에 따라 상기 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하며, 연속적인 저장 LBA 어드레스의 추가적인 블록을 할당하기 위한 프로세서 처리가능 명령어를 포함하고, 여기서 상기 추가적인 블록은 할당시 미기록 용량만을 포함하고, 만약 연속적인 저장 LBA 어드레스의 블록이 완전히 프로그램된 경우 나머지 수신된 호스트 LBA 어드레스를 상기 추가적인 블록에 연속적으로 리매핑한다. 상기 프로세서 실행가능 명령어는 또한 유효 데이터를 포함하지 않는 연속적인 저장 LBA 어드레스의 새로운 블록을 생성하기 위한 명령어를 포함한다.
본 발명의 또 다른 양상에서 개시한 바와 같이, 호스트 LBA 어드레스와 관련된 데이터를 저장 LBA 어드레스에 리매핑하기 위한 비휘발성 대용량 저장 시스템은 재프로그램 가능하면 함께 삭제가능한 메모리 셀의 복수의 블록 내에 배열되는 비휘발성 메모리 셀, 호스트 시스템으로부터 호스트 LBA 포맷으로 어드레스된 데이터를 수신하는 인터페이스, 및 상기 인터페이스와 연통되는 제어기를 포함한다. 상기 제어기는 연속적인 저장 LBA 어드레스의 블록에 수신되는 순서에 따라, 상기 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하고, 할당시 미기록 용량만을 어드레스하는, 연속적인 저장 LBA 어드레스의 추가적인 블록을 할당하고 상기 연속적인 저장 LBA 어드레스의 블록이 완전히 프로그램된 경우 추가적으로 수신된 호스트 LBA 어드레스를 상기 추가적인 블록에 리매핑하도록 구성된다. 또한 상기 제어기는 호스트 LBA 어드레스와 관련된 데이터가 연속적인 저장 LBA 어드레스에 리매핑됨에 따라, 상기 호스트 LBA 어드레스를 매핑하는 저장 어드레스 테이블(SAT)을 저장 LBA 어드레스에 생성하고, 저장 LBA 어드레스의 복수의 블록 각각의 상태를 식별하는 블록 정보 테이블을 생성하도록 구성된다.
또 다른 양상에서, 비휘발성 대용량 저장 시스템은 상기 대용량 저장 시스템에서 호스트 시스템으로부터 호스트 LBA 어드레스와 관련된 데이터를 수신하기 위한 수단, 호스트 LBA 어드레스를 수신하고 할당시 미기록 용량에만 관련된 연속적인 저장 LBA 어드레스의 블록을 할당하기 위한 수단, 및 수신된 데이터에 대한 호스트 LBA 어드레스 각각을 연속적인 저장 LBA 어드레스의 상기 블록에 리매핑하기 위한 수단을 포함하고, 여기서 각각의 저장 LBA 어드레스는 호스트 LBA 어드레스에 관계없이 상기 수신된 데이터가 수신되는 순서에 따라 상기 수신된 데이터에 연속적인 방식으로 순차적으로 할당된다.
본 발명의 또 다른 양상에서, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법은 호스트 시스템 상의 잔존하는 호스트 리매핑 모듈에서 호스트 논리 블록 LBA 어드레스와 관련된 데이터를 수신하는 단계를 포함한다. 상기 호스트 리매핑 모듈은 호스트 LBA 어드레스를 수신하고 할당시 미기록 용량에만 관련되는 연속적인 저장 LBA 어드레스의 블록을 할당하고, 호스트 LBA 어드레스에 관계없이 수신된 데이터가 수신되는 순서대로 각 저장 LBA 어드레스가 연속적인 방식으로 상기 수신된 데이터에 순차적으로 할당되도록 연속적인 저장 LBA 어드레스의 블록에 수신된 데이터에 대한 호스트 LBA 어드레스 각각을 리매핑한다. 연속적인 저장 LBA 어드레스의 블록에 리매핑된 상기 수신된 데이터 및 상기 할당된 저장 LBA 어드레스는 호스트 시스템으로부터 대용량 저장 시스템으로 전송된다.
또 다른 양상에서, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법은 호스트 시스템 상의 호스트 리매핑 모듈에서 호스트 LBA 어드레스와 관련된 데이터를 수신하는 단계 및 연속적인 저장 LBA 어드레스의 블록에 수신되는 순서에 따라 상기 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하는 단계를 포함한다. 할당시 미기록 용량만을 어드레스하는 연속적인 저장 LBA 어드레스의 추가적인 블록이 할당된다. 만약 연속적인 저장 LBA 어드레스의 블록이 완전히 프로그램된 경우, 나머지 수신된 호스트 LBA 어드레스는 추가적인 블록에 연속적으로 리매핑된다. 상기 방법은 무용 데이터만을 어드레스하고 연속적인 저장 LBA 어드레스의 블록에 리매핑된 상기 수신된 데이터 및 상기 할당된 저장 LBA 어드레스를 호스트 시스템으로부터 대용량 저장 시스템으로 전송하는 연속적인 저장 LBA 어드레스의 새로운 블록을 생성하는 단계를 더 포함한다.
본 발명의 또 다른 양상에 따라, 호스트 시스템 상의 호스트 리매핑 모듈에서 호스트 LBA 어드레스와 관련된 데이터를 수신하는 단계, 상기 호스트 시스템에서 연속적인 저장 LBA 어드레스의 블록에 수신되는 순서에 따라 상기 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하는 단계, 할당시 미기록 용량만을 어드레스하는 연속적인 저장 LBA 어드레스의 추가적인 블록을 할당하는 단계, 및 연속적인 저장 LBA 어드레스의 상기 블록이 완전히 프로그램된 경우에만 추가적으로 수신된 호스트 LBA 어드레스를 상기 추가적인 블록에 연속적으로 리매핑하는 단계를 포함한다. 상기 방법은 호스트 LBA 어드레스와 관련된 데이터가 연속적인 저장 LBA 어드레스에 리매핑됨에 따라 호스트 LBA 어드레스를 저장 LBA 어드레스에 매핑하는 상기 호스트 시스템에서 저장 어드레스 테이블을 생성하는 단계를 더 포함한다.
본 발명의 또 다른 양상에 따라, 재프로그램 가능한 비휘발성 대용량 저장 시스템에 데이터를 전송하는 호스트 시스템이 개시된다. 상기 호스트 시스템은 상기 대용량 저장 디바이스와 연통 가능하도록 구성되는 인터페이스 및 호스트 리매핑 모듈로부터의 명령어에 따라 상기 인터페이스를 통해 상기 대용량 저장 시스템에 데이터를 저장하도록 구성된 호스트 프로세서를 포함한다. 상기 호스트 리매핑 모듈은, 상기 호스트 프로세서가 상기 호스트 시스템의 상기 호스트 리매핑 모듈에서 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하고, 호스트 LBA 어드레스를 수신하기 위한 연속적인 저장 LBA 어드레스의 블록을 할당하며 (연속적인 저장 LBA 어드레스 블록은 할당시 미기록된 용량만을 어드레싱함), 연속적인 저장 LBA 어드레스의 블록에 수신 데이터에 대한 각각의 호스트 LBA 어드레스를 리매핑하고 (각각의 저장 LBA 어드레스는 수신 데이터가 호스트 LBA 어드레스와 관계없이 수신되는 순서로 연속적인 방법으로 수신 데이터로 연속적으로 할당됨), 연속적인 저장 LBA 어드레스 블록으로 리매핑된 수신 데이터와 할당된 저장 LBA 어드레스를 호스트 시스템으로부터 대량 저장 시스템으로 전송하도록 하는 프로세서 실행 가능 명령어를 포함한다.
본 발명의 또 다른 양상에 따라, 재프로그램 가능한 비휘발성 대용량 저장 시스템에 데이터를 전송하는 호스트 시스템이 개시된다. 상기 호스트 시스템은 상기 대용량 저장 시스템과 연통가능하도록 구성되는 인터페이스 및 호스트 리매핑 모듈로부터의 명령어에 따라 상기 인터페이스를 통해 상기 대용량 저장 시스템에 데이터를 저장하도록 구성된 호스트 프로세서를 포함한다. 상기 호스트 리매핑 모듈은, 상기 호스트 프로세서가 상기 호스트 리매핑 모듈에서 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하고, 호스트 시스템에서 연속적인 저장 LBA 어드레스 블록으로 수신된 순서로 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하며, 할당시 미기록된 용량과만 관련된 연속적인 저장 LBA 어드레스의 추가 블록을 할당하고, 연속적인 저장 LBA 어드레스 블록이 완전히 프로그래밍된 경우에만 추가 블록으로 추가 수신된 호스트 LBA 어드레스를 연속적으로 리매핑하도록 하는 프로세서 실행 가능한 명령어를 포함한다. 상기 호스트 리매핑 모듈의 상기 프로세서 실행가능 명령어는 상기 호스트 프로세서가, 상기 호스트 LBA 어드레스와 관련된 데이터가 연속적인 저장 LBA 어드레스에 리매핑됨에 따라 저장 LBA 어드레스에 호스트 LBA 어드레스를 매핑하는 호스트 시스템에서 저장 어드레스 테이블을 생성하도록, 배열된다.
본 발명의 또 다른 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법이 개시되고, 상기 방법은 상기 대용량 저장 시스템에 저장되는 호스트 파일 시스템에서 데이터를 수신하는 단계, 적어도 하나의 가용 호스트 LBA 어드레스를 갖는, 연속적인 호스트 LBA 어드레스의 제 1 블록이 상기 수신된 데이터와 관련되도록 할당하는 단계, 및 상기 수신된 데이터가 수신되는 순서에 따라 상기 수신된 데이터에 순차적으로 할당되는, 상기 제 1 블록 내의 가용 호스트 LBA 어드레스를 상기 수신된 데이터에 할당하는 단계를 포함한다. 상기 방법은 적어도 하나의 가용 호스트 LBA 어드레스를 갖는, 연속적인 호스트 LBA 어드레스의 제 2 블록을 할당하는 단계를 더 포함하고, 상기 제 2 블록은 상기 제 1 블록 내의 적어도 하나의 가용 호스트 LBA 어드레스의 각각을 관련시킨 후에만 할당된다.
또 다른 양상에 따라, 재프로그램 가능한 비휘발성 대용량 저장 시스템에 데이터를 전송하는 호스트 시스템이 개시된다. 상기 호스트 시스템은 상기 대용량 저장장치와 연통가능하게 구성되는 인터페이스 및 호스트 메모리로부터의 명령어에 따라 상기 인터페이스를 통해 상기 대용량 저장 시스템 상에 데이터를 저장하도록 구성된 호스트 프로세서를 포함한다. 상기 호스트 메모리는 상기 프로세서가, 상기 호스트 파일 시스템에서 수신된 데이터와 관련되도록 연속적인 호스트 LBA 어드레스의 제 1 블록을 할당하고, 상기 수신된 데이터가 수신되는 순서에 따라 상기 수신된 데이터에 순차적으로 할당되는, 상기 제 1 블록 내의 각각의 가용 호스트 LBA 어드레스를 상기 수신된 데이터에 할당하며, 상기 제 1 블록 내의 적어도 하나의 가용 호스트 LBA를 관련시킨 후에만 수신된 데이터와 관련되는 연속적인 호스트 LBA 어드레스의 제 2 블록을 할당하도록 하는 호스트 파일 시스템을 구현하기 위한 프로세서 실행가능 명령어를 포함한다.
또 다른 양상에서, 컴퓨터 판독가능 매체가 개시되고, 상기 매체는 데이터를 호스트 시스템에서 재프로그램 가능한 비휘발성 대용량 저장 시스템으로 전송하기 위한 컴퓨터 실행 가능한 명령어를 갖는다. 상기 컴퓨터 실행가능 명령어는 프로세서가, 상기 대용량 저장 시스템 상에 저장되는 호스트 파일 시스템에서 데이터를 수신하고, 상기 수신된 데이터와 관련되도록 연속적인 호스트 LBA 어드레스의 제 1 블록을 할당하며, 상기 수신된 데이터에 상기 제 1 블록 내의 각각의 가용 호스트 LBA 어드레스를 할당하는 단계를 실시하도록, 배열되고, 여기서 상기 각각의 가용 호스트 LBA 어드레스는 상기 수신된 데이터가 수신되는 순서에 따라 상기 수신된 데이터에 순차적으로 할당된다. 상기 컴퓨터 실행가능 명령어는 또한 상기 프로세서가, 상기 제 1 블록 내의 각각의 가용 호스트 LBA 어드레스를 관련시킨 후에만 수신된 데이터와 관련되는 연속적인 호스트 LBA 어드레스의 제 2 블록을 할당하는 단계를 실행하도록, 배열된다.
본 발명의 또 다른 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법이 개시되고, 상기 방법은 상기 호스트 시스템으로부터 상기 대용량 저장 시스템에서 호스트 LBA 어드레스와 관련된 데이터를 수신하는 단계를 포함한다. 상기 방법은 연속적인 물리적 어드레스를 갖는 기록 블록의 연속적인 물리적 어드레스 내에서, 호스트 LBA 어드레스 순서에 관계없이 수신된 데이터를 수신되는 순서에 따라 저장하는 단계, 상기 기록 블록이 완전히 프로그램된 경우에 상기 수신된 데이터를 저장하기 위해 다음 기록 블록으로서, 미기록 용량만을 포함하는 연속적인 물리적 어드레스의 블록을 포함하는 화이트 블록을 할당하는 단계, 및 상기 수신된 데이터에 대한 호스트 LBA 어드레스를 각각의 기록 블록 내의 물리적 어드레스에 매핑하는 저장 어드레스 테이블을 업데이트하는 단계를 포함하고, 여기서 상기 저장 어드레스 테이블은 물리적 어드레스 내의 적어도 하나의 블록 내에 유지된다. 상기 방법은 새로운 화이트 블록을 생성하는 단계를 더 포함하고, 상기 새로운 화이트 블록을 생성하는 단계는 복수의 핑크 블록에서 하나의 핑크 블록을 선택하는 단계를 포함하며, 여기서 상기 복수의 핑크 블록 각각은 유효 데이터 및 무용 데이터 모두를 갖는 완전히 프로그램된 물리적 어드레스의 연속적인 블록이며 상기 선택된 핑크 블록은 임계량보다 적은 유효 데이터를 갖는다. 상기 선택된 핑크 블록으로부터의 모든 유효 데이터는, 상기 선택된 핑크 블록으로부터 모든 유효 데이터 재배치시, 상기 선택된 핑크 블록이 새로운 화이트 블록이 되도록 재배치 블록에 재배치된다.
본 발명의 또 다른 양상에 따라, 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서의 데이터 전송 방법이 개시된다. 상기 방법은 호스트 시스템으로부터 대용량 저장 시스템에서 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하는 단계 및 호스트 LBA 어드레스 순서에 관계없이 연속적인 물리적 어드레스를 갖는 기록 블록의 연속적인 물리적 어드레스 내에, 수신된 순서에 따라 상기 수신된 데이터를 저장하는 단계를 포함한다. 상기 수신된 데이터에 대한 호스트 LBA 어드레스의 런은 저장 어드레스 테이블(SAT)의 단일 페이지 상의 물리적 어드레스의 적어도 두 개의 런으로 매핑되고, 여기서 상기 SAT는 상기 대용량 저장 시스템 내의 연속적인 물리적 어드레스의 적어도 하나의 블록으로 구성된다.
또 다른 양상에서, 재프로그램 가능한 비휘발성 대용량 저장 시스템 내에 미기록 용량만을 갖는 연속적인 물리적 어드레스의 블록을 생성하는 방법이 개시되고, 여기서 상기 대용량 저장 시스템은 연속적인 물리적 어드레스의 복수의 블록을 갖는다. 상기 방법은 상기 복수의 블록 내의 각 핑크 블록 내에 포함된 유효 데이터의 양을 결정하는 단계를 포함하고, 여기서 각각의 핑크 블록은 유효 데이터 및 무용 데이터 모두를 갖고 상기 결정된 유효 데이터의 양에 기초하여 상기 핑크 블록 중 하나를 선택하는 연속적인 물리적 어드레스의 완전히 프로그램된 블록을 포함한다. 상기 방법은 유효 데이터를 핑크 블록 중 선택된 하나로부터 재배치 블록 내의 연속적인 물리적 어드레스로 복사하는 단계를 더 포함하고, 여기서 상기 재배치 블록은 상기 핑크 블록 중 선택된 하나로부터의 유효 데이터를 연속적으로 재배치하는 연속적인 물리적 어드레스의 블록을 포함하며, 이때 상기 유효 데이터는 상기 유효 데이터에 관련된 호스트 LBA 어드레스에 관계없이 발생되는 순서에 따라 상기 핑크 블록 중 선택된 하나로부터 복사된다.
본 발명의 또 다른 양상에 따라 대용량 저장 메모리 시스템이 개시된다. 상기 대용량 저장 시스템은 함께 삭제가능한 메모리 셀의 복수의 블록 내에 배열된 재프로그램 가능한 비휘발성 메모리 셀, 호스트 LBA 어드레스와 관련된 호스트 시스템으로부터 데이터를 수신하는 인터페이스, 및 상기 인터페이스와 연통되는 제어기를 포함한다. 상기 제어기는 상기 호스트 시스템으로부터 데이터를 수신하기 위한 연속적인 물리적 어드레스의 제 1 블록을 할당하고 상기 수신된 데이터에 대한 각각의 호스트 LBA 어드레스를 연속적인 물리적 어드레스의 블록에 매핑시키도록 구성되고, 여기서 상기 수신된 데이터는 상기 수신된 데이터와 관련된 호스트 LBA 어드레스에 관계없이 상기 수신된 데이터가 수신되는 순서에 따라 연속적인 물리적 어드레스에 순차적으로 기록된다. 상기 호스트 제어기는 또한 연속적인 방식으로 추가적인 수신 데이터를 수신하고 할당시 미기록 용량만을 갖는 연속적인 물리적 어드레스의 제 2 블록을 할당하도록 구성되고, 여기서 상기 제어기는 연속적인 물리적 어드레스의 제 1 블록을 완전히 할당할 때에만 상기 제 2 블록에 데이터를 할당한다. 또한, 상기 제어기는 호스트 LBA 어드레스 및 물리적인 어드레스 위치와 관련된 상관 데이터를 생성하고 상기 상관 데이터를 상기 대용량 저장 메모리 시스템의 저장 어드레스 테이블 내에 저장하도록 구성되고, 여기서 상기 상관 데이터는 호스트 LBA 어드레스의 런과 관련된 데이터에 대응하는 물리적 어드레스의 하나 이상의 런에 호스트 LBA 어드레스의 각각의 런을 매핑한다.
본 발명의 또 다른 양상에 따라, 데이터가 연속적인 논리 어드레스 범위 내에서 논리 어드레스에 의해 식별되는 저장장치 내에서 데이터를 이동시키는 방법이 개시된다. 상기 방법은 연속적인 논리 어드레스 범위를 동일한 크기의 논리 어드레스의 연속적인 블록으로 분할하는 단계 및 상기 장치에 저장된 유효 데이터에 할당되는 적어도 하나의 논리 어드레스에 포함되는 논리 어드레스의 블록을 식별하는 단계를 포함한다. 상기 방법은 또한 논리 어드레스의 상기 블록에 포함되지 않은 적어도 하나의 논리 어드레스에 상기 유효 데이터를 리매핑하는 단계, 유효 데이터에 할당된 적어도 하나의 논리 어드레스에 관련된 상기 유효 데이터를 판독하는 단계, 및 상기 유효 데이터를 적어도 하나의 논리 어드레스에 기록하는 단계를 포함하여, 상기 식별된 블록은 유효 데이터에 할당되는 어드레스를 포함하지 않는다.
본 발명의 다른 특징 및 이점은 하기의 도면, 상세한 설명, 및 청구범위에 의해 명백해질 것이다.
본 발명은, 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템을 제공하는 효과를 갖는다.
도 1은 비휘발성 메모리를 구비하는 메모리 시스템에 연결된 호스트를 설명하는 도면.
도 2는 도 1의 비휘발성 메모리로 이용되는 예시적인 플래시 메모리 시스템의 일 예를 나타낸 블록도.
도 3은 도 2의 시스템에서 이용될 수 있는 메모리 셀 어레이의 대표적인 회로도.
도 4는 도 2의 시스템의 물리적 메모리 구성의 일 예를 설명하는 도면.
도 5는 도 4의 물리적 메모리의 일부를 확대 도시한 도면.
도 6은 논리 블록 어드레스(LBA) 어드레스 공간에 할당된 자유 클러스터의 일반적인 패턴을 도시한 도면.
도 7은 하나의 개시된 구현에 따른 블록에 의한 클러스터의 할당 패턴을 설명하는 도면.
도 8은 장치의 메모리 관리자가 저장 어드레스 리매핑 기능을 통합하는 메모리 드라이브와 호스트 사이의 저장 어드레스 리매핑의 구현을 설명하는 도면.
도 9는 도 8에 도시한 저장 어드레스 리매핑의 또 다른 구현을 설명하는 도면.
도 10은 호스트상에 기능성이 위치되는 저장 어드레스 리매핑의 구현을 설명하는 도면.
도 11은 도 10의 저장 어드레스 리매핑의 또 다른 구현을 설명하는 도면.
도 12는 클러스터 블록의 할당의 상태도.
도 13은 플래시 메모리가 바이너리 및 MLC 구획을 포함하는 경우 도 12의 상태도의 또 다른 구현을 나타낸 도면.
도 14는 도 9 및 10의 구현에서 사용가능한 연통된 DLBA 어드레스 공간 및 LBA어드레스 공간의 예를 나타낸 도면.
도 15는 호스트로부터 수신된 데이터에 대한 LBA 내지 DLBA 매핑의 예를 설명하는 도면.
도 16은 DLBA 어드레스 공간에서의 플러시 동작 및 물리적 어드레스 공간 내의 해당 업데이트 블록을 설명하는 도면.
도 17은 도 16의 플러시 동작 이후의 제 2의 플러시 동작을 설명하는 도면.
도 18은 호스트로부터의 데이터를 포함하는 블록에 대한 블록 플러시 프로세스를 설명하는 순서도.
도 19는 호스트 논리 어드레스가 제 2 논리 어드레스 공간에 리매핑된 배열 내의 저장 어드레스 테이블(SAT) 계층을 설명하는 도면.
도 20은 논리 대 논리 매핑의 추적이 이용되는 저장 어드레스 테이블(SAT) 기록 블록을 설명하는 도면.
도 21은 도 20의 SAT 테이블의 SAT 페이지에 이용하기 위한 LBA 입구를 나타낸 도면.
도 22는 도 20의 SAT 테이블의 SAT 페이지에 이용하기 위한 DLBA 입구를 나타낸 도면.
도 23은 도 20의 SAT 테이블의 SAT 페이지에 이용하기 위한 SAT 색인 입구를 나타낸 도면.
도 24는 도 9 및 10의 저장 어드레스 리매핑 기능에 이용하기 위한 저장 어드레스 테이블 번역절차를 설명하는 도면.
도 25는 네 개의 예시적인 시간에 LBA 및 DLBA 어드레스 공간에서의 데이터 기록 작업의 예를 설명하는 도면.
도 26은 SAT 블록 전환의 상태도.
도 27은 SAT 블록 플러시 순서를 결정하기 위한 프로세스의 순서도.
도 28은 블록 정보 테이블(BIT) 기록 블록을 설명하는 도면.
도 29는 호스트로부터 수신된 테이터의 물리적 어드레스 매핑에 대한 LBA의 예를 설명하는 도면.
도 30은 도 29에 도시한 데이터 분포에 기초한 물리적 어드레스 공간 내에서의 플러시 동작을 설명하는 도면.
도 31은 도 30의 플러시 동작 이후의 제 2의 플러시 동작을 설명하는 도면.
도 32는 호스트 논리 어드레스의 런이 데이터 런의 물리적 어드레스로 매핑되는 배열 내의 저장 어드레스 테이블(SAT) 계층을 설명하는 도면.
도 33은 논리 대 물리 매핑을 추적하는 데 이용되는 저장 어드레스 테이블(SAT) 기록 블록을 설명하는 도면.
도 34는 도 33의 SAT 테이블의 SAT 페이지에 이용하기 위한 LBA 입구를 나타낸 도면.
도 35는 도 33의 SAT 테이블의 SAT 페이지에 이용하기 위한 데이터 입구를 나타낸 도면.
도 36은 도 33의 SAT 테이블의 SAT 페이지에 이용하기 위한 SAT 색인 입구를 나타낸 도면.
도 37은 논리 어드레스의 완성 블록이 데이터 런에 매핑되는, 도 32 내지 36의 SAT의 또 다른 실시예를 설명하는 도면.
도 38은 도 11의 구성을 이용하는 시스템에서의 저장 어드레스 리매핑의 구현을 설명하는 도면.
본 발명의 기술 사상을 구현하는데 사용하기 적합한 플래시 메모리 시스템이 도 1 내지 6에 도시되어 있다. 도 1의 호스트 시스템(1)은 데이터를 플래시 메모리(2)에 저장 및 여기에서 데이터를 검색한다. 상기 플래시 메모리는 개인 컴퓨터에 설치된 솔리드 스테이트 디스크(SSD) 드라이브의 형태처럼 호스트 내에 내장될 수 있다. 또는 메모리(2)는 도 1에 도시한 바와 같이 기계 전기적 커넥터의 메이팅부(3,4)를 통해 호스트로 분리 가능하게 연결되어 있는 카드 형태일 수 있다. 내부 또는 내장 SSD 드라이브로 사용하도록 구성된 플래시 메모리는 도 1에 개략적으로 도시한 바와 유사할 수 있고, 이 때 주요한 차이는 호스트 내부의 메모리 시스템(2)의 위치이다. SSD 드라이브는 자기 디스크 드라이브를 회전시키기 위한 대체부품이 되는 개별 모듈의 형태일 수 있다.
상업적으로 이용 가능한 SSD 드라이브 중 한 가지 예로는, 샌디스크(SanDisk Coropration)에서 제조된 32 기가바이트의 SSD가 있다. 상업적으로 이용 가능한 이동식 플래시 메모리 카드의 예로는 컴팩트 플래시(CF), 멀티미디어 카드(MMC), 보안 디지털(SD), 소형 SD, 메모리 스틱, 스마트 미디어, 및 트랜스 플래시 카드를 포함한다. 이러한 카드들은 각각의 표준화된 상세에 따라 고유한 기계 및/또는 전기적 인터페이스를 구비하지만, 이들 각각에 포함된 플래시 메모리 시스템은 유사하다. 이러한 카드는 모두 본 발명의 권리자인 샌디스크로부터 구할 수 있다. 샌디스크는 또한 크루저 상표가 달린 일련의 플래시 드라이브 라인을 제공하고, 상기 플래시 드라이브는 호스트의 USB 소켓에 꽂아 호스트에 연결하기 위한 USB 플러그를 구비한 작은 패키지 형태의 손으로 잡을 수 있는 크기의(handheld) 메모리 시스템이다. 상기 메모리 카드와 플래시 드라이브는 각각 호스트와 접속하고 그 내부의 플래시 메모리의 동작을 제어하는 제어기를 포함한다.
SSD, 메모리 카드, 및 플래시 드라이브를 이용하는 호스트 시스템은 그 수가 많고 종류도 다양하다. 이들은 데스크탑 또는 랩탑 및 기타 휴대용 컴퓨터와 같은 개인 컴퓨터(PC), 휴대전화기, 개인 휴대 단말기(PDA), 디지털 스틸 카메라, 디지털 무비 카메라, 및 휴대용 오디오플레이어를 포함한다. 휴대용 메모리 카드 애플리케이션의 경우, 호스트는 하나 이상의 종류의 메모리 카드 및 플래시 드라이브용 내장 소켓을 포함할 수 있고, 또는 호스트는 메모리 카드를 꽂기 위한 어댑터가 필요할 수도 있다. 메모리 시스템은 보통 자신의 메모리 제어기 및 드라이버를 포함하지만, 개중에는 메모리가 연결되는 호스트에 의해 실행되는 소프트웨어에 의해 제어되는 기억만 가능한 시스템(memory-only system)도 있다. 제어기, 특히 호스트에 내장된 제어기를 포함하는 메모리 시스템의 경우, 메모리, 제어기, 및 드라이버는 주로 단일 집적회로칩 상에 형성된다.
도 1의 호스트 시스템(1)은 두 개의 주요 부품을 갖는 것으로 보일 수 있으며, 메모리(2)가 관계되는 한 회로와 소프트웨어의 조합으로 형성될 수 있다. 이들은 애플리케이션부(5) 및 메모리(2)와 접속하는 드라이버부(6)이다. PC의 경우, 예를 들면, 애플리케이션부(5)는, 호스트(1) 상의 데이터를 관리하기 위한 파일 시스템(10)은 물론 워드 프로세싱, 그래픽, 제어, 또는 기타 대중적인 애플리케이션 소프트웨어를 실행하는 프로세서(9)를 포함할 수 있다. 카메라, 휴대전화기, 또는 주로 단일 세트의 기능을 실시하는 기타 호스트 시스템에 있어, 애플리케이션부(5)는 카메라가 사진을 찍고 저장하도록 하고 휴대전화기 전화를 주고 받도록 하는 등의 작동을 시키는 소프트웨어를 포함한다.
도 1의 메모리 시스템(2)은 플래시 메모리(7), 데이터를 주고 받으며 메모리(7)를 제어하기 위해 카드가 연결되는 호스트와 접속되는 회로(8)를 포함한다. 제어기(8)는 일반적으로 데이터 프로그래밍 및 판독시 호스트(1)에 의해 이용되는 데이터의 논리 어드레스 및 메모리(7)의 물리적 어드레스 사이에서 전환된다.
도 2를 참고로 하여 도 1의 비휘발성 메모리(2)로 이용될 수 있는 전형적인 플래시 메모리 시스템의 회로를 설명한다. 시스템 제어기는 보통 시스템 버스(13) 상에서 하나 이상의 집적회로 메모리칩과 병렬로 연결되는 단일 집적회로칩(11) 상에서 구현되고, 도 2에 단일 메모리칩(15)이 도시되어 있다. 도시한 특정 버스(13)는 데이터를 수송하기 위한 개별적인 컨덕터(17) 세트, 메모리 어드레스용 세트(19), 및 제어 및 상태 신호용 세트(21)를 포함한다. 또는, 단일 세트의 컨덕터는 이러한 세 가지 기능 사이에서 시간을 공유할 수 있다. 또한, 시스템 버스의 다른 구성, 예를 들어 2004년 8월 9일자 미국특허출원 제 10/915,039호 "링버스 구조 및 플래시 메모리 시스템에서의 이의 이용(Ring Bus Structure and It's Use in Flash Memory Systems"에 기술된 링버스를 이용할 수 있다.
일반적인 제어기칩(11)은 인터페이스 회로(25)를 통해 시스템 버스(13)와 접속하는 내부 버스(23)를 구비한다. 버스에 정상적으로 연결된 주요 기능은 프로세서(27)(예를 들어, 마이크로프로세서 또는 마이크로제어기), 시스템을 초기화(부팅)하기 위해 코드를 포함하는 판독 전용 메모리 ROM(29), 주로 메모리와 호스트 사이에 전송되는 데이터를 버퍼링하기 위한 판독 전용 메모리 RAM(31), 및 상기 메모리와 호스트 사이의 제어기를 통과하는 데이터에 대한 오류정정코드(ECC)를 산출 및 확인하는 회로(33)이다. 제어기 버스(23)는 회로(35)를 통해 호스트 시스템에 접속하고, 이는 메모리 카드 내에 포함된 도 2의 시스템의 경우 커넥터(4)의 부품인 카드의 외부 접촉(37)을 통해 실시된다. 제어기(11)의 다른 구성요소의 각각에 클럭(39)이 연결되어 이들에 의해 이용된다.
시스템 버스(13)와 연결된 기타 부품은 물론, 메모리칩(15)은 다중 서브 어레이 또는 평면으로 구성된 메모리 셀의 어레이를 포함할 수 있고, 단순화를 위해 두 개의 평면(41,43)을 도시하였고, 넷 또는 여덟 개의 평면을 대신 이용할 수 있다. 또는, 메모리칩(15)의 메모리 셀 어레이는 평면으로 분할되지 않을 수도 있다. 그러나 이와 같이 분할된 경우, 각각의 평면은 독립적으로 작동이 가능한 열(column) 제어 회로(45,47)를 구비한다. 회로(45,47)는 시스템 버스(13)의 어드레스부(19)로 부터 각각의 메모리 셀 어레이의 어드레스를 수신하여 특정한 하나 이상의 각각의 비트라인(49,51)을 어드레스하기 위해 이들을 디코딩한다. 어드레스 버스(19) 상에서 수신된 어드레스에 따라 행 제어 회로(55)를 통해 워드 라인(53)이 어드레스 된다. p-웰 전압 제어 회로(61,63)과 마찬가지로 소스 전압 제어 회로(57,59)로 각각의 평면에 연결된다. 메모리칩(15)이 단일 메모리셀 어레이를 갖는 경우, 그리고 시스템 내에 이러한 칩이 둘 또는 그 이상 존재하는 경우, 각 칩의 어레이는 상기한 다중평면 칩 내에서 평면 또는 서브어레이와 유사하게 작동할 수 있다.
시스템 버스(13)의 데이터부(17)와 연결된 각각의 데이터 입/출력 회로(65,67)를 통해 평면(41,43)으로 및 평면(41,43)으로부터 데이터가 전송된다. 회로(65,67)는 각각의 열 제어 회로(45,47)를 통해 평면에 연결된 라인(69,71)을 통해, 메모리 셀에 데이터를 프로그래밍하고 각 평면의 메모리 셀로부터 데이터를 판독하기 위해 제공된다.
데이터를 프로그램하고, 데이터를 판독하며, 다양한 하우스키핑 문제를 삭제 및 다루기 위해 제어기(11)가 메모리칩(15)의 동작을 제어하지만, 각 메모리칩도 이와 같은 기능을 실시하기 위해 제어기(11)로부터의 명령을 실행하는 제어 회로를 포함한다. 시스템 버스(13)의 제어 및 상태부(21)에 인터페이스 회로(73)가 연결된다. 제어기로부터의 명령은 상태 기기(machine)(75)로 제공되고, 상태 기기는 상기 명령을 실행하기 위해 다른 회로의 특정 제어를 제공한다. 제어라인(77-81)은 도 2에 도시한 바와 같이 상기 다른 회로와 상태 기기(75)를 연결한다. 상태 기기(75)로부터의 상태정보는 라인(83) 상에서, 버스부(21) 상의 제어기(11)로의 전송을 위한 인터페이스(73)로 통신된다.
NOR과 같은 기타 아키텍쳐를 대신 사용할 수도 있지만 현재는 메모리 셀 어레이(41,43)의 NAND 아키텍쳐가 바람직하다. NAND 플래시 메모리 및 메모리 시스템의 일부로서의 이들의 동작에 대한 예는 미국특허 제 5,570,315, 5,774,397, 6,046,935, 6,373,746, 6,456,528, 6,522,580, 6,771,536, 및 6,781,877 및 미국특허출원공개 제 2003/0147278호를 참고로 하면 얻을 수 있다. 예시적인 NAND 어레이가 도 3의 회로도에 도시되어 있으며 이는 도 2의 메모리 시스템의 메모리 셀 어레이 41의 일부이다. 많은 글로벌 비트라인이 제공되며, 설명을 단순화하기 위해 도 2에서는 이와 같은 라인(91-94)이 네 개만 도시되어 있다. 직렬연결된 여러 개의 메모리 셀 문자열(string)(97-104)이 상기 비트라인 중 하나와 기준 포텐셜 사이에 연결되어 있다. 대표적으로 메모리 셀 문자열(99)을 사용하고 복수의 전하 저장 메모리 셀(107-110)이 상기 문자열의 끝에서 선택 트랜지스터(111,112)와 직렬로 연결된다. 문자열의 선택 트랜지스터가 도전성을 갖는 경우, 상기 문자열은 비트라인과 기준 포텐셜 사이에 연결된다. 이후 상기 문자열 내의 하나의 메모리 셀이 한 번에 프로그램되거나 판독된다.
도 3의 워드 라인(115-118)은 메모리 셀의 여러 개의 문자열 각각의 하나의 메모리 셀의 전하 저장 요소를 지나 개별적으로 연장되고, 게이트(119,120)는 상기 문자열의 각 단부의 선택 트랜지스터의 상태를 제어한다. 공통 워드 및 제어 게이트라인(115-120)을 공유하는 메모리 셀 문자열은 함께 지워지는 메모리 셀의 블록(123)을 형성하도록 만들어진다. 상기 셀의 블록은 물리적으로 한 번에 지울 수 있는 최소한의 셀을 포함한다. 메모리 셀 중 한 행, 즉 워드 라인(115-118) 중 하나의 성분들은 한 번에 프로그램된다. 일반적으로 NAND 어레이의 행은 소정의 순서로 프로그램되고, 이 경우 접지 또는 다른 공통 포텐셜에 연결된 문자열의 단부에 가장 가까운 워드 라인(118)의 행으로부터 시작된다. 워드 라인(117)의 메모리 셀의 행이 다음에 그리고 나머지가 블록(123) 전체에 걸쳐 프로그램된다. 워드 라인(115)의 행은 마지막으로 프로그램된다.
제 2 블록(125)도 유사하게, 메모리 셀의 문자열은 제 1 블록(123)의 문자열과 마찬가지로 동일한 글로벌 비트라인에 연결되지만 다른 워드 및 제어 게이트라인 세트를 갖는다. 상기 워드 및 제어 게이트라인은 행 제어 회로(55)에 의해 적절한 작동 전압으로 구동된다. 도 2의 평면(1,2)과 같이 시스템에 하나 이상의 평면 또는 서브어레이가 있는 경우, 하나의 메모리 아키텍쳐는 그들 사이에서 연장되는 공통 워드 라인을 이용한다. 또는 공통 워드 라인을 공유하는 둘 이상의 평면 또는 서브어레이가 있을 수 있다. 기타 메모리 아키텍쳐에서, 개별적인 평면 또는 서브어레이의 워드 라인은 단독적으로 구동된다.
상기 참고로 언급한 여러 개의 NAND 특허 및 공개문헌에 기술된 바와 같이, 메모리 시스템은 둘 이상의 검출가능한 레벨의 전하를 각 전하 저장 요소 또는 영역에 저장하도록 작동할 수 있어, 각각에 1비트 이상의 데이터를 저장한다. 메모리 셀의 전하 저장 요소 대부분 도전성 플로팅 게이트이지만, 미국특허출원공개 제 2003/0109093호에 기술된 바와 같이, 비도전성 절연 전하 포획재(non-conductive dielectric charge trapping material)일 수도 있다.
도 4는 아래에 기술하는 일 예로서 이용되는 플래시 메모리 셀 어레이(7)(도 1)의 구성을 개념적으로 설명하고 있다. 메모리 셀의 네 개의 평면 또는 서브어레이(131-134)가 단일 집적 메모리 셀 칩, 두 개의 칩(각 칩 상의 평면 중 둘), 또는 네 개의 독립적인 칩 상에 형성될 수 있다. 아래에 기술하는 내용에서 특정 배열은 중요하지 않다. 물론, 다른 수의 평면, 예를 들어 하나, 둘, 여덟, 열 여섯, 또는 그 이상 평면이 시스템 내에 존재할 수도 있다. 상기 평면은 각각의 평면(131-134)에 위치된 사각형에 의해 도 4에 도시한 메모리 셀의 블록, 예를 들어 블록(137, 138, 139, 140)으로 개별적으로 분할된다. 수십 또는 수백 개의 블록이 각 평면에 있을 수 있다.
상기한 바와 같이, 메모리 셀의 블록은 삭제 단위, 즉 물리적으로 함께 삭제가능한 최소한의 메모리셀이다. 그러나 병렬성(parallelism)이 증가하는 경우, 상기 블록은 보다 큰 메타블록 단위로 작동한다. 각 평면의 하나의 블록은 메타블록을 형성하도록 서로 논리적으로 연결된다. 하나의 메타블록(141)을 형성하기 위해 네 개의 블록(137-140)이 도시되고 있다. 메타블록 내의 모든 셀은 일반적으로 함께 삭제된다. 메타블록을 형성하기 위해 이용되는 블록은 블록(145-148)으로 이루어진 제 2 메타블록(143)에 도시된 바와 같이 각 평면 내의 동일한 상대적 위치에 제한될 필요는 없다. 보통 메타블록은 모든 평면을 지나도록 연장되는 것이 바람직하지만, 높은 시스템 성능을 위해서는, 다른 평면에 임의의 또는 하나, 둘 또는 세 개의 블록 모두의 메타블록을 동적으로 형성할 정도로 작동할 수 있다. 이는 메타블록의 크기가 한 번의 프로그래밍 작업으로 저장가능한 데이터의 양에 보다 가까워지도록 한다.
이후, 상기 개별 블록은 도 5에 도시한 바와 같이 작업 목적을 위해 메모리 셀의 페이지로 분할된다. 예를 들어, 블록(137-140)의 메모리 셀은 각각 여덟 페이지(P0-P7)로 분할된다. 또는, 각 블록에 열 여섯, 서른둘, 또는 그 이상의 메모리 셀 페이지가 있을 수 있다. 상기 페이지는 블록 내의 데이터 프로그래밍 및 판독 단위이며, 한 번에 프로그램되거나 판독되는 최소량의 데이터를 포함한다. 도 3의 NAND 아키텍처에 있어, 하나의 페이지는 블록 내의 워드 라인의 메모리셀로 형성된다. 그러나 메모리 시스템 작동 병렬성을 증가시키기 위해, 둘 또는 그 이상의 블록 내의 페이지가 메타페이지로 논리적으로 연결된다. 도 5에 메타페이지(151)가 도시되어 있고, 이는 상기 네 개의 각 블록(137-140)의 하나의 물리적 페이지로 형성된다. 예를 들어, 메타페이지(151)는 상기 네 개의 블록 각각에 페이지(P2)를 포함하지만, 메타페이지의 페이지는 각 블록 내에서 동일한 상대적 위치를 가질 필요는 없다. 메타페이지는 프로그래밍에 있어서의 최대 단위이다.
도 6에 도시한 호스트(1)와 메모리 시스템(2) 사이의 공통 논리 인터페이스는 메모리 시스템(2)에 저장될 수 있는 모든 데이터에 대한 어드레스를 제공하기에 충분히 큰 연속적인 논리 어드레스 공간(160)을 이용한다. 상기 호스트(1) 및 메모리 시스템(2)을 참고하면, 플래시 메모리(7)에 저장할 데이터는 일반적으로 논리 블록 어드레스(LBA) 포맷으로 수신된다. 호스트 어드레스 스페이스는 일반적으로 에이터 클러스터의 증가분(increment)으로 분할된다. 각 클러스터는 주어진 호스트 시스템 내의 보통 4 내지 64개의 섹터 사이의 임의의 위치에 여러 개의 데이터 섹터를 포함하도록 설계된다. 표준 섹터는 512 바이트의 데이터를 포함한다. 도 6을 보면, NTFS 파일 시스템용 논리 어드레스 공간(160) 내의 할당된 클러스터(162)와 자유 클러스터(164)의 전형적인 패턴이 도시되어 있다.
도 6에 도시한 논리 어드레스 공간(160)의 단편화를 어드레싱하기 위한 구성 구조가 도 7에 도시되어 있다. 여기서 설명하는 저장 어드레스 리매핑을 위한 시스템 및 방법은 아래에 전반적으로 "블록"이라 언급하는 클러스터(166) 블록의 측면에서 LBA 어드레스를 할당한다. 기록작업은 항상 데이터를 개별적인 블록(166)에 기록하고 다음 가용 블록으로 진행하기 전에 블록(166)을 데이터로 완전히 채움으로써 처리된다. 하기에, 유효 데이터로 완전히 채워진 블록(166)을 레드 블록(168)이라 하고, 반면 유효 데이터가 없고 따라서 미기록 용량만을 포함하는 블록은 화이트 블록(170)이라 한다. 메모리 시스템이 "사용 후 삭제"형 절차를 사용한다면 화이트 블록(170) 내의 미기록 용량은 삭제된 상태일 수 있다. 또는 메모리 시스템이 "사용 전 삭제"형 절차를 사용한다면 화이트 블록(170) 내의 상기 미기록 용량은 할당시 삭제할 필요가 있는 무용 데이터로 구성될 수 있다. 완전히 프로그램되어 유효(162) 및 무효(164)(또한 무용이라고도 함) 데이터 클러스터를 갖는 블록은 핑크 블록(172)이라 한다.
논리 어드레스 블록의 측면에서 논리 어드레스 공간(160)을 분할 및 관리하기 위해, 호스트와 메모리 시스템은 플래시 메모리 내의 물리적 블록의 블록 크기에 관한 정보를 교환할 필요가 있을 수 있다. 논리 블록의 크기는 바람직하게는 물리적 블록의 크기와 동일하고 이러한 정보는 메모리 시스템이 호스트와 연결될 경우에 통신된다. 이러한 통신은 메모리 시스템의 호스트로의 연결 상에서 또는 강화할 때 핸드셰이킹으로 일어나도록 설정될 수 있다. 일 실시예에서, 상기 호스트는 블록 크기 및 정렬 정보를 요청하는 메모리 시스템으로 "드라이브 식별(Identify Drive)" 질문을 전송할 수 있고, 이때 블록 크기는 특정 메모리 시스템에 대한 개별적인 물리적 블록의 크기이고 상기 정렬 정보는, 만약 있다면, 물리적 블록의 시작으로부터의 오프셋이 각 물리적 블록 중 일부를 이미 취한 시스템 데이터를 위해 고려해야할 필요가 있다는 것을 의미한다.
상기 드라이브 식별 명령은 레거시 LBA 인터페이스 명령 세트 내의 예비 코드로서 구현될 수 있다. 상기 명령은 표준 통신 인터페이스 내의 예비 또는 미할당 명령 코드를 통해 호스트로부터 메모리 시스템으로 전송될 수 있다. 적절한 인터페이스의 예로는 솔리드 스테이트 디스크용 ATA 인터페이스 또는 ATA 관련 인터페이스, 예를 들면 CF 또는 SD 메모리 카드에 사용되는 것들을 포함한다. 만약 메모리 시스템이 블록 크기와 오프셋 정보 모두를 제공하지 못한 경우, 호스트는 초기 블록 크기 및 오프셋을 추정할 수 있다. 만약 메모리 시스템이 오프셋 정보는 없이 블록 크기 정보만을 포함하는 드라이브 식별 명령에 응답하는 경우, 호스트는 초기 오프셋을 추정할 수 있다. 상기 초기 블록 크기는 여러 개의 표준 블록 크기 중 어느 것일 수 있고, 가능한 실제 물리적 블록 크기보다 크게 설정되는 것이 바람직하다. 상기 초기 오프셋은 각 물리적 블록이 물리적 블록 내의 제 1 어드레스에서 시작하는 호스트로부터 데이터를 수신할 수 있도록 0 오프셋으로 설정될 수 있다. 상기 호스트가 소정의 내부 드라이브, 예를 들어 SSD 와 연결된 경우, 메모리 디바이스의 성능이 이미 알려져 있고 미리 프로그램되어 있기 때문에 블록 크기 및 오프셋을 결정하는 단계를 수행할 필요가 없을 수도 있다. 그러나 내부 드라이브도 교체할 수 있기 때문에, 상기 호스트는 항상 메모리 디바이스 성능을 확인하도록 구성될 수 있다. 이동식 메모리 시스템의 경우, 호스트는 드라이브 식별 명령 또는 유사한 메커니즘을 통해 블록 크기 및 오프셋을 항상 문의할 수 있다.
여기서 기술하는 클러스터의 자유 블록(166)에 할당 및 기록하기 위한 시스템 및 방법은 호스트 시스템과 메모리 시스템 사이의 많은 다른 조합에 분포된 하드웨어 또는 기능성을 포함할 수 있다. 도 8 내지 11은 클러스터의 블록 할당을 실시하는 저장 어드레스 매핑 또는 리매핑 알고리즘이 호스트 및 솔리드 스테이트 저장장치 내에 파일을 포함하는 시스템의 계층 내에서 네 개의 다른 레벨로 구현되는 방법에 관한 예를 도시하고 있다.
도 8 및 9의 배열은 저장 어드레스 매핑 또는 리매핑 기능성이 저장장치(176,178)에 완전히 포함된 경우의 실시예이다. 첫 번째는 두 배열에서, 저장장치(176,178)는 호스트(174)에 요구되는 수정 없이 레거시 호스트(174)와 작동할 수 있다. 반대로, 도 10 및 11에 도시한 배열은 저장 어드레스 매핑 또는 리매핑 기능성이 호스트(180,182)에 완전히 포함된 경우의 실시예이다. 상기 나중의 두 실시예에서, 호스트(180,182)는 수정이 필요치 않은 레거시 저장장치(184)와 함께 작동할 수 있다.
도 8의 예에서, 저장 어드레스 매핑 알고리즘은 저장장치(176)의 메모리 관리(177)에 통합될 수 있고, 이때 호스트(174)로부터의 LBA 어드레스는 물리적 메모리의 제 1 블록이 다음 블록으로 진행하기 전에 데이터로 완전히 채워지도록 플래시 메모리 내의 물리적 블록에 직접 매핑된다. 또는, 도 9에서, 저장 어드레스 리매핑 메커니즘은 장치(178)용 메모리 관리자(179)와 별개로 저장장치(178) 내에서 구현될 수 있다. 도 9의 구현시, 호스트(174)로부터의 각 논리 어드레스는 완전한 블록(166)의 측면에서 데이터를 기록하는 기술을 이용하여 제 2 논리 어드레스로 리매핑되고, 이는 여기서 저장 논리 블록 어드레스(저장 LBA) 또는 장치 논리 블록 어드레스(DLBA)라고도 하며, 이후 메모리 관리자(179)는 물리적 메모리 블록의 DLBA 배열 하에서 구성된 데이터를 번역하게 된다. DLBA 어드레스 공간은 물리적 메타블록과 동일하게 균일한 크기의 DLBA 블록으로 구조된다. 도 10의 구현 예는 저장 어드레스 리매핑의 기능성을 저장장치(184)에서 호스트(180) 상의 애플리케이션으로 이동시킨다. 이러한 구현 예에서, LBA 어드레스를 DLBA 어드레스로 매핑하는 기능은 도 9에 도시한 바와 유사하고, 이때 주요한 차이점은 번역이 메모리 디바이스(184)가 아닌 호스트(180) 상에서 일어난다는 것이다. 호스트(180)는 이후 DLBA 어드레스와 관련된 데이터와 함께 호스트에서 발생된 DLBA 어드레스 정보를 메모리 디바이스(184)로 전송한다. 마지막으로, 호스트 운영 시스템(182) 내의 데이터 할당 배열이 도 11에 도시되어 있다. 이와 같은 마지막 구현 예에서, WINDOWS XP 또는 VISTA 운영 시스템 내의 NTFS 파일 시스템과 같은 호스트(182)의 파일 시스템(185)은 논리 어드레스 대 논리 어드레스 중간번역 없이 클러스터의 완성된 논리 블록의 측면에서 저장 어드레스를 생성하도록 정렬될 수 있다. 따라서, 도 11의 구현 예는 추가적인 블록을 채우기 시작하기 전에 완성된 블록을 채우도록 LBA 어드레스가 최초로 생성되게 하기 위해 호스트 파일 시스템 내에 수정된 알고리즘을 포함한다.
도 8 내지 11의 임의의 배열에서, 화이트 블록(170)은 데이터 기록을 위한 단독 위치로서 할당되고, 호스트에 의해 제공되는 순서로 기록 포인터의 현재 위치에서 순차적으로 데이터로 채워진다. 저장 어드레스의 블록이 유효 데이터로 완전히 할당되면, 이는 레드 블록(168)이 된다. 파일이 호스트에 의해 삭제되거나 파일의 일부가 호스트에 의해 업데이트되는 경우, 레드 블록(168) 내의 일부 어드레스는 더 이상 유효 데이터로 할당되지 않게 되고, 따라서 상기 블록은 핑크 블록(172)이 된다. 여기서 매우 자세히 기술하는 바와 같이, 호스트로부터 데이터를 수신하도록 할당된 화이트 블록(170)을 기록 블록이라하고 플러시 동작시 데이터를 수신하도록 할당된 화이트 블록은 재배치 블록이라 한다. 다른 목적을 위해 다중 기록 포인터를 정의할 수 있다. 예를 들어, 다른 애플리케이션에서, 논리 어드레스 공간은 어드레스 범위 또는 파일 크기에 기초하여 다중 연속 범위로 세분될 수 있다. 논리 어드레스 공간의 각각의 개별 범위는 저장 어드레스 공간 내에 기록 블록 및 관련된 기록 포인터를 구비하도록 구성될 수 있다. 런 순서 또는 파일 크기뿐만 아니라, 논리 어드레스 공간의 분할은 데이터의 종류에 기초하여 구현될 수 있다. 예를 들면, 자주 업데이트되지 않는 데이터로부터 주로 업데이트 되는 NTFS MFT 테이블 데이터를 분리하는 요구가 있을 수 있다.
저장 어드레스 리매핑 알고리즘은 핑크 블록(172)으로부터의 유효 데이터를 재배치 포인터로 알려진 특정 기록 포인터로 재배치한다 (여기서는 플러싱이라고도 함). 저장 어드레스 공간이 상기한 바와 같이 범위 또는 파일 크기에 의해 세분되는 경우, 저장 어드레스의 각 범위는 재배치 블록 및 관련 재배치 포인터를 구비할 수 있다. 플러시 작업은 보통 예비작업(background operation)으로서 핑크 블록을 레드 블록 및 화이트 블록으로 변환하기 위해 실시된다. 핑크 블록은 그 특징에 따라 플러시 작업을 위해 선택된다. 도 7을 참고로 하면, 한 구현 예에 있어서, 가장 적은 유효 데이터를 갖는 핑크 블록(즉, 도 7에서 음영 클러스터가 가장 적은 부분)이 선택되는데, 이는 유효 데이터를 갖는 적은 어드레스가 이러한 특정 핑크 블록이 플러시될 때 재배치가 필요한 데이터를 적게 하기 때문이다. 그러므로, 도 7의 예에서, 핑크 블록(B)이 유효 데이터를 갖는 적은 어드레스를 갖기 때문에 핑크 블록(A)보다는 핑크 블록(B)이 선택된다. 다른 구현 예에서, 플러시 동작을 위해 선택된 핑크 블록이 임의의 임계량의 유효 데이터보다 적게 관련된 핑크 블록의 그룹 중 하나일 수 있다. 상기 임계치는 전체 핑크 블록 세트에 포함된 유효 데이터의 평균량보다 적을 수 있다. 상기 임계량의 유효 데이터 또는 이보다 적은 핑크 블록의 하위 집합은 호스트 또는 메모리 시스템이 핑크 블록을 선택하는 기준이 되는 리스트에 유지될 수 있다. 예를 들면, 현재 임계 요구를 만족시키는 소정의 수의(예를 들어, 열 여섯) 또는 퍼센트의(예를 들어, 30%) 핑크 블록의 동적 리스트가 유지될 수 있고 임의의 핑크 블록이 상기 리스트 내의 선택된 핑크 블록이 절대적으로 가장 적은 양의 유효 데이터를 갖는지에 관계없이 플러시를 위한 리스트로부터 선택될 수 있다. 상기 메모리 시스템 또는 호스트가 선택할 리스트를 형성하는 핑크 블록의 수 또는 퍼센트는 고정된 값이나 사용자가 선택 가능한 값일 수 있다. 상기 리스트는 가용 핑크 블록으로부터 절대적으로 가장 적은 양의 유효 데이터를 갖는 핑크 블록을 분류된 순서로 나타내는 핑크 블록의 그룹을 포함하거나, 혹은 단순히 상기 임계 요구로 떨어지는 핑크 블록을 포함할 수 있다.
또한, 조합에서, 특정 핑크 블록(172) 내에 추가적인 무용 데이터를 축적할 수 있는 계산된 데이터에 기초하여 핑크 블록을 선택할 수 있다. 그 이상의 무용 데이터가 핑크 블록(172)에 축적될 수 있는 가능성은 상기 메모리에 가장 오래 남아 있는 데이터가 삭제될 가능성이 가장 적다는 가정에 기초할 수 있다. 그러므로, 재배치 블록인 핑크 블록(172)은 새로운 호스트 데이터를 갖는 기록 블록이었던 핑크 블록(172)보다 오래 존재하는 데이터를 포함한다. 플러싱을 위해 핑클 블록(172)을 선택하는 과정은 최근 재배치된 블록인 핑크 블록(172)을 목표로 하는데, 이는 이들이 삭제된 데이터를 적게 갖고 있을 가능성이 크기 때문이며, 따라서, 보다 적은 추가적인 무용 데이터를 기대할 수 있다. 전에 기록 블록이었던 핑크 블록(172)은 새로운 데이터가 삭제될 가능성이 커서 무용 데이터를 더욱 많이 생성할 것이라는 가정에 기초하여 이후의 플러싱을 위해 선택된다.
도 12에는 저장 어드레스 리매핑 알고리즘 내에서의 데이터의 흐름 및 블록 상태 변화의 패턴이 도시되어 있다. 상기한 바와 같이, 저장 어드레스 리매핑 기술은 클러스터의 블록측면에서 어드레스 공간을 할당하고 다른 클러스터 블록을 할당하기 전에 클러스터 블록(166)을 채운다. 이는 우선 화이트블록을 호스트로부터의 데이터가 기록되는 현재 기록 블록이 되도록 할당함으로써 이루어질 수 있고, 이때 상기 호스트로부터의 데이터는 수신하는 시간에 따라 연속적인 순서로 기록 블록에 기록된다(단계 188). 현재 기록 블록의 마지막 페이지가 유효 데이터로 채워지는 경우, 현재 기록 블록은 레드 블록이 되고(단계 190) 상기 화이트 블록 리스트로부터 새로운 기록 블록이 할당된다. 물론 현재 기록 블록이 완전히 프로그램되기 전에 현재 기록 블록 내의 몇 페이지가 이미 사용될 수 없다면 상기 현재 기록 블록은 핑크 블록으로 직접 전환을 할 수 있다. 이러한 전환은 도시하지는 않았지만 명확하게 하기 위해 기록 블록으로부터 핑크 블록으로의 화살표로 나타낼 수 있다.
도 12의 데이터 흐름에 대한 특정 예를 다시 참고하면, 레드 블록 내의 하나 이상의 페이지가 LBA 런의 삭제에 의해 무용화되는 경우, 상기 레드 블록은 핑크 블록(단계 192)이 된다. 저장 어드레스 리매핑 알고리즘이 화이트 블록이 더 필요하다는 것을 검지한 경우, 상기 알고리즘은 핑클 블록이 화이트 블록이 되도록 핑크 블록으로부터 유효 데이터를 이동시키기 위해 플러시 동작을 초기화 한다(단계 194). 핑크 블록을 플러시하기 위해, 핑크 블록의 유효 데이터는 재배치 블록으로 표시된 화이트 블록으로 순차적으로 재비치된다(단계 194' 및 196). 재배치 블록이 채워지면 레드 블록이 된다(단계 198). 상기 기록 블록에 관련하여 위에 언급한 바와 같이, 그 내부의 일부 페이지가 이미 무용화된 경우 재배치 블록은 또한 핑크 블록으로 직접 전환을 하게 된다. 이러한 전환을 도시하지는 않았지만, 명확하게 하기 위해 도 12에서 재배치 블록으로부터 핑크 블록으로의 화살표로 나타낼 수 있다.
도 13은 저장 어드레스 리매핑 기능성이 바이너리 파티션(200) 및 다중 레벨 셀(MLC) 파티션(201)을 갖는 플래시 메모리에 적용된 경우의 데이터 흐름의 또 다른 예를 도시하고 있다. MLC 파티션(200)의 블록 상태 변화는 도 12에서와 같지만, 바이너리 파티션(200)의 블록 상태 변화(단계 202-205)는 MLC 파티션(201)과 다르다. 바이너리 파티션(200)에서, 호스트로부터 수신된 데이터는, 채워져서 레드 블록이 되기 전까지 순차적으로 기록되는 기록 블록에서 수신된다(단계 202). 만약 레드 블록의 페이지가 무용화되면, 상기 블록은 핑크 블록이 된다(단계 203). 새로운 화이트 블록을 생성하기 위해 핑크 블록이 여기서 기술하는 바와 같이 플러시되고(단계 204), 상기 화이트 블록은 이후 상기 바이너리 파티션에서 새로운 기록 블록으로 할당된다 (단계 205). 그러나, 레드 블록으로부터의 유효 데이터는 물론, 바이너리 파티션(200) 내의 핑크 블록으로부터의 유효 데이터는 MLC 파티션(201)으로 전송된다.
도 13에 도시한 바와 같이, 플래시 메모리(7)가, 호스트로부터 데이터를 수신하기 위해 캐시기능을 하는 바이너리 파티션(200) 및 상기 바이너리 파티션으로부터 데이터를 수신하는 주저장 영역 기능을 하는 MLC 파티션(201)을 갖는 2단 시스템(two-tier system)으로 분할되는 메모리 시스템(2)에 있어, 도 8 내지 11의 호스트는 바이너리 파티션이다. 그러므로, 여기서 기술하는 저장 어드레스 리매핑 기술은 메모리 시스템(2)의 단 내의 동작에 관련이 있을 수 있고, 여기서 이전의 단, 본 예에서, 상기 바이너리 파티션(200)은 호스트이고 현재 단, 여기서 상기 MLC 파티션(201)은 저장장치이다. 이러한 관계는 2단 배열 이상을 갖는 메모리 시스템으로 연장될 수 있고, 여기서 선행 단은 호스트와 유사하고 현재 단은 저장장치로 취급된다. 바이너리 및 MLC 파티션을 이용하는 다른 실시예에서, 호스트(1)는 바이너리 파티션(200)을 거칠 필요 없이 MLC 파티션(201)에 직접 기록할 수 있다.
도 9 및 10에 도시한 저장 어드레스 리매핑의 구현 예를 참고하면, 논리 대 논리, LBA 대 DLBA, 번역은 저장장치(도 9) 또는 호스트(도 10) 상의 애플리케이션에 의해 실행되고, 도 12의 상태도에 따른 어드레스 조작의 상세한 예는 도 14 내지 17을 참고로 하여 이제부터 기술한다. 시스템은 도 12에 의해 표시되는 저장 어드레스 리매핑 알고리즘에 따라 작동하고 있다고 가정하면, 소정 시간에서의 LBA 어드레스 공간(208)의 호스트 자유 클러스터 맵 및 DLBA 어드레스 공간(210)의 자유 클러스터 맵의 가설 섹션은 도 14에 도시한 바와 같이 나타낼 수 있다. LBA 어드레스 공간(208)에서, 자유 클러스터(164)는 무작위의 위치로 분산될 수 밖에 없다. DLBA 어드레스 공간(210)에서, 두 개의 화이트 블록(170)은 이용 가능하고, 다른 수의 무용(자유) 클러스터(164)를 갖는 세 개의 핑크 블록(172)이 있다.
다음으로, 다음 호스트가 저장 장치에 기록할 데이터를 갖는 경우, 상기 호스트는 이용 가능한 어떤 장소든 LBA 어드레스 스페이스를 할당한다. 도 15는 저장 어드레스 리매핑 알고리즘이 가용 화이트 블록(170) 중 하나가 기록 블록(212)이 되도록 할당하는 방법 및 화이트 블록(212) 내에 이용 가능한 DLBA 공간의 연속 클러스터에 각 LBA 어드레스가 매핑되는 방법을 도시하고 있다. DBLA 공간 내의 기록 블록(212)은 LBA 어드레스 위치에 관계없이 LBA 어드레스가 기록된 순서에 따라 기록된다. 본 예에서, 호스트가 자유 LBA 클러스터를 이용하는 시간순서는 도시하기에 용이한 어드레스 순서와 동일하지만 상기 저장 어드레스 리매핑 알고리즘은 LBA 어드레스 번호 순서에 관계없이 LBA 어드레스가 이용되는 시간순서로 DLBA 어드레스를 기록 블록(212)에 할당하게 된다. 하나 또는 DLBA의 런시 기록 블록에 데이터가 기록된다. DLBA 런은 LBA 런과 동일하게 연속적인 LBA 어드레스에 매핑되는 연속적인 DLBA 어드레스의 세트이다. DLBA 런은 DLBA 어드레스 공간(210) 내의 블록 경계선에서 종결되어야 한다. 기록 블록(212)이 채워지면, 화이트 블록(170)은 다음 기록 블록(212)으로서 할당된다.
DLBA 블록이 플래시 메모리의 물리적 어드레스 공간에서 블록(214)에 정렬됨에 따라, DLBA 블록 크기 및 물리적 어드레스 블록 크기가 같게 된다. DLBA 기록 블록(212) 내의 어드레스 배열 또한 물리적 어드레스 공간 내의 해당 업데이트 블록의 배열과 같게 된다. 이러한 대응관계로 인해, 물리적 업데이트 블록 내에서는 일반적으로 가비지 컬렉션이라고 하는 개별적인 데이터 통합이 필요치 않게 된다. 일반적인 가비지 컬렉션 동작시, 논리 어드레스의 블록은 보통 논리 블록 내에 특정 범위의 LBA 어드레스를 유지하기 위해 항상 재조립되고, 이는 또한 물리적 블록에도 반영된다. 특히, 일반적인 가비지 컬렉션 동작을 이용하는 메모리 시스템이 특정 물리적 블록 내의 섹터에 대응하는 정보의 업데이트 섹터를 수용하는 경우, 상기 메모리 시스템은 업데이트된 섹터 또는 섹터들을 수용하기 위해 물리적 메모리 내에 업데이트 블록을 할당한 후 원래 물리적 블록으로부터의 나머지 유효 데이터 모두를 상기 업데이트 블록의 나머지로 통합한다. 이러한 방식으로, 표준 가비지 컬렉션은 특정 어드레스 범위에 대응하는 데이터가 항상 공통 물리적 블록 내에 통합되도록 특정 LBA 어드레스 범위에 대해 데이터 블록을 보존시킬 것이다. 아래에 보다 자세히 기술하는 플러시 동작은 동일 어드레스 범위에 데이터를 통합할 필요가 없다. 대신, 여기서 개시하는 플러시 동작은 다양한 물리적 블록으로부터의 데이터 컬렉션이 될 수 있는 새로운 데이터 블록을 형성하기 위해 어드레스 매핑(도 8 및 11의 구현 예) 또는 리매핑(도 9 및 10의 구현 예)을 수행한다.
상기한 바와 같이, 저장 어드레스 리매핑 알고리즘은 순차적인 기록 알고리즘을 작동시키기에 충분한 화이트 블록이 공급될 수 있는지를 확보하도록 작동한다. 상기 저장 어드레스 리매핑 알고리즘은 데이터를 핑크 블록으로부터 재배치 블록(216)으로 알려진 특정 기록 블록으로 플러시함으로써 화이트 블록의 생성을 관리한다(도 16). 플러싱을 위해 현재 선택된 핑크 블록을 플러시 블록이라 한다.
도 15 및 16을 참고 하면, 블록 플러시 과정이 도시되어 있다. 저장 어드레스 리매핑 알고리즘은 재배치 블록(216)으로서 화이트 블록을 지정하고, 여기서 추가 화이트 블록을 생성하기 위해 선택된 핑크 블록으로부터 데이터가 플러시 된다. 레드 데이터라고도 하는 플러시 블록(도 15의 핑크 블록(A)) 내의 유효 데이터는 상기 플러시 블록을 화이트 블록(170)으로 전환하기 위해 재배치 블록(216) 내의 연속적인 어드레스에 재배치된다. 물리적인 어드레스 공간(218) 내의 해당 업데이트 블록(214) 또한 플러시된 데이터를 수신하도록 할당된다. 새로운 데이터를 위해 이용되는 업데이트 블록(214)이 호스트로부터 수신된 상태에서, 플러시된 데이터를 수신하는 상기 업데이트 블록(214)은 유효 데이터를 통합하기 위해 가비지 컬렉션 동작을 필요로하지 않는데, 이는 상기 플러시 동작이 이미 DLBA 어드레스 공간(210)에서 통합작업을 했기 때문이다.
도 17에 도시한 바와 같이 다음 플러시 블록(도 16의 핑크 블록(B))이 나머지 핑크 블록으로부터 식별된다. 가정 적은 레드 데이터를 갖는 핑크 블록은 플러시 블록으로 다시 지정되고 상기 핑크 블록의 레드 데이터(유효 데이터)는 개방 재배치 블록 내의 연속적인 위치로 전송된다. 물리적 어드레스 또한 업데이트 블록(214) 내에서 병렬로 할당된다. 재배치 블록(216)으로 매핑된 물리적 업데이트 블록(214)에서도 데이터 통합이 필요하지 않다. 기록 블록으로 지정된 화이트 블록의 소비를 보상하기에 충분한 속도로 화이트 블록을 생성하기 위해 예비작업으로서 플러시 작업을 핑크 블록 상에서 수행한다. 도 14 내지 17의 예는 호스트로부터의 새로운 데이터 및 핑크 블록으로부터의 재배치된 데이터를 위해, 물리적 어드레스 스페이스 내에서 각각의 개별적 업데이트 블록과 함께 화이트 블록 및 재배치 블록이 어떻게 개별적으로 관리되는지를 설명하고 있다. 현재 기록 블록이 완전히 프로그램되어 있는 경우에만 호스트로부터 수신된 새로운 데이터를 관련시키기 위한 새로운 기록 블록을 할당하는 과정과 유사하게, 이전 위치 블록이 완전히 프로그램된 후 바람직하게는 새로운 재배치 블록만이 할당 된다. 바람직하게는, 새로운 재배치 블록은 미기록 용량만을 포함, 즉 삭제될 무용 데이터와 연관되거나, 혹은 할당시 이미 삭제되어 유효 데이터를 포함하지 않는다.
상기 실시예에서, 호스트로부터의 새로운 데이터는 호스트로부터 다른 새로운 데이터만을 수신할 기록 블록과 관련되고, 플러시 동작시 핑크 블록으로부터 플러시된 유효 데이터는 하나 이상의 핑크 블록으로부터 유효 데이터만을 포함할 재배치 블록으로 이동된다. 다른 구현 예에서, 새로운 데이터 및 재배치된 데이터는 개벽적인 기록 및 재배치 블록이 필요 없이 단일 기록 블록으로 전송될 수 있다. 상기한 바와 같이, 다른 실시예에서, 플러시를 위한 핑크 블록의 선택은 임계치, 에를 들어 현재 핑크 블록의 평균량, 이하인 레드 데이터의 양과 관련된 핑크 블록 리스트로부터 임의의 핑크 블록이 선택될 수 있을 때, 또는 상기 핑크 블록이 가용 핑크 블록으로부터 특정 순위(상기 핑크 블록과 관련된 유효 데이터의 양에 기초)를 갖는 핑크 블록 중 임의의 것일 경우 실시된다.
플러시 동작은 유사한 상대적인 콜드 데이터를 포함하는 재배치 블록으로 "빈도가 높은(핫, hot)" 데이터를 무용화시키는 블록으로부터 상대적으로 "빈도가 낮은(콜드, cold)" 데이터를 재배치한다. 이는 비교적 빈도가 높고 비교적 빈도가 낮은 블록의 개별적인 상태밀도(population)를 생성하는 효과가 있다. 플러시할 블록은 항상 가장 적은 양의 데이터를 포함하는 핫 블록으로서 선택된다. 핫 블록 상태밀도를 생성함으로써 재배치할 데이터의 양이 감소되어 메모리 스트레스 인자가 감소된다.
일 실시예에서, 플러시 블록으로 선택된 핑크 블록이 가장 상태밀도가 낮은 핑크 블록, 즉 가장 적은 유효 데이터를 포함하는 핑크 블록일 수 있고, 호스트에 의해 수행되는 특정 기록 및 삭제 동작에 따라 선택되지 않는다. 이러한 방식으로 플러시 블록으로서의 핑크 블록을 선택함으로써 유효 데이터의 재배치를 최소한으로 하는 블록 플러시 동작을 수행할 수 있는데, 이는 선택된 임의의 핑크 블록이 호스트에 의한 파일의 삭제로 인해 최대한의 비할당 데이터 어드레스를 축적하기 때문이다.
핑크 블록 선택과정의 한 예로, 가장 작은 수의 유효 페이지 또는 클러스터를 갖는 핑크 블록의 5%에 드는 임의의 핑크 블록을 선택하는 것이 있다. 예비과정에서, 가장 작은 페이지 또는 클러스터 카운터 값을 갖는 16 개의 핑크 블록의 리스트가 생성된다. 핑크 블록 식별과정은 블록 플러시 동작이 예정된, "P"로 표시된 시간에 한 사이클을 완성한다. 플러시 블록 식별과정에서의 한 사이클이 도 18에 도시되어 있다. 아래에 보다 자세히 설명하는 바와 같이, 화이트, 핑크 및 다른 형태의 DLBA 어드레스 블록에 대한 블록 어드레스 리스트를 포함하는 블록 정보 테이블(BIT)은 저장 어드레스 리매핑 기능에 의해 유지되고, 이전의 과정 사이클에서 식별된 블록 세트 이후의 다음 Q 핑크 블록 세트를 식별하기 위해 판독된다(단계 220). 제 1 핑크 블록 세트는 장치 초기와 이후 제 1 과정 사이클에서 식별되어야 한다. 플러시 블록의 가용성을 확보하기 위해, Q의 값은 P보다 커야 한다. 일 실시예에서, 상기 Q의 값은 8일 수 있고 P는 4일 수 있다. 상기 세트 내의 핑크 블록 각각에 대해 유효 페이지 카운트 값이 0으로 설정된다(단계 222). LBA 및 DLBA 관계를 추적하기 위해 유지되는 저장 어드레스 테이블(SAT) 페이지의 엔트리는 상기 세트의 임의의 핑크 블록 내에 위치된 유효 데이터 페이지를 식별하기 위해 한 번에 한 번 스캔된다(단계 224). 상기 저장 어드레스 테이블은 아래에 보다 자세히 설명한다. 유효 페이지 카운트 값이 따라서 증가한다. 모든 SAT 페이지를 스캔한 후, 핑크 블록 각각에 대한 유효 페이지 카운트 값이, 낮은 유효 페이지 카운트 값에 대한 리스트 내의 핑크 블록에 대해 산출되고, 필요한 경우 상기 리스트 내의 블록은 상기 세트의 블록으로 대체된다(단계 226). 블록 플러시 동작이 완료된 후, 다음 블록 플러시 동작을 위해 블록이 선택되어야 한다. 이는 상기 리스트 중 가장 낮은 유효 페이지 카운트 값을 갖는 블록이어야 한다.
도 16 및 17과 관련하여 설명한 바와 같은 블록 플러시 동작을 시작하기 전에, 재배치 되어야 할 유효 DLBA 런의 위치를 결정하기 위해, 선택된 블록은 매핑되어야 한다. 이는 블록으로부터 판독된 데이터의 선택된 페이지의 헤더의 LBA 어드레스 및 상기 LBA 어드레스를 위한 SAT의 엔트리를 이용하는 검색 알고리즘에 의해 구현된다. 상기 검색 알고리즘은 점진적으로 수행되는 알려진 유효 및 무용의 DLBA 런의 맵을 이용한다. SAT 엔트리가 블록 내에 있음을 나타낼 때 유효 DLBA 런이 블록 맵에 추가된다. 매핑된 블록의 데이터 페이지 헤더 내의 LAB 범위에 대한 SAT 엔트리가 다른 블록에 유효 DLBA가 있음을 나타낼 때 무용 DLBA 런이 블록 맵에 추가된다. 상기 블록 내의 모든 DLBA 어드레스가 유효 또는 무용하게 명확히 매핑될 때까지 상기 검색과정이 계속된다.
블록 플러시 동작시, 상기 블록 매핑과정에서 식별된 유효 DLBA 런 내의 모든 페이지는 선택된 블록으로부터 재배치 블록 내의 재배치 포인터로 재배치된다. 재배치된 DLBA에 대한 엔트리가 SAT 리스트에 기록된다. 도 9에 도시한 배열의 경우에 유효 및 무용의 DLBA 런에 대한 검색이 메모리 시스템(2)의 제어기(8)에 의해 실행되고, 블록 DLBA 맵은 제어기에 관련된 RAM에 저장된다. 도 10의 배열의 경우, 호스트 시스템(1)의 CPU는 검색을 실시하여 호스트 시스템 CPU에 관련된 RAM에 결과적인 블록 DLBA 정보를 저장할 수 있다.
상기 저장 어드레스 리매핑 알고리즘은 화이트 블록의 수가 소정 임계치 아래로 떨어진 경우, 화이트 블록 용량이 기록 블록 내의 호스트 데이터의 기록에 의해 소비되는 것과 동일한 속도로, 데이터 기록을 위해 할당될 수 있는 가용 화이트 블록 용량이 생성될 수 있도록 하기에 충분한 속도로 플러시 동작이 핑크 블록 상에서 수행되어야 한다는 원리로 작동한다. 호스트로부터의 데이터를 기록하는 데 소비되는 기록 블록 내의 페이지의 수는 블록 플러시 동작에 의해 회복되는 무용 페이지의 수와 균형을 이루어야 한다. 블록 플러시 동작이 완료된 후, 상기한 바와 같이 BIT 및 SAT로 부터 특정 엔트리를 판독함으로써 다음 블록 플러시 동작을 위해 선택된 핑크 블록 내의 무용 데이터의 페이지 수가 결정된다. 다음 블록 플러시 동작은 상기 수의 데이터 유효 페이지를 기록 블록에 기록한 직후 시작되도록 정해진다.
저장 어드레스 테이블
상기 저장 어드레스 리매핑을 구현하기 위해, 저장 어드레스 공간 내의 데이터 위치를 추적하는 데 저장 어드레스 테이블(SAT)이 이용된다. 상기 SAT 내의 정보는 완성된 플래시 메타블록에 대한 순차적인 업데이트의 일부로서 기록된다. 따라서, 한 구현 예에 있어서, SAT 정보는 호스트로부터 수신되고 플러시 동작에 이용되는 재배치 블록으로부터 분리된 데이터를 위해 이용되는 기록 블록으로부터 개별적인 기록 블록에 기록된다. 다른 구현 예에서, SAT 정보는 다른 블록 그룹, 예를 들면 비SAT 정보가 있는 MLC 플래시 파티션이 아닌 바이너리 플래시 파티션 내의 블록에 저장될 수 있다. 또는, SAT 및 비SAT 데이터는 플래시 블록가 동일한 형태로 블록에 의해 분리되어 저장될 수 있다. 또 다른 실시예에서, SAT 및 비SAT 데이터는 동일한 블록 내에 혼합되어 있을 수 있다.
상기 SAT는 도 8 내지 10의 실시예와는 관련이 있지만, 도 11과는 관련이 없고, 이때 호스트 파일 시스템은 데이터를 어드레스의 논리 블록 내에 순차적으로 기록하고 제 1 논리 어드레스로부터 제 2 논리 어드레스로의 번역은 필요치 않다. 또한, 아래에 기술하는 내용은 도 9 및 10의 호스트 및 메모리 디바이스 구성에 관련된 DLBA (또는 저장 LBA)라고 하는 호스트 LBA로부터 제 2 LAB 공간으로 리매핑하는 데에 중점을 두지만, 이와 동일한 SAT 기술은 도 8의 실시예에도 적용할 수 있으며, 여기서 호스트 LBA와 관련된 데이터는 논리 대 논리 번역을 방해하지 않고 물리적 블록에 직접 매핑된다. 상기 SAT 정보는 상기 실시예와 관계없이 메모리 디바이스의 플래시 메모리에 저장되는 것이 바람직하다. 호스트(180) 상에서 호스트 LBA로부터 DLBA로의 리매핑이 일어나는 도 10의 실시예의 경우, SAT 정보는 메모리 디바이스(184)의 플래시 메모리에 저장되도록 전송된다. 상기 메모리 디바이스 내의 메모리 관리자에서 저장 어드레스 리매핑 알고리즘이 구현되는 도 8의 실시예의 경우, 상기 DLBA는 도 9 및 10의 실시예에 이용된 바와 같은 제 2 논리 어드레스 공간이 아닌, 플래시 메모리(7) 내의 물리적 어드레스를 의미하며, DLBA 어드레스의 블록은 물리적 메모리의 메타블록을 나타낸다.
저장 어드레스 테이블(SAT)은 호스트 파일 시스템에 의해 DLBA 어드레스에 할당된 LBA 어드레스와 관련된 상관정보를 포함한다. 보다 구체적으로, 상기 SAT는 호스트 파일 시스템에 의해 유효 데이터에 할당된 LBA 어드레스 공간 내에서의 어드레스의 매번의 런과 저장 어드레스 리매핑 알고리즘에 의해 생성되는 DLBA 어드레스 공간(210) 내에서의 한 번 이상의 어드레스의 런 사이의 매핑을 기록하기 위해 이용된다. 상기한 바와 같이, 시스템 어드레스 공간의 단위는 LBA이고 LBA 런은 호스트 파일 시스템에 의해 유효 데이터에 현재 할당된 LBA 어드레스의 연속적인 세트이다. LBA 런은 비할당 LBA 어드레스에 의해 자주 바운딩되지만 LBA 런은 SAT 데이터 구조에 의해 요청이 있는 경우 보다 작은 다중 LBA 런으로 관리될 수 있다. 장치 어드레스 공간의 단위는 DLBA이고 DLBA 런은 LBA 런에서와 같이 연속적인 LBA어드레스에 매핑되는 DLBA 어드레스의 연속적인 세트이다. DLBA 런은 DLBA 어드레스 공간의 블록 경계에서 종료된다. 각각의 LBA 런은 상기 SAT에 의해 하나 이상의 DLBA에 매핑된다. LBA 런의 길이는 매핑되는 DLBA의 누적 길이와 동일하다.
LBA 런에 대한 SAT 엔트리는 매핑되는 제 1 DLBA에 대한 엔트리와의 링크를 포함한다. 매핑될 수 있는 이후의 DLBA 런은 이 런 바로 뒤의 연속적인 엔트리들이다. DLBA 런은 매핑되는 LBA 런 내의 오프셋 어드레스로의 후진 링크를 포함하지만, 상기 링크는 LBA 런의 절대 LBA 어드레스에 연결되지는 않는다. 개개의 LBA 어드레스는 LBA 런 내의 LBA 오프셋으로 정의할 수 있다. 상기 SAT는 LBA 런에 매핑되는 각 DLBA의 시작에 대응하는 LBA 오프셋을 기록한다. 그러므로, 각각의 LBA 어드레스에 대응하는 개개의 DLBA 어드레스는 DLBA 런 내의 DLBA 오프셋으로서 식별될 수 있다. SAT 내의 LBA 런이 유효 데이터만을 위한 런이지만, 상기 SAT는 다른 구현 예에서 유효 및 무용 데이터를 위한 LBA 런을 저장하도록 구성될 수도 있다.
상기 SAT는 SAT 블록으로 알려진 LBA 어드레스의 블록 내에서 구현된다. 상기 SAT는 소정의 최대 수의 SAT 블록을 포함하고, 또한 소정의 최대 수의 유효 SAT 페이지를 포함한다. 그러므로 상기 SAT는 소정의 최대 수의 SAT 블록에 대해, 인덱스할 수 있는 최대 수의 DLBA 런을 갖는다. 비록 최대 수의 SAT 블록이 정의 되지만, 상기 SAT는 최대 수까지 자동으로 측정할 수 있는 가변 크기의 테이블인데, 이는 SAT 내의 엔트리의 수가 호스트에 의해 할당된 LBA의 단편에 따라 조정되기 때문이다. 그러므로, 호스트가 매우 단편화된 LBA를 할당하게 되면, 상기 SAT는 호스트가 보다 적은 단편화된 LBA 그룹을 데이터에 할당하는 경우보다 많은 엔트리를 포함하게 된다. 따라서, 호스트 LBA가 덜 단편화되는 경우, SAT의 크기는 작아진다. 보다 적은 단편화로 인해 매핑을 위해 보다 적은 개별적 런이 이루어지고 보다 적은 개별적 런으로 인해 SAT 내의 엔트리가 줄어드는데, 이는 SAT가 고정된 수의 논리 어드레스를 확실히 추적 및 업데이트 하기보다는 엔트리 내에서의 호스트 LBA 어드레스의 런을 하나 이상의 DLBA 런에 매핑하기 때문이다.
SAT의 런 대 런 매핑 배열로 인해, 호스트 LBA 어드레스의 런이 둘 이상의 DLBA 런으로 매핑되고, 이때 상기 호스트 LBA 런은 유효 데이터에 할당되는 연속적인 논리 어드레스의 세트이고 DLBA(또는 저장 LBA) 런은 동일한 메타블록 내의 DLBA 어드레스의 연속적인 세트가 되어 동일한 호스트 LBA 런에 매핑된다. SAT 인덱싱 및 매핑 구조의 계층은 도 19에 도시되어 있다. LBA(230) 및 상응하는 DLBA(232) 런이 도시되어 있다. LBA 대 DLBA 매핑 정보는 SAT 페이지(234)에 포함된다. LBA 대 SAT 페이지 인덱싱 정보는 SAT 인덱스 페이지(236)에 포함되고 마스터 페이지 인덱스(238)는 도 10의 구현 예를 위한 호스트 프로세서와 관련된 RAM 및 도 8 및 9의 구현 예를 위한 제어기(8)와 관련된 RAM에 저장된다.
상기 SAT는 보통 다중 SAT 블록을 포함하지만, SAT 정보는 SAT 기록 블록에 의해 현재 지정된 단일 블록에만 기록될 수 있다. 다른 모든 SAT 블록은 완전히 기록되고 유효 및 무용 페이지의 혼합을 포함한다. SAT 페이지는, 그들이 매핑되는 장치 어드레스 공간 내의 런을 위한 엔트리와 함께, 호스트 LBA 어드레스 공간의 가변 범위 내의 모든 LBA 런에 대한 엔트리를 포함한다. 많은 SAT 페이지가 존재할 수 있다. SAT 인덱스 페이지는 큰 범위의 호스트 LBA 어드레스 공간 내에 모든 유효 SAT페이지의 위치에 대한 인덱스를 포함한다. 적은 수의 SAT 인덱스 페이지가 존재하고, 이는 일반적인 경우이다. SAT 내의 정보는 단일 SAT 기록 블록 내의 다음 가용 위치에서 업데이트된 페이지를 재기록하고 상기 페이지의 이전 버전을 무용으로 처리함으로써 수정된다. 따라서, 많은 무효 페이지가 SAT 내에 존재하게 된다. SAT 블록은 호스트 데이터에 대해 상기한 바와 유사한 블록의 플러싱 및 페이지의 기록을 위한 알고리즘에 의해 관리된다.
SAT 블록
각각의 SAT 블록은 SAT 정보의 저장에 이용되는 DLBA 어드레스의 블록이다. SAT 블록은 테이블 페이지로 분할되고, 여기에 SAT 페이지(234) 또는 SAT 인덱스 페이지(236)이 기록될 수 있다. SAT 블록은 유효 SAT 페이지(234), 유효 SAT 인덱스 페이지(236), 및 무용 페이지들의 어떠한 조합도 포함할 수 있다. 도 20을 참조하면, 샘플 SAT 기록 블록이 도시되어 있다. SAT 기록 블록(240) 내의 증가하는 SAT 기록 포인터(242)에 의해 지정되는 연속적인 위치에 데이터가 기록된다. SAT 기록 블록(240)으로 지정된 단일 SAT 블록에만 데이터가 저장될 수도 있다. 상기 호스트 데이터 기록 블록에서와 마찬가지 방식으로(예를 들면, 도 15 내지 17의 212), SAT 기록 블록(240)이 완전히 기록된 경우, 새로운 SAT 기록 블록(240)으로서 화이트 블록이 할당된다. SAT 페이지 위치는 SAT 블록 내의 순차적인 수에 의해 어드레스된다.
SAT 페이지
SAT 페이지(234)는 SAT 내의 매핑 정보의 최소 업데이트 가능 단위이다. 업데이트된 SAT 페이지(234)는 SAT 기록 포인터(242)에 의해 지정된 위치에 기록된다. 연속적인 LBA 런의 어드레스가 인접할 필요는 없지만, SAT 페이지(234)는 LBA 어드레스의 증가와 함께 LBA 런의 세트를 위한 매핑 정보를 포함한다. SAT 페이지(234) 내의 LBA 어드레스의 범위는 어떠한 다른 SAT 페이지(234) 내의 LBA 어드레스와 겹치지 않는다. SAT 페이지(234)는 제약 없이 SAT 블록의 완전한 세트 전체에 걸쳐 분포된다. LBA 어드레스의 임의의 범위에 대한 SAT 페이지(234)가 임의의 SAT 블록일 수 있다. SAT 페이지(234)는 인덱스 버퍼 필드(244), LBA 필드(246), DLBA 필드(248), 및 제어 포인터(250)을 포함할 수 있다. 파라미터 백업 엔트리 또한 휘발성 RAM에 저장된 일부 파라미터의 값을 포함한다.
LBA 필드(246)는 LBA 어드레스의 범위 내에, 데이터 저장을 위해 할당되는 연속적인 LBA 어드레스의 런을 위한 엔트리를 포함한다. SAT 페이지(234)에 의해 확대된 LBA 어드레스의 범위는 어떠한 다른 SAT 페이지(234)에 의해 확대된 LBA 엔트리의 범위와 겹치지 않는다. LBA 필드는 가변적인 길이를 갖고 가변적인 수의 LBA 엔트리를 포함한다. LBA 필드(246) 내에서, LBA 엔트리(252)는 SAT 페이지(234)에 의해 찾아진 LBA 어드레스의 범위 내의 모든 LBA 런을 위해 존재한다. LBA 런은 하나 이상의 DLBA 런에 매핑된다. 도 21에 도시한 바와 같이, LBA 엔트리(252)는 다음 정보를 포함한다: 섹터 내의 런의 제 1 LBA(254), LBA 런의 길이(256), 및 LBA 런이 매핑되는 제 1 DLBA의 동일 SAT 페이지(234)의 DLBA 필드 내의 DLBA 엔트리 수(258).
SAT 페이지(234) 내의 DLBA 필드(248)는 동일 SAT 페이지(234)의 LBA 필드 내의 LBA 런에 매핑되는 DLBA 어드레스의 모든 런에 대한 엔트리를 포함한다. DLBA 필드(248)는 가변적인 길이를 갖고 가변적인 수의 DLBA 엔트리(260)를 포함한다. DLBA 필드(248)에 있어서, DLBA 엔트리(260)는 동일 SAT 페이지(234)의 LBA 필드(246) 내의 LBA 런에 매핑되는 모든 DLBA 런을 위해 존재한다. 각각의 DLBA 엔트리(260)은, 도 22에 도시한 바와 같이, 다음 정보를 포함한다: 런의 제 1 DLBA 어드레스(262) 및 제 1 DLBA 어드레스가 매핑되는 LBA 런의 LBA 오프셋(264). 모든 SAT 페이지(234)의 부분에 기록되는 반면 가장 최근에 기록된 SAT 페이지(234)에서만 유효한 상기 SAT 페이지/인덱스 버퍼 필드는 SAT 인덱스 엔트리(266)를 포함한다.
SAT 인덱스 엔트리(266)는 관련 SAT 인덱스 페이지(236) 내에 유효 엔트리를 현재 갖고 있지 않는 SAT 내의 모든 SAT 페이지(234)를 위해 존재한다. SAT 인덱스 엔트리는 SAT 페이지(234)가 기록될 때마다 생성 또는 업데이트 되고, 관련 SAT 인덱스 페이지(236)가 업데이트될 때 삭제된다. 이는 SAT 페이지(234)에 의해 찾아진 제 1 LBA(268), SAT 페이지(234)에 의해 찾아진 최종 LBA(270), SAT 페이지(234)를 포함하는 SAT 블록 번호(272), 및 상기 SAT 블록 내의 SAT 페이지(234)의 페이지 번호(274)를 포함한다. SAT 인덱스 페이지(276)는 SAT 인덱스 엔트리(278)의 고정된 수에 대한 용량을 갖는다. 이 수는 SAT 페이지(234) 및 SAT 인덱스 페이지(236)가 기록될 수 있는 관련 주파수를 결정짓는다. 한 구현 예에서, 상기 고정된 수는 32일 수 있다.
SAT 페이지 필드 포인터(250)는 LBA 필드의 시작에서 부터 DLBA 필드의 시작까지 오프셋을 정의한다. 이는 LBA 엔트리의 수로서 오프셋 값을 포함한다. SAT 페이지(234) 내의 파라미터 백업 엔트리는 휘발성 RAM에 저장된 파라미터의 값을 포함한다. 이러한 파라미터 값은 파워 주기 이후, RAM(도 8 및 9의 구현 예를 위한 제어기(8)와 관련되거나 도 10의 구현 예를 위한 호스트 CPU에 관련됨) 내의 정보를 초기화하는 동안 이용된다. 이들은 가장 최근에 기록된 SAT 페이지(234)에서만 유효하다.
SAT 인덱스 페이지
한 세트의 SAT 인덱스 페이지(236)는 SAT 내의 모든 유효 SAT 페이지(234)의 위치에 인덱스를 제공한다. 각 SAT 인덱스 페이지(236)는 LBA 어드레스의 범위와 관련된 유효 SAT 페이지의 위치를 지정하는 엔트리(278)를 포함한다. SAT 인덱스 페이지(236)에 의해 확대된 LBA 어드레스의 범위는 어떠한 다른 SAT 인덱스 페이지(236)에 의해 확대된 LBA 어드레스의 범위와 겹치지 않는다. 상기 엔트리는 이들과 관련된 SAT 페이지의 LBA 어드레스 범위 값에 따라 순서가 정해진다. SAT 인덱스 페이지(236)는 고정된 수의 엔트리를 포함한다. SAT 인덱스 페이지(236)는 SAT 블록의 완전한 세트 전체에 제한 없이 분산되어 있을 수 있다. LBA 어드레스의 임의의 범위에 대한 SAT 인덱스 페이지(236)는 임의의 SAT 블록일 수 있다. SAT 인덱스 페이지(236)는 SAT 인덱스 필드 및 페이지 인덱스 필드를 포함한다.
SAT 인덱스 필드(276)는 SAT 인덱스 페이지(236)에 의해 확대된 LBA 어드레스 범위 내의 모든 유효 SAT 페이지에 대한 SAT 인덱스 엔트리를 포함한다. SAT 인덱스 엔트리(278)는 단일 SAT 페이지(234)와 관련이 있고 다음 정보를 포함한다: SAT 페이지(234)에 의해 찾아진 제 1 LBA, SAT 페이지(234)를 포함하는 SAT 블록 수, 및 상기 SAT 블록 내의 SAT 페이지(234)의 페이지 수. 상기 페이지 인덱스 필드는 SAT 내의 모든 유효 SAT 인덱스 페이지(236)에 대한 페이지 인덱스 엔트리를 포함한다. 상기 페이지 인덱스 엔트리는 SAT 내의 모든 유효 SAT 인덱스 페이지(236)를 위해 존재하고 다음 정보를 포함한다: SAT 인덱스 페이지에 의해 찾아진 제 1 LBA, SAT 인덱스 페이지를 포함하는 SAT 블록 수, 및 상기 SAT 블록 내의 SAT 인덱스 페이지의 페이지 수. 상기 페이지 인덱스 엔트리는 가장 최근에 기록된 SAT 인덱스 페이지(236)에서만 유효하다.
일시적인 SAT 데이터 구조
도 19에 도시한 어드레스 매핑의 장기간 저장을 위한 SAT 계층의 부분은 아니지만, SAT를 업데이트 하기 위한 계층적 절차에 추가적인 데이터 구조를 이용할 수 있다. 이러한 구조 중 하나는 LBA 엔트리를 포함하고 LAB 런 상의 업데이트 동작 또는 아직 SAT 페이지(234)에 기록되지 않는 블록 플러시 동작에 의한 새로운 어드레스 매핑을 위한 새로운 엔트리에 대한 DLBA 매핑에 대응하는 SAT 리스트이다. 상기 SAT 리스트는 RAM 내의 휘발성 구조일 수 있다. 상기 SAT 리스트 내의 엔트리는 SAT 페이지 업데이트시 SAT 페이지(234)에 기록될 때 청소된다.
테이블 페이지
테이블 페이지는 SAT 블록 내의 DLBA 어드레스 공간의 고정된 크기의 단위이며, 하나의 SAT 페이지(234) 또는 하나의 SAT 인덱스 페이지(236)를 저장하는 데 이용된다. 테이블 페이지의 최소 크기는 한 페이지이고 최대 크기는 한 메타페이지이며, 이때 페이지 및 메타페이지는 물리적 메모리 내의 페이지 및 메타페이지에 대응하는 DLBA 어드레스 공간의 단위이다.
SAT 의 엔트리 크기
SAT 페이지(234) 및 SAT 인덱스 페이지(236) 내의 엔트리의 크기를 표 1에 나타내었다.
SAT 엔트리 크기
엔트리 어드레싱 범위 바이트 단위 엔트리 사이즈
SAT 페이지/LBA 필드/LBA 엔트리/
제 1 LAB
2048GB 4
SAT 페이지/LBA 필드/LBA 엔트리/
런 길이
32MB 2
SAT 페이지/LBA 필드/LBA 엔트리/DLBA 엔트리 수 64K 엔트리 2
SAT 페이지/DLBA 필드/DLBA 엔트리/
제 1 DLBA
2048GB 4
SAT 페이지/DLBA 필드/DLBA 엔트리/
LBA 오프셋
32MB 2
SAT 페이지/인덱스 버퍼 필드/
SAT 인덱스 엔트리/제 1 LBA
2048GB 4
SAT 페이지/인덱스 버퍼 필드/
SAT 인덱스 엔트리/최종 LBA
2048GB 4
SAT 페이지/인덱스 버퍼 필드/
SAT 인덱스 엔트리/SAT 블록 위치
64K 블록 2
SAT 페이지/인덱스 버퍼 필드/
SAT 인덱스 엔트리/SAT 페이지 위치
64K 페이지 2
SAT 페이지/필드 포인터 64K 엔트리 2
SAT 인덱스 페이지/SAT 인덱스 필드/
SAT 인덱스 엔트리/제 1 LBA
2048GB 4
SAT 인덱스 페이지/SAT 인덱스 필드/
SAT 인덱스 엔트리/SAT 블록 위치
64K 블록 2
SAT 인덱스 페이지/SAT 인덱스 필드/
SAT 인덱스 엔트리/SAT 페이지 위치
64K 페이지 2
SAT 인덱스 페이지/페이지 인덱스 필드/
페이지 인덱스 엔트리/제 1 LBA
2048GB 4
SAT 인덱스 페이지/페이지 인덱스 필드/SAT 인덱스 엔트리/SAT 블록 위치 64K 블록 2
SAT 인덱스 페이지/페이지 인덱스 필드/
페이지 인덱스 엔트리/SAT 페이지 위치
64K 페이지 2
어드레스 번역
SAT는 호스트 파일 시스템의 LBA 어드레스에 대응하는 DLBA 어드레스를 신속히 위치하는 데 유용하다. 일 실시예에서, 유효 데이터에 매핑된 LBA 어드레스만이 상기 SAT에 포함된다. SAT 페이지(234)가 하나의 SAT 페이지(234)에서 다른 하나 까지의 LBA 범위에서 겹침이 없이 LBA 순으로 배열되기 때문에, 단순 서치 알고리즘은 소정 데이터에 신속히 복귀시키는 데 이용될 수 있다. 이러한 어드레스 번역 절차에 대한 일 예로 도 24에 도시되어 있다. 목표 LBA(280)는 우선 제어기 또는 프로세서에 의해 수신된다(저장 어드레스 리매핑 구현이 각각 도 9 또는 도 10과 같이 구성되었는지의 여부에 따라). 또 다른 실시예에서, SAT는 유효 데이터 및 무용 데이터에 매핑된 LBA 어드레스를 포함하고 상기 데이터가 유효한지 또는 무용인지를 추적한다.
도 24는 어드레스 번역 절차를 도시함과 동시에 최종적으로 기록된 SAT 인덱스 페이지로부터의 페이지 인덱스 필드 및 최종적으로 기록된 SAT 페이지로부터의 인덱스 버퍼 필드가 어떻게 구성될 수 있는지를 나타내고 있다. 도 24의 구현 예에서, 이러한 두 개의 필드가 저장장치 또는 호스트의 RAM과 같은 휘발성 메모리에 일시적으로 유지된다. 최종적으로 기록된 SAT 인덱스 페이지의 페이지 인덱스 필드는 모든 SAT 인덱스 페이지에 대해 포인터를 포함한다. 상기 인덱스 버퍼 필드는 인덱스 페이지에 아직 기록되지 않는 최근에 기록된 SAT 페이지에 대한 한 세트의 인덱스 엔트리를 포함할 수 있다.
해당 DLBA 어드레스에 대한 목표 LBA 어드레스를 위한 매핑 정보는 목표 어드레스를 포함하는 LBAS 어드레스의 범위에 대한 모든 매핑 정보를 포함하는 특정 SAT 페이지(234) 내에 유지된다. 상기 어드레스 번역 절차의 제 1 스테이지는 목표 SAT 페이지를 식별 및 판독하는 것이다. 도 24를 참고하면, 목표 LBA에 대한 SAT 인덱스 엔트리가 존재하는가를 결정하기 위해, 최종적으로 기록된 SAT 페이지 내의 인덱스 버퍼 필드의 캐시된 버전 상에서 바이너리 검색이 실시된다(단계 282). 만약 상기 목표 SAT 페이지는 최근 기록되었지만 상기 목표 SAT 페이지의 새로운 위치를 기록하는 상기 목표 SAT 페이지 엔트리가 아직 기록되지 않았다면 엔트리가 존재할 것이다. 만약 상기 목표 LBA에 대한 SAT 인덱스 엔트리를 찾으면, 상기 목표 SAT 페이지의 위치가 결정되고 이 페이지를 판독하게 된다(단계 284).
상기 단계 282에서 목표 LBA에 대한 SAT 인덱스 엔트리가 검색되지 않는 경우, 목표 LBA에 대한 SAT 인덱스 엔트리를 위치시키기 위해 최종적으로 기록된 SAT 인덱스 페이지 내의 페이지 인덱스 필드의 캐시된 버전상에서 바이너리 검색을 실행한다(단계 286). 단계 286에서 검색된 목표 LBA에 대한 SAT 인덱스 엔트리는 목표 LBA를 포함하는 LBA 어드레스 범위에 대한 SAT 인덱스 페이지의 위치를 지정한다. 이 페이지를 판독한다(단계 288). 목표 LBA에 대한 SAT 인덱스 엔트리를 위치하도록 바이너리 검색을 실시한다(단계 290). 목표 LBA에 대한 SAT 인덱스 엔트리는 목표 SAT 페이지의 위치를 지정한다. 이 페이지를 판독한다(단계 292).
목표 SAT 페이지가 단계 284 또는 단계 292에서 판독되면, 다음으로 LBA 대DLBA 번역이 실시된다. 목표 LBA를 기록하는 목표 LBA 런에 대한 LBA 엔트리를 위치하기 위해 LBA 필드 상에서 바이너리 검색을 실시한다. 상기 목표 LBA 런 내의 목표 LBA의 오프셋이 기록된다(단계 294). 필드 포인터 내의 정보는 바이너리 검색을 위한 LBA 필드의 길이를 정의하고 또한 LBA 필드의 시작에 관련한 DLBA 필드의 시작을 정의한다(단계 296). 단계 294에서 검색된 LBA 엔트리는 LBA 런에 매핑된 제 1 DLBA 엔트리의 DLBA 필드 내의 위치를 지정한다(단계 298). 단계 294에서 결정된 오프셋은 목표 DLBA 어드레스를 결정하기 위해 단계 298에서 위치된 하나 이상의 DLBA 엔트리와 함께 이용된다(단계 300).
또 다른 실시예에서, 유효 데이터와 관련된 LBA 어드레스의 각각의 런에 대한 SAT 내의 개별적인 LBA 엔트리를 생성하는 대신에, LBA 어드레스 블록은 각 LBA 어드레스 블록이 SAT 상에서 단일 엔트리가 되도록 SAT 내에 매핑될 수 있다. 본 실시예에서, LBA 어드레스 공간 내의 완전한 LBA 어드레스 블록이 개별적인 LBA 런이 아닌 SAT 내에 기록될 수 있다. 본 구현 예의 LBA 엔트리는 LBA 어드레스 블록이 매핑되는 DLBA 어드레스 공간 내의 DLBA 런의 수 및 포인터를 동일 SAT 페이지 내의 제 1 DLBA에 리스팅하는 단일 엔트리일 수 있다. LBA 어드레스 블록은 메모리 디바이스 내에 저장된 데이터의 단편화의 정도에 따라 최소한의 하나의 DLBA 런 또는 LBA 어드레스 블록 내의 최대한의 클러스터에 매핑될 수 있다.
LBA 어드레스 블록에 대한 해당 DLBA 엔트리는 DLBA 블록, 각 DLBA 런의 어드레스 오프셋, 및 해당 LBA 오프셋을 리스트한다. 각 LBA 런에 대한 개별적인 LBA 엔트리를 기록하는 상기 SAT의 버전과 달리-여기서 유효 데이터와 관련된 LBA 런만 기록됨-LBA 어드레스 블록 내의 모든 LBA 런이 기록된다. 그러므로, 유효 데이터에 할당된 LBA 런은 물론, 유효 데이터에 현재 할당되지 않은 LBA 어드레스 블록 내의 LBA 런이 기록된다. SAT 페이지의 DLBA 엔트리부에 있어, 할당되지 않은 LBA 어드레스 세트의 시작을 표시하는 LBA 오프셋은 DLBA 어드레스 공간에서 초기값과 쌍을 이루게 된다. 이러한 초기값은 할당되는 않은 어드레스를 나타낸다. 도 19 및 20을 참고로 설명한 기본 SAT 계층은 물론 동일한 SAT의 전체적인 구조 및 기능성은 LBA 어드레스 블록 매핑 구현에 적용되지만, SAT 페이지는 개별적인 LBA 런을 DLBA 런 정보에 나타내지 않고, LBA 어드레스 블록을 DLBA 런 매핑 정보에 나타낸다. 또한 SAT 인덱스 페이지는 본 구현 예에서 LBA 어드레스 블록을 SAT 페이지 매핑 정보에 저장한다.
SAT
일 예로서, 도 19 내지 23의 개별적인 LBA 런 대 DLBA 런 매핑을 이용하여, 도 9 또는 10의 논리 대(對) 논리 저장 어드레스 리매핑 기술을 이용하는 데이터 기록과정이 도 25에 도시되어 있다. 도 25에서, LBA 어드레스 공간(302) 및 DLBA 어드레스 공간(304)이 시간 A-D에 대해 도시되어 있다. 시간 A에서, 데이터는 호스트에 의해 세 개의 개별적인 LBA 런에 L1, L2 및 L3 순으로 기록된다. LBA 공간(302)에서 각 데이터 런은 다른 것으로 부터 분리된다. 상기 세 개의 LBA 런은 이후 수신되는 시간 순으로 시간 A에 도시한 바와 같이 DLBA 어드레스 공간 내의 블록에 리매핑된다. 본 예는 DLBA 어드레스 공간(304) 내의 클러스터의 제 1 블록이 현재 기록 블록이라고 가정한다. 그러므로, LBA 어드레스 런 L1은 DLBA 어드레스 런 D1, 및 화이트 블록으로서 표시되는 또 다른 화이트 블록 D2로 분할된다. 마찬가지로, 그리고, D2 이후에, LBA 어드레스 공간 런 L2는 DLBA 어드레스 공간 런 D3로 번역된다. 마지막 DLBA 어드레스 공간 런 L3은 이후 DLBA 어드레스 공간 런 D4을 갖는 클러스터의 블록 및 DLBA 어드레스 스페이스 런 D5을 갖는 새로운 기록 블록을 완성한다. 아래 표 2를 보면, 현재까지 설명한 LBA 대 DLBA 번역은, 각각의 LBA 런이 포인터, LBA 어드레스 공간 내의 클러스터 길이, 및 DLBA 포인터를 구비하는 경우에 SAT를 초래할 것이다.
SAT의 DLBA 엔트리 측에서, LBA 런에 대응하는 각 DLBA 런이 리스트된다. 본 예에서, 단일 LBA 런 L1이 DLBA 어드레스 공간 내의 두 개의 분리된 블록으로 분할되었기 때문에 두 개의 DLBA 런이 존재하게 된다. 각각의 DLBA 런 이후에, LBA 클러스터 및 DLBA 마커로부터 오프셋이 제공되도록 LBA 오프셋 수가 제공된다. 그러므로, 마커 DLBA2가 LBA 런 L1으로 다섯 개의 클러스터인 어드레스를 계속하고 있기 때문에, 오프셋은 다섯 클러스터가 된다. LAB2 및 LBA3 마커는 LBA 순으로 STA의 LBA 엔트리 측에 계속해서 리스트된다. 따라서, DLBA 어드레스 공간 내의 데이터 런이, L1, L2, 및 L3가 기록되는 순서를 나타내는 L1, L2, 및 L3에 대응되지만, 표의 LBA 엔트리 측은 LBA 시간 순서가 아닌 LBA 어드레스 순서에 의해 구성된다.
LBA 엔트리 DLBA 엔트리
LBA 길이 DLBA 포인터 DLBA LBA 오프셋
LBA 1 9 클러스터 [1]까지 [1] DLBA 1 0
DLBA 2 5 클러스터
LBA 2 11 클러스터 [2]까지 [2] DLBA 4 0
DLBA 5 5 클러스터
LBA 3 3 클러스터 [3]까지 [3] DLBA 3 0
시간 B에서의 도 25를 참고하면, 추가적인 LBA 어드레스 런 L4가 L2에 추가되어 있다. 런 L2 및 L4는 실질적으로 단일 LBA 런을 형성하지만 명확성을 위해 본 예에서는 개별적으로 식별된다. L4에 대한 데이터는 최종 엔트리 D5 후에 부분적으로 채워진 제 3 기록 블록 내의 DLBA 어드레스 런 D6로서 기록된다. 표 3에 나타낸 바와 같이, 시간 B 이후의 SAT는 단순히 표의 LBA 엔트리 측 단부에서 LBA4 마커를 추가하고 DLBA 엔트리 측에서 DLBA7를 가리킨다.
LBA 엔트리 DLBA 엔트리
LBA 길이 DLBA 포인터 DLBA LBA 오프셋
LBA 1 9 클러스터 [1]까지 [1] DLBA 1 0
DLBA 2 5 클러스터
LBA 2 11 클러스터 [2]까지 [2] DLBA 4 0
DLBA 5 5 클러스터
LBA 3 3 클러스터 [3]까지 [3] DLBA 3 0
LBA 4 4 클러스터 [4]까지 [4] DLBA 7 0
도 25의 시간 C에서의 활동을 참고하면, 호스트는 데이터가 LBA 어드레스 런 L1 및 L2에 기록된 파일 또는 파일들을 삭제했다. DLBA 어드레스 공간(304)에서, D1, D2, 및 L2에 대응하는 L1은 D3에 대응되었다. 이러한 런이 현재 무용 데이터를 참조함에 따라, 예를 들어 전에 레드 블록이었던 두 개의 어드레스 블록이 현재 핑크 블록이 되는데, 이는 유효(레드)와 무용(화이트) 데이터의 혼합 때문이다. 따라서, 아래 표 4에 나타낸 바와 같이, SAT가 업데이트 된다. 유효 LBA 런만 남도록 모든 무용 LBA 런이 제거된다. LBA 어드레스 스페이스 런 L3 및 L4 만 남아있기 때문에, LBA 엔트리는 마터 LBA2 및 LBA4와 해당 DLBA 포인터만 포함하게 된다. SAT의 DLBA 엔트리 측은 유효 데이터에 필요한 DLBA 포인터만을 포함한다.
LBA 엔트리 DLBA 엔트리
LBA 길이 DLBA 포인터 DLBA LBA 오프셋
LBA 2 11 클러스터 [2]까지 [2] DLBA 4 0
DLBA 5 5 클러스터
LBA 4 4 클러스터 [4]까지 [4]DLBA 7 0
도 25에 도시한 시간의 최종 스냅샷에서, 시간 D, 원래 LBA 어드레스 공간 런 L3는 LBA 어드레스 공간 L5에서 정보와 함께 호스트에 의해 부분적으로 업데이트 되었다. 해당 DLBA 어드레스 공간 번역은 추가적인 화이트 공간이 보이도록 D4 및 D5의 일부를 무용화하는 것이고, 블록이 완성되고, LBA 어드레스 공간 런의 나머지가 DLBA 어드레스로 번역되도록 새로운 기록 블록이 식별될 때까지 새로운 LBA 런 L5는 DLBA 어드레스 공간 내의 현재 기록 블록의 단부에 순차적으로 추가된다. 이로써 DLBA 런 D7이 형성되고, 하나의 기록 블록 및 D8을 종료하며, 새로운 기록 블록을 시작한다. 아래 표 5를 참고하면, 이 표는, LBA 공간(302) 내의 LBA2 포인터가 여전히 DLBA 공간(304) 내의 제 1 DLBA 포인터를 가리키는 반면 DLBA 엔트리 측이 L3에 대응하는 DLBA 어드레스의 나머지에 대응하는 DLBA 런을 시작하는 추가적인 세 개의 DLBA 포인터를 포함하도록, 업데이트 된다. LBA 어드레스 공간(302) 내지 L4에 변화가 없었기 때문에, LBA4에 대응하는 L4에 대한 엔트리가 동일하게 남게 된다. 도 25의 예는 클러스터의 연속적인 블록을 나타내고 있다. 클러스터의 연속적인 블록이 가용한 경우, DLBA 어드레스 공간의 블록이 하나 이상의 개입 블록에 의해 분리된다. 연속적인 DLBA 어드레스 공간 블록은 단순히 설명의 편의를 위해 제공한다.
LBA 엔트리 DLBA 엔트리
LBA 길이 DLBA 포인터 DLBA LBA 오프셋
LBA 2 11 클러스터 [2]까지 [2] DLBA 4 0
DLBA 8 2 클러스터
DLBA 9 4 클러스터
DLBA 6 7 클러스터
LBA 4 4 클러스터 [4]까지 [4] DLBA 7 0
데이터에 대한 DLBA 어드레스 블록에 대해 상기한 바와 유사하게, SAT 플러시 계획은 무용 SAT 정보를 제거하고 재사용을 위해 화이트 블록을 생성하도록 구현된다.
상기 저장 어드레스 리매핑 알고리즘은 화이트 블록의 수가 소정 임계치 아래로 떨어진 경우, 화이트 블록 용량이 기록 블록 내의 호스트 데이터의 기록에 의해 소비되는 것과 동일한 속도로, 데이터 기록을 위해 할당될 수 있는 가용 화이트 블록 용량이 생성될 수 있도록 하기에 충분한 속도로 플러시(재배치라고도 함) 동작이 핑크 블록 상에서 수행되어야 한다는 원리로 작동한다. 데이터를 기록하도록 허용될 수 있는 이용 가능한 화이트 클러스터 용량은 플러시 동작시 데이터가 기록될 수 있는 재배치 블록 내의 화이트 클러스터 용량에 더해, 화이트 블록에서의 용량이다.
플러시 동작을 위해 선택된 핑크 블록에서의 화이트 클러스터 용량이 각 핑크 블록의 x%인 경우, 하나의 핑크 블록 상에서 플러시 동작에 의해 생성된 새로운 이용 가능한 용량은 핑크 블록으로부터 생성된 하나의 완전한 화이트 블록이고, 이는 플러시되는 블록으로부터의 데이터의 재배치에 의해 재배치 블록에서 소비되는 블록의 마이너스 (100-x)%이다. 그러므로 핑크 블록 상에서의 플러시 동작은 새로운 이용 가능한 용량의 화이트 블록의 x%를 생성한다. 따라서, 기록된 호스트 데이터에 의해 채워진 각 기록 블록의 경우, 플러시 동작을 100/x 핑크 블록 상에서 반드시 실시되어야 하며 재배치해야할 데이터는 (100-x)/x 블록이다. 그러므로 호스트에 의해 기록된 섹터에 프로그램된 섹터의 비율은 약 1+(100-x)/x로 정의된다.
평균 핑크 블록 내의 화이트 클러스터 용량의 퍼센티지는 사용되는 총 장치 용량의 퍼센티지 및 레드 블록인 데이터를 포함하는 블록의 퍼센티지에 의해 결정된다. 예를 들어, 장치가 80% 채워지고 데이터를 포함하는 블록의 30%가 레드 블록인 경우, 핑크 블록은 26.2% 화이트 클러스터 용량을 포함한다. 이는 마치 장치 내의 LBA 어드레스에서 동일하지 않도록 데이터를 삭제하는 분포가 화이트 용량의 평균%의 두 배를 갖는 일부 핑크 블록을 양산하게 된다. 그러므로, 본 예에서, 플러시 동작을 위해 선택된 핑크 블록은 52.4% 화이트 용량, 즉, x = 52.4이고, 호스트에 의해 기록된 데이터의 섹터 당 프로그램된 섹터의 비율은 1.90이다.
호스트 데이터 핑크 블록 또는 SAT 핑크 블록을 플러시할 핑크 블록을 결정하는 경우, 저장 어드레스 리매핑 알고리즘은 NTFS에 의해 기록된 $ 비트맵 파일을 모니터링함으로써 미할당 어드레스의 지정을 검출한다. 플러시 동작은 두 가지 방법으로 예정할 수 있다. 바람직하게, 플러시 동작은 예비 동작으로서 작용하고, 따라서 호스트 데이터 기록 속도가 영향을 받지 않도록 SSD 또는 기타 휴대용 플래시 메모리 디바이스가 아이들 상태인 경우에만 작동한다. 또한, 플러시 동작은 호스트가 데이터를 기록하는 동안 활성화되는 전 동작에서 이용될 수 있다. 플러시 동작이 전 동작인 경우, 이러한 동작은 호스트 활동이 발생하거나 "플래시 캐시" 명령이 SSD 또는 휴대용 플래시 메모리 디바이스의 포텐셜 파워-다운을 표시하는 경우 자동으로 중단된다. 상기 전 또는 예비 플러시 동작 선택은 동적인 결정일 수 있고, 이때 전 동작은 메모리 디바이스의 아이들 상태에서 구현할 수 있는 것보다 높은 플러시 속도가 요구될 때 실시된다. 예를 들어, 호스트 또는 메모리 디바이스는 메모리 디바이스가 완전히 채워질 때까지 일정한 호스트 데이터 기록 속도를 유지하기 위해 플러시 속도가 제어되도록 전 및 예비 플러시 동작 사이에서 토글된다. 상기 전 플러시 동작은 호스트 데이터 기록 동작 사이에 게재될 수 있다. 예를 들면, 호스트 인터페이스에서 유지되는 활동으로 인해 충분한 아이들 시간이 없는 경우, 블록 플러시 동작을 실시하기 위한 데이터 페이지의 재배치는 호스트 명령에 따라 숏 버스트에서 장치 활동으로 게재될 수 있다.
SAT 업데이트 절차
SAT 데이터 구조 내의 요소는 표 6에 나타낸 계층적 절차를 이용하여 업데이트 된다.
SAT 업데이트 구조의 계층
구조 위치 콘텐트 업데이트 트리거
DLBA 런 기록 블록 또는 재배치 블록 호스트 데이터 호스트에 의해 결정
SAT 리스트 RAM 아직 SAT 페이지에 기록되지 않은 LBA 대 DLBA 매핑 엔트리 DLBA 런이 기록 블록 또는 재배치 블록에 기록되는 경우
SAT 페이지 SAT 기록 블록 LBA 대 DLBA 매핑 엔트리 SAT 리스트가 꽉 차거나, 또는 호스트 데이터의 소정 량이 DLBA 런으로서 기록된 경우
SAT 인덱스 버퍼 최종기록 SAT 페이지 아직 SAT 인덱스 페이지에 기록되지 않은 SAT 인덱스 엔트리 임의의 SAT 페이지가 기록된 경우
SAT 인덱스 페이지 SAT 기록 블록 SAT 인덱스 엔트리 SAT 인덱스 버퍼가 꽉 차거나, 또는 SAT 인덱스 페이지의 소정 수가 업데이트될 필요가 있는 경우
표 6에 나타낸 바와 같이, DLBA 런 업데이트를 제외하고, 특정 구조를 위한 SAT 업데이트는 SAT 계층 내의 낮은 순서의 구조에서의 활동에 의해 시작된다. SAT 리스트는 완전한 DLBA 런과 관련된 데이터가 기록 블록에 기록될 때마다 업데이트 된다. 최대 허용 수의 엔트리가 SAT 리스트에 존재하는 경우에 하나 이상의 SAT 페이지가 업데이트 된다. SAT 페이지가 업데이트 되면, SAT 리스트의 하나 이상의 엔트리가 상기 SAT 페이지에 추가되고 SAT 리스트에서 제거된다. SAT 리스트가 꽉 찬 경우 업데이트 되는 SAT 페이지는 여러 개의 다른 페이지 그룹으로 분할되고, 단일 그룹만이 단일 동작으로 업데이트 될 필요가 있다. 이는 SAT 업데이트 동작이 호스트로부터 데이터 기록 동작을 지연시키는 시간을 최소화하는 데 도움이 된다. 이 경우, SAT 리스트로부터, 업데이트된 SAT 페이지 그룹으로 복사되는 엔트리만이 SAT 리스트에서 제거된다. 업데이트된 SAT 페이지 그룹의 크기는 메모리 시스템(2)에 접근하기 위해 호스트 시스템(1)의 능력을 방해하지 않는 포인트에 설정된다. 한 구현 예에서, 상기 그룹의 크기는 4 SAT 페이지일 수 있다.
SAT 인덱스 버퍼 필드는 가장 최근 기록된 SAT 페이지에서 유효하다. 이는 SAT 페이지가 기록될 때마다 추가적인 프로그래밍 없이 업데이트 된다. 마지막으로, 최고 허용 수의 엔트리가 SAT 인덱스 버퍼에 존재하는 경우에 SAT 인덱스 페이지가 업데이트 된다. SAT 인덱스 페이지 업데이트시, SAT 인덱스 버퍼로부터의 하나 이상의 엔트리가 SAT 인덱스 페이지에 추가되고 SAT 인덱스 버퍼에서 제거된다. SAT 페이지의 업데이트와 관련하여 상기한 바와 같이, 업데이트 해야할 SAT 인덱스 페이지는 여러 개의 다른 페이지 그룹으로 분할될 수 있고, 단일 그룹만이 단일 동작으로 업데이트될 필요가 있다. 이는 SAT 업데이트 동작이 호스트로부터 데이터 기록 동작을 지연시키는 시간을 최소화한다. SAT 인덱스 버퍼에서 업데이트된 SAT 인덱스 페이지의 그룹으로 복사된 엔트리만이 업데이트되어 SAT 인덱스 버퍼에서 제거된다. 업데이트된 SAT 인덱스 페이지 그룹의 크기는 한 구현 예에서 4 페이지일 수 있다.
SAT 페이지 또는 SAT 인덱스 페이지에 의해 확대된 LBA 범위 내에서 요구되는 엔트리의 수는 가변적이며 시간에 따라 변할 수 있다. 그러므로, SAT 내의 페이지가 넘치는 경우 또는 페이지 빈도가 매우 가벼워지는 것은 일반적이다. 이러한 상황은 SAT에서 페이지를 분할하고 합치기 위한 계획에 의해 관리될 수 있다.
SAT 페이지 또는 SAT 인덱스 페이지의 업데이트시 엔트리가 추가되는 반면, 페이지 내에 변화를 수용하기 위한 가용 미사용 공간이 충분치 않은 경우, 페이지는 두 개로 분할된다. 새로운 SAT 페이지 또는 SAT 인덱스 페이지가 도입되고, LBA 범위는 이전에 꽉 찬 페이지 및 반을 채울 정도의 수의 엔트리를 제공하는 새로운 빈 페이지에 대해 결정된다. 가능하다면 이후 두 페이지 모두 단일 프로그래밍 동작에 의해 기록된다. 페이지가 SAT 페이지인 경우, 두 페이지에 대한 SAT 인덱스 엔트리가 최종으로 기록된 SAT 페이지 내의 인덱스 버퍼 필드에 포함된다. 상기 페이지가 SAT 인덱스 페이지인 경우, 페이지 인덱스 엔트리는 최종으로 기록된 SAT 인덱스 페이지 내의 페이지 인덱스 필드에 포함된다.
연속적인 LBA 범위를 갖는 둘 이상의 SAT 페이지 또는 두 개의 SAT 인덱스 페이지의 빈도가 적은 경우, 상기 페이지는 단일 페이지로 합병될 수 있다. 합병은 결과적인 단일 페이지가 80% 이하로 채워진 경우 개시된다. 새로운 단일 페이지에 대한 LBA 범위가 개별적인 합병 페이지에 의해 확대된 범위에 의해 정의된다. 상기 합병된 페이지가 SAT 페이지인 경우, 새로운 페이지 및 합병된 페이지에 대한 SAT 인덱스 엔트리는 최종적으로 기록된 SAT 페이지 내의 인덱스 버퍼 필드에서 업데이트된다. 상기 페이지가 SAT 인덱스 페이지인 경우, 페이지 인덱스 엔트리는 최종으로 기록된 SAT 인덱스 페이지 내의 페이지 인덱스 필드에서 업데이트된다.
파워 주기 이후, 즉 파워가 제거되어 복귀된 경우, SAT 리스트를 이전 파워 주기와 정확히 동일한 상태로 RAM에 재구성할 필요가 있다. 이는 데이터 헤더 내의 LBA 어드레스 정보로부터, 최종 SAT 페이지 업데이트 이후에 기록된 추가적인 데이터를 식별하기 위해 기록 블록 및 재배치 블록을 모두 스캔함으로써 구현할 수 있다. 이러한 블록의 위치 및 최종 SAT 페이지의 업데이트 시간에 이들 내의 기록 및 재배치 포인터는 또한 최종으로 기록된 SAT 페이지 내의 필드에 기록된다. 그러므로 이러한 포인터의 위치에서만 스캐닝을 시작할 필요가 있다.
플러싱 SAT 블록
SAT 블록의 플러시 과정은 호스트로부터 수신된 데이터에 대해 위에 설명한 바와 유사하지만, SAT 블록 상에서만 동작한다. 저장 어드레스 리매핑 기록 및 플러시 알고리즘에 의한 SAT에 대한 업데이트는 SAT 블록으로 하여금 도 26에 도시한 바와 같은 블록 상태 사이에서 전환을 일으키도록 한다. 우선, 화이트 블록 리스트의 화이트 블록은 SAT 기록 블록으로서 할당된다(단계 310). SAT 기록 블록 내의 최종 페이지가 할당된 경우, 블록은 레드 SAT 블록이 된다(단계 312). SAT 기록 블록은 또한 일부 페이지가 이미 무용화되었다면 핑크 SAT 블록으로의 전환을 일으킬 수 있다. 그러나 명확성을 위해 상기 전환은 도 26에 도시하지 않는다. SAT 페이지 또는 SAT 인덱스 페이지가 업데이트 되고 레드 SAT 블록이 핑크 SAT 블록으로 되는 경우 레드 SAT 블록 내에 하나 이상의 페이지가 무용화된다 (단계 314). 선택된 핑크 SAT 블록 상에서 플러시 동작이 완료되면, 상기 핑크 SAT 블록은 화이트 블록이 된다(단계 316).
이제, 어떤 SAT 블록에 플러시 절차가 가해질 것인지를 선택하는 과정을 설명한다. 적은 수의 유효 페이지 또는 클러스터를 포함하는 SAT 블록은 플러시될 다음 SAT 블록으로서 선택된다. 상기 블록은 가장 적은 수의 유효 페이지를 갖는 SAT 블록의 5% 내외이다. 블록의 선택은 가장 낮은 유효 페이지 카운트 값을 갖는 16개의 SAT 블록의 리스트를 만드는 예비 과정에 의해 구현될 수 있다. 이 과정은 바람직하게 SAT 블록 플러시 동작이 예정된 M으로 표시된 시간에 한 사이클을 완성한다.
어떤 SAT 블럭이 다음에 플러시될지를 결정하기 위한 예비 과정의 한 사이클에서 일어나는 활동의 예를 도 27에 도시하고 있다. 우선, 이전 과정 사이클에서 식별된 블록 세트 이후의 다음 N 세트의 SAT 블록을 식별하기 위해 블록 정보 테이블(BIT)을 스캔한다 (단계 318에서). 제 1 SAT 블록 세트는 장치 초기화 이후에 제 1 과정 사이클에서 식별되어야 한다. N의 값은 특정 애플리케이션을 위해 적절히 선택될 수 있고 바람직하게는 SAT 플러시 블록의 가용성을 확보하기 위해 M에 대해 선택된 값보다 크다. 일 예로서, M은 4일 수 있고 N은 8일 수 있다. 유효 페이지 카운트 값은 상기 세트 내의 SAT 블록 각각에 대해 0으로 설정된다(단계 320). 상기 세트 내의 임의의 SAT 블록 내에 위치된 유효 SAT 인덱스 페이지를 식별하기 위해 페이지 인덱스 엔트리가 캐시된 페이지 인덱스 필드에서 스캔된다(단계 322). 따라서 유효 페이지 카운트 값이 증가한다. SAT 인덱스 엔트리는 상기 세트 내의 임의의 SAT 블록 내에 위치된 유효 SAT 페이지를 식별하기 위해 각각의 SAT 인덱스 페이지에서 차례로 스캔된다(단계 324). 따라서 유효 페이지 카운트 값이 증가하게 된다(단계 326). 페이지 인덱스 및 SAT 인덱스 페이지가 상기 유효 페이지 카운트 값을 결정하기 위해 스캔된 후, 상기 세트 내의 각 SAT 블록에 대한 유효 페이지 카운트 값이 낮은 유효 페이지 카운트 값에 대한 리스트 내의 SAT 블록에 대해 추산되고, 상기 리스트 내의 블록은 필요한 경우 상기 세트의 블록에 의해 대체된다(단계 328). SAT 블록 플러시 동작이 예정되어야 할 경우, 상기 리스트 내의 가장 낮은 유효 페이지 카운트 값을 갖는 블록이 선택된다.
SAT 블록 플러시 동작에서, 모든 유효 SAT 인덱스 페이지 및 SAT 페이지는 선택된 블록으로부터 SAT 기록 포인터(242)까지 재배치된다. 상기 페이지 인덱스 필드는 최종적으로 기록된 SAT 인덱스 페이지에서만 업데이트된다. SAT 블록의 수를 거의 일정하게 유지하기 위하여, SAT 페이지 및 SAT 인덱스 페이지 상에서의 업데이트 동작에 의해 소비된 SAT 내의 페이지 수는 SAT 블록 플러시 동작에 의해 회복되는 무용의 SAT 페이지 및 SAT 인덱스 페이지의 수와 균형을 이루어야 한다. 다음 SAT 플러시 동작을 위해 선택된 SAT 블록 내의 무용의 정보의 페이지 수는 상기 도 27에 관련하여 설명한 바와 같이 결정된다. SAT에 기록된 정보의 동일한 유효 페이지수가 이전의 SAT 플러시 동작 이후에 SAT에 기록된 경우 다음 SAT 블록 플러시 동작이 일어나도록 예정될 수 있다.
블록 정보 테이블( BIT )
블록 정보 테이블(BIT)는 화이트 블록, 핑크 블록, 및 SAT 블록에 대한 블록 어드레스의 개별적인 리스트를 기록하는 데 이용된다. BIT 기록 블록은 모든 다른 BIT 블록이 위치되는 곳에 대한 정보를 포함한다. 한 구현 예에서, 저장 어드레스 리매핑 알고리즘 및 관련된 시스템은 기록 블록, 재배치 블록, 또는 SAT 블록으로서 할당되는 블록의 선택을 가능하게 하기 위해 화이트 블록에 대한 리스트를 유지하는 것이 바람직하다. 또한, 블록 플러시 동작의 목적이 되는 핑크 블록 및 SAT 블록의 선택을 가능하게 하기 위해 핑크 블록의 리스트를 유지하는 것이 바람직하다. 이러한 리스트는 그 구조가 SAT를 근접하여 비추는 BIT에서 유지된다.
BIT 데이터 구조
상기 BIT는 BIT 블록으로 알려진 DLBA 어드레스의 블록 내에서 구현된다. 블록 리스트 정보는 BIT 페이지에 저장되고 "DLBA 블록 대 BIT 페이지" 인덱싱 정보는 BIT 인덱스 페이지에 저장된다. BIT 페이지 및 BIT 인덱스 페이지는 동일 BIT 블록 내에서 임의의 순서로 혼합된다. 상기 BIT는 다중 BIT 블록으로 구성되지만, BIT 정보는 현재 BIT 기록 블록으로 지정된 단일 블록에만 기록될 수 있다. 모든 다른 BIT 블록은 이전에 완전히 기록되었고, 유효 및 무용 페이지의 조합을 포함할 수 있다. BIT 블록 플러시 계획은 상기 SAT 블록에 대한 것과 동일하게 무용 BIT 정보의 페이지를 삭제하고 재사용을 위한 화이트 블록을 생성하기 위해 구현된다.
BIT 블록
도 28에 도시한 바와 같이, BIT 블록은 BIT 정보를 저장하는 데에 이용되는 DLBA 어드레스의 블록이다. 이는 BIT 페이지(324) 및 BIT 인덱스 페이지(344)를 포함할 수 있다. BIT 블록은 유효 BIT 페이지, 유효 BIT 인덱스 페이지, 및 무용 페이지의 어떠한 조합도 포함할 수 있다. BIT 정보는 BIT 기록 블록(340)으로 지정된 단일 BIT 블록에만 기록된다. BIT 정보는 증가하는 BIT 기록 포인터(346)에 의해 지정된 연속적인 위치에서 BIT 기록 블록(340)에 기록된다. BIT 기록 블록(340)이 완전히 기록된 경우, 화이트 블록은 새로운 BIT 기록 블록으로서 할당된다. BIT를 구성하는 블록은 BIT 블록 위치에 의해 식별되고, 이는 장치 내의 블록의 빈도 내의 블록 어드레스이다. BIT 블록은 테이블 페이지로 분할되고, 그 안에 BIT 페이지(342) 또는 BIT 인덱스 페이지(344)가 저장될 수 있다. BIT 페이지 위치는 BIT 블록 내의 순차적 수에 의해 어드레스된다. BIT 정보는 비BIT 정보로부터 다른 플래시 메모리 블록으로 분리되거나, 비BIT 정보 이외의 다른 형태의 블록(예를 들면 바이너리 대 MLC)으로 분리되거나, 혹은 BIT 페이지 내의 블록의 비BIT 정보와 혼합될 수 있다.
BIT 페이지(342)는 상기 BIT 내에서 블록 리스트 정보의 최소 업데이트 가능 단위이다. 업데이트된 BIT 페이지는 BIT 기록 포인터(346)에 의해 지정된 위치에 기록된다. 임의의 리스트 내의 연속적인 블록의 블록 어드레스가 인접할 필요가 없더라도 BIT 페이지(342)는 화이트 블록, 핑크 블록, 및 지정된 범위 내에 DLBA 블록 어드레스를 갖는 SAT 블록의 리스트를 포함한다. BIT 페이지 내의 DLBA 블록 어드레스의 범위는 어떠한 다른 BIT 페이지 내의 DLBA 블록 어드레스의 범위와도 겹치지 않는다. BIT 페이지는 제약 없이 BIT 블록의 완성된 세트 전반에 걸쳐 분포될 수 있다. 임의의 DLBA 어드레스의 범위에 대한 BIT 페이지는 임의의 BIT 블록 내에 있을 수 있다. BIT 페이지는 두 개의 제어 포인터(356)에 더해, 화이트 블록 리스트(WBL) 필드(348), 핑크 블록 리스트(PBL) 필드(350), SAT 블록 리스트(SBL) 필드(352), 및 인덱스 버퍼 필드(354)를 포함한다. 파라미터 백업 엔트리는 휘발성 RAM에 저장되어 있는 일부 파라미터의 값을 또한 포함한다.
BIT 페이지(342) 내의 WBL 필드(348)는 BIT 페이지(342)와 관련된 DLBA 블록 어드레스의 범위 내에서, 화이트 블록 리스트 내의 블록에 대한 엔트리를 포함한다. BIT 페이지(342)에 의해 확대된 DLBA 블록 어드레스의 범위는 어떠한 다른 BIT 페이지(342)에 의해 확대된 DLBA 블록 어드레스의 범위와도 겹치지 않는다. WBL 필드(348)는 가변적인 길이를 갖고 가변적인 수의 WBL 엔트리를 포함한다. WBL 필드 내에서, WBL 엔트리는 BIT 페이지(342)에 의해 인덱스된 DLBA 블록 어드레스의 범위 내의 모든 화이트 블록을 위해 존재한다. WBL 엔트리는 블록의 DLBA 어드레스를 포함한다.
BIT 페이지(342) 내의 PBL 필드(350)는 BIT 페이지(342)와 관련된 DLBA 블록 어드레스의 범위 내에서, 핑크 블록 리스트의 블록에 대한 엔트리를 포함한다. BIT 페이지(342)에 의해 확대된 DLBA 블록 어드레스의 범위는 어떠한 다른 BIT 페이지(342)에 의해 확대된 DLBA 블록 어드레스의 범위와도 겹치지 않는다. PBL 필드(350)는 가변적인 길이를 갖고 가변적인 수의 PBL 엔트리를 포함한다. PBL 필드(350) 내에서, PBL 엔트리는 BIT 페이지(342)에 의해 인덱스된 DLBA 블록 어드레스의 범위 내의 모든 핑크 블록을 위해 존재한다. PBL 엔트리는 블록의 DLBA 어드레스를 포함한다.
BIT 페이지 내의 SBL(352) 필드는 BIT 페이지(342)와 관련된 DLBA 블록 어드레스의 범위 내에서, SAT 블록 리스트의 블록에 대한 엔트리를 포함한다. BIT 페이지(342)에 의해 확대된 DLBA 블록 어드레스의 범위는 어떠한 다른 BIT 페이지(342)에 의해 확대된 DLBA 블록 어드레스의 범위와도 겹치지 않는다. SBL 필드(352)는 가변적인 길이를 갖고 가변적인 수의 SBL 엔트리를 포함한다. SBL 필드(352)에서, SBL 엔트리는 BIT 페이지(352)에 의해 인덱스된 DLBA 블록 어드레스의 범위 내의 모든 SAT 블록을 위해 존재한다. SBL 엔트리는 블록의 DLBA 어드레스를 포함한다.
인덱스 버퍼 필드(354)는 모든 BIT 페이지(342)의 일부로서 기록되지만 가장 최근에 기록된 BIT 페이지에서만 유효하다. BIT 페이지(342)의 인덱스 버퍼 필드(354)는 BIT 인덱스 엔트리를 포함한다. BIT 인덱스 엔트리는 관련된 BIT 인덱스 페이지(344) 내에 유효 엔트리를 현재 갖지 않는 BIT 내의 모든 BIT 페이지(342)를 위해 존재한다. BIT 인덱스 엔트리는 BIT 페이지(342)가 기록될 때마다 생성 또는 업데이트되고, 관련된 BIT 인덱스 페이지(344)가 업데이트될 때 삭제된다. BIT 인덱스 엔트리는 BIT 페이지(342)에 의해 인덱스된 범위의 제 1 DLBA 블록 어드레스, BIT 페이지(342)에 의해 인덱스된 범위의 최종 DLBA 블록 어드레스, BIT 페이지(342)를 포함하는 BIT 블록 위치, 및 BIT 블록 내의 BIT 페이지의 BIT 페이지 위치를 포함할 수 있다. 인덱스 버퍼 필드(354)는 BIT 인덱스 엔트리의 고정된 수에 대한 용량을 갖고 일시적으로 32로 정의된다. 이 수는 BIT 페이지(342) 및 BIT 인덱스 페이지(344)가 기록될 수 있는 상대적인 주파수를 결정한다.
BIT 페이지(342)의 제어 포인터(356)는 PBL 필드(350)의 시작 및 SBL 필드(352)의 시작의 WBL 필드(348)의 시작으로부터 오프셋을 정의한다. BIT 페이지(342)는 많은 리스트 엔트리로서 오프셋 값을 포함한다.
BIT 인덱스 페이지
한 세트의 BIT 인덱스 페이지(344)는 BIT 내의 모든 유효 BIT 페이지(342)의 위치에 인덱스를 제공한다. 개별적인 BIT 인덱스 페이지(344)는 DLBA 블록 어드레스의 범위에 관련된 유효 BIT 페이지의 위치를 지정하는 엔트리를 포함한다. BIT 인덱스 페이지에 의해 확대된 DLBA 블록 어드레스의 범위는 어떠한 다른 BIT 인덱스 페이지(344)에 의해 확대된 DLBA 블록 어드레스의 범위와도 겹치지 않는다. 상기 엔트리는 관련된 BIT 페이지(342)의 DLBA 블록 어드레스 범위 값에 따라 순서가 정해진다. BIT 인덱스 페이지(344)는 고정된 수의 엔트리를 포함한다.
BIT 인덱스 페이지는 제약 없이 BIT 블록의 완전한 세트의 전반에 걸쳐 분포될 수 있다. 임의의 DLBA 블록 어드레스 범위에 대한 BIT 인덱스 페이지(344)는 임의의 BIT 블록에 있을 수 있다. BIT 인덱스 페이지(344)는 BIT 인덱스 필드(358) 및 페이지 인덱스 필드(360)를 포함한다. BIT 인덱스 필드(358)는 BIT 인덱스 페이지(344)에 의해 확대된 DLBA 블록 어드레스 범위 내의 모든 유효 BIT 페이지에 대한 BIT 인덱스 엔트리를 포함한다. BIT 인덱스 엔트리는 단일 BIT 페이지(342)와 관련이 있고, BIT 페이지, BIT 페이지를 포함하는 BIT 블록 위치, 및 BIT 블록 내에 BIT 페이지의 BIT 페이지 위치에 의해 인덱스된 제 1 DLBA 블록을 포함할 수 있다.
BIT 인덱스 페이지(344)의 페이지 인덱스 필드(360)는 BIT 내의 모든 유효 BIT 인덱스 페이지에 대해 페이지 인덱스 엔트리를 포함한다. BIT 페이지 인덱스 엔트리는 BIT 내의 모든 유효 BIT 인덱스 페이지(344)를 위해 존재하고 BIT 인덱스 페이지, BIT 인덱스 페이지를 포함하는 BIT 블록 위치, 및 BIT 블록 내의 BIT 인덱스 페이지의 BIT 페이지 위치에 의해 인덱스된 제 1 DLBA 블록을 포함할 수 있다.
BIT 유지
BIT 페이지(342)는 WBL(348), PBL(350), 및 SBL(352)로부터 엔트리를 추가 및 제거하기 위해 업데이트 된다. 만약 파워 주기 이후에 리스트가 RAM에 복구되면, 여러 엔트리에 대한 업데이트는 RAM 내의 리스트에 축적되어 단일 동작에 의해 BIT 내에서 구현된다. BIT 인덱스 버퍼 필드는 가장 최근에 기록된 BIT 페이지에서 유효하다. 이는 BIT 페이지가 기록될 때마다 추가적인 프로그래밍 없이 업데이트된다. BIT 인덱스 페이지가 업데이트되는 경우, BIT 인덱스 버퍼로부터 하나 이상의 엔트리가 BIT 인덱스 페이지에 추가되고 BIT 인덱스 버퍼로부터 제거된다. BIT 인덱스 버퍼 내에 최대 허용가능한 수의 엔트리가 존재하는 경우 하나 이상의 BIT 인덱스 페이지(344)가 업데이트 된다.
BIT 페이지(342) 또는 BIT 인덱스 페이지(344)에 의해 확대된 DLBA 블록 범위 내에 요구되는 엔트리의 수는 가변적이며 시간에 따라 변할 수 있다. 그러므로, BIT 내에 페이지가 넘치거나 페이지의 빈도가 매우 가벼워지는 것은 일반적이다. 이러한 상황은 BIT 내의 페이지를 분할 및 합병하는 계획에 의해 관리된다.
엔트리가 BIT 페이지(342) 또는 BIT 인덱스 페이지(344)의 업데이트시 추가되는 반면 변화를 수용할 만한 페이지 내의 충분한 가용 미사용 공간이 없는 경우, 페이지는 둘로 분할된다. 새로운 BIT 페이지(342) 또는 BIT 인덱스 페이지(344)가 도입되고, DLBA 블록 범위는 이전에 채워진 페이지 및 반으로 만드는 엔트리의 수를 제공할 새로운 빈 페이지에 대해 결정된다. 이후 두 페이지 모두 가능하다면 단일 프로그래밍 동작에 의해 기록된다. 상기 페이지가 BIT 페이지(342)인 경우, 두 페이지에 대한 BIT 인덱스 엔트리는 최종 기록 BIT 페이지 내의 인덱스 버퍼 필드에 포함된다. 상기 페이지가 BIT 인덱스 페이지(344)인 경우, 페이지 인덱스 엔트리는 최종으로 기록된 BIT 인덱스 페이지 내의 페이지 인덱스 필드에 포함된다.
반대로, 연속적인 DLBA 블록 범위를 갖는 둘 이상의 BIT 페이지(342) 또는 두 개의 BIT 인덱스 페이지(344)의 빈도가 낮은 경우, 상기 페이지는 단일 페이지로 합병될 수 있다. 합병은 결과적인 단일 페이지가 80% 이하로 채워진 경우 초기화된다. 새로운 단일 페이지에 대한 DLBA 블록 범위는 개별적인 합병 페이지에 의해 확대된 범위에 의해 정의된다. 상기 합병된 페이지가 BIT 페이지인 경우, 새로운 페이지에 대한 BIT 인덱스 엔트리 및 합병된 페이지는 최종적으로 기록된 BIT 페이지 내의 인덱스 버퍼 필드에서 업데이트된다. 상기 페이지가 BIT 인덱스 페이지인 경우, 페이지 인덱스 엔트리는 최종적으로 기록된 BIT 인덱스 페이지 내의 페이지 인덱스 필드에서 업데이트된다.
BIT 블록 플러싱
BIT 블록 플러싱 과정은 상기 SAT 블록에 대한 것과 거의 유사하므로 여기서는 반복하지 않는다.
제어 블록
다른 실시예에서, BIT 및 SAT 정보는 동일 블록의 다른 페이지에 저장될 수 있다. 제어블록이라고도 하는 이 블록은 SAT 또는 BIT 정보의 페이지가 제어 블록 내의 페이지를 차지하도록 구성될 수 있다. 제어 블록은 정수의 페이지를 갖는 페이지 단위로 구성되고, 이때 각 페이지 단위는 제어 블록 내의 연속적인 수에 의해 어드레스 된다. 페이지 단위는 한 페이지의 물리적 메모리 내의 최소 크기 및 한 메타페이지의 최대 크기를 가질 수 있다. 제어 블록은 유효 SAT 페이지, SAT 인덱스 페이지, BIT 페이지, BIT 인덱스 페이지, 및 무용 페이지들의 어떠한 조합도 포함할 수 있다. 그러므로, 개별적인 SAT 및 BIT 블록을 갖는 것 외에, SAT 및 BIT 정보는 동일 블록 또는 블록들에 저장될 수 있다. 상기한 개별적인 SAT 및 BIT 기록 블록과 마찬가지로, 제어 정보(SAT 또는 BIT 정보)는 단일 제어 기록 블록에만 기록될 수 있고, 제어 기록 포인터는 제어 데이터를 수신하기 위한 다음 후속의 위치를 식별하며, 제어 기록 블록이 완전히 기록된 경우 기록 블록은 새로운 제어 기록 블록으로서 할당된다. 또한, 제어 블록은 각각 메모리 시스템(2) 내의 바이너리 블록의 빈도로 블록 어드레스에 의해 식별될 수 있다. 제어 블록은 제어 블록에 대한 재배치 블록이 유효 SAT 또는 BIT 정보에 관련된 페이지에 접근하는 차이가 있는 상태에서, 상기 분리된 SAT 및BIT 블록에 대해 기술한 바와 동일한 방식으로 새로운 비기록 용량을 생성하도록 플러시될 수 있다. 플러시를 위한 적절한 핑크 제어 블록의 선택 및 타이밍은 SAT 플러시 과정에 대해 상기한 바와 동일한 방식으로 구현될 수 있다.
LBA 할당 상태 모니터링
저장 어드레스 리매핑 알고리즘은 호스트에 의해 유효 데이터에 현재 할당된 호스트 LBA 어드레스에 대해서만 어드레스 매핑 정보를 기록한다. 그러므로 이 매핑정보를 정확하게 유지하기 위해 언제 클러스터가 호스트에 의해 데이터 저장소로부터 환할당(de-allocated)되었는지를 결정할 필요가 있다.
일 실시예에서, 호스트 파일 시스템으로부터의 명령은 저장 어드레스 리매핑 알고리즘으로 환할당된 클러스터에 대한 정보를 제공할 수 있다. 예를 들어, 마이크로사의 Vista 운영 시스템에 이용 가능한 "데이터셋" 명령이 제안되었다. 마이크로소프트에 의해 "ATA8-ACS2에 대한 삭제된 데이터 제안의 통보'에 대한 제안이 T13에 제출되었다. 이러한 새로운 명령은 삭제된 데이터의 통보를 제공한다. 단일 명령은 무용 데이터를 2GB까지 나타내면서, 연속적인 LBA 어드레스에서의 데이터의 삭제 장치를 통보할 수 있다.
NTFS 메타데이터 해석
트림 명령과 같은 호스트 파일 시스템 명령이 이용 불가능한 경우, LBA 할당 상태는 NTFS에 의해 기록된 $ 비트맵 시스템 파일의 정보변화를 추적함으로써 모니터링될 수 있고, 상기 NTFS는 그 볼륨의 모든 클러스터의 할당 상태의 비트맵을 포함한다. 개인 컴퓨터(PC)에서의 $ 비트맵 변화를 추적하는 일 예를 설명한다.
파티션 부트 섹터
파티션 부트 섹터는 파티션 상의 섹터 0이다. 바이트 오프셋 0x30에서의 필드는 표 7의 예에서와 같이, 마스터 파일 테이블(MFT)의 시작을 위한 논리적인 클러스터 수를 포함한다.
파티션 부트 섹터 내 바이트 오프셋 MFT
클러스터
0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37
D2 4F 0C 00 00 00 00 00 0xC4FD2
MFT 에서의 $ 비트맵 기록
$ 비트맵이라 하는 시스템 파일은 볼륨 상의 모든 클러스터의 할당 상태의 비트맵을 포함한다. $ 비트맵 파일을 위한 기록은 MFT에서 기록번호 6이다. MFT 기록은 1024 바이트의 길이를 갖는다. 그러므로, $ 비트맵은 MFT의 시작에 대해 십진의 12 섹터의 오프셋을 갖는다. 상기 예에서, MFT는 클러스터 0xC4FD2 또는 십진 806866에서 시작하고, 이는 섹터 십진 6454928이다. $ 비트맵 파일 기록은 따라서 섹터 십진 6454940에서 시작한다.
다음 정보는 $ 비트맵 기록(기술된 예에서) 내에 존재한다. 바이트 오프셋 0x141 내지 0x142에서의 필드는 표 8의 예에서와 같이 $ 비트맵 파일에 대한 제 1 데이터 속성의 클러스터의 길이를 포함한다.
$ 비트맵 기록에서 바이트 오프셋 데이터 속성 길이
0x141 0x142
FB 00 0xFB
바이트 오프셋 0x143 내지0x145 에서의 필드는 표 9의 예에서와 같이 $ 비트맵 파일에 대한 제 1 데이터 속성의 시작의 클러스터 수를 포함한다.
$ 비트맵 기록에서 바이트 오프셋 EP이터 속성 클러스터
0x143 0x144 0x145
49 82 3E 0x3E8249
바이트 오프셋 0x147 내지 0x148 에서의 필드는 표 10의 예에서와 같이 $ 비트맵 파일에 대한 제 2 데이터 속성의 클러스터 길이를 포함한다.
$ 비트맵 기록에서 바이트 오프셋 데이터 속성 길이
0x147 0x148
C4 00 0xC4
바이트 오프셋 0x149 내지 0x14B에서의 필드는 표 11의 예에서와 같이$ 비트맵 파일에 대한 제 1 데이터 속성의 시작 및 제 2 데이터 속성의 시작 사이의 클러스터의 수를 포함한다.
$ 비트맵 기록에서 바이트 오프셋 데이터 속성 클러스터 점프
0x149 0x14
A
0x14B
35 82 3E 0x3E8235
$ 비트맵 파일에 대한 데이터 속성
$ 비트맵 파일에 대한 데이터 속성 내의 섹터는 논리 클러스터 수의 순서로, 볼륨 내의 모든 클러스터의 할당 상태의 비트맵을 포함한다. '1'은 클러스터가 파일 시스템에 의해 데이터 저장소에 할당되었음을 나타내고 '0'은 클러스터가 자유로운 것을 나타낸다. 비트맵 내의 각 바이트는 8 클러스터 또는 64 십진 섹터의 논리 범위에 관련된다. 비트맵 내의 각 섹터는 0x1000(십진 4096) 클러스터 또는 0x8000(십진 32768) 섹터의 논리 범위에 관련된다. 비트맵 내의 각 클러스터는 논리 0x8000(십진 32768) 클러스터의 범위 또는 0x40000(십진 262144) 섹터에 관련된다.
클러스터 할당 상태 유지
호스트로부터의 기록 동작이 $ 비트맵 파일에 대한 데이터 속성 내의 섹터에 가해지는 경우, 상기 섹터의 이전 버전은 저장장치 및, 호스트에 의해 방금 기록된 데이터에 대한 데이터로부터 판독해야 한다. "1"상태에서 "0"상태로 토글된 모든 비트는 식별되어야 하고, 호스트에 의해 환할당된 클러스터의 해당 논리 어드레스가 결정된다. 제안된 트림 명령과 같은 명령 또는 NTFS 메타데이터 추적은 호스트에 의해 클러스터 환할당이 있었음을 알리고, 저장 어드레스 테이블(SAT)은 지정된 클러스터에 대한 어드레스의 환할당을 기록하기 위해 업데이트되어야 한다.
논리 대 물리적 매핑
상기 내용은 주로 호스트 LBA 어드레스 공간으로부터 DLBA 어드레스 공간(저장 LBA 공간이라고도 함)으로의 논리 대 논리 매핑이 필요한 저장 어드레스 리매핑의 구현에 그 초점을 맞추고 있다. 상기한 바와 같이, 매핑 알고리즘이 도 9 및 10의 메모리 디바이스 또는 호스트 상의 개별적인 애플리케이션보다는 메모리 디바이스의 메모리 관리자에 합쳐지는 도 8의 실시예는 호스트 LBA로부터 메모리 시스템(2) 내의 물리적 어드레스로 매핑을 한다. 도 8의 실시예에서, 상기 DLBA는 중간 논리 어드레스가 아닌 물리적 메모리 어드레스에 의해 대체된다. 도 8의 실시예에서의 저장 리매핑 알고리즘은 메모리 시스템(2) 또는 호스트(1) 상의 개별적인 애플리케이션이 아닌 메모리 시스템(2) 내의 메모리 제어기(8)의 일부이다 (각각 도 9와 도 10).
도 8의 물리적 매핑 배열에 대한 논리와 도 9 및 10의 논리적 매핑 배열에 대한 논리의 차이를 도 29 내지 32를 참고로 설명할 수 있다. 도 29는 기록 블록(412)이 되는 물리적 메모리 내에서 가용 화이트 블록 중 하나를 논리 대 물리적 저장 어드레스 리매핑 알고리즘이 어떻게 할당하는가, 그리고 기록 블록(412) 내에서 이용 가능한 물리적 어드레스 공간(410) 내의 연속적 위치에 LBA 어드레스 공간(408) 내의 각 LBA 어드레스가 어떻게 매핑되는가를 보이고 있다. 물리적 어드레스 공간(410) 내의 기록 블록(412)은 LBA 어드레스의 위치와는 관계없이 LBA 어드레스가 수신되는 순서로 기록된다. 이 예에서, 도 15의 병렬적 논리 대 논리 매핑 예에서와 같이, 호스트가 자유 LBA 클러스터를 이용하는 시간 순서는 도시의 편의를 위해 어드레스 순서와 동일하나, 저장 어드레스 리매핑 알고리즘은 LBA 어드레스 번호 순서에 관계없이 LBA 어드레스가 이용되는 시간 순서에 따라 물리적 어드레스를 기록 블록(412)에 할당한다. 데이터는 하나 이상의 데이터 런의 기록 블록 내에 기록된다. 데어터 런은 동일 LBA 런 내의 연속적인 LBA 어드레스에 매핑되는 연속적인 물리적 어드레스 세트이다. 데이터 런은 물리적 어드레스 공간(410) 내의 블록 경계에서 종료한다. 기록 블록(412)이 채워질 경우, 새로운 화이트 블록이 다음 기록 블록(412)으로서 할당된다. 그러므로, 중간 논리 어드레스를 할당하기보다, 논리데 물리적 배열은 물리적 메모리에 직접 기록됨에 따라 인커밍 데이터를 기록한다.
도 9 및 10의 논리 대 논리 매핑 배열과 마찬가지로, 도 8의 논리 대 물리적 배열을 위한 저장 어드레스 리매핑 알고리즘은 작동할 순차적 기록 알고리즘에 이용 가능한 충분한 화이트 블록이 제공되는지를 확보하도록 작동한다. 저장 어드레스 리매핑 알고리즘은 핑크 블록으로부터 재배치 블록(416)으로 데이터를 플러싱함으로써 화이트 블록의 생성을 관리한다(도 30). 플러싱을 위해 현재 선택된 핑크 블록은 플러시 블록이라 한다.
도 29 및 30에 도시한 바와 같이, 블록 플러시 과정이 도시되어 있다. 저장 어드레스 리매핑 알고리즘은 재배치 블록(416)으로서 화이트 블록을 지정하고, 여기에 추가적인 화이트 블록을 생성하기 위해 선택된 핑크 블록으로부터 데이터가 플러시된다. 플러시 블록을 화이트 블록(418)으로 전환하기 위해, 레드 데이터라고도 하는 플러시 블록(도 29의 핑크 블록 A) 내의 유효 데이터를 포함하는 위치로부터 데이터가 재배치 블록(416) 내의 순차적인 어드레스로 재배치된다. 다음 플러시 블록(도 30의 핑크 블록 B)은 도 31에 도시한 바와 같이 나머지 핑크 블록으로부터 식별된다. 가장 적은 유효 데이터(가장 적은 레드 데이터)를 갖는 핑크 블록 또는 현재 평균량의 유효 데이터보다 작은 또는 소정의 임계량보다 적은 핑크 블록의 리스트로부터 선택된 핑크 블록이 플러시 블록으로서 다시 지정되고, 핑크 블록의 상기 레드 데이터(유효 데이터)는 핑크 블록에서 유효 데이터가 발생하는 순서로 개방된 재배치 블록(416) 내의 순차적인 물리적 위치로 전송된다. 핑크 블록 상에서의 플러시 동작은 기록 블록으로 지정된 화이트 블록(418)의 소비를 보상하기에 충분한 속도로 화이트 블록(418)을 생성하기 위해 예비 동작으로서 실시된다. 도 29 내지 31의 실시예는 호스트로부터의 새로운 데이터 및 핑크 블록으로부터의 재배치된 데이터에 대해 어떻게 화이트 블록 및 재배치 블록이 개별적으로 유지될 수 있는지를 설명하고 있다. 다른 구현 예에서, 새로운 데이터 및 재배치된 데이터는 개별적인 화이트 및 재배치 블록 없이, 단일 화이트 블록으로 전송될 수 있다.
논리 대 물리적 리매핑을 위한 SAT
SAT는 도 8의 논리 대 물리적 배열에 이용될 수 있다. SAT는 DLBA(저장 LBA라고도 함) 어드레스 정보가 데이터 런의 물리적 어드레스에 의해 대체된 상태에서, 논리 대 논리 저장 어드레스 리매핑 배열에서와 동일하게 여기서 동일한 기본 구조를 갖는다. 도 32에 논리 대 물리적 배열을 위한 SAT 인덱싱 및 매핑 구조의 계층이 도시되어 있다. LBA(432) 및 해당 데이터 런(430)이 도시되어 있다. LBA 대 물리적 매핑 정보는 SAT 페이지(434)에 포함된다. LBA 대 SAT 페이지 인덱싱 정보는 SAT 인덱스 페이지(436)에 포함되고 마스터 페이지 인덱스(438)는 제어기(8)과 관련된 RAM과 관련된 RAM에 캐시된다. SAT는 다중 SAT 블록을 포함하거나 SAT 기록 블록에 의해 현재 지정된 단일 블록에만 기록될 수 있다. 다른 모든 SAT 블록은 꽉 차게 기록되어 있으며, 유효 및 무용의 페이지의 조합을 포함할 수 있다. 호스트 데이터에 대한 블록과 마찬가지로, SAT 블록 플러시 계획은 무용 SAT 정보의 페이지를 삭제하고 재사용을 위한 화이트 블록을 생성하기 위해 구현된다.
상기 논리 대 논리 SAT 매핑과 같이, 도면의 논리 대 물리 배열에서의 SAT는 최대 수까지 자동으로 달 수 있는 가변적인 크기의 테이블을 갖는데, 이는 SAT 내의 엔트리 수가 호스트에 의해 할당된 LAB의 단편화에 따라 조정되기 때문이다. 그러므로, 만약 호스트가 매우 단편화된 LBA를 할당하게 되면, SAT는 호스트가 보다 적은 LBA의 단편화된 그룹을 데이터에 할당하는 경우보다 더 많은 엔트리를 포함할 것이다. 따라서, 만약 호스트 LBA가 덜 단편화되는 경우, SAT의 크기는 감소할 것이다. 단편화가 줄어듦으로써 맵에 대한 개별적인 런이 줄어들고 이렇게 줄어든 개별적인 런에 의해 SAT 내의 엔트리도 줄어드는데, 이는 SAT가 고정된 수의 논리 어드레스를 급격히 추적 및 업데이트하기 보다는, 엔트리 내의 하나 이상의 데이터 런(물리적 어드레스 런)에 호스트 LBA 어드레스의 런을 매핑하기 때문이다. 호스트 LBA 어드레스의 런은 둘 이상의 데이터 런에 매핑될 수 있고, 이때 호스트 LBA 런은 유효 데이터에 할당되는 연속적인 논리 어드레스의 세트이고, 상기 데이터(물리적 어드레스) 런은 동일한 메타블록 내의 물리적 어드레스의 연속적인 세트이며 동일한 호스트 LBA 런으로 매핑된다.
STA 블록
각 SAT 블록은 SAT 정보의 저장에 이용되는 물리적 어드레스의 블록이다. SAT 블록은 테이블 페이지로 분할되고, 그 안에 SAT 페이지(434) 또는 SAT 인덱스 페이지(436)이 기록될 수 있다. SAT 블록은 유효 SAT 페이지(434), 유효 SAT 인덱스 페이지(436), 및 무용 페이지의 어떠한 조합도 포함할 수 있다. 도 33을 참고하면, SAT 기록 블록(440)이 도시되어 있다. 데이터는 증가하는 SAT 기록 포인터(442)에 의해 지정된 연속적인 위치에서 SAT 기록 블록(440)에 기록된다. 데이터는 SAT 기록 블록(440)으로 지정된 단일 SAT 블록에만 기록될 수 있다. 데이터는 증가하는 SAT 기록 포인터(442)에 의해 지정된 연속적인 위치에서 SAT 기록 블록(440)에 기록된다. 상기 호스트 데이터 기록 블록과 동일한 방식으로(즉, 도 15 내지 17의 항목 212), SAT 기록 블록(440)이 완전히 기록된 경우, 새로운 SAT 기록 블록으로(440) 화이트 블록이 할당된다. SAT 페이지 위치가 SAT 블록 내의 연속적인 수에 의해 어드레스 된다. SAT 블록은 비SAT 정보의 블록 사이에서 혼합될 수 있고, 또한 비SAT 정보가 MLC 플래시 블록에 저장되는 동안 바이너리 플래시 블록과 같은 특정 형태의 블록으로 분리될 수 있다. 다른 실시예에서, SAT 정보는 동일한 블록 내의 비SAT 정보와 혼합될 수 있다.
SAT 페이지
SAT 페이지(434)는 SAT 내의 매핑 정보의 최소 업데이트 가능 단위이다. 업데이트된 SAT 페이지(434)는 SAT 기록 포인터(442)에 의해 지정된 위치에 기록된다. 연속적인 LBA 런의 어드레스가 인접할 필요가 없더라도 SAT 페이지(434)는 증가하는 LBA 어드레스와 함께 LBA 런의 세트에 대한 매핑 정보를 포함한다. SAT 페이지(434) 내의 LBA 어드레스 범위는 어떠한 다른 SAT 페이지(434) 내의 LBA 어드레스의 범위와도 겹치지 않는다. SAT 페이지(434)는 제약 없이 SAT 블록의 완전한 세트 전반에 걸쳐 분포될 수 있다. 임의의 LBA 어드레스에 대한 SAT 페이지(434)는 임의의 SAT 블록일 수 있다. SAT 페이지(434)는 인덱스 버퍼 필드(444), LBA 필드(446), 데이터 런 필드(448), 및 제어기 포인터(450)을 포함할 수 있다. 파라미터 백업 엔트리 또한 휘발성 RAM에 저장된 일부 파라미터의 값을 포함한다.
SAT 페이지(434) 내의 LBA 필드(446)는 LBA 어드레스의 범위 내에서, 데이터 저장을 위해 할당되는 연속적인 LBA 어드레스의 런에 대한 엔트리를 포함한다. SAT 페이지(434)에 의해 확대된 LBA 어드레스의 범위는 어떠한 다른 SAT 페이지(434)에 의해 확대된 LBA 엔트리의 범위와도 겹치지 않는다. LBA 필드는 가변적인 길이를 갖고 가변적인 수의 LBA 엔트리를 포함한다. LBA 필드(446) 내에서, LBA 엔트리(452)는 SAT 페이지(434)에 의해 인덱스된 LBA 어드레스의 범위 내의 모든 LBA 런을 위해 존재한다. LBA 런은 하나 이상의 데이터 런에 매핑된다.
도 34 내지 36에 도시한 바와 같이, 논리 대 물리적 배열 내의 SAT 에 대한 엔트리는 논리 대 논리 어드레스 리매핑 배열로부터 다양한 형태로 변화한다. 도 34를 참고하면, LBA 엔트리(452)는 다음 정보를 포함한다: 매핑되는 데이터 엔트리의 수(454) 및 LBA 런이 매핑되는 제 1 데이터 런의, 동일 SAT 페이지(434) 내의 데이터 필드(448) 내의 데이터 엔트리 수(458).
SAT 페이지(434) 내의 데이터 필드(448)는 동일 SAT 페이지(434) 내의 LBA 필드(446)의 LBA 런에 매핑되는 데이터 어드레스의 모든 런에 대한 엔트리를 포함한다. 데이터 필드(448)는 가변적인 길이를 갖고 가변적인 수의 데이터 엔트리(460)를 포함한다. 데이터 필드(448) 내에서, 데이터 엔트리(460)는 동일 SAT 페이지(434) 내의 LBA 필드(246)의 LBA 런에 매핑되는 모든 데이터 런을 위해 존재한다. 도 35에 도시한 바와 같이, 각 데이터 엔트리(460)는 다음 정보를 포함한다: 런 내의 제 1 데이터 어드레스(462) 및 제 1 데이터 어드레스가 매핑되는 LBA 런 내의 LBA 오프셋(464). 모든 SAT 페이지(434)의 일부로서 기록되는 반면 가장 최근에 기록된 SAT 페이지(434)에서만 유효한 SAT 페이지/인덱스 버퍼 필드는 SAT 인덱스 엔트리(466)를 포함한다.
SAT 인덱스 엔트리(466)는 SAT 인덱스 페이지(436)과 관련된 유효 엔트리를 현재 갖지 않는 SAT 내의 모든 SAT 페이지(434)를 위해 존재한다. 도 36을 참고하면, SAT 인덱스 엔트리는 SAT 페이지(434)가 기록될 때마다 생성 또는 업데이트되고, 관련 SAT 인덱스 페이지(436)이 업데이트될 때 삭제된다. 이는 SAT 페이지(434)에 의해 인덱스되는 제 1 LBA(468), SAT 페이지(434)에 의해 인덱스되는 최종 LBA (470), SAT 페이지(434)를 포함하는 SAT 블록 수(472), 및 SAT 블록 내의 SAT 페이지(434)의 페이지 수(474)를 포함한다. SAT 인덱스 필드(476)는 고정된 수의 SAT 인덱스 엔트리(466)에 대한 용량을 갖는다. 이 수는 SAT 페이지(434) 및 SAT 인덱스 페이지(436)가 기록될 수 있는 상대적 주파수를 결정한다. 한 구현 예에서, 이 고정된 수는 32일 수 있다.
SAT 페이지 필드 포인터(450)는 LBA 필드 시작으로부터 데이터 필드 시작까지 오프셋을 정의한다. 이는 많은 LBA 엔트리로서 오프셋 값을 포함한다. SAT 페이지(434) 내의 파라미터 백업 엔트리는 휘발성 RAM에 저장된 파라미터의 값을 포함한다. 이러한 파라미터 값은 (파워 주기 이후의 도 8 및 9의 구현 예를 위한 제어기(8)와 관련된다) RAM 내의 정보의 초기화시 이용된다. 이들은 가장 최근에 기록된 SAT 페이지(434)에서만 유효하다.
또 다른 실시예에서, 유효 데이터와 관련된 LBA 어드레스의 각 런에 대한 SAT 내의 개별적인 LBA 엔트리를 생성하는 대신에, LBA 어드레스 블록은 각 LBA 어드레스 블록이 SAT 상에서 단일 엔트리가 되도록 SAT 내로 매핑될 수 있다. 도 37에 도시한 바와 같이, LBA 어드레스 공간 내의 완전한 LBA 어드레스 블록(480)은 SAT 내에 기록될 수 있다. 본 구현 예의 LBA 엔트리(482)는 LBA 어드레스 블록(480)이 매핑되는 물리적인 어드레스 공간 내의 데이터 런(484)의 수 및 포인터(486)를 동일 SAT 페이지 내의 제 1 데이터 런에 리스팅하는 단일 엔트리일 수 있다. LBA 어드레스 블록은 메모리 디바이스에 저장된 데이터의 단편화 정도에 따라 최소한 하나의 데이터 런 또는 LBA 어드레스 블록 내의 최대 수의 클러스터에 매핑될 수 있다.
도 37의 예에서, LBA 어드레스 블록(480)은 8 개의 LBA 런을 포함하고, 이때 4 개의 런이 유효 데이터(LBA 오프셋 L1, L3, L4, 및 L6에서 시작하는 음영처리된 부분)에 할당되고 4 개의 런은 미할당 어드레스 런(LBA 오프셋 0, L2, L5, 및 L7)에서 시작하는 하얀 부분)이다. LBA 어드레스 블록(480)에 대한 해당 데이터 엔트리(488)는 물리적 블록 및 어드레스 오프셋(P1 내지 P3)으로 표시되는 데이터 런의 물리적 어드레스(490)를 해당 LBA 오프셋(492)에 관련시킨다. 각 LBA 런에 대한 개별적 LBA 엔트리를 기록하는 상기 SAT의 버전과 달리, 유효 데이터와 관련된 LBA 런만이 기록되는 경우, LBA 어드레스 블록의 모든 LBA 런이 기록된다. 그러므로, 유효 데이터에 할당된 LBA 런은 물론, 유효 데이터에 현재 할당되지 않은 LBA 어드레스 블록(480) 내의 LBA 런이 기록된다. 도 37에 도시한 SAT 페이지의 데이터 엔트리부(488)에서, 미할당 LBA 어드레스 세트의 시작을 표시하는 LBA 오프셋은 물리적 어드레스 공간에서 "FFFFFFFF" 값과 쌍을 이루게 된다. 이는 미할당 어드레스에 대한 보존값을 가리키는 초기 16진 수를 나타낸다. 도 32를 참고로 설명한 기본 SAT 계층은 물론, 상기 일부 SAT 구조 및 기능성은 LBA 어드레스 블록 매핑 구현에 적용될 수 있으나, SAT 페이지는 개별적인 LBA 런을 데이터 런 정보에 나타내기보다 LBA 어드레스 블록을 데이터 런 매핑 정보에 나타낸다. 또한, SAT 인덱스 페이지는 본 구현 예에서 LBA 어드레스 블록을 SAT 페이지 매핑 정보에 저장한다.
SAT 인덱스 페이지
다시 도 34 내지 36을 참고하면, 한 세트의 SAT 인덱스 페이지(436)는 SAT 내의 모든 유효 SAT 페이지(434)의 위치에 인덱스를 제공한다. 개별적인 SAT 인덱스 페이지(436)는 LBA 어드레스의 범위에 관련된 유효 SAT 페이지의 위치를 지정하는 엔트리(466)를 포함한다. SAT 인덱스 페이지(436)에 의해 확대된 LBA 어드레스의 범위는 어떠한 SAT 인덱스 페이지(436)에 의해 확대된 LBA 어드레스의 범위와도 겹치지 않는다. 상기 엔트리는 관련되는 SAT 페이지의 LBA 어드레스 범위 값에 따라 순서가 정해진다. SAT 인덱스 페이지(436)는 고정된 수의 엔트리를 포함한다. SAT 인덱스 페이지(436)는 제약 없이 SAT 블록의 완전한 세트 전반에 걸쳐 분포될 수 있다. LBA 어드레스의 임의 범위에 대한 SAT 인덱스 페이지(436)는 임의의 SAT 블록 내에 있을 수 있다. SAT 인덱스 페이지(436)는 SAT 인덱스 필드 및 페이지 인덱스 필드를 포함한다.
SAT 인덱스 필드(476)는 SAT 인덱스 페이지(436)에 의해 확대된 LBA 어드레스 범위 내의 모든 유효 SAT 페이지에 대한 SAT 인덱스 엔트리를 포함한다. SAT 인덱스 엔트리(466)는 단일 SAT 페이지(434)와 관련이 있고 다음 정보를 포함한다: SAT 페이지(434)에 의해 인덱스된 제 1 LBA, SAT 페이지(434)를 포함하는 SAT 블록 수, 및 SAT 블록 내의 SAT 페이지(434)의 페이지 수. 상기 페이지 인덱스 필드는 SAT 내의 모든 유효 SAT 인덱스 페이지(436)에 대한 페이지 인덱스 엔트리를 포함한다. 페이지 인덱스 엔트리는 SAT 내의 모든 유효 SAT 인덱스 페이지(436)을 위해 존재하고, 다음 정보를 포함한다: SAT 인덱스 페이지에 의해 인덱스된 제 1 LBA, SAT 인덱스 페이지를 포함하는 SAT 블록 수, 및 SAT 블록 내의 SAT 인덱스 페이지의 페이지 수.
일시적인 SAT 데이터 구조
테이블 페이지 및 어드레스 번역은 물론, 논리 대 논리 저장 어드레스 리매핑을 위해 기술된 일시적 SAT 데이터 구조는 상기한 내용 중 물리적 어드레스가 논리 어드레스(DLBA)에 대한 참조를 대신하는 것을 제외하고는 도 8의 논리 대 물리적 배열과 동일하다. 예를 들어, 도 24의 SAT 번역 절차 및 도 25의 SAT 생성 및 업데이트 예, 그리고 표 2 ~ 표 5 또한 제 2 논리 어드레스 공간(DLBA)이 물리적 어드레스 또는 어드레스 런에 의해 대체되는 경우에 도 8의 논리 대 물리적 배열에 적용할 수 있다. 마찬가지로, 도 8의 논리 대 물리적 배열은 동일한 BIT 구조를 이용하나, BIT는 논리 (DLBA) 어드레스가 아닌 물리적 어드레스를 참조한다.
호스트 논리 블록 어드레스의 변경된 할당
도 11의 구성은 호스트 파일 시스템 내에서 직접 도 8 내지 10의 특성의 일부를 통합하나, 도 11의 저장 어드레스 매핑 배열은 제 1 논리 어드레스 공간으로부터 제 2 논리 어드레스 공간으로 번역하지 않는다. 대신에, 호스트 LBA 어드레스를 할당하는 초기 호스트 파일 시스템 방법은 단편화를 줄이기 위해 변경된다.
도 11의 어드레스 매핑은 도 8 내지 10의 구성에 의해 생성되는 것과 유사한 물리적 메모리에서 데이터 매핑을 생성한다. 클러스터의 측면에서 호스트 LBA 공간만을 인식하고 있는 일반적인 호스트 파일 시스템과 달리, 본 실시예의 호스트 파일 시스템(10)은 메모리 시스템(2) 내의 물리적 블록의 크기에 해당하는 블록 크기를 인식하고 있다. 호스트 LBA 어드레스는 물리적 메모리 블록에 해당하는 선택된 블록 내에서 데이터 저장을 위해 할당된다. 선택된 블록 내에 존재하는 모든 자유 클러스터 어드레스는 순차적 순서로 할당된다. 매핑 알고리즘은 물리적 메모리의 업데이트 블록에서 최소한으로 유지되어야 하는 데이터 결합의 양을 가능케 한다. 데이터 저장을 위한 자유 클러스터의 할당은 LBA 어드레스 공간 내의 블록에서 관리된다. 호스트 파일 시스템은 그 안에 포함된 자유 클러스터의 수에 따라 블록을 분류한다. 가장 높은 자유 클러스터를 갖는 블록이 다음 할당 블록으로 선택된다.
도 38을 참고하면, 도 11의 호스트 파일 시스템 구성에서 구현할 수 있는 어드레스 매핑의 예가 도시되어 있다. 도 11의 구성에 의해 구현되는 어드레스 매핑은 호스트 상의 호스트 파일 시스템에서 일어나고 바람직하게는 호스트(1)의 CPU(9)에 의해 실행된다. 도 9 및 10의 구성의 예에서와 마찬가지로, 데이터 저장을 위한 자유 클러스터의 할당은 메모리 시스템의 플래시 메모리의 물리적 메모리 블록과 그 크기가 상당하다. 도 9 및 10의 예와는 달리, 도 11의 구성에서 구현되는 어드레스 매핑은 호스트 LBA 어드레스 공간 내의 자유 클러스터의 할당을 관리하고, 호스트 LBA 어드레스 공간을 저장 LBA 어드레스 공간으로 리매핑하지 않는다. 대신에, 아래에 기술하는 바와 같이, 호스트 파일 시스템에 의해 실행되는 어드레스 매핑 알고리즘은 어드레스를 호스트 LBA 어드레스의 다음 블록에 할당하기 전에 호스트 LBA 어드레스의 하나의 블록 내에 가용 어드레스를 완전히 할당하기 위해 호스트 LBA 어드레스 공간 내의 가용 어드레스를 이용하도록 최적화된다.
도 38의 예에 있어서, 호스트 LBA 어드레스 공간(494) 내의 블록은 그들 내에 포함되는 자유 클러스터의 수에 따라 분류된다. 도 1을 참고하면, 만약 호스트 파일 시스템(10)이 NTFS 파일 시스템인 경우, 블록의 분류는 호스트 파일 시스템(10)이 메모리 시스템(2) 상에서 저장 및 업데이트하는 NTFS $ 비트맵 파일 내의 할당 맵에 기초할 수 있다. NTFS $ 비트맵 파일로부터 할당 맵을 검색할 때, 호스트 파일 시스템(10)은 다음 할당 블록으로서 자유(무용) 클러스터가 가장 많은 블록을 선택할 것이다. 도 38의 예에서, 블록(1)이 할당 블록으로 선택되는데, 이는 가장 많은 수의 무용(따라서 자유) 클러스터를 포함하기 때문이다. 무용 클러스터의 호스트 LBA 어드레스는 블록(1)으로부터 순차적인 순서로 데이터에 할당되며, 이때 도 38의 각 화살표는 호스트(1)로부터 새로운 데이터로 가용 어드레스의 할당을 나타낸다. 블록(1) 내의 모든 자유 클러스터가 할당된 경우에만, 블록(2)이 다음 할당 블록으로 선택된다. 블록(2) 내의 자유 클러스터에 대한 어드레스는 순차적인 순서로 새로운 데이터에 할당된다.
호스트 LBA 어드레스 공간(494) 내의 어드레스를 할당하는 순차적인 순서는 블록 내에서 가장 낮은 가용 어드레스 값으로부터 가장 높은 가용 어드레스 값까지일 수 있고, 또는 블록 내의 가용 어드레스 값의 "랩-어라운드(wrap-around)" 순서일 수 있다. 예를 들어, 도 38의 블록(1)에 대한 어드레스 값이 1에서 16이라고 가정하면, 상기 가용 블록 내의 어드레스는 어드레스 값(왼쪽에서 오른쪽으로) 3-5, 7-8, 11-13, 및 15-16이 된다. 가장 낮은 곳에서 가장 높은 곳으로의 어드레스의 할당은 어드레스 값(3)에서 시작하는 순서로 각 가용 어드레스를 할당하는 것을 포함한다. 상기 랩-어라운드 방식은 제 1 선택 어드레스 값으로부터 값을 증가시킬 시 어드레스를 할당하고, 이후 현재 호스트 LBA 블록 내의 모든 어드레스가 할당될 때까지 가장 낮은 가용 어드레스로부터 호스트 LBA 블록에 가용 어드레스를 계속 할당하면서, 어드레스 값(3) 이외의 임의의 지점에서 어드레스의 할당을 시작하는 것을 포함할 수 있다. 그러므로, 블록(1) 내의 어드레스(12)가 우선 본 예에서 할당되었다면, 어드레스 13, 15-16, 3-5, 7-8, 및 11은 나머지가 할당되는 순서가 될 것이다.
표준 LBA 인터페이스를 이용하는 많은 공지의 메모리 시스템의 어느 하나인 메모리 시스템(2)에서, 할당된 클러스터 어드레스에 기록된 데이터가 블록(1)에 대응하는 물리적 업데이트 블록(496)에 저장된다. 메모리 시스템(2)은 블록(2)에 대응하는 개별적인 물리적 업데이트 블록(498)을 할당한다. 선택된 할당 블록에 대응하는 원래 블록에서 아직 유효한 데이터(500)는 업데이트 블록에 기록된 새로운 호스트 데이터(502)와 통합된다. 이러한 통합은 새로운 호스트 데이터가 업데이트 블록에 기록된 후에 발생할 수 있고, 또는 보다 통상적으로는, 플래시 메모리의 물리적 블록 내의 페이지가 일반적으로 순차적인 순서에 의해 프로그래밍됨에 따라 기록되는 호스트 데이터 사이에 게재된다. 호스트 LBA 블록에 대한 데이터를 단일 플래시 블록으로 통합하는 과정은 메모리 시스템(2) 내의 제어기(8)에 의해 관리될 수 있다. 호스트 파일 시스템이 가장 많은 수의 자유 클러스터를 갖는 블록을 할당 블록으로 선택하기 때문에, 통합된 데이터의 양은 최소가 되도록 제어된다. 그러나, 도 8~10의 실시예에 대해 설명한 플러시 과정과는 달리, 하나의 블록으로부터 플래시된 유효 데이터가 다른 블록의 다른 어드레스 범위에 관련된 데이터를 갖는 재배치 블록에 순차적으로 기록될 때, 도 11의 할당 과정에 의해 블록에 대한 나머지 유효 데이터를 동일 어드레스 범위에 대한 업데이트 데이터와 병합함으로써 어드레스의 블록이 유지되는 가비지 컬렉션 과정이 발생한다.
어드레스 매핑 할당 알고리즘이 도 11 및 38에 도시한 바와 같은 호스트 파일 시스템(185)에서 구현되는 경우, 물리적 메모리의 블록에 통합된 데이터의 양은 도 8 내지 10의 실시예에서 기술한 저장 어드레스 리매핑에 의해 동등한 블록으로부터 재배치되는 데이터의 양과 동일할 수 있다. 도 11의 실시예에서 파일 시스템에 의해 할당된 호스트 LBA 어드레스의 리매핑이 없는 경우, 이 구현 예에서는 SAT가 필요 없다. 또한, 호스트 파일 시스템의 정상적인 실행과 같이, 파일 데이터의 저장을 위해 할당된 어드레스는 NTFS 파일 시스템용 $MFT 파일 또는 FAT 파일 시스템용 파일 할당 테이블(FAT) 구조와 같은 목적을 위한 데이터 구조로 기록된다.
여기서 기술하는 어드레스 매핑 및 리매핑 시스템 및 방법의 이점은 메모리 관리자 레벨 가비지 컬렉션의 축소 및 제거, 및 플래시 메모리 상에서의 감소된 스트레스를 포함한다. 메모리 관리 알고리즘이 이용되고 중간 DLBA 어드레스를 이용하지 않는 경우, 그리고 도 8에 도시한 바와 같이 단일 물리적 블록에 연속적인 LBA 어드레스의 블록을 매핑하는 경우, 물리적 블록 크기보다 작은 LBA 어드레스의 런에 데이터가 기록될 때 가비지 컬렉션 동작이 요구된다. 이러한 가비지 컬렉션에 있어, LBA 블록 내의 어드레스를 갖는 모든 데이터는 동일한 물리적 블록으로 통합된다. 예를 들어, 기록되는 파일의 평균 크기가 40KB이고 물리적 블록 크기가 4MB인 경우, 만약 파일 시스템 할당 알고리즘 및 자유 클러스터 공간의 단편화가 각 파일이 격리된 단편으로서 개별적인 블록에 기록되도록 하게 되면, 호스트에 의해 기록된 데이터의 섹터 당 프로그램된 섹터의 비는 100이 될 것이다.
종래의 논리 대 물리 블록 매핑을 이용하게 되면, 데이터의 바디는 호스트 데이터의 단편이 격리된 상태로 논리 어드레스의 블록에 기록될 때마다 가비지 컬렉션 동작시 재배치되어야만 한다. 저장 어드레스 리매핑 알고리즘을 이용하게 되면, 데이터는 블록(논리 또는 물리적)이 채워질 때가지 데이터는 항상 순차적인 어드레스에 기록되므로 가비지 컬렉션이 필요치 않다. 여기서 기술하는 저장 어드레스 리매핑의 플러시 동작은 기록 과정에 의해 시작되지 않고 무용화되는 데이터에 의해서만 시작된다. 그러므로, 데이터 재배치 오버헤드는 여기서 기술하는 저장 어드레스 리매핑 기능성을 갖는 시스템에서 낮아야만 한다. 다른 실시예에서, 상기 메모리 시스템은 임의의 LBA 어드레스 범위를 개별적으로 유지하도록 구성될 수 있고, 따라서, 호스트 LBA 어드레스의 각 범위 내에서, 상기 저장 어드레스 리매핑 기술이 적용될 수 있다. 그러므로, 각각의 할당된 LBA 어드레스의 범위는 각각의 기록 블록 및 재배치 블록을 갖고, 새로운 화이트 블록은 이전의 기록 블록 또는 호스트 LBA 어드레스의 특정 할당 범위에 대한 재배치 블록이 완전히 기록될 때 기록 블록 또는 재배치 블록으로서 호스트 LBA 어드레스의 특정 할당된 범위에 할당된다.
저장 어드레스 리매핑을 위한 시스템 및 방법을 기술하였고, 이는 무작위 기록 애플리케이션의 메모리 시스템의 성능을 향상시킬 수 있으며, 이들은 개인 컴퓨터에서의 솔리드 스테이트 디스크 애플리케이션에서 가능한, 장치의 LBA 어드레스 공간 내의 관계 없는 지역에 데이터의 숏 버스트를 기록할 필요가 있다는 점에서 특징을 갖게 된다. 기술한 저장 어드레스 리매핑의 임의의 실시예에서, 호스트 데이터는 호스트에 의해 할당된 제 1 논리 어드레스로부터 제 2 논리 어드레스 공간 내의 연속적인 논리 어드레스의 블록에 매핑된다. 어드레스의 블록이 완전히 프로그램된 데이터가 무용화됨에 따라, 가장 적은 양의 유효 데이터를 갖거나 임계치의 유효 데이터를 갖는 핑크 블록의 그룹으로부터 핑크 블록을 선택하고, 보다 많은 데이터를 기록하는 데에 이용되는 자유 블록에 상기 블록 내의 유효 데이터를 재배치하는 플러시 절차가 개시되고 있다. 상기 재배치된 데이터는 호스트에 의해 할당된 논리 어드레스에 관계없이 플러싱이 필요한 블록 내에서 발생하는 순서에 따라 재배치 블록에 연속적으로 기록된다. 이러한 방식으로, 호스트에 의해 할당된 논리 어드레스 런을 일부러 통합하지 않고서도 오버헤드를 감소시킬 수 있다. 저장 어드레스 테이블은 호스트에 의해 할당된 논리 어드레스와 제 2 논리 어드레스 사이의 매핑 및 플러싱에 의한 상기 매핑의 이후의 변화를 추적하는 데 이용된다.호스트에 의해 할당된 논리 어드레스가 물리적 어드레스에 직접 매핑되는 경우, 저장 어드레스 테이블은 그 관계를 추적하고 블록 정보 테이블은, 예를 들어, 특정 블록이 유효 및 무용 데이터를 갖는 핑크 블록인지 혹은 미기록 용량만을 갖는 화이트 블록인지를 추적하도록 유지된다.
SAT는 호스트에 의해 유효 데이터에 할당된 논리 어드레스 공간 내의 어드레스의 모든 런을 장치 어드레스 공간(도 8의 배열을 위한 물리적 어드레스 공간; 도 9 및 10의 배열을 위한 논리 저장 어드레스 공간) 내의 어드레스의 하나 이상의 런에 매핑한다. 호스트에 의해 이용되는 연속적인 어드레스 공간(LBA 런)의 가변적인 길이 단위는 연속적인 장치 어드레스 공간의 하나 이상의 가변 길이 단위로 매핑된다. 런투런 어드레스 매핑 계획을 사용함으로써 고정된 크기의 단위에 기초한 매핑 계획에 비해 이점을 제공해 준다. SAT에서 요구되는 매핑 엔트리의 수는 호스트에 의해 기록된 데이터의 런 내의 클러스터의 평균 수에 반비례한다. 이는 SAT 데이터 구조의 수를 최소화하고 호스트가 파일 데이터를 기록 및 삭제할 때 이러한 데이터 구조를 업데이트하는 데 필요한 평균 시간을 최소화한다.
그러므로 이상에서 기술한 내용은 예시적인 것으로서 본 발명을 제한하지는 않으며, 또한 하기의 청구범위 및 이와 동등한 것에 의해 본 발명의 기술적 사상이 정의됨을 밝혀둔다.
1: 호스트 시스템, 2: 플래시 메모리, 3, 4: 기계 전기적 커넥터의 메이팅부, 5: 애플리케이션, 6: 드라이버, 7: 플래시 메모리, 8: 호스트 인터페이스 & 메모리 제어기, 9: CPU, 10: 호트스 파일 시스템

Claims (33)

  1. 호스트 시스템과 재프로그램 가능한 비휘발성 대용량 저장 시스템 사이에서 데이터를 전송하는 방법에 있어서,
    대용량 저장 메모리 시스템은, 함께 삭제가능한 메모리 셀의 복수의 블록 내에 배열된 재프로그램 가능한 비휘발성 메모리 셀과, 상기 메모리 셀의 복수의 블록과 통신하는 제어기를 갖는, 대용량 저장 메모리 시스템에서,
    상기 호스트 시스템으로부터 상기 대용량 저장 시스템에서 호스트 논리 블록 어드레스(LBA) 어드레스와 관련된 데이터를 수신하는 단계와,
    상기 호스트 LBA 어드레스와 관련된 데이터를 어드레스하며, 할당시 미기록 용량만을 어드레스하는 연속적인 저장 LBA 어드레스의 블록을 할당하는 단계와,
    상기 수신된 데이터에 대한 호스트 LBA 어드레스 각각을 상기 연속적인 저장 LBA 어드레스 블록에 리매핑하는 단계를
    포함하고,
    각각의 저장 LBA 어드레스는 호스트 LBA 어드레스에 관계없이 수신된 데이터가 수신되는 순서에 따라 수신된 데이터에 연속적인 방식으로 순차적으로 할당되는, 데이터 전송 방법.
  2. 제 1항에 있어서, 추가적인 수신 데이터를 연속적인 방식으로 리매핑하기 위한 연속적인 저장 LBA 어드레스의 제 2 블록을 할당하는 단계를 더 포함하고,
    상기 연속적인 저장 LBA 어드레스의 제 2 블록은 할당시 미기록 용량에만 관련되고, 상기 제 2 블록의 할당은 상기 연속적인 저장 LBA 어드레스의 블록을 환전히 할당할 때에만 실시되는, 데이터 전송 방법.
  3. 제 1항에 있어서, 상기 연속적인 저장 LBA 어드레스의 블록을 할당하는 단계는 복수의 호스트 LBA 어드레스의 범위 각각에 대해 연속적인 저장 LBA 어드레스 블록을 할당하는 단계를 포함하고, 각각의 연속적인 저장 LBA 어드레스는 할당시 미기록 용량에만 관련되는, 데이터 전송 방법.
  4. 제 3항에 있어서, 리매핑 단계는, 호스트 LBA 어드레스의 복수의 범위 중 각 범위에서 수신 데이터에 대한 각각의 호스트 LBA 어드레스를, 저장 LBA 어드레스의 각각의 할당된 블록으로 리매핑하는 단계를 포함하고, 연속적인 저장 LBA 어드레스의 할당 블록에서 각각의 저장 LBA 어드레스는, 상기 복수의 범위 중 각 범위 내의 상기 호스트 LBA 어드레스에 관계없이 상기 데이터가 수신되는 순서에 따라 상기 복수의 범위 중 각 범위 내에 속하는 수신 데이터로 연속적인 방식에 따라 연속적으로 할당되는, 데이터 전송 방법.
  5. 제 4항에 있어서, 상기 각각의 복수의 범위에 대해서, 추가 수신 데이터를 연속적인 방식으로 리매핑하기 위해 연속적인 저장 LBA 어드레스의 제 2 블록을 할당하는 단계를 더 포함하고, 상기 연속적인 저장 LBA 어드레스의 제 2 블록은 할당시 미기록 용량과만 관련되어 있고, 상기 연속적인 저장 LBA 어드레스의 제 2 블록의 할당은, 호스트 LBA 어드레스의 특정 범위와 현재 관련되어 있는 연속적인 저장 LBA 어드레스의 블록을 완전하게 할당할 때에만 호스트 LBA 어드레스의 특정 범위에 대해 이루어지는, 데이터 전송 방법.
  6. 제 1항에 있어서, 상기 연속적인 저장 LBA 어드레스의 블록과 관련한 데이터를 상기 연속적인 저장 LBA 어드레스의 블록과 현재 관련된 어드레스의 물리적 블록 내의 연속적인 물리적 어드레스 위치에 기록하는 단계를 더 포함하는, 데이터 전송 방법.
  7. 제 1항에 있어서, 상기 대용량 저장 시스템은 상기 호스트 LBA 어드레스와 관련된 데이터를 수신하고, 상기 호스트 LBA 어드레스를 리매핑하며, 가비지 컬렉션 동작을 초기화하지 않고 상기 저장 LBA 어드레스와 관련된 데이터를 기록하는, 데이터 전송 방법.
  8. 제 1항에 있어서, 상기 리매핑 단계는 호스트 LBA 어드레스 및 저장 LBA 어드레스 위치와 관련된 상관 데이터를 생성하고 각각의 연속적인 저장 LBA 어드레스를 연속적인 저장 LBA 어드레스의 제 2 블록 내의 상기 상관 데이터에 할당하는 단계를 더 포함하는, 데이터 전송 방법.
  9. 제 8항에 있어서, 상기 연속적인 저장 LBA 어드레스의 블록은 상기 호스트 시스템으로부터의 데이터에 단독으로 관련되고 상기 연속적인 LBA 어드레스의 제 2 블록은 상관 데이터에 단독으로 관련되는, 데이터 전송 방법.
  10. 제 1항에 있어서,
    상기 연속적인 저장 LBA 어드레스의 블록과 관련되며 호스트 환할당 데이터를 나타내는 무용 데이터를 식별하는 단계와,
    상기 연속적인 저장 LBA 어드레스의 블록으로부터의 유효 데이터를 연속적으로 리매핑하는 연속적인 저장 LBA 어드레스의 블록의 재배치 블록을 선택하는 단계와,
    상기 연속적인 저장 LBA 어드레스와 관련된 유효 데이터를 상기 재배치 블록 내의 연속적인 저장 LBA 어드레스에 재할당하는 단계를
    더 포함하는, 데이터 전송 방법.
  11. 제 10항에 있어서,
    연속적인 저장 LBA 어드레스의 추가적인 블록과 관련된 무용 데이터를 식별하는 단계와,
    상기 연속적인 저장 LBA 어드레스의 추가적인 블록으로부터의 유효 데이터에 대한 저장 LBA 어드레스를 상기 재배치 블록 내의 연속적인 저장 LBA 어드레스에 재할당하는 단계를
    포함하고,
    상기 재할당 블록이 꽉 찬 경우, 미기록 용량만을 갖는 새로운 재배치 블록이 선택되고 상기 추가적인 블록으로부터의 나머지 유효 데이터는 상기 새로운 재배치 블록 내의 연속적인 저장 LBA 어드레스에 재할당되는, 데이터 전송 방법.
  12. 제 10항에 있어서, 연속적인 저장 LBA 어드레스의 상기 재배치 블록은 리매핑된 유효 호스트 데이터와 단독적으로 관련되는, 데이터 전송 방법.
  13. 제 9항에 있어서,
    연속적인 저장 LBA 어드레스의 제 2 블록과 관련된 무용 상관 데이터를 식별하는 단계와,
    상기 연속적인 저장 LBA 어드레스의 제 2 블록으로부터의 유효 상관 데이터를 연속적으로 리매핑하는 연속적인 저장 LBA 어드레스의 재배치 블록을 선택하는 단계와,
    상기 연속적인 저장 LBA 어드레스의 제 2 블록으로부터의 유효 상관 데이터를 상기 재배치 블록 내의 연속적인 저장 LBA 어드레스에 재할당하는 단계를
    더 포함하는, 데이터 전송 방법.
  14. 제 13항에 있어서,
    상관 데이터와 단독적으로 관련된 연속적인 저장 LBA 어드레스의 추가적인 블록과 관련된 무용 상관 데이터를 식별하는 단계와,
    상기 연속적인 저장 LBA 어드레스의 추가적인 블록으로부터 유효 상관 데이터에 대한 저장 LBA 어드레스를 상기 재배치 블록 내의 연속적인 저장 LBA 어드레스에 재할당하는 단계를
    더 포함하고,
    상기 재배치 블록이 꽉 찬 경우, 미기록 용량만을 갖는 새로운 재배치 블록이 선택되고 상기 추가적인 블록과 관련된 나머지 유효 상관 데이터는 상기 새로운 재배치 블록 내의 연속적인 저장 LBA 어드레스에 재할당되는, 데이터 전송 방법.
  15. 제 1항에 있어서, 화이트 또는 핑크 상태를 갖는 연속적인 저장 LBA 어드레스의 복수의 블록의 상태를 추적하는 단계를 더 포함하고, 화이트 상태는 미기록 용량에만 관련된 블록을 식별하고 핑크 상태는 유효 및 무용 데이터 모두에 관련된 블록을 식별하는, 데이터 전송 방법.
  16. 제 15항에 있어서, 상기 상태를 추적하는 단계는, 연속적인 저장 LBA 어드레스의 복수의 블록 각각의 상태와 관련된 블록 정보 테이블 데이터를 독점적으로 어드레싱하기 위한 연속적인 저장 LBA 어드레스의 초기 블록을 포함하는 블록 정보 테이블을 유지하는 단계를 포함하는, 데이터 전송 방법.
  17. 제 16항에 있어서, 상기 블록 정보 테이블을 유지하는 단계는, 블록 정보 테이블 데이터를 연속적인 방식으로 어드레싱할 때 사용하기 위한 연속적인 저장 LBA 어드레스의 추가 블록을 할당하는 단계를 포함하고, 상기 연속적인 저장 LBA 어드레스의 추가 블록은 할당시 미기록 용량만을 어드레싱하며, 상기 추가 블록의 할당은 연속적인 저장 LBA 어드레스의 초기 블록을 완전하게 할당할 때에만 이루어지는, 데이터 전송 방법.
  18. 대용량 저장 메모리 시스템에 있어서,
    재프로그램 가능한 비휘발성 메모리 셀로서, 상기 메모리 셀은 함께 삭제가능한 메모리 셀의 복수의 블록 내에 배열되는, 재프로그램 가능한 비휘발성 메모리 셀과,
    메모리 셀의 복수의 블록과 통신하는 제어기를
    포함하고,
    상기 제어기는,
    호스트 논리 블록 어드레스(LBA) 어드레스로 어드레스된 데이터를 호스트 시스템으로부터 수신하고,
    상기 호스트 시스템으로부터 데이터를 수신하기 위해 연속적인 저장 LBA 어드레스의 블록을 할당하며,
    상기 수신된 데이터에 대한 호스트 LBA 어드레스 각각을 연속적인 저장 LBA 어드레스의 블록에 리맵하도록
    구성되고,
    상기 제어기는, 수신된 데이터와 관련된 호스트 LBA 어드레스와 관계없이 상기 수신된 데이터가 수신되는 순서로 각각의 연속적인 저장 LBA 어드레스를 상기 수신된 데이터에 순차적으로 할당하도록 배열된, 대용량 저장 메모리 시스템.
  19. 제 18항에 있어서, 상기 제어기는,
    추가 수신 데이터를 연속적인 방식으로 리매핑하기 위해 연속적인 저장 LBA 어드레스의 제 2 블록을 할당하도록
    추가 구성되고,
    상기 연속적인 저장 LBA 어드레스의 제 2 블록은 할당시 미기록 용량에만 대응하고,
    상기 제어기는, 연속적인 저장 LBA 어드레스의 블록을 완전하게 할당할 때에만 상기 제 2 블록에 데이터를 할당하도록 구성된, 대용량 저장 메모리 시스템.
  20. 제 18항에 있어서, 상기 제어기는 호스트 LBA 어드레스의 복수의 범위 각각에 대해 연속적인 저장 LBA 어드레스의 블록을 할당하도록 추가 구성되고, 연속적인 저장 LBA 어드레스의 각 블록은 할당시 미기록 용량에만 대응하는, 대용량 저장 메모리 시스템.
  21. 제 20항에 있어서, 상기 제어기는, 호스트 LBA 어드레스의 복수의 범위의 각 범위에서 상기 수신된 데이터에 대한 각각의 호스트 LBA 어드레스를, 저장 LBA 어드레스의 각각의 할당된 블록으로 리매핑하도록 추가 구성되고, 상기 제어기는, 상기 복수의 범위의 각 범위 내에서 호스트 LBA 어드레스와 관계없이 데이터가 수신되는 순서로, 연속적인 저장 LBA 어드레스의 할당된 블록에서 저장 LBA 어드레스를 연속적인 방식으로 상기 복수의 범위의 각 범위 내에 속하는 수신된 데이터에 순차적으로 할당하는, 대용량 저장 메모리 시스템.
  22. 제 21항에 있어서, 상기 제어기는, 상기 복수의 범위 각각에 대해서, 추가 수신 데이터를 연속적으로 방식으로 리매핑하기 위해 연속적인 저장 LBA 어드레스의 제 2 블록을 할당하도록 구성되고, 연속적인 저장 LBA 어드레스의 제 2 블록은 미기록 용량만을 어드레싱하며, 연속적인 저장 LBA 어드레스의 제 2 블록의 할당은, 호스트 LBA 어드레스의 특정 범위와 현재 관련되어 있는 연속적인 저장 LBA 어드레스의 블록을 완전하게 할당할 때에만 호스트 LBA 어드레스의 특정 범위에 대해 이루어지는, 대용량 저장 메모리 시스템.
  23. 제 18항에 있어서, 상기 제어기는, 연속적인 저장 LBA 어드레스의 블록과 현재 관련된 어드레스의 물리적 블록 내의 연속적인 물리적 어드레스 위치에, 연속적인 저장 LBA 어드레스의 블록과 관련된 데이터를 기록하도록 추가 구성된, 대용량 저장 메모리 시스템.
  24. 제 18항에 있어서, 상기 제어기는, 호스트 LBA 어드레스와 저장 LBA 어드레스 위치를 상호관련시키는 상호관련 데이터를 생성하고, 각각의 연속적인 저장 LBA 어드레스를 연속적인 저장 LBA 어드레스의 제 2 블록에서 상호관련 데이터에 할당하도록 추가 구성되는, 대용량 저장 메모리 시스템.
  25. 제 24항에 있어서, 연속적인 저장 LBA 어드레스의 블록은, 상기 호스트 LBA 어드레스와 관련된 데이터를 독점적으로 포함하고, 연속적인 저장 LBA 어드레스의 제 2 블록은 상호관련 데이터를 독점적으로 포함하는, 대용량 저장 메모리 시스템.
  26. 제 18항에 있어서, 상기 제어기는,
    연속적인 저장 LBA 어드레스의 블록과 관련된 호스트 할당해제 데이터를 나타내는 무용 데이터(obsolete data)를 식별하고,
    연속적인 저장 LBA 어드레스의 블록으로부터 유효 데이터를 연속적으로 리매핑하는 연속적인 저장 LBA 어드레스의 재배치 블록을 선택하며,
    연속적인 저장 LBA 어드레스의 블록으로부터 상기 재배치 블록의 연속적인 저장 LBA 어드레스로 유효 데이터에 대한 저장 LBA 어드레스를 재할당하도록
    추가 구성되는, 대용량 저장 메모리 시스템.
  27. 제 26항에 있어서, 상기 제어기는,
    호스트 할당해제 데이터를 갖는 연속적인 저장 LBA 어드레스의 추가 블록과 관련된 무용 데이터를 식별하고,
    연속적인 저장 LBA 어드레스의 추가 블록으로부터 상기 재배치 블록에서 연속적인 저장 LBA 어드레스로 유효 데이터에 대한 저장 LBA 어드레스를 재할당하며,
    상기 재배치 블록이 가득 차면, 미기록 용량만을 갖는 새로운 재배치 블록을 선택하고, 추가 블록으로부터 상기 새로운 재배치 블록에서 연속적인 저장 LBA 어드레스로 남아있는 유효 데이터를 재할당하도록
    추가 구성되는, 대용량 저장 메모리 시스템.
  28. 제 26항에 있어서, 연속적인 저장 LBA 어드레스의 재배치 블록은 재매핑된 유효 호스트 데이터와 독점적으로 관련되어 있는, 대용량 저장 메모리 시스템.
  29. 제 25항에 있어서, 상기 제어기는,
    연속적인 저장 LBA 어드레스의 제 2 블록과 관련된 무용 데이터를 식별하고,
    연속적인 저장 LBA 어드레스의 제 2 블록으로부터 유효 데이터를 연속적으로 재매핑하는 연속적인 저장 LBA 어드레스의 재배치 블록을 선택하며,
    연속적인 저장 LBA 어드레스의 제 2 블록으로부터 상기 재배치 블록에서 연속적인 저장 LBA 어드레스로 유효 데이터를 재할당하도록
    추가 구성되는, 대용량 저장 메모리 시스템.
  30. 제 26항에 있어서, 상기 제어기는,
    상호관련 데이터와 독점적으로 관련된 연속적인 저장 LBA 어드레스의 추가 블록과 관련된 무용 데이터를 식별하고,
    재배치 블록에서 연속적인 저장 LBA 어드레스에 연속적인 저장 LBA 어드레스의 추가 블록과 관련된 유효 데이터를 재할당하도록
    추가 구성되고,
    상기 재배치 블록이 가득 차면, 상기 제어기는, 유효 데이터를 갖지 않는 새로운 재배치 블록을 선택하고, 새로운 재배치 블록에서 연속적인 저장 LBA 어드레스에 추가 블록과 관련된 남아있는 유효 데이터를 재할당하는, 대용량 저장 메모리 시스템.
  31. 제 18항에 있어서, 상기 제어기는, 화이트 또는 핑크 상태를 갖는 연속적인 저장 LBA 어드레스의 복수의 블록 각각의 상태를 추적하도록 추가 구성되고, 화이트 상태는 미기록 용량만을 갖는 임의의 블록을 식별하고, 핑크 상태는 유효와 무용 데이터 모두를 갖는 임의의 블록을 식별하는, 대용량 저장 메모리 시스템.
  32. 제 31항에 있어서, 상기 제어기는, 연속적인 저장 LBA 어드레스의 복수의 블록 각각의 상태와 관련된 블록 정보 테이블 데이터를 독점적으로 어드레싱하기 위한 연속적인 저장 LBA 어드레스의 초기 블록을 포함하는 블록 정보 테이블을 유지하도록 구성된, 대용량 저장 메모리 시스템.
  33. 제 32항에 있어서, 상기 제어기는, 블록 정보 테이블 데이터를 연속적인 방식으로 어드레싱할 때 사용하기 위한 연속적인 저장 LBA 어드레스의 추가 블록을 할당하도록 구성되고, 상기 연속적인 저장 LBA 어드레스의 추가 블록은 할당시 유효 데이터를 어드레싱하지 않으며, 상기 제어기는, 연속적인 저장 LBA 어드레스의 초기 블록을 완전하게 할당할 때에만 상기 추가 블록을 할당하도록 구성되는, 대용량 저장 메모리 시스템.
KR1020107000413A 2007-06-08 2008-06-03 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템 KR101453264B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US94290007P 2007-06-08 2007-06-08
US60/942,900 2007-06-08
US12/036,014 2008-02-22
US12/036,014 US9396103B2 (en) 2007-06-08 2008-02-22 Method and system for storage address re-mapping for a memory device
PCT/US2008/065631 WO2008154216A1 (en) 2007-06-08 2008-06-03 Method and system for storage address re-mapping for a memory device

Publications (2)

Publication Number Publication Date
KR20100034743A KR20100034743A (ko) 2010-04-01
KR101453264B1 true KR101453264B1 (ko) 2014-10-21

Family

ID=40096925

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107000413A KR101453264B1 (ko) 2007-06-08 2008-06-03 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템

Country Status (7)

Country Link
US (2) US8429352B2 (ko)
EP (1) EP2156299B1 (ko)
JP (2) JP5350371B2 (ko)
KR (1) KR101453264B1 (ko)
CN (3) CN102831070B (ko)
TW (1) TWI394160B (ko)
WO (1) WO2008154216A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180011365A (ko) * 2014-12-12 2018-01-31 인텔 코포레이션 저장 시스템에서의 가속된 데이터 복구
US11126370B2 (en) 2018-03-12 2021-09-21 SK Hynix Inc. Memory controller and operating method thereof

Families Citing this family (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP4164118B1 (ja) * 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101535226B1 (ko) * 2008-12-16 2015-07-27 삼성전자주식회사 중간 변환 장치를 통해 연결된 저장 장치 인증 방법 및 시스템
US8205063B2 (en) * 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8701120B2 (en) * 2009-02-27 2014-04-15 International Business Machines Corporation Virtualization of storage buffers used by asynchronous processes
TWI407441B (zh) * 2009-03-20 2013-09-01 Phison Electronics Corp 快閃記憶體寫入方法及使用此方法的儲存系統與控制器
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
US8645438B2 (en) * 2009-06-30 2014-02-04 Sandisk Technologies Inc. File system and method of file access
CN101582089B (zh) * 2009-07-02 2011-06-29 北京讯风光通信技术开发有限责任公司 一种嵌入式设备的文件管理方法及系统
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US8612718B2 (en) * 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
TWI453747B (zh) * 2009-09-02 2014-09-21 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US8392479B1 (en) * 2009-09-14 2013-03-05 Symantec Corporation Method and apparatus for optimizing storage space allocation for computer data
TWI426528B (zh) * 2009-09-30 2014-02-11 Phison Electronics Corp 用於快閃記憶體的區塊管理方法、控制器與儲存系統
US8364924B2 (en) 2009-10-21 2013-01-29 International Business Machines Corporation Achieving a high throughput in a storage cache application using a flash solid state disk
US7954021B2 (en) * 2009-10-23 2011-05-31 International Business Machines Corporation Solid state drive with flash sparing
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US9021185B2 (en) 2009-11-23 2015-04-28 Amir Ban Memory controller and methods for enhancing write performance of a flash device
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
TWI425515B (zh) * 2009-12-23 2014-02-01 Silicon Motion Inc 資料儲存裝置及快閃記憶體之資料寫入方法
US20110161560A1 (en) * 2009-12-31 2011-06-30 Hutchison Neil D Erase command caching to improve erase performance on flash memory
US9134918B2 (en) * 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8194340B1 (en) 2010-03-18 2012-06-05 Western Digital Technologies, Inc. Disk drive framing write data with in-line mapping data during write operations
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US8687306B1 (en) 2010-03-22 2014-04-01 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones
US8699185B1 (en) 2012-12-10 2014-04-15 Western Digital Technologies, Inc. Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks
US9330715B1 (en) 2010-03-22 2016-05-03 Western Digital Technologies, Inc. Mapping of shingled magnetic recording media
US8856438B1 (en) 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US8693133B1 (en) 2010-03-22 2014-04-08 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8417876B2 (en) * 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8386714B2 (en) 2010-06-29 2013-02-26 International Business Machines Corporation Reducing write amplification in a cache with flash memory used as a write cache
CN102375779B (zh) * 2010-08-16 2015-08-19 深圳市朗科科技股份有限公司 一种数据处理方法以及数据处理模块
US8966209B2 (en) * 2010-08-23 2015-02-24 Apple Inc. Efficient allocation policies for a system having non-volatile memory
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8756361B1 (en) 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
DE112010005870B4 (de) 2010-11-08 2019-10-10 Hyperstone Gmbh Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien
WO2012083308A2 (en) * 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
JP2012133655A (ja) * 2010-12-22 2012-07-12 Sony Corp 管理装置、管理方法、およびプログラム
US8818966B1 (en) * 2010-12-30 2014-08-26 Emc Corporation Continuous file defragmentation during file over-writes
US8458133B2 (en) 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
US9170929B2 (en) * 2011-01-31 2015-10-27 Mitsubishi Electric Corporation Memory controller
US9058212B2 (en) * 2011-03-21 2015-06-16 Microsoft Technology Licensing, Llc Combining memory pages having identical content
US8775731B2 (en) 2011-03-25 2014-07-08 Dell Products, L.P. Write spike performance enhancement in hybrid storage systems
US9342446B2 (en) * 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8537613B2 (en) 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
US8595426B2 (en) * 2011-04-11 2013-11-26 Sandisk Il Ltd. Handling commands within a write-once read-many storage device configuration
US20120303878A1 (en) * 2011-05-26 2012-11-29 International Business Machines Corporation Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US8843443B1 (en) 2011-06-30 2014-09-23 Emc Corporation Efficient backup of virtual data
US8849777B1 (en) * 2011-06-30 2014-09-30 Emc Corporation File deletion detection in key value databases for virtual backups
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US8930614B2 (en) * 2011-07-29 2015-01-06 Kabushiki Kaisha Toshiba Data storage apparatus and method for compaction processing
JP5514169B2 (ja) * 2011-08-15 2014-06-04 株式会社東芝 情報処理装置および情報処理方法
US8555020B2 (en) * 2011-09-23 2013-10-08 Hewlett-Packard Development Company, L.P. Reclaiming space occupied by an expired variable record in a non-volatile record storage
US9158706B2 (en) 2011-10-31 2015-10-13 International Business Machines Corporation Selective space reclamation of data storage memory employing heat and relocation metrics
KR101867282B1 (ko) * 2011-11-07 2018-06-18 삼성전자주식회사 비휘발성 메모리 장치의 가비지 컬렉션 방법
US9069657B2 (en) * 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US9213493B1 (en) 2011-12-16 2015-12-15 Western Digital Technologies, Inc. Sorted serpentine mapping for storage drives
US8819367B1 (en) 2011-12-19 2014-08-26 Western Digital Technologies, Inc. Accelerated translation power recovery
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9189172B1 (en) * 2012-01-06 2015-11-17 Seagate Technology Llc High priority read and write
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US8760922B2 (en) 2012-04-10 2014-06-24 Sandisk Technologies Inc. System and method for micro-tiering in non-volatile memory
US20130290619A1 (en) * 2012-04-30 2013-10-31 Netapp, Inc. Apparatus and Method for Sequential Operation on a Random Access Device
US9141533B2 (en) * 2012-05-31 2015-09-22 Silicon Motion, Inc. Data storage device and flash memory control method for performing garbage collection
US10282286B2 (en) * 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US9323662B2 (en) * 2012-12-31 2016-04-26 SanDisk Technologies, Inc. Flash memory using virtual physical addresses
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9348746B2 (en) * 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9021187B2 (en) 2013-01-29 2015-04-28 Sandisk Technologies Inc. Logical block address remapping
US20140281306A1 (en) * 2013-03-14 2014-09-18 Hitachi, Ltd. Method and apparatus of non-disruptive storage migration
US8954657B1 (en) * 2013-09-27 2015-02-10 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9448928B2 (en) * 2013-04-26 2016-09-20 Oracle International Corporation System and method for two-tier adaptive heap management in a virtual machine environment
CN103605478B (zh) * 2013-05-17 2016-12-28 华为技术有限公司 存储地址标示、配置方法和数据存取方法及系统
US9323539B2 (en) * 2013-06-27 2016-04-26 Intel Corporation Constructing persistent file system from scattered persistent regions
KR102088193B1 (ko) * 2013-08-08 2020-03-13 삼성전자주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US10534683B2 (en) * 2013-08-29 2020-01-14 International Business Machines Corporation Communicating outstanding maintenance tasks to improve disk data integrity
KR101547317B1 (ko) 2013-09-30 2015-08-26 주식회사 유니테스트 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템
US9298389B2 (en) 2013-10-28 2016-03-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Operating a memory management controller
US9645741B2 (en) 2014-02-05 2017-05-09 Sandisk Technologies Llc Storage module and host device for storage module defragmentation
US20150254011A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system, memory controller and control method of non-volatile memory
CN104090730B (zh) * 2014-07-08 2017-02-22 飞天诚信科技股份有限公司 一种对存储设备进行数据读写的方法及装置
US8953269B1 (en) 2014-07-18 2015-02-10 Western Digital Technologies, Inc. Management of data objects in a data object zone
US9875055B1 (en) 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9645739B2 (en) * 2014-09-26 2017-05-09 Intel Corporation Host-managed non-volatile memory
US20160098431A1 (en) * 2014-10-06 2016-04-07 Seagate Technology Llc Performing mathematical operations on changed versions of data objects via a storage compute device
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
JP2016122227A (ja) 2014-12-24 2016-07-07 株式会社東芝 メモリシステムおよび情報処理システム
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
WO2016175028A1 (ja) * 2015-04-28 2016-11-03 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
CN106991058B (zh) * 2016-01-21 2020-06-26 腾讯科技(深圳)有限公司 预取文件处理方法及装置
US20170220623A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Hot-Spot Adaptive Garbage Collection
US10089243B2 (en) 2016-02-25 2018-10-02 SK Hynix Inc. Memory controller and system including variable address mapping tables and a fixed address mapping table
US10540274B2 (en) * 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
US20170300422A1 (en) * 2016-04-14 2017-10-19 Micron Technology, Inc. Memory device with direct read access
US10366004B2 (en) * 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
WO2018022136A1 (en) 2016-07-26 2018-02-01 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US9952798B2 (en) * 2016-08-12 2018-04-24 Google Inc. Repartitioning data in a distributed computing system
JP2018041204A (ja) 2016-09-06 2018-03-15 東芝メモリ株式会社 メモリ装置及び情報処理システム
KR102611638B1 (ko) * 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
CN108009111B (zh) * 2016-11-01 2020-02-21 华为技术有限公司 数据流连接方法及装置
CN107870739B (zh) * 2017-03-15 2021-03-19 珠海市杰理科技股份有限公司 磁盘文件存储方法和系统
KR102233400B1 (ko) * 2017-05-29 2021-03-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN107329892B (zh) * 2017-06-07 2020-09-11 珠海市杰理科技股份有限公司 驱动测试方法、装置、存储介质及其计算机设备
US20180357121A1 (en) * 2017-06-09 2018-12-13 Qualcomm Incorporated Error correction calculation upon serial bus abort
US10521375B2 (en) 2017-06-22 2019-12-31 Macronix International Co., Ltd. Controller for a memory system
KR102270103B1 (ko) * 2017-07-11 2021-06-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10446197B2 (en) 2017-08-31 2019-10-15 Micron Technology, Inc. Optimized scan interval
US10579633B2 (en) 2017-08-31 2020-03-03 Micron Technology, Inc. Reducing probabilistic filter query latency
JP6785204B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP6785205B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
US10754580B2 (en) 2017-10-23 2020-08-25 Micron Technology, Inc. Virtual partition management in a memory device
CN109725840B (zh) * 2017-10-30 2022-04-05 伊姆西Ip控股有限责任公司 利用异步冲刷对写入进行节流
CN108021512A (zh) * 2017-11-22 2018-05-11 深圳忆联信息系统有限公司 一种固态硬盘映射管理方法及固态硬盘
US11455245B2 (en) 2017-12-11 2022-09-27 Micron Technology, Inc. Scheme to improve efficiency of garbage collection in cached flash translation layer
KR20190075352A (ko) * 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10365854B1 (en) 2018-03-19 2019-07-30 Micron Technology, Inc. Tracking data temperatures of logical block addresses
TWI670598B (zh) * 2018-05-14 2019-09-01 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
KR20200007595A (ko) * 2018-07-13 2020-01-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table
US11709623B2 (en) * 2018-08-03 2023-07-25 Sk Hynix Nand Product Solutions Corp. NAND-based storage device with partitioned nonvolatile write buffer
KR20200057866A (ko) 2018-11-16 2020-05-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법
CN109471831B (zh) * 2018-11-16 2021-10-29 郑州云海信息技术有限公司 一种数据处理方法及装置
KR20200076531A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN109783019B (zh) * 2018-12-28 2022-08-19 上海威固信息技术股份有限公司 一种数据智能存储管理方法与装置
US11152054B2 (en) 2019-08-28 2021-10-19 Micron Technology, Inc. Apparatuses and methods for performing background operations in memory using sensing circuitry
US11681797B2 (en) 2019-08-28 2023-06-20 Micron Technology, Inc. Row activation prevention using fuses
US11163449B2 (en) 2019-10-17 2021-11-02 EMC IP Holding Company LLC Adaptive ingest throttling in layered storage systems
CN110879687B (zh) * 2019-10-18 2021-03-16 蚂蚁区块链科技(上海)有限公司 一种基于磁盘存储的数据读取方法、装置及设备
US11249896B2 (en) 2019-12-20 2022-02-15 Micron Technology, Inc. Logical-to-physical mapping of data groups with data locality
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11429296B2 (en) 2020-06-01 2022-08-30 Western Digital Technologies, Inc. Storage system, host, and method for extended and imaginary logical-to-physical address mapping
TWI738442B (zh) * 2020-07-29 2021-09-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN112100095B (zh) * 2020-08-28 2023-07-04 深圳市宏旺微电子有限公司 闪存空间优化方法、装置和闪存存储设备
CN112069089B (zh) * 2020-09-11 2022-09-27 杭州海康威视系统技术有限公司 回收存储块的方法及装置
CN112416811B (zh) * 2020-11-18 2024-02-27 深圳市硅格半导体有限公司 基于数据关联度的垃圾回收方法、闪存及装置
CN112732174A (zh) * 2020-12-25 2021-04-30 北京金山云网络技术有限公司 数据的处理方法和装置、电子设备和存储介质
US11875036B2 (en) 2021-01-13 2024-01-16 Samsung Electronics Co., Ltd. Computing system including host and storage system and having increased write performance
KR102509987B1 (ko) * 2021-01-13 2023-03-15 삼성전자주식회사 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템
CN112860594B (zh) * 2021-01-21 2022-11-01 华中科技大学 一种固态盘地址重映射方法、设备及固态盘
US11687447B1 (en) 2022-01-04 2023-06-27 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of additional physical address information
US11894060B2 (en) 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability
CN116578246B (zh) * 2023-07-05 2023-09-29 合肥康芯威存储技术有限公司 一种存储设备及其控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030229753A1 (en) 2002-06-10 2003-12-11 Samsung Electronics Co., Ltd. Flash memory file system
US20060285397A1 (en) 2005-06-06 2006-12-21 Sony Corporation Storage device

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5535369A (en) 1992-10-30 1996-07-09 Intel Corporation Method for allocating memory in a solid state memory disk
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5860124A (en) 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US6098190A (en) * 1998-08-04 2000-08-01 Hewlett-Packard Co. Method and apparatus for use of a host address to validate accessed data
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6622199B1 (en) 1999-07-02 2003-09-16 Qualcomm Incorporated Method for minimizing data relocation overhead in flash based file systems
US7318117B2 (en) 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
US7966462B2 (en) 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
JP3863330B2 (ja) 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
US20080320209A1 (en) 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US20050204187A1 (en) 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
JP2001283594A (ja) 2000-03-29 2001-10-12 Sharp Corp 不揮発性半導体記憶装置
US6721843B1 (en) 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
DE10123285A1 (de) * 2001-05-12 2002-11-14 Conti Temic Microelectronic Zündelement für pyrotechnische Wirkmassen auf einer Schaltungsträgeranordnung mit einer Zündelektronikbaugruppe
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6771536B2 (en) 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
US20030212859A1 (en) 2002-05-08 2003-11-13 Ellis Robert W. Arrayed data storage architecture with simultaneous command of multiple storage media
US7123512B2 (en) 2002-07-19 2006-10-17 Micron Technology, Inc. Contiguous block addressing scheme
US6775751B2 (en) 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US6781877B2 (en) 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7428644B2 (en) 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
DE10339665B3 (de) 2003-08-28 2005-01-13 Infineon Technologies Ag Halbleiter-Speicherbauelement, mit Steuereinrichtung zum Aktivieren von Speicherzellen und Verfahren zum Betrieb eines Halbleiter-Speicherbauelements
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
WO2005066793A2 (en) 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7680977B2 (en) 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
US7194596B2 (en) 2004-06-09 2007-03-20 Simpletech Global Limited Method of efficient data management with flash storage system
US20080094952A1 (en) 2004-07-19 2008-04-24 Koninklijke Philips Electronics, N.V. Layer jump on a multi-layer disc
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8375146B2 (en) 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
JP4773446B2 (ja) 2004-08-24 2011-09-14 パンドウィット・コーポレーション ネットワークを管理するシステム及び方法
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
KR100652415B1 (ko) 2005-07-02 2006-12-01 삼성전자주식회사 1 로우 액티베이션 구조 또는 2 로우 액티베이션 구조를선택할 수 있는 반도체 메모리 장치 및 2 로우 액티베이션방법
TWM288401U (en) 2005-07-15 2006-03-01 Genesys Logic Inc Highly efficient data characteristics recognition device for flash memory
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7979624B2 (en) 2006-03-31 2011-07-12 Intel Corporation Techniques to truncate data files in nonvolatile memory
US20070260841A1 (en) 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
US7930468B2 (en) 2006-05-23 2011-04-19 Dataram, Inc. System for reading and writing on flash memory device having plural microprocessors
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US7958331B2 (en) * 2006-12-13 2011-06-07 Seagate Technology Llc Storage device with opportunistic address space
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US8120990B2 (en) 2008-02-04 2012-02-21 Mosaid Technologies Incorporated Flexible memory operations in NAND flash devices
US20090271562A1 (en) 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030229753A1 (en) 2002-06-10 2003-12-11 Samsung Electronics Co., Ltd. Flash memory file system
US20060285397A1 (en) 2005-06-06 2006-12-21 Sony Corporation Storage device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180011365A (ko) * 2014-12-12 2018-01-31 인텔 코포레이션 저장 시스템에서의 가속된 데이터 복구
KR102502352B1 (ko) 2014-12-12 2023-02-23 인텔 코포레이션 저장 시스템에서의 가속된 데이터 복구
US11126370B2 (en) 2018-03-12 2021-09-21 SK Hynix Inc. Memory controller and operating method thereof

Also Published As

Publication number Publication date
US9396103B2 (en) 2016-07-19
CN102831070B (zh) 2016-02-17
CN102831071B (zh) 2016-02-17
EP2156299A4 (en) 2012-07-04
JP5530012B2 (ja) 2014-06-25
KR20100034743A (ko) 2010-04-01
JP5350371B2 (ja) 2013-11-27
US20080307164A1 (en) 2008-12-11
EP2156299A1 (en) 2010-02-24
CN101779195B (zh) 2013-09-25
US20080307192A1 (en) 2008-12-11
CN102831071A (zh) 2012-12-19
TWI394160B (zh) 2013-04-21
WO2008154216A1 (en) 2008-12-18
EP2156299B1 (en) 2014-07-16
CN102831070A (zh) 2012-12-19
TW200905680A (en) 2009-02-01
JP2014013585A (ja) 2014-01-23
JP2010532023A (ja) 2010-09-30
CN101779195A (zh) 2010-07-14
US8429352B2 (en) 2013-04-23

Similar Documents

Publication Publication Date Title
KR101453264B1 (ko) 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
TWI437441B (zh) 多庫記憶體裝置之儲存位址重映射之方法及系統
US8209461B2 (en) Configuration of host LBA interface with flash memory
US8166267B2 (en) Managing a LBA interface in a direct data file memory system
US7739444B2 (en) System using a direct data file system with a continuous logical address space interface
US7877540B2 (en) Logically-addressed file storage methods
US8046522B2 (en) Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US7917686B2 (en) Host system with direct data file interface configurability
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
CN101233481B (zh) 通过逻辑地址空间且以直接数据文件为基础操作的介接系统
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
US20070136553A1 (en) Logically-addressed file storage systems
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
KR20090108694A (ko) 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
KR20090108695A (ko) 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱
WO2008082999A2 (en) Configuration of host lba interface with flash memory

Legal Events

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

Payment date: 20170919

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee