質問

SSEレジスタは、論理プロセッサ(ハイパースレッディング)との間で共有または重複していますか? 私は(インテルハイパースレッディングを持つプロセッサのための30%を主張する)は、通常のプログラムのようSSE重いプログラムの並列化のスピードアップと同じ種類のを期待することはできますか?

役に立ちましたか?

解決

これは、ハイパースレッドプロセッサがスレッド間レジスタファイルを共有したり、私はそうでない場合はHTのスレッド間のコンテキストスイッチ時間が非常に高くなるので、彼らは、実際には別個のものであることを推測する(二つの異なるものを持っている場合は、Intelのドキュメントから私には不明ですが、これは)純粋に推測されます。

高速化に関しては - あなたの命令ミックスとスケジューリングに依存しようとしています。 HTのCPUは、余分な実行リソース(のALU、ロード/ストアユニット、など)を持っていない、パフォーマンスの改善は、特に現代のプロセッサ上で、典型的なコードから、それらの資源のより良い利用に起因して、合理的な金額を費やしていることを忘れないでください時間の実行を続行する前に完了するために、メモリのロードとストアを待ってブロックされました。 HTは、これらのロードとストアが読み取りに1つのスレッドがストールするようにインターリーブすることができ、他はで切り替えて、以前にアイドルに座っていた実行リソースの使用を開始することができます。

私はあなたがSSEプログラムはOPSを算術メモリOPSの比に依存しますマルチスレッド化して見ることが性能向上の種類を推測します。 SSEは、メモリからレジスタ、例えば、あなたのSSEプログラムのロード4が、それらに万のSSE演算を行い、再び4つのレジスタを書き込んだ場合、あなたはメモリがあるためアクセスオーバーラップすることができるというHTからの利点の多くを見ることはそうじゃありませんあなたのプログラムの実行時間の99%は、SIMDのALUではなく、メモリアクセスに費やすことになるだろう。

あなたのプログラムは非常に計算し、重い場合、その場合にはあなたのコードがフルにアクセスすることができましたので、

一方、その後、あなたのプログラムをマルチスレッドは、マルチコアプロセッサ上で、パフォーマンスを大幅に向上させることができ、そしてあなたに30%の改善よりもはるかに良いを与えるかもしれません一度に複数のコアの実行リソースます。

他のヒント

これらは論理的に重複している - 各スレッドは、自身の状態を取得します。物理的には、それらを共有することができる - あなたのハイパースレッディングの実装に依存します。

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