Simultaneous multithreading [1] ( Eng. Simultaneous Multithreading - SMT ) este una dintre cele două forme principale de multithreading care poate fi implementată în hardware în procesoare. A doua formă este multithreading temporar . Tehnologia multithreadingului simultan permite executarea instrucțiunilor din mai multe fire independente de execuție pe un set de module funcționale ale unui microprocesor superscalar într-un singur ciclu.
Multithreadingul simultan a fost introdus pentru prima dată în lucrările de cercetare de Dean Tullsen în 1995 ( UC San Diego ) [2] [3] [4] [5] .
Primul procesor care implementează multithreading simultan ar fi microprocesorul Alpha 21464 de la DEC , care a fost anunțat în 1999. Procesorul a fost dezvoltat de o echipă condusă de arhitectul șef Joel Emer . Procesorul era single-core, superscalar cu 8 conducte, avea 4 seturi de registre pentru comutarea contextului și putea executa 4 fire simultan. O creștere de două ori a performanței a fost obținută cu doar o creștere de 10% a numărului de elemente logice. În multe feluri, procesorul a întruchipat sugestiile și abordările prezentate în lucrarea lui Dean Tallsen, a cărui lucrare a fost co-autoră de unii membri ai echipei Alpha (Joel Emer și Rebecca Stamm). Cu toate acestea, Alpha 21464 nu a ajuns niciodată pe piață, a căzut victima fuziunilor și achizițiilor corporative [6] .
Astfel, prima implementare de pe piață a multithreading simultan a fost tehnologia Intel Hyper-threading , introdusă în 2002 în procesoarele de server Xeon și Pentium 4 [7] ( microarhitectura NetBurst ).
Când Intel s-a orientat către arhitectura cu microprocesor multi-core , nu a portat tehnologia hyper-threading la procesoare noi pentru a simplifica designul. Ca urmare, primul procesor multi-core cu multi-threading simultan pe fiecare nucleu a fost procesorul IBM POWER5 (2004) [8] . În cele din urmă, Intel a adus Hyper-threading înapoi în procesoarele lor cu arhitectura Nehalem (2008) [9] .
În 2021, o echipă de cercetători, inclusiv Graz Tech University , Georgia Institute of Technology și Lamarr Security Research, un centru de cercetare non-profit, a descoperit o vulnerabilitate în tehnologia SMT implementată în procesoarele AMD Zen , Zen 2 și Zen 3 . Vulnerabilitatea, numită SQUIP [10] (Scheduler Queue Usage via Interference Probing - use of the scheduler queue through interferference analysis ), permite atacatorilor să acceseze date confidențiale, care, în decembrie 2021, au fost raportate de AMD. În timpul demonstrării vulnerabilității, cercetătorii au „crapat” cheia de criptare RSA-4096 [11] [12] . AMD, având atribuit ID-ul vulnerabilității CVE-2021-46778 și un rating de severitate „medie”, a publicat un buletin de consiliere de atenuare în august 2022 [13] .
Performanța microprocesoarelor superscalare este crescută prin executarea simultană a mai multor instrucțiuni într-un singur ciclu, dar este limitată de dependențele dintre instrucțiuni (care limitează posibilitățile de execuție paralelă, în urma cărora nu se poate executa numărul maxim posibil de instrucțiuni în un ciclu) și operații cu latență mare în cadrul unui singur fir de execuție (care duc la apariția unor cicluri în care nu se execută nicio instrucțiune - blocaje de conducte ).
Arhitecturile cu multithreading hardware execută mai multe fire de execuție cu capacitatea de a comuta rapid contextele între ele. O astfel de multithreading „tradițională” ascunde întârzierile de memorie și blocuri funcționale (reducerea numărului de cicluri „vide”), deși instrucțiunile dintr-un fir sunt executate în fiecare ciclu particular. Cu toate acestea, o creștere a numărului de instrucțiuni executabile simultan reduce capacitățile tradiționale de multithreading.
Multithreadingul simultan combină execuția paralelă a instrucțiunilor arhitecturii superscalare cu multithreading hardware. Utilizarea multithreadingului simultan, datorită distribuției dinamice a modulelor funcționale ale procesorului între fire, crește utilizarea procesorului în prezența întârzierilor de memorie și a capacității limitate de execuție paralelă a instrucțiunilor în cadrul unui fir.
Microprocesoarele cu mai multe nuclee din organizația lor sunt cele mai apropiate de microprocesoarele cu multithreading simultan - au mai multe seturi de registre, mai multe module funcționale și superscalaritatea fiecăruia dintre nuclee. Principala diferență dintre cele două este alocarea resurselor - într-un procesor multi-core, fiecare fir primește un număr fix de module funcționale de procesor, în timp ce într-un procesor cu multithreading simultan, distribuția modulelor se modifică în fiecare ciclu. Drept urmare, procesoarele cu multithreading simultan arată performanțe mai mari la sarcina maximă de fire, iar cu o scădere a numărului de fire, performanța scade mai lent în comparație cu un procesor multi-core.
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |