首页 > 其他分享 >PCIe系列专题之二:2.2 TLP事务处理方式解析

PCIe系列专题之二:2.2 TLP事务处理方式解析

时间:2024-11-05 16:00:17浏览次数:1  
标签:TLP 请求 事务处理 PCIe Memory Root Posted

一、故事前传

之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。

较为详细解释请见之前的文章:

1. PCIe技术概述;

2.0 PCIe Transaction layer事务层概述;

2.1 PCIe Transaction layer事务层TLP的前世今生。

二、TLP事务处理方式

看过前面TLP的前世今生精彩大剧之后,想必大家应该都知道TLP(Transaction Layer Packet)在事务层的角色。如果不知道,就默默翻一下前面的文章哈~

TLP很重要,也有很多种类。我们先来个全局的认识,看看PCIe到底定义了多少TLP种类呢?瞅下面的表格~

图片

这么多TLP啊,每个都是什么含义,到底是干什么的呢?不急,我们慢慢的揭开他们神秘的面纱~

之前的介绍中,我们提到过PCIe中总线事务有两大类:Non-Posted和Posted:

  • Non-Posted: 需要completion返回响应包;

  • Posted: 不需要completion返回响应包

图片

注:Memory Read Lock只适用在兼容PCI/PCI-X的陈旧设备中,在这里就先忽略了。

我们先从Non-Posted和Posted阵营中的各挑选一些代表介绍一下TLP事务的具体作用。

Non-Posted Memory Read:

步骤:

  1. PCIe端初始化Memory Read请求;

  2. 经过Switch到达Root Complex;

  3. Root收到Memory Read之后就在系统缓存中抓取数据并回传完成报告(Completion);

  4. 同样经过Switch到达设备端,设备端收到完成报告后结束此次事务请求。

图片

Non-Posted IO and Configuration Write:

步骤:

  1. Root初始化IO Write请求;

  2. 请求和数据经过Switch到达设备端;

  3. 设备端收到IO Write的请求以及数据之后,开始讲数据写入到PCIe设备中,并回传完成报告(Completion);

  4. 同样经过Switch到达Root,Root收到完成报告后结束此次事务请求。

注意:Non-Posted请求只能由处理器(也可以理解为Root端)发出!

图片

Posted Memory Write:

步骤:

  1. Root初始化Memory Write请求;

    由于Memory write的请求是Posted方式,不要求有完成回报(Completion). 所以在Memory write请求发送之后,Root不用等任何回应,就可以继续做其他事情啦~

  2. PCIe设备端收到Memory Write请求之后就开始专心执行写入动作,也不必准备完成回报(Completion).

    不需要完成回报(Completion)虽然可以加速事务处理的速度,从而提高系统性能。但是,如果在设备端出现Error,具体内容也不会回报给Root。而是会给Root发送一条信息让其转告系统软件有Error需要处理。

图片

标签:TLP,请求,事务处理,PCIe,Memory,Root,Posted
From: https://www.cnblogs.com/FireLife-Cheng/p/18528193

相关文章

  • PCIe系列专题之二:2.3 TLP结构解析
    一、故事前传之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-basedlayeredprotocol),主要包括事务层(Transactionlayer),数据链路层(Datalinklayer)和物理层(Physicallayer)。较为详细解释请见之前的文章:1.PCIe技术概述;2.0PCIe......
  • PCIe系列专题之二:2.4 Flow Control机制概
    一、故事前传之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-basedlayeredprotocol),主要包括事务层(Transactionlayer),数据链路层(Datalinklayer)和物理层(Physicallayer)。较为详细解释请见之前的文章:1.PCIe技术概述;2.0PCIe......
  • PCIe系列专题之二:2.6 Flow Control初始化
    一、故事前传之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-basedlayeredprotocol),主要包括事务层(Transactionlayer),数据链路层(Datalinklayer)和物理层(Physicallayer)。较为详细解释请见之前的文章:1.PCIe技术概述;2.0PCIe......
  • PCIe系列专题之二:2.5 Flow Control缓存架构及信用积分
    一、故事前传之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-basedlayeredprotocol),主要包括事务层(Transactionlayer),数据链路层(Datalinklayer)和物理层(Physicallayer)。较为详细解释请见之前的文章:1.PCIe技术概述;2.0PCIe......
  • PCIe系列专题之二:2.7 Flow Control的实现过程
    一、故事前传之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-basedlayeredprotocol),主要包括事务层(Transactionlayer),数据链路层(Datalinklayer)和物理层(Physicallayer)。较为详细解释请见之前的文章:1.PCIe技术概述;2.0PCIe......
  • 强烈推荐一款查看Windows下设备信息的软件!USB/PCIE一览无余!
    在linux系统中,我们要查看硬件信息,通常通过lspci、lsusb、top、vmstat、free、iostat等命令,或者/proc/cpuinfo、/proc/net/dev等文件节点。《一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解》那么在Windows系统中,要如何查看详细的设备信息呢?本文以SIV(SIV-System......
  • 手把手教你学pcie(12.17)--实现一个PCIe设备与用户空间应用程序之间的DMA数据传输
    目录基于PCIe的DMA数据传输项目实例1.环境搭建2.FPGA设计3.驱动开发4.用户空间应用程序开发5.调试6.总结实现一个PCIe设备与用户空间应用程序之间的DMA数据传输。这个例子将包括环境搭建、FPGA设计、驱动开发、用户空间应用程序开发和调试等环节。基于PCIe的D......
  • MiniPCIe 接口 CANFD卡
    概述基于MiniPCIe高性能接口CANFD卡采用标准MiniPCIe接口尺寸设计,方便PC机或嵌入式设备快速拓展出CANFD接口,实现数据采集与数据处理。兼容高速CAN和CANFD两种通信需求、支持CAN2.0A、CAN2.0B协议,符合ISO11898-1规范。规格PC接口:高速MiniPCIE接口,PCIExpressx1规格;......
  • PCIe 知识整理-带宽计算
    传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位;比如PCIe1.x和PCIe2.x使用8b/10b编码方案,导致占用了20%(=2/10)的原始信道带宽。GT/s——Gigatransitionpersecond(千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通......
  • 手把手教你学PCIE(12.1)--开发一个简单的 PCIe 设备驱动程序
    目录手把手教你学PCIe实战实例目标环境准备步骤一:理解PCIe基本概念步骤二:设置开发环境步骤三:开发PCIe设备驱动程序步骤四:测试和调试驱动程序步骤五:深入学习和实践结语PCIe(PeripheralComponentInterconnectExpress)是一种高速串行计算机扩展总线标准,广泛用......