![](https://habrastorage.org/webt/bt/ex/g2/btexg2j_gmcvjxnfpjn4x3jbxs4.png)
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.
В этом году мы отмечаем 60-ю годовщину основания компании, которая производила PDP-11. Прошло 40 лет с момента, когда была написана эта статья, и я посчитал, что будет интересным сделать ретроспективу статей Белла с нашей современной точки зрения.
![](https://habrastorage.org/webt/ef/p_/vy/efp_vyyz1an5rfis3axmot-vf5i.jpeg)
Чем была Digital Equipment Corporation?
Чтобы представить себе то время, когда была написана статья, мы сначала должны немного поговорить о компании, которая выпустила PDP-11, Digital Equipment Corporation из Мэйнарда, штат Массачусетс. Более известную, как DEC.
![](https://habrastorage.org/webt/vw/er/6w/vwer6wfpzv4-ppq7-xfxqjcnoqc.jpeg)
DEC была основана в 1957 году Кеном Олсеном и Харланом Андерсоном. Олсен и Андерсон работали вместе в лабораории Линкольна Массачусетского Технологического Института, где и заметили, что студенты стоят в очереди часами, чтобы воспользоваться TX-0, экспериментальным интерактивным компьютером, разработанным Уэзом Кларком
1
Кларк продолжил развивать TX-0 в TX-2 и позже присоединился к DEC в качестве начальника подразделения LINC
![](https://habrastorage.org/webt/u-/p_/lm/u-p_lmwp4ly-4rjqdbq6bvjayuc.jpeg)
Это TX-0.
![](https://habrastorage.org/webt/so/de/vr/sodevrwmacb_y7v65biysm1xxom.jpeg)
Давайте сравним его с чем-нибудь типа IBM 704, компьютером того времени, который студенты в большинстве своём игнорировали
2
После презентации кто-то предположил, что антипатия студентов к IBM может быть основана на недостатке бюджета на компьютерное время этой системы.
Что Ольсен и Андерсон обнаружили, это то, что желание пользоваться интерактивным компьютером было настолько сильным, что существует рынок «маленьких» компьютеров, предназначенных для этой роли.
![](https://habrastorage.org/webt/nc/eo/ab/nceoabpycn2zpif7o01ykcgjj5k.jpeg)
DEC вначале предложила PDP-1, эффективную коммерческую версию TX-0.
Поправка: Майкл Чепонис, глава проекта по восстановлению PDP-1, любезно написал мне следующее:
Whirlwind и PDP-1 имеют 5-битный код операции, TX-0 начал с 2- или 3-битного кода операции, но это значение увеличилось при росте объёма памяти у TX-2. Сравнение порядка следования кодов PDP-1 и Whirlwind выявляет, что PDP-1 является удешевлённой и несколько усовершенствованной версией архитектуры Whirlwind.
- Усовершенствование: добавлена косвенная адресация.
- Удешевление: убран «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: цели создания, архитектуру, различные реализации, и людей, его создавших. Мы изучим его дизайн, начиная со спецификаций архитектуры, и рассмотрим, как на них повлияла технология, организация разработки, продажи, применение, организация производства и природа конечных пользователей.
В это время, в 1976 году, Белл был главой разработки DEC уже почти четыре года. Ясно, что он рассматривает успех PDP-11 в более широком контексте рынка, потребности которого они были должны были удовлетворить, и который в дальнейшем повлиял на эволюцию всего семейства PDP-11.
Выдержанная в духе слов Белла, эта презентация сфокусирована на двух аспектах статьи, на технологии и на людях.
Основы: мысли, лежащие в основе дизайна
Белл начинает с такого наблюдения По своей природе компьютерная инженерия ориентирована на достижение цели — создания конечного продукта. Следовательно, в ней сложно строить долгосрочные планы.
Это принципы agile. В то время. За 25 лет до Snowbird и написания манифеста agile. Когда это было написано, DEC уже давно не была стартапом, борющимся за своё существование, она была зрелой компанией с несколькими успешными продуктовыми линейками на рынке, и Белл говорит о том, что необходимость выпустить минимально востребованный продукт (minimum viable product) важнее всех остальных долгосрочных планов.
Подобно IBM/360, PDP-11 была разработана не как одна модель компьютера, а как ряд моделей, при этом программное обеспечение, написанное для маленькой PDP-11, будет совместимо и с большой.
«Термин „архитектура“ используется здесь для описания атрибутов системы, какой её видит программист, т.е. концептуальной структуры и функционального поведения, а не для описания организации потоков данных и управления, логического дизайна и физической реализации.» — G. M. Amdahl G. A. Blaauw and F. P. Brooks Jr. 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, которая имела всего восемь инструкций.
![](https://habrastorage.org/webt/vi/me/co/vimecoj2x5aezvsojy6vza9erdi.jpeg)
Причиной крошечного адресного пространства была цена. Память была чрезвычайно дорогой в 60-е и начале 70-х, когда каждый бит состоял из крошечного магнитного сердечника, которые вплетались в решетку управляющих проводников.
Сердечники были упорядочены в панели, в данном случае по 4096 бит, которые соединялись в стопки, чтобы получить слово, таким образом 4096 слов памяти состояли из 16 миллионов колец (здесь, очевидно, ошибка в оригинальном тексте, 4096 слов * 16 бит = 65536 колец. прим. перев.), каждое из которых было, по крайней мере частично, собрано вручную. Теперь ясно, почему память была такой дорогой.
![](https://habrastorage.org/webt/cm/fg/jp/cmfgjpj8yor6yj6qy6r6efh8og4.png)
Белл и другие дизайнеры PDP-11 знали, что цены на сердечники будут продолжать падать, и что полупроводниковая память, хотя и не столь эффективная по цене в то время, будет продолжать дешеветь из расчёта одного хранимого байта. Таким образом, количество памяти, которое покупатель сможет себе позволить купить будет повышаться с течением времени, так как пользователи склонны покупать «системы за одинаковую цену в долларах». Но всё же,
PDP-11 последовала этой плохой традиции экономить на адресных битах, но её спас принцип — хороший дизайн способен пережить по крайней мере одно крупное изменение.
Даже с учетом предсказаний разработчиков, Белл отметил, что не прошло и двух лет со дня введения в строй архитектуры PDP-11, как потребовалось включение в архитектуру модуля управления памятью, чтобы обеспечить доступ к большему, 18-битному адресному пространству ценой увеличения сложности программного обеспечения. Через несколько лет было добавлено ещё 4 бита.
Справедливости ради, хотя Белл и упрекал себя за непредусмотрительность, традиция делать недостаточное адресное пространство продолжается по сей день. Помните ограничение 640К в DOS? Помните сражения с himem.sys? Сталкивались с ситуацией, когда 32-битная программа требует больше 2 Гб под данные?
Итак, никто не совершенен.
Недостаточно регистров
Второй слабостью миникомпьютеров была тенденция к недостаточному числу регистров. Это было исправлено в PDP-11, который имел восемь 16-битных регистров. Позднее, шесть 32-битных регистров было добавлено для арифметики с плавающей точкой. Большее число регистров могло увеличить время переключения контекста задачи.
Не являлось чем-то необычным, даже для мэйнфреймов того времени, предоставлять только один регистр — аккумулятор. Если дополнительные регистры предоставлялись, они использовались только как индексные регистры, не как регистры общего назначения.
Также интересно отметить замечание Белла, что лишние регистры могут быть неудобны для пользователя. В начале 1970-х наиболее распространённым было программирование машин напрямую на ассемблере.
Есть сильная взаимосвязь между числом регистров в архитектуре, числом адресных бит, и размером инструкции. Все эти факторы имеют причиной недостаточное количество памяти, и имело смысл тщательно продумывать систему команд.
В машинах Фон Неймана (которыми были практически все компьютеры 60-х) программа и данные разделяют одно и то же, ограниченное адресное пространство, и неэффективная программа тратила впустую не только время компьютера, но и память. Медленную программу можно терпеть, но если программа не помещается в память, это было фатальным, то есть способ кодирования инструкций должен быть настолько эффективным, насколько это возможно.
Давайте рассмотрим очень распространённый случай перемещения из одной локации памяти в другую. Сколько бит нужно, чтобы описать эту операцию? Вот одна из возможных реализаций:
MOV addr addr
Нужно 16 бит для исходного адреса, ещё 16 для адреса назначения, и некоторое количество бит для кодирования самой инструкции MOV. Пусть всего будет 40 бит, это не кратно 16, что означает сложную 2,5-словную кодировку инструкций. Однако, что если мы загрузим адрес в регистр?
MOV (R0), (R1)
В этом случае нам нужно описывать только регистры, PDP-11 имеет 8 регистров, и для описания регистра достаточно только 3 бита, плюс несколько бит на описание оператора. Такая команда легко влезет в 16-битное слово, и не требует сложного кодирования инструкций с переменной длиной.
![](https://habrastorage.org/webt/ud/dt/01/uddt01pifmvr1f_nkkop39uzxr0.png)
В действительности PDP-11 использует 6 бит на регистр, и 4 бита на операцию, если инструкция имеет два операнда.
Аппаратный стек
Третья слабость миникомпьютеров была недостаточная аппаратная поддержка стека. В PDP-11 был реализован механизм автоинкремента и автодекремента адреса. Это решение уникально для PDP-11 и доказало свою исключительную полезность. (И это решение копировалось разработчиками других систем.)
В наше время трудно представить аппаратуру, в которой не реализован стек, но на самом деле стек не очень важен, если вы не используете рекурсию.
Дизайн PDP-11 относится к 1969 году, и если мы посмотрим на языки программирования того времени, FORTRAN и COBOL, они не поддерживали рекурсивный вызов функции. Последовательность вызова функции включала в себя сохранение адреса возврата в пустом слове в начале процедуры, что делало рекурсию невозможной.
![](https://habrastorage.org/webt/9t/a0/jg/9ta0jg3ud742lxb5ayw93pfv-ke.png)
PDP-11 определяет указатель стека так, как мы понимаем его сегодня, как регистр, управляемый операциями PUSH и POP, но PDP-11 пошла дальше, и разрешила любому регистру работать как указатель стека, добавив модификатор автоинкремента/декремента к регистрам-операндам.
Например, одна инструкция:
MOV R4, -(R6)
уменьшит значение в R6 на два, затем сохранит значение R4 по адресу, хранящемуся в R6. Таким образом в ассемблере PDP-11 мы размещаем значение на стеке. Если кто-либо из вас программировал под ARM, это должно быть вам знакомо.
Это означает, что нет нужды в выделенных инструкциях PUSH или POP, это экономит пространство инструкций, позволяет использовать любой регистр в качестве указателя стека, хотя традиционно указателем стека является R6, и используется аппаратурой при выполнении вызова подпрограммы.
Задержка при выполнении прерывания
Четвёртая слабость миникомпьютеров того времени, это ограниченная поддержка прерываний и медленное переключение контекста, и эта проблема была решена использованием контроллера векторных прерываний UNIBUS с прямым подключением прерываний устройств.
В этой точке жизни DEC, почти все её продукты имели архитектуру PDP-10, мэйнфрейма DEC, который был предназначен для интерактивных приложений, лабораторий и управления процессами. Отклик на прерывания, задержка между активацией сигнала прерывания и началом обработки прерывания, является ключевым для получения высокой производительности реального времени.
В PDP-11 устройство, возбудившее прерывание, предоставляет адрес обработчика прерывания. Белл честно пишет об этом:
Основной механизм очень быстрый, требует только четыре цикла обращения к памяти от момента, когда было запрошено прерывание до момента выполнения первой инструкции обработчика прерывания.
Поддержка символов
Пятой слабостью большинства миникомпьютеров была плохая поддержка строк, что решалось в PDP-11 возможностью прямой адресации байт.
Важность поддержки строк и символов стала возрастать в течение 1960-х, когда стали появляться решения для науки и бизнеса. Главенствующим способом кодирования в то время был 6-битный набор символов, который предоставлял достаточно места для заглавных букв, цифр от 0 до 9, пробела и нескольких знаков пунктуации, достаточных для печати финансовых отчётов.
![](https://habrastorage.org/webt/4j/7a/2i/4j7a2igan6lbjg_1rs05pxmoeus.jpeg)
Так как память была очень дорогой, разместить один символ в 12-битном или 18-битном слове было просто неприемлемо, и символы упаковывались в слова.
Это улучшает эффективность хранения, но сложно для таких операций, как перемещение, сравнение и объединение, которые должны учитывать, что символ может находиться в младшей или в старшей части слова, что увеличивает количество дорогостоящей памяти, занимаемой программой.
Проблема была решена в PDP-11, машина могла оперировать как 16-битными словами, так и набирающими популярность 8-битными байтами. Расширение длины символа на два бита упрощало операции со строками, и упрощало адаптацию к набирающему популярность 7-битному стандарту ASCII, сторонником которого являлась DEC в то время. Белл заканчивает этот пункт так:
Несмотря на то, что инструкции обработки строк отсутствовали в аппаратуре, обычные строковые операции (перемещение, сравнение, конкатенация) могли быть запрограммированы как очень короткий цикл.
И это на самом деле так. Можно было написать процедуру копирования всего в две инструкции, полагая, что исходный адрес и адрес назначения находятся в регистрах.
loop: MOVB (src)+, (dst)+
BNE loop
Этот код использует тот факт, что команда MOV устанавливает флаги. Цикл будет продолжаться, до тех пор, пока значение в исходном адресе не станет нулевым, и в этом месте управление перейдёт к следующей инструкции. Вот почему строки С заканчиваются нулём.
ПЗУ
Шестым слабым местом миникомпьютеров была неспособность использовать ПЗУ, и PDP-11 не имела этого недостатка. Большая часть кода, написанная для PDP-11 была «чистой» и допускала повторное вхождение без специальных усилий программиста, что позволяло напрямую использовать ПЗУ.
В приложениях управления процессами, в которых программы относительно фиксированы, должны загружать программу каждый раз с магнитной лены или перфоленты, а это дорого. Вы должны купить и поддерживать редко используемые устройства ввода-вывода. Более удобно, когда программа всегда присутствует в компьютере. Однако, из-за сильных ограничений количества памяти, и отсутствия аппаратной поддержки стека, самомодифицирующийся код был зачастую неизбежен, что серьёзно ограничивало использование ПЗУ. Белл с заслуженной гордостью говорит о том, что PDP-11 изменило ситуацию.
Примитивные возможности ввода-вывода
Седьмая слабость миникомпьютеров были примитивные возможности ввода-вывода.
В течение конца 60-х, когда PDP-11 была разработана, устройства ввода-вывода были очень дороги. Мэйнфреймы того времени использовали так называемый канальный ввод-вывод, при котором центральный процессор посылал маленькую программу контроллеру канала, который выполнял программу и сообщал о результате. Программа могла, например, загрузить данные с магнитной ленты или пробить перфокарту.
Канальный ввод-вывод был важен, позволял разгрузить процессор от операций ввода-вывода, и совершать действия по вводу-выводу одновременно, что повышает утилизацию процессора. Обратной стороной было то, что канальный ввод-вывод требовал отдельного ЦПУ в каждом канальном контроллере, что повышало стоимость всей системы весьма существенно.
![](https://habrastorage.org/webt/i8/5d/p-/i85dp-32llbfdd4hxev4ixfzcs0.jpeg)
В мире миникомпьютеров ввод-вывод выполнялся обычно прямо на ЦПУ, обычно с помощью специализированных инструкций, захардкоженных для каждого специфического устройства, такого, как ленточный накопитель или консольный принтер.
PDP-11 ввел кое-что необычное, отображаемый на память ввод-вывод. Это не был такой отображаемый в память ввод-вывод, который вы можете использовать с помощью системного вызова mmap(2), а просто соглашение, что некоторые адреса в памяти не являются просто ячейками памяти, а их содержимое отображается на платы, вставленные в бэкплейн, который в DEC носил название UNIBUS.
![](https://habrastorage.org/webt/zg/bx/9i/zgbx9il5qoyr81cc_zkpbxarjza.jpeg)
Например, значение, записанное в 777566
4
будет записано в устройство, подсоединённое к консоли, обычно печатающий терминал.Адреса приведены в восьмиричной системе, как это было принято на предыдущих 12, 18, и 36-битных машинах DEC
![](https://habrastorage.org/webt/0p/_r/wk/0p_rwkprbziqlerzwca8rwp0ulo.jpeg)
Если вы читали значение из адреса 777570, вы получали значение, введённое переключателями на передней панели. Это часто использовалось для конфигурирования загрузчика.
![](https://habrastorage.org/webt/au/d-/4y/aud-4yckvahw_4xpj_wlwyfvqpy.jpeg)
Аналогично, обращение к дисководу RK05 производилось путём записи номера сектора, к которому вы хотите получить доступ, в адрес 777412, адрес, куда вы хотите записать данные, в 777410, и количество слов в 777406. Затем устанавливаем нулевой бит по адресу 777404 в 1 (бит GO), и привод перенесёт нужное количество слов прямо в память.
![](https://habrastorage.org/webt/au/d-/4y/aud-4yckvahw_4xpj_wlwyfvqpy.jpeg)
Моим любимым устройством был таймер KW11-L. Запись бита 6 по адресу 777546 запускает подачу прерываний каждые 20 мс. Почему менно 20 мс? Потому что это период частоты переменного тока
5
Если вы заказывали машину для региона с частотой сети 60 Гц, она имела другой номер (partnumber)
Да, как и бытовые часы, PDP-11 отсчитывало время по периодам напряжения в сети.
Высокая стоимость программирования
Девятой слабостью миникомпьютеров была высокая стоимость программирования. Многие пользователи программировали на языке ассемблера без удобных редакторов и IDE, файловых систем и отладчиков, доступных на больших системах. PDP-11 не смогла преодолеть этот недостаток, хотя на основе PDP-11 были построены более сложные системы, чем на предшествующих моделях, PDP-8 и PDP-15.
Из-за своей минималистичной природы, миникомпьютеры не предоставляли удобную среду для разработки программ. Зачастую использовалось утомительное переключение тумблеров, или, возможно, редактирование и ассемблирование программ на другом, большом компьютере, и перенос их на бумажной ленте.
Это было подобно тому, как сегодня программируются микроконтроллеры, мы редактируем программу на большой рабочей станции, компилируем целевой бинарный файл, и переносим его во флеш-память микроконтроллера.
![](https://habrastorage.org/webt/ep/kq/lh/epkqlhrntlqhzoejdeaownpnmws.jpeg)
Однако, кажется, Белл не знал о работе Томпсона и Ричи, которые были заняты конструированием своего собственного программного окружения на PDP-11 в Нью Джерси.
Люди, которые построили дизайн
Перейдём ко второму разделу: люди
Этот раздел наиболее интересен для меня, как для любителя истории, потому что изучение истории компьютеров, как и любого другого исторического предмета, это в основном изучение истории людей и того контекста, в котором они принимали решения.
Белл отмечает, что хотя компьютеры создаются на основе технологии, они создаются людьми, и поэтому он посвятил эту секцию описанию динамики группы DEC в процессе разработки PDP-11.
Проблемы, с которыми сталкивались разработчики компьютера, можно условно разделить на две части: проблемы из-за неопытности и проблемы системного характера.
Здесь Белл вспоминает слова Фреда Брукса из его последней на то время книги "Мифический человеко-месяц".
Брукс, глава проекта OS/360, бился годами над созданием единой операционной системы общего назначения, которая может работать на всех моделях IBM/360, что и было целью проекта. Слова Брукса были свежи в памяти Белла когда он написал этот параграф.
Хронология дизайна
Этот раздел является окном в работу корпорации DEC в конце 1960-х.
Внутренняя организация групп дизайна в DEC на протяжении многих лет колебалась между ориентированностью на рынок и ориентированностью на продукт. Когда компания росла на 30 или 40% в год, была необходимость в постоянной реорганизации. В любое конкретное время, около трети сотрудников работали в компании меньше года.
Поднимите руки, если это для вас знакомо.
Во времена разработки PDP-11, компания была структурирована вокруг продуктовых линеек. Разработчики компании были организованы в небольшие группы: группа PDP-10, группа PDP-15 (18-битная машина), группа PDP-8, подгруппа PDP-8/S, группа LINC-8. Каждая группа включала маркетологов и инженеров, ответственных за разработку продукта, программного и аппаратного обеспечения. В результате такой организации, опыт в архитектуре был распределён по группам.
Белл уделяет некоторое время обзору каждой группы, перечисляя её сильные и слабые стороны, и их вклад в PDP-11. Я не буду перечислять здесь всё это, за одним исключением.
Группа PDP-10 была самой сильной в компании. они строили большие, мощные, машины с разделением времени. Она была во многом отдельным подразделением компании, с минимальным количеством взаимодействий с другими группами. Хотя группа PDP-10 в целом имела наилучшее понимание того, как работает системная архитектура, у них не было понятия о диапазоне систем, им было интересно строить только быстродействующие компьютеры.
Недавно я работал в одной софтверной компании, в которой один или два самых старых продукта делали почти всю прибыль компании, и я хорошо понимаю позицию Белла. PDP-10 была DEC-версией мэйнфрейма, очень быстродействующей, и доступной только по одной фиксированной цене.
Первые работы по созданию 16-битного компьютера начались под управлением менеджера PDP-15, маркетолога с инженерным опытом. Первый проект назывался PDP-X, и включал в себя спецификации ряда машин. Это была архитектура семейства машин, и она была лучше спроектирована, чем более поздняя PDP-11, но не была особенно инновационной. К сожалению, менеджер группы обвинил менеджмент, что их проект потенциально такой же сложный, как PDP-10 (это было не так), и что он уверен в провале проекта, и поэтому больше никто не хотел делать другие большие компьютеры, кроме единственного большого компьютера компании.
И здесь Белл даёт нам хороший урок: если ваши компетенции находятся в той же цепочке, что и проекты других менеджеров, у них есть эффективный инструмент, чтобы убить ваш проект до того, как он выйдет на рынок.
В ретроспективе, люди, вовлечённые в разработку PDP-X, по-видимому, в то же самое время работали над разработкой Data General.
Это могло быть не замечено обычным читателем, но это отсылка к «предательской восьмёрке» Шокли десятилетием раньше
6
Эта группа включала в себя Роберта Нойса и Гордона Мура, которые через десять лет покинули Fairchild и основали собственную компанию Intel.
Эдсон де Кастро, продукт-менеджер PDP-8, и глава проекта PDP-X покинул DEC, с несколькими людьми из его команды, чтобы сформировать Data General. Из записей неясно, ушел ли де Кастро из-за того, что PDP-X был прекращён, или его уход стал последней соломинкой, убившей проект. В любом случае, результат был очевиден, как пишет Белл.
Когда проект PDP-X был закрыт, начался проект DCM (Desk Calculator Machine, кодовое название, выбранное для секретности). Дизайн и планирование велись беспорядочно, потому что Data General составляла конкуренцию со своим очень маленьким 16-битным компьютером.
Data General не конкурировали с DEC со своим 16-битным компьютером Nova на том рынке, для которого был разработан PDP-8 и который де Кастро знал, как свои пять пальцев: монтируемое в стойку лабораторное оборудование
![](https://habrastorage.org/webt/7j/z0/ha/7jz0hacw75yjku2enc4pbz3pgoy.jpeg)
12-битный PDP-8 vs Data General’s 16-битный Nova
![](https://habrastorage.org/webt/dt/gl/5l/dtgl5lnjei8r8hyf3ec33ufgioo.jpeg)
PDP-11: оценки
В последней части статьи проводится сравнение PDP-11 с предшественниками, и после этого Белл переходит к оценке самой архитектуры PDP-11. Самым большим прорывом была UNIBUS.
В целом, шина UNIBUS превзошла все ожидания. Сотни типов запоминающих устройств и периферии могли подключаться к ней, она стала стандартным архитектурным компонентом систем в ценовом диапазоне от $3K до $100K (1975).
Что такое UNIBUS?
![](https://habrastorage.org/webt/tf/jd/ow/tfjdowtglv5wihs8_bnuuht-11i.jpeg)
Самые ранние коммерческие компьютеры разрабатывались как набор модулей, подключаемых к бэкплейну с проводными соединениями. Во времена ламп это было необходимостью, потому что лампы были ненадёжны и модули нужно было заменять быстро.
![](https://habrastorage.org/webt/i3/je/cz/i3jeczdmrf1xtwgbhwzdazbcwzw.jpeg)
Позже желание построить компьютер из стандартных модулей привело к построению обобщённых логических блоков, соединённых с помощью сложного бэкплейна.
Вот пример ранних модулей DEC.
![](https://habrastorage.org/webt/pg/dl/sv/pgdlsv83s3hiyinvvjjygywglyq.jpeg)
Вы могли монтировать их на сложном бэкплейне с проводными соединениями, и построить из них компьютер, в данном случае PDP-8.
UNIBUS является развитием предыдущих разработок DEC и является абстракцией идеализированной шины управления. Доступность компонентов средней степени интеграции устраняет необходимость в сложном бэкплейне и перемещает основную сложность в модули, которые установлены в бэкплейн. Это даёт возможность для построения стандартных модулей, которые подключаются к компьютеру.
Шина UNIBUS, как стандарт, являлась компонентом архитектуры, которая позволяет строить легко конфигурируемые системы. Любая компания, не только DEC, может легко делать компоненты, взаимодействующие с шиной. Хорошие шины создают хорошее инженерное окружение, в котором люди могут сконцентрироваться на структурированном дизайне. UNIBUS создала вторичную индустрию, которая предлагала альтернативные источники поставок памяти и периферии. Если не считать шину IBM 360, UNIBUS была самым распространённым стандартом шины в компьютерной индустрии.
До появления UNIBUS, то, какие устройства ввода-вывода мог поддерживать миникомпьютер, определялось только его разработчиками. То, как взаимодействовать с устройствами, было жестко задано логическими схемами компьютера. С появлением UNIBUS, открылось широкое поле для кастомизации компьютера конечным пользователем и поле для экспериментов.
Чему нас научила PDP-11?
![](https://habrastorage.org/webt/nn/e5/ex/nne5exbe74glx2ouw6c_m5ynxxm.jpeg)
Ретроспектива Белла завершается на том времени, когда была написана статья, т.е. в 1976-77 годах, но с нашей точки зрения, сорок лет спустя, влияние PDP-11 было огромным.
RISC
Вначале когда PDP-11 ещё не была разработана, и, тем более, не рассматривалась как RISC-машина — этого термина не существовало до того, как его ввёл Джон Коук в 1976 по отношению к IBM 801. Однако для каждого, кто имел опыт программирования процессоров ARM, современных RISC-процессоров, их сходство очевидно. Так же, как дизайн языков программирования является процессом как эволюционного развития, так и заимствований, то же самое происходит с дизайном системы команд.
Также PDP-11 вбил кол прямо в сердце выделенных инструкций ввода-вывода, утвердив модель отображаемого на память ввода-вывода, что является самым распространённым механизмом на сегодня. Единственными процессорами, имевшими отдельные инструкции ввода-вывода, являются Intel 8080 и его двоюродный брат Z80.
UNIX
PDP-11 сильно повлияла на программное обеспечение и операционные системы. PDP-11 был машиной, на которой Кен Томпсон и Деннис Ритчи разработали UNIX в Bell Labs
7
UNIX была изначально создана на PDP-7. В 1970 разработка переместилась на PDP-11/20, а позднее на PDP-11/45.
До PDP-11 UNIX не существовал. До PDP-11 С не существовал, это был компьютер, для которого С был разработан. Если вы хотите знать, почему в классическом С 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 была портирована на VAX в начале 1980-х и процветала как контркультурная альтернатива DEC-овской операционной системе VMS. Berkeley UNIX породила новое поколение хакеров, которые впоследствии основали такие компании, как Sun Microsystems, и языки типа Self, который напрямую привёл к появлению Java.
UNIX был портирован на огромное число компьютерных систем в течение 80-х и в результате «войны UNIX-ов» появились различные BSD-системы, существующие по сей день.
NeXT
4BSD, производная от оригинального дистрибутива Беркли, стала основой операционной системы семейства компьютеров NeXT от Стива Джобса. Когда Apple купила NeXT в 1997 году, NextSTEP и производная от BSD стали основой Darwin, OSX и iOS.
Windows NT
Как мы сказали ранее, говоря об Эдисоне де Кастро, в DEC бывали и изменники.
Дэйв Катлер, архитектор операционной системы VAX VMS, после провальной попытки начать новый комбинированный проект операционной системы и аппаратного обеспечения, предназначенного на замену VAX, ушёл в Microsoft в 1988, приведя с собой всю свою команду, и возглавил разработку Windows NT. Те, кто знает внутренности Windows и операционную систему VMS, возможно, заметят общие черты.
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