PCIe初探(1/n)

写在正文之前:

  疫情高发,2020的春节,希望大家都能平安度过,武汉加油,祖国加油!

正文:

  PCIe一直以来都是在我心头挥之不去的一片荆棘,不管是主流的X86架构,ARM架构,还是新兴的AI芯片,无一不把PCIe总线接口作为重要的互联接口。而在过去的工作中,芯片架构,总线拓扑,带宽计算,也都躲不开PCIe相关的研究。所以,最近抽出时间学习了PCIe总线架构和相关知识,在此总结(已经在公司内部做了分享),希望与各位交流共勉。

第一节:PCIe概述

  为了直观的给大家一个认识,首先抛出了这张Intel服务器的架构图,可以清晰的看到PCIe接口所处位置和主要连接对象。图中有很多专业名词,有兴趣可以查一下,对于长期从事服务器芯片开发的技术人员,应该比较熟悉了。

   下面这张图片是高通/华芯通公司ARM 48核服务器的芯片架构,虽然华芯通已经不复存在,但是仍然留下了宝贵的学习资料.

   

  通过上面两张图片,可以看到PCIe接口在芯片上的位置核结构,接下来会对PCIe做基本的介绍:

  Peripheral Component Interconnect Express:
    高性能高带宽的串行互联标准
    与PCI总线保持软件兼容
    串行差分双工信号线
    点到点互连
    lane的概念:一组RX(2条差分线)与一组TX(2条差分线)
    link的概念:若干lane组成的一条逻辑通道,有x1, x2, x4, x8, x16

那么什么是差分信号呢?

  一个差分信号由D+和D-两根信号组成,信号接收端通过比较这两个信号的差值,判断发送端发送的是1还是0

  差分信号在布线时要求”等长”、”等宽”、”贴近”,而且在同层,所以外部干扰噪声将被”同值”而且”同时”加载到D+和D-两根信号上,其差值在理想情况下为0,对信号的逻辑值产生的影响较小,   所以差分信号可以使用更高的总线频率

  差分信号可有效抑制电磁干扰(EMI, Electro Magnetic Interference)

 我们在讨论芯片的架构时,经常会考量一个重要的PCIe指标,就是他的带宽:

 计算方法:

  PCIe3 .0 协议支持 8.0 GT/s, 即每一条Lane 上支持每秒钟内传输 8G个Bit。

  而PCIe 3.0 的物理层协议中使用的是 128b/130b 的编码方案。 即每传输128个Bit,需要发送130个Bit。

  那么, PCIe 3.0协议的每一条Lane支持 8 * 128 / 130 = 7.877 Gbps = 984.6 MB/s 的速率。

 PCIe的基本拓扑结构:

如下图,PCIe具有主要的一些组件,组成了整体的拓扑结构.

第二节:PCIe分层结构

PCIe是层次化的协议结构:

事务层:

  发送端TLP创建;接收端TLP解码、校验;QoS、Flow Control、Ordering

数据链路层: 

  DLLP的创建、解码、校验;Ack/nak应答机制

物理层:
  Ordered-Set packet创建/解码
  发送/接收所有Packet
  128b/130b编码,扰码
  链路训练和初始化

 

 接下来会介绍三个层次各自的功能:

1. 事务传输层:  

  事务传输层产生发出的和接收的事务传输层数据包(TLP)
  TLP包括一个报头(Header)、一个可选数据配载(Payload)以及一个可选的端到端CRC(ECRC).
  TLP可以是请求(Request),也可以是对请求的响应(Response),永远是4byte的倍数
  Header指定事务类型、优先级、地址,路由规则及其他数据包特征。
  发送事务传输层构建数据包Header、添加ECRC并门控Payload的传输
  接收事务传输层检查TLP格式和Header,检查ECRC

  

 

 这里给出一个memory Read/Memory Write传输的例子:

 对于事务层的传输包,具有一个包头(Header):

  Fmt[2:0]: Format of TLP, bits 7:5 of byte 0
  Type[4:0]: Type of TLP – bits 4:0 of byte 0. Mrd/Mwr/IORd/IOWr/Msg/…
  TC[2:0]: Traffic Class – bits 6:4 of byte 1
  LN: Indicates a Memory Request is an LN Read/Write, or LN completion.
  TH: The presences of TLP Processing Hints
  Attr[2:0]: Attribute,ordering type of IDO/Relaxed
  TD: Presence of TLP digest in the form of a single DW

  EP – Indicates the TLP is Poisoned
  Length[9:0] – Length of data payload in DW
  TLP data must be 4-byte aligned
   for TLPs that do not contain or refer to data payloads, including Cpl, CplLk and Messages.

事务层的优先级控制:

  QoS: 传输类别和虚拟通道
  传输分类: TC(Traffic class)
    数据包被支配一个优先级
    灵活的仲裁机制(任意、循环、加权轮询)
    如在PC中,给视频流最高优先级保证足够带宽
  通道虚拟化: VC(Virtual Channel)
    允许多个独立的数据流复用同一条线路。虚拟通道拥有自己的缓冲资源
    本质是一个缓冲Buffer

TLP的路由:

  三种路由方法:
    基于地址的路由. - Address Routing
    基于ID的路由 - ID-Based Routing
    隐式路由(Implicit). - Implicit Routing

 

 流量控制:

  从数据传输的角度看,网络中具有两类资源:
    数据通路
    数据缓冲

 

目的:
  用于报文发送方与接收方之间的流量控制
  发送方必须有足够的信用,才能发送报文
  每次发送将消耗信用,接收方接收后,通过流控报文释放信用
  每个虚通道要实现一套流控机制
    包含Posted、Non-Posted和Completion 3类,每类又分报文头和负载

VC: 缓存到缓存之间的传递通路
  VC和VC之间的数据传递,都需要实际的物理链路,所以称为“虚通路”
  相同类型的报文一般使用同一个VC进行数据传输
  PCIe中,一个TC只能对应一个VC

Credit-Based流量控制算法
  N123
  N123+
  N23

数据链路层的内容放在下一节.

猜你喜欢

转载自www.cnblogs.com/IC-Chenxinmin/p/12242766.html
今日推荐