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