Одночасна багатопотоковість (SMT)
Коротко: Одночасна багатопотоковість (SMT) дає змогу одному фізичному ядру процесора виконувати два (або більше) потоки одночасно, краще використовуючи виконавчі блоки. Intel називає це Hyper-Threading.
Докладніше: У ядра багато виконавчих блоків, які за одного потоку часто простоюють, бо потік чекає даних із пам’яті або гальмується залежностями. SMT додає додаткові регістри й стан, і другий потік працює у вільних проміжках. Тому операційна система бачить два логічні процесори на ядро.
Подробиці
Як це працює:
- На кожне ядро є продубльовані набори регістрів і керування, але лише один набір ALU, FPU та кешів (спільних).
- Планувальник кожен такт заповнює вільні слоти виконання по черзі з обох потоків.
- Якщо один потік чекає, інший продовжує обчислювати.
Переваги:
- Приблизно на 10–30 % більша пропускна здатність за добре розпаралелюваного навантаження (рендеринг, компіляція, сервери, віртуалізація). Виграш коштує лише невеликої додаткової площі чипа (~5 %).
- Менша затримка за безлічі дрібних завдань, краща чутливість під навантаженням.
Обмеження та недоліки:
- Немає подвоєння: обидва потоки ділять виконавчі блоки й кеш. Для обчислювально важких програм, які й так вичерпують ядро, SMT дає мало або навіть сповільнює (конкуренція за кеш).
- Швидкість одного потоку може трохи знижуватися, коли паралельно працює другий потік.
- Безпека: спільні ресурси уможливили атаки через побічні канали (Spectre, MDS, «PortSmash»). Деякі хмарні провайдери та системи тому вимикають SMT або розділяють клієнтів за ядрами.
- Ігри: часто майже не виграють. Деякі працюють стабільніше без SMT.
Назви:
| Виробник | Назва |
|---|---|
| Intel | Hyper-Threading (HT) |
| AMD | SMT |
| IBM Power | SMT до 8 потоків на ядро |
| Apple, мобільні ядра ARM | здебільшого без SMT, натомість більше справжніх ядер |
Увімкнення/вимкнення: в UEFI («SMT mode», «Hyper-Threading»). Доцільне лише в особливих випадках.
Див. також: Hyper-threading і ядра, Ядра процесора, логічні процесори та потоки, Конвеєр процесора