学习笔记: PCIe 4.0 协议(一)-- 概述

一、什么是PCIe

定义:PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准。

传输方式:全双工,TX和RX都采用串行差分信号进行数据传输。

Lane:一条Lane是一对TX差分线加上一对RX差分线,可以有2的n次方条Lane,最多支持32条Lane。

带宽:最高时钟频率是16GHz,则一条Lane的带宽计算 16G * (128/130) / 8 = 1.969GB/s。

        发送端将原始数据包封装成协议规定的格式,再转化成串行数据流发出,接收端将串行数据流收集后,按照协议规定逆向解析出原始的数据包

        PCIe使用的串行传输方式取代了PCI的并行传输方式,因为并行总线在时钟频率和布线方面会有很多限制,在很多领域高速串行有着取代传统并行的趋势。

二、PCIe结构拓扑

Root Complex: 简称RC,作为PCIe树的根,一方面是连接CPU、Memory子系统,另一方面可以连接多个PCIe端口。

Switch:可以把一个PCIe端口转换成多个PCIe端口。

Endpoint:PCIe终端设备成为Endpoint,它可以挂在RC上,也可以挂在Switch上。

三、PCIe封/拆包流程

        一个原始的数据包(Data)通过如上图三层逻辑(Transaction、Data Link、Physical)的处理变成了一个可以发送的包,通过TX发送给对端,反之,在RX接收的包也可以通过如上图三层逻辑解出原始的数据包(Data)。

  1. 事务层(Transaction):给Data增加了Header和ECRC。
  2. 链路层(Data Link):在事务层的基础上增加了Sequence Number和LCRC。
  3. 物理层(Physical):在链路层的基础上增加了Framing和Framing。

四、各层逻辑功能

        PCIe上的通信是基于Transaction的,根据地址空间不同可以把Transaction分为4类:Memory、I/O、Configuration、Message。

        对于发送端所有被标记位保留的域段都必须填0,对于接收端要忽略所有保留域段的值。

4.1 事务层

4.1.1 Prefixes

        Prefixes是Header的扩展,和Header有着相同的域段,Prefixes可以省去,也可以有一个或者多个。

4.1.2 Header--属性

Fmt: Header的格式。

Type:当前Transaction的类型。

TC:传输服务的分类,可以实现差异化的传输服务。

LN:轻量级通知使能。

        EP把指定位置Cacheline中的内容拷贝一份到本地,如果有设备更新了Cacheline中的这块内容,就会通知EP你关注的这条Cacheline已被更新,请停止使用你本地的备份。(这种做法主要是为了降低访问延时及带宽占用)

TH:指示Header中是否存在TPH域段。

TD:指示TLP中是否含有Digest。

EP:指示TLP内容是否已经损坏。

Attr[2] & Attr[5:4]:

AT:地址类型。

Length:数据的长度是多少DW。

Transaction ID:  由Requester ID和Tag组成Transaction ID,它是一个全局ID。

字节使能:  如果TH有效,THP域段生效(Last DW和1st DW),4位表示传输的第1个或最后一个DW的哪几位有效。(疑问?

4.1.3 Header--地址

Transaction的路由规则有三种方式:基于地址、基于ID、隐式路由。

1)基于地址:

 

        如果Fmt指示的是4DW,则有64位地址,否则32位地址。

2)基于ID:

  

        通过Bus Number、Device Number、Function Number三个组合起来,来告诉Transaction要发往的目的地。

2)隐式路由:

        如果是Message Request,它并不包含Header中并不包含具体的地址或者ID来指定Transaction发往的目的地,所以叫做隐式路由。

4.1.4 Payload

        要传输的数据。

4.1.5 Digest

        如果Header中的TD有效,会有一个DW的ECRC。

​​​​​​​​​​​​​​4.2 链路层

        主要是为了确保TLP传输的可靠性,在TLP头部增加了序列号,在TLP尾部增加了校验。

Sequence Number:序列号,递增产生,达到最大值后翻转成0。

LCRC:Link层的CRC。

​​​​​​​​​​​​​​4.3 物理层

​​​​​​​4.3.1 Logical Sub-Block

        主要实现发送逻辑和接收逻辑。

发送逻辑:

  1. 根据速率选在8b/10b或128b/130b编码。
  2. 将要发送的数据根据lane的数量转换成对应的串行数据。
  3. 增加帧头帧尾,如下图(lane*4的场景)。
  4. 数据加扰。

接收逻辑:

        与发送逻辑过程相反。

​​​​​​​4.3.2 Electrical Sub-Block

        主要实现差分信号的收发。

  • 42
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCIE-DMA是一种基于PCIe接口的直接内存访问技术,能够实现高速数据传输。在我的学习笔记中,我详细记录了与PCIE-DMA相关的知识和学习心得。 首先,我了解到PCIE-DMA技术的基本原理和作用。PCIE-DMA可以通过PCIe总线直接访问系统内存中的数据,而不需要过多的CPU干预,提高数据传输的速度和效率。这种技术在需要大量数据传输的场景下非常有效,比如高性能计算、数据采集等。 其次,我深入学习PCIE-DMA的工作原理。PCIE-DMA的核心是DMA控制器,它负责管理和控制数据传输的流程。当设备需要读写内存中的数据时,它通过DMA控制器发送请求,然后DMA控制器生成一个事务,将数据直接传输到或从内存中。这样就大大减少了CPU的参与,提高了数据传输的效率。 另外,我还学习PCIE-DMA的配置和编程方法。PCIE-DMA的配置主要包括硬件配置和软件配置两个部分。硬件配置通常涉及到DMA控制器和PCIe接口的初始化和配置,软件配置则需要编写驱动程序来驱动DMA控制器和处理数据传输过程中的事件和异常。这部分内容对于我来说还比较新颖,需要更多的实践和实践。 最后,我总结了PCIE-DMA的应用场景和发展前景。PCIE-DMA在高性能计算、数据采集等领域具有广阔的应用前景。随着数据量的不断增加和传输速度的要求越来越高,PCIE-DMA技术的需求也将越来越大。因此,对于我来说,学习掌握PCIE-DMA技术非常有价值。 通过学习和记录PCIE-DMA的相关知识和经验,我对这项技术有了更深入的理解和掌握。希望将来能通过应用PCIE-DMA技术解决实际问题,为科研和工程项目的顺利进行做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值