| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 90-95年CPU功耗感知调度研究 -> 正文阅读 |
|
[嵌入式]90-95年CPU功耗感知调度研究 |
最近读了三篇1990-1995年的通过调度来降低cpu能耗的文章[1] [2] [3],简单总结一下该年代单核CPU功耗感知的调度策略。 Motivation随着便携式设备逐渐兴起,人们对降低其功耗的研究开始出现,而在这之前,人们对计算机功耗的研究主要集中在显示和磁盘上,有研究表明,计算机系统中显示占总功耗的68%,磁盘读写占20%,而CPU只占12%[4]。其降低功耗的策略主要是power-down-when-idle,即不使用的时候就关掉设备。学者们逐渐意识到便携式设备通常没有磁盘,且在显示上消耗的能源并不是很多,对于这种设备,CPU成为了功耗的主要来源,而简单地将cpu在不用的时候关闭并不是最好的选择,因此需要使用其他手段来降低CPU的功耗。 当时对CPU低功耗的研究可以大致分为以下两个层次:
Metric在我们讲解操作系统调度策略之前,必须要加入这一章节,来介绍一下衡量调度策略好坏的指标,通常有以下几个物理量可以作为metric[5]:
通常我们在调度算法中常见的metric是energy,最小化一个任务执行的energy是低功耗调度策略的目标。 Schedule还是需要简单指出,三篇文章的背景均仅限于单核CPU下的功耗感知调度。 [1]工作最早,使用的energy metric为MIPJ,该metric不随时钟频率变化而变化,文章通过?的关系指出降低供电电压可以实现大幅度energy减少,而电压和频率通常是线性关系,因此适当的降低频率减慢任务的运行可以减少energy。举个例子,一个任务要求100ms做完,普通系统全速运行50ms完成,然后进入idle等待50ms(假设不消耗energy),而如果可以降低电压,用一半的速度运行100ms正好完成,则Energy是原来的1/4。原因在于任务消耗的clock是一样的,但后者电压是前者的一半。通过这个例子,作者认为全速运行进入idle状态大大浪费了energy,因此应尽可能地晚点完成任务,减少在idle loop中的时间。
揣着这个目标,作者开始做实验了,其数据是从UNIX workstations上获取了一定时间范围内很多任务的信息,将他们划分为run_cycle和idle_cycle,并给出了以下假设:
基于上面四个假设,作者提出了三个算法:
我们主要关注有一定可行性的PAST算法,需要指出的是,在PAST算法中存在excess_cycle的概念,指上个window由于速度太慢导致未执行完的cycle需要移到下一个window中执行,也就是说该算法并不受real-time的限制,没有deadline time等概念。该算法的效果受到window interval和最小速度的影响,作者通过仿真得出结论:window interval过小时,调度粒度过细,节省的功耗越少;过大时则调度粒度过粗,excess cycle太多造成任务的响应时间太长。而电压为2.2V时,相比于1V可以提供绝大部分的功耗节省,同时有更少的excess_cycle。 [2]延续了[1]的工作,提出了更多的调度算法,相比于PAST有更好速度平滑效果和预测效果,目标都是尽可能降低速度(电压)来降低功耗。 [3]开始考虑到deadline time,提出了抢占式的最优调度算法。给出以下定义: 令t0和t1为固定时间间隔,调度问题可以看作在[to, t1]上执行集合J中的任务,假设每一个属于集合J的任务均有以下参数:
调度是定义在[to, t1]上的一对函数S = (s, job)
s和job均为分段常量函数 对于任务集J,一个合理的(feasible)调度满足以下条件: 其中δ(x,y) = 1当x = y。总结来说对于每一个任务S必须满足其在到达时间和结束时间之间执行一定的CPU cycle(有可能是间断执行),我们假设能耗power是处理器运行速度的凸函数(convex function),则一个调度总体消耗的energy为 调度问题的目标被转化为对于任何的任务集,找到一个合理的调度S且令E(S)最小。 作者在文章中给出了一个离线最优的调度算法,重点是找出任务集J中的critical interval,根据critical interval计算得出critical job进行调度,然后删除被调度的任务,重新计算critical interval,进行递归求解,最后得到一个feasible且功耗最低的调度。 该算法的时间复杂度为?,可以看到复杂度还是比较高的。之后作者又给出了一个在线启发式调度算法:Average Rate,通过计算每个任务的平均速度?,然后将t时刻所需要执行任务的平均速度相加,得到s(t),根据EDF策略调度任务执行。 Summary由上可见,90-95年代利用动态调频的调度算法研究才刚刚开始,也只有[3]考虑了不违反deadline的constraint,[1]和[2]则是根据过去或者未来的一些情况,进行动态调频,如果没完成任务则留到下一个调节窗口执行。三篇论文的目标均为尽可能找到最小可执行速度,调节到其对应的电压。他们的局限在于没有考虑电压切换的开销以及处理器电压一般不能连续变化,且实际上有最大最小电压限制。 Reference[1] Weiser, M., Welch, B., Demers, A. & Shenker, S. Scheduling for reduced CPU energy. in Proceedings of the 1st USENIX conference on Operating Systems Design and Implementation 2-es (USENIX Association, 1994). [2] Govil, K., Chan, E. & Wasserman, H. Comparing algorithm for dynamic speed-setting of a low-power CPU. in Proceedings of the 1st annual international conference on Mobile computing and networking 13–25 (Association for Computing Machinery, 1995). doi:10.1145/215530.215546. [3] Yao, F., Demers, A. & Shenker, S. A scheduling model for reduced CPU energy. in Proceedings of IEEE 36th Annual Foundations of Computer Science 374–382 (1995). doi:10.1109/SFCS.1995.492493. [4] K..Li, R. Kumpf, P. Horton, and T. Anderson, “A quantitative analysis of disk drive power management in portable computers,” PTUC. Winter 1994 USENIX Conf., pp. 279-292, Jan. 1994. [5] R. Gonzalez and M. Horowitz, "Energy dissipation in general purpose microprocessors," in IEEE Journal of Solid-State Circuits, vol. 31, no. 9, pp. 1277-1284, Sept. 1996, doi: 10.1109/4.535411. [6] Nielsen, L. S., Niessen, C., Sparso, J. & van Berkel, K. Low-power operation using self-timed circuits and adaptive scaling of the supply voltage. IEEE Transactions on Very Large Scale Integration (VLSI) Systems 2, 391–397 (1994). |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:35:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |