Multithreading simultan

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 17 martie 2022; verificările necesită 2 modificări .

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.

Istoric și implementări

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] .

Critica

Î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] .

Comparație cu alte tehnologii

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.

Note

  1. Two in one //Computerra (11/09/2001) . Consultat la 21 noiembrie 2016. Arhivat din original pe 21 noiembrie 2016.
  2. Proiect Multithreading simultan . Preluat la 31 mai 2017. Arhivat din original la 1 iunie 2017.
  3. Publicațiile lui Dean Tullsen . Consultat la 4 iunie 2017. Arhivat din original pe 9 iunie 2017.
  4. Vezi Dean M. Tullsen, Susan J. Eggers și Henry M. Levy. Multithreading simultan: Maximizarea paralelismului pe cip. În Proceedings of the International Symposium on Computer Architecture, iunie 1995
  5. teză de doctorat Simultaneous Multithreading, DM Tullsen, Ph.D. Teză, Universitatea din Washington, august 1996.
  6. Nemirovsky Tullsen, 2013 , p. 72.
  7. Nemirovsky Tullsen, 2013 , p. 74.
  8. Nemirovsky Tullsen, 2013 , p. 34.
  9. Nemirovsky Tullsen, 2013 , p. 81.
  10. SQUIP: Exploatarea cozii de planificare Contention Side Channel PDF
  11. Anton Shilov. O nouă vulnerabilitate afectează toate procesoarele AMD Zen: ar putea fi necesar ca threadingul să fie  dezactivat . Tom's Hardware (11 august 2022). Preluat: 12 august 2022.
  12. Vladimir Fetisov. S-a dovedit că tehnologia SMT din procesoarele Ryzen și EPYC vă permite să furați date confidențiale . 3DNews (11 august 2022). Preluat: 12 august 2022.
  13. ↑ Execution Unit Scheduler Contention Side-Channel Vulnerability pe procesoarele AMD  . AMD (8 septembrie 2022). Preluat: 12 august 2022.

Literatură

Link -uri