飞腾CPU体系结构之虚拟地址

1. 基本概念

  1. 虚拟地址:程序运行时指令和数据对应的地址。
  2. 虚拟地址空间:一个进程运行时指令和数据能访问到的虚拟地址范围。

注意事项:

  1. 每个进程拥有自己的虚拟地址空间,进程的虚拟地址空间一般分为内核态和用户态两个范围。
  2. 进程内的所有线程共享该进程的虚拟地址空间。
  3. 进程和进程之间可以共享虚拟地址空间
  1. 内核态范围:所有进程共享虚拟地址空间的内核态范围全部;
  2. 用户态范围:

1.部分进程共享虚拟地址空间的用户态范围中的共享库部分;
2. 两个进程可以通过System V或POSIX等共享内存方式,获得用户态范围中的一部分。

2. 飞腾CPU虚拟地址空间

飞腾CPU硬件上支持最大虚拟地址宽度为48位,Linux操作系统内核可以支持36/39/42/47/48/52位虚拟地址,其中飞腾暂不支持52位虚拟地址。


整个64位虚拟地址空间分为三部分:内核态范围、地址空洞、用户态范围。其中内核态范围和用户态范围采用各自的页表,当进程上下文切换时,仅仅切换用户态页表,而内核态页表不动。

3. 虚拟页

飞腾CPU按照固定的长度将虚拟地址空间进行划分,每个固定长度的虚拟地址范围就是一个虚拟页。虚拟页有两个特点:

  1. 虚拟页内地址单元的所有访问属性都一致;
  2. 虚拟页内地址单元对于相同的物理页帧。

查看虚拟内存页长度

getconf PAGE_SIZE

地址范围的访问

飞腾CPU对虚拟地址空间的访问受限于CPU的权限级

  1. 当飞腾CPU处于EL1权限(操作系统内核)时,飞腾CPU可以取指令的地址范围不受限制(除了地址空洞),读写数据的地址范围也不受限制(除了地址空洞)。
  2. 当飞腾CPU处于EL0权限(应用程序)时,飞腾CPU可以取指令的地址范围受限于用户态范围,读写数据的地址范围也受限于用户态范围。

当飞腾CPU处于EL0权限时,飞腾CPU超出用户态范围访问时,飞腾CPU会触发地址异常。

注意:地址范围访问过程忽略了地址的页属性。

页属性

页属性是对访问操作类型进行限制的,页属性包括执行、读、写、缓冲操作、写合并操作、对齐要求等等。

飞腾CPU体系结构之虚拟地址相关推荐

  1. 飞腾CPU体系结构简单介绍(一)

    第一章 飞腾CPU体系结构简介 ARM体系结构是一种精简指令集体系结构RISC,具有以下基本特点:通用寄存器数量较多:采用统一寻址模式,系统主存和外设分布在CPU物理地址空间的不同范围:采用load/ ...

  2. 飞腾CPU体系结构(十四)

    飞腾CPU体系结构(十四) 1. MMU原理 MMU的大致工作原理是: 64位虚拟地址首先分成虚拟页帧号和页内偏移量两部分,虚拟页帧号即页表项索引:根据页表项索引,在进程的页表里查找到对应页表项,然后 ...

  3. 飞腾CPU体系结构(十三)

    飞腾CPU体系结构(十三) 1. 虚拟地址到物理地址的映射 程序员编程一般都是使用虚拟地址,无论是否用到高速缓存,飞腾CPU的内存管理单元MMU都会把虚拟地址翻译成物理地址,然后根据物理地址进行数据的 ...

  4. 飞腾CPU体系结构(十一)

    飞腾CPU体系结构(十一) 1. 预取机制 飞腾CPU为了提升性能,支持从外部内存中预取数据到L1或L2缓存中.如果某个缓存块内容不在L1/L2缓存中,当该缓存块的某个地址单元被第一访问时,就会遇到内 ...

  5. 飞腾CPU体系结构(九)

    飞腾CPU体系结构(九) 向量访存指令主要包括LD1/ST1. LD2/ST2.LD3/ST3和LD4/ST4四种. LD1/ST1一般针对一个向量寄存器,也有两个.三个或四个向量寄存器的模式. LD ...

  6. 飞腾CPU体系结构(八)

    飞腾CPU体系结构(八)--标量访存指令 在阅读之前,请先查看<飞腾CPU体系结构(五)>的SIMD和浮点寄存器.飞腾CPU还提供了32个128 位SIMD和浮点寄存器,这32个128位寄 ...

  7. 飞腾CPU体系结构(十)

    飞腾CPU体系结构(十) 1.高速缓存模型 为了优化整体性能,飞腾CPU芯片内部提供L1高速缓存和L2高速缓存,有些飞腾CPU也提供芯片内部的L3高速缓存,本节不对这个情况进行赘述. 靠近流水线的高速 ...

  8. 飞腾CPU体系结构之低功耗指令

    飞腾CPU体系结构之低功耗指令 WFE和WFI指令 当飞腾CPU核执行两类指令:WFE或WFI之后,CPU核会进入低功耗状态: 一旦CPU核进入低功耗状态,就要一直保持低功耗状态直到相应的唤醒事件发生 ...

  9. 飞腾CPU体系结构(十二)

    飞腾CPU体系结构(十二) 1. CPU物理地址空间 飞腾CPU支持的物理地址宽度为44位,物理地址空间实际上只有16TB.系统主存(芯片外部内存)和IO外设(例如SoC设备.PCIe设备)都在这个物 ...

最新文章

  1. 请求拦截_实战SpringCloud通用请求字段拦截处理
  2. .NET程序脱离.NET Framework 运行之道
  3. Python的XML解析!
  4. 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限
  5. spring3: Aspectj后置返回通知
  6. react-生命周期
  7. 性能测试培训: 监控CPU之python
  8. 使用 Direct Initial Load 初始化 GoldenGate 同步数据
  9. Retrofit2源码分析(一)
  10. java数组排序的方法_Java数组排序方法详解
  11. Linux文件系统:ext2/ext3
  12. Bootstrap学习 - JavaScript插件
  13. SpringBoot入门项目——holleWorld
  14. 13步设计出一个ITSM系统
  15. android 优化侧滑按钮,Android 界面侧滑
  16. 普通人如何正确学习人工智能?
  17. ASAM MCD2D 笔记(1) - ODX use cases
  18. 解释程序和编译程序的区别
  19. Java 和 MySQL 数据类型对照表
  20. 为什么电子邮件发送失败?电子邮件发送失败的原因及解决方法

热门文章

  1. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 提取util公用方法 |基于最新版1.0开发者工具
  2. 给自己的优盘做个保护,再也不怕病毒了!
  3. 关于安装依赖时报错 code128的问题
  4. Cesium 加载离线地图服务
  5. PS系列最新应用(包括破解的方法)
  6. 他华丽转身,却永远留下了六个字——在中国,为中国
  7. 海淀育新学校2021高考成绩查询,首师附育新“加工能力”不容小觑!海淀7000名以内可“签约”实验班...
  8. nginx 代理的简单配置
  9. 临汾市新东方计算机学校,新东方在线走进校园——全国中小学大型公益讲座“怒放青春”走进临汾...
  10. 暴力破解算法思想(2)