Хабрахабр

[Перевод] Чему нас научила PDP-11?


C. G. Bell, W. D. Strecker, “Computer What Have We Learned from the PDP-11,” The 3rd Annual Symposium on Computer Architecture Conference Proceedings, pp. l-14, 1976.

Это одна из ряда статей Гордона Белла с различными соавторами, описывающей разработку, рост, и внезапную замену культовой линейки продуктов компании, миникомпьютеров PDP-11.
Эта статья, которую я выбрал сегодня, является ретроспективой компьютерного дизайна.

  • C. G. Bell, R. Cady, H. McFarland, B. Delagi, J. O’Laughlin, R. Noonan and W. Wulf, “A New Architecture for Mini-Computers – The DEC PDP- 11,” Proceedings of the Sprint Joint Computer Conference, pp. 657-675, AFIPS Press, 1970.
  • C. G. Bell, W. D. Strecker, “Computer What Have We Learned from the PDP-11,” The 3rd Annual Symposium on Computer Architecture Conference Proceedings, pp. l-14, 1976.
  • W. D. Strecker, “VAX-11/780: A Virtual Address Extension to the DEC PDP-11 Family,” Proceedings of the National Computer Conference, pp. 967-980, AFIPS Press, 1978.
  • C. G. Bell, W. D. Strecker, “Retrospective: what have we learned from the PDP-11—what we have learned from VAX and Alpha”, Proceedings of the 25th Annual International Symposium on Computer Architecture, pp. 6-10, 1998.

Прошло 40 лет с момента, когда была написана эта статья, и я посчитал, что будет интересным сделать ретроспективу статей Белла с нашей современной точки зрения. В этом году мы отмечаем 60-ю годовщину основания компании, которая производила PDP-11.

Чем была Digital Equipment Corporation?

Чтобы представить себе то время, когда была написана статья, мы сначала должны немного поговорить о компании, которая выпустила PDP-11, Digital Equipment Corporation из Мэйнарда, штат Массачусетс. Более известную, как DEC.

Олсен и Андерсон работали вместе в лабораории Линкольна Массачусетского Технологического Института, где и заметили, что студенты стоят в очереди часами, чтобы воспользоваться TX-0, экспериментальным интерактивным компьютером, разработанным Уэзом Кларком DEC была основана в 1957 году Кеном Олсеном и Харланом Андерсоном.

1

Кларк продолжил развивать TX-0 в TX-2 и позже присоединился к DEC в качестве начальника подразделения LINC

.

Это TX-0.

Давайте сравним его с чем-нибудь типа IBM 704, компьютером того времени, который студенты в большинстве своём игнорировали

2

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

. Что Ольсен и Андерсон обнаружили, это то, что желание пользоваться интерактивным компьютером было настолько сильным, что существует рынок «маленьких» компьютеров, предназначенных для этой роли.

DEC вначале предложила PDP-1, эффективную коммерческую версию TX-0.

Поправка: Майкл Чепонис, глава проекта по восстановлению PDP-1, любезно написал мне следующее:

Сравнение порядка следования кодов PDP-1 и Whirlwind выявляет, что PDP-1 является удешевлённой и несколько усовершенствованной версией архитектуры Whirlwind. Whirlwind и PDP-1 имеют 5-битный код операции, TX-0 начал с 2- или 3-битного кода операции, но это значение увеличилось при росте объёма памяти у TX-2.

  • Усовершенствование: добавлена косвенная адресация.
  • Удешевление: убран «live-регистр» и добавлена инструкция вызова подпрограммы, и убран счётчик сдвига за счёт того, что инструкции целочисленного умножения и деления заменены на инструкции шага умножения и шага деления, которые делают сдвиг на один разряд. Самое большое уменьшение цены PDP-1 по сравнению с Whirlwind произошло за счёт изменения в дизайне логики и конструкции.

Контраст между PDP-1 и IBM 704 был большим, но несколькими годами ранее уже появились маленькие и медленные интерактивные компьютеры, такие, как Librascope LGP-30 и Bendix G-15, и они продавались в сходном количестве.

Также следует заметить, что название PDP — это акроним для “Programmed Data Processor”, так как под компьютером в то время понимались большие, сложные и дорогие машины, и венчурные капиталисты могли не поддержать DEC, если они будут производить «компьютеры»

3

Для PDP-1 была написана одна из первых компьютерных игр, "Spacewar" Стива Рассела

.

Следом за успехом PDP-1, DEC предложила несколько семейств компьютеров, многие из которых были спроектированы, по крайней мере, частично, Гордоном Беллом.

Введение

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

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

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

Ясно, что он рассматривает успех PDP-11 в более широком контексте рынка, потребности которого они были должны были удовлетворить, и который в дальнейшем повлиял на эволюцию всего семейства PDP-11. В это время, в 1976 году, Белл был главой разработки DEC уже почти четыре года.

Выдержанная в духе слов Белла, эта презентация сфокусирована на двух аспектах статьи, на технологии и на людях.

Основы: мысли, лежащие в основе дизайна

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

В то время. Это принципы agile. Когда это было написано, DEC уже давно не была стартапом, борющимся за своё существование, она была зрелой компанией с несколькими успешными продуктовыми линейками на рынке, и Белл говорит о том, что необходимость выпустить минимально востребованный продукт (minimum viable product) важнее всех остальных долгосрочных планов. За 25 лет до Snowbird и написания манифеста agile.

Подобно IBM/360, PDP-11 была разработана не как одна модель компьютера, а как ряд моделей, при этом программное обеспечение, написанное для маленькой PDP-11, будет совместимо и с большой.

концептуальной структуры и функционального поведения, а не для описания организации потоков данных и управления, логического дизайна и физической реализации.» — G. «Термин „архитектура“ используется здесь для описания атрибутов системы, какой её видит программист, т.е. Amdahl G. M. Blaauw and F. A. Brooks Jr. P. Architecture of the IBM System/360, 1964

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

Дизайн в этом случае не так важен: большая и агрессивная маркетинговая организация, вооружённая программными средствами для исправления архитектурных недостатков и упущений может спасти практически любой дизайн. Несмотря на эволюционный стиль планирования, PDP-11 стала успешной на рынке: свыше 20000 штук было продано за шесть лет, в течение которых они были на рынке (1970-1975).

Для того, чтобы ответить на свой собственный вопрос, Белл рассматривает продукт с точки зрения тех критериев дизайна, которые он и его соавторы определили шестью годами ранее. Здесь Белл в своей статье задаёт вопрос: имела ли PDP-11 хороший дизайн, или просто получила преимущество за счёт гиперактивного маркетинга?

Адресное пространство

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

Миникомпьютеры той эпохи имели 12-битное адресное пространство, что позволяло адресовать только 4096 адресов, каждый из которых хранил 12-битное слово.

Каноническим примером был PDP-8, предыдущая модель DEC, которая имела всего восемь инструкций. Стоит сделать замечание, что слово «миникомпьютер», которое позднее стало обозначать физический размер, изначально было образовано от словосочетания «минимальный компьютер».

Память была чрезвычайно дорогой в 60-е и начале 70-х, когда каждый бит состоял из крошечного магнитного сердечника, которые вплетались в решетку управляющих проводников. Причиной крошечного адресного пространства была цена.

прим. Сердечники были упорядочены в панели, в данном случае по 4096 бит, которые соединялись в стопки, чтобы получить слово, таким образом 4096 слов памяти состояли из 16 миллионов колец (здесь, очевидно, ошибка в оригинальном тексте, 4096 слов * 16 бит = 65536 колец. Теперь ясно, почему память была такой дорогой. перев.), каждое из которых было, по крайней мере частично, собрано вручную.

Таким образом, количество памяти, которое покупатель сможет себе позволить купить будет повышаться с течением времени, так как пользователи склонны покупать «системы за одинаковую цену в долларах». Белл и другие дизайнеры PDP-11 знали, что цены на сердечники будут продолжать падать, и что полупроводниковая память, хотя и не столь эффективная по цене в то время, будет продолжать дешеветь из расчёта одного хранимого байта. Но всё же,

PDP-11 последовала этой плохой традиции экономить на адресных битах, но её спас принцип — хороший дизайн способен пережить по крайней мере одно крупное изменение.

Через несколько лет было добавлено ещё 4 бита. Даже с учетом предсказаний разработчиков, Белл отметил, что не прошло и двух лет со дня введения в строй архитектуры PDP-11, как потребовалось включение в архитектуру модуля управления памятью, чтобы обеспечить доступ к большему, 18-битному адресному пространству ценой увеличения сложности программного обеспечения.

Помните ограничение 640К в DOS? Справедливости ради, хотя Белл и упрекал себя за непредусмотрительность, традиция делать недостаточное адресное пространство продолжается по сей день. Сталкивались с ситуацией, когда 32-битная программа требует больше 2 Гб под данные? Помните сражения с himem.sys?

Итак, никто не совершенен.

Недостаточно регистров

Второй слабостью миникомпьютеров была тенденция к недостаточному числу регистров. Это было исправлено в PDP-11, который имел восемь 16-битных регистров. Позднее, шесть 32-битных регистров было добавлено для арифметики с плавающей точкой. Большее число регистров могло увеличить время переключения контекста задачи.

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

В начале 1970-х наиболее распространённым было программирование машин напрямую на ассемблере. Также интересно отметить замечание Белла, что лишние регистры могут быть неудобны для пользователя.

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

Медленную программу можно терпеть, но если программа не помещается в память, это было фатальным, то есть способ кодирования инструкций должен быть настолько эффективным, насколько это возможно. В машинах Фон Неймана (которыми были практически все компьютеры 60-х) программа и данные разделяют одно и то же, ограниченное адресное пространство, и неэффективная программа тратила впустую не только время компьютера, но и память.

Сколько бит нужно, чтобы описать эту операцию? Давайте рассмотрим очень распространённый случай перемещения из одной локации памяти в другую. Вот одна из возможных реализаций:

MOV addr addr

Пусть всего будет 40 бит, это не кратно 16, что означает сложную 2,5 битную кодировку инструкций. Нужно 16 бит для исходного адреса, ещё 16 для адреса назначения, и некоторое количество бит для кодирования самой инструкции MOV. Однако, что если мы загрузим адрес в регистр?

MOV (R0), (R1)

Такая команда легко влезет в 16-битное слово, и не требует сложного кодирования инструкций с переменной длиной. В этом случае нам нужно описывать только регистры, PDP-11 имеет 8 регистров, и для описания регистра достаточно только 3 бита, плюс несколько бит на описание оператора.

В действительности PDP-11 использует 6 бит на регистр, и 4 бита на операцию, если инструкция имеет два операнда.

Аппаратный стек

Третья слабость миникомпьютеров была недостаточная аппаратная поддержка стека. В PDP-11 был реализован механизм автоинкремента и автодекремента адреса. Это решение уникально для PDP-11 и доказало свою исключительную полезность. (И это решение копировалось разработчиками других систем.)

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

Последовательность вызова функции включала в себя сохранение адреса возврата в пустом слове в начале процедуры, что делало рекурсию невозможной. Дизайн PDP-11 относится к 1969 году, и если мы посмотрим на языки программирования того времени, FORTRAN и COBOL, они не поддерживали рекурсивный вызов функции.

PDP-11 определяет указатель стека так, как мы понимаем его сегодня, как регистр, управляемый операциями PUSH и POP, но PDP-11 пошла дальше, и разрешила любому регистру работать как указатель стека, добавив модификатор автоинкремента/декремента к регистрам-операндам.

Например, одна инструкция:

MOV R4, -(R6)

Таким образом в ассемблере PDP-11 мы размещаем значение на стеке. выполняет декремент значения, сохранённого в R6, на два, затем сохраняет в R4 значение, сохранённое по адресу, сохранённому в R6. Если кто-либо из вас программировал под ARM, это должно быть вам знакомо.

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

Задержка при выполнении прерывания

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

Отклик на прерывания, задержка между активацией сигнала прерывания и началом обработки прерывания, является ключевым для получения высокой производительности реального времени. В этой точке жизни DEC, почти все её продукты имели архитектуру PDP-10, мэйнфрейма DEC, который был предназначен для интерактивных приложений, лабораторий и управления процессами.

Белл честно пишет об этом: В PDP-11 устройство, возбудившее прерывание, предоставляет адрес обработчика прерывания.

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

Поддержка символов

Пятой слабостью большинства миникомпьютеров была плохая поддержка строк, что решалось в PDP-11 возможностью прямой адресации байт.

Главенствующим способом кодирования в то время был 6-битный набор символов, который предоставлял достаточно места для заглавных букв, цифр от 0 до 9, пробела и нескольких знаков пунктуации, достаточных для печати финансовых отчётов. Важность поддержки строк и символов стала возрастать в течение 1960-х, когда стали появляться решения для науки и бизнеса.

Так как память была очень дорогой, разместить один символ в 12-битном или 18-битном слове было просто неприемлемо, и символы упаковывались в слова.

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

Расширение длины символа на два бита упрощало операции со строками, и упрощало адаптацию к набирающему популярность 7-битному стандарту ASCII, сторонником которого являлась DEC в то время. Проблема была решена в PDP-11, машина могла оперировать как 16-битными словами, так и набирающими популярность 8-битными байтами. Белл заканчивает этот пункт так:

Несмотря на то, что инструкции обработки строк отсутствовали в аппаратуре, обычные строковые операции (перемещение, сравнение, конкатенация) могли быть запрограммированы как очень короткий цикл.

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

loop: MOVB (src)+, (dst)+ BNE loop

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

ПЗУ

Шестым слабым местом миникомпьютеров была неспособность использовать ПЗУ, и PDP-11 не имела этого недостатка. Большая часть кода, написанная для PDP-11 была «чистой» и допускала повторное вхождение без специальных усилий программиста, что позволяло напрямую использовать ПЗУ.

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

Примитивные возможности ввода-вывода

Седьмая слабость миникомпьютеров были примитивные возможности ввода-вывода.

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

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

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

Это не был такой отображаемый в память ввод-вывод, который вы можете использовать с помощью системного вызова mmap(2), а просто соглашение, что некоторые адреса в памяти не являются просто ячейками памяти, а их содержимое отображается на платы, вставленные в бэкплейн, который в DEC носил название UNIBUS. PDP-11 ввел кое-что необычное, отображаемый на память ввод-вывод.

Например, значение, записанное в 777566

4

Адреса приведены в восьмиричной системе, как это было принято на предыдущих 12, 18, и 36-битных машинах DEC

будет записано в устройство, подсоединённое к консоли, обычно печатающий терминал.

Это часто использовалось для конфигурирования загрузчика. Если вы читали значение из адреса 777570, вы получали значение, введённое переключателями на передней панели.

Затем устанавливаем нулевой бит по адресу 777404 в 1 (бит GO), и привод перенесёт нужное количество слов прямо в память. Аналогично, обращение к дисководу RK05 производилось путём записи номера сектора, к которому вы хотите получить доступ, в адрес 777412, адрес, куда вы хотите записать данные, в 777410, и количество слов в 777406.

Запись бита 6 по адресу 777546 запускает подачу прерываний каждые 20 мс. Моим любимым устройством был таймер KW11-L. Потому что это период частоты переменного тока( Почему менно 20 мс?

5

Если вы заказывали машину для региона с частотой сети 60 Гц, она имела другой номер (partnumber)

). Да, как и бытовые часы, PDP-11 отсчитывало время по периодам напряжения в сети.

Высокая стоимость программирования

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

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

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

Однако, кажется, Белл не знал о работе Томпсона и Ричи, которые были заняты конструированием своего собственного программного окружения на PDP-11 в Нью Джерси.

Люди, которые построили дизайн

Перейдём ко второму разделу: люди

Этот раздел наиболее интересен для меня, как для любителя истории, потому что изучение истории компьютеров, как и любого другого исторического предмета, это в основном изучение истории людей и того контекста, в котором они принимали решения.

Белл отмечает, что хотя компьютеры создаются на основе технологии, они создаются людьми, и поэтому он посвятил эту секцию описанию динамики группы DEC в процессе разработки PDP-11.

Проблемы, с которыми сталкивались разработчики компьютера, можно условно разделить на две части: проблемы из-за неопытности и проблемы системного характера.

Здесь Белл вспоминает слова Фреда Брукса из его последней на то время книги "Мифический человеко-месяц".

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

Хронология дизайна

Этот раздел является окном в работу корпорации DEC в конце 1960-х.

Когда компания росла на 30 или 40% в год, была необходимость в постоянной реорганизации. Внутренняя организация групп дизайна в DEC на протяжении многих лет колебалась между ориентированностью на рынок и ориентированностью на продукт. В любое конкретное время, около трети сотрудников работали в компании меньше года.

Поднимите руки, если это для вас знакомо.

Разработчики компании были организованы в небольшие группы: группа PDP-10, группа PDP-15 (18-битная машина), группа PDP-8, подгруппа PDP-8/S, группа LINC-8. Во времена разработки PDP-11, компания была структурирована вокруг продуктовых линеек. В результате такой организации, опыт в архитектуре был распределён по группам. Каждая группа включала маркетологов и инженеров, ответственных за разработку продукта, программного и аппаратного обеспечения.

Я не буду перечислять здесь всё это, за одним исключением. Белл уделяет некоторое время обзору каждой группы, перечисляя её сильные и слабые стороны, и их вклад в PDP-11.

они строили большие, мощные, машины с разделением времени. Группа PDP-10 была самой сильной в компании. Хотя группа PDP-10 в целом имела наилучшее понимание того, как работает системная архитектура, у них не было понятия о диапазоне систем, им было интересно строить только быстродействующие компьютеры. Она была во многом отдельным подразделением компании, с минимальным количеством взаимодействий с другими группами.

PDP-10 была DEC-версией мэйнфрейма, очень быстродействующей, и доступной только по одной фиксированной цене. Недавно я работал в одной софтверной компании, в которой один или два самых старых продукта делали почти всю прибыль компании, и я хорошо понимаю позицию Белла.

Первый проект назывался PDP-X, и включал в себя спецификации ряда машин. Первые работы по созданию 16-битного компьютера начались под управлением менеджера PDP-15, маркетолога с инденерным опытом. К сожалению, менеджер группы обвинил менеджмент, что их проект потенциально такой же сложный, как PDP-10 (это было не так), и что он уверен в провале проекта, и поэтому больше никто не хотел делать другие большие компьютеры, кроме единственного большого компьютера компании. Это была архитектура семейства машин, и она была лучше спроектирована, чем более поздняя PDP-11, но не была особенно инновационной.

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

В ретроспективе, люди, вовлечённые в разработку PDP-X, по-видимому, в то же самое время работали над разработкой Data General.

Это могло быть не замечено обычным читателем, но это отсылка к «предательской восьмёрке» Шокли десятилетием раньше(

6

Эта группа включала в себя Роберта Нойса и Гордона Мура, которые через десять лет покинули Fairchild и основали собственную компанию Intel.

).

Из записей неясно, ушел ли де Кастро из-за того, что PDP-X был прекращён, или его уход стал последней соломинкой, убившей проект. Эдсон де Кастро, продукт-менеджер PDP-8, и глава проекта PDP-X покинул DEC, с несколькими людьми из его команды, чтобы сформировать Data General. В любом случае, результат был очевиден, как пишет Белл.

Дизайн и планирование велись беспорядочно, потому что Data General составляла конкуренцию со своим очень маленьким 16-битным компьютером. Когда проект PDP-X был закрыт, начался проект DCM (Desk Calculator Machine, кодовое название, выбранное для секретности).

Data General не конкурировали с DEC со своим 16-битным компьютером Nova на том рынке, для которого был разработан PDP-8 и который де Кастро знал, как свои пять пальцев: монтируемое в стойку лабораторное оборудование

12-битный PDP-8 vs Data General’s 16-битный Nova

PDP-11: оценки

В последней части статьи проводится сравнение PDP-11 с предшественниками, и после этого Белл переходит к оценке самой архитектуры PDP-11. Самым большим прорывом была UNIBUS.

Сотни типов запоминающих устройств и периферии могли подключаться к ней, она стала стандартным архитектурным компонентом систем в ценовом диапазоне от $3K до $100K (1975). В целом, шина UNIBUS превзошла все ожидания.

Что такое UNIBUS?

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

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

Вот пример ранних модулей DEC.

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

Доступность компонентов средней степени интеграции устраняет необходимость в сложном бэкплейне и перемещает основную сложность в модули, которые установлены в бэкплейн. UNIBUS является развитием предыдущих разработок DEC и является абстракцией идеализированной шины управления. Это даёт возможность для построения стандартных модулей, которые подключаются к компьютеру.

Любая компания, не только DEC, может легко делать компоненты, взаимодействующие с шиной. Шина UNIBUS, как стандарт, являлась компонентом архитектуры, которая позволяет строить легко конфигурируемые системы. UNIBUS создала вторичную индустрию, которая предлагала альтернативные источники поставок памяти и периферии. Хорошие шины создают хорошее инженерное окружение, в котором люди могут сконцентрироваться на структурированном дизайне. Если не считать шину IBM 360, UNIBUS была самым распространённым стандартом шины в компьютерной индустрии.

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

Чему нас научила PDP-11?

в 1976-77 годах, но с нашей точки зрения, сорок лет спустя, влияние PDP-11 было огромным. Ретроспектива Белла завершается на том времени, когда была написана статья, т.е.

RISC

Вначале когда PDP-11 ещё не была разработана, и, тем более, не рассматривалась как RISC-машина — этого термина не существовало до того, как его ввёл Джон Коук в 1976 по отношению к IBM 801. Однако для каждого, кто имел опыт программирования процессоров ARM, современных RISC-процессоров, их сходство очевидно. Так же, как дизайн языков программирования является процессом как эволюционного развития, так и заимствований, то же самое происходит с дизайном системы команд.

Единственными процессорами, имевшими отдельные инструкции ввода-вывода, являются Intel 8080 и его двоюродный брат Z80. Также PDP-11 вбил кол прямо в сердце выделенных инструкций ввода-вывода, утвердив модель отображаемого на память ввода-вывода, что является самым распространённым механизмом на сегодня.

UNIX

PDP-11 сильно повлияла на программное обеспечение и операционные системы. PDP-11 был машиной, на которой Кен Томпсон и Деннис Ритчи разработали UNIX в Bell Labs

7

UNIX была изначально создана на PDP-7. В 1970 разработка переместилась на PDP-11/20, а позднее на PDP-11/45.

.

До PDP-11 С не существовал, это был компьютер, для которого С был разработан. До PDP-11 UNIX не существовал. Если вы хотите знать, почему в классическом С int имеет 16 бит, то это из-за PDP-11.

UNIX принёс нам идеи каналов (pipes), «всё есть файл» и интерактивных вычислений.

VAX-11/780

При интерактивных вычислениях, использование памяти не ограничено, и хотя PDP была хороша для управления процессами, требования интерактивных вычислений стали поводом для создания замены PDP-11.

В год выхода статьи Белла, 1977, был выпущен последователь PDP-11, VAX-11, что означало “virtual address extension”.

BSD

UNIX пришёл в Беркли в 1974 году, ленту привёз Кен Томпсон, что стало началом развития на западном побережье BSD — Berkley Systems Distribution.

Berkeley UNIX породила новое поколение хакеров, которые впоследствии основали такие компании, как Sun Microsystems, и языки типа Self, который напрямую привёл к появлению Java. Berkeley UNIX была портирована на VAX в начале 1980-х и процветала как контркультурная альтернатива DEC-овской операционной системе VMS.

UNIX был портирован на огромное число компьютерных систем в течение 80-х и в результате «войны UNIX-ов» появились различные BSD-системы, существующие по сей день.

NeXT

4BSD, производная от оригинального дистрибутива Беркли, стала основой операционной системы семейства компьютеров NeXT от Стива Джобса. Когда Apple купила NeXT в 1997 году, NextSTEP и производная от BSD стали основой Darwin, OSX и iOS.

Windows NT

Как мы сказали ранее, говоря об Эдисоне де Кастро, в DEC бывали и изменники.

Те, кто знает внутренности Windows и операционную систему VMS, возможно, заметят общие черты. Дэйв Катлер, архитектор операционной системы VAX VMS, после провальной попытки начать новый комбинированный проект операционной системы и аппаратного обеспечения, предназначенного на замену VAX, ушёл в Microsoft в 1988, приведя с собой всю свою команду, и возглавил разработку Windows NT.

Xerox Alto

Чтобы завершить разговор об истории де Кастро, серия Data General Nova вдохновила Чарльза Такера и Батлера Лэмпсона, разработчиков в Ксерокс Альто, которые, в свою очередь, вдохновили разработчиков Apple Macintosh.

Data General Nova

Соперничество между Data General и DEC продолжилось и в 32-битную эру, о чём и рассказал Трейси Киддер, получивший в 1981 году Пулитцеровскую премию, в книге "The Soul of a New Machine".

Чему мы научились у PDP-11?

Хотя её разработка была иногда хаотичной, и не лишена недостатков, PDP-11 является точкой пересечения многих нитей истории.

Аппаратное обеспечение, софт, языки программирования, операционные системы, на всё это повлияла PDP-11.

Это стоит праздновать

Связанные посты:

What did devops mean ?
Introducing gb, a project based build tool for the Go programming language
avr11: how to add 256 kilobytes of ram to an Arduino
Padding is hard

Теги
Показать больше

Похожие статьи

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть