最近读了一些1996-2000年的通过调度来降低cpu能耗的文章,主要文章有[1] [2] [3] [4] [5], 简单总结一些该时期单核CPU功耗感知的调度策略。

该时期还出现了很多关于低功耗电路设计的文章,利用电压可调节的技术,将执行单元作为节点,执行单元之间传输的数据作为边,构成DAG,对DAG进行分析,在满足throughput limit的情况下调节node的电压来降低功耗。

Paper Analysis

Hongy于1998年DAC发表的论文[1]中主要针对拥有多电压可编程处理器核和内存的SOC进行功耗降低,文章可以分为两部分,第一部分是设计层面动态分配资源,调整处理器核、icache和dcache的数量和参数;第二部分是任务层面的调度,通过least-constraining most-constrained提出了非抢占式调度算法,下面讲一下其第二部分调度算法,该调度算法分为两部分:

  1. 假设所有的任务在很小的电压下调度

    首先对任务时间进行分片,分为time region。通过目标函数计算time region的值

    $$

    OBJ(TimeRegion tr) = maxVoltage(tr) * aveVoltage(tr)

    $$

    然后假定所有的任务从arrival time执行到deadline,计算time region中所有任务的最大电压和平均电压,time region的OBJ用来计算task的constraint

    $$

    OBJ(Task t) = \sum_{tr ∈[a_t, b_t]}OBJ(tr) * r_t^2/(d_t - a_t)^2

    $$

    $ r_t$ 是任务在该电压下的执行时间(execution time),其中没有被包含在其他任务时间下的,且OBJ最大即most_constrained的task,被调度在和他run-time相同的interval(a subset of time regions with the lowest sum of objective functions)下执行,调度完任务t后,对其他任务的arrival time和deadline进行更新,然后递归调度

  2. 为了降低功耗调整电压

同一年Hongy又发了另一篇文章[2],思路和[1]一样,第一部分进行Resource Allocation,第二部分进行Task schedule,这一篇文章中任务调度算法为可抢占的任务调度算法,同时考虑了电压切换的限制,虽然仍假设电压是连续变化的,但是对最大变化速率(斜率)做出了限制,设定最大为K,且变化时仍能工作。算法思路仍是least-constraining most-constrained启发式调度算法,增加了抢占机制,先调度后调压。


Ishihara于1998年发表的论文[3]中对可动态调节电压上的调度问题进行了分析,提出了几个lemma和theorem,比较出彩的是他考虑到了电压不能连续变化的抢矿,指出两个相关的theorem:

  1. 当处理器只能使用一部分离散的电压值,最多两个电压变化即可最小化energy
  2. 最小化energy的两个电压值是相邻于$V_{ideal}$(假如用一个供电电压v正好在deadline完成任务,那么v是使energy最小化的供电电压,记为$V_{ideal}$)

两个定理表明,通常最优化的电压调节只需要一次电压更改,因此电压变化带来的开销往往是可以忽略的

最终给出了调度问题的整数线性规划(ILP)形式


1999年,Shin在DAC中发表了一篇关于硬实时系统上固定优先级调度算法的研究[4]。首先介绍一下什么是固定优先级调度算法,在基于优先级的抢占调度算法(priority-based preemptive scheduling algorithm)问题中,一般分为两种算法

  • fixed-priority(static) algorithm

    任务运行前静态设置好其优先级,运行中优先级不发生变化。经典的有RMS(Rate-Monotonic Scheduling)或DMS(Deadline-Monotonic Scheduling)。

  • dynamic-priority algorithm

    任务运行时动态设置其优先级,比如EDF(Earliest Deadline First)

关于上面三种算法,可以参考博客,这里不进行介绍。

在嵌入式系统中,通常将任务分为具有deadline要求的周期性(periodic)任务和非周期性(aperiodic)任务,为了分析系统的可调度性,通常会通过static analysis[6] [7]、profiling或direct measurement的方法得到任务的最坏情况执行时间(在可变电压处理器上,根据其处理器最大速度情况下计算)。作者基于以下两个观察:

  1. 任务一般比WCET跑得快
  2. 在固定优先级调度中,即使任务跑在WCET,也会出现一些idle time

以上两种情况会导致idle time的出现,如果可以通过DVFS或DPM技术,降低idle时间的出现,同时在出现idle的时候进入power-down mode,就可以大大减少功耗。于是作者在现有调度技术上进行修改,现有的调度器维持两个队列:

  • run queue

    存储准备在cpu上执行的任务,按照优先级排序。

  • delay queue

    存储等待下一个周期到来的任务,按照release time排序。

正在cpu上执行的任务称为active task,每次调度器运行时,会检查delay queue中是否有任务可以被移到run queue,如果有的话,移入run queue,然后将run queue首节点和active task的优先级比较,来判断是否发生任务切换。

作者增加了两种机制

  1. 如果没有等待执行任务(run queue为空)和正在执行的任务,所有任务都在等待下一次任务到来,则进入power-down模式
  2. 如果没有等待执行任务(run queue为空)且有正在执行的任务,则调整电压尽可能降低,节省功耗。考虑了切换的开销。delay queue首节点的release time标识下一个任务的到来,所以可以根据该事件来调整电压。

2000年,Shin延伸了他的工作,在ICCAD发表了文章[5],给定任务的T(period)、D(Deadline)和C(WECT),分两部分进行调度,第一部分offline计算保证schedule feasible的前提下最低处理器速度,第二部分online根据任务执行队列中的情况动态调整电压和进入power-down模式。后面动态电压调节和进入power-down模式和1999年的论文相似。

Summary

相较于90-95,出现了针对real-time下time constraint和DVFS与DPM相结合的文章,但同时也存在一定局限,局限在于首先还是大多evaluation都是仿真,仿真中假设了电压的连续变化,同时power-down模式的功耗开销[4] [5]中只是假设为5%的正常开销,没有实际测量,模式切换和电压调节的开销也并不准确。

Reference

[1] Inki Hong, D. Kirovski, Gang Qu, M. Potkonjak and M. B. Srivastava, "Power optimization of variable voltage core-based systems," Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175), 1998, pp. 176-181, doi: 10.1109/DAC.1998.724462.

[2] Hong, I., Qu, G., Potkonjak, M. & Srivastavas, M. B. Synthesis techniques for low-power hard real-time systems on variable voltage processors. in Proceedings 19th IEEE Real-Time Systems Symposium (Cat. No.98CB36279) 178–187 (1998). doi:10.1109/REAL.1998.739744.

[3] Ishihara, T. & Yasuura, H. Voltage scheduling problem for dynamically variable voltage processors. in Proceedings. 1998 International Symposium on Low Power Electronics and Design (IEEE Cat. No.98TH8379) 197–202 (1998). doi:10.1145/280756.280894.

[4] Shin, Y. & Choi, K. Power conscious fixed priority scheduling for hard real-time systems. in Proceedings 1999 Design Automation Conference (Cat. No. 99CH36361) 134–139 (1999). doi:10.1109/DAC.1999.781298.

[5] Shin, Y., Choi, K. & Sakurai, T. Power optimization of real-time embedded systems on variable speed processors. in IEEE/ACM International Conference on Computer Aided Design. ICCAD - 2000. IEEE/ACM Digest of Technical Papers (Cat. No.00CH37140) 365–368 (2000). doi:10.1109/ICCAD.2000.896499.

[6] S. Lim, Y. Bae, G. Jang, B. Rhee, S. Min, C. Park, H. Shin, K. Park, and C. Kim, “An accurate worst case timing analysis for RISC processors,” in Proc. IEEE Real-Time Systems Symposium. pp. 97-108, Dec. 1994.

[7] Y. S. Li, S. Malik, and A. Wolfe, “Performance estimation of embedded software with instruction cache modeling,” in Proc. Int’l Conf. on Computer Aided Design, pp. 380-387, Nov. 1995.

96-00年CPU功耗感知调度研究的更多相关文章

  1. 90-95年CPU功耗感知调度研究

    最近读了三篇1990-1995年的通过调度来降低cpu能耗的文章[1] [2] [3],简单总结一下该年代单核CPU功耗感知的调度策略. Motivation 随着便携式设备逐渐兴起,人们对降低其功耗 ...

  2. CPU的自动调度矩阵乘法

    CPU的自动调度矩阵乘法 这是一个有关如何对CPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度 ...

  3. 使用XTU降低CPU功耗,自动执行不失效

    INTEL出品的XTU可以用来做软超频操作,给CPU/GPU加电压超频,也可以通过降低CPU/GPU电压来减少功耗. 以前用XTU设置好了之后,过一段时间就自动失效了,最近失效的频率突然很高,于是找了 ...

  4. 操作系统概念学习笔记 10 CPU调度

    操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...

  5. OS之进程管理---实时CPU调度

    引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...

  6. 操作系统学习笔记:CPU调度

    CPU调度的目的在于提高CPU利用率,不让CPU闲着.CPU是宝贵的资源,如果有一个进程,本来在CPU中运行,忽然因为要使用IO资源,于是转而请求IO,这边CPU挂起,造成就绪队列中的其他进程等待,这 ...

  7. CFS调度器

    一.前言 随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了.这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭.我有一个循序渐进的方法,那就是先 ...

  8. Linux性能优化从入门到实战:02 CPU篇:平均负载

    每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或 uptime 命令: $ uptime 22:22:17 up 2 days, 20:14, 1 user, load average: ...

  9. [原] Cgroup CPU, Blkio 测试

    关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...

随机推荐

  1. Python - __all__ 变量

    import * 当我们向文件导入某个模块时,导入的是该模块中那些名称不以下划线(单下划线 _ 或者双下划线 __ )开头的变量.函数和类 因此,如果不想模块文件中的某个对象被引入到其它文件中使用,可 ...

  2. 活动回顾|ShardingSphere X openGauss,将会产生怎样的化学反应?

    "ShardingSphere 作为 openGauss 生态的开源分布式数据库解决方案,将持续助力于 openGauss,满足千行百业广大客户分布式场景需求." 5月29日,由  ...

  3. 洛谷2900 [USACO08MAR]土地征用Land Acquisition (斜率优化+dp)

    自闭的一批....为什么斜率优化能这么自闭. 首先看到这个题的第一想法一定是按照一个维度进行排序. 那我们不妨直接按照\(h_i\)排序. 我们令\(dp[i]\)表示到了第\(i\)个矩形的答案是多 ...

  4. PostMan生成的测试报告 工具node.js、步骤、结果

    Postman生成测试报告的工具node.js 1.下载并安装: win系统(下载后一直下一步就好了) mac系统  2.配置环境 (1).在命令提示符里面输入npm 检验安装是否成功可以输入命令:n ...

  5. Windows10使用技巧

    Windows10配置技巧 新机配置 "我的电脑"图标设置 在桌面右击鼠标=>个性化=>点击左侧"主题"=>点击相关的设置中的"桌面 ...

  6. leetcode 5/300 最长回文子串 py

    目录 题目说明 方法一:动态规划--状态转移方程 方法二:优化中心扩展算法 题目说明 要看明白求得是什么,最长回文字串是指例如cababa中ababa是最长的,不是求回文的部分aba 方法一:动态规划 ...

  7. CICD 流水线就该这么玩系列之一

    今天给大家分享的是 DevOps 世界中非常流行的一个 GitOps 工具 - Argo CD.如果你还不知道什么是 GitOps,欢迎留言告诉我,根据热度,我会再写一篇详细讲解 GitOps 的文章 ...

  8. 请问为什么要用三极管驱动mos,直接用mos有什么缺点呢?

    可能无法完全导通,电流可能过小使导通所需时间变长,最终导致发热严重       回复 举报     csaaa DIY七级 3# 发表于 2016-7-12 14:11:59 直接驱动mos也没什么问 ...

  9. 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接建立---三次握手、tcp连接释放---四次握手)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105516090 学习课程:<2019王道考研计算机网络> 学习目的 ...

  10. Python网络爬虫实战入门

    一.网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序. 爬虫的基本流程: 发起请求: 通过HTTP库向目标站点发起请求,也就是发送一个Request ...