Rickey 裘 一无所知

PCIe发展与应用

2017-06-28
Kai Qiu

介绍PCIe的基本概念,用途。

一、串行总线

PCIe作为串行总线的一种,它的发展必然和另一种总线架构密不可分:并行总线。

早先,人们普遍认为提高数据位宽就能提高数据传输速率,这是谁都会想到的问题,早期的总线确实是这样设计的。但是随着工作频率的提升,并行数据线的串扰变得越来越严重,而串行总线采用差分对来传输信号,可以很好的抵消串扰。所以现在越来越多的设备,特别是高速设备(譬如usb),都基于差分串行总线设计。

二、PCIe规范与速度

PCIe规范是Intel提出来的总线接口标准,旨在统一I/O接口(当年也是Intel提出USB,旨在统一外设接口,现在最有可能做到这个的是typeC了)。当前接触到版本是4.0,各个版本的频率和速度如下:

2017-06-28 22-46-48屏幕截图.png

图片来源: https://zh.wikipedia.org/wiki/PCI_Express

三、PCIe常见设备

当下基于PCIe接口的设备有很多,上jd一搜看到主要有以下几种:

存储设备有 三星(SAMSUNG) 960 EVO 250G M.2 NVMe 固态硬盘、英特尔(Intel)600P系列 128G M.2 2280接口固态硬盘 .etc

还有PCIe接口的显卡、声卡、网卡。

像上述这些设备,都属于功能设备,在PCIe规范中,我们统称为Endpoint(简称EP)。还有其他两类设备,一个是Root Complex,简称RC,另一个是switch(或者PCI中称为bridge),RC是根设备,通过switch和下游设备(可以是EP也可以是switch)进行桥接,从而各个PCIe设备组成了一个PCIe设备网络,信息就以数据包(TLP、DLLP)的形式在网络中传递。

譬如,当我们买了一个PCIe接口的显卡,插到主板上面的时候,其实是通过switch(或者bridge)和芯片内部的RC连到了一起,CPU能且只能通过RC来和各个PCIe设备进行交互。因为每个PCIe设备都只能看到PCI总线域地址,CPU发出来的地址要经过RC转换成PCI域地址才能真正起作用。至于为什么是这么设计的,我觉得和确保PCIe设备的扩展性有关,只要一个RC就可以扩展最多256级总线,如果这256级总线都通过CPU地址访问,这对地址空间是极大的浪费。也正因为是这样,PCIe设备的枚举也好,tlp传输也好,dma也好,都有其特殊的地方,统统都要考虑地址转换的问题。

关于PCIe设备的基本信息就写到这里吧。

下篇预告:PCIe总线拓扑结构和配置空间


类似的文章

评论