laba3
.pdf
Статическое предсказание переходов
Статическое предсказание (Static prediction) –
фиксированное правило работы предсказателя – условный переход либо выполняются всегда, либо не выполняются никогда.
Статические методы предсказания используются когда невозможно задействовать динамические.
Кстатическим методам можно отнести:
Возврат. Статическое прогнозирование перехода как: всегда выполняемого, либо – всегда не выполняемого.
Разворачивание циклов.
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
11 / 26 |
Динамические предсказание переходов
Динамическое предсказание (Dynamic prediction) –
осуществляет предсказание направления переходов на основании результатов предыдущих выполнений данной команды.
При использовании этих методов для команд условных переходов анализируется предыстория переходов - результаты нескольких предыдущих команд ветвления по данному адресу. В этом случае возможно определение чаще всего реализуемого направления ветвления, а также выявление чередующихся переходов.
Информация о предыдущих ветвленияххранится в буфере предсказания переходов (Branch Target Buffer – BTB).
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
12 / 26 |
Branch Target Buffer
Branch Target Buffer (BTB) –
это ассоциативный массив (хештаблица) сопоставляющий адресу инструкции ветвления историю переходов и адрес перехода.
На этапе Fetch по адресу инструкции (по IP–Instr. Pointer) происходит обращение в BTB,если запись для IP есть, значит загруженная инструкция –это ветвлениеи в BTB имеется адрес перехода (target address).
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
13 / 26 |
Branch History (1 bit)
0–ветвление не состоялось, не осуществлять переход;
1–ветвление состоялось, осуществлять переход.
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
14 / 26 |
Branch History (1 bit)
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
15 / 26 |
Диаграмма состояний автомата схемы Смита
Для описания процесса выполнения условных переходов исполь-зуется автомат Мура с 4-мя и более состояниями. Рассмотрим широко применяемый алгоритм Смита с двухразрядными счетчиками. В со-ответствии с ним ведется таблица истории переходов для каждой ус-ловной команды, содержащая по 2 бита на команду.
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
16 / 26 |
Эксперимент
Задание 3. Исследование характеристик динамического предсказания ветвлений в конвейере с использованием BTB = Branch Target Buffer при разных размерах ВТВ, от 8 до 128 строк. На той же вычислительной нагрузке.
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
17 / 26 |
Ливерморские циклы
"Ливерморские циклы"появился в середине 60-х годов и состоит из фрагментов программ, имеющих реальное хождение в Ливерморской Национальной лаборатории им. Лоуренса в США.
Считается, что Ливерморские циклы – это типичный набор программ для решения численных задач. В этих фрагментах используются различные вычислительные алгоритмы: сеточные, последовательные, волновые, что существенно с точки зрения соответствия вычислительных и аппаратных структур.
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
18 / 26 |
Ливерморские циклы
1 |
Hydro fragment |
2 |
ICCG excerpt (Incomplete Cholesky Conjugate Gradient) |
3 |
Inner product |
4 |
Banded linear equations |
5 |
Tri-diagonal elimination, below diagonal |
6 |
General linear recurrence equations |
7 |
Equation of state fragment |
8 |
ADI integration |
9 |
Integrate predictors |
Исходный код https://github.com/SemenMartynov/SPbPU_ ComputingSystems/tree/master/lab2/livermorec.txt
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
19 / 26 |
Результат
Для изучения характеристик динамического предсказания ветвлений в конвейере, было решено построить модель BPU(Branch Prediction Unit) и использовать информацию о выполнении нагрузки, а именно результат профилирования.
Для получения результатов профилирования был использован pintool: pin-instant. https://github.com/wuyongzheng/pin-instat
Чёрная команда (СПбПУ) |
Branch Target Buffer |
8 марта 2016 г. |
20 / 26 |
