メニーコアにおけるタスクの移動を 支援する On-chip micro mobility プロトコル 松谷 宏紀 (慶大) 東大 鯉渕 道紘 (NII) 天野 英晴 (慶大) 半導体プロセスの進歩により… • マルチコア・プロセッサ – バス結合 – E.g., ARM AMBA PU PU PU Cache Cache Cache ×コア数が増えるとバスがボトルネック 半導体プロセスの進歩により… • マルチコア・プロセッサ – バス結合 – E.g., ARM AMBA • メニーコア・プロセッサ – スイッチ (ルータ) 結合 – Network-on-Chip (NoC) PU PU PU PU PU PU Cache Cache Cache Cache Cache Cache PU PU PU Cache Cache Cache PU PU PU Cache Cache Cache ×コア数が増えるとバスがボトルネック 半導体プロセスの進歩により… • マルチコア・プロセッサ – バス結合 – E.g., ARM AMBA PU PU PU Cache Cache Cache • メニーコア・プロセッサ – スイッチ (ルータ) 結合 – Network-on-Chip (NoC) R R R R R R R R R ×コア数が増えるとバスがボトルネック メニーコアの問題点: 負荷の集中 • アプリの実行 – 並列化による負荷分散 (理想) – 逐次的な処理も多い (現実) • 負荷の集中 – 局所的な温度上昇 – リーク電力の急増 アプリケーション (MPEG, AES, …) Task (参考) 温度とリーク電力 • OpenSPARC T1 • 1-core SPARC を合成 – 8-core SPARC – 64-bit – – – – キャッシュ無し Design Comipler 温度 25C, 75C, 125C 200 MHz Core Core Core Core L2 $ Core Crossbar SW L2 $ Core Core Core L2 $ L2 $ Sun T1 (コア8個,各コア4スレッド) [Kongetira, micro’05] • プロセスライブラリ – Nangate 45nm FreePDK – ASU 45nm PTM ベース – 温度を変えて再キャラクタ ライズ – LibertyNCX & HSPICE (参考) 温度とリーク電力 • OpenSPARC T1 – 8-core SPARC – 64-bit Core Core Core Core L2 $ Core Crossbar SW L2 $ Core Core Core L2 $ L2 $ Sun T1 (コア8個,各コア4スレッド) [Kongetira, micro’05] Power Consumption [mW] • 1-core SPARC を合成 – キャッシュ無し 350 – Design Comipler 300 – 25C, 75C, 125C 250 – 200 MHz 200 150 温度が高くなるとリークが増加 • プロセスライブラリ 100 – Nangate 45nm FreePDK 50 – ASU 45nm PTM ベース 0 – 温度を変えてキャラクタラ 25 75 125 イズ Temperature [C] – LibertyNCX & HSPICE Static Dynamic メニーコアの課題: 負荷の集中 • アプリの実行 – 並列化による負荷分散 (理想) – 逐次的な処理も多い (現実) • 負荷の集中 – 局所的な温度上昇 – リーク電力の急増 アプリケーション (MPEG, AES, …) Task メニーコアの課題: 負荷の集中 • アプリの実行 – 並列化による負荷分散 (理想) – 逐次的な処理も多い (現実) • 負荷の集中 – 局所的な温度上昇 – リーク電力の急増 • Power density 均一化 – 負荷の分散 – タスクの動的な移動 Task メニーコアの課題: 負荷の集中 • アプリの実行 – 並列化による負荷分散 (理想) – 逐次的な処理も多い (現実) • 負荷の集中 – 局所的な温度上昇 – リーク電力の急増 Task • Power density 均一化 – 負荷の分散 – タスクの動的な移動 メニーコアの課題: 負荷の集中 • アプリの実行 – 並列化による負荷分散 (理想) – 逐次的な処理も多い (現実) • 負荷の集中 – 局所的な温度上昇 – リーク電力の急増 • Power density 均一化 – 負荷の分散 – タスクの動的な移動 Task メニーコアの課題: 負荷の集中 • アプリの実行 – 並列化による負荷分散 (理想) – 逐次的な処理も多い (現実) • 負荷の集中 – 局所的な温度上昇 – リーク電力の急増 Task • Power density 均一化 – 負荷の分散 – タスクの動的な移動 タスクの移動に伴う問題点 • 着信可能性 • Task A の移動前 • Task A の移動後 – Task A がどのコアの上で動作していても A” – 他のタスクと通信中 – 今まで Task“Task A と通信して でアクセス可能 たタスクたちはどうする? • 移動透過性 – Task A が動的に移動しても通信が途切れない Task A ??? Task A NoC におけるタスクマイグレーション Mobile IP を使ってみては? Mobile IP とは? • Mobile IP (Mobile IPv6) – 移動体通信のための IP protocol の拡張 – RFC 3344 (Mobile IPv4), RFC 3775 (Mobile IPv6) – 移動するノード (MN) がどのネットワークに接続していても, 同じ IP アドレスで識別, 通信できる • 用語のまとめ – Mobile node (MN): 移動するノード – Corresponding node (CN): MN と通信するノード – Home agent (HA): MNが外部にいる際のプロキシ 2001:xxx::11 2001:xxx::/64 2001:ooo::/64 Mobile IP とは? • Mobile IP (Mobile IPv6) – 移動体通信のための IP protocol の拡張 – RFC 3344 (Mobile IPv4), RFC 3775 (Mobile IPv6) – 移動するノード (MN) がどのネットワークに接続していても, 同じ IP アドレスで識別, 通信できる • 用語のまとめ – Mobile node (MN): 移動するノード 移動先ネットワーク (2001:ooo::/64) においても – Corresponding node (CN): MN と通信するノード – Home agent MNが外部にいる際のプロキシ もとの IP (HA): アドレス (2001:xxx::11) でアクセス可能 2001:xxx::11 2001:xxx::/64 2001:ooo::/64 発表の流れ: On-Chip Micro Mobility • メニーコア – 多数のプロセッサ + スイッチ結合 • タスクの動的な移動 – Power density の均一化 – タスクを別のコアへ移動させる • On-chip micro mobility プロトコル – タスクの移動透過性 + 着信可能性 – Mobile IP を単純化 • On-chip micro mobility の設計 – NI としてハードウェア化 – 予備評価 Micro mobility: 利用のシナリオ • Task A @ Tile 3 • Task A @ Tile 5 – Task B と通信中 – Tile 3 から Tile 5 へ移動 Tile 0 – Micro mobility によって – Task B との通信を継続 Corresponding Task Tile 1 Tile 2 (CT) Task B Tile 3 Tile 4 Task A Task A Tile 6 Tile 5 Tile 7 Tile 8 Mobile Task (MT) Mobility によって MT の物理アドレスが変化しても CT は通信を継続 Micro mobility: Mobile Task @ Home • Home – 各 MT はどこかのタイル を “Home” とする • Home Agent (HA) – 各 MT の home ルータに 置くプロキシ • Task A @ Tile 3(home) – Task B との通信に Micro mobility を使う必要なし Tile 0 Tile 1 Tile 2 Tile 4 Tile 5 Task B • HA の仕事 – MT の現在物理アドレス (Care-of-Address, CoA) を管理 – MT 宛てのパケットを CoA へ転送 Tile 3 Task A Tile 6 HATile for 7Task A Tile 8 MT が home にいるとき, Corresponding Task (Task B) と直接通信 Micro mobility: Mobile Task の移動 • タスク移動前 – MT は HA に Binding Update (BU) を送信 – MT の移動先アドレス (CoA) を通知 タスクの移動中 (MT 宛てのパケットは HA がバッファリングする) • Task A @ Tile 0 – Tile 2 に移動前 – 新しい CoA = Tile 2 Tile 0 Tile 2 Task A Tile 3 Tile 4 Tile 5 BU (CoA = Tile 2) Tile 6 HATile for 7Task A Tile 8 • タスク移動後 – MT は HA に Binding Ack (BA) を送信 – MT の移動完了を通知 Tile 1 Home Agent (HA) は, Mobile Task (MT) の現在位置 (CoA) を管理 Micro mobility: Mobile Task の移動 • タスク移動前 – MT は HA に Binding Update (BU) を送信 – MT の移動先アドレス (CoA) を通知 タスクの移動中 (MT 宛てのパケットは HA がバッファリングする) • Task A @ Tile 2 – Tile 2 に移動後 – 移動完了の通知 (BA) Tile 0 Tile 2 Task A Tile 3 • タスク移動後 – MT は HA に Binding Ack (BA) を送信 – MT の移動完了を通知 Tile 1 Tile 4 Tile 5 BA (CoA = Tile 2) Tile 6 HATile for 7Task A Tile 8 Home Agent (HA) は, Mobile Task (MT) の現在位置 (CoA) を管理 Micro mobility: 移動後 CT との通信 • CT から MT へ転送 – CT は MT の現在位置を 考えずに – MT の homeである Tile 3 にパケットを送信 • Task B から A への転送 – 常に Tile 3 宛てに送信 – HA にて CoA 宛てに転送 Tile 0 Tile 1 Tile 2 Task A • HA による転送 – MT 宛てパケットは Tile 3 に到達 – これを現在の CoA である Tile 2 へ転送 Tile 3 Tile 6 Tile 4 Tile 5 Tile 7 to Task TileA 8 Packet Task B MT 宛てのパケットは常に HA を経由 スループットのボトルネック! Micro mobility: Route optimization (RO) • CT から MT へ転送 (1) – HA にて中継される – RO されていない • CT への BU 送信 – RO されていないパケット を受信したら – 送り主 (CT) に CoA 通知 • CT から MT へ転送 (2) – 直接, MT の CoA に転送 • Task A (MT) において, – RO されていないパケット を受信 Tile 0 Tile 1 Tile 2 Task A Tile 3 Tile 6 Tile 4 Tile 5 Tile 7 to Task TileA 8 Packet Task B Micro mobility: Route optimization (RO) • CT から MT へ転送 (1) – HA にて中継される – RO されていない • CT への BU 送信 – RO されていないパケット を受信したら – 送り主 (CT) に CoA 通知 • CT から MT へ転送 (2) – 直接, MT の CoA に転送 • Task A (MT) において, – 送り主 (Task B) に BU を 送信 Tile 0 Tile 1 Tile 2 Task A Tile 3 Tile 6 Tile 4 Tile 5 7 = TileTile BUTile (CoA 2) 8 Task B Micro mobility: Route optimization (RO) • CT から MT へ転送 (1) – HA にて中継される – RO されていない • CT への BU 送信 – RO されていないパケット を受信したら – 送り主 (CT) に CoA 通知 • CT から MT へ転送 (2) – 直接, MT の CoA に転送 • Task A (MT) において, – Task B に BU を送信 – 以後, Task B と直接通信 Tile 0 Tile 1 Tile 2 Task A Tile 3 Tile 6 Tile 4 Tile 5 Tile 7 to Task TileA 8 Packet Task B Task A がさらに移動する場合は, CT の bindingを消去する必要あり Micro mobility: Route optimization (RO) • RO されていない通信 – Task B Task A – 必ず HA を経由 Tile 0 Tile 1 Tile 2 • RO された通信 – Task B Task A – HA を経由せず直接通信 Tile 0 Tile 1 Task A Tile 3 Tile 4 Tile 2 Task A Tile 5 Tile 3 Tile 7 to Task TileA 8 Packet Tile 6 Tile 4 Tile 5 Bottleneck! Tile 6 Task B Tile 7 to Task TileA 8 Packet Task B Route optimization (RO) することでスループット性能を大幅に改善 Micro mobility: HA 経由の通信 (補足) • RO されていない通信 – MT 移動後, 最初の通信は必ず HA 経由になる (その後 RO) – HA 経由の通信により禁止ターンが生じる デッドロック Tile 0 Tile 1 Tile 2 Tile 0 Tile 1 Task A Tile 3 仮想チャネルの切替え Tile 4 Tile 5 Tile 2 Task A Tile 3 Tile 4 Tile 5 禁止ターン Tile 6 Tile 7 to Task TileA 8 Packet Task B Tile 6 Tile(CoA=Tile 7 Tile BU 2) 8 Task B CTからHA は VC0, HA から MTは VC1を使用 デッドロックフリー On-chip network mobility • 階層構造を持つトポロジ – Fat Tree – Fat H-Tree – Concentrated Mesh クラスタ構造 (近傍同士はク ロスバで密に結合) On-chip network mobility • 階層構造を持つトポロジ – Fat Tree – Fat H-Tree – Concentrated Mesh • クラスタ単位のタスク移動 – Micro mobility を拡張 – クラスタ (network) 単位で タスクが移動 クラスタ構造 (近傍同士はク ロスバで密に結合) On-chip network mobility プロトコルについては予稿集をご覧下さい 発表の流れ: On-Chip Micro Mobility • メニーコア – 多数のプロセッサ + スイッチ結合 R R R R R R R R R • タスクの動的な移動 – Power density の均一化 – タスクを別のコアへ移動させる • On-chip micro mobility プロトコル – タスクの移動透過性 + 着信可能性 – Mobile IP を単純化 • On-chip micro mobility の設計 – NI としてハードウェア化 – 予備評価 Network interface (NI) は, コ アとルータのインタフェイス Wormhole ルータの構造 • 5入力5出力の wormhole ルータ; NI 付き ARBITER VC0 X+ X+ VC1 X- X- Y+ Y+ Y- Y- NI 5x5 XBAR パケット生成 コア (プロセッサ & キャッシュ) Network interface (NI) NI Network interface (NI) の構造 • 5入力5出力の wormhole ルータ; NI 付き ARBITER パケット化 (ヘッダ付与) 脱パケット化 (ヘッダ削除) Network interface (NI) Core Core Micro mobility の設計: CT 側の機能 • 5入力5出力の wormhole ルータ; NI 付き ARBITER MT アドレスと実際のアドレス コアから MT 宛てのパケットを Binding update list (BUL) (CoA) の対応付け表 受け取ったら, BC をひいて対 N(log2N + 1)-bit のビットマップ BU を送った CT のリスト 応する CoA 宛てに変換 Binding cache (BC) MT の現在アドレス (CoA) Network interface (NI) CTがBCを持たないと, Core MTとの通信はHA経由の非最短経路になる Core Micro mobility の設計: MT 側の機能 • 5入力5出力の wormhole ルータ; NI 付き ARBITER N-bit のビットマップ (N はノード数) BU を送ったCT は 1 Binding update list (BUL) BU を送った CT のリスト Binding cache (BC) MT は移動直前に BUL 内の CT に対して 現在の CoA を無効化 (BU 送信) する Network interface (NI) MTがBULを持たないと,移動する度に HA経由の非最短経路が発生 Core Core Micro Mobility の設計: HA 側の機能 • 5入力5出力の wormhole ルータ; NI 付き ARBITER 受信したパケットが MT 宛て Binding update list (BUL) なら,現在の CoA に転送 BU を送った CT のリスト (VC の切替が発生) Binding cache (BC) MT の現在アドレス (CoA) Network interface (NI) MT 宛てパケットをMTの代わりに受信し, MTの現在の Core CoreCoA へ転送 予備評価: Route optimization の効果 • Task B から Task A – RO しない経路(HA 経由) – RO する経路 (直接) Tile 0 Tile 1 Tile 2 Task A Tile 3 Tile 6 Tile 4 Tile 7 Task B Tile 5 Tile 8 • ネットワーク環境 – k x k mesh – MT の HA が一様に分散 • 平均ホップ数 2k H 3 – RO しないと 2倍に増加 – 遅延・消費電力が悪化 • スループット ideal bC NH – RO しないと最悪 1/2 に 予備評価: BC & BUL のハードウェアコスト • Binding の管理 • ネットワーク環境 – Binding cache (BC) – Binding update list (BUL) – 無いと RO できない • ルータのハードウェア量 – N ノード (k x k mesh) – 各ノードが通信相手 すべての CoA を管理 • BC のハードウェア量 – バッファサイズが支配的 – (p v 一度に通信する通信相手は少 w d) bit ない BC サイズを減らせる ポート数 p=5, 仮想チャネル数 v=1 • データ幅 w=64, FIFO深さ d=4 – BC と BUL を持たせると どれだけ増えるか? – 通信相手の CoA を保持 – N (log2 N +1) bit BUL のハードウェア量 – BU 送信済みの CT – N bit N=16 のときオーバヘッドは 3.8% 増, N=64 のとき 20.0% 増, … まとめ: On-Chip Micro Mobility • メニーコアにおけるタスクの動的な移動 – Power density の均一化 – タスクを別のコアへ移動させる • On-chip micro mobility プロトコル – タスクの移動透過性 + 着信可能性 – Mobile IP を単純化 • On-chip micro mobility の設計 – NI としてハードウェア化 – 予備評価 • 今後の課題 – Micro mobility をサポートした NI の実装 (45nm CMOS) – OpenSPARC T1 を用いた温度とリーク電力の評価 ご清聴ありがとうございました
© Copyright 2024 ExpyDoc