標籤: 暫無標籤

定址空間一般指的是CPU對於內存定址的能力。通俗地說,就是能最多用到多少內存的一個問題。數據在存儲器(RAM)中存放是有規律的 ,CPU在運算的時候需要把數據提取出來就需要知道數據在那裡 ,這時候就需要挨家挨戶的找,這就叫做定址,但如果地址太多超出了CPU的能力範圍,CPU就無法找到數據了。 CPU最大能查找多大範圍的地址叫做定址能力 ,CPU的定址能力以位元組為單位 ,如32位定址的CPU可以定址2的32次方大小的地址也就是4G,這也是為什麼32位的CPU最大能搭配4G內存的原因 ,再多的話CPU就找不到了。

1簡介

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範圍。因此若要讓一個字元顯示在屏幕上,可以直接使用內存操作指令往這個內存區域執行寫操作。

2埠地址分配

埠地址範圍
分配說明
埠地址範圍
分配說明
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
對於使用EISA或PCI等匯流排結構的現代PC,有64KB的I/O地址空間可供使用。在普通Linux系統下通過查看/proc/ioports文件可以得到相關控制器或設置使用的I/O地址範圍:
[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]#

相關評論

同義詞:暫無同義詞