KR20210080761A - 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 - Google Patents

컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 Download PDF

Info

Publication number
KR20210080761A
KR20210080761A KR1020190172650A KR20190172650A KR20210080761A KR 20210080761 A KR20210080761 A KR 20210080761A KR 1020190172650 A KR1020190172650 A KR 1020190172650A KR 20190172650 A KR20190172650 A KR 20190172650A KR 20210080761 A KR20210080761 A KR 20210080761A
Authority
KR
South Korea
Prior art keywords
completion
command
latency
host
queue
Prior art date
Application number
KR1020190172650A
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 KR1020190172650A priority Critical patent/KR20210080761A/ko
Priority to US16/983,471 priority patent/US11366770B2/en
Priority to CN202010960350.8A priority patent/CN113093989A/zh
Priority to EP20216219.4A priority patent/EP3842952B1/en
Publication of KR20210080761A publication Critical patent/KR20210080761A/ko
Priority to US17/751,798 priority patent/US20220283962A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명의 실시 예에 따른 전송 큐 및 완료 큐를 포함하는 호스트와 통신하도록 구성된 스토리지 컨트롤러의 동작 방법은 호스트로부터 전송 큐 도어벨을 수신하는 단계, 수신된 전송 큐 도어벨에 응답하여 호스트의 전송 큐로부터 레이턴시를 포함하는 제1 커맨드를 페치하는 단계, 페치된 제1 커맨드를 처리하는 단계, 및 레이턴시를 기반으로 결정된 타이밍에 제1 커맨드의 처리 완료를 가리키는 제1 컴플리션을 호스트의 완료 큐에 기입하는 단계를 포함한다.

Description

컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법{STORAGE CONTROLLER MANAGING COMPLETION TIMING, AND OPERATING METHOD THEREOF}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법에 관한 것이다.
반도체 메모리는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다. 불휘발성 메모리 장치 중 플래시 메모리는 대용량 저장 매체로 널리 사용된다. 플래시 메모리 장치를 기반으로 하는 SSD(Solid State Drive)와 같은 데이터 저장 장치에 SATA(Serial Advanced Technology Attachment), PCIe(Peripheral Component Interconnect express), SAS(Serial Attached SCSI) 등과 같은 기존의 인터페이스를 활용할 수 있으나, 근본적인 한계점을 갖는다.
이에 따라, 불휘발성 메모리 기반의 저장 장치에 최적화된 NVMe(Non-Volatile Memory express) 인터페이스가 개발되었다. 다만, NVMe 인터페이스가 적용된 저장 장치의 성능이 증가함에 따라, 호스트가 처리된 데이터를 관리하는 오버헤드가 증가하고 있다. 또한, 호스트가 처리된 데이터를 관리하면서 호스트가 다른 프로세스를 처리하는 것이 지연되는 문제가 있다.
본 발명은 상술된 기술적 문제점을 해결하기 위한 것으로, 본 발명의 실시 예에 따르면, 호스트의 레이턴시 정보를 기반으로 결정된 타이밍에 컴플리션이 기입되도록 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법이 제공된다.
본 발명의 실시 예에 따른 전송 큐 및 완료 큐를 포함하는 호스트와 통신하도록 구성된 스토리지 컨트롤러의 동작 방법은 상기 호스트로부터 전송 큐 도어벨을 수신하는 단계, 상기 수신된 전송 큐 도어벨에 응답하여, 상기 호스트의 상기 전송 큐로부터 레이턴시를 포함하는 제1 커맨드를 페치하는 단계, 상기 페치된 제1 커맨드를 처리하는 단계, 및 상기 레이턴시를 기반으로 결정된 타이밍에 상기 제1 커맨드의 처리 완료를 가리키는 제1 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계를 포함한다.
본 발명의 실시 예에 따른 전송 큐 및 완료 큐를 포함하는 호스트와 통신하도록 구성된 스토리지 컨트롤러의 동작 방법은 상기 호스트로부터 제1 및 제2 전송 큐 도어벨을 수신하는 단계, 상기 수신된 제1 전송 큐 도어벨에 응답하여, 상기 호스트의 상기 전송 큐로부터 제1 레이턴시를 포함하는 제1 커맨드를 페치하는 단계, 상기 수신된 제2 전송 큐 도어벨에 응답하여, 상기 호스트의 상기 전송 큐로부터 제2 레이턴시를 포함하는 제2 커맨드를 페치하는 단계, 상기 페치된 제1 커맨드를 처리하는 단계, 상기 제1 레이턴시를 기반으로 결정된 제1 타이밍에 상기 제1 커맨드의 처리 완료를 가리키는 제1 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계, 상기 페치된 제2 커맨드를 처리하는 단계, 및 상기 제2 레이턴시를 기반으로 결정된 제2 타이밍에 상기 제2 커맨드의 처리 완료를 가리키는 제2 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 호스트로부터 제1 전송 큐 도어벨을 수신하고, 상기 수신된 제1 전송 큐 도어벨에 응답하여 상기 호스트의 상기 전송 큐로부터 제1 레이턴시를 포함하는 제1 커맨드를 페치하고, 상기 제1 레이턴시를 기반으로 상기 제1 커맨드의 처리 완료를 가리키는 제1 컴플리션을 상기 호스트의 완료 큐에 기입할 타이밍을 결정하도록 구성된 커맨드 매니저, 및 상기 커맨드 매니저로부터 제1 커맨드의 처리를 요청하는 요청 신호를 수신하고, 상기 요청 신호에 응답하여 직접 메모리 접근(Direct Memory Access: DMA) 전송을 기반으로 상기 제1 커맨드가 요청한 데이터를 전송하고, 상기 제1 커맨드의 처리 완료를 알리는 완료 신호를 상기 커맨드 매니저로 출력하도록 구성된 DMA 엔진을 포함한다.
본 발명의 실시 예에 따르면, 호스트의 레이턴시 정보를 기반으로 결정된 타이밍에 컴플리션이 기입되도록 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법이 제공된다.
또한, 컴플리션이 기입되는 타이밍이 제어됨에 따라, 컴플리션의 기입이 호스트에서 처리되는 프로세스에 미치는 영향이 감소하고, 호스트의 프로세스 수행 속도가 향상된 스토리지 컨트롤러, 및 이의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 호스트를 보여주는 블록도이다.
도 3은 도 1의 스토리지 컨트롤러를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 보여주는 순서도이다.
도 5는 도 4의 전송 큐에 기입된 커맨드의 정보를 예시적으로 보여주는 도면이다.
도 6a는 도 4의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 6b는 도 6a의 호스트 및 스토리지 컨트롤러가 처리하는 프로세스를 예시적으로 보여주는 타이밍도이다.
도 7a는 도 4의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 7b는 도 7a의 호스트 및 스토리지 컨트롤러가 처리하는 프로세스를 예시적으로 보여주는 타이밍도이다.
도 8a는 도 4의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 8b는 도 8a의 호스트 및 스토리지 컨트롤러가 처리하는 프로세스를 예시적으로 보여주는 타이밍도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 예시적으로 보여주는 순서도이다.
도 10은 도 9의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 예시적으로 보여주는 순서도이다.
도 12는 도 11의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 호스트가 수행하는 프로세스를 예시적으로 보여주는 타이밍도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(1)은 호스트(10) 및 스토리지 장치(100)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 시스템(1)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC, 스마트 폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
호스트(10)는 스토리지 시스템(1)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(10)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. 호스트(10)는 호스트 프로세서(11) 및 호스트 메모리 버퍼(12)를 포함할 수 있다.
호스트 프로세서(11)는 스토리지 시스템(1)의 동작을 제어하는 장치일 수 있다. 예를 들어, 호스트 프로세서(11)는 읽기 커맨드, 쓰기 커맨드 등과 같은 데이터를 처리하는데 사용되는 커맨드를 출력하는 중앙 처리 장치(Central Processing Unit; CPU)를 포함할 수 있다.
호스트 메모리 버퍼(12)는 커맨드 버퍼(12a) 및 DMA(Direct Memory Access) 버퍼(12b)를 포함할 수 있다. 호스트 메모리 버퍼(12)는 호스트(10)가 처리하는 데이터를 저장하는 장치일 수 있다. 커맨드 버퍼(12a)는 전송 큐(SQ) 및 완료 큐(CQ)를 포함할 수 있다. 전송 큐(SQ)는 호스트 프로세서(11)가 생성한 커맨드를 저장할 수 있다. 완료 큐(CQ)는 커맨드의 처리 완료를 가리키는 컴플리션(completion)을 저장할 수 있다.
DMA 버퍼(12b)는 직접 메모리 접근(direct memory access) 전송을 기반으로 처리되는 데이터를 저장할 수 있다. 직접 메모리 접근 전송은 호스트 프로세서(11)의 중앙 처리 장치가 관여하지 않고 직접 메모리 접근 방식으로 데이터를 전송하는 것을 의미할 수 있다.
예시적인 실시 예에서, 호스트 프로세서(11)는 컴플리션을 처리할 시간에 대한 레이턴시 정보(이하, '레이턴시'라고 한다)를 생성할 수 있다. 호스트 프로세서(11)는 레이턴시를 포함하는 커맨드를 전송 큐(SQ)에 기입할 수 있다.
스토리지 장치(100)는 호스트(10)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 호스트(10)로 전송할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함할 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 불휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 예를 들어, 불휘발성 메모리 장치(120)는 데이터를 저장하는 낸드 플래시 메모리들을 포함할 수 있다. 불휘발성 메모리 장치(120)는 PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 장치일 수 있다.
스토리지 컨트롤러(110)는 커맨드 매니저(111) 및 DMA 엔진(112)을 포함할 수 있다. 커맨드 매니저(111)는 호스트로부터 수신된 커맨드를 관리하는 장치일 수 있다. 커맨드 매니저(111)는 레이턴시 계산기(111a) 및 타이밍 컨트롤러(111b)를 포함할 수 있다. 레이턴시 계산기(111a)는 커맨드에 포함된 레이턴시의 정보를 기반으로 컴플리션이 기입될 시간을 계산할 수 있다. 타이밍 컨트롤러(111b)는 레이턴시 계산기(111a)에서 계산된 시간을 기반으로 컴플리션을 기입할 타이밍을 결정할 수 있다. DMA 엔진(112)는 호스트에서 출력된 커맨드에 대한 직접 메모리 접근 동작을 할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 컴플리션을 처리할 시간 정보를 포함하는 레이턴시를 생성하고, 레이턴시를 기반으로 결정된 타이밍에 컴플리션을 기입함으로써, 컴플리션을 기입하는 타이밍을 관리하는 스토리지 시스템(1)이 제공될 수 있다.
도 2는 도 1의 호스트를 보여주는 블록도이다. 도 2를 참조하면, 호스트(10)는 호스트 프로세서(11), 호스트 메모리 버퍼(12), 스토리지 인터페이스 회로(13), 및 호스트 버스(14)를 포함할 수 있다. 호스트 버스(14)는 호스트 프로세서(11), 호스트 메모리 버퍼(12), 및 스토리지 인터페이스 회로(13)를 연결하는 장치일 수 있다.
호스트 프로세서(11)는 레이턴시를 포함하는 커맨드를 출력할 수 있다. 호스트 프로세서(11)는 커맨드의 처리 완료를 가리키는 컴플리션을 수신할 수 있다. 호스트 프로세서(11)는 커맨드 출력 및 컴플리션 수신 외에도 별도의 프로세스를 수행할 수 있다. 호스트 메모리 버퍼(12)는 커맨드 버퍼(12a) 및 DMA 버퍼(12b)를 포함할 수 있다. 커맨드 버퍼(12a)는 전송 큐(SQ) 및 완료 큐(CQ)를 포함할 수 있다.
호스트(10)는 스토리지 인터페이스 회로(13)를 통해서 스토리지 장치(100)와 통신할 수 있다. 예시적인 실시 예에서, 스토리지 인터페이스 회로(13)는 NVMe(Non-Volatile Memory express) 인터페이스를 기반으로 커맨드를 전송하도록 구현될 수 있다. 또한, 스토리지 인터페이스 회로(13)는 직접 메모리 접근 전송에 따라 불휘발성 메모리 장치와 통신하도록 구현될 수 있다.
도 3은 도 1의 스토리지 컨트롤러를 보여주는 블록도이다. 도 3을 참조하면, 스토리지 컨트롤러(110)는 커맨드 매니저(111), DMA 엔진(112), 프로세서(113), SRAM(114), ROM(115), ECC 엔진(116), 호스트 인터페이스 회로(117), 불휘발성 메모리 인터페이스 회로(118), 및 스토리지 컨트롤러 버스(119)를 포함할 수 있다. 스토리지 컨트롤러 버스(119)는 스토리지 컨트롤러에 포함된 구성들(111~118)을 서로 연결하는 장치일 수 있다. 커맨드 매니저(111) 및 DMA 엔진(112)의 특징은 도 1에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
프로세서(113)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. SRAM(114)은 스토리지 컨트롤러(110)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. ROM(115)은 스토리지 컨트롤러(110)가 동작하는데 필요한 다양한 정보를 펌웨어 형태로 저장할 수 있다. ECC 엔진(116)은 불휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다.
예시적인 실시 예에서, 커맨드 매니저(111) 및 DMA 엔진(112)은 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 제공될 수 있다. 예를 들어, ROM(115)은 커맨드 매니저(111)의 동작 방법 및 DMA 엔진(112)의 동작 방법을 저장할 수 있다. SRAM(114)은 호스트(10)에서 수신된 커맨드 및 DMA 엔진(112)이 처리하는 데이터를 저장할 수 있다. 프로세서(113)는 커맨드 매니저(111) 및 DMA 엔진(112)을 제어할 수 있다.
스토리지 컨트롤러(110)는 호스트 인터페이스 회로(117)를 통해서 호스트(10)와 통신할 수 있다. 예시적인 실시 예에서, 호스트 인터페이스 회로(117)는 NVMe(Non-Volatile Memory express) 인터페이스를 기반으로 컴플리션을 전송하도록 구현될 수 있다. 또한, 호스트 인터페이스 회로(117)는 직접 메모리 접근 전송에 따라 호스트(10)와 통신하도록 구현될 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 인터페이스 회로(118)를 통해서 불휘발성 메모리 장치(120)와 통신할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 인터페이스 회로(118)는 직접 메모리 접근 전송에 따라 불휘발성 메모리 장치(120)와 통신하도록 구현될 수 있다.
도 4는 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 보여주는 순서도이다. 도 4를 참조하면, 호스트(10) 및 스토리지 컨트롤러(110)를 포함하는 스토리지 시스템의 동작 방법이 예시적으로 도시된다.
S110 단계에서, 호스트(10)는 레이턴시를 생성할 수 있다. 레이턴시는 스토리지 컨트롤러(110)가 호스트(10)의 완료 큐(CQ)에 컴플리션(COMP)을 기입할 시점에 대한 정보를 포함할 수 있다. 호스트(10)는 레이턴시에 포함된 시간 정보를 조절하여 호스트가 수행하는 다른 프로세스에 미치는 영향이 적은 시간에 컴플리션(COMP)을 수신할 수 있다. 즉, 호스트(10)는 컴플리션(COMP)을 수신할 타이밍을 제어함에 따라 다른 프로세스들을 효율적으로 수행할 수 있다.
예시적인 실시 예에서, 레이턴시는 처리 레이턴시(PL)를 포함할 수 있다. 처리 레이턴시(PL)는 전송 큐(SQ)에 저장된 커맨드(CMD)를 스토리지 컨트롤러(110)로 페치하는 시점으로부터 커맨드(CMD)의 처리 완료를 가리키는 컴플리션(COMP)을 완료 큐(CQ)에 기입하는 시점까지의 시간 구간을 가리킬 수 있다. 처리 레이턴시(PL)를 기반으로 타이밍을 결정하는 것에 대한 상세한 설명은 도 6a 및 도 6b와 함께 후술된다.
예시적인 실시 예에서, 레이턴시는 간격 레이턴시(IL)를 포함할 수 있다. 간격 레이턴시(IL)는 다른 컴플리션을 완료 큐에 기입하는 시점으로부터 컴플리션(COMP)을 완료 큐(CQ)에 기입하는 시점까지의 시간 시간을 가리킬 수 있다. 이 때, 다른 커맨드의 처리 완료를 가리키는 다른 컴플리션을 완료 큐(CQ)에 기입하는 동작은 커맨드(CMD)의 처리 완료를 가리키는 컴플리션(COMP)을 완료 큐(CQ)에 기입하는 동작보다 먼저 수행될 수 있다. 간격 레이턴시(IL)를 기반으로 타이밍을 결정하는 것에 대한 상세한 설명은 도 7a 및 도 7b와 함께 후술된다.
예시적인 실시 예에서, 레이턴시는 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 포함할 수 있다. 완료 큐(CQ)에 컴플리션(COMP)을 기입하는 타이밍은 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 기반으로 결정될 수 있다. 이에 대한 상세한 설명은 도 8a 및 도 8b와 함께 후술된다.
S121 단계에서, 호스트(10)는 커맨드(CMD)를 전송 큐(SQ)에 기입할 수 있다. 이 때, 커맨드(CMD)는 S110 단계에서 생성된 레이턴시를 포함할 수 있다. 커맨드(CMD)는 불휘발성 메모리 장치에 데이터를 저장하거나 또는 불휘발성 메모리 장치에 저장된 데이터를 읽는 명령일 수 있다.
S122 단계에서, 호스트(10)는 전송 큐 도어벨을 스토리지 컨트롤러(110)로 전송할 수 있다. 전송 큐 도어벨은 전송 큐(SQ)에 커맨드(CMD)가 기입된 것을 알리는 신호일 수 있다.
S123 단계에서, 스토리지 컨트롤러(110)는 S122 단계에서 수신한 전송 큐 도어벨에 응답하여 전송 큐(SQ)에 저장된 커맨드(CMD)를 페치할 수 있다. 이 때, 커맨드(CMD)를 페치하는 것은 스토리지 컨트롤러(110)가 전송 큐(SQ)에 저장된 커맨드(CMD)를 가져오는 것을 의미할 수 있다. 예시적인 실시 예에서, 전송 큐(SQ)는 스토리지 컨트롤러(110)의 페치 동작에 의해서 비워질 수 있다. 전송 큐(SQ)가 비워진 상태는 전송 큐(SQ)에 새로운 커맨드가 기입될 수 있는 상태를 의미할 수 있다.
S124 단계에서, 스토리지 컨트롤러(110)는 S123 단계에서 페치된 커맨드(CMD)를 처리할 수 있다. 예시적인 실시 예에서, 커맨드(CMD)가 요청한 데이터는 직접 메모리 접근 방식으로 전송될 수 있다.
S125 단계에서, 스토리지 컨트롤러(110)는 S123 단계에서 페치한 커맨드(CMD)에 포함된 레이턴시를 기반으로 컴플리션(COMP)을 완료 큐(CQ)에 기입할 타이밍을 결정할 수 있다. 예시적인 실시 예에서, S125 단계는 S124 단계와 병렬적으로 수행될 수 있다.
S126 단계에서, 스토리지 컨트롤러(110)는 S125 단계에서 결정된 타이밍에 컴플리션(COMP)을 완료 큐(CQ)에 기입할 수 있다. 이 때, S126 단계는 페치된 커맨드(CMD)의 처리(S124)가 완료된 이후에 수행될 수 있다.
S127 단계에서, 스토리지 컨트롤러(110)는 완료 큐(CQ)에 컴플리션(COMP)이 기입된 것을 호스트(10)에 알리는 인터럽트를 생성할 수 있다. 스토리지 컨트롤러(110)는 생성된 인터럽트를 호스트(10)로 출력할 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(110)는 복수의 완료 큐들에 복수의 컴플리션들이 기입된 것을 알리는 인터럽트를 생성할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 S126 단계를 수행한 후, 즉시 인터럽트를 출력하는 대신에, 다른 컴플리션이 완료 큐에 기입된 이 후에 인터럽트를 출력할 수 있다.
S128 단계에서, 호스트(10)는 S127 단계에서 수신된 인터럽트에 응답하여 컴플리션(COMP)을 처리할 수 있다. 호스트(10)는 S121 단계의 커맨드(CMD)에 따라 요청된 동작이 완료되었다는 정보를 획득할 수 있다. 예시적인 실시 예에서, 호스트(10)는 인터럽트에 대응하는 완료 큐(CQ)를 비울 수 있다. 완료 큐(CQ)가 비워진 상태는 완료 큐(CQ)에 새로운 컴플리션이 기입될 수 있는 상태를 의미할 수 있다. 호스트(10)는 S121 단계의 커맨드(CMD)에 대응하는 전송 큐(SQ) 및 완료 큐(CQ)에 다른 커맨드를 할당할 수 있다.
S129 단계에서, 호스트(10)는 완료 큐(CQ)에 기입된 컴플리션(COMP)이 처리된 것을 스토리지 컨트롤러(110)에 알리는 완료 큐 도어벨을 생성할 수 있다. 호스트(10)는 생성된 완료 큐 도어벨을 스토리지 컨트롤러(110)로 출력할 수 있다. 예시적인 실시 예에서, 완료 큐 도어벨을 수신한 스토리지 컨트롤러(110)는 완료 큐(CQ)에 커맨드(CMD)와 다른 커맨드의 처리 완료를 가리키는 다른 컴플리션을 기입할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 호스트(10)에서 생성된 레이턴시를 기반으로 결정된 타이밍에 컴플리션(COMP)을 완료 큐(CQ)에 기입하는 스토리지 시스템의 동작 방법이 제공될 수 있다. 또한, NVMe 인터페이스를 기반으로 컴플리션(COMP)을 기입하는 타이밍을 관리하는 스토리지 시스템의 동작 방법이 제공될 수 있다.
도 5는 도 4의 전송 큐에 기입된 커맨드의 정보를 예시적으로 보여주는 도면이다. 도 5를 참조하면, 호스트에서 생성된 커맨드(CMD)의 정보가 예시적으로 도시된다. 커맨드(CMD)는 일정한 용량의 영역을 가질 수 있다. 예를 들어, 커맨드(CMD)는 '64' 바이트의 용량을 가질 수 있다. 일반적인 커맨드(CMD)는 데이터의 처리와 무관한 영역인 리저브드(reserved) 영역을 포함할 수 있다. 예를 들어, 리저브드 영역은 '8' 바이트 내지 '15' 바이트에 대응하는 영역일 수 있다.
본 발명의 실시 예에 따르면, 커맨드(CMD)의 리저브드 영역에 레이턴시를 포함하는 스토리지 시스템이 제공될 수 있다. 예를 들어, 커맨드(CMD)의 리저브드 영역 중 '8' 바이트 내지 '11' 바이트에 대응하는 영역은 처리 레이턴시(PL)를 포함할 수 있다. 커맨드(CMD)의 리저브드 영역 중 '12' 바이트 내지 '15' 바이트에 대응하는 영역은 간격 레이턴시(IL)를 포함할 수 있다.
도 6a는 도 4의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 6a를 참조하면, 처리 레이턴시(PL)를 기반으로 타이밍을 결정하는 스토리지 시스템이 예시적으로 도시된다. 스토리지 시스템은 호스트(10), 스토리지 컨트롤러(110), 및 불휘발성 메모리 장치(120)를 포함할 수 있다.
호스트(10)는 호스트 프로세서(11), 커맨드 버퍼(12a), 및 DMA 버퍼(12b)를 포함할 수 있다. 커맨드 버퍼(12a)는 커맨드(CMD)를 저장하는 전송 큐(SQ) 및 컴플리션(COMP)을 저장하는 완료 큐(CQ)를 포함할 수 있다.
호스트 프로세서(11)는 처리 레이턴시(PL)를 생성할 수 있다. 처리 레이턴시(PL)는 스토리지 컨트롤러(110)가 전송 큐(SQ)에 저장된 커맨드(CMD)를 페치한 시점으로부터 커맨드(CMD)의 처리 완료를 가리키는 컴플리션(COMP)을 완료 큐(CQ)에 기입하는 시점까지의 시간 구간을 가리킬 수 있다.
호스트 프로세서(11)는 처리 레이턴시(PL)를 포함하는 커맨드(CMD)를 전송 큐(SQ)에 기입할 수 있다. 호스트 프로세서(11)는 전송 큐(SQ)에 커맨드(CMD)가 기입되었음을 알리는 전송 큐 도어벨을 커맨드 매니저(111)로 출력할 수 있다.
호스트 프로세서(11)는 커맨드 매니저(111)로부터 수신된 인터럽트에 응답하여 완료 큐(CQ)에 저장된 컴플리션(COMP)을 처리할 수 있다. 호스트 프로세서(11)는 완료 큐(CQ)에 저장된 컴플리션(COMP)이 처리되었음을 알리는 완료 큐 도어벨을 커맨드 매니저(111)로 출력할 수 있다.
커맨드 매니저(111)는 레이턴시 계산기(111a), 타이밍 컨트롤러(111b), 도어벨 레지스터 회로(111c), 커맨드 페치 회로(111d), 컴플리션 생성기(111e), 및 인터럽트 생성기(111f)를 포함할 수 있다.
레이턴시 계산기(111a)는 커맨드(CMD)에 포함된 처리 레이턴시(PL)를 기반으로 컴플리션(COMP)을 기입할 시간을 계산할 수 있다. 예시적인 실시 예에서, 레이턴시 계산기(111a)는 커맨드(CMD)를 페치한 시간에서 처리 레이턴시(PL)에 대응하는 시간을 더하여 컴플리션(COMP)을 기입할 시간을 계산할 수 있다. 타이밍 컨트롤러(111b)는 레이턴시 계산기(111a)에서 계산된 시간을 기반으로 컴플리션(COMP)을 기입할 타이밍을 결정할 수 있다.
도어벨 레지스터 회로(111c)는 호스트 프로세서(11)로부터 전송 큐 도어벨 및 완료 큐 도어벨을 수신할 수 있다. 도어벨 레지스터 회로(111c)는 전송 큐 도어벨에 응답하여 커맨드 페치 회로(111d)가 커맨드(CMD)를 페치하도록 제어할 수 있다. 도어벨 레지스터 회로(111c)는 완료 큐 도어벨에 응답하여 컴플리션 생성기(111e)로 완료 큐(CQ)가 비워졌음을 알리는 신호를 출력할 수 있다.
커맨드 페치 회로(111d)는 도어벨 레지스터 회로(111c)의 제어에 따라 전송 큐(SQ)에 저장된 커맨드(CMD)를 페치할 수 있다. 커맨드 페치 회로(111d)는 페치된 커맨드(CMD)를 기반으로 DMA 엔진(112)에 데이터 처리를 요청하는 신호를 출력할 수 있다.
컴플리션 생성기(111e)는 DMA 엔진(112)으로부터 커맨드(CMD)에 대응하는데이터의 처리 완료를 알리는 신호를 수신할 수 있다. 컴플리션 생성기(111e)는 데이터의 처리 완료를 알리는 신호에 응답하여 컴플리션(COMP)을 생성할 수 있다. 컴플리션 생성기(111e)는 타이밍 컨트롤러(111b)가 결정한 타이밍에 컴플리션(COMP)을 완료 큐(CQ)에 기입할 수 있다. 컴플리션 생성기(111e)는 컴플리션(COMP) 기입을 알리는 신호를 인터럽트 생성기(111f)로 출력할 수 있다.
인터럽트 생성기(111f)는 컴플리션 생성기(111e)로부터 수신된 기입을 알리는 신호에 응답하여 인터럽트를 생성할 수 있다. 인터럽트 생성기(111f)는 생성된 인터럽트를 호스트 프로세서(11)로 출력할 수 있다.
DMA 엔진(112)은 커맨드 페치 회로(111d)로부터 데이터 처리를 요청하는 요청 신호를 수신할 수 있다. DMA 엔진(112)은 DMA 버퍼(12b) 및 불휘발성 메모리 장치(120)와 연결될 수 있다.
DMA 엔진(112)은 호스트 프로세서(11)의 직접적인 제어 없이 불휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 즉, DMA 버퍼(12b)와 불휘발성 메모리 장치(120) 사이에서 직접 메모리 접근 전송을 기반으로 커맨드(CMD)에 대응하는 데이터가 처리될 수 있다. DMA 엔진(112)은 커맨드(CMD)에 대응하는 데이터의 처리를 완료한 후, 데이터 처리 완료를 알리는 완료 신호를 컴플리션 생성기(111e)로 출력할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 호스트(10)에서 처리 레이턴시(PL)를 생성하고, 처리 레이턴시(PL)를 기반으로 결정된 타이밍에 컴플리션(COMP)을 기입하는 스토리지 시스템이 제공될 수 있다.
도 6b는 도 6a의 호스트 및 스토리지 컨트롤러가 처리하는 프로세스를 예시적으로 보여주는 타이밍도이다. 도 6a 및 도 6b를 참조하면, 호스트(10)는 순차적으로 처리 레이턴시(PL)를 생성하고, 전송 큐(SQ)에 커맨드(CMD)를 기입하며, 커맨드(CMD)가 기입되었음을 알리는 전송 큐 도어벨을 출력할 수 있다.
스토리지 컨트롤러(110)는 순차적으로 전송 큐 도어벨을 수신하고, 커맨드(CMD)를 페치하며, 직접 메모리 접근 전송을 기반으로 커맨드(CMD)에서 요청된 데이터를 처리할 수 있다. 이 때, 스토리지 컨트롤러(110)는 데이터 처리가 완료된 직후 컴플리션(COMP)을 기입하는 대신에, 처리 레이턴시(PL)를 기반으로 결정된 컴플리션 시간(Tc)에 컴플리션(COMP)을 기입할 수 있다. 처리 레이턴시(PL)를 기반으로 결정된 컴플리션 시간(Tc)은 전송 큐(SQ)로부터 커맨드(CMD)를 페치한 페치 시간(Tf)으로부터 처리 레이턴시(PL)에 대응하는 시간이 경과한 시간일 수 있다.
스토리지 컨트롤러(110)는 컴플리션 시간(Tc)에 컴플리션(COMP)을 완료 큐(CQ)에 기입한 후 인터럽트를 출력할 수 있다. 호스트(10)는 인터럽트를 수신한 후 완료 큐(CQ)에 기입된 컴플리션(COMP)을 처리할 수 있다. 이 때, 호스트(10)가 컴플리션(COMP)을 처리하는 시간은 전송 큐(SQ)에 커맨드(CMD)를 기입하기 전에 결정된 시간일 수 있다. 호스트(10)는 컴플리션(COMP)을 처리할 시간을 정확하게 제어함에 따라, 컴플리션(COMP)을 처리하기 전에 다른 프로세스를 방해 없이 수행할 수 있다.
도 7a는 도 4의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 7a를 참조하면, 간격 레이턴시(IL)를 기반으로 타이밍을 결정하는 스토리지 시스템이 예시적으로 도시된다. DMA 버퍼(12b), 타이밍 컨트롤러(111b), 도어벨 레지스터 회로(111c), 커맨드 페치 회로(111d), 컴플리션 생성기(111e), 인터럽트 생성기(111f), DMA 엔진(112), 및 불휘발성 메모리 장치(120)의 특징은 도 6a에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
호스트(10)는 호스트 프로세서(11), 커맨드 버퍼(12a), 및 DMA 버퍼(12b)를 포함할 수 있다. 커맨드 버퍼(12a)는 다른 커맨드를 더 저장하는 전송 큐(SQ) 및 다른 컴플리션을 더 저장하는 완료 큐(CQ)를 포함할 수 있다. 이 때, 다른 컴플리션(COMPx)은 다른 커맨드의 처리 완료를 가리킬 수 있다.
호스트 프로세서(11)는 간격 레이턴시(IL)를 생성할 수 있다. 간격 레이턴시(IL)는 다른 컴플리션(COMPx)을 완료 큐(CQ)에 기입하는 시점으로부터 컴플리션(COMP)을 완료 큐(CQ)에 기입하는 시점까지의 시간 구간을 가리킬 수 있다. 이 때, 다른 컴플리션(COMPx)을 기입하는 동작은 컴플리션(COMP)을 기입하는 동작보다 먼저 수행될 수 있다.
호스트 프로세서(11)는 간격 레이턴시(IL)를 포함하는 커맨드(CMD)를 전송 큐(SQ)에 기입할 수 있다. 호스트 프로세서(11)는 전송 큐(SQ)에 커맨드(CMD)가 기입되었음을 알리는 전송 큐 도어벨을 커맨드 매니저(111)로 출력할 수 있다.
레이턴시 계산기(111a)는 커맨드(CMD)에 포함된 간격 레이턴시(IL)를 기반으로 컴플리션(COMP)을 기입할 시간을 계산할 수 있다. 예시적인 실시 예에서, 레이턴시 계산기(111a)는 다른 컴플리션(COMPx)을 기입할 시간에서 간격 레이턴시(IL)에 대응하는 시간을 더하여 컴플리션(COMP)을 기입할 시간을 계산할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 호스트(10)에서 간격 레이턴시(IL)를 생성하고, 간격 레이턴시(IL)를 기반으로 결정된 타이밍에 컴플리션(COMP)을 기입하는 스토리지 시스템이 제공될 수 있다.
도 7b는 도 7a의 호스트 및 스토리지 컨트롤러가 처리하는 프로세스를 예시적으로 보여주는 타이밍도이다. 도 7a 및 도 7b를 참조하면, 호스트(10)는 순차적으로 간격 레이턴시(IL)를 생성하고, 전송 큐(SQ)에 커맨드(CMD)를 기입하며, 커맨드(CMD)가 기입되었음을 알리는 전송 큐 도어벨을 출력할 수 있다.
스토리지 컨트롤러(110)는 다른 컴플리션 시간(Tcx)에 다른 컴플리션(COMPx)을 기입할 수 있다. 다른 컴플리션 시간(Tcx)은 호스트(10)가 생성한 다른 레이턴시를 기반으로 결정된 시간일 수 있다. 스토리지 컨트롤러(110)는 순차적으로 전송 큐 도어벨을 수신하고, 커맨드(CMD)를 페치하며, 직접 메모리 접근 전송을 기반으로 커맨드(CMD)에서 요청된 데이터를 처리할 수 있다.
이 때, 스토리지 컨트롤러(110)는 데이터 처리가 완료된 직후 컴플리션(COMP)을 기입하는 대신에, 간격 레이턴시(IL)를 기반으로 결정된 컴플리션 시간(Tc)에 컴플리션(COMP)을 기입할 수 있다. 간격 레이턴시(IL)를 기반으로 결정된 컴플리션 시간(Tc)은 다른 컴플리션 시간(Tcx)으로부터 간격 레이턴시(IL)에 대응하는 시간이 경과한 시간일 수 있다.
스토리지 컨트롤러(110)는 컴플리션 시간(Tc)에 컴플리션(COMP)을 완료 큐(CQ)에 기입한 후 인터럽트를 출력할 수 있다. 호스트(10)는 인터럽트를 수신한 후 완료 큐(CQ)에 기입된 컴플리션(COMP)을 처리할 수 있다. 이 때, 호스트(10)가 컴플리션(COMP)을 처리하는 시간은 전송 큐(SQ)에 커맨드(CMD)를 기입하기 전에 결정된 시간일 수 있다. 호스트(10)는 컴플리션(COMP)을 처리할 시간을 정확하게 제어함에 따라, 다른 컴플리션(COMPx)을 처리한 후 컴플리션(COMP)을 처리하기 전에 다른 프로세스를 방해 없이 수행할 수 있다. 또는, 다른 프로세스의 수행에 소요되는 시간에 따라 간격 레이턴시(IL)를 조절할 수 있다.
도 8a는 도 4의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 8a를 참조하면, 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 기반으로 타이밍을 결정하는 스토리지 시스템이 예시적으로 도시된다. DMA 버퍼(12b), 타이밍 컨트롤러(111b), 도어벨 레지스터 회로(111c), 커맨드 페치 회로(111d), 컴플리션 생성기(111e), 인터럽트 생성기(111f), DMA 엔진(112), 및 불휘발성 메모리 장치(120)의 특징은 도 6a에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
호스트 프로세서(11)는 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 생성할 수 있다. 호스트 프로세서(11)는 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 포함하는 커맨드(CMD)를 전송 큐(SQ)에 기입할 수 있다. 호스트 프로세서(11)는 전송 큐(SQ)에 커맨드(CMD)가 기입되었음을 알리는 전송 큐 도어벨을 커맨드 매니저(111)로 출력할 수 있다.
레이턴시 계산기(111a)는 커맨드(CMD)에 포함된 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 기반으로 컴플리션(COMP)을 기입할 시간을 계산할 수 있다. 예시적인 실시 예에서, 레이턴시 계산기(111a)는 커맨드(CMD)를 페치한 시점에서 처리 레이턴시(PL)에 대응하는 시간 구간을 더하여 제1 시점을 계산할 수 있다. 레이턴시 계산기(111a)는 다른 컴플리션(COMPx)을 기입할 시점에서 간격 레이턴시(IL)에 대응하는 시간 구간을 더하여 제2 시점을 계산할 수 있다.
타이밍 컨트롤러(111b)는 레이턴시 계산기(111a)에서 계산된 제1 시점 및 제2 시점을 기반으로 컴플리션(COMP)을 기입할 타이밍을 결정할 수 있다. 예시적인 실시 예에서, 타이밍 컨트롤러(111b)는 제1 시점 및 제2 시점이 동일하면, 동일한 제1 시점 및 제2 시점을 컴플리션(COMP)을 기입할 타이밍으로 결정할 수 있다.
예시적인 실시 예에서, 타이밍 컨트롤러(111b)는 제2 시점이 제1 시점보다 늦으면, 제2 시점을 컴플리션(COMP)을 기입할 타이밍으로 결정할 수 있다.
예시적인 실시 예에서, 타이밍 컨트롤러(111b)는 제1 시점이 제2 시점보다 늦으면, 레이턴시 계산기(111a)로 제3 시점의 계산을 요청할 수 있다. 제3 시점은 제2 시점보다 늦으며 간격 레이턴시(IL)를 기반으로 계산된 시점일 수 있다.
예를 들어, 레이턴시 계산기(111a)는 다른 컴플리션(COMPx)보다 늦게 기입되는 특정 컴플리션(미도시)을 기입할 시점에서 간격 레이턴시(IL)에 대응하는 시간 구간을 더하여 제3 시점을 계산할 수 있다. 타이밍 컨트롤러(111b)는 제3 시점이 제1 시점보다 늦으면, 제3 시점을 컴플리션(COMP)을 기입할 타이밍으로 결정할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 호스트(10)에서 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 생성하고, 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 기반으로 결정된 타이밍에 컴플리션(COMP)을 기입하는 스토리지 시스템이 제공될 수 있다.
도 8b는 도 8a의 호스트 및 스토리지 컨트롤러가 처리하는 프로세스를 예시적으로 보여주는 타이밍도이다. 도 8a 및 도 8b를 참조하면, 호스트(10)는 순차적으로 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 생성하고, 전송 큐(SQ)에 커맨드(CMD)를 기입하며, 커맨드(CMD)가 기입되었음을 알리는 전송 큐 도어벨을 출력할 수 있다.
스토리지 컨트롤러(110)는 다른 컴플리션 시간(Tcx)에 다른 컴플리션(COMPx)을 기입할 수 있다. 스토리지 컨트롤러(110)는 순차적으로 전송 큐 도어벨을 수신하고, 커맨드(CMD)를 페치하며, 직접 메모리 접근 전송을 기반으로 커맨드(CMD)에서 요청된 데이터를 처리할 수 있다.
스토리지 컨트롤러(110)는 처리 레이턴시(PL) 및 간격 레이턴시(IL)를 기반으로 컴플리션(COMP)을 기입할 타이밍을 결정할 수 있다. 스토리지 컨트롤러(110)는 전송 큐(SQ)로부터 커맨드(CMD)를 페치한 페치 시간(Tf)으로부터 처리 레이턴시(PL)에 대응하는 시간을 더하여 처리 컴플리션 시간(Tcp)을 계산할 수 있다. 스토리지 컨트롤러(110)는 다른 컴플리션 시간(Tcx)으로부터 간격 레이턴시(IL)에 대응하는 시간을 더하여 간격 컴플리션 시간(Tci)을 계산할 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는 처리 컴플리션 시간(Tcp) 및 간격 컴플리션 시간(Tci)을 기반으로 컴플리션(COMP)을 기입할 타이밍을 결정할 수 있다. 예를 들어, 간격 컴플리션 시간(Tci)이 처리 컴플리션 시간(Tcp)보다 늦으면, 간격 컴플리션 시간(Tci)을 컴플리션(COMP)을 기입할 타이밍으로 결정할 수 있다.
예를 들어, 도 8b에 도시된 것과 달리, 처리 컴플리션 시간(Tcp)이 간격 컴플리션 시간(Tci)보다 늦으면, 다른 컴플리션(COMPx)보다 늦게 기입되는 특정 컴플리션(미도시)을 기입할 시간에서 간격 레이턴시(IL)에 대응하는 시간을 더한 시간을 컴플리션(COMP)을 기입할 타이밍으로 결정할 수 있다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 예시적으로 보여주는 순서도이다. 도 9를 참조하면, 호스트(20) 및 스토리지 컨트롤러(210)를 포함하는 스토리지 시스템의 동작 방법이 예시적으로 도시된다.
S210 단계에서, 호스트(20)는 제1 및 제2 처리 레이턴시(PL1, PL2)와 제1 및 제2 간격 레이턴시(IL1, IL2)를 생성할 수 있다. 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)는 제1 커맨드(CMD1)에 대응하는 레이턴시들이다. 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)는 제2 커맨드(CMD2)에 대응하는 레이턴시들이다.
예시적인 실시 예에서, 제1 커맨드(CMD1)는 제2 커맨드(CMD2)보다 먼저 처리될 수 있다. 예를 들어, 제1 커맨드(CMD1)는 제2 커맨드(CMD2)보다 먼저 페치될 수 있다. 제1 커맨드(CMD1)에 대응하는 제1 컴플리션(COMP1)은 제2 커맨드(CMD2)에 대응하는 제2 컴플리션(COMP2)보다 먼저 기입될 수 있다. 제1 간격 레이턴시(IL1)는 제1 컴플리션(COMP1)보다 먼저 기입되는 다른 컴플리션을 기입한 시간부터 제1 컴플리션(COMP1)을 기입하는 시간 사이의 간격에 대응할 수 있다. 제2 간격 레이턴시(IL2)는 제1 컴플리션(COMP1)을 기입하는 시간부터 제2 컴플리션(COMP2) 기입하는 시간 사이의 간격에 대응할 수 있다.
S221 단계에서, 호스트(20)는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 포함하는 제1 커맨드(CMD1)를 전송 큐(SQ)에 기입할 수 있다. S222 단계에서, 스토리지 컨트롤러(210)는 전송 큐(SQ)에 기입된 제1 커맨드(CMD1)를 페치할 수 있다.
S231 단계에서, 호스트(20)는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 포함하는 제2 커맨드(CMD2)를 전송 큐(SQ)에 기입할 수 있다. S232 단계에서, 스토리지 컨트롤러(210)는 전송 큐(SQ)에 기입된 제2 커맨드(CMD2)를 페치할 수 있다.
S223 단계에서, 스토리지 컨트롤러(210)는 직접 메모리 접근 전송을 기반으로 제1 커맨드(CMD1)가 요청한 데이터를 처리할 수 있다. S224 단계에서, 스토리지 컨트롤러(210)는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 기반으로 제1 컴플리션(COMP1)을 기입할 타이밍을 결정할 수 있다. 제1 컴플리션(COMP1)은 제1 커맨드(CMD1)의 처리 완료를 가리킬 수 있다. S225 단계에서, 스토리지 컨트롤러(210)는 S224 단계에서 결정된 타이밍에 제1 컴플리션(COMP1)을 완료 큐(CQ)에 기입할 수 있다.
S233 단계에서, 스토리지 컨트롤러(210)는 직접 메모리 접근 전송을 기반으로 제2 커맨드(CMD2)가 요청한 데이터를 처리할 수 있다. S234 단계에서, 스토리지 컨트롤러(210)는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 기반으로 제2 컴플리션(COMP2)을 기입할 타이밍을 결정할 수 있다. 제2 컴플리션(COMP2)은 제2 커맨드(CMD2)의 처리 완료를 가리킬 수 있다. S235 단계에서, 스토리지 컨트롤러(210)는 S234 단계에서 결정된 타이밍에 제2 컴플리션(COMP2)을 완료 큐(CQ)에 기입할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 호스트(20)에서 서로 다른 복수의 커맨드들(CMD1, CMD2)에 대한 레이턴시들(PL1, PL2, IL1, IL2)을 생성하고, 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 기반으로 결정된 타이밍에 제1 컴플리션(COMP1)이 완료 큐(CQ)에 기입되고, 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 기반으로 결정된 타이밍에 제2 컴플리션(COMP2)이 완료 큐(CQ)에 기입되는 스토리지 시스템의 동작 방법이 제공될 수 있다.
도 10은 도 9의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 서로 다른 복수의 커맨드들(CMD1, CMD2)에 각각 대응하는 서로 다른 컴플리션들(COMP1, COMP2)을 기입하는 타이밍을 결정하는 스토리지 시스템이 예시적으로 도시된다. DMA 버퍼(22b), DMA 엔진(212), 및 불휘발성 메모리 장치(220)의 특징은 도 6a의 DMA 버퍼(12b), DMA 엔진(112), 및 불휘발성 메모리 장치(120)의 특징과 유사하므로, 이에 대한 상세한 설명은 생략된다.
호스트(20)는 호스트 프로세서(21), 커맨드 버퍼(22a), 및 DMA 버퍼(22b)를 포함할 수 있다. 호스트 프로세서(21)는 제1 커맨드(CMD1)를 처리하고 제1 컴플리션(COMP1)을 기입할 타이밍에 대한 정보를 포함하는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 생성할 수 있다. 호스트 프로세서(21)는 제2 커맨드(CMD2)를 처리하고 제2 컴플리션(COMP2)을 기입할 타이밍에 대한 정보를 포함하는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 생성할 수 있다.
호스트 프로세서(21)는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 포함하는 제1 커맨드(CMD1)를 전송 큐(SQ)에 기입할 수 있다. 커맨드 매니저(211)는 전송 큐(SQ)에 기입된 제1 커맨드(CMD1)를 페치할 수 있다. 호스트 프로세서(21)는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 포함하는 제2 커맨드(CMD2)를 전송 큐(SQ)에 기입할 수 있다. 커맨드 매니저(211)는 전송 큐(SQ)에 기입된 제2 커맨드(CMD2)를 페치할 수 있다.
커맨드 매니저(211)는 제1 커맨드(CMD1)에 대한 데이터 처리를 DMA 엔진(212)에 요청할 수 있다. 커맨드 매니저(211)는 제1 커맨드(CMD1)에 대한 데이터 처리가 완료되면 제1 커맨드(CMD1)의 처리 완료를 가리키는 제1 컴플리션(COMP1)을 완료 큐(CQ)에 기입할 수 있다.
커맨드 매니저(211)는 제2 커맨드(CMD2)에 대한 데이터 처리를 DMA 엔진(212)에 요청할 수 있다. 커맨드 매니저(211)는 제2 커맨드(CMD2)에 대한 데이터 처리가 완료되면 제2 커맨드(CMD2)의 처리 완료를 가리키는 제2 컴플리션(COMP2)을 완료 큐(CQ)에 기입할 수 있다.
도 11은 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 예시적으로 보여주는 순서도이다. 도 11을 참조하면, 호스트 프로세서(31), 호스트 메모리 버퍼(32), 커맨드 매니저(311), 및 DMA 엔진(312)을 포함하는 스토리지 시스템의 동작 방법이 예시적으로 도시된다.
S310 단계에서, 호스트 프로세서(31)는 제1 및 제2 처리 레이턴시(PL1, PL2)와 제1 및 제2 간격 레이턴시(IL1, IL2)를 생성할 수 있다. 이 때, 제1 처리 레이턴시(PL1)에 대응하는 시간은 제2 처리 레이턴시(PL2)에 대응하는 시간보다 길 수 있다. 즉, 제1 커맨드(CMD1)를 처리하는데 소요되는 시간은 제2 커맨드(CMD2)를 처리하는데 소요되는 시간보다 길 수 있다.
S321 단계에서, 호스트 프로세서(31)는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 포함하는 제1 커맨드(CMD1)를 호스트 메모리 버퍼(32)의 전송 큐(SQ)에 기입할 수 있다. S322 단계에서, 커맨드 매니저(311)는 전송 큐(SQ)에 기입된 제1 커맨드(CMD1)를 페치할 수 있다.
S331 단계에서, 호스트 프로세서(31)는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 포함하는 제2 커맨드(CMD2)를 호스트 메모리 버퍼(32)의 전송 큐(SQ)에 기입할 수 있다. S332 단계에서, 커맨드 매니저(311)는 전송 큐(SQ)에 기입된 제2 커맨드(CMD2)를 페치할 수 있다. 이 때, S332 단계는 S322 단계보다 늦게 수행될 수 있다. 즉, 커맨드 매니저(311)는 제1 커맨드(CMD1)를 페치한 후 제2 커맨드(CMD2)를 페치할 수 있다.
S340 단계에서, 커맨드 매니저(311)는 제1 및 제2 처리 레이턴시(PL1, PL2)를 기반으로 제1 및 제2 커맨드(CMD1, CMD2)의 우선도를 결정할 수 있다. 제1 및 제2 커맨드(CMD1, CMD2)의 우선도는 제1 및 제2 커맨드(CMD1, CMD2) 중 먼저 처리될 커맨드를 가리킬 수 있다.
예시적인 실시 예에서, 커맨드 매니저(311)는 처리 레이턴시에 대응하는 시간이 짧은 커맨드가 먼저 처리되도록 우선도를 결정할 수 있다. 예를 들어, 제1 및 제2 처리 레이턴시(PL1, PL2)에 대응하는 시간이 각각 100[μs], 10[μs]인 경우, 커맨드 매니저(311)는 제2 커맨드(CMD2)를 제1 커맨드(CMD1)보다 먼저 처리될 커맨드로 결정할 수 있다.
예시적인 실시 예에서, 제1 및 제2 커맨드(CMD1, CMD2)의 처리 순서는 S340 단계에서 결정된 우선도를 기반으로 결정될 수 있다. 예를 들어, 제2 처리 레이턴시(PL2)에 대응하는 시간이 제1 처리 레이턴시(PL1)에 대응하는 시간보다 짧은 경우, 제2 커맨드(CMD2)를 처리하는 단계들(S333~S337)을 수행한 후 제1 커맨드(CMD1)를 처리하는 단계들(S323~S327)을 수행할 수 있다. 즉, 결정된 우선도를 기반으로, 제1 커맨드(CMD1)보다 늦게 페치된 제2 커맨드(CMD2)에 대한 데이터가 제1 커맨드(CMD1)에 대한 데이터보다 먼저 처리될 수 있다.
예를 들어, 제1 처리 레이턴시(PL1)에 대응하는 시간이 제2 처리 레이턴시(PL2)에 대응하는 시간보다 짧은 경우, 도 11에 도시된 것과 달리, 제1 커맨드(CMD1)를 처리하는 단계들(S323~S327)을 수행한 후 제2 커맨드(CMD2)를 처리하는 단계들(S333~S337)을 수행할 수 있다. 즉, 결정된 우선도를 기반으로, 제1 커맨드(CMD1)에 대한 데이터가 제2 커맨드(CMD2)에 대한 데이터보다 먼저 처리될 수 있다.
S333 단계에서, 커맨드 매니저(311)는 제2 커맨드(CMD2)에 대한 데이터 처리를 DMA 엔진(312)에 요청할 수 있다. S334 단계에서, DMA 엔진(312)은 직접 메모리 접근 전송을 기반으로 제2 커맨드(CMD2)가 요청한 데이터를 처리할 수 있다. S335 단계에서, DMA 엔진(312)은 제2 커맨드(CMD2)에 대한 데이터 처리가 완료되었음을 커맨드 매니저(311)에 알릴 수 있다.
S336 단계에서, 커맨드 매니저(311)는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 기반으로 제2 컴플리션(COMP2)을 기입할 타이밍을 결정할 수 있다. S337 단계에서, 커맨드 매니저(311)는 S336 단계에서 결정된 타이밍에 제2 컴플리션(COMP2)을 호스트 메모리 버퍼(32)의 완료 큐(CQ)에 기입할 수 있다.
S323 단계에서, 커맨드 매니저(311)는 제1 커맨드(CMD1)에 대한 데이터 처리를 DMA 엔진(312)에 요청할 수 있다. S324 단계에서, DMA 엔진(312)은 직접 메모리 접근 전송을 기반으로 제1 커맨드(CMD1)가 요청한 데이터를 처리할 수 있다. S325 단계에서, DMA 엔진(312)은 제1 커맨드(CMD1)에 대한 데이터 처리가 완료되었음을 커맨드 매니저(311)에 알릴 수 있다.
S326 단계에서, 커맨드 매니저(311)는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 기반으로 제1 컴플리션(COMP1)을 기입할 타이밍을 결정할 수 있다. S327 단계에서, 커맨드 매니저(311)는 S326 단계에서 결정된 타이밍에 제1 컴플리션(COMP1)을 호스트 메모리 버퍼(32)의 완료 큐(CQ)에 기입할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 처리 레이턴시들(PL1, PL2)을 기반으로 커맨드들(CMD1, CMD2) 중 먼저 처리될 커맨드를 결정하는 스토리지 시스템의 동작 방법이 제공될 수 있다.
도 12는 도 11의 동작 방법을 수행하는 스토리지 시스템을 예시적으로 보여주는 도면이다. 도 12를 참조하면, 처리 레이턴시들(PL1, PL2)을 기반으로 커맨드들(CMD1, CMD2) 중 먼저 처리될 커맨드를 결정하는 스토리지 시스템이 예시적으로 도시된다.
스토리지 시스템은 호스트 프로세서(31), 호스트 메모리 버퍼(32), 커맨드 매니저(311), 및 DMA 엔진(312)을 포함할 수 있다. 호스트 메모리 버퍼(32)는 커맨드 버퍼(32a), 및 DMA 버퍼(32b)를 포함할 수 있다. DMA 버퍼(32b), DMA 엔진(312), 및 불휘발성 메모리 장치(320)의 특징은 도 6a의 DMA 버퍼(12b), DMA 엔진(112), 및 불휘발성 메모리 장치(120)의 특징과 유사하므로, 이에 대한 상세한 설명은 생략된다.
호스트 프로세서(31)는 제1 커맨드(CMD1)에 대한 레이턴시들(PL1, IL1) 및 제2 커맨드(CMD2)에 대한 레이턴시들(PL2, IL2)을 생성할 수 있다. 이 때, 제2 처리 레이턴시(PL2)에 대응하는 시간은 제1 처리 레이턴시(PL1)에 대응하는 시간보다 짧을 수 있다.
호스트 프로세서(31)는 제1 처리 레이턴시(PL1) 및 제1 간격 레이턴시(IL1)를 포함하는 제1 커맨드(CMD1)를 전송 큐(SQ)에 기입할 수 있다. 커맨드 매니저(311)는 전송 큐(SQ)로부터 제1 커맨드(CMD1)를 페치할 수 있다. 호스트 프로세서(31)는 제2 처리 레이턴시(PL2) 및 제2 간격 레이턴시(IL2)를 포함하는 제2 커맨드(CMD2)를 전송 큐(SQ)에 기입할 수 있다. 커맨드 매니저(311)는 전송 큐(SQ)로부터 제2 커맨드(CMD2)를 페치할 수 있다.
커맨드 매니저(311)는 레이턴시 계산기(311a), 타이밍 컨트롤러(311b), 및 우선도 결정 회로(311g)를 포함할 수 있다. 우선도 결정 회로(311g)는 제1 및 제2 처리 레이턴시(PL1, PL2)를 기반으로 제1 및 제2 커맨드(CMD1, CMD2) 중 먼저 처리될 커맨드를 결정할 수 있다.
예를 들어, 우선도 결정 회로(311g)는 제1 및 제2 처리 레이턴시(PL1, PL2)에 대응하는 시간을 비교할 수 있다. 우선도 결정 회로(311g)는 처리 레이턴시에 대응하는 시간이 짧은 제2 커맨드(CMD2)를 제1 커맨드(CMD1)보다 먼저 처리될 커맨드로 결정할 수 있다.
도 13은 본 발명의 실시 예에 따른 호스트가 수행하는 프로세스를 예시적으로 보여주는 타이밍도이다. 도 13을 참조하면, 서로 다른 컴플리션 제어 방법에 따라 호스트 프로세서가 수행하는 프로세스를 예시적으로 보여주는 타이밍도들(TD1, TD2, TD3)이 예시적으로 도시된다.
'A' 내지 'C' 프로세스는 커맨드 기입 및 컴플리션 처리와 무관하고 호스트 프로세서가 별도로 수행하는 프로세스들일 수 있다. 스위치 코스트는 호스트 프로세서가 수행하는 프로세스를 전환할 때 소요되는 시간을 의미할 수 있다. 인터럽트 프로세스는 호스트 프로세서가 인터럽트에 응답하여 완료 큐에 기입된 컴플리션을 처리하는 프로세스를 의미할 수 있다.
제1 타이밍도(TD1)는 일반적인 스토리지 시스템에서 호스트 프로세서가 수행하는 프로세스들을 예시적으로 보여주는 타이밍도이다. 이 때, 컴플리션 타이밍이 기입되는 타이밍은 레이턴시를 기반으로 결정되지 않을 수 있다. 호스트 프로세서는 '8' 사이클마다 주기적으로 컴플리션을 처리할 수 있다. 호스트 프로세서는 컴플리션 처리에 대한 부담으로 인해서 전체적인 성능이 하락될 수 있다.
제2 타이밍도(TD2)는 복수의 컴플리션을 병합하여 처리하는 스토리지 시스템에서 호스트 프로세서가 수행하는 프로세스들을 예시적으로 보여주는 타이밍도이다. 복수의 컴플리션을 병합하여 처리함에 따라, 제2 타이밍도(TD2)에서 컴플리션을 처리하는 시간(T2)은 제1 타이밍도(TD1)에서 컴플리션을 처리하는 시간(T1)보다 길 수 있다. 그러나, 불필요한 스위치 코스트를 단축할 수 있으므로, 제2 타이밍도(TD2)의 호스트 프로세서는 제1 타이밍도(TD1)의 호스트 프로세서보다 'A' 내지 'C' 프로세스를 빠르게 처리할 수 있다.
제3 타이밍도(TD3)는 레이턴시를 기반으로 컴플리션 타이밍을 관리하는 스토리지 시스템에서 호스트 프로세서가 수행하는 프로세스들을 예시적으로 보여주는 타이밍도이다. 제2 타이밍도(TD2)의 경우, 호스트 프로세서에서 수행하는 프로세스를 고려하지 않고 병합된 컴플리션을 처리하므로, 'A' 내지 'C' 프로세스의 처리가 지연될 수 있고, 불필요한 스위치 코스트들(X1, X2)이 발생할 수 있다.
제3 타이밍도(TD3)의 호스트 프로세서는 레이턴시를 기반으로 결정된 타이밍에 컴플리션을 처리함에 따라, 불필요한 스위치 코스트들(X1, X2)의 발생을 억제할 수 있다. 또한, 컴플리션 처리가 'A' 내지 'C' 프로세스에 미치는 영향을 최소화함으로써, 제3 타이밍도(TD3)의 호스트 프로세서는 제2 타이밍도(TD2)의 호스트 프로세서보다 'A' 내지 'C' 프로세스를 빠르게 처리할 수 있다.
예시적인 실시 예에서, 레이턴시를 기반으로 컴플리션 타이밍을 제어하고 복수의 컴플리션을 병합하여 처리하는 스토리지 시스템이 제공될 수 있다. 예를 들어, 제3 타이밍도(TD3)에서 'C' 프로세스 완료 시간(PCD3) 이후에 복수의 컴플리션들을 병합하여 처리할 수 있다. 이에 따라, 'A' 내지 'C' 프로세스의 처리 속도가 향상되고, 처리할 프로세스가 없는 시간 구간에서 처리되지 않은 컴플리션들을 병합하여 처리함으로써, 스위치 코스트의 발생을 최소화하고 전체적인 성능이 향상된 스토리지 시스템이 제공될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (10)

  1. 전송 큐 및 완료 큐를 포함하는 호스트와 통신하도록 구성된 스토리지 컨트롤러의 동작 방법에 있어서,
    상기 호스트로부터 전송 큐 도어벨을 수신하는 단계;
    상기 수신된 전송 큐 도어벨에 응답하여, 상기 호스트의 상기 전송 큐로부터 레이턴시를 포함하는 제1 커맨드를 페치하는 단계;
    상기 페치된 제1 커맨드를 처리하는 단계; 및
    상기 레이턴시를 기반으로 결정된 타이밍에 상기 제1 커맨드의 처리 완료를 가리키는 제1 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계를 포함하는 스토리지 컨트롤러의 동작 방법.
  2. 제 1 항에 있어서,
    상기 레이턴시는 상기 제1 커맨드의 리저브드(reserved) 영역에 포함되는 스토리지 컨트롤러의 동작 방법.
  3. 제 1 항에 있어서,
    상기 레이턴시는 상기 제1 커맨드를 페치하는 시점으로부터 상기 제1 컴플리션을 상기 완료 큐에 기입하는 시점까지의 시간 구간을 가리키는 처리 레이턴시를 포함하는 스토리지 컨트롤러의 동작 방법.
  4. 제 1 항에 있어서,
    상기 제1 컴플리션을 상기 완료 큐에 기입하는 단계를 수행하기 전, 상기 제1 커맨드와 다른 제2 커맨드의 처리 완료를 가리키는 제2 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계를 더 포함하되,
    상기 레이턴시는 상기 제2 컴플리션을 기입하는 시점으로부터 상기 제1 컴플리션을 기입하는 시점까지의 시간 구간을 가리키는 간격 레이턴시를 포함하는 스토리지 컨트롤러의 동작 방법.
  5. 제 4 항에 있어서,
    상기 레이턴시는 상기 제1 커맨드를 페치하는 시점으로부터 상기 제1 컴플리션을 상기 완료 큐에 기입하는 시점까지의 시간 구간을 가리키는 처리 레이턴시를 더 포함하고,
    상기 타이밍은 상기 처리 레이턴시 및 상기 간격 레이턴시를 기반으로 결정되는 스토리지 컨트롤러의 동작 방법.
  6. 제 5 항에 있어서,
    상기 처리 레이턴시에 대응하는 시간 구간이 상기 간격 레이턴시에 대응하는 시간 구간보다 짧으면, 상기 타이밍은 상기 제2 컴플리션을 기입하는 시점으로부터 상기 간격 레이턴시에 대응하는 시간이 경과된 시점으로 결정되는 스토리지 컨트롤러의 동작 방법.
  7. 제 5 항에 있어서,
    상기 제2 컴플리션을 상기 완료 큐에 기입하는 단계를 수행한 후, 상기 제1 및 제2 커맨드와 다른 제3 커맨드의 처리 완료를 가리키는 제3 컴플리션을 상기 완료 큐에 기입하는 단계를 더 포함하되,
    상기 처리 레이턴시에 대응하는 시간 구간이 상기 간격 레이턴시에 대응하는 시간 구간보다 길면, 상기 타이밍은 상기 제3 컴플리션을 기입하는 시점으로부터 상기 간격 레이턴시에 대응하는 시간이 경과된 시점으로 결정되는 스토리지 컨트롤러의 동작 방법.
  8. 제 1 항에 있어서,
    상기 완료 큐에 상기 제1 컴플리션이 기입된 것을 알리는 인터럽트를 상기 호스트로 출력하는 단계를 더 포함하는 스토리지 컨트롤러의 동작 방법.
  9. 제 8 항에 있어서,
    상기 제1 커맨드와 다른 제2 커맨드의 처리 완료를 가리키는 제2 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계를 더 포함하되,
    상기 인터럽트는 상기 완료 큐에 상기 제2 컴플리션이 기입된 것을 더 알리는 스토리지 컨트롤러의 동작 방법.
  10. 전송 큐 및 완료 큐를 포함하는 호스트와 통신하도록 구성된 스토리지 컨트롤러의 동작 방법에 있어서,
    상기 호스트로부터 제1 및 제2 전송 큐 도어벨을 수신하는 단계;
    상기 수신된 제1 전송 큐 도어벨에 응답하여, 상기 호스트의 상기 전송 큐로부터 제1 레이턴시를 포함하는 제1 커맨드를 페치하는 단계;
    상기 수신된 제2 전송 큐 도어벨에 응답하여, 상기 호스트의 상기 전송 큐로부터 제2 레이턴시를 포함하는 제2 커맨드를 페치하는 단계;
    상기 페치된 제1 커맨드를 처리하는 단계;
    상기 제1 레이턴시를 기반으로 결정된 제1 타이밍에 상기 제1 커맨드의 처리 완료를 가리키는 제1 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계;
    상기 페치된 제2 커맨드를 처리하는 단계; 및
    상기 제2 레이턴시를 기반으로 결정된 제2 타이밍에 상기 제2 커맨드의 처리 완료를 가리키는 제2 컴플리션을 상기 호스트의 상기 완료 큐에 기입하는 단계를 포함하는 스토리지 컨트롤러의 동작 방법.

KR1020190172650A 2019-12-23 2019-12-23 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 KR20210080761A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190172650A KR20210080761A (ko) 2019-12-23 2019-12-23 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법
US16/983,471 US11366770B2 (en) 2019-12-23 2020-08-03 Storage controller managing completion timing, and operating method thereof
CN202010960350.8A CN113093989A (zh) 2019-12-23 2020-09-14 管理完成时刻的存储控制器及其操作方法
EP20216219.4A EP3842952B1 (en) 2019-12-23 2020-12-21 Storage controller managing completion timing, and operating method thereof
US17/751,798 US20220283962A1 (en) 2019-12-23 2022-05-24 Storage controller managing completion timing, and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190172650A KR20210080761A (ko) 2019-12-23 2019-12-23 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210080761A true KR20210080761A (ko) 2021-07-01

Family

ID=76438310

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190172650A KR20210080761A (ko) 2019-12-23 2019-12-23 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법

Country Status (3)

Country Link
US (1) US11366770B2 (ko)
KR (1) KR20210080761A (ko)
CN (1) CN113093989A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023069148A1 (en) * 2021-10-20 2023-04-27 Western Digital Technologies, Inc. Data storage devices, systems, and related methods for grouping commands of doorbell transactions from host devices

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734018B2 (en) 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
KR101662824B1 (ko) 2009-07-08 2016-10-06 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8615640B2 (en) 2011-03-17 2013-12-24 Lsi Corporation System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
US20130135816A1 (en) 2011-11-17 2013-05-30 Futurewei Technologies, Inc. Method and Apparatus for Scalable Low Latency Solid State Drive Interface
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US20160286398A1 (en) 2015-03-23 2016-09-29 Qualcomm Incorporated Schedule selection and connection setup between devices participating in a nan data link
KR20170032502A (ko) * 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
KR20180010951A (ko) 2016-07-22 2018-01-31 삼성전자주식회사 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법
US10275378B2 (en) * 2017-03-07 2019-04-30 Western Digital Technologies, Inc. Data buffer pointer fetching for direct memory access
US10452278B2 (en) * 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10387081B2 (en) * 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
KR102386811B1 (ko) * 2017-07-18 2022-04-15 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102493964B1 (ko) 2017-12-18 2023-02-01 삼성전자주식회사 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법
KR20190108788A (ko) * 2018-03-15 2019-09-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN108549610B (zh) * 2018-03-27 2021-02-23 深圳忆联信息系统有限公司 一种NVMe扩展的实现方法及固态硬盘
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023069148A1 (en) * 2021-10-20 2023-04-27 Western Digital Technologies, Inc. Data storage devices, systems, and related methods for grouping commands of doorbell transactions from host devices

Also Published As

Publication number Publication date
CN113093989A (zh) 2021-07-09
US11366770B2 (en) 2022-06-21
US20210191884A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
US11954370B2 (en) Command queuing
US9304691B2 (en) Memory system and bank interleaving method
EP3531292B1 (en) Methods and apparatus for supporting persistent memory
US11036412B2 (en) Dynamically changing between latency-focused read operation and bandwidth-focused read operation
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
US11074011B2 (en) Solid state drive latency estimation interface for host performance tuning
CN102646446B (zh) 硬件动态高速缓存电源管理
US20230214326A1 (en) Computer Memory Expansion Device and Method of Operation
US20200379684A1 (en) Predictive Data Transfer based on Availability of Media Units in Memory Sub-Systems
TW201234188A (en) Memory access device for memory sharing among multiple processors and access method for the same
CN115495389B (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US20210064535A1 (en) Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof
KR20210080761A (ko) 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법
US11055220B2 (en) Hybrid memory systems with cache management
KR101317760B1 (ko) 반도체 저장 장치 기반 시스템용 동적 랜덤 액세스 메모리
US11132308B2 (en) Semiconductor device and semiconductor system
US10152410B2 (en) Magnetoresistive random-access memory cache write management
EP3842952B1 (en) Storage controller managing completion timing, and operating method thereof
US20110296131A1 (en) Nonvolatile memory system and the operation method thereof
JP2006268753A (ja) Dma回路及びコンピュータシステム
CN114168495A (zh) 存储设备的增强的预读能力
US20230325117A1 (en) Speculative command processing interface in storage systems
US11726713B2 (en) Systems and methods for priority command data fetching management
US8560748B2 (en) Information processing system including interrupt processing function

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal