Il multithreading simultaneo, acronimo SMT, è una tecnica per migliorare l'efficienza complessiva delle CPU superscalari con il multithreading hardware. SMT permette di eseguire più thread indipendenti e multipli per utilizzare al meglio le risorse fornite dalle moderne architetture informatiche.

Il multithreading è simile per concezione al multitasking ma è implementato a livello di thread di esecuzione nei moderni processori superscalari.

Nella progettazione dei processori, ci sono due modi per aumentare il parallelismo su chip con minori esigenze di risorse:

  1. Tecnica superscalare: che cerca di aumentare il parallelismo del livello di istruzione (ILP) eseguendo più istruzioni contemporaneamente (detto: simultaneamente); con istruzioni di dispacciamento "simultaneamente" (detto: dispacciamento di istruzioni) a più unità di esecuzione ridondanti costruite all'interno del processore.
  2. Tecnica di multithreading a livello di chip (CMT): utilizzando il parallelismo a livello di thread (TLP) per eseguire contemporaneamente istruzioni da più thread all'interno di un chip del processore.

Ci sono molti modi per sostenere più di un filo all'interno di un chip, vale a dire:

  1. Multithreading interfogliato (IMT) : emissione interlacciata di istruzioni multiple da differenti filettature, detta anche Multithreading temporale. Può essere ulteriormente suddivisa in multithreading a grana fine o multithreading a grana grossa a seconda della frequenza delle emissioni interleaved. Il multithreading a grana fine emette istruzioni per diversi thread dopo ogni ciclo, mentre il multithreading a grana grossa passa ad emettere istruzioni da un altro thread solo quando il thread in esecuzione provoca alcuni lunghi eventi di latenza (come un errore di pagina ecc.). Il multithreading a grana grossa è più comune per un minore cambio di contesto tra i thread. Per i processori con una pipeline per nucleo, il multithreading interleaved è l'unico modo possibile, perché può emettere solo fino ad un'istruzione per ciclo.
  2. Multithreading simultaneo (SMT): Rilasciare più istruzioni da più filettature in un unico ciclo. Il processore deve essere superscalare per farlo.
  3. Chip-level multiprocessing (CMP o Multi-core processor): integra due o più processori superscalari in un unico chip, ognuno dei quali esegue i thread in modo indipendente.
  4. Qualsiasi combinazione di IMT/SMT/CMP

Il fattore chiave per distinguerli è quello di guardare quante istruzioni il processore può emettere in un ciclo e quanti thread da cui provengono le istruzioni.