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