基本介紹
- 中文名:定址空間
- 外文名:Addressing space
- 含義:CPU對於記憶體定址的能力
- 通俗含義:能最多用到多少記憶體
- 定址能力: CPU最大能查找多大範圍的地址
- 單位:位元組
簡介,連線埠地址分配,
簡介
I/O連線埠和定址
CPU為了訪問I/O接口控制器或控制卡上的數據和狀態信息,需要首先指定它們的地址。這種地址就稱為I/O連線埠地址或者簡稱連線埠。通常,一個I/O控制器包含訪問數據的數據連線埠、輸出命令的命令連線埠和訪問控制器執行狀態的狀態連線埠。連線埠地址的設定方法一般有兩種:統一編址和獨立編址。
連線埠統一編址的原理是把I/O控制器中的連線埠地址歸入存儲器定址地址空間範圍內。因此這種編址方式也稱為存儲器映像編址。CPU訪問一個連線埠的操作與訪問記憶體的操作一樣,也使用訪問記憶體的指令。連線埠獨立編址的方法是把I/O控制器和控制卡的定址空間單獨作為一個獨立的地址空間對待,稱為I/O地址空間。每個連線埠有一個I/O地址與之對應,並且使用專門的I/O指令來訪問連線埠。
IBM PC及其兼容機主要使用獨立編址方式,採用了一個獨立的I/O地址空間對控制設備中的暫存器進行定址和訪問。使用ISA匯流排結構的傳統PC,其I/O地址空間範圍是0x000~0x3FF,有1024個I/O連線埠地址可供使用。各個控制器和控制卡所默認分配使用的連線埠地址範圍見表2-1。關於這些連線埠的使用和編程方法將在後面具體涉及相關硬體時再詳細進行說明。
另外,IBM PC也部分地使用了統一編址方式。例如,CGA顯示卡上顯示記憶體的地址就直接占用了存儲器地址空間0xB800~0xBC00範圍。因此若要讓一個字元顯示在螢幕上,可以直接使用記憶體操作指令往這個記憶體區域執行寫操作。
連線埠地址分配
連線埠地址範圍 | 分配說明 | 連線埠地址範圍 | 分配說明 |
0x000~0x01F | 8237A DMA控制器1 | 0x1F0~0x1F7 | IDE硬碟控制器0 |
0x020~0x03F | 8259A 可程式中斷控制器1 | 0x278~0x27F | 並行印表機連線埠2 |
0x040~0x05F | 8253/8254A 定時計數器 | 0x2F8~0x2FF | 串列控制器2 |
0x060~0x06F | 8042 鍵盤控制器 | 0x378~0x37F | 並行印表機連線埠1 |
0x070~0x07F | 訪問CMOS RAM/實時時鐘RTC(Real Time Clock)連線埠 | 0x3B0~0x3BF | 單色MDA顯示控制器 |
0x080~0x09F | DMA頁面暫存器訪問連線埠 | 0x3C0~0x3CF | 彩色CGA顯示控制器 |
0x0A0~0x0BF | 8259A 可程式中斷控制器2 | 0x3D0~0x3DF | 彩色EGA/VGA顯示控制器 |
0x0C0~0x0DF | 8237A DMA控制器2 | 0x3F0~0x3F7 | 軟碟控制器 |
0x0F0~0x0FF | 協處理器訪問連線埠 | 0x3F8~0x3FF | 串列控制器1 |
0x170~0x177 | IDE硬碟控制器1 |
[root@plinux root]# cat /proc/ioports 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial(auto) 0376-0376 : ide1 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial(auto) 0500-051f : PCI device 8086:24d3 (Intel Corp.) 0cf8-0cff : PCI conf1 da00-daff : VIA Technologies, Inc. VT6102 [Rhine-II] da00-daff : via-rhine e000-e01f : PCI device 8086:24d4 (Intel Corp.) e000-e01f : usb-uhci e100-e11f : PCI device 8086:24d7 (Intel Corp.) e100-e11f : usb-uhci e200-e21f : PCI device 8086:24de (Intel Corp.) e200-e21f : usb-uhci e300-e31f : PCI device 8086:24d2 (Intel Corp.) e300-e31f : usb-uhci f000-f00f : PCI device 8086:24db (Intel Corp.) f000-f007 : ide0 f008-f00f : ide1 [root@plinux root]# |