2026. 6. 17. 22:08ㆍ기초지식
Physical Layer 개요
PCIe Physical Layer는 OSI 모델의 물리 계층에 해당하며, 실제 전기 신호를 통한 비트 전송을 담당한다. Differential Pair(Lane)를 통한 직렬 통신, Encoding/Decoding, Equalization, Link Training을 수행한다.
Physical Layer는 두 개의 서브레이어로 구분된다.
- Physical Coding Sublayer (PCS) - Encoding/Decoding, Scrambling, Elastic Buffer, Ordered Set 처리
- Physical Media Attachment (PMA) - 직렬화/역직렬화(SerDes), Equalization, Clock Recovery, Electrical Idle 감지
Encoding 방식
PCIe 세대별로 다른 Encoding 방식을 사용한다. Encoding은 DC 균형(DC Balance), Clock Recovery, 특수 심볼 표현을 위해 필요하다.
8b/10b (Gen1, Gen2)
8비트 데이터를 10비트로 인코딩한다. 20%의 오버헤드가 발생한다.
- Gen1: 2.5 GT/s - 실효 대역폭 2.0 Gbps/Lane
- Gen2: 5.0 GT/s - 실효 대역폭 4.0 Gbps/Lane
- Running Disparity(RD): 연속 1 또는 0의 누적을 추적하여 DC 균형 유지
- 특수 심볼: K28.5, K28.1 등 Comma 심볼로 Lane Alignment에 사용
- K27.7, K28.0, K29.7, K30.7 등 12개의 K 심볼 정의
// 8b/10b Symbol 예시
// D[x.y] = 데이터 심볼, K[x.y] = 특수 심볼
// K28.5: 0011111010 (RD-) / 1100000101 (RD+)
// COM (K28.5): TS1, TS2, SKP 등 Ordered Set 구분자로 사용
// K28.5는 Comma 특성으로 Lane Word Alignment에 사용
128b/130b (Gen3, Gen4, Gen5)
128비트 데이터를 130비트로 인코딩한다. 오버헤드 1.54%로 8b/10b 대비 효율적이다.
- Gen3: 8.0 GT/s - 실효 대역폭 ~7.88 Gbps/Lane
- Gen4: 16.0 GT/s - 실효 대역폭 ~15.75 Gbps/Lane
- Gen5: 32.0 GT/s - 실효 대역폭 ~31.51 Gbps/Lane
- 2비트 Sync Header: 01(Data Block), 10(Ordered Set Block)로 Block 종류 구분
- Scrambling 필수 적용 - 8b/10b의 K 심볼 역할을 Sync Header가 대체
// 128b/130b Block 구조
// [1:0] Sync Header (2-bit)
// [129:2] 128-bit Payload
//
// Sync Header 01 = Data Block (TLP/DLLP 페이로드)
// Sync Header 10 = Ordered Set Block (SOS, EOS, SKP, EIEOS 등)
//
// Block Alignment: EIEOS(Electric Idle Exit OS)로 블록 경계 동기화
PAM4 (Gen6)
Gen6부터는 NRZ(Non-Return-to-Zero) 대신 PAM4(Pulse Amplitude Modulation 4-level)를 사용한다.
- 신호 레벨 4개(00, 01, 10, 11)로 심볼당 2비트 전송
- Gen6: 64 GT/s 달성 - Gen5 32 GT/s 대비 2배
- FLIT(Flow control unit) 기반 전송으로 패킷 구조 변경
- FEC(Forward Error Correction) 필수 적용 - PAM4는 NRZ 대비 SNR 감소로 오류율 증가
- 단방향 x16 기준 약 256 GB/s 달성
Scrambling
Scrambling은 반복 패턴 전송 시 발생하는 EMI(전자기 간섭)를 줄이고 Clock Recovery 성능을 향상시키기 위해 적용한다.
- LFSR(Linear Feedback Shift Register) 기반 의사 난수 시퀀스 생성
- Gen1/2 (8b/10b): 다항식 G(X) = X^16 + X^5 + X^4 + X^3 + 1
- Gen3+ (128b/130b): 별도 Scrambler 적용, Sync Header는 Scrambling 제외
- 각 Lane은 동일한 초기값(Seed)에서 시작하되 Lane 번호에 따라 다른 Seed 적용
- Ordered Set(TS1, TS2, SKP 등)은 Scrambling 대상에서 제외
Ordered Set
Ordered Set은 Link Training, 동기화, 상태 전이에 사용되는 특수 심볼 시퀀스다.
- TS1 (Training Sequence 1) - Link Training 초기 단계. LTSSM Polling, Configuration 상태에서 사용. Lane/Link 번호, Speed, Width 협상 포함
- TS2 (Training Sequence 2) - Link Training 완료 단계. TS2 수신 후 링크 초기화 완료 확인
- SKP (Skip) - 송수신 간 클럭 주파수 차이 보상. 주기적 삽입으로 Elastic Buffer Overflow/Underflow 방지
- EIEOS (Electrical Idle Exit Ordered Set) - Electrical Idle 종료 신호. Gen3(128b/130b)에서 사용
- EIOS (Electrical Idle Ordered Set) - Electrical Idle 진입 신호. 8b/10b에서 사용
- FTS (Fast Training Sequence) - L0s에서 L0로 빠른 복귀 시 사용. TS1에 FTS Count 협상
- SDS (Start of Data Stream) - 128b/130b에서 Scrambler 초기화 후 Data Block 시작 표시
// TS1 Ordered Set 구조 (Gen1/2 기준, 16-symbol)
// Symbol 0 : COM (K28.5) - Ordered Set 시작 구분자
// Symbol 1 : PAD 또는 Link Number (FFh = PAD, 협상 전)
// Symbol 2 : PAD 또는 Lane Number
// Symbol 3 : FTS 개수 (L0s Recovery에 필요한 FTS 수)
// Symbol 4 : Rate Identifier (지원 속도 비트맵)
// bit[1]: 2.5 GT/s, bit[2]: 5.0 GT/s, bit[3]: 8.0 GT/s ...
// Symbol 5 : Training Control
// bit[0]: Hot Reset, bit[1]: Disable Link
// bit[2]: Loopback, bit[3]: Disable Scrambling
// Symbol 6~15: Equalization 정보 또는 PAD
Equalization
고속 직렬 통신에서는 채널 손실(Channel Loss)로 인해 신호 왜곡이 발생한다. Equalization은 이를 보상하여 BER(Bit Error Rate)을 낮춘다. Gen3(8 GT/s)부터 필수 적용된다.
TX Equalization (Pre-emphasis)
송신 측에서 Pre-emphasis를 적용하여 고주파 성분을 강조한다. 3-tap FIR 필터 구조다.
- Pre-cursor (C-1) - 현재 심볼 이전 심볼의 ISI 보상. 일반적으로 작은 값
- Cursor (C0) - 현재 심볼의 진폭 결정. 가장 큰 값
- Post-cursor (C+1) - ISI(Inter-Symbol Interference) 보상. PCIe에서 가장 중요한 파라미터. 채널 손실 보상에 주로 사용
- Gen3+: Link Training 중 EQ Phase 2, Phase 3를 통해 TX EQ Coefficient 협상
// TX Equalization Coefficient 범위 (Gen3/4/5)
// C-1 : Pre-cursor, 0 ~ -6 dB 범위
// C0 : Cursor, 최대 진폭 (정규화 기준)
// C+1 : Post-cursor, 0 ~ -12 dB 범위
//
// 정규화 조건: |C-1| + C0 + |C+1| = FS (Full Swing 값)
// FS, LF (Low Frequency) 단위로도 표현 (FS=63, LF=0이 디폴트)
//
// EQ Preset P0~P10 (11개 사전 정의):
// P0: C-1=0, C0=FS, C+1=0 (No Pre-emphasis)
// P10: C-1=-2dB, C0, C+1=-6dB (최대 Pre-emphasis)
RX Equalization
수신 측에서 채널 손실을 보상한다.
- CTLE (Continuous Time Linear Equalizer) - 아날로그 고역 통과 필터. 고주파 신호 강조하여 채널 손실 보상. 구현이 단순하나 노이즈도 함께 증폭
- DFE (Decision Feedback Equalizer) - 디지털 피드백 방식. 이전 비트 결정값을 이용해 ISI 제거. 노이즈 증폭 없이 ISI 제거 가능. CTLE와 조합하여 사용
Equalization Phase (Gen3+)
Gen3부터 Link Training 중 4단계 Equalization 협상 과정이 추가된다. Recovery.Equalization LTSSM 상태에서 수행된다.
- Phase 1 - 기본 TX EQ Preset(P0~P10)으로 링크 초기화. 양측이 Preset을 교환하여 초기 EQ 값 설정
- Phase 2 - Downstream Port(DP)가 Upstream Port(UP)의 TX EQ 조정 요청. TS2의 Transmitter Preset 필드 사용
- Phase 3 - Upstream Port가 Downstream Port의 TX EQ 조정 요청
- Phase 2/3 완료 후 최적 Coefficient로 고정 후 정상 동작 진입
Electrical Idle
Electrical Idle은 Lane이 데이터를 전송하지 않는 저전력 상태다. Differential 전압이 임계값(일반적으로 |Vcm±Vdiff/2| 기준) 이하로 유지되는 상태를 의미한다.
- Electrical Idle 진입 - 8b/10b: EIOS(K28.3, K28.7 조합) 전송 후 신호 드라이브 중단
- Electrical Idle 진입 - 128b/130b: EIOS Ordered Set 전송 후 진입
- Electrical Idle 감지 - 수신 측에서 차동 전압 임계값 이하를 일정 시간 감지
- Electrical Idle 종료 - Gen1/2: FTS 전송으로 복귀 신호. Gen3+: EIEOS 전송으로 블록 동기화 후 복귀
- L0s 상태: Tx 측만 Electrical Idle 진입 가능. Rx는 계속 수신 대기
- L1 상태: 양방향 Electrical Idle. PM_Enter_L1/PM_Request_Ack DLLP 교환 후 진입
- L2 상태: 양방향 Electrical Idle + Vaux 전원만 유지. PME(Power Management Event) 감지 기능 유지
Lane Reversal / Polarity Inversion
PCIe는 PCB 배선 단순화를 위해 Lane 순서 역전과 극성 반전을 하드웨어 레벨에서 자동 보정한다. Link Training 중 감지 및 처리된다.
- Lane Reversal - x8 링크에서 Lane 0~7 대신 Lane 7~0 순서로 연결된 경우 자동 감지 및 보정. Lane 번호 협상(TS1 Symbol 2)으로 처리
- Polarity Inversion - Differential Pair(D+, D-)가 뒤집힌 경우 자동 보정. 각 Lane 독립적으로 처리. Receiver에서 데이터 비트 반전하여 소프트웨어 개입 불필요
Link Width / Speed 협상
Link Training 중 양측이 지원 가능한 최대 Width와 Speed로 자동 협상한다.
- 지원 Width: x1, x2, x4, x8, x12, x16, x32. TS1 Symbol 2로 교환
- Width 협상: 양측의 지원 Width 교환 후 최대 공통 Width 선택. Configuration 상태에서 결정
- Speed 협상: TS1/TS2 Rate Identifier 필드로 지원 속도 교환. 최고 공통 속도 선택
- Speed Change: 초기 Gen1(2.5 GT/s)으로 링크 수립 후 Speed Change 플로우로 최고 속도 전환. Recovery.Speed 상태 진입
- Directed Speed Change: 소프트웨어가 Link Control 2 레지스터(PCIe Capability)로 목표 속도 지정 가능
세대별 대역폭 정리
// PCIe 세대별 사양 비교
// Gen | Line Rate | Encoding | Overhead | BW/Lane | x16 단방향
// Gen1 | 2.5 GT/s | 8b/10b | 20% | 250 MB/s | 4 GB/s
// Gen2 | 5.0 GT/s | 8b/10b | 20% | 500 MB/s | 8 GB/s
// Gen3 | 8.0 GT/s | 128b/130b | 1.5% | 984 MB/s | 15.75 GB/s
// Gen4 | 16.0 GT/s | 128b/130b | 1.5% | 1.97 GB/s| 31.5 GB/s
// Gen5 | 32.0 GT/s | 128b/130b | 1.5% | 3.94 GB/s| 63 GB/s
// Gen6 | 64.0 GT/s | PAM4+FLIT | ~1.8% | 7.56 GB/s| 121 GB/s (x16 양방향 242 GB/s)