Multiprocessor

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 29 april 2016; kontroller kräver 16 redigeringar .

En multiprocessor (av engelska  multiprocessor, multiprocessing [1] ) är en underklass av multiprocessordatorsystem där det finns flera processorer och ett adressutrymme , synligt för alla processorer. I Flynns taxonomi tillhör multiprocessorer klassen SM-MIMD- maskiner. Multiprocessorn kör en kopia av operativsystemet med en uppsättning tabeller, inklusive de som håller reda på vilka minnessidor som är lediga.

Klassificering

Beroende på vilka roller processorer spelar i ett multiprocessorsystem skiljer de mellan: symmetriska multiprocessorer (SMP) - alla processorer spelar samma roll och har samma tillgång till minne och kringutrustning, och asymmetriska multiprocessorer (AMP) - processorer spelar olika roller eller åtkomst till kringutrustning på olika sätt. AMP-tekniken var bara en övergångsperiod på 60-talet tills SMP-tekniken utvecklades.

Det finns flera typer av multiprocessorer enligt metoden för att adressera minne, inklusive: UMA (Uniform Memory Access), NUMA (Non Uniform Memory Access) och COMA (Cache Only Memory Access).

Dessutom kan multiprocessorer vara av homogen typ, när alla processorer i systemet är lika, eller av heterogen typ, när processorerna i systemet är av olika typ.

Programmering

Vid programmering av multiprocessorer kan två programmeringsmodeller användas : multithreading , där en exekveringstråd startas på varje processor, och de utbyter data med varandra genom delade variabler i ett delat minne, eller (mer komplext) meddelandeöverföring , när en separat process startas på varje processor, och de kommunicerar med varandra genom att utbyta meddelanden. Multithreading används antingen explicit (i kompilerade programmeringsspråk via system -API :er (t.ex. i C / C++ via POSIX Threads , och via boost::thread eller std::thread i C++ sedan C++11-standarden), i tolkade språk ( Java och C# ) med hjälp av språkkonstruktioner), antingen implicit ( deklarativt med hjälp av kompilatordirektiv ( OpenMP ) eller automatiskt av kompilatorn själv ( High Performance Fortran )).

Historik

Multiprocessormaskiner (SMP/UMA) introducerades på marknaden tidigt i slutet av 1980-talet och början av 1990-talet, först som minisuperdatorer ( till exempel produkter från Alliant , Convex , Sequent , Encore och Synapse ) . ), sedan som databehandling . servrar och blev snabbt populär på marknaden för serverhårdvara . De första multiprocessorerna med x86 -arkitektur baserad på Intel 80386- och Intel 486-processorer var Compaq SystemPro-servrar, som kom in på marknaden i slutet av 1989 - början av 1990. Tillväxten av erbjudanden på x86 -multiprocessorservermarknaden ledde till att Intel skapade MultiProcessor Specification [2] , som blev de facto-standarden för x86 SMP-maskiner under många år .

Exempel på SMP/UMA-system 1998 [3]
Systemet CPU Maximalt antal processorer
SGI Power Challenge MIPS R10000 36
DEC AlphaServer 8400 Alpha 21164 fjorton
Sön E6000 UltraSPARC II trettio
Sön E10000 UltraSPARC II 64
HP/konvext exemplar PA-8000 16
Cray-T90 Cray vektor 32

De första multiprocessorerna av ccNUMA- typ var Kendall Square Researchs KSR1 -dator och Denelcors Denelcor HEP i mitten av 1980-talet .

Exempel på ccNUMA-system 1998 [4]
Systemet CPU Processorer per nod Maximalt antal processorer
Data Allmänt AV-20000 Pentium fyra 32
Sequent NUMA-Q 2000 Pentium fyra 32
SGI Origin 2000 MIPS R10000 2 128
HP Exemplar X-Class PA-8000 16 256
HP 9000 V-klass

Multiprocessorer utan cachekoherens (nccNUMA) skapades också:

Exempel på nccNUMA-system 1998 [5]
Systemet CPU Processorer per nod Maximalt antal processorer
Cray-T3E Alpha 21164 2 2048
BBN TC-2000 Motorola MC88100 ett 256
BBN TC-2000 Motorola 604 2 512

Utvecklingen av miniatyrisering inom datorelektronik gjorde det möjligt att placera flera processorer i ett paket eller på ett chip (engelsk chip-level multiprocessing, CMP), vilket skapade flerkärniga processorer . Detta gjorde det möjligt att öka prestanda hos processorer genom att helt enkelt öka antalet beräkningskärnor med enkel design, istället för de traditionella försöken att öka klockhastigheten eller komplicera beräkningspipelinen för en enkärnig processor. Samtidigt använder flerkärniga processorer minnet mer effektivt, arbetar med flertrådade applikationer, förbrukar lite ström och förbrukar inte mycket ström, vilket är idealiskt för att skala datacenter.

Sedan cirka 2005 har alla processorer för konsumentdatormarknaden släppts i en flerkärnig version , det vill säga de är i huvudsak miniatyr multiprocessorer (mer exakt, SMP-maskiner med UMA-minnesåtkomst, med vissa reservationer). Ytterligare utveckling av denna riktning ledde till uppkomsten av flerkärniga multiprocessorer - system där det finns flera processorer, och dessa processorer innehåller i sin tur flera kärnor. Den vanligaste versionen av servrar i datacenter för 2016 är en server med två 8-kärniga Intel Xeon- , Oracle SPARC- eller IBM POWER -klassprocessorer , som också stöder samtidig exekvering av flera trådar i hårdvara .

Se även

Litteratur

Anteckningar

  1. "1930–35; multi- + process + -ing 1 " - Dictionary.com Unabridged: " multiprocessor Arkiverad 26 december 2015 på Wayback Machine "
  2. Multiprocessorspecifikation . Hämtad 17 oktober 2013. Arkiverad från originalet 9 januari 2017.
  3. Severance_Dowd, 1998 , sid. 260.
  4. Severance_Dowd, 1998 , sid. 263.
  5. Severance_Dowd, 1998 , sid. 264.

Länkar