簡體   English   中英

PCI "CF8h/CFCh" IO 端口地址是否僅適用於地址空間為 IO 的處理器?

[英]Is PCI "CF8h/CFCh" IO port addresses only applicable to processors with an IO address space?

一些 CPU 像 x86 處理器有兩個地址空間。 一個用於 memory,一個用於 IO。訪問它們的指令不同。

並且 PCI 3.0 規范還提到了一些重要的 IO 地址:

兩個 DWORD I/O 位置用於為 PC-AT 兼容系統生成配置事務。 第一個 DWORD 位置 (CF8h) 引用名為 CONFIG_ADDRESS 的讀/寫寄存器。 第二個 DWORD 地址 (CFCh) 引用名為 CONFIG_DATA 的讀/寫寄存器。

因此,PCI 3.0 規范似乎與實現 IO 地址空間的處理器緊密耦合 這是 SW/FW 作者應該知道的先驗知識。

那么其他沒有 IO 地址空間的處理器架構呢? 像 ARM。它們如何與 PCI 配置空間交互?

問題中引用的段落之前的段落直接解決了這個問題。 它說:

系統必須提供一種允許軟件生成 PCI 配置事務的機制。 ...對於PC-AT 兼容系統,本節定義並指定了生成配置事務的機制。 ... 對於其他系統架構,本規范未定義生成配置事務的方法。

換句話說,不兼容 PC-AT 的系統必須提供一種機制,但它在別處指定。 PCI 規范並未與 PC-AT 系統緊密耦合,但它並未定義其他類型系統的機制。

問題中的段落僅適用於 PC-AT 兼容系統。

下面引用自這里澄清了一切:

生成配置周期的方法取決於主機。 在 IA 機器中,使用特殊的 I/O 端口。 在其他平台上,PCI 配置空間可以內存映射到主機地址域中對應於 PCI 主機橋的某些地址位置

I/O 空間可以在不同的平台上以不同的方式訪問。 具有特殊 I/O 指令的處理器,如 Intel 處理器系列,使用 in 和 out 指令訪問 I/O 空間。 沒有特殊 I/O 指令的機器將 map 到主機地址域中 PCI 主機橋對應的地址位置 當處理器訪問內存映射地址時,I/O 請求將發送到 PCI 主機橋,然后將地址轉換為 I/O 周期並將它們放在 PCI 總線上。

所以對於非IA平台,可以直接用MMIO代替。 平台規范應該記錄 PCI 主機橋的內存映射地址,作為 SW/FW 編寫者的先驗知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM