PCIExpress是目前PC芯片集及嵌入式处理器的普遍互连标准。尽管之前的PCI标准由PCIe所取代,但FPGA和I/O设备仍使用PCI。当前基于PCI的设计均采用未集成PCIe接口的组件,因此若要升级系统,需使用PCIe桥接器。例如,PCIe桥接器将用于采用I/O设备的嵌入式视频录音机,通过PCI连接至具有PCIe端口的嵌入式处理器。在系统中添加桥接器将会带来一定的设计难题,本文旨在研究通常受引入桥接器影响的PCI读取性能问题,以及相应的解决方法。
PCI Express 是目前 PC 芯片集及嵌入式处理器的普遍互连标准。尽管之前的PCI标准由PCIe所取代,但 FPGA 和I/O设备仍使用 PCI。当前基于 PCI 的设计均采用未集成 PCIe 接口的组件,因此若要升级系统,需使用 PCIe 桥接器。例如,PCIe桥接器将用于采用I/O设备的嵌入式视频录音机,通过PCI连接至具有PCIe 端口的嵌入式处理器。
在系统中添加桥接器将会带来一定的设计难题,本文旨在研究通常受引入桥接器影响的 PCI 读取性能问题,以及相应的解决方法。
引入桥接器带来的性能挑战
PCI 总线上的设备主要依赖有关系统从主机处理器读取大量的数据。PCI I/O 设备通常控制系统中的数据移动,并将读写循环传入主机内存。例如,主机处理器可通过写入外围设备上的寄存器设置外围设备中的 DMA,即可设置和配合数据移动,但为了专注于其他任务,处理器会将自身从数据移动中删除。然后,外围设备将读取或写入数据以服务 DMA。在其他时间,处理器可读取状态信息并写入寄存器以进行控制。通常,此通信量不会涉及高带宽,且不会对系统整体性能带来重大影响。
对于安全数字视频录像机(DVR)等嵌入式处理系统,将捕获并压缩视频数据,通过磁盘控制器写入磁盘存储器,且磁盘控制器通过 PCI 总线读取主机内存中的数据即可实现上述结果。
从 PCI 外围设备写入桥接器通常传送至内部写入缓冲器,以解决桥接器带来的内在性能影响。然而,PCIe 桥产品需要重试外围设备,直至它从主机内存中获得所需的数据。这通常意味着试图读取许多小型 PCIe 数据包,从而增加时延。通过使用分割式传输方式,PCI-X 协议可避免此问题,但传统的 PCI 协议并不具备此特点。此外,一些 PCI 设备在收到一条或两条数据缓冲行后就自动释放总线,这将成为 PCI 读取的性能挑战。
例如,在使用嵌入式 DVR 的普通情况下(图1),系统需要将持续的压缩视频数据流写入磁盘,以便存储及随后检索或分析。在此系统中,一个或多个磁盘控制器(SATA 控制器)将读取系统主内存中的视频数据,以存储在相关磁盘阵列。上述系统还可以令以太网控制器等其他外部设备共享 PCI 总线。