Enkelt instruktionsstrøm |
Flere instruktionsstrømme | |
---|---|---|
Enkelt datastrøm (enkelt data) |
SISD (OKOD) |
MISD (MISD) |
Flere datastrømme |
SIMD (JMD) |
MIMD (MKMD) |
Flynns taksonomi ( Klassifikation ) er en generel klassifikation af computerarkitekturer baseret på tilstedeværelsen af parallelisme i kommando- og datastrømme. Det blev foreslået af Michael Flynn i 1966 [1] og udvidet i 1972 [2] [3] .
Hele rækken af computerarkitekturer i denne taksonomi af Flynn er reduceret til fire klasser [4] :
Da parallelisme bruges som hovedkriteriet i taksonomi, er Flynns taksonomi oftest nævnt i den tekniske litteratur [5] [6] [7] [4] [8] ved klassificering af parallelle computersystemer . MISD er en sjældent brugt arkitektur, hovedsageligt med det formål at beskytte mod fejl (for eksempel til hot redundans af computere i flyvesystemer som " Space Shuttle " eller " Energy-Buran ", i SCADA , kritisk for fejl osv.) . Da en SISD-maskine ikke er en parallelmaskine, og MISD ikke er en typisk parallelarkitektur, falder alle parallelle computersystemer i klassen af enten SIMD eller MIMD.
Med udviklingen af teknologi begyndte SIMD- og MIMD-klasserne at dække for mange maskiner, der er radikalt forskellige fra hinanden. I den forbindelse er der i den tekniske litteratur [9] [10] brugt et yderligere kriterium - måden at arbejde med hukommelse fra programmørens synspunkt. Ifølge dette kriterium opdeles systemer i "systemer med delt hukommelse" ( eng. shared memory , SM) og "systemer med distribueret hukommelse" ( eng. distributed memory , DM). Følgelig er hver klasse - SIMD og MIMD - opdelt i underklasser: SM-SIMD/DM-SIMD og SM-MIMD/DM-MIMD.
Vær særlig opmærksom på præciseringen "fra programmørens synspunkt". Faktum er, at der er computersystemer, hvor hukommelsen er fysisk fordelt over systemets noder, men for alle systemets processorer er det hele synligt som et fælles globalt adresserum. Se nedenfor for mere om dette.
SISD - arkitekturen er en traditionel von Neumann-arkitekturcomputer med en enkelt processor, der udfører den ene instruktion efter den anden i rækkefølge og opererer på en enkelt datastrøm. Denne klasse bruger hverken data eller instruktions-parallelisme, og derfor er SISD-maskinen ikke parallel. Pipeline- , superscalar- og VLIW -processorer omtales også almindeligvis til denne klasse .
Typiske repræsentanter for SIMD er vektorprocessorer , almindelige moderne processorer, når de arbejder i tilstanden til at udføre vektorudvidelsesinstruktioner, såvel som en speciel underart med et stort antal processorer - matrixprocessorer. I SIMD-maskiner indlæser én processor én instruktion, et sæt data til dem, og udfører operationen beskrevet i denne instruktion på hele datasættet på samme tid.
Denne underklasse inkluderer vektorprocessorer . I videnskabelig databehandling involverer de fleste operationer anvendelse af en enkelt operation på en stor mængde data. Desuden kan denne operation udføres på hvert dataelement uafhængigt af hinanden, det vil sige, at der var dataparallelisme, til brug for hvilke vektorprocessorer blev oprettet.
Vektorprocessorer blev udbredt i begyndelsen af 70'erne, primært i datidens supercomputere (CDC STAR-100, Cray-1 ). Fra midten af 1970'erne til slutningen af 1980'erne var alle supercomputere vektormaskiner, og en supercomputer betød i disse år en vektormaskine. Vektorsupercomputere bruges stadig i industrien og videnskabelig databehandling, og de er stadig inkluderet på listen over produkter fra næsten alle førende supercomputerproducenter: NEC , Fujitsu , Hitachi , Cray . Udviklingen af miniaturisering i computerteknologi har gjort det muligt at tilføje en vektormetode til databehandling til moderne mikroprocessorer, hvor de er repræsenteret af et sæt specielle instruktioner-udvidelser af assembleren [11] [12] . Ved at udføre dem skifter processoren til vektortilstand og bliver til en SM-SIMD-maskine for denne gang.
Såkaldte " matrixprocessorer " hører til denne underklasse . De er en række processorer, der styres af én kontrolprocessor, som udfører én operation på sin egen del af data, der er gemt i lokal hukommelse på dens kommando. Da der ikke er nogen kommunikation mellem processorerne, kræves der ingen synkronisering, hvilket gør det muligt at opnå enorme computerhastigheder og nemt udvide systemet blot ved at øge antallet af processorer. For at forstå arbejdet med en matrixprocessor er det nok at forestille sig morgenaerobictimer på tv, hvor en skuespiller sætter bevægelser i studiet, og millioner af seere gentager dem til rytmen samtidigt over hele landet.
Da matrixprocessorer kun kan bruges til en begrænset række opgaver, eksisterede de i lang tid kun i form af eksperimentelle, højt specialiserede maskiner. Desuden krævede deres produktion oprettelsen af specialiserede forarbejdningsvirksomheder. Det første (temmelig mislykkede) forsøg på at bygge en matrixprocessor var ILLIAC IV13] begyndelsen af 70'erne, det andet berømte forsøg var CM-1 og CM-2 maskinerne fra Thinking Machines og supercomputerne fra MasPar i begyndelsen 80'erne [13] . Udviklingen af miniaturisering i computing har gjort det muligt at vende tilbage til ideen om matrix-processorer og genoplive den i grafikkort ( GPGPU ), som bruges til højtydende computing.
En række forskere inkluderer conveyor-computere til MISD -klassen , men dette har ikke fundet endelig anerkendelse. Det er også muligt at betragte MISD-systemer som varme standby-systemer. Derudover refererer nogle til MISD-arkitekturen som systoliske arrays af processorer.
MIMD - klassen inkluderer multiprocessorsystemer , hvor processorerne behandler flere datastrømme. Dette omfatter traditionelle multiprocessormaskiner , multi-core og multi-threaded processorer og computerklynger .
Ved at arbejde med hukommelse er denne klasse opdelt i underklasser.
Denne gruppe omfatter multiprocessor-maskiner med delt hukommelse , multi-core-processorer med delt hukommelse.
Det klassiske og mest almindelige eksempel er multiprocessorer - multiprocessor SMP - servere. I sådanne maskiner er hukommelsen synlig for hver processor som et fælles adresserum , og processorerne kommunikerer med hinanden over en fælles adressebus gennem delte variabler . For hver processor er adgangen til enhver hukommelsesplacering den samme (se UMA ).
Som nævnt ovenfor kan hukommelsen, der er synlig for programmøren som ét fælles adresserum, fysisk fordeles mellem systemets noder. En sådan underklasse af maskiner kaldes DSM-MIMD ( distributed shared memory MIMD ). I denne underklasse af maskiner har hver processor sin egen lokale hukommelse, og processoren får adgang til andre områder af hukommelsen gennem en højhastighedsforbindelse. Da adgangen til forskellige dele af den delte hukommelse ikke er den samme (den er hurtigere til dens lokale del, langsommere til andre), kaldes sådanne systemer NUMA (fra Non-Uniform Memory Access ). Fordi hukommelsen er fysisk fordelt, bliver det vanskeligt for hver processor at se ændringerne foretaget af andre processorer i hukommelsen. Der er flere måder at løse dette problem på: gennem cache kohærens - ccNUMA , uden cache kohærens - nccNUMA.
NUMA-systemer har en højere skalerbarhed, hvilket gør det muligt at skabe massivt parallelle computersystemer, hvor antallet af processorer når op på flere tusinde.
Programmeringsmodellen i sådanne systemer forbliver den samme - udførelsestråde udveksler data med hinanden gennem delte variable.
Fordele: Relativt let at programmere, SMP -understøttelse har eksisteret i lang tid på alle større operativsystemer .
Ulempen ved disse maskiner er deres lave skalerbarhed : Jo flere processorer i systemet, jo højere bliver belastningen på den fælles bus . I kommercielle versioner af sådanne systemer overstiger det maksimale antal processorer ikke 64.
Denne underklasse omfatter MIMD-maskiner med multiprocessorer med distribueret hukommelse.
Hver processor har sin egen lokale hukommelse, der ikke er synlig for andre processorer. Hver processor i et sådant system udfører sin opgave med sit eget sæt af data i sin lokale hukommelse. Hvis en processor har brug for data fra en anden processors hukommelse, udveksler denne processor meddelelser med en anden processor, det vil sige, i sådanne systemer bruges Message Passing - programmeringsmodellen ved hjælp af den parallelle virtuelle maskine (PVM) eller en eller anden implementering af meddelelsesoverførslen Interface (MPI).
Den største fordel ved DM-MIMD-maskiner er deres høje skalerbarhed , som gør det muligt at skabe massivt parallelle systemer med flere hundrede tusinde processorer.
Computerklynger som Beowulf tilhører også denne klasse som netværk af arbejdsstationer .
I speciallitteratur [14] [15] kan man også finde sådanne underklasser af MIMD-klassen: SPMD ( enkelt program, flere data ) og MPMD ( flere programmer, flere data ).
SPMD (single program, multiple data) - beskriver et system, hvor kun et enkelt program udføres på alle processorer på en MIMD-maskine, og på hver processor behandler det forskellige datablokke.
MPMD (flere programmer, flere data) - beskriver et system, a) hvor masterprogrammet kører på en processor på MIMD-maskinen og slaveprogrammet på den anden, hvis arbejde styres af masterprogrammet ( principmaster / slave eller herre/arbejder ); b) hvor forskellige programmer kører på forskellige noder på MIMD-maskinen, som behandler det samme dataarray på forskellige måder (princippet om koblet analyse ), for det meste arbejder de uafhængigt af hinanden, men fra tid til anden udveksler de data til gå til næste trin.
Forholdet mellem specifikke maskiner og en bestemt klasse er meget afhængig af forskerens synspunkt. Så transportbåndsmaskiner kan tildeles til SISD-klassen (pipeline - en enkelt processor) og til SIMD-klassen (vektordatastrøm med en pipeline-processor) og til MISD-klassen (mange pipeline-processorer behandler en datastrøm sekventielt). og til MIMD-klassen - som udførelse af en sekvens af forskellige kommandoer (operationer af pipeline-trin) med en multipel skalar datastrøm (vektor).
I betragtning af computerkomplekset på forskellige integrationsniveauer, kan det tilskrives forskellige klasser: for eksempel var ASCI Blue Pacific højtydende massivt parallelle supercomputer en DM-MIMD-maskine, hvor hver node kommunikerede med en anden ved hjælp af meddelelsesoverførsel, men hver node i denne supercomputer var til gengæld en multiprocessor RS/6000 SMP-server, det vil sige, det var en SM-MIMD-maskine. På samme tid var ASCI Blue Mountain High-Performance Massively Parallel Supercomputer et system af SMP-servere (SM-MIMD) forbundet til en delt distribueret delt hukommelsesmaskine (det vil sige DSM-MIMD).