KR20170007099A - 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 - Google Patents

비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 Download PDF

Info

Publication number
KR20170007099A
KR20170007099A KR1020160057341A KR20160057341A KR20170007099A KR 20170007099 A KR20170007099 A KR 20170007099A KR 1020160057341 A KR1020160057341 A KR 1020160057341A KR 20160057341 A KR20160057341 A KR 20160057341A KR 20170007099 A KR20170007099 A KR 20170007099A
Authority
KR
South Korea
Prior art keywords
queue
nvme
host
controller
queues
Prior art date
Application number
KR1020160057341A
Other languages
English (en)
Other versions
KR102403489B1 (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 삼성전자주식회사
Publication of KR20170007099A publication Critical patent/KR20170007099A/ko
Application granted granted Critical
Publication of KR102403489B1 publication Critical patent/KR102403489B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access
    • G06F2213/1602Memory access type

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)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법이 제공된다. 상기 방법은 호스트로부터 단일 명령을 수신하여 I/O 큐(queue) 생성 및 I/O 큐 삭제 중 어느 하나를 수행하고, 상기 단일 명령에 지시된 큐 식별자(queue identifier), 큐 사이즈 중 적어도 어느 하나를 처리하고, 호스트 메모리 내에, I/O 큐 생성 및 I/O 큐 삭제 중 적어도 어느 하나를 수행한다.

Description

비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 {METHOD OF MANAGING INPUT/OUTPUT (I/O) QUEUES BY NON VOLATILE MEMORY EXPRESS (NVME) CONTROLLER}
본 발명은 비휘발성 메모리 익스프레스(Non-Volatile Memory Express; NVMe)에 관한 것이며, 더욱 구체적으로는 비휘발성 메모리 익스프레스 컨트롤러에서 입출력(I/O)을 관리하는 방법에 관한 것이다.
일반적으로, 로컬의 비휘발성 메모리에 접근하기 위한 비교적 새로운 인터페이스 규약은 비휘발성 메모리 익스프레스(NVMe)이고, 이는 때때로 비휘발성 메모리 호스트 컨트롤러 인터페이스 사양(Specification)으로 지칭된다. NVMe는 호스트 애플리케이션이 비휘발성 메모리 하위 시스템(subsystem)과 통신할 수 있게 하는 레지스터 레벨 인터페이스이다. 이러한 레지스터 레벨 인터페이스는 엔터프라이즈용 및 소비자용 SSD(Solid State Drive)를 위해 최적화될 수 있고, 이는 일반적으로 PCIe(Peripheral Component Interconnect Express) 인터페이스를 통해 장착될 수 있다. NVMe는 비휘발성 메모리에 대한 직접 입출력(I/O) 접근을 제공한다. SCSI(Serial-attached Small Computer System Interface) 또는 SATA(Serial Advanced Technology Attachment)와 같은 전통적인 I/O 인터페이스와 비교할 때, NVMe를 이용하면 읽기 및 쓰기 동작의 지연 시간(latency)가 감소된다.
그러나, 현재 NVMe 사양(specification) 1.2는 1 내지 65535 개의 입출력 큐를 지원한다. 초기화 단계에서, 호스트는 I/O 큐를 생성하기 위하여 복수 (최대 1 내지 65535) 의 생성 I/O 제안 큐(Create I/O Submission Queue)와 생성 I/O 완료 큐(Create I/O Completion Queue) 명령을 보내야 하며, 이는 컨트롤러를 초기화하는 것에 요구되는 시간에 큰 영향을 미친다. 컨트롤러의 정지 단계에서, 호스트는 I/O 큐를 삭제하기 위하여 복수(최대 1 내지 65535)의 삭제 I/O 제안 큐(Delete I/O Submission Queue)와 삭제 I/O 완료 큐(Delete I/O Completion Queue) 명령을 보내야 하고, 이는 호스트 컨트롤러의 정지에 요구되는 시간에 큰 영향을 미친다. 예를 들어, NVMe 컨트롤러는 먼저 명령을 인출(fetch)하고, 이를 처리한 후 응답 엔트리(response entry)를 호스트 NVMe 드라이버로 보낸다. 만약 NVMe 컨트롤러가 이러한 생성 또는 삭제 명령을 하나씩 처리한다면, 많은 시간이 소요되고 이는 부팅과 하이버네이션(hibernation), 정지 및 절전 모드(low power condition)에 결정적이다.
상기 정보는 독자로 하여금 본 발명을 이해하는 것을 돕기 위한 배경 정보 만의 목적으로 제공되었고, 상기 정보의 그 어떤 것이 본 발명에 대한 공지 기술로 적용될 수 있는지에 대한 결정 또는 가정을 만들지 않았다.
본 발명이 해결하고자 하는 과제는 비휘발성 메모리 익스프레스(NVMe) 컨트롤러의 입출력(I/O) 큐를 관리하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 과제는 호스트로부터 단일 명령을 수신하여 I/O 제안 큐(I/O submission queue)의 형성을 수행하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 과제는 호스트로부터 단일 명령을 수신하여 I/O 완료 큐(I/O complete queue)의 형성을 수행하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 과제는 호스트로부터 단일 명령을 수신하여 I/O 완료 큐(I/O complete queue)의 삭제를 수행하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 과제는 호스트로부터 단일 명령을 수신하여 I/O 제안 큐(I/O submission queue)의 삭제를 수행하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법은, 호스트로부터 I/O 큐(queue) 생성 및 I/O 큐 삭제 중 어느 하나를 수행하기 위한 단일 명령을 수신하고, 상기 단일 명령에 지시된 큐 식별자(queue identifier), 큐 사이즈(queue size) 중 적어도 어느 하나를 처리하고, 호스트 메모리 내에, 상기 I/O 큐 생성 및 상기 I/O 큐 삭제 중 적어도 어느 하나를 수행한다.
본 발명의 몇몇 실시예에서, 상기 I/O 큐 생성 및 상기 I/O 큐 삭제 중 어느 하나에 대응하여 상기 호스트로 응답을 전송하는 것을 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 I/O 큐는 완료 큐(completion queue)일 수 있다.
본 발명의 몇몇 실시예에서, 상기 I/O 큐는 제안 큐(submission queue)일 수 있다.
본 발명의 몇몇 실시예에서, 상기 큐 식별자, 상기 큐 사이즈 중 적어도 어느 하나를 처리하여 상기 I/O 큐를 생성하는 것은, 상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고, 상기 단일 명령에 지정된 상기 큐 사이즈를 분석하고, 상기 단일 명령에 지정된 물리적 영역 페이지(Physical Region Page, PRP) 값을 분석하고, 상기 큐 사이즈에 기초하여 상기 I/O 큐를 생성하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 큐 식별자, 큐 사이즈 중 적어도 어느 하나를 처리하여 상기 I/O 큐를 삭제하는 것은, 상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고, 상기 단일 명령에 지정된 상기 큐 사이즈를 분석하고, 상기 큐 사이즈에 기초하여 상기 I/O 큐의 개수를 감지하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 큐 식별자 및 상기 큐 사이즈 중 적어도 어느 하나를 처리하여 상기 I/O 큐를 삭제하는 것은, 상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고, 상기 호스트 메모리 내에 존재하는 상기 I/O 큐를 삭제하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 단일 명령에 지정된 상기 큐 사이즈를 분석하는 것은, 상기 단일 명령에 지정된 상기 큐 사이즈가 상기 NVMe 컨트롤러에 지원되는 I/O 큐 제한 범위 이내에 있는지 여부를 결정하는 것을 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 익스프레스 컨트롤러는, 호스트로부터 I/O 큐의 생성을 수행하기 위한 단일 명령을 수신하고, 상기 단일 명령에 지시된 큐 식별자, 큐 사이즈 중 적어도 어느 하나를 처리하고, 호스트 메모리 내에 I/O 큐의 생성을 수행한다.
본 발명의 몇몇 실시예에서, 상기 NVMe 컨트롤러는 상기 호스트로 상기 I/O 큐의 생성에 대응하여 응답을 전송할 수 있다.
본 발명의 몇몇 실시예에서, 상기 NVMe컨트롤러가 상기 큐 식별자 및 상기 큐 사이즈 중 적어도 하나를 처리하여 상기 I/O 큐를 생성하는 것은, 상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고, 상기 단일 명령에 지정된 상기 큐 사이즈를 분석하고, 상기 단일 명령에 지정된 PRP 값을 분석하고, 상기 큐 사이즈에 기초하여 상기 I/O 큐를 생성하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 NVMe 컨트롤러가 상기 단일 명령에 지정된 상기 큐 사이즈를 분석하는 것은, 상기 단일 명령에 지정된 상기 큐 사이즈가 상기 NVMe 컨트롤러가 지원하는 I/O 큐 제한 범위 이내인지 결정하는 것을 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 익스프레스 컨트롤러는, 호스트로부터 I/O 큐의 삭제를 수행하기 위한 단일 명령을 수신하고, 상기 단일 명령에 지시된 큐 식별자, 큐 사이즈 중 적어도 하나를 처리하고, 호스트 메모리 내의 I/O 큐의 삭제를 수행한다.
본 발명의 몇몇 실시예에서, 상기 I/O 큐의 삭제에 대응하여 상기 호스트로 응답을 전송할 수 있다.
본 발명의 몇몇 실시예에서, 상기 NVMe 컨트롤러가 상기 큐 식별자 및 상기 큐 사이즈 중 적어도 하나를 처리하여 상기 I/O 큐를 삭제하는 것은, 상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고, 상기 단일 명령에 지정된 상기 큐 사이즈를 분석하고, 상기 큐 사이즈에 기초하여 상기 I/O 큐를 삭제하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 NVMe 컨트롤러가 상기 큐 식별자 및 상기 큐 사이즈를 처리하여 상기 I/O 큐를 삭제하는 것은, 상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고, 상기 호스트 메모리에 존재하는 상기 I/O 큐를 삭제하는 것을 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 비휘발성 메모리 익스프레스(NVMe) 컨트롤러에 의한 입출력 큐의 관리를 위한 시스템의 개략도이다.
도 2는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 큐의 관리를 위한 시스템의 블록도이다.
도 3a는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 완료/제안 큐의 생성을 위한 시스템의 블록도이다.
도 3b는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 완료/제안 큐의 삭제를 위한 시스템의 블록도이다.
도 4는 본 발명의 실시예에 따른 NVMe의 다양한 유닛을 도시한다.
도 5a는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 완료 큐의 생성 방법을 도시하는 순서도이다.
도 5b는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 완료 큐의 방법을 도시하는 순서도이다.
도 6a는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 모든 I/O 완료 큐의 삭제 방법을 도시하는 순서도이다.
도 6b는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 완료 큐의 삭제 방법을 도시하는 순서도이다.
도 6c는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 제안 큐의 삭제 방법을 도시하는 순서도이다.
도 6d는 본 발명의 실시예에 따른 NVMe 컨트롤러에 의한 I/O 제안 큐의 삭제 방법을 도시하는 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 층 및 영역들의 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에 걸쳐, NVMe 컨트롤러와 컨트롤러는 상호 교환적으로 사용된다.
기존 시스템에서, NVMe 큐는 하나씩 생성 또는 삭제된다. 큐는 동기적으로(synchronously) 또는 비동기적으로(asynchronously) 생성 또는 삭제될 수 있는데, 이는 호스트 NVMe 드라이버가 이전에 발행된 큐 생성 명령에 대한 응답을 기다리거나 이를 기다리지 않고 다음 큐 생성 명령을 발행할 수 있는 것을 의미한다. 만약 NVMe 컨트롤러가 이러한 명령어의 생성 또는 삭제를 하나씩 처리한다면, 많은 시간이 소요되고 이는 부팅과 하이버네이션 및 정지에 결정적이다. 또한, 큐의 생성 및 삭제는 더 많은 전력을 소비한다.
종래의 시스템과는 달리, 제안된 방법은 I/O 큐를 생성하기 위한 단일 명령을 제공한다. 제안된 방법은 복수의 명령을 사용하는 대신에 단일의 어드민 명령(admin command)을 갖는 복수의 I/O 큐를 생성하는 가벼운 솔루션을 제공한다. 이러한 특징은 컨트롤러를 초기화하는데 요구되는 시간을 향상시킬 수 있고, 이는 결과적으로 호스트 초기화, 하이버네이션으로부터의 복귀 및 호스트로부터의 에러 복구에 소요되는 시간을 향상시킬 것이다.
종래의 시스템과는 달리, 제안된 방법은 삭제 I/O 큐에 대한 최소한의 명령을 제공한다. 제안된 방법은 복수의 명령을 사용하는 대신에 단일 어드민 명령을 갖는 모든 I/O 큐를 삭제하는 가벼운 솔루션을 제공한다. 이러한 특징은 컨트롤러를 정지하는데 요구되는 시간을 향상시킬 수 있고, 이는 결과적으로 호스트 정지, 호스트 하이버네이션 및 호스트로부터의 에러 복구에 소요되는 시간을 향상시킬 것이다. 제안된 방법은 64535개의 I/O 큐를 삭제하기 위해 단일 명령을 활용한다.
종래의 시스템과는 달리 제안된 발명은 호스트로부터 유입된 명령을 관리하기 위하여 NVMe 컨트롤러 내의 제안 및 완료 FIFO(First-In First-Out) 유닛을 생성하지 않는다. 제안된 방법은 명령 처리 순서 (command processing order) 를 다루지 않는다. 제안된 발명은 65535개의 I/O 큐를 생성하기 위하여 단일 명령을 이용한다.
도 1 내지 6d를 참조하여 본 발명의 실시예들이 서술되고, 유사한 도면 부호는 모든 도면에 걸쳐 일정한 구성 요소를 지칭한다.
도 1은 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 I/O 큐를 관리하기 위한 시스템(100)을 개략도를 도시한다. 시스템(100)은 NVMe 컨트롤러(102)와 NVMe 호스트 드라이버(104)를 포함한다. NVMe 컨트롤러(102)는 유선 통신 수단 또는 무선 통신 수단을 통해 NVMe 호스트 드라이버(104)와 통산한다. 본 발명의 몇몇 실시예에서, NVMe 컨트롤러(102)는 PCI 익스프레스에 기초한 SSD(solid state drive)를 활용하는 엔터프라이즈용 및 소비자용 시스템의 요구를 다루기 위하여 설계된 확장성이 있는(scalable) 호스트 컨트롤러 인터페이스이다.
확장성 있는 호스트 컨트롤러 인터페이스는 최적화된 명령어 발행 및 완료 경로(path)를 제공한다. 이는 I/O 큐 내에서 최대 64K의 명령을 지원하는 병렬 처리에 대한 지원을 포함한다. 또한, 엔드-투-엔드(end-to-end) 데이터 보호(T10 데이터 무결성 필드(Data Integrity Field, DIF)와 DIX 규격과 호환되는), 향상된 에러 보고 및 가상화와 같은 많은 엔터프라이즈용 기능을 위한 지원이 더해졌다.
본 발명의 몇몇 실시예에서, NVMe 컨트롤러(102)는 제안 및 완료 큐 절차에 기반하여 동작한다. 명령은 호스트 애플리케이션에 의하여 제안 큐로 배치된다. 완료는 내부 컨트롤러에 의하여 관련된 완료 큐로 배치된다. 제안 큐는 동일한 완료 큐를 활용할 수 있다. 제안 및 완료 큐는 호스트 메모리 내에서 할당된다.
NVMe 호스트 드라이버(104)는 I/O 큐의 생성 또는 삭제를 수행하는 단일 명령을 NVMe 컨트롤러(102)에 보내도록 구성된다. NVMe 컨트롤러(102)에 대한 단일 명령을 보내는 것에 기초하여, NVMe 컨트롤러(102)는 단일 명령을 수신하도록 구성된다. 단일 명령을 수신한 후에, NVMe 컨트롤러(102)는 단일 명령에 지시된 큐 식별자(queue identifier), 큐 사이즈 및/또는 큐 식별자와 큐 사이즈의 조합을 처리하도록 구성된다. 큐 식별자와 큐 사이즈를 처리한 후에, NVMe 컨트롤러(102)는 호스트 메모리 내에서 I/O 큐의 생성 또는 삭제를 수행하도록 구성된다.
본 발명의 몇몇 실시예에서, I/O 큐는 완료 큐이다. 또 다른 실시예에서, I/O 큐는 제안 큐이다.
본 발명의 몇몇 실시예에서, 제안 큐는 호스트가 NVMe 컨트롤러(102)에 의한 실행을 위한 명령을 제출하기 위해 사용하는 고정된 슬롯 크기를 갖는 순환 버퍼(circular buffer)일 수 있다. 실행될 새로운 명령어가 있는 경우 호스트는 제안 큐와 관련된 NVMe 컨트롤러(102)의 적절한 도어벨 레지스터(doorbell register)를 업데이트한다. 주어진 제안 큐와 관련된 새로운 도어벨 레지스터의 쓰기가 있는 경우에, 도어벨 레지스터의 이전 값은 NVMe 컨트롤러(102)에 덮어쓰기 된다. NVMe 컨트롤러(102)는 제안 큐 레지스터에 의해 명시된 순서로 호스트 메모리로부터 단일 명령을 인출한다.
본 발명의 몇몇 실시예에서, 완료 큐는 완료 명령의 상태를 포스트(post)하기 위한 고정된 슬롯 사이즈의 순환 버퍼이다. 완료 명령은 관련된 제안 큐 식별자와 호스트 애플리케이션으로부터 지정(assign)된 명령 식별자의 조합에 의해 유일하게 식별된다.
본 발명의 몇몇 실시예에서, 완료 큐의 헤드 포인터는 호스트 애플리케이션이 마지막 프리 완료 큐 엔트리(free completion queue entry)를 가리키는 완료 큐 엔트리를 처리한 후에 호스트 애플리케이션에 의해 업데이트될 수 있다. 엔트리가 레지스터를 참조(consult)하지 않고 새롭게 포스트되었는지 여부를 나타내도록 페이즈(P) 비트가 정의된다. 이는 호스트 애플리케이션이 새로운 엔트리가 이전 또는 현재 완료 통지(notification) 라운드(round)의 일부로써 포스트되는지 여부를 결정할 수 있다. 특히, 완료 큐 위치(location)에 걸친 각 라운드에서, NVMe 컨트롤러(102)는 페이즈 비트를 반전시킬 수 있다.
본 발명의 몇몇 실시예에서, 호스트에 의하여 채용된 애플리케이션은 NVMe 컨트롤러(102)가 지원하는 최대 개수만큼 제안 큐와 완료 큐를 생성할 수 있다. 일반적으로 생성된 제안 큐의 개수는 시스템 구성과 예상되는 작업량(workload)(예를 들어, 가능한 프로세싱 코어의 개수)에 기초하여 생성된다. 예를 들어, 4코어 프로세서 기반 시스템에서, 락킹(locking)을 피하고 데이터 스트럭쳐를 보장하기 위해 코어 당 하나의 제안 큐(101)/완료 큐(102) 쌍이 적절한 프로세서 코어의 캐시 내에 생성될 수 있다.
본 발명의 몇몇 실시예에서, 단일 명령의 전송에 의하여 복수의 큐가 생성되고, 요구되는 정보는 물리 영역 페이지 1(PRP1)/물리 영역 페이지 2(PRP2) 또는 명령의 임의의 다른 필드에 의해 운반되고, 큐 베이스 주소(Queue Base address), 인터럽트 벡터(Interrupt Vector), 큐 사이즈 등의 정보가 호스트 시스템에 의하여 제공될 것이다.
도 2는 본 발명의 몇몇 실시예에 따른 NVMe에 의한 입출력 큐의 관리하기 위한 시스템(200)의 블록도이다. 시스템(200)은 NVMe 컨트롤러(102), NVMe 호스트 드라이버(104), 상부 스토리지 스택(202), PCIe(204), NVMe 패브릭(Fabric)/PCIe(206), 프로세서 하위 시스템(208) 및 NAND 하위 시스템(210)을 포함한다. NVMe 컨트롤러(102)는 NVMe 패브릭/PCIe(206)을 통하여 NVMe 호스트 드라이버(104)와 통신한다.
NVMe 패브릭/PCIe(206)은 비휘발성 메모리 호스트 컨트롤러 인터페이스(Non-Volatile Memory Host Controller Interface, NVMHCI) 워킹 그룹(working group)에 의해 정의된다. 상부 스토리지 스택(202)은 NVMe 호스트 드라이버(104)와 통신한다. 본 발명의 몇몇 실시예에서, 상부 스토리지 스택(202)은 쓰기 명령과 장치 주소를 데이터 스토리지 장치(미도시)에 전송하고, 쓰기 명령과 장치 주소는 내부 컨트롤러(미도시)에 의한 처리를 위한 호스트 인터페이스에 의하여 수신된다. NVMe 호스트 드라이버(104)는 양방향 방식(bidirectional manner)로 PCIe(204)와 통신한다. NVMe 컨트롤러(102)는 프로세스 하위 시스템(208)과 양방향 방식으로 통신한다. NVMe 컨트롤러(102)는 NAND 하위 시스템(210)과 양방향 방식으로 통신한다. NAND 하위 시스템(210)은 프로세서 하위 시스템(208)과 양방향 방식으로 통신한다.
NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)에 단일 명령을 전송하여 I/O 큐의 생성 또는 I/O 큐의 삭제를 수행하도록 구성된다. NVMe 컨트롤러(102)로 단일 명령을 전송하는 것에 기초하여, NVMe 컨트롤러(102)는 NVMe 패브릭/PCIe(206)을 통해 단일 명령을 수신하도록 구성된다. 단일 명령을 수신한 후에, NVMe 컨트롤러(102)는 단일 명령에 나타난 큐 식별자, 큐 사이즈 및/또는 이들의 조합을 처리하도록 구성된다. 큐 식별자와 큐 사이즈를 처리한 이후에, NVMe 컨트롤러(102)는 호스트 메모리에서 I/O 큐의 생성 또는 삭제를 수행하도록 구성된다.
도 1 및 도 2는 시스템(100)과 시스템(200)의 제한된 개략도를 도시하지만, 본 발명의 실시예가 이에 제한되지 않음이 이해되어야 한다. 또한, 시스템(100)과 시스템(200)은 서로 통신하는 임의의 수의 하드웨어 또는 소프트웨어 구성 요소를 포함할 수 있다. 예를 들어, 구성 요소는, 컨트롤러 또는 프로세서 내에서 실행되는 프로세서, 객체(object), 실행 가능한 프로세스, 실행 쓰레드, 프로그램 또는 컴퓨터가 될 수 있으나 이에 제한되지 않는다. 도시의 목적으로, 장치 상에서 실행되는 애플리케이션과 장치 그 자신이 구성 요소가 될 수 있다.
도 3a는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 I/O 완료/제안 큐의 생성을 위한 시스템의 블록도이다. 본 발명의 몇몇 실시예에서, I/O 완료 큐의 생성 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)로 단일 명령을 전송하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, NVMe 컨트롤러(102)는 큐 식별자의 값이 0h로 지정되었는지 확인하도록 구성된다. 큐 식별자의 값이 0h로 지정되었는지 확인한 이후에, NVMe 컨트롤러(102)는 단일 명령에서 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 내인지 여부를 결정하도록 구성된다.
만약 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 이내에 있지 않다면,, NVMe 컨트롤러(102)는 에러 메시지를 팝업하도록 구성된다. 만약 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 이내에 있다면, NVMe 컨트롤러(102)는 큐 식별자와 큐 사이즈를 처리하도록 구성된다.
큐 식별자와 큐 사이즈의 처리에 기초하여, NVMe 컨트롤러(102)는 호스트 메모리 내에 완료 큐를 생성하도록 구성된다. 호스트 메모리에 완료 큐의 생성에 기초하여, NVMe 컨트롤러(102)는 호스트 드라이버(104)에 응답을 전송하도록 구성된다.
본 발명의 다른 실시예에서, I/O 제안 큐의 생성 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)에 단일 명령을 전송하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, NVMe 컨트롤러(102)는 큐 식별자의 값이 0h로 지정되었는지 확인하도록 구성된다. 큐 식별자의 값이 0h로 지정되었는지 확인한 이후에, NVMe 컨트롤러(102)는 단일 명령에서 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 내인지 여부를 결정하도록 구성된다.
만약 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 이내에 있지 않다면, NVMe 컨트롤러(102)는 에러 메시지를 팝업하도록 구성된다. 만약 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 이내에 있다면, NVMe 컨트롤러(102)는 큐 식별자와 큐 사이즈를 처리하도록 구성된다. 큐 식별자와 큐 사이즈의 처리에 기초하여, NVMe 컨트롤러(102)는 호스트 메모리 내에 완료 큐를 생성하도록 구성된다. 호스트 메모리에 완료 큐의 생성에 기초하여, NVMe 컨트롤러(102)는 호스트 드라이버(104)에 응답을 전송하도록 구성된다.
종래의 시스템과 달리, 제안된 시스템은 완료/제안 I/O 큐의 생성에 최소한의 명령을 제공한다. 제안된 방법은 복수의 명령을 사용하는 대신에, 단일 어드민 명령으로 복수의 완료/제안 I/O 큐를 생성하는 가벼운 솔루션을 제공한다. 이러한 특징은 컨트롤러를 초기화하기 위해 필요한 시간을 향상시킬 수 있고, 이는 결과적으로 호스트 초기화, 하이버네이션으로부터의 복귀 및 호스트로부터 에러 복구에 필요한 시간을 향상시킬 것이다.
도 3b는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 I/O 완료/제안 큐의 삭제를 위한 시스템의 블록도이다. 본 발명의 몇몇 실시예에서, I/O 큐의 삭제 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)로 단일 명령을 전송하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, NVMe 컨트롤러(102)는 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하도록 구성된다. 큐 식별자의 값이 0h로 지정되었는지 여부의 감지 결과에 기초하여, NVMe 컨트롤러(102)는 호스트 메모리 내의 모든 I/O 큐를 삭제하도록 구성된다. 호스트 메모리 내의 모든 I/O 큐를 삭제하는 것에 기초하여, NVMe 컨트롤러(102)는 NVMe 호스트 드라이버(104)에 응답을 전송하도록 구성된다.
본 발명의 다른 실시예에서, I/O 큐의 삭제 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)에 단일 명령을 전송하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, NVMe 컨트롤러(102)는 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하도록 구성된다. 큐 식별자의 값이 0h로 지정되었는지를 감지한 이후에, NVMe 컨트롤러(102)는 단일 명령에 지정된 큐 사이즈를 분석하도록 구성된다. 단일 명령에 지정된 큐 사이즈 분석에 기초하여, NVMe 컨트롤러(102)는 큐 식별자와 큐 사이즈를 처리하도록 구성된다. 큐 식별자와 큐 사이즈를 처리한 이후에, NVMe 컨트롤러(102)는 호스트 메모리 내에 I/O 큐를 삭제하도록 구성된다. 호스트 메모리 내에 I/O 큐를 삭제한 이후에, NVMe 컨트롤러(102)는 호스트 드라이버(104)에 응답을 전송하도록 구성된다.
종래의 시스템과 달리, 제안된 시스템은 완료/제안 I/O 큐의 삭제에 최소한의 명령을 제공한다. 제안된 방법은 복수의 명령을 사용하는 대신에, 단일 어드민 명령으로 완료/제안 I/O 큐의 전부/일부를 삭제하는 가벼운 솔루션을 제공한다. 이러한 특징은 컨트롤러를 정지하기 위해 필요한 시간을 향상시킬 수 있고, 이는 결과적으로 호스트 정지, 호스트 하이버네이션 및 호스트로부터 에러 복구에 필요한 시간을 향상시킬 것이다.
도 4는 본 발명의 몇몇 실시예에 따른 NVMe 컨트롤러(102)의 다양한 유닛을 도시한다. 본 발명의 몇몇 실시예에서, NVMe 컨트롤러(102)는 통신 유닛(402), 생성 유닛(404), 삭제 유닛(406)을 포함한다. 본 발명의 몇몇 실시예에서, 완료/제안 I/O 큐의 생성 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)로 단일 명령을 전송하도록 구성된다. NVMe 호스트 드라이버(104)로부터의 단일 명령 전송에 기초하여, 통신 유닛(402)은 NVMe 호스트 드라이버(104)로부터 전송된 단일 명령을 수신하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, 생성 유닛(404)은 큐 식별자의 값이 0h로 지정되었는지 확인하도록 구성된다. 큐 식별자의 값이 0h로 지정되었는지 확인한 이후에, 생성 유닛(404)은 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)가 지원하는 I/O 큐 제한 범위 이내인지 여부를 결정하도록 구성된다.
만약 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 이내에 있지 않다면, 통신 유닛(402)은 NVMe 컨트롤러(102)로 에러 메시지를 전송하도록 구성된다. NVme 컨트롤러(102)는 사용자에게 에러 메시지를 팝업하도록 구성된다. 만약 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)에서 지원하는 I/O 큐 제한 범위 이내에 있다면, 생성 유닛(404)이 큐 식별자와 큐 사이즈를 처리하도록 구성된다. 큐 식별자와 큐 사이즈의 처리에 기초하여, 생성 유닛(404)은 호스트 메모리 내에 완료/제안 I/O 큐를 생성하도록 구성된다.
본 발명의 다른 실시예에서, 완료/제안 I/O 큐의 삭제 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)에 단일 명령을 전송하도록 구성된다. NVME 호스트 드라이버(104)로부터 단일 명령을 전송한 이후에, 통신 유닛(402)는 NVMe 호스트 드라이버(104)로부터 단일 명령을 수신하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, 삭제 유닛(406)은 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하도록 구성된다. 큐 식별자에 지정된 0h 값의 감지에 기초하여, 삭제 유닛(406)은 호스트 메모리 내의 모든 완료/제안 I/O 큐를 삭제하도록 구성된다. 호스트 메모리 내의 모든 완료/제안 I/O 큐의 삭제에 기초하여, 통신 유닛(402)은 NVMe 호스트 드라이버(104)에 응답을 전송하도록 구성된다.
본 발명의 다른 실시예에서, 완료/제안 I/O 큐의 삭제 도중에, NVMe 호스트 드라이버(104)는 NVMe 컨트롤러(102)로 단일 명령을 전송하도록 구성된다. NVME 호스트 드라이버(104)로부터 단일 명령을 전송한 이후에, 통신 유닛(402)는 NVMe 호스트 드라이버(104)로부터 단일 명령을 수신하도록 구성된다. NVMe 호스트 드라이버(104)로부터 단일 명령을 수신한 이후에, 삭제 유닛(406)은 큐 식별자의 값이 0h으로 지정되었는지 여부를 감지하도록 구성된다. 큐 식별자에 지정된 0h의 값을 감지한 이후에, 삭제 유닛(406)은 단일 명령에 지정된 큐 사이즈를 분석하도록 구성된다. 단일 명령에 지정된 큐 사이즈 분석에 기초하여, 삭제 유닛(406)은 큐 식별자와 큐 사이즈를 처리하도록 구성된다. 큐 식별자와 큐 사이즈를 처리한 이후에, 삭제 유닛(406)은 호스트 메모리 내의 완료/제안 I/O 큐를 삭제하도록 구성된다. 호스트 메모리 내의 완료/제안 I/O 큐를 삭제한 이후에, 통신 유닛(402)은 NVMe 호스트 드라이버(104)로 응답을 전송하도록 구성된다.
비록 도 4가 NVMe 컨트롤러(102)의 예시적인 유닛을 도시하지만, 본 발명의 다른 실시예에서, NVMe 컨트롤러(102)는 도 4에서 도시된 것보다 더 적거나, 다르거나, 다르게 배치되거나 또는 부가적인 구성 요소를 포함할 수 있다. 부가적으로 또는 대안적으로, NVMe 컨트롤러(102)의 하나 이상의 구성 요소가 NVMe 컨트롤러(102)의 하나 이상의 다른 구성 요소에 의하여 수행되도록 기술된 기능을 수행할 수 있다.
도 5a는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 I/O 완료 큐의 생성을 위한 방법(500a)을 도시하는 순서도이다. 제안된 방법(500a)에서, 단일의 생성 I/O 완료 큐 명령(create I/O completion queue command)로, 최대 64K의 I/O 완료 큐가 생성될 수 있다.
단계(502a)에서, 방법(500a)은 호스트로부터 단일 명령을 수신하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 통신 유닛(402)이 호스트로부터 단일 명령을 수신하도록 한다. 단계(504a)에서, 방법(500a)은 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 생성 유닛(404)이 큐 식별자에 지정된 0h의 값을 감지하도록 한다. 예를 들어, CDW10.QID(NVMe 규격에서 큐 식별자 필드)의 경우: 만약 지정된 값이 0h이라면, NVMe 컨트롤러(102)는 이 명령이 호스트 메모리 내에 복수의 I/O 완료 큐를 생성하도록 의도되었다고 해석하여야 한다.
만약 단계(506a)에서 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)가 지원하는 I/O 큐 제한 범위 이내에 있는 것이 결정되었다면, 단계(508a)에서, 방법(500a)은 단일 명령에 지정된 큐 사이즈를 분석하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 생성 유닛(404)이 단일 명령에 지정된 큐 사이즈를 분석하도록 한다.
만약 단계(506a)에서 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)가 지원하는 I/O 큐 제한 범위 이내에 있지 않은 것이 결정되었다면, 단계(510a)에서, 방법(500a)은 NVMe 컨트롤러(102)로 에러 메시지를 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 통신 유닛(402)이 NVMe 컨트롤러(102)로 에러 메시지를 전송하도록 한다. 단계(512a)에서, 방법(500a)은 단일 명령에 지정된 PRP 값을 분석하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 생성 유닛(404)이 단일 명령에 지정된 PRP 값을 분석하도록 한다.
예를 들어, CDW10.QSIZE(NVMe 규격에서 큐 사이즈 필드)의 경우: 만약 CDW10.QID가 0이라면, 이 필드는 이 명령으로 생성되는 큐 개수(Number of Queues, NQ)를 가리킨다. 만약 CDW10.QID가 0이 아니라면, 이 필드는 큐 사이즈(QSIZE)를 가리킨다. 큐 개수(NQ)의 경우: 이 필드는 이 명령과 함께 생성될 완료 큐의 개수를 가리킨다. 만약 지정된 값이 NVMe 컨트롤러(102)에 의해 지원되는 큐 개수(NQ)를 초과한다면, NVMe 컨트롤러(102)는 무효의 큐 개수(Invalid Number of Queues) 에러를 반환해야 한다. 이는 0 베이스 값(zero-based numbering)이다. 만약 NQ에서 지정된 값이 NVMe 컨트롤러(102)에 의해 지원되는 큐 개수를 초과한다면 생성 I/O 완료 큐는 명령 지정 상태(command specific status)에서 3h 값을 반환할 것이고, 이는 무효의 큐 개수를 가리킨다. 큐 개수는 겟 피쳐(Get Features)를 이용하여 얻어질 수 있다. PRP1: 만약 CDW10.QID가 0으로 설정되면, 이 필드는 아래에 정의된 완료 큐 엔트리 어레이의 64비트 기반 메모리 주소 포인터를 지정하나 본 발명이 아래 표에 제한되지 않는다.
Figure pat00001
단계(514a)에서, 방법(500a)은 큐 식별자와 큐 사이즈를 처리하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 생성 유닛(404)이 큐 식별자와 큐 사이즈를 처리하도록 한다. 단계(516a)에서, 방법(500a)은 호스트 메모리 내에 완료 큐를 생성하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 생성 유닛(404)이 호스트 메모리 내에 큐 사이즈에 기초하여 I/O 완료 큐를 생성하도록 한다. 예를 들어, 큐 사이즈가 10으로 지정된다면, 10 개의 완료 큐가 생성될 것이다. 단계(518a)에서, 방법(500a)은 NVMe 호스트 드라이버(104)로 응답을 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500a)은 통신 유닛(402)이 NVMe 호스트 드라이버(104)로 응답을 전송하도록 한다. 응답은 호스트 메모리 내에 I/O 완료 큐를 생성하는 것에 대응한다.
방법(500a) 내의 다양한 동작, 행동, 블록, 단계 등은 기술된 순서 또는 이와는 다른 순서로 수행되거나 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등은 본 발명의 범위를 벗어나지 않고 생략되거나, 부가되거나, 수정되거나, 건너뛰어질 수 있다.
도 5b는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 I/O 제안 큐의 생성을 위한 방법(500b)을 도시하는 순서도이다. 제안된 방법에서, 단일 생성 I/O 제안 큐 명령으로, 최대 64K의 I/O 제안 큐가 생성될 수 있다. 단계(502b)에서, 방법(500b)은 호스트로부터 단일 명령을 수신하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 통신 유닛(402)이 호스트로부터 단일 명령을 수신하도록 한다.
단계(504b)에서, 방법(500b)은 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 생성 유닛(404)이 큐 식별자에 지정된 0h의 값을 감지하도록 한다. 예를 들어, CDW10.QID의 경우: 만약 지정된 값이 0h이라면, NVMe 컨트롤러(102)는 이 명령이 호스트 메모리 내에 복수의 I/O 제안 큐를 생성하도록 의도되었다고 해석하여야 한다.
만약 단계(506b)에서 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)가 지원하는 I/O 큐 제한 범위 이내에 있지 않은 것이 결정되었다면, 단계(510b)에서, 방법(500b)은 NVMe 컨트롤러(102)로 에러 메시지를 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 통신 유닛(402)이 NVMe 컨트롤러(102)로 에러 메시지를 전송하도록 한다. 만약 단계(506b)에서 단일 명령에 지정된 큐 사이즈가 NVMe 컨트롤러(102)가 지원하는 I/O 큐 제한 범위 이내에 있는 것이 결정되었다면, 단계(508b)에서, 방법(500b)은 단일 명령에 지정된 큐 사이즈를 분석하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 생성 유닛(404)이 단일 명령에 지정된 큐 사이즈를 분석하도록 한다. 단계(512b)에서, 방법(500b)은 단일 명령에 지정된 PRP 값을 분석하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 생성 유닛(404)이 단일 명령에 지정된 PRP 값을 분석하도록 한다.
예를 들어, CDW10.QSIZE의 경우: 만약 CDW10.QID가 0이라면, 이 필드는 이 명령으로 생성되는 큐 개수(Number of Queues, NQ)를 가리킨다. 만약 CDW10.QID가 0이 아니라면, 이 필드는 큐 사이즈(QSIZE)를 가리킨다. 큐 개수(NQ)의 경우: 이 필드는 이 명령과 함께 생성될 제안 큐의 개수를 가리킨다. 만약 지정된 값이 NVMe 컨트롤러(102)에 의해 지원되는 큐 개수(NQ)를 초과한다면, NVMe 컨트롤러(102)는 무효의 큐 개수(Invalid Number of Queues) 에러를 반환해야 한다. 이는 0 베이스 값이다. 큐 개수는 겟 피쳐(Get Features)를 이용하여 얻어질 수 있다. 만약 NQ에서 지정된 값이 NVMe 컨트롤러(102)에 의해 지원되는 큐 개수를 초과한다면 생성 I/O 완료 큐는 명령 지정 상태(command specific status)에서 3h 값을 반환할 것이고, 이는 무효의 큐 개수를 가리킨다. 큐 개수는 겟 피쳐(Get Features)를 이용하여 얻어질 수 있다. PRP1: 만약 CDW10.QID가 0으로 설정되면, 이 필드는 아래에 정의된 완료 큐 엔트리 어레이의 64비트 기반 메모리 주소 포인터를 지정하나 본 발명이 아래 표에 제한되지 않는다.
Figure pat00002
단계(514b)에서, 방법(500b)은 큐 식별자와 큐 사이즈를 처리하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 생성 유닛(404)이 큐 식별자와 큐 사이즈를 처리하도록 한다. 단계(516b)에서, 방법(500b)은 큐 사이즈에 기초하여 호스트 메모리 내에 제안 큐를 생성하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 생성 유닛(404)이 호스트 메모리 내에 큐 사이즈에 기초하여 I/O 제안 큐를 생성하도록 한다. 단계(518b)에서, 방법(500b)은 NVMe 호스트 드라이버(104)로 응답을 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(500b)은 통신 유닛(402)이 NVMe 호스트 드라이버(104)로 응답을 전송하도록 한다. 응답은 호스트 메모리 내에 I/O 제안 큐를 생성하는 것에 대응한다.
방법(500b) 내의 다양한 동작, 행동, 블록, 단계 등은 기술된 순서 또는 이와는 다른 순서로 수행되거나 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등은 본 발명의 범위를 벗어나지 않고 생략되거나, 부가되거나, 수정되거나, 건너뛰어질 수 있다.
도 6a은 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 모든 I/O 완료 큐의 삭제를 위한 방법(600a)을 도시한 순서도이다. 제안된 방법에서, 단일 “삭제 I/O 완료 큐” 명령으로, 모든 I/O 완료 큐가 삭제될 수 있다.
단계(602a)에서, 방법(600a)은 호스트로부터 단일 명령을 수신하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600a)은 통신 유닛(402)이 호스트로부터 단일 명령을 수신하도록 한다. 단계(604a)에서, 방법(600a)은 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600a)은 삭제 유닛(406)이 큐 식별자에 지정된 0h의 값을 감지하도록 한다.
단계(606a)에서, 방법(600a)은 호스트 메모리 내의 모든 완료 큐를 삭제하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600a)은 삭제 유닛(406)이 호스트 메모리 내의 모든 완료 큐를 삭제하도록 한다. 예를 들어, CDW10.QID의 경우: 이 필드는 삭제될 완료 큐의 식별자를 가리킨다. 0h의 값은 NVMe 컨트롤러(102)가 모든 I/O 완료 큐를 삭제하여야 함을 가리킨다. 단일 “삭제 I/O 완료 큐” 명령으로, 모든 I/O 완료 큐가 삭제될 수 있다.
단계(608a)에서, 방법(600a)은 NVMe 호스트 드라이버(104)에 응답을 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600a)은 통신 유닛(402)이 NVMe 호스트 드라이버(104)에 응답을 전송하도록 한다. 응답은 호스트 메모리 내의 모든 I/O 완료 큐의 삭제에 대응한다.
제안된 방법은 또한 단일 “삭제 I/O 완료 큐” 명령을 이용하여 이미 생성된 I/O 완료 큐를 삭제할 수 있다.
방법(600a) 내의 다양한 동작, 행동, 블록, 단계 등은 기술된 순서 또는 이와는 다른 순서로 수행되거나 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등은 본 발명의 범위를 벗어나지 않고 생략되거나, 부가되거나, 수정되거나, 건너뛰어질 수 있다.
도 6b는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 I/O 완료 큐의 삭제를 위한 방법(600a)을 도시한 순서도이다. 단계(602b)에서, 방법(600b)은 호스트로부터 단일 명령을 수신하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 통신 유닛(402)이 호스트로부터 단일 명령을 수신하도록 한다. 단계(604b)에서, 방법(600b)은 큐 식별자의 값에 0h가 지정되었는지 여부를 감지하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 삭제 유닛(406)이 큐 식별자의 값에 0h가 지정되었는지 여부를 감지하도록 한다. 단계(606b)에서, 방법(600b)은 단일 명령에 지정된 큐 사이즈를 분석하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 삭제 유닛(406)이 단일 명령에 지정된 큐 사이즈를 분석하도록 한다.
단계(608b)에서, 방법(600b)은 큐 식별자와 큐 사이즈를 처리하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 삭제 유닛(406)이 큐 식별자와 큐 사이즈를 처리하도록 한다. 단계(610b)에서, 방법(600b)은 호스트 메모리 내의 완료 큐를 삭제하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 삭제 유닛(406)이 호스트 메모리 내의 완료 큐를 삭제하도록 한다. 단계(612b)에서, 방법(600b)은 NVMe 호스트 드라이버(104)로 응답을 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 통신 유닛(402)이 NVMe 호스트 드라이버(104)로 응답을 전송하도록 한다. 응답은 호스트 메모리 내의 I/O 완료 큐의 삭제에 대응한다.
예를 들어, 단일 “삭제 I/O 완료 큐” 명령으로, 완료 큐가 삭제될 수 있다.
제안된 방법은 또한 단일 “삭제 I/O 완료 큐” 명령을 이용하여 이미 생성된 I/O 완료 큐를 삭제할 수 있다.
방법(600b) 내의 다양한 동작, 행동, 블록, 단계 등은 기술된 순서 또는 이와는 다른 순서로 수행되거나 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등은 본 발명의 범위를 벗어나지 않고 생략되거나, 부가되거나, 수정되거나, 건너뛰어질 수 있다.
도 6c는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 모든 I/O 제안 큐의 삭제를 위한 방법(600c)을 도시하는 순서도이다. 단계(602c)에서, 방법(600c)은 호스트로부터 단일 명령을 수신하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600c)은 통신 유닛(402)이 호스트로부터 단일 명령을 수신하도록 한다. 단계(604c)에서, 방법(600c)은 큐 식별자의 값에 0h가 지정되었는지 여부를 감지하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600c)은 삭제 유닛(406)이 큐 식별자에 지정된 0h의 값을 감지하도록 한다.
단계(606c)에서, 방법(600c)은 호스트 메모리 내의 모든 제안 큐를 삭제하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600c)은 삭제 유닛(406)이 호스트 메모리 내의 모든 제안 큐를 삭제하도록 한다. 예를 들어, CDW10.QID의 경우: 이 필드는 삭제될 제안 큐의 식별자를 가리킨다. 0h의 값은 NVMe 컨트롤러(102)가 모든 I/O 제안 큐를 삭제하여야 하는 것을 가리킨다. 단일 “삭제 I/O 제안 큐” 명령으로, 모든 I/O 제안 큐가 삭제될 수 있다. 단계(608c)에서, 방법(600c)은 NVMe 호스트 드라이버(104)로 응답을 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600b)은 통신 유닛(402)이 NVMe 호스트 드라이버(104)로 응답을 전송하도록 한다. 응답은 호스트 메모리 내의 I/O 완료 큐의 삭제에 대응한다.
제안된 방법은 또한 단일 “삭제 I/O 제안 큐” 명령을 이용하여 이미 생성된 I/O 제안 큐를 삭제할 수 있다.
방법(600c) 내의 다양한 동작, 행동, 블록, 단계 등은 기술된 순서 또는 이와는 다른 순서로 수행되거나 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등은 본 발명의 범위를 벗어나지 않고 생략되거나, 부가되거나, 수정되거나, 건너뛰어질 수 있다.
도 6d는 본 발명의 실시예에 따른 NVMe 컨트롤러(102)에 의한 모든 I/O 제안 큐의 삭제를 위한 방법(600d)을 도시하는 순서도이다. 단계(602d)에서, 방법(600d)은 호스트로부터 단일 명령을 수신하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600d)은 통신 유닛(402)이 호스트로부터 단일 명령을 수신하도록 한다. 단계(604d)에서, 방법(600c)은 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600d)은 삭제 유닛(406)이 큐 식별자에 지정된 0h의 값을 감지하도록 한다. 단계(606d)에서, 방법(600d)은 단일 명령에 지정된 큐 사이즈를 분석하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600d)은 삭제 유닛(406)이 단일 명령에 지정된 큐 사이즈를 분석하도록 한다. 단계(608d)에서, 방법(600d)은 큐 식별자와 큐 사이즈를 처리하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600d)은 삭제 유닛(406)이 큐 식별자와 큐 사이즈를 처리하도록 한다. 단계(610d)에서, 방법(600d)은 호스트 메모리 내의 제안 큐를 삭제하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600d)은 삭제 유닛(406)이 호스트 메모리 내의 제안 큐를 삭제하도록 한다. 단계(612b)에서, 방법(600b)은 NVMe 호스트 드라이버(104)로 응답을 전송하는 것을 포함한다. 본 발명의 몇몇 실시예에서, 방법(600d)은 통신 유닛(402)이 NVMe 호스트 드라이버(104)로 응답을 전송하도록 한다. 응답은 호스트 메모리 내의 I/O 완료 큐의 삭제에 대응한다.
예를 들어, 단일 “삭제 I/O 제안 큐” 명령으로, 제안 큐가 삭제될 수 있다. 제안된 방법은 또한 단일 “삭제 I/O 제안 큐” 명령을 이용하여 이미 생성된 I/O 제안 큐를 삭제할 수 있다.
방법(600d) 내의 다양한 동작, 행동, 블록, 단계 등은 기술된 순서 또는 이와는 다른 순서로 수행되거나 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등은 본 발명의 범위를 벗어나지 않고 생략되거나, 부가되거나, 수정되거나, 건너뛰어질 수 있다.
본 명세서에 기재된 실시예들은 적어도 하나의 하드웨어 상에서 실행되고, 구성 요소를 제어하기 위한 네트워크 관리 함수를 수행하는 적어도 하나의 소프트웨어 프로그램을 통하여 구현될 수 있다. 도 1 내지 4에 도시된 구성 요소는 적어도 하나의 하드웨어 장치 또는 하드웨어 장치와 소프트웨어 모듈의 조합의 블록을 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
102: NVMe 컨트롤러 104: NVMe 드라이버 호스트
202: 상부 스토리지 스택 204: PCIe
206: NVMe 패브릭/PCIe 208: 프로세서 하위 시스템
210: NAND 하위 시스템 402: 통신 유닛
404: 생성 유닛 406: 삭제 유닛

Claims (10)

  1. 호스트로부터 I/O 큐(queue) 생성 및 I/O 큐 삭제 중 어느 하나를 수행하기 위한 단일 명령을 수신하고,
    상기 단일 명령에 지시된 큐 식별자(queue identifier), 큐 사이즈(queue size) 중 적어도 어느 하나를 처리하고,
    호스트 메모리 내에, 상기 I/O 큐 생성 및 상기 I/O 큐 삭제 중 적어도 어느 하나를 수행하는, 비휘발성 메모리 익스프레스(Non-Volatile Memory Express, NVMe) 컨트롤러에 의한 입출력 큐 관리 방법.
  2. 제 1항에 있어서,
    상기 I/O 큐 생성 및 상기 I/O 큐 삭제 중 어느 하나에 대응하여 상기 호스트로 응답을 전송하는 것을 더 포함하는, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  3. 제 1항에 있어서,
    상기 I/O 큐는 완료 큐(completion queue)인, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  4. 제 1항에 있어서,
    상기 I/O 큐는 제안 큐(submission queue)인, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  5. 제 1항에 있어서, 상기 큐 식별자, 상기 큐 사이즈 중 적어도 어느 하나를 처리하여 상기 I/O 큐를 생성하는 것은:
    상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고,
    상기 단일 명령에 지정된 상기 큐 사이즈를 분석하고,
    상기 단일 명령에 지정된 물리적 영역 페이지(Physical Region Page, PRP) 값을 분석하고,
    상기 큐 사이즈에 기초하여 상기 I/O 큐를 생성하는 것을 포함하는, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  6. 제 1항에 있어서,
    상기 큐 식별자, 큐 사이즈 중 적어도 어느 하나를 처리하여 상기 I/O 큐를 삭제하는 것은:
    상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고,
    상기 단일 명령에 지정된 상기 큐 사이즈를 분석하고,
    상기 큐 사이즈에 기초하여 상기 I/O 큐의 개수를 감지하는 것을 포함하는, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  7. 제 1항에 있어서,
    상기 큐 식별자 및 상기 큐 사이즈 중 적어도 어느 하나를 처리하여 상기 I/O 큐를 삭제하는 것은:
    상기 큐 식별자의 값이 0h로 지정되었는지 여부를 감지하고,
    상기 호스트 메모리 내에 존재하는 상기 I/O 큐를 삭제하는 것을 포함하는, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  8. 제 5항에 있어서,
    상기 단일 명령에 지정된 상기 큐 사이즈를 분석하는 것은, 상기 단일 명령에 지정된 상기 큐 사이즈가 상기 NVMe 컨트롤러에 지원되는 I/O 큐 제한 범위 이내에 있는지 여부를 결정하는 것을 포함하는, 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법.
  9. 호스트로부터 I/O 큐의 생성을 수행하기 위한 단일 명령을 수신하고,
    상기 단일 명령에 지시된 큐 식별자, 큐 사이즈 중 적어도 어느 하나를 처리하고,
    호스트 메모리 내에 I/O 큐의 생성을 수행하는, I/O 큐의 생성을 위한 비휘발성 메모리 익스프레스(Non-Volatile Memory Express, NVMe) 컨트롤러.
  10. 호스트로부터 I/O 큐의 삭제를 수행하기 위한 단일 명령을 수신하고,
    상기 단일 명령에 지시된 큐 식별자, 큐 사이즈 중 적어도 하나를 처리하고,
    호스트 메모리 내의 I/O 큐의 삭제를 수행하는, I/O 큐의 삭제를 위한 비휘발성 메모리 익스프레스 컨트롤러.
KR1020160057341A 2015-07-10 2016-05-11 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 KR102403489B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN3544/CHE/2015(PROVISIONALAPPLI 2015-07-10
IN3544CH2015 2015-07-10
IN3544/CHE/2015(NON-PROVISIONALA 2015-09-22

Publications (2)

Publication Number Publication Date
KR20170007099A true KR20170007099A (ko) 2017-01-18
KR102403489B1 KR102403489B1 (ko) 2022-05-27

Family

ID=57992081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160057341A KR102403489B1 (ko) 2015-07-10 2016-05-11 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법

Country Status (2)

Country Link
US (1) US10019181B2 (ko)
KR (1) KR102403489B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190014451A (ko) * 2017-08-02 2019-02-12 삼성전자주식회사 클라우드 컴퓨팅 환경에서 비휘발성 메모리 익스프레스 기반 저장 시스템의 하이브리드 프레임워크
US11080208B2 (en) 2017-05-19 2021-08-03 Samsung Electronics Co., Ltd. Ethernet-attached SSD for automotive applications

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113407244A (zh) * 2016-03-01 2021-09-17 华为技术有限公司 一种级联板、ssd远程共享访问的系统和方法
US10146439B2 (en) * 2016-04-13 2018-12-04 Samsung Electronics Co., Ltd. System and method for high performance lockless scalable target
EP3825857B1 (en) * 2016-12-05 2023-05-03 Huawei Technologies Co., Ltd. Method, device, and system for controlling data read/write command in nvme over fabric architecture
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10564853B2 (en) 2017-04-26 2020-02-18 Western Digital Technologies, Inc. System and method for locality detection to identify read or write streams in a memory device
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
DE112018000247T5 (de) * 2017-03-24 2019-09-12 Western Digital Technologies, Inc. System und verfahren zur lokalitätserkennung zum identifizieren von lese- oderschreibströmen in einer speichervorrichtung
US10509569B2 (en) * 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10466904B2 (en) * 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10691368B2 (en) * 2017-03-31 2020-06-23 Samsung Electronics Co., Ltd. System and method for providing data replication in NVMe-oF ethernet SSD
US10296249B2 (en) 2017-05-03 2019-05-21 Western Digital Technologies, Inc. System and method for processing non-contiguous submission and completion queues
KR102410671B1 (ko) 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
KR102446733B1 (ko) 2017-11-30 2022-09-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
KR20190083052A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11669267B2 (en) * 2018-02-09 2023-06-06 Western Digital Technologies, Inc. Completion entry throttling using host memory
US10719267B2 (en) * 2018-05-30 2020-07-21 Western Digital Technologies, Inc. Partial reset of memory controller
US10725901B2 (en) 2018-05-31 2020-07-28 Western Digital Technologies, Inc. Storage system and method for soft-decision-based command execution to enhance random write performance
WO2020000483A1 (zh) 2018-06-30 2020-01-02 华为技术有限公司 数据处理的方法和存储系统
US10359815B1 (en) 2018-09-21 2019-07-23 Super Micro Computer, Inc. Adaptable storage bay for solid state drives
US20230333756A1 (en) * 2019-01-14 2023-10-19 Pure Storage, Inc. Managing permissions for processing input/output (i/o) operations in a storage system
US11144226B2 (en) 2019-04-11 2021-10-12 Samsung Electronics Co., Ltd. Intelligent path selection and load balancing
US11030107B2 (en) 2019-04-19 2021-06-08 Hewlett Packard Enterprise Development Lp Storage class memory queue depth threshold adjustment
US11216190B2 (en) 2019-06-10 2022-01-04 Samsung Electronics Co., Ltd. Systems and methods for I/O transmissions in queue pair-based NVMeoF initiator-target system
US11240294B2 (en) 2019-08-23 2022-02-01 Samsung Electronics Co., Ltd. Systems and methods for spike detection and load balancing resource management
US11513861B2 (en) 2019-08-29 2022-11-29 International Business Machines Corporation Queue management in solid state memory
US11269519B2 (en) 2020-01-03 2022-03-08 International Business Machines Corporation Queue management in storage systems
WO2021156677A2 (en) * 2020-02-03 2021-08-12 Samsung Electronics Co., Ltd Data management system and method of controlling
US11307802B2 (en) 2020-02-21 2022-04-19 International Business Machines Corporation NVMe queue management multi-tier storage systems
US11252232B2 (en) 2020-02-21 2022-02-15 International Business Machines Corporation NVME-of queue management in host clusters
US11079968B1 (en) * 2020-02-21 2021-08-03 International Business Machines Corporation Queue management in multi-site storage systems
US11194742B2 (en) 2020-04-30 2021-12-07 International Business Machines Corporation Detecting potentially overlapping input/output queues
US11301140B2 (en) * 2020-06-17 2022-04-12 Intel Corporation Configuring parameters of non-volatile memory target subsystems for workload request quality of service
US11573621B2 (en) 2020-07-25 2023-02-07 International Business Machines Corporation Reduction of performance impacts of storage power control by migration of write-intensive extent
US20220171572A1 (en) * 2020-12-01 2022-06-02 Micron Technology, Inc. Queue configuration for host interface
US11599271B2 (en) 2021-02-12 2023-03-07 Hewlett Packard Enterprise Development Lp Controlling I/O Q-connections in NVMe devices
US11789658B2 (en) 2021-04-13 2023-10-17 SK Hynix Inc. Peripheral component interconnect express (PCIe) interface system and method of operating the same
KR102518317B1 (ko) * 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102668564B1 (ko) 2021-06-01 2024-05-24 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US20220327074A1 (en) * 2021-04-13 2022-10-13 SK Hynix Inc. PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
US11429444B1 (en) * 2021-04-29 2022-08-30 Hewlett Packard Enterprise Development Lp Managing distribution of I/O queue pairs of a target among hosts
US11635918B2 (en) 2021-08-31 2023-04-25 International Business Machines Corporation Data migration and replication
US11425196B1 (en) 2021-11-18 2022-08-23 International Business Machines Corporation Prioritizing data replication packets in cloud environment
US11941295B2 (en) 2022-01-11 2024-03-26 Western Digital Technologies, Inc. Data storage device and method for providing an adaptive data path

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331001A1 (en) * 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
US10073714B2 (en) * 2015-03-11 2018-09-11 Western Digital Technologies, Inc. Task queues
US20170075572A1 (en) * 2015-09-11 2017-03-16 Sandisk Technologies Inc. Extending hardware queues with software queues

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331001A1 (en) * 2013-05-02 2014-11-06 Lsi Corporation Command Barrier for a Solid State Drive Controller

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080208B2 (en) 2017-05-19 2021-08-03 Samsung Electronics Co., Ltd. Ethernet-attached SSD for automotive applications
US11847068B2 (en) 2017-05-19 2023-12-19 Samsung Electronics Co., Ltd. Ethernet-attached SSD for automotive applications
KR20190014451A (ko) * 2017-08-02 2019-02-12 삼성전자주식회사 클라우드 컴퓨팅 환경에서 비휘발성 메모리 익스프레스 기반 저장 시스템의 하이브리드 프레임워크

Also Published As

Publication number Publication date
US10019181B2 (en) 2018-07-10
KR102403489B1 (ko) 2022-05-27
US20170083252A1 (en) 2017-03-23

Similar Documents

Publication Publication Date Title
KR102403489B1 (ko) 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US11681634B2 (en) Direct host access to storage device memory space
US9727503B2 (en) Storage system and server
KR101934519B1 (ko) 저장 장치 및 그것의 데이터 전송 방법
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
US11354454B2 (en) Apparatus and method of detecting potential security violations of direct access non-volatile memory device
US9164840B2 (en) Managing a solid state drive (‘SSD’) in a redundant array of inexpensive drives (‘RAID’)
US20160232103A1 (en) Block storage apertures to persistent memory
US10509739B1 (en) Optimized read IO for mix read/write scenario by chunking write IOs
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
EP3198459A1 (en) Memory write management in a computer system
US10719245B1 (en) Transactional IO scheduler for storage systems with multiple storage devices
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US20190035445A1 (en) Method and Apparatus for Providing Low Latency Solid State Memory Access
US10275175B2 (en) System and method to provide file system functionality over a PCIe interface
CN109815170B (zh) 数据冗余的处理方法及其相关电脑系统
WO2019062202A1 (zh) 硬盘操作命令的执行方法、硬盘及存储介质
US11137918B1 (en) Administration of control information in a storage system
CN113196225A (zh) 开放信道矢量命令执行
US10592123B1 (en) Policy driven IO scheduler to improve write IO performance in hybrid storage systems
US20160019145A1 (en) Storage system and cache control method
US10346054B1 (en) Policy driven IO scheduler resilient to storage subsystem performance
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
TW202334804A (zh) 用於設備中複製目標原子性的系統、方法和裝置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant