KR20130096881A - 플래시 메모리 장치 - Google Patents

플래시 메모리 장치 Download PDF

Info

Publication number
KR20130096881A
KR20130096881A KR1020120018431A KR20120018431A KR20130096881A KR 20130096881 A KR20130096881 A KR 20130096881A KR 1020120018431 A KR1020120018431 A KR 1020120018431A KR 20120018431 A KR20120018431 A KR 20120018431A KR 20130096881 A KR20130096881 A KR 20130096881A
Authority
KR
South Korea
Prior art keywords
data
page
flash
memory device
block
Prior art date
Application number
KR1020120018431A
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 KR1020120018431A priority Critical patent/KR20130096881A/ko
Priority to US13/706,565 priority patent/US20130227198A1/en
Priority to EP12198253.2A priority patent/EP2665065A3/en
Priority to CN2013100555104A priority patent/CN103294604A/zh
Publication of KR20130096881A publication Critical patent/KR20130096881A/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
    • 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/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/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

플래시 메모리 장치는, 상기 플래시 메모리 장치의 내부에 복수의 플래시 어레이들을 포함하고, 상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되어, 무작위 쓰기(random write) 성능을 향상시킬 수 있는 이점이 있다.

Description

플래시 메모리 장치{FLASH MEMORY DEVICE}
본 발명은 일반적으로 플래시 메모리 장치에 관한 것으로, 특히 작은 페이지 크기의 어레이를 효율적으로 지원하기 위한 플래시 메모리 장치에 관한 것이다.
스마트 폰 및 모바일 기기가 전 세계적으로 널리 보급됨에 따라 모바일 저장 시스템에 대한 요구가 급격히 증가하였다. 이러한 요구를 충족시키기 위해 최근에는 플래시 메모리 기반 저장 시스템이 널리 각광받고 있다.
특히, 비휘발성 메모리(Non-volatile memory)인 낸드 플래시 디바이스(NAND flash device)는 값이 싸면서도 고집적, 대용량화가 가능하여 모바일 폰의 저장매체(storage)로 많이 사용되고 있다. 낸드 플래시 메모리 칩은 생산성을 높이기 위해 공정을 2xnm 대까지 세밀화시키고 있다. 하지만 공정이 세밀화될수록 낸드 플래시 메모리의 특성은, 셀과 셀 사이 간격이 좁아지면서 간섭이 발생하고 비트 에러(bit error)가 발생할 확률이 높아져, 나빠지게 된다.
또한, 낸드 플래시 메모리는 세밀화된 공정일수록 NAND Flash cell Transistor에 프로그램(program)하는 시간(tPROG)이 길어지게 된다. 이전 공정 대비 tPROG가 길어지면 낸드 플래시 메모리 장치 자체의 속도가 느려지기 때문에 이를 보완하기 위해 한 번에 프로그램되는 단위인 낸드 플래시 메모리 장치의 페이지 크기(page size)가 커진다. 초기 낸드 플래시 메모리 장치의 페이지 크기는 2KB, 4KB 정도였으나 최근 낸드 플래시 메모리 장치의 페이지 크기는 16KB까지 커지고 있다.
하지만, 한 번에 입출력(I/O)되는 단위가 커지면서 이보다 작은 크기의 데이터을 처리할 때 속도가 느려지게 된다. 모바일 폰의 경우 사진이나 동영상 촬영과 같이 크기가 큰 데이터도 있지만 SMS(Short Message Service), 폰북 (phonebook), 일정관리 등 같은 크기가 작은 데이터도 많이 처리하게 된다.
따라서, 큰 데이터 및 작은 데이터를 효율적으로 처리하기 위한 낸드 플래시 메모리 장치가 필요하다.
본 발명의 목적은 데이터 블록의 페이지 크기보다 큰 데이터와 데이터 블록의 페이지 크기보다 작은 데이터를 효율적으로 처리하기 위한 낸드 플래시 메모리 장치를 제공함에 있다.
본 발명의 다른 목적은 부분 데이터 쓰기(partial data write) 속도를 향상시키기 위한 낸드 플래시 메모리 장치를 제공함에 있다.
상기한 목적들을 달성하기 위한 본 발명의 제 1 견지에 따르면, 플래시 메모리 장치에 있어서, 상기 플래시 메모리 장치의 내부에 복수의 플래시 어레이들을 포함하고, 상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 2 견지에 따르면, 플래시 메모리 장치에 있어서, 데이터를 버퍼링하는 버퍼와, 상기 버퍼에 있는 상기 데이터를 해당 플래시 어레이의 블록 내의 페이지에 쓰거나, 상기 해당 플래시 어레이의 블록 내의 페이지에 기저장된 데이터를 상기 버퍼로 읽어오도록 제어하는 제어기와, 상기 제어기의 메모리 명령어에 따라, 상기 버퍼에 있는 상기 데이터를 저장하거나 기저장된 데이터를 상기 버퍼에 제공하는 복수의 플래시 어레이들을 포함하고, 상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 3 견지에 따르면, 전자 장치에 있어서, 플래시 메모리 장치와, 하나 이상의 프로세서를 포함하고, 상기 플래시 메모리 장치는 상기 하나 이상의 프로세서에 의해 데이터를 쓰기/읽기/지우기를 수행하고, 상기 플래시 메모리 장치의 내부에 복수의 플래시 어레이들을 포함하고, 상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되는 것을 특징으로 한다.
상기한 목적들을 달성하기 위한 본 발명의 제 4 견지에 따르면, 플래시 메모리 장치에서 데이터를 저장하는 방법에 있어서, 데이터 패턴에 따라, 적어도 둘 이상의 페이지 크기에 해당하는 복수의 플래시 어레이 그룹 중 어느 하나를 선택하는 과정과, 상기 선택된 페이지 크기에 해당하는 플래시 어레이에 상기 데이터를 저장하는 과정을 포함하는 것을 특징으로 한다.
상술한 바와 같이, 각 낸드 플래시 어레이를 논리적으로 각각의 파티션(partition)으로 구분하고 시스템이나 애플리케이션의 I/O 패턴 크기에 따라 파티션을 결정함으로써, 즉, 대용량의 연속적인 쓰기 패턴(sequential write pattern)이 많은 경우에는 큰 페이지 크기 파티션(large page size partition)을 할당하고 랜덤 부분 데이터 패턴(random partial data pattern)이 많은 경우 작은 페이지 크기 패턴(small page size partition)을 할당함으로써, 무작위 쓰기(random write) 성능을 향상시킬 수 있는 이점이 있다.
도 1은 본 발명의 실시 예에 따른 플래시 메모리 장치를 도시하고 있다.
도 2는 본 발명에서 상세한 낸드 플래시 어레이를 도시하고 있다.
도 3은 본 발명에 따른 플래시 메모리 장치의 계층별 구조를 도시하고 있다.
도 4는 본 발명에 따른 간략한 1대1 매핑 알고리즘을 도시하고 있다.
도 5는 본 발명에 따른 블록 매핑 기법의 동작을 도시하고 있다.
도 6은 본 발명에 따른 페이지 매핑 기법의 동작을 도시하고 있다.
도 7은 본 발명에서 FTL 계층의 부분 데이터(partial data) 처리 알고리즘을 도시하고 있다.
도 8(a) 내지 8(b)은 본 발명에 실시 예에 따른 두 가지 페이지 크기를 처리하는 낸드 플래시 메모리 장치 구조를 도시하고 있다.
도 9 (a) 및 (b)는 본 발명의 실시 예에 따른 낸드 플래시 메모리 장치에서의 데이터 처리 알고리즘을 도시하고 있다.
도 10은 본 발명의 실시 예에 따른 낸드 플래시 메모리 장치 동작을 도시하고 있다.
이하 본 발명의 바람직한 실시 예를 첨부된 도면의 참조와 함께 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 본 발명은 작은 페이지 크기의 어레이를 효율적으로 지원하는 플래시 메모리 장치에 관해 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 플래시 메모리 장치를 도시하고 있다.
상기 도 1을 참조하면, 상기 플래시 메모리 장치(100)는 I/O(104), 데이터 레지스터(108), 제어기(102) 및 다수의 낸드 플래시 어레이(106)로 구성되어 있다. 각 낸드 플래시 어레이(106)는 다수의 블록(110)으로 구성되어 있고, 각 블록(110)에는 다수의 페이지(120)로 구성되어 있으며, 각 페이지(120)에는 고정된 크기의 데이터 영역과 여분의 데이터 영역이 있다. 도시하지 않았지만, 각 페이지(120)는 다수의 섹터로 구성된다. 상기 제어기(102)는 주소 매핑 알로리즘을 통해, 데이터를 임시저장하는 데이터 레지스터(108)와 다수의 낸드 플래시 어레이(106) 사이 데이터 쓰기/읽기 등을 제어한다.
한편, 다수의 낸드 플래시 어레이(106) 중 일부 낸드 플래시 어레이들은 제1 페이지 크기를 갖는 페이지 집합으로 구성되고, 나머지 낸드 플래시 어레이들 제2 페이지 크기를 갖는 페이지 집합으로 구성된다. 제1 페이지 크기는 작은 데이터를 처리하기 위해 제2 페이지 크기보다 작다. 구현에 따라, 본 발명에서 상기 플래시 메모리 장치(100)는 적어도 둘 이상의 페이지 크기 단위로 데이터 쓰기를 수행할 수 있다. 이하 설명에서 있어서 두 가지의 페이지 크기를 갖는 플래시 메모리 장치를 예를 들어 설명하기로 한다.
도 2는 본 발명에서 상세한 낸드 플래시 어레이(106)를 도시하고 있다.
상기 도 2를 참조하면, 낸드 플래시 어레이(106) 구조는 복수의 블록(Block)(200)으로 구성되며, 각 블록은 복수의 페이지(202)로 이루어져 있다. 예를 들어, 하나의 블록은 64 또는 128개의 페이지로 구성될 수 있다. 그리고, 페이지 크기는 8KB 혹은 16KB 이상일 수 있다.
한편, 상기 플래시 메모리 장치(100)는 읽기(Read) 및 쓰기(Write) 연산은 페이지(page) 단위로 수행하며 지우기(Erase) 연산은 블록(Block) 단위로 수행한다.
한편, 운영체제 시스템은 각 계층별로 기능이 분류되어 있는 계층별 구조로 되어있다. 상기 플래시 메모리 장치도 이와 마찬가지로 하기 도 3에서처럼 계층적 구조로 되어 있다.
도 3은 본 발명에 따른 플래시 메모리 장치의 계층별 구조를 도시하고 있다.
싱기 도 3을 참조하면, 플래시 메모리 장치는 기존의 자기 디스크 드라이브와는 달리 FTL(Flash Translation Layer)(304)와 MTD(Memory Technology Device)(306)가 주요 계층을 포함된다. 상기 MTD 드라이버는 주로 읽기, 쓰기, 지우기를 포함하는 세 개의 저 계층(Low-level) 동작을 제공한다. 이러한 저 계층 동작에 기반하여 FTL 계층(304)은 각 동작을 플래시 메모리 상에서 어떻게 처리할 것인지를 정의한다. 즉, FTL 드라이버의 주요 역할은 파일 시스템(302)이 플래시 메모리 장치를 블록 단위로 접근하도록 인터페이스를 제공하는 것이다. 또한, FTL 계층은 최소한의 버퍼를 사용하여 성능을 향상시킨다.
더욱이, 상기 도 3은 플래시 메모리 장치의 데이터 흐름도를 보여준다. 응용 계층(300)에서 파일처리 함수(fread/fwrite)와 같은 파일 시스템 API을 사용하여 I/O 요청을 발생시킨다.
파일 시스템(302)은 일반적으로 저장 시스템을 고정 크기의 블록으로 이루어진 선형 배열(Linear Array)로 관리한다. 따라서, 파일 접근 명령은 파일 시스템(302)에 의해 다수의 블록 단위 I/O 요청으로 변경되고, 각 블록 단위 I/O 요청은 특정 LBA(Logical Block Address)와 데이터 블록 길이 정보를 포함한다. 이러한 블록 단위 I/O 요청은 FTL을 거쳐서 플래시 메모리에 의해 제공되는 특정 명령어로 변경된다. 상기 변경된 명령어는 최종적으로 제어 신호로 변경되어 실제 물리적인 플래시 메모리 장치에 접근하는데 사용된다.
FTL 계층에 대해 더 살펴보면, 상기 플래시 메모리 장치가 동작하기 위해서 FTL은 논리-물리 주소 매핑(Logical-to-Physical Address Mapping), 웨어 레벨링(Wear-leveling), 쓰레기 수집(Garbage Collection), 전력 차단 복구(Power-off Recovery) 기능을 제공한다.
상기 주소 매핑을 보면, 파일 시스템(302)은 LBA(Logical Block Address)를 사용하여 논리적인 선형 공간(Logical Linear Space)으로 각 데이터 공간을 관리한다. 이러한 LBA는 실제 물리적인 데이터 공간 주소로 변경되어야 한다. 이러한 과정은 주소 매핑 과정을 통해 수행되며 고효율 주소 매핑 알고리즘이 적용되고 있다. 주소 매핑 알고리즘을 평가하는 데 있어서는 크게 두 가지 요소를 고려해야 하는데, 첫째는 매핑 테이블의 크기이다. 매핑 테이블은 작은 오버헤드로 접근되어야 하기 때문에 영구적인(Persistent) 공간에 저장된다. 따라서, 매핑 테이블 크기는 작을수록 좋다. 또한, 질의 효율성(Query Efficiency)이다. 즉, 잘 설계된 매핑 알고리즘은 시스템 크기가 커질수록 성능이 저하되지 않는다.
도 4는 본 발명에 따른 간략한 1대1 매핑 알고리즘을 도시하고 있다.
상기 도 4를 참조하면, 1대1 매핑 알고리즘에서는 특정 주소 공간에 대한 요청이 생성되었을 경우, 매핑 테이블을 참조하여 직접적으로 물리적인 저장 공간에 접근할 수 있다. 상기 도 4에서 플래시 메모리는 3개의 블록(400, 402, 404)으로 구성되어 있고, 각 블록은 4개의 페이지로 구성되어 있다. 따라서, 최대 LBA는 12이고, 각 LBA는 특정 물리적 저장 공간으로 연결된다. 예를 들면, LBA 5는 물리 주소 (2,1)로 매핑된다. 하지만, 이러한 1대1 매핑 알고리즘은 데이터 공간이 커질수록 매핑 테이블이 커진다.
이러한 주소 매핑 알고리즘 문제를 해결하기 위해 크게 세 가지의 매핑 알고리즘들 즉, 페이지 매핑, 블록 매핑, 하이브리드 매핑이 제안되고 있다. 상기 페이지 매핑에서는 특정 페이지가 한 블록 내의 임의의 페이지로 매핑된다. 즉, 특정 물리적 페이지가 변경되어야 할 경우, 새로운 데이터는 또 다른 물리 페이지에 쓰여지고, 이전 페이지는 무효화된다. 이는 아웃-오브-플레이스(Out-of-Place) 기법으로 불린다. 상기 블록 매핑에서는 각 논리적 블록이 물리적 블록으로 매핑된다. 즉, 논리적 블록과 물리적 블록이 특정 블록 내에서 같은 페이지 옵셋(Offset)을 사용한다. 따라서, 특정 페이지는 특정 블록 내에서 같은 옵셋 위치에 쓰여 진다. 이는 인-플레이스(In-place) 기법으로 불린다. 상기 하이브리드 매핑은 페이지 매핑과 블록 매핑의 장점을 취합한 기법이다. 먼저, 물리적 블록을 찾을 때는 블록 매핑을 사용하고, 그 물리적 블록 내의 가용 페이지를 찾을 때에는 페이지 매핑을 사용한다.
참고로, 16KB 페이지 크기를 가진 낸드 플래시 메모리 장치의 경우 페이지 매핑 알고리즘을 이용하고 있다.
도 5는 본 발명에 따른 블록 매핑 기법의 동작을 도시하고 있다.
상기 도 5를 참조하면, 상기 블록 맵핑 방법에서 페이지를 갱신하기 위한 절차는 새로운 블록을 할당하고, 원래 블록으로부터 갱신할 페이지만 제외하고 나머지 페이지들을 새로운 블록으로 복사한 다음, 갱신할 페이지를 새로운 블록에 기록한다. 그리고 마지막으로 새로운 블록이 원래 블록을 대체하도록 블록단위의 맵핑 테이블을 수정하면 페이지 갱신이 종료된다.
예를 들어, 블록당 페이지 수를 4개로 가정하고, 그 중 2번 페이지가 갱신된다고 가정한다. 블록 맵핑을 사용할 때에는 블록 단위의 맵핑 테이블이 메모리 영역에 존재하게 된다. 상기 맵핑 테이블을 사용하여 논리적인 블록 번호를 통해 물리적인 블록 번호를 찾을 수 있다. 상기 도 5과 같이 초기에 논리블록 0번이 물리블록 0번으로 맵핑 되어 있음을 알 수 있고, 임시블록은 물리블록 100번이 사용되고 있다(500). 이때, 2번 페이지를 갱신하는 과정이 수행된다. 즉, 첫 번째 블록의 페이지 2를 제외하고 페이지 0, 1, 3을 임시블록에 복사한다(510). 이후, 임시블록의 페이지 2에 갱신할 내용을 기록한다. 결국 논리블록 0번이 물리블록 100번으로 바뀌었음을 알 수 있고, 또한, 기존 0번 물리블록은 임시블록으로 변경된다(520).
도 6은 본 발명에 따른 페이지 매핑 기법의 동작을 도시하고 있다.
상기 도 6을 참조하면, 갱신하고자 하는 논리 페이지 내용을 임의의 비어있는 물리 페이지에 기록하고, 해당 논리 페이지에 대한 페이지 단위의 맵핑 정보를 기록된 물리 페이지를 가리키도록 변경하면 된다.
예를 들어, 초기에 논리적 페이지 0번이 물리적 블록 0번으로 맵핑되고, 논리적 페이지 1번은 물리적 블록 1번으로 매핑되고, 마찬가지로, 논리적 페이지 N번이 물리적 페이지 N번과 매핑된다. 즉, 논리적 페이지와 물리적 페이지가 1대1로 매핑된다(600). 이후, 2번 페이지를 갱신하고자 할 경우 갱신하고자 하는 논리 페이지 내용을 임의의 빈 물리적 페이지에 기록하고, 상기 논리 페이지 내용이 기록된 물리적 페이지와 논리적 페이지 2를 매핑한다(610).
상기 페이지 맵핑 방식은 페이지 단위의 큰 맵핑 테이블을 사용하는 대신 업데이트에 따른 오버헤드가 매우 작다. 반면 상기 블록 맵핑 방식은 블록 단위의 맵핑 테이블만 사용하기 때문에 적은 메모리를 소모하지만, 페이지 단위의 갱신이 일어날 경우엔 큰 오버헤드가 발생하는 단점이 있다.
기본적으로 페이지 단위로 매핑을 관리하는 FTL에서 페이지 크기보다 작은 부분 데이터(partial data)의 쓰기 요청이 발생할 수 있다.
예를 들어, 현재 출시되고 있는 낸드 플래시 메모리 장치는 8KB 혹은 16KB 이상의 페이지 크기를 사용한다. 그리고, 상기 낸드 플래시 메모리 장치는 모바일 폰에 많이 적용되어 있으며 시스템 로그(system log), 이메일(e-mail), 폰북(phonebook), 일정관리 등과 같은 작은 크기의 데이터 입출력 이벤트가 빈번하게 발생하고 있다. 특히 요즘 많이 사용되고 있는 안드로이드 운영시스템(Android OS)과 같은 모바일 플랫폼(mobile platform)에서는 4KB 무작위 데이터 입출력(random data I/O)이 많다.
도 7은 본 발명에서 FTL 계층의 부분 데이터(partial data) 처리 알고리즘을 도시하고 있다.
상기 도 7을 참조하면, 기본적으로 페이지 단위로 매핑을 관리하는 FTL 계층은 페이지 크기보다 작은 부분 데이터의 쓰기(write) 요청 시 나머지 부분을 기존의 데이터 블록으로부터 읽기(read)하여 패딩(padding) 해야한다.
FTL 계층의 매핑을 페이지보다 작은 섹터 단위로도 관리를 할 수 있으나 매핑 테이블의 크기가 블록/페이지 매핑 대비 기하급수적으로 커지고 낸드 플래시 메모리 자체가 페이지 단위로 I/O를 수행하기 때문에 자원(resource) 및 구현시 오버헤드가 큰 문제점이 있다.
예를 들면, 페이지 크기가 8KB인 낸드 플래시 메모리 장치에 4KB의 부분데이터(partial data)가 기록되는 패턴을 예로 들어 설명한다.
애플리케이션 계층으로부터 섹터(512B) 8~15의 쓰기 명령이 지시되면 버퍼(710)의 섹터 8-15에 새로운 데이터가 기록되고, 이후 버퍼(710)의 섹터 0~7번들은 기존 데이터 블록으로부터 해당 페이지(710)의 섹터 0-7에 있는 데이터를 읽어(730)와 버퍼(700)의 섹터 0-7에 패딩(padding)을 해서 페이지 크기를 모두 채워준다. 다음 임시블록에 쓰기(write)를 하게 된다. 위의 예에서는 4KB의 데이터 쓰기를 위해 실제 낸드 어레이에서는 8KB 읽기 및 8KB 쓰기가 발생한다.
상술한 바와 같이, 페이지 크기보다 작은 데이터 쓰기가 발생할 시, 해당 페이지 크기의 나머지 부분을 기존의 데이터 블록으로부터 읽기(read)하여 패딩(padding)해야 한다. FTL 계층의 매핑을 섹터 단위로도 관리를 할 수 있으나 매핑 테이블의 크기가 블록/페이지 매핑 대비 기하급수적으로 커지고 플래시 메모리 장치가 페이지 단위로 I/O를 수행하기 때문에 자원(resource) 및 구현에 있어서 오버헤드가 크다.
이에 본 발명에서는 하기 도 8 (a) 및 (b)와 같이 작은 페이지 크기 단위로 데이터를 읽기/쓰기 하는 다수 낸드 플래시 메모로 어레이와 큰 페이지 크기 단위로 데이터를 읽기/쓰기 하는 다수 낸드 플래시 메모로 어레이가 패키징되어 있는 낸드 플래시 메모리 장치를 제안한다.
도 8(a) 내지 8(b)은 본 발명에 실시 예에 따른 두 가지 페이지 크기를 처리하는 낸드 플래시 메모리 장치 구조를 도시하고 있다.
상기 8(a)을 참조하면, 다수의 블록들이 하나의 면(plane)을 이루고, 다수의 면(plane)들은 하나의 다이(die) 혹은 칩을 이룬다. 그리고 다수의 다이(die)들이 모여 낸드 플래시 메모리 장치를 구성한다.
상기 도 8(a)에서는 하나의 다이(die)가 3개의 면(plane 0, plane 1, plane 2)을 포함한다. 여기서, plane 0, plane 1은 임계치보다 큰 페이지 크기(예: 8KB 혹은 16KB)의 낸드 플래시 어레이들이고, plane 2는 임계치보다 작은 페이지 크기(예: 4KB)의 낸드 플래시 어레이들이다.
상기 도 8(a)은 하나의 다이(die)에서 plane 0, plane 1가 큰 페이지 크기의 낸드 플래시 어레이(다수의 블록들이 배열됨)를 포함하고, plane 2이 작은 페이지 크기의 낸드 플래시 어레이를 포함하는 구조이지만, 구현에 따라서 하기 도 8 (b)처럼, 다이(die) 혹은 칩별로 큰 페이지 크기의 낸드 플래시 어레이와 작은 페이지 크기의 낸드 플래시 어레이를 패키징할 수도 있다.
상기 도 8(b)에서는 하나의 다이(die)가 3개의 면(plane 0, plane 1, plane 2)을 포함하고, 여기서, die 0에서 plane 0, plane 1, plane 2가 큰 페이지 크기(예: 8KB 혹은 16KB)의 낸드 플래시 어레이들을 포함하고, die 1에서 plane 0, plane 1, plane 2, plane 3이 작은 페이지 크기(예: 4KB)의 낸드 플래시 어레이들을 포함할 수 있다.
상기 도 8 (a) 및 (b)에서처럼, 메모리 영역이 적어도 하나 이상의 페이지 크기에 따라 다수의 파티션(partition)으로 구분되어, 각 파티션별로 해당 페이지 크기로 데이터 쓰기/읽기가 처리된다.
예를 들어, 애플리케이션 계층으로부터 작은 크기의 무작위 데이터 입출력(random data I/O)가 많을 때, 작은 페이지 크기 파티션(Small page size partition)을 데이터 블록으로 지정하여 무작위 쓰기(random write) 성능을 향상시킬 수 있다.
한편, 낸드 플래시 메모리의 페이지 크기는 유동적으로 변경되는 것이 아니고 초기 설계(design) 시 타깃 호스트 디바이스(target host device)의 패턴에 고려된다.
도 9 (a) 및 (b)는 본 발명의 실시 예에 따른 낸드 플래시 메모리 장치에서의 데이터 처리 알고리즘을 도시하고 있다. 여기서, 큰 페이지 크기(8K 혹은 16K)의 낸드 플래시 어레이들과 작은 페이지 크기(4K)의 낸드 플래시 어레이들로 구성된 상기 낸드 플래시 메모리 장치를 고려하여 설명한다.
상기 도 9(a)를 참조하면, 작은 페이지 크기 파티션을 사용하여 부분 데이터 쓰기(partial data write)를 하는 경우, 버퍼(900) 내 데이터가 4KB에 얼라인(align)될 때 섹터 패딩(sector padding)이 필요 없으며 바로 버퍼(900) 내4KB 데이터를 임시블록(902)으로 데이터 쓰기(data write)(904)를 하면 되기 때문에 실제 낸드 플래시 메모리 장치는 4KB 쓰기만 발생한다.
상기 도 9(b)를 참조하면, 해당 파티션의 페이지 크기보다 작은 데이터가 들어오거나 4KB 얼라인(allign)에 맞지 않은 경우 기본 블록(912)으로부터 데이터를 읽어와 버퍼(910)에 채워지지 않은 부분만 섹터 패딩(padding)(916)을 해주고, 새로운 데이터와 패딩된 데이터를 포함한 버퍼(910)의 4KB 데이터를 임시블록(914)에 쓰기(918) 한다.
비록, 4KB 읽기와 4KB 쓰기가 발생하지만, 섹터 수가 8KB, 16KB의 페이지보다 작아 데이터 입/출력 시간이 큰 페이지 크기(8K 혹은 16K)의 낸드 플래시 어레이의 입/출력 시간보다 작다.
도 10은 본 발명의 실시 예에 따른 낸드 플래시 메모리 장치 동작을 도시하고 있다.
상기 도 10을 참조하면, 플래시 메모리 장치는 1000단계에서 애플리케이션 계층에서 발생하는 데이터 패턴을 분석한다.
이후, 상기 플래시 메모리 장치는 1002단계에서 분석결과에 기반하여 페이지 크기를 선택한다. 예를 들어, 사진이나 동영상 촬영과 같이 크기가 큰 데이터에 대해서는 큰 페이지 크기의 메모리 파티션을 선택하고, SMS(Short Message Service), 폰북 (phonebook), 일정관리 등 같은 크기가 작은 데이터에 대해서는 작은 페이지 크기의 메모리 파티션을 선택한다.
이후, 상기 플래시 메모리 장치는 1004단계에서 데이터 크기가 페이지 크기보다 작은지를 판단하여, 데이터 크기가 페이지 크기보다 작을 시 1006단계로 진행하여 기존 블록으로부터 데이터를 읽어와 버퍼에 패딩을 수행하고, 1008단계에서 버퍼에 있는 페이지 크기의 데이터를 임시블록에 쓰기를 수행한다(도 9 (b) 참조).
만약, 데이터 크기가 페이지 크기와 같거나 클 시 1008단계로 진행하여 데이터 패딩없이 바로 버퍼에 있는 페이지 크기의 데이터를 임시블록에 쓰기를 수행한다(도 9 (a) 참조).
이후, 본 발명의 절차를 종료한다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 플래시 메모리 장치, 102: 제어기, 104: I/O, 108: 데이터 레지스터, 110: 블록, 120: 페이지.

Claims (15)

  1. 플래시 메모리 장치에 있어서,
    상기 플래시 메모리 장치의 내부에 복수의 플래시 어레이들을 포함하고,
    상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되는 것을 특징으로 하는 플래시 메모리 장치.
  2. 제1항에 있어서,
    대용량의 연속적 쓰기 데이터 패턴이 많은 경우, 상기 적어도 둘 이상의 페이지 크기 중 큰 페이지 크기의 파티션이 할당되고,
    무작위 부분 데이터 패턴이 많은 경우, 상기 적어도 둘 이상의 페이지 크기 중 작은 페이지 크기의 파티션이 할당되는 것을 특징으로 하는 플래시 메모리 장치.
  3. 제1항에 있어서,
    상기 플래시 메모리 장치는 데이터를 기록하는 버퍼 및;
    상기 복수의 플래시 어레이들과 상기 버퍼 사이 데이터를 주소 매핑을 통해 처리하는 제어기를 더 포함하는 것을 특징으로 하는 플래시 메모리 장치.
  4. 제1항에 있어서,
    상기 플래시 어레이는 복수의 블록들을 포함하여 구성되고,
    상기 블록은 다수의 페이지를 포함하여 구성되는 것을 특징으로 하는 플래시 메모리 장치.
  5. 플래시 메모리 장치에 있어서,
    데이터를 버퍼링하는 버퍼와,
    상기 버퍼에 있는 상기 데이터를 해당 플래시 어레이의 블록 내의 페이지에 쓰거나, 상기 해당 플래시 어레이의 블록 내의 페이지에 기저장된 데이터를 상기 버퍼로 읽어오도록 제어하는 제어기와,
    상기 제어기의 메모리 명령어에 따라, 상기 버퍼에 있는 상기 데이터를 저장하거나 기저장된 데이터를 상기 버퍼에 제공하는 복수의 플래시 어레이들을 포함하고,
    상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되는 것을 특징으로 하는 플래시 메모리 장치.
  6. 제5항에 있어서,
    대용량의 연속적 쓰기 데이터 패턴이 많은 경우, 상기 적어도 둘 이상의 페이지 크기 중 큰 페이지 크기의 파티션이 할당되고,
    무작위 부분 데이터 패턴이 많은 경우, 상기 적어도 둘 이상의 페이지 크기 중 작은 페이지 크기의 파티션이 할당되는 것을 특징으로 하는 플래시 메모리 장치.
  7. 제5항에 있어서,
    상기 플래시 어레이는 복수의 블록들을 포함하여 구성되고,
    상기 블록은 다수의 페이지를 포함하여 구성되는 것을 특징으로 하는 플래시 메모리 장치.
  8. 전자 장치에 있어서,
    플래시 메모리 장치와,
    하나 이상의 프로세서를 포함하고,
    상기 플래시 메모리 장치는 상기 하나 이상의 프로세서에 의해 데이터를 쓰기/읽기/지우기를 수행하고,
    상기 플래시 메모리 장치의 내부에 복수의 플래시 어레이들을 포함하고,
    상기 복수의 플래시 어레이들은 적어도 둘 이상의 페이지 크기에 따라 파티션으로 구분으로 되는 것을 특징으로 하는 전자 장치.
  9. 제8항에 있어서,
    상기 플래시 메모리 장치는,
    데이터를 버퍼링하는 버퍼와,
    상기 버퍼에 있는 상기 데이터를 해당 플래시 어레이의 블록 내의 페이지에 쓰거나, 상기 해당 플래시 어레이의 블록 내의 페이지에 기저장된 데이터를 상기 버퍼로 읽어오도록 제어하는 제어기와,
    상기 제어기의 메모리 명령어에 따라, 상기 버퍼에 있는 상기 데이터를 저장하거나 기저장된 데이터를 상기 버퍼에 제공하는 복수의 플래시 어레이들을 포함하는 것을 특징으로 하는 전자장치.
  10. 제9항에 있어서,
    대용량의 연속적 쓰기 데이터 패턴이 많은 경우, 상기 적어도 둘 이상의 페이지 크기 중 큰 페이지 크기의 파티션이 할당되고,
    무작위 부분 데이터 패턴이 많은 경우, 상기 적어도 둘 이상의 페이지 크기 중 작은 페이지 크기의 파티션이 할당되는 것을 특징으로 하는 플래시 메모리 장치.
  11. 제9항에 있어서,
    상기 플래시 어레이는 복수의 블록들을 포함하여 구성되고,
    상기 블록은 다수의 페이지를 포함하여 구성되는 것을 특징으로 하는 플래시 메모리 장치.
  12. 플래시 메모리 장치에서 데이터를 저장하는 방법에 있어서,
    데이터 패턴에 따라, 적어도 둘 이상의 페이지 크기에 해당하는 복수의 플래시 어레이 그룹 중 어느 하나를 선택하는 과정과,
    상기 선택된 페이지 크기에 해당하는 플래시 어레이에 상기 데이터를 저장하는 과정을 포함하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 선택된 페이지 크기에 해당하는 플래시 어레이에 상기 데이터를 저장하는 과정은,
    상기 데이터가 상기 선택된 페이지 크기보다 크거나 같을 시, 상기 선택된 페이지 크기로 상기 데이터를 해당 플래시 어레이의 블록 내의 페이지영역에 쓰는 것을 특징을 하는 방법.
  14. 제12항에 있어서,
    상기 선택된 페이지 크기에 해당하는 플래시 어레이에 상기 데이터를 저장하는 과정은,
    상기 데이터가 상기 선택된 페이지 크기보다 작을 시, 해당 플래시 어레이의 블록 내의 페이지로부터 데이터를 읽어 버퍼에 패딩하는 과정과,
    상기 버퍼 내에 상기 패딩된 데이터와 저장할 데이터를 상기 선택된 페이지 크기로 상기 데이터를 해당 플래시 어레이의 블록 내의 페이지영역에 쓰는 과정을 포함하는 것을 특징을 하는 방법.
  15. 제12항에 있어서,
    상기 플래시 어레이는 복수의 블록들을 포함하여 구성되고,
    상기 블록은 다수의 페이지를 포함하여 구성되는 것을 특징으로 하는 방법.
KR1020120018431A 2012-02-23 2012-02-23 플래시 메모리 장치 KR20130096881A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120018431A KR20130096881A (ko) 2012-02-23 2012-02-23 플래시 메모리 장치
US13/706,565 US20130227198A1 (en) 2012-02-23 2012-12-06 Flash memory device and electronic device employing thereof
EP12198253.2A EP2665065A3 (en) 2012-02-23 2012-12-19 Electronic device employing flash memory
CN2013100555104A CN103294604A (zh) 2012-02-23 2013-02-19 闪存器件和使用闪存器件的电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120018431A KR20130096881A (ko) 2012-02-23 2012-02-23 플래시 메모리 장치

Publications (1)

Publication Number Publication Date
KR20130096881A true KR20130096881A (ko) 2013-09-02

Family

ID=47747275

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120018431A KR20130096881A (ko) 2012-02-23 2012-02-23 플래시 메모리 장치

Country Status (4)

Country Link
US (1) US20130227198A1 (ko)
EP (1) EP2665065A3 (ko)
KR (1) KR20130096881A (ko)
CN (1) CN103294604A (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5983019B2 (ja) * 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US9417815B1 (en) * 2013-06-21 2016-08-16 Amazon Technologies, Inc. Capturing snapshots of storage volumes
KR102164617B1 (ko) * 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
US9423961B2 (en) 2014-09-08 2016-08-23 Apple Inc. Method to enhance programming performance in multilevel NVM devices
CN105575425A (zh) * 2014-10-09 2016-05-11 宏碁股份有限公司 存储器晶片、其资料读取方法以及资料储存系统
CN106155947B (zh) * 2015-04-03 2019-02-22 南京理工大学 一种数据存储模块的实现方法
JP2017004146A (ja) * 2015-06-08 2017-01-05 富士通株式会社 ストレージ制御装置
US20170017571A1 (en) * 2015-07-17 2017-01-19 Samsung Electronics Co., Ltd. Method and apparatus fori n-line deduplication in storage devices
KR20170015708A (ko) * 2015-07-30 2017-02-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
US9940028B2 (en) 2015-11-13 2018-04-10 Samsung Electronics Co., Ltd Multimode storage device
US9946642B2 (en) 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management
US9990304B2 (en) * 2015-11-13 2018-06-05 Samsung Electronics Co., Ltd Multimode storage management system
US9996473B2 (en) 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
US9811284B2 (en) 2015-12-20 2017-11-07 Apple Inc. One-pass programming in a multi-level nonvolatile memory device with improved write amplification
US11100996B2 (en) * 2017-08-30 2021-08-24 Micron Technology, Inc. Log data storage for flash memory
CN108958657B (zh) * 2018-06-27 2022-03-04 深圳市德明利技术股份有限公司 一种数据存储方法、存储设备及存储系统
US10872035B1 (en) * 2019-05-29 2020-12-22 Apple Inc. Systems and methods for managing an artificially limited logical space of non-volatile memory
CN112732182A (zh) * 2020-12-29 2021-04-30 北京浪潮数据技术有限公司 一种nand的数据写入方法及相关装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6041016A (en) * 1998-12-04 2000-03-21 Intel Corporation Optimizing page size in mixed memory array using address multiplexing
US20080071973A1 (en) * 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
US20020044486A1 (en) * 2000-10-16 2002-04-18 Cheng-Sheng Chan IC card with different page sizes to increase endurance
US6760805B2 (en) * 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US7873779B2 (en) * 2007-05-14 2011-01-18 Qualcomm Incorporated Memory page size auto detection
US8068365B2 (en) * 2008-02-04 2011-11-29 Mosaid Technologies Incorporated Non-volatile memory device having configurable page size
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US20110060865A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Flash Memory Utilization

Also Published As

Publication number Publication date
CN103294604A (zh) 2013-09-11
US20130227198A1 (en) 2013-08-29
EP2665065A3 (en) 2014-01-22
EP2665065A2 (en) 2013-11-20

Similar Documents

Publication Publication Date Title
KR20130096881A (ko) 플래시 메모리 장치
US11709597B2 (en) Memory system and method for controlling nonvolatile memory
US11748256B2 (en) Memory system and method for controlling nonvolatile memory
US9652386B2 (en) Management of memory array with magnetic random access memory (MRAM)
US8364931B2 (en) Memory system and mapping methods using a random write page mapping table
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US8650379B2 (en) Data processing method for nonvolatile memory system
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
KR20090131146A (ko) 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
KR20100011698A (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템 및 그제어 방법
EP2829969A1 (en) Controller management of memory array of storage device using magnetic random access memory (MRAM)
JPWO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
US20190146926A1 (en) Storage device and operating method of storage device
CN101866320A (zh) 数据管理方法及使用此方法的闪存储存系统与控制器
CN116795735B (zh) 固态硬盘空间分配方法、装置、介质及系统
CN106326132B (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
CN113986773A (zh) 基于固态硬盘的写放大优化方法、装置及计算机设备
JP2011186563A (ja) メモリ管理装置およびメモリ管理方法
CN113805792A (zh) 存储器系统及其操作方法
KR20120034976A (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR100780963B1 (ko) 메모리 카드 및 메모리 카드의 구동 방법
KR20090046568A (ko) 플래시 메모리 시스템 및 그것의 쓰기 방법
KR101609304B1 (ko) 멀티칩 플래시 저장장치 및 그 방법
US11698739B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid