Размер BTB для Haswell, Sandy Bridge, Ivy Bridge и Skylake?

Есть ли какой-нибудь способ определить или какой-нибудь ресурс, где я могу найти размер целевого буфера филиала для процессоров Haswell, Sandy Bridge, Ivy Bridge и Skylake Intel?

1 ответ

Решение

Проверьте ресурсы по оптимизации программного обеспечения Агнер Фог, http://www.agner.org/optimize/

BTB должен быть в "Микроархитектуре процессоров Intel, AMD и VIA: руководство по оптимизации для программистов на сборках и производителей компиляторов", http://www.agner.org/optimize/microarchitecture.pdf

3.7. Прогнозирование ветвей в Intel Sandy Bridge и Ivy Bridge

BTB организация. По неофициальным слухам, целевой буфер ветвей в Sandy Bridge больше, чем в Nehalem. Неизвестно, имеет ли он один уровень, как в Core 2 и более ранних процессорах, или два уровня, как в Nehalem. Он может обрабатывать максимум четыре инструкции вызова на 16 байтов кода. Условные переходы менее эффективны, если на 16 байтов кода приходится более 3 инструкций перехода.

3.8. Прогнозирование ветвей в Intel Haswell, Broadwell и Skylake

BTB организация. Организация целевого буфера филиала неизвестна. Это кажется достаточно большим.

Intel может описать некоторые данные в "Справочном руководстве по оптимизации архитектур Intel 64 и IA-32" http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html вокруг "3.4.1 Оптимизация прогнозирования ветвления", но все еще без размеров.

Это может выглядеть странно, но в 1998-2000 гг. Не было информации о BTB в cpuid: http://www.installaware.com/forums/oldattachments/02142006163/tstcpuid.c (автор Gerald J. Heim, Университет Тюбингена, Германия)..). И до сих пор не указан в http://www.felixcloutier.com/x86/CPUID.html или в некоторых общедоступных материалах от сотрудников Intel...

 * This table describes the possible cache and TLB configurations
 * as documented by Intel. For now AMD doesn't use this but gives
 * exact cache layout data on CPUID 0x8000000x.
 *
 * MAX_CACHE_FEATURES_ITERATIONS limits the possible cache information
 * to 80 bytes (of which 16 bytes are used in generic Pentii2).
 * With 80 possible caches we are on the safe side for one or two years.
 *
 * Strange enough no BHT, BTB or return stack data is given this way...

Должны быть некоторые счетчики единиц мониторинга производительности (PMU) для BTB, и есть эксперименты, чтобы получить размер BTB от запуска специальных тестовых программ, проверьте http://xania.org/201602/haswell-and-ivy-btb от Matt Godbolt

Выводы

Исходя из этих результатов, кажется, что Ivy Bridge (и, следовательно, вероятно, Sandy Bridge) использует почти такую ​​же стратегию для поиска BTB безусловных ветвей, хотя и с большим размером таблицы: 4096 записей разделены на 1024 набора из 4 способов.

Для Haswell кажется, что был принят новый подход к определению множеств, наряду с новым подходом к удалению записей.

и еще его посты о прогнозе отрасли и его событиях:

Его код является общедоступным, на основе тестов Агнера: https://github.com/mattgodbolt/agner: https://github.com/mattgodbolt/agner/blob/master/tests/btb_size.py, https://github.com/mattgodbolt/agner/blob/master/tests/branch.py

Другие вопросы по тегам