KR100324028B1 - 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법 - Google Patents

비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법 Download PDF

Info

Publication number
KR100324028B1
KR100324028B1 KR1019997002752A KR19997002752A KR100324028B1 KR 100324028 B1 KR100324028 B1 KR 100324028B1 KR 1019997002752 A KR1019997002752 A KR 1019997002752A KR 19997002752 A KR19997002752 A KR 19997002752A KR 100324028 B1 KR100324028 B1 KR 100324028B1
Authority
KR
South Korea
Prior art keywords
block
sector
frame
data
logical
Prior art date
Application number
KR1019997002752A
Other languages
English (en)
Other versions
KR20000048766A (ko
Inventor
매튜스월터에스.
더로클라크에스.
맥도날드베너3세
시데보라엘.
델포조필립제이.3세
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 KR20000048766A publication Critical patent/KR20000048766A/ko
Application granted granted Critical
Publication of KR100324028B1 publication Critical patent/KR100324028B1/ko

Links

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

파일의 섹터를 기억하기위해 복수의 개별적인 소거가능 블록을 갖는 비휘발성 메모리가 사용된다. 파일을 중복기재하는 방법은 데이터 프레임을 수신하는 단계를 포함한다(320). 프레임이 기록될 논리 섹터가 결정된다(330). 논리 섹터는 비휘발성 메모리의 제 1 블록에 있는 제 1 오프셋에 위치한 제 1 섹터에 상응한다. 제 1 블록은 관련된 제 1 논리 블록번호를 또한 갖는다(330). 데이터 프레임은 제 2 섹터에 기록된다(340). 제 2 섹터는 예비 블록에 있는 제 2 오프셋에 위치한다(340). 제 1 및 제 2 오프셋은 일치한다(340). 예비 블록의 논리 블록번호는 제 1 논리 블록번호와 동일하게 갱신된다(350).

Description

비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법{METHOD FOR PERFORMING A CONTINUOUS OVER-WRITE OF A FILE IN A NONVOLATILE MEMORY}
컴퓨터 시스템은 전형적으로 비휘발성 대용량 기억장치의 일부 형태를 구비한다. 컴퓨터의 운영 시스템은 대용량 기억장치내에 기억된 파일을 생성, 삭제, 수정,또는 추가하기위해 대용량 기억장치와의 통신을 담당한다. 데이터는 대용량 기억장치내에 파일을 기록함으로써 디스크에 기억된다.
전자기계식 하드 드라이브는 컴퓨터 시스템에 의해 흔히 사용되는 비휘발성 대용량 기억장치의 한 형태이다. 전자기계식 하드 드라이브는 한개 이상의 순환 플래터 즉 디스크를 갖는다. 이러한 순환 플래터는 데이터를 기억하는 자기 기억 매체를 포함한다. 플래터는 트랙이라 칭하는 동심 원으로 분할된다. 트랙이 섹터로 다시 분할되도록 플래터는 방사상으로 또한 분할된다. 따라서, 플래터는 복수의 트랙을 갖고, 각 트랙은 복수의 섹터를 갖는다.
각 섹터는 컴퓨터 시스템이 참조할 수 있도록 소정의 섹터번호를 갖는다. 전자기계식 하드 드라이브에 기억된 파일은 다수의 섹터를 차지할 수 있다. 파일과 관련된 섹터(즉, 파일 섹터)는 한개 이상의 플래터에 위치될 수 있기에 관련된 섹터는 반드시 연속적인 번호를 가질 필요가 없으며 또한 섹터가 서로서로 인접하여 위치될 필요도 없다. 일단 파일이 생성되면, 새로운 데이터를 파일에 추가함으로써 새로운 데이터는 기억될 수 있다. 이것은 추가 섹터를 파일에 할당함으로써 전형적으로 파일 크기의 확장을 가져온다.
일부 응용에서는 이미 존재하는 파일을 첨가하기보다 이미 존재하는 파일을 수정만 하면 된다. 예를 들어, 데이터 윈도우의 기억장치만이 요구되는 응용을 고려해본다. 어떠한 순간에서도, 고정된 양의 데이터만이 기억되어야한다. 연속적으로 새로운 데이터를 파일에 첨가하고 이에따라 상기 파일에 대한 기억장치를 확장하는 대신, 데이터의 현재 윈도우로 파일의 일부가 중복기재된다. 따라서, 예를 들어, 데이터 윈도우를 감안하여 충분한 파일 공간이 전자기계식 하드 드라이브에 일단 할당되면, 파일 또는 파일의 일부는 수신되는 데이터로 연속적으로 중복기재될 수 있고 따라서 파일 또는 파일의 일부는 데이터의 현재 윈도우를 나타낸다. 동일 섹터에 기억된 데이터의 오래된 버전을 중복기재하는데 새로운 버전의 데이터 섹터가 사용된다. 이 기술은 전자기계식 하드 드라이브가 실질적으로 데이터로 차있을때 특히 유용하다.
반도체 디스크는 전자기계식 하드 드라이브에 대용량 기억장치를 제공한다. 반도체 디스크는 일반적으로 대용량 기억장치를 제공하기위해 비휘발성 반도체 메모리를 사용한다. 그러나, 전자기계식 하드 드라이브와의 호환성을 유지하기위해,반도체 디스크는 특히 동일 섹터 이용한 파일 기억 기술을 지원하며 따라서 컴퓨터 시스템은 반도체 디스크로부터 데이터를 수신하기위해 또는 기억하기위해 번호가 매겨진 섹터를 참조할 수 있다.
전자기계식 하드 드라이브와 대조적으로, 재프로그래밍되기전에 반도체 디스크의 비휘발성 메모리는 소거되어야 한다. 따라서, 메모리의 일부에 기억된 데이터를 변경하기위해서, 상기 메모리의 일부는 우선 소거되어야한다. 그러나, 일부 비휘발성 메모리에 대하여, 소거는 비교적 긴 시간이 걸릴 수 있다.
전자기계식 하드 드라이브의 성능과 동일한 반도체 디스크성능을 얻기위해, 파일 섹터를 갱신하는 한 기술은 새로운 버전의 섹터를 비휘발성 메모리내의 또다른 위치에 기록하는 것이다.
섹터를 비휘발성 메모리내의 상이한 위치에 기록하는 한가지 단점은, 현재 버전의 섹터 위치를 추적하기위해 섹터 맵이 필요할 수 있다는 것이다. 섹터 맵은 섹터가 재배치될 때마다 갱신될 필요가 있을 것이다.
오래된 버전은 기억 공간을 늘리기위해 상대적으로 우선순위가 낮은(background) 정리 프로세스에서 소거된다. 상대적으로 우선순위가 낮은 정리 프로세스는 소거가 비휘발성 메모리를 위한 기록 시간 또는 효과적인 프로그래밍에 역으로 영향을 주지 않을 정도까지 소거를 지연시킬 수 있다.
지연된 소거 프로세스는 반도체 디스크로 간헐적인 데이터 전송과 같은 일부 응용에 대해 적절할 수 있으나, 상기 설명된 지연된 소거 프로세스는 연속적으로 중복기재되는 파일에 대해 부적절할 수 있다. 특히, 상대적으로 우선순위가 낮은 정리 프로세스가 상당히 지연된다면, 상대적으로 우선순위가 높은(foreground) 정리 프로세스는 비휘발성 메모리에서 추가 공간을 늘리기 위해 수행되어야 할 것이다.
상대적으로 우선순위가 높은 정리 프로세스가 실행되는동안, 수신되는 데이터는 임시적으로 다른 곳에 기억되어야 하거나 또는 무시되어야한다. 데이터를 무시함으로써 데이터는 손실되며, 이러한 사항은 피해야한다. 비교적 많은 양의 임시 기억장치를 제공하는 것은 반도체 드라이브의 비용 및 크기가 증가되는 경향이 있다. 게다가, 임시 기억한계를 초과하게되면 불충분한 기억장치로 인해 데이터는 손실된다.
비휘발성 메모리에 기억된 파일의 연속적인 중복기재를 가능하게 하는 방법이 필요하다.
발명의 개요
공지된 시스템과 방법을 고려하여, 비휘발성 메모리에 기억된 파일을 중복기재하는 방법이 제공된다. 방법은 데이터 프레임을 수신하는 단계를 포함한다. 프레임이 기록될 논리섹터가 결정된다. 논리섹터는 제 1 블록의 제 1 오프셋에 위치한 제 1 섹터에 상응한다. 제 1 블록은 관련된 제 1 논리블록번호를 갖는다. 제 1 섹터는 현재 파일의 일부를 기억한다. 프레임은 예비 블록내의 제 2 오프셋에 위치한 제 2 섹터에 기록된다. 제 1 및 제 2 오프셋이 일치하도록 제 2 오프셋이 선택된다. 예비 블록의 논리블록번호는 제 1 블록의 논리블록번호로 갱신된다.
파일을 중복기재하는 또다른 방법에는 블록 재요구동안 수신되는 데이터의 손실을 피하기위해 오버헤드 영역을 사용하는 것을 포함한다. 복수의 데이터 프레임을 수신한후, 적어도 한 개의 프레임이 비휘발성 메모리의 오버헤드 영역에 기억된다. 프레임이 기록될 논리섹터가 결정된다. 논리섹터는 비휘발성 메모리의 제 1 블록내의 제 1 오프셋에 위치한 제 1 섹터에 상응한다. 제 1 블록은 제 1 논리블록번호를 갖는다. 중복기재될 파일의 일부는 제 1 섹터에 현재 기억된다. 이후 제 1 프레임은 오버헤드 영역으로부터 제 2 섹터로 복사된다. 제 2 섹터는 비휘발성 메모리의 예비 블록내의 제 2 오프셋에 위치된다. 제 1 및 제 2 오프셋이 일치하도록 제 2 오프셋이 선택된다. 이후의 프레임이 기록될 논리섹터가 제 1 블록에 물리적으로 위치한 어떠한 섹터에도 상응하면, 프로세스는 오버헤드 영역에 기억된 이후의 각 프레임에 대해 반복된다. 예비 블록의 논리블록번호는 제 1 블록의 논리블록번호로 갱신된다.
본 발명의 다른 특성 및 이점은 다음에 따르는 상세한 설명과 첨부된 도면에 의해 명백할 것이다.
본 발명은 컴퓨터 시스템에서 파일 기억 분야에 관한 것이다. 보다 상세하게, 본 발명은 섹터 이용 파일 관리 시스템을 사용하여 반도체 디스크에 기억된 파일을 중복기재하는 방법에 관한 것이다.
본 발명은 예를 들어 도시되며 첨부된 도면으로 제한된 것이 아니며, 부재기호는 유사한 사항을 나타낸다.
도 1은 전자기계식 하드 드라이브에 기억된 파일의 중복기재를 수행하는 방법을 도시한다.
도 2는 전자기계식 하드 드라이브에 기억된 파일의 중복기재를 수행하는 대체 방법을 도시한다.
도 3은 비휘발성 메모리에 기억된 파일을 중복기재할 때 사용되는 방법을 도시한다.
도 4는 도 3 방법의 응용을 도시한다.
도 5는 정리를 위해 표시된 블록을 재요구하는 방법을 도시한다.
도 6은 도 5 방법의 응용을 도시한다.
도 7은 비휘발성 메모리에 기억된 파일의 연속 중복기재를 수행하는 방법을 도시한다.
도 8은 오버헤드 영역에 기억된 섹터를 재배치하는 방법을 도시한다.
전자기계식 하드 드라이브를 지원하는 운영 시스템은 전형적으로 파일을 관리하기위해 섹터 이용 기술을 사용한다. 사용자 또는 개별적인 응용 프로그램은, 전자기계식 하드 드라이브로부터 판독 또는 기록시 섹터번호를 직접 처리하지 않는다. 전형적으로, 운영시스템은 파일의 특정 섹터를 식별하거나 위치시키기위해 파일 포인터의 사용을 지원한다. 따라서, 운영 시스템은 파일과 관련된 데이터 섹터를 검색하거나 기억하기위해 섹터번호와 전자기계식 하드 드라이브의 통신을 담당한다.
일반적으로 운영 시스템은 주어진 파일과 관련된 모든 섹터를 위치시키기위해 할당 맵의 몇가지 형태를 사용한다. 섹터 이용 파일 시스템의 한 형태는 특정 파일과 관련된 섹터를 추적하기위해 파일 할당 테이블(FAT)을 사용한다. FAT는 전형적으로 전자기계식 하드 드라이브내의 소정의 위치에 기억된 할당 유닛 테이블이다. 할당 유닛은 파일에 할당할 수 있는 최소 크기이다. 할당 유닛은 섹터만큼 작을 수 있다. FAT는 전자기계식 하드 드라이브내의 소정의 위치에 기억되기 때문에, FAT는 고정된 최대 엔트리만을 허용한다. 보다 많은 섹터를 갖는 큰 디스크를 수용하기위해, 한 개의 할당 유닛이 섹터의 클러스터로 구성되도록 할당 유닛당 다수의 섹터는 증가된다. FAT는 어느 파일이 주어진 파일과 관련있는지를 표시하기위한 인덱스 역할을 한다.
FAT의 사용으로 인해 파일은 물리적으로 함께 그룹화되지 않은 섹터를 사용할 수 있다. 파일이 생성됨에 따라, 운영 시스템은 상기 파일을 기억하기위해 디스크에서 이용가능한 공간을 검색한다. 기억공간이 연속적으로 충분하다면, 운영 시스템은, 상기 파일이 인접하여 액세스된 기억영역의 섹터를 사용하도록 하드 디스크에 파일을 기억한다. 그렇지 않다면, 운영 시스템은, 파일이 완전히 디스크에 기억될 때까지 이용가능한 공간에 파일의 일부를 배치할 것이다. FAT는 디스크에 있는 파일의 위치를 매핑하는 것을 돕는다. 디스크로부터 파일을 검색하기위해, FAT는 파일과 관련된 섹터를 위치시키는데 사용된다. 이후 디스크로부터 파일의 일부 또는 파일을 검색할 수 있도록 섹터는 함께 연결된다.
파일이 생성, 수정, 삭제됨에 따라, 개별적인 파일은 프래그먼트되어 더이상 연속적으로 디스크에서 기억되지 않는다. 하드 드라이브 전체에 산재된 공간에 파일을 기억하기위해 필요하다면 운영 시스템은 파일을 프래그먼트할 것이다. 할당 맵과 섹터번호의 사용으로 인해 전자기계식 하드 드라이브에 기억된 파일의 검색, 기억, 및 수정이 가능하다.
전자기계식 하드 드라이브를 대체하는 대용량 기억 매체의 한 형태는 반도체 디스크이다. 반도체 디스크는 비휘발성 메모리의 몇몇 종류를 포함한다. 반도체 디스크에 사용되는 비휘발성 메모리중 한 개는 플로팅 게이트 전기적 소거가능 피롬(플래시 EEPROM 즉, 플래시 메모리)이다.
플래시 메모리 셀은 소정의 임계값이하의 플로팅 게이트에 있는 전체 전하를 감소시킴으로써 소거된다. 소거된 셀은 보통 이진수(1)를 기억한다. 전체 전하가 소정의 임계값을 초과할 때 플래시 메모리 셀은 프로그래밍된다. 프로그래밍된 셀은 보통 이진수(0)를 기억한다. 플래시 메모리 셀은 한가지 예외를 제외하고 먼저 소거되지 않고는 재프로그래밍될 수 없다. 플래시 메모리 셀은 전하를 플로팅 게이트에 더함으로써 어느 때라도 '0'으로 프로그래밍될 수 있다.
플래시 메모리는 전형적으로 개별적인 소거가능 블록으로 분할된다. 각 블록은 다수의 플래시 메모리 셀을 포함한다. 각 블록은 개별적으로 소거될 수 있지만, 주어진 플래시 셀은 전체 블록을 소거함으로써 만 소거될 수 있다. 따라서, 플래시 셀을 재프로그래밍하기위해서, 셀의 전체 블록은 우선 소거되어야한다.
전자기계식 하드 드라이브를 위해, 운영 시스템은, 드라이브 제어기가 특정 섹터번호에 의해 식별된 섹터로부터 데이터를 제공하도록 요구할 수 있다. 비휘발성 메모리는 전자기계식 하드 드라이브가 아니기 때문에, 섹터번호를 비휘발성 메모리를 위한 물리적 어드레스로 번역하는 번역 메카니즘이 필요하다. 일실시예에서, 이 번역은 소프트웨어로 실현되며 플래시 번역 층(FTL)이라 칭한다. FTL은 반도체 디스크가 전자기계식 하드 드라이브를 대행하게 하며, 따라서 전자기계식 하드 드라이브를 지원하는 운영 시스템은, 플래시 메모리와 같은 비휘발성 메모리를 포함하는 반도체 디스크를 위한 섹터 이용 파일 시스템을 계속 사용할 수 있다.
생성된 파일을 위한 공간을 할당하는 것에 더하여, 운영 시스템은 이미 존재하는 파일에 대한 수정을 관리해야 한다. 상기 언급된 바와같이, 전자기계식 하드 드라이브를 지원하는 운영 시스템은 파일을 관리하기위해 섹터 이용 기술을 사용한다. 특히, 운영 시스템은 수정될 데이터와 관련된 특정 섹터를 식별하기위해 또는 위치시키기위해 파일 포인터를 사용하는 것을 지원한다. 이후 그 섹터는 갱신된 데이터로 중복기재될 수 있다.
플래시 메모리에 의해 요구되는 비교적 긴 소거 시간때문에, 물리적 섹터 어드레싱 기술이 아닌 논리섹터 어드레싱 기술이 사용된다. 환언하면, 비휘발성 메모리의 물리적 어드레스와 섹터번호사이에 고정된 상응관계를 갖는 대신, 오래된 버전의 섹터 데이터가 이미 존재한다면 섹터용 새로운 데이터는 새로운 물리적 위치에 기록된다. 오래된 버전이 이후에 재요구 프로세스동안 복구될 수 있도록 오래된 버전은 무효로 표시된다. 따라서, 동일 섹터번호가 시간에 대해 상이한 물리적 어드레스에 액세스할 수 있기 때문에 섹터번호는 물리적이 아닌 논리적인 것이다. 논리섹터번호와 관련된 현재의 물리적 위치를 추적하기위해 섹터 맵이 요구된다. 일실시예에서, FTL은 섹터 맵 관리를 행한다. 한 블록은 무효 데이터를 포함하는 섹터 및 유효 데이터를 포함하는 섹터의 혼합을 포함할 수 있다.
따라서 반도체 디스크는 호스트 컴퓨터 시스템에게는 연속적으로 섹터화된 매체로 보일 수 있다. 그러나, 섹터번호가 더이상 영구적으로 물리적 어드레스의 특정 범위와 관련되지 않도록 FTL은 투명하게 섹터를 운영 시스템에 재배치한다. FTL은 섹터 맵을 사용하여 논리 대 물리 관계를 추적한다.
반도체 디스크에 기록하는 한 방법에서, 새로운 데이터는 반도체 디스크내의 빈 공간에 기록된다. 오래된 버전의 데이터가 제위치에서 삭제된다. 반도체 디스크가 삭제된 데이터의 소정의 임계값을 초과하면, 삭제된 데이터와 관련된 기억영역을 늘리기위해 재요구 동작이 상대적으로 우선순위가 높은 프로세스에서 수행되어야한다. 정리 동작을 위해 예약된 블록으로부터 데이터의 유효 섹터를 기억하기위해 재요구 절차동안 예비 블록이 사용된다. 예약된 블록은 삭제된 데이터의 임계레벨을 초과하였다. 예약된 블록내의 유효섹터는 예약된 블록으로부터 예비 블록으로 복사되어 예약된 블록은 메모리를 추가로 늘리기위해 소거될 수 있다.
상기 기술은 반도체 디스크가 삭제된 데이터에 의해 사용된 공간을 재요구함으로써 이용가능한 공간을 증가시킬 때마다 사용될 수 있다. 반도체 디스크가 꽉 차고 삭제된 데이터를 포함하지 않을 때, 파일이 추가되지 않고 수정될지라도 디스크에 새로운 데이터를 기록하기위해 상기 설명된 기술은 사용될 수 없다.
파일을 첨가하지 않고 수정함으로써 이미 존재하는 파일을 갱신하는 적절한 일부 응용이 있다. 예를 들어, 데이터의 윈도우만이 유지될 필요가 있는 응용이 있다. 오래된 데이터는 새로운 데이터로 교체될 수 있기에 원하는 윈도우 데이터를 수용할만큼 파일이 충분히 크다면 파일의 길이는 확장될 필요가 없다. 이러한 경우에, 기억된 파일의 길이는 증가될 필요가 없다. 파일의 일부 또는 파일은 필요한 만큼 중복기재된다. 예를 들어, 버퍼내의 데이터 프레임을 수신하고 기억하는 응용을 고려해본다. 데이터는 버퍼로부터 검색되고 기억된 파일의 일부를 중복기재하는데 사용된다.
도 1은 전자기계식 하드 드라이브에 기억된 파일을 중복기재하는 방법의 흐름도를 도시한다. 이 실시예에서, 중복기재는 파일내의 어떠한 선택된 섹터에서도 시작될 있고 파일 끝에 이를 때까지 계속된다.
단계(110)에서, 중복기재될 제 1 섹터에 대해 파일 포인터가 위치하도록 탐색된다. 이후 섹터는 단계(115)에서 중복기재된다. 단계(120)는 기록할 데이터가 더 있는지를 결정한다. 없다면, 프로세스는 단계(150)에서 종료된다. 그렇지 않다면, 프로세스는 단계(125)로 진행된다.
단계(125)에서, 중복기재될 그 다음 섹터가 위치된다. 이 실시예에서, 파일 끝에 이르면 중복기재 프로세스는 종료된다. 따라서, 단계(130)는 파일 포인터가 파일 끝에 이르렀는지를(예를 들어, 그 다음 섹터가 없다는 파일 끝) 결정한다. 파일 끝에 도달하면, 파일 끝(EOF) 에러가 단계(140)에서 생성되고 프로세스는 단계(150)에서 종료된다.
파일 포인터가 파일 끝에 있지 않다면, 단계(135)에서 파일 포인터를 중복기재될 그 다음 섹터로 위치시키도록 탐색된다. 이후 프로세스는 단계(115)에서 섹터를 계속 중복기재 한다.
도 2는 전자기계식 하드 드라이브에 기억된 파일을 중복기재하는 또다른 방법의 흐름도이다. 이 실시예에서, 중복기재는 파일내의 어떠한 선택된 위치에서도 시작될 수 있고 파일 끝에 도달할 때까지 계속된다. 파일 끝에 도달할 때 에러 메시지를 생성하고 정지하는 대신, 하기 설명과 같이 파일내의 제 1 섹터의 중복기재가 계속된다.
단계(210)에서, 중복기재될 제 1 섹터를 선택하도록 파일 포인터를 위치시키기 위해 탐색된다. 이후 선택된 섹터는 단계(215)에서 중복기재된다. 단계(220)에서, 파일에 기록될 데이터가 더 있는지를 결정하는 시험이 수행된다. 없다면, 프로세스는 단계(250)에서 종료된다. 그렇지 않다면, 프로세스는 단계(225)로 계속된다.
단계(225)에서, 중복기재될 그 다음 섹터가 위치된다. 단계(230)는 파일 포인터가 파일 끝에 도달했는지를 결정한다. 도 1 의 실시예와는 달리, 이 중복기재 프로세스는 일단 파일 끝에 도달하면 종료되지 않는다. 파일 끝이 단계(230)에서 검출되면, 파일내의 제 1 섹터를 찾도록 탐색함으로써 파일 포인터는 재위치된다. 이후 중복기재 프로세스는 단계(215)로 진행됨으로써 파일의 시작으로부터 계속된다.
단계(230)에서, 파일 끝이 도달되지 않았다면, 단계(235)는 파일 포인터를 그 다음 섹터에 재배치시키도록 탐색한다. 이후 그 다음 섹터는 단계(215)에서 중복기재된다.
상기 설명된 바와같이, 몇몇 반도체 디스크는 우선적으로 메모리를 소거하지 않고서는 재프로그래밍될 수 없는 비휘발성 메모리를 사용한다. 이것은, 섹터가 도 1 및 도 2에 도시된 바와같이 단순히 찾아져서 중복기재될 수 없다는 것을 의미한다.
섹터 이용 파일을 비휘발성 메모리내에서 연속적으로 중복기재하기위해, 도 1에서의 위치지정 및 중복기재 단계가 수정된다. 특히, 데이터의 보다 새로운 버전은, 블록 재요구동안 필요할 재작업의 양을 최소화하는 방식으로 기억된다. 가능한한, 재요구 프로세스가 대신 수행된다. 이것은 강제 상대적으로 우선순위가 높은 정리 프로세스의 병목현상을 해소하는데 도움이 된다. 게다가, 공간을 보다 많이 늘리기위해 블록이 재요구되어야할 때 수신되는 데이터를 수용하기에 필요한 오버헤드 양을 최소화하는데 도움이 된다.
도 3은 반도체 디스크에서 파일을 중복기재하는 핵심 단계를 도시한다. 이러한 단계는, 일단 파일 끝이 도 1 및 도 2, 각각에 도시된 것처럼 도달되면, 중복기재 프로세스가 중복기재될 파일의 시작으로 복귀하는 응용뿐만 아니라, 파일 끝에서 중복기재 프로세스가 종료되는 응용에 적용될 수 있다.
프로시저는 단계(310)에서 시작된다. 단계(320)에서, 데이터의 프레임이 수신된다. 단계(330)에서, 프레임 데이터가 기록될 섹터가 결정된다. 프레임 데이터는 물리적 섹터에 있어야 하는 현재 버전의 데이터를 나타낸다. 특정 물리적 어드레스에 항상 상응하는 물리적 섹터번호를 사용하는 대신, 이 방법은 논리섹터번호를 사용한다. 프레임 데이터가 기록될 논리섹터번호는 제 1 블록 내부로의 제 1 오프셋에 위치한 제 1 물리적 섹터에 상응한다. 제 1 블록은 관련된 제 1 논리블록번호를 또한 갖는다. 따라서 단계(330)에서, 프레임 데이터가 기록될 논리섹터번호가 결정된다.
상기 설명된 바와같이, 비휘발성 메모리 섹터는 우선 소거하지 않고서는 프로그래밍될 수 없다. 따라서, 프레임 데이터는 제 1 블록과 관련된 예비 블록에 기록된다. 따라서 단계(340)에서, 프레임 데이터는 예비 블록의 제 2 오프셋에 위치한 제 2 섹터에 기록된다. 제 1 오프셋과 일치하도록 제 2 오프셋이 선택된다. 따라서, 교체될 데이터 및 프레임 데이터가 각각 제 1 블록 및 예비 블록내의 정확히동일한 위치에 위치하도록 프레임 데이터는 예비 블록에 기록된다.
도 3에 도시된 예는 오직 한개의 섹터가 갱신된다고 가정한다. 프레임 데이터가 기록된 후, 예비 블록의 논리블록번호는 단계(350)에서 제 1 논리블록번호와 동일하도록 갱신된다. 에러가 동일한 논리블록번호로 2개 블록을 갖지 않도록 제 1 블록은 무효로 표시된다. 이것은, 예를 들어, 예비 블록의 블록상태영역에 대한 값을 프로그래밍함으로써 이루어질 수 있다. 예비 블록은 제 1 블록의 식별을 갖는다. 논리섹터는, 물리적 섹터의 더 오래된 버전이 제 1 블록에 위치했던 동일한 위치에서 예비 블록에 위치한 물리적 섹터에 상응하기 때문에, 섹터 맵의 갱신이 불필요하다.
도 3에 도시된 방법의 응용을 도시하기위해 도 4가 제공된다. 특히, 블록(410)(즉, 논리블록번호(4))은 현재 버전의 논리섹터번호(63)를 유지한다. 예비 블록(450)은 블록(410)과 관련된 예비 블록이다. 순환 프레임 버퍼(470)는 반도체 디스크에 기억될 필요가 있는 일련의 프레임 데이터를 포함한다.
도 3의 단계(330)에 따라, 프레임 데이터가 기록될 논리섹터번호가 결정된다. 전형적으로 디스크 운영 시스템은 데이터가 기록될 섹터번호를 제공한다. 예를 들어, 프레임(472)은 논리섹터번호(63)에 기록된다. 논리섹터번호(63)에 상응하는 물리적 섹터는 소거될 때까지 재프로그래밍될 수 없다.
논리섹터번호(63)와 현재 관련된 물리적 섹터는 블록(410)내의 물리적 섹터(412)이다. 물리적 섹터(412)는 블록(410)내의 오프셋(430)에 위치된다. 도 3의 방법에 따라, 프레임(472)은 예비 블록(450)의 물리적 섹터(452)에 기록된다. 물리적 섹터(412)가 블록(410)내에 위치되는 바와 같이 물리적 섹터(452)는 예비 블록(450)내의 동일한 오프셋(430)에 위치된다. 논리섹터(63)는 이제 물리적 섹터(452)에 상응한다.
논리블록번호를 사용하는 것과 논리섹터가 예비 블록내의 동일한 오프셋으로 재배치되는 사실로 인해 소거가 지연될 때마다 섹터를 갱신할 필요가 없다.
보다 새로운 버전의 논리블록번호(4)를 위한 데이터는 예비 블록(450)에 기억되고, 보다 오래된 버전의 데이터를 포함하는 섹터는 블록(410)을 소거하지 않고서는 재사용될 수 없다. 이 예에서, 블록(410)의 섹터(8, 5, 63)는 데이터로 갱신되었다. 섹터(332, 135, 5, 684, 561)는 예비 블록에 있는 갱신된 데이터에 의해 교체되지 않은 유효 섹터를 나타낼 수 있다. 섹터(8, 5, 63)에 의해 더이상 필요하지 않은 공간이 수신되는 데이터를 기억하기위해 증가될 수 있도록 블록(410)의 유효 섹터를 재요구하기위해 재요구 프로세스가 사용된다. 이 프로세스는 정리 프로세스라 칭한다. 섹터(8, 5, 63)가 갱신된 후, 블록(410)은 정리를 위해 준비된다.
반도체 디스크의 일실시예에서, 메모리의 각 블록은 한개 이상의 데이터 섹터를 포함한다. 시간에 대해, 한 블록은 결국 보다 오래된 버전의 데이터를 포함하는 섹터의 임계레벨에 이를 수 있다. 보다 오래된 버전의 데이터를 유지하는 공간을 재요구하기위해, 전체 블록은 소거되어야 한다. 블록이 한개 데이터 섹터 이상을 기억하면, 상기 블록에 있는 다른 어떠한 유효 섹터도 소거되기전에 다른 블록으로 복사되어야 한다.
이것은, 소거될 예정인 블록(소스 블록)으로부터 데이터의 유효 섹터를 복사하고 복사된 정보를 다른 블록(타겟 블록 또는 예비 블록)에 기록함으로써 이루어진다. 복사된 데이터는 다른 블록에 기억될 지라도 동일한 논리섹터번호를 사용한다. 소거 프로세스를 인터럽트하는 동작이 보다 오래된 버전의 섹터에 기록하는 것을 방지하기위해 소스 블록 또는 소스 블록내의 섹터는 무효로 표시된다. 이후 소스 블록은 소거된다.
주어진 섹터번호에 대해 영구적으로 할당된 물리적 메모리는 없기 때문에, 정리 프로세스는, 지연될 수 있고 우선될 수 있으며, 이에따라 반도체 디스크 성능이 컴퓨터 시스템으로부터 판독 및 기록 명령에 따라 역 영향을 받지 않을 때에만 수행된다. 이 경우에, 정리 프로세스는 상대적으로 우선순위가 낮은 프로세스서 수행된다.
전형적으로, 기록 동작을 위한 보다 빠른 응답을 얻기위해 소거가 지연될 수 있도록 기록 동작은 소거 동작보다 높은 우선순위를 가질 것이다. 따라서 정리 프로세스가 현재 실행되고 있더라도, 보류중인 기록 동작으로 인해 정리 프로세스는 인터럽트되고 이에따라 기록 동작을 중지하는 것이 수행될 것이다. 기록 동작이 수행된 후, 상대적으로 우선순위가 낮은 프로세스에서 계속될 수 있다.
그러나, 디스크가 이용가능한 공간을 충분히 갖지 못하면, 추가 데이터가 디스크에 기록되기전에 상대적으로 우선순위가 높은 정리 프로세스는 수행되어야할 것이다. 기록 동작을 위해 이용가능한 메모리가 없기때문에 기록은 소거에 대하여 우선순위로 될 수 없다.
상대적으로 우선순위가 높은 정리 프로세스가 실행중이라면, 수신되는 데이터는 임시적으로 다른 위치에 기억되어야한다. 요구되는 임시 데이터 공간의 양은 상대적으로 우선순위가 높은 정리 프로세스를 수행하는데 필요한 시간과 수신되는 데이터 속도를 포함하는 다수의 인자와 관련있다. 임시 데이터는 메모리의 오버헤드 영역에 기억된다.
무효 데이터를 포함하는 섹터에 의해 사용되는 공간을 복구하기위해, 유효 섹터는 정리를 위해 예약된 블록(소스 블록)으로부터 예비 블록으로 복사된다. 이후 소스 블록은, 소스 블록내의 무효 데이터를 포함하는 섹터에 의해 사용된 공간의 전체 복구를 위해 소거될 수 있다.
도 5는 단계(510)으로 시작되는 관련된 예비 블록을 사용하여 한 블록(즉, 제 1 블록)을 정리하는 단계를 도시한다. 제 1 블록은 제 1 논리블록번호를 갖는다.
단계(520)에서, 제 1 블록에 있는 유효 섹터의 위치가 결정된다. 단계(525)에서, 유효 섹터는 제 1 블록으로부터 예비 블록으로 복사된다. 제 1 블록내에서 위치하였던과 것과 같이 예비 블록의 동일한 위치(즉, 동일한 오프셋)에 있을 수 있도록 유효 섹터가 복사된다.
단계(530)에서, 제 1 블록의 유효 섹터를 복사하는 것은 무효로 표시된다. 일실시예에서, 이것은, 섹터의 헤더 또는 푸터 영역에 있는 상태 비트를 수정함으로써 이루어진다. 대체 실시예에서, 예비 블록이 예비 블록내에 기억된 논리섹터의 가장 최근 버전인 것을 나타내기위해 예비 블록 또는 제 1 블록을 위한 블록상태영역이 수정된다.
단계(540)에서, 또다른 유효 섹터가 제 1 블록내에 있는지 여부를 결정한다. 더이상 유효 섹터가 제 1 블록내에 없을때까지 단계(525, 530, 540)는 실행될 것이다.
또다른 유효 섹터가 단계(540)에서 제 1 블록내에 있다면, 단계(545)는 보다 높은 우선순위 기능이 응답되어야 하는지를 결정한다. 단계(545)는 수신되는 데이터의 새로운 프레임을 기억하는 것과 같이 보다 높은 우선순위 기능을 다루기위해 상대적으로 우선순위가 낮은 재요구 프로세스가 인터럽트될 수 있도록 인터럽트 윈도우로서 효과적으로 작용한다.
보다 높은 우선순위 기능이 응답되어야 한다면, 프로세스는 상대적으로 우선순위가 낮은 프로세스가 지연될 수 있도록 단계(580)으로 진행된다. 그렇지 않다면, 단계(545)는 정리를 위해 표시된 블록을 재요구하는 프로세스를 계속하기위해 단계(525)로 진행된다.
단계(540)로부터, 더이상의 유효 섹터가 제 1 블록내에 있지 않다면, 예비 블록은 단계(550)에서 제 1 블록의 논리블록번호가 할당된다. 이후, 제 블록은 단계(560)에서 소거된다. 이후 제 1 블록의 재요구 프로세스는 단계(570)에서 완료된다. 재요구 프로세스는 단계(580)에 존재한다. 몇개의 다른 블록의 재요구동안 이전의 제 1 블록이 예비 블록으로서 이제 이용가능하다.
도 6은 블록(610)을 제 1 블록으로 블록(650)을 예비 블록으로 사용하여 도 5 방법의 응용을 도시한다. 논리섹터(8, 5, 63)는 중복기재 프로세스를 통해 이미 갱신되었으며 예비 블록(650)내의 물리적 섹터(652, 655, 654)와 각각 관련된다. 따라서 제 1 블록(610)내의 논리섹터번호(8, 5, 63)는 더이상 유효 또는 현재로 고려되지 않는다. 그러나, 블록(610)의 남아있는 유효 섹터는 예비 블록(650)으로 복사되어야한다. 따라서, 예를 들어, 논리섹터(332, 135, 684, 561)는 예비 블록(650)으로 복사된다.
복사될 때, 논리섹터(332, 135, 684, 561)는 제 1 블록내에 위치하였던 것과 동일한 오프셋에서 예비 블록으로 복사된다. 예를 들어, 무효 논리 섹터(63)는 블록(610)내의 오프셋(620)에 위치된다. 유효 논리섹터(63)는 예비 블록(650)내의 오프셋(660)에 위치한다. 논리섹터(63)와 관련된 물리적 섹터의 상대 오프셋이 일정하도록 오프셋(620 및 660)은 동일하다. 논리섹터(332, 135, 684, 561)는 블록(610)내에 이미 위치해 있는 것과 같이 예비 블록(650)내의 동일한 오프셋에 위치되는 방식으로 복사된다.
논리섹터(332, 135, 684, 561)는 블록(610)의 물리적 섹터(611, 613, 616, 617)에 각각 상응한다. 따라서 논리섹터(332, 135, 684, 561)는 예비 블록내의 물리적 섹터(651, 653, 656, 657)로 각각 복사된다. 이에따라 재요구가 완료된후 어떠한 섹터 맵도 갱신될 필요가 없다.
재요구 프로세스는 재요구되는 모든 각각의 블록에 대해 적어도 2개의 블록을 사용한다. 사용되는 제 1 블록은 정리되거나 재요구되며 제 2 블록은 정리되는 블록과 관련된 예비 블록이다. 그러나, 수신되는 데이터 프레임은 동일한 블록내에 위치한 논리섹터와 전혀 관련없을 수 있다. 이 경우, 수신되는 데이터 프레임을 또다른 블록내에 기억하기위해 '블록 점프'가 수행되어야 한다.
블록 점프가 요구될 때마다, 수신되는 데이터를 기억하기위해 즉시 이용가능한 적어도 2개이하의 블록이 있을 수 있다. 더이상 이용가능한 예비 블록이 없다면, 프레임 데이터는, 이전 블록의 재요구가 완료되는 동안 수신되는 데이터의 손실을 피하기위해 오버헤드 영역으로 기록되어야 한다.
도 7은 오버헤드 영역의 사용을 포함하여 비휘발성 메모리내에 섹터 이용 파일구조로서 기억된 파일의 연속 중복기재를 초기화 및 수행하는 통합된 프로세스를 도시한다. 상기 프로세는 특히 꽉 차있거나 또는 거의 차있는 비휘발성 메모리에 기억된 파일을 중복기재하는데 적절하다.
프로세스는 중복기재될 파일과 관련된 식별된 섹터를 탐색함으로써 단계(710)에서 시작된다. 식별된 섹터 및 식별된 섹터가 위치한 블록은 각각 '현재 섹터' 및 '현재 블록'으로 된다. 따라서 파일 중복기재는 단계(715)에서 현재 블록의 현재 섹터에서 시작된다.
단계(720)에서, 주목되어야 할 수신된 데이터 프레임을 결정하는 시험이 행해진다. 그렇지 않다면, 하기 설명되는 바와같이 오버헤드 영역의 재요구 우선순위를 매기기위하여, 정리를 위해 표시된 블록을 재요구하기위해, 또는 섹터를 재배치하기위해 프로세스는 상대적으로 우선순위가 낮은 프로세스(765)로 진행된다.
프레임 데이터가 주목되어야 한다면, 프레임 데이터가 기록되어야하는 논리섹터를 결정하기위해 프로세스는 단계(725)로 계속 진행된다. 단계(730)는 블록 점프가 필요한지를 결정한다.
논리섹터가 현재 블록내에 있다면, 블록 점프는 필요하지 않다. 따라서 프로세스는 단계(735)로 계속 진행된다. 단계(735)에서, 가능하다면, 현재 블록을 위한 예비 블록이 위치된다. 이때 현재 블록과 관련된 예비 블록이 없다면, 프레임 데이터는 단계(760)에서 오버헤드 영역의 논리섹터에 기록된다. 그렇지 않다면 상기 프레임 데이터는 단계(740)에서 예비 블록의 논리섹터에 기록된다. 프레임 데이터가 예비 블록의 섹터에 기록될 때, 상기 프레임 데이터는, 교체하는 데이터가 현재 블록내에 위치하기 때문에 예비 블록내의 동일한 오프셋에 기록된다.
일실시예에서, 데이터 프레임은 한 섹터의 크기보다 작다. 중복기재가 파일내에서 특정한 시작 어드레스 또는 시작 위치에서 시작되면, 이후의 데이터 프레임은 파일내에서 이후의 위치를 교체한다. 따라서 이후의 데이터 프레임은, 현재의 섹터가 파일의 그 다음 섹터로 이동하기전에 데이터 프레임으로 채워질 때까지 서로 추적된다. 본질적으로, 예비 블록내의 섹터가 채워질 때까지, 이후의 각 데이터 프레임은 교체되는 섹터내의 프레임 오프셋에 기록된다.
일실시예에서, 중복기재 방법은 섹터내의 어떠한 시점에서도 시작될 수 있다. 따라서 중복기재 방법은 섹터 경계에서 시작되지 않을 수 있다. 초기 데이터 프레임이 기록될 시작 어드레스가 섹터 경계와 상응하지 않는다면, 중복기재되어야하는 초기 섹터의 섹터 경계까지 시작 어드레스로부터 선행하는/앞서는 데이터는 예비 블록에 복사되어야 한다. 따라서 중복기재되는 초기 섹터를 위해, 시작 어드레스가 중복기재되는 섹터 경계와 정렬되지 않는다면, 섹터의 섹터 경계가 중복기재될 때까지 프레임의 시작 어드레스를 선행하는 데이터는 예비 블록내의 동일하게 상응하는 위치에 복사된다.
프레임 데이터가 예비 블록에 기록되거나(단계(740)) 또는 오버헤드 영역(단계(760))에 기록될 때, 섹터의 오래된 버전은 무효로 된다. 일실시예에서, 이것은, 섹터의 푸터 영역 또는 헤더 영역에 있는 상태비트를 수정함으로써 이루어진다. 대체 실시예에서, 예비 블록이 예비 블록내에 기억된 논리섹터의 가장 최근 버전을 나타내기위해 예비 블록 또는 제1 블록을 위한 블록상태영역은 수정된다.
어떠한 방법이든지 섹터의 가장 최근 버전은 동일한 논리섹터번호를 갖는 보다 오래된 버전과 구별될 수 있어야 한다. 보다 오래된 섹터번호는 무효로 된다. '현재' 섹터는 가장 최근 버전을 더이상 나타내지 않기 때문에 단계(745)에서 현재 블록의 현재 섹터는 무효로 된다. 단계(745)로부터 프로세스는 추가로 수신되는 데이터를 처리하기위해 단계(720)로 복귀한다.
단계(730)에서, 단계(720)에서 결정된 논리섹터번호가 현재 블록내에 위치하지 않는다면, 블록 점프가 필요하다. 단계(750)로 진행되어, 현재 블록은 정리를 위해 표시된다. 단계(755)에서, 논리섹터가 기억되어 있는 블록(즉, 점프될 블록)은 현재 블록으로 지정된다. 이후 새로운 '현재 블록'을 위해 이용가능한 공간이 있는지를 결정하기위해 단계(735)로 진행된다.
데이터 손실이 없도록 하기 위해 수신되는 데이터 프레임을 다루는 것이 높은 우선순위이지만, 오버헤드 데이터 및 블록 재요구는 어떤 점에서는 주의해야한다. 정리(770)를 위해 오버헤드 영역의 우선순위를 매기는 것, 정리(780)를 위해 표시된 블록의 재요구, 및 오버헤드 영역(790)으로부터 섹터를 재배치하는 프로세스 전부는 수신되는 데이터를 다루는 보다 높은 우선순위 기능에 유의하기위해 인터럽트될 수 있는 상대적으로 우선순위가 낮은 프로세스이다(즉, 단계(720)).
즉시 유의해야할 데이터 프레임이 없다면, 필요하다면 단계(770)에서, 오버헤드 영역의 재요구를 우선순위로 되게함으로써 상대적으로 우선순위가 낮은 프로세스(765)는 시작된다.
일실시예에서, 오버헤드 영역이 소정의 남아있는 이용가능한 섹터의 임계번호에 도달하면, 오버헤드 영역이 있는 블록은 정리를 될 것으로 예정된다. 소정의 임계값은, 특정 실현의 소거 시간이 주어진 상태에서, 오버헤드 영역이 정리되기전에 오버헤드가 부족하지 않게 수신되는 데이터를 수용하기에 충분한 오버헤드가 있도록 높게 선택되어야 한다.
오버헤드 영역은 손실되는 데이터가 없도록 용이하게 이용가능해야한다. 따라서 오버헤드 영역이 사용되는 섹터의 소정의 임계값에 도달하면, 오버헤드 영역이 있는 블록은 정리를 위해 예약된다. 다른 어떠한 블록이 정리를 위해 예약되어 있는지 여부에 상관없이, 오버헤드 영역이 있는 블록의 재요구에는 단계(770)에서 보다 높은 우선순위를 갖게된다. 이것은, 오버헤드 영역의 이용가능이 확실하도록, 필요하다면 다른 어떠한 블록의 재요구를 지연시킨다.
단계(780)에서, 정리를 위해 표시된 어떠한 블록을 재요구하는 프로세스가 수행된다. 다른 어떠한 블록의 재요구에 대하여 우선순위를 갖는 것이 아니라, 오버헤드 영역과 관련된 블록은 다른 블록처럼 재요구된다. 재요구가 완료되지 않았음을 단계(785)가 결정한다면, 보다 높은 우선순위 기능에 유의하기위해 상대적으로 우선순위가 낮은 프로세스(765)는 일시 중지된다. 재요구가 필요하지 않았거나 성공적으로 완료되지 않았다면, 프로세스는 단계(790)로 계속 진행된다.
오버헤드 영역은 섹터를 일시적으로 기억하는데 사용된다. 그렇지 않다면, 섹터의 새로운 기억 위치를 반영하기위해 섹터 맵은 갱신될 필요가 있다. 섹터 맵을 갱신하는 단계를 피하기위해, 오버헤드 영역에 있는 논리섹터는 적절한 물리적 섹터와 블록으로 재배치될 필요가 있다. 따라서, 단계(790)는 필요하다면 오버헤드영역에 현재 기억되어 있는 섹터의 재요구를 수행한다.
오버헤드 영역에 현재 기억되어 있는 섹터의 재배치 프로세스는 단계(810)로 시작되는 도 8에 또한 도시된다. 단계(820)에서, 유효 섹터는 오버헤드 영역내에 위치한다. 동일한 섹터의 무효 버전을 갖는 블록은 단계(825)에 위치된다(무효 버전은 제 1 블록내의 제 1 오프셋에 위치된다).
제 1 블록과 관련된 예비 블록은 단계(830)에 위치된다. 오버헤드 영역으로부터의 유효 섹터는 단계(835)에서 예비 블록으로 복사된다. 유효 섹터는 제 1 블록내의 무효 버전 섹터의 오프셋과 동일한 예비 블록내의 오프셋으로 복사된다. 단계(840)에서, 무효 섹터는 오버헤드 영역내에서 무효로 표시된다. 단계(845)에서, 다른 어떠한 유효 섹터가 오버헤드 영역에 있는지를 결정하는 시험이 행해진다.
또다른 유효 섹터가 오버헤드 영역에 위치하면, 프로세스는 단계(850)으로 계속 진행된다. 단계(850)는 수신되는 데이터 프레임을 다루는 것과 같은 보다 높은 우선수위 기능에 응답하기위해 상대적으로 우선순위가 낮은 프로세스가 정지될 수 있는 인터럽트 윈도우로서 작용한다. 보다 높은 우선순위 기능이 유의될 필요가 있다면, 상대적으로 우선순위가 낮은 프로세스는 단계(850)로부터 단계(870)로 복귀한다. 그렇지않다면, 보다 높은 우선순위 기능은 상대적으로 우선순위가 낮은 프로세스를 인터럽트하지 않고, 단계(850)로부터 단계(825)로 재배치는 계속된다.
단계(845)에서 어떠한 다른 유효 섹터도 오버헤드 영역내에 있지 않다면, 오버헤드 영역내의 논리섹터의 재배치는 단계(860)에서와 같이 완료된다. 이후 상대적으로 우선순위가 낮은 프로세스는 단계(870)로 진행함으로써 종료된다.
동일한 파일과 관련된 섹터의 연속적인 기억 영역이 반도체 디스크내에서 필요하지는 않지만, 상기 설명된 방법은 중복기재될 파일과 관련된 소정수의 섹터가 동일 블록내에 위치되어야 하는 것을 필요로 한다. 상기 블록에 이러한 연관된 섹터의 순서 또는 인접은 무관하다. 중복기재될 그다음 섹터가 현재 블록내에 위치될 때마다, 도 7에서 상기 설명된 바와같이 블록 점프가 필요하다.
블록 점프의 빈도가 어떤 임계값보다 작을 동안, 상기 설명된 본 방법은 파일의 연속 중복기재를 수용할 수 있을 것이다. 블럭 점프의 빈도는 파일의 프래그먼트화 레벨에 의해 결정된다. 임계값은 수신되는 데이터 속도 및 재요구 프로세스의 속도에 의해 부분적으로 결정된다.
데이터는 유효 속도(ri)로서 연속적으로 수신되며 ri는 초당 섹터수이다. 최악의 경우의 재요구 시간 주기동안 수신되는 데이터를 수용하기위해 충분한 오버헤드가 있어야한다. 최악의 경우 재요구 시간 주기(treclaim)는, 차후의 재요구 동작을 위해 새로운 예비 블록을 제공하기위해 데이터의 전체 소스 블록이 예비 블록으로 복사되어야 하고 소스 블록이 소거되어야 한다는 것을 가정한다. 따라서, 전체 소스 블록을 복사하는 시간(tcopy)에, 한 블록을 소거하기에 필요한 시간(terase)을 더한 시간은 treclaim=tcopy+terase와 같이 최악의 경우 재요구 주기와 동일하다. 따라서, 적어도 ri× treclaim데이터 섹터를 수용하기위해 충분한 오버헤드 기억영역이 있어야 한다.
별도로, treclaim은 방해되지 않는 최악의 경우 상대적으로 우선순위가 높은 재요구 시간이다. 재요구 프로세스가 상대적으로 우선순위가 낮은 프로세스로 진행된다면, treclaim은 상대적으로 우선순위가 낮은 재요구 기능을 처리하는데 할당된 시간에 의해 영향을 받는다. 재요구 프로세스는 수신되는 데이터의 새로운 프레임에 유의하도록 인터럽트되기 때문에, treclaim은 또한 수신되는 데이터 속도에 부분적으로 의존한다. 따라서 treclaim은 반도체 디스크가 실질적으로 데이터로 채워져 있고 데이터가 ri의 속도로 수신될 때 최악의 경우 재요구 시간을 반영한다.
일실시예에서, 오버헤드 영역은 적어도 ri× treclaim데이터 섹터를 수용할 수 있을만큼 충분히 크다. 그러나, 오버헤드 영역이 최소로 필요한 오버헤드 공간만을 갖는다면, 추가로 수신되는 데이터를 위한 오버헤드 영역을 늘리기위해 연속적인 재요구가 필요할 것이다. 오버헤드 영역의 연속적인 재요구는 유해하게 반도체 디스크의 처리량 성능에 영향을 끼치는 경향이 있다. 게다가, 연속적인 재요구는 보다 많은 파워를 소모하는 경향이 있다. 따라서 반도체 디스크 성능을 향상시키기위해 그리고 파워 소모를 줄이기위해, 일실시예에서 최소 갯수로 된 섹터들 중 몇개, 즉, m개 섹터를 수용하도록(즉, 오버헤드 영역은 m × ri× treclaim섹터를 수용하며, m은 1보다 크다) 오버헤드 영역이 선택된다. 일실시예에서, 오버헤드 영역이 최소 4 × ri× treclaim섹터를 수용하도록 적어도 m은 4로 선택된다.
연속 중복기재를 얻기위해, 파일을 중복기재할 때 필요한 다수의 블록 점프는 점프 비율이하로 유지되어야 한다. 이 점프 비율은 동일한 블록내에 위치된 연속적으로 체인 연결된 파일 섹터 개수의 역과 관련있다. 점프 비율을 감소시키는 것을 동일한 블록내에 위치된 연속적으로 체인 연결된 파일 섹터의 개수를 증가시킴으로써 달성될 수 있다. 파일 프래그먼트화 레벨은 동일 블록내에 위치한 연속적으로 체인 연결된 파일 섹터의 수 측정으로서 작용한다. 따라서 보다 낮은 파일 프래그먼트 레벨은 점프 비율을 낮추는데 도움이 된다. 주어진 수신되는 데이터속도를 위해 이용가능한 오버헤드 영역 또는 재요구를 위한 예비 블록이 항상 존재하도록 연속적으로 체인 연결된 섹터의 어떤 임계 수의 섹터는 동일 블록내에 위치해야 한다.
따라서, 파일 프래그먼트화 레벨이 충분히 낮도록하기 위해, 연속적인 중복기재 프로세스가 적절히 기능하기 전에 파일은 디프래그먼화될 필요가 있다. 중복기재되는 파일의 프래그먼트화 만이 적절하다. 일실시예에서, 중복기재된 파일의 일부를 기억하는데 사용되는 최종 블록을 제외한 각 블록은 인접하여 연결된 섹터의 최소 수(n)를 가져야 한다. 일실시예에서, 중복기재는 파일 끝에 이르면 종료된다. 따라서, 파일 끝을 기억하는 블록은 인접하여 연결된 섹터의 최소 수(n)를 가질 필요가 없다.
또다른 일실시예에서, 파일 끝에 이르면, 파일과 관련된 제 1 섹터를 중복기재하는 중복기재 프로세스가 계속된다. 이 실시예에서, 중복기재 프로세스를 위한 어떠한 '최종 블록'도 없다. 따라서 파일의 일부가 기억되는 모든 블록은 인접하여 연결된 섹터의 최소 수(n)를 가져야한다.
일실시예에서, 임계값 수(n)는 최악의 경우 정리 시간 주기에 수신될 수 있는 데이터 섹터의 최대 수 이상이다. 환언하면, n≥ri× treclaim이다. 데이터 속도(ri)는 데이터 속도(초당 바이트) / 섹터당 바이트수와 같이 결정될 수 있다. 예를 들어, 512바이트 섹터가 사용된다면 초당 1Kb의 데이터 속도는 초당 2섹터와 등가이다.
연속 중복기재를 수행하는 방법이 오디오 데이터를 기억하기위해 사용되는 예를 고려해본다. 오디오 데이터는 순환 버퍼내에 기억되는 84바이트 프레임으로서 수신된다. 오디오 프레임은 40ms마다 수신된다. 따라서, 수신되는 데이터 속도는 0.4초당 84바이트, 즉, 대략 초당 2kB이다. 반도체 디스크가 512바이트 섹터를 위해 구성된다고 가정하면, ri 초당 2000바이트 /섹터당 512바이트, 즉, 초당4섹터이다. 최악의 경우 재요구 시간(treclaim=5.66초)에 대하여, 최악의 경우 재요구 시간 주기동안 약 23개의 데이터 섹터가 수신될 것이다(즉, ri× treclaim 초당 4섹터 × 5.66초23섹터).
이 예에서, n≥ri× treclaim에 대하여, 최소 23개의 인접하여 연결된 섹터는 (하기 설명되는 최종 블록을 제외하고) 파일의 일부가 기억되어 있는 각 블록에 기억되어야 한다. 따라서 필요하다면 파일은 23개 이상의 인접하여 연결된 섹터가 파일의 일부가 기억되어 있는 각 블록에 위치하도록 디프래그먼트화되어야 한다.
상기 상세한 설명에서, 본 발명은 특정 실시예를 참조하여 설명되었다. 청구범위에 설정된 본 발명의 사상과 범위로부터 벗어나지 않고 다양한 수정 및 변경이 있을 수 있다. 따라서, 명세서 및 도면은 제한된 것이 아니라 예를 든 것이다.

Claims (17)

  1. 각각의 블록마다 복수의 섹터가 할당되고, 각각의 블록이 개별적으로 소거가능한 복수의 블록을 갖는 비휘발성 메모리에 기억된 파일을 중복기재하는 방법에 있어서,
    a. 데이터 프레임을 수신하는 단계;
    b. 프레임이 기록될 논리섹터를 결정하는 단계; 및
    c. 프레임을 제 2 섹터에 기록하는 단계를 포함하고,
    논리섹터는 제 1 논리블록번호를 갖는 제 1 블록의 제 1 오프셋에 위치한 제 1 섹터에 상응하며, 파일의 일부는 제 1 섹터에 기억되고, 제 2 섹터는 예비 블록의 제 2 오프셋에 위치하며, 제 1 오프셋과 제 2 오프셋은 일치하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    d. 예비 블록의 논리블록번호를 제 1 논리블록번호로 갱신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서, a 단계는:
    i. 데이터 프레임을 순환 버퍼에 기억하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서, c 단계는:
    i. 제 1 섹터가 중복기재되는 초기 섹터이라면 그리고 시작 어드레스가 섹터 경계와 정렬되지 않는다면, 제 1 블록의 제 1 섹터로부터 예비 블록내에 동일하게 상응하는 위치로 프레임의 시작 어드레스에 선행하는 데이터를 복사하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서,
    d. 제 1 블록에 위치한 제 1 섹터를 무효로 표시하는 단계; 및
    e. 제 1 블록을 재요구하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서, e 단계는:
    i. 제 1 블록에 기억된 각 유효 섹터를 예비 블록내의 동일하게 상응하는 오프셋으로 복사하는 단계; 및
    ii. 제 1 블록을 소거하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서, c 단계는:
    i. 프레임이 기록될 논리 섹터내에서 프레임 오프셋을 결정하는 단계; 및
    ii. 프레임을 제 2 섹터내의 프레임 오프셋에 기록하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서, 데이터는 오디오 데이터인 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서, 비휘발성 메모리는 플래시 메모리를 포함하는 것을 특징으로 하는 방법.
  10. 각각의 블록마다 복수의 데이터 섹터가 할당되고, 각각의 블록이 개별적으로 소거 가능한 복수의 블록을 포함하는 비휘발성 메모리에 기억된 파일을 중복기재하는 방법에 있어서,
    a. 제 1 프레임을 포함하는 복수의 데이터 프레임을 수신하는 단계;
    b. 적어도 제 1 프레임을 오버헤드 영역에 기억하는 단계;
    c. 제 1 프레임이 기록될 논리섹터를 결정하는 단계;
    d. 오버헤드 영역으로부터 제 2 섹터의 일부로 제 1 프레임을 복사하는 단계; 및
    e. 이후의 프레임이 기록될 논리섹터가 제 1 블록에 위치한 어떠한 섹터와도 상응한다면, 오버헤드 영역에 기억되는 이후의 각 프레임을 위해 단계(b 내지 d)를 반복하는 단계를 포함하고,
    논리섹터는 제 1 논리번호를 갖는 제 1 블록내의 제 1 오프셋에 위치한 제 1 섹터에 상응하며, 파일의 일부는 제 1 섹터에 기억되고, 제 2 섹터는 예비 블록의 제 2 오프셋에 있으며, 제 1 오프셋과 제 2 오프셋은 일치하는 것을 특징으로 하는 방법.
  11. 제 10 항에 있어서,
    f. 예비 블록의 논리블록번호를 제 1 논리블록번호로 갱신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제 10 항에 있어서,
    f. 이후의 프레임이 기록될 논리섹터가 제 1 블록에 위치한 어떠한 섹터와도 상응하지 않는다면 제 1 블록을 재요구하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서, f 단계는:
    i. 제 1 블록에 기억된 각 유효 섹터를 예비 블록내의 동일하게 상응하는 오프셋으로 복사하는 단계; 및
    ii. 제 1 블록을 소거하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 제 10 항에 있어서,
    f. 이후의 프레임이 기록될 논리섹터가 제 1 블록에 위치한 어떠한 섹터와도 상응하지 않는다면,
    i. 제 3 블록의 제 3 오프셋에 위치한 무효섹터에 상응하며, 이후의 프레임이 기록될 논리섹터의 일부를 결정하는 단계; 및
    ii. 오버헤드 영역으로부터 제 3 오프셋에 있는 예비 영역으로 적어도한개의 데이터 프레임을 복사하는 단계를 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제 10 항에 있어서, c 단계는:
    i. 프레임이 기록될 논리섹터내에서 프레임 오프셋을 결정하는 단계; 및
    ii. 프레임을 제 2 섹터내의 프레임 오프셋에 기록하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  16. 제 10 항에 있어서, 데이터는 오디오 데이터인 것을 특징으로 하는 방법.
  17. 제 10 항에 있어서, 비휘발성 메모리는 플래시 메모리를 포함하는 것을 특징으로 하는 방법.
KR1019997002752A 1996-09-30 1997-09-23 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법 KR100324028B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/722,979 1996-09-30
US08/722,979 US5860124A (en) 1996-09-30 1996-09-30 Method for performing a continuous over-write of a file in nonvolatile memory
US8/722,979 1996-09-30

Publications (2)

Publication Number Publication Date
KR20000048766A KR20000048766A (ko) 2000-07-25
KR100324028B1 true KR100324028B1 (ko) 2002-02-19

Family

ID=24904286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997002752A KR100324028B1 (ko) 1996-09-30 1997-09-23 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법

Country Status (8)

Country Link
US (1) US5860124A (ko)
KR (1) KR100324028B1 (ko)
CN (1) CN1129848C (ko)
AU (1) AU4803897A (ko)
DE (2) DE19782041T1 (ko)
GB (1) GB2333620B (ko)
TW (1) TW346569B (ko)
WO (1) WO1998014879A1 (ko)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6021413A (en) * 1997-04-01 2000-02-01 The University Of Illinois Board Of Trustees Application-directed variable-granularity caching and consistency management
JP4398589B2 (ja) * 1998-04-01 2010-01-13 ヒューレット・パッカード・カンパニー データ記憶装置およびその方法
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
JP2000227871A (ja) * 1999-02-05 2000-08-15 Seiko Epson Corp 不揮発性記憶装置、その制御方法、および、情報記録媒体
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
GB2349242A (en) * 1999-04-20 2000-10-25 Inventec Corp Flash memory architecture and rewrite method
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
CN1088218C (zh) * 1999-11-14 2002-07-24 邓国顺 用于数据处理系统的快闪电子式外存储方法及其装置
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
KR20020044907A (ko) * 2000-12-07 2002-06-19 윤종용 다중 플래쉬 메모리 시스템에서의 프로그램 운용 방법
US6675317B2 (en) * 2000-12-14 2004-01-06 International Business Machines Corporation Method and system for determining erase procedures run on a hard drive
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6715033B2 (en) 2001-03-06 2004-03-30 Hewlett-Packard Development Company, L.C. Method of and apparatus for tracking appended data on storage medium
US6571326B2 (en) 2001-03-08 2003-05-27 Intel Corporation Space allocation for data in a nonvolatile memory
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
GB0123410D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US20040059604A1 (en) * 2002-07-29 2004-03-25 Zaleski John R. Patient medical parameter acquisition and distribution system
US7024581B1 (en) 2002-10-09 2006-04-04 Xpoint Technologies, Inc. Data processing recovery system and method spanning multiple operating system
US8336044B2 (en) * 2002-10-09 2012-12-18 Rpx Corporation Method and system for deploying a software image
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
US6901498B2 (en) * 2002-12-09 2005-05-31 Sandisk Corporation Zone boundary adjustment for defects in non-volatile memories
US6944063B2 (en) * 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
US7117326B2 (en) * 2003-06-26 2006-10-03 Intel Corporation Tracking modifications to a memory
DE10349595B3 (de) * 2003-10-24 2004-12-09 Hyperstone Ag Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher
JP4731325B2 (ja) * 2003-10-27 2011-07-20 パナソニック株式会社 記録媒体、データ処理装置及びデータ処理方法
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
WO2005066792A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with memory planes alignment
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
EP2506486A1 (en) * 2004-02-23 2012-10-03 Lexar Media, Inc. Secure compact flash
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7594063B1 (en) * 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) * 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
JP4192129B2 (ja) * 2004-09-13 2008-12-03 株式会社東芝 メモリ管理装置
US20060059296A1 (en) * 2004-09-16 2006-03-16 M-Systems Flash Disk Pioneers, Ltd. Emulating small block size of flash memory
US20060107014A1 (en) * 2004-11-17 2006-05-18 Fandrich Mickey L Managing reclamation for removable data devices
JP4738038B2 (ja) * 2005-03-25 2011-08-03 株式会社東芝 メモリカード
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
TWI308722B (en) * 2005-12-09 2009-04-11 Wistron Corp Method for making a bootable usb storage device
US7831783B2 (en) * 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
KR100706808B1 (ko) * 2006-02-03 2007-04-12 삼성전자주식회사 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법
DE102006013758A1 (de) * 2006-03-24 2007-09-27 Robert Bosch Gmbh Verfahren zum Betreiben einer Speichereinrichtung
KR100809319B1 (ko) 2006-09-13 2008-03-05 삼성전자주식회사 플래시 메모리에서 연속한 섹터 쓰기 요청에 대해 원자성을제공하는 장치 및 방법
US8370562B2 (en) * 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
FI120422B (fi) * 2007-07-02 2009-10-15 Tellabs Oy Menetelmä ja laitteita muutoslokin kompressoimiseksi käyttäen flash-transaktioita
CA2708669A1 (en) * 2007-12-13 2009-06-18 Redknee Inc. Method and system for storage
US9053005B2 (en) * 2008-01-02 2015-06-09 Micron Technology, Inc. Recycled version number values in flash memory
KR100957445B1 (ko) 2008-01-14 2010-05-11 한양대학교 산학협력단 효율적인 덮어쓰기를 위한 파일 시스템 및 기억 장치그리고 효율적인 덮어쓰기 방법
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
JP4461187B1 (ja) * 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
CN103155510B (zh) * 2010-11-15 2016-08-24 英派尔科技开发有限公司 自动通知器分配
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9483397B2 (en) * 2013-07-16 2016-11-01 Intel Corporation Erase management in memory systems
US9400745B2 (en) * 2013-11-06 2016-07-26 International Business Machines Corporation Physical address management in solid state memory
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US20170123666A1 (en) * 2015-10-30 2017-05-04 Sandisk Technologies Inc. System and method for managing maintenance scheduling in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US20180054374A1 (en) * 2016-08-19 2018-02-22 Andes Technology Corporation Trace information encoding apparatus, encoding method thereof, and readable computer medium
JP6642337B2 (ja) * 2016-08-29 2020-02-05 京セラドキュメントソリューションズ株式会社 情報処理装置及びプログラム
US11422726B1 (en) * 2018-05-01 2022-08-23 Amazon Technologies, Inc. Efficient storage device data move operation based on priority of garbage collection command
KR20210120240A (ko) * 2020-03-26 2021-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5590300A (en) * 1991-03-05 1996-12-31 Zitel Corporation Cache memory utilizing address translation table
US5535369A (en) * 1992-10-30 1996-07-09 Intel Corporation Method for allocating memory in a solid state memory disk
US5581723A (en) * 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
US5473569A (en) * 1994-08-01 1995-12-05 Motorola, Inc. Method for operating a flash memory
ATE149709T1 (de) * 1994-09-30 1997-03-15 Sel Alcatel Ag Verfahren zur speicherverwaltung eines flash- speichers
JPH08137634A (ja) * 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
US5475693A (en) * 1994-12-27 1995-12-12 Intel Corporation Error management processes for flash EEPROM memory arrays
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置

Also Published As

Publication number Publication date
TW346569B (en) 1998-12-01
DE19782041T1 (de) 1999-09-23
AU4803897A (en) 1998-04-24
GB9907377D0 (en) 1999-05-26
CN1129848C (zh) 2003-12-03
GB2333620A (en) 1999-07-28
WO1998014879A1 (en) 1998-04-09
DE19782041B4 (de) 2009-12-03
US5860124A (en) 1999-01-12
GB2333620B (en) 2001-05-09
CN1238846A (zh) 1999-12-15
KR20000048766A (ko) 2000-07-25

Similar Documents

Publication Publication Date Title
KR100324028B1 (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
KR100952135B1 (ko) 순차적 기록만을 사용하는 플래시 관리 시스템
US7734862B2 (en) Block management for mass storage
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6567307B1 (en) Block management for mass storage
KR100882862B1 (ko) 플렉시블 플래시 파일 시스템을 위한 시스템 및 방법
US6571326B2 (en) Space allocation for data in a nonvolatile memory
US8135925B2 (en) Methods of operating a memory system
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US6038636A (en) Method and apparatus for reclaiming and defragmenting a flash memory device
EP1548599B1 (en) Faster write operations to nonvolatile memory by manipulation of frequently accessed sectors
US8756382B1 (en) Method for file based shingled data storage utilizing multiple media types
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US20060020744A1 (en) Method and apparatus for maintaining data on non-volatile memory systems
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2007280428A (ja) メモリ管理
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
WO2005059966A2 (en) Rotational use of memory to minimize write cycles
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법
KR100638638B1 (ko) 플래시 메모리의 제어 방법

Legal Events

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

Payment date: 20120110

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee