Multithreading simultan, akronim SMT, adalah teknik untuk meningkatkan efisiensi keseluruhan CPU superskalar dengan Hardware multithreading. SMT mengizinkan beberapa thread eksekusi independen untuk memanfaatkan sumber daya yang disediakan oleh arsitektur komputer modern dengan lebih baik.

Multithreading mirip dengan konsep multitasking tetapi diimplementasikan pada tingkat eksekusi thread dalam prosesor superskalar modern.

Dalam desain prosesor, ada dua cara untuk meningkatkan paralelisme on-chip dengan kebutuhan sumber daya yang lebih sedikit:

  1. Teknik Superscalar: yang mencoba meningkatkan paralelisme tingkat Instruksi (ILP) dengan mengeksekusi beberapa instruksi pada saat yang sama (diistilahkan: secara bersamaan); dengan "secara bersamaan" mengirimkan instruksi (diistilahkan: instruction dispatching) ke beberapa unit eksekusi yang berlebihan yang dibangun di dalam prosesor.
  2. Teknik Chip-level multithreading (CMT): menggunakan Thread level parallelism (TLP) untuk mengeksekusi instruksi dari beberapa thread dalam satu chip prosesor pada saat yang bersamaan.

Ada banyak cara untuk mendukung lebih dari satu thread di dalam chip, yaitu:

  1. Multithreading yang disisipkan (IMT): Interleaved issue dari beberapa instruksi dari thread yang berbeda, juga disebut sebagai Temporal multithreading. Hal ini dapat dibagi lagi menjadi fine-grain multithreading atau coarse-grain multithreading tergantung pada frekuensi masalah interleaved. Fine-grain multithreading mengeluarkan instruksi untuk thread yang berbeda setelah setiap siklus, sementara coarse-grain multithreading hanya beralih untuk mengeluarkan instruksi dari thread lain ketika thread yang sedang dieksekusi saat ini menyebabkan beberapa peristiwa latensi yang panjang (seperti kesalahan halaman, dll.). Multithreading coarse-grain lebih umum untuk peralihan konteks yang lebih sedikit di antara thread. Untuk prosesor dengan satu pipeline per core, interleaved multithreading adalah satu-satunya cara yang memungkinkan, karena hanya dapat mengeluarkan hingga satu instruksi per siklus.
  2. Multithreading simultan (SMT): Mengeluarkan beberapa instruksi dari beberapa thread dalam satu siklus. Prosesor harus superskalar untuk melakukannya.
  3. Chip-level multiprocessing (CMP atau Multi-core processor): mengintegrasikan dua atau lebih prosesor superskalar ke dalam satu chip, masing-masing mengeksekusi thread secara independen.
  4. Kombinasi apa pun dari IMT/SMT/CMP

Faktor kunci untuk membedakannya adalah dengan melihat berapa banyak instruksi yang dapat dikeluarkan prosesor dalam satu siklus dan berapa banyak thread dari mana instruksi tersebut berasal.