cache-ul procesorului este împărțit în mai multe niveluri. Numărul maxim de cache-uri - patru. În universalnomprotsessore în prezent numărul de nivele poate fi de până la trei. Nivelul Cache N + 1 sunt în general mai mari în dimensiune și de acces și date mai lent rate de transfer decât nivelul cache N.
Cel mai rapid este memoria cache la primul nivel - cache L1 (nivelul 1 cache). De fapt, aceasta este o parte integrantă a procesorului, deoarece este situat pe un singur cip, și cu ea o parte a blocurilor funcționale. În procesoarele moderne de obicei cache L1 este împărțit în două - un cache de instrucțiune (instrucțiuni) și cache-ul de date (arhitectura Harvard). Cele mai multe procesoare fără L1 nu poate funcționa. L1 care funcționează la frecvența procesorului, și, în general, tratamentul poate fi efectuat la acesta kazhdyytakt. De multe ori este posibil să se efectueze mai multe operații de citire / scriere simultan.
A doua viteza este un cache al doilea nivel - L2 cache, care este, în general ca L1, situat pe un singur cip cu procesorul. În versiunile anterioare ale procesorului L2 este implementat ca un set separat de cipuri de memorie de pe placa de bază. Volum L2 de la 128 Kbytes la 1-12 megaocteți. În procesoarele multi-core de astăzi, cache-ul celui de al doilea nivel, în timp ce pe același cip, o utilizare de memorie separată - cu un volum total de cache în MB nM per nucleu reprezentând nM / nCMbayta în cazul în care nC - numărul de nuclee de procesare.
cache nivelul trei este cel mai mare viteză, dar poate fi foarte mare - mai mult de 24 MB. L3 cache anterior mai lent, dar încă mult mai rapid decât de memorie. Într-un sistem multiprocesor este în uz general și are ca scop sincronizarea diferitelor L2 de date.
Există o a patra memorie cache de nivel, a cărui utilizare este justificată numai pentru vysokoproizvoditelnyhserverov multiprocesor si mainframe-uri. De obicei, acesta este pus în aplicare ca un cip separat.
31.Segmentnaya paginare și acces la memorie.
paginare de memorie (paginare) - cea mai comună strategie de gestionare a memoriei utilizate în aproape toate sistemele de operare, în care:
- Memoria logică împărțită în pagini - zone adiacente de lungime egală - de obicei, o putere de 2 (de exemplu, 512 de cuvinte);
- memorie fizică, respectiv, este împărțit în cadre de aceeași dimensiune;
- logica de distribuție de memorie este exact pagina;
- memoria fizică a procesului nu poate fi continuu;
Obiective paginare - permite alocarea non-contigue de memorie fizică pentru procese, precum și pentru a extinde spațiul memoriei logice.
Astfel, în cazul în care orice acces de paginare de memorie necesită practic nici una, ci două referiri la memorie - una din tabelul de pagini, iar celălalt - direct la comandă sau de date. In aceasta - o anumită lipsă de ineficiență și de paginare, în comparație cu un simplu metode de gestionare a memoriei.
tabel de pagină în sistemele de operare pot fi aranjate în diferite moduri, menținând în același timp principiile generale de utilizare a acestora.
Shared (partajate) Pages - pagini logice utilizate de mai multe procese și având același număr în tabelul de pagini ale fiecărui proces. Acest mecanism este util pentru a economisi memorie, deoarece permite să se încarce în memorie într-un singur exemplar nu se schimba informațiile necesare mai multe procese - de exemplu, cod și constante matrice.
Organizarea memoriei Segment (segmentare) - schema de alocare de memorie sub formă de segmente de lungime variabilă corespunzătoare interpretării de alocare a memoriei de utilizator, și anume structura logică a programelor și a datelor. Din punct de vedere al utilizatorului (programul de dezvoltator), programul - un set de module și date de cod, fiecare dintre acestea ar trebui să fie alocate segmentului în memorie.
Segment - o unitate logică de alocare a memoriei, destinate a fi introduse în memoria unui modul de cod sau date. De exemplu, un segment de memorie poate fi reprezentat prin:
un set de variabile locale;
un set de variabile globale;
un bloc de date comune (de exemplu, COMMON-block în limba Fortran);
Când procesul segmentelor de încărcare este plasat în memorie, iar unele pe disc de stocare. Segmente ale unui program poate fi scris în zonele non-contigue.
Multe dintre principiile de organizare a segmentului de arhitectură similare cu cele de paginare, dar în toate cazurile, este necesar să se ia în considerare faptul că lungimea segmentului este variabilă, și păstrați-l într-o formă explicită în tabele.
în cazul în care segmentul de-numărul - un număr de segmente, de offset - compensat în segmentul.
Lungimea segmentului de masă registru - conține numărul de segmente utilizate de program.
Mutarea (relocarea) a programelor și a datelor în organizarea unui segment dinamic, și anume efectuate în timpul execuției programului cu ajutorul tabelului de segment. Posibil partajat (partajare) a mai multor procese la unul și același segment, adică Acesta susține conceptul de segmente partajate. În acest caz, numărul total de segmente logice pentru diferite procese vor fi aceleași.