MIST1032Aプロセッサ

演算ビット数16bit
アドレス空間16bit
実行可能命令MOV,ADD,ADC,SUB,SBB,INC,DEC,NOT,AND,OR,XOR,NAND,XOR
レジスタ(全レジスタ16bit)汎用A~J,JPR(ジャンピングレジスタレジスタ),INDEX,STACK,PC,FLAG

サイクル

2サイクルフェッチの3段パイプラインCPUで、サイクルは以下のようになっています。

C0C1C2C3C4C5C6
T1データフェッチイミディエイトフェッチ・演算レジスタ格納(条件分岐)
T2データフェッチイミディエイトフェッチ・演算レジスタ格納(条件分岐)
T3データフェッチイミディエイトフェッチ・演算レジスタ格納(条件分岐)

JPRを使用した条件分岐による高速化

逐次処理方式のプロセッサで条件分岐を行う場合、一定のロスが発生します。たとえば以下のプログラムを例とします。

main(){
  char i;
  do{
    i++;
  while(i < 100);
}

このプログラムではiが100になるまでループを繰り返します。つまり、100回分岐するか否かをチェックすることになります。このとき一回一回演算及び分岐チェックを2つの命令で行うと、最悪199命令必要になる可能性があることがわかります。新たな方式では、あらかじめジャンプ先を専用レジスタへライトしておき、条件を満たすときだけそのレジスタのデータをPCへ代入します。また、分岐チェックと演算を1命令で実現させることにより、上記の命令では150%程度の高速化が望めました。ソフトウェアループの回数が多くなるに従ってこの方式は有効になり、2倍3倍と高速化が望めます。

結果

アクセス主権によりブート処理の高速化と、実験がしやすくなった。また新たな条件分岐スタイルを提案し実現させたが、分岐先が1つの場合のみ有効で、複数の分岐先がある場合は既存の方式とあまりからない事が上げられる。これはジャンピングレジスタ(JPR)を複数またはスタックにすることにより解決できる可能性がある。