3

マルチスレッドの高度に並列化されたアプリケーションを作成しています。私はすでに SSE アクセラレーション スレッド クラスを作成しています。MMX アクセラレーション スレッド クラスを記述した場合、両方を同時に実行すると (コアごとに 1 つの SSE スレッドと 1 つの MMX スレッド)、パフォーマンスは著しく向上しますか?

この設定はメモリの待ち時間を隠すのに役立つと思いますが、時間を費やす前に確認したいと思います.

4

2 に答える 2

8

SSEおよびMMX命令セットは、CPU内の同じベクトル処理実行ユニットのセットを共有します。したがって、SSEスレッドとMMXスレッドを実行すると、2つのSSEスレッド(または2つのMMXスレッド)を実行する場合と同じリソースが各スレッドで使用可能になります。唯一の違いは、SSEには存在するがMMXには存在しない命令にあります(SSEはMMXの拡張であるため)。ただし、その場合、MMXには高度な手順がないため、MMXの速度が低下する可能性があります。

したがって、答えは次のとおりです。いいえ、2つのSSEスレッドを実行する場合と比較してパフォーマンスが向上することはありません。

于 2010-05-15T14:07:05.600 に答える
-1

SSEとMMXは同じレジスタを使用するため、どちらを使用してもかまいません(もちろん、MMXサッキングとSSEが役立つことを除けば)

より良い質問は、SSEがターゲットCPUにどのように実装されているかです。コアごとにSSEユニットがありますか?(おそらく)もしそうなら、あなたはすべてのスレッドでSSE命令を実行したほうがよいでしょう。

コア間で共有SSEユニットがある場合は、異なるスレッドがそれをめぐって争うため、複数のスレッドでSSE命令を実行してもそれほどメリットはありません。(ただし、CPUが実際にスレッド間でSSEユニットを共有しているかどうかはわかりません。したがって、これを架空のケースと見なしてください)

于 2010-05-15T14:07:44.620 に答える