KR20210115576A - 호스트 및 메모리 시스템을 포함하는 전자 시스템 - Google Patents

호스트 및 메모리 시스템을 포함하는 전자 시스템 Download PDF

Info

Publication number
KR20210115576A
KR20210115576A KR1020200031537A KR20200031537A KR20210115576A KR 20210115576 A KR20210115576 A KR 20210115576A KR 1020200031537 A KR1020200031537 A KR 1020200031537A KR 20200031537 A KR20200031537 A KR 20200031537A KR 20210115576 A KR20210115576 A KR 20210115576A
Authority
KR
South Korea
Prior art keywords
request
request set
sets
queue
host
Prior art date
Application number
KR1020200031537A
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 KR1020200031537A priority Critical patent/KR20210115576A/ko
Priority to US16/999,953 priority patent/US11556278B2/en
Priority to CN202010962885.9A priority patent/CN113392047B/zh
Publication of KR20210115576A publication Critical patent/KR20210115576A/ko
Priority to US18/066,112 priority patent/US11868664B2/en

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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/10Address translation
    • 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
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • 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/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

본 기술은 수신되는 어드레스들 및 요청들에 따라 요청 세트들을 생성하며, 상기 어드레스들이 연속적이면 상기 연속적인 어드레스들 각각에 대응되는 요청들(requests)을 병합하여 하나의 요청 세트(request set)를 생성하는 요청 병합 관리부; 상기 요청 세트들과 리드된 데이터를 전송하기 위한 전송 요청 세트들을 저장하고, 상기 요청 세트들 및 상기 전송 요청 세트들의 우선권(priority)에 따라 상기 요청 세트들 및 상기 전송 요청 세트들을 순차적으로 출력하는 요청 세트 큐; 상기 요청 세트들 및 상기 전송 요청 세트들의 상기 우선권을 조절하는 제1 스케쥴러; 데이터를 저장할 수 있는 메모리 시스템에서 상기 요청 세트들의 동작이 완료될 때까지 상기 요청 세트들을 저장하는 계류 요청 세트 큐; 상기 메모리 시스템에 출력된 요청 세트에 대한 리드 아이디에 응답하여 상기 전송 요청세트를 생성하고, 상기 전송 요청 세트를 상기 요청 세트 큐에 전송하는 제2 스케쥴러; 및 상기 계류 요청 세트 큐가 가득 차면, 상기 계류 요청 세트 큐에서 상기 우선권이 가장 높은 요청 세트에 대한 요청 정보를 상기 제1 스케쥴러에 전송하는 요청 세트 판단부를 포함하고, 상기 제1 스케쥴러는 상기 전송 요청 세트들 중에서 상기 요청 정보에 대응되는 전송 요청 세트의 우선권을 가장 높게 변경하는 것을 특징으로 하는 호스트 및 메모리 시스템을 포함하는 전자 시스템을 포함한다.

Description

호스트 및 메모리 시스템을 포함하는 전자 시스템{Electronic system having host and memory system}
본 발명은 호스트 및 메모리 시스템을 포함하는 전자 시스템에 관한 것으로, 보다 구체적으로는 요청(request)의 큐(queue)를 관리하는 호스트 및 메모리 시스템을 포함하는 전자 시스템에 관한 것이다.
전자 시스템(electronic system)은 데이터를 저장하는 메모리 시스템(memory system)과, 메모리 시스템에게 프로그램, 리드 또는 소거 요청들(requests)을 전송하는 호스트(host)를 포함할 수 있다.
메모리 시스템(memory system)은 데이터를 저장할 수 있는 메모리 장치와, 메모리 장치를 제어할 수 있는 컨트롤러(controller)를 포함할 수 있다.
메모리 장치는 복수의 메모리 칩들(memory chips)을 포함할 수 있다. 메모리 칩들은 데이터가 저장되는 메모리 셀 어레이를 포함할 수 있고, 프로그램, 리드 또는 소거 동작을 수행할 수 있는 주변 회로들을 포함할 수 있으며, 커맨드 및 어드레스에 응답하여 주변 회로들을 제어할 수 있는 로직 회로를 포함할 수 있다.
컨트롤러는 호스트와 메모리 장치 사이에서 데이터 통신을 제어할 수 있다. 컨트롤러는 호스트의 요청(request)에 응답하여, 메모리 장치를 제어하기 위한 커맨드를 생성 및 출력할 수 있다. 예를 들면, 컨트롤러는 프로그램 요청에 응답하여, 수신된 데이터가 메모리 장치에 프로그램되도록 메모리 장치를 제어할 수 있다. 컨트롤러는 리드 요청에 응답하여, 수신된 어드레스에 맵핑된 저장 영역을 리드하고, 리드된 데이터를 호스트로 출력할 수 있다. 컨트롤러는 소거 요청에 응답하여, 수신된 어드레스에 맵핑된 저장 영역을 소거할 수 있다.
호스트는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 컨트롤러를 통해 메모리 장치와 통신할 수 있다. 호스트와 메모리 시스템 간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들이 포함될 수 있다.
본 발명의 실시예는 계류 중인(pending) 요청 세트(request set)를 저장하는 저장부(storage)가 가득 찬 경우, 계류 중인 요청 세트의 우선권을 변경하여 요청 세트들을 처리할 수 있는 호스트 및 메모리 시스템을 포함하는 전자 시스템을 제공한다.
본 발명의 실시예에 따른 호스트는, 수신되는 어드레스들 및 요청들에 따라 요청 세트들을 생성하며, 상기 어드레스들이 연속적이면 상기 연속적인 어드레스들 각각에 대응되는 요청들(requests)을 병합하여 하나의 요청 세트(request set)를 생성하는 요청 병합 관리부; 상기 요청 세트들과 리드된 데이터를 전송하기 위한 전송 요청 세트들을 저장하고, 상기 요청 세트들 및 상기 전송 요청 세트들의 우선권(priority)에 따라 상기 요청 세트들 및 상기 전송 요청 세트들을 순차적으로 출력하는 요청 세트 큐; 상기 요청 세트들 및 상기 전송 요청 세트들의 상기 우선권을 조절하는 제1 스케쥴러; 데이터를 저장할 수 있는 메모리 시스템에서 상기 요청 세트들의 동작이 완료될 때까지 상기 요청 세트들을 저장하는 계류 요청 세트 큐; 상기 메모리 시스템에 출력된 요청 세트에 대한 리드 아이디에 응답하여 상기 전송 요청세트를 생성하고, 상기 전송 요청 세트를 상기 요청 세트 큐에 전송하는 제2 스케쥴러; 및 상기 계류 요청 세트 큐가 가득 차면, 상기 계류 요청 세트 큐에서 상기 우선권이 가장 높은 요청 세트에 대한 요청 정보를 상기 제1 스케쥴러에 전송하는 요청 세트 판단부를 포함할 수 있고, 상기 제1 스케쥴러는 상기 전송 요청 세트들 중에서 상기 요청 정보에 대응되는 전송 요청 세트의 우선권을 가장 높게 변경하는 것을 특징으로 한다.
본 발명의 실시예에 따른 전자 시스템은, 데이터를 저장할 수 있는 메모리 시스템; 및 요청 세트 큐에 큐잉된 요청 세트들을 상기 메모리 시스템으로 출력하고, 상기 메모리 시스템에서 상기 요청 세트들에 대응되는 동작이 진행되는 동안 상기 요청 세트들을 저장하는 계류 요청 세트 큐를 포함하는 호스트를 포함할 수 있고, 상기 호스트는, 상기 계류 요청 세트 큐가 가득 차면, 상기 요청 세트 큐에 큐잉된 전송 요청 세트의 우선권을 높이는 것을 특징으로 한다.
본 기술은 호스트에 계류 중인(pending) 요청 세트(request set)를 용이하게 관리할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 설명하기 위한 도면이다.
도 2는 메모리 칩을 설명하기 위한 도면이다.
도 3은 메모리 블록을 설명하기 위한 도면이다.
도 4는 메모리 장치의 저장 용량과 논리 어드레스를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 호스트를 설명하기 위한 도면이다.
도 6은 요청 병합 관리부(request merge manager) 및 요청들을 병합하는 방법을 설명하기 위한 도면이다.
도 7은 요청 세트 큐 및 계류 요청 세트 큐를 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 9는 본 발명의 제1 실시 예에 따른 요청 세트 관리 방법을 설명하기 위한 순서도이다.
도 10a 내지 도 10d는 제1 실시 예에 따라 요청 세트 큐 및 계류 요청 큐에 큐잉된 요청 세트들의 우선권을 변경하는 방법을 설명하기 위한 도면들이다.
도 11은 요청 세트 큐에 큐잉된 요청 세트의 출력이 차단된 경우를 설명하기 위한 도면이다.
도 12a 내지 도 12c는 요청 세트의 차단된 출력을 해제시키는 방법을 설명하기 위한 도면이다.
도 13은 본 발명의 제2 실시 예에 따른 요청 세트의 관리 방법을 설명하기 위한 순서도이다.
도 14a 및 도 14b는 제2 실시 예에 따라 요청 세트 큐에 큐잉된 전송 요청 세트들의 우선권을 변경하는 방법을 설명하기 위한 도면들이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 전자 시스템(electrode system; 10000)은 데이터를 저장할 수 있는 메모리 시스템(memory system; 1000)과, 메모리 시스템(1000)에 데이터를 프로그램하거나, 리드하거나 소거하도록 요청들을 출력하는 호스트(host; 2000)를 포함할 수 있다.
메모리 시스템(1000)은 데이터가 저장되는 메모리 장치(1100)와, 메모리 장치(1100)와 호스트(2000) 사이에서 통신하는 컨트롤러(1200)를 포함할 수 있다. 메모리 장치(1100)는 하나 이상의 메모리 칩들(memory chips; MC1~MCk; k는 양의 정수)을 포함할 수 있다. 메모리 칩들(MC1~MCk)은 불휘발성 메모리(non-volatile memory) 또는 휘발성 메모리(volatile memory)로 구성될 수 있으며, 본 실시 예에서는 불휘발성 메모리로 구성된 메모리 칩들(MC1~MCk)이 도시된다. 다만, 본 실시 예는 불휘발성 메모리로 제한되지 않는다. 메모리 칩들(MC1~MCk)은 채널(channel)을 통해 컨트롤러(1200)와 통신할 수 있다. 예를 들면, 하나의 채널에 복수의 메모리 칩들(MC1~MCk)이 연결될 수 있으며, 다수의 채널들이 컨트롤러(1200)에 연결된 경우에도 복수의 메모리 칩들(MC1~MCk)이 각각의 채널에 연결될 수 있다.
컨트롤러(1200)는 호스트(2000)와 메모리 장치(1100) 사이에서 통신할 수 있다. 컨트롤러(1200)는 호스트(2000)로부터 요청 세트를 수신하면, 수신된 요청 세트에 따라 커맨드를 생성하고, 생성된 커맨드를 메모리 장치(1100)에 전송할 수 있다. 예를 들면, 리드 동작의 경우, 컨트롤러(1200)는 리드 요청 세트에 응답하여 리드 커맨드를 생성하고, 리드 요청 세트에 포함된 어드레스에 맵핑된 물러 어드레스를 리드 커맨드와 함께 메모리 장치(1100)로 전송할 수 있다. 또한, 컨트롤러(1200)는 리드 요청 세트에 따라 리드된 데이터를 출력할 준비가 되면, 리드된 메모리 장치에 대한 정보를 포함하는 리드 아이디(read ID)를 호스트(2000)로 출력할 수 있다. 또한, 컨트롤러(1200)는 호스트로부터 전송 요청 세트를 수신하면, 메모리 장치(1100)로부터 리드된 데이터와 완료 요청 세트를 호스트(2000)로 출력할 수 있다.
호스트(2000)는 다양한 동작들에 대한 요청들(requests)을 순차적으로 큐잉(queueing)하고, 큐잉된 순서에 따라 요청들을 메모리 시스템(1000)으로 전송할 수 있다. 예를 들면, 호스트(2000)에서 출력된 요청은 메모리 시스템(1000)의 컨트롤러(1200)로 전송될 수 있다.
리드 동작을 위하여 호스트(2000)가 리드 요청 세트를 메모리 시스템(1000)에게 전송하면, 메모리 시스템(1000)은 리드 요청 세트에 응답하여 리드 동작을 수행할 수 있다.
호스트(2000)는 메모리 시스템(1000)으로부터 리드 아이디(read ID)를 수신하면, 리드 아이디에 대응되는 리드 요청 세트를 검색하고, 검색된 리드 요청 세트에 대한 데이터를 수신하기 위하여 전송 요청 세트를 생성하고, 생성된 전송 요청 세트를 메모리 시스템(1000)으로 출력할 수 있다. 또한, 호스트(2000)는 메모리 시스템(1000)으로부터 완료 요청 세트를 수신하면, 완료 요청 세트에 대응되는 요청 세트를 큐(queue)에서 제거하고, 다음 요청을 출력할 준비를 할 수 있다.
본 실시예에서는 호스트(2000)에서 다음 요청 세트의 출력이 차단된 경우, 계류 중인 요청 세트들이 완료될 수 있도록 요청 세트들의 우선권(priority)을 관리하는 기술을 설명한다.
도 2는 메모리 칩을 설명하기 위한 도면으로써, 도 1에 도시된 메모리 장치들(MC1~MCk)은 서로 동일하게 구성되므로 이 중에서 어느 하나의 메모리 칩(MCk)을 예를 들어 설명하도록 한다.
도 2를 참조하면, 메모리 칩(MCk)은 데이터가 저장되는 메모리 셀 어레이(memory cell array; 100)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로들(110~140)과, 주변 회로들(110~164)을 제어하는 로직 회로(150)를 포함할 수 있다.
메모리 셀 어레이(100)는 데이터가 저장되는 복수의 메모리 블록들(MB1~MBi; i는 양의 정수)을 포함할 수 있다. 메모리 블록들(MB1~MBi) 각각은 복수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다. 최근에는 집적도가 우수한 3차원 구조의 메모리 블록의 사용이 증가하고 있으나, 본 실시예는 메모리 블록의 구조에 의해 제한되지 않는다.
주변 회로들(110~140)은 전압 생성부(voltage generator; 110), 로우 디코더(row decoder; 120), 페이지 버퍼 그룹(page buffer group; 130) 및 입출력 회로(input/output circuit; 140)를 포함할 수 있다.
전압 생성부(110)는 동작 코드(Cop)에 응답하여 다양한 동작들에 필요한 동작 전압들(Vop)을 생성하고 출력할 수 있다. 예를 들면, 전압 생성부(110)는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 및 소거 전압 등을 생성하고 출력할 수 있다.
로우 디코더(120)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(100)에 포함된 메모리 블록들 중에서 적어도 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 동작 전압들(Vop)을 전송할 수 있다.
페이지 버퍼 그룹(130)은 비트 라인들(bit lines)을 통해 메모리 셀 어레이(100)에 연결될 수 있다. 예를 들면, 페이지 버퍼 그룹(130)은 비트 라인들 각각에 연결된 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼들은 페이지 버퍼 제어 신호들(PBSIGS)에 응답하여 동시에 동작할 수 있으며, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다. 이를 위해, 페이지 버퍼들 각각은 데이터를 임시로 저장하기 위한 복수의 래치들(latches)을 포함할 수 있다.
입출력 회로(140)는 입출력 라인들(input/output lines; IO)을 통해 컨트롤러(1200)에 연결될 수 있다. 입출력 회로(140)는 입출력 라인들(IO)을 통해 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력 할 수 있다. 예를 들면, 입출력 회로(140)는 입출력 라인들(IO)을 통해 커맨드(CMD) 및 어드레스(ADD)를 수신받고, 수신된 커맨드 및 어드레스(ADD)를 로직 회로(150)에 전송할 수 있고, 입출력 라인들(IO)을 통해 수신된 데이터(DATA)를 페이지 버퍼 그룹(130)으로 전송할 수 있다. 또한, 입출력 회로(140)는 페이지 버퍼 그룹(130)으로부터 수신된 데이터(DATA)를 입출력 라인들(IO)을 통해 외부 장치로 출력할 수 있다.
로직 회로(150)는 커맨드(CMD) 및 어드레스(ADD)에 응답하여, 동작 코드(Cop), 로우 어드레스(RADD) 및 페이지 버퍼 제어 신호들(PBSIGS)을 출력할 수 있다. 로직 회로(150)는 커맨드(CMD)에 따라 다양한 알고리즘을 수행하기 위한 소프트웨어와, 알고리즘에 따라 다양한 코드 또는 신호들을 출력하기 위한 하드웨어를 포함할 수 있다.
도 3은 메모리 블록을 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 블록(MBi)은 제1 내지 제n 비트 라인들(BL1~BLm; m은 양의 정수)과 소스 라인(SL) 사이에 연결된 복수의 스트링들(ST)을 포함할 수 있다. 스트링들(ST) 각각은 소스 라인(SL)과 제1 내지 제m 비트 라인들(BL1~BLm) 사이에서 직렬로 연결된 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn; n은 양의 정수) 및 드레인 셀렉트 트랜지스터(DST)를 포함할 수 있다. 도 3에 도시된 메모리 블록(MBi)은 데이터가 저장되는 메모리 블록의 구성을 설명하기 위한 도면이므로, 소스 셀렉트 트랜지스터(SST), 제1 내지 제n 메모리 셀들(C1~Cn) 및 드레인 셀렉트 트랜지스터(DST)의 개수는 도 3에 도시된 개수로 제한되지 않는다.
서로 다른 스트링들(ST)에 연결된 소스 셀렉트 트랜지스터들(SST)의 게이트들은 소스 셀렉트 라인(SSL)에 연결되고, 제1 내지 제n 메모리 셀들(C1~Cn) 각각의 게이트들은 제1 내지 제n 워드 라인들(WL1~WLn)에 연결되고, 드레인 셀렉트 트랜지스터들(DST)의 게이트들은 드레인 셀렉트 라인(DSL)에 연결될 수 있다.
동일한 워드 라인에 연결되고 서로 다른 스트링들(ST)에 포함된 메모리 셀들은 하나의 페이지(PG)를 구성할 수 있다. 메모리 셀들은 페이지(PG) 단위로 프로그램 또는 리드될 수 있다.
제1 내지 제m 비트 라인들(BL1~BLm)은 페이지 버퍼 그룹(130)에 포함된 페이지 버퍼들에 각각 연결될 수 있다.
도 4는 메모리 장치의 저장 용량과 논리 어드레스를 설명하기 위한 도면이다.
도 4를 참조하면, 메모리 장치(1100)는 물리적으로 구분된 복수의 메모리 칩들(도 1의 MC1~MCk)을 포함하지만, 메모리 장치(1100)의 전체 용량은 논리적으로 복수의 저장 영역들로 구분될 수 있다. 논리적으로 구분된 각각의 저장 영역들에는 논리 어드레스(LADD)가 부여되며, 이러한 논리 어드레스는 호스트(도 1의 2000)에서 사용될 수 있다. 예를 들면, 호스트(2000)는 논리 어드레스 단위로 어드레스를 관리할 수 있으며, 메모리 시스템(도 1의 1000)에 포함된 메모리 장치(1100)는 물리 어드레스 단위로 어드레스가 부여될 수 있다. 여기서 물리 어드레스는 메모리 장치(1100)에 포함된 메모리 칩들(MC1~MCk)과 각 메모리 칩들에 포함된 메모리 블록들(MB1~MBi)의 어드레스일 수 있다. 메모리 시스템(1000)에 포함된 컨트롤러(도 1의 1200)는 논리 어드레스(LADD)와 물리 어드레스의 맵핑(mapping)을 관리할 수 있다.
호스트(2000)가 메모리 장치(1100)를 논리 어드레스(LADD) 단위로 관리하는 경우, 논리 어드레스(LADD)에 대응되는 각 저장 영역의 저장 용량은 서로 동일하게 설정될 수 있다. 예를 들면, 논리 어드레스(LADD)가 a00인 저장 영역의 저장 용량과 a01인 저장 영역의 저장 용량은 서로 동일할 수 있다.
도 5는 본 발명의 실시 예에 따른 호스트를 설명하기 위한 도면이다.
도 5를 참조하면, 호스트(2000)는 요청 병합 관리부(RQ merge manager; 2010), 요청 세트 큐(RS queue; 2020), 제1 스케쥴러(first scheduler; 2030), 메모리 인터페이스(memory I/F; 2040), 계류 요청 세트 큐(pending RS queue; 2050), 제2 스케쥴러(second scheduler; 2060) 및 요청 세트 판단부(RS detector; 2070)를 포함할 수 있다.
요청 병합 관리부(2010)는 어드레스들(ADD) 및 요청들(RQ)이 생성되면, 어드레스들(ADD)에 따라 요청들(RQ)을 선택적으로 병합할 수 있다. 어드레스들(ADD)은 논리 어드레스들일 수 있고, 요청들(RQ)은 프로그램, 리드 또는 소거 요청들일 수 있다.
요청 병합 관리부(2010)는 요청들(RQ)과 함께 수신된 어드레스들(ADD)이 연속적인 경우, 연속적인 어드레스들(ADD)에 각각 대응되는 요청들(RQ)을 하나의 요청으로 병합할 수 있다. 예를 들면, 리드 동작에 대한 요청들(RQ)과 각 요청에 대응되는 어드레스들(ADD)이 연속적인 경우, 요청 병합 관리부(2010)는 리드 동작에 대한 요청들(RQ)을 하나의 요청으로 병합하고, 병합된 요청에 어드레스들(RS)들을 맵핑(mapping)할 수 있다. 즉, 병합된 하나의 요청에 복수의 어드레스들(ADD)이 맵핑될 수 있다. 병합되는 요청들(RQ)은 서로 동일한 요청들일 수 있으며, 수신된 어드레스들(ADD)이 연속되더라도 수신된 요청들(RQ)이 서로 다른 요청들인 경우, 요청들(RQ)은 병합되지 않는다. 요청 병합 관리부(2010)는 병합된 요청과 복수의 어드레스들(ADD)이 맵핑된 요청 세트(request set)를 생성하고, 생성된 요청 세트를 요청 세트 큐(2020)로 전송할 수 있다. 요청들(RQ)이 병합된 경우, 요청 병합 관리부(2010)는 요청 세트(RS)를 생성하고 출력할 수 있다.
요청 병합 관리부(2010)는 요청들(RQ)과 함께 수신된 어드레스들(ADD)이 불연속적인 경우, 요청들(RQ)을 병합하지 아니하고, 수신된 요청들(RQ)과 어드레스들(ADD)을 각각 맵핑하여 요청 세트(RS)를 생성할 수 있다. 즉, 하나의 요청(RQ)에 하나의 어드레스(ADD)가 맵핑된 요청 세트(RS)가 생성될 수 있다. 요청 세트
요청 세트 큐(2020)는 요청 병합 관리부(2010)에서 출력된 요청 세트(RS) 또는 제2 스케쥴러(2050)에서 출력된 전송 요청 세트(RSs)를 저장할 수 있는 저장부(storage)를 포함할 수 있다. 예를 들면, 요청 세트 큐(2020)에 포함된 저장부는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 요청 세트 큐(2020)에 포함된 저장부는 DRAM(dynamic random access memory), SRAM(static random access memory) 또는 래치(latch) 등으로 구현될 수 있다. 요청 세트 큐(2020)에 포함된 저장부는 복수의 저장 영역들을 포함할 수 있으며, 복수의 저장 영역들 각각에는 우선권이 부여될 수 있다. 여기서 우선권은 요청 세트 큐(2020)에 큐잉된 요청 세트들이 출력되는 순서를 의미한다.
요청 세트 큐(2020)에 포함된 버퍼의 용량은 계류 요청 세트 큐(2060)에 포함된 버퍼의 용량과 동일할 수 있다.
제1 스케쥴러(2030)는 요청 세트 큐(2020)를 관리할 수 있다. 제1 스케쥴러(2030)는 풀 신호(FSIG) 및 요청 정보(IFRS)에 응답하여 요청 세트 큐(2020)에 큐잉된 전송 요청 세트(RSs) 및 요청 세트(RS)의 우선권을 변경할 수 있다. 예를 들면, 제1 스케쥴러(2030)는 풀 신호(FSIG)가 비활성화되어 있는 경우, 요청 세트 큐(2020)에 수신되는 순서대로 요청 세트(RS) 및 전송 요청 세트(RSs)를 큐잉하고, 큐잉된 순서대로 요청 세트들(RS)을 순차적으로 출력할 수 있다. 또한, 제1 스케쥴러(2030)는 풀 신호(FSIG)가 활성화되면, 요청 정보(IFRS)에 따라 요청 세트들(RS)의 우선권을 변경할 수 있다. 예를 들면, 제1 스케쥴러(2030)는 요청 세트 큐(2020)에 큐잉되어 있는 복수의 요청 세트들(RS)의 우선권(priority)을 변경할 수 있고, 요청 세트 큐(2020)는 변경된 우선권에 따라 요청 세트들(RS)을 순차적으로 출력할 수 있다. 또한, 제1 스케쥴러(2030)는 요청 세트 큐(2020)에 큐잉된 요청 세트(RS)를 출력할 때 메모리 인터페이스(2040)와 계류 요청 세트 큐(2050)에 요청 세트(RS)를 동시에 출력할 수 있고, 전송 요청 세트(RSs)를 출력하는 경우에는 메모리 인터페이스(2040)에만 전송 요청 세트(RSs)를 출력할 수 있다.
우선권을 변경하는 방법은 요청 세트 큐(2020)에 포함된 복수의 저장 영역들에 부여된 우선권을 변경하거나, 요청 세트를 다른 저장 영역으로 이동시켜 해당 요청 세트의 우선권을 변경할 수도 있다. 요청 세트를 다른 저장 영역으로 이동시키는 경우, 요청 세트 큐(2020)는 큐잉되는 요청 세트들을 저장하는 저장 영역들 외에, 여분의 저장 영역을 더 포함할 수도 있다.
메모리 인터페이스(2040)는 요청 세트(RS) 또는 전송 요청 세트(RSs)가 수신되면, 수신된 요청 세트의 어드레스에 따라 요청 세트를 메모리 시스템(1000)으로 출력할 수 있다. 또한, 메모리 인터페이스(2040)는 메모리 시스템(1000)으로부터 리드 아이디(RID) 또는 완료 요청 세트(RSc) 또는 데이터(DATA)가 수신되면, 수신된 리드 아이디(RID) 또는 완료 요청 세트(RSc) 또는 데이터(DATA)를 호스트(2000)의 내부 장치들로 전달할 수 있다. 예를 들면, 메모리 인터페이스(2040)는 리드 아이디(RID) 또는 완료 요청 세트(RSc)를 계류 요청 세트 큐(2050)로 전달할 수 있다.
계류 요청 세트 큐(2050)는 수신되는 요청 세트(RS)를 순차적으로 저장할 수 있는 저장부(storage)를 포함할 수 있다. 계류 요청 세트 큐(2050)에 포함된 저장부는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구성될 수 있다. 예를 들면, 계류 요청 세트 큐(2050)에 포함된 저장부는 DRAM(dynamic random access memory), SRAM(static random access memory) 또는 래치(latch) 등으로 구현될 수 있다. 계류 요청 세트 큐(2050)에 포함된 버퍼의 용량은 요청 세트 큐(2020)에 포함된 버퍼의 용량과 동일할 수 있다.
제2 스케쥴러(2060)는 계류 요청 세트 큐(2050)를 관리할 수 있다. 제2 스케쥴러(2060)는 계류 요청 세트 큐(2050)가 가득 찼는지를 체크하고, 계류 요청 세트 큐(2050)가 가득 찬 것으로 판단되면 활성화된 풀 신호(FSIG)를 출력할 수 있고, 가득 차지 않은 것으로 판단되면 풀 신호(FSIG)를 비활성화시킬 수 있다. 제2 스케쥴러(2050)에서 출력된 풀 신호(FSIG)는 제1 스케쥴러(2030)에 입력될 수 있다. 제1 스케쥴러(2030)는 풀 신호(FSIG)가 활성화되면 요청 정보(IFRS)에 따라 요청 세트 큐(2020)의 우선권(priority)을 변경할 수 있다.
또한, 제2 스케쥴러(2060)는 리드 아이디(RID) 또는 완료 요청 세트(RSc)가 수신되면, 계류 요청 세트 큐(2050)에 계류중인 요청 세트들(RS) 중 리드 아이디(RID) 또는 완료 요청 세트(RSc)에 대응되는 요청 세트를 찾고, 찾아진 요청 세트에 대한 전송 요청 세트(RSs)를 생성하여 요청 세트 큐(2020)로 전송할 수 있다.
요청 세트 판단부(2070)는 계류 요청 세트 큐(2050)에 요청 세트(RS)가 가득 찬 경우, 우선권이 가장 높은 요청 세트(RS)의 정보를 수신받고, 우선권이 가장 높은 요청 세트(RS)에 대한 요청 정보(IFRS)를 제1 스케쥴러(2030)로 출력할 수 있다. 또는, 요청 세트 판단부(2070)는 계류 요청 세트 큐(2050)에 요청 세트(RS)가 가득 찬 경우, 우선권이 높은 요청 세트(RS)에 대한 요청 정보(IFRS)를 순차적으로 제1 스케쥴러(2030)에게 출력할 수 있다.
상술한 장치들 중에서 주요 장치들에 대하여 구체적으로 설명하면 다음과 같다.
도 6은 요청 병합 관리부(request merge manager) 및 요청들을 병합하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 요청 병합 관리부(2010)는 호스트(2000)에서 생성된 어드레스들(ADD)과 요청들(RQ)을 수신하고, 연속된 어드레스들(ADD)에 대응되는 요청들을 하나의 요청으로 병합(merge)할 수 있다. 예를 들면, 제1 내지 제6 요청들(1RQ~6RQ)과 각 요청들(1RQ~6RQ)에 맵핑된 어드레스들(ADD)이 순차적으로 입력되고, 이 중에서 제1 내지 제3 요청들(1RQ~3RQ)에 맵핑된 어드레스들(ADD)이 a01~a03과 같이 연속되는 경우, 제1 내지 제3 요청들(1RQ~3RQ)과 어드레스들(a01~a03)은 제1 요청 세트(1RS)에 포함될 수 있고, 나머지 제4 내지 제6 요청들(4RQ~6RQ)과 어드레스들(a12, a25 및 a11)은 각각 제4 요청 세트(4RS), 제5 요청 세트(5RS) 및 제6 요청 세트(6RS)에 포함되어 출력될 수 있다.
요청 병합 관리부(2010)에서 생성되는 요청 세트는 요청(RQ), 병합 카운트 값(merge count value; MCV), 논리 어드레스(LADD) 및 리드 아이디(RID)를 포함할 수 있다. 요청(RQ)은 호스트에서 생성된 요청으로써, 프로그램 요청, 리드 요청 또는 소거 요청을 포함할 수 있다. 병합 카운트 값(MCV)은 병합된 요청들의 개수일 수 있다. 예를 들면, 제1 요청 세트(1RS)에 세 개의 요청들이 병합되면 병합 카운트 값(MCV)은 3일 수 있다. 하나의 요청 세트에 하나의 요청만 포함된 경우, 즉 요청들이 병합되지 않은 경우에는 병합 카운트 값(MCV)은 1일 수 있다. 따라서, 병합 카운트 값(MCV)이 2 이상인 요청 세트는 두 개 이상의 요청들이 병합된 요청 세트가 될 수 있다.
제1 내지 제3 요청들(1RQ~3RQ)이 병합된 제1 요청 세트(1RS)를 예를 들어 설명하면, 제1 요청 세트(1RS)는 하나의 제1 요청(1RQ)을 포함하지만, 병합 카운트 값(MCV)이 3 이므로, 세 개의 요청들이 병합된 것임을 알 수 있다. 논리 어드레스(LADD)에는 병합된 요청들에 대응되는 세 개의 어드레스들(a01, a02, a03)이 포함될 수 있고, 리드 아이디(RID)는 ID02를 포함할 수 있다. 리드 아이디(RID)는 데이터가 저장된 메모리 장치(1100)에 대한 다양한 정보를 포함할 수 있다. 예를 들면, 리드 아이디(RID)는 메모리 장치(1100)의 제조에 관련된 정보를 포함할 수 있으며, 데이터가 저장된 메모리 칩의 어드레스를 포함할 수 있다. 이처럼 복수의 동일한 요청들이 하나의 요청으로 병합되면, 요청 세트들을 저장하는 요청 세트 큐(2020)에 더 많은 개수의 요청들이 저장될 수 있으므로, 요청 세트 큐(2020)의 제한된 저장 영역을 사용하여 종래보다 더 많은 개수의 요청들이 실행될 수 있다.
도 7은 요청 세트 큐 및 계류 요청 세트 큐를 설명하기 위한 도면이다.
도 7을 참조하면, 요청 세트 큐(2020)는 호스트(도 5의 2000)가 메모리 시스템(도 5의 1000)으로 출력할 요청 세트들(RS)을 저장할 수 있고, 계류 요청 세트 큐(2050)는 메모리 시스템(1000)으로 출력되고 해당 동작이 아직 실행중인 요청 세트들(RS)을 저장할 수 있다.
요청 세트 큐(2020)와 계류 요청 세트 큐(2050)는 서로 동일한 저장 용량을 가질 수 있다. 예를 들어, 요청 세트 큐(2020)에 제1 내지 제8 저장 영역들(Q1~Q8)이 포함되면, 계류 요청 세트 큐(2050)도 제1 내지 제8 저장 영역들(P1~P8)을 포함할 수 있다. 요청 세트 큐(2020)와 계류 요청 세트 큐(2050)의 제1 내지 제8 저장 영역들(Q1~Q8, P1~P8) 각각에는 요청 세트(RS)에 포함된 요청(RQ), 병합 카운트 값(MCV), 논리 어드레스(LADD) 및 리드 아이디(RID)가 저장될 수 있다. 요청(RQ)은 다양한 동작들에 대응되는 코드들로 이루어질 수 있다. 병합 카운트 값(MCV)은 요청들이 병합된 개수를 나타낼 수 있다. 예를 들면, 병합 카운트 값(MCV)이 1인 요청 세트(RS)는 요청(RQ)이 병합되지 아니한 요청 세트(RS)이고, 병합 카운트 값(MCV)이 2 이산인 요청 세트(RS)는 복수의 요청들(RQ)이 하나의 요청(RQ)으로 병합된 요청 세트(RS)를 나타낸다. 논리 어드레스(LADD)는 요청(RQ)에 맵핑된 어드레스이다. 예를 들면, 복수의 요청들(RQ)이 병합된 요청 세트(RS)의 경우, 논리 어드레스(LADD)는 병합된 요청들(RQ)에 맵핑된 연속되는 논리 어드레스(LADD)를 모두 포함할 수 있다. 리드 아이디(RID)는 요청들(RQ)이 병합된 경우 생성될 수 있으며, 요청들(RQ)이 병합되지 아니한 경우에는 생성되지 않는다.
요청 세트 큐(2020)와 계류 요청 세트 큐(2050)에 각각 입력되는 요청 세트들(RS)은 입력되는 순서대로 제1 내지 제8 저장 영역들(Q1~Q8, P1~P8)에 저장될 수 있다. 예를 들면, 요청 세트 큐(2020)에 요청 세트(RS)가 입력되면 제8 저장 영역(Q8)에 우선 저장되고, 다음으로 입력된 요청 세트(RS)는 제7 저장 영역(Q7)에 저장될 수 있다. 이러한 방식으로 제8 내지 제1 저장 영역들(Q8~Q1)에 요청 세트들(RS)이 순차적으로 저장될 수 있다. 계류 요청 세트 큐(2050)에도 요청 세트(RS)가 입력되면 제8 저장 영역(P8)에 우선 저장되고, 다음으로 입력된 요청 세트(RS)는 제7 저장 영역(P7)에 저장될 수 있다. 이러한 방식으로 제8 내지 제1 저장 영역들(P8~P1)에 요청 세트들(RS)이 순차적으로 저장될 수 있다.
요청 세트 큐(2020)에 저장된 요청 세트들(RS) 중 제8 저장 영역(Q8)에 저장된 요청 세트(RS)가 출력될 수 있다. 제8 저장 영역(Q8)에 저장된 요청 세트(RS)가 출력되면, 제7 내지 제1 저장 영역들(Q7~Q1)에 저장된 요청 세트들(RS)은 제8 내지 제2 저장 영역들(Q8~Q2)로 이동하고, 제1 저장 영역(Q1)은 비워질 수 있다. 따라서, 제1 내지 제8 저장 영역들(Q1~Q8)에 요청 세트들(RS)이 가득 찬 경우, 제8 저장 영역(Q8)에 저장된 요청 세트(RS)가 출력되어야만 제1 저장 영역(Q1)이 비워지므로, 다음 요청 세트(RS)가 입력될 수 있다. 요청 세트 큐(2020)는 메모리 시스템(1000)으로 출력되는 요청 세트들(RS)을 저장하므로, 프로그램 요청 세트, 리드 요청 세트 또는 소거 요청 세트 외에도, 리드된 데이터를 출력하기 위한 전송 요청 세트가 저장될 수 있다.
계류 요청 세트 큐(2050)도 요청 세트 큐(202)처럼 제8 저장 영역(P8)에 저장된 요청 세트(RS)가 출력되어야만 제1 저장 영역(P1)이 비워질 수 있고, 이에 따라 다음 요청 세트(RS)를 입력 받을 수 있다. 계류 요청 세트 큐(2050)는 메모리 시스템(1000)에서 실행 중인 요청 세트가 저장되므로, 프로그램 요청 세트, 리드 요청 세트 또는 소거 요청 세트가 저장될 수 있다.
따라서, 요청 세트 큐(2020)와 계류 요청 세트 큐(2050)에서 제1 내지 제8 저장 영역들(Q1~Q8, P1~P8)의 각 넘버(71)는 요청 세트(RS)가 출력되는 우선권일 수 있다. 즉, 저장 영역들의 넘버가 높을수록 요청 세트(RS)가 출력될 수 있는 우선권이 높아지며, 우선권이 가장 높은 요청 세트(RS)가 출력될 수 있다.
도 8은 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 8을 참조하면, 컨트롤러(1200)는 호스트 인터페이스(host I/F; 1210), 컨트롤러 큐(controller queue; 1220), 커맨드 변환부(CMD transfer; 1230) 및 낸드 인터페이스(NAND I/F; 1240)를 포함할 수 있다.
호스트 인터페이스(1210)는 컨트롤러(1200)와 호스트(2000) 사이에서 요청 세트(RS), 전송 요청 세트(RSs), 리드 아이디(RID), 완료 요청 세트(RSc) 또는 데이터(DATA)를 전송할 수 있다. 호스트 인터페이스(1210)는 호스트(2000)로부터 요청 세트(RS) 또는 전송 요청 세트(RSs)를 수신받으면, 수신된 요청 세트(RS) 또는 전송 요청 세트(RSs)를 컨트롤러 큐(1220)로 전송할 수 있다. 호스트 인터페이스(1210)는 리드 아이디(RID) 또는 데이터(DATA) 또는 완료 요청 세트(RSc)를 수신 받으면, 수신된 리드 아이디(RID) 또는 데이터(DATA) 또는 완료 요청 세트(RSc)를 호스트(2000)로 출력할 수 있다. 예를 들면, 호스트 인터페이스(1210)는 리드 아이디(RID)를 수신받으면, 수신된 리드 아이디(RID)를 호스트(2000)로 출력할 수 있다. 호스트 인터페이스(1210)는 데이터가 수신되면, 완료 요청 세트(RSc)와 함께 데이터(DATA)를 호스트(2000)로 출력할 수 있다.
컨트롤러 큐(1220)는 요청 세트(RS) 또는 전송 요청 세트((RSs)를 순차적으로 큐잉할 수 있으며, 큐잉된 요청 세트(RS) 또는 전송 요청 세트(RSs) 중에서 요청 세트(RS)를 커맨드 변환부(1230)로 전송할 수 있고, 전송 요청 세트(RSs)를 낸드 인터페이스(1240)로 전송할 수 있다.
커맨드 변환부(1230)는 컨트롤러 큐(1220)로부터 전송받은 요청 세트(RS)가 입력되면 커맨드(CMD)로 변환하고, 커맨드(CMD)를 낸드 인터페이스(1240)로 전송할 수 있다.
낸드 인터페이스(1240)는 컨트롤러(1200)와 메모리 장치(1100) 사이에서 전송 요청 세트(RSs), 커맨드(CMD), 리드 아이디(RID), 또는 데이터(DATA)를 전송할 수 있다. 예를 들면, 낸드 인터페이스(1240)는 메모리 장치(1100)로부터 리드 아이디(RID)를 수신받으면, 리드 아이디(RID)를 호스트 인터페이스(1210)로 전송할 수 있다. 낸드 인터페이스(1240)는 컨트롤러 큐(1220)로부터 전송 요청 세트(RSs)를 수신받으면, 메모리 장치(1100)로부터 수신된 데이터(DATA)를 호스트 인터페이스(1210)로 전송할 수 있다. 또한, 낸드 인터페이스(1240)는 커맨드 변환부(1230)로부터 수신받은 커맨드(CMD)를 메모리 장치(1100)로 전송할 수 있다.
도 9는 본 발명의 제1 실시 예에 따른 요청 세트 관리 방법을 설명하기 위한 순서도이다.
도 9를 참조하면, 제2 스케쥴러(도 5의 2060)는 계류 요청 세트 큐(도 5의 2050)의 저장 영역들이 가득 채워졌는지를 체크할 수 있다(S91). 예를 들면, 제2 스케쥴러(2060)는 계류 요청 세트 큐(2050)의 저장 영역들이 가득 채워지지 않은 것으로 판단되면 풀 신호(도 5의 FSIG)를 비활성화시키고, 저장 영역들이 가득 채워진 것으로 판단되면 풀 신호(FSIG)를 활성화시킬 수 있다.
제1 스케쥴러(도 5의 2030)는 계류 요청 세트 큐(2050)에 여분의 저장 영역이 있으면(NO) 풀 신호(FSIG)를 비활성화시키므로, 제1 스케쥴러(도 5의 2030)는 요청 세트 큐(도 5의 2020)에 저장된 순서대로 요청 세트들(RS) 또는 전송 요청 세트(RSs)를 메모리 시스템(도 5의 1000)으로 출력할 수 있다(S94).
S91 단계에서, 계류 요청 세트 큐(2050)의 저장 영역들이 가득 차면(YES) 제1 스케쥴러(2030)는 풀 신호(FSIG)를 활성화시키므로, 제1 스케쥴러(2030)는 계류 요청 세트 큐(2050)에서 우선권이 가장 높은 요청 세트(RS)를 체크할 수 있다(S92). 이어서, 제1 스케쥴러(2030)는 계류 요청 세트 큐(2050)에서 체크된 우선권이 가장 높은 요청 세트(RS)에 대응되는 전송 요청 세트(RSs)의 우선권을 가장 높게 변경할 수 있다(S93). 예를 들면, 제1 스케쥴러(2030)는 요청 세트 큐(2020)에 저장된 요청 세트들 중에서, S92 단계에서 체크된 요청 세트(RS)에 대응되는 전송 요청 세트(RSs)의 우선권을 가장 높게 변경할 수 있다. 요청 세트 큐(2020)에 저장된 요청 세트들(RS) 중에서 우선권이 가장 높은 요청 세트(RS)가 메모리 시스템(1000)으로 전송될 수 있다(S94).
요청 세트 큐(2020)에서 전송 요청 세트(RSs)가 출력되면, 메모리 시스템(1000)은 리드된 데이터와 완료 요청 세트를 호스트(2000)로 출력하므로, 계류 요청 세트 큐(2050)에 저장된 요청 세트들(RS) 중에서 완료 요청 세트에 대응되는 요청 세트(RS)는 제거될 수 있다.
상술한 요청 세트 관리 방법에 따라, 요청 세트 큐(2020) 및 계류 요청 큐(2050)에 큐잉된 요청 세트들을 구체적으로 설명하면 다음과 같다.
도 10a 내지 도 10d는 제1 실시 예에 따라 요청 세트 큐 및 계류 요청 큐에 큐잉된 요청 세트들의 우선권을 변경하는 방법을 설명하기 위한 도면들이다.
도 10a를 참조하면, 요청 세트 큐(2020)의 제1 내지 제8 저장 영역들(Q1~Q8)이 가득 차지 않은 경우, 요청 세트 큐(2020)에 입력되는 순서대로 우선권이 높은 저장 영역에 요청 세트들이 저장될 수 있다. 예를 들면, 비어있는 요청 세트 큐(2020)에 제1 요청 세트(1RS)가 입력되면, 제1 요청 세트(1RS)는 제8 저장 영역(Q8)에 저장될 수 있다. 다음으로 제2 요청 세트(2RS)가 입력되면, 제2 요청 세트(2RS)는 제7 저장 영역(Q7)에 저장될 수 있다. 제2 요청 세트(2RS)의 다음으로 제3 요청 세트(3RS)가 입력되면, 제3 요청 세트(3RS)는 제6 저장 영역(Q6)에 저장될 수 있다.
계류 요청 세트(2050)가 비어있는 경우, 요청 세트 큐(2020)에서 제1 요청 세트(1RS)가 메모리 시스템으로 출력될 때(101), 제1 요청 세트(1RS)는 계류 요청 세트(2050)의 제1 저장 영역(P1)에 동시에 저장될 수 있다(101).
도 10b를 참조하면, 요청 세트 큐(2020)에서 요청 세트가 출력되면, 출력된 요청 세트는 요청 세트 큐(2020)에서 제거될 수 있고, 계류 요청 세트(2050)에는 요청 세트 큐(2050)에서 출력된 요청 세트들이 누적되어 저장될 수 있다. 예를 들면, 요청 세트 큐(2020)에서 제1 및 제2 요청 세트들(1RS, 2RS)이 순차적으로 출력되면, 계류 요청 세트 큐(2050)에도 제1 및 제2 요청 세트들(1RS, 2RS)이 순차적으로 입력될 수 있다. 요청 세트 큐(2020)에 저장 영역들이 포함되어 있는 경우, 새로운 요청 세트들(4RS~6RS)이 계속 입력될 수 있다. 요청 세트 큐(2020)에서 제3 요청 세트(3RS)가 출력되면, 제3 요청 세트(3RS)는 메모리 시스템과 계류 요청 세트 큐(2050)에 동시에 전송될 수 있다(102).
도 10c를 참조하면, 메모리 시스템으로부터 리드 아이디(RID)가 수신되면(103), 제2 스케쥴러(2060)는 수신된 리드 아이디(RID)를 계류 요청 세트 큐(2050)에 저장된 리드 아이디(RID)와 비교하고(104), 수신된 리드 아이디(RID)와 동일한 리드 아이디(RID)를 포함하는 요청 세트를 찾을 수 있다(105). 예를 들면, 제1 요청 세트(1RS)가 제1 요청(1RQ)을 포함하고, ID02의 리드 아이디(RID)를 포함하는 경우, 수신된 리드 아이디(RID)에 응답하여 제1 요청 세트(1RS)가 선택될 수 있다. 제1 요청 세트(1RS)의 리드 아이디(RID)가 수신되었다는 것은 메모리 시스템이 제1 요청 세트(1RS)에 따라 리드된 데이터를 출력할 준비가 되었다는 것을 의미하므로, 제1 스케쥴러(2060)는 제1 요청 세트(1RS)에 대응되는 제1 전송 요청 세트(1RSs)를 생성할 수 있다. 제1 전송 요청 세트(1RSs)는 요청 세트 큐(2020)에 입력되어 제6 요청 세트(6RS) 다음으로 큐잉될 수 있다(106). 요청 세트 큐(2020)에 큐잉된 제1 전송 요청 세트(1RSs)는 우선권이 높은 제4 내지 제6 요청 세트들(4RS~6RS)이 모두 출력되어야만 제8 저장 영역(R8)으로 이동될 수 있다.
도 10d를 참조하면, 요청 세트 큐(2020)에서 제1 전송 요청 세트(1RSs)가 제8 저장 영역(Q8)으로 이동하면, 도 10c에서 출력된 제4 내지 제6 요청 세트들(4RS~6RS)은 메모리 시스템에 전송되고, 이와 동시에 계류 요청 세트(2050)에도 순차적으로 저장될 수 있다.
요청 세트 큐(2020)에서 제1 전송 요청 세트(1RSs)가 메모리 시스템으로 출력되면(107), 메모리 시스템은 제1 전송 요청 세트(1RSs)에 응답하여 데이터를 호스트로 출력할 수 있다. 이때, 메모리 시스템은 제1 완료 요청 세트(1RSc)를 호스트로 출력하며, 제1 완료 요청 세트(1RSc)는 제2 스케쥴러(2060)에 입력될 수 있다(108). 제2 스케쥴러(2060)는 계류 요청 세트 큐(2050)에서 제1 완료 요청 세트(1RSc)에 대응되는 제1 요청 세트(1RS)를 제거할 수 있다(109).
도 10d에서는 계류 요청 큐(2050)에 빈 저장 영역들이 있으므로, 요청 세트 큐(2020)에 큐잉된 제4 내지 제6 요청 세트들(4RS~6RS)이 순차적으로 출력된 후 제1 전송 요청 세트(1RSs)가 출력될 수 있다.
하지만, 요청 세트 큐(2020)에 큐잉된 제1 전송 요청 세트(1RSs)가 제8 저장 영역(Q8)으로 이동하기 이전에 계류 요청 세트 큐(2050)에 빈 저장 영역이 없는 경우, 요청 세트 큐(2020)에서 제1 전송 요청 세트(1RSs)의 출력이 차단될 수 있다. 이러한 경우를 설명하면 다음과 같다.
도 11은 요청 세트 큐에 큐잉된 요청 세트의 출력이 차단된 경우를 설명하기 위한 도면이다.
도 11을 참조하면, 요청 세트 큐(2020)에서 제1 전송 요청 세트(1RSs)보다 우선권이 높은 제9 요청 세트(9RS)가 포함되어 있고, 계류 요청 세트 큐(2050)에 빈 저장 영역이 없는 경우, 요청 세트 큐(2020)에서 제9 요청 세트(9RS)가 출력될 수 없다. 즉, 계류 요청 세트 큐(2050)에 빈 저장 영역이 없으면 요청 세트 큐(2020)에 큐잉된 제9 요청 세트(9RS)의 출력이 차단될 수 있다.
이러한 경우, 본 실시 예에서는 제1 전송 요청 세트(1RSs)의 우선권이 가장 높아지도록 일부 요청 세트들의 우선권을 변경할 수 있다. 우선권을 변경하는 방법을 구체적으로 설명하면 다음과 같다.
도 12a 내지 도 12c는 요청 세트의 차단된 출력을 해제시키는 방법을 설명하기 위한 도면들이다.
도 12a를 참조하면, 도 5에 도시된 장치들 중에서 요청 세트의 차단된 출력을 해제하는 데 사용되는 장치들만 도시된다. 요청 세트 판단부(2070)는 계류 요청 세트 큐(2050)에 빈 저장 영역이 없는 것으로 판단되면, 요청 세트 큐(2050)에 계류중인 요청 세트들 중에서 우선권이 가장 높은 요청 세트(RS)를 찾는다(121). 이어서, 요청 세트 판단부(2070)는 계류 요청 세트 큐(2050)에서 찾아진 요청 세트(RS)에 대한 요청 정보(IFRS)를 제1 스케쥴러(2030)에 전송할 수 있다(122).
제1 스케쥴러(2030)는 요청 세트 큐(2020)에서 요청 정보(IFRS)를 토대로 우선권을 변경할 요청 세트를 찾고, 찾아진 요청 세트의 우선권을 가장 높게 변경할 수 있다(123). 예를 들면, 요청 세트 큐(2020)의 제7 저장 영역(Q7)에 제1 전송 요청 세트(1RSs)가 저장되고, 제8 저장 영역(Q8)에 제9 요청 세트(9RS)가 저장된 경우(도 12b 참조), 제1 스케쥴러(2030)는 요청 정보(IFRS)에 따라 제1 전송 요청 세트(1RSs)와 제9 요청 세트(9RS)의 우선권을 서로 바꿀 수 있다. 즉, 제9 요청 세트(9RS)를 제7 저장 영역(Q7)에 저장하고, 제1 전송 요청 세트(1RSs)를 제8 저장 영역(Q8)에 저장하여(123), 제1 전송 요청 세트(1RSs) 의 우선권을 가장 높게 변경할 수 있다. 제1 전송 요청 세트(1RSs)는 계류 요청 세트 큐(2050)에 전송되지 아니하므로, 요청 세트 큐(2020)에서 제1 전송 요청 세트(1RSs)는 출력될 수 있다(124).
메모리 인터페이스(2040)는 요청 세트 큐(2020)로부터 전송 요청 세트(RSs)를 수신받으면, 수신된 전송 요청 세트(RSs)를 메모리 시스템으로 출력할 수 있다(125).
메모리 시스템은 전송 요청 세트(RSs)에 응답하여 리드된 데이터(DATA) 및 완료 요청 세트(RSc)를 출력할 수 있다.
메모리 인터페이스(2040)는 수신된 데이터(DATA)를 데이터를 처리하는 장치(미도시)로 전송하고, 완료 요청 세트(RSc)를 제2 스케쥴러(2060)로 전송할 수 있다(128).
제2 스케쥴러(2060)는 완료 요청 세트(RSc)에 대응되는 요청 세트를 계류 요청 세트 큐(2050)에서 찾고, 찾아진 요청 세트를 계류 요청 세트 큐(2050)의 저장 영역에서 제거할 수 있다. 계류 요청 세트(2050)에 빈 저장 영역이 포함되므로, 요청 세트 큐(2020)에 큐잉된 다음 요청 세트가 출력될 수 있다. 예를 들면, 제1 완료 요청 세트(1RSc)는 제1 요청 세트(1RS)의 동작이 완료되었다는 것을 의미하므로, 제2 스케쥴러(2060)는 제1 완료 요청 세트(1RSc)에 따라 계류 요청 세트 큐(2050)의 제1 요청 세트(1RS)를 제거할 수 있다(도 12c 참조). 계류 요청 세트 큐(2050)에서 제1 요청 세트(1RS)가 제거되면, 나머지 제2 내지 제8 요청 세트들(2RS~8RS)은 우선권이 높은 저장 영역들로 하나씩 이동될 수 있다. 따라서, 제1 저장 영역(P1)이 빈 영역이 되므로, 요청 세트 큐(2020)에서 우선권이 가장 높은 제9 요청 세트(9RS)가 출력될 수 있고, 계류 요청 세트 큐(2050)의 제1 저장 영역(P1)에는 제9 요청 세트(9RS)가 저장될 수 있다.
상술한 제1 실시 예에서는 계류 요청 세트(2050)에 큐잉된 요청 세트들 중에서 우선권이 가장 높은 요청 세트에 대응되는 전송 요청 세트의 우선권이 변경되었다. 후술하는 제2 실시 예에서는 계류 요청 세트들의 병합 카운트 값을 토대로 전송 요청 세트들의 우선권을 변경하는 방법이 설명된다.
도 13은 본 발명의 제2 실시 예에 따른 요청 세트의 관리 방법을 설명하기 위한 순서도이다.
도 13을 참조하면, 제2 스케쥴러(도 5의 2060)는 계류 요청 세트 큐(도 5의 2050)의 저장 영역들이 가득 채워졌는지를 체크할 수 있다(S131). 예를 들면, 제2 스케쥴러(2060)는 계류 요청 세트 큐(2050)의 저장 영역들이 가득 채워지지 않은 것으로 판단되면 풀 신호(도 5의 FSIG)를 비활성화시키고, 저장 영역들이 가득 채워진 것으로 판단되면 풀 신호(FSIG)를 활성화시킬 수 있다.
제1 스케쥴러(도 5의 2030)는 계류 요청 세트 큐(2050)에 여분의 저장 영역이 있으면(NO) 풀 신호(FSIG)를 비활성화시키므로, 제1 스케쥴러(2030)는 요청 세트 큐(도 5의 2020)에 저장된 순서대로 요청 세트들(RS) 또는 전송 요청 세트(RSs)를 메모리 시스템(도 5의 1000)으로 출력할 수 있다(S134).
계류 요청 세트 큐(2050)에 여분의 저장 영역이 없으면(YES), 제2 스케쥴러(도 5의 2060)는 계유 요청 세트 큐(2050)에 큐잉된 요청 세트들의 병합 카운트 값(MCV)을 체크하고, 가장 낮은 병합 카운트 값을 가지는 요청 세트를 선택할 수 있다(S132). 병합 카운트 값(MCV)은 병합된 요청들의 개수를 나타내므로, 요청들이 병합되지 아니한 요청 세트에서는 1의 값을 가지고, 요청들이 병합된 요청 세트에서는 2 이상의 값을 가질 수 있다. 예를 들면, 2 개의 요청들이 병합되면 병합 카운트 값(MCV)은 2가 되고, 4 개의 요청들이 병합되면 병합 카운트 값(MCV)은 4가 된다.
제2 스케쥴러(2060)는 가장 낮은 병합 카운트 값(MCV)을 가지는 요청 세트(RS)에 대한 요청 정보(IFRS)를 수신하고, 수신된 요청 정보(IFRS)에 따라 선택된 전송 요청 세트(RSs)의 우선권을 가장 높게 변경할 수 있다(S133).
이어서, 제2 스케쥴러(2060)는 변경된 우선권에 따라 전송 요청 세트(RSs)를 출력할 수 있다(S134). 전송 요청 세트(RSs)는 메모리 인터페이스(도 5의 2040)를 통하여 메모리 시스템으로 전송될 수 있다.
상술한 제2 실시 예에 따라 전송 요청 세트의 우선권을 변경 방법을 구체적으로 설명하면 다음과 같다.
도 14a 및 도 14b는 제2 실시 예에 따라 요청 세트 큐에 큐잉된 전송 요청 세트들의 우선권을 변경하는 방법을 설명하기 위한 도면들이다.
도 14a를 참조하면, 계류 요청 세트 큐(2050)에 저장된 요청 세트들(1RS~8RS)에는 병합 카운트 값(MCV)이 저장된다. 병합 카운트 값(MCV)은 병합된 요청들의 개수이므로, 요청 세트에 포함된 요청들의 개수일 수 있다. 따라서, 병합 카운트 값(MCV)이 1인 요청 세트는 하나의 요청이 포함된 요청 세트이므로, 요청들이 병합되지 않은 요청 세트일 수 있다. 병합 카운트 값(MCV)이 3이면, 해당 요청 세트는 세 개의 요청들이 병합된 요청 세트일 수 있다. 따라서, 병합 카운트 값(MCV)이 낮을수록 메모리 시스템에서 수행되는 리드 동작의 개수가 적으므로, 리드된 데이터를 출력하는 데 걸리는 시간이 적을 수 있다.
도 14b를 참조하면, 계류 요청 세트 큐(2050)의 저장 영역들이 가득 차면, 요청 세트 판단부(2070)는 병합 카운트 값(MCV)이 낮은 순서대로 요청 세트(RS)의 정보를 수신받고, 수신받은 요청 세트(RS)의 정보에 따라 요청 정보(IFRS)를 순차적으로 출력할 수 있다. 이때, 병합 카운트 값(MCV)이 서로 동일한 요청 세트들(RS)이 있으면, 우선권이 높은 순서대로 선택될 수 있다. 도 14b에 도시된 바와 같이 계류 요청 세트 큐(2050)에 제1 내지 제8 요청 세트들(1RS~8RS)의 병합 카운트 값들(MCV)이 저장된 경우를 예를 들어 설명하면, 제4 요청 세트(4RS)와 제8 요청 세트(8RS)의 병합 카운트 값(MCV)이 1이고, 제4 요청 세트(4RS)의 우선권은 5이고 제8 요청 세트(8RS)의 우선권은 1 이므로, 제4 요청 세트(4RS)에 대응되는 제4 전송 요청 세트(4RSs)의 우선권이 가장 높게 변경될 수 있다. 제8 요청 세트(8RS)에 대응되는 제8 전송 요청 세트(8RSs)는 제4 전송 요청 세트(4RSs) 다음으로 높은 우선권으로 변경될 수 있다.
이러한 방식으로 우선권이 높은 순서대로 제4, 제8, 제3, 제6, 제1, 제2, 제5 및 제7 전송 요청 세트들(4RSs, 8RSs, 3RSs, 6RSs, 1RSs, 2RSs, 5RSs 및 7RSs)의 우선권들이 변경될 수 있다.
도 14a 및 도 14b에서는 요청 세트 큐(2020)에 전송 요청 세트들만 큐잉된 것으로 도시되었으나, 전송 요청 세트 외에도 리드, 프로그램 또는 소거 동작에 대한 요청 세트들이 큐잉될 수도 있다. 이 때에도, 계류 요청 세트 큐(2050)에서 병합 카운트 값(MCV)이 가장 낮은 요청 세트(RS)에 대응되는 전송 요청 세트(RSs)의 우선권이 가장 높게 변경될 수 있다.
10000: 전자 시스템 1000: 메모리 시스템
1100: 메모리 장치 1200: 컨트롤러
2000: 호스트 2010: 요청 병합 관리부
2020: 요청 세트 큐 2030: 제1 스케쥴러
2040: 메모리 인터페이스 2050: 계류 요청 세트 큐
2060: 제2 스케쥴러 2070: 요청 세트 판단부

Claims (20)

  1. 수신되는 어드레스들 및 요청들에 따라 요청 세트들을 생성하며, 상기 어드레스들이 연속적이면 상기 연속적인 어드레스들 각각에 대응되는 요청들(requests)을 병합하여 하나의 요청 세트(request set)를 생성하는 요청 병합 관리부;
    상기 요청 세트들과 리드된 데이터를 전송하기 위한 전송 요청 세트들을 저장하고, 상기 요청 세트들 및 상기 전송 요청 세트들의 우선권(priority)에 따라 상기 요청 세트들 및 상기 전송 요청 세트들을 순차적으로 출력하는 요청 세트 큐;
    상기 요청 세트들 및 상기 전송 요청 세트들의 상기 우선권을 조절하는 제1 스케쥴러;
    데이터를 저장할 수 있는 메모리 시스템에서 상기 요청 세트들의 동작이 완료될 때까지 상기 요청 세트들을 저장하는 계류 요청 세트 큐;
    상기 메모리 시스템에 출력된 요청 세트에 대한 리드 아이디에 응답하여 상기 전송 요청세트를 생성하고, 상기 전송 요청 세트를 상기 요청 세트 큐에 전송하는 제2 스케쥴러; 및
    상기 계류 요청 세트 큐가 가득 차면, 상기 계류 요청 세트 큐에서 상기 우선권이 가장 높은 요청 세트에 대한 요청 정보를 상기 제1 스케쥴러에 전송하는 요청 세트 판단부를 포함하고,
    상기 제1 스케쥴러는 상기 전송 요청 세트들 중에서 상기 요청 정보에 대응되는 전송 요청 세트의 우선권을 가장 높게 변경하는 것을 특징으로 하는 호스트.
  2. 제1항에 있어서, 상기 요청 병합 관리부는,
    순차적으로 수신되는 상기 어드레스들이 불연속적이면, 상기 불연속적인 어드레스들 각각에 대응되는 요청들에 대한 요청 세트를 각각 생성하는 호스트.
  3. 제1항에 있어서, 상기 요청 병합 관리부는,
    상기 연속적인 어드레스들 각각에 대응되는 상기 요청들이 서로 동일한 요청이면 상기 요청들을 병합하고,
    상기 어드레스들이 서로 연속되더라도, 어드레스들 각각에 대응되는 상기 요청들이 서로 다르면 상기 요청들 각각에 대한 요청 세트들을 생성하는 호스트.
  4. 제1항에 있어서, 상기 요청 병합 관리부는,
    상기 요청, 상기 어드레스, 병합 카운트 값 및 리드 아이디를 포함하는 상기 요청 세트를 생성하는 호스트.
  5. 제4항에 있어서, 상기 요청 병합 관리부는,
    복수의 상기 요청들을 하나의 상기 요청 세트로 병합하는 경우, 상기 병합된 요청들 각각에 대응되는 어드레스들을 상기 요청 세트에 포함시키는 호스트.
  6. 제4항에 있어서, 상기 요청 병합 관리부는,
    상기 요청 세트에 병합된 상기 요청들의 개수를 상기 병합 카운트 값으로 설정하는 호스트.
  7. 제1항에 있어서, 상기 요청 세트 큐는,
    상기 요청 세트를 저장할 수 있는 저장부(storage)를 포함하는 호스트.
  8. 제7항에 있어서,
    상기 저장부는 복수의 저장 영역들을 포함하고,
    상기 복수의 저장 영역들 각각에는 서로 다른 상기 우선권이 부여되는 호스트.
  9. 제1항에 있어서, 상기 계류 요청 세트는,
    상기 요청 세트 큐에서 출력된 상기 요청 세트들을 순차적으로 저장할 수 있는 저장부(storage)를 포함하는 호스트.
  10. 제9항에 있어서,
    상기 저장부는 복수의 저장 영역들을 포함하고,
    상기 복수의 저장 영역들 각각에는 서로 다른 우선권이 부여되는 호스트.
  11. 제1항에 있어서,
    상기 제2 스케쥴러는 상기 계류 요청 세트가 가득 차면 풀 신호를 활성화시키고,
    상기 제1 스케쥴러는 상기 풀 신호가 활성화되면, 상기 요청 정보에 대응되는 상기 전송 요청 세트의 우선권을 가장 높게 변경하는 호스트.
  12. 제11항에 있어서,
    상기 제2 스케쥴러는 상기 계류 요청 세트에 여분의 저장 영역이 포함되면 상기 풀 신호를 비활성화시키고,
    상기 제1 스케쥴러는 상기 풀 신호가 비활성화되면, 상기 요청 세트 큐의 우선권에 따라 상기 요청 세트들 및 상기 전송 요청 세트들을 순차적으로 출력하는 호스트.
  13. 제1항에 있어서,
    상기 요청 세트 큐에서 출력되는 상기 요청 세트들 및 상기 전송 요청 세트들을 상기 메모리 시스템으로 출력하거나, 상기 메모리 시스템으로부터 수신된 상기 리드 아이디를 상기 제2 스케쥴러에게 전송하는 메모리 인터페이스를 더 포함하는 호스트.
  14. 제13항에 있어서,
    상기 메모리 인터페이스는 상기 메모리 시스템으로부터 상기 요청 세트의 실행이 완료되었다는 완료 요청 신호를 수신하면, 상기 완료 요청 신호를 상기 제2 스케쥴러로 전송하고,
    상기 제2 스케쥴러는 상기 완료 요청 신호에 대응되는 요청 신호를 큐에서 제거하는 호스트.
  15. 데이터를 저장할 수 있는 메모리 시스템; 및
    요청 세트 큐에 큐잉된 요청 세트들을 상기 메모리 시스템으로 출력하고, 상기 메모리 시스템에서 상기 요청 세트들에 대응되는 동작이 진행되는 동안 상기 요청 세트들을 저장하는 계류 요청 세트 큐를 포함하는 호스트를 포함하고,
    상기 호스트는,
    상기 계류 요청 세트 큐가 가득 차면, 상기 요청 세트 큐에 큐잉된 전송 요청 세트의 우선권을 높이는 것을 특징으로 하는 전자 시스템.
  16. 제15항에 있어서, 상기 호스트는,
    상기 요청 세트 큐에 저장된 상기 요청 세트들 중에서 선택된 요청 세트를 상기 메모리 시스템으로 출력할 때, 상기 선택된 요청 세트를 상기 계류 요청 세트 큐에 저장하는 전자 시스템.
  17. 제16항에 있어서,
    상기 메모리 시스템은, 상기 요청 세트에 따라 데이터를 리드하면, 상기 요청 세트에 대응되는 리드 아이디를 상기 호스트로 전송하고,
    상기 호스트는, 상기 리드 아이디가 수신되면, 상기 요청 세트 큐에 상기 전송 요청 세트를 큐잉하는 전자 시스템.
  18. 제17항에 있어서,
    상기 호스트는, 상기 요청 세트 큐에 큐잉된 상기 전송 요청 세트를 상기 메모리 시스템으로 전송하고,
    상기 메모리 시스템은, 상기 전송 요청 세트에 응답하여, 상기 리드된 데이터와 완료 요청 세트를 상기 호스트로 전송하는 전자 시스템.
  19. 제18항에 있어서,
    상기 호스트는, 상기 계류 요청 세트 큐에서 상기 완료 요청 커맨드에 대응되는 요청 세트를 제거하는 전자 시스템.
  20. 제15항에 있어서, 상기 호스트는,
    어드레스들이 연속적이면, 상기 연속적인 어드레스들 각각에 대응되는 요청들을 병합하여 상기 요청 세트들을 생성하고,
    상기 어드레스들이 불연속적이면, 상기 불연속적인 어드레스들에 대응되는 요청들을 각각포함하는 상기 요청 세트들을 생성하는 전자 시스템.
KR1020200031537A 2020-03-13 2020-03-13 호스트 및 메모리 시스템을 포함하는 전자 시스템 KR20210115576A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200031537A KR20210115576A (ko) 2020-03-13 2020-03-13 호스트 및 메모리 시스템을 포함하는 전자 시스템
US16/999,953 US11556278B2 (en) 2020-03-13 2020-08-21 Electronic system having memory system and host for managing request set queue
CN202010962885.9A CN113392047B (zh) 2020-03-13 2020-09-14 具有主机和存储器系统的电子系统
US18/066,112 US11868664B2 (en) 2020-03-13 2022-12-14 Electronic system having memory system and host for managing request set queue

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200031537A KR20210115576A (ko) 2020-03-13 2020-03-13 호스트 및 메모리 시스템을 포함하는 전자 시스템

Publications (1)

Publication Number Publication Date
KR20210115576A true KR20210115576A (ko) 2021-09-27

Family

ID=77616471

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200031537A KR20210115576A (ko) 2020-03-13 2020-03-13 호스트 및 메모리 시스템을 포함하는 전자 시스템

Country Status (3)

Country Link
US (2) US11556278B2 (ko)
KR (1) KR20210115576A (ko)
CN (1) CN113392047B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220374149A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Low latency multiple storage device system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
TWI447646B (zh) * 2011-11-18 2014-08-01 Asmedia Technology Inc 資料傳輸裝置及多個指令的整合方法
US10402120B2 (en) 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller arbiter with streak and read/write transaction management
KR102327878B1 (ko) 2017-11-07 2021-11-17 삼성전자주식회사 반도체 장치 및 반도체 시스템
US11403229B2 (en) * 2019-05-24 2022-08-02 Texas Instruments Incorporated Methods and apparatus to facilitate atomic operations in victim cache
US20210117127A1 (en) * 2019-10-16 2021-04-22 Qualcomm Incorporated Efficient command queue in universal flash storage (ufs)

Also Published As

Publication number Publication date
US20210286557A1 (en) 2021-09-16
CN113392047A (zh) 2021-09-14
US11556278B2 (en) 2023-01-17
US11868664B2 (en) 2024-01-09
CN113392047B (zh) 2024-04-26
US20230120263A1 (en) 2023-04-20

Similar Documents

Publication Publication Date Title
US11875056B2 (en) Controller for managing commands with zone identifications and memory system having the same
US11698748B2 (en) Memory comprising memory controller configured to determine a logical address of a target zone system and method of operating the memory controller
CN110413222B (zh) 数据存储装置及其操作方法
EP3663926B1 (en) Open channel solid state drive, nonvolatile memory system including the same and method of power loss protection of open channel solid state drive
CN114063897B (zh) 存储器控制器及其操作方法
US11295824B2 (en) Memory controller and storage device including the same
CN110096222B (zh) 存储器系统及存储器系统的操作方法
US10885995B2 (en) Memory controller, memory system including memory controller, method of operating memory controller
CN111666223B (zh) 控制器、包括控制器的存储器系统和操作该系统的方法
US11868664B2 (en) Electronic system having memory system and host for managing request set queue
TWI813669B (zh) 資料儲存裝置及其操作方法
CN113470714A (zh) 半导体存储器设备和操作半导体存储器设备的方法
CN110162485B (zh) 存储系统及其操作方法
US20130173852A1 (en) Memory system
US11656793B2 (en) Controller for managing cache data, memory system including the same, and method performed by the same
KR20210099943A (ko) 메모리 시스템 및 그것의 동작 방법
US11972128B2 (en) Memory controller and method of operating the same
CN114253468B (zh) 控制器及具有控制器的电子系统
US20240201900A1 (en) Memory device and storage device including the same
US20210118517A1 (en) Memory device
KR20220092215A (ko) 메모리 컨트롤러를 포함하는 메모리 시스템
CN113257318A (zh) 存储器系统及其操作方法
CN118136076A (zh) 非易失性存储器装置和存储装置
KR20210051466A (ko) 메모리 시스템 및 그것의 동작 방법