KR101030146B1 - 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법 - Google Patents

페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법 Download PDF

Info

Publication number
KR101030146B1
KR101030146B1 KR1020080085146A KR20080085146A KR101030146B1 KR 101030146 B1 KR101030146 B1 KR 101030146B1 KR 1020080085146 A KR1020080085146 A KR 1020080085146A KR 20080085146 A KR20080085146 A KR 20080085146A KR 101030146 B1 KR101030146 B1 KR 101030146B1
Authority
KR
South Korea
Prior art keywords
page buffer
address
data
write
write command
Prior art date
Application number
KR1020080085146A
Other languages
English (en)
Other versions
KR20100026227A (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 KR1020080085146A priority Critical patent/KR101030146B1/ko
Priority to PCT/KR2008/007648 priority patent/WO2010024506A1/en
Publication of KR20100026227A publication Critical patent/KR20100026227A/ko
Application granted granted Critical
Publication of KR101030146B1 publication Critical patent/KR101030146B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

플래시 메모리 기반 저장 장치의 페이지 버퍼를 쓰기 캐시로 이용하는 방법을 제시한다. 플래시 메모리 장치는 읽기, 쓰기 요청 시 임시로 데이터를 저장하기 위한 페이지 버퍼를 포함한다. 제1 쓰기 명령에 대응하는 프로그래밍 동작은 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이로 프로그램한다. 이 때 프로그래밍 동작이 실패할 경우, 플래시 메모리 장치는 제2 쓰기 명령을 수신하고, 제2 쓰기 명령에 대응하는 프로그래밍 동작은 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이로 프로그램한다. 제2 쓰기 명령은 제1 쓰기 명령과 동일한 데이터에 대한 쓰기 명령이므로, 플래시 메모리 장치는 페이지 버퍼에 이미 저장된 데이터를 이용하면 별도의 데이터를 수신하지 않아도 충분하다.
NAND 플래시 메모리, 페이지 버퍼, 쓰기 캐시

Description

페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법 {FLASH BASED STORAGE DEVICE USING PAGE BUFFER AS WRITE CACHE AND METHOD OF USING THE SAME}
본 발명의 실시예들은 플래시 메모리 장치(flash memory device)에 데이터를 저장하는 방법에 관한 것이다. 본 연구는 지식경제부 및 정보통신연구진흥원의 IT성장동력기술개발사업의 일환으로 수행하였다. [2006-S-040-03, Flash Memory 기반 임베디드 멀티미디어 소프트웨어 기술 개발]
플래시 메모리는 전원이 공급되지 않아도 저장된 데이터가 유지되는 비휘발성 메모리(non-volatile memory)로서, 칩 전체 혹은 일부를 전기적으로(electrically) 소거하고 (erase) 다시 쓸 수 있는 기능을 제공한다.
플래시 메모리는 메모리 셀(cell) 어레이(array)의 구조에 따라 NAND, NOR 등의 여러 가지 타입으로 분류될 수 있다. 여기서 메모리 셀은 1비트의 데이터를 저장할 수 있는 최소 단위이다.
NAND 플래시 메모리는 고집적화 및 대용량화가 가능하므로 기존의 하드 디스크를 대체할 소자로서 메모리 시장에서 급격히 주목을 받고 있다. 현재 NAND 플래 시 메모리는 휴대폰, 디지털 카메라, MP3 플레이어, 캠코더, PDA 등 휴대형 모바일 기기의 저장매체로 널리 이용되고 있다.
그러나, 플래시 메모리는 SRAM(Static Random Access Memory)이나 DRAM(Dynamic Random Access Memory)에 비해 데이터를 읽고 쓰는 시간이 길다. 플래시 메모리에 저장된 데이터를 소거하는 시간 및 플래시 메모리에 데이터를 저장하는 시간은 플래시 메모리에 저장된 데이터를 읽는 시간보다 길다. 이러한 비대칭성으로 인해 플래시 메모리 장치는 페이지(page)라고 불리는 단위 (주로 512B, 2KB, 4KB)로 데이터를 읽고 쓸 수 있다. 플래시 메모리 장치는 하나의 페이지에 대응하는 데이터를 동시에 저장할 수 있다. 이 때 플래시 메모리 장치는 페이지 버퍼(page buffer)를 포함하고, 페이지 버퍼에 데이터 페이지를 저장한 후, 데이터 페이지를 한꺼번에 메모리 셀들에 저장할 수 있다.
본 발명의 일 실시예에 따르면 플래시 메모리 장치와 외부의 호스트 간의 데이터 전송 횟수를 줄이기 위하여 페이지 버퍼를 쓰기 캐시로 이용할 수 있다.
본 발명의 일 실시예에 따르면 플래시 메모리 장치는 페이지 버퍼에 저장된 데이터를 복수의 프로그래밍 동작에 이용할 수 있다.
본 발명의 일 실시예에 따르면 플래시 메모리 장치의 프로그래밍의 실패에 따른 페널티를 줄이기 위하여 페이지 버퍼에 저장된 데이터를 이용할 수 있다.
본 발명의 일 실시예에 따른 플래시 메모리 장치는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 외부 호스트로부터 수신된 데이터를 데이터 페이지로서 저장하는 페이지 버퍼, 상기 저장된 데이터 페이지를 상기 메모리 셀 어레이 내의 제1 주소에 프로그램하도록 상기 페이지 버퍼를 제어하는 제어부를 포함할 수 있다. 이 때 제어부는 소정의 조건에 기초하여 상기 저장된 데이터 페이지를 상기 메모리 셀 어레이 내의 제2 주소에 프로그램하도록 상기 페이지 버퍼를 제어할 수 있다.
본 발명의 일 실시예에 따른 플래시 메모리 이용 방법은 외부 호스트로부터 데이터를 수신하여 페이지 버퍼에 저장하는 단계, 상기 외부 호스트로부터 수신된 프로그램 명령에 대응하여 상기 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이 내의 제1 주소에 프로그램하는 단계, 상기 제1 주소에 대응하는 프로그래밍이 성공 했는지 여부를 판정하는 단계, 및 상기 제1 주소에 대응하는 프로그래밍이 실패했으면, 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 제2 주소에 프로그램하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 플래시 메모리 이용 방법은 외부 호스트로부터 데이터를 수신하여 페이지 버퍼에 저장하는 단계, 상기 외부 호스트로부터 수신된 제1 프로그램 명령에 대응하여 상기 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이 내의 제1 주소 - 상기 제1 주소는 상기 제1 프로그램 명령에 대응함 - 에 프로그램하는 단계, 및 상기 외부 호스트로부터 수신된 제2 프로그램 명령에 대응하여 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 제2 주소 - 상기 제2 주소는 상기 제2 프로그램 명령에 대응함 - 에 프로그램하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 플래시 메모리 이용 방법은 페이지 버퍼에 데이터를 저장하는 단계, 제1 프로그램 명령에 응답하여, 상기 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이 내의 제1 주소 - 상기 제1 주소는 상기 제1 프로그램 명령에 대응함 - 에 프로그램하는 단계, 제2 프로그램 명령이 상기 페이지 버퍼에 저장된 데이터를 이용하는 명령인지 여부를 판정하는 단계, 및 상기 제2 프로그램 명령이 상기 페이지 버퍼에 저장된 데이터를 이용하는 경우, 상기 제2 프로그램 명령에 응답하여, 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 제2 주소 - 상기 제2 주소는 상기 제2 프로그램 명령에 대응함 - 에 프로그램하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따르면 플래시 메모리 장치의 페이지 버퍼를 쓰기 캐시로 이용함으로써 플래시 메모리 장치와 외부의 호스트 간의 데이터 전송 횟수를 줄일 수 있다.
본 발명의 일 실시예에 따르면 플래시 메모리 장치는 페이지 버퍼에 저장된 데이터를 복수의 프로그래밍 동작에 이용할 수 있다.
본 발명의 일 실시예에 따르면 플래시 메모리 장치는 페이지 버퍼를 쓰기 캐시로 이용함으로써 프로그래밍의 실패에 따른 페널티를 줄일 수 있다.
이하에서, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)를 도시하는 도면이다.
플래시 메모리 장치(100)는 메모리 셀 어레이(110), 페이지 버퍼(120) 및 제어부(130)를 포함한다.
메모리 셀 어레이(110)는 복수의 메모리 셀들을 포함할 수 있다.
복수의 메모리 셀들은 셀 당 하나의 비트가 저장되는 싱글 비트 셀 (Single Bit Cell, SBC) 또는 셀 당 둘 이상의 비트가 저장되는 멀티 비트 셀 (Multi- Bit Cell, MBC)일 수 있다. SBC는 싱글 레벨 셀 (Single Level Cell, SLC) 이라고도 불리고, MBC는 멀티 레벨 셀 (Multi-Level Cell, MLC)라고도 불리기도 한다.
제어부(130)는 외부의 호스트(140)로부터 쓰기 요청(write request)를 수신하고, 페이지 버퍼 (page buffer) (120)가 호스트(140)로부터 쓰기 데이터 (write data)를 수신하도록 페이지 버퍼(120)를 제어할 수 있다.
페이지 버퍼 (page buffer) (120)는 호스트(140)로부터 쓰기 데이터 (write data)를 수신하고, 수신된 쓰기 데이터를 저장할 수 있다.
페이지 버퍼(120)는 호스트(140)로부터 바이트 (byte) 또는 워드 (word) 단위로 쓰기 데이터를 수신할 수 있다.
복수의 메모리 셀들에 데이터가 프로그램되는 과정에는 복수의 메모리 셀들로부터 데이터를 읽는 과정보다 긴 시간이 걸리므로 플래시 메모리 장치(100)는 페이지 단위로 데이터를 프로그램할 수 있다. 페이지(page)는 동시에 프로그램되는 복수의 메모리 셀들의 집합(set)일 수 있다. 하나의 페이지에 프로그램되는 데이터를 데이터 페이지라 할 수 있다. 데이터 페이지는, 예를 들어 256 bytes 일 수도 있고, 4 kilobytes 일 수도 있다.
페이지 버퍼(120)는 하나 이상의 데이터 페이지를 저장할 수 있다. 페이지 버퍼(120)는 호스트(140)로부터 수신된 쓰기 데이터를 쓰기 데이터의 페이지 내에서의 주소에 대응하는 위치에 저장할 수 있다.
페이지 버퍼(120)의 존재는, 호스트(140) 및 플래시 메모리 장치(100) 간에 랜덤 억세스 (random access)를 가능하게 할 수 있다. 페이지 버퍼(120)는 호스트(140)로부터 전송되는 데이터를 저장해 두었다가 프로그램 명령 (program command)에 응답하여 데이터를 한꺼번에 메모리 셀 어레이(110)에 프로그램할 수 있다.
플래시 메모리 장치(100)는 프로그래밍의 목표가 되었던 메모리 셀 또는 메모리 셀들의 문턱 전압 (threshold voltage)이 목표 범위에 도달했는지 여부를 판정함으로써 프로그래밍의 성공 여부를 판정할 수 있다. 예를 들어 데이터 "1"에 대응하는 셀의 문턱 전압의 목표 범위는 1V ~ 2V 이고, 데이터 "0"에 대응하는 셀의 문턱 전압의 목표 범위는 3V ~ 4V 일 수 있다. 플래시 메모리 장치(100)는 프로그래밍에 대응하는 데이터 및 메모리 셀의 문턱 전압에 기초하여 프로그래밍의 성공 여부를 판정할 수 있다.
페이지 버퍼(120)로부터 메모리 셀 어레이(110)에 대한 프로그래밍이 실패한 경우, 프로그래밍의 목표가 되었던 메모리 셀 또는 메모리 셀들은 더 이상 free한 상태가 아니며, valid 한 상태도 아니다.
플래시 메모리 장치(100)는 새로운 메모리 셀 또는 메모리 셀들을 선택하고, 상기 선택된 메모리 셀 또는 메모리 셀들에 대하여 실패한 프로그래밍에 대응하는 데이터를 프로그램할 수 있다.
이 때 다시 시도되는 프로그래밍의 데이터는 이미 실패한 프로그래밍의 데이터와 동일하다. 플래시 메모리 장치(100)는 데이터를 재전송하지 않고 주소만을 재설정하는 쓰기 명령을 제공할 수 있다. 호스트(140)는 플래시 메모리 장치(100)로 데이터를 재전송하지 않고 새롭게 설정된 주소만을 쓰기 명령과 함께 플래시 메모리 장치(100)로 전송할 수 있다.
이 때 플래시 메모리 장치 (100) 및 호스트 (140) 간의 불필요한 데이터 전송이 제거되므로, 호스트 (140)는 플래시 메모리 장치 (100) 와의 데이터 경로 (data path)를 보다 효율적으로 이용할 수 있다.
다른 실시예에 따르면, 플래시 메모리 장치(100)는 새로운 주소를 내부적으로 생성할 수 있다. 이 때 호스트(140)는 데이터 및 새로운 주소를 전송할 필요 없이 다시 쓰기 명령 (re-write command)을 플래시 메모리 장치(100)로 전송할 수 있다. 다시 쓰기 명령은 재시도 명령 (re-try command)으로 불리어질 수도 있다.
플래시 메모리 장치(100)가 새로운 주소를 내부적으로 생성하는 경우, 새롭게 생성된 주소는 물리 주소 (physical address)이고, 호스트(140)로부터 플래시 메모리 장치(100)로 전송된 주소 (실패한 프로그래밍에 대응하는 주소)는 논리 주소 (logical address)일 수도 있다. 제어부(130)는 이 때 논리 주소 및 물리 주소 간의 매핑 정보를 저장할 수 있다.
다른 실시예에 따르면, 플래시 메모리 장치(100)는 동일한 데이터를 복수의 주소들에 프로그램하는 프로그램 동작(operation)을 제공할 수 있다.
상기 제공되는 프로그램 동작은 테스트 동작일 수도 있고, RAID (redundant arrays of independent disks)의 다양한 타입에 대응하는 프로그램 동작일 수도 있다.
예를 들어, RAID 1 타입은 동일한 데이터를 복수의 블록들에 중복하여 저장할 수 있다. RAID 1 타입은 저장된 데이터의 읽기 속도를 향상시킬 수 있으며, 고장이 발생한 경우에도 안정성을 유지할 수 있다. 이러한 중복 저장 기법을 미러링 (mirroring)이라 하기도 한다.
테스트 동작은 메모리 셀 어레이(110)의 메모리 셀의 유효성 여부, 쓰기 / 읽기 동작의 안정성 등을 테스트하려는 목적에서 수행될 수 있다. 이 때 동일한 데이터를 반복적으로 서로 다른 주소들에 프로그램하는 방법을 통하여 전체 테스트 과정에 걸리는 시간을 줄일 수 있다. 이 때 호스트 (140)로부터 플래시 메모리 장치(100) 간의 데이터 전송은 한 번으로 충분하므로 전체 테스트 과정에 걸리는 시간을 크게 줄일 수 있다.
다른 실시예에 따르면, 페이지 버퍼(120)는 하나 이상의 데이터 페이지들을 저장할 수 있고, 제어부(130)는 호스트(140)로부터 수신된 프로그램 명령이 페이지 버퍼(120)에 저장된 하나 이상의 데이터 페이지들 중 어느 하나에 대응하는 것인지 여부를 판정할 수 있다. 수신된 프로그램 명령이 페이지 버퍼(120)에 저장된 하나 이상의 데이터 페이지들 중 어느 하나에 대응하면 제어부(130)는 프로그램 명령에 대응하는 데이터 페이지를 메모리 셀 어레이(110)의 새로운 주소에 프로그램하도록 페이지 버퍼(120)를 제어할 수 있다. 이 때 페이지 버퍼(120)는 호스트(140)로부터 프로그램 명령에 대응하는 데이터를 추가적으로 수신하지 않을 수 있다. 제어부(130)는 상기 새로운 주소를 내부적으로 생성할 수도 있고, 호스트(140)로부터 프로그램 명령과 동시에 또는 프로그램 명령을 수신한 후에 수신할 수도 있다. 이 때 페이지 버퍼(120)는 프로그래밍이 종료된 후에도 저장된 데이터 페이지를 삭제(delete)하지 않고 그대로 유지할 수 있다.
도 1에서는 페이지 버퍼(120)를 제어하는 기능을 플래시 메모리 장치 (100) 의 내부에 위치한 제어부(130)가 수행하는 실시예가 도시되었다. 플래시 메모리 장치(100)는 하나 또는 둘 이상의 칩 (chip)으로 구현될 수 있다. 제어부(130)는 플래시 메모리 장치(100)가 구현된 칩 내부에 포함될 수도 있고, 칩의 외부에 위치할 수도 있다. 제어부(130)는 소프트웨어 적인 방법으로 구현될 수도 있고, 칩 내부의 페리페럴 (peripheral) 회로를 이용하여 구현될 수도 있다.
도 2에서는 칩(220) 외부의 컨트롤러 (210)에 의하여 제어부(130)의 기능이 구현되는 실시예가 도시된다.
도 2를 참조하면 컨트롤러 (210)는 외부의 호스트로부터 추상화된 명령을 수신하고, 추상화된 명령을 제어 신호로 변환할 수 있다. 컨트롤러 (210)는 변환된 제어 신호를 NAND 플래시 칩 (220)으로 전송하여, NAND 플래시 칩 (220)의 동작을 제어할 수 있다.
도 2의 실시예에서는, NAND 플래시 칩 (220)은 메모리 셀 어레이, 페이지 버퍼를 포함할 수 있고, 페이지 버퍼의 동작을 컨트롤러 (210)가 제어할 수 있다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리 이용 방법을 도시하는 도면이다.
도 3을 참조하면, 플래시 메모리 장치 (100)는 호스트 (140)로부터 쓰기 명령의 주소를 수신한다 (S310).
플래시 메모리 장치 (100)는 호스트 (140)로부터 페이지 버퍼(120)로 쓰기 명령의 데이터를 로드 (load) 한다 (S320).
플래시 메모리 장치 (100)는 로드된 데이터를 페이지 버퍼 (120)로부터 메모 리 셀 어레이 (110) 내의 수신된 주소에 프로그램한다 (S330).
플래시 메모리 장치 (100)는 쓰기 명령이 성공했는지 여부를 판정한다 (S340).
플래시 메모리 장치 (100)는 쓰기 명령이 실패했으면 새로운 주소를 수신한다 (S350). 이 때 실시예에 따라서는 플래시 메모리 장치 (100)는 새로운 주소를 내부적으로 생성할 수도 있다.
플래시 메모리 장치 (100)는 새로운 주소를 이용하여 로드된 데이터를 페이지 버퍼 (120)로부터 메모리 셀 어레이(110)로 프로그램한다 (S330).
플래시 메모리 장치 (100)는 쓰기 명령이 성공했으면 해당 프로세스를 종료한다.
도 4는 본 발명의 일 실시예에 따른 플래시 메모리 장치 (400)를 도시하는 도면이다.
도 4를 참조하면 플래시 메모리 장치 (400)는 페이지 버퍼 (420), 메모리 셀 어레이 (410)를 포함한다.
메모리 셀 어레이 (410)는 주소에 따라 제1 페이지 (411), 제2 페이지 (412), 제3 페이지 (413)를 포함할 수 있다.
메모리 셀 어레이 (410) 내의 메모리 셀들은 페이지 단위로 접근될 수 있다. 동시에 소거되는 메모리 셀들의 집합(set)을 블록(block) 또는 소거 블록 (erase block)이라 하고, 동시에 프로그래밍 동작의 목표가 되는 메모리 셀들의 집합을 페이지라 한다.
블록은 복수의 페이지들을 포함할 수 있다. 메모리 셀 어레이 (410) 내의 페이지들을 가리키는 주소는 블록 주소 필드 및 페이지 오프셋 필드를 포함할 수 있다. 예를 들어, 제1 페이지(411)가 block 0에 포함되는 경우, 제1 페이지 (411)의 블록 주소 필드는 "0"일 수 있다. 제1 페이지 (411)의 block 0 내에서의 위치가 페이지 오프셋 필드에 의하여 나타내어진다.
도 4에서는 페이지 버퍼 (420)에 저장된 데이터를 3개의 서로 다른 페이지들 (411, 412, 413)에 프로그램하는 실시예가 도시된다. 이러한 동작은 테스트 동작일 수도 있고, 데이터 미러링에 관련된 동작일 수도 있다.
도 4에서는 3개의 페이지들 (411, 412, 413)에 동일한 데이터가 프로그램되는 실시예가 도시되었으나 본 발명의 사상은 본 실시예에 국한되지 않고, 동일한 데이터가 프로그램되는 페이지들의 개수에 한정되지 않는다.
본 발명의 일 실시예에 따른 플래시 메모리 이용 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다. 상기 하드웨어 장치는 플래시 메모리 장치에 내장된 페리페럴 (peripheral) 회로를 통해서도 구현될 수 있고, 또는 플래시 메모리 장치 외부의 콘트롤러에 의하여 구현될 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)를 도시하는 도면이다.
도 2는 본 발명의 일 실시예에 따른 컨트롤러 (210) 및 NAND 플래시 Chip (220)를 도시하는 도면이다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리 이용 방법을 도시하는 동작 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 플래시 메모리 장치(400)를 도시하는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
100: 플래시 메모리 장치
110: 메모리 셀 어레이
120: 페이지 버퍼
130: 제어부
140: 호스트

Claims (19)

  1. 복수의 메모리 셀들을 포함하는 메모리 셀 어레이;
    외부 호스트로부터 수신된 데이터를 데이터 페이지로서 저장하는 페이지 버퍼; 및
    상기 페이지 버퍼에 저장된 데이터 페이지를 상기 메모리 셀 어레이 내의 제1 주소에 쓰도록 상기 페이지 버퍼를 제어하는 제어부
    를 포함하고,
    상기 제어부는 소정의 조건에 따라 상기 페이지 버퍼를 쓰기 캐시로서 이용하여 상기 외부 호스트로부터 수신된 데이터를 중복적으로 수신함이 없이 상기 페이지 버퍼에 저장된 데이터 페이지를 상기 메모리 셀 어레이 내의 제2 주소에 쓰도록 상기 페이지 버퍼를 제어하는 플래시 메모리 장치.
  2. 제1항에 있어서,
    상기 소정의 조건은 상기 제1 주소에 대응하는 쓰기가 실패하는 조건인 플래시 메모리 장치.
  3. 제1항에 있어서,
    상기 페이지 버퍼는
    상기 제1 주소 또는 상기 제2 주소에 대응하는 쓰기가 종료된 후에도 상기 페이지 버퍼에 저장된 데이터 페이지를 삭제하지 않는 플래시 메모리 장치.
  4. 제1항에 있어서,
    상기 소정의 조건은 쓰기 연산이 동일한 데이터 페이지를 복수의 주소들에 쓰는 조건인 플래시 메모리 장치.
  5. 제4항에 있어서,
    상기 소정의 조건은 상기 쓰기 연산이 상기 동일한 데이터 페이지를 상기 복수의 주소들에 쓰는 테스트 연산일 조건인 플래시 메모리 장치.
  6. 제4항에 있어서,
    상기 소정의 조건은 상기 쓰기 연산이 상기 동일한 데이터 페이지를 상기 복수의 주소들에 미러링하는 레이드(RAID) 연산일 조건인 플래시 메모리 장치.
  7. 삭제
  8. 제1항에 있어서,
    상기 제어부는
    상기 제2 주소를 상기 외부 호스트로부터 수신하거나 내부적으로 생성하는 플래시 메모리 장치.
  9. 외부 호스트로부터 데이터를 수신하여 페이지 버퍼에 저장하는 단계;
    상기 외부 호스트로부터 수신된 쓰기 명령에 대응하여 상기 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이 내의 제1 주소에 쓰는 단계;
    상기 제1 주소에 대응하는 쓰기가 성공했는지 여부를 판정하는 단계; 및
    상기 제1 주소에 대응하는 쓰기가 실패했으면, 상기 페이지 버퍼를 쓰기 캐시로서 이용하여 상기 외부 호스트로부터 수신된 데이터를 중복적으로 수신함이 없이 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 제2 주소에 쓰는 단계
    를 포함하는 플래시 메모리 이용 방법.
  10. 삭제
  11. 제9항에 있어서,
    상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 상기 제2 주소에 쓰는 단계는
    상기 제2 주소를 내부적으로 생성하거나 상기 외부 호스트로부터 상기 제2 주소를 수신하는 플래시 메모리 이용 방법.
  12. 외부 호스트로부터 데이터를 수신하여 페이지 버퍼에 저장하는 단계;
    상기 외부 호스트로부터 수신된 제1 쓰기 명령에 대응하여 상기 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이 내의 제1 주소 - 상기 제1 주소는 상기 제1 쓰기 명령에 대응함 - 에 쓰는 단계; 및
    상기 외부 호스트로부터 수신된 제2 쓰기 명령에 대응하여 상기 페이지 버퍼를 쓰기 캐시로서 이용하여 상기 외부 호스트로부터 수신된 데이터를 중복적으로 수신함이 없이 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 제2 주소 - 상기 제2 주소는 상기 제2 쓰기 명령에 대응함 - 에 쓰는 단계
    를 포함하는 플래시 메모리 이용 방법.
  13. 제12항에 있어서,
    상기 제1 쓰기 명령 및 상기 제2 쓰기 명령은 서로 동일한 데이터를 쓰는 명령인 플래시 메모리 이용 방법.
  14. 제13항에 있어서,
    상기 제1 쓰기 명령 및 상기 제2 쓰기 명령은 서로 동일한 데이터를 상기 제1 주소 및 제2 주소 각각에 미러링하는 명령인 플래시 메모리 이용 방법.
  15. 제13항에 있어서,
    상기 제1 쓰기 명령 및 상기 제2 쓰기 명령은 서로 동일한 데이터를 쓰는 테스트 명령인 플래시 메모리 이용 방법.
  16. 페이지 버퍼에 데이터를 저장하는 단계;
    제1 쓰기 명령에 응답하여, 상기 페이지 버퍼에 저장된 데이터를 메모리 셀 어레이 내의 제1 주소 - 상기 제1 주소는 상기 제1 쓰기 명령에 대응함 - 에 쓰는 단계;
    제2 쓰기 명령이 상기 페이지 버퍼에 저장된 데이터를 이용하는 명령인지 여부를 판정하는 단계; 및
    상기 제2 쓰기 명령이 상기 페이지 버퍼를 쓰기 캐시로서 이용하여 상기 페이지 버퍼에 저장된 데이터를 이용하는 경우, 상기 제2 쓰기 명령에 응답하여, 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 제2 주소 - 상기 제2 주소는 상기 제2 쓰기 명령에 대응함 - 에 쓰는 단계
    를 포함하는 플래시 메모리 이용 방법.
  17. 제16항에 있어서,
    상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 상기 제2 주소에 쓰는 단계는
    상기 제2 쓰기 명령에 대응하는 데이터를 추가로 수신하지 않는 플래시 메모리 이용 방법.
  18. 제16항에 있어서,
    상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 상기 제1 주소에 쓰는 단계 또는 상기 페이지 버퍼에 저장된 데이터를 상기 메모리 셀 어레이 내의 상기 제2 주소에 쓰는 단계는
    쓰기가 종료된 후에도 상기 페이지 버퍼에 저장된 데이터를 삭제하지 않는 플래시 메모리 이용 방법.
  19. 제9항 또는 제11항 내지 제18항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020080085146A 2008-08-29 2008-08-29 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법 KR101030146B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080085146A KR101030146B1 (ko) 2008-08-29 2008-08-29 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법
PCT/KR2008/007648 WO2010024506A1 (en) 2008-08-29 2008-12-24 Flash based storage device using page buffer as write cache and method of using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080085146A KR101030146B1 (ko) 2008-08-29 2008-08-29 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법

Publications (2)

Publication Number Publication Date
KR20100026227A KR20100026227A (ko) 2010-03-10
KR101030146B1 true KR101030146B1 (ko) 2011-04-18

Family

ID=41721653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080085146A KR101030146B1 (ko) 2008-08-29 2008-08-29 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법

Country Status (2)

Country Link
KR (1) KR101030146B1 (ko)
WO (1) WO2010024506A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582439B2 (en) 2013-11-14 2017-02-28 Samsung Electronics Co., Ltd. Nonvolatile memory system and operating method thereof
US11848069B2 (en) 2021-10-22 2023-12-19 Samsung Electronics Co., Ltd. Page buffer including latches and memory device including the page buffer

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880778B2 (en) * 2010-05-13 2014-11-04 Micron Technology, Inc. Memory buffer having accessible information after a program-fail
US20130031299A1 (en) * 2011-07-29 2013-01-31 Byungcheol Cho Disk input/output (i/o) layer architecture having block level device driver
KR102308777B1 (ko) 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
KR102438552B1 (ko) 2015-02-04 2022-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
KR20200048318A (ko) * 2018-10-29 2020-05-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6097452A (ja) 1983-11-02 1985-05-31 Oki Electric Ind Co Ltd メモリ制御方式
KR20040086923A (ko) * 2003-04-03 2004-10-13 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
KR20070048384A (ko) * 2005-11-04 2007-05-09 (주)아트칩스 메모리 맵에서 배드 블록 처리방법
US7290082B2 (en) * 2003-07-23 2007-10-30 Samsung Electronics Co., Ltd. Flash memory system and data writing method thereof

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7042770B2 (en) * 2001-07-23 2006-05-09 Samsung Electronics Co., Ltd. Memory devices with page buffer having dual registers and method of using the same
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6097452A (ja) 1983-11-02 1985-05-31 Oki Electric Ind Co Ltd メモリ制御方式
KR20040086923A (ko) * 2003-04-03 2004-10-13 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
US7290082B2 (en) * 2003-07-23 2007-10-30 Samsung Electronics Co., Ltd. Flash memory system and data writing method thereof
KR20070048384A (ko) * 2005-11-04 2007-05-09 (주)아트칩스 메모리 맵에서 배드 블록 처리방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582439B2 (en) 2013-11-14 2017-02-28 Samsung Electronics Co., Ltd. Nonvolatile memory system and operating method thereof
US11848069B2 (en) 2021-10-22 2023-12-19 Samsung Electronics Co., Ltd. Page buffer including latches and memory device including the page buffer

Also Published As

Publication number Publication date
WO2010024506A1 (en) 2010-03-04
KR20100026227A (ko) 2010-03-10

Similar Documents

Publication Publication Date Title
KR100878479B1 (ko) 데이터 정보에 따라 프로그램 방식을 결정하는 메모리시스템
KR100875539B1 (ko) 프로그램 방식을 선택할 수 있는 메모리 시스템
KR100894809B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
US8503257B2 (en) Read disturb scorecard
US7974139B2 (en) Non-volatile memory generating different read voltages
US8607120B2 (en) Semiconductor memory device for performing additional ECC correction according to cell pattern and electronic system including the same
US10762967B2 (en) Recovering from failure in programming a nonvolatile memory
KR100823170B1 (ko) 배드 블록을 싱글 레벨 셀 모드로 사용하는 메모리 시스템및 메모리 카드
KR101030146B1 (ko) 페이지 버퍼를 쓰기 캐시로 이용하는 플래시 기반 저장 장치 및 이용 방법
KR20200076886A (ko) 저장 장치 및 그 동작 방법
KR20130008300A (ko) 오버 프로그램을 이용하여 소거 동작을 수행하는 플래시 메모리 장치 및 그 동작방법
KR20220013661A (ko) 메모리 시스템, 메모리 장치 및 메모리 장치의 동작 방법
US8924774B2 (en) Semiconductor memory device and method for operating the same
CN112035060A (zh) 一种存储介质的错误检测方法、***及存储***
US11315650B2 (en) Memory system, memory controller, and method of operating memory system
US11216208B1 (en) Memory system, memory controller, and operation method of memory system
US20210365382A1 (en) Memory system, memory controller, and operation method thereof
KR20210012123A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
US11908535B2 (en) Memory device and memory controller and storage device including the memory device and memory controller
KR20230049858A (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20210028335A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR20210071314A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
KR20200118989A (ko) 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US11507509B2 (en) Memory system, memory controller and method for operating memory system for determining whether to perform direct write based on reference write size
US20240036741A1 (en) Memory system, memory controller and method for operating memory system, capable of determining target meta memory block on the basis of detected target state

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
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: 20150226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160128

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170403

Year of fee payment: 7