SSE3 , Streaming SIMD Extensions 3 , también conocido por su nombre de código Intel Prescott New Instructions ( PNI ), es la tercera iteración del conjunto de instrucciones SSE para la arquitectura IA-32 (x86). Intel introdujo SSE3 a principios de 2004 con la revisión de Prescott de su CPU Pentium 4 . En abril de 2005, AMD introdujo un subconjunto de SSE3 en la revisión E (Venecia y San Diego) de sus CPU Athlon 64 . Los conjuntos de instrucciones SIMD anteriores en la plataforma x86 , desde el más antiguo al más nuevo, son MMX , 3DNow!(desarrollado por AMD, pero no compatible con procesadores Intel), SSE y SSE2 .
SSE3 contiene 13 nuevas instrucciones sobre SSE2 .
Cambios
El cambio más notable es la capacidad de trabajar horizontalmente en un registro, a diferencia del funcionamiento más o menos estrictamente vertical de todas las instrucciones SSE anteriores. Más específicamente, se han agregado instrucciones para sumar y restar los múltiples valores almacenados dentro de un solo registro. Estas instrucciones se pueden utilizar para acelerar la implementación de una serie de operaciones DSP y 3D . También hay una nueva instrucción para convertir valores de punto flotante en números enteros sin tener que cambiar el modo de redondeo global, evitando así costosas paradas en la tubería . Finalmente, la extensión agrega LDDQU, una carga de vector entero desalineada alternativa que tiene un mejor rendimiento en plataformas basadas en NetBurst para cargas que cruzan los límites de la línea de caché.
CPU con SSE3
- AMD :
- Intel :
- Celeron D
- Celeron (comenzando con la microarquitectura Core)
- Pentium 4 (desde Prescott)
- Pentium D
- Pentium Extreme Edition (pero NO Pentium 4 Extreme Edition)
- Pentium de doble núcleo
- Pentium (comenzando con la microarquitectura Core)
- Centro
- Xeon (desde Nocona)
- Átomo
- VIA / Centauro :
- Transmeta Efficeon TM88xx (NO con los números de modelo TM86xx)
Nuevas instrucciones
Instrucciones comunes
Aritmética
- ADDSUBPD - ( Sumar-Restar-Empaquetado-Doble )
- Entrada: {A0, A1}, {B0, B1}
- Salida: {A0 - B0, A1 + B1}
- ADDSUBPS - ( Sumar-Restar-Empaquetado-Único )
- Entrada: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- Salida: {A0 - B0, A1 + B1, A2 - B2, A3 + B3}
AOS (matriz de estructuras)
- HADDPD - ( Horizontal-Add-Packed-Double )
- Entrada: {A0, A1}, {B0, B1}
- Salida: {A0 + A1, B0 + B1}
- HADDPS ( Horizontal-Add-Packed-Single )
- Entrada: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- Salida: {A0 + A1, A2 + A3, B0 + B1, B2 + B3}
- HSUBPD - ( Horizontal-Restar-Empaquetado-Doble )
- Entrada: {A0, A1}, {B0, B1}
- Salida: {A0 - A1, B0 - B1}
- HSUBPS - ( Horizontal-Restar-Empaquetado-Único )
- Entrada: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- Salida: {A0 - A1, A2 - A3, B0 - B1, B2 - B3}
- LDDQU: como se indicó anteriormente, esta es una carga de vector entero desalineada alternativa. Puede ser útil para tareas de compresión de video.
- MOVDDUP , MOVSHDUP, MOVSLDUP: son útiles para números complejos y cálculos de ondas como el sonido.
- FISTTP: como la instrucción FISTP x87 anterior, pero ignora la configuración del modo de redondeo del registro de control de punto flotante y usa el modo "cortar" (truncar) en su lugar. Permite la omisión de la costosa carga y recarga del registro de control en lenguajes como C, donde la conversión flotante a int requiere un comportamiento truncado por estándar.
Instrucciones de Intel
- MONITOR, MWAIT: optimizan las aplicaciones de subprocesos múltiples, lo que brinda a los procesadores con Hyper-threading un mejor rendimiento.
Referencias
enlaces externos
- Laboratorios X-bit