stringtranslate.com

SPARC

Un microprocesador Sun UltraSPARC II (1997)

SPARC ( ARChitecture de procesador escalable ) es una arquitectura de conjunto de instrucciones de computadora con conjunto de instrucciones reducido (RISC) desarrollada originalmente por Sun Microsystems . [1] [2] 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 en 1987, [3] [2] SPARC fue uno de los primeros sistemas RISC comerciales de mayor éxito, y su éxito llevó 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 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 formaron parte de la serie de procesadores SuperSPARC lanzada en 1992. SPARC V9, lanzada en 1993, introdujo una arquitectura de 64 bits y se lanzó por primera vez en los procesadores UltraSPARC de Sun en 1995. Posteriormente, se utilizaron procesadores SPARC. 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 fue entregado 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 SPARC (incluida SPARC, de su propiedad) y proporcionar pruebas de conformidad . SPARC International tenía como objetivo hacer crecer la arquitectura SPARC para crear un ecosistema más grande; SPARC ha obtenido licencias para varios fabricantes, incluidos 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 partir de 2024, los últimos procesadores SPARC comerciales de alta gama son el SPARC64 XII de Fujitsu (presentado en septiembre de 2017 para su servidor SPARC M12) y el SPARC M8 de Oracle presentado en septiembre de 2017 para sus servidores de alta gama.

El 1 de septiembre de 2017, después de una ronda de despidos que comenzó en Oracle Labs en noviembre de 2016, Oracle puso fin al diseño 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 suspenderá su producción SPARC (ya ha pasado a producir sus propias CPU basadas en ARM), después de dos versiones "mejoradas" del antiguo servidor SPARC M12 de Fujitsu en 2020-22 (anteriormente planificado para 2021) y nuevamente en 2026-27. fin de venta en 2029, de servidores UNIX y un año después para su mainframe y fin de soporte en 2034 "para promover la modernización de los clientes". [6]

Características

La arquitectura SPARC estuvo fuertemente influenciada por los diseños RISC anteriores, incluidos los RISC I y II de la Universidad de California, Berkeley y el IBM 801 . Estos diseños RISC originales eran minimalistas, incluían la menor cantidad posible de funciones o códigos de operación y tenían como objetivo 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, incluida la falta de instrucciones como multiplicar o dividir. Otra característica de SPARC influenciada por este movimiento inicial de RISC es el intervalo de retardo de rama .

El procesador SPARC suele contener hasta 160 registros de uso general . Según la especificación "Oracle SPARC Architecture 2015", una "implementación puede contener de 72 a 640 registros de 64 bits de uso general". [7] En cualquier momento, sólo 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 sólo siete de ellos se pueden utilizar como registros) y el otros 24 son de la pila de registros. Estos 24 registros forman lo que se llama 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 funciones y devolver valores, y los registros locales se utilizan para retener valores locales en las llamadas a funciones.

Lo "escalable" en SPARC proviene del hecho de que la especificación SPARC permite que las implementaciones escale desde procesadores integrados hasta procesadores de servidor grandes, todos compartiendo el mismo conjunto de instrucciones centrales (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 algún número entre ellas. Otras arquitecturas que incluyen características de archivos de registro similares incluyen Intel i960 , IA-64 y AMD 29000 .

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

En SPARC versión 8, 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. Se puede utilizar un par de registros de doble precisión de números pares e impares como un registro de precisión cuádruple , permitiendo así 8 registros de precisión cuádruple. SPARC Versión 9 agregó 16 registros más de doble precisión (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 2024. [11]

Las instrucciones de suma y resta etiquetadas realizan sumas y restas en valores, verificando que los dos bits inferiores de ambos operandos sean 0 y reportando desbordamiento si no lo son. Esto puede resultar útil en la implementación del tiempo de ejecución de ML , Lisp y lenguajes similares que pueden usar un formato de entero etiquetado.

El endianidad 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 instrucción de la aplicación ( cargar-almacenar ) 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 desde 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 la versión 7 (V7) de SPARC de 32 bits en 1986. La versión 8 (V8) de SPARC, una definición mejorada de la arquitectura SPARC, se lanzó en 1990. Las principales diferencias entre V7 y V8 fueron la suma de multiplicación de enteros y instrucciones de división 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. SPARC V8 sirvió como base para el estándar IEEE 1754-1994, un estándar IEEE para una arquitectura de microprocesador de 32 bits.

La versión 9 de SPARC , 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 Instrumentos Texas . 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 SPARC 1 (JPS1), que describe funciones de procesador que se implementaron de manera idéntica en las CPU de ambas compañías ("Commonality"). Las primeras CPU que cumplieron con JPS1 fueron la UltraSPARC III de Sun y la SPARC64 V de Fujitsu. Las funcionalidades que no están cubiertas por JPS1 están documentadas para cada procesador en "Suplementos de implementación".

A finales de 2003, se lanzó JPS2 para admitir CPU multinúcleo. Las primeras CPU que se ajustaron a JPS2 fueron la UltraSPARC IV de Sun y la SPARC64 VI de Fujitsu.

A principios de 2006, Sun lanzó una especificación de arquitectura extendida, UltraSPARC Architecture 2005 . Esto incluye no solo las partes 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 extensiones CMT que comienzan con la implementación de UltraSPARC T1 :

En 2007, Sun lanzó una especificación actualizada, UltraSPARC Architecture 2007 , que cumplía la implementación 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 VIS 3 y el modo hiperprivilegiado a la especificación de 2007. [12]

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

La arquitectura SPARC ha proporcionado compatibilidad binaria de aplicaciones continua 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 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 y 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 RISC.

Un procesador SPARC incluye una unidad de enteros (IU) que realiza operaciones aritméticas, de carga y de almacenamiento de enteros. [15] : 9  [10] : 15–16  Puede incluir una unidad de punto flotante (FPU) que realiza operaciones de punto flotante [15] : 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. [15] : 9 

Registros

La arquitectura SPARC tiene un esquema de ventanas de registro superpuestas. 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 mejora la tecnología, 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 (que vuelve a la llamada antes). al regresar del procedimiento). Los eventos de trampa ( interrupciones , excepciones o instrucciones TRAP) y las instrucciones RETT (regreso de trampas) también cambian el CWP . Para SPARC V9, el registro CWP disminuye durante una instrucción RESTORE y aumenta durante una instrucción SAVE. Esto es lo opuesto al comportamiento de PSR.CWP en SPARC V8. Este cambio no tiene ningún efecto en las instrucciones sin privilegios.

Los registros SPARC se muestran en la figura anterior.

También hay un registro Y sin ventana, utilizado por las instrucciones de multiplicación por pasos, multiplicación de enteros y división de enteros. [15] : 32 

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

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

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

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

Formatos de instrucción

Todas las instrucciones SPARC ocupan una palabra completa de 32 bits y comienzan en un límite de palabra. Se utilizan cuatro formatos, distinguidos por los dos primeros bits. Todas las instrucciones aritméticas y lógicas tienen 2 operandos de origen y 1 operando de destino. [16] RD es el "registro de destino", donde se deposita el resultado de la operación. La mayoría de las instrucciones SPARC tienen al menos este registro, por lo que se coloca cerca del "frente" 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, ya que tienen dos operandos que representan valores para la dirección y un operando para que el registro lea o escriba. La dirección se crea sumando los dos operandos de dirección para producir una dirección. El segundo operando de dirección puede ser una constante o un registro. Las cargas toman el valor en la dirección y lo colocan en el registro especificado por el tercer operando, mientras que las tiendas toman el valor en el registro especificado por el primer operando y lo colocan en la dirección. Para hacer esto más obvio, el lenguaje ensamblador indica las direcciones de los operandos usando corchetes con un signo más que separa los operandos, en lugar de usar una lista separada por comas. Ejemplos: [16]

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

Debido al uso generalizado de datos que no son de 32 bits, como datos integrales de 16 u 8 bits o bytes de 8 bits en cadenas, existen instrucciones que cargan y almacenan medias palabras de 16 bits y bytes de 8 bits. , así como instrucciones que cargan palabras de 32 bits. Durante una carga, esas instrucciones leerán solo el byte o 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 superior del byte o media palabra ( carga firmada). Durante una tienda, esas instrucciones descartan los bits superiores en el registro y almacenan solo los bits inferiores. También hay instrucciones para cargar valores de doble precisión utilizados para la aritmética de punto flotante , leyendo o escribiendo ocho bytes del registro indicado. y el "siguiente", por lo que si el destino de una carga es L1, se configurarán L1 y L2. La lista completa de instrucciones SPARC de 32 bits es LD, ST, LDUB(byte sin signo), LDSB(byte con signo), LDUH(medio-byte sin signo ). palabra), LDSH(media palabra con signo), LDD(cargar doble), STB(almacenar byte), STH(almacenar media palabra), STD(almacenar doble). [16]

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 Registra y almacena sólo los 32 bits inferiores. La nueva LDSWinstrucción establece los bits superiores del registro en el valor del bit superior 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, LDDFy LDQFcargan un valor de precisión simple, doble o cuádruple desde la memoria a un registro de punto flotante; las instrucciones STF, STDFy STQFalmacenan en la memoria un registro de punto flotante de precisión simple, doble o cuádruple.

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

Operaciones de la ALU

Las instrucciones aritméticas y lógicas también utilizan un formato de tres operandos, siendo los dos primeros los operandos y el último la ubicación para almacenar el resultado. El operando medio puede ser un registro o una constante entera con signo de 13 bits; los otros operandos son registros. Cualquiera de los operandos del registro puede apuntar a G0; apuntar el resultado a G0 descarta los resultados, que pueden usarse para pruebas. Los ejemplos incluyen: [16]

sumar %L1,%L2,%L3 !suma los valores en %L1 y %L2 y pone el resultado en %L3agregar %L1,1,%L1 !incrementar %L1agregar %G0,%G0,%L4 !borrar cualquier valor en %L4

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

subcc %L1,10,%G0 !Compare %L1 con 10 e ignore el resultado, pero establezca las banderas

add y sub también tienen otro modificador, X, que indica si la operación debe establecer el bit de acarreo:

addx %L1,100,%L1 !Agregue 100 al valor en %L1 y realice un seguimiento del acarreo

SPARC V7 no tiene instrucciones de multiplicación o división, pero sí 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 completar más de un ciclo de reloj de acuerdo con la filosofía RISC. SPARC V8 agregó UMULinstrucciones (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 utilizan el registro Y para contener los 32 bits superiores del producto; las instrucciones de división lo utilizan para contener los 32 bits superiores del dividendo. La RDYinstrucción lee el valor del registro Y en un registro de uso general; la WRYinstrucción escribe el valor de un registro de propósito general en el registro Y. [15] : Se agregó 32  SPARC V9 MULX, que multiplica dos valores de 64 bits y produce un resultado de 64 bits, SDIVXque 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 utiliza el registro Y. [10] : 199 

Derivación

Las ramas condicionales prueban 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 una bifurcación normalmente se realizan con dos instrucciones; la primera es una instrucción ALU que establece los códigos de condición, seguida de una instrucción de rama que examina uno de esos indicadores. El SPARC no cuenta con 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 tiene el valor 10 y luego pasar al código que lo maneja, se podría:

subcc %L1,10,%G0 !resta 10 de %L1, estableciendo el indicador cero si %L1 es 10ser WASEQUAL! Si se establece el indicador cero, diríjase a la dirección marcada como WASEQUAL

En una instrucción de bifurcación condicional, el campo icc o fcc especifica la condición que se está probando. El campo de desplazamiento de 22 bits es la dirección, relativa a la PC actual, del objetivo, en palabras, de modo que las ramas condicionales pueden avanzar o retroceder hasta 8 megabytes. El bit ANNUL (A) se utiliza para eliminar algunos intervalos de retardo. Si es 0 en una rama condicional, el intervalo de retardo se ejecuta como de costumbre. Si es 1, el intervalo de retraso solo se ejecuta si se toma la rama. Si no se toma, se omite la instrucción que sigue a la rama condicional.

Hay una amplia variedad de ramas condicionales: BA(ramificación siempre, esencialmente un jmp), BN(ramificación nunca), BE(igual), BNE(no igual), 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(llevar claro), BCS(llevar conjunto), BVC(desbordamiento claro), BVS(desbordamiento conjunto). [15] : 119-120 

La FPU y el 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 rama para probar esos códigos de condición. Agregar una F al principio de la instrucción de bifurcación en la lista anterior realiza la prueba con los códigos de condición de la FPU, [15] : 121–122  mientras que, en SPARC V8, agregar una C prueba los indicadores en el CP que de otro modo no estaría definido. [15] : 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 un byte, 30 bits es todo lo que se necesita para llegar a cualquier dirección en el espacio de direcciones de 4 gigabytes. [16] 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 (salto y enlace) es una instrucción de tres operandos, con dos operandos que representan valores para la dirección de destino y un operando para un registro en el que depositar la dirección de retorno. La dirección se crea sumando los dos operandos de dirección para producir una dirección de 32 bits. El segundo operando de dirección puede ser una constante o un registro.

Grandes constantes

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 instrucción de propósito especial SETHIcopia 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. En el uso general, SETHI va seguido de un o instrucción con solo los 10 bits inferiores del valor establecido. Para facilitar esto, el ensamblador incluye las macros %hi(X)y %lo(X). Por ejemplo: [16]

sethi %hi(0x89ABCDEF),%L1 !Establece los 22 bits superiores de L1o %L1,%lo(0x89ABCDEF),%L1 !establece los 10 bits inferiores de L1 mediante operación OR

Las macros hi y lo se ejecutan en tiempo de compilación, no en tiempo de ejecución, por lo que no afecta el rendimiento pero deja más claro que está configurando L1 en un solo valor, no en dos no relacionados. Para hacerlo aún más fácil, 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á una sola ldcon el valor. [dieciséis]

Instrucciones sintéticas

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

Licenciatarios de arquitectura SPARC

Las siguientes organizaciones han obtenido licencias para la arquitectura SPARC:

Implementaciones

Notas :

  1. ^ ab Hilos por núcleo × número de núcleos
  2. ^ Fujitsu, LSI Logic , Weitek, Texas Instruments, Cypress y Temic produjeron varias implementaciones de SPARC V7 . Un procesador SPARC V7 generalmente constaba de varios chips discretos, que generalmente comprendían una unidad entera (IU), una unidad de punto flotante (FPU), una unidad de administración de memoria (MMU) y una memoria caché. Por el contrario, el Atmel (ahora Microchip Technology) TSC695 es una implementación SPARC V7 de un solo chip.
  3. ^ @ 167MHz
  4. ^ @ 250MHz
  5. ^ a 400MHz
  6. ^ @440MHz
  7. ^ máx. @500MHz
  8. ^ @ 1200 MHz
  9. ^ excluyendo buses de E/S
  10. ^ 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 utilizado SunOS , Solaris , JavaOS u OpenSolaris de Sun, incluidos los derivados 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, [44] pero luego fue cancelada.

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

Implementaciones de código abierto

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

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

Supercomputadoras

Para cargas HPC, Fujitsu construye procesadores FX SPARC64 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 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 del TOP500 en ese momento. La computadora K era más poderosa que los siguientes cinco sistemas de la lista combinados y tenía la relación rendimiento-potencia más alta de cualquier sistema de supercomputadora. [46] 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. [47] En la versión de noviembre de 2012 de TOP500 , la computadora K ocupó el puesto número 3, utilizando con diferencia la mayor potencia de las tres primeras. [48] ​​Ocupó el puesto 85 en la versión correspondiente de Green500 . [49] Los procesadores HPC más nuevos, IXfx y XIfx , se incluyeron en las supercomputadoras PRIMEHPC FX10 y FX100 recientes.

Tianhe-2 ( TOP500 No. 1 en noviembre de 2014 [50] ) 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 . [51] [52]

Ver también

Referencias

  1. ^ abc "Fujitsu llevará ARM al reino de Super". El Museo CPU Shack . 21 de junio de 2016. Archivado desde el original el 30 de junio de 2019 . Consultado el 30 de junio de 2019 .
  2. ^ abcd "Cronología". SPARC Internacional . Archivado desde el original el 24 de abril de 2019 . Consultado el 30 de junio de 2019 .
  3. ^ ab "Fujitsu SPARC". cpu-collection.de . Archivado desde el original el 6 de agosto de 2016 . Consultado el 30 de junio de 2019 .
  4. ^ Vaughan-Nichols, Steven J. (5 de septiembre de 2017). "Puesta de sol: Oracle cierra las últimas líneas de productos Sun". ZDNet . Archivado desde el original el 10 de septiembre de 2017 . Consultado 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 hardware". El registro . Archivado desde el 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. ^ ab "Oracle SPARC Architecture 2015: una arquitectura... múltiples implementaciones innovadoras" (PDF) . Borrador D1.0.0. 12 de enero de 2016. Archivado (PDF) desde el original el 24 de abril de 2016 . Consultado 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 64 bits de uso general. Esto corresponde a una agrupación de los registros en conjuntos MAXPGL + 1 de registros R globales más una pila circular de conjuntos N_REG_WINDOWS 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 y está dentro del rango de 3 a 32 (inclusive).
  8. ^ "Opciones SPARC", Uso de la colección de compiladores GNU (GCC), GNU , archivado desde el original el 9 de enero de 2013 , consultado el 8 de enero de 2013
  9. ^ Optimizaciones SPARC con GCC, OSNews , 23 de febrero de 2004, archivado desde el original el 23 de mayo de 2013 , consultado el 8 de enero de 2013
  10. ^ abcdef Tejedor, DL; Germond, T., eds. (1994). Manual de arquitectura SPARC, 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 cálculo numérico - Sun Studio 10 . Sun Microsystems, Inc. 2004. Archivado desde el original el 25 de enero de 2022 . Consultado el 24 de septiembre de 2011 . Sin embargo, hay cuatro situaciones en las que el hardware no completa con éxito una instrucción de punto flotante: ... La instrucción no es implementada por el hardware (como ... instrucciones de precisión cuádruple en cualquier FPU SPARC).
  12. ^ "Oracle SPARC Architecture 2011" (PDF) , Oracle Corporation , 21 de mayo de 2014, archivado (PDF) desde el original el 24 de septiembre de 2015 , consultado el 25 de noviembre de 2015
  13. ^ Soat, John. "Innovación SPARC M7". Sitio web de Oráculo . Corporación Oráculo . Archivado desde el original el 5 de septiembre de 2015 . Consultado el 13 de octubre de 2015 .
  14. ^ "Software en Silicon Cloud - Oracle". www.oracle.com . Archivado desde el original el 21 de enero de 2019 . Consultado el 21 de enero de 2019 .
  15. ^ abcdefghi Manual de arquitectura SPARC, versión 8. SPARC International, Inc. 1992 . Consultado el 27 de mayo de 2023 .
  16. ^ abcdefghi "Instrucciones fundamentales de SPARC".
  17. ^ "Extensiones SPARC64 ™ IXfx Fujitsu Limited Ver 12, 2 de diciembre de 2013" (PDF) . pag. 103-104 . Consultado el 17 de diciembre de 2023 .
  18. ^ "Floodgap Retrobits presenta Solbourne Solace: un santuario al olvidado SPARC". www.floodgap.com . Archivado desde el original el 1 de diciembre de 2020 . Consultado el 14 de enero de 2020 .
  19. ^ Sager, D.; Hinton, G.; Upton, M.; Chappell, T.; Fletcher, TD; Samaán, S.; Murray, R. (2001). "Un microprocesador CMOS IA32 de 0,18 μm con una unidad de ejecución de números enteros de 4 GHZ". Conferencia internacional de circuitos de estado sólido IEEE 2001. Compendio de artículos técnicos. ISSCC (Nº de catálogo 01CH37177) . San Francisco, California, Estados Unidos: IEEE. págs. 324–325. doi :10.1109/ISSCC.2001.912658. ISBN 978-0-7803-6608-4.
  20. ^ Características y especificaciones clave de FX1 (PDF) , Fujitsu , 19 de febrero de 2008, archivado (PDF) desde el original el 18 de enero de 2012 , consultado el 6 de diciembre de 2011
  21. ^ Tremblay, Marc ; Chaudhry, Shailender (19 de febrero de 2008), "Un procesador CMT SPARC(R) de 65 nm, 16 núcleos, 32 hilos más 32 hilos Scout de tercera generación" (PDF), OpenSPARC , Sun Microsystems , archivado desde el original en enero 16 de diciembre de 2013 , consultado el 6 de diciembre de 2011.
  22. ^ Vance, Ashlee (15 de junio de 2009), "Sun Is Said to Cancel Big Chip Project", The New York Times , archivado desde el original el 4 de noviembre de 2011 , recuperado 23 de mayo de 2010
  23. ^ "Fujitsu muestra SPARC64 VII", heise online , 28 de agosto de 2008, archivado desde el original el 23 de mayo de 2013 , consultado el 6 de diciembre de 2011
  24. ^ Barak, Sylvie (14 de mayo de 2009), "Fujitsu presenta la CPU más rápida del mundo", The Inquirer , archivado desde el original el 17 de mayo de 2009 , recuperado 6 de diciembre 2011{{citation}}: Mantenimiento CS1: URL no apta ( enlace )
  25. ^ "Procesador Sparc T3" (PDF) , Oracle Corporation , archivado (PDF) desde el original el 24 de abril de 2016 , consultado el 6 de diciembre de 2011
  26. ^ Morgan, Timothy Prickett (3 de diciembre de 2010), "Ellison: Sparc T4 vence el próximo año", The Register , archivado desde el original el 7 de marzo de 2012 , recuperado 6 de diciembre 2011
  27. ^ "Arquitectura de servidores SPARC Enterprise serie M" (PDF) , Fujitsu , abril de 2011, archivado (PDF) desde el original el 4 de marzo de 2016 , consultado el 5 de noviembre de 2011
  28. ^ Morgan, Timothy Prickett (22 de agosto de 2011), "Chip Sparc T4 de Oracle", The Register , archivado desde el original el 30 de noviembre de 2011 , recuperado 6 de diciembre 2011
  29. ^ Morgan, Timothy Prickett (21 de noviembre de 2011), "Fujitsu exhibe el súper aturdidor Sparc64 de 16 núcleos", The Register , archivado desde el original el 24 de noviembre de 2011 , recuperado 8 de diciembre de 2011
  30. ^ "Fujitsu lanza la supercomputadora PRIMEHPC FX10", Fujitsu , 7 de noviembre de 2011, archivado desde el original el 18 de enero de 2012 , consultado el 3 de febrero de 2012
  31. ^ "Descarga Ixfx" (PDF) . fujitsu.com. Archivado (PDF) desde el original el 18 de mayo de 2015 . Consultado el 17 de mayo de 2015 .
  32. ^ "Imágenes de SPARC64" (PDF) . fujitsu.com. Archivado (PDF) desde el original el 22 de abril de 2016 . Consultado el 29 de agosto de 2017 .
  33. ^ "Productos Oracle" (PDF) . oracle.com. Archivado (PDF) desde el original el 8 de marzo de 2017 . Consultado el 29 de agosto de 2017 .
  34. ^ "Productos Oracle SPARC" (PDF) . oracle.com. Archivado (PDF) desde el original el 26 de septiembre de 2018 . Consultado el 29 de agosto de 2017 .
  35. ^ "Presentación Fujitsu pdf" (PDF) . fujitsu.com. Archivado (PDF) desde el original el 22 de abril de 2016 . Consultado el 29 de agosto de 2017 .
  36. ^ "Imágenes globales de Fujitsu" (PDF) . fujitsu.com. Archivado desde el original (PDF) el 18 de mayo de 2015 . Consultado el 29 de agosto de 2017 .
  37. ^ "M7: SPARC de próxima generación. Hotchips 26" (PDF) . swisdev.oracle.com. Archivado (PDF) desde el original el 31 de octubre de 2014 . Consultado el 12 de agosto de 2014 .
  38. ^ "Arquitectura de servidor SPARC T7 y SPARC M7 de Oracle" (PDF) . oracle.com. Archivado (PDF) desde el original el 6 de noviembre de 2015 . Consultado el 10 de octubre de 2015 .
  39. ^ Vinaik, Basant; Puri, Rahoul (24 de agosto de 2015). "Hot Chips - 23 al 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) desde el original el 9 de octubre de 2022 . Consultado el 25 de enero de 2022 .
  40. ^ "Planos revelados: Oracle integra Sparc M7 e InfiniBand en chips 'Sonoma' más baratos". theregister.co.uk. Archivado desde el original el 29 de agosto de 2017 . Consultado el 29 de agosto de 2017 .
  41. ^ "Documentos en Fujitsu" (PDF) . fujitsu.com. Archivado (PDF) desde el original el 29 de agosto de 2017 . Consultado el 29 de agosto de 2017 .
  42. ^ "Los nuevos sistemas SPARC de Oracle ofrecen rendimiento, capacidades de seguridad y eficiencia entre 2 y 7 veces mejores que los sistemas basados ​​en Intel". oracle.com. Archivado desde el original el 18 de septiembre de 2017 . Consultado el 18 de septiembre de 2017 .
  43. ^ "Procesador SPARC M8" (PDF) . oracle.com. Archivado (PDF) desde el original el 28 de febrero de 2019 . Consultado el 18 de septiembre de 2017 .
  44. ^ McLaughlin, John (7 de julio de 1993), "Intergraph to Port Windows NT to SPARC", The Florida SunFlash , 55 (11), archivado desde el original el 23 de julio de 2014 , recuperado 6 de diciembre de 2011
  45. ^ Proyecto: Linux para SPARC - oss.oracle.com, 12 de octubre de 2015, archivado desde el original el 8 de diciembre de 2015 , recuperado 4 de diciembre de 2015
  46. ^ "Lista TOP500 (1-100)", TOP500 , junio de 2011, archivado desde el original el 23 de junio de 2011 , consultado el 6 de diciembre de 2011
  47. ^ "La lista Green500", Green500 , junio de 2011, archivado desde el original el 3 de julio de 2011
  48. ^ "Lista Top500 - noviembre de 2012 | Sitios de supercomputadoras TOP500", TOP500 , noviembre de 2012, archivado desde el original el 13 de noviembre de 2012 , recuperado 8 de enero de 2013
  49. ^ "The Green500 List - Noviembre de 2012 | The Green500", Green500 , noviembre de 2012, archivado desde el original el 6 de junio de 2016 , recuperado 8 de enero 2013
  50. ^ "Tianhe-2 (MilkyWay-2)", TOP500 , mayo de 2015, archivado desde el original el 26 de mayo de 2015 , recuperado 27 de mayo de 2015
  51. ^ Keane, Andy, "Tesla Supercomputing" ( mp4 ) , Nvidia , archivado desde el original el 25 de febrero de 2021 , consultado el 6 de diciembre de 2011
  52. ^ Thibodeau, Patrick (4 de noviembre de 2010). "Estados Unidos dice que China está construyendo una supercomputadora 'completamente autóctona'". Mundo de la informática . Archivado desde el original el 11 de octubre de 2012 . Consultado el 28 de agosto de 2017 .

enlaces externos