2021:BKSC 特徴

 最後に2021BKSCの特徴。

・連鎖性言語のような動作
 前の命令の出力を入力として使用する。汎用レジスタへの書き込みはそれ用の命令で行う。

・表形式の分岐
 分岐命令の分岐先指定には相対分岐と絶対分岐の他に表分岐というのを考えている。これはプログラムの先頭部分に分岐先を列挙したテーブルを用意し、分岐命令でその表の項目番号を指定したらその番地に分岐する。これは分岐予測のテーブルとしてそのまま使える。

・明示的な並列実行
 前の命令の結果を受け取って動作するのが基本のため、アウトオブオーダ実行には向かない。しかし並列実行する箇所を明示的に指示することによりCPIを向上できる。
 通常実行している命令列を並列度0とする。BRN命令(飛ばない分岐命令)の次から始まり、BRN命令の飛び先の手前までが並列実行の指定となり、並列度+1となる。命令列の並び順でいうと先にくる並列度+1の命令からリソースは優先的に割り当てられ、それよりも低い優先度の命令列は依存関係が発生しないかぎり同時に動作する。レジスタの宣言やストア命令をどう扱うかは要検討。

・汎用レジスタ内のデータを命令列として実行するEVAL命令
 EVAL %Ra,steps で指定したサイクル数を上限として%Ra内のデータを命令列として実行する。実際にはどのような効果があるのかわからないが命令エミュレーションには有用そう。これもレジスタの宣言やストア命令をどう扱うかは要検討。

・算術演算の拡張機能
 演算結果の補助出力を使うことにより、整数加減算は結果と同時に飽和演算の結果も得られる。
 浮動小数点演算は丸め指示を行っているが、これを無効にして次の浮動小数点演算に渡すことにより丸めによる誤差のない積和演算を可能にする。

・スーパーバイザーモードでのメモリ管理
 これはOS側からの要請が主になるので命令セットの体系とはあまり関係がない。別に考える。

・汎用レジスタの型
 汎用レジスタは2のn乗バイト単位のサイズとSIMD演算のための区切り(2のn乗バイト単位)がある。以前は算術演算のための整数型や浮動小数点型を考えていたがこれは演算命令側で判断するようにしてなくした。これにより汎用レジスタはInvalidとサイズ/区切りが定義済みのものに分けられる。サイズは暗黙のうちに決まるものではなく明に設定して使用する。Invalidな汎用レジスタの読み書きはトラップが発生する。


 いまや夕べははるかにきたり、拙講もまた全課を終えた……といきたいところだがまだ続く。これを元にエミュレータなり逆アセンブラなり作成し、矛盾点があれば解消し、よりシンプルになるように改善していかなければならない。

 お付き合いくださりありがとうございました。来年にご期待ください。

https://qiita.com/advent-calendar/2021/keisanki

"2021:BKSC 特徴" へのコメントを書く

お名前
ホームページアドレス
コメント