# Atanasoff Berry Computer

El Atanasoff Berry Computer (ABC) fue la primera computadora electrónica y digital automática que se usó con números y letras (aunque ahora se atribuye esto a la Z1 de Konrad Zuse finalizada en 1938). Fue construido por el Dr. John Vincent Atanasoff con la ayuda de Clifford Edward Berry entre 1937 y 1942 en la 'Iowa State University', que entonces recibía el nombre de 'Iowa State College'.

## Innovaciones del ABC

Esta máquina, decididamente revolucionaria, aportó diversas innovaciones en el campo de la computación: un sistema binario para la aritmética, memoria regenerativa y distinción entre la memoria y las funciones del primer computador moderno en utilizar aritmética en binario y usar circuitos electrónicos, que hoy en día se utilizan en todos los computadores. En binario se utilizan dos símbolos, 0 y 1, para representar valores numéricos. Más específicamente, el binario es una notación matemática en base dos. Debido a su relación directa con los circuitos electrónicos, el sistema binario se usa internamente en casi todos los ordenadores actuales. El computador fue el primero en implementar tres conceptos claves presentes en los ordenadores modernos:
* Uso del sistema binario para representar todos los números y datos.
* Realizaba todas las operaciones usando la electrónica en lugar de ruedas.
* La computación estaba separada del sistema de almacenamiento o memoria.
Además usaba memoria regenerativa, del mismo modo que la DRAM de los ordenadores actuales. No era un computador de almacenamiento, lo que la distingue de las máquinas más tardías y de uso general como el ENIAC (1949), el EDVAC (1949), los diseños de la Universidad de Mánchester o los que Alan Turing realizó en el 'National Physical Laboratory'.

## Desarrollo

El ABC fue construido en el sótano de la 'Iowa State University', que entonces se llamaba 'Iowa State College'. El proceso duró dos años debido a la falta de fondos. Los fondos iniciales fueron aportados por el departamento de agronomía. El resto de la financiación corrió a cargo de la 'Research Corporation of America', en Nueva York. La primera demostración del prototipo, que sumaba o restaba dos registros de veinticinco bits usando un bit de acarreo, se realizó en noviembre de 1939. La máquina pesaba más de 320 kg. Contenía aproximadamente 1.6 km de cable, 280 tubos de vacío y ocupaba como una mesa de despacho.
Estaba diseñado para solucionar sistemas de ecuaciones lineales con 29 variables. Este tipo de problema era muy típico en la física e ingeniería de aquella época. El sistema era alimentado con dos ecuaciones lineales con 29 variables y una constante, y eliminaba una de las variables. El proceso se repetía con el resto de ecuaciones, resultado un sistema de ecuaciones con una variable menos. El proceso de repetía de nuevo para eliminar otra variable. El sistema tenía un error cada 100.000 cálculos, lo que en la práctica la impedía resolver los sistema de ecuaciones. En retrospectiva, una solución, que se podría haber adoptado con la tecnología disponible en aquella época, sería añadir un bit de paridad a cada número cuando era escrito. El problema no fue resuelto porque Atanasoff abandonó la universidad para colaborar con el ejército durante la Segunda Guerra Mundial.

## Arquitectura
### Panel de Control

Numerosos controles manuales proporcionan al usuario la capacidad de programar operaciones en la máquina. La sección de control está constituida por una mezcla de transmisores electromecánicos y tubos de vacío electrónicos.

### Representación numérica

EL ABC se diseñó para resolver problemas de álgebra lineal con una alta precisión y velocidad. El requisito de alta velocidad condujo al uso del almacenaje electrónico y la conmutación, dado que los métodos mecánicos de las calculadoras existentes en aquella época eran centenares de veces más lentos que los métodos electrónicos. La alta precisión requerida eliminó el uso de los métodos analógicos, que se limitan a dos o tres dígitos decimales de exactitud. Atanasoff determinó que una máquina binaria sería más veloz, eficiente y simple que una máquina decimal que procurase imitar la aritmética académica en base diez. Fue el primero en reconocer el valor de las representaciones binarias de los números, a las que él llamaba “abacus elements”. A pesar de algunas tentativas en el diseño de calculadoras numéricas electrónicas no binarias, toda la historia de la computación se ha basado en el funcionamiento en modo binario en el nivel más bajo del hardware. Se añadieron traductores de decimal a binario al ABC para facilitar la entrada inicial y salida final de los datos.
Atanasoff se decidió por una representación basada en cincuenta bits de mantisa más un bit de signo. Esta representación proporciona una exactitud de quince decimales. Medio siglo después del diseño y construcción del ABC el comité del IEEE estandarizó un formato de representación de números basado en un bit de signo, cincuenta y dos bits de mantisa y once bits de exponente. Por tanto podemos considerar al ABC como una computadora de doble precisión, con una representación de los números excepcionalmente similar a la de las arquitecturas actuales.

### Memoria principal

El ABC usaba almacenamiento dinámico para su memoria principal. Al igual que las memorias RAM actuales, requería de un período de refresco para recordar su estado binario. Atanasoff consideró el uso de distintas tecnologías para la construcción de la memoria principal tales como memoria magnética, tubos de vacío y condensadores para guardar cada bit de memoria. Finalmente la relación entre el coste por bit y el rendimiento le hizo decidirse por el uso de condensadores. La memoria principal estaba formada por los tambores CA (“Counter Abaci”) y KA (“Keyboard Abaci”.) Los tambores CA y KA son idénticos. Disponen de treinta y dos bandas a lo largo de la longitud del tambor. Cada banda dispone de sesenta posiciones físicas, de las cuales cincuenta contienen condensadores montados radialmente alrededor del tambor. Cada condensador almacena un bit y cada banda es un elemento del vector. Las dos bandas adicionales son repuestos para el caso del fallo de un condensador.
Los términos “counter” y “keyboard” son reminiscencias de los conceptos originales de las máquinas sumadoras mecánicas, en las cuales una unidad sumadora controla el total acumulado, y los valores introducidos a través del teclado o “keyboard” son sumados o restados a esta cantidad. En la actualidad, la memoria dinámica basada en condensadores impresos sobre chips de silicio continúa ofreciendo la mejor relación entre coste y rendimiento. Esta memoria estaba organizada en dos bancos de treinta y dos palabras cada uno. Dos de estas palabras eran repuestos. Como cada palabra precisaba de cincuenta bits de mantisa más uno de sigo, la capacidad total de almacenamiento era de tres mil doscientos sesenta y cuatro bits. Los bancos eran usados como registros por la unidad aritmética. Cada banco de registros residía en un cilindro distinto.

### Aritmética paralela

En términos modernos el ABC se puede describir como un procesador vectorial de series de bits. Un vector de treinta elementos es procesado en paralelo. Cada elemento es una palabra de cincuenta bits que es procesada secuencialmente. La operación básica del ABC era una multiplicación paralela. En cada ciclo de reloj de un segundo la computadora podía realizar treinta sumas o restas simultáneas, por lo que es considerado como el primer computador vectorial. La multiplicación se basaba en un algoritmo de suma desplazamiento que avanzaba por las filas de la matriz del sistema de ecuaciones sumando cada fila a la siguiente. Para completar una operación se requerían dieciséis ciclos de un segundo cada uno. Teniendo en cuenta que los vectores o matrices de entrada estaban compuestos por treinta palabras, la velocidad de cómputo del ABC era de sesenta operaciones, treinta operaciones de suma más otras treinta de desplazamiento, en dieciséis segundos, o lo que es lo mismo 3.75 operaciones/segundo. Los elementos de la arquitectura encargados de realizar las sumas y restas eran los ASMs (“Add-Subtract Mechanisms”.) Estos mecanismos, que eran totalmente electrónicos, recibían dos bits y un acarreo de entrada y devolvían el bit de resultado y el acarreo de salida.

### Tambor de estado (“Carry Drum”)

Mantiene el estado actual del bit del vector cuando este se está procesando. Hay un bit de estado (“carry bit”) por cada elemento del vector, es decir, treinta bits de estado.

### Tambor de temporización (“Timing Drum”)

Este elemento de la arquitectura es el encargado de generar diversas señales de control. El tiempo que se tarda en recorrer las diez posiciones físicas sin condensador de los tambores de memoria se utiliza para labores de control.

### Tambor de conversión (“Conversion Drum”)

Funciona como una ROM que contiene las representaciones binarias de los números en base diez. El tambor de conversión se utiliza durante la entrada de los datos (de base 10 a base 2) y salida de datos (base 2 a base 10.)

### Memoria secundaria

Está formada por un grabador y un lector de tarjetas en base dos (“Base-2 Reader and Punch.”) Las computadoras antiguas se asocian a los lectores de tarjetas mecánicos y a las cintas de papel perforadas. Sin embargo el diseño del ABC fue muy avanzado a su época en cada uno de los aspectos de su arquitectura. La memoria secundaria usaba medios eléctricos para leer y escribir los datos. El medio de grabación era tarjetas, pero los agujeros se hacían eléctricamente mediante un rayo de cinco mil voltios. Después eran leídos usando un voltaje muy inferior y a una velocidad muy superior a los sesenta bits por segundo que proporcionaban los medios mecánicos de su época. El diseño paralelo de este dispositivo permitía que tiras de treinta bits fueran leídas y escritas simultáneamente. La velocidad de transferencia era de mil ochocientos bits por segundo. Esta velocidad es superior a la que empleaban los computadores personales de principios de los ochenta para leer cintas de casete, y fue considerada suficiente para satisfacer las necesidades de cálculo del ABC. El diseño de los antiguos computadores permitía que los números fueran leídos, procesados y escritos simultáneamente. En la actualidad las operaciones de entrada/salida se solapan con el proceso de la CPU.

### Periféricos de entrada y salida de datos

Se utiliza un lector de base diez para la introducción de los datos. Para dicha entrada de datos se emplean tarjetas en base-10 de ochenta columnas estándar de IBM. Se lee de forma paralela un banco de cinco coeficientes. Los quince dígitos que componen los coeficientes se leen secuencialmente comenzando con el más significativo. Los datos de salida se muestran a través de un display en base 10 de quince dígitos.

### Sincronización del sistema

Todos los tambores del sistema, exceptuando el de estado (“carry drum”), rotan a sesenta revoluciones por minuto, es decir, dan una vuelta en un segundo. En cada revolución se realiza una operación de vector. Como cada tambor posee sesenta posibles posiciones de memoria, la velocidad máxima de transferencia es de sesenta bits por segundo. Si leemos sesenta bits por rotación, el tambor de estado deberá rotar a 3600 RPM. En la práctica es preferible no alcanzar estas velocidades, y realmente rota a 900 RPM. Hay cuatro contactos por cada bit de estado conectados a un condensador.

## La lucha por la patente

Presper Eckert y John Mauchly fueron los primeros en patentar un computador digital, el ENIAC. Mauchly examinó el ingenio de Atanasoff y Berry en junio de 1941, y se piensa que esta visita influyó en su trabajo posterior. En el juicio de Sperry Rand contra Honeywell se revocó la patente del ENIAC al ser considerado una derivación del ABC. El juicio comenzó en 1967 y el veredicto se dictaminó el 19 de octubre de 1973. No hubo apelación. La visita que Mauchly realizó a Atanasoff fue la base del veredicto. Atanasoff fue generoso al decir, "hay suficiente crédito para todos en la invención y desarrollo del computador digital". Eckert y Mauchly han sido considerados históricamente los padres del computador moderno, aunque historiadores y expertos están de acuerdo ahora en que el ABC fue el primero (lo que recientemente ha cambiado al conocerse los detalles de la máquina Z1 construida en 1938 en Alemania por Konrad Zuse). Atanasoff fue ampliamente reconocido en vida. El 13 de noviembre de 1990 fue galardonado con la 'National Medal of Technology' por el presidente George H. W. Bush, en una ceremonia celebrada en la Casa Blanca.

## Destrucción de la máquina. Réplica moderna

El ABC fue finalmente desmontado cuando la universidad convirtió el sótano en que se encontraba en laboratorios. La mayor parte de sus piezas fueron eliminadas. En 1997, un grupo de investigadores del 'Ames Laboratory', sito en el campus de la 'Iowa State', finalizó la construcción de una réplica de la computadora, con un coste de 350.000 dólares. Esta réplica disipó favorablemente cualquier duda sobre si el ABC podía desarrollar las funciones para las que fue diseñado. El nuevo ABC está en exposición permanente en el vestíbulo del 'Durham Center for Computation and Communication' en la 'Iowa State University'.