stringtranslate.com

C.mmp

La unidad de memoria C.mmp, con tres bastidores visibles, incluido el panel frontal del interruptor de barra transversal.

El C.mmp fue uno de los primeros sistemas multiprocesador de instrucciones múltiples y datos múltiples ( MIMD ) desarrollado en la Universidad Carnegie Mellon (CMU) por William Wulf (1971). La notación C.mmp proviene de la notación PMS de Gordon Bell y Allen Newell , [1] donde una unidad central de procesamiento (CPU) se designaba como C , una variante se indicaba mediante la notación de puntos y mmp significaba Multi-Mini- Procesador . A partir de 2020 , la máquina está en exhibición en CMU, en Wean Hall, en el noveno piso.

Estructura

Se utilizaron dieciséis minicomputadoras PDP-11 de Digital Equipment Corporation como elementos de procesamiento, denominados Módulos de Computación (CM) en el sistema. Cada CM tenía una memoria local de 8K y un conjunto local de dispositivos periféricos . Uno de los desafíos era que un dispositivo solo estaba disponible a través de su procesador único conectado, por lo que el sistema de entrada/salida (E/S) (diseñado por Roy Levien ) ocultaba la conectividad de los dispositivos y enrutaba las solicitudes al procesador de alojamiento. Si un procesador fallaba, los dispositivos conectados a su Unibus dejaban de estar disponibles, lo que se convertía en un problema en la confiabilidad general del sistema. El procesador 0 (el procesador de arranque ) tenía las unidades de disco conectadas.

Cada uno de los módulos de cómputo compartió estas vías de comunicación:

Dado que el PDP-11 tenía un espacio de direcciones lógicas de 16 bits, se agregó otra unidad de traducción de direcciones para expandir el espacio de direcciones a 25 bits para el espacio de memoria compartida. La arquitectura Unibus proporcionaba 18 bits de dirección física y los dos bits de orden superior se utilizaban para seleccionar uno de los cuatro registros de reubicación que seleccionaban un banco de memoria. Administrar adecuadamente estos registros fue uno de los desafíos de programar el kernel del sistema operativo (SO) .

El diseño original de C.mmp utilizaba memoria de núcleo magnético , pero durante su vida útil, estuvo disponible una memoria dinámica de acceso aleatorio (RAM) de mayor rendimiento y el sistema se actualizó.

Los procesadores originales eran procesadores PDP-11/20, pero en el sistema final sólo se utilizaron cinco de estos; los 11 restantes eran procesadores PDP-11/40, que se modificaron para tener espacio adicional para microcódigo grabable. [ cita necesaria ] Todas las modificaciones a estas máquinas fueron diseñadas y construidas en CMU.

La mayoría de las modificaciones del 20/11 fueron cambios personalizados en el backplane cableado , pero debido a que el PDP-11/40 se implementó en microcódigo , se diseñó una placa proc-mod separada que interceptaba ciertas instrucciones e implementaba los requisitos del sistema operativo protegido. Por ejemplo, era necesario, para la integridad del sistema operativo, que el registro del puntero de la pila nunca fuera impar. El 20/11, esto se hizo recortando el cable al bit de orden inferior del registro de la pila. El 40/11, cualquier acceso a la pila fue interceptado por la placa proc-mod y generó una trampa de acceso a datos ilegal si el bit de orden inferior era 1.

Sistema operativo

El sistema operativo (OS) se llamó Hydra . Estaba basado en capacidades , orientado a objetos , multiusuario y un microkernel . Los recursos del sistema se representaron como objetos y se protegieron mediante capacidades.

El sistema operativo y la mayor parte del software de aplicación se escribieron en el lenguaje de programación BLISS -11, que requirió una compilación cruzada en un PDP-10 . El sistema operativo utilizaba muy poco lenguaje ensamblador .

Entre los lenguajes de programación disponibles en el sistema se encontraba una variante ALGOL 68 que incluía extensiones que soportaban computación paralela , para hacer un buen uso de C.mmp. El compilador ALGOL se ejecutó de forma nativa en Hydra OS.

Fiabilidad

Debido a que la confiabilidad general del sistema dependía de tener las 16 CPU en funcionamiento, hubo serios problemas con la confiabilidad general del hardware. Si el tiempo medio entre fallas (MTBF) de un procesador fue de 24 horas, entonces la confiabilidad general del sistema fue de 16/24 horas, o aproximadamente 40 minutos. En total, el sistema solía funcionar entre dos y seis horas. [2] Muchas de estas fallas se debieron a fallos de sincronización en los numerosos circuitos personalizados agregados a los procesadores. Se dedicó un gran esfuerzo a mejorar la confiabilidad del hardware y, cuando un procesador fallaba notablemente, se dividía y ejecutaba diagnósticos durante varias horas. Cuando pasó un primer conjunto de diagnósticos, se volvió a dividir como un procesador de E/S y no ejecutaba el código de la aplicación (pero sus dispositivos periféricos ahora estaban disponibles); Continuó ejecutando diagnósticos. Si los superaba después de varias horas más, se le restablecía como miembro de pleno derecho del conjunto de procesadores. De manera similar, si se detectaba que un bloque de memoria (una página) era defectuoso, se eliminaba del grupo de páginas disponibles y, hasta que se notificaba lo contrario, el sistema operativo ignoraba esta página. Por lo tanto, el sistema operativo se convirtió en un ejemplo temprano de un sistema tolerante a fallos , capaz de hacer frente a los problemas de hardware que surgían inevitablemente.

Referencias

  1. ^ Bell, C. Gordon (1981). Estructuras informáticas: lecturas y ejemplos. McGraw-Hill. ISBN 978-0070043572. OCLC  633760282.
  2. ^ "Multiprocesadores débilmente acoplados". www.edwardbosworth.com . Consultado el 11 de septiembre de 2018 .