CALCOLATORI ELETTRONICI A cura di Luca Orrù
Lezione n.12 Gerarchia di memoria Sommario:
• Concetto di gerarchia • Principio di località • Definizione di “hit ratio” e “miss ratio”
1
CALCOLATORI ELETTRONICI A cura di Luca Orrù La gerarchia di memoria Il sistema di memoria è molto critico per le prestazioni del calcolatore. Il collo di bottiglia è rappresentato dal canale di comunicazione CPU-Memoria che limita le prestazioni del calcolatore. Non c’è al momento un'unica tecnologia che permette di realizzare un sistema di memoria che abbia costi minimi, capacità massima e tempi d’accesso minimi. Per questo motivo si usano varie tecnologie per la costruzione delle memorie, ciascuna delle quali offre una di queste caratteristiche. Si ha quindi il concetto di gerarchia di memoria che identifica un insieme di memorie (sistema di memoria) con diverse tecnologie. La gerarchia di memoria è un modo con cui diverse tecnologie di memoria, diversi sistemi di memoria con tecnologie differenti, vengono messe insieme in modo da formare un unico sistema che offra prestazioni migliori rispetto alle prestazioni della singola memoria. Il concetto di gerarchia si basa sul modo particolare di accedere ai dati che hanno i sistemi di calcolo. Questo è il principio di località. Il concetto di gerarchia si basa fortemente sul principio di località. Le prestazioni di un sistema di memoria possono essere quantificate attraverso un insieme di parametri tra cui: • Hit ratio (vedremo in seguito cosa è) • Tempo d’accesso: dipende dalle caratteristiche della singola unità La memoria di un calcolatore deve essere intesa come un sistema che deve avere le seguenti caratteristiche: • Costi ridotti • Capacità di memorizzazione adeguata (Gbyte). • Prestazioni accettabili (bassi tempi d’accesso ai dati ). Nell’architettura di Von Neumann il punto critico è il canale di comunicazione tra la CPU e la memoria. Mentre la CPU è realizzata in un unico chip (circuito integrato VLSI) e con tecnologie avanzate, il sistema di memoria è invece realizzato su più chip. I programmatori, per memorizzare i loro programmi e i dati, necessiterebbero di memorie molto veloci e capienti. La tecnologia permette solo di costruire memorie poco costose e grandi, ma lente, o memorie piccole e veloci, ma molto costose. Si ha dunque un conflitto tra esigenze dei programmatori e i vincoli tecnologici. Il rapporto tra il tempo d’accesso alla memoria ed il tempo di ciclo della CPU era nel 1980 pari a 2; attualmente il gap è aumentato e si arriva ad un rapporto pari a 5. Occorre quindi evitare che il miglioramento delle prestazioni della CPU sia inutile. Bisogna ricorrere ad una soluzione approssimata: gerarchia di memoria. • Insieme di livelli di memoria di diversa velocità e dimensione • Si dispongono memorie veloci vicino alla CPU per non rallentare la dinamica d’accesso alla memoria tramite fetch istruction e load/store. 2
CALCOLATORI ELETTRONICI A cura di Luca Orrù
• man mano che ci allontaniamo dalla CPU piazziamo memorie sempre più lente e capienti • a parità di capacità le memorie più veloci sono più costose di quelle più lente, perciò sono in genere più piccole. • soluzione compatibile con i costi La gerarchia deve ottimizzare i parametri seguenti: • costo • capacità di memorizzazione • prestazioni (tempo d’accesso minimi) Obiettivo di una gerarchia di memoria: dare al programmatore l’illusione di poter usufruire di una memoria veloce è molto capiente. Tecnologie diverse consentono di ottimizzare una per una queste caratteristiche, ma non esiste un’unica tecnologia che consenta di ottimizzare i tre parametri contemporaneamente. Solo tramite una gerarchia di memoria si può ottenere una soluzione approssimata. La gerarchia di memoria sfrutta il principio di località degli accessi.
Principio di località degli accessi • Se al tempo t si accede all’indirizzo X è molto probabile che l’indirizzo X+ X sia richiesto fra t e t+ t • Nel breve periodo gli indirizzi generati da un programma sono confinati in regioni limitate Il principio di località permette una razionalizzazione alle tecniche d’accesso, ossia ai criteri con cui la CPU accede alle informazioni. Un sistema di memoria gerarchico può essere reso efficiente se la modalità d’accesso ai dati ha caratteristiche prevedibili. In un determinato intervallo di tempo, alla memoria non si accede in modo uniforme, relativamente allo spazio degli indirizzi, vale a dire che non si accede a tutti gli indirizzi possibili della memoria, ma a zone molto limitate. Questo è generalmente vero, ma non sempre. Quando non è vero si hanno dei problemi. Il principio di località si divide in: • Località spaziale: quando si fa riferimento ad un elemento di memoria , c’è la tendenza a far riferimento entro breve tempo ad altri elementi che hanno indirizzo vicino a quello dell’elemento corrente (ad esempio quando si esegue un programma le istruzioni sono memorizzate in celle adiacenti di memoria; oppure si pensi ai dati memorizzati in vettori o matrici).
3
CALCOLATORI ELETTRONICI A cura di Luca Orrù
• Località temporale: quando si fa riferimento ad un elemento di memoria, si ha la tendenza a far riferimento allo stesso elemento entro breve tempo (si pensi alle istruzioni e ai dati all’interno di un ciclo). Criterio di gestione della gerarchia di memoria • Allocazione dinamica per utilizzare gli spazi disponibili con la massima efficienza. Nella memoria M1 si spostano di volta in volta i dati che si prevede vengano utilizzati nel breve periodo. • Spostamento automatico dei dati tra i vari livelli. Non sarà il programmatore a preoccuparsi di spostare i dati da un livello ad un altro, ma sarà il sistema che gestirà al meglio lo spostamento. • I canali di comunicazione tra i vari livelli devono essere ragionevolmente veloci, altrimenti si ricade nel caso d’interfaccia CPU-Memoria non gerarchica. La politica di gestione cerca di ottenere da una gerarchia, una memoria che abbia: • I tempi d’accesso della memoria più veloce (memoria M1). • Le dimensioni della memoria più grande (memoria M2) • I costi della memoria più economica (memoria M2) Il costo medio per bit del sistema diventa: C=
c1 S1 + c 2 S 2 S1 + S 2
• c1 e c2 sono i costi per bit delle singole memorie con c1>c2 • S1 e S2 sono le dimensioni delle due memorie della gerarchia (M1 e M2) con s13S1 allora c1, anche se elevato, tende a pesare poco sul costo globale c. Una gerarchia di memoria è composta da più livelli, ma i dati vengono di volta in volta copiati solo tra due livelli adiacenti: il livello superiore, che indichiamo con M1, è quello più vicino al processore; è più piccolo e veloce e quindi utilizza una tecnologia più costosa rispetto al livello inferiore, che indichiamo con M2. La minima quantità d’informazione che può essere presente o assente nella gerarchia composta da due livelli è il blocco o cache line. Vediamo ora rispetto a quali parametri viene valutato il tempo d’accesso alla gerarchia.
4
CALCOLATORI ELETTRONICI A cura di Luca Orrù Il primo parametro che ci consente di valutare le prestazioni è : • Hit ratio (H) vale a dire il tasso di successo. L’hit ratio rappresenta la probabilità che la richiesta di un dato sia soddisfatta al livello di memoria M1. Se il dato richiesto dal processore compare in uno dei blocchi presenti nella memoria M1, si dice che la richiesta ha successo (hit). Esempio: supponiamo che la CPU richieda una determinata informazione (dato). H ci da la probabilità che il dato richiesto si trovi in un blocco della memoria M1. Il sistema di memoria funzionerà tanto meglio, tanto maggiore è il valore di H. Maggiore è H, maggiore è la probabilità di trovare il dato in M1 e quindi tempo d’accesso inferiore. Altro parametro caratteristico delle prestazioni è: • Miss ratio (1-H) vale a dire il tasso d’insuccesso. Esso rappresenta la probabilità che la richiesta del dato non sia soddisfatta dalla memoria M1. Ecco perché il miss ratio=1-H (si ricorda dalla teoria della probabilità che la somma delle probabilità di n eventi è pari a 1). Il dato, se non è presente in M1, deve essere richiesto al livello di memoria M2. Vediamo ora come calcolare il tempo d’accesso, che vogliamo sia il più prossimo possibile al tempo d’accesso della memoria più veloce. Il tempo medio d’accesso globale è dato dalla somma pesata dalle probabilità di successo e d’insuccesso. Tempo medio d’accesso =Tam
= H tA1 + (1 − H ) tA 2
tA1 = tempo d’accesso a M1 tA 2 = tempo d’accesso a M2 tA 2 = tA1 + tB = r tA1 Si ricorda che il tempo di accesso è il tempo che passa dal momento in cui si accede al dato al momento in cui il dato è reso disponibile alla CPU. In questo caso, per essere disponibile alla CPU il dato deve essere portato dalla memoria M2 alla memoria M1. Ecco perché nel calcolo del tempo di accesso a M2 bisogna sommare il tempo di trasferimento.
tB = tempo di trasferimento di un blocco da M2 a M1. Infatti non viene trasferito un
singolo dato, ma un blocco di dati che contiene il dato richiesto
5
r=
CALCOLATORI ELETTRONICI A cura di Luca Orrù
tA 2 tA1
Si definisce inoltre un’efficienza d’accesso:
e=
tA1 tA1 1 1 = = = tA H tA1 + (1 − H ) tA2 H tA1 + (1 − H ) tA2 H + (1 − H ) r tA1 tA1
Vediamo come si comporta l’efficienza e ai limiti. Se H=1, vale a dire che il dato è in M1, allora
e=
1 =1 1 + (1 −1) r
Questa è la situazione migliore possibile. Vediamo gli altri casi possibili tramite un grafico che riassume l’andamento di e in funzione di H e al variare di r.
r =1
efficienza 1 O,8
r =2
O,6 O,4
r =100
r =10
O,2
O,2
O,4
O,6
O,8
1
H
r=100 è molto probabile nella realtà.
6
tA 2 =100 tA1 tA 2 =100 tA1
CALCOLATORI ELETTRONICI A cura di Luca Orrù
r=
Se r=100 per ottenere e≅ ≅ 1 dobbiamo operare con valori di H molto prossimi a 1 vale a dire H≅ ≅ 99%. I vantaggi della gerarchia si ottengono quindi con H molto vicino a 1. Questo significa spostare le informazioni da M2 a M1 con molta cura. Esistono vari criteri per fare questo e lo vedremo nella prossima lezione.
7