KR20070024504A - 기억 장치, 메모리 관리 방법 및 프로그램 - Google Patents

기억 장치, 메모리 관리 방법 및 프로그램 Download PDF

Info

Publication number
KR20070024504A
KR20070024504A KR1020067020537A KR20067020537A KR20070024504A KR 20070024504 A KR20070024504 A KR 20070024504A KR 1020067020537 A KR1020067020537 A KR 1020067020537A KR 20067020537 A KR20067020537 A KR 20067020537A KR 20070024504 A KR20070024504 A KR 20070024504A
Authority
KR
South Korea
Prior art keywords
group
address
data
block
user data
Prior art date
Application number
KR1020067020537A
Other languages
English (en)
Other versions
KR100847506B1 (ko
Inventor
시유이치 키쿠치
Original Assignee
동경 엘렉트론 디바이스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 동경 엘렉트론 디바이스 주식회사 filed Critical 동경 엘렉트론 디바이스 주식회사
Publication of KR20070024504A publication Critical patent/KR20070024504A/ko
Application granted granted Critical
Publication of KR100847506B1 publication Critical patent/KR100847506B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card

Abstract

플래시 메모리(11)의 기억 영역에는 데이터 소거 단위로서의 블록보다 작은 단위로서 각 그룹 마다 물리 그룹 어드레스가 할당되고, 그 그룹은 복수의 페이지를 포함하고, 그 페이지는 복수의 칼럼을 포함한다. 기록 대상의 데이터와 기록 목적지의 논리 어드레스가 공급되는 경우, CPU(121)는 기록 포인터에 의해 표시되는 그룹 내의 칼럼에 데이터를 기록하여 그 공급된 논리 어드레스를 그 칼럼과 연관시킨다. 이 칼럼을 가지는 그룹의 물리 그룹 어드레스와 논리 그룹 어드레스 사이의 관계는 RAM(123)의 논리/물리 변환 테이블에 기억된다. 블록에 기억된 데이터는, 빈 블록을 가지지 않는 블록들의 개수가 미리 결정된 개수 이하로 도달했을 때 소거된다.
물리 그룹 어드레스, 논리 그룹 어드레스

Description

기억 장치, 메모리 관리 방법 및 프로그램{STORAGE DEVICE, MEMORY MANAGEMENT METHOD AND PROGRAM}
본 발명은 데이터 재기록에 따라 소거되는 데이터로 인한 액세스 효율성이 감소되는 것을 억제하기에 적합한 기억 장치에 관한 것으로, 보다 자세하게는 기억 장치의 기억 영역을 관리하기 위한 메모리 관리 방법 및 프로그램에 관한 것이다.
EEPROM(Electrically Erasable/Programmable Read Only Memory) 플래시 모리는 컴퓨터에 의해 액세스가능한(데이터 판독/기록가능하고 그리고 소거가능한) 기억 매체로서 사용된다.
플래시 메모리의 데이터 소거는, 블록으로 지칭되는, 기억 용량의 단위에 기초하여 수행된다. 플래시 메모리에서는, 제조 단계에서 데이터가 정상적으로 기억되지 않는 불량 메모리 블록이 발생하는 것을 충분히 방지할 수 없었다. 따라서, 일부 경우에, 정규 메모리 블록들의 배열이, 불량 메모리 블록들로 인해 물리적으로 비연속적으로 된다. 국제 공개 제 WO99/30239호는, 메모리 블록들이 물리적으로 비연속적으로 배열되더라도 메모리 블록에의 액세스를 용이하게 하는기억 장치를 개시하고 있다. 이 공보에 따르면, 플래시 메모리의 메모리 블록들에서, 물리 어드레스들과는 별개의 연속적인 논리 어드레스들이 플래시 메모리에 의해 동적으 로 할당된다. 또한, 논리 어드레스와의 관계를 나타내는 어드레스 변환 테이블은 플래시 메모리에 의해 생성된다. 그 후, 물리 메모리 어드레스는 논리 메모리 어드레스로 변환되어, 비연속적인 메모리 블록들에 의해 발생되는 플래시 메모리로의 액세스의 효율성 감소를 억제한다.
종래의 플래시 메모리에서, 물리 메모리 어드레스의 할당은 블록 단위로 수행된다. 논리 메모리 어드레스로부터 페이지를 특정하기 위하여, 논리 메모리 어드레스와 연관되는 물리 메모리 어드레스에 부가하여 블록 내에서의 페이지들의 순서를 나타내는 페이지 어드레스를 사용하여 그 페이지를 특정하고 있다. 또한, 데이터가 동일한 블록 내의 제 1 섹터로부터 순서대로 기억된다고 가정하면, 연속적으로 공급되는 데이터(예를 들어, 하나의 파일을 구성하는 데이터)는 동일한 블록 내의 연속적인 페이지들에 기억된다. 따라서, 데이터를 재기록하는 경우에는, 재기록 대상 데이터가 블록에 기억되는 페이지들의 순서를 유지할 필요가 있다. 더욱 자세하게는, 무엇 보다도, 플래시 메모리는, 재기록 대상 데이터가 데이터의 순서가 유지되는 방식으로 전달 목적지 빈 블록에 기억되는 전달 소스 블록으로부터 재기록가능하지 않은 데이터를 전달한다. 즉, 전달 소스 블록의 n 번째 페이지의 데이터는, 전달 목적지의 n 번째 페이지로 전달되고, 여기서 n(n은 1 이상의 정수)은 페이지의 순서이다. 또한, 재기록 대상 데이터는, 재기록되는 데이터의 순서가 재기록되지 않는 데이터의 순서와 동일하게 유지되는 방식으로 플래시 메모리에 의해 재기록된다. 즉, 복사 소스 블록의 m 번째 페이지에 데이터를 재기록함으로써 획득되는 데이터는, 전달 목적지의 m 번째 페이지로 전달되며, 여기서 m(m은 1 이 상의 정수)은 페이지들의 순서이다. 그 후, 플래시 메모리는 전달 소스 블록에 기억된 기억 내용을 소거한다.
데이터 소거 처리에서, 데이터가 소거되어야 하는 블록의 데이터는 모두 소거된다. 예를 들어, 하나의 블록에 대한 기억용량과 비교하여 데이터의 매우 작은량을 재기록하는 경우에, 대응하는 데이터와 관련되지 않은 데이터가 기억되는 페이지가 초기화되고, 데이터가 기억되지 않는 빈 페이지가 초기화된다. 즉, 재기록 대상 데이터의 량이 작은 경우에도, 블록 단위로 페이지에 기억되는 많은 데이터는 소거되어야 한다.
이러한 이유로, 불량한 효율을 가진 데이터 소거 처리는, 작은 량의 데이터를 재기록하도록 자주 수행되어, 메모리에의 액세스의 효율성을 저하시킨다.
특히, OS(Operating System)가 하드 디스크 장치 또는 플랙시블 디스크가 기억 내용을 관리하는 경우와 동일한 방식으로 플래시 메모리의 기억 내용을 관리하는 경우, 플래시 메모리에의 액세스 효율성이 악화된다. 즉, OS에 의해 관리되고, 각각의 데이터와 이러한 데이터가 기억되는 논리 어드레스들 사이의 관계를 나타내는 FAT(File Allocation Table)가 플래시 메모리에 기록되고, 자주 업데이트된다. FAT 내의 데이터 량은 일반적으로 하나의 블록에 대한 기억 내용과 비교하여 매우 작으므로, 불량한 효율을 가진 데이터 소거 처리는 FAT의 재기록에 따라 자주 수행된다.
또한, 블록 당 매우 큰 기억 용량을 가지는 플래시 메모리(예를 들어, 하나의 블록은 65 페이지를 포함하고,하나의 페이지는 약 2 킬로바이트의 기억 용량을 가짐)가 최근에 제조되고 있다. 이러한 플래시 메모리의 기억 내용이 전술한 종래의 방법에 의해 관리되는 경우에, 큰 기억 용량의 데이터 소거 처리는 작은 데이터량을 재기록하는 것에 따라 수행되어, 플래시 메모리에의 액세스 효율성을 저하시킨다.
또한, 데이터 소거 처리가 전기(electric) 파일의 재기록에 따라 수행되는 경우에, 데이터는 전기 파일과 관련되지 않고 여전히 기억해 두어야 하는 데이터를 유지하기 위하여, 또 다른 블록으로 세이브해야 한다. 따라서, 일반적으로, 데이터 소거 처리의 효율이 나빠질 수록, 데이터를 세이브하는데 요구되는 처리가 더 많이 증가되므로, 플래시 메모리로의 원활한 액세스를 방해한다.
특히, 블록 당 매우 큰 기억 용량을 가진 플래시 메모리의 데이터 소거 처리에 관하여, 1 회 당 세이브되는 데이터량은 크게 증가하므로, 플래시 메모리로의 원활한 액세스를 수행하기가 매우 어렵게 된다.
전술한 상황을 고려하여, 본 발명의 목적은, 데이터 재기록에 따른 데이터 소거로 인한 액세스 효율의 감소를 억제하기에 적합한 기억장치 및 메모리 관리 방법을 제공하는 것이다. 또한, 본 발명의 목적은, 기억 영역으로의 액세스를 원활하게 수행하기에 적합한 기억 장치, 및 메모리 관리 방법을 제공하는 것이다.
상기 목적을 달성하기 위하여, 본 발명의 제 1 양태에 따른 기억 장치는, 사용자 데이터를 기억하기 위한 기억 영역들로서 복수의 메모리 블록들을 포함하는 기억 수단(11)으로서, 각 메모리 블록은 상기 메모리 블록보다 작은 기억 용량을 각각 가지는 복수의 그룹들을 결합함으로써 형성되고, 각 그룹은 상기 그룹보다 작은 기억 용량을 각각 가지는 복수의 페이지들을 결합함으로써 형성되는, 기억 수단;
상기 기억 영역 내의 그룹의 물리 위치를 나타내는 물리 그룹 어드레스를 상기 그룹의 논리 위치를 나타내는 논리 그룹 어드레스와 연관시키기 위한 제 1 테이블(61)을 기억하는 테이블 기억 수단(123);
사용자 데이터가 상기 그룹으로부터 기억될 수 있는 빈 그룹을 획득하고 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하는 포인터 기억 수단(123); 및
사용자 데이터, 상기 사용자 데이터가 기록되는 그룹을 나타내는 논리 그룹 어드레스, 및 상기 그룹에 속하는 페이지 내에 상기 사용자 데이터를 기록하는 기억 위치를 나타내는 그룹 내 어드레스의 공급 시에, 상기 포인터에 의해 나타내는 상기 빈 그룹에 속하는 페이지의 그룹 내 어드레스에 의해 표시되는 기억 위치에서 상기 사용자 어드레스를 기록하고, 상기 빈 그룹의 물리 그룹 어드레스와 상기 공급된 논리 그룹 어드레스와 연관시키기 위한 데이터를 상기 제 1 테이블(61)에 추가적으로 기록하는 기록 수단(12)을 포함한다.
전술한 기억 장치에 따르면, 사용자 데이터는 블록보다 작은 단위로 기록되므로, 새로운 빈 블록(사용자 데이터가 기억되어 있지 않은 블록)이 검색되고, 사용자 데이터가 기록될 때 마다 그 새로운 빈 블록에 사용자 데이터를 기록하는동작에 대한 필요성을 제거한다. 그 후, 블록에 대한 데이터 소거는 사용자 데이터를 기록하는 경우에 수행되어서는 안된다. 또한, 데이터 기록에 따라 변경되지않은 부분을 전달하기 위한 처리는 블록보다 작은 단위로 수행된다. 따라서, 기억 장치로의 액세스의 효율성 감소가 억제될 수 있다.
또한, 이 기억 시스템에서, 논리 어드레스와 물리 어드레스 사이의 관계는, 블록 보다 작은 단위로 그리고 페이지 또는 칼럼보다 큰 단위로 관리된다. 따라서, 논리 어드레스와 물리 어드레스 사이의 관계를 나타내는 데이터를 기억하는, 데이터의 기억 용량은, 논리 어드레스와 물리 어드레스 사이의 관계에 관리가 페이지 단위 또는 칼럼 단위로 수행되는 경우와 비교하여 감소될 수 있다. 또한, 논리 어드레스와 물리 어드레스 사이의 관계에 대한 관리는, 이 관리가 블록 단위로 수행되는 경우와 비교하여 정확하게 수행된다.
또한, 기록 수단(12)은, 새로운 사용자 데이터가 기록되는 기억 위치가 속하는 그룹의 논리 그룹 어드레스를 상기 기억 위치의 그룹 내 어드레스에 의해 지정된 다른 기억 위치에 기억된 사용자 데이터가 불필요한 데이터임을 나타내는 데이터와 연관시키는 사용자 데이터 무효화 수단(12);
상기 사용자 데이터 무효화 수단(12)에 의해 불필요한 것으로 결정된 사용자 데이터를 기억하는 상기 메모리 블록들로부터 데이터를 소거해야 하는 메모리 블록을 지정하는 소거 대상 지정 수단(12); 및
상기 소거 대상 지정 수단(12)에 의해 지정된 메모리 블록에 저장되는 사용자 데이터가 필요한 것인지를 판정하고, 필요한 것으로 판정되면 상기 사용자 데이터를 또 다른 메모리 블록에 전달하고, 상기 소거 대상 지정 수단(12)에 의해 지정된 메모리 블록에 의해 기억된 데이터를 추가적으로 소거하는 소거 수단(12)을 포함한다.
또한, 기억 장치는, 상기 메모리 블록에 빈 블록이 포함되어 있는지를 식별하기 위한 정보를 포함하는 제 2 테이블(51)을 기억하는 기억 수단(123)을 더 포함할 수도 있으며,
여기서 상기 기록 수단(12)은, 상기 공급된 사용자 데이터를 상기 빈 블록에 기록한 결과, 상기 그룹을 포함하는 메모리 블록으로부터 상기 빈 그룹을 소거하는 경우, 상기 메모리 블록이 빈 그룹을 포함하고 있지 않음을 나타내는 정보를 상기 제 2 테이블(51)에 기록하는 제 1 업데이트 수단(12); 및
데이터가 상기 소거 수단(12)에 의해 소거되는 메모리 블록이 빈 블록을 포함하고 있음을 나타내는 정보를 제 2 테이블(51)에 기록하는 제 2 업데이트 수단(12)을 포함하며,
상기 소거 대상 지정 수단(12)은 빈 그룹을 포함하고 있지 않음을 나타내는 정보를 상기 제 2 테이블(51)에 기록하는 상기 메모리 블록들로부터 데이터를 소거해야 하는 대상 메모리 블록을 지정할 수도 있다.
또한, 상기 기록 수단(12)은 상기 빈 그룹을 포함하는 메모리 블록들의 개수가 미리결정된 조건을 충족하는지를 판정하는 빈 블록수 판정 수단(12)을 구비할 수도 있으며, 여기서 상기 소거 대상 지정 수단(12)은, 상기 빈 그룹을 포함하는 메모리 블록들의 개수가 상기 미리결정된 조건을 충족하지 못한다고 판정되는 경우, 불필요한 사용자 데이터를 기억하는 메모리 블록들로부터 데이터를 소거해야 하는 대상 메모리 블록을 지정할 수도 있다.
또한, 상기 물리 그룹 어드레스는 주기적으로 할당된 순위(ranking)를 가지며, 상기 물리 그룹 어드레스에 의해 표시되는 그룹이 속하는 블록을 나타내는 블록 어드레스를 포함할 수도 있으며,
상기 소거 대상 지정 수단(12)은 불필요한 사용자 데이터를 기억하는 상기 메모리 블록들 중에서 데이터가 최종적으로 소거되는 블록 이후의 제 1 블록 어드레스를 가지는 블록을, 데이터를 소거해야 하는 대상 블록으로서 지정할 수도 있다.
또한, 상기 제 2 테이블(51)은 불필요한 사용자 데이터가 각 메모리 블록에 포함되어 있는지를 식별하기 위한 정보를 더 포함할 수도 있으며,
상기 사용자 데이터 무효화 수단(12)은 새로운 사용자 데이터가 기록되는 기억 위치가 속하는 그룹의 논리 그룹 어드레스 및 상기 기억 위치의 그룹 내 어드레스에 의해 지정되는 다른 기억 위치를 포함하는 메모리 블록에 불필요한 사용자 데이터가 기억되어 있음을 나타내는 정보를 상기 제 2 테이블(51)에 기록하는 기록 수단(12)을 포함할 수도 있으며,
상기 소거 대상 지정 수단(12)은 불필요한 사용자 데이터가 기억되어 있음을 나타내는 정보를 기록하는 상기 메모리 블록들로부터 데이터를 소거해야 하는 대상 메모리 블록을 지정할 수도 있다.
또한, 상기 물리 그룹 어드레스는 주기적으로 할당된 순위를 가질 수도 있으며,
상기 포인터 기억 수단(123)은, 상기 사용자 데이터가 기록되는 결과, 상기 사용자 데이터를 기억할 수 있는 페이지를 소거하는 그룹의 물리 그룹 어드레스 이후의 물리 그룹 어드레스를 각각 가지는 빈 그룹들 중에서 제 1 빈 그룹을 획득할 수도 있다.
또한, 기억 장치는, 사용자 데이터가 판독되는 그룹의 논리 그룹 어드레스와, 상기 사용자 데이터가 상기 그룹에 속하는 페이지에 기억되는 기억 위치를 지정하는 그룹 내 어드레스의 공급시에, 상기 논리 그룹 어드레스와 연관되는 물리 그룹 어드레스를 어드레스 변환 테이블에 기초하여 획득하고, 상기 획득된 물리 그룹 어드레스에 의해 나타낸 그룹에 속하는 페이지에서 상기 그룹 내 어드레스에 의해 지정된 기억 위치로부터 판독된 사용자 데이터를 추가적으로 판독하는 판독 수단(12)을 더 포함할 수도 있다.
또한, 기억 장치는, 사용자 데이터를 기억하는 내용에 기초하여 수학적 계산을 수행하여 에러 정정 코드를 생성하는 코드 생성 수단(12); 및
상기 코드 생성 수단(12)에 의해 생성된 상기 에러 정정 코드를 기억하는 코드 기억 수단(11)을 더 포함할 수도 있으며,
여기서 상기 판독 수단(12)은, 상기 판독된 사용자 데이터와 상기 코드 기억 수단(11)에 의해 기억된 상기 에러 정정 코드에 기초하여 상기 사용자 데이터가 정확하게 판독되었는지를 판정하며, 상기 사용자 데이터가 정확하게 판독되지 않은 경우에 상기 에러 정정 코드에 기초하여 상기 사용자 데이터를 복원하여 상기 복원된 데이터를 사용자 데이터와 바꿀 수도 있다.
또한, 상기 페이지는 하나 이상의 칼럼을 포함하며,
상기 칼럼의 기억 위치에서의 그룹 내 어드레스는, 상기 그룹 내에서의 상기 칼럼을 포함하는 페이지의 논리 위치를 지정하는 그룹 내 페이지 어드레스 및 상기 페이지 내에서의 상기 칼럼의 논리 위치를 지정하는 칼럼 어드레스를 포함할 수도 있다.
또한, 상기 제 1 테이블(61)에 의해 기억된 상기 물리 그룹 어드레스는, 그룹들의 각 세트에 대하여 할당된 물리 어드레스 및 그룹들의 상기 세트에서의 논리 위치를 나타내는 어드레스를 포함할 수도 있다.
또한, 상기 기억 장치는, 상기 기억 수단(11)에 기억되는 제 1 테이블(61)을 기억하는 테이블 기억 영역의 물리 어드레스를 상기 테이블 기억 영역의 논리 위치를 나타내는 어드레스와 연관시키기 위한 리스트를 기억하는 리스트 기억 수단(123)을 더 포함할 수도 있으며,
여기서, 상기 기록 수단(12)은 상기 테이블 기억 영역의 논리 위치를 나타내는 어드레스에 기초하여 상기 물리 어드레스를 획득하고, 상기 획득된 물리 어드레스에 대응하는 기억 영역에 기억되는 데이터에 기초하여 상기 논리 그룹 어드레스를 획득할 수도 있다.
또한, 기억 장치는, 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하도록 상기 기억된 사용자 데이터를 상기 그룹으로부터 복사할 수 있는 상태에 있는 빈 그룹을 획득하는 제 2 포인터 기억 수단(123)을 더 포할 수 도 있으며,
여기서 상기 기록 수단(12)은, 상기 기억된 사용자 데이터가 상기 빈 그룹으로 복사되는 경우 상기 제 2 기억 수단(123)에 의해 기억되는 포인터에 의해 표시되는 빈 그룹에 상기 사용자 데이터를 복사하고, 상기 사용자 데이터가 기억되는 논리 그룹을 상기 빈 그룹의 물리 그룹 어드레스와 연관시키는 데이터를 상기 테이블에 추가적으로 기록할 수도 있다.
본 발명의 제 2 양태에 다른 메모리 관리 방법은, 사용자 데이터를 기억하기 위한 기억 영역들로서 복수의 메모리 블록들을 포함하는 기억 수단(11)을 관리하기 위한 메모리 관리 방법이며,
각 메모리 블록은 상기 메모리 블록보다 작은 기억 용량을 각각 가지는 복수의 그룹들을 결합함으로써 형성되고, 각 그룹은 상기 그룹보다 작은 기억 용량을 각각 가지는 복수의 페이지들을 결합함으로써 형성되며,
상기 메모리 관리 방법은, 상기 기억 영역 내의 그룹의 물리 위치를 나타내는 물리 그룹 어드레스를 상기 그룹의 논리 위치를 나타내는 논리 그룹 어드레스와 연관시키기 위한 제 1 테이블(61)을 기억하는 테이블 기억 단계;
사용자 데이터가 상기 그룹으로부터 기억될 수 있는 빈 그룹을 획득하고 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하는 포인터 기억 단계; 및
사용자 데이터, 상기 사용자 데이터가 기록되는 그룹을 나타내는 논리 그룹 어드레스, 및 상기 그룹에 속하는 페이지 내에 상기 사용자 데이터를 기록하는 기억 위치를 나타내는 그룹 내 어드레스의 공급 시에, 상기 포인터에 의해 나타내는 상기 빈 그룹에 속하는 페이지의 그룹 내 어드레스에 의해 표시되는 기억 위치에서 상기 사용자 어드레스를 기록하고, 상기 빈 그룹의 물리 그룹 어드레스와 상기 공급된 논리 그룹 어드레스와 연관시키기 위한 데이터를 상기 제 1 테이블(61)에 추가적으로 기록하는 기록 단계를 포함한다.
전술한 기억 장치에 따르면, 사용자 데이터는 블록보다 작은 단위로 기록되므로, 새로운 블록(사용자 데이터가 저장되어 있지 않은 블록)이 검색되고, 사용자 데이터가 기록될 때 마다 새로운 빈 블록에 사용자 데이터를 기록해야 하는 동작에 대한 필요성을 제거한다. 그 후, 블록에 대하여 불량한 효율을 가진 데이터 소거가 사용자 데이터의 기록시에 수행되지 않아도 된다. 또한, 데이터 기록에 따라 변경되지 않은 부분을 전송하는 처리는 블록보다 더 작은 단위로 수행된다. 따라서, 기억 장치에의 액세스 효율의 감소를 억제할 수 있다.
또한, 이 기억 시스템에서, 논리 어드레스와 물리 어드레스 사이의 관계는, 블록 보다 더 작은 단위로 그리고 페이지 또는 칼럼 보다 더 큰 단위로 관리된다. 따라서, 논리 어드레스와 물리 어드레스 사이의 관계를 나타내는 데이터를 기억하는, 테이블의 기억 용량은, 논리 어드레스와 물리 어드레스 사이의 관계에 대한 관리가 페이지 단위 또는 칼럼 단위로 수행되는 경우와 비교하여 감소될 수도 있다. 또한, 논리 어드레스와 물리 어드레스 사이의 관계에 대한 관리는, 관리가 블록 단위로 수행되는 경우와 비교하여 정확하게 수행된다.
본 발명의 제 3 양태에 따른 프로그램은, 사용자 데이터를 기억하기 위한 기억 영역들로서 복수의 메모리 블록들을 포함하는 기억 수단(11)에 접속되는 컴퓨터로 하여금 기능들 실행하게 하는 프로그램이며, 각 메모리 블록은 상기 메모리 블록보다 작은 기억 용량을 각각 가지는 복수의 그룹들을 결합함으로써 형성되고, 각 그룹은 상기 그룹보다 작은 기억 용량을 각각 가지는 복수의 페이지들을 결합함으로써 형성되며,
상기 기능들은, 상기 기억 영역 내의 그룹의 물리 위치를 나타내는 물리 그룹 어드레스를 상기 그룹의 논리 위치를 나타내는 논리 그룹 어드레스와 연관시키기 위한 제 1 테이블(61)을 기억하는 테이블 기억 수단(123)으로서의 기능;
사용자 데이터가 상기 그룹으로부터 기억될 수 있는 빈 그룹을 획득하고 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하는 포인터 기억 수단(123)으로서의 기능; 및
사용자 데이터, 상기 사용자 데이터가 기록되는 그룹을 나타내는 논리 그룹 어드레스, 및 상기 그룹에 속하는 페이지 내에 상기 사용자 데이터를 기록하는 기억 위치를 나타내는 그룹 내 어드레스의 공급 시에, 상기 포인터에 의해 나타내는 상기 빈 그룹에 속하는 페이지의 그룹 내 어드레스에 의해 표시되는 기억 위치에서 상기 사용자 어드레스를 기록하고, 상기 빈 그룹의 물리 그룹 어드레스와 상기 공급된 논리 그룹 어드레스와 연관시키기 위한 데이터를 상기 제 1 테이블(61)에 추가적으로 기록하는 기록 수단(12)으로서의 기능을 포함한다.
이러한 프로그램을 실행하는 컴퓨터에 따르면, 사용자 데이터의 기록은 블록 보다 더 작은 단위로 수행되므로, 새로운 블록(사용자 데이터가 저장되어 있지 않은 블록)이 검색되고, 사용자 데이터가 기록될 때 마다 새로운 빈 블록에 사용자 데이터를 기록해야 하는 동작에 대한 필요성을 제거한다. 그 후, 블록에 대하여 불량한 효율을 가진 데이터 소거가 사용자 데이터의 기록시에 수행되지 않아도 된다. 또한, 데이터 기록에 따라 변경되지 않은 부분을 전송하는 처리는 블록보다 더 작은 단위로 수행된다. 따라서, 기억 장치에의 액세스 효율의 감소를 억제할 수 있다.
또한, 이 기억 시스템에서, 논리 어드레스와 물리 어드레스 사이의 관계는, 블록 보다 더 작은 단위로 그리고 페이지 또는 칼럼 보다 더 큰 단위로 관리된다. 따라서, 논리 어드레스와 물리 어드레스 사이의 관계를 나타내는 데이터를 기억하는, 테이블의 기억 용량은, 논리 어드레스와 물리 어드레스 사이의 관계에 대한 관리가 페이지 단위 또는 칼럼 단위로 수행되는 경우와 비교하여 감소될 수도 있다. 또한, 논리 어드레스와 물리 어드레스 사이의 관계에 대한 관리는, 관리가 블록 단위로 수행되는 경우와 비교하여 정확하게 수행된다.
본 발명에 따르면, 데이터 재기록에 따른 데이터 소거로 인한 액세스 효율성의 감소를 억제하는데 적합한 기억 장치 및 메모리 관리 방법을 제공할 수 있다.
또한, 본 발명에 따르면, 기억 영역에의 액세스를 원활하게 수행하기에 적합한 기억 장치 및 메모리 관리 방법을 제공할 수 있다.
본 발명의 이러한 목적 및 다른 목적은 이하의 상세한 설명부 및 첨부된 도면을 참조할 때 더욱 명확하게 된다.
도 1 은 본 발명의 실시형태에 따른 기억 시스템의 구성을 나타내는 블록도 이다.
도 2 는 플래시 메모리의 기억 영역의 논리적 구조를 개략적으로 나타내는 도면이다.
도 3 은 블록의 논리적 구조를 개략적으로 나타내는 도면이다.
도 4 는 디렉토리 및 FAT 각각의 데이터 구조를 개략적으로 나타내는 도면이다.
도 5 는 블록 상태 테이블의 데이터 구조를 개략적으로 나타내는 도면이다.
도 6 은 논리 물리 변환 테이블의 데이터 구조를 개략적으로 나타내는 도면이다.
도 7 은 데이터 판독 처리를 나타내는 흐름도이다.
도 8 은 데이터 기록 처리를 나타내는 흐름도이다.
도 9 는 데이터 기록 처리를 나타내는 흐름도로부터 이어지는 흐름도이다.
도 10 은 데이터 기록 처리를 나타내는 흐름도로부터 이어지는 흐름도이다.
도 11 은 데이터 기록 처리를 나타내는 흐름도로부터 이어지는 흐름도이다.
도 12 는 데이터 기록 처리를 나타내는 흐름도로부터 이어지는 흐름도이다.
도 13 은 빈 블록 확보 처리를 나타내는 흐름도이다.
도 14 는 그룹 등록 처리를 나타내는 흐름도이다.
도 15 는 각 그룹 세트에 대하여 할당된 물리 그룹 어드레스와 그룹들의 세트 내의 논리 위치를 나타내는 임시적 물리 그룹 어드레스 사이의 관계를 나타내는 도면이다.
도 16 은 플래시 메모리의 메모리 영역에 기억된 논리/물리 변환 테이블의 일례를 나타내는 도면이다.
도 17 은 테이블 기억 영역의 논리 위치를 나타내는 어드레스와, 논리/물리 변환 테이블을 기억하는, 테이블 기억 영역의 물리 어드레스를 연관시키는 리스트의 일례를 나타내는 도면이다.
도 18 은 플래시 메모리의 기억 영역에 기억된 블록 상태 테이릅의 일례를 나타내는 도면이다.
도 19 는 블록 상태 테이블을 기억하는, 테이블 기억 영역의 물리 어드레스를, 테이블 기억 영역 내의 논리적 위치를 나타내는 어드레스와 연관시키는 리스트의 일례를 나타내는 도면이다.
본 발명을 실행하기 위한 최적의 모드
이하에서는 도면을 참조하여 예를 들어 플래시 메모리를 가지는 기억 시스템을 이용한 본 발명의 실시형태를 설명한다.
도 1 은 본 발명의 실시형태에 따른 기억 시스템의 물리적 구조를 나타내는 블록도이다.
이 도면에 나타낸 바와 같이, 기억 시스템는 메모리 유닛(1)과 컴퓨터(2)를 포함한다. 메모리 유닛(1)은 컴퓨터(2)가 가지는 내부 버스를 통하여 컴퓨터(2)에 부착되어 있다. 부가적으로, 예를 들어, 도 1 에 나타낸 바와 같이, 메모리 유닛(1)과 컴퓨터(2)는 동일한 하우징 내에 포함될 수도 있다.
메모리 유닛(1)은 플래시 메모리(11)와 제어기(12)를 포함한다.
플래시 메모리(11)는 예를 들어 EEPROM 과 같은 기억 장치와 논리 회로와 같은 시퀀서를 포함한다.
플래시 메모리(11)는 컴퓨터(2)로부터 공급된 데이터를 기억(기록)하고, 기억된 데이터를 판독하고, 기억된 데이터를 컴퓨터(2)에 공급하고, 제어기(12)로부터의 요청에 응답하여 기억된 데이터를 소거한다.
또한, 데이터 기록, 판독 및 소거 동작 각각에 관하여, 플래시 메모리(11)는 동작이 수행되고 있는지(비지(busy) 상태)를 나타내는 정보 및 소거 동작이 정상적으로 수행되고 있는지를 나타내는 상태 정보를 생성하고, 그 결과를 제어기(12)에 제공한다.
도 2 및 도 3 은 플래시 메모리(11)가 가지는 기억 영역의 구조의 일례를 나타내는 도면이다.
플래시 메모리(11)가 가지는 기억 영역은, 예를 들어 도 2 에 나타낸 바와 같이 1024 개의 블록으로 이루어져 있다. 데이터는 블록 단위로 소거된다. 0 내지 1023 의 물리 블록 어드레스는, 블록의 선두(top)로부터 순서대로 각각의 블록들에 순차적으로 할당된다.
각 블록은 예를 들어, 도 2 및 도 13 에 나타낸 바와 같이 8 개의 그룹을 포함한다. 도 2 에 나타낸 예에서, 플래시 메모리(11)의 전체 기억 영역은 8192 개의 그룹으로 이루어져 있다.
0 내지 8191 의 물리 그룹 어드레스들은, 플래시 메모리(11)의 기억 영역의 헤드로부터 순서대로 각각의 그룹들에 순차적으로 할당된다. 따라서, 예를 들어 도 3 에 나타낸 바와 같이, 물리 그룹 어드레스가 n(n 은 0 이상 1023 이하의 정수임)인 블록에는, 물리 그룹 어드레스가 (8ㆍn) 이상 {(8ㆍn)+7} 이하의 8 개의 그룹이 포함된다. 즉, 그룹의 물리 그룹 어드레스가 13 비트의 2 진수로 표현된 경우에, 이 2 진수의 상위 10 비트는 그 그룹이 속하는 블록의 물리 블록 어드레스에 대응한다.
각각의 그룹은 예를 들어 도 3 에 나타낸 바와 같이 8 개의 페이지를 포함한다. 각각의 그룹에 대하여, 0 내지 7 의 내부 그룹 어드레스들이, 그 그룹내의 상부 페이지로부터 그 그룹 내의 각각의 페이지들에 연속적으로 할당된다. 플래시 메모리(11)의 각각의 페이지는, 각 기억 용량이 1 바이트인 전부 2112 개의 메모리 셀을 포함한다. 각각의 메모리 셀들에는 그 페이지의 선두로부터 순서대로 0 내지 2111의 어드레스들이 연속적으로 할당된다.
또한, 블록 내 페이지 어드레스는, 페이지의 그룹 내 페이지 어드레스를 하위 3 비트로서 지정하고 해당 페이지가 속하는 그룹의 물리 그룹 어드레스의 하위 3 비트는 상위 3 비트로서 지정되는 총 6 비트를 가진다.
각 페이지는 도 3 에 나타낸 바와 같이 예를 들어 528(=512+16) 바이트의 기억 영역을 각각 가지는 4 개의 칼럼을 포함한다. 각 페이지에 포함되는 각각의 칼럼들에는 상부로부터 순서대로 0 내지 3 의 칼럼 어드레스들이 연속적으로 할당된다. 예를 들어, 도 2 에 나타낸 예에서, 플래시 메모리(11)의 전체 기억 용량은 132 메가 바이트이다.
각각의 칼럼은 도 3 에 나타낸 바와 같이 선두로부터 512 바이트 영역을 가지는 데이터 영역과 말미 16 바이트를 가지는 리던던트 섹션을 포함한다.
데이터 영역에는 사용자 데이터가 기억된다. 사용자 데이터는 컴퓨터(2)로부터 입력되어 플래시 메모리(11)에 기억되는 데이터, 또는 플래시 메모리(11)에 기억되어 이 플래시 메모리(11)에 의해 컴퓨터(2)에 입력되는 데이터이다.
리던던트 섹션에서는, 예를 들어, 불량 블록 플래그, 이전(old) 그룹 플래그 및 ECC(Error Correcting Code)가 저장된다.
불량 블록 플래그는, 리던던트 섹션을 포함하는 블록이 데이터를 정상적으로 저장할 수 없는 블록(불량 블록)임을 나타내는 플래그이다.
이전(old) 그룹 플래그는, 리던던트 섹션을 포함하는 칼럼이 속하는 그룹 내의 데이터 영역에 저장되는 사용자 데이터가 무효 데이터(이하 이전 데이터라고 불린다)로서 취급되는 이전 데이터임을 나타내는 플래그이다.
ECC는 리던던트 섹션에 대응하는 데이터 영역에 저장되는 사용자 데이터의 내용이 파괴되어 있지 않은 지를 확인하기 위한 데이터이다.
컴퓨터(2)는, 플래시 메모리(11)에 액세스하는 경우에, 각 칼럼의 데이터 영역을 512 바이트의 일 섹션으로서 인식한다. 즉, 섹터는 컴퓨터(2)가 플래시 메모리(11)에 이득 액세스하는 경우의 최소 단위이다. 그 후, 각각의 섹터에 논리 어드레스가 할당된다.
칼럼의 위치는 칼럼의 칼럼 어드레스, 그 칼럼이 속하는 페이지의 그룹 내 페이지 어드레스 및 그 칼럼이 속하는 그룹의 물리 그룹 어드레스를 이용하여 특정 된다. 3 개의 어드레스 즉, 칼럼 어드레스, 그룹 내 페이지 어드레스 및 물리 그룹 어드레스를 포함하며 해당 칼럼을 지정하는 데이터는 이하에서 칼럼 물리 어드레스로 불린다.
예를 들어, 칼럼의 물리 어드레스는 상위 자릿수(digit), 중위 자릿수 및 하위 자릿수를 포함한다. 상위 자릿수는 칼럼이 속하는 그룹의 논리 그룹 어드레스이다. 중위 자릿수는 칼럼이 속하는 페이지의 그룹 내 페이지 어드레스이다. 하위 자릿수는 칼럼의 칼럼 어드레스이다. 물리 어드레스들의 총수는, 플래시 메모리(11)가 물리적으로 포함하는 칼럼의 총수 이상인, 미리 결정된 값일 수도 있다.
메모리 유닛(1)의 제어기(12)로부터 특정 블록의 데이터를 소거하기 위한 명령이 전송되는 경우에, 플래시 메모리(11)는 대응하는 블록에 포함되는 전체 메모리 셀들의 기억 내용을 소거한다. 더욱 자세하게는, 예를 들어, 플래시 메모리(11)가 NAND 플래시 메모리를 포함하는 경우에, 각 메모리 셀의 기억값을 "1" 으로 정정한다.
또한, 플래시 메모리(11)의 데이터 영역에는, 디렉토리 및 FAT(File Allocation Table)가 저장된다. 이 데이터 영역을 업데이트하기 위한 처리를 이하에서 설명한다.
예를 들어, 도 4 는 플래시 메모리(11)에 MS-DOS(등록 상표) 파일링 시스템을 적용한 경우에, 디렉토리, FAT 그리고 논리 블록 어드레스 사이의 관계를 나타내는 도면이다.
또한, 디렉토리와 FAT 의 정보가 저장되어 있는 칼럼에 대응하는 섹터에는, 미리 결정된 조건을 충족하는 논리 어드레스가 할당된다. 더욱 자세하게는, 예를 들어 선두의 4096 개의 어드레스(즉, 00000h 이상 00FFFh 이하의 어드레스)를 논리 어드레스로서 부가한다. 본 명세서 및 도면에서 말미에 "h"가 부착되는 숫자는 16 진수이다.
디렉토리는 플래시 메모리(11)에 저장된 전기 파일(즉, 일괄적으로 처리될 대상으로서 컴퓨터(2)에 의해 지정된 데이터의 집합)의 파일명과 그 파일의 헤드 부분이 저장되는 섹터의 논리 어드레스를 나타내는 테이블이다.
FAT 는 플래시 메모리(11)의 기억 영역 내의 파일 위치를 나타내는 테이블이다. 그 후, 그 파일이 하나의 칼럼 내에 채워지지 않는 경우에, FAT는 도 4 에 나타낸 바와 같이, 후속의 부분을 기억하는 칼럼의 논리 어드레스를 저장한다. 파일의 최종 부분을 저장하는 칼럼의 논리 어드레스에 관하여, 도 4 에 나타낸 바와 같이 종료 코드(EC)가 이 논리 어드레스에 부가되어 논리 어드레스가 최종 부분임을 나타낸다.
도 1 에 나타낸 바와 같이, 제어기(12)는 CPU(Central Processing Unit)(121), ROM(Read Only Memory)(122) 및 RAM(Random Access Memory)(123)을 포함한다. RAM(123)은 예를 들어 백업되는 SRAM(Static RAM) 또는 FeRAM(Ferroelectric RAM)을 포함한다. RAM(123)의 기억 영역의 적어도 일부는 비휘발성 기억 영역을 포함한다.
CPU(121)는 RAOM(122), RAM(123), 플래시 메모리(11) 및 컴퓨터(2)에 접속되어 있다.
CPU(121) 는 제어기(12)의 제조자 등에 의해 ROM(122)에 미리 저장된 프로그램에 따라서 처리(후술됨)를 행한다.
그 후, 컴퓨터(2)로부터 공급되는 명령을 획득하는 경우에, CPU(121)는 그 명령에 대응하는 처리를 행한다. CPU(121)에 의해 수신된 명령은 플래시 메모리(11)에 액세스하는 명령을 포함한다.
RAM(123)이 가지는 기억 영역은, CPU(121)의 작업 영역으로서 사용되는 임시 기억 영역을 포함한다. 또한, RAM(123)은 비휘발성 기억 영역을 포함한다. 비휘발성 기억 영역은 CPU(121)에 의한 처리(후술됨)에서 작성되는, 블록 상태 테이블(51), 논리/물리 변환 테이블(61), 기록 포인터, 기록 포인터 초기값, 이동 목적지 기록 포인터 및 빈 블록수 카운터를 기억한다.
임시 기억 영역은 후술하는 데이터 기록 처리에 있어서 기록을 행하는 대상의 페이지를 포함하는 블록에 기억되어 데이터를 일시적으로 기억하기 위한 기억 영역이다. 또한, 이 임시 기억 영역은 플래시 메모리(11)의 1 페이지분의 기억 용량을 가진다. 임시 기억 영역의 기억 용량은 플래시 메모리의 1 페이지분보다 더 크게 될 수도 있다.
블록 상태 테이블(51)은 예를 들어 도 5 에 개략적으로 도시된 데이터 구조에 의해 나타낸 바와 같이 플래시 메모리(11)의 기억 영역에 포함되는 각각의 블록의 이하의 상태 (1) 내지 (3), (4a) 및 (4b)를 나타내는 정보를 기억한다. 즉, 이하의 5 개의 블록 상태가 도시된다.
(1) 불량 블록
(2) 불량하지 않은 블록 즉, 양품 블록(빈 블록): 양호한 블록 내에 데이터가 기록되어 있는 그룹이 존재하지 않음
(3) 양품 블록 : 이 양품 블록 내에, 데이터가 기록되어 있는 그룹과 데이터가 기록되어 있지 않은 그룹
(4a) 양품 블록 : 양품 블록에 속하는 모든 그룹들에 데이터가 기록되어 있고, 이렇게 기록된 데이터 중에서 무효 데이터(이전 데이터)가 포함되어 있지 않음
(4b) 양품 블록 : 양품 블록에 기록된 데이터 중에서 이전 데이터가 포함되어 있음
블록 상태 테이블(51)은, 이러한 상태들 중 임의의 하나를 나타내는 정보를 해당 블록의 물리 블록 어드레스와 연관되도록 기억한다. 또한, 도 5 에서, (1) 의 상태를 나타내는 데이터는 "BB"로 나타내며, (2) 의 상태를 나타내는 데이터는 "EB"로 나타내며, (4a) 의 상태를 나타내는 데이터는 "UWO" 로 나타내며, (4b) 의 상태를 나타내는 데이터는 "UWC" 로 나타낸다. 또한, (3) 의 상태를 나타내는 데이터는 빈 공간으로 나타낸다.
블록 상태 테이블(51)은, 예를 들어 RAM(12)의 비휘발성 기억 영역 내에 미리 작성되고, 제어기(12)에 의한 처리(후술함)에 따라 업데이트된다.
또한, 불량 블록이 플래시 메모리(11)의 제조자 등에 의해 출하 이전에 불량으로 판단되는 블록(초기 불량 블록)과 플래시 메모리(11)의 사용 동안에 데이터가 이 메모리에 정상적으로 기억되지 않는다고 판단되는 블록(후발 불량 블록)을 포함한다고 생각할 수 있다.
논리/물리 변환 테이블(61)은, 각각의 그룹들에 관하여, 해당 그룹의 논리 그룹 어드레스와 물리 그룹 어드레스와의 대응관계를 나타내는 정보를 기억한다. 논리/물리 변환 테이블(61)은 예를 들어 RAM(123)의 비휘발성 기억 영역 내에 미리 작성되고, CPU(121)에 의한 처리(후술함)에 따라 업데이트된다.
특히, 논리/물리 변환 테이블(61)은 예를 들어 도 6 에 도시한 바와 같이 데이터 구조를 포함한다.
즉, 논리/물리 변환 테이블(61)은 예를 들어 RAM(123)의 비휘발성 기억 영역 내의 미리 결정된 논리 위치에 저장된다. 그 후, 논리/물리 변환 테이블(61)은 각각의 논리 그룹 어드레스와 연관되는 물리 그룹 어드레스를 기억하기 위한 기억 영역을 가진다. 예를 들어, 논리 그룹 어드레스의 총수가 8000 개인 경우, 논리/물리 변환 테이블(61)은 하나의 논리 그룹와 연관되는 물리 그룹 어드레스를 기억하기 위한 적어도 13 비트의 기억 영역을 가질 수도 있다. 이 경우에, 논리/물리 변환 테이블(61)은 총 13000 바이트의 기억 영역을 가질 수도 있으며, 여기서 예를 들어 1000h 내지 2F3Fh로 표현되는 어드레스들은, 선두(top)로부터 매 13 비트 마다 할당된다.
논리/물리 변환 테이블(61)이 도 6 에 나타낸 데이터 구조를 가지는 경우에, 논리/물리 변환 테이블(61)을 형성하는, 기억 영역에 할당된 각각의 어드레스들은, 논리 그룹 어드레스와 미리 결정된 오프셋 값의 합과 동일하다. 예를 들어, 도 6 은 오프셋값이 "1000h"인 경우를 나타낸다.
그 후, 각각의 어드레스가 할당되는 13 비트 기억 영역에 기억된 내용은, 해 당 어드레스에 의해 도시된 논리 그룹 어드레스와 연관되는 그룹의 물리 그룹 어드레스를 나타낸다.
더욱 자세하게는, 예를 들어 도 6 에 나타낸 바와 같이, 어드레스 1001h 가 할당되는 기억 영역에 값 "010Fh"(2 진수 "0000100001111")가 기억되고 오프셋 값이 1000h 이라고 가정한다. 이 경우, 논리 그룹 어드레스로서의 0001h 는 010Fh 의 물리 그룹 어드레스를 가진 그룹과 연관된다.
그러나, 각각의 어드레스가 할당된 기억 영역에 기억된 내용이 미리 결정된 값(예를 들어, 물리 그룹 어드레스의 값은 도면에 나타낸 바와 같이 "1FFFh" 이다)인 경우에, 이는 물리 그룹 어드레스가 그 값을 기억하고 있는 기억 영역의 어드레스에 의해 나타내는 논리 그룹 어드레스와 연관되어 있지 않음을 나타낸다.
기록 포인터는, CPU(121)가 사용자 데이터를 기록해야하는 그룹을 지정하는 경우에 사용되는 변수이다. 보다 자세하게는, 기록 포인터는 대응하는 그룹의 물리 그룹 어드레스를 나타낸다. 기록 포인터의 값은 후술하는 처리에 따라서 업데이트된다.
이 기억 시스템이 기동되고, 사용자 데이터가 제어기(12)에 의해 플래시 메모리(11)에 먼저 기록되는 경우에, 사용자 데이터는 기록 포인터의 초기값에 의해 표시되는 물리 그룹 어드레스의 칼럼에 기록된다.
이동 목적지 기록 포인터는, CPU(121)가 블록내의 데이터를 소거하고 해당 데이터의 일부를 또 다른 블록으로 이동시키는 경우에 블록을 이동 목적지로서 지정한다. 보다 자세하게는, 이동 목적지 기록 포인터는 대응하는 블록 내의 그룹의 물리 그룹 어드레스를 나타낸다. 이동 목적지 기록 포인터의 값은 후술하는 처리에 따라 업데이트된다. 또한, 기록 포인터는 이동 목적지 기록 포인터로서 사용될 수도 있다.
빈 블록수 카운터는 현존하는 빈 블록들의 개수를 나타낸다. 빈 블록수 카운터의 초기값은, 예를 들어 메모리 유닛(1)의 제조자 등에 의해, RAM(123)의 비휘발성 기억 영역에 미리 기억된다. 기록 포인터의 값은 후술되는 처리에 따라 업데이트된다.
컴퓨터(2)는 범용 컴퓨터를 포함하고, OS 및 드라이버의 프로그램 데이터를 기억한다. 컴퓨터(2)는 전원 투입후에 OS 를 실행한다. 그 후, 컴퓨터(2)는 OS 의 처리에 따라 드라이버를 기동한다. 또한, 컴퓨터(2)의 프로세서는 CPU(121)의 기능을 실행할 수도 있다.
예를 들어, 컴퓨터(2)는 플래시 메모리에 기록 명령을 입력하고, 메모리 유닛(1)의 CPU(121)에 사용자 데이터를 입력한다. 그 후, CPU(121)는 기록 명령에 따라 기록 처리(후술함)를 수행한다. 즉, 컴퓨터(2)는 임의의 사용자 데이터를 플래시 메모리(11)에 기록할 수 있다.
또한, 컴퓨터(2)는 플래시 메모리로부터 CPU(121)에 판독 명령을 입력한다. 그 후, CPU(121)는 판독 명령에 따라 판독 처리(후술함)를 수행하고, 컴퓨터(2)에 판독 사용자 데이터를 공급한다. 즉, 컴퓨터(2)는 플래시 메모리(11)에 기억된 사용자 데이터를 판독할 수 있다.
(동작의 설명)
다음으로, 이 기억 시스템의 동작을 도 7 내지 도 14 를 참조하여 설명한다.
도 7 은 데이터 판독 처리를 나타내는 흐름도이다.
도 8 내지 도 12 는 데이터 기록 처리를 각각 나타내는 흐름도이다.
도 13 은 빈 블록 확보 처리를 나타내는 흐름도이다.
도 14 는 그룹 등록 처리를 나타내는 흐름도이다.
(데이터 판독 처리)
이하에서는 CPU(121)가 플래시 메모리(11)에 기억되는 사용자 데이터를 판독하는 동작을 설명한다. 사용자가 이 기억 시스템을 기동하는 경우에, 메모리 유닛(1)의 CPU(121)는, 컴퓨터(2)로부터 플래시 메모리(11)에의 액세스를 지시하기 위한 각종의 명령을 수신하기 위한 상태로 들어간다. 무엇보다도, 컴퓨터(2)는, 미리 결정된 판독 명령, 데이터를 판독하는 섹터들 중에서 제 1 섹터의 논리 어드레스 및 판독하는 섹터들의 개수를 나타내는 데이터를, CPU(121)에 공급한다. CPU(121)는 미리 결정된 판독 명령, 판독 개시 위치의 논리 어드레스 및 섹터들의 개수를 포함하는 데이터를 수신한다(단계 201).
다음으로, CPU(121)가 판독 명령이 입력 데이터에 포함되는지를 검출하는 경우에, 이 CPU(121)는 공급된 데이터에 포함되는 논리 어드레스 및 섹터들의 개수를 RAM(123)의 임시 기억 영역에 기억시킨다(단계 S202). CPU(121)는 논리 어드레스에 의해 표시되는 기억 영역에 기억되는 논리 그룹 어드레스를 이용하여 논리/물리 변환 테이블(61)을 검색한다. 그 후, CPU(121)는, 데이터를 판독하는 제 1 섹터에 대응하는, 칼럼이 속하는 그룹의 물리 그룹 어드레스를 획득한다. 또한, CPU(121) 는 데이터를 판독하는 제 1 섹터에 대응하는, 칼럼의 물리 어드레스를, 획득된 물리 그룹 어드레스, 단계 201 에서 공급되는 논리 어드레스에 포함된 칼럼 어드레스 및 그룹 내 페이지 어드레스에 기초하여 획득한다(단계 S203). 다음으로, CPU(121)는 단계 203 에서 획득된 칼럼으로부터 데이터를 판독한다(단계 S204). 그 후, CPU(121)는 판독된 데이터 중에서 데이터 영역에 기억되는 사용자 데이터에 기초하여 ECC 를 생성한다. 또한 CPU(121)는 데이터 영역에 기억된 데이터가 생성된 ECC와 판독된 데이터 중에서 리던던트 섹션에 기억된 ECC 에 기초하여 정확하게 판독되는지를 결정한다(단계 S205).
데이터가 정확하게 판독된다고 판정하는 경우(단계 S205; 예(YES), CPU(121)는 데이터 영역에 기억된 사용자 데이터를 컴퓨터(2)에 공급한다(단계 210).
데이터가 정확하게 판독되지 않는다고 판정하는 경우(단계 S205; 아니오(NO)), CPU(121)는 데이터 영역에 기억된 데이터가 리던던트 섹션에 기억된 ECC 에 기초하여 적절한 내용으로 정정될 수 있는 지를 판정한다(단계 S206). 그 후, 데이터를 정정할 수 있다고 판정하는 경우(단계 S206; 예), CPU(121)는 데이터 영역에 기억된 데이터를 정정(단계 S209)하고, 그 정정된 데이터를 컴퓨터(2)에 공급한다(단계 S210).
단계 S210 에서 칼럼의 데이터 영역에 기억된 사용자 데이터를 또는 그 데이터를 정정함으로써 획득된 데이터를 컴퓨터(2)에 공급하는 경우에, CPU(121)는 단계 S201에서 입력되는 섹터들의 개수에 대응하는 칼럼들로부터 데이터 판독이 완료되었는지를 판정한다(단계 S211). 그 후, 데이터 판독이 완료되었다고 판정하는 경우(단계 S211; 예), CPU(121)는 데이터 판독 처리를 완료한다. 데이터 판독이 완료되지 않았다고 판정하는 경우(단계 S211; 아니오), CPU(121)는 RAM(123)내에 일시적으로 기억된 논리 어드레스를 증분시킨다. 즉, CPU(121)는 사용자 데이터를 판독하는 다음 섹터를 나타내는 논리 어드레스를 계산한다. 그 후, CPU(121)는 단계 S203 내지 S211에서의 처리를 반복한다.
칼럼의 데이터 영역으로부터 판독된 데이터를 정정할 수 없는 경우(단계 S206; 아니오), CPU(121)는 칼럼이 속하는 블록이 불량 블록임을 나타내는 데이터를, 블록 상태 테이블(51)에 기록한다. 즉, CPU(121)는 블록 상태 테이블(51) 내의 그 블록의 상태를 나타내는 기억 위치에서 "BB"를 나타내는 데이터를 기억한다. 그 후, CPU(121)는 데이터의 판독에 실패한 것을 컴퓨터(2)에 통지한다(단계 S207).
컴퓨터(2)는 CPU(121)가 데이터를 판독하는데 실패하였음을 나타내는 통지를 수신하는 경우에 데이터 판독 처리를 종료한다(단계 S208).
상술한 바와 같이, CPU(121)는 컴퓨터(2)에 의해 플래시 메모리(11)로부터 요청된 사용자 데이터를 판독하고, 그 판독된 데이터를 컴퓨터(2)에 입력한다.
또한, 컴퓨터(2)는 판독되는 데이터가 기억되는 칼럼의 논리 어드레스를 FAT와 디렉토리의 내용에 기초하여 계산해야 한다. 따라서, 컴퓨터(2)는 먼저 CPU(121)에 명령하여 FAT와 디렉토리의 내용을 판독한다. 그 후, 컴퓨터(2)는 판독되는 데이터가 기억되는 칼럼의 논리 어드레스를 입력한다.
(데이터 기록 처리)
다음으로, CPU(121)가 플래시 메모리(11)에 기억되는 사용자 데이터를 판독 하는 동작을 도 8 내지 도 12 를 참조하여 설명한다.
먼저, 컴퓨터(2)는 미리 결정된 기록 명령, 데이터를 기록하는 섹터들 중 제 1 섹터의 논리 어드레스 및 기록 섹터들의 개수를 나타내는 데이터를 포함하는 데이터를, CPU(121)에 입력한다. CPU(121)는 기록 명령, 기록 개시 위치의 논리 어드레스 및 섹터들의 개수를 포함하는 데이터를 수신한다(단계 301).
기록 명령이 입력 데이터에 포함되어 있음을 검출하는 경우, CPU(121)는 공급되는 데이터에 포함되는 논리 어드레스 및 섹터들의 개수를 RAM (123) 의 기억 영역에 기억시킨다(단계 302).
다음으로, CPU(121)는 기록 포인터가 블록의 말미 블록을 나타내는 지 여부를 판정한다(단계 S303). 그 후, 기록 포인터가 말미(end) 그룹 이외의 그룹을 나타낸다고 판정하는 경우(단계 S303; 아니오), 처리는 단계 S305 로 진행한다. 한편, 기록 포인터가 블록의 말미 그룹을 나타낸다고 판정하는 경우(단계 S303; 예), 빈 블록 확보 처리(후술함)를 수행한다(단계 304). 그 후, 빈 블로 확보 처리가 종료되는 경우에, 처리는 단계 S305 로 진행한다. CPU(121)는 RAM(123)에 기억된 논리 어드레스에 의해 표시되는 칼럼에 기억된 논리 그룹 어드레스를 이용하여 논리/물리 변환 테이블(61)을 검색한다(단계 305). 즉, 도 6 에 나타낸 바와 같이, 논리/물리 변환 테이블(61)에서, 하나의 물리 어드레스는 하나의 논리 그룹 어드레스와 연관되어 있다. 따라서, CPU(121)는 컴퓨터(2)로부터 입력된 섹터의 논리 어드레스에 포함되는 논리 그룹 어드레스를 이용하여 물리 그룹 어드레스를 획득할 수 있다.
그 후, CPU(121)는 RAM(123)에 기억된 논리 어드레스에 포함된 칼럼의 논리 그룹 어드레스가 논리/물리 변환 테이블(61) 내에 있는지를 판정한다(단계 306).
논리 그룹 어드레스가 검색되지 않는 경우(단계 S306; 아니오), CPU(121)는 사용자 데이터가 기록되는 제 1 섹터에 대응하는, 칼럼의 물리 어드레스를, 기록 포인터에 의해 실제로 표시되는 물리 그룹 어드레스, 논리 어드레스 및 컴퓨터(2)로부터 입력된 논리 어드레스에 포함된 칼럼의 그룹 내 페이지 어드레스에 기초하여 계산한다. 그 후, CPU(121)는 사용자 데이터가 기록되는 칼럼보다 앞선 페이지에 미리 결정된 더미 데이터를 기록한다(단계 S307). 즉, CPU(121)는 사용자 데이터가 기록되는 칼럼을 포함하는 페이지의 그룹 내 페이지 어드레스 보다 작은 그룹 내 페이지 어드레스를 가지는 페이지에 포함되는 칼럼의 데이터를 초기화한다.
그 후, CPU(121)는 RAM의 임시 기록 영역 전체에 미리 결정되 더미 데이터를 기록한다(단계 S308). 또한, 논리 그룹 어드레가 단계 S306 에서 검색되지 않는 경우는, 컴퓨터(2)에 의해 플래시 메모리(2)에 기록되는, 사용자 데이터가 새로운 데이터인 경우이다.
한편, 논리 그룹 어드레스가 단계 S306 에서 검색되는 경우(단계 S306; 예), CPU(121)는 다른 데이터가 이미 기억되어 있는 제 1 섹터에 대응하는 칼럼의 물리 어드레스를, 논리 그룹 어드레스와 연관되는 물리 그룹 어드레스, 논리 어드레스 및 컴퓨터(2)로부터 입력된 논리 어드레스에 포함된 칼럼의 그룹 내 페이지 어드레스에 기초하여, 획득한다. 그 후, CPU(121)는 해당 칼럼보다 앞선 페이지에 기억 된 데이터를 기록 포인터에 의해 표시된 그룹 내의 빈 페이지에 복사한다(단계 S331).
그 후, CPU(121) 는, 데이터가 재기록되는 칼럼이 속하는 페이지의 데이터를, RAM(123)의 임시 기억 영역에 복사한다(단계 S332).
CPU(121)는 플래시 메모리(11)에 기록되는 사용자 데이터가 컴퓨터(2)로부터 공급되는 것을 대기한다(단계 S309 및 S333). 컴퓨터(2)로부터 입력된 사용자 데이터의 크기는 하나의 섹터 내에 설정된다. 그 후, CPU(121)는 플래시 메모리(11)에 기록되는 사용자 데이터를 컴퓨터(2)로부터 수신한다(단계 S310 도는 S334). CPU(121)는, 사용자 데이터가 RAM(123)의 임시 기억 영역에 기록되는 칼럼의 데이터 영역에 대응하는 기억 위치에 그 수신된 사용자 데이터를 덮어쓴다(overwrite).
예를 들어, CPU(121)에 의해 계산되며, 데이터가 기록되는 제 1 섹터에 대응하는 칼럼은, 페이지의 선두로부터 p 번재 칼럼(p는 1 내지 4 를 포함하는 정수)이다. 이 경우에, CPU(121)는 컴퓨터(2)로부터 수신된 사용자 데이터를, RAM(123)의 임시 기억 영역의 선두로부터 (p-1) 번째 칼럼에 대응하는 기억 영역 뒤의 기억 영역에 덮어쓴다.
다음으로, CPU(121)는, 컴퓨터(2)로부터 입력된 사용자 데이터가 RAM(123) 의 임시 기억 영역의 말미까지 덮어씌여졌는지를 판정한다(단계 S312 또는 S336). 여기서, 사용자 데이터가 임시 기억 영역의 말미까지 덮어씌여지지 않은 경우는, 플래시 메모리(11)에 아직 기록되지 않은 사용자 데이터가 RAM(123)의 임시 기억 영역에 남아 있는 경우를 의미한다.
그 후, 사용자 데이터가 임시 기억 영역의 말미까지 덮여씌여지지 않은 경우(단계 S312; 아니오 또는 단계 S336; 아니오), CPU(121)는 처리를 단계 S312로부터 단계 S314까지(또는 단계 S336 으로부터 단계 S338 까지) 이동시킨다.
한편, 사용자 데이터가 임시 기억 영역의 말미까지 덮어씌여진 경우(단계 S312; 예 또는 단계 S336; 예), CPU(121)는 임시 기억 영역에 기억된 데이터를 기록 포인터에 의해 표시된 그룹에서 데이터 기록이 최종적으로 수행되는 페이지 다음의 페이지에 기록한다(단계 S313 또는 S337). 또한, CPU(121)는 임시 기억 영역내의 모든 데이터를 클리어한다. 여기서, 데이터 기록이 단계 S313 에서 처음으로 수행되는 경우에, 블록 상태 테이블(51)은, 기록 목적지 페이지가 속하는 블록이 상태 (3) 에 있음을 나타내도록 업데이트된다. 상술한 바와 같이, 상태 (3) 은, 데이터가 기록되는 그룹과 데이터가 기록되지 않는 그룹이 혼합되는 상태를 나타낸다.
다음으로, CPU(121)는, 컴퓨터(2)로부터 입력되는 섹터들의 개수에 대응하는, 칼럼들로의 데이터 기록이 완료되었는지를 판정한다(단계 S314 또는 S338). 그 후, 데이터 기록이 완료되었다고 판정하는 경우(단계 S314; 예 또는 단계 S338; 예), CPU(121)는 처리를 단계 S314로부터 단계 S318 까지(또는 단계 S338 로부터 단계 S342 까지) 이동시킨다.
한편, 데이터 기록이 완료되지 않았다고 판정하는 경우(단계 S314; 아니오 또는 단계 S338; 아니오), CPU(121)는 RAM(123)의 임시 기억 영역에 기억되며, 컴퓨터(2)로부터 입력되는 논리 어드레스를 증분시킨다(단계 S315 또는 S339). 즉, CPU(121)는 사용자 데이터가 기록되는 다음 섹터를 나타내는 논리 어드레스를 계산한다.
다음으로, CPU(121)는 그 계산된 다음 논리 어드레스에 의해 표시되는 섹터가 증분전의 논리 어드레스에 의해 표시되는 섹터와 동일한 그룹에 속하는지를 판정한다(단계 S316 또는 S360). 그 섹터가 동일한 그룹에 속한다고 판정하는 경우(단계 S316; 예 또는 단계 S340; 예), CPU(121)는 처리를 단계 S309 내지 S315(또는 단계 S333 내지 S339)에서 반복한다.
한편, 섹터가 동일한 그룹에 속하지 않는다고 판정하는 경우(단계 S316; 아니오 또는 단계 S340; 아니오), CPU(121)는 증분전의 논리 어드레스에 의해 표시되는 섹터에 대응하는 페이지를 포함하는 그룹을 등록 대상 그룹으로서 이용하여 그룹 등록 처리(후술함)를 수행한다. 그 후, 그룹 등록 처리가 종료되는 경우, 처리는 다시 단계 S303 으로 진행한다.
기록 처리가 단계 S314 에서 종료되었다고 판정하는 경우(단계 S314; 예), CPU(121)는 컴퓨터(2)로부터 최종적으로 입력되는 사용자 데이터가 상술한 바와 같이 RAM(123)의 임시 기억 영역에 기억되어 있는지를 판정한다(단계 S318 또는 S342). 그 후, 사용자 데이터가 임시 기억 영역에 기억되어 있지 않다고 판정하는 경우(단계 S318; 아니오 또는 단계 S342; 아니오), CPU(121)는 처리를 단계 S318로부터 단계 S321까지(또는 단계 S342로부터 단계 S345 까지) 이동시킨다.
한편, 사용자 데이터가 임시 기억 영역에 기억되어 있다(클리어되어 있지 않음)고 판정하는 경우(단계 S318; 예 또는 단계 S342; 예), CPU(121)는 사용자 데이 터가 RAM(123)의 임시 기억 영역에 기억되어 있지 않은 칼럼에 미리 결정된 더미 데이터를 기억시킨다(단계 S319). 또는, CPU(121)는 사용자 데이터가 기록되는 칼럼 다음의 칼러메에 기억되는 이전 데이터를, RAM(123)의 임시 기억 영역에 대응하는 위치에 복사한다(단계 S343).
그 후, CPU(121)는, RAM(123)의 임시 기억 영역에 기억되는 데이터를, 기록 포인터에 의해 표시되는 블록에서 기록이 최종적으로 수행되는 페이지 다음의 페이지에 기록한다(단계 S320 또는 S344).
다음으로, CPU(121)는 데이터가 단계 S320 또는 S344 에서 기록되는 페이지가 그룹의 말미 페이지인지를 RAM(123)의 임시 기억 영역에 기억된 논리 어드레스에 기초하여 판정한다(단계 S321 또는 S345). 그 후, 그 페이지가 그룹의 말미 페이지가 아니라고 판정하는 경우(단계 S321; 아니오 또는 단계 S345; 아니오), CPU(121)는 RAM(123)의 임시 기억 영역에 미리 결정된 더미 데이터를 기록한다(단계 S322). 이 때, CPU(121)에 의해 기록된 미리 결정된 더미 데이터의 크기는 1 페이지에 대응한다. 또는, CPU(121)는 일 페이지에 대응하는 이전 데이터를, 사용자 데이터가 기록되는 칼럼 다음의 칼럼으로부터 RAM(123)의 임시 기억 영역까지 복사한다(단계 S346).
다음으로, CPU(121)는 RAM(123)의 임시 기억 영역에 기억되는 데이터를, 플래시 메모리(11)에 관하여 기록 포인터에 의해 표시되는 블록에서 기록이 최종적으로 수행되는 페이지 다음의 페이지에 기록한다(단계 S323 또는 S347). 그 후, CPU(121)는 처리를 단계 S321 에서(또는 처리를 단계 S345 에서) 다시 수행한다.
한편, 페이지가 그룹의 말미 페이지라고 판정하는 경우(단계 S321; 예 또는 단계 S345; 예), CPU(121)는 말미 페이지를 포함하는 그룹을 등록 대상 그룹으로서 이용하여 그룹 등록 처리(후술함)를 수행한다(단계 S342 또는 S348). 그 후, 그룹 등록 처리가 종료되는 경우, 데이터 기록 처리도 또한 종료된다.
(빈 블록 확보 처리)
다음으로, 도 13 의 흐름도를 이용하여 빈 블록 확복 처리를 설명한다.
먼저, CPU(121)는 플래시 메모리(11)의 빈 블록들의 개수가 미리 결정된 개수 이상인지를 빈 블록수 카운터의 값에 기초하여 결정한다(단계 S401).
빈 블록들의 개수가 미리 결정된 개수를 넘지 않는다고 판정하는 경우(단계 S401; 아니오), CPU(121)는 빈 블록 검색 위치 포인터에 기초하여, 양호한 블록이 되는 하나의 빈 블록을 획득한다(단계 S402). 그 후, CPU(121)는 그 획득된 블록 내의 제 1 그룹의 물리 그룹 어드레스를 이동 목적지 기록 포인터에 세팅한다. 그 후, CPU(121)는 빈 블록수 카운터의 값을 1 만큼 감소시킨다. 또한, CPU(121)는 또 다른 빈 블록을 획득하고, 그 빈 블록의 물리 블록 어드레스를 빈 블록 검색 위치 포인터에 세팅한다.
다음으로, CPU(121)는 블록 상태 테이블(51)에 기초하여, 전술한 상태 (4b)에 있는 블록들(블록 상태 테이블(51)에서 "UWC" 에 의해 도시된 블록들)을 획득한다. 그 후, CPU(121)는 그 획득된 블록들 중에서, 하나 이상의 블록들을 새로운 빈 블록들(정리 대상 블록들)로 결정한다(단계 S403).
다음으로, CPU(121)는 단계 S403 에서 결정되는 정리 대상 블록들에 포함되 는 그룹들 중에서 데이터를 효율적으로 기억하는 그룹에 기억되는 데이터를, 이동 목적지 기록 포인터에 의해 표시되는 빈 블록에 복사한다(단계 S404). 또한, 정리 대상 블록들에 포함되는 그룹들 중에서, 데이터를 효율적으로 기억하는 그룹은 그룹 등록 처리(후술함)에서 리던던트 섹션에 기억되는 이전 그룹 플래그를 가지는 칼럼을 포함하지 않는 그룹이다. 또한, 단계 S404에서, CPU(121)는 데이터가 복사되는 그룹의 논리 그룹 어드레스가, 복사 목적지의 기억 위치가 속하는 그룹의 물리 그룹 어드레스와 연관되는 방식으로 논리/물리 변환 테이블(61)을 업데이트한다.
정리 대상 블록으로부터 빈 블록으로의 데이터 복사가 완료되는 경우, CPU(121)는 정리 대상 블록에 기억된 데이터를 소거하여 그 정리 대상 블록을 빈 블록으로 변경한다(단계 S405). 또한, CPU(121)는 플래시 메모리(11)에 의해 상태 정보를 획득하고, 정리 대상 블록이 빈 블록으로 정상적으로 변경되는지를 판정한다(단계 S406). 그 후, 정리 대상 블록이 빈 블록으로 변경되지 않는 경우(단계 S406; 아니오), CPU(121)는 정리 대상 블록이 불량 블록임을 나타낸는 데이터를 블록 상태 블록(51)에 기록한다(단계 S407). 예를 들어, CPU(121)는 블록 상태 테이블(51)내의 정리 대상 블록의 상태를 나타내는 기억 위치에서 "BB"를 나타내는 데이터를 기억한다. 그 후, CPU(121)는 처리를 단계 S401로 리턴시킨다.
한편, 정리 대상 블록이 정상적으로 빈 블록으로 변경되는 경우(단계 S406; 예), CPU(121)는 정리 대상 블록이 비어 있음을 나타내는 데이터를 블록 상태 테이블(51)에 기록한다(단계 S408). 예를 들어, CPU(121)는 블록 상태 테이블(51) 내 에서 정리 대상 블록의 상태를 나타내는 기억 위치에서 "EB"를 나타내는 데이터를 기억한다. 또한, 단계 S408 에서, CPU(121)는 빈 블록들로 정상적으로 변경되는 정리 대상 블록들의 개수 만큼 빈 블록수 카운터의 값을 증분시킨다. 그 후, CPU(121)는 처리를 단계 S401로 리턴시킨다.
그 후, 빈 블록들의 개수는, 단계 S408 에서 1 회 또는 복수회 처리되는 결과로서 미리 결정되는 개수 이상까지 증가되고(단계 401; 예), CPU(121) 는 처리를 단계 S401로부터 단계 S409까지 이동시킨다.
즉, CPU(121)는 블록 상태 테이블(51)을 검색하여 데이터가 새롭게 기록되는 하나의 빈 블록을 획득한다(단계 S409). 그 후, CPU(121) 는 그 획득된 빈 블록 내의 제 1 그룹의 물리 그룹 어드레스의 값을 기록 포인터에 세팅(단계 S410)하고, 빈 블록 확보 처리를 종료한다.
또한, 단계 S409 에서, 빈 블록이 플래시 메모리(11)의 각 블록으로부터 데이터를 판독함으로써 특정될 수도 있다. 그러나, 빈 블록은 각 블록으로부터 데이터를 판독할 때와 비교하여, 블록 상태 테이블(51)을 검색함으로써 신속하게 특정될 수 있다. 또한, 이는 플래시 메모리(11)에의 액세스 수 증가를 억제하므로, 플래시 메모리(11)의 열화를 방지할 수 있다.
(그룹 등록 처리)
다음으로, 도 14 의 흐름도를 이용하여 그룹 등록 처리를 설명한다.
먼저, CPU(121)는 등록 그룹의 물리 그룹 주소가 논리/물리 변환 테이블(61)에 등록되는지 판단한다(단계 S501).
다음으로, 물리 그룹 주소가 등록되어 있다고 판정했을 때(단계 S501; 예), CPU(121)는 등록된 물리적 그룹 주소에 의해 지정된 그룹을 포함한 블록이 전술한 상태(4b)인 것을 나타내는 데이터를 블록 상태 테이블(51)에 기록한다(단계 S502).
또한, 단계 S502에서, 데이터 복사 또는 업데이트가 수행될 때, CPU(121)는 이전 그룹 플래그(old group flag)를 새로 이전(old) 데이터(예를 들어, 전송 수신지의 데이터 및 업데이트되지 않는 데이터)가 되는 데이터를 저장하는 그룹의 칼럼의 중복 섹션에 기록한다. 또한, CPU(121)는 이전 데이터를 대신하여 신(new) 데이터(예를 들어, 전송 수신지의 데이터 및 업데이트되는 데이터)를 저장하는 그룹의 물리 그룹 주소를 논리/물리 변환 테이블(61)에 등록한다. 즉, CPU(121)는 이전 데이터를 갖는 그룹의 물리 그룹 주소를 새로운 데이터를 갖는 그룹의 물리 그룹 주소로 재기록한다.
반면에, 등록 그룹의 물리 그룹 주소가 등록되어 있지 않다고 판정했을 때(단계 S501; 아니오), CPU(121)는 등록되지 않은 물리 그룹 주소를 논리/물리 변환 테이블(61)에 등록한다. 즉, CPU(121)는 물리 그룹 주소를 논리/물리 변환 테이블(61)의 새로운 물리 주소와 관련된 저장 위치(20)에 저장한다.
논리/물리 변환 테이블(61)에 물리 그룹 주소를 등록할 때, CPU(121)는 등록된 물리 그룹 주소에 의해 지정된 그룹을 포함한 블록이 블록 상태 테이블(51)에 빈 블록으로 등록되는지를 판정한다. 그 다음, 블록이 빈 블록으로 등록되지 않는 것을 판단했을 때(단계 S504; 아니오), CPU(121)는 그룹 등록 프로세스를 종료한다.
반면에, 블록이 빈 블록으로 등록되는 것을 판단했을 때(단계 S504; 예), CPU(121)는 블록 상태 테이블(51) 내 블록의 상태가 보여지는 저장 위치에 예를 들어“UWO”를 지정하는 데이터를 저장하고, 그룹 등록 프로세스를 종료한다. 처리의 결과로 단계 S505 에서, 블록 상태 테이블(51)은 등록된 물리 그룹 주소에 의해 지정된 그룹을 포함한 블록이 전술한 상태(4a)인 것을 보여주는 그러한 방식으로 업데이트된다.
상기 설명한 처리에 의해, 컴퓨터(2)로부터 공급되는 데이터는 플래시 메모리(11)에 저장된다. 또한, 블록 상태 테이블(51)의 내용은 데이터 기록의 결과로 새로 야기된 블록 상태를 반영하는 내용으로 변경된다. 한편, 논리/물리 변환 테이블(61)의 내용이 또한 변경되어, 새로운 빈 블록으로 블록의 그룹에 배정되는 논리 그룹 주소는 그룹의 내용이 전송된 다른 그룹으로 새로 배정될 수 있다.
기억 시스템은 사용자 데이터가 저장되지 않은 그룹의 수가 충분할 때 블록에 저장된 데이터를 삭제하지 않으므로, 데이터 삭제로 인한 메모리 이용 효율의 감소를 방지하는 것이 가능한다. 따라서, 블록 당 기억 용량이 클 때에도, 플래시 메모리(11)에 기억된 데이터의 이용 효율의 저하는 발생하기 어렵다. 게다가, 데이터를 기억하는 데 요구되는 처리수가 감소하여, 플래시 메모리(11)에의 액세스를 용이하게 한다.
또한, 이 기억 시스템은 사용자 데이터를 기록할 때마다 새로운 빈 블록을 검색하고 사용자 데이터를 상기 새로운 빈 블록에 기록해야 하는 동작의 필요성을 제거한다. 게다가, 사용자 데이터를 기록할 때 블록에 저조한 효율을 야기하는 데 이터 소거를 수행할 필요가 없다. 더욱이, 데이터 기록과 함께 변경되지 않은 부분의 데이터 복사 처리는 블록보다 더 작은 단위로 수행된다.
따라서, 플래시 메모리(11)로의 액세스 효율의 저하가 발생하기 쉽지 않으며, 플래시 메모리(11)에의 액세스가 용이하다.
또한, 이 기억 시스템에서, 논리 주소와 물리 주소 간의 관계는 블록보다는 작고, 페이지 또는 칼럼보다는 큰 단위로 관리된다. 따라서, 논리 주소와 물리 주소 간의 관계를 나타내는 데이터를 저장하는 테이블의 저장 용량은 논리 주소와 물리 주소 간의 관계에 대한 관리가 페이지 단위 또는 칼럼 단위로 수행되는 경우에 비교하여 감소될 수 있다. 한편, 논리 주소와 물리 주소 간의 관계에 대한 관리는 관리가 블록 단위로 수행되는 경우에 비교하여 정확하게 수행되어, 많은 수의 파일을 저장할 수 있다.
또한, 데이터가 기록되어야 하는 그룹은 기록 포인터에 의해 물리 그룹 주소를 위해 지정되므로, 기록이 특정 블록에 집중되는 것을 방지한다. 따라서, 이는 기록이 집중되는 블록에 데이터 소거가 집중되는 것을 방지한다. 이는 플래시 메모리(1)의 액세스 효율의 저하를 방지하는 데 기여한다.
게다가, 이 저장 장치의 구성은 상술한 구성에 한정되지 않는다.
예를 들어, 플래시 메모리(11)의 저장 영역의 블록의 수, 하나의 블록 당 그룹의 수, 하나의 그룹 당 페이지 수, 각 페이지의 저장 용량, 데이터 영역의 저장 용량 및 중복 섹션의 저장 영역은 임의로 설정된다. 또한, 플래시 메모리(11)는 EEPROM에 한정되지 않고, 임의의 컴퓨터 판독 가능 및 기록 가능한 저장 장치에 사 용될 수 있다. 게다가, 디렉토리 및 FAT가 저장되는 칼럼의 논리 주소는 전술한 값에 한정되지 않는다. 디렉토리 및 FAT가 저장되는 칼럼의 수는 임의로 설정된다. 또한, 하나의 칼럼의 데이터 영역 및 중복 섹션은 항상 서로 인접하는 것은 아니다. 따라서, 플래시 메모리(11)의 저장 영역은 예를 들어 네 개의 칼럼의 데이터 영역이 선두로부터 하나의 페이지에 연속적으로 형성되고 네 개의 칼럼의 네 개의 중복 섹션의 연속적으로 형성된 구조를 포함할 수 있다.
추가로, CPU(121)가 사용자 데이터를 기록한 후 블록 상태 테이블(51)을 항상 업데이트시키는 것은 아니다. 즉, 사용자 데이터를 기록함으로써 개개의 블록 상태를 변경하는 방법을 결정한 후에는 언제든지, 사용자 데이터를 기록하기 전에 블록 상태 테이블(51)을 업데이트할 수 있다.
또한, CPU(121)가 내부 버스를 통하여 컴퓨터(2)에 항상 접속되는 것은 아니다. CPU(121)는 PC 카드 표준에 기초한 버스, IEEEl 394 인터페이스, USB (범용 시리얼 버스), 또는 그 외 어떤 임의의 인터페이스를 통하여 컴퓨터(2)에 접속할 수 있다. 또한, CPU(121)가 항상 컴퓨터(2)에 유전 접속되어야 하는 것은 아니다. 예를 들어, CPU(121)는 블루투스와 같은 표준에 기초한 인터페이스를 통하여 컴퓨터(2)에 무선 접속될 수도 있다.
또한, 물리 그룹 어드레스의 모든 숫자를 논리/물리 변환 테이블(61) 내에 저장시킬 필요가 있는 것은 아니다. 예를 들어, 미리 결정된 개수의 낮은 차수의 물리 그룹 어드레스를 임시 물리 그룹 어드레스에 저장시킬 수도 있다. 따라서, 논리/물리 변환 테이블(61)은 물리 그룹 어드레스의 모든 숫자를 대신하여 임시 물 리 그룹 어드레스를 저장할 수 있고, 이에 의해, 물리 그룹 어드레스의 모든 숫자를 저장하는 경우에 비하여 논리/물리 변환 테이블(61)의 크기를 감소시킬 수 있다. 따라서, 논리/물리 변환 테이블(61)을 저장하는 RAM(123)의 저장 용량을 소형으로 만들 수 있기 때문에, 저장 시스템의 최소화를 가능하게 할 수 있다.
또한, RAM(123)은 단계 S403에서의 정리 대상 블록으로서 얻어지는 블록의 물리 블록 어드레스를 나타내는 정리 대상 블록 포인터를 저장할 수 있다. 이 경우, 예를 들어, 단계 S403에서, CPU(121)는 물리 블록 어드레스를 가진 블록을 사용하는데, 이 물리 블록 어드레스는 정리 대상 블록 포인터에 의해 정리 대상 블록으로서 실제적으로 표시된다. 이후, 대응하는 물리 어드레스 후, 상태(4b)에 있는 블록들의 물리 블록 어드레스에 대해서는, CPU(121)가 물리 블록 어드레스를 주기적으로 설정할 수 있다. 즉, 상태(4b)에 있는 블록들의 물리 블록 어드레스의 최소값을 갖고 있고 정리 대상 블록 포인터에 의해 실제적으로 표시되는 물리 블록 어드레스보다 큰 값을 갖고 있는 물리 블록 어드레스(다만, 이들 양쪽을 만족시키는 물리 블록 어드레스가 없는 경우에는, 물리 블록 어드레스는 상태(4b)에 있는 블록들의 물리 블록 어드레스의 최소값을 갖고 있음)는 다음의 분류 블록을 표시하는 물리 블록 어드레스로서 정리대상 블록 포인터로 설정될 수 있다.
이러한 방식으로, 개개의 블록들이 오름 차순으로 데이터의 소거를 수행받고 여기서 데이터가 블록에 기록되며, 이에 의해, 블록에 저장된 데이터가 소거되는 주파수를 이퀄라이징할 수 있다. 따라서, 이에 의해, 플래시 메모리(11)의 전체 수명이 특정 메모리 블록의 집중 사용에 의해 단축되는 것을 방지할 수 있게 된다.
또한, RAM(123)은 단계 S410에서 얻어진 블록의 물리 블록 어드레스를 표시하는 블록 검색 위치 포인터를 저장할 수 있다. 이 경우, CPU(121)는 물리 블록 어드레스를 가진 빈 블록을 얻을 수 있는데, 이 빈 블록은 빈 블록 검색 위치 포인터에 의해 실제적으로 표시된다. 또한, 단계 S410에서, CPU(121)는 빈 블록 검색 위치 포인터에 의해 실제적으로 표시되는 대응하는 블록 어드레스 이후의 빈 블록의 물리 블록 어드레스를 주기적으로 설정할 수 있다. 이러한 구조는 블록에 저장되어 있는 데이터가 소거되는 주파수를 이퀄라이징시켜, 액세스가 특정 메모리 블록에 대하여 집중적으로 사용하는 것을 방지한다.
임시 물리 그룹 어드레스가 미리 결정된 개수의 낮은 차수의 물리 그룹 어드레스만으로 형성되는 경우에는, 플래시 메모리(11)의 그룹들이 복수의 존 중 어느 하나의 존으로 분류되고, 높은 차수의 숫자의 물리 그룹 어드레스가 그룹에 속하는 존을 표시하는 미리 결정된 개수의 낮은 차수의 숫자를 배제하는 것으로 본다. 또한, 각각의 존의 저장 용량의 크기는 한 블록과 같거나 작은 것으로 될 수 있다. 또한, 존은 블록에 맞게 합치될 수 있다.
이후, 그룹들이 복수의 존 중 어느 하나의 존으로 분류되는 경우, 각각의 논리 그룹 어드레스가 존들 중 어느 하나의 존에 속하는 그룹에 할당되는 것으로 본다. 따라서, 그룹이 속하는 존은 그룹에 할당되는 논리 그룹 어드레스에 기초하여 지정될 수 있다.
그룹이 복수의 존 중 어느 하나의 존으로 분류되는 경우, 판독 및 기록될 데이터가 저장되는 컬럼을 획득하기 위하여, CPU(121)는 논리/물리 변환 테이블(61) 을 기준으로 컬럼의 논리 어드레스에 포함된 논리 그룹 어드레스와 관련된 임시 물리 그룹 어드레스를 획득한다. 또한, CPU(121)는 컬럼이 논리 그룹 어드레스에 기초하여 속하고 있는 존을 획득한다. 다음, CPU(121)는 획득한 존, 획득한 임시 물리 그룹 어드레스 및 컬럼이 속하는 페이지의 내부 그룹 페이지 어드레스를 포함하는 물리 어드레스에 의해 표시되는 컬럼에 대한 액세스를 획득한다.
예를 들어, 도 15는 한 메모리 블록이 8개의 그룹으로 이루어지고 4개의 그룹이 하나의 존을 형성하는 경우, 플래시 메모리(11)의 임시 물리 그룹 어드레스와 물리 그룹 어드레스 간의 관계를 나타내는 도면이다. 이 경우, 임시 물리 그룹 어드레스가 각각의 존마다 할당된다. 이에 의해 물리 그룹 어드레스를 사용하지 않고도 존 수와 임시 물리 그룹 어드레스를 사용하여 한 그룹을 지정하는 것이 가능하게 된다. 예를 들어, 물리 그룹 어드레스가 11인 경우, "제2 존과 제3 임시 물리 그룹 어드레스"가 획득될 수 있다.
또한, 논리/물리 변환 테이블(61)이 플래시 메모리(11)에 저장될 수 있다. 이 경우, 논리/물리 변환 테이블 컬럼 리스트(171)가 RAM(123)에 사전기억될 수 있다. 논리/물리 변환 테이블 컬럼 리스트(171)는 논리/물리 변환 테이블(61)을 형성하는 데이터가 저장되어 있는 컬럼(이하, 이 컬럼을 '논리/물리 변환 테이블을 저장하는 컬럼'이라 함)의 위치를 표시한다.
구체적으로는, 예를 들어, 논리/물리 변환 테이블 컬럼 리스트(171)는 서로 관련되어 있는 논리/물리 변환 테이블을 저장하는 컬럼의 물리 어드레스와, 논리/물리 변환 테이블을 저장하는 컬럼의 논리 어드레스(이하, 이 어드레스를 '논리/물 리 변환 테이블을 저장하는 칼럼 포인터'라 함)를 저장한다.
게다가, CPU(121)는, 논리/물리 변환 테이블 기억 칼럼에 할당되는 논리/물리 변환 테이블 기억 칼럼 포인터를, 논리/물리 변환 테이블 기억 칼럼의 리던던트 섹션에 기억시킨다. 예를 들어, 도 16은, 논리/물리 변환 테이블(61)이 플래시 메모리(11)에 기억되는 경우의 예를 도시하는 도면이다. 이 도면에서, 논리/물리 변환 테이블(61)은 그룹(N)의 페이지 0 내지 페이지 7 각각에 기억된다. 그 다음, 논리/물리 변환 테이블(61)은 각 칼럼의 데이터 영역에 기억되고, 논리/물리 변환 테이블 기억 칼럼 포인터는 각 칼럼의 리던던트 섹션에 기억된다.
한편, RAM(23)은 도 17에 도시된 바와 같은 논리/물리 변환 테이블 칼럼 리스트(171)를 기억한다. 이 도면의, 논리/물리 변환 테이블 칼럼 리스트(171)에서, 논리/물리 변환 테이블(61)은 플래시 메모리(11)의 물리 어드레스 1000h 내지 1FFFh를 포함하는 영역에 기억된다.
우선, CPU(121)는, 데이터 판독 처리시에 논리/물리 변환 테이블(61)을 참조하기 위해, 단계(S207)에서의 처리를 대신하여 도 17에 도시된 바와 같은 논리/물리 변환 테이블 칼럼 리스트를 RAM(123)으로부터 판독한다. 그 다음, CPU(121)는, 논리/물리 변한 테이블 칼럼 리스트(171)에 포함된 논리/물리 변환 테이블 기억 칼럼 포인터와 연관된 물리 어드레스에 의해 표시되는 칼럼으로부터, 도 16에 도시된 데이터 영역에 기억된 논리/물리 변환 테이블(61)에 기억된 데이터를 판독한다. 그 다음, CPU(121)는 판독된 데이터를 사용하여 물리 그룹 어드레스를 얻는다.
한편, 데이터 기록 처리에서 논리/물리 변환 테이블(61)의 내용의 업데이트 시에, CPU(121)는, 데이터 기록 처리에서 논리/물리 변환 테이블(61)의 내용을 업데이트할 때 플래시 메모리(11)로부터 논리/물리 변환 테이블(61)을 판독한다. 그 다음, CPU(121)는 판독된 논리/물리 변환 테이블(61)의 내용을 RAM(123)에 임시적으로 기억한다. 또한, CPU(121)는 임시적으로-기억된 논리/물리 변환 테이블(61)의 내용을 갱신하고, 재기록된 논리/물리 변환 테이블(61)을 기록 포인터에 의해 표시된 그룹에 기록한다. 또한, CPU(121)는, 논리/물리 변환 테이블(61)을 형성하는 데이터가 새로이 기록되는 각 칼럼의 물리 어드레스를, 데이터가 이미 기억되어 있는 칼럼을 표시하는 논리/물리 변환 테이블 기억 칼럼 포인터와 연관될 논리/물리 변환 테이블 칼럼 리스트(171)에 기억한다. 반면, CPU(121)는, 논리/물리 변환 테이블 기억 칼럼 포인터와 연관된 물리 어드레스를 논리/물리 변환 테이블 칼럼 리스트(171)로부터 소거한다.
게다가, 논리/물리 변환 테이블(61)을 기억하고 있는 페이지를 나타내는 논리/물리 변환 테이블 기억 칼럼 포인트의 값은, 논리/물리 변환 테이블 기억 칼럼에 기억된 데이터가 논리/물리 변환 테이블(61) 내의 어떤 범위의 논리 그룹 어드레스를 가리키는지를 표시하는 값일 수도 있다. 이 경우, CPU(121)는, 판독되거나 기록될 데이터를 기억하고 있는 칼럼이 속하는 그룹의 논리 그룹 어드레스를 포함하는 부분을, 논리/물리 변환 테이블 칼럼 리스트(171)의 내용에 기초하여 논리/물리 변환 테이블(61)에서 획득한다. 그 다음, CPU(121)는 플래시 메모리(11)로부터 상기 획득된 부분을 판독하고, 판독된 부분을 RAM(123)에 임시적으로 기억하며, 일시적으로-기억된 부분을 논리/물리 변환 테이블(61)로서 처리한다.
앞서 언급한 처리는, 논리/물리 변환 테이블(61)이 참조될 때 플래시 메모리(11)로부터 전체 논리/물리 변환 테이블(61)을 판독하는 동작을 수행할 필요를 제거해 주므로, 논리/물리 변환 테이블(61)을 참조하는데 필요한 시간을 단축시킨다.
게다가, 블록 상태 테이블(51)이 플래시 메모리(11)에 기억될 수도 있다. 이 경우, CPU(121)는, 블록 상태 테이블(51)을 형성하는 데이터가 기억되는 칼럼(이하, 블록 상태 테이블 기억 칼럼이라 언급됨)의 위치를 표시하는 블록 상태 테이블 칼럼 리스트(191)를 기억한다.
구체적으로, 예를 들어, 블록 상태 테이블 칼럼 리스트(191)는, 블록 상태 테이블 기억 칼럼의 논리 어드레스(이하, 블록 상태 테이블 기억 칼럼 포인터라 언급됨)와, 서로 연관될 블록 상태 테이블 기억 칼럼 1의 물리 어드레스를 기억한다.
한편, CPU(121)는 블록 상태 테이블 기억 칼럼 포인터를 블록 상태 테이블 기억 칼럼의 리던던트 섹션에 기억한다.
예로서, 도 18 은 플래시 메모리부(11)에 블록 상태 테이블(51)이 기억되는 경우의 예를 도시하는 도면이다. 이 도면에서, 블록 상태 테이블(51)은 그룹(N)의 페이지 0 내지 페이지 7 각각에 기억된다. 그 다음, 블록 상태 테이블(51)은 각 칼럼의 데이터 영역에 기억되고, 블록 상태 테이블 기억 칼럼 포인터가 각 칼럼의 리던던트 섹션에 기억된다.
한편, RAM(123)은 도 19에 도시된 바와 같은 블록 상태 테이블 칼럼 리스트(191)를 기억한다. 이 도면의, 블록 상태 테이블 칼럼 리스트(191)에서, 블록 상태 테이블(51)은 플래시 메모리(11)의 물리 어드레스 2000h 내지 2FFFh를 포함하는 영역에 기억된다.
우선, 데이터 기록 처리에서 블록 상태 테이블(51)의 내용의 업데이트시에, CPU(121)는 플래시 메모리(11)로부터 블록 상태 테이블(51)을 판독한다. 그 다음, CPU(121)는 판독된 블록 상태 테이블(51)을 RAM(123)에 임시적으로 기억한다. 또한, CPU(121)는, 임시-기억된 블록 상태 테이블(51)의 내용을 업데이트하고, 재기록된 블록 상태 테이블(51)을 기록 포인터에 의해 표시된 그룹에 기록한다.
또한, CPU(121)은, 데이터가 새로이 기록되는 블록 상태 테이블(51)을 기억하는 각 칼럼의 물리 어드레스를, 도 19에 도시된 바와 같은 블록 상태 테이블(51)이 기억되는 칼럼을 나타내는 블록 상태 테이블 기억 칼럼 포인터와 연관될 블록 상태 테이블 칼럼 리스트(191)에 기억한다. 반면, CPU(121)는, 블록 상태 테이블 기억 칼럼 포인터와 연관된 물리 어드레스를 블록 상태 테이블 칼럼 리스트(191)로부터 소거한다.
또한, 블록 상태 테이블(51)을 형성하는 데이터가 전술한 존들 중 어느 하나의 미리 결정된 존에 기억되는 경우, CPU(121)는 물리 그룹 어드레스를 블록 상태 테이블 칼럼 리스트(191)에 임시로 기억할 수 있다. 이 경우, 블록 상태 테이블 칼럼(191)에는, 데이터를 기억한 칼럼을 기억하는 블록 상태 테이블이 속하는 그룹의 물리 그룹 어드레스 대신에, 칼럼을 기억하는 블록 상태 테이블이 존 내에서 속하는 그룹의 위치를 나타내는 임시 물리 그룹 어드레스가 기억된다. 그렇기 때문에, 물리 그룹 어드레스의 모든 디지트를 기억하는 경우와 비교하여 블록 상태 테 이블 칼럼 리스트(191)에서의 데이터량을 저감할 수 있다. 따라서, RAM(123)의 기억 용량은 작아지게 되어 기억 시스템을 최소화하는 것이 가능하다.
더욱이, 칼럼 포인터를 기억하는 블록 상태 테이블의 값은 칼럼을 기억하는 블록 상태 테이블에 기억된 데이터가 블록 상태 테이블(51)에서 어떤 범위의 논리 그룹 어드레스인지를 나타내는 값일 수 있다. 이 경우에, CPU(121)는 칼럼의 논리 그룹 어드레스를 포함하는 부분을 취득하고, 판독 및 기록 대상 데이터를 블록 상태 테이블 칼럼 리스트(191)의 내용에 기초하여 블록 상태 테이블(51)에 기억한다. 그리고, CPU(121)는 플래시 메모리(11)로부터의 취득된 부분을 판독하고, 그 판독 부분을 RAM(123)에 임시로 기억한 다음, 임시 기억된 부분을 블록 상태 테이블(51)로서 취급한다.
전술한 처리에서는 블록 상태 테이블(51)을 참조하는 경우에 전체 블록 상태 테이블(51)를 플래시 메모리(11)로부터 판독하는 동작을 할 필요가 없기 때문에 블록 상태 테이블(51)을 참조하는데 필요한 시간을 단축할 수 있다.
더욱이, 블록 상태 테이블(51)의 데이터 구조가 전술한 구조에 한정되지 않는다. 예컨대, 블록 상태 테이블(51)은 플래시 메모리(11)의 기억 영역에 포함된 각각의 비트가 그 블록의 물리 블록 어드레스와 관련되는, 빈 블록인지의 여부를 나타내는 1 비트 정보를 기억할 수 있다.
그러나, 이 경우에, CPU(121)는 블록이 전술한 상태 (3), (4a) 및 (4b) 중 어떤 상태인지 결정하기 위하여 사용자 데이터가 기록되는지를 나타내는, 예컨대 미리 결정된 식별 데이터(예컨대, 칼럼의 논리 어드레스)를 기록 처리를 받는 칼럼 의 리던던트 섹션에 기록한다. 이 때, CPU(121)는 블록이 전술한 상태 (3), (4a) 및 (4b) 중 어떤 상태인지 결정하기 위하여 블록에서 식별 데이터와 이전(old) 그룹 플래그를 검색한다.
또한, 칼럼의 논리 어드레스를 사용자 데이터가 기록되는 각 칼럼의 리던던트 섹션에 기록하는 경우에, CPU(121)는 그 리던던트 섹션에 기록된 각각의 논리 어드레스를 판독하여 논리 그룹 어드레스를 추출하고, 칼럼이 속하는 그룹의 논리 그룹 어드레스와 물리 그룹 어드레스 간의 관계를 취득한다. 따라서, 예컨대 CPU(121)는 기억 시스템의 시동 직후에 플래시 메모리(11)의 각 칼럼의 리던던트 섹션에 기록된 논리 어드레스를 판독한다. 그리고, CPU(121)는 판독 내용에 기초하여 새로운 논리/물리 변환 테이블(61)을 작성하여 RAM(123)에 기억한다. 이 경우에, RAM(123)은 논리/물리 변환 테이블(61)을 기억하는 비휘발성 기억 영역을 포함할 필요가 없다.
더욱이, 예컨대 블록에 기억된 데이터 소거시에, CPU(121)는 미리 결정된 빈 블록 코드를 새로운 빈 블록으로서 블록 내 칼럼의 리던던트 섹션에 기록할 수 있다. 이 경우에, CPU(121)는 리던던트 섹션에 기록된 빈 블록 코드를 검색함으로써 빈 블록을 특정할 수 있다. 따라서, 예컨대 CPU(121)는 기억 시스템의 시동 직후에 플래시 메모리(11)의 각 칼럼의 리던던트 섹션에 기록된 빈 블록 코드를 검색한다. 그리고, CPU(121)는 그 검색 결과에 기초하여 새로운 블록 상태 테이블(51)을 작성하여 RAM(123)에 기억할 수 있다. 그러나, 이 경우에, 블록 상태 테이블(51)은 플래시 메모리(11)의 기억 영역에 포함된 각 블록이 블록의 물리 블록 어드레스 와 관련되는 빈 블록인지의 여부를 나타내는 1 비트 정보를 기억할 수 있다.
따라서, CPU(121)가 새로운 블록 상태 테이블(51)을 작성하는 처리를 수행하는 경우에, RAM(123)은 블록 상태 테이블(51)을 기억하는 비휘발성 기억 영역을 제공하기 위해 비휘발성 메모리를 포함할 필요가 없다.
이상에서는 본 발명의 실시예를 설명하였지만, 본 발명의 기억 시스템은 전용 시스템을 이용하는 일없이 범용 컴퓨터 시스템을 이용하여 구현될 수 있다. 예컨대, 전술한 처리를 실행하는 기억 시스템은 프로그램을 장착함으로써 달성될 수 있으며, 이러한 프로그램은 플래시 메모리(11)를 삽입하기 위한 슬롯을 구비한 개인용 컴퓨터로 하여금 그 프로그램이 기억된 매체(플렉시블 디스크, CD-ROM 등)로부터 전술한 동작을 실행하게 하는 것이다.
더욱이, 예컨대, 프로그램은 통신 채널을 통해 프로그램을 분배하기 위해 통신 채널의 BBS에 업로드될 수 있다. 더욱이, 반송파가 프로그램을 나타내는 신호에 의해 변조되고, 취득된 변조파가 전송되어, 변조파를 수신하는 장치가 그 변조파를 복조하여 프로그램을 복구할 수 있다.
그리고, 프로그램은 OS의 제어 하에서 다른 애플리케이션 프로그램과 유사한 방식으로 개시 및 실행되고, 그에 따라 전술한 처리를 실행하는 것이 가능하다.
또한, OS가 본 발명의 처리의 일부를 공유하거나 본 발명의 하나의 구성 요소의 일부를 구성하는 경우에, 대응하는 부분을 실행하는 프로그램은 기록 매체 상에 기억될 수 있다. 이 경우에, 본 발명에 따라, 컴퓨터로 하여금 각각의 기능 또는 단계를 실행하게 하는 프로그램이 기록 매체 상에 기억되어 있다고 가정하기로 한다.
다양한 실시예 및 변화가 본 발명의 기술적 사상 및 범주로부터 벗어나지 않고 이루어질 수 있다. 전술한 실시예는 본 발명을 설명하기 위한 것이지, 본 발명의 범주를 한정하는 것이 아니다. 본 발명의 범주는 실시예로부터가 아나라 이어지는 특허청구범위에서 알 수 있다. 본 발명의 특허청구범위의 등가의 의미 내에서 그리고 특허청구범위 내에서의 다양한 변형은 본 발명의 범주 내에 있는 것으로 간주되어야 한다.
본 출원은 명세서, 청구범위, 도면 및 요약서를 포함하여 2004 년 9 월 10 일자로 출원되는 일본 특허 출원 제 2004-263995 호에 기초한다. 상기 일본 특허 출원의 개시내용은 그 전체가 참고로 여기에 포함된다.

Claims (15)

  1. 사용자 데이터를 기억하기 위한 기억 영역들로서 복수의 메모리 블록들을 포함하는 기억 수단(11)으로서, 각 메모리 블록은 상기 메모리 블록보다 작은 기억 용량을 각각 가지는 복수의 그룹들을 결합함으로써 형성되고, 각 그룹은 상기 그룹보다 작은 기억 용량을 각각 가지는 복수의 페이지들을 결합함으로써 형성되는, 기억 수단(11);
    상기 기억 영역 내의 그룹의 물리 위치를 나타내는 물리 그룹 어드레스를 상기 그룹의 논리 위치를 나타내는 논리 그룹 어드레스와 연관시키기 위한 제 1 테이블(61)을 기억하는 테이블 기억 수단(123);
    사용자 데이터가 상기 그룹으로부터 기억될 수 있는 빈 그룹을 획득하고 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하는 포인터 기억 수단(123); 및
    사용자 데이터, 상기 사용자 데이터가 기록되는 그룹을 나타내는 논리 그룹 어드레스, 및 상기 그룹에 속하는 페이지 내에 상기 사용자 데이터를 기록하는 기억 위치를 나타내는 그룹 내 어드레스의 공급 시에, 상기 포인터에 의해 나타내는 상기 빈 그룹에 속하는 페이지의 그룹 내 어드레스에 의해 표시되는 기억 위치에서 상기 사용자 어드레스를 기록하고, 상기 빈 그룹의 물리 그룹 어드레스와 상기 공급된 논리 그룹 어드레스와 연관시키기 위한 데이터를 상기 제 1 테이블(61)에 추가적으로 기록하는 기록 수단(12)을 포함하는 기억 장치.
  2. 제 1 항에 있어서, 상기 기록 수단(12)은,
    새로운 사용자 데이터가 기록되는 기억 위치가 속하는 그룹의 논리 그룹 어드레스를 상기 기억 위치의 그룹 내 어드레스에 의해 지정된 다른 기억 위치에 기억된 사용자 데이터가 불필요한 데이터임을 나타내는 데이터와 연관시키는 사용자 데이터 무효화 수단(12);
    상기 사용자 데이터 무효화 수단(12)에 의해 불필요한 것으로 결정된 사용자 데이터를 기억하는 상기 메모리 블록들로부터 데이터를 소거해야 하는 메모리 블록을 지정하는 소거 대상 지정 수단(12); 및
    상기 소거 대상 지정 수단(12)에 의해 지정된 메모리 블록에 저장되는 사용자 데이터가 필요한 것인지를 판정하고, 필요한 것으로 판정되면 상기 사용자 데이터를 또 다른 메모리 블록에 전달하고, 상기 소거 대상 지정 수단(12)에 의해 지정된 메모리 블록에 의해 기억된 데이터를 추가적으로 소거하는 소거 수단(12)을 포함하는 것인 기억 장치.
  3. 제 2 항에 있어서, 상기 메모리 블록에 빈 블록이 포함되어 있는지를 식별하기 위한 정보를 포함하는 제 2 테이블(51)을 기억하는 기억 수단(123)을 더 포함하며,
    상기 기록 수단(12)은,
    상기 공급된 사용자 데이터를 상기 빈 블록에 기록한 결과, 상기 그룹을 포 함하는 메모리 블록으로부터 상기 빈 그룹을 소거하는 경우, 상기 메모리 블록이 빈 그룹을 포함하고 있지 않음을 나타내는 정보를 상기 제 2 테이블(51)에 기록하는 제 1 업데이트 수단(12); 및
    데이터가 상기 소거 수단(12)에 의해 소거되는 메모리 블록이 빈 블록을 포함하고 있음을 나타내는 정보를 제 2 테이블(51)에 기록하는 제 2 업데이트 수단(12)을 포함하며,
    상기 소거 대상 지정 수단(12)은 빈 그룹을 포함하고 있지 않음을 나타내는 정보를 상기 제 2 테이블(51)에 기록하는 상기 메모리 블록들로부터 데이터를 소거해야 하는 대상 메모리 블록을 지정하는 것인 기억 장치.
  4. 제 2 항에 있어서, 상기 기록 수단(12)은 상기 빈 그룹을 포함하는 메모리 블록들의 개수가 미리결정된 조건을 충족하는지를 판정하는 빈 블록수 판정 수단(12)을 구비하며,
    상기 소거 대상 지정 수단(12)은, 상기 빈 그룹을 포함하는 메모리 블록들의 개수가 상기 미리결정된 조건을 충족하지 못한다고 판정되는 경우, 불필요한 사용자 데이터를 기억하는 메모리 블록들로부터 데이터를 소거해야 하는 대상 메모리 블록을 지정하는 것인 기억 장치.
  5. 제 2 항에 있어서, 상기 물리 그룹 어드레스는 주기적으로 할당된 순위(ranking)를 가지며, 상기 물리 그룹 어드레스에 의해 표시되는 그룹이 속하는 블록을 나타내는 블록 어드레스를 포함하며,
    상기 소거 대상 지정 수단(12)은 불필요한 사용자 데이터를 기억하는 상기 메모리 블록들 중에서 데이터가 최종적으로 소거되는 블록 이후의 제 1 블록 어드레스를 가지는 블록을, 데이터를 소거해야 하는 대상 블록으로서 지정하는 것인 기억 장치.
  6. 제 2 항에 있어서, 상기 제 2 테이블(51)은 불필요한 사용자 데이터가 각 메모리 블록에 포함되어 있는지를 식별하기 위한 정보를 더 포함하며,
    상기 사용자 데이터 무효화 수단(12)은 새로운 사용자 데이터가 기록되는 기억 위치가 속하는 그룹의 논리 그룹 어드레스 및 상기 기억 위치의 그룹 내 어드레스에 의해 지정되는 다른 기억 위치를 포함하는 메모리 블록에 불필요한 사용자 데이터가 기억되어 있음을 나타내는 정보를 상기 제 2 테이블(51)에 기록하는 기록 수단(12)을 포함하며,
    상기 소거 대상 지정 수단(12)은 불필요한 사용자 데이터가 기억되어 있음을 나타내는 정보를 기록하는 상기 메모리 블록들로부터 데이터를 소거해야 하는 대상 메모리 블록을 지정하는 것인 기억 장치.
  7. 제 1 항에 있어서, 상기 물리 그룹 어드레스는 주기적으로 할당된 순위를 가지며,
    상기 포인터 기억 수단(123)은, 상기 사용자 데이터가 기록되는 결과, 상기 사용자 데이터를 기억할 수 있는 페이지를 소거하는 그룹의 물리 그룹 어드레스 이후의 물리 그룹 어드레스를 각각 가지는 빈 그룹들 중에서 제 1 빈 그룹을 획득하는 것인 기억 장치.
  8. 제 1 항에 있어서, 사용자 데이터가 판독되는 그룹의 논리 그룹 어드레스 와, 상기 사용자 데이터가 상기 그룹에 속하는 페이지에 기억되는 기억 위치를 지정하는 그룹 내 어드레스의 공급시에, 상기 논리 그룹 어드레스와 연관되는 물리 그룹 어드레스를 어드레스 변환 테이블에 기초하여 획득하고, 상기 획득된 물리 그룹 어드레스에 의해 나타낸 그룹에 속하는 페이지에서 상기 그룹 내 어드레스에 의해 지정된 기억 위치로부터 판독된 사용자 데이터를 추가적으로 판독하는 판독 수단(12)을 더 포함하는 것인 기억 장치.
  9. 제 8 항에 있어서, 사용자 데이터를 기억하는 내용에 기초하여 수학적 계산을 수행하여 에러 정정 코드를 생성하는 코드 생성 수단(12); 및
    상기 코드 생성 수단(12)에 의해 생성된 상기 에러 정정 코드를 기억하는 코드 기억 수단(11)을 더 포함하며,
    상기 판독 수단(12)은, 상기 판독된 사용자 데이터와 상기 코드 기억 수단(11)에 의해 기억된 상기 에러 정정 코드에 기초하여 상기 사용자 데이터가 정확하게 판독되었는지를 판정하며, 상기 사용자 데이터가 정확하게 판독되지 않은 경우에 상기 에러 정정 코드에 기초하여 상기 사용자 데이터를 복원하여 상기 복원된 데이터를 사용자 데이터와 바꾸는 것인 기억 장치.
  10. 제 1 항에 있어서, 상기 페이지는 하나 이상의 칼럼을 포함하며,
    상기 칼럼의 기억 위치에서의 그룹 내 어드레스는, 상기 그룹 내에서의 상기 칼럼을 포함하는 페이지의 논리 위치를 지정하는 그룹 내 페이지 어드레스 및 상기 페이지 내에서의 상기 칼럼의 논리 위치를 지정하는 칼럼 어드레스를 포함하는 것인 기억 장치.
  11. 제 1 항에 있어서, 상기 제 1 테이블(61)에 의해 기억된 상기 물리 그룹 어드레스는, 그룹들의 각 세트에 대하여 할당된 물리 어드레스 및 그룹들의 상기 세트에서의 논리 위치를 나타내는 어드레스를 포함하는 것인 기억 장치.
  12. 제 1 항에 있어서, 상기 기억 수단(11)에 기억되는 제 1 테이블(61)을 기억하는 테이블 기억 영역의 물리 어드레스를 상기 테이블 기억 영역의 논리 위치를 나타내는 어드레스와 연관시키기 위한 리스트를 기억하는 리스트 기억 수단(123)을 더 포함하며,
    상기 기록 수단(12)은 상기 테이블 기억 영역의 논리 위치를 나타내는 어드레스에 기초하여 상기 물리 어드레스를 획득하고, 상기 획득된 물리 어드레스에 대응하는 기억 영역에 기억되는 데이터에 기초하여 상기 논리 그룹 어드레스를 획득하는 것인 기억 장치.
  13. 제 1 항에 있어서, 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하도록 상기 기억된 사용자 데이터를 상기 그룹으로부터 복사할 수 있는 상태에 있는 빈 그룹을 획득하는 제 2 포인터 기억 수단(123)을 더 포함하며,
    상기 기록 수단(12)은, 상기 기억된 사용자 데이터가 상기 빈 그룹으로 복사되는 경우 상기 제 2 기억 수단(123)에 의해 기억되는 포인터에 의해 표시되는 빈 그룹에 상기 사용자 데이터를 복사하고, 상기 사용자 데이터가 기억되는 논리 그룹을 상기 빈 그룹의 물리 그룹 어드레스와 연관시키는 데이터를 상기 테이블에 추가적으로 기록하는 것인 기억 장치.
  14. 사용자 데이터를 기억하기 위한 기억 영역들로서 복수의 메모리 블록들을 포함하는 기억 수단(11)을 관리하기 위한 메모리 관리 방법으로서,
    각 메모리 블록은 상기 메모리 블록보다 작은 기억 용량을 각각 가지는 복수의 그룹들을 결합함으로써 형성되고, 각 그룹은 상기 그룹보다 작은 기억 용량을 각각 가지는 복수의 페이지들을 결합함으로써 형성되며,
    상기 기억 영역 내의 그룹의 물리 위치를 나타내는 물리 그룹 어드레스를 상기 그룹의 논리 위치를 나타내는 논리 그룹 어드레스와 연관시키기 위한 제 1 테이블(61)을 기억하는 테이블 기억 단계;
    사용자 데이터가 상기 그룹으로부터 기억될 수 있는 빈 그룹을 획득하고 상기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하는 포인터 기 억 단계; 및
    사용자 데이터, 상기 사용자 데이터가 기록되는 그룹을 나타내는 논리 그룹 어드레스, 및 상기 그룹에 속하는 페이지 내에 상기 사용자 데이터를 기록하는 기억 위치를 나타내는 그룹 내 어드레스의 공급 시에, 상기 포인터에 의해 나타내는 상기 빈 그룹에 속하는 페이지의 그룹 내 어드레스에 의해 표시되는 기억 위치에서 상기 사용자 어드레스를 기록하고, 상기 빈 그룹의 물리 그룹 어드레스와 상기 공급된 논리 그룹 어드레스와 연관시키기 위한 데이터를 상기 제 1 테이블(61)에 추가적으로 기록하는 기록 단계를 포함하는 메모리 관리 방법.
  15. 사용자 데이터를 기억하기 위한 기억 영역들로서 복수의 메모리 블록들을 포함하는 기억 수단(11)에 접속되는 컴퓨터로 하여금 기능들 실행하게 하는 프로그램으로서,
    각 메모리 블록은 상기 메모리 블록보다 작은 기억 용량을 각각 가지는 복수의 그룹들을 결합함으로써 형성되고, 각 그룹은 상기 그룹보다 작은 기억 용량을 각각 가지는 복수의 페이지들을 결합함으로써 형성되며,
    상기 기능들은,
    상기 기억 영역 내의 그룹의 물리 위치를 나타내는 물리 그룹 어드레스를 상기 그룹의 논리 위치를 나타내는 논리 그룹 어드레스와 연관시키기 위한 제 1 테이블(61)을 기억하는 테이블 기억 수단(123)으로서의 기능;
    사용자 데이터가 상기 그룹으로부터 기억될 수 있는 빈 그룹을 획득하고 상 기 획득된 빈 그룹의 물리 그룹 어드레스를 나타내는 포인터를 기억하는 포인터 기억 수단(123)으로서의 기능; 및
    사용자 데이터, 상기 사용자 데이터가 기록되는 그룹을 나타내는 논리 그룹 어드레스, 및 상기 그룹에 속하는 페이지 내에 상기 사용자 데이터를 기록하는 기억 위치를 나타내는 그룹 내 어드레스의 공급 시에, 상기 포인터에 의해 나타내는 상기 빈 그룹에 속하는 페이지의 그룹 내 어드레스에 의해 표시되는 기억 위치에서 상기 사용자 어드레스를 기록하고, 상기 빈 그룹의 물리 그룹 어드레스와 상기 공급된 논리 그룹 어드레스와 연관시키기 위한 데이터를 상기 제 1 테이블(61)에 추가적으로 기록하는 기록 수단(12)으로서의 기능을 포함하는 프로그램.
KR1020067020537A 2004-09-10 2005-09-08 기억 장치, 메모리 관리 방법 및 프로그램 KR100847506B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004263995A JP3942612B2 (ja) 2004-09-10 2004-09-10 記憶装置、メモリ管理方法及びプログラム
JPJP-P-2004-00263995 2004-09-10

Publications (2)

Publication Number Publication Date
KR20070024504A true KR20070024504A (ko) 2007-03-02
KR100847506B1 KR100847506B1 (ko) 2008-07-22

Family

ID=36036550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067020537A KR100847506B1 (ko) 2004-09-10 2005-09-08 기억 장치, 메모리 관리 방법 및 프로그램

Country Status (5)

Country Link
US (1) US20070245069A1 (ko)
EP (1) EP1787202A4 (ko)
JP (1) JP3942612B2 (ko)
KR (1) KR100847506B1 (ko)
WO (1) WO2006028283A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405639B2 (en) 2007-06-07 2016-08-02 Micron Technology, Inc. Systems and methods for retrieving data

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100885783B1 (ko) 2007-01-23 2009-02-26 주식회사 하이닉스반도체 플래시 메모리 장치 및 동작 방법
JP4640366B2 (ja) * 2007-03-23 2011-03-02 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20090026941A (ko) 2007-09-11 2009-03-16 삼성전자주식회사 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
TWI381383B (zh) * 2007-11-14 2013-01-01 Netac Technology Co Ltd 快閃記憶體的資料儲存方法
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2009230414A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 複数の不揮発性メモリデバイスを有する記憶装置
JP2010097563A (ja) 2008-10-20 2010-04-30 Nec Corp ネットワークストレージシステム、ディスクアレイ装置、ホスト装置、アクセス制御方法、データアクセス方法
TWI408688B (zh) * 2009-10-12 2013-09-11 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
TWI421869B (zh) * 2009-10-14 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
TWI421870B (zh) * 2009-10-30 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
KR101826137B1 (ko) 2011-03-24 2018-03-22 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
KR101355892B1 (ko) * 2013-01-15 2014-01-28 한밭대학교 산학협력단 실시간 단일 메모리 동시 입출력을 위한 영상데이터 처리방법
US9727249B1 (en) * 2014-02-06 2017-08-08 SK Hynix Inc. Selection of an open block in solid state storage systems with multiple open blocks
US9778864B2 (en) * 2015-03-10 2017-10-03 SK Hynix Inc. Data storage device using non-sequential segment access and operating method thereof
US10635596B2 (en) 2015-10-02 2020-04-28 Sony Interactive Entertainment Inc. Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes
JP6254986B2 (ja) * 2015-10-02 2017-12-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、アクセスコントローラ、および情報処理方法
JP6243884B2 (ja) * 2015-10-02 2017-12-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、プロセッサ、および情報処理方法
TWI596476B (zh) * 2015-11-27 2017-08-21 群聯電子股份有限公司 資料程式化方法、記憶體儲存裝置及記憶體控制電路單元
US10613988B2 (en) * 2016-09-28 2020-04-07 Micro Focus Llc Purging storage partitions of databases
CN111324287A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN113196258A (zh) * 2018-12-19 2021-07-30 索尼集团公司 信息处理装置、信息处理方法和信息处理程序

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60156151A (ja) * 1983-12-23 1985-08-16 Nec Corp メモリアクセス制御装置
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
JPH10124381A (ja) * 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
JP3797649B2 (ja) * 1999-05-31 2006-07-19 シャープ株式会社 不揮発性半導体記憶装置
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US20030236746A1 (en) * 2002-06-19 2003-12-25 Turner Michael B. Check and cash dispensing machine and method
US20060143365A1 (en) * 2002-06-19 2006-06-29 Tokyo Electron Device Limited Memory device, memory managing method and program
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
JP2005115562A (ja) * 2003-10-06 2005-04-28 Media Logic:Kk フラッシュrom制御装置
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
JP2005242897A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd フラッシュディスク装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405639B2 (en) 2007-06-07 2016-08-02 Micron Technology, Inc. Systems and methods for retrieving data

Also Published As

Publication number Publication date
WO2006028283A1 (en) 2006-03-16
JP2006079434A (ja) 2006-03-23
KR100847506B1 (ko) 2008-07-22
WO2006028283B1 (en) 2006-07-13
EP1787202A1 (en) 2007-05-23
JP3942612B2 (ja) 2007-07-11
EP1787202A4 (en) 2008-05-21
US20070245069A1 (en) 2007-10-18

Similar Documents

Publication Publication Date Title
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
JP4132086B2 (ja) フラッシュメモリ内のブロックにおける移動セクタ
USRE46404E1 (en) Flash memory management method
JP4695801B2 (ja) 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置
US8239612B2 (en) Memory controller, flash memory system with memory controller, and control method of flash memory
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US8291155B2 (en) Data access method, memory controller and memory storage system
US5907856A (en) Moving sectors within a block of information in a flash memory mass storage architecture
US6978342B1 (en) Moving sectors within a block of information in a flash memory mass storage architecture
JPH08137634A (ja) フラッシュディスクカード
JP2005242897A (ja) フラッシュディスク装置
KR19990045218A (ko) 불휘발성 기억 장치, 불휘발성 기억 장치의 제어 방법 및 불휘발성 기억 장치를 제어하는 프로그램을 기록한 정보 기록 매체
US6347355B1 (en) Non-volatile storage, the controlling method, and information memory medium
CN112882650A (zh) 数据储存装置以及非挥发式存储器控制方法
US20130013885A1 (en) Memory storage device, memory controller, and method for identifying valid data
JP2007133541A (ja) 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
JP2009205689A (ja) フラッシュディスク装置
JP2005115561A (ja) フラッシュrom制御装置
JP4130808B2 (ja) フォーマット方法
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
US11609844B2 (en) Memory system with hierarchical tables
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
JP2008299455A (ja) データ記憶装置及びデータ管理方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee