CHAPTER 05
5. 세대 전환과 equalization을 phase별로 분해한다
Gen1/Gen2에서 안정적이지만 Gen3 이상에서 Recovery가 반복되면 receiver detect보다 equalization과 channel margin을 봅니다. target speed, 실제 negotiated speed, 각 lane의 preset/coefficient와 FOM을 같은 표로 기록합니다.
PCIe 세대별 bring-up 관점
| 세대 | 전송률 | line encoding/방식 | 추가로 민감해지는 항목 | 최소 검증 |
|---|---|---|---|---|
| Gen1 | 2.5 GT/s | 8b/10b | 기본 연결, polarity, lane map | x1 L0와 config read |
| Gen2 | 5.0 GT/s | 8b/10b | channel loss와 clock margin | directed speed change 안정성 |
| Gen3 | 8.0 GT/s | 128b/130b | link equalization, preset/coeff | phase 완료와 BER/AER |
| Gen4 | 16.0 GT/s | 128b/130b | channel budget, retimer, Tx/Rx tuning | lane별 margin과 Recovery 빈도 |
| Gen5 | 32.0 GT/s | 128b/130b | 더 작은 eye, jitter, package/connector | 32GT/s compliance와 lane margining |
| Gen6 | 64.0 GT/s | PAM4/FLIT mode | FEC/FLIT, PAM4 margin | 해당 controller/PHY가 실제 지원할 때 별도 절차 |
Gen6·7: PAM4 신호와 FLIT 오류 처리를 구분한다
PCIe 6.0의 64 GT/s와 7.0의 128 GT/s는 PAM4를 사용하며, 두 세대의 FLIT 구성은 동일한 256바이트다. 비-FLIT 링크의 Data Link·크레딧 설명과 구분해서 읽어야 한다. 한 FLIT에 여러 패킷을 담거나 한 패킷을 여러 FLIT에 나눌 수 있으므로, TLP 영역 236바이트가 매번 유효 애플리케이션 데이터 236바이트라는 뜻은 아니다.
| 영역 | 바이트 | 역할과 범위 |
|---|---|---|
| TLP | 236 | Transaction Layer Packet 배치 영역 |
| DLP | 6 | Data Link Payload |
| CRC | 8 | 앞의 TLP+DLP 242바이트에 대한 64비트 오류 검출 정보 |
| FEC | 6 | 전체 FLIT을 보호하는 오류 교정 정보 |
PAM4 수신에서는 오류가 연속해서 생길 수 있다. FEC로 교정하고 CRC로 남은 오류를 검출한 뒤, FLIT 단위 ACK/NAK와 replay로 재전송을 처리한다. FEC는 모든 오류를 고친다는 보장이 아니며, CRC와 replay도 별도 역할이다. PCI-SIG의 Gen6 기술 설명은 CRC 범위와 FEC의 전체 FLIT 보호를 구분한다.
x16 구성에서 Gen6의 256 GB/s와 Gen7의 512 GB/s는 양방향 합계 이론치다. 단방향 NVMe 읽기나 GPU DMA의 실측 처리량으로 해석하면 안 된다. FLIT 충전율, TLP 크기, 프로토콜 오버헤드, 재전송과 시스템 경로가 유효 전송량을 줄인다. Gen7의 속도 증가는 FLIT 필드 크기를 늘린 결과가 아니다. 수치와 동일한 필드 구성은 PCI-SIG Gen6 FAQ와 Gen7 기술 Q&A에서 확인할 수 있다.
이 절의 FLIT 형식을 기존 Gen3~5 DWC bring-up 절차에 그대로 대입하지 않는다. 컨트롤러·PHY·상대 장치의 세대 및 FLIT 지원을 먼저 확인하고, 협상된 속도·폭, 물리 오류, FLIT 교정·재전송 관찰값을 해당 구현 문서에 맞춰 나눈다. 검증되지 않은 제조사 레지스터나 고정 지연 시간을 추정하지 않는다. 함께 읽을 공유 자료는 Laxman Kumar의 FLIT 개요이며, 위 필드와 오류 처리 설명의 기준은 PCI-SIG 공개 자료다.
Gen3+ link equalization phase
| Phase | 주요 목적 | 누가 무엇을 결정하나 | 남길 값 | 실패 해석 |
|---|---|---|---|---|
| Phase 0 | equalization 진입과 양 끝 준비 | upstream/downstream port | phase request/status | capability/진입 조건 |
| Phase 1 | 상대 transmitter preset 초기 설정 | receiver가 요청, transmitter가 적용 | requested/applied preset | PIPE preset 적용 경계 |
| Phase 2 | 한 방향 transmitter 최적화 | receiver 평가와 coefficient/preset update | FOM, coeff status | channel/receiver adaptation |
| Phase 3 | 반대 방향 transmitter 최적화 | 반대 port receiver가 평가 | lane별 completion | 특정 방향 SI/retimer |
| Complete | rate에서 정상 traffic 전환 | 양쪽 port | equalization complete bit, current speed | status는 complete인데 Recovery가 반복되면 BER 확인 |
lane별 기록해야 할 tuning evidence
| 항목 | Controller/PHY 위치 | 값의 의미 | 주의점 |
|---|---|---|---|
| Tx preset | controller request/PHY Tx | 정의된 preset 조합 | 숫자가 같아도 PHY implementation은 다를 수 있음 |
| Tx coefficient | preset-to-coeff 또는 direct update | cursor/pre/post cursor 계수 | limit/status handshake 확인 |
| Rx CTLE | PHY | 고주파 보상 | 고정값 복사보다 adaptation 결과 |
| Rx DFE taps | PHY | post-cursor ISI 보상 | PVT와 lane별 차이 |
| FOM | receiver/controller interface | 상대적 quality metric | vendor scale을 BER로 직접 환산하지 않음 |
| Eye/margin | PHY diagnostic/lane margining | time/voltage 여유 | traffic/pattern/temperature 조건 기록 |
| Correctable AER | controller/AER | Bad DLLP, Replay 등 | 누적 counter는 test 시작 전 baseline 필요 |
| Recovery count | LTSSM history | runtime retrain 빈도 | L0 진입 한 번만으로 안정 판정 금지 |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | max-link-speed를 Gen1로 제한하고 cold/warm boot를 반복합니다. | config/DMA까지 기본 path 안정 | equalization 이전 문제를 제거 |
| 2 | 한 세대씩 올리며 lane별 state와 AER delta를 측정합니다. | 처음 실패하는 generation 확인 | channel margin 임계점 식별 |
| 3 | width를 x1부터 늘려 특정 lane의 민감도를 찾습니다. | 실패를 유발하는 lane mask | package/board/connector lane 분리 |
| 4 | 온도와 supply corner에서 같은 test를 반복합니다. | PVT별 speed/width/BER | room temperature 단발 성공을 배제 |
주의preset 숫자 하나를 '정답값'으로 공개하는 것은 의미가 없습니다. 같은 DWC controller라도 PHY release, package, channel, endpoint와 온도에 따라 최적값이 달라집니다.
Selective NAK는 FLIT와 순서 상태를 함께 봅니다
FLIT 재전송의 단위와 TLP 경계는 일치하지 않을 수 있습니다. 하나의 TLP가 여러 FLIT에 걸치거나 여러 TLP가 함께 실릴 수 있으므로, 애플리케이션 요청 하나와 재전송 하나를 같은 것으로 세지 않습니다. 정상 전송의 암시적 순서 상태와 재전송 중 명시적 순서 번호가 쓰이는 경우를 구분해야 하며, FLIT에는 순서 관리가 없다고 설명하면 안 됩니다.
PCI-SIG Gen7 자료 15쪽의 선택적 재전송 예는 단일 오류를 처리하다 추가 오류로 Standard NAK 경로로 전환하는 모습을 보여 줍니다. Selective와 Standard는 단순히 이름만 다른 동일 재전송이 아닙니다. Payload가 없는 NOP-only FLIT는 그 예에서 순서 번호를 소비하거나 replay buffer에 저장·재전송하는 데이터 FLIT와 구별됩니다. NOP를 포함한 모든 FLIT를 같은 재전송 개수로 계산하지 않습니다.
검토할 상태는 송신 replay buffer, 수신 재정렬 상태, 연속 오류와 재시도 전환, 버퍼가 찬 조건, payload와 NOP-only 구분입니다. PHY의 SKP Ordered Set을 NAK 필드로 해석하지 않습니다. 이 자료의 도표는 프로토콜 동작 설명이며 특정 장치의 데이터 손상 재현이나 대역폭 개선 측정값이 아닙니다.
전송률이 두 배여도 Nyquist 주파수는 같을 수 있습니다
Gen5 32 GT/s NRZ와 Gen6 64 GT/s PAM4는 모두 32 GBd 심볼률에 대응하며 Nyquist 주파수는 16 GHz입니다. Gen7 128 GT/s PAM4는 64 GBd와 32 GHz에 대응합니다. 이 값은 채널 대역의 절대 상한이나 측정기의 충분 조건이 아닙니다. PCI-SIG Gen7 세대 비교표 32쪽에서 전송률·변조·주파수 항목을 각각 읽어야 합니다.
PAM4는 네 레벨 사이에 세 eye가 생깁니다. 같은 전체 전압 범위를 사용한다면 NRZ처럼 두 레벨 사이의 한 eye에 모든 여유가 있는 것이 아닙니다. Eye 높이·폭뿐 아니라 레벨 선형성, jitter, 오류율과 equalization 조건을 함께 봅니다. Nyquist 주파수가 Gen5와 같다는 사실만으로 기존 채널의 Gen6 마진이 충분하다고 결론 내릴 수 없습니다.
English summary. Replay follows FLIT sequence state, not application request boundaries. Selective replay can transition to standard replay. Compare symbol rate, three PAM4 eyes and measured channel conditions separately from the transfer-rate label.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 제조사 레지스터나 제품별 오프셋은 추측하지 않았습니다. 아래의 제조사 자료, 아키텍처 문서, Linux v6.18.37 원본으로 확인할 수 있는 내용만 다뤘습니다.
Synopsys PCIe 5.0 complete solution
Controller, PHY, verification IP가 별도 구성요소이며 PIPE 5.x와 SerDes architecture를 지원한다는 공개 제품 범위
Synopsys PCIe 5.0 PHY
PHY가 담당하는 SerDes, equalization, lane margining과 진단 기능의 공개 범위
Synopsys PIPE 5.1 SerDes architecture
기존 PIPE와 SerDes architecture에서 PCS 책임이 이동하는 이유
Linux v6.18.37 DWC header
DWC Port Logic, link debug, iATU와 eDMA 공개 register offset
Linux DWC Devicetree binding
clock, reset, PHY, lane, speed와 DWC resource description