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


8

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

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

スーパースカラーなどのより複雑なアーキテクチャーには、より多くの構造上の危険があると思います。命令が実行ユニットにディスパッチされたが、ユニットが使用中であるためにキューに入れられた場合、それは構造的ハザードとして分類されますか?

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

回答:


6

スカラー実装では、特定の実行ハードウェアが完全にパイプライン化されていない場合、構造的な危険が存在する可能性があります。一部の演算(乗算、特に除算など)では、予想される演算の頻度に対して、完全なパイプラインを実装するコストは価値があるとは見なされない場合があります。

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

レジスタファイルの読み取りポートと書き込みポートの制限も、構造上の危険をもたらす可能性があります。最悪のケースをサポートするのに十分な読み取りおよび書き込みポートを提供することは可能ですが、最悪のケースを満たすためのレジスタファイルポートのコストは(例外的なケースを特別に処理する必要がないという設計の複雑さの利点があっても)価値がないと考えることができます悪いケースが非常にまれであるか重要でない場合の利点。たとえば、一部の順不同の実装は、オペランドキャプチャを使用し(操作がスケジューラーに入る時間と実行がスケジュールされる時間の間に利用可能になるオペランドを取得)、全幅操作に必要な数よりも少ないレジスター読み取りポートを提供します(オペランド操作がスケジューラーに入るとき、または操作の実行がスケジュールされているときに、以前に利用可能だったものが読み取られます)。

(順序どおりの実装であっても、結果の転送と単一のレジスタソースオペランドを使用した演算の使用により、双方向の問題で4つのレジスタ読み取りポートをサポートする必要性が少なくなります。)

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.