본 발명에 따른 메모리 시스템의 데이터 저장 방법은: (a) 데이터를 필터링하는 단계; (b) 상기 필터링에 근거하여 상기 데이터가 복수의 서로 다른 메모리 영역 중 어느 하나에 저장될지 여부를 판단하는 단계; 및 (c) 상기 판단 결과에 따라 상기 데이터를 저장하는 단계를 포함하되, 상기 (b) 단계 이후, 상기 데이터는 상기 판단 결과에 대한 정보를 포함한다.
실시예에 있어서, 상기 (a) 단계에서, 상기 데이터는 심볼을 기준으로 필터링된다.
실시예에 있어서, 상기 (a) 단계에서, 상기 입력되는 데이터는 상기 복수의 필터링 데이터로 필터링된다.
실시예에 있어서, 상기 (b) 단계에서, 상기 서로 다른 메모리 영역은 서로 다른 메모리 장치이다.
실시예에 있어서, 상기 서로 다른 메모리 장치는 플래시 저장 장치 및 HDD(Hard Disk Driver)이다.
실시예에 있어서, 상기 (b) 단계에서, 상기 서로 다른 메모리 영역은 하나의 메모리 장치에 포함되어 있다.
실시예에 있어서, 상기 메모리 장치는 하이브리드 HDD이다.
실시예에 있어서, 상기 메모리 장치는 낸드 플래시 메모리 장치이다.
실시예에 있어서, 상기 서로 다른 메모리 영역은 각각 SLC(Singl Level Cell) 영역 및 MLC(Multi Level Cell) 영역이되, 상기 SLC 영역은 데이터를 SLC 방식으로 프로그램하는 영역이고, 상기 MLC 영역은 데이터를 MLC 방식으로 프로그램하는 영역이다.
실시예에 있어서, 상기 (a) 단계에서, 상기 필터링 데이터는 상기 복수의 서로 다른 메모리 영역 중 어느 하나를 나타내는 태그를 덧붙히는 단계를 더 포함한다.
실시예에 있어서, 상기 (b) 단계에서, 상기 필터링 데이터는 상기 태그에 따라 상기 복수의 서로 다른 메모리 영역 중 어느 하나를 저장될지 판단된다.
본 발명에 따른 메모리 시스템은: 제 1 종류의 데이터를 저장하는 제 1 메모리 영역; 제 2 종류의 데이터를 저장하는 제 2 메모리 영역; 및 상기 제 1 및 제 2 메모리 영역으로부터 데이터를 입출력하되, 데이터를 상기 제 1 혹은 제 2 종류의 데이터로 필터링하여 상기 제 1 및 제 2 메모리 영역에 전송하는 호스트를 포함한다.
실시예에 있어서, 상기 호스트에서 상기 데이터는 심볼을 기준으로 필터링된다.
실시예에 있어서, 상기 제 1 및 제 2 메모리 영역은 서로 다른 메모리 장치이다.
실시예에 있어서, 상기 서로 다른 메모리 장치는 플래시 저장 장치 및 HDD(Hard Disk Driver)이다.
실시예에 있어서, 상기 서로 다른 메모리 영역은 하나의 메모리 장치에 포함되어 있다.
실시예에 있어서, 상기 메모리 장치는 하이브리드 HDD이다.
실시예에 있어서, 상기 메모리 장치는 낸드 플래시 메모리 장치이다.
실시예에 있어서, 상기 서로 다른 메모리 영역은 각각 SLC(Singl Level Cell) 영역 및 MLC(Multi Level Cell) 영역이되, 상기 SLC 영역은 데이터를 SLC 방식으로 프로그램하는 영역이고, 상기 MLC 영역은 데이터를 MLC 방식으로 프로그램하는 영역이다.
실시예에 있어서, 상기 호스트는 상기 데이터를 필터링할 때 상기 복수의 서로 다른 메모리 영역 중 어느 하나를 나타내는 태그를 상기 데이터에 덧붙히는 필터 드라이버를 더 포함한다.
실시예에 있어서, 상기 호스트는 상기 데이터에 덧붙혀진 상기 태그에 따라 상기 복수의 서로 다른 메모리 영역 중 어느 하나에 저장될지 판단한다.
실시예에 있어서, 상기 호스트는 상기 데이터를 필터링 할 때 상기 SLC 영역 혹은 MLC 영역 중 어느 하나를 나타내는 태그를 상기 데이터에 덧붙히는 필터 드라이버를 더 포함한다.
실시예에 있어서, 상기 데이터에 덧붙혀진 상기 태그에 따라 상기 필터링 데이터를 상기 SLC 영역 혹은 상기 MLC 영역에 저장시키는 메모리 제어기를 더 포함한다.
실시예에 있어서, 상기 SLC 영역에 저장되는 데이터는 시스템의 메타 파일 혹은 코드 데이터이다.
실시예에 있어서, 상기 메모리 시스템은 메모리 카드에 이용된다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.
도 2는 본 발명에 따른 메모리 시스템(200)을 보여주고 있다. 도 2를 참조하면, 메모리 시스템(200)은 호스트(210), 메모리 제어기(220) 및 플래시 메모리(230)을 포함하고 있다. 본 발명의 메모리 시스템(200)의 호스트(210)는 플래시 메모리(230)의 SLC(Single Level Cell) 영역(232) 혹은 MLC(Multi Level Cell) 영역(234)에 저장될 데이터를 각각 필터링하여 메모리 제어기(220)로 전달한다. 여기서 SLC 영역(232)은 SLC 방식으로 프로그램되는 메모리 영역을 말하고, MLC 영역(234)는 MLC 방식으로 프로그램되는 메모리 영역을 말한다. SLC 영역(232) 및 MLC 영역(234)은 고정되어 있을 수도 있고 유동적일 수도 있다.
호스트(210)는 프로세싱 유닛(211) 및 시스템 메모리(212)를 포함하고 있다. 프로세싱 유닛(211)은 중앙처리장치로 구현될 것이다. 프로세싱 유닛(211)은 호스트(210)의 전반적인 동작을 제어한다. 시스템 메모리(212)는 응용 프로그램(213), 파일 시스템(214), 필터 드라이버(215) 및 디바이스 드라이버(216)를 포함하고 있다.
파일 시스템(214)은 자료를 계층적으로 저장, 탐색, 접근, 조작하기 위한 추상적 자료구조의 집합으로 정의된다. 예를 들어, 개인용 컴퓨터 시스템을 구동하는 원도우즈(Microsoft Windows)는 FAT(File Allocation Table) 또는 NTFS(NT File System)을 파일 시스템(214)으로 사용하고 있다.
필터 드라이버(215)는 파일 시스템(214)을 경유한 데이터 중에서 빈번하게 억세스가 요구되는 데이터를 필터링한다. 아래에서 빈번하게 억세스가 요구되는 데이터를 메타 데이터(Meta Data)라 하겠다. 또한, 파일의 실제적인 정보를 나타내는 데이터를 파일 데이터라 하겠다. 메타 데이터에는 코드(Code) 및 원도우즈 메타 파일(Windows Meta File)이 포함된다. 여기서 코드는 파일 관련 정보, 확장자 정보 및 미러링을 통해 취할 수 있는 모든 파일의 정보를 포함하고 있다. 한편, 원도우즈 메타 파일은 마이크로 소프트의 윈도우즈 프로그램을 구동하는데 필요로 하는 데이터이다. 예를 들어, 'a.txt'파일의 경우, 이 파일과 관련된 정보 및 원도우즈를 운영하는 데 필요한 데이터는 메타 데이터이고, 'a.txt'의 실제적인 정보는 파일 데이터이다.
본 발명의 필터 드라이버(215)는 심볼(Symbol)을 이용하여 데이터를 필터링한다. 필터 드라이버(215)가 메타 데이터를 필텅링하기 위한 심볼에는 파일 이름, 확장자 정보, 미러링을 통해 취할 수 있는 모든 파일 정보 및 마이크로 소프트사의 윈도우즈의 경우 $으로 시작하는 메타 파일 심볼(Meta File Symbol) 등이 있다.
여기서 $으로 시작하는 메타 파일 심볼은 다음 표와 같다.
심볼 |
대상 |
역할여u |
$Mft |
MFT 파일 |
MFT 자신에 대한 파일 레코드 |
$MftMirr |
MFT 미러 파일 |
MFT의 앞쪽 몇 개에 대한 사본 |
$LogFile |
로그 파일 |
볼륨구조에 영향을 미치는 모든 작업에 대한 기록 |
$Root |
루트 정보 파일 |
루트에 저장된 파일과 디렉토리 목록 |
$Bitmap |
비트맵 |
볼륨 할당상태 기록 |
$Secure |
데이터 베이스 파일 |
볼륨 전역의 보안 서술자 데이터 베이스 |
$Boot |
부트 파일 |
부트 스트랩에 대한 파일 |
원도우즈의 메타 파일은 필터 드라이버(215)를 통해 호스트(200)의 램(도시되지 않음)와 같은 메모리에 임시 저장해두었다가 전송된다. 이를 통해 I/O 요청외에 불필요하게 플래시 메모리(230)에 억세스되는 것을 피하게 된다.
필터 드라이버(215)는 심볼을 근거로 데이터를 필터링하여 메타 데이터 및 파일 데이터에 각각 서로 다른 태그를 붙혀준다. 예를 들어, 메타 데이터는 SLC 태그를 덧붙혀주고, 파일 데이터는 MLC 태그를 덧붙혀준다. 여기서 태그는 소정 비트의 데이터에 하나의 비트를 추가하는 형태가 될 수 있다. 예를 들어, 메타 데이터는 SLC 태그로 '1' 비트를 추가하고, 파일 데이터는 MLC 태그로 '0'비트를 추가할 수 있다.
디바이스 드라이버(216)는 플래시 메모리(230)의 제어 및 인터페이스를 위해 사용된다. 프로세싱 유닛(211)은 디바이스 드라이버(216)를 이용하여 플래시 메모리(230)와의 인터페이스를 제어한다.
메모리 제어기(220) 및 플래시 메모리(230)는 하나의 메모리 카드 내에 포함될 수 있다. 이러한 메모리 카드에는 MMC(Multi Media Card), SD 카드, XD 카드, CF 카드, SIM 카드 등이 포함된다. 또한 이러한 메모리 카드는 컴퓨터, 노트북, 디지털 카메라, 휴대폰, MP3 플레이어, PMP 등과 같은 호스트(210)에 접속되어 있다.
메모리 제어기(220)는 플래시 메모리(230)의 제반 동작(예를 들면, 쓰기 혹은 읽기 동작)을 제어한다. 도 4를 참조하면, 메모리 제어기(220)는 펌웨어(222)를 포함하고 있다. 펌웨어(222)는 호스트(210)로부터 전달된 태그가 붙여진 데이터를 보고, 해당 데이터를 SLC 방식 혹은 MLC 방식으로 플래시 메모리(230)에 프로그램 시킨다. 예를 들어, 메타 데이터의 경우, 펌웨어(222)는 SLC 태그에 근거하여 메타 데이터를 SLC 방식으로 플래시 메모리(230)에 프로그램시킨다. 한편, 파일 데이터의 경우, 펌웨어(222)는 MLC 태그에 근거하여 파일 데이터를 자동으로 MLC 방식으로 플래시 메모리(230)에 프로그램시킨다.
플래시 메모리(230)는 메모리 셀 어레이(도시되지 않음)을 포함하고 있다. 메모리 셀 어레이는 SLC 영역(232) 및 MLC 영역(234)을 포함하고 있다. 여기서 SLC 영역(232)는 상술된 바와 같이 SLC 방식으로 프로그램되는 영역이고, MLC 영역(234)은 MLC 방식으로 프로그램되는 영역이다. MLC 방식에는 하나의 메모리 셀이 2비트를 저장할 수 있는 2비트 MLC 방식, 3비트를 저장할 수 있는 3비트 MLC 방식 및 4비트를 저장할 수 있는 4비트 MLC 방식 등이 있다.
한편 SLC 영역(232) 및 MLC 영역(234)은 플래시 메모리(230)에 고정되어 있을 수도 있고 혹은 유동적일 수도 있다. 즉, 영역이 고정된 경우에는, 플래시 메모리(230)의 메모리 셀 어레이 중에서 일정한 영역은 SLC 영역(232)으로 이용하고 나머지 영역을 MLC 영역으로 이용한다. 한편, 영역이 고정되지 않은 경우에는, 플래시 메모리(230)의 메모리 셀 어레이는 사용자의 필요에 따라 SLC 방식으로 프로그램할 수도 있고 MLC 방식으로 프로그램할 수도 있다.
본 발명의 메모리 시스템(200)의 호스트(210)는 데이터를 필터링하여 SLC 방식 혹은 MLC 방식으로 프로그램할지를 결정하게 된다. 호스트(210)는 필터링된 데이터에 적합한 SLC 태그 혹은 MLC 태그를 덧붙혀준다. 메모리 제어기(220)는 전달된 데이터에 붙혀진 SLC 태그 혹은 MLC 태그를 근거로 전송된 데이터를 SLC 방식으 로 프로그램할지 혹은 MLC 방식으로 프로그램할지 결정한다. 따라서 본 발명의 메모리 시스템(200)은 플래시 메모리(230)의 특성에 맞게 효율적으로 데이터를 관리할 수 있게 된다.
도 3은 본 발명의 메모리 시스템(200)의 파일 시스템의 아키텍쳐에 대한 제 1 실시예이다. 도 2 및 도 3를 참조하면, 데이터 저장방법이 설명될 것이다.
S105 단계에서는 저장하려는 파일(예를 들어, a.txt)로부터 심볼 정보(symbolic information)를 알아낸다. 좀더 자세하게 살펴보면, 사용자(user)가 플래시 메모리(230)에 파일(a.txt)를 저장하는 I/O 요청을 하게 되면, 필터 드라이버(212)는 저장하려는 파일(a.txt)을 필터링하여 심볼 정보(symbolic information)를 추출해 낸다
S110 단계에서는 파일 시스템 계층은 저장하려는 파일(a.txt)을 나타내는 논리 어드레스를 생성한다. 여기서 파일 시스템은 크게 위치 정보 영역(Location Information)과 데이터 영역(Data Area)로 구성된다. 위치 정보 영역에는 논리 어드레스를 포함하고 있으며, 데이터 영역에는 메타 데이터 및 파일 데이터를 포함하고 있다.
S120 단계에서 I/O 계층은 파일 시스템 계층에서 생성된 논리 어드레스에 해당하는 데이터를 어떠한 저장 장치로 저장할지를 결정하게 된다. 이러한 저장 장치는 다양하게 구현될 수 있다. 본 메모리 시스템(200)에서는 저장장치로 플래시 메모리(230)를 이용하고 있다.
S125 단계에서 필터 드라이버(212)는 S105 단계에서 알아낸 심볼 정보를 근 거하여 데이터를 플래시 메모리(230)의 SLC 영역(232) 혹은 MLC 영역(234)에 저장할지 판단한다. 또한 필터 드라이버(212)는 이러한 판단 결과에 따라 각각의 데이터에 적합한 SLC 태그 혹은 MLC 태그를 덧붙혀준다.
S130 단계에서 플래시 변환 계층(Flash Translation Layer)은 논리 어드레스을 플래시 메모리(230)에 적합한 물리적인 어드레스로 매핑시켜 준다. 동시에 플래시 변환 계층(FTL)은 입력되는 데이터의 태그에 따라 해당 데이터를 SLC 방식으로 프로그램할지 혹은 MLC 방식으로 프로그램할지 결정하게 된다. 도 2에 도시된 펌웨어(222)는 플래시 변환 계층에 포함된다.
플래시 변환 계층은 파일 시스템으로부터 제공되는 논리 어드레스를 플래시 메모리의 물리 어드레스로 변환하기 위한 어드레스 맵핑 모듈(도시되지 않음)을 포함하고 있다. 또한 소거 평준화 동작을 수행하는 소거 평준화 모듈(도시되지 않음)을 포함한다. 한편, 플래시 변환 계층은 플래시 메모리의 각 블럭들에 흩어져 있는 유효 데이터들을 모아서 하나의 블럭에 채우는 가비지 컬렉션(Garbage Collection) 동작을 지원하고 있다. 이밖에 플래시 변환 계층은 모듈 단위의 기능블럭들을 포함하며, 파일 시스템으로부터 읽기/쓰기 요청에 대응하는 효율적인 억세스 동작을 지원한다.
S140 단계에서 플래시 메모리(230)의 해당 물리적 어드레스에 S130 단계에서 결정된 SLC 방식 혹은 MLC 방식으로 해당 데이터가 프로그램된다.
도 4은 본 발명의 메모리 시스템(200)의 파일 시스템의 아키텍쳐에 대한 제 2 실시예이다. 도 2 및 도 4을 참조하면, 데이터 저장 방법이 설명될 것이다.
S210 단계에서, 사용자가 플래시 메모리(230)에 파일(a.txt)을 저장하는 I/O 요청을 하면, 파일 시스템 계층은 파일(a.txt)에 해당하는 논리 어드레스를 생성한다. 이때 동시에 S215 단계도 진행된다.
S215 단계에서, 필터 드라이버(212)는 파일 시스템 계층의 데이터로부터 심볼(Symbol)을 추출한다. 필터 드라이버(212)는 추출된 심볼에 따라 해당하는 데이터에 SLC 태그 혹은 MLC 태그를 붙여준다.
S220 단계에서, I/O 계층은 태크가 붙은 데이터와 해당 논리 어드레스를 어떠한 저장 장치에 저장할지 결정된다. 본 발명은 설명의 편의를 위하여 플래시 메모리(230)에 한정하였다. I/O 계층은 SLC 혹은 MLC 태그가 붙은 데이터를 메모리 제어기(220)로 전송한다.
S230 단계에서, 플래시 변환 계층은 논리 어드레스를 플래시 메모리(230)에 적합한 물리 어드레스로 매핑한다. 또한 플래시 변환 계층은 동시에 전송된 데이터의 태그에 따라 해당하는 물리 어드레스에 SLC 방식으로 프로그램할지 혹은 MLC 방식으로 프로그램할지 판단하게 된다.
S240 단계에서, 플래시 변환 계층의 판단 결과에 따라 플래시 메모리(230)에 해당 데이터를 SLC 방식 혹은 MLC 방식으로 프로그램시킨다.
본 발명의 메모리 시스템(200)은 비번하게 억세스되는 데이터를 필터링하여 플래시 메모리(130)의 SLC 영역(232)에 자동으로 프로그램하여 읽기 동작 성능을 향상시키게 된다.
도 2에 도시된 메모리 시스템(200)은 저장장치로 플래시 메모리 저장장치를 이용하고 있다. 그러나 반드시 그럴 필요는 없다. 본 발명의 메모리 시스템은 서로 다른 종류의 메모리 영역을 포함하는 저장장치에 대하여 필터링된 데이터를 저장할 수도 있다. 도 5은 본 발명의 또 다른 메모리 시스템(300)을 보여주고 있다. 도 5를 참조하면, 메모리 시스템(300)은 호스트(310) 및 저장장치(320)를 포함하고 있다. 호스트(310)는 도 2에 도시된 호스트(210)와 기능적으로 동일하게 구현될 것이다. 저장장치(320)는 서로 다른 종류의 제 1 메모리 영역(322) 및 제 2 메모리 영역(324)을 포함하고 있다. 여기서 제 1 메모리 영역(322)은 억세스와 신뢰성을 요구되는 종류의 메모리로서, 노아 플래시 메모리 혹은 피램을 이용할 수 있다. 한편, 제 2 메모리 영역(324)은 대용량의 데이터를 저장할 수 있는 메모리로서, 낸드 플래시 메모리를 이용할 수 있다. 덧붙혀, 제 1 메모리 영역(242)는 휘발성 메모리를, 제 2 메모리 영역(324)는 비휘발성 메모리를 이용할 수도 있다.
한편, 본 발명의 메모리 시스템은 저장장치로 하이브리드 하드디스크 드라이버(Hybrid HDD)를 이용할 수도 있다. 도 6은 하이브리드 HDD를 이용하는 본 발명의 메모리 시스템(400)이다. 도 6을 참조하면, 메모리 시스템(400)은 호스트(410) 및 하이브리드 HDD(420)를 포함하고 있다. 하이브리드 하드디스크 드라이버(420)는 플래시 메모리(422) 및 HDD(424)를 포함하고 있다. 플래시 메모리(422)는 호스트(410)을 운용하는데 필요한 부트 코드(boot code)가 저장된다. 호스트(410)의 필터 드라이버(415)는 데이터 중에서 호스트(410)를 운용하는데 필요한 부트 코드를 필터링하여 적합한 태그를 덧붙혀준다. 하이브리드 HDD(420)는 호스트(410)로부터 전달된 데이터에 붙혀진 태그를 보고, 플래시 메모리(422)에 저장할지 혹은 HDD(424)에 저장할지 판단한다.
본 발명의 메모리 시스템에 사용되는 저장장치는 서로 다른 종류의 메모리 영역을 포함하고 있는 HDD(Hard Disk Driver), DVD(Digital Versatile Disc), BD(Blu-ray Disc) 등에 적용될 수도 있다.
상술한 본 발명의 메모리 시스템은 하나의 저장 장치내에 서로 다른 메모리 영역들을 포함하고 있었다. 그러나 반드시 그럴 필요는 없다. 본 발명의 메모리 시스템은 서로 다른 저장장치로도 확장이 가능하다. 도 7은 본 발명에 또 다른 메모리 시스템(500)에 대한 실시예를 보여주고 있다. 도 7을 참조하면, 메모리 시스템(500)은 호스트(510), 플래시 저장장치(520) 및 HDD(530)을 포함하고 있다.
호스트(510)는 파일을 어떠한 저장장치(520)에 저장할지를 판단한다. 즉 호스트(510)의 필터 드라이버(515)는 데이터를 필터링하여 해당 데이터가 플래시 저장장치(520)에 저장될지 혹은 HDD(530)에 저장될지 판단한다. 호스트(510)의 I/O 계층(도시되지 않음)은 필터 드라이버(512)의 판단 결과에 따라 해당 데이터를 플래시 저장장치(520) 혹은 HDD(530)에 전송하게 된다. 여기서 해당 데이터에는 필터 드라이버(512)의 판단 정보가 포함되어 있다.
일례로, 필터 드라이버(515) 파일의 확장자에 따라 데이터 저장 장치를 구분할 수 있다. 파일의 확장자가 동영상 혹은 음원일 경우(예를 들어, MPG,AVI,MP3 등), 필터 드라이버(515)는 해당 파일을 플래시 메모리(520)에 저장하게 하고, 그 외의 파일은 HDD(530)에 저장하도록 판단하고, 적합한 판단 정보를 해당 데이터에 추가한다. I/O 계층(도시되지 않음)은 판단 정보에 따라 해당 데이터를 플래시 저 장치(520) 혹은 HDD(530)에 전송한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.