RISC реферат. Глушкова ИДБ-19-01 Стандарт RISC-V. Riscv стандарт, изменивший мир микропроцессоров
Скачать 20.89 Kb.
|
RISC-V: стандарт, изменивший мир микропроцессоров RISC-V Систему команд RISC-V c 2010 года разрабатывают в Университете Беркли (Калифорния, США), где решили, что необходим новый единый и открытый набор команд для всех типов систем — от микроконтроллеров до высокопроизводительных систем. К 2010 году в мире существовало огромное количество стандартов для интерфейсов в области программного обеспечения (например, OpenGL), но грамотного стандарта для системы команд CPU как программно-аппаратного интерфейса тогда не было (существовавшие RISC-I, RISC-II и OpenRISC не обладали всеми необходимыми возможностями с учетом расширения на будущее). Кроме того, закрытость популярных систем команд (а на тот момент почти все были закрытыми, кроме SPARC) создала коммерческие предпосылки для развития открытого стандарта. Например, ARM по условиям лицензии требует от 1 млн долл. лишь за право легального использования своей системы команд, запрещая при этом какие-либо изменения или расширения. В действительности за перфекционистским лозунгом RISC-V сделать одну систему команд для всех стоит ряд практических и конкретных целей: Повышение энергоэффективности и производительности. Наличие минимального интерфейса позволяет разработчикам процессорных ядер для получения полноценно работающей системы реализовывать лишь относительно небольшой набор инструкций. Это дает возможность уменьшить количество транзисторов, удешевить разработку и снизить расходы на поддержку процессорных ядер. Модульность и расширяемость. Минимальных наборов команд сегодня достаточно много, и RISC-V далеко не самый компактный, однако основная проблема в том, что «минимальный» набор команд не означает «универсальный». RISC-V призван решить эту проблему за счет модульной структуры системы команд. Удешевление разработки. Единая открытая экосистема позволяет сократить расходы на разработку компиляторов, ОС, драйверов и периферии. Наличие в RISC-V открытых репозиториев, в которых многое уже реализовано и вследствие многолетней поддержки сообщества доведено до высокого качества, позволяет существенно уменьшить затраты. Обратная совместимость. Унаследованные программы, разработанные для старых процессоров, не поддерживающих новые расширения, должны работать без перекомпиляции на новых процессорах аналогичной архитектуры и с той же системой команд, но с множеством расширений. Кроме того, требуется совместимость библиотек на бинарном уровне, поскольку скомпилированная статическая библиотека для одной ОС и конкретного процессора может быть использована и на другой ОС с другим процессором благодаря совместимости на уровне компилятора и собственно процессора. RISC-V призван обеспечить обратную совместимость: базовый набор и основные расширения стандартизованы, что существенно упрощает, например, программную эмуляцию функциональности, которая не поддерживается аппаратурой. Безопасность. Критически важное ПО обычно проходит сертификацию и верификацию, стоимость которых может многократно превышать затраты на его разработку. Однако, даже если доказана корректность ядра ОС и выполнена процедура сертификации, сменить аппаратуру уже не представляется возможным. По этой причине система команд Power на сегодняшний день прочно обосновалась в области гражданской авиации. Помимо этого, если, например, в некотором процессоре обнаружена уязвимость, то заменить его на другой с аналогичной архитектурой бывает сложно, а в случае RISC-V можно использовать другой процессор (пусть и не такой эффективный), но без закладок. При этом на нем можно запустить унаследованное ПО с минимальными затратами усилий и времени. Взаимозаменяемость процессоров позволяет RISC-V обеспечить безопасность. Базовый набор инструкций Система команд RISC-V имеет ряд отличительных особенностей. Отсутствие неявных внутренних состояний. Результат любой операции (кроме команд перехода) всегда помещается в регистр общего назначения, так как в RISC-V нет, например, флагов состояний, которые устанавливает инструкция cmp в x86. Вместо этого результат команды сравнения помещается в один из регистров общего назначения. Это существенно упрощает суперскалярную реализацию с внеочередным выполнением команд, но при этом не вносит существенных накладных расходов для простых реализаций. Отсутствие предикатных инструкций. Предикатные инструкции необходимы для VLIW-процессоров (например, «Эльбруса») и для векторной обработки данных, однако в скалярном коде выигрыш от них обычно небольшой. Компактный базовый набор инструкций. В базовом наборе всего 11 базовых арифметических инструкций (большинство из них могут встречаться в двух формах: R-формат (стандартный) и I-формат (второй операнд считывается непосредственно из самой инструкции, давая в сумме 21 инструкцию)), 10 инструкций для обращения в память и 8 инструкций для переходов. Итого — 39 инструкций. 32 регистра общего назначения. Это вдвое больше, чем у RISC-аналогов. Поддержка ослабленной модели памяти (Relaxed Memory Model) в базовом наборе инструкций. Такая модель помогает программисту явно указывать ход выполнения кода, запрещая, например, запуск дорогостоящей операции синхронизации данных через кэш L2 и L3 при записи в ячейку памяти. Наличие спаренных (fused) операций «сравнение + переход», уменьшающих размер программного кода. Инструкции ускорения вызова функций и выполнения операторов. Таким образом, компактный набор (менее 40 инструкций) содержит внушительный объем полезной функциональности. Плавающая точка Расширение RV32F для работы с вещественными числами добавляет 32 новых регистра. Здесь обращает на себя внимание наличие инструкций преобразования в целые числа и обратно, а также инструкций непосредственного перемещения данных из целочисленного регистра в регистр с плавающей точкой, что является проблемой для многих существующих систем команд, когда данные приходится перемещать через память. Векторное расширение Расширение RV32V предназначено для реализации векторных операций и имеет ряд ключевых особенностей. В наборе инструкций длина вектора не фиксируется, а задается в программе специальной инструкцией, что принципиально отличается от существующих подходов и позволяет на процессорах с небольшой длиной вектора выполнять программы, скомпилированные под более широкий вектор, хотя и с меньшей производительностью. В RISC-V имеется предикатное выполнение, то есть во всех векторных операциях используются маски, что хорошо при выполнении программы как на обычных CPU, так и на массово-параллельных системах (OpenCL и аналоги). При этом векторные регистры существуют отдельно от остальных регистров, а перемещение данных между скаляром и вектором поддерживается аппаратно. Благодаря этому в RISC-V нет проблем при работе смешанного скалярно-векторного кода, как это наблюдается, например, в x64 (и особенно в x86), где рекомендуется явно использовать векторный тип (__m128) вместо float или int для уверенности в том, что данные лишний раз не выгружаются в память из векторных регистров. В целом можно сказать, что векторное расширение спроектировано в RISC-V с учетом опыта многих архитектур (в частности, Cray) и выполнено достаточно грамотно. RISC-V сегодня Рост популярности RISC-V с момента его появления в 2010 году (используется в более чем 500 компаниях из 28 стран) свидетельствует: цели, поставленные при разработке этого стандарта, достигнуты. Ни одна другая система команд, тем более разработанная в университете, еще не добивалась такого успеха за 10 лет. Несмотря на то что рядовые пользователи не сразу почувствуют эффект от использования RISC-V, изменения, которые этот стандарт внес в экосистему и мировоззрение разработчиков электроники, уже сейчас необратимы. Мобильные телефоны, ПК, микроконтроллеры, другие встроенные системы и, наконец, суперкомпьютеры — все эти устройства могут использовать RISC-V в качестве основы программно-аппаратного интерфейса. Применение таких открытых технологий, как RISC-V, играет ключевую роль при решении проблемы обеспечения импортонезависимости, поскольку отказ от использования и разработки закрытых решений позволит как сохранить инвестиции, так и обеспечить работоспособность критически важных систем независимо от политической конъюнктуры. При наличии множества производителей оборудования, поддерживающих стандарт RISC-V, теряет смысл установка любых закладок в процессоры — такой процессор всегда можно заменить на другой. Кроме того, сложность современных технологий почти всегда означает высокую стоимость их поддержки, поэтому так важно снижать стоимость разработки. В сообщество RISC-V входят многие ведущие компании , включая Nvidia (применение RISC-V и языка Ада для создания беспилотных автомобилей) и Alibaba (IP-блок для искусственного интеллекта). Компания AMD использует RISC-V в новом поколении графических процессоров для анализа графов, обеспечивающего создание и обработку очереди команд. Кроме того, RISC-V получает поддержку на уровне государств и федеральных структур: Индия объявила RISC-V национальным стандартом, DARPA требует использовать RISC-V в качестве обязательного компонента в ряде финансируемых этой организацией программ (в том числе по всему спектру работ по безопасности на уровне оборудования), Управление по инновациям Израиля создает общую платформу GenPro на базе RISC-V, Китай объявил широкую программу субсидирования решений на базе RISC-V, а Евросоюз обсуждает такую возможность. Основная причина — доступный набор инструментов и открытая архитектура. Наконец, RISC-V получает признание и в России, где обосновались уже две компании: Syntacore (существующая практически с момента основания RISC-V в 2010 году) и CloudBear . Вокруг RISC-V уже сложилась экосистема открытого и коммерческого ПО (GCC, Linux, BSD, LLVM, QEMU, FreeRTOS, ZephyrOS, LiteOS, SylixOS, Lauterbach, Segger, Micrium, ExpressLogic и др.), а также открытых и коммерческих процессорных ядер (Rocket, BOOM, RI5CY, Ariane, PicoRV32, Piccolo, Syntacore SCR1, Hummingbird, Codasip, Cortus, C-Sky, Nuclei, SiFive, Syntacore и др.). |