KR20220162345A - PCIe 인터페이스 장치 및 그 동작 방법 - Google Patents

PCIe 인터페이스 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20220162345A
KR20220162345A KR1020210070686A KR20210070686A KR20220162345A KR 20220162345 A KR20220162345 A KR 20220162345A KR 1020210070686 A KR1020210070686 A KR 1020210070686A KR 20210070686 A KR20210070686 A KR 20210070686A KR 20220162345 A KR20220162345 A KR 20220162345A
Authority
KR
South Korea
Prior art keywords
link
state
pcie
interface device
layer
Prior art date
Application number
KR1020210070686A
Other languages
English (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 KR1020210070686A priority Critical patent/KR20220162345A/ko
Priority to US17/522,810 priority patent/US11789658B2/en
Priority to US17/522,827 priority patent/US11782497B2/en
Priority to CN202210005338.0A priority patent/CN115248795A/zh
Priority to CN202210006941.0A priority patent/CN115437983A/zh
Priority to TW111103656A priority patent/TW202240416A/zh
Priority to US17/707,744 priority patent/US20220327074A1/en
Publication of KR20220162345A publication Critical patent/KR20220162345A/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 PCIe 인터페이스 장치는, PCIe(Peripheral Component Interconnect Express) 포트를 지원하는 루트 콤플렉스, 상기 루트 컴플렉스를 통해 입출력 계층 구조와 연결되는 메모리, 링크를 통해 상기 루트 컴플렉스와 연결되어 어드레스 기반의 멀티 캐스팅 방식으로 트랜잭션을 전송하는 스위치, 상기 스위치와 상기 링크를 통해 연결되어 패킷을 송수신하는 엔드 포인트 및 상기 링크의 아이들 상태를 감지하는 타이머를 포함하는 PCIe 인터페이스 장치에 있어서, 상기 타이머가 상기 링크의 아이들 상태를 감지하면 링크 전원 관리를 수행한다.

Description

PCIe 인터페이스 장치 및 그 동작 방법{PERIPHERAL COMPONENT INTERCONNECT EXPRESS INTERFACE DEVICE 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) 등이 있다.
본 발명의 실시 예는, NVMe(non-volatile memory express) 커맨드의 처리 중 PCIe(peripheral component interconnect Express)의 링크의 아이들 상태가 감지되는 경우 PCIe 링크 전원 관리를 수행하는 PCIe 인터페이스 장치 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 PCIe 인터페이스 장치는, PCIe(Peripheral Component Interconnect Express) 포트를 지원하는 루트 콤플렉스, 상기 루트 컴플렉스를 통해 입출력 계층 구조와 연결되는 메모리, 링크를 통해 상기 루트 컴플렉스와 연결되어 어드레스 기반의 멀티 캐스팅 방식으로 트랜잭션을 전송하는 스위치, 상기 스위치와 상기 링크를 통해 연결되어 패킷을 송수신하는 엔드 포인트 및 상기 링크의 아이들 상태를 감지하는 타이머를 포함하는 PCIe 인터페이스 장치에 있어서, 상기 타이머가 상기 링크의 아이들 상태를 감지하면 링크 전원 관리를 수행할 수 있다.
본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작 방법은, 패킷을 송수신할 수 있는 링크를 통해 연결되는 구성들 및 상기 링크의 아이들 상태를 감지하는 타이머를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스의 동작 방법에 있어서, 상기 링크의 아이들 상태를 감지하는 단계 및 상기 타이머가 상기 링크의 아이들 상태를 감지하면 링크 전원 관리를 수행하는 단계를 포함할 수 있다.
본 기술에 따르면 NVMe 커맨드의 처리 중 PCIe의 링크의 아이들 상태가 감지되는 경우 PCIe 링크 전원 관리를 수행하는 PCIe 인터페이스 장치 및 그 동작 방법이 제공된다.
도 1은 PCIe 인터페이스 시스템을 설명하기 위한 블록도이다.
도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.
도 3은 PCIe 인터페이스 장치에 포함된 구성들에 각각 포함된 계층을 나타낸 도면이다.
도 4는 LTSSM을 설명하기 위한 도면이다.
도 5는 LTSSM의 각 단계를 설명하기 도면이다.
도 6은 NVMe에서 커맨드의 프로세스 과정을 도시한 도면이다.
도 7은 NVMe에서 리드 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 8은 NVMe에서 라이트 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 9는 NVMe에서 리드 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 10은 NVMe에서 라이트 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 11은 PCIe 인터페이스 장치에 포함된 타이머들을 도시한다.
도 12는 본 발명의 실시 예에 따른 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)는 컨피겨레이션 리퀘스트 생성을 지원할 수 있다. 루트 컴플렉스(120)는 컴플리터(completer)로서 lock semantics를 지원할 수 있다. 루트 컴플렉스(120)는 리퀘스터(requester)로서 lock request 생성을 요청할 수 있다.
실시 예에서, 루트 컴플렉스(120)는 라우팅 시, 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 있다. 또, 루트 컴플렉스(120)는 입출력 요청을 생성할 수 있다.
실시 예에서, 스위치(140)는 2개 이상의 논리 PCI-to-PCI 브릿지들로 구성될 수 있다. 2개 이상의 논리 PCI-to-PCI 브릿지들은 각각 업스트림 포트 또는 다운스트림 포트에 연결될 수 있다.
스위치(140)는 PCI 브릿지 메커니즘(어드레스 기반의 멀티 캐스팅 방식)을 사용하여 트랜잭션을 전송할 수 있다. 이 때, 스위치(140)는 모든 유형의 TLP(transaction layer packet)을 업스트림 포트 및 다운스트림 포트를 통해 전송할 수 있다. 또, 스위치(140)는 잠금 리퀘스트(Locked request)를 지원해야 한다. 인에이블 된 스위치(140)의 각 포트는 플로우 컨트롤을 지원할 수 있다. 스위치(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는 컨피겨레이션 공간 헤더를 제공할 수 있다. 또, PCIe 엔드 포인트(150_1, 150_2) 및 레거시 엔드 포인트(160_1, 160_2)는 컴플리터(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)는 입출력 리퀘스트를 제공하거나 발생시킬 수 있다.
실시 예에서, 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 장치를 제어할 수 있도록 할 수 있다.
실시 예에서, PCIe 인터페이스 장치(100)가 리드 커맨드 또는 라이트 커맨드 처리 중에 PCIe 링크 전원 관리(active-state power management; ASPM)에 진입할 수 있다. 여기서 PCIe 링크 전원 관리란, PCIe 인터페이스 장치(100)에 포함된 구성들을 연결하는 링크(LINK)를 통해 패킷을 송수신하는 상태가 아니거나 잠시 중단 중일 때 링크의 상태를 변경함으로써 PCIe 인터페이스 장치(100)의 전원 소비를 저전력 상태로 변경하는 동작 또는 정책을 의미할 수 있다.
PCIe 인터페이스 장치(100)가 리드 커맨드 또는 라이트 커맨드 처리를 완료하지 못하고 L1.2 상태, 즉 PCIe 링크 전원 관리(ASPM)에 진입하면, 리드 커맨드 또는 라이트 커맨드를 처리한 후 PCIe 인터페이스 장치(100)가 자체적으로 L1.2 상태에서 웨이크업 하여, PCIe 인터페이스 장치(100)가 리드 커맨드 또는 라이트 커맨드 처리 중에 PCIe 링크 전원 관리(ASPM)에 진입 할 수 있다.
따라서, 호스트 메모리(330)에 포함된 SUBMISSION QUEUE 및 COMPLETION QUEUE에 엔트리가 존재하지 않고, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 없는 경우를 포함하여, QUEUE가 엔트리에 남아있거나, 미처리된 커맨드가 있는 경우에도 PCIe 링크 전원 관리에 진입할 수 있다. 즉, PCIe 인터페이스 장치(100)에 포함된 구성들 중 미처리된 커맨드에 대응하는 데이터가 메모리(130)에 존재하거나, 또는 중앙 처리 장치(110), 루트 컴플렉스(120), 또는 스위치(140)가 동작 중인 경우에 PCIe 링크 전원 관리에 진입할 수 있다.
SUBMISSION QUEUE 및 COMPLETION QUEUE에 엔트리가 존재하지 않고 PCIe 인터페이스 장치(100)에 미처리된 커맨드가 없는 경우뿐만 아니라, QUEUE가 엔트리에 존재하거나 미처리된 커맨드가 있는 경우에도 PCIe 링크 전원 관리에 진입하게 됨으로써 커맨드 처리를 신속하게 수행할 수 있다. 또, 커맨드 처리를 신속하게 수행함으로서, PCIe 링크 전원의 크기를 감소시켜서 PCIe 인터페이스 장치(100)의 active-state power에 영향을 미칠 수 있다.
본 발명에서, PCIe 인터페이스 장치(100) 내부에 미처리된 커맨드가 있는 경우에도, PCIe 인터페이스 장치(100)가 자체적으로 링크의 아이들 상태를 감지하고, 링크의 아이들 상태가 감지되면 자체적으로 PCIe 링크 전원 관리에 진입하는 방법이 제시된다. 나아가, PCIe 링크 전원 관리에 진입한 후 다시 호스트(300)로 데이터를 전송해야 될 시점이 오면, 자체적으로 PCIe 링크 전원 관리를 종료하는 방법이 제시된다.
도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.
도 1 및 도 2를 참조하면, 도 2의 PCI 구성요소(PCI COMPONENT 1, 2)는 도 1의 루트 컴플렉스(120), 스위치(140), PCIe 엔드 포인트(150_1, 150_2), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170) 중 어느 하나일 수 있다. 즉, 도 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은 PCIe 인터페이스 장치에 포함된 구성들에 각각 포함된 계층을 나타낸 도면이다.
도 2 및 도 3을 참조하면, 도 3은 도 2의 PCI 구성요소(PCI COMPONENT 1, 2)에 각각 포함된 계층을 도시한다. 도 3에서, PCI 구성요소(PCI COMPONENT 1, 2)는 각각 트랜잭션 레이어(211, 221), 데이터 링크 레이어(212, 222) 및 피지컬 레이어(213, 223)로 구성될 수 있다. 피지컬 레이어(213, 223)는 논리 서브 블록(213_1, 223_1) 및 물리 서브 블록(213_2, 223_2)을 포함할 수 있다.
실시 예에서, 트랜잭션 레이어(211, 221)는 TLP(transaction layer packet)를 조합 또는 분해할 수 있다. 여기서, TLP는 리드와 라이트의 트랜잭션, 즉 특정 이벤트를 처리하는데 사용할 수 있다.
트랜잭션 레이어(211, 221)는 신용 기반 플로우를 제어할 수 있다. 또, 트랜잭션 레이어(211, 221)는 트랜잭션 타입에 따라 다양한 포맷의 어드레싱을 지원할 수 있다. 예를 들면, 트랜잭션 레이어(211, 221)는 메모리, 입출력, 컨피겨레이션 또는 메시지에 대한 어드레싱을 지원할 수 있다.
실시 예에서, 트랜잭션 레이어(211, 221)는 초기화 및 컨피겨레이션 기능을 수행할 수 있다. 구체적으로, 트랜잭션 레이어(211, 221)는 프로세서 또는 관리 장치에서 생성한 링크 설정 정보를 저장할 수 있다. 또, 트랜잭션 레이어(211, 221)는 피지컬 레이어(213, 223)에서 결정된 대역폭 및 주파수와 관련된 링크 속성을 저장할 수 있다.
실시 예에서, 트랜잭션 레이어(211, 221)는 패킷을 생성하고 처리할 수 있다. 구체적으로, 장치 코어에서 요청된 TLP를 생성하고, 수신된 TLP를 데이터 페이로드 또는 상태 정보로 변환할 수 있다. 또, 트랜잭션 레이어(211, 221)는 End-to-End 데이터 인테그리티를 지원하는 경우 CRC(cyclic redundancy code)를 생성하고 TLP의 header에 업데이트할 수 있다.
실시 예에서, 트랜잭션 레이어(211, 221)는 플로우 제어를 할 수 있다. 구체적으로, 트랜잭션 레이어(211, 221)는 링크에서 TLP에 대한 플로우 제어 크레딧을 추적할 수 있다. 또, 트랜잭션 레이어(211, 221)는 데이터 링크 레이어(212, 222)를 통해 트랜잭션 크레딧 상태를 주기적으로 수신할 수 있다. 트랜잭션 레이어(211, 221)는 플로우 제어 정보를 기초로 TLP 전송을 제어할 수 있다.
실시 예에서, 트랜잭션 레이어(211, 221)는 전원을 관리할 수 있다. 구체적으로, 트랜잭션 레이어(211, 221)는 시스템 소프트웨어의 지시에 따른 전원을 관리할 수 있다. 또, 트랜잭션 레이어(211, 221)는 전원이 켜진 상태에서 하드웨어의 지시에 따라 자율적인 전원 관리를 할 수 있다.
실시 예에서, 트랜잭션 레이어(211, 221)는 애플리케이션의 특정 클래스를 위해 가상 채널 메커니즘 및 트래픽 클래스 식별을 할 수 있다. 트랜잭션 레이어(211, 221)는 특정 피지컬 리소스를 통해 독립적인 논리 데이터 플로우를 제공할 수 있다. 또, 트랜잭션 레이어(211, 221)는 패킷 라벨링을 통하여 서로 다른 오더링을 제공하는 방식으로 적절한 서비스 정책을 적용할 수 있다.
실시 예에서, 데이터 링크 레이어(212, 222)는 링크 관리, 데이터 인테그리티, 에러 검출 및 에러 정정을 담당할 수 있다. 데이터 링크 레이어(212, 222)는 송신할 TLP에 대해 데이터 보호 코드 및 TLP 시퀀스 넘버를 부여하여 피지컬 레이어(213, 223)로 송신할 수 있다. 또, 데이터 링크 레이어(212, 222)는 피지컬 레이어(213, 223)로부터 수신된 TLP의 인테그리티를 확인하여 트랜잭션 레이어(211, 221)에 송신할 수 있다.
데이터 링크 레이어(212, 222)는 TLP의 에러를 감지하면, 에러가 없는 TLP를 수신하거나, 링크가 페일 상태임이 판단될 때까지 TLP의 재송신을 피지컬 레이어(213, 223)에 요청할 수 있다. 데이터 링크 레이어(212, 222)는 링크 관리에 사용되는 DLLP(data link layer packet)을 생성하고 소비할 수 있다.
실시 예에서, 데이터 링크 레이어(212, 222)는 신뢰할 수 있는 정보를 교환할 수 있다. 또, 데이터 링크 레이어(212, 222)는 초기화 및 전원을 관리할 수 있다. 구체적으로, 데이터 링크 레이어(212, 222)는 트랜잭션 레이어(211, 221)의 전원 상태 요청을 피지컬 레이어(213, 223)로 전송할 수 있다. 또, 데이터 링크 레이어(212, 222)는 활성화 여부, 리셋, 연결 해제 및 전원 관리 상태에 관한 정보를 트랜잭션 레이어(211, 221)로 전송할 수 있다.
실시 예에서, 데이터 링크 레이어(212, 222)는 데이터 보호, 에러 확인 및 재시도를 수행할 수 있다. 구체적으로, 데이터 링크 레이어(212, 222)는 데이터 보호를 위해 CRC를 생성할 수 있다. 또, 데이터 링크 레이어(212, 222)는 전송된 TLP에 대해 재시도가 가능하도록 TLP를 저장할 수 있다. 데이터 링크 레이어(212, 222)는 TLP를 확인하고 재시도 메시지를 전송하고, 에러 보고 및 로깅을 위한 에러 표시를 할 수 있다.
실시 예에서, 피지컬 레이어(213, 223)는 드라이버, 입력 버퍼, 병렬-직렬 또는 직렬-병렬 변환기 및 PLL(phase locked loop) 등 인터페이스 작동을 위한 구성을 포함할 수 있다.
실시 예에서, 피지컬 레이어(213, 223)는 데이터 링크 레이어(212, 222)로부터 수신된 패킷을 직렬화된 포맷으로 변환하여 전송할 수 있다. 또, 피지컬 레이어(213, 223)는 링크의 다른 쪽에 연결된 장치와의 호환성에 따라 대역폭 및 주파수를 설정할 수 있다. 피지컬 레이어(213, 223)는 데이터를 직렬로 통신하기 위해, 패킷을 병렬에서 직렬, 직렬에서 다시 병렬로 변환할 수 있다. 즉, 피지컬 레이어(213, 223)는 시리얼라이저 또는 디시리얼라이저의 기능을 수행할 수 있다.
실시 예에서, 피지컬 레이어(213, 223)는 인터페이스 초기화, 유지 관리 및 상태 추적을 할 수 있다. 구체적으로, 피지컬 레이어(213, 223)는 구성요소 간 연결로 인한 전원을 관리할 수 있다. 또, 피지컬 레이어(213, 223)는 구성요소 간 대역폭 및 레인 맵핑을 협상하고, 레인의 극성을 반전시킬 수 있다.
피지컬 레이어(213, 223)는 symbol 및 special ordered set을 생성할 수 있다. 또, 피지컬 레이어(213, 223)는 생성된 symbol을 전송하고 얼라인할 수 있다.
실시 예에서, 피지컬 레이어(213, 223)는 PCI 구성요소 사이에서 패킷의 송신기 또는 수신기 역할을 할 수 있다. 즉, 피지컬 레이어(213, 223)는 트랜잭션 레이어(211, 221) 및 데이터 링크 레이어(212, 222)를 통해 수신된 패킷을 변환하여 다른 PCI 구성요소에 송신하고, 다른 PCI 구성요소로부터 수신된 패킷을 변환하여 데이터 링크 레이어(212, 222)를 통해 트랜잭션 레이어(211, 221)로 송신할 수 있다.
실시 예에서, 피지컬 레이어(213, 223)에 포함된 논리 서브 블록(213_1, 223_1)은 두 개의 섹션으로 구성될 수 있다. 두 개의 섹션 중 하나는 전송 섹션으로, 데이터 링크 레이어(212, 222)로부터 전송된 정보를 물리 서브 블록(213_2, 223_2)으로 전송하는 것을 준비하는 섹션일 수 있다. 두 개의 섹션 중 다른 하나는 수신 섹션으로, 데이터 링크 레이어(212, 222)로 정보를 출력하기 전, 정보를 식별하고 데이터 링크 레이어(212, 222)로 정보의 출력을 준비하는 섹션일 수 있다.
실시 예에서, 피지컬 레이어(213, 223)에 포함된 물리 서브 블록(213_2, 223_2)은 전기적 서브 블록으로, 공통 또는 개별적으로 독립된 기준 클럭 구조를 지원할 수 있다. 또한, 물리 서브 블록(213_2, 223_2)은 저전력 링크 동작을 위해 스윙을 감소시킬 수 있으며, 대역 내 수신기를 감지하고 전기적 유휴 상태를 감지할 수 있다.
도 4는 LTSSM을 설명하기 위한 도면이다.
도 1 및 도 4를 참조하면, 도 4는 도 1의 PCIe(peripheral component interconnect express) 인터페이스 장치(100)에 포함된 구성들 중 중앙 처리 장치(110), 루트 컴플렉스(120), 스위치(140) 및 엔트 포인트에 연결된 장치들(180_1, 180_2)을 도시한다. 도 4의 각 구성요소는 LTSSM(Link Training & Status State Machine)을 포함할 수 있다. LTSSM은 각 구성요소를 연결하는 링크를 구성하는 레인의 극성, 링크 또는 레인의 수, 이퀄라이제이션, 데이터 전송 속도 등 다수의 링크 파라미터들을 협상하기 위해 Training Sequences(ex. TS1, TS2)을 교환할 수 있다.
실시 예에서, LTSSM은 PCIe 환경에서, 피지컬 레이어(도 3의 213, 223)가 제어하는 하드웨어 기반의 프로세서로, 정상적인 작동을 위해, 각 구성요소간 링크와 포트를 설정하고 초기화하여 패킷의 전송을 가능하게 할 수 있다. 링크가 가질 수 있는 상태는 Detect, Polling 등 11개의 상태 중 어느 하나이며, 각 상태는 하위 상태를 가질 수 있다.
링크가 가질 수 있는 여러 상태들 간 플로우는 도 5를 통해 보다 상세히 설명하도록 한다.
실시 예에서, 각 구성요소를 연결하기 위한 포트를 구성하기 위해, 개별 링크마다 별도의 LTSSM이 필요할 수 있다. 예를 들면, 루트 컴플렉스(120)와 장치(180_2)를 연결하기 위한 포트를 구성하기 위해, 루트 컴플렉스(120) 및 장치(180_2)는 각각 LTSSM을 포함할 수 있다. 또, 루트 컴플렉스(120)와 스위치(140)를 연결하기 위한 포트를 구성하기 위해, 루트 컴플렉스(120) 및 스위치(140)는 각각 LTSSM을 포함할 수 있다. 나아가, 스위치(140)와 장치(180_1)를 연결하기 위한 포트를 구성하기 위해, 스위치(140) 및 장치(180_1)는 각각 LTSSM을 포함할 수 있다.
실시 예에서, 스위치(140)의 포트들 중 루트 컴플렉스(120)와 가까운 포트는 업스트림 포트, 루트 컴플렉스(120)와 먼 포트는 다운스트림 포트일 수 있다. 업스트림 포트 및 다운스트림 포트는 각각 루트 컴플렉스(120) 및 장치(180_1)와 Training Sequences(ex. TS1, TS2)을 서로 주고 받음으로써 LTSSM 천이의 싱크를 맞출 수 있다. 이 때, LTSSM 천이의 싱크를 맞추는 것은 업스트림 포트 및 다운스트림 포트가 서로 독립적이며, 서로 영향을 주거나 받지 않을 수 있다.
실시 예에서, 중앙 처리 장치(110)는 각 구성요소간 LTSSM에 영향을 받지 않을 수 있다. 따라서, 호스트에 의해 의도되지 않은 링크다운의 경우, 블루 스크린 등의 문제가 발생될 수 있다.
도 5는 LTSSM의 각 단계를 설명하기 도면이다.
도 4 및 도 5를 참조하면, 도 5는 도 4의 LTSSM 천이의 싱크를 맞추기 위한 각 단계들을 도시한다.
실시 예에서, DETECT 단계는 도 2의 PCI 구성요소(PCI COMPONENT 1, 2)의 양 끝 단에서 연결된 링크를 감지하는 단계일 수 있다. 즉, DETECT 단계는 물리적으로 연결된 레인을 탐색하는 단계일 수 있다.
DETECT 단계는 LTSSM의 초기 단계로서 리셋 후 또는 부팅 시 진입되는 단계일 수 있다. 또, DETECT 단계는 모든 로직, 포트 및 레지스터를 리셋할 수 있다. DETECT 단계는 지시가 있을 때 진입될 수 있다. LTSSM은 DETECT 단계에서 POLLING 단계로 진행할 수 있다.
실시 예에서, POLLING 단계는 감지된 레인 중 데이터 통신이 가능한 레인을 구별하는 단계일 수 있다. 즉, POLLING 단계는 PCI 구성요소(PCI COMPONENT 1, 2)의 양 끝 단의 클럭을 동기화하고, 레인의 극성을 확인하고(D+인지 또는 D-인지), 레인이 사용할 수 있는 데이터 전송 속도를 확인하는 단계일 수 있다. 나아가, POLLING 단계는 데이터에서 연속된 비트들 사이의 경계를 확인하는 단계일 수 있다. 실시 예에서, LTSSM은 POLLING 단계에서 CONFIGURATION 단계로 진행할 수 있다.
실시 예에서, CONFIGURATION 단계는 레인의 연결 상태를 확인하는 단계일 수 있다. 예를 들면, CONFIGURATION 단계는 데이터 통신이 가능한 레인폭을 확정하는 단계일 수 있다. 또, CONFIGURATION 단계에서, Training Sequences의 PAD로 표기되던 비트가 협상된 수로 변경되고, 양 쪽 장치의 최대 성능을 위한 협상이 수행될 수 있다. CONFIGURATION 단계에서, 송신기와 수신기는 모두 협상된 데이터 송수신 속도로 데이터를 송신 또는 수신할 수 있다. 또, CONFIGURATION 단계에서, 여러 레인들에서 parallel bit streams이 각각 다른 시간에 다른 장치에 도착하는 Lane to Lane De-skew를 해결할 수 있다.
실시 예에서, LTSSM은 CONFIGURATION 단계에서 DETECT 단계, L0 단계, RECOVERY 단계, LOOPBACK 단계, 또는 DISABLED 단계로 진행할 수 있다.
실시 예에서, L0 단계는 정상적으로 데이터 및 제어 패킷을 송수신하는 단계일 수 있다. 즉, L0 단계에서, TLP(transaction layer packet) 및 DLLP(data link layer packet)가 송수신될 수 있다. 또, 모든 전원 관리 상태는 L0 단계에서 시작될 수 있다. L0 단계는 정상 동작 상태(normal operational state)일 수 있다. L0 단계는 최대 활성 상태(fully active state)일 수 있다.
실시 예에서, LTSSM은 L0 단계에서 L1 단계, L2 단계, L0s 단계 또는 RECOVERY 단계로 진행할 수 있다.
실시 예에서, L0s 단계, L1 단계, L2 단계는 각각 저전력 상태의 단계일 수 있다.
구체적으로, L0s 단계는 L0 단계의 하위 단계로, L0s 단계에서 링크는 RECOVERY 단계를 거치지 않고 빠르게 저전력 상태로 진행하고 복구할 수 있다. 또, L0s 단계에서 L0 단계로 진행하기 위해서, bit lock, symbol lock 및 Lane to Lane De-skew가 다시 설정될 수 있다. 이 때, 양 끝 단 포트의 송신기 및 수신기는 동시에 L0s 단계에 있을 필요는 없다. LTSSM은 L0s 단계에서 L0 단계 또는 RECOVERY 단계로 진행할 수 있다. L0s 단계는 전력 절감 상태일 수 있다. L0s 단계는 일부 기능의 유휴 또는 대기 상태(idle or standby state)일 수 있다.
구체적으로, L1 단계는 L0s 단계보다 L0 단계로의 복귀 속도는 느리지만, L1 단계에서 추가적인 재개 레이턴시를 통해 L0 단계에 비해 추가적으로 더 큰 전력을 절약할 수 있는 단계일 수 있다. L1 단계는 ASPM(active state power management) 또는 Power Management Software를 통해 진입될 수 있다. 이 때, ASPM는 PCIe로 연결된 장치가 사용 중이지 않을 때 링크를 저전력 상태로 변경하는 정책이고, Power Management Software는 PCIe로 연결된 장치를 저전력 상태로 바꾸는 정책일 수 있다. L1 단계는 저전력 대기 상태(low power standby state)일 수 있다.
또, L1 단계로의 진입은 데이터 링크 레이어(도 3의 212, 222)로부터 수신된 지시에 의해 EIOS(electrical idle ordered set)를 수신한 후 진행될 수 있다. LTSSM은 L1 단계에서 RECOVERY 단계로 진행할 수 있다.
구체적으로, L2 단계에서, 최대 전력이 보전되며, PCIe로 연결된 장치의 송신기 및 수신기가 차단될 수 있다. L2 단계에서 전원 및 클럭은 보장되지 않지만, AUX 전원은 사용할 수 있다. L2 단계로의 진입은 데이터 링크 레이어(도 3의 212, 222)로부터 지시에 의해 EIOS를 수신한 후 진행될 수 있다. LTSSM은 L2 단계에서 DETECT 단계로 진행할 수 있다. L2 단계는 적극적인 전력 절감 상태 일수 있다. L2 단계는 대부분의 기능에 전력이 공급되지 않는 저전력 슬립 상태(low power sleep state)일 수 있다.
실시 예에서, RECOVERY 단계는 L0 단계에서 에러 발생 시 진행되며, 에러 복구 후 다시 L0 단계로 진행할 수 있다. 또, RECOVERY 단계는 L1 단계에서 L0 단계로 복귀 시 진행되는 단계일 수 있으며, LOOPBACK 단계, HOT RESET 단계 또는 DISABLED 단계 진입 시 천이되는 단계일 수 있다.
RECOVERY 단계에서, bit lock, symbol lock 또는 block alignment 및 Lane to lane de-skew가 재설정될 수 있다. 또, RECOVERY 단계에서, 레인의 속도가 변경될 수 있다.
실시 예에서, LTSSM은 RECOVERY 단계에서 L0 단계, CONFIGURATION 단계, DETECT 단계, LOOPBACK 단계, HOT RESET 단계 또는 DISABLED 단계로 진행할 수 있다.
실시 예에서, LOOPBACK 단계는 테스트를 위해 진행되는 단계로, bit error rate 측정 시 진입되는 단계일 수 있다. LOOPBACK 단계 는 링크를 리셋하는 단계로, Training Sequences(ex. TS1, TS2)의 Training Control 필드의 bit 2를 사용하는 단계이며, 수신기는 수신된 패킷을 모두 재전송할 수 있다. LTSSM은 LOOPBACK 단계에서 bit error rate 측정 후 DETECT 단계로 진행할 수 있다.
실시 예에서, HOT RESET 단계는 링크를 리셋하는 단계로, Training Sequences(ex. TS1, TS2)의 Training Control 필드의 bit 0을 사용하는 단계일 수 있다. LTSSM은 HOT RESET 단계에서 DETECT 단계로 진행할 수 있다.
실시 예에서, DISABLED 단계는 수신기가 낮은 임피던스 상태일 때, 송신기를 전기적 아이들 상태로 만드는 단계일 수 있다. DISABLED 단계에서, 전기적 아이들 상태가 종료될 때까지, 링크는 비활성화될 수 있다. DISABLED 단계는 Training Sequences(ex. TS1, TS2)의 Training Control 필드의 bit 1을 사용하는 단계일 수 있다. 상위 단계에서 지시를 수신하면, LTSSM은 DISABLED 단계로 진행될 수 있다. LTSSM은 DISABLED 단계에서 DETECT 단계로 진행할 수 있다.
도 5에서, 링크업은 DETECT 단계에서 POLLING 단계, CONFIGURATION 단계를 거쳐 L0 단계로 천이되는 것을 나타내고, 링크다운은 다시 DETECT 단계로 천이되는 것을 나타낼 수 있다.
또, LTSSM은 각 단계마다 링크업 레지스터 값을 설정할 수 있다. 예를 들면, 링크업 레지스터가 ‘1’인 상태는 링크업 상태, 링크업 레지스터가 ‘0’인 상태는 링크다운 상태일 수 있다. LTSSM이 최초로 L0 단계로 진행할 경우 링크업 레지스터는 ‘1’로 설정될 수 있다.
구체적으로, DETECT 단계, POLLING 단계, CONFIGURATION 단계, LOOPBACK 단계, HOT RESET 단계 및 DISABLED 단계에 대응하는 링크업 레지스터는 ‘0’으로 설정되고, L0 단계, L0s 단계, L1 단계 및 L2 단계에 대응하는 링크업 레지스터는 ‘1’로 설정될 수 있다.
실시 예에서, 링크다운 시, 데이터는 플러쉬되고, PCIe 레지스터 및 NVMe 레지스터는 리셋될 수 있다. 따라서, 호스트는 PCIe 레지스터 및 NVMe 레지스터를 초기화해야 한다. 호스트에 의도된 링크다운의 경우, 호스트가 PCIe 및 NVMe를 초기화할 수 있다.
그러나, 호스트에 의도되지 않은 서든 링크다운의 경우, 예를 들면, 데이터 송수신 속도 변경의 실패, 레인 변경의 실패, 저전력 종료의 실패 등의 경우, LTSSM timeout이 발생되어, LTSSM은 DETECT 단계로 천이될 수 있다. 이 때, 호스트에 의도되지 않은 서든 링크다운은 두 포트 간 링크다운이므로 OS 및 NVMe driver는 이를 인지하지 못할 수 있다. 따라서, 호스트는 PCIe 및 NVMe를 초기화하지 않고 장치에 접근을 시도하며, 리셋된 값들로 인해 Blue screen 및 호스트 동작의 중단 등이 발생될 수 있다.
도 6은 NVMe에서 커맨드의 프로세스 과정을 도시한 도면이다.
도 1 및 도 6을 참조하면, 도 6은 도 1의 호스트(300)에 포함된 NVMe 드라이버(340) 및 호스트 메모리(330)를 통해 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치에 커맨드가 수행되는 과정을 도시한다. NVMe 장치는 NVMe 컨트롤러(500)를 포함할 수 있다. 도 6에서, 호스트 메모리(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)로부터 커맨드를 페치할 수 있다(COMMAND FETCH). 즉, 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를 저장할 수 있다.
도 7은 NVMe에서 리드 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 6 및 도 7을 참조하면, 도 7는 도 6의 NVMe 드라이버(도 6의 340), 호스트 메모리(도 6의 330), PCIe 엔드 포인트(도 1의 150_1, 150_2) 또는 레거시 엔드 포인트(도 1의 160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)에 포함된 NVM(non-volatile memory) 및 NVM를 제어하는 NVMe 컨트롤러(도 6의 500)의 동작을 도시한다.
실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, NVMe 드라이버(340)는 SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다. SQ DOORBELL 신호는 도 6의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다.
실시 예에서, NVMe 컨트롤러(500)는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다(COMMAND FETCH). 즉, NVMe 컨트롤러(500)는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다.
예를 들면, 도 7에서 SSD에 수행될 커맨드(COMMAND)는 리드 커맨드이므로, NVMe 컨트롤러(500)는 수신된 커맨드에 응답하여, 커맨드에 대응하는 논리 블록 어드레스(logical block address, LBA)를 물리 블록 어드레스(physical block address, PBA)로 변환한 후 내부적으로 NVM에 리드 데이터를 요청할 수 있다(REQUEST READ DATA). 이 후, NVMe 컨트롤러(500)는 NVM로부터 리드 데이터 요청에 대응하는 리드 데이터를 수신할 수 있다(RETURN READ DATA). 또, NVMe 컨트롤러(500)는 수신된 리드 데이터를 호스트 메모리(330)에 전송할 수 있다(TRANSFER READ DATA). NVMe 드라이버(340)는 수신된 리드 데이터에 따른 동작을 수행할 수 있다.
실시 예에서, SSD가 커맨드들에 대응하는 동작을 수행한 후, NVMe 컨트롤러(500)는 호스트 메모리(330)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). 즉, SSD가 커맨드들에 대응하는 동작을 수행한 후, NVMe 컨트롤러(500)는 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 신호는 도 6의 COMPLETION QUEUE HEAD DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 동작이 완료된 커맨드가 식별되도록, CQ DOORBELL 신호를 SSD에 출력할 수 있다.
이 후, NVMe 드라이버(340)는 SSD에 수행될 새로운 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.
실시 예에서, 리드 커맨드의 프로세스 중 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 타임이 발생될 수 있다. 예를 들면, S701~S705 중 어느 하나의 구간에서 아이들 타임이 발생될 수 있다.
구체적으로, NVMe 드라이버(340)가 SUBMISSION QUEUE TAIL DOORBELL 신호를 출력한 후 호스트 메모리(330)로부터 커맨드를 페치(COMMAND FETCH)하기 전(S701), 호스트 메모리(330)로부터 커맨드를 페치(COMMAND FETCH)한 후 리드된 데이터를 호스트 메모리(330)로 전송하기 전(S702), 리드된 데이터를 호스트 메모리(330)로 전송한 후 COMPLETION QUEUE를 업데이트(CQ UPDATE)하기 전(S703), COMPLETION QUEUE를 업데이트(CQ UPDATE)한 후 INTERRUPT 신호를 출력하기 전(S704), INTERRUPT 신호를 출력한 후 CQ DOORBELL 신호를 출력하기 전(S705), 각각 아이들 타임이 발생될 수 있다.
실시 예에서, 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 상태임에도 PCIe 링크 전원 관리에 진입하지 못하면, PCIe 인터페이스 장치(100) 및 SSD에 효율적으로 전원을 공급할 수 없다. 즉, 종래에는, 호스트 메모리(330)에 포함된 SUBMISSION QUEUE 및 COMPLETION QUEUE에 엔트리가 존재하지 않고, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 없는 경우에만 PCIe 링크 전원 관리에 진입할 수 있으므로, 전원 공급이 비효율적일 수 있었다.
따라서, 본 발명에서, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 있는 경우에도, PCIe 인터페이스 장치(100)가 자체적으로 PCIe 링크의 아이들 상태를 감지하고, 아이들 상태가 감지되면 PCIe 링크 전원 관리에 진입한 후 자체적으로 PCIe 링크 전원 관리를 종료하고 웨이크업하는 방법이 제시된다.
도 8은 NVMe에서 라이트 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 6 및 도 8을 참조하면, 도 8는 도 6의 NVMe 드라이버(도 6의 340), 호스트 메모리(도 6의 330), PCIe 엔드 포인트(도 1의 150_1, 150_2) 또는 레거시 엔드 포인트(도 1의 160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)에 포함된 NVM(non-volatile memory) 및 NVM를 제어하는 NVMe 컨트롤러(도 6의 500)의 동작을 도시한다.
실시 예에서, NVMe 드라이버(340)는 SSD에 수행될 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)는 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, NVMe 드라이버(340)는 SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다. SQ DOORBELL 신호는 도 6의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다.
실시 예에서, NVMe 컨트롤러(500)는 호스트 메모리(330)로부터 커맨드를 페치할 수 있다(COMMAND FETCH). 즉, NVMe 컨트롤러(500)는 SUBMISSION QUEUE에 큐잉된 커맨드들을 호스트 메모리(330)로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다.
예를 들면, 도 8에서 SSD에 수행될 커맨드(COMMAND)는 라이트 커맨드이므로, NVMe 컨트롤러(500)는 수신된 커맨드에 응답하여, NVM에 리소스 할당을 요청할 수 있다(REQUEST RESOURCE). NVM는 리소스 할당 요청에 응답하여 내부적으로 리소스 및 임시 버퍼 메모리를 할당할 수 있다. 리소스 및 임시 버퍼 메모리를 할당이 완료되면, NVM는 리소스를 리턴할 수 있다(RETURN RESOURCE).
NVMe 컨트롤러(500)는 임시 버퍼 메모리에 라이트 커맨드에 대응하는 라이트 데이터를 저장하기 위해, 호스트 메모리(330)에 라이트 데이터 요청을 출력할 수 있다(REQUEST WRITE DATA). 호스트 메모리(330)는 라이트 데이터 요청에 응답하여 라이트 데이터를 NVMe 컨트롤러(500)에 리턴하고(RETURN WRITE DATA), NVMe 컨트롤러(500)는 수신된 라이트 데이터를 임시 버퍼 메모리에 저장한 후 라이트 커맨드에 대응하는 동작을 수행할 수 있다.
실시 예에서, NVMe 컨트롤러(500)가 수신된 라이트 데이터를 임시 버퍼 메모리에 저장한 후, NVMe 컨트롤러(500)는 호스트 메모리(330)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). 즉, NVMe 컨트롤러(500)는 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 신호는 도 6의 COMPLETION QUEUE HEAD DOORBELL 신호와 동일한 신호일 수 있다. 즉, NVMe 드라이버(340)는 동작이 완료된 커맨드가 식별되도록, CQ DOORBELL 신호를 SSD에 출력할 수 있다.
이 후, NVMe 드라이버(340)는 SSD에 수행될 새로운 커맨드(COMMAND)를 호스트 메모리(330)에 출력하고, 호스트 메모리(330)로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.
실시 예에서, 라이트 커맨드의 프로세스 중 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 타임이 발생될 수 있다. 예를 들면, S801~S805 중 어느 하나의 구간에서 아이들 타임이 발생될 수 있다.
구체적으로, NVMe 드라이버(340)가 SUBMISSION QUEUE TAIL DOORBELL 신호를 출력한 후 호스트 메모리(330)로부터 커맨드를 페치(COMMAND FETCH)하기 전(S801), 호스트 메모리(330)로부터 커맨드를 페치(COMMAND FETCH)한 후 호스트 메모리(330)에 라이트 데이터를 요청하기 전(S802), 라이트 데이터를 호스트 메모리(330)로 전송한 후 COMPLETION QUEUE를 업데이트(CQ UPDATE)하기 전(S803), COMPLETION QUEUE를 업데이트(CQ UPDATE)한 후 INTERRUPT 신호를 출력하기 전(S804), INTERRUPT 신호를 출력한 후 CQ DOORBELL 신호를 출력하기 전(S805), 각각 아이들 타임이 발생될 수 있다.
실시 예에서, 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 상태임에도 PCIe 링크 전원 관리에 진입하지 못하면, PCIe 인터페이스 장치(100) 및 SSD에 효율적으로 전원을 공급할 수 없다. 즉, 종래에는, 호스트 메모리(330)에 포함된 SUBMISSION QUEUE 및 COMPLETION QUEUE에 엔트리가 존재하지 않고, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 없는 경우에만 PCIe 링크 전원 관리에 진입할 수 있으므로, 전원 공급이 비효율적일 수 있었다.
따라서, 본 발명에서, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 있는 경우에도, PCIe 인터페이스 장치(100)가 자체적으로 PCIe 링크의 아이들 상태를 감지하고, 아이들 상태가 감지되면 PCIe 링크 전원 관리에 진입한 후 자체적으로 PCIe 링크 전원 관리를 종료하고 웨이크업하는 방법이 제시된다.
도 9는 NVMe에서 리드 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 9를 참조하면, 도 9는 PROVIDER 및 제1 내지 제3 계층(1st LAYER~3rd LAYER) 사이의 동작을 도시한다. 도 9에서, PROVIDER는 도 1의 호스트(도 1의 300)에 포함된 구성 요소들 중 어느 하나이거나 또는 도 1의 PCIe 인터페이스 장치(도 1의 100)의 구성 요소들 중 어느 하나일 수 있다.
도 9에서, 제1 내지 제3 계층(1st LAYER~3rd LAYER)은 호스트 메모리(도 6의 330)를 포함하는 DEVICE PCIe LAYER, PCIe 엔드 포인트(도 1의 150_1, 150_2) 또는 레거시 엔드 포인트(도 1의 160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)에 포함된 NVM(non-volatile memory)의 DEVICE FTL LAYER 및 NVM를 제어하는 NVMe 컨트롤러(도 6의 500)를 포함하는 DEVICE NVMe LAYER 중 어느 하나일 수 있다.
실시 예에서, NVM에 수행될 리드 커맨드가 제1 계층(1st LAYER)에 준비되면, PROVIDER는 해당 리드 커맨드의 처리를 요청하기 위해 PCIe를 통해 inbound write request packet(Downstream MemWr TLP)을 보내 IO SQ tail update를 NVM에 전달할 수 있다.
구체적으로, PROVIDER는 SSD에 수행될 커맨드(COMMAND)를 제1 계층(1st LAYER)에 출력할 수 있다. 예를 들면, PROVIDER에 포함된 NVMe 드라이버(340)는 제1 계층(1st LAYER)에 커맨드(COMMAND)를 출력하고, 제1 계층(1st LAYER)은 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, PROVIDER는 SQ DOORBELL 신호를 제2 계층(2nd LAYER)에 출력할 수 있다. 예를 들면, PROVIDER에 포함된 NVMe 드라이버(340)는 SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다. SQ DOORBELL 신호는 도 6의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, PROVIDER에 포함된 NVMe 드라이버(340)는 제1 계층(1st LAYER)으로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다.
실시 예에서, 제2 계층(2nd LAYER)은 IO SQ tail update를 감지하고, PCIe를 통해 outbound read request packet(Upstream MemRd TLP)을 보내 제1 계층(1st LAYER)으로부터 커맨드를 페치할 수 있다(COMMAND FETCH). 즉, 제2 계층(2nd LAYER)에 포함된 NVMe 컨트롤러(500)는 SUBMISSION QUEUE에 큐잉된 커맨드들을 제1 계층(1st LAYER)으로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다.
예를 들면, 도 9에서 SSD에 수행될 커맨드(COMMAND)는 리드 커맨드이므로, 제2 계층(2nd LAYER)은 수신된 커맨드에 응답하여, 커맨드에 대응하는 논리 블록 어드레스(logical block address, LBA)를 물리 블록 어드레스(physical block address, PBA)로 변환한 후 내부적으로 제3 계층(3rd LAYER)에 리드 데이터를 요청할 수 있다(REQUEST READ DATA).
이 후, 내부적으로 리드 커맨드에 대응되는 동작이 완료되면, NVM의 임시 버퍼 메모리에 리드 데이터가 저장될 수 있다. NVM은 리드 데이터를 제1 계층(1st LAYER)에 전달하기 위해 PCIe를 통해 outbound write request packet(Upstream MemWr TLP)에 리드 데이터를 포함시켜 전송할 수 있다.
예를 들면, 제2 계층(2nd LAYER)은 NVM의 제3 계층(3rd LAYER)으로부터 리드 데이터 요청에 대응하는 리드 데이터를 수신할 수 있다(RETURN READ DATA). 또, 제2 계층(2nd LAYER)은 수신된 리드 데이터를 제1 계층(1st LAYER)에 전송할 수 있다(TRANSFER READ DATA). PROVIDER는 수신된 리드 데이터에 따른 동작을 수행할 수 있다.
실시 예에서, 제1 계층(1st LAYER)에 리드 데이터의 전송이 완료되면, NVM는 해당 리드 커맨드의 수행이 성공적으로 완료되었다는 것을 제1 계층(1st LAYER)에 전달하기 위해 PCIe를 통해 outbound write request packet(Upstream MemWr TLP)에 COMPLETION QUEUE ENTRY를 포함시켜 전송할 수 있다.
예를 들면, SSD가 커맨드들에 대응하는 동작을 수행한 후, 제2 계층(2nd LAYER)은 제1 계층(1st LAYER)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). 즉, SSD가 커맨드들에 대응하는 동작을 수행한 후, 제2 계층(2nd LAYER)은 COMPLETION QUEUE ENTRY를 제1 계층(1st LAYER)으로 전송하고, 제1 계층(1st LAYER)은 수신된 COMPLETION QUEUE ENTRY를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, NVM는 COMPLETION QUEUE ENTRY가 새로이 전달되었다는 것을 PROVIDER에 알리기 위해 PCIe를 통해 outbound write request packet(Upstream MemWr TLP)에 INTERRUPT 메시지를 포함시켜 PROVIDER에 출력할 수 있다.
예를 들면, 제2 계층(2nd LAYER)은 INTERRUPT 신호를 PROVIDER에 출력할 수 있다. INTERRUPT 신호는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 신호일 수 있다.
실시 예에서, PROVIDER는 COMPLETION QUEUE ENTRY를 NVM로부터 수신하여 처리하였음을 알리기 위해 PCIe를 통해 inbound write request packet(Downstream MemWr TLP)을 보내 IO CQ head update를 NVM에 전송할 수 있다.
예를 들면, PROVIDER가 COMPLETION QUEUE의 COMPLETION QUEUE ENTRY를 기초로 수행하는 동작이 완료되면, PROVIDER는 CQ DOORBELL 신호를 제2 계층(2nd LAYER)에 출력할 수 있다. CQ DOORBELL 신호는 도 6의 COMPLETION QUEUE HEAD DOORBELL 신호와 동일한 신호일 수 있다. 즉, PROVIDER는 동작이 완료된 커맨드가 식별되도록, CQ DOORBELL 신호를 SSD에 출력할 수 있다.
이 후, PROVIDER는 SSD에 수행될 새로운 커맨드(COMMAND)를 제1 계층(1st LAYER)에 출력하고, 제1 계층(1st LAYER)으로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 제2 계층(2nd LAYER)에 출력할 수 있다.
실시 예에서, 리드 커맨드의 프로세스 중 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 타임이 발생될 수 있다. 예를 들면, S901~S905 중 어느 하나의 구간에서 아이들 타임이 발생될 수 있다.
구체적으로, PROVIDER가 SUBMISSION QUEUE TAIL DOORBELL 신호를 출력한 후 제1 계층(1st LAYER)으로부터 커맨드를 페치(COMMAND FETCH)하기 전(S901), 제1 계층(1st LAYER)으로부터 커맨드를 페치(COMMAND FETCH)한 후 리드된 데이터를 제1 계층(1st LAYER)으로 전송하기 전(S902), 리드된 데이터를 제1 계층(1st LAYER)으로 전송한 후 COMPLETION QUEUE를 업데이트(CQ UPDATE)하기 전(S903), COMPLETION QUEUE를 업데이트(CQ UPDATE)한 후 INTERRUPT 신호를 출력하기 전(S904), INTERRUPT 신호를 출력한 후 CQ DOORBELL 신호를 출력하기 전(S905), 각각 아이들 타임이 발생될 수 있다.
실시 예에서, 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 상태임에도 PCIe 링크 전원 관리에 진입하지 못하면, PCIe 인터페이스 장치(100) 및 SSD에 효율적으로 전원을 공급할 수 없다. 즉, 종래에는, 제1 계층(1st LAYER)에 포함된 SUBMISSION QUEUE 및 COMPLETION QUEUE에 엔트리가 존재하지 않고, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 없는 경우에만 PCIe 링크 전원 관리에 진입할 수 있으므로, 전원 공급이 비효율적일 수 있었다.
따라서, 본 발명에서, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 있는 경우에도, S901~S905에서 PCIe 인터페이스 장치(100)가 자체적으로 PCIe 링크의 아이들 상태를 감지하고, 아이들 상태가 감지되면 PCIe 링크 전원 관리에 진입한 후 자체적으로 PCIe 링크 전원 관리를 종료하고 웨이크업하는 방법이 제시된다.
도 10은 NVMe에서 라이트 커맨드의 프로세스의 일 실시 예를 도시한 도면이다.
도 10을 참조하면, 도 10은 PROVIDER 및 제1 내지 제3 계층(1st LAYER~3rd LAYER) 사이의 동작을 도시한다. 도 10에서, PROVIDER는 도 1의 호스트(도 1의 300)에 포함된 구성 요소들 중 어느 하나이거나 또는 도 1의 PCIe 인터페이스 장치(도 1의 100)의 구성 요소들 중 어느 하나일 수 있다.
도 10에서, 제1 내지 제3 계층(1st LAYER~3rd LAYER)은 호스트 메모리(도 6의 330)를 포함하는 DEVICE PCIe LAYER, PCIe 엔드 포인트(도 1의 150_1, 150_2) 또는 레거시 엔드 포인트(도 1의 160_1, 160_2)에 각각 연결된 NVMe(non-volatile memory express) 장치들 중 어느 하나인 SSD(solid state drive)에 포함된 NVM(non-volatile memory)의 DEVICE FTL LAYER 및 NVM를 제어하는 NVMe 컨트롤러(도 6의 500)를 포함하는 DEVICE NVMe LAYER 중 어느 하나일 수 있다.
실시 예에서, NVM에 수행될 라이트 커맨드가 제1 계층(1st LAYER)에 준비되면, PROVIDER는 해당 라이트 커맨드의 처리를 요청하기 위해 PCIe를 통해 inbound write request packet(Downstream MemWr TLP)을 보내 IO SQ tail update를 NVM에 전달할 수 있다.
구체적으로, PROVIDER는 SSD에 수행될 커맨드(COMMAND)를 제1 계층(1st LAYER)에 출력할 수 있다. 예를 들면, PROVIDER에 포함된 NVMe 드라이버(340)는 제1 계층(1st LAYER)에 커맨드(COMMAND)를 출력하고, 제1 계층(1st LAYER)은 수신된 커맨드를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, PROVIDER는 SQ DOORBELL 신호를 제2 계층(2nd LAYER)에 출력할 수 있다. 구체적으로, PROVIDER에 포함된 NVMe 드라이버(340)는 SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다. SQ DOORBELL 신호는 도 6의 SUBMISSION QUEUE TAIL DOORBELL 신호와 동일한 신호일 수 있다. 즉, PROVIDER에 포함된 NVMe 드라이버(340)는 제1 계층(1st LAYER)으로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 NVMe 컨트롤러(500)에 출력할 수 있다.
실시 예에서, 제2 계층(2nd LAYER)은 IO SQ tail update를 감지하고, PCIe를 통해 outbound read request packet(Upstream MemRd TLP)을 보내 제1 계층(1st LAYER)으로부터 커맨드를 페치할 수 있다(COMMAND FETCH). 즉, 제2 계층(2nd LAYER)에 포함된 NVMe 컨트롤러(500)는 SUBMISSION QUEUE에 큐잉된 커맨드들을 제1 계층(1st LAYER)으로부터 수신하고, 수신된 커맨드들에 대응하는 동작들을 수행할 수 있다.
예를 들면, 도 9에서 SSD에 수행될 커맨드(COMMAND)는 라이트 커맨드이므로, 제2 계층(2nd LAYER)은 수신된 커맨드에 응답하여, NVM에 리소스 할당을 요청할 수 있다(REQUEST RESOURCE). NVM는 리소스 할당 요청에 응답하여 내부적으로 리소스 및 임시 버퍼 메모리를 할당할 수 있다. 내부적으로 리소스 및 임시 버퍼 메모리를 할당이 완료되면, 제2 계층(2nd LAYER)은 임시 버퍼 메모리에 라이트 데이터를 저장하기 위해 PCIe를 통해 outbound read request packet(Upstream MemRd TLP)을 전송할 수 있다. 즉, 리소스 및 임시 버퍼 메모리를 할당이 완료되면, NVM는 리소스를 리턴할 수 있다(RETURN RESOURCE).
실시 예에서, 제2 계층(2nd LAYER)은 임시 버퍼 메모리에 라이트 커맨드에 대응하는 라이트 데이터를 저장하기 위해, 제1 계층(1st LAYER)에 라이트 데이터 요청을 출력할 수 있다(REQUEST WRITE DATA). 제1 계층(1st LAYER)은 라이트 데이터 요청에 응답하여 라이트 데이터를 제2 계층(2nd LAYER)에 리턴하고(RETURN WRITE DATA), 제2 계층(2nd LAYER)은 수신된 라이트 데이터를 임시 버퍼 메모리에 저장한 후 라이트 커맨드에 대응하는 동작을 수행할 수 있다.
실시 예에서, 임시 버퍼 메모리(또는 NVM)에 라이트 데이터의 저장이 완료되면, 제2 계층(2nd LAYER)은 해당 커맨드의 수행이 성공적으로 완료되었다는 것을 제1 계층(1st LAYER)에 전달하기 위해 PCIe를 통해 outbound write request packet(Upstream MemWr TLP)에 COMPLETION QUEUE ENTRY를 포함시켜 전송할 수 있다.
예를 들면, 제2 계층(2nd LAYER)이 수신된 라이트 데이터를 임시 버퍼 메모리에 저장한 후, 제2 계층(2nd LAYER)은 제1 계층(1st LAYER)의 COMPLETION QUEUE를 업데이트할 수 있다(CQ UPDATE). 즉, 제2 계층(2nd LAYER)은 COMPLETION QUEUE ENTRY를 DEVICE PCIe LAYER로 전송하고, 제1 계층(1st LAYER)은 수신된 COMPLETION QUEUE ENTRY를 SUBMISSION QUEUE의 HEAD부터 TAIL까지 순차적으로 큐잉할 수 있다.
이 후, NVM는 COMPLETION QUEUE ENTRY가 새로이 전달되었다는 것을 PROVIDER에 알리기 위해 PCIe를 통해 outbound write request packet(Upstream MemWr TLP)에 INTERRUPT 메시지를 포함시켜 PROVIDER에 출력할 수 있다.
예를 들면, 제2 계층(2nd LAYER)은 INTERRUPT 신호를 PROVIDER에 출력할 수 있다. INTERRUPT 신호는 COMPLETION QUEUE에 COMPLETION QUEUE ENTRY가 큐잉되었음을 알리는 신호일 수 있다.
실시 예에서, PROVIDER는 COMPLETION QUEUE ENTRY를 NVM로부터 수신하여 처리하였음을 알리기 위해 PCIe를 통해 inbound write request packet(Downstream MemWr TLP)을 보내 IO CQ head update를 NVM에 전송할 수 있다.
예를 들면, PROVIDER가 COMPLETION QUEUE의 COMPLETION QUEUE ENTRY를 기초로 수행하는 동작이 완료되면, PROVIDER는 CQ DOORBELL 신호를 SSD에 출력할 수 있다. CQ DOORBELL 신호는 도 6의 COMPLETION QUEUE HEAD DOORBELL 신호와 동일한 신호일 수 있다. 즉, PROVIDER는 동작이 완료된 커맨드가 식별되도록, CQ DOORBELL 신호를 SSD에 출력할 수 있다.
이 후, PROVIDER는 SSD에 수행될 새로운 커맨드(COMMAND)를 DEVICE PCIe LAYER에 출력하고, DEVICE PCIe LAYER로부터 출력되는 새로운 커맨드가 식별되도록, SQ DOORBELL 신호를 SSD에 출력할 수 있다.
실시 예에서, 라이트 커맨드의 프로세스 중 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 타임이 발생될 수 있다. 예를 들면, S801~S805 중 어느 하나의 구간에서 아이들 타임이 발생될 수 있다.
구체적으로, PROVIDER가 SUBMISSION QUEUE TAIL DOORBELL 신호를 출력한 후 제1 계층(1st LAYER)으로부터 커맨드를 페치(COMMAND FETCH)하기 전(S1001), 제1 계층(1st LAYER)으로부터 커맨드를 페치(COMMAND FETCH)한 후 제1 계층(1st LAYER)에 라이트 데이터를 요청하기 전(S1002), 라이트 데이터를 제2 계층(2nd LAYER)으로 전송한 후 COMPLETION QUEUE를 업데이트(CQ UPDATE)하기 전(S1003), COMPLETION QUEUE를 업데이트(CQ UPDATE)한 후 INTERRUPT 신호를 출력하기 전(S1004), INTERRUPT 신호를 출력한 후 CQ DOORBELL 신호를 출력하기 전(S1005), 각각 아이들 타임이 발생될 수 있다.
실시 예에서, 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 아이들 상태임에도 PCIe 링크 전원 관리에 진입하지 못하면, PCIe 인터페이스 장치(100) 및 SSD에 효율적으로 전원을 공급할 수 없다. 즉, 종래에는, 호스트 메모리(330)에 포함된 SUBMISSION QUEUE 및 COMPLETION QUEUE에 엔트리가 존재하지 않고, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 없는 경우에만 PCIe 링크 전원 관리에 진입할 수 있으므로, 전원 공급이 비효율적일 수 있었다.
따라서, 본 발명에서, PCIe 인터페이스 장치(100)에 미처리된 커맨드가 있는 경우에도, S1001~S1005에서 PCIe 인터페이스 장치(100)가 자체적으로 PCIe 링크의 아이들 상태를 감지하고, 아이들 상태가 감지되면 PCIe 링크 전원 관리에 진입한 후 자체적으로 PCIe 링크 전원 관리를 종료하고 웨이크업하는 방법이 제시된다.
도 11은 PCIe 인터페이스 장치에 포함된 타이머들을 도시한다.
도 3 및 도 11을 참조하면, 도 11은 도 3의 PCI 구성요소(도 3의 210, 220)에 각각 포함된 타이머(214, 224)를 도시한다. 타이머(214, 224)는 트랜잭션 레이어(211, 221), 데이터 링크 레이어(212, 222) 또는 피지컬 레이어(213, 223)에 포함되거나, 또는 포함되지 않고 외부에 위치할 수 있다.
실시 예에서, 타이머(214, 224)는 PCIe(peripheral component interconnect express) 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 시간을 감지할 수 있다. 즉, 타이머(214, 224)는 링크(LINK)의 아이들 상태를 감지할 수 있다. 예를 들면, 타이머(214, 224)는 도 7의 S701~S705, 도 8의 S801~S805, 도 9의 S901~S905 또는 도 10의 S1001~S1005에서 아이들 상태를 감지할 수 있다.
실시 예에서, 타이머(214, 224)가 미리 설정된 기준 시간 동안 링크(LINK)를 통해 패킷을 송수신하지 않는 상태임을 감지하면, PCIe 인터페이스 장치(도 1의 100)는 자동으로 PCIe 링크 전원 관리에 진입할 수 있다. PCIe 인터페이스 장치(도 1의 100)는 PCIe 링크 전원 관리 후 도 5의 L1 상태로 변경될 수 있다.
이 후, 타이머(214, 224)가 다시 미리 설정된 기준 시간 동안 링크(LINK)를 통해 패킷을 송수신하지 않는 상태임을 감지하면, PCIe 인터페이스 장치(도 1의 100)는 L1.2 상태로 변경될 수 있다. L1.2 상태는 L1 상태의 하위 상태로, 링크 공통 모드 전압을 유지할 필요가 없고, 아이들 상태의 해제를 감지하기 위해 Upstream 포트 및 Downstream 포트를 활성화할 필요가 없는 상태일 수 있다.
실시 예에서, PCIe 인터페이스 장치(도 1의 100)가 호스트 메모리(330)로부터 커맨드를 페치(COMMAND FETCH)하는 등의 동작을 수행할 수 있는 상태가 되고 링크(LINK)의 아이들 상태가 해제되면, 타이머(214, 224)는 L0 상태로 변경되기 위한 WAKE UP 신호를 출력할 수 있다. 즉, 링크(LINK)를 통해 패킷을 송수신할 수 있는 상태가 되면 WAKE UP 신호를 기초로, PCIe 링크 전원 관리는 종료되고, 트랜잭션 레이어(211, 221), 데이터 링크 레이어(212, 222) 또는 피지컬 레이어(213, 223)는 다시 동작을 수행할 수 있다. PCIe 링크 전원 관리가 종료됨에 따라, PCIe 인터페이스 장치(도 1의 100)는 L1 상태 또는 L1.2 상태에서 L0 상태로 변경될 수 있다.
이 후, PCIe 인터페이스 장치(도 1의 100)가 호스트 메모리(330)로부터 커맨드를 페치(COMMAND FETCH)하는 등의 동작을 수행하면, 타이머(214, 224)는 리셋될 수 있다. 즉, 링크(LINK)를 통해 패킷을 송수신하면, 타이머(214, 224)는 리셋될 수 있다. 타이머(214, 224)가 리셋되면, 다시 타이머(214, 224)가 미리 설정된 기준 시간 동안 링크(LINK)를 통해 패킷을 송수신하지 않는 상태임을 감지할 수 있다.
다른 실시 예에서, 위 내용은 리드 커맨드 또는 라이트 커맨드가 아닌 다른 커맨드에 대응하는 프로세서(ex. Admin command)에도 적용될 수 있다. 또, PCIe 링크 전원 관리뿐만 아니라, 디바이스 내부의 Host layer, FTL layer 등을 command lifetime에 따라 부분적으로 전원 관리함으로써 더 많은 전력이 절약될 수 있다. 나아가, 호스트(도 1의 300)가 CQ head update를 늦게 출력하더라도, 미리 PCIe 링크 전원 관리를 수행할 수 있다.
결과적으로, 커맨드의 처리 중에도 PCIe 링크 전원 관리를 수행함으로써, 전원이 효율적으로 공급될 수 있다.
도 12는 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 도면이다.
도 12를 참조하면, S1201 단계에서, PCIe(peripheral component interconnect express) 인터페이스 장치는 아이들 타임을 감지할 수 있다. 아이들 타임은 미리 설정된 기준 시간으로, PCIe 링크(LINK)를 통해 패킷을 송수신하지 않는 상태가 지속되는 시간일 수 있다.
PCIe 인터페이스 장치가 아이들 타임을 감지하면, S1203 단계에서, PCIe 인터페이스 장치는 PCIe 링크 전원 관리 후 L1 상태로 진입할 수 있다. L1 상태는 L0s 상태보다 L0 상태로의 복귀 속도는 느리지만, L1 상태에서 추가적인 재개 레이턴시를 통해 L0 상태에 비해 추가적으로 더 큰 전력을 절약할 수 있는 상태일 수 있다.
S1205 단계에서, PCIe 인터페이스 장치는 다시 아이들 타임을 감지했는지를 판단할 수 있다. 아이들 타임이 감지되지 않으면(N), S1209 단계로 진행하고, 아이들 타임이 감지되면(Y), S1207 단계로 진행한다.
S1207 단계에서, PCIe 인터페이스 장치는 L1.2 상태로 진입할 수 있다. L1.2 상태는 L1 상태의 하위 상태로, 링크 공통 모드 전압을 유지할 필요가 없고, 아이들 상태의 해제를 감지하기 위해 Upstream 포트 및 Downstream 포트를 활성화할 필요가 없는 상태일 수 있다.
S1209 단계에서, PCIe 인터페이스 장치는 L0 상태로 웨이크업할 수 있다. 즉, 커맨드를 페치하는 등의 동작을 수행할 수 있는 상태가 되고 PCIe 링크(LINK)의 아이들 상태가 감지되지 않으면, PCIe 인터페이스 장치는 동작을 수행할 수 있도록 웨이크업될 수 있다.
이 후, 커맨드를 페치하는 등의 동작이 완료되면, S1211 단계에서 타이머는 리셋될 수 있다.
100: PCIe 인터페이스 장치
300: 호스트

Claims (20)

  1. PCIe(Peripheral Component Interconnect Express) 포트를 지원하는 루트 컴플렉스;
    상기 루트 컴플렉스를 통해 입출력 계층 구조와 연결되는 메모리;
    링크를 통해 상기 루트 컴플렉스와 연결되어 어드레스 기반의 멀티 캐스팅 방식으로 트랜잭션을 전송하는 스위치;
    상기 스위치와 상기 링크를 통해 연결되어 패킷을 송수신하는 엔드 포인트; 및
    상기 링크의 아이들 상태를 감지하는 타이머;를 포함하는 PCIe 인터페이스 장치에 있어서,
    상기 타이머가 상기 링크의 아이들 상태를 감지하면 링크 전원 관리를 수행하는 PCIe 인터페이스 장치.
  2. 제 1항에 있어서,
    상기 링크 전원 관리는 상기 링크를 통해 상기 패킷을 송수신하는지 여부에 따라 상기 링크의 상태를 변경하는 PCIe 인터페이스 장치.
  3. 제 1항에 있어서,
    상기 아이들 상태는 상기 링크를 통해 상기 패킷을 송수신하지 않는 시간이 미리 설정된 기준 시간을 초과한 상태인 PCIe 인터페이스 장치.
  4. 제 1항에 있어서,
    상기 링크 전원 관리는 상기 메모리에 데이터가 존재하는지 여부와 관계없이 수행되는 PCIe 인터페이스 장치.
  5. 제 1항에 있어서,
    상기 링크 전원 관리를 수행한 후 L1 상태로 진입하는 PCIe 인터페이스 장치.
  6. 제 5항에 있어서,
    상기 타이머가 다시 상기 링크의 아이들 상태를 감지하면 상기 L1 상태에서 L1.2 상태로 진입하는 PCIe 인터페이스 장치.
  7. 제 5항에 있어서, 상기 타이머는,
    상기 링크 전원 관리를 수행한 후 상기 링크를 통해 상기 패킷을 송수신할 수 있는 상태가 되고, 상기 링크의 아이들 상태가 해제되면, 상기 L1 상태에서 L0 상태로 변경하기 위한 웨이크업 신호를 출력하는 PCIe 인터페이스 장치.
  8. 제 7항에 있어서,
    상기 웨이크업 신호를 기초로 상기 링크 전원 관리를 종료하는 PCIe 인터페이스 장치.
  9. 제 7항에 있어서,
    상기 웨이크업 신호를 기초로 상기 링크를 통해 상기 패킷을 송수신하는 PCIe 인터페이스 장치.
  10. 제 9항에 있어서,
    상기 링크를 통해 상기 패킷을 송수신하면 상기 타이머는 리셋되는 PCIe 인터페이스 장치.
  11. 패킷을 송수신할 수 있는 링크를 통해 연결되는 구성들 및 상기 링크의 아이들 상태를 감지하는 타이머를 포함하는 PCIe(Peripheral Component Interconnect Express) 인터페이스의 동작 방법에 있어서,
    상기 링크의 아이들 상태를 감지하는 단계; 및
    상기 타이머가 상기 링크의 아이들 상태를 감지하면 링크 전원 관리를 수행하는 단계;를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  12. 제 11항에 있어서,
    상기 링크 전원 관리는 상기 링크를 통해 상기 패킷을 송수신하는지 여부에 따라 상기 링크의 상태를 변경하는 PCIe 인터페이스 장치의 동작 방법.
  13. 제 11항에 있어서,
    상기 아이들 상태는 상기 링크를 통해 상기 패킷을 송수신하지 않는 시간이 미리 설정된 기준 시간을 초과한 상태인 PCIe 인터페이스 장치의 동작 방법.
  14. 제 11항에 있어서, 상기 링크 전원 관리를 수행하는 단계에서,
    상기 구성들이 동작을 수행하는 여부와 관계없이 수행하는 PCIe 인터페이스 장치의 동작 방법.
  15. 제 11항에 있어서,
    상기 링크 전원 관리를 수행한 후 L1 상태로 진입하는 단계를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  16. 제 15항에 있어서,
    상기 타이머가 다시 상기 링크의 아이들 상태를 감지하면 상기 L1 상태에서 L1.2 상태로 진입하는 단계를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  17. 제 15항에 있어서,
    상기 링크 전원 관리를 수행한 후 상기 링크를 통해 상기 패킷을 송수신할 수 있는 상태가 되고, 상기 링크의 아이들 상태가 해제되면, 상기 L1 상태에서 L0 상태로 변경하기 위한 웨이크업 신호를 출력하는 단계를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  18. 제 17항에 있어서,
    상기 웨이크업 신호를 기초로 상기 링크 전원 관리를 종료하는 단계를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  19. 제 17항에 있어서,
    상기 웨이크업 신호를 기초로 상기 링크를 통해 상기 패킷을 송수신하는 단계를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  20. 제 19항에 있어서,
    상기 링크를 통해 상기 패킷을 송수신하면 상기 타이머는 리셋되는 PCIe 인터페이스 장치의 동작 방법.
KR1020210070686A 2021-04-13 2021-06-01 PCIe 인터페이스 장치 및 그 동작 방법 KR20220162345A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020210070686A KR20220162345A (ko) 2021-06-01 2021-06-01 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
US17/522,827 US11782497B2 (en) 2021-06-01 2021-11-09 Peripheral component interconnect express (PCIE) interface device and method of operating the same
CN202210005338.0A CN115248795A (zh) 2021-04-13 2022-01-04 高速外围组件互连(pcie)接口系统及其操作方法
CN202210006941.0A CN115437983A (zh) 2021-06-01 2022-01-05 高速外围组件互连(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
KR1020210070686A KR20220162345A (ko) 2021-06-01 2021-06-01 PCIe 인터페이스 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20220162345A true KR20220162345A (ko) 2022-12-08

Family

ID=84192962

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210070686A KR20220162345A (ko) 2021-04-13 2021-06-01 PCIe 인터페이스 장치 및 그 동작 방법

Country Status (3)

Country Link
US (1) US11782497B2 (ko)
KR (1) KR20220162345A (ko)
CN (1) CN115437983A (ko)

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000041B2 (en) 2003-03-31 2006-02-14 Intel Corporation Method and an apparatus to efficiently handle read completions that satisfy a read request
US7136953B1 (en) 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
US8081706B2 (en) 2005-08-24 2011-12-20 Altera Corporation Lane-to-lane skew reduction in multi-channel, high-speed, transceiver circuitry
US7647515B2 (en) * 2005-08-29 2010-01-12 Dell Products L.P. System and method for information handling system adaptive variable bus idle timer
US7984314B2 (en) * 2007-05-14 2011-07-19 Intel Corporation Power management of low power link states
US9146892B2 (en) * 2007-10-11 2015-09-29 Broadcom Corporation Method and system for improving PCI-E L1 ASPM exit latency
US8582448B2 (en) 2007-10-22 2013-11-12 Dell Products L.P. Method and apparatus for power throttling of highspeed multi-lane serial links
US20090187683A1 (en) 2008-01-22 2009-07-23 International Business Machines Corporation Adaptive link width control
US8503468B2 (en) 2008-11-05 2013-08-06 Fusion-Io, Inc. PCI express load sharing network interface controller cluster
JP2010238150A (ja) 2009-03-31 2010-10-21 Toshiba Corp PCIExpress通信システム、及びその通信方法
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
US20110173352A1 (en) 2010-01-13 2011-07-14 Mellanox Technologies Ltd Power Reduction on Idle Communication Lanes
US8832336B2 (en) 2010-01-30 2014-09-09 Mosys, Inc. Reducing latency in serializer-deserializer links
WO2013095422A1 (en) 2011-12-21 2013-06-27 Intel Corporation Dynamic link width adjustment
US20130173837A1 (en) 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for implementing pci express lightweight notification protocols in a cpu/memory complex
US9256268B2 (en) * 2012-04-24 2016-02-09 Intel Corporation Adaptive low-power link-state entry policy for active interconnect link power management
US8938630B2 (en) 2012-07-30 2015-01-20 Micron Technology, Inc. Apparatus power control
US9183171B2 (en) 2012-09-29 2015-11-10 Intel Corporation Fast deskew when exiting low-power partial-width high speed link state
JP6192284B2 (ja) * 2012-10-15 2017-09-06 キヤノン株式会社 通信装置及びその制御方法
JP6139689B2 (ja) 2012-10-22 2017-05-31 インテル・コーポレーション 装置
US9026698B2 (en) 2013-03-15 2015-05-05 Intel Corporation Apparatus, system and method for providing access to a device function
US9229525B2 (en) 2013-06-17 2016-01-05 Apple Inc. Adaptive latency tolerance for power management of memory bus interfaces
US9535870B2 (en) 2013-09-18 2017-01-03 HGST Netherlands B.V. Acknowledgement-less protocol for solid state drive interface
US9467120B1 (en) 2013-12-19 2016-10-11 Altera Corporation Power management for PCI express
US9454213B2 (en) 2013-12-26 2016-09-27 Intel Corporation Method, apparatus, system for lane staggering and determinism for serial high speed I/O lanes
KR102218735B1 (ko) 2014-01-21 2021-02-23 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 소거 방법
US9304690B2 (en) 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
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
US20160216758A1 (en) * 2015-01-27 2016-07-28 Avago Technologies General Ip (Singapore) Pte. Ltd. PCI Express Device With Early Low Power State
KR102333391B1 (ko) 2015-02-27 2021-12-01 삼성전자 주식회사 전자 장치 및 이의 전력 제어 방법
KR102403489B1 (ko) 2015-07-10 2022-05-27 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
JP2017033501A (ja) 2015-08-06 2017-02-09 株式会社東芝 記憶装置および制御方法
US11029748B2 (en) * 2016-03-15 2021-06-08 Qualcomm Incorporated Adaptive peripheral component interconnect express link substate initiation for optimal performance and power savings
US10133504B2 (en) 2016-04-06 2018-11-20 Futurewei Technologies, Inc. Dynamic partitioning of processing hardware
US10025522B2 (en) 2016-04-15 2018-07-17 Sandisk Technologies Llc Memory interface command queue throttling
KR20170124017A (ko) 2016-04-29 2017-11-09 삼성전자주식회사 동작 전압을 조절하는 메모리 장치, 메모리 장치를 제어하는 어플리케이션 프로세서 및 메모리 장치의 동작방법
US9760311B1 (en) 2016-06-23 2017-09-12 Sandisk Technologies Llc Storage system and method for adaptive thermal throttling
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10963035B2 (en) * 2017-10-11 2021-03-30 Qualcomm Incorporated Low power PCIe
US11132319B2 (en) * 2018-01-12 2021-09-28 Intel Corporation Timer control for peripheral component interconnect express components implemented with thunderbolt controllers
US20190250930A1 (en) * 2018-02-12 2019-08-15 Western Digital Technologies, Inc. Method and apparatus for configuring a serial data link
JP7292864B2 (ja) * 2018-04-23 2023-06-19 キオクシア株式会社 半導体記憶装置
US11231764B2 (en) 2018-10-17 2022-01-25 Samsung Electronics Co., Ltd. System and method for supporting chassis level keep alive in NVME-of based system
US11307638B2 (en) * 2018-12-12 2022-04-19 Intel Corporation Securely providing multiple wake-up time options for PCI Express
CN112352221A (zh) 2019-01-31 2021-02-09 英特尔公司 用以支持虚拟化环境中的ssd设备驱动器与物理ssd之间的sq/cq对通信的快速传输的共享存储器机制
US11815976B2 (en) * 2019-05-22 2023-11-14 Qualcomm Incorporated Bandwidth based power management for peripheral component interconnect express devices
US11073894B2 (en) * 2019-05-24 2021-07-27 Qualcomm Incorporated System power management for peripheral component interconnect express (PCIE)-based devices
US11593280B2 (en) 2019-06-25 2023-02-28 Intel Corporation Predictive packet header compression
US11775470B2 (en) 2019-11-20 2023-10-03 Intel Corporation Transaction layer packet format
CN111124975A (zh) 2019-12-27 2020-05-08 江苏芯盛智能科技有限公司 一种PCIe设备动态功耗节省方法以及低功耗PCIe设备
US11543996B2 (en) * 2020-05-20 2023-01-03 Western Digital Technologies, Inc. Systems and methods for power management in a data storage device
US20200310517A1 (en) * 2020-05-28 2020-10-01 Intel Corporation Adaptive lower power state entry and exit
US20220197519A1 (en) * 2020-12-19 2022-06-23 Intel Corporation Multi-level memory system power management apparatus and method
KR102518317B1 (ko) 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US20220327074A1 (en) * 2021-04-13 2022-10-13 SK Hynix Inc. PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
US11789658B2 (en) 2021-04-13 2023-10-17 SK Hynix Inc. Peripheral component interconnect express (PCIe) interface system and method of operating the same

Also Published As

Publication number Publication date
CN115437983A (zh) 2022-12-06
US20220382362A1 (en) 2022-12-01
US11782497B2 (en) 2023-10-10

Similar Documents

Publication Publication Date Title
JP4928732B2 (ja) データ転送システム及び電子機器
US7424566B2 (en) Method, system, and apparatus for dynamic buffer space allocation
US7653773B2 (en) Dynamically balancing bus bandwidth
JP4878185B2 (ja) データ通信回路および調停方法
JP5108261B2 (ja) 情報処理装置およびデータ通信装置
JP4704050B2 (ja) データ転送システム及び電子機器
KR102420530B1 (ko) 대체 프로토콜 선택
US20220327074A1 (en) PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
JP4564855B2 (ja) データ転送システム及び電子機器
TW202248869A (zh) 快捷週邊組件互連介面裝置及其操作方法
US11960424B2 (en) Peripheral component interconnect express (PCIe) interface device and method of operating the same
JP4777723B2 (ja) 情報処理システム、プログラムおよびデータ転送方法
KR20220162345A (ko) PCIe 인터페이스 장치 및 그 동작 방법
US11921657B2 (en) Peripheral component interconnect express (PCIE) device for supporting separate reference clock(s) operating between host and direct memory access (DMA) controller
JP4824422B2 (ja) 制御装置、画像処理システムおよびデータ転送経路切替方法
JP2005332316A (ja) データ分配装置、データ転送装置及び画像処理装置
JP2007226494A (ja) データ転送システム
KR102518287B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
JP2005332372A (ja) 画像処理装置及び画像形成装置
JP4271558B2 (ja) データ転送システム、画像形成システム及びデータ転送用プログラム
US20230315591A1 (en) PCIe DEVICE AND COMPUTING SYSTEM INCLUDING THE SAME
JP2009163633A (ja) 情報処理装置およびデータ通信方法
JP5064582B2 (ja) データ分配装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal