memory - 何时在内存映射 PCIe 配置中创建 TLP 数据包?
问题描述
当涉及到 PCIe 连接时,我有一个理解问题。在 PCIe 接口中,数据使用 TLP 数据包在设备之间传输。在内存映射配置中,如果某个软件想要将数据发送到设备,则它必须将数据写入预定义的内存位置,该内存位置映射到该特定设备。
TLP 数据包何时创建?数据是否存储在内存中并且设备必须使用 TLP 数据包(例如内存读取)“获取”数据,或者 CPU 的 MMU 是否自动检测到这是一个映射的内存区域并自动将数据“转换”为TLP 数据包并通过接口发送它们?
先感谢您!
解决方案
CPU 使用物理 MMIO 地址生成内存事务。基于地址,内存事务被路由到适当的根端口。到目前为止,该操作超出了 PCIe 规范的范围。根端口构建 TLP 并通过 PCIe 将其发送出去。如果操作是读取(需要响应),根端口会从设备接收到带有数据的响应 TLP,并将数据发送回适当的 CPU。
推荐阅读
- swagger - 对于 post 请求产生关键字类型不会成为响应标头内容类型
- shell - Angular 8 中的代码编辑器(ace 编辑器)(文本/JavaScript/sh/sh 等编辑器)
- c++ - 如何使用块更改 matrixXd 特征中的值?
- batch-file - VLC 命令行转换并不总是有效
- python - Pandas 数据帧条件计数逐块
- javascript - 使用网络工作者进行大厅更新(可能还有聊天)?
- javascript - 如何将字符串作为道具传递并使组件像变量一样读取它?
- lilypond - 如何在 lilypond 的不同五线谱上绑音符
- c# - Outlook Addin:如何按照 Microsoft 文档的建议主动释放内存?
- android - Android:模拟片段单元测试的上下文