[Компьютерное железо, Настольные компьютеры, Процессоры] Даунклокинг Ice Lake AVX-512 (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Это короткий пост об исследовании поведения AVX2 и AVX-512 в связи с лицензионным даунклокингом новых чипов Intel Ice Lake.
Лицензионный даунклокинг1 — это малоизвестный эффект, при котором пределы частот опускаются ниже номинальных в случае выполнения определённых SIMD-инструкций, особенно тяжёлых инструкций с плавающей запятой или инструкций с 512-битной шириной.
Подробности о подобном виде даунклокинга можно прочитать в этом ответе на StackOverflow, и мы уже довольно детально объясняли низкоуровневую механику подобных переходов. Также можно найти инструкции о том, как воспользоваться широкими SIMD (Single Instruction Multiple Data: тип или расширение архитектуры набора команд, например, Intel AVX или ARM NEON, способные выполнять множественные идентичные операции с элементами, упакованными в SIMD-регистр) с учётом этой проблемы2.
Информация по ссылкам написана в контексте Skylake-SP (SKX, серверной архитектуры Intel Skylake, включающей в себя Skylake-SP, Skylake-X и Skylake-W), которые стали первым поколением чипов с поддержкой AVX-512.
Какова же ситуация с Ice Lake — с самыми новыми чипами, поддерживающими как инструкции AVX-512 из SKX, так и имеющими совершенно новый набор инструкций AVX-512? Нам придётся смотреть на эти новые инструкции издалека, и мы никогда не сможем воспользоваться ими из-за даунклокинга?
Прочитайте статью, чтобы разобраться, или просто перейдите к разделу «Итоги».
AVX-Turbo
Мы будем использовать утилиту avx-turbo для измерения зависимости частот от количества ядер и набора инструкций. Этот инструмент работает просто: выполняет заданный набор инструкций на заданном количестве ядер, измеряя частоту, достигнутую во время теста.
Например, тест avx256_fma_t, измеряющий затраты на тяжёлые 256-битные инструкции с высокой ILP (Instruction level parallelism: величина параллелизма на межинструкционном уровне суперскалярного процессора), выполняет следующую последовательность FMA:
vfmadd132pd ymm0,ymm10,ymm11
vfmadd132pd ymm1,ymm10,ymm11
vfmadd132pd ymm2,ymm10,ymm11
vfmadd132pd ymm3,ymm10,ymm11
vfmadd132pd ymm4,ymm10,ymm11
vfmadd132pd ymm5,ymm10,ymm11
vfmadd132pd ymm6,ymm10,ymm11
vfmadd132pd ymm7,ymm10,ymm11
vfmadd132pd ymm8,ymm10,ymm11
vfmadd132pd ymm9,ymm10,ymm11
; repeat 10x for a total of 100 FMAs
Суммарно мы используем пять тестов для проверки каждого сочетания лёгких и тяжёлых 256-битных и 512-битных инструкций, а также скалярных инструкций (128-битный SIMD ведёт себя так же, как и скалярные инструкции), введя в командной строке:
./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t
Результаты Ice Lake
Я запускал avx-turbo описанным выше образом на Ice Lake i5-1035G4 — клиентском процессоре Ice Lake среднего диапазона мощности, работающего с частотой до 3,7 ГГц. Полные результаты скрыты в gist, а здесь я представлю самые важные результаты по полученным частотам (все значения указаны в ГГц):
Набор инструкций
Активные ядра
1
2
3
4
Скалярные/128-битные
3,7
3,6
3,3
3,3
Лёгкие 256-битные
3,7
3,6
3,3
3,3
Тяжёлые 256-битные
3,7
3,6
3,3
3,3
Лёгкие 512-битные
3,6
3,6
3,3
3,3
Тяжёлые 512-битные
3,6
3,6
3,3
3,3
Как и ожидалось, максимальное падение частоты происходит при увеличении количества активных ядер, но просмотрите вниз каждый столбец, чтобы оценить влияние на категории инструкций. Вдоль этой оси почти никакого даунклокинга не происходит! Только при одном активном ядре возникает снижение при широких инструкциях, и всего лишь на жалкие 100 МГц: с 3 700 МГц до 3 600 МГц при использовании любых 512-битных инструкций.
Во всех остальных случаях, в том числе и при нескольких активных ядрах, а также тяжёлых 256-битных лицензионный даунклокинг равен нулю: всё работает так же быстро, как и со скалярными инструкциями.
Виды лицензий
Здесь существует и ещё одно изменение. В архитектуре SKX есть три лицензии, или категории инструкций, относящихся к даунклокингу: L0, L1 и L2. Здесь, в клиентском ICL, их всего две3 и они неточно соответствуют трём категориям в SKX.
Лицензии в SKX соответствуют ширине и тяжести инструкций следующим образом:
Ширина
Лёгкие
Тяжёлые
Скалярные/128
L0
L0
256
L0
L1
512
L1
L2
В частности, обратите внимание на то, что тяжёлые 256-битные инструкции имеют ту же лицензию, что и лёгкие 512-битные.
В клиентских ICL схема такова:
Ширина
Лёгкие
Тяжёлые
Скалярные/128
L0
L0
256
L0
L0
512
L1
L1
Здесь тяжёлые 256-битные и лёгкие 512-битные инструкции находятся в разных категориях! На самом деле, похоже, здесь не применяется концепция противопоставления лёгких и тяжёлых инструкций: разбивка на категории целиком зависит от ширины4.
Ну и что?
Ну и что же из этого?
По меньшей мере, это означает, что нам нужно изменить нашу мысленную модель затратности инструкций AVX-512 относительно частот. Вместо того, чтобы говорить, что они «обычно вызывают значительный даунклокинг», про этот чип Ice Lake можно сказать, что AVX-512 вызывает незначительный или нулевой лицензионный даунклокинг, и я предполагаю, что это справедливо также для других клиентских чипов Ice Lake.
Однако это смена наших ожиданий имеет важный изъян: лицензионный даунклокинг не является единственным источником даунклокинга. Мы также можем столкнуться с ограничениями мощности, тепловыделения или тока. Некоторые конфигурации способны выполнять широкие SIMD-инструкции на всех ядрах только в течение короткого времени, а затем превышают пределы рабочей мощности. В моём случае ноутбук за 250 долларов, на котором проводилось тестирование, имел чрезвычайно плохое охлаждение, и вместо ограничений мощности я столкнулся с пределом тепловыделения (100°C) всего спустя несколько секунд после запуска тяжёлых инструкций на всех ядрах.
Однако эти прочие ограничения качественно отличаются от лицензионных ограничений. В основном5 они ограничивают по принципу плати за то, что используешь: если вы используете широкие или тяжёлые инструкции (или оба вида), то это вызывает лишь микроскопическое повышение мощности или тепловыделения, связанное только с этими инструкциями. Это непохоже на некоторые лицензионные эффекты, при которых возникают изменения частот в пределах ядра или целого чипа, значительное время влияющие последующее выполнение, не связанное с такими типами инструкций.
Так как широкие операции обычно менее затратны по мощности, чем аналогичное количество узких операций6, можно сразу же понять, стоят ли того широкие операции; по крайней мере, в случаях, хорошо масштабирующихся с повышением ширины. Как бы то ни было, эта проблема в основном локальна: она не зависит от поведения соседнего кода.
Итоги
Вот, какие выводы я сделал.
- Процессор Ice Lake i5-1035 демонстрирует всего 100 МГц лицензионного даунклокинга с одним активным ядром при выполнении 512-битных инструкций.
- Во всех прочих случаях даунклокинг отсутствует.
- Турбочастота выполнения 512-битных инструкций на всех ядрах равна 3,3 ГГц, что составляет 89% от максимума частоты выполнения скалярных операций на одном ядре (3,7 ГГц), поэтому в рамках ограничений мощности и тепловыделения этот чип имеет очень «плоскую» частотную зависимость.
- В отличие от архитектуры SKX, этот чип Ice Lake не использует разделение на «лёгкие»
и «тяжёлые» инструкции для масштабирования частот: FMA-операции выполняются так же, как и более лёгкие операции.
То есть на клиентских ICL бояться даунклокинга не нужно. Только будущее покажет нам, относится ли это и к серверным ICL.
Обсуждения и общение
Этот пост можно обсудить на on Hacker News.
Если у вас есть вопросы или другая обратная связь, то можете оставить комментарий к оригиналу поста. Мне были бы также интересны результаты на других чипах ICL, например, на версиях i3 и i7: дайте мне знать, если у вас они есть, и мы сможем получить результаты.
Примечания
- Мне уже надоедает постоянно повторять лицензионный даунклокинг, поэтому я часто буду просто использовать термин «даунклокинг», но должно быть понятно, что подразумевается его лицензионная разновидность, а не прочие виды частотного троттлинга
- Обратите внимание, что Дэниел писал об этом гораздо больше, чем один раз.
- Видимы только две: возможно, по-прежнему существует три (или более) категорий, но они вызывают изменения только напряжений, а не частот.
- Можно было бы предположить, что это следствие того, что клиентские ICL имеют только один блок FMA во всех моделях: очень тяжёлые 512-битные операции с плавающей запятой невозможны. Однако это не согласуется с тем, что тяжёлые 256-битные инструкции всё равно остаются быстрыми: по-прежнему можно выполнять по 2x256-битных FMA на такт, и это точно такая же нагрузка с плавающей запятой, что и 1x512-битная FMA на такт. Скорее всего, на этом чипе операции с плавающей запятой не требуют лицензионной защиты от других операций с той же шириной, и основные затраты возникают при 512-битной ширине.
- Мне приходится говорить здесь в основном потому что, даже при отсутствии изменения частоты может присутствовать изменение напряжения, что вызывает период останова, когда ничего не выполняется, а также повышает мощность для выполнения последующих инструкций, которым может и не требоваться повышенное напряжения. Кроме того, существует нерассмотренная ещё нами концепция косвенного расширения, которая может позже расширять узкие операции до максимальной ширины, если старшие части регистров не обнулены инструкциями vzeroupper или vzeroall.
- Например, одно 512-битное целочисленное сложение обычно будет менее энергозатратным, чем две 256-битные операции, необходимые для вычисления того же результата, потому что избыточные затраты при выполнении растут с увеличением ширины нелинейно (в них входит почти всё, кроме самого выполнения).
===========
Источник:
habr.com
===========
===========
Автор оригинала: Travis Downs
===========Похожие новости:
- [Assembler, История IT, Компьютерное железо, Процессоры, Старое железо] Эмоциональная история процессоров: IBM/370
- [IT-компании, Процессоры, Системное администрирование, Софт] Microsoft выпустила для Windows 10 и Windows Server большой комплект обновлений микрокодов для процессоров Intel
- [История IT, Процессоры, Старое железо] Как процессор 8086 работает с питанием и сигналами тактовой частоты (перевод)
- [Компьютерное железо, Процессоры] Процессоры Intel Tiger Lake — новое поколение с новым логотипом
- [Законодательство в IT, Компьютерное железо, Процессоры] Минпромторг потребовал 500 млн рублей с производителя из-за просрочки запуска «Байкал-М»
- [Видеокарты, Игры и игровые приставки, Компьютерное железо] NVIDIA представила новую линейку видеокарт на Ampere
- [Высокая производительность, Компьютерное железо, Старое железо, Суперкомпьютеры, Электроника для начинающих] Экскурсия по Музею Истории Компьютеров в городе Горный Вид, Калифорния c девушкой Ириной из новосибирского Академгородка
- [Процессоры, Разработка под Linux, Софт] Microsoft оптимизирует ядро Linux для серверных ARM
- [FPGA, Программирование микроконтроллеров, Конференции, Компьютерное железо, Электроника для начинающих] Молодожены, которых Интел привез в Калифорнию, дали интервью в лабнике от ВШЭ МИЭМ. Как повторить их достижение
- [Высокая производительность, Компьютерное железо] Авторазгон, остановись (перевод)
Теги для поиска: #_kompjuternoe_zhelezo (Компьютерное железо), #_nastolnye_kompjutery (Настольные компьютеры), #_protsessory (Процессоры), #_intel_ice_lake, #_licencebased_downclocking, #_daunkloking (даунклокинг), #_protsessory_intel (процессоры intel), #_kompjuternoe_zhelezo (
Компьютерное железо
), #_nastolnye_kompjutery (
Настольные компьютеры
), #_protsessory (
Процессоры
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:00
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Это короткий пост об исследовании поведения AVX2 и AVX-512 в связи с лицензионным даунклокингом новых чипов Intel Ice Lake. Лицензионный даунклокинг1 — это малоизвестный эффект, при котором пределы частот опускаются ниже номинальных в случае выполнения определённых SIMD-инструкций, особенно тяжёлых инструкций с плавающей запятой или инструкций с 512-битной шириной. Подробности о подобном виде даунклокинга можно прочитать в этом ответе на StackOverflow, и мы уже довольно детально объясняли низкоуровневую механику подобных переходов. Также можно найти инструкции о том, как воспользоваться широкими SIMD (Single Instruction Multiple Data: тип или расширение архитектуры набора команд, например, Intel AVX или ARM NEON, способные выполнять множественные идентичные операции с элементами, упакованными в SIMD-регистр) с учётом этой проблемы2. Информация по ссылкам написана в контексте Skylake-SP (SKX, серверной архитектуры Intel Skylake, включающей в себя Skylake-SP, Skylake-X и Skylake-W), которые стали первым поколением чипов с поддержкой AVX-512. Какова же ситуация с Ice Lake — с самыми новыми чипами, поддерживающими как инструкции AVX-512 из SKX, так и имеющими совершенно новый набор инструкций AVX-512? Нам придётся смотреть на эти новые инструкции издалека, и мы никогда не сможем воспользоваться ими из-за даунклокинга? Прочитайте статью, чтобы разобраться, или просто перейдите к разделу «Итоги». AVX-Turbo Мы будем использовать утилиту avx-turbo для измерения зависимости частот от количества ядер и набора инструкций. Этот инструмент работает просто: выполняет заданный набор инструкций на заданном количестве ядер, измеряя частоту, достигнутую во время теста. Например, тест avx256_fma_t, измеряющий затраты на тяжёлые 256-битные инструкции с высокой ILP (Instruction level parallelism: величина параллелизма на межинструкционном уровне суперскалярного процессора), выполняет следующую последовательность FMA: vfmadd132pd ymm0,ymm10,ymm11
vfmadd132pd ymm1,ymm10,ymm11 vfmadd132pd ymm2,ymm10,ymm11 vfmadd132pd ymm3,ymm10,ymm11 vfmadd132pd ymm4,ymm10,ymm11 vfmadd132pd ymm5,ymm10,ymm11 vfmadd132pd ymm6,ymm10,ymm11 vfmadd132pd ymm7,ymm10,ymm11 vfmadd132pd ymm8,ymm10,ymm11 vfmadd132pd ymm9,ymm10,ymm11 ; repeat 10x for a total of 100 FMAs Суммарно мы используем пять тестов для проверки каждого сочетания лёгких и тяжёлых 256-битных и 512-битных инструкций, а также скалярных инструкций (128-битный SIMD ведёт себя так же, как и скалярные инструкции), введя в командной строке: ./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t
Результаты Ice Lake Я запускал avx-turbo описанным выше образом на Ice Lake i5-1035G4 — клиентском процессоре Ice Lake среднего диапазона мощности, работающего с частотой до 3,7 ГГц. Полные результаты скрыты в gist, а здесь я представлю самые важные результаты по полученным частотам (все значения указаны в ГГц): Набор инструкций Активные ядра 1 2 3 4 Скалярные/128-битные 3,7 3,6 3,3 3,3 Лёгкие 256-битные 3,7 3,6 3,3 3,3 Тяжёлые 256-битные 3,7 3,6 3,3 3,3 Лёгкие 512-битные 3,6 3,6 3,3 3,3 Тяжёлые 512-битные 3,6 3,6 3,3 3,3 Как и ожидалось, максимальное падение частоты происходит при увеличении количества активных ядер, но просмотрите вниз каждый столбец, чтобы оценить влияние на категории инструкций. Вдоль этой оси почти никакого даунклокинга не происходит! Только при одном активном ядре возникает снижение при широких инструкциях, и всего лишь на жалкие 100 МГц: с 3 700 МГц до 3 600 МГц при использовании любых 512-битных инструкций. Во всех остальных случаях, в том числе и при нескольких активных ядрах, а также тяжёлых 256-битных лицензионный даунклокинг равен нулю: всё работает так же быстро, как и со скалярными инструкциями. Виды лицензий Здесь существует и ещё одно изменение. В архитектуре SKX есть три лицензии, или категории инструкций, относящихся к даунклокингу: L0, L1 и L2. Здесь, в клиентском ICL, их всего две3 и они неточно соответствуют трём категориям в SKX. Лицензии в SKX соответствуют ширине и тяжести инструкций следующим образом: Ширина Лёгкие Тяжёлые Скалярные/128 L0 L0 256 L0 L1 512 L1 L2 В частности, обратите внимание на то, что тяжёлые 256-битные инструкции имеют ту же лицензию, что и лёгкие 512-битные. В клиентских ICL схема такова: Ширина Лёгкие Тяжёлые Скалярные/128 L0 L0 256 L0 L0 512 L1 L1 Здесь тяжёлые 256-битные и лёгкие 512-битные инструкции находятся в разных категориях! На самом деле, похоже, здесь не применяется концепция противопоставления лёгких и тяжёлых инструкций: разбивка на категории целиком зависит от ширины4. Ну и что? Ну и что же из этого? По меньшей мере, это означает, что нам нужно изменить нашу мысленную модель затратности инструкций AVX-512 относительно частот. Вместо того, чтобы говорить, что они «обычно вызывают значительный даунклокинг», про этот чип Ice Lake можно сказать, что AVX-512 вызывает незначительный или нулевой лицензионный даунклокинг, и я предполагаю, что это справедливо также для других клиентских чипов Ice Lake. Однако это смена наших ожиданий имеет важный изъян: лицензионный даунклокинг не является единственным источником даунклокинга. Мы также можем столкнуться с ограничениями мощности, тепловыделения или тока. Некоторые конфигурации способны выполнять широкие SIMD-инструкции на всех ядрах только в течение короткого времени, а затем превышают пределы рабочей мощности. В моём случае ноутбук за 250 долларов, на котором проводилось тестирование, имел чрезвычайно плохое охлаждение, и вместо ограничений мощности я столкнулся с пределом тепловыделения (100°C) всего спустя несколько секунд после запуска тяжёлых инструкций на всех ядрах. Однако эти прочие ограничения качественно отличаются от лицензионных ограничений. В основном5 они ограничивают по принципу плати за то, что используешь: если вы используете широкие или тяжёлые инструкции (или оба вида), то это вызывает лишь микроскопическое повышение мощности или тепловыделения, связанное только с этими инструкциями. Это непохоже на некоторые лицензионные эффекты, при которых возникают изменения частот в пределах ядра или целого чипа, значительное время влияющие последующее выполнение, не связанное с такими типами инструкций. Так как широкие операции обычно менее затратны по мощности, чем аналогичное количество узких операций6, можно сразу же понять, стоят ли того широкие операции; по крайней мере, в случаях, хорошо масштабирующихся с повышением ширины. Как бы то ни было, эта проблема в основном локальна: она не зависит от поведения соседнего кода. Итоги Вот, какие выводы я сделал.
То есть на клиентских ICL бояться даунклокинга не нужно. Только будущее покажет нам, относится ли это и к серверным ICL. Обсуждения и общение Этот пост можно обсудить на on Hacker News. Если у вас есть вопросы или другая обратная связь, то можете оставить комментарий к оригиналу поста. Мне были бы также интересны результаты на других чипах ICL, например, на версиях i3 и i7: дайте мне знать, если у вас они есть, и мы сможем получить результаты. Примечания
=========== Источник: habr.com =========== =========== Автор оригинала: Travis Downs ===========Похожие новости:
Компьютерное железо ), #_nastolnye_kompjutery ( Настольные компьютеры ), #_protsessory ( Процессоры ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:00
Часовой пояс: UTC + 5