domingo, 10 de octubre de 2010

DATA-GEAR: Transferencias DMA en tu Spectrum

Data-Gear: A la izquierda el Z80, a la derecha el chip DMA
Uno de los problemas que tienen nuestros pequeños ordenadores es la velocidad del procesador cuando hay que mover "grandes" cantidades de datos por la RAM. Imaginad un juego con scroll parallax de varios planos en un Spectrum, cantidades ingentes de sprites en pantalla, niveles de profundidad con superposición de sprites, saltarnos la limitación de color de 8x8 y todo a 50 fps... Imposible, vamos, con el pobre Z80, que terminaría bien frito y sin conseguir el resultado deseado (ni de lejos).

Crear un scroll por software en máquinas como el Spectrum, que carecen de hardware específico para ello, requiere de un uso intensivo de CPU. Si la CPU está ocupada en esa tarea, pues otras cosas necesarias quedan pendientes de hacerse (mover sprites por pantalla, inteligencia artificial de personajes varios, reproducir música, leer las pulsaciones del teclado, etc) hasta que el scroll no se ha procesado.

Vista inferior: Conexión al zócalo del Z80
Todo se resume en que la copia de datos (en la pantalla en este caso, cerca de 7 Kbytes aproximadamente) tiene que hacerla el procesador (el Z80). Pero, ¿qué pasaría si hubiese un chip encargado de realizar todas esas operaciones mientra la CPU descansa plácidamente o se dedica a otras tareas más interesantes?.

Ampliación pinchada en un Spectrum
Las siglas D.M.A. en inglés significan (Direct Memory Access: Acceso Directo a Memoria). Esto significa, simplificando mucho, que en lugar de decirle al procesador que copie "x" datos de una zona de la memoria a otra, en su lugar se lo decimos a un chip específico para esa tarea (que además la realiza mucho más eficientemente que el procesador). Le indicamos al chip DMA que queremos copiar "x" bytes desde aquí hasta allí. El tiempo empleado para hacer esa copia es varias veces inferior al usado por la CPU, por lo que la ganancia en velocidad es notable (sin necesidad de usar un procesador más rápido).

Pero esto no se limita a copia de datos por la RAM. También es aplicable a los dispositivos que tiene el ordenador (por regla general). Enviar datos a gran velocidad al chip de sonido AY-8912, por ejemplo, para conseguir música sampleada de gran calidad sin necesidad de consumir recursos del procesador.

Velesoft, conscientes de ello y de las ventajas que puede dar un chip DMA, han creado una ampliación para Spectrum llamada DATA-GEAR. ¿Ventajas? Pues por ejemplo, con el chip DMA instalado en el Spectrum podemos transferir hasta 865 Kbytes en un segundo, osea, que podemos llenar la memoria de un modelo de 128 Kbytes casi 7 veces en el transcurso de un segundo. Y todo funcionando a la velocidad original de 3.5Mhz.

Imagen generada usando el chip DMA
La ampliación va pinchada en el zócalo del procesador del Spectrum y el procesador a su vez, en la propia ampliación, por lo que no es necesario modificar nada del equipo original, más que extraer la CPU, pincharla en la plaquita de la ampliación y todo el conjunto pinchado en el zócalo original del procesador.

Con tal carta de presentación, sólo queda que accedáis a la web y veáis muchísimos ejemplos y vídeos, para que comprobéis el funcionamiento de esta curiosa ampliación.


Un saludo.

No hay comentarios:

Publicar un comentario