개요
PCIe Gen3 물리 계층의 핵심 특성과 동작 메커니즘을 살펴본다.
속도 전환 메커니즘
링크 훈련 초기에는 반드시 Gen1(2.5GT/s) 속도로 시작한다. 훈련 과정에서 양단 장치가 더 높은 속도 지원을 알리면(advertise), 상태 머신은 즉시 Recovery 상태로 전환하여 양측이 공동 지원하는 최고 속도로 협상한다.
세대별 레인 속도는 다음과 같다:
- Gen1: 2.5Gbps
- Gen2: 5Gbps
- Gen3: 8Gbps
단방향 유효 대역폭 계산:
// Gen1 (8b/10b 인코딩)
2500Mbps ÷ 10 × 8 = 2000Mbps = 250MB/s
// Gen2 (동일 인코딩, 속도 2배)
500MB/s
// Gen3 (128b/130b 인코딩)
8000Mbps ÷ 130 × 128 ≈ 7876.9Mbps ≈ 984.6MB/sGen3는 Gen2 대비 약 2배의 유효 대역폭을 달성한다.
Gen3 핵심 변화
- 인코딩 방식: 8b/10b → 128b/130b 전환
- 신호 균형화: 더 정교한 이퀄라이제이션 모델 적용
128b/130b 인코딩 및 블록 구조
블록 단위 전송
Gen3는 심볼(symbol) 단위가 아닌 블록(block) 단위로 데이터를 처리한다. 각 블록은 130비트로 구성된다:
| 드 | 크기 | 설명 |
|---|---|---|
| Sync Header | 2비트 | 블록 유형 식별 |
| Payload | 128비트 (16바이트) | 실제 데이터 |
동기 헤더 값에 따른 블록 분류:
10: 데이터 블록 (Data Block)01: 정렬 집합 (Ordered Set)
직렬 출력 시 LSB 우선이므로, 실제 라인에서 01 패턴으로 관찰된다. 16바이트 페이로드 내부의 8비트 단위를 "심볼"로 부르는데, 이는 8b/10b의 10비트 심볼과 혼동하지 않도록 주의해야 한다.
정렬 집합(Ordered Sets)
모든 레인에서 동시 전송되어야 하며, 대부분 단일 블록(16바이트) 크기를 따른다. 단, SKPOS는 4바이트 단위로 가변 길이(8/12/16/20/24바이트)를 가진다.
Gen3 정의된 7가지 정렬 집합:
| 집합 | 용도 | 특이사항 |
|---|---|---|
| SKPOS | 클록 보정 | 가변 길이, 데이터 패리티 포함 |
| EIOS | 전기적 유휴 진입 | - |
| EIEOS | 유휴 탈출 + 블록 정렬 | Gen1/2의 COM 대체 |
| TS1OS | 훈련 시퀀스 1 | - |
| TS2OS | 훈련 시퀀스 2 | - |
| FTSOS | 빠른 훈련 시퀀스 | - |
| SDS | 데이터 스트림 시작 | Gen3 신규 추가 |
SKPOS 상세 구조:
- 데이터 패리티 비트: 최근 SDS 또는 SOS 이후 전송된 모든 데이터 블록의 스크램블 바이트에 대한 수 패리티
- 레인별 독립 계산, 수신측 검증 필수
- 패리티 불일치 시 해당 레인의 Lane Error Status 레지스터 설정 (수신 오류로 간주하지 않으며 재훈련 없음)
- Error_Status 필드는 Polling.Compliance 상태에서만 유효
블록 정렬 잠금
비트 잠금(Bit Lock) 이후 블록 경계를 식별해야 한다. EIEOS가 이 역할을 수행한다—00와 FF가 교차하는 독특한 패턴으로 블록 시작점을 명확히 표시한다.
// EIEOS 패턴 예시 (16바이트)
[Sync: 01] [00][FF][00][FF][00][FF][00][FF][00][FF][00][FF][00][FF][00][FF]데이터 스트림 구조
SDS 정렬 집합 전송으로 L0 상태에서 데이터 스트림이 개시된다. EDS(End Data Stream) 토큰이 나타나기 전까지 연속적인 데이터 블록이 흐른다. SKPOS는 특정 조건 하에서 스트림을 중단하지 않는 예외로 처리된다.
데이터 스트림 종료 조건:
- EDS 토큰 수신
- 오류로 인한 조기 종료
- L0에서 Recovery 등 다른 상태로 전환
프레임 마커(토큰)
SDS와 EDS 사이의 데이터 스트림 내에서 TLP/DLLP를 구분하는 5가지 토큰이 정의된다:
| 토큰 | 크기 | 기능 |
|---|---|---|
| STP | 4 심볼 | TLP 시작, DWORD 수 필드 추가 |
| SDP | 2 심볼 | DLLP 시작 |
| EDB | 4 심볼 | TLP 무효화 (Gen1/2 END 토큰 대체) |
| EDS | - | 데이터 스트림 종료 |
| IDL | - | 유휴 상태 표시 |
주목할 점: Gen3에서는 "정상 종료"를 나타내는 END 토큰이 사라졌다. EDB가 명시되지 않으면 TLP는 자동으로 유효한 것으로 간주된다.