-3

SSE 4.2 perform comparation on two operands of 16 bytes at a time. But it is also possible to compare two operands of 8 bytes at a time with the ordinary processor instructions.

Difference is not so large, to have the special hardvare realization of such comparison. Is SSE 4.2 so irrelevance, or I missed something?

4

4 に答える 4

2

x64 プロセッサは SSE2 のみが保証されています。CPUID を使用して ( 経由でCPUID.01H:ECX.SSE42[Bit 20] flag) SSE 4.2 のサポートを確認する必要がありますが、SSE 2 は 経由で 16バイトの比較をサポートしてい_mm_cmpeq_epi8ます。

于 2012-06-18T16:38:56.910 に答える
1

4.2 を除くすべての SSE が「一般的に役立つ」命令を追加したことは事実ですが、新しい文字列操作は非常に一般的であるため、文字列処理以外にも潜在的な用途があります。ただし、非常に遅いため、それが実際に役立つケースはわかりません。

于 2012-06-19T10:57:13.850 に答える
1

標準のレジスタ比較命令がより広い SSE と比較してどのように機能するかの詳細はわかりませんが (標準の比較命令はより多くのサイクルを必要とする可能性があります)、スループットの 2 倍の改善は揺るがすものではありません。固執する。

「1回ではなく2回の比較しか得られないのに、なぜSSE 4.2を持っているのですか?」と尋ねていると思います。あなたはいくつかのことを見落としていると思います:

  • 前に述べたように、操作の幅が 2 倍になると便利です。これらの比較を頻繁に行うアプリケーションで作業している場合は、おそらくそれが存在することに満足するでしょう。

  • この命令を既存の SSE 実行ユニットに追加することによる増分コストは、比較的小さい可能性があります。以前の SSE 命令セットですでに定義されている幅広い操作を実行するために、すでに多くのハードウェアが配置されています。

    現在、追加されているように見える命令は、古い機能の拡張バージョン (多くの AVX 命令など) か、特定のアプリケーションにとって重要な操作 (CRC/AES 命令、4 要素内積など) です。このような比較命令から多くの利益を得るアプリケーションが存在する可能性があり、それを追加するコストは、それらのタイプのコードでより高速になることによって達成されるマーケティング上の利益に見合う価値がありました.

于 2012-06-18T16:57:25.947 に答える
0

SSE4.2 命令は、2 つのパックされたオペランドを比較します。したがって、2 つのバイトまたは単語を比較するのではなく、16 バイトと他の 16 バイトの間で非常に複雑な比較を行っています。(または 8 つの単語と 8 つの他の単語。) (それぞれの場合で「X まで」...)

SSE4.2 命令は通常、ほとんどの場合マイクロコード化されているため、通常の比較よりも低速です。ただし、各 SSE4.2 命令が最大 256 回の比較 (バイトの場合) を実行することから始まり、より有用な出力の束を計算することを考えると、検索パターンが数回スキップできない場合を除き、通常はアルゴリズムのパフォーマンスが節約されます。各反復の文字。

于 2012-10-08T17:58:01.230 に答える