Технология

Обзор технологии

Универсальная Библиотека Трансляции (УБТ) структурно разделяется на две части – аналитическую и базу данных программы (БДП). Аналитическая часть является основой библиотеки, в ней абстрагированы от конкретных платформ и языков и реализованы алгоритмы анализа и оптимизации. База данных программы заключает в себе заготовки для семантического описания обрабатываемой программы и ресурсов целевой архитектуры, т.е. фактически то, что программа должна делать. Эти две части взаимодействуют через чётко определённые интерфейсы, которые обозначены нами как интерфейсы доступа к семантике программы. Объявляются эти интерфейсы в аналитической части, определяются в базе данных программы.

База данных программы включает в себя гибкое, настраиваемое на разные существующие и не существующие (например, GIMPLE в gcc) целевые платформы промежуточное представление, способы его сохранения и восстановления. Во избежание путаницы в терминологии промежуточное представление в аналитической части обозначается как аналитическое представление, а промежуточное представление в базе данных программы – как семантическое представление. На данный момент реализовано сохранение/восстановление представления на xml-файл, что упрощает отладку и использование технологии в целом. Сохранённое на файле или где-либо ещё представление мы обозначаем как источник базы данных программы (ИБДП).

Семантическое представление может строится не только на основе ИБДП. Если у пользователя есть свое собственное представление, его можно конвертировать в семантическое представление БДП.

Строительные блоки

Существует три сценария взаимодействия УБТ с системой трансляции пользователя.

Первый сценарий: промежуточное представление пользователя представляется в виде ИБДП, затем строится семантическое и аналитическое представления. После применения УБТ - анализов и оптимизаций, семантическое представление преобразуется обратно в ИБДП, с которого происходит восстановление промежуточного представления пользователя.

Распараллеливание

Второй сценарий заключается в построении семантического представления из промежуточного представления пользователя без использования ИБДП, с последующим обратным построением пользовательского представления из семантического представления.

Портирование

Третий сценарий: построение аналитического представления непосредственно на основе промежуточного представления пользователя, минуя семантическое представление БДП.

Портирование

Первый способ позволяет полностью отделить продукт пользователя от УБТ, что решает, в частности, вопросы лицензирования. Второй и третий сценарий предполагают линковку УБТ непосредственно c системой пользователя. Эти способы делают работу конечной системы существенно более эффективной. Использование второй стратегии предполагается, в первую очередь, при создании систем компиляции полного цикла. Третья стратегия больше подойдет при использовании УБТ в модернизации существующей системы со своим промежуточным представлением.

Для реализованного нами с помощью УБТ автоматический распараллеливатель в рамках компилятора GCC был выбран первый способ, требующий создания ИБДП. Это, в частности, дает возможность работать GCC и УБТ на разных платформах. Кроме того, не попадая под действие GNU лицензии, автоматический распараллеливатель может распространяться как коммерческий продукт.

Портирование

Эффективность работы УБТ на параллельных системах.

Специфика проектирования аналитической части УБТ такова, что позволяет одновременно работать нескольким алгоритмам анализов и/или оптимизаций на разных регионах транслируемой программы. Под регионом, в зависимости от контекста, понимается какая-либо часть программы: модуль, процедура, цикл, линейный участок и пр.

Портирование