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.
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.
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 )).
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 .
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 .
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å:
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 .
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |