Intro
제목 그 자체, Host는 PCIe Device를 어떻게 인식할까?
왜 알고 싶냐고? PCIe Slot에 꽂혀 있는 Device가 여러 개인데 각각을 어떻게 인식하는지 궁금하기 때문이다.
overview
host는 pcie 장치를 어떻게 인식하는가?
- pcie link up, pcie enumeration 과정을 거친다.
- pcie enumeration이란, 루트 컴플렉스가 PCIe 버스 구조를 탐색하여 연결된 모든 장치를 식별하고, 각 장치에 고유한 주소(BDF)를 할당하며 자원을 설정하는 과정입니다. Link Up이 완료된 후 진행됩니다.
- pcie 장치를 식별하는 과정에서 해당 장치의 pcie configuration space를 read해야 한다.
pcie configuration space
- pcie 장치의 설정, 상태, 제어를 위해 사용됩니다. Configuration Space는 최대 4KB로, 그중 주요 항목은 표준화된 레지스터들로 구성됩니다.
- host는 configuraion read TLP로 pcie configuration space를 read할 수 있다.
- 0x00 ~ 0xFF (256바이트): PCI 호환 영역 (Header + Capabilities).
- 0x100 ~ 0xFFF (3840바이트): PCIe Extended Capabilities.
PCIe Enumeration
host system에 연결된 PCIe Device들이 무엇이고, 해당 Device와 어떻게 communicate 해야 하는지 알 수 있을까? host system이 booting 할 때, 모든 PCIe Device를 전체 탐색하고, Device의 configuration space를 access 해야 한다.
PCIe 장치들은 모두 BDF(Bus/Device/Function) 번호를 가지고 있다. 256개 Bus에, 각각 32개의 Device에, 각각의 8개의 function을 지원한다. 이를 모두 scan 하는 것을 enumeration이라고 한다.
- Bus는 Link와 같은 의미로 이해된다.
- Device는 하나의 Bus에 연결된 Device가 여러 개일 때 번호가 부여된다.
- function은 말 그대로 기능이다.

(질문) host가 PCIe Configuration Space에 어떻게 access 할 수 있을까?
(답변) Link Up 이후에 TLP Type 중에 PCIe Config Write/Read의 packet을 전송함으로써 access 할 수 있다.
Root Complex

CPU/memory subsystem과 I/O를 연결하는 interface이다.
RC는 1개 이상의 PCIe Port를 지원한다.
RC는 requester로서 config 및 IO Request를 지원한다.
EndPoint
PCIe transaction의 requester 또는 completer가 될 수 있는 function type이다.
Switch
multiple virtual PCI-to-PCI bridge device이다.

reference
'컴퓨터 > SSD' 카테고리의 다른 글
| [NVMe] CQ Entry - phase tag (0) | 2025.03.02 |
|---|---|
| [NVMe][OCP] Telemetry (0) | 2024.12.29 |
| [NVMe] Reservation (0) | 2023.06.07 |
| [NVMe] Feature (0) | 2023.05.21 |
| [PCIe] Reset (1) | 2023.05.01 |