1. PCIe 의 기본 구조
.
PCIe Layer 전체 구조 와 각 Layer 특성을 간단히 알아본 후, USB 와 같이 비교를 해보자
일단 1차 버전으로 기본을 이해하고, USB 와 지속적으로 비교하면서 업데이를 하겠다.
- PCIe Layer 구조
이 부분은 나중에 다시 다루도록 하겠음
- PCIe 각 Layer 관련 설명
Wiki만 봐도 대충 이해는 갈 듯 하다.
1.1 PCIe 와 USB 비교
PCIe 와 USB 가 서로 비슷하므로, 관련 부분들을 일단 비교를 해보고 차이점을 알아보도록 하자.
- PCIe 와 USB 비교
| 구분 | PCI Express (PCIe) | USB (특히 USB 3.x 기준) | 차이점 |
|---|---|---|---|
| Topology | Point-to-Point (Switch fabric) |
Tiered Star (Host + Hub + Device) |
PCIe P2P USB Master-Slave |
| Application Layer | SW에서 보낸 Memory/Registeer 접근 요청을 처리 (e.g. Memory Read/Write, I/O, Config) |
Host 에서 Description 기반의 Class Driver 제공 및 별도 정의해서 구현가능 (e.g. Mass Storage, HID 등) 상위 연결 후 (URB)을 통신 |
PCIe 자동 협상+동기화 USB Host Control 중심 |
| Transaction Layer (TL) |
Packet 단위로 Request/Completion 처리 주소 기반(Load/Store) |
USB Transfer Types (Control/Bulk/Interrupt/Isochronous) Transaction 을 Device 정의 |
PCIe는 Memory Access 중심 USB는 EndPoint 중심 |
| Data Link Layer (DLL) |
Ack/Nak, 시퀀스 번호, CRC, 재전송 | Link Command 패킷 (Flow Control, Link Management 등) |
PCIe는 신뢰성(ACK/NACK) 보장 USB는 최소 Overhead |
| Physical Layer (PHY) |
8b/10b 또는 128b/130b CDR, EQ(CTLE/DFE), PIPE |
8b/10b(USB 3.0) 128b/132b(USB 3.1) LFPS, PHY PIPE |
둘 다 High Speed SERDES PHY사용 둘 다 Channel 특성/속도 협상방식 다름 |
- USB 관련자료
PCIe 와 USB 간단히 비교를 해보고, 이해하자.
- TI USB 3.2 정보
- 6 Physical Layer --> 전체구조 파악
- Section 6.9 Low-Frequency Periodic Signaling (LFPS) -> 기능확인 (Sequence)
개인생각
내 개인 생각이지만, 추후 CXL를 잘 사용하기 위해서는 PCIe Switch/CXL Switch 와 USB Host 연결이 중요할 듯하다.
이유는 둘 다 고속 Serial Interface 이면서, 잘 이용한다면, CXL 의 확장으로 쉽게 USB 와 연결하여
사용할 것 같다.
USB의 경우 역사가 깊어 Protocol 안전성 과 관련 Host Stack 이미 구현되어져 있는 게 많다.
더불어 USB의 장점이 Device에서 Transfer Type을 설정하고, 기술하여 마음대로 전송도 가능하므로, 확장도 쉽다.
1.2 PCIe Version 따른 개별 Layer 변화
각 용어가 몰라도 좋으니, 그러려니 하고 넘어가도록 하며 각 변화 사항만 파악하도록 하자.
- PCIe Version 별 각 Layer 변화
| PCIe Version | Transaction Layer | Data Link Layer | Physical Layer (PCS / PMA / PIPE) |
|---|---|---|---|
| 1.0 / 1.1 | • Basic TLP (Memory, I/O, Config) • No Atomic Ops / FLIT concept |
• Basic ACK/NAK mechanism • 8-bit Sequence Number |
• 8b/10b Encoding (2.5 GT/s) • No standardized PIPE (Vendor-specific) • PMA = Basic SerDes |
| 2.0 | • Adds Virtual Channels (QoS) • Transaction Layer split enhancement |
• LCRC reliability improved • Replay buffer efficiency improved |
• PIPE introduced (v3.0) ✓ • 5 GT/s signaling • Same 8b/10b encoding • PHY–MAC separation begins |
| 3.0 | • Atomic Ops added • TLP Compression (Header Reduction) |
• 16-bit Sequence Numbers • DLLP optimization for higher throughput |
• 128b/130b Encoding (8 GT/s) • PIPE 4.x • Equalization / Training introduced • Advanced LTSSM states |
| 4.0 | • Enhanced Ordering Rules • Improved Completion Handling |
• Retry buffer + Replay Timer improvement | • PIPE 5.1 • 16 GT/s, improved EQ tuning • Enhanced Link Training sequences • Jitter tolerance improved |
| 5.0 | • No major logical change • Mainly supports higher bandwidth TLP |
• Optimized flow control timing | • PIPE 6.1 • 32 GT/s, retimer interoperability • Power Management enhancements (L1.1/L1.2) |
| 6.0 | • FLIT-based TLP (Fixed-Length Packet) ✓ • Forward Error Correction (FEC) added |
• Replay protocol removed (replaced by FEC) • Simplified ACK logic |
• PAM-4 signaling (64 GT/s) ✓ • PIPE 6.2+ • FEC engine in PHY • LTSSM updated for FLIT and PAM-4 link training |
| 7.0 (draft) | • Continuation of FLIT architecture | • TBD minor optimization | • PIPE 7.0 (planned) • PAM-4 extended, improved EQ/FEC interaction • Anticipated 128 GT/s signaling |
- 주요특징정리
Transaction Layer: 3.0부터 Atomic Ops, 6.0에서 FLIT 구조로 근본적 변화
Data Link Layer: 6.0에서 FEC 도입으로 ACK/NAK 메커니즘 단순화
Physical Layer:
2.0 → PIPE 등장
3.0 → 128b/130b 전환
6.0 → PAM-4 + FEC로 신호방식 자체 변화
2. PCIe Layer
상위 Layer 기반으로 각 기능들을 간단히 설명하도록 하겠으며, 아래와 같이 1개의 Serial 통신이 생성이 되어진다.
2.1 Transaction Layer
A.역할
CPU, DMA, 또는 다른 SoC 내부 논리에서 발생한 메모리 접근,
I/O Access, Message Transaction을 Packet(TLP, Transaction Layer Packet)으로 생성하는계층.
B.기능정리
- Memory Read / Write, I/O Read / Write, Configuration Read / Write 등의 Trasaction 정의
- 각 요청(Request)과 응답(Completion) 관리
- Address Translation, BAR (Base Address Register) Mapping
- MSI/MSI-X Interrupt 관리
- Flow Control 관리
- Credits 방식
B.세부사항
- 실제 PCIe Core (Controller) 의 대부분의 로직이 여기에 있음
- 펌웨어/드라이버는 주로 Transaction Layer 레벨에서 동작 (메모리 접근, DMA 제어 등)
- SW ↔ HW 인터페이스는 Configuration Space (PCI Config) 를 통해 이루어짐
2.2 Data Link Layer
A. 역할
Transaction Layer에서 내려온 TLP에 대해 신뢰성을 보장하고, ACK/NACK 기반의 재전송 메커니즘을 수행한다.
Network 치면, TCP와 유사할 것 같다.
즉, “Reliable Delivery”를 담당
B. 기능정리
- Sequence Number 관리 (순서 보장)
- LCRC (Link CRC) 계산 및 검증
- ACK / NACK 프로토콜 (Data Link Layer Packet, DLLP 사용)
- Flow Control Credit 업데이트 (DLLP 통해 전송)
C. 주요패킷 종류
- TLP (Transaction Layer Packet): 실제 데이터
- DLLP (Data Link Layer Packet): 제어 정보 (ACK/NACK, Flow Control 등)
B. 세부 사항
- TLP이 손상되거나 순서가 어긋나면 재전송 요청
- PHY 신호 오류는 Data Link Layer에서 검출하여 자동으로 복구
- 한 Link마다 독립적으로 동작
- (ex. Root ↔ Endpoint, Switch ↔ Device)
2.3. Physical Layer
A. 역할
Data Link Layer에서 전달 받은 데이터 패킷을 직렬화(Serialize) 하여 실제 신호로 전송하고, 수신 데이터를 복원(Deserialize) 한다.
전송 매체는 AC-Coupled Differential Pair (Tx/Rx Lane) 로 구성된다.
중간에 Bypass Capacitor 사용하여 ,즉 AC로 전송을 하는 구조이다.
B. 하부구조
A. PCS (Physical Coding Sublayer)
- Encoding/Decoding
- 128b/130b (Gen3 이상)
- 8b/10b (Gen1/2)
- Scrambling/Descrambling (DC Balance 유지)
- Lane Alignment, Symbol Lock
- SKP Ordered Set 삽입 (Clock 보정용)
- PIPE 인터페이스
B. PMA (Physical Medium Attachment)
- Serializer / Deserializer (SerDes)
- Equalizer (CTLE, DFE 등)
- Clock Data Recovery (CDR)
- Transmit Driver / Receiver Front-End
- Eye Diagram, Pre-emphasis 등 실제 아날로그 신호 특성 조정
- PHY 의 PCS vs PMA 비교
| 구분 | PCS (Physical Coding Sublayer) | PMA (Physical Medium Attachment) |
|---|---|---|
| 성격 | Digtal Logic | Analog/ Mixed-signal |
| 주요 기능 | • Encoding/Decoding (8b/10b, 128b/130b) • Scrambling • Alignment • LTSSM |
• SerDes • Equalization • CDR • Voltage swing |
| 주요 위치 | Controller Side | Channel(Lane) Side |
| 주요 변화 | PIPE 3.0~6.0 사이 인코딩 변화 | PCIe 3.0부터 EQ·CDR 고도화 |
- Serializer / Deserializer (SerDes)
- Controller에서 오는 병렬 데이터를 직렬 신호로 변환 (TX)
- 수신 시 반대로 직렬 데이터를 병렬로 복원 (RX)
- PCIe x1, x4, x8, x12, x16, x32 Lane 동작
- Equalization (Channel 보정)
- 신호 감쇠, 반사, ISI(inter-symbol interference)를 보정
- 송신단 (Tx Pre-emphasis / De-emphasis)
- 수신단 (Rx CTLE, DFE) 조합으로 수행
- PCIe 3.0 이후에서 매우 중요해짐
- CDR (Clock and Data Recovery)
- 수신 신호에서 클록을 복원하여 비트 타이밍 동기화 수행
- Inverse Filter를 사용하여 복원
- Eye Diagram을 기반으로 샘플링 포인트 결정
- Electrical Interface
- 전압 스윙, 신호 스펙트럼, 임피던스 매칭, EMI 최소화
- 실제 Package Pin / PCB Trace/ Connecter / Cable과 직접 연결
3. TI 와 AMD PCIe Controller 분석
TI PCIe Controller
AMD PCIe Controller
3.1 USB-DRD(Dual Role Data) 정리
USB의 경우, Host 와 Device 즉 Master / Slave 구조라서 각 Role 의 역할이 정해져 있으며, 협상을 통해 이를 정하는 기능이 존재했다.
그것이 기존의 OTG이고, USB Type-C 기존 OTG에서 확장된 개념으로 생각하면 될 듯하다.
- i.MX6 OTG/DRD(Dural Role Data) 이해
USB OTG(On The Go) 이해해야, DRD(Dural Role Data) 이해가 가능
- USB 3.0 이후 OTG 와 DRD 차이점
USB OTG 차이를 생각하면, 단지 Host / Device Role 구분 뿐만 아니라,
USB-PD(Power Delivery)가 Source/ Sink 구분되어
기존의 USB Host에서 만 전원을 제공하던 개념이 깨진 것이 핵심일 것 같다.
- USB-DRD(Dual Role Data)
AMD USB 3.2 DRD(Dual Role Data) Controller