Встретился на ланч с Дэвидом Харрисом, автором (вместе с Сарой Харрис) популярного учебника «Цифровая Схемотехника и Архитектура Компьютера», который за последние 10 лет помог закрыть монументальную дыру в техническом образовании десятков вузов России и Украины. До этого учебника во многих вузах сразу после триггеров шло программирование микроконтроллеров, то есть у студентов раньше вообще не возникала база для проектирования современных чипов по маршруту RTL‑to‑GDSII, технологии, которая за последние 30 лет привела нас к смартфонам, быстрому интернету и ускорителям ИИ.
Учебник Дэвида активно используется на Школе Синтеза Цифровых Схем, которую поддерживают 24 российских и 1 белорусский университет. Регистрация на новый сезон Школы только что открылась.
Фокус «Цифровой Схемотехники и Архитектуры Компьютера» — на логическом проектировании на уровне регистровых передач, с помощью языков описания аппаратуры Verilog и VHDL. Хорошим подспорьем к этому учебнику является российский учебник «Цифровой Синтез: RISC‑V» от коллектива авторов под эгидой ВШЭ МИЭМ, который привязывает материалы Харрисов к лабораторным работам на ПЛИС/FPGA, а также дополняет Харрисов например систолическими массивами, которые используются для ускорения вычислений машинного обучения.
При этом Дэвид Харрис — соавтор еще и учебника по физической стороне проектирования микросхем: CMOS VLSI Design: A Circuits and Systems Perspective, который глубже копает в сторону кремния и транзистора. К сожалению, пока эта книга еще не переведена на русский язык, хотя ее высоко оценивал например бывший замдиректора НИИСИ, специалист по радиационно‑стойким чипам Максим Горбунов.
И вот при встрече я узнал, что пару лет назад Дэвид решил прокопать и в другую сторону, и написал (тоже с Сарой Харрис и еще двумя соавторами) книгу с углубленным изучением проектирования микроархитектуры процессоров. Она называется RISC-V Microprocessor System-On-Chip Design и выходит в январе. Дэвид поделился со мной манускриптом и я могу пересказать содержание.
У новой книги Дэвида Харриса довольно четко очерченная поляна:
Не игрушечный, но и не навороченный. Минимально необходимый для Линукса.
С одной стороны, описанный в книге открытый процессор Wally не является игрушечным учебным процессором типа schoolRISCV. Wally содержит предсказатель переходов, кэши (в том числе многосекционные), устройство управления виртуальной памятью (TLB MMU), контроллер прерываний и поддержку арифметики с плавающей точкой.
С другой стороны, Дэвид и соавторы сознательно отказались идти дальше и описывать суперскалярные процессоры и многоядерные кластеры с кэш‑когерентностью (протоколы MESI). То есть их процессор — это минимальный процессор, на котором может работать Линукс и есть плавающая точка. И точка. На языке маркетинга процессор Wally стоит между microcontroller‑class core и mid‑range embedded processor core. Mid‑range процессоры (но без плавающей точки) ставят например в домашние роутеры с OpenWrt Linux.
В принципе, книга Дэвида — не первая, которая описывает все детали проектирования процессора, до него была например книга Монте Далримпла. Но Монте — это вышедший на пенсию бывший разработчик Zilog, который начинал еще во времена, когда транзисторы процессора рисовали на бумаге карандашом. Поэтому процессор Монте — это минимальный микроконтроллер, без кэшей и Линукса. Кроме этого Монте долго был контрактором на custom версии Z80, владельцем малого бизнеса, поэтому книга Монте никак не передает процес разработки в большой компании, а вот книга Дэвида Харриса передает. Что немудрено — Дэвид работал в Интеле и Sun‑е, то есть он хорошо знает про работу коллектива.
Также книга Дэвида Харриса описывает систему на кристалле, шины AHB и AXI. И в этом она тоже не первая — есть например полезная книжка Modern System‑on‑Chip Design преподователя из Кэмбриджа Дэвида Гривса. Однако книжка Гривса не привязана к коду на гитхабе, а вот у Харрисов — привязана.
Та же проблема у книги Modern Processor Design: Fundamentals of Superscalar Processors by John Paul Shen and Mikko H. Lipasti — в ней есть про суперскалярные и многопоточные процессоры, но она не привязана к коду, который можно симулировать, синтезировать, ставить эксперименты с производительностью итд. Кстати Дэвид Харрис тоже хочет добавить многопоточность в их ядро. Но не суперскалярность — и вот тут возникает открытая возможность для других авторов, может даже российских?
Раз уж мы заговорили о российских авторах — сейчас в зеленоградском МИЭТ идет работа над курсом по дизайну и верификации их собственного процессорного ядра MIRISCV, которое миэтовцы собираются развить примерно до такого же состояния, что и ядро Wally. Это означает, что в МИЭТ уже сейчас может сравнивать напрямую как эти ядра (дизайн, бенчмарки), так и процесс их верификации и синтеза. Это очень полезно! Для всего развития российcкой экосиcтемы.
Описание разработки и верификации процессора по взрослому
Дэвид Харрис и соратники впервые на моей памяти описали все аспекты разработки, в том числе верификацию RTL против архитектурной модели. То есть берется (или генерируется) тестовая программа, и она скармливается двум сущностям:
Первая сущность — это микроархитектурное описание процессора на языке SystemVerilog, на уровне регистровых передач (Register Transfer Level — RTL), с тактовым сигналом и стадиями конвейера. Это описание в процессе синтеза собственно и превращается в файл в формате GDSII, по которому делается фотошаблон, по которому на фабрике выпекают микросхемы.
Втора сущность — это архитектурная модель RISC‑V (в данном случае программа на Си от компании Imperas), которая ничего не знает о тактах, конвейере, интерфейсах с шинами, и реализует вид на процессор с точки зрения ассемблерного програмиста — видимые программисту регистры, ветвления, приблизительная модель кэша и виртуальной памяти.
В RTL/микроархитектурном описании, в конвейере одновременно обрабатывается несколько инструкций, и запуск инструкции на обработку не требует полного завершения предыдущей. В архитектурной же модели все инструкции выполняются последовательно, следующая начинается только после полного окончания предыдущей.
Но результат выполнения и в одной, и в другой сущности — это записи данных в архитектурные (то есть видимые программисту) регистры по завершению каждой инструкции. И вот эти результаты можно сравнивать. Почему? Хотя в RTL много параллельности, но дизайнеры процессора поддерживают иллюзию последовательного выполнения программы для своих пользователей — ассемблерных програмистов и создателей компиляторов.
И вот Дэвид описывает как делается такое сравнение конвейерной и архитектурной сущностей (мог бы сказать «сравнение микроархитектурной и архитектурной моделей», но так как код на RTL превращается в конечном итоге в железо, в транзисторы и дорожки, то язык не поворачивается назвать этот код "моделью").
Далее в книге Дэвид c коллегами описывают всего понемножку, чтобы читатели знали, что бывает в каждом процессорном проекте, и где искать подробности: про прототипирование на FPGA, про запуск на спроектированном процессоре операционки Линукс, про отладку после пробного производства (post-silicon debug) и даже про писание Tcl скриптов для синтеза.
Для иллюстрации можно привести мою собственную картинку взаимодействия инженеров в проекте блока, которую я нарисовал для статьи про аппаратное ускорении ИИ в российском альманахе AI Report от МФТИ. В ней показано как взаимодействуют:
Инженер по архитектурному моделированию;
Инженер-верификатор, три роли: создатель среды верификации, создатель тестовых сценариев и специалист по проверке функционального покрытия (то есть проверки полноты тестов);
Микроархитектор блока / проектировщик на уровне регистровых передач;
Инженер по физическому проектированию.
Теперь ответы на вопросы читателей
У меня накопились вопросы читателей предыдущих книг Харрисов с телеграм-канала Школы Синтеза Цифровых Схем, а также канала icDesignCommunity и fpgasystems. Я задал Дэвиду не все вопросы, так как беседу в основном вел Дэвид, но пару ответов он сформулировал:
Рекомендации как начинать жизнь молодому инженеру
Дэвид работает в частном университете Harvey Mudd College, который является довольно нестандартным местом. Хотя университет всего 4-х летний и не так известен как Беркли и MIT, но он находится в топе по средней зарплате выпускников-бакалавров. Разумеется, выпускник не обязан ограничиваться 4-мя годами - потом он может идти получать магистра в Калтех, MIT или Стенфорд если захочет.
Подход Дэвида: лучше всего, если студент изучит основы и попробует на практике три разные инженерные специальности, например цифровую электронику, механический инжиниринг и скажем оптику или материалы. То есть посмотрит на решение инженерных задач в разных областях. Тогда он заодно научиться как осваивать и другие области, тем более что большинство деталей технологий за 5 лет все равно устаревают.
В прошлый визит к Дэвиду в 2015 году я смотрел как его студенты проектируют подводного робота — пример разноплановой инженерной задачи:
Что вы думаете про AI?
Дэвид сказал что AI проникает во все места, в частности аппаратные ускорители ML вычислений. А также что он использует ChatGPT в обучении, следующим образом: после каждого занятия Дэвид дает для домашней работы семь вопросов, из которых шесть — обычные, а вот на седьмой вопрос нужно ответить с помощью ChatGPT, причем проанализировать все возникающие у ChatGPT галлюцинации и, с помощью уточнений, привести его к правильному ответу.
Что Дэвид думает про факт, что студенты плохо решают жизненно важные для RTL позиций в компаниях типа Самсунга микроархитектурные задачи?
Тут уж я пожаловался Дэвиду, что студенты плохо решают задачи на контроль потока данных и подобные (я описал проблему в 1, 2, 3 и 4). Сначала Дэвид сказал, что учебная программа не резиновая, и он сам жалеет, что не имеет возможность развернуто поговорить о других сторонах электроники, в частности про физические аспекты транзисторов. Но потом, когда я объяснил Дэвиду актуальность таких микроархитектурных приемов для задач в сетевых чипах и GPU, он согласился, что про это стоит написать книгу или главу и предложил мне этим и заняться.
В конце Дэвид пожелал всем успеха и оставил автограф мне, клубу Verilog Meetup и Школе Синтеза Цифровых Схем / Digital Circuit Synthesis School:
На следующий день после встречи с Дэвидом Харрисом я проводил выездную встречу клуба Verilog Meetup в Лос‑Анжелесе. Обычно мы встречаемся в городе Горный Вид (Mountain View) в Silicon Valley. Встречу в Лос‑Анжелесе я рекламировал для трех категорий слушателей:
Для интересующихся, что собственно делает в офисе инженер, который проектирует блоки микросхемы в телефоне Самсунг Галакси. Или Apple iPhone. Или вообще космической ракете от Роскосмоса или Blue Origin. База технологии, идея цифровой логики (комбинационная + последовательностная), как работает инженерная группа.
Для студентов и их родителей, которым может быть полезно понять, как готовиться к поступлению на работу после окончания университета. Для людей в индустрии не секрет, что куча отличников топовых вузов банально проваливаются на интервью в электронные компании, потому что они запомнили слайды с лекций, но не делали практических проектов. Или делали проекты, но не проверяли особые случаи, ожидая что профессор проверит. Поэтому надо практиковаться, например в формате клуба Verilog Meetup.
Также такие встречи полезны для инженеров, которые уже работают в электронной или софтверной промышленности, но делают не дизайн на уровне регистровых передач, а заняты чем‑нибудь смежным и хотят или сменить профессию, или расширить области, в которых они разбираются. Бывают Design Verification (DV) инженеры, которые хотят стать RTL инженерами, программисты firmware которые хотят стать DV инженерами, инженерами которые заняты post‑silicon debug, которые хотят стать RTL или DV. Или программисты инфрастуктуры из Гугла или Амазона, которые хотят расшириться в хардверную инфраструктуру, или full stack инженеры которые хотят стать еще более full stack.
Для встречи в LA я подготовил вот такие слайды, а также принес плат с микросхемами FPGA / ПЛИС, так как без демо на платах слушатели часто скучают. Пришли 13 человек (16 с организаторами), из которых были русские, украинцы, армяне, в том числе русский програмист (вроде из Гугла или Амазона) с дочерью, другие серьезного вида старшие школьники, в том числе владеющий Линуксом, а также индийский инженер из Интела и китайский инженер, который был интерном у нас в Самсунге, а сейчас работает проектировщиком в LA.
Вот как это выглядело на Youtube (краткие видео):
и на RuTube:
Это видео и фотографии приготовил видеограф Арсений Кристенко из агентства 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 во все свои семинары в разных странах. Пока же я, не отходя от кассы, заказал производство трех пробных дизайнов:
Adder with Flow Control — вопрос на интервью, которым я мучаю студентов‑отличников.
schoolRISCV CPU with Fibonacci program — школьный процессор от Станислава Жельнио.
Sea Battle VGA game with sprites — видеоигра со спрайтами, чисто в хардвере, без процессора и софтвера. Вообще она выглядит скорее как «Ракета и Дрон», но я назвал ее «Морской бой», чтобы не смущать никого ассоциациями.
Помимо симуляции и производства на фабрике, у дизайнера есть еще одна опция — реализовать свою схему на микросхемах реконфигурируемой логики ПЛИС / FPGA. Я принес платы с такими микросхемами на встречу в LA, и показал участникам, как соединить FPGA с графическими экранчиками и рисовать статические и движущиеся картинки:
Как это работает? FPGA — это матрица из ячеек, в которых стоит конструкция под названием Lookup Table, или LUT. Простой LUT можно построить из трех мультиплексоров, аппаратных аналогов софтверного оператора «if». У такого LUT есть шесть входов и один выход. Четыре входа, константы a, b, c, d — берутся из битов памяти конфигурации. Еще два входа — x0 и x1 — переменные. В зависимости от значений a,b,c,d вся конструкция работает либо как логическая операция И над x0 и x1, или как логическая операция ИЛИ, или как любая другая булевская функция от переменных x0 и x1.
В ячейках FPGA также есть элементы состояния, D-триггеры, которые позволяют строить схемы с тактовым сигналом: счетчики, конечные автоматы и конвейеры.
Кроме встречи в LA мы каждое воскресенье проводим встречи в клубе хакеров Hacker Dojo в Маунтин‑Вью, Калифорния. Встречи сообщества Verilog Meetup начинаются в 11 утра и проходят до 2 часов дня. На заседания заходят инженеры из Apple, Google, Intel, Amazon, NVidia итд. Мы в основном заняты созданием новых примеров на верилоге и поддержкой новых FPGA плат. Под лозунгом «Образовывай себя с помощью образования других». Выглядит это так: в YouTube:
В RuTube:
18–20 октября наше сообщество Verilog Meetup будет участвовать в выставке самоделкиных Maker Faire в городе Вальехо, который кстати два раза был столицей Калифорнии:
На выставке мы будем демонстрировать в частности вот такой набор для экспериментов с FPGA на основе микросхем от GoWin Semiconductor, китайской компании, у которой есть отличный шанс отобрать часть образовательного рынка от американских компаний Xilinx (часть AMD) и Altera (часть Intel).
Если вы живете в области сан‑францисского залива и хотите билет на Maker Faire бесплатно, заходите на заседания Verilog Meetup по воскресеньям. Соберете установку, запустите на ней все примеры — получите билет (у меня есть пять билетов для таких целей). Кому билетов не хватит, можете их купить здесь.
А если напишите адекватную инструкцию по сборке платы и запуску примеров на любом из языков народов СССР (русский, украинский, армянский, азербайджанский и другие) — получите и весь комплект бесплатно. Комплект уже одобрил например преподаватель из Швейцарии.
Тут надо сказать, что движение за улучшение преподавания электроники происходит не только в Америке и Китае, но и например на Украине. Где за это дело взялись известные преподаватели‑активисты Евгений Короткий и Сергей Иванец, из Киевского и Черниговского Политехов соответственно. С Евгением и Сергеем мы еще в 2016–2017 года организовали пару семинаров в Киеве (Короткий — это на фото высокий с лампочкой). Короче, они пришли в Киевскую Школу Экономики, где в духе Евроинтеграции скооперировались с европейским университетом ETH Zurich, совместная программа с которым стартует в этом месяце.
Эти программы полезно анализировать, особенно россиянам. Например из описания 227–0116–00L VLSI 1: HDL Based Design for FPGAs видно, что там не хватает времени на микроархитектуру, но зато есть моменты по верификации, в которых, по моему опыту с практикантами, плавают даже выпускники Стенфорда. Еще полезно смотреть на проекты на гитхабе от ETH Zurich, находить то, чего не хватает в российских программах (например DMA controller в PULP), писать свой аналог, потом ставить их в общий тестбенч и сравнивать. Пропускную способность можно сравнить на симуляции на уровне регистровых передач, а максимальную тактовую частоту, размер и оценку энергопотребления — можно определять с помощью синтеза с Open Lane. Если российcкий вариант лучше — рекламировать, если хуже — анализировать что пошло не так.
Ну изавершим тем, что как ни крути, но самую большую активность в освоений технологий Verilog, ASIC, FPGA, RTL‑to‑GDSII на пространстве бывшего СССР проявляют россияне в компании с беларусами. Только что открылась регистрация на новый сезон Школы Синтеза Цифровых Схем — образовательной инициативы, которую поддерживают 24 российских и 1 белорусский университет.
В этом сезоне к Школе Синтеза присоединился и университет в Курске, что лично меня особо греет, потому что один из моих прадедушек был учителем и директором школы в Курске, Курской и Белгородской губерниях Российской Империи (при этом дедушка с бабушкой и родители были связаны с киевским политехом).
Так что покупаем учебники, FPGA платы, регистрируемся и поздравляем друг друга с началом нового учебного года!
Комментарии (22)
heinehen
24.09.2024 14:47+3Юрий — Вы просто большой молодец!
Желаю Вам всяческих благ за такую активность.
MasterIT75
24.09.2024 14:47+2Спасибо за интересный материал. Жду продолжения. Про Школу синтеза слышал, но к сожалению, уже не подхожу.
unreal_undead2
24.09.2024 14:47это архитектурная модель RISC‑V (в данном случае программа на Си от компании Imperas)
Кстати, не подскажете, насколько широко используются в реальной жизни более абстрактные описания (скажем, Sail)? Знаю про ASL - выглядит интересно, но почему то его явно не показывают публике, хотя можно выдрать руками из публичных xml файлов; посмотрим ещё, получится ли у автора внедрить что-то подобное в Интеле.
YuriPanchul Автор
24.09.2024 14:47+1SAIL - это вещь насколько я понимаю относительно новая. Причина любви к Imperas довольно простая - на него еще в 2010 году подсел и ARM, и MIPS из-за его скорости и качества.
Платная версия Imperas-а делает быструю бинарную трансляцию, то есть содержит внутри кэш трансляций из RISC-V -> x86/64, из-за чего симуляция на порядок быстрее чем у других симуляторов. При этом симуляция высокого качества, например содержит гораздо меньше глюков чем QEMU, другой симулятор с кэшем трансляций.
Это означает, что на Imperas можно запустить например boot Linux-а, и он будет быстрым и при этом не нужно будет его мучительно отлаживать на предмет тонкостей реализации какого-нибудь FPU или прерываний.
unreal_undead2
24.09.2024 14:47Меня это скорее в плане анализа кода интересует (чтобы, например, написать переносимый между архитектурами код подсчёта флопов в куске ассемблера).
YuriPanchul Автор
24.09.2024 14:47+1Вы про какие флопы? Про изменения состояния архитектурных регистров (реализованных в виде регистрового файла из D-flip-flops), для анализа динамического энергопотребления? (я уже засыпаю, поэтому возможно туплю)
nckma
24.09.2024 14:47Интересно, если RISCV Verilog проект собрать верилатором, получится ли симулятор сопоставимый по скорости работы? Преимуществом будет несомненная точность исполнения, а вот по скорости как? Я как-то экспериментировал с верилатором и был очень впечатлён его скоростью.
checkpoint
24.09.2024 14:47Я частенько верилатором дебажу VexRiscV (ядро RISC-V написаное на SpinalHDL и предварительно преобразуется в Verilog). Очень медленно, но зато можно потактово исполнять и программно анализировать состояния всех регистров процессора и всей аппаратуры. Симуляция через верилатор интегрирована в SpinalHDL, очень удобно, тестбенч пишется на Scala тут же в коде аппаратуры ядра.
YuriPanchul Автор
24.09.2024 14:47Совершенно точно нет. Даже с верилятором, хоть он и быстрый для уровня регистровых передач (RTL), будет минимум на два порядка медленнее, чем с симулятором на уровне инструкций с бинарной компиляцией. Зато верилятор cycle-accurate.
aabzel
24.09.2024 14:47Одни разговоры. Лучше бы подробную инструкцию по настройке toolchain для fpga разработки выложили
checkpoint
24.09.2024 14:47+1Про установку опенсорсного тулчейна есть в моей статье: https://habr.com/ru/articles/801191/#6
Там же написано как запустить примеры из репозитория «basics-graphics-music».
YuriPanchul Автор
24.09.2024 14:47Некоторые инструкции есть в репозитории примеров (сейчас в ветке new_graphics), но я скоро выложу и вылизанную инструкцию. Вам для какого тулчейна? Xilinx, Altera, Gowin, Lattice, Yosys-based?
aabzel
24.09.2024 14:47+1Mid‑range процессоры (но без плавающей точки) ставят например в домашние роутеры с OpenWrt Linux.
Вот типичный домашний маршрутизатор
Внутри MIPS24KEc процессор MT7620DA
keizerundallah
Юрий, правильно ли я понимаю, что вы ходите дать возможность даже российским учащимся Школы Синтеза запуститься на Tiny Tapeout?
YuriPanchul Автор
Это интересный вопрос. Наверное самый интересный вопрос из всех которые я ожидал к этому посту. С одной стороны, Tiny Tapeout обязан подчиняться ограничениям Бюро Промышленности и Безопасности и не имеет права посылать в Россию платы с чипом, пусть даже с российcким дизайном, который еще и произведен на единственной американской фабрике которая целиком в американском владении (Skywater) и используется американскими военными (то есть это полный аналог российкого Микрона и даже технология у них как и у Микрона на 130 нанометров). С другой стороны, открытые проекты через гитхаб разрешены даже гражданам Ирана - https://github.blog/news-insights/policy-news-and-insights/advancing-developer-freedom-github-is-fully-available-in-iran/
Короче тут без бутылки и обсуждений с Tiny Tapeout не разберешься.
checkpoint
Юрий, Вам надо выходить на руководство АО Микрон с аналогичным проектом. К Вашим словам (и к коллегам из МИЭМ, МИРЭА), они могут прислушаться и может быть под закат жизни нам удастся изготовить по cобственному кристаллу на российском Микроне. Для меня сделать свой маленький микропроцессор это такой нереализованый гештальт из детства. ;)
Новую книгу Харрисов обязательно почитаем. Пожалуйста, дайте знать когда она появится в зарубежной печати.
YuriPanchul Автор
В принципе российский шаттл сервис уже есть, его опробовали в МИЭТ
https://mpw.miet.ru/
То есть тут на самом деле надо просто сделать софтверную ифраструктуру, похожую на Tiny Tapeout (с скриптами для гитхаба, серверами и аналогами discord community), чтобы все это могли бы делать не только студенты определенных вузов, но кто захочет.
aabzel
Я в институте ещё застал те времена, когда можно было учиться у преподавателя, который является автором советского микропроцессора КР1806ВЕ1
YuriPanchul Автор
UPD: нет, перепутал