KR20080112863A - 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버 - Google Patents

플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버 Download PDF

Info

Publication number
KR20080112863A
KR20080112863A KR1020070061843A KR20070061843A KR20080112863A KR 20080112863 A KR20080112863 A KR 20080112863A KR 1020070061843 A KR1020070061843 A KR 1020070061843A KR 20070061843 A KR20070061843 A KR 20070061843A KR 20080112863 A KR20080112863 A KR 20080112863A
Authority
KR
South Korea
Prior art keywords
stored
write command
write
flash memory
buffer
Prior art date
Application number
KR1020070061843A
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 KR1020070061843A priority Critical patent/KR20080112863A/ko
Publication of KR20080112863A publication Critical patent/KR20080112863A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버에 관한 것으로서, 본 발명에 따른 플래시 메모리 쓰기 방법은 본 발명에 따른 플래시 메모리 쓰기 방법은 입력된 쓰기 명령이 드라이버에 저장된 쓰기 명령과 동일하면 입력된 쓰기 명령을 저장된 쓰기 명령에 덮어씀으로써 동일한 섹터에 대한 쓰기 명령으로서 데이터만 다른 경우에 플래시 컨트롤러가 맨 마지막으로 입력된 쓰기 명령만 이용하여 쓰기를 실행하므로 낸드 플래시 메모리의 쓰기 성능을 개선할 수 있다.

Description

플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버{Writing method and device driver for flash memory}
도 1은 본 발명의 바람직한 일 실시예에 따른 플래시 메모리 장치 드라이버의 구성도이다.
도 2는 도 1에 도시된 플래시 메모리 장치 드라이버를 보다 구체화한 플래시 메모리 장치 드라이버의 구성도이다.
도 3은 본 발명의 바람직한 일 실시예에 따른 플래시 메모리 쓰기 방법의 흐름도이다.
도 4는 도 3에 도시된 플래시 메모리 쓰기 방법을 보다 구체화한 플래시 메모리 쓰기 방법의 흐름도이다.
도 5는 본 발명의 바람직한 다른 일 실시예에 따른 플래시 메모리 장치 드라이버의 구성도이다.
도 6은 도 5에 도시된 플래시 메모리 장치 드라이버를 보다 구체화한 플래시 메모리 장치 드라이버의 구성도이다.
도 7은 본 발명의 바람직한 다른 일 실시예에 따른 플래시 메모리 쓰기 방법의 흐름도이다.
도 8은 도 7에 도시된 플래시 메모리 쓰기 방법을 보다 구체화한 플래시 메 모리 쓰기 방법의 흐름도이다.
본 발명은 플래시 메모리에 관한 것으로, 특히 플래시 메모리 장치 드라이버에 버퍼링 기능을 추가하여 동일한 쓰기 명령들은 한 번의 명령으로 실행하거나, 비순차적인 쓰기 명령들을 순차적으로 쓰기 명령으로 변환하여 실행할 수 있도록 함으로써 쓰기 성능이 개선된 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버에 관한 것이다.
PMP 등은 비교적 고용량의 데이터를 저장하기 위한 정보 기기들은 저장 매체로서 일반적으로 하드 디스크 드라이브(HDD)를 사용하고 있다. 그러나 현재 낸드(NAND) 플래시 메모리의 용량이 커지고 가격이 낮아지면서 PMP 등에서는 하드 디스크 드라이브 대신 낸드 플래시 메모리가 사용될 수 있게 되었다.
이러한 낸드 플래시 메모리는 전원이 제거되어도 정보를 그대로 유지하는 비휘발성 기억 장치로서 빠른 데이터 접근 성능을 보장하며 부피와 소비 전력이 매우 작으며, 외부 충격이나 자기장 등으로 인해 물리적으로 열악한 환경에서 저장된 데이터에 대한 높은 신뢰성을 보장한다.
그런데 이러한 낸드 플래시 메모리를 사용하는 정보 기기 중에서 낸드 컨트롤러가 장착된 정보 기기에서는 낸드용 플래시 변환 계층(Flash Translation layer:FTL)과 같은 소프트웨어를 통하여 낸드 플래시 메모리에 대해 디스크 저장 장치와 동일한 인터페이스를 제공할 수 있다. 반면에 낸드 컨트롤러가 없는 ATA 낸드 플래시 컨트롤러가 장착된 정보 기기에서는 낸드 플래시 메모리를 하드 디스크 드라이브(HDD)에서와 같이 ATA 인터페이스를 이용하여 사용할 수밖에 없다. 그런데 이럴 경우 낸드 플래시 메모리의 동작 특성을 고려하지 않고 데이터를 처리하기 때문에 플래시 메모리에 최적화된 성능을 얻지 못하는 문제점이 있으며, ATA 낸드 플래시 컨트롤러의 성능에 따라 쓰기 또는 읽기 성능이 좌우되는데, 특히 쓰기 성능이 매우 떨어지게 되는 문제점이 있다.
특히, ATA 낸드 플래시 컨트롤러가 장착된 정보 기기에서 사용하는 ATAPI 장치 드라이버(AT Attachment Packet Interface device driver)는 하드 디스크 드라이버에 대하여 최적화된 장치 드라이버이다. 낸드 플래시 메모리를 이 ATA 낸드 플래시 컨트롤러를 통해 연결한 경우, ATAPI 장치 드라이버를 사용하여야 하지만 이 ATAPI 장치 드라이버는 낸드 플래시 메모리의 특성을 고려하지 않아 성능이 저하되는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는, ATAPI 장치 드라이버에 버퍼링 기능을 추가함으로써 플래시 메모리의 쓰기 성능을 향상시키는 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버를 제공하는데 있다.
상기 기술적 과제를 이루기 위한 본 발명에 따른 플래시 메모리 쓰기 방법은 입력된 쓰기 명령이 드라이버에 저장된 쓰기 명령과 동일한지 여부를 판단하는 단 계; 상기 판단 결과 상기 입력된 쓰기 명령이 상기 저장된 쓰기 명령과 동일하면, 상기 입력된 쓰기 명령을 상기 저장된 쓰기 명령에 덮어쓰는 단계; 및 상기 판단 결과 상기 입력된 쓰기 명령이 상기 저장된 쓰기 명령과 동일하지 않으면, 상기 저장된 쓰기 명령을 플래시 컨트롤러에 제공함으로써 쓰기를 실행할 수 있도록 하는 단계를 포함한다.
또한, 상기 다른 기술적 과제를 이루기 위한 본 발명에 따른 플래시 메모리 쓰기 방법은 드라이버에 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값을 초과하는지 여부를 판단하는 단계; 및 상기 판단 결과 상기 섹터 개수의 총합이 상기 일정한 값을 초과하면, 상기 저장된 쓰기 명령들을 시작 섹터의 순서에 따라 순차적으로 플래시 컨트롤러에 제공하는 단계; 및 상기 순차적으로 제공된 쓰기 명령들에 따라 쓰기를 실행하는 단계를 포함한다.
또한, 상기 또 다른 기술적 과제를 이루기 위한 본 발명에 따른 플래시 메모리 장치 드라이버는 쓰기 명령을 저장하는 버퍼부; 및 입력된 쓰기 명령이 상기 버퍼부에 저장된 쓰기 명령과 동일한지 여부를 판단하고, 상기 판단 결과 상기 입력된 쓰기 명령이 상기 버퍼부에 저장된 쓰기 명령과 동일하면 상기 입력된 쓰기 명령을 상기 버퍼부에 저장된 쓰기 명령에 덮어쓰며, 상기 판단 결과 상기 입력된 쓰기 명령이 상기 버퍼부에 저장된 쓰기 명령과 동일하지 않으면 상기 버퍼부에 저장된 쓰기 명령의 플래시 컨트롤러에 제공하는 제어부를 포함한다.
또한, 상기 또 다른 기술적 과제를 이루기 위한 본 발명에 따른 플래시 메모리 장치 드라이버는 버퍼에 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값을 초과하는지 여부를 판단하는 버퍼 관리부; 및 상기 판단 결과 상기 섹터 개수의 총합이 상기 일정한 값을 초과하면, 상기 저장된 쓰기 명령들을 시작 섹터의 순서에 따라 순차적으로 배열하는 명령 배열부를 포함한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 플래시 메모리 장치 드라이버의 구성도이다. 도 1을 참조하면, 본 실시예에 따른 장치 드라이버(120)는 제어부(100) 및 버퍼부(110)를 포함하여 구성되고, 플래시 컨트롤러(130)와 연결된다.
이때, 장치 드라이버(120)는 ATAPI 장치 드라이버를 말한다. 장치 드라이버(120)는 입력된 쓰기(write) 명령이 현재 장치 드라이버(120)에 저장된 쓰기 명령과 동일한지 여부를 판단하고, 판단 결과 동일하지 않으면 저장된 쓰기 명령을 플래시 컨트롤러(130)에 제공하여 쓰기가 실행될 수 있도록 하고, 판단 결과 동일하면 입력된 쓰기 명령을 저장된 쓰기 명령에 덮어쓴다. 이러한 장치 드라이버(120)를 제어부(100) 및 버퍼부(110)의 구성으로 나누어 보다 상세히 설명하면 다음과 같다.
제어부(100)는 입력된 쓰기(write) 명령이 현재 버퍼부(110)에 저장되어 있는 쓰기 명령과 동일한지 여부를 판단한다. 이때, 명령이 동일한지 여부는 쓰기 시작 섹터 번호가 동일하고 쓰기 섹터 개수가 동일한지를 기준으로 판단한다.
만일 제어부(100)의 판단 결과 입력된 쓰기 명령이 버퍼부(110)에 저장되어 있는 쓰기 명령과 동일하면, 제어부(100)는 입력된 쓰기 명령을 버퍼부(110)에 저 장되어 있는 명령에 덮어쓰도록 제어한다. 이를 통해, 동일한 섹터에 대한 쓰기 명령으로서 데이터만 다른 경우에 플래시 컨트롤러(130)가 맨 마지막으로 입력된 쓰기 명령만 이용하여 쓰기를 실행하므로 쓰기 성능을 개선할 수 있다.
반면에 제어부(100)의 판단 결과 입력된 쓰기 명령이 버퍼부(110)에 저장되어 있는 쓰기 명령과 동일하지 않으면, 제어부(100)는 버퍼부(110)에 저장되어 있는 쓰기 명령을 플래시 컨트롤러(130)에 제공하여 쓰기가 실행될 수 있도록 하고, 입력된 쓰기 명령을 버퍼부(110)에 저장한다.
도 2는 도 1에 도시된 플래시 메모리 장치 드라이버를 보다 구체화한 플래시 메모리 장치 드라이버의 구성도이다. 도 2를 참조하면, 본 실시예에 따른 플래시 메모리 장치 드라이버(240)는 버퍼 관리부(200), 버퍼부(210), 명령 판단부(220) 및 버퍼링 시간 확인부(230)를 포함하여 구성된다.
먼저, 버퍼 관리부(200)는 플래시 메모리 장치 드라이버(240)에 쓰기(write) 명령이 입력되면, 입력된 쓰기 명령으로 인해 현재 버퍼부(210)의 버퍼링 용량을 초과하는지 여부를 판단한다.
버퍼 관리부(200)의 판단 결과 버퍼링 용량을 초과한다면, 버퍼 관리부(200)는 현재 버퍼부(210)에 저장되어 있는 쓰기 명령을 플래시 컨트롤러(250)에 제공하여 해당 섹터에 대한 쓰기가 실행될 수 있도록 하고, 입력된 쓰기 명령도 플래시 컨트롤러(250)에 제공하여 쓰기가 실행될 수 있도록 한다. 이때, 버퍼 관리부(200)는 버퍼링 타이머를 정지시킨다.
만일 버퍼 관리부(200)의 판단 결과 버퍼링 용량을 초과하지 않는다면, 버퍼 관리부(200)는 현재 버퍼부(210)가 비어있는지 여부를 판단하고, 판단 결과 버퍼부(210)가 비어있으면 입력된 쓰기 명령을 버퍼부(210)에 저장한다. 이때, 버퍼 관리부(200)는 버퍼링 타이머를 작동시킨다.
명령 판단부(220)는 입력된 쓰기 명령이 현재 버퍼부(210)에 저장되어 있는 쓰기 명령과 동일한지 여부를 판단한다. 이때, 명령이 동일한지 여부는 쓰기 시작 섹터 번호가 동일하고 쓰기 섹터 개수가 동일한지를 기준으로 판단한다.
만일 명령 판단부(220)의 판단 결과 입력된 쓰기 명령이 버퍼부(210)에 저장되어 있는 쓰기 명령과 동일하지 않으면, 명령 판단부(220)는 현재 버퍼부(210)에 저장되어 있는 쓰기 명령을 플래시 컨트롤러(250)에 제공하여 해당 섹터에 대한 쓰기가 실행될 수 있도록 하고, 입력된 쓰기 명령을 버퍼부(210)에 저장하게 한다. 이때, 명령 판단부(220)는 버퍼링 타이머를 작동시킨다.
반면에 명령 판단부(220)의 판단 결과 입력된 쓰기 명령이 버퍼부(210)에 저장되어 있는 쓰기 명령과 동일하면, 명령 판단부(220)는 입력된 쓰기 명령을 현재 버퍼부(210)에 저장되어 있는 쓰기 명령에 덮어쓴다. 이때, 명령 판단부(220)는 버퍼링 타이머를 작동시킨다.
버퍼링 시간 확인부(230)는 버퍼링 타이머를 체크하여 버퍼링된 시간이 일정 시간 이상을 경과하였는지 여부를 판단하고, 판단 결과 일정 시간 이상을 경과하였으면 버퍼부(210)에 저장되어 있는 명령을 플래시 컨트롤러(250)에 제공하여 해당 섹터에 대한 쓰기가 실행될 수 있도록 하고, 버퍼링 타이머를 정지시킨다. 이때, 일 예로서 상기 일정 시간은 1초로 설정될 수 있다.
도 3은 본 발명의 바람직한 일 실시예에 따른 플래시 메모리 쓰기 방법의 흐름도이다. 도 3을 참조하면 본 실시예에 따른 플래시 메모리 쓰기 방법은 다음과 같다.
300 단계에서 플래시 메모리 장치 드라이버는 입력된 쓰기(write) 명령이 현재 버퍼에 저장되어 있는 쓰기 명령과 동일한지 여부를 판단한다. 이때, 명령이 동일한지는 쓰기 시작 섹터 번호가 동일하고 쓰기 섹터 개수가 동일한지 여부로 판단한다.
310 단계에서 플래시 메모리 장치 드라이버는 300 단계에서 판단 결과 입력된 쓰기 명령이 버퍼에 저장되어 있는 명령과 동일하면, 입력된 쓰기 명령을 버퍼에 저장되어 있는 명령에 덮어쓴다. 이를 통해, 동일한 섹터에 대한 쓰기 명령으로서 데이터만 다른 경우에 플래시 컨트롤러가 맨 마지막으로 입력된 쓰기 명령만 이용하여 쓰기를 실행하므로 쓰기 성능을 개선할 수 있다.
320 단계에서 플래시 메모리 장치 드라이버는 300 단계에서 판단 결과 입력된 쓰기 명령이 버퍼에 저장되어 있는 명령과 동일하지 않으면, 버퍼에 저장되어 있는 명령을 플래시 컨트롤러에 제공함으로써 쓰기가 실행될 수 있도록 한다. 또한, 플래시 메모리 장치 드라이버는 입력된 쓰기 명령을 버퍼에 저장한다.
도 4는 도 3에 도시된 플래시 메모리 쓰기 방법을 보다 구체화한 플래시 메모리 쓰기 방법의 흐름도이다. 도 4를 참조하면 본 실시예에 따른 플래시 메모리 쓰기 방법은 다음과 같다.
400 단계에서 플래시 메모리 장치 드라이버는 쓰기(write) 명령이 입력되면, 이 입력된 쓰기 명령으로 인해 현재 버퍼의 버퍼링 용량을 초과하는지 여부를 판단한다.
405 단계에서 플래시 메모리 장치 드라이버는 400 단계에서의 판단 결과 버퍼링 용량을 초과한다면, 현재 버퍼에 저장되어 있는 쓰기 명령을 플래시 컨트롤러에 제공하여, 입력된 쓰기 명령의 해당 섹터에 대한 쓰기가 실행될 수 있도록 한다. 이때, 버퍼링 타이머를 정지시킨다.
410 단계에서 플래시 메모리 장치 드라이버는 400 단계에서의 판단 결과 버퍼링 용량을 초과하지 않으면, 현재 버퍼가 비어있는지 여부를 판단한다.
415 단계에서 플래시 메모리 장치 드라이버는 410 단계에서의 판단 결과 버퍼가 비어있으면, 입력된 쓰기 명령을 버퍼에 저장한다. 이때, 버퍼링 타이머를 작동시킨다.
420 단계에서 플래시 메모리 장치 드라이버는 410 단계에서의 판단 결과 버퍼가 비어있지 않으면, 입력된 쓰기 명령이 현재 버퍼에 저장되어 있는 쓰기 명령과 동일한지 여부를 판단한다. 이때, 명령이 동일한지 여부는 쓰기 시작 섹터 번호가 동일하고 쓰기 섹터 개수가 동일한지를 기준으로 판단한다.
425 단계에서 플래시 메모리 장치 드라이버는 420 단계에서의 판단 결과 입력된 쓰기 명령이 버퍼에 저장되어 있는 쓰기 명령과 동일하지 않으면, 현재 버퍼에 저장되어 있는 쓰기 명령을 플래시 컨트롤러에 제공하여, 저장된 쓰기 명령의 해당 섹터에 대한 쓰기를 실행될 수 있도록 하고, 입력된 쓰기 명령을 버퍼에 저장한다. 이때, 버퍼링 타이머를 작동시킨다.
430 단계에서 플래시 메모리 장치 드라이버는 420 단계에서 판단 결과 입력된 쓰기 명령이 버퍼에 저장되어 있는 명령과 동일하면, 입력된 쓰기 명령을 현재 버퍼에 저장되어 있는 쓰기 명령에 덮어쓴다. 이때, 버퍼링 타이머를 작동시킨다.
435 단계에서 플래시 메모리 장치 드라이버는 버퍼링 타이머를 체크하여 버퍼링된 시간이 일정 시간 이상을 경과하였는지 여부를 판단하고, 판단 결과 일정 시간 이상을 경과하지 않았으면 400 단계로 진행한다. 이때, 일 예로서 일정 시간은 1초로 설정될 수 있다.
440 단계에서 플래시 메모리 장치 드라이버는 435 단계에서의 판단 결과 버퍼링된 시간이 일정 시간 이상을 경과하였으면, 버퍼에 저장되어 있는 명령을 플래시 컨트롤러에 제공하여 저장된 쓰기 명령이 실행될 수 있도록 한다. 이때, 버퍼링 타이머를 정지시킨다.
도 5는 본 발명의 바람직한 다른 일 실시예에 따른 플래시 메모리 장치 드라이버의 구성도이다. 도 5를 참조하면, 본 실시예에 따른 플래시 메모리 장치 드라이버(520)는 제어부(500) 및 버퍼부(510)를 포함하여 구성되고, 플래시 컨트롤러(530)에 연결된다.
이때, 장치 드라이버(520)는 ATAPI 장치 드라이버를 말한다. 장치 드라이버(520)는 저장된 쓰기(write) 명령들의 섹터 개수의 총합이 일정한 값에 도달할 때까지 입력된 쓰기 명령을 저장한다. 그리고 만일 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값에 도달하면, 장치 드라이버(520)는 저장된 쓰기 명령들을 순차적으로 플래시 컨트롤러(530)에 제공함으로써 순차적으로 쓰기가 실행될 수 있 도록 한다. 이때, 순차적이라는 의미는 저장된 쓰기 명령들의 시작 섹터 번호 순서대로를 말한다. 이를 통해 시작 섹터 번호 순서대로 플래시 컨트롤러(530)가 쓰기를 실행할 수 있도록 한다. 이러한 장치 드라이버(520)를 제어부(500) 및 버퍼부(510)의 구성으로 나누어 보다 상세히 설명하면 다음과 같다.
제어부(500)는 버퍼부(510)에 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값에 도달하였는지 여부를 판단하고, 판단 결과 일정한 값에 도달하지 못한 경우에는 입력된 명령을 버퍼부(510)에 저장하도록 제어한다. 반면에 판단 결과 일정한 값에 도달했다면, 제어부(500)는 현재 버퍼부(510)에 저장되어 있는 모든 쓰기 명령들을 순차적으로 플래시 컨트롤러(530)에 제공함으로써 플래시 컨트롤러(530)가 순차적으로 쓰기 명령을 실행할 수 있도록 한다. 이때, 순차적으로 실행한다는 말은 버퍼부(510)에 저장된 모든 쓰기 명령들에 대해 그 시작 섹터의 순서대로 실행한다는 것을 의미한다. 이를 통해, NAND 플래시 메모리의 특성에 맞게 쓰기 동작을 실행할 수 있어서 쓰기 성능을 개선할 수 있다.
도 6은 도 5에 도시된 플래시 메모리 장치 드라이버를 보다 구체화한 플래시 메모리 장치 드라이버의 구성도이다. 도 6을 참조하면, 본 실시예에 따른 플래시 메모리 장치 드라이버(640)는 버퍼 관리부(600), 버퍼부(610), 명령 배열부(620) 및 버퍼링 시간 확인부(630)를 포함하여 구성된다.
먼저, 버퍼 관리부(600)는 플래시 메모리 장치 드라이버(640)에 쓰기 명령이 입력되면, 이 입력된 쓰기 명령으로 인해 현재 버퍼부(610)의 버퍼링 용량을 초과하는지 여부를 판단하고, 판단 결과 버퍼링 용량을 초과한다면 명령 배열부(620)에 저장된 쓰기 명령들을 순차적으로 배열하라는 명령을 내린다. 그리고 버퍼링 타이머를 정지시킨다.
또한, 버퍼 관리부(600)는 버퍼부(610)에 저장되어 있는 쓰기 명령들의 섹터 개수의 총합이 일정한 값에 도달하였는지 여부를 판단하고, 판단 결과 일정한 값에 도달한 경우 명령 배열부(620)에 저장된 쓰기 명령들을 순차적으로 배열하라는 명령을 내린다. 그리고 버퍼링 타이머를 정지시킨다.
명령 배열부(620)는 버퍼 관리부(600) 또는 버퍼링 시간 확인부(630)로부터 순차적으로 배열하라는 명령을 받으면, 버퍼부(610)에 저장된 모든 쓰기 명령들을 순차적으로 배열한 후에 순차적으로 배열된 쓰기 명령들을 플래시 컨트롤러(650)에 제공함으로써 플래시 컨트롤러(650)가 순차적으로 쓰기 명령을 실행할 수 있도록 한다.
버퍼링 시간 확인부(630)는 버퍼링 타이머를 체크하여 버퍼링된 시간이 일정 시간 이상을 경과하였는지 여부를 판단하고, 판단 결과 일정 시간 이상을 경과하였으면 명령 배열부(620)에 저장된 쓰기 명령들을 순차적으로 배열하라는 명령을 내린다. 버퍼링 타이머를 정지시킨다.
도 7은 본 발명의 바람직한 다른 일 실시예에 따른 플래시 메모리 쓰기 방법의 흐름도이다. 도 7을 참조하면 본 실시예에 따른 플래시 메모리 쓰기 방법은 다음과 같다.
700 단계에서 플래시 메모리 장치 드라이버는 저장된 쓰기(write) 명령들의 섹터 개수의 총합이 일정한 값에 도달할 때까지 입력된 쓰기 명령을 버퍼에 저장한 다.
710 단계에서 플래시 메모리 장치 드라이버는 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값에 도달했다면, 현재 버퍼에 저장되어 있는 모든 쓰기 명령을 순차적으로 플래시 컨트롤러에 제공함으로써 순차적으로 쓰기가 실행도리 수 있도록 한다. 이때, 순차적이라는 의미는 저장된 쓰기 명령들의 시작 섹터 번호 순서대로를 말한다. 이를 통해 시작 섹터 번호 순서대로 플래시 컨트롤러(530)가 쓰기를 실행할 수 있도록 한다.
도 8은 도 7에 도시된 플래시 메모리 쓰기 방법을 보다 구체화한 플래시 메모리 쓰기 방법의 흐름도이다. 도 8을 참조하면 본 실시예에 따른 플래시 메모리 쓰기 방법은 다음과 같다.
800 단계에서 플래시 메모리 장치 드라이버는 입력된 명령이 읽기 명령인지 여부를 판단한다.
805 단계에서 플래시 메모리 장치 드라이버는 800 단계에서의 판단 결과 입력된 명령이 읽기 명령이면, 이 입력된 읽기 명령을 플래시 컨트롤러에 제공함으로써 플래시 메모리에 저장된 데이터를 읽어들일 수 있도록 한다.
810 단계에서 플래시 메모리 장치 드라이버는 800 단계에서의 판단 결과 입력된 명령이 읽기 명령이 아닌 쓰기 명령이면, 버퍼의 버퍼링 용량을 초과하는지 여부를 판단하고, 판단 결과 버퍼링 용량을 초과한다면 820 단계로 진행한다.
815 단계에서 플래시 메모리 장치 드라이버는 810 단계에서의 판단 결과 버퍼링 용량을 초과하지 않는다면, 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값에 도달하였는지 여부를 판단한다.
820 단계에서 플래시 메모리 장치 드라이버는 815 단계에서의 판단 결과 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값에 도달하였다면, 현재 버퍼에 저장되어 있는 순차적으로 배열하고, 배열된 쓰기 명령들을 플래시 컨트롤러에 제공함으로써 플래시 컨트롤러가 순차적으로 쓰기 명령을 실행할 수 있도록 한다. 이때, 순차적 실행의 의미는 버퍼에 저장된 모든 쓰기 명령들에 대해 그 시작 섹터의 순서대로 쓰기를 실행하는 것을 말한다.
825 단계에서 플래시 메모리 장치 드라이버는 815 단계에서의 판단 결과 저장된 쓰기 명령의 섹터 개수가 일정한 값에 도달하지 않았다면, 입력된 쓰기 명령을 버퍼에 저장한다. 그리고 버퍼링 타이머를 작동시킨다.
830 단계에서 플래시 메모리 장치 드라이버는 버퍼링 타이머를 체크하여 버퍼링 시간이 일정 시간을 경과하였는지 여부를 판단하고, 판단 결과 일정 시간이 경과하지 않았다면 800 단계로 진행한다.
835 단계에서 플래시 메모리 장치 드라이버는 830 단계에서의 판단 결과 일정 시간이 경과하였다면, 현재 버퍼에 저장되어 있는 순차적으로 배열하고, 이 배열된 쓰기 명령들을 플래시 컨트롤러에 제공함으로써 플래시 컨트롤러가 순차적으로 쓰기 명령을 실행할 수 있도록 한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
상술한 바와 같이, 본 발명에 따른 플래시 메모리 쓰기 방법은 입력된 쓰기 명령이 드라이버에 저장된 쓰기 명령과 동일하면 입력된 쓰기 명령을 저장된 쓰기 명령에 덮어씀으로써 동일한 섹터에 대한 쓰기 명령으로서 데이터만 다른 경우에 플래시 컨트롤러가 맨 마지막으로 입력된 쓰기 명령만 이용하여 쓰기를 실행하므로 낸드 플래시 메모리의 쓰기 성능을 개선하는 효과가 있다.
또한, 본 발명에 따른 플래시 메모리 쓰기 방법은 드라이버에 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값을 초과하면, 저장된 쓰기 명령들을 시작 섹터의 순서에 따라 순차적으로 플래시 컨트롤러에 제공함으로써 플래시 컨트롤러가 순차적으로 쓰기를 실행할 수 있도록 하여 낸드 플래시 메모리의 특성에 맞게 쓰기 동작을 수행할 수 있어서 쓰기 성능을 개선하는 효과가 있다.

Claims (11)

  1. 입력된 쓰기 명령이 드라이버에 저장된 쓰기 명령과 동일한지 여부를 판단하는 단계;
    상기 판단 결과 상기 입력된 쓰기 명령이 상기 저장된 쓰기 명령과 동일하면, 상기 입력된 쓰기 명령을 상기 저장된 쓰기 명령에 덮어쓰는 단계; 및
    상기 판단 결과 상기 입력된 쓰기 명령이 상기 저장된 쓰기 명령과 동일하지 않으면, 상기 저장된 쓰기 명령을 플래시 컨트롤러에 제공함으로써 쓰기를 실행할 수 있도록 하는 단계를 포함함을 특징으로 하는 플래시 메모리 쓰기 방법.
  2. 제1 항에 있어서,
    상기 입력된 쓰기 명령과 상기 드라이버에 저장된 쓰기 명령이 동일한지 여부는 각 명령들의 시작 섹터 번호 및 섹터 개수를 기준으로 판단하는 것을 특징으로 하는 플래시 메모리 쓰기 방법.
  3. 제1 항에 있어서,
    상기 드라이버에 저장된 쓰기 명령이 일정 시간을 초과하여 저장되어 있다면, 상기 저장된 쓰기 명령을 상기 플래시 컨트롤러에 제공함으로써 쓰기를 실행할 수 있도록 하는 단계를 더 포함함을 특징으로 하는 플래시 메모리 쓰기 방법.
  4. 드라이버에 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값을 초과하는지 여부를 판단하는 단계; 및
    상기 판단 결과 상기 섹터 개수의 총합이 상기 일정한 값을 초과하면, 상기 저장된 쓰기 명령들을 시작 섹터의 순서에 따라 순차적으로 플래시 컨트롤러에 제공하는 단계; 및
    상기 순차적으로 제공된 쓰기 명령들에 따라 쓰기를 실행하는 단계를 포함함을 특징으로 하는 플래시 메모리 쓰기 방법.
  5. 제4 항에 있어서,
    상기 판단 결과 상기 섹터 개수의 총합이 일정한 값을 초과하지 않으면, 입력된 쓰기 명령을 상기 드라이버에 저장하는 단계를 더 포함함을 특징으로 하는 플래시 메모리 쓰기 방법.
  6. 제4 항에 있어서,
    상기 드라이버에 저장된 쓰기 명령이 일정 시간을 초과하여 저장되어 있다면, 상기 저장된 쓰기 명령을 상기 플래시 컨트롤러에 제공함으로써 쓰기를 실행할 수 있도록 하는 단계를 더 포함함을 특징으로 하는 플래시 메모리 쓰기 방법.
  7. 쓰기 명령을 저장하는 버퍼부; 및
    입력된 쓰기 명령이 상기 버퍼부에 저장된 쓰기 명령과 동일한지 여부를 판 단하고,
    상기 판단 결과 상기 입력된 쓰기 명령이 상기 버퍼부에 저장된 쓰기 명령과 동일하면, 상기 입력된 쓰기 명령을 상기 버퍼부에 저장된 쓰기 명령에 덮어쓰며,
    상기 판단 결과 상기 입력된 쓰기 명령이 상기 버퍼부에 저장된 쓰기 명령과 동일하지 않으면, 상기 버퍼부에 저장된 쓰기 명령을 플래시 컨트롤러에 제공하는 제어부를 포함함을 특징으로 하는 플래시 메모리 장치 드라이버.
  8. 제7 항에 있어서,
    상기 버퍼부에 저장된 쓰기 명령이 일정 시간을 초과하여 저장되어 있다면, 상기 버퍼부에 저장된 쓰기 명령을 상기 플래시 컨트롤러에 제공하는 버퍼링 시간 확인부를 더 포함함을 특징으로 하는 플래시 메모리 장치 드라이버.
  9. 버퍼에 저장된 쓰기 명령들의 섹터 개수의 총합이 일정한 값을 초과하는지 여부를 판단하는 버퍼 관리부; 및
    상기 판단 결과 상기 섹터 개수의 총합이 상기 일정한 값을 초과하면, 상기 저장된 쓰기 명령들을 시작 섹터의 순서에 따라 순차적으로 배열하는 명령 배열부를 포함함을 특징으로 하는 플래시 메모리 장치 드라이버.
  10. 제9 항에 있어서, 상기 버퍼 관리부는
    상기 판단 결과 상기 섹터 개수의 총합이 일정한 값을 초과하지 않으면, 상 기 입력된 쓰기 명령을 상기 버퍼에 저장하는 것을 특징으로 하는 플래시 메모리 장치 드라이버.
  11. 제9 항에 있어서,
    상기 버퍼에 저장된 쓰기 명령이 일정 시간을 초과하여 저장되어 있다면, 상기 저장된 쓰기 명령을 상기 플래시 컨트롤러에 제공하는 버퍼링 시간 확인부를 더 포함함을 특징으로 하는 플래시 메모리 장치 드라이버.
KR1020070061843A 2007-06-22 2007-06-22 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버 KR20080112863A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070061843A KR20080112863A (ko) 2007-06-22 2007-06-22 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070061843A KR20080112863A (ko) 2007-06-22 2007-06-22 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버

Publications (1)

Publication Number Publication Date
KR20080112863A true KR20080112863A (ko) 2008-12-26

Family

ID=40370527

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070061843A KR20080112863A (ko) 2007-06-22 2007-06-22 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버

Country Status (1)

Country Link
KR (1) KR20080112863A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013184923A1 (en) * 2012-06-07 2013-12-12 Violin Memory, Inc. Memory system management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013184923A1 (en) * 2012-06-07 2013-12-12 Violin Memory, Inc. Memory system management

Similar Documents

Publication Publication Date Title
US8006047B2 (en) Storage device with write barrier sensitive write commands and write barrier insensitive commands
US8380922B1 (en) Data storage device comprising host interface state machine blocking on target logical block address
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7653781B2 (en) Automatic RAID disk performance profiling for creating optimal RAID sets
US8195971B2 (en) Solid state disk and method of managing power supply thereof and terminal including the same
US20090172264A1 (en) System and method of integrating data accessing commands
US20150058534A1 (en) Managing method for cache memory of solid state drive
JP2005011317A5 (ko)
US20100161933A1 (en) Storage device with manual learning
US8433847B2 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
US20120221771A1 (en) Data storage system and data mapping method of the same
US20140215127A1 (en) Apparatus, system, and method for adaptive intent logging
CN110674056B (zh) 一种垃圾回收方法及装置
US9983826B2 (en) Data storage device deferred secure delete
US9933955B1 (en) Power safe write buffer for data storage device
KR20140032789A (ko) 불휘발성 메모리 장치의 컨트롤러 및 그것의 커멘드 스케줄링 방법
JP5862589B2 (ja) ディスクアレイ装置
US9430168B2 (en) Recording medium storing a program for data relocation, data storage system and data relocating method
KR101481898B1 (ko) Ssd의 명령어 큐 스케줄링 장치 및 방법
KR20080045833A (ko) 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템
KR20210008826A (ko) 논리 블록 어드레싱 범위 충돌 크롤러
US10528116B2 (en) Fast resume from hibernate
JP5594647B2 (ja) ストレージ装置及びその制御方法
WO2015170702A1 (ja) ストレージ装置と情報処理システム及びストレージ制御方法とプログラム
KR20080112863A (ko) 플래시 메모리 쓰기 방법 및 플래시 메모리 장치 드라이버

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination