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

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

Info

Publication number
KR20220162336A
KR20220162336A KR1020210070676A KR20210070676A KR20220162336A KR 20220162336 A KR20220162336 A KR 20220162336A KR 1020210070676 A KR1020210070676 A KR 1020210070676A KR 20210070676 A KR20210070676 A KR 20210070676A KR 20220162336 A KR20220162336 A KR 20220162336A
Authority
KR
South Korea
Prior art keywords
link
pcie
transaction
host
layer
Prior art date
Application number
KR1020210070676A
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 KR1020210070676A priority Critical patent/KR20220162336A/ko
Priority to US17/527,062 priority patent/US11940942B2/en
Priority to CN202210377986.9A priority patent/CN115437978A/zh
Priority to US17/749,133 priority patent/US11921657B2/en
Priority to TW111120269A priority patent/TW202248869A/zh
Publication of KR20220162336A publication Critical patent/KR20220162336A/ko
Priority to US18/534,037 priority patent/US20240104035A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • 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/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
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 PCIe 인터페이스 장치는, 트랜잭션의 전송을 위한 트랜잭션 패킷을 생성하는 트랜잭션 레이어, 상기 트랜잭션 패킷을 기초로 상기 트랜잭션 패킷에 대한 보호 코드 및 시퀀스 넘버를 포함하는 링크 패킷을 생성하는 데이터 링크 레이어, 상기 링크 패킷을 기초로 피지컬 패킷을 생성하고, 상기 피지컬 패킷을 순차적으로 출력하는 피지컬 레이어, 상기 피지컬 레이어를 통해 연결된 링크에 대한 협상을 수행하고, 상기 링크에 대한 협상이 수행되지 않을 때 발생되는 링크다운이 호스트에 의한 요청인지를 기초로 데이터 정보를 유지하는 링크 트레이닝 모듈 및 상기 트랜잭션 레이어, 상기 데이터 링크 레이어, 상기 피지컬 레이어 및 상기 링크 트레이닝 모듈의 동작에 관한 정보를 포함하는 PCIe(Peripheral Component Interconnect Express) 레지스터를 포함한다.

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) 등이 있다.
본 발명의 실시 예는, 호스트에 의해 의도되지 않은 링크다운 발생 시, 커맨드의 처리를 완료할 수 있는 PCIe 인터페이스 장치 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 PCIe 인터페이스 장치는, 트랜잭션의 전송을 위한 트랜잭션 패킷을 생성하는 트랜잭션 레이어, 상기 트랜잭션 패킷을 기초로 상기 트랜잭션 패킷에 대한 보호 코드 및 시퀀스 넘버를 포함하는 링크 패킷을 생성하는 데이터 링크 레이어, 상기 링크 패킷을 기초로 피지컬 패킷을 생성하고, 상기 피지컬 패킷을 순차적으로 출력하는 피지컬 레이어, 상기 피지컬 레이어를 통해 연결된 링크에 대한 협상을 수행하고, 상기 링크에 대한 협상이 수행되지 않을 때 발생되는 링크다운이 호스트에 의한 요청인지를 기초로 데이터 정보를 유지하는 링크 트레이닝 모듈 및 상기 트랜잭션 레이어, 상기 데이터 링크 레이어, 상기 피지컬 레이어 및 상기 링크 트레이닝 모듈의 동작에 관한 정보를 포함하는 PCIe(Peripheral Component Interconnect Express) 레지스터를 포함할 수 있다.
본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작 방법은, 트랜잭션 레이어가 트랜잭션의 전송을 위한 트랜잭션 패킷을 생성하는 단계, 데이터 링크 레이어가 상기 트랜잭션 패킷을 기초로 상기 트랜잭션 패킷에 대한 보호 코드 및 시퀀스 넘버를 포함하는 링크 패킷을 생성하는 단계, 피지컬 레이어가 상기 링크 패킷을 기초로 피지컬 패킷을 생성하고, 상기 피지컬 패킷을 순차적으로 출력하는 단계, 상기 피지컬 패킷을 송수신함으로써 상기 피지컬 레이어를 통해 연결된 링크에 대한 협상을 수행하는 단계 및 상기 링크에 대한 협상이 수행되지 않을 때 발생되는 링크다운이 호스트에 의한 요청인지를 기초로 데이터 정보를 유지하는 단계를 포함할 수 있다.
본 기술에 따르면 호스트에 의해 의도되지 않은 링크다운 발생 시, 커맨드의 처리를 완료할 수 있는 PCIe 인터페이스 장치 및 그 동작 방법이 제공된다.
도 1은 PCIe 인터페이스 장치를 설명하기 위한 블록도이다.
도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.
도 3은 PCIe 인터페이스 장치에 포함된 구성들에 각각 포함된 계층을 나타낸 도면이다.
도 4는 LTSSM을 설명하기 위한 도면이다.
도 5는 LTSSM의 각 단계를 설명하기 도면이다.
도 6은 링크업을 설명하기 위한 도면이다.
도 7은 호스트에 의도된 링크다운과 호스트에 의해 의도되지 않은 링크다운을 설명하기 위한 도면이다.
도 8은 호스트에 의해 의도된 링크다운의 일 실시 예를 도시한다.
도 9는 호스트에 의도된 링크다운일 때 PCIe 인터페이스 장치의 동작을 도시한다.
도 10은 도 9에 따른 PCIe 인터페이스 장치의 동작을 도시한다.
도 11은 호스트에 의해 의도되지 않은 링크다운의 일 실시 예를 도시한다.
도 12는 호스트에 의해 의도되지 않은 링크다운의 일 실시 예를 도시한다.
도 13은 도 12에 따른 PCIe 인터페이스 장치의 동작을 도시한다.
도 14는 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 PCIe 인터페이스 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 도 1의 PCIe(peripheral component interconnect express) 인터페이스 장치(100)는 중앙 처리 장치(110), 루트 컴플렉스(120), 메모리(130), 스위치(140), PCIe 엔드 포인트(150_1~150_3), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170)를 포함할 수 있다.
도 1에서, 루트 컴플렉스(120)는 스위치(140), PCIe 엔드 포인트(150_1~150_3) 및 PCIe 브릿지(170)와 각각 링크(LINK)로 연결될 수 있다. 또, 스위치(140)는 PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(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)는 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 없다.
실시 예에서, 루트 컴플렉스(120)와 달리 스위치(140)는 계층 간에 전송되는 패킷을 더 작은 단위로 나눌 수 없다.
실시 예에서, PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)는 PCIe 트랜잭션의 리퀘스터(requester) 또는 컴플리터(completer)의 역할을 수행할 수 있다. PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)가 송수신하는 TLP는 컨피겨레이션 공간 헤더를 제공할 수 있다. 또, PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)는 컴플리터(completer)로서 컨피겨레이션 요청을 제공할 수 있다.
실시 예에서, PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)는 메모리 트랜잭션의 크기에 따라 구분될 수 있다. 예를 들면, 4GB를 초과하는 메모리 트랜잭션이 가능한 경우 엔드 포인트는 PCIe 엔드 포인트(150_1~150_3), 4GB를 초과하는 메모리 트랜잭션이 불가능한 경우 엔드 포인트는 레거시 엔드 포인트(160_1, 160_2)일 수 있다. PCIe 엔드 포인트(150_1~150_3)는 입출력 리퀘스트를 발생시키면 안되나, 레거시 엔드 포인트(160_1, 160_2)는 입출력 리퀘스트를 제공하거나 발생시킬 수 있다.
실시 예에서, PCIe 엔드 포인트(150_3)는 루트 컴플렉스(120)와 TLP를 송수신할 수 있다. 또, PCI/PCI-X는 PCIe 브릿지(170)를 통해 루트 컴플렉스(120)와 TLP를 송수신할 수 있다. PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)는 스위치(140)와 TLP를 송수신할 수 있다.
실시 예에서, 스위치(140)는 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)로부터 수신된 TLP를 루트 컴플렉스(120)로 송신할 수 있다. 스위치(140)는 루트 컴플렉스(120)로부터 수신된 TLP를 PCIe 엔드 포인트(150_3) 또는 PCI/PCI-X로 전달할 수 있다.
실시 예에서, 루트 컴플렉스(120)는 PCIe 엔드 포인트(150_3)와 직접 TLP를 송수신할 수 있다. 루트 컴플렉스(120)는 스위치(140)를 통해 PCIe 엔드 포인트(150_1, 150_2) 또는 레거시 엔드 포인트(160_1, 160_2)와 TLP를 송수신할 수 있다. 루트 컴플렉스(120)는 PCIe 엔드 포인트(150_1~150_3) 또는 레거시 엔드 포인트(160_1, 160_2)로부터 수신된 TLP를 중앙 처리 장치(110)나 메모리(130)에 송신할 수 있다.
도 2는 PCIe 인터페이스 장치에 포함된 구성들 간 패킷의 전송을 설명하기 위한 도면이다.
도 1 및 도 2를 참조하면, 도 2의 PCI 구성요소(PCI COMPONENT 1, 2)는 도 1의 루트 컴플렉스(120), 스위치(140), PCIe 엔드 포인트(150_1~150_3), 레거시 엔드 포인트(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 단계로 진행할 수 있다.
구체적으로, L1 단계는 L0s 단계보다 L0 단계로의 복귀 속도는 느리지만, L1 단계에서 추가적인 재개 레이턴시를 통해 L0 단계에 비해 추가적으로 더 큰 전력을 절약할 수 있는 단계일 수 있다. L1 단계는 ASPM(active state power management) 또는 Power Management Software를 통해 진입될 수 있다. 이 때, ASPM는 PCIe로 연결된 장치가 사용 중이지 않을 때 링크를 저전력 상태로 변경하는 정책이고, Power Management Software는 PCIe로 연결된 장치를 저전력 상태로 바꾸는 정책일 수 있다.
또, L1 단계로의 진입은 데이터 링크 레이어(도 3의 212, 222)로부터 수신된 지시에 의해 EIOS(electrical idle ordered set)를 수신한 후 진행될 수 있다. LTSSM은 L1 단계에서 RECOVERY 단계로 진행할 수 있다.
구체적으로, L2 단계에서, 최대 전력이 보전되며, PCIe로 연결된 장치의 송신기 및 수신기가 차단될 수 있다. L2 단계에서 전원 및 클럭은 보장되지 않지만, AUX 전원은 사용할 수 있다. L2 단계로의 진입은 데이터 링크 레이어(도 3의 212, 222)로부터 지시에 의해 EIOS를 수신한 후 진행될 수 있다. LTSSM은 L2 단계에서 DETECT 단계로 진행할 수 있다.
실시 예에서, 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은 링크업을 설명하기 위한 도면이다.
도 5 및 도 6을 참조하면, 도 6은 도 5의 LTSSM의 단계들을 통해 링크업(LINK UP)되는 과정 및 PCIe 레지스터(PCIe REG)와 NVMe의 상태를 도시한다.
실시 예에서, LTSSM은 DETECT 단계에서 POLLING 단계, CONFIGURATION 단계를 거쳐 L0 단계로 천이되고, 이를 링크업(LINK UP)이라 한다. L0 단계에서 LTSSM은 정상적으로 TLP(transaction layer packet) 및 DLLP(data link layer packet)를 송수신할 수 있다.
실시 예에서, 링크를 통해 연결된 양 측 포트의 송신기 및 수신기(TX/RX)는 DETECT 단계에서 전기적으로 아이들 상태(ELECILDE)일 수 있다. 또, 양 측 포트의 송신기 및 수신기(TX/RX)는 POLLING 단계 및 CONFIGURATION 단계에서 Training Sequences(ex. TS1, TS2)를 송수신함으로써 LTSSM 천이의 싱크를 맞출 수 있다. L0 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TLP(transaction layer packet)를 송수신할 수 있는 상태(TLP TRANSMISSIBLE)로 될 수 있다.
실시 예에서, PCIe 레지스터(PCIe REG)는 DETECT 단계, POLLING 단계 및 CONFIGURATION 단계에서 디폴트 상태(DEFAULT)일 수 있다. PCIe 레지스터(PCIe REG)는 L0 단계에서 호스트에 의해 초기화된 후(INITIALIZED BY HOST) 유효한 상태(VALID)로 될 수 있다.
실시 예에서, NVMe는 PCIe 레지스터(PCIe REG)가 초기화 되기 전까지 비활성화 상태(UNACTIVE)를 유지하고, PCIe 레지스터(PCIe REG)가 초기화된 후 활성화 상태(ACTIVE)로 될 수 있다.
도 7은 호스트에 의도된 링크다운과 호스트에 의해 의도되지 않은 링크다운을 설명하기 위한 도면이다.
도 5 및 도 7을 참조하면, 도 7은 도 5의 단계의 천이들 중 호스트에 의해 의도된 링크다운과 호스트에 의해 의도되지 않은 링크다운을 도시한다. 도 7에서, 점선으로 표시된 천이는 호스트에 의도된 링크다운이고, 실선으로 표시된 천이는 호스트에 의해 의도되지 않은 링크다운일 수 있다.
실시 예에서, DETECT 단계로 천이되기 직전의 단계를 기초로, 호스트에 의해 의도된 링크다운과 호스트에 의해 의도되지 않은 링크다운이 구분될 수 있다.
예를 들면, DETECT 단계로 천이되기 직전의 단계가 L2 단계, HOT RESET 단계 또는 DISABLED 단계인 경우, 링크다운은 호스트에 의해 의도된 링크다운일 수 있다. 또, 다른 예로, Cold Reset 또는 Warm Reset이 수행될 때, 링크다운은 호스트에 의해 의도된 링크다운일 수 있다. 이 때, Cold Reset은 POR(power on reset) 후 다시 전원이 인가되어 Link training이 시작되는 것을 의미하고, Warm Reset은 전원을 유지한 상태에서 수행되는 리셋을 의미할 수 있다.
그러나, DETECT 단계로 천이되기 직전의 단계가 CONFIGURATION 단계 또는 RECOVERY 단계인 경우, 링크다운은 호스트에 의해 의도되지 않은 링크다운일 수 있다. 호스트에 의해 의도되지 않은 링크다운은 L0 단계 이후 CONFIGURATION 단계 또는 RECOVERY 단계에서 Timeout이 발생되어 L0 단계로 이동될 수 있다.
본 발명에서, 호스트에 의해 의도된 링크다운과 호스트에 의해 의도되지 않은 서든 링크다운을 구분하고, 호스트에 의해 의도되지 않은 서든 링크다운의 경우, PCIe 레지스터 및 NVMe 레지스터를 유지하는 방법이 제시된다.
구체적으로, 호스트에 의해 의도된 링크다운과 호스트에 의해 의도되지 않은 서든 링크다운을 구분하기 위해, 링크업 레지스터가 ‘1’에서 ‘0’으로 변경될 때, LTSSM은 단계가 변경되기 직전의 단계에 관한 정보를 별도로 저장할 수 있다.
실시 예에서, 변경된 단계가 LOOPBACK 단계, HOT RESET 단계 또는 DISABLED 단계인 경우, 단계가 변경되기 직전의 단계와 관계없이 링크다운은 호스트에 의해 의도된 링크다운일 수 있다.
실시 예에서, 변경된 단계가 DETECT 단계인 경우, LTSSM은 DETECT 단계로 변경되기 직전의 단계를 확인할 수 있다. DETECT 단계로 변경되기 직전의 단계가 L2 단계, HOT RESET 단계 또는 DISABLED 단계면 링크다운은 호스트에 의해 의도된 링크다운일 수 있다. 그러나, DETECT 단계로 변경되기 직전의 단계가 CONFIGURATION 단계 또는 RECOVERY 단계면 링크다운은 호스트에 의해 의도되지 않은 서든 링크다운일 수 있다.
도 8은 호스트에 의해 의도된 링크다운의 일 실시 예를 도시한다.
도 4 및 도 8을 참조하면, 도 8은 도 4의 중앙 처리 장치(110)가 스위치(140)의 다운스트림 포트의 PCIe 레지스터를 통해 HOT RESET을 진행하는 방법을 도시한다. 다운스트림 포트는 스위치(140)의 포트들 중 루트 컴플렉스(120)와 먼 포트일 수 있다. 다운스트림 포트는 장치(180_1)와 Training Sequences(ex. TS1, TS2)을 서로 주고 받음으로써 LTSSM 천이의 싱크를 맞출 수 있다. HOT RESET 단계는 링크를 리셋하는 단계일 수 있다.
실시 예에서, 다운스트림 포트의 PCIe 레지스터를 통해 HOT RESET 단계가 진행될 수 있다. HOT RESET 단계 후, 링크업이 수행될 수 있다. 즉, LTSSM은 HOT RESET 단계에서 DETECT 단계로 진행될 수 있다.
따라서, DETECT 단계로 천이되기 직전의 단계가 HOT RESET 단계이므로, 링크다운은 호스트에 의해 의도된 링크다운일 수 있다.
도 9는 호스트에 의도된 링크다운일 때 PCIe 인터페이스 장치의 동작을 도시한다.
도 7 및 도 9를 참조하면, 도 9는 도 7의 호스트에 의도된 링크다운의 예시 중 RECOVERY 단계에서 HOT RESET 단계로 천이되는 링크다운일 때, 다시 링크업(LINK UP)되는 과정 및 PCIe 레지스터(PCIe REG)와 NVMe의 상태를 도시한다.
실시 예에서, LTSSM은 L0 단계에서 RECOVERY 단계를 거쳐 HOT RESET 단계로 변경될 수 있다. 이 때, DETECT 단계로 천이되기 직전의 단계가 RECOVERY 단계이므로, 링크다운은 호스트에 의도된 링크다운일 수 있다. LTSSM은 HOT RESET 단계에서 링크를 리셋한 후 다시 DETECT 단계로 천이될 수 있다. 이 후, LTSSM은 POLLING 단계, CONFIGURATION 단계를 통해 L0 단계로 진입함으로써 다시 링크업(LINK UP)될 수 있다.
실시 예에서, L0 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TLP(transaction layer packet)를 송수신할 수 있다. 그러나, RECOVERY 단계 및 HOT RESET 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TS1을 송수신하며(TS1 WITH HOT RESET), DETECT 단계에서는 전기적 아이들 상태(ELECILDE)일 수 있다.
이 후, POLLING 단계 및 CONFIGURATION 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TS1 및 TS2를 송수신함으로써 감지된 레인 중 데이터 통신이 가능한 레인을 구별하고, 레인의 연결 상태를 확인할 수 있다. 다시, LTSSM이 L0 단계로 진입하면, 양 측 포트의 송신기 및 수신기(TX/RX)는 TLP(transaction layer packet)를 송수신할 수 있다.
실시 예에서, PCIe 레지스터(PCIe REG)는 L0 단계 및 RECOVERY 단계에서 유효한 상태(VALID)나, RECOVERY 단계에서 HOT RESET 단계로 진입하면, 디폴트 상태(DEFAULT)로 변경될 수 있다. 이 후, 다시, LTSSM이 L0 단계로 진입하면, PCIe 레지스터(PCIe REG)는 초기화 된 후(INITIALIZED) 유효한 상태(VALID)로 변경될 수 있다. 즉, 링크다운이 호스트에 의해 의도된 링크다운의 경우, PCIe 레지스터(PCIe REG)는 초기화될 수 있다.
실시 예에서, NVMe는 L0 단계 및 RECOVERY 단계에서 활성화 상태(ACTIVE)나, RECOVERY 단계에서 HOT RESET 단계로 천이되면, 진행중인 커맨드를 플러쉬(FLUSHING)할 수 있다. 이 후, CONFIGURATION 단계에서 NVMe는 비활성화 상태(UNACTIVE)로 변경된 후 PCIe 레지스터(PCIe REG)가 초기화 되면(INITIALIZED), 활성화 상태(ACTIVE)로 다시 변경될 수 있다. 즉, 링크다운이 호스트에 의해 의도된 링크다운의 경우, NVMe는 초기화될 수 있다.
실시 예에서, NVMe는 L0 단계 및 RECOVERY 단계에서 활성화 상태(ACTIVE)나, RECOVERY 단계에서 HOT RESET 단계로 천이되면, 진행중인 커맨드를 플러쉬(FLUSHING)할 수 있다. 플러쉬(FLUSHING)가 완료된 후, NVMe는 비활성화 상태(UNACTIVE)로 변경되며 DETECT 단계를 지나 L0 단계에서 링크업이 완료된 후, PCIe 레지스터(PCIe REG)가 초기화 되면(INITIALIZED) 호스트에 의해 활성화 상태(ACTIVE)로 다시 변경될 수 있다.
HOST가 설정요청(config request)을 NVMe로 송부 하였을 때, NVMe가 커맨드 플러쉬(FLUSHING) 중이면 NVMe는 CRS(configuration request retry status)를 리턴하여 설정요청을 무시할 수 있다. HOST가 설정요청(config request)을 NVMe로 송부하였을때, NVMe가 커맨드 플러쉬(FLUSHING)를 완료한 후이면, NVMe는 SR(success return)를 리턴하고 NVMe는 초기화될 수 있다.
결과적으로, 호스트에 의해 의도된 링크다운의 경우, OS 및 드라이버가 이를 인지하므로, PCIe 레지스터(PCIe REG) 및 NVMe는 초기화될 수 있다.
도 10은 도 9에 따른 PCIe 인터페이스 장치의 동작을 도시한다.
도 3 및 도 10을 참조하면, 도 10은 도 3의 PCI 구성요소(PCI COMPONENT 1, 210)에 포함된 계층(211, 212, 213), 리플레이 버퍼(214) 및 PCIe 레지스터(215)와 NVMe(non-volatile memory express) 레지스터(1010)를 도시한다. 도 9 및 도 10을 참조하면, 도 10은 도 9의 호스트에 의해 의도된 링크다운의 경우 LTSSM의 동작을 도시한다. 도 10의 리플레이 버퍼(214)는 리트라이 버퍼일 수 있으며, TLP(transaction layer packet)의 재전송을 위해 TLP를 저장할 수 있다. NVMe 레지스터(1010)는 NVMe 모듈에 포함된 레지스터일 수 있다.
실시 예에서, 링크다운이 호스트에 의해 의도된 링크다운인 경우, LTSSM은 트랜잭션 레이어(211), 데이터 링크 레이어(212), 피지컬 레이어(213), PCIe 레지스터(215) 및 NVMe 레지스터(1010)를 초기화할 수 있다(INITIALIZATION).
LTSSM은 링크다운 인터럽트를 통해 NVMe 리셋을 진행함으로써 NVMe 레지스터(1010)를 초기화할 수 있다. 이 때, NVMe가 커맨드를 수행 중이면, NVMe는 진행중인 커맨드에 대해 플러쉬할 수 있으며, 플러쉬가 완료되면 PCIe Inbound path를 통해 초기화를 다시 진행할 수 있다.
실시 예에서, 링크다운이 호스트에 의해 의도된 링크다운인 경우, LTSSM은 모든 트랜잭션에 대해 에러를 트랜잭션 레이어(211)에 리턴하고, 에러 리턴이 완료된 후 초기화를 진행할 수 있다.
도 11은 호스트에 의해 의도되지 않은 링크다운의 일 실시 예를 도시한다.
도 7 및 도 11을 참조하면, 도 11은 도 7의 호스트에 의도되지 않은 서든 링크다운의 예시 중 RECOVERY 단계에서 바로 DETECT 단계로 천이되는 링크다운일 때, 다시 링크업(LINK UP)되는 과정 및 PCIe 레지스터(PCIe REG)와 NVMe의 상태를 도시한다.
실시 예에서, LTSSM은 RECOVERY 단계에서 DETECT 단계로 변경될 수 있다. 예를 들면, RECOVERY 단계에서 에러 발생 등으로 TIMEOUT(ex. 24ms)이 발생되면, LTSSM은 RECOVERY 단계에서 DETECT 단계로 변경될 수 있다.
이 때, DETECT 단계로 천이되기 직전의 단계가 RECOVERY 단계이므로, 링크다운은 호스트에 의도되지 않은 서든 링크다운일 수 있다. 이 후, LTSSM은 POLLING 단계, CONFIGURATION 단계를 통해 L0 단계로 진입함으로써 다시 링크업(LINK UP)될 수 있다.
실시 예에서, L0 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TLP(transaction layer packet)의 송수신이 가능한 상태(TLP TRANSMISSIBLE)일 수 있다. 그러나, 에러(ERROR) 발생으로 인해, RECOVERY 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TS1을 송수신하며, DETECT 단계에서는 전기적 아이들 상태(ELECILDE)일 수 있다.
이 후, POLLING 단계 및 CONFIGURATION 단계에서, 양 측 포트의 송신기 및 수신기(TX/RX)는 TS1 및 TS2를 송수신함으로써 감지된 레인 중 데이터 통신이 가능한 레인을 구별하고, 레인의 연결 상태를 확인할 수 있다. 다시, LTSSM이 L0 단계로 진입하면, 양 측 포트의 송신기 및 수신기(TX/RX)는 TLP(transaction layer packet)를 송수신할 수 있다.
실시 예에서, PCIe 레지스터(PCIe REG)는 L0 단계 및 RECOVERY 단계에서 유효한 상태(VALID)나, TIMEOUT으로 인해, 유효한 상태(VALID)에서 디폴트 상태(DEFAULT)로 변경될 수 있다. 즉, 링크다운이 호스트에 의해 의도되지 않은 링크다운의 경우, PCIe 레지스터(PCIe REG)는 디폴트 상태(DEFAULT)로 변경되어 유지될 수 있다.
실시 예에서, NVMe는 L0 단계 및 RECOVERY 단계에서 활성화 상태(ACTIVE)나, TIMEOUT으로 인해, 진행중인 커맨드를 플러쉬(FLUSHING)할 수 있다. 이 후, CONFIGURATION 단계에서 NVMe는 비활성화 상태(UNACTIVE)로 변경된 후 비활성화 상태를 유지할 수 있다.
결과적으로, 호스트에 의해 의도되지 않은 링크다운의 경우, PCIe 레지스터(PCIe REG)가 초기화되고, NVMe는 리셋될 수 있다. 이 때, PCIe 레지스터(PCIe REG)가 초기화됨에 따라, BAR(base address registers) 정보 등이 초기화될 수 있다.
따라서, TLP 어드레스의 확인이 불가능하고, TLP로 NVMe 레지스터에 접근이 불가능하여 NVMe 커맨드에 대응하는 동작이 불가능할 수 있다. 이로 인해, BSOD(blue screen of death)가 발생될 수 있다.
따라서, 본 발명에서, 호스트에 의해 의도되지 않은 링크다운의 경우, PCIe 레지스터(PCIe REG) 및 NVMe 레지스터를 초기화하지 않고 유지함으로써 BSOD 발생을 방지하는 방법이 제시된다.
도 12는 호스트에 의해 의도되지 않은 링크다운의 일 실시 예를 도시한다.
도 7 및 도 12를 참조하면, 도 12는 도 7의 호스트에 의도되지 않은 서든 링크다운의 예시 중 RECOVERY 단계에서 바로 DETECT 단계로 천이되는 링크다운일 때, 다시 링크업(LINK UP)되는 과정에서 본 발명에 따른 PCIe 레지스터(PCIe REG) 및 NVMe의 상태를 도시한다.
도 11 및 도 12를 참조하면, 도 12는 PCIe 레지스터(PCIe REG) 및 NVMe의 상태를 제외하고 도 11과 동일하므로, 중복되는 내용은 생략하도록 한다.
실시 예에서, 도 11과 달리, LTSSM TIMEOUT이 발생되더라도, PCIe 레지스터(PCIe REG)는 유효한 상태(VALID)를 유지할 수 있다. 또, LTSSM TIMEOUT이 발생되더라도, NVMe는 활성화 상태(ACTIVE)를 유지할 수 있다.
PCIe 레지스터(PCIe REG)가 유효한 상태(VALID)를 유지하고 NVMe가 활성화 상태(ACTIVE)를 유지하기 때문에, NVMe는 진행중인 커맨드에 대응하는 동작뿐만 아니라 새로운 NVMe 커맨드에 대응하는 동작을 수행할 수 있다.
도 13은 도 12에 따른 PCIe 인터페이스 장치의 동작을 도시한다.
도 3 및 도 13을 참조하면, 도 13은 도 3의 PCI 구성요소(PCI COMPONENT 1, 210)에 포함된 계층(211, 212, 213), 리플레이 버퍼(214) 및 PCIe 레지스터(215)와 NVMe(non-volatile memory express) 레지스터(1010)를 도시한다. 도 12 및 도 13을 참조하면, 도 13은 도 12의 호스트에 의해 의도되지 않은 링크다운의 경우 LTSSM의 동작을 도시한다. 호스트에 의해 의도되지 않은 링크다운은 서든 링크다운일 수 있다. 도 13의 리플레이 버퍼(214)는 리트라이 버퍼일 수 있으며, TLP(transaction layer packet)의 재전송을 위해 TLP를 저장할 수 있다. NVMe 레지스터(1010)는 NVMe 모듈에 포함된 레지스터일 수 있다.
실시 예에서, 링크다운이 호스트에 의해 의도되지 않은 링크다운인 경우, 호스트에 의해 의도된 링크다운과 달리, LTSSM은 피지컬 레이어(213) 및 리플레이 버퍼(214)만 초기화하고(INITIALIZATION), 트랜잭션 레이어(211), 데이터 링크 레이어(212), PCIe 레지스터(215) 및 NVMe 레지스터(1010)는 유지할 수 있다(MAINTENANCE). 이 때, 피지컬 레이어(213) 및 리플레이 버퍼(214)의 초기화 시 유실된 데이터가 있으면, LTSSM은 AXI error로 NVMe 모듈에 전달할 수 있다. LTSSM은 서든 링크다운 인터럽트를 통해 NVMe 레지스터(1010)를 유지하고, AXI error가 발생한 커맨드에 대응하는 동작을 다시 수행할 수 있다.
실시 예에서, 링크다운이 호스트에 의해 의도되지 않은 서든 링크다운인 경우, PCIe 레지스터(215)에 포함된 레지스터들 중 PCIe Control 레지스터는 전부 유지하나, PCIe Status/Capability 레지스터는 일부만 유지될 수 있다. PCIe Status/Capability 레지스터의 링크 속도 및 협상된 링크폭이 초기화될 수 있고, 선택적으로 서든 링크다운으로 인한 AER의 정정 가능한 에러 상태가 초기될 수 있다.
실시 예에서, 링크다운이 호스트에 의해 의도되지 않은 서든 링크다운인 경우, NVMe는 진행중인 커맨드를 수행할 수 있으며, 다시 링크업 중 TIMEOUT으로 인해 PCIe에서 NVMe로 에러가 리턴되면, NVMe는 커맨드에 대응하는 동작을 다시 수행할 수 있다.
또, LTSSM이 링크업을 통해 L0 단계로 복귀된 경우, NVMe는 진행중인 커맨드를 이어서 진행할 수 있다.
결과적으로, 링크다운이 호스트에 의해 의도되지 않은 서든 링크다운인 경우, PCIe 레지스터(215)와 NVMe 레지스터(1010)를 유지함으로써, OS 또는 NVMe driver의 동작 중단을 방지할 수 있다.
도 14는 본 발명의 실시 예에 따른 PCIe 인터페이스 장치의 동작을 설명하기 위한 도면이다.
도 14를 참조하면, S1401 단계에서, LTSSM은 링크업 상태일 수 있다. 여기서, 링크업은 DETECT 단계에서 POLLING 단계, CONFIGURATION 단계를 거쳐 L0 단계로 천이되는 것을 나타낼 수 있다. 또, 링크업은 각 단계마다 설정되는 링크업 레지스터가 '1'인 상태를 의미할 수 있다.
S1403 단계에서, LTSSM은 링크다운 상태일 수 있다. 링크다운 상태는 다른 단계에서 다시 DETECT 단계로 천이되는 것을 나타낼 수 있다. 또, 링크다운은 각 단계마다 설정되는 링크업 레지스터가 '0'인 상태를 의미할 수 있다.
실시 예에서, 링크다운은 호스트에 의해 의도된 링크다운 및 호스트에 의도되지 않은 서든 링크다운으로 구분될 수 있다. 호스트에 의도된 링크다운은 호스트의 요청에 의해 링크업 상태에서 링크다운 상태로 변경되는 것을 의미할 수 있다. 호스트에 의도되지 않은 서든 링크다운은 호스트의 요청에 의하지 않고, 데이터 송수신 속도 변경의 실패, 레인 변경의 실패, 저전력 종료의 실패로 인해 timeout이 발생되어 DETECT 단계로 천이되는 것을 의미할 수 있다.
S1405 단계에서, LTSSM은 링크다운이 호스트의 요청에 의한 링크다운인지 판단할 수 있다. 링크다운이 호스트의 요청에 의한 링크다운인 경우(Y) S1407 단계로 진행하고, 호스트의 요청에 의한 링크다운이 아닌 경우(N), 즉 서든 링크다운의 경우 S1409 단계로 진행할 수 있다.
S1407 단계에서, LTSSM은 PCIe 레지스터 및 NVMe 레지스터를 초기화할 수 있다. 실시 예에서, 호스트의 요청에 의한 링크다운 시, 데이터는 플러쉬되고, PCIe 레지스터 및 NVMe 레지스터는 리셋될 수 있다. 따라서, LTSSM은 PCIe 레지스터 및 NVMe 레지스터를 초기화할 수 있다.
S1409 단계에서, LTSSM은 PCIe 레지스터 및 NVMe 레지스터를 유지할 수 있다. 실시 예에서, 호스트의 요청에 의한 링크다운이 아니면 OS 및 NVMe driver는 이를 인지할 수 없다. 따라서, 리셋된 값들로 인해 Blue screen 및 호스트 동작의 중단을 방지하기 위해, LTSSM은 PCIe 레지스터 및 NVMe 레지스터를 유지할 수 있다.
100: PCIe 인터페이스 장치
110: 중앙 처리 장치
120: 루트 컴플렉스
130: 메모리
140: 스위치
170: PCIe 브릿지

Claims (20)

  1. 트랜잭션의 전송을 위한 트랜잭션 패킷을 생성하는 트랜잭션 레이어;
    상기 트랜잭션 패킷을 기초로 상기 트랜잭션 패킷에 대한 보호 코드 및 시퀀스 넘버를 포함하는 링크 패킷을 생성하는 데이터 링크 레이어;
    상기 링크 패킷을 기초로 피지컬 패킷을 생성하고, 상기 피지컬 패킷을 순차적으로 출력하는 피지컬 레이어;
    상기 피지컬 레이어를 통해 연결된 링크에 대한 협상을 수행하고, 상기 링크에 대한 협상이 수행되지 않을 때 발생되는 링크다운이 호스트에 의한 요청인지를 기초로 데이터 정보를 유지하는 링크 트레이닝 모듈; 및
    상기 트랜잭션 레이어, 상기 데이터 링크 레이어, 상기 피지컬 레이어 및 상기 링크 트레이닝 모듈의 동작에 관한 정보를 포함하는 PCIe(Peripheral Component Interconnect Express) 레지스터;를 포함하는 PCIe 인터페이스 장치.
  2. 제 1항에 있어서,
    상기 링크 트레이닝 모듈은,
    상기 링크에 대한 협상을 수행할 때, 복수의 단계들 중 어느 하나의 단계를 수행하고, 상기 복수의 단계들에 대응하는 링크업 레지스터 값을 저장하며,
    상기 복수의 단계들 중 어느 하나는 DETECT 단계, POLLING 단계, CONFIGURATION 단계, L0 단계, L0s 단계, L1 단계, L2 단계, RECOVERY 단계, LOOPBACK 단계, HOT RESET 단계 및 DISABLED 단계 중 어느 하나인 것을 특징으로 하는 PCIe 인터페이스 장치.
  3. 제 2항에 있어서, 상기 링크 트레이닝 모듈은,
    상기 링크업 레지스터가 ‘1’에서 ‘0’으로 변경될 때, 변경되기 직전의 단계에 관한 정보를 저장하는 PCIe 인터페이스 장치.
  4. 제 3항에 있어서,
    상기 변경되기 직전의 단계가 상기 LOOPBACK 단계, 상기 HOT RESET 단계 또는 상기 DISABLED 단계면, 상기 링크다운은 상기 호스트의 요청에 의한 링크다운인 PCIe 인터페이스 장치.
  5. 제 3항에 있어서, 상기 링크 트레이닝 모듈은,
    상기 링크업 레지스터가 ‘1’에서 ‘0’으로 변경될 때, 상기 변경된 단계가 상기 DETECT 단계면, 상기 변경되기 직전의 단계를 식별하는 PCIe 인터페이스 장치.
  6. 제 5항에 있어서,
    상기 변경되기 직전의 단계가 상기 L2 단계, 상기 HOT RESET 단계 또는 상기 DISABLED 단계면, 상기 링크다운은 상기 호스트의 요청에 의한 링크다운인 PCIe 인터페이스 장치.
  7. 제 5항에 있어서,
    상기 변경되기 직전의 단계가 상기 CONFIGURATION 단계 또는 상기 RECOVERY 단계면, 상기 링크다운은 상기 호스트의 요청에 의한 링크다운을 제외한 서든 링크다운인 PCIe 인터페이스 장치.
  8. 제 7항에 있어서, 상기 링크 트레이닝 모듈은,
    상기 서든 링크다운일 때, 상기 피지컬 레이어를 초기화하고, 상기 트랜잭션 레이어, 상기 데이터 링크 레이어를 유지하는 PCIe 인터페이스 장치.
  9. 제 7항에 있어서,
    상기 트랜잭션 패킷의 재전송을 위해 상기 트랜잭션 패킷을 저장하는 리플레이 버퍼를 더 포함하고,
    상기 서든 링크다운일 때, 상기 링크 트레이닝 모듈은 상기 리플레이 버퍼를 초기화하는 PCIe 인터페이스 장치.
  10. 제 7항에 있어서, 상기 링크 트레이닝 모듈은,
    상기 서든 링크다운일 때, 상기 데이터 정보를 포함하는 PCIe 레지스터를 유지하는 PCIe 인터페이스 장치.
  11. 제 7항에 있어서, 상기 링크 트레이닝 모듈은,
    엔드 포인트에 연결된 NVMe(non-volatile memory express) 모듈에 포함된 상기 데이터 정보를 포함하는 NVMe 레지스터를 유지하는 PCIe 인터페이스 장치.
  12. 트랜잭션 레이어가 트랜잭션의 전송을 위한 트랜잭션 패킷을 생성하는 단계;
    데이터 링크 레이어가 상기 트랜잭션 패킷을 기초로 상기 트랜잭션 패킷에 대한 보호 코드 및 시퀀스 넘버를 포함하는 링크 패킷을 생성하는 단계;
    피지컬 레이어가 상기 링크 패킷을 기초로 피지컬 패킷을 생성하고, 상기 피지컬 패킷을 순차적으로 출력하는 단계;
    상기 피지컬 패킷을 송수신함으로써 상기 피지컬 레이어를 통해 연결된 링크에 대한 협상을 수행하는 단계; 및
    상기 링크에 대한 협상이 수행되지 않을 때 발생되는 링크다운이 호스트에 의한 요청인지를 기초로 데이터 정보를 유지하는 단계;를 포함하는 PCIe 인터페이스 장치의 동작 방법.
  13. 제 12항에 있어서, 상기 링크에 대한 협상을 수행하는 단계는,
    복수의 단계들 중 어느 하나의 단계를 수행하는 단계; 및
    상기 복수의 단계들 중 어느 하나의 단계에 대응하는 링크업 레지스터 값을 저장하는 단계;를 포함하고,
    상기 복수의 단계들 중 어느 하나는 DETECT 단계, POLLING 단계, CONFIGURATION 단계, L0 단계, L0s 단계, L1 단계, L2 단계, RECOVERY 단계, LOOPBACK 단계, HOT RESET 단계 및 DISABLED 단계 중 어느 하나인 것을 특징으로 하는 PCIe 인터페이스 장치의 동작 방법.
  14. 제 13항에 있어서, 상기 링크업 레지스터 값을 저장하는 단계에서,
    상기 링크업 레지스터가 ‘1’에서 ‘0’으로 변경될 때, 변경되기 직전의 단계에 관한 정보를 저장하는 PCIe 인터페이스 장치의 동작 방법.
  15. 제 14항에 있어서, 상기 링크에 대한 협상을 수행하는 단계에서,
    상기 링크업 레지스터가 ‘1’에서 ‘0’으로 변경될 때, 상기 변경된 단계가 상기 DETECT 단계면, 상기 변경되기 직전의 단계를 식별하는 PCIe 인터페이스 장치의 동작 방법.
  16. 제 15항에 있어서,
    상기 변경되기 직전의 단계가 상기 L2 단계, 상기 HOT RESET 단계 또는 상기 DISABLED 단계면, 상기 링크다운은 상기 호스트의 요청에 의한 링크다운인 PCIe 인터페이스 장치의 동작 방법.
  17. 제 15항에 있어서,
    상기 변경되기 직전의 단계가 상기 CONFIGURATION 단계 또는 상기 RECOVERY 단계면, 상기 링크다운은 상기 호스트의 요청에 의한 링크다운을 제외한 서든 링크다운인 PCIe 인터페이스 장치의 동작 방법.
  18. 제 17항에 있어서, 상기 링크에 대한 협상을 수행하는 단계에서,
    상기 서든 링크다운일 때, 상기 피지컬 레이어를 초기화하고, 상기 트랜잭션 레이어, 상기 데이터 링크 레이어를 유지하는 PCIe 인터페이스 장치의 동작 방법.
  19. 제 17항에 있어서, 상기 링크에 대한 협상을 수행하는 단계에서,
    상기 서든 링크다운일 때, 상기 데이터 정보를 포함하는 PCIe 레지스터를 유지하는 PCIe 인터페이스 장치의 동작 방법.
  20. 제 17항에 있어서, 상기 링크에 대한 협상을 수행하는 단계에서,
    엔드 포인트에 연결된 NVMe(non-volatile memory express) 모듈에 포함된 상기 데이터 정보를 포함하는 NVMe 레지스터를 유지하는 PCIe 인터페이스 장치의 동작 방법.
KR1020210070676A 2021-05-26 2021-06-01 PCIe 인터페이스 장치 및 그 동작 방법 KR20220162336A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020210070676A KR20220162336A (ko) 2021-06-01 2021-06-01 PCIe 인터페이스 장치 및 그 동작 방법
US17/527,062 US11940942B2 (en) 2021-06-01 2021-11-15 Peripheral component interconnect express interface device and operating method thereof
CN202210377986.9A CN115437978A (zh) 2021-06-01 2022-04-12 高速外围组件互连接口装置及其操作方法
US17/749,133 US11921657B2 (en) 2021-05-26 2022-05-19 Peripheral component interconnect express (PCIE) device for supporting separate reference clock(s) operating between host and direct memory access (DMA) controller
TW111120269A TW202248869A (zh) 2021-06-01 2022-05-31 快捷週邊組件互連介面裝置及其操作方法
US18/534,037 US20240104035A1 (en) 2021-05-26 2023-12-08 Peripheral component interconnect express device and operating method thereof

Applications Claiming Priority (1)

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

Publications (1)

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

Family

ID=84193025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210070676A KR20220162336A (ko) 2021-05-26 2021-06-01 PCIe 인터페이스 장치 및 그 동작 방법

Country Status (4)

Country Link
US (1) US11940942B2 (ko)
KR (1) KR20220162336A (ko)
CN (1) CN115437978A (ko)
TW (1) TW202248869A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117171083B (zh) * 2023-06-07 2024-05-03 沐曦集成电路(南京)有限公司 基于nak的自适应修复pcie接口互连链路的系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220162336A (ko) * 2021-06-01 2022-12-08 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US11921657B2 (en) 2021-05-26 2024-03-05 SK Hynix Inc. Peripheral component interconnect express (PCIE) device for supporting separate reference clock(s) operating between host and direct memory access (DMA) controller

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191255B2 (en) 2004-10-27 2007-03-13 Intel Corporation Transaction layer link down handling for PCI express
US8589723B2 (en) 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
US9262270B2 (en) * 2012-12-28 2016-02-16 Intel Corporation Live error recovery
US9086966B2 (en) 2013-03-15 2015-07-21 Intel Corporation Systems, apparatuses, and methods for handling timeouts
US9396152B2 (en) 2013-03-15 2016-07-19 Intel Corporation Device, system and method for communication with heterogenous physical layers
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
JP6427979B2 (ja) * 2014-06-19 2018-11-28 富士通株式会社 原因特定方法、原因特定プログラム、情報処理システム
KR102507714B1 (ko) 2016-05-02 2023-03-09 삼성전자주식회사 SRIS를 지원하는 PCIe 장치
EP3469486B1 (en) 2016-06-10 2021-07-21 Liqid Inc. Multi-port interposer architectures in data storage systems
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US10387353B2 (en) 2016-07-26 2019-08-20 Samsung Electronics Co., Ltd. System architecture for supporting active pass-through board for multi-mode NMVE over fabrics devices
KR102569761B1 (ko) 2016-10-05 2023-08-22 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
KR20180095765A (ko) 2017-02-17 2018-08-28 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10223318B2 (en) * 2017-05-31 2019-03-05 Hewlett Packard Enterprise Development Lp Hot plugging peripheral connected interface express (PCIe) cards
US11238005B2 (en) 2018-07-20 2022-02-01 Samsung Electronics Co., Ltd. SFF-TA-100X based multi-mode protocols solid state devices
US10698856B1 (en) 2018-12-18 2020-06-30 Ati Technologies Ulc Alternative protocol selection
US10713209B2 (en) 2019-02-08 2020-07-14 Intel Corporation Recalibration of PHY circuitry for the PCI Express (PIPE) interface based on using a message bus interface
US11815976B2 (en) 2019-05-22 2023-11-14 Qualcomm Incorporated Bandwidth based power management for peripheral component interconnect express devices
US11836101B2 (en) * 2019-11-27 2023-12-05 Intel Corporation Partial link width states for bidirectional multilane links
US11656770B2 (en) 2020-04-14 2023-05-23 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for supporting multiple connectors on storage devices
KR20220162336A (ko) * 2021-06-01 2022-12-08 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US20220342841A1 (en) * 2021-12-22 2022-10-27 Swadesh Choudhary Die-to-die adapter

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117171083B (zh) * 2023-06-07 2024-05-03 沐曦集成电路(南京)有限公司 基于nak的自适应修复pcie接口互连链路的系统

Also Published As

Publication number Publication date
TW202248869A (zh) 2022-12-16
US11940942B2 (en) 2024-03-26
US20220382706A1 (en) 2022-12-01
CN115437978A (zh) 2022-12-06

Similar Documents

Publication Publication Date Title
US10180927B2 (en) Device, system and method for communication with heterogeneous physical layers
JP4928732B2 (ja) データ転送システム及び電子機器
US7945721B1 (en) Flexible control and/or status register configuration
US7752376B1 (en) Flexible configuration space
KR102420530B1 (ko) 대체 프로토콜 선택
JP4564855B2 (ja) データ転送システム及び電子機器
US11940942B2 (en) Peripheral component interconnect express interface device and operating method thereof
US20220327074A1 (en) PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
US11960424B2 (en) Peripheral component interconnect express (PCIe) interface device and method of operating the same
JP4777723B2 (ja) 情報処理システム、プログラムおよびデータ転送方法
US11797468B2 (en) Peripheral component interconnect express device and computing system including the same
US11782497B2 (en) Peripheral component interconnect express (PCIE) interface device and method of operating the same
US20240104035A1 (en) Peripheral component interconnect express device and operating method thereof
JP4824422B2 (ja) 制御装置、画像処理システムおよびデータ転送経路切替方法
JP2007226494A (ja) データ転送システム
US20230315591A1 (en) PCIe DEVICE AND COMPUTING SYSTEM INCLUDING THE SAME
KR102518287B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
US20240012770A1 (en) Interface device having plurality of ports and method of operating the same
KR102519484B1 (ko) PCIe 인터페이스 장치 및 이를 포함하는 시스템

Legal Events

Date Code Title Description
E902 Notification of reason for refusal