传统PC机I/O位址空间范围

空间范围是0x000--0x3FF,有1024个I/O端口位址可供使用!

       使用EISA或PCI等汇流排结构的现代PC机,有64KB的I/O位址空间可供使用。在普通Linux系统下透过查看/proc/ioports(对应的I/O口),可以得到相关控制器或设置使用的I/O位址范围!

/proc/ioports

0000-0cf7 : PCI Bus 0000:00
  0000-001f : dma1
  0020-0021 : pic1
  0040-0043 : timer0
  0050-0053 : timer1
  0060-0060 : keyboard
  0064-0064 : keyboard
  0070-0071 : rtc0
  0080-008f : dma page reg
  00a0-00a1 : pic2
  00c0-00df : dma2
  00f0-00ff : fpu
  0170-0177 : 0000:00:07.1
    0170-0177 : ata_piix
  01f0-01f7 : 0000:00:07.1
    01f0-01f7 : ata_piix
  02f8-02ff : serial
  0376-0376 : 0000:00:07.1
    0376-0376 : ata_piix
  0378-037a : parport0
  03c0-03df : vga+
  03f6-03f6 : 0000:00:07.1
    03f6-03f6 : ata_piix
  03f8-03ff : serial
  0cf0-0cf1 : pnp 00:01
0cf8-0cff : PCI conf1
0d00-feff : PCI Bus 0000:00
  1000-103f : 0000:00:07.3
    1000-103f : pnp 00:01
      1000-1003 : ACPI PM1a_EVT_BLK
      1004-1005 : ACPI PM1a_CNT_BLK
      1008-100b : ACPI PM_TMR
      100c-100f : ACPI GPE0_BLK
      1010-1015 : ACPI CPU throttle
  1040-104f : 0000:00:07.3
    1040-104f : pnp 00:01
  1060-106f : 0000:00:07.1
    1060-106f : ata_piix
  1070-107f : 0000:00:0f.0
  1080-10bf : 0000:00:07.7
  1400-14ff : 0000:00:10.0
  2000-3fff : PCI Bus 0000:02
    2000-207f : 0000:02:01.0
      2000-201f : pcnet32_probe_pci
    2080-20bf : 0000:02:02.0
      2080-20bf : Ensoniq AudioPCI
    20c0-20df : 0000:02:00.0
      20c0-20df : uhci_hcd
  4000-4fff : PCI Bus 0000:03
  5000-5fff : PCI Bus 0000:0b
  6000-6fff : PCI Bus 0000:13
  7000-7fff : PCI Bus 0000:1b
  8000-8fff : PCI Bus 0000:04
  9000-9fff : PCI Bus 0000:0c
  a000-afff : PCI Bus 0000:14
  b000-bfff : PCI Bus 0000:1c
  c000-cfff : PCI Bus 0000:05
  d000-dfff : PCI Bus 0000:0d
  e000-efff : PCI Bus 0000:15
  fce0-fcff : pnp 00:0d

      8086的IO是独立编址的。
      PC机一般对外围设备采用单独编址方式,为接口中有关寄存器分配一种I/O端口地址,用I/O指令按端口地址访问接口,从而实现访问I/O设备。
       I/O端口编址和存储器的编址相互独立,即I/0端口地址空间和存储器地址空间分开设置,互不影响。采用这种编址方式,对I/O端口的操作使用输入/输出指令(I/O指令

--------------------- 

一、IO端口和IO内存的区分及联系

      这两者如何区分就涉及到硬件知识,X86体系中,具有两个地址空间:IO空间和内存空间,而RISC指令系统的CPU(如ARM、PowerPC等)通常只实现一个物理地址空间,即内存空间。

  内存空间:内存地址寻址范围,32位操作系统内存空间为2的32次幂,即4G。

  IO空间:X86特有的一个空间,与内存空间彼此独立的地址空间,32位X86有64K的IO空间。

  IO端口:当寄存器或内存位于IO空间时,称为IO端口。

  IO内存:当寄存器或内存位于内存空间时,称为IO内存。
--------------------- 
原文:https://blog.csdn.net/baidu_37973494/article/details/82390383 
 

posted @ 2019-07-15 01:32  jadeshu  阅读(843)  评论(0编辑  收藏  举报