PCIe总线-PCIe总线简介(一)

news2024/9/26 5:23:19

1.概述

早期的计算机使用PCI(Peripheral Component Interconnect)总线与外围设备相连,PCI总线使用单端并行信号进行数据传输,由于单端信号很容易被外部系统干扰,其总线频率很难进一步提高。目前,为了提高总线频率以获得更高的总线带宽,高速串行总线逐步替代了并行总线,PCI Express总线已逐渐替代了PCI总线。

PCI Express总线使用高速差分总线和端到端的连接方式,每个PCIe设备都有一个或多个独立的传输通道(称为"lanes"),这些通道直接连接到主板的芯片组或CPU。每条通道包含两对差分信号,一对用于发送数据,一对用于接收数据,因此支持全双工通信。若要增加带宽,只需要增加lanes的数量即可,更加灵活。

  1. Lane和版本
    PCIe的基本单元是lane,它由一对发送和一对接收差分信号组成。多条lanes可形成更宽的传输通道,例如x1、x2、x4、x8、x16和x32配置,其中x代表lane的数量。随着计算机的发展,PCIe标准也在发展,目前常见的版本是PCIe 1.0、2.0、3.0、4.0以及5.0,每个新版本提供的带宽相比前一版本大约翻一番。

  2. 可扩展性和兼容性
    PCIe对热插拔设备提供支持,同时它也向后兼容;也就是说较新版本的插槽可以接受较旧版本的卡,而较新版本的卡也可以插入到较旧的插槽中工作(但速度会降低至插槽所支持的最高标准)。这提供了极大的灵活性和系统升级的方便性。

  3. 使用场景
    PCIe被广泛用于各种类型的设备连接,包括显卡、固态硬盘、以太网卡、Wi-Fi控制器、雷电扩展卡和其他高速外部设备。由于它的高速度和低延迟特性,PCIe在现代计算中是首选接口。

  4. 技术优势
    PCIe的主要优势在于其高性能和可扩展的带宽,这使得它能够支持最新的存储设备、高性能GPU以及通信设备的速度要求。其其他优势包括更小的物理占位、更好的I/O虚拟化支持和省电等。

随着计算需求的不断增长和新技术的出现,PCIe技术也在不断演进,以更好的适应未来硬件的发展需求。

2.速率

协议版本编码类型信号最大传输速度x1带宽x2带宽x4带宽x8带宽x16带宽推出时间
1.08b/10bNRZ2.5 GT/s250MB/s500MB/s1GB/s2GB/s4GB/s2003年
2.08b/10bNRZ5.0 GT/s500MB/s1GB/s2GB/s4GB/s8GB/s2007年
3.0128b/132bNRZ8.0 GT/s~1GB/s~2GB/s~4GB/s~8GB/s~16GB/s2010年
4.0128b/132bNRZ16.0 GT/s~2GB/s~4GB/s~8GB/s~16GB/s~32GB/s2017年
5.0128b/132bNRZ32.0 GT/s~4GB/s~8GB/s~16GB/s~32GB/s~64GB/s2019年
6.01b/1b(Flit Mode)PAM464.0 GT/s8GB/s16GB/s32GB/s64GB/s128GB/s2022年
7.01b/1b(Flit Mode)PAM4128.0 GT/s16GB/s32GB/s64GB/s128GB/s256GB/s2025年
  1. NRZ(Non-Return-to-Zero,不归零编码): 使用高低电平传输数据位,在数据位脉冲结束后,不需要回归到零电平。
  2. PAM4(4-Level Pulse Amplitude Modulation,四电平脉冲幅度调制): 是一种调制技术,采用4个不同的信号电平传输数据。PAM4信号的每个符号周期包含了两个比特的逻辑信息,比如用逻辑信号“0”来代表逻辑信号“00”,“1”代表“01”,“2”代表“10”,“3”代表“11”。
  3. Flit Mode: 流控单元模式,是一种1b/1b的编码方式。之前是以TLP为单位进行事务传输,PCIe 6.0以FLIT为单位进行事务传输,每个FLIT有256B数据,每B数据占用4UI。

3.PCIe总线拓扑结构

下图是一个典型的x86计算机PCIe总线拓扑结构。RC(Root Complex)是每条PCIe总线的开始,PCIe设备通过RC和CPU通信。在x86计算机中,RC集成了PCIe总线端口、存储器控制器等一系列与外部设备有关的接口,比较复杂,而在其他体系结构的计算机中,RC可能只包含PCIe总线端口,通常只有一个端口。下图中的RC内部通过PCI-PCI桥扩展出来3个端口。第一个端口下面节了一个Switch,Switch的作用是扩展链路,该Switch通过内部的PCI-PCI桥扩展出来3个下行端口,这3个端口都可以接PCIe设备,PCIe设备被称为EP(Endpoint)。第二个端口没有扩展,可以直接接PCIe设备。第三个端口接了一个PCIe转PCI或PCI-X桥,该桥下面可以接PCI或PCI-X设备。

PCIe_Topology_Example

下图是intel 10代酷睿和400系列芯片组的示意图。CPU通过DMI总线和PCH芯片(南桥)连接。DMI总线使用和PCIe总线相同的物理层,因此带宽也和PCIe相同。CPU和400系列芯片组都集成了PCIe RC。CPU中RC引出的x16连接显卡。400系列芯片组的RC引出的24 lanes连接对带宽要求不高的设备,比如PCIe网卡、M.2 NVMe SSD等。

400系列芯片组示意图

下图是intel 12代酷睿和600系列芯片组的示意图。相比10代酷睿和400系列芯片组,12代酷睿和600系列芯片组将PCIe总线版本提升到5.0,提升了PCIe总线数量,增加了CPU直出的PCIe总线数量,避免经过北桥芯片引起的性能损失。

Z690芯片组示意图

4.PCIe总线层次结构

PCIe总线是一个分层结构,结构如下图所示,包含了应用层(Device Core、PCIe Core Hardware/Software Interface)、事物层(Transaction Layer)、数据链路层(Data Link Layer)、物理层(hysical Layer)。报文中的数据在应用层中产生,发送后会依次穿越事物层、数据链路层和物理层,接受端接收到报文后处理顺序和发送端相反,其依次经过物理层、数据链路层和事物层,数据最终被交付到接受端的应用层。

PCI_Express_Device_Layers

和网络报文类似,PCIe报文发送时,会在报文头和报文尾加上该层PCIe协议规定的数据,接收端接收到报文后再依次剥离相应的协议数据。如下图所示,发送数据时Data在应用层产生,穿越事物层时会加上Header和ECRC(End-to-end CRC),穿越数据链路层时会加上Sequence Number和LCRC(Link CRC),穿越物理层时会加上Framing。接收数据时,穿越物理层时剥离Framing,穿越数据链路层时剥离Sequence Number和LCRC,穿越事物层时剥离Header和ECRC,最终数据交付到应用层。事物层、数据链路层和物理层PCIe总线规范做了明确的规定,要求设计者严格遵守,而应用层PCIe总线规范没有严格规定,设计者可以根据需要进行自行设计。

ECRC是可选的,其主要的目的是解决Switch中可能的传输错误问题,如果用户的PCIe总线中没有Switch(只是简单的Root与Endpoint的端对端直连),完全可以不使用ECRC。

Packet_Flow_Through_the_Layers

  1. 应用层
    这一层决定了PCIe设备的类型和基础功能,可以由软件和硬件协同实现。如果该设备为EP,则其最多可拥有8项功能(Function),且每项功能都有一个对应的配置空间(Configuration Space)。如果该设备为Switch,则应用层需要实现包路由(Packet Routing)等相关逻辑。如果该设备为RC,则应用层需要实现虚拟的PCIe总线0(Virtual PCIe Bus 0),并代表整个PCIe总线系统与CPU通信。

  2. 事物层
    接收端的事务层负责事务层包(Transaction Layer Packet,TLP)的解码与校检,发送端的事务层负责TLP的创建。此外,事务层还有QoS(Quality of Service)和流量控制(Flow Control)以及Transaction Ordering等功能。

  3. 数据链路层
    数据链路层负责数据链路层包(Data Link Layer Packet,DLLP)的创建、解码和校检。同时,本层还实现了Ack/Nak的应答机制,以处理传输失败的情况。

  4. 物理层
    物理层负责Ordered-Set Packet的创建和解码,同时负责发送与接收所有类型的包(TLPs、DLLPs和Ordered-Sets)。在发送之前需要对包进行一系列的处理,如Byte Striping、Scramble(扰码)和Encoder(8b/10b for Gen1/Gen2, 128b/130b for Gen3/Gen4)。在接收端需要进行相反的处理。此外,物理层还实现了链路训练(Link Training)和链路初始化(Link Initialization)的功能,一般通过链路训练状态机(Link Training and Status State Machine,LTSSM)完成。

每一个PCIe接口(interface)都必须包含事物层、数据链路层和物理层,比如Switch的每个port,如下图所示。

Switch_Port_Layers

PCIe总线层次结构的详细信息如下图所示,这里不再赘述。

PCIe总线层次结构的详细信息

5.PCIe总线信号

参考资料

  1. PCIEXPRESS体系结构导读
  2. PCI Express technology 3.0
  3. PCI_Express_Base_r3.0_10Nov10
  4. PCIe7_0_Intro_PCIe_6_0_Solution
  5. http://blog.chinaaet.com/justlxy/p/5100053251
  6. https://www.jianshu.com/p/5889b7963558

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

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

相关文章

k8s笔记27--快速了解 k8s pod和cgroup的关系

k8s笔记27--快速了解 k8s pod和 cgroup 的关系 介绍pod & cgroup注意事项说明 介绍 随着云计算、云原生技术的成熟和广泛应用,K8S已经成为容器编排的事实标准,学习了解容器、K8S技术对于新时代的IT从业者显得极其重要了。 之前在文章 docker笔记13–…

UDS升级入门,手把手教你——开篇

前面关于OTA的文章,写的比较乱,索性整了一个专栏,来认真梳理下,话不多开整。 准备工作: 1、QT环境 上位机开发 2、MDK环境,STM32F103,vscode MCU开发环境,调试 3、JFlash环境安…

【C语言数据结构】排序

1.排序的概念 在深入研究各个排序算法之前,首先,我们要对排序有个大概的了解,即与排序相关的一些概念 Q:什么是排序? A:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小…

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生,为了更好的使校园考研有一个更好的环境好好的学习,建议一个好的校园网站,是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…

使能 Linux 内核自带的 FlexCAN 驱动

一. 简介 前面一篇文章学习了 ALPHA开发板修改CAN的设备树节点信息,并加载测试过设备树文件,文件如下: ALPHA开发板修改CAN的设备树节点信息-CSDN博客 本文是学习使能 IMX6ULL的 CAN驱动,也就是通过内核配置来实现。 二. 使能…

Spring Cloud五:Spring Cloud与持续集成/持续部署(CI/CD)

Spring Cloud一:Spring Cloud 简介 Spring Cloud二:核心组件解析 Spring Cloud三:API网关深入探索与实战应用 Spring Cloud四:微服务治理与安全 文章目录 一、Spring Cloud在CI/CD中的角色1. 服务注册与发现:自动化管理…

YOLOV5 部署:TensorRT的安装和使用

1、介绍 TensorRT 可以加速神经网络的推理时间,常常在工业生产中使用 因为TensorRT需要使用到cuda和cudnn加速,所以需要安装这两个,安装的具体步骤参考前文: YOLOV5 部署:cuda和cuDNN安装-CSDN博客 2、TensorRT 下载 TensorRT下载地址:NVIDIA TensorRT Download | NV…

分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测

分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测 目录 分类预测 | Matlab实现CNN-LSTM-Mutilhead-Attention卷积神经网络-长短期记忆网络融合多头注意力机制多特征分类预测分类效果基本介绍模型描述程序设计参…

初识kafka-数据存储篇1

目录 背景 1 kafka总体体系结构 2 疑问解答 2.1 高吞吐低延迟 2.2 实现分布式存储和数据读取 2.3 如何保证数据不丢失 背景 最近在和产品过项目审批的时候,深刻感受到业务方对系统的时时响应提出了更高的要求。目前手上大部分的业务都是基础定时任务去实现的&…

[Java基础揉碎]单例模式

目录 什么是设计模式 什么是单例模式 饿汉式与懒汉式 饿汉式vs懒汉式 懒汉式存在线程安全问题 什么是设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、 以及解决问题的思考方式。设计模式就像是经典的棋谱&am…

使用 RunwayML 对图像进行 Camera 操作

RunwayML 是一個功能強大的平台,可以讓您使用 AI 和机器学习来增强您的图像和视频。 它提供一系列预训练模型,可用于各种任务,包括图像编辑、风格化和特效。 在本文中,我们将介绍如何使用 RunwayML 对图像进行 Camera 操作。我们…

游戏引擎中的地形系统

一、地形的几何 1.1 高度图 记录不同定点的高度,对每个网格/顶点应用高度、材质等信息,我们每个顶点可以根据高度改变位移 但是这种方法是不适用于开放世界的。很难直接画出几百万公里的场景 1.2 自适应网格细分 当fov越来越窄的时候,网格…

Stable diffusion(四)

训练自己的Lora 【DataSet】【Lora trainer】【SD Lora trainer】 前置的知识 batch size:模型一次性处理几张图片。一次性多处理图片,模型能够综合捕捉多张图片的特征,最终的成品效果可能会好。但是处理多个batch size也意味着更大的显存…

第一篇:概述、 目录、适用范围及术语 --- IAB/MRC《增强现实(AR)广告(效果)测量指南1.0 》

第一篇:概述、目录、适用范围及术语 - IAB与MRC及《增强现实广告效果测量指南1.0》 --- 我为什么要翻译美国IAB科技公司系列标准 ​​​​​​​​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效…

【ArcGIS】统计土地利用数据每类面积及占比

1.栅格转面 转换工具/从栅格/栅格转面,得到面.shp 不要勾选简化面,否则会影响面积 2.添加面积字段,计算面积 面.shp添加双精度字段area 查看面.shp属性表中有没有gridcode为0的,如有的话编辑矢量,删除该要素。 计…

STM32学习笔记(5_2)- EXTI外部中断代码

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 本期介…

nodejs+vue高校奖助学金系统python-flask-django-php

高校奖助学金系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,…

Python Flask 自定义404错误

from flask import Flask, abort, make_response, request, render_templateapp Flask(__name__)# 重定向到百度 app.route(/index, methods["GET", "POST"]) def index():if request.method "GET":return render_template("index.html&q…

tabs自定义样式

使用el-tabs 去修改样式的话比较麻烦&#xff0c;索性直接用div来制作。 <div class"contain"><div class"tab_wrap"><div :class"[skew, first, active 1 ? isActive: ]" click"tabClick(1)"><span class&quo…

系统大屏可视化展示平台解决方案(原件)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.7.系统权限设计 3.8.数据查询过程设…