KR100874702B1 - 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법 - Google Patents

플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법 Download PDF

Info

Publication number
KR100874702B1
KR100874702B1 KR1020060097023A KR20060097023A KR100874702B1 KR 100874702 B1 KR100874702 B1 KR 100874702B1 KR 1020060097023 A KR1020060097023 A KR 1020060097023A KR 20060097023 A KR20060097023 A KR 20060097023A KR 100874702 B1 KR100874702 B1 KR 100874702B1
Authority
KR
South Korea
Prior art keywords
data
fat
storage area
flash memory
hot
Prior art date
Application number
KR1020060097023A
Other languages
English (en)
Other versions
KR20080030756A (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 삼성전자주식회사
Priority to KR1020060097023A priority Critical patent/KR100874702B1/ko
Priority to US11/605,265 priority patent/US7844772B2/en
Publication of KR20080030756A publication Critical patent/KR20080030756A/ko
Application granted granted Critical
Publication of KR100874702B1 publication Critical patent/KR100874702B1/ko
Priority to US12/926,193 priority patent/US8510500B2/en

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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories

Landscapes

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

Abstract

업데이트 연산이 자주 일어나는 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area)과 업데이트 연산이 거의 일어나지 않은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역(cold data storage area)을 포함하는 플래시 메모리 장치가 연결 가능한 컴퓨팅 시스템(computing system)의 장치 드라이버로서, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버(device driver)는 어플리케이션(application)이 플래시 메모리 장치에 데이터를 쓰는 경우에 데이터의 종류를 기초로 핫 데이터 저장 영역 및 콜드 데이터 저장 영역 중 하나의 영역에 데이터를 쓰는 플래시 메모리 파일 시스템(flash memory file system)을 포함한다. 따라서 장치 드라이버는 핫 데이터와 콜드 데이터를 따로 관리함으로써 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄일 수 있다.
플래시 메모리 장치, 플래시 메모리 파일 시스템, 플래시 번역 레이어, FTL, Flash Translation Layer

Description

플래시 메모리 파일 시스템을 효율적으로 관리하기 위한 장치 드라이버 및 방법{DEVICE DRIVER AND METHOD FOR EFFECTIVELY MANAGING A FLASH MEMORY FILE SYSTEM}
도 1은 플래시 메모리 장치 내에 저장된 데이터 블록의 구조를 설명하기 위한 도면이다.
도 2 내지 도 4는 플래시 메모리 장치 드라이버가 파일 쓰기 연산들을 수행하는 과정을 나타내기 위한 도면들이다.
도 5는 본 발명의 일 실시예에 따른 플래시 메모리 장치를 효율적으로 관리하기 위한 장치 드라이버를 나타내는 블록도이다.
도 6은 플래시 번역 레이어의 구성을 나타내는 블록도이다.
도 7은 플래시 번역 레이어가 파일 쓰기 연산들을 수행하는 과정을 나타내기 위한 도면이다.
도 8은 파일 시스템의 구성을 나타내는 블록도이다.
도 9는 메타 캐시의 동작 방법을 설명하기 위한 도면이다.
도 10 내지 도 13은 FAT 캐시, 버퍼 캐시 및 메타 캐시의 동작을 설명하기 위한 플로우차트들이다.
<도면의 주요 부분에 대한 부호의 설명>
520 : 플래시 메모리 파일 시스템 522 : 파일 시스템
524 : 플래시 번역 레이어 620 : 데이터 종류 결정기
630 : 데이터 매퍼 850 : FAT 캐시
860 : 버퍼 캐시 870 : 메타 캐시
본 발명은 플래시 메모리 파일 시스템에 관한 것으로 특히, 플래시 메모리 파일 시스템을 포함하는 플래시 메모리 장치, 플래시 메모리 장치의 쓰기 연산의 수를 줄일 수 있는 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한 장치 드라이버 및 방법, 및 이를 포함하는 컴퓨팅 시스템에 관한 것이다.
오늘날 반도체 메모리 장치에 대한 기술이 발전함에 따라 종래의 RAM(Random Access Memory) 및 ROM(Read Only Memory)의 장점을 모두 가지는 플래시 메모리 장치(Flash Memory Device)가 출현하게 되었다. 즉, 플래시 메모리 장치는 RAM과 유사하게 데이터를 다시 쓸 수 있고, ROM과 유사하게 한번 쓰여진 데이터는 전원의 공급이 없더라도 계속 저장할 수 있다.
그러나 플래시 메모리 장치는 종래의 하드 디스크나 반도체 메모리 장치와 다른 고유의 동작 특성을 가지고 있다. 플래시 메모리 장치는 이전에 쓰여진 데이터를 직접 갱신(in-place update)할 수 없는 제약을 가지고 있으므로, 이러한 제약을 극복할 수 있는 소프트웨어가 필요하다.
이하, 도 1 내지 도 4를 참조하여 플래시 메모리를 관리하기 위한 방법을 설명하기로 한다.
도 1은 플래시 메모리 장치 내에 저장된 데이터 블록의 구조를 설명하기 위한 도면이다.
플래시 메모리 장치는 복수 개의 데이터 블록들을 포함하고, 데이터 블록(110)은 플래시 메모리 장치의 설정에 따라 복수 개의 페이지들(pages)을 포함한다. 예를 들어, 하나의 블록은 4 개의 페이지를 포함하고, 각 페이지의 크기는 하나의 섹터 크기와 동일한 512 바이트일 수 있다.
플래시 메모리 장치에서, 데이터 읽기 및 쓰기 연산들은 페이지 단위로 수행되고, 지우기 연산은 데이터 블록 단위로 수행된다. 따라서 어플리케이션에서 사용하는 논리적 주소를 이용하여 플래시 메모리 장치에 바로 데이터를 쓰는 것은 심각한 성능 저하를 일으킬 수 있다.
도 2 내지 도 4는 플래시 메모리 장치 드라이버가 파일 쓰기 연산들을 수행하는 과정을 나타내기 위한 도면들이다.
플래시 메모리 장치 드라이버는 어플리케이션으로부터 논리적 주소를 입력받고, 입력받은 논리적 주소를 플래시 메모리 장치에서 사용되는 가상 주소로 매핑한다(단계 S210).
플래시 메모리 장치 드라이버는 매핑된 가상 주소를 이용하여 데이터를 쓴다(단계 S220).
제1 데이터(A) 및 제2 데이터(B)가 쓰여진 후, 제2 데이터(B1)를 변경한 제3 데이터(B2) 및 제4 데이터(C)가 쓰여진다고 가정하면, 도2에 도시된 바와 같이 제1 내지 제4 데이터(A, B1, B2, C)는 데이터 블록(250)의 페이지들에 순차적으로 저장될 수 있다.
플래시 메모리 장치 드라이버는 어플리케이션으로부터 변경된 제3 데이터(B2)를 재변경한 제5 데이터(B3)의 논리적 주소를 입력받고, 입력받은 논리적 주소를 제3 데이터(B2)가 포함된 데이터 블록(350)의 가상 주소로 매핑한다(단계 S310).
플래시 메모리 장치 드라이버는 매핑된 가상 주소에 상응하는 데이터 블록(250)에 빈 페이지(empty page)가 없음을 검출(detect)하고 새로운 데이터 블록(350)을 재할당한다(단계 S320). 플래시 번역 레이어(124)는 재할당된 데이터 블록(350)의 페이지들에 유효한 데이터를 복사한다.
유효한 데이터(valid data)란 가장 최근의 변경되지 않은 데이터들을 의미한다. 예를 들어, 유효한 데이터들이란 제1 데이터(A), 제4데이터(C)를 포함할 수 있다.
플래시 메모리 장치 드라이버는 재할당된 데이터 블록(350)의 빈 페이지에 제5 데이터(B3)를 쓴다(단계 S330).
플래시 메모리 장치 드라이버는 무효인 데이터(invalid data)만을 포함하는 데이터 블록(250)에 대하여 지우기 연산을 수행한다(단계 S410).
도 2 내지 도 4에서 살펴본 바와 같이, 데이터 블록에 포함된 페이지들이 자주 업데이트될 경우 플래시 메모리 장치 드라이버에 의한 복사 시간이 증대되며, 결국 컴퓨팅 시스템의 성능이 저하된다.
특히, 제1 및 제4 데이터(A, C)에 상응하는 페이지들은 데이터가 변경되지 않았음에도 자주 변경되는 데이터(예를 들어, B1)에 상응하는 페이지로 인하여 제1 및 제4 데이터(A, C)에 상응하는 페이지들이 복사되어야 하는 문제점이 발생한다.
본 발명의 목적은 상기 종래 기술의 문제점을 해결하기 위하여 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄일 수 있는 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버(device driver)를 제공하는데 있다.
본 발명의 다른 목적은 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 장치 드라이버를 포함하는 컴퓨팅 시스템을 제공하는 데 있다.
본 발명의 또 다른 목적은 컴퓨팅 시스템의 장치 드라이버에 의한 플래시 메모리 파일 시스템을 포함하는 플래시 메모리 장치를 제공하는 데 있다.
본 발명의 목적은 상기 종래 기술의 문제점을 해결하기 위하여 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄일 수 있는 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 방법을 제공하는데 있다.
상기 목적을 달성하기 위하여 업데이트 연산이 자주 일어나는 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area)과 업데이트 연산이 거의 일어나지 않은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영 역(cold data storage area)을 포함하는 플래시 메모리 장치가 연결 가능한 컴퓨팅 시스템(computing system)의 장치 드라이버로서, 본 발명의 컴퓨팅 시스템의 장치 드라이버(device driver)는 어플리케이션(application)이 상기 플래시 메모리 장치에 데이터를 쓰는 경우에 상기 데이터의 종류를 기초로 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 영역에 데이터를 쓰는 플래시 메모리 파일 시스템(flash memory file system)을 포함한다.
예를 들어, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하고, 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함할 수 있다. 또한, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함하고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함할 수 있다.
상기 플래시 메모리 파일 시스템은 상기 어플리케이션으로부터 상기 데이터의 파일경로 및 파일이름을 포함하는 논리적 주소를 입력받는 파일 시스템 및 상기 어플리케이션이 상기 논리적 주소에 상기 데이터를 쓰는 경우에 상기 데이터의 종류를 결정하고, 상기 결정된 데이터의 종류를 기초로 상기 논리적 주소 공간을 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑하며, 상기 매핑된 가상 주소를 기초로 상기 데이터를 쓰는 플래시 번역 레이어(FTL, Flash Translation Layer)를 포함할 수 있다.
상기 플래시 번역 레이어는 상기 데이터가 저장되는 데이터 블록 내에 공백 페이지(empty page)가 있는 경우에는 상기 공백 페이지를 가상 주소로 매핑할 수 있고, 상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내에 무효(invalid) 페이지가 있는 경우에는 새로운 데이터 블록을 할당하고 상기 할당된 데이터 블록에 상기 데이터 블록에 저장된 유효한 페이지를 복사하며 상기 할당된 데이터 블록의 공백 페이지를 가상 주소로 매핑할 수 있다. 또한, 상기 플래시 번역 레이어는 상기 데이터 블록에 저장된 유효한 페이지를 복사한 후에 상기 데이터 블록을 지울 수 있다.
상기 플래시 번역 레이어는 상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내의 페이지들이 모두 유효한(valid) 경우에는 새로운 데이터 블록을 할당하고, 상기 할당된 데이터 블록의 빈 페이지를 가상 주소로 매핑할 수 있다.
상기 플래시 메모리 파일 시스템은 상기 어플리케이션이 상기 논리적 주소에 상기 데이터를 쓰는 경우에 상기 데이터의 종류를 결정하는 데이터 종류 결정기 및 상기 결정된 데이터의 종류를 기초로 상기 논리적 주소 공간을 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑하는 데이터 매퍼를 포함할 수 있다.
상기 플래시 메모리 파일 시스템은 상기 플래시 메모리 장치에 포함된 모든 데이터 블록들이 비슷한 지우기 회수를 가지도록 상기 매핑된 가상 주소를 지우기 횟수가 최소인 데이터 블록의 가상 주소로 재매핑(re-map)하는 플래시 메모리 수명 관리자(flash memory life span manager)를 더 포함할 수 있다.
상기 플래시 메모리 파일 시스템은 상기 매핑된 가상 주소에 대응하는 데이터 블록이 배드 블록을 포함하는 경우에는 상기 매핑된 가상 주소를 상기 배드 블록이 없는 새로운 데이터 블록의 가상 주소로 번역(translation)하는 배드 블록 관리자(bad block manager)를 더 포함할 수 있다.
상기 플래시 메모리 파일 시스템은 상기 어플리케이션이 상기 데이터를 쓰는 경우에 상기 데이터에 에러 정정 코드(ECC)를 추가하는 에러 핸들러(error handler)를 더 포함할 수 있다.
상기 파일 시스템은 상기 데이터 및 상기 데이터에 상응하는 디렉토리 엔트리를 캐싱하기 위한 버퍼 캐시 및 상기 데이터에 상응하는 파일 할당 테이블(FAT)를 캐싱하기 위한 FAT 캐시를 포함할 수 있다.
상기 파일 시스템은 상기 FAT 캐시로부터 출력된 파일 할당 테이블(FAT)이 연속되도록 상기 출력된 파일 할당 테이블(FAT)을 재캐시(recache)하는 FAT 메타 캐시 및 상기 버퍼 캐시로부터 출력된 디렉토리 엔트리가 연속되도록 상기 출력된 디렉토리 엔트리를 재캐시(recache)하는 DE 메타 캐시를 포함하는 메타 캐시를 더 포함할 수 있다.
상기 FAT 메타 캐시는 연속된 파일 할당 테이블들(FAT)을 한꺼번에 쓰기 위하여 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속된 경우에는 상기 출력된 파일 할당 테이블을 재캐시하여 연속된 파일 할당 테이블들(FAT)을 생성하고, 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속되지 않거나 상기 이전의 연속된 파일 할당 테이블들(FAT)의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 파일 할당 테이블들(FAT)을 모두 출력하고, 상기 출력된 파일 할당 테이블(FAT)을 재캐시할 수 있다.
상기 DE 메타 캐시는 연속된 디렉토리 엔트리들을 한꺼번에 쓰기 위하여 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속된 경우에는 상기 출력된 디렉토리 엔트리를 재캐시하여 연속된 디렉토리 엔트리를 생성하고, 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속되지 않거나 상기 이전의 연속된 디렉토리 엔트리의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 디렉토리 엔트리를 모두 출력하고 상기 출력된 디렉토리 엔트리를 재캐시할 수 있다.
상기 다른 목적을 달성하기 위하여 본 발명의 컴퓨팅 시스템(computing system)은 업데이트 연산이 자주 일어나는 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area)과 업데이트 연산이 거의 일어나지 않은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역(cold data storage area)을 포함하는 플래시 메모리 장치 및 어플리케이션(application)이 상기 플래시 메모리 장치에 데이터를 쓰는 경우에 상기 데이터의 종류를 기초로 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 영역에 데이터를 쓰는 플래시 메모리 파일 시스템(flash memory file system)을 지원하기 위한 장치 드라이버(device driver)를 포함한다.
예를 들어, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하고, 또한 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함할 수 있다.
또 다른 예를 들어, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함할 수 있고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함할 수 있다.
상기 또 다른 목적을 달성하기 위하여 컴퓨팅 시스템의 장치 드라이버에 의한 플래시 메모리 파일 시스템을 포함하는 플래시 메모리 장치는 업데이트 연산이 자주 일어나는 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area) 및 업데이트 연산이 거의 일어나지 않은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역(cold data storage area)을 포함하고, 쓰기 연산에 의하여 저장되는 데이터의 종류를 기초로 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 영역에 상기 데이터가 저장되는 플래시 메모리 파일 시스템을 포함한다.
예를 들어, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하고, 또한 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함할 수 있다.
또 다른 예를 들어, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데 이터(UHD, User Hot Data)를 더 포함할 수 있고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함할 수 있다.
상기 또 다른 목적을 달성하기 위하여 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄이기 위한 플래시 메모리 파일 시스템을 관리하기 위한 방법은 어플리케이션(application)으로부터 데이터를 입력받는 단계 및 상기 데이터의 종류를 기초로 업데이트 연산이 자주 일어나는 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역 및 업데이트 연산이 거의 일어나지 않은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역 중 하나의 영역에 상기 데이터를 플래시 메모리 장치에 쓰는 단계를 포함한다.
상기 데이터를 플래시 메모리 장치에 쓰는 단계는 상기 어플리케이션으로부터 상기 데이터의 파일경로 및 파일이름을 포함하는 논리적 주소를 입력받는 단계, 상기 어플리케이션이 상기 논리적 주소에 상기 데이터를 쓰는 경우에 상기 데이터의 종류를 결정하는 단계, 상기 결정된 데이터의 종류를 기초로 상기 논리적 주소 공간을 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑하는 단계 및 상기 매핑된 가상 주소를 기초로 상기 데이터를 쓰는 단계를 포함할 수 있다.
상기 매핑하는 단계는 상기 데이터가 저장되는 데이터 블록 내에 공백 페이지(empty page)가 있는 경우에는 상기 공백 페이지를 가상 주소로 매핑하는 단계를 포함할 수 있다.
상기 매핑하는 단계는 상기 데이터가 저장되는 데이터 블록 내에 공백 페이 지가 없고 상기 데이터 블록 내에 무효(invalid) 페이지가 있는 경우에는 새로운 데이터 블록을 할당하고 상기 할당된 데이터 블록에 상기 데이터 블록에 저장된 유효한 페이지를 복사하는 단계 및 상기 할당된 데이터 블록의 공백 페이지를 가상 주소로 매핑하는 단계를 더 포함할 수 있다.
상기 매핑하는 단계는 상기 데이터 블록에 저장된 유효한 페이지를 복사한 후에 상기 데이터 블록을 지우는 단계를 더 포함할 수 있다.
상기 매핑하는 단계는 상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내의 페이지들이 모두 유효한(valid) 경우에는 새로운 데이터 블록을 할당하는 단계 및 상기 할당된 데이터 블록의 빈 페이지를 가상 주소로 매핑하는 단계를 포함할 수 있다.
상기 플래시 메모리 장치에 포함된 모든 데이터 블록들이 비슷한 지우기 회수를 가지도록 상기 매핑된 가상 주소를 지우기 횟수가 최소인 데이터 블록의 가상 주소로 재매핑(re-map)하는 단계를 더 포함할 수 있다.
상기 재매핑된 가상 주소에 대응하는 데이터 블록이 배드 블록을 포함하는 경우에는 상기 재매핑된 가상 주소를 상기 배드 블록이 없는 새로운 데이터 블록의 가상 주소로 번역(translation)하는 단계를 더 포함할 수 있다.
상기 어플리케이션이 상기 데이터를 쓰는 경우에 상기 데이터에 에러 정정 코드(ECC)를 추가하는 단계를 더 포함할 수 있다.
예를 들어, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하고, 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함할 수 있다. 또한, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함하고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함할 수 있다.
또한 본 방법은 상기 데이터 및 상기 데이터에 상응하는 디렉토리 엔트리를 버퍼 캐시에 캐시하는 단계 및 상기 데이터에 상응하는 파일 할당 테이블(FAT)를 FAT 캐시에 캐시하는 단계를 더 포함할 수 있다.
또한, 본 방법은 상기 FAT 캐시로부터 출력된 파일 할당 테이블(FAT)이 연속되도록 상기 출력된 파일 할당 테이블(FAT)을 FAT 메타 캐시에 재캐시(recache)하는 단계 및 상기 버퍼 캐시로부터 출력된 디렉토리 엔트리가 연속되도록 상기 출력된 디렉토리 엔트리를 DE 메타 캐시에 재캐시(recache)하는 단계를 포함할 수 있다.
상기 출력된 파일 할당 테이블(FAT)을 FAT 메타 캐시에 재캐시(recache)하는 단계는 연속된 파일 할당 테이블들(FAT)을 한꺼번에 쓰기 위하여 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속된 경우에는 상기 출력된 파일 할당 테이블을 재캐시하여 연속된 파일 할당 테이블들(FAT)을 생성하는 단계, 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속되지 않거나 상기 이전의 연속된 파일 할당 테이블들(FAT)의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 파일 할당 테이블들(FAT)을 모두 출력하고, 상기 출력된 파일 할당 테이블(FAT)을 재캐시하는 단계를 포함할 수 있다.
상기 출력된 디렉토리 엔트리를 DE 메타 캐시에 재캐시(recache)하는 단계는 연속된 디렉토리 엔트리들을 한꺼번에 쓰기 위하여 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속된 경우에는 상기 출력된 디렉토리 엔트리를 재캐시하여 연속된 디렉토리 엔트리를 생성하는 단계 및 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속되지 않거나 상기 이전의 연속된 디렉토리 엔트리의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 디렉토리 엔트리를 모두 출력하고 상기 출력된 디렉토리 엔트리를 재캐시하는 단계를 포함할 수 있다.
따라서, 본 발명은 핫 데이터와 콜드 데이터를 따로 관리함으로써 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄일 수 있다.
또한, 본 발명에서는 데이터 블록을 복사하는 횟수를 줄임으로써 플래시 메모리 파일 시스템의 성능을 증가시킬 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하 본 발명의 실시예들을 도면과 함께 설명하고자 한다.
도 5는 본 발명의 일 실시예에 따른 플래시 메모리 장치를 효율적으로 관리하기 위한 장치 드라이버를 나타내는 블록도이다.
도 5를 참조하면, 플래시 메모리 장치 드라이버(520)는 파일 시스템(522) 및 플래시 번역 레이어(FTL, Flash Translation Layer)(524)를 포함한다.
플래시 메모리 장치 드라이버(520)를 포함하는 컴퓨팅 시스템(미도시됨)은 업데이트 연산이 자주 일어나는 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area)과 업데이트 연산이 거의 일어나지 않은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역(cold data storage area)을 포함하는 플래시 메모리 장치(530)가 연결된다.
플래시 메모리 장치 드라이버(520)는 어플리케이션(application)(510)이 플래시 메모리 장치(530)에 데이터를 쓰는 경우에 데이터의 종류를 기초로 핫 데이터 저장 영역 및 콜드 데이터 저장 영역 중 하나의 영역에 데이터를 쓰는 플래시 메모리 파일 시스템(flash memory file system)을 관리한다. 어플리케이션은 운영 체제(OS, Operating System) 및 운영 체제를 전제(foundation)로 동작하는 프로그램을 모두 포함한다.
파일 시스템(522)은 어플리케이션(510)으로부터 데이터의 파일경로 및 파일이름을 포함하는 논리적 주소를 입력받는다. 파일 시스템(522)의 동작 방식은 도 8 내지 도 13을 참조하여 후술한다.
플래시 번역 레이어(524)는 어플리케이션(510)이 논리적 주소에 데이터를 쓰는 경우에 데이터의 종류를 결정하고, 결정된 데이터의 종류를 기초로 논리적 주소 공간을 핫 데이터 저장 영역 및 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소(virtual address)로 매핑하며, 매핑된 가상 주소를 기초로 데이터를 쓴다. 가상 주소는 플래시 메모리 장치(530)가 사용하는 물리적 주소(physical address)에 상응할 수 있다.
즉, 어플리케이션(530)에 의하여 생성된 데이터가 핫 데이터에 포함된 경우에는 플래시 번역 레이어(524)는 핫 데이터 저장 영역에 데이터를 쓰고, 어플리케 이션(530)에 의하여 생성된 데이터가 콜드 데이터에 포함된 경우에는 플래시 번역 레이어(524)는 콜드 데이터 저장 영역에 데이터를 쓴다.
예를 들어, 핫 데이터는 업데이트 연산이 자주 일어나는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함할 수 있고, 핫 데이터 저장 영역은 파일 할당 테이블(FAT)을 저장하기 위한 FAT 저장 영역과 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함할 수 있다.
또한, 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함할 수 있고, 핫 데이터 저장 영역은 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함할 수 있다.
이하, 플래시 번역 레이어(524)의 동작을 설명하기로 한다.
도 6은 플래시 번역 레이어의 구성을 나타내는 블록도이다.
도 6을 참조하면, 플래시 번역 레이어(FTL, Flash Translation Layer)(600)는 파일 시스템 인터페이스(610), 데이터 종류 결정기(620), 데이터 매퍼(630), 플래시 수명 관리자(640), 배드 블록 관리자(650), 에러 핸들러(660) 및 플래시 인터페이스(670)를 포함할 수 있다.
파일 시스템 인터페이스(610)는 플래시 번역 레이어(600)과 파일 시스템(미도시됨)간의 인터페이스를 제공한다.
데이터 종류 결정기(620)는 어플리케이션(510)이 논리적 주소에 데이터를 쓰는 경우에 데이터의 종류를 결정한다. 예를 들어, 데이터 종류 결정기(620)는 어플리케이션(510)의 제공하는 논리적 주소를 기초로 데이터의 종류를 결정할 수 있다.
데이터 매퍼(620)는 데이터 종류 결정기(620)에 의하여 결정된 데이터의 종류를 기초로 논리적 주소 공간을 핫 데이터 저장 영역 및 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑한다.
데이터 매퍼(620)는 데이터가 저장되는 데이터 블록 내에 공백 페이지(empty page)가 없고 데이터 블록 내에 무효(invalid) 페이지가 있는 경우에는, 새로운 데이터 블록을 할당한다. 또한, 데이터 매퍼(620)는 할당된 데이터 블록에 이전의 데이터 블록에 저장된 유효한 페이지를 복사하며, 할당된 데이터 블록의 공백 페이지를 가상 주소로 매핑한다. 또한, 데이터 매퍼(620)는 데이터 블록에 저장된 유효한 페이지를 복사한 후에 이전 데이터 블록에 대한 삭제 연산을 수행할 수 있다.
데이터 매퍼(620)는 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 데이터 블록 내의 페이지들이 모두 유효한(valid) 경우에는 새로운 데이터 블록을 할당하고, 할당된 데이터 블록의 빈 페이지를 가상 주소로 매핑한다.
즉, 데이터 매퍼(620)는 데이터를 쓸 수 있는 빈 페이지의 가상 주소를 제공한다.
플래시 수명 관리자(640)는 플래시 메모리 장치(530)에 포함된 모든 데이터 블록들이 비슷한 지우기 회수를 가지도록 데이터 매퍼(620)에 의하여 매핑된 가상 주소를 지우기 횟수가 최소인 데이터 블록의 가상 주소로 재매핑(re-map)할 수 있다. 일반적으로 플래시 메모리 장치(530)는 데이터를 쓸 수 있는 횟수가 정해져 있기 때문이다.
배드 블록 관리자(650)는 데이터 매퍼(620) 또는 플래시 수명 관리자(630)에 의하여 매핑된 가상 주소에 대응하는 데이터 블록이 배드 블록(bad block)을 포함하는 경우에는 매핑된 가상 주소를 배드 블록이 없는 새로운 데이터 블록의 가상 주소로 번역(translation)한다. 배드 블록 관리자(650)는 배드 블록을 포함하는 데이터 블록 내의 페이지(들)만 제외하고 데이터 블록 내의 나머지 페이지(들)만을 사용하도록 설계할 수도 있다.
에러 핸들러(660)는 어플리케이션(530)이 데이터를 쓰는 경우에 데이터에 에러 정정 코드(ECC)를 추가한다. 어플리케이션(530)이 나중에 데이터를 읽을 때 발생하는 오류를 정정하기 위함이다.
플래시 인터페이스(670)는 플래시 번역 레이어(524)와 플래시 메모리 장치(530)간의 인터페이스를 제공한다.
도 7은 플래시 번역 레이어가 파일 쓰기 연산들을 수행하는 과정을 나타내기 위한 도면이다.
플래시 번역 레이어(524)는 어플리케이션(510)이 데이터를 쓰는 경우에 데이터의 종류를 판단한다(단계 S710).
플래시 번역 레이어(524)는 데이터의 종류가 핫 데이터에 상응하는 경우에는 어플리케이션(510)에 의하여 생성된 논리적 주소를 핫 데이터 저장 영역의 가상 주소로 매핑한다(단계 S720). 핫 데이터 저장 영역이 FAT 저장 영역, DE 저장 영역 및 UHD 저장 영역을 포함하는 경우에는 플래시 번역 레이어(524)는 데이터의 종류에 따라 FAT 저장 영역, DE 저장 영역 및 UHD 저장 영역 중 하나의 저장 영역에 데이터를 저장할 수 있다.
플래시 번역 레이어(524)는 매핑된 가상 주소에 데이터를 쓴다(단계 S730).
플래시 번역 레이어(524)는 데이터의 종류가 콜드 데이터에 상응하는 경우에는 어플리케이션(510)에 의하여 생성된 논리적 주소를 콜드 데이터 저장 영역의 가상 주소로 매핑한다(단계 S740).
플래시 번역 레이어(524)는 매핑된 가상 주소에 데이터를 쓴다(단계 S750).
도 2 및 도 3의 경우처럼, 초기의 데이터(B1)이 파일 할당 테이블(FAT)에 상응하고 2번 업데이트되는 경우에는 도 7에 나타난 데이터 블록(760) 및 데이터 블록(770)이 생성된다.
도 2 및 도 3과 달리 핫 데이터 저장 영역과 콜드 데이터 저장 영역이 구분된 경우에는, 플래시 번역 레이어(524)가 데이터 블록을 복사하는 연산을 수행하지 않는다. 따라서 핫 데이터 저장 영역과 콜드 데이터 저장 영역을 구분함으로써 플래시 번역 레이어(524)에 의한 데이터 읽기 및 쓰기 연산의 횟수가 줄어들 수 있다.
도 8은 파일 시스템의 구성을 나타내는 블록도이다.
도 8을 참조하면, 파일 시스템(522)은 어플리케이션 프로그래밍 인터페이스(API, Application Programming Interface)(810), 볼륨 관리자(820), 디렉토리 및 파일 관리자(830), FAT 코어(840), FAT 캐시(850), 버퍼 캐시(860), 메타 캐시(870) 및 물리적 장치 인터페이스(880)를 포함한다.
어플리케이션 프로그래밍 인터페이스(810)는 어플리케이션(510) 및 파일 시스템(522)간의 인터페이스를 제공한다.
볼륨 관리자(820)는 파일 시스템(522)이 사용하는 데이터 저장 공간을 논리적인 단위로 분할하고, 플래시 메모리 장치(530)와 같은 물리적 장치를 포맷한다.
디렉토리 및 파일 관리자(830)는 어플리케이션(510)에 디렉토리 및 파일의 생성, 할당 및 삭제와 관련된 연산들을 제공한다.
FAT 코어(840)는 어플리케이션(510)이 디렉토리 및 파일에 대하여 생성, 할당 및 삭제 연산을 수행할 때 디렉토리 및 파일에 상응하는 파일 할당 테이블(FAT)의 검색, 할당 및 삭제와 같은 연산들을 수행한다.
FAT 캐시(850)는 어플리케이션(510)이 디렉토리 및 파일에 대하여 생성, 할당 및 삭제 연산을 수행할 때 디렉토리 및 파일에 상응하는 파일 할당 테이블(FAT)을 캐시한다.
버퍼 캐시(860)는 어플리케이션(510)이 디렉토리 및 파일에 대하여 생성, 할당 및 삭제 연산을 수행할 때 어플리케이션(510)의 데이터 및 디렉토리 엔트리를 캐시한다.
메타 캐시(870)는 FAT 캐시(850)로부터 출력된 파일 할당 테이블 및 버퍼 캐시(860)로부터 출력된 디렉토리 엔트리를 한꺼번에 플래시 메모리 장치(530)에 쓸 수 있도록 재캐시(recache)한다. 메타 캐시(870)의 동작 방법은 도 9 내지 도 13을 참조하여 후술한다.
물리적 장치 인터페이스(880)는 파일 시스템(522)과 플래시 번역 레이어(524)간의 인터페이스를 제공한다.
도 9는 메타 캐시의 동작 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 메타 캐시(870)는 FAT 메타 캐시(910) 및 DE 메타 캐시(920)를 포함한다.
FAT 메타 캐시(910)는 FAT 캐시로부터 출력된 파일 할당 테이블(FAT)이 연속되도록 출력된 파일 할당 테이블(FAT)을 재캐시(recache)한다.
FAT 메타 캐시(910)는 연속된 파일 할당 테이블들(FAT)을 한꺼번에 쓰기 위하여 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속된 경우에는 출력된 파일 할당 테이블을 재캐시하여 연속된 파일 할당 테이블들(FAT)을 생성한다. 또한, FAT 메타 캐시(910)는 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속되지 않거나 이전의 연속된 파일 할당 테이블들(FAT)의 개수가 소정의 개수(즉, FAT 메타 캐시의 최대 크기)를 초과하는 경우에는 이전의 연속된 파일 할당 테이블들(FAT)을 모두 출력하고, 출력된 파일 할당 테이블(FAT)을 재캐시한다.
DE 메타 캐시(920)는 버퍼 캐시로부터 출력된 디렉토리 엔트리가 연속되도록 출력된 디렉토리 엔트리를 재캐시(recache)한다.
DE 메타 캐시(920)는 연속된 디렉토리 엔트리들을 한꺼번에 쓰기 위하여 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속된 경우에는 출력된 디렉토리 엔트리를 재캐시하여 연속된 디렉토리 엔트리를 생성한다. 또한, DE 메타 캐시(920)는 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속되지 않거나 이전의 연속된 디렉토리 엔트리의 개수가 소정의 개수를 초과하는 경우에는 이전의 연속된 디렉토리 엔트리를 모두 출력하고 출력된 디렉토리 엔트리를 재캐시 한다.
도 10 내지 도 13은 FAT 캐시, 버퍼 캐시 및 메타 캐시의 동작을 설명하기 위한 플로우차트들이다.
FAT 캐시(850) 또는 버퍼 캐시(860)는 FAT 코어(840)로부터 데이터를 입력받고, 입력받은 데이터가 핫 데이터에 포함되는지 판단한다(단계 S1010). 예를 들어, FAT 캐시(850)에 입력되는 데이터는 모두 핫 데이터에 상응하고, 버퍼 캐시(860)에 입력되는 데이터 중 디렉토리 엔트리 및 사용자 핫 데이터는 핫 데이터에 상응할 수 있다.
입력받은 데이터가 핫 데이터가 아닌 경우에는 버퍼 캐시(860)는 입력받은 데이터에 상응하는 이전 데이터가 버퍼 캐시(860)에 있는지 판단한다(단계 S1020).
입력받은 데이터에 상응하는 이전 데이터가 버퍼 캐시(860)에 포함되지 않은 경우에는 버퍼 캐시(860)는 플래시 메모리 장치(530)로부터 입력받은 데이터에 상응하는 데이터를 로딩(load)한다(단계 S1030).
버퍼 캐시(860)는 버퍼 캐시(860)의 이전 데이터를 입력받은 데이터로 업데이트 한다(단계 S1040).
버퍼 캐시(860)는 업데이트된 데이터를 플러시(flush)할 것인지를 판단하고(단계 S1050), 버퍼 캐시(860)는 업데이트된 데이터를 플래시 메모리 장치에 쓴다(단계 S1060). 예를 들어, 버퍼 캐시(860)의 플러시는 적절한 주기를 기초로 수행될 수 있다.
입력받은 데이터가 핫 데이터인 경우에는 FAT 캐시(850) 또는 버퍼 캐 시(860)는 입력받은 데이터가 파일 할당 테이블인지 판단한다(단계 S1110).
입력받은 데이터가 파일 할당 테이블인 경우에는 FAT 캐시(850)는 입력받은 데이터에 상응하는 이전 데이터가 FAT 캐시(850)에 있는지 판단한다(단계 S1120).
입력받은 데이터에 상응하는 이전 데이터가 FAT 캐시(850)에 포함되지 않은 경우에는 FAT 캐시(850)는 플래시 메모리 장치(530)로부터 입력받은 데이터에 상응하는 데이터를 로딩(load)한다(단계 S1125).
FAT 캐시(850)는 FAT 캐시(850)의 이전 데이터를 입력받은 데이터로 업데이트 한다(단계 S1130).
FAT 캐시(850)는 FAT 캐시(850) 내에 저장된 데이터량이 FAT 캐시(850)의 크기를 초과하는지 또는 플래시 메모리 장치(530)를 업데이트해야 할 것인지 판단한다(단계 S1140).
FAT 캐시(850)는 업데이트된 데이터를 FAT 메타 캐시(910)에 쓴다(단계 S1150).
FAT 메타 캐시(910)는 연속된 파일 할당 테이블들(FAT)을 한꺼번에 쓰기 위하여 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속된 경우에는 출력된 파일 할당 테이블을 재캐시하여 연속된 파일 할당 테이블들(FAT)을 생성한다.
FAT 메타 캐시(910)는 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속되지 않거나 이전의 연속된 파일 할당 테이블들(FAT)의 개수가 소정의 개수(즉, FAT 메타 캐시의 최대 크기)를 초과하는지를 판단한다(단계 S1160).
FAT 메타 캐시(910)는 이전의 연속된 파일 할당 테이블들(FAT)을 플래시 메모리 장치(530)에 모두 출력하고(단계 S1164 및 단계 S1168), 출력된 파일 할당 테이블(FAT)을 재캐시한다(단계 S1170).
입력받은 데이터가 파일 할당 테이블이 아닌 경우에는 버퍼 캐시(860)는 입력받은 데이터가 디렉토리 엔트리인지 판단한다(단계 S1180).
입력받은 데이터가 디렉토리 엔트리인 경우에는 버퍼 캐시(860)는 입력받은 데이터에 상응하는 이전 데이터가 버퍼 캐시(860)에 있는지 판단한다(단계 S1210).
입력받은 데이터에 상응하는 이전 데이터가 버퍼 캐시(860)에 포함되지 않은 경우에는 버퍼 캐시(860)는 플래시 메모리 장치(530)로부터 입력받은 데이터에 상응하는 데이터를 로딩(load)한다(단계 S1220).
버퍼 캐시(860)는 버퍼 캐시(860)의 이전 데이터를 입력받은 데이터로 업데이트 한다(단계 S1230).
버퍼 캐시(860)는 버퍼 캐시(860) 내에 저장된 데이터량이 버퍼 캐시(860)의 크기를 초과하는지 또는 플래시 메모리 장치(530)를 업데이트해야 할 것인지 판단한다(단계 S1240).
버퍼 캐시(860)는 업데이트된 데이터를 DE 메타 캐시(920)에 쓴다(단계 S1250).
DE 메타 캐시(920)는 연속된 디렉토리 엔트리를 한꺼번에 쓰기 위하여 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속된 경우에는 출력된 디렉토리 엔트리를 재캐시하여 연속된 디렉토리 엔트리를 생성한다.
DE 메타 캐시(920)는 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속되지 않거나 이전의 연속된 디렉토리 엔트리의 개수가 소정의 개수(즉, DE 메타 캐시의 최대 크기)를 초과하는지를 판단한다(단계 S1260).
DE 메타 캐시(920)는 이전의 연속된 디렉토리 엔트리를 플래시 메모리 장치(530)에 모두 출력하고(단계 S1270 및 단계 S1280), 출력된 디렉토리 엔트리를 재캐시한다(단계 S1190).
입력받은 데이터가 디렉토리 엔트리가 아닌 경우에는 버퍼 캐시(860)는 입력받은 데이터에 상응하는 이전 데이터가 버퍼 캐시(860)에 있는지 판단한다(단계 S1310).
입력받은 데이터에 상응하는 이전 데이터가 버퍼 캐시(860)에 포함되지 않은 경우에는 버퍼 캐시(860)는 플래시 메모리 장치(530)로부터 입력받은 데이터에 상응하는 데이터를 로딩(load)한다(단계 S1320).
버퍼 캐시(860)는 버퍼 캐시(860)의 이전 데이터를 입력받은 데이터로 업데이트 한다(단계 S1330).
버퍼 캐시(860)는 버퍼 캐시(860) 내에 저장된 데이터량이 버퍼 캐시(860)의 크기를 초과하는지 또는 플래시 메모리 장치(530)를 업데이트해야 할 것인지 판단한다(단계 S1340).
버퍼 캐시(860)는 업데이트된 데이터를 플래시 메모리 장치에 쓴다(단계 S1350).
상술한 바와 같이 본 발명에서는 핫 데이터와 콜드 데이터를 따로 관리함으로써 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄일 수 있다.
또한, 본 발명에서는 데이터 블록을 복사하는 횟수를 줄임으로써 플래시 메모리 파일 시스템의 성능을 증가시킬 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (39)

  1. 업데이트 연산의 발생 빈도가 기준 빈도 이상인 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area)과 업데이트 연산의 발생 빈도가 상기 기준 빈도보다 작은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역(cold data storage area)을 포함하는 플래시 메모리 장치가 연결 가능한 컴퓨팅 시스템(computing system)의 장치 드라이버로서,
    어플리케이션(application)이 상기 플래시 메모리 장치에 데이터를 쓰는 경우에 상기 데이터의 종류를 기초로 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 영역에 데이터를 쓰는 플래시 메모리 파일 시스템(flash memory file system)을 포함하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버(device driver).
  2. 제1항에 있어서, 상기 플래시 메모리 파일 시스템은
    상기 어플리케이션으로부터 상기 데이터의 파일경로 및 파일이름을 포함하는 논리적 주소를 입력받는 파일 시스템; 및
    상기 어플리케이션이 상기 논리적 주소에 상기 데이터를 쓰는 경우에 상기 데이터의 종류를 결정하고, 상기 결정된 데이터의 종류를 기초로 상기 논리적 주소 공간을 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑하며, 상기 매핑된 가상 주소를 기초로 상기 데이터를 쓰는 플래시 번역 레이어(FTL, Flash Translation Layer)를 포함하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  3. 제2항에 있어서, 상기 플래시 번역 레이어는
    상기 데이터가 저장되는 데이터 블록 내에 공백 페이지(empty page)가 있는 경우에는 상기 공백 페이지를 가상 주소로 매핑하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  4. 제3항에 있어서, 상기 플래시 번역 레이어는
    상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내에 무효(invalid) 페이지가 있는 경우에는 새로운 데이터 블록을 할당하고 상기 할당된 데이터 블록에 상기 데이터 블록에 저장된 유효한 페이지를 복사하며, 상기 할당된 데이터 블록의 공백 페이지를 가상 주소로 매핑하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  5. 제4항에 있어서, 상기 플래시 번역 레이어는
    상기 데이터 블록에 저장된 유효한 페이지를 복사한 후에 상기 데이터 블록을 지우는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  6. 제4항에 있어서, 상기 플래시 번역 레이어는
    상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내의 페이지들이 모두 유효한(valid) 경우에는 새로운 데이터 블록을 할당하고, 상기 할당된 데이터 블록의 빈 페이지를 가상 주소로 매핑하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  7. 제2항에 있어서, 상기 플래시 메모리 파일 시스템은
    상기 어플리케이션이 상기 논리적 주소에 상기 데이터를 쓰는 경우에 상기 데이터의 종류를 결정하는 데이터 종류 결정기; 및
    상기 결정된 데이터의 종류를 기초로 상기 논리적 주소 공간을 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑하는 데이터 매퍼를 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  8. 제7항에 있어서, 상기 플래시 메모리 파일 시스템은
    상기 플래시 메모리 장치에 포함된 모든 데이터 블록들이 일정 범위 이내의 지우기 회수를 가지도록 상기 매핑된 가상 주소를 지우기 횟수가 최소인 데이터 블록의 가상 주소로 재매핑(re-map)하는 플래시 메모리 수명 관리자(flash memory life span manager)를 더 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  9. 제7항에 있어서, 상기 플래시 메모리 파일 시스템은
    상기 매핑된 가상 주소에 대응하는 데이터 블록이 배드 블록을 포함하는 경우에는 상기 매핑된 가상 주소를 상기 배드 블록이 없는 새로운 데이터 블록의 가상 주소로 번역(translation)하는 배드 블록 관리자(bad block manager)를 더 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  10. 제7항에 있어서, 상기 플래시 메모리 파일 시스템은
    상기 어플리케이션이 상기 데이터를 쓰는 경우에 상기 데이터에 에러 정정 코드(ECC)를 추가하는 에러 핸들러(error handler)를 더 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  11. 제1항에 있어서, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하고, 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제11항에 있어서, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함하고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제11항에 있어서, 상기 파일 시스템은
    상기 데이터 및 상기 데이터에 상응하는 디렉토리 엔트리를 캐싱하기 위한 버퍼 캐시; 및
    상기 데이터에 상응하는 파일 할당 테이블(FAT)를 캐싱하기 위한 FAT 캐시를 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제13항에 있어서, 상기 파일 시스템은
    상기 FAT 캐시로부터 출력된 파일 할당 테이블(FAT)이 연속되도록 상기 출력된 파일 할당 테이블(FAT)을 재캐시(recache)하는 FAT 메타 캐시; 및
    상기 버퍼 캐시로부터 출력된 디렉토리 엔트리가 연속되도록 상기 출력된 디렉토리 엔트리를 재캐시(recache)하는 DE 메타 캐시를 포함하는 메타 캐시를 더 포함하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서, 상기 FAT 메타 캐시는
    연속된 파일 할당 테이블들(FAT)을 한꺼번에 쓰기 위하여 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속된 경우에는 상기 출력된 파일 할당 테이블을 재캐시하여 연속된 파일 할당 테이블들(FAT)을 생성하고, 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속되지 않거나 상기 이전의 연속된 파일 할당 테이블들(FAT)의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 파일 할당 테이블들(FAT)을 모두 출력하고, 상기 출력된 파일 할당 테이블(FAT)을 재캐시하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서, 상기 DE 메타 캐시는
    연속된 디렉토리 엔트리들을 한꺼번에 쓰기 위하여 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속된 경우에는 상기 출력된 디렉토리 엔트리를 재캐시하여 연속된 디렉토리 엔트리를 생성하고, 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속되지 않거나 상기 이전의 연속된 디렉토리 엔트리의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 디렉토리 엔트리를 모두 출력하고 상기 출력된 디렉토리 엔트리를 재캐시하는 것을 특징으로 하는, 플래시 메모리 파일 시스템을 효율적으로 관리할 수 있는 컴퓨팅 시스템의 장치 드라이버.
  17. 업데이트 연산의 발생 빈도가 기준 빈도 이상인 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area)과 업데이트 연산의 발생 빈도가 상기 기준 빈도보다 작은 콜드 데이터 저장 영역(cold data storage area)을 포함하는 플래시 메모리 장치; 및
    어플리케이션(application)이 상기 플래시 메모리 장치에 데이터를 쓰는 경우에 상기 데이터의 종류를 기초로 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 영역에 데이터를 쓰는 플래시 메모리 파일 시스템(flash memory file system)을 지원하기 위한 장치 드라이버(device driver)를 포함하는 컴퓨팅 시스템(computing system).
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제17항에 있어서, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    제18항에 있어서, 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제19항에 있어서, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함하고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  21. 업데이트 연산의 발생 빈도가 기준 빈도 이상인 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역(hot data storage area); 및
    업데이트 연산의 발생 빈도가 상기 기준 빈도보다 작은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역(cold data storage area)을 포함하고,
    쓰기 연산에 의하여 저장되는 데이터의 종류를 기초로 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 영역에 상기 데이터가 저장되는 플래시 메모리 파일 시스템을 포함하는 플래시 메모리 장치(flash memory device).
  22. 청구항 22은(는) 설정등록료 납부시 포기되었습니다.
    제21항에 있어서, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하는 것을 특징으로 하는 플래시 메모리 장치.
  23. 청구항 23은(는) 설정등록료 납부시 포기되었습니다.
    제22항에 있어서, 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함하는 것을 특징으로 하는 플래시 메모리 장치.
  24. 청구항 24은(는) 설정등록료 납부시 포기되었습니다.
    제23항에 있어서, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함하고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함하는 것을 특징으로 하는 플래시 메모리 장치.
  25. 어플리케이션(application)으로부터 데이터를 입력받는 단계; 및
    상기 데이터의 종류를 기초로 업데이트 연산의 발생 빈도가 기준 빈도 이상인 핫 데이터(hot data)를 저장하는 핫 데이터 저장 영역 및 업데이트 연산의 발생 빈도가 상기 기준 빈도보다 작은 콜드 데이터(cold data)를 저장하는 콜드 데이터 저장 영역 중 하나의 영역에 상기 데이터를 플래시 메모리 장치에 쓰는 단계를 포함하는 플래시 메모리 장치의 읽기 및 쓰기 연산의 수를 줄일 수 있는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  26. 제25항에 있어서, 상기 데이터를 플래시 메모리 장치에 쓰는 단계는
    상기 어플리케이션으로부터 상기 데이터의 파일경로 및 파일이름을 포함하는 논리적 주소를 입력받는 단계;
    상기 어플리케이션이 상기 논리적 주소에 상기 데이터를 쓰는 경우에 상기 데이터의 종류를 결정하는 단계;
    상기 결정된 데이터의 종류를 기초로 상기 논리적 주소 공간을 상기 핫 데이터 저장 영역 및 상기 콜드 데이터 저장 영역 중 하나의 저장 영역의 가상 주소로 매핑하는 단계; 및
    상기 매핑된 가상 주소를 기초로 상기 데이터를 쓰는 단계를 포함하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  27. 청구항 27은(는) 설정등록료 납부시 포기되었습니다.
    제25항에 있어서, 상기 매핑하는 단계는
    상기 데이터가 저장되는 데이터 블록 내에 공백 페이지(empty page)가 있는 경우에는 상기 공백 페이지를 가상 주소로 매핑하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  28. 청구항 28은(는) 설정등록료 납부시 포기되었습니다.
    제27항에 있어서, 상기 매핑하는 단계는
    상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내에 무효(invalid) 페이지가 있는 경우에는 새로운 데이터 블록을 할당하고 상기 할당된 데이터 블록에 상기 데이터 블록에 저장된 유효한 페이지를 복사하는 단계; 및
    상기 할당된 데이터 블록의 공백 페이지를 가상 주소로 매핑하는 단계를 더 포함하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  29. 청구항 29은(는) 설정등록료 납부시 포기되었습니다.
    제28항에 있어서, 상기 매핑하는 단계는
    상기 데이터 블록에 저장된 유효한 페이지를 복사한 후에 상기 데이터 블록을 지우는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  30. 청구항 30은(는) 설정등록료 납부시 포기되었습니다.
    제28항에 있어서, 상기 매핑하는 단계는
    상기 데이터가 저장되는 데이터 블록 내에 공백 페이지가 없고 상기 데이터 블록 내의 페이지들이 모두 유효한(valid) 경우에는 새로운 데이터 블록을 할당하는 단계; 및
    상기 할당된 데이터 블록의 빈 페이지를 가상 주소로 매핑하는 단계를 포함하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  31. 청구항 31은(는) 설정등록료 납부시 포기되었습니다.
    제26항에 있어서,
    상기 플래시 메모리 장치에 포함된 모든 데이터 블록들이 일정 범위 이내의 지우기 회수를 가지도록 상기 매핑된 가상 주소를 지우기 횟수가 최소인 데이터 블록의 가상 주소로 재매핑(re-map)하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  32. 청구항 32은(는) 설정등록료 납부시 포기되었습니다.
    제26항에 있어서,
    상기 매핑된 가상 주소에 대응하는 데이터 블록이 배드 블록을 포함하는 경우에는 상기 매핑된 가상 주소를 상기 배드 블록이 없는 새로운 데이터 블록의 가상 주소로 번역(translation)하는 단계를 더 포함하는 것을 특징으로 플래시 메모리 파일 시스템을 관리하기 위한 하는 방법.
  33. 청구항 33은(는) 설정등록료 납부시 포기되었습니다.
    제26항에 있어서,
    상기 어플리케이션이 상기 데이터를 쓰는 경우에 상기 데이터에 에러 정정 코드(ECC)를 추가하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  34. 청구항 34은(는) 설정등록료 납부시 포기되었습니다.
    제25항에 있어서, 상기 핫 데이터는 파일 할당 테이블(FAT, File Allocation Table)과 디렉토리 엔트리(DE, Directory Entry)를 포함하고, 상기 핫 데이터 저장 영역은 상기 파일 할당 테이블을 저장하기 위한 FAT 저장 영역과 상기 디렉토리 엔트리를 저장하기 위한 DE 저장 영역을 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  35. 청구항 35은(는) 설정등록료 납부시 포기되었습니다.
    제34항에 있어서, 상기 핫 데이터는 사용자에 의하여 지정한 사용자 핫 데이터(UHD, User Hot Data)를 더 포함하고, 상기 핫 데이터 저장 영역은 상기 사용자 핫 데이터를 저장하기 위한 UHD 저장 영역을 더 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  36. 청구항 36은(는) 설정등록료 납부시 포기되었습니다.
    제34항에 있어서,
    상기 데이터 및 상기 데이터에 상응하는 디렉토리 엔트리를 버퍼 캐시에 캐시하는 단계; 및
    상기 데이터에 상응하는 파일 할당 테이블(FAT)를 FAT 캐시에 캐시하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  37. 청구항 37은(는) 설정등록료 납부시 포기되었습니다.
    제36항에 있어서,
    상기 FAT 캐시로부터 출력된 파일 할당 테이블(FAT)이 연속되도록 상기 출력된 파일 할당 테이블(FAT)을 FAT 메타 캐시에 재캐시(recache)하는 단계; 및
    상기 버퍼 캐시로부터 출력된 디렉토리 엔트리가 연속되도록 상기 출력된 디렉토리 엔트리를 DE 메타 캐시에 재캐시(recache)하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  38. 청구항 38은(는) 설정등록료 납부시 포기되었습니다.
    제37항에 있어서, 상기 출력된 파일 할당 테이블(FAT)을 FAT 메타 캐시에 재캐시(recache)하는 단계는
    연속된 파일 할당 테이블들(FAT)을 한꺼번에 쓰기 위하여 상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속된 경우에는 상기 출력된 파일 할당 테이블을 재캐시하여 연속된 파일 할당 테이블들(FAT)을 생성하는 단계;
    상기 출력된 파일 할당 테이블(FAT)이 이전에 출력된 파일 할당 테이블(FAT)과 연속되지 않거나 상기 이전의 연속된 파일 할당 테이블들(FAT)의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 파일 할당 테이블들(FAT)을 모두 출력하고, 상기 출력된 파일 할당 테이블(FAT)을 재캐시하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
  39. 청구항 39은(는) 설정등록료 납부시 포기되었습니다.
    제37항에 있어서, 상기 출력된 디렉토리 엔트리를 DE 메타 캐시에 재캐시(recache)하는 단계는
    연속된 디렉토리 엔트리들을 한꺼번에 쓰기 위하여 상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속된 경우에는 상기 출력된 디렉토리 엔트리를 재캐시하여 연속된 디렉토리 엔트리를 생성하는 단계; 및
    상기 출력된 디렉토리 엔트리가 이전에 출력된 디렉토리 엔트리와 연속되지 않거나 상기 이전의 연속된 디렉토리 엔트리의 개수가 소정의 개수를 초과하는 경우에는 상기 이전의 연속된 디렉토리 엔트리를 모두 출력하고 상기 출력된 디렉토리 엔트리를 재캐시하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 파일 시스템을 관리하기 위한 방법.
KR1020060097023A 2006-10-02 2006-10-02 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법 KR100874702B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060097023A KR100874702B1 (ko) 2006-10-02 2006-10-02 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US11/605,265 US7844772B2 (en) 2006-10-02 2006-11-29 Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
US12/926,193 US8510500B2 (en) 2006-10-02 2010-11-01 Device driver including a flash memory file system and method thereof and a flash memory device and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060097023A KR100874702B1 (ko) 2006-10-02 2006-10-02 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법

Publications (2)

Publication Number Publication Date
KR20080030756A KR20080030756A (ko) 2008-04-07
KR100874702B1 true KR100874702B1 (ko) 2008-12-18

Family

ID=39262345

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060097023A KR100874702B1 (ko) 2006-10-02 2006-10-02 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법

Country Status (2)

Country Link
US (2) US7844772B2 (ko)
KR (1) KR100874702B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304905B2 (en) 2011-08-12 2016-04-05 Ajou University Industry-Academic Cooperation Foundation Memory controller and data management method thereof

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100180072A1 (en) * 2007-06-22 2010-07-15 Shigekazu Kogita Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
KR101473344B1 (ko) * 2007-08-24 2014-12-17 삼성전자 주식회사 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
KR20100016987A (ko) * 2008-08-05 2010-02-16 삼성전자주식회사 상 변화 메모리를 포함하는 컴퓨팅 시스템
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
TW201025002A (en) * 2008-12-26 2010-07-01 Asmedia Technology Inc Method of writing data into flash memory based on file system
KR101023013B1 (ko) * 2009-03-19 2011-03-24 주식회사 에이텍 낸드 플래시 메모리 기반 파일시스템에서 데이터 저장방법
KR101674015B1 (ko) 2009-06-23 2016-11-08 시게이트 테크놀로지 엘엘씨 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체
JP5269213B2 (ja) * 2010-02-02 2013-08-21 株式会社東芝 ストレージ機能を持つ通信装置
KR20120003283A (ko) * 2010-07-02 2012-01-10 삼성전자주식회사 데이터 저장 장치 및 그것의 배드 블록 관리 방법
CN102346691B (zh) * 2010-07-30 2013-07-24 联芯科技有限公司 闪存镜像文件制作方法及装置
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
US9501392B1 (en) * 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US20120317337A1 (en) * 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use
JP2013003701A (ja) * 2011-06-14 2013-01-07 Sony Corp 情報処理装置及び方法、並びにプログラム
TW201303888A (zh) * 2011-07-06 2013-01-16 Altek Corp 儲存資料的方法及使用其之電子裝置
WO2012149776A1 (zh) * 2011-09-28 2012-11-08 华为技术有限公司 存储数据的方法和装置
US9164676B2 (en) 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system
US9164887B2 (en) 2011-12-05 2015-10-20 Industrial Technology Research Institute Power-failure recovery device and method for flash memory
CN102521142B (zh) * 2011-12-13 2015-05-13 曙光信息产业(北京)有限公司 一种提高大容量、多内存设备访问效率的方法
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
WO2014101117A1 (zh) 2012-12-28 2014-07-03 华为技术有限公司 数据存储方法和存储设备
KR102023351B1 (ko) 2013-03-19 2019-11-04 삼성전자 주식회사 저장 장치 내 할당 촉진을 위한 데이터 분석 방법 및 장치
CN103246609B (zh) * 2013-04-24 2015-12-09 深圳市江波龙电子有限公司 一种闪存存储设备中冷热数据区分管理的方法及装置
US9317208B2 (en) * 2013-12-31 2016-04-19 Sybase, Inc. Data row cache for an acid compliant in-memory row store in a page-based RDBMS engine
US9804961B2 (en) 2014-03-21 2017-10-31 Aupera Technologies, Inc. Flash memory file system and method using different types of storage media
TWI517165B (zh) * 2014-03-31 2016-01-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9959060B1 (en) * 2014-09-16 2018-05-01 SK Hynix Inc. Data separation during host write with storage allocated based on traffic profiles
KR20160058458A (ko) 2014-11-17 2016-05-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN105701021B (zh) * 2014-12-10 2021-03-02 慧荣科技股份有限公司 数据储存装置及其数据写入方法
KR101718713B1 (ko) * 2015-05-29 2017-03-22 주식회사 이에프텍 비휘발성 메모리 시스템
US9678911B2 (en) 2015-11-12 2017-06-13 Aupera Technologies, Inc. System for distributed computing and storage
CN106649406B (zh) * 2015-11-04 2020-04-28 华为技术有限公司 一种自适应存储文件的方法和装置
US10083720B2 (en) 2015-11-06 2018-09-25 Aupera Technologies, Inc. Method and system for video data stream storage
TWI625729B (zh) * 2015-11-25 2018-06-01 旺宏電子股份有限公司 資料配置方法及應用其之電子系統
US10593421B2 (en) 2015-12-01 2020-03-17 Cnex Labs, Inc. Method and apparatus for logically removing defective pages in non-volatile memory storage device
KR102514388B1 (ko) 2016-03-25 2023-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10073623B2 (en) 2016-11-29 2018-09-11 SK Hynix Inc. Memory system and operation method for the same
US10229052B2 (en) * 2017-05-31 2019-03-12 Seagate Technology Llc Reverse map logging in physical media
KR20190019429A (ko) 2017-08-17 2019-02-27 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR102113212B1 (ko) * 2017-11-28 2020-05-20 성균관대학교산학협력단 플래시 메모리 시스템 및 그 제어 방법
CN108062278A (zh) * 2018-01-12 2018-05-22 江苏华存电子科技有限公司 一种闪存冷热数据分析器及分析方法
US11138069B2 (en) 2018-06-11 2021-10-05 Seagate Technology, Llc Providing additional parity for non-standard sized parity data sets
US10896002B2 (en) 2018-06-29 2021-01-19 Seagate Technology Llc Reverse directory structure in a garbage collection unit (GCU)
CN109710182A (zh) * 2018-12-14 2019-05-03 北京向上一心科技有限公司 行情数据处理方法、装置及控制器和介质
WO2020129612A1 (ja) * 2018-12-19 2020-06-25 ソニー株式会社 情報処理装置、情報処理方法および情報処理プログラム
CN110489212B (zh) * 2019-08-20 2022-08-02 东软集团股份有限公司 一种通用型输入输出口虚拟化的方法、装置及车机
CN110515550B (zh) * 2019-08-21 2022-03-29 深圳忆联信息系统有限公司 一种sata固态硬盘冷热数据分离的方法及其装置
US11461464B2 (en) * 2020-03-25 2022-10-04 Arm Limited Methods and apparatus for memory attack detection
US11726921B2 (en) 2020-05-21 2023-08-15 Seagate Technology Llc Combined page footer for parallel metadata storage
KR20220048869A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN113157601A (zh) * 2021-05-06 2021-07-23 北京集创北方科技股份有限公司 闪存数据读写方法、装置、存储介质和终端设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226202B1 (en) 1996-07-19 2001-05-01 Tokyo Electron Device Limited Flash memory card including CIS information

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618535B1 (en) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5696929A (en) * 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JP4160139B2 (ja) * 1997-12-12 2008-10-01 オリンパス株式会社 情報記録再生装置
JP2004062554A (ja) 2002-07-30 2004-02-26 Oki Electric Ind Co Ltd フラッシュメモリの管理方法
JP2004318940A (ja) * 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置
TW200504577A (en) * 2003-07-16 2005-02-01 Matsushita Electric Ind Co Ltd Management method for data storage in data recording medium, and information processing device using the same
JP2005092677A (ja) 2003-09-19 2005-04-07 Matsushita Electric Ind Co Ltd メモリ装置
US8788764B2 (en) * 2003-10-08 2014-07-22 Oracle International Corporation Access controller for storage devices
US7363420B2 (en) * 2003-12-15 2008-04-22 Nortel Networks Limited Method and file structures for managing data on a flash disk
US7106636B2 (en) * 2004-06-22 2006-09-12 Intel Corporation Partitionable memory device, system, and method
US7574580B2 (en) * 2004-07-06 2009-08-11 Magnum Semiconductor, Inc. Intelligent caching scheme for streaming file systems
KR100725390B1 (ko) * 2005-01-06 2007-06-07 삼성전자주식회사 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
JP4961693B2 (ja) * 2005-07-29 2012-06-27 ソニー株式会社 コンピュータシステム
US7426605B2 (en) * 2005-09-30 2008-09-16 Rudelic John C Method and apparatus for optimizing flash device erase distribution
US7779426B2 (en) * 2006-03-30 2010-08-17 Microsoft Corporation Describing and querying discrete regions of flash storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226202B1 (en) 1996-07-19 2001-05-01 Tokyo Electron Device Limited Flash memory card including CIS information

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304905B2 (en) 2011-08-12 2016-04-05 Ajou University Industry-Academic Cooperation Foundation Memory controller and data management method thereof

Also Published As

Publication number Publication date
US8510500B2 (en) 2013-08-13
US7844772B2 (en) 2010-11-30
KR20080030756A (ko) 2008-04-07
US20080082729A1 (en) 2008-04-03
US20110055464A1 (en) 2011-03-03

Similar Documents

Publication Publication Date Title
KR100874702B1 (ko) 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US11669444B2 (en) Computing system and method for controlling storage device
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
JP6785205B2 (ja) メモリシステムおよび制御方法
CN109725846B (zh) 存储器系统及控制方法
JP6785204B2 (ja) メモリシステムおよび制御方法
JP2019057178A (ja) メモリシステムおよび制御方法
US11669264B2 (en) Method for improving trim command response time
US20230401149A1 (en) Memory system and information processing system
JP7013546B2 (ja) メモリシステム
US11263132B2 (en) Method and system for facilitating log-structure data organization
JP7204020B2 (ja) 制御方法
US20240086096A1 (en) Memory system and information processing system
JP2023021450A (ja) メモリシステム
JP2023174933A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20121130

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131129

Year of fee payment: 6