0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是PCIe?

UnionMemory忆联 来源:未知 2023-07-04 18:15 次阅读

PCIe是一种高速串行计算机扩展总线标准,自2003年推出以来,已经成为服务器(Server)和PC上的重要接口。今天为大家简单介绍一下PCIe的发展历史以及它的工作原理


一、PCIe的由来

PCIe接口的全称是Peripheral Component Interconnect Express,原来的名字是“3GIO”,由Intel在2001年提出。PCIe的前身是PCI,PCI 使用的是并行传输方式,有较多的限制,并使用数据包(Packet)进行数据传输,数据报文在发送和接收过程中需要经过务层、数据链路层和物理层多个层次。


PCIe串行总线标准被推出时,旨在替代旧的PCI、PCI-X和AGP总线标准,以实现更高的数据速率并简化系统设计。在交由PCI-SIG(PCI特殊兴趣组织)认证发布后改名为“PCI-Express”,简称“PCI-e”。此后,随着时间的推移PCIe不断改进以适应现代计算机的最新带宽需求。


图1


2021年,PCIe 6.0 规范发布。每通道数据传输速率从PCIe 5.0的32 GT/s翻番至64 GT/s,PCIe 6.0*16通道的带宽高达256 GB/s,除了带宽和效率的提升外,PCIe 6.0还具有更低的延迟,是PCIe技术的又一大飞跃。


二、PCIe链路的常见设备

PCIe采用的是树型拓扑结构, 一般由根复合体(Root Complex),中继器(Repeater),终端设备(Endpoint)等类型的PCIe设备组成。


接下来将讲述PCIe如何通过下图突出显示的典型链路进行初始化和传输。


图2


Root Complex:根复合体是CPU和PCIe总线连接的接口。主要负责存储器域到PCIe总线域的地址转换,随着虚拟化技术的引入,根复合体的功能也越来越复杂。根复合体把来自CPU的request转化成PCIe的4类request(configuration、memory、I/O、message)并发送给下面的设备。


Repeater:中继器是一种信号调节装置,可分为两类:Retimers和Redriver,两者都是常用的PCIe组件,Retimer通过内部时钟重构信号,再恢复后发送出去;Redriver则是通过信号均衡化和预加强等技术,重新加强再发送出去。在图示中,我们将使用PCIe 4.0兼容的Retimers举例。


PCIe Endponit: PCIe终端设备,是PCIe树型结构的末端节点。比如SSD,网卡、GFX卡等等。


图3


三、PCIe链路初始化

在了解PCIe链路是如何建立以及数据如何通过PCIe协议传输之前,我们先了解一下常见PCIe控制信号的功能。


图4


PERST#信号为全局复位信号,由处理器系统提供。处理器系统需要为PCIe插槽和PCIe设备提供该复位信号。PCIe设备使用该信号复位内部逻辑,当该信号有效时,PCIe设备将进行复位操作。


WAKE#和CLKREQ#信号都用于在本文讨论范围之外的低功率状态之间转换。


REFCLK#是PCIe设备开始数据传输的先决条件,PCIe设备通过使用REFCLK#提供的100 MHz外部参考时钟(Refclk),用于协调在两个PCIe设备间的数据传输。


PCIe链路在初始状态时,需要检测对端设备是否存在,然后才能进行链路训练。所有PCIe设备通电并提供参考时钟信号后在每个通道上将拥有接收器检测(Receiver Detection)电路,该电路将允许PCIe设备确定是否有要配对的链路伙伴。假设PCIe Rx检测电路检测到另一个设备,则每个通道将开始以2.5 GT/s的速度进行传输串行数据。


图5


2.5 GT/s是PCIe 1.0采用的数据速率,另外由于PCIe 1.0与任何PCIe设备兼容,因此每个PCIe链路都以相同的链路初始化过程开始。以下图为例,Root Complex、Retimer和Endpoint都以PCIe 1.0的速度开始传输。


图6


在经过PCIe链路初始化后,每个器件开始接收数据并做出响应。PCIe连接开始链路训练过程并进入配置阶段,在该阶段中,由于通道长度变化而导致数据中的任何偏差都能得到校准,PCIe链路的宽度、链路速率、链路翻转和链路极性也在此阶段确定。


图7


当存在多条链路时,则PCIe连接称为PCIe分叉。在示例中,有一个非分叉连接,即所有通道都分配给编号为0的链路。由于Retimer链路分为两部分,其两侧的链路分别进行链路初始化。在确定链路和通道号后,PCIe链路可以进入多种状态。


图8


以进入L0状态举例,这是发送和接收数据与数据包的正常操作状态。到达L0后Root Complex和Endpoint可相互通信,PCIe链路也可转换为多种低功耗状态或另一种链路训练状态。在此不做过多阐述。


图9


四、PCIe链路均衡

当PCIe设备支持PCIe Gen2时,链路速度也会随之提高。如果数据速率为PCIe Gen3或以上,PCIe链路将需要经历额外链路优化过程(称为链路均衡)。


链路均衡以建立设备间稳定的连接为目的。通过调节Tx (传输端)和Rx (接收端)的设置,提高信号质量,使PCIe链路以最稳定且更快的速率传输。由于PCIe在Gen3及以上的每一代均需优化连接,因此链路均衡过程可能发生多次。


例如:若所有PCIe设备为Gen5,则有3次链路均衡过程(第1次:Gen1-Gen3;第2次:Gen3-Gen4;第3次:Gen4-Gen5)。链路均衡通过PCIe 规范中定义的preset值来实现,preset指不同的预过冲(Preshoot)和去加重(De-emphasis)的组合。对于Gen3和Gen4,有11个preset值,即preset0-preset10。对于不同的链路情况,系统要求Rx端发送Tx EQ preset设置请求给Tx端,让其做对应的preset均衡设置;Tx端发送Rx EQ均衡设置,要求Rx端做相应的设置,最终获得一个最优的均衡组合和Rx端的眼图。


图10


Phase0:第1阶段链路均衡涉及上游端口(Upstream port)和下游端口(Downstream port)之间的精确动态协商,下游端口通过向上游设备发送每个通道所需的发送器preset值来开始链路均衡,被称为第0阶段链接均衡。在接收到下游端口的请求后不久,上游端口增加到第3代(Gen3)链路数据速率,并开始使用所需preset将训练序列发送回下游端口。链路速度增加至Gen3(8 GT/s)后,链路均衡过程通过来回发送preset值来协商每个端口的preset配置,从而继续优化链路。


图11


Phase1:为了充分优化链路,以便能够交换训练序列(Training Sequences)并且完成用于精调目的的剩余链路均衡阶段,尽管有出现链路质量差的可能性,相同的训练序列依然会被重复发送,来确保下游端口接收到正确的preset值。


图12


Phase2:在第1阶段链路的误码率实现BER≤10e-4后,进入到Phase 2,随后进一步优化上游端口的preset值,直至获得最优设置,链路的误码率应满足BER ≤ 1E-12。


Phase3:到第3阶段对下游端口执行相同的协商。上游端口通过训练序列发送均衡请求去调整下游端口的preset值,直至获得最优设置,链路的误码率应满足BER ≤ 1e-12。


当Phase3完成后,链路均衡也已完成,此时链路以Gen3的速率进入L0状态,并在该速率进行稳定通信。对于更高的传输速率,PCIe设备必须进行多次链路均衡过程。


图13


然而在某些主板设计中,尤其是那些具有长通道链路的主板,这种信号质量无法实现,可能需要另外的信号调节。在这种情况下,中继器(如Redriver,Retimer)则被用来做信号调节,并在PCIe设备和根复合体之间提供高质量信号。


Union Memory

内容来源:
*TI Precision Labs- What is PCIe?
*The secret to optimizing PCIe high-speed signal transmission – dynamic link equalization


长按识别关注更多忆联资讯



原文标题:什么是PCIe?

文章出处:【微信公众号:UnionMemory忆联】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    12

    文章

    3859

    浏览量

    84664
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2690

    浏览量

    115498

原文标题:什么是PCIe?

文章出处:【微信号:UnionMemory忆联,微信公众号:UnionMemory忆联】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是PCIePCIe有什么用途?什么是PCIe通道

    什么是PCIePCIe有什么用途?什么是PCIe通道,x1、x4、x8和x16是什么意思?PCIe 5.0有何不同? PCI-Express(peripheral component
    的头像 发表于 01-30 16:09 767次阅读

    PCIe标准的演进历史 各代PCIe标准之间的主要差异

    自2003年推出以来,PCIe发展至今已经从最初的1.0升级到了6.0,本文则为大家简单介绍一下PCIe标准的演进历史以及各代PCIe标准之间的主要差异。
    的头像 发表于 12-14 16:38 2153次阅读
    <b class='flag-5'>PCIe</b>标准的演进历史 各代<b class='flag-5'>PCIe</b>标准之间的主要差异

    什么是PCIePCIe有什么用途?PCIe 5.0有何不同?

    随着英特尔Alder Lake CPU的发布,以及AMD 7000 Ryzen CPU的即将发布,PCIe 5.0 硬件终于成为现实。但什么是 PCIe 5.0?
    的头像 发表于 11-18 16:48 1669次阅读
    什么是<b class='flag-5'>PCIe</b>?<b class='flag-5'>PCIe</b>有什么用途?<b class='flag-5'>PCIe</b> 5.0有何不同?

    体验紫光PCIE之使用WinDriver驱动紫光PCIE

    紫光的logos系列的PGL50H/PGL100H、logos-2全系列都集成gen2×4的PCIE硬核,且官方也提供了例程。 紫光的PCIE用起来还是挺方便的,生成IP的同时生成了对应的PCIE
    发表于 11-17 14:35

    PCIe引脚定义和PCIe协议层介绍

    本文我们将向大家介绍PCIe引脚定义以及PCIe协议层。
    发表于 09-26 11:39 7657次阅读
    <b class='flag-5'>PCIe</b>引脚定义和<b class='flag-5'>PCIe</b>协议层介绍

    PCIE采集系统:前端图像或ADC数据采集,通过PCIE传输至PC。可实现PCIE 2.0 x1/x4/x8。

    数据采集PCIe
    明德扬科技
    发布于 :2023年09月08日 11:56:14

    项目承接案例:PCIE采集系统 前端图像或ADC数据采集,通过PCIE传输至PC。可实现PCIE 2.0 x#

    PCIeADC数据
    明德扬助教小易老师
    发布于 :2023年08月30日 12:25:38

    PCIe AMBA集成指南

    本文档旨在提供关于将PCIe接口集成到基于AMBA的片上系统(SoC)的指导。 假设PCIe接口通过基于AXI或ACE协议的互连连接到SoC的其余部分。 读者应熟悉PCIe、AMBA AXI
    发表于 08-17 07:25

    PCIe®标准演进历史

    自2003年推出以来,PCIe发展至今已经从最初的1.0升级到了6.0,在上一篇文章中为大家介绍了PCIe基础知识:《什么是PCIe?》 ,本文则为大家简单介绍一下 PCIe 标准的演
    的头像 发表于 07-26 08:05 926次阅读
    <b class='flag-5'>PCIe</b>®标准演进历史

    PCIe的基础知识整理

    PCIe 7.0规范的数据传输速率将再次倍增,达到128 GT/s,大幅度高于PCIe 6.0的64 GT/s和PCIe 5.0的32 GT/s。一个PCIe 7.0 x16通道可以支
    发表于 06-25 10:48 561次阅读
    <b class='flag-5'>PCIe</b>的基础知识整理

    如何读写PCIe

    我是一名PCIe新手,想了解以下问题: 1、如何测试PCIe? 2、如何读写PCIe(两块开发板通过PCIe线互连,分别配置为RC和EP)? 3.如何支持NTB?
    发表于 06-12 06:05

    PCIe 6.0入门之什么是 PCIe 6.0

    PCI Express® 6.0 (PCIe® 6.0) 规范由 PCI-SIG® 于 2022 年 1 月发布。最新一代的 PCIe 标准带来了许多激动人心的新功能,旨在提高计算密集型工作负载的性能,包括数据中心、 AI/ML 和 HPC 应用程序
    的头像 发表于 05-22 17:27 5116次阅读
    <b class='flag-5'>PCIe</b> 6.0入门之什么是 <b class='flag-5'>PCIe</b> 6.0

    Zynq PCIe电路设计

    ZYNQ7045的PCIE电路设计,板卡使用插针式连接器,引出了PCIE信号,未使用金手指。为了插入机箱设计了扩展版,插座与插针对应,带有PCIE金手指。目前遇到的问题是,当板卡连接扩展板使用金手指
    发表于 05-16 11:07

    差分探头在pcie测试上的应用

    差分探头是一种常用的测试仪器,在PCIE测试中也有广泛的应用。本文将介绍差分探头在PCIE测试上的应用及其优势。
    的头像 发表于 05-11 10:54 490次阅读

    可以将多个PCIe设备连接到一般的单个PCIe控制器吗?

    我们可以将多个 PCIe 设备 (IC) 连接到一般的单个 PCIe 控制器(在我们的案例中更具体地说是 NXP LS20xxA 处理器)吗? 例如,将四个不同的 PCIe x1 设备 (IC
    发表于 05-05 07:35