Symmetrisk multiprocessing

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

Symmetrisk multiprocessing ( eng.  symmetric multiprocessing , förkortat SMP ) - arkitektur för multiprocessordatorer , där två eller flera identiska processorer med jämförbar prestanda är anslutna på ett enhetligt sätt till delat minne (och kringutrustning) och utför samma funktioner (varför, i i själva verket kallas systemet symmetriskt ) [1] . På engelska kallas SMP-system även för tätt kopplade multiprocessorer [2] , eftersom processorer i denna klass av system är nära anslutna till varandra genom en gemensam buss och har lika tillgång till alla datorsystemresurser (minne och I/O-enheter) och kontrolleras alla med en kopia av operativsystemet .

I Flynns taxonomi tillhör SMP-maskiner klassen SM-MIMD- maskiner. De flesta multiprocessorsystem använder idag SMP-arkitekturen.

Beskrivning

SMP-system tillåter vilken processor som helst att arbeta med vilken uppgift som helst, oavsett var i minnet data för den uppgiften är lagrad - med korrekt stöd av operativsystemet kan SMP-system enkelt flytta uppgifter mellan processorer och effektivt fördela belastningen.

Olika SMP-system kopplar processorer till delat minne på olika sätt. Det enklaste och billigaste tillvägagångssättet är en systembussanslutning [ 3 ] [4] . I det här fallet kan endast en processor komma åt minnet vid varje given tidpunkt, vilket sätter en betydande gräns för antalet processorer som stöds i sådana system. Ju fler processorer, desto större belastning på den delade bussen, desto längre måste varje processor vänta tills bussen är ledig för att komma åt minnet. Minskningen av den totala prestandan för ett sådant system med en ökning av antalet processorer sker mycket snabbt, så vanligtvis i sådana system överstiger inte antalet processorer 2-4. Ett exempel på SMP-maskiner med detta sätt att ansluta processorer är alla flerprocessorservrar på ingångsnivå.

Det andra sättet att ansluta processorer är genom en switchad anslutning (tvärbalksomkopplare) [3] [5] . Med en sådan anslutning är allt delat minne uppdelat i minnesbanker, varje minnesbank har sin egen buss, och processorerna är anslutna till alla bussar och har tillgång till någon av minnesbankerna genom dem. En sådan anslutning är mer komplex i kretsar, men den tillåter processorer att komma åt delat minne samtidigt. Detta gör att du kan öka antalet processorer i systemet upp till 8-16 utan en märkbar minskning av den totala prestandan. Ett exempel på sådana SMP-maskiner är RS/6000 multiprocessorarbetsstationer.

Fördelar och nackdelar

SMP är det enklaste och mest kostnadseffektiva sättet att skala ett datorsystem: genom att öka antalet processorer. Programmering är också enkelt: att använda trådar och relaterade mekanismer för att utbyta data mellan dem genom delade variabler i minnet.

SMP används ofta inom vetenskap, industri och näringsliv, där mjukvara är speciellt utformad för multi-threaded exekvering. Samtidigt är de flesta konsumentprodukter, som textredigerare och datorspel, skrivna på ett sådant sätt att de inte kan dra nytta av SMP-systemens styrkor. När det gäller spel beror detta ofta på att optimering av programmet för SMP-system kommer att leda till prestandaförlust när man arbetar på system med en processor, som tills nyligen ockuperade en stor del av PC -marknaden . (Moderna flerkärniga processorer är bara ytterligare en hårdvaruimplementering av SMP.) På grund av de olika programmeringsmetodernas natur, för maximal prestanda, kommer separata konstruktioner att krävas för att stödja en enkelkärnig processor och SMP-system. Ändå får program som körs på SMP-system liten prestandavinst, även om de skrevs för system med en processor. Detta beror på att hårdvaruavbrott , som vanligtvis pausar exekveringen av ett program som ska bearbetas av kärnan, kan bearbetas på en ledig processor (processorkärna). Effekten i de flesta applikationer är inte så mycket en prestandahöjning, utan en känsla av att programmet går smidigare. I vissa applikationsprogram (särskilt: programvarukompilatorer och vissa distribuerade datorprojekt ) kommer prestandaökningen att vara nästan direkt proportionell mot antalet ytterligare processorer.

Fel på en processor gör att hela systemet inte fungerar och kräver en omstart av hela systemet för att inaktivera den trasiga processorn. Felet i en processorkärna resulterar ofta i att hela flerkärniga processorn går sönder, om den flerkärniga processorn inte är utrustad med inbyggt skydd som inaktiverar den trasiga processorkärnan och genom detta tillåter friska processorkärnor att fortsätta fungera normalt .

Processorgräns

Med en ökning av antalet processorer ökar kravet på minnesbussens bandbredd märkbart. Detta sätter en gräns för antalet processorer i SMP-arkitekturen. Moderna SMP-system möjliggör effektiv drift med 16 processorer.

Cachekoherensproblem

Varje modern processor är utrustad med en multi-level cache för snabbare hämtning av data och maskininstruktioner från huvudminnet, vilket är långsammare än processorn. I ett multiprocessorsystem minskar närvaron av cacheminne i processorer belastningen på den gemensamma bussen eller på uppringd anslutning, vilket har en mycket gynnsam effekt på systemets totala prestanda. Men eftersom varje processor är utrustad med ett eget individuellt cacheminne finns det en risk att cacheminnet hos en processor får ett variabelt värde som skiljer sig från det som lagras i huvudminnet och i cacheminnet hos en annan processor. Föreställ dig att processorn ändrar värdet på en variabel i sin cache, och en annan processor begär denna variabel från huvudminnet, och den (den andra processorn) kommer att få ett ogiltigt värde för variabeln. Eller, till exempel, I/O-undersystemet skriver ett nytt värde på en variabel till huvudminnet, och den föråldrade finns fortfarande i processorcachen. Lösningen på detta problem anförtros åt cachekoherensprotokollet , som är utformat för att säkerställa koherens ("koherens") av cacheminnet för alla processorer och huvudminnet utan förlust av övergripande prestanda [6] .

Stöd för operativsystem

SMP-stöd måste vara inbyggt i operativsystemet, annars kommer de extra processorerna att vara inaktiva och systemet kommer att fungera som en enda processor. (Egentligen är detta problem även relevant för system med en processor med flerkärniga processorer.) De flesta moderna operativsystem stöder symmetrisk multiprocessing, men i varierande grad.

Stöd för multiprocessing i Linux OS lades till i kärnversion 2.0 [7] och förbättrades i version 2.6. Windows NT -serien av operativsystem skapades ursprungligen med stöd för flera processorer. ( Windows 9x SMP stöddes inte.)

Alternativ

SMP är bara ett alternativ för att bygga en multiprocessormaskin. Ett annat koncept är NUMA , som förser processorer med separata minnesbanker. Detta gör att processorer kan arbeta med minne parallellt, och det kan avsevärt förbättra minnesbandbredden när data är processbunden (och därmed processorbunden). Å andra sidan ökar NUMA kostnaden för att flytta data mellan processorer, vilket gör att lastbalansering blir dyrare. Fördelarna med NUMA är begränsade till ett specifikt utbud av uppgifter, främst servrar, där data ofta hårdkodas till specifika uppgifter eller användare.

Ett annat koncept är asymmetrisk multiprocessing ( ASMP ), där individuella specialiserade processorer används för specifika uppgifter, och kluster multiprocessing ( Beowulf ), där inte allt minne är tillgängligt för alla processorer. Sådana tillvägagångssätt används inte ofta (även om högpresterande 3D-kretsuppsättningar i moderna grafikkort kan betraktas som en form av asymmetrisk multiprocessing), medan klustersystem används i stor utsträckning för att bygga mycket stora superdatorer .

Se även

Anteckningar

  1. Stallings, 2011 , sid. 33.
  2. Chevance, 2004 , sid. 265.
  3. 1 2 Severance_Dowd, 1998 , sid. 195.
  4. Chevance, 2004 , sid. 266.
  5. Chevance, 2004 , sid. 267.
  6. Severance_Dowd, 1998 , sid. 198.
  7. Dhamdhere, 2008 , sid. 355.

Litteratur

Länkar