【PCIe 总线及设备入门学习专栏 1.1 -- PCIe 基础知识 lane和link介绍】

文章目录

  • Overivew
    • Lane 和 Link
    • RC 和 RP
      • PCIe controller
        • PCIE Controller
        • PHY模块
    • Inbound 和 Outbound
    • PCIe transaction model
      • PIO
      • DMA
      • P2P

Overivew

PCIe,即PCI-Express总线(Peripheral Component Interconnect Express),是一种高速串行总线。

PCIe最早由英特尔在2001年提出,旨在替代旧的PCI/PCI-X和AGP总线标准。但是,PCIe在软件层面上是兼容PCI的。

PCIe使用双向连接的方式,可以在同一时间进行收发操作。这种模型称为双单工连接,因为每个接口都有一个单工发送和单工接收的路径,如下图所示。因为数据流可以同时双向传输,因此两个设备间的通信是全双工的。

在这里插入图片描述

Lane 和 Link

PCIe 的一条 lane由 两对差分线(TX和RX)组成,一个 link由多条 lane组成。PCIe的 link 宽度支持x1, x2, x4, x8, x12, x16, x32。

在这里插入图片描述

RC 和 RP

Root Complex 简称 RC,类似于 PCI 的 host 主桥,对于 RC 没有明确的规范要求,在不同的处理器中有着不同的实现方式,但总体上与PCI一样具备HOST主桥的功能。

在这里插入图片描述

例如上图所示,在X86平台下,处理器通过 FSB 链接到了 RC。FSB 是 Front-Side Bus 的缩写,是一种传统的系统总线,它连接了计算机的主要组件,如 CPU、内存和北桥芯片。

上图的 RC由一个 存储器控制器 和两个 PCI桥 组成,这个PCI 桥链接着 Switch。总的来说,RC 是 PCIE 体系结构的一个重要组成部件,是PCIE 树的根,是整个 PCIE 树的控制者。但这个部件具体是什么样子的,可以根据实际需求来定,但唯一可以确定的,必须包含PCIE的总控制器的功能,所以 RC 的总线编号为0,挂在RC下的设备总线编号也都是 0,并依次向下延伸。

一个 RC 可以包括多个 RP(Root Port),例如一个16 条 lane的PCIe RC 可以包括4个RP(4个x4的),或者8个RP(8个x2的)等等。
在这里插入图片描述
在 ARM 平台下,CPU 通常是通过 AMBA 总线与RC 进行连接,比如 ARM CPU 可以控制挂载在 CMN-650 的 RC。

在这里插入图片描述
在这里插入图片描述

PCIe controller

首先,PCIe分为 控制器(controller)PHY两部分,控制器是数字电路,PHY 包含 PCSPMA 两部分,PMA 是模拟电路。

  • 控制器主要负责 pcie 协议包处理;
  • phy 主要负责数据编码串行化高速传输

国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的pcie 3.0才8 Gbps的速率,最新的6.0才64Gbps。整体设计较为复杂,一般可向IP厂商定制设计。’

在这里插入图片描述

PCIE Controller

控制器逻辑包含了 IP 的 host 设计,以及 PCIe 协议中所规定的事务层、数据链路层、物理层实现逻辑,通常包含如下模块:

  • reset 逻辑:通常会设置复位逻辑,通过总复位控制子复位;
  • debug 逻辑:监测IP状态,供设计人员debug用;
  • msg 处理逻辑:IP的某些信号由message处理,有CPU内核来处理;
  • 子系统配置处理逻辑;
  • 错误处理逻辑:查找寄存器,并记录,产生中断;
  • MSI 逻辑:对地址,数据通道进行监测;
  • 中断逻辑:IP中某些中断可以合并;
PHY模块

PHY 模块用于连接协议层和链路,包含了驱动锁相环串转并、并转串等所有与接口操作相关的所有电路。

  • PHY控制逻辑:直通PHY模块的寄存器配置和控制;
  • DFT:IP中会提供专门用于DFT的引脚。

从PCIe协议来讲,物理层分为逻辑子模块物理子模块。其中:
逻辑子模块又分为媒介访问层(MAC)和物理编码子层(PCS);PMA层包含串行器/解串器(SerDes)和其他模拟电路;

  • PCIE Serdes
    SerDes(Serializer-Deserializer)是串行器和解串器的简称,串行器(Serializer)也称为SerDes发送端(Tx),(Deserializer)也称为接收端Rx。SerDes 的主要构成可以分为三部分,PLL模块,发送模块Tx,接收模块Rx。

Inbound 和 Outbound

PCIe的inbound和outbound是对CPU而言的,outbound指从CPU到设备方向,inbound指从设备到CPU方向。

PCIe transaction model

PCIe有三种transaction model,分别是PIO、DMA和P2P。

PIO

PIO即Programmed I/O,可编程输入输出。在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。

在这里插入图片描述

DMA

DMA即Direct Memory Access,直接内存访问。在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。

在这里插入图片描述

P2P

P2P即Peer-to-Peer,是指一个endpoint发送packet给另一个endpoint。P2P路由在Switch中是必需的,但对于RC来说是可选的。

在这里插入图片描述

推荐阅读
https://mp.weixin.qq.com/s/1bGESIN3q8ZcqqGRiRVgvg
https://www.zhihu.com/question/525350571/answer/2598101335
https://blog.csdn.net/qq_39815222/article/details/128728334

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安卓 SystemServer 启动流程

目录 引言 Android系统服务启动顺序 zygote fork SystemServer 进程 SystemServer启动流程 1、SystemServer.main() 2、SystemServer.run() 3、初始化系统上下文 4、创建系统服务管理 5、启动系统各种服务 总结 引言 开机启动时 PowerManagerService 调用 AudioSer…

117.【C语言】数据结构之排序(选择排序)

目录 1.知识回顾 2.分析 设想的思路 代码 执行结果 ​编辑 错误排查和修复 详细分析出错点 执行结果 3.正确的思路 4.其他问题 1.知识回顾 参见42.5【C语言】选择排序代码 点我跳转 2.分析 知识回顾里所提到的文章的选择排序一次循环只比一个数字,和本文接下来要…

嵌入式驱动开发详解21(网络驱动开发)

文章目录 前言以太网框架ENET 接口简介MAC接口MII \ RMII 接口MDIO 接口RJ45 接口 PHY芯片以太网驱动驱动挂载wifi模块挂载后续 前言 linux驱动主要是字符设备驱动、块设备驱动还有网络设备驱动、字符设备驱动在本专栏前面已经详细将解了,网络设备驱动本文会做简要…

代码随想录Day37 动态规划:完全背包理论基础,518.零钱兑换II,本周小结动态规划,377. 组合总和 Ⅳ,70. 爬楼梯(进阶版)。

1.完全背包理论基础 思路 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完…

软件测试之全链路压测详解

随着业务的快速发展我们日常遇到的系统性能压力问题也逐渐出现,甚至在部分场合会遇到一些突发的营销活动,会导致系统性能突然暴涨,可能导致我们系统的瘫痪。最近几年随着电商的各种促销活动,有一个词也渐渐进入我们眼帘&#xff0…

用于汽车碰撞仿真的 Ansys LS-DYNA

使用 Ansys LS-DYNA 进行汽车碰撞仿真汽车碰撞仿真 简介 汽车碰撞仿真是汽车设计和安全工程的一个关键方面。这些仿真使工程师能够预测车辆在碰撞过程中的行为,从而有助于改进安全功能、增强车辆结构并符合监管标准。Ansys LS-DYNA 是一款广泛用于此类仿真的强大工具…

ES已死,文本检索永生

长期以来,混合查询(Hybrid Search)一直是提升 RAG(Retrieval-Augmented Generation)搜索质量的重要手段。尽管基于密集向量(Dense Embedding)的搜索技术随着模型规模和预训练数据集的不断扩展&a…

43. Three.js案例-绘制100个立方体

43. Three.js案例-绘制100个立方体 实现效果 知识点 WebGLRenderer(WebGL渲染器) WebGLRenderer是Three.js中最常用的渲染器之一,用于将3D场景渲染到网页上。 构造器 WebGLRenderer(parameters : Object) 参数类型描述parametersObject…

YOLO原理讲解

一、YOLO的输入参数介绍 打标签后会生成一系列参数,包含: 置信度、预测框的位置(中心点的位置、高度宽度)、类别(标签1、标签2、标签3......) 二、处理图像和标签 首先YOLO会把图像均分为19*19个格子 &a…

9. zynq应用开发--makefile编译

3. 使用SDK工具 如果只做 Linux 应用开发,只需要一个 sdk.sh 文件即可,可以脱离 Petalinux 和 Vitis,也可以编译其三方的应用,可以说一劳永逸。 配置根文件系统 petalinux-config -c rootfs 编译SDK petalinux-build --sdk Linu…

“鞋履创新工坊”:运动鞋店的新产品设计与管理

3.1 系统可行性分析 开发一款程序软件不仅需要时间,也需要人力,物力资源。而进行可行性分析这个环节就是解决用户这方面的疑问,看看程序在当前的条件下是否可以进行开发。 3.1.1 技术可行性分析 此程序选用的开发语言是Java,这种编…

重温设计模式--6、享元模式

文章目录 享元模式(Flyweight Pattern)概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式(Flyweight Pattern)概述 定义: 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

*(int**)是什么意思

有这样一段连续的内存,int*arr(int*)malloc(20); malloc 开辟了 20 个字节大小的空间,arr 指向这段空间的开头 我们要实现像链表一样的功能,有什么方法呢?(关于为什么要在一段连续的空间上实现像链表一样的功能,这只是…

STM32 SPI读取SD卡

七个响应类型: R1 Response (Normal Response): R1响应是最基本的响应,包含一个字节的状态位,用于指示命令是否成功执行。常用。最高位为0。最低位为1表示是空闲状态。其他位是各种错误提示。 R1b Response (Normal with Busy): 类似于R1&a…

[手机Linux] 七,NextCloud优化设置

安装完成后在个人设置里发现很多警告,一一消除。 只能一条一条解决了。 关于您的设置有一些错误。 1,PHP 内存限制低于建议值 512 MB。 设置php配置文件: /usr/local/php/etc/php.ini 把里面的: memory_limit 128M 根据你自…

使用Excel制作通达信自定义“序列数据“

序列数据的视频教程演示 Excel制作通达信自定义序列数据 1.序列数据的制作方法:删掉没有用的数据(行与列)和股代码格式处理,是和外部数据的制作方法是相同,自己上面看历史博文。只需要判断一下,股代码跟随的…

逆向工程在医疗器械中的应用

关于逆向工程: 逆向设计跟正向设计流程不同,它是对己有产品原型进行分析、改进和再创造的过程。通过先进的数字测量手段反向获取产品的外形数据,然后利用各种造型软件由点云数据重构出该产品的CAD模型。逆向工程的辅助设计建构可以缩短产品的…

Web安全攻防入门教程——hvv行动详解

Web安全攻防入门教程 Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。 本教程将带你入门Web安全攻防…

rk3588 android12 root

问题说明: 将 andorid12 root 测试情况说明:我在 串口上 实际上 是可以 使用 su root 命令 进入 root 的,但是 使用 root check apk 检测的时候却通不过。 是否解决说明: 已解决 解决问题的逻辑: 就按照 网上的资料…

基于Mysql、JavaScript、PHP、ajax开发的MBTI性格测试网站(前端+后端)

源码地址:https://download.csdn.net/download/2302_79553009/89933699 项目简介 本项目旨在构建一个基于MBTI(迈尔斯-布里格斯性格分类指标)理论的在线平台——“16Personalities”。该平台利用PHP、MySQL、JavaScript等技术栈开发&#x…