KR101541344B1 - 메모리 장치 및 메모리 장치의 제어 방법 - Google Patents

메모리 장치 및 메모리 장치의 제어 방법 Download PDF

Info

Publication number
KR101541344B1
KR101541344B1 KR1020080123060A KR20080123060A KR101541344B1 KR 101541344 B1 KR101541344 B1 KR 101541344B1 KR 1020080123060 A KR1020080123060 A KR 1020080123060A KR 20080123060 A KR20080123060 A KR 20080123060A KR 101541344 B1 KR101541344 B1 KR 101541344B1
Authority
KR
South Korea
Prior art keywords
instruction
command
queue
flash memory
controller
Prior art date
Application number
KR1020080123060A
Other languages
English (en)
Other versions
KR20100064562A (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 KR1020080123060A priority Critical patent/KR101541344B1/ko
Priority to US12/470,552 priority patent/US8356135B2/en
Publication of KR20100064562A publication Critical patent/KR20100064562A/ko
Application granted granted Critical
Publication of KR101541344B1 publication Critical patent/KR101541344B1/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
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 장치가 제공된다. 상기 메모리 장치의 제1 제어부는 호스트로부터 제1 명령을 수신하여 제1 명령 큐에 저장하고, 상기 제1 명령 큐에 저장된 제1 명령과 연관되는 제2 제어부에 상기 제1 명령을 송신한다. 제2 제어부는 상기 제2 명령 큐에 저장된 제1 명령을 플래시 메모리로 송신한다.
Figure R1020080123060
플래시 메모리, SSD, Flash memory, Command Queue

Description

메모리 장치 및 메모리 장치의 제어 방법{MEMORY DEVICE AND CONTROLL METHOD OF MEMORY DEVICE}
본 발명은 메모리 장치 및 메모리 장치의 제어 방법에 관한 것으로서, 특히 비휘발성 메모리(non-volatile memory)에 기반한 메모리 장치 및 메모리 장치의 제어 방법에 관한 것이다.
SSD(Solid State Disk)는 기존 HDD(하드 디스크) 보다 가볍고, 작으며, 안정적이기 때문에, HDD를 대체할 저장 장치(Storage Device)로서 주목 받고 있다. HDD를 대체하기 위해서, SSD는 PATA(Parallel ATA) 또는 SATA(Serial ATA) 등의 통신 규격(또는 호스트 인터페이스)와의 호환성을 제공한다.
한편, SATA 등의 통신 규격은 명령 큐(Command Queue)를 사용하여 성능을 높인다. 상기 명령어 큐는 소정의 개수의 명령을 저장할 수 있다(명령 큐에 명령이 저장되는 과정을 inqueue라고도 함). 그리고, 상기 명령 큐는 기 저장되어 있던 명령을 독출할 수 있다(dequeue라고도 함).
명령 큐에 저장된 명령을 디큐(dequeue)하는 순서를 정하는 방법은, 이를테면 선입선출(First-In First-Out: FIFO)과 같은 것이 있다. 기존의 HDD의 명령 큐 에서는, 디스크 헤드(Head)의 동선을 고려하여 디스크 헤드의 움직임을 최소화 할 수 있는 순서로 저장된 명령을 디큐하는 방법이 이용되었다. 그러나, SSD는 디스크 헤드가 필요하지 않으므로, 이와는 다른 방법이 요구된다.
따라서 SSD에서 명령 큐를 사용하여 성능을 향상시키기 위해서, 명령을 병렬 처리하는 방법이 요구된다. 한편 명령 큐에서 명령이 디큐되면 상기 디큐된 명령이 처리되는 동안 바쁜 대기(Busy Waiting)가 발생되는데, 상기 병렬 처리를 위해서는 상기 바쁜 대기를 줄여야 한다.
본 발명의 일부 실시예는, 수신되는 명령을 병렬적으로 처리하여, 처리 속도를 향상시키는 메모리 장치 및 메모리 장치의 제어 방법을 제공하기 위한 것이다.
본 발명의 다른 일부 실시예는, 명령어 처리의 병목 현상을 줄여서 자원 활용도를 높인 메모리 장치 및 메모리 장치의 제어 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따르면, 호스트로부터 제1 명령을 수신하여 제1 명령 큐에 저장하고, 상기 제1 명령 큐에 저장된 제1 명령과 연관되는 제2 제어부에 상기 제1 명령을 송신하는 제1 제어부, 및 상기 제1 제어부로부터 수신된 상기 제1 명령을 제2 명령 큐에 저장하고, 상기 제2 명령 큐에 저장된 제1 명령을 플래시 메모리로 송신하는 제2 제어부를 포함하는 것을 특징으로 하는 메모리 장치가 제공된다.
상기 제1 제어부는 상기 호스트와의 통신을 위한 호스트 인터페이스 계층을 포함할 수 있다. 그리고, 상기 제2 제어부는, 상기 제1 명령에 대응하는 논리적 페이지 주소와 물리적 페이지 주소 사이의 매핑 정보를 저장하는 플래시 변환 계층(FTL), 및 상기 제2 제어부와 상기 플래시 메모리 사이의 통신을 위한 플래시 인터페이스 계층(FIL)을 포함할 수 있다.
본 발명의 일 실시예에 따르면, 상기 제2 명령 큐가 비어있지 않은 경우 상기 제2 제어부가 상기 제2 명령 큐에 저장된 명령을 상기 플래시 메모리로 전송하 도록 설정되고, 상기 제2 명령 큐가 비어 있는 경우 상기 1 제어부가 상기 제1 명령 큐에 저장된 명령을 상기 제2 제어부로 전송하도록 설정된다.
본 발명의 다른 일 실시예에 따르면, 호스트로부터 수신되는 명령을 제1 명령 큐에 저장하는 제1 제어부, 상기 제1 제어부로부터 수신되는 명령을 제2 명령 큐에 저장하고 상기 제2 명령 큐로부터 독출되는 명령을 플래시 메모리로 전송하는 복수 개의 제2 제어부를 포함하는 메모리 장치가 제공된다. 본 실시예에서 상기 제1 제어부는 상기 제1 명령 큐로부터 제1 명령을 독출하고, 상기 복수 개의 제2 제어부 중 상기 제1 명령에 연관되는 제2 제어부를 탐색하고, 상기 제1 명령을 상기 제1 명령에 연관되는 제2 제어부로 전송한다.
한편, 상기 복수 개의 제2 제어부의 제2 명령 큐 중 적어도 하나의 제2 명령 큐에 상기 플래시 메모리로 전송되지 않은 명령이 존재하는 경우, 상기 플래시 메모리로 전송되지 않은 명령이 상기 플래시 메모리로 전송된 후에 상기 제1 제어부가 상기 제1 명령 큐에 저장된 명령을 독출하여 상기 제2 제어부로 전송한다.
본 발명의 일 실시예에 따르면, 상기 플래시 메모리는 복수 개의 볼륨을 포함하고, 상기 복수개의 볼륨의 각각은 상기 복수 개의 제2 제어부의 각각에 대응한다. 그리고, 상기 복수 개의 볼륨의 각각은 적어도 하나의 플래시 메모리 채널을 포함할 수 있다.
본 발명의 또 다른 일 실시예에 따르면, 호스트로부터 수신되는 명령을 제1 명령 큐에 저장하는 단계, 및 상기 제1 명령 큐에 저장된 제1 명령을 독출하여 제2 명령 큐에 저장하는 단계를 포함하는 것을 특징으로 하는 메모리 제어 방법이 제공 된다.
한편, 상기 제1 명령 큐에 저장된 제1 명령을 독출하여 제2 명령 큐에 저장하는 단계는, 상기 제1 명령 큐에 저장된 제1 명령을 독출하는 단계, 상기 제1 명령에 연관되는 제2 명령 큐를 탐색하는 단계, 및 상기 제1 명령을 상기 제2 명령 큐에 저장하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 상기 메모리 제어 방법은, 상기 제2 명령 큐로부터 상기 제1 명령을 독출하여, 플래시 메모리에 전송하는 단계를 더 포함한다.
본 발명의 일부 실시예에서는, 상기 제2 명령 큐로부터 상기 제1 명령을 독출하여, 플래시 메모리에 전송하는 단계는, 상기 제2 명령 큐로부터 상기 제1 명령을 독출하는 단계, 상기 제1 명령에 대응하는 논리적 페이지 주소를 물리적 페이지 주소로 변환하는 단계, 및 상기 제1 명령 및 상기 제1 명령의 물리적 페이지 주소 정보를 플래시 메모리로 전송하는 단계를 포함한다.
본 발명의 다른 일 실시예에 따르면, 상기 메모리 제어 방법은, 상기 제2 명령 큐가 비어 있는 경우, 상기 제1 명령 큐에 저장된 제2 명령을 독출하여 상기 제2 명령 큐에 저장하는 단계를 더 포함한다.
본 발명의 일부 실시예에 따르면, 수신되는 명령이 병렬 처리될 수 있으므로, 사용자 대기 시간이 감소된다.
본 발명의 다른 일부 실시예에 따르면, 명령어 처리의 병목 현상을 줄어 자원 활용도가 높아진다.
이하에서, 본 발명의 일 실시예에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치를 도시한다.
본 발명의 일 실시예에 따르면, 메모리 장치(100)는, 중앙 처리 장치(CPU)(110), 호스트 인터페이스(120), 버퍼(130), 및 플래시 메모리를 포함한다.
메모리 장치(100)는 이를테면, 플래시 메모리(Flash memory)를 포함하는 고체 상태 디스크 (Solid State Disk, SSD)일 수 있다. SSD는 다수의 플래시 메모리 칩들을 이용하여 대용량의 스토리지(storage)를 구현하는 장치이다.
플래시 메모리는 복수 개의 볼륨을 포함한다. 그리고 상기 볼륨의 각각은 적어도 하나 이상의 메모리 채널을 포함한다. 상기 플래시 메모리는 복수 개의 채널 각각에 대응하는 플래시 제어부(Flash Controller)(140 내지 160)을 포함한다.
플래시 제어부(140)는, 플래시 메모리 칩(141) 및 플래시 메모리 칩(142)를 제어하며, CPU(110)로부터 전송되는 명령에 대응하여, 상기 명령에 대응하는 작업을 수행하고 데이터를 제공한다.
한편, 플래시 제어부(150)는, 플래시 메모리 칩(151) 및 플래시 메모리 칩(152)를 제어하며, 플래시 제어부(160)는, 플래시 메모리 칩(161 내지 163)을 제어한다.
플래시 메모리(130)는 최근 대용량의 스토리지를 구현하는 데 널리 사용되고 있다. 이하에서 플래시 메모리를 이용하여 설명하지만, 본 발명은 특정 메모리 구조에 한정되는 것이 아니며, 플래시 메모리(130)는 데이터를 저장하기 위한 다른 종류의 비휘발성(Non volatile) 메모리일 수 있다.
상기 플래시 메모리(130)는 낸드(NAND) 플래시 메모리일 수 있고 노어 (NOR) 플래시 메모리일 수도 있다. 이하에서는 상기 플래시 메모리(130)가 낸드 플래시 메모리인 경우를 설명하지만, 이는 예시적인 것이며 본 발명은 이에 한정되지 않는다.
한편, 플래시 메모리 칩(141, 142, 151, 152, 161, 162, 및 163)은 각각 복수 개의 블록을 포함하며, 상기 복수 개의 블록의 각각은 복수 개의 페이지를 포함한다.
본 발명의 일 실시예에 따르면, CPU(110)는 호스트 인터페이스(120)를 통해 호스트(121)로부터 수신되는 명령을 제1 명령 큐(Command Queue)에 저장한다. 그리고, 플래시 메모리의 복수 개의 볼륨 중, 상기 제1 명령 큐에서 독출된 제1 명령이 연관되는 제1 볼륨을 선택한다. 그리고, 상기 제1 볼륨에 대응하는 제2 명령 큐(또는 "볼륨 큐")에 저장한다. 이러한 과정을 상위 작업(Upper Task)라 한다.
그리고, CPU(110)는 플래시 변환 계층(FTL)을 이용하여, 상기 볼륨 큐로부터 독출되는 제1 명령에 대응하는 논리 페이지 주소를 물리 페이지 주소로 변경하고, 플래시 인터페이스 계층(FIL)을 이용하여, 상기 제1 볼륨을 제어하는 플래시 제어부로 상기 제1 명령을 전송한다. 이러한 과정을 하위 작업(Lower Task)라고 한다.
본 발명의 일 실시예에 따르면, 상기 FTL는 버퍼(130)와 함께 DRAM(도시되지 않음)에 저장될 수 있다. 또한, 상기 제1 명령 큐 및 상기 제2 명령 큐 역시 상기 DRAM의 일부일 수 있다.
상기 상위 작업 및 하위 작업에 대해서는 도 3을 참조하여 후술한다.
도 2는 본 명의 일 실시예에 따른 메모리 장치의 제1 제어부 및 제2 제어부를 도시한다.
메모리 장치의 제어부(200)는 호스트(121)로부터 명령을 수신하여, 플래시 메모리(240)에 전송한다. 한편, 상기 제어부(200)는 상기 명령에 대응하는 데이터를 상기 호스트(121)에 전송할 수도 있다. 본 도면에서는, 제어부(200)의 구성이 제시 되었다. 그러나, 본 발명의 다른 일 실시예에 따르면, 상기 제어부(200)의 동작은, 도 1의 메모리 장치(100) 내에서 SSD 소프트웨어를 통해 호스트 인터페이스(120), 버퍼(130)를 제어하는 CPU(110)에 의해 수행될 수도 있다.
한편, 제어부(200)는 제1 제어부(201) 및 제2 제어부(202)를 포함한다. 상기 제1 제어부(201)는 호스트(121)로부터 명령을 수신하고, 명령에 대응하는 데이터를 호스트(121)로 송신하기 위한 호스트 인터페이스 계층(210)을 포함한다.
상기 제1 제어부의 동작은 도 3 및 도 4를 참조하여 보다 상세히 후술한다.
그리고, 제2 제어부(202)는 상기 제1 제어부로부터 전송된 명령을 플래시 메모리(240)로 전송하고, 상기 플래시 메모리(240)로부터 전송된 데이터를 제1 제어부(201)로 전송한다. 상기 제2 제어부의 플래시 변환 계층(FTL)(220)은, 전송된 명령에 대응하는 논리 페이지 주소(Logical Page Address)와 물리 페이지 주 소(Physical Page Address) 사이의 매핑 정보를 포함한다. 그리고, 플래시 인터페이스 계층(FIL)(230)은 제어부(200)과 플래시 메모리(240) 사이의 통신을 위한 규격이다.
한편, 제2 제어부의 동작은 도 3 및 도 5를 참조하여 보다 상세히 후술한다.
도 3은 본 발명의 일 실시예에 따른 메모리 장치를 도시한다.
제1 제어부(도 2의 201)은 호스트(121)로부터 수신한 명령을 제1 명령 큐(310)에 저장한다. 그리고 제1 제어부(201)는 상기 제1 명령 큐(310)에서 디큐된 제1 명령이 플래시 메모리(240)의 복수 개의 볼륨(241 내지 243) 중 어느 볼륨에 연관되는 지 판단하는 상위 작업(Upper Task)(311)을 수행한다. 상기 제1 명령이 볼륨(241)에 연관되는 경우, 상기 제1 제어부(201)는 복수 개의 제2 명령 큐(320 내지 340) 중 상기 제1 명령에 연관되는 제2 명령 큐(320)를 제어하는 제2 제어부에 상기 제1 명령을 전송한다.
상기 제2 제어부는 상기 제1 명령을 제2 명령 큐(320)에 저장한다. 제2 제어부는 상기 제1 명령이 제2 명령 큐(320)로부터 디큐되는 경우, 플래시 변환 계층(FTL)을 이용하여, 상기 명령에 연관되는 논리 주소를 물리 주소로 변환하고, 상기 제1 명령을 플래시 인터페이스 계층(FIL)을 통해 플래시 메모리(240)로 전송하는 하위 작업(Lower Task)(321)을 수행한다.
본 발명의 일 실시예에 따르면, 상기 제2 명령 큐(320)로부터 디큐 된 제1 명령이 플래시 메모리의 볼륨(241)에서 수행되는 동안, 메모리 장치의 자원(Resource)(이를테면, CPU(110))은 다른 작업을 수행할 수 있다. 플래시 메모리 에서 명령이 수행되는 동안 메모리 장치의 자원이 다음 명령 처리를 위해 대기하는 상태를 유휴 상태 또는 바쁜 대기(Busy Waiting)라고 할 수 있다. 이러한 유휴 상태를 최소화 하기 위해, 본 실시예에서 메모리 장치는 하나의 명령이 플래시 메모리(240)에서 수행되는 동안, 다른 명령에 대해 하위 작업을 수행한다.
이를테면, 상기 제1 명령이 플래시 메모리의 볼륨(241)에서 수행되는 동안, 제2 명령 큐(330) 또는 제2 명령 큐(340)로부터 제2 명령이 디큐된다. 그리고, 제2 제어부는 상기 제2 명령에 대한 하위 작업(331 또는 341)을 수행한다. 그리고 상기 제2 명령이 플래시 메모리(240)로 전송된다.
이와 같은 방식으로 복수 개의 제2 명령 큐로부터 디큐된 명령들이 각각 플래시 메모리(240)에 전송되어 병렬적으로 처리된다. 이러한 병렬 처리는 제2 명령 큐(320 내지 340)이 모두 비어있게 될(empty) 때까지 수행된다. 그리고, 제2 명령 큐(320) 내기 340)이 모두 비어있는 경우, 제1 제어부는 상기 제1 명령 큐(310)로부터 다른 명령을 디큐하여, 상위 작업(311)을 수행하고, 제2 제어부로 전송한다.
본 발명의 일 실시예에 따르면, 제2 명령 큐(320 내지 340) 및 제1 명령 큐(310)이 모두 비어 있는 경우, 제1 제어부는 호스트(121)로부터 새로운 명령을 수신하여 제1 명령 큐(310)에 인큐한다.
도 4는 본 발명의 일 실시예에 따른 메모리 제어 방법을 도시하는 흐름도이다.
본 발명의 일 실시예에 따르면, 제1 제어부는 단계(S410)에서, 제1 명령 큐(이하에서는, 단순히 "명령 큐"라고 한다)가 비어있는지 판단한다.
상기 명령 큐가 비어 있지 않은 경우, 단계(S420)에서 제1 제어부가 상기 명령 큐로부터 제1 명령을 디큐한다.
단계(S430)에서, 제1 제어부는 플래시 메모리의 복수 개의 볼륨 중 상기 제1 명령에 연관된 제1 볼륨을 탐색한다. 상기 플래시 메모리의 볼륨은 적어도 하나의 메모리 채널을 포함한다. 상기 제1 명령에 연관된 제1 볼륨은, 상기 제1 명령에 연관된 채널을 포함하는 볼륨이다.
단계(S440)에서, 제2 제어부는 상기 제1 볼륨에 연관되는 제2 명령 큐(이하에서는 단순히 "볼륨 큐"라고 한다)에 인큐 한다.
그리고, 상기 제1 제어부는, 다른 작업을 위해 제어권을 양도한다. 상기 제어권은 메모리 장치의 자원을 사용하는 상태 또는 권한이다. 따라서, 상기 제어권이 다른 작업을 위해 양도되는 경우, 상기 메모리 장치의 자원은 상기 다른 작업을 수행하는 데에 이용된다.
한편, 단계(S410)에서 상기 명령 큐가 비어 있는 경우, 상기 제1 제어부는 다른 작업을 위해 제어권을 양도한다.
도 5는 본 발명의 일 실시예에 따른 메모리 제어 방법을 도시하는 흐름도이다.
제2 제어부는 단계(S510)에서 볼륨 큐가 비어 있는지 판단한다. 상기 볼륨 큐에서 디큐될 명령이 존재한다면, 상기 볼륨 큐는 비어 있는 것이 아니다.
상기 볼륨 큐가 비어 있지 않은 경우, 제2 제어부는 단계(S520)에서 상기 볼륨 큐에 저장된 명령 중 제1 명령을 디큐한다.
그리고 단계(S530)에서, 플래시 변환 계층(FTL)을 이용하여, 상기 제1 명령에 대응하는 논리 페이지 주소(Logical page address)가 물리 페이지 주소(Physical page address)로 변환된다. 상기 FTL은 페이지 레벨 매핑(Page level mapping), 블록 레벨 매핑(Block level mapping), 또는 로그 매핑 기법(log mapping scheme)을 이용하여 디자인된 것일 수 있다.
페이지 레벨 매핑은 논리 페이지 주소와 물리 페이지 주소 사이의 일대일 매핑 관계를 플래시 변환 계층에 저장하는 기법이다. 그리고 블록 레벨 매핑은 블록 단위의 매핑 정보를 상기 플래시 변환 계층에 저장하며, 논리 페이지 주소의 페이지 오프셋(page offset)을 함께 참조하여 매핑 관계를 판단하는 방법이다. 한편, 로그 매핑 기법은, 블록 매핑을 기본으로 하지만, 업데이트 된 페이지의 데이터는 로그 블록에 기록하는 기법이다.
한편, 상기한 FTL의 구성은, 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면, 상기 FTL의 구성과 종류에 대해 명확히 이해할 수 있다. 또한, 본 발명의 사상을 변경하지 않는 범위에서, FTL의 구성을 다른 것으로 바꾸는 것도 가능하며, 이는 본 발명의 범위 내의 것으로 판단되어야 한다.
단계(S540)에서, 상기 제1 명령이 플래시 메모리로 전송된다. 이 경우, 플래시 인터페이스 계층(FIL)이 사용된다. 상기 플래시 인터페이스 계층은, 메모리 제어부(또는 버퍼 등 다른 구성)와 플래시 메모리 사이의 통신을 위한 규격이다. 다만, 상기 플래시 인터페이스 계층은, 특정한 구성으로 한정되지 않으며, 상기 제1 명령을 플래시 메모리(또는 플래시 메모리 제어부)로 전송하는 장치, 소프트웨어 등을 포함할 수 있다.
단계(S550)에서, 상기 제2 제어부는 다른 작업을 위해 제어권을 양도한다. 상기 제어권은 도 4를 참조하여 전술한 바와 같다.
한편, 단계(S510)에서, 볼륨 큐가 비어 있는 경우는, 제2 제어부가 단계(S520) 내지 단계(S540)을 수행하지 않고, 단계(S550)에서 다른 작업을 위해 제어권이 양도된다.
본 발명의 일 실시예에 따르면, 제2 제어부가 단계(S550)에서 제어권을 양도하는 다른 작업은, 상기 볼륨 큐 이외의 다른 볼륨 큐에서 단계(S510) 내지 단계(S550)을 수행하는 것이다. 그리고 메모리 장치의 모든 볼륨 큐가 비어 있는 경우, 상기 제2 제어부가 단계(S550)에서 제어권을 양도하는 다른 작업은, 명령 큐에서 도 4의 단계(S410) 내지 단계(S450)을 수행하는 것이다.
도 6은 본 발명의 일 실시예에 따라, 제1 제어부 및 복수 개의 제2 제어부 간에 제어권이 양도되는 방법을 도시하는 개념도이다.
상기 제어권의 양도는 멀티 태스킹 스케줄링(multi-tasking scheduling)이라고 이해될 수도 있다. 멀티 태스크 구조에 따라 다양한 스케줄링 방법이 존재할 수 있지만, 본 발명의 일 실시예에 따르면, 특정 작업에 대해 바쁜 대기가 발생하는 경우, 제어권을 다른 작업에 양도한다. 따라서, 바쁜 대기로 인한 메모리 장치의 자원(이를 테면 CPU)의 유휴 시간을 줄이고 멀티 태스킹 작업을 효율적으로 수행할 수 있다. 즉, 병렬 처리의 효율성이 높아진다.
상기 서술한 바와 같이, 호스트로부터 수신된 명령들은 명령 큐에 저장된다. 그리고, 제1 명령이 디큐되는 경우 상기 제1 명령이 플래시 메모리의 복수 개의 볼륨 중 어느 볼륨에 속하는 지 판단하고, 상기 제1 명령을 볼륨 큐로 전송하는 작업이 상위 작업(Upper Task)(610)이다.
그리고, 상기 제1 명령을 수신하여 인큐한 볼륨 큐가 상기 제1 명령을 디큐하는 경우, 상기 제1 명령에 대하여, 플래시 변환 계층을 통해 물리적 페이지 주소를 결정하고 이를 플래시 인터페이스 계층을 통해 플래시 메모리로 전송하는 작업이 하위 작업(Lower Task)(620 또는 630)이다.
본 발명의 일 실시예에 따르면, CPU 등 메모리 장치의 자원을 점유하는(또는 이용하는) 상태 또는 권한인 제어권이 상위 작업(610) 및 하위 작업(620 및 630) 사이에서 양도된다.
하위 작업(620) 및 하위 작업(630) 간에는 우선 순위가 동일하며, 상기 하위 작업(620)들의 모두에 대하여 바쁜 대기가 발생하는 경우, 상위 작업(610)을 위해 제어권이 양도된다.
다만, 상기 우선 순위는 예시적인 것에 불과하며, 멀티 태스킹 스케줄링 과정에서 명령 처리의 효율성, 플래시 메모리의 동작 속도 등 다른 요인의 변화에 따라, 상기 우선 순위도 변경될 수 있다.
이를 테면, 플래시 메모리의 동작 속도가 메모리 장치와 호스트간의 통신 속도에 비해 월등히 빨라진다면, 상기 상위 작업(610)의 우선 순위가 상기 하위 작업(620 또는 630) 보다 높을 수도 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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는 본 명의 일 실시예에 따른 메모리 장치의 제1 제어부 및 제2 제어부를 도시한다.
도 3은 본 발명의 일 실시예에 따른 메모리 장치를 도시한다.
도 4는 본 발명의 일 실시예에 따른 메모리 제어 방법을 도시하는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 제어 방법을 도시하는 흐름도이다.
도 6은 본 발명의 일 실시예에 따라, 제1 제어부 및 복수 개의 제2 제어부 간의 동작을 도시하는 개념도이다.

Claims (16)

  1. 호스트로부터 제1 명령을 수신하여 제1 명령 큐(Command Queue)에 저장하고, 상기 제1 명령 큐에 저장된 제1 명령과 연관되는 제2 제어부에 상기 제1 명령을 송신하는 제1 제어부; 및
    상기 제1 제어부로부터 수신된 상기 제1 명령을 제2 명령 큐에 저장하고, 상기 제2 명령 큐에 저장된 제1 명령을 플래시 메모리로 송신하는 제2 제어부
    를 포함하며,
    상기 제2 명령 큐가 비어있지 않은 경우, 상기 제2 제어부가 상기 제2 명령 큐에 저장된 명령을 상기 플래시 메모리로 전송하도록 조정되고, 상기 제2 명령 큐가 비어 있는 경우, 상기 제1 제어부가 상기 제1 명령 큐에 저장된 명령을 상기 제2 제어부로 전송하도록 설정되는 것을 특징으로 하는 메모리 장치.
  2. 제1항에 있어서,
    상기 제1 제어부는 상기 호스트와의 통신을 위한 호스트 인터페이스 계층(Host Interface Layer)을 포함하는 것을 특징으로 하는 메모리 장치.
  3. 제1항에 있어서,
    상기 제2 제어부는,
    상기 제1 명령에 대응하는 논리적 페이지 주소와 물리적 페이지 주소 사이의 매핑 정보를 저장하는 플래시 변환 계층(FTL); 및
    상기 제2 제어부와 상기 플래시 메모리 사이의 통신을 위한 플래시 인터페이스 계층(FIL)을 포함하는 것을 특징으로 하는 메모리 장치.
  4. 삭제
  5. 호스트로부터 수신되는 명령을 제1 명령 큐에 저장하는 제1 제어부; 및
    상기 제1 제어부로부터 수신되는 명령을 제2 명령 큐에 저장하고, 상기 제2 명령 큐로부터 독출되는 명령을 플래시 메모리로 전송하는 복수 개의 제2 제어부
    를 포함하고,
    상기 제1 제어부는 상기 제1 명령 큐로부터 제1 명령을 독출하고, 상기 복수 개의 제2 제어부 중 상기 제1 명령에 연관되는 제2 제어부를 탐색하고, 상기 제1 명령을 상기 제1 명령에 연관되는 제2 제어부로 전송하며,
    상기 복수 개의 제2 제어부의 제2 명령 큐 중 적어도 하나의 제2 명령 큐에 상기 플래시 메모리로 전송되지 않은 명령이 존재하는 경우, 상기 플래시 메모리로 전송되지 않은 명령을 상기 플래시 메모리로 전송한 후에 상기 제1 제어부가 상기 제1 명령 큐에 저장된 명령을 독출하여 상기 제2 제어부로 전송하도록 설정되는 것을 특징으로 하는 메모리 장치.
  6. 제5항에 있어서,
    상기 제1 제어부는 상기 호스트와의 통신을 위한 호스트 인터페이스 계층을 포함하는 것을 특징으로 하는 메모리 장치.
  7. 제5항에 있어서,
    상기 제2 제어부는,
    상기 제1 명령에 대응하는 논리적 페이지 주소와 물리적 페이지 주소 사이의 매핑 정보를 저장하는 플래시 변환 계층; 및
    상기 제2 제어부와 상기 플래시 메모리 사이의 통신을 위한 플래시 인터페이스 계층을 포함하는 것을 특징으로 하는 메모리 장치.
  8. 삭제
  9. 제5항에 있어서,
    상기 플래시 메모리는 복수 개의 볼륨을 포함하고,
    상기 복수개의 볼륨의 각각은 상기 복수 개의 제2 제어부의 각각에 대응하는 것을 특징으로 하는 메모리 장치.
  10. 제9항에 있어서,
    상기 복수 개의 볼륨의 각각은 적어도 하나의 플래시 메모리 채널을 포함하 는 것을 특징으로 하는 메모리 장치.
  11. 호스트로부터 수신되는 명령을 제1 명령 큐에 저장하는 단계;
    상기 제1 명령 큐에 저장된 제1 명령을 독출하여 제2 명령 큐에 저장하는 단계; 및
    상기 제2 명령 큐로부터 상기 제1 명령을 독출하여, 플래시 메모리에 전송하는 단계
    를 포함하며,
    상기 제2 명령 큐가 비어있지 않은 경우, 상기 제2 명령 큐에 저장된 명령을 상기 플래시 메모리에 전송하고, 상기 제2 명령 큐가 비어있는 경우, 상기 제1 명령 큐에 저장된 제2 명령을 독출하여 상기 제2 명령 큐에 저장하는 것을 특징으로 하는 메모리 제어 방법.
  12. 제11항에 있어서,
    상기 제1 명령 큐에 저장된 제1 명령을 독출하여 제2 명령 큐에 저장하는 단계는,
    상기 제1 명령 큐에 저장된 제1 명령을 독출하는 단계;
    상기 제1 명령에 연관되는 제2 명령 큐를 탐색하는 단계; 및
    상기 제1 명령을 상기 제2 명령 큐에 저장하는 단계
    를 포함하는 것을 특징으로 하는 메모리 제어 방법.
  13. 삭제
  14. 제11항에 있어서,
    상기 제2 명령 큐로부터 상기 제1 명령을 독출하여, 플래시 메모리에 전송하는 단계는,
    상기 제2 명령 큐로부터 상기 제1 명령을 독출하는 단계;
    상기 제1 명령에 대응하는 논리적 페이지 주소를 물리적 페이지 주소로 변환하는 단계; 및
    상기 제1 명령 및 상기 제1 명령의 물리적 페이지 주소 정보를 플래시 메모리로 전송하는 단계
    를 포함하는 것을 특징으로 하는 메모리 제어 방법.
  15. 삭제
  16. 제11항, 제12항 및 제14항 중 어느 한 항의 메모리 제어 방법을 수행하기 위한 프로그램을 수록하는 컴퓨터 판독 가능 기록 매체.
KR1020080123060A 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 제어 방법 KR101541344B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080123060A KR101541344B1 (ko) 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 제어 방법
US12/470,552 US8356135B2 (en) 2008-12-05 2009-05-22 Memory device and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080123060A KR101541344B1 (ko) 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 제어 방법

Publications (2)

Publication Number Publication Date
KR20100064562A KR20100064562A (ko) 2010-06-15
KR101541344B1 true KR101541344B1 (ko) 2015-08-03

Family

ID=41267807

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080123060A KR101541344B1 (ko) 2008-12-05 2008-12-05 메모리 장치 및 메모리 장치의 제어 방법

Country Status (2)

Country Link
US (1) US8356135B2 (ko)
KR (1) KR101541344B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221038A (ja) * 2011-04-05 2012-11-12 Toshiba Corp メモリシステム
KR101835604B1 (ko) 2011-06-03 2018-03-07 삼성전자 주식회사 메모리를 위한 스케줄러
KR101919903B1 (ko) 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
KR102002901B1 (ko) 2013-01-28 2019-07-23 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 이의 제어 방법
KR20160118836A (ko) * 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
US11175831B2 (en) 2016-10-14 2021-11-16 Netapp, Inc. Read and write load sharing in a storage array via partitioned ownership of data blocks
CN106598742B (zh) * 2016-12-26 2020-01-03 湖南国科微电子股份有限公司 一种ssd主控内部负载均衡系统及方法
KR102523327B1 (ko) * 2018-03-19 2023-04-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR102608825B1 (ko) * 2018-04-26 2023-12-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
TWI715409B (zh) * 2020-01-08 2021-01-01 點序科技股份有限公司 記憶體管理方法及儲存控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008138249A1 (en) 2007-05-10 2008-11-20 Memoright Memoritech (Shenzhen) Co., Ltd Parallel flash memory controller, chip and control method thereof

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842038A (en) * 1996-10-10 1998-11-24 Unisys Corporation Optimized input/output memory access request system and method
JP4086345B2 (ja) * 1997-09-09 2008-05-14 キヤノン株式会社 通信制御方法及び装置及び通信システム
DE50308061D1 (de) * 2002-02-06 2007-10-11 Basf Ag Schaumstoffe aus wasserabsorbierenden basischen polymeren, verfahren zu ihrer herstellung und ihre verwendung
US6925539B2 (en) * 2002-02-06 2005-08-02 Seagate Technology Llc Data transfer performance through resource allocation
US20040049628A1 (en) 2002-09-10 2004-03-11 Fong-Long Lin Multi-tasking non-volatile memory subsystem
JP2005202976A (ja) 2005-02-15 2005-07-28 Mitsubishi Electric Corp 電子機器
JP2008108089A (ja) 2006-10-26 2008-05-08 Fujitsu Ltd データ処理システム、タスク制御方法及びそのプログラム
US8307128B2 (en) 2006-12-08 2012-11-06 International Business Machines Corporation System and method to improve sequential serial attached small computer system interface storage device performance
KR101297563B1 (ko) * 2007-11-15 2013-08-19 삼성전자주식회사 스토리지 관리 방법 및 관리 시스템
US20090172248A1 (en) * 2007-12-27 2009-07-02 Guangqing You Management of a flash memory device
US20090216959A1 (en) * 2008-02-27 2009-08-27 Brian David Allison Multi Port Memory Controller Queuing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008138249A1 (en) 2007-05-10 2008-11-20 Memoright Memoritech (Shenzhen) Co., Ltd Parallel flash memory controller, chip and control method thereof

Also Published As

Publication number Publication date
US8356135B2 (en) 2013-01-15
KR20100064562A (ko) 2010-06-15
US20090282188A1 (en) 2009-11-12

Similar Documents

Publication Publication Date Title
KR101541344B1 (ko) 메모리 장치 및 메모리 장치의 제어 방법
US8832333B2 (en) Memory system and data transfer method
US8341374B2 (en) Solid state drive and related method of scheduling operations
KR101581679B1 (ko) 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US8411496B2 (en) Systems and methods for scheduling a memory command for execution based on a history of previously executed memory commands
KR101505005B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
US9058208B2 (en) Method of scheduling tasks for memories and memory system thereof
US10761772B2 (en) Memory system including a plurality of chips and a selectively-connecting bus
EP2529308B1 (en) A system and method for read-while-write with nand memory device
US20150253992A1 (en) Memory system and control method
WO2013170731A1 (zh) 将数据写入存储设备的方法与存储设备
US20140281050A1 (en) Managing i/o priorities
KR20090109959A (ko) 스토리지 장치
KR101687762B1 (ko) 저장 장치 및 그것의 커맨드 스케줄링 방법
KR20080073128A (ko) 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
CN110716691B (zh) 调度方法、装置、闪存设备和系统
US20210004165A1 (en) Dummy Host Command Generation For Supporting Higher Maximum Data Transfer Sizes (MDTS)
US20080301381A1 (en) Device and method for controlling commands used for flash memory
US10089039B2 (en) Memory controller, memory device having the same, and memory control method
US20100235566A1 (en) Flash memory apparatus and method of controlling the same
KR20100120518A (ko) 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
CN116578234B (zh) 闪存访问系统及方法
KR20220073841A (ko) 가중된 메모리 액세스 동작 유형을 사용하는 메모리 디바이스에 대한 서비스 품질
CN110908595B (zh) 存储装置及信息处理系统
KR102549540B1 (ko) 스토리지 장치 및 그 동작 방법

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180620

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190619

Year of fee payment: 5