Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Программное обеспечение посттрансляторной обработки программ Абу Асси Халед Мохаммад Хасан

Программное обеспечение посттрансляторной обработки программ
<
Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ Программное обеспечение посттрансляторной обработки программ
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Абу Асси Халед Мохаммад Хасан. Программное обеспечение посттрансляторной обработки программ : Дис. ... канд. техн. наук : 05.13.11 : Москва, 2003 139 c. РГБ ОД, 61:04-5/929

Содержание к диссертации

Введение

Глава 1 Методы ускорения доступа к памяти. Использование кэш- памяти 12

1.1 Организация современной кэш- амяти 12

1.2 Методы оптимизации использования кэш 18

1.2.1 Обобщение методов оптимизации использования кэш. Постановка задач диссертационной работы 27

1.3 Предварительная выборка. Общие положения 32

Глава 2 . Разработка и исследование методов предварительной выборки данных 37

2.1 Методы предварительной выборки 37

2.2 Принципы построения Марковского предвыборщика 40

2.3 Анализ марковской модели промахов 51

2.4 Аналитическая модель для вычисления стартовых промахов 55

2.4.1 Вычисление стартовых промахов для структурированных приложений 55

2.4.2 Вычисление стартовых промахов для неструктурированных приложений 60

Глава 3 . Реализация программного марковского предвыборщика. Организация эксперимента 65

3.1 Реализация программного марковского предвыборщика 65

3.2 Организация эксперимента 71

3.2.1 Управление памятью в микропроцессоре Alpha 21364 72

3.2.2 Модель МП на уровне регистровых передач 79

3.2.3 Характеристика используемых приложений 83

3.2.4 Расчет показателей качества предвыборки 86

3.3 Результаты проведения эксперимента 91

Глава 4 . Инструментальная среда для исследования производительности кэш 102

4.1 Общие принципы построения инструментальной среды 102

4.2 Структура инструментальной среды 105

Заключение 113

Литература 116

Приложение 125

Введение к работе

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

Эффективная загрузка параллельно функционирующих конвейеров обеспечивается либо аппаратурой процессора , либо компилятором , либо совместно аппаратурой и компилятором.

Повышение производительности МП за счет увеличения тактовой частоты в конечном счете наталкивается на технологические ограничения. Эти ограничения обусловлены размерами транзисторов на кристалле - в пределе это 0.05 мкм.

На пути дальнейшей микроминиатюризации кроме физических ограничений имеются и экономические факторы.

Так завод фирмы Intel в 1986 году стоил 200 млн долларов. Примерно через 10 лет при современной технологии завод стоит 2.4 млрд долларов. А при объявленной технологии 0.25 мкм такой завод будет стоить 10 млрд.- [1].

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

К таким архитектурным решениям можно отнести:

1 .Предсказание передач управления. Такое предсказание позволяет избежать или существенно сократить простои конвейера инструкций, так как при передачах управления нарушается последовательность инструкций, что ведет к простою конвейера инструкций (" осушению" конвейера).

2. Спекулятивное выполнение команд ( а именно загрузок регистров из памяти). Под спекулятивным выполнением понимается такое выполнение , при котором команда выполняется, а результат помечается как условно окончательный (дословно спекулятивный - умозрительный). Так при параллельном выполнении ( в различных конвейерах) команд загрузки и записи в память при совпадении адресов памяти команда загрузки должна быть задержана до тех пор , пока не будет готов результат записи в память. Чтобы избежать такой задержки, команда загрузки выполняется спекулятивно.

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

3. Механизм предикатов. Механизм предикатов используется.в МП Pentium 6 ( предварительное название MERCED) для устранение передач управления. Все инструкции выполняются под предикатами. Последние вырабатываются в инструкциях сравнения. Если условие сравнения выполняется, соответствующий предикат принимает значение ИСТИНА, а в противном случае - ЛОЖЬ. Инструкция, выполняемая под предикатом со значеним ИСТИНА, работает обычным образом, а при значении предиката ЛОЖЬ вместо данной инструкции выполняется пустая команда (NOP).Таким образом конвейер инструкций никогда не "осушается" .

4. Программное " разворачивание" циклов. Это известный метод оптимизации компиляторов, при котором вместо циклического повторения команд ( вместе с передачей управления на начало цикла )тело цикла многократно повторяется. При этом исключатся вообще многократное повторение команды передачи управления. В МП Pentium 6 предусматривается аппаратный механизм поддержки программного " разворачивания" циклов.

5. Уменьшение времени доступа к памяти. В современных МП цикл обращения к памяти в десятки раз превышает время выполнения инструкции В работе [2] приводятся следующие данные: За 10 лет

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

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

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

Именно таким вопросам посвящена диссертационная работа, что делает ее несомненно актуальной.

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

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

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

В работе приведены результаты проведения экспериментов по оценке эффективности Марковского предвыборщика на модели микропроцессора Alpha в среде DVT, предназначенной для верификации проектов, разработанной фирмой Compaq. Эта модель микропроцессора характеризуется фиксированной структурой кэш первого уровня, объемом, длиной строки, ассоциативностью и алгоритмом замещения строк кэш. Для автоматизации проведения таких экспериментов в диссертации разработана специальная Инструментальная среда, пригодная для работы с различного рода приложениями и различными моделями микропроцессоров.

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

Во второй главе на основании анализа современных методов предварительной выборки данных формулируются основные принципы предлагаемого в диссертации метода предварительной выборки на основании Марковского процесса промахов, метода, наиболее пригодного для работы с неструктурированными приложениями. Графически такая модель представляется ориентированным графом, вершины которого соответсвуют адресам промахов в кэш, а дуги - переходам из одного промаха в другой. В этой главе выбираются показатели качества, по которым можно судить об эффективности предлагаемого метода. Эти показатели дают возможность определить в частности, какая часть из всех обращений к памяти удовлетворяется предвыборщиком, какая часть преварительно выбранных строк действительно используется предвыборщиком, а также определить и другие важные показатели кащества. Далее исследуется Марковская модель промахов и вырабатывается подход к формированию частичной модели промахов для снижения потребностей в модельном времени при проведении эксперимента с предвыборщиком. Частичная модель промахов строится на основании теории марковских процессов. При построении частичной модели из всего множества вершин графа выбирается такой подграф со связными вершинами, который содержит возможно большее число вершин, а время пребывания марковского процесса в подмножестве выбранных состояний минимально. Затем в этой главе приводится описание модели стартовых промахов в кэш как для структурированных, так и неструктурированных приложений. В последнем случае показано, как зависит стартовое число промахов от длины строки кэш, количества адресных ссылок в приложении, длины непрерывных последовательностей адресных ссылок и размеров промежутков между этими последовательностями.

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

В той главе приведены результаты проведения экспериментов по оценке эффективности Марковского предвыборщика на модели микропроцессора Alpha в среде DVT, предназначенной для верификации проектов, разработанной фирмой Compaq. Эта модель микропроцессора характеризуется фиксированной структурой кэш первого уровня, его объемом, длиной строки, ассоциативностью и алгоритмом замещения строк кэш.

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

В четвертой главе приведено описание Инструментальной среды, предназначенной для автоматизации проведения эксперимента по анализу метода повышения производительности кэш. Проведение эксперимента состоит из ряда этапов, к которым относится трансляция прикладной программы, запуск приложения на модели микропроцессора , формирование таблицы промахов, встраивание в исходный код приложения инструкций предвыборок, запуск приложения с предвыборщиком, вычислении показателей качества предвыборки. Для реализации Инструментальной среды используется программный продукт Microsoft Visual Basic. Разработанная среда имеет систему различных меню, использует многодокументный интерфейс, набор управляющих элементов и так далее.

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

Методы оптимизации использования кэш

В настоящее время оптимизация использования кэш осуществляется по трем основным направлениям:: Уменьшение времени обращения к кэш.

Снижение относительного числа промахов в кэш. Снижение потерь , вызванных промахом в кэш. Для уменьшения времени обращения к кэшу следует уменьшить объем ассоциативного кэша, либо изменить его ассоциативность (увеличить число наборов при снижении числа строк в наборе ), либо использовать кэш прямого доступа, так как в нем отсутствует сравнение тэгов. Снижение относительного числа промахов в кэш ( miss ratio) при " горячем" старте можно достичь увеличением объема кэш, применением полностью ассоциативного кэша, использование предварительной выборки инструкций и данных и другими методами. Для снижения потерь , вызванных промахом в кэш, применяются буферы вытесненных строк , ускоряется обмен между кэшами первого и второго уровней Как видно из вышесказанного одновременное выполнение первых двух требований оптимизации ( особенно при " горячем" старте) противоречиво. Выполнение одного из них ухудшает другой показатель. Так в кэш прямого доступа время доступа меньше ( нет сравнения тэгов), но и hit ratio ниже. С другой стороны увеличение размера кэш полностью ассоциативного кэш увеличивает hit ratio , но существенно увеличивает время доступа к кэш. При оптимизации использования кэш разработчики ищут разумный компромисс между этими противоречивыми требовании.

Расщепленный кэш. При этом для избежания сравнения тэгов используется предсказание номера строки кэша . Для этого можно использовать , например алгоритм MRU (most recently used - самый последний используемый) . Более общий подход заключается в использовании Таблицы истории выбранных строк, дополненная методом MRU.

Кэш с несколькими обращениями . Этот метод предлагается для кэшей прямого доступа . Строка может быть выбрана из первичной локации с помощью первичной хэш-функции. Если происходит промах, то строка выбирается из вторичной локации с помощью вторичной хэш-функции. Обычно два обращения позволяют удовлетворить запрос данных. Здесь применяется усложненный LRU алгоритм замещения строк. Строки из первичной локации обмениваются местами со строками из вторичной

Расширенный кэш. Для повышения hit ratio кэш прямого доступа дополняется небольшим полностью ассоциативным кэшем. Обращения к обоим кэшам происходит параллельно. Время доступа определяется кэшем прямого доступа . Обычно содержимое этих кэшей должно быть различным. В полностью ассоциативном кэше как правило хранятся самые последние используемые данные.

Решению такой же проблемы посвящена работа [9], в которой промахи в кэш разделяются на две категории — промахи из-за ограниченной

-21 -емкости кэша ( емкостные промахи) и конфликтные промахи. Конфликтным промахом называется такой промах, который происходит при следующих обстоятельствах. Если последней была вытеснена строка кэша с некоторым тэгом, а адресная ссылка, вызвавшая следующий промах, имеет тот же тэг, то такой промах называется конфликтным. Такого рода промахи характерны для кэш прямого отображения ( direct mapped cache ), у которых они возникают при переменном обращении к массивам, размещенным на различных физических страницах главной памяти, или же в кэш с небольшой ассоциативностью и зачастую при небольшом увеличении ассоциативности в них число конфликтных промахов удается существенно снизить. . В работе [9] предлагаются фильтровать конфликтные промахи. Такая фильтрация упрощает работу с Victim buffer cache VBC( буфером вытесненных строк - обычно буфером небольшого размера). Вообще очевидны выгоды от такой классификации промахов для снижения потерь от промаха , однако при наличии в процессоре VBC такая аппаратная ( или программная) избыточность представляется излишней.

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

Оптимизация использования кэша в основном реализуется двумя путями. Первый путь - это оптимизация на этапе компиляции (так называемая пассивная оптимизация, так как исполнимый код к моменту запуска уже сформирован) и активная оптимизация во время прогона программы на модели процессора с использованием моделирования трасс выполнения программы (trace driven simulation).

Принципы построения Марковского предвыборщика

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

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

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

Для размещения Таблицы адресов промахов в моделе аппаратного Марковского предвыборщика выделен 1 мегабайт памяти в кэше второго уровня. Каждому из предсказываемых адресов промахов присваивается приоритет, исходя из относительной частоты перехода в данную вершину графа . Этот приоритет позволяет решить, какой адрес промаха оставить в Таблице адресов промахов в случае большого коэффициента ветвления.

Основным достоинством аппаратной реализации Марковского предвыборщика является то, что его работа просходит параллельно с работой процессора и не замедляет выполнение программы. Кроме того, в общем случае имеется ряд преимуществ при записи предвыбранных данных в буфер предвыборки , а непосредственно в кэш. К ним относятся: Повышение точности ( так как только затребованные процессором строки передаются из буфера в кэш) При предвыборке не вытесняются нужные строки из кэша Устраняются конфликты при одновременном обращении в кэш процессора и предвыборщика. К недостатком такого предвыборщика следует отнести: большой объем дополнительной аппаратуры ; снижение не miss ratio, а потерей от промаха в кэш; возможность реализовать только предвыборку по промахам ,а не тэгированную предвыборку; отсутствие возможности слияния нескольких адресов предвыборок, относящихся к одной строке кэш, в один запрос.

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

Слияние предвыборок, относящихся к одной строке кэш. Вершины графа , связанные с данной вершиной, следует проанализировать на возможность слияния, то есть на попадания некоторых из адресных ссылок, соответствующих этим вершинам в одну и ту же строку кэш. Это особенно существенно для кэш с длинной строкой , порядка 64 байт. Таким образом мы можем предвыбрать сразу несколько адресных ссылок.

Чтобы сократить время создания марковской модели, мы делаем предположение, что вероятность перехода из одного состояния в другое пропорциональна числу обращений в память, возникших в период между соответствующими адресными ссылками. Тогда для создания марковской модели нам достаточно лишь несколько прогонов приложения, чтобы построить сам граф марковского процесса и подсчитать нужные нам средние количества обращений в память между различными промахами, соответствующими связанным вершинам на графе. Для оценки вероятности перехода используем взвешенные значения Іаг, то есть отношением конкретного lar к суммарному значению всех обращений к памяти, произошедших после некоторого промаха.

При установке приоритета учитывается не только вероятность перехода из одного состояния в другое, но и время между двумя последовательными промахами. Рассмотрим ситуацию, при которой вероятность перехода из вершины А в вершину В выше вероятности перехода из вершины А в вершину С. Однако средний промежуток времени ( в тактах процессора) от момента промаха по адресу А до промаха по адресу В существенно больше такого же показателя для ссылки по адресу С. Назовем этот промежуток временем опережения. Можно представить такую ситуацию, когда при очень большом значении времени опережения предвыбранные данные по адресу В могут быть вытеснены из кэша до момента их использования или же каким-то образом модифицированы, что снижает такой показатель предвыборщика, как своевременность.

Реализация программного марковского предвыборщика

Сначала сравнивается адрес промаха со всеми текущими адресами промахов ( с первыми колонками каждой строки). Если такого адреса нет в Таблица адресов промахов, то выполняется процедура записи адреса промаха в качестве кандидата на предвыборку. А затем этот адрес промаха и адрес соответствующей инструкции записывается в новую строку в качестве нового текущего адреса промаха ( новой исходящей вершины графа).

При совпадении адреса промаха с одним из адресов в первых колонках строк таблицы сначала выполняется процедура записи адреса промаха в качестве кандидата на предвыборку, а затем проверяется, совпадает ли адрес инструкции ( содержимое второй колонки строки). При совпадении обработчик завершает свою работу, в противном случае формируется дублированная строка , то есть копия этой строки, но с другим адресом инструкции во второй колонке. С точки зрения Марковской модели промахов основная и дублированная строки эквивалентны. Нам же необходимо различать эти строки для последующего встраивания инструкций предвыборок.

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

На втором этапе производится формирование кода прикладной программы, при котором в код встраиваются инструкции предвыборки. Из первых колонок строк Таблицы адресов промахов берутся адреса инструкций, после которых должна быть выполнена предвыборка. Адреса предсказаний в инструкциях предвыборки берутся из последующих элементов строки таблицы. Число инструкций предвыборки определяется заданным числом предсказаний (1,2,4 или 8).

Реализация усложняется тем, что в соответствие с Таблицей промахов в приложение встроены все инструкции предвыборки. При этом второе требование выполняется автоматически. А для выполнения первого условия организуется прерывание по совпадению адреса в запросе с тэгом строки кэш ( попадании в кэш). При возникновении такого прерывания обработчик прерывания прибавляет к адресу прерывания величину, равную заданному числу предсказаний, умноженным на формат инструкций и возвращает управление основной программе. Таким образом, после инструкций, не вызвавших промах в кэш, никогда не будет выполняться предвыборка.

Если процесс промахов носит более стационарный характер, то большее число промахов будет совпадать как при формировании модели, так и при работе приложения с предвыборщиком ( меньшее число обращений к памяти будет соответствовать третьей строке табл.1, а большее - четвертой) и оба режима будут меньше отличаться один от другого.

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

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

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

В блоке управления памятью инструкция обращения к памяти ставится в очередь инструкций загрузок регистров из памяти (LQ), если это инструкция загрузки регистра из памяти или в очередь инструкций записи регистров в память (SQ). Параллельно проверяется наличие данных в кэш первого уровня.

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

Структура инструментальной среды

Внешний вид ИСАПК представлен на рисунке 4.2. Система меню позволяет пользователю выполнять все работы в ИСАПК . Пункт "Файл " главного меню предоставляет пользователю возможность выбрать приложение, используемое в качестве benchmark ( подпункт "Открыть "). С помощью подпункта " Печать" можно вывести текст выбранного приложения на принтер, а подпункт "Характеристика " позволяет просмотреть основные характеристики приложения ( объем программы в операторах и в байтах, количество системных вызовов, количество используемых DLL, API функций и так далее). При реализации подпунктов "Открыть " и " Печать" используется элемент управления Visual Basic "Общий диалог ".

С помощью пункта меню "Трансляция " выполняются следующие работы: трансляция выбранного приложения в среде Visual C++; преобразование объектного кода с платформы МП Intel на платформу МП Alpha; преобразование объектного кода с учетом требований среды модели МП Alpha -DVT.

ИСАПК предоставляет возможность выполнить все эти работы автоматически с опциями компилятора, установленными по умолчанию. В этих опциях предусмотрены стандартные методы оптимизации (опция компилятора - " глобальная оптимизация" - автоматическое распределение регистров и оптимизация выполнения циклов ). Пользователь может выполнить каждую из этих работ отдельно. При этом он может выбрать другие опции компилятора, установив их. в среде Visual C++. Преобразование объектного кода на платформу МП Alpha всегда выполняется с одинаковыми методами оптимизации, а именно по сравнению с кодом для платформы МП Intel производится другое распределение регистров. Это объясняется существенно большим количеством регистров общего назначения в МП Alpha (RISC-процессор) по сравнению с МП Intel (CISC-процессор).

После получения объектного кода и дополнительного его преобразования в соответствии с требованиями среды DVT пользователь может запустить приложение на модели микропроцессора. Для этого предназначен подпункт "Пуск приложения" пункта меню "Запуск". Об окончании работы приложения на

По окончании работы приложения на модели ИСАПК анализирует трассу выполненной программы и вычисляет относительное число промахов при работе приложения без предвыборки. Пользователь может просмотреть эту трассу, содержащуюся в журнальном файле, вид которого был представлен в разделе 3.2.3. Просмотр выполняется выбором пункта меню "Просмотр", подпункта "Трасса". Кроме того, можно увидеть значение относительного числа промахов с помощью подпункта "Относительное число промахов".

Следующий этап — этап формирования Марковской модели промахов, выполняемый с помощью подпункта "Формирование модели" пункта меню "Запуск". Перед формированием модели пользователь устанавливает параметры Марковской модели с помощью пункта меню "Настройка", подпункта "Выбор параметров" При выборе этого подпункта открывается окно "Настройка", представленное на рисунке 4.4. Для построения модели промахов необходимо выбрать количество предсказываемых адресов предвыборок, это выполняется с помощью управляющих элементов Option Button (1,2,3,8) в группе Число предсказаний". Затем пользователь выбирает режим предвыборки - тэгированная или по промахам, а также указывает на подключение пошаговой предвыборки.

Запуск приложения со встроенными инструкциями предвыборки осуществляется с помощью подпункта "Пуск приложения". При выполнении приложения с инструкциями предвыборки учитываются заданные пользователем режимы предвыборки, а именно, выполняется ли тэгированная предвыборка или предвыборка по промахам и должна ли автоматически включаться пошаговая предвыборка в сочетании с марковской предвыборкой. Пользователь указывает эти параметры в группе "Режимы предвыборки" окна "Настройка" с помощью управляющих элементов Option Button ("тэгированная" и "по промахам ") и Check Button пошаговая

По умолчанию ИСАПК устанавливает следующие значения настроек: режим предвыборки - тэгированная с использованием пошаговой предвыборки с четырьмя предсказаниями. Пользователь может установить другие значения настроек, при этом, если нажимает кнопку ОК, устанавливаются новые значения и окно настроек закрывается. При нажатии кнопки "Сброс" все настройки принимают значения, установленные по умолчанию и окно настроек закрывается. При выборе команды "Отмена" отменяются все сделанные изменения в настройках и они принимают их предыдущие значения.

По окончании работы приложения с предвыборщиком ИСАПК вновь анализирует трассу выполнения программы и вычисляет относительное число промахов при работе с предвыборщиком, а также показатели качества предвыборки — степень покрытия, точность и интенсивность потока предвыборок. Все эти значения можно просмотреть с помощью соответствующих подпунктов пункта меню "Просмотр".

Похожие диссертации на Программное обеспечение посттрансляторной обработки программ