Практический рабочий лист: Производительность процессоров

Дисциплина: ОП.02 Архитектура аппаратных средств • Раздел 3 (§2.2 с.8 программы)

Вариант 1: Анализ конвейерных конфликтов по данным (RAW) и аппаратного форвардинга
Конвейер • RAW • Forwarding
Исследуйте выполнение цепочки инструкций на 5-ступенчатом конвейере RISC (IF, ID, EX, MEM, WB):
I1: ADD R1, R2, R3 — результат R1 готов в конце стадии EX (T3), запись в РОН на WB (T5)
I2: SUB R4, R1, R5 — чтение R1 на стадии ID (T3 без форвардинга / T4 с форвардингом)
I3: AND R6, R1, R7 — чтение R1 на стадии ID
I4: OR R8, R1, R9 — чтение R1 на стадии ID
Инженерный параметр Режим 1: Без форвардинга (вставка пузырей NOP/Stall) Режим 2: С аппаратным форвардингом (Bypassing)
Где и между какими командами возникает RAW?
Число тактов задержки (пузырей / stalls) команды I2
Суммарное время выполнения 4 команд (тактов)
Откуда и куда передаются сигналы в схеме Forwarding Не применимо (ожидание в ID)
Вариант 2: Расчет предела ускорения параллельной системы по закону Амдала
Закон Амдала • Многоядерность
Рассчитайте теоретическое ускорение $S(N) = \frac{1}{(1-p) + p/N}$ и предел $S_{\max} = \frac{1}{1-p}$ при росте числа ядер:
Доля параллельного кода (p) N = 2 ядра N = 4 ядра N = 8 ядер N = 16 ядер N = 64 ядра Предел при N → ∞
p = 75% (0.75)
p = 90% (0.90)
p = 95% (0.95)
Вариант 3: Анализ штрафа за ошибку предсказания ветвлений (Branch Misprediction)
Глубокий конвейер • TAGE • Flush
Глубокий 19-ступенчатый конвейер ($N_{\text{penalty}} = 19$ тактов). Доля переходов $f_{\text{branch}} = 20\%$ (0.20), базовый $\text{CPI}_{\text{base}} = 1.0$.
CPI_eff = CPI_base + f_branch × (1 - Accuracy) × N_penalty  |  IPC_eff = 1 / CPI_eff
Алгоритм предсказателя переходов Точность (Accuracy) Добавочные такты штрафа Эффективный CPI_eff Реальный темп IPC_eff
Случайное угадывание 50% (0.50)
2-битный насыщающийся счетчик 85% (0.85)
Двухуровневый адаптивный (gshare) 93% (0.93)
Современный TAGE-предсказатель 98% (0.98)
Вариант 4: Векторное ускорение SIMD (AVX2 / AVX-512) и расчет пиковых FLOPS
SIMD • FMA • FLOPS • AVX-512
Ядро работает на частоте 4.0 ГГц ($4.0 \times 10^9$ Гц) с 2 исполнительными портами FMA (2 флопа за такт на элемент). Данные: float32 (32 бита).
Peak_FLOPS = Число_портов × Элементов_в_векторе × 2 (FMA) × Тактовая_частота (ГГц)
Архитектурное расширение Разрядность регистров Элементов float32 в регистре Операций FMA за такт на 2 порта Пиковая скорость ячейки (GFLOPS)
Базовый скаляр (x87 / скалярный FPU) 32 бита 1 элемент 2 × 1 = 2 оп/такт
SSE / SSE4.2 (XMM регистры) 128 бит 4 элемента 2 × 4 = 8 оп/такт
AVX / AVX2 (YMM регистры) 256 бит 8 элементов 2 × 8 = 16 оп/такт
AVX-512 (ZMM регистры) 512 бит 16 элементов 2 × 16 = 32 оп/такт
Итоговый сравнительный анализ и самопроверка
Данные успешно сохранены в localStorage!