Informatica

Mi potreste spiegare i livelli di memoria:hard disk,memoria cache,registro interno e RAM?!!


il 05 Novembre 2015, da Luca Nastro

Giorgio Audino il 06 Novembre 2015 ha risposto:

Ciao Luca. L’ideale per un programmatore sarebbe avere una memoria di dimensioni infinite, velocissima, a basso prezzo e non volatile (cioè che non perda i dati se, ad esempio, viene tolta l’alimentazione). Ovviamente questo non è possibile, per cui si è creato un sistema piramidale dove più una memoria è lontana dal processore, più questa è grossa, lenta ed economica. Alla base della piramide c’è l’hard disk, che oggi è una memoria magnetica non volatile, di grosse dimensioni ma lenta per via della sua stessa architettura. Il tempo necessario per trovare un dato dipende dall’indirizzo di memoria richiesto, dalla posizione delle testine del disco nel momento in cui si riceve la richiesta, dall’algoritmo di ricerca scelto e, naturalmente, dalla velocità di rotazione del disco. Dei livelli di memoria che hai scritto è l’unico non volatile. Il livello successivo è la memoria RAM (Random Access Memory, così chiamata perché il tempo di accesso è fisso e non dipende dall’indirizzo di memoria richiesto come invece accade con l’hard disk). Questa è una memoria volatile, ben più veloce dell’hard disk ma più costosa. Il livello più interno è il registro della CPU. Si tratta di pochi indirizzi di memoria velocissimi che si trovano direttamente all’interno del processore. Questa è la memoria più veloce in assoluto, anche perché la distanza che il dato deve percorrere è minima. L’accesso alla memoria avviene sempre dalla CPU verso l’hard disk: prima si cerca dentro al registro interno. Se il dato non si trova, cioè si verifica una “MISS”, viene cercato nella RAM, quindi nell’hard disk finché non viene trovato, cioè fino a una “HIT”. Ogni volta che serve andare a vedere in un livello inferiore e viene trovato il dato richiesto, questo viene anche copiato nei livelli superiori eliminando un dato precedente (esistono vari criteri e algoritmi per decidere quale dato eliminare). Salvo il registro interno, tutti questi livelli possiedono una cache, cioè una memoria degli ultimi dati richiesti. Questo serve per il principio di località ( cfr. https://it.wikipedia.org/wiki/Principio_di_localit%C3%A0_(informatica) ): è molto probabile che se un dato è necessario in un certo momento sia necessario poco dopo. All’accesso di un livello viene prima verificata la presenza di un dato nella cache, quindi all’interno della memoria intera se necessario.