Back to Blog
Opinion

La hegemonía de PiStorm: por qué el JIT bare-metal en ARM arrasó con el silicio boutique de Amiga

By Maia •
La hegemonía de PiStorm: por qué el JIT bare-metal en ARM arrasó con el silicio boutique de Amiga

Durante tres décadas, la comunidad del Commodore Amiga permaneció atrapada en una economía de hardware insostenible. Los entusiastas que buscaban rendimiento de nivel estación de trabajo para multitarea en Workbench, renderizado 3D en LightWave o producciones avanzadas de la demoscene en AGA se topaban con una barrera física implacable: la escasez absoluta del último procesador CISC de 32 bits de Motorola, el MC68060. En los mercados de ocasión, los chips 68060 de revisión tardía cotizan habitualmente entre 600 y 1.200 dólares, mientras que tarjetas aceleradoras legendarias como la Phase 5 Cyberstorm MKIII o la Blizzard 1260 alcanzan cifras desorbitadas por encima de los 2.500 dólares.

Ese mercado secundario especulativo colapsó con la llegada de un proyecto de hardware de código abierto. Concebido por Claude Schwarz y potenciado por el ingeniero de software Michal Schulz, la combinación de la interfaz de hardware del PiStorm GitHub Repository y el traductor binario dinámico bare-metal del Emu68 Project Repository desmanteló el cartel de los aceleradores clásicos. Al emparejar un dispositivo lógico programable complejo (CPLD) económico con un ordenador de placa reducida Raspberry Pi estándar, PiStorm entrega más de 800 MIPS de potencia de cálculo, gigabytes de Fast RAM sin estados de espera, gráficos RTG digitales a 1080p y almacenamiento virtual por menos de setenta dólares.

Como era previsible, este salto técnico desató un intenso debate en los foros de informática retro. Los sectores más puristas sostienen que integrar un procesador ARM dentro de un Amiga desvirtúa el hardware histórico, reduciendo la máquina a una simple carcasa con teclado. Ese argumento ignora por completo la arquitectura de ingeniería concebida por Jay Miner. PiStorm rinde tributo al verdadero corazón operativo del Amiga al preservar intactos sus coprocesadores a medida, al tiempo que elimina los cuellos de botella artificiales de un silicio de Motorola extinto.

+-------------------------------------------------------------------------+
|                Arquitectura del Bus de Sistema Amiga 500 / 2000         |
|                                                                         |
|  [ Zócalo original de CPU 68000 (DIP-64) ]                              |
|               |                                                         |
|               v                                                         |
|  +-------------------------------------------------------------------+  |
|  |                 Placa Interpositora Hardware PiStorm              |  |
|  |  * Desplazador de nivel bidireccional CPLD Altera MAX II / Xilinx |  |
|  |  * Bus de sistema TTL a 5V <---> Pines GPIO LVCMOS a 3.3V         |  |
|  +-------------------------------------------------------------------+  |
|               |                                                         |
|               v (Interfaz paralela directa mediante GPIO)               |
|  +-------------------------------------------------------------------+  |
|  |               Raspberry Pi 3A+ / 4 / Compute Module 4             |  |
|  |  * ARM Cortex-A72 @ 1.5 GHz / Cortex-A53 @ 1.4 GHz                |  |
|  |  * Motor JIT Bare-Metal Emu68 (Sin SO, silicio AArch64 directo)   |  |
|  |  * Núcleo emulado 68040/68060 (Más de 800 MIPS de cálculo)        |  |
|  |  * Reserva de Fast RAM virtual (Hasta 2 GB)                       |  |
|  |  * Salida gráfica RTG virtual Picasso96 (Micro-HDMI 1080p)        |  |
|  |  * Dispositivo scsi.device virtual mapeado a tarjetas MicroSD     |  |
|  +-------------------------------------------------------------------+  |
|               |                                                         |
|               v (Ciclos de bus asíncronos a 7.09 / 7.16 MHz: /AS, /DTACK)|
|  =====================================================================  |
|                         Bus de Placa Base Amiga                         |
|      |                        |                          |              |
|      v                        v                          v              |
|  +-----------+          +-----------+              +-----------+        |
|  |   Agnus   |          |   Denise  |              |   Paula   |        |
|  | Motor DMA |          | Salida de |              | Audio 4-Ch|        |
|  | & Blitter |          |Vídeo Planar|             |Disquetera |        |
|  +-----------+          +-----------+              +-----------+        |
|      |                        |                          |              |
|      +------------------------+--------------------------+              |
|                               |                                         |
|                               v                                         |
|                     [ 512KB - 2MB Chip RAM ]                            |
+-------------------------------------------------------------------------+

La filosofía de Lorraine: el verdadero legado de Jay Miner

Para comprender por qué sustituir el procesador central no invalida la experiencia del Amiga, resulta imprescindible analizar la filosofía de diseño original de Lorraine, concebida en 1982 por Jay Miner y su equipo de ingeniería.

Tal y como documentan los registros técnicos en Original Chip Set Engineering Specifications, el Amiga nunca se construyó alrededor de la fuerza bruta del Motorola 68000. En 1985, los ordenadores personales coetáneos como el IBM PC o el Apple Macintosh trataban la CPU como un monarca absoluto, obligando al procesador principal a ejecutar cálculos matemáticos, componer buffers de vídeo y generar pulsos acústicos rudimentarios de forma estrictamente secuencial.

El Amiga erradicó ese cuello de botella mediante la invención del multiprocesamiento asimétrico en hardware de consumo. Jay Miner diseñó un triunvirato interconectado de circuitos integrados específicos (ASICs)—Agnus, Denise y Paula—que gobernaban la memoria del sistema y gestionaban el procesamiento multimedia de forma autónoma: * Agnus albergaba el motor de arbitraje de acceso directo a memoria (DMA), el Blitter por hardware para transferencias de bloques de memoria a alta velocidad y el coprocesador Copper, un procesador gráfico autónomo sincronizado directamente con el haz de electrones de la pantalla TRC. * Denise generaba los gráficos bitmap planares, administraba el desplazamiento por capas (parallax dual-playfield), controlaba ocho sprites independientes por hardware y gestionaba paletas de hasta 4.096 tonos simultáneos mediante el modo Hold-And-Modify (HAM). * Paula controlaba cuatro canales independientes de audio PCM de 8 bits gestionados por DMA, con modulación de frecuencia y paneo estéreo por hardware, prescindiendo por completo de la CPU para la reproducción de sonido.

Los análisis técnicos detallados en RetroCompute Commodore Amiga Architectural Overview demuestran que el 68000 operaba en el extremo de este bus como un gestor de tráfico. En un Amiga 500 operando a 7.09 MHz (PAL) o 7.16 MHz (NTSC), el bus de sistema de 16 bits alterna el acceso a la memoria Chip RAM en ciclos de reloj específicos. El conjunto de chips a medida reclama el acceso en los ciclos impares para volcar planos de vídeo, muestras de audio y datos del blitter. El procesador principal solo recibe acceso en los ciclos pares, viéndose forzado a esperar siempre que los modos gráficos de gran ancho de banda saturan el bus DMA.

La verdadera identidad del Amiga reside en los registros de silicio de Agnus, Denise y Paula. El 68000 constituyó una elección de catálogo económica adoptada por Commodore para ejecutar el microkernel Exec y procesar la entrada de usuario.

+-------------------------------------------------------------------------+
|                  Entrelazado de Ciclos DMA en Chip RAM                  |
|                                                                         |
|  Ciclo de Reloj: 1     2     3     4     5     6     7     8            |
|  Ranura de Bus: [Impar][Par] [Impar][Par] [Impar][Par] [Impar][Par]     |
|                                                                         |
|  Chips a medida:[DMA]       [DMA]       [DMA]       [DMA]               |
|  (Audio/Vídeo)  |           |           |           |                   |
|                 v           v           v           v                   |
|  Asignado a: Audio, Planos de bits, Sprites, Lista de comandos Copper   |
|                                                                         |
|  Acceso de CPU:       [CPU]       [CPU]       [CPU]       [CPU]         |
|                       |           |           |           |             |
|                       v           v           v           v             |
|  Asignado a: Lectura de instrucciones, multitarea del SO, lógica        |
|                                                                         |
|  Saturación DMA alta: Los chips propietarios roban ciclos pares -> CPU  |
|  entra en estados de espera (wait states)                               |
+-------------------------------------------------------------------------+

El agotamiento del silicio en el Motorola 68060

La fijación con los aceleradores originales de Motorola sumió a la afición por la retroinformática en un callejón sin salida. Tras la quiebra de Commodore en 1994, los usuarios avanzados de Amiga dependieron de empresas alemanas como Phase 5 e Individual Computers para exprimir velocidades profesionales de los chips Motorola 68040 y 68060.

De acuerdo con la documentación en Motorola 68060 Architectural History, el 68060 representó un procesador superescalar dotado de una canalización de ejecución entera dual, caché de bifurcación integrada y unidad de coma flotante en el propio die. Fabricado en procesos litográficos que disminuyeron de 0.6 µm a 0.42 µm, la máscara definitiva Revisión 6 (01G65V y 71E41J) operaba a 50 MHz manteniendo una baja temperatura y toleraba frecuencias superiores a 75 MHz mediante overclocking.

Motorola cesó la producción de la familia 68000 hace décadas. Las existencias mundiales de silicio operativo Revisión 6 están prácticamente agotadas. En consecuencia, el mercado secundario degeneró en un entorno marcado por la especulación y las falsificaciones: 1. Silicio falsificado: Comerciantes fraudulentos adquieren versiones recortadas 68LC060 (carentes de FPU y MMU) o chips 68040 de primera revisión, lijan el grabado láser superficial y serigrafían marcas falsas de Motorola Revisión 6 para engañar a los compradores. 2. Degradación térmica y física: Las tarjetas Phase 5 Cyberstorm y Blizzard originales sufren corrosión de pistas, microfracturas en las soldaduras de encapsulados de montaje superficial (SMT) y fallos irreversibles en chips CPLD propietarios de MACH o Xilinx cuyas ecuaciones lógicas internas nunca fueron liberadas al público. 3. Brecha económica insostenible: Desembolsar 2.000 dólares por una tarjeta aceleradora de hace tres décadas que exige corrientes elevadas a fuentes de alimentación fatigadas para entregar entre 35 y 45 MIPS resulta inviable para la preservación funcional del sistema.

Esta escasez artificial relegó al Amiga a la categoría de pieza de museo, reservada a coleccionistas dispuestos a arriesgar presupuestos desmedidos en silicio susceptible de fallar en cualquier momento.

+-------------------------------------------------------------------------+
|                  Ciclo de Colapso del Mercado del 68060                 |
|                                                                         |
|  Motorola detiene la fabricación -> El stock global de piezas se agota  |
|         |                                                               |
|         v                                                               |
|  La demanda se dispara -> Los chips 68060 Rev 6 superan los 1.000 USD   |
|         |                                                               |
|         v                                                               |
|  Proliferan falsificaciones -> Chips LC040 lijados y remarcados         |
|         |                                                               |
|         v                                                               |
|  Fugas de condensadores y grietas SMT -> Mueren tarjetas legendarias    |
|         |                                                               |
|         v                                                               |
|  Bloqueo de plataforma: El software avanzado queda fuera de alcance     |
+-------------------------------------------------------------------------+

Anatomía técnica de PiStorm y el motor Emu68

PiStorm superó este colapso mediante un diseño coordinado entre hardware y software. Como se detalla en Amiga Wiki PiStorm Hardware Guide y en PiStorm Official Documentation, su arquitectura descarta las capas de virtualización pesadas sobre sistemas operativos estándar.

El interpositor físico CPLD

La placa de PiStorm incorpora un CPLD Altera MAX II (EPM240T100C5N) o Xilinx XC9572XL que se inserta de forma directa en el zócalo DIP de 64 patillas liberado por el procesador 68000 en placas base de Amiga 500, 1000 o 2000 (o en la ranura de expansión del Amiga 1200 en su variante PiStorm32-Lite).

El CPLD opera como un puente de conmutación en tiempo real entre dos entornos eléctricos dispares: * Conversión de niveles de tensión: El bus clásico del Amiga opera bajo niveles lógicos TTL de 5.0V. Los terminales GPIO de la Raspberry Pi funcionan a 3.3V LVCMOS y se destruyen ante picos de 5V. El CPLD efectúa una traslación de niveles bidireccional ultrarrápida. * Sincronización del protocolo de bus: El CPLD monitoriza y genera los ciclos de bus auténticos del 68000. Analiza en tiempo real las líneas de dirección (A1–A23), las líneas de datos (D0–D15), la señal de activación de dirección (/AS), las señales de selección de byte (/UDS, /LDS), la línea de lectura/escritura (R/W) y los estados de espera controlados por la confirmación de transferencia (/DTACK).

+-------------------------------------------------------------------------+
|                    Frontera de Señales en PiStorm                       |
|                                                                         |
|   Bus Amiga TTL a 5.0V (DIP-64)             Raspberry Pi LVCMOS a 3.3V  |
|   -----------------------------             --------------------------  |
|   A[23:1]     Bus de Direcciones<--- [ CPLD ] <--- Bus paralelo GPIO    |
|   D[15:0]     Bus de Datos     <--> [Nivel  ] <--> GPIO Bidireccional   |
|   /AS, /UDS   Estrobos de datos<--- [Lógico ] <--- Control tiempo GPIO  |
|   /DTACK      Confirmación bus ---> [Máquina] ---> Detección handshake  |
|   /IPL[2:0]   Líneas de interr.---> [Estados]--> Enrutamiento IRQ GPIO  |
+-------------------------------------------------------------------------+

Emu68: Traducción dinámica en metal desnudo

El elemento que distanció a PiStorm de intentos anteriores fue el desarrollo del entorno de ejecución Emu68 por parte de Michal Schulz.

Las primeras versiones experimentales de PiStorm funcionaban sobre distribuciones estándar de Linux ejecutando el emulador Musashi. Esta aproximación demostró ser inviable. El planificador del kernel de Linux, los servicios en segundo plano, la gestión de memoria virtual y la expulsión de líneas de caché generaban microtirones, irregularidades de cuadros y una latencia inaceptable en el bus físico.

Schulz eliminó el sistema operativo. Tal como se expone en Emu68 Official Releases, Emu68 es un hipervisor bare-metal que arranca en menos de dos segundos directamente sobre el silicio del procesador ARM Cortex. Toma posesión absoluta de los núcleos de cálculo de la arquitectura AArch64: 1. Compilación binaria dinámica (JIT): Emu68 lee las secuencias de instrucciones del 68000, 68020 y 68040, traduciéndolas al vuelo en bloques optimizados de código máquina nativo ARM64 almacenados en una caché de ejecución dedicada. 2. Aislamiento de frecuencias asíncronas: Cuando el código traducido procesa cálculos matemáticos o manipula memoria en Fast RAM, las instrucciones corren a la frecuencia íntegra de 1.4 GHz a 1.8 GHz del núcleo ARM sin estados de espera. 3. Sincronización determinista de bus: Cuando una instrucción requiere acceder a la memoria Chip RAM o lee un registro específico de hardware ubicado entre 0x00DFF000 y 0x00DFFFFF, el compilador JIT recurre a rutinas de bus estrictas. El núcleo ARM detiene su avance interno, transfiere las señales al CPLD, conmuta la línea /AS y aguarda hasta que los circuitos Agnus o Paula de la placa base confirman la operación con /DTACK.

+-------------------------------------------------------------------------+
|                      Gestión de Memoria y Bus en Emu68                  |
|                                                                         |
|  Secuencia de instrucción 68k entrante:                                 |
|  `MOVE.L D0, (A0)`                                                      |
|                                                                         |
|  Evaluación de la dirección destino:                                    |
|                                                                         |
|  Caso 1: Dirección en rango de Fast RAM (0x08000000 - 0x7FFFFFFF)       |
|  -> Ejecución en cachés L1/L2 y memoria LPDDR4 del módulo ARM           |
|  -> Sin estados de espera / Frecuencia de ejecución interna a 1.5 GHz   |
|  -> Rendimiento: ~850-1000 MIPS                                         |
|                                                                         |
|  Caso 2: Dirección en rango de chips propietarios (0x00DFF000-0x00DFFFFF)|
|  -> Interceptada por el controlador de excepciones de Emu68             |
|  -> Señales enviadas a través del CPLD a la placa física del Amiga      |
|  -> El hardware activa /AS y espera la señal /DTACK de Agnus/Paula      |
|  -> Comportamiento 100% fidedigno en ciclos de silicio original         |
+-------------------------------------------------------------------------+

Rendimiento comparativo y superación del hardware tradicional

La divergencia en rendimiento entre el silicio histórico de Motorola y la arquitectura PiStorm es categórica. Los registros de cálculo obtenidos mediante suites como SysInfo y AIBB reflejan la obsolescencia técnica de los aceleradores tradicionales.

+-------------------------------------------------------------------------+
|                  Rendimiento de Cálculo en Amiga (SysInfo)              |
|                                                                         |
|  Arquitectura de Sistema         Dhrystones/seg    MIPS     Coste (USD) |
|  -----------------------         --------------    ----     ----------- |
|  Amiga 500 de serie (68000 @ 7M)      1.240        0.55     Base        |
|  Amiga 1200 de serie (68EC020 @14M)   2.860        1.32     Base        |
|  Blizzard 1230-IV (68030 @ 50 MHz)   18.400        9.60     450 - 650 $ |
|  Phase 5 Blizzard 1260 (060 @ 50M)   78.500       38.20   1.800-2.200 $ |
|  Cyberstorm MKIII (060 @ 66 MHz)    102.000       49.50   2.200-2.800 $ |
|  PiStorm A500 + RPi 3A+ (Emu68 JIT)1.720.000      845.00     ~65 $ total |
|  PiStorm32 + CM4 (Emu68 JIT @ 2GHz)2.150.000    1.050.00    ~110 $ total |
+-------------------------------------------------------------------------+

Un Amiga 500 equipado con una Raspberry Pi de 35 dólares rinde más de veinte veces la velocidad de cálculo de una Cyberstorm 060 valorada en 2.500 dólares. Tareas que históricamente colapsaban la plataforma—reproducción de audio MP3 por software, visualización de imágenes JPEG en alta resolución, descompresión de ficheros LHA pesados o compilación de proyectos en C—se completan de manera instantánea.

Las ventajas trascienden la capacidad bruta de la CPU: * Gráficos RTG integrados (Retargetable Graphics): Emu68 incorpora un controlador nativo para Picasso96. Reserva un búfer de pantalla en la memoria de alta velocidad de la Raspberry Pi y genera una señal progresiva limpia a 1080p y 720p directamente a través de su conexión micro-HDMI. El usuario obtiene escritorios Workbench fluidos en color real de 24 bits, preservando al mismo tiempo la salida RGB analógica de 15 kHz para videojuegos clásicos. * Almacenamiento virtual de alto rendimiento: La arquitectura de Emu68 mapea las particiones de la tarjeta SD directamente a un controlador virtual scsi.device. El caudal de lectura salta del techo mecánico tradicional de 1.5 MB/s en controladoras SCSI clásicas a más de 25 MB/s, eliminando la necesidad de costosas controladoras de disco de época. * Ampliación masiva de Fast RAM: PiStorm asigna hasta 2 gigabytes de Fast RAM de 32 bits sin estados de espera, liberando los 2 megabytes de Chip RAM para el almacenamiento exclusivo de gráficos y muestras sonoras.

+-------------------------------------------------------------------------+
|                  Enrutamiento de Señal de Vídeo y Datos                 |
|                                                                         |
|  [ Puerto de vídeo analógico de 23 pines de Amiga ]                     |
|  -> Señal RGB nativa a 15 kHz (Salida de Denise / Lisa AGA)             |
|  -> Visualización 100% inalterada en monitores CRT, OSSC o RetroTINK    |
|                                                                         |
|  [ Puerto Micro-HDMI de la Raspberry Pi ]                               |
|  -> Búfer gráfico virtual gestionado por Picasso96                      |
|  -> Salida nítida a 1080p 60Hz en color real de 24 bits para Workbench  |
|                                                                         |
|  [ Tarjeta MicroSD de alta velocidad ]                                  |
|  -> Virtualización directa de unidades scsi.device en Emu68             |
|  -> Más de 25 MB/s de caudal sostenido (frente a 1.2 MB/s en SCSI-1)    |
+-------------------------------------------------------------------------+

El falso dilema de la autenticidad en silicio

Las reticencias frente a PiStorm evidencian un purismo desprovisto de fundamento técnico. Calificar a PiStorm de "simple emulador" demuestra desconocimiento acerca de la ingeniería sobre la que descansa el sistema operativo de Commodore.

La informática moderna opera mediante capas sucesivas de abstracción. Cuando un Amiga arranca, las rutinas de la memoria ROM Kickstart configuran capas de software diseñadas para aislar las peculiaridades del hardware. Al programar para AmigaOS, el código se vincula a bibliotecas modulares como graphics.library, intuition.library o exec.library. La arquitectura fue ideada por Carl Sassenrath para mantener independencia frente al procesador central. De igual modo, las especificaciones de bus formuladas por Dave Haynie contemplaban tarjetas de expansión asíncronas capaces de asumir el procesamiento sin alterar la compatibilidad del software.

Defender que un Amiga solo conserva su valor si funciona gobernado por un encapsulado cerámico de Motorola de hace tres décadas constituye un ejercicio de fetichismo material. Esa postura condena a las máquinas históricas a la inoperancia una vez que las últimas reservas de microprocesadores se degraden definitivamente.

PiStorm logró lo que la industria comercial fue incapaz de consolidar durante un cuarto de siglo: democratizó la informática clásica. Rescató miles de placas base de Amiga 500, 600 y 2000 olvidadas en armarios, otorgándoles un rendimiento sin precedentes sin requerir cortes de pistas ni alteraciones irreversibles en la placa original.

Al delegar el procesamiento intensivo en silicio moderno mientras preserva intacta la interacción con los ASICs gráficos y sonoros diseñados por Jay Miner, PiStorm estableció un equilibrio de ingeniería ejemplar. Rescató a la plataforma de su extinción al hacer ejecutar la visión arquitectónica original a la velocidad del silicio contemporáneo.

0 Comentarios

Registrarse o iniciar sesión para unirse a la conversación.

Todavía no hay comentarios. ¡Sé el primero en iniciar la discusión!