El conjunto de instrucciones visuales ( VIS ) es una extensión del conjunto de instrucciones SIMD para los microprocesadores SPARC V9 desarrollado por Sun Microsystems . Existen cinco versiones de VIS: VIS 1, VIS 2, VIS 2+, VIS 3 y VIS 4. [1]
VIS 1 se introdujo en 1994 y fue implementado por primera vez por Sun en su microprocesador UltraSPARC (1995) y por Fujitsu en sus microprocesadores SPARC64 GP (2000).
VIS 2 fue implementado por primera vez por UltraSPARC III . Todos los microprocesadores UltraSPARC y SPARC64 posteriores implementan el conjunto de instrucciones.
VIS 3 se implementó por primera vez en el microprocesador SPARC T4 .
VIS 4 se implementó por primera vez en el microprocesador SPARC M7 .
VIS no es un conjunto de herramientas de instrucciones como MMX y SSE de Intel . MMX tiene solo 8 registros compartidos con la pila FPU , mientras que los procesadores SPARC tienen 32 registros, también asociados a los registros de punto flotante de doble precisión (64 bits).
Al igual que con las extensiones del conjunto de instrucciones SIMD en otros procesadores RISC , VIS se ajusta estrictamente al principio principal de RISC: mantener el conjunto de instrucciones conciso y eficiente.
Este diseño es muy diferente de las extensiones comparables en procesadores CISC , como MMX , SSE , SSE2 , SSE3 , SSE4 , 3DNow !.
A veces, los programadores deben utilizar varias instrucciones VIS para realizar una operación que se puede realizar con una sola instrucción MMX o SSE , pero se debe tener en cuenta que menos instrucciones no resultan automáticamente en un mejor rendimiento.
VIS reutiliza los registros de punto flotante de 64 bits de SPARC V9 existentes para almacenar múltiples valores enteros de 8, 16 o 32 bits. En este sentido, VIS es más similar al diseño de MMX que otras arquitecturas SIMD como SSE / SSE2 / AltiVec .
VIS incluye una serie de operaciones principalmente para compatibilidad con gráficos, por lo que la mayoría de ellas son solo para números enteros. Entre ellas se incluyen la conversión de 3D a 2D, el procesamiento de bordes y la distancia entre píxeles.
Hay cuatro formas de utilizar VIS en el código: