嵌入式Hypervisor组件设计(二)

Linux阅码场 2024-07-19 16:32
本文节选自孙陈伟著《嵌入式Hypervisor架构、原里与应用》
3.1.3 时钟驱动
Hypervisor 的关键功能之一是提供虚拟时钟服务。PRTOS 中的虚拟时钟可以为每个分区提供时钟计时,并独立于主机系统时钟,旨在允许虚拟机运行自己的操作系统和应用程序,并协调分区的内部任务,且不会干扰其他分区。虚拟时钟通过截获硬件时钟事件并模拟与时间相关的事件(例如使用定时器中断和时钟滴答)来实现。当分区请求虚拟时钟服务(例如获取当前时间)时,虚拟时钟服务会读取硬件时钟的实时值,并根据分区调度等因素进行调整计算,再返回虚拟时间。在 PRTOS 系统中,分区通过调用 PRTOS 提供的虚拟时钟接口获取当前的时间戳,用于满足以下 5 种需求。
1)分区系统可以发现某个陷入死循环(由编程错误引起)的任务,并做出相应处理。
2)在分区实时系统中,按要求的时间间隔,为实时控制设备输出正确的时间信号。
3PRTOS 调度程序按照事先给定的时间定时唤醒对应的分区。
4PRTOS 内核记录外部事件发生的时间间隔。
5PRTOS 系统记录用户和系统所需要的绝对时间。
PRTOS 使用数据结构 hw_clock_t 来管理硬件时钟,具体实现请参考源码 core/include/ktimer.h。硬件时钟是全局时钟,不管是单处理器硬件平台,还是 SMP 硬件平台,都只使用一个全局硬件时钟。针对 Intel X86 硬件平台的 3 种不同的时钟硬件,PRTOS 提供了 3 种时钟驱动,分别是 Intel 8253 时钟驱动、TSC 时钟驱动、HPETHigh Precision Event Timer,高精度事件时钟)时钟驱动,如图 3-2 所示。
1. Intel 8253 时钟驱动
Intel 8253 是一种常见的可编程间隔定时器,常用作计算机系统中的时钟驱动,用于生成精确的时间间隔和周期性中断。
Intel 8253 通常由系统软件通过编程来配置和控制,包含 3 个独立的计数器通道,并且每个通道都可以用作定时器或计数器。每个通道都有一个 16 位计数器,可以根据需要进行加载和读取。
PRTOS 可以将 Intel 8253 用作系统的时钟源,通过设定计数器的初始值和工作模式生成固定的时钟间隔,用于操作系统的调度和计时。在 X86 单核硬件平台上,PRTOSIntel 8253 PIT 的通道 0 作为计时通道,通道 0 的定时器设置为(Binary, Mode 2, LSB/MSB),即周期为 1ms 的周期触发模式,并定义一个全局结构 struct pit_clock_data 来记录PRTOS 启动后的定时中断发生次数,再结合当前通道 0 中计数器的值,可以计算出 PRTOS自启动后到当前时刻的精确到微秒的时间戳。具体实现参考 PRTOS 源码 core/kernel/x86/pit.c

2. TSC 时钟驱动
TSC 是一个 64 位的寄存器,从 Intel Pentium 开始,在所有的 X86 平台上均会提供。它存放的是 CPU 从启动以来执行的时钟周期,因此可以用来精确地测量程序的执行时间。TSC 由处理器硬件提供,因此它的计时操作比使用软件定时器要快得多,这使得 TSC 成为性能分析和调试工具中的一个重要组件。在某些情况下,使用 TSC 进行时间测量可以提高精度,并且不会受到操作系统时钟频率调整的影响。
要使用 TSC,需要使用相关的 CPU 指令来读取 TSC 寄存器的值。例如,在 X86 构中,可以使用 rdtsc 指令来读取 TSC 寄存器的值。rdtsc 指令将 TSC 寄存器的值读取到EDX:EAX 寄存器中(高 32 位保存在 EDX 寄存器中,低 32 位保存在 EAX 寄存器中)。由TSC 是对驱动 CPU 的时钟脉冲进行计数的,因此 TSC 的频率就是 CPU 的时钟频率。基TSC 的时钟驱动实现,请参考 PRTOS 源码 core/kernel/x86/tsc.c

提示:TSC 也存在一些限制。由于 TSC 基于 CPU 主频(记录 CPU 的时钟脉冲),因此在多核 CPU CPU 频率变化的情况下,不同处理器核心或不同 CPU 之间的 TSC 能不同步,导致计时不准确。为了解决这个问题,一些处理器提供了 TSC 同步机制,例如 Intel TSC 同步引擎(TSC Sync Engine)和 AMD TSC 同步模式(TSC SyncMode)。另外,TSC 还可能受到频率变化、睡眠模式和动态频率调整等因素的影响。比如,空闲的操作系统内核可能会调用 HALT 指令,使处理器完全停止,直到接收到外部中断被唤醒,在此期间 TSC 停止计数。

3. HPET 时钟驱动
HPET 是一种高精度定时器。它是一种系统级别的硬件设备,通常用于代替早期的定时器,如 Intel 8253 PIT。与早期的定时器相比,HPET 具有更高的分辨率和更准确的时钟频率,并且可以更精确地测量和记录系统事件和时间间隔。HPET 通常由系统主板上的芯片提供支持,并且可以在 BIOS 中进行配置。具体实现可参考 PRTOS 源码 core/kernel/x86/hpet.c

提示:X86 单处理器硬件平台中,PRTOS Intel 8253 PIT 或者 TSC 定时器作为时钟源;在 X86 多处理器硬件平台中,PRTOS HEPT 定时器作为时钟源。

3.1.4 定时器驱动
PRTOS 的定时器组件用于分区调度、追踪分区中的时间以及处理虚拟机中的事件。类PRTOS 的时钟硬件,PRTOS 也为硬件定时器定义了一组驱动。PRTOS 使用定时器驱动数据结构 hw_timer_t 来管理硬件定时器,具体定义请参考源码core/include/ktimer.h。硬件定时器资源属于 Per-CPU 资源。不管是单处理器硬件平台还是多处理器硬件平台,硬件定时器和 pCPU 都是一一对应关系,每个 pCPU 独占一个硬件定时器。PRTOS hw_timer_t 定时器接口基于 3 种不同的定时器硬件提供了 3 种类型的定时器驱动,分别是 Intel 8253 定时器驱动、HPET 定时器驱动和 LAPICLocal AdvancedProgrammable Interrupt Controller,本地高级可编程中断控制器)定时器驱动,如图 3-3所示。

提示:Per-CPU 资源是每个 CPU 专用的资源,只有所属的 CPU 才可以访问。
1. Intel 8253 定时器驱动
如果 PRTOS 选中 Intel 8253 PIT 作为硬件时钟源(即 CONFIG_PC_PIT_CLOCK 宏将被定义),PIT 的通道 1 定时器工作在周期性触发模式,PRTOS 使用全局变量 pit_clock_data来记录时钟中断的触发次数,以辅助实现 PRTOS 的时钟驱动。Intel 8253 PIT 定时器驱动的实现,请参考 PRTOS 源码 core/kernel/x86/pit.c

提示:32 X86 单核处理器硬件平台(基于 QEMU 或者 VMware Workstation 创建)均采用 Intel 8253 作为定时器硬件。

2. HPET 定时器驱动
HPET 定时器驱动用于操作和管理 HPET 硬件定时器。使用 HPET 定时器驱动可以在PRTOS 中实现高精度的定时功能,从而满足实时性要求高的应用程序和系统的需求。在PRTOS 内核中,HPET 的管理机制和 Intel 8253(或 Intel 8254PIT 类似,具体实现可参考源码 core/kernel/x86/hpet.c
3. LAPIC 定时器驱动
LAPIC 定时器是集成在 pCPU 中的本地定时器,用于提供处理器级别的定时和中断功能。LAPIC 定时器驱动用于操作和管理 LAPIC 定时器,它对于实现处理器级别的定时和中断功能非常重要,在操作系统和应用程序中应用广泛,用于实现定时任务、计时、事件触发和性能测量等功能。LAPIC 定时器的具体实现可参考 PRTOS 源码 core/kernel/x86/lapic_timer.c

提示:硬件定时器是 Per-CPU 专用的硬件资源。在单处理器硬件平台上,无论选择Intel 8253 PIT 定时器,还是选择 HPET 硬件定时器,定时器资源都是 Per-CPU 类型的;在多处理器硬件平台上,LAPIC 定时器集成在 CPU 内部。当 PRTOS 配置成支持 SMP模式时,只能选择 LAPIC 定时器。

7月21号(本周日)晚20:00,本书作者在阅码场有一场直播分享,欢迎大家届时观看,加微信入群:linuxer2016


Linux阅码场 专业的Linux技术社区和Linux操作系统学习平台,内容涉及Linux内核,Linux内存管理,Linux进程管理,Linux文件系统和IO,Linux性能调优,Linux设备驱动以及Linux虚拟化和云计算等各方各面.
评论
  • 书接上回:【2022年终总结】阳光总在风雨后,启航2023-面包板社区  https://mbb.eet-china.com/blog/468701-438244.html 总结2019,松山湖有个欧洲小镇-面包板社区  https://mbb.eet-china.com/blog/468701-413397.html        2025年该是总结下2024年的喜怒哀乐,有个好的开始,才能更好的面对2025年即将
    liweicheng 2025-01-24 23:18 247浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 249浏览
  • 项目展示①正面、反面②左侧、右侧项目源码:https://mbb.eet-china.com/download/316656.html前言为什么想到要做这个小玩意呢,作为一个死宅,懒得看手机,但又想要抬头就能看见时间和天气信息,于是就做个这么个小东西,放在示波器上面正好(示波器外壳有个小槽,刚好可以卡住)功能主要有,获取国家气象局的天气信息,还有实时的温湿度,主控采用ESP32,所以后续还可以开放更多奇奇怪怪的功能,比如油价信息、股票信息之类的,反正能联网可操作性就大多了原理图、PCB、面板设计
    小恶魔owo 2025-01-25 22:09 358浏览
  • 随着AI大模型训练和推理对计算能力的需求呈指数级增长,AI数据中心的网络带宽需求大幅提升,推动了高速光模块的发展。光模块作为数据中心和高性能计算系统中的关键器件,主要用于提供高速和大容量的数据传输服务。 光模块提升带宽的方法有两种:1)提高每个通道的比特速率,如直接提升波特率,或者保持波特率不变,使用复杂的调制解调方式(如PAM4);2)增加通道数,如提升并行光纤数量,或采用波分复用(CWDM、LWDM)。按照传输模式,光模块可分为并行和波分两种类型,其中并行方案主要应用在中短距传输场景中成本
    hycsystembella 2025-01-25 17:24 270浏览
  • 前篇文章中『服务器散热效能不佳有解吗?』提到气冷式的服务器其散热效能对于系统稳定度是非常重要的关键因素,同时也说明了百佳泰对于散热效能能提供的协助与服务。本篇将为您延伸说明我们如何进行评估,同时也会举例在测试过程中发现的问题及改善后的数据。AI服务器的散热架构三大重点:GPU导风罩:尝试不同的GPU导风罩架构,用以集中服务器进风量,加强对GPU的降温效果。GPU托盘:改动GPU托盘架构,验证出风面积大小对GPU散热的影想程度。CPU导风罩:尝试封闭CPU导风罩间隙,集中风流,验证CPU降温效果。
    百佳泰测试实验室 2025-01-24 16:58 129浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 225浏览
  • 不让汽车专美于前,近年来哈雷(Harley-Davidson)和本田(Honda)等大型重型机车大厂的旗下车款皆已陆续配备车载娱乐系统与语音助理,在路上也有越来越多的普通机车车主开始使用安全帽麦克风,在骑车时透过蓝牙连线执行语音搜寻地点导航、音乐播放控制或免持拨打接听电话等各种「机车语音助理」功能。客户背景与面临的挑战以本次分享的客户个案为例,该客户是一个跨国车用语音软件供货商,过往是与车厂合作开发前装车机为主,且有着多年的「汽车语音助理」产品经验。由于客户这次是首度跨足「机车语音助理」产品,因
    百佳泰测试实验室 2025-01-24 17:00 154浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 905浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 332浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 629浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 1135浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 216浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 385浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦