ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Armv8-A虚拟化手册(4)

2022-01-23 20:30:14  阅读:150  来源: 互联网

标签:定时器 虚拟化 vCPU hypervisor 手册 计数 虚拟 Armv8 EL1


7. 通用定时器的虚拟化

        ARM架构包括通用定时器,它是每个处理器里一组标准有用的定时器。通用定时器包含一组与通用系统计数器相比较的比较器。当该值等于或小于系统计算器时,比较器产生一个中断。在下图中,我们可以看到系统中的通用定时器,它包含比较器和计数器模块。

        上图描述了一个hypervisor管理两个虚拟CPU(vCPU)的系统:

note: 在这个例子中,我们忽略了执行hypervisor在vCPU之间进行上下文切换的过度。

        在4ms的物理时间或墙上时间之后,每个vCPU运行2ms。如果vCPU0在T=0时建立起比较器,并在3ms后产生一个中断,你会期望中断已经产生了么?

        相反的,在2ms的虚拟时间后你希望产生一个中断么,vCPU经历这个时间,或在2ms的墙上时间?

        ARM架构提供能力做这两者,依赖于使用哪种虚拟化。让我们看它是怎么做的。

        执行在vCPU的软件访问两个定时器:

(1)EL1物理定时器

(2)EL1虚拟定时器

        EL1物理定时器与系统计数器模块的计数做比较。使用该定时器给出墙上时钟。

        EL1虚拟定时器与虚拟计数做比较。虚拟计数为物理计数减去一个偏移。hypervisor指明了当前调度的vCPU的寄存器中偏移。当vCPU还没有被调度时,这允许它隐藏时间。

        为了描述这个概念,我们可以扩展上面的例子,如下图:

        在6ms的周期内,每个vCPU运行3ms。hypervisor可以使用偏移寄存器呈现一个仅显示vCPU运行的虚拟计数。或者hypervisor可以保持偏移为0,这意味着虚拟时间与物理时间一样。

NOTE: 这个例子显示系统计数的频率为1ms。特别是,这个频率值不是很可能。我们建议你设置系统计数来使用一个1MHZ和50MHZ之间的频率。 

标签:定时器,虚拟化,vCPU,hypervisor,手册,计数,虚拟,Armv8,EL1
来源: https://blog.csdn.net/flyingnosky/article/details/122656166

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有