Ciao, e benvenuto nella terza puntata della sessantunesima stagione. Oggi ti mostro una cosa che, una volta vista, non riuscirai più a non vedere: il tuo computer non ha una cache. Ne ha tantissime, impilate una sopra l'altra, che lavorano insieme. Il caching non è un trucco che si usa in un punto: è un principio che si ripete a ogni livello. Oggi parliamo della piramide della memoria.
Partiamo da una legge scomoda, perché spiega tutta la forma. Nel mondo della memoria vale una regola dura: più una memoria è veloce, più è piccola e costosa; più è grande ed economica, più è lenta. Non esiste una memoria che sia insieme enorme, velocissima ed economica: è un sogno che la fisica e i costi non concedono. Quindi non puoi mettere tutto in una memoria velocissima, perché costerebbe una fortuna e sarebbe minuscola. E non puoi tenere tutto solo in una memoria enorme, perché saresti troppo lento. La soluzione a questo dilemma è una sola: impilare più livelli.
Voglio mostrarti la piramide, perché è elegante. Immagina una piramide di livelli di memoria. In cima, piccolissime e velocissime, ci sono le memorie dentro il cuore del processore: pochissimo spazio, ma risposte immediate. Scendendo, i livelli diventano via via più grandi e più lenti: la memoria principale del computer, poi il disco, poi la rete e il mondo esterno. In cima, poco spazio e massima velocità. In fondo, spazio quasi infinito ma grande lentezza. Ogni gradino, scendendo, è più capiente del precedente, ma anche più lento da raggiungere.
Voglio darti il meccanismo che tiene su tutto, perché è il cuore. Ed ecco la parte bellissima: ogni livello fa da cache per il livello sotto di lui. Ogni gradino tiene una copia delle cose più calde del gradino inferiore, quelle usate più spesso, così che la maggior parte delle richieste si fermi in alto, dove è veloce, senza dover scendere fino in fondo, dove è lento. Il processore cerca prima nella sua memoria minuscola e rapidissima. Se non trova, scende alla memoria principale. Se non trova neanche lì, scende al disco. E così via. Ogni volta che la cosa che cerchi è già a un livello alto, hai vinto: sei stato velocissimo. È la stessa idea della dispensa, ripetuta gradino dopo gradino.
Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Pensa a come lavori in cucina mentre cucini. Le cose che stai usando in questo istante, il sale, il coltello, le hai proprio in mano o a un palmo di distanza: le raggiungi all'istante. Quelle che usi spesso ma non adesso sono sul piano di lavoro, a un passo. Le scorte le tieni in dispensa, qualche passo più in là. Le riserve più grosse in cantina, e ciò che non hai lo compri al negozio, lontano. Nessuno tiene tutto in mano, sarebbe impossibile, e nessuno va in cantina per prendere il sale che usa a ogni piatto. Metti ciò che usi di più il più vicino possibile, e ciò che usi di rado più lontano. La memoria del computer è organizzata esattamente con lo stesso buon senso.
Voglio dirti perché tutto questo è invisibile, perché è importante. La cosa straordinaria è che questa piramide, di solito, non la vedi. Quando un programma chiede un dato, lui crede semplicemente di chiederlo alla memoria, e basta. Non sa, e non gli importa, se quel dato era nella memoria minuscola in cima, o è dovuto risalire faticosamente dal disco. Tutta la piramide lavora sotto, in silenzio, per dargli l'illusione di una memoria unica, grande e veloce. È magia, appunto. E la macchina sotto quella magia è proprio questa gerarchia di cache, che nasconde la lentezza dei livelli bassi dietro la velocità di quelli alti.
Voglio darti la lezione generale, perché va oltre la memoria. La lezione è che il caching non è una tecnica isolata, ma un modo di pensare che si ripete a ogni scala. Ogni volta che c'è un divario tra qualcosa di veloce e piccolo e qualcosa di lento e grande, la soluzione naturale è mettere in mezzo una scorta delle cose calde. Lo vedi nel processore, ma lo rivedrai identico nel browser, nei server, nella rete. Una volta che riconosci questo schema, lo ritrovi dappertutto: è uno dei disegni ricorrenti più profondi di tutta l'informatica.
Per oggi ci fermiamo qui. Abbiamo visto la piramide della memoria. Vale una legge dura: veloce vuol dire piccolo e caro, grande vuol dire lento ed economico, e non puoi avere tutto insieme. La soluzione è impilare livelli: in cima piccoli e velocissimi, in fondo enormi e lenti. E ogni livello fa da cache per quello sotto, tenendo le cose più calde in alto, così quasi tutte le richieste si fermano dove è veloce. Come in cucina, dove tieni in mano ciò che usi ora, in dispensa le scorte, in cantina le riserve. Tutto invisibile, per darti l'illusione di una memoria unica e veloce. La lezione: il caching è uno schema che si ripete a ogni scala. Nella prossima puntata: colpo e buco, la matematica di quando conviene. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.