Symmetrisk multiprocessing

Diagram över ett symmetriskt multibearbetningssystem

Symmetrisk multiprocessing eller shared-memory multiprocessing ( SMP ) involverar en maskinvaru- och mjukvaruarkitektur för flera processorer där två eller flera identiska processorer är anslutna till ett enda delat huvudminne , har full tillgång till alla in- och utenheter och styrs av en enda operativsystemsinstans som behandlar alla processorer lika, utan att reservera någon för speciella ändamål. De flesta multiprocessorsystem använder idag en SMP-arkitektur. I fallet med flerkärniga processorer gäller SMP-arkitekturen för kärnorna och behandlar dem som separata processorer.

Professor John D. Kubiatowicz anser traditionellt att SMP-system innehåller processorer utan cacher. Culler och Pal-Singh nämner i sin bok "Parallel Computer Architecture: A Hardware/Software Approach" från 1998: "Termen SMP används ofta men orsakar lite förvirring. [...] Den mer exakta beskrivningen av vad som avses av SMP är en multiprocessor med delat minne där kostnaden för att komma åt en minnesplats är densamma för alla processorer, det vill säga den har enhetliga åtkomstkostnader när åtkomsten faktiskt är till minnet. Om platsen är cachad blir åtkomsten snabbare, men cacheåtkomsttider och minnesåtkomsttider är desamma på alla processorer."

SMP-system är tätt kopplade multiprocessorsystem med en pool av homogena processorer som körs oberoende av varandra. Varje processor, som kör olika program och arbetar med olika uppsättningar data, har förmågan att dela gemensamma resurser (minne, I/O-enhet, avbrottssystem och så vidare) som är anslutna med en systembuss eller en tvärbalk .

Design

SMP-system har centraliserat delat minne som kallas huvudminne (MM) som arbetar under ett enda operativsystem med två eller flera homogena processorer. Vanligtvis har varje processor ett tillhörande privat höghastighetsminne känt som cacheminne (eller cache) för att påskynda huvudminnets dataåtkomst och för att minska systembusstrafiken.

Processorer kan vara sammankopplade med hjälp av bussar, tvärbalksväxlar eller on-chip mesh-nätverk. Flaskhalsen i skalbarheten för SMP med hjälp av bussar eller tvärstavsswitchar är bandbredden och strömförbrukningen för sammankopplingen mellan de olika processorerna, minnet och diskarrayerna. Mesh-arkitekturer undviker dessa flaskhalsar och ger nästan linjär skalbarhet till mycket högre processorantal på uppoffring av programmerbarhet:

Allvarliga programmeringsutmaningar kvarstår med denna typ av arkitektur eftersom den kräver två distinkta programmeringssätt; en för själva processorerna och en för sammankopplingen mellan processorerna. Ett enda programmeringsspråk skulle behöva kunna inte bara partitionera arbetsbelastningen, utan också förstå minneslokaliteten, vilket är allvarligt i en mesh-baserad arkitektur.

SMP-system tillåter vilken processor som helst att arbeta med vilken uppgift som helst oavsett var data för den uppgiften finns i minnet, förutsatt att varje uppgift i systemet inte körs på två eller flera processorer samtidigt. Med korrekt operativsystemstöd kan SMP-system enkelt flytta uppgifter mellan processorer för att balansera arbetsbelastningen effektivt.

Historia

Det tidigaste produktionssystemet med flera identiska processorer var Burroughs B5000 , som var funktionell runt 1961. Men vid körning var detta asymmetriskt , med en processor begränsad till applikationsprogram medan den andra processorn huvudsakligen hanterade operativsystemet och hårdvaruavbrott. Burroughs D825 implementerade först SMP 1962.

IBM erbjöd datorsystem med dubbla processorer baserade på dess System/360 Model 65 och den närbesläktade Model 67 och 67–2. Operativsystemen som kördes på dessa maskiner var OS/360 M65MP och TSS/360 . Annan programvara som utvecklats vid universitet, särskilt Michigan Terminal System (MTS), använde båda processorerna. Båda processorerna kunde komma åt datakanaler och initiera I/O. I OS/360 M65MP kunde kringutrustning i allmänhet anslutas till båda processorerna eftersom operativsystemets kärna kördes på båda processorerna (dock med ett "stort lås" runt I/O-hanteraren). MTS-övervakaren (UMMPS) har förmågan att köras på båda processorerna i IBM System/360 modell 67–2. Supervisor-lås var små och användes för att skydda enskilda gemensamma datastrukturer som kan nås samtidigt från endera CPU:n.

Andra stordatorer som stödde SMP inkluderar UNIVAC 1108 II , som släpptes 1965, som stödde upp till tre processorer, och GE-635 och GE-645 , även om GECOS på GE-635-system med flera processorer kördes på ett asymmetriskt sätt som master-slave, till skillnad från Multics på multiprocessor GE-645-system, som kördes på ett symmetriskt sätt.

Från och med sin version 7.0 (1972), implementerade Digital Equipment Corporations operativsystem TOPS-10 SMP-funktionen, det tidigaste systemet som körde SMP var DECSystem 1077 dual KI10-processorsystemet. Senare kunde KL10-systemet samla upp till 8 processorer på ett SMP-sätt. Däremot var DECs första VAX- system med flera processorer, VAX-11/782, asymmetriskt, men senare VAX-multiprocessorsystem var SMP.

Tidiga kommersiella Unix SMP-implementationer inkluderade Sequent Computer Systems Balance 8000 (släpptes 1984) och Balance 21000 (släpptes 1986). Båda modellerna var baserade på 10 MHz National Semiconductor NS32032 -processorer, var och en med en liten genomskrivningscache kopplad till ett gemensamt minne för att bilda ett delat minnessystem . En annan tidig kommersiell Unix SMP-implementering var den NUMA-baserade Honeywell Information Systems Italy XPS-100 designad av Dan Gielan från VAST Corporation 1985. Dess design stödde upp till 14 processorer, men på grund av elektriska begränsningar var den största marknadsförda versionen ett system med dubbla processorer . Operativsystemet härleddes och portades av VAST Corporation från AT&T 3B20 Unix SysVr3-kod som används internt inom AT&T.

Det fanns tidigare icke-kommersiella UNIX-portar för multibearbetning, inklusive en port vid namn MUNIX skapad vid Naval Postgraduate School 1975.

Används

Tidsdelnings- och serversystem kan ofta använda SMP utan ändringar av applikationer, eftersom de kan ha flera processer som körs parallellt, och ett system med mer än en process som körs kan köra olika processer på olika processorer.

persondatorer är SMP mindre användbart för applikationer som inte har modifierats. Om systemet sällan kör mer än en process åt gången, är SMP endast användbar för applikationer som har modifierats för flertrådad (multitasked) bearbetning. Specialprogrammerad programvara kan skrivas eller modifieras för att använda flera trådar, så att den kan använda flera processorer.

Flertrådade program kan också användas i tidsdelnings- och serversystem som stöder multitrådning, vilket gör att de kan använda flera processorer mer.

Fördelar/nackdelar

I nuvarande SMP-system är alla processorer tätt kopplade inuti samma box med en buss eller switch; på tidigare SMP-system tog en enda CPU ett helt skåp. Några av komponenterna som delas är globalt minne, diskar och I/O-enheter. Endast en kopia av ett OS körs på alla processorer, och operativsystemet måste utformas för att dra fördel av denna arkitektur. Några av de grundläggande fördelarna innebär kostnadseffektiva sätt att öka genomströmningen. För att lösa olika problem och uppgifter använder SMP flera processorer på det ena problemet, känd som parallell programmering .

Det finns dock några gränser för skalbarheten av SMP på grund av cachekoherens och delade objekt.

Programmering

Uniprocessor- och SMP-system kräver olika programmeringsmetoder för att uppnå maximal prestanda. Program som körs på SMP-system kan uppleva en ökad prestanda även när de har skrivits för enprocessorsystem. Detta beror på att hårdvaruavbrott vanligtvis avbryter programexekveringen medan kärnan som hanterar dem kan köras på en ledig processor istället. Effekten i de flesta applikationer (t.ex. spel) är inte så mycket en prestandaökning som att programmet verkar mycket smidigare. Vissa applikationer, särskilt byggprogramvara och vissa distribuerade datorprojekt , körs snabbare med en faktor (nästan) antalet ytterligare processorer. (Kompilerare i sig är entrådade, men när man bygger ett programvaruprojekt med flera kompileringsenheter, om varje kompileringsenhet hanteras oberoende, skapar detta en pinsamt parallell situation över hela multi-kompileringsenhetsprojektet, vilket möjliggör nästan linjär skalning av kompileringen tid. Distribuerade datorprojekt är till sin natur parallella till sin design.)

Systemprogrammerare måste bygga in stöd för SMP i operativsystemet, annars förblir de extra processorerna inaktiva och systemet fungerar som ett enprocessorsystem.

SMP-system kan också leda till mer komplexitet vad gäller instruktionsuppsättningar. Ett homogent processorsystem kräver vanligtvis extra register för "speciella instruktioner" såsom SIMD (MMX, SSE, etc.), medan ett heterogent system kan implementera olika typer av hårdvara för olika instruktioner/användningar.

Prestanda

När mer än ett program körs samtidigt har ett SMP-system betydligt bättre prestanda än en uni-processor, eftersom olika program kan köras på olika CPU:er samtidigt. Omvänt asymmetrisk multiprocessing (AMP) vanligtvis bara en processor att köra ett program eller en uppgift åt gången. Till exempel kan AMP användas för att tilldela specifika uppgifter till CPU baserat på prioritet och vikten av uppgiftsslutförande. AMP skapades långt före SMP när det gäller att hantera flera processorer, vilket förklarar bristen på prestanda baserat på exemplet som tillhandahålls.

I de fall där en SMP-miljö bearbetar många jobb upplever administratörer ofta en förlust av maskinvarueffektivitet. Programvara har utvecklats för att schemalägga jobb och andra funktioner i datorn så att processoranvändningen når sin maximala potential. Bra mjukvarupaket kan uppnå denna maximala potential genom att schemalägga varje CPU separat, samt att kunna integrera flera SMP-maskiner och kluster.

Åtkomst till RAM är serialiserad; detta och med cachekoherens gör att prestandan släpar något efter antalet ytterligare processorer i systemet.

Alternativ

Diagram över ett typiskt SMP-system. Tre processorer är anslutna till samma minnesmodul via en systembuss- eller tvärbalksomkopplare

SMP använder en enda delad systembuss som representerar en av de tidigaste stilarna av multiprocessormaskinarkitekturer, som vanligtvis används för att bygga mindre datorer med upp till 8 processorer.

Större datorsystem kan använda nyare arkitekturer som NUMA (Non-Uniform Memory Access), som dedikerar olika minnesbanker till olika processorer. I en NUMA-arkitektur kan processorer komma åt lokalt minne snabbt och fjärrminne långsammare. Detta kan dramatiskt förbättra minneskapaciteten så länge som data är lokaliserade till specifika processer (och därmed processorer). På nackdelen gör NUMA kostnaden för att flytta data från en processor till en annan, som i arbetsbelastningsbalansering, dyrare. Fördelarna med NUMA är begränsade till särskilda arbetsbelastningar, särskilt på servrar där data ofta är starkt förknippade med vissa uppgifter eller användare.

Slutligen finns det datorklustrad multiprocessing (som Beowulf ), där inte allt minne är tillgängligt för alla processorer. Klustringstekniker används ganska flitigt för att bygga mycket stora superdatorer.

Variabel SMP

Variable Symmetric Multiprocessing (vSMP) är en specifik mobil användningsteknik initierad av NVIDIA. Denna teknik inkluderar en extra femte kärna i en fyrkärnig enhet, kallad Companion-kärnan, byggd speciellt för att utföra uppgifter med en lägre frekvens under mobilt aktivt vänteläge, videouppspelning och musikuppspelning.

Project Kal-El ( Tegra 3 ), patenterat av NVIDIA, var den första SoC (System on Chip) som implementerade denna nya vSMP-teknik. Den här tekniken minskar inte bara mobil energiförbrukning under aktivt vänteläge, utan maximerar också fyrkärniga prestanda under aktiv användning för intensiva mobila applikationer. Sammantaget hanterar denna teknik behovet av ökad batterilivsprestanda under aktiv användning och standby-användning genom att minska strömförbrukningen i mobila processorer.

Till skillnad från nuvarande SMP-arkitekturer är vSMP Companion-kärnan OS-transparent vilket innebär att operativsystemet och de körande applikationerna är helt omedvetna om denna extra kärna men fortfarande kan dra nytta av den. Några av fördelarna med vSMP-arkitekturen inkluderar cachekoherens, OS-effektivitet och effektoptimering. Fördelarna med denna arkitektur förklaras nedan:

  • Cachekoherens: Det finns inga konsekvenser för att synkronisera cacher mellan kärnor som körs vid olika frekvenser eftersom vSMP inte tillåter att den kompletterande kärnan och huvudkärnorna körs samtidigt.
  • OS-effektivitet: Det är ineffektivt när flera CPU-kärnor körs med olika asynkrona frekvenser eftersom detta kan leda till eventuella schemaläggningsproblem. [ hur? ] Med vSMP kommer de aktiva CPU-kärnorna att köras med liknande frekvenser för att optimera OS-schemaläggning.
  • Effektoptimering: I asynkron klockningsbaserad arkitektur är varje kärna på ett annat effektplan för att hantera spänningsjusteringar för olika driftsfrekvenser. Resultatet av detta kan påverka prestandan. [ hur? ] vSMP-tekniken kan dynamiskt aktivera och inaktivera vissa kärnor för aktiv och standby-användning, vilket minskar den totala strömförbrukningen.

Dessa fördelar leder till att vSMP-arkitekturen avsevärt gynnar [ påfågelsprosa ] jämfört med andra arkitekturer som använder asynkron klockningsteknik.

Se även

externa länkar