Журнал "Программная инженерия"
Теоретический и прикладной научно-технический журнал
ISSN 2220-3397
Номер 5 2023 год
Процессоры, имеющие расширяемую систему команд, сегодня все чаще используются в качестве программируемых аппаратных ускорителей для различных предметных областей. При расширении RISC-V и других подобных процессорных архитектур возникает потребность в проектировании специализированных команд. Эта задача может быть решена автоматически с помощью применения алгоритмов синтеза команд. В настоящей работе рассмотрены алгоритмы, которые могут использоваться в дополнение к известным подходам и улучшающие набор синтезированных команд за счет перевычисления общих операций (результат которых востребован несколькими операциями) программы в укрупненных синтезированных командах, а также за счет выявления избыточных (имеющих эквиваленты среди других команд) синтезированных команд. Представлены экспериментальные оценки для улучшенных реализаций алгоритмов из областей криптографии, а также трехмерной графики, демонстрирующие, в частности, что для теста на основе шифра AES алгоритм кластеризации общих операций позволяет сократить размер скомпилированного кода на 10 %, а алгоритм поглощения функций позволяет сократить набор синтезированных команд в 2,5 раза.