本文主要是介绍Armv8/Armv9 MMU学习的28问,你能回答上来几个,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
01、一个大系统中有多少个MMU ?
一般情况下:一个core里面有一个MMU,8个core就是8个MMU;
除了Arm core里有MMU之外,在SOC中,还会诸多个SMMU,具体看SOC的架构设计。
02、一个ARM Core中有多少个Translation regime?
在Armv8/Armv9架构中(不考虑CCA/RME安全扩展),至少有9类Translation regime,注意是9类,不是9个。 分别如下:
03、EL1&0 Translation regime Stage2、EL2 Translation regime stage1、EL2&0 Translation regime stage1 这三者的区别是什么?
EL2&0 Translation regime stage1 : 属于EL1&0 Translation regime的Stage1页表转换。例如无论你是否开启虚拟化,那么你在VM的地址进行的stage1地址翻译。 使用TTBRn_EL1寄存器。
EL1&0 Translation regime Stage2 : 属于EL1&0 Translation regime的Stage2页表转换。例如你开启了虚拟化,那么你在VM的地址进行的stage2地址翻译。使用VTTBRn_EL2寄存器。
EL2 Translation regime stage1 : 属于EL2 Translation regime, EL2的程序,进行的地址翻译。使用TTBRn_EL2寄存器。
04、TTBR1_EL2寄存器有啥特殊性,这个寄存器是给谁使用的?
这个是给EL2 Translation regime stage1用的。其实就是给type-2 hypervisor的
05、有没有TTBR1_EL3寄存器?为什么?
06、什么是memory-map?一个ARM的系统中,有几套物理地址空间?
07、页表到底有几级?页表最少可以有几级?页表最多可以有几级
08、页表有多大?页表存放在哪里?页表由谁来管理?
09、页表是否能放在cache中?
10、什么是Translation Table walk?什么是TLB?
11、请简述页表查询的过程?
12、在一个大系统中,物理地址是多少位的?物理地址是多少位指的是什么?虚拟地址又是多少位的?物理地址的位数和虚拟地址的位数都是由谁来决定的?
13、请说明entry、descriptor、页表项、条目 这个四个词汇的由来?
14、TCR中有缓存属性和共享属性、页表的entry中也有缓存属性和共享属性,这俩有什么区别?
15、请简述TTBR0和TTBR1的概念和意义?
16、请简述cacheability和shareability属性的含义?
17、stage1和stage2有何区别?
18、stage1和stage2的descriptor中,有很多重复的属性,当两者属性有冲突了怎么办?
19、L1、L2、L2的descriptor中也有部分相同的属性,重复时怎么办?
20、Descriptor的格式有哪几种?
21、Descriptor的类型有哪几种?
22、简述您所观察到的系统软件中(操作系统或hypervisor)的shareability和cacheability一般都是怎样配置的?
23、开启一个MMU的步骤是怎样的?
24、啥是flat map? 啥是full level table?
25、页表中的AF属性位、DBM属性位分别是干啥的?
26、页表中的nG属性位是干啥的?
27、页表中的Contiguous属性位是干啥的?
28、在开启MMU的瞬间会考虑哪些事情?
这篇关于Armv8/Armv9 MMU学习的28问,你能回答上来几个的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!