KR20220141679A - Peripheral component interconnect express interface system and operating method thereof - Google Patents

Peripheral component interconnect express interface system and operating method thereof Download PDF

Info

Publication number
KR20220141679A
KR20220141679A KR1020210048080A KR20210048080A KR20220141679A KR 20220141679 A KR20220141679 A KR 20220141679A KR 1020210048080 A KR1020210048080 A KR 1020210048080A KR 20210048080 A KR20210048080 A KR 20210048080A KR 20220141679 A KR20220141679 A KR 20220141679A
Authority
KR
South Korea
Prior art keywords
command
nvme
host
nvme device
host memory
Prior art date
Application number
KR1020210048080A
Other languages
Korean (ko)
Other versions
KR102509491B1 (en
Inventor
전용태
양지운
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020210048080A priority Critical patent/KR102509491B1/en
Priority to US17/522,810 priority patent/US11789658B2/en
Priority to CN202210005338.0A priority patent/CN115248795A/en
Priority to TW111103656A priority patent/TW202240416A/en
Priority to US17/707,744 priority patent/US20220327074A1/en
Publication of KR20220141679A publication Critical patent/KR20220141679A/en
Application granted granted Critical
Publication of KR102509491B1 publication Critical patent/KR102509491B1/en

Links

Images

Classifications

    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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

Abstract

The present technology relates to an electronic device. A PCIe interface system according to the present technology comprises a peripheral component interconnect express (PCIe) interface device, a host, and a non-volatile memory express (NVMe) device connected to the host through the PCIe interface device. The host comprises: a host memory for storing information about a command to be executed in the NVMe device and a command completed to be executed in the NVMe device; and an NVMe driver for transmitting the command to be executed by the NVMe device to the host memory and outputting an SQ DOORBELL signal to the NVMe device indicating that the command to be executed by the NVMe device is stored in the host memory. The NVMe device requests the host memory to register a PCIe lightweight notification (LN) indicating a location where the command to be executed by the NVMe device is stored. Accordingly, the time to fetch a command can be reduced.

Description

PCIe 인터페이스 시스템 및 그 동작 방법{PERIPHERAL COMPONENT INTERCONNECT EXPRESS INTERFACE SYSTEM AND OPERATING METHOD THEREOF}PCIe interface system and its operation method

본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 PCIe 인터페이스 시스템 및 그 동작 방법에 관한 것이다. The present invention relates to an electronic device, and more particularly, to a PCIe interface system and an operating method thereof.

PCIe(peripheral component interconnect express)는 데이터 통신을 위한 직렬 구조의 인터페이스이다. PCIe 기반 저장 장치는 멀티 포트(multi-port) 및 멀티 펑션(multi-function)을 지원한다. PCIe 기반 저장 장치는 가상화(virtualize) 및 비가상화(non-virtualize)될 수 있고, 하나 이상의 PCIe 펑션(PCIe function)을 통해 호스트 I/O 명령어의 QoS(Quality of Service)를 달성할 수 있다. PCIe (peripheral component interconnect express) is an interface of a serial structure for data communication. PCIe-based storage devices support multi-port and multi-function. The PCIe-based storage device may be virtualized and non-virtualized, and may achieve Quality of Service (QoS) of host I/O commands through one or more PCIe functions.

저장 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장 장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분된다.The storage device is a device for storing data under the control of a host device such as a computer or a smart phone. The storage device may include a memory device in which data is stored and a memory controller that controls the memory device. Memory devices are classified into volatile memory devices and non-volatile memory devices.

휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.A volatile memory device stores data only when power is supplied, and is a memory device in which stored data is lost when power supply is cut off. Volatile memory devices include static random access memory (SRAM) and dynamic random access memory (DRAM).

비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.A non-volatile memory device is a memory device in which data is not destroyed even when power is cut off. Memory (Flash Memory), etc.

본 발명의 실시 예는, PCIe Lightweight Notification(LN)을 등록하고 커맨드를 프리페치함으로써 커맨드를 페치하는 시간을 감소시키는 PCIe 인터페이스 시스템 및 그 동작 방법을 제공한다.An embodiment of the present invention provides a PCIe interface system for reducing a command fetch time by registering a PCIe Lightweight Notification (LN) and pre-fetching the command, and an operating method thereof.

본 발명의 실시 예에 따른 PCIe 인터페이스 시스템은, PCIe(peripheral component interconnect Express) 인터페이스 장치, 호스트 및 상기 PCIe 인터페이스 장치를 통해 상기 호스트에 연결되는 NVMe(non-volatile memory express) 장치를 포함하는 PCIe 인터페이스 시스템에 있어서, 상기 호스트는, 상기 NVMe 장치에 수행될 커맨드 및 상기 NVMe 장치에 수행을 완료한 커맨드에 대한 정보를 저장하는 호스트 메모리 및 상기 NVMe 장치에 수행될 커맨드를 상기 호스트 메모리에 전송하고, 상기 호스트 메모리에 상기 NVMe 장치에 수행될 커맨드가 저장되었음을 알리는 SQ DOORBELL 신호를 상기 NVMe 장치에 출력하는 NVMe 드라이버를 포함하고, 상기 NVMe 장치는 상기 NVMe 장치에 수행될 커맨드가 저장되는 위치를 나타내는 LN(PCIe lightweight notification) 등록을 상기 호스트 메모리에 요청할 수 있다.A PCIe interface system according to an embodiment of the present invention includes a peripheral component interconnect Express (PCIe) interface device, a host, and a non-volatile memory express (NVMe) device connected to the host through the PCIe interface device. wherein the host transmits to the host memory a host memory storing information about a command to be performed on the NVMe device and a command to be executed on the NVMe device and a command to be performed on the NVMe device to the host memory, and an NVMe driver outputting, to the NVMe device, a SQ DOORBELL signal indicating that a command to be executed on the NVMe device is stored in a memory, wherein the NVMe device indicates a location where the command to be executed on the NVMe device is stored. notification) registration may be requested from the host memory.

본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작 방법은, PCIe(peripheral component interconnect Express) 인터페이스 장치, 호스트 및 상기 PCIe 인터페이스 장치를 통해 상기 호스트에 연결되는 NVMe(non-volatile memory express) 장치를 포함하는 PCIe 인터페이스 시스템의 동작 방법에 있어서, 상기 NVMe 장치에 수행될 커맨드가 저장되는 위치를 나타내는 LN(PCIe lightweight notification) 등록을 상기 호스트에 포함된 호스트 메모리에 요청하는 단계, 상기 LN을 등록하는 단계 및 상기 NVMe 장치에 수행될 커맨드를 상기 호스트에 포함된 호스트 메모리에 저장하는 단계를 포함할 수 있다.A method of operating a PCIe interface system according to an embodiment of the present invention includes a peripheral component interconnect Express (PCIe) interface device, a host, and a non-volatile memory express (NVMe) device connected to the host through the PCIe interface device A method of operating a PCIe interface system, comprising: requesting registration of a PCIe lightweight notification (LN) indicating a location where a command to be executed in the NVMe device is stored, from a host memory included in the host; registering the LN; The method may include storing a command to be performed on the NVMe device in a host memory included in the host.

본 기술에 따르면 PCIe Lightweight Notification(LN)을 등록하고 커맨드를 프리페치함으로써 커맨드를 페치하는 시간을 감소시키는 PCIe 인터페이스 시스템 및 그 동작 방법이 제공된다.According to the present technology, a PCIe interface system for reducing a command fetch time by registering a PCIe Lightweight Notification (LN) and pre-fetching the command, and an operating method thereof are provided.

도 1은 PCIe 인터페이스 시스템을 설명하기 위한 블록도이다.
도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.
도 3은 NVMe에서 커맨드의 프로세스 과정을 도시한 도면이다.
도 4는 도 3의 커맨드 프로세스의 과정을 설명하기 위한 도면이다.
도 5는 LN을 통해 수행되는 커맨드 프로세스의 과정을 설명하기 도면이다.
도 6은 LN을 설명하기 위한 도면이다.
도 7은 LN 등록을 설명하기 위한 도면이다.
도 8은 LN 등록 후 커맨드 프리페치 및 커맨드 페치를 설명하기 위한 도면이다.
도 9는 저전력 상태의 종료 시 레이턴시를 설명하기 위한 도면이다.
도 10은 LN 등록을 통한 저전력 상태의 종료를 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.
도 13은 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.
1 is a block diagram illustrating a PCIe interface system.
2 is a diagram for explaining packet transmission between components included in a PCIe interface device.
3 is a diagram illustrating a process procedure of a command in NVMe.
FIG. 4 is a diagram for explaining a process of the command process of FIG. 3 .
5 is a diagram for explaining a process of a command process performed through an LN.
6 is a diagram for explaining an LN.
7 is a diagram for explaining LN registration.
8 is a diagram for explaining command prefetch and command fetch after LN registration.
9 is a diagram for explaining latency when a low power state is terminated.
10 is a diagram for explaining termination of a low power state through LN registration.
11 is a diagram for explaining an operation of a PCIe interface system according to an embodiment of the present invention.
12 is a diagram for explaining an operation of a PCIe interface system according to an embodiment of the present invention.
13 is a diagram for explaining an operation of a PCIe interface system according to an embodiment of the present invention.

본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.Specific structural or functional descriptions for the embodiments according to the concept of the present invention disclosed in this specification or application are only exemplified for the purpose of explaining the embodiments according to the concept of the present invention, and implementation according to the concept of the present invention Examples may be embodied in various forms and should not be construed as being limited to the embodiments described in the present specification or application.

도 1은 PCIe 인터페이스 시스템을 설명하기 위한 블록도이다.1 is a block diagram illustrating a PCIe interface system.

도 1을 참조하면, 도 1의 PCIe(peripheral component interconnect express) 인터페이스 장치(100)는 중앙 처리 장치(110), 루트 컴플렉스(120), 메모리(130), 스위치(140), PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)를 포함할 수 있다. 또, 도 1의 호스트(300)는 호스트 내부 패브릭(310), 호스트 프로세서(320), 호스트 메모리(330) 및 NVMe 드라이버(340)를 포함할 수 있다.Referring to FIG. 1 , the peripheral component interconnect express (PCIe) interface device 100 of FIG. 1 includes a central processing unit 110 , a root complex 120 , a memory 130 , a switch 140 , and a PCIe end point 150_1 . , 150_2) and legacy endpoints 160_1 and 160_2. Also, the host 300 of FIG. 1 may include a host internal fabric 310 , a host processor 320 , a host memory 330 , and an NVMe driver 340 .

도 1에서, 루트 컴플렉스(120)는 스위치(140)와 링크(LINK)로 연결될 수 있다. 또, 스위치(140)는 PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)와 각각 링크(LINK)로 연결될 수 있다. 링크(LINK)는 적어도 하나 이상의 레인(LANE)으로 구성될 수 있다.In FIG. 1 , the root complex 120 may be connected to the switch 140 and the link LINK. Also, the switch 140 may be connected to the PCIe end points 150_1 and 150_2 and the legacy end points 160_1 and 160_2 by a link LINK, respectively. The link LINK may include at least one or more lanes LANE.

실시 예에서, 루트 컴플렉스(120)는 중앙 처리 장치(110) 및 메모리(130)를 입출력 계층 구조(I/O hierarchy)와 연결할 수 있다. 구체적으로, 루트 컴플렉스(120)는 PCIe 포트를 지원할 수 있다. 즉, 루트 컴플렉스(120)는 입출력 장치(I/O)와 연결이 가능한 루트 포트를 지원할 수 있다. In an embodiment, the root complex 120 may connect the central processing unit 110 and the memory 130 to an I/O hierarchy. Specifically, the root complex 120 may support a PCIe port. That is, the root complex 120 may support a root port that can be connected to an input/output device (I/O).

추가로, 루트 컴플렉스(120)는 PCIe 인터페이스 장치(100)에 포함된 각 구성의 계층 간 라우팅을 지원할 수 있다. 여기서 라우팅은 데이터 통신에서 송신 측에서 수신 측으로 전송하는 경로를 선택하는 동작을 의미할 수 있다. 라우팅은 송신 측으로부터 수신 측으로 경로를 미리 설정해두는 방법 또는 시스템이나 네트워크의 상태에 따라 가장 효율이 좋은 경로를 선택하는 방법 중 어느 하나의 방법을 기초로 수행될 수 있다.Additionally, the root complex 120 may support routing between layers of each configuration included in the PCIe interface device 100 . Here, routing may refer to an operation of selecting a path for transmission from a transmitting side to a receiving side in data communication. Routing may be performed based on any one of a method of pre-setting a path from the transmitting side to the receiving side or a method of selecting the most efficient path according to the state of a system or network.

또, 루트 컴플렉스(120)는 입출력 리퀘스트를 지원할 수 있다. 루트 컴플렉스(120)는 컨피겨레이션 리퀘스트 생성을 지원해야 한다(must). 그러나, 루트 컴플렉스(120)는 컴플리터(completer)로서 lock semantics를 지원해서는 안 된다(must). 루트 컴플렉스(120)는 리퀘스터(requester)로서 lock request 생성을 요청할 수 있다. Also, the root complex 120 may support input/output requests. The root complex 120 must support creation of a configuration request. However, the root complex 120 must not support lock semantics as a completer. The root complex 120 may request generation of a lock request as a requester.

실시 예에서, 루트 컴플렉스(120)는 라우팅 시, 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 있다. 또, 루트 컴플렉스(120)는 입출력 요청을 생성할 수 있다.In an embodiment, the root complex 120 may divide packets transmitted between layers into smaller units during routing. Also, the root complex 120 may generate an input/output request.

실시 예에서, 스위치(140)는 2개 이상의 논리 PCI-to-PCI 브릿지들로 구성될 수 있다. 2개 이상의 논리 PCI-to-PCI 브릿지들은 각각 업스트림 포트 또는 다운스트림 포트에 연결될 수 있다.In an embodiment, the switch 140 may be configured with two or more logical PCI-to-PCI bridges. Two or more logical PCI-to-PCI bridges may be connected to an upstream port or a downstream port, respectively.

스위치(140)는 PCI 브릿지 메커니즘(어드레스 기반의 멀티 캐스팅 방식)을 사용하여 트랜잭션을 전송할 수 있다. 이 때, 스위치(140)는 모든 유형의 TLP(transaction layer packet)을 업스트림 포트 및 다운스트림 포트를 통해 전송 가능해야 한다(must). 또, 스위치(140)는 잠금 리퀘스트(Locked request)를 지원해야 한다. 인에이블 된 스위치(140)의 각 포트는 플로우 컨트롤을 지원 가능해야 한다(must). 스위치(140)는 동일한 가상 채널에서 경합이 발생하는 경우 라운드 로빈 또는 가중 라운드 로빈 방식으로 중재할 수 있다.The switch 140 may transmit a transaction using a PCI bridge mechanism (address-based multicasting method). In this case, the switch 140 must be able to transmit all types of transaction layer packets (TLPs) through an upstream port and a downstream port. In addition, the switch 140 must support a lock request. Each port of the enabled switch 140 must be capable of supporting flow control. The switch 140 may arbitrate in a round-robin or weighted round-robin manner when contention occurs in the same virtual channel.

실시 예에서, 루트 컴플렉스(120)와 달리 스위치(140)는 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 없다.In an embodiment, unlike the root complex 120 , the switch 140 cannot divide a packet transmitted between layers into smaller units.

실시 예에서, PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)는 PCIe 트랜잭션의 리퀘스터(requester) 또는 컴플리터(completer)의 역할을 수행할 수 있다. PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)가 송수신하는 TLP는 컨피겨레이션 공간 헤더를 제공해야 한다(must). 또, PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)는 컴플리터(completer)로서 컨피겨레이션 요청을 제공해야 한다(must).In an embodiment, the PCIe endpoints 150_1 and 150_2 and the legacy endpoints 160_1 and 160_2 may serve as a requester or completer of a PCIe transaction. The TLP transmitted and received by the PCIe endpoints 150_1 and 150_2 and the legacy endpoints 160_1 and 160_2 must provide a configuration space header. In addition, the PCIe endpoints 150_1 and 150_2 and the legacy endpoints 160_1 and 160_2 must provide a configuration request as a completer.

실시 예에서, PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)는 메모리 트랜잭션의 크기에 따라 구분될 수 있다. 예를 들면, 4GB를 초과하는 메모리 트랜잭션이 가능한 경우 엔드 포인트는 PCIe 엔드 포인트(150_1, 150_2), 4GB를 초과하는 메모리 트랜잭션이 불가능한 경우 엔드 포인트는 레거시 엔드 포인트(160_1, 160_2)일 수 있다. PCIe 엔드 포인트(150_1, 150_2)는 입출력 리퀘스트를 발생시키면 안되나, 레거시 엔드 포인트(160_1, 160_2)는 입출력 리퀘스트를 제공하거나 발생시킬 수 있다.In an embodiment, the PCIe endpoints 150_1 and 150_2 and the legacy endpoints 160_1 and 160_2 may be classified according to the size of a memory transaction. For example, if memory transactions exceeding 4 GB are possible, the endpoints may be PCIe endpoints 150_1 and 150_2, and if memory transactions exceeding 4 GB are not possible, the endpoints may be legacy endpoints 160_1 and 160_2. The PCIe endpoints 150_1 and 150_2 should not generate I/O requests, but the legacy endpoints 160_1 and 160_2 may provide or generate I/O requests.

실시 예에서, PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)는 스위치(140)와 TLP를 송수신할 수 있다.In an embodiment, the PCIe endpoints 150_1 and 150_2 or the legacy endpoints 160_1 and 160_2 may transmit and receive TLPs to and from the switch 140 .

실시 예에서, 스위치(140)는 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)로부터 수신된 TLP를 루트 컴플렉스(120)로 송신할 수 있다. In an embodiment, the switch 140 may transmit the TLP received from the PCIe endpoints 150_1 and 150_2 or the legacy endpoints 160_1 and 160_2 to the root complex 120 .

실시 예에서, 루트 컴플렉스(120)는 스위치(140)를 통해 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)와 TLP를 송수신할 수 있다. 루트 컴플렉스(120)는 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)로부터 수신된 TLP를 중앙 처리 장치(110)나 메모리(130)에 송신할 수 있다.In an embodiment, the root complex 120 may transmit/receive TLPs to and from the PCIe endpoints 150_1 and 150_2 or the legacy endpoints 160_1 and 160_2 through the switch 140 . The root complex 120 may transmit the TLP received from the PCIe endpoints 150_1 and 150_2 or the legacy endpoints 160_1 and 160_2 to the central processing unit 110 or the memory 130 .

실시 예에서, 호스트(300)에 포함된 호스트 프로세서(320) 및 호스트 메모리(330)는 호스트 내부 패브릭(310)을 통해 루트 컴플렉스(120)와 연결될 수 있다.In an embodiment, the host processor 320 and the host memory 330 included in the host 300 may be connected to the root complex 120 through the host internal fabric 310 .

실시 예에서, 호스트 프로세서(320)는 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치에 수행될 라이트 동작 또는 리드 동작을 제어할 수 있다. 여기서, NVMe 장치는 SSD(solid state drive)일 수 있다. 또, 호스트 프로세서(320)는 NVMe 장치에 수행될 라이트 동작 또는 리드 동작을 제어하는데 필요한 정보들을 호스트 메모리(330)에 저장할 수 있다. In an embodiment, the host processor 320 controls a write operation or a read operation to be performed on a non-volatile memory express (NVMe) device connected to the PCIe endpoints 150_1 and 150_2 or the legacy endpoints 160_1 and 160_2, respectively. can Here, the NVMe device may be a solid state drive (SSD). Also, the host processor 320 may store information necessary for controlling a write operation or a read operation to be performed on the NVMe device in the host memory 330 .

실시 예에서, NVMe 드라이버(340)는 중앙 처리 장치(110)와 연결되고, 호스트(300)가 PCIe 인터페이스 장치(100)를 통해 NVMe 장치를 제어할 수 있도록 할 수 있다.In an embodiment, the NVMe driver 340 may be connected to the central processing unit 110 and allow the host 300 to control the NVMe device through the PCIe interface device 100 .

도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.2 is a diagram for explaining packet transmission between components included in a PCIe interface device.

도 1 및 도 2를 참조하면, 도 2의 PCI 구성요소(PCI COMPONENT 1, 2)는 도 1의 루트 컴플렉스(120), 스위치(140), PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2) 중 어느 하나일 수 있다. 즉, 도 2의 PCI 구성요소(PCI COMPONENT 1, 2)는 링크(LINK)로 연결된 구성요소들 중 어느 하나일 수 있다. 여기서, 링크(LINK)는 적어도 하나 이상의 레인(LANE)으로 구성될 수 있다. 1 and 2, the PCI components (PCI COMPONENT 1, 2) of FIG. 2 are the root complex 120, switch 140, PCIe endpoints 150_1, 150_2 and legacy endpoints ( 160_1, 160_2). That is, the PCI components (PCI COMPONENTs 1 and 2) of FIG. 2 may be any one of components connected by a link (LINK). Here, the link LINK may include at least one or more lanes LANE.

실시 예에서, PCI 구성요소(PCI COMPONENT 1, 2)는 링크(LINK)를 통해 패킷(PACKET)을 송수신할 수 있다. 즉, PCI 구성요소(PCI COMPONENT 1, 2)는 각각 패킷(PACKET)을 송신하는 송신기(transmitter, TX) 또는 패킷(PACKET)을 수신하는 수신기(receiver, RX)의 기능을 수행할 수 있다. In an embodiment, the PCI components (PCI COMPONENT 1, 2) may transmit/receive a packet (PACKET) through a link (LINK). That is, the PCI components (PCI COMPONENT 1 and 2) may perform a function of a transmitter (TX) for transmitting a packet (PACKET) or a receiver (RX) for receiving a packet (PACKET), respectively.

실시 예에서, 패킷(PACKET)은 정보 전송 단위로, 선택적 TLP 접두사, 헤더 및 데이터 페이로드로 구성될 수 있다.In an embodiment, a packet (PACKET) is an information transmission unit, and may be composed of an optional TLP prefix, a header, and a data payload.

실시 예에서, 캐싱할 필요가 없는 패킷(PACKET)은 스누핑하지 않음으로써 레이턴시를 줄일 수 있다. 트랜잭션 간의 의존이 없는 경우, 오더링을 변경하여 패킷(PACKET) 동작 성능이 향상될 수 있다. 또, 아이디를 기초로 오더링을 변경하여, 패킷(PACKET) 동작 성능이 향상될 수 있다.In an embodiment, latency may be reduced by not snooping packets that do not need to be cached (PACKET). When there is no dependency between transactions, packet operation performance may be improved by changing the ordering. In addition, by changing the ordering based on the ID, packet (PACKET) operation performance may be improved.

도 3은 NVMe에서 커맨드의 프로세스 과정을 도시한 도면이다.3 is a diagram illustrating a process procedure of a command in NVMe.

도 1 및 도 3을 참조하면, 도 3은 도 1의 호스트(300)에 포함된 NVMe 드라이버(340) 및 호스트 메모리(330)를 통해 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치에 커맨드가 수행되는 과정을 도시한다. NVMe 장치는 NVMe 컨트롤러(500)를 포함할 수 있다. 도 3에서, 호스트 메모리(330)는 SUBMISSION QUEUE 및 COMPLETION QUEUE를 포함할 수 있다.1 and 3 , FIG. 3 shows PCIe endpoints 150_1 and 150_2 or legacy endpoints 160_1 through the NVMe driver 340 and host memory 330 included in the host 300 of FIG. 1 . 160_2) shows a process of executing a command to each NVMe (non-volatile memory express) device connected to each other. The NVMe device may include an NVMe controller 500 . 3 , the host memory 330 may include a SUBMISSION QUEUE and a COMPLETION QUEUE.

실시 예에서, NVMe 드라이버(340)는 NVMe 장치에 수행될 커맨드(COMMAND)를 SUBMISSION QUEUE로 전송할 수 있다. SUBMISSION QUEUE는 NVMe 드라이버(340)로부터 수신된 커맨드(COMMAND)를 큐잉할 수 있다. 예를 들면, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.In an embodiment, the NVMe driver 340 may transmit a command COMMAND to be executed to the NVMe device as a SUBMISSION QUEUE. The SUBMISSION QUEUE may queue a command COMMAND received from the NVMe driver 340 . For example, the host memory 330 may sequentially queue the received commands from HEAD to TAIL of SUBMISSION QUEUE.

커맨드(COMMAND)가 SUBMISSION QUEUE에 큐잉되면, NVMe 드라이버(340)는 NVMe 컨트롤러(500)에 SUBMISSION QUEUE TAIL DOORBELL 신호를 출력할 수 있다. NVMe 컨트롤러(500)는 SUBMISSION QUEUE TAIL DOORBELL 신호를 수신하여, 레지스터에 SUBMISSION QUEUE TAIL ENTRY POINTER를 저장할 수 있다. 여기서, SUBMISSION QUEUE TAIL ENTRY POINTER는 SUBMISSION QUEUE에 큐잉된 커맨드들 중 TAIL 부분에 큐잉된 커맨드를 나타내는 지시자일 수 있다. 즉, NVMe 컨트롤러(500)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드를 식별하기 위해, 레지스터에 SUBMISSION QUEUE TAIL ENTRY POINTER를 저장할 수 있다.When the command COMMAND is queued in the SUBMISSION QUEUE, the NVMe driver 340 may output a SUBMISSION QUEUE TAIL DOORBELL signal to the NVMe controller 500 . The NVMe controller 500 may receive the SUBMISSION QUEUE TAIL DOORBELL signal and store the SUBMISSION QUEUE TAIL ENTRY POINTER in a register. Here, the SUBMISSION QUEUE TAIL ENTRY POINTER may be an indicator indicating a command queued in the TAIL part among commands queued in the SUBMISSION QUEUE. That is, the NVMe controller 500 may store a SUBMISSION QUEUE TAIL ENTRY POINTER in a register to identify a new command output from the host memory 330 .

이 후, NVMe 컨트롤러(500)는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다. 즉, NVMe 컨트롤러(500)는 SUBMISSION QUEUE에 큐잉된 커맨드들을 수신할 수 있다. NVMe 컨트롤러(500)는 수신된 커맨드들에 대응하는 동작을 수행할 수 있다.Thereafter, the NVMe controller 500 may fetch a command from the host memory 330 . That is, the NVMe controller 500 may receive commands queued in SUBMISSION QUEUE. The NVMe controller 500 may perform an operation corresponding to the received commands.

실시 예에서, NVMe 컨트롤러(500)가 커맨드들에 대응하는 동작을 수행한 후, COMPLETION QUEUE ENTRY를 호스트 메모리(330)로 전송할 수 있다. COMPLETION QUEUE ENTRY는 NVMe 컨트롤러(500)가 가장 최근에 수행한 커맨드에 관한 정보를 포함할 수 있다. 호스트 메모리(330)는 수신된 COMPLETION QUEUE ENTRY를 COMPLETION QUEUE에 큐잉할 수 있다. 예를 들면, 호스트 메모리(330)는 수신된 COMPLETION QUEUE ENTRY를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.In an embodiment, after the NVMe controller 500 performs an operation corresponding to the commands, the COMPLETION QUEUE ENTRY may be transmitted to the host memory 330 . The COMPLETION QUEUE ENTRY may include information about a command most recently performed by the NVMe controller 500 . The host memory 330 may queue the received COMPLETION QUEUE ENTRY to the COMPLETION QUEUE. For example, the host memory 330 may sequentially queue the received COMPLETION QUEUE ENTRY from HEAD to TAIL of the SUBMISSION QUEUE.

이 후, NVMe 컨트롤러(500)는 INTERRUPT 신호를 NVMe 드라이버(340)에 출력할 수 있다. INTERRUPT 신호는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 신호일 수 있다. Thereafter, the NVMe controller 500 may output an INTERRUPT signal to the NVMe driver 340 . The INTERRUPT signal may be a signal informing the COMPLETION QUEUE that the COMPLETION QUEUE ENTRY has been queued.

INTERRUPT 신호를 수신하면, NVMe 드라이버(340)는 COMPLETION QUEUE의 COMPLETION QUEUE ENTRY를 기초로 동작을 수행할 수 있다. NVMe 드라이버(340)가 동작을 완료하면, NVMe 드라이버(340)는 COMPLETION QUEUE HEAD DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다. NVMe 컨트롤러(500)는 COMPLETION QUEUE HEAD DOORBELL 신호를 수신하여, 레지스터에 COMPLETION QUEUE HEAD ENTRY POINTER를 저장할 수 있다. 여기서, COMPLETION QUEUE HEAD ENTRY POINTER는 COMPLETION QUEUE에 큐잉된 엔트리들 중 HEAD 부분에 큐잉된 엔트리를 나타내는 지시자일 수 있다. 즉, NVMe 컨트롤러(500)는 동작이 완료된 커맨드를 식별하기 위해, 레지스터에 COMPLETION QUEUE HEAD ENTRY POINTER를 저장할 수 있다.Upon receiving the INTERRUPT signal, the NVMe driver 340 may perform an operation based on the COMPLETION QUEUE ENTRY of the COMPLETION QUEUE. When the NVMe driver 340 completes the operation, the NVMe driver 340 may output a COMPLETION QUEUE HEAD DOORBELL signal to the NVMe controller 500 . The NVMe controller 500 may receive the COMPLETION QUEUE HEAD DOORBELL signal and store the COMPLETION QUEUE HEAD ENTRY POINTER in a register. Here, the COMPLETION QUEUE HEAD ENTRY POINTER may be an indicator indicating an entry queued in the HEAD part among entries queued in the COMPLETION QUEUE. That is, the NVMe controller 500 may store the COMPLETION QUEUE HEAD ENTRY POINTER in a register in order to identify the command for which the operation is completed.

도 4는 도 3의 커맨드 프로세스의 과정을 설명하기 위한 도면이다.FIG. 4 is a diagram for explaining a process of the command process of FIG. 3 .

도 3 및 도 4를 참조하면, 도 4는 도 3의 NVMe 드라이버(340), 호스트 메모리(330), 및 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)의 동작을 도시한다.3 and 4, FIG. 4 shows the NVMe driver 340, host memory 330, and PCIe endpoints 150_1 and 150_2 or legacy endpoints 160_1 and 160_2 respectively connected to NVMe (160_2) of FIG. It shows the operation of a solid state drive (SSD), which is one of non-volatile memory express) devices.

도 4에서, 비 DMA 동작은 도 1의 중앙 처리 장치(110)를 통해 수행되는 동작을 의미하며, DMA 동작은 도 1의 중앙 처리 장치(110)의 개입 없이 독립적으로 수행되는 동작을 의미할 수 있다.In FIG. 4 , a non-DMA operation means an operation performed through the central processing unit 110 of FIG. 1 , and a DMA operation may mean an operation performed independently without intervention of the central processing unit 110 of FIG. 1 . have.

실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.In an embodiment, the NVMe driver 340 outputs a command COMMAND to be performed on the SSD to the host memory 330, and the host memory 330 sequentially queues the received command from HEAD to TAIL of the SUBMISSION QUEUE. have.

이 후, NVMe 드라이버(340)는 SQ DOORBELL 신호를 SSD에 출력할 수 있다. SQ DOORBELL 신호는 도 3의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.Thereafter, the NVMe driver 340 may output the SQ DOORBELL signal to the SSD. The SQ DOORBELL signal may be the same signal as the SUBMISSION QUEUE TAIL DOORBELL signal of FIG. 3 . That is, the NVMe driver 340 may output the SQ DOORBELL signal to the SSD so that a new command output from the host memory 330 is identified.

실시 예에서, SSD는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다. 즉, SSD는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다. SSD가 호스트 메모리(330)로부터 수신된 커맨드들에 대응하는 동작들을 완료하면, COMPLETION 신호를 호스트 메모리(330)에 출력할 수 있다.In an embodiment, the SSD may fetch a command from the host memory 330 . That is, the SSD may receive commands queued in the SUBMISSION QUEUE from the host memory 330 and perform operations corresponding to the received commands. When the SSD completes operations corresponding to commands received from the host memory 330 , it may output a COMPLETION signal to the host memory 330 .

이 후, NVMe 드라이버(340) 및 SSD는 도 1의 중앙 처리 장치(110)의 개입 없이 독립적으로 수행되는 DMA 동작을 수행할 수 있다.Thereafter, the NVMe driver 340 and the SSD may independently perform a DMA operation without intervention of the central processing unit 110 of FIG. 1 .

실시 예에서, SSD가 커맨드들에 대응하는 동작을 수행한 후, 호스트 메모리(330)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). 즉, SSD가 커맨드들에 대응하는 동작을 수행한 후, COMPLETION QUEUE ENTRY를 호스트 메모리(330)로 전송하고, 호스트 메모리(330)는 수신된 COMPLETION QUEUE ENTRY를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.In an embodiment, after the SSD performs an operation corresponding to the commands, the COMPLETION QUEUE of the host memory 330 may be updated (CQ UPDATE). That is, after the SSD performs an operation corresponding to the commands, the COMPLETION QUEUE ENTRY is transmitted to the host memory 330 , and the host memory 330 sequentially queues the received COMPLETION QUEUE ENTRY from HEAD to TAIL of the SUBMISSION QUEUE. can do.

이 후, SSD는 INTERRUPT 신호를 NVMe 드라이버(340)에 출력할 수 있다. INTERRUPT 신호는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 신호일 수 있다.Thereafter, the SSD may output an INTERRUPT signal to the NVMe driver 340 . The INTERRUPT signal may be a signal informing the COMPLETION QUEUE that the COMPLETION QUEUE ENTRY has been queued.

실시 예에서, NVMe 드라이버(340)가 COMPLETION QUEUE의 COMPLETION QUEUE ENTRY를 기초로 수행하는 동작이 완료되면, NVMe 드라이버(340)는 CQ DOORBELL 신호를 SSD에 출력할 수 있다. CQ DOORBELL 신호는 도 3의 COMPLETION QUEUE HEAD DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 동작이 완료된 커맨드가 식별되도록, CQ DOORBELL 신호를 SSD에 출력할 수 있다.In an embodiment, when the operation performed by the NVMe driver 340 based on the COMPLETION QUEUE ENTRY of the COMPLETION QUEUE is completed, the NVMe driver 340 may output the CQ DOORBELL signal to the SSD. The CQ DOORBELL signal may be the same signal as the COMPLETION QUEUE HEAD DOORBELL signal of FIG. 3 . That is, the NVMe driver 340 may output the CQ DOORBELL signal to the SSD so that the operation completed command is identified.

이 후, NVMe 드라이버(340)는 SSD에 수행될 새로운 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.Thereafter, the NVMe driver 340 outputs a new command COMMAND to be performed on the SSD to the host memory 330 , and outputs the SQ DOORBELL signal to the SSD so that the new command output from the host memory 330 is identified. can

위에서 설명된 동작들 중 DMA 동작을 제외한 동작들은 비 DMA 동작일 수 있다. 따라서, DMA 동작에 비해 비 DMA 동작이 더 많이 수행되므로, 비 DMA 동작에 소모되는 시간이 길 수 있다. 따라서, 본 발명에서, 비 DMA 동작에 소모되는 시간을 감소시키기 위해, LN(lightweight notification)을 통해 비 DMA 동작을 수행하는 방법이 제시된다.Operations other than the DMA operation among the operations described above may be non-DMA operations. Accordingly, since the non-DMA operation is performed more than the DMA operation, the time consumed for the non-DMA operation may be long. Accordingly, in the present invention, in order to reduce the time consumed for the non-DMA operation, a method for performing the non-DMA operation through lightweight notification (LN) is provided.

도 5는 LN을 통해 수행되는 커맨드 프로세스의 과정을 설명하기 도면이다.5 is a diagram for explaining a process of a command process performed through an LN.

도 4 및 도 5를 참조하면, 도 5는 LN(PCIe Lightweight Notification)을 기초로 한 도 4의 NVMe 드라이버(340), 호스트 메모리(330), 및 SSD(solid state drive)의 동작을 도시한다. 여기서, LN은 호스트 메모리(330)의 특정 주소를 나타내는 것으로, TLP(transaction layer packet)의 헤더에 위치할 수 있다. 또, LN은 도 1의 루트 컴플렉스(120)의 캐시 라인에 등록될 수 있다.4 and 5 , FIG. 5 illustrates the operation of the NVMe driver 340 , the host memory 330 , and the solid state drive (SSD) of FIG. 4 based on a PCIe Lightweight Notification (LN). Here, the LN indicates a specific address of the host memory 330 and may be located in a header of a transaction layer packet (TLP). Also, the LN may be registered in the cache line of the root complex 120 of FIG. 1 .

도 5에서, 비 DMA 동작은 도 1의 중앙 처리 장치(110)를 통해 수행되는 동작을 의미하며, DMA 동작은 도 1의 중앙 처리 장치(110)의 개입 없이 독립적으로 수행되는 동작을 의미할 수 있다.In FIG. 5 , a non-DMA operation means an operation performed through the central processing unit 110 of FIG. 1 , and a DMA operation may mean an operation performed independently without intervention of the central processing unit 110 of FIG. 1 . have.

실시 예에서, SSD는 호스트 메모리(330) 및 도 1의 루트 컴플렉스(120)의 캐시 라인에 LN을 등록할 수 있다. 이 때, LN은 호스트 메모리(330) 내 커맨드가 큐잉되는 위치를 나타낼 수 있다.In an embodiment, the SSD may register the LN in the cache line of the host memory 330 and the root complex 120 of FIG. 1 . In this case, the LN may indicate a position at which a command is queued in the host memory 330 .

호스트 메모리(330) 및 도 1의 루트 컴플렉스(120)의 캐시 라인에 LN이 등록되면, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.When the LN is registered in the cache line of the host memory 330 and the root complex 120 of FIG. 1 , the NVMe driver 340 outputs a command COMMAND to be performed on the SSD to the host memory 330, and the host memory ( 330) may sequentially queue the received command from HEAD to TAIL of the SUBMISSION QUEUE.

실시 예에서, 커맨드(COMMAND)가 호스트 메모리(330)에 큐잉되면, 호스트 메모리(330)는 LN MESSAGE를 SSD에 출력할 수 있다. LN MESSAGE는 호스트 메모리(330) 내 커맨드(COMMAND)가 큐잉된 위치를 나타낼 수 있다. 호스트 메모리(330)는 커맨드(COMMAND)가 큐잉된 위치가 변경될 때 LN MESSAGE를 통해 변경된 위치를 SSD에 출력할 수 있다.In an embodiment, when the command COMMAND is queued in the host memory 330 , the host memory 330 may output the LN MESSAGE to the SSD. The LN MESSAGE may indicate a position where the command COMMAND is queued in the host memory 330 . When the position where the command COMMAND is queued is changed, the host memory 330 may output the changed position to the SSD through LN MESSAGE.

실시 예에서, SSD는 커맨드를 프리페치할 수 있다(COMMAND PRE-FETCH). 예를 들면, SSD는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신할 수 있다. 즉, NVMe 드라이버(340)가 SQ DOORBELL 신호를 출력하기 전 SUBMISSION QUEUE에 큐잉된 커맨드가 업데이트될 수 있고, SQ DOORBELL 신호가 출력되기 전 호스트 메모리(330)가 LN MESSAGE를 SSD에 출력함으로써 SSD는 커맨드의 프리페치를 통해 미리 커맨드를 수행할 준비를 할 수 있다. 나아가, 커맨드 정보가 도 1의 루트 컴플렉스(120)의 캐시 라인에 저장될 수 있으므로, 커맨드를 빠르게 페치하여 SSD의 동작 속도를 빠르게 할 수 있다.In an embodiment, the SSD may prefetch a command (COMMAND PRE-FETCH). For example, the SSD may receive commands queued in SUBMISSION QUEUE from the host memory 330 . That is, before the NVMe driver 340 outputs the SQ DOORBELL signal, the command queued in the SUBMISSION QUEUE may be updated, and before the SQ DOORBELL signal is output, the host memory 330 outputs the LN MESSAGE to the SSD, so that the SSD provides the command You can prepare to execute the command in advance through the prefetch of . Furthermore, since the command information may be stored in the cache line of the root complex 120 of FIG. 1 , the operation speed of the SSD may be increased by fetching the command quickly.

이 후, NVMe 드라이버(340)는 SQ DOORBELL 신호를 SSD에 출력할 수 있다. SQ DOORBELL 신호는 도 3의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다. SSD는 SQ DOORBELL 신호를 기초로 프리페치된 커맨드에 대응하는 동작을 수행할 수 있다.Thereafter, the NVMe driver 340 may output the SQ DOORBELL signal to the SSD. The SQ DOORBELL signal may be the same signal as the SUBMISSION QUEUE TAIL DOORBELL signal of FIG. 3 . That is, the NVMe driver 340 may output the SQ DOORBELL signal to the SSD so that a new command output from the host memory 330 is identified. The SSD may perform an operation corresponding to the prefetched command based on the SQ DOORBELL signal.

이 때, SSD는 호스트 메모리(330)로부터 커맨드를 다시 페치할 수 있다(COMMAND FETCH). SSD가 커맨드를 페치할 때 LN 등록은 해제되고, SSD는 프리페치된 커맨드와 페치된 커맨드를 비교한 결과를 기초로 동작을 수행할 수 있다.At this time, the SSD may fetch the command from the host memory 330 again (COMMAND FETCH). When the SSD fetches a command, the LN registration is released, and the SSD may perform an operation based on a result of comparing the prefetched command with the fetched command.

예를 들면, 프리페치된 커맨드와 페치된 커맨드가 동일하면, SSD는 프리페치된 커맨드에 대응하는 동작을 계속 수행할 수 있다. 그러나, 프리페치된 커맨드와 페치된 커맨드가 다르면, SSD는 프리페치된 커맨드에 대응하는 동작을 중단하고 페치된 커맨드에 대응하는 동작을 수행할 수 있다. For example, if the prefetched command and the fetched command are the same, the SSD may continue to perform an operation corresponding to the prefetched command. However, if the prefetched command and the fetched command are different, the SSD may stop the operation corresponding to the prefetched command and perform the operation corresponding to the fetched command.

SSD가 호스트 메모리(330)로부터 수신된 커맨드들에 대응하는 동작들을 완료하면, COMPLETION 신호를 호스트 메모리(330)에 출력할 수 있다.When the SSD completes operations corresponding to commands received from the host memory 330 , it may output a COMPLETION signal to the host memory 330 .

실시 예에서, SSD가 호스트 메모리(330)로부터 커맨드를 다시 페치하는 동작 및 COMPLETION 신호를 호스트 메모리(330)에 출력하는 동작은 도 1의 중앙 처리 장치(110)를 통해 수행되는 비 DMA 동작일 수 있다. 위 비 DMA 동작들은 DMA 동작들 사이에서 수행되는 동작들이므로, 데이터 입출력 랜덤 성능이 향상될 수 있다. 입출력 랜덤 성능은 커맨드 당 특정 크기 데이터의 랜덤 성능을 의미할 수 있다.In an embodiment, the operation of the SSD re-fetching a command from the host memory 330 and outputting the COMPLETION signal to the host memory 330 may be non-DMA operations performed through the central processing unit 110 of FIG. 1 . have. Since the above non-DMA operations are performed between DMA operations, data input/output random performance may be improved. I/O random performance may mean random performance of data of a specific size per command.

이 후, SSD는 호스트 메모리(330) 및 도 1의 루트 컴플렉스(120)의 캐시 라인에 다음 커맨드가 큐잉되는 위치를 나타내는 LN을 등록할 수 있다. Thereafter, the SSD may register an LN indicating a position where the next command is queued in the cache line of the host memory 330 and the root complex 120 of FIG. 1 .

실시 예에서, SSD가 커맨드들에 대응하는 동작을 수행한 후, 호스트 메모리(330)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). CQ UPDATE 후 SSD는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 INTERRUPT 신호를 NVMe 드라이버(340)에 출력할 수 있다. NVMe 드라이버(340)가 INTERRUPT 신호에 응답하여 COMPLETION QUEUE의 COMPLETION QUEUE ENTRY를 기초로 수행하는 동작이 완료되면, NVMe 드라이버(340)는 CQ DOORBELL 신호를 SSD에 출력할 수 있다.In an embodiment, after the SSD performs an operation corresponding to the commands, the COMPLETION QUEUE of the host memory 330 may be updated (CQ UPDATE). After the CQ UPDATE, the SSD may output an INTERRUPT signal to the NVMe driver 340 informing the COMPLETION QUEUE that the COMPLETION QUEUE ENTRY has been queued. When the operation performed by the NVMe driver 340 based on the COMPLETION QUEUE ENTRY of the COMPLETION QUEUE in response to the INTERRUPT signal is completed, the NVMe driver 340 may output the CQ DOORBELL signal to the SSD.

실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하는 동작부터 다시 수행할 수 있다.In an embodiment, the NVMe driver 340 may start again from the operation of outputting the command COMMAND to be performed on the SSD to the host memory 330 .

결과적으로, 호스트 메모리(330)에 LN을 등록한 후 커맨드를 프리페치함으써 커맨드를 페치하는 시간을 단축시키고, SSD의 입출력 랜덤 성능을 개선할 수 있다.As a result, by pre-fetching the command after registering the LN in the host memory 330 , it is possible to shorten the command fetch time and improve the I/O random performance of the SSD.

도 6은 LN을 설명하기 위한 도면이다.6 is a diagram for explaining an LN.

도 6을 참조하면, 도 6은 TLP(transaction layer packet) 헤더의 일부를 도시한다.Referring to FIG. 6 , FIG. 6 shows a part of a transaction layer packet (TLP) header.

실시 예에서, TLP 헤더는 0~3BYTE로 구성될 수 있고, 각 BYTE는 0~8BIT로 구성될 수 있다. TLP 헤더의 0~3BYTE에는 다양한 정보가 포함될 수 있다.In an embodiment, the TLP header may consist of 0 to 3 BYTEs, and each BYTE may consist of 0 to 8 BITs. Various information may be included in 0~3BYTE of the TLP header.

실시 예에서, TLP 헤더의 0BYTE는 TLP 형식을 나타내는 FMT 정보 및 TLP의 타입을 나타내는 TYPE 정보를 포함할 수 있다. 예를 들면, 0BYTE의 7~5BIT에는 FMT 정보가 포함되고, 0BYTE의 4~0BIT에는 TYPE 정보가 포함될 수 있다.In an embodiment, 0BYTE of the TLP header may include FMT information indicating the TLP format and TYPE information indicating the type of the TLP. For example, FMT information may be included in 7~5BIT of 0BYTE, and TYPE information may be included in 4~0BIT of 0BYTE.

실시 예에서, TLP 헤더의 1BYTE의 1BIT에는 LN(PCIe Lightweight Notification) 정보가 포함될 수 있다. LN은 캐시 라인이 업데이트될 때, 하드웨어 메커니즘을 통해 엔드 포인트에 알림을 지원하는 프로토콜일수 있다. 1BYTE의 1BIT가 '1'인 경우, LN 정보는 동작의 완료를 나타낼 수 있다.In an embodiment, 1BIT of 1BYTE of the TLP header may include LN (PCIe Lightweight Notification) information. LN may be a protocol that supports notifying endpoints through a hardware mechanism when a cache line is updated. When 1BIT of 1BYTE is '1', LN information may indicate completion of an operation.

도 5를 참조하면, NVMe 드라이버(340)가 호스트 메모리(330)에 커맨드를 출력하기 전, 호스트 메모리(330)에 LN이 등록될 수 있다. 이 때, TLP 헤더의 1BYTE의 1BIT는 '1'로 설정될 수 있다. 즉, NVMe 드라이버(340)가 SQ DOORBELL 신호를 SSD에 출력하기 전 커맨드가 큐잉되는 위치를 LN 등록할 수 있으며, SSD가 LN MESSAGE를 수신하면, SSD는 호스트 메모리(330)에 큐잉된 커맨드를 프리페치할 수 있다. Referring to FIG. 5 , before the NVMe driver 340 outputs a command to the host memory 330 , an LN may be registered in the host memory 330 . In this case, 1BIT of 1BYTE of the TLP header may be set to '1'. That is, before the NVMe driver 340 outputs the SQ DOORBELL signal to the SSD, the position where the command is queued may be registered as LN, and when the SSD receives the LN MESSAGE, the SSD frees the command queued in the host memory 330 . can be fetched

이 후, NVMe 드라이버(340)가 SQ DOORBELL 신호를 SSD에 출력하면, SSD가 커맨드를 다시 페치할 때 TLP 헤더의 1BYTE의 1BIT는 '0'으로 설정되고, LN 등록이 해제될 수 있다.After that, when the NVMe driver 340 outputs the SQ DOORBELL signal to the SSD, when the SSD fetches the command again, 1BIT of 1BYTE of the TLP header is set to '0', and the LN registration may be released.

도 7은 LN 등록을 설명하기 위한 도면이다.7 is a diagram for explaining LN registration.

도 1 및 도 7을 참조하면, 도 7은 도 1의 중앙 처리 장치(110), 루트 컴플렉스(120), 스위치(140), PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2) 중 어느 하나에 연결된 NVMe DEVICE(150) 및 호스트(300)를 도시한다. NVMe DEVICE(150)는 SSD(solid state drive)일 수 있다.Referring to FIGS. 1 and 7 , FIG. 7 shows the central processing unit 110 , the root complex 120 , the switch 140 , the PCIe endpoints 150_1 and 150_2 and the legacy endpoints 160_1 and 160_2 of FIG. 1 . It shows an NVMe DEVICE 150 and a host 300 connected to either one. The NVMe DEVICE 150 may be a solid state drive (SSD).

실시 예에서, 호스트(300)가 NVMe DEVICE(150)에 커맨드를 전송하는 경우, 호스트(300)는 커맨드 정보를 호스트 메모리(도 1의 330)에 저장한 후, SQ DOORBELL 신호를 NVMe DEVICE(150)에 출력할 수 있다. 이 때, 호스트 메모리(도 1의 330)에 커맨드 정보가 저장되는 주소는 고정적이며, 본 발명에서, 이 주소는 NVMe DEVICE(150)의 요청에 의해 호스트(300) 및 도 1의 루트 컴플렉스(120)의 캐시 라인(CACHE LINE)에 LN(PCIe Lightweight Notification) 등록될 수 있다(LN REGISTER).In an embodiment, when the host 300 transmits a command to the NVMe DEVICE 150 , the host 300 stores the command information in the host memory ( 330 in FIG. 1 ) and then transmits the SQ DOORBELL signal to the NVMe DEVICE 150 . ) can be printed. At this time, the address at which the command information is stored in the host memory (330 in FIG. 1) is fixed, and in the present invention, this address is the host 300 and the root complex 120 of FIG. 1 at the request of the NVMe DEVICE 150 ) may be registered in the cache line (CACHE LINE) of LN (PCIe Lightweight Notification) (LN REGISTER).

실시 예에서, 호스트(300)가 NVMe DEVICE(150)에 커맨드를 전송하기 전, LN을 등록할 수 있다. LN이 등록되면, 호스트(300)가 커맨드 정보를 호스트 메모리(도 1의 330)에 저장함과 동시에 LN MESSAGE를 NVMe DEVICE(150)에 출력할 수 있다. 즉, 호스트(300)는 LN MESSAGE를 통해, 호스트 메모리(도 1의 330)에 커맨드 정보가 업데이트되었음을 NVMe DEVICE(150)에 알릴 수 있다. 이 후, 호스트(300)는 SQ DOORBELL 신호를 NVMe DEVICE(150)에 출력할 수 있다.In an embodiment, the host 300 may register the LN before transmitting the command to the NVMe DEVICE 150 . When the LN is registered, the host 300 may store the command information in the host memory ( 330 of FIG. 1 ) and output the LN MESSAGE to the NVMe DEVICE 150 at the same time. That is, the host 300 may notify the NVMe DEVICE 150 that the command information in the host memory ( 330 of FIG. 1 ) has been updated through the LN MESSAGE. Thereafter, the host 300 may output the SQ DOORBELL signal to the NVMe DEVICE 150 .

결과적으로, 호스트(300)가 SQ DOORBELL 신호를 NVMe DEVICE(150)에 출력하기 전 LN MESSAGE를 출력함으로써, NVMe DEVICE(150)는 새로운 커맨드의 발생을 미리 확인할 수 있다. As a result, by outputting the LN MESSAGE before the host 300 outputs the SQ DOORBELL signal to the NVMe DEVICE 150 , the NVMe DEVICE 150 may confirm the generation of a new command in advance.

도 8은 LN 등록 후 커맨드 프리페치 및 커맨드 페치를 설명하기 위한 도면이다.8 is a diagram for explaining command prefetch and command fetch after LN registration.

도 7 및 도 8을 참조하면, 도 8은 도 7에서 호스트(300)가 LN MESSAGE를 NVMe DEVICE(150)에 출력한 이후의 동작을 도시한다.7 and 8 , FIG. 8 illustrates an operation after the host 300 outputs the LN MESSAGE to the NVMe DEVICE 150 in FIG. 7 .

실시 예에서, NVMe DEVICE(150)는 SQ DOORBELL 신호를 수신하기 전, 호스트 메모리(도 1의 330)에 저장된 커맨드를 프리페치할 수 있다. 구체적으로, NVMe DEVICE(150)는 도 1의 루트 컴플렉스(120)의 캐시 라인(CACHE LINE)을 통해 커맨드를 프리페치할 수 있다. NVMe DEVICE(150)는 LN MESSAGE를 기초로 새로운 커맨드의 발생 여부를 확인하고, SQ DOORBELL 신호를 수신하기 전, 호스트 메모리(도 1의 330)에 저장된 커맨드를 프리페치할 수 있다.In an embodiment, the NVMe DEVICE 150 may prefetch a command stored in the host memory ( 330 of FIG. 1 ) before receiving the SQ DOORBELL signal. Specifically, the NVMe DEVICE 150 may prefetch a command through the cache line CACHE LINE of the root complex 120 of FIG. 1 . The NVMe DEVICE 150 may check whether a new command is generated based on the LN MESSAGE and prefetch the command stored in the host memory ( 330 of FIG. 1 ) before receiving the SQ DOORBELL signal.

실시 예에서, 호스트 메모리(도 1의 330)에 저장된 커맨드를 프리페치함으로써, 커맨드를 페치하는데 소모되는 시간이 감소될 수 있다. 따라서, 입출력 랜덤 성능이 개선될 수 있다. 입출력 랜덤 성능은 커맨드 당 특정 크기 데이터의 랜덤 성능을 의미할 수 있다.In an embodiment, by prefetching the command stored in the host memory ( 330 in FIG. 1 ), the time consumed for fetching the command may be reduced. Accordingly, input/output random performance may be improved. I/O random performance may mean random performance of data of a specific size per command.

또, 이 경우, NVMe DEVICE(150)는 SQ DOORBELL 신호를 수신한 후, 호스트 메모리(도 1의 330)에 저장된 커맨드를 다시 페치할 수 있다(COMMAND FETCH). Also, in this case, the NVMe DEVICE 150 may fetch the command stored in the host memory ( 330 in FIG. 1 ) again after receiving the SQ DOORBELL signal (COMMAND FETCH).

실시 예에서, 프리페치된 커맨드와 페치된 커맨드가 동일한 경우, NVMe DEVICE(150)는 프리페치하여 동작 중인 커맨드에 대응하는 동작을 계속하여 수행할 수 있다. 그러나, 프리페치된 커맨드와 페치된 커맨드가 상이한 경우, NVMe DEVICE(150)는 프리페치한 커맨드에 대응하는 동작을 중단하고, 새롭게 페치된 커맨드에 대응하는 동작을 수행할 수 있다.In an embodiment, when the prefetched command and the fetched command are the same, the NVMe DEVICE 150 may continue to perform an operation corresponding to the prefetched command in operation. However, when the prefetched command and the fetched command are different from each other, the NVMe DEVICE 150 may stop an operation corresponding to the prefetched command and perform an operation corresponding to the newly fetched command.

도 9는 저전력 상태의 종료 시 레이턴시를 설명하기 위한 도면이다.9 is a diagram for explaining latency when a low power state is terminated.

도 9를 참조하면, 도 9는 도 3의 NVMe 드라이버(340), 호스트 메모리(330), 스위치(도 1의 140)의 다운스트림 포트(DOWNSTREAM PORT) 및 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)의 동작을 도시한다. 여기서, 다운스트림 포트(DOWNSTREAM PORT)는 스위치(140)의 포트들 중 루트 컴플렉스(120)와 먼 포트일 수 있다. Referring to FIG. 9 , FIG. 9 shows the NVMe driver 340 of FIG. 3 , the host memory 330 , the downstream port (DOWNSTREAM PORT) of the switch ( 140 of FIG. 1 ) and the PCIe endpoints 150_1 and 150_2 or legacy An operation of a solid state drive (SSD), which is one of non-volatile memory express (NVMe) devices connected to the endpoints 160_1 and 160_2, respectively, is shown. Here, the downstream port (DOWNSTREAM PORT) may be a port far from the root complex 120 among ports of the switch 140 .

도 9에서, SSD는 초기에 L1.2 상태일 수 있다. L1.2 상태는 저전력 상태를 의미할 수 있다. 즉, SSD는 전력 소모를 방지하기 위해, L1.2 상태에 있을 수 있다.In FIG. 9 , the SSD may initially be in an L1.2 state. The L1.2 state may mean a low-power state. That is, the SSD may be in the L1.2 state to prevent power consumption.

나아가, 도 9에서, L0 상태는 전력 관리를 할 수 있는 상태로, 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태일 수 있다. 예를 들면, L0 상태에서, TLP(transaction layer packet) 및 DLLP(data link layer packet)가 송수신될 수 있다. SSD는 L1.2 상태에서 동작을 중단하였다가, L0 상태에서 다시 동작을 재개할 수 있다.Furthermore, in FIG. 9 , the L0 state is a state in which power management can be performed, and may be a state in which data and control packets can be normally transmitted and received. For example, in the L0 state, a transaction layer packet (TLP) and a data link layer packet (DLLP) may be transmitted/received. The SSD may stop operation in the L1.2 state and resume operation in the L0 state.

실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 큐잉할 수 있다. 이 후, NVMe 드라이버(340)는 새로운 커맨드가 큐잉되었음을 알리는 SQ DOORBELL 신호를 다운스트림 포트(DOWNSTREAM PORT)를 통해 SSD에 출력할 수 있다.In an embodiment, the NVMe driver 340 may output a command COMMAND to be performed on the SSD to the host memory 330 , and the host memory 330 may queue the received command. Thereafter, the NVMe driver 340 may output an SQ DOORBELL signal indicating that a new command has been queued to the SSD through a downstream port (DOWNSTREAM PORT).

그러나, SSD는 초기에 L1.2 상태이므로, WAKE UP 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다. WAKE UP 신호에 따라, SSD는 L1.2 상태에서 L0 상태로 변경되고(LOW POWER EXIT), SSD는 다시 동작을 수행할 수 있는 상태가 될 수 있다. 이 때, SSD의 상태가 L1.2 상태에서 L0 상태로 변경될 때까지 레이턴시(LATENCY)가 발생될 수 있다.However, since the SSD is initially in the L1.2 state, the WAKE UP signal may be output to the SSD from the downstream port (DOWNSTREAM PORT). According to the WAKE UP signal, the SSD may be changed from the L1.2 state to the L0 state (LOW POWER EXIT), and the SSD may be in a state capable of performing an operation again. At this time, latency may be generated until the state of the SSD is changed from the L1.2 state to the L0 state.

SSD가 동작을 수행할 수 있는 상태가 되면, NVMe 드라이버(340)로부터 수신된 SQ DOORBELL 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다.When the SSD is in a state capable of performing an operation, the SQ DOORBELL signal received from the NVMe driver 340 may be output to the SSD from a downstream port (DOWNSTREAM PORT).

이 후, L0 상태에서, SSD는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다. 즉, SSD는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다. Thereafter, in the L0 state, the SSD may fetch a command from the host memory 330 . That is, the SSD may receive commands queued in the SUBMISSION QUEUE from the host memory 330 and perform operations corresponding to the received commands.

본 발명에서, SSD의 상태가 L1.2 상태에서 L0 상태로 변경될 때까지 레이턴시(LATENCY)가 발생되는 것을 최소화하기 위해, 커맨드가 저장되는 위치를 LN(PCIe Lightweight Notification) 등록함으로써 저전력 상태를 미리 종료하는 방법이 제시된다.In the present invention, in order to minimize the occurrence of latency until the state of the SSD is changed from the L1.2 state to the L0 state, the low-power state is registered in advance by registering the location where the command is stored with LN (PCIe Lightweight Notification). A method of terminating is provided.

도 10은 LN 등록을 통한 저전력 상태의 종료를 설명하기 위한 도면이다.10 is a diagram for explaining termination of a low power state through LN registration.

도 10을 참조하면, 도 10은 도 3의 NVMe 드라이버(340), 호스트 메모리(330), 스위치(도 1의 140)의 다운스트림 포트(DOWNSTREAM PORT) 및 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)의 동작을 도시한다. 여기서, 다운스트림 포트(DOWNSTREAM PORT)는 스위치(140)의 포트들 중 루트 컴플렉스(120)와 먼 포트일 수 있다. Referring to FIG. 10 , FIG. 10 shows the NVMe driver 340 of FIG. 3 , the host memory 330 , the downstream port (DOWNSTREAM PORT) of the switch (140 of FIG. 1 ) and the PCIe endpoints 150_1 and 150_2 or legacy An operation of a solid state drive (SSD), which is one of non-volatile memory express (NVMe) devices connected to the endpoints 160_1 and 160_2, respectively, is shown. Here, the downstream port (DOWNSTREAM PORT) may be a port far from the root complex 120 among ports of the switch 140 .

도 10에서, SSD는 초기에 L1.2 상태일 수 있다. L1.2 상태는 저전력 상태를 의미할 수 있다. 즉, SSD는 전력 소모를 방지하기 위해, L1.2 상태에 있을 수 있다.In FIG. 10 , the SSD may initially be in an L1.2 state. The L1.2 state may mean a low-power state. That is, the SSD may be in the L1.2 state to prevent power consumption.

나아가, 도 10에서, L0 상태는 전력 관리를 할 수 있는 상태로, 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태일 수 있다. 예를 들면, L0 상태에서, TLP(transaction layer packet) 및 DLLP(data link layer packet)가 송수신될 수 있다. SSD는 L1.2 상태에서 동작을 중단하였다가, L0 상태에서 다시 동작을 재개할 수 있다.Furthermore, in FIG. 10 , the L0 state is a state in which power management can be performed, and may be a state in which data and control packets can be normally transmitted and received. For example, in the L0 state, a transaction layer packet (TLP) and a data link layer packet (DLLP) may be transmitted/received. The SSD may stop operation in the L1.2 state and resume operation in the L0 state.

그러나, 도 9와 달리 도 10에서, 호스트 메모리(330)에 LN(PCIe Lightweight Notification) 등록을 함으로써, SSD의 상태가 L1.2 상태에서 L0 상태로 변경될 수 있다. However, unlike in FIG. 9 , in FIG. 10 , the state of the SSD may be changed from the L1.2 state to the L0 state by registering a PCIe Lightweight Notification (LN) in the host memory 330 .

실시 예에서, NVMe 드라이버(340)가 NVMe DEVICE(150)에 커맨드를 전송하기 전, L0 상태에서 호스트 메모리(330)에 LN이 등록될 수 있다(LN REGISTER). 이 때, LN은 호스트 메모리(330)에 커맨드 정보가 저장되는 주소를 나타낼 수 있다.In an embodiment, before the NVMe driver 340 transmits a command to the NVMe DEVICE 150 , the LN may be registered in the host memory 330 in the L0 state (LN REGISTER). In this case, LN may indicate an address at which command information is stored in the host memory 330 .

LN이 등록되면, L1.2 상태에서 NVMe 드라이버(340)가 커맨드 정보를 호스트 메모리(330)에 저장함과 동시에 호스트 메모리(330)로부터 LN MESSAGE가 다운스트림 포트(DOWNSTREAM PORT)에 출력될 수 있다. 즉, 호스트 메모리(330)에 새로운 커맨드가 큐잉되었음을 다운스트림 포트(DOWNSTREAM PORT)에 알리기 위한 LN MESSAGE가 출력될 수 있다. When the LN is registered, the NVMe driver 340 may store command information in the host memory 330 in the L1.2 state and simultaneously output the LN MESSAGE from the host memory 330 to a downstream port (DOWNSTREAM PORT). That is, an LN MESSAGE for notifying a downstream port (DOWNSTREAM PORT) that a new command is queued in the host memory 330 may be output.

실시 예에서, LN MESSAGE를 기초로 WAKE UP 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다. WAKE UP 신호에 따라, SSD는 L1.2 상태에서 L0 상태로 변경되고(LOW POWER EXIT), SSD는 다시 동작을 수행할 수 있는 상태가 될 수 있다. In an embodiment, a WAKE UP signal may be output to the SSD from a downstream port (DOWNSTREAM PORT) based on the LN MESSAGE. According to the WAKE UP signal, the SSD may be changed from the L1.2 state to the L0 state (LOW POWER EXIT), and the SSD may be in a state capable of performing an operation again.

이 때, SQ DOORBELL 신호가 출력되기 전 LN MESSAGE를 기초로 WAKE UP 신호가 출력되기 때문에, 도 9에 비해 L1.2 상태에서 L0 상태로 변경되는 시간이 단축될 수 있다. At this time, since the WAKE UP signal is output based on the LN MESSAGE before the SQ DOORBELL signal is output, the time for changing from the L1.2 state to the L0 state can be shortened compared to FIG. 9 .

이 후, SSD가 동작을 수행할 수 있는 상태가 되면, NVMe 드라이버(340)로부터 수신된 SQ DOORBELL 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다. L0 상태에서, SSD는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다.Thereafter, when the SSD is in a state capable of performing an operation, the SQ DOORBELL signal received from the NVMe driver 340 may be output to the SSD from a downstream port (DOWNSTREAM PORT). In the L0 state, the SSD may fetch a command from the host memory 330 .

도 11은 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.11 is a diagram for explaining an operation of a PCIe interface system according to an embodiment of the present invention.

도 11을 참조하면, S1101 단계에서, 호스트는 LN(PCIe Lightweight Notification) 등록할 수 있다. LN은 호스트에 포함된 호스트 메모리에 커맨드 정보가 저장되는 주소를 나타낼 수 있다.Referring to FIG. 11 , in step S1101, the host may register for PCIe Lightweight Notification (LN). The LN may indicate an address at which command information is stored in a host memory included in the host.

S1103 단계에서, 호스트는 SSD에 수행될 커맨드를 저장할 수 있다. 예를 들면, 호스트는 호스트 메모리의 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.In step S1103 , the host may store a command to be executed in the SSD. For example, the host may queue sequentially from HEAD to TAIL of SUBMISSION QUEUE in the host memory.

S1105 단계에서, 호스트는 SSD에 LN MESSAGE를 전송할 수 있다. 즉, 호스트 메모리에 새로운 커맨드가 큐잉된 위치를 나타낼 수 있다. 즉, 호스트는 커맨드가 큐잉된 위치가 변경될 때 LN MESSAGE를 통해 변경된 위치를 SSD에 출력할 수 있다.In step S1105 , the host may transmit an LN MESSAGE to the SSD. That is, it may indicate a location where a new command is queued in the host memory. That is, when the command queued position is changed, the host may output the changed position to the SSD through LN MESSAGE.

S1107 단계에서, SSD는 호스트 메모리에 큐잉된 커맨드를 프리페치할 수 있다. 즉, SSD는 LN MESSAGE를 수신하면, 커맨드의 프리페치를 통해 미리 커맨드를 수행할 준비를 할 수 있다.In step S1107 , the SSD may prefetch the command queued in the host memory. That is, upon receiving the LN MESSAGE, the SSD may prepare to execute the command in advance through prefetching of the command.

S1109 단계에서, 호스트는 SQ DOORBELL 신호를 SSD에 전송할 수 있다. 즉, 호스트는 호스트 메모리로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다. SSD는 SQ DOORBELL 신호를 기초로 프리페치된 커맨드에 대응하는 동작을 수행할 수 있다.In step S1109, the host may transmit the SQ DOORBELL signal to the SSD. That is, the host may output the SQ DOORBELL signal to the SSD so that a new command output from the host memory is identified. The SSD may perform an operation corresponding to the prefetched command based on the SQ DOORBELL signal.

S1111 단계에서, SSD는 호스트 메모리에 큐잉된 커맨드를 다시 페치할 수 있다. 예를 들면, SSD가 프리페치된 커맨드에 대응하는 동작을 수행 중에 호스트 메모리에 큐잉된 커맨드를 다시 페치할 수 있다. SSD는 프리페치된 커맨드와 다시 페치된 커맨드를 비교한 결과를 기초로 동작을 수행할 수 있다.In step S1111 , the SSD may fetch the command queued in the host memory again. For example, while the SSD performs an operation corresponding to the prefetched command, the command queued in the host memory may be fetched again. The SSD may perform an operation based on a result of comparing the prefetched command with the refetched command.

도 12는 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.12 is a diagram for explaining an operation of a PCIe interface system according to an embodiment of the present invention.

도 11 및 도 12를 참조하면, 도 12는 도 11의 S1111 단계 이후의 단계들을 도시한다.11 and 12 , FIG. 12 shows steps after step S1111 of FIG. 11 .

S1201 단계에서, SSD는 프리페치된 커맨드와 페치된 커맨드가 동일한지를 판단할 수 있다. 즉, SSD는 프리페치된 커맨드들에 대응하는 동작을 수행 중에 커맨드를 다시 페치하고, 프리페치된 커맨드와 페치된 커맨드를 비교할 수 있다.In step S1201 , the SSD may determine whether the prefetched command and the fetched command are the same. That is, the SSD may fetch a command again while performing an operation corresponding to the prefetched commands, and compare the prefetched command with the fetched command.

프리페치된 커맨드와 페치된 커맨드가 동일하면(Y), S1203 단계로 진행하여, SSD는 진행중인 커맨드에 대응하는 동작을 이어서 수행할 수 있다.If the prefetched command and the fetched command are the same (Y), the process proceeds to step S1203, and the SSD may continuously perform an operation corresponding to the ongoing command.

그러나, 프리페치된 커맨드와 페치된 커맨드가 상이하면(N), S1205 단계로 진행하여, SSD는 진행중인 커맨드에 대응하는 동작을 중단하고 새롭게 페치된 커맨드에 대응하는 동작을 수행할 수 있다.However, if the pre-fetched command and the fetched command are different (N), proceeding to step S1205, the SSD may stop an operation corresponding to the ongoing command and perform an operation corresponding to the newly fetched command.

도 13은 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.13 is a diagram for explaining an operation of a PCIe interface system according to an embodiment of the present invention.

도 13을 참조하면, S1301 단계에서, 호스트는 LN(PCIe Lightweight Notification) 등록할 수 있다. LN은 호스트에 포함된 호스트 메모리에 커맨드 정보가 저장되는 주소를 나타낼 수 있다. 이 때, SSD는 L0 상태이고, L0 상태는 전력 관리를 할 수 있는 상태로, 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태일 수 있다.Referring to FIG. 13 , in step S1301, the host may register for PCIe Lightweight Notification (LN). The LN may indicate an address at which command information is stored in a host memory included in the host. In this case, the SSD is in an L0 state, and the L0 state is a state in which power management can be performed, and may be a state in which data and control packets can be transmitted and received normally.

S1303 단계에서, 호스트는 SSD에 수행될 커맨드를 저장할 수 있다. 예를 들면, 호스트는 호스트 메모리의 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다. 이 때, SSD는 저전력 상태인 L1.2 상태일 수 있다.In step S1303 , the host may store a command to be executed in the SSD. For example, the host may queue sequentially from HEAD to TAIL of SUBMISSION QUEUE in the host memory. At this time, the SSD may be in the L1.2 state, which is a low power state.

S1305 단계에서, 호스트는 SSD에 LN MESSAGE를 다운스트림 포트에 전송할 수 있다. 즉, 호스트 메모리에 새로운 커맨드가 큐잉되었음을 다운스트림 포트에 알리기 위한 LN MESSAGE가 출력될 수 있다. 여기서, 다운스트림 포트는 PCIe 인터페이스 장치에 포함된 구성들 중 루트 컴플렉스와 먼 스위치의 포트일 수 있다.In step S1305, the host may send the LN MESSAGE to the SSD to the downstream port. That is, LN MESSAGE for notifying the downstream port that a new command is queued in the host memory may be output. Here, the downstream port may be a port of a switch far from the root complex among components included in the PCIe interface device.

S1307 단계에서, 다운스트림 포트로부터 출력된 WAKE UP 신호가 SSD에 전송될 수 있다. 즉, SSD의 상태를 L1.2 상태에서 L0 상태로, 즉 동작을 수행할 수 있는 상태로 변경하기 위해, 다운스트림 포트로부터 WAKE UP 신호가 출력될 수 있다. WAKE UP 신호에 따라, SSD는 L1.2 상태에서 L0 상태로 변경되고(LOW POWER EXIT), SSD는 다시 동작을 수행할 수 있는 상태가 될 수 있다.In step S1307 , the WAKE UP signal output from the downstream port may be transmitted to the SSD. That is, in order to change the state of the SSD from the L1.2 state to the L0 state, that is, to a state in which an operation can be performed, a WAKE UP signal may be output from the downstream port. According to the WAKE UP signal, the SSD may be changed from the L1.2 state to the L0 state (LOW POWER EXIT), and the SSD may be in a state capable of performing an operation again.

S1309 단계에서, 호스트는 다운스트림 포트를 통해 SQ DOORBELL 신호를 SSD로 전송할 수 있다. 즉, SSD가 동작을 수행할 수 있는 상태가 되면, 호스트 메모리로부터 출력되는 새로운 커맨드가 식별되도록, 호스트는 SQ DOORBELL 신호를 SSD에 출력할 수 있다. In step S1309, the host may transmit the SQ DOORBELL signal to the SSD through the downstream port. That is, when the SSD is in a state capable of performing an operation, the host may output the SQ DOORBELL signal to the SSD so that a new command output from the host memory is identified.

S1311 단계에서, SSD는 호스트 메모리에 큐잉된 커맨드를 페치할 수 있다. SSD는 커맨드를 페치하고, 페치된 커맨드에 대응하는 동작을 수행할 수 있다.In step S1311 , the SSD may fetch a command queued in the host memory. The SSD may fetch a command and perform an operation corresponding to the fetched command.

100: PCIe 인터페이스 장치
300: 호스트
100: PCIe interface device
300: host

Claims (20)

PCIe(peripheral component interconnect Express) 인터페이스 장치, 호스트 및 상기 PCIe 인터페이스 장치를 통해 상기 호스트에 연결되는 NVMe(non-volatile memory express) 장치를 포함하는 PCIe 인터페이스 시스템에 있어서,
상기 호스트는:
상기 NVMe 장치에 수행될 커맨드 및 상기 NVMe 장치에 수행을 완료한 커맨드에 대한 정보를 저장하는 호스트 메모리; 및
상기 NVMe 장치에 수행될 커맨드를 상기 호스트 메모리에 전송하고, 상기 호스트 메모리에 상기 NVMe 장치에 수행될 커맨드가 저장되었음을 알리는 SQ DOORBELL 신호를 상기 NVMe 장치에 출력하는 NVMe 드라이버;를 포함하고,
상기 NVMe 장치는 상기 NVMe 장치에 수행될 커맨드가 저장되는 위치를 나타내는 LN(PCIe lightweight notification) 등록을 상기 호스트 메모리에 요청하는 PCIe 인터페이스 시스템.
A PCIe interface system comprising a peripheral component interconnect Express (PCIe) interface device, a host and a non-volatile memory express (NVMe) device connected to the host through the PCIe interface device,
The host is:
a host memory configured to store information about a command to be executed on the NVMe device and a command that has been completed on the NVMe device; and
an NVMe driver that transmits a command to be executed to the NVMe device to the host memory, and outputs an SQ DOORBELL signal to the NVMe device indicating that a command to be executed on the NVMe device is stored in the host memory;
The NVMe device is a PCIe interface system that requests the host memory to register a PCIe lightweight notification (LN) indicating a location where a command to be executed in the NVMe device is stored.
제 1항에 있어서, 상기 호스트 메모리는,
상기 LN 등록 후 상기 NVMe 드라이버로부터 수신된 커맨드를 서브미션 큐에 큐잉하는 PCIe 인터페이스 시스템.
The method of claim 1, wherein the host memory comprises:
A PCIe interface system for queuing a command received from the NVMe driver in a submission queue after the LN registration.
제 1항에 있어서, 상기 호스트 메모리는,
상기 NVMe 장치에 수행될 커맨드가 저장되었음을 나타내는 LN 메시지를 상기 NVMe 장치에 출력하는 PCIe 인터페이스 시스템.
The method of claim 1, wherein the host memory comprises:
A PCIe interface system for outputting, to the NVMe device, an LN message indicating that a command to be executed is stored in the NVMe device.
제 3항에 있어서, 상기 NVMe 장치는,
상기 LN 메시지를 수신한 후, 상기 NVMe 장치에 수행될 커맨드를 프리페치하고, 상기 프리페치된 커맨드에 대응하는 동작을 수행하는 PCIe 인터페이스 시스템.
The method of claim 3, wherein the NVMe device comprises:
After receiving the LN message, prefetch a command to be executed in the NVMe device, and perform an operation corresponding to the prefetched command.
제 4항에 있어서, 상기 NVMe 장치는,
상기 프리페치된 커맨드에 대응하는 동작을 수행 중에, 상기 NVMe 드라이버로부터 상기 SQ DOORBELL 신호를 수신하면, 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 PCIe 인터페이스 시스템.
5. The method of claim 4, wherein the NVMe device,
and when receiving the SQ DOORBELL signal from the NVMe driver while performing an operation corresponding to the prefetched command, fetches a command to be executed from the host memory to the NVMe device.
제 5항에 있어서, 상기 NVMe 장치는,
상기 프리페치된 커맨드 및 상기 페치된 커맨드를 비교한 결과를 기초로 동작을 수행하는 PCIe 인터페이스 시스템.
The method of claim 5, wherein the NVMe device comprises:
A PCIe interface system that performs an operation based on a result of comparing the prefetched command and the fetched command.
제 6항에 있어서, 상기 NVMe 장치는,
상기 프리페치된 커맨드 및 상기 페치된 커맨드가 동일하면, 상기 프리페치된 커맨드에 대응하는 동작을 이어서 수행하는 PCIe 인터페이스 시스템.
The method of claim 6, wherein the NVMe device,
If the prefetched command and the fetched command are the same, an operation corresponding to the prefetched command is continuously performed.
제 6항에 있어서, 상기 NVMe 장치는,
상기 프리페치된 커맨드 및 상기 페치된 커맨드가 상이하면, 상기 프리페치된 커맨드에 대응하는 동작을 중단하고, 상기 페치된 커맨드에 대응하는 동작을 수행하는 PCIe 인터페이스 시스템.
The method of claim 6, wherein the NVMe device,
When the prefetched command and the fetched command are different from each other, an operation corresponding to the prefetched command is stopped and an operation corresponding to the fetched command is performed.
제 1항에 있어서,
상기 NVMe 장치가 저전력 상태이면,
상기 호스트 메모리는 상기 NVMe 장치에 수행될 커맨드가 저장되었음을 나타내는 LN 메시지를 상기 PCIe 인터페이스 장치에 포함된 스위치의 다운스트림 포트로 전송하는 PCIe 인터페이스 시스템.
The method of claim 1,
If the NVMe device is in a low power state,
The host memory transmits an LN message indicating that a command to be executed in the NVMe device is stored to a downstream port of a switch included in the PCIe interface device.
제 9항에 있어서,
상기 스위치는 상기 LN 메시지를 기초로 상기 저전력 상태를 종료하기 위한 웨이크 업 신호를 상기 NVMe 장치로 전송하고,
상기 NVMe 장치는 상기 웨이크 업 신호에 응답하여 저전력 상태에서 동작을 수행할 수 있는 상태로 변경되는 PCIe 인터페이스 시스템.
10. The method of claim 9,
the switch transmits a wake-up signal for terminating the low power state to the NVMe device based on the LN message;
wherein the NVMe device is changed from a low power state to a state capable of performing an operation in response to the wake-up signal.
제 10항에 있어서,
상기 NVMe 드라이버는 상기 SQ DOORBELL 신호를 상기 다운스트림 포트를 통해 상기 NVMe 장치에 출력하고,
상기 NVMe 장치는 상기 NVMe 드라이버로부터 상기 SQ DOORBELL 신호를 수신하면, 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 PCIe 인터페이스 시스템.
11. The method of claim 10,
the NVMe driver outputs the SQ DOORBELL signal to the NVMe device through the downstream port;
When the NVMe device receives the SQ DOORBELL signal from the NVMe driver, the NVMe device fetches a command to be executed on the NVMe device from the host memory.
PCIe(peripheral component interconnect Express) 인터페이스 장치, 호스트 및 상기 PCIe 인터페이스 장치를 통해 상기 호스트에 연결되는 NVMe(non-volatile memory express) 장치를 포함하는 PCIe 인터페이스 시스템의 동작 방법에 있어서,
상기 NVMe 장치에 수행될 커맨드가 저장되는 위치를 나타내는 LN(PCIe lightweight notification) 등록을 상기 호스트에 포함된 호스트 메모리에 요청하는 단계;
상기 LN을 등록하는 단계; 및
상기 NVMe 장치에 수행될 커맨드를 상기 호스트에 포함된 호스트 메모리에 저장하는 단계;를 포함하는 PCIe 인터페이스 시스템의 동작 방법.
A method of operating a PCIe interface system comprising a peripheral component interconnect Express (PCIe) interface device, a host, and a non-volatile memory express (NVMe) device connected to the host through the PCIe interface device, the method comprising:
requesting registration of a PCIe lightweight notification (LN) indicating a location where a command to be executed in the NVMe device is stored, from a host memory included in the host;
registering the LN; and
and storing a command to be performed on the NVMe device in a host memory included in the host.
제 12항에 있어서, 상기 호스트 메모리에 저장하는 단계에서,
상기 LN 등록 후 상기 NVMe 장치에 수행될 커맨드를 상기 호스트 메모리에 포함된 서브미션 큐에 큐잉하는 PCIe 인터페이스 시스템의 동작 방법.
The method of claim 12, wherein in the storing in the host memory,
A method of operating a PCIe interface system for queuing a command to be performed on the NVMe device after the LN registration in a submission queue included in the host memory.
제 12항에 있어서,
상기 NVMe 장치에 수행될 커맨드가 저장되었음을 나타내는 LN 메시지를 상기 NVMe 장치에 출력하는 단계를 더 포함하는 PCIe 인터페이스 시스템의 동작 방법.
13. The method of claim 12,
and outputting an LN message indicating that a command to be executed is stored in the NVMe device to the NVMe device.
제 14항에 있어서,
상기 NVMe 장치에 수행될 커맨드를 프리페치하는 단계; 및
상기 프리페치된 커맨드에 대응하는 동작을 수행하는 단계;를 더 포함하는 PCIe 인터페이스 시스템의 동작 방법.
15. The method of claim 14,
prefetching a command to be executed on the NVMe device; and
The method of operating a PCIe interface system further comprising; performing an operation corresponding to the prefetched command.
제 15항에 있어서,
상기 프리페치된 커맨드에 대응하는 동작 수행 중에, 상기 호스트 메모리에 상기 NVMe 장치에 수행될 커맨드가 저장되었음을 알리는 SQ DOORBELL 신호가 출력되면, 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 단계를 더 포함하는 PCIe 인터페이스 시스템의 동작 방법.
16. The method of claim 15,
fetching a command to be executed from the host memory when an SQ DOORBELL signal indicating that a command to be executed by the NVMe device is stored in the host memory while performing an operation corresponding to the prefetched command; The method of operation of the PCIe interface system further comprising.
제 16항에 있어서, 상기 프리페치된 커맨드에 대응하는 동작을 수행하는 단계에서,
상기 프리페치된 커맨드 및 상기 페치된 커맨드가 동일하면, 상기 프리페치된 커맨드에 대응하는 동작을 이어서 수행하는 포함하는 PCIe 인터페이스 시스템의 동작 방법.
The method of claim 16, wherein in the step of performing an operation corresponding to the prefetched command,
and if the prefetched command and the fetched command are the same, an operation corresponding to the prefetched command is subsequently performed.
제 16항에 있어서, 상기 프리페치된 커맨드에 대응하는 동작을 수행하는 단계에서,
상기 프리페치된 커맨드 및 상기 페치된 커맨드가 상이하면, 상기 프리페치된 커맨드에 대응하는 동작을 중단하고, 상기 페치된 커맨드에 대응하는 동작을 수행하는 포함하는 PCIe 인터페이스 시스템의 동작 방법.
The method of claim 16, wherein in the step of performing an operation corresponding to the prefetched command,
and if the prefetched command and the fetched command are different from each other, stopping an operation corresponding to the prefetched command and performing an operation corresponding to the fetched command.
제 12항에 있어서,
상기 NVMe 장치가 저전력 상태이면,
상기 NVMe 장치에 수행될 커맨드가 상기 호스트 메모리에 저장되었음을 나타내는 LN 메시지를 상기 PCIe 인터페이스 장치에 포함된 스위치의 다운스트림 포트로 전송하는 단계; 및
상기 스위치는 상기 LN 메시지를 기초로 상기 저전력 상태를 종료하기 위한 웨이크 업 신호를 상기 NVMe 장치로 전송하는 단계;를 포함하는 PCIe 인터페이스 시스템의 동작 방법.
13. The method of claim 12,
If the NVMe device is in a low power state,
transmitting an LN message indicating that a command to be performed on the NVMe device is stored in the host memory to a downstream port of a switch included in the PCIe interface device; and
and transmitting, by the switch, a wake-up signal for terminating the low power state to the NVMe device based on the LN message.
제 19항에 있어서,
상기 NVMe 장치에 수행될 커맨드가 저장되었음을 알리는 SQ DOORBELL 신호를 상기 다운스트림 포트를 통해 상기 NVMe 장치에 출력하는 단계; 및
상기 SQ DOORBELL 신호를 기초로 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 단계;를 PCIe 인터페이스 시스템의 동작 방법.
20. The method of claim 19,
outputting an SQ DOORBELL signal indicating that a command to be executed is stored in the NVMe device through the downstream port to the NVMe device; and
fetching a command to be executed in the NVMe device from the host memory based on the SQ DOORBELL signal.
KR1020210048080A 2021-04-13 2021-04-13 Peripheral component interconnect express interface system and operating method thereof KR102509491B1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210048080A KR102509491B1 (en) 2021-04-13 2021-04-13 Peripheral component interconnect express interface system and operating method thereof
US17/522,810 US11789658B2 (en) 2021-04-13 2021-11-09 Peripheral component interconnect express (PCIe) interface system and method of operating the same
CN202210005338.0A CN115248795A (en) 2021-04-13 2022-01-04 Peripheral Component Interconnect Express (PCIE) interface system and method of operating the same
TW111103656A TW202240416A (en) 2021-04-13 2022-01-27 Peripheral component interconnect express (pcie) interface system and method of operating the same
US17/707,744 US20220327074A1 (en) 2021-04-13 2022-03-29 PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210048080A KR102509491B1 (en) 2021-04-13 2021-04-13 Peripheral component interconnect express interface system and operating method thereof

Publications (2)

Publication Number Publication Date
KR20220141679A true KR20220141679A (en) 2022-10-20
KR102509491B1 KR102509491B1 (en) 2023-03-14

Family

ID=83804768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210048080A KR102509491B1 (en) 2021-04-13 2021-04-13 Peripheral component interconnect express interface system and operating method thereof

Country Status (1)

Country Link
KR (1) KR102509491B1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140113439A (en) * 2013-03-15 2014-09-24 인텔 코포레이션 Apparatus, system and method for providing access to a device function
US20160188510A1 (en) * 2014-12-26 2016-06-30 Samsung Electronics Co., Ltd. METHOD FETCHING/PROCESSING NVMe COMMANDS IN MULTI-PORT, SR-IOV OR MR-IOV SUPPORTED PCIe BASED STORAGE DEVICES
US20190324659A1 (en) * 2017-03-24 2019-10-24 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US20190391936A1 (en) * 2019-06-25 2019-12-26 Intel Corporation Predictive packet header compression
US20200226091A1 (en) * 2019-11-20 2020-07-16 Intel Corporation Transaction layer packet format
WO2020155005A1 (en) * 2019-01-31 2020-08-06 Intel Corporation Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140113439A (en) * 2013-03-15 2014-09-24 인텔 코포레이션 Apparatus, system and method for providing access to a device function
US20160188510A1 (en) * 2014-12-26 2016-06-30 Samsung Electronics Co., Ltd. METHOD FETCHING/PROCESSING NVMe COMMANDS IN MULTI-PORT, SR-IOV OR MR-IOV SUPPORTED PCIe BASED STORAGE DEVICES
US20190324659A1 (en) * 2017-03-24 2019-10-24 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
WO2020155005A1 (en) * 2019-01-31 2020-08-06 Intel Corporation Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd
US20190391936A1 (en) * 2019-06-25 2019-12-26 Intel Corporation Predictive packet header compression
US20200226091A1 (en) * 2019-11-20 2020-07-16 Intel Corporation Transaction layer packet format

Also Published As

Publication number Publication date
KR102509491B1 (en) 2023-03-14

Similar Documents

Publication Publication Date Title
EP3796179A1 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
US7620749B2 (en) Descriptor prefetch mechanism for high latency and out of order DMA device
US10983920B2 (en) Customizable multi queue DMA interface
US8788759B2 (en) Double-buffered data storage to reduce prefetch generation stalls
US8055805B2 (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US10250709B2 (en) Data processing apparatus, controller, cache and method
EP3608790B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
US11789658B2 (en) Peripheral component interconnect express (PCIe) interface system and method of operating the same
EP3163452B1 (en) Efficient virtual i/o address translation
US10467140B2 (en) Apparatus having main TLB and local TLBS, and configured to set selected size for new entry allocated to local TLB to a default size
US20220327074A1 (en) PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
KR20170013882A (en) A multi-host power controller (mhpc) of a flash-memory-based storage device
US6973528B2 (en) Data caching on bridge following disconnect
US10817446B1 (en) Optimized multiport NVMe controller for multipath input/output applications
US10169272B2 (en) Data processing apparatus and method
WO2014206229A1 (en) Accelerator and data processing method
US20110022802A1 (en) Controlling data accesses to hierarchical data stores to retain access order
KR102509491B1 (en) Peripheral component interconnect express interface system and operating method thereof
US10802828B1 (en) Instruction memory
US20050193158A1 (en) Intelligent PCI bridging
EP1628209B1 (en) System controller, speculative fetching method, and information processing apparatus for executing speculative fetch depending on hardware resource availability.
US10789001B1 (en) Posted operation data control
JP3873589B2 (en) Processor system
US20170147517A1 (en) Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
US20140136796A1 (en) Arithmetic processing device and method for controlling the same

Legal Events

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