Soorten parallellisme. Parallelle gegevensverwerking op een computer

Het werk is toegevoegd aan de website van de site: 20-06-2016

">Lezing " xml:lang="en-US" lang="en-US">6

">Parallelle gegevensverwerking

">Parallelisme is het vermogen om tegelijkertijd meerdere rekenkundige, logische of servicebewerkingen uit te voeren. Bovendien kunnen de bewerkingen zowel grote als kleine blokken omvatten.

Parallelle verwerking kan op verschillende principes gebaseerd zijn:

Ruimtelijk parallellisme;

Tijdelijk parallellisme:

  1. Pijpleidingen.
  2. ">Vectorisatie.
  3. ">Matrix.
  4. ">Systolisch.
  5. ">Organisatie van deur.
  6. ">Organisatie van het systeem gebaseerd op de hyperkubusstructuur.
  7. ">Dynamische herstructurering van de vliegtuigstructuur.

">De beschrijving van elk algoritme is hiërarchisch, gebaseerd op de nesteigenschap. Bij het programmeren worden nestniveaus onderscheiden: taken, taken, subtaken (processen), macrobewerkingen, bewerkingen.

">1. Gelaagde parallelle vorm van het algoritme

">De meest algemene vorm van representatie van algoritmen is de informatiecontrolegrafiek van het algoritme. Een meer specifieke vorm van representatie van taakparallellisme is het apparaat van tier-parallelle vorm (LPF).

">Het algoritme in tier-parallelle vorm wordt weergegeven in de vorm van lagen, en de nullaag omvat operators (takken) die onafhankelijk van elkaar zijn.

">In de grafiek kunt u overgangen aanduiden, dat wil zeggen de overdracht van de resultaten van het berekenen van een primitieve bewerking van het ene niveau naar een bewerking van het volgende niveau. Niveaus worden gedeeld door overgangen. Er kunnen 'lege' overgangen en 'lege' primitief zijn activiteiten.

">Bij het construeren van NFP's vertrouwen ze op een basisset van primitieve bewerkingen (BNO). De gelaagde-parallelle vorm wordt gekenmerkt door de volgende parameters:

">1. Lengte van de grafiek (aantal niveaus)" xml:lang="en-US" lang="en-US">L">.

">2. Breedte " xml:lang="en-US" lang="en-US">i">de laag - " xml:lang="en-US" lang="en-US">b;vertical-align:sub" xml:lang="en-US" lang="en-US">i">.

">3. Breedte van een gelaagde parallelle grafiek" xml:lang="en-US" lang="en-US">B">= " xml:lang="en-US" lang="en-US">max">(" xml:lang="en-US" lang="en-US">b;vertical-align:sub" xml:lang="en-US" lang="en-US">i">).

">4. Gemiddelde breedte van de NAP-grafiek V;verticaal uitlijnen:sub">cf "> ">.

">5. Vulfactor" xml:lang="en-US" lang="en-US">i">de laag " xml:lang="en-US" lang="en-US">k;vertical-align:sub" xml:lang="en-US" lang="en-US">i"> – ">.

">6. Verspreidingscoëfficiënt van bewerkingen in de grafiek -" xml:lang="en-US" lang="en-US">V;vertical-align:super" xml:lang="en-US" lang="en-US">j;vertical-align:sub" xml:lang="en-US" lang="en-US">i"> – ">, " xml:lang="en-US" lang="en-US">j">BNO, waarbij ">- hoeveelheid " xml:lang="en-US" lang="en-US">j">de soort operaties in" xml:lang="en-US" lang="en-US">i">de laag.

">7. Het minimaal vereiste aantal computers (van de BNO) om het algoritme dat door deze grafiek wordt weergegeven in de YAPF te implementeren.

">8. Minimale oplossingstijd van het algoritme (som van de responstijden van computers met het maximale aantal berekeningen voor elke laag) T;vertical-align:sub" xml:lang="en-US" lang="en-US">min">.

">9. Connectiviteit van het algoritme (het aantal tussenresultaten dat moet worden opgeslagen tijdens de implementatie van het algoritme) C.

">2. Automatische detectie van gelijktijdigheid

">Er zijn twee mogelijke manieren om een ​​parallel algoritme te construeren: rechtstreeks vanuit de probleemstelling of door een sequentieel algoritme te transformeren.

">Methoden voor het construeren van een parallel algoritme uit een sequentieel algoritme zijn gebaseerd op het identificeren van typische, vaak voorkomende constructies in het sequentiële algoritme, die volgens bepaalde regels worden vervangen door parallelle.

Ondanks het lagere niveau van parallellisme dat wordt bereikt bij het construeren van een parallel algoritme door het converteren van een sequentieel algoritme, wordt deze methode veel gebruikt, omdat deze de mogelijkheid biedt om dure applicatieprogramma's te gebruiken die zijn ontwikkeld en gedebugd voor sequentiële ODS.

">In een sequentieel programma wordt onderscheid gemaakt tussen expliciete en verborgen parallelle verwerking.

">Bij het analyseren van een programma wordt een gegevensstroomgrafiek geconstrueerd. Om duidelijke parallelliteit van processen te detecteren, worden sets invoervariabelen (leesvariabelen) geanalyseerd" xml:lang="en-US" lang="en-US">R"> en uitvoer (geschreven) variabelen" xml:lang="en-US" lang="en-US">W"> van elk proces.

">Verborgen parallelle verwerking vereist een soort transformatieprocedure voor een sequentieel programma om het mogelijk te maken het parallel uit te voeren. De transformatie zou als volgt kunnen zijn:

">a) het verkleinen van de hoogte van bomen van rekenkundige uitdrukkingen (Fig. 6.3);

">b) transformatie van lineaire herhalingsrelaties;

">c) vervanging van exploitanten;

">d) transformatie van blokken van voorwaardelijke overgangen en lussen naar een canonieke vorm;

">e) verdeling van cycli.

">Parallelle architecturen bereiken hoge prestaties als bij de parallellismeconversie rekening wordt gehouden met de kenmerken van de computerarchitectuur waarop het algoritme zou moeten worden uitgevoerd.

">Laten we als voorbeeld van het rekening houden met de geheugenindeling het geheugen met diagonale adressering nemen. Om parallelle verwerking van matrices te garanderen, moeten de elementen van hun rijen en kolommen zodanig over de processoropslagapparaten worden verdeeld dat ze kunnen worden gelijktijdig gelezen en verwerkt. In dit geval wordt de matrix opgeslagen met shift (Fig. 6.4).

">Elk algoritme bevat opeenvolgende (scalaire) secties. Het is bewezen dat de lengte van deze scalaire secties de bepalende factor is bij de implementatie van het algoritme op een parallelle computer.

">3. Mate en niveaus van parallellisme

"> Mate van parallellisme"> (" xml:lang="en-US" lang="en-US">D">) "> dit is de volgorde van het aantal parallel werkende apparaten in het systeem bij de implementatie van het taakalgoritme, op voorwaarde dat het aantal processors (verwerkingsapparaten) niet beperkt is.

">1) Lage graad: van 2 tot 10 processors.

">2) Gemiddelde graad: van 10 tot 100 processors.

">3) Hoge graad: van 100 tot 10;vertical-align:super">4 "> processors.

">4) Ultrahoge graad: vanaf 10;vertical-align:super">4 "> maximaal 10 ;vertical-align:super">6 "> processors.

">Grafische weergave van de parameter" xml:lang="en-US" lang="en-US">D">(" xml:lang="en-US" lang="en-US">t">) als functie van de tijd wordt het programmaparallellismeprofiel genoemd. Figuur 6.5 toont een typisch parallellismeprofiel.

">Er is een breed scala aan potentiële parallelliteiten in applicatieprogramma's. In rekenintensieve programma's kunnen in elke cyclus 500 tot 3500 rekenkundige bewerkingen parallel worden uitgevoerd, als de bestaande computeromgeving hiervoor beschikbaar is. Maar zelfs een goed ontworpen superscalaire De processor kan 2 tot 5,8 opdrachten per cyclus ondersteunen. Deze daling is voornamelijk te wijten aan communicatie- en systeemkosten.

Het niveau van parallellisme heeft een sterkere invloed op de computerprestaties dan de mate van parallellisme.

Er wordt rekening gehouden met algoritmische en circuitniveaus van parallellisme.

Er worden de volgende algoritmische niveaus van parallellisme onderscheiden:

1. Taakniveau:

a) tussen taken;

b) tussen taakfasen.

2. Softwareniveau:

a) tussen programmaonderdelen;

b) binnen cycli.

3. Commandoniveau (tussen fasen van opdrachtuitvoering).

4. Rekenkunde en bitniveau:

">a) tussen elementen van een vectoroperatie;

">b) binnen de logische circuits van de ALU.

">Elk van de niveaus wordt gekenmerkt door bepaalde eigenschappen, op basis waarvan speciale structuren van computerhulpmiddelen zijn ontwikkeld. Het commandoniveau wordt geïmplementeerd op alle moderne computers, inclusief personal computers.

">Circuitniveau van parallellisme is een hardwareniveau waarop parallellisatie van gegevensverwerking of organisatie van parallelle berekeningen wordt uitgevoerd.

">Parallelle verwerking kan op de volgende circuitniveaus worden geïmplementeerd:

">1. Op het niveau van logische poorten en geheugenelementen (Fig. 6.6).

">2. Niveau van logische circuits en eenvoudige automaten met geheugen (Fig. 6.7).

">3. Niveau van registers en geïntegreerde geheugencircuits (Fig. 6.8).

4. Niveau van elementaire microprocessors (Fig. 6.9).

">5. Niveau van macroprocessors die grote bewerkingen uitvoeren (Fig. 6.10).

6. Niveau van computers, processors en programma's (Fig. 6.11).

">4. Soorten parallellisme

">4.1. Natuurlijk parallellisme en

">parallelisme van meerdere objecten

In de informatiegrafiek kunnen “verticale” onafhankelijke subgrafieken worden geïdentificeerd die onderling geen gebruik maken van tussenresultaten die zijn verkregen bij het implementeren van primitieve bewerkingen van een andere subgrafiek. Dit type parallellisme wordt natuurlijk parallellisme van onafhankelijke taken genoemd.

Een probleem heeft natuurlijk parallellisme als het in zijn oorspronkelijke formulering wordt gereduceerd tot een bewerking op multidimensionale vectoren, multidimensionale matrices of roosterfuncties (Fig. 6.12).

Parallellisme met meerdere objecten is een speciaal geval van natuurlijk parallellisme. De betekenis ervan is dat het de taak is om informatie te verwerken over verschillende maar vergelijkbare objecten die zijn verwerkt met hetzelfde of bijna hetzelfde programma (Fig. 6.13).

">Hier nemen de zogenaamde integrale bewerkingen relatief weinig gewicht in beslag. Bij het parallelliseren van meerdere objecten komen situaties vaker voor dan in het algemene geval waarin individuele secties van berekeningen verschillend moeten worden uitgevoerd voor verschillende objecten.

">4.2. Parallellisme van onafhankelijke takken

De essentie van parallellisme van onafhankelijke takken is dat in het programma voor het oplossen van een probleem onafhankelijke delen, takken genoemd, kunnen worden onderscheiden. Als de computer over de juiste hardware beschikt, kunnen de vertakkingen parallel worden uitgevoerd (Fig. 6.14).

">Programmatak Y is niet afhankelijk van tak X als:

"> - er zijn geen functionele verbindingen tussen hen, d.w.z. geen van de invoervariabelen van tak Y is de uitvoervariabele van tak X of een tak die afhankelijk is van X;

"> - er is geen verbinding tussen beide via werkgeheugenvelden;

"> - ze moeten worden uitgevoerd met verschillende programma's;

"> - hebben een onafhankelijke controle, d.w.z. de voorwaarde voor het uitvoeren van tak Y mag niet afhankelijk zijn van de kenmerken die worden gegenereerd tijdens de uitvoering van tak X of de tak die daarvan afhankelijk is.

">4.3. Parallellisme van aangrenzende activiteiten of

">lokaal parallellisme

Parallellisme van aangrenzende bewerkingen treedt op wanneer de invoergegevens voor huidige bewerkingen worden verkregen in eerdere berekeningsfasen en de constructie van rekenhulpmiddelen het mogelijk maakt om de uitvoering van verschillende bewerkingen te combineren die niet met elkaar zijn verbonden door uitvoergegevens en resultaten.

Lokale optimalisatie van programma's bestaat uit het doornemen van verschillende instructies die achter elkaar moeten worden uitgevoerd en het veranderen van de volgorde van sommige ervan, mogelijk het veranderen van het aantal registers en geheugencellen om de maximaal mogelijke parallelliteit van aangrenzende bewerkingen te garanderen.

In de meeste gevallen hangt de indicator van de connectiviteit van aangrenzende operaties niet zozeer af van het probleem als wel van de kwaliteit van de lokale optimalisatie.

">5. Probleemmodel

Er wordt een model van het probleem geconstrueerd voor een vergelijkende analyse van de structuren van parallelle computers. Daarom zou het vrij algemeen van aard moeten zijn en alleen de samenstelling van vormen van parallellisme en soorten verbindingen beschrijven.

In de regel wordt elk probleemmodel gebouwd op basis van een analyse van de gemodelleerde klasse van problemen. Op basis van de resultaten van de analyse worden de algoritmen omgezet naar een parallelle vorm. Het bestudeerde algoritme kan worden weergegeven als een programma dat bestaat uit een reeks secties van drie typen (Fig. 6.15):

  1. scalaire secties (SC);
  2. secties met parallellisme van onafhankelijke takken (BT);
  3. vectorsecties (VC).

Taakmodel is een reeks parameters die een parallel programma karakteriseren

Bij het construeren van een model van een taak is het belangrijkste doel het bepalen van de relatieve tijd van de uitvoering ervan wanneer deze wordt geïmplementeerd door het onderzochte algoritme.

">Fig. 6.15. De verhouding van het totale aantal berekeningen per verschillende secties van het algoritme in het probleemmodel

" xml:lang="en-US" lang="en-US">W">sk

" xml:lang="en-US" lang="en-US">Ww

" xml:lang="en-US" lang="en-US">W">vk

" xml:lang="en-US" lang="en-US">m;verticaal uitlijnen:sub">sk

" xml:lang="en-US" lang="en-US">m;vertical-align:sub" xml:lang="en-US" lang="en-US">tu

" xml:lang="en-US" lang="en-US">m;verticaal uitlijnen:sub">vk

" xml:lang="en-US" lang="en-US">A

" xml:lang="en-US" lang="en-US">В

" xml:lang="en-US" lang="en-US">C

hoeveelheid berekeningen

relatieve lengte

Parallelle verwerking

Parallelle verwerking

Parallelle verwerking is een model voor het gelijktijdig uitvoeren van een applicatieproces door een groep processors. Er zijn drie manieren om parallellisme te implementeren:
-1- SIMD-methode om te werken met één commandostroom en meerdere datastromen, waarbij alle processors die onder hetzelfde programma werken hun eigen data-arrays verwerken onder controle van de masterprocessor;
-2- MIMD-methode voor het werken met meerdere commandostromen en meerdere datastromen, waarbij processors onafhankelijk van elkaar volgens hun programma's werken en slechts af en toe met elkaar communiceren;
-3- MISD-manier van werken met meerdere commandostromen en één datastroom.

In Engels: Parallelle verwerking

Finam financieel woordenboek.


Zie wat “Parallelle verwerking” is in andere woordenboeken:

    Parallelle verwerking- Een van de soorten informatieverwerking waarbij meerdere bewerkingen tegelijkertijd kunnen worden uitgevoerd. In tegenstelling tot bewuste verwerking, die meestal opeenvolgend plaatsvindt, vindt dit soort verwerking plaats zonder bewuste inspanning. Als u bijvoorbeeld deze leest... ...

    - (parallelle verwerking) Een werkwijze op een computer waarbij twee of meer delen van een programma niet opeenvolgend, maar parallel worden uitgevoerd. Strikt genomen kan deze methode alleen worden gebruikt op computers met twee of meer... Woordenboek van zakelijke termen

    parallelle verwerking- - Telecommunicatieonderwerpen, basisconcepten EN parallelle verwerking...

    parallelle verwerking- lygiagretusis apdorojimas statusas T sritis automatika atitikmenys: engl. parallelle verwerking vok. Parallelverarbeitung rus. parallelle verwerking, f pranc. traitement en parallelle, m … Automatikos terminų žodynas

    parallelle informatieverwerking- een model van informatieverwerking in de hersenen, volgens welke informatie een reeks transformaties ondergaat in bepaalde “functionele blokken” van de hersenen, zodat deze op elk gegeven moment gelijktijdig (parallel) in verschillende... ... Grote psychologische encyclopedie

    PARALLELLE INFORMATIEVERWERKING- Zie informatieverwerking, parallel...

    Een methode voor parallelle gegevensverwerking door een groot aantal processors, waarbij de MIMD-methode voor het organiseren van parallellisme wordt geïmplementeerd. In het Engels: Massively Parallel Processing Engelse synoniemen: MPP Zie ook: Parallelle verwerking Financial Dictionary Finam... Financieel woordenboek

    VERWERKING, PARALLEL- Informatieverwerking waarbij meer dan één reeks verwerkingshandelingen gelijktijdig of parallel wordt uitgevoerd. Bij de verwerking kunnen niet-symbolische componenten van extreem laag niveau betrokken zijn, zoals die gebruikt worden in... ... Verklarend woordenboek van de psychologie

    parallelle pijpleidingen- lygiagretusis konvejerinis apdorojimas statusas T sritis radioelektronika atitikmenys: engl. parallelle pijpleidingen vok. Parallelle pijplijnverarbeitung, f rus. parallelle pijpleidingen, f pranc. traitement de pipeline parallelle, m... Radio-elektronikos terminų žodynas

    gelijktijdige verwerking- parallelle verwerking - [L.G. Sumenko. Engels-Russisch woordenboek over informatietechnologie. M.: Staatsbedrijf TsNIIS, 2003.] Onderwerpen informatietechnologie in het algemeen Synoniemen parallelle verwerking EN gelijktijdige verwerking ... Handleiding voor technische vertalers

Boeken

  • Parallelle gegevensverwerking
  • Parallelle gegevensverwerking, AO Latsis. De tutorial biedt een diepgaand systematisch overzicht van parallelle gegevensverwerkingstechnologieën. De belangrijkste aandacht wordt besteed aan traditionele softwaretechnologieën van parallel programmeren...

Door de geschiedenis heen van de ontwikkeling van computertechnologie zijn er pogingen ondernomen om een ​​soort algemene classificatie te vinden waaronder alle mogelijke ontwikkelingsrichtingen van computerarchitecturen zouden vallen. Geen van deze classificaties kon de hele verscheidenheid aan architectonische oplossingen die werden ontwikkeld bestrijken en heeft de tand des tijds niet doorstaan. Niettemin zijn er een aantal termen in wetenschappelijke circulatie gekomen en op grote schaal gebruikt, die niet alleen nuttig zijn voor ontwikkelaars, maar ook voor computergebruikers.

Elk computersysteem (of het nu een supercomputer of een personal computer is) bereikt de hoogste prestaties door het gebruik van hogesnelheidselementen en de parallelle uitvoering van een groot aantal bewerkingen. Het is de mogelijkheid van parallelle werking van verschillende systeemapparaten (werken met overlap) die de basis vormt voor het versnellen van basisbewerkingen.

Parallelle computers worden volgens de classificatie van Flynn vaak onderverdeeld in SIMD-machines (Single Instruction Multiple Data) en MIMD-machines (Multiple Instruction Multiple Data). Net als elke andere is de bovenstaande classificatie onvolmaakt: er zijn auto's die er niet direct onder vallen, er zijn ook belangrijke kenmerken waarmee in deze classificatie geen rekening wordt gehouden. Met name vectorprocessors worden vaak geclassificeerd als SIMD-machines, hoewel hun hoge prestaties afhangen van een andere vorm van parallellisme: de pijplijnorganisatie van de machine. Multiprocessor vectorsystemen, zoals Cray Y-MP, bestaan ​​uit meerdere vectorprocessors en kunnen daarom MSIMD (Multiple SIMD) worden genoemd.

De classificatie van Flynn maakt geen onderscheid tussen andere kenmerken die belangrijk zijn voor computermodellen, zoals het granulariteitsniveau van parallelle berekeningen en synchronisatiemethoden.

Er zijn vier hoofdtypen architectuur voor parallelle verwerkingssystemen:

1) Pijplijn- en vectorverwerking.

De basis van pijplijnverwerking is de afzonderlijke uitvoering van een bepaalde bewerking in verschillende fasen (in verschillende fasen) met de overdracht van gegevens van de ene fase naar de volgende. De productiviteit neemt toe doordat meerdere handelingen tegelijkertijd in verschillende stadia van de transportband worden uitgevoerd. Pipelining is alleen effectief als de pijplijn bijna de volledige capaciteit heeft en de snelheid waarmee nieuwe operanden worden geleverd overeenkomt met de maximale capaciteit van de pijplijn. Als er latentie optreedt, zullen er minder bewerkingen parallel worden uitgevoerd en zullen de algehele prestaties afnemen. Vectorbewerkingen bieden een ideale gelegenheid om de computationele pijplijn volledig te laden.



Wanneer een vectorcommando wordt uitgevoerd, wordt dezelfde bewerking toegepast op alle elementen van de vector (of meestal op de overeenkomstige elementen van een paar vectoren). Het kan enige insteltijd kosten om een ​​pijplijn op te zetten om een ​​bepaalde bewerking uit te voeren, maar operanden kunnen dan de pijplijn binnenstromen met de maximale snelheid die door de geheugenmogelijkheden is toegestaan. In dit geval zijn er geen pauzes in verband met de selectie van een nieuw commando of in verband met de definitie van een tak van berekeningen tijdens een voorwaardelijke overgang. Het belangrijkste principe van computergebruik op een vectormachine is dus het uitvoeren van een elementaire bewerking of een combinatie van verschillende elementaire bewerkingen, die herhaaldelijk op een bepaald gegevensblok moeten worden toegepast. Dergelijke bewerkingen in het oorspronkelijke programma komen overeen met kleine compacte lussen.

2) SIMD-machines. SIMD-machines bestaan ​​uit een groot aantal identieke verwerkingselementen die hun eigen geheugen hebben. Alle verwerkingselementen in zo’n machine voeren hetzelfde programma uit. Het is duidelijk dat een dergelijke machine, bestaande uit een groot aantal processors, alleen zeer hoge prestaties kan leveren bij die taken waarbij alle processors hetzelfde werk kunnen doen. Het rekenmodel voor een SIMD-machine lijkt sterk op het rekenmodel voor een vectorprocessor: er wordt een enkele bewerking uitgevoerd op een groot blok gegevens.

In tegenstelling tot de beperkte pijplijnwerking van een vectorprocessor, kan een matrixprocessor (synoniem voor de meeste SIMD-machines) aanzienlijk flexibeler zijn. De verwerkingselementen van dergelijke processors zijn universeel programmeerbare computers, dus een parallel opgelost probleem kan behoorlijk complex zijn en vertakkingen bevatten. De typische manifestatie van dit rekenmodel in een bronprogramma is grofweg hetzelfde als bij vectorbewerkingen: lussen op array-elementen waarin de waarden die in de ene iteratie van de lus worden geproduceerd, niet worden gebruikt in een andere iteratie van de lus.

De rekenmodellen op vector- en matrixcomputers lijken zo op elkaar dat deze computers vaak als gelijkwaardig worden besproken.

3) Machines van het MIMD-type. De term "multiprocessor" omvat de meeste MIMD-machines en wordt (net zoals de term "matrixprocessor" van toepassing is op SIMD-machines) vaak gebruikt als synoniem voor MIMD-machines. In een multiprocessorsysteem voert elk verwerkingselement (PE) zijn programma geheel onafhankelijk van andere verwerkingselementen uit. Verwerkingselementen moeten uiteraard op de een of andere manier met elkaar communiceren, wat een meer gedetailleerde classificatie van machines van het MIMD-type noodzakelijk maakt. Multiprocessors met gedeeld geheugen (strak gekoppelde multiprocessors) hebben data- en instructiegeheugen beschikbaar voor alle PE's. PE's communiceren met het gedeelde geheugen via een gemeenschappelijke bus of uitwisselingsnetwerk. In losjes gekoppelde multiprocessorsystemen (machines met lokaal geheugen) wordt daarentegen al het geheugen gedeeld door de verwerkingselementen en is elk geheugenblok alleen toegankelijk voor de bijbehorende processor. Het uitwisselingsnetwerk verbindt de verwerkingselementen met elkaar.

Het basismodel van computergebruik op een MIMD-multiprocessor is een reeks onafhankelijke processen die periodiek toegang hebben tot gedeelde gegevens. Er zijn een groot aantal varianten van dit model. Aan de ene kant van het spectrum bevindt zich het gedistribueerde computermodel, waarin een programma is opgedeeld in een vrij groot aantal parallelle taken, bestaande uit vele subroutines. Aan de andere kant van het spectrum bevindt zich het stream computing-model, waarin elke bewerking in een programma als een afzonderlijk proces kan worden behandeld. Een dergelijke bewerking wacht op de invoergegevens (operands), die door andere processen eraan moeten worden doorgegeven. Zodra ze zijn ontvangen, wordt de bewerking uitgevoerd en wordt de resulterende waarde doorgegeven aan de processen die deze nodig hebben. In streaming-computermodellen met hoge en gemiddelde granulariteit bevatten processen een groot aantal bewerkingen en worden ze op streaming-manier uitgevoerd.

4) Multiprocessormachines met SIMD-processors.

Veel moderne supercomputers zijn multiprocessorsystemen die vectorprocessors of SIMD-processors als processors gebruiken. Dergelijke machines behoren tot de machines van de MSIMD-klasse.

Programmeertalen en bijbehorende compilers voor MSIMD-machines bieden doorgaans taalconstructies waarmee de programmeur "grofkorrelig" parallellisme kan beschrijven. Binnen elke taak vectoriseert de compiler automatisch geschikte lussen. MSIMD-machines maken het, zoals men zich kan voorstellen, mogelijk om de beste van deze twee decompositieprincipes te gebruiken: vectorbewerkingen ("fijnkorrelig" parallellisme) voor die delen van het programma die daarvoor geschikt zijn, en de flexibele mogelijkheden van de MIMD architectuur voor andere delen van het programma.

In de loop van de jaren van ontwikkeling van de computertechnologie hebben multiprocessorsystemen een aantal ontwikkelingsfasen ondergaan. Historisch gezien was de SIMD-technologie de eerste die onder de knie werd. Er is momenteel echter een gestage belangstelling voor MIMD-architecturen. Deze interesse wordt voornamelijk bepaald door twee factoren:

  1. De MIMD-architectuur biedt grote flexibiliteit: met adequate hardware- en softwareondersteuning kan MIMD functioneren als een systeem voor één gebruiker dat hoogwaardige gegevensverwerking biedt voor een enkele applicatietaak, als een machine met meerdere programma's die meerdere taken parallel uitvoert, of als een combinatie van deze mogelijkheden.
  2. MIMD-architectuur kan optimaal profiteren van moderne microprocessortechnologie op basis van strikte kosten-prestatieoverwegingen. In feite zijn vrijwel alle moderne multiprocessorsystemen gebouwd op dezelfde microprocessors die te vinden zijn in personal computers, werkstations en kleine servers met één processor.

Een van de onderscheidende kenmerken van een computersysteem met meerdere processors is het communicatienetwerk waarmee processors met elkaar of met het geheugen zijn verbonden. Het communicatiemodel is zo belangrijk voor een multiprocessorsysteem dat veel prestatiekenmerken en andere schattingen worden uitgedrukt als de verhouding tussen verwerkingstijd en communicatietijd die overeenkomt met de taken die worden opgelost. Er zijn twee hoofdmodellen voor communicatie tussen processors: het ene is gebaseerd op het doorgeven van berichten, het andere is gebaseerd op het gebruik van gedeeld geheugen. In een multiprocessorsysteem met gedeeld geheugen schrijft één processor naar een specifieke geheugenlocatie en leest een andere processor vanaf die geheugenlocatie. Om dataconsistentie en processynchronisatie te garanderen, wordt uitwisseling vaak geïmplementeerd volgens het principe van wederzijds exclusieve toegang tot gedeeld geheugen met behulp van de “mailbox”-methode.

In lokale geheugenarchitecturen is het direct delen van geheugen niet mogelijk. In plaats daarvan hebben processors toegang tot gedeelde gegevens door berichten via een uitwisselingsnetwerk door te geven. De effectiviteit van het communicatieschema hangt af van de communicatieprotocollen, de onderliggende communicatienetwerken en de geheugenbandbreedte en communicatiekanalen.

Vaak, en onredelijk, wordt bij gedeelde geheugen- en vectormachines geen rekening gehouden met de kosten van communicatie, omdat de communicatieproblemen grotendeels verborgen zijn voor de programmeur. Er bestaat echter communicatie-overhead in deze machines en deze wordt bepaald door conflicten tussen bussen, geheugen en processors. Naarmate er meer processors aan een systeem worden toegevoegd, concurreren meer processen om dezelfde gegevens en bus te delen, wat leidt tot een verzadigingstoestand. Het systeemmodel met gedeeld geheugen is erg handig bij het programmeren en wordt soms gezien als een middel op hoog niveau om de impact van communicatie op de werking van het systeem te beoordelen, zelfs als het onderliggende systeem feitelijk wordt geïmplementeerd met behulp van lokaal geheugen en het doorgeven van berichten.

Bij circuitgeschakelde en pakketgeschakelde netwerken moet, naarmate de verkeersbehoefte toeneemt, rekening worden gehouden met de mogelijkheid van netwerkcongestie. Hier verbindt interprocessorcommunicatie netwerkbronnen: kanalen, processors, berichtbuffers. Het volume van de verzonden informatie kan worden verminderd door een zorgvuldige functionele ontleding van de taak en een zorgvuldige verzending van de uitgevoerde functies.

Bestaande MIMD-machines vallen dus in twee hoofdklassen, afhankelijk van het aantal processors dat wordt gecombineerd, wat zowel de methode van geheugenorganisatie als de methode van hun onderlinge verbindingen bepaalt.

De eerste groep omvat machines met een gemeenschappelijk (gedeeld) hoofdgeheugen, die tot enkele tientallen (meestal minder dan 32) processors combineren. Het relatief kleine aantal processors in dergelijke machines maakt het mogelijk om één gecentraliseerd gedeeld geheugen te hebben en processors en geheugen te combineren met behulp van een enkele bus. Als processors voldoende cachegeheugen hebben, kunnen de krachtige bus en het gedeelde geheugen geheugentoegang van meerdere processors mogelijk maken. Omdat er één geheugen is met dezelfde toegangstijd, worden deze machines ook wel UMA (Uniform Memory Access) genoemd. Deze organisatiemethode met relatief klein gedeeld geheugen is momenteel het populairst. De structuur van een dergelijk systeem wordt getoond in Fig. 10.1.

Rijst. 10.1. Typische architectuur van een multiprocessorsysteem met gedeeld geheugen.

De tweede groep machines bestaat uit grootschalige gedistribueerde geheugensystemen. Om een ​​groot aantal processors te ondersteunen moet het hoofdgeheugen onder hen worden verdeeld, anders is de geheugenbandbreedte wellicht niet voldoende om te voldoen aan verzoeken die afkomstig zijn van een zeer groot aantal processors. Uiteraard vereist deze aanpak ook de implementatie van communicatie tussen processors. In afb. Figuur 10.2 toont de structuur van een dergelijk systeem.

Naarmate het aantal processors groeit, kunnen we eenvoudigweg niet om de noodzaak heen om een ​​gedistribueerd geheugenmodel te implementeren met een supersnel netwerk voor de communicatie tussen processors. Met de snelle groei in processorprestaties en de daarmee samenhangende toegenomen vraag naar grotere geheugenbandbreedte, neemt de schaal van systemen (dat wil zeggen het aantal processors in een systeem) dat gedistribueerd geheugen nodig heeft af, evenals het aantal processors dat kan worden ondersteund. op één gedeelde bus en gedeeld geheugen.

Het distribueren van geheugen tussen individuele systeemknooppunten heeft twee belangrijke voordelen. Ten eerste is het een kosteneffectieve manier om de geheugenbandbreedte te vergroten, omdat de meeste toegangen parallel aan het lokale geheugen in elk knooppunt kunnen worden uitgevoerd. Ten tweede vermindert het de toegangslatentie (toegangstijd) tot het lokale geheugen. Deze twee voordelen verminderen verder het aantal processors waarvoor een gedistribueerde geheugenarchitectuur zinvol is.

Normaal gesproken worden I/O-apparaten, evenals het geheugen, verdeeld over knooppunten, en in werkelijkheid kunnen knooppunten bestaan ​​uit een klein aantal (2-8) processors die op een andere manier met elkaar zijn verbonden. Hoewel deze clustering van meerdere processors met geheugen en netwerkinterface behoorlijk nuttig kan zijn in termen van kostenefficiëntie, is het niet erg belangrijk om te begrijpen hoe zo'n machine werkt, dus blijven we voorlopig bij systemen met één processor per knooppunt. Het belangrijkste architectonische verschil dat bij gedistribueerde geheugenmachines moet worden opgemerkt, is hoe de communicatie wordt afgehandeld en wat het logische geheugenmodel is.

Rijst. 10.2. Typische architectuur van gedistribueerde geheugenmachines.

Manieren om de prestaties van vliegtuigen te verbeteren zijn ingebed in de architectuur. Aan de ene kant is dit een reeks processors, geheugeneenheden, invoer-/uitvoerapparaten en, natuurlijk, methoden om ze met elkaar te verbinden, d.w.z. communicatie omgeving. Aan de andere kant zijn dit de feitelijke acties van het vliegtuig om een ​​bepaald probleem op te lossen, en dit zijn operaties op basis van commando's en gegevens. Dit is eigenlijk de gehele hoofdbasis voor parallelle verwerking. Parallelle verwerking, die het idee belichaamt van de gelijktijdige uitvoering van verschillende acties, kent verschillende varianten: superscalariteit, pijplijnvorming,SIMD– uitbreidingen,Hyper Inrijgen, meerkernig. In principe zijn dit soort parallelle verwerking intuïtief, dus we zullen slechts kleine uitleg geven. Als een bepaald apparaat één handeling per tijdseenheid uitvoert, dan voert het duizend handelingen uit in duizend eenheden. Als we aannemen dat er vijf identieke onafhankelijke apparaten zijn die gelijktijdig kunnen werken, dan kan een systeem van vijf apparaten dezelfde duizend bewerkingen uitvoeren, niet in duizend, maar in tweehonderd tijdseenheden. Op dezelfde manier zal een systeem van N apparaten hetzelfde werk uitvoeren in 1000/N tijdseenheden. Soortgelijke analogieën zijn te vinden in het leven: als één soldaat in 10 uur een tuin opgraaft, dan zal een compagnie van vijftig soldaten met dezelfde capaciteiten, die tegelijkertijd werken, hetzelfde werk in 12 minuten kunnen doen (parallelle gegevensverwerking), en zelfs met liedjes (parallelle opdrachtverwerking).

Transportband verwerking . Wat is er nodig om twee reële getallen op te tellen, weergegeven in drijvende-kommavorm? Een hele hoop kleine handelingen zoals het vergelijken van orders, het uitlijnen van orders, het toevoegen van mantissen, normaliseren, enz. De processors van de eerste computers voerden al deze ‘microbewerkingen’ uit voor elk paar argumenten, de een na de ander, totdat ze het eindresultaat bereikten, en gingen daarna pas verder met het verwerken van het volgende paar termen. Het idee van pijplijnverwerking is om individuele fasen van het uitvoeren van een algemene bewerking te isoleren, en elke fase, nadat hij zijn werk heeft voltooid, zou het resultaat doorgeven aan de volgende, terwijl hij tegelijkertijd een nieuw deel van de invoergegevens ontvangt. We krijgen een duidelijke winst in verwerkingssnelheid door eerder gespreide bewerkingen te combineren.

Superscalariteit. Net als in het vorige voorbeeld worden alleen bij het construeren van een pijplijn verschillende hardware- en software-implementaties van functionele apparaten gebruikt, bijvoorbeeld twee of drie ALU's, drie of vier bemonsteringsapparaten.

Hyper Inrijgen. Een veelbelovende richting in de ontwikkeling van moderne microprocessors gebaseerd op multithreaded architectuur. Het belangrijkste obstakel voor het verhogen van de productiviteit door het vergroten van het aantal functionele apparaten is het organiseren van het efficiënt laden van deze apparaten. Als de huidige programmacodes niet alle functionele apparaten met werk kunnen laden, kun je de processor meer dan één taak (thread) laten uitvoeren, zodat extra threads alle functionele eenheden laden (net als bij multitasking).

Multi-core. Het is uiteraard mogelijk om multiprocessing op chipniveau te implementeren, d.w.z. plaats meerdere processors op één chip (Power 4). Maar als we een microprocessor samen met geheugen als systeemkernen nemen, zullen meerdere van dergelijke kernen op één chip een multi-corestructuur creëren. In dit geval worden functies (bijvoorbeeld interfaces van netwerk- en telecommunicatiesystemen) in de chip geïntegreerd, waarvoor meestal chipsets (Motorola MPC8260, Power 4-processors) worden gebruikt.

De implementatie van krachtige computertechnologie verloopt momenteel in vier hoofdrichtingen.

1. Vectortransportbandcomputers. Functionele pijplijnapparaten en een vectorinstructieset zijn twee kenmerken van dergelijke machines. In tegenstelling tot de traditionele aanpak werken vectoropdrachten op hele reeksen onafhankelijke gegevens, waardoor het efficiënt laden van beschikbare pijpleidingen mogelijk is. een commando als A=B+C kan betekenen dat er twee arrays moeten worden toegevoegd, en niet twee getallen. Een typische vertegenwoordiger van deze richting is de CRAY-familie van vectorpijplijncomputers, waaronder bijvoorbeeld CRAY EL, CRAY J90, CRAY T90 (in maart 2000 kocht het Amerikaanse bedrijf TERA de CRAY-divisie van Silicon Graphics, Inc.) .

2. Massaal parallelle computers met gedistribueerd geheugen. Het idee om computers van deze klasse te bouwen is triviaal: laten we seriële microprocessors nemen, elk van hun eigen lokaal geheugen voorzien, verbinding maken via een of ander communicatiemedium - dat is alles. Deze architectuur heeft veel voordelen: als er hoge prestaties nodig zijn, kunnen er meer processors worden toegevoegd of is de benodigde rekenkracht vooraf bekend, dan is het eenvoudig om de optimale configuratie te selecteren, enz.

Er is echter ook een beslissend “minpuntje” dat veel van de “pluspunten” tot niets reduceert. Feit is dat het onafhankelijk is, maar eerder een combinatie van de voorgaande drie. We zullen een computerknooppunt vormen uit verschillende processors (traditioneel of vectorpijplijn) en hun gemeenschappelijk geheugen. Als de ontvangen rekenkracht niet voldoende is, combineren we verschillende knooppunten met hogesnelheidskanalen. Dit soort architectuur wordt genoemd TROS SV1, PK Voorbeeld,Zon Sterrenvuur, N.E.C. SX-5, nieuwste IBM-modellen SP2

3. Parallelgedeelde geheugencomputers. Al het RAM-geheugen van dergelijke computers wordt gedeeld door meerdere identieke processors. Dit verwijdert de problemen van de vorige klasse, maar voegt nieuwe toe: het aantal processors met toegang tot gedeeld geheugen kan om puur technische redenen niet groot worden gemaakt. Dit gebied omvat veel moderne SMP-computers met meerdere processors of bijvoorbeeld individuele knooppunten van HP-computers Voorbeeld en zon Sterrenvuur.

4. Clustersystemen. De laatste richting is strikt genomen niet onafhankelijk, maar eerder een combinatie van de voorgaande drie. We zullen een computerknooppunt vormen uit verschillende processors (traditioneel of vectorpijplijn) en hun gemeenschappelijk geheugen. Als de ontvangen rekenkracht niet voldoende is, combineren we verschillende knooppunten met hogesnelheidskanalen. Dit soort architectuur wordt genoemd TROS, en CRAY's zijn op dit principe gebouwd SV1, PK Voorbeeld,Zon Sterrenvuur, N.E.C. SX-5, nieuwste IBM-modellen SP2 en anderen. Het is deze richting die momenteel het meest veelbelovend is voor het ontwerp van computers met recordprestatie-indicatoren.

Een supercomputer is een zeer krachtige computer met een prestatie van meer dan 10 MFLOPS. Tegenwoordig wordt dit resultaat niet alleen gedekt door werkstations, maar ook door topprestatie en pc. Begin jaren negentig werd de grens al rond de 300 MFLOPS getrokken. In 2001 kwamen specialisten uit twee toonaangevende ‘supercomputerlanden’, de VS en Japan, overeen om de lat te verhogen naar 5 GFLOPS.

De belangrijkste kenmerken die een supercomputer kenmerken, zijn dus de volgende:

  • hoogste prestaties;
  • het modernste technologische niveau (bijvoorbeeld GaAs-technologie);
  • specifieke architectonische oplossingen gericht op het verbeteren van de prestaties (bijvoorbeeld de aanwezigheid van bewerkingen op vectoren);
  • prijs, meestal meer dan 1-2 miljoen dollar.

Welke factor is doorslaggevend bij het bereiken van de huidige fantastische prestatieniveaus? Laten we ons wenden tot historische feiten. Eén van de allereerste EDSAC-computers (1949), die een kloktijd van 2 μs had, kon gemiddeld 100 rekenkundige bewerkingen per seconde uitvoeren. A topprestatie supercomputer CRAY C90 met een kloktijd van ongeveer 4 ns - ongeveer 1 miljard rekenkundige bewerkingen per seconde. Dus, prestatie Gedurende deze periode nam de snelheid van computers ongeveer 10 miljoen keer toe, maar de klokcyclustijd nam slechts 500 keer af. Vandaar, verhoging van de productiviteit gebeurde als gevolg van andere factoren, waarvan de belangrijkste het gebruik van nieuwe architecturale oplossingen is, in het bijzonder het principe parallelle gegevensverwerking.

Het heeft twee varianten: pijplijn en parallel.

Idee transportband verwerking bestaat uit het isoleren van individuele fasen van het uitvoeren van een algemene bewerking, en op een zodanige manier dat elke fase, nadat hij zijn werk heeft voltooid, het resultaat naar de volgende zou overbrengen, terwijl hij tegelijkertijd een nieuw deel van de invoergegevens accepteert. De winst in gegevensverwerkingssnelheid wordt verkregen door het combineren van eerder op afstand geplaatste bewerkingen.

Parallelle gegevensverwerking veronderstelt de aanwezigheid van verschillende functioneel onafhankelijke apparaten.

De wet van Amdahl

De wet van Amdahl

S<= 1/

waarbij S de versnelling is, f het aandeel bewerkingen is dat opeenvolgend moet worden uitgevoerd, p het aantal processors is.

Uitvloeisel van De wet van Amdahl: om de uitvoering van een programma q keer te versnellen, is het noodzakelijk om minstens q keer en minstens het (1-1/q)de deel van het programma te versnellen. Daarom, als je een programma 100 keer sneller moet maken vergeleken met de sequentiële versie, dan moet je minstens 99,99% van de code sneller maken!

De geschiedenis van de opkomst van parallellisme in computerarchitectuur

Alle moderne processors gebruiken een of andere vorm van

  • 1974 - ALLIAC: matrixprocessors (CU + matrix van 64 processors).
  • 1976 - CRAY1: vectorpijplijnprocessors. Introductie van vectoropdrachten die werken met hele reeksen onafhankelijke gegevens.
  •