
PCIe协议
文章平均质量分 91
主要介绍PCIe协议内容,分析PCIe相关的案例
夏天Aileft
莫愁前路无知己,天下谁人不识君!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PCIe6.0学习小记
从以上图4可知,PAM4的4个电平(Level0,1,2,3)进行格雷编码(Gray Coding),4个电平对应的格雷编码分别是00,01,11,10,格雷编码的方式是要求相邻符号,每次只能变化一位,且首尾符号也只是变化一位,这样的编码方式可以有效改善误码率。在将 PAM4 电压转换为 2 位对齐量后,如果适用,它会进行接收端预编码,然后解码格雷码,如果适用,则在单比特级别进行解扰。如上图所示的对比可以看出,NRZ只有0,1两个电平,形成一个眼,而PAM4会有0,1,2,3共4个电平,形成了3个眼。原创 2024-12-24 11:07:38 · 2295 阅读 · 0 评论 -
PCIe中的 VSC、VSEC、DVSEC 详细介绍
PCIe 定义了三类可由供应商 Vendor 自行指定的能力结构:Vendor-Specific Capability (VSC)、Vendor-Specific Extended Capability (VSEC) 及 Designated Vendor-Specific Extended Capability (DVSEC)。其中,VSC 兼容 PCI,VSEC 及 DVSEC 不兼容 PCI。VSEC 由单个 Vendor 独立使用,DVSEC 由多个相关的 Vendor 共同使用。原创 2024-10-29 14:40:20 · 1037 阅读 · 0 评论 -
PCIe中ACS知识小记
虚拟机内部的访问数据显而易见是带的GPA地址。而目前几乎所有的PCIe 设备都带ACS control,所以它们可以单独assign给不同的VM,但是随之而来的就是即使两个GPU同时assign给同一个VM,由于ACS的存在,他们之间也不会有真正的物理层面的P2P访问。每一个TLP都自带一个address(寻址类TLP),同时每一个endpoint,PCIe switch都自带一段BIOS配置的地址空间范围,一旦这个TLP的address落入某个设备的地址范围,那么这个TLP就属于这个设备并消费。原创 2024-10-24 09:58:35 · 3072 阅读 · 1 评论 -
X86/Aarch64下编译PMDK工具
什么是PMDK?Intel的PMDK(Persistent Memory Development Kit)是一个库,旨在简化持久内存的应用开发并解决一些常见挑战。PMDK,全称为Persistent Memory Development Kit,是由Intel开发的一套函数库和工具的集合,适用于所有的持久内存(厂商中立),无论这些内存来自哪个制造商。原创 2024-07-12 16:27:06 · 1123 阅读 · 0 评论 -
MMIO知识小记
MMIO和端口I/O都是处理器与I/O设备之间通信的方法。选择哪一种方法取决于硬件设计和特定的应用场景。在现代系统中,MMIO因为其灵活性和易于编程等优势越来越常用,特别是在需要大块数据传输的情况下。端口I/O则主要在传统的或简单的硬件接口(如早期的PC架构)中使用。在具体的编程实践中,高级语言通常通过操作系统提供的抽象(如设备驱动程序接口)来间接访问这些硬件资源,因而开发者通常不必担心底层访问的细节。原创 2024-05-30 15:32:38 · 2136 阅读 · 0 评论 -
PCIe协议之-DLLP详解
数据链路层将从物理层中获得报文, 并将其传递给事务层;同时接收事务层的报文, 并将其转发到物理层;核心的功能有以下三点1.保证TLP在 PCIe 链路中的正确传递;2.数据链路层使用了容错和重传机制,保证数据传送的完整性与一致性,3.此外数据链路层还需要对PCIe 链路进行管理与监控。DLLP全称是Data Link Layer Packet,是在PCI Express (PCIe) 架构中,数据链路层使用的一种数据包类型。原创 2024-05-28 22:22:04 · 2320 阅读 · 0 评论 -
PCIe协议之-Flow Control基础
Flow Control即流量控制,这一概念起源于网络通信中。PCIe总线采用Flow Control的目的是,保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP(事务层包)。也就是说,发送端在发送前可以通过Flow Control机制知道接收端能否接收即将发送的TLP。原创 2024-05-24 16:03:25 · 2829 阅读 · 0 评论 -
PCIe协议之-TLP Header详解(四)
PCIe中的Message主要是为了替代PCI中采用边带信号,这些边带信号的主要功能是中断,错误报告和电源管理等。所有的Message请求采用的都是4DW的TLP Header,但是并不是所有的空间都被利用上了,例如有的Message就没有使用Byte8到Byte15的空间。Message请求的TLP Header格式如下图所示:下面将分别进行介绍一下,· 数据有效负载可能包含也可能不包含在任一类型中。· 2. 消息通过Vendor ID 字段进行区分。原创 2024-05-20 13:50:31 · 1971 阅读 · 0 评论 -
PCIe协议之-TLP Header详解(三)
一个读请求可能会对应多个CplD(因为4KB的地址边界问题,以及RCB的限制),但是返回的总的数据量应当与请求的数据量保持一致,否则可能会出现Completion Timeout的错误;· 当任何非配置请求的Completion中的状态码为CRS时,都会被认为是非法的,并被认为是Malformed TLP;👉Tag: 这与最初的Memory Read TLP中的Tag字段相对应,它是为了匹配Completion与它所完成的原始请求。说明: 这表明请求被成功完成,没有错误发生。原创 2024-05-17 10:22:09 · 1522 阅读 · 0 评论 -
PCIe协议之-TLP Header详解(二)
在PCIe中,存在几种不同类型的请求,主要包括IO(Request)请求、存储器(Request)请求和配置(Request)请求。这些请求类型允许CPU与连接在PCIe总线上的设备进行通信和控制。原创 2024-05-15 18:06:15 · 2131 阅读 · 0 评论 -
PCie协议之-TLP Header详解(一)
在PCIe通信过程中,事务层数据包(Transaction Layer Packets,简称TLP)扮演着非常重要的角色。TLP用于在设备之间传递数据和控制信息,它们是PCIe的基本信息传输单元。TLP可分为几个部分,最核心的是TLP Header,它负责携带有关数据包的关键信息,包括数据包类型、长度以及传输方向等等。原创 2024-05-14 22:58:58 · 4365 阅读 · 0 评论 -
PCIe协议之-TLP路由基础
在PCI Express (PCIe) 技术中,数据包的路由方式对于确保信息能够高效、准确地传送至目标设备至关重要。PCIe定义了几种路由方式,主要有以下几种。原创 2024-05-10 10:00:00 · 2696 阅读 · 0 评论 -
PCIe协议之RCB、MPS、MRRS详解
PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载,即Data Payload。Data Payload的长度和MPS(Max Payload Size)、MRRS(Max Read Request Size)和RCB(Read Completion Boundary)相关。RCB(Read Completion Boundary)是PCI Express(PCIe)总线中定义的一个参数,它指定了在完成PCIe内存读取请求时可以返回的数据包的最大对齐字节边界。原创 2025-03-10 11:07:25 · 7319 阅读 · 17 评论 -
PCIe协议中断机制详解
PCIe中断通常分为以下几种:INTx传统中断:这是遵循早期PCI总线规范的传统中断方式。在PCI总线中,设备使用一个共享的中断线(INTA#, INTB#, INTC# 或 INTD#)向CPU发送中断信号。PCIe中也提供了对这些传统中断的支持,以确保与旧设备的兼容性。但由于这种方式使用的是共享线路,它可能导致中断冲突,并且效率低下。MSI是一种改进的中断机制,它不再依赖共享的物理中断线。相反,设备通过写入特定的数据到特定的内存地址向CPU发送一个中断消息。原创 2024-04-28 15:49:16 · 3598 阅读 · 0 评论 -
PCIe协议Ack/NAK详解
在PCIe通信协议中,ACK(Acknowledgement)和NAK(Negative Acknowledgement)是两种重要的信号,它们用于控制和确保数据传输的可靠性。ACK信号用于确认接收端成功接收了一条消息或数据包。在数据传输过程中,发送端发送数据后,接收端在收到并成功校验数据无误后,会向发送端发送ACK信号,表示数据已成功接收且无误。ACK信号是通信过程中确保数据正确送达的重要机制。原创 2024-04-27 08:21:46 · 2620 阅读 · 3 评论 -
PCIe基础BDF和配置空间详解
在PCI Express (PCIe) 架构中,"BDF"和"配置空间"是两个重要概念,它们与PCIe设备的识别和配置紧密相关。BDF是一种寻址机制,用于唯一标识系统中每个PCIe设备。BDF的全称是Bus/Device/Function,带有以下组成部分:Bus:一个 8 位字段,表示设备所在的总线号。因为是8位,所以PCIe可以支持256个总线。Device:一个 5位字段,表示特定总线上的设备号。每个总线可以有32个设备,编号从0到31。原创 2024-04-25 17:39:31 · 4755 阅读 · 0 评论 -
IOMMU和SMMU详解
IOMMU(输入输出内存管理单元)的原理与CPU中的MMU(内存管理单元)相似。它的作用是管理设备的内存访问请求,允许安全、高效地在设备和内存之间直接传输数据。IOMMU通常用于支持高速数据传输的设备,如图形卡、网络卡和存储设备。IOMMU与MMU相似,IOMMU是把外部设备地址到存储器地址的转换。IOMMU中存放了IO页表虚实地址转换关系和访问权限,而且处理器加速虚实地址转换,还设置了IOTLB作为IO页表的Cache。原创 2024-04-22 23:26:53 · 5324 阅读 · 0 评论 -
PCIe复位方式介绍
PCIe总线中定义了四种复位名称:冷复位(Cold Reset)、暖复位(Warm Reset)、热复位(Hot Reset)和功能层复位(Function-Level Reset,FLR)。其中FLR是PCIe Spec V2.0加入的功能,因此一般把另外三种复位统称为传统的复位方式(Conventional Reset)。其中冷复位和暖复位是基于边带信号PERST#的,又被统称为基本的复位方式(Fundamental Reset)。原创 2024-04-21 09:00:00 · 3538 阅读 · 0 评论 -
PCIe错误报告机制
PCIe的错误报告机制旨在确保系统在错误情况发生时能够迅速反应,减少数据损失和系统中断的可能性。通过结合硬件能力和软件逻辑,它为构建高可靠性计算环境提供了坚实的基础。原创 2024-04-19 00:00:00 · 2649 阅读 · 0 评论 -
PCIe错误定义与分类
PCI总线中定义两个边带信号(PERR#和SERR#)来处理总线错误。其中PERR#主要对应的是普通数据奇偶校检错误(Parity Error),而SERR#主要对应的是系统错误(System Error)。具体如下:· 普通的数据奇偶校检错误——通过PERR#报告· 在多任务事务(Multi-task Transaction,又称为Special Cycles)时的奇偶校检错误——通过SERR#报告。原创 2024-04-16 06:00:00 · 2821 阅读 · 0 评论 -
PCIe总线基本概念
PCI Express(Peripheral Component Interconnect Express),简称PCIe,是一种高速串行计算机扩展总线标准,用于将主板与多种硬件设备连接起来。它是由PCI-SIG开发的,旨在取代旧的PCI、PCI-X和AGP总线标准。串行通信与旧的PCI标准使用并行总线不同,PCIe使用点对点的串行连接,每个设备都有自己的专用连接,极大地提高了带宽和系统的可扩展性。链路宽度。原创 2024-04-10 00:00:00 · 2305 阅读 · 0 评论 -
【如何快速通过Class Code确认设备类型 】
在PCIe标准中,Class Code是一个用于标识连接到PCIe总线上设备的类型的字段。它由三个部分组成:Base Class、Sub Class和Programming Interface。原创 2024-03-22 09:36:34 · 2898 阅读 · 1 评论 -
【PCIe设备枚举(2)】
pcie设备枚举过程原创 2024-03-21 11:27:33 · 1768 阅读 · 1 评论