Serie ICL 2900

El Serie ICL 2900 fue una gama de sistemas informáticos mainframe anunciados por el fabricante británico International Computers Limited el 9 de octubre de 1974. La empresa había comenzado el desarrollo bajo el nombre de "New Range" inmediatamente en su formación en 1968. El rango no fue diseñado para ser compatible con ninguna máquina anterior producida por la empresa, ni para compatibilidad con las máquinas de cualquier competidor: más bien, fue concebido como un opción sintética, combinando las mejores ideas disponibles de diversas fuentes.
En términos de marketing, la Serie 2900 fue reemplazada por la Serie 39 a mediados de la década de 1980; sin embargo, la Serie 39 era esencialmente un nuevo conjunto de máquinas que implementaban la arquitectura de la Serie 2900, al igual que las máquinas ICL posteriores con la marca "Trimetra".
Orígenes
Cuando ICL se formó en 1968 como resultado de la fusión de Computadoras y Tabuladores Internacionales (ICT) con Leo Marconi Inglés y Elliott Automation, la empresa consideró varias opciones para su futura línea de productos. Estos incluyeron mejoras a la Serie 1900 de TIC o al Sistema Eléctrico Inglés 4, y un desarrollo basado en J. K. Iliffe's Basic Language Machine. La opción finalmente seleccionada fue la llamada Opción Sintética: un nuevo diseño conceptualizado desde cero.
Como su nombre lo indica, el diseño fue influenciado por muchas fuentes, incluidas las máquinas ICL anteriores. El diseño de los mainframes de Burroughs fue influyente, aunque ICL rechazó el concepto de optimizar el diseño para un lenguaje de alto nivel. El sistema Multics aportó otras ideas, especialmente en el ámbito de la protección. Sin embargo, la mayor influencia externa fue probablemente la máquina MU5 desarrollada en la Universidad de Manchester.
Conceptos arquitectónicos


La máquina virtual
La arquitectura de la serie 2900 utiliza el concepto de máquina virtual como el conjunto de recursos disponibles para un programa. El concepto de máquina virtual en la arquitectura de la serie 2900 difiere del término utilizado en otros entornos. Debido a que cada programa se ejecuta en su propia máquina virtual, el concepto puede compararse con un proceso en otros sistemas operativos, mientras que el proceso de la Serie 2900 se parece más a un subproceso.
El recurso más obvio en una máquina virtual es el almacén virtual (memoria). Otros recursos incluyen periféricos, archivos y conexiones de red.
En una máquina virtual, el código puede ejecutarse en cualquiera de las dieciséis capas de protección, llamadas niveles de acceso (o niveles ACR, en honor al Registro de Control de Acceso que controla el mecanismo). Los niveles más privilegiados del código del sistema operativo (el kernel) operan en la misma máquina virtual que la aplicación del usuario, al igual que los niveles intermedios, como los subsistemas que implementan el acceso al almacén de archivos y la creación de redes. Por lo tanto, las llamadas al sistema implican un cambio de nivel de protección, pero no una llamada costosa para invocar código en una máquina virtual diferente. Cada módulo de código se ejecuta en un nivel de acceso particular y puede invocar las funciones ofrecidas por el código de nivel inferior (más privilegiado), pero no tiene acceso directo a la memoria u otros recursos en ese nivel. Por tanto, la arquitectura ofrece un mecanismo de encapsulación incorporado para garantizar la integridad del sistema.
Se pueden compartir segmentos de memoria entre máquinas virtuales. Hay dos tipos de memoria compartida: segmentos públicos utilizados por el sistema operativo (que están presentes en todas las máquinas virtuales) y segmentos globales utilizados para datos compartidos a nivel de aplicación: este último mecanismo se utiliza sólo cuando existe un requisito de aplicación para que dos máquinas virtuales se comuniquen. Por ejemplo, los segmentos de memoria global se utilizan para las tablas de bloqueo de bases de datos. Se encuentran disponibles instrucciones de semáforo de hardware para sincronizar el acceso a dichos segmentos. Una curiosidad menor es que dos máquinas virtuales que comparten un segmento global utilizan diferentes direcciones virtuales para las mismas ubicaciones de memoria, lo que significa que las direcciones virtuales no se pueden pasar de forma segura de una máquina virtual a otra.
El término utilizado en la serie ICL 2900 y la serie ICL 39 máquinas para la unidad central de procesamiento (CPU) es "Procesador de código de orden" (OCP).
Mecanismos de respuesta

La arquitectura 2900 admite una pila de llamadas basada en hardware, lo que proporciona un vehículo eficiente para ejecutar programas en lenguaje de alto nivel, especialmente aquellos que permiten llamadas a funciones recursivas. Esta fue una decisión con visión de futuro en ese momento, porque se esperaba que los lenguajes de programación dominantes fueran inicialmente COBOL y FORTRAN. La arquitectura proporciona mecanismos integrados para realizar llamadas a procedimientos utilizando la pila y registros de propósito especial para direccionar la parte superior de la pila y la base del marco de la pila actual.
Los datos fuera de la pila generalmente se abordan mediante un descriptor. Se trata de una estructura de 64 bits que contiene una dirección virtual de 32 bits y 32 bits de información de control. La información de control identifica si el área que se aborda es código o datos; en el caso de datos, el tamaño de los elementos direccionados (1, 8, 32, 64 o 128 bits); una bandera para indicar si se requiere verificación de hardware vinculada a la matriz; y varias otras mejoras.
La dirección virtual de 32 bits comprende un número de segmento de 14 bits y un desplazamiento de 18 bits dentro del segmento.
El código de pedido no forma parte estrictamente de la arquitectura 2900. Este hecho se ha aprovechado para emular otras máquinas microcodificando sus conjuntos de instrucciones. Sin embargo, en la práctica, todas las máquinas de la serie 2900 implementan un código de pedido o conjunto de instrucciones común, conocido como PLI (Primitive Level Interface). Está diseñado principalmente como objetivo para compiladores de lenguajes de alto nivel. Las máquinas más potentes, como la 2980 y la 2988, implementaban todas las instrucciones en hardware, mientras que las demás utilizaban firmware microcodificado.
Hay varios registros, cada uno diseñado para un propósito especial. Un registro acumulador (ACC) está disponible para uso general y puede tener un tamaño de 32, 64 o 128 bits. El registro B se utiliza para indexar en matrices; el registro LNB (Local Name Base) apunta a la base del marco de pila actual, con el registro SF (Stack Front) apunta a la base móvil "superior"; de la pila; el registro DR se utiliza para contener descriptores para direccionarlos al montón, etc. También hay dos punteros de 32 bits para datos fuera de la pila; XNB (base de nombres extra) y LTB (base de tabla de vinculación).
Los formatos de datos reconocidos por las instrucciones PLI incluyen enteros sin signo de 32 bits; Enteros en complemento a dos de 32 y 64 bits; Punto flotante de 32 bits, 64 bits y 128 bits; y decimal empaquetado de 32, 64 y 128 bits. Contrariamente a la convención de C y UNIX, el valor booleano verdadero se representa como cero y falso se representa como menos uno. Las cadenas se almacenan como matrices de caracteres de 8 bits, codificadas convencionalmente en EBCDIC (aunque el EBCDIC de ICL tiene variaciones menores con respecto a la versión de IBM). Es posible utilizar ISO (esencialmente ASCII) en lugar de EBCDIC configurando un bit de control en un registro privilegiado; Esto afecta, entre otras cosas, a determinadas instrucciones de conversión decimal.
Debido a que algunas de las instrucciones PLI, en particular aquellas para llamar a procedimientos, son muy poderosas (especialmente las llamadas al sistema), las velocidades de instrucción en la Serie 2900 no siempre son directamente comparables con las de los competidores. hardware. La literatura de marketing de ICL tendía a utilizar el concepto de "MIPS equivalente a IBM", siendo la clasificación MIPS de un mainframe IBM que logró el mismo rendimiento en las pruebas comparativas de aplicaciones. Las eficiencias logradas por la arquitectura 2900, en particular la evitación de gastos generales de llamadas al sistema, compensaron el rendimiento relativamente lento del hardware bruto.
Implementaciones
Procesador | Modelo | Anuncio | Entrega | Modelos posteriores |
---|---|---|---|---|
P-series | ||||
P4 | 2980 | Oct 1974 | Jun 1975 | |
P3 | 2970 | Oct 1974 | Dec 1974 | |
P2L | 2960 | Mar 1976 | Dec 1975 | |
P2S | 2950 | Cancelada | ||
PI | 2940 | Cancelada | ||
P0 | 2930 | Cancelada | ||
S-series | ||||
S4 | Cancelada | |||
S3 | 2966 | Nov 1980 | Jun 1981 | 2955, 2958, 2977, 2988 |
S2 | 2956 | Nov 1980 | - | |
S1 | 2950 | Nov 1977 | Jun 1978 | 2946 |
Serie P (paralela)

Las primeras máquinas anunciadas en la serie 2900 fueron la 2980 y la 2970. La 2980 permitía uno o dos procesadores de códigos de pedido (OCP), cada uno de los cuales operaba a hasta 3 millones de instrucciones por segundo, con memoria real configurable hasta 8 megabytes. con un tiempo de acceso de 500 nanosegundos.
El 2980 fue inicialmente el más potente de los mainframes de nueva gama de ICL. Además de los OCP, constaba de un controlador de acceso múltiple al almacén (SMAC) y uno o más controladores de acceso al almacén (SAC), un controlador periférico general (GPC), uno o más controladores de archivos de disco (DFC) y un controlador de enlace de comunicaciones. (CLC), junto con unidades de disco (una configuración típica tendría ocho unidades EDS 200), pletinas de cinta, una estación operativa (OPER), impresoras de línea y lectores de tarjetas. Podría ejecutar el sistema operativo ICL VME (VME/B, VME/K) o el Sistema de Acceso Múltiple de Edimburgo (EMAS). Una configuración típica de 2980 costaría alrededor de £2 millones (equivalente a £13 millones en 2021).
A diferencia del 2980, el 2970 y el 2960 posterior estaban microcodificados y, por lo tanto, permitían la emulación de conjuntos de instrucciones como los de la antigua Serie 1900 o el System 4.
Se construyó una máquina de la serie 2900 a partir de varios módulos funcionales, cada uno de ellos contenido en un gabinete separado. Los dispositivos periféricos se conectaron mediante la interfaz primitiva de ICL (enchufe/enchufe y juego de cables) a un adaptador de puerto en el SMAC. Se empleó direccionamiento lógico y se utilizó un esquema de grupo para identificar los componentes del sistema en términos de puertos, troncales y flujos.
Un Troncal era un nombre genérico y una dirección de hardware dentro de un Puerto al que se asignaría un controlador periférico. Un Trunk era un nombre genérico para un controlador para varios dispositivos Stream. Un Stream era el nombre genérico del canal bajo el cual se podía hacer referencia a dispositivos periféricos individuales.
El proceso de arranque de la serie 2960 merece una mención especial: el OCP contenía un terminal mini OPER y una pletina de casete. En el arranque, el OCP realizaría su carga de programa inicial (IPL) desde el dispositivo IPL designado. El código IPL proporcionó los medios para que el OCP descubriera la configuración de hardware del sistema consultando los flujos, troncales y puertos para encontrar el dispositivo de arranque predeterminado o elegido manualmente para el microcódigo. conjunto y/o sistema operativo que se va a iniciar. Este proceso se denominó GROPE o Reconocimiento General de Equipos Periféricos. El método de carga del casete también permitió al personal de ingeniería cargar y ejecutar software de diagnóstico.
Serie S (serie)
Las primeras máquinas fueron reemplazadas posteriormente por una familia de máquinas basadas en el diseño de gama media 2966, que era menos costoso de construir y utilizaba interconexiones en serie en lugar de en paralelo. El rendimiento del 2966 se amplió hasta el 2988 y hasta el 2958, aumentado con versiones de doble procesador, para cubrir todo el rango de rendimiento.