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 ...
随机推荐
- 2012年蓝桥杯省赛A组c++第1题(xy迭代增殖)
/* 微生物增殖 题目: 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分 ...
- 如何通过钉钉扫码登录odoo
更加方便快捷的登录odoo,实现免密码登录,有需要此模块朋友加我微信18310744639 1.首先你需要一个钉钉管理员权限,以便获取appid, appsecret,corpid, corpsecr ...
- 抽屉之Tornado实战(2)--数据库表设计
经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 #一张表对应一个类 class ...
- JdbcTemplate中向in语句传参
spring jdbc包提供了JdbcTemplate和它的两个兄弟SimpleJdbcTemplate和NamedParameterJdbcTemplate,我们先从JdbcTemplate入手, ...
- 编写第一个H5页面
<!DOCTYPE html><html ><head> <meta charset="UTF-8"> <title>第 ...
- CUDNN安装
在英伟达官网下载后解压,然后: cd cuda sudo cp lib64/* /usr/local/cuda/lib64/ sudo cp include/* /usr/local/cuda/inc ...
- Log4j Append属性指定是否追加内容
Log4j默认是不断的把日志内容追加到日志文件: 这里就有个属性 Append 默认就是true: 假如我们设置成false 就不追加了 直接覆盖前面的内容: 我们来测试下: log4j.rootLo ...
- 批量增删改"_bulk"
除了delete以外,每个操作需要两个json字符串,语法如下:{"action":{"metadata"}}{"data"}bulk ap ...
- InnoDB log file 设置多大合适?
简介: 数据库的东西,往往一个参数就牵涉N多知识点.所以简单的说一下.大家都知道innodb是支持事务的存储引擎.事务的四个特性ACID即原子性(atomicity),一致性(consistency) ...
- rm:删除目录和文件
[root@linux-node- sss]# rm soft.txt //删除文件 rm: remove regular empty file ‘soft.txt’? y [root@linux-n ...