El KDF8 fue un ordenador británico de principios de siglo, fabricado por English Electric como una versión del RCA 501. Al producir un sistema compatible con software, se pretendía reducir el tiempo y el coste de desarrollo del mismo. Sin embargo, el largo proceso de desarrollo de la capacidad de fabricación hizo que el sistema pronto quedara obsoleto frente a los sistemas de otros proveedores. Solo se vendieron unos pocos sistemas durante sus cinco años de producción. Debido a la consolidación de la industria informática británica, la división de informática de English Electric se convirtió en uno de los componentes de lo que posteriormente sería ICL .
Fondo
A finales de la década de 1950, English Electric emprendió dos importantes proyectos informáticos.
En primer lugar, English Electric construyó una versión del ordenador RCA 501 conocida como KDP10 (KDP por Kidsgrove Data Processing). Esta máquina estaba destinada a aplicaciones comerciales de procesamiento de datos, con instrucciones de longitud fija y capacidad para procesar datos numéricos y alfanuméricos de longitud variable. El diseño original de RCA se adaptó para utilizar los tipos de transistores, diodos y otros componentes fabricados en el Reino Unido. El KDP10 se entregó por primera vez en 1961. En 1964 se renombró como KDF8 y su venta continuó hasta 1965. [ 1 ] La máquina era esencialmente la misma que la RCA 501 y se fabricó bajo licencia para que English Electric pudiera ofrecer una gama completa de sistemas informáticos a todos sus clientes, sin el gasto de desarrollar una máquina completamente nueva. La máquina se vendió por 400.000 libras esterlinas. Solo se vendieron 13 unidades. [ 2 ] [ 3 ]
El segundo ordenador de gran tamaño surgido del trabajo de desarrollo en Kidsgrove fue el KDF9 , diseñado principalmente para trabajos científicos.
Se instaló un KDF8 en la sede de Kidsgrove (Staffordshire) del centro de informática de The English Electric Company. Con el paso de los años y una sucesión de fusiones, esta organización se convirtió en English Electric Leo Marconi (EELM), International Computing Services Limited (ICSL) y, finalmente, mediante un acuerdo conjunto entre ICL y Barclay's Bank , en Baric.
Características básicas
Procesador/tienda principal
KDF8 era una máquina basada en transistores con memoria de núcleo magnético . La memoria de núcleo de la máquina instalada en la oficina de computación de Kidsgrove se actualizó de 64k al máximo de 96k de memoria de núcleo. KDF8 utilizaba un sistema de direccionamiento octal (base ocho). Una instrucción de código máquina tenía una longitud fija de diez caracteres octales. El conjunto de instrucciones fue diseñado específicamente para uso comercial. Incluía instrucciones a nivel de código máquina para las cuatro funciones aritméticas decimales que operaban con números de longitud variable, así como instrucciones para la manipulación eficiente de cadenas de datos de longitud variable. No todas las instrucciones requerían los diez caracteres. Dada la mínima memoria de núcleo disponible, los programadores frecuentemente utilizaban caracteres "de reserva" en las instrucciones para almacenar constantes y otras técnicas similares para ahorrar memoria.
KDF8 era una computadora de procesamiento por lotes, que ejecutaba un programa a la vez. Solo se podía procesar una instrucción de cálculo simultáneamente, pero también era posible ejecutar en paralelo una instrucción de lectura y/o escritura (normalmente desde y hacia cinta magnética). Un sistema de "puertas" de hardware, configuradas y verificadas a nivel de código máquina, controlaba el grado de síncrono. Sin embargo, al no contar con un sistema operativo, este control debía realizarse completamente a nivel de cada programa.
El KDP10 del centro de servicio se actualizó in situ, ya que el sistema estaba construido con transistores de germanio RCA. Parte de la actualización consistió en convertir la lógica principal a transistores de silicio. También se añadió un sumador de direcciones de tres caracteres y el ciclo de máquina se redujo a 15 microsegundos, con seis pulsos de temporización, donde el sexto pulso era para el tiempo de estabilización, lo que permitió reducir el ciclo de máquina a 12,5 microsegundos.
El nivel de habilidad del programador para controlar la superposición completa de lectura, escritura y cálculo, especialmente si los registros de datos se procesaban en lotes en el bloque de datos real en la cinta magnética, era considerable, ya que todas las comprobaciones de simultaneidad debían codificarse manualmente en el programa. La detección automática de errores se limitaba esencialmente a comprobaciones de paridad de hardware a nivel de caracteres, y no existían comprobaciones de hardware del procesador sobre las capacidades del programador. Por ejemplo, el ordenador simplemente se detenía si se le ordenaba acceder a una ubicación de memoria fuera de la memoria física.
Periféricos
No había discos magnéticos, tambores ni otros dispositivos de almacenamiento temporal similares. El almacenamiento masivo se limitaba a cintas magnéticas en carretes abiertos, cada uno de los cuales tenía aproximadamente una pulgada de grosor y nueve pulgadas (229 mm) de ancho, con una capacidad máxima de 2400 pies (730 m) de cinta. Los datos y los programas se almacenaban en estas cintas. La comprobación de errores periféricos se limitaba a comprobaciones de paridad en todas las lecturas y escrituras y al uso de anillos de permiso de escritura. El Kidsgrove KDF8 tenía ocho unidades de cinta magnética en línea, cada una con una velocidad de lectura/escritura de 40k caracteres por segundo. Cada unidad de cinta medía aproximadamente 6 pies (1,8 m) de alto y 2 pies (0,61 m) de ancho, y los gabinetes del procesador y la memoria eran aproximadamente del mismo tamaño y número. La configuración del Kidsgrove requería una sala grande con aire acondicionado.
Se consideró que ocho era el número máximo de unidades de cinta operativas, una por canal, para cualquier configuración real del KDF8. Era posible dividir cada canal de cinta mediante unidades de hardware adicionales en un subgrupo de ocho pletinas, lo que proporcionaba un máximo teórico de 61 unidades de cinta en línea. (Se requerían al menos tres identificadores de canal de E/S con códigos únicos para otros dispositivos).
Existían otros pares de unidades de cinta/impresoras disponibles, capaces de funcionar independientemente del ordenador central. Estos proporcionaban una función de impresión fuera de línea para la producción de grandes volúmenes, lo que permitía al KDF8 realizar otras tareas.
Otros periféricos incluidos:
- un lector de cinta de papel (1000 cps) para datos y entrada de programa (inicial),
- Un dispositivo de teleimpresor para el operador (con una perforadora de cinta de papel integrada de baja velocidad) permitía que los programas mostraran información al operador, quien a su vez utilizaba el teclado para introducir datos o programas cortos en la cinta de papel. Este teleimpresor no podía utilizarse para introducir datos directamente en el ordenador; todas las órdenes del operador debían introducirse a través de la consola.
- una impresora en línea, utilizada principalmente para volcados de memoria de programas que han fallado.
Tanto las impresoras en línea como las fuera de línea eran de impacto, capaces de imprimir una línea de 120 o 160 caracteres, según el modelo. Utilizaban una sola tipografía, sin minúsculas. El papel plegado en abanico era continuo, con perforaciones entre las páginas y orificios dentados a cada lado para el mecanismo de alimentación. Eran comunes los tamaños de papel personalizados, con líneas, texto y colores preimpresos, especialmente para aplicaciones como la nómina, y se necesitaban pequeños bucles de control de cinta de papel para ajustar el tamaño de la página a cada tipo de papel.
Conjunto de instrucciones
Cada instrucción de código máquina KDF8 tenía el formato
OO AAA RR BBB
En esta representación
OO representa un código de operación de dos caracteres (octavos), que identifica la instrucción a realizar, en el rango de 00 a 77, AAA representa una dirección de núcleo "A" de seis caracteres (octavos) que va de 000000 a 777777. (¡Un almacenamiento principal teórico de 1/4 Meg directamente direccionable, un real de 96K!) RR representa una configuración de registro de dos caracteres (un carácter para cada uno de los dos registros posibles numerados del 1 al 7 utilizados para modificar las direcciones "A" y "B", con 0 indicando que no hay modificación de registro) y BBB representa la dirección "B", que es la misma que la dirección "A" en formato.
Las instrucciones se leían una por una desde la tienda principal, se introducían en las cajas registradoras y luego se ejecutaban.
Ejemplo. Una instrucción para leer datos del lector de cinta de papel en línea a ubicaciones que comienzan en la ubicación de la tienda (octal) 200000 se vería así:
14 200000 00 770000 (espacios solo para mayor claridad)
Donde 14 era el código de operación para este tipo de lectura, 200000 era la ubicación de almacenamiento más baja a la que se leerían los datos, 00 indicaba que no se debía realizar ninguna modificación de registro en las direcciones A o B de la instrucción, y 77 era el identificador de dispositivo (fijo) del lector de cinta de papel. (Nota: 77 usado como ID de dispositivo para una operación de escritura dirigiría la escritura al teletipo del operador. Sería embarazoso si esto se debiera a un error de programa, y fuera un gran bloque de datos destinado a cinta magnética...). Los últimos cuatro caracteres octales (0000) no eran necesarios en esta instrucción y se ignorarían cuando se procesara la instrucción. Dichos caracteres "de reserva" eran usados frecuentemente, dada la extremadamente limitada memoria principal disponible, por los programadores para almacenar constantes.
Algunos aspectos del conjunto de instrucciones eran avanzados y facilitaban enormemente la programación de sistemas comerciales.
Los códigos de operación 51-54 realizaban operaciones aritméticas decimales de suma, resta, multiplicación y división sobre números de longitud variable, almacenados como caracteres decimales. Un extremo de cada operando se almacenaba en las direcciones "A" y "B" de la instrucción. El otro extremo se identificaba mediante un ISS (símbolo separador de elementos), octal 74. Por lo tanto, los números podían tener cualquier longitud. Una instrucción de "comparación de sectores" (octal 43) permitía una bifurcación condicional de tres vías del control del programa, dependiendo de si los datos almacenados en el rango desde la dirección "A" hasta la dirección "B" eran mayores, menores o iguales al valor del mismo número de caracteres almacenados en las ubicaciones a la izquierda del registro "T" (previamente configurado), como intenta demostrar la siguiente versión en lenguaje ensamblador.
Etiqueta Op Dirección A RR Dirección B
COMPARAR CONJUNTO DE SALARIOS £T,R LÍMITE DE IMPUESTOS DE SC LÍMITE DE IMPUESTOS,R CTC POR DEBAJO DEL LÍMITE DE IMPUESTOS POR ENCIMA DEL LÍMITE DE IMPUESTOS IGUAL TC EQUALTAXLIMIT
Este ejemplo compara un salario con un límite impositivo y salta a una de tres ubicaciones del programa dependiendo de los valores respectivos. La convención del ensamblador ",R" representa el carácter más a la derecha del campo con nombre. CTC significaba "Transferencia de Control Condicional" y TC "Transferencia de Control (incondicional)".
En el código de "comparación" anterior, el conjunto de instrucciones original (¿KDP10?) comparaba de derecha a izquierda, lo que requería comparar la longitud completa de las cadenas de datos, carácter por carácter. KDP8 se mejoró para comparar de izquierda a derecha, de modo que la comparación podía detenerse tan pronto como los valores relativos fueran claros, acelerando considerablemente el procesamiento de dichas instrucciones.
Los datos de longitud variable se manejaban con la ayuda de caracteres especialmente designados. El ISS o Símbolo Separador de Elementos, octal 74, generalmente representado como "●", se utilizaba para separar los campos de datos de longitud variable. El octal 75 "<" y el 76 ">" identificaban el inicio y el final de un mensaje de datos, y el octal 777777 se utilizaba por costumbre y práctica para identificar el final del archivo. Así, datos como nombres y direcciones podían perforarse en cinta de papel para la entrada de datos como (por ejemplo)
<IAN●TAYLOR●41●HIGH STREET●KIDSGROVE●PERSONAL>
Diversas instrucciones podían operar directamente sobre estos datos de longitud variable, y los registros podían agruparse, por ejemplo, de diez en diez, en cinta magnética para un almacenamiento eficiente. Dada la lentitud (para los estándares actuales) del procesador y las velocidades de E/S, un aspecto importante de la tarea del programador consistía en equilibrar el agrupamiento de datos en cinta con el cálculo necesario por registro y organizar las operaciones simultáneas de E/S y cálculo con el objetivo de maximizar la superposición entre el cálculo y la E/S y evitar que las unidades de cinta se detuvieran entre lecturas de lotes.
Software
No había sistema operativo. Los programas eran iniciados por un operador en línea, a través de una consola de operador. Los operadores también eran responsables de borrar manualmente la memoria y reiniciar la computadora entre programas, montar y cambiar cintas, controlar la impresión fuera de línea y tareas similares.
Algunos paquetes de software estándar estaban disponibles, o llegaron a estar disponibles, todos ellos escritos en los EE. UU. por la organización RCA. Estos incluían los siguientes.
- Un programa de ordenación y fusión basado en parámetros, capaz de manejar grandes volúmenes de datos. Los parámetros de ordenación podían leerse desde el lector de cinta de papel, para ordenaciones puntuales, o bien integrarse directamente en el programa. Contaba con numerosas opciones de integración para que el usuario pudiera insertar código en diversas etapas del proceso de ordenación y fusión.
- Un compilador de lenguaje ensamblador llamado EZ-Code. Este no se utilizó comercialmente durante un tiempo, ya que el tiempo de compilación se consideraba entonces un gasto excesivo, pero su uso se incrementó en años posteriores. Para ahorrar tiempo de computación, normalmente un programador realizaba una compilación inicial, revisaba el programa manualmente, lo volvía a compilar y, a continuación, probaba y depuraba la versión compilada en código máquina, creando una cinta de papel con parches de código máquina a medida que se realizaban las correcciones. Una vez que se disponía de una copia suficientemente robusta, los cambios se replicaban en ensamblador y el programa se volvía a compilar y probar. Con frecuencia, la última etapa nunca se completaba del todo, y no era raro que los programas de producción requirieran la carga de parches de código máquina desde cinta de papel para cada ejecución. Además, varios paquetes comerciales importantes para nóminas, contabilidad y registro de acciones fueron escritos por personal de la Oficina antes de que se aceptara el compilador de ensamblador, y permanecieron completamente en código máquina. Otra peculiaridad era que una sección de programación no utilizaba las rutinas de generación de E/S del ensamblador, sino que había desarrollado su propio paquete generalizado de E/S, llamado Tape Control, basado en los formatos de tabla de descripción de archivos de COBOL. Esto automatizaba gran parte de la programación propensa a errores relacionada con el procesamiento por lotes y la separación de registros, así como el control de operaciones simultáneas de lectura/escritura y las condiciones de fin de archivo.
- Un compilador COBOL. Su uso fue muy poco frecuente, ya que las primeras experiencias no fueron del todo favorables. Una excepción notable fue un programa de diseño de cableado llamado "WRS1", utilizado para ayudar en el diseño del hardware de las posteriores series de ordenadores centrales English Electric KDF9 y System 4. Otra peculiaridad fue un preprocesador de tablas de decisión para programas COBOL, escrito en COBOL. Esto resultó interesante, puesto que el personal de programación de la oficina estaba experimentando en ese momento con el uso de tablas de decisión como alternativa a los diagramas de flujo. Sin embargo, aunque estos programadores continuaron codificando manualmente en ensamblador a partir de las tablas de decisión escritas a mano con cierto éxito, la sobrecarga de la compilación impidió el uso del preprocesador.
Para optimizar el rendimiento de los programas de producción, los programadores de la oficina desarrollaron paquetes de software estándar para nóminas, contabilidad de ventas y compras, registro de acciones, control de existencias y similares. Algunas aplicaciones, como la de nóminas, permitían procesar datos de numerosos clientes en una sola ejecución, con ajustes de parámetros individuales para gestionar las necesidades de cada cliente. Los requisitos más complejos de los clientes se satisfacían mediante programas personalizados.
Operación de computadora
Se podía colocar un cargador de arranque muy pequeño (de unas 20 instrucciones) al principio de cada cinta de programa, pero ni siquiera este método se utilizaba siempre. Las etiquetas de las cintas eran prácticamente inexistentes (a excepción de las aplicaciones COBOL y las gestionadas por Tape Control). Un ciclo de rotación de cintas, denominado «abuelo/padre/hijo», protegía las cintas de producción de grandes desastres, pero requería un control manual minucioso. Los programadores (o, en el caso de las salas de control de producción, el personal de control de producción) proporcionaban al operador instrucciones escritas sobre qué cintas de programa y de datos cargar, en qué dispositivos, y un resumen escrito de cómo cargar e iniciar cada programa. A continuación, el operador cargaba las cintas y, desde la consola, cargaba e iniciaba cada programa manualmente.
La consola constaba de un panel de visualización vertical de aproximadamente 250 mm de alto por 1,5 m de largo, con un panel de control ligeramente inclinado de tamaño similar debajo. Cada una de estas dos partes estaba equipada con botones etiquetados e indicadores luminosos de aproximadamente 2,5 cm cuadrados. La sección de visualización mostraba, mediante caracteres binarios (agrupados en octal), el estado actual de la máquina (o estático) a nivel de dirección de núcleo y registro, para las operaciones de cálculo, lectura y escritura en curso. Durante la ejecución de un programa, esta pantalla se convertía en un caleidoscopio de luces multicolores que cambiaban rápidamente y parpadeaban. El panel de control constaba de botones para seleccionar el siguiente registro a configurar y una parte central que reflejaba la disposición de una dirección de núcleo. Otros botones permitían acceder a operaciones más complejas. El uso de estos botones permitía al operador seleccionar e introducir directamente en las ubicaciones de almacenamiento y registros del núcleo la secuencia octal que había introducido manualmente. Para que un operador introdujera una sola instrucción de máquina, cada uno de los hasta diez caracteres octales de la instrucción debía seleccionarse e introducirse como su patrón binario, cada uno con el bit de paridad (impar) correcto.
Véase también
- Los primeros ordenadores británicos
Referencias
- ↑ Simon Hugh Lavington, Early British Computers: The Story of Vintage Computers and the People who Built Them , Manchester University Press, 1980 ISBN 0719008107página 76
- ↑ B. Jack Copeland (ed.), El cerebro electrónico de Alan Turing: La lucha por construir el ACE, el ordenador más rápido del mundo , OUP Oxford, 2012, ISBN 0191625868págs. 166-168
- ↑ A. Gandy, La industria informática temprana: limitaciones de escala y alcance , Springer, 2012, ISBN 0230389112págs. 196-198
- Los primeros ordenadores británicos
- Ordenadores centrales ICL
- Computadoras transistorizadas
- Electricidad inglesa
- Introducciones relacionadas con la informática en 1964