Articulo de referencia

SPARC

"},"bits":{"wt":"64-bit (32 → 64)"},"introduced":{"wt":"{{Start date and age|1986}} (production) {{Start date and age|1987}} (shipments)"},"version":{"wt":"V9 (1993) / OSA2017"}...

Un microprocesador Sun UltraSPARC II (1997)

SPARC ( Scalable Processor Architecture ) es una arquitectura de conjunto de instrucciones para computadoras con conjunto de instrucciones reducido (RISC) desarrollada originalmente por Sun Microsystems . Su diseño estuvo fuertemente influenciado por el sistema experimental Berkeley RISC , desarrollado a principios de la década de 1980. Desarrollado inicialmente en 1986 y lanzado en 1987, SPARC fue uno de los primeros sistemas RISC comerciales más exitosos, y su éxito propició la introducción de diseños RISC similares por parte de numerosos fabricantes durante las décadas de 1980 y 1990. Tras la adquisición de Sun, Oracle Corporation finalizó el desarrollo de SPARC en 2017.

Descripción

A mediados de la década de 1980, el consenso de la industria informática era que RISC tenía una relación precio/rendimiento mucho mejor que la arquitectura CISC tradicional . El fabricante de estaciones de trabajo Sun Microsystems decidió migrar a RISC lo más rápido posible desde la serie de procesadores Motorola 68000. [ 3 ]

La primera implementación de la arquitectura original de 32 bits (SPARC V7) se utilizó en los sistemas de estaciones de trabajo y servidores Sun -4 de Sun, reemplazando sus sistemas Sun-3 anteriores basados ​​en la serie Motorola 68000. SPARC V8 incorporó varias mejoras que formaron parte de la serie de procesadores SuperSPARC lanzada en 1992. SPARC V9, lanzado en 1993, introdujo una arquitectura de 64 bits y se lanzó por primera vez en los procesadores UltraSPARC de Sun en 1995. Posteriormente, los procesadores SPARC se utilizaron en servidores de multiprocesamiento simétrico (SMP) y de acceso a memoria no uniforme ( CC-NUMA ) fabricados por Sun, Solbourne y Fujitsu , entre otros.

El diseño se transfirió al grupo comercial SPARC International en 1989, y desde entonces su arquitectura ha sido desarrollada por sus miembros. SPARC International también es responsable de la concesión de licencias y la promoción de la arquitectura SPARC, la gestión de las marcas registradas de SPARC (incluida SPARC, de la cual es propietaria) y la realización de pruebas de conformidad . SPARC International se creó con el objetivo de expandir la arquitectura SPARC para crear un ecosistema más amplio; SPARC ha sido licenciada a varios fabricantes, entre ellos Atmel , Bipolar Integrated Technology , Cypress Semiconductor , Fujitsu , Matsushita y Texas Instruments . Gracias a SPARC International, SPARC es completamente abierto, no propietario y libre de regalías.

A fecha de 2024, los últimos procesadores SPARC comerciales de gama alta son el SPARC64 XII de Fujitsu (presentado en septiembre de 2017 para su servidor SPARC M12) y el SPARC M8 de Oracle , presentado también en septiembre de 2017 para sus servidores de gama alta.

El 1 de septiembre de 2017, tras una ronda de despidos que comenzó en Oracle Labs en noviembre de 2016, Oracle puso fin al diseño de SPARC después de completar el M8. Gran parte del grupo de desarrollo del núcleo del procesador en Austin, Texas, fue despedido, al igual que los equipos en Santa Clara, California, y Burlington, Massachusetts. [ 4 ] [ 5 ]

Fujitsu también descontinuará su producción de SPARC (ya ha cambiado a producir sus propias CPU basadas en ARM ), después de una versión "mejorada" del antiguo servidor SPARC M12 de Fujitsu en 2020-22 (originalmente planeado para 2021), el fin de venta en 2029 de los servidores UNIX y un año después para su mainframe y el fin de soporte en 2034 "para promover la modernización del cliente". [ 6 ]

Características

La arquitectura SPARC estuvo fuertemente influenciada por los diseños RISC anteriores, incluyendo los Berkeley RISC I y II de la Universidad de California, Berkeley, y el IBM 801. Estos diseños RISC originales eran minimalistas, con la menor cantidad posible de funciones o códigos de operación, y buscaban ejecutar instrucciones a una velocidad de casi una instrucción por ciclo de reloj . Esto los hacía similares a la arquitectura MIPS en muchos aspectos, incluyendo la ausencia de instrucciones como multiplicar o dividir. Otra característica de SPARC influenciada por este movimiento RISC inicial es la ranura de retardo de bifurcación .

El procesador SPARC suele contener hasta 160 registros de propósito general . Según la especificación "Oracle SPARC Architecture 2015", una implementación puede contener entre 72 y 640 registros de propósito general de 64 bits. [ 7 ] En cualquier momento, solo 32 de ellos son inmediatamente visibles para el software  : 8 son un conjunto de registros globales (uno de los cuales, g0 , está cableado a cero, por lo que solo siete de ellos se pueden usar como registros) y los otros 24 son de la pila de registros. Estos 24 registros forman lo que se denomina una ventana de registro , y en la llamada/retorno de función, esta ventana se mueve hacia arriba y hacia abajo en la pila de registros. Cada ventana tiene ocho registros locales y comparte ocho registros con cada una de las ventanas adyacentes. Los registros compartidos se utilizan para pasar parámetros de función y devolver valores, y los registros locales se utilizan para conservar valores locales entre llamadas a funciones.

El término "escalable" en SPARC proviene del hecho de que la especificación SPARC permite que las implementaciones escalen desde procesadores integrados hasta grandes procesadores de servidor, todos compartiendo el mismo conjunto de instrucciones básicas (no privilegiadas). Uno de los parámetros arquitectónicos que puede escalar es el número de ventanas de registro implementadas; la especificación permite implementar de tres a 32 ventanas, por lo que la implementación puede optar por implementar las 32 para proporcionar la máxima eficiencia de la pila de llamadas , o implementar solo tres para reducir el costo y la complejidad del diseño, o implementar un número intermedio. Otras arquitecturas que incluyen características de archivo de registros similares son Intel i960 , IA-64 y AMD 29000 .

La arquitectura ha pasado por varias revisiones. En la versión 8 se le añadió funcionalidad de multiplicación y división por hardware. [ 8 ] [ 9 ] Se añadieron 64 bits (direccionamiento y datos) a la especificación SPARC versión 9 publicada en 1994. [ 10 ]

En la versión 8 de SPARC, el banco de registros de punto flotante tiene 16 registros de doble precisión . Cada uno de ellos puede usarse como dos registros de precisión simple , lo que proporciona un total de 32 registros de precisión simple. Un par de registros de doble precisión (uno impar y otro par) puede usarse como un registro de precisión cuádruple , lo que permite 8 registros de precisión cuádruple. La versión 9 de SPARC añadió 16 registros de doble precisión más (a los que también se puede acceder como 8 registros de precisión cuádruple), pero a estos registros adicionales no se puede acceder como registros de precisión simple. Ninguna CPU SPARC implementa operaciones de precisión cuádruple en hardware a fecha de 2024. [ 11 ]

Las instrucciones de suma y resta etiquetadas realizan sumas y restas sobre valores, comprobando que los dos bits menos significativos de ambos operandos sean cero e informando de un desbordamiento si no lo son. Esto puede resultar útil en la implementación del entorno de ejecución de ML , Lisp y lenguajes similares que utilicen un formato de entero etiquetado.

La arquitectura SPARC V8 de 32 bits utiliza el orden de bytes big-endian. La arquitectura SPARC V9 de 64 bits emplea instrucciones big-endian, pero puede acceder a los datos en orden de bytes big-endian o little-endian, según se determine a nivel de instrucción de la aplicación ( carga-almacenamiento ) o a nivel de página de memoria (mediante una configuración de la MMU). Esta última opción se suele utilizar para acceder a datos de dispositivos intrínsecamente little-endian, como los de los buses PCI.

Historia

v7 → v8 → v9 (64 bits) → JPS1 → JPS2 (multinúcleo) → UA2005 ( sun4v ) → UA2007 → OSA2011 → OSA2015 → OSA2017

Se han realizado tres revisiones importantes de la arquitectura. La primera versión publicada fue la SPARC versión 7 (V7) de 32 bits en 1986. La SPARC versión 8 (V8), una definición de arquitectura SPARC mejorada, se lanzó en 1990. Las principales diferencias entre la V7 y la V8 fueron la adición de instrucciones de multiplicación y división de enteros, y una actualización de la aritmética de punto flotante de "precisión extendida" de 80 bits a la aritmética de " precisión cuádruple " de 128 bits. La SPARC V8 sirvió de base para el estándar IEEE 1754-1994, un estándar IEEE para una arquitectura de microprocesador de 32 bits.

SPARC versión 9 (V9), la arquitectura SPARC de 64 bits, fue lanzada por SPARC International en 1993. Fue desarrollada por el Comité de Arquitectura SPARC, integrado por Amdahl Corporation , Fujitsu , ICL , LSI Logic , Matsushita , Philips , Ross Technology , Sun Microsystems y Texas Instruments . Las especificaciones más recientes siempre cumplen con la especificación completa SPARC V9 Nivel 1.

En 2002, Fujitsu y Sun publicaron la Especificación de Programación Conjunta SPARC 1 (JPS1), que describía las funciones del procesador implementadas de forma idéntica en las CPU de ambas compañías ("Commonality"). Las primeras CPU compatibles con JPS1 fueron la UltraSPARC III de Sun y la SPARC64 V de Fujitsu. Las funcionalidades no cubiertas por JPS1 se documentan para cada procesador en los "Suplementos de Implementación".

A finales de 2003, se publicó la Especificación de Programación Conjunta 2 (JPS2) para dar soporte a las CPU multinúcleo. Las primeras CPU que cumplían con JPS2 fueron la UltraSPARC IV de Sun y la SPARC64 VI de Fujitsu.

A principios de 2006, Sun publicó una especificación de arquitectura extendida, UltraSPARC Architecture 2005 (UA2005). Esta incluye no solo las partes no privilegiadas y la mayoría de las partes privilegiadas de SPARC V9, sino también todas las extensiones arquitectónicas desarrolladas a través de las generaciones de procesadores UltraSPARC III, IV y IV+, así como las extensiones de Chip Multithreading Technology ( CMT ) a partir de la implementación UltraSPARC T1 :

  • las extensiones del conjunto de instrucciones VIS 1 y VIS 2 y el registro GSR asociado .
  • Múltiples niveles de registros globales, controlados por el registro GL.
  • Arquitectura MMU de 64 bits de Sun
  • Instrucciones privilegiadas ALLCLEAN, OTHERW, NORMALW e INVALW
  • El acceso al registro VER ahora es hiperprivilegiado.
  • La instrucción SIR ahora tiene privilegios elevados.

En 2007, Sun publicó una especificación actualizada, UltraSPARC Architecture 2007 (UA2007), a la que se ajustaba la implementación UltraSPARC T2 .

En diciembre de 2007, Sun también puso a disposición el RTL del procesador UltraSPARC T2 a través del proyecto OpenSPARC . [ 12 ] También se publicó bajo la licencia pública general GNU v2. [ 13 ] OpenSPARC T2 tiene 8 núcleos, 16 pipelines con 64 hilos.

En agosto de 2012, Oracle Corporation publicó una nueva especificación, Oracle SPARC Architecture 2011 (OSA2011), que además de la actualización general de la referencia, añade las extensiones del conjunto de instrucciones VIS 3 y el modo hiperprivilegiado a la especificación de 2007. [ 14 ]

En octubre de 2015, Oracle lanzó SPARC M7, el primer procesador basado en la nueva especificación Oracle SPARC Architecture 2015 (OSA2015). [ 7 ] [ 15 ] Esta revisión incluye extensiones del conjunto de instrucciones VIS 4, cifrado asistido por hardware y memoria segura de silicio (SSM). [ 16 ]

En septiembre de 2017, Oracle lanzó SPARC M8, el primer procesador basado en la nueva especificación Oracle SPARC Architecture 2017 (OSA2017).

La arquitectura SPARC ha proporcionado compatibilidad binaria continua para las aplicaciones desde la primera implementación de SPARC V7 en 1987 hasta las implementaciones de la arquitectura Sun UltraSPARC.

Entre las diversas implementaciones de SPARC, SuperSPARC y UltraSPARC-I de Sun fueron muy populares y se utilizaron como sistemas de referencia para las pruebas de rendimiento SPEC CPU95 y CPU2000. El  UltraSPARC-II de 296 MHz es el sistema de referencia para la prueba de rendimiento SPEC CPU2006.

Arquitectura

SPARC es una arquitectura de carga y almacenamiento (también conocida como arquitectura de registro a registro ); a excepción de las instrucciones de carga/almacenamiento utilizadas para acceder a la memoria , todas las instrucciones operan sobre los registros, de acuerdo con los principios de diseño RISC.

Un procesador SPARC incluye una unidad de enteros (IU) que realiza operaciones de carga, almacenamiento y aritméticas de enteros. [ 17 ] : 9 [ 10 ] : 15–16 Puede incluir una unidad de punto flotante (FPU) que realiza operaciones de punto flotante [ 17 ] : 9 [ 10 ] : 15–16 y, para SPARC V8, puede incluir un coprocesador (CP) que realiza operaciones específicas del coprocesador; la arquitectura no especifica qué funciones realizaría un coprocesador, aparte de las operaciones de carga y almacenamiento. [ 17 ] : 9

Registros

La arquitectura SPARC utiliza un esquema de ventanas de registro superpuestas. En cualquier instante, se visualizan 32 registros de propósito general. Una variable de puntero de ventana actual ( CWP ) en el hardware apunta al conjunto actual. El tamaño total del archivo de registros no forma parte de la arquitectura, lo que permite añadir más registros a medida que la tecnología mejora, hasta un máximo de 32 ventanas en SPARC V7 y V8, ya que CWP es de 5 bits y forma parte del registro PSR .

En SPARC V7 y V8, el CWP generalmente se decrementa con la instrucción SAVE (utilizada durante la llamada al procedimiento para abrir un nuevo marco de pila y cambiar la ventana de registros), o se incrementa con la instrucción RESTORE (que vuelve a la llamada antes de regresar del procedimiento). Los eventos de trampa ( interrupciones , excepciones o instrucciones TRAP) y las instrucciones RETT (que regresan de las trampas) también modifican el CWP . Para SPARC V9, el registro CWP se decrementa durante una instrucción RESTORE y se incrementa durante una instrucción SAVE. Esto es lo opuesto al comportamiento de PSR.CWP en SPARC V8. Este cambio no afecta a las instrucciones no privilegiadas.

En la figura superior se muestran los registros SPARC.

También existe un registro Y sin ventana, utilizado por las instrucciones de multiplicación, multiplicación entera y división entera. [ 17 ] : 32

Un procesador SPARC V8 con una FPU incluye 32 registros de punto flotante de 32 bits, cada uno de los cuales puede almacenar un número de punto flotante IEEE 754 de precisión simple . Un par par-impar de registros de punto flotante puede almacenar un número de punto flotante IEEE 754 de doble precisión, y un grupo de cuatro registros de punto flotante alineados cuádruplemente puede almacenar un número de punto flotante IEEE 754 de precisión cuádruple. [ 17 ] : 10

Un procesador SPARC V9 con una FPU incluye: [ 10 ] : 36–40

  • 32 registros de punto flotante de 32 bits, cada uno de los cuales puede almacenar un número de punto flotante IEEE 754 de precisión simple;
  • 32 registros de punto flotante de 64 bits, cada uno de los cuales puede almacenar un número de punto flotante IEEE 754 de doble precisión;
  • 16 registros de punto flotante de 128 bits, cada uno de los cuales puede almacenar un número de punto flotante IEEE 754 de precisión cuádruple.

Los registros están organizados como un conjunto de 64 registros de 32 bits, donde los primeros 32 se utilizan como registros de punto flotante de 32 bits, los pares pares e impares de los 64 registros se utilizan como registros de punto flotante de 64 bits, y los grupos alineados cuádruplemente de cuatro registros de punto flotante se utilizan como registros de punto flotante de 128 bits.

Los registros de punto flotante no tienen ventanas; son todos registros globales. [ 10 ] : 36–40

Formatos de instrucciones

Todas las instrucciones SPARC ocupan una palabra completa de 32 bits y comienzan en un límite de palabra. Se utilizan cuatro formatos, que se distinguen por los dos primeros bits. Todas las instrucciones aritméticas y lógicas tienen 2 operandos fuente y 1 operando destino. [ 18 ] RD es el "registro de destino", donde se deposita la salida de la operación. La mayoría de las instrucciones SPARC tienen al menos este registro, por lo que se coloca cerca del "inicio" del formato de instrucción. RS1 y RS2 son los "registros fuente", que pueden estar presentes o no, o ser reemplazados por una constante.

Instrucciones

Cargas y almacenes

Las instrucciones de carga y almacenamiento tienen un formato de tres operandos: dos operandos representan valores para la dirección y un operando indica el registro que se leerá o escribirá. La dirección se crea sumando los dos operandos. El segundo operando puede ser una constante o un registro. Las instrucciones de carga toman el valor de la dirección y lo colocan en el registro especificado por el tercer operando, mientras que las de almacenamiento toman el valor del registro especificado por el primer operando y lo colocan en la dirección. Para mayor claridad, el lenguaje ensamblador indica los operandos de dirección mediante corchetes separados por un signo más, en lugar de usar una lista separada por comas. Ejemplos: [ 18 ]

ld [%L1+%L2],%L3 !carga el valor de 32 bits en la dirección %L1+%L2 y coloca el valor en %L3 ld [%L1+8],%L2 !carga el valor en %L1+8 en %L2 ld [%L1],%L2 !como arriba, pero sin desplazamiento, que es lo mismo que +%G0 st %L1,[%I2] !almacena el valor en %L1 en la ubicación almacenada en %I2 st %G0,[%I1+8] !borrar la memoria en %I1+8

Debido al uso generalizado de datos que no son de 32 bits, como datos enteros de 16 u 8 bits o bytes de 8 bits en cadenas, existen instrucciones para cargar y almacenar medias palabras de 16 bits y bytes de 8 bits, así como instrucciones para cargar palabras de 32 bits. Durante una carga, estas instrucciones leerán solo el byte o la media palabra en la ubicación indicada y luego llenarán el resto del registro de destino con ceros (carga sin signo) o con el valor del bit más significativo del byte o la media palabra (carga con signo). Durante un almacenamiento, estas instrucciones descartan los bits superiores del registro y almacenan solo los inferiores. También existen instrucciones para cargar valores de doble precisión utilizados para aritmética de punto flotante , leyendo o escribiendo ocho bytes del registro indicado y del siguiente, de modo que si el destino de una carga es L1, se establecerán L1 y L2. La lista completa de instrucciones de carga y almacenamiento para los registros de propósito general en SPARC de 32 bits es LD: ST, , LDUB(byte sin signo), LDSB(byte con signo), LDUH(media palabra sin signo), LDSH(media palabra con signo), LDD(carga doble), STB(almacenamiento de byte), STH(almacenamiento de media palabra), STD(almacenamiento de doble). [ 18 ]

En SPARC V9, los registros son de 64 bits, y la LDinstrucción, renombrada LDUW, borra los 32 bits superiores del registro y carga el valor de 32 bits en los 32 bits inferiores, y la STinstrucción, renombrada STW, descarta los 32 bits superiores del registro y almacena solo los 32 bits inferiores. La nueva LDSWinstrucción establece los bits superiores del registro al valor del bit más alto de la palabra y carga el valor de 32 bits en los bits inferiores. La nueva LDXinstrucción carga un valor de 64 bits en el registro, y la STXinstrucción almacena los 64 bits del registro.

Las instrucciones LDF, LDDF, y LDQFcargan un valor de precisión simple, doble o cuádruple desde la memoria a un registro de punto flotante; las instrucciones STF, STDF, y STQFalmacenan un registro de punto flotante de precisión simple, doble o cuádruple en la memoria.

La instrucción de barrera de memoria , MEMBAR, cumple dos propósitos interrelacionados: articula restricciones de orden entre las referencias de memoria y facilita el control explícito sobre la finalización de dichas referencias. Por ejemplo, todos los efectos de las escrituras que aparecen antes de la instrucción MEMBAR deben ser visibles para todos los procesadores antes de que se pueda ejecutar cualquier carga posterior a MEMBAR. [ 19 ]

Operaciones de la ALU

Las instrucciones aritméticas y lógicas también utilizan un formato de tres operandos, donde los dos primeros son los operandos y el último es la ubicación para almacenar el resultado. El operando central puede ser un registro o una constante entera con signo de 13 bits; los demás operandos son registros. Cualquiera de los operandos de registro puede apuntar a G0; si el resultado apunta a G0, se descarta, lo que puede utilizarse para realizar pruebas. Algunos ejemplos son: [ 18 ]

Suma %L1, %L2, ​​%L3 !Suma los valores en %L1 y %L2 y coloca el resultado en %L3 sumar %L1,1,%L1 !incrementar %L1 agregar %G0,%G0,%L4 !borrar cualquier valor en %L4

La lista de instrucciones matemáticas es ADD, SUB, AND, OR, XOR, y versiones negadas ANDN, ORN, y XNOR. Una peculiaridad del diseño SPARC es que la mayoría de las instrucciones aritméticas vienen en pares, con una versión que establece los bits del código de condición NZVC en el registro de estado , y la otra que no los establece, siendo el valor predeterminado no establecer los códigos. Esto es para que el compilador tenga una forma de mover las instrucciones cuando intenta llenar ranuras de retardo. Si se desea que se establezcan los códigos de condición, esto se indica agregando cca la instrucción: [ 18 ]

subcc %L1,10,%G0 !compara %L1 con 10 e ignora el resultado, pero establece las banderas

Las operaciones de suma y resta también tienen otro modificador, X, que indica si la operación debe establecer el bit de acarreo:

addx %L1,100,%L1 !sumar 100 al valor en %L1 y rastrear el acarreo

SPARC V7 no tiene instrucciones de multiplicación ni de división, pero sí tiene MULSCC, que realiza un paso de una multiplicación probando un bit y sumando condicionalmente el multiplicando al producto. Esto se debe a que MULSCCpuede completarse en un ciclo de reloj en consonancia con la filosofía RISC. SPARC V8 añadió las instrucciones UMUL(multiplicación sin signo), SMUL(multiplicación con signo), UDIV(división sin signo) y SDIV(división con signo), con versiones que no actualizan los códigos de condición y versiones que sí lo hacen. MULSCCy las instrucciones de multiplicación usan el registro Y para almacenar los 32 bits superiores del producto; las instrucciones de división lo usan para almacenar los 32 bits superiores del dividendo. La RDYinstrucción lee el valor del registro Y en un registro de propósito general; la WRYinstrucción escribe el valor de un registro de propósito general en el registro Y. [ 17 ] : 32 SPARC V9 agregó MULX, que multiplica dos valores de 64 bits y produce un resultado de 64 bits, SDIVX, que divide un dividendo con signo de 64 bits por un divisor con signo de 64 bits y produce un cociente con signo de 64 bits, y UDIVX, que divide un dividendo sin signo de 64 bits por un divisor sin signo de 64 bits y produce un cociente con signo de 64 bits; ninguna de esas instrucciones usa el registro Y. [ 10 ] : 199

Derivación

Las bifurcaciones condicionales prueban los códigos de condición en un registro de estado , como se ve en muchos conjuntos de instrucciones, como la arquitectura IBM System/360 y sus sucesores, y la arquitectura x86 . Esto significa que una prueba y bifurcación normalmente se realiza con dos instrucciones: la primera es una instrucción ALU que establece los códigos de condición, seguida de una instrucción de bifurcación que examina uno de esos indicadores. El SPARC no tiene instrucciones de prueba especializadas; las pruebas se realizan utilizando instrucciones ALU normales con el destino establecido en %G0. Por ejemplo, para probar si un registro contiene el valor 10 y luego bifurcar al código que lo maneja, se haría lo siguiente:

subcc %L1,10,%G0 !resta 10 a %L1, estableciendo el indicador de cero si %L1 es 10 ¡Sea WASEQUAL! Si se establece el indicador cero, salte a la dirección marcada como WASEQUAL.

En una instrucción de salto condicional, el campo icc o fcc especifica la condición que se está evaluando. El campo de desplazamiento de 22 bits es la dirección, relativa al PC actual, del destino, en palabras, de modo que los saltos condicionales pueden avanzar o retroceder hasta 8 megabytes. El bit ANNUL (A) se utiliza para eliminar algunas ranuras de retardo. Si es 0 en un salto condicional, la ranura de retardo se ejecuta normalmente. Si es 1, la ranura de retardo solo se ejecuta si se toma el salto. Si no se toma, se omite la instrucción que sigue al salto condicional.

Existe una amplia variedad de bifurcaciones condicionales: BA(bifurcación siempre, esencialmente un salto), BN(bifurcación nunca), BE(igual), BNE(distinto de), BL(menor que), BLE(menor o igual), BLEU(menor o igual, sin signo), BG(mayor), BGE(mayor o igual), BGU(mayor sin signo), BPOS(positivo), BNEG(negativo), BCC(acarreo limpio), BCS(acarreo conjunto), BVC(desbordamiento limpio), BVS(desbordamiento conjunto). [ 17 ] : 119–120

La FPU y la CP tienen conjuntos de códigos de condición separados de los códigos de condición enteros y entre sí; se definieron dos conjuntos adicionales de instrucciones de salto para probar esos códigos de condición. Agregar una F al principio de la instrucción de salto en la lista anterior realiza la prueba contra los códigos de condición de la FPU, [ 17 ] : 121–122 mientras que, en SPARC V8, agregar una C prueba los indicadores en la CP, que de otro modo no estaría definida. [ 17 ] : 123–124

La instrucción (saltar a subrutina) utiliza un desplazamiento de palabra relativo al contador de programaCALL de 30 bits . Como la dirección de destino especifica el inicio de una palabra, no de un byte, 30 bits son suficientes para alcanzar cualquier dirección en el espacio de direcciones de 4 gigabytes. [ 18 ] La instrucción CALL deposita la dirección de retorno en el registro R15, también conocido como registro de salida O7.

La JMPLinstrucción (de salto y enlace) consta de tres operandos: dos representan valores para la dirección de destino y el tercero, un registro donde se almacena la dirección de retorno. La dirección se obtiene sumando los dos operandos para generar una dirección de 32 bits. El segundo operando puede ser una constante o un registro.

constantes grandes

Como el código de operación de la instrucción ocupa algunos bits de la palabra de instrucción de 32 bits, no hay forma de cargar una constante de 32 bits usando una sola instrucción. Esto es importante porque las direcciones se manipulan a través de registros y son de 32 bits. Para facilitar esto, la SETHIinstrucción de propósito especial copia su operando inmediato de 22 bits en los 22 bits de orden superior de cualquier registro especificado y establece cada uno de los 10 bits de orden inferior a 0. En el uso general, SETHI va seguido de una instrucción OR con solo los 10 bits inferiores del valor establecidos. Para facilitar esto, el ensamblador incluye las macros %hi(X)AND y AND %lo(X). Por ejemplo: [ 18 ]

sethi %hi(0x89ABCDEF),%L1 !establece los 22 bits superiores de L1 o %L1,%lo(0x89ABCDEF),%L1 !establece los 10 bits inferiores de L1 mediante OR

Las macros hi y lo se ejecutan en tiempo de ensamblaje, no en tiempo de ejecución, por lo que no afecta al rendimiento y, además, deja más claro que L1 se establece en un único valor, no en dos valores no relacionados. Para simplificar aún más esto, el ensamblador también incluye una "instrucción sintética", setque realiza estas dos operaciones en una sola línea:

establecer 0x89ABCDEF,% L1

Esto genera las dos instrucciones anteriores si el valor es mayor que 13 bits; de lo contrario, emitirá un único ldvalor. [ 18 ]

Instrucciones sintéticas

Como se mencionó anteriormente, el ensamblador SPARC utiliza "instrucciones sintéticas" para facilitar las tareas de codificación comunes. Algunos ejemplos adicionales incluyen (entre otros): [ 18 ]

Licenciatarios de la arquitectura SPARC

Intel fue el único productor del 80386 , lo que lo hizo muy caro y provocó que la industria desconfiara de las CPU de un solo proveedor . Cuando Sun anunció SPARC en 1987, la compañía declaró que estaría disponible a través de múltiples proveedores. Fujitsu fue el primer proveedor de SPARC y Cypress Semiconductor fue el segundo licenciatario; a partir de febrero de 1989 Sus CPU SPARC estaban disponibles, al igual que la FPU de Texas Instruments. [ 20 ] Las siguientes organizaciones han licenciado la arquitectura SPARC :

Implementaciones

Notas :

  1. 1 2 Hilos por núcleo × número de núcleos
  2. Fujitsu, LSI Logic , Weitek, Texas Instruments, Cypress y Temic produjeron diversas implementaciones de SPARC V7. Un procesador SPARC V7 generalmente constaba de varios chips discretos, que normalmente comprendían una unidad de enteros (IU), una unidad de punto flotante (FPU), una unidad de gestión de memoria (MMU) y memoria caché. Por el contrario, el Atmel (ahora Microchip Technology) TSC695 es una implementación de SPARC V7 de un solo chip.
  3. @167 MHz
  4. @250 MHz
  5. @400 MHz
  6. @440 MHz
  7. máx. a 500 MHz
  8. @1200 MHz
  9. excluyendo los buses de E/S
  10. nominal; especificación de 100 a 424 MHz dependiendo de las capacidades de la RAM conectada.

Soporte del sistema operativo

Las máquinas SPARC generalmente han utilizado SunOS , Solaris , JavaOS u OpenSolaris de Sun, incluyendo derivados como illumos y OpenIndiana , pero también se han utilizado otros sistemas operativos , como NeXTSTEP , RTEMS , FreeBSD , OpenBSD , NetBSD y Linux .

En 1993, Intergraph anunció una adaptación de Windows NT a la arquitectura SPARC, [ 48 ] pero posteriormente fue cancelada.

En octubre de 2015, Oracle anunció una "plataforma de referencia Linux para SPARC". [ 49 ]

Implementaciones de código abierto

Existen varias implementaciones de la arquitectura SPARC completamente de código abierto :

  • LEON , una implementación SPARC V8 de 32 bits tolerante a la radiación , diseñada especialmente para uso espacial. El código fuente está escrito en VHDL y tiene licencia GPL .
  • OpenSPARC T1 , lanzado en 2006, es una implementación de 64 bits y 32 hilos que cumple con la arquitectura UltraSPARC 2005 y con la versión 9 de SPARC (nivel 1). El código fuente está escrito en Verilog y se distribuye bajo diversas licencias. La mayor parte del código fuente de OpenSPARC T1 se distribuye bajo la licencia GPL. El código fuente basado en proyectos de código abierto existentes seguirá distribuyéndose bajo sus licencias actuales. Los programas binarios se distribuyen bajo un acuerdo de licencia de software binario .
  • S1 es un núcleo de CPU de 64 bits compatible con Wishbone, basado en el diseño OpenSPARC T1. Se trata de un único núcleo UltraSPARC V9 con capacidad SMT de 4 vías. Al igual que el T1, su código fuente está licenciado bajo la GPL.
  • OpenSPARC T2 , lanzado en 2008, es una implementación de 64 bits y 64 hilos que cumple con la arquitectura UltraSPARC 2007 y con la versión 9 (nivel 1) de SPARC. El código fuente está escrito en Verilog y se distribuye bajo diversas licencias. La mayor parte del código fuente de OpenSPARC T2 se distribuye bajo la licencia GPL. El código fuente basado en proyectos de código abierto existentes seguirá distribuyéndose bajo sus licencias actuales. Los programas binarios se distribuyen bajo un acuerdo de licencia de software binario.

También existe un simulador totalmente de código abierto para la arquitectura SPARC:

  • RAMP Gold , una implementación SPARC versión 8 de 32 bits y 64 hilos, está diseñada para la simulación de arquitecturas basadas en FPGA. RAMP Gold está escrito en aproximadamente 36 000 líneas de SystemVerilog y se distribuye bajo la licencia BSD .

Supercomputadoras

Para cargas de computación de alto rendimiento (HPC), Fujitsu fabrica procesadores SPARC64 fx especializados con un nuevo conjunto de extensiones de instrucciones, denominado HPC-ACE (High Performance Computing – Arithmetic Computational Extensions).

El ordenador K de Fujitsu ocupó el puesto número 1 en las listas TOP500 de junio de 2011 y noviembre de 2011. Combina 88.128 CPU SPARC64 VIIIfx , cada una con ocho núcleos, para un total de 705.024 núcleos, casi el doble que cualquier otro sistema en el TOP500 en ese momento. El ordenador K era más potente que los cinco sistemas siguientes en la lista combinados, y tenía la mayor relación rendimiento-potencia de cualquier sistema de supercomputación. [ 50 ] También ocupó el puesto número 6 en la lista Green500 de junio de 2011, con una puntuación de 824,56 MFLOPS/W. [ 51 ] En la publicación de noviembre de 2012 de TOP500 , el ordenador K ocupó el puesto número 3 , utilizando con mucha más potencia que los tres primeros. [ 52 ] Ocupó el puesto número 85 en la publicación correspondiente de Green500 . [ 53 ] Los procesadores HPC más nuevos, IXfx y XIfx , se incluyeron en las supercomputadoras PRIMEHPC FX10 y FX100 recientes.

Tianhe-2 ( TOP500 n.° 1 en noviembre de 2014 [ 54 ] ) tiene varios nodos con procesadores Galaxy FT-1500 basados ​​en OpenSPARC desarrollados en China. Sin embargo, esos procesadores no contribuyeron a la puntuación LINPACK . [ 55 ] [ 56 ]

Véase también

  • ERC32  — basado en la especificación SPARC V7
  • Ross Technology, Inc.  — desarrollador de microprocesadores SPARC durante las décadas de 1980 y 1990.
  • Sparcle  : una versión modificada de SPARC con soporte para multiprocesamiento utilizada por el proyecto Alewife del MIT.
  • LEON  : un procesador SPARC V8 con certificación espacial.
  • R1000  : un microprocesador ruso de cuatro núcleos basado en la especificación SPARC V9.
  • Galaxy FT-1500 : un procesador  chino de 16 núcleos basado en OpenSPARC.

Referencias

  1. 1 2 "Fujitsu llevará a ARM al reino de Super" . The CPU Shack Museum . 21 de junio de 2016. Archivado del original el 30 de junio de 2019. Recuperado el 30 de junio de 2019 .
  2. 1 2 "Cronología" . SPARC International . Archivado del original el 24 de abril de 2019. Recuperado el 30 de junio de 2019 .
  3. Bell, Gordon ; Strecker, WD ¿Qué hemos aprendido del PDP-11? - ¿Qué hemos aprendido de VAX y Alpha? (PDF) (Informe) . Recuperado el 26 de junio de 2025 .
  4. Vaughan-Nichols, Steven J. (5 de septiembre de 2017). "Sun set: Oracle cierra las últimas líneas de productos de Sun" . ZDNet . Archivado del original el 10 de septiembre de 2017. Recuperado el 11 de septiembre de 2017 .
  5. Nichols, Shaun (31 de agosto de 2017). "Oracle finalmente decide dejar de prolongar lo inevitable y comienza los despidos de personal de hardware" . The Register . Archivado del original el 12 de septiembre de 2017. Consultado el 11 de septiembre de 2017 .
  6. "Hoja de ruta: Fujitsu Global" . www.fujitsu.com . Consultado el 15 de febrero de 2022 .
  7. 1 2 "Arquitectura Oracle SPARC 2015: Una arquitectura... Múltiples implementaciones innovadoras" (PDF) . Borrador D1.0.0. 12 de enero de 2016. Archivado (PDF) del original el 24 de abril de 2016. Recuperado el 13 de junio de 2016. IMPL . DEP. #2-V8: Una implementación de la arquitectura Oracle SPARC puede contener de 72 a 640 registros R de propósito general de 64 bits. Esto corresponde a una agrupación de los registros en MAXPGL + 1 conjuntos de registros R globales más una pila circular de N_REG_WINDOWS conjuntos de 16 registros cada uno, conocidos como ventanas de registro. El número de ventanas de registro presentes (N_REG_WINDOWS) depende de la implementación, dentro del rango de 3 a 32 (inclusive).
  8. "Opciones SPARC" , Uso de la Colección de Compiladores GNU (GCC) , GNU , archivado del original el 9 de enero de 2013 , recuperado el 8 de enero de 2013
  9. Optimizaciones de SPARC con GCC , OSNews , 23 de febrero de 2004, archivado del original el 23 de mayo de 2013 , consultado el 8 de enero de 2013.
  10. 1 2 3 4 5 6 Weaver, DL; Germond, T., eds. (1994). The SPARC Architecture Manual, Versión 9. SPARC International, Inc.: Prentice Hall . ISBN 0-13-825001-4. Consultado el 27 de mayo de 2023 .
  11. "Comportamiento e implementación de SPARC" . Guía de computación numérica – Sun Studio 10. Sun Microsystems, Inc. 2004. Archivado del original el 25 de enero de 2022. Recuperado el 24 de septiembre de 2011. Sin embargo, existen cuatro situaciones en las que el hardware no completará correctamente una instrucción de punto flotante: ... La instrucción no está implementada por el hardware (como ... instrucciones de precisión cuádruple en cualquier FPU de SPARC).  
  12. "Sun acelera el crecimiento del ecosistema UltraSPARC CMT" . Sun Microsystems. Archivado del original el 26 de enero de 2008.
  13. "Preguntas frecuentes sobre OpenSPARC" . Oracle. Archivado del original el 17 de octubre de 2012. Consultado el 20 de marzo de 2021 .
  14. "Arquitectura Oracle SPARC 2011" (PDF) , Oracle Corporation , 21 de mayo de 2014, archivado (PDF) del original el 24 de septiembre de 2015 , recuperado el 25 de noviembre de 2015.
  15. Soat, John. "Innovación SPARC M7" . Sitio web de Oracle . Oracle Corporation . Archivado del original el 5 de septiembre de 2015. Recuperado el 13 de octubre de 2015 .
  16. "Software en Silicon Cloud - Oracle" . www.oracle.com . Archivado del original el 21 de enero de 2019. Consultado el 21 de enero de 2019 .
  17. 1 2 3 4 5 6 7 8 9 El Manual de Arquitectura SPARC, Versión 8. SPARC International, Inc. 1992. Recuperado el 27 de mayo de 2023 .
  18. 1 2 3 4 5 6 7 8 9 "Instrucciones fundamentales de SPARC" .
  19. " SPARC64 IXfx Extensions Fujitsu Limited Ver 12, 2 de diciembre de 2013" (PDF) . págs. 103–104 . Consultado el 17 de diciembre de 2023 . 
  20. 1 2 3 4 5 6 Marshall, Trevor; Tazelaar, Jane Morrill (febrero de 1989). "Vale la pena el RISC" . BYTE . McGraw-Hill . págs. 245–249 . Recuperado el 8 de octubre de 2024 . 
  21. "Fujitsu SPARC" . cpu-collection.de . Archivado del original el 6 de agosto de 2016. Consultado el 30 de junio de 2019 .
  22. "Floodgap Retrobits presenta Solbourne Solace: un santuario para el olvidado SPARC" . www.floodgap.com . Archivado del original el 1 de diciembre de 2020. Consultado el 14 de enero de 2020 .
  23. Sager, D.; Hinton, G.; Upton, M.; Chappell, T.; Fletcher, TD; Samaan, S.; Murray, R. (2001). "Un microprocesador CMOS IA32 de 0,18 μm con una unidad de ejecución de enteros de 4 GHz". 2001 IEEE International Solid-State Circuits Conference. Digest of Technical Papers. ISSCC (Cat. No. 01CH37177) . San Francisco, CA, EE. UU.: IEEE. pp. 324–325 . doi : 10.1109/ISSCC.2001.912658 . ISBN  978-0-7803-6608-4.
  24. Características y especificaciones clave del FX1 (PDF) , Fujitsu , 19 de febrero de 2008, archivado (PDF) del original el 18 de enero de 2012 , consultado el 6 de diciembre de 2011.
  25. Tremblay, Marc ; Chaudhry, Shailender (19 de febrero de 2008), "Un procesador CMT SPARC(R) de tercera generación de 65 nm, 16 núcleos, 32 hilos más 32 hilos exploradores" (PDF) , OpenSPARC , Sun Microsystems , archivado del original el 16 de enero de 2013 , consultado el 6 de diciembre de 2011.
  26. Vance, Ashlee (15 de junio de 2009), "Se dice que Sun cancelará un gran proyecto de chips" , The New York Times , archivado del original el 4 de noviembre de 2011 , recuperado el 23 de mayo de 2010.
  27. "Fujitsu presenta el SPARC64 VII" , heise online , 28 de agosto de 2008, archivado del original el 23 de mayo de 2013 , consultado el 6 de diciembre de 2011.
  28. Barak, Sylvie (14 de mayo de 2009), "Fujitsu presenta la CPU más rápida del mundo" , The Inquirer , archivado del original el 17 de mayo de 2009 , consultado el 6 de diciembre de 2011.
  29. "Procesador Sparc T3" (PDF) , Oracle Corporation , archivado (PDF) del original el 24 de abril de 2016 , recuperado el 6 de diciembre de 2011.
  30. Morgan, Timothy Prickett (3 de diciembre de 2010), "Ellison: Sparc T4 llegará el próximo año" , The Register , archivado del original el 7 de marzo de 2012 , consultado el 6 de diciembre de 2011.
  31. "Arquitectura de servidores SPARC Enterprise serie M" (PDF) , Fujitsu , abril de 2011, archivado (PDF) del original el 4 de marzo de 2016 , consultado el 5 de noviembre de 2011.
  32. Morgan, Timothy Prickett (22 de agosto de 2011), "El chip Sparc T4 de Oracle" , The Register , archivado del original el 30 de noviembre de 2011 , consultado el 6 de diciembre de 2011.
  33. Morgan, Timothy Prickett (21 de noviembre de 2011), "Fujitsu presenta el impresionante Sparc64 de 16 núcleos" , The Register , archivado del original el 24 de noviembre de 2011 , consultado el 8 de diciembre de 2011.
  34. "Fujitsu lanza la supercomputadora PRIMEHPC FX10" , Fujitsu , 7 de noviembre de 2011, archivado del original el 18 de enero de 2012 , consultado el 3 de febrero de 2012.
  35. "Descarga de Ixfx" (PDF) . fujitsu.com. Archivado (PDF) del original el 18 de mayo de 2015. Recuperado el 17 de mayo de 2015 .
  36. "Imágenes de SPARC64" (PDF) . fujitsu.com. Archivado (PDF) del original el 22 de abril de 2016. Recuperado el 29 de agosto de 2017 .
  37. "Productos Oracle" (PDF) . oracle.com. Archivado (PDF) del original el 8 de marzo de 2017. Consultado el 29 de agosto de 2017 .
  38. "Productos Oracle SPARC" (PDF) . oracle.com. Archivado (PDF) del original el 26 de septiembre de 2018. Consultado el 29 de agosto de 2017 .
  39. "Presentación de Fujitsu en PDF" (PDF) . fujitsu.com. Archivado (PDF) del original el 22 de abril de 2016. Consultado el 29 de agosto de 2017 .
  40. "Imágenes globales de Fujitsu" (PDF) . fujitsu.com. Archivado del original (PDF) el 18 de mayo de 2015. Consultado el 29 de agosto de 2017 .
  41. "M7: SPARC de próxima generación. Hotchips 26" (PDF) . swisdev.oracle.com. Archivado (PDF) del original el 31 de octubre de 2014. Recuperado el 12 de agosto de 2014 .
  42. "Arquitectura de servidores SPARC T7 y SPARC M7 de Oracle" (PDF) . oracle.com. Archivado (PDF) del original el 6 de noviembre de 2015. Consultado el 10 de octubre de 2015 .
  43. Vinaik, Basant; Puri, Rahoul (24 de agosto de 2015). "Hot Chips – 23–25 de agosto de 2015 – Día 1 de la conferencia – Procesador Sonoma de Oracle: Procesador SPARC avanzado de bajo costo para cargas de trabajo empresariales" (PDF) . hotchips.org. Archivado (PDF) del original el 9 de octubre de 2022. Recuperado el 25 de enero de 2022 .
  44. "Se revelan los planos: Oracle integra Sparc M7 e InfiniBand en los chips 'Sonoma' más económicos" . theregister.co.uk. Archivado del original el 29 de agosto de 2017. Consultado el 29 de agosto de 2017 .
  45. "Documentos en Fujitsu" (PDF) . fujitsu.com. Archivado (PDF) del original el 29 de agosto de 2017. Recuperado el 29 de agosto de 2017 .
  46. "Los nuevos sistemas SPARC de Oracle ofrecen un rendimiento, capacidades de seguridad y eficiencia entre 2 y 7 veces superiores a los sistemas basados ​​en Intel" . oracle.com. Archivado del original el 18 de septiembre de 2017. Consultado el 18 de septiembre de 2017 .
  47. "Procesador SPARC M8" (PDF) . oracle.com. Archivado (PDF) del original el 28 de febrero de 2019. Consultado el 18 de septiembre de 2017 .
  48. McLaughlin, John (7 de julio de 1993), "Intergraph adapta Windows NT a SPARC" , The Florida SunFlash , 55 (11), archivado del original el 23 de julio de 2014 , recuperado el 6 de diciembre de 2011.
  49. Proyecto: Linux para SPARC - oss.oracle.com , 12 de octubre de 2015, archivado del original el 8 de diciembre de 2015 , recuperado el 4 de diciembre de 2015
  50. "Lista TOP500 (1-100)" , TOP500 , junio de 2011, archivado del original el 23 de junio de 2011 , consultado el 6 de diciembre de 2011
  51. "The Green500 List", Green500, June 2011, archived from the original on July 3, 2011
  52. "Top500 List – November 2012 | TOP500 Supercomputer Sites", TOP500, November 2012, archived from the original on November 13, 2012, retrieved January 8, 2013
  53. "The Green500 List – November 2012 | The Green500", Green500, November 2012, archived from the original on June 6, 2016, retrieved January 8, 2013
  54. "Tianhe-2 (MilkyWay-2)", TOP500, May 2015, archived from the original on May 26, 2015, retrieved May 27, 2015
  55. Keane, Andy, "Tesla Supercomputing"(mp4), Nvidia, archived from the original on February 25, 2021, retrieved December 6, 2011
  56. Thibodeau, Patrick (November 4, 2010). "U.S. says China building 'entirely indigenous' supercomputer". Computerworld. Archived from the original on October 11, 2012. Retrieved August 28, 2017.
  • SPARC International, Inc.
  • Oracle SPARC Processor Documentation at the Wayback Machine(archived 2019-10-13)
  • SPARC Technical Documents
  • OpenSPARC Architecture specification
  • Hypervisor/Sun4v Reference Materials
  • Fujitsu SPARC64 V, VI, VII, VIIIfx, IXfx Extensions at the Wayback Machine(archived 2019-04-03), X / X+ Specification at the Wayback Machine(archived 2023-12-11), XII Specification, and XIfx Extensions
  • Sun – UltraSPARC Processors Documentation at the Wayback Machine(archived 2010-01-14)
  • Sun – FOSS Open Hardware Documentation at the Wayback Machine(archived 2011-12-09)
  • OpenSPARC at the Wayback Machine(archived 2011-02-27)
  • Oracle SPARC and Solaris Public Roadmap at the Wayback Machine(archived 2018-05-25)
  • Fujitsu SPARC Roadmap
  • SPARC processor images and descriptions
  • The Rough Guide to MBus Modules (SuperSPARC, hyperSPARC)
  • SPARC Version 9, lecture by David Ditzel on YouTube
  • Una lista bastante extensa de sistemas operativos que admiten procesadores SPARC64.
Obtenido de " https://en.wikipedia.org/w/index.php?title=SPARC&oldid=1360276555 "