KR20210043819A - 컨트롤러 및 컨트롤러의 동작방법 - Google Patents

컨트롤러 및 컨트롤러의 동작방법 Download PDF

Info

Publication number
KR20210043819A
KR20210043819A KR1020190126614A KR20190126614A KR20210043819A KR 20210043819 A KR20210043819 A KR 20210043819A KR 1020190126614 A KR1020190126614 A KR 1020190126614A KR 20190126614 A KR20190126614 A KR 20190126614A KR 20210043819 A KR20210043819 A KR 20210043819A
Authority
KR
South Korea
Prior art keywords
command
queue
host
data
controller
Prior art date
Application number
KR1020190126614A
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 KR1020190126614A priority Critical patent/KR20210043819A/ko
Priority to US16/900,505 priority patent/US11249686B2/en
Priority to CN202010749279.9A priority patent/CN112732171B/zh
Publication of KR20210043819A publication Critical patent/KR20210043819A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

메모리 장치를 제어하는 컨트롤러는, 호스트로부터 수신된 적어도 하나의 커맨드를 큐잉하는 커맨드 큐; 상기 호스트로부터의 취소(abort) 커맨드에 응하여 상기 커맨드 큐의 유지 커맨드에 대응하는 재생 커맨드를 큐잉하는 재생 큐; 상기 재생 큐에 커맨드 큐잉이 완료되면 상기 커맨드 큐를 리셋하고, 상기 재생 큐의 커맨드를 상기 커맨드 큐에 큐잉하는 프로세서를 포함한다.

Description

컨트롤러 및 컨트롤러의 동작방법 {CONTROLLER AND OPERATION METHOD THEREOF}
본 발명은 메모리 장치를 제어하는 컨트롤러에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 내부에 큐잉된 커맨드에 대한 취소(abort) 커맨드의 신속한 처리를 보장하는 컨트롤러 및 그의 동작 방법을 제공하고자 한다.
본 발명의 실시예에 따르면, 메모리 장치를 제어하는 컨트롤러는, 호스트로부터 수신된 적어도 하나의 커맨드를 큐잉하는 커맨드 큐; 상기 호스트로부터의 취소(abort) 커맨드에 응하여 상기 커맨드 큐의 유지 커맨드에 대응하는 재생 커맨드를 큐잉하는 재생 큐; 상기 재생 큐에 커맨드 큐잉이 완료되면 상기 커맨드 큐를 리셋하고, 상기 재생 큐의 커맨드를 상기 커맨드 큐에 큐잉하는 프로세서를 포함한다.
본 발명의 실시예에 따르면, 메모리 장치를 제어하는 컨트롤러의 동작 방법은, 호스트로부터 수신된 적어도 하나의 커맨드를 커맨드 큐에 큐잉하는 단계; 상기 호스트로부터의 취소(abort) 커맨드에 응하여 상기 커맨드 큐의 유지 커맨드에 대응하는 재생 커맨드를 재생 큐에 큐잉하는 단계; 상기 재생 큐에 커맨드 큐잉이 완료되면 상기 커맨드 큐를 리셋하는 단계; 및 상기 재생 큐의 커맨드를 상기 커맨드 큐에 큐잉하는 단계를 포함한다.
본 발명의 실시예에 따르면 컨트롤러 내부에 큐잉된 커맨드에 대한 취소(abort) 커맨드의 신속한 처리를 보장할 수 있다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 메모리 시스템을 도시한 도면이다.
도 3a 내지 도 3e는 본 발명의 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 메모리 시스템의 동작을 나타내는 흐름도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템(100)을 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은, 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)을 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(110)은 호스트(102)의 커맨드에 응하여 호스트(102)의 데이터를 저장하기 위해 동작할 수 있다. 예컨대, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예컨대, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
호스트(102)는 메모리 시스템(110)으로 커맨드를 제공할 수 있다. 호스트(102)는 메모리 시스템(110)으로 이미 제공한 커맨드에 대한 응답을 수신하기 전이라도 메모리 시스템(110)으로 다른 커맨드를 제공할 수 있다. 메모리 시스템(110)은 호스트(102)로부터 수신한 커맨드를 내부에 큐잉하고, 커맨드가 큐잉된 순서대로 커맨드 동작을 수행할 수 있다.
메모리 시스템(110)은 호스트(102)로부터 제공되는 커맨드들을 수신하여 버퍼링하는 커맨드 버퍼(HOST_QUEUE)를 포함할 수 있다. 메모리 시스템(110)은 상기 커맨드 버퍼에 버퍼링된 커맨드들을 큐잉하는 커맨드 큐(CMD_QUEUE)를 포함할 수 있다. 도 1의 단계 S102는 메모리 시스템(110)이 커맨드 버퍼에 버퍼링된 커맨드를 커맨드 큐로 옮기는 동작을 나타낸다. 도 1은 커맨드 버퍼에 버퍼링된 커맨드가 옮겨져서 커맨드 큐에 제1 내지 제3 커맨드(CMD1 내지 CMD3)가 큐잉된 상태를 나타낸다. 메모리 시스템(110)은 커맨드 큐에 큐잉된 커맨드에 대한 응답을 호스트(102)로 제공한 후 상기 커맨드를 커맨드 큐에서 제거할 수 있다.
호스트(102)로부터의 커맨드는 노멀 커맨드와 취소(abort) 커맨드를 포함할 수 있다. 노멀 커맨드는 호스트(102)가 메모리 시스템(110)으로 하여금 어떤 동작을 수행하도록 지시하는 커맨드를 지칭한다. 노멀 커맨드의 예로, 리드 커맨드, 라이트 커맨드 등이 있을 수 있다. 취소 커맨드는 호스트(102)가 메모리 시스템(110)으로 하여금 이미 제공한 노멀 커맨드들 중 적어도 어느 하나를 취소하도록 지시하는 커맨드를 지칭한다.
메모리 시스템(110)은 호스트(102)로부터 제공된 커맨드에 대한 원자성(atomic)을 보장해야 한다. 즉, 메모리 시스템(110)은 노멀 커맨드에 대한 취소 커맨드가 제공되지 않는 한 해당 노멀 커맨드의 성공적인 처리를 보장해야 한다.
커맨드가 처리된다는 것은 메모리 시스템(110)이 상기 커맨드와 관련된 호스트(102)의 요구사항을 충족시킨다는 것을 의미한다. 예를 들어, 메모리 시스템(110)이 라이트 커맨드에 대한 응답(response)을 제공한 경우, 상기 라이트 커맨드와 관련하여 호스트(102)로부터 수신한 라이트 데이터가 메모리 시스템(110) 내에 모두 저장되어야 한다.
메모리 시스템(110)이 라이트 커맨드에 대한 응답을 제공하기 전 호스트(102)로부터 상기 라이트 커맨드에 대한 취소 커맨드를 수신한 경우, 상기 라이트 커맨드와 관련하여 호스트(102)로부터 라이트 데이터의 적어도 일부를 수신했더라도 상기 수신한 데이터는 모두 메모리 시스템(110)에서 제거되어야 한다.
메모리 시스템(110)은 커맨드 큐에 큐잉된 커맨드들을 순서대로 처리할 수 있다. 메모리 시스템(110)은 상기 커맨드들과 관련된 데이터를 버퍼링하기 위해 각 커맨드들에 대응하는 버퍼 자원을 할당할 수 있다. 메모리 시스템(110)은 현재 수행되는 커맨드뿐만 아니라 앞으로 수행될 커맨드에 대응하는 버퍼 자원도 미리 할당함으로써 동작 성능을 향상시킬 수 있다.
호스트(102)는 메모리 시스템(110)으로 커맨드를 제공한 후 메모리 시스템(110)으로 응답을 수신하기 전까지는 메모리 시스템(110)으로 취소 커맨드를 제공함으로써 상기 커맨드를 취소할 수 있다. 도 1의 단계 S104는 호스트(102)가 메모리 시스템(110)으로 커맨드 큐에 큐잉된 커맨드들 중 제2 커맨드에 대한 취소 커맨드(ABORT_CMD2)를 제공하는 동작을 나타낸다 도 1의 제2 커맨드와 관련하여 도시된 음영은 제2 커맨드가 취소 대상 커맨드라는 것을 나타낸다.
구현에 따라, 메모리 시스템(110)이 커맨드 버퍼에 큐잉된 커맨드를 커맨드 큐에 큐잉할 때 커맨드의 우선순위에 따라 큐잉 순서를 재배열할 수 있다. 예를 들어, 메모리 시스템(110)은 취소 커맨드를 노멀 커맨드에 비해 우선 처리되도록 커맨드들을 배열할 수 있다. 제2 커맨드에 대한 취소 커맨드는 먼저 큐잉된 제1 내지 제3 커맨드보다 먼저 처리될 수 있다.
한편, 메모리 시스템(110)이 상기 취소 커맨드에 응하여 커맨드 큐에서 제2 커맨드만을 제거한다면 메모리 시스템(110)의 취소 커맨드 처리의 복잡도 및 처리 시간이 증가한다.
제2 커맨드를 취소하기 위해서는, 커맨드 큐에서 제2 커맨드를 제거해야 할 뿐만 아니라 버퍼에서도 제2 커맨드를 위해 할당된 버퍼 자원의 할당을 취소해야 한다. 예를 들어, 메모리 시스템(110)은 제2 커맨드에 대응하는 데이터를 저장하기 위한 버퍼 자원이 할당되었는지 탐색하고, 제2 커맨드에 대한 버퍼 자원이 할당된 경우 이미 할당된 버퍼 자원에 더미 데이터를 마킹하는 등의 취소 동작을 수행해야 한다.
멀티 프로세서를 사용하는 고성능 메모리 시스템(110)의 경우 커맨드의 취소 처리는 더욱 복잡하다. 예를 들어, 메모리 시스템(110)은 호스트 프로세서 및 FTL(Flash Translaytion Layer) 프로세서를 포함할 수 있다. 호스트 프로세서는 호스트(102)의 커맨드를 수신하여 큐잉하고, 상기 커맨드와 관련된 데이터를 송신 또는 수신할 수 있다. FTL 프로세서는 큐잉된 커맨드에 대응하는 동작을 수행할 수 있다. 메모리 시스템(110)은 호스트 프로세서와 FTL 프로세서가 분리된 경우, 호스트 프로세서에서 취소된 커맨드에 대응하는 동작이 FTL 프로세서에서 수행되지 않도록 제어할 필요가 있다. 예를 들어, 상기 FTL 프로세서가 상기 더미 데이터가 마킹된 버퍼 자원과 연관된 커맨드 동작을 수행하지 않도록 하는 예외 처리가 구현되어야 한다.
게다가, 메모리 시스템(110)이 복수의 커맨드에 대한 취소 커맨드를 수신한 경우 복수의 커맨드 각각에 대하여 상기 취소 처리를 수행해야 한다. 따라서, 메모리 시스템(110)이 상기 취소 커맨드에 응하여 커맨드 큐에서 취소 대상 커맨드만 제거하는 경우 메모리 시스템(110)의 구현에 어려움이 따르며, 메모리 시스템(110)의 커맨드 취소 처리 시간이 메모리 시스템(110)의 규격(specification)에서 요구하는 정도보다 많이 소요될 수 있다.
본 발명의 실시예에 따르면, 메모리 시스템(110)은 호스트(102)로부터의 취소 커맨드에 응하여, 커맨드 큐의 유지 커맨드에 대응하는 재생 커맨드를 재생 큐(RE-GEN_QUEUE)에 옮겨 두고, 커맨드 큐 및 버퍼 할당을 리셋할 수 있다. 상기 유지 커맨드는 상기 커맨드 큐에 큐잉된 커맨드들 중 상기 취소 커맨드의 취소 대상이 아닌 커맨드를 의미한다. 상기 재생 큐는 상기 커맨드 큐 및 버퍼 할당을 리셋한 이후 유지 커맨드에 대한 처리를 완료하기 위해 유지 커맨드를 옮겨 두는 큐이다. 상기 재생 커맨드는 상기 유지 커맨드에 기초하여 상기 재생 큐에 큐잉되는 커맨드를 의미한다. 재생 커맨드는 유지 커맨드와 동일할 수도 있고 동일하지 않을 수도 있다. 메모리 시스템(110)은 필요한 경우 유지 커맨드를 수정하여 재생 커맨드를 생성할 수 있다. 도 1의 단계 S106은 제2 커맨드에 대한 취소 커맨드에 응하여 제1 및 제3 커맨드(CMD1 및 CMD3)에 대응하는 재생 커맨드를 재생 큐에 큐잉하는 동작을 나타낸다.
상기 리셋에 따라 모든 커맨드가 커맨드 큐에서 일시적으로 제거될 수 있다. 상기 리셋이 완료된 후 메모리 시스템(110)은 상기 재생 커맨드를 커맨드 큐에 큐잉할 수 있다. 도 1의 단계 S108은 제1 및 제3 커맨드에 대응하는 재생 커맨드를 커맨드 큐에 큐잉하는 동작을 나타낸다. 메모리 시스템(110)은 커맨드 버퍼의 커맨드들을 커맨드 큐에 큐잉하는 경우와 같이 재생 큐의 커맨드들을 커맨드 큐에 큐잉할 수 있다. 메모리 시스템(110)은 커맨드 큐에 큐잉된 재생 커맨드를 처리할 수 있다.
본 발명의 일 실시예에 따르면, 커맨드 큐에 큐잉된 복수의 커맨드들 중 일부 커맨드만 취소하는 경우 나머지 커맨드를 다른 큐에 옮겨 두고 커맨드 큐, 하위 큐 및 할당된 버퍼 등을 일괄적으로 리셋할 수 있다. 따라서, 커맨드 큐에서 일부 커맨드만 제거하는 경우에 비해서 메모리 시스템(110)의 취소 처리 시간 및 시스템의 복잡도가 감소할 수 있다.
도 2는 본 발명의 실시예에 따른 메모리 시스템(110)을 도시한 도면이다.
메모리 시스템(110)은 메모리 장치(150), 및 컨트롤러(130)를 포함할 수 있다. 메모리 장치(150)는 호스트(102)를 위한 데이터를 저장할 수 있으며, 컨트롤러(130)는 메모리 장치(150)로의 데이터 저장을 제어할 수 있다.
컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 컨트롤러(130) 및 메모리 장치(150)는, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예컨대, 컨트롤러(130) 및 메모리 장치(150)는 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
메모리 장치(150)는 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 메모리 장치(150)는 라이트 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 메모리 장치(150)에 저장된 데이터를 제공할 수 있다. 메모리 장치(150)는 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 메모리 장치(150)는 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 메모리 장치(150)를 제어할 수 있다. 예컨대, 컨트롤러(130)는 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 동작을 위해, 컨트롤러(130)는 메모리 장치(150)의 리드(read), 라이트(write), 이레이즈(erase) 등의 동작을 제어할 수 있다.
컨트롤러(130)는 서로 내부 버스를 통해 동작 가능하도록 연결된 호스트 인터페이스(132), FTL 프로세서(134), 메모리 인터페이스(136), 버퍼 관리부(138) 및 메모리(140)를 포함할 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
호스트 인터페이스(132)는 커맨드 버퍼(1322), 커맨드 큐(1324), 재생 큐(1326) 및 호스트 프로세서(1328)를 포함할 수 있다.
호스트 프로세서(1328)는 호스트(102)와 메모리 시스템(110)이 커맨드 및 데이터를 주고받는 동작 전반을 제어할 수 있다. 예를 들어, 호스트 프로세서(1328)는 펌웨어를 구동함으로써 커맨드 버퍼(1322), 커맨드 큐(1324) 및 재생 큐(1326)를 제어할 수 있다. 호스트 프로세서(1328)는 호스트(102)와 주고받는 데이터를 임시 저장하기 위한 버퍼를 관리하는 버퍼 관리부(138)를 제어할 수 있다.
호스트 프로세서(1328)는 호스트(102)로부터 수신된 커맨드에 대한 처리가 완료되면 상기 커맨드에 대응하는 응답을 호스트(102)로 제공할 수 있다. 예를 들어, 호스트 프로세서(1328)는 라이트 커맨드에 응하여 호스트(102)로부터 상기 라이트 커맨드와 관련된 라이트 데이터를 모두 수신하면 호스트(102)로 응답을 제공할 수 있다. 한편, 상기 라이트 커맨드에 대한 응답은 상기 라이트 데이터가 내부 버퍼에 버퍼링 되었는지, 메모리 장치(150)에 라이트 되었는지 여부와는 무관할 수 있다. 호스트 프로세서(1328)는 리드 커맨드에 응하여 메모리 장치(150)로부터 리드된 리드 데이터를 호스트(102)로 모두 제공한 이후 호스트(102)로 응답을 제공할 수 있다. 호스트 프로세서(1328)는 취소 커맨드가 수신되면 취소 대상 커맨드에 대한 응답을 제공하지 않고, 상기 취소 대상 커맨드를 취소할 수 있다.
커맨드 버퍼(1322)는 도 1을 참조하여 설명된 커맨드 버퍼(CMD_BUFFER)에 대응하며, 호스트(102)로부터 수신되는 커맨드들을 버퍼링하고, 커맨드 큐(1324)로 신호를 제공할 수 있다. 구현에 따라, 커맨드 버퍼(1322)는 하드웨어로 구현될 수 있다.
커맨드 큐(1324)는 도 1을 참조하여 설명된 커맨드 큐(CMD_QUEUE)에 대응한다. 커맨드 큐(1324)는 커맨드 버퍼(1322)의 신호에 응하여 커맨드 버퍼(1322)에 큐잉된 커맨드를 획득하여 큐잉할 수 있다. 커맨드 큐(1324)는 메모리 시스템(110)이 호스트(102)의 커맨드에 대응하는 동작을 수행하도록 FTL 프로세서(134)로 커맨드를 제공할 수 있다. 커맨드 큐(1324)는 호스트 프로세서(1328)가 큐잉된 커맨드에 대한 응답을 호스트(102)로 제공하면, 상기 커맨드를 제거할 수 있다. 한편, 커맨드 큐(1324)는 호스트 프로세서(1328)와 별개의 구성요소로 도시되었으나, 호스트 프로세서(1328)에서 구동되는 펌웨어의 일부로서 구현될 수도 있다.
재생 큐(1326)는 도 1을 참조하여 설명된 재생 큐(RE-GEN_QUEUE)에 대응하며, 호스트(102)로부터의 취소 커맨드에 응하여 유지 커맨드에 대응하는 재생 커맨드를 큐잉할 수 있다. 재생 큐(1326)가 재생 커맨드를 임시 보관하기 때문에, 호스트 프로세서(1328)는 커맨드 큐(1324) 및 할당된 버퍼 자원을 모두 리셋함으로써 간단하게 취소 대상 커맨드를 취소할 수 있다. 재생 큐(1326)는 상기 리셋 동작이 완료되면 큐잉된 재생 커맨드를 커맨드 큐(1324)로 큐잉할 수 있다.
FTL 프로세서(134)는 FTL이라는 펌웨어를 구동함으로써 상기 큐잉된 커맨드에 응하여 포그라운드 동작(foreground operation)을 수행할 수 있다. 예를 들어, FTL 프로세서(134)는 커맨드 큐(1324)로부터 수신한 커맨드에 응하여 상기 커맨드와 연관된 논리 어드레스를 물리 어드레스로 변환할 수 있다. FTL 프로세서(134)는 상기 물리 어드레스와 연관된 커맨드를 생성하여 메모리 인터페이스(136)로 제공할 수 있다.
또한, FTL 프로세서(134)는 상기 FTL을 구동함으로써 백그라운드 동작(background operation)을 수행할 수도 있다. 예컨대, 상기 백그라운드 동작은 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
메모리 인터페이스(136)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 예를 들어, 메모리 장치(150)가 플래시 메모리 장치인 경우, 메모리 인터페이스(136)는 플래시 컨트롤러일 수 있다. 메모리 인터페이스(136)는 하나 이상의 신호 라인들을 포함하는 채널을 통해 메모리 장치(150)와 연결될 수 있다.
메모리 인터페이스(136)는 FTL 프로세서(134)로부터 수신된 커맨드에 기초하여 상기 제어 신호를 메모리 장치(150)로 제공할 수 있다. 제어 신호는 메모리 장치(150)를 제어하기 위한 커맨드, 어드레스 등을 포함할 수 있다. 메모리 인터페이스(134)는 데이터를 메모리 장치(150)로 제공하거나, 메모리 장치(150)로부터 데이터를 수신할 수 있다.
메모리(140)는 메모리 시스템(110)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110)의 구동을 위한 데이터를 저장할 수 있다.
메모리(140)는 휘발성 메모리로 구현될 수 있다. 예컨대, 메모리(140)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(140)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 메모리(140)를 예시한다. 일 실시예에서, 메모리(140)는 메모리(140)와 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
메모리(140)는 프로그램 메모리, 데이터 버퍼 등을 포함할 수 있다. 프로그램 메모리는 호스트 프로세서(1328), FTL 프로세서(134) 등의 프로세서에서 구동되는 펌웨어를 저장할 수 있다. 데이터 버퍼는 호스트(102)로부터 수신되어 메모리 장치(150)에 라이트될 라이트 데이터 및 메모리 장치(150)로부터 리드되어 호스트(102)로 전송될 리드 데이터를 임시 저장할 수 있다.
버퍼 관리부(138)는 호스트 프로세서(1328)의 제어에 응하여 커맨드 큐(1324)에 큐잉된 커맨드들과 연관된 데이터를 임시 저장하기 위한 데이터 버퍼를 할당할 수 있다. 예를 들어, 버퍼 관리부(138)는 상기 데이터 버퍼를 복수의 버퍼 영역으로 나누고 각 영역을 인덱스와 대응시킬 수 있다. 버퍼 관리부(138)는 커맨드 큐(1324)에 큐잉된 커맨드와 연관된 데이터의 크기에 기초하여 상기 커맨드에 몇 개의 버퍼 영역을 할당할지 결정하고, 인덱스를 참조하여 할당되지 않은 버퍼 영역들을 할당할 수 있다. 버퍼 관리부(138)는 메모리 시스템(110)의 동작 성능을 향상시키기 위해 현재 수행되는 커맨드뿐만 아니라 앞으로 수행될 커맨드를 위한 버퍼 영역을 미리 할당할 수 있다.
호스트 프로세서(1328)는 버퍼 관리부(138)의 관리 정보에 기초하여 커맨드 큐(1324)에 큐잉된 커맨드에 대한 응답을 호스트(102)로 제공할 수 있다. 예를 들어, 호스트 프로세서(1328)는 라이트 커맨드를 위해 할당된 버퍼 영역에 데이터가 모두 저장되었다는 정보에 기초하여 라이트 처리가 완료되었다는 응답을 호스트(102)로 제공할 수 있다. 상기 라이트 데이터가 메모리 장치(150)에 프로그램되기 전이라도 메모리 시스템(110)은 호스트(102)가 상기 라이트 데이터를 요청하는 경우 상기 라이트 데이터를 제공할 수 있다. 다른 예로, 호스트 프로세서(1328)는 리드 커맨드를 위해 할당된 버퍼 영역에 데이터가 모두 저장되었다는 정보에 기초하여 리드 데이터를 호스트(102)로 제공한 후 리드 처리가 완료되었다는 응답을 제공할 수 있다.
도 3a 내지 도 4는 본 발명의 실시예에 따른 메모리 시스템(110)의 동작을 설명하기 위한 도면이다.
도 3a는 취소 커맨드를 수신하기 전의 메모리 시스템(110)의 상태를 나타낸다. 도 3a는 메모리 시스템(110)에 포함된 커맨드 버퍼(1322), 커맨드 큐(1324), 재생 큐(1326) 및 버퍼 관리부(138)의 상태를 도시한다. 도 3a에서 메모리 시스템(110)을 구성할 수 있는 다른 구성요소들은 생략되었다.
도 3a는 커맨드 버퍼(1322), 커맨드 큐(1324) 및 재생 큐(1326)의 앞(FRONT) 및 뒤(BACK)를 도시한다. 커맨드는 각 큐 또는 버퍼의 앞에서부터 뒤로 큐잉될 수 있다.
호스트 프로세서(1328)는 커맨드 큐(1324)에 큐잉된 커맨드들 중 우선순위가 높은 커맨드가 먼저 처리되도록 커맨드 간 순서를 조정할 수 있다. 호스트 프로세서(1328)는 커맨드 큐(1324)의 앞에 큐잉된 커맨드부터 순차적으로 처리할 수 있다.
도 3a는 커맨드 큐(1324)에 제1 내지 제4 커맨드(CMD1 내지 CMD4)가 큐잉된 상태를 예시한다. 커맨드 버퍼(1322)에 제1 내지 제4 커맨드가 버퍼링되면 호스트 프로세서(1328)는 상기 커맨드를 획득하여 커맨드 큐(1324)에 큐잉할 수 있다. 커맨드 버퍼(1322)의 커맨드가 커맨드 큐(1324)에 큐잉되면 커맨드 버퍼(1322)는 비워질 수 있다. 제1 내지 제4 커맨드는, 제1 커맨드부터 제4 커맨드의 순서로 큐잉되어, 제1 커맨드부터 제4 커맨드의 순서로 수행될 수 있다. 제1 내지 제4 커맨드는 노멀 커맨드일 수 있다.
버퍼 관리부(138)는 커맨드 큐(1324)에 큐잉된 커맨드를 위하여 데이터 버퍼를 할당할 수 있다. 예를 들어, 상기 데이터 버퍼는 복수의 버퍼 영역을 포함할 수 있다. 버퍼 관리부(138)는 상기 복수의 버퍼 영역 각각에 인덱스를 대응시킬 수 있다. 도 3a는 예시적으로 복수의 버퍼 영역 각각에 대응하는 제1 내지 제15 인덱스를 예시한다. 버퍼 관리부(138)는 어떤 인덱스의 버퍼 영역에 데이터가 저장되어 있는지 판단할 수 있다. 버퍼 관리부(138)는 커맨드와 관련된 데이터를 임시 저장하기 위해 데이터가 저장되지 않은 버퍼 영역을 할당할 수 있다. 도 3a는 버퍼 관리부(138)가 제1 커맨드를 위해 데이터가 저장되지 않은 제1 내지 제4 인덱스에 대응하는 버퍼 영역을 할당한 상태를 예시한다. 버퍼 관리부(138)는 메모리 시스템(110)의 동작 성능을 향상시키기 위해 제1 커맨드 처리가 완료되기 전이라도 제2 커맨드를 위해 제5 내지 제8 인덱스에 대응하는 버퍼 영역을 미리 할당할 수 있다. 마찬가지로, 버퍼 관리부(138)는 제9 내지 제12 인덱스에 대응하는 버퍼 영역을 제3 커맨드를 위해 미리 할당할 수 있다.
재생 큐(1326)는 현재 비어있을 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 동작을 나타내는 흐름도이다.
단계 S402에서, 커맨드 버퍼(1322)는 호스트(102)로부터 취소 커맨드를 수신할 수 있다.
도 3b는 단계 S402에 따른 메모리 시스템(110)의 상태 변화를 예시하는 도면이다. 도 3b에서도 도 3a에서와 마찬가지로, 커맨드 버퍼(1322), 커맨드 큐(1324), 재생 큐(1326) 및 버퍼 관리부(138) 이외에 메모리 시스템(110)에 포함될 수 있는 구성요소들은 생략되었다. 뒤에서 자세히 설명되는 도 3c 내지 3e에서도 마찬가지로 메모리 시스템(110)의 일부의 구성요소만을 도시하였다.
도 3b는 커맨드 버퍼(1322)에 제2 및 제3 커맨드에 대한 취소 커맨드(ABORT_CMD2&3)가 버퍼링된 상태를 나타낸다.
호스트 프로세서(1328)는 취소 커맨드를 커맨드 큐(1324)에 큐잉할 수 있다. 취소 커맨드는 노멀 커맨드에 비해 높은 우선순위로 처리될 수 있다. 호스트 프로세서(1328)는 우선순위가 높은 커맨드가 먼저 수행되도록 커맨드 큐(1324)에 커맨드가 큐잉되는 순서를 조정할 수 있다. 도 3b는 취소 커맨드가 제1 커맨드보다 앞에 큐잉된 상태를 예시한다.
취소 커맨드가 큐잉될 당시 제1 커맨드가 처리되는 중일 수 있다. 예를 들어, 제1 커맨드가 라이트 커맨드인 경우 제1 커맨드에 대응하는 라이트 데이터의 일부가 호스트(102)로부터 수신되어 버퍼에 버퍼링된 상태에서 호스트 프로세서(1328)가 취소 커맨드를 큐잉할 수 있다. 다른 예로, 제1 커맨드가 리드 커맨드인 경우 제1 커맨드에 대응하는 리드 데이터의 일부가 메모리 장치(150)로부터 리드되어 버퍼에 버퍼링된 상태에서 호스트 프로세서(1328)가 취소 커맨드를 큐잉할 수 있다. 도 3b는 취소 커맨드가 큐잉될 당시 제1 커맨드에 관련된 데이터의 일부가 수신되어 제1 및 제2 인덱스에 대응하는 버퍼 영역에 버퍼링된 상태를 예시한다. 도 3b에서 데이터가 버퍼링된 버퍼 영역은 음영으로 도시된다.
단계 S404에서, 커맨드 큐(1324)의 유지 커맨드에 대응하는 재생 커맨드를 재생 큐(1326)에 큐잉할 수 있다.
도 3c는 단계 S404의 동작이 수행된 후 메모리 시스템(110)의 상태를 예시한다. 도 3c를 참조하면, 커맨드 큐(1324)의 앞에 큐잉된 제2 및 제3 커맨드에 대한 취소 커맨드가 먼저 수행될 수 있다. 호스트 프로세서(1328)는 노멀 커맨드 처리를 중단하고, 취소 처리를 수행할 수 있다.
도 3c의 예에서, 호스트 프로세서(1328)는 제1 커맨드에 관련된 데이터를 버퍼링하는 동작을 중단할 수 있다. 호스트 프로세서(1328)는 이미 버퍼링된 데이터에 기초하여 상기 제1 커맨드의 일부를 처리할 수 있다. 커맨드의 일부를 처리한다는 것은 해당 커맨드와 관련된 데이터의 일부에 대해서만 커맨드 동작을 수행한다는 것을 의미한다.
호스트 프로세서(1328)는 유지 커맨드인 제1 및 제4 커맨드에 대응하는 재생 커맨드를 재생 큐(1326)에 큐잉할 수 있다. 재생 커맨드는 유지 커맨드와 동일한 커맨드일 수도 있고, 동일하지 않은 커맨드일 수도 있다. 예를 들어, 유지 커맨드가 아직 처리되지 않은 커맨드인 경우 호스트 프로세서(1328)는 상기 유지 커맨드와 동일한 재생 커맨드를 재생 큐(1326)에 큐잉할 수 있다. 유지 커맨드가 일부만 처리된 커맨드인 경우 호스트 프로세서(1328)는 상기 유지 커맨드의 처리되지 않은 부분에 대응하는 재생 커맨드를 생성하여 재생 큐(1328)에 큐잉할 수 있다.
호스트 프로세서(1328)가 커맨드의 일부를 처리하고, 커맨드의 처리되지 않은 부분에 대응하는 재생 커맨드를 생성하는 동작의 예가 아래에서 설명된다.
노멀 커맨드는 메모리 장치(150)에 저장하거나 호스트(102)로 제공할 데이터의 크기 및 어드레스 정보를 포함할 수 있다. 예를 들어, 제1 커맨드는 논리 어드레스 '100'부터 논리 어드레스 4개분의 데이터와 관련된 커맨드일 수 있다. 예시적으로 하나의 인덱스에 대응하는 버퍼 영역이 논리 어드레스 1개분의 데이터를 버퍼링할 수 있는 것으로 가정하면, 제1 내지 제4 버퍼 영역에 각각 논리 어드레스 '100', '101', '102', '103'에 대응하는 데이터가 버퍼링될 수 있다. 도 3c의 예에서, 논리 어드레스 '100', '101'에 대응하는 데이터는 이미 버퍼링된 상태일 수 있다.
호스트 프로세서(1328)는 제1 커맨드에 대응하는 재생 커맨드를 생성하기 이전에 이미 버퍼링된 데이터에 기초하여 제1 커맨드의 일부를 처리할 수 있다. 예를 들어, 제1 커맨드가 라이트 커맨드인 경우, 호스트 프로세서(1328)는 논리 어드레스 '100', '101'에 대응하는 데이터를 메모리 장치(150)에 프로그램할 수 있도록 FTL 프로세서(134)로 라이트 커맨드를 제공할 수 있다. 제1 커맨드가 리드 커맨드인 경우, 호스트 프로세서(1328)는 논리 어드레스 '100', '101'에 대응하는 데이터를 호스트(102)로 제공할 수 있다.
호스트 프로세서(1328)는 제1 커맨드에 대한 원자성을 보장하기 위해 제2 및 제3 커맨드의 취소 처리가 완료된 이후 제1 커맨드의 처리되지 않은 부분도 처리하여야 한다. 호스트 프로세서(1328)는 논리 어드레스 '102'부터 논리 어드레스 2개분의 데이터를 라이트하도록 지시하는 제5 커맨드를 생성하여 재생 큐(1326)에 큐잉할 수 있다. 제5 커맨드는 재생 커맨드이며, 유지 커맨드인 제1 커맨드와 대응할 수 있다.
유지 커맨드인 제4 커맨드는 전체가 아직 처리되지 않은 커맨드이다. 호스트 프로세서(1328)는 제4 커맨드를 그대로 재생 커맨드로서 재생 큐(1326)에 큐잉할 수 있다.
단계 S406에서, 호스트 프로세서(1328)는 커맨드 큐(1324) 및 버퍼 관리부(138)의 버퍼 할당을 리셋할 수 있다.
도 3d는 단계 S406이 수행된 이후 메모리 시스템(110)의 상태를 예시한다.
호스트 프로세서(1328)는 커맨드 큐(1324)에 큐잉된 커맨드를 모두 제거할 수 있다. 그리고, 호스트 프로세서(1328)는 버퍼 관리부(138)의 버퍼 할당과 관련된 정보를 제거할 수 있다. 도 3d를 참조하면, 제1 내지 제3 커맨드에 버퍼가 할당되었다는 정보가 제거될 수 있다.
한편, 도 3d에서 자세히 도시되지는 않았으나, 현재 처리 중인 커맨드가 취소 대상 커맨드인 경우도 있다. 호스트 프로세서(1328)는 해당 커맨드와 관련된 데이터의 적어도 일부가 버퍼에 버퍼링된 경우라도 버퍼 할당 및 할당된 버퍼 영역의 데이터를 제거할 수 있다. 따라서, 취소 대상 커맨드가 현재 처리 중인 커맨드인 경우 해당 커맨드가 완전히 취소됨으로써 메모리 시스템(110)의 원자성은 보장될 수 있다.
단계 S406의 동작에 의해서 커맨드 큐(1324)에 큐잉된 제2 및 제3 커맨드는 취소될 수 있다. 단계 S406에서, 제1 및 제4 커맨드도 커맨드 큐(1324)에서 일시적으로 제거될 수 있다.
단계 S408에서, 호스트 프로세서(1328)는 재생 큐(1326)에 큐잉된 재생 커맨드를 커맨드 큐(1324)에 큐잉할 수 있다. 호스트 프로세서(1328)는 커맨드 큐(1324)에 큐잉된 재생 커맨드를 처리함으로써 유지 커맨드에 대한 원자성을 보장할 수 있다.
도 4는 단계 S408의 동작이 수행된 후 메모리 시스템(110)의 상태를 나타내는 도면이다.
도 3e는 커맨드 큐(1324)에 제4 및 제5 커맨드가 큐잉된 상태를 예시한다. 제5 커맨드는 제1 커맨드에 대응하는 재생 커맨드로서, 제4 커맨드보다 앞에 큐잉되었으므로 호스트 프로세서(1328)에 의해 먼저 처리될 수 있다.
도 3e는 버퍼 관리부(138)에 의해 제4 및 제5 커맨드를 위하여 버퍼 영역이 할당된 상태를 예시한다. 제5 커맨드를 위하여 제1 및 제2 인덱스에 대응하는 버퍼 영역이 할당되고, 제4 커맨드를 위하여 제3 내지 제6 인덱스에 대응하는 버퍼 영역이 할당될 수 있다. 도 3c의 예에서, 제5 커맨드는 논리 어드레스 '102'로부터 2개분의 논리 어드레스와 관련된 커맨드일 수 있다.
예를 들어, 제1 커맨드가 라이트 커맨드인 경우, 호스트 프로세서(1328)는 제5 커맨드에 응하여 논리 어드레스 '102' 및 '103'에 대응하는 데이터를 호스트(102)로부터 수신하고, 메모리 장치(150)가 상기 데이터를 라이트하도록 FTL 프로세서(134)로 커맨드를 제공할 수 있다. 제1 커맨드가 리드 커맨드인 경우, 호스트 프로세서(1328)는 제5 커맨드에 기초하여 논리 어드레스 '102' 및 '103'에 대응하는 데이터를 리드하도록 FTL 프로세서(134)를 제어하고, 리드된 데이터를 호스트(102)로 제공할 수 있다. 취소 커맨드 처리 당시 제1 커맨드의 처리되지 않은 부분에 해당하는 제5 커맨드가 처리되므로, 제1 커맨드의 처리가 완료될 수 있다.
본 발명의 일 실시예에 따르면, 호스트 프로세서(1328)는 취소 커맨드에 응하여 유지 커맨드에 대응하는 재생 커맨드를 재생 큐(1326)에 큐잉하고, 커맨드 큐 및 버퍼 할당 정보를 리셋할 수 있다. 호스트 프로세서(1328)가 상기 커맨드 큐 및 버퍼 할당 정보를 일괄적으로 리셋함으로써 취소 대상 커맨드에 대한 취소를 수행할 수 있다. 호스트 프로세서(1328)는 커맨드 큐(1324) 및 하위 큐에 큐잉된 커맨드 중 취소 대상 커맨드만을 제거하기 위해 복잡한 동작을 수행하지 않아도 된다, 마찬가지로, 버퍼 관리부(1328)는 취소 대상 커맨드를 위해 할당한 버퍼 영역에 대한 별도 처리를 수행하지 않아도 된다. 따라서, 메모리 시스템(110)의 취소 처리에 대한 시간이 단축되고, 메모리 시스템(110)의 구현의 복잡도가 감소한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110: 메모리 시스템
130: 컨트롤러
150: 메모리 장치

Claims (16)

  1. 메모리 장치를 제어하는 컨트롤러에 있어서,
    호스트로부터 수신된 적어도 하나의 커맨드를 큐잉하는 커맨드 큐;
    상기 호스트로부터의 취소(abort) 커맨드에 응하여 상기 커맨드 큐의 유지 커맨드에 대응하는 재생 커맨드를 큐잉하는 재생 큐;
    상기 재생 큐에 커맨드 큐잉이 완료되면 상기 커맨드 큐를 리셋하고, 상기 재생 큐의 커맨드를 상기 커맨드 큐에 큐잉하는 프로세서
    를 포함하는 컨트롤러.
  2. 제1항에 있어서,
    상기 호스트로부터 수신되어 상기 메모리 장치에 라이트될 라이트 데이터 및 상기 메모리 장치로부터 리드되어 상기 호스트로 전송될 리드 데이터를 버퍼링하는 데이터 버퍼
    를 더 포함하는 컨트롤러.
  3. 제2항에 있어서,
    상기 프로세서는
    상기 재생 큐에 커맨드 큐잉이 완료되면 상기 데이터 버퍼를 리셋하는
    컨트롤러.
  4. 제2항에 있어서,
    상기 프로세서는
    상기 유지 커맨드와 관련된 데이터의 일부가 상기 데이터 버퍼에 버퍼링된 경우 상기 취소 커맨드에 응하여 유지 커맨드의 일부를 처리하는
    컨트롤러.
  5. 제4항에 있어서,
    상기 프로세서는
    상기 유지 커맨드의 아직 처리되지 않은 부분의 처리를 지시하는 상기 재생 커맨드를 생성하는
    컨트롤러.
  6. 제5항에 있어서,
    상기 프로세서는
    상기 유지 커맨드가 라이트 커맨드인 경우 상기 데이터에 버퍼링된 데이터가 라이트 되도록 상기 메모리 장치를 제어함으로써 상기 유지 커맨드의 일부를 처리하는
    컨트롤러.
  7. 제5항에 있어서,
    상기 프로세서는
    상기 유지 커맨드가 리드 커맨드인 경우 상기 데이터에 버퍼링된 데이터를 상기 호스트로 제공함으로써 상기 유지 커맨드의 일부를 처리하는
    컨트롤러.
  8. 제1항에 있어서,
    상기 커맨드 큐는
    상기 취소 커맨드를 노멀 커맨드보다 높은 우선순위로 처리하는
    컨트롤러.
  9. 제1항에 있어서,
    상기 유지 커맨드는
    상기 커맨드 큐에 큐잉된 적어도 하나의 커맨드 중 상기 호스트로부터의 취소 커맨드에 따른 취소 대상이 아닌 커맨드인
    컨트롤러.
  10. 메모리 장치를 제어하는 컨트롤러의 동작 방법에 있어서,
    호스트로부터 수신된 적어도 하나의 커맨드를 커맨드 큐에 큐잉하는 단계;
    상기 호스트로부터의 취소(abort) 커맨드에 응하여 상기 커맨드 큐의 유지 커맨드에 대응하는 재생 커맨드를 재생 큐에 큐잉하는 단계;
    상기 재생 큐에 커맨드 큐잉이 완료되면 상기 커맨드 큐를 리셋하는 단계; 및
    상기 재생 큐의 커맨드를 상기 커맨드 큐에 큐잉하는 단계
    를 포함하는 동작 방법.
  11. 제10항에 있어서,
    상기 유지 커맨드와 관련된 데이터의 일부가 상기 컨트롤러 내부 버퍼에 버퍼링된 경우 상기 취소 커맨드에 응하여 유지 커맨드의 일부를 처리하는 단계
    를 더 포함하는 동작 방법.
  12. 제11항에 있어서,
    상기 유지 커맨드의 아직 처리되지 않은 부분의 처리를 지시하는 상기 재생 커맨드를 생성하는 단계
    를 더 포함하는 동작 방법.
  13. 제11항에 있어서,
    상기 재생 큐에 커맨드 큐잉이 완료되면 상기 버퍼를 리셋하는 단계
    를 더 포함하는 동작 방법.
  14. 제11항에 있어서,
    상기 취소 커맨드에 응하여 유지 커맨드의 일부를 처리하는 단계는
    상기 유지 커맨드가 라이트 커맨드인 경우 상기 데이터에 버퍼링된 데이터가 라이트 되도록 상기 메모리 장치를 제어하는 단계를 포함하는
    동작 방법.
  15. 제11항에 있어서,
    상기 취소 커맨드에 응하여 유지 커맨드의 일부를 처리하는 단계는
    상기 유지 커맨드가 리드 커맨드인 경우 상기 데이터에 버퍼링된 데이터를 상기 호스트로 제공하는 단계를 포함하는
    동작 방법.
  16. 제10항에 있어서,
    상기 유지 커맨드는
    상기 커맨드 큐에 큐잉된 적어도 하나의 커맨드 중 상기 호스트로부터의 취소 커맨드에 따른 취소 대상이 아닌 커맨드인
    동작 방법.

KR1020190126614A 2019-10-14 2019-10-14 컨트롤러 및 컨트롤러의 동작방법 KR20210043819A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190126614A KR20210043819A (ko) 2019-10-14 2019-10-14 컨트롤러 및 컨트롤러의 동작방법
US16/900,505 US11249686B2 (en) 2019-10-14 2020-06-12 Controller for handling an abort command using a regeneration queue and operation method thereof
CN202010749279.9A CN112732171B (zh) 2019-10-14 2020-07-30 控制器及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190126614A KR20210043819A (ko) 2019-10-14 2019-10-14 컨트롤러 및 컨트롤러의 동작방법

Publications (1)

Publication Number Publication Date
KR20210043819A true KR20210043819A (ko) 2021-04-22

Family

ID=75383688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190126614A KR20210043819A (ko) 2019-10-14 2019-10-14 컨트롤러 및 컨트롤러의 동작방법

Country Status (3)

Country Link
US (1) US11249686B2 (ko)
KR (1) KR20210043819A (ko)
CN (1) CN112732171B (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412998B1 (en) 2008-04-02 2013-04-02 Marvell International Ltd Restart operation with logical blocks in queued commands
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
US9792046B2 (en) 2014-07-31 2017-10-17 Sandisk Technologies Llc Storage module and method for processing an abort command
US10133627B2 (en) * 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
US10423333B2 (en) * 2016-01-08 2019-09-24 Oracle International Corporation System and method for scalable processing of abort commands in a host bus adapter system
US10732893B2 (en) * 2017-05-25 2020-08-04 Western Digital Technologies, Inc. Non-volatile memory over fabric controller with memory bypass
KR20190083150A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190083052A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US10635350B2 (en) * 2018-01-23 2020-04-28 Western Digital Technologies, Inc. Task tail abort for queued storage tasks
KR102485411B1 (ko) * 2018-03-02 2023-01-06 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
CN112732171B (zh) 2024-03-19
CN112732171A (zh) 2021-04-30
US20210109676A1 (en) 2021-04-15
US11249686B2 (en) 2022-02-15

Similar Documents

Publication Publication Date Title
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
KR102147993B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
US11449418B2 (en) Controller and method for selecting victim block for wear leveling operation
US11782825B2 (en) Memory system which stores a plurality of write data grouped into a transaction
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
US11762590B2 (en) Memory system and data processing system including multi-core controller for classified commands
US11494318B2 (en) Controller and operation method thereof
US11922062B2 (en) Controller and operating method thereof
US11409444B2 (en) Memory system and operation method thereof
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
KR20210043819A (ko) 컨트롤러 및 컨트롤러의 동작방법
US11662947B2 (en) Memory system and data processing system performing operation on commands before fetching of commands
US20220156003A1 (en) Controller and operation method thereof
US11586382B2 (en) Memory system and data processing system for distributedly storing input data
KR20220007300A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20220072357A (ko) 컨트롤러, 및 이를 포함하는 메모리 시스템 및 데이터 처리 시스템
KR20220042673A (ko) 컨트롤러, 컨트롤러의 동작 방법, 및 이를 포함하는 메모리 시스템
KR20220165128A (ko) 메모리 시스템 및 데이터 처리 시스템
CN114691534A (zh) 控制器以及包括控制器的存储器系统

Legal Events

Date Code Title Description
E902 Notification of reason for refusal