SlideShare a Scribd company logo
1 of 13
Download to read offline
2013年1月30日 10:45-12:15
データストリーム処理特論

APGAS言語X10を用いた
ネットワークオンチップ
シミュレーションの並列化


                         高前田(山崎) 伸也†‡
            †計算工学専攻      吉瀬研究室 博士課程2年
                ‡日本学術振興会    特別研究員 (DC1)
マルチコアからメニーコアへ
現在の主流: 1チップに2コア∼8コア (マルチコア)


                                                           ARM Cortex-A15
                                                            (4-core, ARM)
     Intel Corei7 3770K
        (4-core, x86)


将来: 1チップに多数(16∼)のコア (メニーコア)



                                                                   TILERA
                                                                 TILE-Gx100
 Intel Xeon Phi (54-core, x86)                                 (100-core, MIPS)


                          Shinya Takamaeda-Y. Tokyo Tech                      2
ネットワーク・オン・チップ (NoC)
メニーコアで高性能・低消費電力化を達成するには
低レイテンシ・高スループットな要素間の接続が必要
         Network on Chip (NoC)
PE        PE       PE          PE                PE 計算コア     R   オンチップルータ

     R         R        R              R
                                               オンチップルータがPE間の
PE        PE       PE          PE              パケット(データの塊)を宛先へ
                                               順々に転送
     R         R        R              R

                                               ü  通信の衝突の軽減
PE        PE       PE          PE
                                                   →低レイテンシ
     R         R        R              R           →高スループット

PE        PE       PE          PE              ü  高いスケーラビリティ
                                                   →多くのコアを接続して高性能
     R         R        R              R

                            Shinya Takamaeda-Y. Tokyo Tech                  3
オンチップルータの基本構成
     n  主に入力FIFO・アービター・クロスバーで構成される
          l  総面積の60%程度をFIFOが占める




                                                                                        Head
                                                                                        Body
                                                                                        Body
                                                                                         Tail
     n  転送単位: フリット (Flit: Flow Control Unit)
                                                                         Packet
                                                                                        T B B H
          l  いくつかのフリットでパケットを構成                                       (list of flits)



                                                               FIFO       Arbiter
PE        PE       PE       PE

      R        R        R        R         North                                              North


PE        PE       PE       PE
                                            East                                                  East
      R        R        R        R

                                            South                                                 South
PE        PE       PE       PE
                                                                       5x5 XBAR
      R        R        R        R
                                           West                                               West

PE        PE       PE       PE
                                            Core                                              Core
      R        R        R        R

                                     Shinya Takamaeda-Y. Tokyo Tech                                  4
オンチップルータの基本パイプライン構成
           n  以下の6段をベースに最適化(通常は3段程度)
            l  IB (Input Buffer): 隣接ルータからのフリットを入力FIFOに格納
            l  RC (Routing Computation): 宛先情報を元に進行方向を計算
            l  VA (Virtual Channel Allocation): 進行方向の仮想チャネルを確保
            l  SA (Switch Allocation): 進行方向へのスイッチ経路を確保
            l  ST (Switch Traversal): スイッチをフリットが通過
            l  LT (Link Traversal): ルータ間のリンクをフリットが通過
           n  例) 3つのルータをパケット(4フリット)が通過
                         Packet
                      (list of flits)   T B B H                  Router 1             Router 2              Router 3

                        Router 1                            Router 2                             Router 3

HEAD        IB   RC     VA     SA       ST   LT   IB   RC   VA     SA       ST   LT   IB   RC    VA   SA    ST    LT

BODY 0           IB                     SA   ST   LT   IB                   SA   ST   LT   IB               SA   ST    LT

BODY 1                  IB                   SA   ST   LT   IB                   SA   ST   LT    IB              SA    ST   LT

TAIL                            IB                SA   ST   LT      IB                SA   ST    LT   IB               SA   ST   LT

       t                                               Shinya Takamaeda-Y. Tokyo Tech                                                 5
ネットワークオンチップのいろいろ
n  ネットワークトポロジ
  l  2Dメッシュ・2Dトーラス・3D積層TSV+メッシュ・・・
n  ルーティング
  l  どの経路を辿って宛先に届けるのか?
n  フロー制御
  l  パケットをロスレスで届けるには
      どのようにして後続の転送を止めれば良いのか?
n  仮想チャネル
  l  ひとつの物理レーンを複数の仮想的なレーンで共有し
      Head of Lineブロッキングを防止
  l  入力バッファは仮想チャネルごとに持つ
n  調停方式(仮想チャネル・クロスバー)
  l  ラウンドロビン・iSlip・・・
                 Shinya Takamaeda-Y. Tokyo Tech   6
実装:パイプライン


n  オブジェクト指向全開
 l  PGASを意識せずに記述して
     どの程度の性能が出るか?


n  各ステージを2段階に分割
 l  drive()
      •  組み合わせ回路や
         配線の状態の更新
 l  update()
      •  フリップフロップなどの
         ラッチの更新



                Shinya Takamaeda-Y. Tokyo Tech   7
実装:並列化
n  ネットワーク空間をコア毎に領域分割
 l  2Dステンシル計算のように分割・並列実行
 l  袖領域のデータを通信し共有
   •  隣接ルータの入出力信号(フリット・フロー制御)


   PE       PE       PE          PE         PE         PE       PE       PE

        R        R         R          R          R          R        R        R


   PE       PE       PE          PE         PE         PE       PE       PE

        R        R         R          R          R          R        R        R


   PE       PE       PE          PE         PE         PE       PE       PE

        R        R         R          R          R          R        R        R


   PE       PE       PE          PE         PE         PE       PE       PE

        R        R         R          R          R          R        R        R


                          Shinya Takamaeda-Y. Tokyo Tech                          8
評価:セットアップ
n  x86マルチコア計算機1台で評価
 l  スケーラビリティが悪かったのでTSUBAMEでの評価はなし
n  一般的な通信パターンでネットワークにパケットを注入
n  NoCのノード数とX10プレース数を変化
                 Machine                                         Simulation Target
   CPU      Intel Corei7 2600 (4-core, 8thread)             Topology            2D-mesh
 Memory             8GB (DDR3-1333)                     # Virtual channels          2
   OS                  Ubuntu 12.04                       Packet length             8
 Compiler                x10-2.3.0                    # FIFO entries per VC         4
                         gcc 4.6.3                          Arbitration           iSlip
 (Option)             -cxx-prearg -g -O                    Flow control        Credit-base
                       -NO_CHECKS                        Transfer control       Warmhole
               -define NO_BOUNDS_CHECKS                      Routing            XY-DOR
 # places                  1~8                            Traffic pattern       Uniform
                                                          Injectoin rate           0.1
                                                             # Cycles              500
                                                                               256 (16x16)
                                                          Network size        1024 (32x32)
                                                                              4096 (64x64)
                                Shinya Takamaeda-Y. Tokyo Tech                               9
評価:並列化による速度向上
                 3.00
                                 256 node                             2.61                                                    2.65
                                                                                                  2.50          2.54
                 2.50            1024 node                                          2.36
                                                        2.25
                                 4096 node
                                                                 1.98
                 2.00                              1.84                        1.85                                      1.89
                                                                                                           1.78
Relative Speed




                                          1.74                                               1.75
                                     1.52
                 1.50                                          1.38
                                                 1.30                        1.32
                            1.00                                                           1.14                        1.11
                                                                                                         1.07
                        1.00
                 1.00     1.00     0.93



                 0.50


                 0.00
                           1          2             3             4              5            6             7             8
                                                                      # places

                                                   Shinya Takamaeda-Y. Tokyo Tech                                                10
考察


n  性能向上率がイマイチな理由
 l  8プレース・1スレッドで実行しているのがそもそも良くない?
     •  スレッドレベル並列性とプロセスレベル並列性をかき分ける記述が
        よくわからなかったので今回はこうなりました
 l  袖領域の同期時にオブジェクトのdeep copyが発生している?
     •  オブジェクト内の一部だけをコピーなしで参照する良い記述が不明
 l  各アクティビティに割り当てられたノードの数が少ない?
     •  10000コア程度のシミュレーションであればうまくスケールする?
     •  アクティビティ間通信レイテンシと計算量のバランシングが重要




              Shinya Takamaeda-Y. Tokyo Tech   11
今後の課題

n  ボトルネック解析
 l  gprofが使えるらしいので解析できそう
n  2Dメッシュ以外のトポロジへの対応
 l  トーラスや3D系,ランダムショートカットなど
n  ルータの電力評価機構
 l  各要素のドライブ回数の計測により実現可能
n  トレースリーダとの連携
 l  PARSECベンチマークの実行トレースを元にしたパケット生成
     C++ライブラリのNetraceとの連携
 l  アプリケーションの実行時間への影響が評価できるように


               Shinya Takamaeda-Y. Tokyo Tech   12
まとめ
     n  X10を用いたネットワークオンチップの
         並列シミュレータを実装
         l  4コア/8スレッドのCPU上で
             2Dメッシュ・4096ノードのNoCをシミュレーションした場合
             1コアに対して2.65倍の速度向上を達成

                                                              FIFO    Arbiter
PE       PE       PE       PE

     R        R        R        R         North                                 North


PE       PE       PE       PE
                                           East                                 East
     R        R        R        R

                                           South                                South
PE       PE       PE       PE
                                                                     5x5 XBAR
     R        R        R        R
                                          West                                  West

PE       PE       PE       PE
                                           Core                                 Core
     R        R        R        R

                                    Shinya Takamaeda-Y. Tokyo Tech                13

More Related Content

More from Shinya Takamaeda-Y

ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)Shinya Takamaeda-Y
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」Shinya Takamaeda-Y
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Shinya Takamaeda-Y
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングShinya Takamaeda-Y
 
マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討Shinya Takamaeda-Y
 
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)Shinya Takamaeda-Y
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようShinya Takamaeda-Y
 
A CGRA-based Approach for Accelerating Convolutional Neural Networks
A CGRA-based Approachfor Accelerating Convolutional Neural NetworksA CGRA-based Approachfor Accelerating Convolutional Neural Networks
A CGRA-based Approach for Accelerating Convolutional Neural NetworksShinya Takamaeda-Y
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Shinya Takamaeda-Y
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようShinya Takamaeda-Y
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)Shinya Takamaeda-Y
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向Shinya Takamaeda-Y
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)Shinya Takamaeda-Y
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)Shinya Takamaeda-Y
 
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...Shinya Takamaeda-Y
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータShinya Takamaeda-Y
 
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...Shinya Takamaeda-Y
 
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)Shinya Takamaeda-Y
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発Shinya Takamaeda-Y
 

More from Shinya Takamaeda-Y (20)

ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミング
 
マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討
 
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
A CGRA-based Approach for Accelerating Convolutional Neural Networks
A CGRA-based Approachfor Accelerating Convolutional Neural NetworksA CGRA-based Approachfor Accelerating Convolutional Neural Networks
A CGRA-based Approach for Accelerating Convolutional Neural Networks
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
 
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
A Framework for Efficient Rapid Prototyping by Virtually Enlarging FPGA Resou...
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
 
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
PyCoRAM: Python-Verilog高位合成とメモリ抽象化によるFPGAアクセラレータ向けIPコア開発フレームワーク (FPGAX #05)
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 

APGAS言語X10を用いたオンチップネットワークシミュレーションの並列化

  • 1. 2013年1月30日 10:45-12:15 データストリーム処理特論 APGAS言語X10を用いた ネットワークオンチップ シミュレーションの並列化 高前田(山崎) 伸也†‡ †計算工学専攻 吉瀬研究室 博士課程2年 ‡日本学術振興会 特別研究員 (DC1)
  • 2. マルチコアからメニーコアへ 現在の主流: 1チップに2コア∼8コア (マルチコア) ARM Cortex-A15 (4-core, ARM) Intel Corei7 3770K (4-core, x86) 将来: 1チップに多数(16∼)のコア (メニーコア) TILERA TILE-Gx100 Intel Xeon Phi (54-core, x86) (100-core, MIPS) Shinya Takamaeda-Y. Tokyo Tech 2
  • 3. ネットワーク・オン・チップ (NoC) メニーコアで高性能・低消費電力化を達成するには 低レイテンシ・高スループットな要素間の接続が必要 Network on Chip (NoC) PE PE PE PE PE 計算コア R オンチップルータ R R R R オンチップルータがPE間の PE PE PE PE パケット(データの塊)を宛先へ 順々に転送 R R R R ü  通信の衝突の軽減 PE PE PE PE →低レイテンシ R R R R →高スループット PE PE PE PE ü  高いスケーラビリティ →多くのコアを接続して高性能 R R R R Shinya Takamaeda-Y. Tokyo Tech 3
  • 4. オンチップルータの基本構成 n  主に入力FIFO・アービター・クロスバーで構成される l  総面積の60%程度をFIFOが占める Head Body Body Tail n  転送単位: フリット (Flit: Flow Control Unit) Packet T B B H l  いくつかのフリットでパケットを構成 (list of flits) FIFO Arbiter PE PE PE PE R R R R North North PE PE PE PE East East R R R R South South PE PE PE PE 5x5 XBAR R R R R West West PE PE PE PE Core Core R R R R Shinya Takamaeda-Y. Tokyo Tech 4
  • 5. オンチップルータの基本パイプライン構成 n  以下の6段をベースに最適化(通常は3段程度) l  IB (Input Buffer): 隣接ルータからのフリットを入力FIFOに格納 l  RC (Routing Computation): 宛先情報を元に進行方向を計算 l  VA (Virtual Channel Allocation): 進行方向の仮想チャネルを確保 l  SA (Switch Allocation): 進行方向へのスイッチ経路を確保 l  ST (Switch Traversal): スイッチをフリットが通過 l  LT (Link Traversal): ルータ間のリンクをフリットが通過 n  例) 3つのルータをパケット(4フリット)が通過 Packet (list of flits) T B B H Router 1 Router 2 Router 3 Router 1 Router 2 Router 3 HEAD IB RC VA SA ST LT IB RC VA SA ST LT IB RC VA SA ST LT BODY 0 IB SA ST LT IB SA ST LT IB SA ST LT BODY 1 IB SA ST LT IB SA ST LT IB SA ST LT TAIL IB SA ST LT IB SA ST LT IB SA ST LT t Shinya Takamaeda-Y. Tokyo Tech 5
  • 6. ネットワークオンチップのいろいろ n  ネットワークトポロジ l  2Dメッシュ・2Dトーラス・3D積層TSV+メッシュ・・・ n  ルーティング l  どの経路を辿って宛先に届けるのか? n  フロー制御 l  パケットをロスレスで届けるには どのようにして後続の転送を止めれば良いのか? n  仮想チャネル l  ひとつの物理レーンを複数の仮想的なレーンで共有し Head of Lineブロッキングを防止 l  入力バッファは仮想チャネルごとに持つ n  調停方式(仮想チャネル・クロスバー) l  ラウンドロビン・iSlip・・・ Shinya Takamaeda-Y. Tokyo Tech 6
  • 7. 実装:パイプライン n  オブジェクト指向全開 l  PGASを意識せずに記述して どの程度の性能が出るか? n  各ステージを2段階に分割 l  drive() •  組み合わせ回路や 配線の状態の更新 l  update() •  フリップフロップなどの ラッチの更新 Shinya Takamaeda-Y. Tokyo Tech 7
  • 8. 実装:並列化 n  ネットワーク空間をコア毎に領域分割 l  2Dステンシル計算のように分割・並列実行 l  袖領域のデータを通信し共有 •  隣接ルータの入出力信号(フリット・フロー制御) PE PE PE PE PE PE PE PE R R R R R R R R PE PE PE PE PE PE PE PE R R R R R R R R PE PE PE PE PE PE PE PE R R R R R R R R PE PE PE PE PE PE PE PE R R R R R R R R Shinya Takamaeda-Y. Tokyo Tech 8
  • 9. 評価:セットアップ n  x86マルチコア計算機1台で評価 l  スケーラビリティが悪かったのでTSUBAMEでの評価はなし n  一般的な通信パターンでネットワークにパケットを注入 n  NoCのノード数とX10プレース数を変化 Machine Simulation Target CPU Intel Corei7 2600 (4-core, 8thread) Topology 2D-mesh Memory 8GB (DDR3-1333) # Virtual channels 2 OS Ubuntu 12.04 Packet length 8 Compiler x10-2.3.0 # FIFO entries per VC 4   gcc 4.6.3 Arbitration iSlip (Option) -cxx-prearg -g -O Flow control Credit-base   -NO_CHECKS Transfer control Warmhole   -define NO_BOUNDS_CHECKS Routing XY-DOR # places 1~8 Traffic pattern Uniform Injectoin rate 0.1 # Cycles 500   256 (16x16) Network size 1024 (32x32)   4096 (64x64) Shinya Takamaeda-Y. Tokyo Tech 9
  • 10. 評価:並列化による速度向上 3.00 256 node 2.61 2.65 2.50 2.54 2.50 1024 node 2.36 2.25 4096 node 1.98 2.00 1.84 1.85 1.89 1.78 Relative Speed 1.74 1.75 1.52 1.50 1.38 1.30 1.32 1.00 1.14 1.11 1.07 1.00 1.00 1.00 0.93 0.50 0.00 1 2 3 4 5 6 7 8 # places Shinya Takamaeda-Y. Tokyo Tech 10
  • 11. 考察 n  性能向上率がイマイチな理由 l  8プレース・1スレッドで実行しているのがそもそも良くない? •  スレッドレベル並列性とプロセスレベル並列性をかき分ける記述が よくわからなかったので今回はこうなりました l  袖領域の同期時にオブジェクトのdeep copyが発生している? •  オブジェクト内の一部だけをコピーなしで参照する良い記述が不明 l  各アクティビティに割り当てられたノードの数が少ない? •  10000コア程度のシミュレーションであればうまくスケールする? •  アクティビティ間通信レイテンシと計算量のバランシングが重要 Shinya Takamaeda-Y. Tokyo Tech 11
  • 12. 今後の課題 n  ボトルネック解析 l  gprofが使えるらしいので解析できそう n  2Dメッシュ以外のトポロジへの対応 l  トーラスや3D系,ランダムショートカットなど n  ルータの電力評価機構 l  各要素のドライブ回数の計測により実現可能 n  トレースリーダとの連携 l  PARSECベンチマークの実行トレースを元にしたパケット生成 C++ライブラリのNetraceとの連携 l  アプリケーションの実行時間への影響が評価できるように Shinya Takamaeda-Y. Tokyo Tech 12
  • 13. まとめ n  X10を用いたネットワークオンチップの 並列シミュレータを実装 l  4コア/8スレッドのCPU上で 2Dメッシュ・4096ノードのNoCをシミュレーションした場合 1コアに対して2.65倍の速度向上を達成 FIFO Arbiter PE PE PE PE R R R R North North PE PE PE PE East East R R R R South South PE PE PE PE 5x5 XBAR R R R R West West PE PE PE PE Core Core R R R R Shinya Takamaeda-Y. Tokyo Tech 13