La arquitectura MIPS es un conjunto de instrucciones para ordenadores que se desarrolló en la Universidad de Stanford en 1981 bajo la dirección de investigadores como John L. Hennessy. El nombre MIPS nació como acrónimo de Microprocessor without Interlocked Pipeline Stages (microprocesador sin etapas de tuberías interconectadas), reflejando la filosofía RISC de simplificar el hardware y delegar en el compilador parte de la solución a conflictos en la tubería. MIPS es, en esencia, una arquitectura RISC y, como tal, se basa en instrucciones de longitud fija, un conjunto reducido y fácil de decodificar, y un modelo de carga/almacenamiento que separa las operaciones de memoria de las operaciones aritméticas. Originalmente diseñada para un bus de 32 bits, la familia evolucionó y desde 1991 existen versiones de 64 bits.

Historia resumida

MIPS surgió a principios de los años 80 en Stanford y pronto se comercializó a través de empresas fundadas por los mismos investigadores. Durante finales de la década de 1980 y la de 1990, muchas compañías adoptaron implementaciones MIPS: Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf y Tandem Computers, entre otras. En esa época se estimaba que cerca de uno de cada tres microprocesadores RISC fabricados era una implementación de MIPS. Más adelante la arquitectura perdió peso en estaciones de trabajo y servidores frente a competidores como SPARC, Power y x86, y se reorientó principalmente hacia el mercado de sistemas embebidos.

Características principales

  • Arquitectura RISC y formato fijo: instrucciones de 32 bits (en la mayoría de las variantes clásicas), con formatos simples R, I y J que facilitan la decodificación y un pipeline rápido.
  • Load/store: solo las instrucciones de carga/almacenamiento acceden a memoria; las operaciones aritméticas usan registros.
  • Conjunto de registros: en MIPS32 hay 32 registros generales de propósito, numerados y con convenciones de uso bien definidas para llamadas y temporales.
  • Registros especiales: HI/LO para resultados de multiplicación/división, contador de programa (PC) y coprocessores (CP0 para control/sistema; CP1 para la FPU).
  • Tubería típica de 5 etapas: IF (fetch), ID (decode), EX (execute), MEM (access), WB (write-back). El diseño original priorizaba la sencillez de la tubería; en versiones clásicas existía la noción de branch delay slot.
  • Soporte de endianness: muchas implementaciones son bi-endian (big o little endian).
  • Modelos de ABI: convenciones como o32 (32 bits), n32 y n64 (variantes para 64 bits) que definen el uso de registros y el paso de parámetros.

Versiones y extensiones

  • MIPS I–V: revisiones históricas que añadieron instrucciones, modos y mejoras en el rendimiento.
  • MIPS III (1991): introdujo el soporte nativo de 64 bits.
  • MIPS32 y MIPS64: familias comerciales y normalizadas para entornos de 32 y 64 bits, pensadas para implementaciones embebidas y de servidor respectivamente.
  • microMIPS / MIPS16e: extensiones orientadas a reducir el tamaño de código para aplicaciones embebidas, con instrucciones comprimidas o de longitud variable.
  • Revisión R6: actualización moderna del ISA que introdujo cambios como la eliminación de algunos conceptos heredados (por ejemplo la gestión de delay slots en implementaciones modernas) y ajustes para optimizar implementaciones actuales.

Arquitectura interna y programación

El conjunto de instrucciones MIPS es sencillo y regular: la mayoría de instrucciones usan un formato de tres operandos (destino, fuente1, fuente2) y la codificación clara ayuda a compiladores a generar código eficiente. La existencia de branch delay slots en las versiones clásicas implica que la instrucción siguiente a una rama se ejecuta antes de que la rama surta efecto, una característica que complica el ensamblador/compilador pero que en su momento aumentaba el rendimiento en tuberías simples. El acceso a coprocesadores permite delegar la FPU y funciones de control en unidades separadas.

Implementaciones y usos

En 2015 y en años posteriores, las implementaciones de MIPS se han concentrado principalmente en sistemas embebidos. Entre sus aplicaciones habituales están:

  • Dispositivos móviles y con sistemas operativos ligeros (por ejemplo algunos dispositivos con Windows CE).
  • Equipos de red: routers, puertas de enlace residenciales y equipos de infraestructura.
  • Electrónica de consumo y consolas: varias generaciones de consolas de videojuego utilizaron núcleos MIPS; ejemplos conocidos incluyen la Sony Playstation, la PlayStation 2 y la PlayStation Portable.
  • Equipos de estaciones de trabajo y servidores históricos, como los de SGI, que durante décadas emplearon implementaciones MIPS en algunos de sus productos.

Ventajas y limitaciones

  • Ventajas: diseño simple y regular, fácil de implementar en hardware, buen rendimiento por vatio en implementaciones embebidas, y un ecosistema amplio de herramientas y compiladores históricos.
  • Limitaciones: pérdida de cuota frente a arquitecturas como ARM en móviles y embebidos, y la necesidad de evolucionar el ISA (por ejemplo para eliminar estructuras heredadas como delay slots) para mantener competitividad frente a ISAs modernos.

Estado actual y legado

MIPS dejó una huella importante en la historia de los microprocesadores RISC: sus principios de diseño influenciaron el desarrollo de otras arquitecturas y la investigación en compiladores y microarquitectura. Aunque su presencia en escritorio y servidores se redujo, su uso en dispositivos embebidos y en aplicaciones específicas ha continuado durante años, y hay implementaciones comerciales y abiertas que mantienen activa la familia ISA.

En resumen, MIPS es una arquitectura RISC con un diseño limpio y didáctico que fue muy influyente en las décadas de 1980 y 1990 y que, tras un período de transición, se especializó en aplicaciones embebidas y de red, manteniendo un importante legado técnico en la comunidad informática.

Nota: este artículo ofrece una visión general. Para detalles técnicos (codificación de instrucciones, reglas ABI, diferencias exactas entre revisiones), consulte la documentación oficial de las especificaciones MIPS correspondientes a la versión que le interese.