# IBM 700/7000

La Serie IBM 700/7000 fue una serie de computadoras de gran tamaño (mainframes) construida por IBM desde los años 1950 hasta inicios de los años 1960. La serie incluía varias arquitecturas de procesador incompatibles. Los 700 usaban lógica de tubos de vacío y se volvieron obsoletos con la introducción de la serie 7000 transistorizados. Los 7000, en su momento, fueron reemplazados por el System/360, el cual fue anunciado en 1964. Sin embargo el 360/65, el primer 360 completo capaz de reemplazar a los 7000, no estuvo disponible hasta noviembre de 1965. Problemas iniciales con el OS/360 y el alto costo de convertir el software mantuvo en servicio a muchos computadores 7000 por varios años.

## Arquitecturas

La serie IBM 700/7000 tenía seis formas completamente diferentes de almacenar datos e instrucciones:
* Primeras científicas (palabras de 36/18 bit): 701 (Computador de Defensa)
* Científicas (palabras de 36 bit): 704, 709, 7090, 7094, 7040, 7044
* Comercial (cadenas de caracteres de largo variable): 702, 705, 7080
* Serie 1400 (cadenas de caracteres de largo variable): 7010
* Decimal (palabras de 10 dígitos): 7070, 7072, 7074
* Supercomputdor (palabras de 64 bit): 7030 "Stretch" ("agrandada")
La clase 700 usaba válvulas termoiónicas, la clase 7000 estaba transistorizada. Todas las máquinas usaban (como muchos computadores de la época) memoria de núcleo magnético; excepto en los primeros modelos 701 y 702, los cuales usaban memoria CRT. Mientras que las arquitecturas eran diferentes, la máquinas compartían la misma clase de tecnología electrónica y generalmente usaban los mismos periféricos incluyendo las unidades de cinta (IBM 727 y 729), lectores de tarjetas, perforadoras de tarjetas e impresoras. Los primeros periféricos adoptaron la tecnología de las máquina de contabilidad de IBM e incluso usaban los plugboards. Posteriormente los periféricos fueron adoptados por la Serie IBM 1400 de gama media.
Los primeros computadores se vendieron sin software. Cuando surgieron los sistemas operativos, con cuatro diferentes arquitecturas de mainframes más la arquitectura de gama media de la serie 1400, se convirtió en un importante problema para IBM, ya que significa por lo menos cuatro desarrollos de software diferentes.
El System/360 combinaba las mejores características de la arquitectura de las series 7000 y 1400 en un solo diseño, sin embargo algunos modelos 360 tenían características opcionales que permitían emular las instrucciones del 1400 y 7000. Uno de los argumentos de venta del IBM System/370 fue la emulación de la serie 1400/7000 mejorada (permitía hacerlo bajo control del sistema operativo, en lugar de reiniciar el sistema y arrancar en modo emulación, como se hacía con el 360).

## Primera Arquitectura (701)

Conocido como el Computador de Defensa durante el desarrollo en el IBM Poughkeepsie Laboratory, esta máquina se dio a conocer oficialmente el 7 de abril de 1953 como la Máquina de Procesamiento de Datos Electrónica IBM 701.

### Formatos de Datos

Los números tenían una longitud de 36 o 18 bits, y sólo de coma fija. (Ver: ¿Por qué palabras de 36 bits?)
* Los números de coma fija eran almacenados en binario con formato de signo/magnitud.

### Formato de Instrucciones

Las instrucciones eran de 18 bits de largo, de direccionamiento simple.
* Signo (1 bit) - Direccionamiento de operandos de palabra completa (-) o media palabra (+)
* Opcode (5 bits) - 32 instrucciones
* Direccionamiento (12 bits) - 4096 direcciones de media palabra
Para expandir la memoria de 2048 a 4096 palabras, una 33ra instrucción se añadía para usar el bit más significativo del campo de dirección para seleccionar el banco (Esta instrucción fue creada probablemente usando la instrucción "No OP", la cual parece haber sido la única instrucción con bits no usados, y que originalmente ignoraba su campo de dirección. Sin embargo, la documentación sobre esta nueva instrucción no está disponible actualmente).

### Registros

Los registros del procesador consistían en:
* AC - Acumulador de 38 bit
* MQ - Coeficiente multiplicador de 36 bit

### Memoria

2.048 o 4.096 palabras binarias de 36 bits, con caracteres de 6 bits

## Arquitectura Científica (704/709/7090/7094)
### Formatos de Datos

Los números son de 36 bits, con coma fija y flotante.
* Los números de coma fija son almacenados en binario en formato de signo/magnitud.
* Los números de precisión simple coma flotante tenían signo, 8 bit exceso/128 bit de exponente, y magnitud de 29 bits
* Los números de doble precisión, introducidos en el 7094, tenían signo, 17 bit exceso-65536 exponente, y una magnitud de 54
* Los caracteres alfanuméricos tenían 6 bit en formato BCD

### Formato de Instrucciones

El formato de instrucciones básico tenía 3 bit de prefijo, 15 bit de decremento, 3 bit de etiqueta("tag"), y 15 bit de direccionamiento. El campo de prefijo especificaba el tipo de instrucción. El campo de decremento a menudo contenía un operando inmediato que modificaba el resultado de la operación, o era usado para definir el tipo de instrucción. Los 3 bits de etiqueta especificaban tres (siete en el 7094) índices de registro, el contenido de cada uno era restado de la dirección para obtener la dirección efectiva. El campo de dirección contenía tanto una dirección como un operando inmediato.

### Registros

Los registros del procesador consistían en:
* AC - Acumulador de 38-bit
* MQ - Coeficiente multiplicador de 36-bit
* XR - Índice de registro de 15-bit (tres o siete)
* SI - Indicador de estado de 36-bit
Los registro del acumulador (y el coeficiente multiplicador) estaban en formato de signo/magnitud.
Los Índices de registros operaban usando el formato de complemento a 2 y cuando se usaban para modificar una dirección de instrucción eran restados de la dirección en la instrucción. En máquinas con tres índices de registro, si la etiqueta ("tag") tenía un set de 2 o 3 bits (p.e. selección de múltiples registros) entonces sus valores eran juntados antes la resta. El IBM 7094, con siete índices de registro tenía un modo "compatibilidad" para poder usar los programas de las primeras máquinas.
Los indicadores de estado permitían interactuar con el operador a través de un panel con interruptores y luces.

### Memoria

* 704
** 4.096, 8.192 o 32.768; palabras binarias de 36 bits con caracteres de 6 bits
* 709, 7090, 7094, 7094 II
** 32.768; palabras binarias de 36 bits con caracteres de 6 bits

### Entrada/Salida

La serie 709/7090 usaba Canales Sincronizadores de Datos para la entrada/salida de alta velocidad, como cinta y discos. Los CSD ejecutaban sus propios programas simples de la memoria del computador que controlaban la transferencia de datos entre la memoria y los dispositivos de E/S. La E/S de la perforadora de tarjetas y de la impresora de alta velocidad eran a menudo transferido a cintas magnéticas y manejada desde una IBM 1401 separada. Más adelante, los canales de datos fueron usados para conectar un 7094 y un 7044 para formar el IBM 7094/7044 Direct Coupled System (DCS) ("Sistema Directo Acoplado"). En esta configuración, el 7044 manejaba principalmente la E/S.

### Programa Ensamblador FORTRAN

El Programa Ensamblador FORTRAN (FORTRAN Assembly Program, FAP) fue el macro ensamblador por defecto para el 709, 7090, y el 7094.
Su pseudo-operación BSS, usada para reservar memoria, es el origen del nombre común de la "sección BSS", que aún se usa en muchos lenguajes ensamblador hoy día para designar rangos de direcciones de memoria reservada del tipo que no tiene que ser grabada en la imagen ejecutable.

## Arquitectura Comercial (702/705/7080)

El IBM 702 y el IBM 705 eran similares y el 705 podía correr muchos de los programas del 702 sin modificaciones, pero no eran totalmente compatibles.
El IBM 7080 fue la versión transitorizada del 705, con varias mejoras. Para compatibilidad hacia abajo, podía correr en modo 705 I, modo 705 II, modo 705 III o en modo 7080 completo.

### Formato de Datos

Los datos eran representados por cadenas de longitud variables finalizadas con una marca de grabación.

### Formato de Instrucciones

Cinco caracteres: un carácter de opcode y 4 caracteres de dirección - OAAAA

### Registros

* 702
** dos acumuladores (A & B) - 512 caracteres
* 705
** un acumulador - 256 caracteres
** 14 unidades de almacenaje auxiliar - 16 caracteres
** 1 unidades de almacenaje auxiliar - 32 caracteres
* 7080
** 1 acumulador - 256 caracteres
** 30 unidades de almacenaje auxiliar - 512 caracteres
** 32 unidades de almacenaje de comunicación - 8 caracteres

### Memoria

* 702
** 2.000 to 10.000 caracteres en tubos Williams (en incrementos de 2.000 caracteres)
** Tasa de ciclo de caracteres - 23 microsegundos
* 705 (modelos I, II, o III)
** 20.000 o 40.000 u 80.000 caracteres de memoria de núcleo magnético
** Tasa de ciclo de caracteres - 17 microsegundos o 9,8 microsegundos
* 7080
** 80.000 or 160.000 caracteres de memoria de núcleo magnético
** Tasa de ciclo de caracteres - 2,18 microsegundos

## Arquitectura Serie 1400 (7010)

La arquitectura comercial del 700/7000 estaba inspirada en la muy exitosa Serie IBM 1400 de computadoras administrativas de gama media. Posteriormente IBM introdujo la versión mainframe del IBM 1410 llamado IBM 7010.

### Formato de Datos

Los datos eran representados por cadenas de longitud variables finalizadas con una marca de palabra

### Formato de Instrucciones

Largo variable: 1, 2, 6, 7, 11, o 12 caracteres.

### Registros

Ninguno, todas las instrucciones operaban en la memoria.

### Memoria

100.000 caracteres.

## Arquitectura Decimal (7070/7072/7074)

El IBM 7070, IBM 7072 y el IBM 7074 eran máquinas decimales, con palabras de longitud fija. Usaban 10 dígitos como el pequeño y más antiguo IBM 650, pero su juego de instrucciones no era compatible con éste.

### Formato de Datos

* Largo de palabra - 10 dígitos decimales más el signo
* Codificación de Dígito - código two-out-of-five
* Coma Flotante - opcional. Exponente de dos dígitos.
* Tres signos para cada palabra - Más, Menos y Alfa
** Más y Menos indicaban valores numéricos de 10 dígitos.
** Alfa indicaba 5 caracteres de textos codificados por pares de dígitos. 61 = A, 91 = 1.

### Formato de Instrucciones

* Todas las instrucciones eran de una palabra
* 2 dígitos de op code (incluyendo sólo signo, Más o Menos)
* 2 dígitos de índice de registro
* 2 dígitos para campo de control - permitía seleccionar el set de dígitos, desplazamiento a la izquierda o derecha
* 4 dígitos de dirección

### Registros

* Todos los registros eran de una palabra, podían ser direccionados como memoria
* Acumuladores - 3 (direcciones 9991, 9992, y 9993 - estánar; 99991, 99992, y 99993 - 7074 extendido)
* Registro de Programa - 1 (dirección 9995 - estándar; 99995 - 7074 extendido)
** Direccionable de consola solamente. Almacena la dirección actual.
* Contador de Instrucción - 1 (dirección 9999 - estándar; 99999 - 7074 extendido)
** Direccionable de consola solamente.
* Índice de Registro - 99 (direcciones 0001-0099)

### Memoria

* 5.000 a 9.990 palabras (estándar)
* 15.000 a 30.000 palabras (7074 extendido)
* Tiempo de Acceso - 6 microsegundos (7070/7072), 4 microsegundos (7074)
* Tiempo de suma - 72 microsegundos (7070), 12 microsegundos (7072), 10 microsegundos (7074)

## Serie IBM 700, valvulares, 1950s

* IBM 701 - Primero computador electrónico de IBM - introducido en 1952
* IBM 702 - comercial - introducido in 1953
* IBM 704 - científico - introducido en 1954
* IBM 705 - comercial - introducido en 1954
* IBM 709 - científico - introducido en 1958

## serie IBM 7000, transistorizados, 1960s

* IBM 7010 - Versión de alta gama del IBM 1410 - introducido en 1962
* IBM 7030 - Supercomputador ampliado - introducido en 1961
* IBM 7040 - científico - introducido en 1963
* IBM 7044 - científico - introducido en 1963
* IBM 7070 - decimal - introducido en 1960
* IBM 7072 - decimal - introducido en 1962
* IBM 7074 - decimal - introducido en 1961; usado por el Internal Revenue Service de EE. UU. en 1962
* IBM 7080 - comercial - introducido en 1961
* IBM 7090 - científico - introducido en 1959
* IBM 7094 - científico - introducido en 1962
* IBM 7094 II - científico - introducido en 1964