Linux系統對IO連接埠和IO記憶體的管理

來源:互聯網
上載者:User

一、I/O連接埠

連接埠(port)是介面電路中能被CPU直接存取的寄存器的地址。幾乎每一種外設都是通過讀寫裝置上的寄存器來進行的。CPU通過這些地址即連接埠向介面電路中的寄存器發送命令,讀取狀態和傳送資料。外設寄存器也稱為“I/O連接埠”,通常包括:控制寄存器、狀態寄存器和資料寄存器三大類,而且一個外設的寄存器通常被連續地編址。

二、IO記憶體

例如,在PC上可以插上一塊圖形卡,有2MB的儲存空間,甚至可能還帶有ROM,其中裝有可執行代碼。

三、IO連接埠和IO記憶體的區分及聯絡

這兩者如何區分就涉及到硬體知識,X86體系中,具有兩個地址空間:IO空間和記憶體空間,而RISC指令系統的CPU(如ARM、PowerPC等)通常只實現一個物理地址空間,即記憶體空間。

記憶體空間:記憶體位址定址範圍,32位作業系統記憶體空間為2的32次冪,即4G。

IO空間:X86特有的一個空間,與記憶體空間彼此獨立的地址空間,32位X86有64K的IO空間。

IO連接埠:當寄存器或記憶體位於IO空間時,稱為IO連接埠。一般寄存器也俗稱I/O連接埠,或者說I/O ports,這個I/O連接埠可以被映射在Memory Space,也可以被映射在I/O Space。

IO記憶體:當寄存器或記憶體位於記憶體空間時,稱為IO記憶體。

四、外設IO連接埠物理地址的編址方式

CPU對外設IO連接埠物理地址的編址方式有兩種:一種是I/O映射方式(I/O-mapped),另一種是記憶體映射方式(Memory-mapped)。而具體採用哪一種則取決於CPU的體繫結構。

1、統一編址

RISC指令系統的CPU(如,PowerPC、m68k、ARM等)通常只實現一個物理地址空間(RAM)。在這種情況下,外設I/O連接埠的物理地址就被映射到CPU的單一物理地址空間中,而成為記憶體的一部分。此時,CPU可以象訪問一個記憶體單元那樣訪問外設I/O連接埠,而不需要設立專門的外設I/O指令。

統一編址也稱為“I/O記憶體”方式,外設寄存器位於“記憶體空間”(很多外設有自己的記憶體、緩衝區,外設的寄存器和記憶體統稱“I/O空間”)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.