Multithread simultan

Termenul Multithreading simultan ( SMT pe scurt ; germană pentru „operațiune simultană multi-thread”) descrie capacitatea unui microprocesor de a executa mai multe fire simultan folosind conducte separate și / sau seturi de registre suplimentare . Cu aceasta, SMT reprezintă o formă de multi-threading bazată pe hardware .

Cea mai cunoscută formă de SMT în prezent este tehnologia Intel Hyper-Threading (HTT) pentru Pentium 4 , Xeon , Atom și Core i și mai noi, dar procesoarele de la alți producători au și SMT, de ex. B. Cell , Power de la POWER5 și POWER6 de la IBM și seria de procesoare de la AMD de la arhitectura Zen , Ryzen și EPYC.

SMT a fost dezvoltat în anii 1990 de Hank Levy și Susan Eggers , printre alții . Eggers a primit premiul Eckert-Mauchly pentru acest lucru în 2018 . În aprecierea IEEE Computer Society pentru Eggers, SMT a fost identificată drept cea mai importantă contribuție la arhitectura computerelor din ultimii 30 de ani.

funcționalitate

Scopul SMT este de a utiliza resursele unui procesor care sunt deja redundante datorită arhitecturii conductelor chiar mai bine decât este posibil cu arhitectura conductelor. Arhitectura conductei procesează numai comenzile dintr-un fir. Aceasta înseamnă că poate paralela numai comenzi care sunt independente una de cealaltă în cadrul unui thread.

Exemplu de SMT dual

Următoarele etape ale conductei și 2 fire sunt date (IF = Instruction Fetch, ID = Instruction Decoding, OF = Operand Fetch, EX = Execution, WB = Write Back):

conductă
DACĂ ID DE EX WB
Firul 1
        LD R6,adr4
        ADD R4,R6,1
        BEQ R4,R6,j1
        BR j2
j1:   ADD R4,R4,1
j2:   ST R4,adr6
Firul 2
LD R1,adr0
OR R1,R1,0xF0
LD R2,adr1
ADD R3,R1,R2
ST R3,adr2

Out-of-Order-Issue și Out-of-Order-Completion 2 comenzi pe ciclu Dacă există o dependență de date, prima fază EX a comenzii dependente coincide cu faza WB a comenzii anterioare.

2 unități întregi EX1, EX2
1 unitate de salt EX1, EX2
1 unitate de stocare EX1, EX2
1 unitate de încărcare EX1, EX2, EX3 EX4

În cazul salturilor necondiționate, comanda țintă (IF) poate fi preluată după faza ID. În cazul unui salt, salturile condiționale trebuie să proceseze faza EX2 înainte ca instrucțiunea țintă să poată fi încărcată. Dacă saltul nu a fost efectuat, comanda poate fi reluată paralel cu faza EX2.

Baruri 1 2 3 Al 4-lea 5 Al 6-lea Al 7-lea A 8-a 9 10 11 Al 12-lea 13 14 15 16 17 18
LD R6, adr4 DACĂ ID DE EX1 EX2 EX3 EX4 EX5 WB
LD R1, adr0 DACĂ ID DE EX1 EX2 EX3 EX4 EX5 WB
LD R2, adr1 DACĂ ID DE EX1 EX2 EX3 EX4 EX5 WB
ADĂUGAȚI R4, R6.1 DACĂ ID DE EX1 EX2 WB
SAU R1, R1.0xF0 DACĂ ID DE EX1 EX2 WB
BEQ R4, R6, m1 DACĂ ID DE EX1 EX2 WB
ADĂUGAȚI R3, R1, R2 DACĂ ID DE EX1 EX2 WB
BR m2 DACĂ ID DE EX1 EX2 WB
ST R3, adr2 DACĂ ID DE EX1 EX2 WB
j1: ADĂUGAȚI R4, R4.1 DACĂ ID DE EX1 EX2 WB Nici un salt la j1
j2: ST R4, adr6 DACĂ ID DE EX1 EX2 WB

domenii de aplicare

Multithreading-ul simultan este o alternativă ieftină, deși cu performanțe semnificativ mai mici, la procesoarele multicore . Cu toate acestea, performanța unui procesor SMT poate fi utilizată eficient numai dacă mai multe sarcini care urmează să fie procesate în paralel trebuie să fie efectuate de către sistemul de operare , programator sau compilatorul au fost , de asemenea , proiectat în așa fel încât să poată fi în mare parte realizate în paralel. În multe aplicații moderne, acest lucru a fost cazul de câțiva ani.

Delimitare

Prin urmare, ar trebui plasat simultan multithreading între arhitectura conductelor și arhitectura multi-core.

Diferențierea de arhitectura conductelor / supracalaritatea

SMT diferă de arhitectura conductelor prin faptul că permite rularea mai multor fire în același timp. Nu numai unitățile de procesare a datelor ale procesorului precum ALU și FPU sunt reproduse, ci și setul de registre și decodarea instrucțiunilor . În raport cu sistemul, un procesor SMT apare de obicei ca mai multe procesoare independente.

Arhitectura conductei execută instrucțiuni ale aceluiași program în paralel, dacă este posibil. Dacă nu este posibil din cauza dependențelor, acestea sunt executate secvențial. SMT execută comenzile a două sau mai multe fire (de la unul sau mai multe programe) în paralel, dacă este posibil. Dacă nu, se alternează. (Acest lucru poate fi denumit „ multi-filetata superscalarity “.)

Ambele concepte încearcă să utilizeze mai bine diferitele unități ale unui procesor prin paralelizarea procesării comenzilor și astfel procesează programele mai rapid fără a crește frecvența ceasului sau numărul de unități care execută comanda, prin care gradul de paralelizare cu SMT este mai mare sau egal, dar niciodată mai mică decât arhitectura conductei este.

Diferențierea de arhitectura multi-core

SMT diferă de arhitectura multicore prin faptul că procesoarele unui procesor SMT raportat la sistem nu sunt procesoare independente. Cu SMT, procesoarele virtuale partajează accesul la aceleași unități de procesare a datelor ( ALU / FPU ), în timp ce în procesorul multi-core fiecare core are propria unitate de procesare a datelor.

Atât un procesor SMT cu două fire, cât și un procesor dual-core apar sistemului ca două procesoare. Cu toate acestea, un procesor dual core este de fapt două procesoare independente și în consecință rapide, în timp ce SMT este un procesor cu două sau mai multe fire hardware.

Procesoare cu SMT

Vezi si

Dovezi individuale

  1. ^ Susan Eggers Prima femeie care a primit Premiul de arhitectură de computer foarte prestigios , PR Newswire, 5 iunie 2018