[PCIe] Power Management - 2
5.3. PCI-PM Software Compatible Mechanisms
5.3.2. PM Software Control of the Link Power Management State
링크의 전력 관리 상태는 그 하향 구성 요소의 D-상태에 의해 결정됩니다. ( 링크의 전력 관리 상태는 실제로 하향 구성 요소의 D-상태(장치 전원 상태)에 의해 결정됩니다. D-상태는 장치의 전원 상태를 나타내며, 링크 전력 관리 상태가 이에 해당합니다. 예를 들어, 하향 구성 요소가 저전력 D-상태에 있을 때, 링크는 특정 조건 및 구성 요소 간 협상에 따라 L1이나 L2/L3 Ready와 같은 낮은 전력 관리 상태로 전환될 수 있습니다.)
Table 5-2은 구성 요소(상향 포트를 갖는)의 전원 상태와 해당 상향 링크 간의 관계를 나타냅니다.
다음 규칙은 PCI-PM 호환 전원 관리와 관련이 있습니다:
1. D0, D1, D2 및 D3hot의 장치는 PME_Turn_Off 메시지를 수신하면 PME_TO_Ack 메시지를 전송하여 응답해야 합니다.
2. 어떤 장치 D 상태에서든 PME_Turn_Off/PME_TO_Ack 핸드셰이크 시퀀스를 실행한 후 Downstream 구성 요소는 PM_Enter_L23 DLLP를 사용하여 L2/L3 Ready로의 링크 전환을 요청해야 합니다. L2/L3 Ready 진입 전환 프로토콜을 따른 후 Downstream 구성 요소는 주 전원 및 참조 클럭 손실에 대비해야 합니다.
3. 단일 기능 장치의 Upstream 포트는 D1, D2 또는 D3hot으로 프로그래밍됨에 따라 Link 상태 전환을 L1로 시작해야 합니다. 스위치의 경우 시스템 소프트웨어는 스위치의 Upstream 포트의 모든 D-상태 프로그래밍이 계층 전반에 걸친 PM 정책과 호환되도록 보증해야 합니다 (즉, Upstream 포트는 가장 활동적인 Downstream 포트 및 Downstream 연결된 구성 요소/기능과 동일하거나 그보다 덜 활동적인 D-상태로 프로그래밍될 수 없음).
4. ARI를 지원하지 않는 다중 기능 장치의 Upstream 포트는 모든 기능이 비-D0 D-상태로 프로그래밍될 때까지 Link 상태 전환을 L1로 시작해서는 안 됩니다.
5. ARI 장치의 Upstream 포트는 적어도 하나의 기능이 비-D0 상태로 프로그래밍되었을 때, 그리고 모든 기능이 비-D0 상태 또는 D0-초기화 상태일 때까지 Link 상태 전환을 L1로 시작해서는 안 됩니다.
5.3.2.1.Entry into the L1 Stat
Figure 5-2는 전원 관리 소프트웨어가 하향 연결된 구성 요소를 더 낮은 전원 상태 (D1, D2 또는 D3hot 상태)로 프로그래밍함으로써 링크가 L1 상태로 전환되는 과정을 묘사하고 있습니다. 이 그림과 이어지는 설명에서는 비-D0 상태로 프로그래밍되는 단일 기능 하향 구성 요소의 전환 프로세스를 개요하고 있습니다.
1. 상향 구성 요소가 Configuration Write Request 를 보냅니다.
2. 하향 구성 요소가 L1 전환 프로세스를 시작합니다.
하향 구성 요소가 Configuration Write Request 에 대한 Completion 을 보냅니다.
3. 하향 구성 요소가 최소 크레딧과 누적하고 새로운 TLP의 스케줄링을 차단합니다.
4. 하향 구성 요소는 마지막 TLP에 대한 확인 을 받을 때까지 기다립니다. PM_Enter_L1 DLLP가 반복적으로 전송됩니다.
5. 상향 구성 요소는 새로운 TLP의 스케줄링을 차단합니다.
6. 하향 구성 요소는 PM_Enter_L1 DLLP를 인지하는 PM_Request_Ack DLLP를 기다립니다.
7. 상향 구성 요소는 마지막 TLP에 대한 확인을 받습니다. 상향 구성 요소는 전기적 휴식 상태를 확인할 때까지 PM_Request_Ack DLLP를 반복적으로 전송합니다.
8. 하향 구성 요소는 PM_Request_Ack DLLP를 확인하고, DLLP 및 TLP 전송을 비활성화하며 물리적 레이어를 전기적 휴식 상태로 전환합니다.
9. 상향 구성 요소는 L1 전환을 완료하고, DLLP 및 TLP 전송을 비활성화하며 물리적 레이어를 전기적 휴식 상태로 전환합니다.
다음 텍스트는 Figure 5-2에 표시된 Link 상태 전환 프로세스에 대한 추가 세부 정보를 제공합니다.
PM Software Request:
1. 전원 관리 소프트웨어가 Downstream Function의 PMCSR로 Configuration Write Request TLP를 보내어 Downstream Function의 D-상태를 변경합니다 (예: D0에서 D1로).
하향 구성 요소는 위에서 설명한 대로 PM_Enter_L1 DLLP를 수신한 경우에만 응답을 받을 때까지 계속해서 전송합니다.
하향 구성 요소는 계속해서 상향 구성 요소로부터 TLP 및 DLLP를 수용하고, 필요한 경우 DLLP로 응답해야 합니다. 전송이 차단된 TLP(수신된 TLP에 대한 응답을 포함)은 나중에 전송을 위해 저장되어야 하며, 이로 인해 하향 구성 요소는 L1 진입 후 가능한 빨리 L1 종료를 시작해야 합니다.
Completing the L1 Link State Transition:
9. 하향 구성 요소가 수신 Lane에서 PM_Request_Ack DLLP를 캡처하면(상향 구성 요소가 L1 전환 요청을 승인했다는 신호), 그 후에 DLLP 전송을 비활성화하고 상향으로 향하는 물리적 링크를 전기적 휴식 상태로 전환합니다.
10. 수신 Lane이 전기적 휴식 상태로 들어간 상태에서 상향 구성 요소는 PM_Request_Ack DLLP 전송을 중지하고 DLLP 전송을 비활성화하며 전송 Lane을 전기적 휴식 상태로 전환하여 링크를 L1으로 전환을 완료합니다.
하향 구성 요소가 non-D0 상태로 프로그래밍되어 링크가 L1에 있는 경우, 두 구성 요소의 상호 연결된 링크는 각 구성 요소가 플로우 컨트롤 업데이트 및 필요한 경우 Update FCP Timer (Section 2.6.1.2 참조) 카운터 메커니즘의 작동을 일시 중단합니다. 물리적 레이어 동작에 대한 자세한 내용은 Chapter 4를 참조하십시오.
L1으로의 협상이 중단되면 섹션 5.2를 참조하십시오.
L1에 있는 링크의 양 끝에있는 구성 요소는 선택적으로 더 많은 에너지를 절약하기 위해 내부 PLL을 비활성화할 수 있습니다. 그러나 주의할 점은 L1 링크의 양 끝에있는 구성 요소에는 L1의 L1.0 서브스테이트에서 계속해서 플랫폼에서 제공한 본 전원 및 참조 클럭이 제공되어야 합니다.
L1 PM 서브스테이트로의 진입에 대한 자세한 내용은 섹션 5.6.1을 참조하십시오.
Sequence of events:
- 전력 관리 소프트웨어가 구성 주기를 시작합니다:
- 전력 관리 소프트웨어는 Downstream 구성 요소에 위치한 함수 내의 PM 구성 레지스터를 대상으로 하는 구성 주기를 시작합니다. 여기서는 PMCSR의 PowerState 필드를 대상으로 하며, 이를 통해 함수를 D0 상태로 되돌리는 것이 목표입니다.
- Upstream 구성 요소가 저전력 상태의 Link에 대한 구성 주기를 감지합니다:
- Upstream 구성 요소는 현재 저전력 상태에 있는 Link에 대한 구성 주기가 의도된 것을 감지하고, 이에 따라 해당 Link를 L0 상태로 전환을 시작합니다.
- Link가 L1.1 또는 L1.2 서브상태에 있는 경우, Upstream 구성 요소는 Link를 L1.0 서브상태로 전환시킵니다:
- Link가 현재 L1의 L1.1 또는 L1.2 서브상태에 있는 경우, Upstream 구성 요소는 Link를 L1.0 서브상태로 전환시킵니다.
- Chapter 4 정의에 따라 Link의 양방향이 Link 트레이닝에 참여하며, 이로 인해 Link가 L0 상태로 전환됩니다:
- Chapter 4에서 정의한 대로, Link의 양방향이 Link 트레이닝에 참여하면 Link가 L1에서 L0 상태로 전환됩니다. L1에서 L0으로의 전환에 대한 자세한 내용은 Chapter 4에서 자세히 다루어집니다.
- Link의 양방향이 다시 활성 L0 상태로 돌아간 후, Upstream 포트가 Downstream으로 구성 패킷을 보냅니다:
- Link의 양방향이 다시 활성 L0 상태로 돌아가면, Upstream 포트는 구성 패킷을 Downstream으로 보냅니다. 이는 아마도 단계 1에서 시작된 구성 주기와 관련된 정보나 명령을 Downstream 구성 요소에 전달하여 함수를 D0 상태로 전환하는 데 관여할 것입니다.
5.3.3. Power Management Event Mechanisms
5.3.3.1.Motivation
PCI Express PME 메커니즘은 PCI 버스 전력 관리 인터페이스 명세에서 정의한 PME 메커니즘과 소프트웨어 호환성이 있습니다. 전력 관리 이벤트는 Functions 에서 발생하며 PM 상태 변경을 요청하는 수단으로 사용됩니다. 전력 관리 이벤트는 일반적으로 시스템이나 개별 Function 을 저전력 상태에서 부활시키는 데 사용됩니다.
전력 관리 소프트웨어는 계층을 저전력 상태로 전환하고 이러한 장치들의 Upstream 링크를 통신 중이 아닌 L2 상태로 전환할 수 있습니다. PCI Express PME 생성 메커니즘은 따라서 두 개의 구성 요소로 나뉩니다:
• 비 통신 중인 계층을 깨우는 것 (wakeup). 이 단계는 PME를 생성한 장치의 Upstream Link가 통신 중이 아닌 L2 상태에 있는 경우에만 필요합니다. 왜냐하면 이 상태에서는 장치가 PM_PME 메시지를 Upstream으로 보낼 수 없기 때문입니다.
• 계층의 루트로 PM_PME 메시지를 보내는 것.
PCI Express Endpoints나 PCI Express Legacy Endpoints에서 발생하는 PME 표시는 TLP 메시지의 형태로 Root Complex로 전파됩니다. PM_PME 메시지는 PME 메시지 헤더의 Requester ID를 통해 계층 내에서 요청한 에이전트를 식별합니다. PM_PME 메시지 내에서 명시적으로 식별하는 것은 빠른 PME 서비스 루틴 응답 및 따라서 짧은 재개 시간을 촉진하기 위한 것입니다.
만약 Root Complex 이벤트 수집기가 구현되어 있다면, Root Complex 통합 엔드포인트에서 시작된 PME 표시는 선택적으로 동일한 논리 버스에 위치한 Root Complex 통합 엔드포인트에 속하는 Root Complex 이벤트 수집기에서 보고될 수 있습니다. Root Complex 이벤트 수집기는 명시적으로 지원되는 Root Complex 통합 엔드포인트를 기능의 일부로 선언해야 합니다. 각 Root Complex 통합 엔드포인트는 하나 이상의 Root Complex 이벤트 수집기와 연결되어야 합니다. Root Complex 이벤트 수집기는 빠른 PME 서비스 루틴 응답을 촉진하기 위해 요청 에이전트의 논리적 위치를 명시적으로 식별합니다.
Root Port 자체에서 시작된 PME 표시는 동일한 Root Port를 통해 보고됩니다.
5.3.3.2.Link Wakeup
링크 웨이크업 메커니즘은 플랫폼에게 도메인 내 구성 요소에 대한 전원과 reference clocks을 다시 설정하도록 신호를 보내는 수단을 제공합니다. 두 가지 정의된 웨이크업 메커니즘은 Beacon과 WAKE#입니다. Beacon 메커니즘은 인밴드 신호 전달을 사용하여 웨이크업 기능을 구현하며, 이에 대한 설명은 섹션 9.5.1.7에 기술되어 있습니다. 웨이크업 기능을 지원하는 구성 요소의 경우, 구현에서 지원 메커니즘에 대한 지원 요구 사항은 해당 구현이 대상이 되는 폼 팩터 명세에 따라 결정됩니다. 스위치 구성 요소가 일부 포트에 Beacon을 사용하고 다른 포트에는 WAKE#를 사용하는 응용 프로그램을 대상으로 하는 경우, 스위치는 웨이크업 메커니즘을 적절하게 변환해야 합니다(페이지 371의 "WAKE#에서 Beacon 5로의 변환 예"라는 구현 노트 참조). WAKE#가 유일한 웨이크업 메커니즘으로 사용되는 응용 프로그램에서는 Root Complex가 Beacon의 수신을 지원할 필요가 없습니다.
WAKE# 메커니즘은 사이드밴드 신호 전달을 사용하여 웨이크업 기능을 구현합니다. WAKE#은 웨이크업을 요청하는 구성 요소에 의해 확장되는 "오픈 드레인" 신호로, 연관된 전원 컨트롤러에서 관찰됩니다. WAKE#은 특정 폼 팩터에 대해서만 정의되어 있으며, WAKE#의 상세 사양은 관련 폼 팩터 명세에 포함되어 있습니다. 특정 폼 팩터 명세는 웨이크업 메커니즘으로 Beacon이나 WAKE# 중 어느 것을 사용해야 하는지를 요구할 수 있습니다.
WAKE#이 웨이크업 메커니즘으로 사용될 때, 한 번 WAKE#이 확장되면 해당하는 기능은 기본 리셋이 비활성화되어 구성 요소에 본 전원이 복원될 때까지 신호를 계속하여 낮게 유지해야 합니다.
시스템은 WAKE# 신호가 다른 기능에 의해 확장되었음을 Endpoint가 감지할 수 있는 것을 보장하는 방식으로 WAKE#을 라우팅하거나 버퍼링할 필요는 없습니다.
어떠한 웨이크업 메커니즘을 사용하기 전에, 소프트웨어에 의해 해당 기능이 활성화되어야 합니다. 이를 위해 PMCSR의 Function의 PME_En 비트를 설정해야 합니다. PME_Status 비트는 고정된 상태를 가지며, Aux 전원이 사용 가능하고 웨이크업 이벤트에 대해 활성화된 경우, Function은 리셋을 통해 PME_Status 비트의 값을 유지해야 합니다 (이 요구사항은 PMCSR의 PME_En 비트 및 Device Control 레지스터의 Aux Power PM Enable 비트에도 적용됩니다).
D3cold 상태에서 PME 생성을 허용하는 시스템은 주 전원 레일이 꺼진 상태에서 Link 웨이크업을 지원하기 위해 보조 전원을 제공해야 합니다. 소프트웨어가 해당 구성 요소가 수행할 수 있도록 허용하지 않으면, 구성 요소는 보조 전원을 소비할 수 없습니다(5.6.1 절에서 설명한 내용 참조). 소프트웨어는 Link 웨이크업에 참여하는 모든 구성 요소, 즉 Beacon 신호를 전파해야 하는 모든 구성 요소에 대해 보조 전원 소비를 활성화해야 합니다. 레거시 시스템 소프트웨어가 존재하는 경우, 이는 시스템 펌웨어의 책임입니다.
어떤 웨이크업 메커니즘을 사용하든지간에, 링크가 다시 활성화되고 트레이닝되면, 요청 에이전트는 PM_PME 메시지를 상위로 전파하여 Root Complex에 전달합니다. 전원 관리 관점에서 볼 때, 두 웨이크업 메커니즘은 동일한 기능을 제공하며, 이 챕터에서 다른 곳에서는 구별되지 않습니다.
PME_Turn_Off Broadcast Message
주요 구성 요소 전원과 참조 클럭이 꺼지기 전에, Root Complex 또는 스위치 다운스트림 포트는 해당 계층 구조 내에서 해당 지점 하류의 모든 에이전트가 즉시 PME_Turn_Off 메시지를 수신하면 즉시 이후의 모든 PM_PME 메시지의 시작을 중지하도록 지시하는 브로드캐스트 메시지를 발행해야 합니다.
각 PCI Express 에이전트는 항상 상위로 라우팅되는 TLP " acknowledgement(확인) " 메시지인 PME_TO_Ack로 응답해야 합니다. 모든 경우에서 PME_TO_Ack 메시지는 반드시 PME_Turn_Off 메시지의 발생 지점에서 종료되어야 합니다.
스위치는 각 다운스트림 포트에서 PME_TO_Ack 메시지를 받은 후에만 " aggregate (종합)" 확인을 보고해야 합니다. 각 다운스트림 포트에서 PME_TO_Ack 메시지가 도착하면 스위치는 상위 포트에 PME_TO_Ack 패킷을 보내야 합니다. 아래의 어떤 사항이든 종합 메커니즘을 재설정해야 합니다: 상위 포트에서 PME_TO_Ack 메시지의 전송, 상위 포트에서 TLP의 수신, 스위치의 주 전원 제거, 또는 기본 리셋.
상위 포트를 가진 모든 구성 요소는 관련 장치 또는 다중 기능 장치의 D 상태와 관계없이 PME_Turn_Off 메시지를 수용하고 인식해야 합니다. 한 번 구성 요소가 PME_TO_Ack 메시지를 보낸 후, 해당 구성 요소는 전원 및 참조 클럭을 제거하기 위해 L2/L3 Ready 상태로의 전환을 시작해야 합니다.
스위치는 모든 다운스트림 포트가 L2/L3 Ready 상태로 전환된 후에 상위 링크를 L2/L3 Ready 상태로 전환해야 합니다.
PME_Turn_Off 메시지의 발신자에 연결된 링크들은 L2/L3 Ready 상태를 나타내기 위해 마지막으로 전환됩니다. 이 상태 전환은 전원 전달 관리자에게 해당 계층 구조 부분 내의 모든 링크가 PME_Turn_Off 메시지 발신 지점까지 모든 진행 중인 PME 메시지를 성공적으로 처리했고, 전원 제거를 위해 필요한 모든 로컬 조건부 작업을 수행했음을 나타냅니다.
PME_TO_Ack 메시지로 응답하지 않고 그 후에 링크를 L2/L3 Ready 상태로 전환하는 경우에 데드락을 방지하기 위해, 전원 관리자는 일정 시간을 기다린 후에도 메시지를 수신하지 않은 것으로 처리하고 모든 링크를 L2/L3 Ready 상태로 전환하는 타임아웃을 구현해야 합니다. 이 타이머의 권장 제한은 1 밀리초에서 10 밀리초의 범위에 있습니다.
PME_Turn_Off 메시지 발신 지점에 해당하는 모든 링크가 L2/L3 Ready 상태로 전환된 것을 관찰한 후에는 전원 전달 관리자가 구성 요소의 참조 클럭과 주 전원을 제거하기 전에 최소 100 ns 동안 기다려야 합니다. 이 요구사항은 위에서 언급한 타이머가 트리거된 경우에는 적용되지 않습니다.
구현 참고사항
스위치에 의한 PME_TO_Ack 메시지 프록시
PME_Turn_Off/PME_TO_Ack 핸드셰이크의 주요 역할 중 하나는 수면 상태 전원 제거 전에 PCI Express 패브릭에서 모든 진행 중인 PME 메시지가 비워지도록 보장하는 것입니다. 이는 PME 메시지와 PME_TO_Ack 메시지가 모두 VC0 내의 게시된 요청 큐를 사용하기 때문에 이전에 주입된 모든 PME 메시지가 PME_TO_Ack이 Root Complex에서 수신되기 전에 시스템에 표시될 것이라는 것을 보장합니다. Root Complex의 모든 다운스트림 포트가 PME_TO_Ack 메시지를 수신하면 Root Complex는 전원을 안전하게 제거해도 PME 메시지가 손실되지 않음을 전원 관리자에게 신호할 수 있습니다. 스위치는 계층적 확장 지점을 만들어내기 때문에, 그에 연결된 모든 다운스트림 포트가 PME_TO_Ack 메시지를 수신하기 전에는 해당 서브 계층의 대리로 Upstream으로 PME_TO_Ack 메시지를 보낼 수 없어야 합니다. 이는 일반적인 스코어 보딩 기술을 사용하여 매우 간단하게 수행될 수 있습니다. 예를 들어, PME_Turn_Off 브로드캐스트 메시지가 스위치의 다운스트림으로 브로드캐스트된 후, 스위치는 단순히 각 다운스트림 포트가 PME_TO_Ack를 수신했는지 확인합니다. 활성 다운스트림 포트 중 마지막 포트가 PME_TO_Ack를 수신하면 스위치는 다운스트림에서 전체 서브 계층을 대리로 나타내는 단일 PME_TO_Ack 메시지를 Upstream으로 보냅니다. 다운스트림 포트가 PME_TO_Ack 메시지를 수신하고 스위치가 도착을 기록한 후, 해당 포트는 내부 큐에서 패킷을 삭제하고 해당 게시된 요청 큐 FC 크레딧을 해제할 수 있습니다.
5.3.3.3.PM_PME Messages
PM_PME 메시지는 전원 관리 소프트웨어에게 계층 내에서 어떤 에이전트가 PM 상태 변경을 요청하는지 알려주는 게시된 Transaction Layer Packets(TLP)입니다. PM_PME 메시지와 모든 다른 전원 관리 시스템 메시지는 일반적인 용도의 트래픽 클래스, TC #0을 사용해야 합니다.
PM_PME 메시지는 항상 Root Complex 방향으로 라우팅됩니다. 디바이스가 Upstream 링크에서 PM_PME 메시지를 보내려면, 디바이스는 링크를 이미 L0 상태에 있지 않은 경우에는 L0 상태로 전환해야 합니다. 별도로 언급되지 않는 한, 디바이스는 PM_PME 메시지를 전송한 후에도 링크를 L0 상태로 유지할 것입니다.
5.3.3.3.1. PM_PME “Backpressure” Deadlock Avoidance
Root Complex는 일시적으로 계층을 통과할 수 있는 유한한 수의 PM_PME 메시지를 임시로 저장하기 위한 로컬 버퍼링으로 일반적으로 구현됩니다. Root Complex 내에서 저장될 수 있는 제한된 수의 PM_PME 메시지가 주어지면, 일시적인 PM_PME 메시지 버퍼의 용량이 초과되면 상위 방향의 게시된 큐에 백프레셔가 적용될 수 있습니다.
데드락은 다음과 같은 시나리오에서 발생할 수 있습니다:
- 들어오는 PM_PME 메시지가 Root Complex의 일시적인 저장소를 용량으로 채우는 동안 계층 내에서 여전히 상위로 이동 중인 추가적인 PM_PME 메시지가 있습니다.
- 시스템 소프트웨어를 대표하여 Root Complex가 PME 요청자의 PMCSR 중 하나를 대상으로 하는 Configuration Read Request를 발행합니다 (예: 해당 PME_Status 비트를 읽음).
- 생산자/소비자 순서 규칙에 따라 해당 분할 완료 패킷은 그 앞에 있는 모든 이전에 게시된 PM_PME 메시지를 밀어내야 합니다. 이 경우에는 어디로 가야 할지 모르는 PM_PME 메시지입니다.
- PME 서비스 루틴은 진전을 이룰 수 없습니다. PM_PME 메시지 저장 상황이 개선되지 않습니다.
- 데드락이 발생합니다.
잠재적인 데드락을 방지하려면 Root Complex는 이러한 상황에서 항상 전진 진행을 허용해야 합니다. 이는 게시된 큐 플로우 컨트롤 크레딧이 허용하는 어떤 PM_PME 메시지든 받아들이고, 오버플로우 조건을 생성하는 어떤 PM_PME 메시지든 버림으로써 수행되어야 합니다. 이 필수 동작은 이러한 경우에 데드락이 발생하지 않도록 보장하지만, PM_PME 메시지는 프로세스에서 버려지고 따라서 손실될 것입니다.
영구적으로 어떤 PM_PME 메시지도 손실되지 않도록 하려면 PM_PME를 생성할 수 있는 모든 에이전트는 합리적인 시간 내에 PME 요청이 서비스되도록 하기 위한 PME 서비스 타임아웃 메커니즘을 구현해야 합니다.
만약 100 ms (± 50%/- 5%) 후에 요청 에이전트의 PME_Status 비트가 아직 지워지지 않은 경우, PME 서비스 타임아웃 메커니즘이 만료되어 PME를 요청하는 에이전트가 일시적으로 손실된 PM_PME 메시지를 다시 보내도록 트리거됩니다. 이 시점에서 링크가 비통신 상태인 경우, PM_PME 메시지를 다시 보내기 전에 에이전트는 Section 5.3.3.2에서 정의된대로 링크를 재활성화해야 합니다.
5 5.3.3.4.PME Rules
- 모든 장치 기능은 PCI-PM 명세에 따라 PCI-PM 전원 관리 기능 (PMC) 레지스터와 PMCSR을 구현해야 합니다. 이러한 레지스터는 PCI-PM 호환 PCI Capability List 형식에 있습니다.
- PME를 지원하는 기능은 PMCSR의 PME_Status 비트와 이에 기반한 기능적인 동작을 구현해야 합니다.
- 기능이 링크 웨이크업을 시작하거나 PM_PME 메시지를 발행할 때는 PME_Status 비트를 설정해야 합니다.
- 스위치는 어떤 다운스트림 포트에서 수신한 PM_PME를 상위 포트로 라우팅해야 합니다.
- PME_Turn_Off 메시지를 수신하면 장치는 PM_PME 메시지의 전송을 차단하고 PME_TO_Ack 메시지를 상위로 전송해야 합니다. 링크가 LDn을 통해 L0 상태로 복원된 후에는 구성 요소가 PM_PME 메시지를 보낼 수 있습니다.
- 링크 또는 계층의 일부를 비통신 상태로 전환하기 전에 (즉, PM_PME 메시지를 발행할 수 없는 상태로), PME_Turn_Off 메시지를 다운스트림으로 브로드캐스트해야 합니다.
5.3.3.5.PM_PME Delivery State Machine
다음 다이어그램은 개념적으로 PM_PME 전송 제어 상태 머신을 개요화합니다. 이 상태 머신은 Link가 PME 이벤트를 즉시 발생시키는지 아니면 Link를 깨워야만 PME 이벤트를 처리할 수 있는지를 결정합니다.
Communicating State:
초기 전원 인가 및 관련된 리셋 시점에서 상위 링크는 통신 상태로 들어갑니다.
- 만약 PME_Status가 주장된다면(전달이 활성화된 경우), PM_PME 메시지가 상위로 발행되어 계층의 루트에서 종료됩니다. 다음 상태는 PME Sent 상태입니다.
- 만약 PME_Turn_Off 메시지를 받으면, 메시지를 인식한 후 L2/L3 Ready 상태로 진입하여 링크는 통신 중이 아닌 상태로 들어갑니다.
Non-communicating State:
- 전원 및 클록 복원 및 관련된 리셋 이후, 다음 상태는 통신 상태입니다.
- 만약 PME_Status가 주장된다면, 링크는 Link Reactivation 상태로 전환되어 웨이크업 메커니즘을 활성화합니다.
PME Sent State
- 만약 PME_Status가 해제되면, 해당 기능은 다시 PME Capable 상태가 됩니다. 다음 상태는 통신 상태입니다.
- 만약 PME 서비스 타임아웃이 만료될 때까지 PME_Status 비트가 해제되지 않으면, PM_PME 메시지가 상위로 다시 전송됩니다. 타임아웃 메커니즘에 대한 설명은 섹션 5.3.3.3.1을 참조하세요.
- 만약 PME 메시지가 발행되었지만 소프트웨어가 링크를 메시지 불능 상태로 전환할 때(PME_Turn_Off 메시지를 수신한 경우) PME_Status가 해제되지 않았다면, PME_TO_Ack 메시지를 보낸 후 링크는 Link Reactivation 상태로 전환되며, 기기는 웨이크업 메커니즘을 활성화합니다.
Link Reactivation State
- 전원 및 클록 복원 및 관련된 리셋 이후, 링크는 트랜잭션을 수행할 수 있는 상태로 재개됩니다. 장치는 필요한 경우 웨이크업 신호를 지우고, PM_PME를 상위로 발행하여 PME Sent 상태로 전환합니다.