Jump to content

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

Приколоть
Разработчик(и) Интел
Стабильная версия
3.31 / 30 июня 2024 г. ( 30.06.2024 )
Операционная система Линукс , Виндовс , МакОС
Платформа IA-32 , x86-64 , Intel Xeon Phi
Тип Инфраструктура инструментирования , Профайлер
Лицензия Запатентованная версия Pin предоставляется бесплатно для любого использования в соответствии с упрощенной лицензией на программное обеспечение Intel .
Веб-сайт www .intel /программное обеспечение /пинтул

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

В 2020 году он получил награду Programming Languages ​​Software Award от ACM SIGPLAN . [1]

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

Режимы приборов

[ редактировать ]

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

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

[ редактировать ]

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

Оптимизации

[ редактировать ]

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

Простота использования

[ редактировать ]

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

Инструменты

[ редактировать ]

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

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

Альтернативы инструменту «Закрепить»

[ редактировать ]

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

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ «Награда за программное обеспечение в области языков программирования» . www.sigplan.org .
  2. ^ Анализ параллельных программ с помощью Pin
  3. ^ Значок: Создание индивидуальных инструментов анализа программ с помощью динамического инструментария.
  4. ^ CMP$im: симулятор многоядерного кэша на лету на основе выводов
  5. ^ PinPlay: платформа для детерминированного воспроизведения и воспроизводимого анализа параллельных программ.
  6. ^ Гупта, Чандрашекхар (2007). «Создание безопасных продуктов и решений». Технический журнал Bell Labs . 12 (3): 21–38. дои : 10.1002/bltj.20247 . S2CID   30412754 .
  7. ^ Ли, Шульц (2007). «Динамический двоичный инструментарий и агрегирование данных в крупномасштабных системах». Международный журнал параллельного программирования . 35 (3): 207–232. дои : 10.1007/s10766-007-0036-3 . S2CID   6653468 .
  8. ^ Бах, М.; Чарни, М.; Кон, Р.; Демиховский Е.; Девор, Т.; Хейзелвуд, К.; Джалил, А.; Лук, Чи-Геунг; Лайонс, Г. (март 2010 г.). «Анализ параллельных программ с помощью PIN». Компьютер . 43 (3): 34–41. дои : 10.1109/MC.2010.60 . ISSN   0018-9162 . S2CID   15155077 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8dfd2d91b9555a1c0757d9333d7f0a92__1722124680
URL1:https://arc.ask3.ru/arc/aa/8d/92/8dfd2d91b9555a1c0757d9333d7f0a92.html
Заголовок, (Title) документа по адресу, URL1:
Pin (computer program) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)