arm64虚拟化-CPU虚拟化

news2024/11/19 13:20:22

arm64虚拟化-CPU虚拟化

  • 1 虚拟化
    • 1.1 CPU虚拟化
    • 1.2 内存虚拟化
    • 1.3 I/O虚拟化
  • 2 异常状态
    • 2.1 AArch64
    • 2.2 AArch32
  • 3 启动到EL2异常等级
  • 4 CPU虚拟化
    • 4.1 进入VM
    • 4.2 退出VM

本篇博客是基于对苯叔《ARM64高级特性专题》的学习而总结的,大家如有需要可以去淘宝或者奔跑吧linux社区去购买对应的课程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1 虚拟化

ARMv8架构引入了一系列硬件特性来支持虚拟化,例如虚拟化扩展(Virtualization Extensions,VE)、Generic Interrupt Controller version 3 (GICv3)、以及Virtualization Host Extensions (VHE)。这些特性直接在硬件层面提供了对虚拟化的支持,减少了软件模拟的负担,提高了性能。

1.1 CPU虚拟化

CPU虚拟化是基于ARMv8架构提供的硬件虚拟化扩展实现的,这些扩展为高效、安全地在同一物理处理器上运行多个虚拟机(VM)提供了基础。

1.2 内存虚拟化

内存虚拟化是虚拟化技术中的一个核心挑战,目标是让每个VM认为自己独占了整个物理内存。ARM64架构采用页表映射技术,结合二级地址转换(Translation Lookaside Buffer, TLB)和页表走遍(Page Walk)机制,实现了高效且透明的内存管理。此外,硬件支持的Address Translation Service (ATS) 和 Input Output Memory Management Unit (IOMMU) 功能加强了对I/O设备访问虚拟地址空间的控制。

1.3 I/O虚拟化

除了内存,I/O设备的虚拟化也是关键。ARM架构提供了诸如Virtual Machine Interface (VMI) 和 virtio等机制来优化设备的共享和分配。Virtio是一个半虚拟化技术,通过标准的前端/后端接口,使得来宾操作系统可以高效地与虚拟设备通信,减少了模拟开销。

2 异常状态

在虚拟化状态切换时涉及到异常的处理流程,这个时候需要了解ARMv8的异常模型。ARM64的VMM运行在EL2等级,而对应的VM则运行在低异常等级。所以进入和退出VMM需要从EL2和低异常(EL1)等级之间做切换。

The ARMv8 architecture defines two Execution States, AArch64 and AArch32. Each state is used to describe execution using 64-bit wide general-purpose registers or 32-bit wide general-purpose registers, respectively. While ARMv8 AArch32 retains the ARMv7 definitions
of privilege, in AArch64, privilege level is determined by the Exception level. Therefore, execution at ELn corresponds to privilege PLn.
ARMv8 体系结构定义了两种执行状态:AArch64 和 AArch32。每种状态分别用于描述使用 64 位宽通用寄存器或 32 位宽通用寄存器的执行情况。ARMv8 AArch32 保留了 ARMv7 中的权限定义,而在 AArch32 中则保留了 ARMv8 中的权限定义。在 AArch64 中,特权级别由异常级别决定。因此,在 ELn 执行对应于特权 PLn。

When in AArch64 state, the processor executes the A64 instruction set. When in AArch32 state, the processor can execute either the A32 (called ARM in earlier versions of the architecture) or the T32 (Thumb) instruction set.
在 AArch64 状态下,处理器执行 A64 指令集。当处于 AArch32 状态时,处理器可以执行 A32(在早期的体系结构版本中称为 ARM)或 T32(Thumb)指令集。

2.1 AArch64

在这里插入图片描述

2.2 AArch32

在这里插入图片描述

3 启动到EL2异常等级

  • 实现EL2的异常向量表
  • 设置EL2的异常向量表
  • 创建页表(页表的恒等映射)
  • 使能EL2的MMU

4 CPU虚拟化

4.1 进入VM

  • 设置 HCR_EL2.RW标志位为0,表示当前要运行在AArch64环境下。
  • 关闭vCPU的MMU
  • 设置SPSR_EL2
  • 设置ELR_EL2寄存器为VM的入口地址
  • 为VM分配栈空间,将VM的栈空间栈底地址写入SP_EL1寄存器中。
  • 执行ERET指令,从EL2退出进入到VM的环境,进而去执行设置到ELR_EL2寄存器中的VM入口处理函数。

4.2 退出VM

通过HVC指令可以从VM退回到VMM
在这里插入图片描述

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

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

相关文章

【Nginx <末>】Nginx 基于 IP 地址的访问限制

目录 👋前言 📫一、限制 IP 可以实现哪些功能 👀二、 项目实现 2.1 访问控制实现 2.2 Nginx 配置中指定 IP 地址 💞️三、章末 👋前言 小伙伴们大家好,前面一段时间学习了 Nginx 的相关知识&#xff0c…

DAMA数据管理知识体系必背18张框图

近期对数据管理知识体系中比较重要的框图进行了梳理总结,总共有18张框图,供大家参考。主要涉及数据管理、数据治理阶段模式、数据安全需求、主数据管理关键步骤,主数据架构、DW架构、数据科学的7个阶段、数据仓库建设活动、信息收敛三角、大数据分析架构图、数据管理成熟度等…

Jenkins--从入门到入土

Jenkins–从入门到入土 文章目录 Jenkins--从入门到入土〇、概念提要--什么是CI/DI?1、CI(Continuous Integration,持续集成)2、DI(DevOps Integration,DevOps 集成)3、解决的问题 一、Jenkins安…

【深度学习】1.手动LogisticRegression模型的训练和预测

通过这个示例,可以了解逻辑回归模型的基本原理和训练过程,同时可以通过修改和优化代码来进一步探索机器学习模型的训练和调优方法。 步骤: 生成了一个模拟的二分类数据集:通过随机生成包含两个特征的数据data_x,并基于…

Android Compose 九:interactionSource 的使用

先上官方文档 InteractionSource InteractionSource represents a stream of Interactions corresponding to events emitted by a component. These Interactions can be used to change how components appear in different states, such as when a component is pressed or…

WordPress安装memcached提升网站速度

本教程使用环境为宝塔 第一步、服务器端安装memcached扩展 在网站使用的php上安装memcached扩展 第二步:在 WordPress 网站后台中,安装插件「Memcached Is Your Friend」 安装完成后启用该插件,在左侧工具-中点击Memcached 查看是否提示“U…

《拯救大学生课设不挂科第四期之蓝桥杯是什么?我是否要参加蓝桥杯?选择何种语言?如何科学备赛?方法思维教程》【官方笔记】

背景: 有些同学在大一或者大二可能会被老师建议参加蓝桥杯,本视频和文章主要是以一个过来人的身份来给与大家一些思路。 比如蓝桥杯是什么?我是否要参加蓝桥杯?参加蓝桥杯该选择何种语言?如何科学备赛?等…

webpack5生产模式

生产模式 生产模式准备 开发模式和生产模式有不同的 配置文件 2修改webpack.prod.js文件修改webpack.dev.js文件 修改webpack.dev.js文件 1》修改输出路径为undefined 2》将绝对路径进行修改,进行回退 此时文件的执行命令为 修改webpack.prod.js文件 1》修改绝…

跨平台之用VisualStudio开发APK嵌入OpenCV(三)

本篇将包含以下内容: 1.使用 Visual Studio 2019 开发一个 Android 的 App 2.导入前篇 C 编译好的 so 动态库 3.一些入门必须的其它设置 作为入门,我们直接使用真机进行调试,一方面运行速度远高于模拟器,另一方面模拟器使用的…

2024年【危险化学品经营单位安全管理人员】考试及危险化学品经营单位安全管理人员考试资料

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试考前必练!安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员考试资料题目及答案!多做几遍,其实通过危险化学品经营单位安全管理…

Zoho Campaigns邮件营销怎么发邮件?

Zoho Campaigns,作为业界领先的邮件营销平台,以其强大的功能、用户友好的界面以及深度的分析能力,为企业提供了一站式的邮件营销解决方案,助力企业高效地触达目标受众,构建并巩固庞大的客户基础。云衔科技为企业提供Zo…

电量计量芯片HLW8110的前端电路设计与误差分析校正.pdf 下载

电量计量芯片HLW8110的前端电路设计与误差分析校正.pdf 下载地址: 链接:https://pan.baidu.com/s/1vlCtC3LGFMzYpSUUDY-tEg 提取码:8110

用Prometheus全面监控MySQL服务:一篇文章搞定

简介 在现代应用中,MySQL数据库的性能和稳定性对业务至关重要。有效的监控可以帮助预防问题并优化性能。Prometheus作为一款强大的开源监控系统,结合Grafana的可视化能力,可以提供全面的MySQL监控方案。 设置Prometheus 安装Prometheus 使…

深度学习面试问题总结(21)| 模型优化

本文给大家带来的百面算法工程师是深度学习模型优化面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习面试问题,并提供参考的回答及其理论基础&a…

ic基础|时钟篇05:芯片中buffer到底是干嘛的?一文带你了解buffer的作用

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是…

leecode 637 二叉树的层平均值

leetcode 二叉树相关-层序遍历专题 二叉树的层序遍历一般来说,我们是利用队列来实现的,先把根节点入队,然后在出队后将其对应的子节点入队,然后往复此种操作。相比于二叉树的遍历递归,层序遍历比较简单,有…

2024年5月26日 (周日) 叶子游戏新闻

资深开发者:3A游戏当前处于一种尴尬的中间地带游戏行业整体,尤其是3A游戏正处于艰难时期。尽管2023年3A游戏佳作频出,广受好评,但居高不下的游戏开发成本(传闻《漫威蜘蛛侠2》的制作成本高达3亿美元)正严重…

WEB攻防【1】——ASP应用/HTTP.SYS/短文件/文件解析/Access注入/数据库泄漏

ASP:常见漏洞:本文所写这些 ASPX:未授权访问、报错爆路径、反编译 PHP:弱类型对比、mdb绕过、正则绕过(CTF考得多) JAVA:反序列化漏洞 Python:SSTI、字符串、序列化 Javascript&…

微服务下认证授权框架的探讨

前言 市面上关于认证授权的框架已经比较丰富了,大都是关于单体应用的认证授权,在分布式架构下,使用比较多的方案是--<应用网关>,网关里集中认证,将认证通过的请求再转发给代理的服务,这种中心化的方式并不适用于微服务,这里讨论另一种方案--<认证中心>,利用jwt去中…

elementui中 表格使用树形数据且固定一列时展开子集移入时背景色不全问题(父级和子级所展示的字段是不一样的时候)

原来的效果 修改后实现效果 解决- 需要修改elementui的依赖包中lib/element-ui.common.js中的源码 将js中此处代码改完下面的代码 watch: {// dont trigger getter of currentRow in getCellClass. see https://jsfiddle.net/oe2b4hqt/// update DOM manually. see https:/…