armv8 memory translation table descriptor
上一节大致给出了descriptor的结构,这篇细致分析各个field:
1) Table Descriptor:stage2中不包含任何的attribute的field,每个level中的descriptor高位作为下一个level的attr配置。

NSTable,bit[63], 定义subsequent lookup的secure state
APTable,bit[62:61],
UXNTable,bit[60],
PXNTable,bit[59],
2) Block and Page descriptor:stage1,stage2都可以设置,每个memory attr分为upper block和lower block
Stage1:

Upper:
PBHA,bit[62:59],用来支持ARMv8.2-TTPBHA,
XN、UXN,bit[54],
PXN,bit[53],
Contiguous,bit[52],根据颗粒的大小,表示一定数量的相邻的table,被选中。
DBM,Dirty Bit Modifier,bit[51]
Lower:
AF,bit[10],Access flag
SH,bit[9:8],Shareability field
AP,bit[7:6],Data Access Permission
NS,bit[5],non-secure bit
Attrindex,bit[4:2],Stage1 memory attributes index, for MAIR_ELx
Stage2:

新的field包括:
S2AP,bit[7:6],Stage2 Data Access Permission
MemAttr,bit[5:2],Stage2 memory attributes,
接下来分为access permission和memory attributes来分析field。
Access Permission,控制data access和instruction fetch。
Pstate,在ARMv8.2中,是一个描述process state的寄存器,包括
1) condition flags---------N(negative),Z(zero),C(carry),V(overflow)
2) execution state--------EL(current except level),SP(Stack Pointer)
3) exception mask bit
4) access control bit----PAN(privilege access never),UAO(User Access Override)
Stage1中的AP[2:1],
1) AP[2],在read-only和write-read之间选择;
2) AP[1],在EL0和更高的exception level中选择;(none表示mmu报错)

S2AP,在non-secure的EL0、EL1中,
AP和S2AP都设置时,都会起作用。
TCR_ELn寄存器中的APTable[1:0],

总结,关于execution 的 access

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
AF(access flag),是软件的应用,表明目前该page是否被访问过,优化在OS memory control中的实现。
还有dirty state bit,也是做软件优化使用的,具体看armv8 doc
Bit[58:55],不论是block descripter还是table descripter,中都会预留,为OS使用。可以存放page是否dirty等信息。
memory region atribute,只针对block和page类型的descriptor
stage1中,AttrIndx[2:0],选定某个MAIR_ELn,实现memory attri的配置;

SH[1:0]对于normal memory,定义Shareability;

stage2中的MemAttr,4bit实现类似MARI的配置、
SH[1:0]对于normal memory,实现shareability的配置。
stage1和stage2都配置时,都会起作用,优先级以及覆盖情况,详见armv8 doc
MAIR_ELn64位寄存器,一共有三个,分为EL1,EL2,EL3,64bit被分为8个byte,每个byte内部编码指定attribute。

armv8 memory translation table descriptor的更多相关文章
- armv8 memory translation
AArch32,arm的32bit架构: AArch64,arm的64bit架构: ARMv8.2-LPA,是armv8.2中的新feature,扩大了IPA和PA的支持范围,从48bit扩展到52b ...
- VMSAv8-64 translation table format descriptors
通常情况下,一个 descriptor 可能是以下的几种 entry: 非法或者异常的 entry. Table entry, 指向 next-level translation table. Blo ...
- memcached vs MySQL Memory engine table 速度比较_XMPP Jabber即时通讯开发实践_百度空间
memcached vs MySQL Memory engine table 速度比较_XMPP Jabber即时通讯开发实践_百度空间 memcached vs MySQL Memory engin ...
- Memory Translation and Segmentation.内存地址转换与分段
原文标题:Memory Translation and Segmentation 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精 ...
- Virtual Memory PAGE TABLE STRUCTURE
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION The basic mechanism f ...
- armv8 memory system
在armv8中,由于processor的预取,流水线, 以及多线程并行的执行方式,而且armv8-a中,使用的是一种weakly-ordered memory model, 不保证program or ...
- MySQL memory引擎 table is full 问题处理
解决mysql的内存表“table is full”错误 101209 13:13:32 [ERROR] /usr/local/mysql/bin/mysqld: The table ‘test_ ...
- org.apache.hadoop.hbase.DoNotRetryIOException: Class org.apache.phoenix.coprocessor.MetaDataEndpointImpl cannot be loaded Set hbase.table.sanity.checks to false at conf or table descriptor if you want
https://stackoverflow.com/questions/38495331/apache-phoenix-unable-to-connect-to-hbase 这个坑不该啊 首选配置hb ...
- 关于ARMv8另外几个问题
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27510675 问题1:支持ARMv ...
随机推荐
- [troubleshoot][daily][redhat] 设备反复重启故障排查
一台服务器设备,反复重启,每天重启数次. 一: 原因分析及初步排异. 1. 硬件,内存主板,一一更换,甚至除了硬盘将整台机器都换掉了,依然重启. 2. 排除电源问题,换了电源线,换了插座,还是重启 ...
- Django+Celery 执行异步任务和定时任务
celery是一个基于python开发的简单.灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度.采用典型的生产者-消费者模型,主要由三部分组成: 1. 消 ...
- sqlserver2014两台不同服务器上数据库同步
sqlserver2014两台不同服务器上数据库同步 同步了快一个月了,哈哈,因为途中比较麻烦,第一次,遇到烦的地方就停下了,今天终于同步成功了,哈哈,下面我就来介绍一下我实现两台数据库同步的过程 ...
- STLの应用
QAQ因为绝望地发现好像这些应用都没有题目...所以就专门开了个随笔存题面qwq 谁的孙子最多 给定一棵树,其中1号节点是根节点,问哪一个节点的孙子节点最多,有多少个.(孙子节点,就是儿子节点的儿子节 ...
- xpath定位方法详解
1.xpath较复杂的定位方法: 现在要引用id为“J_password”的input元素,可以像下面这样写: WebElement password = driver.findElement(By. ...
- Nand Flash 裸机程序
硬件平台 :JZ2440 实现功能:初始化 Nand Flash 和 sdram,并将代码从 Nand Flash 拷贝到 sdram. start.s --> 上电初始化 nand ...
- apache在mac下403问题
症状:在mac下使用xampp环境,httpd.conf权限,但访问网站报403错误. 解决方案:将对应文件目录权限改为755 修改后,Thinkphp访问提示Application不可写,无法创建内 ...
- Java基础知识(抽象类和接口)
一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: 1 abstract void fun(); 抽象方法必须用abst ...
- wx事件处理二
wxPython首先在触发对象中查找匹配事件类型的被绑定的处理器函数,如果找到,刚相应方法被执行.如果没找到,wxPython将检查该事件是否传送到了上一级的容器,如果是,父窗口被检查,如此一级级向上 ...
- redis实现消息队列(七)
1. 介绍 redis有一个数据类型叫list(列表),它的每个子元素都是 string 类型的双向链表.我们可以通过 push,pop 操作从链表的头部或者尾部添加删除元素.这使得 list 既可以 ...