1

コンピューター アーキテクチャのコースを受講しています。これまでのところ、私を助けているノートとビデオがある別の大学からこのウェブサイトを見つけました: CS6810, Univ of Utah . これらの一連のメモに取り組んでいますが、いくつかの例の問題について説明が必要です。私は現在、17-18 ページの問題 7 を見ています。解決策は 18 ページの注記に示されていますが、教授がどのように結論に達したのか、私にはやや確信が持てません。彼は自分のクラスのウェブページで、何の解決策も提供していないと述べているので、それは問題外です。

PDFが閲覧できない方は、以下の点が問題です。

レジスタ読み取り (RR) とレジスタ書き込み (RW) が 1 サイクルかかる 8 ステージのパイプラインを考えてみましょう。キー: 命令フェッチ = IF、デコード = DE、ALU = AL、データ メモリ = DM、ラッチ # = L#

L1-->IF-->L2-->DE-->L3-->RR-->L4-->AL-->L5-->AL-->L6-->DM-->L7- ->DM-->L8-->RR-->L9

次の一連の命令について、バイパスの有無にかかわらず、2 番目の命令のストール数を決定します。

  1. ADD R1 + R2 -> R3、ADD R3 + R4 -> R5 : 5 をバイパスせず、1 をバイパスして
  2. LD[R1] -> R2、ADD R2 + R3 -> R4 : 5 をバイパスせず、3 をバイパスして
  3. LD[R1] -> R2、SD[R2] -> R3 : バイパスなし 5、バイパスあり 3
  4. LD[R1] -> R2、SD[R3] -> R2 : バイパスなし 5、バイパスあり 1

それぞれがバイパスなしで 5 つのストールを生成する方法と、最初の 1 つがバイパスで 1 つのストールのみを生成する方法は理解していますが、バイパスを使用したスト​​ールが 2-4 でどのように生成されるかはわかりません。

どんな助けでも大歓迎です。

編集(さらに明確にするために、ケースがどのように見えるかについての私の理解):ST =ストール、ラッチが暗示されています

1.

IF-->DE-->RR-->AL-->AL-->DM-->DM-->RW
     IF-->DE-->ST-->ST-->ST-->ST-->ST-->RR-->AL-->AL-->DM-->DM-->RW (without)
     IF-->DE-->RR-->ST-->AL-->AL-->DM-->DM-->RW                     (with)

バイパスしないと、I2 は RR に入る前にストールし、RR に入る前に R3 が書き込まれるまで待機する必要があります。この理解は、すべてのケースで普遍的です。バイパスを使用すると、I2 は RR に入ることができますが、2 番目の ALU ステージの後、I1 によって演算が行われるまでストールします。

2.

IF-->DE-->RR-->AL-->AL-->DM-->DM-->RW
     IF-->DE-->ST-->ST-->ST-->ST-->ST-->RR-->AL-->AL-->DM-->DM-->RW (without)
     IF-->DE-->RR-->ST-->ST-->ST-->AL-->AL-->DM-->DM-->RW           (with)

バイパスを使用すると、I2 は RR に入ることができますが、R2 が処理されるまで待機する必要があり、これは I1 の 2 番目の DM ステージの後に発生します。

3.

IF-->DE-->RR-->AL-->AL-->DM-->DM-->RW
     IF-->DE-->ST-->ST-->ST-->ST-->ST-->RR-->AL-->AL-->DM-->DM-->RW (without)
     IF-->DE-->RR-->ST-->ST-->ST-->AL-->AL-->DM-->DM-->RW           (with)

バイパスを使用すると、I2 は RR に入ることができますが、R2 が処理されるまで待機する必要があり、これは I1 の 2 番目の DM ステージの後に発生します。

4.

IF-->DE-->RR-->AL-->AL-->DM-->DM-->RW
     IF-->DE-->ST-->ST-->ST-->ST-->ST-->RR-->AL-->AL-->DM-->DM-->RW (without)
     IF-->DE-->RR-->AL-->AL-->ST-->DM-->DM-->RW                     (with)

バイパスを使用すると、I2 は 2 番目の ALU ステージまでパイプラインに沿って続行でき、2 番目の DM ステージが終わるまで I1 によって処理されない R2 をプルできるようになるまでここで待機する必要があります。

もう1つ、すべてを理解していることを確認するために:

I1: R1+R2→R3、I2: SD[R4]<--R3

IF-->DE-->RR-->AL-->AL-->DM-->DM-->RW
     IF-->DE-->ST-->ST-->ST-->ST-->ST-->RR-->AL-->AL-->DM-->DM-->RW (without)
     IF-->DE-->RR-->AL-->AL-->DM-->DM-->RW                          (with)

バイパスしないと、同じ場所で同じ数の失速 (5) で失速することが私の理解です。ただし、バイパスを使用すると、I2 が ALU ステージを使用してレジスタ アドレスを計算し、ストアを作成するときに I1 の 2 番目の ALU ステージから情報を取得できるため、ストールは 0 になります。

4

1 に答える 1