En multiprocessor (fra engelsk multiprocessor, multiprocessing [1] ) er en underklasse af multiprocessor -computersystemer, hvor der er flere processorer og ét adresserum , synligt for alle processorer. I Flynns taksonomi hører multiprocessorer til klassen af SM-MIMD- maskiner. Multiprocessoren kører én kopi af operativsystemet med ét sæt tabeller, inklusive dem, der holder styr på, hvilke hukommelsessider der er ledige.
I henhold til de roller, som processorer spiller i et multiprocessorsystem, skelner de mellem: symmetriske multiprocessorer (SMP) - alle processorer spiller den samme rolle og har samme adgang til hukommelse og periferiudstyr, og asymmetriske multiprocessorer (AMP) - processorer spiller forskellige roller eller få adgang til ydre enheder forskelligt. AMP-teknologi var kun en overgangsperiode i 60'erne, indtil SMP-teknologien blev udviklet.
Der er flere typer multiprocessorer i henhold til metoden til adressering af hukommelse, herunder: UMA (Uniform Memory Access), NUMA (Non Uniform Memory Access) og COMA (Cache Only Memory Access).
Derudover kan multiprocessorer være af en homogen type, når alle processorer i systemet er ens, eller af en heterogen type, når processorerne i systemet er af forskellig type.
Ved programmering af multiprocessorer kan der bruges to programmeringsmodeller : multithreading , hvor en udførelsestråd lanceres på hver processor, og de udveksler data med hinanden gennem delte variable i en delt hukommelse, eller (mere kompleks) meddelelsesoverførsel , når en separat proces lanceres på hver processor, og de kommunikerer med hinanden ved at udveksle beskeder. Multithreading bruges enten eksplicit (i kompilerede programmeringssprog via system- API'er (f.eks. i C / C++ via POSIX Threads , og via boost::thread eller std::thread i C++ siden C++11-standarden), i fortolkede sprog ( Java og C# ) ved hjælp af sprogkonstruktioner), enten implicit ( deklarativt ved hjælp af compiler-direktiver ( OpenMP ) eller automatisk af compileren selv ( High Performance Fortran )).
Multiprocessor-maskiner (SMP/UMA) blev introduceret til markedet tidligt i slutningen af 1980'erne og begyndelsen af 1990'erne, først som mini-supercomputere ( f.eks. produkter fra Alliant , Convex , Sequent , Encore og Synapse ) . ) , derefter som databehandling . servere og vandt hurtigt popularitet på serverhardwaremarkedet . De første multiprocessorer med x86- arkitektur baseret på Intel 80386- og Intel 486-processorer var Compaq SystemPro-servere, som kom på markedet i slutningen af 1989 - begyndelsen af 1990. Væksten i tilbud på x86 -multiprocessorservermarkedet førte til, at Intel skabte MultiProcessor Specification [2] , som blev de facto-standarden for x86 SMP-maskiner i mange år .
Eksempler på SMP/UMA-systemer i 1998 [3]System | CPU | Maksimalt antal processorer |
---|---|---|
SGI Power Challenge | MIPS R10.000 | 36 |
DEC AlphaServer 8400 | Alpha 21164 | fjorten |
Sun E6000 | UltraSPARC II | tredive |
Søn E10000 | UltraSPARC II | 64 |
HP/konveks eksemplar | PA-8000 | 16 |
Cray-T90 | Cray vektor | 32 |
De første multiprocessorer af ccNUMA- typen var Kendall Square Researchs KSR1- computer og Denelcors Denelcor HEP i midten af 1980'erne.
Eksempler på ccNUMA-systemer i 1998 [4]System | CPU | Processorer pr. node | Maksimalt antal processorer |
---|---|---|---|
Data Generelt AV-20000 | Pentium | fire | 32 |
Sequent NUMA-Q 2000 | Pentium | fire | 32 |
SGI Origin 2000 | MIPS R10.000 | 2 | 128 |
HP Exemplar X-Class | PA-8000 | 16 | 256 |
HP 9000 V-klasse |
Multiprocessorer uden cache-kohærens (nccNUMA) blev også oprettet:
Eksempler på nccNUMA-systemer i 1998 [5]System | CPU | Processorer pr. node | Maksimalt antal processorer |
---|---|---|---|
Cray-T3E | Alpha 21164 | 2 | 2048 |
BBN TC-2000 | Motorola MC88100 | en | 256 |
BBN TC-2000 | Motorola 604 | 2 | 512 |
Udviklingen af miniaturisering i computerelektronik gjorde det muligt at placere flere processorer i en pakke eller på en chip (engelsk chip-level multiprocessing, CMP), hvilket skabte multi-core processorer . Dette gjorde det muligt at øge ydeevnen af processorer ved blot at øge antallet af beregningsmæssige kerner af simpelt design, i stedet for de traditionelle forsøg på at øge clock-hastigheden eller komplicere den beregningsmæssige pipeline af en single-core processor. Samtidig bruger multi-core processorer hukommelse mere effektivt, arbejder med multi-threaded applikationer, bruger lidt strøm og spreder ikke meget strøm, hvilket er ideelt til at skalere datacentre.
Siden omkring 2005 er alle processorer til forbrugercomputermarkedet blevet frigivet i en multi-core version , det vil sige, at de i det væsentlige er miniature multiprocessorer (mere præcist, SMP-maskiner med UMA-hukommelsesadgang, med nogle forbehold). Yderligere udvikling af denne retning førte til fremkomsten af multi-core multiprocessorer - systemer, hvor der er flere processorer, og disse processorer indeholder igen flere kerner. Den mest almindelige version af servere i datacentre for 2016 er en server med to 8-core Intel Xeon , Oracle SPARC eller IBM POWER klasse processorer , som også understøtter samtidig udførelse af flere tråde i hardware .
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |