KR20220158517A - PCIe 장치 및 이를 포함하는 컴퓨팅 시스템 - Google Patents

PCIe 장치 및 이를 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20220158517A
KR20220158517A KR1020210066435A KR20210066435A KR20220158517A KR 20220158517 A KR20220158517 A KR 20220158517A KR 1020210066435 A KR1020210066435 A KR 1020210066435A KR 20210066435 A KR20210066435 A KR 20210066435A KR 20220158517 A KR20220158517 A KR 20220158517A
Authority
KR
South Korea
Prior art keywords
link
lane
state
lanes
pcie device
Prior art date
Application number
KR1020210066435A
Other languages
English (en)
Other versions
KR102635457B1 (ko
Inventor
전용태
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020210066435A priority Critical patent/KR102635457B1/ko
Priority to US17/506,889 priority patent/US11797468B2/en
Priority to CN202210039712.9A priority patent/CN115391261A/zh
Priority to TW111108729A priority patent/TW202246976A/zh
Priority to US17/751,463 priority patent/US11960367B2/en
Publication of KR20220158517A publication Critical patent/KR20220158517A/ko
Application granted granted Critical
Publication of KR102635457B1 publication Critical patent/KR102635457B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/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
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • 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/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른, 링크 설정 동작 중 페일 레인이 검출되는 경우 나머지 레인들을 이용하여 링크를 설정할 수 있는 PCIe 장치는, 복수의 레인들을 형성하는 복수의 포트들 및 상기 복수의 레인들을 포함하는 링크를 설정하되, 상기 복수의 레인들 중 페일 레인을 제외한 나머지 레인들을 포함하는 링크 폭(link width)을 갖도록 상기 링크를 설정하는 링크 제어부를 포함하고, 상기 페일 레인은, 상기 나머지 레인들과 함께 상기 링크를 형성할 수 없는 상태를 갖는 레인이다.

Description

PCIe 장치 및 이를 포함하는 컴퓨팅 시스템{PCIe DEVICE AND COMPUTING SYSTEM INCLUDING THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 PCIe(Peripheral Component Interconnect Express) 장치 및 이를 포함하는 컴퓨팅 시스템에 관한 것이다.
PCI(Peripheral Component Interconnect)는 호스트 장치에 입출력 디바이스들을 연결하는데 사용되는 버스 프로토콜을 정의한다. PCIe(PCI Express)는 PCI 표준에서 정의한 프로그래밍 개념을 가지면서 물리적 통신 레이어(physical communication layer)를 고속 시리얼 인터페이스로 정의한 것이다.
스토리지 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (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 장치는, 복수의 레인들을 형성하는 복수의 포트들 및 상기 복수의 레인들을 포함하는 링크를 설정하되, 상기 복수의 레인들 중 페일 레인을 제외한 나머지 레인들을 포함하는 링크 폭(link width)을 갖도록 상기 링크를 설정하는 링크 제어부를 포함하고, 상기 페일 레인은, 상기 나머지 레인들과 함께 상기 링크를 형성할 수 없는 상태를 갖는 레인이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 복수의 레인들을 포함하는 링크, 복수의 다운스트림 포트들을 포함하는 제1 PCIe 장치 및 상기 복수의 다운스트림 포트들과 함께 상기 복수의 레인들을 형성하는 복수의 업스트림 포트들을 포함하고, 상기 링크를 통해 상기 제1 PCIe 장치와 데이터를 송수신하는 제2 PCIe 장치를 포함하고, 상기 제1 PCIe 장치는, 상기 링크를 설정하되, 상기 복수의 레인들 중 페일 레인을 제외한 나머지 레인들을 포함하는 링크 폭을 갖도록 상기 링크를 설정하고, 상기 페일 레인은, 상기 나머지 레인들과 함께 상기 링크를 형성할 수 없는 상태를 갖는 레인이다.
본 기술에 따르면, 링크 설정 동작 중 페일 레인이 검출되는 경우 나머지 레인들을 이용하여 링크를 설정할 수 있는 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템을 제공한다.
또한, 본 기술에 따르면, 링크 설정 동작 중 페일 레인이 검출되는 경우 나머지 레인들을 논리적으로 연속된 레인들로 구성함으로써, PCIe 장치의 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템의 일 예를 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 PCIe 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 PCIe 인터페이스를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 송신기, 수신기 및 레인을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 포트를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 PCIe 장치의 링크 상태를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 PCIe 장치를 설명하기 위한 도면이다.
도 8a 및 8b는 본 발명의 일 실시 예에 따른 링크를 설정하는 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 링크 번호를 결정하는 동작을 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시 예에 따른 레인 번호를 결정하는 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 일 실시 예에 따른 PCIe 장치의 동작 방법을 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템의 일 예를 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 CPU(110), 루트 콤플렉스(120), 메모리(130), 스위치(140), PCIe 엔드 포인트(150_1 내지 150_3), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170)를 포함할 수 있다.
컴퓨팅 시스템(100)은 PCIe 인터페이스를 이용한 통신을 지원하는 전자 장치일 수 있다. 컴퓨팅 시스템(100)은 PC, 랩탑 컴퓨터 또는 모바일 컴퓨팅 장치일 수 있고, 확장 카드(expansion card), 확장 보드(expansion board), 어댑터 카드(adapter card), 애드-인 카드(add-in card) 또는 액세서리 카드 (accessory card)를 포함할 수 있다. 그리고, 컴퓨팅 시스템(100)은 확장 버스를 통해 컴퓨팅 시스템(100)에 부가적인 기능을 제공하기 위해 컴퓨팅 시스템(100)의 마더보드 상의 전기적 커넥터 또는 확장 슬롯에 삽입될 수 있는 인쇄 회로 기판 (printed circuit board(PCB))을 포함할 수 있다. 또한, 컴퓨팅 시스템(100)은 솔리드 스테이트 드라이브(solid state drives(SSD))와 같은 저장 장치를 포함할 수 있고, 그래픽 카드, 네트워크 카드, 또는 USB 카드 등을 포함할 수 있다.
CPU(110)는 컴퓨팅 시스템(100)의 각 구성과 전기적으로 연결되어 있으며, 컴퓨팅 시스템(100)의 각 동작을 제어할 수 있다. 구체적으로, CPU(110)는 운영 체제 또는 응용 프로그램을 구동하여 CPU(110)에 연결된 하드웨어 또는 소프트웨어의 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 그리고, CPU(110)는 컴퓨팅 시스템(100)의 동작을 제어하기 위한 소프트웨어 또는 어플리케이션을 실행할 수 있다.
루트 콤플렉스(120)는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express; PCIe) 상호 접속 아키텍처 내 루트 허브, 제어기 허브, 또는 루트 제어기일 수 있다. 예를 들어, 루트 콤플렉스(120)는 칩셋, 메모리 제어기 허브(memory controller hub, MCH), 노스브릿지, 인터커넥트 제어기 허브(interconnect controller hub, ICH), 사우스브릿지, 및 루트 제어기/허브를 포함할 수 있다. 그리고, 루트 콤플렉스(120)는 CPU(110) 및 메모리(130)를 입출력 계층 구조(I/O Hierarchy)와 연결할 수 있다. 루트 콤플렉스(120)는 피어-투-피어(Peer-to-Peer; P2P) 라우팅을 지원할 수 있다. 루트 콤플렉스(120)는 적어도 하나의 호스트 브릿지 및 루트 포트를 포함할 수 있다. 루트 콤플렉스(120)는 하나 이상의 PCIe(Peripheral Component Interconnect Express) 포트를 지원할 수 있다.
메모리(130)는 컴퓨팅 시스템(100)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드를 저장할 수 있다. 일 실시 예에서, 메모리(130)는 하나 이상의 오퍼레이팅 시스템(operating system; OS)들 및 가상 머신(virtual machine; VM)들을 실행하도록 동작할 수 있는 프로그램 코드들 및 가상 머신들을 관리하기 위한 버추얼라이제이션 미디어리(Virtualization Intermediary; VI)를 실행하는 프로그램 코드들을 저장할 수 있다. 그리고, 메모리(130)는 DRAM 또는 SRAM 등의 휘발성 메모리 장치로 구현될 수 있다.
스위치(140)는 패킷 또는 메세지를 업스트림 또는 다운스트림으로 라우팅할 수 있다. 구체적으로, 스위치(140)는 패킷 또는 메시지를 PCIe 엔드 포인트(예컨대, 150_1)로부터 루트 콤플렉스(120)를 향한 계층 위쪽으로 라우팅할 수 있다. 또는, 스위치(140)는 패킷 또는 메시지를 루트 콤플렉스(120)로부터 PCIe 엔드 포인트(예컨대, 150_2)를 향한 계층 아래쪽으로 라우팅할 수 있다.
스위치(140)는 복수의 가상 PCI간 브릿지 디바이스(virtual PCI-to-PCI bridge device)의 로직 어셈블리라고 지칭될 수 있다. 스위치(140)에 연결될 수 있는 디바이스는 I/O 디바이스, 네트워크 인터페이스 제어기(Network Interface Controller, NIC), 애드-인(add-in) 카드, 오디오 프로세서, 네트워크 프로세서, 하드-드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 이동식 저장 디바이스, 파이어와이어 디바이스, 범용 직렬 버스(Universal Serial Bus, USB) 디바이스, 스캐너, 및 기타 입력/출력 디바이스와 같은 전자 시스템에 연결되는 임의의 내부 또는 외부 디바이스나 컴포넌트를 포함할 수 있다. 비록 구체적으로 도시되지 않을지라도, 디바이스는 레거시 또는 다른 버전의 PCI 디바이스를 지원하는 PCIe 대 PCI/PCI-X 브릿지를 포함할 수 있다.
일 실시 예에서, 루트 콤플렉스(120)는 엔드 포인트와 연결될 수 있다. 엔드 포인트는 PCIe 트랜잭션의 요청자 또는 컴플리터가 될 수 있는 펑션의 유형을 나타낼 수 있다. 엔드포인트는 레거시 엔드 포인트 또는 PCIe 엔드 포인트로 분류될 수 있다.
PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)는 PCIe 트랜잭션의 리퀘스터(requester) 또는 컴플리터(completer)의 역할을 수행할 수 있다. PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)가 송수신하는 TLP(Transaction layer packet)는 컨피규레이션 스페이스 헤더를 제공 할 수 있다. 또한, PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)는 컴플리터(completer)로서 컨피규레이션 요청을 제공 할 수 있다. 특정 조건에서는, PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)가 송수신하는 TLP(Transaction layer packet)는 컨피규레이션 스페이스 헤더를 제공해야 한다(must). 또한, PCIe 엔드 포인트(150_1~150_3) 및 레거시 엔드 포인트(160_1, 160_2)는 컴플리터(completer)로서 컨피규레이션 요청을 제공해야 한다(must).
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를 송수신할 수 있다.
PCIe 엔드 포인트(150_1~150_3)는 타입 00h 컨피규레이션 스페이스 헤더를 갖는 펑션일 수 있다. PCIe 엔드 포인트(150_1~150_3)는 컴플리터로서 컨피규레이션 요청을 지원할 수 있다. PCIe 엔드 포인트(150_1~150_3)에 액세스 할 때 잠금 시맨틱을 사용하지 않도록 PCIe 호환 소프트웨어 드라이버 및 응용 프로그램을 작성할 수 있다. 메모리 트랜잭션의 요청자로 작동하는 PCIe 엔드 포인트(150_1~150_3)는 4GB보다 큰 주소를 생성할 수 있다. 인터럽트 리소스가 요청 된 경우 MSI(Message Signaled Interrupt) 또는 MSI-X 또는 둘 다를 지원하려면 PCIe 엔드 포인트(150_1~150_3)가 필요할 수 있다. MSI가 구현 된 경우 PCIe 엔드 포인트(150_1~150_3)는 MSI 기능 구조의 64 비트 메시지 주소 버전을 지원할 수 있다. 베이스 어드레스 레지스터에서 요청하는 최소 메모리 주소 범위는 128 바이트일 수 있다. PCIe 엔드 포인트(150_1~150_3)는 루트 콤플렉스(120)에서 시작된(originated) 하이어라키 도메인들 중 하나에 포함될 수 있다.
레거시 엔드 포인트(160_1, 160_2)는 타입 00h 컨피규레이션 스페이스(Configuration Space) 헤더를 갖는 펑션일 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 컴플리터로서 컨피규레이션 요청을 지원할 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 컴플리터로서 I/O 요청을 지원할 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 해당 엔드 포인트의 I/O 디코드 구성에 관계없이 80h 및 84h 위치 중 하나 또는 둘 모두에 대한 I/O 요청을 수락할 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 I/O 요청을 생성할 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 익스텐디드 컨피규레이션 스페이스 케이퍼빌리티(Extended Configuration Space Capabilities)를 구현할 수 있다. 메모리 트랜잭션의 요청자로 작동하는 레거시 엔드 포인트(160_1, 160_2)는 4GB 이상의 주소를 생성 하지 않을 수 있다. 인터럽트 리소스가 요청된 경우 MSI 또는 MSI-X 또는 둘 다를 지원하려면 레거시 엔드 포인트(160_1, 160_2)가 필요하다. MSI가 구현 된 경우 레거시 엔드 포인트(160_1, 160_2)는 MSI 기능 구조의 32 비트 또는 64 비트 메시지 주소 버전을 지원할 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 메모리 리소스를 요청하는 기본 주소 레지스터에 대해 32 비트 주소 지정을 지원할 수 있다. 레거시 엔드 포인트(160_1, 160_2)는 루트 콤플렉스(120)에서 시작된(originated) 하이어라키 도메인들 중 하나에 포함될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 PCIe 장치를 설명하기 위한 도면이다.
도 2를 참조하면, PCIe 장치는 PCIe 인터페이스를 포함할 수 있고, PCIe 인터페이스를 이용한 송수신을 지원하는 전자 장치일 수 있다. 예를 들어, 제1 PCIe 장치(200-1) 또는 제2 PCIe 장치(200-2)는 도 1의 루트 콤플렉스(120), 스위치(140), PCIe 엔드 포인트(150_1 내지 150_3), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170) 중 어느 하나일 수 있다.
그리고, 제1 PCIe 장치(200-1) 또는 제2 PCIe 장치(200-2)는 제1 PCIe 인터페이스(210-1) 또는 제2 PCIe 인터페이스(210-2)를 이용하여 통신을 수행할 수 있다. 구체적으로, 제1 PCIe 장치(200-1)는 제2 PCIe 장치(200-2)로부터 전송할 데이터를 제1 PCIe 인터페이스(210-1)를 이용하여 통신에 적합한 프로토콜로 변환할 수 있다. 그리고, 제1 PCIe 장치(200-1) 및 제2 PCIe 장치(200-2)는 링크(Link)를 형성할 수 있고, 제1 PCIe 장치(200-1) 및 제2 PCIe 장치(200-2)는 형성된 링크를 통해 통신할 수 있다. 예를 들어, 제1 PCIe 장치(200-1) 또는 제2 PCIe 장치(200-2)는 링크를 통하여 패킷을 송수신할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 PCIe 인터페이스를 설명하기 위한 도면이다.
도 3을 참조하면, 제1 PCIe 인터페이스(210-1) 및 제2 PCIe 인터페이스(210-2)가 도시되어 있다. 제1 PCIe 인터페이스(210-1) 및 제2 PCIe 인터페이스(210-2)는 동일한 구조로 형성될 수 있으므로, 제1 PCIe 인터페이스(210-1)를 기준으로 설명하도록 한다.
제1 PCIe 인터페이스(210-1)에 포함된 PCIe 레이어들은 3개의 이산적 논리적 계층들(three discrete logical layers)을 포함할 수 있다. 예를 들어, 제1 PCIe 인터페이스(210-1)는 트랜잭션 레이어, 데이터 링크 레이어 및 피지컬 레이어를 포함할 수 있다. 각 레이어들은 두 개의 섹션들을 포함할 수 있다. 하나의 섹션은 아웃바운드(또는 전송될) 정보를 처리할 수 있고, 다른 하나는 인바운드(또는 수신된) 정보를 처리할 수 있다. 그리고, 제1 PCIe 인터페이스(210-1)는 다른 PCIe 인터페이스 사이에서 정보를 통신하기 위해 패킷들(packets)을 사용할 수 있다.
PCIe 인터페이스의 구조에서 상위(upper) 레이어는 트랜잭션 레이어일 수 있다. 트랜잭션 레이어는 트랜잭션 레이어 패킷들(transaction layer packets(TLPs))을 모으고(assembly) 분해(disassembly)할 수 있다. 그리고, 트랜잭션 레이어는 스플릿 트랜잭션(split tansaction), 즉, 타겟 시스템이 응답에 필요한 데이터를 수집하는 동안 링크로 다른 트래픽을 전달하게 해주는 트랜잭션을 구현할 수 있다. 예컨대, 트랜잭션 레이어는 요청과 응답이 시간적으로 분리되어 있는 트랜잭션을 구현할 수 있다. 일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함할 수 있다. 메모리 공간 트랜잭션은 데이터를 메모리-매핑된 장소로/로부터 전달하는 읽기 요청 및 쓰기 요청 중 하나 이상을 포함할 수 있다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면, 32-비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64-비트 어드레스와 같이 긴 어드레스 포맷을 사용할 수 있다. 구성 공간 트랜잭션은 PCIe 장치의 구성 공간에 액세스하는데 사용될 수 있다. 구성 공간으로의 트랜잭션은 읽기 요청 및 쓰기 요청을 포함할 수 있다. 메시지 공간 트랜잭션(또는, 메시지)은 PCIe 장치들 간의 대역-내(in-band) 통신을 지원하기 위해 정의될 수 있다.
트랜잭션 레이어는 링크 구성 정보(Link configuration information) 등을 저장할 수 있다. 그리고, TLP를 생성하거나, 수신한 TLP를 페이로드(payload) 또는 상태 정보(status information)로 변환할 수 있다.
PCIe 인터페이스의 구조에서 중간 레이어(middle layer)는 데이터 링크 레이어이고, 데이터 링크 레이어는 트랜잭션 레이어 및 피지컬 레이어 사이의 중간 스테이지(intermediate stage)의 기능을 수행할 수 있다. 데이터 링크 레이어의 주요한 기능은 링크 관리(link management) 및 에러 검출과 에러 정정을 포함하는 데이터 무결성(data integrity)일 수 있다. 구체적으로, 데이터 링크 레이어의 송신 측은 트랜잭션 레이어에서 수집된(assembled) TLPs를 수용(accept)하고, 데이터 보호 코드를 부여하거나, TLP 시퀀스 번호를 계산할 수 있다. 그리고, 데이터 링크 레이어의 송신 측은 링크를 통해 전송하기 위해 데이터 보호 코드와 TLP 시퀀스 번호를 피지컬 레이어로 전송할 수 있다. 데이터 링크 레이어의 수신 측은 피지컬 레이어로부터 수신된 TLPs의 데이터 무결성을 체크하고, 추가적인 처리를 위해 트랜잭션 레이어로 TLPs를 전송할 수 있다.
피지컬 레이어는 인터페이스 동작을 위한 모든 회로(all circuitry)를 포함할 수 있다. 여기서, 모든 회로는 드라이버, 입력 버퍼, 직렬-병렬 변환 회로, 병렬-직렬 변환 회로, 위상 동기 루프(phase locked loop(PLLs), 및 임피던스 매칭 회로를 포함할 수 있다.
그리고, 피지컬 레이어는 패킷을 외부 PCIe 장치에 물리적으로 전송하는 논리 서브블록 및 전기 서브블록을 포함할 수 있다. 여기서, 논리 서브블록은 피지컬 레이어의 '디지털' 기능에 필요한 역할을 수행할 수 있다. 이와 관련하여, 논리 서브블록은 물리 서브블록에 의해 전송하기 위한 발송 정보를 준비하는 송신 섹션과 수신된 정보를 데이터 링크 레이어에 전달하기 전에 수신된 정보를 식별하고 준비하는 수신 섹션을 포함할 수 있다. 피지컬 레이어는 송신기 및 수신기를 포함할 수 있다. 송신기는 논리 서브블록에 의해 송신기가 직렬화하여 외부 장치에 송신하는 심볼을 공급받을 수 있다. 그리고, 수신기는 외부 장치로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트스트림으로 변환할 수 있다. 비트스트림은 역직렬화되어 논리 서브블록에 공급될 수 있다. 즉, 피지컬 레이어는 데이터 링크 레이어(213)로부터 수신한 TLPs를 직렬화된 형식(serialized format)으로 변환하고, 외부 장치로부터 수신한 패킷을 역직렬화된 형식(deserialized format)으로 변환할 수 있다. 그리고, 피지컬 레이어는 인터페이스 초기화 및 유지에 관련된 논리적 기능들을 포함할 수 있다.
도 3에서는 제1 PCIe 인터페이스(210-1) 및 제2 PCIe 인터페이스(210-2)의 구조를 예시적으로 도시하였으나, 퀵 패스 인터커넥트(Quick Path Interconnect) 구조, 차세대 고성능 컴퓨팅 인터커넥트(Next Generation High Performance Computing Interconnect) 구조 또는 다른 계층화된 구조 등과 같은 임의의 형태를 포함할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 송신기, 수신기 및 레인을 설명하기 위한 도면이다.
도 4를 참조하면, 제1 송신기(TX1), 제2 송신기(TX2), 제1 수신기(RX1) 및 제2 수신기(RX2)가 도시되어 있다. 레인(lane)은 차동 구동된 신호 쌍들을 포함하는 경로, 예컨대, 송신용으로 구성된 송신 경로 쌍 및 수신용으로 구성된 수신 경로 쌍을 포함할 수 있다. PCIe 장치는 데이터를 다른 PCIe 장치로 송신하는 송신 로직 및 데이터를 다른 PCIe 장치로부터 수신하는 수신 로직을 포함할 수 있다. 예를 들어, 제1 송신기(TX1)에 연결된 두 개의 송신 경로 및 제1 수신기(RX1)에 연결된 두 개의 수신 경로를 포함할 수 있다.
여기서, 송신 경로는 송신 회선, 구리 회선, 광 회선, 무선 통신 채널, 적외선 통신 링크, 또는 다른 통신 경로와 같이 데이터를 송신하기 위한 임의의 경로를 의미할 수 있다. 그리고, 수신 경로는 송신 경로와 동일하게 구현되나, 수신을 위해 이용되는 경로일 수 있다.
두 PCIe 장치, 예컨대, 도 2의 제1 PCIe 장치(200-1) 및 제2 PCIe 장치(200-2) 사이의 접속은 링크라고 지칭될 수 있다. 링크는 1개 이상의 레인(lane)을 지원할 수 있다. 예를 들어, 링크는 복수의 레인들을 포함할 수 있다. 그리고, 각각의 레인은 한 세트의 차동 신호 쌍(하나의 쌍은 송신용, 하나의 쌍은 수신용)을 나타낼 수 있다. 차동 신호는 주파수와 진폭이 같으나, 위상이 반대인 2개의 신호를 의미할 수 있다. 예를 들어, 제1 신호가 0에서 V+의 전압 레벨로 토글하는 상승 에지(edge)일 때, 제2 신호는 0에서 V-의 전압 레벨로 토글하는 하강 에지(edge)로 진행할 수 있다. PCIe 장치는 차동 신호를 이용하여 신호 무결성(signal integrity), 예컨대, 크로스-커플링, 전압 오버슈트/언더슈트, 링잉 등과 같은 전기적 특성을 이용할 수 있고, 송신 주파수를 더 빠르게 조정할 수 있다. 그리고, PCIe 장치는 대역폭을 조정하기 위해, 복수의 레인을 포함할 수 있다. 예를 들어, 두 PCIe 장치는 1, 2, 4, 8, 12, 16, 32, 64 등의 레인을 포함하는 링크를 형성할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 포트를 설명하기 위한 도면이다.
도 5를 참조하면, 제1 PCIe 장치(200-1) 및 제2 PCIe 장치(200-2)에 포함된 다운스트림 포트(215-1) 및 업스트림 포트(215-2)가 도시되어 있다.
일 실시 예에서, 제1 PCIe 장치(200-1)는 제2 PCIe 장치(200-2)보다 상위 계층일 수 있고, 상위 계층으로의 데이터 이동 및 전송을 업스트림이라고 칭할 수 있다. 반대로, 하위 계층으로의 데이터 이동 및 전송을 다운스트림이라고 칭할 수 있다. 예를 들어, 도 1을 참조하면, 스위치(140)는 다운스트림 및 업스트림의 라우팅을 지원할 수 있다. 구체적으로, 업스트림은 패킷 또는 메시지를 PCIe 엔드 포인트(예컨대, 150_1)로부터 루트 콤플렉스(120)를 향한 계층 위쪽으로의 라우팅이고, 다운스트림은 루트 콤플렉스(120)로부터 PCIe 엔드 포인트(예컨대, 150_2)를 향한 계층 아래쪽으로의 라우팅일 수 있다.
일 실시 예에서, 다운스트림 포트(215-1)를 포함하는 제1 PCIe 장치(200-1)는 “업스트림 컴포넌트(upstream component)”로 지칭될 수 있다. 이때, 업스트림 컴포넌트는 도 1의 루트 콤플렉스(120) 또는 스위치(140)를 나타낼 수 있다. 또한, 업스트림 포트(215-2)를 포함하는 제2 PCIe 장치(200-2)는 “다운스트림 컴포넌트(downstream component)”로 지칭될 수 있다. 이때, 다운스트림 컴포넌트는 도 1의 스위치(140), PCIe 엔드 포인트(150_1 내지 150_3), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170) 중 어느 하나를 나타낼 수 있다.
다운스트림 포트(215-1) 및 업스트림 포트(215-2)는 각각 송신기(Tx), 수신기(Rx) 및 위상 동기 루프(Phase locked loop; PLL) 회로를 포함할 수 있다. PLL 회로는 클럭 생성기(CLK GEN) 로부터 제공된 클럭 신호를 이용하여 송신기(Tx) 또는 수신기(Rx)로 공급될 클럭 신호를 생성할 수 있다. PLL 회로는 클럭 신호 생성기로부터 수신한 신호를 체배하여 변경된 주파수를 갖는 클럭 신호를 생성할 수 있다. 예컨대, PLL 회로는 100MHz의 주파수를 갖는 기준 클럭 신호(REFCLK)를 2.5GHz의 주파수를 갖는 클럭 신호로 체배할 수 있다. 송신기(Tx)는 PLL 회로의 출력 신호를 이용하여 병렬 데이터 신호를 직렬 데이터 신호로 변환하고, 직렬 데이터 신호를 외부 장치, 예컨대, 외부 PCIe 장치로 전송할 수 있다. 수신기(Rx)는 외부 장치로부터 전송된 직렬 데이터 신호를 수신하고, PLL 회로의 출력 신호를 이용하여, 수신된 직렬 데이터 신호를 복원하기 위한 클럭 신호와 복원된 직렬 데이터 신호를 병렬 데이터 신호로 변환하기 위한 클럭 신호를 생성할 수 있다. 클럭 신호 생성기(CLK GEN)는 PCIe 인터페이스의 동작에 이용되는 기준 클럭 신호(REFCLK)를 생성할 수 있다. 여기서, PCIe 인터페이스의 동작은 외부 PCIe 장치와 통신일 수 있다.
도 6은 본 발명의 일 실시 예에 따른 PCIe 장치의 링크 상태를 설명하기 위한 도면이다.
도 6을 참조하면, 감지(detect) 상태, 폴링(polling) 상태, 구성(configuration) 상태, 핫 리셋(hot reset), 불능(disabled) 상태, L0 상태 등의 PCIe 장치의 링크 상태가 도시되어 있다.
감지 상태는 파워 온 또는 리셋 후의 초기 상태이며 이하의 상태들로부터 진입된 것일 수 있다. 예를 들어, 감지 상태는 구성 상태, 핫 리셋, 불능 상태, L2 상태, 룩백(loopback) 상태 및 리커버리 상태로부터 진입된 상태일 수 있다. 감지 상태는 모든 로직, 포트 및 레지스터를 리셋할 수 있고, PCIe 인터페이스에 연결된 링크를 감지하는 단계일 수 있다. 즉, 감지 상태는 물리적으로 연결된 레인을 탐색하는 단계일 수 있다.
폴링 상태는 감지된 레인들 중 데이터 통신이 가능한 레인을 구별하는 상태를 의미할 수 있다. 폴링 상태는 PCIe 인터페이스의 양 끝 단의 클럭을 동기화하고, 레인의 극성이 D+인지 D-인지를 확인하고, 레인이 사용할 수 있는 데이터 전송 속도를 확인하는 단계일 수 있다. 즉, 폴링 상태는 극적 반전(polarity inversion)을 확인하는 상태일 수 있다. 또한, 폴링 상태의 링크는 감지 상태 또는 구성 상태로 진입할 수 있다.
구성 상태는 레인의 연결 상태를 확인하는 상태일 수 있다. 구체적으로, 구성 상태는 데이터 통신이 가능한 레인 폭(lane width)을 확정하는 상태일 수 있다. 그리고, 구성 상태는 레인 반전(lane reverse)을 확인하는 단계일 수 있다. 구성 상태는 폴링 상태에서 진입할 수 있고, 또는, L0 상태 진입 후 레인 감소(lane reduce) 및 레인 폭 증가(lane width up)시 구성 상태로 진입할 수 있다.
리커버리 상태는 링크 대역폭의 재구성을 위해 사용되는 상태일 수 있다. 리커버리 상태는 설정된 링크의 링크 대역폭을 바꾸고, 비트 락(bit lock), 심볼 락 및 레인-투-레인 디스큐(lane-to-lane de-skew)를 재설정할 수 있다. 리커버리 상태는 L0 상태에서 에러가 발생한 경우 진입할 수 있고, 이후, 리커버리 상태에서 에러를 복구한 후 L0 상태로 변경될 수 있다. 또한, 본 발명의 일 실시 예에 따르면, 리커버리 상태에서 링크의 이퀄라이제이션 동작이 수행될 수 있다.
L0 상태는 데이터 및 패킷들이 링크를 통해 송신 및 수신될 수 있는 정상 동작 상태(normal operational state)일 수 있다. 구체적으로, L0 상태는 데이터 및 제어 패킷들이 송신 및 수신될 수 있는 물리적 버스 인터페이스의 동작 상태일 수 있다. L0 상태는 최대 활성 상태(fully active state)일 수 있다.
L0s 상태는 물리적 버스 인터페이스가 전력 보존 상태에 신속하게 진입할 수 있게 하고 복구 상태를 거치지 않고서 그로부터 복구될 수 있게 하는 상태일 수 있다. L0s 상태는 전력 절감 상태일 수 있다. L0s 상태는 인터페이스 내 일부 기능의 유휴 또는 대기 상태(idle or standby state)일 수 있다
L1 상태는 전력 절감 상태일 수 있다. L1 상태는 L0s 상태 보다 전력 절감량이 추가된 상태일 수 있다. L1 상태는 저전력 대기 상태(low power standby state)일 수 있다.
L2 상태는 적극적인 전력 절감 상태일 수 있다. 송신기 및 수신기 대부분이 셧 오프될 수 있다. 메인 전력 및 클록들은 보장되지 않지만, 보조 전력은 공급될 수 있다. L2 상태는 대부분의 기능에 전력이 공급되지 않는 저전력 슬립 상태(low power sleep state)일 수 있다.루프백 상태는 테스트 및 오작동 분리 사용을 위한 상태일 수 있다. 루프백 상태는 레인 단위로만 동작되며, 루프백 수신 레인이 선택되고 구성되어야 한다.
불능 상태는 설정된 링크가 지시될 때까지 불능이 되게 하는 상태일 수 있다. 핫 리셋 상태는 다운스트림 포트에 의해서만 트리거될 수 있다. 다운스트림 포트는 핫 리셋을 전파하기 위해 트레이닝 시퀀스들(예컨대, TS1 또는 TS2)을 사용할 수 있다. 여기서, 트레이닝 시퀀스들(Training Sequences; TS)은 비트 정렬 초기화(initializing bit alignment), 심볼 정렬(Symbol alignment) 및 피지컬 레이어(Physical) 매개 변수(parameter) 교환에 사용되는 정렬된 집합일 수 있다. 본 명세서에서, “트레이닝 시퀀스들”은 “트레이닝 시퀀스 오더 세트(Training Sequences Ordered Sets)”로 지칭될 수 있다.
도 7은 본 발명의 일 실시 예에 따른 PCIe 장치를 설명하기 위한 도면이다.
도 7을 참조하면, PCIe 장치(700)는 복수의 포트들(P0~Pn) 및 링크 제어부(710)를 포함할 수 있다.
복수의 포트들(P0~Pn)은 복수의 레인들을 형성할 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 하나의 포트는 다른 PCIe 장치에 포함된 포트와 함께 하나의 레인을 형성할 수 있다. 일 실시 예에서, 복수의 포트들(P0~Pn)은 각각 다운스트림 포트 또는 업스트림 포트일 수 있다. 예를 들어, 복수의 포트들(P0~Pn)이 다운스트림 포트인 경우, PCIe 장치(700)는 업스트림 컴포넌트일 수 있다. 또한, 복수의 포트들(P0~Pn)이 업스트림 포트인 경우, PCIe 장치(700)는 다운스트림 컴포넌트일 수 있다. 복수의 포트들(P0~Pn)은 각각 수신기 및 송신기를 포함할 수 있다.
링크 제어부(710)는 링크를 설정할 수 있다. 이때, 링크는 복수의 포트들(P0~Pn)을 포함할 수 있다. 즉, 링크는 복수의 포트들(P0~Pn)에 의해 형성될 수 있다. 예를 들어, 링크 제어부(710)는 링크를 설정하는 링크 설정 동작을 수행할 수 있다. 이때, 링크 설정 동작은 링크가 정상적으로 동작하도록 링크를 초기화(initialize)하고 구성(configure)하는 프로세스를 나타낼 수 있다. 링크 설정 동작은 PCIe 스펙에 따른 링크 초기화 및 트레이닝(Link Initialization & Training) 동작을 나타낼 수 있다.
일 실시 예에서, 링크 제어부(710)는 LTSSM(Link Training and Status State Machine)을 포함할 수 있다. LTSSM은 링크 설정 동작을 수행하기 위한 구성 요소일 수 있다.
링크 제어부(710)는 링크 폭(link width) 및 레인 번호 협상 동작(Lane Number Negotiation)을 수행할 수 있다. 이때, 링크 폭은 링크를 형성하는 레인의 개수를 나타낼 수 있다. 예를 들어, 링크 제어부(710)는 링크를 설정하는 과정에서 링크 폭을 결정할 수 있다. 레인 번호는 링크에 포함된 각 레인에 할당된 번호를 나타낼 수 있다. 예를 들어, 링크 제어부(710)는 링크를 설정하는 과정에서 각 레인에 할당할 번호를 협상하고, 협상에 따라 각 레인의 레인 번호를 결정할 수 있다. 이때, 결정된 레인 번호는 다른 PCIe 장치로 전송되고, 다른 PCIe 장치는 해당 레인 번호를 억셉트(accept)할 수 있다.
일 실시 예에서, 링크 제어부(710)는 링크를 설정하는 과정에서 복수의 레인들 중 페일 레인을 검출할 수 있다. 이때, 페일 레인은 나머지 레인들과 함께 링크를 형성할 수 없는 상태를 갖는 레인일 수 있다. 나머지 레인은 페일 레인이 아닌 레인으로서, 복수의 레인들 중 페일 레인을 제외한 모든 레인들을 포함할 수 있다. 예를 들어, 레인에 포함된 전송 경로 또는 수신 경로에 문제가 발생한 경우, 해당 레인은 페일 레인일 수 있다. 이 경우, 페일 레인은 데이터를 전송하는데 있어서 정상적으로 동작하지 않을 수 있다. 예를 들어, 링크 제어부(710)는 링크의 상태가 감지 상태일 때, 감지 상태에 대응되는 링크 설정 동작을 통해 페일 레인을 검출할 수 있다. 이때, 감지 상태에 대응되는 링크 설정 동작은 감지 상태에서 링크를 설정하기 위해 수행되는 동작으로서, 양 끝단에서 링크를 서로 발견하기 위한 동작을 포함할 수 있다. 예를 들어, 양 끝단은 링크를 통해 연결된 서로 다른 PCIe 장치에 포함된 포트일 수 있다. 이후, 링크 제어부(710)는 복수의 레인들 중 페일 레인을 제외한 나머지 레인들에 대해 감지 상태에 대응되는 링크 설정 동작을 수행할 수 있다. 또한, 링크 제어부(710)는 링크의 상태가 폴링 상태일 때, 폴링 상태에 대응되는 링크 설정 동작을 통해 페일 레인을 검출할 수 있다. 이때, 폴링 상태에 대응되는 링크 설정 동작은 폴링 상태에서 링크를 설정하기 위해 수행되는 동작으로서, 트레이닝 시퀀스 오더 세트를 송수신하는 동작을 포함할 수 있다. 예를 들어, 폴링 상태에 대응되는 링크 설정 동작은 링크를 통해 연결된 포트들 사이에서 트레이닝 시퀀스 오더 세트를 송수신하는 동작을 포함할 수 있다. 이후, 링크 제어부(710)는 나머지 레인들에 대해 폴링 상태에 대응되는 링크 설정 동작을 수행할 수 있다.
일 실시 예에서, 링크 제어부(710)는 나머지 레인들을 포함하는 링크 폭을 갖도록 링크를 설정할 수 있다. 예를 들어, 링크 제어부(710)는 링크의 상태가 구성 상태일 때, 나머지 레인들에 대해 구성 상태에 대응되는 링크 설정 동작을 수행할 수 있다. 이때, 구성 상태에 대응되는 링크 설정 동작은 구성 상태에서 링크를 설정하기 위해 수행되는 동작일 수 있다. 예를 들어, 구성 상태에 대응되는 링크 설정 동작은 링크 폭을 설정하는 동작, 레인 번호를 결정하는 동작, 레인 투 레인 디-스큐(Lane to Lane de-skew) 동작 등을 포함할 수 있다.
예를 들어, 링크 제어부(710)는 구성 상태에서 링크의 링크 번호를 결정하고, 나머지 레인들 각각의 레인 번호를 결정할 수 있다. 이때, 링크 제어부(710)는 레인 번호 협상 동작을 통해 나머지 레인들 각각의 레인 번호를 결정할 수 있다. 일 실시 예에서, 링크 제어부(710)는 나머지 레인들 각각의 레인 번호가 순차적으로 증가 또는 감소하도록 나머지 레인들 각각의 레인 번호를 결정할 수 있다.
일 실시 예에서, 링크 제어부(710)는 복수의 포트들(P0~Pn)을 통해 결정된 링크 번호 및 결정된 나머지 레인들 각각의 레인 번호를 복수의 포트들(P0~Pn)과 함께 복수의 레인들을 형성하는 다른 포트들로 제공할 수 있다. 이때, 다른 포트들은 PCIe 장치(700)와 다른 PCIe 장치에 포함된 것일 수 있다. 예를 들어, 링크 제어부(710)는 트레이닝 시퀀스 오더 세트를 이용하여 결정된 링크 번호 및 결정된 나머지 레인들 각각의 레인 번호를 다른 포트들로 제공할 수 있다. 이 경우, 다른 PCIe 장치는 링크 번호 및 나머지 레인들 각각의 레인 번호를 억셉트할 수 있다.
도 8a 및 8b는 본 발명의 일 실시 예에 따른 링크를 설정하는 동작을 설명하기 위한 도면이다.
도 8a를 참조하면, 제1 PCIe 장치(700-1) 및 제2 PCIe 장치(700-2)는 각각 도 7의 PCIe 장치(700)를 나타낼 수 있다. 예를 들어, 제1 PCIe 장치(700-1)는 복수의 다운스트림 포트들(P0~P7)을 포함하는 PCIe 장치일 수 있다. 또한, 제2 PCIe 장치(700-2)는 복수의 업스트림 포트들(P0'~P7')을 포함하는 PCIe 장치일 수 있다. 다만, 이는 일 예시에 불과하며, 실시 예에 따라 제1 PCIe 장치(700-1)에 포함된 포트들이 업스트림 포트들일 수 있고, 제2 PCIe 장치(700-2)에 포함된 포트들이 다운스트림 포트들일 수 있다. 실시 예에 따라, 제1 PCIe 장치(700-1)가 다운스트림 포트들을 포함 할 수 있고, 제2 PCIe 장치(700-2)가 업스트림 포트들을 포함할 수 있다. 또한, 제1 PCIe 장치(700-1) 및 제2 PCIe 장치(700-2)가 각각 8개의 포트를 포함하는 것으로 도시하였으나, 포트의 개수는 실시 예에 따라 다양할 수 있다.
복수의 다운스트림 포트들(P0~P7)은 복수의 업스트림 포트들(P0'~P7')과 함께 복수의 레인들을 형성할 수 있다. 예를 들어, 제0 다운 스트림 포트(P0)와 제0 업스트림 포트(P0')는 0번 레인(Lane 0)을 형성하고, 제1 다운 스트림 포트(P1)와 제1 업스트림 포트(P1')는 1번 레인(Lane 1)을 형성하고, 제2 다운 스트림 포트(P2)와 제2 업스트림 포트(P2')는 2번 레인(Lane 2)을 형성하고, 제3 다운 스트림 포트(P3)와 제3 업스트림 포트(P3')는 3번 레인(Lane 3)을 형성하고, 제4 다운 스트림 포트(P4)와 제4 업스트림 포트(P4')는 4번 레인(Lane 4)을 형성하고, 제5 다운 스트림 포트(P5)와 제5 업스트림 포트(P5')는 5번 레인(Lane 5)을 형성하고, 제6 다운 스트림 포트(P6)와 제6 업스트림 포트(P6')는 6번 레인(Lane 6)을 형성하고, 제7 다운 스트림 포트(P7)와 제7 업스트림 포트(P7')는 7번 레인(Lane 7)을 형성할 수 있다. 이러한 레인을 형성하는 동작은 링크 폭 및 레인 번호 협상 동작을 통해 수행될 수 있다.
도 8b은 제1 PCIe 장치(700-1)와 제2 PCIe 장치(700-2)가 링크를 설정하는 도중에, 제5 다운 스트림 포트(P5)와 제5 업스트림 포트(P5') 사이의 레인이 페일 레인인 경우를 나타낸 것이다.
이 경우, 제1 PCIe 장치(700-1)는 복수의 포트(P0~P7)에 대해, 그 포트 번호가 순차적으로 증가하는 순서로 레인 번호 협상 동작을 수행할 수 있다. 따라서, PCIe 스펙에 따르면, 제5 다운 스트림 포트(P5)와 제5 업스트림 포트(P5') 사이의 레인이 페일 레인이므로, 제6 다운 스트림 포트(P6)와 제7 다운 스트림 포트(P7)에 대한 레인 번호 협상 동작은 수행되지 않을 수 있다. 이 경우, 제6 다운 스트림 포트(P6)와 제6 업스트림 포트(P6') 사이의 레인 및 제7 다운 스트림 포트(P7)와 제7 업스트림 포트(P7') 사이의 레인은 일렉트릭 유휴(Electrical Idle) 상태일 수 있다.
또한, PCIe 스펙에 따르면, 링크 폭은 1 레인, 2 레인, 4 레인, 8 레인, 12 레인, 16 레인 및 32 레인 중 어느 하나로 결정되는 것이 일반적이다. 따라서, 제1 PCIe 장치(700-1)는 4개의 레인(Lane 0~Lane 3)을 포함하는 링크 폭을 갖도록 링크를 설정할 수 있다. 이 경우, 링크는 4개의 레인(Lane 0~Lane 3)으로만 형성될 수 있다. 제4 다운 스트림 포트(P4)와 제4 업스트림 포트(P4') 사이의 레인은 페일 레인이 아님에도 불구하고, 일렉트릭 유휴 상태일 수 있다.
이 경우, 제4 다운 스트림 포트(P4)와 제4 업스트림 포트(P4') 사이의 레인, 제6 다운 스트림 포트(P6)와 제6 업스트림 포트(P6') 사이의 레인 및 제7 다운 스트림 포트(P7)와 제7 업스트림 포트(P7') 사이의 레인은 이용되지 못하기 때문에, PCIe 장치의 성능이 낮아질 수 있다. 따라서, 페일 레인을 제외한 동작 또는 허여 가능한 레인들을 이용하여 링크를 형성하기 위한 방안이 요구된다.
도 9는 본 발명의 일 실시 예에 따른 링크 번호를 결정하는 동작을 설명하기 위한 도면이다.
도 9를 참조하면, 제1 PCIe 장치(700-1)는 감지 상태 또는 폴링 상태에서 링크 설정 동작을 통해 페일 레인을 검출할 수 있다.
제1 PCIe 장치(700-1)는 구성 상태에서 링크 번호(Link_N)를 결정할 수 있다. 제1 PCIe 장치(700-1)는 페일 레인과 연결된 제5 다운스트림 포트(P5)를 제외한 나머지 다운스트림 포트들(P0~P4, P6, P7)을 통해 링크 번호에 대한 정보(LINK_NUM)를 포함하는 트레이닝 시퀀스 오더 세트(TS)를 업스트림 포트들(P0'~P4', P6', P7')로 제공할 수 있다. 제2 PCIe 장치(700-2)는 업스트림 포트들(P0'~P4', P6', P7')을 통해 트레이닝 시퀀스 오더 세트(TS)를 수신하고, 링크 번호(Link_N)를 억셉트할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 레인 번호를 결정하는 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 제1 PCIe 장치(700-1)는 감지 상태 또는 폴링 상태에서 링크 설정 동작을 통해 페일 레인을 검출할 수 있다.
제1 PCIe 장치(700-1)는 구성 상태에서 페일 레인을 제외한 나머지 레인들 각각의 레인 번호를 결정할 수 있다. 이때, 제1 PCIe 장치(700-1)는 나머지 레인들 각각의 레인 번호가 순차적으로 증가 또는 감소하도록 나머지 레인들 각각의 레인 번호를 결정할 수 있다. 예를 들어, 제1 PCIe 장치(700-1)는 페일 레인을 제외하고 제0 다운 스트림 포트(P0)와 제0 업스트림 포트(P0') 사이의 레인에서부터 제7 다운 스트림 포트(P7)와 제7 업스트림 포트(P7') 사이의 레인까지 순차적으로 레인 번호가 증가시킬 수 있다. 이에 따라, 제0 다운 스트림 포트(P0)와 제0 업스트림 포트(P0') 사이의 레인은 0번 레인(Lane 0)으로 결정될 수 있다. 제1 다운 스트림 포트(P1)와 제1 업스트림 포트(P1') 사이의 레인은 1번 레인(Lane 1)으로 결정될 수 있다. 제2 다운 스트림 포트(P2)와 제2 업스트림 포트(P2') 사이의 레인은 2번 레인(Lane 2)으로 결정될 수 있다. 제3 다운 스트림 포트(P3)와 제3 업스트림 포트(P3') 사이의 레인은 3번 레인(Lane 3)으로 결정될 수 있다. 제4 다운 스트림 포트(P4)와 제4 업스트림 포트(P4') 사이의 레인은 4번 레인(Lane 4)으로 결정될 수 있다. 제6 다운 스트림 포트(P6)와 제6 업스트림 포트(P6') 사이의 레인은 5번 레인(Lane 5)으로 결정될 수 있다. 제7 다운 스트림 포트(P7)와 제7 업스트림 포트(P7') 사이의 레인은 6번 레인(Lane 6)으로 결정될 수 있다. 한편, 도 10에 도시된 예에서는 설명의 편의를 위해 나머지 레인들 각각의 레인 번호가 순차적으로 증가하는 동작을 설명하였으나, 나머지 레인들 각각의 레인 번호가 순차적으로 감소하는 동작도 동일하게 적용될 수 있다.
또한, 제1 PCIe 장치(700-1)는 페일 레인과 연결된 제5 다운스트림 포트(P5)를 제외한 나머지 다운스트림 포트들(P0~P4, P6, P7)을 통해 레인 번호에 대한 정보(LANE_NUM)를 포함하는 트레이닝 시퀀스 오더 세트(TS)를 업스트림 포트들(P0'~P4', P6', P7')로 제공할 수 있다. 예를 들어, 제0 다운 스트림 포트(P0)는 트레이닝 시퀀스 오더 세트(TS)를 통해 0번 레인(Lane 0)에 대한 정보를 제0 업스트림 포트(P0')로 제공할 수 있다. 제1 다운 스트림 포트(P1)는 트레이닝 시퀀스 오더 세트(TS)를 통해 1번 레인(Lane 1)에 대한 정보를 제1 업스트림 포트(P1')로 제공할 수 있다. 제2 다운 스트림 포트(P2)는 트레이닝 시퀀스 오더 세트(TS)를 통해 2번 레인(Lane 2)에 대한 정보를 제2 업스트림 포트(P2')로 제공할 수 있다. 제3 다운 스트림 포트(P3)는 트레이닝 시퀀스 오더 세트(TS)를 통해 3번 레인(Lane 3)에 대한 정보를 제3 업스트림 포트(P3')로 제공할 수 있다. 제4 다운 스트림 포트(P4)는 트레이닝 시퀀스 오더 세트(TS)를 통해 4번 레인(Lane 4)에 대한 정보를 제4 업스트림 포트(P4')로 제공할 수 있다. 제6 다운 스트림 포트(P6)는 트레이닝 시퀀스 오더 세트(TS)를 통해 5번 레인(Lane 5)에 대한 정보를 제6 업스트림 포트(P6')로 제공할 수 있다. 제7 다운 스트림 포트(P7)는 트레이닝 시퀀스 오더 세트(TS)를 통해 6번 레인(Lane 6)에 대한 정보를 제7 업스트림 포트(P7')로 제공할 수 있다.
제2 PCIe 장치(700-2)는 업스트림 포트들(P0'~P4', P6', P7')을 통해 트레이닝 시퀀스 오더 세트(TS)를 수신하고, 레인 번호들(Lane 0~Lane6)을 억셉트할 수 있다.
따라서, 본 발명의 실시 예에 따르면, 페일 레인을 제외한 나머지 레인들을 포함하는 링크 폭을 갖도록 링크를 설정함으로써, 활성화된 동작 또는 허여 가능한 레인들을 이용하여 링크를 형성할 수 있다. 다른 실시 예에서는 동작 또는 허여 가능한 모든 레인을 이용하여 링크를 형성하는 대신 동작 또는 허여 가능한 레인들 중 일부만을 이용하여 링크를 형성할 수 있다. 일 예로, 제2 PCIe 장치(700-2)는 동작 또는 허여 가능한 7개 레인들 중 6개를 이용하여 레인 번호들(Lane 0 ~ Lane 5)을 억셉트할 수 있다.
도 11은 본 발명의 일 실시 예에 따른 PCIe 장치의 동작 방법을 설명하기 위한 도면이다.
도 11에 도시된 방법은 예를 들어, 도 7에 도시된 PCIe 장치(700)에 의해 수행될 수 있다.
도 11을 참조하면, 단계 S1101에서, PCIe 장치(700)는 링크 설정 동작 중 감지 상태 또는 폴링 상태에 진입할 수 있다.
단계 S1103에서, PCIe 장치(700)는 복수의 레인들 중 페일 레인이 검출되었는지 여부를 판단할 수 있다. 예를 들어, PCIe 장치(700)는 링크의 상태가 감지 상태일 때, 감지 상태에 대응되는 링크 설정 동작을 통해 페일 레인을 검출할 수 있다. 또한, PCIe 장치(700)는 링크의 상태가 폴링 상태일 때, 폴링 상태에 대응되는 링크 설정 동작을 통해 페일 레인을 검출할 수 있다.
단계 S1103에서의 판단 결과에 따라 페일 레인이 검출된 경우, 단계 S1105에서, PCIe 장치(700)는 링크 번호 및 나머지 레인들 각각의 레인 번호를 결정할 수 있다. 예를 들어, PCIe 장치(700)는 구성 상태에서 나머지 레인들 각각의 레인 번호가 순차적으로 증가 또는 감소하도록 나머지 레인들 각각의 레인 번호를 결정할 수 있다.
단계 S1103에서의 판단 결과에 따라 페일 레인이 검출되지 않은 경우, 단계 S1107에서, PCIe 장치(700)는 링크 번호 및 모든 레인들의 레인 번호를 결정할 수 있다.
단계 S1109에서, PCIe 장치(700)는 결정된 링크 번호 및 결정된 레인 번호를 다른 PCIe 장치로 제공할 수 있다. 다른 PCIe 장치는 결정된 링크 번호 및 결정된 레인 번호를 억셉트할 수 있다.
100: 컴퓨팅 시스템
110: CPU
120: 루트 콤플렉스
130: 메모리
140: 스위치
150-1~150-3: PCIe 엔드 포인트
160-1, 160-2: 레거시 엔드 포인트
170: PCIe 브릿지

Claims (20)

  1. 복수의 레인들을 형성하는 복수의 포트들; 및
    상기 복수의 레인들을 포함하는 링크를 설정하되, 상기 복수의 레인들 중 페일 레인을 제외한 나머지 레인들을 포함하는 링크 폭(link width)을 갖도록 상기 링크를 설정하는 링크 제어부;를 포함하고,
    상기 페일 레인은,
    상기 나머지 레인들과 함께 상기 링크를 형성할 수 없는 상태를 갖는 레인인 PCIe 장치.
  2. 제1 항에 있어서, 상기 링크 제어부는,
    상기 링크를 설정하는 LTSSM(Link Training and Status State Machine)을 포함하는 PCIe 장치.
  3. 제1 항에 있어서, 상기 링크 제어부는,
    상기 링크의 상태가 감지(detect) 상태일 때, 상기 감지 상태에 대응되는 링크 설정 동작을 통해 상기 페일 레인을 검출하고, 상기 나머지 레인들에 대해 상기 감지 상태에 대응되는 링크 설정 동작을 수행하는 PCIe 장치.
  4. 제1 항에 있어서, 상기 링크 제어부는,
    상기 링크의 상태가 폴링(polling) 상태일 때, 상기 폴링 상태에 대응되는 링크 설정 동작을 통해 상기 페일 레인을 검출하고, 상기 나머지 레인들에 대해 상기 폴링 상태에 대응되는 링크 설정 동작을 수행하는 PCIe 장치.
  5. 제1 항에 있어서, 상기 링크 제어부는,
    상기 링크의 상태가 구성(configuration) 상태일 때, 상기 나머지 레인들에 대해 상기 구성 상태에 대응되는 링크 설정 동작을 수행하는 PCIe 장치.
  6. 제5 항에 있어서, 상기 링크 제어부는,
    상기 구성 상태에서, 상기 링크의 링크 번호를 결정하고, 상기 나머지 레인들 각각의 레인 번호를 결정하는 PCIe 장치.
  7. 제6 항에 있어서, 상기 링크 제어부는,
    레인 번호 협상(Lane Number Negotiation) 동작을 통해 상기 나머지 레인들 각각의 레인 번호를 결정하는 PCIe 장치.
  8. 제6 항에 있어서, 상기 링크 제어부는,
    상기 나머지 레인들 각각의 레인 번호가 순차적으로 증가 또는 감소하도록 상기 나머지 레인들 각각의 레인 번호를 결정하는 PCIe 장치.
  9. 제6 항에 있어서, 상기 링크 제어부는,
    상기 복수의 포트들을 통해 상기 결정된 링크 번호 및 상기 결정된 나머지 레인들 각각의 레인 번호를 상기 복수의 포트들과 함께 상기 복수의 레인들을 형성하는 다른 포트들로 제공하는 PCIe 장치.
  10. 제9 항에 있어서, 상기 링크 제어부는,
    트레이닝 시퀀스 오더 세트(Training Sequences Ordered Sets)를 이용하여 상기 결정된 링크 번호 및 상기 결정된 나머지 레인들 각각의 레인 번호를 상기 다른 포트들로 제공하는 PCIe 장치.
  11. 복수의 레인들을 포함하는 링크;
    복수의 다운스트림 포트들을 포함하는 제1 PCIe 장치; 및
    상기 복수의 다운스트림 포트들과 함께 상기 복수의 레인들을 형성하는 복수의 업스트림 포트들을 포함하고, 상기 링크를 통해 상기 제1 PCIe 장치와 데이터를 송수신하는 제2 PCIe 장치;를 포함하고,
    상기 제1 PCIe 장치는,
    상기 링크를 설정하되, 상기 복수의 레인들 중 페일 레인을 제외한 나머지 레인들을 포함하는 링크 폭(link width)을 갖도록 상기 링크를 설정하고,
    상기 페일 레인은,
    상기 나머지 레인들과 함께 상기 링크를 형성할 수 없는 상태를 갖는 레인인 컴퓨팅 시스템.
  12. 제11 항에 있어서, 상기 제1 PCIe 장치는,
    상기 링크를 설정하는 LTSSM(Link Training and Status State Machine)을 포함하는 컴퓨팅 시스템.
  13. 제11 항에 있어서, 상기 제1 PCIe 장치는,
    상기 링크의 상태가 감지(detect) 상태일 때, 상기 감지 상태에 대응되는 링크 설정 동작을 통해 상기 페일 레인을 검출하고, 상기 나머지 레인들에 대해 상기 감지 상태에 대응되는 링크 설정 동작을 수행하는 컴퓨팅 시스템.
  14. 제11 항에 있어서, 상기 제1 PCIe 장치는,
    상기 링크의 상태가 폴링(polling) 상태일 때, 상기 폴링 상태에 대응되는 링크 설정 동작을 통해 상기 페일 레인을 검출하고, 상기 나머지 레인들에 대해 상기 폴링 상태에 대응되는 링크 설정 동작을 수행하는 컴퓨팅 시스템.
  15. 제11 항에 있어서, 상기 제1 PCIe 장치는,
    상기 링크의 상태가 구성(configuration) 상태일 때, 상기 나머지 레인들에 대해 상기 구성 상태에 대응되는 링크 설정 동작을 수행하는 컴퓨팅 시스템.
  16. 제15 항에 있어서, 상기 제1 PCIe 장치는,
    상기 구성 상태에서, 상기 링크의 링크 번호를 결정하고, 상기 나머지 레인들 각각의 레인 번호를 결정하는 컴퓨팅 시스템.
  17. 제16 항에 있어서, 상기 제1 PCIe 장치는,
    레인 번호 협상(Lane Number Negotiation) 동작을 통해 상기 나머지 레인들 각각의 레인 번호를 결정하는 컴퓨팅 시스템.
  18. 제16 항에 있어서, 상기 제1 PCIe 장치는,
    상기 나머지 레인들 각각의 레인 번호가 순차적으로 증가 또는 감소하도록 상기 나머지 레인들 각각의 레인 번호를 결정하는 컴퓨팅 시스템.
  19. 제16 항에 있어서, 상기 제1 PCIe 장치는,
    상기 복수의 다운스트림 포트들을 통해 상기 결정된 링크 번호 및 상기 결정된 나머지 레인들 각각의 레인 번호를 상기 복수의 업스트림 포트들로 제공하고,
    상기 제2 PCIe 장치는,
    상기 결정된 링크 번호 및 상기 결정된 나머지 레인들 각각의 레인 번호를 억셉트(accept)하는 컴퓨팅 시스템.
  20. 제19 항에 있어서, 상기 제1 PCIe 장치는,
    트레이닝 시퀀스 오더 세트(Training Sequences Ordered Sets)를 이용하여 상기 결정된 링크 번호 및 상기 결정된 나머지 레인들 각각의 레인 번호를 상기 복수의 업스트림 포트들로 제공하는 컴퓨팅 시스템.
KR1020210066435A 2021-05-24 2021-05-24 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템 KR102635457B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210066435A KR102635457B1 (ko) 2021-05-24 2021-05-24 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US17/506,889 US11797468B2 (en) 2021-05-24 2021-10-21 Peripheral component interconnect express device and computing system including the same
CN202210039712.9A CN115391261A (zh) 2021-05-24 2022-01-14 高速外围组件互连装置以及包括其的计算系统
TW111108729A TW202246976A (zh) 2021-05-24 2022-03-10 快速週邊元件互連裝置以及包括其的計算系統
US17/751,463 US11960367B2 (en) 2021-05-24 2022-05-23 Peripheral component interconnect express device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210066435A KR102635457B1 (ko) 2021-05-24 2021-05-24 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20220158517A true KR20220158517A (ko) 2022-12-01
KR102635457B1 KR102635457B1 (ko) 2024-02-13

Family

ID=84103708

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210066435A KR102635457B1 (ko) 2021-05-24 2021-05-24 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템

Country Status (4)

Country Link
US (1) US11797468B2 (ko)
KR (1) KR102635457B1 (ko)
CN (1) CN115391261A (ko)
TW (1) TW202246976A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230037421A1 (en) * 2021-08-06 2023-02-09 Microchip Technology Incorporated Determining allocation of lanes of a peripheral-component interconnect-express port to links

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160077147A (ko) * 2013-12-26 2016-07-01 인텔 코포레이션 Pci 익스프레스 강화
KR20180037783A (ko) * 2016-10-05 2018-04-13 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
US20200192850A1 (en) * 2018-12-18 2020-06-18 Ati Technologies Ulc Alternative protocol selection
US20200371579A1 (en) * 2019-05-22 2020-11-26 Qualcomm Incorporated Bandwidth based power management for peripheral component interconnect express devices
CN112269752A (zh) * 2020-10-10 2021-01-26 山东云海国创云计算装备产业创新中心有限公司 一种PCIe虚拟通道的数据处理方法及相关装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645746B2 (en) 2010-12-03 2014-02-04 International Business Machines Corporation Cable redundancy and failover for multi-lane PCI express IO interconnections
JP5842491B2 (ja) * 2011-09-15 2016-01-13 株式会社リコー 中継装置および通信システム
TWI447588B (zh) 2011-10-07 2014-08-01 Asmedia Technology Inc 適應性驅動傳送資料的方法及其通信裝置
US9424226B1 (en) 2012-10-25 2016-08-23 Qlogic, Corporation Method and system for signal equalization in communication between computing devices
US9645965B2 (en) 2013-03-15 2017-05-09 Intel Corporation Apparatus, system, and method for improving equalization with a hardware driven algorithm
EP2961098B1 (en) * 2014-04-02 2017-06-14 Huawei Technologies Co. Ltd. Method, device and system for processing pcie link failure
US9710341B2 (en) * 2014-12-16 2017-07-18 Dell Products L.P. Fault tolerant link width maximization in a data bus
US9774389B2 (en) * 2015-09-01 2017-09-26 International Business Machines Corporation Dynamic link repair from lane failure with minimal link down-time while sparing fault channels
US20170346596A1 (en) 2016-05-27 2017-11-30 Intel Corporation Method, apparatus, and system for signal equalization
US10747688B2 (en) 2016-12-22 2020-08-18 Intel Corporation Low latency retimer
CN107066417A (zh) 2017-02-28 2017-08-18 郑州云海信息技术有限公司 一种链路参数在线调整的方法与装置
US10469291B2 (en) 2018-03-19 2019-11-05 Dell Products, Lp System and method to optimize equalization coefficients in a high-speed serial interface
CN113396396A (zh) 2019-01-31 2021-09-14 特克特朗尼克公司 高速输入/输出裕度测试的系统、方法和设备
US20210119835A1 (en) 2019-12-04 2021-04-22 Intel Corporation Transceiver parameter determination
CN116802510A (zh) 2020-11-24 2023-09-22 特克特朗尼克公司 用于高速输入/输出裕量测试的系统、方法和设备
KR102559387B1 (ko) 2021-05-25 2023-07-26 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160077147A (ko) * 2013-12-26 2016-07-01 인텔 코포레이션 Pci 익스프레스 강화
KR20180037783A (ko) * 2016-10-05 2018-04-13 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
US20200192850A1 (en) * 2018-12-18 2020-06-18 Ati Technologies Ulc Alternative protocol selection
US20200371579A1 (en) * 2019-05-22 2020-11-26 Qualcomm Incorporated Bandwidth based power management for peripheral component interconnect express devices
CN112269752A (zh) * 2020-10-10 2021-01-26 山东云海国创云计算装备产业创新中心有限公司 一种PCIe虚拟通道的数据处理方法及相关装置

Also Published As

Publication number Publication date
CN115391261A (zh) 2022-11-25
US20220374384A1 (en) 2022-11-24
US11797468B2 (en) 2023-10-24
KR102635457B1 (ko) 2024-02-13
TW202246976A (zh) 2022-12-01

Similar Documents

Publication Publication Date Title
US7945721B1 (en) Flexible control and/or status register configuration
US20060242353A1 (en) Virtualized PCI switch
KR102559387B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
US7752376B1 (en) Flexible configuration space
JP2006195870A (ja) データ転送システム及び電子機器
KR20220162336A (ko) PCIe 인터페이스 장치 및 그 동작 방법
US11960424B2 (en) Peripheral component interconnect express (PCIe) interface device and method of operating the same
KR102635457B1 (ko) PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US11815941B2 (en) Peripheral component interconnect express device and operating method thereof
US20230315591A1 (en) PCIe DEVICE AND COMPUTING SYSTEM INCLUDING THE SAME
US20240012770A1 (en) Interface device having plurality of ports and method of operating the same
KR102519484B1 (ko) PCIe 인터페이스 장치 및 이를 포함하는 시스템
KR102519480B1 (ko) PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US20230315672A1 (en) Interface device and computing system including the same
US11960367B2 (en) Peripheral component interconnect express device and operating method thereof

Legal Events

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