从软件角度看PCIe设备的硬件结构

news2024/9/9 4:25:46

从软件角度看PCIe设备的硬件结构


文章目录

  • 从软件角度看PCIe设备的硬件结构
  • 参考资料:
    • 一、 PCIe接口引脚
    • 二、 从软件角度理解硬件接口
      • 2.1 PCI/PCIe地址空间转换
      • 2.2 PCIe上怎么传输地址、数据
    • 三、 PCIe系统的硬件框图
  • 致谢


参考资料:

  • 《PCI Express Technology》,Mike Jackson, Ravi Budruk; MindShare, Inc.
  • 《PCIe扫盲系列博文》,作者Felix,这是对《PCI Express Technology》的理解与翻译
  • 《PCI EXPRESS体系结构导读 (王齐)》
  • 《PCI Express_ Base Specification Revision 4.0 Version 0.3 ( PDFDrive )》
  • 《NCB-PCI_Express_Base_5.0r1.0-2019-05-22》

一、 PCIe接口引脚

在这里插入图片描述

PCI接口的引脚时并行的,PCEe的是串行的,每个方向的数据使用2条差分信号线来传输,发送/接收两个方向就需要4条线,这被称为1个Lane:

在这里插入图片描述

PCIe设备的接口上,可以有多个Lane:

  • 两个PCIe设备之间有一个Link
  • 一个Link中有1对或多对"发送/接收"引脚,每对"发送/接收"引脚被称为"Lane"
  • 一个Lane:有发送、接收两个方向,每个方向用2条差分信号线,所以1个Lane有4条线
  • 一个Link最多可以有32 Lane
    在这里插入图片描述

二、 从软件角度理解硬件接口

2.1 PCI/PCIe地址空间转换

在这里插入图片描述

2.2 PCIe上怎么传输地址、数据

既然PCIe是串行信号,那只能在"包"里传输地址、数据了。

  • 需要定义包的格式:类型(Mem R/W) + 地址 + 数据
  • 包怎么传递给对方、怎么确保不出错?有重传机制、有检验码
  • 包怎么通过差分线传送出去?

PCIe总线的层次结构和数据包:

  • 事务层(Tansaction Layer):传输的是Transaction Layer Packet(TLP)
    在这里插入图片描述
    数据链路层(Data Link Layer):传输的是Data Link Layer Packet(DLLP)

  • 在TLP加上前缀、后缀,得到DLLP
    在这里插入图片描述

  • 当然还有数据链路层自己的数据包

  • 物理层(Physical Layer):传输的是Physical Packet

    • 在DLLP加上前缀、后缀,得到的是Physical Packet
      在这里插入图片描述
    • 当然还有物理层自己的数据包
      在这里插入图片描述

三、 PCIe系统的硬件框图

在PCI系统里,多个PCI设备都链接到相同总线上。

在PCIe系统里,是点对点传输的:

  • 一条PCIe总线只能接一个PCIe设备
  • 要接多个PCIe设备,必须使用Switch进行扩展

在这里插入图片描述


致谢

以上笔记源自韦东山老师的视频课程,感谢韦老师,韦老师是嵌入式培训界一股清流,为嵌入式linux开发点起的星星之火,也愿韦老师桃李满园。聚是一团火,散是满天星!

在这样一个速食的时代,坚持做自己,慢下来,潜心琢磨,心怀敬畏,领悟知识,才能向下扎到根,向上捅破天,背着世界往前行!
仅此向嵌入行业里的每一个认真做技术的从业者致敬!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch概念与架构原理

文章目录一、概述二、ElasticSearch架构原理三、ElasticSearch搜索入门一、概述 ElasticSearch简介 简介 ES是建立在Lucene基础之上的分布式准实时搜索引擎,它所提供的诸多功能中有一大优点,就是实时性好。比如:在业务需求中,新增…

计算机图形学 第7章 自由曲线曲面

先说好,第八章不学。 目录学习目标曲线与曲面的表示形式插值与逼近Bezier曲线定义一次Bezier曲线二次Bezier曲线⭐⭐⭐三次Bezier曲线⭐⭐⭐三次Bezier曲线的Bernstein基函数:Bernstein基函数的性质Bezier曲线的性质de Casteljau算法几何作图法绘制Bezie…

Struts2之拦截器

Struts2之拦截器1、Struts2体系架构1.1、执行流程1.2、核心接口和类1.3、流程简图2、Struts2拦截器2.1、使用拦截器的目的2.2、拦截器的简介2.3、拦截器的工作原理2.4、拦截器的使用2.4.1、创建自定义拦截器2.4.2、struts.xml中定义和配置拦截器2.4.3、Struts2默认拦截器2.4.4、…

Leetcode.2319 判断矩阵是否是一个 X 矩阵

题目链接 Leetcode.2319 判断矩阵是否是一个 X 矩阵 Rating : 1201 题目描述 如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X矩阵 : 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n的二维整数数组 grid&#…

ElasticSearch - 旅游酒店案例es功能实现

目录 案例 搜索与分页功能 条件过滤功能 附近的酒店功能 广告置顶功能 HotelService(es操作)总览 案例 搜索与分页功能 案例需求:实现旅游的酒店搜索功能,完成关键字搜索和分页实现步骤如下:1.定义实体类,接收前端请求实体…

微信小程序用vant自定义tabbar页面并跳转相应页面

0.前置安装 步骤一 安装 vant 组件库 npm i vant/weapp -S --production下载完后要npm构建才能使用 步骤二 修改 app.json 将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不…

分布式定时任务框架选型

目录 1. 前言 2. 定时任务框架 3. 分布式任务调度系统对比 4. 和quartz框架对比 5. 综合对比 6. 总结和结论 7. 附定时任务的其他方案 1. 前言 我们先思考下面几个业务场景的解决方案: 支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清…

【算法】快速排序算法原理及实现

1.什么是快速排序算法 快速排序是对冒泡排序的一种改良版,通过一趟排序,把要排序的序列分割成两个部分,一部分的所有数据要比另一部分的数据都小,然后再根据这两部分的数据来进行快速排序。以此来达到整一个数据都变成了有序序列…

AI算法创新赛-人车目标检测竞赛总结01

AI0000020摘要:人车目标检测竞赛主要考察目标检测算法与 TPU 部署推理,主要考察算法选型与调 优,面向算能 TPU 迁移部署与推理加速两项能力;主要考核目标是算法效果(mAP)与推 理性能(单张图片推理时间)。针对这些要求,笔者从算法选型&#xf…

【实际开发11】- 统计 / 科学计算 - 1

目录 1. sql 统计返回值为 null 时 , 赋值 为 : 0 ( return UI ) 1. 手动 null 判断 , 进行 “0” 赋值 2. XxxxVO 展示对象 , 初始化时 , 赋值默认值 ( 待优化 ) 2. 统计异常 1. 注意中间表数据的维护 ( 同步删除 / 避免手动删数据 ) 3. 精度损失 1. Java 类型 float、…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:LiveStream和LiveStreamPlayer

本文简述如何在Smobiler中使用LiveStream和LiveStreamPlayer。 LiveStream 直播推送插件 Step 1. 新建一个SmobilerForm窗体,并在窗体中加入LiveStream和Button,布局如下 选中LisvStream,在设计器中设置Url(需要事先准备一个视频…

【面试原型链】前端面试那些事(1)之原型链详解

【写在前面】辞旧迎新的春季佳节,在这里博主先祝各位看官新的一年赚钱多多,知识满满,年后谈到面试, 好多人在面试的时候就倒在原型链知识点上面,主要原因还是基本功不够扎实,针对以前的知识我也计划在2023年…

C语言小题,通过指向结构体变量的指针变量输出结构体变量中成员的信息。(指针结构体变量的指针)

前言: 此篇是针对 指针结构体变量的指针 方面的练习。 解题思路: 在已有的基础上,本题要解决两个问题: (1)怎样对结构体变量成员赋值; (2)怎样通过指向结构体变量的指针…

天云数据:Hubble数据库系统自主研发率99.62%,是真正的信创数据库

软件是新一代信息技术的灵魂,是数字经济发展的基础,是制造强国、网络强国、数字中国建设的关键支撑。2021年,工信部印发的《“十四五”软件和信息技术服务业发展规划》明确指出,要聚力攻坚基础软件,关键基础软件补短板…

Javascript基础复盘5

内置对象 值属性 这些全局属性返回一个简单值,这些值没有自己的属性和方法。 InfinityNaNundefinedglobalThis函数属性 全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。 eval()uneval()isFinite()isN…

Q-Learning以及.NET环境下的实现

Q-Learning以及.NET环境下的实现写在前面机器学习Q-Learning环境准备试题准备解题过程写在结尾写在前面 看过我的文章的朋友应该都知道,我之前一直在研究视觉相关的知识,也看了一些卷积神经网络(CNN),深度学习相关的文…

强化学习之:价值学习Value-Based Learning

文章目录参考内容动作价值函数(Action-value Function)深度强化学习(DQN)学习目标(Goal)如何获得尽可能好的 Q∗(st,a)→Q^{*}(s_t, a) \rightarrowQ∗(st​,a)→ 用神经网络通过学习获得时间差分算法&…

cocos creater 3.x 开发笔记(踩坑总结)

1、cocos creater 3.x 花屏闪屏黑屏 1.1 花屏 排序是一个很简单的功能,但是最终的呈现却是根据不同平台提供的渲染能力来的。因此,在这里说明一下,如果遇到了 UI 渲染出错,花屏,闪屏等现象,首先要检查的就…

【安装合集】Mysql8.0安装 2023年1月31日 22点15分

1.鼠标右击【Mysql8.0】压缩包选择【解压到Mysql8.0】。 2. 鼠标右击【mysql-installer-community-8.0.17.0】选择【安装】 3. 勾选【I accept the license terms】然后点击【Next】。 4. 选择【Custom】然后点击【Next】。 5. 双击【MySQL Servers】 双击【MySQL Server】&am…

数据指标体系的建设思考(四)

这一篇主要介绍对数据指标体系的价值、数据指标管理平台的理解及数据分析的趋势解读。 一、数据指标体系价值 关于数据指标体系的价值,我想大多数从事数据工作的人员都可以感受得到,毕竟数据指标的输出可以通过可视化的方式(如大屏、驾驶舱…