PCIe TLP Routing 기본 개념



Transaction Layer Packet 특징

TLP (Transaction Layer Packets)는 라우팅 매커니즘 및 규칙에 따라서 하나의 링크에서 다른 링크로 전달됩니다. TLP가 접근하는 4개의 Address Spaces가 존재합니다. PCIe 장비 사이에서 transactions이 전달될 때, 아래의 4개의 분리된 주소 공간이 사용됩니다.

Address Space Transaction Types Purpose
Memory Read, Write Transfer data to or from a location in the system memory map
IO Read, Write Transfer data to or from a location in the system IO map
Configuration Read, Write Transfer data to or from a location in the configuration space of a PCI-compatible device.
Message Baseline, Vendor-specific General in-band messaging and event reporting (without consuming memory or IO address resources)

Split Transaction Protocol이란?

PCIe에서 4개의 주소 공간으로 접근하는 것은 split-transaction request와 completion을 사용하여 가능합니다. Split Transcation의 특징으로는 좋은 성능과 Overhead를 가지고 있다는 것입니다.

image

Split Transcations 프로토콜은 타겟에 접근하기 위한 latency를 처리하기 위해서 과도한 버스 대기나 tranasaction을 지연시키던, 이전의 버스 프로토콜보다 발전했습니다. PCIe에서 요청 완료(completion)는 completer가 데이터나 상태를 전송하기 위한 준비가 되었을 때, 시작됩니다. completion은 request와 complete가 독립적으로 분리되어 개별 TLP가 만들어집니다.

즉, Split Transcation은 완료 명령어를 포함하는, request & complete TLP의 집합 이라고 보면 될 것 같습니다. 하나의 transaction 만 있는 경우보다 오버헤드가 생깁니다.

Write Posting : Completion 필요 x

Completion이 필요한 경우에는 대기 시간이라는 패널티가 존재합니다. 이러한 단점을 극복하기 위하여, Write는 Completion을 요구하지 않는 Transaction 방식을 사용합니다. 속도는 더 빠르지만 불확실성은 존재합니다.

Memory Write는 더 높은 퍼포먼스를 위해서 수용되었습니다. 하지만 IO, Configuration Write는 디바이스의 행동을 변경할 수 있고, IO 또는 Configuration 작업 상태를 보고하기 위하여 항상 Completion이 전송됩니다.

종류 Completion 필요 여부
posted Not Need Completion
not-posted Need Completion

TLP Routing 3가지 방법

4개의 주소 공간 중 하나를 targeting 하고 있는 TLP variants는 아래의 3가지 중 한 개의 방법을 사용하여 route 됩니다.

  • Address Routing
  • ID Routing
  • Implicit Routing

출처

  • https://www.informit.com/articles/article.aspx?p=169100&seqNum=6