KR102493964B1 - 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법 - Google Patents

스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR102493964B1
KR102493964B1 KR1020170174347A KR20170174347A KR102493964B1 KR 102493964 B1 KR102493964 B1 KR 102493964B1 KR 1020170174347 A KR1020170174347 A KR 1020170174347A KR 20170174347 A KR20170174347 A KR 20170174347A KR 102493964 B1 KR102493964 B1 KR 102493964B1
Authority
KR
South Korea
Prior art keywords
clock
command
external device
host
dma
Prior art date
Application number
KR1020170174347A
Other languages
English (en)
Other versions
KR20190073055A (ko
Inventor
이현주
심재호
엄기철
이동률
임효택
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170174347A priority Critical patent/KR102493964B1/ko
Priority to US16/055,197 priority patent/US10895905B2/en
Priority to EP18200565.2A priority patent/EP3499377B1/en
Priority to CN201811530971.1A priority patent/CN110059034A/zh
Publication of KR20190073055A publication Critical patent/KR20190073055A/ko
Priority to US17/151,273 priority patent/US11940862B2/en
Application granted granted Critical
Publication of KR102493964B1 publication Critical patent/KR102493964B1/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • 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
    • G06F13/1689Synchronisation and timing concerns
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • G06F13/4273Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using a clocked protocol
    • 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/0625Power saving in 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/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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/30Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • 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)
  • Human Computer Interaction (AREA)
  • Power Engineering (AREA)
  • Information Transfer Systems (AREA)
  • Microcomputers (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따른 스토리지 컨트롤러는 전송 큐 및 완료 큐를 포함하는 외부 장치와 통신하도록 구성된다. 스토리지 컨트롤러의 동작 방법은 제1 클럭을 기반으로 외부 장치로부터 커맨드에 대한 알림을 수신하는 단계, 제2 클럭을 기반으로 전송 큐로부터 커맨드를 페치하는 단계, 제3 클럭을 기반으로 페치된 커맨드에 대응하는 동작을 수행하는 단계, 제4 클럭을 기반으로 완료 정보를 완료 큐에 기입하는 단계, 및 제5 클럭을 기반으로 외부 장치로 인터럽트 신호를 전송하는 단계를 포함하고, 제1 내지 제5 클럭들 각각은 각 동작 단계에 따라 선택적으로 활성화된다.

Description

스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법{STORAGE CONTROLLER, STORAGE DEVICE INCLUDING THE SAME, AND OPERATION METHOD OF STORAGE CONTROLLER}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 컨트롤러 및 그것의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
플래시 메모리는 대용량 저장 매체로서 널리 사용된다. 플래시 메모리를 기반으로 하는 대용량 저장 매체는 플래시 메모리를 제어하기 위한 제어 장치를 포함한다. 제어 장치는 일반적으로 클럭 신호를 기반으로 동작한다. 예를 들어, 제어 장치는 다양한 기능 블록들을 포함하고, 다양한 기능 블록들은 입력되는 클럭을 기반으로 동작을 수행한다. 이러한 기능 블록들로 제공되는 클럭은 전력 소모의 주된 요인이 되며, 전력 소비를 감소시키기 위한 다양한 기법들이 개발되고 있다.
본 발명의 목적은 스토리지 컨트롤러의 기능 블록들의 동작 상태에 따라 각 기능 블록으로 제공되는 클럭을 선택적으로 제어함으로써, 감소된 소비 전력을 갖는 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 전송 큐 및 완료 큐를 포함하는 외부 장치와 통신하도록 구성된다. 상기 스토리지 컨트롤러의 동작 방법은 제1 클럭을 기반으로 상기 외부 장치로부터 커맨드에 대한 알림을 수신하는 단계, 제2 클럭을 기반으로 상기 전송 큐로부터 커맨드를 페치하는 단계, 제3 클럭을 기반으로 상기 페치된 커맨드에 대응하는 동작을 수행하는 단계, 제4 클럭을 기반으로 완료 정보를 상기 완료 큐에 기입하는 단계, 및 제5 클럭을 기반으로 상기 외부 장치로 인터럽트 신호를 전송하는 단계를 포함하고, 상기 제1 내지 제5 클럭들 각각은 각 동작 단계에 따라 선택적으로 활성화된다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 외부 장치와 통신하도록 구성된 물리 계층, 상기 물리 계층과 시스템 버스를 통해 연결된 NVMe(Nonvolatile Memory express) 제어부, 및 상기 NVMe 제어부의 동작에 제1 내지 제5 클럭들 각각을 선택적으로 활성화 또는 비활성화시키는 클럭 관리부를 포함하고, 상기 NVMe 제어부는 상기 제1 클럭을 기반으로 외부 장치로부터 정보를 수신하도록 구성된 제어 레지스터 블록, 상기 제2 클럭을 기반으로 상기 외부 장치로부터 커맨드를 페치하도록 구성된 커맨드 페치 블록, 상기 제3 클럭을 기반으로 상기 외부 장치와 직접 메모리 접근(DMA, Direct Memory Access) 동작을 수행하도록 구성된 DMA 엔진, 상기 제4 클럭을 기반으로 상기 외부 장치에 완료 정보를 기입하도록 구성된 완료 블록, 및 상기 제5 클럭을 기반으로 상기 외부 장치로 인터럽트 신호를 전송하도록 구성된 인터럽트 블록을 포함한다.
본 발명의 실시 예에 따른 스토리지 장치는 복수의 불휘발성 메모리 장치들, 및 상기 복수의 불휘발성 메모리 장치들을 제어하도록 구성된 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 복수의 클럭들을 기반으로, 외부 장치로부터 커맨드를 페치하고, 상기 페치된 커맨드에 대응하는 동작을 실행하고, 상기 동작에 대한 완료 정보를 상기 외부 장치로 전송하고, 인터럽트 신호를 상기 외부 장치로 전송하도록 구성된 NVMe(Nonvolatile Memory express) 제어부, 및 상기 NVMe 제어부의 동작 상태에 따라 상기 복수의 클럭들 각각을 선택적으로 활성화 또는 비활성화시키도록 구성된 클럭 관리부를 포함하는 스토리지 장치.
본 발명에 따르면, 스토리지 컨트롤러는 기능 블록들 각각의 동작 상태에 따라 각 기능 블록으로 제공되는 클럭을 선택적으로 제어함으로써, 전체적인 클럭 제공 시간을 감소시킬 수 있다.
또는 본 발명에 따르면, 스토리지 컨트롤러는 호스트 오버헤드 또는 장치 오버헤드를 감지하고, 감지된 오버헤드를 기반으로 각 기능 블록으로 제공되는 클럭을 제어할 수 있다. 따라서, 감소된 소비 전력을 갖는 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 상세하게 보여주는 블록도이다.
도 3은 도 1의 스토리지 시스템의 동작을 보여주는 순서도이다.
도 4는 도 2의 NVMe 제어부 및 클럭 관리부를 보여주는 블록도이다.
도 5는 도 4의 클럭 관리부의 동작을 보여주는 순서도이다.
도 6은 도 5의 동작 방법에 따라 제공되는 제1 내지 제6 클럭들을 보여주는 타이밍도이다.
도 7은 도 1의 스토리지 시스템의 동작을 보여주는 순서도이다.
도 8은 도 7의 동작에 따른 제1 내지 제6 클럭들을 보여주는 타이밍도이다.
도 9 및 도 10은 클럭 관리부가 호스트 오버헤드를 감지하는 동작을 설명하기 위한 도면들이다.
도 11은 클럭 관리부가 호스트 오버헤드에 대한 정보를 설정하는 방법을 보여주는 순서도이다.
도 12는 도 1의 스토리지 시스템의 동작을 보여주는 순서도이다.
도 13은 도 12의 동작 방법에 따른 제1 내지 제6 클럭들을 보여주는 타이밍도이다.
도 14는 클럭 관리부가 장치 오버헤드를 감지하는 동작을 설명하기 위한 도면들이다.
도 15는 본 발명의 실시 예에 따른 제1 내지 제6 클럭들을 예시적으로 보여주는 도면이다.
도 16a 내지 도 16c는 본 발명에 따른 스토리지 시스템의 예시적인 토폴로지를 보여주는 블록도들이다.
도 17은 본 발명이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서, 상세한 설명에 기재되거나 또는 도면에 도시된 "블록(block)", "부(unit)", "모듈(module)", 또는 "회로(circuit)" 등과 같이 특정 기능을 수행하거나 또는 특정 기능을 포함하는 용어들은 소프트웨어, 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(12)를 포함할 수 있다.
호스트(11)는 스토리지 장치(12)에 데이터를 저장하거나 또는 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다. 호스트(11)는 제1 포트(PT1)를 통해 스토리지 장치(12)와 통신할 수 있다. 예시적으로, 제1 포트(PT1)는 PCIe(Peripheral Component Interconnect Express) 프로토콜 기반의 물리 포트일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
이하에서, 본 발명의 기술적 특징을 간결하게 설명하기 위하여, 호스트(11) 및 스토리지 장치(12)는 PCIe 프로토콜 기반의 물리 포트(예를 들어, 제1 및 제2 포트들(PT1, PT2))을 통해 서로 통신하는 것으로 가정한다. 또한, 스토리지 장치(12)는 NVMe(Nonvolatile Memory express) 인터페이스를 기반으로 동작하는 NVMe 장치인 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
호스트(11)는 호스트 메모리 버퍼(11a)(HMB; Host Memory Buffer)를 포함할 수 있다. 호스트 메모리 버퍼(11a)는 전송 큐(SQ; Submission Queue) 및 완료 큐(CQ; Completion Queue)를 포함할 수 있다. 전송 큐(SQ)는 스토리지 장치(12)로 제공될 커맨드를 저장할 수 있다. 완료 큐(CQ)는 스토리지 장치(12)에서 완료된 동작에 대한 완료 정보를 저장할 수 있다.
스토리지 장치(12)는 스토리지 컨트롤러(110) 및 복수의 불휘발성 메모리 장치들(101~10i)을 포함할 수 있다. 일 실시 예에서, 스토리지 컨트롤러(110)는, 앞서 설명된 바와 같이, NVMe 인터페이스를 기반으로 동작하는 NVMe 장치일 수 있다. 즉, 스토리지 컨트롤러(100)는 NVMe 인터페이스에 기반된 미리 정해진 방식으로 호스트(11)와 통신하도록 구성될 수 있다.
복수의 불휘발성 메모리 장치들(101~10i)은 스토리지 컨트롤러(100)의 제어에 따라 동작할 수 있다. 예시적으로, 복수의 불휘발성 메모리 장치들(101~10i) 각각은 낸드 플래시 메모리 장치일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
스토리지 컨트롤러(100)는 NVMe 제어부(110), 클럭 관리부(120), 및 버퍼 메모리(130)를 포함할 수 있다. NVMe 제어부(110)는 제2 포트(PT2)를 통해 호스트(11)로부터 제공되는 다양한 신호들을 해석하거나 분석하고, 그 결과를 기반으로 대응하는 동작을 수행하도록 구성될 수 있다. 예시적으로, NVMe 제어부(110)는 상술된 다양한 동작들을 수행하기 위한 다양한 기능 블록들(또는 IP(intellectual property) 블록들)을 포함할 수 있다.
클럭 관리부(120)는 스토리지 컨트롤러(100)에서 사용되는 다양한 클럭들을 관리하도록 구성될 수 있다. 예를 들어, 클럭 관리부(120)는 NVMe 제어부(110)로 복수의 클럭들을 제공할 수 있다. 복수의 클럭들 각각은 NVMe 제어부(110)에 포함된 복수의 기능 블록들 각각으로 제공될 수 있다.
예시적인 실시 예에서, 클럭 관리부(120)는 NVMe 제어부(110)에 포함된 복수의 기능 블록들 각각의 동작 상태에 따라, 복수의 기능 블록들 각각으로 제공되는 클럭을 제어 또는 관리할 수 있다.
예를 들어, NVMe 컨트롤러(110)는 호스트(11)의 전송 큐(SQ)로부터 커맨드를 페치하도록 구성된 커맨드 페치 블록을 포함할 수 있다. 클럭 관리부(120)는 커맨드 페치 블록이 전송 큐(SQ)로부터 커맨드를 페치하는 동안, 커맨드 페치 블록으로 클럭을 제공할 수 있다. 커맨드 페치 블록이 커맨드 페치 동작을 완료한 이후에, 클럭 관리부(120)는 커맨드 페치 블록으로 제공되는 클럭을 차단하거나 또는 비활성화시킬 수 있다. 본 발명의 실시 예에 따른 더욱 상세한 클럭 관리부(120)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
예시적으로, 도 1에서, 클럭 관리부(120)가 NVMe 제어부(110)와 별도로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 클럭 관리부(120)는 NVMe 제어부(120)에 포함될 수 있다.
버퍼 메모리(130)는 호스트(11)로부터 제공되는 쓰기 데이터 또는 복수의 불휘발성 메모리 장치들(101~10i)로부터 제공되는 읽기 데이터를 저장하도록 구성될 수 있다. 예시적인 실시 예에서, 도 1에 도시된 바와 달리, 버퍼 메모리(130)는 스토리지 컨트롤러(100) 외부에 위치할 수 있다.
상술된 바와 같이, 본 발명에 따른 스토리지 컨트롤러(100)는 내부 기능 블록들의 동작 상태에 따라 대응하는 동작을 수행 중인 기능 블록에만 클럭을 제공할 수 있다. 다시 말해서, 본 발명에 따른 스토리지 컨트롤러(100)는 동작을 수행하지 않는 기능 블록들로 클럭을 제공하지 않을 수 있다. 따라서, 불필요한 클럭 제공이 방지되거나 또는 전체적인 클럭 제공 시간이 감소하기 때문에, 스토리지 장치(12)의 전력 소모가 감소된다.
도 2는 도 1의 스토리지 컨트롤러(100)를 상세하게 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(100)는 NVMe 제어부(110), 클럭 관리부(120), 버퍼 메모리(130), 물리 계층(140), 및 시스템 버스(150)를 포함할 수 있다. 앞서 설명된 바와 같이, 스토리지 컨트롤러(100)는 NVMe 인터페이스를 기반으로 동작하는 NVMe 장치일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
NVMe 제어부(110)는 시스템 버스(150)를 통해 물리 계층(140)으로 수신된 신호를 처리하도록 구성될 수 있다. 예를 들어, 호스트(11)는 제2 물리 포트(PT2)를 통해 물리 계층(140)으로 정보를 제공하고, NVMe 제어부(110)는 물리 계층(140)에서 수신된 정보를 분석하거나 또는 해석하도록 구성될 수 있다. NVMe 제어부(110) 및 물리 계층(140)은 시스템 버스(150)를 통해 서로 통신할 수 있다.
NVMe 제어부(110)는 제어 레지스터 블록(111), 커맨드 페치 블록(112), 메인 제어 블록(113), 직접 메모리 접근 엔진(114)(DMA engine; Direct Memory Access engine), 완료 블록(115), 및 인터럽트 블록(116)을 포함할 수 있다.
제어 레지스터 블록(111)는 호스트(11)에 의해 설정 가능한 레지스터를 포함하거나 또는 호스트(11)에 의해 설정되는 레지스터 값을 인식하는 일련의 동작을 처리하도록 구성될 수 있다. 예를 들어, 제어 레지스터 블록(111)은 호스트(11)로부터 제공되는 정보를 구분하기 위한 다양한 레지스터들을 포함할 수 있다. 호스트(11)는 제어 레지스터 블록(111)의 레지스터 값을 설정함으로써, 다양한 정보를 NVMe 제어부(110)로 알릴 수 있다.
커맨드 페치 블록(112)은 호스트(11)의 전송 큐(SQ)에 저장된 커맨드를 페치하는 일련의 동작을 처리할 수 있다. 예를 들어, 커맨드 페치 블록(112)는 호스트(11)로 메모리 읽기 요청을 전송하고, 호스트(11)로부터 전송 큐(SQ)에 저장된 커맨드를 수신할 수 있다.
메인 제어 블록(113)은 NVMe 제어부(110)의 제반 동작을 제어하거나 또는 NVMe 제어부(110)에서 수행되는 일련의 동작을 처리할 수 있다. 예시적인 실시 예에서, 메인 제어 블록(113)은 DMA 엔진(114)에 의한 DMA 동작을 관리 또는 제어할 수 있다.
DMA 엔진(114)은 호스트(11)와의 데이터를 주고 받는 DMA 동작을 처리할 수 있다. 예를 들어, DMA 엔진(114)은 호스트(11)로부터 쓰기 데이터를 수신하거나 또는 호스트(11)로 읽기 데이터를 전송하는 DMA 동작을 처리할 수 있다.
완료 블록(115)은 동작이 완료되었음을 알리는 완료 정보를 호스트(11)의 완료 큐(CQ)에 기입하는 일련의 동작을 처리할 수 있다. 예를 들어, 호스트(11)로부터 페치된 커맨드에 대한 동작이 완료된 경우, 완료 블록(115)은 동작이 완료되었음을 알리는 완료 정보를 호스트(11)의 완료 큐(CQ)에 기입할 수 있다.
인터럽트 블록(116)은 호스트(11)로 인터럽트 신호를 제공하는 일련의 동작을 처리할 수 있다. 예를 들어, 완료 블록(115)이 완료 정보를 완료 큐(CQ)에 기입한 이후에, 인터럽트 블록(116)은 인터럽트 신호를 호스트(11)로 제공함으로써, 완료 정보가 완료 큐(CQ)에 기입되었음을 호스트(11)로 알릴 수 있다. 예시적으로 인터럽트 신호는 핀-기반 인터럽트, MSI(Message Signaled Interrupts), MSI-X 등과 같은 시그널링 방식으로 제공될 수 있다.
상술된 바와 같이, NVMe 제어부(110)에 포함된 기능 블록들은 스토리지 컨트롤러(100) 또는 NVMe 제어부(110)의 동작들 중 대응하는 일련의 동작들을 처리하도록 구성될 수 있다. NVMe 제이거(110)에 포함된 기능 블록들 중 일부 또는 전부는 소프트웨어, 하드웨어 또는 그것들의 조합의 형태로 구현될 수 있다.
클럭 관리부(120)는 제1 내지 제6 클럭들(CLK1~CLK6)을 NVMe 제어부(110)로 제공할 수 있다. 예시적으로, 제1 내지 제6 클럭들(CLK1~CLK6) 각각은 NVMe 제어부(110)의 기능 블록들 각각으로 제공될 수 있다. 이 때, 클럭 관리부(120)는 기능 블록들(111~116) 각각의 동작 상태에 따라 대응하는 클럭만 활성화(또는 제공)되도록, 제1 내지 제6 클럭들(CLK1~CLK6)을 제어 또는 관리할 수 있다. 클럭 관리부(120)의 구성 및 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
버퍼 메모리(130)는 호스트(11)로부터 제공된 쓰기 데이터 또는 복수의 불휘발성 메모리 장치들(101~10i)로부터 제공된 읽기 데이터를 저장할 수 있다. 물리 계층(140)은 제2 포트(PT2)를 통해 호스트(11)로부터 수신된 신호를 처리하도록 구성될 수 있다. 예시적으로, 물리 계층(140)은 PCIe 프로토콜에 기반된 물리 계층일 수 있다.
시스템 버스(150)는 스토리지 컨트롤러(100)에 포함된 구성 요소들 사이의 통신 채널을 제공할 수 있다. 스토리지 컨트롤러(100)에 포함된 구성 요소들 각각은 시스템 버스(150)를 통해 통신하거나 또는 신호 또는 정보를 주고 받을 수 있다. 예시적으로, 시스템 버스(150)는 AHB(Advanced High-performance Bus), AXI(Advanced eXtensible Interface), AMBA(Advanced Microcontroller Bus Architecture) 등과 같은 다양한 버스들 중 하나를 포함할 수 있다.
도 3은 도 1의 스토리지 시스템(10)의 동작을 보여주는 순서도이다. 예시적으로, 본 발명의 기술적 사상을 용이하게 설명하기 위하여, 하나의 커맨드를 처리하기 위한 스토리지 시스템(10)의 개략적인 동작 방법이 도 3을 참조하여 설명된다. 그러나, 도 3에 도시된 동작 방법은 스토리지 시스템(10)의 일반적인 동작 방법이며, 본 발명이 이에 한정되는 것은 아니다.
도 1 내지 도 3을 참조하면, S110 단계에서, 호스트(11)는 커맨드(CMD)를 전송 큐(SQ)에 기입할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(12)에 데이터를 저장하기 위한 쓰기 커맨드, 또는 스토리지 장치(12)로부터 데이터를 읽기 위한 읽기 커맨드, 또는 플러시 커맨드, 소거 커맨드 등과 같이 스토리지 장치(12)를 제어하기 위한 다양한 커맨드들을 전송 큐(SQ)에 기입할 수 있다.
S120 단계에서, 호스트(120)는 도어 벨(Doorbell)을 스토리지 컨트롤러(100)로 제공할 수 있다. 예를 들어, 호스트(120)는 시그널링 방식을 통해 을 통해 제어 레지스터(111)에 포함된 도어 벨 레지스터에 새로운 값을 설정함으로써, 전송 큐(SQ)에 새로운 커맨드(CMD)가 기입되었음을 스토리지 컨트롤러(100)로 알릴 수 있다.
S130 단계에서, 스토리지 컨트롤러(100)는 전송 큐(SQ)에 기입된 커맨드(CMD)를 페치할 수 있다. 예를 들어, 스토리지 컨트롤러(100)는 도어 벨에 응답하여 새로운 커맨드(CMD)가 전송 큐(SQ)에 저장되었음을 인식할 수 있다. 이에 응답하여, 스토리지 컨트롤러(100)의 NVMe 제어부(110)의 커맨드 페치 블록(112)은 호스트(11)의 전송 큐(SQ)에 기입된 커맨드(CMD)를 페치할 수 있다.
S140 단계에서, 스토리지 컨트롤러(100)는 페치된 커맨드(CMD)에 대응하는 동작을 실행할 수 있다. 예를 들어, 페치된 커맨드(CMD)가 쓰기 커맨드인 경우, 스토리지 컨트롤러(100)는 호스트(11)로부터 쓰기 데이터를 수신하고, 수신된 쓰기 데이터를 버퍼 메모리(130) 또는 불휘발성 메모리 장치들(101~10i)에 저장할 수 있다. 또는 페치된 커맨드(CMD)가 읽기 커맨드인 경우, 스토리지 컨트롤러(100)는 불휘발성 메모리 장치들(101~10i)로부터의 읽기 데이터를 호스트(11)로 전송할 수 있다.
페치된 커맨드(CMD)에 대응하는 동작이 수행된 이후에, S150 단계에서, 스토리지 컨트롤러(100)는 완료 정보를 완료 큐(CQ)에 기입할 수 있다. 예를 들어, 완료 블록(115)은 페치된 커맨드(CMD)에 대한 동작이 완료되었음을 가리키는 완료 정보를 호스트(11)의 완료 큐(CQ)에 기입할 수 있다.
S160 단계에서, 스토리지 컨트롤러(100)는 인터럽트 신호를 호스트(11)로 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(100)의 인터럽트 블록(116)은 완료 정보가 완료 큐(CQ)에 기입되었음을 알리는 인터럽트 신호를 호스트(11)로 전송할 수 있다.
S170 단계에서, 호스트(11)는 완료 큐(CQ)에 기입된 완료 정보를 확인했음을 알리는 도어 벨을 스토리지 컨트롤러(100)로 제공할 수 있다.
본 발명의 실시 예에 따른 호스트(11) 및 스토리지 컨트롤러(100)는 상술된 바와 같은 일련의 동작 방법에 따라 다양한 동작들을 수행할 수 있다. 이 때, 스토리지 컨트롤러(100)의 클럭 관리부(120)는 각 단계에서 동작이 수행되는 기능 블록에만 클럭이 제공되도록 복수의 클럭들(CLK1~CLK6)을 제어할 수 있다.
도 4는 도 2의 NVMe 제어부(110) 및 클럭 관리부(120)를 보여주는 블록도이다. 간결한 설명을 위하여, 클럭 관리부(120)의 동작을 설명하는데 불필요한 구성 요소들은 생략된다.
도 2 내지 도 4를 참조하면, NVMe 제어부(110)는 제어 레지스터 블록(111), 커맨드 페치 블록(112), 메인 제어 블록(113), DMA 엔진(114), 완료 블록(115), 및 인터럽트 블록(116)을 포함할 수 있다. NVMe 제어부(110) 및 각 구성 요소들은 도 2를 참조하여 설명되었으므로 이에 대한 상세한 설명은 생략된다.
클럭 관리부(121)는 제1 내지 제6 AND 게이트(121~126), 클럭 발생기(127), 및 활성 신호 발생기(128)를 포함할 수 있다. 제1 내지 제6 AND 게이트들(121~126) 각각은 기준 클럭(CLK) 및 제1 내지 제6 활성 신호들(EN1~EN6)을 각각 수신할 수 있다. 복수의 AND 게이트들(121~126) 각각은 수신된 신호들에 응답하여 제1 내지 제6 클럭들(CLK1~CLK6)을 각각 출력할 수 있다.
예를 들어, 제1 AND 게이트(121)는 기준 클럭(CLK) 및 제1 활성 신호(EN1)에 응답하여 제1 클럭(CLK1)를 출력할 수 있다. 이 때, 제1 활성 신호(EN1)가 활성화된 경우(예를 들어, 제1 활성 신호(EN1)가 로직 하이인 경우), 제1 클럭(CLK1)는 기준 클럭(CLK)과 동일한 형태로 출력되고, 제1 활성 신호(EN1)가 비활성화된 경우(예를 들어, 제1 활성 신호(EN1)가 로직 로우인 경우), 제1 클럭(CLK1)은 비활성화(또는 로우 레벨)될 수 있다. 즉, 제1 활성 신호(EN1)에 따라, 제1 클럭(CLK1)가 활성화 또는 비활성화될 수 있다.
마찬가지로, 제2 내지 제6 AND 게이트들(122~126) 각각은 기준 클럭(CLK) 및 제2 내지 제6 활성 신호들(EN2~EN6)에 따라 제2 내지 제6 클럭들(CLK2~CLK6)을 각각 활성화 또는 비활성화시킬 수 있다.
제1 내지 제6 AND 게이트들(121~126) 각각으로부터의 제1 내지 제6 클럭들(CLK1~CLK6)은 NVMe 제어부(110)의 기능 블록들(111~116) 각각으로 제공될 수 있다. 예를 들어, 제1 클럭(CLK1)는 제어 레지스터 블록(111)으로 제공되고, 제어 레지스터 블록(111)은 제1 클럭(CLK1)를 기반으로 동작할 수 있다. 제2 클럭(CLK2)는 커맨드 페치 블록(112)으로 제공되고, 커맨드 페치 블록(112)은 제2 클럭(CLK2)를 기반으로 동작할 수 있다. 제3 클럭(CLK3)는 메인 제어 블록(113)으로 제공되고, 메인 제어 블록(113)은 제3 클럭(CLK3)를 기반으로 동작할 수 있다. 제4 클럭(CLK4)는 DMA 엔진(114)으로 제공되고, DMA 엔진(114)은 제4 클럭(CLK4)를 기반으로 동작할 수 있다. 제5 클럭(CLK5)는 완료 블록(115)으로 제공되고, 완료 블록(115)은 제5 클럭(CLK5)를 기반으로 동작할 수 있다. 제6 클럭(CLK6)는 인터럽트 블록(116)으로 제공될 수 있고, 인터럽트 블록(116)은 제6 클럭(CLK6)를 기반으로 동작할 수 있다.
클럭 발생기(127)는 기준 클럭(CLK)을 생성할 수 있다. 예시적으로, 클럭 발생기(127)는 생략될 수 있으며, 이 경우, 기준 클럭(CLK)은 외부 장치(예를 들어, 별도의 클럭 발생기 또는 호스트(11))로부터 제공될 수 있다.
활성 신호 발생기(128)는 NVMe 제어부(110)의 기능 블록들(111~116) 각각의 동작 상태에 따라 제1 내지 제6 활성 신호들(EN1~EN6)을 생성할 수 있다. 예를 들어, 커맨드 페치 블록(112)에 의해 커맨드(CMD)가 전송 큐(SQ)로부터 페치되는 동안(다시 말해서, 커맨드 페치 블록(112)이 동작되는 동안), 활성 신호 발생기(128)는 커맨드 페치 블록(112)으로 제공되는 제2 클럭(CLK2)이 활성화되도록 제2 활성 신호(EN2)를 생성할 수 있다. 마찬가지로, 완료 블록(115)에 의해 완료 정보가 완료 큐(CQ)에 기입되는 동안(다시 말해서, 완료 블록(115)이 동작하는 동안), 활성 신호 발생기(128)는 완료 블록(115)으로 제공되는 제5 클럭(CLK5)이 활성화되도록 제5 활성 신호(EN5)를 생성할 수 있다.
예시적인 실시 예로서, 활성 신호 발생기(128)는 시스템 버스(150)를 통해 송수신되는 정보를 기반으로 감지하고, 감지된 정보를 기반으로 제1 내지 제6 활성 신호들(EN1~EN6)을 생성할 수 있다. 또는 활성 신호 발생기(128)는 미리 정해진 방식에 따라 제1 내지 제6 활성 신호들(EN1~EN6)을 생성할 수 있다.
예시적으로, 도 4에 도시된 NVMe 제어부(110) 및 클럭 관리부(120)의 구성은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, NVMe 제어부(110)는 도 4에 도시된 기능 블록들 이외의 다른 기능 블록들을 더 포함할 수 있고, 클럭 관리부(120)는 다른 기능 블록들 각각의 동작 상태에 따라 서로 다른 클럭을 제공하도록 구성될 수 있다.
도 5는 도 4의 클럭 관리부(120)의 동작을 보여주는 순서도이다. 도 4 및 도 5를 참조하면, S121 단계에서, 클럭 관리부(120)는 제1 클럭(CLK1)을 제1 제어 레지스터 블록(111)으로 제공할 수 있다. 예를 들어, 클럭 관리부(120)는 제1 활성 신호(EN1)를 활성화시킴으로써, 제1 클럭(CLK1)을 제어 레지스터 블록(111)으로 제공할 수 있다.
S122 단계에서, 클럭 관리부(122)는 전송 큐(SQ)가 갱신되었는지 판별할 수 있다. 전송 큐(SQ)가 갱신되지 않은 경우(즉, 호스트(11)로부터 별도의 도어벨 시그널링이 없는 경우), 클럭 관리부(120)는 S121 단계를 계속 수행한다. 즉, 전송 큐(SQ)가 갱신되지 않은 경우(즉, 호스트(11)로부터 별도의 도어벨 시그널링이 없는 경우), 클럭 관리부(120)는 제어 레지스터 블록(111)으로 제1 클럭(CLK1)을 계속 제공할 수 있다. 예시적인 실시 예에서, S121 단계 및 S122 단계의 동작들은 도 3의 S120 단계의 동작과 대응될 수 있다.
전송 큐(SQ)가 갱신된 경우, S131 단계에서, 클럭 관리부(123)는 제2 클럭(CLK2)을 커맨드 페치 블록(112)으로 제공할 수 있다. 커맨드 페치 블록(112)는 제2 클럭(CLK2)을 사용하여 전송 큐(SQ)로부터 커맨드(CMD)를 페치하는 일련의 동작을 처리할 수 있다. 예시적인 실시 예에서, 전송 큐(SQ)가 갱신된 경우, 클럭 관리부(120)는 제어 레지스터 블록(111)으로 제공되는 제1 클럭(CLK1)을 차단하거나 또는 비활성화시킬 수 있다.
S132 단계에서, 클럭 관리부(120)는 커맨드 페치가 완료되었는지 판별할 수 있다. 커맨드 페치가 완료되지 않은 경우, 클럭 관리부(120)는 S131 단계를 수행한다. 예시적인 실시 예에서, S131 단계 및 S132 단계의 동작들은 도 3의 S130 단계의 동작과 대응될 수 있다.
커맨드 페치가 완료된 경우, S141 단계에서, 클럭 관리부(120)는 메인 제어 블록(113) 및 DMA 엔진(114)으로 제3 및 제4 클럭들(CLK3, CLK4)을 각각 제공할 수 있다. 메인 제어 블록(113) 및 DMA 엔진(114)은, 제3 및 제4 클럭들(CLK3, CLK4)을 기반으로, 페치된 커맨드(CMD)에 대응하는 동작을 수행할 수 있다. 예시적인 실시 예에서, 커맨드 페치가 완료된 경우, 클럭 관리부(120)는 커맨드 페치 블록(112)으로 제공되는 제2 클럭(CLK2)을 차단하거나 또는 비활성화시킬 수 있다.
S142 단계에서, 클럭 관리부(120)는 페치된 커맨드(CMD)에 대한 동작이 완료되었는지 판별할 수 있다. 페치된 커맨드(CMD)에 대한 동작이 완료되지 않은 경우, 클럭 관리부(120)는 S141 단계를 수행한다. 예시적인 실시 예에서, S141 단계 및 S142 단계의 동작들은 도 3의 S140 단계의 동작과 대응될 수 있다.
페치된 커맨드(CMD)에 대한 동작이 완료된 경우, 클럭 관리부(120)는 완료 블록(115)으로 제5 클럭(CLK5)을 제공할 수 있다. 완료 블록(115)은 제5 클럭(CLK5)을 기반으로 완료 정보를 완료 큐(CQ)에 기입하는 일련의 동작을 처리할 수 있다. 예시적인 실시 예에서, 페치된 커맨드(CMD)에 대한 동작이 완료된 경우, 클럭 관리부(120)는 메인 제어 블록(113) 및 DMA 엔진(114)으로 제공되는 제3 및 제4 클럭들(CLK3, CLK4)을 차단하거나 또는 비활성화시킬 수 있다.
S152 단계에서, 클럭 관리부(120)는 완료 정보를 기입하는 동작이 완료되었는지 판별할 수 있다. 완료 정보를 기입하는 동작이 완료되지 않은 경우, 클럭 관리부(120)는 S151 단계를 수행한다. 예시적인 실시 예에서, S151 단계 및 S152 단계의 동작들은 도 3의 S150 단계의 동작과 대응될 수 있다.
완료 정보를 기입하는 동작이 완료된 경우, S161 단계에서, 클럭 관리부(120)는 인터럽트 블록(116)으로 제6 클럭(CLK6)을 제공할 수 있다. 인터럽트 블록(116)은 제6 클럭을 기반으로, 호스트(11)로 인터럽트 신호를 전송할 수 있다. 예시적으로, 완료 정보를 기입하는 동작이 완료된 경우, 클럭 관리부(120)는 완료 블록(115)으로 제공되는 제5 클럭(CLK5)을 차단하거나 또는 비활성화할 수 있다.
비록 도면에 도시되는 않았으나, 인터럽트 블록(115)이 인터럽트 신호를 호스트(11)로 전송한 이후에, 클럭 관리부(120)는 인터럽트 블록(115)으로 제공되는 제6 클럭(CLK6)을 차단하거나 또는 비활성화시키고, 제어 레지스터 블록(111)으로 제1 클럭(CLK1)을 제공할 수 있다.
예시적으로, 상술된 S122 단계, S132 단계, S142 단계, 및 S152 단계의 판별 동작들은 별도의 신호 라인을 통해 제공되는 정보를 기반으로 수행되거나 또는 시스템 버스(150)를 통해 제공되는 정보를 기반으로 수행될 수 있다. 또는 클럭 관리부(120)는 미리 정해진 시간을 기반으로 각 단계의 동작이 완료되었는지 판별할 수 있다.
도 6은 도 5의 동작 방법에 따라 제공되는 제1 내지 제6 클럭들(CLK1~CLK6)을 보여주는 타이밍도이다. 도면의 간결성 및 설명의 편의를 위하여, 본 발명의 실시 예를 설명하는데 불필요한 구성 요소들은 생략된다.
도 4 내지 도 6을 참조하면, 전송 큐 갱신 구간(SQ Update)에서, 제1 클럭(CK1)이 활성화될 수 있다. 도 4에 도시된 바와 같이, 제1 클럭(CLK1)은 제어 레지스터 블록(111)으로 제공된다. 즉, 전송 큐 갱신 구간(SQ Update) 동안 제어 레지스터 블록(111)은 활성화된 제1 클럭(CLK1)을 기반으로 동작할 수 있다. 전송 큐 갱신 구간(SQ Update)은 도 5의 S121 단계의 동작과 대응될 수 있다.
다음으로, 커맨드 페치 구간(CMD Fetch) 동안, 제2 클럭(CLK2)이 활성화될 수 있다. 도 4에 도시된 바와 같이, 제2 클럭(CLK2)은 커맨드 페치 블록(112)으로 제공된다. 즉, 커맨드 페치 구간(CMD Fetch) 동안, 커맨드 페치 블록(112)은 활성화된 제2 클럭(CLK2)을 기반으로 전송 큐(SQ)로부터 커맨드(CMD)를 페치할 수 있다. 커맨드 페치 구간(CMD Fetch)은 도 5의 S131 단계의 동작과 대응될 수 있다.
다음으로, 커맨드 실행 구간(CMD Execute) 동안, 제3 및 제4 클럭들(CLK3, CLK4)이 활성화될 수 있다. 도 4에 도시된 바와 같이, 제3 클럭(CLK3)은 메인 제어 블록(113)으로 제공되고, 제4 클럭(CLK4)은 DMA 엔진(114)으로 제공된다. 즉, 커맨드 실행 구간(CMD Execute) 동안, 메인 제어 블록(113) 및 DMA 엔진(114)은 각각 활성화된 제3 및 제4 클럭들(CLK3, CLK4)을 기반으로, 페치된 커맨드(CMD)에 대응하는 동작을 실행할 수 있다. 커맨드 실행 구간(CMD Execute)은 도 5의 S141 단계의 동작과 대응될 수 있다.
다음으로, 완료 구간(Completion) 동안, 제5 클럭(CLK5)이 활성화될 수 있다. 도 4에 도시된 바와 같이, 제5 클럭(CLK5)은 완료 블록(115)으로 제공된다. 즉, 완료 구간(Completion) 동안 완료 블록(115)은 활성화된 제5 클럭(CLK5)을 기반으로 완료 정보를 완료 큐(CQ)에 기입할 수 있다. 완료 구간(Completion)은 도 5의 S151 단계의 동작과 대응될 수 있다.
다음으로, 인터럽트 구간(Interrupt) 동안, 제6 클럭(CLK6)이 활성화될 수 있다. 도 4에 도시된 바와 같이, 제6 클럭(CLK6)은 인터럽트 블록(116)으로 제공된다. 즉, 인터럽트 구간(Interrupt) 동안, 인터럽트 블록(116)은 활성화된 제6 클럭(CLK6)을 기반으로, 호스트(11)로 인터럽트 신호를 제공할 수 있다.
비록 도면에 도시되지는 않았으나, 메인 제어 블록(113)이 NVMe 제어부(110)의 제반 동작을 제어하도록 구성된 경우, 제3 클럭(CLK3)은 각 동작 구간에서 활성화되도록 구성될 수 있다.
도 6에 도시된 바와 같이, 각 동작 구간에서, 각 동작 구간과 대응되는 클럭만 활성화될 수 있다. 예를 들어, 커맨드 페치 구간(CMD Fetch) 동안, 커맨드 페치 블록(112)으로 제공되는 제2 클럭(CLK2)만 활성화되고, 나머지 클럭들(CLK1, CLK3~CLK6)은 비활성화될 수 있다. 다시 말해서, 제1 내지 제6 클럭들(CLK1~CLK6) 각각은 서로 다른 동작을 수행하는데 사용될 수 있으며, 각 클럭은 서로 중첩되어 활성화되지 않을 수 있다. 또는 각 클럭은 각 동작 구간 또는 각 기능 블록의 동작 상태에 따라 선택적으로 활성화될 수 있다. 따라서, 각 동작 구간에서, 동작을 수행하는데 불필요한 기능 블록들(또는 동작을 수행하지 않는 기능 블록들)로 제공되는 클럭이 비활성화되기 때문에, 스토리지 장치(10)의 전체적인 소비 전력이 감소된다.
도 7은 도 1의 스토리지 시스템(10)의 동작을 보여주는 순서도이다. 예시적인 실시 예에서, 도 7을 참조하여, 스토리지 시스템(10)의 쓰기 동작이 설명된다.
도 1, 도 4, 및 도 7을 참조하면, 호스트(11)는 S210 단계 및 S220 단계의 동작을 수행할 수 있다. S210 단계 및 S220 단계의 동작들은 도 3의 S110 단계 및 S120 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
호스트(11) 및 스토리지 컨트롤러(100)는 S230 단계의 동작을 수행함으로써, 스토리지 컨트롤러(100)는 전송 큐(SQ)에 포함된 커맨드(CMD)를 페치할 수 있다. S230 단계의 동작은 S231 단계 내지 S233 단계의 동작들을 포함할 수 있다.
S231 단계에서, 스토리지 컨트롤러(100)는 메모리 읽기 요청(MRd request)를 호스트(11)로 전송할 수 있다. 메모리 읽기 요청(MRd request)은 호스트(11)의 호스트 메모리 버퍼(HMB)에 포함된 전송 큐(SQ)로부터 커맨드(CMD)를 읽기 위한 요청일 수 있다.
S232 단계에서, 호스트(11)는 오버헤드(O/H) 상태일 수 있다. 예를 들어, 호스트(11)가 수신된 메모리 읽기 요청(MRd request)을 처리하는데 소정의 시간이 요구될 수 있다. 이하에서, 설명의 편의를 위하여, 이러한 호스트(11)의 처리 지연 시간은 호스트 오버헤드(host O/H)라 칭한다. 즉, 호스트(11)가 호스트 오버헤드 상태인 것은 호스트(11)가 특정 동작을 처리하기 위하여 소정의 시간 동안 다른 동작 또는 특정 동작에 대한 응답을 하지 못하는 상태를 가리킨다. 즉, 호스트 오버헤드 이후에, 호스트(11)는 특정 동작을 수행할 수 있다.
S233 단계에서, 호스트(11)는 호스트 오버헤드 이후에, 커맨드(CMD)를 스토리지 컨트롤러(100)로 전송할 수 있다.
S240 단계에서, 스토리지 컨트롤러(100)는 페치된 커맨드(CMD)에 대응하는 동작을 실행할 수 있다. 예를 들어, 페치된 커맨드(CMD)가 쓰기 커맨드인 경우, 스토리지 컨트롤러(100)는 S241 단계 내지 S246 단계의 동작들을 수행할 수 있다.
S241 단계에서, 스토리지 컨트롤러(100)는 DMA 요청을 호스트(11)로 전송할 수 있다. DMA 요청은 호스트(11)의 호스트 메모리 버퍼(HMB)에 저장된 쓰기 데이터에 대한 DMA 요청일 수 있다.
S242 단계에서, 호스트(11)는 오버헤드(O/H) 상태일 수 있다. 즉, 호스트(11)는 소정의 시간 동안 제1 쓰기 데이터(WRD1)에 대한 DMA 동작을 준비할 수 있다.
호스트 오버헤드(O/H) 이후에, S243 단계에서, 호스트(11)는 제1 쓰기 데이터(WRD1)를 스토리지 컨트롤러(100)로 전송할 수 있다. 즉, 호스트(11) 및 스토리지 컨트롤러(100)는 제1 쓰기 데이터(WRD1)에 대한 DMA 동작을 수행할 수 있다.
S244 단계에서, 호스트(11)는 오버헤드(O/H) 상태일 수 있다. 즉, 호스트(11)는 소정의 시간 동안 제2 쓰기 데이터(WRD2)에 대한 DMA 동작을 준비할 수 있다.
호스트 오버헤드(O/H) 이후에, S245 단계에서, 호스트(11)는 제2 쓰기 데이터(WRD2)를 스토리지 컨트롤러(100)로 전송할 수 있다. 즉, 호스트(11) 및 스토리지 컨트롤러(100)는 제2 쓰기 데이터(WRD1)에 대한 DMA 동작을 수행할 수 있다. 예시적으로, 스토리지 컨트롤러(100) 및 호스트(11)는 S242 단계 내지 S245 단계의 동작들을 반복 수행함으로써, 복수의 쓰기 데이터에 대한 DMA 동작을 수행할 수 있다.
S246 단계에서, 스토리지 컨트롤러(246)는 DMA 동작이 완료된 쓰기 데이터를 불휘발성 메모리 장치들(101~10i)에 프로그램할 수 있다. 예시적으로, 불휘발성 메모리 장치들(101~10i)의 프로그램 동작은 장치 오버헤드일 수 있다. 장치 오버헤드는 스토리지 장치(12) 내에서 수행되는 동작에 의한 지연을 가리킬 수 있다. 예시적으로, 일반적인 쓰기 커맨드인 경우, S246 단계의 동작은 생략될 수 있다.
다음으로, 호스트(11) 및 스토리지 컨트롤러(100)는 S250 단계 내지 S270 단계의 동작들을 수행할 수 있다. S250 단계 내지 S270 단계의 동작들은 도 3의 S150 단계 내지 S170 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, 호스트 오버헤드(O/H) 구간에서, 클럭 관리부(120)는 대응하는 기능 블록으로 대응하는 클럭을 제공하지 않을 수 있다. 예를 들어, S232 단계에서, 클럭 관리자(120)는 커맨드 페치 블록(120)으로 제2 클럭(CLK2)을 제공하지 않을 수 있다. S242 단계 및 S244 단계에서, 클럭 관리자(120)는 메인 제어 블록(113) 및 DMA 엔진(114)으로 제3 및 제4 클럭들(CLK3, CLK4)을 제공하지 않을 수 있다. 다시 말해서, 클럭 관리자(120)는 NVMe 제어부(110)의 각 기능 블록의 동작 상태에 따라 클럭을 제어할 뿐만 아니라, 호스트 오버헤드(host O/H) 상태를 인식하고, 호스트 오버헤드 상태에서 대응하는 기능 블록에 대응하는 클럭을 제공하지 않을 수 있다. 따라서, 전체적인 클럭 제공 시간이 감소되기 때문에, 스토리지 장치(12)의 소비 전력이 감소된다.
도 8은 도 7의 동작에 따른 제1 내지 제6 클럭들(CLK1~CLK6)을 보여주는 타이밍도이다. 간결한 설명을 위하여, 도 7의 동작에 따른 제1 내지 제6 클럭들(CLK1~CLK6)을 설명하는데 불필요한 구성 요소는 생략된다.
도 4, 도 7, 및 도 8을 참조하면, 클럭 관리부(120)는 전송 큐 갱신 구간(SQ Update), 커맨드 페치 구간(CMD Fetch), 쓰기 데이터 DMA 구간(WRD DMA), 완료 구간(Completion), 및 인터럽트 구간(Interrupt) 각각에서, 제1 내지 제6 클럭들(CLK1~CLK6)을 선택적으로 활성화시킬 수 있다. 전송 큐 갱신 구간(SQ Update), 커맨드 페치 구간(CMD Fetch), 쓰기 데이터 DMA 구간(WRD DMA), 완료 구간(Completion), 및 인터럽트 구간(Interrupt) 각각은 도 7의 S220 단계 내지 S260 단계의 동작들 각각과 대응될 수 있다. 전송 큐 갱신 구간(SQ Update), 완료 구간(Completion), 및 인터럽트 구간(Interrupt)은 도 6을 참조하여 설명된 각 구간과 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 6의 실시 예와 달리, 도 8의 실시 예에서, 커맨드 페치 구간(CMD Fetch) 동안, 클럭 관리부(120)는 호스트 오버헤드(Host O/H)를 감지하고, 호스트 오버헤드(Host O/H) 구간에서, 제2 클럭(CLK2)을 비활성화시킬 수 있다.
예를 들어, 클럭 관리부(120)는 메모리 읽기 요청(MRd request)을 전송하는 구간(즉, 도 7의 S231 단계)에서, 제2 클럭(CLK2)을 활성화시킬 수 있고, 커맨드 페치 블록(112)은 활성화된 제2 클럭(CLK2)을 기반으로 메모리 읽기 요청(MRd request)을 호스트(11)로 전송할 수 있다.
이후에, 호스트 오버헤드(Host O/H) 구간(즉, 도 7의 S232 단계)에서, 클럭 관리자(120)는 제2 클럭(CLK2)을 비활성화시킬 수 있다. 호스트 오버헤드(Host O/H)로 인하여, 커맨드 페치 블록(112)은 별도의 동작을 수행할 수 없기 때문에, 제2 클럭(CLK2)이 비활성화되더라도, 오동작이 발생하지 않을 것이다.
이후에, 호스트(11)로부터 커맨드(CMD)를 페치하는 동안(즉, 도 7의 S233 단계), 클럭 관리자(120)는 제2 클럭(CLK2)을 활성화시킬 수 있고, 커맨드 페치 블록(112)은 활성화된 제2 클럭(CLK2)을 기반으로 커맨드(CMD)를 페치할 수 있다.
커맨드 페치 구간(CMD Fetch)과 유사하게, 쓰기 데이터 DMA 구간(WRD DMA) 동안, 클럭 관리부(120)는 호스트 오버헤드(Host O/H)를 감지하고, 호스트 오버헤드(Host O/H) 구간에서, 제3 및 제4 클럭들(CLK3, CLK4)을 비활성화시킬 수 있다. 예를 들어, DMA 요청 구간(즉, 도 7의 S241 단계) 및 DMA 동작 수행 구간(즉, 도 7의 S243 단계 및 S245 단계)에서, 클럭 관리부(120)는 제3 및 제4 클럭들(CLK3, CLK4)을 활성화시킬 수 있고, 메인 제어 블록(113) 및 DMA 엔진(114)은 활성화된 제3 및 제4 클럭들(CLK3, CLK4)을 기반으로 DMA 요청을 전송하고, 쓰기 데이터에 대한 DMA 동작을 수행할 수 있다. 클럭 관리부(120)는 호스트 오버헤드(Host O/H) 구간(즉, 도 7의 S242 단계 및 S244 단계)에서, 제3 및 제4 클럭들(CLK3, CLK4)을 비활성화시킬 수 있다.
상술된 바와 같이, 본 발명에 따른 스토리지 컨트롤러(100)는 기능 블록들의 동작 상태에 따라 클럭을 선택적으로 활성화시킬 수 있다. 본 발명에 따른 스토리지 컨트롤러(100)는 호스트 오버헤드(Host O/H)를 인식하고, 호스트 오버헤드(Host O/H) 구간에서, 대응하는 클럭을 비활성화시킬 수 있다. 따라서, 전체적인 클럭 제공 시간이 감소되므로, 스토리지 장치(12)의 소비 전력이 감소된다.
도 9 및 도 10은 클럭 관리부가 호스트 오버헤드를 감지하는 동작을 설명하기 위한 도면들이다. 도면의 간결성 및 설명의 편의를 위하여, 클럭 관리부가 호스트 오버헤드를 감지하는 동작을 설명하는데 불필요한 구성 요소들은 생략된다.
먼저 도 9를 참조하면, 스토리지 컨트롤러(200)는 NVMe 제어부(210), 클럭 관리부(220), 버퍼 메모리(230), 물리 계층(240), 및 시스템 버스(250)를 포함할 수 있다. NVMe 제어부(210)는 제어 레지스터 블록(211), 커맨드 페치 블록(212), 메인 제어 블록(213), DMA 엔진(214), 완료 블록(215), 및 인터럽트 블록(216)을 포함할 수 있다. 스토리지 컨트롤러(200)의 각 구성 요소들은 도 1 내지 도 8을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
클럭 관리자(220)는 시스템 버스(250)를 통해 커맨드(CMD)가 제공되는 것을 감지함으로써, 호스트 오버헤드(Host O/H)를 감지할 수 있다. 예를 들어, 커맨드 페치 블록(212)에 의해 메모리 읽기 요청(MRd request)이 호스트(11)로 전송된 이후에, 클럭 관리부(220)는 제2 클럭(CLK2)을 비활성화시킬 수 있다.
이후, 호스트(11)로부터 수신된 커맨드(CMD)는 물리 계층(240)에 설정되고, 시스템 버스(250)를 통해 커맨드 페치 블록(212)으로 제공될 것이다. 이 때, 클럭 관리부(220)는 커맨드(CMD)가 시스템 버스(250)를 통해 커맨드(CMD)가 물리 계층(240)에 설정되었음을 인식할 수 있고, 이에 응답하여, 클럭 관리부(220)는 제2 클럭(CLK2)을 활성화시킬 수 있다. 즉, 클럭 관리부(220)는 시스템 버스(250)를 통해 물리 계층(240)에 커맨드(CMD)가 설정되었는지를 인식함으로써, 호스트 오버헤드 종료 시점을 인식할 수 있다.
다음으로, 도 10을 참조하면, 스토리지 컨트롤러(300)는 NVMe 제어부(310), 클럭 관리부(320), 버퍼 메모리(330), 물리 계층(340), 및 시스템 버스(350)를 포함할 수 있다. NVMe 제어부(310)는 제어 레지스터 블록(311), 커맨드 페치 블록(312), 메인 제어 블록(313), DMA 엔진(314), 완료 블록(315), 및 인터럽트 블록(316)을 포함할 수 있다. 스토리지 컨트롤러(300)의 각 구성 요소들은 도 1 내지 도 8을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
클럭 관리자(320)는 물리 계층(340)으로부터 제공되는 별도의 오버헤드 신호(O/H)를 기반으로 호스트 오버헤드(Host O/H)를 인식할 수 있다. 예를 들어, 커맨드 페치 구간(CMD Fetch)에서, 물리 계층(340)은 커맨드(CMD)가 설정된 경우, 별도의 신호 라인 또는 별도의 채널을 통해 오버헤드 신호(O/H)를 클럭 관리자(320)로 제공할 수 있다. 클럭 관리자(320)는 수신된 오버헤드 신호(O/H)를 기반으로 호스트 오버헤드(O/H)를 인식하고, 앞서 설명된 바와 같이 방법을 기반으로 각 클럭을 제어할 수 있다.
예시적으로, 오버헤드 신호(O/H)는 물리 계층(340)으로부터 제공될 수 있거나 또는 호스트(11)로부터 제공될 수 있다. 예를 들어, 호스트(11)는 사이드 밴드 채널을 통해 호스트 오버헤드에 대한 정보를 클럭 관리자로 제공할 수 있다.
도 11은 클럭 관리부가 호스트 오버헤드에 대한 정보를 설정하는 방법을 보여주는 순서도이다. 도 1 및 도 11을 참조하면, S310 단계에서, 스토리지 컨트롤러(100)는 초기화를 수행하여 호스트 오버헤드(Host O/H)에 대한 정보를 설정할 수 있다. 호스트 오버헤드(Host O/H)는 호스트(11)의 특성에 따라 결정될 수 있다. 예를 들어, 커맨드 페치 구간(CMD Fetch)에서, 호스트(11)는 미리 정해진 시간 동안 커맨드(CMD)를 전송하기 위한 준비를 수행할 수 있다. 스토리지 컨트롤러(100)는 초기화 동작에서, 미리 정해진 시간을 결정할 수 있다. 예시적으로, 미리 정해진 시간은 특정 동작을 반복 수행하여 결정될 수 있거나 또는 별도의 동작을 통해 결정될 수 있다.
S320 단계에서, 스토리지 컨트롤러(100)는 결정된 호스트 오버헤드(Host O/H)를 기반으로 클럭-제어를 수행할 수 있다. 예를 들어, 결정된 호스트 오버헤드(Host O/H)(즉, 호스트 오버헤드에 대한 시간)을 기반으로 앞서 설명된 바와 같이, NVMe 제어부(110)의 각 기능 블록으로 제공되는 클럭들을 제어할 수 있다. 호스트 오버헤드(Host O/H)에 기반된 클럭-제어는 앞서 설명되었으므로 이에 대한 상세한 설명은 생략된다.
도 12는 도 1의 스토리지 시스템(10)의 동작을 보여주는 순서도이다. 예시적으로, 도 12를 참조하여, 스토리지 시스템(10)의 읽기 동작이 설명된다. 간결한 설명을 위하여, 앞서 설명된 내용과 중복되는 설명은 생략된다.
도 1 및 도 12를 참조하면, 호스트(11)는 S410 단계 및 S420 단계의 동작들을 수행할 수 있다. S410 단계 및 S420 단계의 동작들은 도 3의 S110 단계 및 S120 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
스토리지 컨트롤러(110)는 S431 단계 내지 S433 단계의 동작들을 포함하는 S430 단계의 동작을 통해 커맨드(CMD)를 페치할 수 있다. S430 단계의 동작 및 S431 단계 내지 S433 단계의 동작들은 도 7의 S230 단계의 동작 및 S231 단계 내지 S233 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S440 단계에서, 스토리지 컨트롤러(100)는 페치된 커맨드(CMD)에 대응하는 동작을 수행할 수 있다. 예를 들어, 페치된 커맨드(CMD)가 읽기 커맨드인 경우, 스토리지 컨트롤러(100)는 S441 단계 내지 S443 단계의 동작들을 수행할 수 있다.
S441 단계에서, 스토리지 컨트롤러(100)는 장치 오버헤드(Device O/H) 상태일 수 있다. 예를 들어, 스토리지 컨트롤러(100)는 페치된 커맨드(CMD)(즉, 읽기 커맨드)에 응답하여, 대응하는 읽기 데이터를 준비할 수 있다. 읽기 데이터를 준비하는 시간이 장치 오버헤드(Device O/H)로서 작용할 수 있다. 예시적으로, 데이터를 준비하는 것은 복수의 불휘발성 메모리 장치들(101~10i)로부터 읽기 데이터를 읽고, 읽은 데이터를 버퍼 메모리(130)에 저장하는 동작 또는 읽기 데이터가 호스트(11)로 전송될 수 있도록 데이터를 준비하는 동작을 가리킬 수 있다.
장치 오버헤드(Device O/H) 동안, 클럭 관리부(120)는 대응하는 기능 블록으로 제공되는 대응하는 클럭을 비활성화시킬 수 있다. 예를 들어, 클럭 관리부(120)는 장치 오버헤드(Device O/H) 동안 메인 제어 블록(113) 및 DMA 엔진(114)으로 제공되는 제3 및 제4 클럭들(CLK3, CLK4)을 비활성화시킬 수 있다.
장치 오버헤드(Device O/H) 이후에, S442 단계에서, 스토리지 컨트롤러(100)는 DMA 요청을 호스트(11)로 전송할 수 있다. DMA 요청은 읽기 데이터를 호스트(11)로 전송하는 DMA 동작을 위한 요청일 수 있다. S443 단계에서, 스토리지 장치(100)는 DMA 동작을 통해 읽기 데이터(RDD)를 호스트(11)로 전송할 수 있다.
이후에, 스토리지 컨트롤러(100) 및 호스트(11)는 S450 단계 내지 S470 단계의 동작들을 수행할 수 있다. S450 단계 내지 S470 단계의 동작들은 도 3의 S150 단계 내지 S170 단계의 동작들과 유사하므로 이에 대한 상세한 설명은 생략된다.
상술된 바와 같이, 스토리지 시스템(10)의 읽기 동작에서, 스토리지 컨트롤러(110)는 호스트 오버헤드(Host O/H)뿐만 아니라, 장치 오버헤드(Device O/H)를 감지하고, 감지된 오버헤드(O/H) 구간에서, 클럭을 비활성화시킬 수 있다. 따라서, 감소된 소비전력을 스토리지 시스템이 제공된다.
도 13은 도 12의 동작 방법에 따른 제1 내지 제6 클럭들(CLK1~CLK6)을 보여주는 타이밍도이다. 간결한 설명을 위하여, 중복되는 설명 및 도 7의 동작에 따른 제1 내지 제6 클럭들(CLK1~CLK6)을 설명하는데 불필요한 구성 요소는 생략된다.
도 1, 도 12, 및 도 13을 참조하면, 클럭 관리부(120)는 전송 큐 갱신 구간(SQ Update), 커맨드 페치 구간(CMD Fetch), 읽기 데이터 DMA 구간(RDD DMA), 완료 구간(Completion), 및 인터럽트 구간(Interrupt) 각각에서, 제1 내지 제6 클럭들(CLK1~CLK6)을 선택적으로 활성화시킬 수 있다. 전송 큐 갱신 구간(SQ Update), 커맨드 페치 구간(CMD Fetch), 읽기 데이터 DMA 구간(RDD DMA), 완료 구간(Completion), 및 인터럽트 구간(Interrupt) 각각은 도 12의 S420 단계 내지 S460 단계의 동작들 각각과 대응될 수 있다. 커맨드 페치 구간(CMD Fetch)의 각 서브 동작들은 도 12의 S431 단계 내지 S433 단계의 동작들과 대응될 수 있다.
전송 큐 갱신 구간(SQ Update), 커맨드 페치 구간(CMD Fetch), 완료 구간(Completion), 및 인터럽트 구간(Interrupt)은 도 6, 및 도 8을 참조하여 설명된 각 구간과 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 12의 실시 예에서, 읽기 데이터 DMA 구간(RDD DMA) 동안, 클럭 관리부(120)는 장치 오버헤드(Device O/H)를 감지하고, 장치 오버헤드(Device O/H) 구간에서, 제3 및 제4 클럭들(CLK3, CLK4)을 비활성화시킬 수 있다. 예를 들어, 장치 오버헤드(Device O/H)(즉, 도 12의 S441 단계)에서, 클럭 관리부(120)는 제3 및 제4 클럭들(CLK3, CLK4)을 비활성화시킬 수 있다. 장치 오버헤드(Device O/H) 동안, 불휘발성 메모리 장치(101~10i)로부터 읽기 데이터가 읽어지고, 버퍼 메모리(130)에 읽기 데이터가 저장되므로, 제3 및 제4 클럭들(CLK3, CLK4)이 비활성화되더라도, 오작동이 발생하지 않을 것이다. 장치 오버헤드(Device O/H) 이후의 구간(즉, 도 12의 S442 단계 및 S443 단계)에서, 제3 및 제4 클럭들(CLK3, CLK4)을 활성화시킬 수 있다.
상술된 바와 같이, 본 발명에 따른 스토리지 컨트롤러(100)는 각 기능 블록의 동작 상태에 따라 대응되는 클럭을 선택적으로 활성화 또는 비활성화시킬 수 있고, 호스트 오버헤드 또는 장치 오버헤드를 인식하고, 인식된 오버헤드를 기반으로 클럭을 제어할 수 있다. 따라서, 전체적인 클럭 제공 시간이 감소되므로, 감소된 소비 전력을 갖는 스토리지 장치가 제공된다.
도 14는 클럭 관리부가 장치 오버헤드를 감지하는 동작을 설명하기 위한 도면들이다. 도 14를 참조하면, 스토리지 컨트롤러(400)는 NVMe 제어부(410), 클럭 관리부(420), 버퍼 메모리(430), 물리 계층(440), 및 시스템 버스(450)를 포함할 수 있다. NVMe 제어부(410)는 제어 레지스터 블록(411), 커맨드 페치 블록(412), 메인 제어 블록(413), DMA 엔진(414), 완료 블록(415), 및 인터럽트 블록(416)을 포함할 수 있다. 스토리지 컨트롤러(400)의 각 구성 요소들은 도 1 내지 도 8을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
클럭 관리부(420)는 시스템 버스(450)를 통해 버퍼 메모리(430)로부터 읽기 데이터가 저장되었음을 알리는 정보를 수신할 수 있고, 수신된 정보를 기반으로 제3 및 제4 클럭들(CLK3, CLK4)을 제어할 수 있다. 예를 들어, 클럭 관리부(420)는 시스템 버스(450)를 통해 버퍼 메모리(430)로부터 읽기 데이터가 저장되었음을 알리는 정보를 수신된 경우, 제3 및 제4 클럭들(CLK3, CLK4)을 활성화시킬 수 있다.
비록 도면에 도시되지는 않았으나, NVMe 제어부(410)는 복수의 불휘발성 메모리 장치들(101~10i)을 제어하기 위한 플래시 메모리 제어기(FMC; flash memory controller)를 포함할 수 있고, 플래시 메모리 제어기로부터 읽기 데이터가 준비되었음을 알리는 정보를 포함할 수 있다.
예시적으로, 비록 도면에 도시되지는 않았으나, 클럭 관리부(420)는 상술된 본 발명의 실시 예들에 따라 플래시 메모리 제어기(FMC)로 제공되는 클럭을 제어하도록 구성될 수 있다. 즉, 클럭 관리부(420)는 플래시 메모리 제어기(FMC)가 동작하는 동안에만 플래시 메모리 제어기(FMC)로 클럭을 제공하도록 구성될 수 있다.
도 15는 본 발명의 실시 예에 따른 제1 내지 제6 클럭들을 예시적으로 보여주는 도면이다. 간결한 설명을 위하여, 도 15를 참조하여, 앞서 설명된 실시 예들과 다른 구성만 설명된다.
도 1 및 도 15를 참조하면, 클럭 관리부(120)는 전송 큐 갱신 구간(SQ Update), 커맨드 페치 구간(CMD Fetch), 읽기 데이터 DMA 구간(RDD DMA), 완료 구간(Completion), 및 인터럽트 구간(Interrupt) 각각에서, 제1 내지 제6 클럭들(CLK1~CLK6)을 선택적으로 활성화시킬 수 있다. 각 구간에 대한 클럭 제어 방식은 도 1 내지 도 14를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 15의 실시 예에서, 클럭 관리부(120)는 현재 구간에서, 다음 구간에 제공될 클럭을 소정의 시간보다 일찍 활성화시킬 수 있다. 예를 들어, 앞서 설명된 실시 예들에서, 커맨드 페치 구간(CMD Fetch)에서, 클럭 관리부(120)는 제2 클럭(CLK2)만 활성화시키고, 나머지 클럭들(CLK1, CLK3~CLK6)은 비활성화시킬 수 있다. 반면에, 도 15의 'A'구간에 도시된 바와 같이 클럭 관리부(120)는 커맨드 페치 구간(CMD Fetch)에서, 제3 및 제4 클럭들(CLK3, CLK4)을 활성화시킬 수 있다. 즉, 제3 및 제4 클럭들(CLK3, CLK4)과 대응하는 커맨드 실행 구간(CMD Execute)보다 소정의 시간만큼 일찍 제3 및 제4 클럭들(CLK3, CLK4)이 활성화될 수 있다. 각 클럭이 소정의 시간보다 일찍 활성화됨으로써, 각 기능 블록으로 제공되는 클럭이 안정화될 수 있고, 각 기능 블록의 동작의 신뢰성이 향상될 수 있다.
상술된 본 발명의 실시 예들은 본 발명의 기술적 사상을 구체적이고 명확하게 설명하기 위한 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 16a 내지 도 16c는 본 발명에 따른 스토리지 시스템의 예시적인 토폴로지를 보여주는 블록도들이다. 도 16a를 참조하면, 스토리지 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함한다. 스토리지 장치(1200)는 스토리지 컨트롤러(1210) 및 복수의 불휘발성 메모리 장치들(NVM)을 포함할 수 있다. 스토리지 컨트롤러(1210)는 제1 및 제2 NVMe 제어부들(1211, 1212) 및 클럭 관리부(1213)를 포함할 수 있다. 제1 및 제2 NVMe 제어부들(1211, 1212) 각각은 도 1 내지 도 15를 참조하여 설명된 NVMe 제어부일 수 있고, 클럭 관리부(1213)는 도 1 내지 도 15를 참조하여 설명된 클럭 관리부일 수 있다.
호스트(1100)는 제1 포트(PT1)를 포함할 수 있고, 스토리지 컨트롤러(1210)는 제2 포트(PT2)를 포함할 수 있다. 호스트(1100) 및 스토리지 컨트롤러(1210)는 제1 및 제2 포트들(PT1, PT2)을 통해 서로 통신할 수 있다. 제1 및 제2 포트들(PT1, PT2)은 PCIe 프로토콜에 기반된 물리 포토일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
예시적으로, 제1 및 제2 NVMe 제어부들(1211, 1212) 각각은 물리적으로 구분되어 물리적 기능을 수행할 수 있다. 또는 제1 및 제2 NVMe 제어부들(1211, 1212) 각각은 논리적으로 구분되어 가상화 기능을 수행할 수 있다. 예시적으로, 가상화된 제1 및 제2 NVMe 제어부들(1211, 1212)은 싱글-루트 입출력 가상화(SR-IOV)를 통해 구현될 수 있다.
도 16b를 참조하면, 스토리지 시스템(2000)은 호스트(2100) 및 스토리지 장치(2200)를 포함한다. 스토리지 장치(2200)는 스토리지 컨트롤러(2210) 및 복수의 불휘발성 메모리 장치들(NVM)을 포함한다. 스토리지 컨트롤러(2210)는 제1 및 제2 NVMe 제어부들(2211, 2212) 및 클럭 관리부(2213)를 포함할 수 있다. 클럭 관리부(2213)는 도 1 내지 도 15를 참조하여 설명된 클럭 관리부일 수 있다.
호스트(2100)는 제1 포트(PT1)를 포함할 수 있고, 스토리지 컨트롤러(2210)는 제2 및 제3 포트들(PT2, PT3)을 포함할 수 있다. 호스트(2100) 및 스토리지 컨트롤러(2210)는 제1 내지 제3 포트들(PT1~PT3)을 통해 서로 통신할 수 있다. 이 경우, 제1 NVMe 제어부(2211)는 제2 포트(PT2)를 통해 제공되는 신호를 기반으로 동작할 수 있고, 제2 NVMe 제어부(2212)는 제3 포트(PT3)를 통해 제공되는 신호를 기반으로 동작할 수 있다. 즉, 제1 및 제2 NVMe 제어부들(2211, 2212)은 서로 물리적으로 구분된 제어 장치로서 구현될 수 있다.
도 16c를 참조하면, 스토리지 시스템(3000)은 호스트들(3110, 3120) 및 스토리지 장치(3200)를 포함할 수 있다. 스토리지 장치(3200)는 스토리지 컨트롤러(3210) 및 불휘발성 메모리 장치들(NVM)을 포함할 수 있다. 스토리지 컨트롤러(3210)는 NVMe 제어부(3211) 및 클럭 관리부(3213)를 포함할 수 있다. NVMe 제어부(3211) 및 클럭 관리부(3213)는 각각 도 1 내지 도 15를 참조하여 설명된 NVMe 제어부 및 클럭 관리부일 수 있다.
호스트들(3110, 3120)은 각각 제1 및 제2 포트들(PT1, PT2)을 포함할 수 있고, 스토리지 컨트롤러(3210)는 제3 포트(PT3)를 포함할 수 있다. 호스트들(3110, 3120) 및 스토리지 컨트롤러(3210)는 제1 내지 제3 포트들(PT1~PT3)을 통해 통신할 수 있다.
예시적으로, 상술된 스토리지 시스템들(1000~3000)은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 호스트 및 스토리지 장치는 물리적 포트 또는 채널뿐만 아니라, 다른 다양한 통신 방식들(예를 들어, 네트워크 패브릭 등)을 통해 서로 통신할 수 있다.
도 17은 본 발명이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 17을 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다.
SSD(4200)는 신호 커넥터(4201)를 통해 호스트(4100)와 신호(SIG)를 주고 받고, 전원 커넥터(4202)를 통해 전원(PWR)을 입력 받는다. 예시적으로, 신호 커넥터(4201)는 PCIe 프로토콜에 기반된 물리적 포트일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. SSD(4200)는 SSD 컨트롤러(4210), 복수의 플래시 메모리들(NMV), 보조 전원 장치(4230), 및 버퍼 메모리(4240)를 포함한다.
SSD 컨트롤러(4210)는 호스트(4100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(NVM)을 제어할 수 있다. 복수의 플래시 메모리들(NVM)은 SSD 컨트롤러(4210)의 제어에 따라 동작할 수 있다. 예시적으로, SSD 컨트롤러(4210)는 도 1 내지 도 15를 참조하여 설명된 NVMe 제어부 및 클럭 관리부를 포함할 수 있다.
보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원을 제공할 수 있다.
버퍼 메모리(4240)는 SSD(4200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(4240)는 호스트(1100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(NVM)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(NVM)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 또는 버퍼 메모리(4240)는 SSD 컨트롤러(4210)가 동작하는데 요구되는 다양한 정보들을 임시 저장할 수 있다.
상술된 본 발명의 실시 예들에 따르면, 스토리지 컨트롤러는 각 기능 블록들의 동작 상태에 따라, 각 기능 블록으로 제공되는 클럭을 선택적으로 활성화 또는 비활성화시킬 수 있다. 또는 스토리지 컨트롤러는 호스트 오버헤드 또는 장치 오버헤드를 감지하고, 감지된 오버헤드를 기반으로 각 기능 블록으로 제공되는 클럭을 제어할 수 있다. 따라서, 전체적인 클럭 제공 시간이 감소되므로, 감소된 소비 전력을 갖는 스토리지 장치가 제공된다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 전송 큐 및 완료 큐를 포함하는 외부 장치와 통신하도록 구성된 스토리지 컨트롤러의 동작 방법에 있어서,
    제1 클럭을 기반으로 상기 외부 장치로부터 커맨드에 대한 알림을 수신하는 단계;
    제2 클럭을 기반으로 상기 전송 큐로부터 상기 커맨드를 페치하는 단계;
    제3 클럭을 기반으로 상기 페치된 커맨드에 대응하는 동작을 수행하는 단계;
    제4 클럭을 기반으로 완료 정보를 상기 완료 큐에 상기 완료 큐에 기입하는 단계; 및
    제5 클럭을 기반으로 상기 외부 장치로 인터럽트 신호를 전송하는 단계를 포함하고,
    상기 제1 내지 제5 클럭들 각각은 상기 알림을 수신하는 단계, 상기 페치하는 단계, 상기 동작을 수행하는 단계, 상기 기입하는 단계, 및 상기 전송하는 단계 중 대응하는 동작 단계에 따라 선택적이고 독립적으로 활성화되고,
    상기 스토리지 컨트롤러는 NVMe(nonvolatile memory express) 인터페이스를 기반으로 상기 외부 장치와 통신하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제2 클럭을 기반으로 상기 전송 큐로부터 상기 커맨드를 페치하는 단계는:
    상기 외부 장치로 메모리 읽기 요청을 전송하는 단계; 및
    상기 외부 장치로부터 상기 커맨드를 수신하는 단계를 포함하는 동작 방법.
  3. 제 2 항에 있어서,
    상기 제2 클럭은 상기 메모리 읽기 요청을 전송한 이후부터 상기 커맨드를 수신하기 전까지 비활성화되는 동작 방법.
  4. 제 1 항에 있어서,
    상기 1 항에 있어서,
    상기 페치된 커맨드가 쓰기 커맨드인 경우, 상기 제3 클럭을 기반으로 상기 페치된 커맨드에 대응하는 상기 동작을 수행하는 단계는:
    상기 외부 장치로 직접 메모리 접근(DMA; Direct Random Access) 요청을 전송하는 단계;
    상기 외부 장치로부터 제1 DMA 동작을 통해 제1 쓰기 데이터를 수신하는 단계; 및
    상기 외부 장치로부터 제2 DMA 동작을 통해 제2 쓰기 데이터를 수신하는 단계를 포함하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 DMA 요청을 전송한 이후부터 상기 제1 쓰기 데이터의 수신을 시작하기 전까지 상기 제3 클럭이 비활성화되고, 상기 제1 쓰기 데이터의 수신을 완료한 이후부터 상기 제2 쓰기 데이터의 수신을 시작하기 전까지 상기 제3 클럭이 비활성화되는 동작 방법.
  6. 제 1 항에 있어서,
    상기 페치된 커맨드가 읽기 커맨드인 경우, 상기 제3 클럭을 기반으로 상기 페치된 커맨드에 대응하는 상기 동작을 수행하는 단계는:
    상기 페치된 커맨드에 응답하여 불휘발성 메모리 장치로부터 상기 페치된 커맨드에 대응하는 읽기 데이터를 읽는 단계;
    상기 외부 장치로 직접 메모리 접근(DMA; Direct Memory Access) 요청을 전송하는 단계; 및
    DMA 동작을 통해 상기 읽기 데이터를 상기 외부 장치로 전송하는 단계를 포함하는 동작 방법.
  7. 제 6 항에 있어서,
    상기 제3 클럭은 상기 읽기 데이터가 상기 불휘발성 메모리 장치로부터 읽어지는 동안 비활성화되는 동작 방법.
  8. 제 1 항에 있어서,
    상기 알림은 상기 외부 장치로부터 도어벨 시그널링을 통해 수신되는 동작 방법.
  9. 스토리지 컨트롤러에 있어서,
    외부 장치와 통신하도록 구성된 물리 계층;
    시스템 버스를 통해 상기 물리 계층과 연결된 NVMe(Nonvolatile Memory express) 제어부; 및
    클럭 관리부를 포함하고,
    상기 NVMe 제어부는:
    제1 클럭을 기반으로 상기 외부 장치로부터 정보를 수신하도록 구성된 제어 레지스터 블록;
    제2 클럭을 기반으로 상기 외부 장치로부터 커맨드를 페치하도록 구성된 커맨드 페치 블록;
    제3 클럭을 기반으로 상기 외부 장치와 직접 메모리 접근(DMA; Direct Memory Access) 동작을 수행하도록 구성된 DMA 엔진;
    제4 클럭을 기반으로 상기 외부 장치에 완료 정보를 기입하도록 구성된 완료 블록; 및
    제5 클럭을 기반으로 상기 외부 장치로 인터럽트 신호를 전송하도록 구성된 인터럽트 블록을 포함하고,
    상기 스토리지 컨트롤러는 NVMe(nonvolatile memory express) 인터페이스를 기반으로 상기 외부 장치와 통신하고,
    상기 클럭 관리부는 상기 제1 내지 제5 클럭들 각각을 상기 제어 레지스터블록, 상기 커맨드 페치 블록, 상기 DMA 엔진, 상기 완료 블록, 및 상기 인터럽트 블록의 동작들에 따라 선택적이고 독립적으로 활성화시키거나 또는 비활성화시키도록 구성된 스토리지 컨트롤러.
  10. 제 9 항에 있어서,
    상기 클럭 관리부는 상기 외부 장치로부터의 상기 커맨드가 상기 물리 계층에 설정된 것을 가리키는 정보를 상기 시스템 버스를 통해 감지하고, 상기 감지된 정보를 기반으로 상기 제2 클럭을 선택적으로 활성화시키는 스토리지 컨트롤러.
  11. 제 9 항에 있어서,
    상기 클럭 관리부는 상기 물리 계층으로부터 호스트 오버헤드에 대한 정보를 수신하고, 상기 커맨드 페치 블록이 상기 외부 장치로부터 상기 커맨드를 페치하는 동안, 상기 호스트 오버헤드에 대한 정보를 기반으로 상기 제2 클럭을 선택적으로 비활성화시키는 스토리지 컨트롤러.
  12. 제 11 항에 있어서,
    상기 호스트 오버헤드는 상기 외부 장치에 의해 발생한 처리 지연 시간을 가리키는 스토리지 컨트롤러.
  13. 제 9 항에 있어서,
    상기 페치된 커맨드가 쓰기 커맨드인 경우:
    상기 DMA 엔진은 상기 외부 장치로 쓰기 DMA 요청을 전송하고, 상기 외부 장치와 쓰기 데이터에 대한 쓰기 DMA 동작을 수행하고,
    상기 클럭 관리부는 상기 쓰기 DMA 요청이 전송되는 동안 상기 제3 클럭을 활성화시키고, 상기 쓰기 DMA 요청을 전송한 이후부터 상기 쓰기 DMA 동작을 시작하기 전까지 상기 제3 클럭을 비활성화시키고, 상기 쓰기 DMA 동작이 수행되는 동안 상기 제3 클럭을 활성화시키는 스토리지 컨트롤러.
  14. 제 9 항에 있어서,
    상기 페치된 커맨드가 읽기 커맨드인 경우:
    상기 DMA 엔진은 상기 외부 장치로 읽기 DMA 요청을 전송하고, 상기 외부 장치와 읽기 데이터에 대한 읽기 DMA 동작을 수행하고,
    상기 클럭 관리부는 상기 커맨드가 페치된 이후부터 상기 읽기 DMA 요청이 전송되기 전까지 상기 제3 클럭을 비활성화시키고, 상기 읽기 DMA 요청이 전송되는 동안 및 상기 읽기 DMA 동작이 수행되는 동안 상기 제3 클럭을 활성화시키는 스토리지 컨트롤러.
  15. 스토리지 장치에 있어서,
    복수의 불휘발성 메모리 장치들; 및
    상기 복수의 불휘발성 메모리 장치들을 제어하도록 구성된 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는:
    복수의 클럭들을 기반으로, 외부 장치로부터 커맨드를 페치하고, 상기 페치된 커맨드에 대응하는 동작을 실행하고, 상기 동작에 대한 완료 정보를 상기 외부 장치로 기입하고, 인터럽트 신호를 상기 외부 장치로 전송하도록 구성된 NVMe(Nonvolatile Memory express) 제어부; 및
    상기 페치, 상기 실행, 상기 기입, 및 상기 전송 중 상기 NVMe 제어부의 동작들에 따라 상기 복수의 클럭들 각각을 선택적으로 독립적으로 활성화시키거나 또는 비활성화시키도록 구성된 클럭 관리부를 포함하고,
    상기 스토리지 컨트롤러는 NVMe(nonvolatile memory express) 인터페이스를 기반으로 상기 외부 장치와 통신하는 스토리지 장치.
  16. 제 15 항에 있어서,
    상기 복수의 클럭들은 제1 내지 제4 클럭들을 포함하고,
    상기 클럭 관리부는:
    상기 NVMe 제어부가 상기 외부 장치로부터 상기 커맨드를 페치하는 동안 상기 제1 클럭을 활성화시키고,
    상기 NVMe 제어부가 상기 대응하는 동작을 실행하는 동안 상기 제2 클럭을 활성화시키고,
    상기 NVMe 제어부가 상기 완료 정보를 상기 외부 장치로 전송하는 동안 상기 제3 클럭을 활성화시키고,
    상기 NVMe 제어부가 상기 인터럽트 신호를 상기 외부 장치로 전송하는 동안 상기 제4 클럭을 활성화시키는 스토리지 장치.
  17. 제 16 항에 있어서,
    상기 클럭 관리부는,
    상기 NVMe 제어부가 상기 외부 장치로부터 상기 커맨드를 페치하는 동안, 상기 외부 장치의 오버헤드에 따라 상기 제1 클럭을 선택적으로 활성화 또는 비활성화시키는 스토리지 장치.
  18. 제 16 항에 있어서,
    상기 클럭 관리부는,
    상기 NVMe 제어부가 상기 대응하는 동작을 수행하는 동안, 상기 외부 장치의 오버헤드 또는 상기 복수의 불휘발성 메모리 장치들의 오버헤드에 따라 상기 제3 클럭을 선택적으로 활성화 또는 비활성화시키는 스토리지 장치.
  19. 삭제
  20. 삭제
KR1020170174347A 2017-12-18 2017-12-18 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법 KR102493964B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020170174347A KR102493964B1 (ko) 2017-12-18 2017-12-18 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법
US16/055,197 US10895905B2 (en) 2017-12-18 2018-08-06 Storage controller, storage device including the same, and operation method of storage controller
EP18200565.2A EP3499377B1 (en) 2017-12-18 2018-10-16 Storage controller, storage device including the same, and operation method of storage controller
CN201811530971.1A CN110059034A (zh) 2017-12-18 2018-12-14 存储控制器及其操作方法和包括该存储控制器的存储设备
US17/151,273 US11940862B2 (en) 2017-12-18 2021-01-18 Storage controller, storage device including the same, and operation method of storage controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170174347A KR102493964B1 (ko) 2017-12-18 2017-12-18 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190073055A KR20190073055A (ko) 2019-06-26
KR102493964B1 true KR102493964B1 (ko) 2023-02-01

Family

ID=63878336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170174347A KR102493964B1 (ko) 2017-12-18 2017-12-18 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법

Country Status (4)

Country Link
US (2) US10895905B2 (ko)
EP (1) EP3499377B1 (ko)
KR (1) KR102493964B1 (ko)
CN (1) CN110059034A (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613992B2 (en) * 2018-03-13 2020-04-07 Tsinghua University Systems and methods for remote procedure call
US20210181990A1 (en) * 2019-12-16 2021-06-17 Micron Technology, Inc. Interrupt signaling for a memory device
EP3842952B1 (en) * 2019-12-23 2023-05-10 Samsung Electronics Co., Ltd. Storage controller managing completion timing, and operating method thereof
KR20210080761A (ko) * 2019-12-23 2021-07-01 삼성전자주식회사 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법
KR20210094178A (ko) 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
US11876885B2 (en) * 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
CN112256601B (zh) * 2020-10-19 2023-04-21 苏州凌云光工业智能技术有限公司 数据存取控制方法、嵌入式存储系统及嵌入式设备
CN113721838B (zh) * 2021-07-22 2023-12-19 成都忆芯科技有限公司 用于存储设备的写、读数据方法、存储控制器以及dma引擎
CN115840620B (zh) * 2023-02-27 2023-05-16 珠海星云智联科技有限公司 一种数据通路构建方法、设备及介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067691A (ja) 2001-08-24 2003-03-07 Matsushita Electric Ind Co Ltd メモリ装置
KR100878527B1 (ko) 2002-07-08 2009-01-13 삼성전자주식회사 Nand 형 플래쉬 메모리 제어기와 제어기에서 사용되는클럭제어방법
US7203811B2 (en) * 2003-07-31 2007-04-10 International Business Machines Corporation Non-fenced list DMA command mechanism
US7523282B1 (en) 2005-10-27 2009-04-21 Sun Microsystems, Inc. Clock enable throttling for power savings in a memory subsystem
US7701255B2 (en) 2007-11-06 2010-04-20 Elastix Corporation Variability-aware scheme for asynchronous circuit initialization
WO2009079744A1 (en) 2007-12-21 2009-07-02 Mosaid Technologies Incorporated Non-volatile semiconductor memory device with power saving feature
JP2010152853A (ja) * 2008-12-26 2010-07-08 Toshiba Corp データ記憶装置
US8432768B2 (en) 2009-01-12 2013-04-30 Rambus Inc. Mesochronous signaling system with multiple power modes
WO2011056729A2 (en) 2009-11-05 2011-05-12 Rambus Inc. Interface clock management
US8782456B2 (en) 2010-06-01 2014-07-15 Intel Corporation Dynamic and idle power reduction sequence using recombinant clock and power gating
KR20140035771A (ko) 2012-09-14 2014-03-24 삼성전자주식회사 임베디드 멀티미디어 카드, 상기 임베디드 멀티미디어 카드를 제어하는 호스트, 및 그 동작방법
JP6139010B2 (ja) 2013-03-15 2017-05-31 インテル・コーポレーション デバイス
CN105573408A (zh) 2014-10-16 2016-05-11 飞思卡尔半导体公司 集成电路以及低功率操作方法
KR102238652B1 (ko) 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
KR102274038B1 (ko) * 2015-08-03 2021-07-09 삼성전자주식회사 백업 기능을 갖는 메모리 모듈
KR20170032502A (ko) 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
CN106919531B (zh) * 2015-12-25 2020-02-21 华为技术有限公司 基于非易失性存储总线协议的交互方法及设备

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
일본공개특허 제2010-152853호(2010.07.08.) 1부.*
한국공개특허 제10-2011-0113736호(2011.10.18.) 1부.*
한국공개특허 제10-2017-0016548호(2017.02.14.) 1부.*
한국공개특허 제10-2017-0032502호(2017.03.23.) 1부.*

Also Published As

Publication number Publication date
US10895905B2 (en) 2021-01-19
EP3499377A1 (en) 2019-06-19
EP3499377B1 (en) 2020-07-15
US11940862B2 (en) 2024-03-26
KR20190073055A (ko) 2019-06-26
CN110059034A (zh) 2019-07-26
US20210141440A1 (en) 2021-05-13
US20190187774A1 (en) 2019-06-20

Similar Documents

Publication Publication Date Title
KR102493964B1 (ko) 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법
CN104520932B (zh) 闪存存储器控制器
US7739487B2 (en) Method for booting a host device from an MMC/SD device, a host device bootable from an MMC/SD device and an MMC/SD device method a host device may booted from
CN109947362B (zh) 管理闪存存储器读取操作
KR20160114726A (ko) 명령어 큐잉
JP2014059876A5 (ja) ホスト、不揮発性メモリ装置、及び不揮発性メモリカードシステム
JP2003150574A (ja) マイクロコンピュータ
KR100958850B1 (ko) 플래시 메모리의 작동을 모니터링하기 위한 디바이스 및방법
KR100634436B1 (ko) 멀티 칩 시스템 및 그것의 부트코드 페치 방법
KR20160087224A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10268416B2 (en) Method and systems of controlling memory-to-memory copy operations
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
US10802742B2 (en) Memory access control
KR20210045507A (ko) 데이터 버스 모드에 기초하는 읽기 작업 및 쓰기 작업의 스케줄링
KR20220059981A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US8271697B2 (en) State change in systems having devices coupled in a chained configuration
TWI592866B (zh) 固態硬碟系統的原子寫入方法以及使用該方法的裝置
KR20150057397A (ko) 데이터 저장 장치
TWI696078B (zh) 記憶體裝置及其操作方法
WO2023030128A1 (zh) 通信方法、装置、电子设备、存储介质及片上系统
US9280298B2 (en) Storage device and storage system
KR20110019491A (ko) 데이터 처리 방법 및 데이터 처리 시스템
JP2016026345A (ja) メモリアレイにおける読み出し待ち時間を短縮するためのメモリ操作の一時停止
CN109086003B (zh) 降低集成电路功耗的方法及其介质接口控制器
US20020166074A1 (en) Method and device for providing a low power embedded system bus architicture

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant