我正在尝试了解 INTEL VT-D,我读过根表有 256 个条目,每个根表都指向更深的上下文表,每个表有 256 个条目,其中每个上下文表都包含二级翻译。不幸的是,我无法弄清楚根表和上下文表之间的确切关系。我们有 256 * 256 个上下文表条目吗?或者每个根表都指向同一个上下文表。通过查看下图, 它说每个上下文表都有不同的总线号,但我无法与之关联,如果有人告诉我二级翻译也很好,我熟悉 MMU 分页但 VT-D 分页是真的很混乱。我已经浏览了 VT-D 规格,但仍然有一些概念不清楚,我在上面描述过。
问问题
243 次
1 回答
2
在 PCIe 中,有 256 个总线编号,每条总线有 256 个设备/功能编号,总共 256*256 个功能。在 VT-d 中,每个都可以有一个上下文条目。
根表/上下文表被组织为一个两级表,因此不必完全填充上下文表。每个根表条目都有一个存在位。如果当前位为 0,则该总线没有上下文表。
一个以上的根表条目指向同一个上下文表是非常不寻常的,尽管没有什么可以排除它。
如果您熟悉 CPU 分页,VT-d 页表结构与 EPT 非常相似(事实上,内存中的相同物理表可以同时用于这两种目的)。VT-d 支持最多 48 位地址的两级、三级或四级分页结构(取决于硬件实现;我相信所有当前的实现仅支持 4 级遍历)。
如果您有更具体的问题,我可以回答它们,但我认为这不是一个教程的好地方。
于 2018-11-20T01:15:11.213 回答