Пин (компьютерная программа) - Pin (computer program)

Штырь
Разработчики)Intel
Стабильный выпуск
3.17 / 26 ноября 2020 г. (2020-11-26)
Операционная системаLinux, Windows, OSX
ПлатформаIA-32, x86-64, Intel Xeon Phi
ТипИнструментальная основа, Профайлер
ЛицензияПроприетарный, Pin предоставляется бесплатно для некоммерческого использования в рамках Лицензионное соглашение с конечным пользователем для продуктов Intel® для разработки программного обеспечения, раздел 2.2 Лицензия для некоммерческих типов лицензий.
Интернет сайтwww.intel.com/программного обеспечения/ pintool

Штырь платформа для создания инструментов анализа. Пин-инструмент включает в себя инструменты, анализ и обратный вызов распорядки. Инструментальные процедуры вызываются, когда код, который еще не был перекомпилирован, готов к запуску, и позволяют вставлять процедуры анализа. Подпрограммы анализа вызываются при запуске связанного с ними кода. Процедуры обратного вызова вызываются только при выполнении определенных условий или при наступлении определенного события. Pin обеспечивает обширный интерфейс прикладного программирования (API) для инструментовки на разных уровнях абстракции, от одной инструкции до целого двоичного модуля. Он также поддерживает обратные вызовы для многих событий, таких как загрузка библиотеки, системные вызовы, сигналы / исключения и события создания потока.

Pin выполняет инструментирование, беря управление программой сразу после ее загрузки в память. потом своевременная перекомпиляция (JIT) небольшие участки двоичного кода с использованием вывода непосредственно перед запуском. В перекомпилированный код добавлены новые инструкции для выполнения анализа. Эти новые инструкции взяты из программы Pintool. Для получения минимально возможного времени работы и использования памяти используется большой набор методов оптимизации. По состоянию на июнь 2010 года средние базовые накладные расходы Pin составляли 30 процентов (без использования Pintool).[1]

Функции

Инструментальные режимы

Pin поддерживает два режима работы с инструментами: режим JIT и режим зонда. Режим JIT поддерживает все функции Pin, в то время как режим Probe поддерживает ограниченный набор функций, но работает намного быстрее, почти не увеличивая время работы программы. В режиме JIT используется своевременный компилятор для перекомпиляции всего программного кода и вставки инструментов, в то время как в режиме проверки используется код батуты для КИПиА.

Независимость от платформы

Булавка была разработана для инструмента переносимость, и несмотря на то, что JIT-компиляция из одного ISA в один и тот же ISA (и без использования одного промежуточное представление для всего кода), большинство его API - это архитектура и Операционная система независимый. Он также был разработан так, чтобы быть портативным, тщательно изолируя специфичный для платформы код от общего кода, что позволяет быстро адаптировать Pin к новым платформам. Примерно половина кода является универсальным, а остальная часть зависит от архитектуры или ОС.[2]

Оптимизация

Pin использует множество методов для оптимизации кода инструментовки и анализа, используя такие методы, как встраивание, анализ живучести и умный зарегистрировать разлив. Pin выполняет эти оптимизации автоматически, когда это возможно, без необходимости вставлять какой-либо дополнительный код, чтобы разрешить встраивание. Естественно, для некоторых оптимизаций по-прежнему требуются подсказки пользователя, а некоторые структуры кода легче встроить, чем другие. Прямое связывание фрагментов нестандартного кода, метод, называемый связывание трассировки, и зарегистрировать обязательную сверку, что сводит к минимуму переполнение регистров и повторное сопоставление.

Легкость использования

API и реализация Pin направлены на то, чтобы упростить написание инструментов для работы с контактами. Pin берет на себя полную ответственность за то, чтобы код инструментария из инструмента pin не влиял на состояние приложения. Кроме того, API позволяет коду инструментария запрашивать множество фрагментов информации у Pin. Например, код инструментария в инструменте вывода может использовать API вывода для получения адреса памяти, к которому осуществляется доступ с помощью инструкции, без необходимости подробно изучать инструкцию.

Инструменты

Есть много инструментов Pintools, которые используются для различных задач.

  • Компоненты Intel Parallel Studio активно использовать утилиты для отладки памяти, анализа производительности, многопоточность анализ корректности и подготовка к распараллеливанию.
  • Эмулятор разработки программного обеспечения Intel - это инструмент, который позволяет разрабатывать приложения с использованием расширений набора команд, которые в настоящее время не реализованы на оборудовании.
  • CMP $ IM профилировщик кеша, построенный с использованием pin.[3]
  • PinPlay позволяет захват и детерминированное воспроизведение работы многопоточных программ под контактом. Регистрация выполнения программы помогает разработчикам преодолеть недетерминизм, присущий многопоточности.[4]
  • Сам Pin поставляется с множеством примеров инструментов, которые используют его возможности. Эти инструменты находятся под лицензией типа BSD.

Альтернативные варианты для Pin Tool

Существует множество других инструментов для сбора данных об использовании ресурсов запущенными в системе программами, например Bell Lab Инструмент страпона и Dyninst инструмент и т. д. Bell Lab Инструмент использует технологию ремешка, которая запускает инструмент для сбора ресурсов одновременно с программой, но этот инструмент совместим только с программами, которые позволяют другим программам работать одновременно с ними.[5] Кроме того, инструмент Dyninst использует двоичная перезапись исполняемых и реализуемых команд программы внутри программы для проверки использования ресурсов и очень эффективен. Однако он очень нестабилен, так как это относительно новый инструмент, который дает сбой в крупномасштабных программах.[6] Наконец, Intel Инструмент Pin использует статические двоичные инструменты и запускает программу как часть себя, отслеживая все ее ресурсы.[7] Этот подход больше подходит для антивируса, поскольку он может легко запускать все процессы под собой и может убивать программы, если они достигают максимального выделенного лимита, определенного антивирусом.

Смотрите также

Примечания

  1. ^ Анализ параллельных программ с помощью пина
  2. ^ Значок: создание настраиваемых инструментов анализа программ с помощью динамических инструментов
  3. ^ CMP $ im: симулятор многоядерного кэша на лету на основе выводов
  4. ^ PinPlay: платформа для детерминированного воспроизведения и воспроизводимого анализа параллельных программ
  5. ^ Гупта, Чандрашекхар (2007). «Создание безопасных продуктов и решений. Технический журнал Bell Labs». Дои:10.1002 / bltj.20247. Цитировать журнал требует | журнал = (помощь)
  6. ^ Ли, Шульц (2007). «Динамическая бинарная аппаратура и агрегирование данных в крупномасштабных системах». Международный журнал параллельного программирования.
  7. ^ Бах, М .; Чарни, М .; Cohn, R .; Демиховский, Э .; Девор, Т .; Hazelwood, K .; Jaleel, A .; Лук, Чи-Кеунг; Лайонс, Г. (март 2010 г.). «Анализ параллельных программ с помощью PIN-кода». Компьютер. 43 (3): 34–41. Дои:10.1109 / MC.2010.60. ISSN  0018-9162.

Рекомендации

внешняя ссылка