プロセッサ設計教育のための 命令セット・スーパースカラシミュレータ の試作と評価 立命館大学 理工学研究科 高性能計算研究室 発表内容 ・研究背景・目的 M2 志水 建太 ・ハード/ソフト協調学習システム ・命令セットシミュレータ 2009/02/20 ・スーパースカラシミュレータ ・システムの評価 ・まとめ・今後の予定 1 研究背景と目的 研究背景 • • • • 半導体の高集積化 ハード/ソフト協調学習システムの開発 プロセッサ設計支援ツールの実装 プロセッサアーキテクチャの高速化 研究目的 • 命令セットシミュレータの実装 • スーパースカラシミュレータ(シングルサイクル)の実装 • プロセッサ設計時間の短縮と並列実行アーキテクチャの理解 2 ハード/ソフト協調学習システム 学 習プ シロ セ スッ テサ ム 設 計プ 支ロ 援セ ツッ ーサ ル ソフトウェア学習 ハードウェア学習 サンプル プログラム HDLによる プロセッサ設計 MONI シミュレータ MONIプロセッサ アーキテクチャ理解 HDL シミュレータ FPGAボードコンピュータ上で検証 プロセッサ設計 能力の習得 命令セット設計 命令セット アセンブラ プロセッサ モニタ 命令セット 定義ツール 命令セット シミュレータ プロセッサ デバッガ 3 命令セットシミュレータの特徴 命令セット 情報 命令形式の 定義から学習 命令セット 定義ツール 命令セット ・命令長 ・命令形式 ・動作 ・その他 定義した 命令セットの プログラミング 定義項目 ・命令セットの名前 ・レジスタファイル・メモリの幅と容量 ・フィールド,フォーマット形式 ・命令名,各命令の命令動作 ・疑似命令 アセンブリ プログラム 命令セット シミュレータ シミュレー ション結果 命令セット の評価 4 命令セット定義とアセンブリプログラミング • 命令語長は,8,16,32ビットから選択 • 3オペランドまで対応 • 命令動作は用意された中から選択(全70命令) – 算術・ビット演算子 : 各5命令, 関係演算子 : 4命令, シフト演算子 : 3命令など • 5つのアドレス指定モード – 絶対アドレス,レジスタアドレス,即値アドレス,PC相対アドレス,インデックスアドレス – 全部で205パターンの記述 • 4つのフラグ(ゼロ・ネガティブ・キャリー・オーバーフローフラグ) – 算術演算,ビット演算,シフト演算でセット コメント //例 EQU ABC ADD レジスタや数値を宣言 LOOP: LD JUMP ST HALT; END 5; $0 $0 レジスタは$で表現 $1 ABC; 各行の最後は ; [0]; LOOP; [$1+2] $0; プログラムの終わりはEND 5 命令セットシミュレータの構成 コマンド入力クラス コマンド入力 コマンド解析 実行クラス データ送信 通常実行 ブレイク実行 N命令実行 命令セット情報ファイル アセンブリプログラム 表示クラス 入出力クラス データ表示 データクラス メモリ レジスタ フラグ 実行回数 データ設定 データ送信 ファイル読込み ファイル出力 プログラムチェック シミュレーション 結果ファイル 6 シミュレーションコマンド コマンド 引数 意味 load file name 命令セット・プログラムの読込み save file name シミュレーション結果を作成 set pc / bp / stop / rf / dm レジスタ・メモリの設定 del bp ブレイクポイント削除 run none / bp / N 通常 / ブレイク / N命令実行 rst none / pc / bp / rf / sp / im / dm レジスタ・メモリのリセット list none / pc / bp / rf / sp / im / dm / inst レジスタ・メモリの表示 exit stop : 最大実行命令数 inst : 各命令の実行数と全命令実行数 シミュレータの終了 7 命令セットを用いたテスト • SOAR (2004年度 4回生が設計) - 全25命令,検証プログラム:Nまでの和,最大値,最大公約数,バブルソート 命令形式 Register Immediate Transfer JUMP 5 Opecode Opecode Opecode Opecode 2 Fn 3 3 Rs Rt Immediate Rt Immediate Immediate 3 Rd Rd Rd • SARIS (2008年度 4回生が設計) - 全22命令,検証プログラム:Nまでの和,Nの階乗,最大公約数,除算,根の判別 命令形式 Register Immediate3 Immediate8 JUMP 5 Opecode Opecode Opecode Opecode 2 Fn Fn 3 3 Rs Rt Immediate Rt Immediate Immediate 3 Rd Rd (Rd) • PSCSF (2009年度 4回生が設計) - 全27命令,検証プログラム:Nまでの和,最大値,素数判定,BCD加算,一次方程式 命令形式 Register Immediate5 Immediate8 JUMP 5 Opecode Opecode Opecode Opecode 3 Rs Rs Rs 3 Rt Rt 3 2 Rd Fn Immediate Immediate Immediate • コマンド・全205パターンやフラグが正しく動くことを確認 • 三つの命令セットを用いて,全てのプログラムが正しく動くことを確認 8 スーパースカラシミュレータの設計方針 • 2命令同時実行シングルサイクルプロセッサ 命令1 命令2 命令3 ストール 命令4 命令5 命令6 ストール 命令7 ストール • 2命令同時実行パイプラインプロセッサ 命令1 命令2 命令2 命令3 命令4 命令4 IF IF ID EX ストール IF IF MEM WB ID EX ID EX ストール IF MEM MEM WB WB ID EX MEM WB • ハザードとその対策の理解 – シングルサイクルでハザードとストールの理解 – パイプラインでフォワーディング,ストールや遅延分岐の理解 • スーパスカラアーキテクチャの理解 9 スーパースカラシミュレータの構成 表示クラス 実行命令 PC・SP メモリ・レジスタ データ・制御ハザード データパス リセットクラス メモリ書き込みクラス 実行クラス 全データ PC データメモリ エディタ 命令メモリ データメモリ プログラムチェック データチェック 1サイクル 通常 ブレイク Nサイクル ハザード検出 10 シングルサイクルプロセッサのデータパス CU 制御 ハザード検出 + データ ハザード検出 + PC + 命 令 メ モ リ レ ジ ス タ フ ァ イ ル A L U デ | タ メ モ リ A L U 1 + SP 1 -1 2 + + 2 1 + -1 0 1 -2 11 通常実行のデータパス pc_we dm_re2 dm_re1 CU im_re 制御 ハザード検出 rf_we1 rf_we2 + データ ハザード検出 + + PC + 命 令 メ モ リ レ ジ ス タ フ ァ イ ル A L U デ | タ メ モ リ A L U sp_re1 sp_re2 sp_we1 sp_we2 1 + SP 1 -1 2 + + 2 1 dm_we2 dm_we1 -1 0 1 -2 12 ハザード発生時のデータパス pc_we dm_re2 dm_re1 CU im_re dm_we2 制御 ハザード検出 rf_we1 rf_we2 + データ ハザード検出 + + PC + 命 令 メ モ リ レ ジ ス タ フ ァ イ ル A L U デ | タ メ モ リ A L U sp_re1 sp_re2 sp_we1 sp_we2 1 + SP 1 -1 2 + + 2 1 dm_we1 -1 0 1 -2 13 フォワーディングによるハザード対策 LD $0 MEM[$1] IF ID EX MEM WB ADD $1 $0 $1 IF ストール ストール ID EX MEM IF ストール ID EX MEM ADD $2 $0 $2 ADD $1 $0 $1 IF ID EX MEM WB ADD $2 $0 $1 IF ストール ID EX MEM WB IF ID EX MEM WB 命令3 14 分岐命令の遅延分岐 SUB $1 $1 $2 SUB $1 $1 $2 IF ID EX MEM ADD $3 $2 $0 BNEZ $0 LABEL IF ID EX MEM IF ID EX IF ID EX ADD $2 $1 $2 並べ ADD $3 $2 $0 替え BNEZ $0 LABEL ADD $2 $1 $2 命令5 命令5 IF ID 命令6 命令6 IF ID 15 シングルサイクルプロセッサの動作テスト • データパスの表示やエラー出力など,シミュ レータの機能が正しく動作することを確認 • 各命令の処理や境界値の変化も正しく動作す ることを確認 • プログラムを用いたテスト – 9個のテストプログラム – 除算,素数判定,三角形判定,一次方程式など • 全てのプログラムが正しく動作することを確認 16 プロセッサ設計支援ツールの評価 • 命令セット定義ツール – 様々な命令セットを設計することが可能 – 命令セットの定義と評価を繰り返し行う環境 • 命令セットシミュレータ – 表示項目が多く,デバッグがスムーズ – 検証プログラムが先にでき,プロセッサ設計時間の短縮 • 命令セットアセンブラ – 手書きで機械語にする手間が省け,プロセッサ設計のみに集中 – HDLシミュレータ上と実機上の検証時間やデバッグ時間の短縮 • プロセッサデバッガ・モニタ – 効率よいバグの発見で,デバッグ時間の短縮 – HDLシミュレータ上と実機上の動作の違いを的確に発見 17 システムの評価 • プロセッサ学習システム – 複数のアーキテクチャを学習 – MONIプロセッサ設計時間の短縮 – 独自のプロセッサ設計にスムーズに入れる • システム全体 – – – – FPGAボード上でプロセッサの検証が可能 ハードウェアとソフトウェアのトレードオフを学習 三人の学生が,アーキテクチャの設計と検証 独自のプロセッサを設計 18 まとめと今後の課題 まとめ • 命令セットシミュレータ – SOAR,SARIS,PSCSF命令セットを用いたテスト – 命令セットの評価,検証プログラムの作成 • スーパースカラシミュレータ – シングルサイクルプロセッサの処理,データパス,動作テスト – パイプラインプロセッサの処理の検討 • システムの評価 – プロセッサ設計時間の短縮 – 複数のプロセッサ設計,独自のプロセッサ設計 今後の課題 • 2命令同時実行のパイプラインプロセッサの実装 • 命令セット・スーパースカラシミュレータの評価 19
© Copyright 2024 ExpyDoc