Clasificarea sistemelor paralele de prelucrare a datelor. Prelucrare paralelă a datelor

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, aplicația aceasta metoda posibil doar pe computere cu 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...

Modalități de îmbunătățire a performanței aeronavei sunt încorporate în arhitectura sa. Pe de o parte, acesta este un set de procesoare, unități de memorie, dispozitive de intrare/ieșire și, desigur, metode de conectare a acestora, de exemplu. mediu de comunicare. Pe de altă parte, acestea sunt acțiunile efective ale aeronavei pentru a rezolva o anumită problemă și acestea sunt operațiuni pe comenzi și date. Aceasta este de fapt întreaga bază principală pentru procesarea paralelă. Prelucrarea paralelă, care întruchipează ideea de execuție simultană a mai multor acțiuni, are mai multe varietăți: superscalaritate, conducte,SIMD– extensii,Hiper Filetat, multi-core. Practic, aceste tipuri de procesare paralelă sunt intuitive, așa că vom face doar mici explicații. 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 (prelucrare paralelă a datelor) și chiar cu melodii (procesare paralelă a comenzilor).

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

Superscalaritate. Ca și în exemplul anterior, numai atunci când se construiește o conductă, sunt utilizate mai multe implementări hardware și software ale dispozitivelor funcționale, de exemplu, două sau trei ALU, trei sau patru dispozitive de eșantionare.

Hiper Filetat. O direcție promițătoare în dezvoltarea microprocesoarelor moderne bazate pe arhitectură multithreaded. Principalul obstacol în calea creșterii productivității prin creșterea numărului de dispozitive funcționale este organizarea încărcării eficiente a acestor dispozitive. Dacă codurile de program de astăzi nu sunt capabile să încarce toate dispozitivele funcționale cu lucru, atunci puteți permite procesorului să efectueze mai mult de o sarcină (fir), astfel încât firele suplimentare să încarce toate unitățile funcționale (la fel ca multitasking).

Multi-core. Este posibil, desigur, să se implementeze multiprocesare la nivel de cip, adică plasați mai multe procesoare pe un cip (Putere 4). Dar dacă luăm un microprocesor împreună cu memoria ca nuclee de sistem, atunci mai multe astfel de nuclee pe un cip vor crea o structură cu mai multe nuclee. În acest caz, funcțiile (de exemplu, interfețele sistemelor de rețea și telecomunicații) sunt integrate în cip, pentru care se folosesc de obicei chipset-uri (Motorola MPC8260, procesoare Power 4).

Implementarea tehnologiei de calcul de înaltă performanță se desfășoară în prezent în patru direcții principale.

1. Calculatoare transportoare vectoriale. Dispozitivele funcționale pentru conducte și setul de instrucțiuni vectoriale sunt două caracteristici ale unor astfel de mașini. Spre deosebire de abordarea tradițională, comenzile vectoriale operează pe rețele întregi de date independente, ceea ce permite încărcarea eficientă a conductelor disponibile, de ex. o comandă precum A=B+C poate însemna adăugarea a două matrice, nu a două numere. Un reprezentant tipic al acestei direcții este familia CRAY de calculatoare vector-pipeline, care include, de exemplu, CRAY EL, CRAY J90, CRAY T90 (în martie 2000, compania americană TERA a cumpărat divizia CRAY de la Silicon Graphics, Inc.) .

2. Calculatoare masiv paralele cu memorie distribuită. Ideea de a construi computere din această clasă este trivială: să luăm microprocesoare seriale, să furnizăm fiecăruia propria memorie locală, să-l conectăm printr-un mediu de comunicare - asta-i tot. Această arhitectură are multe avantaje: dacă aveți nevoie de performanță ridicată, puteți adăuga mai multe procesoare dacă finanțele sunt limitate sau cerințele necesare sunt cunoscute dinainte. putere de calcul, atunci este ușor să selectați configurația optimă etc.

Cu toate acestea, există și un „minus” decisiv care reduce multe dintre „plusuri” la nimic. Faptul este că este independent, ci mai degrabă o combinație a celor trei anterioare. Vom forma un nod de calcul din mai multe procesoare (tradiționale sau vector-pipeline) și memoria lor comună. Dacă puterea de calcul primită nu este suficientă, atunci vom combina mai multe noduri cu canale de mare viteză. Acest tip de arhitectură se numește cluster SV1, HP Exemplar,Soare StarFire, N.E.C. SX-5, ultimele modele IBM SP2

3. Paralelcalculatoare cu memorie partajată. Toate RAM Astfel de computere sunt împărțite de mai multe procesoare identice. Acest lucru elimină problemele clasei anterioare, dar adaugă altele noi - numărul de procesoare cu acces la memoria partajată nu poate fi mărit din motive pur tehnice. Această zonă include multe computere moderne SMP multiprocesor sau, de exemplu, noduri individuale ale computerelor HP Exemplarși Soare StarFire.

4. Sisteme de clustere. Ultima direcție, strict vorbind, nu este independentă, ci mai degrabă o combinație a celor trei anterioare. Vom forma un nod de calcul din mai multe procesoare (tradiționale sau vector-pipeline) și memoria lor comună. Dacă puterea de calcul primită nu este suficientă, atunci vom combina mai multe noduri cu canale de mare viteză. Acest tip de arhitectură se numește cluster, iar CRAY-urile sunt construite pe acest principiu SV1, HP Exemplar,Soare StarFire, N.E.C. SX-5, ultimele modele IBM SP2 si altii. Această direcție este în prezent cea mai promițătoare pentru proiectarea computerelor cu indicatori de performanță record.

De-a lungul istoriei dezvoltării tehnologia calculatoarelor s-au încercat găsirea unora clasificare generala, sub care s-ar incadra toate directiile posibile de dezvoltare a arhitecturilor de calculatoare. Niciuna dintre aceste clasificări nu ar putea acoperi întreaga varietate de dezvoltate solutii arhitecturaleși nu a rezistat timpului. Cu toate acestea, o serie de termeni au intrat în circulație științifică și sunt utilizați pe scară largă, care sunt folositori de cunoscut nu numai pentru dezvoltatori, ci și pentru utilizatorii de computere.

Orice sistem de calcul (fie el un supercomputer sau un computer personal) își atinge cea mai înaltă performanță prin utilizarea elementelor de mare viteză și execuția paralelă un numar mare operațiuni. Este oportunitatea munca paralela diverse dispozitive sistem (care lucrează cu suprapunere) este baza pentru accelerarea operațiunilor de bază.

Calculatoarele paralele sunt adesea împărțite conform clasificării lui Flynn în SIMD (Single Instruction Multiple Data) și MIMD (Multiple Instruction Multiple Data). Ca oricare altul, clasificarea de mai sus este imperfectă: există mașini care nu se încadrează direct în ea, există și caracteristici importante care nu sunt luate în considerare în această clasificare. În special, procesoarele vectoriale sunt adesea clasificate ca mașini SIMD, deși performanța lor ridicată depinde de o altă formă de paralelism - organizarea conductei a mașinii. Multiprocesor sisteme vectoriale, precum Cray Y-MP, constau din mai multe procesoare vectoriale și, prin urmare, pot fi numite MSIMD (Multiple SIMD).

Clasificarea lui Flynn nu face distincție între alte caracteristici importante pentru modelele de calcul, cum ar fi nivelul de granularitate al calculelor paralele și metodele de sincronizare.

Există patru tipuri principale de arhitectură pentru sistemele de procesare paralelă:

1) Procesare prin conducte și vectori.

Baza procesării conductei este executarea separată a unei operațiuni în mai multe etape (în mai multe etape) cu transferul de date de la o etapă la alta. Productivitatea crește datorită faptului că mai multe operații sunt efectuate simultan în diferite etape ale transportorului. Conducta este eficientă numai atunci când sarcina conductei este aproape de maximă, iar rata de alimentare a noilor operanzi se potrivește performanță maximă transportor. Dacă apare latența, mai puține operațiuni vor fi executate în paralel și performanța generală va scădea. Operațiunile vectoriale oferă o oportunitate ideală sarcina completa conductă de calcul.



Când este executată o comandă vectorială, aceeași operație este aplicată tuturor elementelor vectorului (sau cel mai adesea elementelor corespunzătoare ale unei perechi de vectori). Poate dura ceva timp pentru a configura o conductă pentru a efectua o anumită operație, dar operanzii pot intra apoi în conductă cu viteza maxima permise de capacitățile de memorie. În acest caz, nu există pauze din cauza eșantionării echipa noua, nici în legătură cu definirea ramurii de calcule în timpul unei tranziții condiționate. Prin urmare, principiu principal Calculul pe o mașină vectorială constă în efectuarea unei operații elementare sau a unei combinații a mai multor operații elementare care trebuie aplicate în mod repetat unui bloc de date. Astfel de operațiuni în programul original corespund unor cicluri compacte mici.

2) Mașini de tip SIMD. Mașinile SIMD constau dintr-un număr mare de elemente de prelucrare identice cu propria memorie. Toate elementele de procesare dintr-o astfel de mașină execută același program. Evident, o astfel de mașină, compusă dintr-un număr mare de procesoare, poate oferi performanțe foarte mari doar la acele sarcini în care toate procesoarele pot face aceeași treabă. Modelul de calcul pentru o mașină SIMD este foarte asemănător cu modelul de calcul pentru un procesor vectorial: o singură operație este efectuată pe un bloc mare de date.

Spre deosebire de operațiunea limitată a unui procesor vectorial, un procesor matrice (sinonim cu majoritatea mașinilor SIMD) poate fi semnificativ mai flexibil. Elementele de procesare ale unor astfel de procesoare sunt calculatoare programabile universale, deci o problemă rezolvată în paralel poate fi destul de complexă și conține ramuri. Manifestarea tipică a acestui model de calcul într-un program sursă este aproximativ aceeași ca și în cazul operațiilor vectoriale: bucle pe elemente de matrice în care valorile produse într-o iterație a buclei nu sunt utilizate într-o altă iterație a buclei.

Modelele de calcul pe calculatoarele vectoriale și matrice sunt atât de similare încât aceste computere sunt adesea discutate ca fiind echivalente.

3) Mașini de tip MIMD. Termenul „multiprocesor” acoperă majoritatea mașinilor MIMD și (la fel cum termenul „procesor matrice” se aplică mașinilor SIMD) este adesea folosit ca sinonim pentru mașinile MIMD. Într-un sistem multiprocesor, fiecare element de procesare (PE) își execută programul destul de independent de celelalte elemente de procesare. Elementele de procesare, desigur, trebuie să comunice cumva între ele, ceea ce face necesar clasificare detaliată Mașini de tip MIMD. Multiprocesoarele cu memorie partajată (multiprocesoare strâns cuplate) au date și memorie de instrucțiuni disponibile tuturor PE. PE comunică cu memoria partajată folosind o magistrală comună sau o rețea de schimb. Spre deosebire de aceasta, în sistemele cu multiprocesor slab cuplat (mașini cu memorie locală), toată memoria este partajată între elementele de procesare și fiecare bloc de memorie este accesibil doar procesorului asociat cu acesta. Rețeaua de schimb conectează elementele de procesare între ele.

Modelul de bază de calcul pe un multiprocesor MIMD este un set de procese independente care accesează periodic date partajate. Există un numar mare de variante ale acestui model. La un capăt al spectrului se află modelul calcul distribuit, în care programul este împărțit la un număr destul de mare sarcini paralele, constând din mai multe subrutine. La celălalt capăt al spectrului se află modelul stream computing, în care fiecare operație dintr-un program poate fi tratată ca un proces separat. O astfel de operație își așteaptă datele de intrare (operanzi), care trebuie să îi fie transmise de către alte procese. Odată primite, operația este efectuată și valoarea rezultată este transmisă acelor procese care au nevoie de ea. În modelele de calcul în flux de granularitate mare și medie, procesele conțin un număr mare de operațiuni și sunt executate într-o manieră de streaming.

4) Mașini multiprocesor cu procesoare SIMD.

Multe supercalculatoare moderne sunt sisteme multiprocesoare care folosesc procesoare vectoriale sau procesoare SIMD ca procesoare. Astfel de mașini aparțin mașinilor din clasa MSIMD.

Limbajele de programare și compilatoarele corespunzătoare pentru mașinile MSIMD oferă, de obicei, constructe de limbaj care permit programatorului să descrie paralelismul „granular grosier”. În cadrul fiecărei sarcini, compilatorul vectorizează automat bucle adecvate. Mașinile MSIMD, așa cum ne putem imagina, fac posibilă utilizarea celor mai bune dintre aceste două principii de descompunere: operații vectoriale (paralelism cu granulație fină) pentru acele părți ale programului care sunt potrivite pentru acesta și capacitățile flexibile ale MIMD. arhitectura pentru alte părți ale programului.

De-a lungul anilor de dezvoltare a tehnologiei de calcul, sistemele multiprocesor au trecut printr-o serie de etape de dezvoltare. Din punct de vedere istoric, tehnologia SIMD a fost prima stăpânită. Cu toate acestea, în prezent există un interes constant pentru arhitecturile MIMD. Acest interes este determinat în principal de doi factori:

  1. Arhitectura MIMD oferă o mare flexibilitate: cu suport hardware și software adecvat, MIMD poate funcționa ca un sistem cu un singur utilizator care oferă procesare de înaltă performanță a datelor pentru o singură sarcină de aplicație, ca o mașină cu mai multe programe care rulează mai multe sarcini în paralel sau ca unele combinație a acestor capacități.
  2. Arhitectura MIMD poate profita din plin de tehnologia modernă de microprocesor, bazată pe considerații stricte de cost/performanță. De fapt, aproape toate sistemele moderne multiprocesoare sunt construite pe aceleași microprocesoare care pot fi găsite în calculatoare personale, stații de lucru și servere mici cu un singur procesor.

Unul dintre trăsături distinctive multiprocesor sistem de calcul este o rețea de schimb prin care procesoarele se conectează între ele sau la memorie. Modelul de comunicare este atât de important pentru un sistem multiprocesor încât multe caracteristici de performanță și alte estimări sunt exprimate ca raportul dintre timpul de procesare și timpul de comunicare corespunzător sarcinilor rezolvate. Există două modele principale de comunicare interprocesor: unul se bazează pe transmiterea mesajelor, celălalt se bazează pe utilizarea memoriei partajate. Într-un sistem multiprocesor cu memorie partajată, un procesor scrie într-o locație de memorie specifică, iar un alt procesor citește din acea locație de memorie. Pentru a asigura consecvența datelor și sincronizarea proceselor, schimbul este adesea implementat folosind principiul accesului care se exclude reciproc la memoria partajată folosind metoda „căsuței poștale”.

În arhitecturile de memorie locală, partajarea directă a memoriei nu este posibilă. În schimb, procesoarele accesează datele partajate prin transmiterea mesajelor printr-o rețea de schimb. Eficacitatea schemei de comunicare depinde de protocoalele de schimb, de rețelele de schimb subiacente și lățime de bandă canale de memorie și schimb.

Adesea și în mod nerezonabil, în mașinile cu memorie partajată și vector, costurile de comunicare nu sunt luate în considerare, deoarece problemele de comunicare sunt în mare măsură ascunse programatorului. Cu toate acestea, suprasarcina de comunicare în aceste mașini există și este determinată de conflicte de magistrale, memorie și procesoare. Cum mai multe procesoare adăugat la sistem, cu atât mai multe procese concurează pentru a utiliza aceleași date și magistrală, ceea ce duce la o condiție de saturație. Modelul sistemului de memorie partajată este foarte convenabil pentru programare și uneori este văzut ca un mijloc la nivel înalt de evaluare a impactului partajării asupra funcționării sistemului, chiar dacă sistemul de bază este implementat de fapt folosind memorie localăși principiul transmiterii mesajelor.

În rețelele cu comutare de circuite și cu comutare de pachete, pe măsură ce cererile de trafic cresc, trebuie luată în considerare posibilitatea congestionării rețelei. Aici comunicarea interprocesor comunică resursele rețelei: canale, procesoare, buffer-uri de mesaje. Volumul informațiilor transmise poate fi redus prin descompunerea funcțională atentă a sarcinii și dispecerizarea atentă a funcțiilor îndeplinite.

Astfel, mașinile MIMD existente se încadrează în două clase principale în funcție de numărul de procesoare care sunt combinate, ceea ce determină atât metoda de organizare a memoriei, cât și metoda interconexiunilor acestora.

Primul grup include mașini cu memorie principală comună (partajată), combinând până la câteva zeci (de obicei, mai puțin de 32) procesoare. Numărul relativ mic de procesoare din astfel de mașini face posibilă existența unei singure memorie partajată centralizată și combinarea procesoarelor și memoriei folosind o singură magistrală. Dacă procesoarele au suficientă memorie cache, o magistrală de înaltă performanță și Memoria comună poate satisface accesele de memorie provenite de la mai multe procesoare. Deoarece există o singură memorie cu același timp de acces, aceste mașini sunt uneori numite UMA (Acces uniform la memorie). Această metodă de organizare cu memorie partajată relativ mică este în prezent cea mai populară. Structura unui astfel de sistem este prezentată în Fig. 10.1.

Orez. 10.1. Arhitectura tipică a unui sistem multiprocesor cu memorie partajată.

Al doilea grup de mașini este format din sisteme de memorie distribuite la scară largă. Pentru a suporta un număr mare de procesoare, memoria principală trebuie să fie distribuită între ele, altfel lățimea de bandă a memoriei pur și simplu poate să nu fie suficientă pentru a satisface cererile venite de la un număr foarte mare de procesoare. Desigur, această abordare necesită și implementarea comunicării între procesoare. În fig. Figura 10.2 prezintă structura unui astfel de sistem.

Pe măsură ce numărul de procesoare crește, este pur și simplu imposibil de evitat necesitatea implementării unui model de memorie distribuită cu rețea de mare viteză pentru comunicarea între procesoare. Odată cu creșterea rapidă a performanței procesorului și a cererilor crescute asociate pentru o lățime de bandă crescută a memoriei, scara sistemelor (adică, numărul de procesoare dintr-un sistem) care necesită memorie distribuită este în scădere, precum și numărul de procesoare care pot fi suportate. pe o singură magistrală partajată și memorie partajată.

Distribuirea memoriei între nodurile individuale ale sistemului are două avantaje principale. În primul rând, este o modalitate rentabilă de a crește lățimea de bandă a memoriei, deoarece majoritatea acceselor pot fi efectuate în paralel cu memoria locală din fiecare nod. În al doilea rând, reduce latența de acces (timpul de acces) la memoria locală. Aceste două avantaje reduc și mai mult numărul de procesoare pentru care are sens o arhitectură de memorie distribuită.

De obicei, dispozitivele I/O, precum și memoria, sunt distribuite între noduri și, în realitate, nodurile pot consta dintr-un număr mic (2-8) de procesoare interconectate într-un alt mod. Deși o astfel de grupare a mai multor procesoare cu memorie și interfata retea poate fi destul de util din punct de vedere al eficienței din punct de vedere al costului, nu este foarte semnificativ pentru înțelegerea modului în care funcționează o astfel de mașină, așa că ne vom concentra pe sisteme cu un procesor pe nod deocamdată. Principala diferență arhitecturală care ar trebui evidențiată în mașinile cu memorie distribuită este modul în care se realizează comunicarea și ce model logic memorie.

Orez. 10.2. Arhitectura tipică a mașinilor cu memorie distribuită.

„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 de rezolvare a problemelor aplicate este introducerea pe scară largă a ideilor 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 funcționării dispozitivelor individuale sau metoda de execuție operatii aritmetice, atunci numărul de arhitecturi diferite va deveni complet nelimitat.

Î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 o serie de 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 des folosită a calculatoarelor în calculatoare personale, stații de lucru, minicalculatoare, calculatoare mainframe, minisupercomputere și supercomputere permite, probabil, estimarea aproximativă a costului 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. Sisteme de calcul paralele

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. Calcul paralel există sub mai multe forme: paralelism la nivel de biți, paralelism la nivel de instrucțiune, paralelism de date, 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 unor restricții fizice de creștere 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 competiţia pentru resurse introduce o nouă clasă de erori potenţiale în software(bug-uri), dintre care condiția de rasă este cea mai frecventă. Comunicarea și sincronizarea între procese reprezintă o barieră majoră în atingerea performanțelor ridicate în sistemele paralele. ÎN anul trecut De asemenea, au început să ia în considerare problema consumului de energie electrică de către calculatoarele 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 necesare procesorului pentru a efectua operații asupra variabilelor a căror dimensiune depășește 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, 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 steagului 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 utilizate î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ă 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 acțiuni specifice efectuate 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. Este posibil să se implementeze această metodă folosind superscalaritate, unde instrucțiunile pot fi grupate împreună pentru execuție paralelă (dacă 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ă faptul că o sarcină 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 unul singur 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.

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

FSBEI HPE „Bryansk State Engineering and Technological

academie"

Departamentul de Tehnologii Informaţionale

Prelucrare 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 se realizează într-un singur bloc funcțional, iar informația vine la ea 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 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 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 î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ă există cinci micro-operații într-o operație, 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 se presupune că trebuie 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ă elimine 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 rezultate 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.