KR100781196B1 - 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치 - Google Patents

메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치 Download PDF

Info

Publication number
KR100781196B1
KR100781196B1 KR1020067015206A KR20067015206A KR100781196B1 KR 100781196 B1 KR100781196 B1 KR 100781196B1 KR 1020067015206 A KR1020067015206 A KR 1020067015206A KR 20067015206 A KR20067015206 A KR 20067015206A KR 100781196 B1 KR100781196 B1 KR 100781196B1
Authority
KR
South Korea
Prior art keywords
data
address
memory
logical
logical address
Prior art date
Application number
KR1020067015206A
Other languages
English (en)
Other versions
KR20060129329A (ko
Inventor
헨리 탄
텡 핀 푸
레이 추안 림
Original Assignee
트렉 2000 인터네셔널 엘티디.
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 트렉 2000 인터네셔널 엘티디. filed Critical 트렉 2000 인터네셔널 엘티디.
Priority to KR1020067015206A priority Critical patent/KR100781196B1/ko
Publication of KR20060129329A publication Critical patent/KR20060129329A/ko
Application granted granted Critical
Publication of KR100781196B1 publication Critical patent/KR100781196B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Abstract

휴대용 데이터 저장 장치는 USB 컨트롤러(2), 마스터 컨트롤 유닛(7) 및 낸드 플래시 메모리(9)를 포함한다. 상기 마스터 컨트롤 유닛(7)은 논리적 어드레스들에 라이트 될 데이터를 받고, 논리적 어드레스들로부터 데이터를 리드 하기 위한 명령을 한다. 휴대용 데이터 저장 장치는 낸드 플래시 메모리(9) 내에서 논리적 어드레스들을 물리적 어드레스들에 결합시키고, 논리적 어드레스에 상응하는 물리적 어드레스에 데이터를 라이트 하거나 물리적 어드레스로부터 데이터를 리드 하기 위해 메모리 어드레스 맵핑 테이블을 사용한다. 맵핑은 간헐적으로 변경되는데, 그래서 물리적 어드레스 영역의 다른 것들은 다른 시간에 논리적 어드레스들과 결합한다. 이것은 장치의 속도를 증가시키고, 또한 상대적으로 데이터가 자주 라이트 되는 논리적 어드레스와 영구히 결합됨으로써 어떠한 물리적 어드레스들도 빨리 소모되지 않는다는 것을 의미한다.

Description

메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장 장치{Potable Data Storage Device Using A Memory Address Mapping Table}
본 발명은 휴대용 데이터 저장 장치 및 그 장치에 쓰여 진 데이터를 저장하거나 회수하기 위한 장치의 사용 방법에 관한 것이다.
지난 수 년 동안, 플래시 메모리 장치를 포함하고 컴퓨터의 직렬 버스(serial bus)에 접속될 수 있는 데이터 저장 장치를 제공하는 것이 많은 관심을 끌어왔다. 이 분야의 주요 문서는 WO01/61692 이고, 이것은 무역시장 "썸드라이브(Thumbdrive)" 하에서 그 후 거래되는 장치를 설명한다. 이 문서에서 설명된 실시형태들 중 하나에 있어서, 장치의 하우징에 필수적인 수USB(male USB) 플러그가 컴퓨터의 암USB(female USB) 소켓에 직접 접속되므로, USB 컨트롤러의 제어 하에서 컴퓨터가 휴대용 저장 장치의 플래시 메모리 장치로 또는 그로부터 데이터를 송신할 수 있다. 이 장치에 대해 다양한 개선점들이 제안되어 왔다. 예를 들어, WO03/003282 에는 지문 센서를 구비하는 장치와, 그 장치 내에 저장된 데이터에 대한 액세스는 지문 센서가 사용자의 스캐닝된 지문을 미리 저장된 데이터와 비교하는 것에 의해 사용자 신원을 확증하는 경우에만 허용된다는 것에 대해 개시되어 있다. 이러한 양 문서들의 개시내용은 이하에서 참조로서 포함한다.
도 1은 종래의 휴대용 저장 장치의 구조를 나타낸 도면이다. 휴대용 저장 장치는 파선(dashed)으로 나타낸 하우징(housing)을 가지며, 라벨 1로 표시된다. 상기 휴대용 저장 장치는 호스트 컴퓨터(5)의 USB 인터페이스(4)(예를 들어, USB 소켓(socket))에 직접 연결되는 USB 인터페이스(3)(예를 들어, USB 플러그)를 제어하는 USB 컨트롤러(2)를 포함한다. 데이터는 상기 USB 인터페이스(3)로 전달된다. 상기 호스트 컴퓨터(5)로부터 상기 USB 인터페이스(3)로 전달된 데이터는 상기 USB 컨트롤러(2)를 통해 마스터 컨트롤 유닛(master control unit)(7)으로 전달된다.
데이터 패킷(Data packets)은 다양한 종류가 있다. 데이터 패킷은 특정한 논리적 어드레스(specific logical address)로 다수의 512 bytes의 데이터 량을 라이트(write) 하기 위한 라이트 명령(WRITE instructions)을 포함하는 라이트(WRITE) 데이터 패킷을 포함한다. 또한, 상기 데이터 패킷은 특정한 논리적 어드레스로부터 데이터를 리드(read)하기 위한 리드 명령(READ instructions)을 포함하는 리드(READ) 데이터를 포함한다. 상기 라이트 명령(WRITE instructions)은 전형적으로 데이터의 첫 부분이 라이트 되어야 하는 위치의 논리적 어드레스(logical address)와 얼마나 많은 데이터가 라이트 되는가의 지시(indication) 및 라이트 될 데이터를 포함한다. 몇 개의 데이터 패킷은 하나의 라이트 명령(WRITE instructions)과 통신한다. 유사하게, 리드 명령(READ instruction)은 리딩(reading)을 시작할 논리적 어드레스 및 얼마나 많은 메모리가 리드(read)를 시작하는 가의 지시(indication)를 지시한다.
상기 마스터 컨트롤 유닛(7)은 낸드 플래시 메모리(NAND flash memory)(9)를 제어함으로써 상기 지시들(instructions)을 실행(implement)한다. 상기 마스터 컨트롤 유닛(7)은 12로 도시한 하나 이상의 라인들에 의해 전달되는 커맨드 심볼들(command symbols)에 의해 낸드 플래시 메모리(9)를 제어한다. 전형적으로 상기 라인들(12)은 데이터가 상기 낸드 플래시 메모리(9)에 라이트될 때 라이트 신호(WRITE signal)를 보내는 라인, 상기 플래시 메모리가 상기 마스터 컨트롤 유닛(7)으로 데이터를 전달할 때 리드 신호(READ signal)를 보내는 라인, 데이터가 라이트 되어야만 하거나 리드 되어야만 하는 메모리 내의 위치를 나타내는 어드레스 신호(address signal)를 보내는 라인들 및 플래시 메모리를 전부 작동시키기 위한 특정 값을 얻어야만 하는 인에이블 신호(ENABLE signal)를 포함한다.
상기 마스터 컨트롤 유닛(7)이 상기 낸드 플래시 메모리(9)에 데이터를 저장할 필요가 있을 때, 상기 마스터 컨트롤 유닛(7)은 라이트 명령(WRITE command), 인에이블 신호(ENABLE signal) 및 어드레스가 보내지는 것과 동시에 8-비트 버스(8)를 통해 데이터를 보낸다. 상기 어드레스는 램 메모리(RAM memory) 내에 저장된 또는 상기 마스터 컨트롤 유닛(7)에 의해 액세스(access)된 맵핑(mapping)에 따라 논리적 어드레스(logical address)에 해당하는 물리적 어드레스(physical address)(예를 들어, 낸드 플래시 메모리(9) 내의 특정한 어드레스)이다. 리드 명령(READ command)에 응답하여, 데이터가 상기 장치로부터 출력될 때, 데이터는 512 bytes 패킷 내에서 상기 낸드 플래시 메모리(9)로부터 상기 8-비트 버스(8)를 통해 상기 마스터 컨트롤 유닛(7)으로 전달된다. 상기 마스터 컨트롤 유닛(7)은 상기 512 byte 패킷들을 상기 USB 컨트롤러(2)로 보내고, 상기 USB 컨트롤러(2)는 상기 USB 인터페이스(3)를 통해 상기 장치(1) 밖의 상기 호스트(5)로 상기 512 byte 패킷들을 보낸다.
종래에는 상기 장치는 상기 USB 인터페이스(3)를 통해 전원을 공급받으므로, 상기 USB 인터페이스(3)가 상기 컴퓨터의 USB 소켓으로부터 플러그가 빠졌을 때, 상기 장치의 전원은 꺼진다. 마스터 컨트롤 유닛(7)의 램(RAM) 내에 저장된 모든 데이터를 잃는다.
도 2는 상기 낸드 플래시 메모리(9)의 메모리 공간(space)을 나타낸 도면이다. 상기 장치는 각각의 "페이지(pages)"(6)(각 페이지가 2 Kbyte를 저장할 수 있는 것과 같은 다른 가능성이 존재함을 유념할 것)내에 512 byte 섹션의 데이터를 저장할 수 있도록 구성되고, 또한, 각 페이지 각각에 컨트롤 데이터(전형적으로 16 바이트까지)를 저장하는 컨트롤 데이터 저장 섹터(11)를 포함한다. 상기 데이터는 예를 들어, 각 블록(10)에 64 페이지(6)를 가지는 "블록(blocks)"(10)(예를 들어, 도 2의 각각의 로우(rows))에 배열된다.
종래의 낸드 플래시 메모리는 3가지 제한을 가진다.
1. 어떤 임의의 페이지는 데이터가 페이지에 라이트 될 수 있는 "제거된(erased)" 상태 또는 데이터가 페이지에 저장되고, 다른 데이터가 페이지에 라이트 될 수 없는 "제거되지 않은(non-erased)" 상태를 가진다. 페이지들은 단지 블록단위(block-by-block)에 기초하여 제거되지 않은 상태에서 제거된 상태로 변경될 수 있다. 예를 들어, 임의의 블록의 모든 제거되지 않은 페이지는 한번에 제거되어야만 하고 거기에 저장된 모든 데이터를 잃는다.
2. 임의의 블록 또는 페이지는 제한된 라이프-사이클을 가진다. 다시 말해서, 블록 또는 페이지는 단지 제거된 상태에서 제거되지 않은 상태로 10,000 번과 같이 제한된 회수만큼 변경할 수 있다.
3. 상기 낸드 플래시 메모리는 때때로 데이터가 신뢰할 수 없이 라이트 될 수 있는 "망가진(bad)" 블록들을 포함한다.
위에서 언급한 바와 같이, 데이터가 라이트 되거나 리드되는 상기 낸드 플래시 메모리(9) 내의 어드레스는 상기 USB 인터페이스(3)를 통해 받는 데이터 패킷 내에서 인코드되는 논리적 어드레스에 의해 결정된다. 종래의 마스터 컨트롤 유닛은 논리적 어드레스들 공간 내의 어드레스들과 더티(dirty) 테이블(예를 들어 메모리 내에 있는 "물리적 어드레스") 내에 없는 메모리 소자의 블록들 내에 있는 물리적 메모리 공간 내의 위치들 사이의 맴핑을 저장하는 테이블에 액세스(access) 한다. 특히, 각 블록은 페이지들의 수와 동일한 수의 어드레스들을 가지는 논리적 어드레스 공간의 각각의 영역에 맵핑된다. 이 맵핑은 고정된다. 따라서, 상기 망가진 블록들은 어떠한 논리적 어드레스들과 결합되지 않는다.
망가진 불록들과는 별개로, 상기 논리적 어드레스들과 결합되지 않는 다른 블록들이 있다. 이것들을 휴대용 저장 장치가 필요로 하는 다른 데이터를 저장하기 위해 사용되는 "예약된(reserved)" 블록들이다. 예를 들어, 상기 더티(dirty) 어드레스 테이블은 그 자체로 상기 예약된 블록들에 저장된다.
상기 마스터 컨트롤 유닛(7)은 제거된 상태 또는 제거되지 않은 상태의 블록들 각각이 얼마나 많이 있는지 여부를 지시하는 블록 할당 테이블(block allocation table)을 포함하는 파일 관리 시스템(file management system)을 포함한다. 상기 마스터 컨트롤 유닛(7)은 상기 블록들 중의 하나 안에 있는 메모리 내의 한 위치에 라이트 되는 데이터를 받을 때, 상기 마스터 컨트롤 유닛(7)은 상기 블록이 제거된 상태인지 여부를 알기 위해 상기 블록 할당 테이블을 이용한다. 만약, 상기 블록이 제거되지 않은 상태이라면, 그것은 전통적으로 다른 위치에 오버라이트 되지 않는 블록에 어떤 데이터를 복사하고, 그 블록을 제거하며, 그리고 메모리에 저장될 새로운 데이터와 다른 위치에 복사된 상기 데이터 둘을 상기 블록에 다시 라이트 한다.
본 발명은 새롭고 유용한 휴대용 데이터 저장 장치를 제공하는 것을 목적으로 한다.
일반적인 용어로서, 본 발명은 논리적 어드레스 공간의 영역들과 물리적인 메모리 공간 안의 영역들 사이의 맴핑이 장치가 동작되는 동안 변화하는 것을 제안한다. 다시 말해, 논리적 어드레스 영역들과 물리적 메모리 영역들 사이의 일대일 매핑이 유지되지만, 이러한 맵핑은 시간 이상으로 변화한다.
본 발명은 많은 이점이 있다.
먼저, 본 발명은 일반적으로 호스트 컴퓨터상에서 시스템을 종래의 동작에 의해 생성된 논리적 어드레스들이 통계적으로 서로 연관되는 경향이 있고, 이것은 논리적 어드레스들이 물리적 어드레스와 고정된 관계가 있다면, 몇몇 물리적 어드레스들이 다른 것들보다 더 자주 사용되고 따라서 빨리 손상된다는 것을 의미한다.
나아가, 논리적 및 물리적 어드레스들 사이의 관계를 변화시킬 수 있다는 것은 데이터를 라이트 하기 위해 필요한 라이트 동작의 수가 줄어든다는 것을 의미한다. 필수적으로, 제안된 논리적 및 물리적 어드레스들의 맵핑에 따라 데이터를 제거되지 않은 상태의 페이지에 라이트 하라는 명령을 받았을 때, 논리적 및 물리적 어드레스들의 맵핑은 변화될 수 있고, 따라서, 제거된 상태의 새로운 블록은 상기 논리적 어드레스와 결합된다. 새로운 데이터는 새로운 블록에 라이트 되고, 제거되지 않은 오래된 블록에 저장된 임의의 데이터 또한 새로운 블록에 라이트 된다. 따라서, 오래된 데이터는 상술한 종래의 방법과 같이 두 번이 아니라, 한번 복사되어야만 한다. 이것은 장치의 전체 동작을 더 빠르게 한다.
논리적 및 물리적 어드레스들 사이의 일시적 맵핑은 메모리 어드레스 맵핑 테이블에 의해 정의된다. 동작 속도를 위해, 상기 메모리 어드레스 맵핑 테이블은 램(RAM) 메모리(예를 들어, 그 자체의 마스터 컨트롤 유닛) 내에 저장되는 것이 바람직하다. 그러나, 맵핑 데이터는 또한 플래시 메모리 장치 그 자체에 저장되는 것이 바람직하고, 그래서 전원이 꺼진 상황에서도 데이터를 잃지 않는다.
특별히, 임의의 블록의 하나 이상의 페이지들의 컨트롤 데이터 저장 섹터는 현재 블록이 결합된 논리적 어드레스 영역에 표시되는 데이터를 저장할 수 있다. 장치가 호스트 컴퓨터에 연결되고 마스터 컨트롤 유닛에 전원이 들어왔을 때, 상기 마스트 컨트롤 유닛은 맵핑 테이블(캐시 메모리에 저장될 수 있는)을 생성하기 위해 상기 데이터를 사용한다. 맵핑이 변화됨에 따라 임의의 논리적 어드레스 영역에 상응하는 물리적 어드레스는 맵핑 테이블에 있는 상기 데이터를 첫 번째 블록에서 두 번째 블록으로 변경하고, 플래시 메모리 소자에 저장된 상응하는 데이터는 업데이트 된다. 플래시 메모리에 저장된 데이터의 경우, 첫 번째 블록이 제거되기 전에, 첫 번째 블록에서 두 번째 블록으로 맵핑을 정의하는 상기 데이터를 복사함으로서 간단히 될 수 있다.
상술한 바와 같이, 종래의 시스템에서, 임의의 논리적 어드레스들과 결합되지 않은 블록들이 있기 때문에 상기 논리적 어드레스 공간은 상기 물리적 어드레스 공간보다 더 작다. 임의의 논리적 어드레스들과 결합되지 않은 블록들은 예약된(reserved) 블록들과 망가진(bad) 블록들이다. 본 발명의 실시예에서, 예약된 블록들과 망가진 블록들을 추가하기 위해, 현재 상기 논리적 어드레스 영역에 맵핑된 블록들을 대신하여 임의 시간에 논리적 어드레스 영역들의 하나에 맵핑되어 이용할 수 있는 한 셋의 추가 블록들(이하, "대기열 블록들(queuing blocks)"이라 한다)이 있다. 맵핑이 변화될 때, 대기열 블록들 중의 하나는 상기 논리적 어드레스 영역들의 하나와 결합되기 위해 선택된다. 대기열 블록들은 그들이 논리적 어드레스 영역들 중의 하나와 결합되기 전에 제거되기보다는 그들이 대기열에 있는 동안 제거된 상태로 있는 것이 바람직하다.
메모리 어드레스 맵핑의 업데이트(예를 들어, 맵핑에서 첫 번째 블록을 대체하기 위해 제거된 두 번째 블록을 선택하는 것)는 제거되지 않은 상태의 물리적 어드레스 내의 위치로 데이터를 라이트 하기 위해 새로운 라이트 명령(WRITE instruction)을 받을 때마다 수행된다.
그것은 이러한 라이트 명령을 받자마자 수행된다. 대안으로, 본 발명의 우선적인 진보에 있어서, 임의의 라이트 명령에 기초한 마스터 컨트롤 유닛에 의해 수행되는 라이트 동작은 특정 기간 동안 중지되고, 그 기간 동안 첫 번째 명령을 가지고 미리 정한 유사한 기준을 충족하는 어떠한 명령도 받지 않았다면, 단지 수행된다. 상술한 변화할 수 있는 어드레스 맵핑 테이블의 개념은 논리적 어드레스들이 통계적으로 서로 연관되어 진다는 관찰에 의해 부분적으로 동기부여하기 때문에, 이러한 진보는 자주 수신되는 명령이 상대적으로 짧은 기간 동안 충분히 강하게 서로 연관되어 있어서, 그들이 분리된 것보다 함께 더 효과적으로 될 수 있다는 것을 관찰함에 의해 동기부여될 수 있다. 따라서, 휴대용 데이터 저장 장치의 속도와 수명이 개선된다. 다른 서로 연관된 라이트 명령이 도달했는지 여부를 결정하기 위해 라이트 동작을 중지하는 이러한 개념은 변화가능한 맵핑 테이블과 결합하는 것보다 본 발명의 범위 내에서 사용될 수 있는 본 발명의 다른 독립적인 면을 구성한다.
첫 번째 그런 상호관계는 종종 연속적인 라이트 명령들이 데이터를 연속적인 동일한 논리적 영역에 라이트 하는 것을 특정하는 것이다. 이것을 설명하기 위해, 물리적 메모리의 임의의 첫 번째 블록에 메모리 어드레스 맵핑에 상응하는 논리적 어드레스 영역에 데이터를 라이트 되는 것을 특정하는 첫 번째 명령을 상기 마스터 컨트롤 장치가 받았을 때, 상기 마스터 컨트롤 장치는 오버라이트(overwrite) 되지 않는 첫 번째 블록에 저장된 데이터를 상기 두 번째 블록에 복사하는 동작들 중 적어도 하나를 중지하는 것이 바람직하다. 만약, 그 기간 동안, 상기 마스터 컨트롤 장치가 데이터를 블록의 연속적인 페이지에 라이트 하기 위한 명령을 포함하는 어떠한 패킷도 받지 않는다면, 그때, 첫 번째 블록에 있는 데이터를 두 번째 블록에 있는 블록에 복사하는 동작을 계속한다. 반대로, 만약, 그 기간 동안, 상기 마스터 컨트롤 장치가 동일한 논리적 어드레스 영역에 있는 다른 위치들에 다른 데이터를 라이트 하는 것을 특정하는 하나 이상의 패킷을 받는다면, 그때, 상기 마스터 컨트롤 유닛은 상기 데이터를 모든 패킷에서 블록으로 라이트 할 수 있고, 이 경우 단지 상기 데이터를 첫 번째 블록의 다른 부분에서 두 번째 블록으로 복사할 필요가 있다.
두 번째 그런 상호관계는, 본 발명에 알린 바와 같이, 종종 마스터 컨트롤 장치는 짧은 시간 내에 정확하게 동일한 논리적 어드레스를 특정하는 라이트 명령을 포함하는 패킷을 받는다는 것이다. 각각의 다른 명령을 받을 때마다, 상기 메모리 어드레스 맵핑을 한번에 리셋팅 하는 것보다, 본 발명의 실시예는 일정 시간 기간 동안 이러한 동작을 중지하는 것이 바람직하다. 이러한 기간 동안, 상기 데이터는 마스터 컨트롤 장치(예를 들어, 그것의 내부 램(RAM) 캐시 메모리)에 의해 동작되는 데이터 캐시에 저장된다. 그 시간 기간 동안 동일한 논리적 어드레스에 관한 어떠한 명령을 받지 않는다면, 그때, 상기 마스터 컨트롤 장치는 상술한 바와 같이 상기 데이터를 상기 플래시 메모리에 라이트를 진행한다. 그러나, 만약, 그 기간 동안, 라이트 명령을 받는다면(또는 다른 실시예에서, 동일한 논리적 어드레스에 관한 명령이 아니다), 상기 마스터 컨트롤 장치는 대신 상기 데이터를 그것의 캐시 메모리에 라이트 한다(그리고 정상적으로 시간을 리셋한다). 만약, 그 기간 동안, 동일한 논리적 어드레스와 관련하여 리드 명령을 받는다면, 상기 데이터는 플래시 메모리 소자가 아니라, 캐시 메모리로부터 리드 한다.
선택적으로, 상기 캐시 메모리는 다중 논리적 어드레스들과 관련하여 데이터를 저장할 충분히 클 수 있다. 즉, 상기 캐시 메모리는 다수의 섹션들로 분할되고, 각각의 섹션들은 상응하는 논리적 어드레스와 관련된 데이터를 저장하고, 각각의 섹션들은 논리적 어드레스와 관련된 라이트 명령을 받기 때문에, 시간을 측정하기 위한 각각의 타이머와 결합된다.
우선적으로, 데이터 저장 장치는 특히, 논리적 어드레스들이 매우 자주 그들에게 라이트 된 데이터를 가지고 있는 것을 구별할 수 있다(예를 들어, 데이터 저장 장치는 입력 명령들에 기초하여 패턴 인식 알고리즘을 실행한다). 그래서, 데이터 저장 장치는 두 단락 위해서 설명한 캐시 동작을 수행할 가치가 있는 하나 이상의 논리적 어드레스 한 셋을 선택할 수 있다.
위에서 설명한 것은 논리적 어드레스 영역들과 결합되는 블록들 각각에 대해 각각의 매핑이 있다는 것을 가정하였다. 그러나, 이것은 적어도 데이터를 저장하기 위해 이용할 수 있는 블록들의 수만큼 많은 구성요소들을 가지기 위해 메모리 어드레스 맵핑 테이블이 필요하다. 대안으로는 논리적 어드레스 영역들을 각각의 블록들의 그룹들에 결합시키는 것이다. 예를 들어, 블록들은 4개의 블록들의 그룹으로 그룹지어지고(따라서, 예를 들어, 전체 4×64=256 페이지), 논리적 어드레스 영역들은 상응하는 요소(예를 들어, 4)에 의해 더 커진다. 상기 메모리 어드레스 맵핑 테이블은 이 경우에 이러한 그룹들 각각과 논리적 어드레스 영역들의 각각 하나씩 일대일 맵핑으로 정의될 수 있다.
상기 그룹들은 단순히 연속적인 블록들 중의 하나이지만, 임의의 망가진(bad) 블록들이 있기 때문에, 블록들을 셋팅하는 더 세밀한 방법으로 망가지지 않은 블록들이 그룹 되도록 하는 것이 바람직하다. 블록들의 그룹은 논리적 어드레스 공간의 영역들과 결합된 물리적 메모리의 영역들로 취급될 수 있다. 마스터 컨트롤 유닛은 이러한 그룹핑을 표시하는 그룹핑 테이블로 액세스하고, 따라서 임의의 논리적 어드레스는 상응하는 그룹을 결정하기 위해 메모리 어드레스 테이블을 사용하고, 상기 그룹을 구성하는 블록을 확인하기 위해 그룹핑 테이블을 사용할 수 있다.
망가진(bad) 블록들이 상대적으로 적기 때문에, 대다수 그룹들은 단순한 규칙(예를 들어, 그룹들은 각각 4개의 연속적인 블록들로 셋팅 된다)에 따라 셋팅될 수 있고, 그룹핑 테이블은 단지 상기 규칙을 따르지 않는 블록들과 관련된 데이터를 저장한다.
편리하게, 임의의 논리적 어드레스 영역이 예외적인 그룹들 중의 하나와 결합되어 있다는 사실은 맵핑 어드레스 테이블에 플래그(flag)와 같이 포함될 수 있다. 따라서, 상기 메모리 맵핑 어드레스 테이블은 임의의 논리적 어드레스와 결합된 물리적 어드레스를 결정하기 위하여 그룹핑 테이블을 설명할 필요가 있을 때 표시한다.
상기 마스터 컨트롤 유닛은 임의의 논리적 어드레스 영역을 상응하는 그룹의 블록들과 결합시켜서 연속적인 논리적 어드레스들을 페이지들의 "컬럼(columns)"에 상응한다. 논리적 어드레스 영역들에 상응하기 위해 그리고 논리적 어드레스 영역 내의 연속적인 논리적 어드레스들을 페이지들의 컬럼에 결합시키기 위해 블록들의 그룹들을 공급하는 개념은 변화할 수 있는 맵핑 테이블에 결합되는 것보다 본 발명의 범위 내에서 사용되는 본 발명의 다른 독립적인 면을 구성한다.
본 발명의 첫 번째 면의 하나의 특정한 표현으로,
(ⅰ) 장치의 안과 밖으로 데이터 패킷을 전송하는 데이터 인터페이스(data interface),
(ⅱ) 인터페이스 컨트롤러(interface controller),
(ⅲ) 마스터 컨트롤 유닛(master control unit), 및
(ⅳ) 적어도 하나의 낸드 플래시 메모리 유닛(NAND flash memory unit)을 포함하는 휴대용 데이터 저장 장치(portable data storage device)에 있어서,
상기 인터페이스 컨트롤러는 상기 인터페이스를 통해 받은 데이터를 상기 마스터 컨트롤러 유닛으로 전송하기 위해 정렬되고,
상기 마스터 컨트롤 유닛은 리드 명령(READ instruction)을 인코딩함으로써 특정 데이터 패킷들 및 라이트 명령(WRITE instruction)을 인코딩함으로써 다른 데이터 패킷들을 인식하기 위해 정렬되며,
(a) 논리적 어드레스(logical address)를 표시하는 리드 명령(READ instruction)을 받을 때, 논리적 메모리 공간 내의 논리적 어드레스 영역들과 결합되는 메모리 어드레스 맵핑 테이블(memory address mapping table)을 상기 메모리 유닛 내의 각각의 첫 번째 물리적 어드레스(physical address) 영역들로 접근(access) 하고, 상기 어드레스 맵핑 테이블에 따라 상기 논리적 어드레스에 상응하는 상기 메모리 유닛 내의 물리적 어드레스로부터 데이터를 리드(read) 하고, 상기 리드 된 데이터를 포함하는 하나 이상의 데이터 패킷을 상기 데이터 인터페이스로 전송(transmit)하며,
(b) 논리적 어드레스 및 상기 논리적 어드레스에 라이트 될 데이터를 표시하는 라이트 명령(WRITE instruction)을 받을 때, 상기 메모리 어드레스 맵핑 테이블에 따라 상기 논리적 어드레스에 상응하는 상기 물리적 어드레스가 제거된 상태(erased state)인지 여부를 결정하고:
만약, 제거된 상태이라면, 상기 물리적 어드레스에 상기 데이터를 라이트하고, 또는
만약, 제거된 상태가 아니라면, 두 번째 물리적 어드레스 영역과 결합되는 상기 어드레스 맵핑 테이블을 상기 논리적 어드레스를 포함하는 상기 논리적 어드레스 영역으로 수정(modify)하고, 상기 수정된 메모리 어드레스 맴핑 테이블에 따라 상기 논리적 어드레스에 상응하는 물리적 어드레스에 상기 데이터를 라이트(write) 하며, 상기 첫 번째 물리적 어드레스 영역의 다른 부분들에 저장된 임의의 데이터를 상기 두 번째 물리적 어드레스 영역의 상응하는 위치들로 복사(copy) 하는 것을 특징으로 하는 휴대용 데이터 저장 장치.
상기 목적의 문맥 안에서 페이지들 중 다수개 안에 저장될 데이터를 포함하는 라이트 명령(WRITE instruction) 또는 다수의 페이지들로부터 데이터를 요청하는 리드(READ) 데이터 패킷은 이해될 수 있다. 다시 말해, 상술한 어드레스는 예를 들어 물리적 어드레스 영역의 다중 페이지의 시작하는 어드레스가 될 수 있다.
본 발명의 바람직한 특징은 다음 도면을 참조하여 설명될 것이다.
도 1은 종래의 휴대용 데이터 저장 장치의 제 1 구성도;
도 2는 종래의 도 1의 장치의 낸드 플래시 메모리 소자의 물리적 메모리 공간;
도 3은 본 발명의 제 1 실시예에 따른 메모리 어드레스 맵핑 테이블;
도 4는 본 발명의 제 1 실시예에 따라 수행되는 단계의 흐름도;
도 5는 특정 데이터 라이트 동작 후 도 3의 메모리 어드레스 맵핑 테이블;
도 6a 내지 도 6e는 본 발명의 제 2 실시예를 나타낸 도면;
도 7a 내지 도 7e는 본 발명의 제 3 실시예에 따라 각 시간에서 물리적 메모리의 상태를 나타낸 도면;
도 8은 도 7의 실시예의 동작의 흐름도; 및
도 9a 내지 도 9c는 본 발명의 제 4 실시예를 나타낸 도면이다.
본 발명의 제 1 실시예에 대하여 기술한다. 제 1 실시예는 도 1에 도시한 물리적 구조와 동일하고, 그러한 이유로 제 1 실시예에 해당하는 구성요소는 도 1에 사용된 동일한 참조부호를 사용할 것이다. 모든 구성요소는 하나의 하우징 예를 들어, 상기 USB 커넥터(3)가 덮히는 내에 포함될 수 있다. 상기 USB 커넥터(3)(예를 들어, USB 플러그)는 상기 호스트 컴퓨터(5)의 USB 소켓(4)에 플러그 인(plug in) 됨으로써 호스터 컴퓨터(예를 들어, 퍼스털 컴퓨터(PC))에 직접 연결될 수 있다. 대안으로, 케이블이 그들 사이에 연결될 수 있다. 이 장치는 도 1에 명백히 도시되 지 않은 많았지만, 패스워드 보호장치, 지문 인식 등에 의해 제어되는 액세스와 같이 다른 공공연히 이용할 수 있는 휴대용 데이터 저장 장치들에 알려진 특징들을 가지고 있음을 유념하여야 한다.
도 3은 제 1 실시예에 의해 사용되는 메모리 어드레스 맴핑 테이블을 도시한 것이다. 이 테이블은 상기 마스터 컨트롤 유닛(7)의 휘발성(volatile) 램(RAM) 메모리에 저장된다. 왼쪽 컬럼(21)은 논리적 어드레스 영역을 지시하고, 오른쪽 컬럼(23)은 상기 논리적 어드레스 영역들에 하나씩 맵핑되는 물리적 어드레스 공간의 블록들을 지시한다. 간단하게, 논리적 어드레스 영역들의 수는 8(0부터 7로 라벨 된), 블록들의 수는 16(0부터 15로 라벨 된)으로 가정할 수 있다. 실질적으로, 이 두 수는 더 높게 될 것이다. 따라서, 논리적 어드레스 영역들의 각각에 저장될 수 있는 데이터의 크기는 블록 당 페이지들의 수(예를 들어, 64)인 512 bytes이다. 상기 오른쪽 컬럼의 각각의 로우(row)는 단지 해당하는 블록에 라벨된 단지 인덱스를 저장한다. 논리적 어드레스 영역들의 수는 임의의 한번에 데이터를 저장하기 위해 사용될 불록될의 수에 상응한다.
예를 들어, 볼록당 64 페이지가 있다고 가정하면, 논리적 어드레스 67은 논리적 어드레스 영역 1 내의 페이지에 관한 것이다. 이것은 논리적 어드레스 영역 1의 페이지들은 논리적 어드레스들 0, 1, ...63을 가지고 논리적 어드레스 1의 페이지들은 논리적 어드레스들 64, 65, ...127을 가지며, 따라서 논리적 어드레스 67은 논리적 어드레스 영역 1 내의 4번째 어드레스이다. 도 3에 도시된 맵핑에서, 논리적 어드레스 영역 1은 볼록 10에 맵핑된다.
논리적 어드레스 영역들에 맵핑되는 블록들에 더하여, 상기 물리적 어드레스 공간은 다른 블록들 수(상기 예에서 8)를 포함한다. 이것들은 예약된 블록들 6, 12 및 13과 "망가진(bad)"(기능이 아님) 망가진(bad) 블록 7을 포함한다. 따라서, 이러한 어드레스들은 도 3의 맵핑 테이블에 나타나지 않는다(비록 본 발명의 실시예는 휴대용 저장 장치 내에서 종래의 다른 동작을 수행하기 위한 종래의 방법이 사용될 수 있는 더티(dirty) 블록 테이블과 예약된 블록의 테이블을 또한 가지고 있지만). 논리적 어드레스 영역들에 맵핑될 수 있도록 이용가능한 다수의 블록들(본 예에서 4개)이 남아 있다
이러한 블록들, "대기열 블록들(queuing blocks)", 은 도 3의 메모리 어드레스 맵핑 테이블 내의 25에 나타난다. 이러한 블록들은 제거된 상태로 있다. 한 블록이 상기 대기열(queue)의 최상부(top)로부터 제거되면, 모든 다른 블록들은 한칸씩 위로 움직인다; 그때 새로운 블록이 상기 섹션(25)의 로우(row) 최하부(bottom)에 삽입된다. 종래에는 이것은 상기 인덱스들 중의 하나를 각각 저장하고, 상기 4개의 위치들 중에 하나를 지적하는 포인터(pointer)를 가지기 위해 메모리 내의 4개의 위치들에 대한 배열함으로써 수행될 수 있다. 상기 포인터가 지적하는 위치는 논리적으로 상기 섹션(25)의 "최상부 로우(top row)"와 동등하다. 상기 인덱스와 상기 섹션(25)의 "최상부 로우(top row)"를 제거하고, 상기 섹션의 "최하부 로우(bottom row)"에 새로운 인덱스를 라이트 하는 것은 상기 포인터가 지적하는 위치 안에 새로운 인덱스를 오버라이트(overwrite)하고, 상기 위치들 중의 다음 하나에 지적하기 위한 라운드-로빈 방법(round-robin manner)으로 상기 포인터를 변경 하는 것에 상응한다.
상응하는 논리적 어드레스 영역에 맵핑되는 각 블록의 첫 번째 페이지의 상기 컨트롤 데이터 저장 섹터(11)는 상기 상응하는 논리적 어드레스 영역의 인덱스를 포함한다(만약 상기 인덱스를 저장하기 위해 요구되는 비트 수가 상기 첫 번째 페이지의 상기 섹터(11)에 이용가능한 비트 수보다 크다면, 상기 인덱스는 상응하는 블록의 한 페이지보다 더 상기 섹터(11) 내에 부호화(coded)되고, 저장(stored)될 수 있다). 따라서, 만약 상기 장치가 꺼지고(그래서 도 3의 메모리 어드레스 맵핑 테이블이 램(RAM)으로부터 손실된다), 상기 장치가 다시 켜졌을 때, 상기 마스터 컨트롤 유닛(7)은 상기 컨트롤 데이터 저장 섹터(11) 내에 저장된 인덱스들을 사용하는 램(RAM) 내에 메모리 어드레스 맵핑 테이블을 재생할 수 있다.
이제, 도 4에 도시된 흐름도를 참조하여 제 1 실시예의 동작을 설명한다. 단계 1에서 명령(instruction)을 받고, 단계 2에서 상기 마스터 컨트롤 유닛(7)은 상기 명령이 리드 명령(READ instruction)인지 라이트 명령(WRITE instruction)인지 결정한다.
상기 명령이 리드 명령이라고 가정하여 논리적 어드레스(67)로부터 데이터를 리드 하기 시작한다. 단계 3에서 상기 마스터 컨트롤 유닛(7)은 논리적 어드레스를 포함하는 논리적 어드레스 영역에 상응하는 블록(예를 들어, 블록 10)과 논리적 어드레스에 상응하는 페이지(예를 들어, 4번째 페이지)를 결정하기 위해 도 3의 상기 메모리 어드레스 맵핑 테이블을 사용한다. 그리고, 단계 4에서 리드 동작은 공지된 기술에 따라 수행된다: 상기 마스터 컨트롤 유닛(7)은 블록(10)으로부터 4번째 페 이지에 저장된 데이터를 추출하기 위해 상기 낸드 플래시 메모리(9)에 커맨드(command)를 발생한다; 상기 데이터는 상기 낸드 플래시 메모리(9)으로부터 상기 버스(8)를 거쳐 상기 마스터 컨트롤 유닛(7)에 전송된다; 상기 마스터 컨트롤 유닛은 이를 하나 이상의 패킷에 형성하고 그것을 상기 장치 밖으로 전송한다.
상기 마스터 컨트롤 유닛이 상기 논리적 어드레스(67)에서 특정 데이터를 라이트하기 시작한다고 가정한다. 단계 5에서 상기 마스터 컨트롤 유닛(7)은 상기 논리적 어드레스에 상응하는 블록 및 페이지를 결정하고(단계 3과 같이), 단계 6에서 상기 마스터 컨트롤 유닛은 상기 페이지가 제거된 상태인지 제거되지 않은 상태인지 결정한다. 이것은 파일 관리 시스템을 사용하여 될 수 있다(예를 들어, 상술한 종래 기술과 같이 블록 할당 테이블을 수행함으로써).
만약, 블록(10)의 4번째 페이지가 제거되었다면, 그 다음에 상기 마스터 컨트롤 유닛(7)은 단지 종래 기술에 따라 메모리가 블록(10)의 4번째 페이지 내에 데이터를 저장하기 위해 상기 낸드 플래시 메모리(9)에 라이트 명령을 보낸다.
반대로, 만약 상기 블록(10)의 4번째 페이지가 제거되지 않은 상태라면, 그 다음에 단계 8에서 상기 마스터 컨트롤 유닛은 블록(10)의 첫 번째 3 페이지와 블록(10)의 마지막 60 페이지 내에 저장된 특정 데이터를 새로운 블록에 복사하기 위해 상기 메모리 유닛에 명령한다. 상기 새로운 블록은 대기열 블록들(25)의 첫 번째 즉, 블록(4)이다. 다음 단계 10에서 상기 메모리 어드레스 테이블은 도 5에 도시된 형태로 리셋된다. 즉, 상기 블록(4)은 이제 논리적 어드레스 영역(1)과 결합된다. 상기 블록(10)은 제거되고, 대기열(25)의 블록에 위치한다. 대기열에 4개의 블록들이 있기 때문에, 상기 블록(10)은 마스터 컨트롤 유닛이 데이터를 제거되지 않은 페이지에 라이트 하기 위해 지시받는 다음 세 번째에 재사용될 것이다. 단계 8부터 단계 10의 동작은 상기 실행에 따라 어떤 다른 명령에 수행될 수 있음을 유념해야 한다.
파일 관리 시스템을 사용하기 위한 대안으로 상기 장치에 대해 단계 6과 7을 생략하고, 단계 5에서 바로 단계 8로 진행된다. 다시 말해서, 매번 라이트 명령을 받을 때마다, 단계 8에서 10의 복사는 수행된다.
도 6은 본 발명의 제 2 실시예를 나타낸 도면이다. 제 1 실시예와 반대로, 논리적 어드레스 영역들의 각각은 각각의 블록에 맵핑되어, 제 2 실시예에서 논리적 어드레스 영역들(상기 예에서 8)은 상응하는 블록 그룹(상기 예에서 4개의 블록들)에 맵핑된다. 상기 예에서, 블록들의 수는 64와 같고, 인덱스 0부터 63에 의해 라벨된다. 블록들 60, 61, 62 및 63은 예약된(reserved) 것으로 얻어진다. 블록들 9, 17, 18 및 27은 망가진(bad) 것으로 간주된다. 상기 망가진(bad) 그룹들은 도 6a에 도시된 "더티 테이블(dirty table)"에 주어진다. 이 테이블은 장치에 전원이 들어온 첫 번째 시간에 모든 블록들을 테스트하고 망가진 것들을 찾아냄으로써 생성될 수 있다; 다음으로 상기 예약된 블록들은 그들이 망가진(bad) 블록들을 포함하지 않는다는 것을 확인함으로 정의될 수 있다. 상기 망가진(bad) 블록 테이블은 전형적으로 하나 이상의 예약된 블록들에 저장된다; 다시말해 그것은 장치가 전력을 받을 때마다 재발생 될 수 있다.
도 6b는 상기 메모리 어드레스 맵핑 테이블을 도시하고 있다. 이 경우 각각 의 논리적 어드레스 영역들 0부터 7(왼쪽 컬럼(31))은 그룹 숫자(group number)(중간 컬럼(33))에 맵핑된다. 중간 컬럼은 각각의 논리적 어드레스 영역들 중의 하나에 맴핑되도록 이용가능한 12 그룹이 있고, 상기 12 그룹은 각각 0부터 11까지의 그룹 인덱스가 붙어있다.
i로 명명하는 인덱스를 가지는 대부분 그룹은 한 셋의 블록들 4i-4, 4i-3, 4i-2 및 4i-1로 구성된다. 그러나, 이러한 간단한 규칙에 예외적인 블록들이 있는데, 이는 만약 망가진(bad) 하나 이상의 블록들을 포함하는 그룹이 상기 규칙을 따르기 때문이다. 그런 그룹들을 정의하는 블록들은 상기 도 6c에 도시한 "크린 테이블(clean table)"에 주어진다.
예를 들어, 그룹 1은 단순히 첫 번째 4개의 블록들 0, 1, 2 및 3이다. 그룹 2는 두 번째 4개의 블록들 4, 5, 6 및 7이다. 그러나, 그룹 3은 블록 8, 9, 10 및 11이 아니다. 왜냐하면 상술한 바와 같이 블록 9는 망가졌기(bad) 때문이다. 대신, 도 6c의 크린 테이블(clean table)에서 그룹 3이 블록들 8, 59, 10 및 11이 구성되도록 지시한다. 그룹 4는 일반 규칙에 따라 블록들 12, 13, 14 및 15이다. 그룹 5는 다시 일반 규칙의 예외로(왜냐하면 블록들 17 및 18이 망가졌기 때문) 크린 테이블에 따라 블록들 16, 58, 57 및 19로 구성된다. 그룹 6은 다시 규칙에 따라 블록들 20, 21, 22 및 23이 된다. 그룹 7은 다시 예외적으로(블록 27이 망가졌기 때문) 크린 테이블에 따라 블록들 24, 25, 26 및 56이 된다. 그룹 8 내지 그룹 11은 일반규칙에 따른다.
따라서, 크린 테이블(clean table)은 이 예에서 그룹 3, 5 및 7의 단지 3 그 룹의 맴버들을 정의한다. 사실, 더 전형적인 실시예에서 망가진(bad) 그룹들의 비율은 매우 낮기 때문에 크린 테이블은 상기 메모리 어드레스 맵핑 테이블보다 더 작다. 상기 크린 테이블의 최대 로우(row)의 수는 망가진(bad) 그룹의 수이다.
그룹 3이 일반규칙에 따르지 않음을 알리기 위해서 상기 메모리 어드레스 맵핑 테이블은 세 번째 컬럼(37)에 플래그(flag)와, 네 번째 컬럼(38)에 추출한 그룹의 맴버들을 획득한 것을 참조하기 위해 도 6c의 크린 테이블의 로우(row)에 상응하는 표시를 포함한다(도 6b에서 네 번째 컬럼(38)의 값들은 각각 0, 1, 2 및 도 6c의 크린 테이블의 3개의 로우 각각을 라벨링한 값이다.)
상기 마스터 컨트롤 유닛이 특정 데이터를 논리적 어드레스 67에 라이트 하도록 라이트 명령(WRITE instruction)을 받는다면, 이 경우 상기 논리적 어드레스는 상기 논리적 어드레스 영역 0 내에 있다는 것을 확인할 수 있다(왜냐하면 논리적 어드레스 영역 0은 논리적 어드레스 0부터 255까지 이기 때문). 논리적 어드레스들과 도 6b의 그룹들 사이의 맵핑은 상응하는 그룹이 그룹 2라는 것을 보여준다. 컬럼(37)에 상응하는 플래그(flag)가 표시되지 않았으므로, 그룹 2에 상응하는 블록들을 확인하기 위해 상기 크린 테이블을 참고(consult)할 필요가 없다: 상기 규칙은 그룹 2를 4, 5, 6 및 7로 간주한다. 따라서, 상기 논리적 어드레스 67은 블록 5에 네 번째 페이지이다.
만약 이러한 페이지가 제거된 상태라면, 다음으로 라이트 지시(WRITE instruction)로부터 데이터는 상기 페이지에 라이트 된다.
만약 이러한 페이지가 제거된 상태가 아니라면, 그룹 7로 되는 대기열(35)의 앞 부분에 위치하는 그룹의 두 번째 블록의 네 번째 페이지에 라이트 된다. 상기 도 6b의 메모리 어드레스 맵핑 테이블은 컬럼(33) 내의 대기열의 앞부분의 그룹 수(예를 들어, 그룹 7)를 이동시키고, 또한 블록 7은 세 번째 컬럼(37)의 같은 로우에 불규칙이다라는 플래그 표시와 네 번째 컬럼(38)의 새로운 로우(row) 내에 크린 테이블의 로우(row)임을 알리는 상응하는 데이터를 복사함으로써 도 6d 가 되도록 업데이트 된다. 블록들4, 5, 6 및 7의 다른 페이지들에 저장된 임의의 데이터는 각각 그룹 7(예를 들어, 블록들 24, 25, 26 및 56의 각각의 페이지들)에 상응하는 페이지에 복사된다.
만약, 다음으로 논리적 메모리 어드레스 67에 대해 리드 명령(read instruction)을 받는다면, 상기 마스터 컨트롤 유닛(7)은 다시 이것이 논리적 영역 0에 해당하는지 결정하고, 도 6d의 메모리 어드레스 맵핑 테이블 내에 상응하는 로우를 조사한다. 이때 컬럼(33)으로부터 상응하는 그룹이 7이고, 컬럼(37) 내의 플래그는 상기 그룹이 불규칙하다는 것을 지시한다는 것을 발견한다. 컬럼(38)은 상기 그룹이 도 6c의 크린 테이블의 로우 2(예를 들어, 마지막 로우)라는 것을 표시한다. 따라서, 상기 마스터 컨트롤 유닛은 도 6c의 크린 테이블로부터 상기 로우의 블록들(예를 들어, 블록들 24, 25, 26 및 56)을 추출한다. 이는 상기 그룹 7의 두 번째 블록의 네 번째 페이지로부터 데이터를 리드하고, 상기 데이터를 인코딩하는 하나 이상의 데이터 패킷들을 발생하고, 상기 인터페이스(3)를 거쳐 상기 장치밖으로 상기 패킷들을 전송한다.
만약 다시 논리적 메모리 어드레스 67에 대해 라이트 명령(write instruction)을 받는다면, 상기 마스터 컨트롤 유닛(7)은 다시 도 6d의 메모리 어드레스 맵핑 테이블 내의 상응하는 위치를 조사한다. 이때, 상응하는 그룹이 7이고, 컬럼(37) 내의 플래그가 상기 그룹이 불규칙하다는 것을 표시한다는 것을 발견한다. 따라서, 상기 마스터 컨트롤 유닛은 컬럼(38)으로부터 상응하는 로우 수(예를 들어, 2)를 추출하고, 도 6c의 크린 테이블로부터 상기 로우의 블록들(예를 들어, 블록들 24, 25, 26 및 56)을 획득한다. 그것은 데이터가 그곳에 저장되어 있는지를 알기 위해 그룹 7의 상기 두 번째 블록(예를 들어, 블록 25)의 네 번째 페이지를 검사한다. 따라서, 그것은 대기열(35)의 앞 부분에 있는 그룹에 상응하는 페이지들로 상기 그룹의 다른 페이지들에 있는 모든 저장된 데이터를 이동시키고, 상기 그룹의 두 번째 블록의 네 번째 페이지에 라이트 명령(WRITE instruction)의 데이터를 라이트 한다. 다음 상부 로우에서 컬럼(33)에 숫자 4를 삽입하고, 컬럼(37)에 그룹 4에 상응하는 플래그(비어있음)를 복사하고, 컬럼(38)에 그룹 4에 상응하는 데이터(비어있음)를 복사하고, 상기 테이블(다른 로우들의 상부로 이동된 하나를 가지는)의 섹션(35)의 하부에 인덱스 7을 삽입하고, 컬럼(37)의 하부 로우에 상응하는 플래그를 복사하고, 컬럼(38)의 하부 로우에 상응하는 데이터를 복사한다.
상기 프로세스에 해당하는 흐름은 도 4의 흐름도와 거의 동일하다. 그러나, 단계 3 및 5는 여기에서 더욱 복잡함을 이해하여야 한다. 상기 논리적 어드레스 및 상기 메모리 어드레스 맵핑 테이블(예를 들어, 도 3)로부터 결정된 블록 대신에, 상응하는 그룹을 획득하기 위해 상기 메모리 어드레스 맵핑 테이블(예를 들어, 도 6b 및 도 6d)을 사용하고 상기 그룹의 블록들을 결정(규칙으로부터 또는 만약 플래 그가 메모리 어드레스 맵핑 테이블의 컬럼(37)에 제공된다면, 도 6c의 크린 테이블의 컬럼(38)에 표시된 로우(row)로 부터)하는 것을 획득함으로써 결정된다. 또한, 단계 8 및 9에서 첫 번째 대기열 블록의 참조는 이 경우에 첫 번째 대기열 그룹(예를 들어, 메모리 어드레스 맵핑 테이블의 섹션(35)의 상부에 있는 그룹)에 상응하는 블록의 참조로서 이해되어야 한다.
이것은 제 2 실시예가 논리적 어드레스 영역들과 각각의 블록들의 그룹들 사이를 어떻게 맵핑하여 동작하는지 설명한다. 논리적으로 분리된 이슈(issue)는 실시예가 임의의 논리적 어드레스 영역 내의 논리적 어드레스들을 블록들의 상응하는 그룹 내의 각각의 페이지들에 어떻게 맵핑되는가 이다.
하나의 가능성은 우리가 "수평(horizontal)"라고 부를 것에 상응하는 것이다. 이것은 상기 블록들의 연속적인 페이지들이 연속적인 논리적 어드레스들에 상응하는 것을 의미한다. 각 블록의 마지막 페이지(그룹의 마지막 블록을 제외한다) 그룹의 다음 블록의 첫 번째 페이지에 상응하는 논리적 어드레스 이전에 연속적으로 논리적 어드레스에 상응한다. 따라서, 예를 들어, 하나의 블록의 페이지 수보다 약간 큰 데이터의 크기는 메모리에 라이트 될 것이어서, 데이터의 시작은 논리적 어드레스에 의해 특정되는 페이지에 라이트 되고, 다음으로 블록들의 연속적인 페이지들은 블록이 소진될 때까지 라이트될 것이고, 다음으로 데이터의 나머지 부분은 다음 블록의 첫 페이지에 라이트 된다.
그러나, 이것은 단지 가능성이 아니다. 본 발명의 제 2 실시예의 우선적인 형태에 있어서, 상기 마스터 컨트롤 유닛은 블록들의 그룹의 페이지들에 어드레스 들의 논리적 대응은 "수직(vertical)"이 되도록 동작한다. 특히, (예를 위하여, 임의의 그룹에 4개의 블록들이 있다고 가정하자) 첫 번째 4개의 논리적 어드레스들은 각각의 블록들의 첫 번째 페이지들에 맵핑되고(예를 들어, 상기 그룹의 첫 번째 블록의 첫 번째 페이지에 첫 번째 논리적 어드레스가; 상기 그룹의 두 번째 블록의 첫 번째 페이지에 두 번째 논리적 어드레스가; 등등), 다음 4개의 논리적 어드레스들은 상기 각각의 블록들의 두 번째 페이지들에 맵핑된다(예를 들어, 상기 그룹의 첫 번째 블록의 두 번째 페이지에 5번째 논리적 어드레스가; 상기 그룹의 두 번째 블록의 두 번째 페이지에 6번째 논리적 어드레스가; 등등).
이것을 다른 방법으로 사용하기 위해서, 상기 마스터 컨트롤 유닛(7)은 4개의 연속적인 논리적 어드레스들의 셋들(sets)을 각각의 블록들의 각각의 페이지들에 각각 상응하도록 취급한다. 임의의 논리적 어드레스들 셋과 결합된 페이지들 모두는 각각의 블록의 페이지들과 함께 수평적으로 카운트되어 측정된 동일한 오프셋(offset) 값을 가진다.
도 6e는 특정한 데이터의 크기가 그룹 2의 위치(예를 들어, 블록 4, 5, 6 및 7)에 라이트된 것을 나타내고 있다. 데이터의 시작부분이 라이트 될 논리적 어드레스는 블록 4의 첫 번째 페이지에 상응하는 논리적 어드레스와 관련된 오프셋 17을 가지고 있다. 즉, 데이터의 시작부분이 라이트 될 논리적 어드레스는 그룹의 첫 번째 페이지 다음의 17 페이지들이다. 이러한 페이지들은 도 6c 에서 수직적으로 카운트될 것이다(예를 들어, 페이지들의 첫 번쩨 컬럼 첫 번째 아래, 그리고 다음 컬럼 아래) 따라서, 오프셋(offset) 17을 가지고 있는 페이지는 "A"로 표시된 하나이 다.
라이팅(writing) 동작에서, 오래된 그룹들로부터의 데이터는 빗금친 영역(32)에 표시된 그룹 2 내의 위치에 복사된다. 다음, 라이트 패킷 내의 데이터는 빗금친 영역(34)(예를 들어, A 위치에서 시작) 내의 페이지들에 라이트 된다. 영역(34) 다음의 빗금 치지 않은 영역(36) 내의 오래된 블록들 내의 임의의 데이터는 영역(34)으로 복사된다.
다음으로 본 발명의 제 3 실시예를 설명한다. 제 3 실시예는 상기 제 1 실시예와 비슷하지만 한 가지(중요한)가 다르다. 제 3 실시예에서, 메모리 어드레스 맵핑 테이블에 정의된 맵핑이 변경되고, 라이트 명령에 포함된 데이터가 논리적 어드레스와 결합될 수 있는 새로운 블록의 위치에 라이트 될 수 있는 라이트 명령(WRITE instruction)을 따름으로써, 데이터를 오래된 블록의 리셋으로부터 새로운 블록으로 복사하는 동작은 메모리 공간의 동일한 영역에 관한 어떤 새로 라이트 명령(WRITE instruction)을 받는가를 보기 위해 부분적으로 미리 정의된 시간 동안 정지된다.
특히, 라이트 명령(WRITE instruction)이 데이터 A가 특정 논리적 어드레스에 라이트 되는 지시를 받는다고 가정한다. 논리적 어드레스는 블록 0에 상응하는 논리적 어드레스 영역 내에 있다고 가정한다. 나아가, 블록 0의 페이지 4에 상응하는 논리적 어드레스를 가정한다. 나아가, 대기열(25)(도 3의)의 상부에 제거된 블록은 블록 3으로 가정한다. 도 7a는 블록 0 및 3을 포함하는 물리적 메모리의 한 부분을 나타낸다. 즉, 블록 0은 페이지 0부터 3에 저장된 X로 라벨된 데이터를 가 지고 있고, 페이지 4에 저장된 Y로 라벨된 데이터, 페이지 5부터 7에 저장된 Z로 라벨된 데이터를 가지고 있고, 그 다음 나머지 블록은 제거된 상태("0"으로 나타냄)이다.
제 1 실시예에 따르면, 라이트 명령(WRITE instruction)은 블록 1 및 3의 물리적 메모리를 도 7b와 같이 되도록 한다. 즉, 새로운 데이터 A는 페이지 4에 저장되고, 데이터 X 및Z는 블록 0 내의 이전 페이지들에 상응하는 블록 3의 페이지들에 저장된다. 블록 0은 제거된다(그리고, 그것을 대표하는 인덱스는 도 3의 섹션 25의 아래에 있다).
그러나, 본 발명의 제 3 실시예에서는 물리적 메모리는 도 7c에 나타낸 것과 같이 초기에 다시 라이트 된다. 즉, 데이터 A는 블록 3의 페이지 4에 라이트 되고, 데이터 X는 페이지 1 내지 3에 복사되지만, 데이터 Z는 블록 3의 페이지 5 내지 7에 복사되지 않는다. 이 시스템은 타이머에 의해 주어진 시간 기간 동안 이러한 형태로 유지된다. 만약 그 시간 기간의 마지막까지 블록 3의 페이지 5에 상응하는 논리적 어드레스에 관련된 라이트 신호를 더 이상 받지 않는다면, 그때 라이트 동작은 도 7b에 나타난 데이터를 저장하기 위해 완료된다. 그러나, 만약, 그 시간 기간 동안 데이터 B가 블록 3의 페이지 5에 상응하는 논리적 어드레스에 저장되기 위해 새로운 라이트 명령(WRITE instruction)을 받는다면, 데이터 B는 도 7d에 나타난 데이터를 저장하는 블록 3의 페이지 5에 라이트 된다. 그리고, 상기 타이머는 새로운 시간 기간을 정의하기 위해 다시 시작한다.
만약, 상기 시간 기간의 마지막까지 블록 3의 페이지 6에 상응하는 논리적 어드레스에 관련된 라이트 신호를 더 이상 받지 않는다면, 그때, 라이트 동작은 도 7e에 나타난 데이터를 저장하기 위해 완료된다. 그러나, 만약 상기 시간 기간 동안 데이터 C를 블록 3의 페이지 6에 상응하는 논리적 어드레스에 저장되도록 하는 새로운 라이트 명령(WRITE instruction)을 받는다면, 그때, 상기 데이터 B는 블록 3의 페이지 6에 라이트 되고, 상기 타이머는 다시 시작한다.
이러한 프로세스는 블록 3의 마지막 페이지에 도달하거나 라이트 명령(WRITE instruction)이 없이 시간 기간이 라이트 명령 절차에 의해 특정되는 위치를 따라 페이지에 데이터를 저장하도록 지시함으로써 흘러갈 때까지 계속된다. 데이터를 복사할 필요가 많이 줄어들었기 때문에 데이터 A, B, ...는 제 1 실시예 보다 더 빨리 메모리 소자에 라이트 될 수 있다. 예를 들어, 상술한 순차적인 단계 동안, 아무리 많이 라이트 명령(WRITE instruction)을 순차적으로 받더라도, 연속적인 페이지들과 관련하여 데이터 X는 단지 한번 복사될 필요가 있다.
도 8은 흐름도를 나타내고 있으며, 도 4와 다른 점은 단계 8 내지 10이 단계 8 내지 13으로 대체된 것이다. 도 8의 단계 8에서 페이지와 관련하여 라이트 명령(WRITE instruction)을 받기 전에 오래된 블록 내의 페이지들은 새로운 블록(예를 들어, 블록 3)에 복사되고, 라이트 명령(WRITE instruction) 내의 데이터는 논리적 어드레스에 상응하는 새로운 블록 내의 페이지에 라이트 된다. 단계 9에서 새로운 블록의 마지막 페이지는 라이트 되었는가를 결정한다. 만약, 그렇다면, 단계 13으로 진행한다. 그렇지 않다면, 단계 10에서 장치는 미리 정해진 시간 내에 새로운 블록의 다음 연속적인 페이지와 관련하여 새로운 라이트 명령(WRITE instruction)을 받는가를 결정한다. 만약 그렇다면 실시예는 단계 11에서 데이터를 라이트하고, 단계 9로 다시 돌아간다. 만약 그렇지 않다면, 단계 12에서 실시예는 오래된 블록의 페이지들(예를 들어, 가능하다면 마지막 페이지와 관련된 라이트 명령을 받은 모든 페이지들)의 나머지를 복사한다. 단계 13은 도 4의 단계 10에 대응한다: 오래된 블록(블록 0)은 제거되고 메모리 맵핑 어드레스 테이블은 업데이트 된다.
만약, 실시예의 단계 10에서 도 8의 흐름도의 핵심인 논리적 어드레스 영역 내의 논리적 어드레스와 관련하여 리드 명령(READ instruction)을 받는다면, 그 다음에 장치는 물리적 메모리 내의 올바른 위치(예를 들어, 단계 8에서 라이트 된 어드레스에 상응하는 논리적 어드레스 또는 단계 9에서 라이트 된 어드레스에 상응하는 논리적 어드레스라면 새로운 블록으로부터; 그렇지 않다면 오래된 블록으로부터)로부터 데이터를 리드 하여야 한다.
본 실시예에서 특정 형태에 있어서, 단계 10의 경우에, 만약, 새로운 블록의 다음 연속적인 페이지보다 임의의 논리적 어드레스에 데이터를 라이트 하라는 지시의 새로운 라이트 명령(WRITE instruction)을 받았다면, 장치는 단계 10에서 단계 12로 진행될 수 있다. 이 경우에 새로운 라이트 명령의 진행은 도 4의 흐름도가 완료된 후에 시작될 수 있다.
타이머는 전형적으로 약 3ms와 같이 수 ms의 기간으로 정해진다. 만약, 장치가 마지막 라이트 명령을 받은 후 상기 정해진 시간 기간 동안 호스트로부터 끊어졌다면, 데이터를 잃을 위험이 있다. 그러나, 미리 정해진 시간 기간을 ms의 순서 로 셋팅함으로써, 이러한 위험은 발생하지 않고, 따라서 모든 데이터는 안전하게 저장된다. 본 발명의 제 3 실시예는 0까지 가는 미리 정해진 기간을 제한하여 제 1 실시예를 변경한 것이다.
이제 본 발명의 제 4 실시예를 설명한다. 제 3 실시예와 같이 제 4 실시예도 타이머를 채용한다.
이 경우에 마스터 컨트롤 유닛(7)은 라이트 명령(WRITE) 명령으로부터 마스터 컨트롤 유닛에 의해 추출되는 논리적 어드레스들을 받는 패턴 인식 유닛(patten recognition unit)을 포함한다. 만약, 동작되는 특정 위상 동안, 특정 논리적 어드레스가 예상되는 것보다 많이 자주 나타나고, 그리고, 마스터 컨트롤 유닛의 램(RAM) 메모리 내에 정의된 "자주 논리적 어드레스에 사용된(frequently used logical address)" 공간에 논리적 메모리 어드레스를 라이트 한다는 것을 상기 패턴 인식 유닛은 인식한다. 더 일반적으로, 자주 논리적 어드레스에 사용된 공간은 높은 주파수를 가지는 복수의 그러한 동일한 논리적이니 어드레스들을 포함할 수 있다. 상기 패턴 인식 유닛은 주파수가 줄어들 때 논리적 어드레스들을 상기 공간으로 출력하도록 프로그램되어 있고, 및/또는 논리적 어드레스가 사용되는 주파수보다 더 높은 주파수를 가지는 것으로 인식될 때마다 상기 공간 내의 논리적 어드레스를 대체하도록 프로그램되어 있다. 따라서, 상기 공간은 라이트 명령시 가장 자주 발생하는 논리적 어드레스들을 연속적으로 저장한다.
상기 마스터 컨트롤 유닛(7)은 자주 사용된 어드레스 공간 내에 각 영역에 대해 캐시 램 메모리(cache PAM memory)를 보유한다. 자주 사용된 논리적 어드레스 공간 내에 저장된 어드레스들 중 하나와 관련하여 라이트 명령을 받았을 때, 마스터 컨트롤 유닛은 라이트 명령에 포함된 데이터를 상기 플래시 메모리 소자(flash memory device)에 초기에 라이트 하지 않는다. 대신, 마스터 컨트롤 유닛은 상기 데이터를 상응하는 캐시(cache)에 라이트 한다. 다음으로, 마스터 컨트롤 유닛(7)은 타이머에 의해 정해진 시간 동안 기다린다. 만약 상기 시간 동안 라이트 명령을 더 이상 받지 않는다면(또는 실시예의 한 형태로서, 만약 다른 블록과 관련하여 패킷을 받는다면), 그때, 상기 마스터 컨트롤 유닛은 캐시(cache) 내에 있는 데이터를 본 발명의 제 1 내지 제 3 실시예 중 어느 하나와 관련하여 상술한 프로세스에 따라 플래시 메모리(flash memory)에 라이트 한다. 반대로, 만약 미리 정해진 시간 동안 동일한 논리적 어드레스와 관련하여 라이트 명령을 받는다면, 마스터 컨트롤 유닛은 라이트 명령에 포함된 데이터를 동일한 캐시 영역에 라이트 한다(예를 들어, 첫 번째 라이트 패킷 때문에 거기에 라이트 된 데이터를 오버라이트(overwriting) 한다).
따라서, 만약 장치(1)가 타이머에 셋팅된 미리 정한 시간 보다 적은 평균시간에 의해 공간 분리된 동일한 논리적 메모리 어드레스에 관하여 큰 수의 라이트 명령을 받는다면, 라이트 동작(계산적으로 비싼)을 낸드 플래시 메모리(9)에 할 라이트 명령의 수는 작게 될 것이다.
도 9는 마스터 컨트롤 유닛(7)의 부분의 구성도이다. 마스터 컨트롤 유닛(7)은 라이트 명령을 논리적 어드레스와 상기 논리적 어드레스에 라이트 할 데이터로 분리하기 위한 섹터(51)를 포함한다. 상기 논리적 어드레스는 자주 사용된 어드레 스 공간(55)이 업데이트 되도록 유지하기 위해 사용되는 패턴 인식 유닛(53)으로 보내진다. 상기 마스터 컨트롤 유닛은 상기 자주 사용된 어드레스 공간(55) 내에서 상기 라이트 명령의 논리적 어드레스를 받았는가를 결정하는 스위치(57)를 가지고 있다. 만약, 그렇지 않다면 상기 데이터와 논리적 어드레스는 제 1 실시예의 방법에 따라 그들을 낸드 플래시 메모리(9)에 라이트 하는 유닛(58)에 라이트 된다. 만약, 그렇다면, 상기 데이터는 캐시 메모리(59)에 라이트 되고, 타이밍 유닛(61) 내의 타이머는 셋팅된다. 만약, 타이밍 유닛(61) 내의 타이머가 다시 리셋됨이 없이 미리 정해진 시간의 마지막에 도달하면, 상기 데이터와 이에 상응하는 논리적 어드레스는 스위치(57)에 의해 캐시 메모리(59)로부터 유닛(58)으로 전달된다. 비록 도 9a가 하나의 타이밍 유닛(61)을 나타냈지만, 상기 타이밍 유닛(61)은 전형적으로 논리적 어드레스 공간의 유닛들 내의 각각의 논리적 어드레스들을 위해 그리고 각각의 캐시 메모리 영역의 각각의 논리적 어드레스들을 위해 각각의 타이머를 포함하고 있다.
만약, 리드 명령(READ instruction)을 받는다면, 유닛(63)은 자주 사용된 어드레스 공간 내에 저장된 것들 중의 하나가 논리적 어드레스인지 여부를 결정하고, 만약 그렇다면 상응하는 타이머가 동작되는지 여부를 결정한다. 만약 그렇다면 상응하는 캐시 메모리(59)로부터 데이터를 리드한다; 그렇지 않다면, 메모리 어드레스 맵핑 테이블에 의해 정의된 상응에 따라(예를 들어, 제 1 실시예의 방법에 따라) 낸드 플래시 메모리(9)로부터 상기 데이터를 리드한다. 또 다른 경우로서, 그것은 데이터를 상기 인터페이스(3)를 거쳐 상기 장치 밖으로 전송된 패킷 안으로 인코딩한다.
본 실시예의 흐름도는 도 3의 단계 2 및 단계 3 사이에 도 9b의 단계들이(유닛 51 및 57에 의해 수행되는) 삽입된 것을 제외하고 그리고, 도 3의 단계 2 및 단계 5 사이에 도 9c의 단계들(유닛 63에 의해 수행되는)이 삽입된 것을 제외하고 도 3과 동일하다. 단계 7 및 9에서 상기 페이지에 라이트 되는 데이터는 논리적 어드레스에 관하여 마지막 라이트 명령(WRITE instruction) 내의 데이터이다. 패턴 인식 유닛(53)이 자주 사용되는 논리적 어드레스 공간으로부터 논리적 어드레스를 제거할 때마다(예를 들어, 유닛 55를 업데이트), 캐시 메모리(59)에 상응하는 영역 내의 데이터는 도 3의 단계 5에서 10에 따라 상기 낸드 플래시 메모리(9)에 라이트 된다.
본 발명의 제 3 및/또는 제 4 실시예에서, 타이머는 약 3ms와 같이 미리 정해진 기간을 수 ms로 정할 수 있다. 만약 장치가 마지막 라이트 명령을 받은 후 미리 정해진 기간 내에 호스트로부터 연결이 끊어진다면, 데이터를 잃을 위험이 있다. 그러나, ms의 순서로 미리 정해진 기간을 셋팅함으로써, 이러한 일은 발생되지 않고, 따라서 모든 데이터는 안전하게 저장될 수 있다. 본 발명의 제 3 및 제 4 실시예는 각각 0까지 가는 미리 정해진 기간의 제한을 제 1 실시예 보다 줄일 수 있다.
실시예들의 어느 것도 블록 할당 테이블을 요구하지 않는다(비록 다른 실시예들이 그러한 테이블을 사용할 가능성이 있지만).
비록 본 발명의 몇몇 실시예들 만이 자세히 설명되었지만, 본 발명의 범위 내에서 당업자에게 명확하게 될 많은 변화가 가능하다. 예를 들어, 제 2 , 제 3 및 제 4 실시예들의 특징들은 임의의 결합에 의해 쉽게 결합될 수 있고, 기술된 모든 특징의 결합(블록들의 그룹의 페이지들이 수직으로 적용되는 것을 포함) 우선한다. 따라서, 본 발명의 실시예는 논리적 어드레스 영역들이 복수의 블록들로 구성되는 그룹들 각각에 맵핑되고, 임의의 논리적 어드레스 영역 내의 논리적 어드레스들이 블록들의 그룹 내의 컬럼에 상응하고, 첫 번째 타이머 신호가 오래된 그룹에서 새로운 그룹으로 데이터의 복사를 정지하기 위해 사용되고, 두 번째(선택적으로 다른) 신호가 라이트 명령에 포함된 데이터를 낸드 플래시 메모리(9)로 라이트하는 것을 정하기 위해 사용될 수 있도록 형성할 수 있다.
더 나아가, 상기 실시예들에는 단지 하나의 낸드 플래시 메모리 소자가 있다. 그러나, 본 발명은 이러한 면에 한정되지 않고 상술한 본 발명의 원리에 따라 동작되는 하나 이상의 낸드 플래시 메모리 소자가 있을 수 있다. 예를 들어, 각각의 낸드 플래시 메모리 소자들은 논리적 어드레스 공간의 특정한 각각의 부분과 결합되며, 상기 메모리 소자의 블록과 논리적 어드레스 공간의 상응하는 부분의 각각의 영역 사이에 각각의 낸드 메모리 소자를 위해 다양한 맵핑이 있을 수 있다.
상술한 바와 같이, 본 발명은 USB 컨넥션을 통해 수행될 수 있다 - 비록 그것이 이러한 면에 국한되는 것은 아니다. USB 컨트롤러에 의해 채용되는 USB 표준은 버젼 USB2.0이 우선적이지만, 본 발명은 미래에 소개될 임의의 버전과 같이 USB 표준의 어떤 다른 버전들을 가지고 수행될 수 있다.
장치의 전체 메모리 용량은 본 발명의 범위 내에 한정되는 것은 아니다. 그 러나 적어도 1Mbyte가 바람직하고, 더 전형적으로 적어도 10Mbyte, 적어도 100Mbyte 또는 심지어 적어도 1Gbyte일 수 있다.

Claims (20)

  1. (ⅰ) 장치의 안과 밖으로 데이터 패킷을 전송하는 데이터 인터페이스(data interface),
    (ⅱ) 인터페이스 컨트롤러(interface controller),
    (ⅲ) 마스터 컨트롤 유닛(master control unit), 및
    (ⅳ) 적어도 하나의 낸드 플래시 메모리 유닛(NAND flash memory unit)을 포함하는 휴대용 데이터 저장 장치(portable data storage device)에 있어서,
    상기 인터페이스 컨트롤러는 상기 인터페이스를 통해 받은 데이터를 상기 마스터 컨트롤러 유닛으로 전송하기 위해 정렬되고,
    상기 마스터 컨트롤 유닛은 리드 명령(READ instruction)을 인코딩함으로써 특정 데이터 패킷들 및 라이트 명령(WRITE instruction)을 인코딩함으로써 다른 데이터 패킷들을 인식하기 위해 정렬되며,
    (a) 논리적 어드레스(logical address)를 표시하는 리드 명령(READ instruction)을 받을 때, 논리적 메모리 공간 내의 논리적 어드레스 영역들과 결합되는 메모리 어드레스 맵핑 테이블(memory address mapping table)을 상기 메모리 유닛 내의 각각의 첫 번째 물리적 어드레스(physical address) 영역들로 접근(access) 하고, 상기 어드레스 맵핑 테이블에 따라 상기 논리적 어드레스에 상응하는 상기 메모리 유닛 내의 물리적 어드레스로부터 데이터를 리드(read) 하고, 상기 리드 된 데이터를 포함하는 하나 이상의 데이터 패킷을 상기 데이터 인터페이스로 전송(transmit)하며,
    (b) 논리적 어드레스 및 상기 논리적 어드레스에 라이트 될 데이터를 표시하는 라이트 명령(WRITE instruction)을 받을 때, 상기 메모리 어드레스 맵핑 테이블에 따라 상기 논리적 어드레스에 상응하는 상기 물리적 어드레스가 제거된 상태(erased state)인지 여부를 결정하고:
    만약, 제거된 상태이라면, 상기 물리적 어드레스에 상기 데이터를 라이트하고, 또는
    만약, 제거된 상태가 아니라면, 두 번째 물리적 어드레스 영역과 결합되는 상기 어드레스 맵핑 테이블을 상기 논리적 어드레스를 포함하는 상기 논리적 어드레스 영역으로 수정(modify)하고, 상기 수정된 메모리 어드레스 맴핑 테이블에 따라 상기 논리적 어드레스에 상응하는 물리적 어드레스에 상기 데이터를 라이트(write) 하며, 상기 첫 번째 물리적 어드레스 영역의 다른 부분들에 저장된 임의의 데이터를 상기 두 번째 물리적 어드레스 영역의 상응하는 위치들로 복사(copy) 하며,
    상기 메모리 어드레스 맵핑 테이블을 정의하는 데이터는 상기 플래시 메모리 유닛 내의 맵핑 데이터로서 저장되고, 상기 메모리 컨트롤 유닛은 상기 메모리 어드레스 맵핑 테이블을 수정할 때, 상기 맵핑 데이터를 수정하기 위해 형성되고,
    상기 메모리 컨트롤 유닛은, 시작되었을 때, 상기 맴핑 데이터를 상기 플래시 메모리 유닛으로부터 추출하고, 램(RAM) 메모리 내의 상기 메모리 어드레스 맵핑 테이블을 생성하기 위해 정렬되는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  2. 제 1 항에 있어서, 각각의 물리적 어드레스 영역과 논리적 어드레스 영역 사이의 맴핑을 정의하는 상기 맵핑 데이터의 일부분은 상기 물리적 어드레스 영역 내에 저장되는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  3. 제 2 항에 있어서, 임의의 물리적 어드레스 영역과 관련된 상기 맵핑 데이터는 상기 물리적 어드레스 영역의 하나 이상의 페이지들의 컨트롤 데이터 저장 섹터 내에 저장되는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 상기 물리적 메모리 공간은,
    (ⅰ) 상기 메모리 어드레스 맴핑 테이블에 의해 논리적 어드레스 영역들과 결합된 물리적 메모리 영역들, 및
    (ⅱ) 상기 메모리 어드레스 멥핑 테이블을 수정하는 상기 마스터 컨트롤 유닛의 동작하에 상기 논리적 어드레스들과 결합될 수 있는 대기열(queuing) 물리적 메모리 영역들을 포함하는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  5. 제 4 항에 있어서,상기 대기열(queuing) 물리적 메모리 영역들은 제거된 상태(erased state)인 것을 특징으로 하는 휴대용 데이터 저장 장치.
  6. 제 4 항에 있어서, 상기 물리적 메모리 공간은 상기 메모리 어드레스 멥핑 테이블을 수정하는 상기 마스터 컨트롤 유닛의 동작하에 상기 논리적 어드레스들과 결합될 수 없는 예약된(reserved) 물리적 메모리 영역들을 더 포함하는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  7. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 상기 물리적 어드레스 영역들은 상기 메모리 유닛의 각각의 블록들인 것을 특징으로 하는 휴대용 데이터 저장 장치.
  8. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 상기 물리적 어드레스 영역들은 상기 메모리 유닛 내의 블록의 그룹들이고, 상기 그룹들은 그룹핑(grouping) 테이블에 따라 정의되는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  9. 제 8 항에 있어서, 상기 블록들의 대다수 그룹들은 규칙에 따라 정의되고, 상기 그룹핑(grouping) 테이블은 상기 규칙에 예외적인 그룹들을 정의하는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  10. 제 9 항에 있어서, 상기 메모리 어드레스 맵핑 테이블은 상기 규칙에 예외적인 그룹들 중의 하나와 결합되는 임의의 논리적 어드레스 영역에 관한 플래그(flag)를 포함하는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  11. 제 8 항에 있어서, 상기 마스터 컨트롤 유닛은 논리적 어드레스 영역 안의 연속적으로 따르는 논리적 어드레스들을 상기 블록들 중의 다른 것들 내의 각각의 페이지들에 결합시키는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  12. 제 11 항에 있어서, 상기 마스터 컨트롤 유닛은 연속적인 논리적 어드레스들을 셋들(sets)에 결합시키고, 상기 논리적인 어드레스들의 셋들의 각각은 각 그룹 안의 블록들의 수와 같은 맴버들의 수를 가지며, 각각의 임의의 셋(set)에 대해 상기 마스터 컨트롤 유닛은 상기 셋(set)의 논리적 어드레스들을 각각의 블록들의 상응하는 페이지들에 결합시키는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  13. 제 1 항에 있어서, 상기 마스터 컨트롤 유닛은 첫 번째 라이트 명령(WRITE instruction)의 수신에 응답하여 미리 정해진 기간 내에 두 번째 라이트 명령이 미리 정해진 유사한 기준(criterion)에 따라 수신되지 않음이 결정되면 상기 라이트 명령을 수행하기 위해 정렬되는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  14. 제 13 항에 있어서, 임의의 논리적 어드레스 영역과 관련된 상기 메모리 어드레스 수정 테이블의 수정(modification) 이후, 상기 첫 번째 물리적 어드레스 영역에서 새로운 두 번째 어드레스 영역으로 상기 데이터를 복사하기 이전에, 상기 기준(criterion)은 상기 두 번째 라이트 명령이 상기 복사될 데이터의 임의의 논리적 어드레스 영역 내의 위치에 상응하는 논리적 어드레스와 관련되는가 여부이고, 이러한 경우에 상기 복사 동작을 중지하고, 대신 상기 두 번째 물리적 어드레스 영역의 위치에 상기 두 번째 라이트 명령에 의해 특정된 데이터를 라이트 하도록 상기 라이트 명령이 수신되는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  15. 제 13항에 있어서, 상기 마스터 컨트롤 유닛은 데이터 캐시(cache)로 액세스 하고, 상기 첫 번째 라이트 명령에 응답하여 상기 데이터를 상기 데이터 캐시에 라이트하고, 상기 기준(criterion)은 상기 두 번째 라이트 명령이 첫 번째 명령과 같이 동일한 논리적 어드레스에 관한 것이고, 이러한 경우에 상기 두 번째 라이트 명령에서 특정된 상기 데이터를 상기 데이터 캐시에 라이트 하도록 하는 결정은 명확한 것인 것을 특징으로 하는 휴대용 데이터 저장 장치.
  16. 제 13 항에 있어서, 상기 마스터 컨트롤 유닛은 데이터 캐시(cache)로 액세스 하고, 상기 첫 번째 라이트 명령에 응답하여 상기 라이트 명령이 하나 이상의 선택된 논리적 어드레스들에 관한 것이라면 상기 데이터를 상기 데이터 캐시에 라이트하고, 상기 기준(criterion)은 상기 두 번째 라이트 명령이 첫 번째 명령과 같이 동일한 논리적 어드레스에 관한 것이고, 이러한 경우에 상기 두 번째 라이트 명령에서 특정된 상기 데이터를 상기 데이터 캐시에 라이트 하도록 하는 결정이 명확한 것을 특징으로 하는 휴대용 데이터 저장 장치.
  17. 제 16 항에 있어서, 복수 개의 논리적 어드레스들이 있는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  18. 제 1 항에 있어서, 상대적으로 높은 주파수를 가지고 야기하는 라이트 명령에서 인코딩된 논리적 어드레스들을 인식하고, 상기 선택된 논리적 어드레스들과 같이 상기 인식된 논리적 어드레스들을 셋팅 하기 위한 패턴 인식 유닛(pattern recognition unit)을 더 포함하는 것을 특징으로 하는 휴대용 데이터 저장 장치.
  19. 삭제
  20. 삭제
KR1020067015206A 2006-07-27 2004-01-19 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치 KR100781196B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067015206A KR100781196B1 (ko) 2006-07-27 2004-01-19 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020067015206A KR100781196B1 (ko) 2006-07-27 2004-01-19 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치

Publications (2)

Publication Number Publication Date
KR20060129329A KR20060129329A (ko) 2006-12-15
KR100781196B1 true KR100781196B1 (ko) 2007-12-03

Family

ID=37731369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067015206A KR100781196B1 (ko) 2006-07-27 2004-01-19 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치

Country Status (1)

Country Link
KR (1) KR100781196B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010736B2 (en) 2007-02-13 2011-08-30 Samsung Electronics Co., Ltd. Nonvolatile semiconductor memory device for supporting high speed search in cache memory
KR101076688B1 (ko) 2011-01-05 2011-10-26 대아티아이(주) 분산 시스템용 데이터 공유 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
KR101226600B1 (ko) 2011-03-09 2013-01-28 주식회사 이에프텍 메모리 시스템 및 그의 메모리 맵핑 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101003102B1 (ko) 2008-09-24 2010-12-21 한국전자통신연구원 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치
KR102275706B1 (ko) * 2014-06-30 2021-07-09 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
CN111966611B (zh) * 2020-08-03 2023-12-12 南京扬贺扬微电子科技有限公司 具有逻辑转物理地址架构的spi闪存控制芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145051A (en) * 1995-07-31 2000-11-07 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
WO2001061692A1 (en) * 2000-02-21 2001-08-23 Trek 2000 International Ltd A portable data storage device
US20030123287A1 (en) * 2001-09-28 2003-07-03 Gorobets Sergey Anatolievich Non-volatile memory control
US20030217206A1 (en) * 2002-05-13 2003-11-20 Poo Teng Pin System and apparatus for compressing and decompressing data stored to a portable data storage device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145051A (en) * 1995-07-31 2000-11-07 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
WO2001061692A1 (en) * 2000-02-21 2001-08-23 Trek 2000 International Ltd A portable data storage device
US20030123287A1 (en) * 2001-09-28 2003-07-03 Gorobets Sergey Anatolievich Non-volatile memory control
US20030217206A1 (en) * 2002-05-13 2003-11-20 Poo Teng Pin System and apparatus for compressing and decompressing data stored to a portable data storage device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010736B2 (en) 2007-02-13 2011-08-30 Samsung Electronics Co., Ltd. Nonvolatile semiconductor memory device for supporting high speed search in cache memory
KR101076688B1 (ko) 2011-01-05 2011-10-26 대아티아이(주) 분산 시스템용 데이터 공유 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
KR101226600B1 (ko) 2011-03-09 2013-01-28 주식회사 이에프텍 메모리 시스템 및 그의 메모리 맵핑 방법

Also Published As

Publication number Publication date
KR20060129329A (ko) 2006-12-15

Similar Documents

Publication Publication Date Title
JP4047908B2 (ja) メモリアドレスマッピングテーブルを使用するポータブルデータ記憶デバイス
US6189081B1 (en) Non-volatile semiconductor storage with memory requirement and availability comparison means and method
US9489301B2 (en) Memory systems
EP0712067B1 (en) Flash disk card
TW449690B (en) Data processing system, block erasing type memory device and memory medium storing program for controlling memory device
USRE42263E1 (en) Address conversion unit for memory device
JPWO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
WO2004001605A1 (en) Memory device, memory managing method and program
US20030065899A1 (en) Memory system sectors
JP4977703B2 (ja) 予定再生操作を伴う不揮発性メモリ
KR20070024504A (ko) 기억 장치, 메모리 관리 방법 및 프로그램
CN101833482A (zh) 用于非易失存储系统的电源管理数据块
WO2005103903A1 (ja) 不揮発性記憶システム
KR101409095B1 (ko) 메모리 장치 및 그 제어 방법
TW200413916A (en) Method and apparatus for grouping pages within a block
JP2010152703A (ja) 不揮発性記憶装置、情報記録システム、及び情報記録方法
EP1514189A1 (en) Memory device, memory managing method and program
JP2009519555A (ja) 論理アドレス形ファイル記憶
KR100781196B1 (ko) 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치
US20060155918A1 (en) Method of controlling a semiconductor memory device applied to a memory card
JP4586469B2 (ja) メモリ制御装置、メモリ制御方法、プログラム
JP2006252137A (ja) 不揮発性記憶装置の最適化方法
JP2018185842A (ja) メモリ制御装置及び情報処理システム
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
JP2013033338A (ja) メモリシステム

Legal Events

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

Payment date: 20111103

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee