Simultaneous multithreading, acronim SMT, este o tehnică de îmbunătățire a eficienței generale a procesoarelor superscalare cu multithreading hardware. SMT permite mai multe fire de execuție independente pentru a utiliza mai bine resursele oferite de arhitecturile moderne de calculatoare.

Multithreading-ul este similar în concept cu multitasking-ul, dar este implementat la nivelul de execuție al firelor în procesoarele superscalare moderne.

În proiectarea procesoarelor, există două modalități de a crește paralelismul pe cip cu mai puține cerințe de resurse:

  1. Tehnica superscalară: care încearcă să sporească paralelismul la nivel de instrucțiuni (ILP) prin executarea mai multor instrucțiuni în același timp (denumită: simultan); prin trimiterea "simultană" a instrucțiunilor (denumită: dispecerizare a instrucțiunilor) către mai multe unități de execuție redundante construite în interiorul procesorului.
  2. Tehnica de multithreading la nivel de cip (CMT): utilizarea paralelismului la nivel de fir (TLP) pentru a executa instrucțiuni din mai multe fire în același timp în cadrul unui cip de procesor.

Există mai multe modalități de a susține mai mult de un fir de execuție în interiorul unui cip, și anume:

  1. Interleaved multithreading (IMT): emiterea intercalată a mai multor instrucțiuni de la diferite fire de execuție, denumită și multithreading temporal. Acesta poate fi împărțit în continuare în multithreading cu granulație fină sau multithreading cu granulație grosieră, în funcție de frecvența emisiunilor intercalate. Multithreading-ul fin emite instrucțiuni pentru diferite fire de execuție după fiecare ciclu, în timp ce multithreading-ul grosier trece la emiterea de instrucțiuni de la un alt fir de execuție doar atunci când firul de execuție curent provoacă anumite evenimente cu latență mare (cum ar fi eroare de pagină etc.). Multithreading-ul cu grad grosier de creștere este mai frecvent pentru o mai mică schimbare de context între fire. În cazul procesoarelor cu un singur pipeline pe nucleu, multithreading-ul intercalat este singura modalitate posibilă, deoarece poate emite doar o singură instrucțiune pe ciclu.
  2. Multithreading simultan (SMT): Emiterea mai multor instrucțiuni de la mai multe fire de execuție într-un singur ciclu. Procesorul trebuie să fie superscalar pentru a face acest lucru.
  3. Multiprocesare la nivel de cip (CMP sau procesor multi-core): integrează două sau mai multe procesoare superscalare într-un singur cip, fiecare dintre ele executând fire de execuție în mod independent.
  4. Orice combinație de IMT/SMT/CMP

Factorul cheie pentru a le distinge este de a observa câte instrucțiuni poate emite procesorul într-un ciclu și câte fire de execuție din care provin aceste instrucțiuni.