Архитектура микропроцессоров

ru en cn

с начала прошло: 1008 д. 08:25
страница обновлена: 22.12.2024 04:52

Архитектура микропроцессоров

Задание 0

Научиться измерять время выполнения участка кода, запускать приложение с приоритетом реального времени. Например.

Задание 1

Написать программу, копирующую 1 гигабайт памяти следующими способами:

  • цикл
  • memcpy
  • movs
  • самый быстрый способ, который сможете найти на своём процессоре (SSE, стек, movnt...)

Вывести и сравнить результаты в зависимости от объёма блока памяти. Примеры быстрых реализаций memcpy.

Задание 2.1

Вывести информацию о кешах процессора, которая доступна с помощью команды CPUID.

Задание 2.2

Вывести графики изменения производительности операций с памятью в зависимости от шага (stride) и размера блоков (block size). Интерпретировать графики для обнаружения влияния кешей.

for (times = 0; times < many_times; times++)
  for (i = 0; i < block_size; i = i + stride)
    dummy = A[i];

Задание 3.1

Сравнить производительность кода в зависимости от эффективности предсказания ветвлений.

  • условие на чётные/нечётные итерации
  • условие на случайный выбор
  • условие, минимизирующее успешные предсказания для каждого паттерна из N переходов.

Задание 3.2

Вывести графики зависимости времени исполнения перехода от количества вариантов целевого адреса.

Рассмотреть способы ветвления:

  • последовательные условные переходы
  • косвенный переход
  • самомодифицирующийся код (без барьера памяти и с барьером)

Задание 4

Воспроизвести на своём компьютере

T. Downs Where do interrupts happen?

Сравнить результаты.

Дальневосточный федеральный университет