首页 > 其他分享 >PCIe扫盲——PCIe总线体系结构入门

PCIe扫盲——PCIe总线体系结构入门

时间:2024-12-17 13:58:43浏览次数:3  
标签:Layer 扫盲 总线 事务 PCIe Link 物理层 链路层

和很多的串行传输协议一样,一个完整的PCIe体系结构包括应用层、事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。

其中,应用层并不是PCIe Spec所规定的内容,完全由用户根据自己的需求进行设计,另外三层都是PCIe Spec明确规范的,并要求设计者严格遵循的。

image

一个简化的PCIe总线体系结构如上图所示,其中Device Core and interface to Transaction Layer就是我们常说的应用层或者软件层

这一层决定了PCIe设备的类型和基础功能,可以由硬件(如FPGA)或者软硬件协同实现。如果该设备为Endpoint,则其最多可拥有8项功能(Function),且每项功能都有一个对应的配置空间(Configuration Space)。

则其最多可拥有8项功能(Function),且每项功能都有一个对应的配置空间(Configuration Space)。如果该设备为Switch,则应用层需要实现包路由(Packet Routing)等相关逻辑。如果该设备为Root,则应用层需要实现虚拟的PCIe总线0(Virtual PCIe Bus 0),并代表整个PCIe总线系统与CPU通信。

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

数据链路层(Data Link Layer):数据链路层负责数据链路层包(Data Link Layer Packet,DLLP)的创建,解码和校检。同时,本层还实现了Ack/Nak的应答机制。

物理层(Physical Layer):物理层负责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体系结构中,事务层,数据链路层和物理层存在于每一个端口(Port)中,也就是说Switch中必然存在一个以上的这样的结构(包括事务层,数据链路层和物理层的)。一个简化的模型如下图所示:

image

关于事务层,数据链路层和物理层的详细的功能图标如下图所示:
image

标签:Layer,扫盲,总线,事务,PCIe,Link,物理层,链路层
From: https://www.cnblogs.com/linhaostudy/p/18612253

相关文章

  • PCIe扫盲——PCIe总线基本概念
    PCIe总线的提出可以算是代表着传统并行总线向高速串行总线发展的时代的到来。实际上,不仅是PCI总线到PCIe总线,高速串行总线取代传统并行总线是一个大的趋势。如ATA到SATA,SCSI到USB等……不过,为了兼容之前的PCI总线设备,虽然PCIe是一种串行总线,无法再物理层上兼容PCI总线,但是在软件......
  • PCIe扫盲——PCIe总线怎样做到在软件上兼容PCI总线
    前面的文章中多次说道,PCIe总线在软件上是向前兼容PCI总线的。因此,PCIe总线完整的继承了PCI总线中的配置空间(ConfigurationHeader)的概念。在PCIe总线中也有两种Header,Header0和Header1,分别代表非桥和桥设备,这与PCI总线是完全一致的。在PCIe总线中,非桥设备也就是Endpoint。如下图所......
  • WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块 - micropython开发环境搭建
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 题外话:脚本语言运行原理: https:......
  • PCIe扫盲——PCI总线配置周期产生和配置寄存器
    上一篇文章中也是说到了,I/OAddressSpace的空间很有限(64KB),所以一般在I/OSpace中都有两个寄存器,第一个指向要操作的内部地址,第二个存放读或者写的数据。因此,对于PCI的配置周期来说,包含了两个步骤:Step1:CPU先对IOAddress中的0xCF8~0xCFB写入要操作的配置寄存器的地址。如下图所示......
  • 【计组不挂科】计算机组成第六章< 总线 >习题库(选择题&判断题&填空题&填空计算题)(含答案与解
    前言大家好吖,欢迎来到YY滴计算机组成系列,热烈欢迎!本章主要内容面向接触过C++的老铁本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考本章为分章节的习题内容题库,试卷与大题库可以看下面传送门其他博客【计组不挂科】计算机......
  • PCIe扫盲——PCI总线的地址空间分配
    PCI总线具有32位数据/地址复用总线,所以其存储地址空间为2的32次方=4GB。也就是PCI上的所有设备共同映射到这4GB上,每个PCI设备占用唯一的一段PCI地址,以便于PCI总线统一寻址。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。如下图所示:注:需要注意的是PCI的地址空间......
  • 为什么说总线伺服比脉冲伺服强?
    在现代工业自动化和精密控制领域,伺服系统无疑是技术发展的前沿。作为自动化控制的核心,伺服系统广泛应用于各种机械设备中,尤其是在高精度、高动态性能要求的应用场景下。总线伺服和脉冲伺服是市场上最常见的两种伺服技术,它们各自的特性、优缺点和适用场景存在着显著差异。然而,在......
  • 关于CAN总线转接器的PCB板设计方案
    一、题记关于CAN总线网上的资料很多,什么《看不会你打死我》或者《有史以来最简单通俗的CAN的讲解!》诸如此类的标题党确实很多了,但总体来说写的都还不错,这里我就不再赘述了,笔者也是看别人的博客学习的,大家可以自行百度。二、正文一般来说CAN总线有两种接法:1、闭环式接120R的......
  • PCIe扫盲——PCI总线的中断和错误处理
    PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中断控制器连接。在PCI体系结构中,这些中断信号属于边带信号(SidebandSignals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是......
  • PCIe扫盲——PCI总线的三种传输模式
    本文来简单地介绍一下PCISpec规定的三种数据传输模型:ProgrammedI/O(PIO),Peer-to-Peer和DMA。三种数据传输模型的示意图如下图所示:首先来介绍一下ProgrammedI/O(PIO)PIO在早期的PC中被广泛使用,因外当时的处理器的速度要远远大于任何其他外设的速度,所以PIO足以胜任所有的任务。举......