[PCIe] Physical Layer 완전 정리 | 8b/10b, 128b/130b, Encoding, Equalization, Electrical Idle

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)

다음 글

기초지식 카테고리 글 더보기