- •Информация об исследуемой системе
- •Эксперимент 1. Исследование расслоения динамической памяти
- •Эксперимент 2. Сравнение эффективности ссылочных и векторных структур
- •Эксперимент 3. Исследование эффективности программной предвыборки
- •Эксперимент 4. Исследование способов эффективного чтения оперативной памяти
- •Эксперимент 5. Исследование конфликтов в кэш-памяти
- •Эксперимент 6. Сравнение алгоритмов сортировки
Эксперимент 1. Исследование расслоения динамической памяти
Цель эксперимента: определение способа трансляции физического адреса, используемого при обращении к динамической памяти.
Заданные параметры:
Максимальное расстояние между читаемыми блоками – 32К.
Шаг увеличения расстояния между четырёхбайтовыми ячейками – 128Б.
Размер массива – 1М.
На рисунке 1 приведены результаты эксперимента.
Рисунок 1 - Общий вид результатов эксперимента по исследованию расслоения динамической памяти
Рисунок 2 - Расслоение динамической памяти
Выводы:
До точки Т2 = 4096 байт наблюдаем рост графика, который связан с тем, что при росте шага чтения требуется открытие большего числа страниц. При этом в одном банке памяти может находится одна и та же открытая страница (рис 2).
Точка Т2 = 4 Кб есть расстояние между началами двух последовательных страниц памяти одного банка. Тогда размер страницы памяти можно найти, разделив шаг T2 на число банков.
Точка Т1 = 1024 б представляет собой точку локального максимума. Эта точка соответствует размеру одного набора. При этом постоянно происходит обращение к одному и тому же банку, то есть не происходит чередование банков памяти. По её значению этого шага легко можно определить число банков памяти. Для этого размер набора надо разделить на размер линейки:
Б = Т1 / П = 1024 б / 128 б = 8.
Размер одной страницы памяти РС = Т2 / Б = 4096 б / 8 = 512 б.
Число страниц физической оперативной памяти: С = О/(РС * Б) = 1073741824 / (512 * 8) = 262144 шт.
Рисунок 3 - Пример изменения вида графика в зависимости от изменения настраиваемых параметров
Выводы:
Во втором случае, при параметрах 32 К, 32 Б, 1 Мб вид графика во втором случае (см. рис. 3) обусловлен тем, что из прочитанных 128 Б линейки используется лишь 32, а остальные байты попадают в кеш. 3 последующих обращения будут только к кеш-памяти и таким образом, мы при последующем чтении получаем ускорение на 3 / 4
Эксперимент 2. Сравнение эффективности ссылочных и векторных структур
Цель эксперимента: оценка влияния зависимости команд по данным на эффективность вычислений.
Заданные параметры:
Число элементов в списке – 1 М.
Максимальная фрагментация списка – 32 К.
Шаг увеличения фрагментации – 1 К.
На рисунке 4 представлена зависимость времени работы алгоритма от фрагментации списка (красный график) и аналогичная зависимость для алгоритма, использующего массив (зелёный график).
Обобщённый результат:
____________________________________________________________________________
Список обрабатывался в 20,347627 раз дольше.
Рисунок 4 - Зависимость времени обработки списка и массива от фрагментации
Выводы:
Явление на рисунке можно объяснить наличием семантического разрыва, так как представление многих сложных структур на высоком уровне значительно отличается от физического строения памяти, что приводит к сравнительно низкой производительности. В случае списка используются указатели, обращение к которым с дальнейшим переходом по ним увеличивает время по сравнению с непосредственным доступом по адресу в случае массивов.
Эксперимент 3. Исследование эффективности программной предвыборки
Цель эксперимента: выявление способов ускорения вычислений благодаря применению предвыборки данных.
Заданные параметры:
Шаг увеличения расстояния между читаемыми данными – 512 Б.
Размер массива – 128 К.
На рисунке 5 представлена зависимость времени работы алгоритма без предвыборки от смещения читаемых данных (красный график) и аналогичная зависимость для алгоритма, использующего предвыборку (зелёный график).
Обобщённый результат:
____________________________________________________________________________
Обработка без загрузки таблицы страниц в TLB производилась в 2,094776 раз дольше.
Расстояние между пиками примерно по 4 Кб, а сами пики по 20К.
Рисунок 5 - Зависимость времени работы алгоритма от смещения читаемых данных
Выводы:
При обработке больших объемов данных происходит открытие большого числа страниц физической памяти. Возникает необходимость преобразования логических адресов в физические на основании хранимых в TLB процессора данных. Если в TLB процессора отсутствует необходимая информация, то приходится обращаться к оперативной памяти дважды, что приводит к потере производительности. Пики на красном графике соответствуют ситуации, когда информация о искомой странице в TLB отсутствовала. Использование предвыборки позволяет предварительно загрузить данные в TLB, что в ряде случаев повышает производительность.
