3

コンピューターの構成と設計:データ転送に関するハードウェア/ソフトウェアインターフェイスのセクション4.7を読んでいます。本の例では、レジスタファイルの転送があります(これは、本のでの表示とまったく同じです) 。

なぜレジスタファイル転送が必要なのですか?レジスタ内のデータは、クロックの前半で書き込まれ、クロックの後半で読み取られるため、転送せずに安全である必要があります。

上記のリンクに示されている例を明確にするために、左側の網掛けは書き込みReg、右側は読み取りを意味します。

ありがとう !

4

2 に答える 2

2

コンピュータの組織と設計の図4.53、(c)2009 Elsevier

ストールを防ぐためにレジスタファイル転送が必要です。

よく見ると、2番目の命令(and $12, $2, $5)はレジスタを使用する必要$2がありますが、前の命令()で計算された値はsub $2, $1, $3、クロックサイクル5でレジスタファイルに書き戻されます。したがって、レジスタファイルの転送が原因ではない場合、 2番目の命令は、レジスタ$2が書き戻されるまでストールする必要があります。転送は、命令1のALU演算の結果と命令2のALU演算の最初の引数の間にスカイブルーの線で示されています。

同様に、3番目の命令(or $13, $6, $2)も、最初の命令によって実際にレジスタファイルに書き戻される前に$2を使用する必要があります。したがって、ストールを防ぐために、レジスタ転送を使用して、最初の命令の結果を3番目の命令の引数として使用します。

一方、4番目の命令(add $14, $2, $2)はパイプラインレジスタ転送を使用する必要はありません。最初の命令の結果はサイクル5の前半で書き戻されるため、4番目の命令で必要になったときにその内容はすでに更新されています。命令。

于 2012-11-13T16:06:51.313 に答える
2

受け入れられた答えは実際には目前の質問に答えていないので、ここで試してみます。デザインが前半でデータを書き込み、後半で読み取る場合、問題は発生しません。ただし、実際の「レジスタ」はクロックの立ち上がりエッジでデータを書き込むため、上記は当てはまりません。2つの命令が同じレジスタの読み取りと書き込みを行う場合、データは同じサイクルでレジスタファイルの書き込み入力から読み取り出力に転送される必要があります。

于 2020-07-14T21:53:47.710 に答える