EMZETT.
Увійти

Одночасна багатопотоковість (SMT)

Коротко: Одночасна багатопотоковість (SMT) дає змогу одному фізичному ядру процесора виконувати два (або більше) потоки одночасно, краще використовуючи виконавчі блоки. Intel називає це Hyper-Threading.

Докладніше: У ядра багато виконавчих блоків, які за одного потоку часто простоюють, бо потік чекає даних із пам’яті або гальмується залежностями. SMT додає додаткові регістри й стан, і другий потік працює у вільних проміжках. Тому операційна система бачить два логічні процесори на ядро.

Подробиці

Як це працює:

  • На кожне ядро є продубльовані набори регістрів і керування, але лише один набір ALU, FPU та кешів (спільних).
  • Планувальник кожен такт заповнює вільні слоти виконання по черзі з обох потоків.
  • Якщо один потік чекає, інший продовжує обчислювати.

Переваги:

  • Приблизно на 10–30 % більша пропускна здатність за добре розпаралелюваного навантаження (рендеринг, компіляція, сервери, віртуалізація). Виграш коштує лише невеликої додаткової площі чипа (~5 %).
  • Менша затримка за безлічі дрібних завдань, краща чутливість під навантаженням.

Обмеження та недоліки:

  • Немає подвоєння: обидва потоки ділять виконавчі блоки й кеш. Для обчислювально важких програм, які й так вичерпують ядро, SMT дає мало або навіть сповільнює (конкуренція за кеш).
  • Швидкість одного потоку може трохи знижуватися, коли паралельно працює другий потік.
  • Безпека: спільні ресурси уможливили атаки через побічні канали (Spectre, MDS, «PortSmash»). Деякі хмарні провайдери та системи тому вимикають SMT або розділяють клієнтів за ядрами.
  • Ігри: часто майже не виграють. Деякі працюють стабільніше без SMT.

Назви:

ВиробникНазва
IntelHyper-Threading (HT)
AMDSMT
IBM PowerSMT до 8 потоків на ядро
Apple, мобільні ядра ARMздебільшого без SMT, натомість більше справжніх ядер

Увімкнення/вимкнення: в UEFI («SMT mode», «Hyper-Threading»). Доцільне лише в особливих випадках.

Див. також: Hyper-threading і ядра, Ядра процесора, логічні процесори та потоки, Конвеєр процесора