Sisteme paralele. Prelucrarea paralelă a datelor pe un computer

„Paralelismul ca metodă de prelucrare paralelă a datelor”

Kotovsk2010

Introducere

Dezvoltarea rapidă a științei și pătrunderea gândirii umane în domenii din ce în ce mai noi, împreună cu soluționarea problemelor puse anterior, dă naștere constant unui flux de întrebări și ridică sarcini noi, de obicei mai complexe. La vremea primelor calculatoare, se părea că creșterea vitezei lor de 100 de ori ar rezolva majoritatea problemelor, dar performanța gigaflop a supercalculatoarelor moderne de astăzi este în mod clar insuficientă pentru mulți oameni de știință. Electrică și hidrodinamică, explorare seismică și prognoză meteo, modelare compuși chimici, cercetare realitate virtuala- nu departe lista plina domenii ale științei ai căror cercetători profită de orice ocazie pentru a-și accelera programele.

Cea mai promițătoare și dinamică direcție pentru creșterea vitezei soluției probleme aplicate este implementare pe scară largă idei de paralelism în operarea sistemelor de calcul. Până în prezent, sute au fost proiectate și testate diverse calculatoare, folosind unul sau altul tip de procesare paralelă a datelor în arhitectura lor. În literatura științifică și documentatie tehnica puteți găsi mai mult de o duzină de nume diferite care caracterizează doar principii generale funcționarea mașinilor paralele: vector-pipeline, masiv paralel, calculatoare cu un cuvânt de comandă larg, matrice sistolice, hipercuburi, procesoare și multiprocesoare speciale, calculatoare ierarhice și cluster, flux de date, calculatoare matrice și multe altele. Dacă, pentru a completa descrierea, adăugăm date despre acestea parametri importanti, cum ar fi organizarea memoriei, topologia de comunicare între procesoare, sincronizarea muncii dispozitive individuale sau metoda de executare operatii aritmetice, apoi numărul diverse arhitecturi va deveni complet nevăzut.

Încercările de sistematizare a întregului set de arhitecturi au început după ce M. Flynn a publicat prima versiune a clasificării sistemelor de calcul la sfârșitul anilor ’60 și continuă în mod continuu până în zilele noastre. Clasificarea este foarte importantă pentru o mai bună înțelegere a studiului domeniul subiectului, cu toate acestea, găsirea unei clasificări de succes poate avea întreaga linie consecințe semnificative.

Principala întrebare a clasificării - ce să-și formeze baza - poate fi rezolvată diferit, în funcție de cine această clasificare este creată și ce problemă se urmărește să rezolve. Astfel, împărțirea frecvent utilizată a calculatoarelor în calculatoare personale, stații de lucru, mini-calculatoare, calculatoare mainframe, mini-super-computere și super-calculatoare, poate ne permite să estimăm aproximativ costul unui computer. Cu toate acestea, nu îl aduce pe utilizator mai aproape de înțelegerea a ceea ce i se cere pentru a scrie un program care funcționează la limita performanței unui computer paralel, adică. pentru ce a decis să-l folosească.

Clasificarea ar trebui să ajute să înțelegem ce este fiecare arhitectură, cum sunt interconectate și ce trebuie luat în considerare pentru a scrie efectiv programe eficiente sau ce clasă de arhitecturi ar trebui vizată pentru a rezolva clasa necesară de probleme. În același timp, o clasificare de succes ar putea sugera moduri posibileîmbunătățirea computerelor și în acest sens ar trebui să fie destul de semnificativă. Este greu de așteptat să găsim „puncte oarbe” non-triviale, de exemplu, în clasificarea după cost, dar gândirea la o posibilă taxonomie în ceea ce privește simplitatea și fabricabilitatea programării poate fi extrem de utilă în determinarea direcțiilor pentru căutarea de noi arhitecturi.

1. Paralel sisteme de calcul

Sistemele de calcul paralele sunt computere fizice, precum și sisteme software, implementând într-un fel sau altul procesarea paralelă a datelor pe multe noduri de calcul.

Ideea calculului paralel se bazează pe ideea că majoritatea problemelor pot fi împărțite într-un set de probleme mai mici care pot fi rezolvate simultan. De obicei, calculul paralel necesită coordonare. 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 În ultima vreme interesul pentru ele a crescut datorită existenţei limitări fizice pentru crestere frecvența ceasului procesoare. Calculul paralel a devenit o paradigmă dominantă în arhitectura computerelor, în principal sub formă de procesoare multi-core.

Scrierea de programe pentru sisteme paralele este mai dificilă decât pentru cele secvențiale, deoarece concurența pentru resurse reprezintă noua clasa erori potentiale in software(bug-uri), dintre care condiția de rasă este cea mai frecventă. Comunicarea și sincronizarea între procese reprezintă o barieră mare în calea obținerii performanta ridicata sisteme paralele. ÎN anul trecut a început să ia în considerare și problema consumului de energie electrică calculatoare paralele. Natura creșterii vitezei programului ca urmare a paralelizării este explicată de legea lui Amdahl.

Dacă calculul nu implică acțiuni ciclice (repetate), atunci N module de calcul nu vor lucra niciodată de N ori mai repede decât un singur modul de calcul.

De exemplu, pentru sortare rapida matrice pe o mașină cu procesor dublu, 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 timp diferit, deci sincronizarea este necesară.

2. Tipuri de paralelism

2.1 Paralelism la nivel de biți

Această formă de paralelism se bazează pe creșterea dimensiunii cuvântului mașină. Mărirea dimensiunii cuvântului mașinii reduce numărul de operații cerute de procesor pentru a efectua acțiuni asupra variabilelor a căror dimensiune depășește dimensiunea unui cuvânt de mașină. 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, trebuie mai întâi să adăugați cei 8 biți inferiori ai numerelor, apoi să adăugați cei 8 biți superiori și să adăugați valoarea indicatorului de transport la rezultatul adunării lor. În total 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 microprocesoare pe 8 biți, urmate de microprocesoare pe 16 și 32 de biți. procesoare pe 32 de biți pentru o lungă perioadă de timp au fost standardul în calculul de zi cu zi. Odată cu apariția tehnologiei x86–64, procesoarele pe 64 de biți au început să fie folosite în aceste scopuri.

2.2 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 transportorului corespunde acțiune specifică executabil de procesor în această instrucțiune în această etapă. Un procesor cu N etape pipeline poate avea simultan până la N diverse instructiuni pe la diferite niveluri completitudine. Un exemplu clasic de procesor pipeline este un procesor RISC cu 5 etape: preluarea instrucțiunii (IF), decodarea instrucțiunii (ID), executarea instrucțiunii (EX), accesul la memorie (MEM), rezultatul scrierii în registre (WB). procesor Pentium 4 are un transportor cu 35 de trepte.

Unele procesoare, pe lângă utilizarea conductelor, au capacitatea de a executa mai multe instrucțiuni simultan, ceea ce oferă paralelism suplimentar la nivel de instrucțiuni. Posibila implementare aceasta metoda folosind superscalaritatea, unde instrucțiunile pot fi grupate împreună pentru execuție paralelă (atâta timp cât nu au dependențe de date). Sunt posibile și implementări care utilizează paralelismul explicit la nivel de instrucțiune: VLIW și EPIC.

2.3 Paralelismul datelor

Ideea principală a abordării bazate pe paralelismul datelor este că o singură operație este efectuată pe toate elementele matricei de date simultan. Diverse fragmente ale unei astfel de matrice sunt procesate pe un procesor vectorial sau pornit diferite procesoare mașină paralelă. Programul distribuie datele între procesoare. Vectorizarea sau paralelizarea în acest caz se realizează cel mai adesea deja în etapa de compilare - traducere text sursă programe în instrucțiunile mașinii. Rolul programatorului în acest caz se reduce de obicei la specificarea setărilor de optimizare vectorială sau paralelă pentru compilator, directive de compilare paralelă și utilizarea limbajelor specializate pentru calculul paralel.

2.4 Paralelism sarcini (multithreading)

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

2.5 Sisteme de operare distribuite

Un sistem de operare distribuit, prin distribuirea dinamică și automată a lucrărilor pe diferitele mașini ale sistemului pentru procesare, face ca un set de mașini conectate în rețea să acționeze ca un uniprocesor virtual. Utilizatorul unui sistem de operare distribuit, în general, nu are informații despre mașina pe care este efectuată munca sa.

Un sistem de operare distribuit există ca unic sistem de operare la scara unui 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 utilizare eficientă toate resursele rețelei de calculatoare.


Anul 4, fluxurile 1 și 2, semestrul 7

prelegeri (34 ore), test

Departamentul responsabil de curs: ASVK

Compilatorul de programe: membru-corr. RAS, Doctor în Fizică și Matematică. Științe Voevodin Vl.V.,

Lectori: membru-corr. RAS, Doctor în Fizică și Matematică. Științe Voevodin Vl.V.

adnotare

Se discută în cadrul cursului probleme generale organizarea calculului paralel. Sunt luate în considerare caracteristicile arhitecturilor sistemelor moderne de calcul paralel, sunt studiate metodele și paradigmele de bază ale programării în medii paralele.

Pentru fluxurile 1 și 2 sunt discutate abordări ale armonizării arhitecturii sistemelor paralele și a structurii algoritmilor, aspecte ale teoriei analizei structurii programelor și algoritmilor și modelele în calculul paralel.

Program

1. Provocări mariși supercalculatoare. Prelucrare de date în paralel și în conductă. Paralelism și canalizare în arhitectura computerelor moderne de înaltă performanță. Comenzi scalare și vectoriale. Dispozitive scalare, conducte și vectoriale. Ierarhia memoriei în calculatoare ca mijloc de creștere a vitezei de execuție a programului, localitatea calculelor și localitatea utilizării datelor. Legea lui Amdahl și consecințele ei, accelerația superliniară.

2. Clase principale de sisteme moderne de calcul paralel. Calculatoare cu memorie partajată, exemple, motive pentru scăderea performanței programe reale. Arhitecturi SMP, NUMA, ccNUMA. Comutarea procesoarelor și modulelor de memorie, magistrală, comutator matrice, rețea omega. Sisteme de calcul vector-pipeline, exemple, motive pentru scăderea performanței. Calculatoare cu memorie distribuită, exemple, motive pentru scăderea performanței. Topologia comunicării între procesoare: stea, rețea, tor tridimensional, hipercub binar, proprietățile acestora. Clustere de calcul, exemple, latență și debitului variat tehnologii de comunicare. Arhitecturi cu paralelism la nivelul instrucțiunilor mașinii, VLIW, superscalaritate.

3. Tehnologii de programare paralelă. Limbaje secvențiale tradiționale și compilatoare de paralelizare, probleme. Comentarii speciale și directive ale compilatorului, extensii limbi existente. Limbi speciale programare paralelă. Programare folosind biblioteci și interfețe de transmitere a mesajelor. Biblioteci de subiecte paralele, pachete specializate și sisteme software nivel inalt. Tehnologii de programare paralelă MPI, OpenMP, Linda.

4. Performanța sistemelor de calcul paralele. Versatilitatea și specializarea computerelor, performanța procesoarelor speciale. Legea lui Moore. Metode de evaluare a performanței. Introducerea unui singur parametru numeric, Mflops, MIPS. Performanță de vârf și reală a computerului. Testul Linpack și variantele sale. Seturi de complementare programe de testare, STREAM și NPB.

5. Modele grafice ale programelor. Graficul de control și graficul informațiilor programului. Informații și istoric de operare implementarea programelor. Graficul algoritmului ca formă compactă de reprezentare parametrică istoricul informațiilor. Independența informațională a operațiunilor și posibilitatea executării lor paralele. Lungimea căii critice a unui grafic algoritm ca măsură a gradului de paralelism. Paralelism finit și masiv, paralelism coordonat și oblic. Conversii de programe echivalente, transformări elementare cicluri.

6. Sisteme de calcul distribuite eterogene. Metacalculatoare și metacalculatoare, proiecte de metacalculatoare existente. Proprietăți distinctive ale metacalculatoarelor. Conceptul de GRID, componente și servicii de bază, proiecte existente ale segmentelor GRID, conceptul de organizare virtuală.

Literatură

1. Voevodin V.V., Voevodin Vl.V. Calcul paralel. – Sankt Petersburg: BHV St. Petersburg, 2002. - 608 p.

2. Korolev L.N. Arhitectura procesorului electronic calculatoare. – M.: Editura. Facultatea de Matematică Computațională și Matematică a Universității de Stat din Moscova, 2003.

3. V.V. Korneev. Sisteme de calcul paralele. – M.: Editura Knowledge, 1999. – 320 p.

4. Materiale ale centrului de informare si analitic pt calcul paralel Paralel.ru.

literatură suplimentară

1. Antonov A.S. Programare în paralel folosind tehnologia

MPI: Tutorial. – M.: Editura Universității de Stat din Moscova, 2004. - 71 p.

Procesare paralelă

Procesare paralelă

Procesarea paralelă este un model pentru executarea simultană a unui proces de aplicație de către un grup de procesoare. Există trei moduri de a implementa paralelismul:
-1- Metoda SIMD de lucru cu un flux de comandă și mai multe fluxuri de date, în care toate procesoarele care lucrează sub același program procesează propriile matrice de date sub controlul procesorului principal;
-2- Metoda MIMD de lucru cu fluxuri multiple de comandă și fluxuri de date multiple, în care procesoarele lucrează în funcție de programele lor independent unul de celălalt, comunicând doar ocazional între ele;
-3- Modul MISD de lucru cu mai multe fluxuri de comandă și un flux de date.

În limba engleză: Procesare paralelă

Dicţionar financiar Finam.


Vedeți ce înseamnă „Procesare paralelă” în alte dicționare:

    Procesare paralelă- Unul dintre tipurile de prelucrare a informațiilor când mai multe operații pot fi efectuate simultan. Spre deosebire de procesarea conștientă, care are loc de obicei secvenţial, acest tip de procesare are loc fără efort conștient. De exemplu, citind acestea... ...

    - (prelucrare paralelă) O metodă de lucru pe un computer în care două sau mai multe părți ale unui program sunt executate nu secvențial, ci în paralel. Strict vorbind, această metodă poate fi utilizată numai pe computere care au două sau mai multe... Dicţionar de termeni de afaceri

    procesare paralelă- - Subiecte de telecomunicații, concepte de bază EN procesare paralelă...

    procesare paralelă- lygiagretusis apdorojimas statusas T sritis automatika atitikmenys: engl. procesare paralelă vok. Parallelverarbeitung rus. procesare paralelă, f pranc. traitement en parallèle, m … Automatikos terminų žodynas

    procesare paralelă a informaţiei- un model de procesare a informațiilor în creier, conform căruia informația suferă o serie de transformări în anumite „blocuri funcționale” ale creierului astfel încât la un moment dat să fie procesată simultan (în paralel) în mai multe... ... Mare enciclopedie psihologică

    PRELUCRAREA INFORMAȚIILOR PARALELE- Vezi procesarea informațiilor, paralel...

    Metoda de prelucrare a datelor în paralel un numar mare procesoare care implementează metoda paralelismului MIMD. În engleză: Massively Parallel Processing Sinonime în engleză: MPP Vezi și: Parallel processing Financial Dictionary Finam... Dicţionar financiar

    PRELUCRARE, PARALEL- Prelucrarea informațiilor în care se desfășoară mai mult de o secvență de operațiuni de prelucrare simultan sau în paralel. Prelucrarea poate implica extrem de nivel scăzut, componente non-simbolice, cum ar fi cele utilizate în... ... Dicţionarîn psihologie

    conducte paralele- lygiagretusis konvejerinis apdorojimas statusas T sritis radioelektronika atitikmenys: engl. conducte paralele vok. Parallel Pipelineverarbeitung, f rus. conducte paralele, f pranc. tratament de conducte paralele, m... Radioelektronikos terminų žodynas

    prelucrare simultană- prelucrare paralelă - [L.G. Dicționar englez-rus de tehnologia informației. M.: Întreprinderea de Stat TsNIIS, 2003.] Subiecte tehnologia de informațieîn general Sinonime procesare paralelă EN procesare simultană... Ghidul tehnic al traducătorului

Cărți

  • Prelucrare paralelă a datelor
  • Prelucrare paralelă a datelor, A. O. Latsis. ÎN manual Este oferită o revizuire sistematică aprofundată a tehnologiilor paralele de procesare a datelor. Accentul principal este pe tradițional tehnologii software programare paralela...

Ministerul Educației și Științei al Federației Ruse

FSBEI HPE „Bryansk State Engineering and Technological

academie"

Departamentul de Tehnologii Informaţionale

Prelucrarea secvențială și paralelă a informațiilor

Calcul și lucrarea grafică Nr. 1

prin disciplina

„Tehnologii de prelucrare a informațiilor”

Opțiunea nr. 16

RGR-02068025.230400.084

Bryansk 2015

Introducere 3

Prelucrarea paralelă a informațiilor 4

Sisteme de memorie partajată 6

Procesare SQL paralelă 7

Prelucrarea secvențială a informațiilor 9

10 sisteme batch simple

Referințe 13

Introducere

Acest studiu computațional și grafic examinează procesarea secvențială și paralelă a informațiilor. Sunt date exemple pentru fiecare dintre ele.

Procesarea secvențială a informațiilor este trecerea secvențială a informațiilor de la intrare la ieșire printr-o serie de transformări (etape), astfel încât în ​​fiecare perioadă de timp (specifică unui bloc dat) transformarea să se realizeze într-un singur bloc funcţional, iar informațiile îi vin doar din blocul anterior.

Procesarea paralelă a informației este un model de prelucrare a informațiilor, conform căruia informația suferă o serie de transformări în anumite blocuri funcționale, astfel încât la un moment dat să fie procesată simultan (în paralel) în mai multe blocuri.

Prelucrarea paralelă a informațiilor

Prelucrarea paralelă a datelor, care întruchipează ideea executării simultane a mai multor acțiuni, are două soiuri: pipeline și paralelism.

Procesare paralelă. Dacă un anumit dispozitiv efectuează o operație pe unitatea de timp, atunci va efectua o mie de operații într-o mie de unități. Dacă presupunem că există cinci dispozitive independente identice capabile să funcționeze simultan, atunci un sistem de cinci dispozitive poate efectua aceeași mie de operații nu într-o mie, ci în două sute de unități de timp. În mod similar, un sistem de N dispozitive va efectua aceeași muncă în 1000/N unități de timp. Analogii similare pot fi găsite în viață: dacă un soldat sapă o grădină în 10 ore, atunci o companie de cincizeci de soldați cu aceleași abilități, lucrând simultan, va face față aceleiași lucrări în 12 minute - principiul paralelismului în acțiune!

Prelucrare transportoare. Ce este necesar pentru a adăuga două numere reale, reprezentat sub formă de virgulă mobilă? Foarte mult tranzacții mici cum ar fi compararea ordinelor, alinierea comenzii, adăugarea mantiselor, normalizarea etc. Procesoarele primelor calculatoare au efectuat toate aceste „micro-operații” pentru fiecare pereche de argumente, unul după altul, până au ajuns la rezultatul final și abia apoi au trecut la procesarea următoarei perechi de termeni.

Ideea procesării pipeline este de a separa etapele individuale de execuție. funcţionare generală, iar fiecare etapă, după ce și-a încheiat activitatea, ar transmite rezultatul următoarei, acceptând simultan o nouă porțiune de date de intrare. Obținem un câștig evident în viteza de procesare prin combinarea operațiilor distanțate anterior. Să presupunem că într-o operație există cinci micro-operații, fiecare dintre acestea fiind efectuată într-o unitate de timp. Dacă există un dispozitiv serial indivizibil, atunci va procesa 100 de perechi de argumente în 500 de unități. Dacă fiecare microoperație este separată într-o etapă separată (sau numită în alt mod o etapă) a unui dispozitiv transportor, atunci în a cincea unitate de timp, la diferite etape de procesare a unui astfel de dispozitiv, vor fi localizate primele cinci perechi de argumente. , iar întregul set de o sută de perechi va fi procesat în 5 + 99 = 104 unități de timp - accelerația față de un dispozitiv serial este de aproape cinci ori (în funcție de numărul de trepte transportoare).

S-ar părea că procesarea conductei poate fi înlocuită cu succes de paralelism obișnuit, pentru care duplicăm dispozitivul principal de câte ori ar trebui să fie alocat numărul de etape ale conductei. De fapt, cele cinci dispozitive din exemplul anterior vor procesa 100 de perechi de argumente în 100 de unități de timp, ceea ce este mai rapid decât timpul de funcționare al dispozitivului transportor! Astfel, prin creșterea numărului de dispozitive de cinci ori, creștem semnificativ atât volumul echipamentelor, cât și costul acestuia. Imaginați-vă că o fabrică de mașini a decis să îndepărteze linia de asamblare menținând în același timp ritmul de producție de mașini. Dacă anterior existau o mie de mașini pe linia de asamblare în același timp, atunci, acționând prin analogie cu exemplul anterior, este necesar să recrutați o mie de echipe, fiecare dintre acestea capabilă să asambleze complet mașina de la început până la sfârșit, efectuând sute de tipuri diferite de operațiuni și faceți acest lucru în același timp în care mașina a fost anterior pe linia de asamblare.

Astăzi, paralelismul în arhitectura computerelor va surprinde puțini oameni. Toate microprocesoarele moderne folosesc o formă de procesare paralelă. În nucleul Pentium 4, până la 126 de micro-operații pot fi simultan în diferite etape de execuție. În același timp, aceste idei în sine au apărut cu foarte mult timp în urmă. Inițial, acestea au fost implementate în cele mai avansate, și, prin urmare, singure, computere ale timpului lor. Apoi, după o dezvoltare adecvată a tehnologiei și o producție mai ieftină, s-au coborât la calculatoarele din clasa de mijloc și, în cele din urmă, astăzi toate acestea sunt întruchipate pe deplin în stațiile de lucru și computerele personale.

Performanța multor aplicații care rulează pe sisteme informatice cu un singur procesor poate fi îmbunătățită semnificativ prin utilizarea instrumentelor de procesare paralelă. În cele ce urmează sunt prezentate conceptele de bază ale procesării paralele și arhitecturii computerului multiprocesor.

Când mai multe aplicații solicită ca joburile lor să fie procesate pe un computer cu un singur procesor, singurul său procesor trebuie să facă toată munca. Scopul procesării paralele este de obicei îmbunătățirea performanței aplicației. Atunci când o aplicație emite o cerere de job către un computer cu mai multe procesoare, computerul împarte jobul în subsarcini logice și apoi le procesează folosind mai multe procesoare în paralel, reducând timpul necesar pentru a finaliza lucrarea. Numărul de subsarcini care rezultă din împărțirea unei sarcini mari se numește grad de paralelism . Reducerea timpului de procesare a informațiilor necesar pentru finalizarea unei sarcini este direct proporțională cu gradul de paralelism. Aceștia încearcă să crească performanța sistemelor cu procesare paralelă în așa fel încât să asigure performanța maximă a fiecărui procesor din sistem.

Creșterea performanței computerului din cauza ce?

De ce supercalculatoarele calculează atât de repede? Pot exista mai multe variante de raspuns, dintre care doua au un avantaj clar: dezvoltarea baza elementuluiși utilizarea de noi soluții în arhitectura computerelor.

Să încercăm să ne dăm seama care dintre acești factori este decisiv pentru obținerea unei performanțe record. Să ne întoarcem la celebru fapte istorice. Pe unul dintre primele computere din lume - EDSAC, care a apărut în 1949 la Cambridge și a avut un timp de ceas de 2 microsecunde (2 * 10-6 secunde), a fost posibil să se efectueze 2 * n operații aritmetice în 18 * n milisecunde. , adică în medie 100 de operații aritmetice pe secundă. Să comparăm cu un nod de calcul al unui supercomputer modern Hewlett-Packard V2600: timpul de ceas este de aproximativ 1,8 nanosecunde (1,8 * 10-9 secunde), iar performanța maximă este de aproximativ 77 de miliarde de operații aritmetice pe secundă.

Ce se întâmplă? Peste o jumătate de secol, performanța computerului a crescut cu mai mult de șapte sute de milioane o singura data. În același timp, câștigul de performanță asociat cu reducerea timpului ciclului de ceas de la 2 microsecunde la 1,8 nanosecunde este de numai aproximativ 1000 de ori. De unde a venit restul? Răspunsul este evident - utilizarea de noi soluții în arhitectura computerelor. Locul principal printre ele este ocupat de principiul procesării paralele a datelor, care întruchipează ideea executării simultane (paralele) a mai multor acțiuni.

Prelucrarea paralelă a datelor, care întruchipează ideea executării simultane a mai multor acțiuni, are două soiuri: pipeline și paralelism real. Ambele tipuri de procesare paralelă sunt intuitive, așa că vom face doar mici explicații.

Procesare paralelă. Dacă un anumit dispozitiv efectuează o operație pe unitatea de timp, atunci va efectua o mie de operații într-o mie de unități. Dacă presupunem că există cinci dispozitive independente identice capabile să funcționeze simultan, atunci un sistem de cinci dispozitive poate efectua aceeași mie de operații nu într-o mie, ci în două sute de unități de timp. În mod similar, un sistem de N dispozitive va efectua aceeași muncă în 1000/N unități de timp. Analogii similare pot fi găsite în viață: dacă un soldat sapă o grădină în 10 ore, atunci o companie de cincizeci de soldați cu aceleași abilități, lucrând simultan, va face față aceleiași lucrări în 12 minute - principiul paralelismului în acțiune!

Apropo, pionierul procesării paralele a fluxurilor de date a fost academicianul A.A Samarsky, care a efectuat calculele necesare pentru a simula exploziile nucleare la începutul anilor '50. Samarsky a rezolvat această problemă așezând câteva zeci de domnișoare cu aparate de adăugare la mese. Doamnele și-au transferat date între ele pur și simplu în cuvinte și au scris numerele necesare la aparatele de adăugare. Astfel, în special, a fost calculată evoluția undei de explozie. Era mult de lucru, domnișoarele erau obosite, iar Alexander Andreevici a mers printre ele și le-a încurajat. Acesta, s-ar putea spune, a fost primul sistem paralel. Deși calculele pentru bomba cu hidrogen au fost efectuate cu măiestrie, acuratețea lor a fost foarte scăzută, deoarece erau puține noduri în grila folosită, iar timpul de calcul era prea lung.



Prelucrare transportoare. Ce este necesar pentru a adăuga două numere reale reprezentate sub formă de virgulă mobilă? O mulțime de operațiuni mici, cum ar fi compararea comenzilor, alinierea comenzilor, adăugarea de mantise, normalizarea etc. Procesoarele primelor computere au efectuat toate aceste „micro-operații” pentru fiecare pereche de argumente, unul după altul, până au ajuns la rezultatul final și abia apoi au trecut la procesare. următoarea pereche termeni.

Ideea procesării în conductă este de a izola etapele individuale ale efectuării unei operații generale, iar fiecare etapă, după ce și-a încheiat activitatea, ar trece rezultatul la următoarea, primind simultan o nouă porțiune de date de intrare. Obținem un câștig evident în viteza de procesare prin combinarea operațiilor distanțate anterior. Să presupunem că într-o operație există cinci micro-operații, fiecare dintre acestea fiind efectuată într-o unitate de timp. Dacă există un dispozitiv serial indivizibil, atunci va procesa 100 de perechi de argumente în 500 de unități. Dacă fiecare microoperație este separată într-o etapă separată (sau numită în alt mod o etapă) a unui dispozitiv transportor, atunci în a cincea unitate de timp, la diferite etape de procesare a unui astfel de dispozitiv, vor fi localizate primele cinci perechi de argumente. , iar întregul set de o sută de perechi va fi procesat în 5 + 99 = 104 unități de timp - accelerația față de un dispozitiv serial este de aproape cinci ori (în funcție de numărul de trepte transportoare).

S-ar părea că procesarea conductei poate fi înlocuită cu succes de paralelism obișnuit, pentru care duplicăm dispozitivul principal de câte ori ar trebui să fie alocat numărul de etape ale conductei. De fapt, cele cinci dispozitive din exemplul anterior vor procesa 100 de perechi de argumente în 100 de unități de timp, ceea ce este mai rapid decât timpul de funcționare al dispozitivului transportor! Ce s-a întâmplat? Răspunsul este simplu: prin creșterea numărului de dispozitive de cinci ori, creștem semnificativ atât volumul echipamentelor, cât și costul acestuia. Imaginați-vă că o fabrică de mașini a decis să îndepărteze linia de asamblare menținând în același timp ritmul de producție de mașini. Dacă anterior existau o mie de mașini pe linia de asamblare în același timp, atunci, acționând prin analogie cu exemplul anterior, este necesar să recrutați o mie de echipe, fiecare dintre ele (1) capabilă să asambleze complet mașina de la început. pentru a termina, efectuând sute de tipuri diferite de operații și (2) faceți acest lucru în același timp în care mașina a fost anterior pe linia de asamblare. Vă puteți imagina costul unei astfel de mașini? Nu? Sunt de acord, este dificil, dacă nu ne vine în minte Lamborghini, dar de aceea a apărut procesarea pe linia de asamblare...