PCIe总线的层次组成结构与网络中的层次结构有类似之处,PCIe总线的各个层次都是使用硬件逻辑实现的。在PCIe体系结构中,数据报文在设备的核心层(DeviceCore)中产生,再经过该设备的事务层(TransactionLayer)、数据链路层(DataLink Layer)和物理层(PhysicalLayer),终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并终到达Device Core。
在PCIe总线层次结构中,事务层易理解,也与系统软件直接相关。
事务层定义了PCIe总线使用总线事务,其中多数总线事务与PCI总线兼容。这些总线事务可以通过Switch等设备传送到其他PCIe设备或者RC,RC也可以使用这些总线事务访问PCIe设备。事务层接收来自PCIe设备核心层的数据,并将其封装为TLP(TransactionLayerPacket)后,发向数据链路层。事务层还可以从数据链路层中接收数据报文,转发至PCIe设备的核心层。事务层还使用流量控制机制保证PCIe链路的使用效率。
总线信号
在一个处理器系统中,一般提供×16的PCIe插槽,并使用PETp0~15、PETn0~15和PERp0~15、PERn0~15共64根信号线组成32对差分信号,其中16对PETxx信号用于发送链路,16对PERxx信号用于接收链路。PCIe总线还使用了下列辅助信号。
1 PERST#信号
该信号为全局复位信号,由处理器系统提供,处理器系统需要为PCIe插槽和PCIe设备提供该复位信号。PCIe设备使用该信号复位内部逻辑,当该信号有效时,PCIe设备将进行复位操作。PCIe总线定义了多种复位方式,其中ColdReset和Warm Reset这两种复位方式的实现与该信号有关。
2 REFCLK+和REFCLK-信号
PCIe设备与PCIe插槽都具有REFCLK+和REFCLK-信号,其中PCIe插槽使用这组信号与处理器系统同步。
当PCIe设备作为Add-In卡连接在PCIe插槽时,可以直接使用PCIe插槽提供的REFCLK+和REFCLK-信号,也可以使用独立的参考时钟,只要这个参考时钟在100MHz±300ppm范围内即可。在PCIe设备配置空间的LinkControl Register中,含有一个“CommonClockConfiguration”位。当该位为1时,表示该设备与PCIe链路的对端设备使用“同相位”的参考时钟;如果为0,表示该设备与PCIe链路的对端设备使用的参考时钟是异步的。如果主机系统使用用了扩谱时钟,那么使用这个参考时钟信号,不要使用自己的晶振产生时钟。