
【PCIe Bus 专栏】
文章平均质量分 89
PCIe Bus 专栏
优惠券已抵扣
余额抵扣
还需支付
¥179.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
主公讲 ARM
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PCIe 总线及设备入门学习专栏 5.3 -- PCIe 与 EP 中的 DMA协同工作介绍】
当EP 端和 Host 端有大量数据交互时,比如 NPU 的训练或者推理场景中,就需要Host 端向 EP 端搬运大量数据,这种场景就可以在 PCIe 系统中实现个 DMA,用来数据搬运。在PCIe环境中,比如,GPU 作为端点设备(EP),需要通过DMA从主机内存中读取数据,比如进行图形渲染或计算任务时的大量数据传输。比如主机主动将数据写入GPU的显存,这时候主机使用Memory Write TLP,而GPU不需要发送请求,只需要接收数据。主机驱动程序分配系统内存(源地址:0x8000_0000)。原创 2025-03-24 22:30:15 · 432 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.3 -- PCIe 数据搬运组包介绍】
PCIe使用TLP来传输数据,而TLP有最大载荷限制(Max Payload Size),通常是256字节或更大,这取决于 PCIe版本和设备的能力。GPU驱动发起DMA请求,指定源地址(内存0x8000_0000)和目标地址(GPU显存0x1000_0000),数据长度1MB。若PCIe设备支持,可将多个连续地址的TLP合并为更大的有效载荷(需硬件支持),减少TLP数量,提升吞吐量。若数据地址按MPS对齐(如256字节对齐),可避免跨地址边界的TLP分割,简化处理流程。原创 2025-03-24 09:31:09 · 309 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.2 -- PCIe 在进行大数据搬运时是如何组包的?】
同时,数据链路层和物理层的处理可能不需要用户过多关注,但需要简要提及它们的作用,比如确保数据包的可靠传输和物理信号的正确性。首先,当需要传输大量数据时,比如 GPU 进行显存和系统内存之间的数据传输,PCI e是如何处理这些数据的,如何将大数据分成多个包,以及这些包的格式是怎样的。若PCIe设备支持,可将多个连续地址的TLP合并为更大的有效载荷(需硬件支持),减少TLP数量,提升吞吐量。若数据地址按MPS对齐(如256字节对齐),可避免跨地址边界的TLP分割,简化处理流程。原创 2025-03-21 23:15:29 · 211 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.1 -- PCIe 中为何只有 TLP 会被 Switch 和 RC 进行路由?】
TLP在事务层生成,需要端到端传输,因此必须被路由;而DLLP和Ordered Set分别服务于数据链路层和物理层的本地功能,仅在相邻设备间传递,无需路由。这种设计优化了网络效率,减少了不必要的处理,确保了各层职责明确。原创 2025-03-21 23:00:13 · 125 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4 -- PCIe GIC LPI 与 MSI 中断机制】
能产生 MSI 中断的设备, 都有一个 DeviceID (设备ID), 它产生的每一个MSI中断都有一个EventID(事件ID)。ARM的 cpu,特别是 cortex-A 系列的 CPU,都是多 core 的 cpu,因此对于多 core 的 cpu 的中断管理,就不能像单 core 那样简单去管理,由此 arm定义了。对于原来的 SPI, 它也是可以使用MSI的方式传递的,这个功能是可选的。如果GICV3支持MSI方式的SPI,要产生/清除中断时, 操乍如下。架构,来支持多核 cpu 的中断管理。原创 2025-03-13 09:39:03 · 402 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3 -- PCIe 三种路由方式详细介绍】
所谓 为了保证传输的可靠性,A设备会有一个buffer,里面会保存TLP, 它会一直保存,直到接收到了一个回应,如果过了一段时间没有收到回应,那么 A 设备会把 buffer 中的报文重发一下,所以 TAG 就是用来标记TLP的,收到的回应里面也会有 tag,根据收到的TLP 的 tag 把 buffer 中的 TLP 释放掉。下面的那些设备也可以发出一些消息,比如汇报一些产生的中断,汇报一些电源相关的信息,这些消息称为消息报文,它们使用的就是隐式路由。所以可以通 TLP 中获取具体使用的是哪种路由方式。原创 2025-03-12 23:23:09 · 231 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3.1 -- PCIe Controller and PHY】
在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的PCIe 3.0才8 Gbps的速率,最新的6.0才64Gbps。在该模式下,数据传送不是由CPU负责处理,而是由一个特殊的处理器DMA控制器来完成,因此占用极少的CPU资源。控制器逻辑包含了 IP 的 host 设计,以及 PCIe 协议中所规定的事务层、数据链路层、物理层实现逻辑,原创 2025-03-12 09:25:33 · 280 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.5 -- PCIe 中断 MSI 与 MSI-X 机制介绍】
软件在初始化的时候会把 cpu 地址空间的 中断地址转化为 PCIe 地址空间的地址,再 写入设备,同时也会把 Message Data 写入数据,后面 PCI/PCIe 想发中断的时候只需要将 Message Data 写入到 Message Address 上即可,也即会发出一个信号的写传输, 当 PCIe Controller 或者 GIC 收到数据后就会触发中断。表示中断的状态,不管是否屏蔽中断,设备想发出中断的时候,可能是被屏蔽了,但是即使被mask 掉了,pending bit 还是会置位。原创 2025-03-05 22:41:21 · 137 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3 -- 访问 PCIe 设备过程】
由于A是一个桥,所以需要进行一个深度优先的配置,看看A 桥下面有哪些设备,结果发现A设备下面是一个C设备,然后就去配置C设备,接着就要去读C设备的配置寄存器,发现它仍然是一个桥,既然是一个桥,那么又需要去配置它的三个总线号,C设备的上游总线号是1,它自己的总线号加1,也即为2,它下游所有桥的最大总线号暂时设置为255,这时把C桥配置好了;那么对于终端的设备呢?Bus0 在发送数据的时候,发送的时串行数据包,那么我们需要了解下它的数据包是什么样子的,这里我们就需要先了解 PCIe 设备的层次结构。原创 2025-02-28 23:32:33 · 137 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 10.1 -- Linux PCIe 驱动框架 之 RK3399 Region1 访问】
如上图 1-3 所示,在addr0 寄存器中有 bit[5:0],这六位用来表示 cpu 发出来的地址里面可以使用多少位放到 如图 2-15 中的 TLP里面,TLP 需要64位数据,这64位数据里面有一部分可以由CPU 提供,另外一部分可以由 addr0 和 addr1提供,由cpu提供的位数由addr0 的bit[5:0] 来决定,不够的再由 addr0 和 addr1 中的其他位来提供,以后 cpu 发出访问 region 1 的地址的时候,就会产生如下图2-15 所示的TLP 包。原创 2025-02-28 23:26:39 · 256 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 10 -- Linux PCIe 驱动框架】
假设 EP1 中的配置空间中声明了需要100Bytes的地址空间, EP2 声明了需要200Bytes的地址空间,软件驱动程序在扫描设备的时候就会知道 EP1 需要100Bytes 的地址空间, EP2 需要 200Bytes 的地址空间,于是软件就在 addr1 到 addr2 中划出100Bytes的空间,在 addrA 到 addrB 中划出100Bytes 的空间,并且会把首地址写入到EP1 配置空间的寄存器中。probe 函数就会去扫描识别出挂载 pcie 总线上的一个或者多个pcie 设备。原创 2025-02-28 22:48:50 · 275 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1 -- PCI | PCIe 总线概述】
当CPU 发出一个地址,这个地址属于某个 PCIe 设备时,这时会选中PCIe 控制器,PCIe 控制器会把CPU发出来的地址加上偏移值得到PCI地址空间的地址,然后把得到的地址通过PCIe/PCI 总线发给对应的PCI/PCIe 设备,PCI/PCIe 设备会检测PCI总线或者PCIe 总线上的信号,但它发现PCI/PCIe 总线上的地址属于自己的范围时,它就会进行回应。对于软件来说 PCIe 或者 PCI 总线都是一样的,它们都是兼容的,软件程序只是去访问某个地址。原创 2025-02-19 08:56:35 · 315 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.4 -- PCI 设备访问方法】
比如对于设备1 它的 IDSEL 肯定是某一个信号,同样对于设备2,它的IDSEL肯定是另外一个信号,到底是通过哪个引脚来选中这个设备,不同的 Root Bridge 有不同的设计,比如可以设计成功过 AD31 信号来选中 PCI 设备1,通过 AD30 来选中设备2,当然也可以通过其他引脚来单独选中PCI设备1。CPU 发出的地址位于CPU的地址空间,CPU 发出的某个地址有可能是访问内存的或者是访问某个其它模块的,也有可能是访问某个PCI 设备的,CPU 发出的地址范围不一样,它访问到的外设就不一样。原创 2025-02-17 23:28:17 · 215 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 10 -- pci linux driver】
每种类的PCI设备都可以用结构类型pci_dev来描述。更为准确地说,应该是每一个PCI 功能,即 PCI 逻辑设备都唯一地对应有一个pci_dev设备描述符。该数据结构的定义如下(/* 全局链表元素 global_list:每一个 pci_dev 结构都通过该成员连接到全局 pci 设备链表 pci_devices 中 *//* 总线设备链表元素 bus_list:每一个pci_dev结构除了链接到全局设备链表中外,还会通过这个成员连接到* 其所属PCI总线的设备链表中。原创 2025-02-10 14:01:52 · 309 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】
在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。原创 2025-01-20 22:12:52 · 564 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】
MCTP 是由 DMTF(Distributed Management Task Force)定义的协议,用于提供设备和主机间基于不同传输层(如 PCIe、I²C、USB 等)的管理消息通信能力。在 PCIe 环境下,MCTP 消息作为的一种特殊形式传输,并被赋予唯一的 VDM Code 值0000b,以区别于其他 VDM。MCTP 在 PCIe 环境中作为一种基于 Type 1 VDM 的管理通信协议,提供了设备与主机之间的灵活数据传输能力。原创 2025-01-20 21:53:26 · 684 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 9 -- PCIe linux 命令学习】
是一个强大的工具,可以获取详细的设备信息。结合配置信息、设备状态和扩展功能字段,可以深入诊断 PCI 设备问题,例如中断配置错误、内存分配问题或功能支持状态。原创 2025-01-20 21:32:45 · 381 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 2 -- PCIe 的 LTSSM 和 Enumeration】
何谓枚举呢,其实枚举就是RC发现整个 PCIe拓扑结构的过程。PCIe作为一个局部总线设计,有着复杂的拓扑结构,只有知道了这个拓扑结构,才方便RC传递数据,路由数据。枚举过程中RC采用DFS(深度优先搜索)算法进行设备BDF的发现和分配,BDF这个三元组决定了PCIe设备的唯一性。原创 2025-01-20 09:34:02 · 355 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3.3 -- PCIe Inbound and Outbound】
Outbound:主机发起,数据流主要从主机到设备。Inbound:设备发起,数据流主要从设备到主机。请求和 Completion 的方向是相对的,但它们的命名基于最初的请求方向。原创 2025-01-20 09:24:05 · 281 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.2 -- PCIe 枚举与 PCIe PHY firmware 的区别与联系】
PCIe(Peripheral Component Interconnect Express)枚举是指操作系统或固件对 PCIe 总线上的设备进行探测、识别并为其分配资源(如地址空间、中断号)的过程。它是确保 PCIe 设备能够正确注册和参与系统运行的关键步骤。原创 2025-01-16 09:16:22 · 680 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.3 -- PCIe 掩图 mask 介绍】
在 PHY 初始化时,屏蔽掉超出版本限制的部分控制位,可以有效适配较低版本的设备。在 PCIe 的自检与校验(如链路训练和容错)过程中,如果某些信号或位有暂时的异常,掩图可以忽略这些异常位,确保系统能继续运行或完成调试过程。掩图可以屏蔽特定的信号或位,使调试人员更专注于关心的部分,减少其他干扰信号的影响。在某些敏感数据传输场景,例如带有加密协议的 PCIe 通道,掩图可以暂时禁用或隔离某些寄存器位,以防止数据误用。在调试 PCIe PHY 时,通过掩码屏蔽特定寄存器的高/低位,可以隔离干扰信号。原创 2025-01-15 21:25:56 · 406 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3.1 -- PCIe PHY firmware load | trainning | link up 区别与联系】
Firmware 加载是基础,完成后才能进入链路初始化流程。Training是确保信号传输可靠的关键阶段。Link Up标志着链路成功建立,开始支持数据传输。三者紧密配合,共同实现从硬件准备到高速通信的完整链路初始化过程。原创 2025-01-15 21:17:40 · 1120 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.3 -- PCIe PHY firmware load | trainning | link up 区别与联系】
设备间即可通过该链路传输 TLP(Transaction Layer Packet) 和 DLLP(Data Link Layer Packet),完成设备间的实际数据交互。是 PCIe 链路初始化过程中用于校准和参数协商的关键阶段,其目标是确保双方设备在传输物理信号时的可靠性和高效性。训练阶段并未传输实际的用户数据,而是使用专门的控制和测试模式(例如 TS1、TS2 信号),以确保链路对接正确并优化参数。通过上述过程可以看出,Training 为链路的稳定奠定基础,Link Up 则是实际的工作阶段。原创 2025-01-15 21:11:32 · 684 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.1 -- PCI 总线的地址空间分配】
其中x86处理器可以直接访问的只有 Memory Address Space 和 I/O Address Space。注:在PCIe中,则引入了一种新的 Configuration Address Space 访问方式:将其直接映射到了 Memory Address Space 当中。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。注:需要注意的是PCI的地址空间和x86系统中的FSB并不是对等的,而是具有一定的映射关系。也就是PCI上的所有设备共同映射到这。,所以其存储地址空间为。原创 2024-12-31 09:38:58 · 318 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.2 -- PCI 总线的三种传输模式 】
举一个例子,比如说某一个PCI设备需要向内存(SDRAM)中写入一些数据,该PCI设备会向CPU请求一个中断,然后CPU首先先通过PCI总线把该PCI设备的数据读取到CPU内部的寄存器中,然后再把数据从内部寄存器写入到内存(SDRAM)中。在仲裁器的控制下,完成主机身份的切换,进而获得PCI总线的控制权,然后与总线上的其他PCI设备进行通信。,这是因为获得主机身份的PCI设备(Initiator)和另一个PCI设备(Target)通常采用不同的数据格式,除非他们是同一个厂家的设备。原创 2024-12-31 09:23:22 · 658 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.3 -- PCI 总线的中断和错误处理】
在PCI体系结构中,这些中断信号属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。在多数嵌入式处理器系统中,PCI设备的数量小于中断控制器提供的外部中断请求引脚数,而且在嵌入式系统中,多数PCI设备仅使用。在PCI总线中,INTx信号属于边带信号。在x86处理器系统中,有许多PCI插槽,处理器系统并不知道在这些插槽上将要挂接哪些PCI设备,而且也并不知道这些PCI设备到底需不需要使用所有的。原创 2024-12-31 09:11:07 · 794 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4.5.1 -- PCIe Message and PCIe MSI】
PCIe 消息在 PCIe 中取代了传统硬件引脚信号,MSI 是其典型应用。MSI 配置涉及 Message Address 和 Message Data,存储在设备配置空间中。MSI 与 GIC 的结合使得 PCIe 设备与 ARM 架构协同工作,为高效的中断处理提供了支持。推荐阅读。原创 2024-12-30 22:14:08 · 1601 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.2 -- PCIe 的参考时钟 Refclk】
Data Clock 时钟方案是三种方案中最易实现的方案,其无需外部参考时钟,在数据流中携带有时钟信息,接收端接收数据流并从中恢复出时钟供给其 CDR 作参考时钟。三种 PCIe 参考时钟架构中,Common Clock 是最为常用的一种时钟架构,采用 Common Clock 支持时钟扩频(SSC, Spread Spectrum Clock) 且对参考时钟的要求不如 Separate Clock 方案严苛。Common Clock Architecture (CC),通用参考时钟架构,原创 2024-12-29 21:29:54 · 1203 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5.1 -- PCIe 引脚 PRSNT 与热插拔】
即热交换,也叫热切换,主要指的是CPCI(Compact PCI,紧凑型PCI)领域所使用的。需要注意的是,PRSNT引脚比其它引脚短1mm,这样可以保证插入和拔出时有1ms的时间差,从而确保上电、掉电时序符合规范。热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的 “热插拔”。,一个新 的PCIe设备插入系统,肯定是需要硬件上支持识别到这个插入动作的。原创 2024-12-29 18:37:47 · 1183 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 5 -- PCIE接头引脚定义】
由于 PCIe 的这一特性,极大的方便了 PCIe 的可扩展性。不过需要注意的是,当将 x1 的 PCIe 金手指 插入 x4 的 PCIe 插槽中时,x1 的 PCIe 金手指可以以本身的速率运行,但 x4 的插槽剩下的 3 条 PCIe 通道将闲置,其他情况类似。在使用 PCIe 接口时,可以将 PCIe 金手指插入任何不短于金手指长度的 PCIe 插槽中。下表就是显卡插口前面的那段短的。原创 2024-12-29 16:54:25 · 1079 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.3 -- PCIe 基础知识 lane和link介绍】
PCIe RC(Root Complex)是PCIe树的根节点,一个RC 可以包括多个 RP(Root Port),例如一个16 条 lane的PCIe RC 可以包括4个RP(4个x4的),或者8个RP(8个x2的)等等。在该模式下,数据传送由CPU执行I/O端口指令来按照字节或更大的数据单位来处理,占用大量的CPU资源,数据传输速度也大大低于DMA模式。国内应该有公司做出相应的phy芯片(例如芯动科技、牛芯半导体),毕竟常见的pcie 3.0才8 Gbps的速率,最新的6.0才64Gbps。原创 2024-12-24 10:00:58 · 1554 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 4 -- PCIe四种地址空间介绍】
因此软件会读取BAR2,但并不会对BAR2进行低bit的评估,因为软件仅仅是将BAR2当做BAR1发起的64-bit地址请求的高32-bit。下图是一种通用的memory和IO的映射。在本例中,高位BAR的bit 1(BAR pair的bit 33)被置为1,低位BAR的bit 30(BAR pair的bit 30)也被置为1,这表示地址是。设计者将低位BAR(本例中为BAR1)中的低bit固定为一个数值,指示需要的memory大小和类型,高位BAR(BAR2)中的bit则都是可读可写的,没有被固定。原创 2024-12-22 21:34:04 · 1230 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.4.2 -- PCIE ATS地址转换协议】
PCIe设备及根复合体RC之间采用请求-完成协议来实现地址转换服务ATS。ATS主要包括两部分地址转换(Translation):用以将 ATPT(Address Translation and Protection Table) 中的转换地址缓存到本地 ATC,包括地址转换请求及地址转换完成。地址作废(Invalidation):用以当 ATPT 中地址转换发生变化时,将 ATC中的对应转换地址作废,包括地址转换作废请求及地址转换作废完成。原创 2024-09-02 17:03:05 · 943 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 1.2 -- PCIe 基础知识 EP 与 Function 关系】
Function是指一个 PCIe 设备中的一个独立功能单元。每个 Function 都有自己的一组配置寄存器和资源,可以独立地进行配置和管理。是指 PCIe 拓扑结构中的叶节点设备,即不向下连接其他 PCIe 设备的设备。Endpoint 是 PCIe 通信的终点,可以是各种类型的设备,如网络适配器、存储控制器、图形卡等。属性Function定义PCIe 设备中的独立功能单元PCIe 拓扑结构中的叶节点设备标识符通过 Function Number 标识。原创 2024-09-01 17:14:50 · 188 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3 -- SMMU 与 PCIe 的配置使用】
ARM SMMUv3.2 是一个支持虚拟化和 I/O 内存管理的系统内存管理单元(SMMU)。在 SMMUv3.2 中,PCIe 的 RequesterID 和 PASID 被用来实现更加精细的内存访问控制和虚拟化支持。RequesterID 和 StreamID 映射:低位映射确保每个 PCIe 功能分配到一个 Stream Table Entry (STE)。PASID 前缀:允许更细粒度的内存访问控制,每个 PASID 可以在 Stage 1 翻译中分配给不同的进程。事务处理。原创 2024-08-25 11:13:02 · 1274 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.2.1 -- PCIe 中 Endpoint | Root Port | PCIe Root Complex 作用介绍】
Endpoint:PCIe 拓扑结构的终端节点,提供实际的设备功能。Root Port:位于 Root Complex 中,连接 Root Complex 与 PCIe 拓扑结构中的其他设备。:PCIe 系统的起点,分发和管理数据传输。原创 2024-08-25 11:49:06 · 778 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.2.3 -- PCIe 中的 ATC 与 ATS】
在 PCIe 体系结构中,ATC(Address Translation Cache)和ATS(Address Translation Services)是用于优化地址翻译和内存访问性能的重要技术。它们主要应用于高性能计算和虚拟化环境中,以减少翻译延迟和提高内存访问效率。:缓存地址翻译结果,提高内存访问性能。:允许设备向 IOMMU 请求地址翻译,并将结果缓存到 ATC 中。协同工作:ATS 请求翻译,ATC 缓存结果,减少重复翻译请求,提高系统性能。原创 2024-08-25 16:46:56 · 1221 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.2 -- PCIe 中的 RequesterID 和 PASID】
用于唯一标识 PCIe 设备中的某个功能,主要用于路由和权限控制。PASID用于在同一设备功能内区分不同的进程或上下文,支持更细粒度的资源管理和共享。应用示例:在虚拟化环境中用于区分不同虚拟机的内存访问;在高性能计算中用于区分不同任务的 GPU 资源。原创 2024-08-25 11:26:28 · 1062 阅读 · 0 评论 -
【ARMv8/v9 SMMU 专栏 3.4 -- PCIE中的 页请求服务 PRI 功能介绍】
Page Request Interface (PRI) 是一种增强功能,它允许 PCIe 功能(Functions)将 DMA 目标设定为未固定的动态分页内存。PRI 依赖于 ATS(Address Translation Services),但 ATS 并不要求必须使用 PRI。与 ATS 类似,PRI 可以在每个功能的基础上启用。PRI:允许 PCIe 设备使用未固定的动态分页内存进行 DMA,依赖 ATS,但独立于 ATS。ATS 请求失败处理。原创 2024-08-25 21:09:39 · 136 阅读 · 0 评论 -
【PCIe 总线及设备入门学习专栏 3.4.1 -- PCIE中的 页请求服务 PRI 功能介绍】
ARM SMMUv3.2 支持 ATS(Address Translation Services)接口,可用于处理翻译请求。当使用 ATS 时,某些翻译事务可能会绕过 SMMU。地址截断:输入地址被截断到 OAS。SMMU 不提供翻译事务的地址大小错误检查。事务终止:事务被终止,并记录为中止事件。不会记录任何事件。ATS:允许设备绕过 SMMU 直接进行地址翻译,减少延迟。PRI:在 ATS 请求失败时,允许设备请求页面驻留,从而支持动态分页内存。地址截断和事务终止。原创 2024-08-25 21:12:34 · 844 阅读 · 0 评论