Vad är falsk delning?
Falsdelning är en situation som kan uppstå i ett datorprogram när två program som körs samtidigt försöker få tillgång till information i samma logiska minnesregion som varje program eller process har lagrat i sin egen cache. Uppgifterna i varje applikations cache kopieras från en vanlig källa, så att ändra en cache gör att den andra måste laddas om från källan. Den falska aspekten av delningen uppstår när ändringarna som gjorts i cachelinjen av ett program inte faktiskt påverkar data som det andra programmet använder, i vilket fall att tvinga cache att laddas om är ett slöseri med systemresurser och kan negativt påverka programmets prestanda. Problemet med falsk delning är svårt att upptäcka eftersom det inte är ett direkt resultat av någon kod som finns i applikationerna, även om det finns effektiva sätt att förhindra falsk delning, som att flytta data som finns i en cache-rad för närvarande till en separat rad .
En av de främsta orsakerna till att falsk delning kan uppstå finns i hur ett operativsystem eller hårdvara hanterar läsning och skrivning av data. När information från en hårddisk eller annan källa läses eller skrivs av ett program laddas den vanligtvis i en tillfällig cache så att den går åt snabbt. Mängden information som cachelagras från källplatsen kallas en cachelinje och är ett logiskt minnesblock som normalt kan vara mellan 2 byte och 256 byte i längd. Under vissa operativsystem eller systemarkitekturer kan program köras samtidigt, t.ex. vid parallellbehandling. Detta innebär att det är möjligt för två separata program att försöka få tillgång till information i samma cachelinje, så varje program kommer att ha sin egen kopia av källdata, vilket potentiellt kan orsaka förändringar i en cache att inte återspeglas i den andra cachen, vilket ogiltigför data den har.
Det finns ett antal mekanismer som används för att hantera situationen när två program försöker få åtkomst till samma cachelinje, men resultatet är oftast att ett program tvingas ladda om sin cache med den uppdaterade informationen som det andra programmet har modifierat. Denna typ av händelse kallas falsk delning när data inom cachelinjen som varje program har åtkomst inte är relaterade, så att tvinga ett program att ladda om cachen är slöseri med processorkraft och andra resurser. Detta är oftast ett problem för ett program som aldrig kommer att ändra informationen i sin cache, så det finns ingen risk för att applikationsöverskrivningen ändras den andra processen har gjort.
Det finns två vanliga sätt att antingen förhindra eller mildra effekterna av falsk delning. Den första är att lägga till tom information före eller efter data i minnet, i huvudsak att tvinga den till en separat cachelinje som inte nås av ett annat program. Den andra metoden är att begränsa frekvensen för läsning och skrivning till cachelinjen så att den laddas så lite som möjligt. Mer komplexa lösningar innebär hantering av cache-nivå eller till och med ändringar i hur ett operativsystem hanterar delning.