KR102509491B1 - PCIe 인터페이스 시스템 및 그 동작 방법 - Google Patents

PCIe 인터페이스 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR102509491B1
KR102509491B1 KR1020210048080A KR20210048080A KR102509491B1 KR 102509491 B1 KR102509491 B1 KR 102509491B1 KR 1020210048080 A KR1020210048080 A KR 1020210048080A KR 20210048080 A KR20210048080 A KR 20210048080A KR 102509491 B1 KR102509491 B1 KR 102509491B1
Authority
KR
South Korea
Prior art keywords
command
nvme
executed
host
nvme device
Prior art date
Application number
KR1020210048080A
Other languages
English (en)
Other versions
KR20220141679A (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 에스케이하이닉스 주식회사
Priority to KR1020210048080A priority Critical patent/KR102509491B1/ko
Priority to US17/522,810 priority patent/US11789658B2/en
Priority to CN202210005338.0A priority patent/CN115248795A/zh
Priority to TW111103656A priority patent/TW202240416A/zh
Priority to US17/707,744 priority patent/US20220327074A1/en
Publication of KR20220141679A publication Critical patent/KR20220141679A/ko
Application granted granted Critical
Publication of KR102509491B1 publication Critical patent/KR102509491B1/ko

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 or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 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) 등록을 상기 호스트 메모리에 요청한다.

Description

PCIe 인터페이스 시스템 및 그 동작 방법{PERIPHERAL COMPONENT INTERCONNECT EXPRESS INTERFACE SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 PCIe 인터페이스 시스템 및 그 동작 방법에 관한 것이다.
PCIe(peripheral component interconnect express)는 데이터 통신을 위한 직렬 구조의 인터페이스이다. PCIe 기반 저장 장치는 멀티 포트(multi-port) 및 멀티 펑션(multi-function)을 지원한다. PCIe 기반 저장 장치는 가상화(virtualize) 및 비가상화(non-virtualize)될 수 있고, 하나 이상의 PCIe 펑션(PCIe function)을 통해 호스트 I/O 명령어의 QoS(Quality of Service)를 달성할 수 있다.
저장 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장 장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분된다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는, PCIe Lightweight Notification(LN)을 등록하고 커맨드를 프리페치함으로써 커맨드를 페치하는 시간을 감소시키는 PCIe 인터페이스 시스템 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 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) 등록을 상기 호스트 메모리에 요청할 수 있다.
본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작 방법은, PCIe(peripheral component interconnect Express) 인터페이스 장치, 호스트 및 상기 PCIe 인터페이스 장치를 통해 상기 호스트에 연결되는 NVMe(non-volatile memory express) 장치를 포함하는 PCIe 인터페이스 시스템의 동작 방법에 있어서, 상기 NVMe 장치에 수행될 커맨드가 저장되는 위치를 나타내는 LN(PCIe lightweight notification) 등록을 상기 호스트에 포함된 호스트 메모리에 요청하는 단계, 상기 LN을 등록하는 단계 및 상기 NVMe 장치에 수행될 커맨드를 상기 호스트에 포함된 호스트 메모리에 저장하는 단계를 포함할 수 있다.
본 기술에 따르면 PCIe Lightweight Notification(LN)을 등록하고 커맨드를 프리페치함으로써 커맨드를 페치하는 시간을 감소시키는 PCIe 인터페이스 시스템 및 그 동작 방법이 제공된다.
도 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은 PCIe 인터페이스 시스템을 설명하기 위한 블록도이다.
도 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)를 포함할 수 있다.
도 1에서, 루트 컴플렉스(120)는 스위치(140)와 링크(LINK)로 연결될 수 있다. 또, 스위치(140)는 PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)와 각각 링크(LINK)로 연결될 수 있다. 링크(LINK)는 적어도 하나 이상의 레인(LANE)으로 구성될 수 있다.
실시 예에서, 루트 컴플렉스(120)는 중앙 처리 장치(110) 및 메모리(130)를 입출력 계층 구조(I/O hierarchy)와 연결할 수 있다. 구체적으로, 루트 컴플렉스(120)는 PCIe 포트를 지원할 수 있다. 즉, 루트 컴플렉스(120)는 입출력 장치(I/O)와 연결이 가능한 루트 포트를 지원할 수 있다.
추가로, 루트 컴플렉스(120)는 PCIe 인터페이스 장치(100)에 포함된 각 구성의 계층 간 라우팅을 지원할 수 있다. 여기서 라우팅은 데이터 통신에서 송신 측에서 수신 측으로 전송하는 경로를 선택하는 동작을 의미할 수 있다. 라우팅은 송신 측으로부터 수신 측으로 경로를 미리 설정해두는 방법 또는 시스템이나 네트워크의 상태에 따라 가장 효율이 좋은 경로를 선택하는 방법 중 어느 하나의 방법을 기초로 수행될 수 있다.
또, 루트 컴플렉스(120)는 입출력 리퀘스트를 지원할 수 있다. 루트 컴플렉스(120)는 컨피겨레이션 리퀘스트 생성을 지원해야 한다(must). 그러나, 루트 컴플렉스(120)는 컴플리터(completer)로서 lock semantics를 지원해서는 안 된다(must). 루트 컴플렉스(120)는 리퀘스터(requester)로서 lock request 생성을 요청할 수 있다.
실시 예에서, 루트 컴플렉스(120)는 라우팅 시, 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 있다. 또, 루트 컴플렉스(120)는 입출력 요청을 생성할 수 있다.
실시 예에서, 스위치(140)는 2개 이상의 논리 PCI-to-PCI 브릿지들로 구성될 수 있다. 2개 이상의 논리 PCI-to-PCI 브릿지들은 각각 업스트림 포트 또는 다운스트림 포트에 연결될 수 있다.
스위치(140)는 PCI 브릿지 메커니즘(어드레스 기반의 멀티 캐스팅 방식)을 사용하여 트랜잭션을 전송할 수 있다. 이 때, 스위치(140)는 모든 유형의 TLP(transaction layer packet)을 업스트림 포트 및 다운스트림 포트를 통해 전송 가능해야 한다(must). 또, 스위치(140)는 잠금 리퀘스트(Locked request)를 지원해야 한다. 인에이블 된 스위치(140)의 각 포트는 플로우 컨트롤을 지원 가능해야 한다(must). 스위치(140)는 동일한 가상 채널에서 경합이 발생하는 경우 라운드 로빈 또는 가중 라운드 로빈 방식으로 중재할 수 있다.
실시 예에서, 루트 컴플렉스(120)와 달리 스위치(140)는 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 없다.
실시 예에서, 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).
실시 예에서, 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)는 입출력 리퀘스트를 제공하거나 발생시킬 수 있다.
실시 예에서, PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)는 스위치(140)와 TLP를 송수신할 수 있다.
실시 예에서, 스위치(140)는 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)로부터 수신된 TLP를 루트 컴플렉스(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)에 송신할 수 있다.
실시 예에서, 호스트(300)에 포함된 호스트 프로세서(320) 및 호스트 메모리(330)는 호스트 내부 패브릭(310)을 통해 루트 컴플렉스(120)와 연결될 수 있다.
실시 예에서, 호스트 프로세서(320)는 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치에 수행될 라이트 동작 또는 리드 동작을 제어할 수 있다. 여기서, NVMe 장치는 SSD(solid state drive)일 수 있다. 또, 호스트 프로세서(320)는 NVMe 장치에 수행될 라이트 동작 또는 리드 동작을 제어하는데 필요한 정보들을 호스트 메모리(330)에 저장할 수 있다.
실시 예에서, NVMe 드라이버(340)는 중앙 처리 장치(110)와 연결되고, 호스트(300)가 PCIe 인터페이스 장치(100)를 통해 NVMe 장치를 제어할 수 있도록 할 수 있다.
도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.
도 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)으로 구성될 수 있다.
실시 예에서, PCI 구성요소(PCI COMPONENT 1, 2)는 링크(LINK)를 통해 패킷(PACKET)을 송수신할 수 있다. 즉, PCI 구성요소(PCI COMPONENT 1, 2)는 각각 패킷(PACKET)을 송신하는 송신기(transmitter, TX) 또는 패킷(PACKET)을 수신하는 수신기(receiver, RX)의 기능을 수행할 수 있다.
실시 예에서, 패킷(PACKET)은 정보 전송 단위로, 선택적 TLP 접두사, 헤더 및 데이터 페이로드로 구성될 수 있다.
실시 예에서, 캐싱할 필요가 없는 패킷(PACKET)은 스누핑하지 않음으로써 레이턴시를 줄일 수 있다. 트랜잭션 간의 의존이 없는 경우, 오더링을 변경하여 패킷(PACKET) 동작 성능이 향상될 수 있다. 또, 아이디를 기초로 오더링을 변경하여, 패킷(PACKET) 동작 성능이 향상될 수 있다.
도 3은 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를 포함할 수 있다.
실시 예에서, NVMe 드라이버(340)는 NVMe 장치에 수행될 커맨드(COMMAND)를 SUBMISSION QUEUE로 전송할 수 있다. SUBMISSION QUEUE는 NVMe 드라이버(340)로부터 수신된 커맨드(COMMAND)를 큐잉할 수 있다. 예를 들면, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
커맨드(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를 저장할 수 있다.
이 후, NVMe 컨트롤러(500)는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다. 즉, NVMe 컨트롤러(500)는 SUBMISSION QUEUE에 큐잉된 커맨드들을 수신할 수 있다. NVMe 컨트롤러(500)는 수신된 커맨드들에 대응하는 동작을 수행할 수 있다.
실시 예에서, 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까지 순차적으로 큐잉할 수 있다.
이 후, NVMe 컨트롤러(500)는 INTERRUPT 신호를 NVMe 드라이버(340)에 출력할 수 있다. INTERRUPT 신호는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 신호일 수 있다.
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를 저장할 수 있다.
도 4는 도 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)의 동작을 도시한다.
도 4에서, 비 DMA 동작은 도 1의 중앙 처리 장치(110)를 통해 수행되는 동작을 의미하며, DMA 동작은 도 1의 중앙 처리 장치(110)의 개입 없이 독립적으로 수행되는 동작을 의미할 수 있다.
실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, NVMe 드라이버(340)는 SQ DOORBELL 신호를 SSD에 출력할 수 있다. SQ DOORBELL 신호는 도 3의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.
실시 예에서, SSD는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다. 즉, SSD는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다. SSD가 호스트 메모리(330)로부터 수신된 커맨드들에 대응하는 동작들을 완료하면, COMPLETION 신호를 호스트 메모리(330)에 출력할 수 있다.
이 후, NVMe 드라이버(340) 및 SSD는 도 1의 중앙 처리 장치(110)의 개입 없이 독립적으로 수행되는 DMA 동작을 수행할 수 있다.
실시 예에서, SSD가 커맨드들에 대응하는 동작을 수행한 후, 호스트 메모리(330)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). 즉, SSD가 커맨드들에 대응하는 동작을 수행한 후, COMPLETION QUEUE ENTRY를 호스트 메모리(330)로 전송하고, 호스트 메모리(330)는 수신된 COMPLETION QUEUE ENTRY를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, SSD는 INTERRUPT 신호를 NVMe 드라이버(340)에 출력할 수 있다. INTERRUPT 신호는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 신호일 수 있다.
실시 예에서, NVMe 드라이버(340)가 COMPLETION QUEUE의 COMPLETION QUEUE ENTRY를 기초로 수행하는 동작이 완료되면, NVMe 드라이버(340)는 CQ DOORBELL 신호를 SSD에 출력할 수 있다. CQ DOORBELL 신호는 도 3의 COMPLETION QUEUE HEAD DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 동작이 완료된 커맨드가 식별되도록, CQ DOORBELL 신호를 SSD에 출력할 수 있다.
이 후, NVMe 드라이버(340)는 SSD에 수행될 새로운 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.
위에서 설명된 동작들 중 DMA 동작을 제외한 동작들은 비 DMA 동작일 수 있다. 따라서, DMA 동작에 비해 비 DMA 동작이 더 많이 수행되므로, 비 DMA 동작에 소모되는 시간이 길 수 있다. 따라서, 본 발명에서, 비 DMA 동작에 소모되는 시간을 감소시키기 위해, LN(lightweight notification)을 통해 비 DMA 동작을 수행하는 방법이 제시된다.
도 5는 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)의 캐시 라인에 등록될 수 있다.
도 5에서, 비 DMA 동작은 도 1의 중앙 처리 장치(110)를 통해 수행되는 동작을 의미하며, DMA 동작은 도 1의 중앙 처리 장치(110)의 개입 없이 독립적으로 수행되는 동작을 의미할 수 있다.
실시 예에서, SSD는 호스트 메모리(330) 및 도 1의 루트 컴플렉스(120)의 캐시 라인에 LN을 등록할 수 있다. 이 때, LN은 호스트 메모리(330) 내 커맨드가 큐잉되는 위치를 나타낼 수 있다.
호스트 메모리(330) 및 도 1의 루트 컴플렉스(120)의 캐시 라인에 LN이 등록되면, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
실시 예에서, 커맨드(COMMAND)가 호스트 메모리(330)에 큐잉되면, 호스트 메모리(330)는 LN MESSAGE를 SSD에 출력할 수 있다. LN MESSAGE는 호스트 메모리(330) 내 커맨드(COMMAND)가 큐잉된 위치를 나타낼 수 있다. 호스트 메모리(330)는 커맨드(COMMAND)가 큐잉된 위치가 변경될 때 LN MESSAGE를 통해 변경된 위치를 SSD에 출력할 수 있다.
실시 예에서, SSD는 커맨드를 프리페치할 수 있다(COMMAND PRE-FETCH). 예를 들면, SSD는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신할 수 있다. 즉, NVMe 드라이버(340)가 SQ DOORBELL 신호를 출력하기 전 SUBMISSION QUEUE에 큐잉된 커맨드가 업데이트될 수 있고, SQ DOORBELL 신호가 출력되기 전 호스트 메모리(330)가 LN MESSAGE를 SSD에 출력함으로써 SSD는 커맨드의 프리페치를 통해 미리 커맨드를 수행할 준비를 할 수 있다. 나아가, 커맨드 정보가 도 1의 루트 컴플렉스(120)의 캐시 라인에 저장될 수 있으므로, 커맨드를 빠르게 페치하여 SSD의 동작 속도를 빠르게 할 수 있다.
이 후, NVMe 드라이버(340)는 SQ DOORBELL 신호를 SSD에 출력할 수 있다. SQ DOORBELL 신호는 도 3의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다. SSD는 SQ DOORBELL 신호를 기초로 프리페치된 커맨드에 대응하는 동작을 수행할 수 있다.
이 때, SSD는 호스트 메모리(330)로부터 커맨드를 다시 페치할 수 있다(COMMAND FETCH). SSD가 커맨드를 페치할 때 LN 등록은 해제되고, SSD는 프리페치된 커맨드와 페치된 커맨드를 비교한 결과를 기초로 동작을 수행할 수 있다.
예를 들면, 프리페치된 커맨드와 페치된 커맨드가 동일하면, SSD는 프리페치된 커맨드에 대응하는 동작을 계속 수행할 수 있다. 그러나, 프리페치된 커맨드와 페치된 커맨드가 다르면, SSD는 프리페치된 커맨드에 대응하는 동작을 중단하고 페치된 커맨드에 대응하는 동작을 수행할 수 있다.
SSD가 호스트 메모리(330)로부터 수신된 커맨드들에 대응하는 동작들을 완료하면, COMPLETION 신호를 호스트 메모리(330)에 출력할 수 있다.
실시 예에서, SSD가 호스트 메모리(330)로부터 커맨드를 다시 페치하는 동작 및 COMPLETION 신호를 호스트 메모리(330)에 출력하는 동작은 도 1의 중앙 처리 장치(110)를 통해 수행되는 비 DMA 동작일 수 있다. 위 비 DMA 동작들은 DMA 동작들 사이에서 수행되는 동작들이므로, 데이터 입출력 랜덤 성능이 향상될 수 있다. 입출력 랜덤 성능은 커맨드 당 특정 크기 데이터의 랜덤 성능을 의미할 수 있다.
이 후, SSD는 호스트 메모리(330) 및 도 1의 루트 컴플렉스(120)의 캐시 라인에 다음 커맨드가 큐잉되는 위치를 나타내는 LN을 등록할 수 있다.
실시 예에서, 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에 출력할 수 있다.
실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하는 동작부터 다시 수행할 수 있다.
결과적으로, 호스트 메모리(330)에 LN을 등록한 후 커맨드를 프리페치함으써 커맨드를 페치하는 시간을 단축시키고, SSD의 입출력 랜덤 성능을 개선할 수 있다.
도 6은 LN을 설명하기 위한 도면이다.
도 6을 참조하면, 도 6은 TLP(transaction layer packet) 헤더의 일부를 도시한다.
실시 예에서, TLP 헤더는 0~3BYTE로 구성될 수 있고, 각 BYTE는 0~8BIT로 구성될 수 있다. TLP 헤더의 0~3BYTE에는 다양한 정보가 포함될 수 있다.
실시 예에서, TLP 헤더의 0BYTE는 TLP 형식을 나타내는 FMT 정보 및 TLP의 타입을 나타내는 TYPE 정보를 포함할 수 있다. 예를 들면, 0BYTE의 7~5BIT에는 FMT 정보가 포함되고, 0BYTE의 4~0BIT에는 TYPE 정보가 포함될 수 있다.
실시 예에서, TLP 헤더의 1BYTE의 1BIT에는 LN(PCIe Lightweight Notification) 정보가 포함될 수 있다. LN은 캐시 라인이 업데이트될 때, 하드웨어 메커니즘을 통해 엔드 포인트에 알림을 지원하는 프로토콜일수 있다. 1BYTE의 1BIT가 '1'인 경우, LN 정보는 동작의 완료를 나타낼 수 있다.
도 5를 참조하면, NVMe 드라이버(340)가 호스트 메모리(330)에 커맨드를 출력하기 전, 호스트 메모리(330)에 LN이 등록될 수 있다. 이 때, TLP 헤더의 1BYTE의 1BIT는 '1'로 설정될 수 있다. 즉, NVMe 드라이버(340)가 SQ DOORBELL 신호를 SSD에 출력하기 전 커맨드가 큐잉되는 위치를 LN 등록할 수 있으며, SSD가 LN MESSAGE를 수신하면, SSD는 호스트 메모리(330)에 큐잉된 커맨드를 프리페치할 수 있다.
이 후, NVMe 드라이버(340)가 SQ DOORBELL 신호를 SSD에 출력하면, SSD가 커맨드를 다시 페치할 때 TLP 헤더의 1BYTE의 1BIT는 '0'으로 설정되고, LN 등록이 해제될 수 있다.
도 7은 LN 등록을 설명하기 위한 도면이다.
도 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)일 수 있다.
실시 예에서, 호스트(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).
실시 예에서, 호스트(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)에 출력할 수 있다.
결과적으로, 호스트(300)가 SQ DOORBELL 신호를 NVMe DEVICE(150)에 출력하기 전 LN MESSAGE를 출력함으로써, NVMe DEVICE(150)는 새로운 커맨드의 발생을 미리 확인할 수 있다.
도 8은 LN 등록 후 커맨드 프리페치 및 커맨드 페치를 설명하기 위한 도면이다.
도 7 및 도 8을 참조하면, 도 8은 도 7에서 호스트(300)가 LN MESSAGE를 NVMe DEVICE(150)에 출력한 이후의 동작을 도시한다.
실시 예에서, NVMe DEVICE(150)는 SQ DOORBELL 신호를 수신하기 전, 호스트 메모리(도 1의 330)에 저장된 커맨드를 프리페치할 수 있다. 구체적으로, NVMe DEVICE(150)는 도 1의 루트 컴플렉스(120)의 캐시 라인(CACHE LINE)을 통해 커맨드를 프리페치할 수 있다. NVMe DEVICE(150)는 LN MESSAGE를 기초로 새로운 커맨드의 발생 여부를 확인하고, SQ DOORBELL 신호를 수신하기 전, 호스트 메모리(도 1의 330)에 저장된 커맨드를 프리페치할 수 있다.
실시 예에서, 호스트 메모리(도 1의 330)에 저장된 커맨드를 프리페치함으로써, 커맨드를 페치하는데 소모되는 시간이 감소될 수 있다. 따라서, 입출력 랜덤 성능이 개선될 수 있다. 입출력 랜덤 성능은 커맨드 당 특정 크기 데이터의 랜덤 성능을 의미할 수 있다.
또, 이 경우, NVMe DEVICE(150)는 SQ DOORBELL 신호를 수신한 후, 호스트 메모리(도 1의 330)에 저장된 커맨드를 다시 페치할 수 있다(COMMAND FETCH).
실시 예에서, 프리페치된 커맨드와 페치된 커맨드가 동일한 경우, NVMe DEVICE(150)는 프리페치하여 동작 중인 커맨드에 대응하는 동작을 계속하여 수행할 수 있다. 그러나, 프리페치된 커맨드와 페치된 커맨드가 상이한 경우, NVMe DEVICE(150)는 프리페치한 커맨드에 대응하는 동작을 중단하고, 새롭게 페치된 커맨드에 대응하는 동작을 수행할 수 있다.
도 9는 저전력 상태의 종료 시 레이턴시를 설명하기 위한 도면이다.
도 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)와 먼 포트일 수 있다.
도 9에서, SSD는 초기에 L1.2 상태일 수 있다. L1.2 상태는 저전력 상태를 의미할 수 있다. 즉, SSD는 전력 소모를 방지하기 위해, L1.2 상태에 있을 수 있다.
나아가, 도 9에서, L0 상태는 전력 관리를 할 수 있는 상태로, 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태일 수 있다. 예를 들면, L0 상태에서, TLP(transaction layer packet) 및 DLLP(data link layer packet)가 송수신될 수 있다. SSD는 L1.2 상태에서 동작을 중단하였다가, L0 상태에서 다시 동작을 재개할 수 있다.
실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 큐잉할 수 있다. 이 후, NVMe 드라이버(340)는 새로운 커맨드가 큐잉되었음을 알리는 SQ DOORBELL 신호를 다운스트림 포트(DOWNSTREAM PORT)를 통해 SSD에 출력할 수 있다.
그러나, SSD는 초기에 L1.2 상태이므로, WAKE UP 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다. WAKE UP 신호에 따라, SSD는 L1.2 상태에서 L0 상태로 변경되고(LOW POWER EXIT), SSD는 다시 동작을 수행할 수 있는 상태가 될 수 있다. 이 때, SSD의 상태가 L1.2 상태에서 L0 상태로 변경될 때까지 레이턴시(LATENCY)가 발생될 수 있다.
SSD가 동작을 수행할 수 있는 상태가 되면, NVMe 드라이버(340)로부터 수신된 SQ DOORBELL 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다.
이 후, L0 상태에서, SSD는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다. 즉, SSD는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다.
본 발명에서, SSD의 상태가 L1.2 상태에서 L0 상태로 변경될 때까지 레이턴시(LATENCY)가 발생되는 것을 최소화하기 위해, 커맨드가 저장되는 위치를 LN(PCIe Lightweight Notification) 등록함으로써 저전력 상태를 미리 종료하는 방법이 제시된다.
도 10은 LN 등록을 통한 저전력 상태의 종료를 설명하기 위한 도면이다.
도 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)와 먼 포트일 수 있다.
도 10에서, SSD는 초기에 L1.2 상태일 수 있다. L1.2 상태는 저전력 상태를 의미할 수 있다. 즉, SSD는 전력 소모를 방지하기 위해, L1.2 상태에 있을 수 있다.
나아가, 도 10에서, L0 상태는 전력 관리를 할 수 있는 상태로, 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태일 수 있다. 예를 들면, L0 상태에서, TLP(transaction layer packet) 및 DLLP(data link layer packet)가 송수신될 수 있다. SSD는 L1.2 상태에서 동작을 중단하였다가, L0 상태에서 다시 동작을 재개할 수 있다.
그러나, 도 9와 달리 도 10에서, 호스트 메모리(330)에 LN(PCIe Lightweight Notification) 등록을 함으로써, SSD의 상태가 L1.2 상태에서 L0 상태로 변경될 수 있다.
실시 예에서, NVMe 드라이버(340)가 NVMe DEVICE(150)에 커맨드를 전송하기 전, L0 상태에서 호스트 메모리(330)에 LN이 등록될 수 있다(LN REGISTER). 이 때, LN은 호스트 메모리(330)에 커맨드 정보가 저장되는 주소를 나타낼 수 있다.
LN이 등록되면, L1.2 상태에서 NVMe 드라이버(340)가 커맨드 정보를 호스트 메모리(330)에 저장함과 동시에 호스트 메모리(330)로부터 LN MESSAGE가 다운스트림 포트(DOWNSTREAM PORT)에 출력될 수 있다. 즉, 호스트 메모리(330)에 새로운 커맨드가 큐잉되었음을 다운스트림 포트(DOWNSTREAM PORT)에 알리기 위한 LN MESSAGE가 출력될 수 있다.
실시 예에서, LN MESSAGE를 기초로 WAKE UP 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다. WAKE UP 신호에 따라, SSD는 L1.2 상태에서 L0 상태로 변경되고(LOW POWER EXIT), SSD는 다시 동작을 수행할 수 있는 상태가 될 수 있다.
이 때, SQ DOORBELL 신호가 출력되기 전 LN MESSAGE를 기초로 WAKE UP 신호가 출력되기 때문에, 도 9에 비해 L1.2 상태에서 L0 상태로 변경되는 시간이 단축될 수 있다.
이 후, SSD가 동작을 수행할 수 있는 상태가 되면, NVMe 드라이버(340)로부터 수신된 SQ DOORBELL 신호가 다운스트림 포트(DOWNSTREAM PORT)에서 SSD로 출력될 수 있다. L0 상태에서, SSD는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다.
도 11은 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.
도 11을 참조하면, S1101 단계에서, 호스트는 LN(PCIe Lightweight Notification) 등록할 수 있다. LN은 호스트에 포함된 호스트 메모리에 커맨드 정보가 저장되는 주소를 나타낼 수 있다.
S1103 단계에서, 호스트는 SSD에 수행될 커맨드를 저장할 수 있다. 예를 들면, 호스트는 호스트 메모리의 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
S1105 단계에서, 호스트는 SSD에 LN MESSAGE를 전송할 수 있다. 즉, 호스트 메모리에 새로운 커맨드가 큐잉된 위치를 나타낼 수 있다. 즉, 호스트는 커맨드가 큐잉된 위치가 변경될 때 LN MESSAGE를 통해 변경된 위치를 SSD에 출력할 수 있다.
S1107 단계에서, SSD는 호스트 메모리에 큐잉된 커맨드를 프리페치할 수 있다. 즉, SSD는 LN MESSAGE를 수신하면, 커맨드의 프리페치를 통해 미리 커맨드를 수행할 준비를 할 수 있다.
S1109 단계에서, 호스트는 SQ DOORBELL 신호를 SSD에 전송할 수 있다. 즉, 호스트는 호스트 메모리로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다. SSD는 SQ DOORBELL 신호를 기초로 프리페치된 커맨드에 대응하는 동작을 수행할 수 있다.
S1111 단계에서, SSD는 호스트 메모리에 큐잉된 커맨드를 다시 페치할 수 있다. 예를 들면, SSD가 프리페치된 커맨드에 대응하는 동작을 수행 중에 호스트 메모리에 큐잉된 커맨드를 다시 페치할 수 있다. SSD는 프리페치된 커맨드와 다시 페치된 커맨드를 비교한 결과를 기초로 동작을 수행할 수 있다.
도 12는 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.
도 11 및 도 12를 참조하면, 도 12는 도 11의 S1111 단계 이후의 단계들을 도시한다.
S1201 단계에서, SSD는 프리페치된 커맨드와 페치된 커맨드가 동일한지를 판단할 수 있다. 즉, SSD는 프리페치된 커맨드들에 대응하는 동작을 수행 중에 커맨드를 다시 페치하고, 프리페치된 커맨드와 페치된 커맨드를 비교할 수 있다.
프리페치된 커맨드와 페치된 커맨드가 동일하면(Y), S1203 단계로 진행하여, SSD는 진행중인 커맨드에 대응하는 동작을 이어서 수행할 수 있다.
그러나, 프리페치된 커맨드와 페치된 커맨드가 상이하면(N), S1205 단계로 진행하여, SSD는 진행중인 커맨드에 대응하는 동작을 중단하고 새롭게 페치된 커맨드에 대응하는 동작을 수행할 수 있다.
도 13은 본 발명의 실시 예에 따른 PCIe 인터페이스 시스템의 동작을 설명하기 위한 도면이다.
도 13을 참조하면, S1301 단계에서, 호스트는 LN(PCIe Lightweight Notification) 등록할 수 있다. LN은 호스트에 포함된 호스트 메모리에 커맨드 정보가 저장되는 주소를 나타낼 수 있다. 이 때, SSD는 L0 상태이고, L0 상태는 전력 관리를 할 수 있는 상태로, 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태일 수 있다.
S1303 단계에서, 호스트는 SSD에 수행될 커맨드를 저장할 수 있다. 예를 들면, 호스트는 호스트 메모리의 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다. 이 때, SSD는 저전력 상태인 L1.2 상태일 수 있다.
S1305 단계에서, 호스트는 SSD에 LN MESSAGE를 다운스트림 포트에 전송할 수 있다. 즉, 호스트 메모리에 새로운 커맨드가 큐잉되었음을 다운스트림 포트에 알리기 위한 LN MESSAGE가 출력될 수 있다. 여기서, 다운스트림 포트는 PCIe 인터페이스 장치에 포함된 구성들 중 루트 컴플렉스와 먼 스위치의 포트일 수 있다.
S1307 단계에서, 다운스트림 포트로부터 출력된 WAKE UP 신호가 SSD에 전송될 수 있다. 즉, SSD의 상태를 L1.2 상태에서 L0 상태로, 즉 동작을 수행할 수 있는 상태로 변경하기 위해, 다운스트림 포트로부터 WAKE UP 신호가 출력될 수 있다. WAKE UP 신호에 따라, SSD는 L1.2 상태에서 L0 상태로 변경되고(LOW POWER EXIT), SSD는 다시 동작을 수행할 수 있는 상태가 될 수 있다.
S1309 단계에서, 호스트는 다운스트림 포트를 통해 SQ DOORBELL 신호를 SSD로 전송할 수 있다. 즉, SSD가 동작을 수행할 수 있는 상태가 되면, 호스트 메모리로부터 출력되는 새로운 커맨드가 식별되도록, 호스트는 SQ DOORBELL 신호를 SSD에 출력할 수 있다.
S1311 단계에서, SSD는 호스트 메모리에 큐잉된 커맨드를 페치할 수 있다. SSD는 커맨드를 페치하고, 페치된 커맨드에 대응하는 동작을 수행할 수 있다.
100: PCIe 인터페이스 장치
300: 호스트

Claims (20)

  1. 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 인터페이스 시스템.
  2. 제 1항에 있어서, 상기 호스트 메모리는,
    상기 LN 등록 후 상기 NVMe 드라이버로부터 수신된 커맨드를 서브미션 큐에 큐잉하는 PCIe 인터페이스 시스템.
  3. 제 1항에 있어서, 상기 호스트 메모리는,
    상기 NVMe 장치에 수행될 커맨드가 저장되었음을 나타내는 LN 메시지를 상기 NVMe 장치에 출력하는 PCIe 인터페이스 시스템.
  4. 제 3항에 있어서, 상기 NVMe 장치는,
    상기 LN 메시지를 수신한 후, 상기 NVMe 장치에 수행될 커맨드를 프리페치하고, 상기 프리페치된 커맨드에 대응하는 동작을 수행하는 PCIe 인터페이스 시스템.
  5. 제 4항에 있어서, 상기 NVMe 장치는,
    상기 프리페치된 커맨드에 대응하는 동작을 수행 중에, 상기 NVMe 드라이버로부터 상기 SQ DOORBELL 신호를 수신하면, 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 PCIe 인터페이스 시스템.
  6. 제 5항에 있어서, 상기 NVMe 장치는,
    상기 프리페치된 커맨드 및 상기 페치된 커맨드를 비교한 결과를 기초로 동작을 수행하는 PCIe 인터페이스 시스템.
  7. 제 6항에 있어서, 상기 NVMe 장치는,
    상기 프리페치된 커맨드 및 상기 페치된 커맨드가 동일하면, 상기 프리페치된 커맨드에 대응하는 동작을 이어서 수행하는 PCIe 인터페이스 시스템.
  8. 제 6항에 있어서, 상기 NVMe 장치는,
    상기 프리페치된 커맨드 및 상기 페치된 커맨드가 상이하면, 상기 프리페치된 커맨드에 대응하는 동작을 중단하고, 상기 페치된 커맨드에 대응하는 동작을 수행하는 PCIe 인터페이스 시스템.
  9. 제 1항에 있어서,
    상기 NVMe 장치가 저전력 상태이면,
    상기 호스트 메모리는 상기 NVMe 장치에 수행될 커맨드가 저장되었음을 나타내는 LN 메시지를 상기 PCIe 인터페이스 장치에 포함된 스위치의 다운스트림 포트로 전송하는 PCIe 인터페이스 시스템.
  10. 제 9항에 있어서,
    상기 스위치는 상기 LN 메시지를 기초로 상기 저전력 상태를 종료하기 위한 웨이크 업 신호를 상기 NVMe 장치로 전송하고,
    상기 NVMe 장치는 상기 웨이크 업 신호에 응답하여 저전력 상태에서 동작을 수행할 수 있는 상태로 변경되는 PCIe 인터페이스 시스템.
  11. 제 10항에 있어서,
    상기 NVMe 드라이버는 상기 SQ DOORBELL 신호를 상기 다운스트림 포트를 통해 상기 NVMe 장치에 출력하고,
    상기 NVMe 장치는 상기 NVMe 드라이버로부터 상기 SQ DOORBELL 신호를 수신하면, 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 PCIe 인터페이스 시스템.
  12. PCIe(peripheral component interconnect Express) 인터페이스 장치, 호스트 및 상기 PCIe 인터페이스 장치를 통해 상기 호스트에 연결되는 NVMe(non-volatile memory express) 장치를 포함하는 PCIe 인터페이스 시스템의 동작 방법에 있어서,
    상기 NVMe 장치에 수행될 커맨드가 저장되는 위치를 나타내는 LN(PCIe lightweight notification) 등록을 상기 호스트에 포함된 호스트 메모리에 요청하는 단계;
    상기 LN을 등록하는 단계; 및
    상기 NVMe 장치에 수행될 커맨드를 상기 호스트에 포함된 호스트 메모리에 저장하는 단계;를 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  13. 제 12항에 있어서, 상기 호스트 메모리에 저장하는 단계에서,
    상기 LN 등록 후 상기 NVMe 장치에 수행될 커맨드를 상기 호스트 메모리에 포함된 서브미션 큐에 큐잉하는 PCIe 인터페이스 시스템의 동작 방법.
  14. 제 12항에 있어서,
    상기 NVMe 장치에 수행될 커맨드가 저장되었음을 나타내는 LN 메시지를 상기 NVMe 장치에 출력하는 단계를 더 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  15. 제 14항에 있어서,
    상기 NVMe 장치에 수행될 커맨드를 프리페치하는 단계; 및
    상기 프리페치된 커맨드에 대응하는 동작을 수행하는 단계;를 더 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  16. 제 15항에 있어서,
    상기 프리페치된 커맨드에 대응하는 동작 수행 중에, 상기 호스트 메모리에 상기 NVMe 장치에 수행될 커맨드가 저장되었음을 알리는 SQ DOORBELL 신호가 출력되면, 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 단계를 더 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  17. 제 16항에 있어서, 상기 프리페치된 커맨드에 대응하는 동작을 수행하는 단계에서,
    상기 프리페치된 커맨드 및 상기 페치된 커맨드가 동일하면, 상기 프리페치된 커맨드에 대응하는 동작을 이어서 수행하는 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  18. 제 16항에 있어서, 상기 프리페치된 커맨드에 대응하는 동작을 수행하는 단계에서,
    상기 프리페치된 커맨드 및 상기 페치된 커맨드가 상이하면, 상기 프리페치된 커맨드에 대응하는 동작을 중단하고, 상기 페치된 커맨드에 대응하는 동작을 수행하는 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  19. 제 12항에 있어서,
    상기 NVMe 장치가 저전력 상태이면,
    상기 NVMe 장치에 수행될 커맨드가 상기 호스트 메모리에 저장되었음을 나타내는 LN 메시지를 상기 PCIe 인터페이스 장치에 포함된 스위치의 다운스트림 포트로 전송하는 단계; 및
    상기 스위치는 상기 LN 메시지를 기초로 상기 저전력 상태를 종료하기 위한 웨이크 업 신호를 상기 NVMe 장치로 전송하는 단계;를 포함하는 PCIe 인터페이스 시스템의 동작 방법.
  20. 제 19항에 있어서,
    상기 NVMe 장치에 수행될 커맨드가 저장되었음을 알리는 SQ DOORBELL 신호를 상기 다운스트림 포트를 통해 상기 NVMe 장치에 출력하는 단계; 및
    상기 SQ DOORBELL 신호를 기초로 상기 호스트 메모리로부터 상기 NVMe 장치에 수행될 커맨드를 페치하는 단계;를 PCIe 인터페이스 시스템의 동작 방법.
KR1020210048080A 2021-04-13 2021-04-13 PCIe 인터페이스 시스템 및 그 동작 방법 KR102509491B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210048080A KR102509491B1 (ko) 2021-04-13 2021-04-13 PCIe 인터페이스 시스템 및 그 동작 방법
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 (zh) 2021-04-13 2022-01-04 高速外围组件互连(pcie)接口系统及其操作方法
TW111103656A TW202240416A (zh) 2021-04-13 2022-01-27 快捷週邊組件互連(pcie)介面系統及其操作方法
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 (ko) 2021-04-13 2021-04-13 PCIe 인터페이스 시스템 및 그 동작 방법

Publications (2)

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

Family

ID=83804768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210048080A KR102509491B1 (ko) 2021-04-13 2021-04-13 PCIe 인터페이스 시스템 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR102509491B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026698B2 (en) * 2013-03-15 2015-05-05 Intel Corporation Apparatus, system and method for providing access to a device function

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR20220141679A (ko) 2022-10-20

Similar Documents

Publication Publication Date Title
EP3796179A1 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
CN107111576B (zh) 发布的中断架构
US9286236B2 (en) I/O controller and method for operating an I/O controller
US7620749B2 (en) Descriptor prefetch mechanism for high latency and out of order DMA device
US10983920B2 (en) Customizable multi queue DMA interface
WO2018076793A1 (zh) 一种NVMe数据读写方法及NVMe设备
US20190188164A1 (en) A method and device for improved advanced microcontroller bus architecture (amba) and advanced extensible interface (axi) operations
JP5026660B2 (ja) 直接メモリアクセス(dma)転送バッファプロセッサ
US11204867B2 (en) PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
US8055805B2 (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US11789658B2 (en) Peripheral component interconnect express (PCIe) interface system and method of operating the same
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
TW201741887A (zh) 用於具有可重配置多端口的快捷外設互聯標準儲存系統的服務品質感測輸入輸出管理的方法、系統及設備
US20220327074A1 (en) PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
EP4004753B1 (en) Programmable network interface device comprising a host computing device and a network interface device
WO2005091762A2 (en) Intelligent pci bridging consisting of prefetching all data prior to sending data to requesting device
US6973528B2 (en) Data caching on bridge following disconnect
WO2014206229A1 (zh) 一种加速器以及数据处理方法
US10169272B2 (en) Data processing apparatus and method
KR102509491B1 (ko) PCIe 인터페이스 시스템 및 그 동작 방법
US10802828B1 (en) Instruction memory
EP1628209B1 (en) System controller, speculative fetching method, and information processing apparatus for executing speculative fetch depending on hardware resource availability.
JP3873589B2 (ja) プロセッサシステム
US20170147517A1 (en) Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
US11960727B1 (en) System and method for large memory transaction (LMT) stores

Legal Events

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