以rv64 为例
riscv64 的 MMU 为 code 增加了一个新概念 : 虚拟地址 ,在这个概念之上,加了很多限制
目前好像是无法在物理地址上直接加限制的 //  MPU 就是这样子的,但是颗粒度大

相关的限制

size         :有效位数(可选择 64/57/49/39)      // 根据 satp.MODE 选择 , satp 为标准寄存器颗粒度(总是4KB)                  // 参考 附录内存属性            :共享  缓冲缓存  内存顺序模型(普通/设备)有扩展标准,Svpbmt对于 设备内存,只有一个内容可以选择   // 0b10对于 普通内存,可以有两个内容可以选择 // 0b10 或 0b01page.[62:61] // Svpbmt标准定义的内容0b00 : None0b01 : Non-cacheable, idempotent, weakly-ordered (RVWMO), main memory0b10 : Non-cacheable, non-idempotent, strongly-ordered (I/O ordering), I/O0b11 : Reserved for future standard use没有像arm64那样子比较详细的属性控制.arm64 : 设备还是内存设备GRE的组合内存cacheablity & shareablity 的 组合权限         :s-mode u-mode 读写执行有标准page.[6] : A  // accessablepage.[4] : U   // u-mode accessablepage.[3] : X    // executeablepage.[2] : W  // writeablepage.[1] : R    // readable没有像arm64那样子比较详细的权限控制.

相关的控制

寄存器satp.PPN页目录表基址所在页面的pfnsatp.MODE有效虚拟地址位数 , 高位虚拟地址不被解析satp.MODE控制MMU的开关. 设置为0 则关MMU . 设置为 非0 则 开MMU
页表描述
  • 以Sv48为例
Sv48最大支持4级别页表所有可能存在的页表如下
L0              索引512G
L0 L1           索引1G
L0 L1 L2        索引2M
L0 L1 L2 L3     索引4K页表Level     offset  offset+2    2^(offset+2)L0        10      12          4K      个512G页面L1       19      21          2M      个1G  页面L2       28      30          1G      个2M  页面L3       37      39          512G    个4K  页面
分别是
图4.22 Sv48 模式下 , 任何虚拟地址 的低48bit 被分解为图所示
图4.23 Sv48 模式下 , 目标物理地址 的低48bit 被分解为图所示
图4.24 Sv48 模式下 , 页表项中的   所有64bit 都可以图所示(该页表可以是叶子页表,也可以页目录表)注意:  1. 其中的 PPN[3] 和 PPN[2] 和 PPN[1] 和 PPN[0] 是 一个PPN的不同部分2. 如果 V = 1 && (R == 1 || X == 1) , 是叶子页表 ; 否则是页目录表

  • mmu table walk 过程

附录

  • 页面颗粒度 为什么只有一种
riscv-privileged-20211203.pdf P74For many applications, the choice of page size has a substantial performance impact.
对于许多应用程序,页面大小的选择对性能有很大影响。
A large page size increases TLB reach and loosens the associativity constraints on virtually indexed, physically tagged caches.
较大的页面大小会增加TLB覆盖范围,并放松对虚拟索引、物理标记缓存的关联性约束。
At the same time, large pages exacerbate internal fragmentation, wasting physical memory and possibly cache capacity.
同时,大页面加剧了内部碎片,浪费了物理内存,可能还浪费了缓存容量。
After much deliberation, we have settled on a conventional page size of 4 KiB for both RV32 and RV64.
经过深思熟虑,我们在RV32和RV64上,固定了页面大小为 常规页面大小(4KB)
We expect this decision to ease the porting of low-level runtime software and device drivers.
我们希望这一决定能够简化低级运行时软件和设备驱动程序的移植。
The TLB reach problem is ameliorated by transparent superpage support in modern operating systems [2].
现代操作系统中的透明超页支持改善了TLB到达问题[2]。
Additionally, multi-level TLB hierarchies are quite inexpensive relative to the multi-level cache hierarchies whose address space they map.
此外,与映射其地址空间的多级缓存层次相比,多级TLB层次相当便宜。

RISC-V 的MMU相关推荐

  1. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  2. 计组学习笔记2(RISC v版)

    指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...

  3. 安装Ubuntu RISC V toolchain失败(网速、git配置原因)

    git获取大容量工程出错:RPC failed: curl GnuTLS recv error : Decryption has failed. error: RPC failed; curl 56 ...

  4. fpga在线升级 linux_仅5000行Verilog代码、可在FPGA上跑轻量级Linux系统的RISC-V内核

    本文发布于www.hackster.io,由东京理工大学的计算机学院开发,专用于教学与加速用(苏老师也一直认为这是RISC-V当前的主要方向). 目前市场上开源的RISC-V内核已经很多,但很少有公开 ...

  5. xv6---Lab3: page tables

    目录 参考资料 RISC -V页表的简化图如下所示 ​编辑​ 多级页表 xv6内核页表 3.6 Process Address Space 3.7 Code: Sbrk 3.8 Code: Exec ...

  6. GPU指令集技术分析

    GPU指令集技术分析 本文将两篇文章整理了一下. 参考文章链接如下: https://zhuanlan.zhihu.com/p/391238629 https://zhuanlan.zhihu.com ...

  7. 中国芯片将靠此超车!RISC-V架构神在哪全解构

    来源: 智东西 RISC-V(发音为"risk-five")是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种"开源硬件& ...

  8. 中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】

    来源: 智东西 RISC-V(发音为"risk-five")是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种"开源硬件& ...

  9. RISV-V未来将面临怎样的挑战?

    来源:MoneyDJ.半导体行业观察 继大陆的RISC-V联盟成立之后,台湾RISC-V联盟也在今年正式成立,这也让RISC-V的议题热度逐渐加温,事实上这也是许多人看好能够足以与ARM竞争的架构,加 ...

  10. 基于 RT-Thread的全向赛车算法开发

    学校:山东大学 队伍名称: TSH 参赛队员:芦子晟.曹晓东.刘家宝 带队教师:陈桂友.吴皓 #mermaid-svg-pRxf6GoJMQZfNccu .label{font-family:'tre ...

最新文章

  1. vscode使用-添加格式化插件
  2. 如何由jdk的安装版本改成非安装版本
  3. Spring Cloud【Finchley】-03将微服务注册到Eureka Server上 + 为Eureka Server添加用户认证
  4. Uipath 学习栏目基础教学:10、数据抓取
  5. python全栈开发要学些什么_如何迅速学习Python 全栈开发?
  6. Acegi 安全框架
  7. java字节码忍者禁术
  8. linux环境下创建postgis数据库,linux下搭建postgresql、postgis、pg_pathman环境步骤详解...
  9. [JavaWeb-JavaScript]JavaScript与html结合方式
  10. 互联网晚报 | 2月8日 星期二 | 上海微电子交付中国首台光刻机;广东诞生全国首个万亿工业强区;东芝宣布分拆为两家公司...
  11. 生成式模型与判别式模型—大厂笔试汇总
  12. Pycharm中SQL语句提示SQL Dialect is Not Configured
  13. web安全day27:linux下调整文件及目录权限
  14. 验证DG最大性能模式下使用ARCH/LGWR及STANDBY LOG的不同情况
  15. http status 400 – bad request 亚马逊_蛮拼的!这个亚马逊卖家为Prime Day做了这三大准备,销量暴涨58倍...
  16. 11 EDA技术实用教程【时序电路的Verilog设计2】
  17. 华为会员开放服务(Membership Kit),助力移动应用快速建设会员生态
  18. ESP8266连接阿里云--MQTT协议
  19. ddPCR 数字PCR检测服务
  20. 为 VS 2012 打包 MSDN 在线文档为磁盘安装源

热门文章

  1. linux 的 绘画软件,数字绘画软件Krita 4.2.5发布(Linux下安装方法)
  2. JavaWeb - 黑马旅游网(6):旅游线路详情展示
  3. Android的Listener监听事件分析
  4. 【Redis持久化】:Redis持久化的意义
  5. MacBook 电池电量未达到 100%?如何关闭电池健康管理
  6. 10个免费在线拆分PDF文档的网站,简单易用!
  7. python实现FM算法
  8. C++-10种控制语句详解(第一种-if)
  9. 网络基础设施管理的未来
  10. Cadence Virtuoso 文件.cdsinit 修改提示