PCI Express解析——系列文章【2】:PCIe原理分析之——PCI Express线路基础

PCI Express解析——系列文章【2】:PCIe原理分析之——PCI Express线路基础

  • 前文我们了解了一些概述的基本PCIe总线的简单知识点,下面本文从一些基本原理做一些分析
  • 2 PCIe原理分析
    • 2.1 PCI Express线路基础
      • (1) 链路——点对点互连
      • (2) 差动信号
      • (3) 用来互连多台设备的交换器
      • (4)基于数据包的协议
      • (5)带宽和定时
      • (6)地址空间
      • (7)PCIe事务及其类型
      • (8)错误处理和数据传输健壮性
      • (9)流类别(TC)和虚拟通道(VC)
      • (10)MSI中断
      • (11)电源管理、软件兼容模型等

Author: Nirvana Of Phoenixl
Proverbs for you:There is no doubt that good things will always come, and when it comes late, it can be a surprise.

前文我们了解了一些概述的基本PCIe总线的简单知识点,下面本文从一些基本原理做一些分析

PCI Express解析——系列文章【1】:基本概述PCI、PCI-X与PCIe的最大区别

PCI Express解析——系列文章【3】:PCIe原理分析之——PCI Express拓扑结构

PCI Express解析——系列文章【4】:PCIe原理分析之——PCI Express系统模块、PCIe体系结构

PCI Express解析——系列文章【5】:PCIe原理分析之——PCI Express 配置解析(BDF、BAR)、 MEM Read举例

2 PCIe原理分析

2.1 PCI Express线路基础

  PCIe为互联的设备提供高速、高性能、点对点、双-单工、差动信号链路。数据从一组信号线上发送,而在另一组信号上接收。下面从一些比较重要的概念入手,以便理解PCIe链路。

(1) 链路——点对点互连

  PCIe互连有x1、x2、x4、x8、x16、x32的点对点链路,其链路是两台设备之间的物理连接。两个方向上的通道由信号对组成,一条x1链路称为一个通道,即每个方向上有一对差动信号,共计4个信号。如若为x32则有128个信号。如图2.1所示点对点链路

PCI Express解析——系列文章【2】:PCIe原理分析之——PCI Express线路基础_第1张图片
                图2.1 PCIe链路

(2) 差动信号

  PCIe设备的各个端口使用差动驱动器和接收器。与绝大部分的高速连接一样,PCIe采用了差分对进行收发,以提高总线的性能。如图2.2所示
PCI Express解析——系列文章【2】:PCIe原理分析之——PCI Express线路基础_第2张图片

(3) 用来互连多台设备的交换器

  应在要求互连多台设备的系统中实现交换器。交换器可以是2端口到n端口的设备,其每个端口连接一条PCIe链路,规范没有规定交换器能够实现的最大端口数。交换器可能集成在根联合体(Root Complex)设备(等同于PCI中的主桥或者北桥),从而得到一个多端口的根联合体。

(4)基于数据包的协议

  PCIe基于数据包的协议形式编码事物实现数据传输(PCI/PCI-X是以体系结构的总线周期,进行数据包的串行发送和接收):PCIe定义了各种类型的数据包,例如存储器读和写请求、IO读写请求、配置读写请求、消息请求和完成数据包等。通道多,数据发送快、带宽高。

(5)带宽和定时

  PCIe总带宽远大于目前的任何总线。前面谈及PCIe是基于数据的传输形式因此其链路不存在时钟信号。通过链路所发送的每个数据包都由信息字节组成。每一个自己被编码到1 0比特的符号中,且保证所有符号都有0和1的转换。接收器使用PLL从输入比特流的0到1或者1到0转换中恢复时钟。

(6)地址空间

  PCI Express与PCI支持相同的地址空间:存储器地址空间(Memory)、IO地址空间、配置地址空间。这三种空间也是伴随PCIe工作的重要部分。此外,每个设备功能的最大配置地址空间从256字节可扩展到4KB。利用这些新的配置地址空间需要更新的OS、驱动程序和应用程序。

(7)PCIe事务及其类型

  PCIe支持与PCI、PCI-X相同的事物(所谓事务可以理解为如何让其工作),包括存储器读写、IO读写、配置读写。此外PCIe引入一种全新的消息事务,包括后面的中断也可用消息中断实现,利用数据包编码协议实现事务编码。事务可以分为两类:非报告事务(有数据包返回)和报告事务(无数据包返回)。

(8)错误处理和数据传输健壮性

  CRC字段在发送的每个数据包中。(后面有文章会讲一下CRC校验的原理)

(9)流类别(TC)和虚拟通道(VC)

  PCIe数据包含有0~7之间的流量类别(TC)编号,这个编号由设备应用程序或者设备驱动程序分配的,TC不同数据包以不同优先级通过结构,使得性能各不相同。在后面配置空间中会使用。每一流量类别可以单独映射到一个虚拟通道(可将多个TC映射到一个VC,但一个TC不可映射到多个VC)。换句话说就是发送端和接收端口用个数据包中的TC确定数据包存入那个VC。交换器和设备被配置成不同优先级,称为VC仲裁。

(10)MSI中断

  PCIe设备使用存储器写数据包来发送中断矢量给根联合体主桥RC设备,而它接着又中断CPU。需要要求PCIe设备支持能够实现MSI功能的寄存器。当然PCIe还可以使用消息事务来编码中断信号,支持传统中断转换(INTA#、B#、C#、D#)。

(11)电源管理、软件兼容模型等

  各个设备可设置独立电源管理模式。前文谈到PCIe的三类地址空间,每个PCIe功能的配置空间前256字节与前兼容,PCIe体系结构将配置地址空间扩展为每功能设备4KB,利用和访问需要更新OS驱动和设备驱动程序。

PCI Express解析——系列文章【3】:PCIe原理分析之——PCI Express拓扑结构

本文系统整理同时参考部分网络书籍内容:http://blog.chinaaet.com/justlxy/p/5100053251

你可能感兴趣的:(#,PCIe,linux,嵌入式硬件,驱动开发,risc-v)