KR102559387B1 - PCIe 인터페이스 장치 및 그 동작 방법 - Google Patents
PCIe 인터페이스 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR102559387B1 KR102559387B1 KR1020210067203A KR20210067203A KR102559387B1 KR 102559387 B1 KR102559387 B1 KR 102559387B1 KR 1020210067203 A KR1020210067203 A KR 1020210067203A KR 20210067203 A KR20210067203 A KR 20210067203A KR 102559387 B1 KR102559387 B1 KR 102559387B1
- Authority
- KR
- South Korea
- Prior art keywords
- error
- coefficient
- pcie interface
- interface device
- pcie
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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 the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0745—Error 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 the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0781—Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3027—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/0264—Arrangements for coupling to transmission lines
- H04L25/0272—Arrangements for coupling to multiple lines, e.g. for differential transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/03—Shaping networks in transmitter or receiver, e.g. adaptive shaping networks
- H04L25/03878—Line equalisers; line build-out devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Power Engineering (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 기술에 따른 외부 장치와 복수의 레인을 포함하는 링크를 통해 연결되는 PCIe 인터페이스 장치는 복수의 레인 각각에 대한 송신기 또는 수신기의 설정을 결정하는 이퀄라이제이션 동작을 수행하도록 PCIe 인터페이스 장치를 제어하는 EQ 제어부 및 송신기 계수 또는 수신기 계수를 포함하는 EQ 계수 각각에 대한 이퀄라이제이션 동작을 시도한 횟수를 나타내는 로그 정보 및 EQ 계수 별로 L0 상태에서 발생한 에러에 대한 정보를 나타내는 에러 정보를 저장하는 EQ 정보 저장부를 포함하되, EQ 제어부는 로그 정보 및 에러 정보에 기초하여 최종 EQ 계수를 결정할 수 있다.
Description
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로는 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 인터페이스 장치는 상기 복수의 레인 각각에 대한 송신기 또는 수신기의 설정을 결정하는 이퀄라이제이션 동작을 수행하도록 상기 PCIe 인터페이스 장치를 제어하는 EQ 제어부 및 송신기 계수 또는 수신기 계수를 포함하는 EQ 계수 각각에 대한 상기 이퀄라이제이션 동작을 시도한 횟수를 나타내는 로그 정보 및 상기 EQ 계수 별로 L0 상태에서 발생한 에러에 대한 정보를 나타내는 에러 정보를 저장하는 EQ 정보 저장부를 포함하되, 상기 EQ 제어부는 상기 로그 정보 및 상기 에러 정보에 기초하여 최종 EQ 계수를 결정할 수 있다.
본 발명의 일 실시 예에 따른 외부 장치와 복수의 레인을 포함하는 링크를 통해 연결되는 PCIe 인터페이스 장치의 동작 방법은 상기 복수의 레인에 대한 이퀄라이제이션 동작을 EQ 계수 각각에 대하여 테스트한 횟수를 나타내는 로그 정보의 존재 여부를 판단하는 단계, 상기 로그 정보가 존재하면, 상기 로그 정보에 기초하여 상기 이퀄라이제이션 동작을 테스트할 EQ 계수를 결정하는 단계, 상기 결정된 EQ 계수에 따라 링크업을 수행하는 단계 및 상기 결정된 EQ 계수에 대응되는 로그 정보 및 상기 링크업 상태에서 발생한 에러에 대한 정보를 나타내는 에러 정보를 저장하는 단계를 포함할 수 있다.
본 기술은 개선된 PCIe 이퀄라이제이션 동작을 수행할 수 있는 PCIe 인터페이스 장치 및 그 동작 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 PCIe 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 PCIe 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 PCIe 인터페이스를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 송신기, 수신기 및 레인을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 포트를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 PCIe 장치의 링크 상태를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작 동안 링크 상태의 변화 과정에 대하여 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 EQ 계수를 설명하기 위한 도면이다.
도 10은 종래의 이퀄라이제이션 동작을 수행하는 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작을 수행하는 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시 예에 따른 EQ 계수 테이블을 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시 예에 따른 PCIe 인터페이스의 구성을 설명하기 위한 도면이다.
도 14는 본 발명의 일 실시 예에 따른 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 15는 본 발명의 일 실시 예에 따른 저장된 로그 정보에 따라 EQ 계수가 결정되는 과정을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 PCIe 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 PCIe 인터페이스를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 송신기, 수신기 및 레인을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 포트를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 PCIe 장치의 링크 상태를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작 동안 링크 상태의 변화 과정에 대하여 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 EQ 계수를 설명하기 위한 도면이다.
도 10은 종래의 이퀄라이제이션 동작을 수행하는 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작을 수행하는 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시 예에 따른 EQ 계수 테이블을 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시 예에 따른 PCIe 인터페이스의 구성을 설명하기 위한 도면이다.
도 14는 본 발명의 일 실시 예에 따른 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 15는 본 발명의 일 실시 예에 따른 저장된 로그 정보에 따라 EQ 계수가 결정되는 과정을 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명의 개념에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 실시 예에 따른 PCIe 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 도 1의 PCIe 컴퓨팅 시스템(100)은 중앙 처리 장치(110), 루트 컴플렉스(120), 메모리(130), 스위치(140), PCIe 엔드 포인트(150_1 내지 150_3), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170)를 포함할 수 있다.
PCIe 컴퓨팅 시스템(100)은 PCIe 인터페이스를 이용한 통신을 지원하는 전자 장치일 수 있다. PCIe 컴퓨팅 시스템(100)은 PC, 랩탑 컴퓨터 또는 모바일 컴퓨팅 장치일 수 있고, 확장 카드(expansion card), 확장 보드(expansion board), 어댑터 카드(adapter card), 애드-인 카드(add-in card) 또는 액세서리 카드 (accessory card)를 포함할 수 있다. 그리고, PCIe 컴퓨팅 시스템(100)은 확장 버스를 통해 PCIe 컴퓨팅 시스템(100)에 부가적인 기능을 제공하기 위해 PCIe 컴퓨팅 시스템(100)의 마더보드 상의 전기적 커넥터 또는 확장 슬롯에 삽입될 수 있는 인쇄 회로 기판 (printed circuit board(PCB))을 포함할 수 있다. 또한, PCIe 컴퓨팅 시스템(100)는 솔리드 스테이트 드라이브(solid state drives(SSD))와 같은 저장 장치를 포함할 수 있고, 그래픽 카드, 네트워크 카드, 또는 USB 카드 등을 포함할 수 있다.
중앙 처리 장치(110)는 PCIe 컴퓨팅 시스템(100)의 각 구성과 전기적으로 연결되어 있으며, PCIe 컴퓨팅 시스템(100)의 각 동작을 제어할 수 있다. 구체적으로, 중앙 처리 장치(110)는 운영 체제 또는 응용 프로그램을 구동하여 중앙 처리 장치(110)에 연결된 하드웨어 또는 소프트웨어의 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 그리고, 중앙 처리 장치(110)는 PCIe 컴퓨팅 시스템(100)의 동작을 제어하기 위한 소프트웨어 또는 어플리케이션을 실행할 수 있다.
루트 컴플렉스(120)는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express; PCIe) 상호 접속 아키텍처 내 루트 허브, 제어기 허브, 또는 루트 제어기일 수 있다. 예를 들어, 루트 컴플렉스(120)는 칩셋, 메모리 제어기 허브(memory controller hub, MCH), 노스브릿지, 인터커넥트 제어기 허브(interconnect controller hub, ICH), 사우스브릿지, 및 루트 제어기/허브를 포함할 수 있다. 그리고, 루트 컴플렉스(120)는 중앙 처리 장치(110) 및 메모리(130)를 입출력 계층 구조(I/O Hierarchy)와 연결할 수 있다. 루트 컴플렉스(120)는 피어-투-피어(Peer-to-Peer; P2P) 라우팅을 지원할 수 있다. 루트 컴플렉스(120)는 적어도 하나의 호스트 브릿지 및 루트 포트를 포함할 수 있다. 루트 컴플렉스(120)는 하나 이상의 PCIe(Peripheral Component Interconnect Express) 포트를 지원할 수 있다.
메모리(130)는 PCIe 컴퓨팅 시스템(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) 디바이스, 스캐너, 및 기타 입력/출력 디바이스와 같은 전자 시스템에 연결되는 임의의 내부 또는 외부 디바이스나 컴포넌트를 포함할 수 있다.
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를 송수신할 수 있다.
도 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)는 PCIe 코어(211), 트랜잭션 레이어(212), 데이터 링크 레이어(213) 및 피지컬 레이어(214)를 포함할 수 있다. 각 레이어들(212, 213, 214)은 두 개의 섹션들을 포함할 수 있다. 하나의 섹션(TX)은 아웃바운드(또는 전송될) 정보를 처리할 수 있고, 다른 하나(RX)는 인바운드(또는 수신된) 정보를 처리할 수 있다. 그리고, 제1 PCIe 인터페이스(210-1)는 다른 PCIe 인터페이스 사이에서 정보를 통신하기 위해 패킷들(packets)을 사용할 수 있다.
PCIe 코어(211)는 제1 PCIe 인터페이스(210-1)를 전반적으로 제어할 수 있다. 구체적으로, PCIe 코어(211)는 인터페이스를 동작하기 위한 소프트웨어 레이어를 포함할 수 있다. 그리고, PCIe 코어(211)는 트랜잭션 레이어(212)로 어드레스, 트랜잭션 타입 및 데이터 등을 전송하거나 트랜잭션 레이어(212)로부터 어드레스, 트랜잭션 타입 및 데이터 등을 수신할 수 있다.
PCIe 인터페이스의 구조에서 상위(upper) 레이어는 트랜잭션 레이어(212)일 수 있다. 트랜잭션 레이어(212)는 트랜잭션 레이어 패킷들(transaction layer packets(TLPs))을 모으고(assembly) 분해(disassembly)할 수 있다. 그리고, 트랜잭션 레이어(212)는 스플릿 트랜잭션(split tansaction), 즉, 타겟 시스템이 응답에 필요한 데이터를 수집하는 동안 링크로 다른 트래픽을 전달하게 해주는 트랜잭션을 구현할 수 있다. 예컨대, 트랜잭션 레이어(212)는 요청과 응답이 시간적으로 분리되어 있는 트랜잭션을 구현할 수 있다. 일 실시예에서, 네 개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간, 및 메시지 어드레스 공간을 포함할 수 있다. 메모리 공간 트랜잭션은 데이터를 메모리-매핑된 장소로/로부터 전달하는 읽기 요청 및 쓰기 요청 중 하나 이상을 포함할 수 있다. 일 실시예에서, 메모리 공간 트랜잭션은 두 가지 상이한 어드레스 포맷, 예를 들면, 32-비트 어드레스와 같이 짧은 어드레스 포맷, 또는 64-비트 어드레스와 같이 긴 어드레스 포맷을 사용할 수 있다. 구성 공간 트랜잭션은 PCIe 장치의 구성 공간에 액세스하는데 사용될 수 있다. 구성 공간으로의 트랜잭션은 읽기 요청 및 쓰기 요청을 포함할 수 있다. 메시지 공간 트랜잭션(또는, 메시지)은 PCIe 장치들 간의 대역-내(in-band) 통신을 지원하기 위해 정의될 수 있다.
트랜잭션 레이어(212)는 PCIe 코어(211)로부터 수신한 링크 구성 정보(Link configuration information) 등을 저장할 수 있다. 그리고, PCIe 코어(211)에서 요청한 TLP를 생성하거나, 수신한 TLP를 페이로드(payload) 또는 상태 정보(status information)로 변환할 수 있다.
PCIe 인터페이스의 구조에서 중간 레이어(middle layer)는 데이터 링크 레이어(213)이고, 데이터 링크 레이어(213)는 트랜잭션 레이어(212) 및 피지컬 레이어(214) 사이의 중간 스테이지(intermediate stage)의 기능을 수행할 수 있다. 데이터 링크 레이어(213)의 주요한 기능은 링크 관리(link management) 및 에러 검출과 에러 정정을 포함하는 데이터 무결성(data integrity)일 수 있다. 구체적으로, 데이터 링크 레이어(213)의 송신 측은 트랜잭션 레이어(212)에서 수집된(assembled) TLPs를 수용(accept)하고, 데이터 보호 코드를 부여하거나, TLP 시퀀스 번호를 계산할 수 있다. 그리고, 데이터 링크 레이어(213)의 송신 측은 링크를 통해 전송하기 위해 데이터 보호 코드와 TLP 시퀀스 번호를 피지컬 레이어(214)로 전송할 수 있다. 데이터 링크 레이어(213)의 수신 측은 피지컬 레이어(214)로부터 수신된 TLPs의 데이터 무결성을 체크하고, 추가적인 처리를 위해 트랜잭션 레이어(212)로 TLPs를 전송할 수 있다.
피지컬 레이어(214)는 인터페이스 동작을 위한 회로(circuitry)를 포함할 수 있다. 여기서, 피지컬 레이어는 드라이버, 입력 버퍼, 직렬-병렬 변환 회로, 병렬-직렬 변환 회로, 위상 동기 루프(phase locked loop(PLLs), 및 임피던스 매칭 회로 등을 포함할 수 있다.
그리고, 피지컬 레이어(214)는 패킷을 외부 PCIe 장치에 물리적으로 전송하는 논리 서브블록 및 전기 서브블록을 포함할 수 있다. 여기서, 논리 서브블록은 피지컬 레이어의 '디지털' 기능에 필요한 역할을 수행할 수 있다. 이와 관련하여, 논리 서브블록은 물리 서브블록에 의해 전송하기 위한 발송 정보를 준비하는 송신 섹션과 수신된 정보를 데이터 링크 레이어(213)에 전달하기 전에 수신된 정보를 식별하고 준비하는 수신 섹션을 포함할 수 있다. 피지컬 레이어(214)는 송신기(TX) 및 수신기(RX)를 포함할 수 있다. 송신기(TX)는 논리 서브블록에 의해 송신기가 직렬화하여 외부 장치에 송신하는 심볼을 공급받을 수 있다. 그리고, 수신기(RX)는 외부 장치로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트스트림으로 변환할 수 있다. 비트스트림은 역직렬화되어 논리 서브블록에 공급될 수 있다. 즉, 피지컬 레이어(214)는 데이터 링크 레이어(213)로부터 수신한 TLPs를 직렬화된 형식(serialized format)으로 변환하고, 외부 장치로부터 수신한 패킷을 역직렬화된 형식(deserialized format)으로 변환할 수 있다. 그리고, 피지컬 레이어(214)는 인터페이스 초기화 및 유지에 관련된 논리적 기능들을 포함할 수 있다.
도 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) 및 업스트림 포트(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) 교환에 사용되는 정렬된 집합일 수 있다.
도 7은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작을 설명하기 위한 도면이다.
이퀄라이제이션 동작은 송수신되는 신호 품질을 개선하고, 지정된 요구사항을 충족시키기 위해 각 레인의 송신기 및 수신기의 설정을 조정하는 동작일 수 있다. 즉, LTSSM(Link Training & Status State Manchine)과 관련된 모든 레인은 이퀄라이제이션 동작을 수행할 수 있다. 그리고, 이퀄라이제이션 동작은 PCIe 인터페이스에 의하여 자율적으로 수행되거나, 호스트의 제어에 따라 수행될 수 있다. 이퀄라이제이션 동작은 낮은 데이터 속도(Data Rate)에서 완료된 후, 높은 데이터 속도에서 수행될 수 있다. 다만, 특정한 데이터 속도에서 이퀄라이제이션 동작을 생략할 수 있고, 이 경우에는 업스트림 포트 및 다운 스트림 포트는 이퀄라이제이션 동작을 생략할 특정한 데이터 속도를 TS1 또는 TS2를 이용하여 광고할 수 있다.
도 7을 참조하면, 업스트림 포트 및 다운스트림 포트가 최대 4개의 페이즈로 구성되는 이퀄라이제이션 동작을 수행하는 도면이 도시되어 있다. 이퀄라이제이션 동작은 제0 페이즈(Phase 0) 내지 제3 페이즈(Phase 3)으로 구성될 수 있다. 그리고, 이퀄라이제이션 동작은 피지컬 레이어에서 수행될 수 있다.
제0 페이즈(Phase 0)는 이퀄라이제이션 동작이 수행될 데이터 속도(data rate)를 결정하는 동안 실행되는 페이즈일 수 있다. 예를 들어, 2.5 GT/s 데이터 속도에서 8.0 GT/s로 데이터 속도 변경이 결정되면, 다운스트림 포트 및 업스트림 포트는 TS2 OS(Ordered Set)를 송수신할 수 있다. 구체적으로, 다운스트림 포트는 Recovery.RcvCfg 상태에서 TS2 OS를 사용하여 8b/10b 인코딩 또는 128b/130b 인코딩된 각 레인에 대한 송신기 사전 설정 값(Transmitter preset value) 및 수신기 사전 설정 값(Receiver preset value)을 업스트림 포트로 전달할 수 있다. 예를 들어, 8.0 GT/s에서 이퀄라이제이션 동작이 수행되는 경우, TS2 OS에는 각 레인의 업스트림 포트의 8.0 GT/s 송신기 사전 설정 값 및 업스트림 포트의 8.0 GT/s 수신기 사전 설정 값에 관한 정보가 포함될 수 있다. 그리고, 업스트림 포트는 수신한 사전 설정 값으로 TS1 OS를 전송할 수 있다. 한편, 이퀄라이제이션 동작이 수행될 때, 이퀄라이제이션의 페이즈에 대한 정보를 나타내는 페이즈 정보는 TS1 OS의 EC(Equalization Control) 필드를 이용하여 전송될 수 있다. 예를 들어, 제0 페이즈에서는 EC 필드가 “00”인 TS1 OS를 교환하여 페이즈 정보를 교환할 수 있다.
제1 페이즈(Phase 1)에서, 다운스트림 포트 및 업스트림 포트는 TS1 OS를 교환하여 송신기 및 수신기 쌍의 미세 조정을 수행할 수 있다. 즉, 다운스트림 포트 및 업스트림 포트는 가동할 준비를 갖춘(operational) 링크를 설정하기 위하여 TS1 OS를 교환할 수 있다. 구체적으로, 다운스트림 포트는 EC 필드가 “01”인 TS1 OS를 전송함으로써 제1 페이즈를 시작할 수 있다. 업스트림 포트는 필요한 경우에 수신기를 조정한 후 TS1 OS를 수신하고, 제1 페이즈로 전환할 수 있다. 그리고, 업스트림 포트는 EC 필드가 “01”인 TS1 OS를 전송할 수 있다. 제2 페이즈로 이동하기 전에 업스트림 포트로부터 EC 필드가 “01”인 TS1 OS를 수신하면, 다운스트림 포트는 업스트림 포트로부터 비트스트림을 안정적으로 수신하여 나머지 단계를 계속할 수 있도록 할 수 있다.
제2 페이즈(Phase 2)에서, 업스트림 포트는 업스트림 포트의 수신기 설정과 함께 다운스트림 포트의 송신기 설정을 조정할 수 있다. 즉, 특정한 요구 사항을 준수하는 비트스트림을 수신할 수 있도록, 업스트림 포트는 다운스트림 포트에 송신기의 계수 및 사전 설정을 셋하도록 요청할 수 있다. 예를 들어, 업스트림 포트는 각각의 레인들의 BER(Bit Error Rate)가 10-12 미만이 되도록 업스트림 포트의 수신기 설정을 조정하고, 다운스트림 포트의 송신기 설정을 셋하도록 요청할 수 있다.
제2 페이즈는 다운스트림 포트가 EC 필드가 “10”인 TS1 OS를 업스트림 포트로 전송하여 시작될 수 있다. 다운스트림 포트는 다운스트림 포트의 송신기 계수와 사전 설정에 관한 정보를 업스트림 포트로 제공할 수 있다. 그리고, 업스트림 포트는 다운스트림 포트의 송신기 계수와 사전 설정에 관한 정보를 다운스트림 포트로부터 수신하고, 업스트림 포트는 다운스트림 포트의 송신기 계수 또는 사전 설정을 변경할 것을 요청할 수 있다. 그리고, 업스트림 포트는 다운스트림 레인 운영을 위한 제한된 시간 내에서 최상의 설정에 도달할 때까지 각 설정을 계속 평가할 수 있다. 그리고, 제2 페이즈를 완료되면, 업스트림 포트는 EC 필드가 “11”인 TS1 OS를 다운스트림 포트로 전송하여 제3 페이즈로 이동할 수 있다.
제3 페이즈(Phase 3)에서, 다운스트림 포트는 업스트림 포트의 송신기 설정을 조정할 수 있다. 즉, 다운스트림 포트는 입력되는 링크(incoming link)가 특정한 요구 사항을 준수하도록 업스트림 포트에 업스트림 포트의 송신기 계수 및 사전 설정을 셋하도록 요청할 수 있다.
다운스트림 포트는 업스트림 포트의 송신기 계수와 사전 설정에 관한 정보를 업스트림 포트로부터 수신하고, 다운스트림 포트는 업스트림 포트의 송신기 계수 또는 사전 설정을 변경할 것을 요청할 수 있다. 그리고, 다운스트림 포트는 제한된 시간 내에서 업스트림 레인 운영을 위한 최상의 설정에 도달할 때까지 각 설정을 계속 평가할 수 있다. 그리고, 제3 페이즈를 완료되면, 다운스트림 포트는 EC 필드가 “00”인 TS1 OS를 업스트림 포트로 전송하여 이퀄라이제이션 동작의 종료를 알릴 수 있다.
이퀄라이젠 동작 종료 후, 링크 상태는 Recovery.RcvrLock, Recovery.RcvrCfg, 및 Recovery.Idle를 거쳐 L0 상태로 변경될 수 있다. 구체적인 내용은 도 8을 참조하여 설명하도록 한다.
도 8은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작 동안 링크 상태의 변화 과정에 대하여 설명하기 위한 도면이다.
도 8을 참조하면, 링크 상태가 Gen1 L0 상태에서 Gen3 Lo 상태로 변화하는 과정이 도시되어 있다. 여기서, Gen1 및 Gen3은 업스트림 포트 또는 다운스트림 포트에서 동작하는 하나의 모드일 수 있으며, 상이한 데이터 속도를 포함할 수 있다. 이퀄라이제이션 동작은 도 7에서 설명한 바와 같이, 데이터 속도의 변화와 함께 수행될 수 있다. 업스트림 포트 및 다운스트림 포트의 링크 상태는 Gen1 L0 상태에서 Gen1 Recovery.Lock 상태로 데이터 속도의 변화를 원하는 포트에서 반대편 포트로 TS1 OS를 전송하여 리커버리 상태로 진입할 수 있다. Gen1 L0 상태는 정상적으로 데이터 및 제어 패킷을 송수신할 수 있는 상태이므로, Gen1 Recovery.Lock 상태에서 TS1 OS를 수신하는 포트는 마지막 데이터 스트림이 종료된 후, 블록 정렬(Block Alignment)을 획득되는 것으로 간주할 수 있다. 그리고, Gen1 Recovery.CFG 상태로 진입할 수 있다. Gen1 Recovery.CFG 상태에서, 링크를 구성하는 모든 레인의 수신기에서 TS1 OS 또는 TS2 OS를 연속적으로 8개가 수신될 수 있다. 그리고, Gen1 Recovery.CFG 상태에서 수신한 TS1 OS 또는 TS2 OS에서 데이터 속도가 변경되었음을 나타내는 speed change bit이 셋(set)되어 있으면, Recovery.Speed 상태에서, 다운스트림 포트 및 업스트림 포트는 데이터 속도를 변경할 수 있다. 도 8에서는 Gen1에서 Gen3으로 데이터 속도가 변경되는 것을 예시로 도시하였으나, Gen3에서 Gen4로 변경되는 경우 또는 Gen1에서 Gen5로 변경되는 경우 등의 경우도 동일하게 적용될 수 있다. 그리고, 링크 상태는 Gen3 Recovey.Lock 상태 및 Gen3 Recovery.EQ phase0,1 상태로 진입할 수 있다. Gen3 Recovery.EQ phase0,1 상태는 도 7에서 설명한 제0 페이즈, 제1 페이즈와 동일한 상태일 수 있다. Gen3 Recovery.EQ phase0,1 상태에서 다운스트림 포트 및 업스트림 포트는 FS(Full Swing) 및 LF(Low Frequency)를 교환할 수 있다. 그리고, 다운스트림 포트 및 업스트림 포트는 Gen3 Recovey.EQ Phase2 상태 및 Gen3 Recovey.EQ Phase3 상태에서 FS 및 LF 값을 기반으로 EQ 계수를 스윕(sweep)할 수 있다. 한편, Gen3 Recovey.EQ Phase2 상태는 최대 24ms동안 유지되는 상태일 수 있고, 24ms의 제한된 시간은 최적의 EQ 계수를 발견하거나, BER 10-12의 조건을 만족하는 조합을 발견하는데 부족한 시간일 수 있다.
도 9는 본 발명의 일 실시 예에 따른 EQ 계수를 설명하기 위한 도면이다.
도 9를 참조하면, 프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)를 포함하는 EQ 계수의 그래프가 도시되어 있다. C-1 및 C+1은 FIR 방정식에서 사용되는 계수이며, 각각 프리 커서 및 포스트 커서일 수 있다. 프리 커서 및 포스트 커서의 값은 TS1 OS에서 전달되는 절대 값을 나타낼 수 있다. 그리고, C0는 커서로 설정 계수를 나타내며, 양의 값을 가질 수 있다. 그리고, 계수들의 절대 값의 합은 FS를 정의할 수 있다. 즉, FS는 아래의 [수학식 2]를 만족할 수 있다. 그리고, FS는 제1 페이즈에서 링크 파트너(예컨대, 반대 포트)에게 전달될 수 있다. 그리고, FS는 풀 스윙 모드에서는 24 내지 63 사이의 값을, 감소된(reduced) 스윙 모드에서는 12 내지 63 사이의 값을 가질 수 있다. 그리고, 송신기는 제1 페이즈 동안 LF 값을 알릴(advertise) 수 있다. LF 값은 송신기의 최대 차동 전압에 LF/FS를 곱하여 생성되는 최소 차동 전압에 대응될 수 있다. 송신기는 VTX-EIEOS-FS and VTX-EIEOS-RS에 대한 특정 요구 사항을 충족 할 수 있다. 송신기는 아래의 [수학식 3]을 만족하는 LF일 때, VTX-EIEOS-FS and VTX-EIEOS-RS에 대한 특정 요구 사항을 충족해야 한다(must). 송신기는 링크 파트너(예컨대, 반대 포트)의 송신기에 계수 세트를 요청할 수 있다. 그리고, 링크 파트너(예컨대, 반대 포트)의 송신기에 계수 세트를 요청하기 전에 다음 방정식을 만족할 수 있다. 포트에서 TX 계수 설정에 대한 업데이트 요청을 수신하면, 포트는 업데이트 요청이 아래의 수학식들을 충족하는지 확인하고, 아래의 수학식들 중 어느 하나라도 위반하면 요청을 거부할 수 있다.
[수학식 1]
|C-1| ≤ Floor (FS/4)
[수학식 2]
|C-1|+C0+|C+1| = FS
[수학식 3]
C0 -|C-1|-|C+1| ≥ LF
실시 예에 따르면, 도 9에 도시된 EQ 계수는 프리 커서, 커서 및 포스트 커서의 값에 각각 프리 커서 계수, 커서 계수 및 포스트 커서 계수가 곱해진 값일 수 있다. 출력시에 포스트 커서의 결합으로 도 9에 도시된 “De-emphasis”의 효과가 있으며, 차동 신호에서 “De-emphasis”의 효과가 두드러질 수 있다. 그리고, 출력시에 프리 커서의 결합으로 도 9에 도시된 “Pre-shoot”의 효과가 있으며, 전압 감소시 전압 변화가 두드러지게 하는 효과가 있다.
도 10은 종래의 이퀄라이제이션 동작을 수행하는 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 10을 참조하면, 시간의 흐름에 따라 이퀄라이제이션 동작을 수행하는 도면이 도시되어 있다. 도 7 및 도 8을 참조하여 설명한 바와 같이, 이퀄라이제이션 동작에서 업스트림 포트 및 다운스트림 포트의 링크 상태는 Rcvry.Speed 상태, EQ Phase2 상태 및 EQ Phase3 상태를 포함할 수 있다. 그리고, Rcvry.Speed 상태는 데이터 속도가 변경된 상태로 불안정한 상태이므로 Rcvry.Speed 상태에서 수행되는 이퀄라이제이션 동작은 신뢰가 떨어질 수 있다. 그리고, EQ Phase2 상태는 최대 24ms 시간동안 업스트림 포트가 다운스트림 포트의 TX 계수를 결정할 수 있다. 구체적으로, 업스트림 포트는 PCIe 컴퓨팅 시스템에 연결되는 PCIe 엔드포인트일 수 있고, PCIe 엔드포인트 입장에서는 연결되는 플랫폼 또는 슬롯마다 채널 길이(channel length) 등을 포함하는 물리적 특징이 다를 수 있다. 또한, 이퀄라이제이션 동작은 적절한 EQ 계수를 탐색하는 과정 및 EQ 계수를 결정하는 과정을 거치는데, 최적의 EQ 계수가 결정되는 경우에도 링크가 리셋(예컨대, 핫 리셋, 콜드 리셋 또는 웜 리셋)되면 다시 EQ 계수를 탐색하고 결정해야 할 수 있다. 즉, 매번 수행되는 이퀄라이제이션 동작은 이전에 수행된 이퀄라이제이션 동작과 비연속적으로 수행되므로, 이전에 최적의 EQ 계수로 링크업되더라도 이후에 수행되는 이퀄라이션 동작에서 최적의 EQ 계수가 보장되지 않는 문제점이 있다. 여기서, EQ 계수는 TX 계수 및 RX 계수를 포함할 수 있다.
한편, EQ Phase3 상태는 PCIe 컴퓨팅 시스템에서 연결되는 PCIe 엔드포인트의 TX 계수를 셋팅하는 과정일 수 있다. PCIe 컴퓨팅 시스템은 PCIe 컴퓨팅 시스템의 채널 특징 등을 포함하는 물리적 특징을 알고 있으므로 Phase3 상태의 이퀄라이제이션 동작은 문제되지 않을 수 있다.
도 11은 본 발명의 일 실시 예에 따른 이퀄라이제이션 동작을 수행하는 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 11을 참조하면, 시간의 흐름에 따라 본 발명의 이퀄라이제이션 동작을 수행하는 도면이 도시되어 있다. PCIe 인터페이스는 EQ 계수 테이블에 복수의 레인 및 EQ 계수 각각에 대응되는 에러 정보를 저장할 수 있다. 제1 시점(t1)에 최초로 이퀄라이제이션 동작이 수행되는 것으로 가정하면, 제1 시점(t1)에는 EQ 계수 테이블에는 EQ 계수 및 복수의 레인에 대응되는 에러 정보가 포함되지 않을 수 있다. 그리고, 제2 시점(t2)에는 L0 상태 또는 링크업 상태에서 발생한 에러에 대한 정보 또는 이퀄라이제이션 동작 동안 발생한 에러에 대한 정보가 EQ 계수 테이블에 저장될 수 있다. 제3 시점(t3) 및 제4 시점(t4)에도 제2 시점(t2)와 마찬가지로 에러 정보가 저장될 수 있다.
한편, PCIe 인터페이스는 이퀄라이제이션 동작이 반복됨에 따라 최적의 EQ 계수 정보를 식별할 수 있다. 구체적으로, PCIe 인터페이스는 이퀄라이제이션 동작을 시도한 횟수를 나타내는 로그 정보와 레인 및 EQ 계수 별로 L0 상태 또는 링크업 상태에서 발생한 에러에 대한 에러 정보를 바탕으로 최적의 최종 EQ 계수를 결정할 수 있다. PCIe 인터페이스는 가장 낮은 오류 정보를 포함하는 EQ 계수 주변의 EQ 계수를 이용하여 이퀄라이제이션을 수행함으로써 효율적인 최종 EQ 계수를 결정할 수 있다. 본 발명의 일 실시 예에 따르면, PCIe 인터페이스는 최종 EQ 계수를 결정한 후, 링크 리셋이 수행되는 경우에도 최종 EQ 계수를 유지할 수 있다.
도 12는 본 발명의 일 실시 예에 따른 EQ 계수 테이블을 설명하기 위한 도면이다.
도 12를 참조하면, EQ 계수에 따른 EQ 계수 테이블이 도시되어 있다. EQ 계수 테이블은 프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)에 대한 값을 포함할 수 있다. 구체적으로, EQ 계수는 프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)의 조합으로 구성될 수 있고, EQ 계수 테이블은 도 9에서 설명한 바와 같이, [수학식 1] 내지 [수학식 3]을 충족하는 프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)에 대한 값을 포함할 수 있다. 한편, 도 12에 도시된 도면은 FS(Full Swing) 값이 32이고, LF(Low Frequency) 값이 10인 경우를 일 실시 예로 도시한 것으로, 구현시에 FS 값 및 LF 값은 변경될 수 있다.
EQ 계수 테이블은 PCIe 시스템 장치와 연결된 복수의 레인 별로 에러 정보를 저장할 수 있다. 구체적으로, EQ 테이블은 L0 상태 또는 링크업 상태에서 발생하는 오류를 누적하여 저장할 수 있다. 여기서, 오류는 트레이닝 시퀀스 에러, OS(Ordered Set) 에러, RX(Receiver) 에러, 디코딩 에러, 싱크 헤더(Sync-header) 에러 또는 프레이밍 에러 중 적어도 하나를 포함할 수 있다. 그리고, EQ 계수 테이블은 복수의 레인 별로 계산된 레인 마진을 나타내는 마진 정보를 저장할 수 있다. 구체적으로, 수신기(RX)의 높이(height) 및 너비(width)에 대한 마진을 저장할 수 있다. 실시 예에서, PCIe 시스템 장치는 에러 샘플러(error sampler)를 통한 수신기(RX)의 마진을 기록할 수 있다.
실시 예에서, EQ 계수 테이블은 저장된 에러 정보를 이용하여 효율적으로 최종 EQ 계수를 결정할 수 있다. 구체적으로, PCIe 인터페이스 장치는 에러 정보를 이용하여 EQ 계수 별로 L0 상태 또는 링크업 상태에서 발생하는 오류에 대한 정보를 파악할 수 있다. 그리고, PCIe 인터페이스 장치는 가장 낮은 오류 정보를 포함하는 EQ 계수 주변의 EQ 계수를 이용하여 이퀄라이제이션을 수행함으로써 효율적인 최종 EQ 계수를 결정할 수 있다.
도 13은 본 발명의 일 실시 예에 따른 PCIe 인터페이스의 구성을 설명하기 위한 도면이다.
도 13을 참조하면, PCIe 인터페이스 장치(1000)와 외부 장치(200)가 도시되어 있다. 여기서, 외부 장치(200)는 도 1의 루트 콤플렉스(120), 스위치(140), PCIe 엔드 포인트(150_1 내지 150_3), 레거시 엔드 포인트(160_1, 160_2) 및 PCIe 브릿지(170) 중 어느 하나일 수 있다. 외부 장치(200) 및 PCIe 인터페이스 장치(1000)는 PCIe 프로토콜을 지원하는 PCIe 인터페이스를 이용하여 통신을 수행할 수 있다. 구체적으로, 외부 장치(200) 및 PCIe 인터페이스 장치(1000)는 링크(Link)를 형성할 수 있고, 외부 장치(200) 및 PCIe 인터페이스 장치(1000)는 형성된 링크를 통해 통신할 수 있다. 예를 들어, 외부 장치(200) 및 PCIe 인터페이스 장치(1000)는 링크를 통하여 패킷을 송수신할 수 있다. 여기서, 링크는 복수의 레인을 포함할 수 있다.
PCIe 인터페이스 장치(1000)는 EQ 정보 저장부(1100), EQ 제어부(1200) 및 업스트림 포트(1300)를 포함할 수 있다.
EQ 정보 저장부(1100)는 로그 정보 및 에러 정보를 저장할 수 있다. 여기서, 로그 정보는 송신기 계수 또는 수신기 계수를 포함하는 EQ 계수 각각에 대한 이퀄라이제이션 동작을 시도한 횟수를 나타내는 정보일 수 있다. 본 발명의 일 실시 예에 따르면, EQ 정보 저장부(1100)는 복수의 레인 별로 발생한 에러에 대한 에러 정보를 저장할 수 있다. 여기서, 에러는 트레이닝 시퀀스 에러, OS(Ordered Set) 에러, RX(Receiver) 에러, 디코딩 에러, 싱크 헤더(Sync-header) 에러 또는 프레이밍 에러 중 적어도 하나를 포함할 수 있다.
실시 예에서, EQ 정보 저장부(1100)는 링크 리셋(예컨대, 콜드 리셋, 웜 리셋 또는 핫 리셋)의 경우에도 로그 정보 또는 에러 정보를 저장할 수 있는 비휘발성 메모리 장치로 구현될 수 있다. 그리고, 실시 예에서, EQ 정보 저장부(1100)는 EQ 계수 중 사전에 설정된 프리셋 조합들을 저장할 수 있다.
실시 예에서, EQ 정보 저장부(1100)는 복수의 레인 별로 계산된 레인 마진을 나타내는 마진 정보를 저장할 수 있다. 실시 예에서, EQ 정보 저장부(1100)는 FS(Full Swing) 값 또는 LF(Low Frequency) 값을 포함하는 포트 정보를 저장할 수 있다.
EQ 제어부(1200)는 복수의 레인 각각에 대한 송신기 또는 수신기의 설정을 결정하는 이퀄라이제이션 동작을 수행하도록 PCIe 인터페이스 장치(1000)의 전반적인 동작을 제어할 수 있다. 실시 예에서, EQ 제어부(1200)는 로그 정보 및 에러 정보에 기초하여 최종 EQ 계수를 결정할 수 있다. 실시 예에서, EQ 제어부(1200)는 EQ 계수 중 사전에 설정된 프리셋 조합들에 대한 이퀄라이제이션 동작의 상기 시도 횟수가 제1 임계 횟수를 초과하는 어느 하나의 계수를 최종 EQ 계수로 결정할 수 있다. 실시 예에서, EQ 제어부(1200)는 모든 상기 EQ 계수에 대하여 이퀄라이제이션 동작의 시도 횟수가 제2 임계 횟수를 초과하면, 에러 정보에 기초하여 최종 EQ 계수를 결정할 수 있다. 실시 예에서, EQ 제어부(1200)는 L0 상태에서 단위 시간당 발생한 에러 수가 가장 작은 3개의 EQ 계수에 각각 대응되는 이퀄라이제이션 동작의 시도 횟수가 모두 제3 임계 횟수를 초과하면, 상기 3개의 EQ 계수 중 어느 하나를 최종 EQ 계수로 결정할 수 있다.
실시 예에서, EQ 제어부(1200)는 상기 PCIe 인터페이스 장치에 연결된 링크가 리셋되면, FS(Full Swing) 값 또는 LF(Low Frequency) 값을 포함하는 포트 정보에 기초하여, 리셋 이전에 외부 장치에 대한 이퀄라이제이션 동작이 수행되었는지 판단할 수 있다. 실시 예에서, EQ 제어부(1200)는 L0 상태에서 단위 시간당 발생한 에러 수가 임계 에러 값을 초과하는 경우, 복수의 레인 각각에 대한 송신기 또는 수신기의 설정을 재설정하는 리이퀄라이제이션 동작을 수행하도록 PCIe 인터페이스 장치를 제어할 수 있다.
도 14는 본 발명의 일 실시 예에 따른 PCIe 인터페이스의 동작 방법을 설명하기 위한 도면이다.
도 14를 참조하면, PCIe 인터페이스의 동작 방법이 순차적으로 도시되어 있다. 구체적으로, PCIe 인터페이스는 외부 장치와 복수의 레인을 포함하는 링크를 통해 연결될 수 있다. 그리고, PCIe 인터페이스는 복수의 레인 각각에 대한 송신기 또는 수신기의 설정을 결정하는 이퀄라이제이션 동작을 수행할 수 있다. PCIe 인터페이스는 이퀄라이제이션 동작에 진입하면, 물리적으로 연결된 링크가 새로운 포트에 연결되었는지 판단할 수 있다(S1410). 즉, PCIe 인터페이스에 연결된 외부 장치가 이전에 이퀄라이제이션 동작이 수행된 적이 있는지 판단할 수 있다. PCIe 인터페이스는 Config read/write 주소 순서, FS(Full Swing) 값, LF(Low Frequency) 값, 리타이머의 여부, 리타이머의 개수 및 버스 넘버(bus number)를 포함하는 포트 정보에 기초하여 외부 장치가 PCIe 인터페이스에 처음 연결된 새로운 포트인지 판단할 수 있다.
그리고, 외부 장치가 PCIe 인터페이스에 처음 연결된 새로운 포트이면(S1410-Yes), PCIe 인터페이스에 연결된 포트 정보를 변경할 수 있다(S1415). 구체적으로, PCIe 인터페이스는 연결된 포트 정보에 따라 로그 정보, ER(Error Rate) 등을 관리할 수 있다. 실시 예에서, PCIe 인터페이스는 연결된 외부 장치가 새로운 포트로 판단되면 기존의 로깅된 포트 정보를 삭제할 수도 있다.
그리고, 외부 장치가 PCIe 인터페이스에 연결된 새로운 포트가 아니면(S1410-No), PCIe 인터페이스는 포트 정보에 기초하여 저장된 로그 정보가 존재하는지 판단할 수 있다(S1420). 여기서, 로그 정보는 복수의 레인에 대한 이퀄라이제이션 동작을 EQ 계수 각각에 대하여 테스트한 횟수를 나타내는 정보일 수 있다.
PCIe 인터페이스에 저장된 로그 정보가 존재하지 않는 경우(S1420-No), PCIe 인터페이스는 EQ 계수를 프리셋 조합으로 결정할 수 있다(S1425). 여기서, EQ 계수는 프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)의 조합으로 구성될 수 있다. 그리고, PCIe 인터페이스는 프리셋 조합에 따라 링크업을 수행할 수 있다(S1440).
한편, PCIe 인터페이스에 저장된 로그 정보가 존재하는 경우(S1420-Yes), PCIe 인터페이스는 저장된 로그 정보에 따라 이퀄라이제이션 동작을 테스트할 EQ 계수 또는 조합을 결정할 수 있다(S1430). 구체적인 EQ 계수 또는 조합의 결정 방법은 도 15를 참조하여 후술하도록 한다.
그리고, PCIe 인터페이스는 결정된 EQ 계수 또는 조합에 따라 링크업을 수행할 수 있다(S1440). PCIe 인터페이스는 결정된 EQ 계수에 대응되는 로그 정보 및 링크업 상태에서 발생한 에러에 대한 정보를 나타내는 에러 정보를 저장할 수 있다(S1450). 여기서, 에러는 트레이닝 시퀀스 에러, OS(Ordered Set) 에러, RX(Receiver) 에러, 디코딩 에러, 싱크 헤더(Sync-header) 에러 또는 프레이밍 에러 중 적어도 하나를 포함할 수 있다. 그리고, PCIe 인터페이스는 복수의 레인 별로 발생한 에러에 대한 에러 정보를 저장할 수 있다.
실시 예에서, PCIe 인터페이스는 복수의 레인 별로 계산된 레인 마진을 나타내는 마진 정보를 저장할 수 있다. 실시 예에서, PCIe 인터페이스는 로그 정보 및 에러 정보에 기초하여 최종 EQ 계수를 결정할 수 있다. 실시 예에서, PCIe 인터페이스는 EQ 계수 중 사전에 설정된 프리셋 조합들에 대한 이퀄라이제이션 동작을 테스트한 횟수가 제1 임계 횟수를 초과하는 어느 하나의 계수를 최종 EQ 계수로 결정할 수 있다. 여기서, 제1 임계 횟수는 10회일 수 있고, 제1 임계 횟수는 반복적인 실험 등을 통하여 적절한 수치가 계산될 수 있다. 실시 예에서, PCIe 인터페이스는 모든 상기 EQ 계수에 대하여 이퀄라이제이션 동작을 테스트한 횟수가 제2 임계 횟수를 초과하면, 에러 정보에 기초하여 최종 EQ 계수를 결정할 수 있다. 여기서, 제2 임계 횟수는 10회일 수 있고, 제2 임계 횟수는 반복적인 실험 등을 통하여 적절한 수치가 계산될 수 있다. 실시 예에서, PCIe 인터페이스는 링크업 상태에서 단위 시간당 발생한 에러 수가 가장 작은 3개의 EQ 계수에 각각 대응되는 이퀄라이제이션 동작의 테스트 횟수가 제3 임계 횟수를 초과하면, 3개의 EQ 계수 중 어느 하나를 상기 최종 EQ 계수로 결정할 수 있다. 여기서, 제3 임계 횟수는 20회 내지 30회일 수 있고, 제1 임계 횟수는 반복적인 실험 등을 통하여 적절한 수치가 계산될 수 있다.
PCIe 인터페이스는 링크업 상태에서 단위 시간당 발생한 에러 수가 임계 에러 값을 초과하는지 판단할 수 있다(S1460). 그리고, 단위 시간당 발생한 에러 수가 임계 에러 값을 초과하는 경우(S1460-Yes), EQ 계수를 재설정하는 리이퀄라이제이션 동작을 수행할 수 있다(S1470).
도 15는 본 발명의 일 실시 예에 따른 저장된 로그 정보에 따라 EQ 계수가 결정되는 과정을 설명하기 위한 도면이다.
도 15를 참조하면, PCIe 인터페이스에 저장된 로그 정보가 존재하는 경우(S1420-Yes), PCIe 인터페이스는 저장된 로그 정보에 따라 이퀄라이제이션 동작을 테스트할 EQ 계수 또는 조합을 결정하는 방법이 도시되어 있다.
구체적으로, PCIe 인터페이스에 저장된 로그 정보가 존재하면, PCIe 인터페이스는 EQ 계수 또는 조합 중 사전에 설정된 프리셋 조합들에 대한 이퀄라이제이션 동작의 시도 횟수(npreset)가 제1 임계 횟수(nth1)를 초과하는지 판단할 수 있다(S1421).
그리고, 사전에 설정된 프리셋 조합들에 대한 이퀄라이제이션 동작의 시도 횟수가 제1 임계 횟수를 초과하지 않으면(S1421-NO), PCIe 인터페이스는 EQ 계수 중 프리셋 조합을 이퀄라이제이션 동작을 시도할 조합으로 결정할 수 있다(S1422).
그리고, 사전에 설정된 프리셋 조합들에 대한 이퀄라이제이션 동작의 시도 횟수가 제1 임계 횟수를 초과하면(S1421-YES), PCIe 인터페이스는 모든 EQ 계수에 대한 이퀄라이제이션 동작의 시도 횟수(ncoef)가 제2 임계 횟수(nth2)를 초과하는 지 판단할 수 있다(S1423).
모든 EQ 계수에 대한 이퀄라이제이션 동작의 시도 횟수가 제2 임계 횟수를 초과하지 않으면(S1423-NO), PCIe 인터페이스는 모든 EQ 계수 중에서 이퀄라이제이션 동작의 시도 횟수 또는 수행 빈도가 낮은 조합들을 이퀄라이제이션 동작을 수행할 EQ 계수로 준비 또는 결정할 수 있다(S1424).
그리고, 모든 EQ 계수에 대한 이퀄라이제이션 동작의 시도 횟수가 제2 임계 횟수를 초과하면(S1423-YES), PCIe 인터페이스는 에러 비율(Error Rate)이 가장 작은 3개의 EQ 계수에 대한 이퀄라이제이션 동작의 시도 횟수(nm_ER)가 모두 제3 임계 횟수(nth3)를 초과하는지 판단할 수 있다(S1425).
에러 비율(Error Rate)가 가장 작은 3개의 EQ 계수에 대한 이퀄라이제이션 동작의 시도 횟수가 제3 임계 횟수를 초과하지 않으면(S1425-No), PCIe 인터페이스는 에러 비율이 가장 작은 3개의 EQ 계수를 포함하는 EQ 계수 및 조합에 대하여 이퀄라이제이션 동작을 수행하도록 조합을 준비할 수 있다(S1426).
에러 비율(Error Rate)가 가장 작은 3개의 EQ 계수에 대한 이퀄라이제이션 동작의 시도 횟수가 제3 임계 횟수를 초과하면(S1425-YES), PCIe 인터페이스는 에러 비율이 가장 작은 1개의 EQ 계수를 이퀄라이제이션 동작을 수행할 조합으로 준비할 수 있다(S1427).
실시 예에 따르면, PCIe 인터페이스는 S1421 단계, S1423 단계 및 S1425 단계를 모두 만족하는 최적의 EQ 계수를 최종 EQ 계수로 결정할 수 있다.
200-1: 제1 PCIe 장치
210-1: 제1 PCIe 인터페이스
214: 피지컬 레이어
210-1: 제1 PCIe 인터페이스
214: 피지컬 레이어
Claims (20)
- 외부 장치와 복수의 레인을 포함하는 링크를 통해 연결되는 PCIe 인터페이스 장치에 있어서,
상기 복수의 레인 각각에 대한 송신기 또는 수신기의 설정을 결정하는 이퀄라이제이션 동작을 수행하도록 상기 PCIe 인터페이스 장치를 제어하는 EQ 제어부; 및
송신기 계수 또는 수신기 계수를 포함하는 EQ 계수 각각에 대한 상기 이퀄라이제이션 동작을 시도한 횟수를 나타내는 로그 정보 및 상기 EQ 계수 별로 L0 상태에서 발생한 에러에 대한 정보를 나타내는 에러 정보를 저장하는 EQ 정보 저장부;를 포함하되,
상기 EQ 제어부는,
상기 로그 정보 및 상기 에러 정보에 기초하여 최종 EQ 계수를 결정하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 에러는,
트레이닝 시퀀스 에러, OS(Ordered Set) 에러, RX(Receiver) 에러, 디코딩 에러, 싱크 헤더(Sync-header) 에러 또는 프레이밍 에러 중 적어도 하나를 포함하는 PCIe 인터페이스 장치.
- 제2항에 있어서,
상기 EQ 정보 저장부는,
상기 복수의 레인 별로 발생한 상기 에러에 대한 상기 에러 정보를 저장하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 정보 저장부는,
상기 복수의 레인 별로 계산된 레인 마진을 나타내는 마진 정보를 저장하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 계수는,
프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)의 조합으로 구성되는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 제어부는,
상기 EQ 계수 중 사전에 설정된 프리셋 조합들에 대한 상기 이퀄라이제이션 동작의 상기 시도 횟수가 제1 임계 횟수를 초과하는 어느 하나의 계수를 상기 최종 EQ 계수로 결정하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 제어부는,
모든 상기 EQ 계수에 대하여 상기 이퀄라이제이션 동작의 상기 시도 횟수가 제2 임계 횟수를 초과하면, 상기 에러 정보에 기초하여 상기 최종 EQ 계수를 결정하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 제어부는,
상기 L0 상태에서 단위 시간당 발생한 에러 수가 가장 작은 3개의 EQ 계수에 각각 대응되는 상기 이퀄라이제이션 동작의 상기 시도 횟수가 모두 제3 임계 횟수를 초과하면, 상기 3개의 EQ 계수 중 어느 하나를 상기 최종 EQ 계수로 결정하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 제어부는,
상기 PCIe 인터페이스 장치에 연결된 링크가 리셋되면, FS(Full Swing) 값 또는 LF(Low Frequency) 값을 포함하는 포트 정보에 기초하여, 상기 리셋 이전에 상기 외부 장치에 대한 상기 이퀄라이제이션 동작이 수행되었는지 판단하는 PCIe 인터페이스 장치.
- 제1항에 있어서,
상기 EQ 제어부는,
상기 L0 상태에서 단위 시간당 발생한 에러 수가 임계 에러 값을 초과하는 경우, 상기 복수의 레인 각각에 대한 상기 송신기 또는 상기 수신기의 설정을 재설정하는 리이퀄라이제이션 동작을 수행하도록 상기 PCIe 인터페이스 장치를 제어하는 PCIe 인터페이스 장치.
- 외부 장치와 복수의 레인을 포함하는 링크를 통해 연결되는 PCIe 인터페이스 장치의 동작 방법에 있어서,
상기 복수의 레인에 대한 이퀄라이제이션 동작을 EQ 계수 각각에 대하여 테스트한 횟수를 나타내는 로그 정보의 존재 여부를 판단하는 단계;
상기 로그 정보가 존재하면, 상기 로그 정보에 기초하여 상기 이퀄라이제이션 동작을 테스트할 EQ 계수를 결정하는 단계;
상기 결정된 EQ 계수에 따라 링크업을 수행하는 단계; 및
상기 결정된 EQ 계수에 대응되는 로그 정보 및 상기 링크업 상태에서 발생한 에러에 대한 정보를 나타내는 에러 정보를 저장하는 단계;를 포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제11항에 있어서,
상기 에러는,
트레이닝 시퀀스 에러, OS(Ordered Set) 에러, RX(Receiver) 에러, 디코딩 에러, 싱크 헤더(Sync-header) 에러 또는 프레이밍 에러 중 적어도 하나를 포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제12항에 있어서,
상기 에러 정보를 저장하는 단계는,
상기 복수의 레인 별로 발생한 상기 에러에 대한 상기 에러 정보를 저장하는 PCIe 인터페이스 장치의 동작 방법.
- 제11항에 있어서,
상기 복수의 레인 별로 계산된 레인 마진을 나타내는 마진 정보를 저장하는 단계;를 더포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제11항에 있어서,
상기 EQ 계수는,
프리 커서(Pre-Cursor), 커서(Cursor) 및 포스트 커서(Post Cursor)의 조합으로 구성되는 PCIe 인터페이스 장치의 동작 방법.
- 제11항에 있어서,
상기 로그 정보 및 상기 에러 정보에 기초하여 최종 EQ 계수를 결정하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
- 제16항에 있어서,
상기 최종 EQ 계수를 결정하는 단계는,
상기 EQ 계수 중 사전에 설정된 프리셋 조합들에 대한 상기 이퀄라이제이션 동작을 테스트한 횟수가 제1 임계 횟수를 초과하는 어느 하나의 계수를 상기 최종 EQ 계수로 결정하는 PCIe 인터페이스 장치의 동작 방법.
- 제16항에 있어서,
상기 최종 EQ 계수를 결정하는 단계는,
모든 상기 EQ 계수에 대하여 상기 이퀄라이제이션 동작을 테스트한 횟수가 제2 임계 횟수를 초과하면, 상기 에러 정보에 기초하여 상기 최종 EQ 계수를 결정하는 PCIe 인터페이스 장치의 동작 방법.
- 제16항에 있어서,
상기 최종 EQ 계수를 결정하는 단계는,
상기 링크업 상태에서 단위 시간당 발생한 에러 수가 가장 작은 3개의 EQ 계수에 각각 대응되는 상기 이퀄라이제이션 동작의 테스트 횟수가 제3 임계 횟수를 초과하면, 상기 3개의 EQ 계수 중 어느 하나를 상기 최종 EQ 계수로 결정하는 PCIe 인터페이스 장치의 동작 방법.
- 제11항에 있어서,
상기 링크업 상태에서 단위 시간당 발생한 에러 수가 임계 에러 값을 초과하는 경우, 상기 EQ 계수를 재설정하는 단계;를 더 포함하는 PCIe 인터페이스 장치의 동작 방법.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210067203A KR102559387B1 (ko) | 2021-05-25 | 2021-05-25 | PCIe 인터페이스 장치 및 그 동작 방법 |
US17/506,953 US11467909B1 (en) | 2021-05-25 | 2021-10-21 | Peripheral component interconnect express interface device and operating method thereof |
CN202210217921.8A CN115391262A (zh) | 2021-05-25 | 2022-03-08 | 高速外围组件互连接口装置及其操作方法 |
US17/751,463 US11960367B2 (en) | 2021-05-24 | 2022-05-23 | Peripheral component interconnect express device and operating method thereof |
TW111119073A TW202246993A (zh) | 2021-05-25 | 2022-05-23 | 快捷週邊組件互連介面裝置及其操作方法 |
US18/602,751 US20240248819A1 (en) | 2021-05-24 | 2024-03-12 | Peripheral component interconnect express device and operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210067203A KR102559387B1 (ko) | 2021-05-25 | 2021-05-25 | PCIe 인터페이스 장치 및 그 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220159175A KR20220159175A (ko) | 2022-12-02 |
KR102559387B1 true KR102559387B1 (ko) | 2023-07-26 |
Family
ID=83547307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210067203A KR102559387B1 (ko) | 2021-05-24 | 2021-05-25 | PCIe 인터페이스 장치 및 그 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11467909B1 (ko) |
KR (1) | KR102559387B1 (ko) |
CN (1) | CN115391262A (ko) |
TW (1) | TW202246993A (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11960367B2 (en) | 2021-05-24 | 2024-04-16 | SK Hynix Inc. | Peripheral component interconnect express device and operating method thereof |
KR102635457B1 (ko) | 2021-05-24 | 2024-02-13 | 에스케이하이닉스 주식회사 | PCIe 장치 및 이를 포함하는 컴퓨팅 시스템 |
JP7381519B2 (ja) * | 2021-06-09 | 2023-11-15 | アンリツ株式会社 | 誤り率測定装置および誤り率測定方法 |
KR20230071479A (ko) * | 2021-11-16 | 2023-05-23 | 에스케이하이닉스 주식회사 | 반도체 시스템 및 반도체 시스템의 동작 방법 |
US12015508B2 (en) * | 2022-05-18 | 2024-06-18 | SK Hynix Inc. | System and operating method thereof |
JP7520081B2 (ja) * | 2022-08-05 | 2024-07-22 | アンリツ株式会社 | 誤り率測定装置および誤り率測定方法 |
CN116932450B (zh) * | 2023-09-15 | 2023-11-24 | 厦门电科星拓科技有限公司 | PCIe Retimer系统时钟架构及其工作方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424226B1 (en) | 2012-10-25 | 2016-08-23 | Qlogic, Corporation | Method and system for signal equalization in communication between computing devices |
CN107066417A (zh) | 2017-02-28 | 2017-08-18 | 郑州云海信息技术有限公司 | 一种链路参数在线调整的方法与装置 |
US20170346596A1 (en) | 2016-05-27 | 2017-11-30 | Intel Corporation | Method, apparatus, and system for signal equalization |
US20200250368A1 (en) | 2019-01-31 | 2020-08-06 | Tektronix, Inc. | Systems, methods and devices for high-speed input/output margin testing |
Family Cites Families (7)
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 |
US9645965B2 (en) | 2013-03-15 | 2017-05-09 | Intel Corporation | Apparatus, system, and method for improving equalization with a hardware driven algorithm |
KR102569761B1 (ko) | 2016-10-05 | 2023-08-22 | 삼성전자주식회사 | 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법 |
US10747688B2 (en) * | 2016-12-22 | 2020-08-18 | Intel Corporation | Low latency retimer |
US10469291B2 (en) | 2018-03-19 | 2019-11-05 | Dell Products, Lp | System and method to optimize equalization coefficients in a high-speed serial interface |
US11991025B2 (en) * | 2019-12-04 | 2024-05-21 | Intel Corporation | Transceiver parameter determination |
US12055584B2 (en) * | 2020-11-24 | 2024-08-06 | Tektronix, Inc. | Systems, methods, and devices for high-speed input/output margin testing |
-
2021
- 2021-05-25 KR KR1020210067203A patent/KR102559387B1/ko active IP Right Grant
- 2021-10-21 US US17/506,953 patent/US11467909B1/en active Active
-
2022
- 2022-03-08 CN CN202210217921.8A patent/CN115391262A/zh active Pending
- 2022-05-23 TW TW111119073A patent/TW202246993A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424226B1 (en) | 2012-10-25 | 2016-08-23 | Qlogic, Corporation | Method and system for signal equalization in communication between computing devices |
US20170346596A1 (en) | 2016-05-27 | 2017-11-30 | Intel Corporation | Method, apparatus, and system for signal equalization |
CN107066417A (zh) | 2017-02-28 | 2017-08-18 | 郑州云海信息技术有限公司 | 一种链路参数在线调整的方法与装置 |
US20200250368A1 (en) | 2019-01-31 | 2020-08-06 | Tektronix, Inc. | Systems, methods and devices for high-speed input/output margin testing |
Also Published As
Publication number | Publication date |
---|---|
US11467909B1 (en) | 2022-10-11 |
CN115391262A (zh) | 2022-11-25 |
TW202246993A (zh) | 2022-12-01 |
KR20220159175A (ko) | 2022-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102559387B1 (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
US7757020B2 (en) | Point-to-point link negotiation method and apparatus | |
US8990470B1 (en) | Virtual hubs for communication interface | |
US20240248819A1 (en) | Peripheral component interconnect express device and operating method thereof | |
US20240104035A1 (en) | Peripheral component interconnect express device and operating method thereof | |
US11797468B2 (en) | Peripheral component interconnect express device and computing system including the same | |
CN115203109A (zh) | PCIe接口和接口系统 | |
KR102518317B1 (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
US11815941B2 (en) | Peripheral component interconnect express device and operating method thereof | |
US11599495B2 (en) | Device for performing communication and computing system including the same | |
US20140317320A1 (en) | Universal serial bus devices supporting super speed and non-super speed connections for communication with a host device and methods using the same | |
US20230315591A1 (en) | PCIe DEVICE AND COMPUTING SYSTEM INCLUDING THE SAME | |
KR102519484B1 (ko) | PCIe 인터페이스 장치 및 이를 포함하는 시스템 | |
US20230315672A1 (en) | Interface device and computing system including the same | |
US20240012770A1 (en) | Interface device having plurality of ports and method of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |