Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 8
  • Organizarea fizică și logică a memoriei sistemelor de calcul. Principiile de gestionare a memoriei unui sistem de calcul

Organizarea fizică și logică a memoriei sistemelor de calcul. Principiile de gestionare a memoriei unui sistem de calcul

Organizarea memoriei Ministerului Căilor Ferate. Segmentarea memoriei. Calculul adresei. Memoria cache internă.

Memoria sistemului 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 executate pe cipuri de memorie (RAM sau permanente). Din ce în ce mai mult, memoria flash este folosită ca parte a sistemelor cu microprocesoare. memorie flash), care este o memorie nevolatilă cu capacitatea de a suprascrie în mod repetat conținutul.

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 ale magistralei și tampoane de date (Figura 7.4.1).

Figura 7.4.1. Schema de conectare a modulului de memorie.

În spațiul de memorie al unui sistem cu microprocesor, sunt de obicei alocate mai multe zone speciale care îndeplinesc funcții speciale. Acestea includ:

- memoria programului de pornire, executată pe memorie ROM sau flash;

- memoria pentru stiva sau stiva (Stiva) face parte memorie cu acces aleator destinat stocării temporare a datelor;

- un tabel de vectori de întrerupere care conţine adresele de început a programelor de procesare a întreruperilor;

- memoria dispozitivelor conectate la magistrala de sistem.

Toate celelalte părți ale spațiului de memorie tind să aibă 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 marime fixa segment. De exemplu, în procesorul Intel 8086, segmentarea memoriei este organizată după cum urmează.

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

Pentru a stoca coduri de adrese de memorie, nu se folosesc registre separate, ci perechi de registre:

Registrul de segment definește adresa începutului segmentului (adică poziția segmentului în memorie);

Registrul pointerului (registrul offset) definește poziția adresei de lucru în cadrul segmentului.

În acest caz, adresa de memorie fizică de 20 de biți setată la magistrala de adrese externă este formată așa cum se arată în Figura 7.4.2, adică prin adăugarea decalajului și a adresei segmentului cu o deplasare de 4 biți.

Figura 7.4.2. Formarea adresei de memorie fizică din adresa segmentului și offset.

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

Figura 7.4.3. Poziția adresei fizice în memorie

Un segment poate începe doar la o limită de memorie de 16 octeți (deoarece adresa începutului unui segment, de fapt, are patru biți zero cel puțin semnificativi, după cum puteți vedea în Figura 7.4.2), adică la o adresă adică un multiplu de 16. Aceste limite de segment permise 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 fizică a memoriei este de 20 de biți (o adresă de 16 biți permite utilizarea doar a 64 KB de memorie, ceea ce clar nu este suficient).

Memoria cache este situată între memoria principală (RAM) și unități centrale de procesare pentru a reduce timpul petrecut cu accesarea 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 într-o memorie cache rapidă, ritmată de CPU, înainte ca CPU-ul să le folosească efectiv, astfel încât datele și instrucțiunile utilizate în prezent să poată fi accesate rapid fără a avea acces la memoria RAM. Această abordare se bazează pe principiul localității programului sau, după cum se spune, pe natura imbricată a apelurilor, adică adresele apelurilor consecutive către OP formează, de regulă, un grup compact. Când accesați memoria RAM, nu datele individuale sunt copiate în memoria cache, ci blocuri de informații, inclusiv acele date care sunt cel mai probabil să fie utilizate de CPU în etapele ulterioare de lucru. În acest sens, comenzile ulterioare sunt preluate de CPU nu din RAM, ci din memoria cache rapidă. Când CPU trebuie să citească sau să scrie unele date în RAM, mai întâi verifică prezența acesteia în memoria cache. Eficiența sistemului de cache depinde de dimensiunea blocului și de algoritmul programelor.

Memoria principala

Memoria principala este un dispozitiv de stocare conectat direct la procesor și conceput pentru a stoca programe executabile și date direct implicate în operațiuni. Are performanță suficientă, dar volum limitat. Memoria principală este împărțită în diferite tipuri, dintre care principalele sunt memoria cu acces aleatoriu (RAM) și memoria doar în citire (ROM) (Fig. 1).

RAM este conceput pentru a stoca informații (programe și date) direct implicate în proces de calculîn stadiul actual de funcţionare.

RAM este utilizat pentru primirea, stocarea și emiterea de informații. Procesorul „preia” programele și datele inițiale pentru procesare, în care scrie rezultatele. Această memorie și-a primit numele „operațional” deoarece funcționează foarte rapid, astfel încât procesorul practic nu trebuie să aștepte în timp ce citește date din memorie și scrie în memorie. Cu toate acestea, datele pe care le conține sunt păstrate numai când computerul este pornit. Când opriți computerul, conținutul memoriei RAM este șters. Astfel, RAM este o memorie volatilă.

Orez. 1. Principalele tipuri de memorie principală

Adesea, denumirea RAM (memorie cu acces aleatoriu, adică memorie cu acces aleatoriu). Accesul aleatoriu este înțeles ca abilitatea de a accesa direct orice celulă de memorie specificată (arbitrară), iar timpul de acces pentru orice celulă este același.

RAM se bazează pe mare circuite integrate conţinând matrice de elemente de stocare semiconductoare (declanşatoare). Elementele de stocare sunt situate la intersecția magistralelor verticale și orizontale ale matricei; înregistrarea și citirea informațiilor se realizează prin aplicarea de impulsuri electrice prin acele canale ale matricei, care sunt conectate la elementele aparținând celulei de memorie selectate.

Cantitatea de RAM instalată în computer depinde nu numai de capacitatea de a lucra cu programe intensive în resurse, ci și de performanța acesteia, deoarece atunci când există o lipsă de memorie, este folosită ca extensie logică. HDD, timpul de acces la care este incomparabil mai mare. Pe lângă cantitatea de memorie RAM, performanța unui computer este afectată și de viteza acestuia și de metoda folosită pentru schimbul de date între microprocesor și memorie.

OP este implementat pe cipuri DRAM (OP dinamic), care, în comparație cu alte tipuri de memorie, se caracterizează prin costuri reduse și capacitate specifică ridicată, dar consum mare de energie și performanțe mai scăzute. Fiecare octet de date (0 și 1) din DRAM este stocat ca o încărcare a condensatorului. Datorită prezenței curenților de scurgere, încărcarea condensatorului trebuie reînnoită la intervale regulate. Din cauza necesității continue de actualizare, o astfel de memorie se numește memorie dinamică. Regenerarea conținutului memoriei necesită timp suplimentar, iar înregistrarea informațiilor în memorie în timpul regenerării nu este permisă.

Costul RAM în timpuri recente a scăzut brusc (din vara lui 1995 până în vara lui 1996 - de peste 4 ori), prin urmare, cererile mari ale multor programe și sisteme de operare pentru RAM cu punct financiar vederea au devenit mai puțin împovărătoare.

Pentru a accelera accesul la RAM pe computerele de mare viteză, se folosește o memorie cache stabilă de ultra-rapidă, care se află, așa cum ar fi, „între” microprocesor și RAM și stochează copii ale celor mai frecvent utilizate secțiuni ale RAM. Când microprocesorul accesează memoria, mai întâi caută datele necesare din memoria cache. Deoarece timpul de acces la memoria cache este de câteva ori mai scurt decât la memorie convențională, iar în majoritatea cazurilor datele necesare pentru microprocesor sunt deja stocate în memoria cache, timpul mediu de acces la memorie scade. Memoria cache este implementată pe un cip SRAM (RAM statică).

Pentru computerele bazate pe Intel-386DX sau 80386SX, dimensiunea cache-ului de 64 KB este suficientă, iar 128 KB este suficientă. Calculatoarele bazate pe Intel-80486DX, DX2, DX4 și Pentium au de obicei 256 KB de cache.

Microprocesoarele din seriile 486 și Pentium conțin o memorie cache internă mică, prin urmare, pentru o terminologie lipsită de ambiguitate, uneori în literatura tehnică, memoria cache situată pe placa de bază se numește memorie cache de nivel al doilea.

În microprocesorul Pentium Pro, memoria cache L2 este conținută într-un singur pachet cu procesorul însuși (se poate spune că este încorporat în microprocesor).

Nu este necesar să ai toată memoria, informația în care trebuie să se schimbe. O parte dintre cele mai multe Informații importante este mai bine să-l păstrați permanent în memoria computerului. Această memorie se numește persistentă. Datele au fost introduse în memoria permanentă în timpul fabricării. De regulă, aceste date nu pot fi modificate; programele care rulează pe computer le pot citi doar. Acest tip de memorie este de obicei numit ROM (memorie numai în citire) sau ROM (memorie numai în citire).

Într-un PC IBM - un computer compatibil, programele sunt stocate în memoria persistentă pentru a verifica hardware-ul, computerul, pentru a iniția încărcarea sistemului de operare (OS) și pentru a executa funcții de bază pentru întreținerea dispozitivelor informatice. Deoarece majoritatea acestor programe sunt legate de serviciul I/O, conținutul memoriei numai în citire este adesea numit BIOS (Basic Input - output System).

Multe computere instalează un BIOS bazat pe memorie FLASH. O astfel de memorie poate fi schimbată prin programe, ceea ce vă permite să actualizați BIOS-ul folosind programe speciale, fără a înlocui placa de baza sau cip BIOS.

Toate computerele, cu excepția celor foarte vechi, conțin și un program de configurare a computerului (SETUP) în BIOS. Vă permite să setați unele caracteristici ale dispozitivelor computerizate (tipuri de controler video, hard disk-uri și unități de dischete, unele și moduri de funcționare cu RAM, solicitarea unei parole la pornire etc.). De obicei, programul de configurare este invocat dacă utilizatorul apasă o anumită tastă sau combinație de taste (cel mai adesea tasta Del) în timpul pornirii.

Capacitate de memorie FLASH de la 32 Kbytes la 2 Mbytes, timp de acces la citire 0,06 μs, timp de scriere de un octet aproximativ 10 μs; Memorie FLASH - memorie nevolatilă.

Pe lângă memoria cu acces aleatoriu obișnuit și memoria numai pentru citire, un computer are o mică secțiune de memorie pentru stocarea parametrilor de configurare a computerului. Este adesea denumită memorie CMOS, deoarece această memorie este de obicei implementată folosind tehnologia CMOS (semiconductor complementar de oxid de metal), care are consum redus de putere... Conținutul memoriei CMOS nu se modifică atunci când computerul este oprit, deoarece pentru alimentarea acestuia se folosește o baterie specială.

Astfel, capacitatea memoriei principale este formată din milioane de celule de memorie individuale cu o capacitate de 1 octet fiecare. Capacitatea totală a memoriei principale a computerelor moderne variază de obicei între 1 și 4 GB. Capacitatea RAM este cu două ordine de mărime mai mare decât capacitatea ROM: ROM-ul necesită până la 2 MB pe plăcile de bază noi), restul este RAM.

Subiectul 3.1 Organizarea calculelor în sisteme de calcul Oh

Scopul și caracteristicile aeronavei. Organizarea calculelor în sisteme de calcul. calculator actiune paralela, flux de comandă și concepte de flux de date. Sisteme asociative. Sisteme matrice. Calculul conductei. Conductă de comandă, conductă de date. Suprascalarizarea.

Studentul trebuie

stiu:

Conceptul fluxului de comandă;

Conceptul de flux de date;

Tipuri de sisteme de calcul;

Caracteristicile arhitecturale ale sistemelor de calcul

Sisteme de calcul

Sistem de calcul(Soare)- un set de procesoare sau computere interconectate și care interacționează, echipament perifericși software, conceput pentru a colecta, stoca, procesa și distribui informații.

Înființarea Forțelor Armate urmărește următoarele obiective principale:

· Creșterea performanței sistemului prin accelerarea procesării datelor;

· Creșterea fiabilității și acurateței calculelor;

Furnizarea utilizatorului cu suplimentar serviciu etc.

Subiectul 3.2

Clasificarea aeronavelor în funcție de numărul de fluxuri de comandă și date: SISD, SIMD, MISD, MIMD.

Clasificarea aeronavelor multiprocesor cu diferite moduri de implementare a memoriei partajate: UMA, NUMA, SOMA. Caracteristici comparative, caracteristici hardware și software.

Clasificarea aeronavelor cu mai multe vehicule: MPP, NDW și COW. Numire, caracteristici, caracteristici.

Exemple de avioane tipuri diferite... Avantajele și dezavantajele diferitelor tipuri de sisteme de calcul.

Clasificarea sistemelor de calcul

O trăsătură distinctivă a VS în raport cu computerele clasice este prezența în el a mai multor computere care implementează procesare paralelă .

Paralelismul execuției operațiunilor crește semnificativ viteza sistemului; poate crește semnificativ atât fiabilitatea (dacă o componentă a sistemului se defectează, funcția sa poate fi preluată de alta), cât și fiabilitatea funcționării sistemului, dacă operațiunile sunt duplicate și rezultatele sunt comparate.

Sistemele de calcul pot fi împărțite în două grupe:

· multi-mașină ;

· multiprocesor .

Sistem de calcul cu mai multe mașini este format din mai multe calculatoare individuale... Fiecare computer dintr-un sistem multi-mașină are o arhitectură clasică, iar un astfel de sistem este utilizat pe scară largă. Totuși, efectul utilizării unui astfel de sistem de calcul poate fi obținut doar atunci când se rezolvă o problemă care are o structură specială: trebuie împărțită în atâtea subsarcini slab conectate câte computere sunt în sistem.

Arhitectura multiprocesor presupune prezența mai multor procesoare în computer, prin urmare, multe fluxuri de date și multe fluxuri de instrucțiuni pot fi organizate în paralel. Astfel, mai multe fragmente din aceeași sarcină pot fi executate simultan. Avantajul de viteză al sistemelor de calcul multiprocesor față de cele uniprocesor este evident.

Dezavantajul este posibilitatea de apariție situatii conflictuale când mai multe procesoare accesează aceeași zonă de memorie.

O caracteristică a sistemelor de calcul multiprocesor este prezența RAM obișnuită ca resursă comună(Figura 11).

Figura 11 - Arhitectura unui sistem de calcul multiprocesor

Clasificarea lui Flynn

Dintre toate sistemele de clasificare a aeronavelor considerate, cea mai răspândită a fost clasificarea propusă în 1966 de M. Flynn. Se bazeaza pe conceptul de flux , care este înțeles ca o secvență de comandă sau elemente de date prelucrate de către procesor. Flynn distinge 4 clase de arhitecturi în funcție de numărul de fluxuri de comandă și fluxuri de date:

· OKOD - un singur flux de comandă - un singur flux de date. Acestea includ clasicele VM von Neumann. Procesarea pipeline nu contează, așadar, atât VM 6600 cu dispozitive funcționale scalare, cât și 7600 cu transportoare se încadrează în clasa OKOD.

· ICOD - flux de comandă multiple - flux de date unic. În această arhitectură, mai multe procesoare gestionează același flux de date. Un exemplu ar fi un VS, la procesoarele cărora le este furnizat un semnal distorsionat, iar fiecare dintre procesoare procesează acest semnal folosind propriul algoritm de filtrare. Cu toate acestea, nici Flynn, nici alți specialiști în domeniul arhitecturii computerelor nu au reușit încă să-și imagineze o aeronavă din viața reală construită pe acest principiu... O serie de cercetători atribuie sistemelor de transport acestei clase, dar aceasta nu a găsit recunoașterea finală. Prezența unei clase goale nu ar trebui considerată un defect în clasificarea lui Flynn. Astfel de clase pot fi utile în dezvoltarea de noi concepte în teoria și practica construcției unei aeronave.

· OKMD - un flux de comandă - mai multe fluxuri de date - comenzile sunt emise de un procesor de control și sunt executate simultan pe toate procesoarele de procesare peste datele locale ale acestor procesoare. SIMD (instrucțiune unică - date multiple)

· ICMD - multe fluxuri de comenzi - multe fluxuri de date - un set de calculatoare care lucrează în programele lor cu datele lor inițiale. MIMD (instrucțiuni multiple - date multiple)

Schema de clasificare a lui Flynn este cea mai comună în evaluarea inițială a aeronavei, deoarece vă permite imediat să evaluați principiul de bază al sistemului. Cu toate acestea, clasificarea lui Flynn are și dezavantaje evidente: de exemplu, incapacitatea de a atribui fără ambiguitate unele arhitecturi unei clase sau alteia. Al doilea dezavantaj este saturația excesivă a clasei MIMD.

Sistemele de calcul existente din clasa MIMD formează trei subclase: multiprocesoare simetrice (SMP), clustere și sisteme masiv paralele (MPP). Această clasificare se bazează pe o abordare structural-funcțională.

Multiprocesoare simetrice constau dintr-un set de procesoare care au aceeași accesibilitate la memorie și dispozitive externe și funcționează sub același sistem de operare (OS). Un caz special SMP sunt computere cu un singur procesor. Toate procesoarele SMP au memorie partajată cu un singur spațiu de adrese.

Utilizarea SMP oferă următoarele posibilități:

· Scalarea aplicațiilor la costuri inițiale reduse, prin aplicarea fără convertirea aplicațiilor pe hardware nou, mai productiv;

· Crearea de aplicații în familiar medii software;

· Același timp de acces la toată memoria;

· Abilitatea de a redirecționa mesaje cu lățime de bandă mare;

· Suport pentru coerența unui set de cache și blocuri de memorie principală, sincronizare indivizibilă și operațiuni de blocare.

Sistemul de clustere format din module conectate printr-un sistem de comunicații sau dispozitive partajate memorie externa, de exemplu, matrice de discuri.

Dimensiunea clusterului variază de la câteva module la câteva zeci de module.

Atât în ​​memoria partajată, cât și în cea distribuită, sunt implementate mai multe modele de arhitecturi ale sistemelor de memorie. Figura 12 prezintă clasificarea unor astfel de modele utilizate în sistemele de calcul din clasa MIMD (este valabil și pentru clasa SIMD).

Figura 12 - Clasificarea modelelor de arhitecturi de memorie ale sistemelor de calcul

În sisteme cu memorie partajată toți procesoarele au șanse egale de a accesa un singur spațiu de adrese. O singură memorie poate fi construită ca un singur bloc sau modulară, dar acesta din urmă este de obicei cazul.

Sistemele de calcul cu memorie partajată, unde accesul oricărui procesor la memorie se realizează uniform și durează același timp, sunt numite sisteme cu acces uniform la memorie și sunt prescurtate ca UMA (Uniform Memory Access). Aceasta este cea mai comună arhitectură de memorie pentru VS paralel cu memorie partajată.

Din punct de vedere tehnic, sistemele UMA presupun prezența unui nod care conectează fiecare dintre ele NS procesoare cu fiecare dintre T module de memorie. Cel mai simplu mod de a construi un astfel de BC este de a combina mai multe procesoare (P i.) Cu o singură memorie (M P) prin autobuz comun- prezentat în Figura 12a . În acest caz, însă, doar unul dintre procesoare poate schimba pe magistrală la un moment dat, adică procesoarele trebuie să concureze pentru accesul la magistrală. Când procesorul eu, preia comanda din memorie, alte procesoare Pijamale(i ≠ j) trebuie să aștepte până când anvelopa este liberă. Dacă sistemul include doar două procesoare, acestea sunt capabile să funcționeze la performanță aproape maximă, deoarece accesul lor la magistrală poate fi intercalat: în timp ce un procesor decodifică și execută o instrucțiune, celălalt poate 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ă se degradeze. Când există zece procesoare pe magistrală, curba vitezei magistralei (Figura 12b) devine orizontală, astfel încât adăugarea unui procesor 11 nu îmbunătățește performanța. 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 memoriei și protocolul magistralei, iar într-un sistem multiprocesor cu o magistrală partajată, această lățime de bandă este distribuită î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, de fapt, procesorul este de obicei mult mai rapid decât memoria, așa că această schemă nu este utilizată pe scară largă.

Mod alternativ construcția unui VS multiprocesor cu memorie partajată pe baza UMA este prezentată în Figura 13c. . Aici magistrala este înlocuită de un comutator care direcționează cererile procesorului către unul dintre mai multe module de memorie. În ciuda faptului că există mai multe module de memorie, toate aparțin unui 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 poate avea acces la el la viteza maximă permisă. Rivalitatea între procesoare poate 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ă bine. Cele mai comune sisteme conțin 4-8 procesoare, mult mai rar 32-64 procesoare. În plus, astfel de sisteme nu pot fi atribuite sigur, întrucât defectarea unui procesor sau a unui modul de memorie atrage după sine defectarea întregii aeronave.

Figura 13 - Memoria partajată:

a) combinarea procesoarelor folosind o magistrală și un sistem cu cache locale;

b) performanța sistemului în funcție de numărul de procesoare de pe magistrală;

c) multiprocesor VS cu memorie partajată, format din module individuale

O altă abordare a construirii unei VS cu memorie partajată este acces neuniform la memorie , desemnat ca NUMA (Acces neuniform la memorie). Aici, ca și înainte, există un singur spațiu de adrese, dar fiecare procesor are o memorie locală. Procesorul accesează direct propria memorie locală, ceea ce este mult mai rapid decât accesarea memoriei de 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 memorie cache rapidă pentru memoria globală. O astfel de schemă poate îmbunătăți performanța aeronavei, dar nu este capabilă să întârzie la nesfârșit egalizarea performanței directe. Având în vedere că fiecare procesor are un cache local (Figura 13a), există o probabilitate mare (p> 0.9) că comanda sau datele necesare sunt deja în memoria locală. O probabilitate rezonabilă de a atinge memoria locală reduce semnificativ numărul de accesări ale procesorului la memoria globală și, astfel, îmbunătățește eficiența. Locul întreruperii în curba de performanță (curba superioară din Figura 13b ), punctul în care adăugarea procesoarelor este încă eficientă este mutat acum în regiunea procesorului 20, iar punctul în care curba devine orizontală este mutat în regiunea procesorului 30.

În cadrul conceptului NUMA sunt implementate mai multe abordări diferite, notate prin abrevieri SOMA, CC-NUMAși NCC-NUMA.

V arhitectură numai cache (SOMA, Cache Only Memory Architecture) memoria locală a fiecărui procesor este construită ca o memorie cache mare pentru acces rapid de la „propriul” procesor. Cache-urile tuturor procesoarelor sunt considerate colectiv memoria globală a sistemului. Nu există o memorie globală reală. Caracteristica fundamentală a conceptului SOMA este exprimată în dinamică. Aici, datele nu sunt legate static la 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ă cu 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ă participe la acest proces, ci implică un hardware complex și costisitor de gestionare a memoriei. Pentru a organiza un astfel de regim, așa-zisul directoarele cache . Rețineți, de asemenea, că ultima copie a articolului nu este niciodată eliminată din cache.

Deoarece în arhitectura SOMA datele sunt mutate în memoria cache locală a procesorului proprietar, astfel de aeronave au un avantaj semnificativ de performanță față de alte arhitecturi NUMA. Pe de altă parte, dacă o singură variabilă sau două variabile diferite, stocate pe aceeași linie în aceeași cache, sunt cerute de două procesoare, acea linie de cache trebuie mutată înainte și înapoi între procesoare de fiecare dată când datele sunt accesate. Astfel de efecte pot depinde de detaliile alocării memoriei și pot duce la situații imprevizibile.

Model acces neuniform la memorie coerent în cache (CC-NUMA, Cache Coherent Non-Uniform Memory Architecture) este fundamental diferit de modelul SOMA. Sistemul CC-NUMA nu folosește memoria cache, ci memoria obișnuită alocată fizic. Nu are loc copierea paginilor sau a datelor între locațiile de memorie. Nu există mesaje software. Există doar un stick de memorie, cu părți conectate fizic cablu de cupru, și hardware inteligent. Coerența cache-ului bazată pe hardware înseamnă că nu este necesar niciun software pentru a stoca mai multe copii ale datelor actualizate sau pentru a le transfera. Nivelul hardware se ocupă de toate acestea. Accesul la modulele de memorie locale din diferite noduri ale sistemului se poate realiza simultan și este mai rapid decât la modulele de memorie la distanță.

Diferența dintre modelul cu acces neuniform la memorie cache-incoerent (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ța hardware a datelor globale. 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, luată în considerare în secțiunea „Modele de arhitecturi de memorie distribuită”.

În general, sunt apelate AC-uri cu memorie partajată construite conform schemei NUMA arhitecturi de memorie virtuală partajată (arhitecturi de memorie virtuală partajată). Acest tip de arhitectură, în special CC-NUMA, a fost considerat recent ca un tip independent și destul de promițător de sisteme de calcul din clasa M1MD.

Modele de arhitectură 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 sisteme aeronave cu mai multe vehicule sau multicalculatoare , subliniind faptul că „blocurile din care este construit sistemul sunt în sine mici sisteme de calcul cu procesor și memorie. Modelele de arhitecturi cu memorie distribuită sunt de obicei notate ca arhitectura fara direct acces la memorie de la distanță (NORMA, Fără acces la memorie la distanță). Acest nume rezultă din 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ă.

Această organizație are o serie de avantaje. În primul rând, nu există concurență pentru magistrală sau comutatoare la accesarea datelor: 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 partajate înseamnă că nu există restricții asociate cu privire la numărul de procesoare: dimensiunea sistemului este limitată doar de rețeaua de procesoare. În al treilea rând, problema coerenței cache-ului 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 propria memorie cache locală cu cache-urile altor procesoare.

Studentul trebuie

stiu:

Clasificarea aeronavelor;

Exemple de aeronave de diferite tipuri.

a fi capabil să:

- alege tipul de sistem de calcul în conformitate cu problema rezolvată.


© 2015-2019 site
Toate drepturile aparțin autorilor lor. Acest site nu pretinde autor, dar oferă utilizare gratuită.
Data creării paginii: 22-07-2016

Capitol 11

Organizare calculul memoriei sisteme

În sistemele de calcul care unesc multe procesoare sau mașini paralele, problema organizării corecte a memoriei 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 uniprocesor. Multiprocesarea VS duce la o altă problemă - problema accesului simultan la memorie de la mai multe procesoare.

În funcție de modul în care este organizată memoria sistemelor multiprocesor (multicomputer), se distinge între sistemele de calcul cu memorie partajată și AC cu memorie distribuită. V sisteme de memorie partajată(este adesea numită și memorie partajată sau partajată) Memoria Soarelui este considerată o resursă comunitară, iar fiecare dintre procesoare are acces deplin la întreg spațiul de adrese. Sunt apelate sisteme de memorie partajată strâns legat(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 acest fapt, 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ă fiecărui procesor îi este atribuită propria memorie. Procesoarele fuzionează v rețea și pot, dacă este necesar, să facă schimb de date stocate în memoria lor, transmițându-și unul altuia așa-numitele mesaje. Acest tip de aeronavă se numește slab cuplate(sisteme slab cuplate). Slab sisteme aferente se găsesc, de asemenea, atât în ​​clasa SIMD, cât și în clasa MIMD și, uneori, de subliniat această caracteristică, introduceți 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ă - mtsltcomputers.

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 de sine stătătoare care poate fi accesat independent. Modul în care subsistemul de memorie interpretează adresa celulei primite de la procesor este detașat din memoria partajată. De exemplu, să presupunem că procesorul execută comanda load RO, i, ceea ce înseamnă „Încărcare registru R0 cu conținutul celulei i”. În cazul memoriei partajate, i este adresa globală și indică aceeași locație pentru orice procesor. V sistem distribuit memoria i este adresa locala Dacă două procesoare execută comanda load RO, i, atunci fiecare dintre ele accesează i-a celulăîn memoria sa locală, adică să celule diferite, iar valori inegale pot fi încărcate în registrele R0.

Diferența dintre cele două sisteme de memorie trebuie ținută în minte de către programator, deoarece determină modul în care părțile unui program paralel interacționează. În varianta cu memorie partajată, este suficient să creați o structură de date în memorie și să transferați referințele la această structură în subrutine paralele. Într-un sistem de memorie distribuită, trebuie să aveți o copie a datelor partajate în fiecare memorie locală. Aceste copii sunt create prin imbricarea datelor partajate în mesajele trimise altor procesoare.

Memorie cu alternativ adrese

Din punct de vedere fizic, memoria unui sistem de calcul este formată din mai multe module (bănci), în timp ce întrebarea esențială este cum este distribuit spațiul de adrese în acest caz (setul tuturor adreselor pe care le poate forma procesorul). 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 NS bănci, apoi celula cu adresa iîn cazul divizării blocurilor, acesta va fi în banca cu numărul eu /n.În sistem memorie intercalată(memorie intercalată) adresele consecutive sunt situate în bănci diferite: celula cu adresa i se află în banca cu numărul i mod NS. Să fie, de exemplu, memoria formată din patru bănci, câte 256 de octeți fiecare. Într-o schemă de adresare bloc, prima bancă va fi alocată adrese virtuale 0-255, al doilea - 256-511 etc. Într-o schemă cu adrese alternante, celulele consecutive din prima bancă vor avea adrese virtuale 0, 4, 8, .... în a doua bancă - 1, 5, 9 , etc. (Figura 11.1, a).

Distribuția 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ă eu sij sunt in banci diferite, informatiile vor fi transmise in cicluri succesive. Aici, un ciclu se referă la un ciclu de procesor, în timp ce un ciclu complet de memorie necesită mai multe cicluri de procesor. Astfel, în acest caz, procesorul nu trebuie să aștepte până la finalizarea întregului ciclu de acces la celulă. i. Tehnica luată în considerare vă permite să creșteți debitului: dacă sistemul de memorie este format din

https://pandia.ru/text/78/264/images/image002_61.jpg "width =" 62 "height =" 15 "> Distanța dintre elemente se numește pas cu index sau Pas(pas). Unul dintre aplicatii interesante această proprietate poate servi drept Acces la matrice. Dacă pasul de index este cu unul mai mult decât numărul de rânduri din matrice, o singură cerere de acces la memorie va returna toate elementele diagonale ale matricei (Figura 11.1, b). Responsabilitatea de a se asigura că toate elementele extrase ale matricei sunt localizate în bănci diferite revine programatorului.

Modele de arhitectură de memorie a sistemelor de calcul

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

DIV_ADBLOCK84 ">

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

O metodă alternativă pentru construirea unui CS 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. În ciuda faptului că există mai multe module de memorie, toate aparțin unui 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 poate avea acces la el la viteza maximă permisă. Rivalitatea între procesoare poate 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ă 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 drept tolerante la erori, deoarece defecțiunea unui procesor sau a unui modul de memorie implică defecțiunea întregii aeronave.

O altă abordare a construirii unei VS cu memorie partajată este acces neuniform la memorie, notat ca NUM A (Acces neuniform la memorie), există î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 de 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 memorie cache rapidă pentru memoria globală. O astfel de schemă poate îmbunătăți performanța aeronavei, dar nu este capabilă să întârzie la nesfârșit egalizarea performanței directe. Dacă fiecare procesor are un cache local (Figura 11.3.6), există o probabilitate mare (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 apeluri la procesor La memorie globală și duce astfel la creșterea eficienței. Locul ruperii în curba de performanță (curba superioară din Fig.11.3, v), punctul în care adăugarea procesoarelor este încă eficientă este mutat acum în regiunea procesorului 20, iar cea mai subțire, unde curba devine orizontală, în regiunea procesorului 30.

În cadrul conceptului NUMA sunt implementate mai multe abordări diferite, notate prin abrevieri SOMA,CC-NUMAși NCC-NUMA.

V arhitectură numai cache(SOMA, Cache Only Memory Architecture) memoria locală a fiecărui procesor este construită ca o memorie cache mare pentru acces rapid de la „propriul” procesor. Cache-urile tuturor procesoarelor sunt considerate colectiv memoria globală a sistemului. Nu există o memorie globală reală. Caracteristica fundamentală a conceptului SOMA este exprimată în dinamică. Aici, datele nu sunt legate static la 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ă cu 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ă participe la acest proces, ci implică un hardware complex și costisitor de gestionare a memoriei. Pentru a organiza un astfel de regim, așa-zisul directoarele cache. Rețineți, de asemenea, că ultima copie a articolului nu este niciodată eliminată din cache.

Deoarece în arhitectura SOMA datele sunt mutate în memoria cache locală a procesorului proprietar, astfel de aeronave au un avantaj semnificativ de performanță față de alte arhitecturi NUM A. Pe de altă parte, dacă o singură variabilă sau două variabile diferite stochează aceeași cache într-una linia este cerută de două procesoare, această linie de cache trebuie mutată înainte și înapoi între procesoare de fiecare dată când datele sunt accesate. Astfel de efecte pot depinde de detaliile alocării memoriei și pot duce la situații imprevizibile.

Model acces neuniform la memorie coerent în cache(CC-NUMA, Сache Coherent Non-Uniform Memory Architecture) este fundamental diferit de modelul SOMA. Sistemul CC-NUMA nu folosește memoria cache, ci memoria obișnuită alocată fizic. Nu are loc copierea paginilor sau a datelor între locațiile de memorie. Nu există mesaje software. Există doar un stick de memorie, cu părți conectate fizic prin cablu de cupru și hardware inteligent. Coerența cache-ului bazată pe hardware înseamnă că nu este necesar niciun software pentru a stoca mai multe copii ale datelor actualizate sau pentru a le transfera. Nivelul hardware se ocupă de toate acestea. Accesul la modulele de memorie locale din diferite noduri ale sistemului se poate realiza simultan și este mai rapid decât la modulele de memorie la distanță.

Diferența dintre modelul cu acces neuniform la memorie cache-incoerent(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ța hardware a datelor globale. 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, luată în considerare în secțiunea „Modele de arhitecturi de memorie distribuită”.

În general, sunt apelate AC-uri cu memorie partajată construite conform schemei NUMA arhitecturi de memorie virtuală partajată(arhitecturi de memorie virtuală partajată). Acest tip de arhitectură, în special CC-NUMA, a fost recent considerat un tip independent și destul de promițător de sisteme de calcul din clasa MIMD, prin urmare, astfel de aeronave vor fi discutate mai detaliat mai jos.

Modele de arhitectură 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 sisteme aeronave multicomputer sau multicomputer, evidențiind faptul că elementele de bază ale unui sistem sunt ele însele mici sisteme de calcul cu procesor și memorie. Modelele de arhitecturi de 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 rezultă din 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ă.

Această organizație are o serie de avantaje. În primul rând, la accesarea datelor, nu există concurență 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 partajate înseamnă că nu există restricții asociate cu privire la numărul de procesoare: dimensiunea sistemului este limitată doar de rețeaua de procesoare. În al treilea rând, problema coerenței cache-ului 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 propria memorie cache locală cu cache-urile altor procesoare.

Principalul dezavantaj al unui computer cu memorie distribuită este complexitatea schimbului de informații între procesoare. Dacă vreunul dintre procesoare are nevoie de date din memoria altui procesor, trebuie să facă schimb de mesaje cu acest procesor. Acest lucru duce la două tipuri de costuri:

· Este nevoie de timp pentru a forma și a redirecționa un mesaj de la unul! procesor la altul;

· Pentru a oferi un răspuns la mesajele de la alți procesoare, procesorul care primește trebuie să primească o cerere de întrerupere și să execute procedura de gestionare a acestei întreruperi.

Structura unui sistem de memorie distribuită este prezentată în Fig. 11.4. Pe stanga! piese (fig.11.4, A) este prezentat un element de prelucrare (PE). Include) procesorul în sine (P), memoria locală (M) și două controlere I/O (Ko și KD Pe partea dreaptă (Fig.11.4, b) este prezentat un sistem cu patru procesoare care ilustrează modul în care mesajele sunt trimise de la un procesor la altul. În raport cu fiecare PE, toate celelalte elemente de procesare pot fi privite 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 îl notifică controlor local despre necesitatea transferului de informații către dispozitiv extern... Prin intermediul rețelei de interconectare, acest mesaj este transmis către controlerul I/O receptor al PE receptor. Acesta din urmă găsește spațiu pentru mesaj în propria memorie locală și anunță procesorul sursă că mesajul a fost primit.

DIV_ADBLOCK89 ">

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

Multiprocesorcoerenţă cache- memorie

Un sistem multiprocesor cu memorie partajată este format din două sau mai multe procesoare independente, fiecare dintre ele efectuând oricare parte a program mare, sau un program independent. Toate procesoarele accesează instrucțiunile și datele stocate în memoria principală partajată. Deoarece memoria este o resursă partajată, există concurență între procesoare la accesarea acesteia, ceea ce crește latența medie de acces la memorie. Pentru a reduce această latență, fiecărui procesor i se atribuie 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 o memorie cache locală duce la așa-numitul problema de coerență sau oferind în acordmemorie cache. Conform sistemului, sistemul este coerent dacă fiecare operație de citire la o anumită adresă, efectuată de oricare dintre procesoare, returnează valoarea introdusă în timpul ultimei operațiuni de scriere la această adresă, indiferent de ce procesor a fost ultimul care a scris.

Î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 Rgși Pr sunt conectate la memoria partajată printr-o magistrală. În primul rând, ambele procesoare citesc variabila NS. Copii ale blocurilor care conțin această variabilă sunt transferate din memoria principală în cache-urile locale ale ambelor procesoare (Figura 11.5, A). Apoi procesorul Pt realizează operația de creștere a valorii variabilei NS pe unitate. Deoarece o copie a variabilei se află deja în memoria cache a acestui procesor, va avea loc o lovitură în cache și valoarea va fi modificată doar în memoria cache 1. Dacă acum procesorul P2 efectuează din nou o operație de citire NS, atunci va apărea și o lovitură de cache și P2 va primi valoarea „veche” stocată în memoria sa cache NS(fig.11.5, b).

Menținerea coerenței necesită ca atunci când un element de date este modificat de către unul dintre procesoare, modificările corespunzătoare să fie făcute în memoria cache a celorlalte procesoare, unde există o copie a articolului de date modificat, precum și în memoria partajată. O problemă similară apare, de altfel, în sistemele uniprocesor, unde există mai multe niveluri de memorie cache. Aici este necesară reconcilierea conținutului 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.

Software moduri solutiiProbleme coerenţă

Tehnicile software pentru rezolvarea problemei de coerență fac posibil să se facă fără echipament adițional sau păstrați-l la minimum.

ProtocolBerkeley. Protocolul Berkeley a fost utilizat în sistemul multiprocesor Berkeley bazat pe procesoare RISC.

Suprafața ratelor de cache este atenuată de ideea protocolului de proprietate asupra unei linii de cache. În general, memoria principală este considerată proprietara tuturor blocurilor de date. Înainte de a modifica conținutul unei linii din memoria cache a acesteia, procesorul trebuie să dobândească dreptul de proprietate asupra linie dată... Aceste drepturi sunt dobândite prin operațiuni speciale de citire și scriere. Dacă, la accesarea unui bloc, proprietarul căruia în acest moment nu este memoria principală, are loc o pierdere a memoriei cache, procesorul care deține rândul împiedică citirea din memoria principală și alimentează procesorul solicitant cu date din memoria cache locală.

O altă îmbunătățire este introducerea unui stat comun. Când procesorul scrie pe una dintre liniile memoriei sale cache locale, de obicei generează un semnal pentru a elimina copiile blocului modificabil din alte cache. În protocolul Berkeley, semnalul de eliminare este generat numai dacă există astfel de copii în alte cache-uri. Acest lucru poate reduce semnificativ traficul neproductiv cu autobuzele. Următoarele scenarii sunt posibile.

În primul rând, de fiecare dată când un procesor scrie în memoria cache, șir mutabil este transferat în starea „schimbat, privat” (PD, Private Dirty). În plus, dacă șirul este partajat, un semnal de invalidare este trimis către magistrală, iar în toate cache-urile locale unde există o copie a acestui bloc de date, aceste copii sunt puse în starea „invalid” (I, Invalid). Dacă există o pierdere de scriere, procesorul obține o copie a blocului din memoria cache a masterului curent al blocului solicitat. Abia după aceste acțiuni procesorul scrie în cache-ul său.

În cazul unei erori de citire a memoriei cache, procesorul trimite o solicitare proprietarului blocului pentru a obține cea mai recentă versiune a acestuia din urmă și îi traduce exemplar nou la starea de numai citire (RO, Read Only). Dacă rândul a fost deținut de un alt procesor, acesta marchează copia sa a blocului ca Shared Dirty (SD).

Diagrama de stare a protocolului Berkeley este prezentată în Fig. 11.10.

Comparând protocoalele de scriere o singură dată și Berkeley, se pot observa următoarele. Ambele protocoale folosesc o strategie de write-back în care blocurile modificate sunt păstrate în cache cât mai mult timp posibil. Memoria principală este actualizată numai atunci când un rând este șters din cache. Limita superioară a numărului total de tranzacții de scriere pe magistrală este determinată de acea parte a protocolului de scriere o dată în care este implementată scrierea, deoarece strategia din urmă generează o operație de scriere pe magistrală cu fiecare modificare inițiată de procesor. Deoarece prima operație de scriere într-un protocol de scriere o dată este transmisă, aceasta este efectuată chiar dacă datele nu sunt partajate. Aceasta presupune trafic suplimentar bus, care crește odată cu creșterea capacității de cache. S-a dovedit că protocolul Write-Once are ca rezultat mai mult trafic de autobuz în comparație cu protocolul Berkeley .







Lovitură de lectură

Orez. 11.10. Protocolul Berkeley

O linie care poate fi citită și actualizată în protocolul de scriere o singură dată necesită ca linia să fie citită în cache, modificată local în cache și scrisă înapoi în memorie. Întreaga procedură necesită două operații pe magistrală: citirea din memoria principală (RAM) și scrierea înapoi în RAM. Protocolul Berkeley, pe de altă parte, se referă la obținerea permisiunilor de rând. Apoi blocul este modificat în cache. Dacă rândul nu a fost accesat înainte de ștergerea din cache, ciclurile magistralei vor fi aceleași ca în protocolul de scriere o singură dată. Cu toate acestea, este mai probabil ca linia să fie solicitată din nou, apoi din punctul de vedere al unei singure memorie cache, actualizarea liniei cache necesită o singură operație de citire pe magistrală. Astfel, protocolul Berkeley transferă linii direct între cache-uri, în timp ce protocolul de scriere o singură dată transferă un bloc din memoria cache originală în memoria principală și apoi de la OP la cache-urile solicitante, rezultând o latență generală a sistemului de memorie. .

ProtocolIllinois. Protocolul Illinois, propus de Marc Papamarcos, urmărește, de asemenea, să reducă traficul de autobuz și, astfel, timeout-ul procesorului pentru accesarea autobuzului. Aici, ca și în protocolul Berkeley, ideea de proprietate asupra blocurilor este dominantă, dar ușor modificată. În protocolul Illinois, proprietatea este deținută de orice cache care conține o copie validă a unui bloc de date. În acest caz, același bloc poate avea mai mulți proprietari. Când se întâmplă acest lucru, fiecărui procesor i se atribuie o anumită prioritate, iar proprietarul cu o prioritate mai mare devine sursa de informații.

Ca și în cazul precedent, semnalul de invalidare este generat doar atunci când copii ale acestui bloc sunt disponibile în alte cache-uri. Scenariile posibile pentru protocolul Illinois sunt prezentate în Fig. 11.11.

Orez. 11.11. Protocolul Illinois

De fiecare dată când un procesor scrie în cache-ul său, șirul modificat este plasat într-o stare Private Dirty (PD). Dacă blocul de date este partajat, un semnal kill este trimis către magistrală și în toate cache-urile locale există o copie a acestui bloc , aceste copii sunt transferate în starea „invalid” (I, Invalid). Dacă apare o pierdere de scriere, procesorul preia o copie din memoria cache a proprietarului actual al blocului solicitat. Numai după acțiunile indicate, procesorul scrie în cache-ul său. După cum puteți vedea, în această parte există o coincidență completă cu protocolul Berkeley.

În cazul unei rate de citire a memoriei cache, procesorul trimite o solicitare proprietarului blocului pentru a obține cea mai recentă versiune a acestuia din urmă și pune noua sa copie în starea „exclusiv” (E, Exclusiv), cu condiția ca că este singurul proprietar al rândului. În caz contrar, starea este schimbată în „partajat” (S, Partajat).

Este esențial ca protocolul să fie extensibil și strâns legat atât de rata de pierdere a memoriei cache, cât și de cantitatea de date care este proprietatea comună a unui sistem multiprocesor.

ProtocolLicurici. Protocolul a fost propus de Tucker și colaboratorii și implementat în Firefly Multiprocessor Workstation, un sistem multiprocesor dezvoltat la centrul de cercetare Digital Equipment Corporation.

Protocolul Firefly utilizează o înregistrare de actualizare. Stările posibile ale liniei cache sunt aceleași cu cele ale protocolului Illinois (Figura 11-12). Diferența este că strategia de writeback se aplică numai rândurilor în starea PD sau E, în timp ce write-through se aplică rândurilor în starea S. Cache-urile Watcher folosesc write-through pentru a-și actualiza copiile. În plus, observarea cache-urilor care găsesc o copie a liniei în ele invocă o linie de magistrală specială „partajată”, astfel încât controlerul de scriere să poată decide în ce stare să pună linia în care a fost scrisă. O linie „partajată” pe o eroare de citire a memoriei cache servește pentru a informa controlerul local de cache de unde provine copia liniei: din memoria principală sau din alt cache. Astfel, starea S se aplică numai datelor care sunt efectiv partajate.

https://pandia.ru/text/78/264/images/image018_2.jpg "width =" 491 height = 316 "height =" 316 ">

Orez. 11.13. Protocolul Dragonului

ProtocolMESI. Cu siguranta printre protocoale cunoscute Cel mai popular protocol de supraveghere este MESI (Modified / Exclusive / Shared / Invalid). Protocolul MESI este utilizat pe scară largă în sistemele comerciale cu microprocesoare, cum ar fi cele bazate pe microprocesoarele Pentium și PowerPC. Deci, poate fi găsit în memoria cache internă și controler cache extern i82490 al microprocesorului Pentium, în procesorul i860 și controlerul cache MC88200 de la Motorola.

Protocolul a fost conceput pentru cache-urile de scriere înapoi. Unul dintre obiectivele principale ale protocolului MESI este amânarea scrierii înapoi a datelor încapsulate în memoria principală BC pentru cât mai mult posibil. Acest lucru îmbunătățește performanța sistemului prin reducerea la minimum a transferurilor necesare de informații între cache și memoria principală. Protocolul MESI atribuie fiecărei linii cache una dintre cele patru stări, care sunt controlate de cei doi biți de stare MESI din eticheta acelei linii. Starea liniei cache poate fi modificată atât de procesor, pentru care această memorie cache este locală, cât și de alte procesoare ale „schemei” multiprocesor. Gestionarea stării liniilor cache poate fi atribuită dispozitivelor logice externe. Una dintre versiunile protocolului prevede utilizarea schemei de scriere o singură dată considerată anterior.

Impartit(S, Partajat) - o linie cache se potrivește cu o linie similară din memoria principală (datele sunt valide) și poate fi prezentă în unul sau mai multe dintre celelalte cache.

Invalid(I, Invalid) - O linie cache marcată invalid nu conține date valide și devine inaccesibilă din punct de vedere logic.

Orez. 11.15. Secvența schimbărilor de stare în protocolul MESI: a - procesorul 1 citește x;

b- procesorul 2 citește x; c - procesorul 1 realizează prima înregistrare în x;

G- procesorul 1 face o altă înregistrare în x

Ordinea în care o linie cache trece de la o stare la alta depinde de: starea curentă a liniei, operația efectuată (citire sau scriere), rezultatul accesului în cache (loc sau ratat) și, în final, dacă linia este partajată sau nu. În fig. 11.14 prezintă o diagramă a tranzițiilor principale fără a lua în considerare modul de scriere o singură dată.

Să presupunem că unul dintre procesoare face o solicitare de citire dintr-o linie care nu se află în prezent în memoria cache-ului local (read miss). Solicitarea va fi transmisă prin autobuz. Dacă niciunul dintre cache nu conține o copie a liniei necesare, atunci nu va exista niciun răspuns din partea controlorilor de monitorizare ai altor procesoare, linia va fi citită în memoria cache a procesorului solicitant din memoria principală, iar copia va fi alocată starea E. Dacă oricare dintre cache-urile locale conține copia pe care o căutați, va fi primit un răspuns de la controlerul de urmărire corespunzător indicând accesul la șirul partajat. Toate copiile liniei în cauză din toate cache-urile vor fi transferate în starea S, indiferent de starea în care se aflau înainte (I, E sau S).

Când un procesor face o cerere de scriere la un șir care nu se află în memoria cache locală (write miss), șirul trebuie citit din memoria principală (RAM) și actualizat înainte de a fi încărcat în memoria cache. Înainte ca procesorul să poată încărca un rând, trebuie să se asigure că o versiune validă a datelor este de fapt în memoria principală, adică că nicio copie modificată a rândului nu se află în alte cache-uri. Secvența de operații formată în acest caz se numește citește cu intenția de modificarețiuni(RWITM, Citiți cu intenție de modificare). Dacă o copie a liniei necesare a fost găsită într-unul dintre cache-uri și în starea M, atunci procesorul cu această copie întrerupe secvența RWITM și rescrie linia în OP, după care schimbă starea liniei din cache-ul său. la I. Apoi secvența RWITM este reluată și reaccesând memoria principală pentru a citi rândul actualizat. Starea finală a liniei va fi M, în care nu există o copie mai sigură a acesteia nici în OP, nici în alte cache. Dacă o copie a liniei a existat într-un alt cache și nu a avut o stare M, atunci o astfel de copie este eliminată și accesul la memoria principală este efectuat imediat.

Un cache de citire nu modifică starea liniei citite. Dacă procesorul efectuează acces de scriere la o linie existentă în starea S, transmite către magistrală pentru a informa celelalte cache, actualizează linia din memoria cache și o setează la starea M. Toate celelalte copii ale liniei sunt mutate în starea I. Dacă procesorul efectuează acces de scriere la linia în starea E, singurul lucru pe care trebuie să-l facă este să scrie pe linie și să-și schimbe starea în M, deoarece nu există alte copii ale liniei în sistem.

În fig. 11.15 prezintă o secvență tipică de evenimente într-un sistem de două procesoare care solicită acces la celula x. Accesarea oricărei celule dintr-o linie cache este considerată un acces la întreaga linie.

Să ilustrăm etapele în care procesorul 2 încearcă să citească conținutul celulei x "(Fig. 11.16). În primul rând, există o pierdere de citire a memoriei cache și procesorul încearcă să acceseze memoria principală. Procesorul 1 monitorizează magistrala, detectează accesul la un celulă, a cărei copie se află în memoria cache și se află în




Orez. 11.16. Tranziția de la starea E la starea S în protocolul MESI: a- procesor 2

citește x; b - procesorul 1 produce rescriere x „la memoria principală;

i - procesorul 2 citește x "din memoria principală

starea M, deci blochează operația de citire de la procesorul 2. Apoi procesorul 1 rescrie linia care conține x „în OP și eliberează procesorul 2 pentru a putea repeta accesul la memoria principală. Acum procesorul 2 primește linia care conține x” și îl încarcă în memoria cache. Ambele copii sunt marcate cu S.

Până acum, a fost luată în considerare o versiune scrisă o singură dată a protocolului MESI. Luând în considerare o singură scriere, diagrama de stare prezentată în Fig. 11.14, ușor modificată. Toate erorile de citire a memoriei cache provoacă o tranziție la starea S. Prima lovitură de scriere este urmată de o tranziție la starea E (o așa-numită tranziție de scriere o singură dată). Următorul hit în timpul scrierii implică o schimbare a stării liniei la M.

Protocoale bazate pe director

Protocoale de coerență bazate pe director tipic pentru sistemele complexe cu multiprocesor cu memorie partajată, unde procesoarele sunt unite printr-o rețea de interconectare ierarhică în mai multe etape. Complexitatea topologiei face ca utilizarea protocoalelor de supraveghere cu mecanismul lor de difuzare să fie costisitoare și ineficientă.

Protocoalele bazate pe director colectează și urmăresc informații despre conținutul tuturor cache-urilor locale. Astfel de protocoale sunt de obicei implementate cu un controler centralizat care face parte fizic din controlerul de memorie principal. Cartea de referință în sine este stocată în memoria principală. Atunci când controlerul de cache local face o solicitare, controlerul de director detectează o astfel de solicitare și generează instrucțiunile necesare pentru a transfera date din memoria principală sau dintr-o altă memorie cache locală care conține ultima versiune datele solicitate. Controlorul central este responsabil pentru actualizarea informațiilor despre starea cache-urilor locale, de aceea trebuie să fie notificat cu privire la orice acțiune locală care ar putea afecta starea blocului de date.

Directorul conține multe intrări care descriu fiecare locație de memorie cache care poate fi partajată de procesoarele de sistem. Referința se face ori de câte ori unul dintre procesoare modifică o copie a unei astfel de celule în memoria locală. În acest caz, informațiile din director sunt necesare pentru a invalida sau actualiza copiile celulei modificate (sau întregul rând care conține această celulă) în alte cache-uri locale unde astfel de copii sunt disponibile.

Pentru fiecare șir partajat, a cărui copie poate fi plasată în memoria cache, o intrare este alocată în directorul care stochează pointeri către o copie a acestui șir. În plus, în fiecare înregistrare este evidențiat un bit de actualizare (D), indicând dacă copia este murdară (D = 1 - murdar) sau curată (D = 0 - curat), adică dacă conținutul liniei din cache s-au schimbat.memoria după ce a fost încărcată acolo. Acest bit indică dacă procesorul este autorizat să scrie în acest șir.

În prezent, există trei moduri cunoscute de implementare a protocoalelor de coerență a cache-ului bazate pe director: referința completă, referința limitată și referința concatenată.

În protocol referință completă un singur director centralizat menține informații despre toate cache-urile. Referința este stocată în memoria principală.


Orez. 11.17. Protocolul de coerență a memoriei cache de referință completă

Într-un sistem de N procesoare, fiecare intrare de director va conține N indicatori de un bit. Dacă există o copie a datelor în memoria cache locală corespunzătoare, bitul indicator este setat la 1, în caz contrar - la 0. Diagrama cu referința completă este prezentată în Fig. 11.17. Aceasta presupune că există o copie a liniei în fiecare cache. Fiecărei linii îi sunt alocați doi indicatori de stare: un bit valid (V, Valid) și un bit de proprietate (P, Privat). Dacă informațiile din șir sunt corecte, bitul său V este setat la 1. O singură valoare a bitului P indică faptul că acest procesor a acordat dreptul de a scrie pe linia corespunzătoare din memoria cache locală.

Să presupunem că procesorul 2 scrie în locația x. Inițial, procesorul nu a primit încă permisiunea pentru o astfel de scriere. Formează o cerere către controlerul de director și așteaptă permisiunea pentru a continua operațiunea. Ca răspuns la o solicitare către toate cache-urile în care există copii ale rândului care conține celula x, este emis un semnal pentru a elimina copiile existente. Fiecare cache care primește acest semnal resetează bitul de validitate a șirului nullabil (bit V) la 0 și returnează un semnal de confirmare controlerului de director. După primirea tuturor semnalelor de confirmare, controlerul de director setează bitul de modificare (D-bit) al intrării de director corespunzătoare la unu și trimite un semnal către procesorul 2 pentru a permite scrierea în celula x. Din acest moment, procesorul 2 poate continua să scrie în propria copie a celulei x, precum și în memoria principală, dacă schema de scriere este implementată în cache.

Principalele probleme ale protocolului de director complet sunt legate de o cantitate mareînregistrări. Pentru fiecare celulă din sistemul de referință a N procesoare, este necesar N + 1 bit, adică odată cu creșterea numărului de procesoare, coeficientul de complexitate crește liniar. Protocolul de director complet permite fiecărui cache local să aibă copii ale tuturor celulelor partajate. În practică, o astfel de posibilitate nu rămâne întotdeauna la cerere - în orice moment, doar una sau mai multe copii sunt de obicei relevante. V protocolcu referință limitată copiile unei singure linii pot fi doar într-un număr limitat de cache - nu poate fi mai mult de NS copii ale șirului, în timp ce numărul de pointeri din intrările directorului este redus la n (n< N ). Pentru a identifica în mod unic memoria cache care stochează copia, indicatorul în loc de un bit ar trebui să fie format din log2 N biți și lungimea totală a pointerilor din fiecare intrare de director, în loc de N biți va fi egal NSlog2N pic. Cu o valoare constantă NS rata de creștere a factorului de complexitate al unui director restricționat pe măsură ce dimensiunea sistemului crește este mai mică decât în ​​cazul unei relații liniare.

Când mai mult de NS copii, controlorul decide care dintre copii să păstreze și pe care să anuleze, după care se fac modificările corespunzătoare în indexurile înregistrărilor din director.

Metodă directoare legate urmărește și comprimarea volumului cărții de referință. Folosește o listă legată pentru a stoca înregistrările, care poate fi implementată ca una legată (unidirecțională) și dublu legată (bidirecțională).

Orez. 11.18. Protocolul de coerență a memoriei cache a directorului concatenat

Într-o listă legată individual (Figura 11.18), fiecare intrare de director conține un pointer către o copie a șirului într-unul dintre cache-urile locale. Copii ale rândurilor cu același nume în diferite cache-uri sistemele formează un lanţ unidirecţional. Pentru a face acest lucru, etichetele lor oferă un câmp special în care este introdus un pointer către memoria cache care conține următoarea copie a lanțului. Un delimitator special este plasat în eticheta ultimei copii a lanțului. Referința concatenată permite șiruri de lungime N, adică suportă N copii ale celulei. Când se creează o altă copie, lanțul trebuie distrus și trebuie să se formeze unul nou. Să presupunem, de exemplu, că procesorul 5 nu are o copie a celulei x și se întoarce la memoria principală pentru aceasta. Pointerul din director este schimbat astfel încât să indice către numărul cache 5, iar pointerul din cache 5 - astfel încât să indice către cache 2. Pentru aceasta, controlerul de memorie principal, împreună cu datele solicitate, trebuie să transfere și un pointer la cache la memoria cache 5 - memoria cu numărul 2. Numai după ce se formează întreaga structură a lanțului, procesorul 5 va primi permisiunea de a accesa celula x. Dacă procesorul scrie într-o celulă, un semnal de invalidare este trimis pe calea definită de lanțul de pointeri corespunzător. Lanțul trebuie actualizat atunci când o copie este ștearsă din orice memorie cache.

O listă dublu legată acceptă atât indicatori înainte, cât și înapoi. Acest lucru vă permite să inserați mai eficient indicatori noi în lanț sau să ștergeți din acesta care nu mai sunt necesari, dar necesită stocarea unui număr mai mare de pointeri.

Schemele bazate pe director suferă de congestie în controlerul centralizat, precum și de supraîncărcare de comunicare în căile dintre controlerele cache locale și controlerul central. Cu toate acestea, ele se dovedesc a fi foarte eficiente în sistemele multiprocesor cu topologie complexă de interconectare între procesoare, unde protocoalele de monitorizare nu pot fi implementate.

Mai jos este o scurtă descriere a protocoalelor relevante în prezent pentru asigurarea coerenței memoriei cache pe baza cărții de referință. Pentru o cunoaștere detaliată a acestor protocoale, sunt furnizate legături către sursele literare corespunzătoare.

ProtocolTang. Există aici o referință globală centralizată care conține copie integrală toate informațiile din directoarele fiecăruia dintre cache-urile locale. Aceasta duce la problema blocajeleși necesită, de asemenea, căutarea intrărilor corespunzătoare.

ProtocolCădelniță. Schema de referință Censier utilizează un vector de bit pointer pentru a indica ce procesoare dețin o copie locală a unui anumit bloc de memorie. Există un astfel de vector pentru fiecare bloc de memorie. Dezavantajele acestei metode sunt că este ineficientă cu un număr mare de procesoare și, în plus, este necesar accesul la memoria principală pentru a actualiza liniile cache.

ProtocolArchibald. Schema de referință Archibald este o pereche de scheme complicate pentru rețelele de procesoare organizate ierarhic. CU descriere detaliata acest protocol poate fi găsit în.

ProtocolStenstrom. Manualul Stenstrom oferă șase stări valide pentru fiecare bloc de date. Acest protocol este relativ simplu și potrivit pentru orice topologie de interconectare a procesorului. Referința este stocată în memoria principală. În cazul unei pierderi de citire a memoriei cache, se accesează memoria principală, care trimite un mesaj către memoria cache care deține blocul, dacă există. La primirea acestui mesaj, proprietarul memoriei cache trimite datele solicitate și, de asemenea, transmite un mesaj tuturor celorlalți procesoare care partajează aceste date pentru ca aceștia să își actualizeze vectorii de biți. Schema nu este foarte eficientă cu un număr mare de procesoare, totuși este în prezent cel mai matur și utilizat protocol bazat pe directoare.

Control întrebări

1. Analizați influența caracteristicilor AC cu memorie partajată și AC cu memorie distribuită asupra dezvoltării software. De ce se numesc aceste VS-uri, respectiv, puternic cuplate și, respectiv, slab cuplate?

2. Explicați ideea de a alterna adrese de memorie. Care sunt considerentele pentru alegerea unui mecanism de alocare a adreselor? Cum este legat de clasa de arhitectură BC?

3. Dă caracteristici comparative accese omogene şi eterogene
la memorie.

4. Care sunt avantajele arhitecturii SOMA?

5. Efectuați o analiză comparativă a modelelor cu acces coerent în cache și incoerent în cache la memorie eterogenă.

6. Formulați avantajele și dezavantajele arhitecturii fără acces direct la memoria de la distanță.

7. Explicați semnificația memoriei distribuite și partajate.

8. Dezvoltați exemplul dvs. pentru a ilustra problema coerenței cache-ului.

9. Descrieți caracteristicile moduri programatice soluții la problema coerenței, evidențiază punctele forte și punctele slabe ale acestora.

10. Comparați tehnicile de scriere pentru a scrie cu cele de scriere și de a difuza, evidențiind meritele și dezavantajele acestora.

11. Oferiți o descriere comparativă a metodelor de menținere a coerenței în sistemele multiprocesor.

12. Efectuați o analiză comparativă a protocoalelor de observație pe care le cunoașteți.

13. Care dintre protocoalele de observare este cel mai popular? Justificați motivele interesului crescut față de el.

14. Oferiți o descriere detaliată a protocoalelor de coerență pe baza cărții de referință și a metodelor de implementare a acestora. Care sunt diferențele dintre aceste protocoale și protocoalele de observare?

Tabelul 9.1. Ierarhia subsistemului de memorie PC
Tipul memoriei anul 1985 2000 an
Timp de prelevare Volumul tipic Preț/octet Timp de prelevare Volumul tipic Preț/octet
1 Memoria super-operatorie (registre) 0,2 5 ns 16/32 biți $ 3 - 100 0,01 1 ns 32/64/128 biți $ 0,1 10
2 Stocare 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ă (stocare în 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 de obicei accesate prin denumirile lor mnemonice din instrucțiunile procesorului.

Cache folosit pentru a se potrivi cu viteza procesorului și a memoriei principale. Sistemele de calcul folosesc un cache cu mai multe niveluri: cache de nivel I (L1), cache de nivel II (L2) etc. Sistemele desktop folosesc de obicei un cache cu două niveluri, în timp ce sistemele server utilizează un cache cu trei niveluri. Cache-ul stochează instrucțiuni sau date care probabil vor fi trimise procesorului pentru procesare în viitorul apropiat. Prin urmare, funcționarea memoriei cache este transparentă pentru software memorie cache de obicei, nu sunt disponibile programatic.

RAM magazine, de regulă, complet funcțional module software(nucleul sistemului de operare, programele executabile și bibliotecile acestora, driverele de dispozitiv etc.) și datele acestora, direct implicate în funcționarea programelor, și este, de asemenea, utilizat pentru salvarea rezultatelor calculelor sau a altor prelucrări de date înainte de a le trimite către un extern memorie, către un dispozitiv de ieșire a datelor sau interfețe de comunicare.

Fiecare celulă memorie cu acces aleator a atribuit o adresă unică. Metodele de alocare a memoriei organizaționale oferă programatorilor capacitatea de a utiliza eficient întregul sistem informatic... Aceste metode includ modelul de memorie continuă („plată”) și modelul de memorie segmentată. Folosind model solid(model plat) al memoriei, programul funcționează cu un singur spațiu de adrese contiguu, un spațiu de adrese liniar, în care celulele de memorie sunt numerotate secvențial și continuu de la 0 la 2n-1, unde n este capacitatea 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. Selectorul de segment selectează un anumit segment, iar offset-ul indică o anumită celulă din spațiul de adrese al segmentului selectat.

Top articole similare