In complex systems with many compute nodes containing multiple CPUs that are coherent within each node, a key challenge is maintaining efficient and correct coherence between nodes. The Unimem system addresses this by proposing a virtualized global address space that enables such coherence, relying on the I/O Memory Management Unit (IOMMU) in each node. The goal of this thesis is to support this approach by successfully testing and using the IOMMU of a single node. For this purpose, we used ARM's IOMMU, known as the System Memory Management Unit (SMMU), which translates virtual addresses to physical addresses. Because Linux documentation for the SMMU is limited and unclear, we implemented custom kernel modules to test and use its functionality. First, we tested the SMMU in the Processing System (PS) of the Xilinx Zynq UltraScale+ MPSoC by developing a module that inserted virtual-to-physical address mappings into the SMMU. We then triggered a DMA transfer to a virtual address and observed that the request passed through the SMMU for address translation. We repeated this experiment by initiating DMA transactions from the Programmable Logic (PL) and similarly confirmed that the transactions were translated by the SMMU. Finally, we developed a module that enables transactions from the PL without requiring explicit pre-mapping of virtual and physical address pairs. This was achieved by configuring the SMMU with the page table pointer of a user process, allowing it to translate all relevant virtual addresses dynamically. Overall, we successfully demonstrated the correct operation of the SMMU across all tested scenarios. Due to time constraints, further exploration of advanced SMMU features is left for future work.


翻译:在包含多个 CPU 且每个节点内部保持缓存一致性的多计算节点复杂系统中,维持节点间高效且正确的缓存一致性是一项关键挑战。Unimem 系统通过提出一种虚拟化的全局地址空间来解决这一问题,该方案依赖于每个节点中的 I/O 内存管理单元(IOMMU)。本论文的目标是通过成功测试并使用单个节点的 IOMMU 来支持这一方法。为此,我们采用了 ARM 的 IOMMU(即系统内存管理单元,SMMU),其功能是将虚拟地址转换为物理地址。由于 Linux 中关于 SMMU 的文档有限且表述不清,我们实现了自定义内核模块以测试并使用其功能。首先,我们在 Xilinx Zynq UltraScale+ MPSoC 的处理系统(PS)中测试了 SMMU,开发了一个将虚拟地址到物理地址映射插入 SMMU 的模块。随后,我们触发了一个指向虚拟地址的 DMA 传输,并观察到该请求经过 SMMU 进行地址转换。我们通过从可编程逻辑(PL)发起 DMA 事务重复了该实验,同样证实了事务由 SMMU 进行转换。最后,我们开发了一个模块,使得来自 PL 的事务无需显式预映射虚拟地址与物理地址对即可执行。这是通过使用用户进程的页表指针配置 SMMU 实现的,使其能够动态转换所有相关的虚拟地址。总体而言,我们在所有测试场景中成功验证了 SMMU 的正确运行。由于时间限制,对 SMMU 高级功能的进一步探索将留待后续工作。

0
下载
关闭预览

相关内容

AAAI 2022 | ProtGNN:自解释图神经网络
专知
10+阅读 · 2022年2月28日
【NeurIPS2019】图变换网络:Graph Transformer Network
Single-Shot Object Detection with Enriched Semantics
统计学习与视觉计算组
14+阅读 · 2018年8月29日
国家自然科学基金
0+阅读 · 2017年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
46+阅读 · 2015年12月31日
VIP会员
相关资讯
相关基金
国家自然科学基金
0+阅读 · 2017年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
46+阅读 · 2015年12月31日
Top
微信扫码咨询专知VIP会员