
PCIE
文章平均质量分 72
本专栏介绍PCIe每层基础协议,并且详解一下三部分内容: 1.xilinx PIO代码解析,会分析每一句FPGA逻辑代码 2.xapp1052代码解析,会分析每一句FPGA逻辑代码 3.xdma框架及代码解析,会教大家深入应用xdma IP 核
zsmcdut
这个作者很懒,什么都没留下…
展开
-
DMA、链式DMA、RDMA(精华讲解)
一、DMA DMA全称Direct Memory Access,即直接存储器访问。CPU完成传输配置后,即可不在参与传输过程,由DMA控制器将数据从一个地址空间复制到另外一个地址空间。最长见的是本地DMA传输,如图1.1所示。 图1.1 &nbs...转载 2022-05-25 10:35:25 · 3266 阅读 · 0 评论 -
访问PCIe BAR空间
转:https://blog.youkuaiyun.com/abcamus/article/details/73518752 google了一圈,发现xilinx论坛的一个回答比较好, 链接如下: https://forums.xilinx.com/t5/PCI-Express/PCI-express-Base-Address-Register/td-p/685289 里面讲了如何访问BAR指定的mem空间。 下面对BAR空间以及配置空间的访问做一个系统的总结,其实就是在回答以下几个问转载 2021-09-11 10:40:02 · 1410 阅读 · 0 评论 -
GenZ,CXL,NVLINK,OpenCAPI,CCIX乱战
原文链接:http://www.sohu.com/a/306325058_671230纵观数据中心业界,底层技术方面其实正处在一场架构变革的初始点,这场变革就是I/O总线的网络化以及I/O资源的大规模池化。众所周知,在开放平台下,PCIE是目前高性能I/O设备普遍采用的总线类型,目前已经到Gen4,很快会到Gen5。但是PCIE总线的树形拓扑以及有限的设备标识ID号码范围,导致其无法形成一个大规模网络,这个问题在NVMe盘未普及之前显得不那么是个问题,但是NVMe盘得道广泛应用之后,会占用大量的PCIE转载 2021-09-11 10:39:47 · 1594 阅读 · 0 评论 -
PCIe扫盲——PCIe演进方向?CCIX简介
转:http://blog.chinaaet.com/justlxy/p/5100064709 摩尔定律逐渐降速,业界需要一同寻找提升计算性能、同时保持低功耗的方法。CCIX联盟的成立旨在实现一种新型互联,专注于新兴的加速应用,如机器学习、网络处理、存储卸载、内存数据库和4G/5G 无线技术。这个标准使得基于不同指令集的处理器,将缓存一致性、对等计算的优势扩展至许多加速设备包括FPGA、GPU、网络或存储适配器、智转载 2021-09-11 10:39:19 · 1018 阅读 · 0 评论 -
PCIe扫盲——M-PCIe与MIPI M-PHY
转:http://blog.chinaaet.com/justlxy/p/5100064718 M-PCIe即Mobile PCIe,主要应用对象是智能手机等嵌入式设备。PCI-SIG在PCIe Spec V3.1中引入基于MIPI M-PHY v2.0的M-PCIe。相比于标准的PCIe总线,M-PCIe主要的改动在物理层如下图所示。引入M-PHY,旨在获得更低的功耗以适应于嵌入式设备的低功耗要求。 M-P转载 2021-09-11 10:39:07 · 1599 阅读 · 0 评论 -
PCIe扫盲——关于PCIe参考时钟的讨论
转:http://blog.chinaaet.com/justlxy/p/5100065655 本文来聊一聊PCIe系统中的参考时钟,主要参考资料为PCIe Base Spec和CEM Spec。在1.0a和1.1版本的PCIe Base Spec中并没有详细的关于参考时钟的描述,而是在与之对应的CEM Spec中提及。从V2.0版的PCIe Base Spec开始,在物理层电气子层章节中增加了参考时钟相关的内容,转载 2021-09-11 10:38:55 · 10032 阅读 · 0 评论 -
推荐两个实用的PCIe工具软件
转:http://blog.chinaaet.com/justlxy/p/5100065652本文向大家推荐两个实用的PCIe相关的工具软件,Mindshare的Arbor和Teledyne LeCroy的TeleScan PE。Mindshare ArborMindshare是一家专业的第三方硬件系统培训公司,主要方向为PCI Express、M-PCIe、NVMe、USB、ARM Architecture、DDRx/LPDDRx、Intel Haswell/Broadell、Intel Mob转载 2021-09-11 10:38:40 · 12384 阅读 · 3 评论 -
PCIe中的Crosslink与Multi-Root/Multi-Processor系统
转:http://blog.chinaaet.com/justlxy/p/5100065650 在PCIe总线中,Switch是一个特殊的设备,该设备由1个上游端口和2~n个下游端口组成。PCIe总线规定,在一个Switch中可以与RC直接或者间接相连的端口为上游端口,在PCIe总线中,RC的位置一般在上方,这也是上游端口这个称呼的由来。在Switch中除了上游端口外,其他所有端口都被称为下游端口。下游端口一般与E转载 2021-09-10 12:39:11 · 853 阅读 · 0 评论 -
PCIe扫盲——基于WinDriver快速开发PCIe驱动简明教程
转:http://blog.chinaaet.com/justlxy/p/5100064256 本文将简要介绍如何使用Jungo公司的WinDriver工具快速开发PCI Express设备驱动,以及相关注意事项。本文所使用的的测试平台信息如下: ※操作系统:Win7 SP1 64bit ※驱动开发工具:WinDriver12.1 ※应用程序开发工具:MSVS2012 ※PCIe测试板卡:Lattice转载 2021-09-10 12:37:41 · 3940 阅读 · 0 评论 -
PCIe扫盲——PCIe总线性能评估(有效数据速率估算)
转:http://blog.chinaaet.com/justlxy/p/5100062236 前面的文章提到过PCIe总线(Gen1&Gen2)采用了8b/10b编码,因此其有效数据速率为物理线路上的速率的80%。即Gen1的有效速率为2.0Gbps=2.5Gbps*80%,而Gen2的有效速率为4Gbps=5Gbps*80%。 如果以数据包的Data Payload为真实有效数据,来计算得话,实际应用转载 2021-09-10 12:36:08 · 1302 阅读 · 0 评论 -
PCIe扫盲——PCIe卡Spec(CEM)导读
转:http://blog.chinaaet.com/justlxy/p/5100061925 前面的文章介绍过,PCIe总线除了有Base Spec,还有关于PCIe卡的Spec(又称为CEM Spec,全称为PCI Express Card Electromechanical Specification)。该Spec主要内容包括辅助信号(Auxiliary Signals)、热插拔(Add-in Card Ho转载 2021-09-10 12:34:39 · 7458 阅读 · 0 评论 -
PCIe扫盲——Power Management概述(二)——链路唤醒与PME产生
转:http://blog.chinaaet.com/justlxy/p/5100061891 链路唤醒机制可以让处于非D0状态的Endpoint,通过唤醒来请求Root(软件层)让其返回D0状态。PCIe PM的软件层和PCI PM是兼容的,尽管其硬件实现方式并非完全相同。PCI PM的唤醒机制是通过一个边带信号来实现的,而PCIe PM还支持一种inband的PME消息(Power Management Eve转载 2021-09-10 12:32:55 · 2323 阅读 · 0 评论 -
PCIe扫盲——Power Management概述(一)
转http://blog.chinaaet.com/justlxy/p/5100061872 PCIe总线定义的与功耗管理功能(Power Management,PM)相关的主要有:PCI-Compatible PM、Native PCIe Extensions、Bandwith Management和Event Timing Optimization。 其中,PCI-Compatible PM是一种在软件上和硬转载 2021-09-10 12:29:12 · 2051 阅读 · 0 评论 -
PCIe扫盲——弹性缓存(Elastic Buffer/ CTC Buffer)
转http://blog.chinaaet.com/justlxy/p/5100057990 前面在介绍PCIe物理层逻辑子层的文章中,有提到过弹性缓存(Elastic Buffer,又称为CTC Buffer或者Synchronization Buffer)。其本质上是一种FIFO,主要用于解决跨时钟域问题。当然,PCIe的弹性缓存还用于补偿时钟误差(Compensate for the clock differ转载 2021-09-10 12:29:01 · 1040 阅读 · 0 评论 -
PCIe扫盲——PCI Express物理层接口(PIPE)
转http://blog.chinaaet.com/justlxy/p/5100057941 PCIe物理层接口(Physical Interface for PCI Express,PIPE)定义了物理层中的,媒介层(Media Access Layer,MAC)和物理编码子层(Physical Coding Sub-layer,PCS)之间的统一接口,旨在为提供一种统一的行业标准。如下图所示: 其中MAC转载 2021-09-10 12:28:53 · 4134 阅读 · 0 评论 -
PCIe扫盲——热插拔简要介绍
转http://blog.chinaaet.com/justlxy/p/5100057851 某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。 注:热切换(Hot Swap)和热插拔的主要区别是应用领域不同,热插拔主要应用于PC以及服务器的主板上的板卡连接,而热切换转载 2021-09-10 12:28:43 · 5347 阅读 · 0 评论 -
PCIe扫盲——复位机制介绍(FLR)
转http://blog.chinaaet.com/justlxy/p/5100057845 PCIe总线自V2.0加入了功能层复位(Function Level Reset,FLR)的功能。该功能主要针对的是支持多个功能的PCIe设备(Multi-Fun PCIe Device),可以实现只对特定的Function复位,而其他的Function不受影响。当然,该功能是可选的,并非强制的,软件可以通过查询配置空间中转载 2021-09-08 08:57:23 · 1205 阅读 · 0 评论 -
PCIe扫盲——复位机制介绍(Fundamental & Hot)
转http://blog.chinaaet.com/justlxy/p/5100057844 PCIe总线中定义了四种复位名称:冷复位(Cold Reset)、暖复位(Warm Reset)、热复位(Hot Reset)和功能层复位(Function-Level Reset,FLR)。其中FLR是PCIe Spec V2.0加入的功能,因此一般把另外三种复位统称为传统的复位方式(Conventional Reset转载 2021-09-08 08:57:15 · 1026 阅读 · 0 评论 -
PCIe扫盲——中断机制介绍(MSI-X)
转http://blog.chinaaet.com/justlxy/p/5100057843 PCI总线自3.0版本开始支持MSI-X机制,对MSI做出了一些升级和改进,以克服MSI机制的三个主要的缺陷: 1. 随着系统的发展,对于特定的大型应用,32个中断向量不够用了(参考前一篇文章); 2. 只有一个目标地址使得转载 2021-09-08 08:57:08 · 524 阅读 · 0 评论 -
PCIe扫盲——中断机制介绍(MSI)
转http://blog.chinaaet.com/justlxy/p/5100057842 前面的文章中介绍过,MSI本质上是一种Memory Write,和PCIe总线中的Message概念半毛钱关系都没有。并且,MSI的Data Payload也是固定的,始终为1DW。 由于MSI也是从PCI总线继承而来的,因此MSI相关的寄存器也存在于配置空间中的PCI兼容部分(前256个字节)。如下图所示,MSI有四种转载 2021-09-08 08:57:00 · 1579 阅读 · 0 评论 -
PCIe扫盲——中断机制介绍(INTx)
转http://blog.chinaaet.com/justlxy/p/5100057841 一个简单的PCI总线INTx中断实现流程,如下图所示。 1. 首先,PCI设备通过INTx边带信号产生中断请求,经过中断控制器(Interrupt Controller,PIC)后,转换为INTR信号,并直接发送至CPU; 2. &nbs转载 2021-09-08 08:56:52 · 2217 阅读 · 0 评论 -
PCIe扫盲——两种中断传递方式
转http://blog.chinaaet.com/justlxy/p/5100057840 为了能够让一些优先级高的事务得到优先处理,PCI总线支持外设中断用以提高总线性能。PCIe总线继承了PCI总线的所有中断特性(包括INTx和MSI/MSI-X),以兼容早期的一些PCI应用层软件。本次连载的文章只是简单的介绍PCIe中断的一些基本概念和特性,如需深入了解PCI/PCIe总线的中断内容,请参阅PCI/PCI-转载 2021-09-08 08:56:39 · 414 阅读 · 0 评论 -
PCIe扫盲——高级错误报告AER(二)
转:http://blog.chinaaet.com/justlxy/p/5100057839 这一篇文章讲一讲,高级错误报告(Advanced Error Reporting,AER)关于可校正和不可校正错误的相关寄存器,以及Root如何处理来自其他PCIe设备的错误消息等内容。 Ø 高级可校正错误处理(Advanced Correctable Error Handling) o &nb转载 2021-09-08 08:56:30 · 3381 阅读 · 0 评论 -
PCIe扫盲——高级错误报告AER(一)
转:http://blog.chinaaet.com/justlxy/p/5100057838 前面的文章提到过高级错误报告(Advanced Error Reporting,AER),接下来详细地介绍一下这一功能。在已有的PCIe错误报告机制上(之前文章介绍的),AER还支持以下特性: · 在登记实际发生的错误类型时转载 2021-09-08 08:56:22 · 5113 阅读 · 0 评论 -
PCIe扫盲——PCIe错误报告机制
转:http://blog.chinaaet.com/justlxy/p/5100057800 PCIe总线有三种错误报告方式,分别是: 1. Completions:通过Completion中的状态位向Requestor返回错误信息 2. Poisoned Packet(又称为错误传递,Error Forwardi转载 2021-09-08 08:56:12 · 2231 阅读 · 0 评论 -
PCIe扫盲——PCIe错误源详解(二)
转:http://blog.chinaaet.com/justlxy/p/5100057799 这篇文章主要介绍事务(Transaction)错误、链路流量控制(Link Flow Control)相关的错误、异常的TLP(Malformed TLP)以及内部错误(Internal Errors)等。 事务(Transaction )错误 事务错误主要包括不支持的请求(Unsupported Request)、转载 2021-09-08 08:55:27 · 3555 阅读 · 0 评论 -
PCIe扫盲——PCIe错误源详解(一)
这篇文章来详细地分析一下各种错误源的产生原理,由于内容较多,因此分为两篇文章。第一篇介绍一下ECRC校检错误和Data Poisoning等;第二篇文章介绍事务(Transaction)错误、链路流量控制(Link Flow Control)相关的错误、异常的TLP(Malformed TLP)以及内部错误(Internal Errors)等。 ECRC 前面的文章中提到过,ECRC是可选的,主要用于包含有S...转载 2021-09-07 09:20:53 · 3365 阅读 · 0 评论 -
PCIe扫盲——PCIe错误检测机制
转:http://blog.chinaaet.com/justlxy/p/5100057784 PCIe总线错误检测囊括了链路(Link)上的错误以及包传递过程中的错误,如下图所示。用户设计的应用程序层中的错误不属于链路传输中的错误,不应当通过PCIe的错误检测与处理机制处理,一般可借助设备特殊中断(Device Specific Interrupt)等合适的方式进行报告与处理。 包传递过程的错误主要通过CR转载 2021-09-07 09:19:04 · 4735 阅读 · 0 评论 -
PCIe扫盲——PCIe错误定义与分类
转:http://blog.chinaaet.com/justlxy/p/5100057782 前面的文章提到过,PCI总线中定义两个边带信号(PERR#和SERR#)来处理总线错误。其中PERR#主要对应的是普通数据奇偶校检错误(Parity Error),而SERR#主要对应的是系统错误(System Error)。具体如下: · &nbs转载 2021-09-07 09:15:35 · 2650 阅读 · 0 评论 -
PCIe扫盲——物理层电气部分基础(二)之De-emphasis
转:http://blog.chinaaet.com/justlxy/p/5100053544 这一篇文章中,我们主要来聊一聊PCIe中的信号补偿技术(Signal Compensation)——De-emphasis。需要注意的是,Gen1&Gen2与Gen3的De-emphasis实现机制差别较大,而本文只介绍Gen1&Gen2相关内容。如需了解Gen3的相关内容,可自行查阅Gen3的PCIe转载 2021-09-07 09:10:28 · 1143 阅读 · 1 评论 -
PCIe扫盲——物理层电气部分基础(一)
转:http://blog.chinaaet.com/justlxy/p/5100053543 之所以把物理层电气部分的文章放在链路初始化与训练文章的后面,是因为这一部分涉及到一些相关的概念,如Beacon Signal、LTSSM等等。 前面已经多次提及,由于本次连载的文章主要是基于Gen2的,所以关于Gen3的相关内容只会提及,但是并不会深入的介绍,如果有兴趣的可以自行阅读Gen3的Spec。 关于链路初始转载 2021-09-07 09:08:51 · 1856 阅读 · 0 评论 -
PCIe扫盲——链路初始化与训练基础(三)之LTSSM
转:http://blog.chinaaet.com/justlxy/p/5100053533 这一篇文章来简单地介绍一下链路训练状态机(Link Training and Status State Machine,LTSSM),并简要地介绍各个状态的作用和实现机制。 LTSSM有11个状态(其中又有多个子状态),分别是Detect、Polling、Configuration、Recovery,L0、L0s、L1转载 2021-09-07 08:53:06 · 1729 阅读 · 0 评论 -
PCIe扫盲——链路初始化与训练基础(二)
转:http://blog.chinaaet.com/justlxy/p/5100053532 前面的文章中提到过,Ordered Sets分别有以下几种:TS1 and TS2 Ordered Set (TS1OS/TS2OS)、Electrical Idle Ordered Set (EIOS)、FTS Ordered Set (FTSOS)、SKP Ordered Set (SOS)和Electrical I转载 2021-09-07 08:52:56 · 644 阅读 · 0 评论 -
PCIe扫盲——链路初始化与训练基础(一)
转:http://blog.chinaaet.com/justlxy/p/5100053531 PCIe总线中的链路初始化与训练(Link Initialization & Training)是一种完全由硬件实现的功能,处于PCIe体系结构中的物理层。整个过程由链路训练状态机(Link Training and Status State Machine,LTSSM)自动完成,也就说基本没有数据链路层和事务层转载 2021-09-07 08:52:47 · 3788 阅读 · 0 评论 -
PCIe扫盲——物理层逻辑部分基础(三)
转:http://blog.chinaaet.com/justlxy/p/5100053478 这一篇文章来继续聊一聊接收端物理层逻辑子层的实现细节。回顾一下之前的那张图片: 其中的一个Lane的具体逻辑如下图所示: 其中,Rx Clock Recovery从输入的串行数据流中提取出Rx Clock。当Rx Clock稳定在Tx Clock的频率上(Rx Clock locked on to the T转载 2021-09-07 08:52:39 · 1003 阅读 · 0 评论 -
PCIe扫盲——物理层逻辑部分基础(二)
转:http://blog.chinaaet.com/justlxy/p/5100053477 上一篇文章中提到了Mux会对来自数据链路层的数据(TLP&DLLP)插入一些控制字符,如下图所示。当然,这些控制字符只用于物理层之间的传输,接收端的设备的物理层接收到这些数据后,会将这些控制字符去除,在往上传到其数据链路层。 当然,除了STP、SDP和END之外,还有一些其他的控制字符,如EDB(前面的文章转载 2021-09-07 08:52:28 · 1001 阅读 · 0 评论 -
PCIe扫盲——物理层逻辑部分基础(一)
转: http://blog.chinaaet.com/justlxy/p/5100053476 首先,回顾一下,之前看了很多遍的PCIe的Layer结构图: PCIe中的物理层主要完成编解码(8b/10b for Gen1&Gen2,128b/130b for Gen3 and later)、扰码与解扰码、串并转换、差分发送与接收、链路训练等功能。其中链路训练主要通过物理层包Ordered Sets转载 2021-09-04 10:59:59 · 940 阅读 · 0 评论 -
PCIe扫盲——Ack/Nak 机制详解(二)
转:http://blog.chinaaet.com/justlxy/p/5100053475 这一篇文章来简单地分析几个Ack/Nak机制的例子。 Example 1. Example of Ack Step1 设备A准备依次向设备B发送5个TLP,其对应的序列号分别为3,4,5,6,7; Step2 设备B成功的接收到了TLP3,转载 2021-09-04 10:59:49 · 823 阅读 · 0 评论 -
PCIe扫盲——Ack/Nak 机制详解(一)
转:http://blog.chinaaet.com/justlxy/p/5100053468 前面在数据链路层入门的文章中简单地提到过Ack/Nak机制的原理和作用,接下来的两篇文章中将对Ack/Nak机制进行详细地介绍。 Ack/Nak是一种由硬件实现的,完全自动的机制,目的是保证TLP有效可靠地传输。Ack DLLP用于确认TLP被成功接收,Nak DLLP则用于表明TLP传输中遇到了错误。 如上图所转载 2021-09-04 10:59:34 · 2254 阅读 · 1 评论 -
PCIe扫盲——DLLP(数据链路层包)详解
转:http://blog.chinaaet.com/justlxy/p/5100053467 首先说明一下,在本次连载的博文中,DLLP一般指的是由发送端的数据链路层发送,接收端的数据链路层接收的数据包,其和事务层(Transaction Layer)一般没有什么关系。本文将要介绍的DLLP指的正是这样的数据包,其一般用于Ack/Nak机制、功耗管理、Flow Control(流量控制)和一些厂商自定义用途等。示转载 2021-09-04 10:59:24 · 1315 阅读 · 1 评论