
Где учиться разработке микропроцессоров: подборка бесплатных курсов ведущих вузов
с помощью нейросети
Давно уже не обязательно поступать в вуз для того, чтобы попробовать новую профессию или повысить квалификацию. В открытом доступе есть множество качественных образовательных материалов для самостоятельного изучения. При этом инженерные курсы по-прежнему непросто найти даже при желании — их нет на привычных платформах дистанционного обучения и в топе поисковой выдачи.
Николай Терновой, инженер по разработке аппаратного обеспечения и амбассадор RISC-V International, составил подборку бесплатных образовательных курсов по дизайну процессоров и компьютерным архитектурам. Вас ждут материалы ведущих российских и иностранных университетов: МИЭТ, МФТИ, MIT, Berkeley и других. Для их прохождения не понадобятся студенческий билет, членство в ассоциации ученых или оплата вступительных взносов в какую-либо организацию. Все, что вам нужно, — это доступ в интернет, регистрация на учебной платформе, а для некоторых курсов — тренировочная FPGA-плата для выполнения практических заданий.
- какую книгу стоит прочитать всем, кому интересно научиться создавать современные микросхемы
- какие инженерные курсы MIT, Berkeley, МИЭТ и других ведущих вузов доступны всем желающим
- в каком программном симуляторе можно отработать полученные знания и навыки
Информация о каждом курсе сопровождается подробными комментариями автора. Из них вы узнаете, какие знания понадобятся на старте обучения, чему именно можно научиться в ходе ознакомления с лекциями и выполнения практических задач, а также на какие результаты стоит рассчитывать после успешного прохождения программы. Материал структурирован по принципу возрастания сложности курсов.
Содержание статьи
«Азбука» будущего дизайнера чипов
У разных специальностей есть своя настольная книга, про которую говорят, что ее стоит прочитать перед входом в профессию. С моей точки зрения, в мире разработки современных микросхем это «Цифровая схемотехника и архитектура компьютера» профессоров Харрис и Харрис. Это фундаментальный учебник для младших курсов, над переводом которого на русский язык работали больше полусотни человек из передовых вузов и компаний.
Основное издание посвящено архитектуре MIPS. К нему вышло два дополнения:
Учебник Харрисов является введением в разработку современных микросхем. Его главы охватывают все, что находится между физикой и высокоуровневым программированием:
- принципы, необходимые для понимания и проектирования электронных систем,
- проектирование комбинационной и последовательной логики,
- языки описания аппаратуры SystemVerilog и VHDL,
- цифровые функциональные узлы,
- архитектуры и микроархитектуры,
- иерархию памяти и подсистему ввода-вывода,
- реализацию цифровых схем.

Следуя учебнику, можно построить реализацию подмножества архитектуры MIPS, используя доступные в магазинах отладочные платы на базе ПЛИС. А после сравнить получившуюся реализацию с индустриальным микроконтроллером Microchip PIC32. Даже если не делать практику, то книга Харрисов — это важная ступень, которую нужно преодолеть, чтобы делать дальнейшие шаги к профессии из мира разработчики микрочипов.
Курсы на русском языке
Я рекомендую начинать обучение с русскоязычных курсов. Так гораздо легче разбираться с непривычной терминологией, базовыми понятиями из мира «железа» и системного программирования. Плюс, если материалы опираются на англоязычные источники, преподаватели уже сделали качественный перевод с актуальными дополнениями.
Архитектуры процессорных систем, МИЭТ
Московский институт электронной техники выложил в открытый доступ все материалы своего курса «Архитектуры процессорных систем». По этим лекциям и лабораторным работам учатся студенты МИЭТ сразу семи направлений подготовки — от конструирования и технологии электронных средств до радиотехники. Дисциплина «Архитектуры процессорных систем» — важное связующее звено между теоретическими знаниями о процессорных системах с их применением в реальном мире. Никаких специальных знаний для обучения не потребуется.
Курс поможет понять устройство и способы организации процессоров, а также все взаимосвязанные вопросы.
Материалы МИЭТ помогут вам разобраться, зачем нужны компиляторы, как процессор обрабатывает инструкции, что такое конвейеры, кэши, параллельные вычисления и ПЛИС. Лекции познакомят со всеми основными понятиями и концепциями разработки современных цифровых устройств.
Преподаватели регулярно обновляют материалы курса, так чтобы он лучше отвечал запросам индустрии. Например, особое внимание уделено открытой процессорной архитектуре RISC-V.
Курс МИЭТ включает записанные лекции разных лет с иллюстрированными конспектами, а также лабораторные работы с подробными методичками. Практическая часть выполняется в САПР для создания цифровых устройств Vivado, поэтому преподаватели подготовили базовые инструкции по работе с ней. Кроме этого вы найдете списки дополнительной литературы и полезных начинающему инженеру материалов.
Лекции начинаются с введения и главных концепций аппаратной разработки, дальше идут основы цифровой схемотехники, блоки по архитектурам и микроархитекрурам, процессорным системам и их современным архитектурам.
Примеры того, что вы узнаете из лекций:
- чем архитектура отличается от микроархитектуры и почему это важно для будущего разработчику микропроцессорных систем,
- что такое последовательная логика и конечные автоматы,
- какие виды процессорных архитектур существуют и как их классифицируют,
- как устроена архитектура RISC-V и как в ней происходят ветвление, вызов процедур, передача параметров,
- как работают однотактные, многотактные и конвейерные процессоры на базе RISC-V,
- какие существуют методы повышения производительности процессора,
- что такое иерархия памяти и когерентность кэша,
- что такое микроконтроллеры и как к ним подключаются периферийные устройства.

Все знания можно сразу применить на практике, сделав лабораторные работы. Всего в курсе их 15. В ходе лабораторных вы создадите 32-битный сумматор, напишете блок арифметико-логического устройства на языке SystemVerilog, разработаете блок загрузки и сохранения для подключения к внешней памяти данных и многое другое.

Изучив курс МИЭТ, вы пройдете полный путь разработки заказного процессорного IP-ядра. Научитесь проектировать вычислительные блоки и конвейеры процессора, разберетесь с логикой выборки и декодирования инструкций, получите навыки работы с памятью и периферией. Ваш итоговый процессор будет соответствовать базовому набору RV32I и программироваться на языке C.
Не требуется. Все материалы доступны в репозитории на GitHub, а записи лекций — на YouTube.
- репозиторий курса на GitHub,
- видеозаписи лекций на YouTube.
Архитектура компьютера и операционные системы, ФПМИ
Лекторий Физтех-школы прикладной математики и информатики выложил записи курса «Архитектура компьютера и операционные системы». Он посвящен аппаратной части компьютера, операционным системам и основам системного программирования. Курс во многом ориентирован на Linux-системы и дает навыки работы именно в них.
Материалы курса помогут вам понять, что скрыто за высокоуровневыми библиотеками и фреймворками.
Вы изучите основы архитектуры компьютера и построения UNIX-подобных операционных систем. Разберетесь, что такое сигналы, каналы и сокеты, как операционные системы управляют ресурсами и процессами, а также как происходит передача данных по сети.
Материалы курса включают записи лекций и практических семинаров. В репозитории на GitHub выложены презентации, а также подробные конспекты к семинарам, которые обновляются ежегодно. Больше всего практических занятий выполняют студенты программы «Прикладная математика и информатика», их вы найдете в разделе «Направление ПМИ в бакалавриате ФПМИ».
Лекции начинаются с азов: представления вещественных и целых чисел в вычислительных машинах, а также разных частей компьютера и способов их взаимодействия. Дальше идет разбор работы процессора, способов ускорения выполнения кода и другие основы работы с «железом». Завершает курс разбор модуля отбора пакетов Berkeley Packet Filter.
Примеры того, что вы узнаете из лекций:
- из каких компонентов состоит операционная система, как она запускается и при чем здесь демоны,
- что на самом деле умеет делать процессор и как устроено межпроцессорное взаимодействие,
- как кодируются команды процессора и на какие классы они делятся,
- какова роль файловых систем и какими они бывают,
- как устроена работа с оперативной памятью и что такое OOM killer,
- какие атрибуты есть у каждого процесса в операционных системах и как устроен алгоритм планирования заданий,
- как в операционных системах реализована многопоточность и что такое стек потока,
- что происходит при передаче данных в компьютерных сетях и как этим можно управлять.

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

Прослушав лекции и выполнив задания семинаров, вы научитесь создавать разные виды процессов и обеспечивать их совместную работу. Сможете разрабатывать программы, способные заменить стандартные утилиты POSIX, и овладеете навыками компиляции и отладки программ в Unix-подобных системах. А также получите начальный опыт тестирования сложных многопоточных программ.
Не требуется. Все лекции и семинары опубликованы на YouTube, а материалы к семинарам — GitHub.
- репозиторий курса на GitHub,
- видеозаписи лекций осени 2020,
- видеозаписи семинаров осени 2020,
- видеозаписи лекций весны 2021,
- видеозаписи семинаров весны 2021,
- дополнительные записи семинаров осени 2021.
Архитектура компьютерных систем, МФТИ
В рамках проекта симулятора MIPT Московский физико-технический институт выложил материалы базового курса «Архитектура компьютерных систем». Преподаватели читают лекции на русском языке с использованием англоязычных презентаций. Курс обозревает архитектуры компьютера с фокусом на микроархитектуру процессоров и частично — систему команд RISC-V, компиляторы и операционные системы. Специальных знаний для обучения не потребуется.
Курс поможет разобраться со слоями абстракций от физического уровня до уровня операционной системы.
Вы пройдете путь от самых основ компьютерных архитектур до устройства многоядерных микропроцессоров. На уровне физики познакомитесь с химическими свойствами кремния и узнаете, как работают транзисторы. На уровне схемотехники разберетесь с комбинационными и последовательными схемами. Перейдете к микроархитектурам и наборам инструкций: узнаете, что такое ISA, исключения и прерывания, познакомитесь с конвейерами разной сложности. В конце приблизитесь к уровню операционной системы и разберетесь с мультипроцессорными системами.
В открытый доступ выложены презентации курса за разные годы и 15 лекций за 2018/2019 учебный год. Структура лекций немного отличается от презентаций последующих лет, но охватывает те же темы. К сожалению, лекции последующих лет, размещенные на сайте и в GitHub-репозиториях, уже недоступны.
Примеры того, что вы узнаете из презентаций и лекций:
- какие слои абстракций лежат между физическим уровнем и высокоуровневым приложением,
- что означает аббревиатура MOSFET и как работают транзисторы,
- какие ключевые вещи декларируются в наборах инструкций,
- какая концепция лежит в основе архитектуры MIPS и почему именно на ней часто проводят обучение,
- что такое конвейеризация и как она связана с производительностью микропроцессора,
- что такое предсказание переходов (branch prediction) и что из себя представляет динамическое предсказание переходов,
- как кэши реализуются в «железе» и как можно оптимизировать программы с учетом устройства кэшей в процессоре,
- как операционная система взаимодействует с процессором через виртуальную память,
- почему в какой-то момент процессоры стали многоядерными и какие технические преимущества это принесло.

Вы получите базовые теоретические знания по микроархитектуре процессоров, которые позволят перейти к любому практически направленному курсу. А еще материалы МФТИ облегчат изучение курсов иностранных университетов, поскольку вы будете видеть название всех терминов на английском с их объяснением на русском в ходе лекций.
Не требуется. Лекции опубликованы на YouTube, а презентации можно скачать с сайта курса или GitHub.
- сайт курса,
- видеозаписи лекций на YouTube за 2018/2019 год,
- репозиторий на GitHub с презентациями за разные годы.
Архитектура и язык ассемблера RISC-V, МГУ
Московский государственный университет открыл материалы курса «Архитектура и язык ассемблера RISC-V. Курс прослеживает связь между этой организацией процессора и общими принципами построения вычислительных систем, а также предполагает практическую работу в симуляторе RARS.
К лекциям МГУ лучше переходить после того, как вы познакомитесь с базовыми концепциями компьютерных архитектур и схемотехники, потому что в материалах нет детального разбора азов: таких понятий, как система команд, адрес, память или регистр.
Курс поможет изучить систему команд RISC-V и технику программирования на языке ассемблера.
Он рассматривает принципы развития архитектур ЭВМ через призму RISC-V. В материалах речь будет идти именно о процессорах, другие устройства упоминаются только в контексте взаимодействия с CPU. Вы разберетесь с системными вызовами, исключениями, прерываниями, предсказаниями переходов, кэшами и процессорными конвейерами. Все это — на практических примерах.
Материалы включают 12 видеозаписей лекций и текстовые конспекты к ним, а также запись практического задания по программированию на языке ассемблера RISC-V в RARS.
Примеры того, что вы узнаете из лекций:
- как организована система команд в RISC-V и как подбирать нужные команды,
- что такое конвенции и зачем инженеру о них знать,
- какими способами можно реализовать повторное использование исходного кода,
- в каком месте памяти в RISC-V находится стек и сколько байт можно в него добавлять,
- зачем нужны математические сопроцессоры и какие расширения для поддержки арифметики с плавающей точкой есть в RISC-V,
- какой механизм используется для обработки исключений и прерываний,
- как устроен микропрограммный цикл RISC-V.

Вы получите базовые знания, необходимые для работы с RISC-V, и научитесь создавать программы среднего объема на языке ассемблера.
На курс не нужно регистрироваться, записи лекций доступны на YouTube, а текстовые материалы — на сайте курса.
- cайт курса с материалами за 2022 год,
- видеозаписи лекций на YouTube,
- сайт курса, на котором появятся записи лекций за 2024 год.
Cимулятор Ripes
Навыки по разработке процессоров, которые вы приобретете на курсах, можно отработать в симуляторе Ripes. Это инструмент с открытым исходным кодом для моделирования поведения процессора и иерархии его памяти для RISC-V.

В Ripes можно создавать различные конфигурации процессора: делать его однотактным, конвейерным, пробовать разные архитектуры памяти и замещения внутри кэша, а также смотреть, как все это влияет на исполняемую программу. Исполнять код можно как на С, так и на языке ассемблера. Это позволяет наглядно понять, какие блоки есть в процессоре и как программа живет и исполняется внутри него.
В симуляторе есть удобная пошаговая отладка, с помощью которой можно посмотреть на шаг вперед или вернуться на шаг назад. Это один из лучших учебных open source-инструментов для исследования работы процессорного ядра.
Я использовал Ripes для проведения лабораторной работы по проектированию процессорного кэша в Школе синтеза цифровых схем, и симулятор хорошо себя проявил.
Курсы на английском языке
Фундаментом современных курсов по разработке процессоров и компьютерным архитектурам служат материалы ведущих технических университетов Америки и Англии. Например, лекции профессора Паттерсона известны буквально каждому преподавателю и студенту в области компьютерной инженерии. MIT, Berkeley, Цюрихский университет были и во многом остаются драйверами индустрии, поэтому статья была бы неполной без их курсов.
У каждого учебного заведения в открытый доступ выложены разные материалы: где-то это полный курс от видеозаписей лекций до задач на экзамен, где-то — только презентации и лабораторные работы.
Digital Design and Computer Architecture, University of Zurich
Это один из лучших курсов, которые есть в современных университетах для тех, кому интересна аппаратная разработка. Он знакомит студентов с принципами цифрового проектирования, компьютерной архитектуры и языками описания аппаратуры. Основное внимание уделяется фундаментальным методам, которые используются при проектировании микропроцессоров и их аппаратно-программного интерфейса.
Знаний, которые студенты получают на курсе, достаточно для создания простого микропроцессора.
В программу входят лекции по основам компьютерной архитектуры, цифровому логическому проектированию, проектированию процессоров и системе памяти. Вы узнаете об особенностях разных современных процессоров и научитесь использовать существующие кейсы для создания собственных хороших дизайнов.
Цюрихский университет выложил в открытый доступ абсолютно все материалы курса за разные годы. Это не только презентации и видеозаписи лекций с таймкодами, но еще и лабораторные работы, дополнительные упражнения и даже экзаменационные задания со всеми решениями.
Примеры того, что вы узнаете из лекций:
- как найти компромисс между производительностью и сложностью в аппаратной реализации,
- как реализовать комбинационную и последовательную логику на языке Verilog,
- какую роль играют FPGA-платы в разработке современных компьютерных систем,
- что такое ISA и какие форматы инструкций существуют,
- каковы фундаментальные различия между регистрами и памятью,
- как устроена архитектура VLIW, в чем ее преимущества и недостатки,
- что такое SIMD и как эта аббревиатура связана с графическими процессорами,
- как можно повысить производительность кэша.

Программа курса включает девять лабораторных, которые учат работе с FPGA-платами, языком Verilog и языками ассемблеров. Выполнять практику предлагают на плате Basys 3 и в САПР Vivado.
Вот несколько примеров задач, которые вы встретите:
- разработать простые комбинаторные схемы,
- запустить самостоятельно написанный 4-разрядный сумматор на FPGA-плате Basys 3,
- разработать декодер, который получает 4-битный входной сигнал и возвращает 7-битный выходной сигнал,
- реализовать конечный автомат для управления задними фонарями Ford Thunderbird 1965 года выпуска на языке Verilog,
- реализовать АЛУ на языке Verilog, оценить скорость его работы и утилизацию ресурсов,
- написать код на ассемблере MIPS и выполнить его в симуляторе MARS.

Вы поймете, как можно реализовать простой микропроцессор и сможете осознанно принимать решения по дизайну и оптимизации. А еще разберетесь, как аппаратная часть компьютера влияет на высокоуровневое программное обеспечение.
Не требуется. Видео лекций выложены на YouTube, презентации, задания лабораторных работ и материалы экзаменов можно скачать с сайта.
Ссылки
- сайт курса с материалами с 2015 по 2022 годы,
- плейлист на YouTube с лекциями 2022 года.
Computer Architecture and Engineering, Berkeley
Курс знакомит с компьютерной архитектурой и аппаратной разработкой, компиляторами и операционными системами. От студентов ожидают наличие хотя бы небольшого опыта программирования. Предыдущий опыт работы с языками разработки аппаратуры, например, Verilog может быть полезен, но не обязателен.
Курс Berkeley посвящен взаимодействию аппаратного и программного обеспечения, а также проектированию
соответствующих слоев абстракции.
Вы узнаете, что такое конвейеры, суперскалярное, спекулятивное и внеочередное исполнение, векторные и VLIW-машины, многопоточность, графические процессоры и параллельные микропроцессоры. Изучите проектирование систем памяти, включая кэши, виртуальную память и DRAM. А также познакомитесь с разными формами параллелизма, которые встречаются в приложениях и тем, как можно их использовать.
Важная часть курса — серия лабораторных работ с использованием реальных микропроцессорных дизайнов, реализованных на языке Chisel. А задачи на симуляцию позволят вам детально изучить разные архитектурные технологии микропроцессоров.
В открытом доступе опубликованы видеозаписи и презентации лекций за 2023 год, задания и видео дискуссионных секций, лабораторные работы, домашние задания и материалы для дополнительного чтения. На одной из страниц вы найдете экзаменационные задачи с 2018 по 2023 годы и их решения. Также на отдельном сайте есть раздаточные материалы за 2021 год: презентации к лекциям, задания проверочных работ, а также материалы для дополнительного чтения.
Примеры того, что вы узнаете из лекций:
- каковы фазы выполнения инструкций в RISC-V,
- что за «железный закон» описывает производительность микропроцессора,
- что означают аббревиатуры DDR2 и WSC,
- что такое пропускная способность и когерентность кэша,
- как устроены современные системы виртуальной памяти,
- как GPU эволюционировали от решения только графических задач к вычислениям общего назначения,
- какими были суперкомпьютеры 1980-х и как они связаны с векторами,
- зачем нужна модель согласованности памяти.

Дискуссии и домашние задания проверяют полученные знания. Лабораторные позволят получить опыт работы в симуляторах и посмотреть на примеры взаимодействия программного и аппаратного обеспечения. При работе над заданиями курса вы научитесь применять язык конструирования аппаратуры Chisel, а также немного прикоснетесь к разработке на C/C++ и Python.
Вот примеры заданий, которые вы встретите в практической части курса:
- создать и выполнить симуляцию одноступенчатого процессора,
- объяснить, каким будет результат исполнения кода,
- изучить, насколько эффективно или неэффективно происходит компиляция вашего кода на языке C,
- предложить новую инструкцию для ISA RISC-V,
- переписать код так, чтобы использовать блокировку кэша,
- разработать свой branch predictor и аппаратный предварительный выбор (hardware prefetcher).

Курс поможет разобраться в основных концепциях, используемых в современных микропроцессорах. Вы узнаете, как программное обеспечение взаимодействует с аппаратным, получите опыт работы на Chisel и познакомитесь с тенденциями, которые определяют постоянные изменения в области аппаратной разработки.
Не требуется, все материалы можно скачать на сайте курса, а видеозаписи лекций опубликованы на YouTube.
- сайт курса с материалами 2023 года,
- страница с экзаменационными заданиями,
- сайт курса с материалами 2024 года,
- сайт курса с материалами 2021 года.
Introductory Digital Systems Laboratory, MIT
Курс 6.111 считается одним из самых востребованных в Массачусетском технологическом институте. Он охватывает все основные темы цифрового проектирования: цифровую логику, строительные блоки последовательностных логических устройств, конечные автоматы, работу с FPGA, таймерами и синхронизацией. Материалы курса будет легче изучать, имея базовые знания по цифровой схемотехнике.
Курс много лет помогает растить будущих проектировщиков микрочипов.
Материалы делятся на три смысловых блока: строительные блоки и архитектура цифровых систем, методологии и инструментарий дизайна, технологии имплементации решений. Вы познакомитесь с комбинационной и последовательной логикой, подсистемами памяти, маршрутами синтеза и инструментами симуляции, работой с аналого-цифровыми преобразователями и сенсорами.
Открытая часть курса включает раздаточный материал и описания лабораторных работ. В раздаточный материал входят презентации ко всем лекциям и несколько problem sets — наборов задач, по которым можно проверить полученные знания и посмотреть, сколько баллов они принесли бы вам в MIT. Записей самих лекций в бесплатном доступе нет.
Примеры того, что вы узнаете из презентаций:
- что такое логический синтез, логические вентили, look-up таблицы и таблицы истинности,
- в чем основные отличия языков VHDL и Verilog,
- что скрывается за аббревиатурой NAND,
- какие возможности дают D-триггеры,
- как создать последовательную логику с помощью SystemVerilog,
- в чем сложности временного анализа,
- какие существуют протоколы связи между микросхемами.

Главная ценность опубликованных материалов — это шесть лабораторных работ, в ходе которых вы научитесь работать с FPGA-платами и писать код на языке Verilog. Для практики предлагают использовать плату Nexys 4 DDR и САПР Vivado.
Вот примеры задач, которые вы встретите:
- добавить test bench на языке SystemVerilog в проект Vivado,
- научить систему отображать многозначные числа на семисегментных LED-дисплеях,
- разработать модуль-счетчик, который фиксирует наступление того или иного события,
- имплементировать игру в «Понг», где вместо шайбы используется изображение Звезды Смерти, с выводом изображения на монитор,
- спроектировать автосигнализацию на основе набора спецификаций,
- создать диктофон, который записывает и воспроизводит 8-битные цифровые аудиосэмплы.

А еще на сайте курса можно посмотреть итоговые проекты, которые делали студенты с 2004 по 2019 годы.
Презентации дадут теоретическую базу для проектирования простых систем на основе цифровых абстракций. А выполнение лабораторных работ, позволит получить практические навыки работы с ключевыми инструментами hardware-разработки: FPGA-платами, языками описания аппаратуры и средствами автоматизированного проектирования.
Не нужна. Все PDF-презентации и файлы, необходимые для выполнения лабораторных работ, может скачать любой желающий.
- Сайт курса с материалами 2019 года.
RVfpga-SoC: An Introduction to SoC Design
Курс RVfpga-SoC: An Introduction to SoC Design дает теорию и практику работы с архитектурой RISC-V, учит разрабатывать и компилировать код на языках ассемблера RISC-V и C для системы на кристалле RVfpga. Один из лекторов курса — профессор Сара Харрис, соавтор книги «Цифровая схемотехника и архитектура компьютера».
Понимать материал будет легче, если у вас есть базовые представления о микроархитектуре процессоров, памяти и системе ввода/вывода, а также если вы программируете на C или языках ассемблеров.
Курс формирует глубокое понимание архитектуры и экосистемы RISC-V.
Вы узнаете, что такое соглашение о вызове и GPIO, научитесь писать программы, включающие файлы как на языке ассемблера, так и на С. С помощью пошаговых инструкций разберетесь, как выполнять программы на плате Nexys A7 или с помощью симуляторов.
Используемое программное обеспечение и «железо» полностью поддерживается в Linux, большая его часть также поддерживается в Windows и macOS. Курс предоставляет виртуальную машину Ubuntu 22.04, которую можно использовать независимо от операционной системы вашего компьютера.
Это полноценный курс для дистанционного обучения в формате, который вы могли встречать на таких платформах, как Coursera или Codecademy. Бесплатные материалы включают лекции, разбитые на короткие видео, текстовые материалы, лабораторные работы и демонстрационные видео с примерами. У всех видео есть расшифровка и субтитры на английском языке.

Курс RVpga разбит на 20 глав. Его можно условно разделить на две части:
- задачи по разработке программного обеспечения и симуляция работы программы на промышленном процессоре,
- микроархитектурные задачи со стороны аппаратного обеспечения.
Примеры того, что вы узнаете из лекций и лабораторных работ:
- как создать и запустить программы на языке C на RVfpgaNexys с помощью PlatformIO,
- какие основные типы инструкций есть в RISC-V,
- как написать программу с вызовами библиотечных функций на языке C,
- как выглядит сортирующий алгоритм на языке ассемблера,
- каков алгоритм обработки изображений для преобразования цветных в черно-белые,
- зачем нужен контроллер ввода-вывода общего назначения,
- какие существуют методы взаимодействия с периферийными устройствами,
- какова специфика исполнения программ на суперскалярном ядре,
- как добавить пользовательскую инструкцию в RISC-V ядро,
- про микроархитектуру кэша инструкций.

Каждая глава курса содержит лабораторные работы. Выполнять задания можно на плате Nexys A7 или в симуляторах Whisper, Verilator или VidBo. Готовые решения позволят проверить полученные результаты.
Вот несколько примеров задач, которые вы встретите:
- написать на языке C программу, которая находит наибольший общий делитель двух чисел, a и b в соответствии с алгоритмом Евклида,
- написать программную реализацию игры «Саймон говорит» на языке C,
- преобразовать ассемблерную подпрограмму ColourToGrey_Pixel в функцию на языке C,
- написать на языке ассемблера RISC-V программу, которая зажигает светодиоды в определенной последовательности,
- расширить систему RVfpga так, чтобы она поддерживала работу пяти кнопок на плате,
- реализовать на языке описания аппаратуры поддержку новых инструкций из различных расширений ISA RISC-V.

После прохождения курса у вас появится понимание, как использовать RISC-V для повышения безопасности, энергопотребления и производительности процессоров. Вы научитесь разрабатывать и компилировать код на C и языке ассемблера RISC-V для системы на кристалле RVfpga, добавлять новую функциональность в логику ядра на аппаратном уровне.
Возможны два варианта получения доступу к курсу. Если вы интересуетесь только программной частью курса, для вас наиболее удобным вариантом получения доступа к материалам будет работа с курсом на платформе edX. Здесь вам будут доступны только первые 10 лабораторных работ вместо 20 — это единственное отличие от первой версии.
Чтобы получить доступ к курсу RVfpga, необходимо зарегистрироваться на платформе edX: ввести имя и фамилию, придумать логин и пароль, выбрать страну проживания из выпадающего списка.
Второй вариант — получения материалов курса через форму регистрацию на сайте Imagination University Programme. Для этого придется заполнить анкету академического доступа, а затем ждать верификацию и ссылку для скачивания материалов. В них вам будут доступны все 20 лабораторных работ и исходные коды СнК, используемой в курсе.
Курс динамично развивается последние 4 года. Авторы добавляют новые лабораторные задания и исправляют ошибки в слайдах. Также в последнем релизе курса RVfpga добавили предварительно настроенную виртуальную машина на базе Ubuntu со всем необходимым программным обеспечением. Это существенно облегчает старт обучения.
- Страница курса на сайте Imagination.
- Страница курса на edX.
Дополнительные полезные ссылки
- HDLBits — упражнения для практики языка Verilog (ENG).
- Курс ВШЭ Computer Architecture and Operating Systems (ENG).
- Лекции курса MIT 6.004 Computation structures (ENG).
- Рекомендации RISC-V по образовательным материалам на GitHub (ENG).
- Образовательная платформа QuickSilicon с курсами по аппаратной разработке. По большей части материалы платные, но можно найти отличные бесплатные курсы (ENG).
- Блог ZipCPU с материалами о работе с FPGA и разработке микропроцессоров (ENG).
- Блог YosysHQ со статьями команды, поддерживающей Yosys и связанные с ним проекты open source EDA (ENG).
- Курс МГУ по теории компиляции (RU).
- Полезные материалы от Альянса RISC-V (RU).
Спасибо Николаю за сбор и систематизацию разрозненной и зачастую разбросанной по Интернету информации из различных источников. Нигде ранее не встречал такого полного и детального обзора о доступных курсах по этой тематике. Николаю успехов в дальнейших проектах, а компанию Ядро благодарю за вклад в образование и развитие индустрии.
Спасибо! Рады, что вам понравился наш совместный материал!
Спасибо за добрые слова. Рад, что материал оказался полезным
Спасибо за полезную информацию, также хочу поделиться ссылкой на курс по цифровым схемам
https://youtu.be/4_6YQX01O8s?si=JRjHsZpzU8HC_wSr
Спасибо вам, что поделились!
Всё понимаю, но отсутствие упоминания Школы Синтеза от Ядра не совсем понимаю
Спасибо за ваш комментарий! Мы с Николаем только упомянули в тексте Школу синтеза цифровых схем и решили не писать про неё отдельно, потому что не хотели быть предвзятыми и выделять проект, который поддерживает компания. К тому же мы надеемся, что читатели «Истового инженера» знают про Школу синтеза и при желании посмотрят ее материалы или подадут заявку на участие в следующем сезоне.
Для меня открытием прошлого года стали лекции Константина Владимирова, открытием этого года стали заметки в «Истовый инженер» — благодарю, хотя давно окончил ВУЗ.
p. s. галочка «соглашаюсь с политикой…» работает в инверсии