«Битовые маски» — это подкаст о системном программировании, разработке процессоров и связанных темах. Недавно мы завершили первый сезон подкаста — 25 выпусков, насыщенных интересными беседами. В новой серии статей мы вспоминаем яркие моменты прошедших эпизодов. И начнем с 24-го, где гостем стал инженер YADRO Артём Кашканов, известный энтузиаст в области ретроэлектроники, создатель проектов BrainfuckPC и DekatronPC.

Основные темы выпуска:
Почему Артём начал интересоваться электроникой в детстве.
Что такое аппаратная трассировка и какие задачи решают с ее помощью.
Какие стандарты для аппаратной трассировки используют разные вендоры.
Как правильно работать с собранной трассой.
Где Артём берет элементную базу для своих устройств.
Что Артём планирует запустить на медицинском УЗИ-аппарате.
Зачем делают и где применяют логические элементы на основе пневмоники.
Чем интересен язык программирования Brainfuck и почему Артём выбрал архитектуру на базе этого языка для релейного компьютера.
Далее мы выбрали некоторые интересные ответы нашего героя. Больше — в полном видео и аудиоверсии подкаста.
— Как ты вообще начал заниматься разработкой электроники?
У меня очень крутой дед, дай бог ему здоровья, ему 89 сейчас. Он был шеф-монтером компании «Русские моторы» и монтировал по всей стране газомотокомпрессоры, которые качают газ. И вместо того чтобы на ночь читать мне сказки, он рассказывал об устройстве дизельных машин, о том, как работают форсунки высокого давления, как турбину чинил, как заливал фундамент под эти машины и так далее и тому подобное.
…
В какой-то момент, когда я начал делать ремонт, обнаружил, что, оказывается, у меня на травильной ванне есть трещина, и травильный раствор на самом деле не испарялся, а утекал вниз. Оставил такую большую лужу. Но это потом все закрылось, когда ремонт делался, и нормально.
— Ты делал прототип активного компенсационного выпрямителя, для чего он нужен?
Как правило, на промышленном предприятии основной потребитель — это электропривод. Если электропривод без частотного преобразователя, то он потребляет из сети помимо активной мощности еще и реактивную мощность, которая тратится на то, чтобы создать электромагнитное поле. Активную мощность надо брать от электростанции, а вот реактивную мощность можно генерировать на месте. Электродвигатель потребляет реактивную мощность индуктивного характера. Если поставить параллельно конденсаторы, той же установленной реактивной мощности, то они будут генерировать реактивную мощность емкостного характера. Минус на минус даст плюс, и мы из сети, от Росэнергосбыта будем потреблять только активную мощность, не загружая питающую электросеть лишними амперами.
— Расскажи о предметной области трассировки: для чего она нужна, где нужна, какие есть подходы.
Технология аппаратной трассировки — это очень мощный инструмент, но у него проблема в том, что не все хотят забивать гвозди микроскопом.
…
Если вот по вершкам пройтись, то можно достаточно быстро эту трассу в несколько гигабайт просмотреть и вывести на графическом интерфейсе слева направо, как загружались те или иные приложения с точностью до модулей. А заодно и заглянуть, где мы были внутри этих модулей, по каким функциям ходили.
— Расскажи про свое участие в недавнем Chaos Constructions.
Я туда принес пишущую машинку «Роботрон». Там Z80, там четыре мотора. А как мне понять, что там происходит? Мы опять возвращаемся к аппаратной трассировке. Там есть специальный разъем, на который выходят шины адреса, шины данных и кое-какие «контрольки». Я взял логический анализатор на 32 канала, подключился. Запускаю мою машинку, на компьютер закидываю трассу — это уже логическим анализатором, правда. Декодирую эту трассу в набор инструкций, которые Z80 исполнял, и вот у меня уже дамп кода, который машинка исполняла, когда делала то или иное действие.

— Как ты получил аппарат УЗИ для своего нового проекта?
Если говорить про аппарат УЗИ, то чувак знал, что я точно не пущу его в металлолом — просто там плата с процессором, там очень много драгмета. Ему было жалко его пускать в драгмет, потому что прибор рабочий, там красивые керамические корпуса. Он видел историю про пишущую машинку, он такой: «Попробуй из него что-нибудь сделать интересное».
— Расскажи подробней о пневмонике, что это и зачем нужно.
Идея такая. В 70-е годы развиваются промышленные производства. Нужны сложные системы управления, но максимально дешевые. И на тот момент транзисторы еще были дороги, а ламповая техника ненадежна. Простые регуляторы уже не действенны, надо какие-то сложные системы автоматизированного управления. И народ придумал пневматику — это когда у нас система клапанов.
Есть маленькие кубики металлические, типа серии УСЭППА, давление подаем, клапан переключился, открыл поток для сигнала. И струйная логика. Когда мы можем этих пластиковых элементов — они там из двух частей склеены — наклепать сотни тысяч штук. У меня порядка 50 ГБ материала про струйную логику, отечественную и зарубежную.

— Почему ты выбрал для проекта именно язык Brainfuck?
Мне просто сама идея понравилась. Изначально я свой релейный компьютер проектировал с точки зрения, что он будет совместим с PDP-11. Вернее, для MSP-430 от Texas Instruments. Он вобрал в себя самое лучшее от PDP-11, и я изначально проектировал ALU, который полностью реализует весь функционал MSP-430. Там порядка 12 инструкций, но у меня получалось три тысячи релюшек только на сам АЛУ. Не считая регистровых блоков, не считая всех коммутаторов и прочее. И проект немножечко закис, я еще тогда не особо умел это делать.
А вот когда в Intel пришел, узнал, как работают процессоры внутри, микроархитектура и все такое, то посчитал, что я уже готов работать. Что я преисполнен знаниями и умениями, и можно реализовать. И тут пришла в голову замечательная идея. А что, если использовать язык Brainfuck? Потому что релейных компьютеров много, современных. То есть много кто делает релейные компьютеры. Но надо делать что-то свое, особенное. Я изначально хотел делать релейный компьютер на герконовых реле, чтобы он был самый быстрый. Но тут он еще и имеет особенную архитектуру, то есть он де-факто самый быстрый релейный компьютер. Но за счет использованной архитектуры он самый медленный компьютер из когда-либо существовавших, потому что в любом другом релейном компьютере есть операция А + B, а у меня нет. Мне надо сделать A + 1, B – 1 до тех пор, пока B не станет равной нулю. То есть у меня сложность операции сложения Y от N.
— Даже для проектирования вот таких компьютеров нужен симулятор?
Для релейного компьютера это было ни к чему, потому что там очень простая архитектура, там, по сути, у тебя по центру стоит сумматор, 16 разрядов и 4 регистра. И защелки, которые эти регистры коммутируют. Смотришь, инструкция загрузки — с первого по третий цикл секвенсора мы вот этот регистр открываем на чтение. От сих до сих этот регистр открываем на запись. Всё. Там просто инструкция за инструкцией я сидел и накручивал монтаж. Там сзади торчит очень много штырьков и специальным инструментом я просто соединял их друг с другом проводочками. Друг за дружкой навил, все заработало.
…
Я на самом деле все это и делал с отсылкой на то, как разрабатываются современные процессоры. То есть весь мой путь проектирования лампового компьютера один в один бьется с маршрутом проектирования современных чипов. Тут и RTL, и юнитовая системная верификация, и физдизайн, потому что в итоге я весь этот Verilog засуну в OpenROAD, соответствующую библиотеку, и пусть он мне в этом ящике все провода и проложит. Не буду я вручную их соединять.
— А ты все свои отремонтированные экспонаты, ЭВМки и остальное хранишь у себя?
Это очень зависит от характеристик самого экспоната. Если это что-то редкое, то я это уже никому не отдам. Например, мне как-то отдали бобинник ламповый «Комета». Я ее разобрал, перед ней как раз собрал слайдер для камеры, чтобы поснимать красивые таймлапсы, как я разбираю и собираю бобинник. Очень классно, кстати, получилось. Я ее почистил, собрал, она теперь играет, я ее передал дальше. Лежит вот она, зачем она мне нужна?
У меня дома есть серверная стойка. У всех есть серверная стойка дома. И 10-гигабитная локалка, да. Наверху стойки картонные коробки складываю. Потому что стойка — 42 юнита, потолки — три метра. И это у меня индикатор захламленности. То есть если коробок становится много, это значит, что мне много всего уже надарили или много накупил. Надо уже от этого избавляться. Когда я буду избавляться, я буду брать эти коробки, упаковывать в них железяки и отправлять. Соответственно, если коробки начинают исчезать, значит, пора новое барахло покупать :)
Послушать весь выпуск «Битовых масок» с Артёмом Кашкановым можно на любой удобной платформе — все ссылки есть на странице подкаста.