Sisteme de calcul paralele

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

Sistemele de calcul paralele  sunt sisteme de calcul fizice, precum și sisteme software care implementează într-un fel sau altul procesarea paralelă a datelor pe multe noduri de calcul. [unu]

De exemplu, pentru a sorta rapid o matrice pe o mașină cu două procesoare, puteți împărți matricea în jumătate și sortați fiecare jumătate pe un procesor separat. Sortarea fiecărei jumătăți poate dura o perioadă diferită de timp, așa că este necesară sincronizarea .

Ideea paralelizării calculelor se bazează pe faptul că majoritatea sarcinilor pot fi împărțite într-un set de sarcini mai mici care pot fi rezolvate simultan. De obicei, calculul paralel necesită coordonarea acțiunilor. Calculul paralel vine sub mai multe forme: paralelism la nivel de biți, paralelism la nivel de instrucțiune, paralelism de date și paralelism de sarcini. Calculul paralel a fost folosit de mulți ani în principal în calculul de înaltă performanță, dar în ultima perioadă s-a înregistrat o creștere a interesului datorită existenței unor restricții fizice privind creșterea frecvenței de ceas a procesoarelor. Calculul paralel a devenit paradigma dominantă în arhitectura computerelor , mai ales sub formă de procesoare multi-core . [2]

Scrierea de programe pentru sisteme paralele este mai dificilă decât pentru sistemele secvenţiale [3] , deoarece conflictul de resurse reprezintă o nouă clasă de potenţiale erori software ( bug-uri ), printre care condiţia de cursă este cea mai comună. Comunicarea și sincronizarea între procese reprezintă o mare barieră în obținerea unor performanțe ridicate în sisteme paralele. În ultimii ani, a început să fie luată în considerare și problema consumului de energie de către calculatoarele paralele. [4] Natura creșterii vitezei programului ca urmare a paralelizării este explicată de legile lui Amdahl și Gustavson .

Tipuri de paralelism

Paralelism la nivel de biți

Această formă de paralelism se bazează pe creșterea dimensiunii unui cuvânt mașină . Mărirea dimensiunii cuvântului mașinii reduce numărul de operații necesare procesorului pentru a opera pe variabile a căror dimensiune este mai mare decât dimensiunea cuvântului mașinii. De exemplu: pe un procesor de 8 biți, trebuie să adăugați două numere întregi de 16 biți. Pentru a face acest lucru, mai întâi trebuie să adăugați cei 8 biți inferiori ai numerelor, apoi să adăugați cei 8 biți mai mari și să adăugați valoarea indicatorului de transport la rezultatul adunării lor . Un total de 3 instrucțiuni. Cu un procesor pe 16 biți, puteți efectua această operație cu o singură instrucțiune.

Din punct de vedere istoric, microprocesoarele pe 4 biți au fost înlocuite cu cele pe 8 biți, apoi au apărut cele pe 16 și 32 de biți. Procesoarele pe 32 de biți au fost mult timp standardul în calculul de zi cu zi. Odată cu apariția tehnologiei x86-64 , procesoarele pe 64 de biți au început să fie utilizate în aceste scopuri.

Paralelism la nivel de instrucție

Un program de calculator este în esență un flux de instrucțiuni executate de un procesor. Dar puteți schimba ordinea acestor instrucțiuni, le puteți distribui în grupuri care vor fi executate în paralel, fără a modifica rezultatul întregului program. Această tehnică este cunoscută sub numele de paralelism la nivel de instrucție. Progresele în dezvoltarea paralelismului la nivel de instruire în arhitectura computerelor au avut loc de la mijlocul anilor 1980 până la mijlocul anilor 1990.

Procesoarele moderne au o conductă de instrucțiuni în mai multe etape . Fiecare etapă a conductei corespunde unei anumite acțiuni efectuate de procesor în această instrucțiune în această etapă. Un procesor cu N etape de conductă poate avea simultan până la N instrucțiuni diferite la diferite niveluri de completitudine. Un exemplu clasic de procesor pipeline este un procesor RISC cu 5 etape: preluarea unei instrucțiuni din memorie (IF), decodarea unei instrucțiuni (ID), executarea unei instrucțiuni (EX), accesarea memoriei (MEM), scrierea rezultatului în registre (WB). ). Procesorul Pentium 4 are o conductă de 31 de etape [5] .

Unele procesoare, pe lângă utilizarea conductelor, au capacitatea de a executa mai multe instrucțiuni în același timp, ceea ce oferă paralelism suplimentar la nivel de instrucțiuni. Este posibil să se implementeze această metodă folosind superscalar , când instrucțiunile pot fi grupate împreună pentru execuție paralelă (dacă nu au dependențe de date (dependențe de date)). Sunt posibile și implementări care utilizează paralelismul explicit la nivel de instrucțiune: VLIW și EPIC .

Paralelismul datelor

Ideea principală a abordării bazate pe paralelismul datelor este că o singură operație este efectuată imediat pe toate elementele matricei de date. Diferite fragmente ale unei astfel de matrice sunt procesate pe un procesor vectorial sau pe diferite procesoare ale unei mașini paralele. Programul este responsabil pentru distribuirea datelor între procesatori. Vectorizarea sau paralelizarea în acest caz se realizează cel mai adesea deja în etapa de compilare - traducerea codului sursă al programului în instrucțiuni ale mașinii. Rolul programatorului în acest caz se rezumă de obicei la setarea vectorului compilatorului sau a setărilor de optimizare paralelă, a directivelor de compilare paralelă și la utilizarea limbajelor specializate pentru calculul paralel.

Paralelismul sarcinilor

Un stil de programare bazat pe paralelismul sarcinilor implică faptul că o sarcină de calcul este împărțită în mai multe subsarcini relativ independente și fiecare procesor este încărcat de propria sa subsarcină.

Sisteme de operare distribuite

Un sistem de operare distribuit, prin alocarea dinamică și automată a muncii diferitelor mașini din sistem pentru procesare, forțează un set de mașini conectate în rețea să proceseze informații în paralel. Utilizatorul unui sistem de operare distribuit, în general, nu are cunoștințe despre mașina pe care își desfășoară activitatea. [6]

Un sistem de operare distribuit există ca un singur sistem de operare într-un sistem de calcul. Fiecare computer dintr-o rețea care rulează un sistem de operare distribuit îndeplinește o parte din funcțiile acestui sistem de operare global. Un sistem de operare distribuit reunește toate computerele dintr-o rețea în sensul că acestea lucrează în strânsă cooperare între ele pentru a utiliza eficient toate resursele unei rețele de calculatoare.

Istorie

Lucrările în direcția creării de sisteme de calcul paralele în SUA și URSS au fost intense încă din anii 1960 . Dezvoltarea tehnologiei paralele de procesare a datelor și crearea de sisteme electronice de calcul paralele în Statele Unite , prin ordinul Agenției SUA pentru Proiecte de Cercetare Avansată a Apărării, a fost realizată de departamentele de cercetare ale companiilor și universităților: [7]

Lucrarea a fost supravegheată de Biroul de calcul și procesare a informațiilor ARPA de la Pentagon , Virginia , și de Centrul de Cercetare al Forțelor Aeriene ale SUA din Roma , New York .

În Uniunea Sovietică , lucrări de natură similară au fost efectuate de instituții din cadrul Comitetului de Stat pentru Radioelectronica (transformat ulterior în Ministerul Industriei Radio ), Ministerul Apărării și Academia de Științe a URSS : [8]

Creierul biologic ca un computer masiv paralel

La începutul anilor 1970, la Laboratorul de Inteligență Artificială al MIT, Marvin Minsky și Seymour Papert au început să dezvolte o teorie pe care au numit-o „ Societatea Minții ”, care privea creierul biologic ca pe o mașină de calcul masiv paralelă . În 1986, Minsky a publicat cartea populară The Society of Mind, în care susține că „mintea creierului este formată din mulți agenți mici care nu au o minte proprie”. [9] Teoria a încercat să explice modul în care ceea ce numim inteligență poate fi produsul interacțiunii unor părți simple numite agenți, care sunt ei înșiși neinteligenti. Minsky a susținut că cea mai mare sursă de idei despre teoria „societății minții” a fost munca sa în încercarea de a construi o mașină care să asambleze blocuri pentru copii folosind un braț robot, o cameră video și un computer. [10] Cartea de teorie a Societății Minții a fost scrisă pentru publicul larg, spre deosebire de majoritatea lucrărilor publicate anterior de Minsky.

Modele similare (care consideră, de asemenea, creierul biologic ca o mașină de calcul masiv paralelă, adică consideră creierul ca fiind format din mulți agenți independenți sau semi-independenți) au mai descris:

Vezi și

Note

  1. Almasi, GS și A. Gottlieb (1989). Calcul extrem de paralel . Editorii Benjamin-Cummings, Redwood City, CA.
  2. Krste Asanovic și colab. The Landscape of Parallel Computing Research: A View from Berkeley Arhivat 29 februarie 2008 la Wayback Machine . Universitatea din California, Berkeley. Raport tehnic nr. UCB/EECS-2006-183. 18 decembrie 2006: „Veche [înțelepciune convențională]: creșterea frecvenței ceasului este metoda principală de îmbunătățire a performanței procesorului. Nouă [înțelepciune convențională]: Creșterea paralelismului este metoda principală de îmbunătățire a performanței procesorului... Chiar și reprezentanții Intel, o companie asociată în general cu poziția „viteză mai mare a ceasului este mai bună”, au avertizat că abordările tradiționale de maximizare a performanței prin maximizarea vitezei de ceas au au fost împinși la limita lor.”
  3. David A. Patterson și John L. Hennessy . Computer Organization and Design (Ediția a doua) Morgan Kaufmann Publishers, 1998. ISBN 1-55860-428-6 , pg 715
  4. Asanovic et al: Vechi [înțelepciunea convențională]: Puterea este gratuită, dar tranzistorii sunt scumpi. Noua [înțelepciune convențională] este [că] puterea este scumpă, dar tranzistorii sunt „liberi”.
  5. CUNOAȘTE INTUIT | Prelegere | Organizarea în conductă a microprocesorului . Preluat la 27 iunie 2017. Arhivat din original la 28 mai 2017.
  6. Andrew Tanenbaum , Martin van Steen. sisteme distribuite. Principles and Paradigms = Andrew S. Tanenbaum, Maarten van Steen. „Sisteme distribuite. Principii și paradigme”. - Sankt Petersburg: Piter, 2003. - 877 p. — (Clasice ale informaticii). - ISBN 5-272-00053-6 .
  7. Declarația dr. Stephen J. Lukasik, director, Agenția pentru proiecte de cercetare avansată . / Credite Departamentul Apărării pentru anul fiscal 1972. - 30 aprilie 1971. - P. 741 - 1090 p.
  8. Tihonov S. G. Întreprinderile de apărare ale URSS și Rusiei: în 2 volume  - M .  : TOM, 2010. - T. 2. - S. 47-48, 82-83. — 608 p. - 1000 de exemplare.  - ISBN 978-5-903603-03-9 .
  9. Minsky, Marvin. Societatea Minții  (neopr.) . - New York: Simon & Schuster , 1986. - p  . 17 . - ISBN 0-671-60740-5 .
  10. Minsky, Marvin. Societatea Minții  (neopr.) . - New York: Simon & Schuster , 1986. - p  . 29 . - ISBN 0-671-60740-5 .
  11. Blakeslee, Thomas Dincolo de Mintea Conștientă. Deblocarea secretelor sinelui  (engleză) . - 1996. - P.  6 -7.
  12. Gazzaniga, Michael ; LeDoux, Joseph Mintea Integrată  (neopr.) . - 1978. - S.  132 -161.
  13. Gazzaniga, Michael . Creierul social. Descoperirea rețelelor  minții . - 1985. - P.  77 -79.
  14. Ornstein, Robert Evoluția conștiinței: Originile modului în care gândim  (engleză) . - 1992. - P.  2 .
  15. Hilgard, ErnestConștiință divizată: controale multiple în gândirea și acțiuneaumană  . - New York: Wiley, 1977. - ISBN 978-0-471-39602-4 .
  16. Hilgard, ErnestConștiință divizată: controale multiple în gândirea și acțiunea umană (ediție extinsă)  (engleză) . - New York: Wiley, 1986. - ISBN 0-471-80572-6 .
  17. Kaku, Michio . Viitorul minții: căutarea științifică pentru a înțelege, a îmbunătăți și a împuternici  mintea . — 2014.
  18. Uspensky, Peter . Capitolul 3 // În căutarea miraculosului. Fragmente din doctrina necunoscută . - 1992. - S. 72-83.
  19. Site-ul oficial al Neurocluster Model of the Brain . Preluat la 22 iulie 2017. Arhivat din original la 21 iulie 2017.

Link -uri