Ir al contenido

SSE2

De Wikipedia, la enciclopedia libre

SSE2 es el acr�nimo de Streaming "Single Instruction Multiple Data" Extensions 2 es uno de los conjuntos de instrucciones de la arquitectura IA-32 SIMD. Fue utilizada por primera vez en la primera versi�n del Pentium 4 en 2001. Estas extensiones est�n dise�adas para el trabajo avanzado con gr�ficos 3D, codificaci�n y decodificaci�n de v�deo, reconocimiento de voz, comercio electr�nico, Internet, aplicaciones de ingenier�a y cient�ficas, etc.

Las extensiones SSE2 siguen el mismo modelo que las utilizadas en los predecesores SSE y MMX manteniendo compatibilidad con esas extensiones, pero ampl�a su modelo con soporte para paquetes de valores flotantes de precisi�n doble y para paquetes de enteros de 128 bits.

Se diferencian entre los tipos de datos:

  • Paquetes de n�meros dobles en coma flotante de 128 bits.
  • Paquetes de byte de 128 bits
  • Paquetes de palabra de 128 bits
  • Paquetes de doble palabra de 128 bits
  • Paquetes de cu�druple palabra de 128 bits

Las nuevas instrucciones se pueden dividir seg�n operaciones de paquetes y escalares de precisi�n doble, conversiones, extensi�n a 128 bits de instrucciones MMX, y mejoras de las instrucciones de almacenamiento en la memoria intermedia.

Principales tipos de instrucciones

[editar]

SIMD flotantes en precisi�n doble

[editar]

Para cada introducci�n SSE de doble en precisi�n simple, existe la correspondiente en precisi�n doble en SSE2, excepto para funciones rec�procas RCPPS, RCPSS, RSQRTPS y RSQRTSS.

Conversi�n

[editar]

Adem�s de los tipos previamente existentes, SSE2 a�ade los escalares en precisi�n doble y los paquetes en precisi�n doble, por lo que se a�aden instrucciones de conversi�n para conectar estos nuevos tipos, como son: CVTPS2PD, CVTPD2PS.

En el siguiente gr�fico se muestra el esquema de conversiones posibles:

Extensi�n a 128 bits de MMX

[editar]

Cada instrucci�n MMX, excepto las EMMS, es ampliada a 128 bits implementando la misma funcionalidad en un tipo de dato mayor. Y lo mismo sucede con las instrucciones de SSE.

Como ejemplos de estas instrucciones:

  • Movimiento: MOVDQA (de 16 bits alineados), MOVDQU, MOVDQ2Q y MOVQ2DQ.
  • Aritm�ticas: PADDQ y PSUBQ
  • Shuffle: PSHUFD, PSHUFHW y PSHUFLW
  • Shift: PSLLDQ y PSRLDQ
  • Desempaquetamiento: PUNPCKHQDQ y PUNPCKLQDQ

Cacheabilidad

[editar]

SSE2 introduce varias instrucciones de control de cach�. SLFLUSH escribe e invalida la l�nea de cach� asociada a una direcci�n lineal especificada. Esta instrucci�n, puede ser usada en todos los niveles privilegiados.

La instrucci�n SFENCE de SSE se ve suplementada por LFENCE y MFENCE en SSE2 LFENCE garantiza que cada carga con esta instrucci�n tras ella ser� globalmente visible antes de la siguiente instrucci�n. MFENCE es similar excepto por que carga y almacenamiento se consideran unidos.

Otras instrucciones de movimiento no temporales son:

  • MOVNTPD, MOVNTDQ: si se usan operandos en memoria, estos han de ser de 16 bits alineados.
  • MASKMOVDQU: similar a MASKMOVVQ en SSE pero usa un registro XMM y 128 bits en memoria, no necesariamente sin alineamiento necesario.
  • MOVNTI: mueve el contenido de uno de los registros de propósito general sin "contaminar" la caché.
  • PAUSE: alerta al procesador del subsiguiente bucle de espera para que el procesador pueda reducir el número de cargas especulativas, lo cual reducir la carga de trabajo cuando termina el bucle y además ahorra energía y recursos

Referencias

[editar]

Véase también

[editar]