Vad är cachadata? Kommer det att orsaka några problem om vi rensar cachad data?

Bästa svaret

Tack för (flera) A2A.

Cachad data är några data din dator / telefon / vad som helst som en gång fungerade väldigt hårt för (laddad över ett potentiellt långsamt nätverk, eller var tvungen att använda mycket CPU på eller till och med var tvungen att läsa från disken). Det lagras någonstans snabbare än vad som användes för att få / skapa det först. Så om en fil på din disk är cachelagrad cachelagras den inte på din disk, den cachas i ditt minne. Om en fil från nätverket är cachad kan den cachas i minnet eller på din disk (eller båda).

Datorer har många olika cacheminnen. Massor . Även saker som du kanske tänker på som ”snabba” som RAM på din dator är faktiskt tillräckligt långsam för att din CPU har en cache för RAM-värden. Program har ofta flera cachar för olika saker. Operativsystemet cachelagrar diskfiler i RAM och tillhandahåller ofta saker som cachar webbsidor i RAM och / eller disk.

Alla cachade data ”borde” vara något som kan skapas eller hämtas igen. I vissa fall kan det faktiskt inte, till exempel om du har en bild från en webbsida cachad och av någon anledning rensas cachen när du inte har något nätverk, du kan inte få den bilden tillbaka förrän nätverket kommer tillbaka … eller hemsidan kan ha ändrats, i vilket fall värdet aldrig kan komma tillbaka.

Vissa cacher har inbyggda metoder för att förhindra att de blir inaktuella (som om en webbplats ändrar en bild varje dag så gör du inte vill titta på förra månadens bild bara för att den är ”snabbare”). Detta är faktiskt ett av de svårare problemen inom datavetenskap (cache-ogiltigförklaring). Det finns massor av policyer. Några vanliga är ”kasta bort gamla saker”, ”fråga webbplatsen / filsystemet / vad som helst om saken har förändrats” och en personlig favorit ”vem bryr sig”.

Så ”i teorin” kastar bort kan ett cache inte orsaka problem … och kan inte heller fixa ett. Förutom i den verkliga världen kan cache-ogiltighetspolicyn vara fel, och gamla data är cachade och nu inaktuella, och rensning av cache kommer att fixa det (woot!). I den verkliga världen kan data också vara ”nu inaktuella” men kan för närvarande inte hämtas, så att rensa cacheminnet kommer att avslöja ett problem (boo!).

Att rensa en cache kommer också att få saker att vara långsammare medan saker som en gång var i cachen och du behöver igen beräknas / hämtas / vad som helst igen.

Svar

På din dator 🙂

cachen är en hårdvara, även känd som SRAM (statisk ram). Det har extremt bra prestanda. Detta kostar dock en kostnad. Bokstavligen. En kostnad som i många $$$ eftersom SRAM också är extremt dyrt. Om våra datorer bestod av helt SRAM skulle de vara otroligt dyra. Som så mycket att ingen skulle ha råd med dem. Så vi kan se varför vi vill använda SRAM (det fungerar väsentligt bättre än DRAM eller diskutrymme), men om det är så dyrt varför skulle vi använda det? Det är opraktiskt dyrt?

Ja, det är det. Men några smarta ingenjörer tänkte på en kompromiss. Vad händer om majoriteten av datorarkitekturen fortfarande består av DRAM och diskutrymme (för att göra det överkomligt), men för att fortfarande behålla prestanda som håller konsumenterna nöjda, tänk om allt vi behövde var en liten liten bit SRAM för att påskynda vår datorprestanda MYCKET. Nyckelord: ”liten sliver”

Så var används ”LRU-cache”? Det finns egentligen inte en sak i sig som kallas ”LRU-cache”. Moderna cachar, som du kan tänka på som våra små bitar av SRAM, har inte oändligt utrymme för att hålla data, och om du är en typisk konsument som surfar på nätet, ständigt går från webbsida till webbsida, plattform till plattform, data Omsättningen på din dator kommer att bli väldigt hög.

Så hur kan vi använda denna ”lilla bit” av SRAM när vår dataomsättning tenderar att vara så hög? Vad vi gör är att vi bestämmer vilka datadelar vi mest troligt kommer att använda igen, och vi försöker vårt bästa för att hålla dessa datadelar inom vår lilla bit av SRAM (vårt cache) så nästa gång vi behöver tillgång till en gemensam data kan din dator få åtkomst till den informationen mycket snabbt eftersom den hålls i den här delen av SRAM. Och hur bestämmer vi exakt vad vi ska behålla och vad vi inte ska behålla? Det är just här begreppet ”LRU-cache” kommer in. Det finns många olika cache-layouter som används av olika skäl (helt associativa, set-associativa, direkt mappade osv.) De har alla sina fördelar / nackdelar, men de flesta vanligt sätt att ditt operativsystem bestämmer vilka datadelar som ska sparas i SRAM och vad du ska kasta är att titta på de data som har nås senast. Det är vettigt, eller hur? Om du bara klickade på något, och du klickade på det dagen innan det, och dagen innan det, och dagen innan det, etc …. Det är antagligen vettigt att behålla den informationen i SRAM så nästa gång du klickar på den, BOOM, drar den upp i hjärtslag. Men hur är det med någon webbplats som du klickade på för tre månader sedan och inte har gjort det sedan dess?När din dataomsättning fortsätter att växa, kommer ditt operativsystem vid en viss tidpunkt att behöva bestämma vad det behöver för att sparka ut från SRAM och det kommer att säga att den här webbplatsen inte har klickats på på tre månader? Det här är den senast använda informationen i vår cache, så låt oss sparka ut det.

Cachen är en maskinvara som kallas SRAM och har mycket bra prestanda. LRU-bortkastningsalgoritmen är hur ditt operativsystem bestämmer vilka bitar av data som ska förvaras och kastas bort från den värdefulla SRAM.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *