Un singur flux de instrucțiuni |
Fluxuri de instrucțiuni multiple | |
---|---|---|
Flux de date unic (date unice) |
SISD (OKOD) |
MISD (MISD) |
Fluxuri de date multiple |
SIMD (JMD) |
MIMD (MKMD) |
O clasificare generală a arhitecturilor de calculatoare bazată pe prezența paralelismului în fluxurile de comandă și date a fost propusă de Michael Flynn în 1966 [1] și extinsă în 1972 [2] . Întreaga varietate de arhitecturi de computer din această taxonomie este redusă la patru clase:
Reprezentanții tipici ai SIMD sunt arhitecturile vectoriale. O serie de cercetători includ computere transportoare în clasa MISD , dar aceasta nu a găsit recunoașterea finală, așa că putem presupune că sisteme reale - reprezentanți ai acestei clase nu există. Clasa MIMD include sisteme multiprocesoare în care procesoarele procesează mai multe fluxuri de date.
Raportul dintre anumite mașini și o anumită clasă depinde în mare măsură de punctul de vedere al cercetătorului. Deci, mașinile transportoare pot fi atribuite clasei SISD (pipeline - un singur procesor) și clasei SIMD (flux de date vectoriale cu un procesor pipeline) și clasei MISD (multe procesoare pipeline procesează secvențial un flux de date), și la clasa MIMD - ca execuție a unei secvențe de comenzi diferite (operații ale etapelor pipeline) pe un flux de date scalare multiplu (vector).
Există două tipuri de mașini (procesoare) care execută mai multe instrucțiuni într-un singur ciclu de mașină:
Mașinile superscalare pot executa un număr variabil de instrucțiuni pe ciclu de ceas, iar conductele lor pot fi programate fie static de compilator, fie de hardware de optimizare dinamică. Mașinile superscalare exploatează paralelismul la nivel de instrucțiuni prin trimiterea mai multor instrucțiuni dintr-un flux normal de instrucțiuni către mai multe unități funcționale.
În plus, pentru a elimina restricțiile privind execuția secvențială a comenzilor, aceste mașini folosesc mecanismele de emitere în neregulă și de finalizare în neregulă a comenzilor ( engleză OoO, Out of Order execution ), predicție de ramuri ( engleză. predicție de ramuri ) , cache-urile adreselor țintă ale tranzițiilor și comenzile de execuție condiționată (prin presupunere).
Spre deosebire de mașinile superscalare, o mașină VLIW execută un număr fix de instrucțiuni pe ciclu de mașină, care sunt fie formatate ca o singură instrucțiune mare, fie ca un lot de instrucțiuni cu format fix. Programarea mașinii VLIW este întotdeauna făcută de compilator. Într-o mașină superscalar tipică, hardware-ul poate emite de la una la opt instrucțiuni pe ciclu de ceas. De obicei, aceste instrucțiuni trebuie să fie independente și supuse anumitor restricții, cum ar fi faptul că nu poate fi emisă mai mult de o instrucțiune de acces la memorie pe ciclu de ceas. Dacă orice comandă din fluxul de comandă executabil este dependentă din punct de vedere logic sau nu satisface criteriile de emitere, vor fi emise pentru execuție numai comenzile premergătoare celei date. Prin urmare, viteza de emitere a instrucțiunilor în mașinile superscalare este variabilă. Acest lucru le diferențiază de mașinile VLIW, unde compilatorul (și, prin urmare, programatorul compilatorului) este singurul responsabil pentru generarea unui lot de instrucțiuni care pot fi emise simultan, iar hardware-ul nu ia în mod dinamic nicio decizie cu privire la emiterea mai multor instrucțiuni.
Utilizarea VLIW duce în cele mai multe cazuri la umplerea rapidă a unei cantități mici de memorie pe cip cu comenzi NOP (fără operare), care sunt destinate acelor dispozitive care nu vor fi implicate în ciclul curent. Un defect major a fost găsit în arhitecturile VLIW existente, care a fost eliminat prin împărțirea cuvintelor lungi în altele mai mici care sunt trimise către fiecare dispozitiv în paralel. Procesarea multor instrucțiuni de către dispozitive independente simultan este principala caracteristică a arhitecturii procesorului superscalar.
Clasificarea mașinilor cu arhitectură MIMD:
Clasa de arhitecturi pipeline (conform Hockney) include mașini cu o unitate de procesare pipeline care funcționează în modul de partajare a timpului pentru fire separate. Mașini în care fiecare fir este procesat de propriul dispozitiv, Hockney numit comutabil. Clasa mașinilor comutate include mașini în care fiecare procesor poate comunica cu fiecare, implementate cu ajutorul comutatoarelor - mașini cu memorie distribuită. Dacă memoria este o resursă partajată, mașina se numește memorie partajată. Când a luat în considerare mașinile cu o structură de rețea, Hockney a crezut că toate au memorie distribuită. El a efectuat o clasificare suplimentară în conformitate cu topologia rețelei.
În 1972, Feng (T. Feng) a propus să clasifice sistemele de calcul pe baza a două caracteristici simple. Primul este numărul n de biți dintr-un cuvânt de mașină care sunt procesați în paralel la executarea instrucțiunilor de mașină. În aproape toate computerele moderne, acest număr este același cu lungimea unui cuvânt de mașină . A doua caracteristică este egală cu numărul de cuvinte m procesate simultan de acest CS. Cu o ușoară modificare a terminologiei, funcționarea CS poate fi reprezentată ca procesare paralelă a n straturi de biți, pe fiecare dintre care m biți sunt convertiți independent. Fiecare sistem de calcul poate fi descris printr-o pereche de numere (n, m). Produsul P = nxm determină caracteristica integrală a potențialului de paralelism al arhitecturii, pe care Feng l-a numit gradul maxim de paralelism CS.
Clasificarea se bazează pe descrierea explicită făcută de V. Hendler a posibilităților de procesare paralelă și pipeline a informațiilor de către un sistem informatic. Clasificarea propusă se bazează pe diferența dintre trei niveluri de prelucrare a datelor în timpul execuției programului:
O astfel de schemă de nivelare presupune că sistemul informatic include un anumit număr de procesoare, fiecare cu propria sa unitate de control. Dacă de ceva timp nu luăm în considerare posibilitatea canalizării, atunci numărul de dispozitive de control k, numărul de unități logice aritmetice d din fiecare dispozitiv de control și numărul de circuite logice elementare w din fiecare ALU vor constitui un triplu pentru a descrie acest sistem informatic C: t(C) = (k, d, w).
În 1988, L. Snyder a propus o nouă abordare pentru a descrie arhitecturile sistemelor de calcul paralele care se încadrează în clasa SIMD a sistematicii lui Flynn. Ideea principală este de a evidenția etapele de eșantionare și execuție directă în comenzile și fluxurile de date.
Clasificarea Skillicorn (1989) a fost o altă extensie a clasificării lui Flynn. Arhitectura oricărui computer din clasificarea lui Skillicorn este considerată ca o combinație a patru componente abstracte: procesoare de instrucțiuni (Procesor de instrucțiuni - interpret de comenzi, poate să nu fie prezente în sistem), procesoare de date (Procesor de date - convertor de date), ierarhie de memorie (Procesor de instrucțiuni) Memory, Data Memory - memoria programului și date), comutatoare (conectarea procesoarelor și memoriei). Comutatoarele sunt de patru tipuri - „1-1” (conectați o pereche de dispozitive), „nn” (conectează fiecare dispozitiv dintr-un set de dispozitive cu dispozitivul corespunzător dintr-un alt set, adică fixează o conexiune pereche), „1 -n" (comutatorul conectează un dispozitiv dedicat cu toate dispozitivele funcționale dintr-un anumit set), "nxn" (conectarea oricărui dispozitiv dintr-un set cu orice dispozitiv al altui set). Clasificarea lui Skillicorn se bazează pe următoarele opt caracteristici:
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |