Гетерогенный элементный процессор ( HEP ) [1] был представлен компанией Denelcor, Inc. в 1982 году. Архитектором HEP был Бертон Смит . Машина была разработана для решения задач гидродинамики для Баллистической исследовательской лаборатории . [2] Система HEP, как следует из названия, была собрана из множества гетерогенных компонентов — процессоров , модулей памяти данных и модулей ввода-вывода. Компоненты были соединены через коммутируемую сеть .
Один процессор, называемый PEM (Process Execution Module), в системе HEP (можно было подключить до шестнадцати PEM) был довольно необычным; с помощью «очереди слова состояния программы (PSW)» можно было одновременно поддерживать до пятидесяти процессов на оборудовании. Самая большая система, когда-либо поставленная, имела 4 PEM. Восьмиступенчатый конвейер инструкций позволял инструкциям из восьми различных процессов выполняться одновременно. Фактически, только одна инструкция из данного процесса могла присутствовать в конвейере в любой момент времени. Таким образом, полная пропускная способность процессора 10 MIPS могла быть достигнута только при восьми или более активных процессах; ни один отдельный процесс не мог достичь пропускной способности более 1,25 MIPS. Этот тип многопоточной обработки классифицирует сегодня HEP как процессор-баррель , в то время как его разработчики описывали его как конвейерный процессор MIMD [3] . Аппаратная реализация HEP PEM представляла собой эмиттерно-связанную логику .
Процессы классифицировались как процессы пользовательского уровня или уровня супервизора. Процессы пользовательского уровня могли создавать процессы уровня супервизора, которые использовались для управления процессами пользовательского уровня и выполнения ввода-вывода. Процессы одного класса должны были быть сгруппированы в одну из семи пользовательских задач и семи задач супервизора.
Каждый процессор, в дополнение к очереди PSW и конвейеру инструкций, содержал память инструкций, 2048 64-битных регистров общего назначения и 4096 константных регистров. Константные регистры отличались тем, что только процессы-супервизоры могли изменять их содержимое. Сами процессоры не содержали памяти данных; вместо этого модули памяти данных могли быть отдельно подключены к коммутируемой сети.
Память HEP состояла из полностью раздельной памяти инструкций (до 128 МБ) и памяти данных (до 1 ГБ). Пользователи видели 64-битные слова, но в действительности слова памяти данных были 72-битными с дополнительными битами, используемыми для состояния, см. следующий абзац, четности, тегирования и других целей.
HEP реализовал тип взаимного исключения , при котором все регистры и ячейки в памяти данных имели ассоциированные состояния «пусто» и «полное». Чтение из ячейки устанавливало состояние на «пусто», а запись в нее устанавливала состояние на «полное». Программист мог разрешить процессам останавливаться после попытки чтения из пустой ячейки или записи в полную ячейку, обеспечивая критические разделы.
Коммутируемая сеть [4] между элементами во многом напоминала современную компьютерную сеть. В сети были наборы узлов, каждый из которых имел три ссылки. Когда пакет прибывал в узел, он обращался к таблице маршрутизации и пытался переслать пакет ближе к месту назначения. Если узел становился перегруженным, все входящие пакеты передавались без маршрутизации. Пакеты, обработанные таким образом, имели повышенный уровень приоритета; когда несколько пакетов соперничали за один узел, пакет с более высоким уровнем приоритета направлялся раньше пакетов с более низким уровнем приоритета.
Другим компонентом коммутируемой сети была система sO с собственной памятью и множеством отдельных шин DEC UNIBUS, подключенных для дисков и других периферийных устройств. Система также имела возможность сохранять полные/пустые биты, которые обычно не видны напрямую. Первоначальная производительность системы ввода-вывода оказалась крайне неадекватной из-за высокой задержки при запуске операций ввода-вывода. Рон Натали (из BRL) и Бертон Смит спроектировали новую систему из запасных частей на салфетках в местном стейк-хаусе и ввели ее в эксплуатацию в течение следующей недели.
Основным языком программирования приложений HEP был уникальный вариант Fortran . Со временем были добавлены C , Pascal и SISAL . Синтаксис переменных данных, использующих биты «полностью пусто», добавлял «$» перед их именем. Таким образом, «A» будет называть локальную переменную, но $A будет блокирующей переменной «полностью пусто». Таким образом, была возможна тупиковая ситуация в приложении. Проблематично, что отсутствие «$» могло привести к непреднамеренной числовой неточности.
Первой операционной системой HEP была HEPOS. Майк Муусс участвовал в портировании Unix для Баллистической исследовательской лаборатории. HEPOS не была Unix-подобной операционной системой.
Хотя было известно, что у HEP плохое соотношение цены и производительности, он привлек внимание из-за нескольких революционных на тот момент особенностей. HEP имел производительность компьютера класса CDC 7600 в эпоху Cray-1 . Системы HEP были арендованы Лабораторией баллистических исследований (четыре системы PEM), Лос-Аламосом [1] , Аргоннской национальной лабораторией (один PEM), Агентством национальной безопасности и Shoko Ltd (Япония, 1 PEM). Немецкая компания Messerschmitt (три системы PEMS) — единственный клиент, который купил ее [5] . Denelcor также поставила систему с двумя PEM Университету Джорджии в обмен на помощь с программным обеспечением (система также была предложена Университету Мэриленда). [6] Messerschmitt был единственным клиентом, который использовал HEP для «реальных» приложений; другие клиенты использовали ее для экспериментов с параллельными алгоритмами. Система BRL использовалась для подготовки фильма с использованием программного обеспечения BRL-CAD в качестве ее единственного реального приложения. Более быстрые и крупные проекты для HEP-2 и HEP-3 были начаты, но так и не завершены. Архитектурная концепция позже будет воплощена под кодовым названием Horizon.
Внешнее изображение | |
---|---|
Фотография системы, установленной в BRL, доступна в Архиве компьютерной истории Майка Мусса. |