パイプライン化されたアーキテクチャで構造的危険はいつ発生しますか?

cs.stackexchange https://cs.stackexchange.com/questions/1936

質問

いつの比較的簡単な例を探しています 構造的危険 パイプラインのアーキテクチャで発生します。

私が考えることができる唯一のシナリオは、パイプラインのさまざまな段階でメモリにアクセスする必要がある場合です(つまり、初期命令フェッチステージ、およびメモリの後のメモリ読み取り段階)。

SuperScalarなど、より複雑なアーキテクチャには、より多くの構造的危険があると思います。命令が実行ユニットに派遣されている場合、それは構造的危険としてクラスされますが、ユニットが使用されているためキューに留められますか?

これが非常にアーキテクチャ固有の場合は、MIPSまたは同様のものを想定してください。

役に立ちましたか?

解決

スカラーの実装では、特定の実行ハードウェアが完全にパイプライン化されていない場合、構造的ハザードが存在する可能性があります。一部の操作(たとえば、乗算、特に部門)の場合、完全なパイプライニングを実装するコストは、操作の予想頻度で価値があるとは見なされません。

スーパースカラーの実装では、すべての実行ユニットがすべての操作を実行できるわけではないため、構造的危険が存在する可能性があります。たとえば、4つのメモリ操作または4つの乗算の実行の開始をサポートすることは、異なるタイプの操作が利用可能である可能性が高いため、4幅の問題に制限されている場合、比較的高価になります。

登録ファイルの読み取りと書き込みポート制限は、構造的危険も導入する可能性があります。最悪のケースをサポートするのに十分な読み取りおよび書き込みポートを提供することは可能ですが、最悪のケースを満たすために登録ファイルポートのコスト(特別なケースを特別に処理する必要がないというデザインの複雑さがあっても)は価値がないと見なすことができます悪いケースが十分にまれまたは非批判的である場合の利点。たとえば、一部のオーダーオブオーダー実装では、オペランドキャプチャ(操作がスケジューラーに入るまでに利用できるオペランドをつかむことと実行が予定されている時間)を使用し、全幅操作に必要なレジスタ読み取りポートを提供します(オペランドかどうか操作がスケジューラに入るとき、または操作が実行のためにスケジュールされたときに以前に読み取られます。

(単一のレジスタソースオペランドでの順序的な実装、結果への影響、および操作の使用であっても、双方向の問題で4つのレジスター読み取りポートをサポートする必要がありません。)

同様に、銀行はキャッシュによく使用されます(登録ファイルには提案されています)。たとえば、一般的なケースでは、2つのアクセスが16の銀行のうち同じ銀行にマッピングされる可能性は低いです。銀行の保管は、アクセスポートを追加するよりも大幅に安価です。銀行の紛争の可能性は、構造的な危険を表しています。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top