ver0.1
前言
前文我们介绍了Generic Timer的工作原理,从System Counter到各个PE-Core上的那一组Timers,我们都做了分析。本来的打算是把Generic Timer的虚拟化场景下的架构和工作流程也一起做一下介绍,但是写完发现篇幅实在太长了,所以分成两篇文章分别阐述。本文我们先介绍一下Generic Timer的虚拟化架构,然后结合虚拟化场景下Generic的工作流程做一下介绍,目的是帮助大家在虚拟化框架的视角重新认识Generic Timer。同样在阅读本文之前,希望大家读一读前序的文章作为基础,特别是虚拟化技术相关的文章:
(1)[V-00] 虚拟化概论-思想篇
(2)[A-38]ARMv8/v9-Generic Timer系统架构
(3)[V-05] 虚拟化基础-异常模型(Exception)(AArch64)
(4)ARM 中断子系统
(5)[V-02] 虚拟化基础-CPU架构(基于AArch64)
(6)[V-04] 虚拟化基础-寄存器集(基于AArch64)
(7)[A-17]ARMv8/ARMv9-Memory-内存屏障机制(Observer & Barrier)
(8)[A-15]ARMv8/ARMv9-Memory-弱排序内存模型(效率至上)
(9)[A-39]ARMv8/v9-Generic Timer工作原理
(10)[V-08][Device Virtualization]-软件虚拟化技术vs硬件虚拟化技术
(11)[V-10]ARMv8/v9-CPU Virtualization-CPU虚拟化架构简介(vCPU/vPE)
正文
本文成文之前,我们查阅了很多资料,包括ARM、QCOM、MTK以及一些Timer相关的论文,结论就是:软件层面你随便折腾,想怎么设计都成,ARM的generic timer体系都支持。