@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?

  • @edinbruh
    link
    47 months ago

    tl;dr Sì, fa davvero molta differenza.

    Anzitutto, in generale aggiungere altri livelli di cache, su un bus/dispositivo lento, aiuta sempre.

    La cache interna e del sistema hanno ruoli diversi, non sono una in alternativa all’altra.

    La cache del sistema operativo è a conoscenza della struttura dei file. Quindi sceglierà il momento migliore per “inviare” le scritture “cached” al disco, e quando “invalidare” la cache costringendoti a rileggere, sapendo quando apri o chiudi un file, e se lo apri in lettura o scrittura, etc.

    Viceversa, il disco non sa come sono fatti i file, ma sa come è strutturato fisicamente il disco. Sugli SSD non è detto che dall’indice del blocco può indovinare su quale punto di quale chip si trova, perché questa corrispondenza cambierà nel tempo per rendere il disco più longevo. Quindi con queste informazioni aggiuntive, può sfruttare alcune euristiche basate sulla struttura fisica per migliorare le prestazioni. Per gli hard disk invece ti serve semplicemente perché sono dannatamente lenti e ogni aiuto fa differenza.

    Inoltre, si parla di DRAM, quindi volatile. Quindi più che i blocchi usati spesso sono quelli usati di recente che si trovano nella cache del disco, perché non sopravviverebbe al riavvio. Alcuni hard disk hanno un piccolo SSD dentro che invece tiene i dati usati più spesso, e sono molto più veloci di un hdd normale. Ma su un ssd questo non ha senso perché se potessi fare una memoria non volatile più veloce faresti direttamente un ssd più veloce.