日期:2014-05-16 浏览次数:20778 次
软件是一种控制硬件操作和动作的指令流。
其中CPU通过地址线,数据线,和控制信号线组成的内部总线与系统其他部分进行数据通信。地址线用于提供内存或者I/O设备的地址,即指明需要读写的数据的具体位置。数据线用于在CPU和内存的I/O设备之间提供数据传输的通道,而控制线则负责指挥执行的具体读写操作
除了CPU以外,现代计算机PC主板主要由两个超大规模芯片构成的芯片组(chipsets):北桥(Northbrige)和南桥(Southbrige)芯片。北桥芯片用于与CPU,内存,和AGP视频接口,这些接口传输的速度快,北桥起着储存控制器的控制作用,于是Intel把该芯片标号为MCH(memory control chip)。南桥用来管理低中速芯片,被称为ICH(IO control hub)
端口地址的设置一般有两种方法:统一编址和独立遍址
端口统一编址的原理就是把IO控制器的端口地址归入储存器寻址地址空间范围内。因此这种编址方式也被称作储存器映像编址。
我的Ubuntu里面查看/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+ 03f2-03f2 : floppy 03f4-03f5 : floppy 03f6-03f6 : 0000:00:07.1 03f6-03f6 : ata_piix 03f7-03f7 : floppy 03f8-03ff : serial 0cf0-0cf1 : pnp 00:00 0cf8-0cff : PCI conf1 0d00-feff : PCI Bus 0000:00 1000-103f : 0000:00:07.3 1000-103f : pnp 00:00 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:00 1060-107f : pnp 00:0c 1080-10bf : 0000:00:07.7 10c0-10cf : 0000:00:07.1 10c0-10cf : ata_piix 10d0-10df : 0000:00:0f.0 10d0-10df : vmwgfx probe 1400-14ff : 0000:00:10.0 2000-3fff : PCI Bus 0000:02 2000-203f : 0000:02:01.0 2000-203f : e1000 2040-207f : 0000:02:02.0 2040-207f : Ensoniq AudioPCI 2080-209f : 0000:02:00.0 2080-209f : uhci_hcd 4000-4fff : PCI Bus 0000:03 5000-5fff : PCI Bus 0000:0b 6000-6fff : PCI Bus 0000:13 7000-7