https://electroinfo.net

girniy.ru 1

Предварительная подкачка кода для микропроцессора «Эльбрус»


Галазин Александр Борисович

аспирант

ЗАО «МЦСТ», Москва, Россия

E–mail: [email protected]

Производительность современных микропроцессоров существенно зависит от их эффективной загрузки при исполнении вычислений. Наиболее известным способом обеспечения непрерывной работы микропроцессора и снижения количества блокировок конвейера является организация иерархической системы памяти с использованием кэшей разных уровней. Кроме того, используются программные, аппаратные и комбинированные методы предварительной подкачки данных. Совокупность этих подходов позволяет обеспечить практически полную загрузку для некоторых классов задач. Однако, как показывают исследования, эти методы оказываются неэффективными для больших системных приложений, таких как операционные системы, оконные менеджеры и базы данных [1]. В этих приложениях обрабатываются значительные объемы информации, которая хранится в структурах, слабо поддающихся анализу во время компиляции, а код приложения состоит из больших ациклических участков. Потребность в повышении эффективности работы микропроцессора во время обработки этих приложений определяется их частым использованием в реальной жизни.

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

Для уменьшения блокировок по ожиданию кода предложены различные аппаратные и комбинированные подходы.

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


В работе рассмотрен программный метод предварительной подкачки кода для микропроцессора «Эльбрус» [2]. Описываются аппаратные особенности архитектуры и особенности исполняемого кода, созданного оптимизирующим компилятором, обусловливающие потребность в предварительной подкачке.

Предлагаемый метод реализован в составе оптимизирующего компилятора для микропроцессора «Эльбрус» и исследовался на различных задачах пакетов Spec95, Spec2000, в которых ожидание кода может вносить значительный вклад в итоговое время исполнения программы.

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


СПИСОК ЛИТЕРАТУРЫ


  1. Nagle D., Uhlig R., Mudge T., Sechrest S., Emere J. Instruction Fetching: Coping with Code Bloat // Proc. of the 22th Annual International Symposium on Computer Architecture, June 1995. P. 345-356.

  2. Babayan B. E2K Technology and Implementation // Proc. of the 6th International Conf. Euro-Par 2000 – Parallel Processing. Vol. 1900/2000, January 2000. P. 18-21.