《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,一经查实,立即删除!

相关文章

NLP 复习大纲

CH3 激活函数意义 增强网络表达能力,引入非线性因素 连续可导的非线性函数 尽可能简单 导数的值域要在合适的范围内 为什么会发生梯度消失 误差传播的迭代公式为: 其中需要用到激活函数的导数,而激活函数的导数值小于1时,误差经过…

如何使用OBS Studio录制屏幕?

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

深入理解连接池:从数据库到HTTP的优化之道

在现代应用开发中,高效的资源管理是关键,其中连接池(Connection Pool)技术起到了至关重要的作用。本文将带你深入了解连接池的概念及其在数据库和HTTP通信中的应用,结合 JDBC 与 Druid 的关系,以及 HttpURL…

XIAO Esp32 S3 网络摄像头——3音视频监控

1、介绍 之前分别介绍了音频和视频的接收,本文是整合了前2篇文章,实现了音视频的同时获取。 效果: 用xiao esp35 s3自制一个网络摄像头 2、适用场景广泛 家庭安防 无论是门前监控,还是室内安全,自制摄像头可以让你轻松把握每个角落,实时查看视频流,防止任何潜在风险。…

9.类的定义与使用

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

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

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

使用消息队列可能遇到的问题及其解决办法

在使用消息队列时,可能会遇到以下三个问题: 一.消息丢失 产生的原因:消息发送出去,由于网络问题或系统异常没有抵达服务器; 解决办法: 做好容错方法(try-catch),发送…

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

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

vue cli更新遇到的问题(vue -V查询版本号不变的问题)

1.镜像地址选择 npm会去默认的registry远程仓库中下载指定内容 该过程可能十分缓慢 因此我们可以切换默认仓库为镜像地址 npm config set registry https://registry.npmmirror.com 通过该指令可以从最新的镜像地址下载指定内容(镜像地址可能会有变 有变请重新查询) 2.下载 …

qt中如何判断字符串是否为数字,整数,浮点数?

在 Qt 中,可以使用多种方法来判断字符串是否为数字、整数或浮点数。Qt 提供了一些方便的字符串和数值处理函数,可以帮助你实现这些判断。以下是几种常见的方法: 1. 使用 QRegularExpression Qt 提供了 QRegularExpression 类,可…

搭建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…

练习题:37

目录 Python题目 题目 题目分析 套接字概念剖析 通信原理分析 服务器 - 客户端连接建立过程: 基于套接字通信的底层机制: 代码实现 基于 TCP 的简单服务器 - 客户端通信示例 服务器端代码(tcp_server.py) 客户端代码&a…

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 \…

RabbitMQ案例

1. 导入依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 发送消息 注入RabbitTemplate Autowired RabbitT…

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

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

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

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

【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…

1.4 java反射机制 简单的java反射机制实践

这是一个项目用于学习反射 第一个demo是利用反射构建一个对象转换为JSON 第二个demo是用于利用类的名字以及方法名就可以直接执行的实例 package com.zy.reflectiondemo.utils;import com.zy.reflectiondemo.annotation.JsonField;import java.lang.reflect.Field; import jav…

C#设计模式(行为型模式):观察者模式

C#设计模式&#xff1a;观察者模式&#xff0c;让对象间通信更优雅 在软件开发中&#xff0c;我们经常会遇到一个对象的状态发生改变&#xff0c;其他对象需要自动更新或做出相应反应的场景。例如&#xff1a; GUI事件处理&#xff1a; 当用户点击按钮时&#xff0c;按钮需要…

【Vue】:解决动态更新 <video> 标签 src 属性后视频未刷新的问题

问题描述 在 Vue.js 项目&#xff0c;当尝试动态更新 <video> 标签的 <source> 元素 src 属性来切换视频时&#xff0c;遇到了一个问题&#xff1a;即使 src 属性已更改&#xff0c;浏览器仍显示旧视频。具体表现为用户选择新视频后&#xff0c;视频区域继续显示之…