Опубликована система команд микропроцессоров «Эльбрус»
Следи за успехами России в Телеграм @sdelanounas_ruНа сайте АО «МЦСТ» появилась новость о доступности руководства по эффективному программированию на платформе Эльбрус; в нём также содержится глава с описанием системы команд «Эльбрус», ранее не публиковавшейся. Книга выпущена под лицензией Creative Commons (CC-BY 4.0) в форматах HTML (архив) и PDF; для удобства чтения HTML выложен мною в развёрнутом виде.
Опубликована система команд микропроцессоров "Эльбрус" © mcst.ru
По сути это второй день рождения архитектуры «Эльбрус» — хотя и первый был в некотором смысле сразу двойным, ведь начало разработке было положено в семидесятых годах, уже после рокового правительственного решения 1967 года закрыть все существовавшие тогда в СССР линии развития отечественных ЭВМ и сосредоточиться на клонировании западной аппаратуры ради возможности копировать программное обеспечение.
Возможность понять особенности системы команд машины важна для любого профессионального программиста, не только «системщика»: по сути это возможность более вдумчиво оптимизировать даже обычные прикладные программы и библиотеки — простой, казалось бы, порядок обхода матрицы может сильно повлиять на зависимости по данным и конвейеризации циклов (за этим термином скрывается задействование возможностей параллельной обработки инструкций современными микропроцессорами, что на x86 началось с Pentium). Это особенно нужно для мультимедиа-кодеков, программ сжатия и шифрования данных, а также во многих других областях применения вычислительных алгоритмов.
Тем не менее исторически система команд вычислительных комплексов «Эльбрус» была закрытой и не документированной публично, поскольку эти машины активно применялись в военных системах и засекречивание всего и вся затронуло и их; при этом вторая линейка процессоров разработки МЦСТ (например, R500) начиналась как раз с открытой Sun Microsystems системы команд SPARC v8.
Соответственно единственным возможным разработчиком компиляторов под «Эльбрус» были сами создатели платформы; это и хорошо в плане взаимной оптимизации аппаратуры и средств разработки, и плохо в плане ограниченности ресурсов и необходимости отслеживать как более новые стандарты языков, так и получившие распространение расширения популярных компиляторов (в первую очередь GCC). Например, LCC 1.24 «умеет» C, C++ и Fortran, но трансляторы языков вроде Go, Rust, Objective C или D на его базе недоступны.
Стоит отметить, что в данный момент известны как документированные, но закрытые системы команд (x86, ARM, POWER), так и несколько открытых, доступных для воспроизведения силами сторонних компаний (SPARC, OpenRISC, RISC-V). Есть и пограничные случаи — например, отечественный процессор BE-T1000 (ранее «Байкал-Т1») построен на лицензированной системе команд MIPS (точнее, MIPS32r5 LE), следующая ревизия которой, r6, была положена в основу проекта MIPS Open, но затем вновь оказалась закрытой вместе с этим проектом в силу финансовых затруднений западной компании-владельца.
Сами программные наработки МЦСТ под «Эльбрус» пока остаются под соглашением о неразглашении, что не даёт частным лицам возможности приобретать такие компьютеры (хотя ИП уже её имеют); надеемся, публикация исходных кодов под соответствующими лицензиями будет давно ожидаемым следующим шагом к широкому распространению платформы в стране и мире.
Тем временем новое поколение разработчиков уже имеет материал для самообразования по актуальной и перспективной теме отечественной вычислительной техники; будем надеяться, что молодые таланты смогут применить полученные знания не только в рамках особых мероприятий (как ярославская «ПроеКТОриЯ»), а и в повседневной жизни — на домашнем и рабочем компьютере.
PS: новость традиционно отправлена с «Эльбруса» — двухместной 801-РС :)
Кстати, а вы знали, что на «Сделано у нас» статьи публикуют посетители, такие же как и вы? И никакой премодерации, согласований и разрешений! Любой может добавить новость. А лучшие попадут в телеграмм @sdelanounas_ru. Подробнее о том как работает наш сайт здесь👈
01.06.2012:02:56
01.06.2012:08:23
01.06.2013:00:12
01.06.2014:52:09
01.06.2015:13:20
01.06.2015:31:18
03.06.2004:18:05
03.06.2011:46:36
01.06.2012:13:29
01.06.2014:50:58
01.06.2019:19:40
02.06.2011:39:21
01.06.2013:11:06
01.06.2014:55:24
01.06.2020:27:26
02.06.2011:38:10
07.06.2017:39:00
09.06.2016:07:14
01.06.2014:26:43
01.06.2015:11:17
01.06.2015:18:53
01.06.2015:33:24
01.06.2023:37:29
02.06.2000:32:51
02.06.2006:12:27
02.06.2008:56:48
02.06.2011:41:14
02.06.2013:21:53
02.06.2016:34:13
02.06.2016:43:46
01.06.2015:20:50
01.06.2015:33:40
01.06.2019:47:36
02.06.2011:42:01
01.06.2021:23:00
02.06.2006:47:09
02.06.2011:43:00
02.06.2013:15:52
02.06.2019:08:59
03.06.2000:06:15
03.06.2011:49:25
06.06.2015:58:30