PCI 열거에서 장치가 어떻게 결정됩니까? (버스 / 장치 / 기능)


8

PCI 버스 / 장치 / 함수 열거에 대해 혼란스러워합니다. PCI 구성 에 대한 Wikipedia 페이지를 보면 주어진 버스에 대해 마스터가 기능 0을 사용하는 모든 장치에 대한 공급 업체 ID와 장치 ID를 요청한다는 것을 알 수 있습니다. 모든 0xFF가 반환되면 장치가 없으며 열거가 진행됩니다. 유효한 장치 ID 및 공급 업체 ID가 있으면 PCI 장치가 있고 열거됩니다. bus.device.function의 장치가 어떻게 결정되는지 잘 모르겠습니다.

예를 들어, 하나의 PCI 버스와 하나의 PCI 주변 장치가 연결된 CPU가 있다고 가정하겠습니다. CPU가 기본적으로 버스 0을보고 기능 0을보고있는 모든 장치 번호를 확인한다는 것을 알고 있습니다. 주변 장치의 장치 번호는 어떻게 결정됩니까?

답변:


6

원래 PCI 프레임 워크 ( "기존 PCI") 및 PCI-X에서도 장치는 "슬롯"에 해당하며 각 슬롯은 동일한 병렬 버스에 연결되어 있습니다. 각 슬롯에는 열거 중에 주장 된 고유 한 ID 핀이 있습니다. 열거는 본질적으로 (각 슬롯에 대해) 묻습니다. "이 슬롯에 어떤 것이 있습니까?" 장치는이 신호에 응답하여 데이터를 버스로 구동하여 응답했습니다. 응답 부족은 장치가 없음을 의미했습니다.

장치는 또한 "브리지"일 수 있으며 이는 하위 버스를 형성 함을 의미합니다. 해당 버스에는 별도의 ID (업스트림에서 할당)가 있고 독립적으로 열거 된 자체 슬롯 세트가 있습니다.

PCI-Express (PCIe)는 완전히 다릅니다. PCIe는 장치간에 공유되는 리소스 에서처럼 실제로 버스가 아닙니다. 대신 각 장치에는 업스트림 장치 및 모든 다운 스트림 장치에 대한 개별 개별 지점 간 직렬 연결이 있습니다 (다운 스트림 장치가있는 경우 브리지 기능도 함). PCIe를 LAN처럼 생각하십시오. 각 브리지는 다른 장치에 연결된 많은 포트가있는 스위치와 유사합니다. 다른 장치는 터미널 장치이거나 다른 스위치 (예 : PCIe 브리지) 일 수 있습니다.

PCIe는 개념적 프레임 워크 및 주소 지정 (따라서 소프트웨어에 제공되는 동작)이 PCI 및 PCI-X와 호환되도록 설계되었습니다. 그러나 구현은 완전히 다릅니다. 예를 들어, 장치가 지점 간이므로 열거의 각 지점에서 결정해야하는 유일한 질문은 "어떤 것이 있습니까?"입니다. 각 장치에는 고유 한 독립적 인 전선 세트가 있으므로 장치 ID는 기본적으로 모두 하드 코딩되어 있으므로 최상위 "루트 콤플렉스"를 포함한 각 브리지 각 장치에 장치 ID를 알려줍니다 .

모든 경우에 버스 / 장치 / 기능의 "기능"부분은 주변 장치 내에서 엄격하게 처리됩니다. 예를 들어, 듀얼 포트 NIC 컨트롤러에는 종종 각 포트마다 하나씩 두 가지 기능이 있습니다. 독립적으로 구성 및 작동 할 수 있지만 CPU에서 기능으로의 데이터 경로는 모두 동일합니다.


1
대답은 약간 혼란 스럽습니다 .1) PCI "장치 번호"는 실제로 "슬롯 번호"를 의미합니다 (그리고 의미가 있습니다), 2) "PCIe는 완전히 다릅니다"라고 말하고 "각 장치에는 자체 독립적 인 전선 세트가 있으므로 장치 ID는 기본적으로 모두 하드 코딩되어 있습니다. "는 전선 세트 (= 슬롯)에 ID가 하드 코딩되어 있음을 의미하므로 PCI와 동일합니다. 이제 문제는 "하드 코딩"이 언제 발생 하는가입니다. 스위치 / 브리지는 재설정시 ID를 다시 할당합니까?
xealits

2
네. 그 말이 더 나을 수 있습니다. 요점은 PCI에서 카드가 공유 버스에 있지만 어떤 슬롯에 있는지 "알고"슬롯 특정 핀이 선언 될 때만 응답한다는 것입니다. PCIe에서 브리지에는 N 개의 "와이어"세트가 있습니다. 따라서 브리지 장치에는 모든 전선 세트에 대해 별도의 슬롯 번호가 있습니다. 다리의 관점에서 볼 때, 그 슬롯은 명확한 숫자를 가지고 있습니다. 거기에 무언가가 있는지 판단하기 만하면됩니다. 카드 자체 어떤 슬롯에 있는지 알 수 없습니다 . 브리지에 무언가가 있다고 판단되면 해당 장치에 슬롯 번호가 무엇인지 알려줍니다 .
Gil Hamilton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.