PCIe

LTSSM - Polling

PCIeMaster 2025. 3. 18. 15:58

Polling State

 

지금까지 링크는 Electrical Idle(전기적 유휴) 상태에 있었습니다. 그러나 Polling 상태에서는 LTSSM TS1 및 TS2 Ordered Set이 두 개의 연결된 장치 간에 교환됩니다. 이 상태의 주요 목적은 두 장치가 서로의 신호를 올바르게 해석할 수 있도록 하는 것입니다. 즉, 각 장치가 상대방이 전송하는 비트 스트림을 인식하고, 비트 락(Bit Lock) 및 심볼 락(Symbol Lock)을 설정하며, 극성 반전(Polarity Inversion) 문제를 해결해야 합니다. 이 과정이 완료되면, 각 장치는 링크 파트너로부터 TS1 및 TS2 Ordered Set을 성공적으로 수신하게 됩니다. (이 과정의 하위 상태(Substate)에 대한 자세한 내용은 Figure 14-9에서 확인할 수 있습니다.)

Polling Substate Machine

 

 

Polling.Active

 

  • 송신기(Transmitter)는 TS1 Ordered Set을 전송하며, 감지(Detect) 상태에서 수신기(Receiver)가 확인된 모든 레인의 Lane 및 Link 번호를 PAD로 설정합니다.
    • TS1 Ordered Set의 데이터 속도 식별 심볼(Data Rate Identifier Symbol)은 해당 포트가 지원하는 모든 데이터 속도를 광고(Advertise)해야 합니다.
      • 최소 2.5 GT/s에서 최대 32.0 GT/s까지 포함됩니다.
      • 사용하지 않을 계획인 속도도 광고해야 합니다.
      • 주의: Polling.Active 상태에서는 32.0 GT/s보다 높은 데이터 속도를 광고할 수 없습니다.
    • 송신기(Transmitter)는 Electrical Idle에서 벗어나 TS1 Ordered Set을 전송하기 전에 TX 공통 모드(TX common mode)가 안정화될 때까지 대기해야 합니다.
      • 송신기는 Polling.Active 상태에 진입한 후 192ns 이내에 "Transmit Margin" 필드의 기본 전압 레벨에서 패턴을 전송해야 합니다. 이 전송 전압 레벨은 Polling.Compliance 또는 Recovery.RcvrLock 상태로 전이될 때까지 유지됩니다.
  • 다음 state는 Polling.Compliance 상태로의 전이 조건:
    • Link Control 2 레지스터의 "Enter Compliance" 비트(비트 4)가 1b로 설정된 경우, Polling.Compliance 상태로 즉시 전이됩니다.
    • Polling.Active 상태로 진입하기 전에 "Enter Compliance" 비트가 설정되었을 경우, TS1 Ordered Set을 전송하지 않고 즉시 Polling.Compliance 상태로 이동해야 합니다.

 

  • Polling.Configuration 상태로의 전이 조건:
    • 적어도 1024개의 TS1 Ordered Set이 전송된 후,
    • Detect 상태에서 수신기(Receiver)를 감지한 모든 레인이 8개의 연속된 트레이닝 시퀀스를 수신해야 합니다.
    • 다음 조건 중 하나라도 만족하면 Polling.Configuration 상태로 이동합니다:
      • TS1의 Lane 및 Link 번호가 PAD로 설정되고, Compliance_Receive_Request 비트가 비활성화됨.
      • TS1의 Lane 및 Link 번호가 PAD로 설정되고, Loopback_Request 비트가 활성화됨.
      • TS2의 Lane 및 Link 번호가 PAD로 설정됨.

 

  • 24ms 타임아웃 후 다음 상태로 전이됨:
    • Polling.Configuration 상태로 이동하는 조건:
      • Detect 상태에서 수신기(Receiver)가 감지된 레인이 8개의 연속된 트레이닝 시퀀스를 수신해야 함. 아래 조건 중 하나라도 만족해야 함:
        • TS1의 Lane 및 Link 번호가 PAD로 설정되고, Compliance_Receive_Request 비활성화됨.
        • TS1의 Lane 및 Link 번호가 PAD로 설정되고, Loopback_Request 활성화됨.
        • TS2의 Lane 및 Link 번호가 PAD로 설정됨.
      • 그리고, 하나의 TS1 또는 TS2 Ordered Set을 받은 이후, TS1 Ordered Set을 최소 1024개 전송해야 함.
      • (그리고)
      • Detect 상태에서 수신기(Receiver)를 감지한 일부 사전 정의된 레인들은, Polling.Active 상태로 진입한 이후 최소 한 번 이상 Electrical Idle에서 탈출해야 합니다.
        • 참고사항
          • 이 조건은 하나 이상의 불량 수신기(Receiver) 또는 송신기(Transmitter)가 유효한 링크 구성을 방해하는 것을 방지할 수 있습니다. 또한, Polling.Configuration 상태에서 추가적인 트레이닝이 가능하도록 허용됩니다. 사전 정의된 레인의 정확한 기준은 구현(Implementation)별로 다를 수 있습니다. PCIe 1.1까지는, 이 사전 정의된 레인 집합이 Detect에서 수신기를 감지한 전체 레인과 동일한 것으로 간주되었습니다.
        • 참고사항
          • 8개의 연속된 TS1 또는 TS2 Ordered Set을 수신한 모든 레인은 Polling.Active 상태에서 최소 한 번 Electrical Idle을 탈출했어야 합니다.
      • (a) 또는 (b) 조건 중 하나라도 충족되면 Polling.Compliance 상태로 이동합니다.
        • (a) 조건: 위에서 정의된 사전 결정된 레인들의 일부가 Polling.Active 상태로 진입한 이후 Electrical Idle에서 탈출하지 못한 경우.
        • (b) 조건: Detect 상태에서 수신기를 감지한 레인 중 하나가 아래 조건을 만족하는 경우:
          • 8개의 연속된 TS1 Ordered Set(또는 그 보완 세트)을 수신.
          • Lane 및 Link 번호가 PAD로 설정됨.
          • Compliance_Receive_Request가 활성화됨.
          • Loopback_Request가 비활성화됨.

Polling.Compliance

  • Link Control 2 레지스터의 "Transmit Margin" 필드는 이 서브 상태에 진입할 때 샘플링되며, 서브 상태에 진입한 후 192ns 이내에 송신 패키지 핀에 적용됩니다. 또한, LTSSM이 이 서브 상태에 있는 동안 계속 유지됩니다.
  • Polling.Active → Polling.Compliance 전이 시 데이터 속도 및 디임퍼시스 수준 결정
    • 포트가 2.5 GT/s 속도만 지원하는 경우:
      • 컴플라이언스 패턴 전송 속도: 2.5 GT/s
      • 디임퍼시스 수준: -3.5 dB
    • Polling.Compliance 상태로 전이한 이유가 Polling.Active에서 감지된 특정 TS1 Ordered Set 때문인 경우:
      • Polling.Active에서 감지된 8개의 연속된 TS1 Ordered Set에서 Compliance_Receive_Request가 활성화되고 Loopback_Request가 비활성화되었을 경우
      • 속도 결정 기준:
        • 포트가 64.0 GT/s 속도를 지원하고, Polling.Active에서 받은 TS1 Ordered Set에서 Flit Mode Supported 비트(1b) 및 Supported Link Speeds 필드(10111b)가 설정된 경우:
          • 컴플라이언스 패턴 전송 속도는 64.0 GT/s로 설정됨.
        • 그 외의 경우:
          • 감지된 TS1 Ordered Set의 "데이터 속도 식별자" 필드(Symbol 4) 중 가장 높은 공통 전송 및 수신 속도로 결정됨
      • select_deemphasis 변수 설정
        • Polling.Active에서 받은 8개의 연속된 TS1 Ordered Set의 "Selectable De-emphasis" 비트(Symbol 4의 비트 6)를 기준으로 설정됨.
        • 공통 데이터 속도가 8.0 GT/s 이상이면, select_preset 변수는 송신기 프리셋 비트 값으로 설정됨.
        • 이 값이 예약되지 않은 값이면, 송신기는 이 값으로 작동해야 함.
        • 8.0 GT/s 이상인 경우, 수신기의 프리셋 힌트 값을 사용할 수 있음.
        • 8개의 연속된 EQ TS1 Ordered Set에서 송신기 프리셋 정보를 받지 못한 레인은 구현별로 다른 프리셋 값을 사용할 수 있음.
      • Enter Compliance 비트(Link Control 2 Register)가 1b로 설정된 경우:
        • 컴플라이언스 패턴의 전송 속도는 "Target Link Speed" 필드(Link Control 2 Register)에서 정의됨.
        • 컴플라이언스 프리셋/디임퍼시스 필드 값이 0001b이고, 전송 속도가 5.0 GT/s인 경우:
          • select_deemphasis 변수가 설정됨.
        • 전송 속도가 8.0 GT/s 이상인 경우:
          • 각 레인의 select_preset 변수가 설정됨.
          • 송신기는 Link Control 2 Register의 "Compliance Preset/De-emphasis Value"(비트 15:12)에 지정된 프리셋 값으로 작동해야 함.
          • 단, 해당 값이 예약된 값(Reserved encoding)이 아닐 경우에만 적용됨.
      • 그 외의 경우, 데이터 속도, 프리셋 및 디임퍼시스 수준 설정은 다음 기준에 따라 정의됩니다:
        • 구성 요소(Component)가 지원하는 최대 데이터 속도.
        • 해당 진입 조건으로 Polling.Compliance 상태에 진입한 횟수.
        • 이 설정은 §Table 4-59에 설명된 설정 번호(sequence of setting numbers)와 동일한 순서로 적용됩니다.

Polling.Compliance 상태에 여러 번 진입할 경우, 위의 시퀀스를 반복합니다. 예를 들어, 포트가 5.0 GT/s 데이터 속도 및 -6 dB 디임퍼시스 수준에서 컴플라이언스 패턴을 전송하도록 하는 상태 전이 순서는 다음과 같습니다:
1️⃣ Polling.Active
2️⃣ Polling.Compliance(2.5 GT/s, -3.5 dB)
3️⃣ Polling.Active
4️⃣ Polling.Compliance(5.0 GT/s, -3.5 dB)
5️⃣ Polling.Active
6️⃣ Polling.Compliance(5.0 GT/s, -6 dB)

다음 조건 중 하나라도 충족되면 Polling.Configuration 상태에서 시퀀스를 "Setting #1"로 설정해야 합니다:

  • 포트가 16.0 GT/s 이상의 데이터 속도를 지원하는 경우.
  • 포트의 수신기(Receiver)가 8.0 GT/s 이상의 데이터 속도로 동작할 때, 2.5 GT/s에서 ZRX-DC 사양(§Table 8-12)을 충족하지 못하는 경우.

모든 포트는 Polling.Configuration 상태에서 시퀀스를 Setting #1로 설정할 수 있습니다.

 

  • 컴플라이언스 패턴 데이터 속도가 2.5 GT/s가 아니고, Polling.Compliance 상태로 진입하기 전에 Polling.Active 상태에서 TS1 Ordered Set이 전송되었다면:
    • 다음 조건이 모두 충족될 경우, 송신기는 두 개의 Compliance TS1 Ordered Set을 전송해야 합니다:
      • 현재 데이터 속도가 2.5 GT/s이다.
      • Flit Mode가 지원된다.
      • 송신기가 § Table 4-59에서 정의된 설정 중 하나를 순차적으로 실행 중이다.
    • 송신기는 Polling.Compliance 상태로 들어가기 전에 다음을 전송해야 합니다:
      • EIOS(Electrical Idle Ordered Set) 한 개 또는 두 개의 연속된 EIOS.
      • 이후 Electrical Idle 상태로 전환.

 

  • 컴플라이언스 패턴 데이터 속도가 2.5 GT/s가 아니고, Polling.Compliance 상태로 진입하기 전에 Polling.Active에서 TS1 Ordered Set이 전송되지 않은 경우:
    • 송신기는 EIOS를 전송하지 않고 Electrical Idle 상태로 진입해야 합니다.
    • Electrical Idle 상태 동안, 데이터 속도는 새로운 속도로 변경되고 안정화됩니다.
    • 동작 주파수가 5.0 GT/s인 경우:
      • select_deemphasis 변수가 1b이면 디임퍼시스/프리셋 수준을 -3.5 dB로 설정해야 합니다.
      • 그렇지 않으면 -6 dB로 설정해야 합니다.
    • 동작 주파수가 8.0 GT/s 이상인 경우:
      • 송신기 프리셋 값은 select_preset 변수에 지정된 값으로 설정해야 합니다.
  • Polling.Compliance 상태에서 송신기가 Electrical Idle 상태로 진입하는 경우 Electrical Idle 상태의 지속 시간은 최소 1ms 이상, 최대 2ms 이하여야 합니다.
  • Polling.Compliance 상태에서의 동작 규칙
    • 데이터 속도 및 디임퍼시스/프리셋 레벨이 결정된 후, Polling.Compliance 상태에서의 동작은 다음 규칙을 따라야 합니다:
    • 포트가 다음 조건으로 인해 Polling.Compliance 상태로 진입한 경우, 송신기는 결정된 데이터 속도로 Modified Compliance Pattern을 전송해야 하며, 오류 상태 심볼(error status Symbol) 값을 0으로 설정하여 Detect 상태에서 수신기를 감지한 모든 레인에 전송해야 합니다.
      • Polling.Active에서 8개의 연속된 TS1 Ordered Set을 감지했고,
      • Compliance_Receive_Request가 설정되었으며,
      • Loopback_Request가 해제되었고,
      • Enter Compliance 비트 및 Enter Modified Compliance 비트(Link Control 2 Register)가 1b로 설정된 경우
    • 데이터 속도가 2.5 GT/s 또는 5.0 GT/s인 경우:
      • 각 레인의 수신기(Receiver)는 독립적으로 Modified Compliance Pattern을 감지하고, 특정 심볼 패턴이 발생하면 성공적인 락(Lock)을 나타냄.
      • 패턴 락 비트(Pattern Lock bit, 오류 상태 심볼의 비트 7)를 설정하여 수신된 Modified Compliance Pattern을 올바르게 수신했음을 나타냄.
      • 오류 상태 심볼(Error Status Symbol)은 락 프로세스에 사용되지 않으며, 특정 순간에는 정의되지 않을 수 있음.
      • Modified Compliance Pattern에서 감지해야 할 특정 심볼 시퀀스: K28.5, D21.5, K28.5, D10.2 또는 개별 심볼의 보수(Complement).
      • 테스트 대상 장치는 Modified Compliance Pattern을 송신할 때, 수신한 Modified Compliance Pattern과 동기화되었음을 나타내기 위해 송신 패키지 핀에서 Pattern Lock 비트를 설정해야 함.
        • 이 동작은 Modified Compliance Pattern을 수신한 후 1ms 이내에 수행해야 함.
    • 데이터 속도가 8.0 GT/s 이상인 경우:
      • 이 상태로 진입할 때, Error_Status 필드는 00h로 설정되어야 함.
      • 각 레인은 독립적으로 Pattern Lock 비트를 설정해야 하며, 이는 Section 4.2.2.2.1에서 설명된 것처럼 블록 정렬(Block Alignment)을 달성한 후 설정됨.
      • Pattern Lock이 설정된 후, 수신된 데이터 블록을 Idle Data Symbol(00h)과 비교하며,
        • 일치하지 않는 블록이 감지될 때마다 Receiver Error Count 필드 값이 1씩 증가됨.
        • Receiver Error Count는 127에서 초기화됨.
      • Pattern Lock이 설정되지 않은 경우, 각 레인의 수신기는 SKP Ordered Sets의 전송 순서를 기반으로 추가 정보를 사용하여 Pattern Lock을 얻어야 함. 추가 정보는 Section 4.2.2.2.2에서 설명됨.
      • 테스트 장치는 송신하는 Modified Compliance Pattern에서 Pattern Lock 비트를 설정해야 함.
  • 섹션 4.2.2.4에서 정의된 스크램블링 요구사항이 수신된 Modified Compliance Pattern에 적용됩니다. 예를 들어, **스크램블링 LFSR(Linear Feedback Shift Register) 시드(seed)**는 각 레인(Lane)별로 설정되며, Ordered Set은 LFSR을 진행시키지 않습니다.
  • 데이터 속도가 2.5 GT/s 또는 5.0 GT/s인 경우, 특정 레인이 수신된 Modified Compliance Pattern에 락(Lock)되었음을 나타내면, 해당 레인의 **Receiver Error Count(수신기 오류 카운트)**는 **Receiver Error(수신 오류)**가 발생할 때마다 증가합니다.
    • 오류 상태 심볼(Error Status Symbol)은 하위 7비트를 Receiver Error Count 필드로 사용하며, 이 값이 127에 도달하면 모든 비트가 1로 유지됩니다.
    • 8b/10b 인코딩이 사용되는 경우, 수신기는 이 하위 상태에서 수신할 10비트 패턴에 대해 어떠한 가정도 해서는 안 됩니다.
  • Link Control 2 레지스터(Link Control 2 Register)의 Enter Compliance 비트가 0b로 설정된 경우,
    지정된 조건에 따라 다음 상태는 Detect 상태가 됩니다.
  • Enter Compliance 비트가 Polling.Compliance 상태로 진입할 때 1b로 설정된 경우,
    다음 조건 중 하나라도 충족되면 다음 상태는 Polling.Active가 됩니다:
    •  Link Control 2 Register의 Enter Compliance 비트가 0b로 변경된 경우
    • 포트가 업스트림 포트(Upstream Port)이며, 어느 레인에서든 EIOS가 수신된 경우. 이 조건이 충족되면 Enter Compliance 비트는 0b로 리셋됨

      송신기(Transmitter)가 2.5 GT/s가 아닌 데이터 속도로 전송 중이었거나, 또는 Polling.Compliance 상태로 진입할 때 Link Control 2 Register의 Enter Compliance 비트가 1b로 설정된 경우, 송신기는 8개의 연속된 EIOS를 전송한 후 Electrical Idle 상태로 진입한 후 Polling.Active 상태로 전환합니다. Electrical Idle 상태 동안 데이터 속도는 2.5 GT/s로 변경 및 안정화되며, 디임퍼시스(de-emphasis) 레벨은 -3.5 dB로 설정됩니다.

      참고: 여러 개의 EIOS를 전송하면 충분한 신뢰성을 제공하여, 다른 포트가 적어도 하나의 EIOS를 감지하고 Polling.Compliance 하위 상태를 종료하도록 합니다. 이 경우, 설정 레지스터(configuration register) 메커니즘을 통해 Polling.Compliance 상태로 진입했음을 의미합니다.
  • 포트가 Polling.Compliance 상태로 진입한 이유가
    Link Control 2 Register의 Enter Compliance 비트가 1b로 설정되고
    Link Control 2 Register의 Enter Modified Compliance 비트가 0b로 설정되었기 때문인 경우:
    • 송신기(Transmitter)는 Detect 상태에서 수신기(Receiver)를 감지한 모든 레인에서,
      위에서 결정된 데이터 속도와 디임퍼시스/프리셋 레벨로 컴플라이언스 패턴(compliance pattern)을 전송합니다.
    • 다음 두 가지 조건 중 하나라도 충족되면 다음 상태는 Polling.Active가 됩니다.
      • Link Control 2 Register의 Enter Compliance 비트가 Polling.Compliance 상태로 진입한 이후 1b에서 0b로 변경된 경우.
      • 포트가 업스트림 포트(Upstream Port)이며,
        • Link Control 2 Register의 Enter Compliance 비트가 1b로 설정되어 있고,
        • 어느 레인에서든 EIOS가 감지된 경우.
        • 이 조건이 충족되면 Enter Compliance 비트는 0b로 리셋됨
      • 송신기(Transmitter)는 8개의 연속된 EIOS를 전송한 후 Electrical Idle 상태로 진입한 뒤 Polling.Active 상태로 전환됩니다. Electrical Idle 상태 동안 데이터 속도는 2.5 GT/s로 변경 및 안정화됩니다.
      • 참고: 여러 개의 EIOS를 전송하면 충분한 신뢰성을 제공하여,
        다른 포트가 적어도 하나의 EIOS를 감지하고 Polling 상태를 종료하도록 합니다.
  • 그 외의 경우, 
    • 송신기(Transmitter)는 Detect 상태에서 수신기(Receiver)를 감지한 레인에서, 위에서 결정된 데이터 속도와 디임퍼시스/프리셋 레벨로 다음 패턴을 전송합니다.


    • 다음 상태는 Polling.Active이며, Detect 상태에서 수신기(Receiver)를 감지한 레인 중 하나라도 Electrical Idle에서 벗어난 경우 전이됩니다. 송신기(Transmitter)가 2.5 GT/s가 아닌 데이터 속도로 전송 중인 경우, 송신기는 8개의 연속된 EIOS를 전송한 후 Electrical Idle 상태로 진입한 뒤 Polling.Active 상태로 전환됩니다. Electrical Idle 상태 동안 데이터 속도는 2.5 GT/s로 변경 및 안정화됩니다.

Polling.Configuration

  • 수신기(Receiver)는 필요할 경우 극성을 반전해야 합니다 (자세한 내용은 섹션 4.2.5.5 참조).
  • Polling.Compliance 상태로 진입할 때, Link Control 2 Register의 "Transmit Margin" 필드는 000b로 리셋되어야 합니다.
  • 필요한 경우, 송신기(Transmitter)의 Polling.Compliance 시퀀스 설정은 섹션 4.2.7.22에 설명된 대로 업데이트됩니다.
  • 송신기(Transmitter)는 TS2 Ordered Sets를 전송하며, 이때 Link 및 Lane 번호가 PAD로 설정된 모든 Lane에서 Detect 상태에서 수신기(Receiver)를 감지한 경우에 해당합니다.
    • TS2 Ordered Sets의 데이터 속도 식별자 심볼(Data Rate Identifier Symbol)**은 포트(Port)가 지원하는 2.5 GT/s ~ 32.0 GT/s의 모든 데이터 속도를 광고해야 하며, 포트가 사용하지 않을 속도도 포함됩니다.
    • 주의: 이 상태에서는 포트가 32.0 GT/s 이상의 데이터 속도를 광고하는 것이 허용되지 않습니다.
  • 다음 상태인 Configuration 상태로 전환되기 위해서는 8개의 연속된 TS2 Ordered Sets이 감지되어야 하며, Link 및 Lane 번호가 PAD로 설정된 상태에서 Detect 중 수신기를 감지한 모든 Lane에서 수신되어야 합니다. 또한, 1개의 TS2 Ordered Set을 수신한 후 16개의 TS2 Ordered Sets가 전송되어야 합니다.
  • 그렇지 않은 경우, 48ms 타임아웃이 발생하면 다음 상태는 Detect로 전환됩니다.

 

Polling.Speed

  • 이 상태는 도달할 수 없는 상태입니다. 링크(Link)가 2.5 GT/s 데이터 속도에서 L0 상태로 올라오며, 속도를 변경하기 위해 Recovery 상태로 진입하기 때문입니다.

 

####

출처) PCI Express Base Speicification Revision 6.3

'PCIe' 카테고리의 다른 글

LTSSM - Detect  (0) 2025.03.18
(LTSSM) Link Training and Status State Machine - Overview  (0) 2025.03.17
[굿썸] Lane Margining at Receiver  (0) 2024.12.20
Hot Plug and Power Budgeting  (0) 2024.12.11
Lane Margining at the receive  (1) 2024.12.05