MindShare PCIE 3.0 笔记-第一二章

news2025/2/23 7:36:07

MindShare 官网,地址如下:
MindShare

Chapter 1:PCIE 背景介绍 - PCI 总线模型

1. 以 PCI 总线作为外设总线的 SOC 芯片架构

下图展示了一个以 PCI 总线作为外设总线的 SOC 芯片架构(PCI 总线类似 AXI 下的 AHB?):
在这里插入图片描述

由上图可知:PCI 作为芯片内部的外设总线,那么处理器内核的地址指令与数据指令(寄存器读写)可以方便的转换为 PCI 总线数据,与各外设 IP 核进行通信

进一步扩展:芯片外部的 pci 总线上的外设,也可以通过地址指令和数据指令(寄存器读写)访问

North Bridge: 北桥,连接处理器与外设总线(类似 AXI?龙芯的处理器上似乎也有)。

South Bridge: 南桥,连接 PCI 与系统外设(类似 APB?)。

2. functions 与 PCI device

每一个 pci 设备最多包含 8 个 functions, 每一个功能都有一个编号:[0:7].

3. PCI device 与 PCI bus

PCI 总线最多可挂载 32 个设备,由于电气特性,实际只会更少。 33MHz 频率时,最多能挂载 10-12 个设备.

4. PCI 总线与 PCI 架构

一个 PCI 架构最多允许挂载 256 条 PCI 总线

5. PCI 地址空间映射

PCI 架构支持 3 种地址空间:

  1. mem 空间:包含 32/64 位 mem;
  2. I/O 空间:外设寄存器区域?
  3. configuration: 配置空间

PCI 设备的每一个 function 都需要 256 字节的配置空间。

那么在任一 PCI 架构中,最多需要 256 * 8(功能)* 32(设备) * 256(总线) = 16MB 配置空间。

因为每一个 PCI 架构最多支持 256 条 PCI 总线,每条总线最多支持 32 个设备,每个设备最多支持 8 个 functions, 每个 function 需要 256 字节配置空间。

6. PCI function 配置空间 header。

每一个 function 需要 256 字节配置空间,配置空间的前 64 字节包含一个称为 Header 的标准结构。剩余的 192 字节支持可选的功能。

存在两种类型的 Header:

  1. bridge 类 Header;
  2. device 类 Header;

7. bridge 类 Header(Type 1 Header)

位域 Header Type = 1, 表示 bridge 类 Header.
在这里插入图片描述

8. device 类 Header(Type 0 Header)

位域 Header Type = 0, 表示device 类 Header.

9. pci 驱动首先需要做的事就是查找 function 的 Header,并判断 Header 类。

这一步称做枚举。(通过访问配置空间完成.)

在这里插入图片描述

10. PCI-X 与 PCI 只有硬件上的区别

PCI-x 频率更高,带宽更大。

Chapter 2: PCIe 架构概述

1. PCIE 是由 PCI 并行总线发展而来的串行总线

pcie 是使用差分线传输的串行全双工总线。

2. PCIE 驱动与 PCI 驱动完全兼容

因为 PCIE 使用与 PCI 一样的配置 Header,所以可以保证软件的兼容性。

在这里插入图片描述

3. PCIE 运行在更高的频率下

与 PCI 不同,由于不需要考虑高频并行总线下的信令偏移问题,PCIE 总线可以运行在更高的时钟频率下。

PCIE 1.0 运行在 2.5GT/s 频率下。

PCIE 2.0 运行在 5 GT/s 频率下;

PCIE 3.0 运行在 8 GT/s 频率下;

PCIe 1.0/2.0 使用 8b/10b 编码。

PCIe 3.0 使用 128b/130b 编码。

PCIE 链路带宽如下图:
在这里插入图片描述

不同版本 PCIE 带宽计算方法如下:

PCIE 1.0 Bandwidth = (2.5Gb/s * 2) / 10 bits per symbol = 0.5GB/s

PCIE 2.0 Bandwidth = (5Gb/s * 2) / 10 bits per symbol = 1.0GB/s

PCIE 3.0 Bandwidth = (8Gb/s * 2) / 8 bits per symbol = 2.0GB/s

4. PCIE 不需要公共时钟

PCIE 使用源同步模型,也就是由数据发送方提供时钟给接收方,发送方会将时钟信号编码进差分数据中,接收方通过 PLL 对比、锁频来确定时钟.

5. PCIE 使用基于包的数据传输协议

物理底层使用数据包的形式进行数据交换

6. PCIE 链路可以使用多个 lane

两个 PCIE 设备之间的链路, 称为 link. link 可以会使用多个通道, 称为 lane.

比如 pcie x1, x2, x4, x8, x16, x32

7. PCIE link 必须是点对点的连接

PCIE 需要使用 switch/bridge 来建立更灵活的树形拓扑结构

那么两个 PCIE 设备之间的每一个点对点的连接, 单独占用一条总线?

8. CPU 使用 Root Complex 与外部 PCIE 设备或总线连接

CPU 与 PCIE 总线之间也许包含几个额外的组件(处理器接口, DRAM 接口或其他芯片), 这些额外组件统称为 Root Complex.

Root Complex 代表 CPU 与 PCIE 树形拓扑结构中的剩余设备通信.

Root Complex 内部存在一个 Host-PCI Bridge 作为 PCIE 0 号虚拟总线, 并存在额外的 PCIE bridges 用于创建新的总线.

在这里插入图片描述

9. Switch 与 Bridge

Switch 和 Bridge 感觉没啥区别. 都可以拓展 PCIE 总线,与 Root Complex 一样,switch 内部也存在一条虚拟总线,以及多个 pcie bridge,用于创建新的总线或下挂设备。.

switch 图解如下(与 Root Complex 差不多):

在这里插入图片描述

10. End point 即是 PCIE 设备

11. PCIE 设备是层级设备

设备分层架构如下:

在这里插入图片描述

从上至下的 layerlayer 描述
Device Core/ PCIe Core软件层, PCIE 设备功能的核心实现, 如果 PCIE 设备由 8 个 functions, 那么每个 functions 都有自己的配置空间, 用于实现设备功能.
Transaction Layer传输层, 负责 TLP 数据包的生成并发送, 接收并解析, 同时实现流控/QOS
Data Link Layer数据链路层, 负责 DLLP 生成并发送/接收并解析, 同时负责错误检测与纠正, 应答.
Paysical Layer物理层, 使用差分信号线实现面向数据包的传输.

物理层发送的数据包概念图如下:

在这里插入图片描述

12. Device Core/ Software Layer

用于实现具体的设备功能,不在 PCIE 规范中定义。

13. Transaction Layer

响应软件层的请求,传输层生成待发送的数据包,也会解析输入的数据包,并上传给软件层;

传输层使用 TLP 进行数据处理,每一个 TLP 属于下列帧类型之一:

  1. Memory
  2. I/O
  3. Configuration
  4. Message

14. Data Link Layer

数据链路层负责链路管理,并完成如下三个功能:

  1. TLP 错误检测;
  2. 流控;
  3. 链路功耗管理;

15. Paysical Layer

物理层是使用数据包的数据交换协议.

16. 一个实例,用于读取 PCIE 设备 memory

首先, 发送方发送 memory read request 给接受方, 图解如下:

在这里插入图片描述

request 发送方:

  1. 软件层将读取的内存地址发送给传输层, 传输层打包为传输层数据包 TLP, 并传递给 DLL
  2. 数据链路层将 TLP 打包为 DLLP, 然后传输给 Physical Layer
  3. 物理层添加自己的包头与包围, 通过差分线路,将数据发送到对端.

request 接收方:

以相反的顺序对数据包进行解析.

之后, 接收方发送 memory read Completion with Data 给发送方, 图解如下:

在这里插入图片描述

数据封包与拆包过程与 request 过程差不多, 不赘述.

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

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

相关文章

Django Auth组件

文章目录 前言一、使用场景二、使用步骤1.验证用户( authenticate() 方法)2.注册用户3.退出登陆4.装饰器 前言 Django 的用户认证组件基于以下几个核心概念: 1.用户认证:处理用户的登录、注销和密码管理,提供了一个User模型和相关的视图、表…

技术美术一百问(02)

问题 前向渲染和延迟渲染的流程 前向渲染和延迟渲染的区别 G-Buffer是什么 前向渲染和延迟渲染各自擅长的方向总结 GPU pipeline是怎么样的 Tessellation的三个阶段 什么是图形渲染API? 常见的图形渲染API有哪些? 答案 1.前向渲染和延迟渲染的流程 【例图…

图神经网络池化方法

图神经网络池化方法 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…

软考(中级-软件设计师)(0919)

软考 一、软件设计师-历年考试考点分布情况-上午-计算机与软件工程知识 知识点分数说明比例软件工程基础知识11开发模型、设计原则、测试方法、质量特性、CMM、Pert图、风险管理14.67%面向对象12面向对象基本概念、面向对象分析与设计、UML、常见算法16.00%数据结构与算法10…

代码随想录算法day37 | 动态规划算法part10 |

今天开始正式子序列系列!!!!! 300.最长递增子序列 本题是比较简单的,感受感受一下子序列题目的思路。 力扣题目链接(opens new window) 给你一个整数数组 nums ,找到其中最长严格递增子序列的长…

读mamba有感,自然而然产生的问题及答案。

原文链接:https://arxiv.org/abs/2312.00752 Q:为什么说Mamba可以比肩甚至超越transformer?各自有什么优劣? A:Transformer在处理长序列时,存在着计算效率低下的问题,无法对有限窗口之外的任何…

查询中的行选择

用WHERE子句限制从查询返回的行。一个WHERE子句包含一个必须满足的条件,WHERE子句紧跟着FROM子句。如果条件是true,返回满足条件的行。 在语法中: WHERE 限制查询满足条件的行 condition 由列名、表达式、常数和比较操作组成…

bootstrap application nacos环境配置失效

tmd 环境配置 是yaml ,yml 后缀配置不生效 (不,看你取得文件名是什么) 如果 file-extension 配置的是yaml 就读取不到 yml 中的配置 2 . 如果还不行,、nacos 配置只能卸载bootstrap.yml 中,application.yml 不生效 bootstrap.yml…

c/c++语言中extern的用法(VS编译)

c/c语言中extern的用法 前言:1. 声明外部变量2. 声明外部函数3. 在头文件中使用注意事项 效果展示: 前言: extern 关键字不仅在 C 语言中使用,在 C 语言中也同样适用。它主要用于声明一个变量或者函数是在别的文件或翻译单元中定…

怎么操作使http变成https访问?

获取SSL证书 选择证书颁发机构:可以选择受信任的免费或付费证书颁发机构(CA)如JoySSL 申请和验证域名:注册并填写注册码230920,验证域名所有权。下载SSL证书文件到本地电脑. JoySSL品牌证书 注册享大额优惠JoySSL是网…

Android开发高频面试题之——Android篇

Android开发高频面试题之——Android篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Activity启动模式 standard 标准模式,每次都是新建Activity实例。singleTop 栈顶复用。如果要启动的A…

车市状态喜人,国内海外“两开花”

文/王俣祺 导语:随着中秋假期告一段落,“金九”也正式过半,整体上这个销售旺季的数据可以说十分喜人,各家车企不是发布新车、改款车就是推出了一系列购车权益,充分刺激了消费者的购车热情。再加上政府政策的鼎力支持&a…

Unity 使用Editor工具查找 Prefab 中的指定脚本

在 Unity 项目中,随着项目规模的扩大和 Prefab 数量的增加,管理和定位 Prefab 中的脚本变得更加复杂。为了提高开发效率,所以需要编写一个自定义的 Unity Editor 工具,帮助查找某个 Prefab 中是否使用了指定的脚本。本文将介绍如何…

LIN总线CAPL函数——干扰LIN帧响应段(linInvertRespBit )

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

目标检测:滑块验证

最近在做一些爬虫相关的任务,有时候在登录时候需要去做滑块验证,刚好自己是做AI这一块得,就想着使用目标检测去做检测,然后绕过滑块。

AI 时代,大模型产业落地的八大思考

引言 在人工智能领域,大模型技术正逐渐成为推动行业进步的关键力量。随着技术的发展,大模型不仅在学术界引起了广泛的关注,也在产业界展现出巨大的应用潜力。然而,如何将这些强大的模型有效地应用到实际产业中,仍然是…

什么软件可以远程控制电脑?好用的电脑远程控制软件有哪些?这6款可以帮到你!

在如今的数字化办公环境中,远程控制电脑已成为解决问题、协作工作的必备技能。 无论是技术支持、远程办公,还是简单的文件传输,远程控制软件都能让我们随时随地连接其他电脑,省时省力。 那么,有哪些好用的远程控制软…

大数据和代理:揭示它们之间的微妙联系

大数据,顾名思义,是指使用传统数据处理应用程序无法有效处理的极其庞大而复杂的数据集。这些数据集的特点是数量庞大、速度快、种类繁多,有可能提供有价值的见解并支持各个行业的决策过程。 这些数据可能来自各种来源,例如社交媒体…

一文速通calcite结合flink理解SQL从文本变成执行计划详细过程

文章目录 你可以学到啥测试代码背景知识SQL转变流程图问题 你可以学到啥 SQL如何一步步变成执行计划的有哪些优化器,哪些优化规则calcite 和flink 如何结合的 测试代码 EnvironmentSettings settings EnvironmentSettings.inBatchMode(); TableEnvironment tabl…

Shein西班牙开放平台模式广受市场欢迎,Shein适合卖什么产品?

Shein是一家专注于女性快时尚的跨境B2C互联网企业,主要面向欧美、中东等消费市场。经过海外十余年的发展,Shein在全球积累了数量庞大且仍在高速增长的广泛用户基础。目前Shein已开放自营商家及平台卖家两大合作模式,通过入驻Shein平台&#x…