差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

original_computer:mist1016a [2014/12/20 20:42] (現在)
ライン 1: ライン 1:
 +=====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で、サイクルは以下のようになっています。
 +|--|C0|C1|C2|C3|C4|C5|C6|
 +|T1|データフェッチ|イミディエイトフェッチ・演算|レジスタ格納(条件分岐)|||||
 +|T2|||データフェッチ|イミディエイトフェッチ・演算|レジスタ格納(条件分岐)|||
 +|T3|||||データフェッチ|イミディエイトフェッチ・演算|レジスタ格納(条件分岐)|
 +
 +====JPRを使用した条件分岐による高速化====
 +逐次処理方式のプロセッサで条件分岐を行う場合、一定のロスが発生します。たとえば以下のプログラムを例とします。
 +<code c>
 +
 +main(){
 +  char i;
 +  do{
 +    i++;
 +  while(i < 100);
 +}
 +
 +</​code>​
 +このプログラムではiが100になるまでループを繰り返します。つまり、100回分岐するか否かをチェックすることになります。このとき一回一回演算及び分岐チェックを2つの命令で行うと、最悪199命令必要になる可能性があることがわかります。新たな方式では、あらかじめジャンプ先を専用レジスタへライトしておき、条件を満たすときだけそのレジスタのデータをPCへ代入します。また、分岐チェックと演算を1命令で実現させることにより、上記の命令では150%程度の高速化が望めました。ソフトウェアループの回数が多くなるに従ってこの方式は有効になり、2倍3倍と高速化が望めます。
 +
 +
 +====結果====
 +アクセス主権によりブート処理の高速化と、実験がしやすくなった。また新たな条件分岐スタイルを提案し実現させたが、分岐先が1つの場合のみ有効で、複数の分岐先がある場合は既存の方式とあまりからない事が上げられる。これはジャンピングレジスタ(JPR)を複数またはスタックにすることにより解決できる可能性がある。