当前位置: 首页 > news >正文

【PCIe 总线及设备入门学习专栏 5.3 -- PCIe 与 EP 中的 DMA协同工作介绍】

文章目录

    • Overview
    • 1. DMA与PCIe的协同工作原理
      • PCIe的角色
    • 2. 为何使用Memory Write TLP?
      • (1) 性能优势
      • (2) 数据流向优化
    • 3. 具体工作流程示例

Overview

当EP 端和 Host 端有大量数据交互时,比如 NPU 的训练或者推理场景中,就需要Host 端向 EP 端搬运大量数据,这种场景就可以在 PCIe 系统中实现个 DMA,用来数据搬运。DMA 允许设备直接访问系统内存而不需要CPU的介入,这样可以减少CPU的负担,提高数据传输效率。在PCIe环境中,比如,GPU 作为端点设备(EP),需要通过DMA从主机内存中读取数据,比如进行图形渲染或计算任务时的大量数据传输。

Memory Write属于Posted事务,不需要目标设备的响应,而Memory Read需要等待Completion TLP返回数据。这可能意味着使用Memory Write可以提高效率,因为不需要等待响应,尤其是在大量数据传输时,减少延迟和开销。

通常,DMA控制器位于EP设备(如GPU)中,可以自主发起传输请求。当GPU需要数据时,其DMA控制器会生成Memory Read TLP,请求主机内存中的数据。主机收到请求后,通过Completion TLP将数据返回给GPU。

比如主机主动将数据写入GPU的显存,这时候主机使用Memory Write TLP,而GPU不需要发送请求,只需要接收数据。使用Memo

相关文章:

  • 【redis】哨兵:人工恢复主节点故障和哨兵自动恢复主节点故障
  • Flask的app.run()里发生了什么
  • 20250324-使用 `nltk` 的 `sent_tokenize`, `word_tokenize、WordNetLemmatizer` 方法时报错
  • 前端 Babel 入门简介
  • 系统思考与心智模式
  • 计算机网络--第四章 网络层(1)
  • 基于SpringBoot的“社区居民诊疗健康管理系统”的设计与实现(源码+数据库+文档+PPT)
  • 聊聊langchain4j的Code Execution Engine
  • 基于Java的科研成果统计系统的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!
  • CANopen基本理论
  • 2025年- G27-Lc101-542. 01 黑客帝国--java版
  • 2024年认证杯SPSSPRO杯数学建模B题(第二阶段)神经外科手术的定位与导航全过程文档及程序
  • 欧拉角与法向量之间的相互转换(附代码)
  • Cursor+Claude-3.5生成Android app
  • HuggingFace Transformers
  • 【算法笔记】图论基础(二):最短路、判环、二分图
  • Python-金融相关代码讲解
  • 详解Redis 核心特性与基础
  • 【C】高效的 GPIO 读取编码方式
  • 深入理解智能家居领域中RS485、Modbus、KNX 和 Zigbee协议概念
  • 水利部将联合最高检开展黄河流域水生态保护专项行动
  • 中老铁路跨境国际旅客突破50万人次
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 大型长读长RNA测序数据集发布,有助制定精准诊疗策略
  • 开门红背后的韧性密码:上海八大企业的“反脆弱”与“真功夫”
  • 物业也能成为居家养老“服务员”,上海多区将开展“物业+养老”试点