スライド 1

Similar documents
計算機アーキテクチャ特論 後半第2回 アウトオブオーダー実行 Out-of-Order Execution

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

計算機アーキテクチャ

コンピュータ工学Ⅰ

Microsoft PowerPoint - NxLec ppt

ネットワークシミュレーション

MMUなしプロセッサ用Linuxの共有ライブラリ機構

Insert your Title here

Microsoft PowerPoint - Session4古賀様.ppt

この手の問題を診断する際に Simics は完璧なツールなのですが 実行するためには 問題が発生するプログラムを Simics に取り込まなければなりません すなわち Simics 上で Simics を実行するのです まず Simics 内部に開発ホストの複製を作成します これは何も難しいことでは

Microsoft PowerPoint - Chap4 [Compatibility Mode]

Microsoft PowerPoint - OS07.pptx

DocAve Lotus Notes Migrator v5_0 - Product Sheet

Microsoft PowerPoint - Sol7 [Compatibility Mode]

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

スライド 1

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Presentation Title

TRQerS - Introduction

今週の進捗

Microsoft PowerPoint - sales2.ppt

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

TOPPERS活用アイデア・アプリケーション開発

MIPSのマイクロアーキテクチャ

PowerPoint プレゼンテーション

Oracle Data Pumpのパラレル機能

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

ジョブ管理ソフトウェア LoadStar Scheduler ご紹介資料 ~ システム運用品質の向上とコスト削減を実現 ~

CodeRecorderでカバレッジ

JavaプログラミングⅠ

使用する前に

BOM for Windows Ver

1. 主な機能追加項目 以下の検索項目をサポートしました 書誌 全文検索コマンド検索 国内 査定日 最新の査定日 ( 登録査定日または拒絶査定日 ) を検索します 査定種別 最新の登録 拒絶査定 または査定なしを検索します 審査最終処分日 最新の審査最終処分日を検索します 審査最終処分種別 最新の審

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

TopSE並行システム はじめに

VelilogHDL 回路を「言語」で記述する

計算機アーキテクチャ

Microsoft PowerPoint - Lec pptx

インテル(R) Visual Fortran コンパイラ 10.0

Microsoft PowerPoint - 01_Vengineer.ppt

DRAM SRAM SDRAM (Synchronous DRAM) DDR SDRAM (Double Data Rate SDRAM) DRAM 4 C Wikipedia 1.8 SRAM DRAM DRAM SRAM DRAM SRAM (256M 1G bit) (32 64M bit)

Monthly Research / セキュアハードウェアの登場とその分析

Microsoft PowerPoint - IAF フォーラム2015講演資料_PLCopenJapan_A02.pptx

Oracle SQL Developer Data Modeler

Microsoft Word - RefApp7インストールガイド.doc

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

プレポスト【問題】

COBOL EE開発環境 ご紹介資料

MultiLABELISTOCX と MultiLABELISTV4 MLOCX は MLV4 のレイアウト発行機能を継承しています したがって MLV4 の振分発行やプ リセット発行を使用するための登録情報は使用できません MLV4 のレイアウト管理でレイアウトを作成すると 拡張子が m lay

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

障害管理テンプレート仕様書

Java知識テスト問題

OPC Foundation

Transcription:

はじめに プロセッサ シミュレータ プロセッサの挙動を再現するソフトウェア 1. ファンクショナル シミュレータ ( エミュレータ ) プログラマから直接見える機能のシミュレーションを行う 例 :VMWare,VirtualPC など 2. サイクル アキュレート シミュレータ プログラマからは直接見えないマイクロ アーキテクチャまでも含めて, サイクル アキュレートに再現 キャッシュ, 分岐予測,out-of-order 実行 etc IPC を測定することができる 1

SimpleScalar サイクル アキュレートなシミュレータとしてはデファクト スタンダード 問題点 : 1. 性能バグの検出容易性 (detectability) エミュレーションを命令フェッチ時にin-order に行う バグがあっても, 正しく 終了してしまう 2. 忠実性 (fidelity, 再現性 ) データ投機に失敗した場合の挙動が再現できない 3. 拡張性 (extensibility) 可読性 機能が非常に固定的 一つの関数が数千行とか 2

SimpleScalar の問題 : データ投機に失敗した場合の挙動 データ予測ミスした命令の後続の挙動が再現できていない 例 : アドレス一致 / 不一致予測ミス キャッシュ ヒット率などに影響が出る cycle store [A] <= r4 Fetch Rename Issue Issue RegRead L1 load r2 <= [r1] Fetch RegRead L1 バイオレーション ( r1 == A ) load r3 <= [r2] Fetch Issue RegRead L1 本来なら 間違った アドレスにアクセス 3

目的 方針 SimpleScalar の問題点の解消 当研究室の研究テーマへの対応 ツインテール アーキテクチャ 逆デュアルフロー アーキテクチャ マルチコア / マルチスレッドへの対応 最近のターゲット環境への対応 SPECCPU2006. 最新の gcc 4

Emulator Simulator Cross compile (gcc) benchmark (C/C++/Fortran ) Linux ELF binary (Alpha/PowerPC 64) Host Environment (Posix/Windows) Onikiri 2 Linux Emulator ElfLoader VirtualSystem VirtualMemory Alpha/PowerPC Emulator MemOrderManager Instruction Pipeline Fetcher Renamer Dispatcher Scheduler ExecUnit Retirer in-order out-of-order in-order Cache(I) RMT MemDepPred LatPred Cache(D) InorderList BPred RegisterFile RegisterFreeList Memory Simulation Result (IPC,Cache Hit Rate etc ) 5

鬼斬弐 設計の方針 : スーパスカラ プロセッサの基本的 最小限の性質を抜き出して抽象化 パイプラインのモデル 1. フェッチ, リネーム :in-order 制御とデータに関する投機を行う 2. 実行 :out-of-order リネーム時に予測した依存関係を満たすよう, スケジューリング スケジューラはプロセッサ内に 1 つまたは複数存在 3. コミット, リタイア :in-order 6

鬼斬弐の設計データに関する投機 データに関する投機 アドレス一致 / 不一致予測 値予測 リネーム時に, 命令間に投機的な依存関係を張る事により実現 レジスタ & メモリは統一的に扱う レジスタ リネーミングも, 予測による依存として扱う Wakeup の実装の共通化 例 : アドレス一致 / 不一致予測 ロード / ストア命令のアクセスするアドレスはリネーム時には不明 アドレスが一致すると予測したロード / ストア命令間に, 投機的に依存関係を張る 7

鬼斬弐の設計エミュレーションの実行タイミング エミュレーション : 命令実行時に,out-of-order に行う Simple Scalar では, 命令フェッチ時に in-order に 実際の物理レジスタ上の値を使用 利点 : 1. 性能バグの検出が容易に バグがあった場合, 実行結果もおかしくなる 例 : 依存関係が解決していない命令を実行した場合, 結果もおかしくなる 2. データ系投機の実装が可能に 誤った値を使用しての実行が継続可能 8

状態変化の計算と更新 状態の変化の計算と, 更新をそれぞれ別のフェーズに分離 更新をイベントとしてタイムホイールに登録 1. current サイクルに登録されているイベントの処理 2. current サイクルの状態から次の状態を計算イベントとして登録 3. current を進める current cycle TimeWheel current state Event A 0 A = 1 B = 0 B 1 9

パイプラインの表現 PipelineNode と Pipeline の接続によって表現 PipelineNode Fetcher,Renamer などの機能を実現 Pipeline タイムホイール ストールの表現 : Pipeline( タイムホイール ) の current の更新を停止する事により実現 current current Fetcher Renamer Dispatcher Rename(op_1) Disparch(op_0) 10

マルチコア / マルチスレッド (SMT) への対応 1. 論理資源と物理資源のそれぞれを多重化, 識別可能に 論理資源 :PC, アドレス, 命令 アドレス空間の識別子を付加 物理資源 : コア / スレッド毎に必要なものを分けて多重化 コア毎に必要なもの : Fetcher,Renamer,RegisterFIle,PHT スレッド毎に必要なもの : FetchPC,RMT,InoderList,GlobalHistory 2. Fetcher/Retirer のマルチスレッド対応 Fetch/Commit 対象スレッドの決定と処理 11

鬼斬弐の実装 方針 : C++ で記述 オブジェクト指向, デザインパターン, テンプレート 拡張性のための仕組み Hook 各処理に対し, ユーザー定義のフックを仕掛けられるように OpExtraStateTable 命令毎に関連づけられたデータを管理するテーブル オリジナルのソースを編集することなく, 拡張可能に 12

その他の機能 特徴 開発環境 : MS Visual Studio/GCC の双方に対応 Visual Studio プロジェクト ファイルと,GCC 用 Makefile を一元管理 対応ターゲット : ISA:Alpha/PowerPC 64bit 最新の GCC Ver4 系クロスコンパイラを利用可能 SPEC CPU 2000/2006 の全ベンチマークを実行可能 周辺ツール等 クラスタ投入, データ集計 SPECCPU 2000/2006 実行用 XML 定義 パイプライン可視化ツール Knanata 13

パイプライン可視化ツール Kanata 14

比較と利用例 実行速度 (@Opteron 2.2GHz) SimpleScalar : 916 K insns/sec 鬼斬弐 : 68 K insns/sec コード量 SimpleScalar 鬼斬弐 : 40723 lines : 35394 lines 利用例 非レイテンシ指向レジスタ キャッシュ 共有部分 : 566 lines 通常のレジスタキャッシュ : 481 lines 非レイテンシ指向レジスタ キャッシュ : 870 lines 全てHookで記述 鬼斬本体側のソースには一切修正を行わず 15

付録 16

パイプラインのモデル パイプライン : Fetch Rename Dispatch Schedule Issue RegRead Execute RegWrite Commit Retire 鬼斬の PipelineNode: Fetcher Renamer Dispatcher Scheduler ExecUnit Retirer in-order out-of-order in-order フェッチ, リネーム :in-order 制御とデータに関する投機を行う 実行 :out-of-order リネーム時に予測した依存関係を満たすようスケジューリング コミット, リタイア :in-order 17

Hook Fetcher User Module シミュレータの各処理に対して, Fetch() Before(op) 前後に処理を追加 Hook 代替の処理を追加 処理の例 : フェッチ, リネーム 本来の処理 Around(op) Hook 鬼斬のソース コードを編集すること無く, ルーチンを追加可能 After(op) Hook 18

OpExtraStateTable Op bool branchdir; ユーザー モジュールが命令ごとに情報を記憶したい User Module OpExtraStateTable<bool> branchdirtbl; 19

今後の課題と Q&A 今後の課題 : バグ取り マルチプロセッサ周りの実装 メモリ モデル キャッシュ コヒーレンス プロトコル おまけ Q: 名前の由来は? A: 刀の名前 平安時代に作られた刀で, 渡辺綱と言う人がこの刀を使って鬼の腕を切った らしい 初代メインプログラマー : 渡辺くん 20

その他の機能 特徴 パラメータ設定 シミュレーション結果の出力 XML を利用 階層化された構造を容易に扱うことが可能 SMP/SMT 時のモジュール間接続の指定 周辺ツール等 クラスタ投入, データ集計 SPECCPU 2000/2006 実行用 XML 定義 パイプライン可視化ツール Knanata 21