KR101638061B1 - 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 - Google Patents

플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 Download PDF

Info

Publication number
KR101638061B1
KR101638061B1 KR1020100042077A KR20100042077A KR101638061B1 KR 101638061 B1 KR101638061 B1 KR 101638061B1 KR 1020100042077 A KR1020100042077 A KR 1020100042077A KR 20100042077 A KR20100042077 A KR 20100042077A KR 101638061 B1 KR101638061 B1 KR 101638061B1
Authority
KR
South Korea
Prior art keywords
flash
defragmentation
host
flash memory
memory
Prior art date
Application number
KR1020100042077A
Other languages
English (en)
Other versions
KR20110046233A (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 KR1020100042077A priority Critical patent/KR101638061B1/ko
Priority to US12/912,997 priority patent/US8626987B2/en
Publication of KR20110046233A publication Critical patent/KR20110046233A/ko
Application granted granted Critical
Publication of KR101638061B1 publication Critical patent/KR101638061B1/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
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1004Defragmentation
    • 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

Abstract

본 발명은 플래시 조각 모음을 지원하는 플래시 메모리 시스템에 관한 것이다. 본 발명의 실시 예에 따른 플래시 메모리 시스템은 플래시 조각 모음을 지원하는 호스트와 상기 호스트의 플래시 조각 모음 요청에 따라 플래시 메모리의 조각난 블록들의 데이터를 플래시 메모리 관리 단위로 모아서 플래시 조각 모음을 수행하는 플래시 저장 장치를 포함한다. 여기에서, 상기 플래시 메모리 관리 단위는 메모리 블록 또는 페이지일 수 있다. 상기 플래시 저장 장치는 상기 플래시 메모리에 저장된 조각난 파일들의 배열 순서에 관계없이 플래시 조각 모음을 수행한다.

Description

플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법{FLASH MEMORY SYSTEM AND FLASH DEFRAG METHOD THEREOF}
본 발명은 플래시 메모리 시스템에 관한 것으로, 더욱 상세하게는 플래시 조각 모음을 지원하는 플래시 메모리 시스템 및 그것의 조각 모음 방법에 관한 것이다.
플래시 메모리(flash memory)는 하드 디스크와 달리 겹쳐 쓰기(overwrite)를 지원하지 않기 때문에, 다시 쓰기 위해서는 소거 동작이 선행되어야 한다. 플래시 메모리의 소거 동작은 메모리 블록 단위로 수행되고, 소거 시간이 오래 걸린다. 이러한 플래시 메모리의 특성으로 인해, 하드 디스크용 파일 시스템을 플래시 메모리에 그대로 적용하는 데 어려움이 있다. 이를 해결하기 위한 방안으로 하드 디스크용 파일 시스템과 플래시 메모리 사이의 미들웨어인 플래시 변환 계층(FTL)이 사용되고 있다. FTL은 플래시 메모리를 기존의 하드 디스크처럼 자유롭게 읽고 쓸 수 있도록 한다.
조각 모음(defragmentation 또는 defrag)은 하드 디스크 위의 파일 시스템의 조각난 양을 줄이는 작업을 말한다. 조각 모음은 물리적으로는 하드 디스크 상의 조각난 파일들을 연속적으로 붙여서 동작 속도를 빠르게 하는 것을 목적으로 하고 한다. 주기적인 조각 모음을 통해 디스크의 성능을 최대한 유지시키고, 단편화로 인한 과도한 오버헤드 문제를 막을 수 있다.
본 발명은 플래시 메모리를 기반으로 하는 플래시 저장 장치에, 기존의 조각 모음과는 다른 방식의 조각 모음 기술을 적용함으로, 플래시 메모리의 불필요한 데이터 이동을 줄이고, 플래시 메모리 시스템의 전체적인 성능을 향상시키는 것을 목적으로 한다.
본 발명은 플래시 조각 모음을 지원하는 플래시 메모리 시스템에 관한 것이다. 본 발명의 실시 예에 따른 플래시 메모리 시스템은 플래시 조각 모음을 지원하는 호스트; 및 상기 호스트의 플래시 조각 모음 요청에 따라, 플래시 메모리의 조각난 블록들의 데이터를 플래시 메모리 관리 단위로 모아서 플래시 조각 모음을 수행하는 플래시 저장 장치를 포함한다. 여기에서, 상기 플래시 메모리 관리 단위는 메모리 블록 또는 페이지일 수 있다. 상기 플래시 저장 장치는 상기 플래시 메모리에 저장된 조각난 파일들의 배열 순서에 관계없이 플래시 조각 모음을 수행한다.
실시 예로서, 상기 호스트는 플래시 조각 모음을 지원하도록 프로그램된 응용 프로그램; 및 파일 시스템 블록 단위로 파일들을 관리하며, 플래시 조각 모음을 위해 상기 파일 시스템 블록을 상기 플래시 메모리 관리 단위로 그룹화하는 파일 시스템을 포함한다. 상기 플래시 저장 장치는 상기 플래시 메모리의 논리 공간과 물리 공간 사이의 맵핑 동작을 수행하기 위한 플래시 변환 계층(FTL)을 포함한다.
다른 실시 예로서, 상기 호스트는 상기 플래시 메모리 관리 단위로 모은 조각난 블록의 데이터를 저장하기 위한 호스트 메모리를 더 포함한다. 상기 호스트는 읽기 명령을 이용하여 상기 플래시 메모리로부터 읽은 조각난 블록의 데이터를 상기 호스트 메모리에 저장하고, 쓰기 명령을 이용하여 상기 호스트 메모리에 저장된 데이터를 상기 플래시 메모리의 프리 블록에 쓴다. 상기 호스트는 데이터 무효화 명령을 이용하여 상기 플래시 메모리의 무효화된 블록을 프리 블록으로 변환할 수 있다.
또 다른 실시 예로서, 상기 호스트는 조각 모음 명령을 상기 플래시 저장 장치로 제공하고, 상기 플래시 저장 장치는 상기 조각 모음 명령에 응답하여 자체적으로 플래시 조각 모음을 수행하고, 조각 모음 결과를 상기 호스트로 제공한다. 상기 파일 시스템은 상기 조각 모음 결과를 기반으로 상기 파일 시스템 블록을 업데이트 한다.
본 발명의 다른 일면은 호스트 및 플래시 메모리 기반의 플래시 저장 장치를 포함하는 플래시 메모리 시스템의 플래시 조각 모음 방법에 관한 것이다. 본 발명의 실시 예에 따른 플래시 조각 모음 방법은, 상기 호스트가 상기 플래시 저장 장치로 플래시 조각 모음을 요청하는 단계; 상기 호스트의 읽기 명령에 따라 상기 플래시 메모리의 조각난 블록들의 데이터를 읽고 플래시 메모리 관리 단위로 상기 호스트 내의 호스트 메모리에 저장하는 단계; 및 상기 호스트의 쓰기 명령에 따라 상기 호스트 메모리에 저장된 플래시 메모리 관리 단위의 데이터를 상기 플래시 메모리의 프리 블록에 쓰는 단계를 포함한다.
실시 예로서, 본 발명에 따른 플래시 조각 모음 방법은 상기 플래시 조각 모음을 요청하는 단계 이전에, 파일 시스템 블록을 분석하고 상기 플래시 메모리의 조각난 논리 블록을 찾는 단계를 더 포함한다. 파일 시스템을 분석하고 조각난 논리 블록을 찾는 단계에서, 상기 파일 시스템 블록을 상기 플래시 메모리 관리 단위로 그룹화할 수 있다.
다른 실시 예로서, 본 발명에 따른 플래시 조각 모음 방법은 상기 호스트가 데이터 무효화 명령을 이용하여 상기 플래시 메모리의 무효화된 블록을 소거하는 단계를 더 포함할 수 있다. 상기 플래시 메모리 관리 단위는 메모리 블록 또는 페이지일 수 있다.
본 발명의 또 다른 일면은 호스트 및 플래시 메모리 기반의 플래시 저장 장치를 포함하는 플래시 메모리 시스템의 플래시 조각 모음 방법에 관한 것이다. 본 발명의 실시 예에 따른 플래시 조각 모음 방법은 상기 호스트가 상기 플래시 저장 장치로 조각 모음 명령을 제공하는 단계; 상기 호스트의 조각 모음 명령에 응답하여, 상기 플래시 저장 장치가 상기 플래시 메모리의 조각난 블록들의 데이터를 플래시 메모리 관리 단위로 플래시 조각 모음을 수행하는 단계; 및 상기 플래시 저장 장치가 플래시 조각 모음 결과를 상기 호스트로 제공하는 단계를 포함한다.
실시 예로서, 본 발명의 실시 예에 따른 플래시 조각 모음 방법은 상기 조각 모음 명령을 제공하기 이전에, 파일 시스템 블록을 상기 플래시 메모리 관리 단위로 그룹화하는 단계를 더 포함할 수 있다. 상기 호스트는 상기 플래시 조각 모음 결과를 기반으로 상기 파일 시스템 블록을 업데이트 할 수 있다.
다른 실시 예로서, 본 발명의 실시 예에 따른 플래시 조각 모음 방법은 상기 조각 모음 명령을 제공하는 단계에서, 조각 모음 크기, 조각 모음 시작 섹터, 섹터 수에 대한 정보를 제공할 수 있다. 상기 플래시 조각 모음을 수행하는 단계에서, 상기 호스트와 상기 플래시 저장 장치 사이에 데이터 전송 없이 플래시 조각 모음이 수행될 수 있다.
본 발명은 플래시 조각 모음을 플래시 메모리 관리 단위로 수행함으로써, 조각 모음 시 데이터 이동을 줄일 수 있고, 조각 모음을 통해 플래시 메모리의 빈 공간을 효율적으로 사용할 수 있다.
도 1은 하드 디스크 기반의 조각 모음을 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 3은 도 2에 도시된 플래시 메모리 시스템의 소프트웨어 계층 구조를 보여주는 블록도이다.
도 4 및 도 5는 플래시 변환 계층을 설명하기 위한 도면이다.
도 6 및 도 7은 가상 맵핑 테이블을 통해 이루어지는 블록 맵핑 방식을 예시적으로 보여준다.
도 8은 도 1에 도시된 파일 시스템의 블록 구조를 예시적으로 보여준다.
도 9는 조각 모음 크기, 조각 모음 시작 섹터, 그리고 섹터의 수를 예시적으로 보여주는 도표이다.
도 10은 호스트에 의한 플래시 조각 모음을 설명하기 위한 도면이다.
도 11 및 도 12는 도 10에 도시된 플래시 조각 모음의 결과를 보여주는 도면이다.
도 13은 도 10에 도시된 플래시 조각 모음 방법을 설명하기 위한 순서도이다.
도 14는 플래시 저장 장치에 의한 플래시 조각 모음을 설명하기 위한 도면이다.
도 15 및 도 16은 14에 도시된 플래시 조각 모음의 결과를 보여주는 도면이다.
도 17은 도 14에 도시된 플래시 조각 모음 방법을 설명하기 위한 순서도이다.
도 18은 본 발명의 실시 예에 따른 플래시 조각 모음을 메모리 카드에 적용한 예를 보여준다.
도 19는 본 발명의 실시 예에 따른 플래시 조각 모음을 솔리드 스테이트 드라이브(SSD)에 구현한 예를 보여주는 블록도이다.
도 20은 도 19에 도시된 SSD 컨트롤러(3210)의 구성을 예시적으로 보여주는 블록도이다.
도 21은 본 발명의 실시 예에 따른 플래시 조각 모음을 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예 또는 적용 예를 첨부된 도면을 참조하여 설명하기로 한다.
Ⅰ. 조각 모음을 수행하는 플래시 메모리 시스템
조각 모음(defragmentation 또는 defrag)은 본래 하드 디스크에 저장된 조각난 파일(defraged files)을 재정렬함으로, 하드 디스크의 탐색 시간(seek time)을 줄이기 위한 기술이다. 예를 들어, 도 1의 (A)에 도시된 바와 같이, 두 개의 파일이 하드 디스크 상에 여러 곳에 분산되어 있다고 가정하자. 첫 번째 파일은 a1~a7로 이루어지고 두 번째 파일은 b1~b5로 이루어져 있다. 조각난 두 파일은 (B)와 (C) 등과 같은 수회의 복사 과정을 통해 도 1의 (D)에 도시된 바와 같이 순차적으로 정리된다.
한편, 플래시 메모리를 기반으로 하는 데이터 저장 장치(이하, 플래시 저장 장치라 함)는 하드 디스크와는 달리, 파일들의 배열 순서가 동작 특성(예를 들면, 읽기/쓰기 속도 등)에 큰 영향을 주지 않는다. 즉, 플래시 저장 장치는 조각난 파일들의 배열 순서에 따라 데이터 탐색 시간이 크게 달라지지 않는다. 플래시 저장 장치는 도 1에 도시된 조각 모음 방법을 사용하면, 오히려 불필요한 데이터 이동으로 인해, 플래시 메모리의 수명을 단축하고 성능을 떨어뜨릴 수 있다. 따라서 플래시 저장 장치는 하드 디스크 기반의 조각 모음과는 다른 조각 모음 방식을 필요로 한다.
도 2는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다. 도 2를 참조하면, 플래시 메모리 시스템(1000)은 호스트(1100) 및 플래시 저장 장치(1200)를 포함한다. 플래시 메모리 시스템(1000)은 플래시 메모리 관리 단위를 기반으로 하는 조각 모음(이하, 플래시 조각 모음이라 함)을 지원할 수 있다. 여기에서, 플래시 메모리 관리 단위에는 소거 동작 단위인 메모리 블록(또는 슈퍼 블록)과 읽기/쓰기 단위인 페이지(또는 슈퍼 페이지) 등이 있다.
이하에서는 주로 메모리 블록 단위로 기반으로 하는 플래시 조각 모음이 주로 설명될 것이다. 본 발명에 따른 플래시 조각 모음에 의하면, 플래시 메모리 관리 단위로 조각 모음을 수행함으로써, 조각 모음 시 데이터 이동을 줄일 수 있고, 조각 모음을 통해 플래시 메모리의 빈 공간을 효율적으로 사용할 수 있다. 도 2를 참조하면, 호스트(1100)는 프로세싱 유닛(processing unit, 1110) 및 구동 유닛(driving unit, 1120)을 포함한다. 프로세싱 유닛(예를 들면, CPU)(1110)은 호스트(1100)의 전반적인 동작을 제어하며, 구동 유닛(1120)은 프로세싱 유닛(1110)의 제어에 따라 플래시 저장 장치(1200)를 구동한다. 구동 유닛(1120)은 호스트(1100)의 소프트웨어 프로그램들을 구동하기 위한 메인 메모리(main memory)로 구성될 수 있다.
도 2를 참조하면, 구동 유닛(1120)에는 애플리케이션(application, 1121), 파일 시스템(file system, 1122), 장치 드라이버(device driver, 1123), 그리고 호스트 메모리(1124)가 포함될 수 있다. 애플리케이션(1121)은 응용 프로그램(application program)이라고도 하며, 운영 체제(OS) 위에서 실행되는 소프트웨어로서 플래시 조각 모음(flash defrag)을 지원하도록 프로그램되어 있다.
파일 시스템(1122)은 플래시 저장 장치(1200)에 저장되어 있는 여러 파일을 쉽게 관리하기 위해 미리 정해 놓은 파일 관리 규약이라 할 수 있다. 파일 시스템(1122)은 하드 디스크 관점의 섹터(sector)나 플래시 메모리 관점의 블록(block) 단위로 파일을 관리할 수 있다. 이하에서는 파일 시스템(1122)의 파일 관리 단위를 파일 시스템 블록(file system block)이라고 칭하기로 한다. 즉 파일 시스템(1122)은 파일 시스템 블록 단위로 파일을 조직화하고 관리한다.
본 발명에서, 파일 시스템(1122)은 플래시 조각 모음을 위해 플래시 메모리 관리 단위(예를 들면, 메모리 블록)로 파일 시스템 블록을 그룹화한다. 이는 도 8에서 좀 더 자세하게 설명될 것이다. 파일 시스템(1122)은 파일 시스템 블록의 유효 정보(validity information)를 통해 플래시 조각 모음을 수행할 영역을 설정할 수 있다. 파일 시스템(1122)은 파일 시스템 블록 정보를 플래시 저장 장치(1200)로 전달하면서 플래시 조각 모음을 요청한다. 파일 시스템 블록 정보는 섹터 단위(예를 들면, 512B)로 변환하여 플래시 저장 장치(1200)로 제공된다.
한편, 파일 시스템(1122)에는 FAT(File Allocation Table), NTFS(New Technology File System), HPFS(High Performance File System), UFS(Unix File System), Ext2(Second Extended File System), 그리고 Ext3(Third Extended File System) 등과 같이 플로피 디스크나 하드 디스크에서 주로 사용하는 것뿐만 아니라, LFS, JFFS, YAFFS, LogFS와 같은 플래시 메모리 전용 파일 시스템도 포함될 수 있다.
장치 드라이버(1123)는 플래시 저장 장치(1200)가 호스트(1100)와 통신할 수 있도록 하는 프로그램이다. 플래시 저장 장치(1200)를 사용하기 위해서는, 호스트(1100)에 플래시 저장 장치(1200)에 맞는 장치 드라이버(1123)가 설치되어야 한다. 호스트 메모리(1124)는 플래시 저장 장치(1200)에 쓰거나 플래시 저장 장치(1200)로부터 읽은 데이터를 임시로 저장할 수 있다. 또한, 호스트 메모리(1124)는 애플리케이션(1121), 파일 시스템(1122), 그리고 장치 드라이버(1123)를 구동하기 위한 워킹 메모리(working memory)로 사용될 수도 있다.
플래시 저장 장치(1200)는 호스트(1100)의 요청에 따라 플래시 조각 모음을 수행할 수 있다. 플래시 저장 장치(1200)는 호스트(1100)로부터 플래시 조각 모음을 수행하기 위한 섹터 어드레스를 제공받는다. 계속해서 도 2를 참조하면, 플래시 저장 장치(1200)는 플래시 메모리(1210), 버퍼 메모리(1220), 그리고 제어 유닛(1230)을 포함한다.
플래시 메모리(1200)는 제어 유닛(1230)의 제어에 따라 소거, 쓰기 또는 읽기 동작을 수행할 수 있다. 플래시 메모리(1200)는 복수의 메모리 블록으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 도 2에서는 4개의 메모리 블록(1121~1124) 및 4개의 페이지가 예시적으로 도시되어 있다. 플래시 메모리(1200)는 메모리 블록 단위로 소거 동작을 수행하고, 페이지 단위로 쓰기 또는 읽기 동작을 수행한다.
한편, 플래시 메모리(1200)는 하나의 메모리 셀에는 한 비트 또는 두 비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트 데이터를 저장할 수 있는 메모리 셀은 싱글 레벨 셀(SLC; Single Level Cell) 또는 싱글 비트 셀(single bit cell)이라 부른다. 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 메모리 셀은 멀티 레벨 셀(MLC; Multi Level Cell) 또는 멀티 비트 셀(multi bit cell)이라 부른다.
버퍼 메모리(1220)는 플래시 메모리(1200)로부터 읽은 데이터 또는 호스트(1100)로부터 제공되는 데이터를 임시로 저장할 수 있다. 또한, 버퍼 메모리(1220)는 플래시 변환 레이어(Flash Translation Layer; FTL)와 같은 펌웨어를 구동하는 데 사용될 수도 있다. 버퍼 메모리(1220)는 DRAM, SRAM, MRAM, PRAM 등으로 구현될 수 있다.
계속해서 도 2를 참조하면, 제어 유닛(1230)에는 중앙처리장치(CPU, 1231), 플래시 변환 계층(FTL; Flash Translation Layer, 1232), 플래시 컨트롤러(1233), 그리고 버퍼 컨트롤러(1234)를 포함한다. CPU(1231)는 호스트(1100)로부터 입력된 신호를 분석하고 처리하며, 플래시 저장 장치(1200)의 전반적인 동작을 제어한다. FTL(1232)은 호스트(1100)에서 제공된 섹터 어드레스(sector address)를 플래시 메모리(1210) 상의 물리 어드레스로 변환한다. 플래시 컨트롤러(1233)는 플래시 메모리(1210)의 읽기, 쓰기, 소거 동작 등을 제어하고, 버퍼 컨트롤러(1234)는 버퍼 메모리(1220)의 읽기, 쓰기 동작 등을 제어한다.
도 3은 도 2에 도시된 플래시 메모리 시스템의 소프트웨어 계층 구조를 보여주는 블록도이다. 도 3을 참조하면, 플래시 메모리 시스템(1000)의 소프트웨어 계층 구조는 애플리케이션(1121), 파일 시스템(1122), FTL(1232), 그리고 플래시 메모리(1210)로 구성된다. 애플리케이션(1121)으로부터 플래시 조각 모음(flash defrag) 요청을 받은 파일 시스템(1122)은 플래시 조각 모음의 대상인 섹터 어드레스(sector address)를 FTL(1232)로 제공한다. FTL(1232)은 섹터 어드레스를 물리 어드레스(physical address)로 변환하고, 플래시 메모리(1210)의 블록(block)과 페이지(page)를 지정한다.
도 4에 도시된 바와 같이, FTL(1232)은 논리 어드레스(logical address)인 섹터 번호(sector number)를 플래시 메모리 상의 물리 어드레스(physical address)인 블록 번호(block number) 또는 페이지 번호(page number)로 변환한다.
또한, 도 5에 도시된 바와 같이, FTL(1232)은 상위 계층의 애플리케이션(1121)이나 파일 시스템(1122)에서 볼 때, 실제 플래시 메모리(1210)에서 수행되는 읽기, 프로그램, 소거 연산 대신에 하드 디스크 장치에서와 같은 읽기, 쓰기가 수행되는 것처럼 보이도록 에뮬레이트(emulate)하는 역할을 한다.
FTL(1232)의 어드레스 변환은 가상 맵핑 테이블을 통해 이루어질 수 있다. 맵핑 방식은 크게 페이지 맵핑과 블록 맵핑 방식이 있다. 페이지 맵핑은 페이지 단위(예를 들면, 2KB)로 어드레스 변환을 하며, 블록 맵핑은 블록 단위(예를 들면, 1MB)로 어드레스 변환을 한다.
도 6은 블록 맵핑 방식에 의한 어드레스 변환 원리를 예시적으로 보여준다. 도 6을 참조하면, FTL(1232)은 파일 시스템(1122)으로부터 제공된 섹터 어드레스(섹터 번호, 섹터의 수)를 이용하여 논리 블록 번호(LBN; Logical Block Number)와 논리 오프셋(logical offset)을 구한다. 이들은 각각 물리 블록 번호(PBN; Physical Block Number)와 물리 오프셋(physical offset)으로 맵핑되고, 플래시 메모리(1210) 상의 1212번 블록의 0번 페이지로 변환된다.
도 7은 도 6에 도시된 블록 맵핑 방식의 구체적인 예를 보여준다. 블록 맵핑은 플래시 메모리(1210)의 가상의 논리 공간(logical space)과 실제의 물리 공간(physical space) 사이에서 이루어진다. 플래시 메모리(1210)의 논리 공간은 물리 공간과 마찬가지로, 4개의 블록(0000~0003)의 구성되고, 각각의 블록은 4개의 페이지로 구성되며, 각각의 페이지는 8개의 섹터로 구성된다. 도 7에서, SN은 섹터 번호(sector number)를 의미한다.
플래시 메모리(1210)에 A(a1, a2), B(b1~b4), C(c1, c2) 3개의 파일이 저장되어 있다고 가정하자. 물리 블록 번호 1212에는 a1, a2, b4가 저장되어 있고, 1213에는 c1, b1이 저장되어 있으며, 1214에는 b2, c2, b3가 저장되어 있다. 물리 블록 번호 1211은 데이터가 저장되어 있지 않은 프리 블록(free block)이다. 0000번 논리 블록은 1212번 물리 블록과 맵핑되고, 0001번 논리 블록은 1213번 물리 블록과 맵핑되며, 0002번 논리 블록은 1214번 물리 블록과 맵핑된다.
FTL(1232)은 가상의 논리 공간을 이용하여 플래시 저장 장치(1200)를 랜덤 읽기/쓰기가 자유로운 하드 디스크처럼 동작하도록 에뮬레이트(emulate)할 수 있다. 즉, 플래시 메모리(1210)는 가상의 논리 공간에서는 하드 디스크처럼 동작하지만, 실제의 물리 공간에서는 플래시 메모리의 고유의 특성(예를 들면, 블록 단위 소거, 쓰기 전 소거)에 따라 동작한다.
FTL(1232)이 플래시 저장 장치(1200)를 하드 디스크처럼 동작하도록 에뮬레이트하기 때문에, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 FTL(1232)의 상위 계층에 FAT, NTFS, ext2, ext3 등과 같은 하드 디스크 기반의 파일 시스템을 사용할 수 있다.
도 8은 도 2 및 도 3에 도시된 파일 시스템 블록의 구조를 예시적으로 도시한 것이다. 도 8을 참조하면, A 파일의 a1 및 a2는 섹터 번호 0~15가 가리키는 영역에 저장되어 있다. B 파일의 b4 및 C 파일의 c1은 섹터 번호 24~39가 가리키는 영역에 저장되어 있다. B 파일의 b1~b3 및 C 파일의 c2는 섹터 번호 56~97이 가리키는 영역에 저장되어 있다.
파일 시스템(1122)은 파일 시스템 블록을 통해 플래시 조각 모음을 수행할 영역(예를 들면, 섹터 0~127)을 설정할 수 있다. 파일 시스템(1122)은 도 9에 도시된 바와 같이, 조각 모음 크기(예를 들면, 섹터 0~127)와 조각 모임 시작 섹터 번호와 섹터의 수를 플래시 저장 장치(1200)로 제공한다.
한편, 파일 시스템(1122)은 플래시 조각 모음을 위해 플래시 메모리 관리 단위(예를 들면, 메모리 블록)로 파일 시스템 블록을 그룹화한다. 도 8을 참조하면, 섹터 0~127은 4개의 그룹(Group1~Group4)으로 나누어지며, 각각의 그룹은 플래시 메모리의 블록 단위에 대응한다. 각각의 그룹이 페이지 단위에 대응하도록 그룹화할 수도 있다.
각각의 그룹이 플래시 메모리 블록 단위와 대응하도록 하기 위해서는, 파일 시스템 블록의 시작 어드레스가 플래시 메모리 블록의 시작 어드레스와 일치하고, 각각의 그룹 크기가 플래시 메모리 블록의 크기와 같거나 정수 배가 되어야 한다. 파일 시스템 블록의 시작 어드레스 일치와 그룹 크기를 설정하는 기술은 미국 공개 특허 US2008/0195833에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 플래시 메모리(1210)의 조각난 파일들을 플래시 메모리 관리 단위로 모아서 플래시 조각 모음(flash defrag)을 수행한다. 플래시 메모리 시스템(1000)은 조각난 파일들의 배열 순서에 관계없이 플래시 조각 모음을 수행하기 때문에, 조각 모음 시 데이터 이동을 줄일 수 있고, 조각 모음을 통해 플래시 메모리의 빈 공간을 효율적으로 사용할 수 있다.
본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)의 플래시 조각 모음 방법에는, 호스트(1100)에 의한 플래시 조각 모음(Ⅱ)과 플래시 저장 장치(1200)에 의한 플래시 조각 모임(Ⅲ)이 있다. 첫 번째 방식은 호스트(1100)와 플래시 저장 장치(1200) 사이의 데이터 전송을 기본으로 플래시 조각 모음을 수행한다. 두 번째 방식은 호스트(1100)와 플래시 저장 장치(1200) 사이의 데이터 전송 없이 플래시 저장 장치(1200) 자체적으로 플래시 조각 모음을 수행한다.
Ⅱ. 호스트에 의한 플래시 조각 모음
도 10은 호스트에 의한 플래시 조각 모음을 설명하기 위한 도면이다. 호스트(1100)는 조각난 파일들을 배열 순서에 관계없이 메모리 블록 단위로 읽은 다음에, 플래시 메모리(1210)의 프리 블록에 다시 쓰는 방식으로 플래시 조각 모음을 수행할 수 있다. 플래시 조각 모음은 페이지 단위나 여러 블록이나 페이지를 모은 슈퍼 블록이나 슈퍼 페이지 단위로 수행될 수도 있다.
도 10을 참조하면, 플래시 메모리(1210)의 논리 공간(logical space)에는 위의 예에서 설명한 바와 같이 3개의 파일(A, B, C)이 저장되어 있다고 가정한다. 논리 블록 번호 0000에는 a1, a2, b4가 저장되어 있고, 0001에는 c1, b1이 저장되어 있으며, 0002에는 b2, c2, b3가 저장되어 있다. 여기에서, 논리 블록 0000, 0001, 0002은 무효화되거나 데이터가 저장되지 않은 논리 페이지를 포함하고 있다. 이러한 논리 블록을 조각난 논리 블록(defraged logical block)이라 한다. 그리고 논리 블록 번호 0003은 데이터가 저장하고 있지 않으며, 이러한 논리 블록을 프리 블록(free block)이라 한다.
플래시 조각 모음이 시작되면, 호스트(1100)는 읽기 명령을 통해 논리 블록 번호 0000, 0001에 저장되어 있는 a1, a2, b4, c1을 읽고 호스트 메모리(1124)에 저장한다. 여기에서, a1, a2, b4, c1은 하나의 블록 단위 데이터(one block unit data)이다. 호스트(1100)는 쓰기 명령을 통해 호스트 메모리(1124)에 저장된 a1, a2, b4, c1을 플래시 메모리(1210)의 프리 블록 0003에 쓴다.
플래시 메모리(1210)에 프리 블록이 없기 때문에, 논리 블록 0000을 소거하여 프리 블록으로 만든다. 호스트(1100)는 데이터 무효화 명령(data invalidity command)을 이용하여 논리 블록 0000을 소거할 수 있다. 실제 소거 동작은 플래시 메모리(1210)의 물리 공간(도시되지 않음) 상에서 이루어지며, 블록 맵핑을 통해 논리 블록 0000을 프리 블록으로 만든다.
계속해서 b1, b2, c2, b3에 대한 플래시 조각 모음이 수행된다. 호스트(1100)는 읽기 명령을 통해 논리 블록 번호 0001, 0002에 저장되어 있는 b1, b2, c2, b3을 읽고 호스트 메모리(1124)에 저장한다. 여기에서, b1, b2, c2, b3은 하나의 블록 단위 데이터이다. 호스트(1100)는 쓰기 명령을 통해 호스트 메모리(1124)에 저장된 b1, b2, c2, b3을 플래시 메모리(1210)의 프리 블록 0000에 쓴다.
호스트(1100)는 데이터 무효화 명령을 이용하여 논리 블록 0001, 0002를 소거할 수 있다. 논리 블록 0001, 0002에 대한 소거 동작은 유휴 시간(idle time) 등을 활용하여 수행될 수 있다.
도 11 및 도 12는 도 10에 도시된 플래시 조각 모음의 결과를 보여준다. 도 11 및 도 12는 각각 플래시 메모리(1210)와 파일 시스템(1122) 관점에서 플래시 조각 모음 결과이다. 도 11을 참조하면, b1, b2, c2, b3는 논리 공간의 0000번 논리 블록에 저장되고, 물리 공간의 1212번 물리 블록으로 맵핑된다. a1, a2, b4, c1은 논리 공간의 0003번 논리 블록에 저장되고, 물리 공간의 1211번 물리 블록으로 맵핑된다. 도 12를 참조하면, b1, b2, c2, b3는 섹터 번호 0~31이 가리키는 파일 시스템 블록 그룹(Group1)에 저장되어 있고, a1, a2, b4, c1은 섹터 번호 96~127이 가리키는 파일 시스템 블록 그룹(Group4)에 저장되어 있다.
도 13은 도 10에 도시된 호스트에 의한 플래시 조각 모음 방법을 설명하기 위한 순서도이다. 플래시 조각 모음이 시작되면, 호스트(1100)는 먼저 플래시 메모리 관리 단위(예를 들면, 메모리 블록)에 대한 정보를 알아낸다.
호스트(1100)는 파일 시스템 블록을 분석하고, 파일 시스템 블록을 메모리 블록 크기 단위로 그룹화한다(S110). 호스트(1100)는 조각난 논리 블록(defraged logical blocks)을 찾는다(S120).
S130 단계에서, 조각난 논리 블록이 두 개보다 적으면, 플래시 조각 모음을 종료한다. 조각난 논리 블록이 두 개 이상이면, 두 개 또는 그 이상의 조각난 논리 블록(예를 들면, 도 10의 0000, 0001)으로부터 하나의 블록 단위 데이터(예를 들면, a1, a2, b4, c1)를 읽고 호스트 메모리(1124)에 저장한다(S140). 호스트(1100)는 호스트 메모리(1124)에 저장된 데이터를 플래시 메모리(1210)의 프리 블록에 쓴다(S150). 그리고 FTL(1232)은 맵핑 테이블을 업데이트 한다(S160).
S170 단계에서, 조각난 논리 블록이 두 개보다 적으면, 플래시 조각 모음 결과를 반영하여 파일 시스템 블록을 업데이트(S180) 하고, 플래시 조각 모음을 종료한다. 조각난 논리 블록이 두 개 이상이면, S140 단계가 반복된다. 위 예에서는 조각난 논리 블록의 b1, b2, c2, b3에 대한 플래시 조각 모음이 수행될 것이다.
도 13에 도시된 호스트에 의한 플래시 조각 모음 방법에 의하면, 호스트(1100)의 읽기 또는 쓰기 명령에 따라 조각난 파일들을 메모리 블록 단위로 플래시 조각 모음을 수행한다. 본 발명의 실시 예에 따른 플래시 조각 모음 방법에 의하면, 조각 모음 시 데이터 이동을 줄일 수 있고, 조각 모음을 통해 플래시 메모리의 빈 공간을 효율적으로 사용할 수 있다.
Ⅲ. 플래시 저장 장치에 의한 플래시 조각 모음
도 14는 플래시 저장 장치에 의한 플래시 조각 모음을 설명하기 위한 도면이다. 호스트(1100)는 플래시 조각 모음을 위한 명령(이하, 조각 모음 명령이라 함)을 플래시 저장 장치(1200)로 제공한다. 호스트(1100)는 조각 모음 명령(defrag command)과 함께, 조각 모음 크기(defrag size), 조각 모음 시작 섹터(start sector), 섹터의 수(# of sectors), 그리고 해당 영역에서 유효한 데이터가 저장된 섹터에 대한 비트맵(bitmap) 등을 제공할 수 있다.
플래시 저장 장치(1200)는 조각 모음 명령에 응답하여 자체적으로 플래시 조각 모음을 수행하고, 조각 모음 결과(defrag result)를 호스트(1100)로 제공한다. 조각 모음 결과에는 새로운 섹터번호(new sector)와 섹터의 수(# of sectors)에 대한 정보가 포함된다. 호스트(1100)는 조각 모음 결과를 기반으로 파일 시스템 블록을 업데이트 한다.
도 14를 참조하면, 플래시 저장 장치(1200)는 조각 모음 시작 섹터(start sector)와 섹터의 수(# of sectors)를 통해 플래시 메모리(1210)의 논리 블록을 구하고, 맵핑 테이블을 통해 플래시 메모리(1210)의 물리 공간(physical space)의 상태 정보를 수집한다. 플래시 저장 장치(1200)는 물리 공간 상태 정보를 이용하여 조각 모음을 수행할 블록과 수행하지 않을 블록을 구별할 수 있다. 플래시 저장 장치(1200)는 조각 모음을 수행할 논리 블록 목록을 리스트 형태로 구성하고, 논리 블록 내의 각 페이지의 유효 정보(validity information)를 비트맵 또는 테이블 형태로 구성한다.
플래시 메모리(1210)의 논리 공간(logical space)에는 위의 예에서 설명한 바와 같이 3개의 파일(A, B, C)이 저장되어 있다고 가정한다. 논리 블록 번호 0000에는 a1, a2, b4가 저장되어 있고, 0001에는 c1, b1이 저장되어 있으며, 0002에는 b2, c2, b3가 저장되어 있다. 논리 블록 번호 0003은 데이터가 저장되어 있지 않은 프리 블록(free block)이다. 도 15의 기존 블록 맵핑 테이블(old block mapping table)에 도시된 바와 같이, 0000번 논리 블록은 1212번 물리 블록과 맵핑되고, 0001번 논리 블록은 1213번 물리 블록과 맵핑되며, 0002번 논리 블록은 1214번 물리 블록과 맵핑된다.
다시 도 14를 참조하면, 플래시 조각 모음은 메모리 블록 단위로 수행되며, 플래시 메모리(1210)의 물리 공간에서 이루어진다. 예를 들면, 1212번 물리 블록의 a1, a2, b4 및 1213번 물리 블록의 c1은 프리 블록 1211로 복사(copy)된다. 그리고 1212번 물리 블록은 소거되어 프리 블록으로 변환된다. 이어서 1213번 물리 블록의 b1 및 1214번 물리 블록의 b2, c2, b3은 프리 블록 1212로 복사(copy)된다. 그리고 1213번과 1214번 물리 블록은 소거되어 프리 블록으로 변환된다. 여기에서, 복사 과정은 플래시 메모리(1210)의 카피백 프로그램(copyback program)을 통해 수행될 수 있다.
한편, 하나의 블록 단위 데이터(예를 들면, a1, a2, b4, c1)를 프리 블록 1211로 복사하는 과정에서, a1, a2, b4의 페이지 번호를 유지할 수 있다. 이 경우에 프리 블록 1211에는 a1, a2, c1, b4 순으로 데이터가 복사될 것이다. 마찬가지로, 프리 블록 1212에는 b2, c3, b1, b3 순으로 데이터가 복사될 수 있다.
도 15의 새 블록 맵핑 테이블(new block mapping table)에 도시된 바와 같이, 0000번 논리 블록은 1212번 물리 블록과 맵핑되고, 0003번 논리 블록은 1211번 물리 블록과 맵핑된다. 다시 도 14를 참조하면, 플래시 저장 장치(1200)은 자체적으로 플래시 조각 모음을 수행한 다음에, 조각 모음 결과(defrag result)를 호스트(1100)로 제공한다. 조각 모음 결과에는 새로운 섹터 번호(new sector) 및 섹터의 수(# of sectors)에 대한 정보가 포함된다.
또한, 조각 모음 결과에는 페이지 변경 등과 같은 맵핑 정보가 포함될 수 있다. 예를 들어, 블록 맵핑의 경우에는 FTL은 페이지 맵핑을 관리하지 않기 때문에, 플래시 저장 장치(1200)는 페이지 순서가 a1, a2, c1, b4 또는 b2, c3, b1, b3로 바뀌면 페이지 변경에 대한 맵핑 정보를 호스트(1100)로 제공해야 한다. 호스트(1100)는 이러한 조각 모음 결과를 기반으로 파일 시스템 블록을 업데이트 한다.
도 16은 플래시 조각 모음 결과를 반영한 파일 시스템 블록 구조를 보여준다. 도 16을 참조하면, b1, b2, c2, b3는 섹터 번호 0~31이 가리키는 파일 시스템 블록 그룹(Group1)에 저장되어 있다. a1, a2, b4, c1은 섹터 번호 96~127이 가리키는 파일 시스템 블록 그룹(Group4)에 저장되어 있다.
도 17은 도 14에 도시된 플래시 조각 모음 방법을 설명하기 위한 순서도이다. 사용자가 플래시 조각 모음을 요청하면, 호스트(1100)는 먼저 플래시 메모리 관리 단위(예를 들면, 메모리 블록)에 대한 정보를 알아낸다. 호스트(1100)는 파일 시스템 블록을 분석하고, 파일 시스템 블록을 메모리 블록 단위로 그룹화한다.
S210 단계에서, 호스트(1100)는 조각 모음 명령을 플래시 저장 장치(1200)로 제공한다. 호스트(1100)는 조각 모음 명령과 함께, 시작 섹터와 섹터 수 등에 대한 정보를 제공할 수 있다. 플래시 저장 장치(1200)는 맵핑테이블을 이용하여 조각난 블록(defraged blocks)을 찾는다(S220).
S230 단계에서, 조각난 블록이 두 개보다 적으면, 플래시 조각 모음을 종료한다. 조각난 블록이 두 개 이상이면, 플래시 메모리(1210)로부터 조각난 블록의 하나의 블록 단위 데이터(예를 들면, a1, a2, b4, c1)를 읽고, 플래시 메모리(1210)의 프리 블록(예를 들면, 도 14의 1211)에 복사한다(S240). 그리고 플래시 저장 장치(1200)는 모든 페이지 데이터가 무효화된 1212번 물리 블록을 소거하여 프리 블록으로 변환한다. FTL(1232)은 맵핑 테이블을 업데이트 한다(S250).
S260 단계에서, 조각난 블록이 두 개보다 적으면, 플래시 조각 모음 결과를 호스트(1100)로 제공하고(S270), 플래시 조각 모음을 종료한다. 조각난 블록이 두 개 이상이면, S240 단계가 반복된다. 위 예에서, 조각난 블록의 다른 블록 단위 데이터(b1, b2, c2, b3)에 대한 플래시 조각 모임이 수행될 것이다.
도 17에 도시된 플래시 저장 장치에 의한 플래시 조각 모음 방법에 의하면, 호스트(1100)의 조각 모음 명령에 따라 조각난 파일들을 메모리 블록 단위로 플래시 조각 모음을 수행한다. 본 발명의 실시 예에 따른 플래시 조각 모음 방법에 의하면, 호스트(1100)와 플래시 저장 장치(1200) 사이의 데이터 전송 없이 플래시 조각 모음을 수행할 수 있고, 조각 모음 시 데이터 이동을 줄일 수 있으며, 조각 모음을 통해 플래시 메모리의 빈 공간을 효율적으로 사용할 수 있다.
Ⅵ. 조각 모음을 수행하는 플래시 메모리 시스템의 적용 예
본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 여러 가지 제품에 적용 또는 응용될 수 있다. 호스트(1100)는 컴퓨터, 디지털 카메라, 휴대폰, MP3 플레이어, PMP, 게임기 등으로 구성될 수 있다. 플래시 저장 장치(1200)는 플래시 메모리를 기반으로 하는 솔리드 스테이트 드라이브(SSD), 플래시 메모리 카드, 또는 플래시 메모리 모듈 등으로 구성될 수 있다. 호스트(1100)와 플래시 저장 장치(1200)는 ATA, SATA, PATA, USB, SCSI, ESDI, PCI express 또는 IDE 인터페이스와 같은 표준 인터페이스(standardized interface)를 통해 연결될 수 있다.
도 18은 본 발명의 실시 예에 따른 플래시 조각 모음을 메모리 카드에 적용한 예를 보여준다. 메모리 카드 시스템(2000)은 호스트(2100)와 메모리 카드(2200)를 포함한다. 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 접속 유닛(2120)을 포함한다. 메모리 카드(2200)는 카드 접속 유닛(2210), 카드 컨트롤러(2220), 그리고 플래시 메모리(2230)를 포함한다.
호스트 접속 유닛(2120) 및 카드 접속 유닛(2210)은 복수의 핀으로 구성된다. 이들 핀에는 커맨드 핀, 데이터 핀, 클록 핀, 전원 핀 등이 포함되어 있다. 핀의 수는 메모리 카드(2200)의 종류에 따라 달라진다. 예로서, SD 카드는 9개의 핀을 갖는다.
호스트(2100)는 메모리 카드(2200)에 데이터를 쓰거나, 메모리 카드(2200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(2110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(2100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(2120)을 통해 메모리 카드(2200)로 전송한다.
카드 컨트롤러(2220)는 카드 접속 유닛(2210)을 통해 수신된 쓰기 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 메모리(2230)에 저장한다. 메모리(2230)는 호스트(2100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(2100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 18에서, 호스트 컨트롤러(2110)는 플래시 조각 모음을 지원하는 응용 프로그램과 파일 시스템을 구비할 수 있다. 그리고 카드 컨트롤러(2220)는 FTL을 이용하여 메모리 카드(2200) 내에서 플래시 조각 모음이 수행되도록 할 수 있다. 도 18에 도시된 메모리 카드 시스템은 위에서 설명한, 호스트에 의한 플래시 조각 모음과, 메모리 카드에 의한 플래시 조각 모음을 모두 지원할 수 있다.
도 19는 본 발명의 실시 예에 따른 플래시 조각 모음을 솔리드 스테이트 드라이브(SSD)에 적용한 예를 보여준다. 도 19를 참조하면, SSD 시스템(3000)은 호스트(3100)와 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(signal connector, 3231)를 통해 호스트(3100)와 신호를 주고 받으며, 전원 커넥터(power connector, 3221)를 통해 전원을 입력받는다. SSD(3200)는 복수의 불휘발성 메모리 장치(3201~320n), SSD 컨트롤러(3210), 그리고 보조 전원 장치(3220)를 포함한다.
복수의 불휘발성 메모리 장치(3201~320n)는 SSD(3200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리 장치(3201~320n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(3200)는 주로 플래시 메모리(Flash memory)를 사용하고 있다.
복수의 불휘발성 메모리 장치(3201~320n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(3210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다. 이때 플래시 조각 모음은 복수의 메모리 블록을 하나로 연결하는 슈퍼 블록 형태로 수행되거나, 복수의 페이지를 하나로 연결하는 슈퍼 페이지 형태로 수행될 수 있다.
SSD 컨트롤러(3210)는 신호 커넥터(3231)를 통해 호스트(3100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(3210)는 호스트(3100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. SSD 컨트롤러(3210)의 내부 구성은 도 20을 참조하여 상세하게 설명된다.
보조 전원 장치(3220)는 전원 커넥터(3221)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3220)는 호스트(3100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(3220)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3220)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
도 20은 도 19에 도시된 SSD 컨트롤러(3210)의 구성을 예시적으로 보여주는 블록도이다. 도 20을 참조하면, SSD 컨트롤러(3210)는 NVM 인터페이스(3211), 호스트 인터페이스(3212), ECC(3213), 중앙 처리 장치(CPU, 3214), 그리고 버퍼 메모리(3215)를 포함한다.
NVM 인터페이스(3211)는 버퍼 메모리(3215)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(3211)는 불휘발성 메모리 장치(3201~320n)로부터 읽은 데이터를 버퍼 메모리(3215)로 전달한다. 여기에서, NVM 인터페이스(3211)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, SSD 컨트롤러(3210)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.
호스트 인터페이스(3212)는 호스트(3100)의 프로토콜에 대응하여 SSD(3200)와의 인터페이싱을 제공한다. 호스트 인터페이스(3212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(3100)와 통신할 수 있다. 또한, 호스트 인터페이스(3212)는 호스트(3100)가 SSD(3200)를 하드 디스크(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
중앙 처리 장치(3214)는 호스트(3100, 도 19 참조)로부터 입력된 신호(SGL)를 분석하고 처리한다. 중앙 처리 장치(3214)는 호스트 인터페이스(3212)나 NVM 인터페이스(3211)를 통해 호스트(3100)나 불휘발성 메모리(3201~320n)를 제어한다. 중앙 처리 장치(3214)는 SSD(3200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리 장치(3201~320n)의 동작을 제어한다.
버퍼 메모리(3215)는 호스트(3100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치로부터 읽은 데이터를 임시로 저장한다. 또한, 버퍼 메모리(3215)는 불휘발성 메모리 장치(3201~320n)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 버퍼 메모리(3215)에 저장된 메타 데이터나 캐시 데이터는 불휘발성 메모리 장치(3201~320n)에 저장된다. 버퍼 메모리(3215)에는 DRAM, SRAM 등이 포함될 수 있다.
도 19 및 도 20에 도시된 솔리드 스테이트 드라이브(3000)는 앞에서 설명한 바와 같이, 호스트(3100)에 의한 플래시 조각 모음과, SSD(3200)에 의한 플래시 조각 모음을 모두 지원할 수 있다.
도 21은 본 발명의 실시 예에 따른 플래시 조각 모음을 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다. 여기에서, 플래시 메모리 모듈(4100)은 퍼스널 컴퓨터(PC), 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 연결되어 사용될 수 있다.
도 21을 참조하면, 플래시 메모리 모듈(4000)은 메모리 시스템(4100), 전원 장치(4200), 보조 전원 장치(4250), 중앙처리장치(4300), 램(4400), 그리고 사용자 인터페이스(4500)를 포함한다. 도 21에 도시된 플래시 메모리 모듈(4000)은 앞에서 설명한 바와 같이, 호스트에 의한 플래시 조각 모음과, 플래시 메모리 모듈에 의한 플래시 조각 모음을 모두 지원할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000; 플래시 메모리 시스템 1100; 호스트
1110; 프로세싱 유닛 1120; 구동 유닛
1121; 애플리케이션 1122; 파일 시스템
1123; 장치 드라이버 1124; 호스트 메모리
1200: 플래시 저장 장치 1210; 플래시 메모리
1220; 버퍼 메모리 1230; 제어 유닛
1231; 중앙처리장치 1232; FTL
1233; 플래시 컨트롤러 1234; 버퍼 컨트롤러
2000; 메모리 카드 시스템 3000; SSD 시스템
4000; 플래시 메모리 모듈

Claims (20)

  1. 플래시 조각 모음을 지원하는 호스트; 및
    상기 호스트의 플래시 조각 모음 요청에 따라, 플래시 메모리의 조각난 블록들의 데이터를 플래시 메모리 관리 단위로 모아서 플래시 조각 모음을 수행하는 플래시 저장 장치를 포함하되,
    상기 호스트는 파일 시스템 블록 단위로 파일들을 관리하며 플래시 조각 모음을 위해 상기 파일 시스템 블록을 상기 플래시 메모리 관리 단위로 그룹화하는 파일 시스템을 운영하는 플래시 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 플래시 메모리 관리 단위는 메모리 블록인 것을 특징으로 하는 플래시 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 플래시 저장 장치는 상기 플래시 메모리에 저장된 조각난 파일들의 배열 순서에 관계없이 플래시 조각 모음을 수행하는 플래시 메모리 시스템.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 플래시 저장 장치는 상기 플래시 메모리의 논리 공간과 물리 공간 사이의 맵핑 동작을 수행하기 위한 플래시 변환 계층(FTL)을 운영하는 플래시 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 호스트는 상기 플래시 메모리 관리 단위로 모은 조각난 블록의 데이터를 저장하기 위한 호스트 메모리를 더 포함하는 플래시 메모리 시스템.
  7. 제 6 항에 있어서,
    상기 호스트는 읽기 명령을 이용하여 상기 플래시 메모리로부터 읽은 조각난 블록의 데이터를 상기 호스트 메모리에 저장하고, 쓰기 명령을 이용하여 상기 호스트 메모리에 저장된 데이터를 상기 플래시 메모리의 프리 블록에 쓰는 플래시 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 호스트는 데이터 무효화 명령을 이용하여 상기 플래시 메모리의 무효화된 블록을 프리 블록으로 변환하는 플래시 메모리 시스템.
  9. 제 5 항에 있어서,
    상기 호스트는 조각 모음 명령을 상기 플래시 저장 장치로 제공하고,
    상기 플래시 저장 장치는 상기 조각 모음 명령에 응답하여 자체적으로 플래시 조각 모음을 수행하고, 조각 모음 결과를 상기 호스트로 제공하는 플래시 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 파일 시스템은 상기 조각 모음 결과를 기반으로 상기 파일 시스템 블록을 업데이트 하는 플래시 메모리 시스템.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020100042077A 2009-10-27 2010-05-04 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 KR101638061B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100042077A KR101638061B1 (ko) 2009-10-27 2010-05-04 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
US12/912,997 US8626987B2 (en) 2009-10-27 2010-10-27 Flash memory system and defragmentation method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US25511909P 2009-10-27 2009-10-27
US61/255,119 2009-10-27
KR1020100042077A KR101638061B1 (ko) 2009-10-27 2010-05-04 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법

Publications (2)

Publication Number Publication Date
KR20110046233A KR20110046233A (ko) 2011-05-04
KR101638061B1 true KR101638061B1 (ko) 2016-07-08

Family

ID=43899350

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100042077A KR101638061B1 (ko) 2009-10-27 2010-05-04 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법

Country Status (2)

Country Link
US (1) US8626987B2 (ko)
KR (1) KR101638061B1 (ko)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429677B2 (en) * 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
US9015209B2 (en) 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US20100235473A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8463802B2 (en) * 2010-08-19 2013-06-11 Sandisk Il Ltd. Card-based management of discardable files
US8549229B2 (en) 2010-08-19 2013-10-01 Sandisk Il Ltd. Systems and methods for managing an upload of files in a shared cache storage system
US8788849B2 (en) 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
CN102096722B (zh) * 2011-03-21 2013-03-27 华为数字技术(成都)有限公司 文件存储方法和装置
JP2012221251A (ja) * 2011-04-08 2012-11-12 Toshiba Corp メモリシステムの制御方法、情報処理装置、及びプログラム
US8806263B2 (en) * 2011-08-26 2014-08-12 Micron Technology, Inc. Methods and apparatuses including a global timing generator and local control circuits
DE102012111829A1 (de) 2011-12-06 2013-06-06 Samsung Electronics Co., Ltd. Speichersysteme und Blockkopierverfahren davon
KR101893145B1 (ko) 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
US9740439B2 (en) 2011-12-23 2017-08-22 International Business Machines Corporation Solid-state storage management
KR20130084846A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9202577B2 (en) * 2012-03-30 2015-12-01 Intel Corporation Solid state drive management in power loss recovery
US8990477B2 (en) 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US20130339573A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Optimizing write performance to flash memory
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
TWI479315B (zh) * 2012-07-03 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103544118B (zh) * 2012-07-17 2016-09-14 群联电子股份有限公司 存储器储存装置、其存储器控制器与数据写入方法
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US8892815B2 (en) * 2012-09-13 2014-11-18 Sandisk Technologies Inc. Optimized fragmented block compaction with a bitmap
US9569113B2 (en) 2012-10-11 2017-02-14 SK Hynix Inc. Data storage device and operating method thereof
KR101992934B1 (ko) 2012-11-14 2019-06-26 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US20140173178A1 (en) * 2012-12-19 2014-06-19 Apple Inc. Joint Logical and Physical Address Remapping in Non-volatile Memory
US9842660B1 (en) 2012-12-28 2017-12-12 Virident Systems, Llc System and method to improve enterprise reliability through tracking I/O performance metrics in non-volatile random access memory
CN103914388A (zh) * 2012-12-28 2014-07-09 北京中电华大电子设计有限责任公司 Java卡系统堆碎片整理方法
US9286002B1 (en) 2012-12-28 2016-03-15 Virident Systems Inc. Dynamic restriping in nonvolatile memory systems
KR20140099737A (ko) 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
US9483494B1 (en) * 2013-03-14 2016-11-01 Emc Corporation Opportunistic fragmentation repair
US8996796B1 (en) 2013-03-15 2015-03-31 Virident Systems Inc. Small block write operations in non-volatile memory systems
US9135164B2 (en) 2013-03-15 2015-09-15 Virident Systems Inc. Synchronous mirroring in non-volatile memory systems
US10073626B2 (en) 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US9575982B1 (en) 2013-04-29 2017-02-21 Amazon Technologies, Inc. Size targeted database I/O compression
US20150026427A1 (en) * 2013-07-17 2015-01-22 Kabushiki Kaisha Toshiba Data reassign method and storage device
TWI514141B (zh) * 2013-08-08 2015-12-21 Phison Electronics Corp 記憶體位址管理方法、記憶體控制器與記憶體儲存裝置
CN104375945B (zh) * 2013-08-15 2018-03-13 群联电子股份有限公司 存储器地址管理方法、存储器控制器与存储器储存装置
US9436696B2 (en) * 2013-10-02 2016-09-06 International Business Machines Corporation Data fragmentation tuning and candidacy persistence
JP5877186B2 (ja) * 2013-11-01 2016-03-02 株式会社ソニー・コンピュータエンタテインメント 情報処理装置
US9852066B2 (en) 2013-12-20 2017-12-26 Sandisk Technologies Llc Systems and methods of address-aware garbage collection
US10169076B2 (en) * 2014-03-21 2019-01-01 International Business Machines Corporation Distributed batch job promotion within enterprise computing environments
KR102317599B1 (ko) * 2014-05-26 2021-10-26 삼성전자 주식회사 전자 장치 및 전자 장치의 단편화 분석 방법
KR20160061703A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 내부 카피 동작을 수행하는 메모리 장치
WO2016115737A1 (en) * 2015-01-23 2016-07-28 Hewlett-Packard Development Company, L.P. Aligned variable reclamation
TWI566182B (zh) * 2015-03-24 2017-01-11 群聯電子股份有限公司 儲存裝置管理方法與系統及其記憶體儲存裝置
US10108344B1 (en) * 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US9658794B2 (en) * 2015-05-08 2017-05-23 Sonicwall Inc. Two stage memory allocation using a cache
US10216418B2 (en) * 2015-06-01 2019-02-26 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US11042328B2 (en) * 2015-06-01 2021-06-22 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US11030156B2 (en) 2015-12-28 2021-06-08 Sandisk Technologies Llc Key-value store with partial data access
US10235079B2 (en) * 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
US9959058B1 (en) * 2016-03-31 2018-05-01 EMC IP Holding Company LLC Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives
US10430081B2 (en) 2016-06-28 2019-10-01 Netapp, Inc. Methods for minimizing fragmentation in SSD within a storage system and devices thereof
KR20180045087A (ko) 2016-10-24 2018-05-04 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI672590B (zh) * 2017-06-27 2019-09-21 慧榮科技股份有限公司 資料儲存裝置
US10310765B1 (en) * 2017-08-31 2019-06-04 Amazon Technologies, Inc. Record-oriented data storage for a distributed storage system
US10430330B2 (en) 2017-10-18 2019-10-01 Western Digital Technologies, Inc. Handling of unaligned sequential writes
US10387243B2 (en) * 2017-12-08 2019-08-20 Macronix International Co., Ltd. Managing data arrangement in a super block
CN110209489B (zh) * 2018-02-28 2020-07-31 贵州白山云科技股份有限公司 一种适用于内存页结构的内存管理方法及装置
KR102098240B1 (ko) * 2018-05-16 2020-04-08 주식회사 디에이아이오 비휘발성 메모리 시스템
CN110245119B (zh) * 2018-11-02 2023-01-31 浙江大华技术股份有限公司 一种文件整理方法及存储系统
CN113785536A (zh) 2019-05-23 2021-12-10 慧与发展有限责任合伙企业 用于在数据驱动的智能网络中促进跟踪器分组的系统和方法
US11449325B2 (en) 2019-07-30 2022-09-20 Sony Interactive Entertainment LLC Data change detection using variable-sized data chunks
US20210034583A1 (en) * 2019-07-30 2021-02-04 Sony Interactive Entertainment LLC Remote triggering of coalescing of data storage
US11307841B2 (en) 2019-07-30 2022-04-19 Sony Interactive Entertainment LLC Application patching using variable-sized units
US11262927B2 (en) 2019-07-30 2022-03-01 Sony Interactive Entertainment LLC Update optimization using feedback on probability of change for regions of data
TWI724550B (zh) * 2019-09-19 2021-04-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TWI760697B (zh) * 2020-02-19 2022-04-11 群聯電子股份有限公司 記憶體之資料整理方法、記憶體儲存裝置及記憶體控制電路單元
US11392327B2 (en) 2020-09-09 2022-07-19 Western Digital Technologies, Inc. Local data compaction for integrated memory assembly
CN112230855A (zh) * 2020-10-20 2021-01-15 英韧科技(上海)有限公司 固态硬盘及其读写方法
US11650932B2 (en) 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation
JP2022074450A (ja) * 2020-11-04 2022-05-18 キオクシア株式会社 メモリカード、メモリシステム、及びファイルの断片化解消方法
US11520695B2 (en) 2021-03-02 2022-12-06 Western Digital Technologies, Inc. Storage system and method for automatic defragmentation of memory
US11809327B2 (en) 2021-11-16 2023-11-07 Western Digital Technologies, Inc. Data auto-relocation in an integrated memory assembly
US11809736B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for quantifying storage fragmentation and predicting performance drop
US11809747B2 (en) 2021-12-21 2023-11-07 Western Digital Technologies, Inc. Storage system and method for optimizing write-amplification factor, endurance, and latency during a defragmentation operation
US11847343B2 (en) 2021-12-22 2023-12-19 Western Digital Technologies, Inc. Storage system and method for non-blocking coherent re-writes
CN115168298B (zh) * 2022-06-09 2023-01-31 荣耀终端有限公司 文件系统碎片化的评估方法及电子设备
US20240036739A1 (en) * 2022-07-26 2024-02-01 Silicon Motion, Inc. Method and apparatus for performing data fragmentation reduction control of memory device in predetermined communications architecture with aid of fragmentation information detection, and associated computer-readable medium

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04211844A (ja) * 1990-01-19 1992-08-03 Texas Instr Inc <Ti> ファイルシステムディフラグメント化装置及び方法
JPH08129509A (ja) 1994-11-01 1996-05-21 Canon Inc メモリ制御装置及び方法
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6205529B1 (en) * 1997-09-25 2001-03-20 Emc Corporation Method and apparatus for defragmenting a storage device using a copy function in the device control logic
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
JP4059002B2 (ja) 2001-06-13 2008-03-12 株式会社日立製作所 メモリ装置
GB2395302B (en) * 2002-11-13 2005-12-28 Advanced Risc Mach Ltd Hardware driven state save/restore in a data processing system
JP2005202942A (ja) 2003-12-16 2005-07-28 Matsushita Electric Ind Co Ltd 情報記録媒体、データ処理装置及びデータ処理方法
US7401174B2 (en) * 2003-12-16 2008-07-15 Matsushita Electric Industrial Co., Ltd. File system defragmentation and data processing method and apparatus for an information recording medium
US7536506B2 (en) * 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US7212440B2 (en) 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
JP5130646B2 (ja) 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
US7721059B2 (en) * 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
JP4127307B2 (ja) 2006-10-30 2008-07-30 ソニー株式会社 データ記憶装置、データ処理システム、データ処理方法及びデータ処理装置
JP5137413B2 (ja) 2006-11-28 2013-02-06 株式会社日立製作所 半導体記憶装置
KR100845552B1 (ko) 2006-12-18 2008-07-10 (재)대구경북과학기술연구원 Ftl의 어드레스 매핑 방법
JP2008158773A (ja) 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置およびメモリ管理方法
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
WO2008083001A1 (en) 2006-12-26 2008-07-10 Sandisk Corporation Managing a lba interface in a direct data file memory system
US7721040B2 (en) * 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
KR100923990B1 (ko) 2007-02-13 2009-10-28 삼성전자주식회사 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템
US8095723B2 (en) * 2007-02-16 2012-01-10 Electronics And Telecommunications Research Institute Log-based flash translation layer and operating method thereof
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US7725506B1 (en) * 2007-06-27 2010-05-25 Symantec Corporation Defragmentation in a virtual environment
TW200937276A (en) * 2007-10-05 2009-09-01 Diskeeper Corp Solid state drive optimizer
KR20090101673A (ko) 2008-03-24 2009-09-29 삼성전자주식회사 플래시 메모리 시스템
US8806271B2 (en) * 2008-12-09 2014-08-12 Samsung Electronics Co., Ltd. Auxiliary power supply and user device including the same
US20100185806A1 (en) * 2009-01-16 2010-07-22 Arvind Pruthi Caching systems and methods using a solid state disk

Also Published As

Publication number Publication date
KR20110046233A (ko) 2011-05-04
US20110099326A1 (en) 2011-04-28
US8626987B2 (en) 2014-01-07

Similar Documents

Publication Publication Date Title
KR101638061B1 (ko) 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
US11636032B2 (en) Memory system, data storage device, user device and data management method thereof
US10126959B2 (en) Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US8166233B2 (en) Garbage collection for solid state disks
US8898371B2 (en) Accessing logical-to-physical address translation data for solid state disks
US8166258B2 (en) Skip operations for solid state disks
US20110264884A1 (en) Data storage device and method of operating the same
US20140101377A1 (en) Solid state memory (ssm), computer system including an ssm, and method of operating an ssm
KR101893897B1 (ko) 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
US20220269602A1 (en) Storage device and storage system including the same
KR101747791B1 (ko) 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법
CN112306898A (zh) 存储设备、其操作方法及包括其的电子设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant