Principiile managementului memoriei unui sistem informatic. Memorie virtuală și traducere de adrese

Tabelul 9.1. Ierarhia subsistemului de memorie PC
Tipul memoriei 1985 2000
Timp de prelevare Volumul tipic Preț/octet Timp de prelevare Volumul tipic Preț/octet
1 Memorie super-operațională (registre) 0,2 5 ns 16/32 biți $ 3 - 100 0,01 1 ns 32/64/128 biți $ 0,1 10
2 Memorie tampon de mare viteză (cache) 20 100 ns 8Kb - 64Kb ~ $ 10 0,5 - 2 ns 32Kb 1Mb $ 0,1 - 0,5
3 Memoria operațională (principală). ~0,5 ms 1MB - 256MB $ 0,02 1 2 ns 20 ns 128 MB - 4 GB $ 0,01 0,1
4 Stocare externă (memorie de masă) 10 - 100 ms 1MB - 1GB $ 0,002 - 0,04 5 - 20 ms 1 GB - 0,5 TB $ 0,001 - 0,01

Registrele procesorului constituie contextul acestuia și stochează datele utilizate de instrucțiunile procesorului care execută în prezent. Registrele procesorului sunt accesate, de regulă, prin denumirile lor mnemonice din comenzile procesorului.

Cache folosit pentru a se potrivi cu viteza procesorului și a memoriei principale. ÎN sisteme de calcul folosesc cache pe mai multe niveluri: cache de nivel I (L1), cache de nivel II (L2), etc. Sistemele desktop folosesc de obicei un cache pe două niveluri, în timp ce sistemele server folosesc de obicei un cache cu trei niveluri. Cache-ul stochează instrucțiuni sau date care probabil vor fi primite de procesor pentru procesare în viitorul apropiat. Funcționarea memoriei cache este transparentă software, De aceea memorie cache de obicei nu este disponibil programatic.

RAM magazine, de regulă, complet funcțional module software(nucleul sistemului de operare, programele de execuție și bibliotecile acestora, driverele de dispozitiv utilizate etc.) și datele acestora direct implicate în funcționarea programelor și este, de asemenea, utilizat pentru a salva rezultatele calculelor sau a altor prelucrări de date înainte de a le trimite la stocarea externă, la ieșirea datelor dispozitivului sau la interfețele de comunicație.

Fiecare celulă memorie cu acces aleator atribuită o adresă unică. Metodele organizaționale pentru alocarea memoriei oferă programatorilor capacitatea de a utilizare eficientă toate sistem informatic. Astfel de metode includ un model de memorie continuă („plat”) și un model de memorie segmentată. Când se utilizează un model plat de memorie, programul funcționează cu un singur spațiu de adresă continuu, un spațiu de adresă liniar în care celulele de memorie sunt numerotate secvențial și continuu de la 0 la 2n-1, unde n este adâncimea de biți a CPU la adresă. Când se utilizează un model segmentat pentru un program, memoria este reprezentată de un grup de blocuri de adrese independente numite segmente. Pentru a adresa un octet de memorie, un program trebuie să folosească o adresă logică, constând dintr-un selector de segment și un offset. Un selector de segment selectează un anumit segment, iar un offset indică o anumită celulă din spațiul de adrese al segmentului selectat.

Organizarea memoriei MPS. Segmentarea memoriei. Calculul adresei. Memoria cache internă.

Memoria unui sistem cu microprocesor îndeplinește funcția de stocare temporară sau permanentă a datelor și comenzilor. Cantitatea de memorie determină complexitatea permisă a algoritmilor executați de sistem, precum și, într-o oarecare măsură, viteza sistemului în ansamblu. Modulele de memorie sunt implementate pe cipuri de memorie (RAM sau ROM). Memoria flash este din ce în ce mai utilizată ca parte a sistemelor cu microprocesoare. memorie flash), care este o memorie nevolatilă cu capacitatea de a-și rescrie conținutul de mai multe ori.

Pentru a conecta modulul de memorie la magistrala de sistem, sunt utilizate blocuri de interfață, care includ un decodor de adresă (selector), un circuit pentru procesarea semnalelor de control al magistralei și buffere de date (Figura 7.4.1).

Figura 7.4.1. Schema de conectare a modulului de memorie.

Spațiul de memorie al unui sistem cu microprocesor este de obicei alocat mai multor zone speciale care îndeplinesc funcții speciale. Acestea includ:

– memorie program de pornire, executată pe memorie ROM sau flash;

– memoria stivă sau stiva (Stack) este o parte a RAM destinată stocării temporare a datelor;

– tabel de vectori de întrerupere care conține adresele de start ale programelor de procesare a întreruperilor;

– memoria dispozitivelor conectate la magistrala de sistem.

Toate celelalte părți ale spațiului de memorie au de obicei scop universal. Ele pot conține atât date, cât și programe (desigur, în cazul unei arhitecturi cu o singură magistrală).

Adesea, spațiul de memorie este împărțit în segmente cu o adresă programabilă a începutului segmentului și cu mărimea stabilită segment. De exemplu, în procesor Intel Segmentarea memoriei 8086 este organizată după cum urmează.

Întreaga memorie a sistemului nu este reprezentată ca un spațiu continuu, ci sub forma mai multor bucăți - segmente de o dimensiune dată (64 KB fiecare), a căror poziție în spațiul de memorie poate fi modificată programatic.

Pentru a stoca codurile de adrese de memorie, nu se folosesc registre individuale, ci perechi de registre:

Registrul segmentului specifică adresa de început a segmentului (adică poziția segmentului în memorie);

Registrul pointerului (registrul offset) determină poziția adresei de lucru în cadrul segmentului.

În acest caz, adresa fizică de memorie de 20 de biți expusă magistralei de adrese externe este formată așa cum se arată în Figura 7.4.2, adică prin adăugarea offset-ului și a adresei segmentului cu o deplasare de 4 biți.

Figura 7.4.2. Formarea unei adrese de memorie fizică dintr-o adresă de segment și offset.

Locația acestei adrese în memorie este prezentată în Figura 7.4.3.

Figura 7.4.3. Locația adresei fizice în memorie

Un segment poate începe doar la o limită de memorie de 16 octeți (deoarece adresa de început a segmentului este în esență patru biți zero de ordin inferior, așa cum se vede în Figura 7.4.2), adică la o adresă care este un multiplu de 16. Acestea limitele de segment valide se numesc limite de paragraf.

Rețineți că introducerea segmentării se datorează în primul rând faptului că registrele interne ale procesorului sunt de 16 biți, iar adresa memoriei fizice este de 20 de biți (o adresă de 16 biți permite utilizarea a doar 64 KB de memorie, ceea ce clar nu este suficient).

Memoria cache este situată între memoria principală (RAM) și procesor central pentru a reduce timpul petrecut cu accesul CPU la OP.

Ideea memoriei cache se bazează pe prezicerea celor mai probabile accesări CPU la OP. Cele mai probabile date și instrucțiuni sunt copiate în memoria cache rapidă, ritmată de CPU, înainte de a fi utilizate direct de CPU, astfel încât datele și instrucțiunile utilizate în prezent să poată fi accesate rapid, fără a fi nevoie să accesați OP. Această abordare se bazează pe principiul localității programului sau, după cum se spune și ei, pe natura imbricată a apelurilor, adică adresele apelurilor succesive către OP formează, de regulă, un grup compact. La accesarea OP, nu datele individuale sunt copiate în memoria cache, ci blocurile de informații, inclusiv datele care cel mai probabil vor fi folosite de CPU în etapele de lucru ulterioare. În acest sens, instrucțiunile ulterioare sunt selectate de CPU nu din OP, ci din memoria cache rapidă. Când CPU trebuie să citească sau să scrie unele date în RAM, mai întâi își verifică prezența în memoria cache. Eficiența unui sistem cache depinde de dimensiunea blocului și de algoritmul programului.

O parte importantă a sistemelor de calcul este memoria. Organizarea interacțiunii dintre procesor și memorie determină principalele caracteristici ale sistemului de calcul, elementele rămase asigură conectarea acestei legături cu dispozitivele externe; lumea de afara. Memoria este conectată la controlerul de memorie (dispozitiv de gestionare a memoriei) prin intermediul magistralei de adrese, magistralei de date și magistralei de control. Lățimea magistralei de date determină câți biți binari pot fi citiți din memorie în același timp (în paralel). Fiecare cifră binară (1 bit) este stocată de un element de memorie. Elementele de memorie de diferite tipuri sunt construite pe baza diferitelor principii fizice pentru înregistrarea și stocarea informațiilor. Elementele de memorie sunt combinate în celule de memorie. În acest caz, toate elementele celulei sunt adresate simultan, în același mod, și sunt organizate în așa fel încât să poată scoate simultan date către magistrala de date. Astfel de celule combinate formează un cuvânt. Numărul de biți de date citiți din memorie simultan se numește lungimea eșantionului. Pentru a stoca 1 octet, sunt utilizate 8 elemente de memorie, celulele de memorie de opt biți sunt organizate folosind o magistrală de date cu o lățime de 8 linii.

Cipurile de memorie sunt folosite pentru a crea module de memorie care sunt instalate în sloturi speciale (conectori) ale sistemului informatic. Acum cel mai comun module DIMM- module de memorie cu două rânduri de contacte.

Lățimea magistralei de adrese determină spațiul de adrese, adică numărul de celule de memorie care pot fi adresate direct. Dacă lățimea magistralei de adrese este n, atunci numărul tuturor combinațiilor binare posibile (numărul de adrese) este determinat ca N = 2n.

Orez. 1. Organizarea comunicarii intre sistemul de memorie si procesor

Memoria unui dispozitiv de calcul poate efectua trei operații:

a) stocarea informațiilor;

b) înregistrarea informațiilor;

c) citirea informaţiei.

Specificații memorie:

Capacitatea memoriei determină cantitatea maximă de informații stocate în memorie și se măsoară în biți, octeți, kiloocteți, megaocteți, gigaocteți, terabytes etc.

Capacitatea specifică este definită ca raportul dintre capacitatea memoriei și volumul fizic pe care îl ocupă.

Densitatea de înregistrare a informațiilor este definită ca cantitatea de informații pe unitatea de suprafață a purtătorului de informații sau pe unitatea de lungime a suportului de informații.

Timp de acces la memorie. Performanța memoriei este determinată de durata operațiunilor la accesarea memoriei. Timpul de acces la scriere și timpul de acces la citire este suma timpului de căutare a unei celule de memorie la o anumită adresă și, respectiv, scrierea sau citirea efectivă.

Clasificarea memoriei:

Memorie cu acces aleator

Pentru memoria cu acces aleatoriu (memorie electronică), timpul de acces nu depinde de locația secțiunii de memorie dorită. Selectarea celulelor are loc prin adresă folosind circuite electronice.

Acces ciclic direct

La contact memorie pe disc se utilizează accesul ciclic direct. Suportul de stocare se rotește continuu, astfel încât capacitatea de a accesa aceeași zonă de memorie este ciclică.

Acces serial

Accesul secvenţial la date este posibil atunci când se utilizează banda magnetică ca mediu, unde este necesară vizualizarea secvenţială a secţiunilor de mediu pentru a găsi datele necesare.

Memorie fără adresă

Dispozitivele de stocare bazate pe stivă și asociative pot fi clasificate ca fără adresă. La accesarea memoriei fără adresă, comanda de acces la memorie nu specifică adresa celulei. În dispozitivele de memorie stivuite, adresa unei celule de memorie este urmărită de un registru special de adrese. La accesarea stivei, adresa din acest registru este setată. La accesarea memoriei asociative, căutarea informațiilor se realizează prin atribut (tag) prin compararea etichetelor tuturor celulelor de memorie cu atributul asociativ. Atributul asociativ este scris pentru a efectua operația de comparare într-un registru special de atribute.

Clasificarea memoriei după scop functional:

ROM - dispozitivele de memorie doar citire sau ROM (Read Only Memory), sunt folosite pentru a stoca date permanente și programe utilitare.

SRAM - Super Random Access Memory, este un set de registre scop general- RON, destinat stocarii operanzilor si rezultatelor unei operatii in procesor.

RAM - memorie cu acces aleatoriu sau RAM (Random Access Memory - memorie cu acces aleatoriu), folosită pentru stocarea programului în curs de execuție și a datelor operaționale. Dacă orice registru poate fi accesat pentru scriere/citire după adresa sa, atunci o astfel de structură de registru formează o RAM cu acces aleatoriu.

Clasificare după metoda de stocare a informațiilor:

Memoria statica

În dispozitivele de stocare statică, LSI-urile sunt realizate pe elemente de memorie de declanșare bistabile (având două stări stabile - de unde și numele de memorie).

Memoria dinamică

Dispozitivele de memorie dinamică folosesc LSI-uri mai ieftine, în care elementul de stocare este un condensator. Condensatorul se descarcă în timp (aceasta este dinamica), deci este necesar să se mențină valoarea potențială prin reîncărcarea condensatorului. Acest proces se numește regenerare.

Memoria persistentă

În dispozitivele de memorie numai pentru citire, elementul de stocare este o legătură fuzibilă fuzibilă sau o diodă semiconductoare, care joacă rolul unei legături distructibile. În ROM-urile reprogramabile, celulele formate din tranzistoare MOS plutitoare și plutitoare sunt folosite pentru a înregistra și stoca informații. poarta izolata, informațiile sunt înregistrate electric atunci când curentul trece prin canalul sursă/dren, încărcăturile sunt depuse pe poartă și sunt stocate atât timp cât se dorește. Ștergerea informațiilor se realizează prin aplicarea unei tensiuni de alt semn la secțiunea sursă/dren în ROM-uri reprogramabile cu ștergere electrică sau iradiere cu radiație ultravioletă în ROM-uri cu ștergere ultravioletă.

Memoria holografică

În dispozitivele de stocare holografică, informațiile sunt stocate în volumul unui cristal holografic sub forma unui instantaneu al interferenței a două unde, referință și informație. Acest tip promițător de dispozitive de stocare are o densitate mare de înregistrare a informațiilor și este în prezent în curs de dezvoltare.

Memoria biologică

Dispozitivele de stocare biologică utilizează modificări ale stării moleculelor organice care au capacitatea de a stoca sarcină și de a schimba electroni pentru a înregistra informații.

Depozitare magnetică

În dispozitivele de stocare externe pe medii magnetice, informațiile sunt stocate sub formă de secțiuni ale suprafeței feromagnetice a unui disc sau a unei benzi magnetice magnetizate într-o anumită direcție.

Memorie optică

În dispozitivele optice de stocare externă, informațiile sunt înregistrate sub formă de secțiuni care au coeficienți diferiți de împrăștiere a luminii ai unui fascicul laser direcționat.

Memoria este una dintre componentele principale ale oricărui computer. Capacitatea și viteza sa determină în mare măsură performanța întregului sistem informatic. ÎN această problemă au fost considerate cele mai multe tehnologii importante crearea și detaliile organizării memoriei.

ORGANIZAREA MEMORIEI ÎN MAȘINI DE CALCUL

Scop, parametri principali și

Clasificarea tipurilor de memorie

Dispozitive de memorie (dispozitive de stocare) VM sunt concepute pentru înregistrarea, stocarea și citirea informațiilor prezentate în formă digitală /2,3/. Dispozitivele de memorie, cum ar fi procesoarele, funcționează cu două tipuri de informații - programe și date, astfel încât caracteristicile memoriei determină în mare măsură performanța și funcţionalitate VM.

Dispozitivele de memorie funcționează în două moduri - acces la memorieȘi depozitare. În modul de acces la memorie, informațiile sunt scrise sau informațiile sunt citite din memorie. Dacă memoria nu este accesată, aceasta intră în modul de stocare.

Principalii parametri care caracterizează dispozitivele de memorie sunt capacitatea de informare (volum), performanța, consumul de energie și costul /2,5,8/.

Capacitatea de informare (volum) dispozitivul de memorie este determinat număr maxim informațiile stocate și sunt măsurate în octeți, KB, MB, GB și TB.

1 KB = 2 10 octeți; 1MB = 2 20 octeți; 1 GB = 2 30 de octeți și 1 TB = 2 40 de octeți.

Performanța memoriei este caracterizată de următorii parametri principali:

timpul de prelevare (acces) t V, un interval de timp determinat între momentele semnalului de eșantionare (începutul ciclului de citire) și primirea datelor citite la ieșirea memoriei;

durata ciclului de circulație t C, care este determinat de intervalul de timp minim admis între următorul prieten după alte accesări de memorie. Având în vedere că accesarea memoriei înseamnă scriere sau citire, uneori se împarte durata ciclului de citire t C.CHT. Și durata ciclului de înregistrare t Ts.ZP. pentru tipurile de memorie pentru care aceste lungimi de ciclu sunt diferite, de ex. t C.CHT. ≠ t Ts.ZP .

În general, ciclul de acces constă dintr-o fază de recuperare (acces) și o fază de regenerare (recuperare) a memoriei, prin urmare t C > t V.

Viteza memoriei poate fi, de asemenea, caracterizată prin rata de transfer a datelor scrise sau citite și măsurate în MB/sec.

Consumul de energie pentru multe tipuri de memorie în modul de acces este semnificativ mai mare decât în ​​modul de stocare. Memoria nevolatilă în modul de stocare nu consumă deloc energie electrică. Dar o serie de tipuri de memorie, de exemplu, memoria dinamică electronică, necesită cicluri de regenerare în modul de stocare, astfel încât consumul de energie în acest mod este comparabil cu consumul de energie în modul de acces.

Pentru comparație tipuri diferiteÎn memorie, este convenabil să utilizați consumul de energie și costul dispozitivelor de memorie reduse la o singură celulă (adică, specific).

Un parametru important memoria este, de asemenea latimea autobuzului date de memorie, definirea numărului de octeți care pot fi citiți sau scrieți simultan.

Dispozitivele de memorie VM pot fi clasificate în funcție de diverse semne: De principiul fizic munca, dupa scop functional, dupa modul de organizare, nevoia de alimentare cu energie in regim de stocare etc.

După principiul fizic de funcționare, memoria este clasificată în electronică, magnetică, optică, magnetic-optică.

Memorie electronică realizate pe elemente semiconductoare și implementate sub formă de LSI. Memoria electronică este împărțită în staticȘi dinamic.

IN BIS memorie statică Declanșatoarele statice pe tranzistoarele bipolare sau cu efect de câmp sunt utilizate ca celule de memorie elementare. După cum se știe, numărul de stări stabile ale unui declanșator este de două, ceea ce îi permite să fie utilizat pentru a stoca o unitate de informații - un bit. Celulele de memorie pentru stocarea octeților și cuvintelor folosesc 8 și, respectiv, 16 flip-flops.

În LSI-urile de memorie dinamică, următoarele sunt utilizate ca celule de memorie elementare: condensatoare electrice. Prezența unei taxe corespunde stocării unui „1 logic”, absența unei taxe – stocării unui „0 logic”. Fie capacitățile interelectrode ale tranzistoarelor MOS, fie condensatoarele MOS special create în cristalul LSI sunt utilizate ca condensatoare de stocare. Fragment diagramă bloc memoria dinamică care conține două celule 1 și 2 este prezentată în Fig. 6.1.

Fiecare celulă de memorie elementară conține un condensator de stocare MOS C (zecimi de pF) și un comutator tranzistor T care conectează acest condensator la magistrala de date. Poarta comutatorului MOS a tranzistorului este conectată la ieșirea corespunzătoare a decodorului de adrese. Când este selectată o celulă, comutatorul T se deschide și conectează condensatorul C la magistrala de date. Mai mult, în funcție de tipul de comandă: scriere (WR) sau citire (RD), datele de intrare sunt scrise (DI) sau datele de ieșire sunt citite (DO) prin amplificatorul corespunzător.

Memoria dinamică în comparație cu memoria statică este mult mai simplă, mai ieftină și oferă foarte mult grad înalt integrare, adică capacitate specifică mai mare. Dar, în comparație cu memoria dinamică statică, este mai lentă și necesită regenerare (restaurare) periodică a informațiilor în celulele elementare. Cu alte cuvinte, este necesară restabilirea periodică a încărcării condensatoarelor de stocare C, care se auto-descărcă în timp, adică. „pierde” informații. Pentru a face acest lucru, la fiecare câteva milisecunde (msec) citiți informații din celulele de memorie și apoi reînregistrare informație, care vă permite să restabiliți încărcarea la condensatoarele de stocare C. Necesitatea organizării ciclurilor periodice de regenerare (Refresh Cycles) complică oarecum gestionarea memoriei dinamice.

Pentru modulele de memorie electronice tipice, timpul de acces t V variază de la unități la zeci de nanosecunde ( nsec), iar capacitatea de informare este de zeci - sute de MB.

Memoria electronică statică și dinamică este volatil, adică Când sursa de alimentare este oprită, informațiile din celule nu sunt salvate. De asemenea este si ne volatil memorie electronică – dispozitive de memorie read-only (ROM), informații din care pot fi citite numai în timpul funcționării VM. Celulele de memorie ROM vor fi discutate mai jos.

Memoria magnetică se bazează pe prezența într-un număr de materiale magnetice (de exemplu, oxid de fier) ​​a două stări stabile de magnetizare remanentă a semnului opus. Astfel de materiale magnetice sunt caracterizate de o buclă de histerezis dreptunghiulară B = f(H), iar din ele se realizează un strat magnetic de lucru, aplicat pe suprafața diferitelor medii în mișcare - discuri magnetice. Pentru a scrie și a citi informații, se folosesc capete magnetice, care sunt bobine inductoare în miniatură înfășurate miez magnetic cu un gol. La înregistrare, capul magnetic magnetizează secțiunea stratului magnetic care trece sub spațiul de lucru în direcția determinată de direcția curentului care curge. Când citiți, zonele magnetizate ale suprafeței trec în apropierea capului de citire inductiv și induc impulsuri EMF în acesta. Dispozitivele de memorie care folosesc acest principiu au un cost specific foarte scăzut de stocare a informațiilor, sunt nevolatile, dar, fiind electromecanice, sunt semnificativ inferioare memoriei electronice în ceea ce privește viteza, fiabilitatea și consumul de energie. Pentru HDD-uri, rata de transfer de date ajunge la zeci de MB/sec, iar capacitatea de informare ajunge la sute de GB.



ÎN memorie optică Pentru a stoca informații, se folosește o modificare a proprietăților optice (în principal gradul de reflexie) ale suprafeței suportului. Mediul optic este realizat sub forma unui disc (Compact Disk - CD), al cărui strat reflectorizant (acoperire metalică) este acoperit cu un strat de colorant organic. La înregistrare, fasciculul laser este modulat de fluxul de biți înregistrați și anumite locuri calea arde găuri în stratul de colorant. Datorită diferenței de coeficient de reflexie a gropilor și a zonelor nearse ale suprafeței în timpul citirii, are loc o modulare a luminozității fasciculului reflectat, care codifică informațiile citite de pe CD. Produs Tipuri variate CD-uri optice: CD-ROM (Read Only Memory) - permițând doar citirea informațiilor înregistrate într-o metodă matriceală, CD-R (Recordable) - permițând cel puțin scrie o dată pe disc și citire repetată, CD-RW (ReWritable) - permițând rescrierea repetată pe disc (și, desigur, citirea). Discuri optice ieftin și au semnificative (până la un GB) capacitatea de informare, sunt nevolatile și ușor de înlocuit, dar în ceea ce privește viteza, fiabilitatea și consumul de energie, la fel ca discuri magnetice, sunt semnificativ inferioare memoriei electronice.

Pe baza scopului lor funcțional, dispozitivele de memorie pot fi clasificate în memorie cu acces aleatoriu (SRAM), memorie cu acces aleatoriu (RAM), memorie doar pentru citire (ROM) și dispozitiv de stocare externă (ESM).

RAM destinat stocării de programe (sistem, aplicație) și date utilizate direct de CPU în ora curentă. Duratele ciclurilor de citire și scriere pentru RAM sunt de obicei aceleași. De obicei, memoria dinamică de până la câțiva GB este utilizată ca RAM, în funcție de scopul și zona de aplicare a MS.

SRAM sau memorie cache- acesta este un volum mic memorie rapidă, pentru care durata ciclului de circulaţie t C. este mai mică decât durata ciclului maşinii de procesare. Prin urmare, atunci când accesați memoria cache, nu este necesar să introduceți cicluri de așteptare ale procesorului în ciclurile de acces la memoria mașinii. Memoria cache este o memorie tampon între RAM și CPU și rulează pe memorie statică. Cache-ul stochează copii ale blocurilor (paginilor) de programe și date din acele zone ale RAM care au fost accesate ultima dată, precum și un director - o listă a corespondenței lor curente cu zonele RAM. De fiecare dată când se face un acces la RAM, controlerul directorului cache verifică dacă există o copie validă a blocului (pagina) solicitat în cache. Dacă există o copie acolo, atunci acesta este cazul accesări în cache, și numai memoria cache este accesată pentru date sau cod. Dacă nu există nicio copie validă acolo, atunci acesta este cazul cache miss, iar blocul (pagina) necesar din RAM este scris în cache, iar scrierea se face în locul celui mai puțin relevant bloc (pagina) eliminat anterior din memoria cache din RAM, adică. bloc de informații, numărul de accesări la care a fost cel mai mic. Datorită naturii inerente a programelor și datelor, proprietăți fundamentale, Cum spațialăȘi localitate temporară/2,7,13/ numărul de accesări în cache este de multe ori mai mare decât numărul de erori în cache chiar și cu dimensiuni mici (unități - zeci de KB) de memorie cache. Prin urmare, utilizarea memoriei cache îmbunătățește semnificativ performanța VM. De obicei, memoria cache este implementată conform unei scheme pe trei nivele: un cache primar (L1 Cache), cu o capacitate de zeci de KB, și un cache secundar (L2 Cache), cu o capacitate de sute de KB, situat în MP crystal, un cache de nivel al treilea (L3 Cache), sunt instalate unități de MB placa de sistem sau în carcasa MP.

ROM este o memorie electronică nevolatilă care este utilizată pentru a stoca informații care sunt imuabile sau rareori modificate în timpul funcționării unui VM: software de sistem (BIOS), software de aplicație pentru VM-uri încorporate și on-board, seturi de tabele, parametri de configurare diverse sistemeși așa mai departe. Principalul mod de operare al ROM-ului este citirea, care determină un altul denumirea comună astfel de memorie ROM(Memorie numai pentru citire). Scrierea informațiilor pe ROM, numită programare, este de obicei mult mai dificilă și necesită mai mult timp și energie decât citirea lor.

VZU conceput pentru depozitare nevolatilă volume mari informații structurate într-un anumit fel: fișiere, baze de date, arhive. Trăsătură caracteristică memorie externa este că dispozitivele sale funcționează cu blocuri de informații, și nu cu octeți sau cuvinte, așa cum permite RAM. În plus, procesorul poate accesa VRAM-ul doar prin RAM. Unitățile de disc (HDD-uri, CD-uri) sunt de obicei folosite ca VRAM, permițând stocarea a sute de GB de informații.

Memorie electronică tampon incluse în controlori de diverse dispozitive externe, rezolvatorii de probleme afișarea și introducerea de informații, sarcini de comunicare, conversie de semnal etc. Prezența memoriei tampon vă permite să vă coordonați semnificativ viteze diferite transfer de informatii magistrala de sistemși dispozitivele externe, reduceți timpul în care fiecare dispozitiv extern utilizează magistrala de sistem și creșteți performanța VM.

Metoda de organizare a memoriei este determinată de metoda de plasare și căutare a informațiilor în memorie. Pe baza acestei caracteristici, ei fac distincția între organizarea memoriei de adresă, asociativă și stiva.

ÎN memorie de adrese pentru a accesa celulele de memorie sunt folosite adrese, care se referă la codurile numerelor celulelor de memorie. Organizarea adresei memoriei vă permite să accesați celulele de memorie după adresele lor în orice ordine, iar durata ciclului de acces este aceeași pentru toate celulele, indiferent de adresă. Prin urmare, termenul „memorie cu acces aleatoriu” sau RAM (Memorie cu acces aleatoriu) este, de asemenea, folosit pentru a denumi o astfel de memorie. De exemplu, RAM și ROM au o organizare a memoriei adresabilă.

ÎN memorie asociativă(AMU) informațiile sunt căutate nu după adresele celulelor de memorie, ci după conținutul acestora sau o parte din ele. În cazul general, o solicitare către memoria asociativă este efectuată prin specificarea unei liste de biți care ar trebui să fie utilizați pentru a căuta o celulă de memorie și prin specificarea conținutului biților alocați. Lista de biți de căutat este specificată registru-mască. Acest registru are aceeași lățime de biți ca și celula de memorie a RAM și îi conține numai în acei biți care sunt căutați. ÎN registru-context conținutul acestor biți este specificat, iar adâncimea sa de biți este egală cu lățimea de biți a registrului de mască.

Dacă se găsește o celulă cu o combinație dată de zerouri și unu, ACU generează un răspuns pozitiv indicând adresa celulei găsite. Apoi, adresa este transferată către decodorul de adrese și întregul conținut al unei astfel de celule poate fi citit sau conținut nou poate fi scris în ea. În caz contrar, ACU generează un răspuns negativ la cerere.

Căutarea informațiilor în funcție de context în RAM este efectuată simultan în toate celulele de memorie, astfel încât RAM este de multe ori mai rapidă decât RAM, dar sunt și mult mai scumpe. În sistemele de calcul moderne, RAM-urile sunt utilizate, de exemplu, ca parte a memoriei cache.

Stack memorie(Stiva), la fel ca asociația, este fără adresă. O stivă poate fi considerată ca o colecție de celule care se formează matrice unidimensională, în care celulele învecinate sunt conectate între ele prin circuite de biți de transmisie a cuvintelor. În această memorie, scrierea și citirea sunt efectuate conform regulii „last input first output (LIFO)”. De aceea stiva se numește memorie de stocare de ordine inversă. De obicei, stiva este organizată în RAM. Numărul de cuvinte din stivă este determinat de registrul pointer al stivei SP, iar scrierea și citirea din stivă sunt efectuate folosind comenzile PUSH și respectiv POP. Memoria stivă este utilizată pe scară largă, așa cum sa discutat mai sus, atunci când se gestionează întreruperi și se apelează subrutine.

Alături de memoria stivă, memoria „reviste” cu o ordine mare de citire a devenit larg răspândită, de exemplu. „primul scris citit primul” sau „First Input First Output (FIFO)”. Această memorie se numește memorie tampon și, ca și stiva, este organizată în RAM.

Capitolul 11

Organizarea memoriei sistemelor informatice

În sistemele de calcul care combină multe procesoare sau mașini paralele, sarcina de a organiza corect memoria este una dintre cele mai importante. Diferența dintre viteza procesorului și a memoriei a fost întotdeauna o piatră de poticnire în VM-urile cu un singur procesor. Multiprocesarea calculatoarelor duce la o altă problemă - problema accesului simultan la memorie de către mai multe procesoare.

În funcție de modul în care este organizată memoria sistemelor multiprocesor (multi-mașină), sistemele de calcul cu memorie partajată(memorie partajată) și aeronave cu memorie distribuită (memorie distribuită). ÎN sisteme de memorie partajată(numită adesea și memorie partajată sau partajată), memoria este tratată ca o resursă partajată și fiecare procesor are acces deplin la întreg spațiul de adrese. Sunt apelate sistemele cu memorie partajată puternic conectat(sisteme strâns cuplate). O construcție similară a sistemelor de calcul are loc atât în ​​clasa SIMD, cât și în clasa MIMD. Uneori, pentru a sublinia această împrejurare, sunt introduse subclase speciale, folosind abrevierile SM-SIMD (Shared Memory SIMD) și SM-MIMD (Shared Memory MIMD) pentru a le desemna.

In optiune cu memorie distribuită Fiecare procesor are propria sa memorie. Procesoarele sunt combinate V rețea și pot, dacă este necesar, să facă schimb de date stocate în memoria lor, transferându-și unul altuia așa-numitele mesaje. Acest tip de aeronavă se numește slab conectat(sisteme slab cuplate). Slab sistemele conectate se regăsesc și în clasa SIMD și în clasa MIMD, iar uneori, pentru a sublinia această caracteristică, sunt introduse subclasele DM-SIMD (Distributed Memory SIMD) și DM-MIMD (Distributed Memory MIMD).

În unele cazuri, sunt apelate sisteme de calcul cu memorie partajată multiprocesoare,și sisteme cu memorie distribuită - mtslticomputere.

Diferența dintre memoria partajată și cea distribuită este diferența în structura memoriei virtuale, adică modul în care arată memoria din partea procesorului. Din punct de vedere fizic, aproape fiecare sistem de memorie este împărțit în componente autonome care pot fi accesate independent. Ceea ce separă memoria partajată de memoria distribuită este modul în care subsistemul de memorie interpretează adresa celulei primită de la procesor. De exemplu, să presupunem că procesorul execută instrucțiunea de încărcare RO, i, adică „Încărcați registrul R0 cu conținutul celulei i”. În cazul memoriei partajate, i este o adresă globală, iar pentru orice procesor indică aceeași celulă. ÎN sistem distribuit memoria i este adresa locala Dacă două procesoare execută comanda load RO, i, atunci fiecare dintre ele accesează celula i-a din ea memorie locală, adică să celule diferite, iar valori inegale pot fi încărcate în registrele R0.

Diferența dintre cele două sisteme de memorie trebuie luată în considerare de către programator deoarece determină modul în care părțile unui program paralelizat interacționează. În opțiunea de memorie partajată, este suficient să creați o structură de date în memorie și să transmiteți referințe la această structură către subrutine paralele. Într-un sistem de memorie distribuită, este necesar să existe o copie a datelor partajate în fiecare memorie locală. Aceste copii sunt create prin încorporarea datelor partajate în mesajele trimise altor procesoare.

Memoria intercalată

Din punct de vedere fizic, memoria unui sistem informatic este formată din mai multe module (bănci), iar o problemă semnificativă este modul în care este distribuit spațiul de adrese în acest caz (setul tuturor adreselor pe care procesorul le poate genera). O modalitate de a distribui adrese virtuale între modulele de memorie este împărțirea spațiului de adrese în blocuri secvențiale. Dacă memoria constă din P bănci, apoi celula cu adresa i cu partiţionare bloc cu bloc va fi în banca cu număr i/ n. În sistem memorie intercalată(memorie intercalată) adresele consecutive sunt situate în bănci diferite: celula cu adresa i este în bancă cu numărul i mod P. Să fie, de exemplu, memoria formată din patru bănci, de 256 de octeți fiecare. Într-o schemă orientată pe bloc, primului banc i se vor aloca adrese virtuale 0-255, al doilea - 256-511 etc. Într-o schemă cu adrese intercalate, celulele succesive din primul banc vor avea adrese virtuale 0, 4, 8 , .. .. în al doilea mal - 1, 5, 9 etc. (Fig. 11.1, a).

Distribuirea spațiului de adrese între module face posibilă procesarea simultană a cererilor de acces la memorie dacă adresele corespunzătoare aparțin unor bănci diferite. Procesorul poate solicita accesul la o celulă într-unul dintre cicluri i iar în ciclul următor - la celula j. Dacă iȘij sunt în bănci diferite, informațiile vor fi transmise în cicluri succesive. Aici, un ciclu se referă la un ciclu de procesor, în timp ce ciclu complet memoria durează mai multe cicluri de procesor. Astfel, în acest caz, procesorul nu trebuie să aștepte până la finalizarea întregului ciclu de accesare a celulei i. Această tehnică vă permite să măriți lățimea de bandă: dacă sistemul de memorie este format din

Orez. 11.1- Memorie cu adrese alternante: a - distributie adrese; b- elemente extrase în trepte de 9 dintr-o matrice 8 x 8

număr suficient de bănci, este posibil să se facă schimb de informații între procesor și memorie la o viteză de un cuvânt pe ciclu de procesor, indiferent de durata ciclului de memorie.

Decizia cu privire la opțiunea de distribuire a adresei să alegeți (în bloc sau în dungi) depinde de ordinea așteptată de acces la informații. Programele sunt compilate în așa fel încât instrucțiunile secvențiale să fie localizate în celule cu adrese secvențiale, deci există o mare probabilitate ca după instrucțiunea extrasă din adresa celulei i, instrucțiunea din celulă să fie executată i + 1. Compilatorul plasează și elemente de vectori în celule secvențiale, astfel încât în ​​operațiile cu vectori puteți profita de metoda intercalării. Din acest motiv, procesoarele vectoriale folosesc de obicei o anumită formă de intercalare a adreselor. Multiprocesoarele cu memorie partajată folosesc încă adresarea bloc, deoarece modelele de acces la memorie ale sistemelor MIMD pot varia foarte mult. În astfel de sisteme, scopul este de a conecta procesorul la un bloc de memorie și de a utiliza cât mai mult posibil din informațiile din acesta înainte de a trece la un alt bloc de memorie.

Sistemele de memorie oferă adesea flexibilitate suplimentară atunci când preiau vectori de elemente. Pe unele sisteme, este posibil să se încarce simultan fiecare al n-lea element al unui vector, de exemplu atunci când se regăsesc elemente ale unui vector V, stocate în celule de memorie succesive; la P= 4, memoria va reveni Se numește distanța dintre elemente pas cu index sau "pas"(pas). Unul dintre aplicatii interesante Această proprietate poate servi drept Matrix Access. Dacă pasul de index este cu unul mai mare decât numărul de rânduri din matrice, o singură cerere de acces la memorie va returna toate elementele diagonale ale matricei (Fig. 11.1b). Responsabilitatea de a se asigura că toate elementele matricei extrase sunt localizate în bănci diferite revine programatorului.

Modele de arhitectură de memorie a sistemelor informatice

Mai multe modele de arhitecturi ale sistemelor de memorie sunt implementate atât în ​​memoria partajată, cât și în cea distribuită.

Orez. 11.2. Clasificarea modelelor de arhitectură de memorie a sistemelor informatice

În fig. 11.2 arată clasificarea unor astfel de modele utilizate în sistemele de calcul din clasa MIMD (acest lucru este valabil și pentru clasa S1MD).

Modele de arhitectură a memoriei partajate

În sistemele cu memorie partajată, toate procesoarele au capacități egale, dar acces la un singur spațiu de adrese. O singură memorie poate fi construită ca un singur bloc sau modulară, dar a doua opțiune este de obicei practicată.

Sunt apelate sistemele de calcul cu memorie partajată, unde orice procesor accesează memoria uniform și durează același timp sisteme cu acces uniform la memorieși este desemnat prin abrevierea UMA (Uniform Memory Access). Aceasta este cea mai comună arhitectură de memorie VS paralelă cu memorie partajată.

Din punct de vedere tehnic, sistemele UMA presupun prezența unui nod care conectează fiecare dintre ele P procesoare cu fiecare T module de memorie. Cel mai simplu mod construcția unor astfel de calculatoare - care combină mai multe procesoare (P i) cu o singură memorie (M p) printr-o magistrală comună - este prezentată în Fig. 11.3, A.În acest caz, însă, doar unul dintre procesoare poate comunica pe magistrală în orice moment, adică procesoarele trebuie să concureze pentru accesul la spike. Când procesorul P i selectează o instrucțiune din memorie, celelalte procesoare trebuie să așteptați până când anvelopa este liberă. Dacă V Sistemul include doar două procesoare, acestea fiind capabile să lucreze cu performanțe aproape de maxim, deoarece accesul lor la magistrală poate fi intercalat: în timp ce un procesor decodifică și execută o instrucțiune, celălalt are dreptul de a folosi magistrala pentru a prelua următoarea instrucțiune din memorie. Cu toate acestea, atunci când se adaugă un al treilea procesor, performanța începe să scadă. Dacă există zece procesoare pe magistrală, curba vitezei magistralei (Fig. H.3, A) devine orizontală, așa că adăugarea unui al 11-lea procesor nu mai oferă o creștere a performanței. Curba de jos din această figură ilustrează faptul că memoria și magistrala au o lățime de bandă fixă ​​determinată de combinația dintre timpul ciclului de memorie și protocolul de magistrală, iar într-un sistem multiprocesor cu magistrală partajată acest lucru debitului distribuite între mai multe procesoare. Dacă timpul ciclului procesorului este mai lung decât ciclul memoriei, multe procesoare pot fi conectate la magistrală. Cu toate acestea, în realitate procesorul este de obicei mult mai rapid decât memoria, prin urmare această schemă nu este utilizată pe scară largă.

Orez. 11.3. Memoria partajată: a - combinarea procesoarelor folosind o magistrală; b - sistem cu cache locale; V- performanta sistemului in functie de numarul de procesoare de pe magistrala; d - calculator multiprocesor cu memorie partajată format din module separate

O modalitate alternativă de a construi un computer multiprocesor cu memorie partajată bazată pe NML este prezentată în Fig. 11.3, G. Aici vârful este înlocuit de un comutator care direcționează cererile procesorului către unul dintre mai multe module de memorie. Chiar dacă există mai multe module de memorie, toate fac parte dintr-un singur spațiu de adrese virtuale. Avantajul acestei abordări este că comutatorul este capabil să servească mai multe cereri în paralel. Fiecare procesor poate fi conectat la propriul modul de memorie și are acces la el la viteza maximă permisă. Conflictele între procesoare pot apărea atunci când încercați să accesați același modul de memorie în același timp. În acest caz, doar un procesor are acces, iar celelalte sunt blocate.

Din păcate, arhitectura UMA nu se scalează foarte bine. Cele mai comune sisteme conțin 4-8 procesoare, mult mai rar 32-64 procesoare. În plus, astfel de sisteme nu pot fi clasificate ca tolerante la erori, deoarece defecțiunea unui procesor sau a unui modul de memorie implică defecțiunea întregului computer.

O altă abordare a construirii unui computer cu memorie partajată este acces heterogen la memorie, notat ca NUM A (Acces la memorie non-uniformă). Aceasta implică încă un singur spațiu de adrese, dar fiecare procesor are memorie locală. Procesorul accesează direct propria memorie locală, ceea ce este mult mai rapid decât accesarea memoriei la distanță printr-un comutator sau rețea. Un astfel de sistem poate fi suplimentat cu memorie globală, apoi dispozitivele de stocare locale acționează ca o memorie cache rapidă pentru memoria globală. O astfel de schemă poate îmbunătăți performanța aeronavei, dar nu poate întârzia la nesfârșit nivelarea performanței directe. Dacă fiecare procesor are o memorie cache locală (Fig. 11.3.6), există o mare probabilitate (p > 0.9) că comanda sau datele necesare sunt deja în memoria locală. Probabilitatea rezonabilă de a atinge memoria locală reduce semnificativ numărul de accesări la procesor La memorie globală și duce astfel la creșterea eficienței. Locația punctului de inflexiune în curba de performanță (curba superioară din Fig. 11.3, V), corespunzând punctului în care adăugarea procesoarelor este încă eficientă, acum se deplasează în regiunea a 20 de procesoare, iar punctul în care curba devine orizontală se deplasează în regiunea a 30 de procesoare.

În cadrul conceptului NUMA Sunt implementate mai multe abordări diferite, notate prin acronime SOMA,CC- NUMA Și NCC- NUMA.

ÎN arhitectură doar cache(SOMA, Cache Only Memory Architecture) memoria locală a fiecărui procesor este construită ca o memorie cache mare pentru acces rapid de către procesorul „sau”. Cache-urile tuturor procesoarelor sunt considerate colectiv ca memorie de sistem globală. Nu există o memorie globală reală. Caracteristica fundamentală a conceptului SOMA este exprimată în dinamică. Aici, datele nu sunt legate static de un anumit modul de memorie și nu au o adresă unică care rămâne neschimbată pe toată durata de viață a variabilei. În arhitectura SOMA, datele sunt transferate în memoria cache a procesorului care le-a solicitat ultima dată, în timp ce variabila nu este fixată printr-o adresă unică și poate fi localizată în orice celulă fizică în orice moment. Mutarea datelor dintr-un cache local în altul nu necesită ca sistemul de operare să fie implicat în proces, dar implică un hardware complex și costisitor de gestionare a memoriei. Pentru a organiza un astfel de regim, așa-zis directoarele cache. De asemenea, rețineți că ultima copie Elementul de date nu este niciodată eliminat din cache.

Deoarece în arhitectura COMA datele sunt mutate în memoria cache locală a procesorului proprietar, astfel de computere au un avantaj semnificativ de performanță față de alte arhitecturi NUM A Pe de altă parte, dacă o singură variabilă sau două variabile diferite sunt stocate în aceeași linie din aceeași memorie cache , sunt solicitate de două procesoare, această linie de cache trebuie să se deplaseze înainte și înapoi între procesoare cu fiecare acces la date. Astfel de efecte pot depinde de detaliile alocării memoriei și pot duce la situații imprevizibile.

Model cache acces coerent la memoria eterogenă(CC-NUMA, Сасhe Coherent Non-Uniform Memory Architecture) este fundamental diferit de modelul SOMA. Sistemul CC-NUMA nu folosește memorie cache, ci memorie obișnuită distribuită fizic. Nu există nicio copiere a paginilor sau a datelor între celulele de memorie. Nu există nicio transmitere de mesaje implementată de software. Există pur și simplu un card de memorie, cu piesele conectate fizic printr-un cablu de cupru și hardware „inteligent”. Coerența cache-ului bazată pe hardware înseamnă că nu este necesar niciun software pentru a stoca sau transmite mai multe copii ale datelor actualizate. Nivelul hardware se ocupă de toate acestea. Accesul la modulele de memorie locale din diferite noduri ale sistemului se poate realiza simultan și are loc mai rapid decât la modulele de memorie la distanță.

Diferența dintre model și acces incoerent în cache la memoria eterogenă(NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) de la CC-NUMA este evident din nume. Arhitectura memoriei presupune un singur spațiu de adresă, dar nu oferă consistență globală a datelor la nivel hardware. Gestionarea utilizării acestor date revine în întregime software-ului (aplicații sau compilatoare). În ciuda acestei circumstanțe, care pare a fi un dezavantaj al arhitecturii, se dovedește a fi foarte utilă în creșterea performanței sistemelor de calcul cu o arhitectură de memorie de tip DSM, discutată în secțiunea „Modele de arhitecturi de memorie distribuită”.

În general, sunt numite calculatoare cu memorie partajată, construite după schema NUMA arhitecturi cu memorie virtuală partajată(arhitecturi de memorie virtuală partajată). Acest tip de arhitectură, în special CC-NUMA, În ultima vreme este considerat un tip independent și destul de promițător de sisteme de calcul din clasa MIMD, prin urmare, astfel de computere vor fi discutate mai detaliat mai jos.

Modele de arhitecturi de memorie distribuită

Într-un sistem de memorie distribuită, fiecare procesor are propria sa memorie și poate doar să o adreseze. Unii autori numesc acest tip de sistem aeronave cu mai multe mașini sau mai multe computere, subliniind faptul că blocurile din care este construit sistemul sunt ele însele mici sisteme de calcul cu procesor și memorie. Modelele de arhitecturi cu memorie distribuită sunt de obicei notate ca arhitecturi fără acces direct la memoria de la distanță(NORMA, Fără acces la memorie la distanță). Acest nume vine de la faptul că fiecare procesor are acces doar la memoria sa locală. Accesul la memoria de la distanță (memoria locală a altui procesor) este posibil doar prin schimbul de mesaje cu procesorul care deține memoria adresabilă.

O astfel de organizație se caracterizează printr-o serie de avantaje. În primul rând, la accesarea datelor, nu există nicio dispută pentru magistrală sau comutatoare - fiecare procesor poate folosi pe deplin lățimea de bandă a căii de comunicație cu propria sa memorie locală. În al doilea rând, absența unei magistrale comune înseamnă că nu există restricții asociate cu privire la numărul de procesoare: dimensiunea sistemului este limitată doar de rețeaua care conectează procesoarele. În al treilea rând, problema coerenței memoriei cache este eliminată. Fiecare procesor are dreptul de a-și schimba datele în mod independent, fără a-și face griji cu privire la potrivirea copiilor de date din propriul cache local cu cache-urile altor procesoare.

Principalul dezavantaj al calculatoarelor cu memorie distribuită este complexitatea schimbului de informații între procesoare. Dacă unul dintre procesoare are nevoie de date din memoria altui procesor, trebuie să facă schimb de mesaje cu acel procesor. Rezultă două tipuri de costuri:

    este nevoie de timp pentru a genera și redirecționa un mesaj de la unul! procesor la altul;

    Pentru a răspunde la mesajele de la alte procesoare, procesorul care primește trebuie să primească o cerere de întrerupere și să execute procedura de gestionare a întreruperilor.

Structura unui sistem cu memorie distribuită este prezentată în Fig. 11.4. La stânga! piese (Fig. 11.4, A) este prezentat un element de prelucrare (PE). Include) procesorul însuși (P), memoria locală (M) și două controlere de intrare/ieșire (K o și CD pe partea dreaptă (Fig. 11.4, b) prezintă un sistem cu patru procesoare, ilustrând modul în care mesajele sunt trimise de la un procesor la altul. În raport cu fiecare PE, toate celelalte elemente de procesare pot fi considerate pur și simplu ca dispozitive de intrare/ieșire. Pentru a trimite un mesaj către un alt PE, procesorul formează un bloc de date în memoria locală și își anunță controlerul local despre necesitatea transferului de informații către un dispozitiv extern. Prin intermediul rețelei de interconectare, acest mesaj este trimis controlerului I/O receptor al PE receptor. Acesta din urmă găsește un loc pentru mesaj în propria memorie locală și anunță procesorul sursă că mesajul a fost primit.

Orez. 11.4. Sistem de calcul cu memorie distribuită: a - element de procesare; b- combinarea elementelor de prelucrare o

O variantă interesantă a unui sistem de memorie distribuită este; model memorie partajată distribuită(DSM, Distribuire memorie partajată), cunoscut și sub un alt nume arhitecturi cu eterogeneacces la memorie și coerență software(SC-NUMA, Software-Coerent Non-Uniform Memory Architecture). Ideea acestui model este că computerul, fizic fiind un sistem cu memorie distribuită, datorită sistemului de operare, este prezentat utilizatorului ca un sistem cu memorie partajată. Înseamnă că sistem de operare oferă utilizatorului un singur spațiu de adresă, în ciuda faptului că accesul efectiv la memoria unui computer „străin” BC este încă asigurat prin schimbul de mesaje.

Multiprocesorcoerența cache-ului

Un sistem multiprocesor cu memorie partajată constă din două sau mai multe procesoare independente, fiecare dintre ele executând fie o parte a unui program mare, fie program independent. Toate procesoarele accesează instrucțiunile și datele stocate într-o memorie principală comună. Deoarece memoria este o resursă partajată, conflictele între procesoare apar la accesarea acesteia, ceea ce duce la o creștere a latenței medii de acces la memorie. Pentru a reduce această latență, fiecărui procesor i se oferă un cache local, care, prin deservirea acceselor la memoria locală, în multe cazuri previne necesitatea accesului la memoria principală partajată. La rândul său, echiparea fiecărui procesor cu memorie cache locală duce la așa-numitul problema de coerență sau securitate conformmemorie cache. Conform , un sistem este coerent dacă fiecare operație de citire la orice adresă efectuată de oricare dintre procesoare returnează valoarea introdusă în timpul ultimei operații de scriere la această adresă, indiferent de ce procesor a efectuat ultima scriere.

În forma sa cea mai simplă, problema coerenței cache-ului poate fi explicată după cum urmează (Figura 11.5). Lăsați două procesoare R G și R g sunt conectate la memoria partajată printr-o magistrală. În primul rând, ambele procesoare citesc variabila X. Copii ale blocurilor care conțin această variabilă sunt trimise din memoria principală către cache-urile locale ale ambelor procesoare (Fig. 11.5, A).În continuare, procesorul P t realizează operația de creștere a valorii variabilei X pe unitate. Deoarece o copie a variabilei se află deja în memoria cache a acestui procesor, va avea loc o lovire în cache și valoarea va fi modificată doar în memoria cache 1. Dacă procesorul P 2 efectuează din nou operația de citire X, atunci va apărea și o lovitură de cache și P 2 va primi valoarea „veche” stocată în memoria sa cache X(Fig. 11.5, b).

Menținerea coerenței necesită ca atunci când un element de date este schimbat de către unul dintre procesoare, modificările corespunzătoare să fie făcute în memoria cache a procesoarelor rămase, unde există o copie a elementului de date modificat, precum și în memoria partajată. O problemă similară apare, de altfel, în sistemele cu un singur procesor unde există mai multe niveluri de memorie cache. Aici este necesar să se coordoneze conținutul cache-urilor de diferite niveluri.

Există două abordări pentru rezolvarea problemei de coerență: software și hardware. Unele sisteme folosesc strategii care combină ambele abordări.

Soluții softwareprobleme de coerență

Tehnicile software pentru rezolvarea problemei de coerență vă permit să faceți fără echipamente suplimentare sau să le reduceți la minimum)