Tech

PCIe Relaxed Ordering과 Ordering Rules 정리, Ordering rule 표 읽는 법

Futureseed 2025. 8. 22. 00:43
반응형

1. 기본 개념

PCIe에서 전송되는 모든 Transaction Layer Packet(TLP)은 순서(Ordering) 규칙을 따릅니다.
즉, 패킷이 도착하는 순서가 시스템 동작에 영향을 미치므로, 어떤 경우에는 엄격한 순서 유지(Strict Ordering) 가 필요하고, 어떤 경우에는 순서를 완화(Relaxed Ordering, RO) 해도 무방합니다.

  • Strict Ordering (RO=0): 전송된 순서 그대로 도착·처리되어야 함
  • Relaxed Ordering (RO=1): 특정 조건에서 순서를 바꿔도 무방함 → 성능 최적화 가능

2. Relaxed Ordering이 필요한 이유

  • PCIe는 고성능 인터커넥트이므로, 무조건 순서를 지키면 병목이 발생할 수 있습니다.
  • 특히 메모리 읽기/쓰기 요청에서 독립적인 트랜잭션 간에는 순서를 유지할 필요가 없음 → 허용하면 성능 개선.
  • 예: SSD에서 호스트로 데이터를 보낼 때, 서로 다른 주소 공간에 대한 요청이라면 굳이 순서를 지킬 필요가 없음.

3. PCIe Ordering Rules 요약 (Spec Table 2-40 기반)

  • Posted Request: 주로 Memory Write, Request에 대한 Completion 불필요
  • Non-Posted Request: Memory Read 같은 요청, Request에 대한 Completion 필요
  • Completion: Non-Posted 요청에 대한 응답

표 해석의 핵심:

  • Strict에서는 Read/Write 순서가 반드시 보장되어야 함.
  • Relaxed에서는 서로 다른 주소, 독립적인 요청은 순서 무시 가능.

표 해석(표 읽는 법):
(1) 행(Row)과 열(Column)의 의미

▪︎ Row (From / Producer)
"앞서 전송된 TLP(패킷)의 유형"
즉, 이미 발행된 트랜잭션이 어떤 종류인가를 나타냄.

Posted Request (주로 Memory Write)
Non-Posted Request (주로 Memory Read)
Non-Posted w/ Data (I/O Write 등)
Completion (응답 TLP)


▪︎ Column (To / Follower)
→ "그 다음 전송될 TLP(패킷)의 유형"
즉, 뒤이어 나오는 트랜잭션이 어떤 종류인가를 나타냄.


(2) 표 안의 셀 값의 의미

각 셀에는 "순서 유지 여부"가 기록되어 있음.

Strict Ordering = Yes (또는 Y)
→ 앞서 보낸 Row 트랜잭션이 완료되기 전에는 Column에 해당하는 트랜잭션을 발행할 수 없음.
→ 반드시 순서 지켜야 한다.

Strict Ordering = No (또는 N)
→ Row 트랜잭션보다 Column 트랜잭션이 먼저 처리되어도 무방.

Relaxed Ordering = Y/N
→ RO 비트가 세트된 경우에만 순서 완화 가능.
→ 조건부 허용.



(3) 해석 예시

예시 1:
Row = Posted Request,
Column = Non-Posted Read Request

표에서 Strict는 Yes

즉, "Memory Write 이후에는 반드시 Memory Read 요청이 순서대로 가야 한다."

하지만 Relaxed Ordering(RO=1)이면 → 순서를 무시할 수 있음.


예시 2:
Row = Posted Request,
Column = Posted Request

Strict는 "No"

즉, 두 개의 Memory Write는 순서 지킬 필요 없음 (어차피 같은 Posted Request).


예시 3: Row = Completion, Column = Posted Request

Strict는 "Y/N" (조건부)

즉, 어떤 상황에서는 Completion이 먼저 처리되어야 하지만, 경우에 따라 Posted가 먼저 처리돼도 됨.

이는 주소/트랜잭션 독립성 여부에 따라 다름.


정리하자면:

Row = 먼저 발행된 TLP 종류
Column = 나중에 발행될 TLP 종류
셀 값 = 두 트랜잭션의 순서가 강제되는지 여부



4. SSD 관점에서 해석

SSD 컨트롤러 입장에서 이 표는 호스트가 보낸 IO 순서를 반드시 지켜야 하는지, 아니면 바꿔도 되는지를 알려줌.

예:

Read-After-Write 상황: 반드시 순서 유지 필요 → 데이터 일관성 보장

서로 다른 주소에 대한 Write와 Read: Relaxed Ordering 허용 → 더 빠른 처리 가능


요약

  • PCIe는 기본적으로 Ordering Rule을 통해 전송 순서를 정의.
  • Relaxed Ordering(RO) 비트로 순서 제약을 풀 수 있어 성능 향상 가능.
반응형