文章目录
- Overivew
- Lane 和 Link
- RC 和 RP
- PCIe controller
- PCIE Controller
- PHY模块
- Inbound 和 Outbound
- PCIe transaction model
- PIO
- DMA
- P2P
Overivew
PCIe,即PCI-Express总线(Peripheral Component Interconnect Express),是一种高速串行总线。
PCIe最早由英特尔在2001年提出,旨在替代旧的PCI/PCI-X和AGP总线标准。但是,PCIe在软件层面上是兼容PCI的。
PCIe使用双向连接的方式,可以在同一时间进行收发操作。这种模型称为双单工连接,因为每个接口都有一个单工发送和单工接收的路径,如下图所示。因为数据流可以同时双向传输,因此两个设备间的通信是全双工的。
Lane 和 Link
PCIe 的一条 lane由 两对差分线(TX和RX)组成,一个 link由多条 lane组成。PCIe的 link 宽度支持x1, x2, x4, x8, x12, x16, x32。
RC 和 RP
Root Complex 简称 RC,类似于 PCI 的 host 主桥,对于 RC 没有明确的规范要求,在不同的处理器中有着不同的实现方式,但总体上与PCI一样具备HOST主桥的功能。
例如上图所示,在X86平台下,处理器通过 FSB 链接到了 RC。FSB 是 Front-Side Bus 的缩写,是一种传统的系统总线,它连接了计算机的主要组件,如 CPU、内存和北桥芯片。
上图的 RC由一个 存储器控制器 和两个 PCI桥 组成,这个PCI 桥链接着 Switch。总的来说,RC 是 PCIE 体系结构的一个重要组成部件,是PCIE 树的根,是整个 PCIE 树的控制者。但这个部件具体是什么样子的,可以根据实际需求来定,但唯一可以确定的,必须包含PCIE的总控制器的功能,所以 RC 的总线编号为0,挂在RC下的设备总线编号也都是 0,并依次向下延伸。
一个 RC 可以包括多个 RP(Root Port),例如一个16 条 lane的PCIe RC 可以包括4个RP(4个x4的),或者8个RP(8个x2的)等等。
在 ARM 平台下,CPU 通常是通过 AMBA 总线与RC 进行连接,比如 ARM CPU 可以控制挂载在 CMN-650 的 RC。
PCIe controller
首先,PCIe分为 控制器(controller) 和 PHY两部分,控制器是数字电路,PHY 包含 PCS 和 PMA 两部分,PMA 是模拟电路。
- 控制器主要负责 pcie 协议包处理;
- phy 主要负责数据编码和串行化高速传输。
国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的pcie 3.0才8 Gbps的速率,最新的6.0才64Gbps。整体设计较为复杂,一般可向IP厂商定制设计。’
PCIE Controller
控制器逻辑包含了 IP 的 host 设计,以及 PCIe 协议中所规定的事务层、数据链路层、物理层实现逻辑,通常包含如下模块:
- reset 逻辑:通常会设置复位逻辑,通过总复位控制子复位;
- debug 逻辑:监测IP状态,供设计人员debug用;
- msg 处理逻辑:IP的某些信号由message处理,有CPU内核来处理;
- 子系统配置处理逻辑;
- 错误处理逻辑:查找寄存器,并记录,产生中断;
- MSI 逻辑:对地址,数据通道进行监测;
- 中断逻辑:IP中某些中断可以合并;
PHY模块
PHY 模块用于连接协议层和链路,包含了驱动和锁相环、串转并、并转串等所有与接口操作相关的所有电路。
- PHY控制逻辑:直通PHY模块的寄存器配置和控制;
- DFT:IP中会提供专门用于DFT的引脚。
从PCIe协议来讲,物理层分为逻辑子模块和物理子模块。其中:
逻辑子模块又分为媒介访问层(MAC)和物理编码子层(PCS);PMA层包含串行器/解串器(SerDes)和其他模拟电路;
- PCIE Serdes
SerDes(Serializer-Deserializer)是串行器和解串器的简称,串行器(Serializer)也称为SerDes发送端(Tx),(Deserializer)也称为接收端Rx。SerDes 的主要构成可以分为三部分,PLL模块,发送模块Tx,接收模块Rx。
Inbound 和 Outbound
PCIe的inbound和outbound是对CPU而言的,outbound指从CPU到设备方向,inbound指从设备到CPU方向。
PCIe transaction model
PCIe有三种transaction model,分别是PIO、DMA和P2P。
PIO
PIO即Programmed I/O,可编程输入输出。在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。
DMA
DMA即Direct Memory Access,直接内存访问。在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。
P2P
P2P即Peer-to-Peer,是指一个endpoint发送packet给另一个endpoint。P2P路由在Switch中是必需的,但对于RC来说是可选的。
推荐阅读:
https://mp.weixin.qq.com/s/1bGESIN3q8ZcqqGRiRVgvg
https://www.zhihu.com/question/525350571/answer/2598101335
https://blog.csdn.net/qq_39815222/article/details/128728334