джуниор
обучение
5399
8
14 марта 2024
джуниор
обучение

Где учиться разработке микропроцессоров: подборка бесплатных курсов ведущих вузов

Изображение создано
с помощью нейросети
Изображение создано с помощью нейросети
5399
8
14 марта 2024

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

Николай Терновой, инженер по разработке аппаратного обеспечения и амбассадор RISC-V International, составил подборку бесплатных образовательных курсов по дизайну процессоров и компьютерным архитектурам. Вас ждут материалы ведущих российских и иностранных университетов: МИЭТ, МФТИ, MIT, Berkeley и других. Для их прохождения не понадобятся студенческий билет, членство в ассоциации ученых или оплата вступительных взносов в какую-либо организацию. Все, что вам нужно, — это доступ в интернет, регистрация на учебной платформе, а для некоторых курсов — тренировочная FPGA-плата для выполнения практических заданий.

Информация о каждом курсе сопровождается подробными комментариями автора. Из них вы узнаете, какие знания понадобятся на старте обучения, чему именно можно научиться в ходе ознакомления с лекциями и выполнения практических задач, а также на какие результаты стоит рассчитывать после успешного прохождения программы. Материал структурирован по принципу возрастания сложности курсов.

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

Содержание статьи

«Азбука» будущего дизайнера чипов

У разных специальностей есть своя настольная книга, про которую говорят, что ее стоит прочитать перед входом в профессию. С моей точки зрения, в мире разработки современных микросхем это «Цифровая схемотехника и архитектура компьютера» профессоров Харрис и Харрис. Это фундаментальный учебник для младших курсов, над переводом которого на русский язык работали больше полусотни человек из передовых вузов и компаний.

Основное издание посвящено архитектуре MIPS. К нему вышло два дополнения:

Учебник Харрисов является введением в разработку современных микросхем. Его главы охватывают все, что находится между физикой и высокоуровневым программированием:

  • принципы, необходимые для понимания и проектирования электронных систем,
  • проектирование комбинационной и последовательной логики,
  • языки описания аппаратуры SystemVerilog и VHDL,
  • цифровые функциональные узлы,
  • архитектуры и микроархитектуры,
  • иерархию памяти и подсистему ввода-вывода,
  • реализацию цифровых схем.
Схема конвейерного процессора с устройством управления

Следуя учебнику, можно построить реализацию подмножества архитектуры MIPS, используя доступные в магазинах отладочные платы на базе ПЛИС. А после сравнить получившуюся реализацию с индустриальным микроконтроллером Microchip PIC32. Даже если не делать практику, то книга Харрисов — это важная ступень, которую нужно преодолеть, чтобы делать дальнейшие шаги к профессии из мира разработчики микрочипов.

Курсы на русском языке

Я рекомендую начинать обучение с русскоязычных курсов. Так гораздо легче разбираться с непривычной терминологией, базовыми понятиями из мира «железа» и системного программирования. Плюс, если материалы опираются на англоязычные источники, преподаватели уже сделали качественный перевод с актуальными дополнениями.

Архитектуры процессорных систем, МИЭТ

Московский институт электронной техники выложил в открытый доступ все материалы своего курса «Архитектуры процессорных систем». По этим лекциям и лабораторным работам учатся студенты МИЭТ сразу семи направлений подготовки — от конструирования и технологии электронных средств до радиотехники. Дисциплина «Архитектуры процессорных систем» — важное связующее звено между теоретическими знаниями о процессорных системах их применением в реальном мире. Никаких специальных знаний для обучения не потребуется.

Материалы МИЭТ помогут вам разобраться, зачем нужны компиляторы, как процессор обрабатывает инструкции, что такое конвейеры, кэши, параллельные вычисления и ПЛИС. Лекции познакомят со всеми основными понятиями и концепциями разработки современных цифровых устройств.

Преподаватели регулярно обновляют материалы курса, так чтобы он лучше отвечал запросам индустрии. Например, особое внимание уделено открытой процессорной архитектуре RISC-V.

Внести свой вклад в обновление курса МИЭТ может каждый. Если захотите дополнить материал или исправить опечатку, предложите изменения в merge request или создайте issue.
Что входит в открытые материалы

Курс МИЭТ включает записанные лекции разных лет с иллюстрированными конспектами, а также лабораторные работы с подробными методичками. Практическая часть выполняется в САПР для создания цифровых устройств Vivado, поэтому преподаватели подготовили базовые инструкции по работе с ней. Кроме этого вы найдете списки дополнительной литературы и полезных начинающему инженеру материалов.

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

Примеры того, что вы узнаете из лекций:

  • чем архитектура отличается от микроархитектуры и почему это важно для будущего разработчику микропроцессорных систем,
  • что такое последовательная логика и конечные автоматы,
  • какие виды процессорных архитектур существуют и как их классифицируют,
  • как устроена архитектура RISC-V и как в ней происходят ветвление, вызов процедур, передача параметров,
  • как работают однотактные, многотактные и конвейерные процессоры на базе RISC-V,
  • какие существуют методы повышения производительности процессора,
  • что такое иерархия памяти и когерентность кэша,
  • что такое микроконтроллеры и как к ним подключаются периферийные устройства.
Скриншот лекции курса МИЭТ «Архитектуры процессорных систем»

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

Скриншот лабораторной курса МИЭТ «Архитектуры процессорных систем»
Результаты прохождения курса

Изучив курс МИЭТ, вы пройдете полный путь разработки заказного процессорного IP-ядра. Научитесь проектировать вычислительные блоки и конвейеры процессора, разберетесь с логикой выборки и декодирования инструкций, получите навыки работы с памятью и периферией. Ваш итоговый процессор будет соответствовать базовому набору RV32I и программироваться на языке C.

Регистрация

Не требуется. Все материалы доступны в репозитории на GitHub, а записи лекций — на YouTube.

Ссылки

Архитектура компьютера и операционные системы, ФПМИ

Лекторий Физтех-школы прикладной математики и информатики выложил записи курса «Архитектура компьютера и операционные системы». Он посвящен аппаратной части компьютера, операционным системам и основам системного программирования. Курс во многом ориентирован на Linux-системы и дает навыки работы именно в них.

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

Что входит в открытые материалы

Материалы курса включают записи лекций и практических семинаров. В репозитории на GitHub выложены презентации, а также подробные конспекты к семинарам, которые обновляются ежегодно. Больше всего практических занятий выполняют студенты программы «Прикладная математика и информатика», их вы найдете в разделе «Направление ПМИ в бакалавриате ФПМИ».

Лекции начинаются с азов: представления вещественных и целых чисел в вычислительных машинах, а также разных частей компьютера и способов их взаимодействия. Дальше идет разбор работы процессора, способов ускорения выполнения кода и другие основы работы с «железом». Завершает курс разбор модуля отбора пакетов Berkeley Packet Filter.

Примеры того, что вы узнаете из лекций:

  • из каких компонентов состоит операционная система, как она запускается и при чем здесь демоны,
  • что на самом деле умеет делать процессор и как устроено межпроцессорное взаимодействие,
  • как кодируются команды процессора и на какие классы они делятся,
  • какова роль файловых систем и какими они бывают,
  • как устроена работа с оперативной памятью и что такое OOM killer,
  • какие атрибуты есть у каждого процесса в операционных системах и как устроен алгоритм планирования заданий,
  • как в операционных системах реализована многопоточность и что такое стек потока,
  • что происходит при передаче данных в компьютерных сетях и как этим можно управлять.
Схема четырехбитного сумматора

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

Примеры того, что входит в практический блок:

  • введение в Linux и инструменты разработки на C,
  • использование системных вызовов,
  • запуск процессов и завершение их работы,
  • обработка событий в Linux,
  • использование сокетов в роли клиента,
  • работа с каталогами в UNIX-системах.
Материалы семинара «Низкоуровневый файловый ввод и вывод»
Результаты прохождения курса

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

Регистрация

Не требуется. Все лекции и семинары опубликованы на YouTube, а материалы к семинарам — GitHub.

Ссылки

Архитектура компьютерных систем, МФТИ

В рамках проекта симулятора MIPT Московский физико-технический институт выложил материалы базового курса «Архитектура компьютерных систем». Преподаватели читают лекции на русском языке с использованием англоязычных презентаций. Курс обозревает архитектуры компьютера с фокусом на микроархитектуру процессоров и частично — систему команд RISC-V, компиляторы и операционные системы. Специальных знаний для обучения не потребуется.

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

Что входит в открытые материалы

В открытый доступ выложены презентации курса за разные годы и 15 лекций за 2018/2019 учебный год. Структура лекций немного отличается от презентаций последующих лет, но охватывает те же темы. К сожалению, лекции последующих лет, размещенные на сайте и в GitHub-репозиториях, уже недоступны.

Примеры того, что вы узнаете из презентаций и лекций:

  • какие слои абстракций лежат между физическим уровнем и высокоуровневым приложением,
  • что означает аббревиатура MOSFET и как работают транзисторы,
  • какие ключевые вещи декларируются в наборах инструкций,
  • какая концепция лежит в основе архитектуры MIPS и почему именно на ней часто проводят обучение,
  • что такое конвейеризация и как она связана с производительностью микропроцессора,
  • что такое предсказание переходов (branch prediction) и что из себя представляет динамическое предсказание переходов,
  • как кэши реализуются в «железе» и как можно оптимизировать программы с учетом устройства кэшей в процессоре,
  • как операционная система взаимодействует с процессором через виртуальную память,
  • почему в какой-то момент процессоры стали многоядерными и какие технические преимущества это принесло.
Одноцикличная реализация RISC-V
Результаты прохождения курса

Вы получите базовые теоретические знания по микроархитектуре процессоров, которые позволят перейти к любому практически направленному курсу. А еще материалы МФТИ облегчат изучение курсов иностранных университетов, поскольку вы будете видеть название всех терминов на английском с их объяснением на русском в ходе лекций.

Регистрация

Не требуется. Лекции опубликованы на YouTube, а презентации можно скачать с сайта курса или GitHub.

Ссылки

Архитектура и язык ассемблера RISC-V, МГУ

Московский государственный университет открыл материалы курса «Архитектура и язык ассемблера RISC-V. Курс прослеживает связь между этой организацией процессора и общими принципами построения вычислительных систем, а также предполагает практическую работу в симуляторе RARS.

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

Он рассматривает принципы развития архитектур ЭВМ через призму RISC-V. В материалах речь будет идти именно о процессорах, другие устройства упоминаются только в контексте взаимодействия с CPU. Вы разберетесь с системными вызовами, исключениями, прерываниями, предсказаниями переходов, кэшами и процессорными конвейерами. Все это — на практических примерах.

Что входит в открытые материалы

Материалы включают 12 видеозаписей лекций и текстовые конспекты к ним, а также запись практического задания по программированию на языке ассемблера RISC-V в RARS.

Примеры того, что вы узнаете из лекций:

  • как организована система команд в RISC-V и как подбирать нужные команды,
  • что такое конвенции и зачем инженеру о них знать,
  • какими способами можно реализовать повторное использование исходного кода,
  • в каком месте памяти в RISC-V находится стек и сколько байт можно в него добавлять,
  • зачем нужны математические сопроцессоры и какие расширения для поддержки арифметики с плавающей точкой есть в RISC-V,
  • какой механизм используется для обработки исключений и прерываний,
  • как устроен микропрограммный цикл RISC-V.
Скриншот симулятора RARS
В феврале 2024 года стартовал новый поток обучения на курсе для студентов МГУ и вольных слушателей. Вы можете присоединиться к нему и слушать обновленные лекции.
Результаты прохождения

Вы получите базовые знания, необходимые для работы с RISC-V, и научитесь создавать программы среднего объема на языке ассемблера.

Регистрация

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

Ссылки

Cимулятор Ripes

Навыки по разработке процессоров, которые вы приобретете на курсах, можно отработать в симуляторе Ripes. Это инструмент с открытым исходным кодом для моделирования поведения процессора и иерархии его памяти для RISC-V.

Работа симулятора Ripes

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

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

Я использовал Ripes для проведения лабораторной работы по проектированию процессорного кэша в Школе синтеза цифровых схем, и симулятор хорошо себя проявил.

Курсы на английском языке

Фундаментом современных курсов по разработке процессоров и компьютерным архитектурам служат материалы ведущих технических университетов Америки и Англии. Например, лекции профессора Паттерсона известны буквально каждому преподавателю и студенту в области компьютерной инженерии. MIT, Berkeley, Цюрихский университет были и во многом остаются драйверами индустрии, поэтому статья была бы неполной без их курсов.

У каждого учебного заведения в открытый доступ выложены разные материалы: где-то это полный курс от видеозаписей лекций до задач на экзамен, где-то — только презентации и лабораторные работы.

Digital Design and Computer Architecture, University of Zurich

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

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

Что входит в открытые материалы

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

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

Примеры того, что вы узнаете из лекций:

  • как найти компромисс между производительностью и сложностью в аппаратной реализации,
  • как реализовать комбинационную и последовательную логику на языке Verilog,
  • какую роль играют FPGA-платы в разработке современных компьютерных систем,
  • что такое ISA и какие форматы инструкций существуют,
  • каковы фундаментальные различия между регистрами и памятью,
  • как устроена архитектура VLIW, в чем ее преимущества и недостатки,
  • что такое SIMD и как эта аббревиатура связана с графическими процессорами,
  • как можно повысить производительность кэша.
Скриншот лекции университета Цюриха по компьютерным архитектурам

Программа курса включает девять лабораторных, которые учат работе с FPGA-платами, языком Verilog и языками ассемблеров. Выполнять практику предлагают на плате Basys 3 и в САПР Vivado.

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

Вот несколько примеров задач, которые вы встретите:

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

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

Регистрация

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

Ссылки

Computer Architecture and Engineering, Berkeley

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

Вы узнаете, что такое конвейеры, суперскалярное, спекулятивное и внеочередное исполнение, векторные и VLIW-машины, многопоточность, графические процессоры и параллельные микропроцессоры. Изучите проектирование систем памяти, включая кэши, виртуальную память и DRAM. А также познакомитесь с разными формами параллелизма, которые встречаются в приложениях и тем, как можно их использовать.

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

Что входит в открытые материалы

В открытом доступе опубликованы видеозаписи и презентации лекций за 2023 год, задания и видео дискуссионных секций, лабораторные работы, домашние задания и материалы для дополнительного чтения. На одной из страниц вы найдете экзаменационные задачи с 2018 по 2023 годы и их решения. Также на отдельном сайте есть раздаточные материалы за 2021 год: презентации к лекциям, задания проверочных работ, а также материалы для дополнительного чтения.

Примеры того, что вы узнаете из лекций:

  • каковы фазы выполнения инструкций в RISC-V,
  • что за «железный закон» описывает производительность микропроцессора,
  • что означают аббревиатуры DDR2 и WSC,
  • что такое пропускная способность и когерентность кэша,
  • как устроены современные системы виртуальной памяти,
  • как GPU эволюционировали от решения только графических задач к вычислениям общего назначения,
  • какими были суперкомпьютеры 1980-х и как они связаны с векторами,
  • зачем нужна модель согласованности памяти.
Скриншот лекции об архитектуре VLIM

Дискуссии и домашние задания проверяют полученные знания. Лабораторные позволят получить опыт работы в симуляторах и посмотреть на примеры взаимодействия программного и аппаратного обеспечения. При работе над заданиями курса вы научитесь применять язык конструирования аппаратуры Chisel, а также немного прикоснетесь к разработке на C/C++ и Python.

Вот примеры заданий, которые вы встретите в практической части курса:

  • создать и выполнить симуляцию одноступенчатого процессора,
  • объяснить, каким будет результат исполнения кода,
  • изучить, насколько эффективно или неэффективно происходит компиляция вашего кода на языке C,
  • предложить новую инструкцию для ISA RISC-V,
  • переписать код так, чтобы использовать блокировку кэша,
  • разработать свой branch predictor и аппаратный предварительный выбор (hardware prefetcher).
Задание из курса Berkeley по компьютерным архитектурам
Результаты прохождения

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

Регистрация

Не требуется, все материалы можно скачать на сайте курса, а видеозаписи лекций опубликованы на YouTube.

Ссылки

Introductory Digital Systems Laboratory, MIT

Курс 6.111 считается одним из самых востребованных в Массачусетском технологическом институте. Он охватывает все основные темы цифрового проектирования: цифровую логику, строительные блоки последовательностных логических устройств, конечные автоматы, работу с FPGA, таймерами и синхронизацией. Материалы курса будет легче изучать, имея базовые знания по цифровой схемотехнике.

Материалы делятся на три смысловых блока: строительные блоки и архитектура цифровых систем, методологии и инструментарий дизайна, технологии имплементации решений. Вы познакомитесь с комбинационной и последовательной логикой, подсистемами памяти, маршрутами синтеза и инструментами симуляции, работой с аналого-цифровыми преобразователями и сенсорами.

Что входит в открытые материалы

Открытая часть курса включает раздаточный материал и описания лабораторных работ. В раздаточный материал входят презентации ко всем лекциям и несколько problem sets — наборов задач, по которым можно проверить полученные знания и посмотреть, сколько баллов они принесли бы вам в MIT. Записей самих лекций в бесплатном доступе нет.

Примеры того, что вы узнаете из презентаций:

  • что такое логический синтез, логические вентили, look-up таблицы и таблицы истинности,
  • в чем основные отличия языков VHDL и Verilog,
  • что скрывается за аббревиатурой NAND,
  • какие возможности дают D-триггеры,
  • как создать последовательную логику с помощью SystemVerilog,
  • в чем сложности временного анализа,
  • какие существуют протоколы связи между микросхемами.
FPGA-плата Nexys 4 DDR

Главная ценность опубликованных материалов — это шесть лабораторных работ, в ходе которых вы научитесь работать с FPGA-платами и писать код на языке Verilog. Для практики предлагают использовать плату Nexys 4 DDR и САПР Vivado.

Вот примеры задач, которые вы встретите:

  • добавить test bench на языке SystemVerilog в проект Vivado,
  • научить систему отображать многозначные числа на семисегментных LED-дисплеях,
  • разработать модуль-счетчик, который фиксирует наступление того или иного события,
  • имплементировать игру в «Понг», где вместо шайбы используется изображение Звезды Смерти, с выводом изображения на монитор,
  • спроектировать автосигнализацию на основе набора спецификаций,
  • создать диктофон, который записывает и воспроизводит 8-битные цифровые аудиосэмплы.
Сетап лабораторной работы на курсе MIT 6.111

А еще на сайте курса можно посмотреть итоговые проекты, которые делали студенты с 2004 по 2019 годы.

Результаты прохождения

Презентации дадут теоретическую базу для проектирования простых систем на основе цифровых абстракций. А выполнение лабораторных работ, позволит получить практические навыки работы с ключевыми инструментами hardware-разработки: FPGA-платами, языками описания аппаратуры и средствами автоматизированного проектирования.

Регистрация

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

Ссылки

RVfpga-SoC: An Introduction to SoC Design

Курс RVfpga-SoC: An Introduction to SoC Design дает теорию и практику работы с архитектурой RISC-V, учит разрабатывать и компилировать код на языках ассемблера RISC-V и C для системы на кристалле RVfpga. Один из лекторов курса — профессор Сара Харрис, соавтор книги «Цифровая схемотехника и архитектура компьютера».

Понимать материал будет легче, если у вас есть базовые представления о микроархитектуре процессоров, памяти и системе ввода/вывода, а также если вы программируете на C или языках ассемблеров.

Вы узнаете, что такое соглашение о вызове и GPIO, научитесь писать программы, включающие файлы как на языке ассемблера, так и на С. С помощью пошаговых инструкций разберетесь, как выполнять программы на плате Nexys A7 или с помощью симуляторов.

Используемое программное обеспечение и «железо» полностью поддерживается в Linux, большая его часть также поддерживается в Windows и macOS. Курс предоставляет виртуальную машину Ubuntu 22.04, которую можно использовать независимо от операционной системы вашего компьютера.

Что входит в открытые материалы

Это полноценный курс для дистанционного обучения в формате, который вы могли встречать на таких платформах, как Coursera или Codecademy. Бесплатные материалы включают лекции, разбитые на короткие видео, текстовые материалы, лабораторные работы и демонстрационные видео с примерами. У всех видео есть расшифровка и субтитры на английском языке.

Скриншот фрагмента из вводной презентации курса RVfpga

Курс RVpga разбит на 20 глав. Его можно условно разделить на две части:

  • задачи по разработке программного обеспечения и симуляция работы программы на промышленном процессоре,
  • микроархитектурные задачи со стороны аппаратного обеспечения.

Примеры того, что вы узнаете из лекций и лабораторных работ:

  • как создать и запустить программы на языке C на RVfpgaNexys с помощью PlatformIO,
  • какие основные типы инструкций есть в RISC-V,
  • как написать программу с вызовами библиотечных функций на языке C,
  • как выглядит сортирующий алгоритм на языке ассемблера,
  • каков алгоритм обработки изображений для преобразования цветных в черно-белые,
  • зачем нужен контроллер ввода-вывода общего назначения,
  • какие существуют методы взаимодействия с периферийными устройствами,
  • какова специфика исполнения программ на суперскалярном ядре,
  • как добавить пользовательскую инструкцию в RISC-V ядро,
  • про микроархитектуру кэша инструкций.
Скриншот фрагмента лекции про связь между GPIO и ядром SweRV EH1

Каждая глава курса содержит лабораторные работы. Выполнять задания можно на плате 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 со всем необходимым программным обеспечением. Это существенно облегчает старт обучения.

Ссылки
  1. HDLBits — упражнения для практики языка Verilog (ENG).
  2. Курс ВШЭ Computer Architecture and Operating Systems (ENG).
  3. Лекции курса MIT 6.004 Computation structures (ENG).
  4. Рекомендации RISC-V по образовательным материалам на GitHub (ENG).
  5. Образовательная платформа QuickSilicon с курсами по аппаратной разработке. По большей части материалы платные, но можно найти отличные бесплатные курсы (ENG).
  6. Блог ZipCPU с материалами о работе с FPGA и разработке микропроцессоров (ENG).
  7. Блог YosysHQ со статьями команды, поддерживающей Yosys и связанные с ним проекты open source EDA (ENG).
  8. Курс МГУ по теории компиляции (RU).
  9. Полезные материалы от Альянса RISC-V (RU).
Проходили ли вы уже какой-нибудь курс по проектированию процессоров или компьютерным архитектурам? Если да, то какой? Что было наиболее полезно? Пишите ответы в комментариях, а также поделитесь, какие еще материалы вы бы добавили в подборку.
Наверх
8 комментариев
  • Спасибо Николаю за сбор и систематизацию разрозненной и зачастую разбросанной по Интернету информации из различных источников. Нигде ранее не встречал такого полного и детального обзора о доступных курсах по этой тематике. Николаю успехов в дальнейших проектах, а компанию Ядро благодарю за вклад в образование и развитие индустрии.

    • Спасибо! Рады, что вам понравился наш совместный материал!

    • Спасибо за добрые слова. Рад, что материал оказался полезным

  • Всё понимаю, но отсутствие упоминания Школы Синтеза от Ядра не совсем понимаю

    • Спасибо за ваш комментарий! Мы с Николаем только упомянули в тексте Школу синтеза цифровых схем и решили не писать про неё отдельно, потому что не хотели быть предвзятыми и выделять проект, который поддерживает компания. К тому же мы надеемся, что читатели «Истового инженера» знают про Школу синтеза и при желании посмотрят ее материалы или подадут заявку на участие в следующем сезоне.

  • Для меня открытием прошлого года стали лекции Константина Владимирова, открытием этого года стали заметки в «Истовый инженер» — благодарю, хотя давно окончил ВУЗ.
    p. s. галочка «соглашаюсь с политикой…» работает в инверсии