省電力計算機アーキテクチャ と 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
階層ごとの特徴 : 役割分担は変わる 制御できる時間粒度空間粒度 数秒 数日 数年 100μS (10K 命令以上 ) 数 100KB ~ 数 TB 以上 ページ ( 数 KB) 単位 マクロ 効果 システム全体 マシンのみ アプリアプー ケションライブラリ プロセスファイルメモリウィンドウプロトコル管理システム管理システムスタック リ センサ ユーザの行動特性の利用 APごとの省電力アルゴリズム APごとの資源の個別最適化 コンパイラによる最適化コード ーション応用プログラム層ケ ハードウェアの制御 システム全体の挙動監視 動的な資源割当て OS 層 1クロック基本要 ~ 数 10クロック 1bit~ 数 Kbit 基本要素であり 数が多い ミクロ CPU 主記憶回路材料 入出力装置 細粒度 実制御 ハードウェア 20120119ARC&ICD 9
省電力と OS サーバ系 - DNSラウンドロビン - VMM( 仮想機械モニタ ) を使ったサーバ集約 データセンターで実用化 負荷が少ないときにマシンの電源を落とす 判断はログベース 統計的解析と予測 学習 数分から 1 時間程度の単位 20120119ARC&ICD 10
省電力と OS PC 系 :ACPI(Advanced Configuration and Power Interface) の利用 suspendの状態 - ディスプレイ HDD の自動電源断 / 再起動 - 電源制御用の 8bit μp はいつも通電 組込み センサネットワーク系 :TinyOS でも バッテリ駆動の要求から イベント駆動で間欠的なプログラム実行 20120119ARC&ICD 11
資源管理からは プロセス実行のDVFS(Dynamic Voltage and Frequency Scaling) 挙動予測から省電力になるよう CPU を DVFS 制御 マルチコア制御 低負荷時のコア電源断 DVFS 制御 これらをサーバ PC 組込みシステム リアルタイムシステムに適用した例 20120119ARC&ICD 12
メモリ管理 : 計算機の記憶階層のどこで どうどうやるか ( パネルででも ) μ アーキテクチャでは内部に隠ぺいされた大量の FF 群 高速小容量 1clock 数 10~1KB 以下 1~ 数 clock 数 KB 数 ~ 数 10clock 数 10KB~MB 数 10~clock 数 100M~GB 数 100μs~ 数 10ms 数 100G~TB レジスタ L1 キャッシュメモリ主記憶 2 次記憶 プロセスコンテキスト緩和的フラッシュ L2 プロセス間の相性 L3 従来の OS メモリ管理ファイルシステム 広域ネットワーク上のデータ 低速大容量 13
メモリ管理 低電力なキャッシュ割当て SPM(Scratch Pad Memory) の利用 必要な部分を SPM に移動して 主記憶の電源断を行う 20120119ARC&ICD 14
ファイルシステム SSD(Solid State Drive) の利用 HDD に対するアクセスの高速化 低電力化 ファイルシステム ( ログベース ) ブロックデバイスとして利用 記憶域の有効利用 書込み時間 書換え書換え上限が課題 20120119ARC&ICD 15
OS による電力制御 観測と制御 -OS はシステム全体の利用状況はわかる - 資源割当てと調停の全権 トレードオフ 時間の単位は比較的粗粒度 : 1ms( 頑張って 100μs) 記憶の割当てはページサイズ程度 ( 数 KB) 例外 or system call で起動され 実行される これ以上は パフォーマンスカウンタからの観測結果から戦略を決定 20120119ARC&ICD 16
今日は何度も出ている式 Pon i= AnCV 2 f + ni leakv P = ΣPon i 空間分割は 構成方式やアーキテクチャ OSやランタイムの分割方式 時間軸制御 : ユニットの on/off 制御 これをソフトとハードでどうするか 20120119ARC&ICD 17
新しいハードウェアと OS 細粒度 PG Geyser CPU とその OS 演算器での PG 一過的 マルチコア / メニーコアの省電力制御 4~8 コアは AMD Phenom でやってみた アクセラレータ系はいずれまた 状態 記憶系 ノーマリオフ : 状態保持 パネルで 20120119ARC&ICD 18
OSと省電力アーキテクチャの協調事例 ~ 細粒度 PG の例 ~ 20120119ARC&ICD 19
戦略的創造研究推進事業 CREST 情報システムの超低消費電力化を目指した技術革新と統合化技術 において 革新的電源制御による次世代超低電力高性能システム LSI の研究 回路 ( 芝工大宇佐美研 ) アーキテクチャ ( 東大中村研 ) アクセラレータ CPU 実装 ( 慶応大天野研 ) コンパイラ ( 東大中村研電通大近藤研 ) OS 並木研担当 回路から OS まで協調 20
細粒度 PG Geyser CPU 細粒度 PG(Power Gating) が一つのテーマ Geyser CPU:MIPS R3000 をベース ALU SHIFT MUL DIV の 4 ユニットそれぞれで 1 命令ごとにユニットを使わなければ電源を切る VDD ALU ALU Unit SHIFT MULT MULT Unit DIV ON OFF OFF OFF Sleep Controller 20120119ARC&ICD GND 21
細粒度 PG の課題 (1) (1) 適切なスリープポリシーの設定 スリープ時の電力モデル オーバヘッド (B,D) よりも削減電力 (E) が大きくなるスリープ期間 ( 損益分岐点 ) を BEP(Break Even Point) と定義 短い期間で ON/OFF 繰返すと 電力増大 PGせず アクティブの方が良い BEPを下回るスリープ (BEPミス) が頻発すると電力ロスにつながる 適切なスリープポリシー コードの利用が必要 20120119ARC&ICD 最小 1 命令サイクルでスリープ 22
細粒度 PG の課題 (2) (2) 温度による BEP の変化 リーク電力は温度によって変わる BEP も変わる 実行時に適切なスリープポリシーを選択する必要有 BEP 例 SHIFTのスリープ時間の分布 20120119ARC&ICD 23
方針 (1) ソフトとハードの役割分担 - 細粒度は回路とハードで頑張る 粗い流度と比較的長い時間 ( 1ms 程度 ) を OS から制御 - ソフトは観測結果から基本方針 / 戦略の選択制御 - ソフトウェア制御可能な機能を CPU に追加 20120119ARC&ICD 24
方針 (2) 実行時 ( 動的 ) 情報を活用 - 静的解析可能なものはコンパイラで 実行時の情報を基に OS が制御 - 実行時情報の収集機能の追加 各種パフォーマンスカウンタ キャッシュヒット / ミスなどのほかに リークモニタ ( 温度 ) PG 統計採取をハード ( ) で追加 20120119ARC&ICD 25
Geyser CPU の持つ PG 制御機能 (1) PG 実施方針 ( スリープポリシー ) (1) 動的にパワーゲーティング (2) キャッシュミス時のみスリープ (3) 常にアクティブ ( スリープしない ) スリープポリシーを演算器ごとに制御可能 ソフトウェア (OS) でスリープポリシーを制御 細粒度 PG のインタフェース ( 特権レジスタ : PGStatus) CP0 レジスタの一つとして実装 2bit 2bit 2bit 2bit ALU Shift Mult Div 00 : 動的 PG( 通常ポリシー ) 01 : キャッシュミス時のみスリープ 20120119ARC&ICD 11 : 常にアクティブ 26
Geyser CPU の持つ PG 制御機能 (2) CP0 の他に R 形式の命令形式でスリープしないものを追加 (Opを別の値でFunctは同じ ) コンパイラの研究用 MIPS では R 形式の Op で ON の命令を追加 add mult sub div add mult sub div off PG off PG 20120119ARC&ICD 27
Geyser CPU の実装とテストベッド Geyser-0 0,1,2,3 123 と三つのバージョン VDEC で実チップ化 現在 Geyser-3のテスト中 本体は主として慶應大学が実装 並木研で CP0を追加修正 テストと全体の修正 OS 実装 FPGA 上にも移植 : 独自組込みOS( 開聞 ) Linuxが稼働 実チップは I/O 主記憶を FPGA で 20120119ARC&ICD 実チップ FPGA 版で OS 開発と評価 28
ML501,ML605 Evaluation Platform, Spartan-6 FPGA Geyser Core Cache Memory デバッグ用モジュール群 Performance Counter 群 GLB(Geyser Local Bus) GLB-PLB Bus Bridge PLB(Processor Local Bus) Main Memory Controller SRAM Controller Flash Memory Controller Compact Flash Controller UART Controller GPIO Controller Interrupt Controller Timer デバイスドライバは μblaze 用を流用
FPGA 上で実行しながら実時間でデータを採取 OS で活用できる 使用後毎回 PG Shifter ベンチマーク : Blowfish 熱環境 : 56-77 [ ] リーク電力削減率 : 36.1% BEP 各ユニットの使用頻度 提案手法 BEP 30
リークモニタ パフォーマンスカウンタなど リークモニタ ( 担当 : 芝工大 ) はon chip 化 CPUから読出せる設計 PG 状況 : プロセッサ内部のPG 信号線をチップ外まで引き回して 4ユニットのON/OFF 状況を外部から計測可能 FPGA でカウンタ:nクロックのスリープが m 回 の頻度情報 (m=c(n)) を作成 OS から読み出す設計 これら以外も大幅に RTL を修正 OS 屋がアーキテクチャを直接変更できるメリット ( ただし 実チップの配置配線は餅は餅屋 ) 20120119ARC&ICD 31
細粒度 PG プロセッサ向けの OS 研究 BEPミス率を減らすスケジューラ ( 開聞,Linux) 温度に適応するスケジューラ ( 開聞,Linux*) 温度に適応する最適化コードを選択するOSメモリ管理 ( 開聞,Linux*) 細粒度 PG の効果保証を OS で リアルタイム OS と PG 制御 ( 開聞 *) (* は近日中に発表予定 ) 20120119ARC&ICD 32
BEP ミス率を減らす OS スケジュ ーラ 20120119ARC&ICD 33
BEPミス率を勘案した OS スケジ ューラ 電力的に不利となるパワーゲーティングがどれくらいあるかの指標 パワーゲーティングによりスリープした全サイクル数のうち BEP を越えないサイクル数の割合 BEPミス率が大 電力的に不利となる細かい ON/OFF が多い BEP ミス率 = BEPサイクル iサイクルスリープした回数 i i = 1 i i サイクルスリープした回数 i 20120119ARC&ICD 34
プロセスごとのパワーゲーティン グ制御 プロセスは処理内容によって使用する命令などの特徴に偏りがある ユニットの使用頻度はプロセスによって変化する プロセスごとにパワーゲーティングを制御 プロセスごとにそれぞれスリープポリシを持たせる プロセスのコンテキストスイッチにより切り替え パワーゲーティング制御アルゴリズム スリープポリシ スリープポリシ スリープポリシ プロセス プロセス プロセス 35
PG 制御アルゴリズム パワーゲーティング制御アルゴリズム スリープのパフォーマンスカウンタから BEP ミス率を取得 BEPミス率と閾値を比較して スリープポリシを決定 BEPミス率が閾値を上回る 電力的に不利なパワーゲーティングが多い パワーゲーティング動作を粗粒度にするようOSで制御 BEPミス率が閾値を下回る パワーゲーティング動作を細粒度にするようOSで制御 ハードが キャッシュ PGせず 自律的に ミス時のみ 常にアク PG PG ティブ 20120119ARC&ICD 36
評価 : スリープ時平均リーク電力 スリープ時平均リーク電力を評価 ベンチマークをシングルタスクで実行 制御なし時に比べ3.0~23.2% 削減 とくに行列計算の電力削減効果が大 [μw] パワーゲーティング制御なしパワーゲーティング制御あり 350 600 180 180 400 200 450 300 250 200 150 100 50 500 400 300 200 100 160 140 120 100 80 60 40 20 160 140 120 100 80 60 40 20 350 300 250 200 150 100 50 250 200 150 100 50 180 160 140 120 100 80 60 40 20 400 350 300 250 200 150 100 50 0 0 0 0 0 0 0 0 25 100 25 100 25 100 25 100 25 100 25 100 25 100 25 100 クイックソート行列計算 Dhrystone ダイクストラ20120119ARC&ICD Blowfish ビットカウント FFT Whetstone 37
温度変化に適応する OS スケジュ ーラ 20120119ARC&ICD 38
本研究の目標 温度に適応するスリープポリシー制御方式の実現 各演算ユニットの BEP が温度により変化する点に着目 温度に適応するスリープポリシーを選択 細粒度 PG の効果を高める 温度が変化する条件を仮定した電力削減効果を評価 温度の変化をエミュレーション スリープポリシー制御手法の妥当性を実証 20120119ARC&ICD 39
スリープポリシー決定アルゴリズム 温度に適応するスリープポリシーの決定 BEPの温度変化を考慮し θ1 PG の時間粒度を決定 BEP 頻度 ロス大 n1 温度が低いときの BEPミス サイクル数 n1 頻度 温度が高いときの BEPミス n2 θ2 ロス小 θ1 θ2 温度 温度閾値 θthを設定して 動的 PG と キャッシュミス時のみスリープ を切り替え スリープポリシーの制御モジュール n2 サイクル数 閾値温度設定部 : スリープ頻度情報から閾値温度 θthを決定 スリープポリシー制御部 : 温度に適応するスリープポリシーをコアに設定 20120119ARC&ICD 40
閾値決定方法 温度閾値 θthを決めるためのサイクル数 nthの設定方法 ( メリットとデメリット ) ( 方法 1) アドミッションテストにより事前に得た情報を用いる方法 スリープ頻度の計測モジュールが必要ない スリープ頻度特性の判定が不要 スリープ頻度特性がタスクにより変わるため効果が得にくい ( 方法 2) 実行時の情報を用いる動的方法 スリープ頻度の計測モジュールが必要 スリープ頻度特性の判定が必要 タスクの性質により動的に閾値を設定可能 スリープ頻度から閾値温度を決定 スリープ頻度分布の中央値に BEP が一致する温度 ただし実行時にスリープ率の高いユニットは温度による制御をせず 動的 PG ポリシー固定 ( 適用可否判定 ) tsleepall: 全スリープサイクル数 mn: n サイクルスリープの頻度 20120119ARC&ICD 41
評価基盤への実装 (1) アドミッションテスト方式によるスリープ頻度制御機構の実装 あらかじめ決めた閾値温度を保持 タイマ割込みで起動 温度に適応したスリープポリシーをユニットごとに選択しGeyserコアのPGStatusレジスタに書き込み オーバヘッド 0.25% Geyser OS 例外処理部 プロファイルデータからの閾値情報 θ θth 各ユニットの閾値温度 θth スリープポリシー制御機構 sleep_policy_control タイマ割込みタイマ割込み Syscall 例外 スリープポリシー設定部 set_sleep_policy タスクスケジューラ get_temperature 20120119ARC&ICD Geyser システムコール部 コア温度エミュレーション部 42
評価基盤への実装 (2) 実行時情報を用いる方式によるスリープポリシー制御機構の実装 タイマ割込みでスリープポリシー制御機構を起動 スリープ頻度から閾値温度を設定 閾値温度と, 適用可否判定のフラグを保持 Geyser OS 例外処理部 タイマ割込みタイマ割込み Syscall 例外 sleep_policy_control スリープ頻度 m 実行時のスリープ頻度情報 スリープサイクル数 n 各ユニットの閾値温度 θth 温度閾値によるスリープポリシー制御の実施可否 flag 変更 閾値温度設定部 スリープポリシー設定部 タスクスケジューラ get_temperature システムコール部 コア温度エミュレーション部 スリープ頻度計測モジュール スリープポリシー制御機構 set_sleep_policy 20120119ARC&ICD Geyser 43
評価結果 ( 平均リーク電力 ) (1) アドミッションテスト方式 最小 -2.5% (Whetstone), 最大 38% (Matrix) 平均リーク電力を削減 演算ユニット全体でリーク電力を平均約 12% 削減 (2) 動的決定方式 最小 4.0% (Blowfish), 最大 16% (Dijkstra) 平均リーク電力を削減 演算ユニット全体でリーク電力を平均約 9% 削減 20120119ARC&ICD 44
温度に適応する最適化コードを選択する OS メモリ管理 20120119ARC&ICD 45
研究目標 コア温度変化の影響の隠蔽 コア温度変化に伴う BEP の変動への対処 コンパイラと OS との協調動作 静的解析と動的制御を組み合わせた PG 制御 実行時コア温度変化に基づくオブジェクトコード管理 実行時コア温度変化に基づいて OS がオブジェクトコードを切り替え実行 パワーゲーティングによる消費電力低減効果の向上 20120119ARC&ICD 46
提案手法の概要 source code 1) 特定コア温度向けに最適化 object code for 125 object compiler code for 25 Operating System Core Temperature 2) コア温度に応じて切り替え object code for 65 Geyser 3) 命令に基づくパワーゲーティング Hardware 20120119ARC&ICD 47
温度に適合したコードを実行する メモリ管理 仮想アドレス空間 仮想記憶により各タスクに一意の仮想アドレス空間を提供 テキスト領域の多重化 各コア温度向けに一意のテキスト領域を提供 コア温度変化に基づくテキスト領域の動的切り替え stack Core Temperature 65 stack Core Temperature 125 stack heap heap heap data data data textt For 125 For 65 For 25 For 65 For 125 20120119ARC&ICD 48
コード管理 : コアごとに応じたコードの 切り替え Application Program Object file ELF header Program header Program header Program header Program header For 25 For 65 For 125 ヘッダ参照 2) コード選択 3) ロード Core Temperature Operating System 65 1) コア温度取得 Memory CPU core 20120119ARC&ICD Page fault 49
評価 (1) 消費リーク電力の評価 (1) 全温度平均 PG を行うことで消費リーク電力を大幅に削減最も効果の高い提案手法 (ⅳ) では平均 77.3% 削減 実行時オーバヘッドは 3.2% 提案方式 (ⅳ) ハードウェア自律 (ⅱ) との比較 : 最高 55.7%, 平均 35.0% 削減 コンパイラ単体 (ⅲ) との比較 : 最高 15.6%, 平均 5.5% 削減 50
評価 (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