还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

使用VMX设计的能量计实时测量系统

星星科技指导员 来源:嵌入式计算设计 作者:Val Popescu 2022-06-28 11:53 次阅读

处理器的性能与操作系统允许的一样好。一个计算平台,无论是嵌入式的还是其他的,不仅包括物理资源——内存、CPU 内核、外围设备和总线——通过资源分区(虚拟化)取得了一些成功,还包括性能资源,如 CPU 周期、时钟速度、内存和I/O 带宽和主/高速缓存内存空间。这些资源由诸如优先级或时间片之类的古老方法管理,或者根本不管理。结果,处理器未被充分利用并消耗过多能量,从而剥夺了它们真正的性能潜力。

大多数现有的管理方案都是分散的。CPU 周期由优先级和时间隔离管理,这意味着需要在预设时间内完成的应用程序将保留该时间,无论它们是否真的需要它。由于缓存未命中、未命中推测和 I/O 阻塞导致执行时间无法安全预测,因此保留时间通常比需要的时间长。为了确保智能手机中的调制解调器堆栈接收到足够的 CPU 周期来进行呼叫,可能会限制其他应用程序不能同时运行。这就解释了为什么一些无名品牌手机的用户抱怨当电话响起时,GPS 会掉线。

除此之外,电源管理最近引起了极大的兴趣。注意“分离”的特征。大多数部署的解决方案擅长检测空闲时间、使用系统响应缓慢的模式,或 CPU 可以以较低时钟速度运行从而节省能源的特定应用程序。例如,英特尔提出了 Hurry Up and Get Idle (HUGI)。要理解 HUGI,请考虑这个类比:有人可以使用 Indy 汽车全速到达目的地然后将其停放,但也许使用 Prius 及时到达目的地会更实用。您认为哪个使用较少的气体?基于使用模式的电源管理粒度太粗,无法始终有效地挖掘所有节能机会。

理想情况下,开发人员希望改变时钟速度/电压以匹配瞬时工作负载,但这不能仅通过关注正在运行的应用程序来实现。开发人员可能能够确定应用程序按时完成的最低时钟速度,但他们是否可以在不知道其他等待运行的应用程序如果延迟会受到影响的情况下减慢时钟速度?单独管理任务和时钟速度(功率)并不能带来最佳的能源消耗。获胜的方法将同时管理/优化所有性能资源,但至少管理时钟速度和任务调度。想象一下,任务调度器是旅行计划者,时钟管理器是汽车司机。如果汽车减速,则必须重新计划行程。驱动程序可能由于糟糕的路况(缓存未命中)而不得不减速或在铁路障碍处停下(多线程中的障碍,由于分配的 I/O 带宽不足而导致缓冲区空时阻塞,等等)。表现出依赖于数据的执行时间的应用程序也存在一个问题,因为它们完成的时间直到它们完成才知道。应该提前为这些应用程序分配什么时钟速度?

先进的绩效管理解决方案

管理性能资源的一个示例是 VirtualMetrix 性能管理 (PerfMan),它通过参数驱动算法控制所有性能资源。该软件根据带宽消耗和指令退役等性能数据安排任务、更改时钟速度、确定空闲期并分配 I/O 带宽和缓存空间。这种方法(如图 1 所示)解决了碎片问题,并可以实现最佳资源分配,甚至考虑到现代处理器和数据相关应用程序的执行速度的不可预测性。

图 1: PerfMan 使用参数驱动算法控制所有性能资源,从而实现最佳资源分配。

poYBAGK6e1iAHvkoAAOnDQ_YW7Q976.png

正在申请专利的已完成工作分配算法使用闭环方法,通过比较已完成的工作与仍需完成的工作来做出分配决策,以系统提供的任何可测量的性能量表示。例如,如果应用程序是填充缓冲区的视频播放器或通信协议,PerfMan 可以跟踪缓冲区填充级别并确定时钟速度和运行时间,以便及时填充缓冲区。完成的时间不可避免地会有所不同,因此决策会周期性更新。在许多情况下,缓冲区被过度填充以防止缓冲区空时阻塞,这可能导致时序违规。PerfMan 能够进行精确的性能分配,将缓冲保持在最低限度并减少内存占用。该算法可以处理硬、软、

如果应用程序执行图被量化为简单的性能参数,并且在重要时知道截止日期,那么算法将动态调度以及时满足截止日期。即使是非实时应用程序也需要一些性能分配以避免无限期延迟。分配应用程序所需的最少处理器资源会提高系统利用率,从而可能产生更高的工作负载。该方法不依赖于严格的优先级,尽管可以使用它们。执行的优先级或顺序是应用程序在等待轮到运行时表现出的紧迫性的直接结果,这是要执行的基本工作/已完成工作范式的函数。

扩展到更多维度

如果任务已准备好在现有操作系统中运行,它们将运行,但它们需要吗?如果操作系统知道它不会影响它们的操作,它们可以被延迟(强制空闲)吗?

了解每个任务的时间以及它是否正在运行或等待运行相对于其完成进度,允许软件自动确定最小时钟速度和运行时间。因此,在所有负载条件下,一切都按时完成。将时钟速度与瞬时工作负载相匹配并不意味着时钟速度总是最小化。低能耗的目标有时需要在空闲之后出现高速爆发,例如英特尔的 HUGI。但即便如此,运行速度超过最佳利用率(每单位时间执行的操作)所表明的速度并没有任何好处。等待内存操作完成时的快速时钟不会节省能源。

该算法“以最低能耗实现最高利用率/工作负载”的口号在很大程度上是通过管理所有性能资源的闭环算法来实现的。

在多核系统中,不能同时实现负载均衡、多线程屏障延迟低和总能耗最低。为了解决这个问题,可以将 PerfMan 配置为优化一个或多个性能属性。如果以最低能耗为目标,一个不平衡的系统,其中一些内核负载高,而其他内核为空并因此关闭,可能会以更长的执行延迟和整体较低的性能为代价提供最低的能耗。

加速线程以减少屏障延迟也会导致更高的能耗。但是,满足最后期限(硬的或软的)优先于所有其他考虑。精确的基于闭环的性能资源分配算法可以安全地保持更高的工作负载水平,这反过来又可以比现有方法更进一步地推动核心整合,从而实现更高的能耗降低。

在 VMX Linux 上实现

PerfMan 已实现为独立于驻留操作系统运行的瘦内核 (sdKernel)。它已被移植到 Linux 2.6.29 (VMX Linux),如图 2 所示。Android 移植即将完成。该软件接管了 Linux 任务调度并与现有的电源管理基础架构互通。sdKernel 的一个单独版本提供虚拟化并支持在符合 POSIX 的环境中的硬实时任务。调度/上下文切换在许多平台上处于亚微秒级,但由于大多数 Linux 系统调用对于硬实时应用程序来说太慢了,因此 sdKernel 为基本外围设备、定时器和其他资源提供了 API。

图 2:在 Linux 实施中,PerfMan 接管 Linux 任务调度并与现有的电源管理基础架构互通。

pYYBAGK6e2mAJKT3AAKd5IqHYc4743.png

通过监控性能,该软件可以检测异常的执行模式,从而预测即将到来的操作系统恐慌和崩溃。在这种情况下,sdKernel 将通知关键任务应用程序停止使用 Linux 系统调用,并在 Linux 重新启动时临时切换到 sdKernel API(安全模式)。

VMX Linux 支持实时和非实时应用程序的混合,具有高效的性能隔离,同时将能耗降至最低。它还可以提供硬件隔离/安全和安全迫降。

基准测试显示结果

使用 VMX 设计的能量计实时测量的能量消耗为系统累积并与各个应用程序相关联。媒体播放器应用程序(视频和音频)首先使用标准 Linux 2.6.29(图 3 红色图表)和 VMX Linux(图 3 蓝色图表)在 OMAP35xx BeagleBoard 上运行。

图 3:在 OMAP35xx BeagleBoard 上使用 VMX Linux 可实现 95% 的平均负载并及时完成。

poYBAGK6e3GAOGjfAALf98yvybc845.png

性能合规性(Perf Compl 图)显示应用程序任务按时完成的距离(中心线)。线下方表示违反截止日期。请注意,使用 VMX Linux,可以实现 95% 的平均负载,而无需预缓冲,也不会违反最后期限,但它已经接近了。使用 VMX Linux 时,46 秒视频的总电路板能耗从 68.7 W*sec 下降到 27.6 W*sec。显示的数据代表预设时间间隔内的平均值。作为额外的奖励,当 Linux 被故意崩溃时,视频会消失,但音乐会在安全模式下播放,不会出现任何可听见的故障。

简而言之,该实施创造了一种新的绩效管理方法,并取得了令人兴奋的结果。

审核编辑:郭婷

  • 播放器
    +关注

    关注

    5

    文章

    318

    浏览量

    34848
  • Linux
    +关注

    关注

    75

    文章

    7638

    浏览量

    196557
  • 操作系统
    +关注

    关注

    36

    文章

    4345

    浏览量

    117245
收藏 人收藏

    评论

    相关推荐

    Linux内存管理体系介绍

    内存是计算机最重要的资源之一,内存管理是操作系统最重要的任务之一。内存管理并不是简单地管理一下内存而....
    的头像 Linux阅码场 发表于 08-08 09:28 7次 阅读

    自旋锁的发展历史与使用方法

    自旋锁是Linux内核里最常用的锁之一,自旋锁的概念很简单,就是如果加锁失败在等锁时是使用休眠等待还....
    的头像 Linux阅码场 发表于 08-08 08:51 27次 阅读

    探究一下C语言中main函数各种不同的写法

    main函数是C程序的入口函数,即程序的执行是从main函数开始,对其他函数的调动也是直接或间接地在....
    发表于 08-07 17:26 17次 阅读
    探究一下C语言中main函数各种不同的写法

    是谁关闭了Linux抢占?

    我们理解,spin_lock()会调用preempt_disable() 导致本核的抢占调度被关闭(....
    发表于 08-07 17:19 65次 阅读
    是谁关闭了Linux抢占?

    Linux僵尸进程会被杀死吗?

    那么,根据POSIX标准关于信号(signal)的定义,当我们执行kill -9 4730(4730....
    发表于 08-07 16:48 29次 阅读
    Linux僵尸进程会被杀死吗?

    Linux内核之ISP驱动流程分析

    应用层就是通过访问video_device生成的节点来进行操作Camera,所以video_devi....
    的头像 冬至配饺子 发表于 08-07 16:13 112次 阅读

    Linux内核之Camera驱动分析

    上面主要是根据全局变量ov13850_custom_config中的信息填充时序信息。然后初始化v4....
    的头像 冬至配饺子 发表于 08-07 16:08 138次 阅读

    看看Linux为相机提供的驱动框架

      V4L2 (Video Linux Two),是为支持Linux内核设计的驱动框架驱动框架。为应....
    的头像 冬至配饺子 发表于 08-07 16:03 166次 阅读
    看看Linux为相机提供的驱动框架

    分享linux中的13个基本Cat命令案例

    当您将重定向与标准输入一起使用时<'(小于符号),它使用文件名test2作为命令的输入,输出将显示在终端中。
    的头像 冬至配饺子 发表于 08-07 15:54 100次 阅读
    分享linux中的13个基本Cat命令案例

    用Linux语言输出变色字体代码案例

     字背景颜色范围:40 - 4940:黑41:深红42:绿43:黄色44:蓝色45:紫色46:深绿4....
    发表于 08-06 17:12 88次 阅读

    深度解析Linux的内存管理体系

    Linux内存管理的整体模式是虚拟内存管理(分页内存管理),并在此基础上建立了一个庞大的内存管理体系....
    发表于 08-06 16:55 108次 阅读

    以x86 CPU架构理解Linux中断机制

    中断机制:CPU在执行指令时,收到某个中断信号转而去执行预先设定好的代码,然后再返回到原指令流中继续....
    的头像 Linux阅码场 发表于 08-06 16:19 459次 阅读

    Linux-基础IO详解

    磁盘上的文件 本质是对文件的所有操作,都是对外设的输入和输出 简称 IO
    发表于 08-05 10:47 101次 阅读

    什么是调度?如何进行调度?

    进程调度是操作系统最重要的内容之一,也是学习操作系统的重点和难点。关于进程调度,我们首先就会问出一些....
    发表于 08-05 09:04 68次 阅读

    【开发教程1】手把手教你做平板电脑-Linux 引导过程

    Linux 引导过程 ——疯壳·嵌入式平板开发   Linux 内核与 Android 系统 linux 内核有什么区别? ...
    发表于 08-04 18:55 993次 阅读
    【开发教程1】手把手教你做平板电脑-Linux 引导过程

    驱动访问Linux IO内存流程

    在内核中访问IO内存(通常是芯片内部的各个I2C,SPI, USB等控制器的寄存器或者外部内存总线上....
    的头像 冬至配饺子 发表于 08-04 18:10 235次 阅读
    驱动访问Linux IO内存流程

    bash手册

    本文简要介绍了bashshell(版本:5.12020年12月21日)。这是GNU Bash参考手册....
    发表于 08-04 17:45 20次 阅读

    小编科普几种查看网络带宽的方法

    有些时候我们的网络缓慢并不是由远程服务器或路由器所引起的,有可能是因为系统中的某些进程占用了太多可用....
    的头像 冬至配饺子 发表于 08-03 17:57 440次 阅读
    小编科普几种查看网络带宽的方法

    Linux和Android车载系统比较

    Android Automotive OS,尽管开头都顶着Android的大名,但Android A....
    的头像 city_prolove 发表于 08-03 15:45 209次 阅读

    云从科技人机协同操作系统与华为Atlas 800推理服务器完成兼容性测试

    近日,基于昇腾AI,云从科技的人机协同操作系统(CWOS)完成与华为Atlas 800推理服务器的兼....
    的头像 华为计算 发表于 08-03 09:52 197次 阅读

    润和软件携手江苏国光共建“软件、硬件、生态、服务”新商业模式

    近日,江苏国光信息产业股份有限公司研发的智慧显示屏问世,新产品在软硬一体化升级后,提供了海量信息流传....
    的头像 润和软件 发表于 08-03 09:46 117次 阅读

    精简linux系统下载

    Linux是现在最流行的操作系统,含有大量的源代码。Xilinx 2020.1使用的Linux 5.....
    的头像 树没了派 发表于 08-02 17:10 137次 阅读

    Windows操作系统安全加固规范 包括日志配置、通信协议(IP协议安全)

    本文针对Windows操作系统的账号管理、账户授权、日志配置、通信协议(IP协议安全)以及设置其他安....
    发表于 08-02 16:17 95次 阅读

    在Linux/U-Boot里为QSPI Flash使用UBIFS

    UBIFS是更强壮的FLash文件系统。很多嵌入式系统都使用了UBIFS。Xilinx PetaLi....
    发表于 08-02 15:51 15次 阅读

    万里红发布首个面向移动办公形态的Openharmony发行版移动OS1.0

    7月,以“软件定义世界 开源共筑未来”为主题的2022全球数字经济大会开放原子全球开源峰会在北京举行....
    的头像 万里红 Superred 发表于 08-02 14:51 350次 阅读

    不同操作系统间QoR性能存在差异

    本篇博文中的分析是根据真实客户问题撰写的,该客户发现不同操作系统间 QoR 性能存在差异。虽然可以理....
    的头像 1654966251.876700 发表于 08-02 11:52 102次 阅读
    不同操作系统间QoR性能存在差异

    自动删除SDK/Vitis下驱动程序的旧版本的Linux脚本

    Xilinx的开发工具SDK/Vitis都可以自动根据Vivado设计,创建软件工程,自动配置各个外....
    发表于 08-02 11:32 29次 阅读

    麒麟软件与openEuler社区共同推动操作系统技术持续发展

    7月,2022开放原子全球开源峰会OpenAtom openEuler分论坛在北京成功举办。论坛以“....
    的头像 openEuler 发表于 08-02 10:38 348次 阅读

    测试MPSoC GEM的1588功能

    MPSoC的MAC支持1588。在Linux Kernel的配置项中使能CONFIG_MACB_US....
    的头像 王磊 发表于 08-02 09:39 71次 阅读
    测试MPSoC GEM的1588功能

    扩展MPSoC中断详解

    MPSoC是带ARM处理器和FPGA(PL)的SoC,包含4核A53及其常用外部模块(PS)。A53....
    发表于 08-02 09:14 21次 阅读

    检查Linux DRM显示设备ID的脚本

    不同设计里,Linux DRM子系统里设备ID不一样。每次修改,费时费力,也容易出错。因此写了以下脚....
    发表于 08-02 09:01 43次 阅读

    Standalone例程的应用与分析

    如果是VCK190 ES单板,需要在Lounge里申请"Versal Tools Early Eac....
    的头像 LL-LING宁 发表于 08-02 08:03 49次 阅读
    Standalone例程的应用与分析

    如何在Linux平台上进行Linux程序开发

    最近陆陆续续有工程师拿到了VCK190单板。 VCK190集成了Xilinx的7nm AIE,有很强....
    发表于 08-02 08:03 68次 阅读
    如何在Linux平台上进行Linux程序开发

    修改V4L2的Video Pipeline的devicetree

    PetaLinux 能够根据Vivado的设计,自动生成V4L2的Video Pipeline的de....
    的头像 李春梅 发表于 08-02 08:03 33次 阅读
    修改V4L2的Video Pipeline的devicetree

    如何在RK2206开发板上使用鸿蒙LiteOS-M内核接口进行任务编程开发

    实验内容 本例程演示如何在小凌派-RK2206开发板上使用鸿蒙LiteOS-M内核接口,进行任务编程开发。例程创建两个任务,任务1...
    发表于 08-01 16:47 2175次 阅读

    如何用好你的SSD?

    在过去十几年中,CPU的性能提升了100倍以上,而传统的HDD硬盘(Hard Disk Drive)....
    发表于 08-01 16:44 69次 阅读

    华为首款搭载HarmonyOS 3.0的畅享50 Pro

      近日,华为执行董事、终端BG首席执行官、智能汽车解决方案事业部首席执行官余承东携华为50 Pro....
    的头像 星星科技指导员 发表于 08-01 16:03 335次 阅读

    中兴新支点国产操作系统半年新增用户10万+,将发布自主内核

    继鸿蒙后,国产操作系统再传出喜讯,近日2022 开放原子全球开源峰会在北京举办,在7月29日Open....
    的头像 科技见闻网 发表于 08-01 15:58 468次 阅读
    中兴新支点国产操作系统半年新增用户10万+,将发布自主内核

    到底什么是调度延迟

    本次圈定的性能指标是调度延迟,那首要的目标就是看看到底什么是调度延迟,调度延迟是保证每一个可运行进程....
    的头像 Linux阅码场 发表于 08-01 11:08 150次 阅读

    Linux内核版本号是如何形成的?

    当 Linus 刚开始开发内核时,所使用的版本控制系统只是由一个从零(0.x)开始的递增变量方案组成....
    的头像 马哥Linux运维 发表于 07-31 11:37 110次 阅读

    国内外OEM自动驾驶操作系统发展现状

    在当下“软件定义”、“数据驱动”的大背景下,国内外传统主机厂已经从特斯拉“硬件预埋、OTA升级、软件....
    的头像 新机器视觉 发表于 07-31 10:53 481次 阅读

    FDIR简介与工作原理

    Intel 以太网Flow Director技术(Intel Ethernet Flow Direc....
    的头像 FPGA之家 发表于 07-31 10:37 132次 阅读

    【飞凌RZ/G2L开发板试用体验】基于飞凌RZ/G2L开发板的波形显示系统的搭建

    本人收到开发板后,进行了基础功能的测试,便根据所申请内容进行课题开发。本开发板支持MIPI接口的LCD显示器,但是本人没...
    发表于 07-30 18:43 3302次 阅读

    【RT-Thread学习笔记】使用hexdump打印字节数组

    【Linux C语言编程】使用hexdump打印字节数组
    的头像 嵌入式物联网开发 发表于 07-30 13:59 341次 阅读
    【RT-Thread学习笔记】使用hexdump打印字节数组

    【RT-Thread学习笔记】Makefile的FORCE

    【RT-Thread学习笔记】十分钟学会Makefile的FORCE
    的头像 嵌入式物联网开发 发表于 07-30 13:55 371次 阅读
    【RT-Thread学习笔记】Makefile的FORCE

    【RT-Thread学习笔记】Makefile核心基础知识

    ​ 笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefil....
    的头像 嵌入式物联网开发 发表于 07-30 13:53 334次 阅读
    【RT-Thread学习笔记】Makefile核心基础知识

    【RT-Thread学习笔记】基于Linux的反汇编和栈追溯

    【经验分享】基于Linux命令行编程环境的栈追溯和反汇编技术实践分享
    的头像 嵌入式物联网开发 发表于 07-30 13:44 501次 阅读
    【RT-Thread学习笔记】基于Linux的反汇编和栈追溯

    开放原子开源基金会为 OpenHarmony 应用到千行百业提供支持与服务

    OpenHarmony技术指导委员会(TSC)承担定义和维护 OpenHarmony 技术愿景及技术....
    的头像 OpenAtom OpenHarmony 发表于 07-30 09:07 399次 阅读

    GaussDB数据库配置安全SSH协议

    以root身份在/etc/ssh/sshd_config文件中配置参数Protocol,设置之后需要....
    发表于 07-29 15:50 142次 阅读

    Linux内核的基本架构 Rudroid的架构分析

    WORKDIR /setupRUN git clone https://github.com/uni....
    发表于 07-29 15:44 76次 阅读

    Linux终端工具介绍——WindTerm

    它是一款 C 语言开发的跨平台(Windows、MacOS、Linux) SSH 客户端,完全免费用....
    发表于 07-29 15:21 131次 阅读

    请问大神rk3399pro能否支持ROS呢

    请问大神rk3399pro能否支持ROS呢?rk3399pro当前的操作系统能否支持ROS?求解答 ...
    发表于 07-28 15:44 1178次 阅读

    MySQL数据库索引的底层是怎么实现的

    前言 就我个人所知,MySQL目前已经作为绝大数项目的数据库选择。但是经常会需要去处理慢sql导致的各类问题。索引,作为一种...
    发表于 07-28 15:30 1350次 阅读

    嵌入式Linux开发教程及案例+案例分享

    发表于 07-26 14:17 1555次 阅读

    每日推荐 | V853开发板开发进阶,单PCB轮式机器人的教程

    大家好,以下为电子发烧友推荐每日好帖,欢迎留言点评讨论~ 1、V853开发板开发进阶——在Linux下加载E907核心固件 推荐理由...
    发表于 07-26 09:59 10514次 阅读

    请问ch582有linux下的ble例程可以提供么?

    虽然这个问题可能有点怪 我的环境是arch+mrs 官网上下载的工程完全无法编译,各种库文件名不对、无法找到函数和变量的定义 ...
    发表于 07-26 06:44 61次 阅读

    V853开发板开发进阶——在Linux下加载E907核心固件

    V853开发板购买链接:https://www.hqchip.com/p/KFB-V853.html V853开发板资料下载:V853 Doc E907 核心固件加载 在...
    发表于 07-25 16:03 3910次 阅读

    求助,请问有Linux版的wchisptool吗

    如果没有 不是不必需买个wchlink才行 手头只有jlink   ...
    发表于 07-21 06:29 336次 阅读

    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

    TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...
    发表于 09-25 11:51 686次 阅读
    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)