Det finns två huvudklasser av cache, läscachen och skrivcachen. En läscache är ett verktyg som ger snabb åtkomst till annars data som annars skulle vara långsam att komma åt. En skrivcache är ett verktyg som erbjuder illusionen av snabba skrivhastigheter, i allmänhet döljer en minnesenhets sanna långsamma hastighet för användaren.
Struktur för en cache
Vanligtvis lagras en cache en minnesnivå lägre än den faktiska datan. Data från en cache kan dock cachelagras ytterligare i nästa minnesnivå. Det finns fyra minnesnivåer, där CPU-cachen/-registren är den lägsta och snabbaste nivån och arkivlagring är den högsta och långsammaste nivån. De lägsta till högsta nivåerna är CPU-cache/register, system-RAM, lagringsenheter och arkivlagring.
Varje steg nedåt i minnesnivåerna ger ökad åtkomsthastighet men minskad kapacitet. De flesta hemanvändare har bara de tre lägsta lagringsnivåerna i den verkliga världen. Arkivlagring avser i allmänhet bandlagring avsedd för långtids- och offlinelagring. Arkivlagring kan också hänvisa till användningen av optiska eller andra standardlagringsmedier som har tagits bort från enheter och hålls offline. Dessa exempel är betydligt mer benägna att hittas i hemmet men är fortfarande inte så vanliga.
Notera: Till viss del skulle molnlagring kunna betraktas som en variant av arkivlagring. Det är mycket online men inte nödvändigtvis tillgängligt omedelbart och är i allmänhet långsamt att komma åt. Flyttbara media som USB-minne går också något över gränsen mellan lagringsenhet och arkivlagring.
Typer av diskcache
En diskcache hänvisar till vilken cache som helst på en "disk", det vill säga lagringsenheter som SSD och hårddiskar. Det finns tre typer av diskcache. Läscachen skulle innebära att en del data från arkivlagring tillfälligt kopieras för att göra åtkomst snabbare när det behövs. En skrivcache kan ha formen av en SLC-cache på en SSD. En I/O-cache skulle i allmänhet vara något flashminne eller DRAM som används för att cachelagra både läs- och skrivoperationer. Den avgörande egenskapen för alla dessa är att cachen finns på själva disken.
Läs diskcache
Läscacheversionen av en diskcache är sannolikt den minst använda typen av diskcache. Arkivlagring, enligt dess definition, behövs sällan. Data kan också läsas direkt från arkivmedia. Frågan är hastigheten. Åtkomsttiden är långsam eftersom data är offline, vilket kräver att en lämplig lagringsenhet identifieras och ansluts. Läshastigheter beror på arkivmediet men kommer i allmänhet att räcka för de flesta fall. Men det är kanske inte idealiskt för höga bandbreddskrav som högupplöst videovisning. I dessa scenarier kan en läsdiskcache användas för att cachelagra en kopia av videofilen till ett lagringsmedium som kan spela upp den i realtid.
Skriv diskcache
Moderna SSD: er är blixtrande snabba och erbjuder otroligt snabba läs- och skrivhastigheter. Vad du kanske inte inser är att detta inte är tekniskt sant. De flesta SSD-enheter på marknaden är TLC, aka Triple Layer Cells. Detta innebär att varje minnescell kan lagra tre databitar. Även om detta erbjuder tre gånger lagringstätheten för rå SLC (Single Layer Cells) med en bit per cell, är det också mycket långsammare.
Dricks: TLC-blixten är fortfarande snabb. Det är många gånger snabbare än toppbandbredden för SATA 3-bussen som används av hårddiskar och tidiga SSD: er. QLC flash eller Quad Level Cells är ännu långsammare, i vissa tester fungerar de faktiskt långsammare än hårddiskar.
SLC-cachen uppfanns för att dölja de långsamma skrivhastigheterna för användaren. SLC-cache behandlar helt enkelt TLC-blixten som SLC-blixt, vilket gör att den kan arbeta med ökade hastigheter. Data som skrivs till SLC-cachen kopieras sedan internt till TLC-formatet så snabbt som skrivhastigheterna tillåter. Denna teknik fungerar utmärkt och erbjuder ökande hastigheter som har krävt utvecklingen av nya, snabbare standarder.
SLC-cacher har dock några varningar. Storleken på SLC-cachen är 1/3 av det återstående lediga utrymmet på SSD: n. När SSD: n fylls upp minskar SLC-cachens storlek. Detta är inte så mycket av ett problem på stora tomma enheter men kan vara på en SSD med mindre eller nästan kapacitet. När SLC-cachen är fylld ser användaren skrivhastigheterna sjunka dramatiskt när de utsätts för den äkta TLC-skrivhastigheten.
Notera: Tekniskt sett, om data ska skrivas till arkivmedia i framtiden, skulle vilken lagringsdisk som helst kunna betraktas som en skrivcache för arkivmediet. Denna innebörd skulle dock inte generellt antas.
I/O-diskcache
Hårddiskar är i allmänhet ganska långsamma, även i sin optimala arbetsbelastning. För att dölja detta för användaren så mycket som möjligt kan en I/O-cache användas. En I/O-cache cachelagrar både läs- och skrivoperationer efter behov. Denna cache består vanligtvis av antingen Flash-minne eller DRAM i själva enheten. Kapaciteten är generellt sett låg, även om klassen SSHD eller Solid State Hybrid Drive som har Flash-minne erbjuder mer betydande kapacitet men inte jämförbar med modern SSD-kapacitet.
Cachning av läsningar betyder att hårddisken inte behöver hitta och sedan läsa data. Detta kan erbjuda utmärkta prestandafördelar, men endast vid efterföljande läsoperationer. Den första läsningen är alltid långsam. Cachning av skrivningar innebär att små skrivoperationer kan absorberas till cachen och sedan skrivas till den faktiska hårddisken så snabbt som det tillåter. Detta ger högre hastigheter men ser en stor prestandanedgång om cachen någonsin tar slut.
En I/O-cache måste noggrant balansera behoven för både läs- och skrivfunktioner, speciellt när endast en liten cache är tillgänglig. Större cacher förnekar detta problem något, även om kantfodral med stora datamängder fortfarande kan överväldiga flashcachen för de största SSHD: erna.
Notera: SSD: er kan tekniskt sett också använda sitt inbyggda DRAM som en I/O-cache. Detta används dock vanligtvis primärt eller uteslutande för att lagra den logiska till fysiska adressöversättningstabellen som används för att hitta data på SSD: n.
Slutsats
En diskcache är en cache som finns direkt på en lagringsenhet. Det kan ha formen av en läs-eller-skriv-cache eller en I/O-cache. Läs cacher cachar vanligtvis data från långsammare arkivlagring. Skrivcacher döljer de långsamma skrivhastigheterna för lagringsdiskar för användaren. I/O-cacher döljer både långsamma läs- och långsamma skrivhastigheter för användaren.
Cachar är utmärkta användbarhetsverktyg men kan orsaka en del huvudvärk för användare när de är uttömda. Detta gäller särskilt för dynamiska skrivcacher som SLC-cachen. Eftersom icke-tekniska användare kanske inte förstår varför deras skrivhastigheter är så långsamma och därför inte kan fixa dem genom att ta itu med kapacitetsproblem.