Цель: оценить максимальную производительность микропроцессора на заданных операциях.
Постановка задачи
- Написать программу, выполняющую многократно (в цикле) заданную арифметическую операцию.
- Замерить время выполнения цикла. По результатам замера получить оценку производительности микропроцессора на заданной операции (в тактах процессора):
- латентность (используя последовательность зависимых операций),
- темп выдачи результатов (используя последовательность независимых операций).
- Сравнить полученные результаты с теоретическими.
Для корректности теста необходимо добиться того, чтобы после компиляции внутри цикла не было обращений в память, и все вычисления проходили на регистрах. Нужно убедиться в этом путём анализа ассемблерного листинга. Кроме того, необходимо следить, чтобы компилятор не устранил из кода нужные операции. При необходимости можно использовать для тестирования модификацию ассемблерного листинга, сгенерированного компилятором.
Варианты заданий
- целочисленное умножение,
- векторное целочисленное умножение,
- целочисленное деление,
- векторное целочисленное деление,
- вещественное сложение,
- векторное вещественное сложение,
- вещественное умножение,
- векторное вещественное умножение,
- вещественное деление,
- векторное вещественное деление,
- вещественное вычисление квадратного корня,
- векторное вещественное вычисление квадратного корня,
- преобразование из целочисленного значения в вещественное (плюс вещественное сложение),
- векторное преобразование из целочисленного значения в вещественное (плюс векторное вещественное сложение).
- ...
Для целочисленных операций использовать тип int, для вещественных - тип double. Векторные операции реализовать с помощью intrinsics. Для замера времени использовать счётчик тактов процессора.
Отчёт
Отчёт высылайте преподавателю на почту. В отчет необходимо включить:
- Фамилию И.О.
- листинг программы на Си,
- весь листинг на ассемблере или фрагмент кода с циклом,
- полученные оценки производительности, их сравнение с теоретическими,
- вывод по результатам выполнения задания.