KR101497074B1 - 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 - Google Patents

불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 Download PDF

Info

Publication number
KR101497074B1
KR101497074B1 KR1020080056980A KR20080056980A KR101497074B1 KR 101497074 B1 KR101497074 B1 KR 101497074B1 KR 1020080056980 A KR1020080056980 A KR 1020080056980A KR 20080056980 A KR20080056980 A KR 20080056980A KR 101497074 B1 KR101497074 B1 KR 101497074B1
Authority
KR
South Korea
Prior art keywords
block
memory
sector
data
log
Prior art date
Application number
KR1020080056980A
Other languages
English (en)
Other versions
KR20090131146A (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 KR1020080056980A priority Critical patent/KR101497074B1/ko
Priority to US12/483,001 priority patent/US8392662B2/en
Priority to CN200910145882.XA priority patent/CN101639808B/zh
Publication of KR20090131146A publication Critical patent/KR20090131146A/ko
Application granted granted Critical
Publication of KR101497074B1 publication Critical patent/KR101497074B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2236Copy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

본 발명의 제 1 메모리와 제 2 메모리를 포함하는 메모리 시스템의 데이터 관리 방법은, (a) 상기 제 1 메모리에 섹터 단위로 데이터를 프로그램하는 단계; 그리고 (b) 상기 제 1 메모리에 프로그램된 복수의 섹터 데이터들을 서로 다른 우선 순위를 갖는 복수의 그룹들 단위로 상기 제 2 메모리의 로그 블록으로 플러시하는 단계를 포함한다.
상술한 플러시 동작을 통해서, 제 2 메모리에서 로그 블록의 요청에 따라 빈번하게 발생하는 머지 동작의 빈도를 낮출 수 있다. 따라서, 메모리 시스템의 속도 향상이 가능하고 소거 카운트를 낮춤으로써 메모리 시스템의 수명을 연장할 수 있다.

Description

불휘발성 메모리 시스템 및 그것의 데이터 관리 방법{NON-VOLATILE MEMORY SYSTEM AND DATA MANAGE METHOD THEREOF}
본 발명은 불휘발성 메모리 시스템에 관한 것으로, 더욱 상세하게는 서로 다른 프로그램 방식을 갖는 불휘발성 메모리 장치들을 사용하여 효율적으로 데이터를 기입할 수 있는 관리 방법에 관한 것이다.
일반적으로, 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능이 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 하드디스크 대신 플래시 메모리가 저장 장치로서 널리 사용되고 있다. 상술한 모바일 기기들은 다양한 기능들(예를 들면, 동영상 재생 기능)을 제공하기 위해서 점차 대용량의 저장 장치들을 필요로 하고 있다. 그러한 요구를 충족하기 위한 다양한 노력들이 행해져 오고 있다. 그러한 노력들 중 하나로서 하나의 메모리 셀에 2-비트 데이터 또는 그보다 많은 비트들을 저장하는 멀티 비트 메모리 장치가 활발히 개발되어 오고 있다. 하나의 메모리 셀에 멀티 비트 데이터가 저장되는 메모리 셀을 이하에서는 "MLC(Multi-Leveled Cell)"라 칭하기로 한다. 그에 반해 메 모리 셀당 1-비트의 데이터가 저장되는 메모리 셀을 "SLC(Single-Leveled Cell)"라 칭하기로 한다. MLC를 채택한 플래시 메모리 장치는 가용 용량의 증가는 가능하지만, 데이터의 기입에 소요되는 시간이 증가한다. 반면에, SLC를 채택한 플래시 메모리 장치는 가용 용량은 상대적으로 작지만, 데이터의 기입에 소요되는 시간이 짧아 MLC에 비하여 고속으로 동작한다. 또한, 기술의 진보에 따라 동일한 메모리 셀을 MLC 또는 SLC로 선택적으로 사용가능한 하이브리드 낸드 플래시 메모리(Hybrid NAND Flash Memory)가 소개되어 있다. 또한, 성능 향상과 비용 절감을 위하여 SLC 메모리 칩과 MLC 메모리 칩을 단일 패키지에 실장하여 속도와 용량의 장점들을 모두 얻는 기술들이 개발되어 오고 있다. 예를 들면, 쓰기 속도가 빠른 고가의 불휘발성 메모리(Ex, SLC)를 쓰기 속도가 느린 저가의 불휘발성 메모리(Ex, MLC)와 혼용하여 제품을 구성할 수 있다. 이러한 제품에서는, 고가의 불휘발성 메모리에 데이터를 어떻게 기록하고 관리하느냐가 전체 데이터 저장 장치의 성능을 좌우하게 된다. 대체로, 쓰기 속도가 빠른 불휘발성 메모리에는 업데이트가 빈번하고 크기가 작은 랜덤 데이터(Hot data)가 주로 기록됨으로써, 상대적으로 쓰기 속도가 느린 불휘발성 메모리의 성능 하락과 소거 횟수(Erase count)의 한계를 보완하고 있다.
최근에는 MLC 기술의 진보에 따라 3-비트 MLC 및 4-비트 MLC 등의 개발이 활발히 진행되고 있다. 그러나 하나의 메모리 셀에 저장되는 비트 수의 증가에 따라, 불휘발성 메모리의 소거 카운트(Erase count)가 감소하는 문제가 발생한다. 따라서, 소거 횟수를 최소화하기 위한 기술이 요구되고 있다.
플래시 메모리는 다른 메모리 소자와 비교할 때, 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있다. 그러나 플래시 메모리에 데이터를 기입하기 위해서는 소거 동작이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 크다는 특징이 있다. 이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(File System)을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 플래시 메모리의 삭제 연산을 감추기 위해, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(Flash translation layer; 이하, FTL이라 칭함)이 사용된다. FTL은, 플래시 메모리의 기입 동작시, 파일 시스템이 생성한 논리주소를 삭제 연산이 수행된 플래시 메모리의 물리 주소로 맵핑시켜 주는 역할을 수행한다. 현재까지 제안된 FTL 기법들 중에서 대표적인 것으로 로그 블록 사상법(Log block mapping)이 있다. 로그 블록 사상법은 한정된 수의 로그 블록을 쓰기 버퍼(Write buffer)로 이용하는 블록 사상법이다. 상술한 FTL의 어드레스 맵핑 기능으로 인해, 호스트는 플래시 메모리 장치를 하드디스크 드라이버(또는 SRAM)로 인식하고, 하드디스크 드라이버와 동일한 방식으로 플래시 메모리 장치를 액세스할 수 있게 된다.
이러한 FTL의 기능들 중 핵심적인 기능은 사상 기법에 관련된 것으로, 예시적인 사상 기법들이 U.S. Patent No. 5,404,485에 "FLASH FILE SYSTEM"이라는 제목으로, 그리고 U.S. Patent No. 6,381,176에 "METHOD OF DRIVING REMAPPING IN FLASH MEMORY AND FLASH MEMORY ARCHITECTURE SUITABLE THEREFOR"라는 제목으로 각각 게재되어 있으며, 이 출원의 레퍼런스에 포함된다.
그러나, 상술한 출원들은 플래시 메모리 장치에서의 로그 블록 사상법의 적용에 기술적 특징들을 국한하고 있다. 로그 블록 사상법을 적용하는 MLC 플래시 메모리 장치의 쓰기 속도를 증가시킬 수 있는 기술은 설명되어 있지 않다. 특히, 이종의 불휘발성 메모리들을 사용하는 메모리 시스템에서 과도한 머지(Merge) 횟수와 소거 횟수(Erase count)를 줄일 수 있는 기술은 소개하고 있지 않다. 따라서, MLC를 포함하는 플래시 메모리 장치에서 블록의 소거 횟수 감소 및 쓰기 속도의 증가라는 요구를 모두 만족시키기 위한 데이터 관리 방법이 절실한 실정이다.
본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 이종의 불휘발성 메모리들을 갖는 메모리 시스템에서 속도와 수명을 높일 수 있는 데이터 관리 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 특징에 따른 제 1 메모리와 제 2 메모리를 포함하는 메모리 시스템의 데이터 관리 방법은, (a) 상기 제 1 메모리에 섹터 단위로 데이터를 프로그램하는 단계; 그리고 (b) 상기 제 1 메모리에 프로그램된 복수의 섹터 데이터들을 서로 다른 우선 순위를 갖는 복수의 그룹들 단위로 상기 제 2 메모리의 로그 블록으로 플러시하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 다른 특징에 따른 제 1 메모리에 버퍼링된 복수의 섹터 데이터를 제 2 메모리로 이동하는 메모리 시스템의 데이터 플러 시 방법은, (a) 상기 복수의 섹터 데이터들을 섹터 번호를 스캐닝하여 선택된 어느 하나의 섹터 데이터와 동일한 상기 제 2 메모리의 타깃 블록을 갖는 섹터 데이터들을 검출하는 단계; 및 (b) 상기 검출된 섹터 데이터들을 상기 타깃 블록에 할당된 상기 제 2 메모리의 로그 블록으로 이동하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 정보처리 시스템은, 섹터 단위로 데이터를 제공하는 호스트; 상기 호스트로부터 제공되는 데이터를 순차적으로 저장하는 제 1 메모리; 플러시 동작시, 상기 제 1 메모리에 저장된 복수의 섹터 데이터들을 서로 다른 우선 순위를 갖는 복수의 그룹들 단위로 저장하는 제 2 메모리; 그리고 상기 호스트와 상기 제 1 메모리 및 상기 제 2 메모리 사이에서 인터페이싱을 제공하는 메모리 컨트롤러를 포함한다.
이상과 같은 본 발명에 따른 장치 및 방법에 따르면, 서로 다른 종류의 불휘발성 메모리들을 포함하는 메모리 시스템의 쓰기 속도를 높이고, 수명을 증가시킬 수 있다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 이종의 메모리 영역을 갖는 메모리 시스템으로 SLC 및 MLC를 포함하는 시스템을 한 예로서 사용할 것이다. 또한, 이동되는 데이터 단위를 섹터 단위로 가정하여 본 발명의 특징이 설명되었으나, 섹터 단위는 페이지 단위 또는 불휘발성 메모리 고유의 이동 단위들로 변경될 수 있다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 이종의 메모리 영역이 서로 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, PRAM과 플래시 메모리, NOR 플래시 메모리와 NAND 플래시 메모리 등과 같이 서로 다른 종류의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 기술적 특징을 간략하게 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 정보처리 시스템(10)은 호스트(20)와 메모리 카드(50)를 포함한다. 호스트(20)로부터의 명령어(CMD)에 응답하여 메모리 카드(50)는 호스트(20)로부터 제공되는 데이터(Data)를 일차적으로 제 1 불휘발성 메모리(30)에 저장한다. 그리고 플러시 동작(Flush operation)시, 제 1 불휘발성 메모리(30)에 순차적으로 저장된 섹터 단위의 데이터들(C, 2, A, 1, B)을 재배열 및 그룹화(G1, G2)하여 제 2 불휘발성 메모리(40)에 제공한다.
호스트(20)는 메모리 카드(50)를 저장 장치로 이용하는 장치로서, 예를 들어 개인용 컴퓨터, 디지털 카메라, PDA, 휴대용 미디어 재생장치 등을 포함한다. 호스트(20)는 사용자 응용 프로그램(User application program)과 호스트 드라이버(Host driver)를 실행할 수 있다. 사용자 응용 프로그램은 사용자가 지시하는 특정 기능을 수행한다. 호스트 드라이버(Host driver)는, 사용자 응용 프로그램이 메모리 카드(50)에 특정 데이터를 쓰거나 읽고자 할 때 호스트(10)와 메모리 카드(50) 사이에서 정해진 프로토콜에 따라 인터페이싱 한다. 대용량 저장 장치로서 대부분의 시스템에서 하드 디스크 드라이버(HDD)를 사용해 오고 있다. 따라서, 호스트(20)에서 메모리 카드(50)로 제공되는 데이터는 하드 디스크 드라이버(HDD)에 적용되는 방식에 따라, 예를 들면, 섹터(Sector) 단위로 제공된다. 호스트(20)는 섹터 단위의 데이터들 각각에 대응하는 논리적 섹터 번호(Logical Sector Number)를 이용하여 메모리 카드(50) 내에서의 데이터 이동을 제어한다. 따라서, 호스트(20)는 상술한 섹터 단위의 데이터들에 대한 그룹화 및 재배열을 논리적 섹터 번호의 조작을 통해 수행할 수 있다. 그러나, 섹터들의 그룹화 및 재배열 동작이 호스트(20)에서 수행되지 않고, 메모리 카드(50)에서 수행될 수도 있다.
메모리 카드(50)는 제 1 불휘발성 메모리(30)와 제 2 불휘발성 메모리(40)를 포함한다. 호스트(20)로부터 제공되는 데이터는 우선적으로 제 1 불휘발성 메모리(30)에 순차적으로 저장된다. 그리고, 플러시 시점이 되면, 제 1 불휘발성 메모리(30)에 저장된 데이터들은 제 2 불휘발성 메모리(40)에 플러시된다. 대용량 저장 매체에서 일반적으로 메모리 카드(50)의 주소 사상법(Address mapping)으로 로그 블록 사상법(Log block mapping)이 주로 사용된다. 제 1 불휘발성 메모리(30)에 입력되는 섹터들의 순서와 동일하게 플러시가 실행되면, 제 2 불휘발성 메모리(40)의 로그 블록들 사이에서는 과도한 머지 동작을 야기시킨다. 그러나 호스트(20) 측의 호스트 드라이버에 의해서, 또는, 메모리 카드(50)의 플래시 변환 계층(FTL)에 의해서 수행되는 본 발명의 데이터 관리 방법에 따르면, 머지 동작의 빈도를 줄이고 소거 카운트도 적정 수준 이하로 관리할 수 있다. 즉, 제 1 불휘발성 메모리(30)에 FIFO 방식으로 입력된 섹터 단위의 데이터들(C, 2, A, 1, B)이 그룹들(G1, G2)로 그룹화된다. 그룹화된 섹터 단위의 데이터들이 서로 다른 우선 순위를 가지는 그룹 단위로 제 2 불휘발성 메모리(40)에 플러시 됨으로써, 로그 블록의 확보를 위해 발생하는 머지 동작의 발생 빈도를 낮출 수 있다.
여기서, 로그 블록 사상법을 사용하는 메모리 카드에 대해서 언급되었으나, 본 발명의 이점은 다른 주소 사상법을 사용하는 메모리 카드에서도 적용될 수 있다.
도 2는 본 발명의 정보처리 시스템의 구성을 간략히 보여주는 블록도이다. 도 2를 참조하면, 상술한 섹터 단위의 데이터들을 서로 다른 우선 순위를 갖는 그룹들로 재구성하는 동작이 호스트(110)의 호스트 드라이버(120)에서 수행되는 실시예를 간략히 보여준다.
호스트 드라이버(120)는 사용자 응용 프로그램이 메모리 카드(50)에 특정 데이터를 쓰고자 할 때 메모리 카드(50)와 정해진 프로토콜에 따라 인터페이싱 한다. 본 발명의 호스트 드라이버(120)는 메모리 카드(160)와의 인터페이싱을 지원하기 위한 호스트(110) 측의 드라이버로서 제공될 수 있으나, 이러한 기능이 하드웨어로 구현될 수도 있음은 당업자에게 자명한 사항이다. 호스트 드라이버(120)는 메모리 카드(160)로 제공되는 데이터를 섹터 단위로 관리한다. 그리고 각각의 섹터들에 논리적 섹터 번호를 부여하여 섹터 단위의 데이터 교환을 지원한다. 그러나, 호스트 드라이버(120)는 메모리 카드(160) 내부의 하드웨어 정보에 대해서는 고려하지 않는다. 예를 들면, 호스트 드라이버(120)는 메모리 카드(160) 내에서 발생하는 주소 사상법이나, 웨어 레벨링(Wear leveling), 소거 카운트(Erase count), 머지 동작(Merge operation) 등에 대한 상태를 고려하지 않고 데이터를 제공한다. 따라서, 호스트 드라이버(120)는 제 1 불휘발성 메모리(140) 및 제 2 불휘발성 메모리(150)의 메모리 블록당 섹터 개수라든지, 현재 로그 블록에 대응하는 데이터 블록 번호 등과 같은 정보는 알 수 없다. 따라서, 호스트 드라이버(120)는 플러시되는 섹터 데이터들을 논리적 섹터 번호 40번 단위 또는 50번 단위로 묶어서 그룹화할 수 있다. 즉, 논리적 섹터 번호 40번 단위로 그룹화하는 경우, 논리적 섹터 번호가 섹터 0 내지 섹터 39 사이의 값을 갖는 섹터 데이터들은 하나의 그룹에 포함된다. 그리고 논리적 섹터 번호가 섹터 40 내지 79 사이의 값을 갖는 모든 섹터들은 또 다른 하나의 그룹을 형성한다. 하나의 그룹의 최대 크기를 결정짓는 섹터 크기는 바람직하게는 제 2 불휘발성 메모리(150)의 블록 크기를 기준으로 정하는 것이 이상적이다. 그러나, 호스트 드라이버(120)에서 이러한 정보를 획득할 수 없을 경우, 호스트 드라이버(120)에서 설정된 디폴트값으로 하나의 그룹의 최대 크기를 결정할 수 있다.
호스트 드라이버(120)는 플러시되는 복수의 섹터 단위 데이터들에 대해서 논리적 섹터 번호를 복수의 그룹들로 분류한다. 분류된 복수의 그룹들은 포함하는 섹터 단위 데이터의 수에 따라서 서로 다른 플러시 우선 순위를 갖는다. 또한, 동일 그룹 내에서도 논리적 섹터 번호에 따라 섹터 데이터들이 서로 다른 우선 순위를 가지고 플러시된다. 호스트 드라이버(120)의 제어 하에 수행될 수 있는 데이터 플러시 정책(Data flush policy)을 요약하면 다음과 같다.
(1) 논리적 섹터 번호를 그룹화하고, 크기가 더 큰 그룹(할당되는 섹터의 수가 많은)의 데이터 이동에 우선 순위를 부여한다.
(2) 동일 크기의 그룹 간에는 FIFO 방식으로 데이터를 이동한다.
(3) 그룹 내의 섹터들 간에는 작은 섹터 번호를 갖는 섹터 데이터를 우선적으로 이동한다.
메모리 카드(160)는 호스트 드라이버(120)에 의해서 결정되는 이동 순서에 따라 제 1 불휘발성 메모리(140)에 버퍼링되는 데이터를 제 2 불휘발성 메모리(150)에 이동시킨다. 메모리 컨트롤러(130)는 메모리 카드(160)와 호스트(110) 간의 데이터 교환을 제어한다. 제 1 불휘발성 메모리(140)는 고속의 쓰기 속도를 갖는 메모리 장치 또는 메모리 영역으로 구성될 수 있다. 제 2 불휘발성 메모리(150)는 대용량의 저장 매체로 사용되며, 제 1 불휘발성 메모리(140)에 버퍼링되는 데이터는 플러시 시점에 제 2 불휘발성 메모리(150)로 이동한다. 제 2 불휘발성 메모리(150)는, 특정 주소 사상법에 한정되지는 않지만, 설명의 편의를 위해서 로그 블록 사상법에 따르는 것으로 설명하기로 한다. 여기서, 호스트 드라이버(120)의 논리적 섹터 번호의 제어를 통한 플러시 동작을 설명하였으나, 본 발명은 이에 국한되지는 않는다. 즉, 호스트(110)로부터 제 1 불휘발성 메모리(130)로 입력되는 순서가 호스트 드라이버(120)에 의해서 그룹화된 순서로 이동하도록 제어됨으로써 본 발명의 목적이 달성될 수도 있다. 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로의 데이터 플러시 동작은 이하의 도면들에서 보다 상세하게 설명하기로 한다.
도 3은 본 발명의 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로의 데이터 플러시 동작을 간략히 보여주는 도면이다. 제 1 불휘발성 메모리(140)는 SLC 플래시 메모리로 그리고 제 2 불휘발성 메모리(150)는 MLC 플래시 메모리로 가정하여 본 발명의 기술적 특징이 설명될 것이다.
제 1 불휘발성 메모리(140)는 고속의 쓰기 속도를 가진다. 따라서, 입력되는 데이터가 신속하게 저장될 수 있다. 일반적으로 메타 데이터와 같은 갱신(Up-date)이 빈번한 데이터(Hot data)는 이러한 쓰기 버퍼와 같은 기능을 갖는 제 1 불휘발성 메모리(140)의 적용을 통해서 많은 이점을 얻는다. 제 1 불휘발성 메모리(140)의 데이터 영역은 복수의 섹터들이 순차적으로 프로그램되도록 배열되어 있다. 0번째 섹터 영역(141)에서부터 M-1번째 섹터 영역(145)까지 입력되는 데이터는 순차적으로 프로그램된다. 각각의 섹터 영역들(141~145)은 덮어쓰기가 불가능하다. 따라서, 모든 섹터 영역들(141~145)이 입력 데이터로 채워지는 시점에 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로의 데이터 플러시(Data flush)가 발생한다.
제 2 불휘발성 메모리(150)는 로그 블록 사상법에 따라서 메모리 블록 단위로 데이터가 관리된다. 제 2 불휘발성 메모리(150) 내에서 일종의 버퍼와 같은 기능을 갖는 로그 블록들(151, 152)과 로그 블록들로부터 유효한 데이터가 이동되는 데이터 블록들(153, 154, 155, 156)이 포함된다. 도시되지는 않았지만, 소거된 메모리 블록을 지칭하는 자유 블록(Free block)이 있어, 필요한 시점에 로그 블록(Log Block)으로 할당된다.
본 발명의 플러시 동작은 다음과 같다. 설명을 간단명료하게 하기 위하여 본 발명의 제 2 불휘발성 메모리(150)의 각 데이터 블록의 크기는 50 섹터의 크기에 대응하는 것으로 가정하기로 한다. 따라서, 플러시되는 섹터 데이터들은 논리적 섹터 번호 50번 단위로 묶어서 그룹화하는 것으로 가정한다. 즉, 논리적 섹터 번호 50번 단위로 그룹화하는 경우, 논리적 섹터 번호가 섹터 0 내지 섹터 49 사이의 값을 갖는 섹터 데이터들이 하나의 그룹을 구성한다. 그리고 논리적 섹터 번호가 섹터 50 내지 99 사이의 값을 갖는 모든 섹터들은 또 다른 하나의 그룹을 구성한다.
제 1 불휘발성 메모리(140)로부터 이동하는 플러시 데이터는 일차적으로 로그 블록들(151, 152) 중 어느 하나에 프로그램된다. 본 발명의 플러시 데이터는 복수의 그룹 단위로 이동한다. 그룹화를 위해서는, 제 2 불휘발성 메모리(150)의 데이터 블록의 크기를 참조하여 동일 그룹의 메모리 셀들이 정의된다. 예를 들면, 논리적 섹터 번호가 각각 1, 34, 159, 160, 188, 144인 섹터들(Sector 1, Sector 34, Sector 159, Sector 160, Sector 188, Sector 144)이 플러시되는 경우를 생각해보자. 섹터 1과 섹터 34는 제 2 불휘발성 메모리(150)의 블록 0(153)에 대응한다. 그리고, 섹터 159, 섹터 160, 섹터 188은 제 2 불휘발성 메모리(150)의 블록 3(156)에 대응한다. 그리고 섹터 144는 블록 2(155)에 대응한다. 따라서, 호스트 드라이버(120)의 데이터 플러시 정책(Data flush policy)에 따르면, 가장 많은 섹터들이 포함되는 데이터 블록 3에 대응하는 섹터들(Sector 159, Sector 160, Sector 188)이 제 1 그룹(Group 1)으로 선택된다. 그리고, 2개의 섹터들(Sector 1, Sector 34)은 제 2 그룹(Group 2)으로, 가장 작은 수의 섹터들을 포함하는 제 3 그룹(Group 3)에는 섹터 144(Sector 144)가 포함될 것이다. 플러시 동작은 제 1 그룹(Group 1)부터 우선적으로 진행된다.
이상의 논리적 섹터 번호의 그룹화 및 우선 순위의 설정은 호스트 드라이버(120)에서 일어난다. 그리고 실제 플러시 동작시에 호스트 드라이버(120)에 의해서 설정된 그룹 단위 및 우선 순위에 따라 제 1 불휘발성 메모리(140)에 버퍼링된 데이터들이 제 2 불휘발성 메모리(150)로 이동한다.
도 4는 상술한 호스트 드라이버(120)에 의해서 수행되는 논리적 섹터 번호의 그룹화 및 우선 순위의 할당 과정을 간략히 보여준다. 먼저, 제 1 불휘발성 메모리(140)에 버퍼링되는 섹터들의 입력 순서는 (53→159→1→188→54→111→162)이다. 그러나, 호스트 드라이버(120)에 의해서 제 1 그룹(Group 1)에 섹터 159, 섹터 162, 섹터 188이 할당된다. 그리고 제 2 그룹에는 섹터 53 및 섹터 54가 할당되며, 제 3 그룹에는 각각 1개의 섹터를 포함하지만 논리적 섹터 번호가 작은 섹터 1이 할당된다. 제 4 그룹에는 마지막 섹터 111이 할당될 것이다. 따라서, 플러시 순서는 제 1 그룹(Group 1)이 최우선 순위를 가지며, 제 1 그룹(Group 1) 내에서는 작은 섹터 번호를 가진 섹터들이 우선 순위를 가진다. 따라서, 섹터들의 플러시 순서는 (159→162→188→53→54→1→111)로 재구성된다.
이러한 플러시의 순서의 재구성은 호스트 드라이버(120)에서 이루어진다. 재 구성된 플러시 순서에 따라 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 섹터 데이터가 이동하게 될 것이다.
도 5a는 상술한 도 4의 플러시 순서에 따라 제 2 불휘발성 메모리(150)에서 수행되는 플러시 동작을 순차적으로 보여주는 흐름도이다. 도 5a를 참조하면, 제 2 불휘발성 메모리(150)의 로그 블록들(Log Block 0, Log Block 1)과 섹터 단위로 제공되는 플러시 데이터가 도시되어 있다. 간략한 설명을 위하여, 현재 로그 블록 0(Log Block 0)은 데이터 블록 0(Block 0)에, 그리고 로그 블록 1(Log Block 1)은 데이터 블록 3(Block 3)에 할당되어 있는 것으로 가정한다. 그리고 이동되는 섹터 데이터가 프로그램되는 로그 블록은 빗금으로 표시하기로 한다. 각 로그 블록 내부에 기재된 블록의 번호는 로그 블록이 할당되는 데이터 블록의 번호이다. 이러한 상태에서 섹터 수가 큰 그룹들의 섹터들부터 순차적으로 플러시 동작이 일어난다. 플러시 동작을 순차적으로 설명하면 다음과 같다.
먼저, 본 발명의 호스트 드라이버(120)에 의해서 재구성된 우선 순위에 따라, 제 1 그룹(Group 1)의 섹터 159가 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 이동한다. 섹터 159는 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 150 내지 199까지의 섹터들이 저장되는 데이터 블록 3(Block 3)에 대응된다. 로그 블록들 중 로그 블록 1(Log Block 1)이 데이터 블록 3(Block 3)에 할당되어 있으므로, 섹터 159는 로그 블록 1(Log Block 1)에 프로그램된다(S10). 이어서, 제 1 그룹(Group 1)의 섹터 162가 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 이동한다. 섹터 162는 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 150 내지 199까지의 섹터들이 저장되는 데이터 블록 3(Block 3)에 대응된다. 로그 블록들 중 로그 블록 1(Log Block 1)이 데이터 블록 3(Block 3)에 할당되어 있으므로, 섹터 162는 로그 블록 1(Log Block 1)에 프로그램된다(S20). 이어서, 제 1 그룹(Group 1)의 섹터 188이 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 이동한다. 섹터 188은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 150 내지 199까지의 섹터들이 저장되는 데이터 블록 3(Block 3)에 포함된다. 로그 블록들 중 로그 블록 1(Log Block 1)이 데이터 블록 3(Block 3)에 할당되어 있으므로, 섹터 188은 로그 블록 1(Log Block 1)에 프로그램된다(S30). 하나의 그룹 내에 포함되는 섹터 단위의 플러시 데이터들의 이동에 있어서, 추가적인 로그 블록 할당이 불필요하기 때문에 머지 동작이 일어나지 않는다.
제 1 그룹(Group 1)의 데이터 이동에 이어, 제 2 그룹(Group 2)에 대응하는 섹터들(Sector 53, Sector 54)에 대한 데이터 플러시 동작이 진행된다. 섹터 53이 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 이동한다. 섹터 53은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 50 내지 99까지의 섹터들이 저장되는 데이터 블록 1(Block 1)에 대응된다. 그러나, 현재의 로그 블록들 중 데이터 블록 1(Block 1)에 할당된 로그 블록은 존재하지 않는다. 따라서, 머지 동작을 수행하여 소거된 블록 하나를 로그 블록으로 확보해야 한다. 그래서, 현재 데이터 블록 0(Block 0)에 할당된 로그 블록 0(Log Block 0)을 데이터 블록 0(Block 0)과의 머지 동작을 통해서 소거된 프리 블록(Free block) 하나를 확보한다. 확보된 하나의 프리 블록을 데이터 블록 1(Block 1)에 할당되는 로그 블록 0(Log Block 0) 으로 지정한다. 이후에, 입력되는 섹터 53을 데이터 블록 1(Block 1)에 할당된 로그 블록 0(Log Block 0)에 프로그램한다(S40). 이어서, 섹터 53과 동일 그룹에 포함되는 섹터 54를 별도의 머지 동작 없이 로그 블록 0(Log Block 0)에 프로그램함으로써 제 2 그룹(Group 2)의 이동은 완료된다(S50).
제 2 그룹(Group 2)의 데이터 이동에 이어, 제 3 그룹(Group 3)에 대응하는 섹터 1에 대한 데이터 플러시 동작이 진행된다. 섹터 1은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 0 내지 49까지의 섹터들이 저장되는 데이터 블록 0(Block 0)에 대응된다. 그러나, 현재의 로그 블록들 중 데이터 블록 0(Block 0)에 할당된 로그 블록은 존재하지 않는다. 따라서, 머지 동작을 수행하여 소거된 블록 하나를 로그 블록으로 확보해야 한다. 그래서, 현재 데이터 블록 3(Block 3)에 할당된 로그 블록 1(Log Block 1)을 데이터 블록 3(Block 3)과의 머지 동작을 통해서 소거된 프리 블록(Free block) 하나를 확보한다. 확보된 하나의 프리 블록(Free block)을 데이터 블록 0(Block 0)에 할당되는 로그 블록 1(Log Block 1)로 지정한다. 이후에, 입력되는 섹터 1을 로그 블록 1(Log Block 1)에 프로그램함으로써 제 3 그룹(Group 3)의 데이터 이동은 완료된다(S60).
제 3 그룹(Group 3)의 데이터 이동에 이어, 제 4 그룹(Group 4)에 대응하는 섹터 111에 대한 데이터 플러시 동작이 진행된다. 섹터 111은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 100 내지 149까지의 섹터들이 저장되는 데이터 블록 2(Block 2)에 대응된다. 그러나, 현재의 로그 블록들 중 데이터 블록 2(Block 2)에 할당된 로그 블록은 존재하지 않는다. 따라서, 머지 동작을 수행하여 소거된 블록 하나를 로그 블록으로 확보해야 한다. 그래서, 현재 데이터 블록 0(Block 0)에 할당된 로그 블록 1(Log Block 1)을 데이터 블록 0(Block 0)과의 머지 동작을 통해서 소거된 프리 블록(Free block) 하나를 확보한다. 확보된 하나의 프리 블록을 데이터 블록 2(Block 2)에 할당되는 로그 블록 1(Log Block 1)로 지정한다. 이후에, 입력되는 섹터 111을 로그 블록 1(Log Block 1)에 프로그램함으로써 하나의 섹터만을 포함하는 제 4 그룹(Group 4)의 데이터 이동은 완료된다(S70).
이상에서 설명된 본 발명의 플러시 동작에 따르면, 동일 그룹 내의 섹터 데이터의 이동시에는 플러시 동작이 요구되지 않는다. 머지 동작은, 각 그룹들 사이에서 소거된 로그 블록에 대한 요구가 발생하는 시점에 발생하게 된다. 즉, 4개의 그룹에 대해서 플러시 동작이 진행되면, 3번의 머지 동작을 통해서 로그 블록의 확보가 이루어진다. 결국, 플러시 데이터의 그룹화를 통해서 새로운 로그 블록에 대한 요구 빈도를 줄일 수 있으며, 결과적으로 머지 횟수가 감소하고 소거 횟수도 감소하게 될 것이다.
도 5b는 그룹화를 하지 않는 경우의 플러시 동작 절차를 순차적으로 보여주는 흐름도이다. 도 5b를 참조하면, 제 2 불휘발성 메모리(150)의 로그 블록들(Log Block 0, Log Block 1)과 섹터 단위로 제공되는 플러시 데이터가 도시되어 있다. 간략한 설명을 위하여, 현재 로그 블록 0(Log Block 0)은 데이터 블록 0(Block 0)에, 그리고 로그 블록 1(Log Block 1)은 데이터 블록 3(Block 3)에 할당되어 있는 것으로 가정한다. 이러한 상태에서, 플러시 데이터는 제 1 불휘발성 메모리(140)에 입력된 순서대로 출력되어 제 2 불휘발성 메모리(150)에 이동한다. 데이터 플러시 동작을 순차적으로 설명하면 다음과 같다.
먼저, 최초로 제 1 불휘발성 메모리(140)에 입력된 섹터 53이 제 2 불휘발성 메모리(150)로 이동한다. 섹터 53은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 50 내지 99까지의 섹터들이 저장되는 데이터 블록 1(Block 1)에 대응된다. 그러나, 현재의 로그 블록들 중에는 데이터 블록 1(Block 1)에 할당된 로그 블록이 존재하지 않기 때문에, 로그 블록 0(Log Block 0)을 데이터 블록 0(Block 0)과 머지 시킨다. 이후 머지 동작을 통해서 확보되는 비어 있는 블록을 데이터 블록 1(Block 1)에 할당된 로그 블록 0(Log Block 0)으로 지정한다. 데이터 블록 1(Block 1)에 할당된 로그 블록 0(Log Block 0)가 확보된 이후에, 섹터 53이 로그 블록 0(Log Block 0)에 프로그램된다(S110). 이어서, 섹터 159가 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 이동한다. 섹터 159는 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 150 내지 199까지의 섹터들이 저장되는 데이터 블록 3(Block 3)에 대응된다. 로그 블록들 중 로그 블록 1이 데이터 블록 3(Block 3)에 할당되어 있으므로, 머지 동작 없이 섹터 159는 로그 블록 1에 프로그램된다(S120). 이어서, 섹터 1이 제 1 불휘발성 메모리(140)로부터 제 2 불휘발성 메모리(150)로 이동한다. 섹터 1은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 0 내지 49까지의 섹터들이 저장되는 데이터 블록 0(Block 0)에 대응된다. 현재의 로그 블록들 중 데이터 블록 0(Block 0)에 할당된 로그 블록은 존재하지 않는다. 그러므로 데이터 블록 1(Block 1)에 할당된 로그 블록 0(Log Block 0)을 데이터 블록 1(Block 1)과 머지 시킨다. 이후 머지 동작을 통해서 확보되는 비어 있는 블록을 데이터 블록 0(Block 0)에 할당되는 로그 블록 0(Log Block 0)으로 지정한다. 데이터 블록 0(Block 0)에 할당된 로그 블록 0(Log Block 0)의 확보 이후에, 섹터 1이 로그 블록 0(Log Block 0)에 프로그램된다(S130). 뒤이어, 섹터 188에 대한 데이터 이동이 실시된다. 섹터 188은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 150 내지 199까지의 섹터들이 저장되는 데이터 블록 3(Block 3)에 대응된다. 로그 블록들 중 로그 블록 1(Log Block 1)이 데이터 블록 3(Block 3)에 할당되어 있으므로, 머지 동작 없이 섹터 188은 로그 블록 1(Log Block 1)에 프로그램된다(S140). 이어서, 섹터 54의 이동이 진행된다. 섹터 54는 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 50 내지 99까지의 섹터들이 저장되는 데이터 블록 1(Block 1)에 대응된다. 현재의 로그 블록들 중 데이터 블록 1(Block 1)에 할당된 로그 블록은 존재하지 않는다. 그러므로 데이터 블록 3(Block 3)에 할당된 로그 블록 1(Log Block 1)을 데이터 블록 3(Block 3)과 머지시킨다. 이후 머지 동작을 통해서 확보되는 소거 상태의 프리 블록을 데이터 블록 1(Block 1)에 할당된 로그 블록 1(Log Block 1)로 지정한다. 데이터 블록 1(Block 1)에 할당된 로그 블록 1(Log Block 1)의 확보 이후에, 섹터 54는 로그 블록 1(Log Block 1)에 프로그램된다(S150). 그리고, 섹터 111의 이동이 진행된다. 섹터 111은 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 100 내지 149까지의 섹터들이 저장되는 데이터 블록 2(Block 2)에 대응된다. 현재의 로그 블록들 중 데이터 블록 2(Block 2)에 할당된 로그 블록은 존재하지 않는다. 그러므로 데이터 블록 1(Block 1)에 할당된 로그 블록 1(Log Block 1)을 데이터 블록 1(Block 1)과 머지시킨다. 이후 머지 동작을 통 해서 확보되는 비어 있는 블록을 데이터 블록 2(Block 2)에 할당된 로그 블록 1(Log Block 1)로 지정한다. 데이터 블록 2(Block 2)에 할당된 로그 블록 1(Log Block 1)의 확보 이후에, 섹터 111은 로그 블록 1(Log Block 1)에 프로그램된다(S160). 이어서, 섹터 162의 이동이 진행된다. 섹터 162는 제 2 불휘발성 메모리(150)에서 논리적 섹터 번호 150 내지 199까지의 섹터들이 저장되는 데이터 블록 3(Block 3)에 대응된다. 현재의 로그 블록들 중 데이터 블록 3(Block 3)에 할당된 로그 블록은 존재하지 않는다. 그러므로 데이터 블록 0(Block 0)에 할당된 로그 블록 0(Log Block 0)을 데이터 블록 0(Block 0)과 머지시킨다. 이후 머지 동작을 통해서 확보되는 비어 있는 블록을 데이터 블록 3(Block 3)에 할당된 로그 블록 0(Log Block 0)으로 지정한다. 데이터 블록 3(Block 3)에 할당된 로그 블록 0(Log Block 0)의 확보 이후에, 섹터 162는 로그 블록 0(Log Block 0)에 프로그램된다(S170). 도 5b의 플러시 데이터에 대한 그룹화 및 우선 순위의 재구성 없이 실행되는 데이터 플러시 동작에 따르면, 비어있는 블록의 확보를 위해 빈번한 머지 동작이 요구된다. 앞서 기술된 조건에서는 총 5회의 머지 동작이 소요되었고, 이는 소거 카운트를 증가시키고 쓰기 속도의 저하를 초래한다.
이상에서, 본 발명의 따른 데이터 플러시 동작을 도시한 도 5a와 플러시 데이터에 대한 그룹화 및 우선 순위의 재구성 없이 실시되는 데이터 플러시 동작을 도시한 도 5b가 각각 설명되었다. 본 발명의 경우, 3회의 머지 동작이 요구되었던 것에 반해 플러시 데이터에 대한 그룹화 및 우선 순위의 재구성이 없는 경우에는 총 5회의 머지 동작이 요구되었다. 따라서, 본 발명의 호스트 드라이버(120)에 의 한 플러시 데이터들의 논리적 섹터 번호의 그룹화 및 우선 순위 재구성을 통해서 소거 카운트를 줄이고, 쓰기 속도의 향상을 제공할 수 있다.
도 6은 본 발명의 다른 실시예에 따른 정보처리 시스템(200)을 간략히 보여주는 블록도이다. 도 6을 참조하면, 플러시 데이터에 대한 그룹화 및 재배열 동작이 호스트(210)에서 이루어지지 않고 메모리 카드(250)에서 수행된다. 메모리 카드(250)에는 메모리 카드(250)와 호스트(210) 사이에서 인터페이싱을 제공하기 위한 메모리 컨트롤러(220)가 포함된다. 또한, 메모리 컨트롤러(220)의 구성 또는 기능 중에 하나로 플래시 변환 계층(Flash Translation layer: FTL)이 있다. 본 발명의 다른 실시예에 따른 정보 처리 시스템(200)에서는 플러시 데이터에 대한 그룹화 및 재배열 동작이 메모리 컨트롤러(220)에서, 좀더 구체적으로는 플래시 변환 계층(FTL)에 의해서 수행된다.
호스트(210)는 도 2에서 설명된 플러시 데이터에 대한 그룹화 및 우선 순위 재구성은 수행하지 않는다. 따라서, 별도의 논리적 섹터 번호들에 대한 제어는 이루어지지 않는다. 일반적인 방식으로 쓰기 명령어와 섹터 단위의 쓰기 데이터를 메모리 카드(250)로 제공한다.
메모리 카드(250)는 플래시 변환 계층(FTL, 225)의 구성 또는 기능을 갖는 메모리 컨트롤러(220)와 제 1 불휘발성 메모리(230) 및 제 2 불휘발성 메모리(240)를 포함한다. 제 1 불휘발성 메모리(230) 및 제 2 불휘발성 메모리(240)의 구성 및 동작은 앞서 설명된 도 2와 동일하다. 반면에, 메모리 컨트롤러(220)가 본 발명의 플러시 데이터에 대한 그룹화 및 재배열 동작의 중추적인 기능을 담당한다. 메모리 컨트롤러(220)의 역할들 중 핵심적인 것이 플래시 변환 계층(FTL, 225)이다. 본 발명의 플래시 변환 계층(225)은 플러시 데이터에 대한 그룹화 및 우선 순위의 재구성 동작을 수행한다. 플래시 변환 계층(225)에 의해서 어드레스의 맵핑이 이루어지고, 웨어 레벨링, 가비지 컬렉션과 같은 기능들이 수행되기 때문에, 호스트(210)에서는 메모리 카드(250) 내부의 제반 정보를 실시간으로 획득할 수 없다. 따라서, 블록당 섹터 수, 현재 할당된 로그 블록 번호에 대한 정보와 같은 메모리 카드(250)의 정보를 정확히 알 수 있는 플래시 변환 계층(225)에서 플러시 데이터에 대한 그룹화 및 우선 순위의 재구성을 수행하는 것이 보다 효율적이다. 플래시 변환 계층(225)에 의해 수행되는 데이터 플러시 정책(Data flush policy)을 요약하면 다음과 같다.
(1) 제 1 불휘발성 메모리(230)에 저장된 섹터 단위의 플러시 데이터를 그룹화하고, 그룹의 크기 단위는 제 2 불휘발성 메모리(240)의 블록당 섹터 수를 기준으로 한다.
(2) 그룹들 중 현재 제 2 불휘발성 메모리(240)에 할당된 로그 블록에 저장될 수 있는 데이터를 최우선적으로 이동한다.
(3) 현재 할당된 로그 블록에 저장될 수 있는 그룹 이외의 그룹들에서는 섹터 수가 많은 그룹이 우선 순위를 갖는다.
(4) 동일 크기의 그룹 간에는 FIFO 방식으로 데이터를 이동한다.
(5) 그룹 내에서는 논리적 섹터 번호가 작은 섹터 데이터가 큰 섹터 번호에 우선 순위를 갖는다.
상술한 플래시 변환 계층(225)의 플러시 정책에 따라 현재 할당된 로그 블록에 프로그램될 수 있는 그룹의 데이터의 먼저 이동한다. 결과적으로, 플러시 동작에 따르는 머지의 빈도를 더 낮출 수 있다.
도 7은 플래시 변환 계층(225)의 플러시 정책에 따라 수행되는 플러시 동작을 간략히 보여주는 흐름도이다. 도 7을 참조하면, 플래시 변환 계층(225)에 의하여 현재 제 2 불휘발성 메모리(150)에서 로그 블록 0(Log Block 0)은 데이터 블록 0(Block 0)에, 그리고 로그 블록 1(Log Block 1)은 데이터 블록 3(Block 3)에 할당되어 있다. 이러한 상태에서, 플래시 변환 계층(225)은 플러시 데이터를 제 2 불휘발성 메모리(240)의 메모리 블록의 크기를 참조하여 복수의 섹터 그룹들로 나눈다. 플러시 데이터가 구성하는 복수의 섹터 그룹들은 앞서 설명된 도 4의 섹터 그룹들과 동일하다. 그러나, 우선 순위는 도 5의 플러시 절차와는 다르게 정해진다. 플래시 변환 계층(225)은 현재의 로그 블록에 대한 제반 할당 정보를 가지고 있다. 따라서, 플래시 변환 계층(225)은 현재 로그 블록들 각각이 할당된 데이터 블록들의 번호를 참조하여 복수의 섹터 그룹들 각각에 대한 우선 순위를 결정한다. 즉, 복수의 섹터 그룹들 중에서 로그 블록 0(Log Block 0)가 할당된 데이터 블록 0(Block 0)과 로그 블록 1(Log Block 1)이 할당된 데이터 블록 3(Block 3)에 대응하는 섹터 그룹을 우선적으로 이동한다. 좀더 자세히 설명하면 다음과 같다.
먼저, 현재 로그 블록 0(Log Block 0)가 할당된 데이터 블록 0(Block 0)에 대응하는 섹터 그룹은, 섹터 1이 포함된 제 3 그룹(Group 3)이다. 따라서, 별도의 머지 동작없이, 제 3 그룹(Group 3)의 섹터 1이 제 2 불휘발성 메모리(240)의 로그 블록 0(Log Block 0)으로 프로그램될 것이다(S210).
이어서, 현재 로그 블록 1(Log Block 1)이 할당된 데이터 블록 3(Block 3)에 대응하는 섹터 그룹의 이동이 실행된다. 데이터 블록 3(Block 3)에 대응하는 섹터 그룹은 제 1 그룹(Group 1)에 대응한다. 따라서, 별도의 머지 동작없이, 제 1 그룹(Group 1)의 섹터들(Sector 159, Sector 162, Sector 188)이 순차적으로 제 2 불휘발성 메모리(240)의 로그 블록 1(Log Block 1)에 프로그램될 것이다(S220, S230, S240).
제 1 그룹(Group 1)의 이동에 뒤따라, 섹터 수가 많을수록 높은 우선 순위를 갖는 플러시 정책에 따라 제 2 그룹(Group 2)의 데이터 이동이 실시된다. 제 2 그룹(Group 2)에 포함되는 섹터들(Sector 53, Sector 54)은 제 2 불휘발성 메모리(240)의 데이터 블록 1(Block 1)에 대응한다. 따라서, 현재의 로그 블록들(Log Block 0, Log Block 1)은 데이터 블록 1(Block 1)에 할당된 것이 없으므로, 머지 동작을 수행하여 소거된 블록 하나를 로그 블록으로 확보해야 한다. 로그 블록 0(Log Block 0)과 데이터 블록 0(Block 0)을 머지 연산하여 소거된 프리 블록(Free block) 하나를 확보한다. 확보된 하나의 프리 블록을 데이터 블록 1(Block 1)에 할당되는 로그 블록 0(Log Block 0)으로 지정한다. 이후에, 입력되는 섹터 53을 데이터 블록 1(Block 1)에 할당된 로그 블록 0(Log Block 0)에 프로그램한다(S250). 이어서, 섹터 53과 동일 그룹에 포함되는 섹터 54를 별도의 머지 동작 없이 로그 블록 0(Log Block 0)에 프로그램함으로써 제 2 그룹(Group 2)의 이동은 완료된다(S260).
제 2 그룹(Group 2)의 섹터들에 대한 이동 이후에, 제 4 그룹(Group 4)에 포함되는 섹터 111에 대한 데이터 이동이 진행된다. 섹터 111은 제 2 불휘발성 메모리(240)의 데이터 블록 2(Block 2)에 대응한다. 따라서, 현재의 로그 블록들(Log Block 0, Log Block 1)은 각각 데이터 블록 1(Block 1) 및 데이터 블록 3(Block 3)에 할당되어 있다. 따라서, 데이터 블록 2(Block 2)에 할당된 것이 없으므로, 머지 동작을 수행하여 소거된 블록 하나를 로그 블록으로 확보해야 한다. 플래시 변환 계층(225)은 로그 블록 1(Log Block 1)과 데이터 블록 3(Block 3)을 머지 연산하여 소거된 프리 블록(Free block) 하나를 확보한다. 확보된 하나의 프리 블록을 데이터 블록 2(Block 2)에 할당되는 로그 블록 1(Log Block 1)로 지정한다. 이후에, 입력되는 섹터 111을 데이터 블록 2(Block 2)에 할당된 로그 블록 1(Log Block 1)에 프로그램한다. 따라서, 하나의 섹터를 포함하는 제 4 그룹(Group 4)의 데이터 이동은 완료된다(S270).
이상의 도 7을 통해서 설명된 플래시 변환 계층(225)에 의한 플러시 동작에 따르면, 4개의 섹터 그룹들(Group 1, Group 2, Group 3, Group 4)에 대한 플러시 동작에 2회의 머지 동작이 요구된다. 플래시 변환 계층(225)에 의하여 현재의 로그 블록들의 할당 정보를 기초로 우선 순위가 결정되기 때문에 가능한 결과이다. 결과적으로 최초 2개 그룹의 이동 시에는 로그 블록의 확보를 위한 머지 동작이 요구되지 않는다. 따라서, 플래시 변환 계층(225)에 의한 그룹화 및 우선 순위의 결정에 따르면, 도 5a에서 설명된 플러시 방식에 비하여 머지 동작이 회수가 줄어들 수 있다.
도 8은 플래시 변환 계층(225)에 의해서 수행될 수 있는 플러시 동작의 다른 이점을 보여주는 블록도이다. 도 8을 참조하면, 현재의 로그 블록이 할당된 데이터 블록의 정보를 참조하여 플러시 데이터의 이동 후에 로그 블록을 데이터 블록으로 전환할 수 있는 방법이 개시된다. 즉, 현재의 로그 블록에 대응하는 데이터 블록에 저장된 데이터와 플러시되는 하나의 섹터 그룹이 결합하여 하나의 완전한 메모리 블록 단위를 구성할 수 있는 경우에 스왑 머지(Swap merge)가 가능하다. 좀더 자세 히 설명하면 다음과 같다.
플래시 변환 계층(225)에 의해서 그룹화한 하나의 섹터 그룹(Group m)에는 섹터 50 내지 섹터 95까지 그리고 섹터 98 내지 섹터 99까지의 섹터들이 포함된다고 가정하자. 그리고 섹터 그룹(Group m)에 포함되지 않는 섹터 96 및 섹터 97은 대응하는 데이터 블록 1(Block 1)에 이미 기록되어 있는 것으로 가장하자. 플래시 변환 계층(225)은 데이터 블록 1(Block 1)에 할당된 로그 블록 1(Log Block 1)에 우선 섹터 50 내지 섹터 95를 기록한다(①). 이어서, 플래시 변환 계층(225)은 로그 블록 1(Log Block 1)이 할당된 데이터 블록 1(Block 1)의 섹터 96 및 섹터 97을 로그 블록 1(Log Block 1)로 이동한다(②). 그리고, 플래시 변환 계층(225)은 섹터 그룹(Group m)의 섹터 98 및 섹터 99를 로그 블록 1(Log Block 1)로 이동한다(③). 섹터 98 및 섹터 99가 프로그램된 로그 블록 1(Log Block 1)에는 하나의 블록을 구성하는 모든 섹터들이 프로그램되어 있다. 따라서, 별도의 머지 연산 없이 로그 블록 1(Log Block 1)의 어드레스를 데이터 블록 1(Block 1)로 지정하는 스왑 머지(Swap merge)를 수행한다(④).
상술한 스왑 머지(Swap merge)에 따라 로그 블록으로부터 데이터 블록으로의 데이터 이동이 아닌 어드레스의 조작을 통해서 머지 연산이 수행된다. 따라서, 스왑 머지(Swap merge)가 가능함에 따라 데이터 이동에 소요되는 시간을 줄일 수 있다.
도 9는 본 발명의 또 다른 실시예를 보여주는 블록도이다. 도 9를 참조하면, 제 1 불휘발성 메모리(230)에 버퍼링되는 섹터 데이터들에 대한 그룹화 및 재배열 에 의한 우선 순위를 부여하는 동작은 실시되지 않는다. 대신, 선입선출(FIFO) 방식으로 플러시를 실행하는 시점에, 플러시를 위해서 선택된 섹터와 동일 그룹에 포함되는 섹터들에 대한 스캐닝 동작이 실시된다. 스캐닝 동작에 따라, 현재 플러시 될 섹터와 동일 그룹에 포함되는 섹터들이 선택되어 순차적으로 플러시된다. 따라서, 로그 블록을 확보하기 위한 추가적인 머지 동작의 빈도를 감소시킬 수 있다. 플러시 동작의 예를 들어, 본 발명의 또 다른 실시예를 설명하기로 한다.
먼저, 제 1 불휘발성 메모리(230)에 데이터 영역에 더 이상의 여유가 없으면, 데이터 플러시 동작이 시작된다. 제 1 불휘발성 메모리(230)에 프로그램된 순서에 따라, 섹터 159부터 플러시를 시작해야 할 것이다. 섹터 159를 이동하기 이전에, 먼저 섹터 159와 동일 그룹에 포함되는 섹터들이 플러시 대상 섹터들 중에 존재하는지를 검색한다. 즉, 플러시 대상 섹터들 중 섹터 150 내지 섹터 199까지의 섹터 번호를 갖는 섹터들이 스캐닝 된다(①). 스캐닝 결과, 섹터 188과 섹터 162가 검색되고, 결국 데이터 블록 3(Block 3)에 할당된 로그 블록 1(Log Block 1)로 이동한다(②). 이어서, 섹터 1의 이동 순서가 되면, 섹터 1과 동일한 그룹에 포함되는 섹터들이 검색된다. 즉, 플러시 대상 섹터들 중 섹터 0 내지 섹터 49까지의 섹터 번호를 갖는 섹터들이 스캐닝 된다(③). 스캐닝 결과, 섹터 1과 동일 그룹에 포함되는 섹터는 플러시 대상 섹터들 중에는 존재하지 않으므로, 섹터 1을 할당된 로그 블록 0(Log Block 0)에 프로그램한다(④). 이러한 방식으로 플러시 시점에 플러시 대상 섹터들을 스캐닝하여 동일 그룹의 섹터들이 나머지 섹터들보다 우선적으로 제 2 불휘발성 메모리(240)의 로그 블록으로 이동된다.
여기서, 스캐닝을 수행하는 주체에 대해서는 언급되지 않았으나 메모리 카드의 메모리 컨트롤러(220)에 의해서 수행될 수도 있고, 가능하다면, 호스트에 의해서 수행될 수도 있다.
도 10은 본 발명에 따른 메모리 카드(또는, 메모리 시스템)를 장착하는 전자 장치(Electronic Device)를 간략히 보여주는 블록도이다. 본 발명의 전자 장치(300)는 예시적으로 디지털 스틸 카메라로 구성하였다. 도 10을 참조하면, 디지털 스틸 카메라(300)에는 본 발명의 메모리 카드(310)가 장착된다. 본 발명에 따른 디지털 스틸 카메라(300)에는 데이터의 저장 수단으로써 제 1 불휘발성 메모리(312) 및 제 2 불휘발성 메모리(313)를 포함하는 메모리 카드(310)가 장착된다. 디지털 스틸 카메라(300)는 메모리 카드(310)와의 인터페이싱을 제공하기 위한 카드 인터페이스(320)를 포함한다. 그리고 각각 버스에 전기적으로 연결된 MCU(330), 렌즈(Lense)로부터 광학 이미지를 센싱하는 이미지 센서(350)로부터 제공되는 이미지 신호를 처리하는 카메라 이미지 프로세서(340)를 포함한다. 그리고 이미지 신호를 처리하여 시각적 이미지로 제공하기 위한 디스플레이(360)를 포함한다. 상술한 디지털 스틸 카메라(300)의 구동 전원을 제공하기 위한 배터리(370)의 구성도 추가될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 시스템에는 응용 칩셋(Application Chipset), 모바일 디램(Mobile DRAM) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
본 발명의 메모리 카드(310)는 MMC 카드(Multimedia Card), SD 카드(Secure Digital Card), 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card) 등으로 더 구성될 수 있다.
불휘발성 메모리(312, 313)는 전력이 차단되어도 저장된 데이터를 유지할 수 있다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 불휘발성 메모리(312, 313)는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 널리 사용될 수 있다. 불휘발성 메모리(312, 313) 및 플래시 컨트롤러(311)를 포함하는 메모리 카드(310)는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 메모리 카드는 임베디드 시스템에 적용가능하다. 임베디드(Embedded) 시스템은 다른 기기의 일부로 내장된 컴퓨팅 시스템으로써, 일반적인 컴퓨터와 달리 자신을 포함하고 있는 기기에 부과된 특정 목적의 컴퓨팅 작업만을 수행한다. 이를 위해, 임베디드 시스템은 중앙처리장치를 갖고 운영 체제를 필요로 하며, 운영체제로 애플리케이션을 실행하여 특정 작업을 수행한다. 일반적으로, 임베디드 시스템은 군사용기기, 산업용 기기, 통신 기기, 셋탑 박스, DTV, 디지털 카메라와 같은 가전기기 등을 제어하기 위해 내장된다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 데이터 플러시 동작을 보여주는 블록도;
도 2는 본 발명의 일 실시예에 따른 정보처리 시스템을 보여주는 블록도;
도 3은 도 2의 플러시 방법을 보여주는 블록도;
도 4는 도 2의 호스트 드라이버에 의한 논리적 섹터 번호의 그룹화를 보여주는 블록도;
도 5a는 본 발명의 플러시 절차를 보여주는 도면;
도 5b는 선입선출 방식의 플러시 절차를 예시적으로 보여주는 도면;
도 6은 본 발명의 그룹화 및 플러시 동작을 지원하는 플래시 변환 계층을 포함하는 정보처리 시스템을 보여주는 블록도;
도 7은 도 6의 플래시 변환 계층에 의한 플러시 절차를 보여주는 도면;
도 8은 도 7의 어느 한 그룹에 적용되는 스왑 머지(Swap merge)를 보여주는 도면;
도 9는 본 발명의 또 다른 실시예에 따른 플러시 방법을 보여주는 도면; 및
도 10은 본 발명에 따른 전자 장치를 보여주는 블록도.
*도면의 주요 부분에 대한 부호의 설명*
10, 100, 200 : 정보처리 시스템
20, 110, 210 : 호스트
30, 140, 230, 312 : 제 1 불휘발성 메모리
40, 150, 240, 313 : 제 2 불휘발성 메모리
50, 160 : 메모리 카드 120 : 호스트 드라이버
130, 220 : 메모리 컨트롤러 225 : 플래시 변환 계층(FTL)
300 : 전자 장치 310 : 메모리 카드
311 : 플래시 컨트롤러 320 : 카드 컨트롤러
330 : 마이크로 컨트롤 유닛 340 : 카메라 이미지 프로세서
350 : 이미지 센서 360 : 디스플레이
370: 배터리

Claims (20)

  1. 제 1 메모리와 제 2 메모리를 포함하는 메모리 시스템의 데이터 관리 방법에 있어서:
    (a) 상기 제 1 메모리에 섹터 단위로 데이터를 프로그램하는 단계; 그리고
    (b) 상기 제 1 메모리에 프로그램된 복수의 섹터 데이터들을 서로 다른 우선 순위를 갖는 복수의 그룹들 단위로 상기 제 2 메모리의 로그 블록으로 플러시하는 단계를 포함하되,
    상기 제 1 메모리 및 상기 제 2 메모리는 불휘발성 메모리를 포함하고, 상기 복수의 그룹들 각각의 우선 순위는 상기 로그 블록이 할당되는 데이터 블록 정보에 따라 결정되는 관리 방법.
  2. 제 1 항에 있어서,
    상기 복수의 섹터 데이터들 각각은 논리적 섹터 번호에 따라 상기 복수의 그룹들 중 어느 하나에 포함되는 관리 방법.
  3. 제 1 항에 있어서,
    상기 복수의 그룹들 각각의 우선 순위는 각각의 그룹에 포함되는 섹터 데이터들의 수에 따라 결정되는 관리 방법.
  4. 제 3 항에 있어서,
    상기 복수의 그룹들 중 어느 하나의 그룹에 포함되는 복수의 섹터 데이터들은 섹터 번호에 따라 상기 어느 하나의 그룹 내부에서 우선 순위가 결정되는 관리 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 복수의 그룹들 중 상기 데이터 블록에 대응하는 논리적 섹터 번호를 포함하는 어느 하나의 그룹이 최우선적으로 상기 제 2 메모리에 플러시되는 관리 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 섹터 단위로 데이터를 제공하는 호스트;
    상기 호스트로부터 제공되는 데이터를 순차적으로 저장하는 제 1 메모리;
    플러시 동작시, 상기 제 1 메모리에 저장된 복수의 섹터 데이터들을 서로 다른 우선 순위를 갖는 복수의 그룹들 단위로 저장하는 제 2 메모리; 그리고
    상기 호스트와 상기 제 1 메모리 및 상기 제 2 메모리 사이에서 인터페이싱을 제공하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 복수의 섹터 데이터들을 상기 제 2 메모리의 로그 블록에 저장하는 정보처리 시스템.
  11. 제 10 항에 있어서,
    상기 제 1 메모리와 상기 제 2 메모리 및 상기 메모리 컨트롤러는 불휘발성 메모리 카드를 구성하는 정보처리 시스템.
  12. 제 11 항에 있어서,
    상기 제 2 메모리는 로그 블록 사상법에 따라서 데이터가 관리되는 정보처리 시스템.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 제 11 항에 있어서,
    상기 메모리 컨트롤러는 상기 복수의 섹터 데이터들을 서로 다른 우선 순위를 갖는 복수의 그룹들 단위로 구분하는 플래시 변환 계층을 더 포함하는 정보처리 시스템.
  19. 제 18 항에 있어서,
    상기 플래시 변환 계층은 상기 제 2 메모리의 현재 로그 블록이 할당된 데이터 블록의 정보를 참조하여 상기 복수의 그룹들 각각의 우선 순위를 결정하는 정보처리 시스템.
  20. 삭제
KR1020080056980A 2008-06-17 2008-06-17 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 KR101497074B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020080056980A KR101497074B1 (ko) 2008-06-17 2008-06-17 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US12/483,001 US8392662B2 (en) 2008-06-17 2009-06-11 Methods of data management in non-volatile memory devices and related non-volatile memory systems
CN200910145882.XA CN101639808B (zh) 2008-06-17 2009-06-17 非易失性存储设备中的数据管理方法及非易失性存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080056980A KR101497074B1 (ko) 2008-06-17 2008-06-17 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20090131146A KR20090131146A (ko) 2009-12-28
KR101497074B1 true KR101497074B1 (ko) 2015-03-05

Family

ID=41414629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080056980A KR101497074B1 (ko) 2008-06-17 2008-06-17 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법

Country Status (3)

Country Link
US (1) US8392662B2 (ko)
KR (1) KR101497074B1 (ko)
CN (1) CN101639808B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481122B2 (en) 2019-12-16 2022-10-25 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
US8473680B1 (en) * 2009-09-18 2013-06-25 Marvell International Ltd. Hotspot detection and caching for storage devices
JP5091940B2 (ja) * 2009-12-28 2012-12-05 京セラドキュメントソリューションズ株式会社 画像形成装置および不揮発性メモリ書き込み方法
JP5520098B2 (ja) * 2010-03-24 2014-06-11 スパンション エルエルシー データ処理方法、プログラムおよびシステム
US9355109B2 (en) * 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US8850160B2 (en) 2010-08-23 2014-09-30 Apple Inc. Adaptive write behavior for a system having non-volatile memory
KR20120088452A (ko) * 2011-01-31 2012-08-08 에스케이하이닉스 주식회사 반도체 메모리 장치 및 데이터 프로그래밍 방법
CN102999437B (zh) * 2011-09-19 2015-12-16 群联电子股份有限公司 数据搬移方法、存储器控制器与存储器储存装置
JP5790532B2 (ja) * 2012-02-13 2015-10-07 セイコーエプソン株式会社 電子機器、及びメモリー制御方法
KR101923157B1 (ko) 2012-02-22 2018-11-28 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
JP2014206884A (ja) * 2013-04-15 2014-10-30 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
US9135113B2 (en) 2013-10-08 2015-09-15 Apple Inc. Recovery from programming failure in non-volatile memory
US9535628B2 (en) 2013-10-10 2017-01-03 Apple Inc. Memory system with shared file system
WO2015116100A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Managing data using a number of non-volatile memory arrays
US9965383B2 (en) * 2014-08-05 2018-05-08 Netapp, Inc. File system indirection technique for directly managing solid state devices
CN106844234B (zh) * 2015-12-04 2020-01-03 成都华为技术有限公司 数据写入方法及装置、双活系统
CN107544912B (zh) * 2016-06-29 2021-09-03 北京忆恒创源科技股份有限公司 一种日志记录方法、加载方法及其装置
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10564856B2 (en) * 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
KR102369402B1 (ko) * 2017-09-20 2022-03-02 삼성전자주식회사 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템
JP2019061458A (ja) * 2017-09-26 2019-04-18 京セラドキュメントソリューションズ株式会社 電子機器およびログアプリケーション
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US10860420B2 (en) 2019-02-05 2020-12-08 Alibaba Group Holding Limited Method and system for mitigating read disturb impact on persistent memory
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10783035B1 (en) 2019-02-28 2020-09-22 Alibaba Group Holding Limited Method and system for improving throughput and reliability of storage media with high raw-error-rate
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11113188B2 (en) * 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
KR20230094588A (ko) * 2021-12-21 2023-06-28 에스케이하이닉스 주식회사 복수의 존들에 대응하는 데이터를 관리하는 메모리 시스템 및 그 방법
CN114911426B (zh) * 2022-07-15 2022-10-18 北谷电子有限公司 一种数据存储方法、存储器件和高空车

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024971A1 (en) * 2000-09-21 2004-02-05 Zohar Bogin Method and apparatus for write cache flush and fill mechanisms
KR20060001393A (ko) * 2004-06-30 2006-01-06 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
KR19990013057A (ko) 1997-07-31 1999-02-25 윤종용 단일 비트 데이터와 다중 비트 데이터를 동일한 칩에 선택적으로 저장하는 플래시 메모리 장치의 독출 및 기입 방법
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
JP2003022687A (ja) 2001-07-09 2003-01-24 Mitsubishi Electric Corp 半導体記憶装置
US7277982B2 (en) * 2004-07-27 2007-10-02 International Business Machines Corporation DRAM access command queuing structure
JP4586469B2 (ja) * 2004-09-15 2010-11-24 ソニー株式会社 メモリ制御装置、メモリ制御方法、プログラム
US7409473B2 (en) * 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
KR100732628B1 (ko) 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
CN101273413B (zh) 2005-09-29 2011-11-16 特科2000国际有限公司 使用单层单元和多层单元闪速存储器的便携式数据存储
US8250316B2 (en) * 2006-06-06 2012-08-21 Seagate Technology Llc Write caching random data and sequential data simultaneously
KR100843135B1 (ko) * 2006-11-20 2008-07-02 삼성전자주식회사 비휘발성 메모리 관리 방법 및 장치
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024971A1 (en) * 2000-09-21 2004-02-05 Zohar Bogin Method and apparatus for write cache flush and fill mechanisms
KR20060001393A (ko) * 2004-06-30 2006-01-06 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481122B2 (en) 2019-12-16 2022-10-25 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
KR20090131146A (ko) 2009-12-28
US8392662B2 (en) 2013-03-05
CN101639808B (zh) 2017-04-12
CN101639808A (zh) 2010-02-03
US20090310412A1 (en) 2009-12-17

Similar Documents

Publication Publication Date Title
KR101497074B1 (ko) 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
KR101989018B1 (ko) 데이터 저장 장치의 동작 방법
US9646705B2 (en) Memory systems including nonvolatile memory devices and dynamic access methods thereof
JP5580311B2 (ja) 多性能モードメモリシステム
US9390004B2 (en) Hybrid memory management
CN110491435B (zh) 包括非易失性存储器设备的存储器系统及其动态存取方法
US9817755B2 (en) Garbage collection management in memories
US7516295B2 (en) Method of remapping flash memory
US8103820B2 (en) Wear leveling method and controller using the same
KR100771521B1 (ko) 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR101563875B1 (ko) 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템
US9256529B2 (en) Flash memory controller
KR101529290B1 (ko) 반도체 디스크 장치 및 그것의 데이터 처리 방법
US20120179859A1 (en) Nonvolatile memory apparatus performing ftl function and method for controlling the same
US20100042775A1 (en) Block management method for flash memory, and storage system and controller using the same
US8819350B2 (en) Memory system
KR101204163B1 (ko) 반도체 기억 장치
KR100538338B1 (ko) 플래시 메모리의 블록 균등 분산 기법 및 이를 이용한데이터 저장 장치

Legal Events

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

Payment date: 20200131

Year of fee payment: 6