A64指令集包括访问system registers编码空间的指令。这些指令有:

  • Access to System registers, including the debug registers, that provide system control, and system status information.
  • Access to Special-purpose registers such as SPSR_ELx, ELR_ELx, and the equivalent fields of the Process State.
  • The cache and TLB maintenance instructions and address translation instructions.
  • Barriers and the CLREX instruction.
  • Architectural hint instructions.

本文主要想讲讲下第一点和第二点,也就是system registers和special-purpose registers的一些规则。对于这些registers的访问都是使用MSR或MRS来进行的。

// system registers
MSR <System register>, Xt ; Write to System register
MRS Xt, <System register> ; Read from System register
// special-purpose registers
MSR <Special-purpose register>, Xt ; Write to Special-purpose register
MRS Xt, <Special-purpose register> ; Read from Special-purpose register

System registers的Reset

Arm architecture里Reset value只应用于具有RW属性的registers和register fields。但是有些特例:

  • Some RO registers or fields, including feature ID registers and some status registers or register fields, always return a known value.
  • Some RW and RO registers or register fields return status information about the PE. Unless the register description indicates that the value is UNKNOWN on reset, a read of the register immediately after a reset returns valid information.
  • Some RW and RO registers and fields are aliases of other registers or fields. In these cases, the reset behavior of the aliased register or field determines the value returned by a read of the register immediately after a reset.
  • WO registers that only have an effect on writes do not have meaningful reset values. However, an access to a WO register might affect underlying state, and that state might have a defined reset value.
  • IMPLEMENTATION DEFINED registers have IMPLEMENTATION DEFINED reset behavior.

而且ARM architecture里只确保复位后有个稳定的状态,尽量少规定system registers的复位值,大部分的reset value是UNKNOWN的。

System registers synchronization

System registers read

在同1个PE上,对于system registers的read操作与之前instructions在执行上可以是任意的,也就是out of order的关系。除非有以下情况:

  • Any data dependencies between the instructions, including read-after-read dependencies, are respected. PS:也就是说有dependency关系的话,order关系还是要硬件遵循的。
  • The reads to the register do not occur earlier than the most recent Context synchronization event to its architectural position in the instruction stream. PS:因此CSE经常用于确保system registers的作用时间点。

System registers write

对System registers的direct write操作有两点需要注意:

  • software需要有synchronization,才能确保写system register的效果对后续instruction可见或有影响。这个synchronization其实就是explicit synchronization (CSE产生的)。有些特例情况下不需要synchronization,它们是在硬件上会自动帮忙做好order的:

    • All direct writes to the same register, that use the same encoding for that register, are guaranteed to occur in program order relative to each other.
    • All direct writes to a register occur in program order with respect to all direct reads to the same register using the same encoding.
    • Any System register access that an Arm Architecture Specification or equivalent specification defines as not requiring synchronization.
    • When FEAT_BRBE is implemented, execution of BRB INJ does not require explicit synchronization to use the result of direct writes to the Branch record injection data registers in program order before BRB INJ.
  • 对system registers的写操作不会影响到program order之前的任何instruction。

总结上述对system registers的读和写操作如下4点:

  1. 对相同system register操作的instruction在硬件上自然会确保order,它们有data-dependency,比如:RAW,RAR,WAR,WAW。
  2. 对于system registers的读操作,在没有data dependency或CSE的限制下,可以和其它instructions乱序执行。
  3. 对于system registers的写操作,在任何情况下都不能影响program order之前的任何instruction。
  4. CSE可以确保读system register指令在CSE完成后,才能进行读操作。CSE也可以确保写system register指令的效果在CSE完成后,对后续任何instruction都可见。

上述讲的system register读和写都是direct的,也就是是MRS和MSR产生的操作。在Arm architecture中还有indirect的,可分为indirect read和indirect write。在Arm architecture中描述了对于两个连续的read或者write访问同一个register来说,是否需要synchronization。其中read或write访问的顺序为:

  1. Program order, in the event that both the reads or writes are caused by an instruction executed on this PE, other than one caused by a memory access by this PE.
  2. The order of arrival of asynchronous reads and writes at the PE relative to the execution of instructions that cause reads or writes.
  3. The order of arrival of asynchronous reads and writes at the PE relative to each other.

从表中可以看出只有(direct write->indirect read), (indirect read->direct read), (indirect write->direct read)需要synchronization才能保证order,其余的话,硬件会自动做好order的。

Special-purpose registers

special-purpose registers的一个重要特征是:对special-purpose register的所有direct和indirect的read或者write访问都按照相对于其它instructions的program order来进行,不需要任何explicit synchronization。也就是说不需要任何的ISB,就可以确保对special-purpose registers的读写instructions与其它指令之间保持顺序执行的。

Special-purpose registers有如下这些,其余大部分都是system registers的。

Armv9 registers相关推荐

  1. armv9的RME简介

    引流关键词: optee.ATF.TF-A.Trustzone.optee3.14.MMU.VMSA.cache.TLB.arm.armv8.armv9.TEE.安全.内存管理.页表- 快速链接: .

  2. ARMV8/ARMV9的执行状态的切换

    背景:为什么会有执行状态的切换 在一个大系统中,我们所说这它是64位的,还是32位的,往往说的是kernel内核.事实上,在这么的一个大系统中,有着多级镜像,并非全都是64位的,也并非全都是32位的. ...

  3. armv8/armv9的简介-学习这一篇就够了

    引流关键词: optee.ATF.TF-A.Trustzone.optee3.14.MMU.VMSA.cache.TLB.arm.armv8.armv9.TEE.安全.内存管理.页表- 快速链接: .

  4. [armv9]-ARM最新架构为memcpy/memset底层的实现提供新的指令

    引流关键词:CPY CPYM CPYP CPYE SET SETP SETM SETE,memcpy,memset,armv9 快速链接: .

  5. [armv9]-ARMV8/ARMV9安全架构介绍(ARMv9 CCA)

    文章目录 1.术语 2.Architecture overview 2.1.ARMV7的软件模型 2.2.ARMV8-arch32的软件模型 2.3.ARMV8-arch32的软件模型 2.4.ARM ...

  6. ARM 之十四 ARMv9 架构前瞻

      在 2021 年的 Arm Vision Day 上(2021年 3 月 30,对应的北京时间应该是 2021 年 3 月 31 日),ARM 展示了其最新的架构:ARMv9.ARMv9 被 AR ...

  7. 【IT资讯】财联社:华为有望获Armv9架构CPU授权

    ARM在5月25日发布了Cortex-X2.Cortex-A710.Cortex-A510等3款基于ARMv9的CPU架构,以及新的GPU架构Mali-G710.G610.G510.G310.而5月2 ...

  8. X86汇编语言中的registers相关

    0.写在前面 本文中总结于王爽老师的汇编语言,建议有兴趣的都买一本,以支持王爽老师的辛勤付出.再者,这本书写的确实很nice. 8086CPU共有14个registers:AX, BX, CX, DX ...

  9. ARMv9刷屏 —— 号称十年最大变革,Realm机密计算技术有什么亮点?

    简介: 让我们看下ARMv9机密计算相关的新特性Realm. ARMv9的新闻刷屏了.ARMv9号称十年以来最重大变革,因此让我们看下ARMv9中机密计算相关的新特性Realm.(注:本文是对Intr ...

最新文章

  1. WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
  2. 将txt文件内容通过cgi和apache显示在网页上
  3. 支持海量数据的 MongoDB NoSQL
  4. 基于物品的协同过滤推荐算法_《推荐系统实践》3.基于物品的协同过滤算法
  5. java ftp主动模式和被动模式_ftp主动模式和被动模式
  6. CCCC-GPLT L1-035. 情人节 团体程序设计天梯赛
  7. 从windows server的文件服务到分布式文件服务(九)
  8. android 定时闹钟逻辑,Android 定时执行任务 AlarmManager的使用(可用于闹钟开发)...
  9. 面向对象 —— 静态成员(变量与方法)
  10. 堆排序算法(C#实现)
  11. js生成带log的二维码(qrcodejs)
  12. 如何安装Junit4
  13. vue实现点击复制文本功能
  14. 笔记本电脑修改BIOS及刷写教程
  15. xp桌面计算机隐藏设置密码,电脑设置开机密码详解 保护自己的隐私不受窥探-电脑设置开机密码...
  16. arm tcm linux,认识S3C6410 - 深入理解ARM体系架构(S3C6410)_Linux编程_Linux公社-Linux系统门户网站...
  17. 【Windows】网线直连实现两台电脑共享文件夹
  18. Unity游戏编程自学书籍、插件学习与视频教程
  19. 人生规划:事业成功的导航仪
  20. Java-对象数组以及内存图解

热门文章

  1. 服务器运维知识点总结
  2. 十四丶并发编程(线程 进程 协程)
  3. 《英国ICO:匿名化、假名化及隐私增强技术指南草案》解读
  4. 第七期5G消息应用号推荐,咱们换个方式“看”应用|中国移动5G消息开发者社区
  5. 955,远程办公,这家公司要落地杭州了!
  6. 字符串中size()、length()与sizeof()用法及区别
  7. 《英语阅读教学与思维发展》读书笔记(五)
  8. 一曲相思用计算机弹,倩影留声玩家故事第44期:《谱一曲相思,弹一首缠绵,演绎最美流年》上集...
  9. 【智能优化算法】基于花朵授粉算法求解单标目优化问题附matlab代码
  10. 计算机毕业设计 SSM留学生交流平台系统(源码+论文)