0

5 ステージのパイプライン化された CPU には、次の一連のステージがあります。

  • IF – 命令メモリからの命令フェッチ。

  • RD – 命令のデコードとレジスタの読み取り。

  • EX – 実行: データおよびアドレス計算用の ALU 演算。

  • MA – データ メモリ アクセス – 書き込みアクセスの場合、RD 状態でのレジスタ読み取りが使用されます。

  • WB – ライトバックを登録します。

次の一連の命令を検討してください。

I1: L  R0, loc 1       ; R0 <=M[loc1]
I2: A  R0, R0 1        ; R0 <= R0 + R0
I3: S  R2, R0 1        ; R2 <= R2 - R0

各ステージに 1 クロック サイクルかかるとします。I1 のフェッチから始まる上記の一連の命令を完了するのにかかるクロック サイクル数は?

だからここに私の解決策があります。

    1   2   3   4   5   6   7   8   9   10  11  12  13
I1: IF  RD  EX  MA  WB
I2:     IF  -   -   -   RD  EX  MA  WB
I3:         IF  -   -   -   -   -   -   RD  EX  MA  WB

このようにして、合計13サイクルを取得しています。オペランド転送は質問で明示的に言及されていないため、私はそれを想定しています。そのため、登録はWBステージ後にのみ利用可能になります. ただし、オプションは次のとおりです。

  • A.8
  • B.10
  • C.12
  • D.15
4

2 に答える 2

2

書き込みアクセスの場合、RD ステージで読み取られたレジスタが使用されます。これは、オペランドが値を MA ステージに転送できない場合を意味します。したがって、オペランド転送は他のステージで実行できると想定できます。

データ転送の場合:

T1 T2 T3 T4 T5 T6 T7 T8

IF RD EX MA WB
-IF RD - EX MA WB
--IF - RD EX MA WB

したがって、答えは 8 になります。

http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/forward.html

于 2016-11-05T11:44:16.983 に答える
1

与えられた問題は、以下の行のために構造的な危険に基づいています

" MA - データ メモリ アクセス - 書き込みアクセスの場合、RD 状態でのレジスタ読み取りが使用されます"

データ依存性があるように見えますが、データ依存性ではありません。したがって、質問ではデータ転送については何も言及されていません。

構造的ハザードはロード命令用です。したがって、次の命令の実行は最初の命令の実行まで開始できません。これは、M[loc1]によって参照されるメモリ位置の実効アドレスがパイプラインの実行フェーズ中にのみ計算されるためです。そのため、それまではバスが解放されないため、2 番目の命令をフェッチできません。したがって、2 番目の命令はさらに2 クロック サイクルかかります。

また、3 番目の命令は、最初の命令がデータをレジスタ R0 に正常にロードするまで実行を開始できません。これにより、3 番目の命令にさらに 3 クロックサイクルが与えられます。

Hence, total clock cycles = (CC for I1) + (CC for I2) + (CC for I3) 
= 5 + 2 + 3
= 10 clock cycles
于 2014-02-14T09:59:22.343 に答える