Конференции ИВТ СО РАН


«Вычислительные и информационные технологии
в науке, технике и образовании»

Алматы, Казахстан, 6 – 10 октября 2004 года

Тезисы докладов


Эффективная реализация программных счётчиков инструкций

Могилёв А.В., Павлов П.Е.

Институт Систем Информатики СО РАН (Новосибирск)

Нетривиальные параллельные вычислительные программы часто являются внутренне недетерминированными, то есть при нескольких запусках с идентичными входными данными пути исполнения программы могут различаться, даже если конечный результат вычисления остаётся постоянным. Независимо от того, является ли такой недетерминизм намеренным, либо появляется в результате ошибок в программе, он создаёт значительные трудности при отладке программы. В самом деле, поскольку при повторных запусках программы может быть выбран иной путь исполнения, вся информация, собранная при предыдущих запусках, становится недостоверной. Тем самым, обычная методика циклической отладки становится неприменимой. Более того, из-за изменения временной картины исполнения, ошибка, проявляющаяся при обычном запуске программы, может не проявляться при запуске под отладчиком. Выход, предлагаемый техникой “воспроизведения исполнения” (execution replay), заключается в фиксировании и отладке только того пути исполнения, при котором проявляется ошибка – то есть сведении задачи к хорошо изученной задаче отладки детерминированных программ. Это достигается созданием двух инструментированных версий отлаживаемой программы: трассирующая версия во время исполнения собирает и записывает некоторую дополнительную информацию (трассу), которая в будущем используется воспроизводящей версией для многократного точного воспроизведения записанного исполнения.

Существенной частью многих систем воспроизведения исполнения является реализация программного счётчика инструкций (ПСИ, SIC, software instruction counter), который однозначно идентифицирует точку на пути исполнения программы. Например, при получении асинхронного сигнала в программе, исполняющейся под ОС UNIX, в файл трассы записывается текущее значение ПСИ, а при воспроизведении обработчик сигнала искусственно вызывается точно в заданный таким образом момент. Очевидно, что ни физическое время, ни аппаратный указатель инструкций не могут служить этой цели.

Классическая реализация, предложенная в [1], содержит ряд недостатков, существенно ограничивающих её область применения – в частности, программа не должна вызывать сторонних библиотек, которые не могут быть перекомпилированы. Кроме того, реализация ориентированна на RISC-архитектуру с большим количеством регистров общего назначения. Прямая адаптация реализации с целью снятия ограничений влечёт за собой существенную потерю производительности, что уменьшает аккуратность программы – вероятность совпадения поведений оригинальной и трассирующей версий программы. Данная статья предлагает реализацию ПСИ, не накладывающую никаких ограничений ни на инструментируемую программу, ни на архитектуру процессора. Также предлагаются дальнейшие оптимизации ПСИ, улучшающие производительность.

[1] J. M. Mellor-Crummey and T. J. LeBlanc. A software instruction counter. SIGPLAN Notices. Proceedings of 3rd International Conference on Architectural Support for Programming Languages and Operating Systems, 24(5):78–86, April 1989.

Дополнительные материалы: ZIP (93 kb)
Примечание. Тезисы докладов публикуются в авторской редакции



Ваши комментарии
Обратная связь
[ICT SBRAS]
[Головная страница]
[Конференции]

© 1996-2000, Институт вычислительных технологий СО РАН, Новосибирск
© 1996-2000, Сибирское отделение Российской академии наук, Новосибирск