Er zijn twee hoofdklassen van cache, de leescache en de schrijfcache. Een leescache is een hulpmiddel dat snelle toegang biedt tot gegevens die anders traag toegankelijk zouden zijn. Een schrijfcache is een hulpmiddel dat de illusie wekt van hoge schrijfsnelheden, waarbij over het algemeen de werkelijke lage snelheid van een geheugenapparaat voor de gebruiker wordt verborgen.
Structuur van een cache
Doorgaans wordt een cache één geheugenlaag lager opgeslagen dan de daadwerkelijke gegevens. Gegevens uit de ene cache kunnen echter verder in de cache worden opgeslagen in de volgende geheugenlaag. Er zijn vier geheugenlagen, waarbij de CPU-cache/-registers de laagste en snelste laag zijn en archiefopslag de hoogste en langzaamste laag. De laagste tot hoogste niveaus zijn CPU-cache/registers, systeem-RAM, opslagstations en archiefopslag.
Elke stap naar beneden in de geheugenlagen biedt een hogere toegangssnelheid maar een verminderde capaciteit. De meeste thuisgebruikers hebben alleen de laagste drie opslaglagen in de echte wereld. Archiefopslag verwijst over het algemeen naar tapeopslag bedoeld voor langdurige en offline opslag. Archiefopslag kan ook verwijzen naar het gebruik van optische of andere standaard opslagmedia die van apparaten zijn verwijderd en offline worden bewaard. Deze voorbeelden zijn aanzienlijk vaker thuis te vinden, maar komen nog steeds niet zo vaak voor.
Opmerking: Tot op zekere hoogte kan cloudopslag worden beschouwd als een variant van archiefopslag. Het is zeer veel online, maar niet noodzakelijkerwijs onmiddellijk toegankelijk en is over het algemeen traag toegankelijk. Verwisselbare media zoals USB-geheugen bevinden zich ook enigszins op de grens tussen opslagschijf en archiefopslag.
Soorten schijfcache
Een schijfcache verwijst naar elke cache op een "schijf", dat wil zeggen opslagschijven zoals SSD's en HDD's. Er zijn drie soorten schijfcache. De leescache houdt in dat sommige gegevens tijdelijk uit de archiefopslag worden gekopieerd om sneller toegang te krijgen wanneer dat nodig is. Een schrijfcache kan de vorm aannemen van een SLC-cache op een SSD. Een I/O-cache is over het algemeen een flashgeheugen of DRAM dat wordt gebruikt om zowel lees- als schrijfbewerkingen in de cache op te slaan. Het bepalende kenmerk van al deze is dat de cache zich op de schijf zelf bevindt.
Lees schijfcache
De leescacheversie van een schijfcache is waarschijnlijk het minst gebruikte type schijfcache. Archiefopslag is per definitie zelden nodig. Gegevens kunnen ook rechtstreeks uit archiefmedia worden gelezen. Het probleem is snelheid. De toegangstijd is traag omdat de gegevens offline zijn, waardoor een geschikt opslagapparaat moet worden geïdentificeerd en aangesloten. Leessnelheden zijn afhankelijk van het archiefmedium, maar zullen in de meeste gevallen voldoende zijn. Maar is misschien niet ideaal voor hoge bandbreedtevereisten, zoals het bekijken van high-definition video's. In deze scenario's kan een leesschijfcache worden gebruikt om een kopie van het videobestand in de cache op te slaan op een opslagmedium dat het in realtime kan afspelen.
Schijfcache schrijven
Moderne SSD's zijn razendsnel en bieden ongelooflijk hoge lees- en schrijfsnelheden. Wat je je misschien niet realiseert, is dat dit technisch niet waar is. De meeste SSD's op de markt zijn TLC, oftewel Triple Layer Cells. Dit betekent dat elke geheugencel drie bits aan gegevens kan opslaan. Hoewel dit driemaal de opslagdichtheid biedt van onbewerkte SLC (Single Layer Cells) met één bit per cel, is het ook veel langzamer.
Tip: TLC-flitser is nog steeds snel. Het is vele malen sneller dan de piekbandbreedte van de SATA 3-bus die wordt gebruikt door HDD's en vroege SSD's. QLC-flash of Quad Level Cells zijn zelfs langzamer, in sommige tests presteren ze zelfs langzamer dan HDD's.
De SLC-cache is uitgevonden om de lage schrijfsnelheden voor de gebruiker te verbergen. SLC-cache behandelt de TLC-flash gewoon als SLC-flash, waardoor deze met hogere snelheden kan werken. Gegevens die naar de SLC-cache worden geschreven, worden vervolgens intern gekopieerd naar het TLC-formaat, zo snel als de schrijfsnelheid toelaat. Deze techniek werkt uitstekend en biedt toenemende snelheden die de ontwikkeling van nieuwe, snellere standaarden noodzakelijk hebben gemaakt.
SLC-caches hebben echter enkele kanttekeningen. De grootte van de SLC-cache is 1/3 van de resterende vrije ruimte van de SSD. Naarmate de SSD vol raakt, neemt de grootte van de SLC-cache af. Dit is niet zozeer een probleem op grote lege schijven, maar kan op een kleinere of bijna volledige SSD zijn. Zodra de SLC-cache is gevuld, ziet de gebruiker de schrijfsnelheid dramatisch dalen als ze worden blootgesteld aan de echte TLC-schrijfsnelheid.
Opmerking: Als er in de toekomst gegevens naar archiefmedia moeten worden geschreven, kan technisch gezien elke opslagschijf worden beschouwd als een schrijfcache voor de archiefmedia. Deze betekenis zou echter over het algemeen niet worden aangenomen.
I/O-schijfcache
HDD's zijn over het algemeen behoorlijk traag, zelfs bij hun optimale werkbelasting. Om dit zoveel mogelijk voor de gebruiker te verbergen, kan een I/O-cache worden gebruikt. Een I/O-cache cachet zowel lees- als schrijfbewerkingen naar behoefte. Deze cache bestaat meestal uit Flash-geheugen of DRAM in de drive zelf. De capaciteiten zijn over het algemeen laag, hoewel de SSHD- of Solid State Hybrid Drive-klasse met Flash-geheugen meer mogelijkheden biedt, maar niet vergelijkbaar is met moderne SSD-capaciteiten.
Caching reads betekent dat de harde schijf de gegevens niet hoeft te vinden en vervolgens te lezen. Dit kan uitstekende prestatievoordelen bieden, maar alleen bij volgende leesbewerkingen. De eerste lezing is altijd traag. Caching-schrijfbewerkingen betekenen dat kleine schrijfbewerkingen in de cache kunnen worden opgenomen en vervolgens zo snel mogelijk naar de daadwerkelijke HDD kunnen worden geschreven. Dit biedt hogere snelheden, maar ziet een grote prestatiedip als de cache ooit uitgeput raakt.
Een I/O-cache moet de behoeften van zowel lees- als schrijffuncties zorgvuldig afwegen, vooral wanneer er slechts een kleine cache beschikbaar is. Grotere caches doen dit probleem enigszins teniet, hoewel edge-cases met grote datasets nog steeds de flash-cache van de grootste SSHD's kunnen overweldigen.
Opmerking: SSD's kunnen hun ingebouwde DRAM technisch gezien ook als I/O-cache gebruiken. Dit wordt echter meestal voornamelijk of uitsluitend gebruikt om de vertaaltabel van logisch naar fysiek adres op te slaan die wordt gebruikt om gegevens op de SSD te vinden.
Conclusie
Een schijfcache is een cache die zich rechtstreeks op een opslagstation bevindt. Het kan de vorm aannemen van een lees- of schrijfcache of een I/O-cache. Leescaches cachen meestal gegevens uit langzamere archiefopslag. Schrijfcaches verbergen de lage schrijfsnelheden van opslagschijven voor de gebruiker. I/O-caches verbergen zowel langzame lees- als lage schrijfsnelheden voor de gebruiker.
Caches zijn uitstekende bruikbaarheidstools, maar kunnen gebruikers hoofdpijn bezorgen als ze leeg zijn. Dit geldt met name voor dynamische schrijfcaches zoals de SLC-cache. Omdat niet-technische gebruikers misschien niet begrijpen waarom hun schrijfsnelheden zo laag zijn en deze dus niet kunnen oplossen door capaciteitsproblemen aan te pakken.