Transcript Document
LSI とシステムのワークショップ 12. ベクトル処理アーキテクチャ 五島 正裕 Advanced Computer Architecture 発表の内容 1. 背景 2. アクセラレータ 3. アクセラレータ vs 汎用マルチコア 4. 汎用マルチコアの高効率化 2 Advanced Computer Architecture 背景 0 : 製品開発 1. 要求される処理の高度化 / 複雑化 2. 開発期間の短縮 3. 速度は,1st. Priority ではなくなりつつある 3 Advanced Computer Architecture 背景 1 : ハードウェア (LSI) 開発 1. 要求される処理の高度化 / 複雑化 「設計できない」 2. 開発期間の短縮 「発売に間に合わない」 3. ソフトウェアでも開発は難しくなりつつある 製品の開発を始めてから LSI の開発を始めるのではダメ LSI 製造コストの高騰 「開発費を回収できない」 個別用途向けに開発したのではダメ 以下のような LSI 開発は困難 個別用途向け 多品種 / 少量 4 Advanced Computer Architecture 背景 2: ソフトウェア開発 開発効率,メンテナンス効率 1. 要求される処理の高度化 / 複雑化 2. 開発期間の長期化 → 開発コストの高騰 3. ハードウェアの速度向上により,要求は飽和しつつある? (少なくとも,ユーザは必要性を実感していない) Java,Ruby などの利用 速度はともかく,開発効率が高い 5 Advanced Computer Architecture 要求される処理の高度化 / 複雑化 例えば MPEG MPEG-2 (1995年) ハードウェア化をかなり考慮して策定 MPEG-4 (H.264) (2003年) ハードウェア化は(MPEG-2 ほどには)考慮されていない – ソフトウェアでも,正しく書くのは難しい 例えば 暗号 AES ハードウェア化をかなり考慮して策定 次は? 6 Advanced Computer Architecture ハードウェア指向 vs. ソフトウェア指向 ↑ハードウェア指向 専用ハードウェア アクセラレータ GPU PLAYSTATION 3 Cell 汎用マルチコア(小型コア) Xbox 360 PX Larrabee SH MC 汎用マルチコア(大型コア) x86 MC (Intel Core, AMD Opeteron, etc.) POWER SPARC64 ↓ソフトウェア指向 7 アクセラレータ Advanced Computer Architecture アクセラレータの普及 特定応用に特化したプロセッサの普及 ゲーム・コンソール用プロセッサ PLAYSTATION 3 Cell GPU 画像認識/処理の専用プロセッサ ビデオ/オーディオ・コーデック 共通した特徴: データ並列性の高い処理をターゲットとしたプロセッサ 9 Advanced Computer Architecture データ並列性の高い処理 データ並列性の高い処理 データ処理量が多い 汎用プロセッサで対処しにくい(?) 比較的単純な処理の繰り返し(?) 汎用プロセッサほどの複雑な機構は不要(?) ⇒ 汎用プロセッサ + アクセラレータ 10 Advanced Computer Architecture アクセラレータの特徴 アクセラレータの特徴(⇔ 汎用マルチコアと比較): SIMD(⇔ MIMD) ローカル・メモリ(⇔ コヒーレント・キャッシュ) 11 SIMD Advanced Computer Architecture SIMD 1. SIMD:Single Instruction stream / Multiple Data stream SIMD プロセッサ SIMD 命令セット 2. 利点:ピーク性能 3. 問題点:プログラマビリティ 13 Advanced Computer Architecture SIMD プロセッサ Single Instruction stream/Multiple Data stream 単一の制御部からの指令により,複数の演算器が同時に同じ処理を行う Control Unit Instruction Broadcast PE – 0 PE – 1 PE – 2 PE– n-1 Memory 14 Advanced Computer Architecture SIMD 命令セット (スーパ)スカラ・プロセッサの拡張命令セット VIS (Visual Instruction Set) MMX/SSE/3DNow!, AltiVec, etc. 元々は,64b の演算器を,16b x 4 として使う手法 (VIS,MMX) 1つのレジスタ内に,2~8個程度のデータをパック 1命令で,同種の演算を2~8個程度同時に行う 15 Advanced Computer Architecture SIMD の利点と問題点 利点: 高い最大性能 演算器間で制御部を共有可能 「1命令で n 個の処理」 演算器により多くの面積を割り当てることが可能 問題点: プログラマビリティ 不規則なループの処理 16 Advanced Computer Architecture 規則的なループ と 不規則なループ SIMD 化: 効率良く SIMD 命令に変換できること 規則的 (regular) なループ: SIMD 化可能 配列の連続要素に対し,同一の処理を行う場合など 積和演算 行列積 不規則 (irregular) なループ: SIMD 化困難,SIMD 化すると性能低下が大きい 17 Advanced Computer Architecture 不規則なループ 1. if-then-else 構造を持つもの 実行フラグなどにより対処は可能だが,性能は悪化 2. 不規則なメモリアクセスを含むもの 要素毎にポインタを含むものなど 3. リスト・ベクトル機能 – SIMD 命令セットの範疇では,サポートできない ループからの脱出 4. then パート と else パートを逐次実行 自動 SIMD 化コンパイラ (inc. Intel コンパイラ)は SIMD 化しない 袖 (wing) の処理 18 Advanced Computer Architecture 不規則なループの具体例 (1/2) サーチ: 次にたどるべきノードが適応的に決まる ソート: 不規則なメモリ・アクセスを含む クイック・ソートやマージ・ソート等 画像フィルタ: 袖 (wing) の処理 19 Advanced Computer Architecture 袖 (wing) の処理 重み行列 20 Advanced Computer Architecture 不規則なループの具体例 (2/2) MPEG-4 H.264 AVC: 動き検出 (motion detection) 多重ループからの脱出 適応的な探索 符号化,復号化 多数の分岐 適応的なモード切替 デブロッキング・フィルタ 適応的なアルゴリズム ウチの研究室の学生が,某有名エンコーダのベンダで SSE 化を担当 「GPGPU で,CPU に勝つのは困難」 21 Advanced Computer Architecture プログラマビリティ プログラマビリティの低さを証明するもの: 「アクセラレータでやってみました」系の論文 最近は通らなくなってきた プログラミング・コンテスト Cell Challenge, GPU Challenge プログラミング自体が難しい しかも,本質的でない困難が多い プログラミングの流れ: 汎用プロセッサでのプログラミング 最適なアルゴリズムの選択 → プログラミング アクセラレータでのプログラミング 効率よく実行可能なアルゴリズムの選択 → プログラミング → 書けない → アルゴリズム選択からやり直し 22 アーキテクチャ比較 Advanced Computer Architecture アーキテクチャ 代表的なアーキテクチャ 専用ハードウェア SIMD プロセッサ 汎用マルチコア w/ SIMD 命令セット 汎用マルチコア w/o SIMD 命令セット (ウルトラワイドなスーパスカラ・プロセッサ) プログラマビリティと最大性能 チップの面積は,演算器 とその 制御部 に分けられる 最大性能は演算器にどれだけ面積を割くかによる プログラマビリティは制御関連回路のコストにほぼ比例 24 Advanced Computer Architecture 演算器と制御部 SIMD プロセッサ 単一の制御部と複数の演算器から成る チップ面積の殆どは,演算器に割り当てられる Out-of-Order スーパスカラ 並列実行可能な部分をハードウェアで動的に検出 チップ面積の殆どは,制御部に割り当てられる 25 Advanced Computer Architecture プログラマビリティと最大性能のトレードオフ プログラマビリティ 目標 スーパスカラ マルチコア SIMD 演算器 ピーク性能= 演算機の割合 制御回路 チップ面積一定 26 汎用マルチコアの面積効率の向上 Advanced Computer Architecture コアの規模と数 チップ面積一定として,どちらが有利か? 小型のコア × 多数 大型のコア × 少数 28 Advanced Computer Architecture コアの規模と数 「マルチコアでは,チップ面積が余っているから,無駄に使ってよい」 ⇒ ウソ シングル・コアの時代: チップ面積の増加 ⇒ チップ・コストの増加 マルチコアの時代: チップ面積の増加 ⇒ コア数の減少 ⇒ 性能低下 29 Advanced Computer Architecture コアの規模と数 マルチコアこそ,(性能 / 面積) を最大化することが肝心 (性能 / 面積) が同程度なら,コア数は少ないほうがよい マルチプロセッサの経験から n コアで n 倍スピードアップは無理 – 「コアの性能が低いと,コア数を増やして勝つのは難しい」 30 Advanced Computer Architecture スーパスカラ・プロセッサの回路面積 w:幅 フェッチ幅 発行幅 キャッシュ: O(1) ? 演算器: O(w) 制御部: O(w3) 各種テーブルを構成する RAM: ポート数: O(w) エントリ数: O(w) 面積 ∝ (ポート数)2 × (エントリ数) 31 Advanced Computer Architecture スーパスカラ・プロセッサの回路面積 回路面積 制御 演算器 キャッシュ w 1 2 4 8 32 Advanced Computer Architecture コアの規模 チップ面積一定として,どちらが有利か? 小型のコア × 多数 大型のコア × 少数 33 Advanced Computer Architecture O(w3) から O(w) にするアーキテクチャ技術 ステージ ユニット 命令フェッチ 命令キャッシュ リネーミング RMT ディスパッチ スケジューリング リネームド・トレース・キャッシュ クラスタ化 命令ウィンドウ 発行 レジスタ読み出し 提案技術 マトリクス・スケジューラ クラスタ化 演算器 レジスタ・ファイル バイパス 非レイテンシ指向 レジスタ・キャッシュ・システム メモリ依存解析 依存解析器 NOSQ 演算器の追加 演算器 ツインテール・アーキテクチャ 実行 レジスタ書き戻し 34 Advanced Computer Architecture スーパスカラ・プロセッサの回路面積 回路面積 制御 演算器 キャッシュ w 1 2 4 8 35 Advanced Computer Architecture コアの規模 チップ面積一定として,どちらが有利か? 小型のコア × 多数 大型のコア × 少数 36 Advanced Computer Architecture 評価 Alpha 21464 のフロアプラン R. Preston, et al.: Design of an 8-wide superscalar RISC microprocessor with simultaneous multithreading, Proc. ISSCC (Int'l Solid-State Circuits Conf.), pp. 334―472 (2002). SPEC CPU 2006 の平均 IPC 37 Instruction Reg Window File INT FU (x8) 20mm RMT Insn Buf L1 I$ FP FU (x4) Insn Unit L2 Cache Tag Array LSQ L1 D$ L2 Cache Control 20mm : Cache : Functional Unit L2 Cache Data Array (3MB) : OoO Control : Instruction Fetch Unit : Inter Processor Router, Memory Controller, IO … 0% 20% Cache 40% Functional Unit 60% OoO Control 80% Fetch Unit 100% IO Other 2 1.8 1.6 OoO-Prop-8w 1.4 OoO-Prop-4w OoO-Prop-2w IPC 1.2 OoO-Prop-1w OoO-Base-8w 1 OoO-Base-4w OoO-Base-2w 0.8 OoO-Base-1w Inorder-8w 0.6 Inorder-4w Inorder-2w 0.4 Inorder-1w 0.2 0 0 50 100 Area 150 7 6 OoO-Prop-8w 5 OoO-Prop-4w IPC per Area OoO-Prop-2w OoO-Prop-1w 4 OoO-Base-8w OoO-Base-4w 3 OoO-Base-2w OoO-Base-1w Inorder-8w 2 Inorder-4w Inorder-2w 1 Inorder-1w 0 No L2 64KB 128KB 256KB 512KB L2 Cache Capacity 1MB 2MB まとめ Advanced Computer Architecture まとめ プログラマビリティが一番 大事 アクセラレータは,プログラマビリティが問題 汎用マルチコアが有望 各コアの面積効率の向上のアーキテクチャ研究が肝心 43