Fork me on GitHub

随笔分类 -  PCIE

摘要:PCIe(Peripheral Component Interconnect Express)信号完整性测试是确保高速串行链路可靠性的关键环节,主要涵盖以下测试内容: 1. 物理层测试 发送端(Tx)测试: 眼图测试:通过示波器观察信号的眼高(Eye Height)和眼宽(Eye Width),验证 阅读全文
posted @ 2025-02-02 21:52 yooooooo 阅读(96) 评论(0) 推荐(0) 编辑
摘要:1.概述 配置空间是PCIe设备/桥的标识符,其保存了设备/桥的信息。主机在枚举设备/桥的时候需要先访问配置空间,获取设备厂家、型号、类型、所需资源等信息,然后再分配资源,最后才能访问PCIe设备的存储或IO地址空间。PCIe总线规定了三种类型的配置空间,分别是PCIe Agent设备使用的配置空间 阅读全文
posted @ 2025-01-13 16:39 yooooooo 阅读(193) 评论(0) 推荐(0) 编辑
摘要:1.概述 PCIe总线的最大特点是像CPU访问DDR一样,可以直接使用地址访问PCIe设备(桥),但不同的是DDR和CPU同属于存储器域,而CPU和PCIe设备属于两个不同的域,PCIe设备(桥)的地址空间属于PCIe总线域。存储器域访问PCIe总线域或者PCIe总线域访问存储器域,需要经过一系列的 阅读全文
posted @ 2025-01-12 22:51 yooooooo 阅读(98) 评论(0) 推荐(0) 编辑
摘要:1.概述 早期的计算机使用PCI(Peripheral Component Interconnect)总线与外围设备相连,PCI总线使用单端并行信号进行数据传输,由于单端信号很容易被外部系统干扰,其总线频率很难进一步提高。目前,为了提高总线频率以获得更高的总线带宽,高速串行总线逐步替代了并行总线,P 阅读全文
posted @ 2025-01-12 22:23 yooooooo 阅读(227) 评论(0) 推荐(0) 编辑
摘要:PCIe TLP(事务层数据包)路由主要分为以下几类及其作用: 1. 基于地址的路由 (Address-Based Routing) 作用:用于Memory Read/Write和I/O Read/Write等事务,TLP头中包含目标地址,交换机根据该地址将TLP转发到正确的设备。 2. 基于ID的 阅读全文
posted @ 2025-01-12 12:25 yooooooo 阅读(20) 评论(0) 推荐(0) 编辑
摘要:模糊路由(Implicit Routing,又译为隐式路由)只能用于Message的路由。前面的文章中多次提到过,PCIe总线相对于PCI总线的一大改进便是消除了大量的边带信号,这正是通过Message的机制来实现的。 PCIe定义的Message主要有以下几种类型: Power Managemen 阅读全文
posted @ 2025-01-10 18:21 yooooooo 阅读(5) 评论(0) 推荐(0) 编辑
摘要:地址路由(Address Routing)的地址包括IO和Memory。对于Memory请求来说,32bit的地址使用3DW的Header,64bit的地址使用4DW的Header。而IO请求则只能使用32bit的地址,即只能使用3DW的Header。 注:再次强调,IO请求是为了兼容早期的PCI设 阅读全文
posted @ 2025-01-10 10:51 yooooooo 阅读(20) 评论(0) 推荐(0) 编辑
摘要:ID 路由(ID Routing)有的时候也被称为BDF路由,即采用Bus Number、Device Number和Function Number来确定目标设备的位置。这是一种兼容PCI和PCI-X总线协议的路由方式,主要用于配置请求(Configuration Request)的路由,在PCIe 阅读全文
posted @ 2025-01-09 18:15 yooooooo 阅读(21) 评论(0) 推荐(0) 编辑
摘要:首先来分析一个例子,如下图所示: 当包(Packet)到达Switch的输入端口(Ingress Port)时,端口首先会检查包是否有错误,然后根据包的路由(Routing)信息,来做出以下三种处理方式之一: 1、 接受这个包,并自己(Switch)使用它(Internal Use); 2、 将其通 阅读全文
posted @ 2025-01-09 17:10 yooooooo 阅读(62) 评论(0) 推荐(0) 编辑
摘要:上一篇文章介绍了Type0型配置空间Header中的BAR的作用和用法,但是PCIe中的桥设备(Switch和Root中的P2P)又是如何判断某一请求(Request)是否属于自己或者自己的分支下的设备的呢?(定义范围) 这实际上是通过Type1型配置空间Header中的Base和Limit寄存器来 阅读全文
posted @ 2025-01-05 12:28 yooooooo 阅读(28) 评论(0) 推荐(0) 编辑
摘要:基地址寄存器(BAR)在配置空间(Configuration Space)中的位置如下图所示: 其中Type0 Header最多有6个BAR,而Type1 Header最多有两个BAR。这就意味着,对于Endpoint来说,最多可以拥有6个不同的地址空间。但是实际应用中基本上不会用到6个,通常1~3 阅读全文
posted @ 2025-01-03 16:01 yooooooo 阅读(307) 评论(0) 推荐(0) 编辑
摘要:早期的PC中,所有的IO设备(除了存储设备之外的设备)的内部存储或者寄存器都只能通过IO地址空间进行访问。但是这种方式局限性很大,而且效率低,于是乎,软件开发者和硬件厂商都不能忍了……然后一种新的东西就出来了——MMIO。MMIO,即Memory Mapped IO,也就是说把这些IO设备中的内部存 阅读全文
posted @ 2024-12-28 22:00 yooooooo 阅读(58) 评论(0) 推荐(0) 编辑
摘要:前面的文章中介绍过有两种类型的配置空间,Type0和Type1,分别对应非桥设备(Endpoint)和桥设备(Root和Switch端口中的P2P桥)。 Type0还是Type1是由事务层包(TLP)包头中的Type Field所决定的,而读还是写则是由TLP包头中的Format Field所决定的 阅读全文
posted @ 2024-12-28 21:58 yooooooo 阅读(51) 评论(0) 推荐(0) 编辑
摘要:需要特别注意的是,PCIe的Spec中明确规定只有Root有权限发起配置请求(Originate Configuration Requests),也就是说PCIe系统里面的其他设备是不允许去配置其他设备的配置空间的,即peer-to-peer的配置请求是不允许的。并且配置请求的路由(Routing) 阅读全文
posted @ 2024-12-27 17:59 yooooooo 阅读(43) 评论(0) 推荐(0) 编辑
摘要:前面的文章中介绍过,每一个PCIe设备可以只有一个功能(Function),即Fun0。也可以拥有最多8个功能,即多功能设备(Multi-Fun)。不管这个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间(Configuration Space)与之对应。 和PCI总线一样,PCI 阅读全文
posted @ 2024-12-25 18:25 yooooooo 阅读(147) 评论(0) 推荐(0) 编辑
摘要:前面的一系列文章简要地介绍了PCIe总线的结构、事务层、数据链路层和物理层。下面我们用一个简单地的例子来回顾并总结一下。 Requester端 如下图所示,Requester的应用层(软件层)首先向其事务层发送如下信息:32位(或者64位)的Memory地址,事务类型(Transaction Typ 阅读全文
posted @ 2024-12-25 15:01 yooooooo 阅读(73) 评论(0) 推荐(0) 编辑
摘要:前面的文章简单的介绍了一些关于PCIe总线事务层(Transaction Layer)和数据链路层(Data Link Layer)的一些基本概念。这篇文章来继续聊一聊PCIe总线的最底层——物理层(Physical Layer)。在PCIe Spec中,物理层是被分为两个部分单独介绍的,分别是物理 阅读全文
posted @ 2024-12-25 10:19 yooooooo 阅读(67) 评论(0) 推荐(0) 编辑
摘要:PCIe总线设计之初,充分考虑到了音频和视频传输等这些对时间要求特别敏感的应用。为了保证这些特殊应用的数据包能够得到优先发送,PCIe Spec中为每一个包都分配了一个优先级,通过TLP的Header中的3位(即TC,Traffic Class)。如下图所示: TC值越大,表示优先级越高,对应的包也 阅读全文
posted @ 2024-12-24 16:56 yooooooo 阅读(45) 评论(0) 推荐(0) 编辑
摘要:本节概述 传输速率与带宽对应表如下,注:此表为全双工通信速率且没考虑编码方式 详细说明 我们在接触PCIe设备时会接触到一个词,传输速率,比如8GT/s。或者有人问你设备的带宽多少?通信速率多少? Width(带宽):通常用x1、x2、x4、x8等表示,表示该链路由几条lane组成。 Speed(速 阅读全文
posted @ 2024-12-24 11:26 yooooooo 阅读(577) 评论(0) 推荐(0) 编辑
摘要:前面的文章介绍了TLP的几种类型以及TLP的包结构。这篇文章来详细地聊一聊Non-Posted Transaction(包括Ordinary Read、Locked Read和IO/Configuration Writes)与Posted Writes(包括Memory Writes和Message 阅读全文
posted @ 2024-12-24 10:33 yooooooo 阅读(43) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示