@informatica
Ai dischi serve davvero la cache?

È una curiosità che mi è venuta recentemente quando stavo facendo spesa,
Vedo che la maggior parte dei “dischi” (sia HDD che SSD) che vedo presentano una certa quantità di “cache DRAM”,
Da quel che so serve a migliorare le prestazioni, mantenendo blocchi utilizzati di frequente in una memoria più veloce, e, per gli SSD, a ridurre i cicli di scrittura sulla memoria flash.

Ma qualcosa di simile se non mi sbaglio lo fanno anche sistemi operativi come linux e windows, mantenendo in memoria file letti e scritti di recente, quindi mi chiedo, fa davvero molta differenza avere o no una cache anche sul “disco” al di fuori di benchmark, come crystaldiskmark, che disabilitano esplicitamente la cache del sistema operativo?

  • gmg@beehaw.org
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    Ci provo - sarà un po’ lungo :)

    Siccome le celle di memoria degli SSD si possono sovrascrivere solo un certo numero di volte, quando modifichi un blocco di dati (un file o un pezzo di file se è grande) l’SSD invece di sovrascrive il vecchio blocco ne scrive uno nuovo da qualche altra parte. Qquesta cosa si chiama “wear leveling” ed è anche il motivo per cui è difficile assicurarsi di aver cancellato qualcosa da un SSD.

    La cosa succede senza che il sistema operativo ne sappia nulla: per quanto lo riguarda, l’indirizzo del file è sempre lo stesso, e quindi è responsabilità dell’SSD sapere quale blocco “fisico” corrisponda a quale blocco “logico” (inoltre deve anche sapere quante volte ha sovrascritto le varie parti del disco).

    L’SSD ha quindi bisogno di mantenere delle tabelle con questi dati e deve leggere queste tabelle prima di ogni altra operazione.

    La RAM dell’SSD viene usata per velocizzare la consultazione di queste tabelle, ma ci sono anche SSD che usano la RAM del computer per la stessa cosa (IIUC sono comunque più lenti di quelli con RAM dedicata) e pure dischi che non hanno la cache e leggono ogni volta le tabelle dai chip su cui vengono scritte.

    Insomma: la cache dell’SSD non replica la funzionalità replica di quella del sistema operativo… non è che non sarebbe possibile fare un SSD con cache per i dati (per quanto ne so magari esistono), ma il sistema operativo ha molte più informazioni per decidere quali dati tenere in cache (eg. sa se il processo che ha letto i dati sta ancora girando o se è morto) ed è quindi più sensato che se ne occupi lui.