3

私はマイクロプログラミングについて学んでいますが、マイクロ命令が実際に何であるかについて混乱しています。MIPS アーキテクチャを使用しています。私の質問は次のとおりです

たとえば、ADD 命令があるとします。このマイクロ命令はどのようになりますか? add 命令に含まれるマイクロ命令の数。MIPS の基本命令のマイクロ命令のリストをオンラインで確認できる場所はありますか?

マイクロプログラムされた ADD 命令のビット文字列を特定するにはどうすればよいですか?

4

2 に答える 2

3

マイクロプログラミングは、より単純な「マイクロ命令」の観点から、複雑な命令セットアーキテクチャ(x86など)を実装する方法です。MIPSはRISC命令セットアーキテクチャであり、通常はマイクロプログラミングを使用して実装されないため、ADD命令のマイクロ命令はゼロです。

あなたの特定の質問に答えるには、あなたの特定のマイクロアーキテクチャの定義が何であるかを知る必要があります。

于 2011-07-18T22:41:16.270 に答える
2

これは、レジスタの 1 つに をロードしEPC、それに 4 バイトを追加する方法の例です。

lw      t0, 20(sp)      // Load EPC
addi    t0, 4           // Add 4 to the return adress
sw      t0, 20(sp)      // Save EPC

使用できる命令は「たくさん」あります。MIPS 命令セットはこちらで確認できます。私の謙虚な意見では、MIPS は本当によくできていて、簡単に習得できます。楽しい事実として、最初のプレイステーションは MIPS CPU を使用していました。

指示例

  • lw= ロードワード
  • la= ロードアドレス
  • sw= 単語を保存
  • addi= イミダートを追加

次に、次のような多くの条件付き命令があります。

  • bne= ブランチが等しくない
  • bnez= ブランチがゼロに等しくない

これらを使用jして、アドレスにジャンプします。

これは、MIPS 用に一度書いた例外ハンドラーの例です。これは外部ソース ハンドラーです。

External: 
        mfc0    t0, C0_CAUSE        // We could aswell use 24(sp) to load CAUSE
        and     t0, t0, 0x02000     // Mask the CAUSE
        bnez    t0, Puls            // If the only character left is 
                                    // "not equal zero" jump to Puls

        j   DisMiss                 // Else jump to DisMiss

External上記の例では、ジャンプ先となるエントリ ポイントを定義しDisMissています。to ループで行っているように、通常は自分自身にジャンプします。

ここで使用される他の命令もいくつかあります。

  • mfc0= コプロセッサ 0 から移動

ラベルを処理するには、この質問/回答を確認することをお勧めします。

MIPS を使用したマイクロプログラミングに関するいくつかのリソースを次に示します。

于 2011-07-04T14:08:10.970 に答える