ARMv8-A上是否按处理器存储了系统寄存器?

问题描述 投票:0回答:1

是否在ARMv8上按处理器存储了系统寄存器?我以为它们不是,这就是为什么它们被称为system寄存器的原因,但是现在我很困惑。

我的理解是,在多核ARMv8-A实现中,不同的内核可以随时在不同的异常级别执行。那么,当您在不同的物理CPU上执行不同的线程时,会发生什么情况,每个线程根据其需要更改系统寄存器?

例如,我正在阅读有关学校项目的虚拟化,并看到了一些开源代码,而且我看到系统寄存器作为“ vCPU”线程上下文的一部分进行保存和恢复。如果一个内核正在执行vCPU线程,而另一个内核不在执行,那么它们是否不会具有冲突的系统寄存器状态?

arm cpu-registers processor arm64 armv8
1个回答
1
投票

在这种情况下,我不会使用“存储”的工作-如果根据核心状态可访问同一寄存器的不同副本,则将“存储”臂核心中的寄存器。

例如,在Armv8-A内核中,可以从TTBR0_EL1EL1EL2访问EL3。可从TTBR0_EL2EL2访问EL3

但是Registers Armv8, for Armv8-A architecture profile Documentation中定义的所有系统寄存器都存在于Armv8-a内核中。

即,在多核系统中,每个核确实具有其自己的系统寄存器集,如上面引用的文档中所定义:在此上下文中,“系统寄存器”可以更具体地称为“核心系统寄存器”。

[考虑一下,在特定内核中执行的MSRMRS指令的确会影响同一内核的通用和系统寄存器:

MRS  x0, TTBR0_EL1          // Move TTBR0_EL1 into x0
MSR  TTBR0_EL1, x0          // Move x0 into TTBR0_EL1
© www.soinside.com 2019 - 2024. All rights reserved.