Краткий обзор PDP-11, самого влиятельного мини-компьютера всех времен

Краткий обзор PDP-11, самого влиятельного мини-компьютера всех времен

Историю вычислительной техники можно условно разделить на три эпохи: эпоху мэйнфреймов, миникомпьютеров и микрокомпьютеров. Миникомпьютеры стали важным связующим звеном между первыми мейнфреймами и вездесущими микрокомпьютерами сегодняшнего дня. Это история PDP-11, самого влиятельного и успешного мини-компьютера.

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

В современном мире вычислений, в котором каждый компьютер работает под управлением той или иной версии Windows, Mac или Linux, трудно различить ЦП, лежащие в основе операционной системы. Но было время, когда различия в архитектуре ЦП имели большое значение. PDP-11 помогает объяснить, почему это так.

PDP-11 был представлен в 1970 году, когда большая часть вычислений выполнялась на дорогих мейнфреймах GE, CDC и IBM, к которым мало кто имел доступ. Не было ни ноутбуков, ни настольных компьютеров, ни персональных компьютеров. Программированием занималось всего несколько компаний, в основном на ассемблере, COBOL и FORTRAN. Ввод производился с помощью перфокарт, а программы запускались неинтерактивными пакетными запусками.

Хотя первый PDP-11 был скромным, он заложил основу для вторжения миникомпьютеров, которые сделали компьютеры нового поколения более доступными, по сути произведя революцию в вычислительной технике. PDP-11 помог создать операционную систему UNIX  и  язык программирования C. Это также сильно повлияет на следующее поколение компьютерных архитектур. За 22 года жизни PDP-11 — беспрецедентный срок по сегодняшним меркам — было продано более 600 000 PDP-11.

Ранние модели PDP-11 не слишком впечатляли. Первый PDP-11 11/20 стоил 20 000 долларов, но поставлялся только с 4 КБ ОЗУ. Он использовал бумажную ленту в качестве хранилища и имел консоль телетайпа ASR-33, которая печатала 10 символов в секунду. Но у него также была потрясающая ортогональная 16-битная архитектура, восемь регистров, 65 КБ адресного пространства, время цикла 1,25 МГц и гибкая аппаратная шина UNIBUS, которая поддерживала будущие аппаратные периферийные устройства. Это была выигрышная комбинация для ее создателя, корпорации Digital Equipment Corporation.

Первоначальное приложение для PDP-11 включало аппаратное управление в реальном времени, автоматизацию производства и обработку данных. Поскольку PDP-11 приобрел репутацию гибкости, программируемости и доступности, он нашел применение в системах управления светофорами, системе противоракетной обороны Nike, управлении воздушным движением, атомных электростанциях, системах обучения пилотов ВМФ и телекоммуникациях. Он также стал пионером в обработке текстов и данных, которые мы сейчас воспринимаем как должное.

И влияние PDP-11 наиболее ярко проявляется в программировании сборки устройства.

Основы программирования на ассемблере

До изобретения языков высокого уровня, таких как Python, Java и Fortran, программирование выполнялось на языке ассемблера. Программирование на языке ассемблера можно выполнять с очень небольшим объемом оперативной памяти и дискового пространства, что идеально подходит для среды первых дней вычислений.

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

16-битное адресное пространство означало, что каждый регистр мог напрямую адресовать до 64 КБ ОЗУ, причем верхние 4 КБ зарезервированы для ввода и вывода с отображением памяти. PDP-11 могли адресовать в общей сложности 128 КБ ОЗУ, используя сегменты регистров (подробнее об этом чуть позже). Таким образом, несмотря на то, что системы PDP-11 поставлялись только с 4 КБ ОЗУ, они все еще были производительными благодаря умному использованию ранних методов программирования.

Программа на ассемблере

Легче всего понять эту концепцию на примере простой программы на языке ассемблера для PDP-11, которую мы рассмотрим ниже. Ключевые слова, которые начинаются с «.» являются директивами для ассемблера. .globlэкспортирует метку как символ компоновщику для использования операционной системой. .textопределяет начало сегмента кода. .dataопределяет начало отдельного сегмента данных. Ключевые слова, оканчивающиеся на «:», являются метками. Программирование на ассемблере использует метки для символической адресации памяти. (Примечание: с появлением жаргона и кодирования PDP-11 любой текст после / является комментарием.)

Ключевые слова Перевод
.globl_main Экспортировать метку _main как точку входа для использования операционной системой.
.текст Начало сегмента инструкции, в котором находится код только для чтения
_main: ДВИГАТЕЛЬ ЗНАЧ1, R0 Скопируйте значение слова из ячейки памяти VAL1 в регистр 0.
ДОБАВЬТЕ $10, R0 Добавьте 10 к значению в регистре 0
ДВИГАТЕЛЬ R0, ЗНАЧ1 Скопируйте значение из регистра 0 в ячейку памяти VAL1.
_.данные Начало сегмента данных, в котором находятся данные, доступные для чтения/записи.
VAL1:. слово $100 Зарезервируйте 2 байта памяти для хранения Val1, инициализированного значением 100.

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

Директива ассемблера. data помещает данные в сегмент памяти, доступный как для чтения, так и для записи. Сегмент памяти для кода доступен только для чтения, чтобы ошибки программирования не могли повредить программу и вызвать сбои. Такое отделение инструкций от данных на PDP-11 называется «разделение инструкций и данных». Помимо повышения стабильности, эта функция также удваивает адресное пространство, предоставляя 64 КБ для кода и 64 КБ для данных — в то время это считалось инновацией. Соответственно, микрокомпьютеры Intel X86 позже широко использовали сегменты.

Добавить комментарий

Ваш адрес email не будет опубликован.