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

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

Info

Publication number
KR102564165B1
KR102564165B1 KR1020160074832A KR20160074832A KR102564165B1 KR 102564165 B1 KR102564165 B1 KR 102564165B1 KR 1020160074832 A KR1020160074832 A KR 1020160074832A KR 20160074832 A KR20160074832 A KR 20160074832A KR 102564165 B1 KR102564165 B1 KR 102564165B1
Authority
KR
South Korea
Prior art keywords
buffers
sub
instructions
buffer
command
Prior art date
Application number
KR1020160074832A
Other languages
English (en)
Other versions
KR20170121661A (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 KR20170121661A publication Critical patent/KR20170121661A/ko
Application granted granted Critical
Publication of KR102564165B1 publication Critical patent/KR102564165B1/ko

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/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
    • 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/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

비휘발성 메모리 익스프레스 시스템에서의 PRP/SGL 처리 방법 및 시스템이 제공된다. 상기 방법은 처리될 명령어를 복수의 하위 명령어(sub command)로 분리하고, 복수의 버퍼 중 제1 버퍼 세트를 상기 복수의 하위 명령어로 채우고, 상기 제1 버퍼 세트로부터 상기 복수의 하위 명령어를 처리하고, 상기 제1 버퍼 세트 내의 복수의 하위 명령어가 처리되는 동안에 상기 제1 버퍼 세트를 채우고 남은 적어도 하나의 하위 명령어를 제2 버퍼 세트에 채우고, 및 상기 제1 버퍼 세트로부터의 하위 명령어의 처리를 중단한 이후에 상기 제2 버퍼 세트로부터 적어도 하나의 하위 명령어를 처리하는 것을 포함한다.

Description

비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 {METHOD OF MANAGING INPUT/OUTPUT (I/O) QUEUES BY NON VOLATILE MEMORY EXPRESS (NVME) CONTROLLER}
본 발명은 통신 인터페이스에 관한 것이며, 더욱 구체적으로는 비휘발성 메모리 익스프레스 (Non Volatile Memory express; NVMe) 저장 프로토콜을 구현하기 위한 솔리드 스테이트 드라이브(Solid State Drive; SSD)에서의 물리적 영역 페이지(Physical Region Page; PRP)/분산 수집 리스트(Scatter Gather List; SGL) 페치 및 프로세싱에 관한 것이다.
SSD는 데이터를 지속적으로 저장하기 위한 저장 메커니즘에 기반한 집적 회로(Integrated Circuit; IC)이다. SSD는 하드 드라이브와 비교하였을 때 높은 대역폭과 낮은 지연 시간(latency)를 제공할 수 있다. SSD가 높은 속도 및 성능을 제공할 수 있는 반면에, PCI(Peripheral Component Interface), SATA(Serial Advanced Technology Attachment), SAS(Serial Attached SCSI Small computer system interface) 등과 같이 SSD를 다른 장치에 연결시키는 전통적인 버스(bus)는 속도 및 데이터 전송 용량 면에서 제한을 갖는다. 결과적으로, SSD의 실제 능력이 발휘되지 않는다.
PCI 익스프레스 버스를 이용하여SSD를 액세스하기 위한 논리 장치 인터페이스의 역할을 하는 NVMe는 속도 및 성능과 관련된 문제를 해결하기 위하여 도입되었다. NVMe는 병렬 처리(parallelism)를 가능케 하며, 따라서 SSD 능력과 호스트 소프트웨어의 효율적인 이용이 가능함으로써 결과적으로 전체 성능을 향상시킨다.
NVMe 프로토콜은 PRP/SGL을 이용하는 명령어(command)를 정의하여 호스트 메모리 내의 데이터 버퍼 위치를 나타낸다. 데이터 버퍼는 링크드 리스트(linked list)와 유사한 구조를 이용한 단일 또는 복수의 PRP/SGL을 이용하여 나타내어진다. PRP/SGL을 포함하는 명령어와 관련된 정보는 명령어가 실행을 위해 SSD에 발행(issue)되기 전에 형성된다. 명령어를 실행하는 SSD는 관련된 PRP/SGL을 페치(fetch)하고 데이터 이동을 수행한다.
본 발명이 해결하고자 하는 과제는 명령어의 크기에 상관 없이 명령어의 효율적인 처리를 위해 비휘발성 메모리 익스프레스 시스템에서 PRP/SGL의 페치를 가능하게 하는 것이다.
본 발명이 해결하고자 하는 다른 과제는 NVMe 시스템으로 하여금 비순차적(out of order) 명령어 처리를 수행하도록 하는 것이다.
본 발명이 해결하고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 익스프레스 시스템에서의 PRP/SGL 처리 방법은 처리될 명령어를 복수의 하위 명령어(sub command)로 분리하고, 복수의 버퍼 중 제1 버퍼 세트를 상기 복수의 하위 명령어로 채우고, 상기 제1 버퍼 세트로부터 상기 복수의 하위 명령어를 처리하고, 상기 제1 버퍼 세트 내의 복수의 하위 명령어가 처리되는 동안에 상기 제1 버퍼 세트를 채우고 남은 적어도 하나의 하위 명령어를 제2 버퍼 세트에 채우고, 및 상기 제1 버퍼 세트로부터의 하위 명령어의 처리를 중단한 이후에 상기 제2 버퍼 세트로부터 적어도 하나의 하위 명령어를 처리하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 익스프레스 시스템의 PRP/SGL 처리 시스템은, 하드웨어 프로세서 및 명령어를 저장하는 비휘발성 메모리를 포함하되, 상기 명령어는 상기 하드웨어 프로세서로 하여금, 명령어 처리 시스템(command processing system)에 의해, 처리될 명령어를 복수의 하위 명령어로 분리하고, 상기 명령어 처리 시스템에 의해, 복수의 버퍼 중 제1 버퍼 세트를 상기 복수의 하위 명령어로 채우고, 상기 명령어 처리 시스템에 의해, 상기 제1 버퍼 세트로부터 상기 복수의 하위 명령어를 처리하고, 상기 명령어 처리 시스템에 의해, 상기 제1 버퍼 세트 내의 복수의 하위 명령어가 처리되고 있는 동안에, 상기 제1 버퍼 세트를 채우고 남은 적어도 하나 이상의 하위 명령어를 제2 버퍼 세트에 채우고, 상기 명령어 처리 시스템에 의해, 상기 제1 버퍼 세트로부터 하위 명령어의 처리를 중단한 이후에 상기 제2 버퍼 세트로부터 적어도 하나의 하위 명령어를 처리하도록 한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 명령어 처리 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 명령어 처리 시스템에 의한, 명령어를 실행하고 비순차적 명령어 실행을 지원하는 PRP/SGL의 페치의 처리와 관련된 단계를 도시하는 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 층 및 영역들의 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에서 개시된 실시예는, NVMe 기반 메모리 시스템에서 명령어를 실행하고 비순차적 명령어 실행을 지원하는 PRP/SGL을 페치하는 메커니즘 을 포함한다. 도 1 내지 도 2를 참조하여 실시예들이 도시되며, 도면들에 걸쳐 유사한 도면 부호들은 대응되는 구성 요소를 지칭한다.
도 1은 본 발명의 일 실시예에 따른 명령어 처리 시스템의 블록도이다. 명령어 처리 시스템(100)은 호스트 인터페이스(101), 설정 매니저(configuration manager, 102), 내부 메모리(103), 페치 엔진(104), 버퍼 인덱스 표시기(buffer index indicator, 105), PRP/SGL 컨수머(106), 시스템 버스(107)를 포함한다.
호스트 인터페이스(101)는 명령어 처리 시스템이, 적어도 하나의 명령어가 처리를 위해 수집되는 호스트와 연결하기 위한 적어도 하나의 옵션을 제공하도록 설정될 수 있다. 호스트는 데이터 및 메모리 관리와 관련된 하나 이상의 명령어를 제공한다. 설정 매니저(102)는 호스트로부터 수신한 명령어를 복수의 하위 명령어(sub-commands)로 분리하여, 하위 명령어가 내부 메모리(103)의 서로 다른 버퍼들에 채워질 수 있도록 한다. 설정 매니저(102)는 내부 메모리(103)의 NVMe 명령어에 존재하는 정보에 기초하여 설정 요소(configuration element)를 준비시키고 버퍼 인덱스가 채워진 버퍼를 가리키고 어떠한 버퍼가 채워졌는지를 나타내도록 설정한다. 설정 매니저(102)는 또한 필요한 경우 NVMe 명령어를 위해 요구되는 PRP/SGL을 기록하도록 설정될 수도 있다.
내부 메모리(103)는 호스트로부터 페치된 PRP/SGL을 추후 처리를 위해 저장하도록 설정될 수 있다. 내부 메모리(103)은 또한 처리 단계 도중에 데이터를 액세스하고 페치하기 위한 적어도 하나의 인터페이스를 제공하도록 설정될 수 있다. 본 발명의 실시예에서, 내부 메모리(103)은 데이터를 저장하기 위한 복수의 버퍼들로 나누어질 수 있으며, 각각의 버퍼는 빠른 액세스를 위해 인덱스된다. 내부 메모리(103) 또는 내부 메모리(103)와 관련된 인터페이스는 적어도 하나의 옵션을 제공할 수 있다. 내부 메모리(103)는 다른 순서로 버퍼를 채우도록 하는 적어도 하나의 옵션을 제공하도록 설정될 수도 있다. 내부 메모리(103)는 또한 랜덤 버퍼로부터 데이터의 페치 및 실행을 지원하도록 설정될 수도 있다.
페치 엔진(104)은 PRP/SGL을 페치하고 내부 메모리(103) 내에서 이에 대응하는 버퍼를 채우도록 설정될 수 있다. 페치 엔진(104)은 또한 트리거링(triggering) 시에 추가적인 PRP가 필요한지 여부를 검사하고, 만약 추가적인 PRP/SGL이 필요하다면 호스트로부터 페치하도록 설정될 수 있다. 페치 엔진(104)은 페치된 데이터를 대응되는 설정 요소에 더하여 대응되는 버퍼에 기록하고, 버퍼에 기록한 이후 버퍼 인덱스 값을 설정하도록 설정될 수 있다. 본 발명의 몇몇 실시예에서, 페치 엔진(104)은 페치 및 기록에서의 다른 단계에 버퍼 인덱스의 다른 값을 설정한다. 페치 엔진(104)은 또한 현재 실행중인 명령어의 PRP/SGL 페치의 완료 전에, 하나의 명령어로부터 다른 명령어로 전환하도록 설정될 수 있다. 페치 엔진(104)은 또한 버퍼 인덱스 값 레지스터를 설정하도록 설정될 수 있고, 이는 버퍼의 내용이 유효한지 여부를 가리킨다.
버퍼 인덱스 지시기(105)는 버퍼 값을 지시하고, 이는 결국 데이터가 채워진 버퍼의 현재 위치를 나타낸다. 이러한 버퍼 값은 또한 데이터 채우기가 재개될 위치를 지시한다.
PRP/SGL 컨수머(106)는 트리거 시에, 버퍼 인덱스 값이 설정되었는지 여부를 체크하도록 설정된다. PRP/SGL 컨수머(106)는 또한 버퍼 인덱스 값이 설정된 경우에 내부 메모리(103)로부터 버퍼의 소비를 시작하도록 설정될 수 있다. PRP/SGL 컨수머(106)는 또한 내부 메모리(103)로부터 버퍼를 소비한 이후에 페치 엔진(103)을 트리거하도록 설정될 수 있다.
시스템 버스(107)는 명령어 처리 시스템(100)의 다른 구성 요소가 각각을 연결하고, 적어도 두 개의 연결된 구성 요소 사이에서 명령어 처리 시스템(100)의 다른 기능과 관련된 데이터 신호뿐만 아니라 제어 신호를 전송하도록 적합한 인터페이스를 제공할 수 있다. 시스템 버스(107)는 또한 상술한 제어 및 데이터 신호를 지원하기에 충분한 대역폭을 제공하도록 설정될 수 있다.
도 2는 본 발명의 실시예에 따른 명령어 처리 시스템에 의한 PRP 페치 프로세스를 설명하기 위한 순서도이다.
처음에, 설정 매니저(102)에 의해 설정 요소가 준비된다(202). 설정 요소는 처리/실행될 명령어를 위해 지정된 버퍼의 PRP/SGL 엔트리를 가리키는 호스트 주소를 포함한다. 설정 매니저(102)는 또한 버퍼 유효 인덱스(buffer valid index)의 값을 설정하고(204), 버퍼 유효 인덱스는 버퍼의 데이터 엔트리 포인트를 나타낸다.
버퍼 유효 인덱스의 값을 설정한 이후에, 설정 매니저(102)는 설정된 버퍼 유효 인덱스 값으로 PRP/SGL 컨수머(106)를 트리거한다. 버퍼 유효 인덱스에 의해 지시된 버퍼의 저장 공간을 확인하고, PRP/SGL 컨수머(106)는 확인된 버퍼 저장 공간의 데이터를 읽는다(206).
버퍼 공간의 데이터를 읽은 이후에, PRP/SGL 컨수머(106)는 버퍼로부터 읽혀진 설정 요소로 페치 엔진(104)을 트리거한다. 설정 요소는 PRP/SGL 리스트를 위한 호스트 주소, PRP/SGL 세그먼트의 전체 길이와 같은 정보를 포함할 수 있으나 본 발명이 이에 제한되는 것은 아니다. 이러한 정보에 기초하여, 페치 엔진(104)은 호스트로부터 PRP/SGL을 페치한다(208).
또한, 페치 엔진(104)은 버퍼 인덱스를 페치된 PRP/SGL로 채운다(210). 본 발명의 몇몇 실시예에서, 버퍼는 제1 버퍼 세트가 채워지면, 제2 버퍼 세트, 즉 남아있는 버퍼가 처리되는 것과 같이 다른 방법으로도 채워진다. 버퍼를 채울 때, 페치 엔진(104)은 다음 반복에서 PRP/SGL 페치에 필요한 세부 사항을 포함하는 설정 요소 또한 준비한다. 이후 버퍼 유효 인덱스는 다음 반복에서 사용될 다음 버퍼 세트를 지시하도록 페치 엔진(104)에 의하여 설정된다.
방법(200)의 다양한 동작은 도시된 순서대로 수행되거나, 다른 순서 또는 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇 실시예에서, 도 2에 기재된 몇몇 동작은 생략될 수도 있다.
본 발명의 실시예는 NVMe 기반 시스템에서 PRP/SGL의 페치 및 처리 메커니즘을 설명한다. 상기 메커니즘은 비순차적 명령어 실행을 가능하게 하고, 그러한 시스템을 제공한다. 동일하거나 유사한 방법이, SCSIe(Small Computer System Interface express) 뿐만 아니라 다른 프로토콜을 지원하는 시스템에서 명령어 페치에 사용될 수 있음을 주목해야 한다. 그러므로, 본 발명의 기술적 사상은 그러한 시스템 및 컴퓨터로 판독 가능한 기록 매체에 까지 연장되고, 상기 기록 매체는 본 발명의 실시예에 따른 방법의 하나 이상의 단계를 구현하기 위한 프로그램 코드를 포함하고, 이러한 프로그램은 서버, 모바일 장치 또는 프로그램 가능한 모든 적절한 장치에서 실행될 수 있다. 본 발명의 실시예에 따른 방법을 구현하기 위하여 시스템과 함께 예를 들어, VHDL(Very high speed integrated circuit Hardware Description Language), 다른 프로그램 언어로 기록되거나, 또는 적어도 하나의 하드웨어 장치 상에서 실행될 수 있는 하나 이상의 VHDL 또는 몇몇의 소프트웨어 모듈에 의하여 구현될 수 있다. 하드웨어 장치는 서버, 개인용 컴퓨터 또는 이들의 조합 하나의 프로세서와 두 개의 FPGA의 조합과 같은 모든 종류의 프로그램될 수 있는 컴퓨터가 될 수 있다. 장치는 ASIC과 같은 하드웨어 수단 또는 ASIC과 FPGA와 같은 하드웨어와 소프트웨어 수단의 조합, 또는 적어도 하나의 마이크로 프로세서와 소프트웨어 모듈이 저장된 적어도 하나의 메모리를 포함할 수 있다. 그러므로, 이러한 수단은 적어도 하나의 하드웨어 수단 또는 적어도 하나의 하드웨어 및 소프트웨어 수단이 될 수 있다. 본 명세서에서 기술된 방법 실시예들은 순수하게 하드웨어로 구현되거나 부분적으로 하드웨어 및 소프트웨어로 구현될 수도 있다. 또는, 본 발명의 실시예들은 예를 들어 복수의 CPU를 이용하느 다른 하드웨어 장치에 의하여 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 명령어 처리 시스템 101: 호스트 인터페이스
102: 설정 매니저 103: 내부 메모리
104: 페치 엔진 105: 버퍼 인덱스 지시기
106: PRP/SGL 컨수머 107: 시스템 버스

Claims (3)

  1. 처리될 명령어를 복수의 하위 명령어(sub command)로 분리하고,
    복수의 버퍼 중 제1 버퍼 세트를 상기 복수의 하위 명령어의 제1 부분으로 채우고,
    상기 제1 버퍼 세트로부터 상기 복수의 하위 명령어의 상기 제1 부분의 일부를 처리하고,
    상기 제1 버퍼 세트 내의 복수의 하위 명령어의 상기 제1 부분이 처리되는 동안에 상기 복수의 하위 명령어의 제2 부분을 제2 버퍼 세트에 채우고, 및
    상기 제1 버퍼 세트로부터의 상기 복수의 하위 명령어의 상기 제1 부분의 일부 처리를 중단한 이후에 상기 제2 버퍼 세트로부터 상기 복수의 하위 명령의 제2 부분을 처리하는 것을 포함하는, 비휘발성 메모리 익스프레스(Non-Volatile Memory Express; NVMe) 시스템에서의 물리적 영역 페이지(Physical Region Page; PRP)/분산 수집 리스트(Scatter Gather List; SGL) 처리 방법.
  2. 하드웨어 프로세서; 및
    명령어를 저장하는 비휘발성 메모리를 포함하되, 상기 명령어는 상기 하드웨어 프로세서로 하여금,
    명령어 처리 시스템(command processing system)에 의해, 처리될 명령어를 복수의 하위 명령어로 분리하고,
    상기 명령어 처리 시스템에 의해, 복수의 버퍼 중 제1 버퍼 세트를 상기 복수의 하위 명령어의 제1 부분으로 채우고,
    상기 명령어 처리 시스템에 의해, 상기 제1 버퍼 세트로부터 상기 복수의 하위 명령어의 상기 제1 부분의 일부를 처리하고,
    상기 명령어 처리 시스템에 의해, 상기 제1 버퍼 세트 내의 복수의 하위 명령어의 상기 제1 부분이 처리되고 있는 동안에, 상기 복수의 하위 명령어의 제2 부분을 제2 버퍼 세트에 채우고,
    상기 명령어 처리 시스템에 의해, 상기 제1 버퍼 세트로부터의 상기 복수의 하위 명령어의 상기 제1 부분의 일부 처리를 중단한 이후에 상기 제2 버퍼 세트로부터 상기 복수의 하위 명령의 제2 부분을 처리하도록 하는, 비휘발성 메모리 익스프레스 시스템의 PRP/SGL 처리 시스템.
  3. 컴퓨터로 판독 가능한 프로그램을 포함하는 비일시적인 컴퓨터로 판독 가능한 기록 매체로서, 상기 컴퓨터로 판독 가능한 프로그램는 프로세서로 하여금,
    처리될 명령어를 복수의 하위 명령어(sub command)로 분리하고,
    복수의 버퍼 중 제1 버퍼 세트를 상기 복수의 하위 명령어의 제1 부분으로 채우고,
    상기 제1 버퍼 세트로부터 상기 복수의 하위 명령어의 상기 제1 부분의 일부를 처리하고,
    상기 제1 버퍼 세트 내의 복수의 하위 명령어의 상기 제1 부분이 처리되는 동안에 상기 복수의 하위 명령어의 제2 부분을 제2 버퍼 세트에 채우고, 및
    상기 제1 버퍼 세트로부터의 상기 복수의 하위 명령어의 상기 제1 부분의 일부 처리를 중단한 이후에 상기 제2 버퍼 세트로부터 상기 복수의 하위 명령의 제2 부분을 처리하도록 하는 컴퓨터로 판독 가능한 기록 매체.
KR1020160074832A 2016-04-25 2016-06-16 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 KR102564165B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641014359 2016-04-25
IN201641014359 2016-04-25

Publications (2)

Publication Number Publication Date
KR20170121661A KR20170121661A (ko) 2017-11-02
KR102564165B1 true KR102564165B1 (ko) 2023-08-04

Family

ID=60088281

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160074832A KR102564165B1 (ko) 2016-04-25 2016-06-16 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법

Country Status (2)

Country Link
US (1) US10282132B2 (ko)
KR (1) KR102564165B1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI595356B (zh) * 2016-08-19 2017-08-11 大心電子(英屬維京群島)股份有限公司 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路
US10528518B2 (en) 2016-08-21 2020-01-07 Mellanox Technologies, Ltd. Using hardware gather-scatter capabilities to optimize MPI all-to-all
US10887252B2 (en) 2017-11-14 2021-01-05 Mellanox Technologies, Ltd. Efficient scatter-gather over an uplink
CN110554833B (zh) * 2018-05-31 2023-09-19 北京忆芯科技有限公司 存储设备中并行处理io命令
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US10901624B1 (en) 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US10901733B1 (en) 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Open channel vector command execution
US11481335B2 (en) * 2019-07-26 2022-10-25 Netapp, Inc. Methods for using extended physical region page lists to improve performance for solid-state drives and devices thereof
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11200180B2 (en) * 2020-01-31 2021-12-14 Western Digital Technologies, Inc. NVMe SGL bit bucket transfers
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US20220187992A1 (en) * 2020-12-16 2022-06-16 Kioxia Corporation Systems and methods for data copy offload for storage devices
US11934693B2 (en) 2021-01-20 2024-03-19 Western Digital Technologies, Inc. Detection of scattered data locations
US11861224B2 (en) * 2021-10-26 2024-01-02 Western Digital Technologies, Inc. Data transfer management from host buffers
US11656798B1 (en) * 2021-12-03 2023-05-23 Western Digital Technologies, Inc. Immediate partial host buffer fetching
US11934684B2 (en) 2021-12-14 2024-03-19 Western Digital Technologies, Inc. Maximum data transfer size per tenant and command type
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006663A1 (en) * 2013-06-26 2015-01-01 Cnex Labs, Inc. NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks
US20150095554A1 (en) * 2013-09-27 2015-04-02 Avalanche Technology, Inc. Storage processor managing solid state disk array

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060294300A1 (en) * 2005-06-22 2006-12-28 Seagate Technology Llc Atomic cache transactions in a distributed storage system
US8359438B2 (en) * 2010-05-18 2013-01-22 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Memory banking system and method to increase memory bandwidth via parallel read and write operations
US8713204B2 (en) 2011-12-27 2014-04-29 Apple Inc. High-performance AHCI interface
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US9250814B2 (en) 2013-02-11 2016-02-02 Apple Inc. Command order re-sequencing in non-volatile memory
US8954657B1 (en) * 2013-09-27 2015-02-10 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9720860B2 (en) * 2014-06-06 2017-08-01 Toshiba Corporation System and method for efficient processing of queued read commands in a memory system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150006663A1 (en) * 2013-06-26 2015-01-01 Cnex Labs, Inc. NVM Express Controller for Remote Access of Memory and I/O Over Ethernet-Type Networks
US20150095554A1 (en) * 2013-09-27 2015-04-02 Avalanche Technology, Inc. Storage processor managing solid state disk array

Also Published As

Publication number Publication date
US20170308329A1 (en) 2017-10-26
US10282132B2 (en) 2019-05-07
KR20170121661A (ko) 2017-11-02

Similar Documents

Publication Publication Date Title
KR102564165B1 (ko) 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US10620832B1 (en) Method and apparatus to abort a command
JP6181860B2 (ja) ストレージ装置とそのデータ処理方法及びストレージシステム
CA3021969A1 (en) System and method for tcp offload for nvme over tcp-ip
US8495258B2 (en) Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
Awad et al. Non-volatile memory host controller interface performance analysis in high-performance I/O systems
US20150149741A1 (en) Storage System and Control Method Thereof
US20140379963A1 (en) Storage system, storage device, and control method of storage system
KR102366512B1 (ko) 논리 블록 어드레싱 범위 충돌 크롤러
US10346070B2 (en) Storage control apparatus and storage control method
TWI474254B (zh) 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統
US9483401B2 (en) Data processing method and apparatus
US9384135B2 (en) System and method of caching hinted data
CN110515861B (zh) 处理刷写命令的存储设备及其方法
US11029878B2 (en) Information processing system
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
EP3885888B1 (en) Parallel overlap management for commands with overlapping ranges
US20170115886A1 (en) Storage device and method of performing a write operation by the same
EP3033686B1 (en) Implementing hardware auto device operations initiator
US8667188B2 (en) Communication between a computer and a data storage device
US9946656B2 (en) Completion packet return based on eviction or flush
CN115794750B (zh) 异步i/o系统文件打开/关闭的控制方法、装置及设备
US20160098306A1 (en) Hardware queue automation for hardware engines
CN109144907B (zh) 实现快速读取的方法及介质接口控制器

Legal Events

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