SPARC
SPARC (Arquitectura de procesador escalable) es una arquitectura de conjunto de instrucciones de computadora 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 por primera vez en 1986 y lanzado al mercado en 1987, SPARC fue uno de los primeros sistemas RISC comerciales más exitosos, y su éxito condujo a la introducción de diseños RISC similares de muchos proveedores durante las décadas de 1980 y 1990.
La primera implementación de la arquitectura original de 32 bits (SPARC V7) se utilizó en los sistemas de servidores y estaciones de trabajo informáticas Sun-4 de Sun, reemplazando sus sistemas Sun-3 anteriores basados en la serie de procesadores Motorola 68000. SPARC V8 agregó una serie de mejoras que formaban 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. Más tarde, Los procesadores SPARC se utilizaron en servidores de multiprocesamiento simétrico (SMP) y acceso a memoria no uniforme (CC-NUMA) producidos por Sun, Solbourne y Fujitsu, entre otros.
El diseño se entregó 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 otorgar licencias y promover la arquitectura SPARC, administrar las marcas comerciales de SPARC (incluida SPARC, de la que es propietario) y proporcionar pruebas de conformidad. SPARC International tenía la intención de hacer crecer la arquitectura SPARC para crear un ecosistema más grande; SPARC ha obtenido la licencia de varios fabricantes, incluidos Atmel, Bipolar Integrated Technology, Cypress Semiconductor, Fujitsu, Matsushita y Texas Instruments. Debido a SPARC International, SPARC es completamente abierto, no propietario y libre de regalías.
En septiembre de 2017, los procesadores SPARC comerciales de gama alta más recientes son el SPARC64 XII de Fujitsu (presentado en 2017 para su servidor SPARC M12) y el SPARC M8 de Oracle presentado en septiembre de 2017 para su servidor de alta servidores finales.
El viernes 1 de septiembre de 2017, después de una ronda de despidos que comenzó en Oracle Labs en noviembre de 2016, Oracle finalizó el 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 de Santa Clara, California y Burlington, Massachusetts.
Fujitsu también descontinuará su producción de SPARC (ya pasó a producir sus propias CPU basadas en ARM), luego de dos actualizaciones "mejoradas" versiones del servidor SPARC M12 más antiguo de Fujitsu en 2020–22 (anteriormente planeado para 2021) y nuevamente en 2026–27, fin de la venta en 2029, de servidores UNIX y un año después para su mainframe y fin de -apoyo en 2034 "para promover la modernización del cliente".
Características
La arquitectura SPARC estuvo fuertemente influenciada por los diseños RISC anteriores, incluidos el RISC I y II de la Universidad de California, Berkeley y el IBM 801. Estos diseños RISC originales eran minimalistas e incluían la menor cantidad posible de funciones o códigos de operación. y con el objetivo de ejecutar instrucciones a una velocidad de casi una instrucción por ciclo de reloj. Esto los hizo similares a la arquitectura MIPS en muchos aspectos, incluida la falta de instrucciones como multiplicar o dividir. Otra característica de SPARC influenciada por este primer movimiento RISC es la ranura de demora de rama.
El procesador SPARC suele contener hasta 160 registros de uso general. Según el "Oracle SPARC Architecture 2015" especificación una "implementación puede contener de 72 a 640 de uso general de 64 bits" registros 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á conectado 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 llama una ventana de registros, y en la llamada/retorno de la función, esta ventana se mueve hacia arriba y hacia abajo en la pila de registros. Cada ventana tiene 8 registros locales y comparte 8 registros con cada una de las ventanas adyacentes. Los registros compartidos se usan para pasar parámetros de funciones y devolver valores, y los registros locales se usan para retener valores locales entre llamadas a funciones.
El "Escalable" en SPARC proviene del hecho de que la especificación SPARC permite que las implementaciones se escalen desde procesadores integrados hasta grandes procesadores de servidor, todos compartiendo el mismo conjunto de instrucciones central (sin privilegios). Uno de los parámetros arquitectónicos que se 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 entre ellas. Otras arquitecturas que incluyen funciones de archivo de registro similares incluyen Intel i960, IA-64 y AMD 29000.
La arquitectura ha pasado por varias revisiones. Obtuvo la funcionalidad de multiplicación y división de hardware en la versión 8. Se agregaron 64 bits (direccionamiento y datos) a la especificación SPARC de la versión 9 publicada en 1994.
En la versión 8 de SPARC, el archivo de registro de punto flotante tiene 16 registros de doble precisión. Cada uno de ellos se puede utilizar como dos registros de precisión simple, proporcionando un total de 32 registros de precisión simple. Un par de números pares e impares de registros de precisión doble se puede utilizar como un registro de precisión cuádruple, lo que permite 8 registros de precisión cuádruple. La versión 9 de SPARC agregó 16 registros de precisión doble más (a los que también se puede acceder como 8 registros de precisión cuádruple), pero no se puede acceder a estos registros adicionales como registros de precisión simple. Ninguna CPU SPARC implementa operaciones de precisión cuádruple en hardware a partir de 2004.
Las instrucciones de suma y resta etiquetadas realizan sumas y restas en valores verificando que los dos bits inferiores de ambos operandos sean 0 e informando sobre el desbordamiento si no lo son. Esto puede ser útil en la implementación del tiempo de ejecución para ML, Lisp y lenguajes similares que pueden usar un formato de entero etiquetado.
El carácter endian de la arquitectura SPARC V8 de 32 bits es puramente big-endian. La arquitectura SPARC V9 de 64 bits utiliza instrucciones big-endian, pero puede acceder a los datos en orden de bytes big-endian o little-endian, elegidos en el nivel de instrucciones de la aplicación (carga-almacenamiento) o en el nivel de la página de memoria (a través de un configuración de MMU). Este último se utiliza a menudo para acceder a datos de dispositivos inherentemente little-endian, como los de los buses PCI.
Historia
Ha habido tres revisiones importantes de la arquitectura. La primera versión publicada fue SPARC Versión 7 (V7) de 32 bits en 1986. SPARC Versión 8 (V8), una definición de arquitectura SPARC mejorada, se lanzó en 1990. Las principales diferencias entre V7 y V8 fueron la adición de instrucciones de multiplicación y división de enteros, y una actualización de 80 bits de "extended-precision" aritmética de punto flotante a "precisión cuádruple" de 128 bits; aritmética. SPARC V8 sirvió como base para el estándar IEEE 1754-1994, un estándar IEEE para una arquitectura de microprocesador de 32 bits.
SPARC Versión 9, la arquitectura SPARC de 64 bits, fue lanzada por SPARC International en 1993. Fue desarrollada por el Comité de Arquitectura SPARC compuesto por Amdahl Corporation, Fujitsu, ICL, LSI Logic, Matsushita, Philips, Ross Technology, Sun Microsystems y Texas Instruments. Las especificaciones más nuevas siempre cumplen con la especificación SPARC V9 Nivel 1 completa.
En 2002, Fujitsu y Sun publicaron la Especificación de programación conjunta 1 (JPS1) de SPARC, que describe las funciones del procesador que se implementaron de manera idéntica en las CPU de ambas empresas ("Commonalidad"). Las primeras CPU que se ajustaron a JPS1 fueron la UltraSPARC III de Sun y la SPARC64 V de Fujitsu. Las funcionalidades que no están cubiertas por JPS1 se documentan para cada procesador en "Suplementos de implementación".
A fines de 2003, se lanzó JPS2 para admitir CPU multinúcleo. Las primeras CPU que se ajustaron a JPS2 fueron UltraSPARC IV de Sun y SPARC64 VI de Fujitsu.
A principios de 2006, Sun lanzó una especificación de arquitectura ampliada, UltraSPARC Architecture 2005. Esto incluye no solo las porciones no privilegiadas y la mayoría de las privilegiadas de SPARC V9, sino también todas las extensiones arquitectónicas desarrolladas a través de las generaciones de procesadores de UltraSPARC III, IV IV+, así como las extensiones CMT que comienzan con la implementación de UltraSPARC T1:
- las prórrogas 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 Sun
- instrucciones privilegiadas ALLCLEAN, OTHERW, NORMALW, e INVALW
- el acceso al registro VER es ahora hiperprivilado
- la instrucción SIR es ahora hiperprivileged
En 2007, Sun lanzó una especificación actualizada, UltraSPARC Architecture 2007, que cumplía con la implementación de UltraSPARC T2.
En agosto de 2012, Oracle Corporation puso a disposición una nueva especificación, Oracle SPARC Architecture 2011, que además de la actualización general de la referencia, agrega las extensiones del conjunto de instrucciones de VIS 3 y el modo hiperprivilegiado a la especificación de 2007.
En octubre de 2015, Oracle lanzó SPARC M7, el primer procesador basado en la nueva especificación Oracle SPARC Architecture 2015. Esta revisión incluye extensiones del conjunto de instrucciones de VIS 4, cifrado asistido por hardware y memoria protegida por silicio (SSM).
La arquitectura SPARC ha brindado compatibilidad binaria de aplicaciones continua desde la primera implementación de SPARC V7 en 1987 hasta las implementaciones de la arquitectura Sun UltraSPARC.
Entre varias implementaciones de SPARC, SuperSPARC y UltraSPARC-I de Sun fueron muy populares y se usaron como sistemas de referencia para las pruebas comparativas SPEC CPU95 y CPU2000. El UltraSPARC-II de 296 MHz es el sistema de referencia para el benchmark SPEC CPU2006.
Arquitectura
SPARC es una arquitectura de carga/almacenamiento (también conocida como arquitectura registro-registro); a excepción de las instrucciones de carga/almacenamiento utilizadas para acceder a la memoria, todas las instrucciones operan en los registros, de acuerdo con los principios de diseño de RISC.
Registros
La arquitectura SPARC tiene un esquema de ventana de registro superpuesto. En cualquier instante, son visibles 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 registro no forma parte de la arquitectura, lo que permite agregar 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, CWP normalmente se reducirá con la instrucción SAVE (utilizada por la instrucción SAVE durante la llamada al procedimiento para abrir un nuevo marco de pila y cambiar la ventana de registro), o se incrementará con la instrucción RESTORE (volver a la llamada antes de volver del procedimiento). Los eventos de captura (interrupciones, excepciones o instrucciones TRAP) y las instrucciones RETT (que regresan de las trampas) también cambian el CWP. Para SPARC V9, el registro CWP se reduce 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 tiene efecto en las instrucciones no privilegiadas.
Grupo de registro | Mnemonic | Dirección de registro | Availabilty |
---|---|---|---|
mundial | G0-G7 | R[0]-R[7] | Siempre los mismos, G0 siendo cero siempre. |
Fuera. | O0-O7 | R[8]-R[15] | Para ser entregado y devuelto de la subrutina llamada, como su "en". |
local | L0-L7 | R[16]-R[23] | Verdaderamente local a la subrutina actual. |
dentro | I0-I7 | R[24]-R[31] | Entregado de la persona que llama, y regresado al que llama, como su "out". |
Los registros SPARC se muestran en la figura anterior.
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 de origen y 1 operando de destino.
El formato de instrucción SETHI 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 en 0.
Formato registro ALU, ambas fuentes son registros; formato ALU inmediato, una fuente es un registro y una es una constante en el rango -4096 a +4095. El bit 13 selecciona entre ellos. En ambos casos, el destino es siempre un registro.
Las instrucciones de formato de rama controlan transferencias o ramas condicionales. El campo icc o fcc especifica el tipo de rama. El campo de desplazamiento de 22 bits proporciona la dirección relativa del objetivo en palabras para que las ramas condicionales puedan avanzar o retroceder hasta 8 megabytes. El bit ANNUL (A) se usa para deshacerse de algunas ranuras de retardo. Si es 0 en una bifurcación condicional, la ranura de retraso se ejecuta como de costumbre. Si es 1, la ranura de retardo solo se ejecuta si se toma la bifurcación. Si no se toma, se salta la instrucción que sigue a la bifurcación condicional.
La instrucción CALL utiliza un desplazamiento de palabra relativo al contador del programa de 30 bits. Este valor es suficiente para llegar a cualquier instrucción dentro de los 4 gigabytes de la persona que llama o todo el espacio de direcciones. La instrucción CALL deposita la dirección de retorno en el registro R15 también conocido como registro de salida O7.
Al igual que las instrucciones aritméticas, la arquitectura SPARC utiliza dos formatos diferentes para las instrucciones de carga y almacenamiento. El primer formato se usa para instrucciones que usan uno o dos registros como dirección efectiva. El segundo formato se usa para instrucciones que usan una constante entera como dirección efectiva.
Tipo | Bit | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
formato SETHI | 00 | RD | 100 | Inmediata constante 22 bits | ||||||||||||||||||||||||||||
Formato de la Subdivisión | 00 | A | icc | 010 | Desplazamiento constante 22 bits | |||||||||||||||||||||||||||
F. Formato de la Subdivisión | 00 | A | fcc | 110 | Desplazamiento constante 22 bits | |||||||||||||||||||||||||||
CALL disp | 01 | Desplazamiento relacionado con la PC | ||||||||||||||||||||||||||||||
Registro Aritmético | 10 | RD | opcode | RS 1 | 0 | 0 | RS 2 | |||||||||||||||||||||||||
Aritmetic inmediata | 10 | RD | opcode | RS 1 | 1 | Inmediata constante 13 bits | ||||||||||||||||||||||||||
FPU | 10 | FD | 110100/110101 | SM 1 | opf | SM 2 | ||||||||||||||||||||||||||
LD/ST register | 11 | RD | opcode | RS 1 | 0 | 0 | RS 2 | |||||||||||||||||||||||||
LD/ST immediate | 11 | RD | opcode | RS 1 | 1 | Inmediata constante 13 bits |
La mayoría de las instrucciones aritméticas vienen en pares con una versión configurando los bits del código de condición NZVC y la otra no. Esto es para que el compilador tenga una forma de mover las instrucciones cuando intenta llenar espacios de retardo.
SPARC V7 no tiene instrucciones de multiplicación o división, pero tiene MULSCC, que hace un paso de una multiplicación probando un bit y agregando condicionalmente el multiplicando al producto. Esto se debió a que MULSCC puede completar más de un ciclo de reloj de acuerdo con la filosofía RISC.
Licenciatarios de arquitectura SPARC
Las siguientes organizaciones han licenciado la arquitectura SPARC:
- Afara Websystems
- Bipolar Integrated Technology (BIT)
- Cypress Semiconductor
- European Space Research and Technology Center (ESTEC)
- Fujitsu (y su filial de Fujitsu Microelectrónica)
- Gaisler Research
- Sistemas informáticos HAL
- Hyundai
- LSI Logic
- Matra Harris Semiconductors (MHS)
- Matsushita Electrical Industrial Co.
- Meiko Scientific
- Metaflow Technologies
- Philips Electronics
- Prisma
- Ross Technology
- Solbourne Computer
- Corporación de Ingeniería de Procesos de Sistemas (SPEC)
- TEMIC
- Weitek
Implementaciones
Nombre (nombre de código) | Modelo | Frecuencia (MHz) | Arch. version | Año | Total de hilos | Proceso nm) | Transistores (millones) | Tamaño de la muerte (mm2) | IO pins | Power (W) | Voltaje (V) | L1 Dcache (KB) | L1 Icache (KB) | L2 cache (KB) | L3 cache (KB) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SPARC MB86900 | Fujitsu | 14.28 a 33 | V7 | 1986 | 1×1=1 | 1300 | 0.11 | — | 256 | — | — | 0–128 (unificado) | ninguno | ninguno | |
SPARC | Varios | 14.28 a 40 | V7 | 1989 a 1992 | 1×1=1 | 800-1300 | ~0.1–1.8 | — | 160-256 | — | — | 0–128 (unificado) | ninguno | ninguno | |
MN10501 (KAP) | Solbourne Computer,
Matsushita | 33-36 | V8 | 1990-1991 | 1x1=1 | — | 1.0 | — | — | — | — | 8 | 8 | 0–256 | ninguno |
microSPARC I (Tsunami) | TI TMS390S10 | 40–50 | V8 | 1992 | 1×1=1 | 800 | 0,8 | ¿225? | 288 | 2.5 | 5 | 2 | 4 | ninguno | ninguno |
SuperSPARC I (Vikingo) | TI TMX390Z50 / Sun STP1020 | 33-60 | V8 | 1992 | 1×1=1 | 800 | 3.1 | — | 293 | 14.3 | 5 | 16 | 20 | 0–2048 | ninguno |
SPARClite | Fujitsu MB8683x | 66–108 | V8E | 1992 | 1×1=1 | — | — | — | 144, 176 | — | 2.5/3.3–5.0 V, 2.5–3.3 V | 1, 2, 8, 16 | 1, 2, 8, 16 | ninguno | ninguno |
hyperSPARC (Colorado 1) | Ross RT620A | 40 a 90 | V8 | 1993 | 1×1=1 | 500 | 1,5 | — | — | — | ¿5? | 0 | 8 | 128–256 | ninguno |
microSPARC II (Swift) | Fujitsu MB86904 / Sun STP1012 | 60–125 | V8 | 1994 | 1×1=1 | 500 | 2.3 | 233 | 321 | 5 | 3.3 | 8 | 16 | ninguno | ninguno |
hyperSPARC (Colorado 2) | Ross RT620B | 90–125 | V8 | 1994 | 1×1=1 | 400 | 1,5 | — | — | — | 3.3 | 0 | 8 | 128–256 | ninguno |
SuperSPARC II (Voyager) | Sun STP1021 | 75 a 90 | V8 | 1994 | 1×1=1 | 800 | 3.1 | 299 | — | 16 | — | 16 | 20 | 1024–2048 | ninguno |
hyperSPARC (Colorado 3) | Ross RT620C | 125–166 | V8 | 1995 | 1×1=1 | 350 | 1,5 | — | — | — | 3.3 | 0 | 8 | 512–1024 | ninguno |
TurboSPARC | Fujitsu MB86907 | 160–180 | V8 | 1996 | 1×1=1 | 350 | 3.0 | 132 | 416 | 7 | 3.5 | 16 | 16 | 512 | ninguno |
UltraSPARC (Spitfire) | Sun STP1030 | 143–167 | V9 | 1995 | 1×1=1 | 470 | 3.8 | 315 | 521 | 30 | 3.3 | 16 | 16 | 512–1024 | ninguno |
UltraSPARC (Hornet) | Sun STP1030 | 200 | V9 | 1995 | 1×1=1 | 420 | 5.2 | 265 | 521 | — | 3.3 | 16 | 16 | 512–1024 | ninguno |
hyperSPARC (Colorado 4) | Ross RT620D | 180–200 | V8 | 1996 | 1×1=1 | 350 | 1.7 | — | — | — | 3.3 | 16 | 16 | 512 | ninguno |
SPARC64 | Fujitsu (HAL) | 101–118 | V9 | 1995 | 1×1=1 | 400 | — | Multichip | 286 | 50 | 3.8 | 128 | 128 | — | — |
SPARC64 II | Fujitsu (HAL) | 141–161 | V9 | 1996 | 1×1=1 | 350 | — | Multichip | 286 | 64 | 3.3 | 128 | 128 | — | — |
SPARC64 III | Fujitsu (HAL) MBCS70301 | 250-330 | V9 | 1998 | 1×1=1 | 240 | 17.6 | 240 | — | — | 2.5 | 64 | 64 | 8192 | — |
UltraSPARC IIs (Blackbird) | Sun STP1031 | 250–400 | V9 | 1997 | 1×1=1 | 350 | 5.4 | 149 | 521 | 25 | 2.5 | 16 | 16 | 1024 o 4096 | ninguno |
UltraSPARC IIs (Sapphire-Black) | Sun STP1032 / STP1034 | 360–480 | V9 | 1999 | 1×1=1 | 250 | 5.4 | 126 | 521 | 21 | 1.9 | 16 | 16 | 1024–8192 | ninguno |
UltraSPARC IIi (Sabre) | Sun SME1040 | 270-360 | V9 | 1997 | 1×1=1 | 350 | 5.4 | 156 | 587 | 21 | 1.9 | 16 | 16 | 256–2048 | ninguno |
UltraSPARC IIi (Sapphire-Red) | Sun SME1430 | 333–480 | V9 | 1998 | 1×1=1 | 250 | 5.4 | — | 587 | 21 | 1.9 | 16 | 16 | 2048 | ninguno |
UltraSPARC IIe (Hummingbird) | Sun SME1701 | 400 a 500 | V9 | 1999 | 1×1=1 | 180 Al | — | — | 370 | 13 | 1,5 a 1,7 | 16 | 16 | 256 | ninguno |
UltraSPARC IIi (IIe+) (Phantom) | Sun SME1532 | 550 a 650 | V9 | 2000 | 1×1=1 | 180 Cu | — | — | 370 | 17.6 | 1.7 | 16 | 16 | 512 | ninguno |
SPARC64 GP | Fujitsu SFCB81147 | 400–563 | V9 | 2000 | 1×1=1 | 180 | 30.2 | 217 | — | — | 1.8 | 128 | 128 | 8192 | — |
SPARC64 GP | -- | 600 a 810 | V9 | — | 1×1=1 | 150 | 30.2 | — | — | — | 1,5 | 128 | 128 | 8192 | — |
SPARC64 IV | Fujitsu MBCS80523 | 450–810 | V9 | 2000 | 1×1=1 | 130 | — | — | — | — | — | 128 | 128 | 2048 | — |
UltraSPARC III (Cheetah) | Sun SME1050 | 600 | JPS1 | 2001 | 1×1=1 | 180 Al | 29 | 330 | 1368 | 53 | 1.6 | 64 | 32 | 8192 | ninguno |
UltraSPARC III (Cheetah) | Sun SME1052 | 750–900 | JPS1 | 2001 | 1×1=1 | 130 Al | 29 | — | 1368 | — | 1.6 | 64 | 32 | 8192 | ninguno |
UltraSPARC III Cu (Cheetah+) | Sun SME1056 | 900–1200 | JPS1 | 2001 | 1×1=1 | 130 Cu | 29 | 232 | 1368 | 50 | 1.6 | 64 | 32 | 8192 | ninguno |
UltraSPARC IIIi (Jalapeño) | Sun SME1603 | 1064–1593 | JPS1 | 2003 | 1×1=1 | 130 | 87,5 | 206 | 959 | 52 | 1.3 | 64 | 32 | 1024 | ninguno |
SPARC64 V (Zeus) | Fujitsu | 1100–1350 | JPS1 | 2003 | 1×1=1 | 130 | 190 | 289 | 269 | 40 | 1.2 | 128 | 128 | 2048 | — |
SPARC64 V+ (Olympus-B) | Fujitsu | 1650–2160 | JPS1 | 2004 | 1×1=1 | 90 | 400 | 297 | 279 | 65 | 1 | 128 | 128 | 4096 | — |
UltraSPARC IV (Jaguar) | Sun SME1167 | 1050–1350 | JPS2 | 2004 | 1×2=2 | 130 | 66 | 356 | 1368 | 108 | 1.35 | 64 | 32 | 16384 | ninguno |
UltraSPARC IV+ (Panther) | Sun SME1167A | 1500–2100 | JPS2 | 2005 | 1×2=2 | 90 | 295 | 336 | 1368 | 90 | 1.1 | 64 | 64 | 2048 | 32768 |
UltraSPARC T1 (Niagara) | Sun SME1905 | 1000–1400 | UA2005 | 2005 | 4×8=32 | 90 | 300 | 340 | 1933 | 72 | 1.3 | 8 | 16 | 3072 | ninguno |
SPARC64 VI (Olympus-C) | Fujitsu | 2150–2400 | JPS2 | 2007 | 2×2=4 | 90 | 540 | 422 | — | 120–150 | 1.1 | 128×2 | 128×2 | 4096–6144 | ninguno |
UltraSPARC T2 (Niagara 2) | Sun SME1908A | 1000–1600 | UA2007 | 2007 | 8×8=64 | 65 | 503 | 342 | 1831 | 95 | 1.1–1.5 | 8 | 16 | 4096 | ninguno |
UltraSPARC T2 Plus (Victoria Falls) | Sun SME1910A | 1200–1600 | UA2007 | 2008 | 8×8=64 | 65 | 503 | 342 | 1831 | — | — | 8 | 16 | 4096 | ninguno |
SPARC64 VII (Jupiter) | Fujitsu | 2400–2880 | JPS2 | 2008 | 2×4=8 | 65 | 600 | 445 | — | 150 | — | 64×4 | 64×4 | 6144 | ninguno |
UltraSPARC "RK" (Rock) | Sun SME1832 | 2300 | ?? | cancelada | 2×16=32 | 65 | ? | 396 | 2326 | ? | ? | 32 | 32 | 2048 | ? |
SPARC64 VIIIfx (Venus) | Fujitsu | 2000 | JPS2 / HPC-ACE | 2009 | 1×8=8 | 45 | 760 | 513 | 1271 | 58 | ? | 32×8 | 32×8 | 6144 | ninguno |
LEON2FT | Atmel AT697F | 100 | V8 | 2009 | 1×1=1 | 180 | — | — | 196 | 1 | 1.8/3.3 | 16 | 32 | — | — |
SPARC T3 (Rainbow Falls) | Oracle/Sun | 1650 | UA2007 | 2010 | 8×16=128 | 40 | ?? | 371 | ? | 139 | ? | 8 | 16 | 6144 | ninguno |
Galaxy FT-1500 | NUDT (China) | 1800 | ¿UA2007? | ¿201? | 8×16=128 | 40 | ?? | ?? | ? | 65 | ? | 16×16 | 16×16 | 512×16 | 4096 |
SPARC64 VII+ (Jupiter-E o M3) | Fujitsu | 2667-3000 | JPS2 | 2010 | 2×4=8 | 65 | — | — | — | 160 | — | 64×4 | 64×4 | 12288 | ninguno |
LEON3FT | Cobham Gaisler GR712RC | 100 | V8E | 2011 | 1×2=2 | 180 | — | — | — | 1,5 | 1.8/3.3 | 4x4Kb | 4x4Kb | ninguno | ninguno |
R1000 | MCST (Rusia) | 1000 | JPS2 | 2011 | 1×4=4 | 90 | 180 | 128 | — | 15 | 1, 1.8, 2,5 | 32 | 16 | 2048 | ninguno |
SPARC T4 (Caídas de Yosemite) | Oracle | 2850-3000 | OSA2011 | 2011 | 8×8=64 | 40 | 855 | 403 | ? | 240 | ? | 16×8 | 16×8 | 128×8 | 4096 |
SPARC64 IXfx | Fujitsu | 1850 | JPS2 / HPC-ACE | 2012 | 1x16=16 | 40 | 1870 | 484 | 1442 | 110 | ? | 32×16 | 32×16 | 12288 | ninguno |
SPARC64 X (Atenea) | Fujitsu | 2800 | OSA2011 / HPC-ACE | 2012 | 2×16=32 | 28 | 2950 | 587,5 | 1500 | 270 | ? | 64×16 | 64×16 | 24576 | ninguno |
SPARC T5 | Oracle | 3600 | OSA2011 | 2013 | 8×16=128 | 28 | 1500 | 478 | ? | ? | ? | 16×16 | 16×16 | 128×16 | 8192 |
SPARC M5 | Oracle | 3600 | OSA2011 | 2013 | 8×6=48 | 28 | 3900 | 511 | ? | ? | ? | 16×6 | 16×6 | 128×6 | 49152 |
SPARC M6 | Oracle | 3600 | OSA2011 | 2013 | 8×12=96 | 28 | 4270 | 643 | ? | ? | ? | 16×12 | 16×12 | 128×12 | 49152 |
SPARC64 X+ (Athena+) | Fujitsu | 3200–3700 | OSA2011 / HPC-ACE | 2014 | 2×16=32 | 28 | 2990 | 600 | 1500 | 392 | ? | 64×16 | 64×16 | 24M | ninguno |
SPARC64 XIfx | Fujitsu | 2200 | JPS2 / HPC-ACE2 | 2014 | 1×(32+2)=34 | 20 | 3750 | ? | 1001 | ? | ? | 64×34 | 64×34 | 12M×2 | ninguno |
SPARC M7 | Oracle | 4133 | OSA2015 | 2015 | 8×32=256 | 20 | √10,000 | ? | ? | ? | ? | 16×32 | 16×32 | 256×24 | 65536 |
SPARC S7 | Oracle | 4270 | OSA2015 | 2016 | 8×8=64 | 20 | ?? | ? | ? | ? | ? | 16×8 | 16×8 | 256×2+256×4 | 16384 |
SPARC64 XII | Fujitsu | 4250 | ¿OSA201? / HPC-ACE | 2017 | 8×12=96 | 20 | 5500 | 795 | 1860 | ? | ? | 64×12 | 64×12 | 512×12 | 32768 |
SPARC M8 | Oracle | 5000 | OSA2017 | 2017 | 8×32=256 | 20 | ? | ? | ? | ? | ? | 32×32 | 16×32 | 128×32+256×8 | 65536 |
LEON4 | Cobham Gaisler GR740 | 250 | V8E | 2017 | 1×4=4 | 32 | — | — | — | — | 1.2/2.5/3.3 | 4x4 | 4x4 | 2048 | ninguno |
R2000 | MCST (Rusia) | 2000 | ? | 2018 | 1×8=8 | 28 | 500 | ? | — | ? | ? | ? | ? | ? | ninguno |
LEON5 | Cobham Gaisler | — | V8E | 2019 | ? | ? | — | — | — | — | — | ? | ? | 16 a 8192 | ninguno |
Nombre (nombre de código) | Modelo | Frecuencia (MHz) | Arch. version | Año | Total de hilos | Proceso nm) | Transistores (millones) | Tamaño de la muerte (mm2) | IO pins | Power (W) | Voltaje (V) | L1 Dcache (KB) | L1 Icache (KB) | L2 cache (KB) | L3 cache (KB) |
Notas:
- ^ a b Temas por núcleo × número de núcleos
- ^ Varios SPARC Las implementaciones V7 fueron producidas por Fujitsu, LSI Logic, Weitek, Texas Instruments, Cypress y Temic. Un procesador SPARC V7 consistía generalmente en varios chips discretos, generalmente compuestos por una unidad de entero (IU), una unidad de punto flotante (FPU), una unidad de gestión de memoria (MMU) y memoria de caché. Por el contrario, el Atmel (ahora Microchip Technology) TSC695 es una implementación de un solo chip SPARC V7.
- ^ @167 MHz
- ^ @250 MHz
- ^ @400 MHz
- ^ @440 MHz
- ^ max. @500 MHz
- ^ @1200 MHz
- ^ excluyendo los autobuses I/O
- ^ nominal; especificación de 100 a 424 MHz dependiendo de las capacidades de RAM adjuntas
Soporte del sistema operativo
Las máquinas SPARC generalmente han usado SunOS, Solaris u OpenSolaris de Sun, incluidos los derivados illumos y OpenIndiana, pero también se han usado otros sistemas operativos, como NeXTSTEP, RTEMS, FreeBSD, OpenBSD, NetBSD y Linux.
En 1993, Intergraph anunció una migración de Windows NT a la arquitectura SPARC, pero luego se canceló.
En octubre de 2015, Oracle anunció una "plataforma de referencia Linux para SPARC".
Implementaciones de código abierto
Existen varias implementaciones de código abierto de la arquitectura SPARC:
- LEON, una implementación tolerante a radiación de 32 bits, SPARC V8, diseñada especialmente para uso espacial. El código fuente está escrito en VHDL y licenciado bajo la GPL.
- OpenSPARC T1, lanzado en 2006, una implementación de 64 bits y 32 hilos conforme a la Arquitectura UltraSPARC 2005 y a la versión 9 del SPARC (Nivel 1). El código fuente está escrito en Verilog, y licenciado bajo muchas licencias. La mayoría OpenSPARC El código fuente T1 está bajo la licencia GPL. La fuente basada en proyectos existentes de código abierto seguirá siendo licenciada bajo sus licencias actuales. Los programas binarios están autorizados bajo un acuerdo de licencia de software binario.
- S1, un núcleo CPU compatible con Wishbone de 64 bits basado en el diseño OpenSPARC T1. Es un único núcleo UltraSPARC V9 capaz de SMT de 4 vías. Como el T1, el código fuente está licenciado bajo la GPL.
- OpenSPARC T2, lanzado en 2008, una implementación de 64 bits y 64 hilos conforme a la Arquitectura UltraSPARC 2007 y a la versión 9 del SPARC (Nivel 1). El código fuente está escrito en Verilog, y licenciado bajo muchas licencias. La mayoría OpenSPARC El código fuente T2 está bajo la licencia GPL. La fuente basada en los proyectos existentes de código abierto seguirá siendo licenciada bajo sus licencias actuales. Los programas binarios están bajo licencia bajo un acuerdo de licencia de software binario.
También existe un simulador de código abierto para la arquitectura SPARC:
- RAMP Oro, un SPARC de 32 bits, de 64 hilos Aplicación de la versión 8, diseñada para la simulación de arquitectura basada en FPGA. RAMP El oro está escrito en ~36.000 líneas de SystemVerilog, y licenciado bajo las licencias BSD.
Superordenadores
Para las cargas HPC, Fujitsu crea procesadores SPARC64 fx especializados con un nuevo conjunto de extensiones de instrucciones, llamado HPC-ACE (Computación de alto rendimiento: extensiones computacionales aritméticas).
La computadora K de Fujitsu ocupó el primer lugar 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. La computadora K era más poderosa que los siguientes cinco sistemas en la lista combinados y tenía la relación rendimiento-potencia más alta de cualquier sistema de supercomputadora. 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. En el lanzamiento de noviembre de 2012 de TOP500, la computadora K ocupó el puesto número 3, utilizando, con mucho, la mayor potencia de los tres primeros. Ocupó el puesto 85 en el lanzamiento correspondiente de Green500. Los procesadores HPC más nuevos, IXfx y XIfx, se incluyeron en las supercomputadoras PRIMEHPC FX10 y FX100 recientes.
Tianhe-2 (TOP500 No.1 a partir de noviembre de 2014) tiene varios nodos con procesadores Galaxy FT-1500 basados en OpenSPARC desarrollados en China. Sin embargo, esos procesadores no contribuyeron a la puntuación de LINPACK.
Contenido relacionado
Suma de verificación
Procesador superescalar
Semitono