Найти тему
IT. Как это работает?

Что внутри у PDP-11?

Всем привет! Мы продолжаем историческо-поучительную серию выпусков про архитектуры компьютеров и процессоров. Сегодня заглядываем внутрь самого популярного компьютера 70-х годов от компании DEC.

Внешний вид процессорного блока PDP-11
Внешний вид процессорного блока PDP-11

PDP-11 имел восемь 16-битных регистров общего назначения (от R0 до R7) регистр - R6 был указателем стека, а R7 был счетчиком инструкции и указывал с какого адреса брать очередную машинную команду. В этой архитектуре реализованы мощные регистровые режимы адресации. Поскольку счетчик инструкций рассматривался как регистр общего назначения, команды переходов были простой загрузкой регистра новым содержимым.

Набор регистров PDP-11
Набор регистров PDP-11

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

Смежные регистры могут быть неявно сгруппированы в 32-битный регистр для результатов умножения и деления (результат умножения и деления сохраняются в двух регистрах).

Адреса PDP-11 были 16-битными, что ограничивало пространство программы до 64 КБ, однако, модуль управления (MMU) памятью расширял общее адресное пространства. Из 16 битной шины адреса получалась либо 18-битная либо 22-битная шина, в зависимости от модели компьютера. При этом самое главное то, что программы для разных моделей компьютеров одиннадцатой серии работали работали одинаково корректно.

В основе расширения общего адресного пространства компьютера лежит очень простая идея. Разработчик пишет программу, которая работает с 16-битными регистрами и способна выставлять на шину адреса только 16-битные адреса, что позволяет адресовать 64 килобайта данных. Это еще не настоящий физический адрес данных в памяти, а только, так называемый, логический адрес.

Формирование логического адреса из содержимого нескольких регистров
Формирование логического адреса из содержимого нескольких регистров

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

Адресные регистры в общем адресном пространстве процесса
Адресные регистры в общем адресном пространстве процесса

Итак, чтобы из 16-битного адреса получился 18-битный, к логическому адресу прибавляется смещенный влево адресный регистр. Если нужно получить 18 битный физический адрес, то сдвиг на 2 бита.

Формирование 18-битного адреса в MMU компьютера PDP-11
Формирование 18-битного адреса в MMU компьютера PDP-11

В более дорогих моделях компьютеров сдвиг происходит на 6 бит и получается 22 битный адрес, охватывающий пространство в 4 мегабайта. По тем временам для сравнительно дешевых миникомпьютеров величина довольно значительная. Напомню, что первые версии операционной системы Windows также могли работать на 4 мегабайтах оперативной памяти. А для программ и операционных систем без графического интерфейса пользователя это просто шикарное пространство адресов.

За выбор конкретного адресного регистра отвечают самые старшие 4 бита логического адреса. Младшие 12 бит это смещение внутри 4 килобайтной страницы памяти, которая благодаря адресному регистру может быть размещена в любом месте оперативной памяти.

Размещение 4 килобайтных страниц памяти в общем пространстве адресов
Размещение 4 килобайтных страниц памяти в общем пространстве адресов

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

Формирование 20-битного адреса в реальном режиме процессора Intel 8086
Формирование 20-битного адреса в реальном режиме процессора Intel 8086

Этот компьютер, сделанный буквально паяльником из россыпи микросхем оказал значительное влияние на дальнейшее развитие информационных технологий. Модуль управления памятью, довольно простая архитектура и формат команд легли в основу многих процессоров. Благодаря низкой стоимости эта архитектура стала массовой. Именно на миникомпьютерах родилась самая переносимая на другие архитектуры операционная система UNIX, а также самый популярный и долгоживущий язык программирования Си. А это все по своей сути рождение совершенно новой культуры в разработке и использовании программного обеспечения. Но об это лучше как-нибудь в другой раз.

Исходный код на языке Си на экране терминала PDP-11
Исходный код на языке Си на экране терминала PDP-11

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

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

Также не обойдите вниманием канал на YouTube . Подписки и лайки будут приятным ответом от аудитории.