Введение

C. mmp — это ранняя многопроцессорная система с множественным потоком команд и множественным потоком данных (MIMD), разработанная в Университете Карнеги — Меллона (CMU) Уильямом Вульфом в 1971 году. Обозначение C. mmp произошло от системы обозначений PMS, предложенной Гордоном Беллом и Алленом Ньюэллом, где центральный процессор (CPU) обозначался как C, модификации отмечались точкой, а mmp расшифровывалось как Multi Mini Processor. По состоянию на 2020 год машина экспонируется в CMU, в здании Уэна, на девятом этаже.

Операционная система

Операционная система (ОС) получила название Hydra. Она была построена на основе концепции возможностей, объектно-ориентированной, многопользовательской и представляла собой микроядро. Системные ресурсы представлялись в виде объектов и защищались посредством механизмов возможностей. ОС и большая часть прикладного программного обеспечения были написаны на языке программирования BLISS 11, который требовал перекрестной компиляции на PDP 10. В ОС использовалось очень мало ассемблера. Среди языков программирования, доступных в системе, был вариант ALGOL 68 с расширениями для поддержки параллельных вычислений, позволявшими эффективно использовать C. mmp. Компилятор ALGOL работал непосредственно на ОС Hydra.

Надежность

Поскольку общая надежность системы зависела от функционирования всех 16 процессоров, возникали серьезные проблемы с надежностью аппаратного обеспечения в целом. Если среднее время наработки на отказ (MTBF) одного процессора составляло 24 часа, то общая надежность системы равнялась 16/24 часа, то есть примерно 40 минутам. В целом, система обычно работала от двух до шести часов. Многие из этих отказов были вызваны временными сбоями в многочисленных специализированных схемах, добавленных к процессорам. Было приложено много усилий для повышения надежности аппаратного обеспечения, и когда процессор начинал явно выходить из строя, он исключался из общего пула и подвергался диагностике в течение нескольких часов. После успешного прохождения первого этапа диагностики он возвращался в систему как процессор ввода-вывода и не выполнял прикладной код (но его периферийные устройства становились доступными); при этом диагностика продолжалась. Если он успешно проходил и этот этап после нескольких дополнительных часов, он восстанавливался в качестве полноценного процессора. Аналогично, если обнаруживался дефектный блок памяти (одна страница), он исключался из пула доступных страниц, и операционная система игнорировала эту страницу до получения иных указаний. Таким образом, операционная система стала одним из первых примеров отказоустойчивой системы, способной справляться с неизбежно возникающими аппаратными проблемами.