KR101581679B1 - 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 - Google Patents

저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 Download PDF

Info

Publication number
KR101581679B1
KR101581679B1 KR1020090023041A KR20090023041A KR101581679B1 KR 101581679 B1 KR101581679 B1 KR 101581679B1 KR 1020090023041 A KR1020090023041 A KR 1020090023041A KR 20090023041 A KR20090023041 A KR 20090023041A KR 101581679 B1 KR101581679 B1 KR 101581679B1
Authority
KR
South Korea
Prior art keywords
buffer
data
page
pages
memory
Prior art date
Application number
KR1020090023041A
Other languages
English (en)
Other versions
KR20100104550A (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 KR1020090023041A priority Critical patent/KR101581679B1/ko
Priority to US12/567,778 priority patent/US8458394B2/en
Publication of KR20100104550A publication Critical patent/KR20100104550A/ko
Application granted granted Critical
Publication of KR101581679B1 publication Critical patent/KR101581679B1/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
    • 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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Read Only Memory (AREA)

Abstract

저장 장치가 제공된다. 상기 저장 장치는, 버퍼 메모리 내의 복수 개의 페이지 중 데이터를 저장하고 있는 복수 개의 페이지의 데이터를 플래시 메모리로 전송하는 프로세서, 및 복수 개의 신호 선을 통해 상기 전송된 복수 개의 페이지의 데이터를 복수 개의 플래시 칩에 병렬적으로 프로그램 하는 플래시 메모리를 포함할 수 있다.
Figure R1020090023041
버퍼 메모리, 버퍼 관리, 버퍼 교체

Description

저장 장치 및 저장 장치의 버퍼 메모리 관리 방법{STORAGE DEVICE AND METHOD FOR MANAGING BUFFER MEMORY OF STORAGE DEVICE}
본 발명의 실시예들은 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법에 관한 것으로서, 특히 버퍼 메모리를 효율적으로 관리하는 저장 장치 및 저장 장치의 버퍼 관리 방법에 관한 것이다.
버퍼 메모리(Buffer Memory)는 서로 다른 두 장치 간의 동작 속도 차이를 보상한다. 한 장치는 빠른 속도로 데이터에 액세스(access)하고(상기 액세스는, 이를테면, 데이터 쓰기, 데이터 읽기 등이 있음), 다른 장치는 상대적으로 느린 속도로 데이터에 액세스하는 경우, 중간 정도의 속도로 데이터에 액세스하는 장치를 활용하여, 지연 시간(latency)을 줄이는 것이 버퍼링(Buffering)이다. 그리고, 상기 중간 정도의 속도로 데이터에 액세스 하는 장치를 버퍼 메모리 또는 단순히 버퍼(Buffer)라고 한다.
이러한 버퍼 메모리의 예에는, CPU와 메인 메모리 간의 속도 차이를 보상하는 캐시 메모리(Cache Memory), 호스트(Host)와 저장 장치(Storage Device) 사이의 버퍼 메모리 등이 있다. 후자의 경우, 버퍼 메모리는 저장 장치 내부에 위치할 수도 있다.
그런데, 버퍼 메모리는 메인 메모리에 비해 가격이 높으며, 따라서 데이터 액세스 처리 속도 향상 정도에 대비한 비용이 높기 때문에, 통상적으로는 비교적 작은 용량의 버퍼 메모리가 사용된다. 이를테면, 상용 하드디스크(HDD)의 버퍼 메모리 크기는 4MB 내지 32MB 정도이다.
따라서, 액세스 명령에 대비하여 동시에 버퍼 메모리에 미리 저장해둘 수 있는 데이터의 크기는 크지 않다. 이 때문에, 버퍼 메모리에 여유 공간(free space)의 크기가 크지 않은 경우에, 버퍼 메모리에 저장된 일부 데이터를 메인 메모리(이를테면, 저장 장치의 경우 데이터 액세스 속도는 상대적으로 느리지만, 큰 저장 용량을 갖는 플래시 메모리 칩 등)에 옮겨서 저장하고(이하 "프로그램(program)"이라 한다), 버퍼 메모리에 여유 공간을 확보하는 기법에 대한 연구가 요구된다.
본 발명의 일부 실시예는, 버퍼 메모리 내의 데이터를 플래시 메모리로 프로그램 하는 경우에, 처리 속도를 향상 시키는 저장 장치 및 버퍼 관리 방법을 제공하기 위한 것이다.
본 발명의 다른 일부 실시예는, 버퍼 관리를 효율적으로 수행하는 저장 장치 및 버퍼 관리 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따르면, 버퍼 메모리 내의 복수 개의 페이지 중, 데이터를 저장하고 있는 N 개의 페이지의 데이터를 플래시 메모리로 전송하는 프로세서, 및 N 개의 신호 선을 통해 상기 전송된 N 개의 페이지의 데이터를 N 개의 플래시 칩에 병렬적으로 프로그램 하는 플래시 메모리를 포함하는 저장 장치가 제공된다. 상기 N은 자연수이다.
이 경우, 상기 프로세서는, 상기 버퍼 메모리 내에 비어있는 페이지의 수가 제1 임계치(Threshold) 이하인 경우, 상기 N 개의 페이지의 데이터를 상기 플래시 메모리로 전송할 수 있다. 상기 제1 임계치는, 이를테면, 0일 수 있다. 상기 제1 임계치가 0인 경우, 상기 프로세서는 버퍼 메모리에 비어 있는 페이지가 없는 경우에 버퍼 메모리 내의 N 개의 페이지의 데이터를 플래시 메모리로 전송한다.
또한, 상기 프로세서는, 상기 N 개의 페이지의 데이터를 상기 플래시 메모리로 전송한 후, 상기 N 개의 페이지의 데이터를 소거할 수 있다.
상기 플래시 메모리는, 상기 전송된 N 개의 페이지의 데이터를 병렬적으로 상기 N 개의 플래시 칩에 프로그램 하며, 이 경우 상기 N 개의 페이지의 데이터를 동시에 프로그램 할 수 있다.
한편, 상기 버퍼 메모리 내의 복수 개의 페이지 중 데이터를 저장하고 있는 페이지의 각각은, N 개의 버퍼 큐 중 어느 하나에 연관되어 관리될 수 있다.
이 경우, 상기 프로세서는, 상기 버퍼 메모리 내의 비어있는 페이지의 수가 제1 임계치 이하인 경우에, 상기 N 개의 버퍼 큐의 각각에 연관되는 하나씩의 페이지를 선택하여, 선택된 N 개의 페이지의 데이터를 상기 플래시 메모리로 전송한다.
또한, 상기 N 개의 버퍼 큐 각각에 연관되는 페이지들은, LRU(Least Recently Used) 기법에 의해 관리될 수 있다. 이 경우, 상기 프로세서가 선택하는 상기 N 개의 버퍼 큐의 각각에 연관되는 하나씩의 페이지는, 상기 N 개의 버퍼 큐의 각각에서 가장 오래 전에 액세스 된 페이지("Tail" 페이지라 함)이다.
본 발명의 다른 일 실시예에 따르면, N 개의 버퍼 큐를 포함하는 버퍼 메모리, 상기 N 개의 버퍼 큐 중 적어도 두 개 이상의 버퍼 큐로부터 각각 하나씩의 페이지를 선택하고, 상기 선택된 페이지에 저장된 데이터를 플래시 메모리로 전송하는 프로세서, 및 상기 전송된 데이터를 병렬 적으로 플래시 칩에 프로그램 하는 플래시 메모리를 포함하는, 저장 장치가 제공된다.
상기 버퍼 큐의 개수 N은, 상기 플래시 메모리 내에서, 동시에 병렬적으로 데이터를 프로그램 하는 신호 선의 개수에 따라 결정될 수 있다.
이 경우, 상기 프로세서는, 상기 버퍼 메모리 내에 비어있는 페이지의 수가 제1 임계치 이하인 경우, 상기 N 개의 버퍼 큐 중 적어도 두 개 이상의 버퍼 큐로부터 각각 하나씩의 페이지를 선택하고, 상기 선택된 페이지에 저장된 데이터를 플래시 메모리로 전송할 수 있다.
본 발명의 또 다른 일 실시예에 따르면, 복수 개의 버퍼 큐 중, 적어도 두 개의 버퍼 큐로부터 각각 하나씩의 페이지를 선택하여, 상기 선택된 페이지에 저장된 데이터를 플래시 메모리로 전송하는 단계, 및 상기 전송된 데이터를 병렬적으로 플래시 칩에 프로그램 하는 단계를 포함하는 버퍼 관리 방법이 제공된다.
이 경우, 상기 전송하는 단계는, 액세스 하려는 데이터가 버퍼 메모리에 저장되어 있지 않은 경우, 상기 버퍼 메모리에 비어 있는 페이지가 있는 지 확인하는 단계, 상기 비어 있는 페이지가 없는 경우, 복수 개의 버퍼 큐 중, 적어도 두 개의 버퍼 큐로부터 각각 하나씩의 페이지를 선택하는 단계, 및 상기 선택된 페이지에 저장된 데이터를 플래시 메모리로 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시예에 따르면, 버퍼 메모리 내의 데이터를 플래시 메모리로 프로그램 하는 경우에, 병렬 처리를 통해 처리 속도가 향상된다.
본 발명의 일부 실시예에 따르면, 버퍼 관리의 효율성이 개선된다.
이하에서, 본 발명의 일부 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 저장 장치(Storage Device)(100)를 도시한다.
본 발명의 일 실시예에 따르면, 저장 장치(100)는, CPU(110), 버퍼 메모리(Buffer Memory)(120), 및 플래시 메모리(Flash Memory)(130)를 포함한다.
저장 장치(100)는 이를테면, 플래시 메모리를 포함하는 고체 상태 디스크 (Solid State Disk, SSD)일 수 있다. SSD는 다수의 플래시 메모리 칩들을 이용하여 대용량의 스토리지(storage)를 구현한다.
저장 장치(100)는 호스트 인터페이스(101)를 통해 호스트(102)로부터 데이터 액세스(data access) 명령(이를 테면, 데이터 읽기, 데이터 쓰기 등)을 수신한다. 상기 호스트 인터페이스(101)는 이를 테면, PATA(Parallel ATA), SATA(Serial ATA), 또는 USB(Universal Serial Bus) 등의 통신 규격일 수 있다. 또한, 상기 호스트(102)는 퍼스널 컴퓨터, 랩톱(Laptop), 디지털 캠코더, 디지털 카메라 등 어떠한 전자 기기라도 될 수 있다.
저장 장치(100)의 CPU(110)는 호스트(102)와의 통신 및 저장 장치(100)의 각 부분을 제어하는 역할을 한다. 상기 CPU(110)는 구동 OS(이를 테면, 펌웨어, 리얼타임 OS 등)를 사용하여 동작할 수 있다.
본 발명의 일부 실시예에 따른 버퍼 메모리 관리 방법에서는, 상기 CPU(110)가 버퍼 메모리(120) 또는 플래시 메모리(130)의 데이터 쓰기/소거를 직접 제어할 수 있다.
다만, 본 발명은 이에 한정되지 않으며, 본 발명의 실시예들에 따른 버퍼 메모리 관리 방법의 각 단계는 버퍼 메모리 또는 플래시 메모리를 제어하는 다른 제어 수단(이를테면, 플래시 메모리의 각 채널의 컨트롤러(140 내지 160) 등)에 의해 수행될 수 있다. 이 경우에는, 도시되지 않은 별도의 제어 모듈(module)이 저장 장치(100)에 포함될 수도 있다.
버퍼 메모리(120)는, 플래시 메모리(130) 내의 일부 데이터를 임시 저장하며(이하, "버퍼링"이라 한다), CPU(110)는 상기 버퍼링 된 데이터에 대한 호스트(102)의 액세스가 가능하도록 한다.
본 발명의 일 실시예에 따르면, 상기 버퍼 메모리(120)는 휘발성(volatile) 메모리일 수 있으며, 이를테면, DRAM 또는 SRAM 일 수 있다. 그러나, 응용예에 따라서는, 비휘발성(Non volatile) 메모리일 수도 있다.
그리고, 플래시 메모리(130)는 낸드(NAND) 플래시 메모리일 수 있고 노어 (NOR) 플래시 메모리일 수도 있다. 상용화 된 플래시 메모리의 경우, 멀티 채널 멀티 웨이(Multi channel multi way) 기법을 사용한다.
플래시 칩(141 내지 164)의 설계 상 효율성과, 데이터 액세스의 병렬성(parallelism) 등을 위해, 플래시 메모리(130)는 복수 개의 채널을 가진다. 이 경우, 플래시 메모리(130)는, 각 채널 마다 데이터 액세스에 관여하는 플래시 컨트롤러(140, 150, 160 등)을 포함할 수 있다.
나아가 하나의 채널 내에서도 데이터 액세스가 병렬적으로 수행될 수 있는 복수 개의 메모리 칩의 그룹을 둘 수 있으며, 이러한 기법을 멀티 데이터 웨이(multi data way) 또는 단순히 멀티 웨이라고 한다.
도 1에서 도시된 플래시 메모리도 멀티 채널 멀티 웨이 기법을 사용한다.
한편, 도 1에서는 데이터를 저장하는 메인 스토리지(main storage)가 플래시 메모리(130)인 경우를 도시하고 있으나, 상기한 바와 같이 본 발명은 이에 한정되지 않는다.
따라서, 메인 스토리지는 플래시 메모리 이외에, 멀티 채널을 가지는 다른 메모리 수단일 수도 있다. 본 기술 분야의 통상의 지식을 가진 자라면, 본 발명의 버퍼 관리 기법에 관한 사상을 벗어나지 않는 범위에서, 플래시 메모리(130)를 다른 스토리지 미디어로 변경할 수 있다.
본 발명의 실시예에 따른 명령이 본 발명의 실시예들에 따라 메모리 장치에서 처리되는 보다 상세한 내용은, 도2 내지 도 5를 참조하여 후술한다.
도 2는 본 발명의 일 실시예에 따른 저장 장치에서 버퍼를 관리하는 방법을 도시하는 개념도이다.
본 발명의 일 실시예에 따르면, 버퍼 메모리(120)는 복수 개의 버퍼 페이지를 포함한다. 상기 복수 개의 버퍼 페이지의 각각은, 플래시 메모리(130) 내의 데이터를 페이지 단위로 버퍼링 한다.
버퍼 메모리(120) 내에서, 현재 데이터를 저장하고 있는(즉, 데이터를 버퍼링 하고 있는) 버퍼 페이지들은, 버퍼 큐(210) 내지 버퍼 큐(290) 중 어느 하나에 연관된다.
큐(Queue)는 데이터 구조(data structure) 중의 하나인데, 데이터를 큐에 포함시키는 것(연관 시키는 것)을 인큐(inqueue)라 하고, 큐에 연관된 데이터와 큐 사이의 연관 관계를 삭제하는 것을 디큐(dequeue)라 한다.
프로세서(110)는 버퍼 메모리(120) 내의 어느 한 버퍼 페이지가 데이터를 저장하는 경우, 상기 버퍼 페이지를 버퍼 큐(210) 내지 버퍼 큐(290) 중 어느 하나에 인큐한다.
버퍼 큐(210) 내지 버퍼 큐(290)의 각각이 대응하는 멀티 채널 멀티 웨이 플래시 메모리가 도 3에서 도시된다.
도 3의 실시예에서, 플래시 메모리는 4 개의 채널(채널 0 내지 채널 3)을 포함한다. 그리고, 각 채널은 4 개의 데이터 웨이를 포함한다.
따라서, 도 3의 플래시 메모리에는 16개의 데이터 웨이가 존재하며, 플래시 메모리 내의 16 개의 데이터 웨이 각각을 통하여 데이터 액세스(이를테면, 데이터 프로그래밍)가 병렬적으로 수행될 수 있다.
예를 들어, 16 개의 데이터 웨이의 각각에 속하는 16 개의 페이지에 각각 데이터를 프로그램하는 경우, 모두 병렬적으로 처리될 수 있다.
다시 도 2를 함께 참조하면, 버퍼 큐(210) 내지 버퍼 큐(240)은 도 3의 채널 0에서 병렬 적 데이터 액세스가 가능한 4 개의 데이터 웨이(311 내지 314)의 각각에 대응한다.
Queue(0,0) (210)에는, 0번 채널 0번 데이터 웨이(311)의 플래시 페이지들을 버퍼링 하는 버퍼 페이지(211) 내지 페이지(214)가 인큐된다.
한편, Queue(0,1) (220)에는 인큐된 페이지가 존재하지 않는다. 이것은 버퍼 메모리(120)에 0번 채널 1번 데이터 웨이(312)의 페이지는 버퍼링 되지 않았기 때문이다.
같은 방식으로 Queue(0,2) (230)에는, 0번 채널 2번 데이터 웨이(313)의 플래시 페이지를 버퍼링 하는 버퍼 페이지(231)가 인큐된다.
본 발명의 일 실시예에 따르면, 동일한 큐 내에 인큐 된 복수 개의 버퍼 페이지는, 디큐(dequeue) 될 순서에 따라 정렬되어 있다.
큐(Queue) 구조에서는, 인큐 된 데이터들의 디큐 순서를 정하는 정책이 동작 속도 및/또는 효율성에 중요한 역할을 한다. 특히, 버퍼 메모리 내에 버퍼링 된 페이지의 리스트를 큐로 관리하는 경우, 인큐 된 버퍼 페이지의 디큐 순서가 버퍼 교체 순서와 직접 관련된다. 버퍼 교체에 대해서는 후술한다.
한편, 액세스 하고자 페이지의 데이터가, 버퍼 메모리 내에 버퍼링 되어 있는 것을 버퍼 히트(Buffer hit)라 하고, 그렇지 않은 것을 버퍼 미스(Buffer miss)라 한다.
버퍼 메모리(120)의 존재 이유는 버퍼 히트 확률을 증가시켜, 데이터 액세스 속도를 높이는 데에 있다. 따라서, 버퍼 메모리(120) 내의 각 버퍼 큐들(210 내지 260) 내의 버퍼 페이지 디큐 순서도, 상기 버퍼 히트 확률을 높이도록 조정될 수 있다.
버퍼에 빈 공간이 없는 경우, 새로운 버퍼링을 위해 기존에 버퍼링 되어 있는 페이지의 데이터를 플래시 메모리로 프로그램 하고, 버퍼 페이지를 소거하데, 이를 버퍼 교체(Buffer replacement)라 한다.
이 버퍼 교체의 경우, 기존에 버퍼링 되어 있던 페이지 중 어느 페이지의 데이터를 교체할 지 결정하는 기준을 버퍼 교체 정책(Buffer replacement policy)이라고 한다.
상기 버퍼 교체 정책으로서, 간단한 것은 선입선출(First-In, First-Out: FIFO) 기법이다. FIFO는, 가장 먼저 버퍼링 된 데이터를 삭제해 나가는 방식이다. 상기 FIFO 알고리즘은, 장래에 데이터가 사용될 지의 여부를 고려하지 않고, 버퍼에 저장된(인큐 된) 순서만 고려한다. 따라서 구현이 비교적 간단하다.
한편, 상용화 되어 있는 보편적인 방법은 LRU(Least Recently Used) 기법으로, 호스트로부터 액세스 된 이후 경과된 시간이 가장 큰 데이터를 삭제하는 방법이다. FIFO에 비해서는 구현이 어렵지만, 비교적 합리적인 방식이다.
상기 버퍼링 된 데이터 중 가까운 미래에 접근이 필요한 데이터를 남기고, 그렇지 않은 데이터를 삭제하는 방법이 이상적인 교체 알고리즘(Optimal replacement algorithm)이지만, 구현이 어렵다.
본 발명의 일 실시예에 따르면, 버퍼 교체를 위한 각 버퍼 큐들의 디큐 순서 정렬은 상기 LRU 기법에 의한다.
예를 들어, 버퍼 큐(210)의 경우, 페이지(211) 내지 페이지(214)는 최근에 액세스 된 순서대로 정렬되어 있다. 페이지(211)이 가장 최근에 액세스 된 것이고, 페이지(214)는 액세스 된 지 가장 오래된 페이지이다.
따라서, 본 발명의 일 실시예에 따라, LRU 기법을 적용하는 경우, 페이지(211) 내지 페이지(214) 중에 (버퍼 교체를 위해) 가장 먼저 디큐 될 페이지는, 페이지(214)이다.
기존의 버퍼 관리 방법에서는, 버퍼 메모리(120) 내에 버퍼링 된 플래시 페이지의 리스트를, 전체로서 관리하였다. 즉, 버퍼링 된 플래시 페이지 들의 플래시 메모리 내에서의 채널이나 데이터 웨이를 고려하지 않고, 단순히 버퍼링 된 플래시 페이지의 리스트를 함께 관리하였다.
그러나, 본 발명의 일 실시예에 따른 버퍼 관리 방법에 따르면, 버퍼링 된 페이지들을 플래시 메모리 내의 데이터 웨이에 따라 나누어 관리한다. 즉, 데이터 웨이(311)의 플래시 메모리 페이지들을 버퍼링 하는 버퍼링 페이지(211 내지 214)는 버퍼 큐(210)로써 관리하고, 데이터 웨이(313)의 페이지를 버퍼링 하는 버퍼링 페이지(231)은 또 다른 버퍼 큐(230)로써 관리한다.
따라서, 버퍼 페이지(214)와 버퍼 페이지(231)는 동시에 플래시 메모리로 프로그램 될 수 있다.
본 발명의 일 실시예에 따르면, 버퍼 메모리(120) 내의 비어 있는 버퍼 페이지(200)의 개수가 제1 임계치 이하인 경우(또는, 비어 있는 버퍼 페이지가 없는 경우), 버퍼 메모리(120)의 일부를 비워서 비어 있는 버퍼 페이지를 확보한다.
버퍼 메모리(120) 내의 일부 버퍼 페이지의 데이터를, 각각 대응하는 플래시 페이지로 옮겨서 저장하고, 상기 일부 버퍼 페이지의 데이터를 소거하는 것을, 버퍼 비우기(Buffer Flush)라고 한다.
본 발명의 일 실시예에 따르면, 버퍼 플러시가 필요한 경우, 각 버퍼 큐(210 내지 290)의 테일 버퍼 페이지들(Tail Buffer pages) (201)을 함께 플러시(Flush) 한다.
그리고, 상기 테일 버퍼 페이지들의 데이터를 병렬적으로 플래시 메모리로 프로그램 한다.
이를 테면, 버퍼 플러시가 필요한 경우, 프로세서(110)가 버퍼 메모리(120) 내의 각 버퍼 큐들의 테일 버퍼 페이지들(201)을 선택한다.
그리고, 프로세서는 상기 선택된 테일 버퍼 페이지들(201)에 저장된 데이터를 플래시 메모리로 전송한다.
이 경우, 버퍼 페이지(214)는 데이터 웨이(311)를 통해 상기 버퍼 페이지(214)에 대응하는 플래시 페이지로 프로그램 된다.
그리고, 이와 병렬적으로, 버퍼 페이지(231)는 데이터 웨이(313)를 통해 상기 버퍼 페이지(231)에 대응하는 플래시 페이지로 프로그램 된다.
또한, 이와 병렬적으로, 버퍼 페이지(242)는 데이터 웨이(314)를 통해 상기 버퍼 페이지(242)에 대응하는 플래시 페이지로 프로그램 된다.
이러한 방식으로, 버퍼 페이지(252 내지 291) 역시 각각 서로 다른 데이터 웨이를 통해 병렬적으로 플래시 페이지로 프로그램 된다.
이 경우, 버퍼 큐(220)과 같이, 인큐 된 버퍼 페이지가 없는 버퍼 큐에는 테일 버퍼 페이지도 없으므로, 상기 병렬적 프로그래밍 과정에서, 데이터 웨이(312)쪽은 유휴(idle) 상태에 있을 수 있다.
이러한 병렬적인 버퍼 플러시 방식에 의하면, 하나씩의 버퍼 페이지를 플래시 페이지로 플러시 하는 것 보다, 플러시 속도가 월등히 향상된다.
그리고, 상기 병렬적 프로그래밍 후에(또는 동시에) 버퍼 페이지들(201)은 모두 소거된다. 그리고, 소거된 페이지들(201)은, 어느 버퍼 큐에도 할당되지 않은, 비어 있는 버퍼 큐(200)로 참조된다.
도 4는 본 발명의 일 실시예에 따른 버퍼 관리 방법을 도시한다.
단계(S410)에서 프로세서는 호스트로부터 플래시 메모리의 복수 개의 페이지 중, 제1 플래시 페이지에 대한 쓰기 명령을 수신한다. 그리고, 프로세서는 상기 제1 플래시 페이지에 대해 버퍼 히트가 발생했는지, 즉 상기 제1 플래시 페이지의 데이터가, 버퍼 메모리 내에 존재하는 지 판단한다.
버퍼 히트의 경우, 단계(S450)에서, 프로세서는 상기 제1 플래시 페이지의 데이터를 버퍼링 하고 있는 제1 버퍼 페이지에, 상기 제1 플래시 페이지의 새로운 데이터를 쓴다.
그리고, 단계(S460)에서, 프로세서는 상기 제1 버퍼 페이지가 속한 버퍼 큐의 정렬 순서를 업데이트 하여, 상기 제1 버퍼 페이지가 가장 최근에 액세스 된 것으로 참조되도록(따라서, 가장 나중에 디큐 되도록) 한다.
상기 단계(S410)의 판단 결과, 버퍼 히트가 아닌 경우(즉, 버퍼 미스인 경우), 단계(S420)에서, 프로세서는 버퍼 메모리 내에 비어 있는 버퍼 페이지가 존재하는 지 판단한다.
비어 잇는 버퍼 페이지가 존재하는 경우, 단계(S440)에서, 프로세서는 비어 있는 버퍼 페이지 중 하나인 제2 버퍼 페이지를 할당한다. 그리고 단계(S450)에서 프로세서는 상기 비어 있는 제2 버퍼 페이지에 상기 제1 플래시 페이지의 데이터를 쓴다. 또한, 단계(S460)에서, 프로세서는 상기 제2 버퍼 페이지를 상기 제1 플래시 페이지에 대응하는 버퍼 큐에 인큐한다. 이 경우, 상기 제2 버퍼 페이지가 상기 버퍼 큐 내에서 가장 최근에 액세스 된 것으로 정렬된다.
단계(S420)에서, 버퍼 메모리 내에 비어 있는 버퍼 페이지가 존재하지 않는다고 판단되는 경우(또는 비어 있는 버퍼 페이지의 수가 제1 임계치 이하인 경우), 프로세서는 단계(S430)에서, 버퍼 메모리 내의 각 버퍼 큐로부터, 테일 페이지(tail page)를 디큐 하여, 이를 병렬적으로 플래시 메모리에 프로그램 한다. 이 경우, 인큐 되어 있는 버퍼 페이지의 수가 0이 아닌 버퍼 큐들의 수만큼의, 비어 있는 버퍼 페이지가 생긴다.
상기 단계(S430)의 보다 상세한 실시예는 도 5를 참조하여 후술한다.
한편, 단계(S430)에서 비어 있는 페이지가 확보되면, 프로세서는 단계(S440)에서 상기 제1 플래시 페이지의 데이터를 버퍼링 하기 위한 새로운 페이지를 할당하고(S440), 할당된 페이지에 상기 제1 플래시 페이지의 데이터를 쓰고(S450), 상기 제1 플래시 페이지의 데이터에 대응하는 버퍼 큐를 업데이트 한다(S460).
도 5는 본 발명의 일 실시예에 따라, 병렬적으로 버퍼 데이터를 비우는(flush) 버퍼 관리 방법을 도시한다.
단계(S510)에서, 버퍼 메모리 내의 복수 개의 버퍼 큐 각각의 테일 페이지를 선택한다. 상기 LRU 기법에 의해 관리되는 경우, 상기 테일 페이지는, 각 버퍼 큐 내에서 액세스 된 지 가장 오래된 페이지이다.
그리고, 단계(S520)에서, 선택된 각각의 테일 페이지 들에 저장되어 있는 데이터를, 병렬적으로 플래시 메모리의 플래시 칩에 프로그램 한다. 이 단계의 상세한 동작은 도 2 및 도 3을 참조해서 상기한 바와 같다.
그리고, 프로세서는 단계(S530)에서 상기 선택된 각각의 테일 페이지를 소거하고, 비어 있는 페이지로 지정한다. 그러면, 상기 비어 있는 페이지로 지정된 버퍼 페이지들에는 새로운 버퍼 데이터가 써질 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명의 일 실시예에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 구현될 수 있다. 예를 들면, 본 발명의 일 실시예에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 구현될 수 있다.
플래시 메모리 장치와 메모리 컨트롤러는 메모리 카드를 구성할 수 있다. 이러한 경우, 메모리 컨트롤러는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 수 있다.
플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 비휘발성 메모리 장치이다. 셀룰러 폰, PDA, 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용될 수 있다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템 또는 호스트는 버스에 전기적으로 연결된 마이크로프로세서, 사용자 인터페이스, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀, 메모리 컨트롤러, 그리고 플래시 메모리 장치를 포함한다. 플래시 메모리 장치에는 마이크로프로세서에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 컨트롤러를 통해 저장될 것이다. 본 발명의 일 실시예에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 것이다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 컨트롤러와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 비휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 저장 장치를 도시한다.
도 2는 본 발명의 일 실시예에 따른 저장 장치에서 버퍼를 관리하는 방법을 도시하는 개념도이다.
도 3은 본 발명의 일 실시예에 따라, 병렬적으로 플래시 메모리에 버퍼 데이터를 프로그램하는 방법을 도시하는 개념도이다.
도 4는 본 발명의 일 실시예에 따른 버퍼 관리 방법을 도시한다.
도 5는 본 발명의 일 실시예에 따른 버퍼 관리 방법을 도시한다.

Claims (17)

  1. 병렬로 설정되는 N 개의 버퍼 큐를 갖고, 상기 버퍼 큐 각각은 페이지의 데이터를 저장하도록 설정되는 버퍼 메모리;
    병렬로 설정되는 N 개의 플래시 칩을 갖는 플래시 메모리;
    상기 N 개의 버퍼 큐 각각으로부터 서로 다른 N 개의 플래시 칩으로 페이지의 데이터를 동시에 전송하도록 설정되는 신호 선; 및
    상기 신호 선을 통해서 상기 N 개의 버퍼 큐 각각으로부터 상기 서로 다른 N 개의 플래시 칩으로 상기 페이지의 데이터를 동시에 프로그램하는 프로세서;
    를 포함하며,
    상기 프로세서는, 프로그램 하는 동안에, 페이지의 데이터를 인큐된 페이지의 데이터가 존재하는 상기 N 개의 버퍼 큐 각각으로부터 상기 서로 다른 N 개의 플래시 칩으로 동시에 프로그램하지만, 인큐된 페이지의 데이터가 존재하지 않는 버퍼 큐로부터는 페이지의 데이터를 프로그램하지 않는 저장 장치- 단, N은 1보다 큰 자연수 -.
  2. 제1항에 있어서,
    상기 프로세서는, 상기 버퍼 메모리 내에 비어있는 페이지의 수가 제1 임계치 이하인 경우, 상기 N 개의 페이지의 데이터를 상기 플래시 메모리로 프로그램하는, 저장 장치.
  3. 제1항에 있어서,
    상기 프로세서는, 상기 N 개의 페이지의 데이터를 상기 플래시 메모리로 프로그램한 후, 상기 N 개의 페이지의 데이터를 소거하는, 저장 장치.
  4. 삭제
  5. 제1항에 있어서,
    상기 버퍼 메모리 내의 페이지의 데이터 중 상기 N 개의 페이지의 데이터 각각은, N 개의 버퍼 큐 중 서로 다른 하나의 버퍼 큐에 연관되는, 저장 장치.
  6. 제5항에 있어서,
    상기 프로세서는, 상기 버퍼 메모리 내의 비어있는 페이지의 수가 제1 임계치 이하인 경우, 상기 N 개의 버퍼 큐의 각각에 연관되는 페이지의 데이터를 선택하여, 상기 선택된 N 개의 페이지의 데이터를 상기 플래시 메모리로 프로그램하는, 저장 장치.
  7. 제6항에 있어서,
    상기 버퍼 메모리 내의 비어있는 페이지의 수가 제1 임계치 이하인 경우, LRU(Least Recently Used) 기법에 의해 상기 N 개의 버퍼 큐 각각의 선택되는 페이지는 상기 버퍼 큐에 연관되는 복수의 페이지의 데이터 중에서 선택되는, 저장 장치.
  8. N 개의 버퍼 큐를 포함하는 버퍼 메모리 - 단, N은 2보다 큰 자연수 -;
    복수의 플래시 칩을 갖는 플래시 메모리; 및
    상기 N 개의 버퍼 큐 중 M 개의 버퍼 큐로부터 각각 페이지의 데이터를 선택하고, 상기 선택된 페이지에 저장된 상기 데이터를 상기 플래시 메모리로 프로그램하는 프로세서 - M은 N보다 작은 자연수 -
    를 포함하고,
    선택되는 각각의 페이지의 상기 데이터는 상기 프로세서에 의해 상기 서로 다른 복수의 플래시 칩으로 동시에 프로그램되고,
    상기 프로세서는, 프로그램 하는 동안에, 페이지의 데이터를 인큐된 페이지의 데이터가 존재하는 상기 N 개의 버퍼 큐 각각으로부터 상기 서로 다른 N 개의 플래시 칩으로 동시에 프로그램하지만, 인큐된 페이지의 데이터가 존재하지 않는 버퍼 큐로부터는 페이지의 데이터를 프로그램하지 않는
    저장 장치.
  9. 제8항에 있어서,
    버퍼 큐의 개수는, 상기 플래시 메모리 내에서, 데이터를 동시에 프로그램 하는 신호 선의 개수에 따라 결정되는, 저장 장치.
  10. 제8항에 있어서,
    상기 프로세서는, 상기 버퍼 메모리 내에 비어있는 페이지의 수가 제1 임계치 이하인 경우 페이지의 데이터를 선택하고, 상기 선택된 페이지에 저장된 데이터를 상기 복수의 플래시 칩으로 프로그램하는, 저장 장치.
  11. 제10항에 있어서,
    선택되는 페이지의 데이터 각각 마다, 상기 프로세서는, LRU(Least Recently Used) 기법에 의해 상기 버퍼 큐에 연관되는 복수의 페이지의 데이터로부터 상기 페이지의 데이터를 선택하는, 저장 장치.
  12. 복수 개의 버퍼 큐 중, 상기 버퍼 내에 있는 복수의 버퍼 큐 전체 보다 적은 수의 버퍼 큐 각각에서 페이지의 데이터를 선택하는 단계;
    상기 선택된 페이지에 저장된 데이터를 복수의 플래시 칩을 갖는 플래시 메모리로 전송하는 단계; 및
    전송된 데이터를 상기 선택된 페이지 각각으로부터 서로 다른 플래시 칩으로 동시에 프로그램 하는 단계를 포함하고,
    상기 프로그램 하는 단계는, 페이지의 데이터를 인큐된 페이지의 데이터가 존재하는 N 개의 버퍼 큐 각각으로부터 상기 서로 다른 N 개의 플래시 칩으로 동시에 프로그램하지만, 인큐된 페이지의 데이터가 존재하지 않는 버퍼 큐로부터는 페이지의 데이터를 프로그램하지 않는
    버퍼 관리 방법.
  13. 제12항에 있어서,
    상기 버퍼 내에 비어있는 페이지가 있는지 판단하는 단계를 더 포함하고,
    비어있는 페이지가 상기 버퍼 내에 존재하지 않는다고 판단되면 상기 선택된 페이지에 저장된 데이터가 전송되고 프로그램되는
    버퍼 관리 방법.
  14. 제12항에 있어서,
    관련된 버퍼 큐로부터 상기 선택된 페이지 각각에 저장된 데이터를 소거하는 단계
    를 더 포함하는, 버퍼 관리 방법.
  15. 제14항에 있어서,
    상기 데이터가 소거된 페이지 중 어느 하나의 페이지에, 수신된 쓰기 명령에 대응하는 데이터를 쓰는 단계; 및
    상기 어느 하나의 소거된 페이지를 상기 복수 개의 버퍼 큐 중 하나에 할당하는 단계
    를 더 포함하는, 버퍼 관리 방법.
  16. 제15항에 있어서,
    하나의 버퍼 큐에 관련되는 페이지의 순서를 업데이트 하는 단계
    를 더 포함하는, 버퍼 관리 방법.
  17. 제12항의 버퍼 관리 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
KR1020090023041A 2009-03-18 2009-03-18 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 KR101581679B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090023041A KR101581679B1 (ko) 2009-03-18 2009-03-18 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US12/567,778 US8458394B2 (en) 2009-03-18 2009-09-27 Storage device and method of managing a buffer memory of the storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090023041A KR101581679B1 (ko) 2009-03-18 2009-03-18 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20100104550A KR20100104550A (ko) 2010-09-29
KR101581679B1 true KR101581679B1 (ko) 2015-12-31

Family

ID=42738604

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090023041A KR101581679B1 (ko) 2009-03-18 2009-03-18 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법

Country Status (2)

Country Link
US (1) US8458394B2 (ko)
KR (1) KR101581679B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101105127B1 (ko) * 2010-04-16 2012-01-16 성균관대학교산학협력단 에스에스디 확장버퍼를 사용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장버퍼로서 사용하는 장치
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US20130054880A1 (en) * 2011-08-26 2013-02-28 Stec, Inc. Systems and methods for reducing a number of close operations in a flash memory
US8635407B2 (en) 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
US8635399B2 (en) 2011-10-18 2014-01-21 Stec, Inc. Reducing a number of close operations on open blocks in a flash memory
TWI520152B (zh) * 2013-03-01 2016-02-01 慧榮科技股份有限公司 資料儲存裝置與快閃記憶體控制方法
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
KR20150127434A (ko) * 2014-05-07 2015-11-17 에스케이텔레콤 주식회사 메모리제어장치 및 메모리제어장치의 동작 방법
US9348518B2 (en) 2014-07-02 2016-05-24 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9542284B2 (en) 2014-08-06 2017-01-10 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
JP6721821B2 (ja) * 2015-11-19 2020-07-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
CN109213695B (zh) * 2017-06-30 2023-07-21 伊姆西Ip控股有限责任公司 缓存管理方法、存储***以及计算机程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163629A1 (en) * 2002-02-22 2003-08-28 Conley Kevin M. Pipelined parallel programming operation in a non-volatile memory system
US20050055512A1 (en) * 2003-09-05 2005-03-10 Kishi Gregory Tad Apparatus, system, and method flushing data from a cache to secondary storage

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827348B2 (en) * 2000-01-06 2010-11-02 Super Talent Electronics, Inc. High performance flash memory devices (FMD)
US6721843B1 (en) * 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
TW200301485A (en) 2001-12-04 2003-07-01 Hitachi Ltd Method of controlling the operation of non-volatile semiconductor memory chips
US20030145012A1 (en) * 2002-01-31 2003-07-31 Kurth Hugh R. Shared resource virtual queues
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
JP2004071033A (ja) 2002-08-05 2004-03-04 Mitsubishi Electric Corp フラッシュメモリのデータ記録法
US7673105B2 (en) * 2005-06-27 2010-03-02 Ab Inition Technology LLC Managing memory pages
JP4273106B2 (ja) 2005-08-31 2009-06-03 Tdk株式会社 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US7793059B2 (en) * 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
KR100765786B1 (ko) * 2006-06-12 2007-10-12 삼성전자주식회사 플래시 메모리 시스템, 그 프로그램을 위한 호스트 시스템및 프로그램 방법
KR20080017982A (ko) 2006-08-23 2008-02-27 삼성전자주식회사 플래시 메모리 시스템 및 그 프로그램 방법
KR101382562B1 (ko) * 2007-08-24 2014-04-10 삼성전자주식회사 복수개의 뱅크들을 동시에 프로그램할 수 있는 반도체메모리 장치 및 방법
US8239875B2 (en) * 2007-12-21 2012-08-07 Spansion Llc Command queuing for next operations of memory devices
US8738841B2 (en) * 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163629A1 (en) * 2002-02-22 2003-08-28 Conley Kevin M. Pipelined parallel programming operation in a non-volatile memory system
US20050055512A1 (en) * 2003-09-05 2005-03-10 Kishi Gregory Tad Apparatus, system, and method flushing data from a cache to secondary storage

Also Published As

Publication number Publication date
KR20100104550A (ko) 2010-09-29
US20100241792A1 (en) 2010-09-23
US8458394B2 (en) 2013-06-04

Similar Documents

Publication Publication Date Title
KR101581679B1 (ko) 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
US8171242B2 (en) Systems and methods for scheduling a memory command for execution based on a history of previously executed memory commands
US9852061B2 (en) Memory device and operating method of memory device
US8832333B2 (en) Memory system and data transfer method
US8738882B2 (en) Pre-organization of data
US8281042B2 (en) Memory device and management method of memory device
US8892520B2 (en) Storage device including a file system manager for managing multiple storage media
US8555000B2 (en) Data storage device and data storing method thereof
US8775739B2 (en) Memory system including first and second caches and controlling readout of data therefrom
US20130254454A1 (en) Memory system and bank interleaving method
US20120159050A1 (en) Memory system and data transfer method
KR20100039180A (ko) 반도체 디스크 장치 및 그것의 데이터 관리 방법
US20150253992A1 (en) Memory system and control method
KR101541344B1 (ko) 메모리 장치 및 메모리 장치의 제어 방법
KR102079939B1 (ko) 데이터 저장 장치 및 그것의 명령어 스케줄링 방법
JP7030942B2 (ja) メモリ装置及びその制御方法
US20180081799A1 (en) Memory device and non-transitory computer readable recording medium
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
KR101517183B1 (ko) 데이터 저장 장치 및 그것의 데이터 저장 방법
US10474569B2 (en) Information processing device including nonvolatile cache memory and processor
US20160188460A1 (en) Information processing device and non-transitory computer readable recording medium

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant