Труды института системного программирования РАН
RUS  ENG    ЖУРНАЛЫ   ПЕРСОНАЛИИ   ОРГАНИЗАЦИИ   КОНФЕРЕНЦИИ   СЕМИНАРЫ   ВИДЕОТЕКА   ПАКЕТ AMSBIB  
Общая информация
Последний выпуск
Архив

Поиск публикаций
Поиск ссылок

RSS
Последний выпуск
Текущие выпуски
Архивные выпуски
Что такое RSS



Труды ИСП РАН:
Год:
Том:
Выпуск:
Страница:
Найти






Персональный вход:
Логин:
Пароль:
Запомнить пароль
Войти
Забыли пароль?
Регистрация


Труды института системного программирования РАН, 2016, том 28, выпуск 1, страницы 63–80
DOI: https://doi.org/10.15514/ISPRAS-2016-28(1)-4
(Mi tisp4)
 

Оптимизация динамической загрузки библиотек на архитектуре ARM

Е. А. Кудряшов, Д. М. Мельник, А. В. Монаков

Институт системного программирования РАН, 109004, Россия, г. Москва, ул. А. Солженицына, д. 25
Список литературы:
Аннотация: В статье рассматривается подход к оптимизации вызовов внешних функций в позиционно-независимом коде, основанный на выдаче вызовов непосредственно через глобальную таблицу смещений (GOT), минуя таблицу компоновки процедур (PLT). Стандартные механизмы кодогенерации на операционной системе Linux предполагают создание PLT не только для основного модуля (который является позиционно-зависимым и полагается на механизм PLT для вызовов внешних процедур), но и для динамических библиотек, где PLT используется также для организации ленивого связывания; однако использование PLT требует дополнительной инструкции перехода, может иметь низкую локальность по кешу и на некоторых архитектурах накладывает дополнительные ограничения на работу компилятора в месте вызова. Реализация вызовов внешних функций в виде косвенных переходов на адреса, загруженные непосредственно из GOT в месте вызова, позволяет избежать недостатков вызовов через PLT ценой отказа от возможности ленивого связывания и, возможно, увеличения размера кода. Была исследована реализация этой оптимизации для архитектур x86 и ARM в компиляторе GCC. Было обнаружено, что на архитектуре ARM отсутствуют типы релокаций, которые позволили бы генерировать оптимальный код для загрузок из GOT. Для решения этой проблемы в GCC и Binutils (в ассемблере и компоновщике) были реализованы недостающие типы релокаций, позволяющие построить адрес позиции в GOT относительно счетчика команд, используя инструкции movt, movw. Проведенное тестирование свидетельствует, что предложенная оптимизация позволяет получить увеличение производительности, несмотря на увеличение размеров динамических библиотек.
Ключевые слова: оптимизация программ, динамический загрузчик, глобальная таблица смещений, таблица компоновки процедур, релокация, архитектура ARM.
Реферативные базы данных:
Тип публикации: Статья
Образец цитирования: Е. А. Кудряшов, Д. М. Мельник, А. В. Монаков, “Оптимизация динамической загрузки библиотек на архитектуре ARM”, Труды ИСП РАН, 28:1 (2016), 63–80
Цитирование в формате AMSBIB
\RBibitem{KudMelMon16}
\by Е.~А.~Кудряшов, Д.~М.~Мельник, А.~В.~Монаков
\paper Оптимизация динамической загрузки библиотек на архитектуре ARM
\jour Труды ИСП РАН
\yr 2016
\vol 28
\issue 1
\pages 63--80
\mathnet{http://mi.mathnet.ru/tisp4}
\crossref{https://doi.org/10.15514/ISPRAS-2016-28(1)-4}
\elib{https://elibrary.ru/item.asp?id=26166307}
Образцы ссылок на эту страницу:
  • https://www.mathnet.ru/rus/tisp4
  • https://www.mathnet.ru/rus/tisp/v28/i1/p63
  • Citing articles in Google Scholar: Russian citations, English citations
    Related articles in Google Scholar: Russian articles, English articles
    Труды института системного программирования РАН
     
      Обратная связь:
     Пользовательское соглашение  Регистрация посетителей портала  Логотипы © Математический институт им. В. А. Стеклова РАН, 2024