本文提出了一种分布式输入输出物理内存保护(IOPMP,以下简称“IOPMP”)架构,其特点是采用了解耦的 IO bridge(IO 桥接器)与 checker (检查器)。该架构允许将 IO bridge 分布式放置以适应多主控SoC配置,同时共享一个集中式 checker,从而显著降低了面积开销。本设计基于7nm工艺实现,单个 IO bridge 所占面积小于1200 μm2。在 4KB 大包传输场景下,其性能开销低于0.2%。相关代码已合并至香山开源处理器(OpenXiangShan) Git 仓库,并作为开源硬件开放使用。
Github链接:https://github.com/OpenXiangShan/ChiselIOPMP/tree/master
一、研究背景与动机
安全特性是现代 SoC 的核心需求。IOPMP 通过对主设备发起的内存访问请求执行权限检查,实现了外设与内存间的安全隔离。然而,当前 IOPMP 生态仍不完善:现有 IOPMP 的定义与研究大多聚焦于核心 checker 组件,很少关注 IO bridge 及其在 SoC 微架构中的集成。少数已有的开源实现还存在面积效率与性能方面的局限,难以与商用闭源IP核竞争。
本研究在以下三个方向开展创新工作:
架构:将 checker 与 IO bridge 解耦,在各主设备至内存的通路上分布式部署 IO bridge,保障数据通路高带宽;通过共享单一checker节约硬件资源。 性能:基于AXI4 协议实现非阻塞 IO bridge,即使在并发、乱序和交织事务下也能实现高性能数据传输。 灵活可配置性:checker 与 IO bridge 的参数均可完全配置,允许调整表项大小和总线能力——例如:地址/数据宽度和未完成事务(outstanding) 深度。
二、解耦型 IOPMP 架构
架构总览
本设计支持的核心特性如下:
解耦的 checker与 IO bridge
分布式 IO bridge
三模式 checker
一对一 AXI4 协议 IO bridge
可配置的 srcmd、mdfcg 和 Entry 表大小
可配置的 IO bridge 中未完成事务数量
lO bridge 采用“one signal per slave”方案
本文提出解耦型 IOPMP 架构,其中,checker 与 IO bridge 独立设计,通过简易的有效 - 就绪(valid-ready)握手接口连接。该解耦设计支持基于不同微架构灵活集成 checker 与 IO bridge,便于 IO bridge 在芯片内分布式部署,优化片上资源利用。
三、实现
在本节中,我们将更详细地介绍分布式 IO bridge、三模式 checker 及其性能和面积分析。
(1)分布式 IO bridge
本设计采用非一致性 AXI4 总线协议作为其接口,在读和写通道上独立配置了独立的 FIFO,每个 FIFO 支持可配置的未完成事务深度,以实现高性能数据传输。AXI4顺序性通过“one signal per slave”方案来维持。
(2)三模式 checker
得益于解耦架构,本设计支持三种 checker 工作模式 —— 全功能模式(Full)、快速 K 模式(Rapid-K)、紧凑 K 模式(Compact-K),可在代码生成阶段灵活选择。同时支持 srcmd、mdcfg、entry 的可配置大小,及其他细粒度调优选项。
全功能模式下,checker 执行顺序查表,使用单比较器完成权限匹配;相比之下,Rapid-K、Compact-K 模式下,checker 同时例化 K 路比较器并行执行权限比较,提升查找效率。
(3)性能
以旁路模式为基线,我们测量了在 IOPMP 条目查找连续命中 10 次后的性能开销。测试在三种流量模式下进行:小数据包、随机大小数据包和 4 KB大数据包。结果如下表所示:
表1 性能
(4)面积
表2 面积
四、结论
欢迎您关注开芯院公众号
▼
