본문으로 건너뛰기
PCIe Deep Dive · 9/19

Ch 9: Physical Layer — LTSSM·Equalization·SerDes

· Hawk · 8분 읽기

#한 줄 요약

“Physical Layer는 lane·SerDes·LTSSM으로 bit signal을 신뢰성 있게 lane 양단에 전달합니다.” — *LTSSM (Link Training and Status State Machine)*이 Detect → Polling → Configuration → L0link 활성화 절차. Equalization 4 phaseGen 3+의 link 안정성. TS1·TS2 ordered setlink 정보 교환. Gen 6부터 PAM4 + FECbit rate를 2배로.

Ch 1 Fundamentals에서 Gen 6 PAM4·encoding 진화를 봤습니다. 이 장은 그 신호가 lane에서 어떻게 trained·equalized·encoded되는지 본격적으로 분해합니다.

#LTSSM — 11 State 머신

State의미
DetectLane에 receiver 존재 감지. Reset 후 첫 state
Polling.ActiveTS1 ordered set 교환, link rate 협상
Polling.Compliance신호 무결성 test (제조 검사용)
ConfigurationLane reversal·polarity·link width 결정, FC Init
Recovery일시적 에러·rate 변경 시 진입, equalization 가능
L0Active — normal data transfer
L0sLower power, 송신측 idle
L1Standby, 양방향 idle
L2Sleep, 주 전원 off
Hot ResetSoftware-trigger reset
Disabled명시적 disable

LTSSM이 PCIe device의 link 생명 주기를 모두 표현. Recovery는 normal 동작 중 자주 진입 — 일시적 noise 등에서 retraining.

Reset 후 L0 도달까지:

단계LTSSM동작
0DetectReceiver detect — lane에 termination 감지
1Polling.ActiveTS1 ordered set 교환 — link 양단 식별
2Polling.Configurationlink width·rate 협상
3ConfigurationLane numbering·reversal·polarity inversion 결정
4Recovery (option)Equalization (Gen 3+)
5L0Active — DLL이 FC Init

전체 수십 ms 일반. Gen 5 이상은 equalization 추가 시간.

#TS1·TS2 Ordered Set

16-symbol 길이training sequence:

영역의미
Symbol 0Comma (COM) — sync용
Symbol 1Link Number — lane이 속한 link
Symbol 2Lane Number
Symbol 3N_FTS — FTS(Fast Training Sequence) 수
Symbol 4Data Rate Identifier — 지원 rate (Gen 1~7)
Symbol 5Training Control — equalization request 등
Symbol 6~15TS identifier (TS1 또는 TS2 패턴)

TS1·TS2 반복 교환으로 link 양단이 서로 인식. TS2가 final agreement.

#Equalization — Phase 0~3 (Gen 3+)

Gen 3 이상의 고속 신호PCB·card·connector의 reflection·lossequalizer로 보상:

Phase동작
Phase 0RX detect 후 기본 preset 적용
Phase 1Initial coefficients exchange — 양단이 preset 정보 교환
Phase 2TX coefficient sweep — DSP가 best EQ 검색
Phase 3RX feedback으로 final coefficient 결정

Equalization 실패는 Gen 5·6 보드에서 흔한 문제signal integrity 측정·preset 조정 필요.

#Lane Reversal·Polarity Inversion

물리적 lane 배선 실수를 softwarefree 보정:

항목의미
Lane ReversalLane 번호 역순 — boards layout 단순화
Polarity InversionDifferential pair 극성 반전 — wiring 실수 보정

Configuration state에서 자동 협상. PCB 디자이너layout 자유도 확보.

#SKP Ordered Set

Clock compensation용. 양단 PPM 차이bit 누적되면 SKP로 조정:

동작의미
주기적 SKP 삽입수천 symbol마다 SKP ordered set
Receiver가 SKP 흡수·추가clock domain 보정
Gen 6 FLITSKP가 FLIT 일부 — 별도 처리

Gen 1·2의 8b/10bDC balance를 위해 SKP 빈도 높음. Gen 6 PAM4다른 mechanism.

#Encoding 진화 (재확인)

GenerationEncodingOverhead특징
Gen 1·28b/10b20%DC balance 쉬움
Gen 3·4·5128b/130b1.5%Scrambler 필수
Gen 6·7PAM4 + FEC1.5% + FEC overhead4-level signaling, FEC로 noise 회복

PAM4는 symbol rate 절반에 bit rate 2배signal integrity 한계 회피. 다만 noise margin 1/3FEC 필수.

#Recovery State

L0에서 transient errorrate change 발생 시 Recovery 진입:

시나리오동작
Frequent LCRC errorRecovery → re-equalization
User가 rate change requestRecovery에서 new rate로 training
ASPM L1 exitL1 → Recovery → L0 (간단한 path)

Recovery 진입은 정상 동작 일부. lspci -vv | grep "LnkSta:" 의 *RT (Recovery Time)*가 얼마나 자주 진입했는지 확인.

#FTS — Fast Training Sequence

L0s exit 시 빠른 복귀용:

시나리오동작
L0s 진입 시sender가 N_FTS 개수만큼 FTS 보낼 약속 알림
L0s exit 시sender가 FTS 보내고 normal traffic 시작

FTS 개수는 Gen·implementation 따라 다름50~500 FTS 일반.

#LTSSM 디버깅

lspci -vv의 LnkCap·LnkSta·LnkCtl로 현재 LTSSM 상태 추적 어려움vendor-specific debug register 필요. 일부 *protocol analyzer (Teledyne LeCroy 등)*가 LTSSM 상태 실시간 capture.

Linux에는 pcie_aer.c 외에 별도 LTSSM trace 없음. 드라이버 측 debug log + protocol analyzer가 일반적 접근.

#자주 하는 실수

L0 진입 후도 Recovery 자주 진입. frequent Recoverysignal integrity 문제 신호.

#”Gen 5 보드에서 Gen 4로 동작하면 호환성 OK”

Equalization 실패rate downgrade된 결과일 수 있음. card·boards·cable 신호 무결성 점검 필요.

#”Polarity Inversion이 자동이라 wiring 자유”

Differential pair 내부 극성만 보정. lane 자체의 wiring 실수Lane Reversal. board 설계 시 명시가 권장.

#”SKP이 latency 영향”

수 ns 수준. 측정 가능하지만 applications에 영향 적음. high-precision timing만 의식.

#”PAM4면 무조건 빠르다”

Gen 6 PAM4 = symbol rate 32 GBaud, bit rate 64 Gbps/lane. NRZ Gen 5의 32 GT/s보다 bit rate 2배지만 symbol rate 같음. 즉 PCB는 같은 EQbit는 2배.

#정리

  • Physical Layerlane·SerDes·LTSSM으로 signal 전달.
  • LTSSM 11 state: Detect → Polling → Configuration → L0, 그 위에 L0s·L1·L2·Recovery·Disabled·Hot Reset.
  • Link Training — TS1·TS2 ordered set + Equalization 4 phase로 link 활성.
  • Lane Reversal·Polarity InversionPCB layout 자유도.
  • SKPclock PPM drift 보정.
  • Encoding 진화: 8b/10b → 128b/130b → PAM4 + FEC.
  • Recovery statenormal 동작 중 transient error 복구.
  • FTSL0s exit 빠르게.

#다음 편

Ch 10: Linux PCI Basics — enumeration·driver model에서 Linux kernel이 PCIe device를 어떻게 인식·driver 매칭·resource 할당하는지 본격적으로 분해합니다.

#관련 항목

#시리즈 자료 출처 안내

본 글의 1차 자료·정책은 Ch 1 footer 참고.