首页 > 最新动态 > 【RISC-V 论文解读】监管域内存保护表(SMMPT)的硬件实现与评估
最新动态
【RISC-V 论文解读】监管域内存保护表(SMMPT)的硬件实现与评估
2026-07-0322

摘要

监管域内存保护表(SMMPT)是RISC-V架构中一项正在社区讨论中的新兴扩展,旨在为多租户计算提供细粒度的多监管域物理内存隔离和访问控制,从而解决传统 PMP 机制在安全性和隔离性方面的局限性。

本文首次实现了MPT草案规范(v0.4)的开源硬件实现。我们的设计包含用于加速权限检查的多级缓存,以及用于降低查询频率的 L1TLB 扩展,并采用解耦架构以增强可移植性。评估结果表明,SPEC CPU2006 平均性能开销仅为2.32%,核心面积开销为0.244%,为 SMMPT 标准化提供了硬件参考。

背景与动机

内存隔离是RISC-V系统在机密计算、多租户云和可信执行环境(TEE)场景中的关键安全原语。RISC-V特权架构中原生的物理内存保护(PMP)机制在可扩展性、粒度灵活性以及对多监管域隔离的高效支持方面存在固有局限:它无法扩展至大量隔离执行环境,也缺乏对多租户工作负载所需的细粒度、每域物理内存访问控制的原生支持。

(a)通过Smmpt实现监管域间隔离
(a)通过 Smmpt 实现监管域间隔离
(b)基于MPT页表的物理内存访问控制
图1:RISC-V SMMPT 概述
(b)基于 MPT 页表的物理内存访问控制 
图1:RISC-V SMMPT 概述

如图 1a 所示,监管域内存保护表(SMMPT)扩展通过硬件强制实现由M模式根域安全管理器(RDSM)管理的各个独立监管域(SD)之间的隔离。每个域由唯一的监管域标识符(SDID)标识,并拥有自身独立的存储区域。SMMPT 引入基于页表层级结构的物理内存访问控制,支持每个 SD 的权限管理,并提供多种页面粒度以及完整的读/写/执行(R/W/X)权限管理(图1b)。

SMMPT 规范仍在社区积极讨论中,在本工作之前尚无开源的硬件实现。为填补这一空白,我们首次将功能完整、开源的 SMMPT 硬件实现集成到高性能RISC-V处理器“香山”中。我们的实现为 SMMPT 规范提供了硬件参考,并推动基于 SMMPT 的 RISC-V 内存隔离技术在生态中的加速采用。

SMMPT硬件架构

我们的 SMMPT 实现围绕模块化的 MPT 检查器(MPT Checker)构建,该检查器拥有独立的缓存和 MSHR,并与 MMU 保持松散的接口关系,而非深度耦合绑定。需指出的是,尽管检查器本身可独立复用,但 MMU 需针对其访问时序和请求格式做适配修改,因此完整迁移仍需调整部分 MMU 逻辑。尽管如此,该解耦策略已显著提高模块于其它 RISC-V 架构的可移植性,同时允许该检查器服务于核外 I/O 物理地址审查等任务。图2 给出了检查器与 MMU 的互连示意图。

图2:香山MPT检查器与MMU的互联示意图
图2:香山 MPT 检查器与 MMU 的互联示意图

用于加速权限检查的多级MPT缓存设计

MPT 检查器中多级缓存架构的核心设计目标是最小化权限查找延迟,从而降低 MPT 表遍历(Table Walker)的开销。为此,我们设计了一个可配置的多级 MPT 缓存,该缓存与 SMMPT 的层级页表结构对齐,并由五个专用的子缓存组成

中间 MPT 节点缓存(L3~L1):存储非叶子内存保护表项(MPTE),缩短后续 MPT 表遍历的路径,避免从根表重复遍历。采用全相联设计,并使用伪最近最少使用(PLRU)替换算法以优化缓存命中率。

叶子 MPT 节点缓存(L0和SP):L0 缓存为4 路组相联缓存,用于 4KB 大小的 MPTE;SP(超大页)缓存为全相联缓存,用于大页 MPTE(2MB/1GB/512GB)。两者也均采用 PLRU 替换算法。

非停顿缓存(Non-Stall Cache):整个缓存流水线优化为 4 级,以最大化权限查找吞吐量,并配备非阻塞的未命中状态保持寄存器(MSHR)模块。该 MSHR 可至少缓冲 4 个未决的缓存未命中请求,而不会停顿流水线,从而有效解耦缓存未命中与流水线停顿。通过多级 MPT 缓存和非阻塞 MSHR 的联合优化,我们成功将 SMMPT 实现的性能开销从未经优化的基线超过 100% 降低到 SPEC06 基准测试(使用 GEM5 模拟)中的约 5%。

用于降低MPT查询频率的MMU集成

尽管 MPT 检查器在架构上与 TLB 子系统解耦,并作为独立硬件模块运行,我们还是对 MMU 进行了轻量级修改,以减少 MPT 权限查询的频率,并降低系统级开销。

L1TLB 权限缓存优化:在 L1TLB 的缓存行中扩展缓存 MPT 的 R/W/X 权限位,与虚拟地址到物理地址的转换条目一同存储。该优化使得在 L1TLB 命中时,无需再向检查器模块重复查询 MPT 权限。

L2TLB 和 PTW 标准接口:MPT 检查器为 L2TLB 和页表遍历单元(PTW)提供标准的权限查询接口。

评估结果

在采用 L1TLB 权限缓存优化后,我们 SMMPT 设计的性能开销进一步降低。我们在“香山”开源处理器上使用 SPEC06 基准测试评估了 SMMPT 实现,关键性能和面积开销结果如下:

图3:SMMPT SPEC06性能对比
图3:SMMPT SPEC06 性能对比

性能开销:对于 4KB 页面粒度(如图3所示),SPECInt2006 平均性能开销为3.26%,SPECfp2006 为1.41%(平均 2.32%);对于大页 MPT(2MB),开销进一步降低至2.16%。

面积开销:整个 MPT 检查器模块的总单元面积为 4880 μm2,占核心总面积的 0.244%。

结论

本文首次实现了 RISC-V SMMPT v0.4 规范的开源、经过完整测试的硬件实现。核心 MPT 检查器模块采用模块化、解耦的架构,针对低权限查找延迟和降低查询频率进行了优化。评估结果表明,我们的实现引入了可接受的性能和面积开销。本工作也为 SMMPT 规范提供了硬件参考。


欢迎您关注开芯院公众号



点我访问原文链接