El ordenador mainframe GE 645 fue un desarrollo del GE 635 para su uso en el proyecto Multics . Este fue el primer ordenador que implementó un sistema de memoria protegida por hardware configurable. Fue diseñado para satisfacer los requisitos del Proyecto MAC de desarrollar una plataforma que albergara su sistema operativo de tiempo compartido de próxima generación propuesto ( Multics ) y para cumplir con los requisitos de una utilidad informática teórica . [1] El sistema fue la primera máquina multiprocesamiento verdaderamente simétrica en utilizar memoria virtual , también estuvo entre las primeras máquinas en implementar lo que ahora se conoce como un búfer de búsqueda de traducción , [2] [3] [4] cuya patente fundacional fue otorgada a John Couleur y Edward Glaser. [5]
General Electric anunció inicialmente públicamente el GE 645 en la Conferencia Conjunta de Computadoras de Otoño [1] [3] en noviembre de 1965. En una conferencia de prensa posterior en diciembre [6] [7] de ese año se anunció que estarían trabajando para lograr una "amplia disponibilidad comercial" [8] del sistema. Sin embargo, posteriormente lo retirarían de la comercialización activa a fines de 1966. [8] En total, al menos 6 sitios utilizaron sistemas GE 645 en el período de 1967 a 1975. [9]
La configuración básica del sistema consistió en una combinación de 4 módulos básicos [4] [10] estos fueron:
Los módulos controladores del sistema (SCM) actuaban efectivamente como el corazón del sistema. Se trataba de dispositivos pasivos que se conectaban a cada dispositivo activo (procesador, GIOC, EMU) y proporcionaban lo siguiente: [4] [11]
En comparación con el resto de la serie 600, el 645 no utilizaba los controladores de entrada/salida (IOC) estándar para E/S. Tampoco utilizaba el procesador frontal DATANET-30 para las comunicaciones. En su lugar, ambos conjuntos de funciones se combinaban en una unidad llamada GIOC (controlador de E/S generalizado) que proporcionaba canales dedicados tanto para E/S periféricas (disco/cinta) como para E/S de terminal. [4] [12] El GIOC actuaba como un dispositivo activo y se conectaba directamente a la memoria a través de enlaces dedicados a cada controlador de sistema que estuviera presente en una configuración específica.
La unidad de memoria extendida, aunque denominada tambor , era en realidad un gran disco duro de cabezal fijo con un cabezal por pista, [13] este era un producto OEM de Librascope . [13] [14] La EMU constaba de 4.096 pistas que proporcionaban 4 MW (megapalabras) de almacenamiento (equivalente a 16 MB). Cada pista tenía un cabezal de lectura/escritura dedicado, estos estaban organizados en grupos de 16 "conjuntos de pistas" que se utilizan para leer/escribir un sector. Un sector es la unidad predeterminada de asignación de datos en la EMU y está formado por 80 palabras, de las cuales 64 palabras son datos y las 16 restantes se utilizaban como banda de guarda. [4] La tasa de transferencia media entre la EMU y la memoria era de 470.000 palabras por segundo, todas las transferencias tenían un ancho de 72 bits (dos palabras), y se necesitaban 6,7 μs para transferir 4 palabras. [4] La unidad tenía una velocidad de rotación de 1.725 rpm, lo que garantizaba una latencia media de 17,4 milisegundos. [4]
El GE-645 tiene dos modos de ejecución de instrucciones (Maestro y Esclavo) heredados del GE-635, sin embargo, también agrega otra dimensión al tener dos modos de direccionamiento de memoria (Absoluto y Anexión). Cuando el proceso se ejecuta en modo absoluto, el direccionamiento está limitado a 2 18 palabras de memoria y todas las instrucciones se ejecutan en modo Maestro. En comparación, el modo Anexión calcula la dirección utilizando "Palabras Anexadas" con un espacio de direcciones de 2 24 palabras y con la ejecución de instrucciones en modo Maestro o Esclavo. [15]
De manera predeterminada, este es el modo normal en el que el procesador debería ejecutarse en cualquier momento. Casi todas las instrucciones se ejecutarán en este modo, salvo un pequeño conjunto de instrucciones privilegiadas que no se pueden ejecutar en este modo. La ejecución de dichas instrucciones activará un error de procedimiento ilegal; además, está prohibida la capacidad de inhibir interrupciones (bit 28 de la palabra de instrucción). El formato de las direcciones de instrucción se realiza mediante el proceso de anexión.
En este modo, el procesador puede ejecutar todas las instrucciones y puede inhibir las interrupciones mientras lo hace. Al igual que en el modo esclavo, la forma predeterminada de formación de direcciones es mediante el proceso de anexión.
En este modo se pueden ejecutar todas las instrucciones y se otorga acceso total a todas las funciones privilegiadas del hardware. Se pueden inhibir las interrupciones y la obtención de instrucciones se limita a una dirección absoluta de 218 bits (18 bits), lo que restringe al procesador a solo poder acceder a los 256 KW inferiores de la memoria física del núcleo. El procesador cambiará a este modo en caso de falla o interrupción y permanecerá en él hasta que ejecute la instrucción de transferencia cuya dirección de operando se haya obtenido mediante el proceso de anexión.
De manera predeterminada, este es el modo normal de direccionamiento de memoria; tanto el modo maestro como el esclavo normalmente funcionan en este modo. Se accede a las palabras y operandos indirectos a través del mecanismo de adición mediante el proceso de colocar un 1 en el bit 29 de la instrucción ejecutada. Por lo tanto, las direcciones efectivas se agregan a una dirección base o el desplazamiento se vincula a la dirección base.
El procesador 645 se dividió en cuatro unidades funcionales principales: [15]
Una de las diferencias clave con el GE 635 fue la adición de una "unidad de anexión" (APU) que se utilizó para implementar un modelo híbrido de "segmentación por páginas" de memoria virtual . La APU también se utilizó para implementar un almacenamiento de un solo nivel , que es una de las abstracciones fundamentales en torno a las cuales se basa Multics. El formato de instrucción también se amplió con el bit 29, que no se utilizaba anteriormente, que controla si la dirección del operando de una instrucción utilizaba un formato de 18 bits (bit 29 = 0) o uno que estuviera formado por una dirección de registro base de 3 bits con un desplazamiento de 15 bits (bit 29 = 1). [4] : 18, 22 [15]
El formato de instrucción con el bit 29 establecido en 1 es:
1 1 2 2 2 2 3 3 0 2 3 7 8 6 7 8 9 0 5 +---+---------------+---------+-+-+-+------+ |BR | Y | OP |0|I|1| Etiqueta | +---+---------------+---------+-+-+-+------+
El GE 645 tenía 8 registros de base de direcciones (abr), [17] que podían funcionar en modo "emparejado" o "no emparejado". [18] El Honeywell 6180 posterior los cambió a 8 registros de puntero. Cada abr tenía 24 bits de ancho y consistía en 18 bits para una dirección y 6 bits para funciones de control. [19]
Un bit del campo de funciones de control indica si un abr es "interno" o "externo". Si un abr es interno, otro subcampo de 3 bits del campo de funciones de control especifica otro abr con el que está emparejado este abr; ese otro abr es externo, con el abr externo conteniendo un número de segmento en el campo de dirección y el abr interno conteniendo un desplazamiento dentro del segmento especificado por el abr externo. [15] : 4–4 Si una instrucción o una palabra indirecta hace referencia a un abr externo, el campo de dirección en la instrucción o palabra indirecta se utiliza como un desplazamiento en el segmento especificado por el abr externo. Si hace referencia a un abr interno, el campo de dirección en la instrucción o palabra indirecta se añade al desplazamiento en el abr, y el valor resultante se utiliza como un desplazamiento en el segmento especificado por el abr externo con el que está emparejado el abr interno. [15] : 6–26
Los registros tienen los siguientes formatos dependiendo de cómo se configure el bit 21. [19]
Formato como base “externa”, con el bit 21 activado:
1 1 2 2 22 0 7 8 0 1 23 +-------------------+---+-+--+ |PDW|\\\|1|\\| +-------------------+---+-+--+
Formato como componente de la dirección "interna" efectiva con un puntero a una base "externa", con el bit 21 limpio:
1 1 2 2 22 0 7 8 0 1 23 +-------------------+---+-+--+ |PY|PB|0|\\| +-------------------+---+-+--+
En Multics, se emparejaban un abr de número par y el siguiente abr de número impar. Al escribir en ensamblador (EPLBSA/ALM) [NB 1], la práctica estándar de Multics era etiquetar estos registros de la siguiente manera: [20]
El esquema de nombres se basa en lo siguiente: [21]
Los 8 registros de puntero del Honeywell 6180 y sus sucesores tenían la misma finalidad que los 4 registros base emparejados del GE-645, haciendo referencia a un desplazamiento dentro de un segmento.
CTSS se originó en el Centro de Computación del MIT utilizando un IBM 709 y se demostró por primera vez en noviembre de 1961, [22] posteriormente se actualizó a un 7090 en 1962, [23] y finalmente a un 7094 en 1963. [24] Esto requirió una modificación de estos sistemas estándar mediante la adición de una serie de RPQ que, entre otras cosas, agregaron dos bancos de memoria y cambio de banco entre modo de usuario y supervisor, es decir, los programas que se ejecutaban en el banco de memoria del núcleo A tenían acceso a instrucciones a las que los programas que se ejecutaban en el banco de memoria del núcleo B no tenían. [25]
El proyecto MAC comenzó formalmente con la firma del contrato con ARPA el 1 de julio de 1963. Para octubre de 1963 habían recibido un 7094 dedicado para ejecutar CTSS, que se denominó "Red Machine" debido a que tenía paneles laterales rojos. [24] Esto proporcionaría un entorno de tiempo compartido para el proyecto MAC y, posteriormente, se usaría ampliamente para el desarrollo de Multics. Durante este período, se llevó a cabo un trabajo exploratorio sobre cómo luciría un reemplazo para CTSS y qué tipo de hardware requeriría para ejecutarse. Se formó un comité compuesto por Fernando J. Corbató , Ted Glaser, Jack Dennis y Robert Graham con la responsabilidad de visitar a los fabricantes de computadoras para evaluar el nivel de interés en la industria para licitar por la plataforma de hardware. [26] [27] Se dejó en claro que el proyecto MAC estaba buscando un socio de desarrollo dadas las considerables modificaciones de hardware que se requerirían para cumplir con sus requisitos, que se especificaron como: [28]
Procedieron a visitar, entre otros, Burroughs , CDC , DEC , General Electric , IBM y Sperry Univac . De estos, GE e IBM mostraron el mayor interés. [26] En el verano de 1964 se recibieron propuestas de DEC, IBM y GE, después de las evaluaciones del Comité Técnico se tomó una decisión unánime de aceptar la propuesta de GE para el GE 645, que era un diseño basado en el GE 635 pero modificado para cumplir con los requisitos descritos anteriormente. [28]
Mientras se diseñaba y depuraba el hardware GE 645 en Phoenix, se puso en marcha un sistema en el que se podía utilizar un GE 635 para ejecutar un simulador conocido como 6.36, [30] de modo que el desarrollo y la verificación de Multics pudieran realizarse en paralelo. Este proceso implicaba la creación de una cinta en el sistema CTSS que se introduciría en GECOS en el sistema 635 en el MIT para que se ejecutara bajo el simulador 6.36; la salida resultante se llevaría de vuelta a través de la cinta a CTSS para su depuración/análisis. [31] Este entorno simulado fue reemplazado por el primer hardware 645 en 1967. El sistema operativo GECOS fue reemplazado completamente por Multics en 1969 con el supervisor Multics [3] separado por anillos de protección con "puertas" que permitían el acceso desde el modo de usuario. [32]
Una generación posterior, la 645F (F por follow-on) no se había completado cuando la división se vendió a Honeywell , y se la conoció como Honeywell 6180. El mecanismo de control de acceso original de la GE/Honeywell 645 se consideró inadecuado para el control de alta velocidad de las instrucciones de acceso y la reimplementación en la 6180 resolvió esos problemas. [33] La mayor parte de estas computadoras que ejecutaban tiempo compartido en Multics se instalaron en la NSA y sitios gubernamentales similares. Su uso estaba limitado por las medidas de seguridad extremas y tuvo un impacto limitado en los sistemas posteriores, aparte del anillo de protección. [34]
La protección de hardware introducida en este ordenador y modificada en el 6180 se implementó más tarde en el procesador Intel 286 como un anillo de protección de cuatro capas, pero se descubrió que cuatro anillos eran demasiado complicados de programar y demasiado lentos de operar. La arquitectura del anillo de protección se utiliza ahora sólo para proteger el modo kernel del código del modo usuario, tal como se hacía en el uso original del 645. [3]