1

MIPSとアセンブリコードについて何かを知らなければならないテストのために勉強しようとしています。与えられた質問に対する正解だと思うものを書こうとしますが、私が正しいかどうかはわかりません

  1. MIPSのダイレクトオペランド32ビットオペランドに32ビット値を含めることはできますか?

    最初の16ビットはオペコードとソース+ファイナルレジスタ用に予約されているので、「いいえ-決して」とは思いません。それは正しいですか、それとも任意の32ビット値を含むことができるいくつかの命令がありますか?

  2. 指示の時間があります(IF = 400ps、ID = 500ps、EX = 450ps、MEM = 500ps、WB = 150ps)

    時計のタクトは何ですか

    a)パイプラインのないプロセッサ?
    b)パイプラインを備えたプロセッサ?

    a)は2000ps(すべての時間の合計)であり、b)500ps(テーブルで最大の時間)だと思いますが、繰り返しになりますが、よくわかりません。

  3. 私は次のアセンブリコードを持っています:

    0x0000      addi t0, $0, 5
    0x0004  loop:   beq t0, $0, done
    0x0008      nop
    0x000C      lw t1, 0x4($0)
    0x0010      lw t2, 0x24($0)
    0x0014      addi t0, t0, -1
    0x0018      j loop
    0x001C      nop
    0x0020  done
    

    私はそれが何をするのか100%確信していません(0x4($0)負荷のある操作の結果が何であるかを完全に理解していないため)。forサイクルがあることを知っています(for t=5, ,t >0 t--)。

    問題は、このキャッシュのヒット率とミス率とは何ですか。また、どのように計算しますか。

少なくとも最初の2つの質問に答えることができれば、それは素晴らしいことです。

4

2 に答える 2

2
  1. MIPS 32 ビットについて話している場合、もちろん、タイプ I の命令に 32 ビットの即値を含めることはできません。このような命令のレイアウトは (opcode, rs, rt, IMM) で、サイズは (6、5、5、16) ビットです。したがって、即値はちょうど 16 ビット サイズです。もちろん、アーキテクチャが 64 ビットの場合は、より長い即値を使用できます。

  2. 命令実行のレイテンシについて言及していると思います。ご指摘のとおり、パイプラインがない場合は、すべてのステージの時間を追加する必要があります。プロセッサがパイプラインを使用する場合、クロックは最も遅いステージに一致するように設定する必要があります。あなたの場合、デコードとメモリの両方の段階で500psです。

  3. lw t1, 0x4($0)は、メモリ アドレス 0x4 ($0 は常にゼロを含むレジスタ 0 を指します) からワードをロードし、その値を に格納しますt1。したがって、コードを注意深く見ると、常に 0x4 と 0x24 の位置からデータをロードすることがわかります。最初にキャッシュが空であると仮定すると、最初の反復で 2 つのミスが発生し、次の反復では他のミスは発生しません。したがって、ミス率は (1*2) / (5*2) = 2/10 = 1/5 になります。ただし、キャッシュがデータをブロック単位で転送するかどうかを考慮する必要があります。その場合、最初のロードで、たとえば 64 バイトを含む大きなブロックが転送されることがあります。これにより、2 番目の読み込み操作がミスしないようになるため、ミス率は 1/10 に減少します。しかし、この単純なプロセッサではそうではないと思います。

参考までに、ここには MIPS アーキテクチャと ISA に関する多くの情報があります。また、コンピューター アーキテクチャに関する古典的な本にも興味があるかもしれません: Computer Architecture: A Quantitative Approach

于 2012-05-26T10:47:53.060 に答える