接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(5)
PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备。这些PCI设备通过对一系列信号与PCI总线相连,这些信号由地址/数字信号、控制信号、仲裁信号、中断信号等多种信号组成。
PCI总线是一条同步总线,每一个设备都有一个CLK信号,其发送设备与接收设备使用这个CLK信号进行同步数据传递。PCI总线可以使用33MHz或66MHz的时钟频率,PCI-X总线可以使用133MHz、266MHz或者533MHz的时钟频率(如上一回中的表格所示)。
除了RST#、INTA~D#、PME#和CLKRUN#等信号之外,PCI设备使用的绝大多数信号都使用这个CLK信号进行同步。其中,RST#是复位信号,而PCI设备使用INTA~D#信号进行中断请求。本书并不详细介绍PME#和CLKRUN#信号。
1.2.1 地址和数据信号
在PCI地址总线中,与地址和数据有关的信号如下所示:
(1)AD[31:0]信号
PCI总线复用地址和数据信号。PCI总线事务在启动后的第一个时钟周期传送地址,这个地址是PCI总线域的存储器地址或者I/O地址;而在下一个时钟周期传送数据(双地址周期在第一、二个时钟周期都传送地址)。传送地址的时钟周期也被称为地址周期,而传送数据的时钟周期也被称为数据周期。
(2)PAR信号
PCI总线使用奇偶校验机制,保证地址和数据信号在进行数据传递时的正确性。PAR信号是AD[31:0]和C/BE[3:0]的奇偶校验信号。PCI主设备在地址周期和数据周期中,使用该信号为地址和数据信号线提供奇偶校验位。
(3)C/BE[3:0]#信号
PCI总线复用命令与字节选通引脚。在地址周期中,C/BE[3:0]#信号表示PCI总线的命令;而在数据周期中,C/BE[3:0]#引脚输出字节选通信号,其中,C/BE3#、C/BE2#、C/BE1#、C/BE0#分别与数据的字节3、2、1、0对应。使用这组信号可以对PCI设备进行单个字节、字和双字访问。PCI总线通过C/BE[3:0]#信号定义了多个总线事务,这些PCI总线事务如下表所示:
C/BE[3:0]# | 命令类型 | 说明 |
---|---|---|
0000 | Interrupt Acknowledge | 中断响应总线事务读取当前挂接在PCI总线上的中断控制器的中断向量信号。目前大多数处理器系统的中断控制器都不挂接在PCI总线上,因此这种总线事务很少使用 |
0001 | Special Cycle | HOST主桥可以使用Special Cycle事务在PCI总线上进行信息广播 |
0010 | I/O Read | HOST主桥可以使用该总线事务对PCI设备的I/O地址空间进行读操作。目前多数PCI设备都不支持I/O地址空间,而仅支持存储器地址空间,但是仍有部分PCI设备同时包含I/O空间和存储器地址空间 |
0011 | I/O Write | HOST主桥可以使用该总线事务对PCI总线的I/O地址进行写操作 |
0100 | Reserved | 保留 |
0101 | Reserved | 保留 |
0110 | Memory Read | HOST主桥可以使用该总线事务对PCI设备的存储器地址空间进行读操作。PCI设备也可以使用该总线事务读取处理器的存储空间 |
0111 | Memory Write | HOST主桥可以使用该总线事务对PCI设备的存储器地址空间进行写操作。PCI设备也可以使用该总线事务向处理器的存储空间进行写操作 |
1000 | Reserved | 保留 |
1001 | Reserved | 保留 |
1010 | Configuration Read | HOST主桥可以对PCI设备的配置空间进行读操作。每一个PCI设备都有独立的配置空间。在许多PCI设备中,每一个子设备(Function)也有一个独立的配置空间。该总线事务只能由HOST主桥发出去,PCI桥可以转发该总线事务 |
1011 | Configuration Write | HOST主桥可以对PCI设备的配置空间进行写操作 |
1100 | Memory Read Multiple | HOST主桥可以使用该总线事务对PCI设备的存储器空间进行多行读操作,这种操作并不多见。该总线事务的主要用途是供PCI设备使用,读取主存储器。此操作与Memory Read操作略有不同 |
1101 | Dual Address Cycle | PCI总线支持64位地址,处理器或者其它PCI设备访问64位PCI总线时,必须使用双地址周期产生64位的PCI总线地址。PCI设备使用DMA读写方式访问64位的存储器地址时,也可以使用该总线事务 |
1110 | Memory Read Line | HOST主桥可以使用该总线事务对PCI设备的存储器空间进行单行读操作,这种操作并不多见。该总线事务的主要用途是供PCI设备使用,读取主存储器 |
1111 | Memory Write and Invalidate | 存储器写并无效操作。与存储器写不同,PCI设备可以使用该总线事务对主存储器空间进行写操作。该总线事务将数据写入主存储器的同时,将对应Cache行中的数据“使无效” |
更多内容请看下回。