定址空間

定址空間

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

基本介紹

  • 中文名:定址空間
  • 外文名: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
0x1F0~0x1F7
0x020~0x03F
0x278~0x27F
並行印表機連線埠2
0x040~0x05F
8253/8254A 定時計數器
0x2F8~0x2FF
串列控制器2
0x060~0x06F
0x378~0x37F
並行印表機連線埠1
0x070~0x07F
訪問CMOS RAM/實時時鐘RTC(Real Time Clock)連線埠
0x3B0~0x3BF
單色MDA顯示控制器
0x080~0x09F
DMA頁面暫存器訪問連線埠
0x3C0~0x3CF
彩色CGA顯示控制器
0x0A0~0x0BF
0x3D0~0x3DF
彩色EGA/VGA顯示控制器
0x0C0~0x0DF
0x3F0~0x3F7
軟碟控制器
0x0F0~0x0FF
協處理器訪問連線埠
0x3F8~0x3FF
串列控制器1
0x170~0x177
對於使用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]#

相關詞條

熱門詞條

聯絡我們