【问题标题】:PCIe TLP write packet address only 31:2 bitsPCIe TLP 仅写入数据包地址 31:2 位
【发布时间】:2019-03-26 22:53:47
【问题描述】:

我们来看一个写包的例子:假设 CPU 写了 使用 32 位将 0x12345678 的值设置为物理地址 0xfdaff040 寻址

这个例子来自这个site我没看懂原帖的解释

  1. 为什么地址从第二位开始[31 : 2]
  2. 为什么地址不一样

【问题讨论】:

  • 地址不一样只是因为图文原文不一致。

标签: cpu-architecture pci-e


【解决方案1】:

对齐的 32 位块的地址总是在地址末尾有两个零位。您可以将其视为将块的地址写入 32 位插槽,或者将除以 4 的地址写入地址的第 2 位到第 31 位。结果都是一样的,因为除以四相当于右移两位。

【讨论】:

  • 换一种说法,是(32b)字地址,而不是字节地址
  • 并且由于至少发送了32b,因此字节使能字first_belast_be用于指示哪些字节是有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多