SSE3

From Wikipedia, the free encyclopedia

Remove ads

Az SSE3 Intel Streaming SIMD Extensions harmadik generációs utasításkészlete és nem keverendő össze az SSSE3 (Supplemental Streaming SIMD Extensions 3) jelöléssel, ami tulajdonképpen a negyedik változat az SSE4 előtt.

A 90 nm-es csíkszélességű Intel Pentium 4 processzorral vezették be, mely az SSE2-n felül 13 új SIMD instrukcióval rendelkezik. Az új utasításokat elsősorban a szálak szinkronizációjának, valamint a médiatartalmak és játékok teljesítményének növelése céljából tervezték meg.[1]

Remove ads

Új utasítások[2][3]

addsubpd

Dupla pontosságú (64 bites) lebegőpontos elemek összeadása és kivonása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

addsubps

Szimpla pontosságú (32 bites) lebegőpontos elemek összeadása és kivonása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

haddpd

Dupla pontosságú (64 bites) lebegőpontos elemek horizontális összeadása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

haddps

Szimpla pontosságú (32 bites) lebegőpontos elemek horizontális összeadása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

hsubpd

Dupla pontosságú (64 bites) lebegőpontos elemek horizontális kivonása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

hsubps

Szimpla pontosságú (32 bites) lebegőpontos elemek horizontális kivonása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

lddqu

128 bites adat beolvasása a regiszterbe.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

loadddup

Dupla pontosságú (64 bites) lebegőpontos elemek másolása kétszer.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

monitor

Monitorozás.

További információk Gépikód, Assembler utasítás ...

movddup

Dupla pontosságú (64 bites) lebegőpontos elemek másolása kétszer.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

movshdup

Páratlan indexű szimpla pontosságú (32 bites) lebegőpontos elemek duplázása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

movsldup

Páros indexű szimpla pontosságú (32 bites) lebegőpontos elemek duplázása.

További információk Gépikód, Assembler utasítás ...
További információk Működési elv ...

mwait

Várakozóállásba helyezi a processzort a monitorozáshoz.

További információk Gépikód, Assembler utasítás ...
Remove ads

Használat, fordítás

Az alábbi példa az addsubpd használatát mutatja be C nyelven, valamint az utasításkészlet hiányában egy lehetséges helyettesítési módot, mellyel az utasítás eredményét lehet bemutatni:

#include <stdio.h>
#include <pmmintrin.h>

void SSE3_Version (__m128d xmm1, __m128d xmm2) {
    // az addsubpd utasítás használata
    __m128d xmm3 = _mm_addsub_pd (xmm1, xmm2);

    printf("SSE3 Version: %.0lf, %.0lf\n", xmm3[0], xmm3[1]);
}

void C_Version (double xmm1[2], double xmm2[2]) {
    // az addsubpd utasítás egy lehetséges helyettesítése annak hiányában
    double xmm3[2] = {xmm1[0] - xmm2[0], xmm1[1] + xmm2[1]};

    printf("C Version: %.0lf, %.0lf\n", xmm3[0], xmm3[1]);
}

int main () {
    SSE3_Version ((__m128d){10, 10}, (__m128d){3, 3});
    C_Version ((double[2]){10, 10}, (double[2]){3, 3});

    return 0;
}

Amennyiben használni szeretnénk az új SSE utasításokat, akkor meg kell adni a fordítónak, hogy támogassa. Pl. GCC esetén

gcc -msse3 sse3_test.c

paranccsal kell fordítanunk, ha nem akarjuk, hogy

target specific option mismatch

hibaüzenettel álljon le a fordítás. Szintén üdvözítő megoldás, ha olyan beépített architektúra támogatást választunk, mely már tartalmazza ezt az optimalizációt pl.:

gcc -march=core2 sse3_test.c

.[4]

Remove ads

Támogatás

Intel által[5]

  • Dual-Core Intel® Xeon® 70XX, 71XX, 50XX Series
  • Dual-Core Intel® Xeon® (ULV and LV) 1.66, 2.0, 2.16
  • Dual-Core Intel® Xeon® 2.8
  • Intel® Xeon® (nem mindegyik)
  • Intel® Core™ Duo
  • Intel® Core™ Solo
  • Intel® Pentium® dual-core T21XX, T20XX series
  • Intel® Pentium® Extreme Edition
  • Intel® Pentium® D
  • Intel® Pentium® 4 (nem mindegyik)
  • valamint az újabb SIMD instrukcióval rendelkező processzorok

Források

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads