PCIe专题学习——2.1

2023-11-03

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

一:事务层TLP的前世今生

PCIe总线使用的数据报文首先在事务层中形成,这个数据报文也被称为事务层数据报文,即TLP(Transaction Layer packet),TLP在经过数据链路层时被加上sequence number前缀和crc后缀,然后发向物理层。

生活中,有时,我们会陷入一个哲学性的思考:“我们来自哪里,终归何方?”同样的,TLP也有这个命题的答案,TLP来自发送设备的事务层,历经“磨难”,终归接收端的事务层。

那么,在TLP传递的过程中到底要经理哪些磨难呢?请看下图~

 

我们逐一解析一下这些磨难:

1:发送端Device Core发送事务请求:数据读写,完成反馈(Completions),信息(Message)等;

2:事务层根据Device Core的请求,生成TLP Header,加上Device Core提供的data,最后加上ECRC(end to end crc),此时TLP会放入事务层缓存(Virtual Channel Buffer)之中;

 

3:当TLP传递至数据链路层时,会被加上sequence number以及LCRC(link CRC),此时,生成“加强版”TLP,并放入数据链路层的Retry buffer;

 

4:当TLP被传送至物理层时,被加上头和尾,到这里,TLP在发送端就组装完毕了;

 

5:在接收端就很发送端做的事情相反了,在物理层需要掐头去尾,然后传输至数据链路层;

6:数据链路层收到传入的TLP后,通过计算LCRC验证传输是否正确,正确的话就去掉sequence Number和LCRC,将TLP传输至事务层;

7:事务层接收到TLP后,解析其内容,并将信息传给接收端Device Core,至此,发送端传过来的组装TLP已拆解完毕;

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PCIe专题学习——2.1 的相关文章

随机推荐

  • POI getDataFormat() 格式对照

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 参照org apache poi ss usermodel BuiltinFormats的说明 Open Declaration org apache poi ss use
  • C#获得DataGrid单元格的值

    WPF中的DataGrid控件类似于WindowsForm中的DataGridView 但是DataGridView中的单元格值获取非常简单直观 如下 string cellvalue datagridview Rows rowindex
  • RuntimeError: CUDA error: device-side assert triggered

    RuntimeError CUDA error device side assert triggered解决办法 这是由于数据标签默认是从0开始的 比如标签类别为5类 默认是 0 1 2 3 4 而自己是 1 2 3 4 5 只需要在标签数
  • Scala的基础语法(超详细版)

    Scala的基础语法 文章目录 Scala的基础语法 1 声明值和变量 2 数据类型 3 算术和操作符重载 4 控制结构语句 4 1条件分支语句 4 2循环语句 5 方法与函数 5 1方法 5 2 函数 5 3 方法转换成函数 1 声明值和
  • python爬虫-北京租房可视化分析

    目的 使用scrapy框架爬取租赁信息 对数据进行处理利用python中的seaborn matplotlib库进行可视化分析 最后查看昌平区待租量排前十小区对应地铁站点 及其平均租房价格 1 爬虫 使用scrapy框架爬取beike租房信
  • chatGPT做算法题

    今天突发奇想 自己编了一道算法题让newbing和chatgpt做 问newbing后 没搜索到相关内容 回复无法理解题目 问chatGPT后给出了回答 见下图 一开始我很震惊 算法居然如此简洁 我知道这个题可以用动态规划解 但是算法也没有
  • CocosCreator查找图片引用

    相信大家可能需要查找图片在哪个Prefab中使用到 于是我们像下图这样查找一下 查找的时候CocosCreator会给出我们查找的图片资源的uuid 比如 我的uuid 33a791ca 5a28 4c2a b451 7c6b8f9a037
  • 简单C语言两数相加

    在C语言中 相加两数是一个基本的要求 但其实也有复杂操作 比如高精度加法 或者链表相加 还要考虑进位 都是比较难的 那么今天我们来聊一聊简单的problem a b 先发代码 include
  • hiveSQL基本语句三-----连接查询--inner join、left join、full join、union all、union

    一 inner join 连接2个表 取出公共部分 必须重命名 on后连接条件键值唯一 连接前注意去重 提高效率 inner可省略 select from user list 1 as a inner join user list 2 as
  • keras图像风格迁移

    风格迁移 在内容上尽量与基准图像保持一致 在风格上尽量与风格图像保持一致 1 使用预训练的VGG19网络提取特征 2 损失函数之一是 内容损失 content loss 代表合成的图像的特征与基准图像的特征之间的L2距离 保证生成的图像内容
  • 创客教育的法则

    认为创客教育顾名思义是创造客户价值的意思 那可就错了 创客是教育培训行业里的一个专用名词 属于新型创新的模式 格物斯坦提醒 想要进行创客教育的学生 老师以及家长们 要谨慎选择合适的创客教育培训机构 这样才能万无一失 核心注重课程体系的自主研
  • vscode+gcc+jlink调试mcu程序(用于替代IDE)

    一 前言 几年前写过一篇类似的文章 那时是用于调试rtthread系统 使用 VSCode arm none eabi gdb J Link GDB Server 调试RTThread 当时有关vscode和gcc调试MCU的文章很少 所以
  • golang中数组和切片的区别与联系

    golang中数组和切片的区别 切片时指针类型 数组是值类型 数组的长度是固定的 而切片不是 切片是动态的数组 切片比数组多一个属性 容量 cap 切片的底层是数组 既然一个是指针类型 一个是值类型 那么区别体现在哪里呢 看下这个例子 nu
  • 思科模拟器Cisco Packet Tracer安装指南

    前言 本篇为思科模拟器Cisco Packet Tracer的官方英文正版安装指南 官方英文正版虽然可以免费使用 但是要登录思科账户 账户同时登录思科旗下的网络学院并订阅课程和完善个人资料 本篇会教你怎么一步一步去完成这些 而且绝大部分还是
  • 最常犯的 HTML 标识错误 Top 100

    国外的一个网站 W3CLove 最近对在其网站上进行的 45 万的网页验证进行统计 下面是最频繁的错误和警告列表 W3CLove是一个用来验证网页编写是否规范的在线网站 不过用它来测试 oschina 页面的时候 提示错误 Sorry we
  • H5之微信授权登陆 (uniapp网页版微信授权登录)

    今天来复盘代码了 不然这个月过完 我可能脑子里又啥都不剩了 感觉自己跟个金鱼脑一样 十分沧桑 1 首先 要做微信授权登录 你的有一个微信公众号 因为授权登录要配置APPID 以及网页授权域名 这里的网页授权域名真的让我栽了好多的坑一言难尽
  • 在Linux系统中部署Tomcat并通过公网访问

    如果你想要将SSM的项目部署上线 那么你首先就必须将Tomncat上传部署到LInux系统中 因为SSM打包后的war文件需要Tomcat容器 接下来我就详细介绍一下如何在Linux中部署Tomcat并如何通过公网访问 1 购买阿里云服务器
  • Java基础之流程控制08:For循环

    For循环 虽然所有循环结构都可以用 while 或者 do while 表示 但 Java 提供了另一种语句 for循环 使一些循环结构变得更加简单 for 循环语句是支持迭代的一种通用结构 是最有效 最灵活的循环结构 for 循环执行的
  • Harris角点检测

    一 什么是角点 也叫作感兴趣的关键点 我们可以直观的概括下角点所具有的特征 gt 轮廓之间的交点 gt 对于同一场景 即使视角发生变化 通常具备稳定性质的特征 gt 该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化 二 角点
  • PCIe专题学习——2.1

    之前我们对PCIe的一些基础概念做了一个宏观的介绍 了解了PCIe是一种封装分层协议 packet based layered protocol 主要包括事务层 Transaction layer 数据链路层 Data link layer