Pero, ¿Qué es realmente Altivec? :UPDATED:

En este artículo vamos a intentar explicar de una forma intuitiva las ventajas del Altivec.

Para aquellos que no acabaron de entender muy bien este artículo, una pequeña aclaración:

El artículo tiene dos partes … porqué necesitamos un Altivec y cómo funciona.

El porqué … ciertas aplicaciones actuales no se adaptan bien al tipo de datos utilizados por los computadores tradicionales, es decir texto o números.

Estas aplicaciones necesitan trabajar con vectores.

Como los procesadores no están preparados para manejar vectores -ver ejemplo- es necesario introducir una unidad especial que permita operar con estos eficientemente … el Altivec.

2003-10-24 07:30:40

No pretendemos ser muy rigurosos, sólo nos interesa que los lectores puedan entender las razones de la necesidad actual de un procesador vectorial …

Los microprocesadores que utilizamos en nuestros computadores personales son del tipo denominado “propósito general”.

A diferencia de los procesadores “especializados” diseñados para realizar unas funciones determinadas muy eficientemente, como los requerimientos de los computadores personales son tan variados, sus micros se diseñan pensando en esta gran variedad de usos. Así son capaces de realizar muchas funciones pero ninguna especialmente bien … es decir son micros todo terreno -lo que sería un coche familiar pero deportivo … ni es deportivo ni es familiar pero se puede utilizar más o menos bien para ambas funciones-

Al generalizarse el uso de este tipo de micros y aumentar su potencia, nuevas aplicaciones han sido posibles.

Por ejemplo, la necesidad de uso intensivo de calculo implicó la incorporación de coprocesadores matemáticos dentro de estos.

Un copro es una unidad aritmética especializada en realizar cálculos complejos con números. Antes de la aparición de esta necesidad, los micros utilizaban una ALU -unidad aritmético lógica, la calculadora del procesador para entendernos- muy básica: sumar, comparar y desplazar bits … limitada por su falta de especialización … Era necesario un copro especializado para realizar operaciones complejas más eficientemente.

La tendencia actual en los computadores personales es la utilización de aplicaciones multimedia que incorporan una gran variedad de tecnologías, que incluyen audio, compresión de video, procesado de imágenes en 2D, gráficos en 3d, reconocimiento de voz y escritura, procesado de señales para comunicaciones y criptografía entre otras.

Para responder estas nuevas necesidades, los principales fabricantes de micros han actualizado sus arquitecturas de propósito general para intentar mejorar las prestaciones en estas áreas.

Así Intel desarrolló MMX y el SSE, SUN mejoro los Sparc con VIS, HP añadió MAX4 a sus PA-RISC, Silicon Graphics MDMX, Digital MVI a Alpha … y PowerPC el Altivec.

Es decir añadieron una unidad vectorial a sus procesadores para facilitar el procesado de los tipos de datos que utilizan estas aplicaciones, es decir para acelerar el procesado de imágenes, audio, video … Se llaman vectoriales ya que trabajan con datos del tipo vector y no escalares como anteriormente.

La unidad vectorial de los PowerMac se llama Velocity Engine o Altivec.

Velocity Engine es el nombre comercial utilizado por Apple mientras Altivec está registrado por Motorola. -técnicamente el nombre más exacto es Altivec-

Altivec representa el paso natural en la evolución de los microprocesadores, dotándoles de unos circuitos que permiten acelerar el procesado de este tipos de datos llamados “naturales”, es decir tipos de datos digitales diseñados para representar audio, video, imagen y voz. Esto se opone a lo tipos de datos numéricos o de texto para los que los microprocesadores tradicionalmente habían sido diseñados.

Altivec añade a la arquitectura de los PowerPC una unidad vectorial de 128-bit, la cual opera concurrentemente con las ya existentes unidades de enteros y coma flotante, ofreciendo un alto grado de paralelismo permitiendo la ejecución simultánea de varias operaciones aritméticas en un sólo ciclo de reloj.

La verdadera potencia del ALtivec es su capacidad para realizar varios cálculos simultáneamente.

El concepto de Altivec es realmente simple: procesa datos en múltiplos en vez de un dato cada vez como ocurre con las unidades de enteros y las de coma flotantes (partes del micro especializadas en operar con números enteros y decimales respectivamente)

Altivec opera en todos los elementos de un dato de un vector simultáneamente con cada instrucción, a esto se le conoce como SIMD o procesamiento en paralelo de varios datos por cada instrucción -single instruction, multiple data- lo opuesto al actual SISD -single instruction, single data- la conocida arquitectura clásica Von Neumann llamada también secuencial o escalar .. sólo existe un flujo de datos y otro de instrucciones.

¡Tranquilos ahora explicamos todo este lío de SIMD y SISD …!

La mejor forma de entender el funcionamiento de un SIMD y un SISD es un ejemplo simple de las ventajas de esta aritmética vectorial… Una operación como a + b siendo a y b vectores.

Un vector es un dato compuesto de varias elementos (un conjunto de datos) , por ejemplo:

a = {1,5,4,3}

b = {2,4,3,1}

En este caso cada vector a y b están compuestos de 4 elementos.

Así la operación anterior sería:

{1,5,4,3} + {2,4,3,1} = { 1+2 , 5+4 , 4+3 , 3+1 } = {3,9,7,4}

Para realizar esta operación de la forma tradicional es decir secuencialmente (es decir tipo SISD … para entendernos, como la realizaría un G3 sin Altivec) cada suma se ejecutaría secuencialmente una detrás de otra, es decir cuatro sumas y necesitaríamos 4 ciclos de reloj, uno por cada suma.

Con un procesador vectorial como Altivec podríamos realizar la suma en una sola operación es decir las 4 sumas de cada elemento del vector en paralelo y sólo consumiríamos un ciclo de reloj -1/4 del tiempo necesario para realizar la misma operación en forma secuencial-

¡Increíble..! ¿no? … ;-P

Ahora imaginar una foto de varios cientos de Megas a la que intentamos aplicar un filtro o comprimir …. el ahorro de tiempo es brutal.

Como podemos ver la ganancia en prestaciones que nos permite el uso de Altivec en aquellas aplicaciones que se pueden utilizar las operaciones con vectores es considerable. No siempre será tan exagerado, depende de cada aplicación pero Altivec marcará siempre la diferencia.

Un G4 es aproximadamente un 10% más potente que un G3 a la misma velocidad en Mhz … pero cuando las aplicaciones utilizan el Altivec del G4 la diferencia es muy grande.

Para terminar un dato significativo … la suma anterior utilizando vectores de 1000 elementos en vez de los 4 del ejemplo ,en un PowerMac G4 a 400Mhz , en modo escalar alcanza los 88 MFlops y con Altivec 345 MFlops … lo que supone un incremento de prestaciones del 3.9. (MFlops o millones de operaciones en coma flotante por segundo -numeros con decimales-)

Lecturas recomendadas:

“PowerPC G4 for Engineering, Science, and Education” Apple Computer, Oct 2000

“PowerPC G4 for Engineering, Science, and Education” Apple Computer, Oct 2000″

The AltiVec Difference by Craig Hunter

04/05/2002

Published on The O’Reilly Network

http://www.macdevcenter.com/lpt/a/1692

http://www.oreillynet.com/pub/a/mac/2002/04/05/altivec.html

A PowerPoint presentation of the AltiVec technology Apple Computer

0 0 votos
Article Rating
Subscribe
Notify of
10 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
Anónimo
Anónimo
20 years ago

Estaría bien entender el artículo, yo mismo preguntaba el otro día que era esto del Altivex, la verdad es que está un poco lioso y eso que entiendo un poco del tema, pero no me entero bien de todo.

¿Podrían resumirlo en 10 líneas?, osea la explicación a lo “bestia” de que es el Altivex. Con menos tecnicismos, ponque yo a partir de los Tb me pierdo.

salu2

Anónimo
Anónimo
20 years ago

Pues podrías empezar aprendiendo el nombre, Altivec, con C! jejeje!

Leete poco a poco el artículo y si no entiendes algo te lo vuelves a leer, ya veras como lo entiendes.

¡Excelente artículo!

Anónimo
Anónimo
20 years ago

AltiVec es una unidad de proceso vectorial para realizar cálculos matemáticos en los procesadores de manera muy rápida y potente. Una de sus principales ventajas es su posibilidad de ejecutar una misma operación sobre múltiples datos, como decir “quiero multiplicar por dos los números cuatro, seis y nueve”.

¿Suficientemente escueto y claro jag? 😉

Anónimo
Anónimo
20 years ago

Pues sip, asi si que lo entiendo.

No siempre entiendo las cosas a la primera. Para eso tengo al Mac, sólo que el joio aún no habla y mira que llevo 14 años intentando hacer que hable.

🙂

Anónimo
Anónimo
20 years ago

lo de Altivex con x es por el osx, ya se que es con C.

salu2

Anónimo
Anónimo
20 years ago

como que no habla? el mio lo hace con muuuchas vocecillas ya desde los tiempos preOSX(de las cuales la mejor es la imitacion de la madre de los simpson)…

lo complicado es que hable “solo”

o peor

lo problematico es que te llame por telefono al trabajo para encargarte que le traigas unas rams del carrefour…

o que oigas su voz metalizada aun estando apagado llamandote ” ensiendemeeeee…. ensiendemeee…”

Anónimo
Anónimo
20 years ago

buena explicacion del altivec.

Anónimo
Anónimo
18 years ago

Tengo un problema con el programa Guitar Rig que me dice que mi CPU no soporta SSE ni AltiVec. Tengo una Celeron 400 Mhz. Agradeceria una ayuda o solucion, desde ya muchas gracias..

Anónimo
Anónimo
18 years ago

Si quiki, yo tambien tengo el mismo problema, tengo un mother PC Chips 798 y ando buscando la posibildad de que haya algun emulador para ello.

cualquier cosa respondan!

Anónimo
Anónimo
18 years ago

Hola
Me gustaría saber cuales son las ventajas directas de la tecnología Altivec para el diseño 3D. He probado programas como Archicad y Vector Works en pc, pero nunca los he visto en Mac; deberían correr más rápido, sobre todo en movimientos en tiempo real? qué sucede con las operaciones de texturizado y renderizado?
Si alguien tiene links de pruebas de G4, G5 y pentium con estos softwares, le agradeciría me lo enviara.

10
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x