PCIe总线协议概述

  1. 时势造英雄
    正所谓,时势造英雄、英雄造时势。
    PCI总线在PC界已然一统江湖多年,应用已然广泛,PCI的总线已蔚然成风。
    然,科技日益发展,需求不断膨胀,经过计算机技术10年的发展,包括摩尔定律的不断验证,PCI总线已渐渐感觉力不从心,成为PC 系统发展的瓶颈了,在显卡和图形处理方面尤为明显。更高速度的技术的出现势在必行。
    这种时候的到来是必然的,早在PCI取代ISA的时候就应该想得到的。对科技生产力的阻碍已经掩盖了您的辉煌。

  2. 新一代总线群雄割据
    新一代的高速总线技术相继出现了。大多数是基于高速串行构架产生的传输标准。
    包括HyperTransport, InfiniBand, RapidIO,ARM架构中的AMBA和StarFabric等等。
    这些均有业界的不同企业支持,背后也都有大量的资金投入标准的研究开发,所以每一标准都声称自己与众不同,独占优势。
    主要的差异在于可扩展性、灵活性与反应时间、单位成本的取舍平衡各不相同。


    ①其中的一个例子是在传输包上增加一个复杂的头信息以支持复杂路由传输(PCI Express不支持这种方式)。
    这样的信息增加降低了接口的有效带宽也使传输更复杂,但是相应创造了新的软件支持此功能。这种架构下需要软件追踪网络拓扑结构的变化以实现系统支持热插拔。InfiniBand和StarFabric标准即能实现这以功能。

    ②另一个例子是缩小信息包以减少反应时间。
    较小的信息包意味着包头占用了包的更大百分比,这样又降低了有效带宽。能实现此功能的标准是RapidIO和HyperTransport。

    ③PCI Express取中庸之道,定位于设计成一种系统互连接口而非一种设备接口或路由网络协议。另外为了针对软件透明,它的设计目标限制了它作为协议,也在某种程度上增加了它的反应时间。

  3. PCIe的出现
    PCIe的出现就是基于这种群雄割据的形势诞生的。
    Intel在2001年的IDF上提出了这个第三代的IO总线技术—PCI Express。当时称为“3GIO”当时PCIe一出现,各大厂商纷纷表示支持,就连Intel的竞争对手amd也表示要将PCIe加入到自己的芯片组中,其他芯片厂商(如ATI、Nvidia、VIA)也想将自己的技术加入到PCIe协议中去。可想而知,PCIe很明显成为取代PCI总线的新一代总线技术。


    PCIe总线标准比PCI总线的优势:

    ① PCIe总线使用两对数据线实现传输,TxRx。所有总线简化了很多,响应的设计成本会降低。
    ② 两个设备之间点对点串行互联,不同于PCI的共享一条总线资源,PCIe采用点对点技术,每个设备独享通道带宽,可以提高数据传输率。
    ③ 采用双通道传输,类似于全双工模式。
    ④ 支持热插拔,hotplug,这点让用户使用起来更方便。
    ⑤ 智能电源管理,支持低功耗。支持ACPI。
    ⑥ 软件对PCI架构的兼容,使用PCI那套软件方式即可配饰PCIe设备。
    ⑦ 测试方式简单化,通过简单连接即可测试设备。

  4. PCIe的拓扑结构
    PCIe总线的架构可以形象化为:多组点对点相互连接的组件。
    下图可以看出,大概有这些组成:Root Complex(RC),多个Endpoint(PCIe设备),Switch和PCIe-PCI bridge。
    各个成员之间总线即为PCI Express。
    PCIe总线协议概述_第1张图片

  5. PCIe总线协议的层次结构
    有点类似于网络的七层协议了,不过PCIe架构简单一些:
    PCIe总线协议概述_第2张图片
    ①物理层(PhysicalLayer):使用两个单向的低电压差分信号实现数据传输。也承担8b/10b的数据解码。

    ②数据链路层(DataLink Layer):对该层传输的TLPs进行组装和分拆。为上下两层服务。

    ③ 传输层(TransactionLayer):接受从软件方面送来的请求,并生成请求包传输到数据链路层。同时接受从数据链路层来的数据包,传递给软件。也就是对TLPs进行分装和组装。


    PCIe在软件层上是和PCI兼容的,使用PCI的访问方式可以去配置PCIe总线。
    PCIe device一般都有BusNO/DeviceNO/Function.通常DeviceNO为0.

    同时,另外提供了一种memory映射来访问PCIe device的方式—PCIe enhance configuration mechanism。
    一共会占用256Mbyte的空间。这个后续再说。


    随着PCIe总线的应用和发展,已经陆续出来了几代版本,最主要还是在速率上有提升。
    区别如下:
    PCIe总线协议概述_第3张图片
    本文学习: https://blog.csdn.net/pankul/article/details/8642030

你可能感兴趣的:(Linux内核)