Дэвид Харрис, автор «Цифровой схемотехники и архитектуры компьютера», ответил на вопросы про его следущую книгу и вообще

59cff4e79733ad935ce4fe6750bd1332.jpg

Встретился на ланч с Дэвидом Харрисом, автором (вместе с Сарой Харрис) популярного учебника «Цифровая Схемотехника и Архитектура Компьютера», который за последние 10 лет помог закрыть монументальную дыру в техническом образовании десятков вузов России и Украины. До этого учебника во многих вузах сразу после триггеров шло программирование микроконтроллеров, то есть у студентов раньше вообще не возникала база для проектирования современных чипов по маршруту RTL-to-GDSII, технологии, которая за последние 30 лет привела нас к смартфонам, быстрому интернету и ускорителям ИИ.

Учебник Дэвида активно используется на Школе Синтеза Цифровых Схем, которую поддерживают 24 российских и 1 белорусский университет. Регистрация на новый сезон Школы только что открылась.

43736cb87109b2dcdc7ee992bf6d510b.png

Фокус «Цифровой Схемотехники и Архитектуры Компьютера» — на логическом проектировании на уровне регистровых передач, с помощью языков описания аппаратуры Verilog и VHDL. Хорошим подспорьем к этому учебнику является российский учебник «Цифровой Синтез: RISC-V» от коллектива авторов под эгидой ВШЭ МИЭМ, который привязывает материалы Харрисов к лабораторным работам на ПЛИС/FPGA, а также дополняет Харрисов например систолическими массивами, которые используются для ускорения вычислений машинного обучения.

d8b3521a5772efbe98b337957cae9055.png

При этом Дэвид Харрис — соавтор еще и учебника по физической стороне проектирования микросхем: CMOS VLSI Design: A Circuits and Systems Perspective, который глубже копает в сторону кремния и транзистора. К сожалению, пока эта книга еще не переведена на русский язык, хотя ее высоко оценивал например бывший замдиректора НИИСИ, специалист по радиационно-стойким чипам Максим Горбунов.

И вот при встрече я узнал, что пару лет назад Дэвид решил прокопать и в другую сторону, и написал (тоже с Сарой Харрис и еще двумя соавторами) книгу с углубленным изучением проектирования микроархитектуры процессоров. Она называется RISC-V Microprocessor System-On-Chip Design и выходит в январе. Дэвид поделился со мной манускриптом и я могу пересказать содержание.

c9a17c824cfbe183be796fb9a9e2fb5b.png

У новой книги Дэвида Харриса довольно четко очерченная поляна:

  1. Не игрушечный, но и не навороченный. Минимально необходимый для Линукса.

С одной стороны, описанный в книге открытый процессор Wally не является игрушечным учебным процессором типа schoolRISCV. Wally содержит предсказатель переходов, кэши (в том числе многосекционные), устройство управления виртуальной памятью (TLB MMU), контроллер прерываний и поддержку арифметики с плавающей точкой.

С другой стороны, Дэвид и соавторы сознательно отказались идти дальше и описывать суперскалярные процессоры и многоядерные кластеры с кэш-когерентностью (протоколы MESI). То есть их процессор — это минимальный процессор, на котором может работать Линукс и есть плавающая точка. И точка. На языке маркетинга процессор Wally стоит между microcontroller-class core и mid-range embedded processor core. Mid-range процессоры (но без плавающей точки) ставят например в домашние роутеры с OpenWrt Linux.

63b7f160bc7195b242d2c54339a25cfd.png

В принципе, книга Дэвида — не первая, которая описывает все детали проектирования процессора, до него была например книга Монте Далримпла. Но Монте — это вышедший на пенсию бывший разработчик Zilog, который начинал еще во времена, когда транзисторы процессора рисовали на бумаге карандашом. Поэтому процессор Монте — это минимальный микроконтроллер, без кэшей и Линукса. Кроме этого Монте долго был контрактором на custom версии Z80, владельцем малого бизнеса, поэтому книга Монте никак не передает процес разработки в большой компании, а вот книга Дэвида Харриса передает. Что немудрено — Дэвид работал в Интеле и Sun-е, то есть он хорошо знает про работу коллектива.

16d957ff76fb62c02b8bac976524e52f.png

Также книга Дэвида Харриса описывает систему на кристалле, шины AHB и AXI. И в этом она тоже не первая — есть например полезная книжка Modern System-on-Chip Design преподователя из Кэмбриджа Дэвида Гривса. Однако книжка Гривса не привязана к коду на гитхабе, а вот у Харрисов — привязана.

0f31966c34add4416f92965ec8182a5b.png

Та же проблема у книги Modern Processor Design: Fundamentals of Superscalar Processors by John Paul Shen and Mikko H. Lipasti — в ней есть про суперскалярные и многопоточные процессоры, но она не привязана к коду, который можно симулировать, синтезировать, ставить эксперименты с производительностью итд. Кстати Дэвид Харрис тоже хочет добавить многопоточность в их ядро. Но не суперскалярность — и вот тут возникает открытая возможность для других авторов, может даже российских?

Раз уж мы заговорили о российских авторах — сейчас в зеленоградском МИЭТ идет работа над курсом по дизайну и верификации их собственного процессорного ядра MIRISCV, которое миэтовцы собираются развить примерно до такого же состояния, что и ядро Wally. Это означает, что в МИЭТ уже сейчас может сравнивать напрямую как эти ядра (дизайн, бенчмарки), так и процесс их верификации и синтеза. Это очень полезно! Для всего развития российcкой экосиcтемы.

f590c73a5cef6818dfb31ab7f5ee34cf.png

Описание разработки и верификации процессора по взрослому

Дэвид Харрис и соратники впервые на моей памяти описали все аспекты разработки, в том числе верификацию RTL против архитектурной модели. То есть берется (или генерируется) тестовая программа, и она скармливается двум сущностям:

  1. Первая сущность — это микроархитектурное описание процессора на языке SystemVerilog, на уровне регистровых передач (Register Transfer Level — RTL), с тактовым сигналом и стадиями конвейера. Это описание в процессе синтеза собственно и превращается в файл в формате GDSII, по которому делается фотошаблон, по которому на фабрике выпекают микросхемы.

  2. Втора сущность — это архитектурная модель RISC-V (в данном случае программа на Си от компании Imperas), которая ничего не знает о тактах, конвейере, интерфейсах с шинами, и реализует вид на процессор с точки зрения ассемблерного програмиста — видимые программисту регистры, ветвления, приблизительная модель кэша и виртуальной памяти.

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

Но результат выполнения и в одной, и в другой сущности — это записи данных в архитектурные (то есть видимые программисту) регистры по завершению каждой инструкции. И вот эти результаты можно сравнивать. Почему? Хотя в RTL много параллельности, но дизайнеры процессора поддерживают иллюзию последовательного выполнения программы для своих пользователей — ассемблерных програмистов и создателей компиляторов.

И вот Дэвид описывает как делается такое сравнение конвейерной и архитектурной сущностей (мог бы сказать «сравнение микроархитектурной и архитектурной моделей», но так как код на RTL превращается в конечном итоге в железо, в транзисторы и дорожки, то язык не поворачивается назвать этот код«моделью»).

5f7fad1cc38a854edf917ffe1f70fbff.png

Далее в книге Дэвид c коллегами описывают всего понемножку, чтобы читатели знали, что бывает в каждом процессорном проекте, и где искать подробности: про прототипирование на FPGA, про запуск на спроектированном процессоре операционки Линукс, про отладку после пробного производства (post-silicon debug) и даже про писание Tcl скриптов для синтеза.

Для иллюстрации можно привести мою собственную картинку взаимодействия инженеров в проекте блока, которую я нарисовал для статьи про аппаратное ускорении ИИ в российском альманахе AI Report от МФТИ. В ней показано как взаимодействуют:

  1. Инженер по архитектурному моделированию;

  2. Инженер-верификатор, три роли: создатель среды верификации, создатель тестовых сценариев и специалист по проверке функционального покрытия (то есть проверки полноты тестов);

  3. Микроархитектор блока / проектировщик на уровне регистровых передач;

  4. Инженер по физическому проектированию.

6e17b1d45b154acfb4c82ac75a026b37.png

Теперь ответы на вопросы читателей

У меня накопились вопросы читателей предыдущих книг Харрисов с телеграм-канала Школы Синтеза Цифровых Схем, а также канала icDesignCommunity и fpgasystems. Я задал Дэвиду не все вопросы, так как беседу в основном вел Дэвид, но пару ответов он сформулировал:

  1. Рекомендации как начинать жизнь молодому инженеру

Дэвид работает в частном университете Harvey Mudd College, который является довольно нестандартным местом. Хотя университет всего 4-х летний и не так известен как Беркли и MIT, но он находится в топе по средней зарплате выпускников-бакалавров. Разумеется, выпускник не обязан ограничиваться 4-мя годами — потом он может идти получать магистра в Калтех, MIT или Стенфорд если захочет.

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

В прошлый визит к Дэвиду в 2015 году я смотрел как его студенты проектируют подводного робота — пример разноплановой инженерной задачи:

d863e40aa86ac740574493fcf0015fd9.jpg

  1. Что вы думаете про AI?

Дэвид сказал что AI проникает во все места, в частности аппаратные ускорители ML вычислений. А также что он использует ChatGPT в обучении, следующим образом: после каждого занятия Дэвид дает для домашней работы семь вопросов, из которых шесть — обычные, а вот на седьмой вопрос нужно ответить с помощью ChatGPT, причем проанализировать все возникающие у ChatGPT галлюцинации и, с помощью уточнений, привести его к правильному ответу.

  1. Что Дэвид думает про факт, что студенты плохо решают жизненно важные для RTL позиций в компаниях типа Самсунга микроархитектурные задачи?

Тут уж я пожаловался Дэвиду, что студенты плохо решают задачи на контроль потока данных и подобные (я описал проблему в 1, 2, 3 и 4). Сначала Дэвид сказал, что учебная программа не резиновая, и он сам жалеет, что не имеет возможность развернуто поговорить о других сторонах электроники, в частности про физические аспекты транзисторов. Но потом, когда я объяснил Дэвиду актуальность таких микроархитектурных приемов для задач в сетевых чипах и GPU, он согласился, что про это стоит написать книгу или главу и предложил мне этим и заняться.

В конце Дэвид пожелал всем успеха и оставил автограф мне, клубу Verilog Meetup и Школе Синтеза Цифровых Схем / Digital Circuit Synthesis School:

798a70862868717a9f7507aaf247268a.jpg

На следующий день после встречи с Дэвидом Харрисом я проводил выездную встречу клуба Verilog Meetup в Лос-Анжелесе. Обычно мы встречаемся в городе Горный Вид (Mountain View) в Silicon Valley. Встречу в Лос-Анжелесе я рекламировал для трех категорий слушателей:

  1. Для интересующихся, что собственно делает в офисе инженер, который проектирует блоки микросхемы в телефоне Самсунг Галакси. Или Apple iPhone. Или вообще космической ракете от Роскосмоса или Blue Origin. База технологии, идея цифровой логики (комбинационная + последовательностная), как работает инженерная группа.

  2. Для студентов и их родителей, которым может быть полезно понять, как готовиться к поступлению на работу после окончания университета. Для людей в индустрии не секрет, что куча отличников топовых вузов банально проваливаются на интервью в электронные компании, потому что они запомнили слайды с лекций, но не делали практических проектов. Или делали проекты, но не проверяли особые случаи, ожидая что профессор проверит. Поэтому надо практиковаться, например в формате клуба Verilog Meetup.

  3. Также такие встречи полезны для инженеров, которые уже работают в электронной или софтверной промышленности, но делают не дизайн на уровне регистровых передач, а заняты чем-нибудь смежным и хотят или сменить профессию, или расширить области, в которых они разбираются. Бывают Design Verification (DV) инженеры, которые хотят стать RTL инженерами, программисты firmware которые хотят стать DV инженерами, инженерами которые заняты post-silicon debug, которые хотят стать RTL или DV. Или программисты инфрастуктуры из Гугла или Амазона, которые хотят расшириться в хардверную инфраструктуру, или full stack инженеры которые хотят стать еще более full stack.

Для встречи в LA я подготовил вот такие слайды, а также принес плат с микросхемами FPGA / ПЛИС, так как без демо на платах слушатели часто скучают. Пришли 13 человек (16 с организаторами), из которых были русские, украинцы, армяне, в том числе русский програмист (вроде из Гугла или Амазона) с дочерью, другие серьезного вида старшие школьники, в том числе владеющий Линуксом, а также индийский инженер из Интела и китайский инженер, который был интерном у нас в Самсунге, а сейчас работает проектировщиком в LA.

Вот как это выглядело на Youtube (краткие видео):

и на RuTube:

e3c7c129b63cd0ed950a537b8eeb0ea5.jpg

Это видео и фотографии приготовил видеограф Арсений Кристенко из агентства FlexibleMedia. Мероприятие помогла провести дизайнер Оксана Мелис , которая также сделала вот такой плакат слева. На плакате изображена Мария Горбунова, выпускница Санкт-Петербургского государственного университета аэрокосмического приборостроения (ГУАП), которая сейчас работает в компании Broadcom и иногда наведывается к нам на Verilog Meetup в Silicon Valley.

Я также сделал полную запись на три часа всей презентации с помощью Zoom и выложил ее на YouTube:

И RuTube:

Тут может возникнуть вопрос: в чем вообще прикол учиться проектировать чипы для школьника, если производство скажем чипа для смартфона на фабрике стоит десятки миллионов долларов?

Так вот перед встречей в LA меня сконтактировал Матт Венн (Matt Venn), основатель сервиса Tiny Tapeout, который позволяет произвести свой чип на фабрике любому школьнику.

Работает это так: помимо коммерческого производства (которое стоит миллионы долларов), есть так называемый shuttle service — для исследователей и малосерийного экспериментального производства микросхем. Этот сервис стоит тысячи или десятки тысяч долларов. Так вот Матт Венн придумал как каждый чип для shuttle / MPW (multi-project wafer) распилить еще на 50 заказчиков, чтобы каждый платил всего $150+, а самые умные не платили вообще ничего (если например участвуют в соревновании кто сделает лучшую аппаратную графику).

Я напишу про Tiny Tapeout отдельный пост и однозначно интегрирую в будущем проекты с Tiny Tapeout во все свои семинары в разных странах. Пока же я, не отходя от кассы, заказал производство трех пробных дизайнов:

  1. Adder with Flow Control — вопрос на интервью, которым я мучаю студентов-отличников.

  2. schoolRISCV CPU with Fibonacci program — школьный процессор от Станислава Жельнио.

  3. Sea Battle VGA game with sprites — видеоигра со спрайтами, чисто в хардвере, без процессора и софтвера. Вообще она выглядит скорее как «Ракета и Дрон», но я назвал ее «Морской бой», чтобы не смущать никого ассоциациями.

56cb75f18b6157fa3887050bc049f75d.png

Помимо симуляции и производства на фабрике, у дизайнера есть еще одна опция — реализовать свою схему на микросхемах реконфигурируемой логики ПЛИС / FPGA. Я принес платы с такими микросхемами на встречу в LA, и показал участникам, как соединить FPGA с графическими экранчиками и рисовать статические и движущиеся картинки:

4a71f00231ef58862d7274ad447fa7a0.jpg

Как это работает? FPGA — это матрица из ячеек, в которых стоит конструкция под названием Lookup Table, или LUT. Простой LUT можно построить из трех мультиплексоров, аппаратных аналогов софтверного оператора «if». У такого LUT есть шесть входов и один выход. Четыре входа, константы a, b, c, d — берутся из битов памяти конфигурации. Еще два входа — x0 и x1 — переменные. В зависимости от значений a, b, c, d вся конструкция работает либо как логическая операция И над x0 и x1, или как логическая операция ИЛИ, или как любая другая булевская функция от переменных x0 и x1.

1fedd2240019b81c54d670b54facb40e.png

da74d2be37115149bca52d035aa71f36.gif

В ячейках FPGA также есть элементы состояния, D-триггеры, которые позволяют строить схемы с тактовым сигналом: счетчики, конечные автоматы и конвейеры.

Кроме встречи в LA мы каждое воскресенье проводим встречи в клубе хакеров Hacker Dojo в Маунтин-Вью, Калифорния. Встречи сообщества Verilog Meetup начинаются в 11 утра и проходят до 2 часов дня. На заседания заходят инженеры из Apple, Google, Intel, Amazon, NVidia итд. Мы в основном заняты созданием новых примеров на верилоге и поддержкой новых FPGA плат. Под лозунгом «Образовывай себя с помощью образования других». Выглядит это так: в YouTube:

В RuTube:

18–20 октября наше сообщество Verilog Meetup будет участвовать в выставке самоделкиных Maker Faire в городе Вальехо, который кстати два раза был столицей Калифорнии:

6ef6153faa17852178999a7702c69f03.jpeg

На выставке мы будем демонстрировать в частности вот такой набор для экспериментов с FPGA на основе микросхем от GoWin Semiconductor, китайской компании, у которой есть отличный шанс отобрать часть образовательного рынка от американских компаний Xilinx (часть AMD) и Altera (часть Intel).

Если вы живете в области сан-францисского залива и хотите билет на Maker Faire бесплатно, заходите на заседания Verilog Meetup по воскресеньям. Соберете установку, запустите на ней все примеры — получите билет (у меня есть пять билетов для таких целей). Кому билетов не хватит, можете их купить здесь.

А если напишите адекватную инструкцию по сборке платы и запуску примеров на любом из языков народов СССР (русский, украинский, армянский, азербайджанский и другие) — получите и весь комплект бесплатно. Комплект уже одобрил например преподаватель из Швейцарии.

c1c5ef3e2d5c2b4b7041b1c77cb9d647.jpeg

Тут надо сказать, что движение за улучшение преподавания электроники происходит не только в Америке и Китае, но и например на Украине. Где за это дело взялись известные преподаватели-активисты Евгений Короткий и Сергей Иванец, из Киевского и Черниговского Политехов соответственно. С Евгением и Сергеем мы еще в 2016–2017 года организовали пару семинаров в Киеве (Короткий — это на фото высокий с лампочкой). Короче, они пришли в Киевскую Школу Экономики, где в духе Евроинтеграции скооперировались с европейским университетом ETH Zurich, совместная программа с которым стартует в этом месяце.

Эти программы полезно анализировать, особенно россиянам. Например из описания 227–0116–00L  VLSI 1: HDL Based Design for FPGAs видно, что там не хватает времени на микроархитектуру, но зато есть моменты по верификации, в которых, по моему опыту с практикантами, плавают даже выпускники Стенфорда. Еще полезно смотреть на проекты на гитхабе от ETH Zurich, находить то, чего не хватает в российских программах (например DMA controller в PULP), писать свой аналог, потом ставить их в общий тестбенч и сравнивать. Пропускную способность можно сравнить на симуляции на уровне регистровых передач, а максимальную тактовую частоту, размер и оценку энергопотребления — можно определять с помощью синтеза с Open Lane. Если российcкий вариант лучше — рекламировать, если хуже — анализировать что пошло не так.

283cfbe28ba3a4fc8b5b3d01fe2b9526.jpg

Ну и завершим тем, что как ни крути, но самую большую активность в освоений технологий Verilog, ASIC, FPGA, RTL-to-GDSII на пространстве бывшего СССР проявляют россияне в компании с беларусами. Только что открылась регистрация на новый сезон Школы Синтеза Цифровых Схем — образовательной инициативы, которую поддерживают 24 российских и 1 белорусский университет.

68b48656353aefd182dc72de02c223d6.jpg

В этом сезоне к Школе Синтеза присоединился и университет в Курске, что лично меня особо греет, потому что один из моих прадедушек был учителем и директором школы в Курске, Курской и Белгородской губерниях Российской Империи (при этом дедушка с бабушкой и родители были связаны с киевским политехом).

Так что покупаем учебники, FPGA платы, регистрируемся и поздравляем друг друга с началом нового учебного года!

a9a79fd9d0f8e87462da1eef6de98ac0.png

© Habrahabr.ru