在RISC-V的虚拟存储系统中,leaf 页表项中 PBMT 位(即 bit[62:61] )指示了该页的memory类型,这个类型会覆盖PMA指示的该页的memory类型。如果该页底层物理内存属性为空,PBMT 则不会覆盖。
PBMT 编码含义如下:
对于 non-leaf PTE,PBMT 必须为 0 ,否则触发 page-fault;对于leaf PTE,PBMT 不能为 3,否则触发 page-fault。
当 PBMT 设置将 memory page 覆盖为 I/O 属性时(或反之),对该页的内存访问将遵循最后有效属性。
在 H 扩展下进行两级地址转换时:
首先,如果 hagtp 的模式不为 0(即在 Sv39/48/57/64模式下),非0 的 G-stage(第二级)PTE 的 PBMT会覆盖 PMA 中的属性成为中间级属性;否则 PMA 的属性为中间级属性。
其次,如果 vsatp 的模式不为 0(即在 Sv39/48/57/64模式下),非0 的 VS-satge (第一级)PTE 的PBMT将覆盖中间级属性,从而生成最终访问该页的属性;否则使用中间属性作为最终属性。