Введение

Мультипроцессорный компьютер для игры в покер

Мультипроцессор Pluribus был одним из первых мультипроцессорных компьютеров, разработанным компанией BBN для использования в качестве коммутатора пакетов в сети ARPANET. Его конструкция впоследствии оказала влияние на компьютер BBN Butterfly. Разработка Pluribus началась в 1972 году, когда возникла потребность в интерфейсном процессоре сообщений второго поколения (IMP). К тому времени BBN уже установила IMP более чем на тридцати пяти узлах сети ARPANET. Эти IMP представляли собой миникомпьютеры Honeywell 316 и 516. Сеть быстро росла по нескольким направлениям: количество узлов, хостов и терминалов; объем трафика; и географический охват (включая планы, которые впоследствии были реализованы, по расширению сети с использованием спутниковой связи в Европу и на Гавайи). Была поставлена задача разработать модульную машину, которая в базовой конфигурации была бы меньше и дешевле, чем 316 и 516, но при этом могла бы масштабироваться для обеспечения в десять раз большей пропускной способности и поддержки в пять раз большего количества устройств ввода-вывода (I/O), чем 516. Среди сопутствующих целей были расширение возможностей адресации памяти и повышение надежности. Разработчики выбрали многопроцессорный подход из-за его перспективного потенциала в отношении модульности, соотношения стоимости и производительности, надежности, а также из-за того, что алгоритмы пакетной коммутации IMP хорошо подходили для параллельной обработки независимыми процессорами.

Оборудование

Pluribus состояла из двух или более стандартных 19-дюймовых стоек для электронного оборудования, каждая из которых была разделена на четыре отсека. Каждый отсек содержал шину обратной связи и независимый источник питания. Отсек мог содержать шину процессора, шину общей памяти или шину ввода-вывода. Специально разработанные соединители шин связывали отсеки между собой, позволяя процессорам обращаться к общей памяти и устройствам ввода-вывода. Pluribus с 6 процессорами использовался в качестве сетевого коммутатора для соединения пяти систем разделения времени Tenex/"Twenex" компании BBN с 378 терминалами, подключенными по прямым последовательным линиям и через модемные линии с набором номера. В качестве процессора Pluribus использовался Lockheed SUE, который был аналогичен PDP 11 от DEC.

Программное обеспечение

Программное обеспечение Pluribus реализовало симметричную мультипроцессорность MIMD. Программные процессы были реализованы с использованием невытесняющей мультипрограммности. Для планирования процессов использовалось аппаратное устройство, называемое псевдо-прерывающим устройством или PID, к которому имели доступ как программы, так и устройства ввода-вывода. Каждый процессор запускал собственную копию планировщика процессов, который считывал целое число из PID. Это значение использовалось для выбора процесса для запуска. Если программе или устройству требовалось сигнализировать другому процессу о необходимости запуска, оно записывало номер этого процесса в PID. PID выдавал процесс с наивысшим приоритетом из всех запрошенных и распределял его по всем процессорам. Важным аспектом программного обеспечения Pluribus была система "STAGE", которая обнаруживала системные ошибки и принимала меры для восстановления после них. Тактовые генераторы процессоров имели обработчики прерываний, реализующие сторожевые таймеры на всех процессорах. Если процессор прекращал работу, другой процессор обнаруживал это и инициировал восстановление. Процесс восстановления снимал все блокировки с общих ресурсов, освобождал выделенную память и перезапускал обработку на всех процессорах. Это было допустимо для маршрутизирующего узла ARPANET, поскольку любые потерянные пакеты в конечном итоге пересылались повторно.