データハザードとMIPSのbeqによる転送について?

qwerty9898

なぜ最初addに転送が必要なのですか?

                    # stage:
add $1, $2, $3      # WB
add $4, $5, $6      # MEM
nop                 # EX
beq $1, $4, target  # ID

beqが必要なので$1、最初にaddWBステージを実行しようとしている場合beq、レジスタファイルを読み取ろうとしているIDステージ以降転送は必要ありませんか?私の本には、beqデータの危険を回避するために転送が必要なる前の2番目と3番目の命令が記載されています。


編集:私はこのリンクスライドページ11で私が意味したことを正確に見つけました; 最初のものaddが必要ないという私の別の混乱を解決する別のスライドは、別の技術の 特別なハードウェア、スライドページ58によるものです。

アラン・メリゴット

同期デジタルシステムでは、サイクル中に2つの異なるフェーズがあります。最初のフェーズでは、オペランドが読み取られ、演算子によって変換されます。第2フェーズでは、結果のデータがレジスタに書き込まれます。実装に応じて、これらのフェーズは、前半と後半の期間、または完全な期間とクロックの立ち上がりエッジに対応します。

いずれの場合も、重要な側面は、同じレジスタを(最初のフェーズで)読み取り、(最後に)変更できることです。これが、次のようなアクションを実行できる理由です。

pc <= pc+4

単一のサイクルで。

あなたが提起する問題では、まさにそれが起こります。

アクション

  add $1, $2, $3      # WB

パイプラインレジスタを最初のフェーズで結果とともに読み取り、サイクルの最後に$ 1に書き込みます。一方

 beq $1, $4, target  # ID

最初のフェーズで$ 1と$ 4を読み取り、サイクルの最後にpplineが登録した結果を書き込みます。したがって、転送しない場合、書き込まれるのは$ 1の以前の値になります。

(以下のコメントに従って編集)

これらの説明はすべて真実です。ブランチは標準のハードウェアで処理されます。その場合、比較は「EX」段階でALUによって行われ、PCはこの段階の終わりに更新されます。

しかし、これは2サイクルの分岐ペナルティにつながります。このペナルティを減らすために、HWを追加してIDステージで比較を実行できます。その場合、比較で値を計算する必要がある場合(この例では$ 1として)、ストールが必要になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

eventfdによるスレッド間でのデータ転送

分類Dev

データ転送に関するAWSの請求レートについて説明してください

分類Dev

PHP プロセスで資格情報をハードコーディングして、転送時にユーザー名/パスワードのプロンプトが表示されないようにする方法

分類Dev

OpenCLデータ転送の方法について完全に混乱しました

分類Dev

XMLノードパスをパラメーターとしてgroovyのメソッドに転送するにはどうすればよいですか?

分類Dev

ビーコンを使用して2つのAndroidデバイス間でデータを転送するにはどうすればよいですか?

分類Dev

TensorFlowキューとCPU <-> GPU転送について理解する

分類Dev

HTTP仕様:データのハッシュがサーバーに認識されているため、データ転送なしのPUT

分類Dev

IVectorのReplaceAllメソッドを使用して、あるIVectorから別のIVectorにデータを転送するにはどうすればよいですか?

分類Dev

データを転送するときにSwiftの興味深いNSExceptionError

分類Dev

Segueによるデータの転送(Objective-c)

分類Dev

HTTPを介して大量のデータを転送するにはどうすればよいですか?

分類Dev

ボタンクリック後にデータグリッドのチェックボックスを選択してデータを転送するにはどうすればよいですか?C#とSQL Server

分類Dev

ローカルポート転送とリモートポート転送のどちらを使用するかについて混乱していますか?

分類Dev

CosmosDBのドキュメントからAzureSQLデータベースにデータを転送するにはどうすればよいですか?

分類Dev

転送によってブラウザのアドレスバーのURLが変更されない

分類Dev

PSCPを介して複数のホストとデータを転送するにはどうすればよいですか?

分類Dev

MIPS:BEQを16進マシンコードに計算する

分類Dev

時間の粒度に基づいて2つのデータフレーム間で値を転送します

分類Dev

データベースに転送する前にテキストフィールドの値を減らすにはどうすればよいですか?

分類Dev

arangodbに転送しようとすると、データが混同されます

分類Dev

クリックハウスから別のマシンで実行されているPostgreSQLにデータを転送する

分類Dev

ユーザーフォームで(ComboBox1を使用して)同じワークブックの別のシートにデータを転送するにはどうすればよいですか?

分類Dev

TCPで転送されるRTPペイロードを取得する方法(ヘッダーの削除について)

分類Dev

1つのテーブルから複数のテーブルにデータを転送することは可能ですか?それらのテーブルはそのデータを含むテーブルから作成されています

分類Dev

2つの部分的に異なるArrayList間でデータを転送する

分類Dev

querydefから複数のフィールドを取得してデフォルトの電子メールに転送しようとしています

分類Dev

不足している日付をPythonPandasデータフレームに転送

分類Dev

一定量のデータが転送された後にChromeがハングする-使用可能なソケットを待機しています

Related 関連記事

  1. 1

    eventfdによるスレッド間でのデータ転送

  2. 2

    データ転送に関するAWSの請求レートについて説明してください

  3. 3

    PHP プロセスで資格情報をハードコーディングして、転送時にユーザー名/パスワードのプロンプトが表示されないようにする方法

  4. 4

    OpenCLデータ転送の方法について完全に混乱しました

  5. 5

    XMLノードパスをパラメーターとしてgroovyのメソッドに転送するにはどうすればよいですか?

  6. 6

    ビーコンを使用して2つのAndroidデバイス間でデータを転送するにはどうすればよいですか?

  7. 7

    TensorFlowキューとCPU <-> GPU転送について理解する

  8. 8

    HTTP仕様:データのハッシュがサーバーに認識されているため、データ転送なしのPUT

  9. 9

    IVectorのReplaceAllメソッドを使用して、あるIVectorから別のIVectorにデータを転送するにはどうすればよいですか?

  10. 10

    データを転送するときにSwiftの興味深いNSExceptionError

  11. 11

    Segueによるデータの転送(Objective-c)

  12. 12

    HTTPを介して大量のデータを転送するにはどうすればよいですか?

  13. 13

    ボタンクリック後にデータグリッドのチェックボックスを選択してデータを転送するにはどうすればよいですか?C#とSQL Server

  14. 14

    ローカルポート転送とリモートポート転送のどちらを使用するかについて混乱していますか?

  15. 15

    CosmosDBのドキュメントからAzureSQLデータベースにデータを転送するにはどうすればよいですか?

  16. 16

    転送によってブラウザのアドレスバーのURLが変更されない

  17. 17

    PSCPを介して複数のホストとデータを転送するにはどうすればよいですか?

  18. 18

    MIPS:BEQを16進マシンコードに計算する

  19. 19

    時間の粒度に基づいて2つのデータフレーム間で値を転送します

  20. 20

    データベースに転送する前にテキストフィールドの値を減らすにはどうすればよいですか?

  21. 21

    arangodbに転送しようとすると、データが混同されます

  22. 22

    クリックハウスから別のマシンで実行されているPostgreSQLにデータを転送する

  23. 23

    ユーザーフォームで(ComboBox1を使用して)同じワークブックの別のシートにデータを転送するにはどうすればよいですか?

  24. 24

    TCPで転送されるRTPペイロードを取得する方法(ヘッダーの削除について)

  25. 25

    1つのテーブルから複数のテーブルにデータを転送することは可能ですか?それらのテーブルはそのデータを含むテーブルから作成されています

  26. 26

    2つの部分的に異なるArrayList間でデータを転送する

  27. 27

    querydefから複数のフィールドを取得してデフォルトの電子メールに転送しようとしています

  28. 28

    不足している日付をPythonPandasデータフレームに転送

  29. 29

    一定量のデータが転送された後にChromeがハングする-使用可能なソケットを待機しています

ホットタグ

アーカイブ