- •4. Введение в параллельную обработку
- •Определить размер кэш-строки.
- •Определить параметры tlb: объем, степень ассоциативности.
- •2. Изучить ассемблерный листинг программы для архитектуры x86/x86-64.
- •Изучить векторные расширения архитектуры x86/x86-64.
- •Реализовать программу, используя векторные расширения архитектуры x86.
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТЕТ
ФАКУЛЬТЕТ ПРИКЛАДНОЙ МАТЕМАТИКИ И ИНФОРМАТИКИ
КАФЕДРА ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛИТЕЛЬНЫХ ТЕХНОЛОГИЙ
“УТВЕРЖДАЮ”
Декан ФПМИ Б.Ю. Лемешко
“___ ”____________2011 г.
Дисциплины
«Архитектура ЭВМ и вычислительных систем »
Цели освоения дисциплины
Освоение бакалаврами дисциплины «Архитектура ЭВМ и вычислительных систем » преследует следующие цели:
систематизация теоретических знаний о системной организации современной ЭВМ;
изучение особенностей архитектур ЭВМ и их влияния на производительность на заданном классе задач;
формирование минимальных практических навыков оптимизации прикладных программ под заданную архитектуру ЭВМ (навыки учета особенностей архитектуры целевой ЭВМ в прикладной программе);
Для достижения указанных целей по некоторым разделам дисциплины бакалавры выполняют следующие расчетно-графические задания.
Темы расчетно-графических заданий
1. Использование влияния оптимизирующего компилятора на время выполнения программы простых алгоритмов.
2. Определить параметры кэш-памяти
2.1. Сравнение способов обхода данных в памяти.
2.2. Изучение способов отображения данных в кэш-память.
2.3. Изучение аппаратной предвыборки данных.
2.4. Изучение работы TLB.
3. Функционирование процессора
3.1. Изучение архитектуры x86/x86-64.
3.2. Разбор ассемблерного листинга.
4. Введение в параллельную обработку
4.1. Использование векторных расширений.
Изучение влияния опций компилятора на время выполнения программы.
Разработка программ некоторого простого алгоритма (вычисление числа Пи, интеграла, квадратного корня, умножения матриц) и определение временной сложности его исполнения.
Исследование влияния параметров иерархии памяти на время выполнения программы.
Изучение SIMD-расширений архитектуры x86. Использование SIMD-расширений при написании программ.
РГЗ 1. Использование влияния оптимизирующего компилятора на время выполнения программы простых алгоритмов.
Для выполнения данной работы необходимо изучить
функции замера времени.
Написать программу, вычисляющую заданную функцию, в зависимости от выбранного варианта и определить время ее выполнения.
Для каждого доступного компилятора следует сравнить различные уровни оптимизации (например, ключи –O0, –O1, –O2, –O3 для компилятора gcc) и оптимизацию под архитектуру процессора (например, ключи –O3 –march=core2 для компилятора gcc).
Исследовать зависимость времени работы программы от компилятора и используемых ключей оптимизации компилятора.
Варианты заданий:
Вычисление числа Пи с помощью разложения в ряд.
Вычисление определенного интеграла сложной функции методом трапеций.
Вычисление квадратного корня с помощью алгоритма Ньютона.
Сортировка методом пузырька.
Вычисление числа Пи метом Монте-Карло.
РГЗ 2. Определить параметры кэш-памяти
Определить параметры кэш-памяти: латентность, пропускная способность, объем. Сравнить времена для различных способов обхода массива: прямой обход, обратный обход, обход в случайном порядке.
Для выполнения задания требуется написать программу, выполняющую чтение элементов массива заданного размера в заданном порядке. Процедура обхода массива x[] должна выглядеть следующим образом:
for (i=0, j=0; j<N; j++) i = x[i];
где элементы массива x[] представляют собой связный список, заполненный различным образом в зависимости от способа обхода массива. Например:
Для прямого обхода:
Для обратного обхода:
Для обхода в случайном порядке:
Необходимо построить графики зависимости среднего времени обращения к элементу массива от размера обрабатываемого массива для трех видов обхода. На основании полученных результатов необходимо:
определить объем и латентность различных уровней кэш-памяти,
сделать вывод о скорости различных способов обхода массива.