Document

プロセッサ設計教育のための
命令セット・スーパースカラシミュレータ
の試作と評価
立命館大学 理工学研究科
高性能計算研究室
発表内容
・研究背景・目的
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