Временна́я многопоточность (; суперпоточность ) — одна из двух главных аппаратно реализуемых в процессорах форм многопоточности (наряду с одновременной многопоточностью). При временной многопоточности в каждый данный момент исполняется только один поток, а при одновременной многопоточности — несколько.
Основные подходы к реализации — крупнозернистая многопоточность (, также блокирующая многопточность) и мелкозернистая многопоточность (). В первом варианте в конвейере процессора исполняется только один поток некоторый продолжительный промежуток времени, в момент, когда этому потоку требуются например данные из памяти, а данные отсутствуют в кэше, процессор сохраняет состояние потока и переключается автоматически на другой поток, пока тому тоже не понадобится что-то из памяти. Другой причиной переключения на другой поток в крупнозернистой многопточности может являться заданное ограничение на количество тактов процессора. Таким образом конвейер процессора не простаивает и почти всегда занят исполнением кода того или иного потока. При мелкозернистой многопоточности процессор переключается между потоками программы при каждом такте, что гарантирует исполнение всех потоков, приписанных к процессору. Выполнение каждого конкретного потока замедляется, но общая пропускная способность процессора — увеличивается.
Первым процессором с крупнозернистой многопоточностью считается выпущенный в 1998 году корпорацией IPM IBM RS64-II (Northstar), поддерживавший попеременное выполнение 2 потоков; среди других крупнозернистых процессоров Intel Montecito (2006) с ядрами на основе Itanium 2, Fujitsu SPARC64 VI (2007).
Мелкозернистая многопточность реализовалась, в частности, в процессорах Denelcor HEP (1982, 8 потоков), Cray/Tera MTA (1988, 128 потоков), Sun UltraSPARC T1 (2005, 4 потока на ядро), UltraSPARC T2 (2008), Oracle SPARC T3 (2010, 8 потоков), SPARC M7 (2015, 8 потоков).
На скалярном процессоре тонкозернистая многопоточность фактически неотличима от одновременной. Для реализации одновременной многопоточности процессору требуется суперскалярный конвейер, и чем больше потоков одновременно планируется исполнять, тем выше должна быть суперскалярность конвейера, что повышает сложность процессорной логики.
Примечания
Литература (1999) Processor Architecture — From Dataflow to Superscalar and Beyond (ISBN 3-540-64798-8) — Глава 5: Future Processors to use Fine-Grain Parallelism и Глава 6: Future Processors to use Coarse-Grain Parallelism
(2008) OpenSPARC Internals (ISBN 0-557-01974-5)
— Глава 3.12 Multithreading: Exploiting Thread-Level Parallelism to Improve Uniprocessor Throughput
— стр.1223, статья Multi-Threaded Processors
Ссылки What is Simultaneous Multithreading — описание проекта SMT для процессора Alpha 21464 (EV8), в котором дается хорошее описание понятий всех видов аппаратной многопоточности A Survey of Processors with Explicit Multithreading, ACM, March 2003, by Theo Ungerer, Borut Robi and Jurij Silc