Модель выполнения программы в ядре

При выполнении программы в вычислительной системе протекают параллельно следующие процессы:

читаются и подготавливаются к выполнению команды;

работает кэш-память первого уровня;

работает кэш-память второго уровня;

работает кэш-память третьего уровня;

работают функциональные устройства в каждом ядре;

работает оперативная память.

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

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

Общее время выполнения программы будет не меньше времени выполнения самогого длительного этапа из параллельно выполняемых.

Ядро с некоторой интенсивностью (среднее значение интервала между соседними запросами Модель выполнения программы в ядре - student2.ru ) при выполнении команд обращения в память обращается в кэш-память первого уровня. При удачном обращении с вероятностью Модель выполнения программы в ядре - student2.ru запрос обслуживается за время Модель выполнения программы в ядре - student2.ru и команда завершается. В случае неудачи в кэш-памяти первого уровня с вероятностью Модель выполнения программы в ядре - student2.ru генерируется запрос к кэш-памяти второго уровня. При удачном обращении с вероятностью Модель выполнения программы в ядре - student2.ru запрос обслуживается кэш-памятью второго уровня за время Модель выполнения программы в ядре - student2.ru и команда завершается.

В случае неудачи в кэш-памяти второго уровня с вероятностью Модель выполнения программы в ядре - student2.ru генерируется запрос к кэш-памяти третьего уровня. Если буфер заявок в кэш-память третьего уровня заполнен, то ядро блокируется (прекращает генерировать заявки).

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

При удачном обращении с вероятностью Модель выполнения программы в ядре - student2.ru запрос обслуживается кэш-памятью третьего уровня за время Модель выполнения программы в ядре - student2.ru и команда завершается.

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

При отсутствии заявок во входных буферах кэш-память третьего уровня простаивает.

Коммутатор 2, общий ресурс для кэш-памяти третьего уровня и всех контроллеров внешних связей при условии, что он свободен, в соответствии с некоторой дисциплиной выбирает заявку из одного входного буфера и передает ее в заданный буфер за время Модель выполнения программы в ядре - student2.ru , при условии, что этом буфере есть место.

При отсутствии заявок во входных буферах коммутатор 2 простаивает.

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

При отсутствии заявок во входном буфере оперативная память (или контроллер внешних связей) простаивает.

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

Известно, что если случайный процесс это сумма Модель выполнения программы в ядре - student2.ru случайных процессов без явного преобладания одного из них, то он является простейшим с показательным законом распределения промежутков времени между очередными событиями уже при Модель выполнения программы в ядре - student2.ru =4-5. Поэтому, принято, что процесс обращений в кэш-память первого уровня является простейшим с показательным законом распределения времени между заявками.

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

Примем, что известно:

в конкретной программе количество команд обращения в память Модель выполнения программы в ядре - student2.ru ;

времена обслуживания на каждом уровне кэш-памяти;

время обслуживания в оперативной памяти;

времена обслуживания коммутаторов;

вероятности удачных обращений к каждому уровню кэш-памяти.

Обозначим общее время выполнения программы в ядре через Модель выполнения программы в ядре - student2.ru .

Времена занятости соответствующих уровней составят:

Модель выполнения программы в ядре - student2.ru - время занятости кэш-памяти первого уровня;

Модель выполнения программы в ядре - student2.ru - время занятости кэш-памяти второго уровня;

Модель выполнения программы в ядре - student2.ru - время занятости кэш-памяти третьего уровня;

Модель выполнения программы в ядре - student2.ru - время занятости коммутатора;

Модель выполнения программы в ядре - student2.ru - время занятости канала оперативной памяти.

Модель выполнения программы в ядре - student2.ru - времена обслуживания одного запроса кеш-памятями первого, второго, третьего уровней и канала оперативной памяти, соответственно.

Модель выполнения программы в ядре - student2.ru - вероятности удачных обращений в кэш-памяти первого, второго и третьего уровней, соответственно.

Определим коэффициент использования (нагрузки) кэш-памяти первого уровня следующим образом

Модель выполнения программы в ядре - student2.ru .

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

Интенсивность генерации заявок одним ядром к:

кэш-памяти первого уровня

Модель выполнения программы в ядре - student2.ru ;

кэш-памяти второго уровня

Модель выполнения программы в ядре - student2.ru .

коммутатору 1 и, соответственно, кэш-памяти третьего уровня

Модель выполнения программы в ядре - student2.ru ;

Модель выполнения программы в ядре - student2.ru ;

коммутатору 2

Модель выполнения программы в ядре - student2.ru ;

каналу оперативной памяти

Модель выполнения программы в ядре - student2.ru ;

Коэффициенты нагрузки общих ресурсов МВС Модель выполнения программы в ядре - student2.ru ядрами будут:

коммутатора 1

Модель выполнения программы в ядре - student2.ru ;

кэш-памяти третьего уровня

Модель выполнения программы в ядре - student2.ru ;

коммутатора 2

Модель выполнения программы в ядре - student2.ru ;

канала оперативной памяти

Модель выполнения программы в ядре - student2.ru ;

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

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

все ядра (потоки) одного процессора (микросхемы) используют общую кэш-память третьего уровня;

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

коммуникационная подсистема между ядрами и кэш-памятью третьего уровня реализована в виде коммутатора с одновременной передачей данных в/из кэш-памяти третьего уровня;

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

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

МВС односокетная.

Наши рекомендации