《Armv8-A virtualization》学习笔记

1.MAIR 的全称是 Memory Attribute Indirection Register。它是ARM架构中的一种寄存器,用于定义内存的属性,并提供一种间接访问内存属性的机制。MAIR寄存器包含多个字段,这些字段指示不同类型内存的属性,例如是否可以缓存、是否为设备内存等。这些寄存器在不同的异常级别(EL1、EL2、EL3)中具有不同的用途(见Armv8-A手册P3335)。

2.VMID和ASID是在虚拟化环境中用于区分不同虚拟机和进程的标识符。VMID标识每个虚拟机,确保它们的地址翻译可以同时存在于TLB中,而ASID用于区分同一虚拟机内的不同进程,提高上下文切换效率。在ARM架构中,VMID存储在VTTBR_EL2寄存器,而ASID通常存储在TTBR寄存器。两者结合使用,允许多个虚拟机和进程共享硬件资源,同时保持它们地址空间的隔离。

3.VTTBR_EL2的全称是Virtualization Translation Table Base Register。是一个64位的寄存器,用于在ARMv8-A架构中处理虚拟化。它保存了用于EL1&0翻译机制第一阶段查找的转换表的基础地址,以及其他信息(如虚拟机ID,VMID,用于选择转换表)。

4.HCR_EL2(Hypervisor Configuration Register for Exception Level 2)是ARM架构中用于控制虚拟化配置的寄存器。它提供了多种控制位,用于定义各种操作是否应该被捕获(trap)到EL2。例如:

  • 第0位是VM,表示虚拟化支持。当EL2在当前安全状态下启用时,为el1和el0转换机制启用阶段2地址转换;
  • 第6/7/8位分别是VI/VF/VSE,置1分别表示生成vIRQ/vFIQ/vSerror中断,相当于中断控制器向 vCPU 发出中断信号;
  • 第13位是TWI,用于控制当执行在EL2以下异常级别时,WFI(Wait For Interrupt)指令的行为,设置为0时,在EL0或EL1执行WFI指令不会被捕获到EL2,即WFI指令可以正常执行,使处理器等待中断。设置为1时,任何在EL0或EL1执行的WFI指令尝试都会被捕获到EL2,这意味着处理器不会直接进入等待中断的低功耗状态,而是触发一个到EL2的异常。这允许运行在EL2的虚拟机监视器(hypervisor)介入并处理这个等待操作;
  • 第27位是TGE,用来控制异常陷入情况,设置为0时对EL0的执行没有影响(此时,TGE位关闭了对EL0执行的异常路由到EL2的陷阱。这意味着,当EL2在当前安全状态下未启用时,EL0的异常处理不受影响,即EL0的异常(如中断)将按照正常的异常处理流程进行,不会被路由到EL2),设置为1时当EL2在当前安全状态下未启用时,对EL0没有影响。当EL2在当前安全状态下启用时,所有异常路由到EL2;
  • 第32位是CD,将其设置为0b1时,会禁用虚拟化环境中第二阶段数据访问和翻译表遍历的缓存(如果页表数据被缓存,并且这些数据被修改(例如,由于动态内存管理),那么CPU可能从缓存中获取过时的页表信息,导致地址翻译错误),确保内存访问的一致性和虚拟机之间的隔离,但可能会影响性能;
  • 第34位是E2H,这个位用于启用或禁用(0表示禁用,1表示启用)在EL2上运行宿主机操作系统(Host Operating System)的配置,同时宿主机操作系统的应用程序在EL0(异常级别0)上运行;
  • 第46位是FWB,它是HCR_EL2寄存器中的一个控制位,全称是“Force Write Back”,用于定义在两阶段翻译机制中组合的缓存属性。具体来说,这个位影响如何结合第一阶段(EL1)和第二阶段(EL0)的内存类型和缓存属性;
  • 第4位是IMO,用来控制物理IRQ路由,设置为0时:物理IRQ中断不会被送达EL2、当HCR_EL2.TGE的值为0时,如果处理器执行在EL2使用AArch64,物理IRQ中断不会被采取,除非它们被路由到EL3由SCR_EL3.IRQ位决定、虚拟IRQ中断被禁用。设置为1时:当在任何异常级别执行,并且EL2在当前安全状态下被启用时:物理IRQ中断会被送达EL2,除非它们被路由到EL3、当HCR_EL2.TGE的值为0时,虚拟IRQ中断被启用。如果EL2在当前安全状态下被启用,并且HCR_EL2.TGE的值为1:不管IMO位的值如何,物理IRQ中断目标为EL2,除非它们被路由到EL3。如下图所示:

5.FAR_EL1、FAR_EL2和FAR_EL3(Fault Address Register)是ARM架构中的故障地址寄存器,分别对应EL1、EL2和EL3异常级别。它们在发生异常如数据访问违规时存储引起异常的虚拟地址,辅助调试和异常处理。FAR_EL1用于EL1,FAR_EL2用于虚拟化环境中的EL2,FAR_EL3用于最高级别的EL3异常。

6.HPFAR_EL2寄存器用于在ARM架构的虚拟化环境中捕获第二阶段地址翻译(Stage 2 translation)过程中发生异常的中间物理地址(IPA)。当虚拟机尝试访问一个地址,而这个地址的翻译或访问导致了故障(如访问违规)时,HPFAR_EL2会存储引起异常的IPA地址。

7.ESR_ELx(Exception Syndrome Register)是ARMv8架构中用于记录异常详细信息的寄存器,它为EL1、EL2和EL3等异常级别提供服务。ESR_ELx包含异常类别(EC)、指令长度(IL)和指令特定综合症(ISS)字段。EC字段指示异常类型,如数据中止或系统调用;IL字段表示导致异常的指令长度;ISS字段提供关于异常的额外信息,其内容取决于异常类型。ESR_ELx主要在同步异常和SError异常中使用,有助于操作系统或异常处理程序诊断问题并采取行动。

8.从Arm GICv2开始,GIC可以通过提供物理CPU接口和虚拟CPU接口来发出物理和虚拟中断信号,这两个接口是相同的,只是一个接口发出物理中断信号,另一个接口发出虚拟中断信号。虚拟机管理程序可以将虚拟CPU接口映射到VM,从而允许该VM中的软件直接与GIC通信。这种方法的优点是虚拟机管理程序只需要设置虚拟接口,而不需要模拟它。这种方法减少了执行需要被捕获到EL2的次数,因此减少了虚拟化中断的开销,虽然Arm GICv2可以与Armv8-A设计一起使用,但更常见的是使用GICv3或GICv4。

9.ARMv8-A架构中的物理定时器和虚拟定时器是通用定时器框架的两个关键组成部分,它们协同工作以提供精确的时间管理和中断生成。物理定时器与系统计数器相联系,用于生成基于物理时间的中断。它们允许操作系统和应用程序访问一个统一的系统时间视图,这对于性能监控、任务调度和时间戳操作至关重要。物理定时器的中断通常用于实现操作系统的调度和同步机制。物理定时器通过寄存器如CNTPCT_EL0(物理计数器值)和CNTFRQ_EL0(系统计数器频率)来访问。虚拟定时器则是在虚拟化环境中使用的,它们允许虚拟机(VM)拥有自己的私有定时器,独立于物理定时器。这意味着每个VM可以有自己的时间视图,不受其他VM的干扰。虚拟定时器通过寄存器如CNTVCT_EL0(虚拟计数器值)和CNTVOFF_EL2(虚拟计数器偏移)来访问。Hypervisor可以设置虚拟定时器,以便在虚拟环境中生成中断,从而实现虚拟机的调度和时间管理。

10.TTBR0_EL1和TTBR0_EL2是ARM架构中与内存管理单元(MMU)相关的寄存器,用于管理虚拟地址到物理地址的转换。TTBR0_EL1:在EL1(内核态)使用,负责映射用户态(EL0)的虚拟内存。此寄存器存放页表基址,使操作系统能够管理用户应用程序的内存访问,确保虚拟地址正确映射到物理地址。TTBR0_EL2:在EL2(虚拟机管理程序层)使用,负责映射虚拟机管理程序的虚拟内存。它指定EL2的页表基址,允许虚拟机管理程序有效地管理和隔离不同虚拟机的内存空间。

11.TTBR1_EL1 和 TTBR0_EL1 都是 ARM 架构中的页表基址寄存器(Translation Table Base Register),它们的作用是为不同的虚拟地址范围提供页表基址,用于将虚拟地址映射到物理地址。不过,它们之间有明确的区别,主要体现在管理的虚拟地址范围不同。TTBR0_EL1 管理较低的虚拟地址空间,主要用于用户态(EL0)程序的内存映射。TTBR1_EL1 管理较高的虚拟地址空间,通常用于操作系统内核(EL1)自身的内存映射。使用两个页表基址寄存器的好处在于能够分离用户态和内核态的地址空间,确保用户态和内核态的内存区域之间的隔离和保护。这样,用户态进程无法访问内核态的地址空间,增强了系统的安全性和稳定性。

12.SCR_EL3(Secure Configuration Register at EL3)是EL3特权级别下的控制寄存器,用于管理系统安全状态和特权级别之间的切换。EEL2(Enable EL2 in Secure State)位的作用是允许在安全状态下启用 EL2。当该位被设置时,处理器能够在安全状态下进入 EL2,从而支持在安全环境下运行虚拟化功能。

13.Arm架构定义了两个物理地址空间:安全和非安全。在非安全状态下,虚拟机(VM)第一阶段转换的输出始终是非安全的。因此,此时只有一个中间物理地址(IPA)空间供阶段2处理。在安全状态下,VM的第1阶段转换可以输出安全地址和非安全地址。转换表描述符中的NS位(NS 位出现在虚拟内存地址到物理地址映射的页表描述符中。具体来说,NS 位是页表中的一部分,用来指定该映射所对应的物理地址是安全状态还是非安全状态)控制是否输出安全或非安全地址空间。如下图所示,这意味着阶段2有两个IPA空间,安全和非安全:

与阶段1表不同,阶段2表条目中没有NS位,对于特定的IPA空间,所有转换都会产生安全物理地址或非安全物理地址。该转换由寄存器位控制。通常,非安全IPA会转换为非安全PA,安全IPA会转换为安全PA。在安全状态下,当第1阶段MMU被禁用时,所有地址都将被视为安全地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用OBS Studio录制屏幕?

可以进入官网或github进行下载: https://obsproject.com/download 安装包解压后进入bin 进入64-bit 选择obs 64 进入OBS Studio后在来源内右键,选择添加 选择添加显示器采集即可录取整个屏幕,窗口采集可选择窗口进行录制 选择对应显示器即配置…

9.类的定义与使用

类的定义构造函数(__init__)实例变量类变量方法(实例方法)类方法(classmethod)静态方法(staticmethod)属性装饰器(property)私有属性与方法继承多态方法重写super()函数类的文档字符串类的属性和方法访问控制 1.类的定义: 如int,list,tuple等等都是类,还可以通过class方法自己…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(三)

****非斜体正文为原文献内容(也包含笔者的补充),灰色块中是对文章细节的进一步详细解释! 3.2 全局解释(Global Explanation) 与旨在解释模型个体预测的局部解释不同,全局解释提供了对语言模型…

学习随笔:word2vec在win11 vs2022下编译、测试运行

word2vec 官网word2vec的本质是在自然语言词条数据集与计算机浮点数据集之间建立双射关系。word2vec建立的数据集最厉害的一点是,将自然语言词条数据集内部的推理过程,映射到了计算机浮点数据集内部的数值运算。我个人感觉理解这个数据映射方式是理解AI大…

搭建nginx文件服务器

方法一:通过docker方式搭建 1、创建一个nginx配置文件/etc/nginx/nginx.conf user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_typ…

2017年IMO几何预选题第7题

凸四边形 A B C D ABCD ABCD 有内切圆 I I I, △ D A B \triangle DAB △DAB, △ A B C \triangle ABC △ABC, △ B C D \triangle BCD △BCD, △ C D A \triangle CDA △CDA 的内心分别为 I a I_a Ia​, I b I_b Ib​, I c I_c Ic​, I d I_d Id​. △ A I b I d \…

特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值

title: 特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值 date: 2025/1/4 updated: 2025/1/4 author: cmdragon excerpt: 随着数据管理需求的多样化,许多现代数据库系统开始支持特殊数据类型,以满足更多复杂应用场景的需求。在 PostgreSQL 中,JSON、数组和 HSTOR…

#渗透测试#漏洞挖掘#WAF分类及绕过思路

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

【Logstash02】企业级日志分析系统ELK之Logstash 输入 Input 插件

Logstash 使用 Logstash 命令 官方文档 https://www.elastic.co/guide/en/logstash/current/first-event.html #各种插件 https://www.elastic.co/guide/en/logstash/current/input-plugins.html https://www.elastic.co/guide/en/logstash/current/filter-plugins.html htt…

CentOS 7安装Docker详细教程

本文以 CentOS7.8 为例安装 Docker 26.1.4 、Docker Compose、以及 Docker 镜像仓库。 安装方式1:自动安装(使用官方脚本) 使用官网一键安装命令: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或 使用国内 daocloud 一键安…

通过代理用户功能可以实现生产用户的应用滚动修改密码

Oracle通过代理用户功能可以实现生产用户的应用滚动修改密码。 测试例子: 生产用户为jyc密码为jyc 现在要求修改jyc的密码为abc,意味着所有应用都得停止同时修改。 此时可以考虑新建代理用户proxy_jyc,密码为jyc1(实际修改建议…

永磁同步电机控制算法--最大转矩电流比控制((升级版)公式法、曲线拟合法、查表法)

一、原理介绍 id0控制方法在电机输出相同的电磁转矩下电机的定子电流并不是最小的,因此,采用最大转矩电流比控制方法,使得电机在输出相同的电磁转矩下电机定子电流最少,实现该系统的原理框图如图所示。 最大转矩电流比控制也称单位电流输出最大转矩的控制,即控制id以追求最大转…

数据挖掘——决策树分类

数据挖掘——决策树分类 决策树分类Hunt算法信息增益增益比率基尼指数连续数据总结 决策树分类 树状结构,可以很好的对数据进行分类; 决策树的根节点到叶节点的每一条路径构建一条规则;具有互斥且完备的特点,即每一个样本均被且…

小红书怎么看ip所属地?小红书ip属地为什么可以变

小红书,作为当下热门的社交电商平台,不仅为用户提供了丰富的购物与分享体验,还通过展示用户IP属地信息,增强了网络社交的透明度和真实性。然而,不少用户发现,小红书上的IP属地并非一成不变,这引…

springboot使用hutool captcha +vue实现图形验证码

一、效果 使用hutool captcha实现简单的图形验证码&#xff0c;可以参考官网概述 | Hutool 二、实现步骤 1、导入依赖 <!--hutool包--> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.…

vue3+Echarts+ts实现甘特图

项目场景&#xff1a; vue3Echartsts实现甘特图;发布任务 代码实现 封装ganttEcharts.vue <template><!-- Echarts 甘特图 --><div ref"progressChart" class"w100 h100"></div> </template> <script lang"ts&qu…

EdgeX规则引擎eKuiper

EdgeX 规则引擎eKuiper 一、架构设计 LF Edge eKuiper 是物联网数据分析和流式计算引擎。它是一个通用的边缘计算服务或中间件,为资源有限的边缘网关或设备而设计。 eKuiper 采用 Go 语言编写,其架构如下图所示: eKuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源…

【AIGC-ChatGPT进阶提示词指令】AI美食助手的设计与实现:Lisp风格系统提示词分析

引言 在人工智能助手的应用领域中&#xff0c;美食烹饪是一个既专业又贴近生活的方向。本文将详细分析一个基于Lisp风格编写的美食助手系统提示词&#xff0c;探讨其结构设计、功能实现以及实际应用效果。 提出你的菜系&#xff0c;为你分析&#xff0c;并生成图片卡片 提示词…

【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写

文章目录 一、随机数1、Random.Next()生成随机整数示例&#xff1a;生成一个随机整数生成指定范围内的随机整数 2、Random.NextSingle生成随机浮点数示例&#xff1a;生成随机浮点数 3、 生成随机字母或字符示例&#xff1a;生成随机字母示例&#xff1a;生成随机小写字母 二、…

吐卡机开发——指令合集—未来之窗行业应用跨平台架构

序号指令10A 09 02 01 01 0D DE20A 09 02 02 01 FD DE30A 09 02 03 01 6D DF40A 09 02 04 01 5D DD50A 09 02 05 01 CD DC60A 09 02 06 01 3D DC70A 09 02 07 01 AD DD80A 09 02 08 01 5D D890A 09 02 09 01 CD D9100A 09 02 10 01 5D D2110A 09 02 11 01 CD D3120A 09 02 12 0…