0. What is LTSSM?
- PCIe 환경에서 Physical Layer가 컨트롤하는 하드웨어 기반의 프로세스서, 연결된 장치들의 Link와 Port들을 설정하고 초기화하여 정상적으로 packet 전송을 가능하게 합니다
- Link가 가질 수 있는 상태(State)를 다이어그램으로 나타낸 것입니다.
LTSSM
은 Detect, Polling과 같은 State 단위로 11개로 나눠 구성되어 있습니다. 각 State는 substate를 가지고 있습니다. 아래에서 자세하게 설명하겠습니다.
0.1. 관련 개념
- Ordered Set : Physical Layer에서 장치 간의 communication을 위하여 사용되는 패킷
- Training Sequence : Link Initialization & Training에 사용되는 Ordered Set(Using Communication). 줄여서 TS라고 하며, TS1, TS2 존재.
- Cold Reset : 시스템 전원이 들어와 있지 않다가, 전원이 켜질 때.
- Warm Reset : 시스템 전원 종료 없이 이뤄지는 시스템 특정 수단에 의하여 발생. 스펙으로 명시되어 있지 않고 설계자가 정의하며, 윈도우즈의 reboot 과 같은 것들이 있다.
1. Detect
- 양 끝 단에서 링크를 서로 발견하는 단계
- initial state로서 reset 후나 처음 Boot 될 때 진입하는 단계
- Fundamental Reset(Cold Boot or Warm Boot) 이나 Hot Reset 이후 진입
- 모든 logic, port, register를 reset
2. Polling
- 아래와 같은 역할을 수행하기 위한 State
- Bit lock : 양 쪽의 클록을 동기화 하는 것(동기화가 완료되면 lock을 획득한다고 말합니다)
- Symbol lock : Gen1/Gen2에서 연속된 비트들 사이의 경계가 어디인지 알아내는 것 (데이터를 전송할 때에는 추가적인 데이터가 들어갑니다. PCIe 에서는 8b/10b(목표 전송량/실제 필요 전송량)이나 128b/130b을 사용합니다.)
- Lane polarity : Lane의 극성 체크(D+인지 D-인지)
- Block Alignment : Gen3에서 연속된 비트들 사이의 경계가 어디인지 알아내는 것 (EIEOS 사용)
- Lane Data Rate : Lane이 사용할 수 있는 Data 속도
3. Configuration
- 아래와 같은 역할을 수행하기 위한 State
- Lane reversal : x4의 경우 0~3 lane이 반대편 device의 3~0 순서로 연결될 수 있음. 이를 확인
- Link & Lane number : TS(Training Sequence)에서 PAD 로 표기되던 데이터가 negotiation 된 number로 변경됨. 양 쪽 device의 지원가능한 만큼의 최대 성능으로 negotiation 수행
- Lane to Lane de-skew : 여러 lane에서 병렬(parallel) bit streams들이 각각 다른 시간에 반대편 device에 도착하는 문제를 De-skew라고 하며, 이 문제를 해결하려고 함.
4. Recovery
- 아래와 같은 역할을 수행하기 위한 State
- Bit lock, Symbol lock 또는 Block alignment, Lane to lane de-skew 재설정
- Link speed Change
- Loopback, Hot reset, Disabled 진입 전 단계
- L1 state에서 L0 state로 변경 시
5. L0
- 정상적으로 데이터를 송수신하는 State
6. L0s
- L0의 substate, L0로 복귀가 빠르게 되면서 전력을 아낄 수 있는 State
7. L1
- L0s보다 L0로의 복귀 속도는 느리지만, 더 큰 전력을 절약할 수 있는 State
- 다음과 같은 방법으로 진입 가능
- ASPM(Active State Power Management) : PCIe 연결로 접속된 장치가 사용중이지 않을 때, Link를 저전력 상태로 변경하는 정책입니다.
- Power Managemet Software : PM Sw는 장치를 저전력 상태(D1, D2, D3hot, D3cold)로 바꿀 수 있고, 장치의 저전력은 Link도 저전력으로 보낼 수 있습니다.
8. L2
- L2는 최대전력절약을 위해서 device가 turn off 된 상태입니다.
9. Disable
- 아래와 같은 역할을 수행하기 위한 State
- Recevier가 low impedance state 상태일 때, Transmitter를 Electrical Idle 상태로 만듭니다.
- TS1의 TC(Training Control) disable bit -> 1로 set 상태로 16개를 보냅니다.
10. Loopback
- 테스트를 위한 State이며, TS1에 Loopback bit가 1로 set 되어 있어야 합니다. 이 경우, Receiver는 받은 패킷을 모두 echo(동일하게 재전송)합니다.
11. Hot Reset
- Bridge Control Register의 Secondary Bus Reset bit을 1로 set하여, link를 reset 할 수 있습니다.
- TS1의 TC(Training Control) Hot reset bit -> 1로 set 상태로 보냅니다.
PREVIOUSPCIe 데이터 전송 프로토콜 설명