日期:2014-05-16  浏览次数:20778 次

《linux 内核完全剖析》 chapter 2 微型计算机组成结构

微型计算机组成结构

系统的基本组成:




            软件是一种控制硬件操作和动作的指令流。


2.1 微型计算机的组成原理




    其中CPU通过地址线,数据线,和控制信号线组成的内部总线与系统其他部分进行数据通信。地址线用于提供内存或者I/O设备的地址,即指明需要读写的数据的具体位置。数据线用于在CPU和内存的I/O设备之间提供数据传输的通道,而控制线则负责指挥执行的具体读写操作




          除了CPU以外,现代计算机PC主板主要由两个超大规模芯片构成的芯片组(chipsets):北桥(Northbrige)和南桥(Southbrige)芯片。北桥芯片用于与CPU,内存,和AGP视频接口,这些接口传输的速度快,北桥起着储存控制器的控制作用,于是Intel把该芯片标号为MCH(memory control chip)。南桥用来管理低中速芯片,被称为ICH(IO control hub)





2.2 I/O端口寻址和控制方式

2.2.1 I/O端口和寻址


          端口地址的设置一般有两种方法:统一编址和独立遍址


          端口统一编址的原理就是把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