Фишка российского процессора Эльбрус. Наглядный пример распараллеливания кода!

17 March
24k full reads
33k story viewsUnique page visitors
24k read the story to the endThat's 74% of the total page views
1,5 minute — average reading time

Ох уж интересная эта тема, я просто визжу от восторга! )))

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

Вот тут я уже пытался объяснить, в чём фишка этого процессора. Не все поняли, и я уточнил некоторые моменты в другой статье. Конечно же, всё равно остались вопросы, причём как и из-за полного или частичного непонимания сути (характерно для тех, кто не выходил за рамки языков динамической компиляции типа Java или Python), так и из-за желания получить более конкретную информацию по работе компилятора и распараллеливанию в частности.

Боюсь, слишком большое углубление в конкретику сузит круг читателей этой статьи, что негативно скажется на просмотрах и дочитываниях и, как следствие, на монетизации. Поэтому, если вы действительно посчитаете эту статью интересной для себя, пожалуйста, не закрывайте её слишком быстро (время дочитывания важно) и поставьте лайк, а также напишите комментарий, например, о том, насколько перспективен подход разработчиков Эльбруса. Так же будет хорошо, если вы подпишитесь на мой канал :-) Как говорит известный ютьюбер Стас Давыдов, вам не сложно, а мне приятно )))

Так вот, в этой статье я хочу дать вам кое-какие ссылочки на конкретику по работе компилятора. Поскольку все госорганы и госслужащие в скором времени, очевидно, будут переведены под Эльбрусы, а также с выходом через пару лет десктопного процессора Эльбрус-12С и ожидаемым падением цен на него, компьютеры на этой платформе будут завоёвывать также и частный рынок, то программистом полезно будет уже сейчас знакомиться с этой платформой. Думаю, что в скором времени программисты под эту платформу будут чрезвычайно востребованы :-)

Официальное руководство по программированию

Итак, вот ссылка на официальное Руководство по эффективному программированию на платформе «Эльбрус». Руководство содержит основные материалы для обучения программированию на платформе Эльбрус и применимо на любом варианте Linux-подобной операционной системы. Там есть pdf, HTML-оффлайн и HTML-онлайн версии руководства.

Также с официального сайта МЦСТ можно скачать операционную систему Эльбрус Линукс для установки её на голый x86_64 или в виртуальную машину. Операционная система предназначена для программирования в том программном окружении, которое будет на реальном Эльбрусе. Программист, написавший программу, которая работает в этой системе, скорее всего сможет запустить её и на настоящей машине с процессором Эльбрус. Но если вы хотите ознакомиться с Линуксом для Эльбруса, как пользователь, то лучше скачать более адаптированную для этого Альт или Астра Линукс.

Если вы написали и запустили свою программу в Эльбрус-Линукс, ориентируетесь в bash, ssh, командной строке и т.п., то можете попросить удаленный доступ к компьютерам Эльбрус по протоколу SSH бесплатно сроком на 3 месяца.

Сайт разработчика компилятора lcc

Очень интересной для вас может быть информация, предоставленная на сайте разработчика оптимизирующей части компилятора lcc. В частности, статья «Обзор компилятора lcc для микропроцессора Эльбрус» и видео выступления «Компилятор для процессоров Эльбрус».

Над оптимизирующим компилятором Алексей Маркин работает с 2012 года и отвечает за следующие направления:

  • Инструментирующее профилирование — специальное профилирование, применяемое компиляторами для получения информации о наиболее часто исполняющихся участках кода с целью определения необходимости оптимизации.
  • Анализы указателей — вид анализа поведения программы для определения независимости операций работы с памятью. Результаты такого анализа необходимы для перестановки инструкций и ряда других оптимизаций.
  • Прочее — набор различных межпроцедурных и попроцедурных оптимизаций среди которых находятся девиртуализация, определение общих подвыражений, оптимизация выражений и т.д.

Демонстратор работы компилятора

Очень интересный проект — web-интерфейс к lcc. Можно вставить свой код на C++ и увидеть его ассемблерный вариант после компиляторов lcc разных версий а также для сравнения после компилятора gcc.

Хорошо видно, как в ассемблерном коде для Эльбруса, операции, которые должны выполнятся одновременно, заключаются в фигурные скобки. Я просто в восторге! )))

Кстати, проект создан на базе вот этого: https://godbolt.org/

Подборки ссылок на тематические ресурсы

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

https://www.altlinux.org/Эльбрус — подборка тематических ссылок.

https://git.mentality.rip/OpenE2K/qemu-e2k — эмулятор компьютера с поддержкой эмулирования Эльбруса.

http://www.mcst.ru/doc/book_121130.pdf — Книга «Микропроцессоры и вычислительные комплексы семейства Эльбрус».

Послесловие

Если вы знаете другие интересные ссылки по теме программирования Эльбруса, делитесь ими у меня в комментариях. Ставьте лайки, подписывайтесь на канал! Удачи! :-)