2014-01-22 80 views
0

我的問題是,CPU IO端口如何工作?CPU IO端口如何工作?

據我瞭解,現在有一條總線,連接到CPU和所有設備,所有設備都分配了他們的地址。

當CPU決定讀取或寫入時,它在該總線上設置地址,只有具有相應地址的設備響應正確?並且這些地址必須是靜態的,在製造設備時分配是的?

還有,linux/proc/ioports只提供了某些驅動程序正在使用的設備的信息,是否有列出所有分配的地址?

例如,我輸入時沒有顯示並列端口地址。

非常感謝,如果有人決定答案:d

而且,這地方是PCI?據我瞭解,CPU的總線首先連接到PCI,然後從PCI連接到每個設備,對嗎?謝謝

+2

這個問題似乎是題外話題,因爲它是關於計算機體系結構,而不是編程。 –

+0

@Shahbaz - 公平點,編輯我的評論。但絕對不是關於編程。 –

+1

是的,它關於內核和硬件,我認爲這個網頁涵蓋了這些領域以及? –

回答

1

並行端口是非常「舊」的,因爲即使在連接到ISA總線的古老IBM PC中它們也存在,並且除了通過探測硬件之外無法枚舉ISA設備。所以除非一個司機真的檢查硬件是否在那裏,否則無法找到答案。

爲了區分I/O端口和內存,處理器有一個額外的信號線。在地址總線上放置地址0x378並設置信號線意味着處理器要訪問並行端口;將0x378放在地址總線上,而不設置信號線意味着處理器想要讀取存儲器。順便說一句,並非所有的處理器都有這樣的區別。例如舊的Commodore 64計算機中使用的6502處理器沒有,這意味着在該硬件上某些地址實際上是爲I/O保留的,而硬件不支持這些地址的內存。

+0

謝謝,但問題的連接部分呢? –

+0

這有點複雜,因爲有幾輛巴士。此頁面的框圖可能會回答您的大部分問題:http://en.wikipedia.org/wiki/Southbridge_%28computing%29 –