省電力計算機アーキテクチャ
省電力計算機ア
キテクチャとOSの資源管理～細粒度PGアーキテクチャとOSの連携～
並木美太郎（東京農工大学）

20120119ARC&ICD

1

話者の生まれと育ち
1983年からOS屋 プログラミングやソフトに興味を持っていた
 特に、プログラムの実行基盤としてのOSなどのシステ、
実ムソフトウェア OS以外にも、コンパイラ、インタプリタ、ライブラリ、ウィ以外 も、 ン イラ、インタ リタ、ライ ラリ、ウィンドウシステム、プロトコルスタックなどのシステムソフ
ト、UIなども
 横断分野では、並列分散処理、情報教育なども ハードは好き(はんだごて、ラッピング...)
ハ ドは好き(はんだごて、ラッピング...) 去年までIPSJ OS研の主査...
2

OS～偉大なる中間管理職～
偉 な管
アプリケーションリケ
アプリケーション

アプリケーション

アプリケーション

応用プログラム層

・・・(ハードウェア独立)(ハドウェア独立)

ライブラリ
資源管理層

プロセス管理

ファイル
システム

メモリ管理

ウィンドウ プロトコル
システム スタック

OS層
ハードウェア
ウCPU

主記憶

入出力装置20120119ARC&ICD

3

OSの使命ハードウェアなどの仮想化：CPU、メモリ、I/O
 資源管理：最適割当て
資適割 保護←本質は概念創出、方式として汎化
 これらをAPIとして、AP(応用プログラム)に提供すること
れ を、 ( 用グラ ) 提供する
 応用層の知識は必須
 ハハードウェアドウェア、計算機ア
計算機アーキテクチャを知らないとできない
キテクチャを知らないとできない←自分はこの両方ができるから面白いと思った「ハード、ソフトって分類、関係ないよね」(人によってはソフトで仮想化と美の極致)
4

中間管理職は...
管
アプリケーション
アプリケション

応用プログラム層

プロセス
管理

ライブラリ
ファイル
システム

メモリ管理

OS層
ハードウェアCPU

主記憶

アプリケーション

アプリケーション

アプリケーション・・・

新しい応用、ニーズ

実行モデル、資源モ
実行モデル
資源モ
デル、システムコー
ルの仕様、意味...

応用ソフトの安定性、継続性
ウィンドウ プロトコル
システム スタック ある意味、保守的的でストイック
トイ ク変革新しいアーキテクチャ
ア キテクチャ
入出力装置 新しハードウェア
20120119ARC&ICD

5

近年のOS研究のトレンド上位層からクラウド、セキュリティ→分散、VMM(仮想化)
モバイル、ユビキタス→携帯、センサ系
ビ 計算機ア
計算機アーキテクチャから
キテクチャからマルチコア、メニーコア→HPC、組込み
省電力

20120119ARC&ICD

6

電源ON/OFF
電源 クロック
 電圧
 割当て
う組 合わ
高速小容量高消費電力 vs ←どう組み合わせて隠蔽するか
低速大容量低消費電力バランスさせるかラ

どう調停するか
20120119ARC&ICD

7

計算機の電源管理
単位：ラック、マシン全体、CPU/メモリ/IOな//どの構成部品、個々の構成要素
 構成要素の挙動特性
 ユースケース 時間粒度、空間粒度
階層によ て異なる階層によって異なる→研究分野でも切れている

20120119ARC&ICD

8階層ごとの特徴：役割分担は変わる↑↑マクロシステム全体

プロセス管理

ファイルシステム

ページ(数KB)単位
1ク ック
1クロック
1bit～数Kbit～数10クロック・・・・APごとの省電力アルゴリズム
・APごとの資源の個別最適化
・コンパイラによる最適化コード
応用プログラム層

ライブラリ

マシンのみ

≧100μS(10K命令以上)

アプリケーション

数100KB～数TB以上アプリケーション

数秒、数秒
数日、数年

・センサ、ユーザの行動特性の利用

効果

制御できる
時間粒度 空間粒度

メモリ
管理・ハードウェアの制御
ウィンドウ プロトコル ・システム全体の挙動監視システム スタック
・動的な資源割当て
動的な資源割当て
OS層

基本要素であり、数が多い

↓ミクロ

CPU

主記憶入出力装置

・細粒度、実制御
ハードウェア回路
材料
20120119ARC&ICD

9省電力とOS
サーバ系- DNSラウンドロビン- VMM(仮想機械モニタ)を使ったサーバ集約
 データセンターで実用化
デ タセンタ で実用化
 負荷が少ないときにマシンの電源を落とす
 判断はログベース、統計的解析と予測、学習 数分から1時間程度の単位


20120119ARC&ICD

10省電力とOS

PC系：ACPI(Advanced Configuration
gandPower Interface)の利用 suspendの状態- ディスプレイ、HDDの自動電源断/再起動- 電源制御用の8bit μPはいつも通電

組込み センサネットワーク系：TinyOSでもバッテリ駆動の要求から、イベント駆動で間欠的なプログラム実行

20120119ARC&ICD

11

資源管理からはプロセス実行のDVFS(Dynamic( yVoltage
gand Frequency Scaling)
挙動予測から省電力になるようCPUをDVFS制御
 マルチコア制御
低負荷時のコア電源断 DVFS制御
低負荷時のコア電源断、DVFS制御
これらをサーバ、PC、組込みシステム、リアルタイムシステムに適用した例
適例


20120119ARC&ICD

12

メモリ管理：計算機の記憶階層のどこで、どうメモリ管理
計算機の記憶階層のどこで どうやるか (パネルででも)※μアーキテクチャでは内部に隠ぺいされた大量のFF群
1clock1～数clock
数～数10clock

数10～1KB以下

プロセスコンテキストンテキ

数KB

L1

数10KB～MB

L2
キャッシュキャシ
メモリ

数10～clock 数100M～GB数100μs～数10ms
数100G～TB

レジスタ

高速小容量

緩和的フラッシュ
プロセス間の相性
L3

主記憶

2次記憶

広域ネットワーク上のデータ↓従来のOS
メモリ管理
ファイルシステム

低速大容量13

メモリ管理低電力なキャッシュ割当て
 SPM(Scratch Pad Memory)の利用必要な部分をSPMに移動して 主記憶の必要な部分をSPMに移動して、主記憶の電源断を行う


20120119ARC&ICD

14

ファイルシステム
SSD(Solid(State Drive)の利用)
HDDに対するアクセスの高速化、低電力化
 ファイルシステム(ログベース)、ブロックデバイスとして利用
 記憶域の有効利用、書込み時間、書換え
記憶域の有効利用 書込み時間 書換え
上限が課題

20120119ARC&ICD

15

OSによる電力制御
観測と制御- OSはシステム全体の利用状況はわかる- 資源割当てと調停の全権←トレードオフ資源割当てと調停の全権 トレ ドオフ
 時間の単位は比較的粗粒度：≧1ms(頑張って100μs)
 記憶の割当てはページサイズ程度(数KB)
 例外 or system callで起動され、実行される
 これ以上は、パフォーマンスカウンタからの観測結果から戦略を決定

20120119ARC&ICD

16

今日は何度も出ている式
Poni= AnCV2f + nIleakVP = ΣPoni

空間分割は、構成方式やアーキテクチャ、空間分割は構成方式やア キテクチ
OSやランタイムの分割方式
 時間軸制御：ユニットのon/off制御→これをソフトとハ ドでどうするか→これをソフトとハードでどうするか

20120119ARC&ICD

17

新しいハードウェアとOS
細粒度PG Geyser CPUとそのOS←演算器でのPG、一過的 マルチコア/メニーコアの省電力制御←4～8コアはAMD Phenomでやってみた
アクセラレータ系はいずれまた 状態・記憶系←ノ マリオフ：状態保持 パネルで←ノーマリオフ：状態保持、パネルで20120119ARC&ICD

18

OSと省電力アーキテクチャの協調事例～細粒度PGの例～
細粒度 G 例

20120119ARC&ICD

19

戦略的創造研究推進事業CREST「情報システムの超低消費電力化を目指した技術革新と統合化技術」 お合化技術」において
「革新的電源制御による次世代超低電力
高性能システムLSIの研究」
アーキテ アクセラレ
回路ータ、CPU
クチャ
実装((芝工大(東大(慶応大宇佐美研)中村研)
天野研)

コンパイラ
(東大中村研
電通大近藤研)回路からOSまで協調OS
並木研担当

20

細粒度PG Geyser CPU
細粒度PG(Power Gating)が一つのテーマ Geyser CPU：MIPS R3000をベース
を
 ALU、SHIFT、MUL、DIVの4ユニットそれぞれで、１命令ごとにユニットを使わなければ電源を切る
VDD

ALU
ALU
Unit

MULT
MULT
Unit

SHIFTONOFF

DIV

OFF

OFF
SleeppController
GND

20120119ARC&ICD

21

細粒度PGの課題(1)(1) 適切なスリープポリシーの設定


スリープ時の電力モデル
オーバヘッド（B,D）よりも削減電力(E)が大きくなる
スリープ期間（損益分岐点）をBEP(Break Even Point)と定義
 短い期間でON/OFF繰返すと電力増大→PGせず、アクティブの方が良い
 BEPを下回るスリープ(BEPミス)が頻発
プ
すると電力ロスにつながる

最小1命令サイクルでスリープ→適切なスリープポリシー、適切なスリ プポリシ 、コードの利用が必要
20120119ARC&ICD

22

細粒度PGの課題(2)(2) 温度によるBEPの変化
 リーク電力は温度によって変わる→BEPも変わる→実行時に適切なスリープポリシーを選択する
プポリシ を選択する
必要有

BEP

例 SHIFTのスリ
SHIFTのスリープ時間の分布
プ時間の分布20120119ARC&ICD23

方針(1)
ソフトとハードの役割分担- 細粒度は回路とハードで頑張る、粗い流度と比較的長い時間(≧1ms程度)をOSから制御- ソフトは観測結果から基本方針/戦略の選択制御- ソフトウェア制御可能な機能をCPUに追加20120119ARC&ICD

24

方針(2)
実行時(動的)情報を活用()- 静的解析可能なものはコンパイラで、実行時の情報を基にOSが制御- 実行時情報の収集機能の追加
各種パフォーマンスカウンタ
キャッシ ヒット/ミスなどのほかにキャッシュヒット/ミスなどのほかに、()
リークモニタ(温度)、PG統計採取をハードで追加
20120119ARC&ICD25

Geyser CPUの持つPG制御機能(1)

ソフトウェア(OS)でスリープポリシーを制御

PG実施方針（スリープポリシー）(1) 動的にパワーゲーティング
動的にパワ ゲ テ ング
(2) キャッシュミス時のみスリープ(3) 常にアクティブ（スリープしない）
常にアクティブ（スリ プしない）



スリープポリシーを演算器ごとに制御可能 細粒度PGのインタフェース（特権レジスタ:細粒度PGのインタフェ ス（特権レジスタ: PGStatus)
CP0レジスタの一つとして実装
2bit

2bit

2bit

2bit

ALU

ShiftMultDiv

00 : 動的PG(通常ポリシー)
01 : キャッシュミス時のみスリープ
20120119ARC&ICD

11 : 常にアクティブ26

Geyser CPUの持つPG制御機能(2)CP0の他に、R形式の命令形式でスリープ
CP0の他にR形式の命令形式でスリ プ
しないものを追加 (Opを別の値でFunctは同じ)
 コンパイラの研究用
コン イラの研究用
MIPSではR形式のOpでONの命令を追加
add
multsubdiv

add
multsub
div

off
PG
off
PG

20120119ARC&ICD

27

Geyser CPUの実装とテストベッド
Geyser 0,1,2,3
Geyser-0
1 2 3 と三つのバージョン
 VDECで実チップ化
 現在、Geyser-3のテスト中 本体は主として慶應大学が実装
 並木研でCP0を追加修正、テ木研を追 修 、テストと全体の修正、OS実装
 FPGA上にも移植：独自組込
みOS(開聞)、Linuxが稼働
FPGA版でOS開発と評価

実チップはI/O、主記憶をFPGAで20120119ARC&ICD

実チップ

28

ML501,ML605 Evaluation Platform, Spartan-6
FPGA

Geyser Core
デバッグ用モジュール群
デバグ
ジ群
Performance Counter群

Cache Memory

GLB(Geyser Local Bus)
GLB-PLBGLB
PLB Bus Bridge
PLB(Processor Local Bus)
Main
MemoryController

SRAM
Controller

Flash
MemoryController

Compact
Flash
Controller

UART
Controller

GPIO
Controller

Interrupt
Controller

Timer

デバイスドライバは μBlaze用
バは、μBlaze用を流用

FPGA上で実行しながら実時間でデータを採取、OSで活用できる

使用後毎回PG
使Shifter
ベンチマーク:
ンチマ ク: Blowfish
熱環境: 56-77 [℃]
リーク電力削減率: 36.1%

BEP

提案手法

各ユニットの使用頻度

BEP30

リークモニタ、パフォーマンスカウンタなど
リークモニタ(担当：芝工大)はon chip化、CPUから読出せる設計
 PG状況：プロセッサ内部のPG信号線をチップ外まで引き回して、4ユニットのON/OFF状況を外部から計測可能でカウンタ ク ックの リ プが 回→FPGAでカウンタ：nクロックのスリープがm回の頻度情報(m=C(n))を作成、OSから読み出す設計
 これら以外も大幅にRTLを修正
OS屋がアーキテクチャを直接変更できるメリット(ただし、実チップの配置配線は餅は餅屋)
20120119ARC&ICD

31

細粒度PGプロセッサ向けのOS研究
BEPミス率を減らすスケジュ ラ(開聞,Linux)
BEPミス率を減らすスケジューラ(開聞Linux)
 温度に適応するスケジューラ(開聞,Linux*) 温度に適応する最適化コードを選択するOSメ
モリ管理(開聞,Linux )モリ管理(開聞,Linux*)↑細粒度PGの効果保証をOSでリアルタイムOSとPG制御(開聞*)( は近日中に発表予定)(*は近日中に発表予定)
20120119ARC&ICD

32

BEPミス率を減らすOSスケジューラ

20120119ARC&ICD

33

BEPミス率を勘案したOSスケジ
ミ 率を勘案したO ケジ
ューラ

電力的に不利となるパワーゲーティングがどれくらいあるかの指標
 パワーゲーティングによりスリープした全サイクル数のうち、BEPを越えないサイクル数の割合
 BEPミス率が大 → 電力的に不利となる細かい/ON/OFFが多い
BEPサイクル

BEPミス率 =i = 1

i

サイクルスリープした回数
リした回数× iiサイクiサイクルスリープした回数× i
20120119ARC&ICD

34

プロセスごとのパワーゲーティン
プ
セスごとの ワ ゲ ティング制御

プロセスは処理内容によって使用する命令などの特徴に偏りがある ユニットの使用頻度はプロセスによって変化する
ユニ トの使用頻度はプロセスによ て変化する→プロセスごとにパワーゲーティングを制御
プロセスごとにそれぞれスリープポリシを持たせる
 プロセスのコンテキストスイッチにより切り替え
パワーゲーティング制御アルゴリズム

スリープ
ポリシ

プロセス

スリープ
ポリシ

プロセス

スリープ
ポリシ

プロセス

35

PG制御アルゴリズム
パワーゲーティング制御アルゴリズム
スリ プのパフォ マンスカウンタからBEPミス率を取得
スリープのパフォーマンスカウンタからBEPミス率を取得
 BEPミス率と閾値を比較して、スリープポリシを決定

BEPミス率が閾値を上回る→電力的に不利なパワーゲーティングが多い→パワーゲーティング動作を粗粒度にするようOSで制御



BEPミス率が閾値を下回る
率 閾値を 回→パワーゲーティング動作を細粒度にするようOSで制御

ハードが自律的にPG

キャッシュ
ミス時のみ
PG

PGせず
常にアクブ
ティブ

20120119ARC&ICD

36

評価：スリープ時平均リーク電力
スリープ時平均リーク電力を評価 ベンチマークをシングルタスクで実行
制御なし時に比べ3.0～23.2%削減
 とくに行列計算の電力削減効果が大



[μW]

パワーゲーティング制御なし
グ
600

350
300

180

400

180

160

160

140

140

350

500

250

400

120

200

200

0025℃ 100℃

25℃ 100℃

400

150

60

60

40

40

20205000025℃ 100℃

300
250
200

80

100

150

60

100

025℃ 100℃

10040

5025℃ 100℃

350

100

80

10050

180

120

150

100

80

450

140

200

150
100

200

250

300

200

160

300

120

100250

パワーゲーティング制御あり
グ

25℃ 100℃

20120119ARC&ICD
クイックソート 行列計算 Dhrystone ダイクストラ
Blowfish ビットカウント

20500025℃ 100℃25℃ 100℃

37FFT Whetstone

温度変化に適応するOSスケジューラ20120119ARC&ICD

38

本研究の目標

温度に適応するスリープポリシー制御方式の実現
 各演算ユニットのBEPが温度により変化する点に着目
 温度に適応するスリ温度に適応するスリーププ
ポリシーを選択
 細粒度PGの効果を高める
温度が変化する条件を温度変化する条件を仮定した電力削減効果を評価
 温度の変化をエミュレーション
 スリープポリシー制御手法の妥当性を実証
20120119ARC&ICD

39

スリープポリシー決定アルゴリズム
温度が低いときのBEPミス頻度



温度に適応するスリープポリシーの決定
 BEPの温度変化を考慮し
θPGの時間粒度を決定

ロス大

1

BEP

n1n1

頻度

θ2n2
θ1

θ2

温度

サイクル数
温度が高いときのBEPミス

ロス
小n2

サイクル数

温度閾値θTHを設定して「動的PG」 と「キャッシュミス時のみスリ プ」 を切り替え「キャッシュミス時のみスリープ」
スリープポリシーの制御モジュール 閾値温度設定部：スリープ頻度情報から閾値温度θTHを決定 スリープポリシー制御部：温度に適応するスリープポリシーをコアに設定
20120119ARC&ICD40

閾値決定方法

温度閾値θTHを決めるためのサイクル数nTHの設定方法（メリットとデメリット）(方法1) アドミッションテストにより事前に得た情報を用いる方法
 スリープ頻度の計測モジュールが必要ない
スリ プ頻度の計測モジュ ルが必要ない
 スリープ頻度特性の判定が不要
 スリープ頻度特性がタスクにより変わるため効果が得にくい(方法2) 実行時の情報を用いる動的方法
 スリープ頻度の計測モジュールが必要 スリ
スリープ頻度特性の判定が必要
プ頻度特性の判定が必要
 タスクの性質により動的に閾値を設定可能
スリープ頻度から閾値温度を決定
スリープ頻度分布の中央値にBEPが一致する温度
リ プ頻度分布 中央値にが 致する温度
ただし実行時にスリープ率の高いユニットは温度による制御をせず「動的PG」ポリシー固定（適用可否判定）
tsleepAll: 全スリープサイクル数mn: nサイクルスリープの頻度

20120119ARC&ICD

41

評価基盤への実装(1) アドミッションテスト方式による
スリ プ頻度制御機構の実装
スリープ頻度制御機構の実装
オーバヘッドあらかじめ決めた閾値温度を保持
0.25%

タイマ割込みで起動
温度に適応したスリープポリシーを
度 適応 たプポをユニットごとに選択しGeyserコアのPGStatusレジスタに書き込み
Geyser OS

例外処理部
タイマ割込みプロファイル
データからの閾値情報

sleep_policy_control

各ユニットの閾値温度

θTH

θTH

スリープポリシー
設定部

タイマ割込みSyscall例外

タスク
スケジューラシステムコール部

get_temperature

スリープポリシー
制御機構
set_sleep_policy

20120119ARC&ICD
Geyser

コア温度
ア温度
エミュレーション部

42

評価基盤への実装(2) 実行時情報を用いる方式によるスリープポリシー制御機構の実装

タイマ割込みでスリ プポリシ 制御機構を起動
タイマ割込みでスリープポリシー制御機構を起動
スリープ頻度から閾値温度を設定
閾値温度と，適用可否判定のフラグを保持
Geyser OS

例外処理部
タイマ割込みタイマ割込みSyscall例外
Sysca
例外

タスク
スケジューラシステムコール部

sleep_policy_control

スリープ頻度 m

実行時のスリープ頻度情報

閾値温度設定部変更
各ユニットの閾値温度

スリープサイクル数
スリ
プサイクル数 n

θTH

温度閾値によるスリープ
ポリシー制御の実施可否

flag

スリープポリシー制御機構
スリープ頻度計測
モジュール

スリープポリシー
設定部

get_temperature

コア温度
エミュレーション部

set_sleep_policy

20120119ARC&ICD
Geyser43

評価結果（平均リーク電力）
(1) アドミッションテスト方式

最小 -2.5% (Whetstone)， 最大 38% (Matrix) 平均リーク電力を削減
演算ユニット全体でリーク電力を平均約12%削減(2) 動的決定方式

最小 4.0% (Blowfish)， 最大 16% (Dijkstra) 平均リ
平均リーク電力を削減
ク電力を削減

演算ユニット全体でリーク電力を平均約9%削減

20120119ARC&ICD

44

温度に適応する最適化コードを選択するOSメ リ管理
選択するOSメモリ管理

20120119ARC&ICD

45

研究目標


コア温度変化の影響の隠蔽¾



コンパイラとOSとの協調動作¾



コア温度変化に伴うBEPの変動への対処

静的解析と動的制御を組み合わせたPG制御

実行時コア温度変化に基づくオブジェクトコード管理¾

実行時コア温度変化に基づいてOSがオブジェクトコードを切り替え実行

パワーゲーティングによる消費電力低減効果の向上
20120119ARC&ICD

46

提案手法の概要
Operating System
1) 特定コア温度向けに最適化
sourcecode

compilerilobjectbjcode
for 125℃
objectcode
for 25℃

Core Temperature2) コア温度に応じて切り替え

objectcode
for 65℃
Geyser3) 命令に基づくパワーゲーティング
Hardware20120119ARC&ICD

47

温度に適合したコードを実行する
温度に適合したコドを実行する
メモリ管理
仮想アドレス空間
仮想 憶
仮想記憶により各タスクに一意の仮想アドレス空間を提供
各意 仮想 ド空提供

テキスト領域の多重化¾¾

各コア温度向けに 意のテキスト領域を提供
各コア温度向けに一意のテキスト領域を提供
コア温度変化に基づくテキスト領域の動的切り替え
stackstackCore Temperature
65℃

t t
text

stack
Core Temperature
125℃

heapheap

heap

data

data

data

For 65℃

For 125℃

For 125℃
For 65℃
F 25℃
For20120119ARC&ICD

48

コード管理：コアごとに応じたコードの管ア
切り替えApplication Program
Object file
ELF header
Program header
Program header
Program header
Program header
F 25℃
For

Operating System

ヘッダ参照
2) コード選択

For 65℃

CoreC
Temperature

65℃

For 125℃

1) コア温度取得
3) ロードMemoryCCPUcore
20120119ARC&ICD

PageP
fault
49

評価(1)
評価(1)
消費リーク電力の評価(1)


全温度平均
¾

実行時オーバヘッ
ドは3.2%

PGを行うことで消費リーク電力を大幅に削減
最も効果の高い提案手法（ⅳ）では平均77.3%削減

提案方式(ⅳ)¾ハードウェア自律（ⅱ）との比較
ドウ
自律（ ）と 比較¾コンパイラ単体（ⅲ）との比較: 最高55.7%,平均35.0%削減
最高平均
削減: 最高15.6%,平均5.5%削減

50

評価(2)
評価(2)
消費リーク電力の評価(2)
25℃
¾
¾

一般的に低温下ではBEPが短いためPGによる省電力効果は低い
手法ⅲ,ⅳは低温下でも効果を発揮

提案方式(ⅳ)( )¾ハードウェア自律（ⅱ）との比較¾コンパイラ単体（ⅲ）との比較: 最高60.7%,平均37.6%削減: 最高24.5%,平均4.9%削減

51

まとめ
計算機システムの省電力化においても、算機、OSの役割は重要
 ただし、粗粒度
ただし 粗粒度
 細粒度PG：資源管理のモデルと実行時情報に基づく資源管理手法
 階層を越えた研究 新しいハードウェアへの対応

20120119ARC&ICD

52

さらなる効果を目指すには
今日の話は演算器系のみ
 普通のCPUには：キャッシュ,TLB,回路内FF 状態保持の多い制御系と一過性の計算主体の演算系の徹底分離
onにすべきところだけon, そこを減らす→メニーコアのアクセラレータ
メニ コアのアクセラレ タ
いずれ、また(格闘中)() メモリ、どうする？
→パネルへ続く

53