Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
ℹ️Настоящий учебно-методический информационный материал размещён в ознакомительных и исследовательских целях и представляет собой пример учебного исследования. Не является готовым научным трудом и требует самостоятельной переработки.
Введение 4
2. Постановка задачи 6
3. Обзор 7
3.1. Существующие intrinsic-функции 7
3.2. Криптографические алгоритмы в OpenJDK 8
3.3. Поддерживаемые в OpenJDK платформы 13
3.4. Расширения RISC-V 13
4. Алгоритм работы 15
4.1. Основной алгоритм 15
4.2. Апробация 16
4.3. Замеры производительности 16
5. Реализация 18
6. Замеры производительности 24
7. Результаты 29
Приложение 30
Список литературы 46
📖 Введение
RISC-V — это открытая [17] процессорная архитектура, в основе которой лежит небольшой набор команд, с возможностью использования
различных расширений [48] для увеличения производительности.
Компания Syntacore занимается созданием и сопровождением процессорных ядер на микропроцессорной архитектуре RISC-V. В число её
работ входит также поддержка инструментов разработки для данной
архитектуры. Одним из таких инструментов является OpenJDK — один
из наиболее популярных [45] на 2023 год наборов утилит для разработки на языке Java. Приоритетное направление для работы — ускорение
методов, использующихся в работе с криптографией.
Одной из особенностей среды исполнения OpenJDK (виртуальной
машины «HotSpot») является концепция уровней компиляции [39]. Согласно ей, исполнение Java методов начинается в интерпретаторе Java
байт-кода сразу после загрузки пришедшего виртуальной машине класса, без дополнительных оптимизаций. При достаточно частом исполнении метода, он будет скомпилирован компилятором C1, с использованием некоторых оптимизаций, например, «constant folding» или «value
numbering» [16]. При последующем исполнении этого метода, он будет скомпилирован уже более мощным компилятором C2, который, например, способен более эффективно выделять регистры или проводить
«global code motion» [40]. Ещё одной из возможных оптимизаций является подмена сгенерированного по Java-байткоду метода на его вручную
написанную в нативных кодах специализацию [21], которая, как ожидается, работает более эффективно, чем порождённая компилятором
версия. Такой подход в OpenJDK называется «intrinsification» («интринсификация»), а сами функции, написанные в ассемблерных кодах
конкретной архитектуры — intrinsic-функциями.
Несмотря на то, что в OpenJDK существует порт для RISC-V, на
данный момент он не поддерживает все существующие криптографические intrinsic-функции: например, в некоторых из таких «ручных»
реализаций этих функций для оптимизаций могут применяться ин-
4струкции из расширений архитектуры, которые совсем недавно были
ратифицированы, и поддержка которых как в OpenJDK, так и в процессорах ещё не успела появиться1. Поэтому, для ускорения работы
HotSpot необходимо расширить текущую поддержку криптографических intrinsic-функций в OpenJDK для архитектуры RISC-V.