SuperH (o SH ) es una arquitectura de conjunto de instrucciones (ISA) de computación con conjunto de instrucciones reducido (RISC) de 32 bits desarrollada por Hitachi y actualmente producida por Renesas . Se implementa mediante microcontroladores y microprocesadores para sistemas integrados .
En el momento de su introducción, SuperH se destacaba por tener instrucciones de 16 bits de longitud fija a pesar de su arquitectura de 32 bits. El uso de instrucciones más pequeñas tuvo consecuencias: el archivo de registros era más pequeño y las instrucciones generalmente tenían un formato de dos operandos. Sin embargo, para el mercado al que estaba destinado SuperH, este era un pequeño precio a pagar por la mejora en la eficiencia de la memoria y la caché del procesador .
Las versiones posteriores del diseño, a partir del SH-5, incluían instrucciones de 16 y 32 bits, y las versiones de 16 bits se asignaban a la versión de 32 bits dentro de la CPU. Esto permitía que el código de la máquina siguiera utilizando las instrucciones más cortas para ahorrar memoria, sin exigir la cantidad de lógica de decodificación de instrucciones necesaria si se tratara de instrucciones completamente independientes. Este concepto se conoce ahora como conjunto de instrucciones comprimido y también lo utilizan otras empresas, siendo el ejemplo más notable ARM el conjunto de instrucciones Thumb .
En 2015, muchas de las patentes originales de la arquitectura SuperH expiraron y la CPU SH-2 se reimplementó como hardware de código abierto bajo el nombre J2.
La familia de núcleos de procesador SuperH fue desarrollada por primera vez por Hitachi a principios de la década de 1990. El concepto de diseño era un único conjunto de instrucciones (ISA) que sería compatible con una serie de núcleos de CPU .
En el pasado, este tipo de problema de diseño se habría solucionado utilizando microcódigo , con los modelos de gama baja de la serie ejecutando instrucciones no implementadas como una serie de instrucciones más básicas. Por ejemplo, una "multiplicación larga" (multiplicar dos registros de 32 bits para producir un producto de 64 bits) podría implementarse en hardware en los modelos de gama alta, pero en cambio se ejecutaría como una serie de adiciones en los modelos de gama baja.
Una de las conclusiones clave durante el desarrollo del concepto RISC fue que el microcódigo tenía un tiempo de decodificación finito y, a medida que los procesadores se volvían más rápidos, esto representaba una sobrecarga de rendimiento inaceptable. Para solucionar este problema, Hitachi desarrolló una única ISA para toda la línea, con instrucciones no compatibles que causaban trampas en aquellas implementaciones que no incluían soporte de hardware. Por ejemplo, los modelos iniciales de la línea, el SH-1 y el SH-2, solo se diferenciaban en su compatibilidad con la multiplicación de 64 bits; el SH-2 admitía MUL
, DMULS
y DMULU
, mientras que el SH-1 causaba una trampa si se encontraban estas. [3]
El modelo básico era el SH-1, que admitía un total de 56 instrucciones. El SH-2 añadió multiplicación de 64 bits y algunos comandos adicionales para ramificaciones y otras tareas, lo que elevó el total a 62 instrucciones admitidas. [3] El SH-1 y el SH-2 se utilizaron en Sega Saturn , Sega 32X y Capcom CPS-3 . [4]
La ISA utiliza instrucciones de 16 bits para lograr una mejor densidad de código que las instrucciones de 32 bits, lo que era importante en ese momento debido al alto costo de la memoria principal y el costo de implementación de la caché. A partir de 2023, la densidad de código sigue siendo importante para pequeños sistemas integrados y procesadores multinúcleo masivos. Las desventajas de este enfoque eran que había menos bits disponibles para codificar un número de registro o un valor constante. En la ISA SuperH original, solo había 16 registros generales, lo que requería cuatro bits para la fuente y otros cuatro para el destino; sin embargo, algunas instrucciones tienen un R0, R15 o un registro del sistema implícito como operando adicional. El código de operación de la instrucción tiene cuatro, ocho, doce o dieciséis bits de longitud, y los campos de cuatro bits restantes se utilizan para registros u operandos inmediatos de varias maneras: hay doce clases de instrucciones, para un total de 142 instrucciones en SH-2. [5]
Se introducen ramificaciones retrasadas tanto para SH-1 como para SH-2. Las instrucciones de ramificación incondicional tienen una ranura de retraso . [6]
Unos años más tarde, se añadió el núcleo SH-3 a la familia; las nuevas características incluían otro concepto de interrupción , una unidad de gestión de memoria (MMU) y un concepto de caché modificado. Estas características requerían un conjunto de instrucciones ampliado, añadiendo seis nuevas instrucciones para un total de 68. [3] El SH-3 era bi-endian , y funcionaba en orden de bytes big-endian o little-endian.
El núcleo SH-3 también agregó una extensión DSP , llamada entonces SH-3-DSP. Con rutas de datos extendidas para un procesamiento DSP eficiente, acumuladores especiales y un motor DSP de tipo MAC dedicado , este núcleo unificó el mundo de los procesadores DSP y RISC. También se utilizó un derivado del DSP con el núcleo SH-2 original.
Entre 1994 y 1996, se enviaron 35,1 millones de dispositivos SuperH a todo el mundo. [7]
En 1997, Hitachi y STMicroelectronics (STM) comenzaron a colaborar en el diseño del SH-4 para Dreamcast . El SH-4 incluía ejecución de instrucciones superescalares (bidireccionales) y una unidad de punto flotante vectorial (particularmente adecuada para gráficos 3D ). Los chips estándar basados en el SH-4 se introdujeron alrededor de 1998. [8]
A principios de 2001, Hitachi y STM formaron la empresa de propiedad intelectual SuperH, Inc., que iba a conceder licencias del núcleo SH-4 a otras empresas y estaba desarrollando la arquitectura SH-5, el primer paso de SuperH en el área de los 64 bits. Los SH-1 a 3 anteriores siguieron siendo propiedad de Hitachi. [8] [9]
En 2003, Hitachi y Mitsubishi Electric formaron una empresa conjunta llamada Renesas Technology , en la que Hitachi controlaba el 55 % de la misma. En 2004, Renesas Technology compró la participación de STMicroelectronics en SuperH Inc. y con ella la licencia de los núcleos SH. [10] Renesas Technology se convirtió posteriormente en Renesas Electronics, tras su fusión con NEC Electronics .
El diseño del SH-5 admitía dos modos de funcionamiento: el modo SHcompact, que es equivalente a las instrucciones de modo de usuario del conjunto de instrucciones SH-4; y el modo SHmedia, que es muy diferente en el sentido de que utiliza instrucciones de 32 bits con sesenta y cuatro registros enteros de 64 bits e instrucciones SIMD . En el modo SHmedia, el destino de una bifurcación (salto) se carga en un registro de bifurcación por separado de la instrucción de bifurcación real. Esto permite al procesador obtener instrucciones para una bifurcación sin tener que espiar el flujo de instrucciones. La combinación de una codificación de instrucciones compacta de 16 bits con una codificación de instrucciones de 32 bits más potente no es exclusiva del SH-5; los procesadores ARM tienen un modo Thumb de 16 bits (ARM obtuvo la licencia de varias patentes de SuperH para Thumb [11] ) y los procesadores MIPS tienen un modo MIPS-16. Sin embargo, el SH-5 se diferencia porque su modo de compatibilidad con versiones anteriores es la codificación de 16 bits en lugar de la codificación de 32 bits.
El último paso evolutivo ocurrió alrededor de 2003, cuando los núcleos desde SH-2 hasta SH-4 se unificaron en un núcleo superescalar SH-X que formó una especie de superconjunto de conjuntos de instrucciones de las arquitecturas anteriores y agregó soporte para multiprocesamiento simétrico .
Desde 2010, los núcleos, la arquitectura y los productos de CPU SuperH pertenecen a Renesas Electronics y la arquitectura se ha consolidado en torno a las plataformas SH-2, SH-2A, SH-3, SH-4 y SH-4A. Los productos de sistema en chip basados en microprocesadores SH-3, SH-4 y SH-4A fueron reemplazados posteriormente por generaciones más nuevas basadas en núcleos de CPU con licencia de Arm Ltd. , y muchos de los modelos existentes todavía se comercializan y venden hasta marzo de 2025 a través del Programa de longevidad de productos de Renesas. [12]
A partir de 2021, los microcontroladores SH72xx basados en el SH-2A continúan comercializándose por Renesas con disponibilidad garantizada hasta febrero de 2029, junto con productos más nuevos basados en varias otras arquitecturas, incluidas Arm , RX y RH850 .
La última de las patentes SH-2 expiró en 2014. En LinuxCon Japan 2015, los desarrolladores de j-core presentaron una reimplementación en sala limpia del ISA SH-2 con extensiones (conocido como el "núcleo J2" debido a las marcas registradas vigentes ). [11] [13] Posteriormente, se presentó un tutorial de diseño en ELC 2016. [14]
El código VHDL con licencia BSD de código abierto para el núcleo J2 se ha probado en FPGAs Xilinx y en ASIC fabricados en el proceso de 180 nm de TSMC , y es capaz de arrancar μClinux . [11] J2 es compatible con ISA hacia atrás con SH-2, implementado como una tubería de 5 etapas con interfaces de memoria de Instrucciones y Datos separadas, y un Decodificador de Instrucciones generado por máquina que admite la ISA densamente empaquetada y compleja (en relación con otras máquinas RISC). Es fácil agregar instrucciones adicionales. J2 implementa instrucciones para cambio dinámico (usando los patrones de instrucciones SH-3 y posteriores), operaciones atómicas extendidas (usadas para primitivas de subprocesamiento) y bloqueo/interfaces para soporte de multiprocesador simétrico. Planes para implementar los conjuntos de instrucciones SH-2A (como "J2+") y SH-4 (como "J4") ya que las patentes relevantes expiran en 2016-2017. [11] [ necesita actualización ]
Se han citado varias características de SuperH como motivaciones para diseñar nuevos núcleos basados en esta arquitectura: [11]
La familia de núcleos de CPU SuperH incluye:
El SH-2 es una arquitectura RISC de 32 bits con una longitud de instrucción fija de 16 bits para una alta densidad de código y cuenta con un bloque de multiplicación-acumulación de hardware (MAC) para algoritmos DSP y tiene una cadena de bloques de cinco etapas.
El SH-2 tiene un caché en todos los dispositivos sin ROM .
Proporciona 16 registros de propósito general, un registro de base vectorial, un registro de base global y un registro de procedimiento.
En la actualidad, la familia SH-2 abarca desde dispositivos con memoria flash integrada de 32 KB hasta dispositivos sin ROM. Se utiliza en una variedad de dispositivos diferentes con distintos periféricos, como CAN, Ethernet, unidad de temporizador de control de motor, convertidor analógico-digital rápido y otros.
El SH-2A es una actualización del núcleo SH-2 que agregó algunas instrucciones de 32 bits. Se anunció a principios de 2006.
Las nuevas características del núcleo SH-2A incluyen:
La familia SH-2A abarca actualmente un amplio campo de memoria, desde 16 KB hasta 1600 MHz, e incluye muchas variantes sin ROM. Los dispositivos cuentan con periféricos estándar como CAN , Ethernet , USB y más, así como periféricos más específicos para aplicaciones, como temporizadores de control de motores , controladores TFT y periféricos dedicados a aplicaciones de sistemas de propulsión de automóviles.
La SH-4 es una CPU RISC y fue desarrollada para uso principal en aplicaciones multimedia, como los sistemas de juegos Dreamcast y NAOMI de Sega . Incluye una unidad de punto flotante mucho más potente [nota] y funciones integradas adicionales, junto con el procesamiento de números enteros estándar de 32 bits y un tamaño de instrucción de 16 bits.
Las características del SH-4 incluyen:
^ No hay FPU en el SH-4 personalizado hecho para Casio, el SH7305.
El SH-5 es una CPU RISC de 64 bits. [17]
Casi nunca se lanzó ningún hardware SH-5 no simulado [18] y, a diferencia del SH-4 aún activo, el soporte para SH-5 se eliminó de GCC [19] y Linux.
Hitachi creó la familia de procesadores SH y desarrolló sus primeras cuatro iteraciones principales, pero ha trabajado con ST desde 1997, cuando las compañías acordaron compartir una hoja de ruta común de microprocesadores de alta gama. Desarrollaron conjuntamente el núcleo de procesador RISC SH4 de 32 bits y comenzaron el desarrollo de la arquitectura SH5, que ahora completará SuperH. El producto inicial de SuperH será el núcleo SH4. Las versiones anteriores de SH no serán parte del acuerdo de escisión.