Los más veteranos del lugar le tendrán mucho cariño al Amiga de Commodore, un ordenador de 16 bits perteneciente a la generación de la segunda mitad de los 80 y principios de los 90. Se le recuerda por sus altas capacidades para multimedia de época por encima del resto. Ni el IBM PC, ni el Apple Macintosh y tampoco el Atari ST pudieron hacerle sombra.
El Amiga de Commodore es una de las plataformas más míticas y recordadas de la historia de la informática y su hardware. Diseñado por un equipo dirigido por Jay Miner, quienes ya habían diseñado la consola Atari VCS y los ordenadores de 8 bits también de Atari, los Atari 400 y 800, el Commodore Amiga fue una versión mejorada y potenciada a los 16 bits de sus diseños anteriores. Se trató de un proyecto convulso en el que primero nació cómo una consola de videojuegos para Atari para posteriormente evolucionar como un ordenador para su rival Commodore y pasando por el camino siendo un proyecto de una empresa independiente.
El Commodore Amiga fue lanzado en 1985, en forma del Amiga 1000, pero el ordenador que muchos seguramente recordamos es el Commodore Amiga 500, una versión de bajo de coste del primer modelo que salió en 1987 con un precio reducido y factor forma reducidos. Dado que tenía todo su hardware integrado en un teclado como muchos ordenadores similares de la época, por lo que su aspecto final no correspondía con el enorme potencial que encerraba en su interior.
Cómo recordatorio a este mítico ordenador, pero en especial de cara a aquellos que no lo conocieron hemos decidido hacerle un pequeño homenaje.
Arquitectura del Commodore Amiga
Debido a que en HardZone nos dedicamos a hablar de hardware de eso vamos a hacer al hablar del Amiga, ya que para entender qué es lo que lo hacía tan especial hemos de hablar de su arquitectura. Cuya organización la podéis ver en el diagrama de arriba, cierto es que en comparación con los sistemas que existen a día de hoy se trata de una arquitectura relativamente simple.
¿Qué es lo que hacía especial al Amiga? La enorme potencia que tenía gracias a lo que con el tiempo se acabó llamado el Original ChipSet u OCS. Una combinación de tres procesadores de apoyo de nombre femenino llamados: AGNUS, DENISE y PAULA. En cuanto a su CPU central esta era el ampliamente adoptado Motorola 68K. En cuanto a la memoria RAM, el Amiga era una configuración NUMA y por tanto con dos pozos de memoria RAM diferentes, estos eran los siguientes:
- La Chip RAM venía incluida de serie en el sistema, su acceso se hacía a través del coprocesador o chip de apoyo AGNUS. El cual hacía de controlador de memoria y permite el acceso de todos los componentes a este tipo de memoria.
- La Fast RAM era de uso exclusivo para la CPU. Un sistema podía funcionar sin la Fast RAM e incluso hubo modelos que se vendieron sin ella, por lo que era posible utilizar el Amiga sin este tipo de memoria, pero a cambio de perder una gran cantidad de rendimiento.
Ahora, vamos a hacer un resumen de los diferentes componentes del Commodore Amiga.
La CPU del Amiga, el Motorola 68000
La CPU principal del Commodore Amiga fue el mítico Motorola 68K, la cual formó parte de una familia de procesadores con un set de registros e instrucciones propios que se utilizó en multitud de sistemas. Desde varias de las familias de ordenadores de 16 bits (Amiga, Atari ST, X68000, Apple Macintosh). En una gran multitud de placas recreativas de diferentes compañías y en consolas de videojuegos como la Sega Mega Drive o la Neo-Geo de SNK. A nivel comparativo se puede decir que el 68K fue en los 80 lo que ARM es a día de hoy, la ISA y arquitectura para todo lo que no era Intel o dicho de otra forma, el PC.
Se trataba de una CPU del tipo CISC como lo son los x86, con registros de 32 bits, un bus externo de datos de 16 bits y 24 pines para el direccionamiento. Por lo que el límite de RAM que soportaban los sistemas era de 16 MB. A nivel de potencia bruta se situaba un poco por encima del 8086 original y por debajo del 80286 del PC AT, por lo que en la generación de los 16 bits el PC tuvo la CPU más potente. Lo cual se agravaba porque la mayoría de compiladores del 68K eran malos.
La velocidad de reloj de su versión NTSC era de 7.16 MHz, la cual corresponde a dos veces el valor de la salva de color del formato de televisión NTSC. Esto es debido a que el Amiga se diseñó para poder conectarlo a un televisor estándar y todas las velocidades de reloj del sistema derivaban de los 3.58 MHz de dicha salva de color. En cambio la versión PAL era un poco más lenta al funcionar a 7.09 MHz, esta diferencia la comentaremos más adelante.
AGNUS
El primer procesador diseñado por Jay Miner y su equipo para el Commodore Amiga es AGNUS, el cual en su interior guarda dos componentes diferenciados. El primero es el controlador DMA que integra una función llamada Blitter o Block Transfer y la otra es el llamado COPPER, el cual se combina con DENISE para generar los gráficos del sistema.
AGNUS no era más que un controlador DMA, un tipo de dispositivo presente en el hardware y que se encarga de comunicar dos tipos de memoria entre sí y realizar copias de los datos sin que tenga que participar la CPU. También sirven para comunicar datos, pero su mayor función no era solo la capacidad de copiar grandes volúmenes de memoria con su función Block Transfer, sino la capacidad de hacerlo manipulando los datos, aunque de manera muy simple en comparación con la actualidad al basarse en instrucciones booleanas simples. A día de hoy el Blitter se sigue utilizando en las GPU, son los ROPS de las tarjetas gráficas que se encargan de dibujar el búfer de imagen una vez la GPU ha procesado el color de cada uno de los píxeles en pantalla.
El último de los componentes que formaba parte de AGNUS era llamado COPPER, un acortamiento del término coprocesador. Se puede comparar a los procesadores de comandos de la GPU actuales. El cual se encargaba de generar la imagen a través de una lista de pantalla y controlando para esta función al Blitter situado en el mismo AGNUS y a DENISE, el verdadero chip gráfico del sistema. Cómo curiosidad COPPER era una versión avanzada del ANTIC, uno de los chips dedicados para la serie de ordenadores Atari de 8 bits. Considerada por arquitectura y por compartir los mismos diseñadores como el verdadero antecesor del Amiga.
DENISE
DENISE es el chip gráfico del Commodore Amiga, este se encarga de generar los gráficos en pantalla, y es el tercer diseño para gráficos que hizo el equipo de Jay Miner con dicha función. Por lo que su origen se puede retrotraer al chip TIA de la Atari VCS, pero al contrario de este no se encargaba de generar el audio de los juegos.
Bajo el nombre de DENISE se encuentra el procesador encargado de leer el búfer de imagen y enviar los datos al televisor. Esto lo hacía a través de la salida de vídeo compuesto y dado que había dos formatos televisivos por aquella época también había dos versiones para el DENISE. Uno para cada uno de los estándares televisivos más utilizados.
Internamente DENISE son dos hardware distintos, por un lado se trata de un procesador con la capacidad de generar el búfer de imagen. Lo cual realizaba durante el periodo VBlank de dibujado, en el cual no se mostraba nada en pantalla. Por aquella época durante una buena parte del tiempo las CPU estaban ocupadas sin hacer nada esperando que el sistema gráfico dibujase la imagen en pantalla. Ya que la RAM que se solía utilizar era de un solo canal. El uso de la Fast RAM aliviaba esto desde la perspectiva de la CPU, pero cuando DENISE estaba dibujando la imagen en pantalla ningún otro componente del sistema podía acceder a la RAM, excepto en los periodos de HBlank y VBlank, en los cuales el COPPER y la CPU a través del Blitter podían cambiar
DENISE y los planos de bits
Los gráficos en el Commodore Amiga al igual que otros sistemas gráficos de la época como el EGA en PC se crean utilizando planos de bits. Estos se basan en búferes de imagen de un solo bit que se combinaban entre sí. Los cuales difieren del sistema actual de píxeles empaquetados donde toda la información de color de un pixel viene conjunta. En total representaba la imagen haciendo uso de un total de 6 bitplanes, pero 1 se utilizaba para escoger un nivel de brillo de la paleta u otro y los otros 5 bits para definir uno de los 32 colores que podían mostrar en pantalla.
Dado que el RAMDAC del Amiga era de 12 bits, 4 bits por componente RGB, lo que le da una paleta de 4096 colores. Donde era posible cambiar el valor de los registros que almacenaban los 32 colores en cada línea de escaneo. Lo que permitía colocar los 4096 colores al mismo tiempo, pero debido a que la velocidad de transferencia no era lo suficientemente rápida esto solo se podía realizar en imágenes estáticas o con pocas tasas de refresco, lo cual fue bautizado como modo HAM.
Dado que el Amiga tuvo su origen en ser una consola de videojuegos, sus modos de resolución están pensados para poderse reproducir a resoluciones posibles en un televisor. En cuanto a resolución horizontal tenía un búfer de imagen de 320 o 64o «píxeles» por línea de escaneo y 200 0 400 líneas dependiendo de si la salida era entrelazada o progresiva. En el primer caso la frecuencia de refresco era de 25 Hz en PAL y 30 Hz en NTSC, para duplicarse en el modo entrelazado.
Generación de sprites en el Commodore Amiga
DENISE al igual que otros chips gráficos de la época tenía un generador de sprites, los cuales son patrones o mapas de bits que cambian de posición en cada fotograma, por lo que sus características se definían en una serie de registros en la memoria que indican por lo general los siguientes parámetros:
- La posición del mapa de bits en pantalla del sprite, tanto en horizontal como en vertical.
- La orientación, es decir, a partir de que donde se dibujaba el mapa de bits y en qué dirección.
- La paleta de colores utilizada.
- La preferencia respecto al fondo y otros sprites.
Dicha información, tanto los registros donde se marca la posición de los sprites, así como los propios mapas de bits que los componen como sus paletas de colores se encontraban en la Chip RAM. El Amiga podía almacenar la información de hasta 8 sprites. Pero gracias a la velocidad para cambiar los registros a través de la dupla Blitter-COPPER la cantidad de sprites mostrada es mucho mayor. En cuanto a su tamaño, estos podían tener tamaños de 1, 2, 4, 8 o 16 píxeles tanto en horizontal como en vertical.
La trinidad COPPER-Blitter-DENISE
La potencia gráfica del Amiga era debida al uso de estos tres procesadores de apoyo, los cuales de manera combinada junto al 68K se encargaban de generar los gráficos en pantalla. Aunque para entender el enorme potencial del Amiga hemos de tener en cuenta la capacidad a la hora de mover los gráficos hemos de entender la forma en la que los ordenadores generaban los gráficos en la época.
Actualmente las memorias VRAM que se utilizan son cómo mínimo de doble canal o lo suficientemente rápidas para que no se cree una contención en el acceso a la memoria a la hora de renderizar. Por aquella época cuando el sistema gráfico leía la memoria de vídeo no permitía el acceso de otras unidades de proceso. Por lo que se tenían que utilizar los tiempos muertos en que se reposiciona el haz de electrones de la pantalla CRT para variar los valores en memoria que servían para dibujar la escena.
El COPPER por otro lado al ser el procesador de comandos era el que le daba las instrucciones a DENISE. Por ejemplo, podía hacer que cambiará la información de vídeo a mitad de fotograma, también podía mandar al Blitter cambiar las direcciones de memoria correspondientes a los valores gráficos. Lo que permitía mostrar más elementos en pantalla que los que en teoría permitían los registros. Es más, cuando el COPPER dejaba de gestionar a DENISE y el Blitter para el dibujado de la escena tan pronto cuando llegaba al periodo Overscan+VBlank le devolvía el control de la Chip RAM a la CPU sin que tuviera que existir ninguna rutina por software para ello.
PAULA, audio y periféricos en el Commodore Amiga
El tercer chip que acompaña al 68K es el llamado PAULA, el cual tiene dos funciones. La primera de ellas es la generación del audio para las aplicaciones, donde destaca sobre sus contemporáneos incluyendo el Commodore 64 que por aquel entonces contaba con el chip de sonido más avanzado de la época. No olvidemos que la mayoría de sistemas solían tener un chip capaz de generar audio a través de 3 canales fijos de onda cuadrada y un canal de ruido. Las primeras tarjetas de sonido para el PC que podían reproducir audio con modulación FM no habían aparecido todavía en el mercado.
Pero, ¿qué hacía a PAULA tan especial? El hecho que fue el primer sistema de audio capaz de reproducir audio en formato PCM y por tanto muestras. Con ello la CPU no tenía que perder el tiempo controlando la salida de audio. Solo tenía que marcar en memoria donde se encontraban las muestras dentro del Chip RAM, soportando hasta 4 canales simultáneos en modo que se podían convertir en 2 canales en estéreo, uno para cada lado.
La otra función de PAULA es la que nos queda para definir un ordenador completo y es que era el encargado de gestionar los periféricos que se conectaban al Commodore Amiga, aparte de hacer de controladora para la unidad de disquetes de 3.5 que venía integrada en el Commodore Amiga.