Vous êtes sur la page 1sur 7

TAREA 12 ARQUITECTURA DE COMPUTADORAS

Brenda Paola Ramrez Flores 3CM3

EXTENSIONES VECTORIALES AVANZADAS

Las extensiones vectoriales avanzadas (Advanced Vector Extensions- AVX), es


un juego de instrucciones de 256 bits desarrollado por Intel Corporation como
una extensin al conjunto de instrucciones x86 utilizado en procesadores de
Intel y AMD. Provee nuevas caractersticas, instrucciones y un nuevo esquema
de codificacin.

Esta tecnologa fue creada en 2008, pero no fue hasta 2011, cuando estuvo
disponible para el pblico en los procesados de arquitectura Sandy Bridge de
Intel. La principal novedad respecto a SSE es el aumento del tamao del
vector, siendo el doble que en SSE, es decir 256 bits.
Tambin aumenta la cantidad de registros que tiene, 16. Otra diferencia
respecto a SSE, es el uso de operaciones de nivel ensamblador de tres
operandos: el registro destino puede ser diferente de los dos operandos
fuentes. Aunque no sean iguales AVX nos permite trabajar conjuntamente con
SSE.
Aun as AVX no contiene todas las operaciones disponibles en SSE. Slo
contiene las operaciones realizadas con nmeros de coma flotante. Por esa
razn se cre la versin AVX2 en el 2013. Esta versin est disponible en los
procesadores de arquitectura Ivy Bridge de Intel, completa AVX, incluyendo
todas las operaciones con nmeros enteros. Por lo tanto, se pueden realizar las
mismas operaciones que en SSE, pero con vectores el doble de grandes.
CARACTERSTICAS

Es un vector de extensin SIMD de 256 bits para operaciones de punto


flotante intensivo. Mejora el rendimiento en las nuevas aplicaciones, y

TAREA 12 ARQUITECTURA DE COMPUTADORAS


Brenda Paola Ramrez Flores 3CM3

algunas existentes, mediante el manejo de paquetes de datos


vectoriales ms grandes, y el uso de ms hilos y ncleos del procesador.

El ancho del registro SIMD es incrementado de 128-bits a 256-bits, y


renombrado de XMM0-XMM15 a YMM0-YMM15. En los procesadores que
soportan AVX, el juego de instrucciones SSE (que anteriormente operaba
en los registros XMM) pasa a operar en los primeros 128-bits de los
registros YMM. Adems, se espera la inclusin de vectores de 512 e
incluso 1024 bits.
Son instrucciones no destructivas. AVX introduce un formato SIMD de 3 y
4 operandos, donde el operando de destino es diferente de los
operandos fuente. Por ejemplo, una instruccin SSE convencional de 2
operandos a:=a+b puede usar un formato no destructivo de 3
operandos c:=a+b, preservando los operandos fuente. Este formato est
limitado al juegos de instrucciones con operandos SIMD (YMM) y no
incluye los registros con propsitos generales (p.e. EAX), sin embargo, se
espera el soporte en el futuro.
Debido al mayor poder de procesamiento, las aplicaciones que usen
intesivamente estas instrucciones pueden realizar el trabajo ms
eficientemente, dando un rendimiento por watt ms alto que con otro
conjunto de instrucciones.
Flexibilidad en el entorno de programacin, debido a que el requisito de
alineacin de los operandos de memoria SIMD es relajado.
Nuevo manejo de operaciones aritmticas y primitivas, incluyendo
difusin, permutacin, suma y multiplicacin fusinado, entre otras.

TIPO DE DATOS VECTORIALES


Los tipos de datos vectoriales utilizados en las extensiones multimedia estn
empaquetados en 128 o en 256 bits. Estos paquetes estn formados por dos
tipos de datos, nmeros de coma flotante y nmeros enteros. A su vez existen
subdivisiones: por ejemplo en los nmeros de coma flotante pueden ser de
simple precisin o de doble precisin. Sin embargo, en AVX en cambio solo se
pueden usar nmeros de coma flotante y en AVX2 solamente nmeros enteros.
Intel proporciona un conjunto de primitivas, intrinsics en su jerga, para realizar
las operaciones que se deseen con datos vectoriales. Se utilizan sufijos para
informar con qu tipo de datos se trabaja.

TAREA 12 ARQUITECTURA DE COMPUTADORAS


Brenda Paola Ramrez Flores 3CM3

Tambin existen otros sufijos para poder especificar cmo se trabaja: en


vectorial o escalar.

p -> packed: vectorial (el nmero de elementos depende del tipo de


dato y del tamao total).
s -> single: escalar (nicamente trabaja con el elemento guardado en los
bits de menos
precisin).

Tanto SSE, AVX y AVX2 tienen registros propios, SSE dispone de 8 registros
(xmm0,, xmm7) de 128 bits cada uno, en los que se guardaran las variables
que usemos, AVX y AVX2, en cambio, dispone de 16 registros (ymm0, ..,
ymm15) de 256 bits.
Load/Store en AVX
__m256 _mm256_load_ps (float const * mem_addr)
void _mm256_store_ps (float * mem_addr, __m256 a)

Iniciar Variables en AVX


__m256 _mm256_set1_ps (float a)
__m256 _mm256_setzero_ps (void)

Suma en AVX
__m256 _mm256_add_ps (__m256 a, __m256 b)

TAREA 12 ARQUITECTURA DE COMPUTADORAS


Brenda Paola Ramrez Flores 3CM3

Reducciones en AVX
Estas funciones dan la opcin de sumar o restar los elementos del vector
entre s. La opcin ms usada es la de la suma, porque en la primera
posicin. Las reducciones funcionan as:
Esta es la intrinsic que se ha utilizado para el ejemplo:
suma = _mm_hadd_ps (resultado,resultado)
__m256 _mm256_hadd_ps (__m256 a, __m256 b)

Condicionales en AVX
Con estas funciones se compararan los elementos de dos vectores. Estas
son las operaciones disponibles:
Igual, no igual
Ms grande que, ms grande o igual que

TAREA 12 ARQUITECTURA DE COMPUTADORAS


Brenda Paola Ramrez Flores 3CM3

No ms grande que, no ms grande o igual que


Ms pequeo que, ms pequeo o igual que
No ms pequeo que, no ms pequeo o igual que

Adems de estas opciones se pueden elegir otras dos opciones dentro de


la comparacin. La primera se llama signaling, si escogemos esta opcin
se tendrn en cuenta los signos en la comparacin en cambio si se elige
non-signaling, se compararan los valores absolutos.
La segunda opcin es ordered, usando esta opcin se comprueba antes
de hacer la comparacin si los dos elementos a comparar son nmeros,
si no lo son devolver false, sino har la comparacin. Con la opcin nonordered en cambio uno de los dos elementos debe no ser un nmero
sino la comparacin tendr como resultado false.

__m256 _mm256_cmp_ps (__m256 a, __m256 b, const int imm)

Operaciones Lgicas en AVX (AND, XOR, OR, ANDNOT)


__m256 _mm256_and_ps (__m256 a, __m256 b)

TAREA 12 ARQUITECTURA DE COMPUTADORAS


Brenda Paola Ramrez Flores 3CM3

SOFTWARE COMPATIBLE
Adems de que las aplicaciones introduzcan el uso explcito de estas nuevas
instrucciones, tambin ha de haber soporte por parte del sistema operativo ya
que introducen nuevos registros de estado del procesador. Los sistemas
operativos ms comunes que permiten el uso de instrucciones AVX y AVX2 son:

Apple Mac OS X 10.6.8 (lanzado en junio de 2011) y posteriores.


GNU/Linux con ncleo Linux 2.6.305 (lanzado en junio de 2009) o
posterior.
Microsoft Windows 7 SP16 (lanzado en febrero de 2011), Windows Server
2008 R2 SP1 (tambin lanzado en febrero de 2011) y Windows 8.

APLICACIONES
En la prctica son tiles para cualquier operacin que utiliza punto flotante de
forma intensiva:

Edicin de imagen
Codificacin de vdeo
Procesamiento de audio
Modelado 3D
Servicios de anlisis financieros
Software de ingeniera y manufactura

PROCESADORES
Estas instrucciones se pueden encontrar en las siguientes familias de
procesadores:

TAREA 12 ARQUITECTURA DE COMPUTADORAS


Brenda Paola Ramrez Flores 3CM3

Intel Core i3/i5/i7 Segunda Generacin (Sandy Bridge)


AMD FX (Bulldozer)

Vous aimerez peut-être aussi