PCI总线

注:本博客内容主要摘自<PCI Express 体系结构导读>

一、PCI总线作用

  PCI总线是PC机广泛使用的外围高速总线接口,显卡、网卡、声卡等高速设备都通过PCI总线接到CPU。

二、PCI总线组成

  PCI总线结构如下所示:

 PCI总线

PCI总线有HOST主桥或PCI桥管理,用来连接各类PCI设备,如网卡、声卡等。

2.1 HOST主桥

  HOST主桥主要功能是隔离存储器域PCI总线域,管理PCI总线,完成处理器与PCI设备的数据交换。在x86架构中,HOST主桥集成在x86架构的北桥中。x86架构采用南北桥结构,北桥集成了AGP控制器可以接显卡,集成了ddr控制器可以接内存条,集成了PCI总线控制器(HOST主桥)可以接PCI设备。北桥主要接一些低速设备,如USB、LAN、ATA等。如下所示:

PCI总线

而在soc架构中,HOST主桥则集成在soc中,soc中包含有PCI总线控制器,这个控制器就可以认为是HOST主桥。下图是freescale的PowerPC处理器,采用soc架构,如下所示:

PCI总线

2.2 PCI设备

  PCI总线有三种类型设备,分别是PCI主设备、PCI从设备、PCI桥设备。PCI从设备只能被动接受来自主桥和其它PCI从设备的读写请求,而PIC主设备可以通过总线仲裁获得总线使用权。PCI设备即可作为主设备也可作为从设备,在PCI总线中统称为PCI Agent,如声卡、网卡都输入PCI Agent。PCI桥设备是特殊的PCI设备,用来扩展PCI总线,PCI桥存在使得系统大规模互联称为可能。

 三、PCI总线配置

 3.1 存储器域与PCI总线域

  HOST主桥的主要作用就是隔离存储器域和PCI总线域,实现存储器域和PIC总线域相互转换。存储器域指的是cpu能直接访问到的空间,在x86架构中南桥和北桥都能被cpu直接访问,都是属于存储器。在soc架构中,ddr控制器,pci控制器、usb控制器等这些外围设备也能被cpu直接访问,也属于存储器域。PIC总线域只有PCI Agent、PCI桥和HOST主桥能直接访问,cpu要想访问PCI总线域需要通过HOST主桥完成存储器域到PCI域的地址转换,PCI设备要想访问存储器域也要通过HOST主桥将PCI域地址转成存储器域地址。

   PCI总线

3.2 PCI Agent 和PCI桥的配置空间

  在系统上的初始化时,cpu会通过HOST主桥去配置PCI Agent和PCI桥的配置寄存器,PCI 设备的配置寄存器的初始值通常存储在PCI设备的E2PROM中,PCI设备上的后会自动加载E2PROM中的信息去配置好相关寄存器。

  PCI Agent的配置寄存器如下所示:

  PCI总线

(1)Device ID(r)和Vendor ID(r):其值有PCISIG组织分配。Vendor ID代表PCI设备的厂商,Device ID代表这个厂商生产具体设备的标号

(2)Revision ID(r):表示PCI设备版本号

(3)Class ID(r):用于将PIC设备分类,有三个字段组成,分别为Base Class Code、Sub Class Code、Inerface。Base Class Code代表设备类型,如显卡、网卡、PCI桥等。Sub Class Code则对这些设备进行进一步细分。Inerface表示编程接口。如一个正“正向译码”的桥设备Class ID这三个字段分别为0x06、0x04、0x01。

(4)Command (rw)寄存器:该寄存器是PCI设备的命令寄存器

(5)Status(rw)寄存器:该寄存器是PCI设备的状态寄存器

(6)Header Type(r)寄存器:第7位为1表示PCI设备是多功能设备,为0表示单功能设备。0~6位为配置空间类型,0表示PCI Agent配置空间,1表示PCI 桥配置空间。软件系统用该寄存器区分不同配置空间。

(7)Base Address(rw)寄存器:PCI设备在PCI总线域的基地址寄存,处理器在访问PCI设备时需要通过“Base Address+偏移地址访问”。这个寄存器值是有处理器在初始化PCI总线时分配给PCI设备的。

注:其它寄存说明可参考<PCI Express 体系结构导读>

 

 

 

 

上一篇:如何在Windows 10上安装.Appx或.AppxBundle软件


下一篇:【BA4988】SysGetKey函数