KR101505005B1 - 메모리 장치 및 메모리 장치의 관리 방법 - Google Patents

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

Info

Publication number
KR101505005B1
KR101505005B1 KR1020080123217A KR20080123217A KR101505005B1 KR 101505005 B1 KR101505005 B1 KR 101505005B1 KR 1020080123217 A KR1020080123217 A KR 1020080123217A KR 20080123217 A KR20080123217 A KR 20080123217A KR 101505005 B1 KR101505005 B1 KR 101505005B1
Authority
KR
South Korea
Prior art keywords
instruction
data
command
list
buffer
Prior art date
Application number
KR1020080123217A
Other languages
English (en)
Other versions
KR20100064673A (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 KR1020080123217A priority Critical patent/KR101505005B1/ko
Priority to US12/470,574 priority patent/US8281042B2/en
Publication of KR20100064673A publication Critical patent/KR20100064673A/ko
Application granted granted Critical
Publication of KR101505005B1 publication Critical patent/KR101505005B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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 Of A Hierarchy Structure (AREA)

Abstract

메모리 장치가 제공된다. 상기 메모리 장치는 호스트로부터 제1 명령을 수신하여 저장하고, 상기 제1 명령을 독출하여 제어부로 전송하는 명령 큐, 상기 명령 큐로부터 전송된 제1 명령에 대응하는 데이터를 저장장치로부터 독출하여 버퍼 메모리에 저장하는 제어부, 및 상기 버퍼 메모리에 저장된 데이터의 리스트를 저장하는 제1 메모리를 포함하고, 상기 제어부는, 상기 명령 큐가 상기 호스트로부터 제1 명령을 수신하는 경우, 상기 제1 메모리에 저장된 상기 데이터 리스트를 업데이트한다.
Figure R1020080123217
버퍼 관리, 플래시 메모리, Buffer, SSD, Flash memory

Description

메모리 장치 및 메모리 장치의 관리 방법{MEMORY DEVICE AND MANAGEMENT METHOD OF MEMORY DEVICE}
본 발명은 메모리 장치 및 메모리 장치의 동작 방법에 관한 것으로서, 특히 버퍼 메모리를 사용하는 저장 장치 내에서 버퍼를 효율적으로 관리하는 메모리 장치 및 메모리 장치의 관리 방법에 관한 것이다.
버퍼 메모리(Buffer Memory)는 서로 다른 두 장치 간의 속도 차이를 보상하는 역할을 한다. 한 장치는 빠른 속도로 접근하고, 다른 장치가 상대적으로 느린 속도로 접근하는 경우, 중간 정도의 속도를 내는 장치를 활용하여, 지연 시간을 줄이는 역할을 한다. 예를 들어, CPU와 메모리 간의 속도 차이를 보상하는 캐시(Cache), 호스트와 저장 장치 사이의 버퍼 메모리 등이 있다.
버퍼 메모리는 처리 속도 향상 대비 비용이 크기 때문에 비교적 작은 용량의 메모리가 사용되며, 이를테면, 상용 하드디스크(HDD)의 버퍼 메모리 크기는 4MB 내지 32MB 정도이다. 따라서, 버퍼에 미리 저장해둘 수 있는 데이터의 크기는 크기 않으며, 필요한 데이터(가까운 시간 내에 접근이 필요한 데이터)만 저장해두고, 나머지 데이터는 삭제하는 방식의 버퍼 관리 기법이 요구된다.
상기 버퍼 관리 기법을 버퍼 교체 알고리즘(Buffer replacement algorithm)이라 한다. 상기 버퍼 교체 알고리즘으로서, 간단한 것은 선입선출(First-In, First-Out: FIFO) 알고리즘이다. FIFO는, 가장 먼저 저장된 데이터를 삭제해 나가는 방식이다. 상기 FIFO 알고리즘은, 장래에 데이터가 사용될 지의 여부를 고려하지 않고, 버퍼에 저장된 선후 관계만 고려한다. 따라서 구현이 비교적 간단하다.
한편, 상용화 되어 있는 보편적인 방법은 LRU(Least Recently Used) 알고리즘으로, 호스트로부터 참조된 이후 경과된 시간이 가장 큰 데이터를 삭제하는 방법이다. FIFO에 비해서는 구현이 어렵지만, 비교적 합리적인 방식이다.
상기 버퍼에 저장된 데이터 중 가까운 미래에 접근이 필요한 데이터를 남기고, 그렇지 않은 데이터를 삭제하는 방법이 이상적인 교체 알고리즘(Optimal replacement algorithm)이지만, 구현이 어렵다. 따라서, 구현 가능한 방법을 사용하여, 상기 이상적인 교체 알고리즘에 보다 근접한 버퍼 교체 알고리즘이 요구된다.
본 발명의 일부 실시예는, 명령어 큐를 사용하는 저장장치에서, 버퍼를 효율적으로 운영하는 메모리 장치 및 메모리 관리 방법을 제공하기 위한 것이다.
본 발명의 다른 일부 실시예는, 명령 처리 속도를 향상시킨 메모리 장치 및 메모리 관리 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따르면, 호스트로부터 제1 명령을 수신하여 저장하고, 상기 제1 명령을 독출하여 제어부로 전송하는 명령 큐(Command Queue), 상기 명령 큐로부터 전송된 제1 명령에 대응하는 데이터를 저장장치로부터 독출하여 버퍼 메모리에 저장하는 제어부, 및 상기 버퍼 메모리에 저장된 데이터의 리스트를 저장하는 제1 메모리를 포함하고, 상기 제어부는, 상기 명령 큐가 상기 호스트로부터 제1 명령을 수신하는 경우, 상기 제1 메모리에 저장된 상기 데이터 리스트를 업데이트하는 것을 특징으로 하는 메모리 장치가 제공된다.
본 발명의 일 실시예에 따르면, 상기 데이터 리스트는, 상기 버퍼 메모리에 저장된 데이터의 정보를 최근에 사용된 순서에 따라 정렬하여 저장할 수 있다. 한편, 상기 명령 큐가 호스트로부터 수신한 제1 명령에 대응하는 데이터가 상기 버퍼 리스트에 존재하는 경우, 상기 제어부는 상기 제1 명령에 대응하는 데이터를 저장장치로부터 독출하지 않고 상기 버퍼 리스트를 업데이트 하여, 상기 리스트 내의 가장 최근에 사용된 데이터의 정보는 상기 제1 명령에 대응하는 데이터의 정보가 되도록, 상기 리스트의 배열을 변경한다.
본 발명의 일 실시예에 따르면, 상기 명령 큐가 호스트로부터 수신한 제1 명령에 대응하는 데이터가 상기 버퍼 리스트에 존재하는 경우, 제어부는 버퍼 메모리 내의 제1 명령에 대응하는 데이터가 저장된 주소를 제1 변수로 저장한다. 한편, 상기 명령 큐가 호스트로부터 수신한 제1 명령에 대응하는 데이터가 상기 버퍼 리스트에 존재하지 않는 경우, 상기 제어부는 상기 제1 변수의 값을 null 값으로 저장한다.
상기 제1 명령이 상기 명령 큐로부터 독출되어 수행되는 경우, 상기 제어부는 상기 제1 변수를 참조하여 상기 버퍼 메모리로부터 상기 제1 명령에 대응하는 데이터를 독출할 수 있다.
한편, 상기 명령 큐가 상기 제1 명령을 독출하여 전송하는 경우, 상기 제어부는 상기 제1 메모리에 저장된 상기 데이터 리스트를 다시 업데이트 할 수 있다. 상기 데이터 리스트는, 상기 버퍼 메모리에 저장된 데이터의 정보를, 최근에 사용된 순서에 따라 정렬하여 저장한다.
본 발명의 일 실시예에 따르면, 상기 제어부는, 상기 명령 큐로부터 독출되는 제1 명령에 대응하는 데이터가 상기 버퍼 리스트에 존재하는 경우, 상기 버퍼 리스트를 업데이트 하여, 상기 리스트 내의 가장 최근에 사용된 데이터의 정보는 상기 제1 명령에 대응하는 데이터의 정보가 되도록, 상기 리스트의 배열을 변경한다.
본 발명의 다른 일 실시예에 따르면, 호스트로부터 수신한 제1 명령이 버퍼 메모리에 존재하는 지 판단하는 단계, 및 상기 제1 명령에 대응하는 데이터가 버퍼 메모리에 존재하는 경우, 버퍼 메모리에 저장된 데이터의 리스트를 업데이트 하는 단계를 포함하는 메모리 관리 방법이 제공된다.
상기 리스트는, 상기 버퍼 메모리에 저장된 데이터의 정보를, 최근에 사용된 순서에 따라 정렬하여 저장할 수 있다.
한편, 본 발명의 일 실시예에 다르면, 상기 버퍼 메모리에 저장된 데이터의 리스트를 업데이트 하는 단계는, 상기 데이터 리스트 내의 가장 최근에 사용된 데이터의 정보에 상기 제1 명령에 대응하는 데이터의 정보가 위치하도록, 상기 리스트의 배열을 변경함으로써 수행된다.
본 발명의 또 다른 일 실시예에 따르면, 상기 메모리 관리 방법은 상기 제1 명령에 대응하는 데이터가 버퍼 메모리에 존재하는 경우, 상기 버퍼 메모리 내의 상기 제1 명령에 대응하는 데이터의 주소를 제1 변수로 저장하는 단계를 더 포함한다.
한편, 상기 메모리 관리 방법은 상기 제1 명령이 상기 명령 큐로부터 독출되어 수행되는 경우, 상기 제1 변수를 참조하여 상기 버퍼 메모리로부터 상기 제1 명령에 대응하는 데이터를 독출하는 단계를 더 포함할 수 있다.
본 발명의 일부 실시예에 따르면, 명령어 큐를 사용하는 저장장치에서, 버퍼를 효율적으로 운영할 수 있다.
본 발명의 다른 일부 실시예에 따르면, 명령 처리 속도를 향상이 가능하므 로, 메모리 자원을 효율적으로 사용할 수 있다.
이하에서, 본 발명의 일 실시예에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치를 포함하는 저장 장치(storage device)(100)를 도시한다.
본 발명의 일 실시예에 따르면, 저장 장치(100)는, CPU(110), 호스트 인터페이스(120), 버퍼 메모리(130), 및 데이터 저장부(140)를 포함한다.
저장 장치(100)는 이를테면, 플래시 메모리(Flash memory)를 포함하는 고체 상태 디스크 (Solid State Disk, SSD)일 수 있다. SSD는 다수의 플래시 메모리 칩들을 이용하여 대용량의 스토리지(storage)를 구현하는 장치이다.
저장 장치(100)는 호스트 인터페이스(120)을 통해 호스트(121)로부터 명령(이를 테면, 읽기, 쓰기 등)을 수신한다. 상기 호스트 인터페이스(120)는 이를 테면, PATA(Parallel ATA), SATA(Serial ATA), 또는 USB(Universal Serial Bus) 등의 통신 규격일 수 있다. 또한, 상기 호스트(121)는 퍼스널 컴퓨터, 랩톱(Laptop), 디지털 캠코더, 디지털 카메라 등 어떠한 전자 기기라도 될 수 있다.
저장 장치(100)의 CPU(110)는 호스트(121)로부터의 통신 및 저장 장치(100)의 각 부분을 제어하는 역할을 한다. 상기 CPU(110)는 구동 OS(이를 테면, 펌웨 어, 리얼타임 OS 등)를 사용하여 동작하며, 본 발명의 일부 실시예에서는, 상기 CPU(110)가 본 명세서에서 언급되는 제어부의 역할을 수행할 수 있다. 다만, 본 발명은 제어부의 역할을 반드시 상기 CPU(110)가 수행하는 것으로 제한되는 것은 아니며, 도시되지 않은 별도의 모듈(module)에 의해 제어부가 구현될 수도 있다.
버퍼 메모리(130)는, 저장 미디어(140)으로부터 독출된 일부 데이터를 임시 저장하여, 호스트(121)에 제공할 수 있다. 상기 버퍼 메모리(130)는 휘발성(volatile) 메모리일 수 있으며, 이를테면, DRAM 또는 SRAM 일 수 있다. 그러나, 응용예에 따라서는, 비휘발성(Non volatile) 메모리일 수도 있다.
본 발명의 일 실시예에 따르면, 상기 버퍼 메모리(130)는, 버퍼 리스트를 저장하는 제1 메모리, 명령어 큐 등과 함께 상기 DRAM 상에서 함께 저장될 수도 있다.
데이터 저장부(140)는, 이를테면, 플래시 메모리일 수 있다. 플래시 메모리는 최근 대용량의 스토리지를 구현하는 데 널리 사용되고 있다. 상기 플래시 메모리(130)는 낸드(NAND) 플래시 메모리일 수 있고 노어 (NOR) 플래시 메모리일 수도 있다. 다만, 본 발명의 데이터 저장부(140)은 플래시 메모리에 한정되는 것이 아니며, 데이터를 기록하는 메모리라면, 다른 응용예도 가능하다.
데이터 저장부(140)는 복수 개의 채널을 포함할 수도 있으며, 각 채널마다 메모리 제어부(141 또는 151), 저장 미디어(142 또는 152)를 포함할 수 있다. 상기 플래시 메모리의 예에서, 저장 미디어(142 또는 152)는 플래시 메모리 칩일 수 있다.
한편, 상기 호스트 인터페이스(120)을 통해, 호스트(121)로부터 수신된 명령이 본 발명의 실시예들에 따라 메모리 장치에서 처리되는 보다 상세한 내용은, 도2 내지 도 5를 참조하여 후술한다.
도 2는 본 명의 일 실시예에 따른 메모리 장치에서, 버퍼 리스트를 업데이트 하는 과정을 도시한다.
명령(Command)이 명령어 큐(Command Queue)(202)로 입력된다. 명령이 명령어 큐로 입력 되어 저장되는 과정을 인큐(inqueue)라고도 한다. 이하에서는, 명령이 명령어 큐로 입력되는 과정은 인큐, 반대로 명령어 큐에 저장된 명령이 독출되는 과정을 디큐(dequeue)라고 한다.
본 발명의 일 실시예에 따르면, 참조 타이밍 1(210)에서 인큐 되는 제1 명령(201)에 대응하는 제1 데이터가 버퍼 메모리(203)에 저장되어 있는지 여부를 판단한다. 상기 제1 명령(201)에 대응하는 제1 데이터가 버퍼 메모리(203)에 저장되어 있는 경우를 버퍼 히트(Buffer hit)가 발생한 경우라고 한다. 반대로 버퍼 히트가 발생하지 않은 경우는 버퍼 미스(Buffer miss)가 발생한 경우라고 한다. 버퍼 메모리(203)가 최대한의 성능을 발휘하려면, 상기 버퍼 히트의 확률이 높아야 한다. 즉, 버퍼 미스의 확률을 줄여야 한다.
상기 제1 명령(201)에 대해, 제1 참조 타이밍(210)에서 버퍼 히트 발생 여부를 검사한다. 제1 참조 타이밍(210)에서 버퍼 히트가 발생한 경우, 제어부(이를 테면, 도 1의 CPU(110)일 수 있음)는 버퍼 리스트(도시되지 않음)를 업데이트 한다.
한편, 상기 버퍼 리스트는 상기 버퍼 메모리(203)에 저장된 데이터의 정보를 포함하는 리스트이다. 본 발명의 일 실시예에 따르면, 상기 버퍼 리스트는 상기 버퍼 메모리(203)에 저장된 데이터의 식별 정보 또는 인덱스(index)를 리스트(List)로 저장한다.
상기 버퍼 리스트는, 가장 최근에 호스트에 의해 접근된("접근된"과 같은 의미로 이하에서는 "참조된"이라고도 함) 순서대로, 버퍼 메모리(203)에 저장된 데이터의 식별 정보(이를 테면, 플래시 메모리의 페이지 주소)를 저장한다.
본 발명의 일 실시예에 따르면, 제1 참조 타이밍(210)에서 명령어 큐(202)에 인큐 되는 제1 명령(201)에 대응하는 데이터의 식별 정보가 상기 버퍼 리스트 내에 존재하는 경우, 제어부는 제1 참조 타이밍에서 제1 명령(201)에 대해 버퍼 히트가 발생했다고 판단한다.
이 경우 상기 제어부는 상기 버퍼 리스트의 정렬 순서를 변경하여, 상기 제1 명령(201)에 대응하는 데이터의 식별 정보가 가장 최근에 사용된 데이터의 식별 정보 위치에 있도록 상기 리스트를 재정렬(rearrangement) 한다.
한편 본 발명의 일 실시예에 따르면, 상기 제어부는 상기 제1 참조 타이밍(210)에서, 제1 명령(201)에 대해 버퍼 히트가 발생하는 경우, 상기 버퍼 메모리(203) 내에서 상기 제1 명령(201)에 대응하는 데이터가 저장된 주소를 제1 변수로서 저장한다.
만약 상기 제1 참조 타이밍(210)에서 상기 제1 명령(201)에 대해 버퍼 히트가 발생되지 않았다면, 상기 제어부는 상기 제1 변수의 값을 null 값으로 한다. 상기 null 값은 버퍼 메모리(203) 내에 상기 제1 명령(201)에 대응하는 데이터가 저장되지 않았음을 나타내는 값으로서, 설정에 따라 달라진다.
이를테면, 버퍼 메모리의 주소가 될 수 없는 -1을 null 값으로 지정하는 것이 가능하다. 이 경우, 상기 제1 참조 타이밍(210)에서 상기 제1 명령(201)에 대해 버퍼 히트가 발생되지 않았다면, 제어부는 상기 제1 명령(201)에 대응하는 제1 변수의 값을 -1로 저장할 수 있다.
본 발명의 일 실시예에 따르면, 제어부는 상기 제1 명령(201)이 상기 명령어 큐(202)로부터 디큐되어 처리되는 단계인, 제2 참조 타이밍(220)에서, 다시 한 번 상기 제1 명령(201)의 버퍼 히트 여부를 판단한다.
제어부는 상기 버퍼 리스트를 참고하여, 제1 명령(201)이 버퍼(203)에 저장되어 있는지 여부를 판단한다. 상기 버퍼 리스트에 상기 제1 명령(201)에 대응하는 데이터의 식별 정보가 존재한다면, 제2 참조 타이밍(220)에서 버퍼 히트가 발생한 것이다.
이 경우, 제어부는 상기 버퍼 리스트의 정렬 순서를 변경하여, 상기 제1 명령(201)에 대응하는 데이터의 식별 정보가 가장 최근에 사용된 데이터의 식별 정보 위치에 있도록 상기 리스트를 재정렬 한다.
상기 제2 참조 타이밍(220)에서 상기 버퍼 리스트에 상기 제1 명령(201)에 대응하는 데이터의 식별 정보가 존재하지 않는다면, 제2 참조 타이밍(220)에서 버퍼 히트가 발생하지 않은 것이다.
본 발명의 일 실시예에 따르면, 상기 제1 명령(201)이 명령어 큐(202)로부터 디큐되어 처리되는 단계에서, 상기 제어부는 상기 제1 명령(201)에 대응하는 제1 변수 값을 참조한다. 상기 제1 명령(201)에 대응하는 제1 변수 값이 null 값이 아닌 경우, 상기 제1 참조 타이밍(210)에서 버퍼 히트가 발생한 것이다. 이 경우, 상기 제1 명령(201)에 대응하는 제1 변수 값은 상기 제1 명령(201)에 대응하는 데이터가 저장된 버퍼 메모리(203) 내의 주소이다.
따라서 제어부는 상기 제1 명령(201)에 대응하는 데이터를 상기 버퍼 메모리(203)의 상기 주소로부터 독출할 수 있다. 이러한 방식에 의해 상기 제1 명령(201)에 대응하는 데이터의 독출 속도가 향상된다.
제1 참조 타이밍(210) 및 제2 참조 타이밍(220)에서 상기 제어부가 상기 버퍼 리스트를 업데이트 하는 과정은, 도 3을 참조하여 보다 상세히 후술한다.
도 3은 본 발명의 일 실시예에 따른 메모리 장치에서, 버퍼 리스트가 업데이트 되는 과정을 도시한다.
"Stage"라고 표시된 것은, 설명의 편의를 위해 시간적 흐름에 따른 순서를 나타내도록 표시된 것이며, 메모리 장치의 클록(Clock) 또는 하나의 동작 싸이클에 대응한다.
"Demanded Page"라고 표시된 것은, 도 1의 저장 매체(142 또는 152 등) 내에서, 호스트가 접근하고자 하는 데이터가 저장된 페이지 주소일 수 있다.
명령어 큐(Command Queue)(310)은, 소정의 개수의 명령을 저장할 수 있는 저장 공간이다. 상기 명령어 큐는 도 1의 버퍼 메모리(130)의 일부를 점유할 수 있으며, 별도의 저장 공간(이를테면, 휘발성 램인 DRAM 또는 SRAM 등)에 존재할 수도 있다.
도 3에서는, 설명의 편의를 위해 상기 명령어 큐(310)는 단지 하나의 명령만을 저장할 수 있는 것으로 한다. 그러나, 이는 설명의 편의를 위한 것일 뿐이며, 본 발명의 범위를 제한하도록 의도되지 않는다. 그리고 본 기술 분야에서 통상의 지식을 가진 자라면, 상기 명령어 큐(310)의 구조는 다양하게 변경될 수 있음을 이해할 수 있다.
그리고, 버퍼 리스트(320)는, 도 2의 버퍼 메모리(203)에 저장되어 있는 데이터의 식별 정보를 리스트로서 보유한다. 도 3에서는, 설명의 편의를 위해 상기 버퍼 리스트(320)가 세 개의 인덱스만을 포함하는 것으로 서술하지만, 본 발명이 이에 제한되지 않음은 명확하다.
Stage 1에서는, 명령 큐(310) 및 버퍼 리스트(320)가 비어 있다(empty). 그리고, 제어부는 호스트로부터, 페이지 0에 대한 접근 명령을 수신한다. 상기 페이지 0에 대한 접근 명령을 수신하면, 상기 제어부는, 상기 페이지 0에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 0에 대한 식별 정보가 존재하지 않는다. 따라서, 버퍼 리스트(320)는 업데이트 되지 않는다.
이 경우, 도 2를 참조하여 상술한 실시예에서는, 제어부가 상기 페이지 0에 대한 명령에 대응하는 제1 변수 값을 null 값(이를 테면 -1)으로 저장할 수 있다.
Stage 2에서, 상기 페이지 0에 대한 명령이 명령어 큐(310)에 인큐 된다. 그리고, 새로운 명령인 페이지 1에 대한 명령이 수신된다. 이 경우, 상기 제어부 는 상기 페이지 1에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 1에 대한 식별 정보가 존재하지 않는다. 따라서, 버퍼 리스트(320)은 업데이트 되지 않는다.
마찬가지로, 본 발명의 일부 실시예에서는, 제어부가 상기 페이지 1에 대한 명령에 대응하는 제1 변수 값을 null 값으로 저장할 수 있다.
Stage 3에서, 상기 페이지 0에 대한 명령은 상기 명령어 큐(310)로부터 디큐 되며, 제어부는 상기 페이지 0에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 0에 대한 식별 정보가 존재하지 않으므로, 버퍼 히트가 발생되지 않은 경우이다.
그러면, 제어부는 페이지 0에 대응하는 데이터를 저장 장치로부터 독출하여, 버퍼 메모리(203)에 저장하고, 상기 버퍼 리스트(320)에서 페이지 0이 가장 최근에 참조된 것으로 리스트를 업데이트 한다.
상기 페이지 1에 대한 명령이 명령어 큐(310)에 인큐 된다. 그리고, 새로운 명령인 페이지 2에 대한 명령이 수신된다. 이 경우, 상기 제어부는 상기 페이지 2에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 2에 대한 식별 정보가 존재하지 않는다. 따라서 상기 버퍼 리스트(320)을 업데이트 할 필요가 없다.
한편, 제어부는 상기 페이지 2에 대한 명령에 대응하는 제1 변수 값을 null 값으로 저장할 수 있다.
Stage 4에서, 상기 페이지 1에 대한 명령은 상기 명령어 큐(310)로부터 디 큐 되며, 제어부는 상기 페이지 1에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 1에 대한 식별 정보가 존재하지 않으므로, 버퍼 히트가 발생되지 않은 경우이다.
그러면, 제어부는 페이지 1에 대응하는 데이터를 저장 장치로부터 독출하여, 버퍼 메모리(203)에 저장하고, 상기 버퍼 리스트(320)에서 페이지 1이 가장 최근에 참조된 것으로 리스트를 업데이트 한다. 이제 버퍼 리스트(320)는 [1, 0]의 순서이다.
상기 페이지 2에 대한 명령은 명령어 큐(310)에 인큐 된다. 그리고, 새로운 명령인 페이지 0에 대한 명령이 수신된다. 이 경우, 상기 제어부는 상기 페이지 0에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 0에 대한 식별 정보가 존재한다. 따라서, 상기 제어부는 상기 버퍼 리스트(320)를 업데이트 해서, 가장 최근에 사용된 페이지를 페이지 0으로 수정하여 리스트를 재배열 한다. 이제 버퍼 리스트(320)는 [0, 1]의 순서이다.
한편, 제어부는 상기 페이지 0에 대응하는 데이터가 저장된 버퍼 메모리 주소를 상기 페이지 0에 대한 명령에 대응하는 제1 변수 값으로 저장할 수 있다.
Stage 5에서, 상기 페이지 2에 대한 명령은 상기 명령어 큐(310)로부터 디큐 되며, 제어부는 상기 페이지 2에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 2에 대한 식별 정보가 존재하지 않으므로, 버퍼 히트가 발생되지 않은 경우이다.
그러면, 제어부는 페이지 2에 대응하는 데이터를 저장 장치로부터 독출하여, 버퍼 메모리(203)에 저장하고, 상기 버퍼 리스트(320)에서 페이지 2가 가장 최근에 참조된 것으로 리스트를 업데이트 한다. 이제 버퍼 리스트(320)는 [2, 0, 1]의 순서이다.
상기 페이지 0에 대한 명령은 명령어 큐(310)에 인큐 된다. 그리고, 새로운 명령인 페이지 3에 대한 명령이 수신된다. 이 경우, 상기 제어부는 상기 페이지 3에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 3에 대한 식별 정보가 존재하지 않는다. 따라서, 상기 버퍼 리스트(320)를 업데이트 할 필요가 없다. 그러므로 버퍼 리스트(320)는 여전히 [2, 0, 1]의 순서이다.
한편, 제어부는 상기 페이지 3에 대한 명령에 대응하는 제1 변수 값으로 null 값을 저장할 수 있다.
Stage 6에서, 상기 페이지 0에 대한 명령은 상기 명령어 큐(310)로부터 디큐 되며, 제어부는 상기 페이지 0에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 0에 대한 식별 정보가 존재하므로, 버퍼 히트가 발생되는 경우이다.
그러면, 제어부는 페이지 0에 대응하는 데이터를 저장 장치로부터 독출할 필요가 없다. 상기 제어부는 페이지 0에 대한 명령에 대응하는 제1 변수 값을 참조하여, 버퍼 메모리(203)에 저장된 페이지 0의 데이터를 독출한다. 그리고, 제어부는 상기 버퍼 리스트(320)에서 페이지 0이 가장 최근에 참조된 것으로 리스트를 업 데이트 한다. 이제 버퍼 리스트(320)는 [0, 2, 1]의 순서이다.
상기 페이지 3에 대한 명령은 명령어 큐(310)에 인큐 된다. 그리고, 새로운 명령인 페이지 1에 대한 명령이 수신된다. 이 경우, 상기 제어부는 상기 페이지 1에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 1에 대한 식별 정보가 존재한다. 따라서, 상기 제어부는 상기 버퍼 리스트(320)를 업데이트 해서, 가장 최근에 사용된 페이지를 페이지 1으로 수정하여 리스트를 재배열 한다. 이제 버퍼 리스트(320)는 [1, 0, 2]의 순서이다.
한편, 제어부는 상기 페이지 1에 대응하는 데이터가 저장된 버퍼 메모리 주소를 상기 페이지 1에 대한 명령에 대응하는 제1 변수 값으로 저장할 수 있다.
Stage 7에서, 상기 페이지 3에 대한 명령은 상기 명령어 큐(310)로부터 디큐 되며, 제어부는 상기 페이지 3에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 0에 대한 식별 정보가 존재하지 않으므로, 버퍼 히트가 발생되지 않는 경우이다.
그러면, 제어부는 페이지 3에 대응하는 데이터를 저장 장치로부터 독출하여, 버퍼 메모리(203)에 저장하게 된다. 그런데, 버퍼(203)가 가득 찬(full) 경우이므로, 상기 제어부는 버퍼 리스트를 참조하여, 가장 오래 전에 사용된 페이지인 페이지 2에 대응하는 데이터를 상기 버퍼 메모리(203)에서 삭제한다. 그리고, 상기 페이지 3에 대응하는 데이터를 저장 장치로부터 독출하여 버퍼 메모리(203)에 저장한다. 또한, 제어부는 상기 버퍼 리스트(320)에서 페이지 3이 가장 최근에 참조된 것으로 리스트를 업데이트 한다. 이제 버퍼 리스트(320)는 [3, 1, 0]의 순서이다.
상기 페이지 1에 대한 명령은 명령어 큐(310)에 인큐 된다. 그리고, 새로운 명령인 페이지 4에 대한 명령이 수신된다. 이 경우, 상기 제어부는 상기 페이지 4에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 4에 대한 식별 정보가 존재하지 않는다. 따라서, 상기 버퍼 리스트(320)는 업데이트 되지 않는다. 여전히 버퍼 리스트(320)는 [3, 1, 0]의 순서이다.
한편, 제어부는 상기 페이지 4에 대한 명령에 대응하는 제1 변수 값으로 null 값을 저장할 수 있다.
Stage 8에서, 상기 페이지 1에 대한 명령은 상기 명령어 큐(310)로부터 디큐 되며, 제어부는 상기 페이지 1에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 1에 대한 식별 정보가 존재하므로, 버퍼 히트가 발생되는 경우이다.
그러면, 제어부는 페이지 1에 대응하는 데이터를 저장 장치로부터 독출할 필요가 없다. 상기 제어부는 페이지 1에 대한 명령에 대응하는 제1 변수 값을 참조하여, 버퍼 메모리(203)에 저장된 페이지 1의 데이터를 독출한다. 그리고, 제어부는 상기 버퍼 리스트(320)에서 페이지 1이 가장 최근에 참조된 것으로 리스트를 업데이트 한다. 이제 버퍼 리스트(320)는 [1, 3, 0]의 순서이다.
상기 페이지 4에 대한 명령은 명령어 큐(310)에 인큐 된다. Stage 8에서는 새로운 명령이 수신되지 않는다.
Stage 9에서, 상기 페이지 4에 대한 명령은 상기 명령어 큐(310)로부터 디큐 되며, 제어부는 상기 페이지 4에 대한 명령에 대응하는 데이터의 식별 정보가 버퍼 리스트(320)에 존재하는지 체크한다. 현재 버퍼 리스트(320)에는 페이지 4에 대한 식별 정보가 존재하지 않으므로, 버퍼 히트가 발생되지 않는 경우이다.
그러면, 제어부는 페이지 4에 대응하는 데이터를 저장 장치로부터 독출하여, 버퍼 메모리(203)에 저장하게 된다. 그런데, 버퍼(203)가 가득 찬(full) 경우이므로, 상기 제어부는 버퍼 리스트를 참조하여, 가장 오래 전에 사용된 페이지인 페이지 0에 대응하는 데이터를 상기 버퍼 메모리(203)에서 삭제한다. 그리고, 상기 페이지 4에 대응하는 데이터를 저장 장치로부터 독출하여 버퍼 메모리(203)에 저장한다.
또한, 제어부는 상기 버퍼 리스트(320)에서 페이지 4가 가장 최근에 참조된 것으로 리스트를 업데이트 한다. 이제 버퍼 리스트(320)는 [4, 1, 3]의 순서이다.
도 4는 본 발명의 일 실시예에 따라, 새로운 명령이 입력되는 경우, 메모리 관리 방법을 도시하는 흐름도이다.
단계(S410)에서 새로운 명령이 입력 된다.
그러면, 단계(S420)에서, 제어부는 새로운 명령에 연관되는 페이지가 버퍼 메모리(203)에 존재하는 지 판단한다.
상기 새로운 명령에 연관된 페이지가 버퍼 메모리(203)에 존재하지 않는 경우, 단계(S430)에서 제어부는 상기 새로운 명령에 대응하는 제1 변수(bufAddr)의 값을 null 값이 -1로 저장한다.
그리고 단계(S440)에서 제어부는 상기 새로운 명령을 명령어 큐에 인큐한다.
한편, 상기 새로운 명령에 연관된 페이지가 버퍼 메모리(203)에 존재하는 경우, 단계(S450)에서, 제어부는 상기 새로운 명령에 연관된 페이지가 저장된 버퍼 메모리 주소 값을 상기 제1 변수의 값으로 저장한다.
그리고 단계(S460)에서 제어부는 버퍼 리스트를 업데이트 해서, 상기 새로운 명령에 대응하는 데이터가 가장 최근에 사용된 것으로 리스트를 재정렬 한다. 그러면, 단계(S440)에서 상기 새로운 명령을 명령어 큐에 인큐한다.
상기 단계(S410) 내지 단계(S460)에 대한 상세한 내용은, 도 3을 참조하여 상술한 바와 같다.
도 5는 본 발명의 일 실시예에 따른, 메모리 관리 방법을 도시하는 흐름도이다.
단계(S510)에서 명령어 큐로부터 제1 명령이 디큐된다.
단계(S520)에서, 제어부는 상기 제1 변수의 값이 null 값인지의 여부를 판단한다. 도 4를 참조하여 상술한 바와 같이, 제1 변수의 값이 -1이라면, 제어부는 상기 제1 변수의 값이 null 값이라고 판단한다. 이 경우는, 상기 제1 명령에 대응하는 데이터가 버퍼 메모리(203)에 존재하지 않는 경우이다.
상기 제1 변수의 값이 0보다 작은 경우, 단계(S550)에서, 제어부는 제1 명령에 연관된 데이터를 저장장치로부터 독출하여, 버퍼 메모리에 저장한다. 즉, 버퍼 데이터를 업데이트 한다.
한편, 상기 제1 변수의 값이 0 이상인 경우, 단계(S530)에서, 제어부는 상기 제1 변수를 참조하여, 버퍼 메모리(203)로부터 상기 제1 명령에 대응하는 데이터를 독출한다.
그리고 단계(S540)에서, 제어부는 버퍼 리스트를 업데이트 하여, 상기 제1 명령에 대응하는 데이터가 가장 최근에 사용된 것으로 리스트를 재배열 한다.
단계(S510) 내지 단계(S550)에 대한 상세한 내용은, 도 3을 참조하여 상술한 바와 같다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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. 호스트로부터 제1 명령을 수신하여 저장하고, 상기 제1 명령을 독출하여 제어부로 전송하는 명령 큐;
    데이터의 데이터 리스트를 저장하는 버퍼 메모리; 및
    상기 명령 큐로부터 전송된 제1 명령에 대응하는 데이터를 저장 장치로부터 독출하여 버퍼 메모리에 저장하고, 상기 버퍼 메모리에 저장된 데이터의 상기 데이터 리스트를 업데이트하고, 상기 버퍼 메모리에 저장된 상기 데이터 리스트에 상기 제1 명령의 식별 정보가 저장되어 있는지 여부 판단에 의해 상기 제1 명령에 대한 버퍼 히트 발생 여부를 판단하는 제어부
    를 포함하고,
    상기 제어부는, 상기 제1 명령이 상기 명령 큐로부터 디큐되는 경우, 상기 버퍼 메모리에 저장된 상기 데이터 리스트에 상기 제1 명령의 상기 식별 정보가 저장되어 있는지 여부 판단에 의해 상기 제1 명령에 대한 버퍼 히트 발생 여부를 다시 판단하는 것을 특징으로 하는 메모리 장치.
  2. 제1항에 있어서,
    상기 데이터 리스트는, 상기 버퍼 메모리에 저장된 데이터의 정보를 저장하고, 상기 데이터는 최근에 사용된 순서에 따라 정렬되는 것을 특징으로 하는 메모리 장치.
  3. 제2항에 있어서,
    상기 명령 큐가 호스트로부터 수신한 상기 제1 명령에 대응하는 데이터가 상기 데이터 리스트에 이미 존재하는 경우, 상기 제어부는 상기 제1 명령에 대응하는 데이터를 상기 저장 장치로부터 독출하지 않고, 상기 제어부는 상기 제1 명령에 대응하는 데이터의 정보가 가장 최근에 사용된 데이터로 설정되도록, 상기 데이터 리스트의 배열을 변경하기 위하여 상기 버퍼 리스트를 업데이트하는 것을 특징으로 하는 메모리 장치.
  4. 제2항에 있어서,
    상기 제어부는, 상기 제1 명령에 대응하는 데이터가 상기 데이터 리스트에 이미 존재하는 경우, 상기 버퍼 메모리 내의 상기 제1 명령에 대응하는 데이터의 주소를 제1 변수로 저장하는 것을 특징으로 하는 메모리 장치.
  5. 제4항에 있어서,
    상기 제어부는, 상기 제1 명령에 대응하는 데이터가 상기 데이터 리스트에 존재하지 않는 경우, 상기 제1 변수의 값을 null 값으로 저장하는 것을 특징으로 하는 메모리 장치.
  6. 제4항에 있어서,
    상기 제1 명령이 상기 명령 큐로부터 독출되어 수행되는 경우, 상기 제어부는 상기 제1 변수를 참조하여 상기 버퍼 메모리로부터 상기 제1 명령에 대응하는 데이터를 독출하는 것을 특징으로 하는 메모리 장치.
  7. 제1항에 있어서,
    상기 제어부는, 상기 명령 큐가 상기 제1 명령을 독출하여 전송하는 경우 상기 버퍼 메모리에 저장된 상기 데이터 리스트를 업데이트 하는 것을 특징으로 하는 메모리 장치.
  8. 제7항에 있어서,
    상기 데이터 리스트는, 상기 버퍼 메모리에 저장된 데이터의 정보를 저장하고, 상기 데이터는 최근에 사용된 순서에 따라 정렬되는 것을 특징으로 하는 메모리 장치.
  9. 제8항에 있어서,
    상기 제어부는, 상기 명령 큐로부터 독출되는 상기 제1 명령에 대응하는 데이터가 상기 데이터 리스트에 존재하는 경우, 상기 데이터 리스트 내의 가장 최근에 사용된 데이터의 정보가 상기 제1 명령에 대응하는 데이터의 정보가 되도록, 상기 리스트의 배열을 변경하기 위하여 상기 데이터 리스트를 업데이트하는 것을 특징으로 하는 메모리 장치.
  10. 호스트로부터 제1 명령을 수신하는 단계;
    저장 장치의 버퍼 메모리에 저장된 데이터 리스트에 상기 제1 명령의 식별 정보가 저장되어 있는지 여부 판단에 의해 상기 호스트로부터 수신한 상기 제1 명령에 대한 버퍼 히트 발생 여부를 판단하는 단계;
    상기 저장 장치의 명령 큐에 상기 제1 명령을 저장하는 단계;
    상기 버퍼 메모리에 저장된 상기 데이터 리스트에 상기 제1 명령에 대응하는 상기 식별 정보가 존재하는 경우, 상기 버퍼 메모리에 저장된 상기 데이터 리스트를 업데이트 하는 단계; 및
    상기 제1 명령이 상기 명령 큐로부터 디큐되는 경우, 상기 버퍼 메모리에 저장된 상기 데이터 리스트에 상기 제1 명령의 상기 식별 정보가 저장되어 있는지 여부 판단에 의해 상기 제1 명령에 대한 버퍼 히트 발생 여부를 다시 판단하는 단계
    를 포함하는 메모리 관리 방법.
  11. 제10항에 있어서,
    상기 데이터 리스트는, 상기 버퍼 메모리에 저장된 데이터의 정보를 저장하고, 상기 데이터는 최근에 사용된 순서에 따라 정렬되는 것을 특징으로 하는 메모리 관리 방법.
  12. 제11항에 있어서,
    상기 버퍼 메모리에 저장된 상기 데이터 리스트를 업데이트 하는 단계는,
    상기 데이터 리스트 내의 가장 최근에 사용된 데이터의 정보에 상기 제1 명령에 대응하는 데이터의 정보가 위치하도록, 상기 데이터 리스트의 배열을 변경하는 것을 특징으로 하는 메모리 관리 방법.
  13. 제10항에 있어서,
    상기 제1 명령에 대응하는 데이터가 상기 데이터 리스트에 저장되어 있는 경우, 상기 제1 명령에 대응하는 데이터의 주소를 제1 변수로 저장하는 단계를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  14. 제13항에 있어서,
    상기 제1 명령이 상기 명령 큐로부터 독출되어 수행되는 경우, 상기 제1 변수를 참조하여 상기 버퍼 메모리로부터 상기 제1 명령에 대응하는 데이터를 독출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  15. 제10항에 있어서,
    상기 제1 명령에 대응하는 데이터가 상기 데이터 리스트에 존재하지 않는 경우, 상기 제1 변수의 값을 null 값으로 저장하는 단계를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  16. 제15항에 있어서,
    상기 제1 명령이 상기 명령 큐로부터 독출되어 수행되는 경우, 상기 제1 명령에 대응하는 데이터를 상기 저장 장치로부터 독출하여 상기 버퍼 메모리에 저장하는 단계를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  17. 제10항 내지 제16항 중 어느 한 항의 메모리 관리 방법을 수행하기 위한 프로그램을 수록하는 컴퓨터 판독 가능 기록 매체.
KR1020080123217A 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 관리 방법 KR101505005B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080123217A KR101505005B1 (ko) 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 관리 방법
US12/470,574 US8281042B2 (en) 2008-12-05 2009-05-22 Memory device and management method of memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080123217A KR101505005B1 (ko) 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 관리 방법

Publications (2)

Publication Number Publication Date
KR20100064673A KR20100064673A (ko) 2010-06-15
KR101505005B1 true KR101505005B1 (ko) 2015-03-24

Family

ID=42232332

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080123217A KR101505005B1 (ko) 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 관리 방법

Country Status (2)

Country Link
US (1) US8281042B2 (ko)
KR (1) KR101505005B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9237185B2 (en) * 2010-06-01 2016-01-12 Kabushiki Kaisha Toshiba File transfer apparatus and control method thereof
KR101144321B1 (ko) * 2010-10-04 2012-05-11 주식회사 알티베이스 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치
US8924627B2 (en) 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
KR101919903B1 (ko) 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
KR101996266B1 (ko) 2014-09-18 2019-10-01 삼성전자주식회사 호스트 및 이를 포함하는 컴퓨터 시스템
KR102178538B1 (ko) 2014-12-16 2020-11-13 삼성전자주식회사 메모리 장치, 메모리 장치의 커맨드 신호/어드레스 신호의 로그 생성 방법 및 메모리 장치의 에러 분석 방법
KR102317787B1 (ko) * 2015-02-11 2021-10-26 삼성전자주식회사 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스
KR102364381B1 (ko) 2015-03-06 2022-02-18 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US9940052B2 (en) 2016-09-14 2018-04-10 Micron Technology, Inc. Memory device configuration commands
JP7074705B2 (ja) * 2019-03-20 2022-05-24 キオクシア株式会社 メモリ装置及びメモリ装置の制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453404B1 (en) * 1999-05-27 2002-09-17 Microsoft Corporation Distributed data cache with memory allocation model
US20070067562A1 (en) * 2005-09-22 2007-03-22 Fujitsu Limited Disk control device, disk control method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619690A (en) * 1993-06-21 1997-04-08 Hitachi, Ltd. Computer system including a computer which requests an access to a logical address in a secondary storage system with specification of a local address in the secondary storage system
JP2001005725A (ja) 1999-06-21 2001-01-12 Hitachi Ltd キャッシュ記憶装置
JP4834362B2 (ja) * 2005-09-16 2011-12-14 パナソニック株式会社 メモリ制御装置。
US7039766B1 (en) * 2000-10-12 2006-05-02 International Business Machines Corporation Prescheduling sequential data prefetches in a preexisting LRU cache
US6851010B1 (en) * 2001-06-29 2005-02-01 Koninklijke Philips Electronics N.V. Cache management instructions
KR20040076313A (ko) 2003-02-25 2004-09-01 이승룡 버퍼 캐시 분할 관리 방법
JP4561168B2 (ja) * 2004-04-28 2010-10-13 株式会社日立製作所 データ処理システムおよび方法並びにその処理プログラム
US7313654B2 (en) * 2004-10-27 2007-12-25 Xiv Ltd Method for differential discarding of cached data in distributed storage systems
GB0507160D0 (en) * 2005-04-08 2005-05-18 Ibm Data storage system with shared cache address space
KR100851298B1 (ko) 2005-12-28 2008-08-08 엠텍비젼 주식회사 캐시 메모리 컨트롤러 및 이를 이용한 캐시 메모리 관리방법
KR100847021B1 (ko) 2006-10-26 2008-07-17 한국과학기술원 데이터 저장 장치, 데이터 저장 방법 및 그 방법이 기록된컴퓨터로 읽을 수 있는 기록매체
US20080120471A1 (en) * 2006-11-06 2008-05-22 On Demand Microelectronics Method and apparatus for least-recently-used replacement of a block frame in an electronic memory device
US8086793B2 (en) * 2007-02-16 2011-12-27 Mediatek Inc. Optical disc recorder and buffer management method thereof
US20090157982A1 (en) * 2007-12-18 2009-06-18 Macinnis Alexander G Multiple miss cache

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453404B1 (en) * 1999-05-27 2002-09-17 Microsoft Corporation Distributed data cache with memory allocation model
US20070067562A1 (en) * 2005-09-22 2007-03-22 Fujitsu Limited Disk control device, disk control method

Also Published As

Publication number Publication date
US8281042B2 (en) 2012-10-02
KR20100064673A (ko) 2010-06-15
US20100146163A1 (en) 2010-06-10

Similar Documents

Publication Publication Date Title
KR101505005B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
KR101581679B1 (ko) 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US9852061B2 (en) Memory device and operating method of memory device
US8411496B2 (en) Systems and methods for scheduling a memory command for execution based on a history of previously executed memory commands
US9239780B2 (en) Selection of memory blocks for garbage collection based on variable block life threshold
KR101541344B1 (ko) 메모리 장치 및 메모리 장치의 제어 방법
US8341374B2 (en) Solid state drive and related method of scheduling operations
US8321624B2 (en) Memory device and management method of memory device
US20120159016A1 (en) Memory system and data transfer method
US20130254454A1 (en) Memory system and bank interleaving method
US20120159050A1 (en) Memory system and data transfer method
US10649896B2 (en) Storage device and data processing system including the same
US10528264B2 (en) Storage device and data processing system including the same
KR20140050941A (ko) 비휘발성 메모리 장치의 데이터 관리 방법
KR102079939B1 (ko) 데이터 저장 장치 및 그것의 명령어 스케줄링 방법
US20150058383A1 (en) Systems and methods for operating a flash memory file system
US20150205540A1 (en) Memory system including nonvolatile memory devices and operating method
KR20140032789A (ko) 불휘발성 메모리 장치의 컨트롤러 및 그것의 커멘드 스케줄링 방법
US9575883B2 (en) Control device, storage device, and storage control method
US9460005B2 (en) Storage devices including memory device and methods of operating the same
US20100115529A1 (en) Memory management apparatus and method
CN109935252B (zh) 存储器装置及其操作方法
US9703485B2 (en) Storage management in hybrid drives
US11853611B2 (en) Network interface card implementing composite zoned namespace architecture
US9497504B2 (en) Method for enhancing fast backward performance and associated electronic device

Legal Events

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

Payment date: 20180220

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190221

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 6