Одновременная многопоточность, аббревиатура SMT, - это метод повышения общей эффективности суперскалярных процессоров с аппаратной многопоточностью. SMT позволяет нескольким независимым потокам выполнения лучше использовать ресурсы, предоставляемые современными компьютерными архитектурами.

Многопоточность схожа по концепции с многозадачностью, но реализована на уровне потоков исполнения в современных суперскалярных процессорах.

При проектировании процессоров есть два способа увеличить параллелизм на кристалле при меньших требованиях к ресурсам:

  1. Суперскалярный метод: пытается повысить параллелизм на уровне инструкций (ILP) путем одновременного выполнения нескольких инструкций (называется: одновременно); путем "одновременной" диспетчеризации инструкций (называется: диспетчеризация инструкций) на несколько избыточных блоков исполнения, встроенных в процессор.
  2. Метод многопоточности на уровне микросхемы (CMT): использование параллелизма на уровне потоков (TLP) для выполнения инструкций из нескольких потоков в пределах одной процессорной микросхемы одновременно.

Существует множество способов поддержки более чем одной нити внутри микросхемы, а именно:

  1. Многопоточность с чередованием (IMT) : многопоточность с чередованием нескольких инструкций из разных потоков, также называемая многопоточностью с временным чередованием (Temporal multithreading). В дальнейшем он может быть разделен на мелкозернистое многопоточное или крупнозернистое многопоточное в зависимости от частоты чередования. Тонкозернистые многопоточные задачи задают инструкции для различных потоков после каждого цикла, в то время как крупнозернистые многопоточные задачи переключаются на задание инструкций из другого потока только тогда, когда текущий выполняющийся поток вызывает некоторые длительные задержки (например, сбои в работе страницы и т.д.). Грубое многопоточное чтение более распространено для меньшего количества контекстных переключений между потоками. Для процессоров с одним конвейером на ядро многопоточность с чередованием - единственно возможный способ, так как он может выдавать до одной инструкции в цикле.
  2. Одновременная многопоточность (SMT): Выдача нескольких инструкций из нескольких потоков за один цикл. Для этого процессор должен быть суперскалярным.
  3. Многопроцессорная обработка на уровне чипа (CMP или многоядерный процессор): интегрирует два или более суперскалярных процессора в одну микросхему, каждый из которых выполняет потоки независимо друг от друга.
  4. Любая комбинация IMT/SMT/CMP

Ключевым фактором, отличающим их, является рассмотрение того, сколько команд может выдать процессор за один цикл и сколько потоков, из которых приходят инструкции.