Введение
Линейка миникомпьютеров PDP-8 — это семейство 12-битных миникомпьютеров, произведенных компанией Digital Equipment Corporation (DEC). Он стал первым коммерчески успешным миникомпьютером, всего было продано более 50 000 экземпляров за время существования модели. Его базовая конструкция основана на новаторской системе LINC, но имеет более компактный набор инструкций, являющийся расширенной версией набора инструкций PDP-5. К схожим машинам DEC относятся PDP-12, представляющий собой модернизированную версию PDP-8 и концепций LINC, а также промышленная система управления PDP-14.
The PDP 8 is a family of 12 bit minicomputers that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. Its basic design follows the pioneering LINC but has a smaller instruction set, which is an expanded version of the PDP 5 instruction set. Similar machines from DEC are the PDP 12 which is a modernized version of the PDP 8 and LINC concepts, and the PDP 14 industrial controller system.
Обзор
Самая ранняя модель PDP 8, неофициально известная как "Straight 8", была представлена 22 марта 1965 года по цене 18 500 долларов (18 500 долларов в 1965 году эквивалентны приблизительно <расчетной сумме> в последние годы). Она использовала диодно-транзисторную логику, упакованную на картах с флип-чипом, в машине размером с небольшой бытовой холодильник. Это был первый компьютер, проданный менее чем за 20 000 долларов, что сделало его самым продаваемым компьютером в истории на тот момент. В 1966 году Straight 8 была заменена PDP 8/S, которая была доступна в настольном и стойковом исполнении. Использование однобитного последовательного арифметико-логического устройства (АЛУ) позволило PDP 8/S быть меньше и дешевле, хотя и медленнее, чем оригинальный PDP 8. Базовая модель 8/S продавалась менее чем за 10 000 долларов, став первой машиной, достигшей этой отметки. Более поздние системы (PDP 8/I и /L, PDP 8/E, /F и /M, PDP 8/A) вернулись к более быстрой, полностью параллельной реализации, но использовали гораздо менее дорогую логику MSI на транзисторах-транзисторах (TTL). Большинство сохранившихся PDP 8 относятся к этой эпохе. PDP 8/E широко распространена и высоко ценится, поскольку для неё было доступно множество типов устройств ввода-вывода. Последние коммерческие модели PDP 8, представленные в 1979 году, назывались "CMOS 8s" и были основаны на микропроцессорах CMOS. Они не были конкурентоспособны по цене, и предложение не имело успеха. Intersil продавала интегральные схемы в коммерческих масштабах до 1982 года под названием семейства Intersil 6100. Благодаря технологии КМОП они имели низкое энергопотребление и использовались в некоторых встроенных военных системах. Главным инженером, разработавшим первоначальную версию PDP 8, был Эдсон де Кастро, который позже основал Data General.
Архитектурное значение
PDP-8 сочетает в себе низкую стоимость и продуманную компьютерную архитектуру. Эта простота привела к другим сложностям. Программирование на нем было затруднительным, что иллюстрируют примеры в этой статье, а также обсуждение "страниц" и "полей". Значительная часть кода была занята реализацией необходимых механических операций, а не непосредственно алгоритмом. Например, вычитание числа требовало вычисления его дополнительного кода и последующего сложения; для реализации условного перехода необходимо было написать условный пропуск, обходящий переход, при этом пропуск кодировал условие, обратное желаемому. Некоторые амбициозные проекты не помещались в память или содержали ошибки, которые невозможно было исправить. Например, как указано ниже, случайная рекурсия подпрограммы приводила к ошибкам, которые было сложно отследить до этой подпрограммы. С развитием технологий и снижением стоимости логических элементов и памяти, время программиста становилось все более ценным ресурсом. В последующих компьютерных архитектурах акцент был сделан на удобстве программирования, обычно за счет использования более крупных и интуитивно понятных наборов инструкций. В конечном итоге, большая часть машинного кода генерировалась компиляторами и генераторами отчетов. Компьютеры с упрощенным набором команд вернулись к принципам PDP-8, заключающимся в выполнении нескольких операций за один цикл, чтобы максимизировать скорость выполнения, хотя новые компьютеры используют значительно более длинные команды.
Основные инструкции
000 – И – Логическое И операнда памяти с AC. 001 – TAD – Дополнение до двух и прибавление операнда памяти к <L,AC> (12-битное знаковое число (AC) с переносом в L). 010 – ISZ – Увеличить операнд памяти и пропустить следующую инструкцию, если результат равен нулю. 011 – DCA – Записать AC в операнд памяти и очистить AC. 100 – JMS – Перейти к подпрограмме (сохраняя адрес возврата в первом слове подпрограммы!). 101 – JMP – Перейти. 110 – IOT – Передача данных ввода/вывода (см. ниже). 111 – OPR – Микрокодируемые операции (см. ниже).
ОПР (OperateRate)
Многие операции выполняются с использованием OPR, включая большинство условных переходов. OPR не обращается к ячейке памяти; условное выполнение достигается условным пропуском следующей инструкции, которая обычно является JMP. Инструкция OPR называлась "микрокодированной". Это не имело того значения, которое придает этому слову современность (когда программа более низкого уровня извлекает и интерпретирует инструкцию OPR), а означало, что каждый бит машинного слова определяет определенное действие, и программист мог выполнять несколько действий за один цикл инструкции, устанавливая несколько битов. На практике программист мог записывать несколько мнемонических кодов инструкций рядом друг с другом, а ассемблер объединял их операцией OR для формирования фактического машинного слова. Многие устройства ввода-вывода поддерживают "микрокодированные" инструкции IOT. Микрокодированные действия выполняются в четко определенной последовательности, разработанной для максимального использования множества комбинаций. Инструкции OPR объединены в группы. Биты 3, 8 и 11 определяют группу инструкции OPR, поэтому невозможно комбинировать микрокодированные действия из разных групп. Одно действие (и соответствующий бит), которое одинаково для всех групп, – это бит 4, CLA. При установке этого бита, аккумулятор обнуляется.
Примеры
Следующие примеры демонстрируют код на языке ассемблера PDP-8, написанный так, как это могло бы быть сделано для ассемблера PAL III.
Перерывы
На шине ввода-вывода PDP 8 имеется одна линия прерываний. Процессор обрабатывает любое прерывание, отключая дальнейшие прерывания и выполняя JMS по адресу 0000. Поскольку написание повторно входящих подпрограмм затруднено, встраивание прерываний (создание вложенных прерываний) сложно и обычно не выполняется; каждое прерывание выполняется до завершения, и прерывания повторно включаются непосредственно перед выполнением инструкции JMP I 0, которая возвращает из прерывания. Поскольку на шине ввода-вывода есть только одна линия прерываний, возникновение прерывания не сообщает процессору об источнике прерывания. Вместо этого, подпрограмма обработки прерывания должна последовательно опрашивать каждое активное устройство ввода-вывода, чтобы определить, является ли оно источником. Код, выполняющий это, называется цепочкой проверок, поскольку он состоит из серии инструкций ввода-вывода PDP 8 типа "проверить и пропустить, если установлен флаг". (Не редкостью было, когда цепочка проверок достигала конца, не обнаружив ни одного устройства, требующего обслуживания.) Относительный приоритет прерываний устройств ввода-вывода определяется их положением в цепочке проверок: если прерываются несколько устройств, то сначала обслуживается устройство, проверенное раньше всего в цепочке.
Нелицензированные клоны
СССР выпускал миникомпьютеры «Саратов-1» и «Саратов-2», которые были клонами PDP 8 и PDP 8/E соответственно. В Болгарии в 70-е и 80-е годы производился миникомпьютер IZOT 0310, являвшийся клоном PDP 8L.