KR102471219B1 - NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 - Google Patents

NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 Download PDF

Info

Publication number
KR102471219B1
KR102471219B1 KR1020207022273A KR20207022273A KR102471219B1 KR 102471219 B1 KR102471219 B1 KR 102471219B1 KR 1020207022273 A KR1020207022273 A KR 1020207022273A KR 20207022273 A KR20207022273 A KR 20207022273A KR 102471219 B1 KR102471219 B1 KR 102471219B1
Authority
KR
South Korea
Prior art keywords
address
data
host
read
nvme
Prior art date
Application number
KR1020207022273A
Other languages
English (en)
Other versions
KR20200101982A (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 KR20200101982A publication Critical patent/KR20200101982A/ko
Application granted granted Critical
Publication of KR102471219B1 publication Critical patent/KR102471219B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)
  • Communication Control (AREA)

Abstract

본 출원은 NVMe 기반의 데이터 판독 방법, 장치, 및 시스템을 개시한다. NVMe 기반의 데이터 판독 방법은, 호스트가 판독 명령을 트리거하는 단계 - 판독 명령은 제1 주소의 지시 정보를 싣고 있고, 제1 주소는 주소 지정 및 액세스를 위해 호스트에 의해 NVMe 제어기에 오픈된 주소임 -; 호스트가 판독 명령을 획득한 후 데이터 패킷을 호스트에 송신하는 단계 - 데이터 패킷은 제1 주소와 페이로드 데이터를 싣고 있음 -; 및 NVMe 제어기가 데이터 패킷을 수신한 후에, 제1 주소에 기초하여 제2 주소를 결정하고, 제2 주소가 나타내는 저장 공간에 페이로드 데이터를 저장하는 단계를 포함한다. 제2 주소는 호스트의 사설 메모리 주소일 수 있다. 호스트가 제1 주소를 제2 주소에 매핑하기 때문에, 제2 주소와 통신 프로토콜 간의 관계가 깨지며, 호스트는 통신 프로토콜에 의한 제한 없이 제2 주소에 액세스할 수 있다.

Description

NVMe 기반의 데이터 판독 방법, 장치, 및 시스템
본 출원은 저장 분야에 관한 것으로, 상세하게는 비휘발성 메모리 익스프레스(non-volatile memory express, NVMe) 기반의 데이터 판독 방법, 장치, 및 시스템에 관한 것이다.
저장 기술이 발전함에 따라, 특히 플래시(Flash)를 저장 매체로 사용하는 솔리드 스테이트 드라이브(solid state drive, SSD)에서, 종래의 기계식 하드 디스크 드라이브를 위해 설계된 직렬 ATA(Serial Advanced Technology Attachment, SATA) 인터페이스 및 직렬 ATA 고급 호스트 컨트롤러 인터페이스/고급 호스트 컨트롤러 인터페이스(Serial ATA Advanced Host Controller Interface, AHCI)가 저장 장치의 요구사항을 만족할 수 없어서 저장 장치의 처리 성능을 제한하는 병목이 된다. 결과적으로, 비휘발성 메모리 익스프레스(non-volatile memory express, NVMe)가 등장한다. NVMe는 호스트(Host)와 비휘발성 메모리(non-volatile memory, NVM) 서브시스템 사이의 통신을 허용하는 인터페이스이다. (컨트롤러와 저장 매체를 포함하는) NVM 서브시스의 통신을 허용하는 인터페이스는 레지스터 인터페이스로서 PCI 익스프레스(Peripheral Component Interconnect express, PCIe) 인터페이스에 접속되어 엔터프라이즈급과 소비자급 솔리드 스테이트 스토리지를 최적화하고 또한 고성능과 낮은 접속 지연의 이점을 제공한다.
NVMe는 한 쌍의 메커니즘, 즉 서브미션 큐(submission queue, SQ)와 완료 큐(completion queue, CQ)에 기초한다. 호스트는 서브미션 큐에 명령을 배치한다. 컨트롤러는 대응하는 완료 큐에 완료 정보를 배치한다. 각각의 서브미션 큐 엔트리(submission queue entry, SQE)는 명령이다. 판독 명령에서, 데이터 전송에 사용되는 메모리 주소가 메타데이터 포인터(Metadata Pointer, MPTR)와 데이터 포인터(Data Pointer, DPTR)를 이용하여 지정된다. 판독 명령을 획득한 후에, NVMe 컨트롤러는 PCIe 기입 조작(PCIe write operation)을 수행함으로써, 판독될 데이터를 데이터 전송에 사용되는 메모리 주소가 나타내는 저장 공간에 기입한다.
본 출원은 NVMe 기반의 데이터 판독 방법, 장치, 및 시스템을 개시한다. 호스트가 NVMe 컨트롤러에 오픈된 포털 주소를 이용하여 NVMe 컨트롤러에 의해 송신된 데이터 패킷을 수신하고, 대응하는 저장 유닛을 호스트의 메모리 공간 내의 포털 주소에 할당한다. 상기 데이터 패킷을 수신한 후에, 상기 호스트는 상기 데이터 패킷에 실려 있는 상기 포털 주소에 기초하여, 상기 포털 주소에 대응하는 저장 유닛의 주소를 결정하고, 상기 데이터 패킷의 페이로드 데이터를 상기 결정된 저장 유닛에 기입한다. 이와 같이, 상기 저장 유닛과 통신 프로토콜 사이의 관계가 깨진다. 이로 인해 유연한 데이터 조작이 구현된다.
제1 양태에 따르면, 본 출원은 NVMe 기반의 데이터 판독 시스템을 개시하며, 상기 NVMe 기반의 데이터 판독 시스템은 호스트, NVMe 컨트롤러, 및 저장 매체를 포함한다. 상기 저장 매체는 상기 호스트의 데이터를 저장하도록 구성되고; 상기 호스트는 판독 명령을 상기 NVMe 제어기에 트리거하도록 구성되며 - 여기서, 상기 판독 명령은 제1 주소를 나타내는 데 사용되는 지시 정보를 싣고 있고, 상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능(addressable)한 주소임 -; 상기 판독 명령을 획득한 후에, 상기 NVMe 제어기는 상기 저장 매체로부터 상기 판독 명령에 대응하는 판독될 데이터를 판독하고, 제1 데이터 패킷을 상기 호스트에 송신하도록 구성되고 - 여기서, 상기 제1 데이터 패킷은 상기 제1 주소와 제1 페이로드 데이터를 싣고 있고, 상기 제1 페이로드 데이터는 상기 제1 데이터 패킷에 속함 -; 상기 제1 데이터 패킷을 수신한 후에, 상기 호스트는 추가적으로, 상기 제1 주소에 기초하여 제2 주소를 결정하고, 상기 제2 주소가 나타내는 저장 유닛에 상기 제1 페이로드 데이터를 기입(write)하도록 구성된다. 여기서, 상기 제2 주소는 상기 호스트에 의해 주소 지정 가능한 주소이다.
상기 판독 명령 구체적으로 SQE일 수 있다. 상기 호스트가 판독 명령을 트리거하는 구체적인 과정은, 상기 호스트가 SQE를 SQ에 기입하고 도어 벨 메커니즘(doorbell mechanism)을 이용하여 NVMe 컨트롤러에 통지하는 것일 수 있다. 상기 제1 주소는 접속을 위해 상기 호스트에 의해 NVMe 제어기에 오픈된 주소이다. 그러나, 상기 제1 주소는 NVMe 컨트롤러에 의해 상기 호스트에 기입되는 페이로드 데이터의 포털 주소로서만 사용되고, 상기 제1 주소가 나타내는 저장 공간은 실제로 페이로드 데이터를 저장하지 않는다. 상기 NVMe 컨트롤러에 의해 송신된 데이터 패킷을 수신한 후에, 상기 호스트는 상기 제1 주소가 나타내는 저장 공간에 상기 페이로드 데이터를 기입하지 않지만, 상기 제1 주소에 대응하는 상기 제2 주소를 상기 호스트에 의해 주소 지정 가능한 저장 공간에 할당하고, 상기 제2 주소가 나타내는 저장 유닛에 상기 페이로드 데이터를 기입한다. 따라서, 상기 제2 주소가 나타내는 상기 저장 유닛에 대한 상기 호스트의 조작이 더 이상 상기 호스트와 상기 NVMe 제어기 사이의 통신 프로토콜에 의해 제한되지 않는다. 본 출원에서, 판독 조작 지연이 단축될 수 있고 또한 상기 호스트에 의해 상기 판독될 데이터에 의해 점유되는 저장 공간이 줄어들 수 있다.
제1 양태에 따르면, 제1 양태의 가능한 제1 구현에서, 상기 제2 주소가 나타내는 상기 저장 유닛에 대한 기록 조작을 완료한 후에, 상기 호스트는 추가적으로, 상기 제2 주소가 나타내는 저장 유닛의 데이터에 대해 조작을 수행하도록 구성될 수 있다. 상기 저장 유닛에 대해 상기 기입 조작을 완료하는 것은, 상기 저장 유닛과 연관된 모든 데이터를 상기 저장 유닛에 기입하는 것, 예를 들어 상기 저장 유닛을 완전히 기입하거나 또는 상기 저장 유닛과 연관된 마지막 페이로드 데이터를 상기 저장 유닛에 기입하는 것일 수 있다. 상기 데이터에 대해 조작을 수행하는 것은, 상기 저장 유닛의 데이터를 다른 바디(body)에 송신하는 것일 수 있다.
상기 제2 주소가 나타내는 저장 공간은 상기 호스트의 사설 메모리(private memory)일 수 있고, PCIe 주소를 이용하여 NVMe 컨트롤러에 의해 더 이상 액세스되지 않으며, 명령 메모리 버퍼(Command memory Buffer, CMB)가 아니거나 또는 CMB로서 사용되지 않는다. 상기 호스트가 상기 제1 주소와 상기 제2 주소 사이의 매핑 관계에 기초하여, 상기 호스트에 의해 주소 지정 가능한 상기 제2 주소가 나타내는 상기 저장 유닛에 상기 페이로드 데이터를 기입한 후에, 상기 호스트와 상기 NVMe 제어기 사이의 통신 프로토콜과 상기 제2 주소 사이의 관계가 깨진다. 상기 제2 주소가 나타내는 상기 저장 유닛에 대해 상기 기입 조작을 완료한 후에, 상기 호스트는 상기 제2 주소가 나타내는 상기 저장 유닛에 대해 상기 조작을 수행하고, 상기 판독 명령이 나타내는 판독 조작이 완전히 완료될 때까지 기다릴 필요없이 판독 데이터에 대해 조작을 수행할 수 있다.
제1 양태의 가능한 제1 구현에 따라, 제1 양태의 가능한 제2 구현에서, 상기 NVMe 제어기는 또한 완료 큐 엔트리(completion queue entry, CQE)를 트리거하도록 구성된다. 여기서, 상기 CQE는 NVMe 제어기가 판독 명령에 의해 지정된 판독 조작을 완료했다는 것을 나타내는 데 사용된다. 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 조작을 수행한 후에, 상기 호스트는 추가적으로, 상기 완료 큐 엔트리(CQE)를 획득하도록 구성된다.
상기 NVMe 컨트롤러가 CQE를 트리거한다는 것은 구체적으로, 판독 조작을 완료한 후에, 상기 NVMe 컨트롤러가 CQE를 CQ에 기입하고 인터럽트 메커니즘을 이용하여 호스트에 통지하는 것일 수 있다. 기존의 프로토콜에 기초하여, 상기 판독 명령을 트리거하기 전에, 상기 호스트는 PCIe 주소 공간을 상기 판독 명령에 할당할 필요가 있다. 상기 PCIe 주소가 나타내는 저장 공간은 상기 판독될 데이터를 저장하는 데 사용된다. 상기 판독 명령을 완료하기 전에, 상기 호스트는 PCIe 주소 공간의 소유권을 잃는다. 즉, 상기 CQE를 획득하기 전에, 상기 호스트는 상기 PCIe 주소가 나타내는 상기 저장 공간에 액세스할 수 없으므로 판독 조작 지연과 저장 공간 낭비가 발생한다. 상기 제2 주소가 상기 데이터 패킷에 실리는 상기 제1 주소가 아니라 상기 호스트에 의해 주소 지정 가능한 내부 주소이므로, 상기 호스트는 상기 CQE를 획득하기 전에 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행할 수 있다.
제1 양태의 전술한 가능한 구현 중 어느 하나에 따라, 제1 양태의 가능한 제3 구현에서, 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 호스트는 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 해제하도록 구성된다.
상기 호스트는 상기 호스트의 내부 저장 공간을 메모리 풀에 구성할 수 있다. 상기 메모리 풀은 복수의 저장 유닛을 포함한다. 저장 유닛의 데이터에 대해 조작을 완료한 후에, 상기 호스트는 다른 판독 조작의 사용을 위해 상기 저장 유닛을 상기 메모리 풀에 해제하고, 전체 판독 조작이 완료될 때까지 기다릴 필요없이 상기 저장 유닛을 해제함으로써, 상기 저장 유닛의 점유 시간을 줄이고 또한 상기 저장 공간의 이용율을 높일 수 있다.
제1 양태 또는 제1 양태의 전술한 가능한 구현 중 어느 하나에 따라, 제1 양태의 가능한 제4 구현에서, 상기 판독 명령을 트리거하기 전에, 상기 호스트는 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 상기 판독 명령에 할당하고, 상기 제1 주소와 상기 제2 주소 사이의 대응관계를 기록하도록 구성된다.
상기 호스트가 기입 명령을 트리거하기 전에 대응하는 저장 유닛을 상기 판독 명령에 할당하면, 저장 공간 오버플로우를 효과적으로 방지할 수 있다. 상기 호스트는 유지된 메모리 풀 내의 유휴 저장 유닛의 개수에 기초하여 상기 판독 명령을 트리거하여 판독 조작을 효과적으로 조정하고 제어할 수 있다.
제1 양태 또는 제1 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제1 양태의 가능한 제5 구현에서, 상기 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 상기 호스트는 적어도 2개의 저장 유닛을 상기 판독 명령에 할당한다.
데이터 패킷에 실릴 수 있는 페이로드 데이터의 크기에 제한으로 인해, 상기 NVMe 컨트롤러는 상기 판독될 데이터를 복수의 조각으로 분할하고 복수의 데이터 패킷을 이용하여 상기 판독될 데이터를 전송할 수 있다. 상기 호스트는 판독 조작의 스케일에 기초하여 복수의 저장 유닛의 대응하는 개수를 할당할 수 있다.
제1 양태 또는 제1 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제1 양태의 가능한 제6 구현에서, 상기 호스트는 상기 제1 주소 및 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여 상기 제2 주소를 결정하도록 구성된다.
상기 호스트는 복수의 저장 유닛을 상기 판독 조작에 할당한다. 다르게 말하면, 상기 제1 주소는 복수의 저장 유닛에 대응한다. 상기 제1 데이터 패킷을 수신한 후에, 상기 호스트는 상기 제1 페이로드 데이터에 대한 구체적인 저장 유닛을 결정할 필요가 있다. 상기 호스트는 상기 판독 조작에 할당된 상기 복수의 저장 유닛에 대한 논리적 주소 지정(logical addressing)을 수행하고, 상기 판독될 데이터를 상기 복수의 저장 유닛에 순차적으로 기입할 수 있다. 상기 호스트는 구체적으로, 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여, 상기 제1 페이로드 데이터가 기록될 필요가 있는 저장 유닛을 결정할 수 있다.
제1 양태 또는 제1 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제1 양태의 가능한 제7 구현에서, 상기 NVMe 컨트롤러는 추가적으로, 제2 데이터 패킷을 상기 호스트에 송신하도록 구성된다. 여기서, 상기 제2 데이터 패킷은 상기 제1 주소와 제2 페이로드 데이터를 싣고 있고, 상기 판독될 데이터는 상기 제2 페이로드 데이터를 포함한다. 상기 호스트는 추가적으로, 상기 제2 데이터 패킷을 수신하고, 상기 제1 데이터 패킷과 상기 제2 데이터 패킷을 수신하는 시퀀스에 기초하여 상기 판독될 데이터 중 상기 제1 페이로드 데이터와 상기 제2 페이로드 데이터의 시퀀스를 결정하도록 구성된다.
각각의 데이터 패킷에 실릴 수 있는 페이로드 데이터의 크기에 대한 제한으로 인해, 상기 NVMe 제어기는 상기 판독될 데이터를 복수의 데이터 패킷으로 분할하여 전송할 필요가 있다. 상기 데이터 패킷을 수신한 후에, 상기 호스트는 상기 데이터 패킷에 포함된 페이로드 데이터를 재배열(re-sequence)할 필요가 있다. 상기 NVMe 제어기가 상기 판독될 데이터 중 상기 페이로드 데이터의 시퀀스로 데이터 패킷을 송신할 때 엄격한 시퀀스 보존이 보장되면, 상기 호스트는 상기 데이터 패킷을 수신하는 시퀀스에 기초하여 페이로드 데이터를 배열할 수 있다.
제1 양태 또는 제1 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제1 양태의 가능한 제8 구현에서, 상기 제1 데이터 패킷은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 상기 오프셋은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용된다.
상기 NVMe 제어기가 데이터 패킷의 순서가 뒤바뀐 전송(out-of-sequence transmission)을 구현할 수 있도록, 데이터 패킷이 상기 판독될 데이터 중 페이로드 데이터의 오프셋을 싣고 있음으로써, 더 많이 대역폭 자원을 활용할 수 있다.
제1 양태 또는 제1 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제1 양태의 가능한 제9 구현에서, 상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소이고, 상기 제1 데이터 패킷은 PCIe 패킷이며, 상기 제2 주소가 나타내는 상기 저장 유닛은 상기 호스트의 메모리 공간이다.
제2 양태에 따르면, 본 출원은 NVMe 기반의 데이터 판독 방법을 개시한다. 상기 NVMe 기반의 데이터 판독 방법은, 호스트가 판독 명령을 트리거하는 단계 - 상기 판독 명령은 지시 정보를 싣고 있고, 상기 지시 정보는 제1 주소를 나타내는 데 사용되며, 상기 제1 주소는 NVMe 제어기에 의해 주소 지정 가능한 주소임 -; 상기 호스트가 상기 NVMe 제어기에 의해 송신된 제1 데이터 패킷을 수신하는 단계 - 상기 제1 데이터 패킷은 상기 제1 주소와 제1 페이로드 데이터를 싣고 있음 -; 상기 호스트가 상기 제1 주소에 기초하여 제2 주소를 결정하는 단계 - 상기 제2 주소는 상기 호스트에 의해 주소 지정 가능한 주소임 -; 및 상기 호스트가 상기 제2 주소가 나타내는 저장 유닛에 상기 제1 페이로드 데이터를 기입하는 단계를 포함한다.
제2 양태에 따라, 제2 양태의 가능한 제1 구현에서, 상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛에 대해 기입 조작을 완료한 후에, 상기 NVMe 기반의 데이터 판독 방법이, 상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 조작을 수행하는 단계를 더 포함한다.
제2 양태의 가능한 제1 구현에 따라, 제2 양태의 가능한 제2 구현에서, 상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 NVMe 기반의 데이터 판독 방법이, 상기 호스트가 상기 NVMe 제어기에 의해 트리거된 완료 큐 엔트리(CQE)를 획득하는 단계 - 상기 CQE는 상기 NVMe 제어기가 상기 판독 명령에 의해 지정된 판독 조작을 완료했다는 것을 나타내는 데 사용됨 -를 더 포함한다.
제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제3 구현에서, 상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 NVMe 기반의 데이터 판독 방법이, 상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛을 해제하는 단계를 더 포함한다.
제2 양태 또는 제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제4 구현에서, 상기 호스트가 판독 명령을 트리거하는 단계 이전에, 상기 NVMe 기반의 데이터 판독 방법이, 상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛을 상기 판독 명령에 할당하고, 상기 제1 주소와 상기 제2 주소 사이의 대응관계를 기록하는 단계를 더 포함한다.
제2 양태 또는 제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제5 구현에서, 상기 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 상기 호스트는 적어도 2개의 저장 유닛을 상기 판독 명령에 할당한다.
제2 양태 또는 제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제6 구현에서, 상기 호스트는 상기 제1 주소 및 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여 상기 제2 주소를 결정한다.
제2 양태 또는 제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제7 구현에서, 상기 NVMe 기반의 데이터 판독 방법이, 상기 호스트가 상기 NVMe 제어기에 의해 송신된 제2 데이터 패킷을 수신하는 단계 - 상기 제2 데이터 패킷은 상기 제1 주소와 제2 페이로드 데이터를 싣고 있음 -; 및 상기 호스트가, 상기 제1 데이터 패킷과 상기 제2 데이터 패킷을 수신하는 시퀀스에 기초하여 상기 판독될 데이터 중 상기 제1 페이로드 데이터와 상기 제2 페이로드 데이터의 시퀀스를 결정하는 단계를 더 포함한다.
제2 양태 또는 제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제8 구현에서, 상기 제1 데이터 패킷은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 상기 오프셋은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용된다.
제2 양태 또는 제2 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제2 양태의 가능한 제9 구현에서, 상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소이고, 상기 제1 데이터 패킷은 PCIe 패킷이며, 상기 제2 주소가 나타내는 상기 저장 유닛은 상기 호스트의 메모리 공간이다.
제2 양태는 제1 양태에 대응하는 방법 구현이고, 제1 양태 또는 제1 양태의 가능한 구현 중 어느 하나의 구현에서의 설명이 그에 따라 제2 양태 또는 제2 양태의 가능한 구현에 적용 가능하다. 여기서는 세부사항에 대해 다시 설명하지 않는다.
제3 양태에 따르면, 본 출원은 실행가능 명령을 포함하는 판독가능 매체를 제공한다. 컴퓨팅 장치의 프로세서가 상기 실행가능 명령을 실행할 때, 상기 컴퓨팅 장치는 제2 양태 또는 제2 양태의 가능한 구현 중 어느 하나에 따른 NVMe 기반의 데이터 판독 방법을 수행한다.
제4 양태에 따르면, 본 출원은 프로세서, 메모리, 및 버스를 포함하는 컴퓨팅 장치를 제공한다. 상기 메모리는 실행가능 명령을 저장하도록 구성되고, 상기 프로세서는 상기 버스를 통해 상기 메모리에 연결된다. 컴퓨팅 장치가 작동될 때, 상기 프로세서는 상기 메모리에 저장된 상기 실행가능 명령을 실행하고, 상기 컴퓨팅 장치로 하여금 제2 양태 또는 제2 양태의 가능한 구현 중 어느 하나에 따른 NVMe 기반의 데이터 판독 방법을 수행할 수 있게 한다.
제5 양태에 따르면, 본 출원은 NVMe 기반의 데이터 판독 장치를 개시한다. 상기 NVMe 기반의 데이터 판독 장치는, 판독 명령을 트리거하도록 구성된 처리 유닛 - 상기 판독 명령은 지시 정보를 싣고 있고, 상기 지시 정보는 제1 주소를 나타내는 데 사용되며, 상기 제1 주소는 NVMe 제어기에 의해 주소 지정 가능한 주소임 -; 및 상기 NVMe 제어기에 의해 송신된 제1 데이터 패킷을 수신하도록 구성된 수신 유닛 - 상기 제1 데이터 패킷은 상기 제1 주소와 제1 페이로드 데이터를 싣고 있음 -을 포함한다. 상기 처리 유닛은 추가적으로, 상기 제1 주소에 기초하여 제2 주소를 결정하고, 상기 제2 주소가 나타내는 저장 유닛에 제1 페이로드 데이터를 기입하도록 구성된다. 여기서, 상기 제2 주소는 상기 처리 유닛에 의해 주소 지정 가능한 주소이다.
제5 양태에 따라, 제5 양태의 가능한 제1 구현에서, 상기 제2 주소가 나타내는 상기 저장 유닛에 대해 기입 조작을 완료한 후에, 상기 처리 유닛은 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 조작을 수행하도록 구성된다.
제5 양태의 가능한 제1 구현에 따라, 제5 양태의 가능한 제2 구현에서, 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 처리 유닛은 추가적으로, 상기 NVMe 제어기에 의해 트리거된 완료 큐 엔트리(CQE)를 획득하도록 구성된다. 여기서, 상기 CQE는 상기 NVMe 제어기가 상기 판독 명령에 의해 지정된 판독 조작을 완료했다는 것을 나타내는 데 사용된다.
제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제5 양태의 가능한 제3 구현에서, 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 처리 유닛은 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 해제하도록 구성된다.
제5 양태 또는 제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제5 양태의 가능한 제4 구현에서, 상기 판독 명령을 트리거하기 전에, 상기 처리 유닛은 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 상기 판독 명령에 할당하고, 상기 제1 주소와 상기 제2 주소 사이의 대응관계를 기록하도록 구성된다.
제5 양태 또는 제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제5 양태의 가능한 제5 구현에서, 상기 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 상기 처리 유닛은 적어도 2개의 저장 유닛을 상기 판독 명령에 할당한다.
제5 양태 또는 제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제5 양태의 가능한 제6 실시예에서, 상기 처리 유닛은 상기 제1 주소 및 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여 상기 제2 주소를 결정하도록 구성된다.
제5 양태 또는 제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제5 양태의 가능한 제7 구현에서, 상기 수신 유닛은 추가적으로, 상기 NVMe 제어기에 의해 송신된 제2 데이터 패킷을 수신하도록 구성되고 - 여기서, 상기 제2 데이터 패킷은 상기 제1 주소와 제2 페이로드 데이터를 싣고 있음 -; 상기 처리 유닛은 추가적으로, 상기 제1 데이터 패킷과 상기 제2 데이터 패킷을 수신하는 시퀀스에 기초하여 상기 판독될 데이터 중 상기 제1 페이로드 데이터와 상기 제2 페이로드 데이터의 시퀀스를 결정하도록 구성된다.
제5 양태 또는 제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 제5 양태의 가능한 제8 구현에서, 상기 제1 데이터 패킷은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 상기 오프셋은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용된다.
제5 양태 또는 제5 양태의 가능한 이전의 구현 중 어느 하나에 따라, 상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소이고, 상기 제1 데이터 패킷은 PCIe 패킷이며, 상기 제2 주소가 나타내는 상기 저장 유닛은 상기 장치의 메모리 공간이다.
제5 양태는 제1 양태에 대응하는 장치 구현이고, 제1 양태 또는 제1 양태의 가능한 구현 중 어느 하나의 구현에서의 설명은 그에 따라 제5 양태 또는 제5 양태의 가능한 구현 중 어느 하나에 적용 가능하다. 여기서는 세부사항에 대해 다시 설명하지 않는다.
본 출원에 개시된 기술적 해결책에 따르면, 상기 NVMe 컨트롤러가 상기 제1 주소를 이용하여 상기 판독될 데이터를 상기 호스트에 기입할 수 있도록, 상기 호스트가 데이터 포털 주소로서 상기 제1 주소를 상기 NVMe 컨트롤러에 오픈한다. 상기 NVMe 컨트롤러에 의해 송신된 데이터 패킷에 실리는 목적지 주소가 상기 제1 주소이다. 상기 데이터 패킷을 수신한 후에, 상기 호스트는 상기 제1 주소가 나타내는 저장 공간에 상기 데이터 패킷 내의 페이로드 데이터를 실제로 기입하지 않ㅈ지만, 상기 제1 주소를 상기 제2 주소에 매핑하고, 상기 제2 주소가 나타내는 저장 공간에 상기 데이터 패킷 내의 페이로드 데이터를 기입한다. 상기 페이로드 데이터를 저장하기 위한 상기 저장 공간과 통신 프로토콜 사이의 관계가 깨지고 또한 상기 호스트가 통신 프로토콜에 의해 제한되지 않고 상기 제2 주소에 액세스할 수 있도록, 상기 제2 주소가 나타내는 상기 저장 공간은 상기 호스트의 사설 메모리 공간일 수 있다. 상기 판독 명령이 완료되기 전에, 상기 호스트는 상기 제2 주소가 나타내는 상기 저장 공간에 저장되는 데이터를 사용하고, 다른 판독 동작의 사용을 위해 상기 제2 주소가 나타내는 상기 저장 공간을 조기에 해제할 수 있다. 본 출원에 개시된 기술적 해결책에 따르면, 판독 조작 지연이 단축될 수 있고 또는 판독될 데이터를 저장하는 데 사용되는 저장 공간이 줄어들 수 있다.
도 1은 본 출원의 일 실시예에 따른 NVMe 시스템의 논리적 구조를 개략적으로 나타낸 도면이다.
도 2는 NVMe 표준 기반의 데이터 판독 방법의 시그널링도이다.
도 3은 본 출원의 일 실시예에 따른 호스트의 하드웨어 구조를 개략적으로 나타낸 도면이다.
도 4는 본 출원의 일 실시예에 따른 NVMe 기반의 데이터 판독 방법을 개략적으로 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 포털의 조직 구조를 개략적으로 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 포털의 조직 구조를 개략적으로 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 PCIe 주소 구조를 개략적으로 나타낸 도면이다.
도 8a와 도 8b는 본 발명의 일 실시예에 따른 주소 매핑 관계를 개략적으로 나타낸 도면이다.
도 9a와 도 9b는 본 발명의 일 실시예에 따른 데이터 패킷 전송을 개략적으로 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 NVMe 기반의 데이터 판독 방법의 시그널링도이다.
도 11a는 본 출원의 일 실시예에 따른 NVMe 시스템의 논리적 구조를 개략적으로 나타낸 도면이다.
도 11b는 본 출원의 일 실시예에 따른 NVMe 시스템의 논리적 구조를 개략적으로 나타낸 도면이다.
도 12는 본 출원의 일 실시예에 따른 컴퓨팅 장치의 논리적 구조를 개략적으로 나타낸 도면이다.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 설명한다.
본 발명의 실시예에서, "제1" 및 "제2"와 같은 용어는 제1 주소 및 제2 주소와 같은 대상을 구별하는 데 사용되지만, "제1"과 "제2" 사이에는 논리적 또는 시간 순차적 의존성이 없다.
본 발명의 실시예에서, "데이터 패킷"은 NVMe 제어기에 의해 호스트에 송신되고 페이로드 데이터를 싣고 있는 데이터 패킷이다. 본 명세서에서의 페이로드 데이터는 사용자 데이터 또는 사용자 데이터의 메타데이터(metadata)일 수 있고, 본 발명의 실시예에서는 페이로드 데이터의 유형을 제한하지 않는다. 이하의 설명에서, 달리 언급되지 않는 한, 본 발명의 실시예에서, "데이터"라는 단어 또는 "페이로드 데이터"라는 문구는 데이터 패킷에 실리는 다양한 유형의 데이터를 나타내는 데 사용된다. 본 발명의 실시예에서, 데이터 패킷은 PCIe 패킷일 수 있다.
본 발명의 실시예에서, 포털은 호스트에 의해 NVMe 제어기에 오픈된 주소 공간이고, 포털 주소는 구체적으로 PCIe 주소일 수 있으며, 데이터 패킷은 PCIe 기입 패킷(PCIe write packet)일 수 있다. NVMe 제어기는 포털을 통해 데이터 패킷을 호스트에 송신한다. 여기서, 데이터 패킷은 포털 주소를 싣고 있다. 데이터 패킷을 수신한 후에, 호스트는 포털 주소를 식별하고, 로컬 내부 메모리에서 대응하는 저장 공간을 포털에 할당하며, 포털 주소가 나타내는 저장 공간에 페이로드 데이터를 기입하는 대신 데이터 패킷에 실리는 페이로드 데이터를 캐싱을 위해 할당된 저장 공간에 기입한다. 내부 메모리는 구체적으로 호스트의 사설 메모리 공간(private memory space)일 수 있다.
본 발명의 실시예에서, 판독 조작은, 호스트가 NVMe 제어기로부터 데이터를 판독하는, NVMe 명령 세트 내의 임의의 조작일 수 있다. 판독 조작을 지시하는 명령은 판독 명령이다. 판독 명령의 구체적인 구현이 서브미션 큐 엔트리(submission queue entry)일 수 있다.
본 발명의 실시예에서, 명령 이니시에이터(command initiator)와 데이터 이니시에이터는 동일한 바디(body)이거나 또는 별도의 바디일 수 있다. 명령 이니시에이터는 NVMe 제어기에 명령을 직접 트리거하는 시스템 바디이고, 본 발명의 실시예에서 명령 소스라고도 한다. 데이터 이니시에이터는 데이터를 판독하고 데이터를 소비할 필요가 있는 시스템 바디, 즉 데이터 액세스 요청을 개시하는 데 사용되는 시스템 바디이고, 본 발명의 실시예에서 데이터 소스라고도 한다. 명령 소스와 데이터 소스가 분리된 시나리오에서, 데이터 소스는 명령 소스를 이용하여 데이터를 판독할 필요가 있다. 본 발명의 실시예에서, "호스트"라는 단어는, 데이터 소스와 명령 소스가 분리된 시나리오에서 명령 소스를 지칭할 수 있거나, 또는 데이터 소스와 명령 소스가 분리되지 않은 시나리오에서 NVMe 제어기와 통신하는 컴퓨팅 장치를 지칭할 수 있다.
종래의 방식에서, 호스트가 NVMe 판독 조작을 수행할 때, 판독될 데이터를 저장하는 데 사용되는 저장 공간의 주소 정보가 DPTR 또는 MPTR을 이용하여 트리거된 SQE에 실리고, NVMe 제어기는 SQE에 기초하여, 판독될 데이터를 주소 정보가 나타내는 저장 공간에 기입한다. 호스트가 SQE를 제출할 때부터 호스트가 판독 조작이 완료된 것을 나타내기 위해 NVMe 제어기에 의해 사용되는 완료 큐 엔트리를 획득할 때까지의 시구간에서, 호스트는 판독될 데이터를 저장하는 데 사용되는 저장 공간의 소유권을 잃는다. 다시 말해, 호스트는 판독 조작이 완전히 완료될 때까지 기다릴 필요가 있으며, 그런 다음 저장 공간에 저장된 데이터에 액세스할 수 있다.
도 1은 본 발명의 일 실시예에 따른 NVMe 시스템(100)의 구조도이다. 도 1에 도시된 바와 같이, NVMe 시스템(100)의 데이터 소스(101)와 명령 소스(103)가 동일한 바디가 아니며 분리되어 네트워크(102)를 통해 상호 연결된다. 명령 소스(103)는 PCIe 버스를 통해 NVMe 제어기(105)에 연결될 수 있고, NVMe 제어기(105)는 저장 매체(106)에 연결된다.
본 발명의 본 실시예에서, 저장 매체(106)를 일반적으로 외부 메모리라고도 하고, 일반적으로 비휘발성 저장 매체이며, 데이터를 영구적으로 저장하도록 구성될 수 있다. 저장 매체(106)는 자기 매체(예를 들어, 플로피 디스크, 또는 하드 디스크, 또는 자기 테이프), 광학 매체(예를 들어, 콤팩트 디스크), 또는 반도체 매체(예를 들어, 플래시(Flash) 메모리) 등일 수 있다. 본 발명의 본 실시예에서는 저장 매체(106)의 구체적인 구현 형태를 제한하지 않는다. 일부 실시예에서, 저장 매체(106)는 NVMe 제어기(105)로부터 분리된 원격 메모리, 예를 들어 네트워크를 통해 NVMe 제어기(105)에 연결된 네트워크 저장 매체를 더 포함할 수 있다.
본 발명의 본 실시예에서, 네트워크(102)는 데이터 소스(101)와 명령 소스(103) 사이의 임의의 상호연결 방식이나 상호연결 프로토콜 등을 나타내는 데 사용될 수 있고, 예를 들어 PCIe 버스, 컴퓨터 장치의 내부 상호연결 버스, 인터넷, 인트라넷(intranet), 근거리 통신망(local area network, LAN), 광역 네트워크(wide area network, WAN) 또는 스토리지 전용 네트워크(storage area network, SAN), 또는 전술한 네트워크의 임의의 조합일 수 있다.
NVMe 시스템(100)에서, 데이터 소스(101)는 명령 소스(103)를 이용하여 NVMe 제어기(105)와 통신할 필요가 있다. 종래의 방식에서, 명령 소스(103)에 의해 트리거된 판독 명령은 판독될 데이터를 저장하는 데 사용되는 저장 공간의 주소 정보를 싣고 있을 필요가 있다. 판독 조작이 수행될 때, 판독될 데이터는 NVMe 제어기(105)에 의해 제어되는 저장 매체(106)로부터 명령 소스(103)로 먼저 완전히 전달될 필요가 있다. 판독 조작이 완료된 것을 나타내는 CQE를 획득한 후에, 명령 소스(103)는 데이터 소스(101)에 데이터를 송신할 수 있다.
구체적으로, 도 2에 도시된 바와 같이, 종래의 방식에 기초하여, 데이터 소스가 저장 매체로부터 데이터를 판독할 필요가 있을 때, 데이터 소스는 판독 요청을 명령 소스에 먼저 송신한다. 명령 소스는 데이터 소스로부터 수신된 판독 요청에 기초하여 SQE를 제출 큐(submission queue, SQ)에 기입하고, SQE의 DPTR 필드 또는 MPTR 필드를 이용하여, 판독될 데이터를 수신하는 데 사용되는 주소 정보를 싣고 있다. 그런 다음, 명령 소스는 도어벨 메커니즘(doorbell mechanism)을 이용하여, 새로운 SQE가 있다는 것을 NVMe 제어기에 통지한다. 도어벨을 수신한 후에, NVMe 제어기는 SQ로부터 SQE를 판독하고, SQE에 실려 있는 주소 정보에 기초하여 PCIe 기입 명령을 이용하여, 판독될 데이터를 주소 정보가 나타내는 저장 공간에 완전히 기입한다. 판독 조작이 완료된 후에, NVMe 제어기는 CQE를 완료 큐(completion queue, CQ)에 기입하고, 인터럽트 메커니즘을 이용하여 명령 소스에 통지한다. 명령 소스는 인터럽트 신호를 처리하여 CQE를 획득하고, 판독될 데이터를 데이터 소스에 송신한다.
도 2로부터 알 수 있는 것은, 판독 명령을 개시하기 전에, 명령 소스가 판독 될 데이터를 수신하는 데 사용되는 저장 공간을 예약할 필요가 있고, CQE를 획득하기 전에 저장 공간의 이 부분의 소유권을 잃는다는 것이다. 다시 말해, 명령 소스는 판독될 데이터가 저장 공간에 완전히 기입될 때까지 기다릴 필요가 있고, 그런 다음 데이터를 데이터 소스에 송신할 수 있다. 이 과정의 지연이 판독될 데이터의 크기에 정비례한다. 또한, 명령 소스는 판독될 데이터를 저장하기 위해 NVMe 제어기에 의해 주소 지정 가능한 많은 양의 메모리 공간이 필요하고, 명령 소스가 판독될 데이터에 메모리를 할당할 때부터 명령 소스가 NVMe 제어기에 의해 해제된 메모리를 획득할 때까지의 시구간에서 메모리 공간의 이 부분이 항상 점유된다.
도 3은 본 출원의 일 실시예에 따른 호스트(300)의 개략적인 구조도이다.
도 3에 도시된 바와 같이, 호스트(300)는 프로세서(301)를 포함한다. 프로세서(301)는 시스템 메모리(302)에 연결된다. 프로세서(301)는 중앙처리장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU), 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array, FPGA), 주문형 반도체(Application-Specific Integrated Circuit, ASIC), 또는 디지털 신호 프로세서(digital signal processor, DSP)와 같은 컴퓨팅 로직, 또는 전술한 컴퓨팅 로직의 조합일 수 있다. 프로세서(301)는 싱글코어 프로세서 또는 멀티코어 프로세서일 수 있다.
본 발명의 본 실시예에서, 프로세서(301)는 레지스터를 더 포함할 수 있다. 레지스터의 주소 정보는 PCIe 주소로서 NVMe 제어기에 오픈될 수 있다.
본 출원의 일 실시예에서, 프로세서(301)는 판독 조작 로직(310)을 더 포함할 수 있고, 판독 조작 로직(310)은 프로세서(301)에 통합된 특정 하드웨어 회로 또는 펌웨어 모듈일 수 있다. 판독 조작 로직(310)이 특정 하드웨어 회로이면, 판독 조작 로직(310)은 본 출원의 실시예의 NVMe 기반의 데이터 판독 방법을 수행한다. 판독 조작 로직(310)이 펌웨어 모듈이면, 프로세서(301)는 판독 조작 로직(310)에서 펌웨어 코드를 실행하여 본 출원의 실시예의 기술적 해결책을 구현한다. 판독 조작 로직(310)은, (1) 판독 명령을 트리거하도록 구성된 로직(회로/펌웨어 코드) - 판독 명령은 지시 정보를 싣고 있고, 지시 정보는 NVMe 제어기에 의해 주소 지정 가능(addressable)한 제1 주소를 나타내는 데 사용됨 -; (2) NVMe 제어기에 의해 송신된 데이터 패킷을 수신하도록 구성된 로직(회로/펌웨어 코드) - 데이터 패킷은 제1 주소와 페이로드 데이터를 싣고 있음 -; (3) 제1 주소에 기초하여, 호스트(300)에 의해 주소 지정 가능한 제2 주소를 결정하도록 구성된 로직(회로/펌웨어 코드); 및 (4) 제2 주소가 나타내는 저장 유닛에 페이로드 데이터를 기입하도록 구성된 로직(회로/펌웨어 코드)을 포함한다.
버스(309)는 호스트(300)의 구성 요소들 사이에서 정보를 전송하도록 구성되고, 유선 연결 방식 또는 무선 연결 방식을 사용할 수 있다. 본 출원에서는 이에 대해 제한하지 않는다. 버스(309)는 추가적으로 입력/출력 인터페이스(305)와 통신 인터페이스(303)에 연결된다.
입력/출력 인터페이스(305)는 입력/출력 장치에 연결되고, 입력 정보를 수신하고 조작 결과를 출력하도록 구성된다. 입력/출력 장치는 마우스, 키보드, 디스플레이, 또는 CD-ROM 드라이브 등일 수 있다.
통신 인터페이스(303)는 다른 장치 또는 네트워크와 통신을 구현하도록 구성되고, 다른 장치 또는 네트워크에 유선 또는 무선으로 연결될 수 있다. 예를 들어, 호스트(300)는 통신 인터페이스(303)를 통해 NVMe 제어기에 연결될 수 있다. 호스트(300)는 통신 인터페이스(303)를 통해 네트워크에 추가로 연결될 수 있고, 네트워크를 통해 NVMe 제어기에 연결될 수 있다.
본 출원의 실시예의 일부 특징은 시스템 메모리(302) 내의 소프트웨어 코드를 실행함으로써 프로세서(301)에 의해 구현/지원될 수 있다. 시스템 메모리(302)는 일부 소프트웨어, 예를 들어 운영체제(308)(예를 들어, Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, mac OS, 또는 내장된 운영체제(예를 들어, Vxworks)), 애플리케이션 프로그램(307), 및 판독 조작 모듈(306)을 포함할 수 있다.
본 출원의 일 실시예에서, 프로세서(301)는 판독 조작 모듈(306)을 실행하여 본 출원의 실시예에서의 기술적 해결책을 구현한다. 판독 조작 모듈(306)은, (1) 판독 명령을 트리거하는 데 사용되는 코드 - 판독 명령은 지시 정보를 싣고 있고, 지시 정보는 NVMe 제어기에 의해 주소 지정 가능한 제1 주소를 나타내는 데 사용됨 -; (2) NVMe 제어기에 의해 송신된 데이터 패킷을 수신하는 데 사용되는 코드 - 데이터 패킷은 제1 주소와 페이로드 데이터를 싣고 있음; (3) 제1 주소에 기초하여, 호스트(300)에 의해 주소 지정 가능한 제2 주소를 결정하는 데 사용되는 코드; 및 (4) 제2 주소가 나타내는 저장 유닛에 페이로드 데이터를 기입하는 데 사용되는 코드를 포함한다.
또한, 도 3은 단지 호스트(300)의 예를 도시한다. 호스트(300)는 도 1에 도시된 것보다 많거나 적은 수의 구성 요소를 포함할 수 있거나, 또는 다른 구성 요소 구성 방식을 가지고 있을 있다. 또한, 도 3에 도시된 다양한 구성 요소는 하드웨어, 또는 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수 있다.
판독 명령 지연을 단축하고 또한 판독 조작에 의해 점유되는 메모리 공간을 줄이기 위해, 본 발명의 실시예는 NVMe 기반의 데이터 판독 방법을 제공한다. 도 4에 도시된 바와 같이, NVMe 기반의 데이터 판독 방법(400)은 다음의 단계를 포함한다.
단계 401: 호스트가 판독 명령을 트리거한다. 여기서, 판독 명령은 지시 정보를 싣고 있고, 지시 정보는 NVMe 제어기에 의해 주소 지정 가능한 제1 주소를 나타내는 데 사용된다.
본 발명의 본 실시예에서, 판독 명령은 구체적으로 SQE일 수 있다. 이하의 설명에서, 설명을 위해 SQE가 판독 명령의 예로서 사용된다. 하지만, 본 발명의 본 실시예에서 제1 판독 명령의 구체적인 구현 형태를 제한하지 않는다는 것을 이해해야 한다.
호스트가 NVMe 제어기에 판독 명령을 트리거하는 과정에 대해서는, NVMe 표준을 참조하라. 구체적으로, 호스트가 SQE를 SQ에 기입하고, 도어벨 메커니즘을 이용하여 새로운 SQE가 있다는 것을 NVMe 제어기에 통지한다. NVMe 제어기는 도어벨 메커니즘에 기초하여 SQ로부터 SQE를 획득한다. 본 발명의 본 실시예에서, 호스트는 SQE를 NVMe 제어기에 직접 푸시할 수 있다. 본 발명의 본 실시예에서는 호스트가 NVMe 제어기에 대한 판독 명령을 트리거링하는 구체적인 과정을 제한하지 않는다.
본 발명의 본 실시예에서, 호스트는 호스트의 저장 공간의 일부를 NVMe 제어기에 오픈할 수 있다. 더 구체적으로, 호스트는 호스트의 저장 공간의 일부를 PCIe 저장 공간으로서 NVMe 제어기에 오픈할 수 있고, NVMe 제어기는 PCIe 주소에 기초하여 저장 공간의 일부에 액세스할 수 있다. 베이스 주소 레지스터(Base Address Register, BAR)가 설명을 위한 예로서 사용된다. 호스트는 NVMe 제어기에 BAR를 PCIe 저장 공간으로서 개방하고, BAR의 PCIe 주소의 일부를 복수의 포털(portal)에 구성한다. 각각의 포털은 NVMe 제어기에 의해 주소 지정 가능한 특정 PCIe 주소 공간을 점유하고, 포털 주소가 포털의 초기 PCIe 주소일 수 있다. 호스트에 의해 트리거된 판독 명령에 실리는 지시 정보는 특정 포털을 나타내는 데 사용될 수 있고, 제1 주소는 포털 주소 또는 포털 주소의 일부 필드일 수 있다. 이 포털은 NVMe 제어기가 호스트에 대해 PCIe 기입 조작을 수행하는 데 사용되는 데이터 포털이다. 이하의 설명에서, 포털의 기능이 더 상세하게 설명된다. 각각의 포털이 특정 판독 조작에 고유하게 대응하면, 본 발명에서는 PCIe 주소 공간에서 포털을 구성하는 방식을 제한하지 않는다.
본 발명의 본 실시예에서, 호스트는 호스트의 베이스 주소 레지스터의 PCIe 주소의 일부를 애퍼처(aperture)에 구성할 수 있고, 각각의 애퍼처는 복수의 포털(portal)을 포함한다. 구체적으로, 포털은 어레이의 형태로 구성될 수 있고, 포털은 어레이 베이스 주소에 포털 오프셋을 더한 것에 기초하여 주소 지정된다. 어레이를 애퍼처라고 한다. 도 5는 베이스 주소 레지스터의 개략적인 구조도이다. 각각의 애퍼처는 포털의 그룹(P0 ~ PN)을 포함하며, 각각의 포털은 특정 판독 조작과 고유하게 연관되어 있다. "고유한"이란 호스트가 언제든지 하나의 특정 포털과 연관되도록 단 하나의 NVMe 판독 조작만을 개시할 수 있음을 의미한다.
더 구체적으로, 도 6에 도시된 바와 같이, 본 발명의 본 실시예에서, 애퍼처는 메타데이터 애퍼처와 데이터 애퍼처로 분류될 수 있다. NVMe 제어기는 데이터 애퍼처에 포함된 포털 DP 0 내지 포털 DP N을 통해 PCIe 기입 작업을 수행하여 데이터를 호스트에 기입하고, 메타데이터 애퍼처에 포함된 포털 MP 0 내지 포털 MP N을 통해 메타데이터를 호스트에 기입한다. 설명의 편의를 위해, 이하의 설명에서, 달리 언급되지 않으면, 본 발명의 실시예에서는 메타데이터와 데이터를 총칭하여 데이터라고 한다.
도 7은 본 발명의 일 실시예에 따른 PCIe 데이터 패킷에서 PCIe 주소 구조를 도시하고 있다. 도 7에 도시된 바와 같이, PCIe 주소 구조는 BAR 베이스 주소, 애퍼처 오프셋, 및 포털 오프셋을 포함한다. BAR와 애퍼처 오프셋은 애퍼처를 고유하게 결정하는 데 사용되고, 포털 오프셋은 애퍼처 내의 특정 포털을 나타내는 데 사용된다.
본 발명의 본 실시예에서, 포털은 PCIe 주소 공간에 더 랜덤하게 분포될 수 있고, PCIe 공간에 랜덤하게 분포된 포털을 임의의 "데이터 포털"과 "메타데이터 포털"이라 한다.
본 발명의 본 실시예에서, 지시 정보는 특정 포털을 나타내는 데 사용되며, NVMe 제어기는 지시 정보에 기초하여 포털을 고유하게 결정할 수 있다. 본 발명에서는 지시 정보의 구체적인 형태를 제한하지 않는다.
본 발명의 본 실시예에서, 지시 정보는 명시적 주소일 수 있고, 지시 정보는 포털의 특정 PCIe 주소 또는 포털 주소의 일부 필드일 수 있으며; 구체적으로, 지시 정보는 제1 주소 또는 제1 주소의 일부 필드일 수 있다. 예를 들어, 포털이 어레이에 구성되면, 지시 정보는 포털의 포털 오프셋일 수 있고, BAR 베이스 주소와 애퍼처 오프셋은 NVMe 제어기가 획득할 호스트의 구성 정보로서 사용될 수 있다. NVMe 제어기는 지시 정보에 기초하여 포털의 전체 PCIe 주소를 결정할 수 있다. 이 경우, SQE의 포맷이 NVMe 표준에 지정된 포맷과 일치할 수 있다.
본 발명의 본 실시예에서, 지시 정보는 대안적으로 암묵적 주소일 수 있다. 예를 들어, SQ 내의 각각의 SQE가 고유한 명령 식별자(command identifier, CID)를 가지고 있으면, 지시 정보는 "큐 ID+CID"를 포함할 수 있다. NVMe 제어기에 의해 처리되는 각각의 SQE의 CID가 고유하면, 지시 정보는 대응하는 SQE에 실리는 CID일 수 있다. 다른 구현에서, 지시 정보는 대안적으로 CID의 일부일 수 있다. 본 발명의 본 실시예에서, 지시 정보는 대안적으로 특별히 정의된 MPTR, 또는 PRT, 또는 SQE 내의 다른 필드를 이용하여 지정될 수 있다. 본 발명의 본 실시예에서는 지시 정보의 구체적인 구현을 제한하지 않는다. NVMe 제어기는 지시 정보와 포털 주소 사이의 매핑 관계를 유지하고, 매핑 관계와 지시 정보에 기초하여 포털 주소를 고유하게 결정할 수 있다. 예를 들어, 지시 식별자는 SQE의 CID이고, 시스템 CID의 코딩 방식이 포털 오프셋의 주소 지정 방식과 동일하다. CID는 포털 오프셋과 일대일 대응관계에 있다. BAR 베이스 주소와 애퍼처 오프셋은 NVMe 제어기가 획득할 호스트의 구성 정보로서 사용될 수 있고, NVMe 제어기는 지시 정보와 포털 사이의 매핑 관계에 기초하여 데이터 패킷의 제1 주소를 결정할 수 있다.
NVMe 제어기가 지시 정보에 기초하여 제1 주소를 결정할 수 있으면, 본 발명의 본 실시예에서는 지시 정보의 구체적인 구현을 제한하지 않는다. 제1 주소는 판독 조작에 대응하는 포털을 나타내는 데 사용되고, 구체적으로 포털 주소 또는 포털 주소의 일부 필드이다.
단계 402: 호스트가 NVMe 제어기에 의해 송신된 제1 데이터 패킷을 수신한다. 여기서, 제1 데이터 패킷은 제1 주소와 제1 페이로드 데이터를 싣고 있다.
본 발명의 본 실시예에서, 데이터 패킷은 PCIe 기입 조작 패킷일 수 있다. 더 구체적으로, 데이터 패킷은 트랜잭션 계층 패킷(transaction layer packet, TLP)일 수 있고, 페이로드 데이터는 TLP에 실리는 페이로드(payload)일 수 있으며, 제1 주소는 TLP 내의 PCIe 주소 또는 TLP 내의 PCIe 주소의 일부일 수 있다.
NVMe 제어기는 지시 정보와 제1 주소 간의 매핑 관계를 유지한다. 제1 주소는 구체적으로 판독 조작에 대응하는 포털 주소일 수 있다. 판독 명령을 획득한 후에, NVMe 제어기는 지시 정보의 구체적인 구현에 기초하여 제1 주소를 결정하고, 판독 명령에 기초하여 저장 매체로부터 데이터를 판독하며, 제1 주소와 판독 데이터에 기초하여 TLP를 캡슐화하고 TLP를 호스트에 송신한다.
단계 403: 호스트가 제1 주소에 기초하여, 제2 호스트에 의해 주소 지정 가능한 주소를 결정한다.
제1 주소는 PCIe 기입 조작의 포털을 나타내는 데 사용된다. NVMe 제어기는 포털을 통해 판독 조작의 데이터를 호스트에 기입한다. "포털"은 호스트의 PCIe 주소 공간 범위를 나타낸다. NVMe 제어기에 의해 송신된 데이터 패킷을 포털로부터 수신한 후에, 호스트는 데이터 패킷을 파싱하여 제1 주소를 획득한다. 하지만, 호스트는 페이로드 데이터를 저장하기 위해 제1 주소가 나타내는 저장 공간을 사용하지 않고, 제1 주소와 사전 설정된 대응관계에 기초하여 호스트의 내부 메모리에서, 페이로드 데이터를 실제로 저장하는 데 사용되는 저장 유닛의 제2 주소를 결정한다.
제2 주소가 나타내는 저장 유닛은 호스트의 내부 메모리 공간일 수 있고, PCIe 주소를 이용하여 제공되지 않는다. 다시 말해, 페이로드 데이터를 저장하기 위해 호스트에 의해 사용되는 내부 메모리는 더 이상 PCIe 주소 지정 방식으로 호스트에 의해 액세스되지 않을 수 있고, 명령 메모리 버퍼(Command memory Buffer, CMB)가 아니거나 또는 명령 메모리 버퍼(CMB)로 사용되지 않는다. 제2 주소가 나타내는 저장 유닛은 데이터를 위한 판독 버퍼의 역할을 할 수 있다.
제1 주소는 특정 "포털"을 나타내는 데 사용된다. 포털로부터 데이터 패킷을 수신한 후에, 호스트는 제1 주소를 제2 주소에 매핑한다. 구체적으로, 호스트는 메모리 매핑 테이블(memory mapping table, MTT)을 이용하여 제1 주소를 제2 주소에 매핑할 수 있다. 호스트는 각각의 포털에 대한 하나의 MTT 엔트리를 유지할 수 있고, 각각의 엔트리는 포털을 대응하는 저장 유닛과 연관시킬 수 있다. 저장 유닛은 고정된 크기의 저장 공간일 수 있다. 이하의 설명에서, 저장 유닛을 판독 페이지라고도 한다. 판독 명령을 트리거하기 전에, 호스트는 제2 주소가 나타내는 저장 유닛을 판독 명령에 할당하고, MTT 엔트리를 이용하여 제1 주소와 제2 주소 사이의 대응관계를 기록한다.
본 발명의 본 실시예에서, 포털은 판독 조작과 일대일 대응관계에 있다. 하나의 판독 조작에서, 판독될 데이터의 크기에 기초하여, 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응할 수 있고, 호스트는 적어도 2개의 저장 유닛을 판독 명령에 할당할 수도 있다.
본 발명에서는 판독 페이지의 크기를 제한하지 않지만, NVMe 제어기의 판독 메모리 블록은 정수 개의 판독 페이지를 포함하는 것이 권장된다. 저장 매체로부터 데이터를 판독한 후에, NVMe 제어기는 검사 및 에러 정정을 위해 데이터를 에러 정정 버퍼에 배치하고, 그런 다음 에러 정정 후에 획득된 데이터를 "포털"에 기입한다. 에러 정정 버퍼를 판독 메모리 블록이라고도 한다.
본 발명의 실시예에서, 호스트는 호스트의 메모리를 판독 페이지 풀에 구성할 수 있다. 판독 조작을 개시하기 전에, 호스트는 판독 조작에 필요한 판독 페이지의 수를 판독 페이지 풀에 할당하고, 판독 조작에 대응하는 포털의 MTT 엔트리를 초기화한다. MTT 엔트리는 포털 주소와 판독 페이지 주소 사이의 대응관계를 기록한다. 도 8a와 도 8b는 본 발명의 일 실시예에 따른 MTT 엔트리의 개략도이다. MTT 엔트리는 포털과 판독 페이지 사이의 통신을 기록한다. 도면에 도시된 바와 같이, 포털 X에 대응하는 판독 페이지는 판독 페이지 1, 판독 페이지 7, 및 판독 페이지 4이다. 포털 Y에 대응하는 판독 페이지는 판독 페이지 2, 판독 페이지 13, 판독 페이지 8, 및 판독 페이지 0이다.
본 발명의 본 실시예에서, 판독 페이지는 고정된 크기의 저장 공간이다. 판독 페이지의 크기가 판독될 데이터의 크기보다 작을 수 있다. 따라서, 판독 조작이 하나 이상의 판독 페이지를 필요로 할 수 있다. 할당 중에, 호스트는 적어도 2개의 판독 페이지를 판독 명령에 할당할 수 있다. 호스트가 복수의 판독 페이지를 판독 조작에 할당할 수 있으면, 제2 주소는 판독 페이지 중 하나를 가리킨다. 호스트는 제1 주소와 판독될 데이터 중 페이로드 데이터 시퀀스에 기초하여 제2 주소를 결정할 수 있다.
본 발명의 본 실시예에서는 호스트가 판독될 데이터 중 페이로드 데이터의 시퀀스를 결정하는 방식을 제한하지 않는다. NVMe 제어기가 PCIe 기입 조작을 수행할 때 시퀀스 보존이 보장되면, 호스트는 데이터 패킷을 수신하는 시퀀스에 기초하여 판독될 데이터 중 페이로드 데이터의 시퀀스를 결정할 수 있다. 예를 들어, NVMe 제어기는 또한 제2 데이터 패킷을 호스트에 송신한다. 여기서, 제2 데이터 패킷은 제1 주소와 제2 페이로드 데이터를 싣고 있고, 제2 페이로드 데이터 역시 판독될 데이터에 속한다. 제2 데이터 패킷을 수신한 후에, 호스트는 제1 데이터 패킷과 제2 데이터 패킷을 수신하는 시퀀스에 기초하여, 판독될 데이터 중 제1 페이로드 데이터와 제2 페이로드 데이터의 시퀀스를 결정할 수 있다. NVMe 제어기가 PCIe 기입 조작을 수행할 때 시퀀스 보존이 보장되지 않으면, 데이터 패킷은 판독될 데이터 중 페이로드 데이터의 오프셋을 더 싣고 있을 수 있고, 오프셋은 판독될 데이터 중 페이로드 데이터의 시퀀스를 나타내는 데 사용된다.
본 발명의 본 실시예에서, NVMe 제어기는 시퀀스 보존 방식 또는 비시퀀스 보존 방식으로 데이터 패킷을 송신할 수 있다. 예를 들어, NVMe 제어기는 다음의 두 가지 순차적 모드 중 하나 또는 양쪽을 지원할 수 있다.
"엄격한(Strict)" 모드:
이 모드에서, NVMe 제어기는 단조롭게 증가하는 데이터 오프셋 시퀀스로 데이터 패킷을 송신한다. 호스트는 데이터 패킷의 시퀀스에 기초하여 페이로드 데이터를 수신한다. 이 모드에서, 오프셋이 필요하지 않다. 구체적으로, 도 7에 도시된 포털 폭이 단지 (표준에 지정된) 2비트일 수 있다.
"이징(Easing)"모드:
이징 모드에서, NVMe 제어기는 임의의 시퀀스로 PCIe 기입 트랜잭션을 송신할 수 있고, 데이터 패킷이 데이터 오프셋을 싣고 있을 필요가 있다. 본 발명의 본 실시예에서, NVMe 제어기는 판독 조작의 논리 블록을 동시에 처리할 수 있다. 구체적으로, NVMe 제어기는 저장 매체로부터 서로 다른 논리 블록에 대응하는 데이터를 판독하고, 검사를 위해 데이터를 서로 다른 판독 메모리 블록에 각각 배치할 수 있다. 서로 다른 판독 메모리 블록이 서로 다른 시간에 검사를 완료하기 때문에, 판독 메모리 블록은 논리 블록의 시퀀스에 따라 호스트에 엄격하게 기입되지 않을 수 있고, 제1 논리 블록에 대응하는 판독 메모리 블록이 마지막 논리 블록에 대응하는 판독 메모리 블록보다 늦게 타깃 메모리에 기입될 수 있다. NVMe 제어기는 트랜잭션 패킷에 실리는 데이터 오프셋에 기초하여 데이터를 재구성한다. 이 모드에서, 데이터 패킷은 데이터 오프셋을 싣고 있을 필요가 있다. 다시 말해, 도 7에 도시된 포털 폭이 최대 데이터 전송 크기 이상일 필요가 있다.
단계 404: 호스트가 제1 데이터 패킷의 제1 페이로드 데이터를 제2 주소가 나타내는 저장 유닛에 기입한다.
NVMe 제어기에 의해 송신된 데이터 패킷을 수신한 후에, 호스트가 제1 주소에 기초하여 제2 주소를 결정하고, 그런 다음 제2 주소가 나타내는 저장 유닛에 페이로드 데이터를 기입한다.
본 발명의 본 실시예에서, 제2 주소가 나타내는 저장 유닛에 대해 기입 조작을 완료한 후에, 호스트는 제2 주소가 나타내는 저장 유닛의 데이터에 대해 조작을 수행할 수 있고; 다르게 말하면, 호스트는 데이터를 소비할 수 있다. 예를 들어, 호스트는 데이터를 다른 엔티티에 송신할 수 있다. 본 발명의 본 실시예에서, 판독 페이지와 관련된 데이터가 판독 페이지에 완전히 기록된 후에, 호스트는 판독 페이지에 대해 기입 조작을 완료한다. 다시 말해, 판독 페이지와 관련된 마지막 TLP 내의 데이터가 판독 페이지에 기입된 후에, 호스트는 판독 페이지에 대해 기입 조작을 완료한다.
본 발명의 본 실시예에서, 하나의 판독 조작은 복수의 판독 페이지를 가지고 있을 수 있다. 전체 판독 조작을 완료하기 전에, 호스트는 일부 판독 페이지에 대해 기입 조작을 완료할 수 있다. 하나의 판독 페이지에 대해 기입 조작을 완료한 후에, 호스트는 전체 판독 조작이 완료될 때까지 기다릴 필요없이 판독 페이지 내의 데이터를 사용할 수 있다.
도 9a와 도 9b에 도시된 바와 같이, 판독될 데이터의 크기가 4*P_sz이다. 여기서, P_sz는 판독 페이지의 크기, 즉 저장 공간의 크기이다. 판독 메모리 블록의 크기가 2*P_sz이다. 구체적으로, 판독될 데이터는 데이터에 대해 검사 및 에러 정정을 수행하기 위해 2개의 판독 메모리 블록을 필요로 한다. 본 발명의 본 실시예에서, 설명을 위해 TLP가 데이터 패킷의 예로서 사용된다. 각각의 TLP의 페이로드 데이터의 크기가 0.5*P_sz이다. 구체적으로, 각각의 판독 메모리 블록의 데이터가 4개의 TLP를 이용하여 송신될 필요가 있다. 도면에 도시된 바와 같이, NVMe 제어기는 저장 매체로부터 판독될 데이터를 판독 메모리 블록 0과 판독 메모리 블록 1에 순차적으로 판독 및 검사한다. NVMe 제어기는 2개의 판독 메모리 블록의 데이터를 동시에 검사할 수 있다. 판독 메모리 블록의 검사 속도가 다르기 때문에, 본 발명의 본 실시예에서, 판독 메모리 블록 0을 검사하기 전에 판독 메모리 블록 1의 검사가 완료된다. NVMe 제어기는 먼저 판독 메모리 블록 1의 데이터를 TLP에 순차적으로 캡슐화하고, PCIe 네트워크를 통해 호스트에 데이터를 송신한다. 도면에 도시된 바와 같이, TLP 0과 TLP 1에 캡슐화된 데이터는 판독 메모리 블록 1의 데이터이고, 그런 다음 판독 메모리 블록 0의 검사가 완료된다. NVMe 제어기는 데이터 시퀀스로 판독 메모리 블록 0의 데이터를 TLP에 캡슐화하고, PCIe 네트워크를 통해 호스트에 데이터를 송신한다. 도면에 도시된 바와 같이, TLP 2, TLP 4, TLP 6, 및 TLP 7에 캡슐화된 데이터가 판독 메모리 블록 0의 데이터이다. 도면에 도시된 바와 같이, 본 발명의 본 실시예에서, 호스트에 의해 수신된 데이터 패킷은 순서가 뒤바뀔 수 있다. 호스트는 수신된 TLP 내의 데이터 오프셋에 기초하여 판독될 데이터 중 페이로드 데이터의 시퀀스를 결정하고, 판독될 데이터 중 페이로드 데이터의 시퀀스 및 지시 정보에 기초하여 MTT를 검색하여 페이로드 데이터를 저장하기 위한 판독 페이지의 주소를 결정하며, 페이로드 데이터를 대응하는 판독 페이지에 기입한다. 도면에 도시된 바와 같이, TLP 0과 TLP 1의 페이로드 데이터를 판독 페이지 8에 기입한 후에, 호스트는 판독 페이지 8에 대해 기입 조작을 완료하고, 호스트는 판독 페이지 8에서 데이터를 처리할 수 있다. 유사하게, TLP 2와 TLP 4의 페이로드 데이터를 판독 페이지 2에 기입한 후에, 호스트는 판독 페이지 2에 대해 기입 조작을 완료하고, 호스트는 판독 페이지 2에서 데이터를 처리할 수 있다. 본 발명의 본 실시예에서, 호스트가 판독 페이지에 저장된 데이터를 처리한다는 것은 구체적으로, 데이터를 소비하는 것, 예를 들어 데이터를 다른 바디로 송신하는 것이고, 호스트는 판독될 데이터가 완전히 기입될 때까지 기다릴 필요 없이 판독될 데이터에 대해 조작을 수행할 수 있다. 본 발명의 본 실시예에서, 파이프 라인 처리 방식이 구현됨으로써, 판독 조작 지연이 단축된다.
본 발명의 본 실시예에서, 제2 주소가 나타내는 저장 유닛의 처리를 완료한 후에, 호스트는 다른 판독 조작의 사용을 위해 저장 유닛을 해제할 수 있다. 예를 들어, 도 9a와 도 9b의 실시예에서, 판독 페이지 8에 저장된 데이터의 처리를 완료한 후에, 호스트는 다른 판독 조작의 사용을 위해 판독 페이지 8을 판독 페이지 풀에 해제하고, 전체 판독 조작이 완료되고 판독될 모든 데이터가 처리될 때까지 기다리지 않고, 판독 조작에 의해 점유된 저장 공간을 해제하여 저장 공간의 점유를 줄일 수 있다.
판독 조작을 완료한 후에, NVMe 제어기는 추가적으로, 완료 큐 엔트리(CQE)를 트리거하도록 구성된다. 여기서, CQE는 NVMe 제어기가 판독 명령에 의해 지정된 판독 조작을 완료했음을 나타내는 데 사용되고, 호스트는 완료 큐 엔트리(CQE)를 추가로 획득하도록 구성된다. 본 발명의 본 실시예에서, 호스트는 제2 주소가 나타내는 저장 유닛의 데이터에 대해 조작을 수행한 후에만 CQE를 획득할 수 있다.
본 발명의 실시예에 개시된 기술적 해결책에 따르면, NVMe 제어기가 판독될 데이터를 제1 주소를 이용하여 호스트에 기입할 수 있도록, 호스트는 제1 주소를 데이터 포털 주소로서 NVMe 제어기에 오픈한다. NVMe 제어기에 의해 송신된 데이터 패킷에 실리는 목적지 주소가 제1 주소이다. 데이터 패킷을 수신한 후에, 호스트는 데이터 패킷 내의 페이로드 데이터를 제1 주소가 나타내는 저장 공간에 실제로 기입하지 않고, 제1 주소를 제2 주소에 매핑하며, 제2 주소가 나타내는 저장 공간에 데이터 패킷의 페이로드 데이터를 기입한다. 페이로드 데이터를 저장하기 위한 저장 공간과 통신 프로토콜 사이의 관계가 깨지고 또는 호스트가 통신 프로토콜에 의해 제한되지 않고 제2 주소에 액세스할 수 있도록, 제2 주소가 나타내는 저장 공간은 호스트의 사설 메모리 공간일 수 있다. 판독 명령이 완료되기 전에, 호스트는 제2 주소가 나타내는 저장 공간에 저장된 데이터를 사용하고, 다른 판독 조작의 사용을 위해 제2 주소가 나타내는 저장 공간을 조기에 해제할 수 있다. 본 발명의 실시예에 개시된 기술적 해결책에 따르면, 판독 조작 지연이 단축될 수 있고 또한 판독될 데이터를 저장하는 데 사용되는 저장 공간이 줄어들 수 있다.
도 10은 본 발명의 일 실시예에 따른 NVMe 기반의 데이터 판독 방법(1000)의 상호작용 흐름도이다. 도 10에 도시된 바와 같이, NVMe 기반의 데이터 판독 방법(1000)의 적용 시나리오에서, 데이터 소스와 명령 소스가 분리된다. 데이터 소스는 명령 소스를 이용하여 데이터 소스의 저장 공간에 판독될 데이터를 판독할 필요가 있다. 본 발명의 본 실시예에서는 데이터 소스와 명령 소스가 분리되는 구체적인 시나리오를 제한하지 않는다.
예를 들어, 본 발명의 본 실시예에서, 데이터 소스와 명령 소스가 분리된 시나리오는 NOF(NVMe over Fabric)에 기반한 JBOF(Just Bunch Of Flash)일 수 있다. 도 11a에 도시된 바와 같이, 데이터 소스는 저장 매체에 액세스할 필요가 있는 호스트이고, 명령 소스는 패브릭(fabric)을 이용하여 호스트에 연결된 NOF 브리지이다. 더 구체적으로, 명령 소스는 NOF 브릿지 내의 NOF 엔진일 수 있다. NOF 브리지는 PCIe 버스를 통해 NVMe 제어기에 연결되고, NVMe 제어기는 저장 매체에 연결된다.
본 발명의 본 실시예에서, 데이터 소스와 명령 소스가 분리된 시나리오에서, 데이터 소스 및 명령 소스는 호스트 및 암호화 가속기(cryptographic accelerator)일 수도 있다. 도 11b에 도시된 바와 같이, 데이터 소스는 호스트이고, 명령 소스는 호스트에 연결된 암호화 가속기이다. 더 구체적으로, 명령 소스는 암호화 가속기의 가속 엔진이다. 암호화 가속기는 PCIe 버스를 통해 NVMe 제어기에 연결되고, NVMe 제어기는 저장 매체에 연결된다.
본 발명의 본 실시예에서, 판독 조작을 수행할 때, 명령 소스는 판독될 데이터의 포털 주소의 지시 정보를 SQE에 추가한다. 포털 주소는 기본적으로, NVMe 제어기에 의해 주소 지정될 수 있는 PCIe 주소의 세그먼트일 수 있다. SQE를 획득한 후에, NVMe 제어기는 PCIe 기입 조작을 수행하여 TLP를 명령 소스에 송신하고, PCIe 주소를 TLP에 추가한다. TLP 패킷을 수신한 후에, 명령 소스는 TLP 패킷을 파싱하여 PCIe 주소를 획득하고, PCIe 주소와 로컬 메모리 사이의 매핑 관계에 기초하여, PCIe 주소에 대응하는 로컬 저장 유닛을 결정하고 나서 TLP 내의 페이로드 데이터를 결정된 저장 유닛에 기입한다. 하나의 포털은 복수의 저장 유닛에 대응할 수 있다. 일단 저장 유닛에 대해 기입 조작이 완료되면, 명령 소스는 저장 유닛에 저장된 데이터에 대해 조작을 수행할 수 있다. 저장 유닛에 대해 기입 조작이 경쟁된다는 것은, 저장 유닛에 대응하는 마지막 TLP의 페이로드 데이터를 저장 유닛에 기입하는 것을 지칭한다. 판독될 데이터의 일부 데이터를 획득한 후에, 명령 소스는 전체 판독 조작이 완료될 때까지 기다릴 필요없이, 획득된 데이터를 데이터 소스에 송신하고, 판독될 데이터를 데이터 소스에 송신할 수 있다. 도 10에 도시된 바와 같이, 판독될 데이터는 데이터 1, 데이터 2, 데이터 3, 및 데이터 4를 포함하고, 데이터 1, 데이터 2, 데이터 3, 및 데이터 4 각각은 하나의 저장 유닛에 대응할 수 있다. 저장 유닛의 데이터를 수신한 후에, 명령 소스는 저장 유닛의 데이터를 데이터 소스에 송신할 수 있다. 저장 유닛의 데이터를 데이터 소스에 송신한 후에, 명령 소스는 다른 판독 조작의 사용을 위해 대응하는 저장 유닛을 해제할 수 있다.
본 발명의 실시예에 개시된 기술적 해결책에 따르면, 데이터에 대한 파이프라인 조작이 구현될 수 있도록, 명령 소스는 로컬 메모리와 PCIe 주소 사이의 매핑 관계를 구축하고, 수신된 TLP 내의 페이로드 데이터를 명령 소스의 메모리 공간에 기입한다. 구체적으로, 일부 데이터를 수신한 후에, 명령 소스는 수신된 데이터를 데이터 소스에 송신할 수 있고, NVMe 제어기에 의해 송신된 데이터를 수신하고 데이터를 데이터 소스에 송신하는 것이 동시에 처리됨으로써, 데이터를 캐싱하는 데 사용되는 저장 공간을 줄일 수 있고 또한 판독 조작의 처리 속도를 높일 수 있다.
도 12는 본 출원의 일 실시예에 따른 컴퓨팅 장치(1200)의 논리적 구조를 개략적으로 나타낸 도면이다. 도 12에 도시된 바와 같이, 컴퓨팅 장치(1200)는,
판독 명령을 NVMe 제어기에 트리거하도록 구성된 처리 유닛(1202) - 판독 명령은 지시 정보를 싣고 있고, 지시 정보는 제1 주소를 나타내는 데 사용되며, 제1 주소는 NVMe 제어기에 의해 주소 지정 가능한 주소임 -; 및
NVMe 제어기에 의해 송신된 제1 데이터 패킷을 수신하도록 구성된 수신 유닛(1204) - 제1 데이터 패킷은 제1 주소와 제1 페이로드 데이터를 싣고 있음 -을 포함한다.
처리 유닛(1202)은 제1 주소에 기초하여 제2 주소를 결정하고, 제2 주소가 나타내는 저장 유닛에 제1 페이로드 데이터를 기입한다. 제2 주소는 처리 유닛(1202)에 의해 주소 지정 가능한 주소이다.
선택적으로, 제2 주소가 나타내는 저장 유닛에 대해 기입 조작을 완료한 후에, 처리 유닛(1202)은 추가적으로, 제2 주소가 나타내는 저장 유닛의 데이터에 대해 조작을 수행하도록 구성된다.
제2 주소가 나타내는 저장 유닛의 데이터에 대해 조작을 수행한 후에, 처리 유닛(1202) 추가적으로, NVMe 제어기에 의해 트리거된 완료 큐 엔트리(CQE)를 획득하도록 구성된다. 여기서, CQE는 NVMe 제어기가 판독 명령에 의해 지정된 판독 조작을 완료했음을 나타내는 데 사용된다.
제2 주소가 나타내는 저장 유닛의 데이터에 대해 조작을 수행한 후에, 처리 유닛(1202)은 추가적으로, 제2 주소가 나타내는 저장 유닛을 해제하도록 구성된다.
판독 명령을 트리거하기 전에, 처리 유닛(1202)은 추가적으로, 제2 주소가 나타내는 저장 유닛을 판독 명령에 할당하고, 제1 주소와 제2 주소 사이의 대응관계를 기록하도록 구성된다.
선택적으로, 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 처리 유닛(1202)은 적어도 2개의 저장 유닛을 판독 명령에 할당한다.
처리 유닛(1202)은 제1 주소와 판독될 데이터 중 제1 페이로드 데이터의 시퀀스에 기초하여 제2 주소를 결정할 수 있다.
선택적으로, 수신 유닛(1204)는 추가적으로, NVMe 제어기에 의해 송신된 제2 데이터 패킷을 수신하도록 구성된다. 여기서, 제2 데이터 패킷은 제1 주소와 제2 페이로드 데이터를 싣고 있다. 처리 유닛(1202)은 추가적으로, 제1 데이터 패킷과 제2 데이터 패킷을 수신하는 시퀀스에 기초하여, 판독될 데이터 중 제1 페이로드 데이터와 제2 페이로드 데이터의 시퀀스를 결정하도록 구성된다.
선택적으로, 제1 데이터 패킷은 판독될 데이터 중 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 오프셋은 판독될 데이터 중 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용된다.
본 발명의 본 실시예에서, 제1 주소는 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소일 수 있고, 제1 데이터 패킷은 PCIe 패킷이며, 제2 주소가 나타내는 저장 유닛은 컴퓨팅 장치의 메모리 공간일 수 있다.
본 출원의 본 실시예에서, 처리 유닛(1202)은 도 3의 프로세서(301) 내의 판독 조작 로직(310)에 의해, 또는 도 3의 프로세서(301)와 시스템 메모리(302) 내의 판독 조작 모듈(306)에 의해 구체적으로 구현될 수 있다. 수신 유닛(1204)은 도 3의 실시예의 프로세서(301)와 통신 인터페이스(303)에 의해 구현될 수 있다.
본 출원의 본 실시예는 전술한 실시예에 대응하는 호스트의 장치 실시예이고, 전술한 실시예에서의 특징의 설명이 본 출원의 본 실시예에 적용 가능하다. 여기서는 세부사항에 대해 다시 설명하지 않는다.
전술한 실시예는 본 출원의 기술적 해결책을 설명하기 위한 것일 뿐, 본 발명을 제한하려는 것이 아니다. 전술한 실시예를 참조하여 본 출원에 대해 상세하게 설명하였지만, 당업자라면 청구항의 범위에서 벗어나지 않고 여전히 전술한 실시예에서 설명된 기술적 해결책을 수정할 수 있거나 또는 전술한 실시예의 일부 기술적 특징을 대체할 수 있다고 이해해야 한다.

Claims (32)

  1. 비휘발성 메모리 익스프레스(non-volatile memory express, NVMe) 기반의 데이터 판독 시스템으로서,
    상기 NVMe 기반의 데이터 판독 시스템은 호스트, NVMe 제어기, 및 저장 매체를 포함하고,
    상기 저장 매체는 데이터를 저장하도록 구성되며;
    상기 호스트는 판독 명령을 트리거하도록 구성되고 - 상기 판독 명령은 지시 정보를 싣고 있고, 상기 지시 정보는 제1 주소를 나타내는 데 사용되며, 상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능(addressable)한 주소임 -;
    상기 NVMe 제어기는 상기 판독 명령을 획득하고, 상기 판독 명령에 대응하는 판독될 데이터를 상기 저장 매체로부터 판독하며, 제1 데이터 패킷을 상기 호스트에 송신하도록 구성되고 - 상기 제1 데이터 패킷은 상기 제1 주소와 제1 페이로드 데이터를 싣고 있고, 상기 판독될 데이터는 상기 제1 페이로드 데이터를 포함함 -;
    상기 호스트는 추가적으로, 상기 제1 데이터 패킷을 수신하고, 상기 제1 주소에 기초하여 제2 주소를 결정하며, 상기 제2 주소가 나타내는 저장 유닛에 상기 제1 페이로드 데이터를 기입(write)하도록 구성되고, 상기 제2 주소는 상기 호스트에 의해 주소 지정 가능한 주소이고,
    상기 제2 주소가 나타내는 저장 유닛은 상기 호스트의 사설 메모리 유닛인, NVMe 기반의 데이터 판독 시스템.
  2. 제1항에 있어서,
    상기 제2 주소가 나타내는 상기 저장 유닛에 대해 기입 조작을 완료한 후에, 상기 호스트는 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 조작을 수행하도록 구성된, NVMe 기반의 데이터 판독 시스템.
  3. 제2항에 있어서,
    상기 NVMe 제어기는 추가적으로 완료 큐 엔트리(completion queue entry, CQE)를 트리거하도록 구성되고, 상기 CQE는 상기 NVMe 제어기가 상기 판독 명령에 의해 지정된 판독 조작을 완료했다는 것을 나타내는 데 사용되며;
    상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 호스트는 추가적으로 상기 CQE를 획득하도록 구성된, NVMe 기반의 데이터 판독 시스템.
  4. 제2항 또는 제3항에 있어서,
    상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 호스트는 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 해제하도록 구성된, NVMe 기반의 데이터 판독 시스템.
  5. 제2항 또는 제3항에 있어서,
    상기 판독 명령을 트리거하기 전에, 상기 호스트는 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 상기 판독 명령에 할당하고, 상기 제1 주소와 상기 제2 주소 사이의 대응관계를 기록하도록 구성된, NVMe 기반의 데이터 판독 시스템.
  6. 제5항에 있어서,
    상기 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 상기 호스트는 적어도 2개의 저장 유닛을 상기 판독 명령에 할당하는, NVMe 기반의 데이터 판독 시스템.
  7. 제6항에 있어서,
    상기 호스트는 상기 제1 주소 및 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여 상기 제2 주소를 결정하도록 구성된, NVMe 기반의 데이터 판독 시스템.
  8. 제7항에 있어서,
    상기 NVMe 제어기는 추가적으로, 제2 데이터 패킷을 상기 호스트에 송신하도록 구성되고 - 여기서, 상기 제2 데이터 패킷은 상기 제1 주소와 제2 페이로드 데이터를 싣고 있고, 상기 판독될 데이터는 상기 제2 페이로드 데이터를 포함하고 있음 -;
    상기 호스트는 추가적으로, 상기 제2 데이터 패킷을 수신하고, 상기 제1 데이터 패킷과 상기 제2 데이터 패킷을 수신하는 시퀀스에 기초하여, 상기 판독될 데이터 중 상기 제1 페이로드 데이터와 상기 제2 페이로드 데이터의 시퀀스를 결정하도록 구성된, NVMe 기반의 데이터 판독 시스템.
  9. 제7항에 있어서,
    상기 제1 데이터 패킷은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 상기 오프셋은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용되는, NVMe 기반의 데이터 판독 시스템.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소이고, 상기 제1 데이터 패킷은 PCIe 패킷이며, 상기 제2 주소가 나타내는 상기 저장 유닛은 상기 호스트의 메모리 공간인, NVMe 기반의 데이터 판독 시스템.
  11. NVMe 기반의 데이터 판독 방법으로서,
    호스트가 판독 명령을 트리거하는 단계 - 상기 판독 명령은 지시 정보를 싣고 있고, 상기 지시 정보는 제1 주소를 나타내는 데 사용되며, 상기 제1 주소는 NVMe 제어기에 의해 주소 지정 가능(addressable)한 주소임 -;
    상기 호스트가 상기 NVMe 제어기에 의해 송신된 제1 데이터 패킷을 수신하는 단계 - 상기 제1 데이터 패킷은 상기 제1 주소와 제1 페이로드 데이터를 싣고 있음 -;
    상기 호스트가 상기 제1 주소에 기초하여 제2 주소를 결정하는 단계 - 상기 제2 주소는 상기 호스트에 의해 주소 지정 가능한 주소임 -; 및
    상기 호스트가 상기 제2 주소가 나타내는 저장 유닛에 상기 제1 페이로드 데이터를 기입(write)하는 단계
    를 포함하고,
    상기 제2 주소가 나타내는 저장 유닛은 상기 호스트의 사설 메모리 유닛인, NVMe 기반의 데이터 판독 방법.
  12. 제11항에 있어서,
    상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛에 대해 기입 조작을 완료한 후에, 상기 NVMe 기반의 데이터 판독 방법이,
    상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 조작을 수행하는 단계
    를 더 포함하는 NVMe 기반의 데이터 판독 방법.
  13. 제12항에 있어서,
    상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 NVMe 기반의 데이터 판독 방법이,
    상기 호스트가 상기 NVMe 제어기에 의해 트리거된 완료 큐 엔트리(completion queue entry, CQE)를 획득하는 단계 - 상기 CQE는 상기 NVMe 제어기가 상기 판독 명령에 의해 지정된 판독 조작을 완료했다는 것을 나타내는 데 사용됨 -
    를 더 포함하는 NVMe 기반의 데이터 판독 방법.
  14. 제12항 또는 제13항에 있어서,
    상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 NVMe 기반의 데이터 판독 방법이,
    상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛을 해제하는 단계
    를 더 포함하는 NVMe 기반의 데이터 판독 방법.
  15. 제12항 또는 제13항에 있어서,
    상기 호스트가 판독 명령을 트리거하는 단계 이전에, 상기 NVMe 기반의 데이터 판독 방법이,
    상기 호스트가 상기 제2 주소가 나타내는 상기 저장 유닛을 상기 판독 명령에 할당하고, 상기 제1 주소와 상기 제2 주소 사이의 대응관계를 기록하는 단계
    를 더 포함하는 NVMe 기반의 데이터 판독 방법.
  16. 제15항에 있어서,
    상기 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 상기 호스트는 적어도 2개의 저장 유닛을 상기 판독 명령에 할당하는, NVMe 기반의 데이터 판독 방법.
  17. 제16항에 있어서,
    상기 호스트는 상기 제1 주소 및 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여 상기 제2 주소를 결정하는, NVMe 기반의 데이터 판독 방법.
  18. 제17항에 있어서,
    상기 NVMe 기반의 데이터 판독 방법이,
    상기 호스트가 상기 NVMe 제어기에 의해 송신된 제2 데이터 패킷을 수신하는 단계 - 상기 제2 데이터 패킷은 상기 제1 주소와 제2 페이로드 데이터를 싣고 있음 -; 및
    상기 호스트가, 상기 제1 데이터 패킷과 상기 제2 데이터 패킷을 수신하는 시퀀스에 기초하여 상기 판독될 데이터 중 상기 제1 페이로드 데이터와 상기 제2 페이로드 데이터의 시퀀스를 결정하는 단계
    를 더 포함하는 NVMe 기반의 데이터 판독 방법.
  19. 제17항에 있어서,
    상기 제1 데이터 패킷은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 상기 오프셋은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용되는, NVMe 기반의 데이터 판독 방법.
  20. 제11항 내지 제13항 중 어느 한 항에 있어서,
    상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소이고, 상기 제1 데이터 패킷은 PCIe 패킷이며, 상기 제2 주소가 나타내는 상기 저장 유닛은 상기 호스트의 메모리 공간인, NVMe 기반의 데이터 판독 방법.
  21. NVMe 기반의 데이터 판독 장치로서,
    판독 명령을 트리거하도록 구성된 처리 유닛 - 상기 판독 명령은 지시 정보를 싣고 있고, 상기 지시 정보는 제1 주소를 나타내는 데 사용되며, 상기 제1 주소는 NVMe 제어기에 의해 주소 지정 가능(addressable)한 주소임 -; 및
    상기 NVMe 제어기에 의해 송신된 제1 데이터 패킷을 수신하도록 구성된 수신 유닛 - 상기 제1 데이터 패킷은 상기 제1 주소와 제1 페이로드 데이터를 싣고 있음 -
    을 포함하고,
    상기 처리 유닛은 추가적으로, 상기 제1 주소에 기초하여 제2 주소를 결정하고, 상기 제2 주소가 나타내는 저장 유닛에 상기 제1 페이로드 데이터를 기입(write)하도록 구성되고, 상기 제2 주소는 상기 처리 유닛에 의해 주소 지정 가능한 주소이고,
    상기 제2 주소가 나타내는 저장 유닛은 상기 NVMe 기반의 데이터 판독 장치의 사설 메모리 유닛인, NVMe 기반의 데이터 판독 장치.
  22. 제21항에 있어서,
    상기 제2 주소가 나타내는 상기 저장 유닛에 대해 기입 조작을 완료한 후에, 상기 처리 유닛은 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 조작을 수행하도록 구성된, NVMe 기반의 데이터 판독 장치.
  23. 제22항에 있어서,
    상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 처리 유닛은 추가적으로, 상기 NVMe 제어기에 의해 트리거된 완료 큐 엔트리(completion queue entry, CQE)를 획득하도록 구성되고, 상기 CQE는 상기 NVMe 제어기가 상기 판독 명령에 의해 지정된 판독 조작을 완료했다는 것을 나타내는 데 사용되는, NVMe 기반의 데이터 판독 장치.
  24. 제22항 또는 제23항에 있어서,
    상기 제2 주소가 나타내는 상기 저장 유닛의 데이터에 대해 상기 조작을 수행한 후에, 상기 처리 유닛은 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 해제하도록 구성된, NVMe 기반의 데이터 판독 장치.
  25. 제22항 또는 제23항에 있어서,
    상기 판독 명령을 트리거하기 전에, 상기 처리 유닛은 추가적으로, 상기 제2 주소가 나타내는 상기 저장 유닛을 상기 판독 명령에 할당하고, 상기 제1 주소와 상기 제2 주소 사이의 대응관계를 기록하도록 구성된, NVMe 기반의 데이터 판독 장치.
  26. 제25항에 있어서,
    상기 판독 명령의 판독될 데이터는 적어도 2개의 데이터 패킷에 대응하고, 상기 처리 유닛은 적어도 2개의 저장 유닛을 상기 판독 명령에 할당하는, NVMe 기반의 데이터 판독 장치.
  27. 제26항에 있어서,
    상기 처리 유닛은 상기 제1 주소 및 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스에 기초하여 상기 제2 주소를 결정하도록 구성된, NVMe 기반의 데이터 판독 장치.
  28. 제27항에 있어서,
    상기 수신 유닛은 추가적으로, 상기 NVMe 제어기에 의해 송신된 제2 데이터 패킷을 수신하도록 구성되고 - 여기서, 상기 제2 데이터 패킷은 상기 제1 주소와 제2 페이로드 데이터를 싣고 있음 -;
    상기 처리 유닛은 추가적으로, 상기 제1 데이터 패킷과 상기 제2 데이터 패킷을 수신하는 시퀀스에 기초하여 상기 판독될 데이터 중 상기 제1 페이로드 데이터와 상기 제2 페이로드 데이터의 시퀀스를 결정하도록 구성된, NVMe 기반의 데이터 판독 장치.
  29. 제27항에 있어서,
    상기 제1 데이터 패킷은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 오프셋을 더 싣고 있고, 상기 오프셋은 상기 판독될 데이터 중 상기 제1 페이로드 데이터의 시퀀스를 나타내는 데 사용되는, NVMe 기반의 데이터 판독 장치.
  30. 제21항 내지 제23항 중 어느 한 항에 있어서,
    상기 제1 주소는 상기 NVMe 제어기에 의해 주소 지정 가능한 PCIe 주소이고, 상기 제1 데이터 패킷은 PCIe 패킷이며, 상기 제2 주소가 나타내는 상기 저장 유닛은 상기 NVMe 기반의 데이터 판독 장치의 메모리 공간인, NVMe 기반의 데이터 판독 장치.
  31. 컴퓨팅 장치에 의해 판독 가능한 저장 매체로서,
    상기 판독 가능한 저장 매체는 실행가능 명령을 저장하고, 컴퓨팅 장치의 프로세서가 상기 실행가능 명령을 실행할 때, 상기 컴퓨팅 장치는 제11항 내지 제13항 중 어느 한 항의 NVMe 기반의 데이터 판독 방법을 수행하는, 컴퓨팅 장치에 의해 판독 가능한 저장 매체.
  32. 컴퓨팅 장치로서,
    상기 컴퓨팅 장치는 프로세서, 메모리, 및 버스를 포함하고,
    상기 메모리는 실행가능 명령을 저장하도록 구성되고, 상기 프로세서와 상기 메모리는 상기 버스를 통해 연결되며, 상기 컴퓨팅 장치가 작동할 때, 상기 프로세서는 상기 메모리에 저장된 상기 실행가능 명령을 실행하고, 상기 컴퓨팅 장치로 하여금 제11항 내지 제13항 중 어느 한 항의 NVMe 기반의 데이터 판독 방법을 수행할 수 있게 하는, 컴퓨팅 장치.
KR1020207022273A 2018-06-30 2018-06-30 NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 KR102471219B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/093918 WO2020000482A1 (zh) 2018-06-30 2018-06-30 一种基于NVMe的数据读取方法、装置及系统

Publications (2)

Publication Number Publication Date
KR20200101982A KR20200101982A (ko) 2020-08-28
KR102471219B1 true KR102471219B1 (ko) 2022-11-25

Family

ID=68984388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207022273A KR102471219B1 (ko) 2018-06-30 2018-06-30 NVMe 기반의 데이터 판독 방법, 장치, 및 시스템

Country Status (6)

Country Link
US (1) US11467764B2 (ko)
EP (1) EP3792776B1 (ko)
JP (1) JP7191967B2 (ko)
KR (1) KR102471219B1 (ko)
CN (1) CN111095231B (ko)
WO (1) WO2020000482A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752484B (zh) * 2020-06-08 2024-04-12 深圳大普微电子科技有限公司 一种ssd控制器、固态硬盘及数据写入方法
CN111831226B (zh) * 2020-07-07 2023-09-29 山东华芯半导体有限公司 一种自主输出nvme协议命令加速处理方法
CN113296691B (zh) * 2020-07-27 2024-05-03 阿里巴巴集团控股有限公司 数据处理系统、方法、装置以及电子设备
CN112527705B (zh) * 2020-11-05 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种PCIe DMA数据通路的验证方法、装置及设备
CN113031862B (zh) * 2021-03-18 2024-03-22 中国电子科技集团公司第五十二研究所 一种基于nvme协议控制sata盘的存储系统
CN114996172B (zh) * 2022-08-01 2022-11-01 北京得瑞领新科技有限公司 基于ssd访问主机内存的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150261434A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Storage system and server
US20160124876A1 (en) * 2014-08-22 2016-05-05 HGST Netherlands B.V. Methods and systems for noticing completion of read requests in solid state drives
CN106210041A (zh) 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
US20170286363A1 (en) 2016-04-04 2017-10-05 Marvell World Trade Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086311A1 (en) 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS
KR101491484B1 (ko) * 2010-06-18 2015-02-10 엘에스아이 코포레이션 스케일러블 스토리지 디바이스들
US8966172B2 (en) * 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US9467511B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for use of vendor defined messages to execute a command to access a storage device
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output
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
US9424219B2 (en) * 2013-03-12 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge
US9712619B2 (en) * 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9565269B2 (en) * 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9575853B2 (en) 2014-12-12 2017-02-21 Intel Corporation Accelerated data recovery in a storage system
CN106484549B (zh) 2015-08-31 2019-05-10 华为技术有限公司 一种交互方法、NVMe设备、HOST及物理机系统
CN107209644B (zh) 2015-12-28 2020-04-28 华为技术有限公司 一种数据处理方法以及NVMe存储器
US9921756B2 (en) * 2015-12-29 2018-03-20 EMC IP Holding Company LLC Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
CN107832086B (zh) * 2016-09-14 2020-03-20 华为技术有限公司 计算机设备、程序写入方法及程序读取方法
CN107992436B (zh) * 2016-10-26 2021-04-09 华为技术有限公司 一种NVMe数据读写方法及NVMe设备
EP3352086B1 (en) 2016-12-05 2020-11-11 Huawei Technologies Co., Ltd. Control method, device and system for data reading-writing command in nvme over fabric architecture
EP3605951A1 (en) * 2016-12-27 2020-02-05 Chicago Mercantile Exchange, Inc. Message processing protocol which mitigates manipulative messaging behavior
US10387081B2 (en) * 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10503434B2 (en) 2017-04-12 2019-12-10 Micron Technology, Inc. Scalable low-latency storage interface
CN107608909A (zh) 2017-09-19 2018-01-19 记忆科技(深圳)有限公司 一种NVMe固态硬盘写加速的方法
JP6901427B2 (ja) * 2018-03-27 2021-07-14 キオクシア株式会社 ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150261434A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Storage system and server
US20160124876A1 (en) * 2014-08-22 2016-05-05 HGST Netherlands B.V. Methods and systems for noticing completion of read requests in solid state drives
US20170286363A1 (en) 2016-04-04 2017-10-05 Marvell World Trade Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
CN106210041A (zh) 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡

Also Published As

Publication number Publication date
EP3792776B1 (en) 2022-10-26
US20210034284A1 (en) 2021-02-04
JP2021515318A (ja) 2021-06-17
EP3792776A4 (en) 2021-06-09
US11467764B2 (en) 2022-10-11
KR20200101982A (ko) 2020-08-28
EP3792776A1 (en) 2021-03-17
CN111095231A (zh) 2020-05-01
JP7191967B2 (ja) 2022-12-19
WO2020000482A1 (zh) 2020-01-02
CN111095231B (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
KR102471219B1 (ko) NVMe 기반의 데이터 판독 방법, 장치, 및 시스템
TWI770358B (zh) 主機系統及其方法和加速模組
US9734085B2 (en) DMA transmission method and system thereof
CN107430493B (zh) 顺序写入流管理
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
CN110647480B (zh) 数据处理方法、远程直接访存网卡和设备
WO2018102967A1 (zh) NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统
US8924624B2 (en) Information processing device
US11579803B2 (en) NVMe-based data writing method, apparatus, and system
TW200406680A (en) Method, system, and program for handling input/output commands
WO2020087931A1 (zh) 一种数据备份方法、装置及系统
US10802828B1 (en) Instruction memory
WO2022073399A1 (zh) 存储节点、存储设备及网络芯片
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
KR20210094178A (ko) 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
CN117992125A (zh) 减少用于基于存储器的通信队列的索引更新消息

Legal Events

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