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