当前位置: 首页 > article >正文

【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


http://www.kler.cn/a/451010.html

相关文章:

  • 什么是根服务器?有什么作用?
  • Confluent Cloud Kafka 可观测性最佳实践
  • 【C++】B2066救援题目分析和解决讲解
  • linux-19 根文件系统(一)
  • C++设计模式:享元模式 (附文字处理系统中的字符对象案例)
  • 我用Cursor+DeepSeek做了个飞书文档一键同步插件,免费使用!
  • JVM的垃圾回收机制GC
  • 面试基础篇---迭代器,yield, tcp, 等
  • C调用gnuplot绘图的方法
  • 【ROS2】坐标TF变换工具-tf2_ros
  • 鸿蒙元服务从0到上架【第三篇】(第二招有捷径)
  • tortoisegit推送失败
  • ubuntu下 如何将 NVIDIA 内核驱动 升级到特定版本 如550.127
  • 大语言模型学习工具及资源总结和落地应用
  • soular使用教程
  • ONNX 转 TensorRT Bug 记录:IIfConditionalOutputLayer
  • 鸿蒙-什么是ArkTS
  • 【C++】模板与泛型编程(一):定义模板,类模板
  • vue3 + MapTalks实现2.5D地图的绘制
  • SQL Server数据库多主模式解决方案
  • 面试小札:Java后端闪电五连鞭_11
  • prometheus监控windows主机
  • Springboot基于Web的高校志愿者服务管理系统81559
  • Git安装及基础学习
  • Blazor 中调用 JavaScript
  • 20241224在ubuntu20.04.6下的终端分屏软件terminator的安装以及使用