90-95年CPU功耗感知排程研究

扶磐發表於2021-11-21

最近讀了三篇1990-1995年的通過排程來降低cpu能耗的文章[1] [2] [3],簡單總結一下該年代單核CPU功耗感知的排程策略。

image-20211121095504410

Motivation

隨著行動式裝置逐漸興起,人們對降低其功耗的研究開始出現,而在這之前,人們對計算機功耗的研究主要集中在顯示和磁碟上,有研究表明,計算機系統中顯示佔總功耗的68%,磁碟讀寫佔20%,而CPU只佔12%[4]。其降低功耗的策略主要是power-down-when-idle,即不使用的時候就關掉裝置。學者們逐漸意識到行動式裝置通常沒有磁碟,且在顯示上消耗的能源並不是很多,對於這種裝置,CPU成為了功耗的主要來源,而簡單地將cpu在不用的時候關閉並不是最好的選擇,因此需要使用其他手段來降低CPU的功耗。

當時對CPU低功耗的研究可以大致分為以下兩個層次:

  • circuit level

    這不是我們關注的重點,大概有下面幾種技術:

    • adiabatic switching

    • reversible logic

    • self-timed circuit[6]

      通過訊號進行握手,計算複雜度(延遲)依賴資料,由於避免了冗餘的反轉,節省功耗。

  • operating level

    這一層級是我們的關注的重點,之前上一篇部落格已經告訴我們動態功耗和電壓頻率的關係,那麼簡單來說通過減少電壓或者頻率可以達到功耗的降低。調整電壓和頻率很簡單,但是知道在什麼時候調整以及調整到什麼水平卻很難,所以作業系統層面的工作在於在“適當的時候”調整電壓和頻率。

Metric

在我們講解作業系統排程策略之前,必須要加入這一章節,來介紹一下衡量排程策略好壞的指標,通常有以下幾個物理量可以作為metric[5]:

  1. power:這並不是一個好的metric,因為它和頻率成正比,降低頻率可以實現power的降低,但同時會造成任務執行時間邊長,總體上看一個任務消耗的能量是一樣的。
  2. energy:通常用Jules/Instruction或其倒數SPEC/W來表示(SPEC是用來衡量CPU效能的指標,類似於頻率或MIPS等),相同的表示還有power/performance和energy/throughput,該metric和供電電壓的二次方成正比,比power指標要好,但這個指標也有一定的問題,處理器設計領域中,在衡量處理器的energy efficiency時,一個供電電壓很低同時效能也很低的處理器和一個供電電壓很高效能也很高的處理器,前者的energy肯定是要比後者要低的,但不代表前者在同等效能下,功耗會比後者低,有可能後者在高效能的條件下也將低功耗技術做到了極致,但是在energy這個metric上體現不出來。
  3. EDP(Energy Delay Product),我們通常想要的是同等效能下最小功耗或者同等功耗小最大效能,因此需要同時考慮energy和delay兩個物理量,最簡單的方法是令兩者相乘(Jules/SPEC或其倒數SPEC^2/W),類似的還有EDDP等,這些指標更注重效能表現。

通常我們在排程演算法中常見的metric是energy,最小化一個任務執行的energy是低功耗排程策略的目標。

Schedule

還是需要簡單指出,三篇文章的背景均僅限於單核CPU下的功耗感知排程。

[1]工作最早,使用的energy metric為MIPJ,該metric不隨時脈頻率變化而變化,文章通過$E/clock \propto V^2$的關係指出降低供電電壓可以實現大幅度energy減少,而電壓和頻率通常是線性關係,因此適當的降低頻率減慢任務的執行可以減少energy。舉個例子,一個任務要求100ms做完,普通系統全速執行50ms完成,然後進入idle等待50ms(假設不消耗energy),而如果可以降低電壓,用一半的速度執行100ms正好完成,則Energy是原來的1/4。原因在於任務消耗的clock是一樣的,但後者電壓是前者的一半。通過這個例子,作者認為全速執行進入idle狀態大大浪費了energy,因此應儘可能地晚點完成任務,減少在idle loop中的時間。

Put simply, the tortoise is more efficient that the hare

揣著這個目標,作者開始做實驗了,其資料是從UNIX workstations上獲取了一定時間範圍內很多工的資訊,將他們劃分為run_cycle和idle_cycle,並給出了以下假設:

  1. idle時不產生能量消耗
  2. energy和速度的平方成正比,而速度是平滑的(在下界和1.0中間變化)
  3. 轉換速度不消耗時間
  4. 電壓調節的範圍有5、3.3、2.2和1,5V是速度的上界,後面三個電壓給定了速度變化的下界,分別代表0.66、0.44和0.2。舉個例子,當在3.3V情況下模擬時,其速度變化範圍為[0.66, 1]。

基於上面四個假設,作者提出了三個演算法:

  • unbounded-delay perfect-future(OPT)

    上帝視角,儘可能延長run_cycle,減少idle_cycle,是功耗最低的排程演算法。

    • impractical:需要對未來有充分了解。
    • undesirable:產生巨大延遲,沒有考慮到real-time event的相應需求。
  • bounded-delay limited-future(FUTURE)

    和OPT一樣,也需要對未來有一定了解,但是存在一個小的window

    • impractical:也需要對未來有一定了解
    • desirable:延遲不會超過window時間
  • bounded-delay limited-past(PAST)

    存在一個小的window,根據過去window中的run_cycle和idle_cycle來調整執行速度,並在未來的一個window中以該速度執行。

我們主要關注有一定可行性的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的任務均有以下引數:

  • $a_j$ 到達時間
  • $b_j$ 截止完成時間(Deadline)
  • $R_j$ 需要的時鐘週期數

排程是定義在[to, t1]上的一對函式S = (s, job)

  • s(t) >= 0定義為t時刻處理器的速度
  • job(t)定義為t時刻處理器執行的任務

s和job均為分段常量函式

對於任務集J,一個合理的(feasible)排程滿足以下條件:
$$
\int_{aj}^{bj}s(t)δ(job(t), j)dt = R_j \quad for \ all \ j\ ∈\ J
$$
其中δ(x,y) = 1當x = y。總結來說對於每一個任務S必須滿足其在到達時間和結束時間之間執行一定的CPU cycle(有可能是間斷執行),我們假設能耗power是處理器執行速度的凸函式(convex function),則一個排程總體消耗的energy為
$$
E(S) = \int_{t0}^{t1} P(s(t))dt
$$
排程問題的目標被轉化為對於任何的任務集,找到一個合理的排程S且令E(S)最小。

作者在文章中給出了一個離線最優的排程演算法,重點是找出任務集J中的critical interval,根據critical interval計算得出critical job進行排程,然後刪除被排程的任務,重新計算critical interval,進行遞迴求解,最後得到一個feasible且功耗最低的排程。

Untitled

該演算法的時間複雜度為$O(nlog^2(n))$,可以看到複雜度還是比較高的。之後作者又給出了一個線上啟發式排程演算法:Average Rate,通過計算每個任務的平均速度$d_j = R_i / (b_j - a_j)$,然後將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).

相關文章