KR20090026941A - 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치 - Google Patents

복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치 Download PDF

Info

Publication number
KR20090026941A
KR20090026941A KR1020070092045A KR20070092045A KR20090026941A KR 20090026941 A KR20090026941 A KR 20090026941A KR 1020070092045 A KR1020070092045 A KR 1020070092045A KR 20070092045 A KR20070092045 A KR 20070092045A KR 20090026941 A KR20090026941 A KR 20090026941A
Authority
KR
South Korea
Prior art keywords
block group
block
access unit
map table
unit
Prior art date
Application number
KR1020070092045A
Other languages
English (en)
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 KR1020070092045A priority Critical patent/KR20090026941A/ko
Priority to US12/045,168 priority patent/US8332573B2/en
Publication of KR20090026941A publication Critical patent/KR20090026941A/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
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

본 발명은 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템(virtual file system)에서 대용량의 데이터를 고속으로 입출력하기 위해 수행하는 어드레스 맵핑과 관련된 메타데이터의 처리 시간을 감소시키는 방법에 관한 것으로, 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록(block)을 포함하는 블록 그룹(block group)을 결정하는 단계와 결정된 블록 그룹의 내부에 구비된 각각의 페이지(page)를 포함하는 액세스 유닛(access unit)을 결정하는 단계와 결정된 블록 그룹 및 액세스 유닛에 대하여 입출력되는 데이터의 어드레스를 맵핑하는 단계를 포함함으로써, 대용량 저장장치에서 고속 입출력의 병목 지점(bottle-neck)으로 작용할 수 있는 가상 파일 시스템의 어드레스 맵핑 처리 시간을 현저히 감소시키는 효과가 있다.

Description

복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및 그 장치{Method for address mapping in virtual file system embodied in storage device having a plurality of non-volatile data storage and apparatus thereof}
본 발명은 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템(virtual file system)에서 어드레스 맵핑(address mapping)을 수행하는 방법에 관한 것으로, 대용량의 데이터를 고속으로 입출력하기 위해 가상 파일 시스템에서 수행하는 어드레스 맵핑과 관련된 메타데이터의 처리 시간을 감소시키는 방법 및 장치에 관한 것이다.
최근 모바일 기기를 포함한 멀티미디어 장치는 주로 MP3 음향, 동영상 등의 매우 큰 크기의 멀티미디어 데이터를 저장하고 이를 사용자에게 제공하고 있다. 이러한 기기에서 사용되는 저장장치는 대규모의 저장공간을 제공하므로 데이터를 고속으로 읽고 쓸 수 있는 기능 또한 제공될 필요가 있다.
현재 비휘발성 데이터 저장장치 중 플래시 메모리는 저전력, 소형화, 적은 발열, 높은 안정성 등의 이유로 다양한 모바일 기기의 저장장치로 사용되고 있으 며, 사용자의 요구에 부합하여 하나의 메모리에 저장할 수 있는 공간의 크기 역시 플래시 메모리의 집적도 증가로 빠르게 증가하고 있다.
도 1은 종래의 단일 플래시 메모리 칩에서의 어드레스 맵핑 방법을 설명하기 위한 기능 블록도이다.
호스트 디바이스(110)가 플래시 메모리 디바이스(120)로 데이터의 입출력을 요청할 때에는 512 바이트(byte) 단위의 논리적 주소(logical address)를 함께 전달한다. 호스트 디바이스(110)가 사용하는 파일 시스템의 데이터 구조와 플래시 메모리 디바이스(120)에서 판독/기록(read/write)시에 사용하는 데이터 구조는 서로 상이하므로, 플래시 메모리 디바이스(120)는 가상 파일 시스템(virtual file system)으로서 플래시 변환 계층(FTL: Flash Translation Layer, 121)을 구비하여, 호스트 디바이스(110)로부터 전달받은 논리적 주소를 실제 데이터를 읽고 쓰는 주소인 물리적 주소(physical address)로 변환하는 작업을 수행한다. 상기 논리적 주소가 FTL에 의해 물리적 주소로 맵핑된 다음에, 플래시 메모리 컨트롤러(122)를 통하여 맵 테이블 데이터(map table data, 123-1, 123-2) 및 사용자 데이터(user data, 123-3)를 플래시 메모리(123)에 기록하거나 읽을 수 있다. 이러한 맵 테이블에는 블록(block) 단위의 데이터를 맵핑하는 블록 맵 테이블(123-1)과 각 블록 내의 64개의 페이지(page) 단위의 데이터를 맵핑하는 페이지 맵 테이블(123-2)이 있다. 일반적으로 상기 블록 맵 테이블(123-1)은 플래시 메모리(123) 내의 메타데이터 블록에 저장되며, 페이지 맵 테이블(123-2)은 사용자 데이터 블록 상의 여유 공간(spare area)에 저장된다.
도 1과 같이 실제 저장장치에 데이터를 쓰고 지우기 위해 논리적 주소를 물리적 주소로 변환하는 어드레스 맵핑 작업은 플래시 메모리 외에 다른 비휘발성 데이터 저장장치의 경우에도 적용되며, 따라서 이하 설명하는 내용은 비휘발성 데이터 저장장치에 대해 전반적으로 적용이 가능하다.
한편, 플래시 메모리는 일반적으로 느린 기록(write) 속도를 가지고 있으며, 이 시간 동안 컨트롤러가 대기 상태에 머무르지 않고 고속 데이터 입출력을 가능하게 하기 위하여 플래시 메모리 저장장치를 구성하는 다양한 하드웨어 아키텍처가 제안되고 있다.
도 2는 종래 기술에 따른, 플래시 메모리를 이용한 N-channel/ 4-way 방식의 하드웨어 아키텍처를 나타내는 도면이다.
도 2를 참조하면, 플래시 메모리 컨트롤러(210)와 각 채널당 4개의 플래시 메모리의 구성이 나타나 있다. 일반적인 플래시 메모리 저장장치는 저장 용량 증가와 데이터 입출력 성능을 향상시키기 위하여 그림과 같이 다수의 플래시 메모리 칩을 사용한다. 제1 채널(220)의 경우, 플래시 메모리에 기록(write) 동작, 즉 프로그래밍(programming)이 진행되는 시점에서 플래시 메모리 컨트롤러(210)의 대기 시간을 최소화하기 위하여 4개의 플래시 메모리(221 내지 224)가 시스템 버스에 의해 연결되어 인터리빙(interleaving) 기술을 적용하고 있다.
플래시 메모리에 대한 기록 동작은 i)기록할 데이터를 플래시 메모리에 구비된 페이지 버퍼로 이동하고, ii)페이지 버퍼에 로딩된 데이터를 플래시 메모리의 셀 어레이(cell array)로 기록하는 두 단계로 이루어진다. 이러한 두 단계의 과 정을 고속을 수행하기 위해, 플래시 메모리 저장장치는 단일 채널에 대하여 다수의 플래시 메모리 칩을 연결하여 플래시 메모리 컨트롤러의 제어를 받아 인터리빙 방식으로 데이터를 입출력한다. 현재 일반적인 플래시 메모리 표준에 따르면 단일 채널은 최대 4~5개의 플래시 메모리 칩을 사용하는 경우 더 이상 성능 향상을 기대하기 어렵게 되므로, 2의 지수승으로 주소 분배가 용이한 4-way 아키텍처가 주로 사용되고 있다.
이러한 플래시 메모리는 일반적으로 페이지(page) 단위로 읽기/쓰기가 이루어지며, 갱신을 위해 다시 기록하기 위해서는 먼저 다수의 페이지로 구성된 블록(block) 단위로 지우기(erase) 동작을 수행해야한다. 이러한 특징은 일반적인 저장장치와 다른 특성으로, 기존 파일시스템(file system)과의 호환성을 가지기 위하여 상기 언급한 FTL 이라는 특별한 소프트웨어(가상 파일 시스템)를 이용하여 플래시 메모리 저장장치를 관리하고 기존 파일시스템과의 호환성을 제공한다. 파일 시스템과의 호환성을 위한 가상 파일 시스템은 다른 비휘발성 데이터 저장장치의 경우에도 적용될 수 있다.
이러한 종래 기술의 노력에 힘입어, 대용량 플래시 메모리 저장장치에서 데이터를 입출력하기 위한 처리 속도가 하드웨어적인 측면에서는 이론적인 최대 속도에 가깝게 향상되었으나, 소프트웨어적인 측면에서는 여전히 보다 빠른 데이터 입출력 처리를 위한 알고리즘이 요구되고 있다.
구체적으로 살펴보면, 상기 설명한 하드웨어 아키텍처 구조에서 FTL은 파일시스템의 읽기/쓰기 요청에 대하여 각각의 플래시 메모리에 다양한 명령(command) 을 보내게 된다. 도 1에서 단일 플래시 메모리 칩을 사용하는 저장장치의 경우를 가정하면, 호스트 디바이스(110)의 데이터 기록 요청(write request)에 대하여 FTL이 하드웨어로 보내는 명령들은 맵 테이블의 판독/갱신(map table read/update), 블록 소거(block erase), 블록 병합(block merge) 등의 다양한 메타데이터에 대한 작업 명령(matadata commands)과 실제 요청한 사용자 데이터(user data)의 입출력을 위한 명령(data commands)으로서 서로 혼재되어 있다. 이러한 다양한 FTL의 작업들은 모두 사용자 데이터를 읽거나, 쓰고 지우기 위해 논리적 주소를 물리적 주소로 변환하는 어드레스 맵핑과 관련된다.
이러한 방식을 도 2와 같은 고속 데이터 입출력을 위하여 다수의 칩을 사용하는 플래시 메모리 저장장치에 적용하는 경우에는, 플래시 메모리 칩 디바이스(device) 또는 채널(channel) 단위로 다수의 독립적인 메타데이터가 존재하게 되고, 따라서 이러한 구조에서 파일시스템의 데이터 입출력 요청에 의해, FTL은 각각의 메타데이터에 대하여 서로 다른 명령을 지시하게 된다. 즉, 각각의 독립적인 FTL 메타데이터마다 서로 다른 메타데이터 명령 세트(metadata commands set)을 가지게 되며, 각각의 수행시간 역시 서로 상이하게 된다.
이렇게 FTL이 담당하는 명령의 단위가 증가함에 따라 FTL에서 어드레스 맵핑에 관련된 복잡도가 증가하게 된다. 이러한 FTL의 복잡도 증가로 인해, FTL의 코드 크기(code size)가 커지며, 메모리 사용량(memory usage)이 증가하고, 또한 CPU의 처리 시간(processing time)이 증가하는 등 리소스 사용량의 증가가 발생한다. FTL의 처리량 증가는 각각의 명령 이슈(issue)에 대하여 지연시간이 발생할 가능성 이 높아지고, 또한 사용자 데이터 입출력 명령이 특정 시점에 집중되어 호스트와 저장장치간의 대용량 데이터(burst data) 전송의 어려움이 발생할 수 있으며, 인터리빙(interleaving)으로 인한 성능 향상 효과를 저해하는 요인으로 작용할 수 있다. 결국 전체 시스템에서 FTL의 어드레스 맵핑을 처리하는 부분이 병목 지점(bottle-neck)으로 작용하게 되고, 이러한 어드레스 맵핑 처리에 소요되는 시간을 단축하기 위한 소프트웨어적인 새로운 알고리즘이 요구되고 있다.
따라서, 본 발명은 상기와 같은 문제점을 해결하기 위하여 고안된 것으로, 본 발명이 이루고자 하는 기술적 과제는 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템에서 어드레스 맵핑(address mapping)을 수행함에 있어서, 대용량의 데이터를 고속으로 입출력하기 위해 상기 어드레스 맵핑에 관련된 메타데이터의 처리 시간을 감소시키는 방법 및 그 장치를 제공하는 것이다.
상기 기술적 과제는 본 발명에 따라, 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템(virtual file system)에서 어드레스 맵핑(address mapping)을 수행하는 방법에 있어서, 상기 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록(block)을 포함하는 블록 그룹(block group)을 결정하는 단계와; 상기 결정된 블록 그룹의 내부에 구비된 각각의 페이지(page)를 포함하는 액세스 유닛(access unit)을 결정하는 단계와; 상기 결정된 블록 그룹 및 액세스 유닛에 대하여 입출력되는 데이터의 어드레스를 맵핑하는 단계를 포함하는 것을 특징으로 하는 어드레스 맵핑 방법에 의해 해결된다.
상기 블록 그룹은 상기 복수개의 비휘발성 데이터 저장매체에 각각 구비된 복수개의 블록 중에서 동일한 블록 번호를 갖는 복수개의 블록을 포함하며, 상기 액세스 유닛은 상기 블록 그룹 내에서 동일한 오프셋을 갖는 복수개의 페이지를 포함하는 것이 바람직하다.
상기 블록 그룹을 결정하는 단계는, 상기 블록 그룹 및 상기 블록 그룹에 포함되는 상기 복수개의 블록 사이의 관계를 나타내는 블록 그룹 맵 테이블(block group map table)을 저장하는 단계를 포함하는 것이 바람직하다.
상기 블록 그룹 맵 테이블은, 상기 블록 그룹의 번호 및 상기 블록 그룹에 해당하는 적어도 하나 이상의 상기 블록 번호를 포함하는 것이 바람직하다.
상기 액세스 유닛을 결정하는 단계는, 상기 액세스 유닛 및 상기 액세스 유닛에 포함되는 상기 복수개의 페이지 사이의 관계를 나타내는 액세스 유닛 맵 테이블(access unit map table)을 저장하는 단계를 포함하는 것이 바람직하다.
상기 액세스 유닛 맵 테이블은, 상기 블록 그룹 맵 테이블에 포함된 상기 블록 번호를 구별하는 블록 오프셋(block offset) 및 상기 블록 번호에 해당하는 상기 블록 내의 복수개의 페이지를 구별하는 페이지 오프셋(page offset)을 포함하는 것이 바람직하다.
상기 블록 그룹 맵 테이블을 저장하는 단계는, 상기 블록 그룹 중 소정의 블록 그룹을 선택하여 해당 블록 그룹에 상기 블록 그룹 맵 테이블을 저장하며, 상기 액세스 유닛 맵 테이블을 저장하는 단계는, 상기 블록 그룹 내의 상기 액세스 유닛에 존재하는 여유 공간(spare area)에 상기 액세스 유닛 맵 테이블을 저장하는 것이 바람직하다.
상기 블록 그룹은 상기 입출력되는 데이터의 소거(erase) 단위 및 상기 가상 파일 시스템으로부터 상기 복수개의 블록에 대하여 소거의 명령(command)이 동시에 전달되는 단위이며, 상기 액세스 유닛은 상기 데이터의 판독/기록(read/write) 단 위 및 상기 복수개의 페이지에 대하여 판독/기록의 명령이 동시에 전달되는 단위인 것이 바람직하다.
상기 복수개의 비휘발성 데이터 저장매체는 복수개의 플래시 메모리이며, 상기 가상 파일 시스템은 플래시 변환 계층(Flash Translation Layer: FTL)인 것이 바람직하다.
한편, 본 발명의 다른 분야에 따르면 상기 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템상에서 어드레스 맵핑을 수행하는 장치에 있어서, 상기 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록을 포함하는 블록 그룹을 결정하는 블록 그룹 처리부와; 상기 결정된 블록 그룹의 내부에 구비된 각각의 페이지를 포함하는 액세스 유닛을 결정하는 액세스 유닛 처리부와; 상기 결정된 블록 그룹 및 액세스 유닛에 대하여 데이터의 입출력 명령을 전달하는 디바이스 드라이버(device driver)를 포함하는 것을 특징으로 하는 어드레스 맵핑 장치에 의해서도 해결된다.
상기 블록 그룹 처리부는, 상기 블록 그룹 및 상기 블록 그룹에 포함되는 상기 복수개의 블록 사이의 관계를 나타내는 블록 그룹 맵 테이블(block group map table)을 저장하는 제1 맵 테이블 저장부를 포함하는 것이 바람직하다.
상기 액세스 유닛 처리부는, 상기 액세스 유닛 및 상기 액세스 유닛에 포함되는 상기 복수개의 페이지 사이의 관계를 나타내는 액세스 유닛 맵 테이블(access unit map table)을 저장하는 제2 맵 테이블 저장부를 포함하는 것이 바람직하다.
나아가 본 발명은 상기 어드레스 맵핑 방법을 구현하기 위한 프로그램이 기 록된 컴퓨터로 읽을 수 있는 기록 매체를 포함하고, 상기 어드레스 맵핑 장치가 탑재된 메모리 디바이스를 포함한다.
본 발명에 의한 어드레스 맵핑 방법 및 그 장치에 따르면, 대용량 데이터의 고속 전송에서 입출력 처리율(I/O throughput)이 증가한다. 즉, 다수의 플래시 메모리 칩을 사용하는 대용량 저장장치에서 고속 입출력의 병목 지점(bottle-neck)으로 작용할 수 있는 FTL의 어드레스 맵핑 처리 시간을 현저히 감소시키는 효과가 있다.
아울러, 플래시 메모리 저장장치에서 FTL이 처리하는 맵 테이블이 블록 그룹 및 액세스 유닛 단위로 변경됨에 따라, 기존의 블록 및 페이지 단위의 맵 테이블에 비하여 엔트리(entry) 개수가 감소하므로 메모리 사용량이 감소한다. 또한 이로 인하여 맵 테이블의 기록/갱신(write/update) 회수도 줄어드는 효과가 있다.
그리고 다수의 플래시 메모리를 블록 그룹 및 액세스 유닛으로 연결하여 동일한 명령을 동시적으로 전송할 수 있으므로, 다수의 플래시 메모리 칩을 이용하여 정확한 인터리빙(interleaving) 방식을 구현할 수 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설 명한다. 이하에서 실시예는 비록 플래시 메모리를 기준으로 설명되고 있으나, 어드레스 맵핑 작업은 플래시 메모리 외에 다른 비휘발성 데이터 저장장치의 경우에도 적용되므로 이하 설명하는 내용은 비휘발성 데이터 저장장치에 대해 전반적으로 적용이 가능하다.
도 3은 본 발명의 일 실시예에 따른, 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법을 설명하기 위한 플로우 차트이다.
도 3을 참조하면, 본 발명에 따른 어드레스 맵핑 방법은 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록(block)을 포함하는 블록 그룹(block group)을 결정하는 단계(310)와 상기 결정된 블록 그룹의 내부에 구비된 각각의 페이지(page)를 포함하는 액세스 유닛(access unit)을 결정하는 단계(320)와 상기 결정된 블록 그룹 및 액세스 유닛에 대하여 입출력되는 데이터의 어드레스를 맵핑하는 단계(330)를 포함한다.
즉, 기존에 어드레스 맵핑 방법에서 플래시 메모리 칩과 같은 다수의 비휘발성 저장매체 각각에 대하여 블록과 페이지 단위로 어드레스 맵핑을 수행하는 것이 아니라, 복수개의 블록을 하나로 묶어 새로운 단위로서 블록 그룹(block group)을 정의하고 어드레스 맵핑을 수행한다.
아울러, 블록 그룹 내에 실제로 데이터가 기록되는 단위인 액세스 유닛(access unit)을 정의한다. 액세스 유닛은 각 블록 그룹 내에서, 복수개의 비휘발성 데이터 저장매체에 포함된 다수의 페이지로 구성된다.
이와 같은 블록 그룹 및 액세스 유닛의 데이터 구조는 이하 도 4에서 상세히 살펴본다.
도 4는 본 발명의 일 실시예에 따른, 4개의 플래시 메모리에 대하여 블록 그룹 및 액세스 유닛을 결정하는 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 제1 내지 제4 플래시 메모리(410 내지 440)가 도시되어 있다. 각각의 플래시 메모리는 다수의 블록으로 이루어져 있고, 각 블록이 64개의 페이지로 이루어져 있음은 상기에서 살펴본 바와 같다.
본 발명에서 FTL은 제1 내지 제4 플래시 메모리(410 내지 440) 각각을 독립적으로 다루지 않고, 제1 내지 제4 플래시 메모리(410 내지 440)에 걸쳐서 이들 블록 및 페이지 단위를 묶어서 사용한다.
즉, 도 4에 나타난 예시와 같이 제1 내지 제4 플래시 메모리(410 내지 440) 내에 존재하는 0번 블록(block 0)들을 묶어서 하나의 블록 그룹으로 정의한다. 이를 0번 블록 그룹(block group 0, 450)이라고 명명할 수 있다.
또한 0번 블록 그룹(450) 내에서, 복수개의 플래시 메모리(제1 내지 제4 플래시 메모리(410 내지 440))에 걸쳐 존재하는 0번 페이지(page 0)을 묶어서 액세스 유닛으로 정의한다. 이를 0-0번 액세스 유닛(access unit 0-0, 451)으로 명명한다.
이제 이러한 블록 그룹 및 액세스 유닛 단위로 FTL이 담당하는 각종 메타데이터 작업들, 예를 들어 맵 테이블의 판독/갱신(map table read/update), 블록 그룹 소거(block group erase), 블록 그룹 병합(block group merge) 등을 수행하게 된다. 따라서, 상기 블록 그룹은 입출력되는 데이터의 소거(erase) 단위가 되고, FTL로부터 소거의 명령(command)이 동시에 전달되는 단위가 된다. 또한 상기 액세스 유닛은 데이터의 판독/기록(read/write) 단위가 되고, FTL로부터 판독/기록의 명령이 동시에 전달되는 단위가 된다. 그리하여 플래시 메모리 저장장치에서 FTL이 상기 블록 그룹 및 액세스 유닛 단위로서 메타데이터 명령을 처리함으로써,기존의 블록 및 페이지 단위의 맵 테이블에 비하여 엔트리(entry) 개수가 감소하고 이로 인하여 맵 테이블의 기록/갱신 회수도 줄어들게 된다. 그리고 다수의 플래시 메모리를 블록 그룹 및 액세스 유닛으로 연결하여 동일한 명령을 동시적으로 전송할 수 있으므로, 보다 정확한 인터리빙 방식을 구현할 수 있게 된다.
여기서 단일(single) 블록 그룹은 저장장치 내의 모든 플래시 메모리를 포함할 필요는 없다. 또한 블록 그룹의 번호(block group number)와 블록 번호(block number)가 동일할 필요도 없다. 도 4에서 보면, 제1 내지 제4 플래시 메모리(410 내지 440) 내에 존재하는 1번 블록(block 1)을 묶어서 7번 블록 그룹(block group 7, 460)로 정의할 수 있다는 의미이다. 그러나, 블록 그룹 내에 속하는 블록들은 모두 동일한 블록 번호를 가져야한다. 예를 들어, 7번 블록 그룹(block group 7, 460) 내의 블록들은 모두 1번 블록(block 1)으로 동일한 블록 번호로 구성되어 있고, 3번 블록 그룹(block group 3, 470) 내의 블록은 모두 2번 블록(block 2)으로서 동일한 블록 번호로 구성된다.
한편, 액세스 유닛은 자신이 속한 블록 그룹 내에서 동일한 오프셋을 갖는 페이지로 구성된다. 예를 들어, 0번 블록 그룹(block group 0, 450) 내의 0-0번 액세스 유닛(access unit 0-0, 451)은 오프셋이 모두 0인 페이지들로 구성되어 있다. 물론, 액세스 유닛의 번호와 페이지의 오프셋이 일치할 필요는 없다. 즉, 0-0번 액세스 유닛(access unit 0-0, 451)이 오프셋이 3인 페이지들로 구성될 수도 있다.
이렇게 소거 및 판독/기록의 단위가 블록 그룹 및 액세스 유닛으로 변경되었으므로 이에 따라 맵 테이블의 구성도 수정될 필요가 있다. 따라서, 본 발명에서는 블록 그룹 및 상기 블록 그룹에 포함되는 복수개의 블록 사이의 관계를 나타내는 블록 그룹 맵 테이블(block group map table)을 저장하고, 액세스 유닛 및 상기 액세스 유닛에 포함되는 복수개의 페이지 사이의 관계를 나타내는 액세스 유닛 맵 테이블(access unit map table)을 저장, 관리한다.
블록 맵 테이블은 블록 그룹의 번호 및 상기 블록 그룹에 해당하는 적어도 하나 이상의 블록 번호를 포함한다. 도 4를 참고하여 예를 들면, 0번 블록 그룹(block group 0, 450)은 블록 번호가 0번인 블록들로 구성되어 있으므로 블록 맵 테이블은 (block group 0 -> block number 0)인 관계식을 포함할 수 있다. 나아가, 하나의 블록 그룹에는 2개 이상의 블록 번호가 할당될 수도 있다. 예를 들면, 7번 블록 그룹(block group 7, 460)에 블록 번호가 1번과 11번인 블록들이 할당될 수 있고, 이들의 관계를 나타내는 (block group 7 -> block number 1, block number 11)인 관계식이 블록 맵 테이블에 포함된다. 이는 하나의 블록 그룹의 저장 공간을 초과하여 데이터가 입력되는 경우나, 이미 저장되어 있는 블록 그룹 내에서 일부분 소량의 데이터를 갱신하는 경우 등에 유연하게 대처하기 위함이다.
액세스 유닛 맵 테이블은 블록 그룹 맵 테이블에 포함된 하나 이상의 블록 번호를 구별하는 블록 오프셋(block offset) 및 상기 블록 번호에 해당하는 블록 내에서 복수개의 페이지를 구별하는 페이지 오프셋(page offset)을 포함한다. 도 4에서, 7번 블록 그룹(block group 7, 460)에 블록 번호가 1번과 11번인 블록들이 할당되어 있고, 이들의 관계를 나타내는 (block group 7 -> block number 1, block number 11)인 관계식이 블록 맵 테이블에 포함되어 있다고 가정하자. 이때, 7-1번 액세스 유닛(access unit 7-1)이 블록 번호 1번(block number 1)에 존재하고 페이지 오프셋이 5인 경우라면, (access unit 7-1 -> block offset 0, page offset 5)와 같은 방식으로 나타낼 수 있다. 이때, 만약 블록 오프셋(block offset) 값이 1인 경우라면 1번 블록이 아닌 11번 블록을 가리키게 된다. 즉, (access unit 7-1 -> block offset 1, page offset 5)의 경우라면, 7-1번 액세스 유닛(access unit 7-1)은 블록 번호 11번에 존재하고, 페이지 오프셋이 5인 경우가 된다. 상기 액세스 유닛 맵 테이블은 이러한 관계식을 포함한다.
상기 블록 그룹 맵 테이블은 전체 블록 그룹들 중 일부 블록 그룹에 저장될 수 있고, 액세스 유닛 맵 테이블은 상기 블록 그룹 내에서 액세스 유닛 상에 존재하는 여유 공간(spare area)에 저장될 수 있다.
도 5는 본 발명의 다른 실시예에 따른, 어드레스 맵핑 방법을 이용하여 판독 명령(read command)을 수행하는 과정을 설명하기 위한 플로우 차트이다.
도 5를 참조하면, 먼저 호스트 디바이스로부터 논리적 주소 및 판독 명령을 수신한다(510). 수신된 논리적 주소에 대하여 이에 해당하는 블록 그룹 및 액세스 유닛을 판단하는데(520), 이를 위하여 우선 블록 그룹 맵 테이블 및 액세스 유닛 맵 테이블을 로딩하여(530), 테이블 상에서 맵핑되는 블록 그룹과 액세스 유닛을 찾아낸다. 만약 이전에 이미 해당 맵 테이블이 시스템 메모리상에 로딩되어 있었다면 이를 곧바로 이용할 수도 있을 것이다.
블록 그룹 맵 테이블 및 액세스 유닛 맵 테이블에서 맵핑된 물리적 주소를 찾은 후에는 이를 메모리 컨트롤러로 전달한다(540).
메모리 컨트롤러는 데이터의 입출력을 제어하는 처리부로서, 해당 물리적 주소에 저장된 데이터를 판독하여, 이를 상기 데이터의 판독을 요청한 상기 호스트 디바이스로 전송한다(550).
도 6은 본 발명의 또 다른 실시예에 따른, 어드레스 맵핑 방법을 이용하여 기록 명령(write command)을 수행하는 과정을 설명하기 위한 플로우 차트이다.
도 6을 참조하면, 도 5에서 살펴본 바와 같이 먼저 호스트 디바이스로부터 논리적 주소 및 판독 명령을 수신한다(610). 수신된 논리적 주소에 대하여 이에 해당하는 블록 그룹 및 액세스 유닛을 판단하는데(620), 이를 위하여 우선 블록 그룹 맵 테이블 및 액세스 유닛 맵 테이블을 로딩하여(630), 테이블 상에서 맵핑되는 블록 그룹과 액세스 유닛을 찾아낸다. 마찬가지로 이전에 이미 해당 맵 테이블이 시스템 메모리상에 로딩되어 있었다면 이를 곧바로 이용할 수도 있다.
다음으로 데이터를 기록하기 위해서 해당 블록 그룹 내에 충분한 유휴(valid) 액세스 유닛이 존재하는지를 판단한다(640).
데이터를 기록할 저장공간이 부족한 경우에는, 시스템의 다른 유휴 블록 번 호를 블록 그룹에 추가적으로 할당한다(650). 상기 살펴본 바와 같이, 하나의 블록 그룹에는 복수개의 블록 번호가 포함될 수 있다.
그런 다음, 할당된 블록 번호의 블록들이 먼저 소거(erase)되어 있는지를 판단한 후(660), 소거되어 있지 않은 블록이라면 해당 블록 그룹 단위로 소거 작업을 수행한다. 이는 데이터를 기록하기 전에 소거 작업을 선 처리해야하는 플래시 메모리의 특성으로 인한 것이다.
다음으로 블록 그룹 맵 테이블 및 액세스 유닛 맵 테이블에서 맵핑된 물리적 주소를 메모리 컨트롤러로 전달하고(680), 메모리 컨트롤러는 해당 물리적 주소에 요청된 데이터를 기록한다(690).
도 7은 본 발명의 또 다른 실시예에 따른, 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템상에서 어드레스 맵핑을 수행하는 장치를 나타내는 기능 블록도이다.
도 7을 참조하면, 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템상에서 어드레스 맵핑을 수행하는 장치(700)는 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록을 포함하는 블록 그룹을 결정하는 블록 그룹 처리부(710)와 결정된 블록 그룹의 내부에 구비된 각각의 페이지를 포함하는 액세스 유닛을 결정하는 액세스 유닛 처리부(720)와 상기 블록 그룹 및 액세스 유닛에 대하여 데이터의 입출력 명령을 전달하는 디바이스 드라이버(device driver, 730)를 포함한다.
상기 블록 그룹 처리부(710) 블록 그룹 및 상기 블록 그룹에 포함되는 복수 개의 블록 사이의 관계를 나타내는 블록 그룹 맵 테이블을 저장하는 제1 맵 테이블 저장부(미도시)를 포함할 수 있고, 또한 액세스 유닛 처리부(720)는 액세스 유닛 및 상기 액세스 유닛에 포함되는 복수개의 페이지 사이의 관계를 나타내는 액세스 유닛 맵 테이블을 저장하는 제2 맵 테이블 저장부(미도시)를 포함할 수 있다.
블록 그룹 처리부(710)는 액세스 유닛 처리부(720)로 블록 번호를 전달할 수 있으며, 액세스 유닛 처리부(720)는 해당 블록 번호에 기초하여 복수개의 페이지로 구성된 해당 액세스 유닛을 검색한다.
도 8은 본 발명의 또 다른 실시예에 따른, 어드레스 맵핑 장치가 구현된 플래시 메모리 디바이스를 나타내는 기능 블록도이다.
도 8을 참조하여 각 구성요소 간의 동작 과정을 살펴보면, 먼저 호스트 디바이스(800a)에서 데이터의 입출력을 요청하면, 플래시 메모리 디바이스(800b) 내에 구비된 호스트 인터페이스 컨트롤러(810)가 512 바이트 섹터 단위의 논리적 주소를 FTL(820)로 전달하고, 실제 사용자 데이터는 플래시 메모리 컨트롤러(830)로 전달한다.
FTL(820)는 어드레스 맵핑을 위해 상기 도 7에서 살펴본 바와 같이, 액세스 유닛 처리부(821)는 블록 그룹 처리부(822)로부터 블록 번호를 수신하고, 디바이스 드라이버(823)는 변환된 물리적 주소와 함께 입출력 명령을 플래시 메모리 컨트롤러(830)로 전송한다. 플래시 메모리 컨트롤러(830)는 호스트 인터페이스 컨트롤러(810)로부터 전달받은 사용자 데이터와 함께, 상기 물리적 주소에 해당하는 플래시 메모리(840)로 입출력을 명령한다.
한편, 상술한 본 발명의 어드레스 맵핑을 수행하는 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
또한, 상술한 바와 같이 본 발명에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 종래의 단일 플래시 메모리 칩에서의 어드레스 맵핑 방법을 설명하기 위한 기능 블록도이다.
도 2는 종래 기술에 따른, 플래시 메모리를 이용한 N-channel/ 4-way 방식의 하드웨어 아키텍처를 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따른, 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법을 설명하기 위한 플로우 차트이다.
도 4는 본 발명의 일 실시예에 따른, 4개의 플래시 메모리에 대하여 블록 그룹 및 액세스 유닛을 결정하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시예에 따른, 어드레스 맵핑 방법을 이용하여 판독 명령(read command)을 수행하는 과정을 설명하기 위한 플로우 차트이다.
도 6은 본 발명의 또 다른 실시예에 따른, 어드레스 맵핑 방법을 이용하여 기록 명령(write command)을 수행하는 과정을 설명하기 위한 플로우 차트이다.
도 7은 본 발명의 또 다른 실시예에 따른, 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템상에서 어드레스 맵핑을 수행하는 장치를 나타내는 기능 블록도이다.
도 8은 본 발명의 또 다른 실시예에 따른, 어드레스 맵핑 장치가 구현된 플래시 메모리 디바이스를 나타내는 기능 블록도이다.
상기 몇 개의 도면에 있어서 대응하는 도면 번호는 대응하는 부분을 가리킨 다. 도면이 본 발명의 실시예들을 나타내고 있지만, 도면이 축척에 따라 도시된 것은 아니며 본 발명을 보다 잘 나타내고 설명하기 위해 어떤 특징부는 과장되어 있을 수 있다.

Claims (20)

  1. 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템(virtual file system)에서 어드레스 맵핑(address mapping)을 수행하는 방법에 있어서,
    상기 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록(block)을 포함하는 블록 그룹(block group)을 결정하는 단계와;
    상기 결정된 블록 그룹의 내부에 구비된 각각의 페이지(page)를 포함하는 액세스 유닛(access unit)을 결정하는 단계와;
    상기 결정된 블록 그룹 및 액세스 유닛에 대하여 입출력되는 데이터의 어드레스를 맵핑하는 단계를 포함하는 것을 특징으로 하는 어드레스 맵핑 방법.
  2. 제1항에 있어서,
    상기 블록 그룹은 상기 복수개의 비휘발성 데이터 저장매체에 각각 구비된 복수개의 블록 중에서 동일한 블록 번호를 갖는 복수개의 블록을 포함하며,
    상기 액세스 유닛은 상기 블록 그룹 내에서 동일한 오프셋을 갖는 복수개의 페이지를 포함하는 것을 특징으로 하는 어드레스 맵핑 방법.
  3. 제2항에 있어서,
    상기 블록 그룹을 결정하는 단계는,
    상기 블록 그룹 및 상기 블록 그룹에 포함되는 상기 복수개의 블록 사이의 관계를 나타내는 블록 그룹 맵 테이블(block group map table)을 저장하는 단계를 포함하는 것을 특징으로 하는 어드레스 맵핑 방법.
  4. 제3항에 있어서,
    상기 블록 그룹 맵 테이블은,
    상기 블록 그룹의 번호 및 상기 블록 그룹에 해당하는 적어도 하나 이상의 상기 블록 번호를 포함하는 것을 특징으로 하는 어드레스 맵핑 방법.
  5. 제4항에 있어서,
    상기 액세스 유닛을 결정하는 단계는,
    상기 액세스 유닛 및 상기 액세스 유닛에 포함되는 상기 복수개의 페이지 사이의 관계를 나타내는 액세스 유닛 맵 테이블(access unit map table)을 저장하는 단계를 포함하는 것을 특징으로 하는 어드레스 맵핑 방법.
  6. 제5항에 있어서,
    상기 액세스 유닛 맵 테이블은,
    상기 블록 그룹 맵 테이블에 포함된 상기 블록 번호를 구별하는 블록 오프셋(block offset) 및 상기 블록 번호에 해당하는 상기 블록 내의 복수개의 페이지를 구별하는 페이지 오프셋(page offset)을 포함하는 것을 특징으로 하는 어드레스 맵핑 방법.
  7. 제6항에 있어서,
    상기 블록 그룹 맵 테이블을 저장하는 단계는, 상기 블록 그룹 중 소정의 블록 그룹을 선택하여 해당 블록 그룹에 상기 블록 그룹 맵 테이블을 저장하며,
    상기 액세스 유닛 맵 테이블을 저장하는 단계는, 상기 블록 그룹 내의 상기 액세스 유닛에 존재하는 여유 공간(spare area)에 상기 액세스 유닛 맵 테이블을 저장하는 것을 특징으로 하는 어드레스 맵핑 방법.
  8. 제7항에 있어서,
    상기 블록 그룹은 상기 입출력되는 데이터의 소거(erase) 단위 및 상기 가상 파일 시스템으로부터 상기 복수개의 블록에 대하여 소거의 명령(command)이 동시에 전달되는 단위이며,
    상기 액세스 유닛은 상기 데이터의 판독/기록(read/write) 단위 및 상기 복수개의 페이지에 대하여 판독/기록의 명령이 동시에 전달되는 단위인 것을 특징으로 어드레스 맵핑 방법.
  9. 제8항에 있어서,
    상기 복수개의 비휘발성 데이터 저장매체는 복수개의 플래시 메모리이며,
    상기 가상 파일 시스템은 플래시 변환 계층(Flash Translation Layer: FTL) 인 것을 특징으로 하는 어드레스 맵핑 방법.
  10. 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의 가상 파일 시스템상에서 어드레스 맵핑을 수행하는 장치에 있어서,
    상기 복수개의 비휘발성 데이터 저장매체의 내부에 구비된 각각의 블록을 포함하는 블록 그룹을 결정하는 블록 그룹 처리부와;
    상기 결정된 블록 그룹의 내부에 구비된 각각의 페이지를 포함하는 액세스 유닛을 결정하는 액세스 유닛 처리부와;
    상기 결정된 블록 그룹 및 액세스 유닛에 대하여 데이터의 입출력 명령을 전달하는 디바이스 드라이버(device driver)를 포함하는 것을 특징으로 하는 어드레스 맵핑 장치.
  11. 제10항에 있어서,
    상기 블록 그룹은 상기 복수개의 비휘발성 데이터 저장매체에 각각 구비된 복수개의 블록 중에서 동일한 블록 번호를 갖는 복수개의 블록을 포함하며,
    상기 액세스 유닛은 상기 블록 그룹 내에서 동일한 오프셋을 갖는 복수개의 페이지를 포함하는 것을 특징으로 하는 어드레스 맵핑 장치.
  12. 제11항에 있어서,
    상기 블록 그룹 처리부는,
    상기 블록 그룹 및 상기 블록 그룹에 포함되는 상기 복수개의 블록 사이의 관계를 나타내는 블록 그룹 맵 테이블(block group map table)을 저장하는 제1 맵 테이블 저장부를 포함하는 것을 특징으로 하는 어드레스 맵핑 장치.
  13. 제12항에 있어서,
    상기 블록 그룹 맵 테이블은,
    상기 블록 그룹의 번호 및 상기 블록 그룹에 해당하는 적어도 하나 이상의 상기 블록 번호를 포함하는 것을 특징으로 하는 어드레스 맵핑 장치.
  14. 제13항에 있어서,
    상기 액세스 유닛 처리부는,
    상기 액세스 유닛 및 상기 액세스 유닛에 포함되는 상기 복수개의 페이지 사이의 관계를 나타내는 액세스 유닛 맵 테이블(access unit map table)을 저장하는 제2 맵 테이블 저장부를 포함하는 것을 특징으로 하는 어드레스 맵핑 장치.
  15. 제14항에 있어서,
    상기 액세스 유닛 맵 테이블은,
    상기 블록 그룹 맵 테이블에 포함된 상기 블록 번호를 구별하는 블록 오프셋 및 상기 블록 번호에 해당하는 상기 블록 내의 복수개의 페이지를 구별하는 페이지 오프셋을 포함하는 것을 특징으로 하는 어드레스 맵핑 장치.
  16. 제15항에 있어서,
    상기 블록 그룹 처리부에 구비된 제1 맵 테이블 저장부는, 상기 블록 그룹 중 소정의 블록 그룹을 선택하여 해당 블록 그룹에 상기 블록 그룹 맵 테이블을 저장하며,
    상기 액세스 유닛 처리부에 구비된 제2 맵 테이블을 저장부는, 상기 블록 그룹 내의 상기 액세스 유닛에 존재하는 여유 공간에 상기 액세스 유닛 맵 테이블을 저장하는 것을 특징으로 하는 어드레스 맵핑 장치.
  17. 제16항에 있어서,
    상기 블록 그룹은 상기 입출력되는 데이터의 소거 단위 및 상기 가상 파일 시스템으로부터 상기 복수개의 블록에 대하여 소거의 명령이 동시에 전달되는 단위이며,
    상기 액세스 유닛은 상기 데이터의 판독/기록 단위 및 상기 복수개의 페이지에 대하여 판독/기록의 명령이 동시에 전달되는 단위인 것을 특징으로 어드레스 맵핑 장치.
  18. 제17항에 있어서,
    상기 복수개의 비휘발성 데이터 저장매체는 복수개의 플래시 메모리이며,
    상기 가상 파일 시스템은 플래시 변환 계층(FTL)인 것을 특징으로 하는 어드 레스 맵핑 장치.
  19. 제1항 내지 제9항 중 어느 한 항에 기재된 어드레스 맵핑 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  20. 제10항 내지 제18항 중 어느 한 항에 기재된 어드레스 맵핑 장치가 탑재된 메모리 디바이스.
KR1020070092045A 2007-09-11 2007-09-11 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치 KR20090026941A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070092045A KR20090026941A (ko) 2007-09-11 2007-09-11 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
US12/045,168 US8332573B2 (en) 2007-09-11 2008-03-10 Method and apparatus for performing address mapping in virtual file system of storage unit having a plurality of non-volatile data storage media

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070092045A KR20090026941A (ko) 2007-09-11 2007-09-11 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치

Publications (1)

Publication Number Publication Date
KR20090026941A true KR20090026941A (ko) 2009-03-16

Family

ID=40433103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070092045A KR20090026941A (ko) 2007-09-11 2007-09-11 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치

Country Status (2)

Country Link
US (1) US8332573B2 (ko)
KR (1) KR20090026941A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101355892B1 (ko) * 2013-01-15 2014-01-28 한밭대학교 산학협력단 실시간 단일 메모리 동시 입출력을 위한 영상데이터 처리방법
KR20150139408A (ko) * 2014-06-03 2015-12-11 삼성전자주식회사 이종의 저장 매체들을 이용하는 분산 파일 시스템을 구동하는 전자 시스템, 및 그것의 데이터 저장 방법 및 관리 방법

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
CN101241472B (zh) * 2008-03-07 2010-12-22 威盛电子股份有限公司 映射管理方法及***
CN101251788A (zh) * 2008-03-07 2008-08-27 威盛电子股份有限公司 储存单元管理方法及***
KR101674015B1 (ko) * 2009-06-23 2016-11-08 시게이트 테크놀로지 엘엘씨 데이터 저장 매체 액세스 방법과 그와 같은 기능을 갖는 데이터 저장 장치 및 기록 매체
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
US20120317377A1 (en) * 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
US9164887B2 (en) * 2011-12-05 2015-10-20 Industrial Technology Research Institute Power-failure recovery device and method for flash memory
US20130282992A1 (en) * 2011-12-22 2013-10-24 Intel Corporation Object-aware storage
KR20130084846A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US20130346673A1 (en) * 2012-06-25 2013-12-26 Yi-Chou Chen Method for improving flash memory storage device access
US10763752B1 (en) 2019-06-25 2020-09-01 Chengdu Monolithic Power Systems Co., Ltd. Zero-voltage-switching flyback converter
CN105745627B (zh) * 2013-08-14 2019-03-15 西部数据技术公司 用于非易失性存储器存储设备的地址转换
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
US10437486B2 (en) 2016-05-24 2019-10-08 Samsung Electronics Co., Ltd. Method and apparatus for tenant-aware storage sharing platform
US10474374B2 (en) 2016-05-24 2019-11-12 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
US11194517B2 (en) 2016-05-24 2021-12-07 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
US10439881B2 (en) 2016-05-24 2019-10-08 Samsung Electronics Co., Ltd. Method and apparatus for predicting storage distance
CN106815166A (zh) * 2016-12-27 2017-06-09 深圳市安云信息科技有限公司 一种双控制器之间传输文件的方法
US10545921B2 (en) * 2017-08-07 2020-01-28 Weka.IO Ltd. Metadata control in a load-balanced distributed storage system
KR20190113443A (ko) * 2018-03-28 2019-10-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102605609B1 (ko) * 2018-04-02 2023-11-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102608825B1 (ko) * 2018-04-26 2023-12-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
JP2020170477A (ja) * 2019-04-05 2020-10-15 株式会社バッファロー 記憶装置、その制御方法、及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP3942612B2 (ja) 2004-09-10 2007-07-11 東京エレクトロンデバイス株式会社 記憶装置、メモリ管理方法及びプログラム
KR20060087958A (ko) 2005-01-31 2006-08-03 엘지전자 주식회사 지우기 연산의 오버헤드 최소화를 위한 플래시 메모리관리 방법
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101355892B1 (ko) * 2013-01-15 2014-01-28 한밭대학교 산학협력단 실시간 단일 메모리 동시 입출력을 위한 영상데이터 처리방법
KR20150139408A (ko) * 2014-06-03 2015-12-11 삼성전자주식회사 이종의 저장 매체들을 이용하는 분산 파일 시스템을 구동하는 전자 시스템, 및 그것의 데이터 저장 방법 및 관리 방법
KR20200019653A (ko) * 2014-06-03 2020-02-24 삼성전자주식회사 이종의 저장 매체들을 이용하는 분산 파일 시스템을 구동하는 전자 시스템, 및 그것의 데이터 저장 방법 및 관리 방법
US11036691B2 (en) 2014-06-03 2021-06-15 Samsung Electronics Co., Ltd. Heterogeneous distributed file system using different types of storage mediums
US11940959B2 (en) 2014-06-03 2024-03-26 Samsung Electronics Co., Ltd. Heterogeneous distributed file system using different types of storage mediums

Also Published As

Publication number Publication date
US20090070547A1 (en) 2009-03-12
US8332573B2 (en) 2012-12-11

Similar Documents

Publication Publication Date Title
KR20090026941A (ko) 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치
US8364931B2 (en) Memory system and mapping methods using a random write page mapping table
KR101354152B1 (ko) 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치
US20230195654A1 (en) Namespace encryption in non-volatile memory devices
US8521949B2 (en) Data deleting method and apparatus
US9183136B2 (en) Storage control apparatus and storage control method
USRE49921E1 (en) Memory device and controlling method of the same
KR100526879B1 (ko) 플래쉬 파일 시스템
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
KR100630980B1 (ko) 메모리 카드 및 반도체 장치
KR100610647B1 (ko) 직접실행제어 기능과 스토리지 기능이 복합된 대용량저장장치
TWI473116B (zh) 多通道記憶體儲存裝置及其控制方法
US11630766B2 (en) Memory system and operating method thereof
JP2019020788A (ja) メモリシステムおよび制御方法
KR100533682B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법
US10360155B1 (en) Multi-tier memory management
JP2000067574A (ja) 半導体記憶装置
JPWO2005103903A1 (ja) 不揮発性記憶システム
JPH08314794A (ja) 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
KR20100116396A (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US20120191897A1 (en) Non-volatile memory system and management method thereof
US20160124639A1 (en) Dynamic storage channel
KR101374065B1 (ko) 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
KR20210050592A (ko) 저장 디바이스 상의 네임스페이스에서의 오류 검사
US20050169058A1 (en) Data management apparatus and method used for flash memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
J501 Disposition of invalidation of trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20140325

Effective date: 20141128