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

https://dave.cheney.net/2017/12/04/what-have-we-learned-from-the-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.

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



Чем была Digital Equipment Corporation?


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



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

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



Это TX-0.



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

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

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



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, которая имела всего восемь инструкций.



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

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



Белл и другие дизайнеры 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-битное слово, и не требует сложного кодирования инструкций с переменной длиной.



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

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


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

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

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



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, пробела и нескольких знаков пунктуации, достаточных для печати финансовых отчётов.



Так как память была очень дорогой, разместить один символ в 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 была разработана, устройства ввода-вывода были очень дороги. Мэйнфреймы того времени использовали так называемый канальный ввод-вывод, при котором центральный процессор посылал маленькую программу контроллеру канала, который выполнял программу и сообщал о результате. Программа могла, например, загрузить данные с магнитной ленты или пробить перфокарту.

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



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

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



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



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



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



Моим любимым устройством был таймер KW11-L. Запись бита 6 по адресу 777546 запускает подачу прерываний каждые 20 мс. Почему менно 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-х.

Внутренняя организация групп дизайна в 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 и который де Кастро знал, как свои пять пальцев: монтируемое в стойку лабораторное оборудование



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



PDP-11: оценки


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

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

Что такое UNIBUS?




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



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

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



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

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

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

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

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




Ретроспектива Белла завершается на том времени, когда была написана статья, т.е. в 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
Поделиться публикацией

Похожие публикации

Комментарии 67

    +8
    Ассемблер PDP-11 — до сих пор самый любимый.
      +1
      это было нечто, приятно вспомнить…
        +4
        Да, ностальгия прямо таки… Очень логичный, ортогональный. На БК-0010.01, пока TASM не завезли удавалось даже в машинных кодах писать благодаря этой логичности. А потом
        — декодирование/кодирование Хаффмана, собственная простенькая ДОС, оболочка типа NС и это все на ассемблере. Сейчас бы на такое никогда не решился :).
          0

          Да… Прямо по мере чтения, вспоминал про БК-шку, именно эту, 0010.01.
          Всё очень логично, "квадратно" в хорошем в смысле слова.
          А ещё был Forth с ядром в 4 Кбайт, да… :)
          Спасибо DEC за PDP-11.

          –1
          Я понимаю, что формулировка «любимый» в общем-то субъективная, и не всегда предполагает сравнение, и все-таки спрошу — в сравнении с чем?

          В смысле — это не из серии «раньше трава была зеленее, лето длиннее в два раза, а синус достигал значения 4»? :)
            0
            ну, по сравнению с 6502, 8080/z80, x86, 48/51, pic16… ну и ЯСК Минск-32, который можно тоже отнести к ассемблерам
              +3
              Это в том смысле, что огромное количество действий, логически оформляемых программистом как отдельная операция, ложилось ровно на одну команду. Не нужно было делать всякие предварительные загрузки и последующие выгрузки, укладки в конкретные регистры (за редкими несущественными исключениями), и так далее. Это в первую очередь за счёт ортогональности операций операндам. В результате, программа на ассемблере была максимально читаемой в целевых понятиях — ни одна из архитектур до того и большинство после такого не достигали.

              Да, сейчас понятно, чем это плохо для процессора (кстати, непонятно, почему в статье PDP-11 сравнивается с RISC; она была CISC в чистом виде). Последующие архитектуры, которые довели эту идею до абсурда (как VAX или M68k), сдохли где-то как раз тогда, когда OoO начало приходить в мини- и микропроцессоры. Но на 70-80-е годы это было очень хорошим решением.

              Мне из нынешнего взгляда на PDP-11 с учётом, разумеется, поправки на время, видится достаточно немного ошибок: например, не надо было давать обновление флагов по MOV. (Все архитектуры разработки после — этого уже не делают.); можно было вычеркнуть режимы адресации 3 и 5, их использование было редчайшим (в VAX так и сделали, для 5-го)…
                +1
                Ну наконец-то нормальное обсуждение пошло, которого хотелось. А то задаешь нормальный вопрос, за что и в сравнении с чем вы это любили, прибегает кто-то, молча ставит минус, и молча убегает :)

                Насчет CISC — согласен, не было там RISC нигде. По-моему в то время и понятие такое еще не появилось?
                  +1
                  > Насчет CISC — согласен, не было там RISC нигде. По-моему в то время и понятие такое еще не появилось?

                  Ну да, формализация RISC прошла в середине 80-х (Патерсон и компания). До этого реализации с заметным уклоном в сторону RISC были, но они считаются «донаучными» эмпирическими подходами. Тот же S/360 мог читать из памяти, но писать — нет, и это уже частичный наклон туда. Также прото-RISC считаются разработки типа 6502. У них в эту сторону «смотрит» отсутствие или минимум сложных операций, выполнение всего в одно неразлагаемое действие «взял команду — раскодировал — прочитал аргументы — подсчитал — записал результаты». PDP-11 с дополнительными вложенными «а тут ещё прочитаем память согласно регистру, а тут ещё её запишем, а теперь модифицируем адресный регистр» никак в это не вкладывался — зато человеку действие такое действие представлялось единым.

                  И у начальных RISC была серьёзная проблема сделать эффективную компиляцию; существующие подходы на CISC ложились лучше. SSA в заметной мере появился как раз в ответ на этот вызов.
                  0
                  по-моему в так и сделали в MSP430 (пожертвовали не используемыми режимами адресации) для увеличения числа регистров и добавили некоторые расширения, как генератор констант.

                  P.S. Кстати процессор с системой команд PDP-11 был и в калькуляторах «Электроника-85/90/92» Влияние PDP-11 можно увидеть и в системе команд Motorola 68000
                  Электроника-85 потреблялa 20мА на 6В ~ 3.3 мА (тактовая, наверное, при этом была в районе 500 КГц т.к. был режим турбо в 4-5 раз быстрее) для экономии часовых элементов питания.
                  0
                  Там очень простая, гибкая и мощная структура машинных команд — всё читается в восьмеричных кодах. Первая восьмеричная цифра код операции, потом режимы адресации и номера регистров. Счётчик команд — полноправный регистр, и, насколько я помню, адресация по непострественному адресу делалась как-то через косвенную адресацию к этому регистру. Детали за древностию лет из памяти уже стёрлись, но то, как легко было читать и писать машкоды в простом восьмеричном редакторе, и каким шоком («а я думал, это должно быть логично») после этого было знакомство с системой команд i8086 (ещё далеко не 386) — такое не забывается.
                    +1
                    Кстати, вот восьмеричные коды — это как раз то, что мне никогда не нравилось. Довольно непривычно было иметь 16 битовое слово, где правый и левый байт показаны в 8-ричном коде по-разному, при том что значения одинаковые. Так к этому и не привык, все время напрягало немного.
                      +1
                      Ну уже тогда всё идеально в такую схему не укладывалось; как минимум:
                      1) Команды, на которые не хватило опкодов на представление обоих аргументов с адресацией — XOR, MUL, DIV, ASHC;
                      2) Команды с 8-битным аргументом — условные переходы, EMT, TRAP; 4-битным — CLx, STx;
                      3) дополнительные наборы (FIS, FPP), которые работали или со стеком (FIS), или на регистрах (FPP).

                      Основная масса, да, укладывается в упомянутую вами схему (у меня все эти 02ssdd в голове прочно засели;))

                      > после этого было знакомство с системой команд i8086

                      Вообще эта идеальная схема уже на VAX не масштабировалась и была сломана там напрочь.

                      А 8086, как раз, можно было легче читать в восьмеричном виде. Например, типовой уточняющий байт «7:6 — mod, 5:3 — reg, 2:0 — r/m» лучше читался, например, как 360 — reg=SI, r/m=AX — чем в 16ричной. Но почему-то это уже не использовали.
                    +1
                    Абсолютно и полностью с вами соглашусь, как-то пришлось разобраться с VAX, чтобы помочь сыну маминой подруги с лабами, не ожидал, что ассемблер может быть настолько удобным и многофункциональным.
                      0
                      Вы видели ассемблер S/360?
                        +1
                        Я видел. Существенные недостатки по сравнению с PDP-11 и наследниками:
                        1. Неприятные костыли с IAR-based адресацией (BALR 15,0 / USING *,15 и т.п.) В PDP-11 адресация по %7 предельно естественна и даёт к тому же вкусные режимы без дополнительных сущностей. В VAX это повторено.
                        2. Резко ограниченные и, самое неприятное, неотрицательные смещения в командах. (Частично исправлено в S/390, ценой расширения на Y-варианты с удлинением команд.) Понятно, что они были почти первые, но больше такой ошибки с беззнаковостью смещений никто не повторял.
                        Но сейчас запомнить, где у каких команд есть G, Y, F, прочие расширенные варианты, как они совмещаются, очень сложно.
                        3. Проблемы с загрузкой произвольных констант, что очень неприятно для ручного кодинга. Фактически, если не из памяти, то для этого годилась только LA и давала 0..4095. Всякие IIHF, LLILF это уже S/390.
                        4. Ограниченная схема condition codes. Схема NZVC, появившаяся в PDP-11, создана гением, даже если он это сделал ненамеренно. Не зря она тиражировалась потом всеми, кто вообще использовал CC. То, что в S/360, требовало постоянного выворота сознания при использовании.
                        5. Странные костыли с LPR, LNR… вы хоть раз применение LNR вживую видели? ;)
                        6. Десятичная арифметика на памяти, упакованная и распакованная — при отсутствии нормального динамического управления памятью на этом можно было слегка повеситься. Туда же всякие EDMK.

                        В остальном, да, достаточно неплохо сработано :)
                          0
                          На мой взгляд, вы это все говорите про архитектуру машины, а не про ассемблер. Я бы не путал эти две вещи. В остальном согласен, хотя особой мороки с 3 не припомню. Да и остальных кроме 1 пожалуй тоже.
                            +1
                            > На мой взгляд, вы это все говорите про архитектуру машины, а не про ассемблер. Я бы не путал эти две вещи.

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

                            > В остальном согласен, хотя особой мороки с 3 не припомню.
                            Её ассемблер частично брал на себя — что универсально для многих реализаций (например, так же делают на ARM, MIPS...)

                            > Да и остальных кроме 1 пожалуй тоже.

                            Ну я пытался через десятичную арифметику пробрался… ниасилил по молодости.
                            0
                            >То, что в S/360, требовало постоянного выворота сознания при использовании
                            У меня это был первый ассемблер, так что не требовало. Зашло как данность, видимо.
                              +1
                              > У меня это был первый ассемблер, так что не требовало. Зашло как данность, видимо.

                              У меня тоже. Но увидев NZVC забыл схему S/360 как страшный сон.
                                0
                                Хм. Ну не знаю. Меня реально ничто не напрягало. Я просто никогда не упарывался с производительностью, потому что по тем временам железо имелось (и на ЕС-ках оно было сильно более мощное в среднем), а для задач бизнеса, условно, ты пишешь так как привычно, и так как научился по образцам. А образцы, грубо говоря, это исходники тех же OS/360 (ограничено) или VM/SP (доступна практически вся). Ну и макросредства на мой взгляд, были сильно получше. Были макро переменные, включая массивы, а где массивы — там стек, а где стек — там можно было сделать реализацию IF/THEN/ELSE и DO/WHILE на макросах. Мы как-то прикидывали, можно ли это сделать без массивов, пришли к выводу, что вроде можно — но упороться придется знатно ;)
                      0
                      «Многие пользователи программировали на языке ассемблера без удобных редакторов и IDE, файловых систем и отладчиков, доступных на больших системах.»

                      В 1985 году, когда я пришел учиться в МЭИ, на кафедре стояла Электроника 100/25, аналог PDP 11/40 с операционной системой RSX-11M v4.1. И в ней действительно не было привычного сейчас редактора с IDE, как впрочем и компилятора Си.
                      А вот в 1986 году на ней появился Микромир (MIM), в котором редактор уже был, как и интерактивная работа с файловой системой. И одновременно с ним редактор TED, более продвинутый, но тяжеловесный в использовании. Надо понимать, что для работы использовались терминалы с последовательным портом на 9600 бит/сек, что сильно замедляло ввод/вывод, особенно в многопользовательской среде.
                        0
                        А Микромир был портирован под 8086, я его последний раз видел запущенным на NT4.
                        Так что, возможно, его еще даже можно «пощупать».
                        Примечательно, что Микромир был уже IDE, и имел функцию инлайн компиляции на Паскале (или Фортране?)
                          +1
                          Была СМ4 с памятью на ферритовых кольцах, ребята заменили на память от Электорники 60
                          поставили последовательные порты. РАФОС — многотерминальный режим по полной…
                          сначала смотрел с удивлением, как ребята писали программки в машинных кодах прямо с клавиатуры (не большие, тестовые), потом сам освоил — оказалось намного проще чем для 580проца, потом Макро11 для кристалла 1806ВМ1 (если память не изменяет, тот который с током потребления мкА)… и всё из PDP11
                          А когда появились первые PC — появилась и «персоналка» на чем-то с системой команд PDP11, с жесткими дисками 10мегабайт. Не чуть не хуже PC.
                            0
                            малопотребляющий КМОП вариант 1806ВМ2 работал на частоте 5МГц и долго был в номенклатуре электронных компонентов.
                              0

                              Зря вы о нем в прошедшем времени :-)

                          +1
                          О! Мой первый компьютер — ДВК на архитектуре PDP-11 и операционкой RJ.
                            0
                            а мой любимый СМ1420 с 16 процессорами (основной, арифметический и матрица 4х4), 6 винтами, 4 магнитофонами (2 ес-вских), барабанный и настольный плоттеры, графический векторный дисплей и пара рабочих терминалов.
                              0
                              Я сам на 1420 не работал, только видел… Коллега, который дневал и ночевал на ВЦ, стойки, в которых она размещалась, называл «пивной конструктив». Когда первый раз увидел — понял почему, высота стойки была ему до подмышки, и бокал с пивом было очень удобно туда ставить :)
                              А вообще классный был аппарат!!! Ну по тем временам конечно…
                                0
                                стойки бывали разные — в т.ч и полноразмерные.
                              0
                              RT11 она была. Однозадачная версия имела ядро, «системный монитор» кажется назывался, RT11SJ. Еще были версии RT11FB — с фоновыми задачами, RT11MX (кажется) и самая многозадачная — RT11TS.
                              Какая-то из версий RT11 была переперта на русский язык, включая диагностику ошибок, но не системные команды. И была полная документация полностью переведенная на русский язык, включая книги по MACRO и FORTRAN. Называлась эта перепертая версия — «РАФОС».
                                +1
                                Был еще TSX, и сильно поправленный отечественными программистами NTS.
                                В Риге сталкивался с варианатами UNIXa, «поковырял палочкой» MUMPS(Диамс2).
                                У нас в РнД была мощная группа, которая пилила FORTH.
                                  0
                                  В году 2003 тоже сделал вариант Форт языка (с IDE средой) и симулятор (на смеси Форта и ассемблерных х86 команд) для системы команд PDP-11, но ассемблер для него, при этом, уже обладал некоторыми высокоуровневыми возможностями.
                                0
                                А ещё выпускался калькулятор Электроника-85
                                +1
                                А я начинал на Электронике-60 (если память не изменяет, аналог какой то модели из серии LSI-11), с 4К слов памяти (8 Кб), перфоленточным вводом, перфолентоынм выводом и консолью Consul-260 (по сути дела — электрическая печатающая машинка) :)
                                Из ПО — только ассемблер (на перфоленте же). Загружаешь с ленты ассемблер, потом ему с ленты скармливаешь программу на MACRO-11, он на ленту выплевывает объектный модуль. Потому с ленты загружаешь линковщик, ему скармливаешь все объектные модули…
                                Романтика :)
                                +1
                                Про БК-0010, 0011 и УКНЦ забыли.
                                  +4
                                  Читал как Библию.

                                  Авраам родил Исаака; Исаак родил Иакова; Иаков родил Иуду и братьев его…

                                  ...UNIX пришёл в Беркли в 1974 году, ленту привёз Кен Томпсон…
                                  ...NextSTEP и производная от BSD стали основой Darwin, OSX и iOS…
                                  … Дэйв Катлер, [...] ушёл в Microsoft в 1988, приведя с собой всю свою команду, и возглавил разработку Windows NT…
                                    +1
                                    А я вот, не очень хорошо знаю ассемблер PDP-11, ведь у меня его не было на БК0010-01, однако, я до сих пор помню почти все коды команд и методики расчета смещения для условных переходов и команды SOB, так как писал прямо в машинных кодах.
                                      0
                                      Меня вот давно интересует, был ли у архитектуры набора команд PDP-11 один автор, или это плод коллективного творчества? Просто она мне со времен БК-0010 и до сих пор кажется гениальной в своей простоте.
                                        +1
                                        Вспоминается Система Малых ЭВМ (мне посчастливилось программировать на СМ-4)
                                        Процессоры КР1801-ВМ(1,2,3)
                                        Да был MACRO-11 for PDP-11, однако, на доступной ДВК-1 не было дисковода — а в ПЗУ только жуткий basic И ГЛАВНОЕ, возможность писАть в кодах…
                                          0
                                          1801 была классная серия… Причем, насколько я помню, полных зарубежных аналогов ВМ-1/2/3 не было. А на БМК из серии 1801 было разработано много контроллеров. Я как то на Ангстреме дорвался до шкафа, в котором была документация на эти разработки — чего там только не было :)
                                          А еще был аналог серии 1801 — серия 1806 на k-mop, исполнения в металлокерамике и бескорпусное. Среди прочего, на 1806ВМ2 был сделана одна из бортовых ЭВМ для станции МИР. А мы на базе бескорпусного варианта разработали БГИС для нашего оборудования :)
                                            0
                                            в то время не хватало нормальной памяти и энергонезависимой…
                                            а рф имели малую живучесть…
                                            а такие вещи можно было б делать…
                                          +1

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

                                            0
                                            Хорошая статья. Но я чуть не пропустил ее из-за фразы «ретроспектива компьютерного дизайна». Да еще картинка какого-то модного гаджета с красными тумблерами… Я понимаю, что выражения типа «архитектура ЭВМ» не так красиво звучит как «компьютерный дизайн», но речь в статье идет ведь не о дизайне.
                                              0

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

                                              +1
                                              Моей первой была СМ-3, которая в составе ИВК-1 с CAMAC. Работал с ней несколько лет. FORTRAN, ассемблер, Pascal, Modula-2, C… Чего только не было. Восстановление информации на диске, на котором в куче секторов как-то всё «съехало» на один бит, ремонт процессора из-за перегоревшей микросхемы К155-й серии, которую удалось найти, благодаря наличию принципиальной схемы процессора и тщательному анализу выполнения инструкций на уровне микрокоманд. А ещё помню — сделал как-то в RT-11 обработчик прерывания по выключению питания, чтобы сохранять регистры в стеке — память-то ферритовая — энергонезависимая, и после этого можно было не загружать компьютер каждый раз… Но, правда, этим старался не пользоваться. Да, интересное было время…
                                                +1

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

                                                  0

                                                  Наверное, всё же на ассемблере, а не в микрокода, это несколько разные вещи.
                                                  Сложность есть, но язык С для того и был создан, чтобы не писать на ассемблере. Хотя в институте я тоже писал на ассемблере под ВМ80 и немного под 8086.

                                                    0

                                                    Вот нет, команды мы вводили октетами в восьмиричной системе. А преподаватель без справочника "запускал" код с распечатанной бумаги и говорил, где ошибка (она почти всегда была).

                                                      0
                                                      Понятно, вы вводили программу в машинном коде.
                                                      Микрокод, это другое. Микрокод, это программа внутри процессора, и пользователю она совершенно недоступна.
                                                        0
                                                        в лабораторных стендах на 1804 можно (точнее, нужно) было именно микрокод писать.
                                                          0
                                                          стенд МТ1804
                                                          image
                                                    +1
                                                    Система команд микроконтроллера MSP-430 от TI сделана с большим уважением к наследию PDP-11, да и в том же процессоре Motorola 68000 можно увидеть много похожего на команды PDP-11.
                                                    Электроника-60 (клон PDP-11) использовался при производстве одной из линеек ЧПУ станков в СССР и другого производственного оборудования.

                                                    P.S. а ++ — += -= в Си языке сделаны для прямой поддержки системы команд PDP-11.
                                                    да и * (звёздочки) и & (амперсанды) пришли в Си оттуда же, сделав его эффективным языком.
                                                    Тут же появилась и реализация Форт (Forth) языка (FIG-Forth) www.stackosaurus.com/figforth.html
                                                    0
                                                    БК, УКНЦ, Дворец Пионеров, кружок информатики. Тоже начинал с них, система команд — это… нечто.
                                                    А интересно, где сейчас TI и MSP-430? Проиграли ARM-ам и AVR-ам? Да, первые — 32-разрядные, вторые — классика восьмибита, а 16-битникам выходит что, нет места в современном мире?
                                                      0
                                                      MSP430 являются 16-битными и вполне выпускаются и сейчас. TI — что вы имеете в виду? Это вообще компания, она много чего выпускает, в том числе и MSP430 и микроконтроллеры/процессоры на ядрах ARM, и на собственных ядрах тоже.
                                                        0
                                                        Да, пожалуй между «TI» и «MSP430» лишняя «и». Имел в виду TI MSP430, и то, что AVR (8-битники) и ARM (32/64) у всех на слуху, а о 16-битниках как-то не слышно. Впрочем, может и правда, трудятся себе тихонько, без лишнего шума и хайпа?
                                                          0
                                                          Из 16-битников на рынке остались только MSP430, пожалуй. Может быть, ещё какие-нибудь сигнальные процессоры старые, я их плохо знаю.
                                                          Ещё были Fujitsu 16-битные, но они давно ушли в закат.
                                                        0
                                                        MSP-430 сейчас с памятью FRAM, но т.к. они в целом дороже линейки AVR, STM32 то и популярность в России у них и доступность не такая высокая.
                                                        www.mt-system.ru/news/texas-instruments/mikrokontrollery-msp430-c-128-kb-fram
                                                        +1
                                                        :) Ностальжи
                                                        На 3 курсе писали коллективную курсовую на РАФОСЕ — сокурсники ваяли файловую систему с заполнением пустых пространств (аналог FAT), а я — оконный файловый менеджер, сильно «похожий» на NC :), русифицированный :)))
                                                        P.S. Это 90-91 год…
                                                          +1
                                                          мы на RSX11 умудрились выполнить первую DoS-атаку…
                                                          был в библиотеке вызов — отправка запроса на ввод с клавиатуры терминала. Но т.к. мы были молодыми и глупыми — не знали, как именно он работает, и сделали его в цикле (ну, типа «опроса клавиатуры»). поэтому вся очередь забивалась этими запросами. выдавалось знаменитое сообщение «низкий пул», и система падала… хацкеры™, тудыть…
                                                          +1
                                                          ДВК-3М с КГД – как первая любовь, запомнился на всю жизнь.
                                                            0
                                                            О! А ДВК-4 с КЦГД (с цветным дисплеем) — там контроллер дисплея был программируемым. В нём тоже что-то 1801ВМ стояло и по какому-то ESC коду через последовательный порт туда можно было грузить код и оттуда напрямую обращаться в графическую память. Тогда уже компилятор C появился под RT-11 и я писал на нём модули, которые после компиляции грузились в контроллер дисплея. Было дело, добавляли к этому дисплею команды векторной и растровой графики, чтобы быстрее отрисовывалось.
                                                              +1
                                                              Да, эти я тоже застал, но на всем факультете их 2 шт. было, ходил вокруг облизывался. Но мы и на КГД хорошо программировали на ассемблере, довольно шустро получалось. Но зато у нас в ТИАСУРЕ были мега крутые персоналки «Электроника-0585» с 5 Мб жестким диском, 512 кб памяти и 32 кб видеопамяти. Правда не было документации по ее программированию )) После ДВК-3 она воспринималась как суперЭВМ )
                                                            0
                                                            1986 год. Тема «Прибор 86». ДВК-2М, программу разрабатывали на Паскаль Рафос.
                                                            Память на гибких дисках.
                                                              +1
                                                              Помню, приходят коллеги с БВЦ, а у нас на СМ-3 работает RT-11FB. У них глаза на лоб — как так???!!! (Кто не понял, для FB версии нужна было команда WAIT, код 000001). Что, говорю, неужели не догадались? Не-а, говорят. Выключаю, вынимаю плату показываю. Начинает доходить. Это вы прошили в СМ-3 еще одну команду??? Ага, говорю. Микрокоманды, проволочка 0.2 мм, две 155 микросхемки, два дня и все дела.
                                                              И см1420, куда же без нее. На ней столько ПО для виброиспытаний было написано, да всё на Фортране, на Фортране. Редактор был, К340, а дальше BAT-файлы в современной терминологии. Диски RK — это знают все. DP (пакет на 29 Мегабайт) — было великое счастье заиметь. А в 87 году привезли откуда-то ИЗОТ пакет из 11 блинов на 100 Мегабайт. Вот это был монстр, Электромотор 750 Вт для раскрутки шпинделя, тормоз на токах Фуко, и масса под 400 килограмм. И всё 100 мегабайт. Но уже тогда это всё было уже уходящей в историю техникой.
                                                                0
                                                                СМ3, СМ1407, СМ1420, Электроника79, Электроника60,MERA660, завод Ленина,… ностальгия…

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

                                                                Самое читаемое