Дэнас аппарат инструкция 2001

PDP-8-это 12-разрядный миникомпьютер, который был произведен Digital Equipment Corporation (DEC). Это был первый коммерчески успешный миникомпьютер. Более 50 000 единиц которого были проданы за весь срок службы модели. Его базовая конструкция соответствует новаторской LINC , но имеет меньший набор команд, который является расширенной версией набора команд PDP-5.[1] Аналогичные машины DEC являются PDP-12, который является модернизированной версией концепций PDP-8 и LINC, и промышленной системой контроллера PDP-14.

Открытый PDP-8/E с логическими модулями за передней панелью и одним двойным

приводом TU56 DECtape сверху

Самая ранняя модель PDP-8, неофициально известная как [2] (что эквивалентно примерно 150 000 долларов в 2019году [3]). Он использовал диодно–транзисторную логику, упакованную на флип-чиповых картах в машину размером с небольшой бытовой холодильник. Этобыл первый компьютер. Который был продан менее чем за 20 000 долларов,что сделало его самым продаваемым компьютером в истории в то время.[5][неудачная проверка][6][неудачная проверка] Straight-8 был вытеснен в 1966 году PDP-8/S. Который был доступен в настольных и стоечных моделях. Использование одноразрядного последовательного

арифметико-логический блок (ALU) позволил PDP-8/S быть меньше и дешевле. Хотя и медленнее. Чем оригинальный PDP-8. Базовая 8/S продана за менее чем 10 000 долларов. Первая машина. Достигшая этого рубежа.[4][7]

Более поздние системы (PDP-8/I и /L. PDP-8/E, /F и /M. А также PDP-8/A) вернулись к более быстрой. Полностью параллельной реализации. Но используют гораздо менее дорогостоящую транзисторно–транзисторную логику (TTL) MSI logic. Большинство сохранившихся PDP-8 относятся к этой эпохе. PDP-8/E распространен и хорошо известен. Потому что для него было доступно много типов устройств ввода-вывода.

Последние коммерческие модели PDP-8, представленные в 1979 году. Называются КМОП-микропроцессорах. Цены на них не были конкурентоспособными. И предложение провалилось. Intersil продавала интегральные схемы коммерчески до 1982 года как Intersil 6100 семья. Благодаря своей КМОП-технологии они имели низкую потребляемую мощность и использовались в некоторых встроенных военных системах.

Главным инженером , разработавшим первоначальную версию PDP-8, был Эдсон де Кастро, который позже основал компанию Data General.]

Архитектурное значение

PDP-8 сочетает в себе низкую стоимость,

простоту [2], расширяемость и тщательную разработку стоимости. Самое большое историческое значение имело то. Что низкая стоимость PDP-8 и большой объем сделали компьютер доступным для многих новых клиентов для многих новых применений. Его непреходящее значение-как исторический пример ценностно-инженерного[9] компьютерного дизайна.

Низкая сложность привела к другим затратам. Это сделало программирование громоздким. Как видно из примеров в этой статье и из обсуждения Большая часть кода выполняла необходимую механику. А не устанавливала алгоритм. Например, вычитание числа включает в себя вычисление его дополнения к двум. А затем добавление его; запись условного прыжка включает в себя запись условного пропуска вокруг прыжка. Пропуск кодирует условие отрицательное к желаемому.

Некоторые амбициозные проекты программирования не смогли вписаться в память или разработали дефекты дизайна. Которые не могли быть решены. Например, как уже отмечалось ниже, непреднамеренная рекурсия подпрограммы создает дефекты. Которые трудно проследить до соответствующей подпрограммы.

По мере того. Как развитие дизайна уменьшало затраты логики и памяти. Время программиста становилось относительно более важным.

[10] Последующие компьютерные разработки подчеркивали простоту программирования. Обычно используя более крупные и более интуитивные наборы команд.[11]

В конце концов большая часть машинного кода была сгенерирована компиляторами и генераторами отчетов. Компьютер с уменьшенным набором команд полностью вернулся к акценту PDP-8 на простом наборе команд и достижении нескольких действий в одном цикле команд. Чтобы максимизировать скорость выполнения. Хотя новые компьютеры имеют гораздо более длинные слова команд.

Регистры PDP-8
11 109876543210 (положение бита)
Основные регистры
ПТ Кумулятор переменноготока
Счетчик программ
ПК Pрограмма Cунтер
Флаги состояния
  Л Lчернильный регистр
Внутренние регистры (недоступные по коду)
МБР Память-буферный регистр
МАР Регистр адресов памяти

PDP-8 использовал идеи нескольких 12-битных предшественников. В первую очередь

LINC , разработанный W. A. Clark и C. E. Molnar, которые были вдохновлены миникомпьютером Seymour CrayCDC 160.[1][13]

PDP-8 использует 12 бит для своего размера слова и арифметики (для целых чисел без знака от 0 до 4095 или целых чисел со знаком от -2048 до +2047).

Однако программное обеспечение может выполнять арифметику с множественной точностью. Переводчик был доступен для плавающей точкой операции, например, который используется в 36-бит с плавающей запятой, представление с двух слов (24-бит) мантиссы и одно слово экспонента.[14] в зависимости от скорости и памяти ограничения, прп-8 может выполнить расчеты, аналогичные более дорогим в современных ЭВМ, как, например, в IBM 1130 различные модели системы IBM/360, в то же время легче взаимодействовать с внешними устройствами.

Адресное пространство памяти также составляет 12 бит. Поэтому базовая конфигурация PDP-8 имеет

основную память из 4096 (212) двенадцатиразрядных слов. Дополнительный блок расширения памяти может переключать банки памяти с помощью инструкции IOT. Память представляет собой память с магнитным сердечником со временем цикла 1,5 микросекунд (0,667 МГц), так что типичная двухтактная (Fetch. Execute) опорная инструкция памяти выполняется со скоростью 0,333 МИП. Карманная справочная карта 1974 года для PDP-8/E дает базовое время инструкции 1,2 микросекунды. Или 2,6 микросекунды для инструкций. Которые ссылаются на память.

PDP-8 был разработан частично для обработки современных телекоммуникаций и текста.

В то время широко использовались шестибитные коды символов. А двенадцатибитные слова PDP-8 могут эффективно хранить два таких символа. Кроме того, шестиразрядный код телепринтера. Называемый кодом телетайпа или TTS. Широко использовался службами телеграфных сообщений. И раннее приложение для PDP-8 было набрано с использованием этого кода.[15]

Инструкции PDP-8 имеют 3-битный код операции. Поэтому существует только восемь инструкций. Ассемблер предоставляет программисту больше мнемоники команд. Переводя инструкции ввода-вывода и режима работы в комбинации операционных кодов и полей команд.

Он также имеет только три видимых программистом регистра: 12-битный аккумулятор (AC), счетчик программ (PC) и флаг переноса, называемый

Для ввода и вывода PDP-8 имеет одно прерывание. Общее для всех устройств. Шину ввода-вывода. Доступную по командам ввода-вывода, и канал прямого доступа к памяти (DMA). Запрограммированная шина ввода-вывода обычно работает на низко-и среднескоростных периферийных устройствах. Таких как принтеры, телетайпы, перфораторы бумажных лент и считыватели. В то время как DMA используется для экранов электронно-лучевых трубок со световым пером, аналого-цифровых преобразователей

, цифроаналоговых преобразователей, ленточных накопителейи дисководов.

Чтобы сэкономить деньги. Конструкция использовала недорогую основную память для многих целей. Которые обслуживаются более дорогими триггерными регистрами в других компьютерах, такими как вспомогательные счетчики и связь подпрограмм.

Базовые модели используют программное обеспечение для умножения и деления. Для более быстрой математики Расширенный арифметический элемент (EAE) предоставляет инструкции умножения и деления с дополнительным регистром-регистром множителя/частного (MQ).

EAE был вариантом на оригинальном PDP-8,[17] 8/I,[18] и 8/E. Но он является неотъемлемой частью микропроцессора Intersil 6100.

PDP-8 оптимизирован для простоты конструкции. По сравнению с более сложными машинами. Ненужные функции были удалены. И логика используется совместно. Когда это возможно. Инструкции используют autoincrement. Autoclear и косвенный доступ. Чтобы увеличить скорость программного обеспечения. Уменьшить использование памяти и заменить недорогую память дорогими регистрами.

Электроника базового процессора PDP-8 имеет всего четыре 12-разрядных регистра: накопитель. Счетчик программ,

регистр буфера памятии регистр адреса памяти. Чтобы сэкономить деньги. Они служили нескольким целям в разные моменты рабочего цикла. Например, буферный регистр памяти предоставляет арифметические операнды. Является частью регистра команд и хранит данные для перезаписи основной памяти. (При этом восстанавливаются основные данные. Уничтоженные при чтении.)

Благодаря своей простоте. Ранние модели PDP-8 были менее дорогими. Чем большинство других коммерчески доступных компьютеров. Однако они использовали дорогостоящие методы производства. Часто используемые для прототипов. Они использовали тысячи очень маленьких. Стандартизированных логических модулей с золотыми разъемами. Интегрированных дорогой, сложной

, обернутой проволокой объединительной планой в большой шкаф.

В более поздней модели 8/S. Представленной в августе 1966 года, два различных логических напряжения увеличили разветвление недорогой диодно–транзисторной логики. 8/S также уменьшили количество логических элементов. Используя последовательный однобитный путь передачи данных для выполнения арифметических операций. Процессор PDP-8/S имеет всего около 519 логических элементов. Для сравнения. Небольшие микроконтроллеры (по состоянию на 2008 год) обычно имеют 15 000 или более.

Сокращение электроники позволило сделать корпус гораздо меньше. Размером с хлебницу. 8/S был разработан Солом Динманом.[20]

Еще более поздний PDP-8/E является более крупным. Более способным компьютером. Но в дальнейшем реинжинирированным для лучшей ценности. Он использует более быструю транзисторно–транзисторную логикув интегральных схемах. Основная память была переработана. Это позволяет расширить с меньшими затратами. Потому что он использует OMNIBUS вместо обернутой проволокой объединительной платы на более ранних моделях. (Личный кабинет разработки PDP-8/E можно прочитать на Вики Истории техники и технологий.

)

Передняя панель PDP-8/S

Передняя панель PDP-8/L

Передняя панель PDP-8/I

Передняя панель PDP-8/E

Передняя панель PDP-8/F

Передняя панель PDP-8/A 400

Общий объем продаж семейства PDP-8 оценивается более чем в 300 000 машин. Были изготовлены следующие модели:

Краткое описание моделей PDP-8[22]
МодельОписаниеГодЦенаПроизведенное количествоВес
PDP-8Полудискретные компоненты. У него были ДТЛ.1965$18,0001450250 фунтов (113 кг)[23]
ЛИНК-8Может работать как с кодом LINC, так и с кодом PDP-81966$38,500142
PDP-8/SБолее дешевая серийная версия PDP-8

1966$10,000102484 фунта (38 кг)[24]
PDP-8/IПервый PDP-8, изготовленный из стандартных микросхем TTL1968$12,8003698250 фунтов (110 кг)[25]
PDP-8/ЛБолее дешевый аналог PDP-8/I1968$8,500390280 фунтов (36 кг)[26]
PDP-12PDP-8/I с поддержкой инструкций LINC (заменил LINC-8)1969$27,900755
PDP-8/EМеньшее количество более крупных плат для повышения цены и эффективности1970$6,50090 фунтов (41 кг) (типичный)[27]
PDP-8/FБолее дешевый аналог PDP-8/E197257 фунтов (26 кг) (типичный)[28]
PDP-8/MOEM PDP-8/F с измененной передней панелью

1972$5,000[29]57 фунтов (26 кг) (типичный)[30]
PDP-8/AЛогика LSI позволила процессору поместиться на одной плате1974$1,835
Intersil 6100Однокристальный PDP-8-совместимый микропроцессор (используется в VT78)1975[31][32]
Харрис 6120CMOS single-chip PDP-8-совместимый микропроцессор (используется в текстовых процессорах DECmate)1976[32]

Реализации последних дней

PDP-8 легко эмулируется, так как его набор команд намного проще. Чем современные архитектуры.

Энтузиасты создали целые PDP-8 с использованием отдельных устройств FPGA.

Несколько программных симуляций PDP-8 доступны в Интернете. А также аппаратные повторные реализации с открытым исходным кодом.[33][34] Лучшие из них правильно выполняют операционные системы DEC и диагностическое программное обеспечение. Программное моделирование часто имитирует поздние модели PDP-8 со всеми возможными периферийными устройствами. Даже они используют лишь крошечную часть возможностей современного персонального компьютера.

Одна из первых коммерческих версий виртуальной машины PDP-8/S работала на Kaypro 386 (компьютер на базе 80386) и была написана на компьютерном языке C (до завершения разработки стандарта ANSI-C) и ассемблере Дэвидом Бичером из Денвера. Штат Колорадо.

Он заменил вышедший из строя компьютер PDP-8/S. Управлявший машиной подачи топлива на реакторе № 85 Атомной электростанции в Платтвилле. Штат Колорадо. Фут-Сент-Врэйн. Он был пересмотрен компанией Rockwell International и безупречно выполнялся в течение 2,5 лет во время эксплуатации топливозаправочной машины. В то время как он использовался для удаления топлива из активной зоны реактора и вывода установки из эксплуатации.

Он включал в себя имитацию загрузчика бумажной ленты и переднюю панель.

Вход/выход

Системы ввода-вывода претерпели огромные изменения в эпоху PDP-8. Ранние модели PDP-8 используют интерфейс передней панели. Считыватель бумажной ленты и телетайпный принтер с дополнительным перфоратором бумажной ленты. Со временем появились такие системы ввода-вывода. Как магнитная лента, тупые клеммы RS-232 и токового контура , считыватели перфокарт и диски с фиксированной головкой. К концу эры PDP-8 дискеты и картриджи с подвижными головками стали популярными устройствами ввода-вывода. Современные энтузиасты создали стандартные

адаптеры IDE для жестких дисков PC style IDE для реальных и имитируемых компьютеров PDP-8.

Поддерживается несколько типов ввода-вывода:

  • Встроенныев объединительную плату специальные слоты для контроллеров ввода-вывода
  • Омнибус (объединительная плата из недифицированных слотов системной шины). Введенный в PDP-8/E. (Подробности описаны в упомянутой ниже статье IEEE.)

Поддерживается упрощенная. Недорогая форма DMA под названием Метод В трех последовательных циклах памяти процессор обновляет количество слов. Обновляет адрес передачи и сохраняет или извлекает фактическое слово данных ввода-вывода.

Одноцикловый разрыв данных эффективно утрояет скорость передачи DMA. Поскольку только целевые данные должны быть переданы в основную память и из нее. Однако устройства ввода-вывода нуждаются в большей электронной логике для управления собственным количеством слов и регистрами адресов передачи. К тому времени. Когда PDP-8/E был представлен. Электронная логика стала менее дорогой, а

Средства программирования

Ранние системы PDP-8 не имели операционной системы. Только переднюю панель с переключателями запуска и остановки. Системы разработки программного обеспечения для серии PDP-8 начинались с самого простого ввода на передней панели необработанного

двоичного машинного кода (загрузочная запись).

В средние века были разработаны различные бумажные ленточные Многие утилиты стали доступны на бумажной ленте. Исходный код языка ассемблера PAL-8 часто хранился на бумажной ленте. Считывался в память и сохранялся на бумажной ленте. ПАЛ собрал из бумажной ленты в память. Были доступны бумажные ленточные версии ряда языков программирования. Включая фокальный интерпретатор DEC[35] и компилятор FORTRAN 4K и среду выполнения.

К концу эпохи PDP-8 операционные системы, такие как OS/8 и COS-310, позволили создать традиционный редактор линейных режимов и систему разработки компиляторов командной строки с использованием таких языков. Как PAL-III assembly language , FORTRAN, BASICи DIBOL.

Были доступны достаточно современные и продвинутые операционные системы реального времени (RTOS) и многопользовательские системы упреждающей многозадачности (RTS-8). А также многопользовательские коммерческие системы (COS-300 и COS-310) и выделенная однопользовательская система обработки текстов (WPS-8).

Имелась также система разделения времени

TSS-8. TSS-8 позволяет нескольким пользователям входить в систему через 110-бодовые терминалы. А также редактировать. Компилировать и отлаживать программы.

Языки включают специальную версию BASIC. Подмножество FORTRAN. Аналогичное FORTRAN-1 (без пользовательских подпрограмм или функций). Подмножество ALGOL, FOCAL и ассемблер PAL-D.

Изрядное количество пожертвованного пользователем программного обеспечения для PDP-8 было доступно от DECUS, Общества пользователей Digital Equipment Corporation. И часто приходило с полными списками источников и документацией.

Набор инструкций

Три старших бита 12-битного командного слова (обозначенные битами от 0 до 2) являются кодом операции.

Для шести операций. Относящихся к памяти. Биты с 5 по 11 предоставляют 7-битный адрес. Бит 4, если он установлен. Говорит о завершении адреса с использованием 5 старших битов программного счетчика регистр (PC) означает. Что адресное местоположение находится в пределах тех же 128 слов. Что и инструкция. Если бит 4 чист. То используются нули. Так что адресное местоположение находится в пределах первых 128 слов памяти. Бит 3 указывает косвенность; если он установлен, то адрес. Полученный. Как описано выше. Указывает на 12-битное значение в памяти. Которое дает фактический эффективный адрес для инструкции; это позволяет операндам находиться в любом месте памяти за счет дополнительного слова.

Инструкция JMP не работает со словом памяти. За исключением случаев. Когда указана косвенность. Но имеет те же битовые поля.

0234511
ОперацияЯЗетСмещение
Страницы памяти

Это использование слова инструкции делит память 4096 слов на 128 слов страниц; бит 4 инструкции выбирает либо текущую страницу. Либо страницу 0 (адреса 0000-0177 в восьмеричномформате ). Память на странице 0 стоит дорого. Так как переменные. Размещенные здесь. Могут быть адресованы непосредственно с любой страницы.

(Кроме того. Адрес 0000-это место. Где должна начинаться любая подпрограмма службы прерывания. А адреса 0010-0017 обладают особым свойством автоматического приращения. Предшествующего любой косвенной ссылке через них.)

Стандартный ассемблер помещает постоянные значения для арифметики на текущую страницу. Аналогично, переходы между страницами и вызовы подпрограмм используют косвенный адрес на текущей странице.

Важно было написать процедуры. Чтобы они укладывались в 128-словные страницы. Или организовать процедуры. Чтобы минимизировать переходы страниц. Поскольку ссылки и переходы за пределы текущей страницы требуют дополнительного слова. Следовательно. Много времени было потрачено на то. Чтобы искусно сохранить одно или несколько слов. Программисты намеренно помещали код в конец страницы. Чтобы обеспечить свободный переход на следующую страницу по мере увеличения ПК.

Основные инструкции

000 – И – И операнд памяти с переменным током.
Дополнение 001 – TAD – Two добавляет12-битное знаковое значение (AC) w. carry in L).
010 – ISZ – Увеличьте операнд памяти и пропустите следующую инструкцию. Если результат равен нулю.
011 – DCA – Ввод переменного тока в операнд памяти и очистка переменного тока.
100 – JMS – переход к подпрограмме (сохранение обратного адреса в первом слове подпрограммы!).
101 – JMP – прыжок.
110 – IOT – Передача ввода/вывода (см. Ниже).
111 – OPR – микрокодированные операции (см. ниже).

Инструкции IOT (Input-Output Transfer)

Процессор PDP-8 определял несколько инструкций IOT. Но просто обеспечивал основу. Большинство инструкций IOT были определены отдельными устройствами ввода-вывода.

0238911
6=IOTУстройствоФункция
Устройство

Биты с 3 по 8 инструкции IOT выбирают устройство ввода-вывода. Некоторые из этих адресов устройств стандартизированы по соглашению:

  • 00 обрабатывается процессором и не отправляется ни на одно устройство ввода-вывода (см.
  • 01 обычно является высокоскоростным считывателем бумажной ленты.
  • 02-это высокоскоростной перфоратор бумажной ленты.
  • 03-это консольная клавиатура (и любой связанный с ней низкоскоростной считыватель бумажной ленты).
  • 04-консольный принтер (и любой связанный с ним низкоскоростной перфоратор бумажной ленты).

Инструкции для устройства 0 влияют на процессор в целом. Например, ION (6001) включает обработку прерываний. А IOFF (6002) отключает ее.

Функция

Биты с 9 по 11 инструкции IOT выбирают функции. Которые выполняет устройство. Простые устройства (такие как устройство чтения бумажной ленты и перфоратор. Консольная клавиатура и принтер) используют биты стандартными способами:

  • Бит 11 заставляет процессор пропустить следующую команду. Если устройство ввода-вывода готово.
  • Бит 10 очищает переменный ток.
  • Бит 9 перемещает слово между AC и устройством. Инициирует другую передачу ввода-вывода и очищает флаг

Эти операции выполняются в четко определенном порядке. Что дает полезные результаты. Если установлено более одного бита.

Более сложные устройства. Такие как дисководы. Используют эти 3 бита в зависимости от конкретного устройства. Как правило. Устройство декодирует 3 бита. Чтобы дать 8 возможных функциональных кодов.

OPR (OPeRate)

Многие операции выполняются с помощью OPR. Включая большинство условных выражений. OPR не обращается к ячейке памяти; условное выполнение достигается условным пропуском одной инструкции. Которая обычно является JMP.

Инструкция OPR была названа Это не означало то. Что слово означает сегодня (что программа более низкого уровня извлекла и интерпретировала инструкцию OPR). Но означало. Что каждый бит слова инструкции определяет определенное действие. И программист мог достичь нескольких действий в одном цикле команд. Установив несколько битов. В использовании программист может написать несколько мнемоник инструкций рядом друг с другом. И ассемблер объединяет их с ИЛИ для разработки фактического слова инструкции. Многие устройства ввода/вывода поддерживают

Микрокодированные действия происходят в четко определенной последовательности. Предназначенной для максимизации полезности многих комбинаций.

Инструкции OPR приходят в группах. Биты 3, 8 и 11 идентифицируют Группу инструкции OPR. Поэтому невозможно объединить микрокодированные действия из разных групп.

Группа 1

 00 01 02 03 04 05 06 07 08 09 10 11 ___________________________________ | 1| 1| 1| 0| | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__| |CLA CMA RAR BSW CLL CML RAL IAC Порядок исполнения 1 1 2 2 4 4 4 3 
7200 – CLA – Clear Аккумулятор
7100 – CLL – Очистить бит L
7040 – CMA – Ones Комплементарный аккумулятор
7020 – CML – Дополнение L Бит
7002 – BSW – Byte Swap 6-bit

В большинстве случаев операции упорядочены таким образом. Чтобы их можно было комбинировать наиболее полезными способами. Например, объединение CLA (CLear Accumulator). CLL (CLear Link) и IAC (Increment ACcumulator) сначала очищает AC и Link. А затем увеличивает аккумулятор. Оставляя его равным 1. Добавление RAL в смесь (so CLA CLL IAC RAL) приводит к тому. Что аккумулятор очищается. Увеличивается. А затем поворачивается влево. Оставляя его равным 2. Таким образом. Небольшие целочисленные константы помещались в накопитель с помощью одной команды.

Комбинация CMA IAC. Которую ассемблер позволяет вам сокращенно называть CIA. Производит арифметическую обратную переменную AC: отрицание с двойным дополнением. Поскольку инструкции вычитания не существует. Только сложение с двойным дополнением (TAD). Вычисляющее разность двух операндов. Требует сначала отрицания вычитания.

Команда OPR группы 1, не имеющая ни одного из установленных микропрограммированных битов. Не выполняет никаких действий. Программист может написать NOP (No Operation). Чтобы собрать такую инструкцию.

Группа 2, Или Группа

 00 01 02 03 04 05 06 07 08 09 10 11 ___________________________________ | 1| 1| 1| 1| | | | | 0| | | 0| |__|__|__|__|__|__|__|__|__|__|__|__| |CLA SZA OSR SMA SNL HLT 2 1 1 1 3 3 
7600 – CLA – Clear AC
7500 – SMA – Skip on AC)
7440 – SZA – Пропустить AC = 0 (или группа)
7420 – SNL – Пропустить L ≠ 0 (или группа)
7404 – OSR – логически ‘или’ переключатели на передней панели с переменным током
7402 – HLT – Halt

Когда бит 8 очищен. Выполняется пропуск. Если какое-либо из указанных условий истинно. Например,

Команда OPR группы 2, которая не имеет ни одного из набора микропрограммированных битов. Является другой инструкцией No-Op.

Группа 2 И Группа

 00 01 02 03 04 05 06 07 08 09 10 11 ___________________________________ | 1| 1| 1| 1| | | | | 1| | | 0| |__|__|__|__|__|__|__|__|__|__|__|__| |CLA SNA OSR SPA SZL HLT 2 1 1 1 3 2 
7410 – SKP – Пропустить безоговорочно
7610 – CLA – Clear AC
7510 – SPA – Пропустить AC ≥ 0 (и группа)
7450 – SNA – Skip on AC ≠ 0 (и группа)
7430 – SZL – Пропустить на L = 0 (и группа)

Когда бит 8 установлен. Группа 2 или условие пропуска инвертируется по законам Де Моргана: пропуск не выполняется. Если какое-либо из условий группы 2 или условий истинно. Что означает. Что всеЕсли ни один из битов 5-7 не установлен. То пропуск является безусловным.

Группа 3

Неиспользуемые битовые комбинации OPR определяются как третья группа микропрограммируемых действий. В основном влияющих на регистр MQ (Multiplier/Quotient). Регистр MQ и инструкции расширенного арифметического элемента (EAE) являются необязательными и существуют только при покупке опции EAE.[36]

 00 01 02 03 04 05 06 07 08 09 10 11 ___________________________________ | 1| 1| 1| 1| | | | | | | | 1| |__|__|__|__|__|__|__|__|__|__|__|__| |CLA SCA \_ _/ | MQA MQL КОД 1* 2 2 2 3 
7601 – CLA – Clear AC
7501 – MQA – Множитель с переменным током (логический или MQ в AC)
7441 – SCA – Шаговый счетчик нагрузки в переменный ток
7421 – MQL – Коэффициент умножения нагрузки (передача переменного тока в MQ. Clear AC)
7621 – CAM – CLA + MQL очищает как AC, так и MQ.

Обычно CLA и MQA были объединены для передачи MQ в AC. Еще одна полезная комбинация-MQA и MQL. Для обмена двумя регистрами.

Три бита задали команду умножения/деления для выполнения:

7401 – Нет работы
7403 – SCL – Шаг счетчика нагрузки (немедленное слово следует. PDP-8/I и выше)
7405 – МУЙ – Умножить
7407 – DVI – Divide
7411 – NMI – Нормализация
7413 – SHL – Сдвиг влево (немедленно следует слово)
7415 – ASR – Арифметический сдвиг вправо
7417 – ЛСР – Логический сдвиг вправо

Управление памятью

Стек памяти ядра PDP-8/I

Один из трех взаимосвязанных модулей. Составляющих плоскость памяти ядра PDP-8.

Один из трех взаимосвязанных модулей. Составляющих плоскость памяти ядра PDP-8. Это середина из трех и содержит массив настоящих ферритовых сердечников.

Один из трех взаимосвязанных модулей. Составляющих плоскость памяти ядра PDP-8.

12-битное слово может иметь 4096 различных значений. И это максимальное количество слов. К которым исходный PDP-8 может обращаться косвенно через указатель слова. По мере того как программы усложнялись и цена памяти падала. Становилось желательным расширить этот предел.

Для поддержания совместимости с уже существующими программами новое оборудование вне оригинальной конструкции добавляло биты высокого порядка к эффективным адресам. Генерируемым программой. Контроллер расширения памяти расширяет адресную память в 8 раз. До 32 768 слов. Это расширение было сочтено достаточным. Потому что. С основной памятью. Стоившей тогда около 50 центов за слово. Полный 32K памяти будет равен стоимости процессора.

Каждый 4K памяти называется полем. Контроллер расширения памяти содержит два трехразрядных регистра: DF (Поле данных) и IF (поле команд). Эти регистры задают поле для каждой ссылки на память процессора. Позволяя в общей сложности 15 бит адреса. Регистр IF указывает поле для выборки команд и прямых ссылок на память; регистр DF указывает поле для косвенных обращений к данным. Программа, работающая в одном поле. Может ссылаться на данные в одном поле с помощью прямой адресации. А на данные в другом поле-с помощью косвенной адресации.

Набор инструкций ввода-вывода в диапазоне от 6200 до 6277 обрабатывается контроллером расширения памяти и предоставляет доступ к регистрам DF и IF. Инструкция 62X1 (CDF. Change Data Field) устанавливает поле данных в X. Аналогично 62X2 (CIF) устанавливает поле инструкции. А 62X3-оба. Ранее существовавшие программы никогда не выполняли бы CIF или CDF; регистры DF и IF указывали бы на одно и то же поле. Единственное поле. К которому эти программы были ограничены. Эффект инструкции CIF был отложен. Чтобы совпасть со следующей инструкцией JMP или JMS. Так что выполнение CIF не вызовет скачка.

Для многопольных программ было сложнее иметь дело с границами полей и регистрами DF и IF. Чем это было бы. Если бы они могли просто генерировать 15-битные адреса. Но дизайн обеспечивал обратную совместимость и соответствовал 12-битной архитектуре. Используемой в PDP-8. Сравните более поздний Intel 8086, 16-разрядные адреса памяти которого расширяются до 20 бит. Объединяя их с содержимым указанного или подразумеваемого регистра сегмента.

Расширенная схема памяти позволяет существующим программам обрабатывать увеличенную память с минимальными изменениями. Например, 4K FOCAL обычно имел около 3K кода. И только 1K оставалось для пользовательской программы и данных. С помощью нескольких патчей FOCAL может использовать второе поле 4K для пользовательских программ и данных. Кроме того, дополнительные поля 4K могут быть выделены отдельным пользователям. Превращая 4K FOCAL в многопользовательскую систему разделения времени.

Виртуализация

На PDP-8/E и более поздних моделях контроллер расширения памяти был усовершенствован для обеспечения виртуализации машин. Программа, написанная для использования всех ресурсов PDP-8, может сосуществовать с другими подобными программами на том же PDP-8 под управлением диспетчера виртуальных машин. Менеджер может сделать так. Чтобы все инструкции ввода-вывода (включая те. Которые работают на контроллере расширения памяти) вызывали ловушку (прерывание. Обрабатываемое менеджером). Таким образом. Менеджер может сопоставлять ссылки на память. Сопоставлять данные или поля команд и перенаправлять ввод-вывод на различные устройства. Каждая оригинальная программа имеет полный доступ к

Новые инструкции ввода-вывода к контроллеру расширения памяти извлекают текущее значение полей данных и команд. Позволяя программному обеспечению сохранять и восстанавливать большую часть состояния машины через ловушку. Тем не менее. Программа не может определить. Находится ли процессор в процессе отсрочки действия инструкции CIF (выполнила ли она CIF и еще не выполнила соответствующую команду перехода). Менеджер должен включать полный эмулятор PDP-8 (не сложно для машины с 8 инструкциями). Всякий раз, когда инструкция CIF попадает к менеджеру. Он должен эмулировать инструкции до следующего прыжка. К счастью, поскольку переход обычно является следующей инструкцией после CIF. Эта эмуляция не сильно замедляет программы. Но это большой обходной путь к. Казалось бы. Небольшому недостатку дизайна.[требуется цитирование]

К моменту появления PDP-8/A цены на память упали настолько. Что было желательно иметь память. Превышающую 32 тыс. В 8/A добавлен новый набор инструкций для обработки более восьми полей памяти. Теперь номер поля мог быть помещен в AC. А не жестко закодирован в инструкции. Однако к этому времени PDP-8 пришел в упадок. Поэтому для использования этих новых функций было изменено очень мало стандартного программного обеспечения.

В следующих примерах показан код на языке ассемблера PDP-8, который можно было бы написать для ассемблера PAL-III.

Сравнение двух чисел

Следующий фрагмент кода показывает. Что нужно просто сравнить два числа:

 /Сравнение чисел в памяти на OPD1 и OPD2 CLA CLL /Должен начинаться с 0 в AC и link TAD OPD1 /Загрузить первый операнд в AC (добавив его к 0); ссылка все еще ясна CIA /Complement, затем увеличьте AC, отрицая его TAD OPD2 /AC теперь имеет OPD2-OPD1; если OPD2≥OPD1, сумма переполняется и устанавливается связь SZL /Пропустить. Если ссылка ясна JMP OP2GT /Jump где-то в том случае. Если OPD2≥OPD1; /В противном случае переходите к нижеприведенному коду. 

Как показано. Большая часть текста типичной программы PDP-8 ориентирована не на предполагаемый автором алгоритм. А на низкоуровневую механику. Дополнительная проблема читаемости заключается в том. Что в условных скачках. Таких как показанный выше. Условная инструкция (которая пропускает JMP) подчеркивает противоположность интересующему условию.

Вывод строки

Эта полная программа языка сборки PDP-8 выводит на телетайп.

 *10 / Установить текущее начало сборки на адрес 10, STPTR. STRNG-1 / Регистр автоматического инкремента (один из восьми в 10-17) *200 / Установить текущее начало сборки в текстовую область программы ПРИВЕТ. CLA CLL / Clear AC и снова ссылка (необходима. Когда мы возвращаемся из цикла tls) TAD I Z STPTR / Get next character. Косвенный через ПРЕДВАРИТЕЛЬНЫЙ автоинкрементный адрес с нулевой страницы SNA / Skip if non-zero (не конец строки) HLT / Else halt on zero (конец строки) TLS / Вывод символа в AC на телетайп TSF / Пропустить. Если телетайп готов к символу JMP .-1 / Else отскочите назад и повторите попытку JMP HELLO / Jump back for the next character STRNG, 310 / Ч 345 / e 354 / л 354 / л 357 / o 254 /, 240 / (пространство) 367 / w 357 / o 362 / r 354 / л 344 / d 241 / ! 0 / Конец строки $HELLO /ТЕРМИНАТОР ПО УМОЛЧАНИЮ 

Подпрограммы

Процессор PDP-8 не реализует стек, на котором хранятся регистры или другой контекст, когда вызывается подпрограмма или происходит прерывание. (Стек может быть реализован в программном обеспечении. Как показано в следующем разделе.) Вместо этого инструкция JMS просто сохраняет обновленный ПК (указывая мимо JMS на обратный адрес) на эффективный адрес и переходит на эффективный адрес плюс один. Подпрограмма возвращается вызывающему объекту с помощью косвенной инструкции JMP. Которая обращается к первому слову подпрограммы.

Например, вот Когда команда JMS переходит к подпрограмме, она изменяет 0, закодированный в местоположении OUT1:

 *10 / Установите текущее начало сборки на адрес 10, STPTR. STRNG-1 / Регистр автоматического приращения (один из восьми при 10-17) *200 / Set начало сборки (адрес загрузки) LOOP, TAD I STPTR / Pre-increment mem location 10, fetch indirect to get the next character of our message SNA / Skip on non-zero AC HLT / Else halt at end of message JMS OUT1 / Выпишите один символ JMP LOOP / И loop back для получения дополнительной информации OUT1, 0 / Будет заменен обновленным PC TSF / Skip. Если принтер готов JMP .-1 / Ожидание флага TLS / Send the character in the AC CLA CLL / Clear AC and Link for next pass JMP I OUT1 / Return to caller STRNG. -р / 015 / 012 / 0 / Отметьте конец нашей нулевой строки (ASCIZ еще не был изобретен!) 

Тот факт. Что инструкция JMS использует слово непосредственно перед кодом подпрограммы для ввода адреса возврата, предотвращает повторную ориентацию и рекурсию без дополнительной работы программиста. Это также затрудняет использование ПЗУ с PDP-8, потому что память обратного адреса для чтения и записи смешивается с хранилищем кода только для чтения в адресном пространстве. Программы, предназначенные для размещения в ПЗУ. Подходят к этой проблеме несколькими способами:

  • Они копируют себя в память чтения-записи перед выполнением, или
  • Они помещаются в специальные карты ПЗУ. Которые обеспечивают несколько слов памяти чтения/записи. Доступ к которым осуществляется косвенно через использование тринадцатого бита флага в каждом слове ПЗУ.
  • Они избегают использования подпрограмм; или используют код. Такой как следующий. Вместо инструкции JMS. Чтобы поместить обратный адрес в память чтения-записи:
 JUMPL, DCA TEMP / Поместите аккумулятор в какое-нибудь временное место TAD JUMPL+3 / Загрузите обратный адрес в аккумулятор: hard coded JMP SUBRO / Перейдите к подпрограмме и попросите ее обработать обратный прыжок (to JUMPL+3) 

Использование инструкции JMS затрудняет отладку. Если программист совершает ошибку. Вызывая саму подпрограмму. Непосредственно или через промежуточную подпрограмму. То обратный адрес внешнего вызова уничтожается обратным адресом последующего вызова. Что приводит к бесконечному циклу. Если один модуль закодирован с неправильным или устаревшим адресом для подпрограммы. Он не просто не сможет выполнить всю кодовую последовательность подпрограммы. Он может изменить слово кода подпрограммы. Депонируя обратный адрес. Который процессор может интерпретировать как инструкцию во время последующего правильного вызова подпрограммы. Оба типа ошибок могут стать очевидными во время выполнения кода. Который был написан правильно.

Программный стек

Хотя PDP-8 не имеет аппаратного стека, стеки могут быть реализованы в программном обеспечении.[37] Вот примеры подпрограмм PUSH и POP. Упрощенных для исключения таких проблем. Как тестирование на переполнение стека и недостаточный поток:

 ТОЛЧОК, 0 ДАННЫЕ DCA CLA CMA / -1 ТЭД СП DCA SP ДАННЫЕ TAD DCA I SP JMP I PUSH /Return ПОП, 0 CLA CLL TAD I SP ISZ SP JMP I POP ДАННЫЕ, 0 SP, 0 

А вот и

 *200 MAIN, CLA CLL /Установите указатель сообщения TAD (MESSG /To the beginning of the message (literal) DCA SP ПЕТЛЯ, JMS POP SNA /Stop execution if zero HLT JMS OUT /В противном случае выведите символ ЦИКЛ JMP MESSG, 015 012 0 OUT, 0 / Будет заменен обновленным PC TSF вызывающего абонента / Skip. Если принтер готов JMP .-1 / Ожидание флага TLS / Send the character in the AC CLA CLL / Clear AC and Link for next pass JMP I OUT / Return to caller 

Связанный список

Другой возможной подпрограммой для PDP-8 является связанный список.

 GETN, 0 /Получает указанное число и перемещает указатель CLA CLL /Clear аккумулятор TAD I PTR /Получает номер, указанный в DCA TEMP /Сохранить текущее значение ISZ PTR /Указатель приращения TAD I PTR /Получить следующий адрес DCA PTR /Put in указатель JMP I GETN /return PTR, 0 ТЕМП, 0 

Прерывает

На шине ввода-вывода PDP-8 имеется одна линия прерывания. Процессор обрабатывает любое прерывание. Отключая дальнейшие прерывания и выполняя JMSкоманду to location 0000. Поскольку трудно писать реентерабельные подпрограммы. Трудно вложить прерывания. И это обычно не делается; каждое прерывание выполняется до завершения и повторно включает прерывания непосредственно перед выполнением JMP I 0инструкции. Которая возвращается из прерывания.

Поскольку существует только одна линия прерывания на шине ввода-вывода. Возникновение прерывания не информирует процессор об источнике прерывания. Вместо этого процедура обслуживания прерываний должна последовательно опрашивать каждое активное устройство ввода-вывода. Чтобы узнать. Является ли оно источником. Код, который делает это. Называется цепочкой пропусков, потому что он состоит из серии инструкций ввода-вывода PDP-8 (Не было ничего неслыханного в том. Чтобы скиповая цепь достигла своего конца. Не найдя ни одного устройство. Нуждающееся в обслуживании.) Относительный приоритет прерываний устройств ввода-вывода определяется их положением в цепочке пропусков: если прерывается несколько устройств. То первым обслуживается устройство. Испытанное ранее в цепочке пропусков.

Книги

В популярном в 1980-е годы учебнике Объяснена функция каждого компонента. Хотя это не является производственным проектом. Поскольку он использует более современные компоненты SSI и MSI, упражнение содержит подробное описание работы компьютера.

Нелицензионные клоны

В СССР производились мини-ЭВМ Саратов-1 и Саратов-2 соответственно. ПДП-8 и ПДП-8/Е.

  1. ^ b
  2. ^ b Дуглас У. Джонс. .
  3. ^ Федеральный резервный банк Миннеаполиса. . Получено 1 января 2020года .
  4. ^ b Schein, Edgar H. (2004). DEC мертв, да здравствует DEC: прочное наследие Digital Equipment Corporation. San Francisco, Calif.: Berrett-Koehler Publishers. p. 271. ISBN 1576753050.
  5. ^ Дуглас У. Джонс. .
  6. ^ . История Проводная. Смитсоновский институт. Архивирован с оригинала 2015-02-17гг. Извлечено 17 февраля 2015года .
  7. ^ b . Компьютерный музей Род-Айленда. 18 августа 2020 года. Архивирован с оригинала 2021-02-26гг. Извлечено 7 мая 2021года .
  8. ^ Гленн Рифкин; Джордж Харрар (1988). Последний предприниматель: история Кена Олсена и Digital Equipment Corporation. ISBN 978-1-55958-022-9.
  9. ^ Небольшой компьютерный справочник. НОВОЕ издание PDP 8/I (Forward). Корпорация цифрового оборудования, 1968.
  10. ^ . PC Magazine. Vol. 4 no. 22. 29 октября 1985 г. стр. 112. лучшее использование самого ценного компьютерного ресурса современности: время программиста …
  11. фраза, используемая в разделе 1.1 (PDF).
  12. ^ Torben Ægidius Mogensen (August 20, 2010). Еще одно преимущество использования языка высокого уровня заключается в том. Что одна и та же программа может быть скомпилирована на множество различных машинных языков и. Следовательно. Может выполняться на многих разных машинах.
  13. ^ Гордон Белл; Дж.К. Мадж; Дж. Э. Макнамара (1978). Компьютерная инженерия: Новый взгляд на проектирование аппаратных систем (PDF) . Цифровая пресса, стр. ISBN 0-932376-00-2.
  14. ^ Справочник программистов систем с плавающей запятой PDP-8 (PDF). Корпорация цифрового оборудования. Сентябрь 1969 года. ДЕКАБРЬ-08-YQYB-D.
  15. ^ (PDF). Корпорация цифрового оборудования. 1965.
  16. ^ С. Гордон Белл и др.; Компьютерные структуры, принципы и организация, 1982, PDP-8 глава
  17. ^ . Руководство пользователя PDP-8. Корпорация цифрового оборудования. 1966. с. 41.
  18. ^ Введение в программирование (PDF). Корпорация цифрового оборудования. 1969. С. 4-22.
  19. ^ PDP-8/S Инструкция по техническому обслуживанию. Корпорация цифрового оборудования. 1971.
  20. ^ . Технология PDP-8 До Тысячелетия. Архивировано с оригинала 2000-10-23. Проверено 2021-05-13.
  21. ^ Remo J. Vogelsang (2013). .
  22. ^ . www.faqs.org.
  23. ^ (PDF). 1965. с. 18.
  24. ^ PDP-8/S Руководство по техническому обслуживанию (PDF) (5-е изд.). Октябрь 1970. стр. 1-2.
  25. ^ -Таблица 11. Установочные данныеSmall Computer Handbook (PDF) (1967-68 ed.). 1968. p. 290 (300).
  26. ^ Small Computer Handbook (PDF) (1970 ed.). 1970. p. 277 (291).
  27. ^ Брошюра по продажам PDP-8/e/f/m (PDF). стр. 17.
  28. ^ PDP-8/e/f/m Sales Brochure (PDF). p. 17.
  29. ^ .
  30. ^ Брошюра по продажам PDP-8/e/f/m (PDF). стр. 17.
  31. ^ . AntiqueTech.com 2009-04-21. Архивирован с оригинала на 2017-07-03. Извлечено 2017-06-19.
  32. ^ b Bell, Gordon (1980), Семейное древо компьютеров Digital, (Плакат), Digital Equipment Corporation, 2017-06-19
  33. ^ . 2011-12-05. Извлечено 2016-05-14.
  34. ^ . Извлечено 2016-05-14.
  35. ^ Руководство по ФОКАЛЬНОМУ программированию для PDP-8, PDP-8/S, PDP-8/I, LAB-8, LINC-8 (PDF). Корпорация цифрового оборудования. 1968. ДЕКАБРЬ-08-АДЖАБ-Д.
  36. ^ Маленький компьютерный справочник 1967-1968. Корпорация цифрового оборудования. 1968. С. 130-136.
  37. Марк Смозерман. , 2002.
  • Гордон Белл и Аллен Ньюэлл, 1971, Компьютерные структуры: чтения и примеры, McGraw-Hill Book Company, Нью-Йорк. Глава 5 DEC PDP-8, страницы 120-136. С достаточной детализацией. Чтобы инженер-электрик мог построить его (если бы смог найти детали).

Внешние ссылки

Викисклад имеет средства массовой информации, связанные с PDP-8.