附录 A 术语表
本附录汇总专栏中出现的主要术语,按英文名称或缩写的字母顺序排列,不区分大小写,忽略空格、连字符、斜线与下划线。只有中文名称的概念,按其通行的英文名称归入相应字母。同一术语在不同语境下含义不同时,释义中分别说明。
A
| 术语 | 释义 |
|---|---|
| ACE(AXI Coherency Extensions) | Arm AMBA 总线的一致性扩展协议;其简化形式 ACE-Lite 用于只需侦听 CPU cache、自身不带一致性 cache 的 I/O 一致性主设备 |
| Acquire / Release(获取 / 释放) | 内存模型中的同步操作:获取使本方此后的访问能看到他方已发布的数据,释放使本方此前的写入对他方可见;GPU 中由命令处理器在分派边界或屏障包中以 cache 失效与写回实现 |
| ACS(Access Control Services,访问控制服务) | PCIe 交换结构中控制点对点事务转发的能力,包括源验证(SV)、请求重定向(RR)、完成报文重定向(CR)与上游转发(UF);决定设备之间能否绕过 IOMMU 直接通信,进而影响 IOMMU group 的划分 |
| AF_XDP | Linux 的一种套接字类型,网卡驱动经 XDP 把数据包直接放入用户态注册的共享内存区域 |
| Agent scope / System scope(设备范围 / 系统范围) | HSA 内存模型中同步操作的作用范围:设备范围只保证 GPU 内部可见,系统范围还保证对 CPU 与其他设备可见 |
| AMD-Vi | AMD 平台的 IOMMU 实现,以设备表、I/O 页表与命令缓冲区(Command Buffer)为主要结构 |
| AQL(Architected Queuing Language) | HSA 定义的用户态队列包格式,分派包与屏障包均以该格式写入队列,由命令处理器解析 |
| ATC(Address Translation Cache,地址翻译缓存) | 设备一侧缓存 ATS 翻译结果的结构,内核中也称为设备 TLB |
| ATS(Address Translation Services,地址翻译服务) | PCIe 定义的机制:设备向 IOMMU 请求翻译并缓存结果,之后发出标记为已翻译的请求,以减少 IOMMU 的翻译开销 |
| Attach(挂接) | 在 IOMMU 中指把设备加入某个 domain,使其按该 domain 的页表翻译;在 dma-buf 中指导入方与缓冲区建立关联,之后才能映射 |
B
| 术语 | 释义 |
|---|---|
| BAR(Base Address Register,基址寄存器) | PCIe 设备在配置空间中声明 MMIO 地址区间的寄存器;GPU 的显存经 BAR 窗口暴露给 CPU 与其他设备 |
| BDF(Bus/Device/Function) | PCIe 设备的总线号、设备号与功能号,作为请求者标识随事务发出,IOMMU 据此选择翻译上下文 |
| Blit kernel | ROCm 中由计算单元执行的复制程序,是 SDMA 之外的另一种数据复制方式 |
| BO(Buffer Object,缓冲区对象) | DRM 与 amdgpu 中管理显存与 GTT 内存的基本单位,可在不同内存域之间迁移 |
| Bounce buffer(反弹缓冲区) | 设备无法直接访问原缓冲区时使用的中转缓冲区,映射与同步时在两者之间复制数据;Linux 中的实现为 SWIOTLB |
| Buddy allocator(伙伴系统) | 内核按 2 的幂次管理物理页的分配器,能够提供的物理连续内存受碎片程度限制 |
| Bus master(总线主控) | 能够主动发起总线事务的设备,是设备自行执行 DMA 的前提 |
| Bus snooping(总线侦听) | 一致性互连监听其他主设备的访问,并相应地提供、更新或失效 cache 行的机制 |
C
| 术语 | 释义 |
|---|---|
| Cache line(cache 行) | cache 与内存之间交换数据的最小单位,常见为 64 字节;DMA 缓冲区与其他数据共享 cache 行会导致数据损坏 |
| C-bit | AMD SME 中物理地址的加密标志位,位置由 CPUID 报告;设备访问加密内存时 DMA 地址同样须带上该位,寻址位宽不足的设备需经 SWIOTLB 中转 |
| CHI(Coherent Hub Interface) | Arm AMBA 5 的一致性互连协议,面向大规模多核系统 |
| CMA(Contiguous Memory Allocator,连续内存分配器) | 预留一段可供可移动页面临时使用的内存,需要时迁出其中的页面,以提供大块物理连续内存 |
| Coarse-grained / Fine-grained memory(粗粒度 / 细粒度内存) | ROCm 中按一致性粒度区分的内存:粗粒度内存只在分派边界等同步点保证一致,细粒度内存在核函数执行期间即可与 CPU 或其他设备一致地访问;二者由页表中的内存类型区分 |
| Coherent mapping(一致性映射) | 以dma_alloc_coherent()建立的映射,CPU 与设备可随时访问而无须显式同步;在不具备硬件一致性的平台上,通常以不可缓存方式映射给 CPU |
| Command Queue(命令队列) | IOMMU 接收软件命令的环形队列,主要用于下发失效命令;SMMUv3 称为命令队列,AMD-Vi 称为命令缓冲区,VT-d 中的对应结构为失效队列(Invalidation Queue) |
| Completer / Requester(完成者 / 请求者) | PCIe 规范中事务的响应方与发起方 |
| Completion(完成报文) | PCIe 中响应读请求、携带数据返回的 TLP |
| Context cache(上下文缓存) | VT-d 中缓存上下文表项的结构;修改设备与 domain 的关联之后需要失效 |
| CP(Command Processor,命令处理器) | GPU 中解析命令流、分派任务并执行同步与 cache 维护操作的单元 |
| CQ / CQE(Completion Queue / Completion Queue Entry,完成队列 / 完成队列项) | 设备或内核写入完成信息的队列及其条目,NVMe、io_uring 与 RDMA 均采用这一结构 |
| CU(Compute Unit,计算单元) | GPU 中执行着色器程序的基本单元,各自带有一级 cache |
| CXL(Compute Express Link) | 基于 PCIe 物理层的互连协议,允许设备以一致的方式访问主机内存,或使主机访问设备内存 |
D
| 术语 | 释义 |
|---|---|
| DAC(Dual Address Cycle,双地址周期) | PCI 总线以两个地址周期传送 64 位地址的方式;不支持该方式的设备只能访问低 4 GB |
| DDIO(Data Direct I/O) | Intel 平台把设备写入的数据直接放入末级 cache 的机制 |
| Descriptor ring(描述符环) | 驱动与设备共享的环形描述符数组,每个描述符给出一个缓冲区的 DMA 地址与长度 |
| Device page fault(设备缺页) | 设备访问未映射或无权限的地址时产生的故障;在支持可重试缺页的设备上,驱动补齐映射后访问可重新执行 |
| Directory(目录) | 记录各 cache 行由哪些 cache 持有的结构,用于代替广播式侦听 |
| Dirty(脏) | cache 行已被修改、尚未写回内存的状态 |
| DMA(Direct Memory Access,直接内存访问) | 设备在不需要 CPU 逐字搬运的情况下直接读写内存的机制 |
| DMA address(DMA 地址) | 设备访问内存时发出的地址;视平台不同,可能等于物理地址,也可能是带偏移或附加位的总线地址,或者是 IOVA |
| DMA-BUF(dma-buf) | 内核中跨驱动、跨设备共享缓冲区的框架,以文件描述符表示缓冲区,由导出方提供,各导入方分别映射 |
| DMAC(DMA Controller,DMA 控制器) | 早期系统中独立于外设、代替外设执行数据搬运的第三方 DMA 控制器 |
| dma-direct | 设备不经 IOMMU 翻译时的映射实现,DMA 地址由物理地址换算得到,超出掩码时转入 SWIOTLB |
| DMA direction(DMA 方向) | 映射时声明的数据流向,取值为DMA_TO_DEVICE、DMA_FROM_DEVICE与DMA_BIDIRECTIONAL,决定同步时执行的 cache 操作与反弹时的复制方向 |
| dma_fence / dma_resv | dma-buf 的同步对象:dma_fence表示一项异步操作的完成,dma_resv汇集缓冲区上的读写 fence |
| DMA-FQ | IOMMU domain 的一种类型,解除映射之后的 IOTLB 失效经刷新队列批量执行,以较短的隔离窗口换取性能 |
| dma_map_ops | 由平台或总线为设备提供的映射操作集;设备未提供时,映射经直接映射路径处理 |
| DMA mask(DMA 掩码) | 驱动以dma_set_mask()等接口声明的设备可寻址范围;超出范围的内存需经 IOMMU 或反弹缓冲区访问 |
| Doorbell(门铃) | 设备的 MMIO 寄存器,驱动或应用写入它,通知设备有新的任务待处理 |
| DPDK(Data Plane Development Kit) | 用户态网络数据面框架,经 VFIO 等接口驱动网卡,以轮询方式收发 |
| DREQ / DACK | ISA 时代外设向 DMA 控制器请求传输、控制器应答的信号线 |
| DSI / PSI(Domain / Page Selective Invalidation) | VT-d 中按 domain 整体失效与按页范围失效 IOTLB 的两种方式 |
E
| 术语 | 释义 |
|---|---|
| EAL(Environment Abstraction Layer,环境抽象层) | DPDK 中负责大页内存、设备与 IOVA 模式初始化的层 |
| Eviction(驱逐) | 显存不足时把缓冲区对象移出显存的操作;被驱逐的共享缓冲区需要通知导入方重新映射 |
| Exporter / Importer(导出方 / 导入方) | dma-buf 中提供缓冲区的驱动与使用缓冲区的驱动 |
F
| 术语 | 释义 |
|---|---|
| FOLL_LONGTERM | 页面固定的标志,表示固定的期限不确定,用于 VFIO、RDMA 等由设备长期访问的场合 |
| Full coherency(完全一致性) | 设备与 CPU 相互侦听对方 cache 的一致性,与只由设备侦听 CPU 的 I/O 一致性相对 |
G
| 术语 | 释义 |
|---|---|
| GART(Graphics Address Remapping Table) | GPU 中把一段地址区间映射到系统内存页的页表;amdgpu 中为 VMID 0 地址空间内的一段区间,供内核使用的引擎访问系统内存 |
| GPUVM | amdgpu 中 GPU 的多级页表机制,每个进程拥有独立的 GPU 虚拟地址空间,以 VMID 区分 |
| Group(IOMMU group) | IOMMU 能够相互隔离的最小设备集合;同一 group 中的设备必须属于同一个 domain,交给 VFIO 时须整体交出 |
| GTT(Graphics Translation Table) | amdgpu 中经 GPU 页表映射、供 GPU 访问的系统内存域 |
| GUP(get_user_pages) | 内核获取用户虚拟地址所对应页面的接口族;pin_user_pages()是其固定页面的变体 |
H
| 术语 | 释义 |
|---|---|
| HDP(Host Data Path,主机数据路径) | AMD GPU 中处理主机经 BAR 访问显存的通路,带有缓存,需要显式刷新与失效 |
| HMM(Heterogeneous Memory Management) | 内核中让设备镜像进程页表,并在设备内存与系统内存之间迁移页面的框架 |
| Host bridge(主桥) | 连接 CPU 与 PCI 层次结构的桥,负责 CPU 物理地址与总线地址之间的变换 |
| HSA(Heterogeneous System Architecture) | 定义用户态队列、AQL 包格式与内存模型的异构计算规范,ROCm 以之为基础 |
| Hugepage(大页) | 大于基本页的页面,如 2 MB 与 1 GB,可减少 TLB 与 IOTLB 的缺失 |
I
| 术语 | 释义 |
|---|---|
| IB(Indirect Buffer,间接缓冲区) | 存放 GPU 命令的缓冲区,环形缓冲区中只写入指向它的包 |
| IH(Interrupt Handler,中断处理单元) | AMD GPU 中收集中断与缺页信息、写入 IH 环的单元 |
| Infinity Cache(MALL) | AMD GPU 在存储器控制器一侧设置的末级 cache |
| Interrupt remapping(中断重映射) | IOMMU 对设备发出的 MSI 进行校验与转换的功能,防止设备伪造中断;是用户态驱动安全性的必要条件 |
| I/O coherency(I/O 一致性) | 设备的访问侦听 CPU cache、而 CPU 不侦听设备 cache 的单向一致性 |
| IOMMU(I/O Memory Management Unit) | 位于设备与内存之间、对设备发出的地址进行翻译与权限检查的硬件 |
| iommu-dma | dma-mapping 中经 IOMMU 映射的实现,负责 IOVA 分配、I/O 页表的建立与 IOTLB 失效 |
| IOMMUFD | 以独立字符设备管理 I/O 地址空间与设备挂接的用户态接口,是 VFIO container 的后继 |
| IOTLB | IOMMU 中缓存 IOVA 翻译结果的结构;解除映射之后必须失效相应条目 |
| io_uring | Linux 的异步 I/O 接口,以内核与应用共享的提交队列与完成队列交换请求,支持注册缓冲区与零拷贝收发 |
| IOVA(I/O Virtual Address,I/O 虚拟地址) | 启用 IOMMU 翻译时设备使用的地址,由 IOMMU 翻译为物理地址 |
K
| 术语 | 释义 |
|---|---|
| KFD(Kernel Fusion Driver) | amdgpu 中面向计算的内核接口,管理用户态队列、SVM 范围与设备缺页的处理 |
L
| 术语 | 释义 |
|---|---|
| lkey / rkey(本地键 / 远端键) | RDMA 内存注册时生成的键:本地工作请求以 lkey 引用内存,远端以 rkey 访问内存;rkey 的分发即访问授权 |
| LLC(Last Level Cache,末级 cache) | 多个 CPU 核心共享的最后一级 cache |
M
| 术语 | 释义 |
|---|---|
| memseg(内存段) | DPDK 中描述一段大页内存及其 IOVA 的结构 |
| MESI | 以 Modified、Exclusive、Shared、Invalid 四种状态描述 cache 行的一致性协议 |
| migrate_vma | 内核在系统内存与设备私有内存之间迁移页面的接口 |
| MMIO(Memory-Mapped I/O,内存映射 I/O) | 把设备寄存器与设备内存映射到 CPU 物理地址空间,以普通的读写指令访问 |
| mmu_interval_notifier | 进程页表发生变化时通知设备驱动的机制,驱动在回调中同步失效设备页表 |
| MPS(Max Payload Size,最大载荷长度) | PCIe 单个 TLP 可携带的最大数据量,常见为 256 字节 |
| MR(Memory Region,内存区域) | RDMA 中注册给网卡访问的一段内存 |
| MSI(Message Signaled Interrupt) | 设备以内存写事务发出的中断 |
| MTYPE | AMD GPU 页表项中的内存类型字段,决定访问在各级 cache 中的缓存方式与一致性行为 |
| MW(Memory Window,内存窗口) | RDMA 中在已注册内存区域内动态授予远端访问某一子区间的对象 |
O
| 术语 | 释义 |
|---|---|
| ODP(On-Demand Paging,按需分页) | RDMA 中不固定页面、由网卡缺页触发映射的内存注册方式 |
| Ownership(所有权) | 流式映射中缓冲区在某一时刻由 CPU 或设备访问的约定,交接通过dma_sync_*完成 |
P
| 术语 | 释义 |
|---|---|
| P2P(Peer-to-Peer,点对点) | 两个 PCIe 设备之间直接进行的 DMA,数据不经系统内存中转;内核以 P2PDMA 框架判断其可行性并建立映射 |
| page_pool | 网络驱动的页面池,复用已映射的页面,避免每次收包都映射与解除映射 |
| PASID(Process Address Space ID) | PCIe 请求中携带的地址空间标识,使 IOMMU 能够按进程选择页表 |
| Passthrough(直通) | IOMMU 不翻译设备地址、DMA 地址等于物理地址的模式,在内核中对应 identity 类型的 domain |
| PD(Protection Domain,保护域) | RDMA 中把队列对与内存区域等对象归入同一隔离范围的对象 |
| Pinning(页面固定) | 增加页面的固定计数,使其在设备访问期间不被换出或迁移,从而保持物理地址不变 |
| PIO(Programmed I/O,程序化 I/O) | 由 CPU 逐字读写设备寄存器完成数据传输的方式 |
| PMD(Poll Mode Driver,轮询模式驱动) | DPDK 中以轮询代替中断的用户态网卡驱动 |
| PoC(Point of Coherency,一致性点) | Arm 架构中所有观察者看到同一份数据的位置,面向 DMA 的 cache 维护操作以 PoC 为目标 |
| PRI(Page Request Interface,页请求接口) | PCIe 定义的机制,设备在 ATS 翻译失败时请求系统建立映射 |
| PRIME | DRM 中基于 dma-buf 的缓冲区共享机制 |
Q
| 术语 | 释义 |
|---|---|
| QP(Queue Pair,队列对) | RDMA 的通信端点,由发送队列与接收队列组成 |
R
| 术语 | 释义 |
|---|---|
| RDMA(Remote Direct Memory Access) | 网卡直接读写远端主机已注册内存的技术,数据路径不经两端 CPU 的复制 |
| Resizable BAR(可调整 BAR) | 允许在枚举时调整设备 BAR 的大小,使 CPU 与其他设备能够访问整个显存 |
S
| 术语 | 释义 |
|---|---|
| Scalable mode(可扩展模式) | VT-d 中支持按 PASID 选择翻译结构的模式 |
| Scatter-gather(分散 / 聚集,SG) | 设备以多个地址与长度对描述一次传输,使物理上分散的内存能够在一次 DMA 中访问 |
| scatterlist / sg_table | 内核描述分散内存的数据结构:sg_table由若干scatterlist条目组成,映射之后每个条目另行记录 DMA 地址与长度 |
| SDMA(System DMA) | AMD GPU 中的 DMA 引擎,负责主机内存与显存之间以及显存内部的复制与填充 |
| SME(Secure Memory Encryption,安全内存加密) | AMD 平台以物理地址中的 C-bit 控制的内存加密功能 |
| SMMU(System MMU) | Arm 平台的 IOMMU;SMMUv3 以 StreamID 标识设备,以命令队列下发失效 |
| Snoop filter(侦听过滤器) | 记录哪些 cache 可能持有某一行的结构,用于减少不必要的侦听 |
| SQ / SQE(Submission Queue / Submission Queue Entry,提交队列 / 提交队列项) | 驱动或应用写入请求的队列及其条目 |
| Streaming mapping(流式映射) | 以dma_map_single()、dma_map_sg()等接口建立的映射,CPU 与设备之间通过dma_sync_*交接所有权 |
| Strict mode(严格模式) | IOMMU 在每次解除映射时立即失效 IOTLB 的模式,与批量失效(DMA-FQ)相对 |
| SVA(Shared Virtual Addressing,共享虚拟寻址) | 设备经 PASID 与 IOMMU 直接使用进程页表访问内存的机制 |
| SVM(Shared Virtual Memory,共享虚拟内存) | CPU 与 GPU 以同一虚拟地址访问同一数据的编程模型;amdgpu 中由 KFD 的 SVM 范围管理实现 |
| SWIOTLB(Software I/O TLB) | 内核的反弹缓冲区实现,在设备可寻址范围内预留缓冲池,映射与同步时在原缓冲区与缓冲池之间复制数据 |
T
| 术语 | 释义 |
|---|---|
| TLP(Transaction Layer Packet,事务层包) | PCIe 事务层传送的数据包,DMA 读写以存储器读写请求 TLP 进行 |
| TTM(Translation Table Maps) | DRM 中管理缓冲区在显存与系统内存之间放置与迁移的内存管理器 |
U
| 术语 | 释义 |
|---|---|
| UC(Uncached,不可缓存) | CPU 访问不经过 cache 的内存类型,Arm 架构中对应 Normal-NC 等属性 |
| userptr | amdgpu 把用户态普通内存映射给 GPU 访问的方式 |
| UTCL2 | AMD GPU 内部承担地址翻译的二级翻译缓存,翻译失败时向 IH 环报告缺页 |
V
| 术语 | 释义 |
|---|---|
| VFIO(Virtual Function I/O) | 内核把设备安全地交给用户态的框架,以 IOMMU 隔离设备的 DMA |
| VFIO container | VFIO 传统接口中代表一个 I/O 地址空间的对象,可容纳多个 group |
| VMID | AMD GPU 中区分各 GPU 虚拟地址空间的标识,VMID 0 供内核使用 |
| VT-d(Virtualization Technology for Directed I/O) | Intel 平台的 IOMMU 实现 |
W
| 术语 | 释义 |
|---|---|
| WB / WT(Write-back / Write-through,写回 / 写直通) | cache 的两种写策略:写回只在 cache 行被替换或显式写回时更新内存,写直通在每次写入时同时更新内存 |
| WC(Write-Combining,写合并) | CPU 把多次写入合并为较大事务发出的内存类型,常用于设备的 BAR 区间 |
| WQE(Work Queue Element,工作请求) | RDMA 中写入发送队列或接收队列的请求条目 |
X
| 术语 | 释义 |
|---|---|
| XDP(eXpress Data Path) | 网卡驱动在分配套接字缓冲区之前运行 eBPF 程序处理数据包的机制 |
| XNACK | AMD GPU 从缺页中恢复的能力:启用时翻译失败的访存请求被否定应答,发出请求的 wavefront 暂停并在驱动处理之后重试 |
Z
| 术语 | 释义 |
|---|---|
| zcrx | io_uring 的零拷贝接收,Linux 6.15 引入,网卡把数据直接写入应用提供的内存区域 |
| Zero-copy(零拷贝) | 数据在设备与最终使用者之间传递时不经 CPU 复制的传输方式 |
| Zone(内存区域) | 内核按物理地址划分的内存区域,如ZONE_DMA、ZONE_DMA32与ZONE_NORMAL,分配时以 GFP 标志选择 |
| ZONE_DEVICE | 描述设备内存的特殊区域;设备私有内存(MEMORY_DEVICE_PRIVATE)以此纳入页面管理,供 HMM 迁移使用 |
系列导航:
- 上一篇[《第 25 篇 性能与可移植性检查清单》]审核中…
- 下一篇《附录 B DMA 接口汇总表》