TGViewer
📓 Записки программера 📓 Записки программера @notes_of_programmer · 1.1K subscribers
Post #577 5.97K
Очень интересная статья про AVX512 - в частности как он был реализован AMD в ядре Zen4 и в Zen5 mobile (две операции по 256 бит) и как его сделали в ядре Zen5 (честные 512 бит). Но, есть конечно и физика, от которой никуда не деться:

Therefore, this behavior is consistent with the earlier observation that Zen5 can run AVX512 at full clock speed provided there is thermal headroom. Somehow Zen5 manages to keep all that extra hardware on standby and can wake it up instantly.

Но очень удивлён как это реализовано в Intel процессорах (далее мой перевод):

Для процессоров Intel эти переходы [от обычного кода к коду с AVX512] обрабатываются в два этапа:
1) При переходе от кода низкой интенсивности (low-intensity) к коду высокой интенсивности (high-intensity), код высокой интенсивности работает с резко сниженной пропускной способностью, чтобы уменьшить его интенсивность.
2) После длительного периода в ~50 000 циклов код с более высокой интенсивностью переключается на полную пропускную способность.

Как упоминалось ранее, процессоры Intel не могут запускать AVX512 на полной скорости, так как они выйдут из строя [ниже в статье есть упоминание про Vdroop и я пока не понял - то ли напряжение падает то ли наоборот подскакивает]. Поэтому, прежде чем он сможет запустить AVX512, ему сначала нужно снизить тактовую частоту.

Снижения тактовой частоты выполняется тактовым генератором и регулятором напряжения и это занимает время ~50 000 циклов. Также требуется дополнительные аппаратные модули, которые включаются и используются только с 512-битными инструкциями.
...
На более высоких тактовых частотах включены только нижние 128 бит 512-битных модулей. На этой [полной] скорости включение верхних 384 бит вызовет [повышение?] vdroop, которое может вывести ядро ​​из строя. Только на более низких скоростях могут быть включены все 512 бит. Но во время ожидания, пока процессор переключается на более низкую частоту - код может выполнять 512 битные инструкции, используя нижние 128 бит, что занимает в 4 раза больше времени, но это лучше чем вообще ничего не делать.

Вместо приостановки выполнения на ~50 000 циклов, процессоры Intel разбивают более широкие инструкции и "многократно перекачивают" (multi-pump) их в модули, которые уже включены и готовы к использованию на текущей тактовой частоте.
(конец цитаты)

🤦‍♂️ походу костыли не только в софте бывают :))) Буду искать подробности ещё. #simd
  • 🔥 6
  • 👍 2
  • 💩 1
More from @notes_of_programmer
  1. Sep 30, 2026WSL containers is now generally available есть и морда к ним wslcontainerdesktop #windows
  2. Sep 24, 2026Надеюсь что не пригодится, но вдруг... Creating a memory dump in C# а заодно как его посмо…
  3. Sep 15, 2026А вот уже и мануалы подвезли для Dual-Screen layout вёрстки #css
  4. Sep 14, 2026Забавная штука для того чтобы накидать частично интерактивный мокап. От этого же автора ес…
  5. Sep 2, 2026Оказывается Clickhouse есть в виде wasm версии, смотрел презентации 26.8 и узнал об этом.…
  6. Aug 25, 2026Со времени этого поста плагин перестал работать т.к. в хроме поменяли версию манифеста и у…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →