Minne til datasystemer. Hovedminnesystemmoduler

MINNEORGANISASJON I DATAMASKINER

Formål, grunnleggende parametere og

Klassifisering av typer minne

Minneenheter (lagringsenheter) VM er designet for opptak, lagring og lesing av informasjon presentert i digital form / 2,3 /. Minneenheter, som prosessorer, opererer med to typer informasjon - programmer og data, så egenskapene til minnet bestemmer i stor grad ytelsen og funksjonaliteten til en VM.

Minneenheter fungerer i to moduser - minnetilganger og Oppbevaring... I minnetilgangsmodus registreres informasjon eller leses informasjon fra minnet. Hvis minnet ikke er tilgjengelig, går det inn i lagringsmodus.

Hovedparametrene som karakteriserer minneenheter er informasjonskapasitet (volum), ytelse, strømforbruk og kostnad / 2,5,8 /.

Informasjonskapasitet (volum) minneenhet bestemmes av maksimal mengde lagret informasjon og måles i byte, KB, MB, GB og TB.

1 KB = 2 10 byte; 1 MB = 2 20 byte; 1 GB = 2 30 byte og 1 TB = 2 40 byte.

Minneytelse er preget av følgende hovedparametre:

prøvetaking (tilgang) tid t B, bestemt av tidsintervallet mellom øyeblikkene til samplingssignalet (begynnelsen av lesesyklusen) og mottak av lesedata ved minneutgangen;

syklus varighet t Ц, som bestemmes av det minste tillatte tidsintervallet mellom påfølgende minnetilganger. Tatt i betraktning at minnetilgang betyr skriving eller lesing, noen ganger skiller de seg varigheten av lesesyklusen t C.RT... og varigheten av opptakssyklusen t Ts.ZP. for minnetyper der disse syklustidene er forskjellige, dvs. t CH. ≠ t C.ZP .

I det generelle tilfellet består tilgangssyklusen av en hente- (tilgangs-) fase og en minneregenererings- (gjenopprettingsfase), derfor t C> t V.

Minneytelse kan også karakteriseres av overføringshastigheten til data skrevet eller lest og målt i MB/s.

Strømforbruket for mange typer minne i tilgangsmodus er betydelig høyere enn i lagringsmodus. Ikke-flyktig minne i lagringsmodus bruker ikke strøm i det hele tatt. Men en rekke typer minne, for eksempel elektronisk dynamisk minne, krever regenereringssykluser i lagringsmodus, så strømforbruket i denne modusen er sammenlignbart med strømforbruket i tilgangsmodus.

For å sammenligne forskjellige typer minne er det praktisk å bruke strømforbruket og kostnadene til minneenheter redusert til én celle (dvs. spesifikke).

En viktig minneparameter er også bitbredden til minnedatabussen, definere antall byte som en lese- eller skriveoperasjon kan utføres med samtidig.

VM-minneenheter kan klassifiseres i henhold til forskjellige kriterier: etter det fysiske operasjonsprinsippet, etter funksjonelt formål, organisering, behovet for strømforsyning i lagringsmodus, etc.

I henhold til det fysiske operasjonsprinsippet er minnet klassifisert i elektronisk, magnetisk, optisk, magnetisk - optisk.

Elektronisk minne utført på halvlederelementer og implementert i form av en LSI. Det elektroniske minnet er delt inn i statisk og dynamisk.

I statisk LSI-minne brukes statiske triggere på bipolare eller felteffekttransistorer som elementære minneceller. Som du vet er antallet stabile triggertilstander to, noe som gjør det mulig å bruke det til å lagre en informasjonsenhet - litt. Minneceller for lagring av byte og ord bruker henholdsvis 8 og 16 triggere.

I dynamisk minne LSI brukes elektriske kondensatorer som elementære minneceller. Tilstedeværelsen av en ladning tilsvarer lagringen av en logisk "1", fraværet av en ladning tilsvarer lagringen av en logisk "0". Enten interelektrodekapasitansene til MOS-transistorer eller kondensatorer spesielt laget i LSI-krystallen brukes som lagringskondensatorer. Et fragment av blokkskjemaet for dynamisk minne, som inneholder to celler 1 og 2, er vist i fig. 6.1.

Hver elementær minnecelle inneholder en minne-MOS-kondensator C (tiendedeler av en pF) og en transistorbryter T, som kobler denne kondensatoren til databussen. Porten til transistoren MOS-bryteren er koblet til den tilsvarende utgangen til adressedekoderen. Når cellen er valgt, åpnes tasten T og kobler kondensatoren C til databussen. Videre, avhengig av typen kommando: skriv (WR) eller les (RD) - gjennom den tilsvarende forsterkeren blir inngangsdata skrevet (DI) eller utgangsdata (DO) leses.

Sammenlignet med statisk minne er dynamisk minne mye enklere, billigere, og gir en meget høy grad av integrasjon, d.v.s. høyere spesifikk kapasitet. Men sammenlignet med statisk dynamisk minne er det tregere og krever periodisk regenerering (gjenoppretting) av informasjon i elementære celler. Med andre ord er det nødvendig å periodisk gjenopprette ladningen på lagringskondensatorene C, som selvutlades over tid, dvs. "Mister" informasjon. For å gjøre dette, leser du informasjon fra minneceller med noen få millisekunder (ms) og skriver deretter informasjon på nytt, noe som lar deg gjenopprette ladningen på lagringskondensatorene C. Behovet for å organisere periodiske oppdateringssykluser kompliserer den dynamiske minnebehandlingen noe.

For typiske elektroniske minnemoduler, samplingstiden t B er enheter - titalls nanosekunder ( nsec), og informasjonskapasiteten er titalls - hundrevis av Mbyte.

Statisk og dynamisk elektronisk minne er flyktige, dvs. når strømforsyningen er slått av, lagres ikke informasjonen i cellene. Det er også ikke-flyktig elektronisk minne - skrivebeskyttet minne (ROM), informasjon som kun kan leses fra under driften av VM. ROM-minneplasseringer vil bli diskutert nedenfor.

Magnetisk minne basert på tilstedeværelsen av en rekke magnetiske materialer (for eksempel jernoksid) to stabile tilstander av remanent magnetisering av motsatt fortegn. Slike magnetiske materialer er preget av en rektangulær hystereseløkke B = f (H), og fra dem påføres et fungerende magnetisk lag, påført overflaten av forskjellige bevegelige bærere - magnetiske disker. For å skrive og lese informasjon brukes magnethoder, som er miniatyrinduktorer viklet på en magnetisk kjerne med et gap. Under opptak magnetiserer magnethodet delen av det magnetiske laget som passerer under arbeidsgapet i retningen bestemt av retningen til den flytende strømmen. Under avlesning passerer de magnetiserte overflateområdene nær det induktive avlesningshodet og induserer emk-pulser i det. Minneenheter som bruker dette prinsippet har svært lave spesifikke kostnader for lagring av informasjon, er ikke-flyktige, men fordi de er elektromekaniske, er de betydelig dårligere enn elektronisk minne når det gjelder hastighet, pålitelighet og strømforbruk. For harddisker når dataoverføringshastigheten titalls MB/s, og informasjonskapasiteten er hundrevis av GB.



V optisk minne for å lagre informasjon, brukes en endring i de optiske egenskapene (hovedsakelig graden av refleksjon) til bæreroverflaten. Det optiske mediet er laget i form av en disk (Compact Disk - CD), hvis reflekterende lag (metallsputtering) er dekket med et lag med organisk fargestoff. Ved opptak moduleres laserstrålen av en strøm av registrerte biter og brenner groper i fargelaget på visse punkter av sporet. På grunn av forskjellen i refleksjonskoeffisienten til gropene og uforbrente områder av overflaten under lesing, oppstår modulering av lysstyrken til den reflekterte strålen, som koder for informasjonen som leses fra CD-en. Ulike typer optiske CD-er produseres: CD-ROM (Read Only Memory) - tillater kun å lese informasjon skrevet på en matrisemåte, CD-R (Recordable) - som tillater minst engangsskriving til en plate og flere lesing, CD -RW (ReWritable) - tillater flere omskriving til disk (og selvfølgelig lesing). Optiske disker er billige og har en betydelig (opptil én GB) informasjonskapasitet, er ikke-flyktige og lett utskiftbare, men når det gjelder hastighet, pålitelighet og strømforbruk, som magnetiske disker, er de betydelig dårligere enn elektronisk minne.

Når det gjelder funksjonalitet, kan minneenheter klassifiseres i Random Access Memory (SRAM), Random Access Memory (RAM), skrivebeskyttet minne (ROM) og eksterne lagringsenheter (VCD).

RAM beregnet for lagring av programmer (system, applikasjon) og data som brukes direkte av CPU-en på det aktuelle tidspunktet. Lese- og skrivesyklustidene for RAM er vanligvis de samme. Vanligvis brukes dynamisk minne med et volum på opptil enheter GB som RAM, avhengig av formålet og omfanget til MS.

Pozu eller Bufferminnet- dette er en liten mengde høyhastighetsminne, der varigheten av tilgangssyklusen t C er mindre enn varigheten av maskinsyklusen til prosessoren. Derfor, når du får tilgang til hurtigbufferminnet, er det ikke nødvendig å introdusere prosessorventesykluser i maskinminnetilgangssykluser. Cache-minne er et bufferminne mellom RAM og CPU og er basert på statisk minne. Cachen lagrer kopier av blokker (sider) av programmer og data fra de områdene av RAM som den siste tilgangen fant sted til, samt en katalog - en liste over deres gjeldende korrespondanse til områder av RAM. Ved hver tilgang til hovedminnet sjekker katalogbufferkontrolleren om det er en gyldig kopi av den forespurte blokken (siden) i hurtigbufferen. Hvis det er en kopi, så er dette tilfellet. cache-treff, og bare cache-minnet er tilgjengelig for data eller kode. Hvis en gyldig kopi ikke er der, så er dette tilfellet. kontant miss, og den nødvendige blokken (siden) fra RAM skrives til hurtigbufferen, og skrivingen gjøres til stedet for den minst faktiske blokken (siden) som tidligere er slettet fra hurtigbufferen i RAM, dvs. informasjonsblokken, hvor antallet anrop var det minste. På grunn av det iboende i programmer og data slike grunnleggende egenskaper som romlig og midlertidig lokalitet/ 2,7,13 / antall cache-treff er mange ganger større enn antall cache-misser, selv med små (enheter - titalls KB) cache-minne. Derfor forbedrer bruken av cache-minne betydelig ytelsen til VM. Vanligvis implementeres cachen i henhold til et tre-nivå skjema: den primære cachen (L1 Cache), titalls KB i størrelse, og den sekundære cachen (L2 Cache), hundrevis av KB, plassert i MP-krystallen, det tredje nivået cache (L3 Cache), enheter på MB er installert på hovedkortet eller i MP-bygningen.

rom Er et elektronisk ikke-flyktig minne som brukes til å lagre informasjon som er uendret eller sjelden endret under driften av en VM: systemprogramvare (BIOS), applikasjonsprogramvare for innebygde og innebygde VM-er, sett med tabeller, konfigurasjonsparametere for ulike systemer osv. Hoveddriftsmodusen til ROM er lesing, som gir opphav til et annet vanlig navn for slik minne-ROM (Read Only Memory). Å skrive informasjon til ROM, kalt programmering, er vanligvis mye vanskeligere, krever mer tid og energi enn lesing.

VCU er beregnet for ikke-flyktig lagring av store mengder strukturert informasjon på en bestemt måte: filer, databaser, arkiver. Et karakteristisk trekk ved eksternt minne er at enhetene opererer med informasjonsblokker, og ikke byte eller ord, slik RAM tillater. I tillegg kan prosessoren bare få tilgang til OVC via RAM. Diskstasjoner (HDD, CD) brukes vanligvis som VCU-er, som kan lagre hundrevis av GB med informasjon.

Buffer elektronisk minne Det er inkludert i sammensetningen av kontrollere for ulike eksterne enheter som løser problemene med å vise og legge inn informasjon, kommunikasjonsproblemer, signalkonvertering, etc. Tilstedeværelsen av bufferminne gjør det mulig å koordinere betydelig forskjellige dataoverføringshastigheter for systembussen og eksterne enheter, redusere tiden brukt av hver av de eksterne enhetene på systembussen og øke VM-ytelsen.

Måten å organisere minnet på er bestemt av metoden for å plassere og søke etter informasjon i minnet. På dette grunnlaget, skille mellom adresse-, assosiativ og stabelminneorganisasjon.

V adresseminne for å få tilgang til minneceller, brukes de adresser, som forstås som koder for antall minneceller. Den adresserbare organiseringen av minnet tillater tilgang til minneceller etter deres adresser i en vilkårlig rekkefølge, og varigheten av tilgangssyklusen er den samme for alle celler, uavhengig av adressen. Derfor brukes begrepet "random access memory (RAM)" eller RAM (Random Access Memory) også for å navngi slikt minne. For eksempel har RAM og ROM en adresserbar minneorganisasjon.

V assosiativ hukommelse(ADS) informasjon søkes ikke etter adressene til minneceller, men etter innholdet eller deler av det. I det generelle tilfellet utføres en forespørsel til det assosiative minnet ved å spesifisere en liste over biter for å søke etter en minnecelle, og ved å spesifisere innholdet til de tildelte bitene. Listen over sifre for søk er satt inn register-maske. Dette registeret har samme bitbredde som CAM-minnecellen og inneholder bare de i de bitene som det søkes etter. V sak-kontekst innholdet i disse bitene er satt, og bitbredden er lik bitbredden til maskeregisteret.

Hvis en celle med en gitt kombinasjon av nuller og enere blir funnet, genererer CAM en positiv respons som indikerer adressen til den funnet cellen. Deretter overføres adressen til adressedekoderen, og hele innholdet i en slik celle kan leses eller nytt innhold kan skrives inn i den. Ellers genererer AMS et negativt svar på forespørselen.

Søket etter informasjon etter kontekst i CAM utføres samtidig i alle minneceller, derfor er CAM mange ganger raskere enn RAM, men det er også mye dyrere. I moderne datasystemer brukes CAM for eksempel som en del av cache-minnet.

Stable minne(Stack), så vel som assosiativ, er uadressert. En stabel kan sees på som en samling celler som danner en endimensjonal matrise, der tilstøtende celler er koblet til hverandre ved hjelp av bitordoverføringskjeder. I dette minnet utføres skriving og lesing i henhold til regelen "sist skrevet leses først" eller "Last Input First Output (LIFO)". Av denne grunn kalles stabelen "push"-minne for omvendt leserekkefølge. Vanligvis er stabelen organisert i RAM. Antall ord i stabelen bestemmes av stabelpekeren SP, og skriving til og lesing fra stabelen utføres av henholdsvis PUSH- og POP-kommandoene. Stabelminne er mye brukt, som allerede diskutert ovenfor, når du håndterer avbrudd og ringer underrutiner.

Sammen med stackminne har butikk-kjøpt minne med direkte leseordre blitt utbredt, d.v.s. "Den første som er skrevet leses først" eller "Første inngang, første utgang (FIFO)". Dette minnet kalles bufferminne og er i likhet med stabelen organisert i RAM.

Klassifisering av MKMD-systemer

I et MCMD-system utfører hvert prosesseringselement (PE) sitt program ganske uavhengig av andre PE-er. Samtidig må prosesseringselementene på en eller annen måte samhandle med hverandre. Forskjellen i måten for slik interaksjon bestemmer den betingede oppdelingen av MCMD-systemer i AC med delt minne og systemer med distribuert minne (fig. 5.7).

I systemer med delt minne, som karakteriseres som tett koblet, er det et delt minne med data og instruksjoner tilgjengelig for alle prosesseringselementer som bruker en felles buss eller nettverk av forbindelser. Slike systemer kalles multiprosessorer. Denne typen inkluderer symmetriske multiprosessorer (UMA (SMP), Symmetrisk multiprosessor), systemer med ikke-uniform minnetilgang (NUMA, Non-Uniform Memory Access) og systemer med såkalt lokalt minne i stedet for cache-minne (COMA, Cache Only Memory Access) ).

Hvis alle prosessorer har lik tilgang til alle minnemoduler og alle I/O-enheter, og hver prosessor er utskiftbar med andre prosessorer, kalles et slikt system et SMP-system. I systemer med delt minne har alle prosessorer like muligheter til å få tilgang til et enkelt adresseområde. Et enkelt minne kan bygges som en enkelt blokk eller modulært, men sistnevnte er vanligvis tilfellet.

SMP-systemer tilhører UMA-arkitekturen. Datasystemer med delt minne, hvor tilgangen til en hvilken som helst prosessor til minne utføres jevnt og tar samme tid, kalles systemer med enhetlig minnetilgang UMA (Uniform Memory Access).

Fra synspunktet til nivåene av brukt minne i UMA-arkitekturen, vurderes tre alternativer for å bygge en multiprosessor:

Classic (kun med delt hovedminne);

Med ekstra lokal cache for hver prosessor;

Med ekstra lokalt bufferminne for hver prosessor (Figur 5.8).

Fra synspunktet om måten prosessorer samhandler med delte ressurser (minne og CBV), i det generelle tilfellet, skilles følgende typer UMA-arkitekturer ut:

Med felles buss- og tidsinndeling (7,9);

Med en tverrstangbryter;

Basert på flertrinnsnettverk.

Bruk av bare én buss begrenser størrelsen på en UMA multiprosessor til 16 eller 32 prosessorer. For å få den større størrelsen kreves en annen type kommunikasjonsnettverk. Det enkleste tilkoblingsskjemaet er en tverrstangbryter (Figur 5.10). Tverrstangsbrytere har blitt brukt i flere tiår for å tilfeldig koble en gruppe innkommende linjer til en rekke utgående linjer.

Tverrstangen er et ikke-blokkerende nettverk. Dette betyr at prosessoren alltid vil være assosiert med riktig minneblokk, selv om en linje eller node allerede er opptatt. Dessuten er det ikke nødvendig med foreløpig planlegging.


Tverrstangsbrytere er ganske egnet for mellomstore systemer (Figur 5.11).


Basert på 2x2-svitsjer kan du bygge flertrinnsnettverk. Et mulig alternativ er omega-nettverket (Figur 5.12). For n prosessorer og n minnemoduler kreves logg 2 n trinn, n / 2 brytere for hvert trinn, det vil si totalt (n / 2) log 2 n brytere for hvert trinn. Dette er mye bedre enn n 2 noder (skjæringspunkter), spesielt for store n.

Enkeltbuss UMA-multiprosessorer er vanligvis begrenset til noen få titalls prosessorer, mens koordinat- eller switch-multiprosessorer krever dyr maskinvare og ikke er mye større. For å få mer enn 100 prosessorer trenger du en annen minnetilgang.

For større skalerbarhet av multiprosessorer, er arkitekturen med uensartet minnetilgang NUMA (NonUniform Memory Access) tilpasset. I likhet med UMA-multiprosessorer gir de ett enkelt adresseområde for alle prosessorer, men i motsetning til UMA-maskiner får lokale minnemoduler tilgang raskere enn eksterne minnemoduler.

Innenfor rammen av NUMA-konseptet implementeres tilnærmingene betegnet med forkortelsene NC-NUMA og CC-NUMA.

Hvis tilgangstiden til det eksterne minnet ikke er skjult (fordi det ikke er noe cache-minne), kalles et slikt system NC-NUMA (No Caching NUMA - NUMA without caching) (Figur 5.13).

Hvis koherente cacher er tilstede, kalles systemet CC-NUMA (Coherent Cache Non-Uniform Memory Architecture - NUMA with coherent cache) (7.14).

Multiprosessering av datasystemer fører til problemet med samtidig tilgang til minne fra flere prosessorer. Avhengig av hvordan minnet til et multiprosessorsystem er organisert, skilles de ut:

1. Datasystemer med delt minne - Multiprosessorer:

Jeg. PVP (CrayT90)

ii. SMP (Intel SHV, SunFire, Dec8400, etc.)

Jeg. COMA (KSR-1, DDM)

ii. CC-NUMA (Stanford Dash, Data General, etc.)

iii. NCC-NUMA (Crag T3E)

2. Datasystemer med distribuert minne - Multidatamaskiner:

ii. MPP - Løst koblede systemer (Intel TFLOPS)

Forskjellen mellom delt og distribuert minne er forskjellen i strukturen til virtuelt minne, det vil si hvordan det minnet ser ut fra prosessorsiden. Med andre ord, forskjellen mellom delt minne og distribuert minne er hvordan minneundersystemet tolker celleadressen mottatt fra mikroprosessoren (global adresse eller lokal adresse).

Fysisk er nesten alt minne delt inn i selvstendige komponenter som kan nås uavhengig.

Vurder modellene av BC-minnearkitekturer som vil være gyldige for både den multiple MIMD-datastrømklassen og SIMD-klassen:

UMA- VS med delt minne, hvor tilgangen til enhver prosessor til minnet er enhetlig og tar samme tid. Systemer med enhetlig minnetilgang:

Mp - delt minne

Pi - prosessor

Felles buss

Egenskaper: i hvert øyeblikk kan utveksling via bussen bare utføres av en av prosessorene. Ytelsen synker etter hvert som antall prosessorer øker. Oftest er det 4 til 8 prosessorer i systemet, maksimal ytelse = 2. Systemet kan ikke klassifiseres som feiltolerant, siden svikt i én minnemodul eller prosessor kan føre til svikt i hele systemet.

I denne klassen av arkitekturer er det multiprosessorsystemer med minne bestående av flere moduler. Bussen erstattes av en svitsj som ruter prosessorforespørsler til en av flere minnemoduler. Dessuten er alle minnemoduler inkludert i et enkelt adresseområde. Fordel - flere forespørsler kan behandles.

NUMA- heterogen tilgang til minne. Her skilles det ut flere klasser. Et enkelt adresseområde brukes, men hver prosessor har lokalt minne (vanligvis en cache). LP-tilgang er mye raskere enn ekstern minnetilgang via et nettverk eller svitsj.


COMA - kun med cache. Det lokale minnet til hver prosessor er bygget som en stor cache. Cachene til alle prosessorer representerer samlet systemets globale minne. Data er ikke statisk knyttet til en spesifikk minnemodul og har ikke en unik adresse. Dataene overføres til hurtigbufferen til prosessoren som sist ba om det.



Den største ulempen: veldig kompleks kontroll, operativsystemet deltar ikke i kontrollprosessen (alle oppgaver er tildelt maskinvaren).

CC-NUMA er en cache-koherent ikke-uniform minnetilgangsmodell. Ikke cachen brukes, men det vanlige fysisk tildelte minnet. Ingen programvare kreves for å lagre mye oppdatert data. Maskinvarelaget håndterer dette.

NCC-NUMA - modellen forutsetter bruk av et enkelt adresserom, men sikrer ikke konsistens av globale data på maskinvarenivå. Ledelsen er betrodd programvaren, dette anses som en ulempe, men modellen er den mest lovende med tanke på å øke produktiviteten.

Multidatamaskiner - blokkene som systemet er bygget fra, er med prosessor og minne.

NORMA er en arkitektur uten direkte tilgang til eksternt minne.


P - prosessor

M - lokalt minne

K0 og K1 - I/O-kontroller

Blokker er prosesseringselementer. Systemer er satt sammen av dem.

Hver prosessor i et slikt system kan bare få tilgang til eksternt minne ved å utveksle meldinger med prosessorene som det adresserbare minnet tilhører. Alle PE-er i forhold til hverandre betraktes som input-output enheter.

For å sende meldinger til et annet behandlingselement, danner prosessoren en datablokk i sitt lokale minne og varsler sin lokale kontroller om behovet for å overføre informasjon til en ekstern enhet. Gjennom nettverket av sammenkoblinger sendes denne meldingen til den mottakende kontrolleren, som finner en plass i sitt lokale minne og varsler sin prosessor om at den har ankommet, samt kildeprosessoren om mottak av meldingen.



Fordeler - det er ingen strid om bussen eller bryteren ved tilgang til data. Siden det ikke er noen felles buss, er det ingen begrensning på antall prosessorer. I mye mindre grad er problemet med cache-gyldighet. Hver prosessor har rett til å endre sin hurtigbuffer og ikke koordinere sine handlinger med andre.

Ulemper: Hvert prosessorelement har et avbruddssystem. Dette er grunnen til kompleksiteten av informasjonsutveksling (tid for å sende og danne en melding, tid for å generere avbruddsforespørsler og deres behandling).

Kapittel 11

Minneorganisering av datasystemer

I datasystemer som forener mange parallelle prosessorer eller maskiner, er problemet med riktig minneorganisering en av de viktigste. Forskjellen mellom prosessor- og minnehastighet har alltid vært en snublestein i VM-er med én prosessor. VS multiprosessering fører til et annet problem - problemet med samtidig tilgang til minne fra flere prosessorer.

Avhengig av hvordan minnet til multiprosessor (flerdatamaskin) systemer er organisert, skiller man mellom datasystemer med delt minne og AC med distribuert minne. V delte minnesystemer(det kalles ofte også delt eller delt minne) Solens minne betraktes som en fellesskapsressurs, og hver av prosessorene har full tilgang til hele adresseområdet. Delte minnesystemer kalles tett bundet(tett koblede systemer). En lignende konstruksjon av datasystemer finner sted både i SIMD-klassen og i MIMD-klassen. Noen ganger, for å understreke denne omstendigheten, introduseres spesielle underklasser, ved å bruke forkortelsene SM-SIMD (Shared Memory SIMD) og SM-MIMD (Shared Memory MIMD) for å betegne dem.

I opsjon med distribuert minne hver av prosessorene er tildelt sitt eget minne. Prosessorer slås sammen v nettverk og kan om nødvendig utveksle data som er lagret i minnet deres, og overføre til hverandre den såkalte meldinger. Denne typen fly kalles løst koblet(løst koblede systemer). Løst koblede systemer finnes også både i SIMD-klassen og i MIMD-klassen, og noen ganger, for å understreke denne funksjonen, introduseres underklassene DM-SIMD (Distributed Memory SIMD) og DM-MIMD (Distributed Memory MIMD).

I noen tilfeller kalles datasystemer med delt minne multiprosessorer, og systemer med distribuert minne - mtsltdatamaskiner.

Forskjellen mellom delt og distribuert minne er forskjellen i strukturen til virtuelt minne, det vil si hvordan minnet ser ut fra prosessorens side. Fysisk er nesten hvert minnesystem delt inn i selvstendige komponenter som kan nås uavhengig. Måten minneundersystemet tolker celleadressen mottatt fra prosessoren er løsrevet fra det delte minnet. Anta for eksempel at prosessoren utfører kommandoen last RO, i, som betyr "Last register R0 med innholdet i celle i". Når det gjelder delt minne, er i den globale adressen og peker til samme plassering for en hvilken som helst prosessor. I et distribuert minnesystem er i den lokale adressen. Hvis to prosessorer utfører load RO, i-kommandoen, refererer hver av dem til den i-te cellen i det lokale minnet, det vil si til forskjellige celler, og ulik verdi kan lastes inn i R0-registrene.

Forskjellen mellom de to minnesystemene må programmereren huske på, da den bestemmer måten deler av et parallelt program samhandler på. I varianten med delt minne er det nok å lage en datastruktur i minnet og overføre referanser til denne strukturen til parallelle subrutiner. I et distribuert minnesystem må du ha en kopi av de delte dataene i hvert lokalt minne. Disse kopiene lages ved å neste delte data i meldinger sendt til andre prosessorer.

Interleaved adresseminne

Fysisk sett består minnet til et datasystem av flere moduler (banker), mens det essensielle spørsmålet er hvordan adresserommet er fordelt i dette tilfellet (settet med alle adresser som prosessoren kan danne). En måte å distribuere virtuelle adresser på tvers av minnemoduler er å dele opp adresseplassen i sekvensielle blokker. Hvis minnet består av NS banker, deretter cellen med adressen Jeg ved blokksplitting vil det ligge i banken med nummeret Jeg/ n. I system sammenflettet minne(interleaved memory) påfølgende adresser er plassert i forskjellige banker: cellen med adressen i er i banken med nummeret i mod NS. La for eksempel minnet bestå av fire banker, 256 byte i hver. I blokkadresseringsskjemaet vil den første banken bli tildelt virtuelle adresser 0-255, den andre - 256-511 osv. I ordningen med vekslende adresser vil påfølgende celler i den første banken ha virtuelle adresser 0, 4, 8, .. .. i den andre banken - 1, 5, 9, etc. (Fig. 11.1, a).

Fordelingen av adresserommet mellom modulene gjør det mulig å behandle forespørsler om tilgang til minne samtidig, hvis de tilsvarende adressene tilhører forskjellige banker, kan prosessoren be om tilgang til en celle i en av syklusene Jeg og i neste syklus - til celle j. Hvis Jegogj er i forskjellige banker, vil informasjonen bli overført i påfølgende sykluser. Her refererer en syklus til en prosessorsyklus, mens en komplett minnesyklus tar flere prosessorsykluser. I dette tilfellet trenger altså ikke prosessoren å vente til hele syklusen med tilgang til cellen er fullført. Jeg. Den vurderte teknikken lar deg øke gjennomstrømningen: hvis minnesystemet består av

Ris. 11.1- Minne med alternerende adresser: a - tildeling av adresser; b- elementer hentet i trinn på 9 fra en 8 x 8 matrise

et tilstrekkelig antall banker, er det mulig å utveksle informasjon mellom prosessoren og minnet med en hastighet på ett ord per prosessorsyklus, uavhengig av varigheten av minnesyklusen.

Beslutningen om hvilket alternativ for adressetildeling som skal velges (blokkert eller lagdelt) avhenger av forventet rekkefølge for tilgang til informasjon. Programmer er kompilert på en slik måte at sekvensielle instruksjoner er plassert i celler med sekvensielle adresser, så det er stor sannsynlighet for at kommandoen fra celle vil bli utført etter at kommandoen er hentet fra celle med adresse i. Jeg + 1. Kompilatoren plasserer også elementer av vektorer i sekvensielle celler, derfor, i operasjoner med vektorer, kan du dra nytte av interleaving-metoden. Av denne grunn bruker vektorprosessorer vanligvis en eller annen form for adresseinterleaving. Delt minne-multiprosessorer bruker imidlertid blokkbasert adressering, siden minnetilgangsmønstrene i MIMD-systemer kan variere sterkt. I slike systemer er målet å koble prosessoren til en minneblokk og bruke så mye av informasjonen den inneholder før du bytter til en annen minneblokk.

Minnesystemer gir ofte ekstra fleksibilitet ved henting av vektorelementer. I noen systemer er det mulig å laste hvert n-te element i vektoren samtidig, for eksempel når elementene i vektoren trekkes ut V, lagret i sekvensielle minneplasseringer; på NS= 4, kommer minnet tilbake Avstanden mellom elementene kalles trinn for indeks eller Skritt(skritt). En interessant bruk av denne egenskapen er Matrix Access. Hvis indekstrinnet er én mer enn antall rader i matrisen, vil en enkelt minnetilgangsforespørsel returnere alle de diagonale elementene i matrisen (Figur 11.1, b). Ansvaret for å sikre at alle hentede elementer av matrisen er plassert i ulike banker ligger hos programmereren.

Minnearkitekturmodeller av datasystemer

Innenfor både delt og distribuert minne er flere modeller av minnesystemarkitekturer implementert.

Ris. 11.2. Klassifisering av modeller av minnearkitekturer til datasystemer

I fig. 11.2 viser klassifiseringen av slike modeller som brukes i datasystemer av MIMD-klassen (det er også sant for S1MD-klassen).

Arkitekturmodeller for delt minne

I systemer med delt minne har alle prosessorer like muligheter, men tilgang til ett enkelt adresseområde. Et enkelt minne kan bygges som en enkelt blokk eller modulært, men sistnevnte er vanligvis tilfellet.

Datasystemer med delt minne, hvor tilgangen til en hvilken som helst prosessor til minne utføres jevnt og tar samme tid, kalles systemer med enhetlig minnetilgang og er forkortet til UMA (Uniform Memory Access). Dette er den vanligste minnearkitekturen for parallelle VC-er med delt minne.

Teknisk sett antar UMA-systemer tilstedeværelsen av en node som forbinder hver av dem NS prosessorer med hver av T minnemoduler. Den enkleste måten å konstruere et slikt fly på - å kombinere flere prosessorer (P i) med et enkelt minne (M p) gjennom en felles buss - er vist i fig. 11.3, en. I dette tilfellet kan imidlertid bare én av prosessorene bytte bussen om gangen, det vil si at prosessorene må konkurrere om tilgang til piggen. Når prosessor Р i velger en instruksjon fra minnet, vil andre prosessorer må vente til dekket er klaret. Hvis v systemet inkluderer bare to prosessorer, de er i stand til å arbeide med en ytelse nær maksimum, siden deres tilgang til bussen kan interleaves: mens en prosessor dekoder og utfører en instruksjon, har den andre rett til å bruke bussen til å hente neste instruksjon fra minnet. Men når en tredje prosessor legges til, begynner ytelsen å bli dårligere. Hvis det er ti prosessorer på bussen, vil busshastighetskurven (fig. en) blir horisontal, så tillegget av en 11. prosessor gir ikke lenger et ytelsesløft. Den nederste kurven i denne figuren illustrerer det faktum at minne og buss har en fast båndbredde bestemt av kombinasjonen av minnesyklustid og bussprotokoll, og i et multiprosessorsystem med delt buss er denne båndbredden fordelt på flere prosessorer. Hvis prosessorsyklustiden er lengre enn minnesyklusen, kan mange prosessorer kobles til bussen. Imidlertid er prosessoren vanligvis mye raskere enn minnet, så denne ordningen er ikke mye brukt.

Ris. 11.3. Delt minne: a - kombinere prosessorer ved hjelp av en buss; b - et system med lokale cacher; v- systemytelse som en funksjon av antall prosessorer på bussen; d - multiprosessor VS med delt minne, bestående av separate moduler

En alternativ metode for å konstruere en multiprosessor CS med delt minne basert på NML er vist i fig. 11.3, G. Her er piggen erstattet av en bryter som ruter prosessorforespørsler til en av flere minnemoduler. Til tross for at det er flere minnemoduler, tilhører de alle et enkelt virtuelt adresseområde. Fordelen med denne tilnærmingen er at bryteren er i stand til å betjene flere forespørsler parallelt. Hver prosessor kan kobles til sin egen minnemodul og ha tilgang til den med maksimalt tillatt hastighet. Rivalisering mellom prosessorer kan oppstå når du prøver å få tilgang til samme minnemodul samtidig. I dette tilfellet får bare én prosessor tilgang, og de andre er blokkert.

UMA-arkitekturen skalerer dessverre ikke godt. De vanligste systemene inneholder 4-8 prosessorer, mye sjeldnere 32-64 prosessorer. I tillegg kan slike systemer ikke klassifiseres som feiltolerante, siden svikt i én prosessor eller minnemodul medfører svikt i hele flyet.

En annen tilnærming til å bygge et delt minne VS er uensartet minnetilgang, betegnet som NUM A (Non-Uniform Memory Access), Det er fortsatt et enkelt adresseområde, men hver prosessor har lokalt minne. Prosessoren får direkte tilgang til sitt eget lokale minne, noe som er mye raskere enn å få tilgang til eksternt minne over en svitsj eller nettverk. Et slikt system kan suppleres med globalt minne, så fungerer lokale lagringsenheter som hurtigbufferminne for globalt minne. En slik ordning kan forbedre ytelsen til flyet, men den er ikke i stand til å forsinke utjevningen av den direkte ytelsen på ubestemt tid. Hvis hver prosessor har en lokal hurtigbuffer (Figur 11.3.6), er det stor sannsynlighet (p> 0.9) at den nødvendige kommandoen eller dataene allerede er i lokalt minne. Rimelig sannsynlighet for å treffe lokalt minne reduserer antallet prosessoranrop betydelig Til globalt minne og dermed fører til økt effektivitet. Stedet for bruddet i ytelseskurven (den øvre kurven i fig. 11.3, v), punktet hvor tillegget av prosessorer fortsatt er effektivt flyttes nå til prosessorområdet 20, og det tynnere, hvor kurven blir horisontal, til prosessorområdet 30.

Innenfor konseptet NUMA flere forskjellige tilnærminger er implementert, betegnet med forkortelser SOMA,CC- NUMA og NCC- NUMA.

V arkitektur som kun er cache(SOMA, Cache Only Memory Architecture) det lokale minnet til hver prosessor er bygget som et stort cache-minne for rask tilgang fra den "egen" prosessoren. Cachene til alle prosessorer betraktes samlet som systemets globale minne. Det er ikke noe faktisk globalt minne. Det grunnleggende trekk ved SOMA-konseptet kommer til uttrykk i dynamikk. Her er ikke dataene statisk bundet til en spesifikk minnemodul og har ikke en unik adresse som forblir uendret i hele levetiden til variabelen. I SOMA-arkitekturen overføres data til hurtigbufferminnet til prosessoren som sist ba om det, mens variabelen ikke er fikset med en unik adresse og til enhver tid kan lokaliseres i enhver fysisk celle. Flytting av data fra en lokal cache til en annen krever ikke at operativsystemet deltar i denne prosessen, men involverer kompleks og kostbar maskinvare for minnebehandling. Å organisere et slikt regime, den såkalte cache-kataloger. Merk også at den siste kopien av elementet aldri fjernes fra hurtigbufferen.

Siden i SOMA-arkitekturen blir data flyttet til det lokale hurtigbufferminnet til eierprosessoren, har slike fly en betydelig ytelsesfordel i forhold til andre NUM A-arkitekturer. På den annen side, hvis en enkelt variabel eller to forskjellige variabler lagrer den samme hurtigbufferen i en. linjen kreves av to prosessorer, denne hurtigbufferlinjen må flyttes frem og tilbake mellom prosessorer hver gang dataene åpnes. Slike effekter kan avhenge av detaljene i minnetildeling og føre til uforutsigbare situasjoner.

Modell cache-koherent ikke-uniform minnetilgang(CC-NUMA, Сache Coherent Non-Uniform Memory Architecture) er fundamentalt forskjellig fra SOMA-modellen. CC-NUMA-systemet bruker ikke hurtigbufferminnet, men det vanlige fysisk tildelte minnet. Ingen kopiering av sider eller data skjer mellom minneplasseringer. Det er ingen programvaremeldinger. Det er bare én minnepinne, med deler fysisk koblet sammen med kobberkabel, og smart maskinvare. Maskinvarebasert hurtigbufferkoherens betyr at det ikke kreves programvare for å lagre flere kopier av oppdaterte data eller overføre dem. Maskinvarenivået håndterer alt dette. Tilgang til lokale minnemoduler i forskjellige noder i systemet kan utføres samtidig og er raskere enn til eksterne minnemoduler.

Forskjellen mellom modellen med cache-usammenhengende ikke-uniform minnetilgang(NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) fra CC-NUMA er tydelig fra navnet. Minnearkitekturen antar et enkelt adresserom, men gir ikke maskinvarekonsistens for globale data. Styringen av bruken av slike data hviler utelukkende på programvaren (applikasjoner eller kompilatorer). Til tross for denne omstendigheten, som ser ut til å være en ulempe ved arkitekturen, viser den seg å være svært nyttig for å øke ytelsen til datasystemer med en minnearkitektur av DSM-typen, vurdert i avsnittet "Modeller av distribuerte minnearkitekturer".

Generelt kalles AC-er med delt minne bygget i henhold til NUMA-skjemaet virtuelle delte minnearkitekturer(virtuelle delte minnearkitekturer). Denne typen arkitektur, spesielt CC-NUMA, har nylig blitt betraktet som en uavhengig og ganske lovende type datasystemer av MIMD-klassen, derfor vil slike fly bli diskutert mer detaljert nedenfor.

Distribuerte minnearkitekturmodeller

I et distribuert minnesystem har hver prosessor sitt eget minne og kan bare adressere det. Noen forfattere kaller denne typen systemer flerdatamaskinfly eller multidatamaskiner, fremhever det faktum at byggesteinene i et system i seg selv er små datasystemer med prosessor og minne. Modeller av distribuerte minnearkitekturer er vanligvis betegnet som arkitekturer uten direkte tilgang til eksternt minne(NORMA, Ingen ekstern minnetilgang). Dette navnet følger av det faktum at hver prosessor kun har tilgang til sitt lokale minne. Tilgang til eksternt minne (lokalt minne til en annen prosessor) er kun mulig ved å utveksle meldinger med prosessoren som eier det adresserbare minnet.

Denne organisasjonen har en rekke fordeler. For det første, når du får tilgang til data, er det ingen konkurranse om bussen eller bryterne - hver prosessor kan fullt ut bruke båndbredden til kommunikasjonsbanen med sitt eget lokale minne. For det andre betyr fraværet av en delt buss at det ikke er noen tilhørende begrensninger på antall prosessorer: størrelsen på systemet begrenses kun av nettverket av prosessorer. For det tredje fjernes problemet med cache-koherens. Hver prosessor har rett til uavhengig å endre sine data uten å bekymre seg for å matche kopier av data i sitt eget lokale cache-minne med cacher til andre prosessorer.

Den største ulempen med en distribuert minnedatamaskin er kompleksiteten til informasjonsutveksling mellom prosessorer. Hvis noen av prosessorene trenger data fra minnet til en annen prosessor, må den utveksle meldinger med denne prosessoren. Dette fører til to typer kostnader:

    det tar tid å danne og videresende en melding fra en! prosessor til en annen;

    for å svare på meldinger fra andre prosessorer, må den mottakende prosessoren motta en avbruddsforespørsel og utføre en rutine for å håndtere det avbruddet.

Strukturen til et distribuert minnesystem er vist i fig. 11.4. Til venstre! deler (fig.11.4, en) ett prosesseringselement (PE) vises. Den inkluderer) selve prosessoren (P), lokalt minne (M) og to I/O-kontrollere (K about og KD på høyre side (fig.11.4, b) Det vises et system med fire prosessorer som illustrerer hvordan meldinger sendes fra en prosessor til en annen. I forhold til hver PE kan alle andre prosesseringselementer enkelt sees som inngangs-/utgangsenheter. For å sende en melding til en annen PE, danner prosessoren en datablokk i sitt lokale minne og varsler sin lokale kontroller om behovet for å overføre informasjon til en ekstern enhet. Gjennom sammenkoblingsnettverket videresendes denne meldingen til den mottakende I/O-kontrolleren til den mottakende PE. Sistnevnte finner plass til meldingen i sitt eget lokale minne og varsler kildebehandleren om at meldingen er mottatt.

Ris. 11.4. Datasystem med distribuert minne: a - prosessorelement; b- forening av behandlingselementer om

En interessant variant av et distribuert minnesystem er; modell distribuert delt minne(DSM, Distribute Shared Memory), også kjent under et annet navn arkitektur med heterogenminnetilgang og programvaresammenheng(SC-NUMA, Software-Coherent Non-Uniform Memory Architecture). Ideen med denne modellen er at BC, som fysisk er et system med distribuert minne, takket være operativsystemet fremstår for brukeren som et system med delt minne. Dette betyr at operativsystemet tilbyr brukeren et enkelt adresserom, til tross for at selve tilgangen til minnet til den «fremmede» flydatamaskinen fortsatt gis gjennom utveksling av meldinger.

Multiprosessorcache-sammenheng

Et flerprosessorsystem med delt minne består av to eller flere uavhengige prosessorer, som hver kjører enten en del av et stort program eller et uavhengig program. Alle prosessorer får tilgang til instruksjoner og data som er lagret i delt hovedminne. Siden minne er en delt ressurs, er det konkurranse mellom prosessorene når de får tilgang til det, noe som øker den gjennomsnittlige minnetilgangstiden. For å redusere denne ventetiden tildeles en lokal hurtigbuffer til hver prosessor, som ved å betjene lokale minnetilganger i mange tilfeller forhindrer behovet for å få tilgang til delt hovedminne. I sin tur, å utstyre hver prosessor med et lokalt cache-minne fører til den såkalte sammenhengsproblem eller gi i enighetbufferminnet. I henhold til systemet er systemet koherent hvis hver leseoperasjon på en adresse, utført av en av prosessorene, returnerer verdien som ble lagt inn under den siste skriveoperasjonen på denne adressen, uavhengig av hvilken prosessor som sist skrev.

I sin enkleste form kan problemet med cache-koherens forklares som følger (Figur 11.5). La to prosessorer R G og Pg er koblet til det delte minnet via en buss. Først leser begge prosessorene variabelen NS. Kopier av blokkene som inneholder denne variabelen overføres fra hovedminnet til de lokale cachene til begge prosessorene (fig. 11.5, en). Deretter utfører prosessoren Pt operasjonen med å øke verdien av variabelen NS per enhet. Siden en kopi av variabelen allerede er i hurtigbufferen til denne prosessoren, vil et hurtigbuffertreff oppstå og verdien vil kun endres i hurtigbuffer 1. Hvis nå prosessor P2 igjen utfører en leseoperasjon NS, da vil det også oppstå et cache-treff og P2 vil motta den "gamle" verdien som er lagret i cache-minnet NS(fig.11.5, b).

Å opprettholde konsistens krever at når et element endres av en av prosessorene, gjøres de tilsvarende endringene i hurtigminnet til de andre prosessorene, hvor det er en kopi av det endrede elementet, så vel som i delt minne. Et lignende problem oppstår forresten i enprosessorsystemer, hvor det er flere nivåer av hurtigbufferminne. Her kreves det å avstemme innholdet i cacher på forskjellige nivåer.

Det er to tilnærminger til å løse koherensproblemet: programvare og maskinvare. Noen systemer bruker strategier som kombinerer begge tilnærmingene.

Programvareløsningersammenhengsproblemer

Programvareteknikker for å løse koherensproblemet gjør det mulig å klare seg uten tilleggsutstyr eller å minimere det)