• 0 Posts
  • 7 Comments
Joined 1 year ago
cake
Cake day: June 7th, 2023

help-circle
  • 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.