KR20100139149A - 다중 뱅크 메모리 장치에 대한 저장 주소 재매핑을 위한 방법과 시스템 - Google Patents

다중 뱅크 메모리 장치에 대한 저장 주소 재매핑을 위한 방법과 시스템 Download PDF

Info

Publication number
KR20100139149A
KR20100139149A KR1020107026324A KR20107026324A KR20100139149A KR 20100139149 A KR20100139149 A KR 20100139149A KR 1020107026324 A KR1020107026324 A KR 1020107026324A KR 20107026324 A KR20107026324 A KR 20107026324A KR 20100139149 A KR20100139149 A KR 20100139149A
Authority
KR
South Korea
Prior art keywords
block
address
lba
bank
sat
Prior art date
Application number
KR1020107026324A
Other languages
English (en)
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 KR20100139149A publication Critical patent/KR20100139149A/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

다중 뱅크 메모리에서 저장 주소 재매핑을 위한 방법 및 시스템이 개시된다. 이 방법은, 다수 블록의 클러스터들에 논리 주소를 할당하고 논리 주소를 저장 주소 공간에 재매핑하는 단계를 포함하고, 논리 주소 공간에 분산된 짧은 호스트 데이터 런(run)은 인접한 방식으로 저장 주소 공간에 메가블록에 매핑된다. 각 뱅크에서 독립적으로, 새로운 블록의 가용한 수가 특정 뱅크에서 요구되는 임계값 미만이 될 때 새로운 블록을 다중 뱅크 메모리의 각 뱅크에 데이터를 수신하기 위해 사용될 수 있도록 유효 및 폐용 데이터 모두를 갖는 블록으로부터 각 뱅크에서 유효 데이터가 플러싱된다.

Description

다중 뱅크 메모리 장치에 대한 저장 주소 재매핑을 위한 방법과 시스템{METHOD AND SYSTEM FOR STORAGE ADDRESS RE-MAPPING FOR A MULTI-BANK MEMORY DEVICE}
이 출원은 일반적으로 운영 시스템과 메모리 장치 사이의 데이터 통신에 관한 것이다. 보다 구체적으로, 이 출원은 다중 뱅크 재프로그래밍 가능한 비휘발성 반도체 플래시 메모리와 같은 메모리 시스템과, 상기 메모리가 연결되거나 연결될 수 있는 호스트 장치의 동작에 관한 것이다.
데이터를 통상의 플래시 데이터 메모리 시스템에 기록할 때, 호스트는 전형적으로 고유 논리 주소를 메모리 시스템의 가상 주소 공간 내에 섹터, 클러스터, 또는 기타 데이터 단위에 할당한다. 호스트는 메모리 시스템의 논리 주소 공간 내에 주소에 데이터를 기록하며 주소로부터 데이터를 판독한다. 메모리 시스템은 일반적으로 데이터를 논리 주소 공간과 메모리의 물리적 블록 또는 메타블록 사이에 매핑하며, 데이터는 논리 주소 공간 내 범위에 대응하여 고정된 논리 그룹으로 저장된다. 일반적으로, 각각의 고정된 논리 그룹은 메모리 시스템의 별도의 물리 블록에 저장된다. 메모리 시스템은 논리 주소 공간이 물리 메모리에 매핑되는 방법을 파악하지만 호스트는 이를 알지 못한다. 호스트는 논리 주소 공간 내에 그의 데이터 파일의 주소를 파악하지만 메모리 시스템은 이 매핑을 모르고 동작한다.
이러한 식으로 동작하는 메모리 시스템의 결점은 단편화(fragmentation)이다. NTFS 파일 시스템에 따라 동작하는 개인용 컴퓨터(PC)에서 고체 상태 디스크(SSD)에 기록되는 데이터는 흔히 드라이브의 논리 주소 공간 내에 광범위하게 분산된 위치에 짧은 인접 주소 런(run) 패턴인 특징이 있다. 호스트에 의해 사용되는 파일 시스템이 연속한 파일용의 새로운 데이터에 대해 순차적인 주소를 할당하더라도, 삭제된 파일의 임의의 패턴은 가용한 자유 메모리 공간의 단편화를 야기하여 새로운 파일 데이터가 블록 단위로 할당될 수 없도록 한다.
플래시 메모리 관리 시스템은 한 블록의 물리 주소에 한 블록의 연속한 논리 주소를 매핑하여 동작하는 경향이 있다. 호스트로부터 짧은 주소 런이 별개로 업데이트될 때, 이 런을 포함하는 완전한 논리 블록의 주소는 단일 블록에 그의 장기간 매핑을 유지해야 한다. 이것은 논리 대 물리 메모리 관리 시스템 내에서 가비지 수거(garbage collection) 동작을 필요로 하는데 이 동작에서 논리 블록 내에 호스트에 의해 업데이트되지 않은 모든 데이터는 이를 업데이트된 데이터에 합체하기 위해서 재배치된다. 다중 뱅크 시스템을 구성하는 개별 플래시 메모리 뱅크에 데이터가 블록으로 저장될 수 있는 다중 뱅크 플래시 메모리 시스템에서, 합체 프로세스는 방대해질 수 있다. 이것은 현저한 오버헤드가 되고, 이것은 기록 속도 및 메모리 수명을 크게 제약할 수 있다.
다중 뱅크 메모리 시스템에서 개선된 메모리 관리에 대한 필요성을 해결하기 위해, 방법이 본 명세서에 기재되어 있다. 제 1 실시예에 따라서, 호스트 시스템과 재프로그래밍 가능한 비휘발성 대량 저장 시스템 사이에서 데이터를 전송하는 방법이 개시된다. 방법은 상기 호스트 시스템에 의해 할당된 호스트 논리 블록 주소(LBA) 주소와 연관된 데이터를 수신하는 단계 및 상기 호스트 LBA 주소와 연관된 데이터를 주소 지정하기 위해 인접한 저장 LBA 주소의 메가블록를 할당하는 단계를 포함하고, 상기 인접한 저장 LBA 주소의 메가블록은 상기 복수의 메모리 셀 뱅크의 각 뱅크에서 적어도 하나의 메모리 셀 블록을 포함하고 할당시 미기록 용량만을 주소 지정한다. 상기 수신된 데이터에 대한 상기 호스트 LBA 주소 각각을 상기 인접한 저장 LBA 주소의 메가블록에 재매핑하는 단계가 행해지고, 각각의 저장 LBA 주소는 상기 호스트 LBA 주소에 관계없이 상기 수신된 데이터가 수신되는 순서로 상기 수신된 데이터에 순차적으로 인접하게 할당된다. 또한, 상기 복수의 뱅크 중 제 2 뱅크에서 하나의 블록을 플러싱하는 것과 무관하게 상기 복수의 뱅크 중 제 1 뱅크에서 하나의 블록이 플러싱되며, 상기 제 1 뱅크에서 블록을 플러싱하는 것은 상기 제 1 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를 제 1 재배치 블록 내 인접한 저장 LBA 주소에 재할당하는 것을 포함하며, 상기 제 2 뱅크에서 블록을 플러싱하는 것은 상기 제 2 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를 제 2 재배치 블록 내 인접한 저장 LBA 주소에 재할당하는 것을 포함한다.
또 다른 실시예에 따라서, 호스트 시스템과 재프로그래밍 가능한 비휘발성 대량 저장 시스템 사이에서 데이터를 전송하는 방법이 제공되고, 상기 대량 저장 시스템은 복수의 메모리 셀 뱅크를 갖고, 상기 복수의 뱅크 각각은 함께 소거될 수 있는 다수 블록의 메모리 셀로 배열된다. 방법은 수신된 호스트 데이터에 대한 호스트 논리 블록 주소(LBA) 주소를 저장 LBA 주소의 메가블록에 재매핑하는 단계를 포함하며, 상기 저장 LBA 주소의 메가블록은 상기 복수의 메모리 셀 뱅크의 각 뱅크에 적어도 하나의 블록의 메모리 셀을 포함한다. 수신된 데이터에 대한 호스트 LBA 주소는 상기 호스트 LBA 주소에 관계없이 상기 수신된 데이터가 수신되는 순서로, 상기 메가블록 내 메가페이지 순서로 저장 LBA 주소에 인접하게 할당되며, 각각의 메가페이지는 상기 메가블록의 블록 각각에 대한 메타페이지를 포함한다. 방법은 상기 복수의 뱅크의 각 뱅크에서 플러시 동작을 독립적으로 수행하는 단계를 더 포함한다. 플러시 동작은 특정 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를, 상기 특정 뱅크 내의 재배치 블록에서 인접한 저장 LBA 주소에 재할당하는 단계를 포함한다.
발명의 다른 특징과 이점은 다음 도면, 상세한 설명 및 청구항의 검토시 명백하게 될 것이다.
본 발명은, 다중 뱅크 메모리 시스템에서 개선된 메모리 관리에 대한 필요성을 해결하기 위한 방법을 제공하는 효과를 갖는다.
도 1은, 다중 뱅크 비휘발성 메모리를 갖는 메모리 시스템에 연결되는 호스트를 도시한 도면.
도 2는, 도 1의 다중 뱅크 비휘발성 메모리에서 사용하기 위한 플래시 메모리 시스템 제어기의 예의 블록도.
도 3은, 도 1에 도시된 플래시 메모리 뱅크 중 하나로서 적합한 일례의 플래시 메모리 뱅크를 나타낸 도면.
도 4는, 도 3의 메모리 뱅크에서 사용될 수 있는 메모리 셀 어레이의 대표적 회로도.
도 5는, 도 3의 메모리 뱅크의 물리적 메모리 구성예.
도 6은, 도 5의 물리 메모리의 부분의 확대도.
도 7은, 도 1의 다중 뱅크 메모리 내 복수 뱅크의 물리 메모리 구성도.
도 8은, 호스트 LBA 주소 공간 내 전형적인 한 패턴의 할당된 자유 클러스터를 도시한 도면.
도 9는, 한 개시된 구현에 따라 블록에 의해 클러스터의 할당 패턴을 도시한 도면.
도 10은, 메모리 시스템의 메모리 관리자가 저장 주소 지정 재매핑 기능을 탑재한 메모리 시스템과 호스트 사이에 저장 주소 재매핑의 구현을 도시한 도면.
도 11은, 도 10에 도시된 저장 주소 재매핑의 대안적 구현을 도시한 도면.
도 12는, 기능이 호스트 상에 위치한 저장 주소 재매핑의 구현을 도시한 도면.
도 13은, 도 10 내지 도 12의 시스템에 사용하기 위한 다중 뱅크 기록 알고리즘의 흐름도.
도 14는, 메모리 시스템의 개개의 뱅크에서 다수 블록의 클러스터의 할당의 상태도.
도 15는, 다중 뱅크 메모리 시스템의 각 뱅크에 독립적으로 적용될 수 있는 플러시 동작의 흐름도.
도 16은, 메가블록 내 DLBA 런 분포도.
도 17은, 메가블록 기록 절차 및 도 16의 DLBA 분포를 위한 저장 주소 테이블 발생을 도시한 도면.
도 18은, 도 16의 메가블록 내 블록이 플러싱된 후에 DLBA 런의 재배열 예를 도시한 도면.
도 19는, 다중 뱅크 메모리 내 한 뱅크 및 이 뱅크에 대한 물리 주소 공간 내 대응하는 업데이트 블록의 DLBA 주소 공간에서 플러시 동작을 도시한 도면.
도 20은, 도 19의 뱅크의 DLBA 공간에서 제 2 플러시 동작을 도시한 도면.
도 21은, 플러시 동작을 위한 핑크 블록 선택 프로세스의 흐름도.
도 22는, 호스트 논리 주소가 제 2 논리 주소 공간에 재매핑되는 배열에서 저장 주소 테이블(SAT) 계층을 도시한 도면.
도 23은, 논리 대 논리 매핑을 추적하는데 사용되는 저장 주소 테이블(SAT) 기록 블록을 도시한 도면.
도 24는, 도 23의 SAT 테이블의 SAT 페이지에서 사용하기 위한 LBA 엔트리.
도 25는, 도 23의 SAT 테이블의 SAT 페이지에서 사용하기 위한 DLBA 엔트리.
도 26은, 도 23의 SAT 테이블의 SAT 페이지에서 사용하기 위한 SAT 색인 엔트리.
도 27은, 도 11 및 도 12의 저장 주소 재매핑 구현에서 사용하기 위한 저장 주소 테이블 변환 절차도.
도 28은, SAT 블록 전이의 상태도.
도 29는, SAT 블록 플러시 순서를 판정하기 위한 프로세스의 흐름도.
도 30은, 블록 정보 테이블(BIT) 기록 블록을 도시한 도면.
도 31은, 메가블록 내 DLBA 런 분포도.
도 32는, 논리 주소의 전체 메가블록이 DLBA 런에 매핑되는 SAT의 실시예도.
도 33은, LBA 주소를 위한 주소 형식의 예를 도시한 도면.
발명의 특징을 구현하는데 사용하기에 적합한 플래시 메모리 시스템이 도 1 내지 도 7에 도시되어 있다. 도 1의 호스트 시스템(100)은 데이터를 메모리 시스템(102)에 저장하며 이로부터 데이터를 가져온다. 메모리 시스템은 이를테면 개인용 컴퓨터에 설치된 고체 상태 디스크(SSD) 드라이브 형태와 같이, 호스트 내에 내장된 플래시 메모리일 수 있다. 대안적으로, 메모리 시스템(102)은 도 1에 도시된 바와 같이 기계 전기적 커넥터의 서로 짝이 되는 부분(103, 104)을 통해 호스트에 분리 가능하게 연결된 카드 형태일 수 있다. 내부 또는 내장형 SSD 드라이브로 사용하도록 구성된 플래시 메모리는 도 1의 개략도와 유사하게 보일 수 있고, 주된 차이는 호스트 내부에 메모리 시스템(102)의 위치이다. SSD 드라이브는 회전하는 자기 디스크 드라이를 바로 대체하는 개별 모듈 형태일 수 있다.
시판되는 SSD 드라이브의 일례는 샌디스크 사에 의해 생산된 32 기가바이트 SSD이다. 시판되는 분리 가능 플래시 메모리 카드의 예는 콤팩트플래시(CF), 멀티미디어카드(MMC), 시큐어 디지털(SD), 미니SD, 메모리 스틱, 스마트미디어 및 트랜스플래시 카드를 포함한다. 이들 카드 각각은 이의 표준화된 명세에 따라 고유한 기계적 및/또는 전기적 인터페이스를 갖지만, 각각에 포함된 플래시 메모리 시스템은 비슷하다. 이들 카드는 모두 본원의 양수인인 샌디스크 사로부터 구입될 수 있다. 또한, 샌디스크는 Cruzer 상표로 한 품목의 플래시 드라이브를 제공하는데, 이들은 호스트의 USB(Universal Serial Bus) 리셉터클에 끼워넣음으로써 호스트와 연결하기 위한 USB 플러그를 갖춘 소형 패키지의 휴대 메모리 시스템이다. 이들 메모리 카드와 플래시 드라이브 각각은 호스트와 인터페이스하여 이들 내에 플래시 메모리의 동작을 제어하는 제어기를 포함한다.
SSD, 메모리 카드와 플래시 드라이브를 사용할 수 있는 호스트 시스템은 많이 있으며 다양하다. 이들은 데스크탑 또는 랩탑과 같은 개인용 컴퓨터(PC) 및 기타 휴대용 컴퓨터, 휴대 전화, PDA(personal digital assistants), 디지털 스틸 카메라, 디지털 무비 카메라 및 휴대 오디오 플레이어를 포함한다. 휴대 메모리 카드 용도에서, 호스트는 하나 이상의 유형의 메모리 카드 또는 플래시 드라이브를 위한 내장 리셉터클을 포함하며, 또는 호스트는 메모리 카드가 끼워 넣어지는 어댑터를 필요로 할 수 있다. 메모리 시스템은 일반적으로 자신의 메모리 제어기 및 드라이버를 내장하는 대신에 메모리가 연결되는 호스트에 의해 실행되는 소프트웨어에 의해 제어되는 일부 메모리만 있는 시스템도 있다. 제어기를 내장한 일부 메모리 시스템, 특히 호스트 내에 내장된 시스템에서, 메모리, 제어기 및 드라이버는 단일 집적 회로 칩에 흔히 형성된다.
도 1의 호스트 시스템(100)은 메모리(102)에 관한 한, 회로와 소프트웨어와의 조합으로 구성되는 2개의 주요 부분을 구비한 것으로 볼 수 있다. 이들은 애플리케이션 부(105)와, 메모리(102)와 인터페이스하는 드라이버 부(106)이다. 예를 들어, PC에서, 애플리케이션 부(105)는 호스트(100) 상에서 데이터를 관리하기 위한 파일 시스템(110)뿐만 아니라, 워드 프로세싱, 그래픽스, 제어 또는 기타 많이 사용되는 애플리케이션 소프트웨어를 실행하는 프로세서(109)를 포함할 수 있다. 주로 단일의 한 세트의 기능을 수행하는데 전용되는 카메라, 휴대 전화 또는 기타 호스트 시스템에 있어서, 애플리케이션 부(105)는 사진을 촬영하여 저장하게 카메라를 동작시키고 발호 및 착호하게 휴대 전화를 동작시키는 등을 수행하는 소프트웨어를 포함한다.
도 1의 메모리 시스템(102)은 다중 뱅크 플래시 메모리(107)와 같은 비휘발성 메모리, 및 데이터를 주고받기 위해 메모리 시스템(102)이 연결되는 호스트(100)와 인터페이스하며 메모리(107)를 제어도 하는 제어기 회로(108)를 포함할 수 있다. 제어기(108)는 데이터 프로그래밍 및 판독동안에, 호스트(100)에 의해 사용되는 데이터의 논리 주소와 다중 뱅크 플래시 메모리(107)의 물리 주소를 변환할 수 있다. 다중 뱅크 플래시 메모리(107)는 임의의 수의 메모리 뱅크를 포함할 수 있고, 여기에서는 예시로서 간단히 4개의 메모리 뱅크(107A ~ 107D)가 도시되었다.
도 2를 참조하면, 시스템 제어기(108)는 용도에 특정한 집적 회로(ASIC)와 같은 단일 집적 회로 칩 상에 구현될 수 있다. 제어기(108)의 프로세서(206)는 다중 뱅크 플래시 메모리(107) 내 각각의 뱅크(107A ~ 107D) 각각을 위한 I/O 포트를 갖는 메모리 인터페이스(204)를 통해 각각의 메모리 뱅크(107A ~ 107D)와 개별적으로 통신할 수 있는 멀티-스레드(multi-thread) 프로세서로 구성될 수 있다. 제어기(108)는 내부 클럭(218)을 포함할 수 있다. 프로세서(206)는 내부 데이터 버스(202)를 통해 오류 정정 코드(ECC) 모듈(214), RAM 버퍼(212), 호스트 인터페이스(216), 및 부트 코드 ROM(210)과 통신한다.
도 3에 단일 뱅크(7A) 도시를 참조하면, 다중 뱅크 플래시 메모리(107) 내 각각의 뱅크는 하나 이상의 집적 회로 칩으로 구성될 수 있고, 각각의 칩은 하나 이상의 집적 회로 칩으로 구성될 수 있고, 각각의 칩은 복수의 서브어레이 또는 플레인(plane)으로 구성된 하나의 어레이의 메모리 셀을 포함할 수 있다. 간단하게 하기 위해서 2개의 이러한 플레인(310, 312)이 도시되었으나, 4개 또는 8개 같이 그 이상의 이러한 플레인이 사용될 수 있다. 대안적으로, 메모리 뱅크의 메모리 셀 어레이는 플레인으로 분할되지 않을 수 있다. 그러나, 이와 같이 분할될 때, 각각의 플레인은 서로 무관하게 동작할 수 있는 자신의 열(column) 제어 회로(314, 316)를 갖는다. 회로(314, 316)는 시스템 버스(302)의 주소부(306)로부터 이들의 각각의 메모리 셀 어레이의 주소를 수신하며, 이들을 디코딩하여 각각의 비트 라인(318, 320) 중 특정한 하나 이상의 비트 라인을 주소 지정한다. 워드 라인(322)은 주소 버스(19)에서 수신된 주소에 응하여 행 제어 회로(324)를 통해 주소 지정된다. 소스 전압 제어 회로(326, 328)도 p-웰 전압 제어 회로(330, 332)와 마찬가지로 각각의 플레인에 연결된다. 뱅크(107A)가 단일의 한 어레이의 메모리 셀을 구비한 메모리 칩 형태이고 시스템 내에 2개 이상의 이러한 칩이 존재하면, 각 칩의 어레이는 위에 기술된 다중 플레인 칩 내에 플레인 또는 서브 어레이와 유사하게 동작될 수 있다. 각각의 뱅크(107A ~ 107D)는 기능이 제어기(108)에 의해 독립적으로 동시에 또는 비동기 형태로 제어될 수 있게 구성된다. 예를 들어, 제 1 뱅크는 제 2 뱅크가 데이터를 판독하고 있는 동안 데이터를 기록하라는 지시를 받을 수 있다.
시스템 버스(302)의 데이터부(304)에 연결된 각각의 데이터 입력/출력 회로(334, 336)를 통해 데이터가 플레인(310, 312) 내로 및 이로부터 전송된다. 회로(334, 336)는 이들의 각각의 플레인의 메모리 셀로부터, 각각의 열 제어 회로(314, 316)를 통해 플레인에 연결된 라인(338, 340)을 통해, 메모리 셀에 데이터를 프로그래밍하는 것과, 데이터를 판독하는 것 모두를 제공한다.
제어기(108) 내 프로세서(206)가 데이터를 프로그램하고, 데이터를 판독하고, 소거하고 다양한 하우스키핑 사안을 처리하기 위해 각 뱅크(107A ~ 107D) 내 메모리 칩의 동작을 제어할지라도, 각각의 메모리 칩은 이러한 기능을 수행하기 위해 제어기(108)로부터 명령을 실행하는 어떤 제어하는 회로를 포함한다. 인터페이스 회로(342)는 시스템 버스(302)의 제어 및 상태부(308)에 연결된다. 제어기(108)로부터 명령은 이들 명령을 실행하기 위해서 다른 회로의 특정한 제어를 제공하는 상태 머신(344)에 제공된다. 제어 라인(346 ~ 354)은 도 3에 도시된 바와 같이 상태 머신(344)을 이들 다른 회로에 연결한다. 상태 머신(344)으로부터 상태 정보는 버스부(308)를 통해 제어기(108)에 전송을 위해서 라인(356)을 통해 인터페이스(342)에 전달된다.
NOR와 같은 다른 아키텍처가 사용될 수 있지만, 메모리 셀 어레이(310, 312)의 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 어레이가 도 4의 회로도에 의해 도시되었으며, 이것은 도 3의 메모리 시스템의 메모리 셀 어레이(310)의 부분이다. 상당 수의 전역 비트 라인이 제공되는데, 설명을 간단하게 하기 위해서 도 4에는 단지 4개의 이러한 라인(402 ~ 408)이 도시되었다. 다수의 직렬 연결된 메모리 셀 스트링(410 ~ 424)이 이들 비트 라인 중 한 비트 라인과 기준 전위 사이에 연결된다. 메모리 셀 스트링(414)을 대표로서 사용하면, 복수의 전하 저장 메모리 셀(426 ~ 432)이 스트링의 양단에 선택 트랜지스터(434, 436)와 직렬로 연결된다. 스트링의 선택 트랜지스터가 도통이 되었을 때, 스트링은 이의 비트 라인과 기준 전위 사이에 연결된다. 이어서 이 스트링 내에 한 메모리 셀이 동시에 프로그램 또는 판독된다.
도 4의 워드 라인(438 ~ 444)은 메모리 셀의 다수의 스트링 각각에 한 메모리 셀의 전하 저장 소자를 가로질러 개별적으로 확장하며, 게이트(446, 450)는 스트링 각각의 스트링에 선택 트랜지스터의 상태를 제어한다. 공통 워드를 공유하며 게이트 라인(438 ~ 450)을 제어하는 메모리 셀 스트링은 함께 소거되는 한 블록(452)의 메모리 셀을 형성하게 만들어진다. 셀의 이 블록은 한 번에 물리적으로 소거될 수 있는 최소 수의 셀을 포함한다. 워드 라인(438 ~ 444) 중 하나의 워드 라인을 따라 있는 것인 한 행의 메모리 셀은 한 번에 프로그램된다. 전형적으로, NAND 어레이의 행은 규정된 순서로 프로그램되는데, 이 경우에 접지 또는 또 다른 공통 전위에 연결된 스트링의 끝에 가장 가까운 워드 라인(444)을 따라 있는 행부터 시작한다. 블록(452) 전체에 걸쳐, 다음에 워드 라인(442)을 따라 있는 한 행의 메모리 셀이 프로그램된다, 등등. 워드 라인(438)을 따라 있는 행이 마지막에 프로그램된다.
제 2 블록(454)도 유사하며, 이의 메모리 셀 스트링은 다른 한 세트의 워드 및 제어 게이트 라인을 갖지만 제 1 블록(452) 내 스트링과 동일한 전역 비트 라인에 연결된다. 워드 및 제어 게이트 라인은 행 제어 회로(324)에 의해 이들의 적합한 동작 전압으로 구동된다. 도 3의 플레인 1 및 플레인 2와 같이, 시스템에 하나 이상의 플레인 또는 서브 어레이가 있다면, 한 메모리 아키텍처는 이들 사이에 확장하는 공통의 워드 라인을 사용한다. 대안적으로 공통의 워드 라인을 공유하는 2 이상의 플레인 또는 서브 어레이이 있을 수 있다. 다른 메모리 아키텍처에서는 개개의 플레인 또는 서브 어레이의 워드 라인이 개별적으로 구동된다.
위에 참조된 몇몇의 NAND 특허 및 공개된 출원에 기술된 바와 같이, 메모리 시스템은 각각의 전하 저장 소자 또는 영역에 2 이상의 검출 가능한 레벨의 전하를 저장하고 그럼으로써 한 비트 이상의 데이터를 각각에 저장할 수 있게 동작될 수 있다. 메모리 셀의 전하 저장 소자는 대부분 일반적으로 도전성 플로팅 게이트이지만 대안적으로 미국 특허 출원 공개번호 2003/0109093에 기술된 바와 같이, 비도전성 유전 전하 트랩핑 물질일 수 있다.
도 5는 이하 설명에서 예로서 사용되는 다중 뱅크 플래시 메모리(107)(도 1)의 한 뱅크(107A)의 구성을 개념적으로 도시한 것이다. 4개 플레인 또는 서브 어레이(502 ~ 508)의 메모리 셀은 단일 집적 메모리 셀 칩 상에, 또는 2개의 칩 상에(각 칩에 플레인 중 2개), 또는 4개의 개별 칩 상에 있을 수 있다. 특정한 배열은 이하 논의에 중요하지 않다. 물론, 1, 2, 8, 16 또는 그 이상과 같이, 다른 수의 플레인이 시스템에 존재할 수 있다. 플레인은 각각의 플레인(502 ~ 508) 내에 위치한, 이를테면 블록(510, 512, 514, 516)과 같이, 사각형에 의해 도 5에 도시된 메모리 셀 블록으로 개별적으로 분할된다. 각 플레인에는 수 다스(dozen) 또는 수백 개의 블록이 있을 수 있다.
상술한 바와 같이, 한 메모리 셀 블록은 소거 단위(unit)로서, 물리적으로 함께 소거될 수 있는 최소수의 메모리 셀이다. 그러나, 병행도를 증가시키기 위해서, 블록은 더 큰 메타블록 단위로 동작된다. 각 플레인으로부터 한 블록이 함께 논리적으로 연결되어 메타블록을 형성한다. 4개의 블록(510 ~ 516)이 하나의 메타블록(518)을 형성하는 것으로 보인다. 메타블록 내 모든 셀은 전형적으로 함께 소거된다. 블록(522 ~ 528)으로 구성된 제 2 메타블록(520)으로 도시된 바와 같이, 메타블록을 형성하기 위해 사용되는 블록은 이들 각각의 플레인 내에 동일한 상대 위치로 제한될 필요가 없다. 일반적으로 고 시스템 성능을 위해서 모든 플레인에 걸쳐 메타블록을 확장하는 것이 바람직하더라도, 메모리 시스템은 서로 다른 플레인 내에 하나, 2개 또는 3개의 블록 중 하나 또는 전부인 메타블록을 동적으로 형성하는 능력을 갖고 동작될 수 있다. 이것은 메타블록의 크기가 한 프로그래밍 동작으로 저장에 가용한 데이터량에 더욱 가깝게 서로 부합될 수 있게 한다.
그러면 개개의 블록은 동작의 목적을 위해서, 도 6에 도시된 바와 같이, 다수 페이지의 메모리 셀로 분할된다. 예를 들어, 블록(510 ~ 516) 각각의 메모리 셀은 8개의 페이지(P0 ~ P7)로 각각 분할된다. 대안적으로, 각 블록 내에는 16, 32, 또는 그 이상의 페이지의 메모리 셀이 있을 수 있다. 페이지는 한 블록 내에 데이터 프로그래밍 및 판독 단위로서, 한 번에 프로그램 또는 판독되는 최소량의 데이터를 포함한다. 도 3의 NAND 아키텍처에서, 페이지는 블록 내 워드 라인을 따른 메모리 셀로 형성된다. 그러나, 메모리 시스템의 동작상에 병행도를 증가시키기 위해서, 2 또는 그 이상의 블록 내에 이러한 페이지는 메타페이지로 논리적으로 연결될 수 있다. 도 6에 메타페이지(602)가 도시되었고 4개의 블록(510 ~ 516) 각각으로부터 하나의 물리적 페이지로 형성된다. 예를 들어, 메타페이지(602)는 4개의 블록의 각각의 블록의 페이지(P2)를 포함하나 메타페이지의 페이지는 반드시 블록 각각 내에 동일 상대 위치를 가질 필요는 없다. 뱅크에서 메타페이지는 최대 프로그래밍 단위이다.
위에 언급된 바와 같이, 도 5 및 도 6은 다중 뱅크 메모리(107)의 한 메모리 뱅크(107A) 내에 존재할 수 있는 메모리 셀 배열의 일 실시예를 도시한 것이다. 일 실시예에서, 각 뱅크(107A ~ 107D)에 대한 개개의 메모리 셀 구성에 관계없이, 바람직하게 메모리 시스템(102)은 최대 메가블록 프로그래밍 단위를 갖게 구성되는데, 메가블록은 메모리 뱅크가 단일 플레인 구성으로 배열된다면, 다중 뱅크 메모리 내 각 뱅크의 적어도 하나의 블록의 크기이며, 메모리 뱅크가 복수의 플레인 구성으로 배열되면, 다중 뱅크 플래시 메모리(107)에 각각의 뱅크의 메타블록의 크기이며, 또는 메모리 뱅크가 복수의 플레인 구성으로 배열되면, 다중 뱅크 플래시 메모리(107)에 각 뱅크의 메타블록의 크기이다. 다음 논의에서, 설명의 명확성을 위해서 각 뱅크는 다수 열의 메타블록으로 배열되는 것으로 가정된다. 도 7을 참조하면, 도시된 각 열은 위에 논의된 메타블록(518, 520)과 같이 한 뱅크(107A ~ 107D)의 메타블록(702)을 나타낸다. 메가블록(704)은 각 뱅크(107A ~ 107D) 내에 적어도 하나의 메타블록(702)을 포함하며, 각 메타블록(702)은 복수의 메타페이지(706)로 분할된다. 도 7에서 확인된 메가블록(704)이 각 뱅크(107A ~ 107D) 내에서 동일 상대적인 물리적 위치에 메타블록(702)을 도시하고 있을지라도, 메가블록(704)을 형성하기 위해 사용되는 메타블록(702)은 동일한 상대적인 물리적 위치로 제약될 필요는 없다. 또한, 여기에서 언급되는 바와 같이, 메가페이지(708)는 메가블록(704) 내 메타블록(702) 각각으로부터의 메타페이지(706)를 지칭한다. 메모리 뱅크(107A ~ 107D)는 각각 유사한 방식으로 배열되거나, 서로 다른 메모리 셀 배열을 가질 수 있다. 예를 들어, 뱅크는 제 1 뱅크의 바이너리(단일 층의 셀 또는 SLC) 플래시 및 또 다른 하나의 뱅크의 다중 층 셀(MLC) 플래시를 갖는 것과 같은, 다른 유형의 메모리 기술을 사용할 수 있을 것이다. 다른 실시예에서, 제 1 뱅크는 재기록가능 비휘발성 플래시로 제조될 수 있고, 나머지 뱅크는 정규 뱅크 블록에서 필요로 할 수 있는 것으로 데이터를 이동하지 않고 메가페이지의 속성이 업데이트될 수 있게 표준 플래시(예를 들면, 바이너리 또는 다중 층 셀 플래시)를 사용할 수 있다.
도 8을 참조하면, 호스트(100)와 메모리 시스템(102) 사이에 공통 논리 인터페이스는 메모리 시스템(102)에 저장될 수 있는 모든 데이터에 대해 주소를 제공하기에 충분히 큰 연속된 논리 주소 공간(800)을 이용한다. 위에 기술된 호스트(100) 및 메모리 시스템(102)을 참조하면, 다중 뱅크 플래시 메모리(107)에 저장할 예정인 데이터는 전형적으로 호스트 논리 블록 주소(LBA) 형식으로 수신된다. 이 호스트 주소 공간(800)은 전형적으로 데이터 클러스터의 증분으로 분할된다. 각 클러스터는 주어진 호스트 시스템에서 전형적으로 4 내지 64 섹터 사이의 어떤 수인 다수 섹터의 데이터를 포함하게 설계될 수 있다. 표준 섹터는 512 바이트의 데이터를 포함한다. 도 8을 참조하면, NTFS 파일 시스템용으로 논리 주소 공간(800)에 전형적인 한 패턴의 할당된 클러스터(어둡게 한 부분)(802) 및 자유 클러스터(어둡게 하지 않은 부분)(804)가 도시되었다.
도 8에 보인 논리 주소 공간(800)의 단편화를 해결하기 위한 조직적 구조가 도 9에 도시되었다. 여기에 기술된 저장 주소 재매핑을 위한 시스템 및 방법은 일반적으로 이하 논의에서 "블록"이라고 하는, 클러스터(900)의 메타블록에 관하여 LBA 주소를 할당한다. 다음 설명에서, 유효 데이터로 완전히 채워진 블록(900)을 레드(red) 블록(902)이라 하며, 유효하지 않은 데이터를 갖고, 이에 따라 미기록 용량만을 포함하는 블록을 화이트(white) 블록(904)이라 한다. 화이트 블록(904)에 미기록 용량은 메모리 시스템(102)이 "사용 후 소거" 유형의 절차를 채용하고 있다면, 소거된 상태에 있을 수 있다. 대안적으로, 화이트 블록(904)에 미기록 용량은 메모리 시스템(102)이 "사용 전 소거" 유형의 절차를 채용한다면 할당시 소거될 필요가 있게 될 폐용(obsolete) 데이터로 구성될 수 있다. 완전히 프로그램되어 있고 유효한 데이터 클러스터(802) 및 무효한(폐용이라고도 함) 데이터 클러스터(804) 모두를 갖고 있는 블록을 핑크(pink) 블록(906)이라 한다. 완전히 프로그램되어 있고 유효한 데이터 클러스터(802) 및 무효한(폐용이라고도 함) 데이터 클러스터(804) 모두를 갖고 있는 블록을 핑크(pink) 블록(906)이라 한다. 여기에서 상세히 논의되는 바와 같이, 각 뱅크(107A ~ 107D)에 적어도 하나의 화이트 블록(904)으로 구성된 메가블록(704)은 호스트로부터 데이터를 수신하기 위해 할당되며 기록 메가블록이라고 한다.
다중 뱅크 기록 알고리즘 및 이하 기술되는 플러싱(flushing) 기술의 구현은 호스트(100) 및 메모리 시스템(102)의 배열에 따라 변할 수 있다. 도 10 내지 도 12는 호스트와 메모리 시스템 사이에 재매핑 기능의 몇 가지 배열을 도시한 것이다. 도 10 내지 도 11의 배열은 저장 주소 재매핑(STAR) 기능이 메모리 시스템(1004, 1102) 내에 완전히 내장된 실시예를 나타낸다. 이들 제 1의 2개의 배열에서, 메모리 시스템(1004, 1102)은 호스트(1002)에 어떠한 수정도 요구하지 않고 기존 호스트(1002)와 함께 동작할 수 있다. 반대로, 도 12에 도시된 배열은 저장 주소 재매핑 기능이 완전히 호스트(1202) 내에 내장되는 실시예이다. 이 후자의 실시예에서, 호스트(1202)는 어떠한 수정도 필요로 하지 않는 기존 저장 장치(1204)와 함께 동작할 수 있다. STAR 기록 기능의 도 10 내지 도 12의 각 배열에서 다양한 구현 외에도, 이하 상세히 기술되는 플러시 동작은 다를 것이다. 단일 뱅크 메모리에 기록 및 플러싱하기 위한 플래시 블록 관리의 예는 본 명세서에 모두 참조로 포함되어 있는 2008년 2월 22일에 출원된 공동 계류중인 미국출원번호 12/036,014에 개시되어 있다.
도 10의 예에서, 저장 주소 매핑 알고리즘은 저장 장치(1004)의 각 뱅크의 메모리 관리(1006)에 통합될 수 있고, 다음 메가블록으로 진행하기 전에 물리 메모리의 제 1 메가블록이 데이터로 완전히 채워지게 호스트(1002)로부터 LBA 주소가 다중 뱅크 플래시 메모리에 물리적 블록에 직접 매핑된다. 대안적으로, 도 11에서, 저장 주소 재매핑 메커니즘은 장치(1102)의 각 뱅크에 대해 메모리 관리자(1104)와 별도의, 저장 장치(1102) 상의 애플리케이션에 구현될 수 있다. 도 11의 구현에서, 호스트(1002)로부터 각 논리 주소는 완전한 메가블록에 관하여 호스트로부터 데이터를 기록하는 기술을 이용하여, 여기에서는 저장 논리 블록 주소(저장 LBA)이라고 하는 {여기에서는 장치 논리 블록 주소(DLBA)이라고도 함} 제 2 논리 주소로 재매핑될 것이며, 이어서 메모리 관리자(1104)는 DLBA 배열 하에 조직된 데이터를 각 뱅크에 대한 물리 메모리의 블록으로 전환할 것이다. DLBA 주소 공간은 물리 메타블록의 크기와 동일한 균일한 크기의 DLBA 블록으로 구성된다.
도 12의 구현은 저장 장치(1204)로부터 저장 주소 재매핑의 기능을 호스트(1202)의 애플리케이션으로 옮길 것이다. 이 구현에서, LBA 주소를 DLBA 주소에 매핑하는 기능은 도 11의 것과 유사할 것이며, 주된 차이는 전환이 메모리 장치(1204)에서가 아니라 호스트(1202)에서 행해질 것이라는 것이다. 그러면, 호스트(1202)는 DLBA 주소와 연관된 데이터와 함께, 호스트에서 발생된 DLBA 주소 정보를 메모리 장치(1204)에 전송할 것이다. 도 12의 구현을 위한 논리 주소의 블록에 관하여 논리 주소 공간(800)을 분할 및 관리하기 위해서, 호스트 및 메모리 시스템은 플래시 메모리에 물리 블록의 블록 크기에 관하여 정보를 교환할 필요가 있을 수 있다. 논리 블록의 크기는 바람직하게는 물리 블록과 동일 크기이며, 이 정보는 메모리 시스템이 호스트에 연결될 때 통보될 수 있다. 이 통보는 기동시 또는 호스트에 메모리 시스템의 연결시 핸드-쉐이킹 동작으로서 행해지도록 셋업될 수 있다. 일 실시예에서, 호스트는 블록 크기 및 정렬 정보를 요청하는 "드라이브 확인" 질의를 메모리 시스템에 보낼 수 있고, 여기서 블록 크기는 특정 메모리 시스템에 대한 개별 물리 블록의 크기이며, 정렬 정보는 이미 일부 각 물리 블록을 취하고 있는 시스템 데이터에 대해 고려될 필요가 있는 물리 블록의 시작부터의 오프셋 이다 (존재할 경우).
드라이브 확인 명령은 기존 LBA 인터페이스 명령 세트에서 유보된 코드로 구현될 수 있다. 명령은 표준 통신 인터페이스에서 유보된 또는 비할당된 명령 코드를 통해 호스트에서 메모리 시스템으로 전송될 수 있다. 적합한 인터페이스의 예는 고체 상태 디스크를 위한 ATA 인터페이스, 또는 예를 들어 CF나 SD 메모리 카드에서 사용되는 것인 ATA-관련 인터페이스를 포함한다. 메모리 시스템이 블록 크기 및 오프셋 정보 모두를 제공할 수 없다면, 호스트는 내정된 블록 크기 및 오프셋을 취할 수 있다. 메모리 시스템이 오프셋 정보 없이 블록 크기 정보로만 드라이브 확인 명령에 응답한다면, 호스트는 내정된 오프셋을 취할 수 있다. 내정된 블록 크기는 다수의 표준 블록 크기 중 어느 것일 수 있고, 바람직하게는 가능한 실제 물리 블록 크기보다 더 크게 설정된다. 내정된 오프셋은 각 물리 블록이 물리 블록 내 제 1 주소에서 시작하는 데이터를 호스트로부터 수신할 수 있을 것으로 가정하여 제로 오프셋으로 설정될 수 있다. 호스트가 SSD와 같은 소정의 내부 드라이브에 결합된다면, 메모리 장치의 역량을 이미 알고 있고 역량이 사전에 프로그램될 수 있기 때문에 블록 크기 및 오프셋을 판정하는 단계를 수행할 필요가 없을 수 있다. 그러나, 내부 드라이브도 교체될 수 있기 때문에, 호스트는 항시 메모리 장치 역량을 검증하게 구성될 수 있다. 착탈 가능 메모리 시스템에 있어서, 호스트는 드라이브 확인 명령 또는 유사한 메커니즘을 통해 블록 크기 및 오프셋에 관하여 물어볼 수 있다.
다중 뱅크 메가블록 기록 알고리즘
일 실시예에 따라, 도 13에 도시된 바와 같이, 다중 뱅크 메모리에서 호스트 데이터 기록 동작을 관리하는 방법은 도 8에 관하여 위에 기술된 호스트 LBA 형식으로 호스트 파일 시스템(10)으로부터 호스트 데이터를 수신하는 것을 포함한다(1302에서). 호스트 데이터가 수신되었을 때, 호스트 LBA 순서에 관계없이 수신되는 순서로 호스트 데이터를 현재 열린 기록 메가블록 내 현재 열린 메가페이지에 기록함으로써 데이터가 저장 주소에 재매핑된다(1304에서). 이하 더 상세히 논의되는 바와 같이, 다중 뱅크 메모리(108) 내 메가블록에 호스트 데이터가 기록될 때는 다중 뱅크 메모리(107) 내 현재 주소에 원 호스트 LBA 주소의 매핑을 추적하기 위해서 저장 주소 테이블(SAT)이 업데이트된다(1306에서).
다음 메가페이지에 기록하기 전에 각각의 메가페이지(708)가 완전히 기록되고 새로운 메가블록(704)은 바람직하게는 현재 기록 메가블록이 완전히 기록된 후에만 추가의 호스트 데이터만을 수신하게 할당된다(1308, 1310, 1312에서). 현재 메가블록(704)에서 다음 메가페이지(708)가 가용하다면, 이 다음 메가페이지(708)의 시작에 기록 포인트가 설정되고(1314에서) 호스트 데이터는 수신되는 순서로, 뱅크별로, 메가페이지의 각각의 메타페이지 내 연속한 저장 주소에 계속하여 재매핑된다. 호스트 데이터 기록 알고리즘이 메가페이지 순서로 전체로서 다중 뱅크 메모리 시스템(107)에 메가블록 레벨에서 수행되고 있는 동안에, 메모리 시스템(102) 내 뱅크(107A ~ 107D) 각각에 독립적으로 플러시 알고리즘이 적용된다(1316에서). 이하 상세히 설명되는 바와 같이, 플러시 알고리즘은 호스트 데이터 기록을 위해서, 또는 기타 저장 요구를 위해서 새로운 메가블록에서 사용할 새로운 화이트 블록을 각 뱅크에서 생성한다. 단일 기록 메가블록이 위에 논의되었을지라도, 뱅크(107A ~ 107D)가 적합하게 분할되어 있다면 복수의 기록 메가블록이 구현될 수 있다.
저장 주소 재매핑 알고리즘의 한 구현에 따라서 각 뱅크(107A ~ 107D) 내에서 데이터의 흐름 및 블록 상태 변경의 패턴이 도 14에 도시되었다. 현재 기록 블록에서 최종 페이지가 유효 데이터로 채워질 때, 현재 기록 블록은 레드 블록이 되고{단계(1404)에서} 새로운 기록 블록이 다음 메가블록(704)의 부분이 되게 화이트 블록 리스트로부터 할당된다{단계(1404)에서}. 현재 기록 블록이 완전히 프로그램되기 전에 현재 기록 블록 내에 일부 페이지가 폐용된다면 현재 기록 블록은 완전히 프로그램될 때 핑크 블록으로 즉시 전이될 수 있는 것에 유의한다. 이러한 전이는 명확히 나타내지 않았으나 기록 블록에서 핑크 블록으로 화살표로 나타낼 수 있을 것이다.
다시 도 14에서 데이터 흐름의 구체적 예를 참조하면, LBA 런의 삭제에 의해 나중에 레드 블록 내 하나 이상의 페이지가 폐용이 되었을 때, 레드 블록은 핑크 블록이 된다{단계(1406)에서}. 저장 주소 재매핑 알고리즘이 뱅크에서 더 많은 화이트 블록에 대한 필요성을 검출할 때, 알고리즘은 핑크 블록이 화이트 블록이 되도록 핑크 블록으로부터 유효 데이터를 이동시키기 위해서, 다른 뱅크에서 작동중일 수 있는 어떤 다른 플러시 알고리즘에 무관하게, 뱅크에서 플러시 동작을 개시한다{단계(1408에서}. 핑크 블록을 플러싱하기 위해서, 핑크 블록의 유효 데이터는 발생 순서로 순차로, 재배치 블록으로서 지정된 화이트 블록에 재배치된다{단계(1410)에서}. 일단 재배치 블록이 채워지면, 이것은 레드 블록이 된다{단계(1412)에서}. 기록 블록을 참조로 위에 언급된 바와 같이, 핑크 블록 내 일부 페이지가 완전히 프로그램된 때 이미 폐용이 되었다면 재배치 블록은 핑크 블록으로 즉시 전이할 수 있다. 이러한 전이는 명확히 나타내지 않았으나 도 14에서 재배치 블록에서 핑크 블록으로 화살표로 나타낼 수 있을 것이다.
위에 언급된 바와 같이, 호스트 데이터를 메모리 시스템(102)에 기록할 때, 도 13의 다중 뱅크 기록 알고리즘은 메가블록에 관하여 주소 공간을 할당하며 메가페이지 순서로 전체 메가블록을 모두 채운다. 따라서, 도 14가 단일 뱅크를 도시하고 있기 때문에, 임의의 주어진 뱅크의 기록 블록 내 메타페이지가 채워질 때까지 이 임의의 주어진 뱅크에서 기록 블록에 호스트로부터의 데이터가 수신되고 이어서, 더 많은 메타페이지가 뱅크에서 기록 블록에서 가용할 수 있을지라도, 호스트 데이터의 다음 메타페이지 분량이 메가페이지 내, 즉 다중 뱅크 플래시 메모리(107) 내 다음 뱅크의 기록 블록 내 다음 메타페이지에 기록될 것임을 알아야 한다. 이에 따라, 메모리의 한 뱅크에서 주재하는 한 소정의 기록 블록은 호스트가 제공하는 매 N개의 메타페이지의 호스트 데이터마다 호스트 데이터의 메타페이지 패턴을 수신할 것이며, N은 다중 뱅크 플래시 메모리(107) 내 뱅크의 수이다. 이러한 공동 작용하는 호스트 데이터 기록 순서와 반대로, 위에 언급된 SAT와 같은 메모리 시스템(102) 내에서 발생된 정보, 또는 뱅크에서 새로운 화이트 블록을 만들기 위해 플러시 동작의 부분으로서 재배치되는 핑크 블록으로부터 유효 데이터는 뱅크에서 각각의 개개의 기록 블록에 완전히 기록된다.
다중 뱅크 플러시 동작
저장 주소 재매핑 알고리즘의 실시예는 여기에서는 플러싱이라고도 하는 것으로서, 핑크 블록(906)으로부터의 유효 데이터를 재배치 포인터로서 알려진 특별 기록 포인터로 재배치함으로써 화이트 블록(904)의 생성을 관리한다. 위에 언급된 바와 같이 저장 주소공간이 범위 또는 파일 크기에 의해 세분화되면, 각각의 범위의 저장주소는 자신의 재배치 블록 및 연관된 재배치 포인터를 가질 수 있다. 도 15를 참조하면, 다중 뱅크 플래시 메모리를 위한 플러시 동작의 실시예는, 각 뱅크(107A ~ 107D)마다 개별적이고 독립적으로, 충분한 수의 화이트 블록이 있는지 추적하는 것을 포함한다(1502에서). 이러한 판정은 현재 뱅크에 존재하는 화이트 블록의 총 개수에 근거하여 또는 화이트 블록이 뱅크에서 소비되고 있는 레이트에 근거하여 행해질 수 있다. 충분한 수의 화이트 블록이 있다면, 어떠한 플러시 동작도 필요하지 않으며 뱅크는 다음 기록 동작을 기다릴 수 있다(1504에서). 불충분한 수의 화이트 블록이 있는 것으로 판정된다면, 이하 기술되는 바와 같이 뱅크에 대해 유지된 핑크 블록 리스트로부터 뱅크에서 핑크 블록이 선택된다(1506에서). 뱅크에서 현재 재배치 블록이 다 채워지지 않았다면, 선택된 핑크 블록으로부터 유효 데이터가 핑크 블록에 발생순서로 재배치 블록 내 연속한 위치에 카피된다(1508, 1510에서). 일 실시예에서, 재배치 블록이 완전히 프로그램된 때에만 동일 뱅크로부터 또 다른 화이트 블록이 다음 재배치 블록으로서 할당된다(1512에서). 또한, 일 실시예에서, 선택된 핑크 블록이 여전히 임의의 카피되지 않은 유효 데이터를 포함하고 있을 때 이 핑크 블록으로부터 유효 데이터만이 재배치 블록에 카피된다(1514에서). 도 15에 도시된 플러시 동작은 다중 뱅크 플래시 메모리(107)에서, 플러시 동작이 독립적으로 실행되고 한 특정 뱅크에서 핑크 블록(906) 내 유효 데이터가 동일 뱅크 내의 재배치 블록에만 플러싱되게 각각의 뱅크(107A ~ 107D) 내에, 완전히 내장됨을 반영한다. 플러시 동작은 핑크 블록을 화이트 블록으로 변환하기 위해서, 정규로 백그라운드 동작으로 수행된다.
핑크 블록(906)은 이의 특징에 따라 플러시 동작을 위해 선택된다. 일 실시예에서, 핑크 블록의 리스트는 다중 뱅크 플래시 메모리(107) 내 각 뱅크(107A ~ 107D)마다 독립적으로 유지된다. 도 9를 다시 참조하면, 유효 데이터를 갖는 몇개의 주소는 특정 핑크 블록이 플러싱될 때 재배치를 필요로 하는 데이터를 덜 갖게 되기 때문에 일 구현에서 최소량의 유효 데이터를 갖는 이 핑크 블록(즉, 도 9에 최소수로 어둡게 표시한 클러스터)이 선택될 것이다. 이에 따라, 도 9의 예에서, 핑크 블록(B)이 유효 데이터를 갖는 소수의 주소를 갖고 있을 것이기 때문에 핑크 블록(B)은 핑크 블록(A)보다 우선적으로 선택될 것이다. 다른 구현에서, 플러시 동작을 위해 선택된 핑크 블록은 어떤 임계량 미만의 유효 데이터와 연관된 일 그룹의 핑크 블록 중 어느 하나일 수 있다. 임계값은 총 한 세트의 핑크 블록에 포함된 유효 데이터의 평균량 미만일 수 있다. 유효 데이터의 임계량 또는 미만의 핑크 블록의 부분집합이 리스트로부터 유지될 수 있고 이 리스트로부터 호스트 또는 메모리 시스템이 핑크 블록을 선택할 수 있다. 예를 들어, 현재 임계값 요건을 만족하는 정의된 개수(예를 들어, 16개) 또는 퍼센티지(예를 들어, 30 퍼센트)의 핑크 블록의 동적인 리스트가 유지될 수 있고, 이 리스트 내 선택된 핑크 블록이 절대 최소량의 유효 데이터를 갖고 있는지에 상관없이 플러싱하기 위해 이 리스트로부터 임의의 핑크 블록이 선택될 수 있다. 메모리 시스템 또는 호스트가 선택할 각 뱅크에서 리스트를 형성하는 핑크 블록의 수 또는 퍼센티지는 고정된 값 또는 사용자가 선택할 수 있는 값일 수 있다. 리스트는 서열 순서로, 가용한 핑크 블록으로부터 절대 최소량의 유효 데이터를 갖는 핑크 블록을 나타내는 일 그룹의 핑크 블록을 포함할 수 있고 또는 단순히, 임계값 요건 내에 드는 핑크 블록을 포함할 수 있다.
대안적으로, 또는 조합하여, 핑크 블록의 선택은 특정 핑크 블록(906)에 추가의 폐용 데이터를 축적할 계산된 확률에 근거하여 행해질 수 있다. 폐용 데이터가 더 핑크 블록(906)에 축적될 확률은 메모리 내 가장 오래 생존한 데이터가 최소로 삭제될 것이라는 가정에 근거할 수 있을 것이다. 이에 따라, 재배치 블록이었던 핑크 블록(906)은 새로운 호스트 데이터를 갖는 기록 블록이었던 핑크 블록(906)보다 더 오래 생존한 데이터를 포함할 것이다. 플러싱하기 위한 핑크 블록(906)의 선택 프로세스는 재배치 블록이 데이터가 더 삭제될 가능성을 덜 가질 것이기 때문에 최근에 재배치 블록이었던 핑크 블록(906)을 먼저 타깃으로 할 것이며, 이에 따라 더 적은 수의 추가 폐용 데이터가 예상될 수 있을 것이다. 전에 기록 블록이었던 핑크 블록(906)은 더 새로운 데이터가 삭제될 가능성이 더 많은 가정에 근거하여 나중에 플러싱하기 위해서 선택될 것이며, 이에 따라 더 많은 폐용 데이터를 야기할 것이다.
메가블록 기록 프로세스의 더 특정한 예가 도 16 및 도 17에 도시되었다. 이 예에서, 도 11의 시스템 구성이 사용되고 있는 것으로 가정하며, 이 경우 호스트 LBA 주소는 메모리 시스템(102)에서 제어기(108)에 의해 실행되는 애플리케이션에서, DLBA 주소라고도 하는, 중간 저장 LBA 주소로 전환된다. 도 16에 도시된 바와 같이, 메타블록(1602) 각각이 6개의 메타페이지(P1 ~ P6)를 갖는 4개의 뱅크 메모리 내 기록 개방 메가블록(1600)은 도 17에 도시된 LBA 런(1702)에 대한 LBA 주소와 연관된다. 다중 뱅크 메모리(107)에 기록 순서는 제 1 개방 메타페이지(뱅크2에 P2)부터 시작하며 메가페이지의 나머지를 따라 좌측에서 우측으로 순차적으로 계속한다(뱅크3에 P2에 이어 뱅크4에 P2로 계속된다). 제어기는 LBA 런(1702)의 들어오는 LBA 주소가 수신되는 순서로 이들이 각각의 메타페이지에 연관된 연속한 DLBA 주소에 재매핑되고 전체 메타페이지가 다음 메타페이지로 이동하기 전에 프로그램되도록 메가페이지 내 각각의 메타페이지에 LBA 주소를 보낸다. LBA 런(1702)은 다음 메가페이지(연속하여, 뱅크(1 ~ 4) 각각에 메타페이지(P3))에 연관된 DLBA 주소에 계속하여 재매핑된다. 이어서 LBA 런(1702)의 최종 부분이, 뱅크1 및 뱅크2 내 메타페이지(P4)에 연관된 DLBA 주소에 인접하게 재매핑된다.
제어기(108)에 의해 관리되는 기록 알고리즘이 메가블록(1600) 내 다음 메가페이지로 진행하기 전에 LBA 주소 지정된 호스트 데이터 분량의 메가페이지를 순차로 뱅크 각각에 걸쳐 분포되게 함으로써 메가블록(1600)에 순차로 기록할지라도, 단일 런(1702)에 대해 각 뱅크에서 불연속한 일단의 LBA 주소는 이 예에 있어선 도 16 및 도 17에서 DLBA 런(A1 ~ A4)으로 확인된 DLBA 런으로 각 뱅크에 의해 관리된다. 각 뱅크에서 LBA 주소에서 DLBA 주소로 매핑은 메모리에 유지되는 다중 뱅크 플래시 메모리(107)에 대한 저장 주소 테이블(SAT)(1704)에서 추적된다. 도 17에 도시된 SAT(1704) 버전은 유효 데이터를 포함하는 각각의 LBA 런을 연관된 DLBA 런에 매핑한다. SAT(1704)에 LBA 엔트리(1706)는 런에서 제 1 LBA 주소, 런의 길이, 및 LBA 런(1702)에 매핑되는 제 1 DLBA 런(DLBA 런(A1))의 DLBA 주소 및 뱅크 식별자를 포함한다. 대응하는 DLBA 엔트리(1708)는 제 1 DLBA 엔트리(1710)를 포함하고, 이것은 DLBA 런의 제 1 DLBA 주소 및 뱅크 번호와, 제 1 DLBA 엔트리(1710)의 경우엔 제로가 될 것이며 주어진 LBA 런(1702)에 대한 모든 후속되는 DLBA 엔트리에서 제로가 아닌 값이 될 것인 제 1 DLBA 주소가 매핑되는 LBA 런(1702)에 LBA 주소 오프셋을 갖는다.
LBA 런(1702)에 연관된 데이터가 DLBA 주소에 재매핑되고 DLBA 주소와 연관된 메가블록(1600) 내 물리 주소 위치에 기록된 후에, 하나 이상의 후속되는 LBA 런은 재매핑되어 메가블록(1600) 내 나머지 미기록된 용량(각각, 뱅크3 및 뱅크4에 P4에 정렬된 나머지 메가페이지, 및 P5 및 P6에 정렬된 메가페이지)에 기록될 것이다. 메가블록(1600)과 같은 메가블록이 완전히 프로그램된 후에, 제어기는 더 이상 메가블록을 추적하지 않으며 그후에 메가블록(1600) 내 각각의 블록(1602 ~ 1608)은 이들의 각각의 뱅크에서 실행되는 독립적인 플러시 동작에 의해 관리된다. 이에 따라, 원 메가블록(1600)의 블록(1602 ~ 1608)은, 이들 각각이 폐용 데이터의 축적에 기인하여 핑크 블록이 되기 때문에, 관계되지 않은 재배치 블록에 독립적으로 플러싱될 수 있다. 도 18은 각각의 뱅크에서 독립적인 플러시 동작에 의해 DLBA 런(A1 ~ A4)이 새로운 블록(1802 ~ 1808)으로 어떻게 이동될 수 있는가를 도시한 것이다. 물론 DLBA 런(A1 ~ A4)에 연관된 데이터의 생존은 이 데이터가 유효 데이터였으며 블록(1600) 내 다른 데이터는 폐용이었고 각각의 플러시 동작을 시작하게 하였던 것으로 가정한다. 또한, 블록(1802 ~ 1808)이 용이한 참조를 취해 도 18에선 서로 이웃한 것으로 도시되었고 각각의 플러시 동작 후에 도 16의 메가블록 내 상기 블록의 원래의 상대적 페이지 정렬에 관하여 DLBA 런(A1 ~ A4)의 가능한 이동을 도시하지만, 블록(1802 ~ 1808)은 각 뱅크에서 서로 다른 물리적 또는 상대 위치에 위치하게 될 것이다.
논리 대 논리, LBA 대 DLBA 전환이 메모리 시스템 상에 제어기(108)에 의해 실행되거나 호스트(100) 상에 프로세서(109)에 의해 실행되는 애플리케이션에 의해 실행되는 도 11 및 도 12에 도시된 저장 주소 재매핑의 구현을 참조하여, 도 14의 상태도에 따른 주소 조작의 예를 도 8 및 도 9 및 도 19 및 도 20을 관련하여 이제 논한다. 도 15에 나타낸 저장 주소 재매핑 알고리즘에 따라 시스템이 동작하고 있는 것으로 가정하고, LBA 주소 공간(도 8)에서, 자유 클러스터(804)는 근본적으로 무작위 위치에 흩어져 있다. 주어진 뱅크(도 9)에 대한 DLBA 주소 공간에서, 2개의 화이트 블록(904)이 가용하며 상이한 수의 폐용 (자유) 클러스터(804)를 갖는 3개의 핑크 블록(906)이 있다.
다음에 호스트가 저장 장치에 기록할 데이터를 갖고 있을 때, 호스트는 LBA 주소 공간이 가용할 때는 언제나 이를 할당한다. 도 19는 저장 주소 재매핑 알고리즘이 더 큰 메가블록의 일부인 기록 블록(1904)이 되게 도 9의 화이트 블록(904)과 같은 가용한 화이트 블록 중 하나를 어떻게 할당하는가와, 기록 블록(1904) 내 가용한 DLBA 공간 내 순차적인 클러스터에 각각의 LBA 주소가 어떻게 매핑되는가를 나타낸다. DLBA 공간에 기록 블록(1904)은 LBA 주소 위치에 관계없이, LBA 주소가 기록되는 순서로 위에서 논한 메가블록 기록 패턴에 따라 기록된다. 뱅크에 적용되는 저장 주소 재매핑 알고리즘은 LBA 주소 번호 순서에 관계없이, LBA 주소가 수신된 시간 순서로 기록 블록(1904)에 DLBA 주소를 할당할 것이다. 데이터는 하나 이상의 DLBA 런에 기록 블록에 기록된다. DLBA 런은 동일 LBA 런에 인접 LBA 주소에 매핑되는 한 세트의 인접 DLBA 주소가다. DLBA 런은 DLBA 주소 공간(1902)에서 블록 경계(뱅크 경계임)에서 끝나야 한다. 기록 블록(1904)이 채워졌을 때, 화이트 블록(904)이 다음 기록 블록(1904)으로서 할당된다.
각 뱅크에서, DLBA 블록은 플래시 메모리(107)의 물리 주소 공간 내 블록(1906)과 정렬되고 따라서 DLBA 블록 크기 및 물리 주소 블록 크기는 동일하다. DLBA 기록 블록(1904)에서 주소의 배열은 물리 주소 공간에서 대응 업데이트 블록(1906)의 배열과 동일하다. 이 대응에 기인하여, 일반적으로 가비지 수거라고 하는 어떠한 별도의 데이터 합체도 물리 업데이트 블록에선 필요하지 않다. 일반적인 가비지 수거 동작에서, 한 블록의 논리 주소는 물리 블록에도 반영되는 논리 블록에 특정 범위의 LBA 주소를 유지하게 일반적으로 항시 재조립된다. 구체적으로, 일반 가비지 수거 동작을 이용하는 메모리 시스템이 특정 물리 블록 내 섹터에 대응하는 업데이트된 섹터의 정보를 수신할 때, 메모리 시스템은 업데이트된 섹터 또는 섹터를 수신하기 위해 물리 메모리에 업데이트 블록을 할당하고 원 물리 블록으로부터 모든 남은 유효 데이터를 업데이트 블록의 나머지에 합체할 것이다. 이러한 식으로, 표준 가비지 수거는 특정 주소 범위에 대응하는 데이터가 항시 공통 물리 블록에 합체가 되도록 특정 LBA 주소 범위에 대한 데이터 블록을 영속화할 것이다. 여기에서 논한 플러시 동작은 동일 주소 범위 내 데이터의 합체를 요구하지 않는다. 대신에, 플러시 동작은 여러 물리 블록으로부터 데이터의 수집일 수 있는 새로운 데이터 블록을 생성하기 위해 주소 매핑을 수행하며, 여기에서 특정 LBA 주소 범위의 데이터는 의도적으로 합체되지 않는다.
앞에서 언급된 바와 같이, 저장 주소 재매핑 알고리즘은 화이트 블록의 충분한 공급이 확실히 가능하도록 각 뱅크(107A ~ 107D)에서 독립적으로 동작한다. 저장 주소 재매핑 알고리즘은 핑크 블록으로부터 데이터를 재배치 블록(1908)으로서 알려진 특별한 기록 블록에 플러싱함으로써 화이트 블록의 생성을 관리한다(도 19). 플러싱을 하기 위해 현재 선택된 핑크 블록을 플러시 블록이라고 한다.
도 19 및 도 20을 순차로 참조하면, 주어진 뱅크에 대한 블록 플러시 프로세스가 도시되었다. 도 11의 구현에서 각각의 뱅크(107A ~ 107D)마다 독립적으로, 제어기(108)에 의해 실행되는 저장 주소 재매핑 알고리즘은 화이트 블록을 재배치 블록(1908)으로서 지정하고, 이에 데이터가 동일 뱅크에서 선택된 핑크 블록으로부터 플러싱되어 추가의 화이트 블록을 생성할 것이다. 도 19에 도시된 바와 같이, 플러시 블록(도 9의 핑크 블록(A)) 내 레드 데이터라고도 하는 유효 데이터는 재배치 블록(1908) 내 순차적인 주소에 재배치되어, 플러시 블록을 화이트 블록(904)으로 변환한다. 물리 주소공간(1910) 내 대응하는 업데이트 블록(1906) 또한 플러싱된 데이터를 수신하기 위해 할당된다. 호스트로부터 수신된 새로운 데이터에 대해 사용되는 업데이트 블록(1906)에서와 같이, 플러싱된 데이터를 수신하기 위한 업데이트 블록(1906)은 플러시 동작이 DLBA 주소 공간(1902)에 합체를 이미 달성하였기 때문에 유효 데이터를 합체하기 위해 가비지 수거 동작을 결코 요구하지 않을 것이다.
다음 플러시 블록(도 19의 핑크 블록 B)은 도 20에 도시된 바와 같이 나머지 핑크 블록으로부터 확인된다. 최소 레드 데이터를 갖는 핑크 블록은 다시 플러시 블록으로서 지정되고 핑크 블록의 레드 데이터(유효 데이터)는 재배치 개방 블록 내 순차적인 위치에 이전된다. 업데이트 블록(1906)에서 물리 주소의 병렬 할당도 행해진다. 다시, 재배치 블록(1908)에 매핑되는 물리 업데이트 블록(1906)에서 어떠한 데이터 합체도 요구되지 않는다. 핑크 블록에 플러시 동작은 기록 블록으로서 지정되는 화이트 블록의 소비를 보상하기에 충분한 레이트로 화이트 블록을 생성하기 위해 백그라운드 동작으로서 수행된다. 도 8 및 도 9와 도 19 및 도 20의 예는 호스트로부터 새로운 데이터와 핑크 블록으로부터 재배치된 데이터에 대해서, 물리 주소 공간에 각각의 별도의 업데이트 블록과 함께, 기록 블록 및 재배치 블록이 어떻게 개별적으로 유지될 수 있는가를 도시한 것이다. 메가블록의 일부로서 동작하기 위해 새로운 기록 블록을 할당하고 현재 메가블록이 완전히 프로그램된 때에만 호스트로부터 수신된 새로운 데이터를 연관시키는 프로세스와 유사하게, 새로운 재배치 블록은 바람직하게는 이전 재배치 블록이 완전히 프로그램된 후에만 할당된다. 새로운 재배치 블록은 바람직하게는 미기록된 용량만을 포함한다. 즉 소거될 준비가 된 폐용 데이터에만 연관되거나, 할당시, 유효 데이터를 전혀 포함하지 않는다.
위에 언급된 실시예에서, 호스트로부터 새로운 데이터는 호스트로부터 다른 새로운 데이터만을 수신할 기록 블록에 연관되고 플러시 동작에서 핑크 블록으로부터 플러싱된 유효 데이터는 특정 뱅크에 대한 하나 이상의 핑크 블록으로부터 유효 데이터만을 포함할 이 특정의 뱅크 내의 재배치 블록으로 이동된다. 위에 언급된 바와 같이, 다른 실시예에서 플러싱하기 위한 핑크 블록의 선택이 행해질 수 있는데 이 경우 현재 핑크 블록에 대한 평균량과 같이 임계값 미만인 레드 데이터 량에 연관된 핑크 블록의 리스트로부터 임의의 핑크 블록이 선택되거나 핑크 블록이 가용한 핑크 블록으로부터 특정 서열(핑크 블록에 연관된 유효 데이터량에 기초한)을 갖는 핑크 블록 중 어떤 것일 수 있다.
플러시 동작은 "핫(hot)" 데이터를 폐용시킨 블록으로부터 비교적 "냉(cold)" 데이터를 유사한 비교적 냉 데이터를 포함하는 재배치 블록에 재배치한다. 이것은 개별적인 비교적 핫 블록 집단과 비교적 냉 블록 집단을 생성하는 효과를 갖는다. 플러싱될 블록은 항시, 최소량의 데이터를 포함하는 핫 블록으로서 선택된다. 핫 블록 집단의 생성은 재배치될 필요가 있는 데이터량을 감소시킴으로써, 메모리 스트레스 인자를 감소시킨다.
일 실시예에서, 플러시 블록으로서 선택되는 핑크 블록은 가장 성긴 집단의 핑크 블록일 수 있다. 즉 이 핑크 블록은 최소량의 유효 데이터를 포함하며, 호스트에 의해 수행되는 특정의 기록 및 삭제 동작에 응하여 선택되지 않는다. 이러한 식으로 플러시 블록으로서 핑크 블록의 선택은 이렇게 선택된 어떠한 핑크 블록도 호스트에 의한 파일의 삭제에 기인하여 최대 수의 미할당 데이터 주소를 축적하지 않았을 것이기 때문에 유효 데이터를 최소로 재배치하여 블록 플러시 동작이 수행될 수 있게 한다.
핑크 블록 선택 프로세스의 일례는 최소수의 유효 페이지 또는 클러스터를 갖는 핑크 블록의 5% 중에 있는 임의의 핑크 블록을 선택하는 것일 수 있다. 백그라운드 프로세스에서, 최소수의 페이지 또는 클러스트 카운트 값을 갖는 16개의 핑크 블록의 리스트가 작성된다. 핑크 블록 식별 프로세스는 "P"개의 예정된 블록 플러시 동작이 차지하는 시간 내에 한 사이클을 완료할 수 있다. 플러시 블록 식별 프로세스에서 사이클이 도 12에 도시되었다. 화이트, 핑크 및 기타 유형의 DLBA 주소 블록에 대한 블록 주소의 리스트를 포함하는 블록 정보 테이블(BIT)이, 이하 상세히 기술되는 바와 같이, 각 뱅크(107A ~ 107B)에 대한 저장 주소 재매핑 기능에 의해 개별적으로 유지되며, 이전 프로세스 사이클 동안에 확인된 하나의 세트의 블록에 이어(단계(2102)에서), 다음 한 세트의 Q 핑크 블록을 확인하기 위해 판독된다. 각 뱅크마다 독립적으로, 장치 초기화 후에 제 1 프로세스 사이클에서 제 1의 한 세트의 핑크 블록이 확인되어야 한다. 플러시 블록의 가용성을 보증하기 위해서, Q 값은 P 값보다 커야 한다. 일 구현에서, Q 값은 8일 수 있고 P는 4일 수 있다. 유효 페이지 카운트 값은 세트의 핑크 블록 각각에 대해 제로로 설정된다(단계(2104)에서). LBA 및 DLBA 관계를 추적하기 위해 유지되는 저장 주소 테이블(SAT) 페이지 엔트리는 한 번에 하나씩 스캔되어, 세트의 임의의 핑크 블록 내 위치한 유효 데이터 페이지를 확인한다{단계(2106)에서}. 저장 주소 테이블이 이하 상세히 기술된다. 유효 페이지 카운트 값이 이에 따라 증분된다. 모든 SAT 페이지가 스캔된 후에, 세트의 핑크 블록 각각에 대한 유효 페이지 카운트 값은 낮은 유효 페이지 카운트 값의 리스트에 핑크 블록에 대한 것들에 대해 평가되며, 리스트 내 블록은 필요하다면 세트로부터의 블록에 의해 대체된다(단계(2108)에서). 블록 플러시 동작의 완료 후에, 블록이 다음 블록 플러시 동작을 위해 선택되어야 한다. 이것은 리스트에 가장 낮은 페이지 카운트 값을 갖는 블록이어야 한다.
도 19 및 도 20에 관하여 기술된 것과 같은 특정 뱅크(107A ~ 107D)에서 블록 플러시 동작을 시작하기에 앞서, 선택된 블록은 재배치되어야 하는 유효 DLBA 런의 위치를 판정하기 위해서 매핑되어야 한다. 이것은 블록으로부터 판독되는 선택된 데이터 페이지의 헤더 내 LBA 주소, 및 이러한 LBA 주소에 대한 SAT 엔트리를 이용하는 탐색 알고리즘에 의해 달성된다. 탐색 알고리즘은 점차적으로 증대되는 알려진 유효 및 폐용 DLBA 런의 맵을 이용한다. 유효 DLBA 런은 SAT 엔트리가 블록 내 그의 존재를 정의할 때 블록 맵에 추가된다. 폐용 DLBA 런은 매핑되는 블록 내 데이터 페이지 헤더에 한 범위의 LBA에 대한 SAT 엔트리가 또 다른 블록 내 유효 DLBA의 존재를 정의할 때 블록 맵에 추가된다. 탐색 프로세스는 블록 내 모든 DLBA 주소가 유효 또는 폐용으로서 명백하게 매핑될 때까지 계속된다.
블록 플러시 동작에서, 위에서 언급된 블록 매핑 프로세스에서 확인된 유효 DLBA 런 내에 모든 페이지는 동일 뱅크에 재배치 블록 내 재배치 포인터로 선택된 핑크 블록으로부터 재배치된다. 재배치된 DLBA에 대한 엔트리는 SAT 리스트에 기록된다. 유효 및 폐용 DLBA 런에 대한 탐색은 도 11에 도시된 배열의 경우에 메모리 시스템(102)의 제어기(108)에 의해 실행될 수 있고, 블록 DLBA 맵은 제어기에 연관된 RAM에 저장될 수 있다. 도 1의 배열에 있어서, 호스트 시스템(100)에 CPU(109)는 탐색을 실행하고 결과로 얻어진 블록 DLBA 정보를 호스트 시스템 CPU에 연관된 RAM에 저장할 수 있다.
다중 뱅크 배열을 위한 저장 주소 재매핑 알고리즘은, 특정 뱅크에 화이트 블록의 수가 기정의된 임계값 미만으로 되었을 때, 데이터의 기록을 위해 할당될 수 있는 사용가능한 화이트 블록 용량이 기록 블록에 호스트 데이터의 기록에 의해 화이트 블록 용량이 소비되는 것과 동일한 레이트로 생성될 수 있게 하는데 충분한 레이트로 이 뱅크에 핑크 블록에 대한 플러시 동작이 수행되어야 한다는 원리로 동작한다. 호스트로부터 데이터를 기록함으로써 소비되는 기록 블록 내 페이지의 수는 블록 플러시 동작에 의해 복구되는 폐용 페이지의 수에 의해 균형이 맞아야 한다. 블록 플러시 동작의 완료 후에, 위에 언급된 바와 같이, BIT 및 SAT로부터 특정 엔트리를 판독함으로써, 다음 블록 플러시 동작을 위해 선택된 핑크 블록 내 폐용 데이터 페이지의 수가 결정된다. 다음 블록 플러시 동작은 기록 블록에 이 유효 데이터 페이지의 수의 기록 직후에 시작하게 예정될 수 있다. 또한, 플러시 동작을 개시하기 위한 임계값은 각 뱅크마다 다를 수 있다. 예를 들어, 플러싱을 위한 임계값은 뱅크에 핑크 블록에 평균 유효 데이터량으로 임계값이 적용된다면, 화이트 블록이 모든 뱅크에서 대략 동일한 레이트로 생성될 수 있게 뱅크 내의 재배치될 데이터량에 근거하여 적응될 수 있다.
저장 주소 테이블
위에 기술된 저장 주소 재매핑을 구현하기 위해서, 도 17을 참조로 일반적으로 기술된 것과 같은 저장 주소 테이블(SAT)(1704)을 저장 주소 공간 내에 데이터의 위치를 추적하기 위해 사용한다. 또한, SAT에 정보가 완전한 플래시 메타블록에 순차적 업데이트의 부분으로서 기록된다. 따라서, 일 구현에서, 호스트로부터 수신된 데이터를 위해 사용되고 플러시 동작을 위해 사용되는 재배치 블록은 별개인 기록 블록에 SAT 정보가 기록된다. 다른 구현에서, SAT 정보는, 다른 그룹의 블록, 예를 들어, 비-SAT 정보에 의해 점유된 MLC 플래시 파티션이 아닌 바이너리 플래시 파티션 내 블록에 저장될 수 있다. 대안적으로, SAT 및 비-SAT 데이터는 동일 유형의 플래시 블록에 저장되지만 블록에 의해 분리되어 저장될 수 있다. 다른 실시예에서, SAT 및 비-SAT 데이터는 동일 블록 내에 섞여질 수 있다. SAT(1704)가 다중 뱅크 메모리(107) 내 모든 뱅크(107A ~ 107D)를 위한 단일 테이블일 수 있지만, 다른 실시예에서 각 뱅크는 이 특정 뱅크에 독립적인 매핑 정보만의 SAT를 유지할 수 있다.
SAT는 도 10 내지 도 12의 각각의 실시예에 관계된다. 또한, 다음 논의는 도 11 및 도 12의 호스트 및 메모리 시스템 구성에 관련하여 DLBA(저장 LBA라고도 함)라 하는 것으로 호스트 LBA에서 제 2 LBA 공간으로 재매핑하는 것에 중점을 둘지라도, 이 동일 SAT 기술은 개재된 논리 대 논리 전환 없이 호스트 LBA 주소와 연관된 데이터가 물리 블록에 직접 매핑되는 도 10의 실시예에 적용될 수 있다. SAT 정보는 바람직하게는 논의된 실시예에 관계없이 메모리 장치 내 플래시 메모리에 저장된다. 호스트 LBA에서 DLBA로 재매핑이 호스트(1202)에서 행해지는 도 12의 실시예에서, SAT 정보는 메모리 시스템(1204) 내 플래시 메모리에 저장하기 위해 전송된다. 저장 주소 재매핑 알고리즘이 메모리 시스템 내 메모리 관리자에 구현되는 도 10의 실시예에서, DLBA라는 용어는 도 11 및 도 12의 실시예에서 사용되는 제 2 논리 주소 공간이 아니라 플래시 메모리(107) 내 물리 주소를 지칭하며, DLBA 주소의 블록은 물리 메모리 내 메타블록을 나타낸다.
저장 주소 테이블(SAT)은 호스트 파일 시스템에 의해 할당된 LBA 주소를 DLBA 주소에 관계시키는 상관 정보를 포함한다. 구체적으로, SAT는 호스트 파일 시스템에 의해 유효 데이터에 할당되는 LBA 주소 공간 내 매 주소 런과 저장 주소 재매핑 알고리즘에 의해 생성되는 DLBA 주소 공간 내 하나 이상의 주소 런 사이에 매핑을 기록하기 위해 사용된다. 위에 언급된 바와 같이, 한 단위의 시스템 주소 공간은 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 런은 상기 런 바로 다음의 순차적인 엔트리이다. DLBA 런은 LBA 런의 절대 LBA 주소에의 링크가 아니라, 자신이 매핑되는 LBA 런 내에 자신의 오프셋 주소에 대한 후방 링크를 포함한다. 개개의 LBA 주소는 LBA 런 내에 LBA 오프셋으로서 정의될 수 있다. SAT는 LBA 런에 매핑되는 각각의 DLBA 런의 시작부분에 대응하는 LBA 오프셋을 기록한다. 그러므로, 개개의 LBA 주소에 대응하는 개개의 DLBA 주소는 DLBA 런 내에 DLBA 오프셋으로서 확인될 수 있다. SAT 내 LBA 런이 단지 유효 데이터의 런을 위한 것일 수 있을지라도, SAT는 다른 구현에서는 유효 및 폐용 데이터 모두를 위한 LBS 런을 저장하게 구성될 수 있다.
SAT는 SAT 블록으로 알려진 LBA 주소의 블록 내에 구현된다. SAT는 정의된 최대 수의 SAT 블록을 포함하며, 정의된 최대수의 유효 SAT 페이지를 포함한다. 그러므로 SAT는 명시된 최대수의 SAT 블록에 대해, 자신이 색인할 수 있는 최대수의 DLBA 런을 갖는다. 일 실시예에서, 최대수의 SAT 블록이 정의될지라도, SAT는 호스트에 의해 할당된 LBA의 단편화에 따라 SAT 내 엔트리의 수가 자체 조정될 것이기 때문에 최대수까지 자동으로 확장될 수 있다. 이에 따라, 호스트가 매우 단편화된 LBA를 할당한다면, SAT는 호스트가 덜 단편화된 그룹의 LBS를 데이터에 할당하는 경우보다 더 많은 엔트리를 포함할 것이다. 따라서, 호스트 LBA가 덜 단편화된다면, SAT의 크기는 감소할 것이다. 단편화가 덜 됨으로써 매핑할 소수의 개별 런이 되고 소수의 개별 런은 SAT가 고정된 수의 논리 주소를 엄밀히 추적하고 업데이트하기보다는 엔트리 내 하나 이상의 DLBA 런에 호스트 LBA 주소 런을 매핑하기 때문에 SAT 내에 소수의 엔트리를 갖게 된다.
도 17의 SAT의 LBA 런 대 DLBA 런 매핑 배열에 기인하여, 한 런의 호스트 LBA 주소는 2 이상의 DLBA 런에 매핑될 수 있고, 여기서 호스트 LBA 런은 유효 데이터에 할당되는 한 세트의 인접 논리 주소가며, DLBA(또는 저장 LBA) 런은 동일 메타블록 내에 인접한 한 세트의 DLBA 주소가며 동일 호스트 LBA 런에 매핑된다. SAT 색인 및 매핑 구조의 계층이 도 22에 도시되었다. LBA(2204) 및 대응하는 DLBA(2202) 런이 도시되었다. LBA 대 DLBA 매핑 정보는 SAT 페이지(2206)에 포함된다. LBA 대 SAT 페이지 색인 정보는 SAT 색인 페이지(2208)에 포함되고 마스터 페이지 색인(2210)은 도 12의 구현에 있어선 호스트 프로세스에 연관된 RAM에, 도 10과 도 11의 구현에서 제어기(108)에 연관된 RAM(212)에 캐시된다.
SAT는 정규로는 복수의 SAT 블록을 포함하지만, SAT 정보는 SAT 기록 블록으로 현재 지정된 단일 블록에만 기록될 수 있다. 이외 모든 SAT 블록은 완전히 기록되어 있고, 무효 및 폐용 페이지를 함께 포함할 수 있다. SAT 페이지는 런에 대한 엔트리가 매핑되는 장치 주소 공간 내 이들 엔트리와 함께 가변 범위의 호스트 LBA 주소 공간 내에 모든 LBA 런에 대한 엔트리를 포함한다. 많은 수의 SAT 페이지가 존재할 수 있다. SAT 색인 페이지는 더 큰 범위의 호스트 LBA 주소 공간 내에 모든 유효 SAT 페이지의 위치에의 색인을 포함한다. 적은 수의 SAT 색인 페이지가 존재하는데, 이것은 전형적으로 하나이다. SAT 내 정보는 단일 SAT 기록 블록 내 다음 가용한 위치에 업데이트된 페이지를 재기록하고, 이전의 페이지를 폐용으로서 취급함으로써 수정된다. 그러므로 많은 수의 무효 페이지가 SAT에 존재한다. SAT 블록은, SAT 페이지가 메가블록이 아니라 뱅크에서 개개의 블록에 기록되고 핑크 SAT 블록으로부터 유효 데이터가 별도의 재배치 블록이 아니라 현재의 SAT 기록 블록에 카피되는 것을 제외하고, 호스트 데이터에 대해 위에 기술된 것과 유사한, 페이지를 기록하고 블록을 플러싱하는 알고리즘에 의해 관리된다.
각각의 SAT 블록은 SAT 정보의 저장에 전용되는 한 블록의 DLBA 주소가다. SAT 블록은 테이블 페이지로 분할되고, 이에 SAT 페이지(2206) 또는 SAT 색인 페이지(2208)가 기록될 수 있다. SAT 블록은 유효 SAT 페이지(2206), 유효 SAT 색인 페이지(2208) 및 폐용 페이지의 임의의 조합을 포함할 수 있다. 도 23을 참조하면, 샘플 SAT 기록 블록(2300)이 도시되었다. 데이터는 증분하는 SAT 기록 포인터(2302)에 의해 정의되는 순차적 위치에 SAT 기록 블록(2300)에 기록된다. 데이터는 SAT 기록 블록(2300)으로서 지정되는 단일 SAT 블록에만 기록될 수 있다. 앞서 기술된 호스트 데이터 블록에 대한 것과 동일한 방식으로, SAT 기록 블록(2300)이 완전히 기록되었을 때만, 화이트 블록이 새로운 SAT 기록 블록(2300)으로서 할당된다. SAT 페이지 위치는 이의 SAT 블록 내 자신의 순차적 수에 의해 주소 지정된다. 일 실시예에서, 모든 뱅크에 대해 단일 SAT가 유지되는 경우, 제어기는 새로운 SAT 화이트 블록을 할당하기 위해 뱅크(107A ~ 107D) 중 어느 것을 번갈아 사용하기로 선택할 수 있다. 이렇게 하여 SAT를 저장하기 위해 한 뱅크의 과도한 사용이 회피될 수 있다.
SAT 페이지
SAT 페이지(2206)는 SAT 내 업데이트 가능한 최소 한 단위의 매핑 정보이다. 업데이트된 SAT 페이지(2206)는 SAT 기록 포인터(2302)에 의해 정의된 위치에 기록된다. SAT 페이지(2206)는, 연속한 LBA 런의 주소가 인접할 필요가 없을지라도, 증분하는 LAB 주소를 갖는 한 세트의 LBA 런에 대한 매핑 정보를 포함한다. SAT 페이지(2206)에 한 범위의 LBA 주소는 어떤 다른 SAT 페이지(2206) 내 한 범위의 LBA 주소와 겹치지 않는다. SAT 페이지(2206)는 제약 없이 완전한 한 세트의 SAT 블록 전체에 걸쳐 분포될 수 있다. 임의의 한 범위의 LBA 주소를 위한 SAT 페이지(2206)는 임의의 SAT 블록에 있을 수 있다. SAT 페이지(2206)은 색인 버퍼 필드(2304), LBA 필드(2306), DLBA 필드(2308) 및 제어 포인터(2310)를 포함할 수 있다. 또한, 파라미터 백업 엔트리는 휘발성 RAM에 저장된 어떤 파라미터의 값을 포함한다.
SAT 페이지(2206) 내에 LBA 필드(2306)는 한 범위의 LBA 주소 내에, 데이터 저장을 위해 할당되는 인접 LBA 주소의 런에 대한 엔트리를 포함한다. SAT 페이지(2206)에 의해 걸쳐있는 한 범위의 LBA 주소는 이외 어떤 다른 SAT 페이지(2206)에 의해 걸쳐있는 한 범위의 LBA 엔트리와 겹치지 않는다. LBA 필드는 가변 길이이며 가변 수의 LBA 엔트리를 포함한다. LBA 필드(2306) 내에는 SAT 페이지(2206)에 의해 색인된 하나의 범위의 LBA 주소 내에 매 LBA 런마다 LBA 엔트리(2312)가 존재한다. LBA 런은 하나 이상의 DLBA 런에 매핑된다. 도 24에 도시된 바와 같이, LBA 엔트리(2312)는 다음 정보를 포함한다: 섹터에서, 런에 제 1 LBA(2402), LBA 런의 길이(2404), 및 LBA 런이 매핑되는 제 1 DLBA 런(2406)의, 동일 SAT 페이지(2206)에 DLBA 필드 내에, DLBA 엔트리 번호 및 뱅크 번호.
SAT 페이지(2206) 내에 DLBA 필드(2308)는 동일 SAT 페이지(2206)에 LBA 필드 내에 LBA 런에 매핑되는 DLBA 주소의 모든 런에 대한 엔트리를 포함한다. DLBA 필드(2308)는 가변 길이이며 가변 수의 DLBA 엔트리(2314)를 포함한다. DLBA 필드(2308) 내에는 동일 SAT 페이지(2206)에 LBA 필드(2306) 내에 LBA 런에 매핑되는 매 DLBA 런마다 DLBA 엔트리(2314)가 존재한다. 도 25에 도시된 바와 같이, 각각의 DLBA 엔트리(2314)는 다음 정보를 포함한다: 런에서 제 1 DLBA 주소(2502), 및 제 1 DLBA 주소가 매핑되는 LBA 런에서 LBA 오프셋(2504). 모든 SAT 페이지(2206)의 부분으로서 기록되지만 가장 최근에 기록된 SAT 페이지(2206)에만 유효한 채로 남아 있는 SAT 페이지/색인 버퍼 필드는 SAT 색인 엔트리(2316)를 포함한다. 다중 뱅크 메모리(107)에 대해 단일 SAT가 유지되는 실시예에서, 뱅크 번호는 런에서 제 1 DLBA의 엔트리(2502)와 함께 포함된다. 별도의 SAT가 각 뱅크에 유지되는 대안적 실시예에서는 시작 DLBA 주소가 이미 뱅크에 특정한 것이기 때문에 DLBA 엔트리(2314)엔 어떠한 뱅크 정보도 필요하지 않다.
도 26에 도시된 SAT 색인 엔트리(2316)는 관계된 SAT 색인 페이지(2208)에 현재 유효 엔트리를 갖지 않은 SAT 내 모든 SAT 페이지(2206)에 대해 존재한다. SAT 색인 엔트리는 SAT 페이지(2206)가 기록될 때마다 생성 또는 업데이트되며, 관계된 SAT 색인 페이지(2208)가 업데이트될 때 삭제된다. 이것은 SAT 페이지(2206)에 의해 색인된 제 1 LBA(2602), SAT 페이지(2206)에 의해 색인된 최종 LBA(2604), SAT 페이지(2206)를 포함하는 SAT 블록 번호 및 뱅크 번호(2606), 및 SAT 블록 내에 SAT 페이지(2206)의 페이지 번호(2608)를 포함한다. SAT 색인 필드(2318)는 고정된 수의 SAT 색인 엔트리(2320)를 위한 용량을 갖는다. 이 수는 SAT 페이지(2206) 및 SAT 색인 페이지(2208)가 기록될 수 있는 상대적 빈도수를 결정한다. 일 구현에서, 이 고정된 수는 32일 수 있다.
SAT 페이지 필드 포인터(2310)는 LBA 필드의 시작부터 DLBA 필드의 시작까지의 오프셋을 정의한다. 이것은 오프셋 값을 LBA 엔트리의 수로서 포함한다. SAT 페이지(2206)에 파라미터 백업 엔트리는 휘발성 RAM에 저장된 파라미터의 값을 포함한다. 이들 파라미터 값은 파워 사이클 후에 RAM(도 8 및 도 9의 구현에서는 제어기(108)에 연관된 것이며, 또는 도 10의 구현에 있어선 호스트 CPU에 연관된 것)에 정보의 초기화 동안에 사용된다. 이들은 가장 최근에 기록된 SAT 페이지(2206)에서만 유효하다.
SAT 색인 페이지
한 세트의 색인 페이지(2208)는 SAT 내 모든 유효 SAT 페이지(2206)의 위치에 대한 색인을 제공한다. 개개의 SAT 색인 페이지(2208)는 한 범위의 LBA 주소에 관계된 유효 SAT 페이지의 위치를 정의하는 엔트리(2320)를 포함한다. SAT 색인 페이지(2208)에 의해 걸쳐 있는 한 범위의 LBA 주소는 어떤 다른 SAT 색인 페이지(2208)에 의해 걸쳐 있는 한 범위의 LBA 주소와 겹치지 않는다. 엔트리는 이들이 관계된 SAT 페이지의 LBA 주소 범위 값에 따른 순서로 되어 있다. SAT 색인 페이지(2208)는 고정된 수의 엔트리를 포함한다. SAT 색인 페이지(2208)는 제약없이 완전한 한 세트의 SAT 블록 전체에 걸쳐 분포될 수 있다. 임의의 한 범위의 LBA 주소에 대한 SAT 색인 페이지(2208)는 임의의 SAT 블록에 있을 수 있다. SAT 색인 페이지(2208)는 SAT 색인 필드 및 페이지 색인 필드를 포함한다.
SAT 색인 필드(2318)는 SAT 색인 페이지(2208)에 의해 걸쳐 있는 LBA 주소 범위 내에 모든 유효 SAT 페이지에 대한 SAT 색인 엔트리를 포함한다. SAT 색인 엔트리(2320)는 단일 SAT 페이지(2206)에 관계된 것으로, 다음 정보를 포함한다: SAT 페이지에 의해 색인된 제 1 LBA(2206), SAT 페이지(2206)를 포함하는 SAT 블록 번호 및 SAT 블록 내에 SAT 페이지(2206)의 페이지 번호. 페이지 색인 필드는 SAT에 모든 유효 SAT 색인 페이지(2208)에 대한 페이지 색인 엔트리를 포함한다. 페이지 색인 엔트리는 SAT 내 모든 유효 SAT 색인 페이지(2208)에 대해 존재하며 다음 정보를 포함한다: SAT 색인 페이지에 의해 색인된 제 1 LBA, SAT 색인 페이지를 포함하는 SAT 블록 번호 및 SAT 블록 내에 SAT 색인 페이지의 페이지 번호. 페이지 색인 엔트리는 가장 최근에 기록된 SAT 색인 페이지(2208)에서만 유효하다.
임시 SAT 데이터 구조
도 22에 도시된 주소 매핑의 장기간 저장을 위한 SAT 계층의 부분은 아닐지라도, SAT를 업데이트하기 위한 계층적 절차 내에서 추가 데이터 구조가 사용될 수 있다. 한 이러한 구조는 LBA 런에 대한 업데이트 동작 또는 SAT 페이지(2206)에 아직 기록되지 않은 블록 플러시 동작에 기인한 새로운 주소 매핑을 위해 새로운 엔트리에 대한 LBA 엔트리 및 대응하는 DLBA 매핑을 포함하는 SAT 리스트이다. SAT 리스트는 RAM에 휘발적 구조일 수 있다. SAT 리스트에 엔트리는 이들이 SAT 페이지 업데이트 동안에 SAT 페이지(2206)에 기록되었을 때 클리어된다.
테이블 페이지
테이블 페이지는 SAT 블록 내에 고정된 크기의 한 단위의 DLBA 주소 공간으로서, 이는 한 SAT 페이지(2206)를 저장하거나 아니면 한 SAT 색인 페이지(2208)를 저장하는데 사용된다. 테이블 페이지의 최소 크기는 한 페이지이며 최대 크기는 한 메타페이지인데, 여기서 페이지 및 메타페이지는 각 뱅크(107A ~ 107D)를 위한 물리 메모리 내 페이지 및 메타페이지에 대응하는 DLBA 주소공간 단위이다.
SAT 내 엔트리 크기
SAT 페이지(2206) 및 SAT 색인 페이지(2208) 내에 엔트리의 크기를 표 1에 나타내었다.
SAT 엔트리 크기
엔트리 주소 지정의
범위
바이트 단위
엔트리 크기
SAT 페이지/LBA 엔트리/제1 LBA 2048 GB 4
SAT 페이지/LBA 엔트리/런 길이 32 MB 2
SAT 페이지/LBA 엔트리/DLBA 엔트리 수 64K 엔트리 2
SAT 페이지/DLBA 엔트리/제1 DLBA 2048 GB 4
SAT 페이지/DLBA 엔트리/LBA 오프셋 32 MB 2
SAT 페이지/색인 버퍼 필드/SAT 색인 엔트리/제 1 LBA 2048 GB 4
SAT 페이지/색인 버퍼 필드/SAT 색인 엔트리/최종 LBA 2048 GB 4
SAT 페이지/색인 버퍼 필드/SAT 색인 엔트리/SAT 블록 위치 64K 블록 2
SAT 페이지/색인 버퍼 필드/SAT 색인 엔트리/SAT 블록 페이지
위치
64K 페이지 2
SAT 페이지/필드 포인터 64 엔트리 2
SAT 색인 페이지/SAT 색인 필드/SAT 색인 엔트리/제 1 LBA 2048 GB 4
SAT 색인 페이지/SAT 색인 필드/SAT 색인 엔트리/SAT 블록 위치 64K 블록 2
SAT 색인 페이지/SAT 색인 필드/SAT 색인 엔트리/SAT 페이지 위치 64K 페이지 2
SAT 색인 페이지/페이지 색인 필드/페이지 색인 엔트리/제 1 LBA 2048 GB 4
SAT 색인 페이지/페이지 색인 필드/페이지 색인 엔트리/SAT 블록 위치 64K 블록 2
SAT 색인 페이지/페이지 색인 필드/페이지 색인 엔트리/SAT
페이지 위치
64K 페이지 2
주소 변환
SAT는 호스트 파일 시스템의 LBA 주소에 대응하는 DLBA 주소를 신속하게 찾는데 유용하다. 일 실시예에서, 유효 데이터에 매핑된 LBA 주소만이 SAT에 포함된다. SAT 페이지(2206)는 하나의 SAT 페이지(2206)에서 다른 페이지 사이에 LBA 범위에서 겹침이 없이 LBA 순서로 배열되기 때문에, 요망되는 데이터에 신속하게 나아가게 하기 위해 단순 탐색 알고리즘이 사용될 수 있다. 이 주소 변환 절차의 예가 도 27에 도시되었다. 타깃 LBA(2702)가 먼저 제어기 또는 프로세서에 의해 수신된다(저장 주소 재매핑 구현이 각각 도 11에서와 같이 구성되었는지 아니면 도 12에서와 같이 구성되었는지에 따라). 다른 실시예에서는 SAT가 유효 데이터 및 폐용 데이터에 매핑되는 LBA 주소를 포함하고 데이터가 유효 데이터인지 아니면 폐용 데이터인지를 추적하는 것이 고찰된다.
주소 변환 절차를 도시한 것 외에, 도 27은 최종 기록된 SAT 색인 페이지로부터 페이지 색인 필드와 최종 기록된 SAT 페이지로부터 색인 버퍼 필드가 어떻게 구성될 수 있는가를 도시한다. 도 27의 구현에서, 이들 두 필드는 저장 장치 또는 호스트 내 RAM과 같은 휘발성 메모리에 임시로 유지된다. 마지막으로 기록된 SAT 색인 페이지 내 페이지 색인 필드는 모든 SAT 색인 페이지에의 포인터를 포함한다. 색인 버퍼 필드는 색인 페이지에 아직 기록되지 않은 최근에 기록된 SAT 페이지에 대한 한 세트의 색인 엔트리를 포함할 수 있다.
대응하는 DLBA 주소에 타깃 LBA 주소에 대한 매핑 정보는 타깃 주소를 포함하는 한 범위의 LBA 주소에 대한 모든 매핑 정보를 포함하는 특정 SAT 페이지(2205) 내에 유지된다. 주소 변환 절차의 제 1 단계는 이 타깃 SAT 페이지를 확인하여 판독하는 것이다. 도 27을 참조하면, 타깃 LBA에 대한 SAT 색인 엔트리가 있는지를 판정하기 위해서(단계(2704)에서), 마지막으로 기록된 SAT 페이지 내에 색인 버퍼 필드를 캐시해 둔 것에 대해 바이너리 탐색이 수행된다. 타깃 SAT 페이지가 최근에 재기록되었지만 타깃 SAT의 새로운 위치를 기록하는 SAT 색인 엔트리를 포함하는 SAT 색인 페이지가 아직 기록되지 않았다면 엔트리가 존재할 것이다. 타깃 LBA에 대한 SAT 색인 엔트리가 발견된다면, 이것은 타깃 SAT 페이지의 위치를 정의하며 이 페이지의 위치가 판독된다(단계(2706)에서).
타깃 LBA에 대한 어떠한 SAT 색인 엔트리도 단계(2704)에서 발견되지 않는다면, 타깃 LAB에 대한 SAT 색인 엔트리를 찾기 위해서, 최종 기록된 SAT 색인 페이지 내 페이지 색인 필드를 캐시해 둔 것에 대해 바이너리 탐색이 수행된다(단계(2708)에서). 단계(2708)에서 타깃 LBA에 대한 SAT 색인 엔트리는 타깃 LBA를 포함하는 LBA 주소 범위에 대해 SAT 색인 페이지의 위치를 정의한다. 이 페이지가 판독된다(단계(2710)에서). 타깃 LBA에 대한 SAT 색인 엔트리를 찾기 위해서 바이너리 탐색이 수행된다(단계(2712)에서). 타깃 LBA에 대한 SAT 색인 엔트리는 타깃 SAT 페이지의 위치를 정의한다. 이 페이지가 판독된다(단계(2714)에서).
타깃 SAT 페이지가 단계(2706)에서 아니면 단계(2714)에서 판독되었을 때, LBA 대 DLBA 변환이 다음과 같이 수행될 수 있다. 타깃 LBA를 포함하는 타깃 LBA 런에 대한 LBA 엔트리를 찾기 위해서 LBA 필드에 대해 바이너리 탐색이 수행된다. 타깃 LBA 런 내에 타깃 LBA의 오프셋이 기록된다(단계(2716)에서). 필드 포인터 내 정보는 바이너리 탐색을 위한 LBA 필드의 길이, 및 LBA 필드의 시작에 관하여 DLBA 필드의 시작을 정의한다(단계(2718)에서). 단계(2716)에서 발견된 LBA 엔트리는 LBA 런에 매핑되는 제 1 DLBA 엔트리의 DLBA 필드 내의 위치를 정의한다(단계(2720)에서). 단계(2716)에서 결정된 오프셋은 타깃 DLBA 주소를 결정하기 위해서, 단계(2720)에 위치한 하나 이상의 DLBA 엔트리와 함께 사용된다.
저장 주소 재매핑 알고리즘은, 화이트 블록의 수가 기정의된 임계값 미만으로 되었을 때, 데이터의 기록을 위해 할당될 수 있는 사용가능한 화이트 블록 용량이 기록 블록에 호스트 데이터의 기록에 의해 화이트 블록 용량이 소비되는 것과 동일한 레이트로 생성될 수 있게 하는데 충분한 레이트로 핑크 블록에 대한 플러싱(재배치라고도 함) 동작이 수행되어야 한다는 원리로 동작한다. 데이터의 기록을 위해 할당될 수 있는 사용가능한 화이트 클러스터 용량은 화이트 블록 내 용량과, 이에 더하여 데이터가 플러시 동작 동안 기록될 수 있는 재배치 블록 내의 화이트 클러스터 용량이다.
플러시 동작을 위해 선택되는 핑크 블록 내 화이트 클러스트 용량이 각 핑크 블록의 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에 의해 기록되는 $bitmap 파일을 모니터함으로써 비할당된 주소의 지정을 검출할 수 있다. 플러시 동작은 두 방법으로 예정될 수 있다. 바람직하게, 플러시 동작은 백그라운드 동작으로서 작동하고, 이에 따라 호스트 데이터 기록 속도가 영향을 받지 않게 SSD 또는 기타 휴대 플래시 메모리 장치가 아이들 상태에 있는 동안에만 기능한다. 대안적으로, 플러시 동작은 호스트가 데이터를 기록하고 있을 때 활성이 되는 포그라운드(foreground) 동작에서 이용될 수 있다. 플러시 동작이 포그라운드 동작으로서 배열된다면, 이들 동작은 호스트 활동이 일어날 때 또는 "플러시 캐시" 명령이 SSD 또는 휴대 플래시 메모리 장치의 잠재적 파워-다운을 나타낼 때 자동으로 중지될 수 있다. 포그라운드 및 백그라운드 플러시 동작 선택은 동적 결정일 수 있고, 포그라운드 동작은 메모리 장치의 아이들 상태 동안 달성될 수 있는 것보다 더 높은 플러시 레이트가 요구될 때 수행된다. 예를 들어, 호스트 또는 메모리 장치는 메모리 장치가 다 채워질 때까지 일정한 호스트 데이터 기록 속도를 유지하게 플러시 레이트가 제어되도록 포그라운드 플러시 동작과 백그라운드 플러시 동작간을 토글할 수 있다. 포그라운드 플러시 동작에 호스트 데이터 기록 동작이 끼워질 수 있다. 예를 들어, 호스트 인터페이스에서 계속된 활동 때문에 불충분한 아이들 시간이 가능하다면, 블록 플러시 동작을 수행하기 위한 데이터 페이지의 재배치에 장치 활동이 호스트 명령에 응하여 짧게 끼워질 수 있다.
SAT 업데이트 절차
SAT 데이터 구조 내에 요소는 표 2에 나타낸 계층적 절차를 사용하여 업데이트된다.
SAT를 위한 업데이트 구조의 계층
구조 위치 내용 업데이트 트리거
DLBA 런 기록 블록 또는 재배치 블록 호스트 데이터 호스트에 의해 결정됨
SAT 리스트 RAM SAT 페이지에 아직 기록되지 않은, LBA 대 DLBA 매핑 엔트리 DLBA 런이 기록 블록 또는 재배치 블록에 기록될 때
SAT 페이지 SAT 기록 블록 LBA 대 DLBA 매핑 엔트리 SAT 리스트가 다 채워질 때, 또는 명시된 량의 호스트 데이터가 DLBA 런으로 기록되었을 때
SAT 색인 버퍼 최종 기록된 SAT 페이지 SAT 색인 페이지에 아직 기록되지 않은, SAT 색인 엔트리 임의의 SAT 페이지가 기록될 때
SAT 색인 페이지 SAT 기록 블록 SAT 색인 엔트리 SAT 색인 버퍼가 모두 채워지게 될 때, 또는 명시된 수의 SAT 색인 페이지가 업데이트될 필요가 있을 때
표 2에 나타낸 바와 같이, DLBA 런 업데이트를 제외하고, 특정 구조에 대한 SAT 업데이트는 SAT 계층에서 낮은 위계의 구조에서 활동에 의해 트리거된다. SAT 리스트는 완전한 DLBA에 연관된 데이터가 기록 블록에 기록될 때마다 업데이트된다. 하나 이상의 SAT 페이지는 최대 허용된 수의 엔트리가 SAT 리스트에 존재할 때 업데이트된다. SAT 페이지가 업데이트될 때, SAT 리스트로부터 하나 이상의 엔트리는 SAT 페이지에 추가되고, SAT 리스트로부터 제거된다. SAT 리스트가 다 채워졌을 때 업데이트되는 SAT 페이지는 다수의 서로 다른 그룹의 페이지로 분할될 수 있고, 단일 그룹만이 단일 동작에서 업데이트될 필요가 있다. 이것은 SAT 업데이트 동작이 호스트로부터 데이터 기록 동작을 지연시킬 수 있는 시간을 최소화하는데 도움을 줄 수 있다. 이 경우에, SAT 리스트로부터 업데이트가 된한 그룹의 SAT 페이지에 복사되는 엔트리만이 SAT 리스트로부터 제거된다. 한 그룹의 업데이트되는 SAT 페이지의 크기는 메모리 시스템(102)에 액세스하는 호스트 시스템(100)의 능력에 간섭하지 않는 점으로 설정될 수 있다. 일 구현에서 그룹 크기는 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 색인 페이지의 업데이트 동안에 엔트리가 추가되어야 하지만, 변화를 수용할 페이지 내 가용한 미사용 공간이 충분하지 않을 때, 페이지는 2개로 분할된다. 새로운 SAT 페이지 또는 SAT 색인 페이지가 도입되고, 이전에 모두 채워진 페이지와, 반만큼 채우게 할 엔트리의 수를 각각에 줄 새로운 비어있는 페이지에 대해 LBA 범위가 결정된다. 이어서 가능하다면 단일 프로그래밍 동작으로 이들 두 페이지가 기록된다. 페이지가 SAT 페이지인 경우, 이들 두 페이지에 대한 SAT 색인 엔트리는 최종 기록된 SAT 페이지 내 색인 버퍼 필드에 포함된다. 페이지가 SAT 색인 페이지인 경우, 최종 기록된 SAT 색인 페이지 내 페이지 색인 필드에 페이지 색인 엔트리가 포함된다.
서로 인접한 LAB 범위에 2 이상의 SAT 페이지, 또는 2개의 SAT 색인 페이지가 희박하게 분포될 때, 페이지는 단일 페이지로 합체될 수 있다. 합체는 결과적인 단일 페이지가 80%만 채워지게 될 때 개시된다. 새로운 단일 페이지에 대한 LBA 범위는 별개의 합체된 페이지에 의해 걸쳐있는 범위에 의해 정의된다. 합체된 페이지가 SAT 페이지인 경우, 새로운 페이지 및 합체된 페이지에 대한 SAT 색인 엔트리는 최종 기록된 SAT 페이지 내 색인 버퍼 필드에서 업데이트된다. 페이지가 SAT 색인 페이지인 경우, 페이지 색인 엔트리는 최종 기록된 SAT 색인 페이지 내 페이지 색인 필드에서 업데이트된다.
파워 사이클 후에, 즉 파워가 제거되고 복구된 후에, RAM에 SAT 리스트가 파워 사이클 전에 있었던 것과 정확히 동일한 상태로 이 리스트를 재구성하는 것이 필요하다. 이것은 최종 SAT 페이지 업데이트 이후 기록된 추가 데이터를, 데이터 헤더 내 LBA 주소 정보로부터 확인하기 위해 모든 기록 블록 및 재배치 블록을 스캔함으로써 달성될 수 있다. 이들 블록의 위치 및 최종 SAT 페이지 업데이트시 이들 내에 기록 및 재배치 포인터의 위치도 최종 기록된 SAT 페이지 내 필드에 기록된다. 그러므로, 스캐닝은 이들 포인터의 위치에서만 시작되어야 한다.
SAT 블록 플러싱
SAT 블록을 플러싱하는 프로세스는 호스트로부터 수신된 데이터에 대해 위에 기술된 프로세스와 유사하나, SAT 블록에 대해서만 동작한다. 저장 주소 재매핑 기록 및 플러시 알고리즘에 의해 야기된 SAT에 대한 업데이트는 도 28에 도시된 바와 같이 SAT 블록이 블록 상태 사이를 전이하게 한다. 먼저, 다음 SAT 블록을 수신하게 현재 지정된 뱅크에 대한 화이트 블록 리스트로부터 화이트 블록은 SAT 기록 블록으로서 할당된다(2802에서). SAT 기록 블록 내 최종 페이지가 할당되었을 때, 블록은 레드 SAT 블록이 된다(2804에서). 핑크 SAT 블록 내에 일부 페이지가 이미 폐용으로 되었다면 이 블록으로 SAT 기록 블록이 전이할 수 있는 것도 가능하다. 그러나, 명확성의 목적을 위해서, 이 전이는 도 29에 도시되지 않았다. 레드 SAT 블록 내에 하나 이상의 페이지는, SAT 페이지 또는 SAT 색인 페이지가 업데이트되고 레드 SAT 블록이 핑크 SAT 블록이 되었을 때 페용된다(2806에서). 재배치된 데이터에 대해서만 지정된 특별한 기록 블록으로 유효 데이터가 이동되는, 호스트 데이터를 포함하는 핑크 블록의 플러시 동작과는 달리, 핑크 SAT 블록에 대한 플러시 동작은 간단히 유효 SAT 데이터를 현재 SAT 기록 블록에 재배치한다. 선택된 핑크 SAT 블록에 플러시 동작이 완료되었을 때, 핑크 SAT 블록은 화이트 블록이 된다(2808에서). 바람직하게 SAT 핑크 블록은 동일 뱅크(107A ~ 107D) 내 SAT 기록 블록으로 플러싱된다.
어느 SAT 블록에 플러시 절차를 진행할 것인지 선택하는 프로세스가 이제 기술될 것이다. 적은 수의 유효 페이지 또는 클러스터를 포함하는 SAT 블록이 플러싱될 다음 SAT 블록으로서 선택된다. 블록은 특정 뱅크에서 가장 적은 수의 유효 페이지의 SAT 블록을 갖는 SAT 블록의 5% 중에 있어야 한다. 블록의 선택은 각 뱅크에서 가장 작은 유효 페이지 카운트 값을 갖는 16개의 SAT 블록의 리스트를 작성하는 백그라운드 프로세스에 의해 달성될 수 있다. 이 프로세스는 바람직하게는 M개의 예정된 SAT 블록 플러시 동작이 차지하는 시간 내에 한 사이클에 완료해야 한다.
다음에 어느 SAT 블록을 플러싱할 것인가를 결정하기 위한 백그라운드 프로세스의 한 사이클에 행해지는 동작의 예가 도 29에 도시되었다. 먼저, 이전 프로세스 사이클 동안 확인된 하나의 세트의 블록에 이어, 각 뱅크에서 다음 한 세트의 N개의 SAT 블록을 확인하기 위해 각 뱅크에 대한 블록 정보 테이블(BIT)이 스캔된다(단계(2902)에서). 장치 초기화 후에 제 1 프로세스 사이클에서 제 1의 한 세트의 SAT 블록이 확인되어야 한다. N 값은 특정 애플리케이션에 적합할 때 선택될 수 있고 SAT 플러시 블록의 가용성을 보증하기 위해서 M에 대해 선택된 값보다 더 큰 것이 바람직하다. 일례로서, M은 4일 수 있고 N은 8일 수 있다. 세트 내 SAT 블록 각각에 대해 유효 페이지 카운트 값은 제로로 설정된다(단계(2904)에서). 이어서 캐시된 페이지 색인 필드에서 페이지 색인 엔트리가 스캔되어, 세트 내 임의의 SAT 블록 내 위치한 유효 SAT 색인 페이지를 확인한다(단계(2906)에서). 이에 따라 유효 페이지 카운트 값이 증분된다. 이번에는 각 SAT 색인 페이지에서 SAT 색인 엔트리가 스캔되어, 세트 내 임의의 SAT 블록 내 위치한 유효 SAT 색인 페이지를 확인한다(단계(2908)에서). 이에 따라 유효 페이지 카운트 값이 증분된다{단계(2910)에서}. 유효 페이지 카운트 값을 결정하기 위해서 페이지 색인 및 SAT 색인 페이지가 스캔된 후에, 세트 내 SAT 블록 각각에 대한 유효 페이지 카운트 값이 낮은 유효 페이지 카운트 값에 대한 리스트 내 SAT 블록에 대한 것에 대해 평가되고, 리스트 내 블록은 필요하다면 세트로부터 블록으로 대체된다(단계(2912)에서). SAT 블록 플러시 동작이 예정되어야 할 때, 리스트 내 가장 낮은 유효 페이지 카운트 값을 갖는 블록이 선택된다.
SAT 블록 플러시 동작에서, 모든 유효 SAT 색인 페이지 및 SAT 페이지는 각 뱅크에서 SAT 기록 블록(2300)의 SAT 기록 포인터(2303)로 선택된 블록으로부터 재배치된다. 페이지 색인 필드는 최종 기록된 SAT 색인 페이지에서만 업데이트된다. SAT 블록의 수가 대략적으로 일정하게 유지되게 하기 위해서, SAT 페이지 및 SAT 색인 페이지에의 업데이트 동작에 의해 소비되는 SAT 내 페이지의 수는 SAT 블록 플러시 동작에 의해 복구되는 폐용 SAT 페이지 및 SAT 색인 페이지의 수에 의해 균형이 맞아야 한다. 다음 SAT 플러시 동작을 위해 선택되는 SAT 블록 내 폐용 정보의 페이지의 수는 위에 도 29를 참조하여 논의된 바와 같이 판정된다. 다음 SAT 블록 플러시 동작은 이전 SAT 플러시 동작 이후 SAT에 동일한 수의 유효 페이지의 정보가 기록되었을 때 행해지도록 예정될 수 있다. 또한, 각 블록에 대해 독립적으로, 제어기(108)는 핑크 블록 내 유효 데이터량에 근거하여 또는 하나 이상의 다른 파라미터에 근거하여 SAT 데이터의 핑크 블록을 플러싱할지 아니면 호스트 데이터의 핑크 블록을 플러시 할지를 선택할 수 있다.
블록 정보 테이블( BIT )
블록 정보 테이블(BIT)은 화이트 블록, 핑크 블록, 및 SAT 블록에 대한 블록 주소의 별도의 리스트를 기록하기 위해 사용된다. 다중 블록 메모리에서는 각 뱅크(107A ~ 107D)에 별도의 BIT가 유지된다. BIT 기록 블록은 동일 뱅크에서 기타 모든 다른 BIT 블록이 위치되어 있는지에 관한 정보를 포함한다. 일 구현에서, 블록의 선택이 기록 블록, 재배치 블록 또는 SAT 블록으로서 할당되게 하기 위해서 저장 주소 재매핑 알고리즘 및 연관된 시스템이 화이트 블록의 리스트를 유지하는 것이 바람직하다. 또한, 핑크 블록 및 SAT 블록의 선택이 각 뱅크에서 블록 플러시 동작의 주체가 되게 하기 위해서 핑크 블록의 리스트를 유지하는 것이 바람직하다. 이들 리스트는 구조가 SAT의 구조와 밀접히 흡사한 BIT에 유지된다. 일 실시예에서, 별도의 BIT가 각 뱅크(107A ~ 107D)에 유지되고 저장된다. 또 다른 실시예에서, BIT는 뱅크에 의해 색인되는 정보를 갖는 단일 테이블일 수 있다.
비트 데이터 구조
각 뱅크에서 BIT는 BIT 블록으로서 알려진 DLBA 주소 블록 내에 구현된다. 블록 리스트 정보는 BIT 페이지 내에 저장되며, "DLBA 블록 내 BIT 페이지" 색인 정보는 BIT 색인 페이지 내에 저장된다. BIT 페이지 및 BIT 색인 페이지는 동일 BIT 블록 내에 임의의 순서로 혼재될 수 있다. BIT는 복수의 BIT 블록으로 구성될 수 있지만, BIT 정보는 BIT 기록 블록으로 현재 지정된 단일 블록에만 기록될 수 있다. 기타 모든 다른 BIT 블록은 이전에 완전히 기록되어 있고, 유효 및 폐용 페이지의 조합을 포함할 수 있다. 위에 기술된 SAT 블록의 수법과 동일한 BIT 블록 플러시 수법은 폐용 BIT 정보의 페이지를 소거하고 재사용을 위해 화이트 블록을 생성하기 위해 이행된다.
BIT 블록
도 30에 도시된 바와 같이, BIT 블록은 BIT 정보의 저장에 전용되는 한 블록의 DLBA 주소가다. 이것은 BIT 페이지(3002) 및 BIT 색인 페이지(3004)를 포함할 수 있다. BIT 블록은 유효 BIT 페이지, 유효 BIT 색인 페이지, 및 폐용 페이지의 임의의 조합을 포함할 수 있다. BIT 정보는 BIT 기록 블록(3000)으로서 지정되는 단일 BIT 블록에만 기록될 수 있다. BIT 정보는 증분적 BIT 기록 포인터(3006)에 의해 정의된 순차 위치에 BIT 기록 블록(3000)에 기록된다. BIT 기록 블록(3000)이 완전히 기록되었을 때, 화이트 블록은 새로운 기록 블록으로서 할당된다. BIT를 구성하는 블록은 각각이 장치 내 한 집단의 블록 내에 이들의 블록 주소인 이들의 BIT 블록 위치에 의해 확인된다. BIT 블록은 테이블 페이지로 분할되며, 이에 BIT 페이지(3002) 또는 BIT 색인 페이지(3004)가 기록될 수 있다. BIT 페이지 위치는 이의 BIT 블록 내에 이의 순차적 번호에 의해 주소 지정된다. BIT 정보는 플래시 메모리 상이한 블록 내 비-BIT(non-BIT) 정보로부터 분리될 수 있고, 또는 비-BIT 정보와는 다른 유형의 블록(예를 들어, 바이너리 대 ML)으로 분리될 수 있고, 또는 블록 내 비-BIT 정보와 혼합될 수 있다.
BIT 페이지(3002)는 BIT 내 최소 업데이트 가능한 한 단위의 블록 리스트 정보이다. 업데이트된 BIT 페이지는 BIT 기록 포인터(3006)에 의해 정의된 위치에 기록된다. 임의의 리스트에 연속한 블록의 블록 주소가 인접할 필요는 없을지라도, BIT 페이지(3002)는 정의된 범위 내에서 DLBA 블록 주소와 함께 화이트 블록, 핑크 블록 및 SAT 블록의 리스트를 포함한다. BIT 페이지에 한 범위의 DLBA 블록 주소는 어떤 다른 BIT 페이지 내 한 범위의 DLBA 블록 주소와 겹치지 않는다. BIT 페이지는 제약 없이 완전한 한 세트의 BIT 블록 전체에 걸쳐 분포될 수 있다. 임의의 한 범위의 DLBA 주소에 대한 BIT 페이지는 임의의 BIT 블록에 있을 수 있다. BIT 페이지는 화이트 블록 리스트(WBL) 필드(3008), 핑크 블록 리스트(PBL) 필드(3010), SAT 블록 리스트(SBL) 필드(3012) 및 색인 버퍼 필드(3014), 이에 더하여 2개의 제어 포인터(3016)를 포함한다. 파라미터 백업 엔트리는 휘발성 RAM에 저장된 어떤 파라미터의 값도 포함한다.
BIT 페이지(3002) 내에 WBL 필드(3008)는 BIT 페이지(3002)에 관계된 하나의 범위의 DLBA 블록 주소 내에, 화이트 블록 리스트 내 블록에 대한 엔트리를 포함한다. BIT 페이지(3002)에 의해 걸쳐있는 한 범위의 DLBA 블록 주소는 어떤 다른 BIT 페이지(3002)에 의해 걸쳐있는 한 범위의 DLBA 블록 주소와 겹치지 않는다. WBL 필드(3008)는 가변 길이이며 가변 수의 WBL 엔트리를 포함한다. WBL 필드 내에, WBL 엔트리는 BIT 페이지(3002)에 의해 색인되는 한 범위의 DLBA 블록 주소 내에 모든 화이트 블록에 대해 존재한다. WBL 엔트리는 블록의 DLBA 주소를 포함한다.
BIT 페이지(3002) 내에 PBL 필드(3010)는 BIT 페이지(3002)에 관계된 하나의 범위의 DLBA 블록 주소 내에, 핑크 블록 리스트 내 블록에 대한 엔트리를 포함한다. BIT 페이지(3002)에 의해 걸쳐있는 한 범위의 DLBA 블록 주소는 어떤 다른 BIT 페이지(3002)에 의해 걸쳐있는 한 범위의 DLBA 블록 주소와 겹치지 않는다. PBL 필드(3010)는 가변길이이고 가변 수의 PBL 엔트리를 포함한다. PBL 필드(3010) 내에는 BIT 페이지(3002)에 의해 색인되는 한 범위의 DLBA 블록 주소 내 모든 핑크 블록에 대해 PBL 엔트리가 존재한다. PBL 엔트리는 블록의 DLBA 주소를 포함한다.
BIT 페이지 내에 SBL(3012) 필드는 BIT 페이지(3002)에 관계된 하나의 범위의 DLBA 블록 주소 내에, SAT 블록 리스트 내 블록에 대한 엔트리를 포함한다. BIT 페이지(3002)에 의해 걸쳐있는 한 범위의 DLBA 블록 주소는 어떤 다른 BIT 페이지(3002)에 의해 걸쳐있는 한 범위의 DLBA 블록 주소와 겹치지 않는다. SBL 필드(3012)는 가변길이이고 가변 수의 SBL 엔트리를 포함한다. SBL 필드(3012) 내에는 BIT 페이지(3012)에 의해 색인되는 한 범위의 DLBA 블록 주소 내 모든 SAT 블록에 대해 SBL 엔트리가 존재한다. SBL 엔트리는 블록의 DLBA 주소를 포함한다.
색인 버퍼 필드(3014)는 모든 BIT 페이지(3002)의 부분으로서 기록되나, 가장 최근에 기록된 BIT 페이지에만 유효한 채로 남아 있다. BIT 페이지(3002)의 색인 버퍼 필드(3014)는 BIT 색인 엔트리를 포함한다. 관계된 BIT 색인 페이지(3004) 내 현재 유효 엔트리를 갖고 있지 않은 BIT 내 모든 BIT 페이지(3002)에 대해 BIT 색인 엔트리가 존재한다. BIT 색인 엔트리는 BIT 페이지(3002)가 기록될 때마다 생성 또는 업데이트되고, 관계된 BIT 색인 페이지(3004)가 업데이트될 때 삭제된다. BIT 색인 엔트리는 BIT 페이지(3002)에 의해 색인되는 범위의 제 1 DLBA 블록 주소, BIT 페이지(3002)에 의해 색인되는 범위의 최종 DLBA 블록 주소, BIT 페이지(3002) 및 BIT 블록 내 BIT 페이지의 BIT 페이지 위치를 포함하는 BIT 블록 위치를 포함할 수 있다. 색인 버퍼 필드(3014)는 고정된 수의 BIT 색인 엔트리를 위한 용량을 가지며, 임시적으로는 32으로서 정의된다. 이 수는 BIT 페이지(3002) 및 BIT 색인 페이지(3004)이 기록될 수 있는 상대적 빈도를 결정한다.
BIT 페이지(3002)의 제어 포인터(3016)는 PBL 필드(3010)의 시작의 WBL 필드(3008)의 시작과 SBL 필드(3012)의 시작부터의 오프셋을 정의한다. BIT 페이지(3002)는 다수의 리스트 엔트리로 오프셋 값을 포함한다.
BIT 색인 페이지
한 세트의 BIT 색인 페이지(3004)는 BIT 내 모든 유효 BIT 페이지(3002)의 위치에 대한 색인을 제공한다. 개개의 BIT 색인 페이지(3004)는 한 범위의 DLBA 주소에 관계된 유효 BIT 페이지의 위치를 정의하는 엔트리를 포함한다. BIT 색인 페이지에 의해 걸쳐 있는 한 범위의 DLBA 주소는 어떤 다른 BIT 색인 페이지(3004)에 의해 걸쳐 있는 한 범위의 DLBA 주소와 겹치지 않는다. 엔트리는 이들이 관계된 BIT 페이지(3002)의 DLBA 블록 주소 범위 값에 따른 순서로 되어 있다. BIT 색인 페이지(3004)는 고정된 수의 엔트리를 포함한다.
BIT 색인 페이지는 제약없이 완전한 한 세트의 BIT 블록 전체에 걸쳐 분포될 수 있다. 임의의 한 범위의 DLBA 주소에 대한 BIT 색인 페이지(3004)는 임의의 SAT 블록에 있을 수 있다. BIT 색인 페이지(3004)는 BIT 색인 필드(3018) 및 페이지 색인 필드(3020)를 포함한다. BIT 색인 필드(3018)는 BIT 색인 페이지(3004)에 의해 걸쳐 있는 DLBA 주소 범위 내에 모든 유효 BIT 페이지에 대한 BIT 색인 엔트리를 포함한다. BIT 색인 엔트리는 단일 BIT 페이지(3002)에 관계된 것으로, BIT 페이지에 의해 색인된 제 1 DLBA 블록, BIT 페이지를 포함하는 BIT 블록 위치 및 BIT 블록 내에 BIT 페이지의 BIT 페이지 위치를 포함할 수 있다.
BIT 색인 페이지(3004)의 페이지 색인 필드(3020)는 BIT에 모든 유효 BIT 색인 페이지에 대한 페이지 색인 엔트리를 포함한다. BIT 페이지 색인 엔트리는 BIT 내 모든 유효 BIT 색인 페이지(3004)에 대해 존재하며, BIT 색인 페이지에 의해 색인된 제 1 DLBA, BIT 색인 페이지를 포함하는 BIT 블록 위치 및 BIT 블록 내에 BIT 색인 페이지의 BIT 페이지 위치를 포함한다.
BIT 유지
BIT 페이지(3002)는 WBL(3008), PBL(3010) 및 SBL(3012)로부터 엔트리를 추가하거나 제거하기 위해 업데이트된다. 몇 개의 엔트리에 대한 업데이트는 RAM 내에 리스트에 축적될 수 있고, 리스트가 파워 사이클 후에 RAM에 복구될 수 있다면, 단일 동작으로 BIT에서 이행될 수 있다. BIT 색인 버퍼 필드는 가장 최근에 기록된 BIT 페이지에서 유효하다. 이것은 추가의 프로그래밍 없이 BIT 페이지가 기록될 때마다 업데이트된다. BIT 색인 페이지가 업데이트될 때, BIT 색인 버퍼로부터 하나 이상의 엔트리가 BIT 색인 페이지에 추가되고, BIT 색인 버퍼로부터 제거된다. 하나 이상의 BIT 색인 페이지(3004)는 최대 허용된 수의 엔트리가 BIT 색인 버퍼에 존재할 때 업데이트된다.
BIT 페이지(3002) 또는 BIT 색인 페이지(3004)에 의해 걸쳐있는 DLBA 블록 범위 내에 요구되는 엔트리의 수는 가변적이며, 시간에 따라 변할 수 있다. 그러므로, BIT 내 페이지가 오버플로하거나 페이지가 희박하게 분포되는 것이 다반사이다. 이들 상황은 BIT 내 페이지를 분할하거나 합체하는 수법에 의해 관리된다.
BIT 페이지(3002) 또는 BIT 색인 페이지(3004)의 업데이트 동안에 엔트리가 추가되어야 하지만, 변화를 수용할 페이지 내 가용한 미사용 공간이 충분하지 않을 때, 페이지는 2개로 분할된다. 새로운 BIT 페이지(3002) 또는 BIT 색인 페이지(3004)가 도입되고, 이전에 모두 채워진 페이지와, 반만큼 채우게 할 엔트리의 수를 각각에 줄 새로운 비어있는 페이지에 대해 DLBA 블록 범위가 결정된다. 이어서 가능하다면 단일 프로그래밍 동작으로 이들 두 페이지가 기록된다. 페이지가 BIT 페이지(3002)인 경우, 이들 두 페이지에 대한 BIT 색인 엔트리는 최종 기록된 BIT 페이지 내 색인 버퍼 필드에 포함된다. 페이지가 BIT 색인 페이지(3004)인 경우, 최종 기록된 BIT 색인 페이지 내 페이지 색인 필드에 페이지 색인 엔트리가 포함된다.
이와 반대로, 서로 인접한 DLAB 범위에 2 이상의 BIT 페이지(3002), 또는 2개의 BIT 색인 페이지(3004)가 희박하게 분포될 때, 페이지는 단일 페이지로 합체될 수 있다. 합체는 결과적인 단일 페이지가 80%만 채워지게 될 때 개시된다. 새로운 단일 페이지에 대한 DLBA 범위는 별개의 합체된 페이지에 의해 걸쳐있는 범위에 의해 정의된다. 합체된 페이지가 BIT 페이지인 경우, 새로운 페이지 및 합체된 페이지에 대한 BIT 색인 엔트리는 최종 기록된 BIT 페이지 내 색인 버퍼 필드에서 업데이트된다. 페이지가 BIT 색인 페이지인 경우, 페이지 색인 엔트리는 최종 기록된 BIT 색인 페이지 내 페이지 색인 필드에서 업데이트된다.
BIT 블록 플러싱
BIT 블록을 플러싱하는 프로세스는 SAT 블록에 대해 위에서 기술된 것에 거의 따르므로 여기에서는 반복하지 않는다.
제어 블록
다른 실시예에서, BIT 및 SAT 정보는 동일 블록의 서로 다른 페이지에 저장될 수 있다. 제어 블록이라고 하는 이 블록은 SAT 또는 BIT 정보의 페이지가 제어 블록 내 페이지를 점유하도록 구성될 수 있다. 제어 블록은 정수개의 페이지를 갖는 페이지 단위로 구성될 수 있고, 각 페이지 단위는 제어 블록 내 그의 순차적 수에 의해 주소 지정된다. 페이지 단위는 한 페이지의 물리적 메모리에서 최소 크기와 한 메타페이지의 최대 크기를 가질 수 있다. 제어 블록은 유효 SAT 페이지, SAT 색인 페이지, BIT 페이지, BIT 색인 페이지, 및 폐용 페이지의 임의의 조합을 포함할 수 있다. 이에 따라, 별도의 ST 및 BIT 블록 갖기보다는, SAT 및 BIT 정보 둘 다 동일 블록 또는 블록에 저장될 수 있다. 위에 기술된 별도의 SAT 및 BIT 기록 블록에서와 같이, 제어 정보(SAT 또는 BIT 정보)는 단일 제어 기록 블록에만 기록될 수 있고, 제어 기록 포인터는 제어 데이터를 수신하기 위한 다음 순차적 위치를 확인할 것이며, 제어 기록 블록이 완전히 기록되었을 때 기록 블록이 새로운 제어 기록 블록으로서 할당된다. 또한, 제어 블록은 메모리 시스템(102) 내 한 집단의 바이너리 블록 내 그들의 블록 주소에 의해 각각 확인될 수 있다. 제어 블록은 위에 기술된 분리된 SAT 및 BIT 블록에 대해 기술된 바와 동일한 방식으로 새로운 미기록 용량을 생성하기 위해 플러싱될 수 있는데, 차이는 제어 블록을 위한 재배치 블록이 유효 SAT 또는 BIT 정보에 관계된 페이지를 받아들일 수 있다는 것이다. 플러싱를 위한 적합한 핑크 제어 블록의 선택 및 타이밍은 SAT 플러시 프로세스에 대해 위에 기술된 바와 동일한 방식으로 구현될 수 있다.
LBA 할당 상태 모니터
저장 주소 재매핑 알고리즘은 현재 호스트에 의해 유효 데이터에 할당된 호스트 LBA 주소에 대해서만 주소 매핑 정보를 기록한다. 그러므로, 이 매핑 정보를 정확하게 유지하기 위해서, 클러스터가 호스트에 의해 데이터 저장으로부터 언제 할당이 해제되는지를 판정하는 것이 필요하다.
일 실시예에서, 호스트 파일 시스템으로부터 명령은 할당해제된 클러스터에 관한 정보를 저장 주소 재매핑 알고리즘에 제공할 수 있다. 예를 들어, 마이크로소프트사의 비스타 운영 시스템에서 사용하기 위해 "데이터세트(Dataset)" 명령이 제안되었다. "ATA8- ACS2을 위한 삭제된 데이터 통보 제안"을 위한 제안이 마이크로소프트에 의해 T13에 제출되었다. 이 새로운 명령은 삭제된 데이터의 통보를 제공하기 위해 의도된 것이다. 단일 명령은 2GB의 폐용 데이터까지를 나타내는 것으로서 인접한 LBA 주소의 데이터의 삭제를 장치에 통보할 수 있다.
NTFS 메타데이터 해석
트림(trim) 명령과 같은 호스트 파일 시스템 명령이 사용될 수 없다면, LBA 할당 상태는 볼륨에 모든 클러스터의 할당 상태의 비트맵을 포함하는 NTSF에 의해 기록된 $bitmap 시스템 파일에 정보 변화를 추적함으로써 모니터될 수 있다. 개인용 컴퓨터(PC)에서 $bitmap 변화를 추적하는 일례를 이제 논한다.
파티션 부트 섹터
파티션 부트 섹터는 파티션 상에 섹터 0이다. 바이트 오프셋 0x30에서 필드는 표 3에 예에서와 같이, 마스터 파일 테이블(MFT)의 시작에 대한 논리 클러스터 수를 포함한다.
특정 부트 섹터 내 바이트 오프셋
MFT 클러스터
0 x 30 0 x 31 0 x 32 0 x 333 0 x 34 0 x 35 0 x 36 0 x 37
D2 4F 0C 00 00 00 00 00 0 x C4FD2
MFT 에 $ bitmap 기록
$bitmap 명칭의 시스템 파일은 볼륨에 모든 클러스터의 할당 상태의 비트맵을 포함한다. $bitmap 파일에 대한 기록은 MFT에서 기록번호 6이다. MFT 기록은 1024 바이트의 길이를 갖는다. 그러므로 $bitmap 기록은 MFT의 시작에 관하여 십진수 12 섹터의 오프셋을 갖는다. 위의 예에서, MFT는 클러스터 0xC4FD2에서, 또는 십진수로 806866에서 시작하며, 이것은 십진수로 섹터 6454928이다. 그러므로, $bitmap 파일 기록은 십진수로 섹터 6454940에서 시작한다.
다음 정보는 $bitmap 기록 내에 존재한다(기술되는 예에서). 바이트 오프셋 0x141에서 0x142에 필드는 표 4의 예에서와 같이 $bitmap 파일에 대한 제 1 데이터 속성의 클러스터의 길이를 포함한다.
$bitmap 기록 내 바이트 오프셋 데이터 속성 길이
0 x 141 0 x 142
FB 00 0 x FB
바이트 오프셋 0x143 내지 0x145에 필드는 표 5의 예에서와 같이 $bitmap 파일에 대한 제 1 데이터 속성의 시작의 클러스터 수를 포함한다.
$bitmap 기록 내 바이트 오프셋 데이터 속성 클러스터
0 x 143 00 x 144 0 x 145
49 82 3E 0 x 3E9249
바이트 0x147 내지 0x148에 필드는 표 6의 예에서와 같이 $bitmap 파일에 대한 제 2 데이터 속성의 클러스터의 길이를 포함한다.
$bitmap 기록 내 바이트 오프셋 데이터 속성 길이
0 x 147 0 x 148
C4 00 0 x C4
바이트 0x149 내지 0x14B에 필드는 표 7의 예에서와 같이 $bitmap 파일에 대한 제 1 데이터 속성과 제 2 데이터 속성의 시작 사이에 클러스터의 수를 포함한다.
$bitmap 기록 내 바이트 오프셋 데이터 속성 클러스터 점프
0 x 149 0 x 14A 0 x 14B
35 82 3E 0 x 3E8235
$ bitmap 파일에 대한 데이터 속성
$bitmap 파일에 대한 데이터 속성 내에 섹터는 논리 클러스터 번호 순으로 볼륨 내 모든 클러스터의 할당 상태의 비트맵을 포함한다. '1'은 클러스터가 파일 시스템에 의해 데이터 저장에 할당되었음을 나타내며, '0'은 클러스터가 비어있음을 나타낸다. 비트맵에 각 바이트는 8 클러스터의 논리 범위, 또는 십진수로 64개의 섹터의 논리 범위에 관계된다. 비트맵에 각 섹터는 0x1000(십진수로 4096) 클러스터, 또는 0x8000(십진수로 32768) 섹터의 논리 범위에 관계된다. 비트맵에 각 클러스터는 0x8000(십진수로 32768) 클러스터, 또는 0x40000(십진수로 262144) 섹터의 논리 범위에 관계된다.
클러스터 할당 상태 유지
호스트로부터 기록 동작이 $bitmap 파일에 대한 데이터 속성 내에 섹터에 기록되는 것일 때는 언제나, 섹터의 이전 버전이 저장 장치로부터 판독되어야 하며 이의 데이터는 호스트에 의해 지금 기록된 데이터와 비교된다. "1" 상태에서 "0" 상태로 토글된 모든 비트가 확인되어야 하며, 호스트에 의해 할당해제된 클러스터의 대응 논리 주소가 판정되어야 한다. 제안된 트림 명령과 같은 명령, 또는 NTFS 메타데이터 추적이 호스트에 의해 클러스터가 할당해제되었음을 나타낼 때는 언제나, 저장 주소 테이블(SAT)은 지정된 클러스터에 대한 주소의 할당해제를 기록하기 위해 업데이트되어야 한다.
DLBA 런에 LBA 주소의 전체 블록의 SAT 매핑
도 17에 도시된 DLBA 주소의 런에 단지 유효한 호스트 LBA 런의 매핑과는 반대로, SAT를 생성하는 대안적 방법이 도 31 및 도 32에 도시되었는데, 여기에서 LBA 주소가 유효 데이터와 연관되었는지에 관계없이 한 메가블록의 LBA 주소의 모든 LBA 주소가 매핑된다. 유효 데이터와 연관된 LBA 주소의 각 런마다 SAT 내 별도의 LBA 엔트리를 생성하는 대신에, 각 LBA 주소 메가블록이 SAT 상에 단일 엔트리가 되도록, LBA 주소의 메가블록이 SAT에서 매핑될 수 있다.
도 31을 참조하면, DLBA 공간에 메가블록(3102)이 도시되었는데 단일의 연속한 LBA 런이 메가블록에 DLBA 공간에 매핑된 것이 도시되었다. 도시를 간단하게 하기 위해서, 메가블록(3102)은 제 1 메가페이지(3104)의 시작부분(뱅크1 및 뱅크2의 P1)에 폐용 데이터를 포함한 것으로 가정되었다. 연속한 LBA 주소 런(도 32 참조)은, 앞에서 기술된 바와 같이 뱅크당 한 메타페이지씩 모든 뱅크에 걸쳐 LBA 런을 "스트라이프(stripe)"하는 메가페이지 순서로, 메타페이지 P1의 뱅크3에서 시작하여 메타페이지 P3에 뱅크3까지 DLBA 주소에 매핑된다. 도 31에서 나머지 메가블록은 폐용 데이터를 포함한다. 도시된 바와 같이, 각 뱅크는 연속한 LBA 주소의 각각의 연속한 메가페이지를 따라 (이 도시에선 수평) 메가페이지 기록 알고리즘 때문에 각 뱅크에 DLBA 런의 메타페이지 사이에 LBA 주소에서 불연속한, 수직으로 도시된 DLBA 런(DLBA 런(B1 ~ B4)을 포함한다. 도 32을 참조하면, LBA 주소공간(3202)의 메가블록은 메타페이지에 의해 분할되고 DLBA 런이라 표기된 연속한 LBA 런(3204), 도 31에 도시된 DLBA 런 내의 페이지를 예시한다. 이에 따라 LBA 런(3204) 내에 제 1 메타페이지는 DLBA 런(B1), 제 1 메타페이지(뱅크3)에 매핑되고, 이어서 LBA 런(3204)의 다음 메타페이지는 DLBA 런(B2), 페이지 1(뱅크4)에 매핑된다, 등등.
도 32에 도시된 바와 같이, LBA 주소 공간에서 완전한 LBA 주소 메가블록은 SAT에 단일 LBA 엔트리(3206)로서 기록될 수 있다. 이 구현에서 LBA 엔트리(3206)는 LBA 주소 메가블록이 매핑되는 DLBA 런의 수와 동일 SAT 페이지 내 제 1 DLBA 엔트리에의 포인터를 리스트한다. LBA 주소 메가블록은 메모리 장치에 저장된 데이터의 단편화 정도에 따라, LBA 주소 메가블록 내 클러스터의 최대수에 매핑될 수 있다.
도 32의 예에서, LBA 주소 메가블록은 6개의 LBA 런을 포함하는데, 여기서 4개의 런은 유효 데이터(LBA 오프셋(L1 ~ L9)에서 시작하는 어둡게 표시한 부분)에 할당되고 2개의 런은 비할당된 주소 런(LBA 오프셋(0 및 L10)에서 시작하는 백색의 부분)이다. LBA 주소 메가블록에 대한 대응하는 DLBA 엔트리(3210)는 DLBA 블록으로 표기한 DLBA 런의 DLBA 주소, 주소 오프셋(P1 ~ P3) 및 길이를 대응하는 LBA 오프셋에 관계시킨다. 유효 데이터에 관계된 LBA 런만이 기록되는 것으로, 각 LBA 런에 대해 별도의 LBA 엔트리를 기록하는 도 17을 참조로 위에서 논한 SAT의 버전과는 달리, LBA 주소 메가블록 내 모든 LBA 런이 기록된다. 이에 따라, 유효 데이터에 할당되는 LBA 런 뿐만 아니라, 유효 데이터에 현재 할당되지 않은 LBA 주소 블록(480) 내 LBA 런이 기록된다. 도 32에 도시된 SAT 페이지의 DLBA 엔트리 부분(3210)에서, 비할당된 하나의 세트의 LBA 주소의 시작부분을 표시하는 LBA 오프셋은 DLBA 주소 공간에서 "FFFFFFFF" 값과 쌍이 된다. 이것은 비할당된 주소에 대한 유보 값을 나타내는 내정된 16진수 수를 나타낸다. 도 22을 참조로 논한 기본 SAT 계층 뿐만 아니라, 앞에서 기술된 동일한 전체 SAT 구조 및 기능은 LBA 주소 메가블록 매핑 구현에 적용하나, SAT 페이지는 개개의 LBA 런 대 DLBA 런 정보가 아니라, LBA 주소 메가블록 내 DLBA 런 매핑 정보를 나타낸다. 또한, SAT 색인 페이지는 이 구현에서 LBA 주소 블록 대 SAT 페이지 매핑 정보를 저장한다.
도 33을 참조하면, 샘플 LBA 주소 형식(3300)이 도시되었다. 주소 형식(3300)은 길이가 32비트인 것으로 도시되었는데 다수의 주소 길이 중 어느 것이 사용될 수 있다. 최하위 비트는 메모리 시스템(102) 내 제어기(108)에 의해서 메타페이지(3302) 내 LBA 주소에 관계된 것으로 취급될 수 있고 주소에서 다음 비트는 뱅크 식별자(3304)를 나타내는 것으로서 취급될 수 있다. 4개의 뱅크(107A ~ 107D)가 있는 위의 예에서, 이것은 2비트 주소일 수 있다. 다음 비트는 데이터가 연관될 메가블록(3306) 내 페이지로서 취급될 수 있고 최종 비트는 메가블록 식별자(3308)로서 해석될 수 있다. 일 실시예에서, 제어기는 여기에서 논한 메가블록 기록 알고리즘이 각 뱅크에서 LBA 주소가 인터리빙되게 할지라도, DLBA 주소는 뱅크에서 연속할 수 있게 뱅크 식별자(3304)의 비트를 스트립-오프(strip-off)할 수 있다. 이것은 도 31 및 메가블록 기록 알고리즘을 참조하여 더 잘 이해될 수 있다. 호스트 데이터가 메모리 시스템(102)에 기록되고, 현재 기록 메가블록의 제 1 가용부분이 뱅크3의 메타페이지(P1)일 때, 제어기(108)는 주소가 P1, 뱅크 3에 재매핑되고 이어서 P1, 뱅크 3이 완전히 기록된 후에 P1, 뱅크 4에 재매핑될 때 뱅크 식별자 비트를 제거할 것이다. 기록 알고리즘이 인접하게 메가블록의 다음 메가페이지에 걸쳐(뱅크 순서로, 뱅크1 ~ 뱅크 4 각각에서 P2) 호스트 데이터를 계속하여 스트라이프할 때, 동일한 주소 절차가 적용될 수 있다. 이것은 뱅크에서 좌에서 우로 그리고 수직 아래로 각각의 연속한 페이지를 볼 때 각 뱅크에서 연속된 DLBA 주소 지정이 되게 할 것이다. 도 17 및 도 32의 SAT 버전은 데이터가 메모리 장치로부터 정확하게 판독될 수 있게 뱅크 정보를 추적할 것이지만, 각 뱅크에서 호스트 데이터에 플러시 동작은 각 블록 및 뱅크에서 연속된 DLBA 주소로 관리될 수 있다.
위에 논의는 호스트 LBA 주소 공간에서 DLBA 주소 공간으로(저장 LBA 주소 공간이라고도 함) 논리 대 논리 매핑이 요망되는 저장 주소 재매핑의 구현에 주로 중점을 두었다. 이 논리 대 논리 매핑은 도 11 및 도 12의 구성에서 이용될 수 있다. DLBA 주소에 재매핑된 호스트 데이터 및 저장 장치에서 발생된 데이터(예를 들어, SAT 및 BIT)는 현재 DLBA 주소 공간에서 메타블록에 대응하는 각 뱅크에서 메타블록의 물리 주소에 기록된다. 여기에서 그룹 주소 테이블 또는 GAP라고 하는 이 테이블은 DLBA 주소공간에 매 논리 블록마다 한 엔트리와 한 메타블록의 물리 블록 개체성을 갖는 고정된 크기의 테이블일 수 있다. 일 실시예에서, 각 뱅크(107A ~ 107D)는 자신의 GAT를 갖고 있어 각 뱅크에서 물리 블록에 논리 블록 매핑이 추적될 수 있다.
논리 대 물리 매핑
위에서 언급된 바와 같이, 도 10의 실시예에서, 저장 주소 재매핑(STAR) 알고리즘은 각각 도 11 및 도 12에서와 같이 메모리 장치 또는 호스트 상에 별도의 애플리케이션이 아니라 메모리 장치의 메모리 관리자에 탑재된다. 제어기(108)는 호스트 데이터를 호스트 LBA에서 메모리 시스템(102) 내 각 뱅크(107A ~ 107D)에 물리 주소에 직접 매핑한다. 도 10의 실시예에서, 위에서 논한 DLBA 주소는 중간 DLBA(저장 LBA) 주소가 아니라 물리 메모리 주소로 대체되고, SAT에서 DLBA 런은 데이터 런으로 대체된다. 물리 블록의 각 뱅크에 대해 독립적 핑크 블록 선택 및 플러싱를 행하는 바와 같이, 각 뱅크를 가로지르는 메가페이지를 따른 "스트라이프"에서 물리 주소의 메가블록에 호스트 데이터의 기록은 동일한 그대로이다. 도 10의 논리 대 물리 실시예는 전에 논의된 DLBA 주소 및 DLBA 런 대신에 물리 주소 및 물리 데이터 런에 관하여 동일한 SAT 및 BIT(또는 제어) 메타블록 구조를 포함한다. 도 10의 배열에서 저장 리매핑 알고리즘은 메모리 시스템(102) 또는 호스트(100)(각각 도 11 및 도 12) 상에 별도의 애플리케이션이 아니라 메모리 시스템(102) 내 메모리 제어기(108)의 일부이다.
종래의 논리 대 물리 블록 매핑에서, 데이터 바디는 호스트 데이터의 단편이 한 블록의 논리 주소와 격리시켜 기록될 때마다 가비지 수거 동작 동안 재배치되어야 한다. 저장 주소 재매핑 알고리즘에서, 데이터는 블록(논리 또는 물리)이 채워질 때까지 항시 순차적 주소에 기록되며 따라서 가비지 수거는 필요하지 않다. 여기에 개시된 저장 주소 재매핑에서 플러시 동작은 기록 프로세스에 의해 시작될 뿐만 아니라 데이터가 폐용이 되는 것에 응하여 시작된다. 이에 따라, 데이터 재배치 오버헤드는 여기에 기술된 저장 주소 재매핑 기능을 갖는 시스템에선 낮을 것이다. 플러시 동작이 최소량 또는 적어도 임계량 미만의 유효 데이터를 갖는 핑크 블록에 치우친 것과 개별 뱅크가 독립적으로 플러싱될 수 있는 것과의 조합은 재배치될 필요가 있는 유효 데이터량 및 연관된 오버헤드를 더 감소시킬 수 있게 할 수 있다.
짧게 발현된 데이터를 장치의 LBA 주소 공간 내 관계가 없는 영역에 기록할 필요성이 있을 것이 특징인 랜덤 기록 애플리케이션에서 메모리 시스템의 성능을 증가시킬 수 있고, 개인용 컴퓨터에서 고체 상태 디스크 애플리케이션에서 행해질 수 있는 것인 다중 뱅크 메모리에서의 저장 주소 재매핑을 위한 시스템 및 방법이 기술되었다. 개시된 저장 주소 재매핑의 어떤 실시예에서, 호스트 데이터는 호스트에 의해 할당된 제 1 논리 주소로부터 제 2 논리 주소 공간 내 인접한 논리 주소의 메타블록을 갖는 메가블록에 매핑된다. 완전히 프로그램된 다수 블록의 주소와 연관된 데이터가 폐용이 되었을 때, 각 뱅크마다 독립적으로, 최소량의 유효 데이터를 갖거나 임계량 미만의 유효 데이터를 갖는 일 그룹의 핑크 블록으로부터 한 핑크 블록을 선택하고 더 많은 데이터를 기록하는데 사용을 위해 이들 블록을 비어두기 위해서 이들 블록 내 유효 데이터를 재배치하는 플러시 절차가 개시된다. 뱅크에서 핑크 블록 내 유효 데이터는, 호스트에 의해 할당된 논리 주소와는 무관하게, 선택된 핑크 블록 내 발생된 순서로 동일 뱅크 내의 재배치 블록 내에, 인접되게 기록된다. 이렇게 하여, 호스트에 의해 할당된 논리 주소 런을 의도적으로 합체하지 않음으로써 오버헤드가 감소될 수 있다. 호스트에 의해 할당된 논리 주소와 제 2 논리 주소 및 관계된 뱅크 사이에 매핑, 및 후속하여 플러싱에 기인한 매핑에서의 변경을 추적하기 위해서 저장 주소 테이블이 사용된다. 호스트에 의해 할당되는 논리 주소가 직접 물리 주소에 매핑되는 실시예에서, 저장 주소 테이블은 이 관계를 추적하며 블록 저장 테이블은 예를 들어 특정 블록이 유효 및 폐용 데이터 모두를 갖는 핑크 블록인지 아니면 미기록 용량만을 갖는 화이트 블록인지를 추적하기 위해 유지된다.
따라서, 전술한 상세한 설명은 제한이 아니라 예시로서 간주되며 이 발명의 정신 및 범위를 정의하기 위한 것은 모든 등가물들을 포함해서 다음의 청구항임이 이해될 것이다.

Claims (18)

  1. 호스트 시스템과 재프로그래밍 가능한 비휘발성 대량 저장 시스템 사이에서 데이터를 전송하는 방법으로서,
    상기 대량 저장 시스템은 복수의 메모리 셀 뱅크를 갖고, 상기 복수의 뱅크 각각은 함께 소거될 수 있는 메모리 셀 블록으로 배열되어 있는, 데이터 전송 방법에 있어서,
    상기 호스트 시스템에 의해 할당된 호스트 논리 블록 주소(LBA) 주소와 연관된 데이터를 수신하는 단계와,
    상기 호스트 LBA 주소와 연관된 데이터를 주소 지정하기 위해 인접한 저장 LBA 주소의 메가블록을 할당하는 단계로서, 상기 인접한 저장 LBA 주소의 메가블록은 상기 복수의 메모리 셀 뱅크의 각 뱅크에서 적어도 하나의 메모리 셀 블록을 포함하고 할당시 미기록 용량만을 주소 지정하는, 상기 단계와,
    상기 수신된 데이터에 대한 상기 호스트 LBA 주소 각각을 인접한 저장 LBA 주소의 메가블록에 재매핑하는 단계로서, 각각의 저장 LBA 주소는 상기 호스트 LBA 주소에 관계없이 상기 수신된 데이터가 수신되는 순서로 상기 수신된 데이터에 순차적으로 인접하게 할당되는, 상기 단계와,
    상기 복수의 뱅크 중 제 2 뱅크에서 하나의 블록을 플러싱하는 것과 무관하게 상기 복수의 뱅크 중 제 1 뱅크에서 하나의 블록을 플러싱하는 단계로서, 상기 제 1 뱅크에서 블록을 플러싱하는 것은, 상기 제 1 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를 제 1 재배치 블록 내 인접한 저장 LBA 주소로 재할당하는 단계를 포함하고, 상기 제 2 뱅크에서 블록을 플러싱하는 것은, 상기 제 2 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를 제 2 재배치 블록 내 인접한 저장 LBA 주소로 재할당하는 단계를 포함하는, 상기 단계를
    포함하는, 데이터 전송 방법.
  2. 제 1항에 있어서, 상기 제 1 뱅크에서 블록을 플러싱하는 단계는 상기 제 1 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를 상기 제 1 뱅크 내의 재배치 블록에만 재할당하는 단계를 더 포함하고, 상기 제 2 블록을 플러싱하는 단계는 상기 제 2 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를 상기 제 2 뱅크 내의 재배치 블록에만 재할당하는 단계를 포함하는, 데이터 전송 방법.
  3. 제 2항에 있어서, 상기 제 1 뱅크에서 하나의 블록의 인접한 저장 LBA 주소를 새로운 재배치 블록으로 할당하는 단계를 더 포함하고, 인접한 저장 LBA 주소의 상기 새로운 재배치 블록은 할당시 미기록 용량에만 연관되며, 상기 새로운 재배치 블록의 할당은 상기 제 1 뱅크에서 상기 재배치 블록에 저장 LBA 주소를 완전히 할당할 때만 이루어지는, 데이터 전송 방법.
  4. 제 1항에 있어서, 상기 수신된 데이터에 대한 호스트 LBA 주소 각각을 상기 인접한 저장 LBA 주소의 메가블록에 재매핑하는 단계는 상기 메가블록에 대해 메가페이지 순서로 저장 LBA 주소를 호스트 LBA 주소와 연관시키는 단계를 포함하고, 메가페이지는 상기 메가블록의 각 블록에 메타페이지를 포함하는, 데이터 전송 방법.
  5. 제 1항에 있어서, 복수의 뱅크 각각에 대한 저장 LBA 주소에 호스트 LBA 주소의 관계를 확인하는 상관 정보를 단일 저장 주소 테이블에 기록하는 단계를 더 포함하는, 데이터 전송 방법.
  6. 제 5항에 있어서, 상기 상관 정보는 유효 데이터와 연관된 호스트 LBA 주소의 런과 호스트 LBA 주소의 런에 매핑된 저장 LBA 주소만을 포함하는, 데이터 전송 방법.
  7. 제 5항에 있어서, 상기 상관 정보는 호스트 LBA 주소의 메가블록 내 모든 호스트 LBA 주소에 대한 매핑 정보를 포함하는, 데이터 전송 방법.
  8. 제 5항에 있어서, 상기 단일 저장 주소 테이블은 적어도 하나의 저장 주소 테이블 블록을 포함하고, 이전 저장 주소 테이블 기록 블록이 상관 정보에 완전히 할당되었을 때 할당시 미기록 용량에만 연관된 새로운 저장 주소 테이블 기록 블록을 할당하는 단계를 더 포함하는, 데이터 전송 방법.
  9. 제 8항에 있어서, 상기 이전 저장 주소 테이블 기록 블록을 포함하는 뱅크 외의 뱅크에 상기 새로운 저장 주소 테이블 기록 블록을 할당하는 단계를 더 포함하는, 데이터 전송 방법.
  10. 호스트 시스템과 재프로그래밍 가능한 비휘발성 대량 저장 시스템 사이에서 데이터를 전송하는 방법으로서,
    상기 대량 저장 시스템은 복수의 메모리 셀 뱅크를 갖고, 상기 복수의 뱅크 각각은 함께 소거될 수 있는 메모리 셀의 블록으로 배열되어 있는, 데이터 전송 방법에 있어서,
    수신된 호스트 데이터에 대한 호스트 논리 블록 주소(LBA) 주소를 저장 LBA 주소의 메가블록에 재매핑하는 단계로서, 상기 저장 LBA 주소의 메가블록은 상기 복수의 메모리 셀 뱅크의 각 뱅크에 적어도 하나의 메모리 셀 블록을 포함하고, 수신된 데이터에 대한 호스트 LBA 주소는 상기 메가블록 내에서 메가페이지 순서로 저장 LBA 주소에 인접하게 할당되며, 각각의 메가페이지는 상기 호스트 LBA 주소에 관계없이 상기 수신된 데이터가 수신되는 순서로, 상기 메가블록의 블록 각각에 메타페이지를 포함하는, 상기 단계와,
    상기 복수의 뱅크의 각 뱅크에서 플러시 동작을 독립적으로 수행하는 단계로서, 플러시 동작은 특정 뱅크에서 블록의 저장 LBA 주소로부터 유효 데이터에 대한 호스트 LBA 주소를, 상기 특정 뱅크 내의 재배치 블록에서 인접한 저장 LBA 주소에 재할당하는 단계를 포함하는, 상기 단계를
    포함하는, 데이터 전송 방법.
  11. 제 10항에 있어서,
    상기 복수의 뱅크의 각 뱅크에서 핑크 블록을 확인하는 단계로서, 각각의 핑크 블록은 유효 데이터 및 폐용 데이터 모두와 연관된 완전히 기록된 LBA 주소의 블록을 포함하는, 상기 단계와,
    각 뱅크에 대해서, 다음 플러시 동작에 대해 상기 뱅크에서 확인된 상기 핑크 블록 중 하나를 독립적으로 선택하는 단계를
    더 포함하는, 데이터 전송 방법.
  12. 제 11항에 있어서, 상기 복수의 뱅크의 각 뱅크에서 블록 정보 테이블을 유지하는 단계로서, 뱅크에 대한 상기 블록 정보 테이블은 상기 뱅크에서 핑크 블록의 리스트를 포함하는, 상기 단계를 더 포함하는, 데이터 전송 방법.
  13. 제 10항에 있어서, 플러시 동작을 독립적으로 수행하는 단계는 상기 복수의 뱅크 중 하나의 뱅크에서 제 1 임계값과 상기 복수의 뱅크 중 제 2 뱅크에서 제 2 임계값에 기초하여 플러시 동작을 개시하는 단계를 포함하는, 데이터 전송 방법.
  14. 제 10항에 있어서, 상기 복수의 뱅크의 각 뱅크에 대한 저장 LBA 주소에 호스트 LBA 주소의 관계를 확인하는 상관 정보를 단일 저장 주소 테이블에 기록하는 단계를 더 포함하는, 데이터 전송 방법.
  15. 제 14항에 있어서, 상기 상관 정보는 유효 데이터와 연관된 호스트 LBA 주소의 런과 호스트 LBA 주소의 상기 런에 매핑되는 저장 LBA 주소만을 포함하는, 데이터 전송 방법.
  16. 제 14항에 있어서, 상기 상관 정보는 호스트 LBA 주소의 메가블록에 모든 호스트 LBA 주소에 대한 정보를 매핑하는 단계를 포함하는, 데이터 전송 방법.
  17. 제 14항에 있어서, 상기 단일 저장 주소 테이블은 적어도 하나의 저장 주소 테이블 블록을 포함하고, 이전 저장 주소 테이블 기록 블록이 상관 정보에 완전히 할당되었을 때 할당시 미기록 용량에만 연관된 새로운 저장 주소 테이블 기록 블록을 할당하는 단계를 더 포함하는, 데이터 전송 방법.
  18. 제 17항에 있어서, 상기 이전 저장 주소 테이블 기록 블록을 포함하는 뱅크 외의 뱅크에 새로운 저장 주소 테이블 기록 블록을 할당하는 단계를 더 포함하는, 데이터 전송 방법.
KR1020107026324A 2008-04-25 2009-04-10 다중 뱅크 메모리 장치에 대한 저장 주소 재매핑을 위한 방법과 시스템 KR20100139149A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/110,050 US20090271562A1 (en) 2008-04-25 2008-04-25 Method and system for storage address re-mapping for a multi-bank memory device
US12/110,050 2008-04-25

Publications (1)

Publication Number Publication Date
KR20100139149A true KR20100139149A (ko) 2010-12-31

Family

ID=40792849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107026324A KR20100139149A (ko) 2008-04-25 2009-04-10 다중 뱅크 메모리 장치에 대한 저장 주소 재매핑을 위한 방법과 시스템

Country Status (6)

Country Link
US (2) US20090271562A1 (ko)
EP (1) EP2286341B1 (ko)
JP (1) JP2011519095A (ko)
KR (1) KR20100139149A (ko)
TW (1) TWI437441B (ko)
WO (1) WO2009131851A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170109138A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
KR20200079729A (ko) * 2018-12-26 2020-07-06 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
US11126370B2 (en) 2018-03-12 2021-09-21 SK Hynix Inc. Memory controller and operating method thereof
WO2022107920A1 (ko) * 2020-11-20 2022-05-27 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법

Families Citing this family (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101083673B1 (ko) * 2008-10-01 2011-11-16 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
US8239614B2 (en) 2009-03-04 2012-08-07 Micron Technology, Inc. Memory super block allocation
US9152564B2 (en) 2010-05-18 2015-10-06 Intel Corporation Early cache eviction in a multi-flow network processor architecture
US8873550B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Task queuing in a multi-flow network processor architecture
US8321385B2 (en) * 2010-03-12 2012-11-27 Lsi Corporation Hash processing in a network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8874878B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
US8705531B2 (en) 2010-05-18 2014-04-22 Lsi Corporation Multicast address learning in an input/output adapter of a network processor
US8949578B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Sharing of internal pipeline resources of a network processor with external devices
US8515965B2 (en) 2010-05-18 2013-08-20 Lsi Corporation Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8910168B2 (en) 2009-04-27 2014-12-09 Lsi Corporation Task backpressure and deletion in a multi-flow network processor architecture
US9727508B2 (en) 2009-04-27 2017-08-08 Intel Corporation Address learning and aging for network bridging in a network processor
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8516264B2 (en) * 2009-10-09 2013-08-20 Lsi Corporation Interlocking plain text passwords to data encryption keys
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8296480B2 (en) * 2009-11-30 2012-10-23 Lsi Corporation Context execution in a media controller architecture
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US20100318720A1 (en) * 2009-06-16 2010-12-16 Saranyan Rajagopalan Multi-Bank Non-Volatile Memory System with Satellite File System
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
US8949515B2 (en) 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller
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
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
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
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
US9563397B1 (en) 2010-05-05 2017-02-07 Western Digital Technologies, Inc. Disk drive using non-volatile cache when garbage collecting log structured writes
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
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9146875B1 (en) 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US8683295B1 (en) 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US8825976B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory
US8825977B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive writing copy of data to disk when non-volatile semiconductor memory nears end of life
US8670205B1 (en) 2010-09-29 2014-03-11 Western Digital Technologies, Inc. Hybrid drive changing power mode of disk channel when frequency of write data exceeds a threshold
US8699171B1 (en) 2010-09-30 2014-04-15 Western Digital Technologies, Inc. Disk drive selecting head for write operation based on environmental condition
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8612798B1 (en) 2010-10-21 2013-12-17 Western Digital Technologies, Inc. Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails
US8427771B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive storing copy of data in non-volatile semiconductor memory for suspect disk data sectors
US8429343B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk
US8560759B1 (en) 2010-10-25 2013-10-15 Western Digital Technologies, Inc. Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8458133B2 (en) 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
WO2012109078A2 (en) * 2011-02-08 2012-08-16 Lsi Corporation Selective enablement of operating modes or features via host transfer rate detection
US9021215B2 (en) 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
TWI454908B (zh) * 2011-03-28 2014-10-01 Phison Electronics Corp 記憶體組態方法、記憶體控制器與記憶體儲存裝置
US9361044B2 (en) 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
US9311229B2 (en) * 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
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
JP5579135B2 (ja) * 2011-07-29 2014-08-27 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8930614B2 (en) 2011-07-29 2015-01-06 Kabushiki Kaisha Toshiba Data storage apparatus and method for compaction processing
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
WO2013048483A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Platform storage hierarchy with non-volatile random access memory having configurable partitions
US9430372B2 (en) 2011-09-30 2016-08-30 Intel Corporation Apparatus, method and system that stores bios in non-volatile random access memory
US9378133B2 (en) 2011-09-30 2016-06-28 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
EP3346386B1 (en) 2011-09-30 2020-01-22 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8977804B1 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8700961B2 (en) 2011-12-20 2014-04-15 Sandisk Technologies Inc. Controller and method for virtual LUN assignment for improved memory bank mapping
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US8996839B1 (en) 2012-01-23 2015-03-31 Western Digital Technologies, Inc. Data storage device aligning partition to boundary of sector when partition offset correlates with offset of write commands
US9063838B1 (en) * 2012-01-23 2015-06-23 Western Digital Technologies, Inc. Data storage device shifting data chunks of alignment zone relative to sector boundaries
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
TW201413450A (zh) * 2012-09-25 2014-04-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
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
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim 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
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling 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
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
CN104598386B (zh) * 2013-10-31 2018-03-27 Lsi公司 通过追踪和利用二级映射索引重复利用固态驱动器块
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
DE102014100800A1 (de) * 2014-01-24 2015-07-30 Hyperstone Gmbh Verfahren zur zuverlässigen Adressierung eines großen Flash-Speichers
KR20160015784A (ko) * 2014-07-31 2016-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9720596B1 (en) * 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
US9940259B2 (en) * 2015-01-16 2018-04-10 International Business Machines Corporation Virtual disk alignment access
KR102391678B1 (ko) 2015-01-22 2022-04-29 삼성전자주식회사 저장 장치 및 그것의 서스테인드 상태 가속 방법
US9720762B2 (en) * 2015-03-04 2017-08-01 Unisys Corporation Clearing bank descriptors for reuse by a gate bank
DE102015204824A1 (de) * 2015-03-17 2016-09-22 Bundesdruckerei Gmbh Verfahren zum Speichern von Nutzerdaten in einem Dokument
CN104714894B (zh) * 2015-03-18 2017-08-11 清华大学 一种分层的基于随机映射的相变内存磨损均衡方法及系统
US9582420B2 (en) 2015-03-18 2017-02-28 International Business Machines Corporation Programmable memory mapping scheme with interleave properties
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US20170031838A1 (en) * 2015-07-28 2017-02-02 Qualcomm Incorporated Method and apparatus for using context information to protect virtual machine security
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
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
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
CN105353989B (zh) * 2015-11-19 2018-12-28 华为技术有限公司 存储数据访问方法及相关的控制器、设备、主机和系统
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
US10175889B2 (en) 2016-03-10 2019-01-08 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
KR102611292B1 (ko) 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180019419A (ko) * 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10417198B1 (en) * 2016-09-21 2019-09-17 Well Fargo Bank, N.A. Collaborative data mapping system
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
KR102520412B1 (ko) * 2018-09-19 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10817430B2 (en) * 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
CN110879687B (zh) * 2019-10-18 2021-03-16 蚂蚁区块链科技(上海)有限公司 一种基于磁盘存储的数据读取方法、装置及设备
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
US11520596B2 (en) 2020-02-26 2022-12-06 Microsoft Technology Licensing, Llc Selective boot sequence controller for resilient storage memory
KR20210120240A (ko) * 2020-03-26 2021-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
TWI748410B (zh) * 2020-04-15 2021-12-01 慧榮科技股份有限公司 用來針對非揮發性記憶體進行區塊管理的方法以及設備
US11487450B1 (en) * 2021-05-14 2022-11-01 Western Digital Technologies, Inc. Storage system and method for dynamic allocation of control blocks for improving host write and read
US11816358B2 (en) * 2021-08-24 2023-11-14 Micron Technology, Inc. Preserving application data order in memory devices
JP2023044824A (ja) * 2021-09-21 2023-04-03 キオクシア株式会社 メモリシステム
CN114333930B (zh) * 2021-12-23 2024-03-08 合肥兆芯电子有限公司 多通道存储器存储装置、控制电路单元及其数据读取方法

Family Cites Families (41)

* 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 사토 후미오 불휘발성 반도체 기억장치
DE4417907A1 (de) * 1994-05-21 1995-11-23 Hoechst Ag Verfahren zur Nachbehandlung von platten-, folien- oder bandförmigem Material, Träger aus derartigem Material und seine Verwendung für Offsetdruckplatten
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
US6898762B2 (en) * 1998-08-21 2005-05-24 United Video Properties, Inc. Client-server electronic program guide
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
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 株式会社東芝 不揮発性半導体メモリ
JP3793868B2 (ja) * 1999-11-25 2006-07-05 カシオ計算機株式会社 フラッシュメモリ管理装置及び記録媒体
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
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
KR100453053B1 (ko) * 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
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
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
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
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
JP5130646B2 (ja) * 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
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
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170109138A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
US11126370B2 (en) 2018-03-12 2021-09-21 SK Hynix Inc. Memory controller and operating method thereof
KR20200079729A (ko) * 2018-12-26 2020-07-06 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
WO2022107920A1 (ko) * 2020-11-20 2022-05-27 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법

Also Published As

Publication number Publication date
TW200951722A (en) 2009-12-16
WO2009131851A1 (en) 2009-10-29
US20090271562A1 (en) 2009-10-29
TWI437441B (zh) 2014-05-11
EP2286341B1 (en) 2015-06-03
EP2286341A1 (en) 2011-02-23
US20140068152A1 (en) 2014-03-06
JP2011519095A (ja) 2011-06-30

Similar Documents

Publication Publication Date Title
EP2286341B1 (en) Method and system for storage address re-mapping for a multi-bank memory device
US9396103B2 (en) Method and system for storage address re-mapping for a memory device
US7984084B2 (en) Non-volatile memory with scheduled reclaim operations
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US8537613B2 (en) Multi-layer memory system
US7480766B2 (en) Interfacing systems operating through a logical address space and on a direct data file basis
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7917686B2 (en) Host system with direct data file interface configurability
US20100174845A1 (en) Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US20110022778A1 (en) Garbage Collection for Solid State Disks
KR101089150B1 (ko) 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리
KR20110081150A (ko) 다중 수행 모드 메모리 시스템
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
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
KR20090108694A (ko) 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid