KR20200129700A - 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20200129700A
KR20200129700A KR1020190054502A KR20190054502A KR20200129700A KR 20200129700 A KR20200129700 A KR 20200129700A KR 1020190054502 A KR1020190054502 A KR 1020190054502A KR 20190054502 A KR20190054502 A KR 20190054502A KR 20200129700 A KR20200129700 A KR 20200129700A
Authority
KR
South Korea
Prior art keywords
data
output
command
input
output unit
Prior art date
Application number
KR1020190054502A
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 KR1020190054502A priority Critical patent/KR20200129700A/ko
Priority to US16/727,417 priority patent/US11455186B2/en
Priority to CN201911400662.7A priority patent/CN111913654B/zh
Publication of KR20200129700A publication Critical patent/KR20200129700A/ko
Priority to US17/868,430 priority patent/US20220350655A1/en

Links

Images

Classifications

    • 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/1668Details of memory controller
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/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
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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
    • 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/1028Power efficiency
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 기술은 노말 커맨드들을 큐잉하고, 서스펜드 커맨드가 입력되면, 상기 서스펜드 커맨드에 우선 순위를 부여하는 커맨드 큐 스케줄러; 상기 커맨드 큐 스케줄러에서 출력된 데이터 출력 신호에 응답하여 데이터를 출력하고, 데이터 출력 정지 신호에 응답하여 데이터 출력을 중단하는 데이터 입출력 부; 및 상기 데이터 입출력 부에 입력된 데이터를 다수의 데이터 그룹들로 구분하고, 상기 데이터 입출력 부에서 현재 출력된 데이터가 포함된 데이터 그룹의 정보를 모니터링하는 데이터 모니터를 포함하고, 상기 데이터 입출력 부는 상기 데이터 출력 정지 신호에 응답하여, 현재 출력되는 상기 데이터 그룹에 포함된 데이터까지 출력한 후 데이터 출력을 중지하고, 상기 커맨드 큐 스케줄러는 상기 데이터 그룹의 출력이 중단되면, 상기 서스펜드 커맨드를 출력하는 컨트롤러 및 이를 포함하는 메모리 시스템을 포함한다.

Description

컨트롤러 및 이를 포함하는 메모리 시스템{Controller and memory system having the same}
본 발명은 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 서스펜드 커맨드에 응답하여 서스펜드 동작을 실행하는 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템(memory system)은 메모리 장치(memory device) 및 컨트롤러(controller)를 포함할 수 있다.
메모리 장치는 데이터를 저장할 수 있는 다수의 다이들(dies)을 포함할 수 있다. 다이들에 포함되는 메모리 셀들은 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 셀들로 구현되거나, 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 셀들로 구현될 수 있다.
컨트롤러는 호스트(host)와 메모리 장치 사이에서 데이터 통신을 제어할 수 있다. 예를 들면, 컨트롤러는 호스트의 요청(request)에 따라 메모리 장치를 제어할 수 있다. 또한, 컨트롤러는 호스트의 요청이 없더라도 메모리 시스템의 성능을 향상시키기 위하여 백그라운드 동작(background operation)을 수행할 수도 있다.
호스트는 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) 등과 같은 다양한 인터페이스들이 포함될 수 있다.
본 발명의 실시예는 서스펜드 커맨드의 실행 지연을 방지할 수 있는 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시예에 따른 컨트롤러는, 노말 커맨드들을 큐잉하고, 서스펜드 커맨드가 입력되면, 상기 서스펜드 커맨드에 우선 순위를 부여하는 커맨드 큐 스케줄러; 상기 커맨드 큐 스케줄러에서 출력된 데이터 출력 신호에 응답하여 데이터를 출력하고, 데이터 출력 정지 신호에 응답하여 데이터 출력을 중단하는 데이터 입출력 부; 및 상기 데이터 입출력 부에 입력된 데이터를 다수의 데이터 그룹들로 구분하고, 상기 데이터 입출력 부에서 현재 출력된 데이터가 포함된 데이터 그룹의 정보를 모니터링하는 데이터 모니터를 포함하고, 상기 데이터 입출력 부는 상기 데이터 출력 정지 신호에 응답하여, 현재 출력되는 상기 데이터 그룹에 포함된 데이터까지 출력한 후 데이터 출력을 중지하고, 상기 커맨드 큐 스케줄러는 상기 데이터 그룹의 출력이 중단되면, 상기 서스펜드 커맨드를 출력한다.
본 발명의 실시예에 따른 메모리 시스템은, 동일한 채널에 연결되며 데이터가 저장될 수 있는 제1 및 제2 다이들; 호스트로부터 수신된 요청에 따라, 제1 커맨드 또는 상기 제1 커맨드보다 우선 순위가 높은 제2 커맨드를 출력하는 중앙 처리 장치; 및 상기 제1 커맨드에 따라 상기 제1 다이에 데이터를 출력하는 플래시 인터페이스 계층을 포함하고, 상기 플래시 인터페이스 계층은, 상기 데이터를 다수의 데이터 그룹들로 구분하고, 상기 제2 커맨드가 입력되면, 현재 출력되는 데이터가 포함된 데이터 그룹까지 데이터를 출력한 후, 상기 제2 커맨드를 상기 제2 커맨드에 출력하고, 상기 제2 커맨드의 실행이 종료되면, 출력이 완료된 데이터 그룹의 다음 순번의 데이터 그룹에 포함된 데이터를 상기 제1 다이에 출력한다.
본 기술은 프로그램 동작 중에 서스펜드 커맨드가 수신되면, 컨트롤러는 다수의 그룹들로 구분된 데이터 그룹들 중에서 현재 전송중인 데이터 그룹까지 메모리 장치로 전송하고, 서스펜드 커맨드를 실행함으로써, 현재 진행중인 동작으로 인한 서스펜드 커맨드의 실행 지연을 방지할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면이다.
도 3은 멀티 채널(multi channel) 방식에서 커맨드 실행 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 5는 플래시 인터페이스 계층의 구성을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 중앙 처리 장치를 설명하기 위한 도면이다.
도 7은 채널 스케줄러의 기능을 설명하기 위한 도면이다.
도 8은 어드레스 테이블을 설명하기 위한 도면이다.
도 9는 플래시 인터페이스를 설명하기 위한 도면이다.
도 10 내지 12는 커맨드 큐 스케줄러가 서스펜드 커맨드를 큐잉하는 방법을 설명하기 위한 도면들이다.
도 13은 본 발명의 실시예에 따른 데이터 그룹 설정 방법을 설명하기 위한 도면이다.
도 14는 일반적인 서스펜드 커맨드 처리 방법을 설명하기 위한 도면이다.
도 15는 본 발명의 실시예에 따른 서스펜드 커맨드 처리 방법을 설명하기 위한 도면이다.
도 16은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 17은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19는 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터가 저장되는 메모리 장치(Memory Device; 1100)와, 메모리 장치(1100)를 제어하는 컨트롤러(Controller; 1200)를 포함할 수 있다.
메모리 장치(1100)는 다수의 다이들(dies; D1~Di; i는 양의 정수)을 포함할 수 있다. 다이들(D1~Di)은 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치(volatile memory device) 또는 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치(non-volatile memory device)로 구현될 수 있다. 이하 실시예에서는 비휘발성 메모리 장치로 구현된 다이들(D1~Di)이 포함된 메모리 시스템을 예를 들어 설명하도록 한다. 비휘발성 메모리 장치는 낸드 플래시 메모리 장치(NAND Flash memory device)일 수 있다.
메모리 장치(1100)는 다수의 채널들(channels; CH1~CHk; k는 양의 정수)을 통해 컨트롤러(1200)와 통신할 수 있다. 예를 들면, 메모리 장치(1100)에 포함된 다이들(D1~Di)은 채널들(CH1~CHk)을 통해 컨트롤러(1200)로부터 커맨드, 어드레스 및 데이터 등을 전송받을 수 있고, 컨트롤러(1200)로 데이터를 출력할 수 있다.
컨트롤러(1200)는 호스트(2000)로부터 수신된 요청(request)에 따라 메모리 장치(1100)를 제어할 수 있으며, 메모리 장치(1100)에서 리드된 데이터를 호스트(2000)로 출력할 수 있다. 예를 들면, 컨트롤러(1200)는 호스트(2000)로부터 프로그램 요청 및 데이터를 수신 받으면, 수신된 데이터를 메모리 장치(1100)에 저장할 수 있다. 컨트롤러(1200)는 호스트(2000)로부터 리드 요청 및 논리 어드레스(logical address)를 수신 받으면, 논리 어드레스에 맵핑된 물리 어드레스(physical address)에 따라 리드 동작을 수행하고, 리드된 데이터를 호스트(2000)로 출력할 수 있다.
컨트롤러(1200)는 호스트(2000)의 요청이 없더라도 메모리 장치(1100)를 관리할 수 있는 백그라운드 동작(background operation)을 수행할 수 있다. 예를 들면, 컨트롤러(1200)는 가비지 콜렉션(garbage collection) 및 웨어 레벨링(wear leveling) 등의 기능을 수행할 수 있으며, 이 외에도 메모리 장치(1100)를 효율적으로 관리하기 위한 다양한 기능을 수행할 수 있다.
또한, 컨트롤러(1200)는 호스트(2000)로부터 서스펜드 요청(suspend request)을 수신 받으면, 서스펜드 요청에 대응되는 서스펜드 커맨드를 생성할 수 있다. 즉, 서스펜드 커맨드는 노말 커맨드보다 우선 순위가 높은 커맨드일 수 있다. 예를 들면, 서스펜트 커맨드는 리드 커맨드일 수 있고, 노말 커맨드는 프로그램 커맨드 또는 소거 커맨드일 수 있다. 선택된 채널이 프리(free)한 경우, 컨트롤러(1200)는 선택된 채널을 통해 선택된 다이에게 서스펜드 커맨드를 바로 전송할 수 있다.
선택된 채널이 비지(busy)한 경우, 컨트롤러(1200)는 선택된 채널에서 현재 실행중인 커맨드의 다음 순서에서 서스펜드 커맨드가 실행될 수 있도록 커맨드들을 큐잉(queueing)할 수 있다. 이때, 컨트롤러(1200)가 선택된 채널을 통해 다른 다이(die)에게 프로그램 데이터를 전송 중이라면, 컨트롤러(1200)는 현재 전송중인 데이터 그룹까지만 다른 다이에게 전송하고, 서스펜드 커맨드를 선택된 다이에게 전송할 수 있다.
선택된 다이에게 서스펜드 커맨드가 전송되면, 컨트롤러(1200)는 프로그램 데이터 전송 동작이 중단된 다른 다이에게 프로그램 커맨드, 물리 어드레스 및 프로그램 데이터를 다시 전송할 수 있다. 이때, 컨트롤러(1200)는 이미 전송된 데이터를 다시 전송하는 것이 아니라, 아직 전송되지 않은 데이터부터 전송할 수 있다. 이를 위해, 컨트롤러(1200)는 프로그램 동작 시, 프로그램 데이터를 다수의 그룹들로 구분하고, 현재 전송중인 데이터가 어떤 데이터 그룹에 포함되는지 판단할 수 있다. 이에 따라, 메모리 시스템(1000)은 선택된 다이의 서스펜드 커맨드 실행 지연을 방지할 수 있으며, 다른 다이의 재개(resume) 동작 시간을 단축할 수 있다.
호스트(2000)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI) 또는 NVMe(Non-Volatile Memory Express)와 같은 인터페이스 프로토콜을 사용하여 메모리 시스템(1000)과 통신할 수 있다. 인터페이스 프로토콜은 상술한 예에 한정되지 않으며, 호스트(2000)는 USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같이 다양한 프로토콜을 통해 메모리 시스템(1000)과 통신할 수 있다.
도 2는 도 1에 도시된 다이(die)를 설명하기 위한 도면이다.
도 2를 설명하면, 다이(Di)는 데이터가 저장되는 메모리 셀 어레이(Memory Cell Array; 110)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로들(120~160)과, 주변 회로들(120~160)을 제어하는 로직 회로(170)를 포함할 수 있다.
메모리 셀 어레이(110)는 데이터가 저장되는 다수의 메모리 블록들을 포함할 수 있다. 메모리 블록들 각각은 다수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다.
주변 회로들(120~160)은 전압 생성부(Voltage Generator; 120), 로우 디코더(Row Decoder; 130), 페이지 버퍼 그룹(Page Buffer Group; 140), 컬럼 디코더(Column Decoder; 150) 및 입출력 회로(Input/output Circuit; 160)를 포함할 수 있다.
전압 생성부(120)는 동작 신호(OPS)에 응답하여 다양한 동작들에 필요한 동작 전압들(Vop)을 생성 및 출력할 수 있다. 예를 들면, 전압 생성부(120)는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 및 소거 전압 등을 생성하고 출력할 수 있다.
로우 디코더(130)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(110)에 포함된 메모리 블록들 중에서 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 동작 전압들(Vop)을 전송할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines)을 통해 메모리 셀 어레이(110)에 연결될 수 있으며, 비트 라인들에 연결된 다수의 페이지 버퍼들을 포함할 수 있다. 다수의 페이지 버퍼들은 페이지 버퍼 제어 신호(PBSIG)에 응답하여 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다. 이를 위해, 페이지 버퍼들은 데이터를 임시로 저장하기 위한 다수의 래치들(latches)을 포함할 수 있다. 예를 들면, 프로그램 동작 시 채널(CHk)을 통해 수신된 데이터는 페이지 버퍼들에 임시로 저장된 후 프로그램될 수 있으며, 리드 동작 시 메모리 셀 어레이(110)로부터 리드된 데이터도 페이지 버퍼들에 임시로 저장된 후 출력될 수 있다.
컬럼 디코더(150)는 컬럼 어드레스(CADD)에 응답하여 입출력 회로(160)로부터 수신된 데이터를 페이지 버퍼 그룹(140)에 포함된 페이지 버퍼들에 순차적으로 전송하거나, 페이지 버퍼들로부터 수신된 데이터를 입출력 회로(160)에 순차적으로 전송할 수 있다.
입출력 회로(160)는 채널(CHk)의 입출력 라인들을 통해 컨트롤러(1200)에 연결될 수 있으며, 입출력 라인들을 통해 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력 할 수 있다. 예를 들면, 입출력 회로(160)는 컨트롤러(1200)로부터 수신된 커맨드(CMD) 및 어드레스(ADD)를 로직 회로(170)에 전송할 수 있고, 데이터(DATA)를 컬럼 디코더(150)에 전송할 수 있다. 또한, 입출력 회로(160)는 메모리 셀 어레이(110)로부터 리드된 데이터를 채널(CHk)의 입출력 라인들을 통해 컨트롤러(1200)로 출력할 수 있다.
로직 회로(170)는 채널(CHk)을 통해 컨트롤러(1200)로부터 수신된 제어 신호들(CTSIG)과 입출력 회로(160)를 통해 수신된 커맨드(CMD) 및 어드레스(ADD)에 응답하여, 동작 신호들(OPS), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIG) 및 컬럼 어드레스(CADD)를 출력할 수 있다.
도 3은 멀티 채널(multi channel) 방식에서 커맨드 실행 방법을 설명하기 위한 도면이다.
도 3을 참조하면, 멀티 채널 방식에서는 다수의 채널들(CH1~CHk) 각각에 다수의 다이들(D1~Di)이 연결될 수 있다. 예를 들면, 제1 채널(CH1)에 제1 내지 제i 다이들(D1~Di)이 연결될 수 있고, 제2 채널(CH2)에도 제1 내지 제i 다이들(D1~Di)이 연결될 수 있으며, 제k 채널(CHk)에도 제1 내지 제i 다이들(D1~Di)이 연결될 수 있다. 서로 다른 채널들에 연결된 제1 내지 제i 다이들(D1~Di)은 물리적으로 서로 다른 다이들이다. 동일한 채널에 연결된 다이들은 동시에 선택될 수 없고, 서로 다른 채널들에 연결된 다이들은 동시에 선택될 수 있다.
예를 들면, 제1 채널(CH1)에 연결된 제1 내지 제i 다이들(D1~Di) 중에서 제2 다이(D2)가 컨트롤러(1200)와 통신할 때, 나머지 제1, 제3 내지 제I 다이들(D1, D3~Di)은 컨트롤러(1200)와 통신할 수 없다. 하지만, 제1 채널(CH1)에 연결된 제1 내지 제i 다이들(D1~Di) 중에서 제2 다이(D2)가 컨트롤러(1200)와 통신할 때, 제2 채널(CH2)에 연결된 제3 다이(D3)와 제k 채널(CHk)에 연결된 제1 다이(D1)는 컨트롤러(1200)와 동시에 통신할 수 있다. 여기서, 각 채널에서 선택된 다이는 본 기술을 설명하기 위한 예 이므로, 서로 다른 채널들에서 동시에 선택되는 다이들은 커맨드 및 어드레스에 따라 달라질 수 있다.
도 4는 본 발명의 실시예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 4를 참조하면, 컨트롤러(1200)는 호스트 인터페이스 계층(host interface layer; HIL; 210), 중앙 처리 장치(central processing unit; CPU; 220) 및 플래시 인터페이스 계층(flash interface layer; FIL; 230)을 포함할 수 있다.
호스트 인터페이스 계층(210)은 호스트(2000)와 중앙 처리 장치(220) 사이에서 통신할 수 있다. 예를 들면, 호스트 인터페이스 계층(210)은 호스트(2000)로부터 요청(request), 논리 어드레스(logical address) 또는 데이터가 수신되면, 수신된 요청, 논리 어드레스 또는 데이터를 중앙 처리 장치(220)로 전송할 수 있다. 또한, 호스트 인터페이스 계층(210)은 중앙 처리 장치(220)로부터 데이터가 수신되면, 수신된 데이터를 호스트(2000)로 출력할 수 있다.
중앙 처리 장치(220)는 호스트 인터페이스 계층(210)과 플래시 인터페이스 계층(230) 사이에서 통신할 수 있으며, 컨트롤러(1200)의 전반적인 동작을 제어할 수 있다. 예를 들면, 중앙 처리 장치(220)는 호스트 인터페이스 계층(210)으로부터 수신된 요청을 커맨드로 변환하고, 채널들의 상태에 따라 커맨드를 플래시 인터페이스 계층(230)으로 전송할 수 있다. 예를 들면, 중앙 처리 장치(220)는 각 채널들에 큐잉된 커맨드들과 피크 파워(peak power) 등을 고려하여, 특정 채널에서 과부하가 걸리지 않도록 커맨드를 플래시 인터페이스 계층(230)으로 전송할 수 있다. 또한, 중앙 처리 장치(220)는 호스트 인터페이스 계층(210)으로부터 수신된 논리 어드레스를 물리 어드레스로 변환하여 플래시 인터페이스 계층(230)으로 전송할 수 있으며, 호스트 인터페이스 계층(210)으로부터 수신된 데이터를 플래시 인터페이스 계층(230)으로 전송할 수 있다.
플래시 인터페이스 계층(230)은 중앙 처리 장치(220)와 메모리 장치(1100) 사이에서 통신할 수 있다. 플래시 인터페이스 계층(230)은 중앙 처리 장치(220)로부터 커맨드, 물리 어드레스 또는 데이터를 수신받고, 채널들을 통해 선택된 다이들에게 커맨드, 물리 어드레스 또는 데이터를 전송할 수 있다. 예를 들면, 플래시 인터페이스 계층(230)은 채널들 각각의 상태에 따라 커맨드들을 큐잉할 수 있으며, 프로그램 데이터를 다수의 데이터 그룹들로 구분하고, 채널을 통해 전송된 데이터가 포함된 데이터 그룹에 대한 정보를 실시간으로 저장 및 업데이트할 수 있다. 또한, 플래시 인터페이스 계층(230)은 서스펜드 커맨드가 수신된 경우, 채널에 현재 로드된 데이터 그룹의 전송이 종료되면, 서스펜드 커맨드를 출력할 수 있다. 서스펜드 커맨드의 실행이 종료되면, 플래시 인터페이스 계층(230)은 중단된 프로그램 동작을 재개할 수 있다. 프로그램 동작을 재개할 때, 플래시 인터페이스 계층(230)은 중단된 프로그램 동작에 대한 커맨드 및 물리 어드레스를 다시 전송하고, 전송되지 않은 데이터를 채널을 통해 전송할 수 있다.
도 5는 플래시 인터페이스 계층의 구성을 설명하기 위한 도면이다.
도 5를 참조하면, 플래시 인터페이스 계층(230)은 다수의 플래시 인터페이스들(1FI~kFI)을 포함할 수 있다. 플래시 인터페이스들(1FI~kFI)의 개수는 메모리 장치(1100)와 통신하는 채널들(CH1~CHk)의 개수와 동일할 수 있다. 예를 들면, 메모리 시스템(1000)이 제1 내지 제k 채널들(CH1~CHk)을 포함하는 멀티 채널 방식으로 구성된 경우, 플래시 인터페이스 계층(230)도 제1 내지 제k 플래시 인터페이스들(1FI~kFI)을 포함할 수 있다. 제1 플래시 인터페이스(1FI)는 제1 채널(CH1)을 통해 메모리 장치(1100)와 통신할 수 있고, 제2 플래시 인터페이스(2FI)는 제2 채널(CH2)을 통해 메모리 장치(1100)와 통신할 수 있으며, 제k 플래시 인터페이스(kFI)는 제k 채널(CHk)을 통해 메모리 장치(1100)와 통신할 수 있다.
중앙 처리 장치(220)는 제1 내지 제k 채널들(CH1~CHk)의 상태에 따라 제1 내지 제k 플래시 인터페이스들(1FI~kFI)에게 커맨드(CMD), 물리 어드레스(PADD) 및 데이터(DATA)를 선택적으로 전송할 수 있다. 중앙 처리 장치(220)는 프로그램 요청이 수신되면 프로그램 커맨드를 전송할 수 있고, 리드 요청이 수신되면 리드 커맨드를 전송할 수 있으며, 소거 요청이 수신되면 소거 커맨드를 전송할 수 있다.
제1 내지 제k 플래시 인터페이스들(1FI~kFI) 각각은 중앙 처리 장치(220)로부터 수신 받은 커맨드(CMD)를 큐잉하고, 큐잉된 순서에 따라 채널을 통해 프로그램 커맨드(CMDp), 물리 어드레스(PADD) 및 데이터(DATA)를 선택된 다이(die)에게 전송하거나, 리드 커맨드(CMDr) 및 물리 어드레스(PADD)를 선택된 다이에게 전송할 수 있다. 제1 내지 제k 플래시 인터페이스들(1FI~kFI) 각각은 프로그램 커맨드(CMDp) 및 리드 커맨드(CMDr) 외에도 중앙 처리 장치(220)로부터 수신된 다양한 커맨드들을 큐잉하고, 큐잉된 순서에 따라 커맨드들을 출력할 수 있다.
예를 들면, 제1 플래시 인터페이스(1FI)는 프로그램 커맨드(CMDp), 물리 어드레스(PADD) 및 데이터(DATA)를 제1 채널(CH1)을 통해 출력할 수 있고, 제k 플래시 인터페이스(kFI)는 리드 커맨드(CMDr) 및 물리 어드레스(PADD)를 제k 채널(CHk)을 통해 출력할 수 있다.
도 6은 본 발명의 실시예에 따른 중앙 처리 장치를 설명하기 위한 도면이다.
도 6을 참조하면, 중앙 처리 장치(220)는 커맨드 생성부(CMD Generator; 221), 채널 스케줄러(CH Scheduler; 222), 어드레스 테이블(ADD Table; 223) 및 제1 버퍼(Buffer; 224)를 포함할 수 있다.
커맨드 생성부(221)는 호스트(2000)로부터 수신된 요청(RQ)을 메모리 시스템(1000)에서 사용될 수 있는 커맨드(CMD)로 생성하고, 생성된 커맨드(CMD)를 채널 스케줄러(222)로 전송할 수 있다.
채널 스케줄러(222)는 커맨드 생성부(221)로부터 수신 받은 커맨드(CMD)를 채널들의 상태에 따라 큐잉하고, 큐잉된 순서에 따라 커맨드(CMD)를 출력할 수 있다.
어드레스 테이블(223)은 논리 어드레스(LADD)와 물리 어드레스(PADD)가 서로 맵핑된 테이블일 수 있으며, 중앙 처리 장치(220)에 포함된 내무 메모리에 저장될 수 있다. 어드레스 테이블(223)은 맵핑된 어드레스들이 변경될 때마다 업데이트될 수 있으며, 논리 어드레스(LADD)가 수신되면, 수신된 논리 어드레스(LADD)에 대응되는 물리 어드레스(PADD)를 출력할 수 있다.
제1 버퍼(224)는 호스트(2000)로부터 수신 받은 데이터(DATA)를 임시로 저장하고, 설정된 데이터 폭(width)에 따라 데이터(DATA)를 플래시 인터페이스 계층(230)으로 전송할 수 있다.
도 7은 채널 스케줄러의 기능을 설명하기 위한 도면이다.
도 7을 참조하면, 채널 스케줄러(222)는 채널들(CH1, CH2, …) 각각에 대한 상태 정보(ST#)를 저장하는 제2 버퍼(71)와, 채널들(CH1, CH2, …)의 상태 정보(ST#)에 따라 큐잉된 커맨드들(CMD)을 임시로 저장하는 제3 버퍼(72)를 포함할 수 있다. 예를 들면, 제2 버퍼(71)에 저장되는 상태 정보(ST#)는 각 채널들에서 실행되고 있거나 실행 예정인 커맨드들(CMD)의 개수 정보 또는 각 채널들의 현재 파워 소모량 또는 예상 파워 소모량 정보를 포함하거나, 상기 정보들을 모두 포함할 수도 있다.
채널 스케줄러(222)에는 다양한 커맨드들의 예상 파워 소모량 정보, 동작 시간 등의 정보가 저장될 수 있다. 채널 스케줄러(222)는 제3 버퍼(72)에 저장된 커맨드들의 큐잉 정보에 따라, 제2 버퍼(71)에서 해당 채널의 상태 정보(ST#)를 업데이트할 수 있다. 이러한 상태 정보(ST#)는 채널 별 작업량(workload)으로 산출되어 제2 버퍼(71)에 저장될 수 있다.
즉, 채널 스케줄러(222)는 제2 버퍼(71)에 저장된 채널들(CH1, CH2, …)의 상태 정보(ST#)에 해당되는 작업량을 체크하고, 작업량이 상대적으로 적은 채널에 커맨드(CMD)를 우선 할당하거나, 작업량이 상대적으로 적은 채널에 작업량이 상태적으로 많은 커맨드(CMD)를 할당할 수 있다. 예를 들면, 채널들(CH1, CH2, ...)의 작업량과 수신된 커맨드(CMD)의 작업량에 따라, 채널 스케줄러(222)는 제3 채널(CH3)에 제1 커맨드(CMD1)를 할당하고(21), 제4 채널(CH4)에 제2 커맨드(CMD2)를 할당하고(22), 제1 채널(CH1)에 제3 커맨드(CMD3)를 할당하고(23), 제2 채널(CH2)에 제4 커맨드(CMD4)를 할당할 수 있다(24).
채널 스케줄러(222)는 제3 버퍼(72)에 큐잉된 순서(21, 22, 23, 24)에 따라 제1 내지 제4 커맨드들(CMD1~CMD4)을 순차적으로 출력하고, 제2 버퍼(71)의 채널 별 상태 정보(ST#)를 업데이트할 수 있다.
도 8은 어드레스 테이블을 설명하기 위한 도면이다.
도 8을 참조하면, 어드레스 테이블(223)은 논리 어드레스들(LADD1~LADD#) 각각에 맵핑된 물리 어드레스들(PADD1~PADD#)을 포함할 수 있다. 논리 어드레스들(LADD1~LADD#)은 호스트(2000)에서 사용되는 어드레스이고, 물리 어드레스들(PADD1~PADD#)은 메모리 장치(1100)에서 사용되는 어드레스이다.
중앙 처리 장치(220)는 맵핑된 어드레스들이 변경될 때마다 어드레스 테이블(223)을 업데이트할 수 있으며, 논리 어드레스(LADD)가 수신되면, 수신된 논리 어드레스(LADD)에 맵핑된 물리 어드레스(PADD)를 출력할 수 있다.
도 9는 플래시 인터페이스를 설명하기 위한 도면이다.
도 9를 참조하면, 제k 플래시 인터페이스(kFI)는 도 5에 도시된 제1 내지 제k 플래시 인터페이스들(1FI~kFI) 중 어느 하나이며, 제1 내지 제k 플래시 인터페이스들(1FI~kFI)은 서로 동일하게 구성될 수 있으므로, 이 중에서 제k 플래시 인터페이스(kFI)를 예를 들어 설명하도록 한다.
제k 플래시 인터페이스(kFI)는 커맨드 큐 스케줄러(CMD Queue Scheduler; 91), 어드레스 입출력 부(ADD Input/output Component; 92), 데이터 입출력 부(DATA Input/output Component; 93) 및 데이터 모니터(DATA Monitor; 94)를 포함할 수 있다.
노말 커맨드들(CMD)이 입력된 경우, 제k 플래시 인터페이스(kFI)에 포함된 각각의 장치들은 다음과 같이 동작할 수 있다.
커맨드 큐 스케줄러(91)는 입력된 커맨드들(CMD)을 큐잉하고, 큐잉된 커맨드들(CMD)을 순차적으로 출력할 수 있다. 예를 들면, 커맨드 큐 스케줄러(91)는 노말 커맨드들이 입력되면 노말 커맨드들을 입력되는 순서대로 큐잉하고, 큐잉된 순서대로 커맨드들(CMD)을 출력할 수 있다. 또한, 커맨드 큐 스케줄러(91)는 커맨드(CMD)를 출력한 후, 어드레스 출력 신호(AOS)와 데이터 출력 신호(DOA)를 순차적으로 출력할 수 있다.
어드레스 입출력 부(92)는 물리 어드레스(PADD)가 입력되면, 입력된 물리 어드레스(PADD)를 임시로 저장하고, 커맨드 큐 스케줄러(91)에서 출력되는 어드레스 출력 신호(AOS)에 응답하여 물리 어드레스(PADD)를 출력할 수 있다.
데이터 입출력 부(93)는 데이터(DATA)가 입력되면, 입력된 데이터(DATA)를 임시로 저장하고, 커맨드 큐 스케줄러(91)에서 출력되는 데이터 출력 신호(DOS)에 응답하여 데이터(DATA)를 출력할 수 있다.
데이터 모니터(94)는 데이터 입출력 부(93)와 통신할 수 있다. 데이터 모니터(94)는 데이터 입출력 부(93)에 입력된 데이터를 다수의 데이터 그룹들로 구분하고, 데이터 입출력 부(93)에서 현재 출력된 데이터 그룹을 실시간으로 모니터링 할 수 있다.
서스펜드 커맨드(CMD)가 입력된 경우, 제k 플래시 인터페이스(kFI)에 포함된 각각의 장치들은 다음과 같이 동작할 수 있다.
커맨드 큐 스케줄러(91)는 기존에 큐잉된 노말 커맨드들(CMD)보다 서스펜드 커맨드에 우선순위를 주고, 데이터 출력 정지 신호(DSS)를 출력할 수 있다. 이어서, 데이터 입출력 부(93)에서 출력되는 완료 신호(FIS)가 수신되면, 커맨드 큐 스케줄러(91)는 서스펜드 커맨드를 출력할 수 있다. 서스펜드 커맨드는 리드 커맨드일 수 있으므로, 커맨드 큐 스케줄러(91)는 서스펜드 커맨드를 출력한 후에 어드레스 출력 신호(ADD)를 출력할 수 있다.
어드레스 입출력 부(92)는 서스펜드 커맨드와 함께 입력된 물리 어드레스(PADD)를 임시로 저장하고, 커맨드 큐 스케줄러(91)에서 출력되는 어드레스 출력 신호(AOS)에 응답하여 물리 어드레스(PADD)를 출력할 수 있다.
커맨드 큐 스케줄러(91)로부터 데이터 출력 정지 신호(DSS)가 수신되면, 데이터 입출력 부(93)는 데이터 모니터(94)에 의해 설정된 데이터까지 출력하고, 완료 신호(FIS)를 출력할 수 있다.
데이터 모니터(94)는 데이터 입출력 부(93)에서 출력된 데이터가 포함된 데이터 그룹에 대한 정보를 저장할 수 있다.
커맨드 큐 스케줄러(91)는 완료 신호(FIS)가 수신되면 서스펜드 커맨드를 출력할 수 있다.
재개(resume) 커맨드(CMD)가 입력된 경우, 제k 플래시 인터페이스(kFI)에 포함된 각각의 장치들은 다음과 같이 동작할 수 있다.
커맨드 큐 스케줄러(91)는 재개 커맨드에 응답하여 서스펜드 커맨드에 의해 중단된 노말 커맨드(CMD)를 다시 출력할 수 있고, 이어서 어드레스 출력 신호(AOS)와 데이터 출력 신호(DOA)를 순차적으로 출력할 수 있다.
어드레스 입출력 부(92)는 커맨드 큐 스케줄러(91)에서 어드레스 출력 신호(AOS)에 응답하여 물리 어드레스(PADD)를 출력할 수 있다.
데이터 입출력 부(93)는 커맨드 큐 스케줄러(91)에서 출력되는 데이터 출력 신호(DOS)가 다시 입력되면, 출력되지 않은 데이터부터 출력할 수 있다. 출력되지 않는 데이터에 대한 정보는 데이터 모니터(94)로부터 수신받을 수 있다.
데이터 모니터(94)는 이전 노말 동작 시, 데이터 입출력 부(93)에서 출력이 완료된 데이터 그룹에 대한 정보를 기초로, 다음 데이터 그룹에 대한 정보를 데이터 입출력 부(93)에 전송할 수 있다.
데이터 입출력 부(93)는 데이터 모니터(94)로부터 수신된 데이터 그룹 정보에 따라, 선택된 데이터 그룹의 첫 번째 데이터부터 출력할 수 있다.
상술된 구성들 중에서 커맨드 큐 스케줄러(91)의 동작을 추가로 설명하면 다음과 같다.
도 10 내지 12는 커맨드 큐 스케줄러가 서스펜드 커맨드를 큐잉하는 방법을 설명하기 위한 도면들이다.
도 10을 참조하면, 커맨드 큐 스케줄러(91)에 노말 커맨드인 제1 내지 제5 커맨드들(CMD1~CMD5)이 순차적으로 입력되면, 커맨드 큐 스케줄러(91)는 제1 내지 제5 커맨드들(CMD1~CMD5)을 입력된 순서대로 큐잉하고, 큐잉된 순서에 따라 제1 내지 제5 커맨드들(CMD1~CMD5)을 순차적으로 출력할 수 있다.
도 11을 참조하면, 커맨드 큐 스케줄러(91)가 제1 커맨드(CMD1)를 출력한 후, 다음 커맨드인 제2 커맨드(CMD2)를 출력하기 이전에 서스펜드 커맨드(CMD6)가 입력되면, 실행 중이던 제1 커맨드(CMD1)의 동작이 중단될 수 있다. 이를 위해, 커맨드 큐 스케쥴러(91)는 출력된 커맨드의 동작이 모두 종료되기 전까지 가장 최근에 출력된 커맨드를 저장할 수 있다.
도 12를 참조하면, 커맨드 큐 스케줄러(91)는 중단된 제1 커맨드(CMD1)보다 서스펜드 커맨드(CMD6)에 우선 순위를 주고, 나머지 노말 커맨드들(CMD1~CMD5)보다 서스펜드 커맨드(CMD6)가 가장 먼저 출력될 수 있도록 커맨드들을 큐잉할 수 있다.
도 13은 본 발명의 실시예에 따른 데이터 그룹 설정 방법을 설명하기 위한 도면이다.
도 13을 참조하면, 데이터 모니터(94)는 데이터 입출력 부(93)에 입력된 데이터(DATA)를 용량(CP1~CP4) 또는 구간(CHP1~CHP3) 별로 구분하여 데이터 그룹들을 설정할 수 있다.
데이터 용량(CP1~CP4)에 따라 데이터 그룹들(DATA1-1~1-4)을 구분하는 경우, 데이터 모니터(94)는 데이터 입출력 부(93)에 입력된 데이터(DATA)의 총 용량을 1/4로 나눌 수 있다. 여기서 1/4은 설명을 위한 예 이므로 변경 가능하다. 1/4로 구분되는 용량(CP1~CP4)은 서로 동일한 용량이거나, 서로 다른 용량일 수 있다. 예를 들면, 제1 데이터 그룹(DATA1-1)은 제1 용량(CP1)을 가질 수 있고, 제2 데이터 그룹(DATA1-2)은 제2 용량(CP2)을 가질 수 있고, 제3 데이터 그룹(DATA1-3)은 제3 용량(CP3)을 가질 수 있으며, 제4 데이터 그룹(DATA1-4)은 제4 용량(CP4)을 가질 수 있다. 제1 내지 제4 용량(CP1~CP4)은 서로 동일할 수도 있고, 서로 다를 수도 있다. 이 때, 데이터 모니터(94)는 데이터 입출력 부(93)에서 출력되는 데이터의 용량이 설정된 용량에 도달할 때마다, 현재 출력되는 데이터가 포함되는 데이터 그룹에 대한 정보를 업데이트할 수 있다.
데이터 구간(CHP1~CHP3)에 따라 데이터 그룹들(DATA1-1~1-4)을 구분하는 경우, 데이터 모니터(94)는 데이터 입출력 부(93)에서 데이터(DATA)가 채널(CH1)로 출력될 때, 설정된 시간 마다 구간(CHP1~CHP3)을 저장할 수 있다. 즉, 데이터 모니터(94)는 다수의 구간들에 대응되는 시간을 설정하고, 데이터 입출력 부(93)에서 데이터가 출력된 후 설정된 시간마다 상기 데이터가 포함되는 데이터 그룹에 대한 정보를 업데이트할 수 있다. 예를 들면, 첫 번째 데이터가 출력된 후 일정 시간이 지난 제1 시점(CHP1)에 데이터 입출력 부(93)에서 출력되는 데이터의 위치 정보를 기록할 수 있고, 제1 시점(CHP1) 이후에 일정 시간이 지난 제2 시점(CHP2)에 데이터 입출력 부(93)에서 출력되는 데이터의 위치 정보를 기록할 수 있으며, 제2 시점(CHP2) 이후에 일정 시간이 지난 제3 시점(CHP3)에 데이터 입출력 부(93)에서 출력되는 데이터의 위치 정보를 기록할 수 있다.
서스펜드 커맨드가 입력된 경우, 데이터 입출력 부(93)에서 현재 출력된 데이터가 제2 데이터 그룹(DATA1-2)에 포함되어 있다고 가정하면, 데이터 입출력 부(93)는 데이터 모니터(94)로부터 현재 채널(CH)에 전송된 데이터가 포함된 데이터 그룹에 대한 정보를 토대로, 제2 데이터 그룹(DATA1-2)에 포함된 데이터까지만 채널(CH)로 출력한 후, 제3 데이터 그룹(DATA1-3)에 포함된 데이터의 출력을 중단할 수 있다.
서스펜드 커맨드가 실행된 후, 중단되었던 프로그램 동작이 재개되는 경우, 데이터 입출력 부(93)는 데이터 모니터(94)로부터 출력이 중단된 제2 데이터 그룹(DATA1-2)의 다음 그룹에 해당되는 제3 데이터 그룹(DATA1-3)의 정보를 수신받을 수 있다. 데이터 입출력 부(94)는 제3 데이터 그룹(DATA1-3)의 정보에 따라, 제3 데이터 그룹(DATA1-3)에 포함된 첫 번째 데이터부터 순차적으로 출력할 수 있다.
상술한 바와 같이 본 실시예에서는 서스펜드 커맨드가 입력된 경우, 서스펜드 커맨드가 실행되기 까지 지연 시간을 단축할 수 있으며, 서스펜드 커맨드에 의해 중단된 프로그램 동작의 재개 시간 또한 단축할 수 있다. 이와 관련하여, 기존의 동작 방법과 본 실시예에 따른 동작 방법을 비교하면 다음과 같다.
도 14는 일반적인 서스펜드 커맨드 처리 방법을 설명하기 위한 도면이다.
도 14를 참조하면, 제1 커맨드(CMD1)가 프로그램 커맨드라고 가정하면, 프로그램 커맨드(CMD1), 물리 어드레스(PADD) 및 제1 내지 제4 데이터 그룹들(DATA1-1~1-4)이 제1 채널(CH1)에 연결된 제1 다이(D1)로 순차적으로 입력될 수 있다. 이때, 제2 데이터 그룹(DATA1-2)에 포함된 데이터가 제1 다이(D1)이 입력될 때, 제2 다이(D2)에 대한 서스펜드 커맨드(CMD6)가 입력될 수 있다. 서스펜드 커맨드(CMD6)는 리드 커맨드일 수 있다. 일반적인 경우, 서스펜드 커맨드(CMD6)가 입력되더라도, 현재 실행 중인 프로그램 커맨드에 관련된 데이터가 모두(DATA1-1~DATA1-4) 전송된 이후에 서스펜드 커맨드(CMD6)가 전송되기 때문에, 제2 다이(D2)에서 서스펜드 커맨드(CMD6)가 실행되기까지 제1 지연 시간(T1)이 걸릴 수 있다.
도 15는 본 발명의 실시예에 따른 서스펜드 커맨드 처리 방법을 설명하기 위한 도면이다.
도 15를 참조하면, 도 14와 다르게, 서스펜드 커맨드(CMD6)가 입력되면, 현재 제1 채널(CH1)에 전송중인 제2 데이터 그룹(DATA1-2)에 포함된 데이터까지만 제1 다이(D1)로 전송되면, 나머지 제3 및 제4 데이터 그룹들(DATA1-3, DATA1-4)에 포함된 데이터를 제1 다이(D1)로 전송하기 이전에 제2 다이(D2)에 대한 서스펜드 커맨드(CMD6)가 실행될 수 있다. 즉, 본 실시예에 따르면, 서스펜드 커맨드(CMD6)가 실행되기까지 제1 지연 시간(T1)보다 짧은 제2 지연 시간(T2)이 걸릴 수 있다. 제2 다이(D2)에서 서스펜드 커맨드가 완료되면, 데이터 용량(CP1) 정보 또는 데이터 구간(CHP2) 정보, 또는 용량(CP1) 정보와 데이터 구간(CHP2) 정보를 모두 합한 정보를 토대로 출력되지 않은 데이터를 알 수 있다. 이에 따라, 제1 다이(D1)에 프로그램 커맨드(CMD1), 물리 어드레스(PADD) 및 제3 및 제4 데이터 그룹들(DATA1-3, DATA1-4)이 순차적으로 전송될 수 있다.
도 16은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 16을 참조하면, 메모리 시스템(Memory System; 30000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)를 포함할 수 있다. 컨트롤러(1200)는 프로세서(Processor; 3100)의 제어에 따라 메모리 장치(1100)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
메모리 장치(1100)에 프로그램된 데이터는 컨트롤러(1200)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 컨트롤러(1200) 또는 디스플레이(3200)로 전송할 수 있다. 컨트롤러(1200)는 프로세서(3100)에 의하여 처리(process)된 신호를 메모리 장치(1100)에 전송할 수 있다. 또한, 무선 송수신기(3300)는 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는 컨트롤러(1200)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(3100)의 일부로서 구현될 수 있고 또한 프로세서(3100)와 별도의 칩으로 구현될 수 있다.
도 17은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 17을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은 데이터가 저장되는 메모리 장치(1100)와, 메모리 장치(1100)의 데이터 처리 동작을 제어할 수 있는 컨트롤러(1200)를 포함할 수 있다.
프로세서(Processor; 4100)는 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 메모리 장치(1100)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 컨트롤러(1200)의 동작을 제어할 수 있다. 실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와 별도의 칩으로 구현될 수 있다.
도 18은 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18을 참조하면, 메모리 시스템(50000)은 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은 메모리 장치(1100)와 상기 메모리 장치(1100)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 컨트롤러(1200)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 컨트롤러(1200)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 컨트롤러(1200)를 통하여 메모리 장치(1100)에 저장될 수 있다. 또한, 메모리 장치(1100)에 저장된 데이터는 프로세서(5100) 또는 컨트롤러(1200)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라 메모리 장치(1100)의 동작을 제어할 수 있는 컨트롤러(1200)는 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와 별개의 칩으로 구현될 수 있다.
도 19는 본 발명의 실시예에 따른 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19를 참조하면, 메모리 시스템(Memory System; 70000)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 메모리 장치(1100), 컨트롤러(1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
컨트롤러(1200)는 메모리 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(Inter Chip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는 호스트(60000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; μP; 6100)의 제어에 따라 카드 인터페이스(7100)와 컨트롤러(1200)를 통하여 메모리 장치(1100)와 데이터 통신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1100: 메모리 장치 1200: 컨트롤러
210: 호스트 인터페이스 계층 220: 중앙 처리 장치
230: 플래시 인터페이스 계층 FI: 플래시 인터페이스
221: 커맨드 생성부 222: 채널 스케줄러
223: 어드레스 테이블 224: 제1 버퍼
91: 커맨드 큐 스케줄러 92: 어드레스 입출력 부
93: 데이터 입출력 부 94: 데이터 모니터

Claims (20)

  1. 노말 커맨드들을 큐잉하고, 서스펜드 커맨드가 입력되면, 상기 서스펜드 커맨드에 우선 순위를 부여하는 커맨드 큐 스케줄러;
    상기 커맨드 큐 스케줄러에서 출력된 데이터 출력 신호에 응답하여 데이터를 출력하고, 데이터 출력 정지 신호에 응답하여 데이터 출력을 중단하는 데이터 입출력 부; 및
    상기 데이터 입출력 부에 입력된 데이터를 다수의 데이터 그룹들로 구분하고, 상기 데이터 입출력 부에서 현재 출력된 데이터가 포함된 데이터 그룹의 정보를 모니터링하는 데이터 모니터를 포함하고,
    상기 데이터 입출력 부는 상기 데이터 출력 정지 신호에 응답하여, 현재 출력되는 상기 데이터 그룹에 포함된 데이터까지 출력한 후 데이터 출력을 중지하고,
    상기 커맨드 큐 스케줄러는 상기 데이터 그룹의 출력이 중단되면, 상기 서스펜드 커맨드를 출력하는 컨트롤러.
  2. 제1항에 있어서, 상기 커맨드 큐 스케줄러는,
    상기 노말 커맨드의 큐잉 순서에 따라 상기 노말 커맨드들을 순차적으로 출력하되, 출력된 노말 커맨드의 실행이 완료될 때까지 출력된 상기 노말 커맨드를 저장하는 컨트롤러.
  3. 제2항에 있어서, 상기 커맨드 큐 스케줄러는,
    상기 서스펜드 커맨드를 실행할 때, 이전에 출력된 상기 노말 커맨드보다 상기 서스펜드 커맨드에 우선 순위를 부여하여 상기 서스펜드 커맨드를 출력하고,
    재개(resume) 커맨드가 입력되면, 상기 서스펜드 커맨드로 인해 중단되었던 상기 노말 커맨드를 다시 출력하는 컨트롤러.
  4. 제1항에 있어서, 상기 커맨드 큐 스케줄러는,
    상기 서스펜드 커맨드가 입력되면, 상기 데이터 입출력 부에 상기 데이터 출력 정지 신호를 출력하고,
    상기 데이터 입출력 부로부터 완료 신호가 수신되면, 상기 서스펜드 커맨드를 출력하는 컨트롤러.
  5. 제4항에 있어서, 상기 데이터 입출력 부는,
    상기 데이터 출력 정지 신호가 수신되면, 상기 데이터 모니터로부터 현재 데이터 그룹에 대한 정보를 수신받고, 수신된 상기 현재 데이터 그룹에 포함된 데이터를 모두 출력한 후에 상기 완료 신호를 출력하는 컨트롤러.
  6. 제1항에 있어서, 상기 데이터 입출력 부는,
    상기 커맨드 큐 스케줄러로부터 상기 데이터 출력 신호를 다시 수신 받으면, 출력이 완료된 데이터 그룹의 다음 데이터 그룹에 포함된 데이터부터 출력하는 컨트롤러.
  7. 제1항에 있어서, 상기 데이터 모니터는,
    상기 데이터 입출력 부에 입력된 상기 데이터를 용량 또는 출력되는 구간에 따라 구분하여 상기 데이터 그룹들에 대한 정보를 관리하는 컨트롤러.
  8. 제7항에 있어서, 상기 데이터 모니터는,
    상기 데이터를 용량에 따라 구분하는 경우,
    상기 데이터 입출력 부에 입력된 상기 데이터를 설정된 용량에 따라 구분하여 상기 데이터 그룹들을 정의하고,
    상기 데이터 입출력 부에서 출력되는 데이터의 용량이 상기 설정된 용량에 도달할 때마다, 현재 출력되는 데이터가 포함되는 상기 데이터 그룹에 대한 정보를 업데이트하는 컨트롤러.
  9. 제7항에 있어서, 상기 데이터 모니터는,
    상기 데이터를 출력되는 구간에 따라 구분하는 경우,
    다수의 구간들에 대응되는 시간을 설정하고, 상기 데이터 입출력 부에서 데이터가 출력된 후 상기 설정된 시간마다 상기 데이터가 포함되는 상기 데이터 그룹에 대한 정보를 업데이트하는 컨트롤러.
  10. 동일한 채널에 연결되며 데이터가 저장될 수 있는 제1 및 제2 다이들;
    호스트로부터 수신된 요청에 따라, 제1 커맨드 또는 상기 제1 커맨드보다 우선 순위가 높은 제2 커맨드를 출력하는 중앙 처리 장치; 및
    상기 제1 커맨드에 따라 상기 제1 다이에 데이터를 출력하는 플래시 인터페이스 계층을 포함하고,
    상기 플래시 인터페이스 계층은,
    상기 데이터를 다수의 데이터 그룹들로 구분하고,
    상기 제2 커맨드가 입력되면, 현재 출력되는 데이터가 포함된 데이터 그룹까지 데이터를 출력한 후, 상기 제2 커맨드를 상기 제2 커맨드에 출력하고,
    상기 제2 커맨드의 실행이 종료되면, 출력이 완료된 데이터 그룹의 다음 순번의 데이터 그룹에 포함된 데이터를 상기 제1 다이에 출력하는 메모리 시스템.
  11. 제10항에 있어서, 상기 중앙 처리 장치는,
    상기 요청을 상기 제1 커맨드 또는 상기 제2 커맨드로 변환하는 커맨드 생성부;
    상기 채널의 상태 정보에 따라 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 플래시 인터페이스 계층으로 출력하는 채널 스케줄러;
    상기 호스트로부터 수신된 논리 어드레스에 대응되는 물리 어드레스를 상기 플래시 인터페이스 계층으로 출력하는 어드레스 테이블; 및
    상기 호스트로부터 수신된 상기 데이터를 임시로 저장한 후 상기 플래시 인터페이스 계층으로 출력하는 제1 버퍼를 포함하는 메모리 시스템.
  12. 제11항에 있어서, 상기 채널 스케줄러는,
    상기 채널의 상기 상태 정보가 저장 및 업데이트되는 제2 버퍼; 및
    상기 채널에 따라 큐잉되는 커맨드들을 임시로 저장하는 제3 버퍼를 포함하는 메모리 시스템.
  13. 제12항에 있어서,
    상기 상태 정보는 상기 채널의 작업량 정보인 메모리 시스템.
  14. 제10항에 있어서, 상기 플래시 인터페이스 계층은,
    상기 제1 커맨드 또는 상기 제2 커맨드를 임시로 저장하고, 상기 제1 커맨드가 실행 중일 때 상기 제2 커맨드가 입력되면, 상기 제1 커맨드의 실행을 중단하고 상기 제2 커맨드가 실행되도록 상기 제1 및 제2 커맨드들을 큐잉하는 커맨드 큐 스케줄러;
    상기 중앙 처리 장치에서 수신된 상기 물리 어드레스를 임시로 저장하고, 상기 커맨드 큐 스케줄러에서 출력된 어드레스 출력 신호에 응답하여 상기 물리 어드레스를 출력하는 어드레스 입출력 부;
    상기 커맨드 큐 스케줄러에서 출력된 데이터 출력 신호에 응답하여 상기 데이터를 출력하고, 데이터 출력 정지 신호에 응답하여 상기 데이터의 출력을 중단하는 데이터 입출력 부; 및
    상기 데이터 입출력 부에 입력된 상기 데이터를 다수의 데이터 그룹들로 구분하고, 상기 데이터 입출력 부에서 현재 출력된 데이터가 포함된 데이터 그룹의 정보를 모니터링하는 데이터 모니터를 포함하는 메모리 시스템.
  15. 제14항에 있어서,
    상기 데이터 입출력 부는 상기 데이터 출력 정지 신호에 응답하여, 현재 출력되는 상기 데이터 그룹에 포함된 데이터까지 출력한 후 데이터 출력을 중지하고,
    상기 커맨드 큐 스케줄러는 상기 데이터 그룹의 출력이 중단되면, 상기 제2 커맨드를 출력하는 메모리 시스템.
  16. 제14항에 있어서, 상기 커맨드 큐 스케줄러는,
    상기 제2 커맨드를 실행할 때, 이전에 출력된 상기 제1 커맨드보다 상기 제2 커맨드에 우선 순위를 부여하여 상기 제2 커맨드를 출력하고,
    재개(resume) 커맨드가 입력되면, 상기 제2 커맨드로 인해 중단되었던 상기 제1 커맨드를 다시 출력하는 메모리 시스템.
  17. 제14항에 있어서, 상기 커맨드 큐 스케줄러는,
    상기 제2 커맨드가 입력되면, 상기 데이터 입출력 부에 상기 데이터 출력 정지 신호를 출력하고,
    상기 데이터 입출력 부로부터 완료 신호가 수신되면, 상기 제2 커맨드를 출력하는 메모리 시스템.
  18. 제17항에 있어서, 상기 데이터 입출력 부는,
    상기 데이터 출력 정지 신호가 수신되면, 상기 데이터 모니터로부터 현재 데이터 그룹에 대한 정보를 수신받고, 수신된 상기 현재 데이터 그룹에 포함된 데이터를 모두 출력한 후에 상기 완료 신호를 출력하는 메모리 시스템.
  19. 제17항에 있어서, 상기 데이터 입출력 부는,
    상기 커맨드 큐 스케줄러로부터 상기 데이터 출력 신호를 다시 수신 받으면, 출력이 완료된 데이터 그룹의 다음 데이터 그룹에 포함된 데이터부터 출력하는 메모리 시스템.
  20. 제14항에 있어서, 상기 데이터 모니터는,
    상기 데이터 입출력 부에 입력된 상기 데이터를 용량 또는 출력되는 구간에 따라 구분하여 상기 데이터 그룹들에 대한 정보를 관리하는 메모리 시스템.
KR1020190054502A 2019-05-09 2019-05-09 컨트롤러 및 이를 포함하는 메모리 시스템 KR20200129700A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190054502A KR20200129700A (ko) 2019-05-09 2019-05-09 컨트롤러 및 이를 포함하는 메모리 시스템
US16/727,417 US11455186B2 (en) 2019-05-09 2019-12-26 Controller and memory system having the same
CN201911400662.7A CN111913654B (zh) 2019-05-09 2019-12-30 控制器及具有其的存储器系统
US17/868,430 US20220350655A1 (en) 2019-05-09 2022-07-19 Controller and memory system having the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190054502A KR20200129700A (ko) 2019-05-09 2019-05-09 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20200129700A true KR20200129700A (ko) 2020-11-18

Family

ID=73045795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190054502A KR20200129700A (ko) 2019-05-09 2019-05-09 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (2) US11455186B2 (ko)
KR (1) KR20200129700A (ko)
CN (1) CN111913654B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230116341A (ko) * 2022-01-28 2023-08-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7443195B2 (ja) * 2020-08-21 2024-03-05 キオクシア株式会社 メモリシステムおよび制御方法
CN112965669B (zh) * 2021-04-02 2022-11-22 杭州华澜微电子股份有限公司 一种数据存储系统及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1797645B1 (en) * 2004-08-30 2018-08-01 Google LLC Systems and methods for providing nonvolatile memory management in wireless phones
US7562180B2 (en) * 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US7366028B2 (en) * 2006-04-24 2008-04-29 Sandisk Corporation Method of high-performance flash memory data transfer
US8407562B2 (en) * 2009-09-01 2013-03-26 Marvell World Trade Ltd. Systems and methods for compressing data in non-volatile semiconductor memory drives
US20120167100A1 (en) * 2010-12-23 2012-06-28 Yan Li Manual suspend and resume for non-volatile memory
JP2013077278A (ja) * 2011-09-16 2013-04-25 Toshiba Corp メモリ・デバイス
JP5848153B2 (ja) * 2012-02-17 2016-01-27 ルネサスエレクトロニクス株式会社 信号処理装置及び半導体装置
KR102356071B1 (ko) 2015-05-06 2022-01-27 에스케이하이닉스 주식회사 저장 장치 및 이의 동작 방법
US10037167B2 (en) * 2015-09-11 2018-07-31 Sandisk Technologies Llc Multiple scheduling schemes for handling read requests
KR20170033643A (ko) 2015-09-17 2017-03-27 에스케이하이닉스 주식회사 반도체 시스템 및 그의 동작 방법
US10157023B2 (en) * 2016-02-25 2018-12-18 SK Hynix Inc. Memory controller and request scheduling method using request queues and first and second tokens
US10503412B2 (en) * 2017-05-24 2019-12-10 Western Digital Technologies, Inc. Priority-based internal data movement
KR20190032809A (ko) * 2017-09-20 2019-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20190042970A (ko) * 2017-10-17 2019-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230116341A (ko) * 2022-01-28 2023-08-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
US11455186B2 (en) 2022-09-27
US20200356407A1 (en) 2020-11-12
CN111913654B (zh) 2023-08-11
CN111913654A (zh) 2020-11-10
US20220350655A1 (en) 2022-11-03

Similar Documents

Publication Publication Date Title
US11151027B2 (en) Methods and apparatuses for requesting ready status information from a memory
US10079048B2 (en) Adjusting access of non-volatile semiconductor memory based on access time
KR102417977B1 (ko) 메모리 시스템 및 그것의 동작 방법
US9304691B2 (en) Memory system and bank interleaving method
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US20220350655A1 (en) Controller and memory system having the same
TW201909172A (zh) 記憶體系統及其操作方法
KR102523327B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11061607B2 (en) Electronic system having host and memory controller, and operating method thereof
KR20100031132A (ko) 플래시 메모리 시스템에서 페이징된 가비지 수집과 하우스 키핑 동작
TW202046114A (zh) 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置
KR20190051564A (ko) 메모리 시스템 및 그것의 동작 방법
KR20190010335A (ko) 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템
KR20210098717A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
KR20190130831A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
CN112214163A (zh) 存储器控制器以及包括其的存储器系统
US20190258593A1 (en) Memory controller and operating method thereof
CN110069427B (zh) 存储器控制器以及存储器控制器的操作方法
KR20190097712A (ko) 메모리 시스템 및 그것의 동작 방법
KR20210060253A (ko) 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법
KR20220105285A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20200095679A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US20230393750A1 (en) Apparatus with response completion pacing
US11200163B2 (en) Controller and method of operating the same
CN115576497A (zh) 数据读取方法、存储器存储装置及存储器控制电路单元

Legal Events

Date Code Title Description
A201 Request for examination