Enkel instruktionsström |
Flera instruktionsströmmar | |
---|---|---|
Enskild dataström (enskild data) |
SISD (OKOD) |
MISD (MISD) |
Flera dataströmmar |
SIMD (JMD) |
MIMD (MKMD) |
Flynns taxonomi ( klassificering ) är en allmän klassificering av datorarkitekturer baserad på närvaron av parallellism i kommando- och dataströmmar. Den föreslogs av Michael Flynn 1966 [1] och utökades 1972 [2] [3] .
Hela variationen av datorarkitekturer i denna taxonomi av Flynn är reducerad till fyra klasser [4] :
Eftersom parallellism används som huvudkriteriet inom taxonomi, nämns Flynns taxonomi oftast i den tekniska litteraturen [5] [6] [7] [4] [8] vid klassificering av parallella datorsystem . MISD är en sällan använd arkitektur, främst i syfte att skydda mot fel (till exempel för het redundans av datorer i flygsystem som " Rymdfärjan " eller " Energi-Buran ", i SCADA , kritiska för fel, etc.) . Eftersom en SISD-maskin inte är en parallell maskin, och MISD inte är en typisk parallell arkitektur, faller alla parallella datorsystem i klassen antingen SIMD eller MIMD.
Med utvecklingen av tekniken började SIMD- och MIMD-klasserna täcka för många maskiner som skiljer sig radikalt från varandra. I detta avseende används i den tekniska litteraturen [9] [10] ett ytterligare kriterium - sättet att arbeta med minne från programmerarens synvinkel. Enligt detta kriterium delas system in i "system med delat minne" ( eng. delat minne , SM) och "system med distribuerat minne" ( eng. distribuerat minne , DM). Följaktligen är varje klass - SIMD och MIMD - uppdelad i underklasser: SM-SIMD/DM-SIMD och SM-MIMD/DM-MIMD.
Var särskilt uppmärksam på förtydligandet "ur programmerarens synvinkel". Faktum är att det finns datorsystem där minnet är fysiskt fördelat över systemets noder, men för alla processorer i systemet är allt synligt som ett gemensamt globalt adressutrymme. Se nedan för mer om detta.
SISD - arkitekturen är en traditionell von Neumann-arkitekturdator med en enda processor som exekverar den ena instruktionen efter den andra i sekvens och arbetar på en enda dataström. Den här klassen använder varken data eller instruktionsparallellism, och därför är SISD-maskinen inte parallell. Pipeline- , superskalär- och VLIW- processorer hänvisas också ofta till denna klass .
Typiska representanter för SIMD är vektorprocessorer , vanliga moderna processorer när de arbetar i läget för att utföra vektorförlängningsinstruktioner, såväl som en speciell underart med ett stort antal processorer - matrisprocessorer. I SIMD-maskiner laddar en processor en instruktion, en uppsättning data till dem, och utför operationen som beskrivs i denna instruktion på hela datamängden samtidigt.
Denna underklass inkluderar vektorprocessorer . Inom vetenskaplig beräkning innebär de flesta operationer att man tillämpar en enda operation på en stor mängd data. Dessutom kan denna operation utföras på varje dataelement oberoende av varandra, det vill säga det fanns dataparallellism, för vilken vektorprocessorer skapades.
Vektorprocessorer blev utbredda i början av 70-talet, främst i den tidens superdatorer (CDC STAR-100, Cray-1 ). Från mitten av 1970-talet till slutet av 1980-talet var alla superdatorer vektormaskiner, och en superdator på dessa år betydde en vektormaskin. Vektorsuperdatorer används fortfarande inom industrin och vetenskapliga datorer, och de finns fortfarande med i listan över produkter från nästan alla ledande superdatortillverkare: NEC , Fujitsu , Hitachi , Cray . Utvecklingen av miniatyrisering inom datorteknik har gjort det möjligt att lägga till en vektormetod för databehandling till moderna mikroprocessorer, där de representeras av en uppsättning speciella instruktioner-tillägg av assemblern [11] [12] . Genom att utföra dem växlar processorn till vektorläge och förvandlas till en SM-SIMD-maskin för denna tid.
Så kallade " matrisprocessorer " tillhör denna underklass . De är en uppsättning processorer som styrs av en kontrollprocessor, som utför en operation på sin egen del av data lagrad i lokalt minne på dess kommando. Eftersom det inte finns någon kommunikation mellan processorerna krävs ingen synkronisering, vilket gör det möjligt att uppnå enorma beräkningshastigheter och enkelt utöka systemet genom att bara öka antalet processorer. För att förstå arbetet med en matrisprocessor räcker det att föreställa sig morgonaerobicslektioner på tv, där en skådespelare sätter rörelser i studion och miljontals tittare upprepar dem till takten samtidigt över hela landet.
Eftersom matrisprocessorer endast kan användas för ett begränsat antal uppgifter, existerade de länge endast i form av experimentella, högt specialiserade maskiner. Dessutom krävde deras produktion skapandet av specialiserade processorer. Det första (ganska misslyckade) försöket att bygga en matrisprocessor var ILLIAC IV13] början av 70-talet, det andra kända försöket var CM-1- och CM-2- maskinerna från Thinking Machines och superdatorerna från MasPar i början 80 [13] . Utvecklingen av miniatyrisering inom datorer har gjort det möjligt att återgå till idén om matrisprocessorer och återuppliva den i grafikkort ( GPGPU ), som används för högpresterande datoranvändning.
Ett antal forskare inkluderar transportbandsdatorer till MISD- klassen , men detta har inte hittat slutgiltigt erkännande. Det är också möjligt att betrakta MISD-system som hot standby-system. Dessutom hänvisar vissa till MISD-arkitekturen som systoliska arrayer av processorer.
MIMD - klassen inkluderar multiprocessorsystem , där processorerna bearbetar flera dataströmmar. Detta inkluderar traditionella flerprocessormaskiner , flerkärniga och flertrådade processorer och datorkluster .
Genom att arbeta med minne delas denna klass in i underklasser.
Denna grupp inkluderar flerprocessormaskiner med delat minne , flerkärniga processorer med delat minne.
Det klassiska och vanligaste exemplet är multiprocessorer – multiprocessor SMP- servrar. I sådana maskiner är minnet synligt för varje processor som ett gemensamt adressutrymme , och processorerna kommunicerar med varandra över en gemensam adressbuss genom delade variabler . För varje processor är åtkomsten till valfri minnesplats densamma (se UMA ).
Som nämnts ovan kan minnet, som är synligt för programmeraren som ett gemensamt adressutrymme, fysiskt fördelas mellan noderna i systemet. En sådan underklass av maskiner kallas DSM-MIMD ( distributed shared memory MIMD ). I denna underklass av maskiner har varje processor sitt eget lokala minne, och processorn kommer åt andra minnesområden genom en höghastighetsanslutning. Eftersom åtkomst till olika delar av det delade minnet inte är detsamma (det är snabbare till sin lokala del, långsammare till andra) kallas sådana system NUMA (från Non-Uniform Memory Access ). Eftersom minnet är fysiskt fördelat blir det svårt för varje processor att se ändringarna som gjorts av andra processorer i minnet. Det finns flera sätt att lösa detta problem: genom cachekoherens - ccNUMA , utan cachekoherens - nccNUMA.
NUMA-system har en högre skalbarhet, vilket möjliggör skapandet av massivt parallella datorsystem, där antalet processorer når flera tusen.
Programmeringsmodellen i sådana system förblir densamma - exekveringstrådar utbyter data med varandra genom delade variabler.
Fördelar: Relativt lätt att programmera, SMP- stöd har funnits länge på alla större operativsystem .
Nackdelen med dessa maskiner är deras låga skalbarhet : ju fler processorer i systemet, desto högre blir belastningen på den gemensamma bussen . I kommersiella versioner av sådana system överstiger det maximala antalet processorer inte 64.
Denna underklass inkluderar MIMD-maskiner med distribuerat minne med flera processorer.
Varje processor har sitt eget lokala minne som inte är synligt för andra processorer. Varje processor i ett sådant system utför sin uppgift med sin egen uppsättning data i sitt lokala minne. Om en processor behöver data från en annan processors minne utbyter denna processor meddelanden med en annan processor, det vill säga i sådana system används programmeringsmodellen Message Passing , med hjälp av Parallel Virtual Machine (PVM) eller någon implementering av Message Passing Gränssnitt (MPI).
Den största fördelen med DM-MIMD-maskiner är deras höga skalbarhet , vilket gör det möjligt att skapa massivt parallella system med flera hundra tusen processorer.
Datorkluster som Beowulf tillhör också denna klass som nätverk av arbetsstationer .
I specialiserad litteratur [14] [15] kan man även hitta sådana underklasser av MIMD-klassen: SPMD ( enkelt program, flera data ) och MPMD ( flera program, flera data ).
SPMD (single program, multiple data) - beskriver ett system där endast ett enda program exekveras på alla processorer på en MIMD-maskin, och på varje processor bearbetar det olika datablock.
MPMD (flera program, flera data) - beskriver ett system, a) där masterprogrammet körs på en processor på MIMD-maskinen och slavprogrammet på den andra, vars arbete styrs av masterprogrammet (principmaster / slav eller herre/arbetare ); b) där olika program körs på olika noder i MIMD-maskinen som bearbetar samma datamatris på olika sätt (principen för kopplad analys ), för det mesta arbetar de oberoende av varandra, men då och då utbyter de data till gå till nästa steg.
Förhållandet mellan specifika maskiner och en specifik klass är starkt beroende av forskarens synvinkel. Så, transportörmaskiner kan tilldelas till SISD-klassen (pipeline - en enda processor) och till SIMD-klassen (vektordataström med en pipeline-processor) och till MISD-klassen (många pipelineprocessorer behandlar en dataström sekventiellt), och till MIMD-klassen - som exekvering av en sekvens av olika kommandon (operationer av pipelinesteg) med en multipel skalär dataström (vektor).
Med tanke på datorkomplexet på olika integrationsnivåer kan det hänföras till olika klasser: till exempel var ASCI Blue Pacific högpresterande massivt parallell superdator en DM-MIMD-maskin, där varje nod kommunicerade med en annan genom att skicka meddelanden, men varje nod noden i denna superdator var i sin tur en multiprocessor RS/6000 SMP-server, det vill säga det var en SM-MIMD-maskin. Samtidigt var ASCI Blue Mountain High-Performance Massively Parallel Supercomputer ett system av SMP-servrar (SM-MIMD) kopplade till en delad distribuerad delad minnesmaskin (det vill säga DSM-MIMD).