Vad är falsk delning?

Falsk delning är en situation som kan uppstå i ett datorprogram när två applikationer som körs samtidigt försöker komma åt information i samma logiska minnesområde som varje program eller process har lagrat i sin egen cache. Data i varje applikations cache kopieras från en gemensam källa, så modifiering av en cache gör att den andra måste laddas om från källan. Den falska aspekten av delning uppstår när ändringarna som görs i cache-raden av ett program faktiskt inte påverkar data som det andra programmet använder, i vilket fall att tvinga cachen att laddas om är ett slöseri med systemresurser och kan påverka negativt 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 för närvarande cachad rad till en separat rad .

En av de främsta anledningarna till att falsk delning kan uppstå finns i hur ett operativsystem eller hårdvara hanterar att läsa och skriva data. När information från en hårddisk eller annan källa läses eller skrivs av ett program, läses den vanligtvis in i en tillfällig cache så att den kan nås snabbt. Mängden information som cachelagras från källplatsen kallas en cache-linje och är ett logiskt minnesblock som normalt kan vara mellan 2 byte och 256 byte långt. Under vissa operativsystem eller systemarkitekturer kan program köras samtidigt, till exempel i parallell bearbetning. Detta innebär att det är möjligt för två separata program att försöka komma åt information i samma cache-rad, så varje program kommer att ha sin egen kopia av källdata, vilket potentiellt kan orsaka att ändringar i en cache inte återspeglas i den andra cachen, vilket gör att data den innehåller.

Det finns ett antal mekanismer som används för att hantera situationen när två program försöker komma åt samma cache-rad, men resultatet blir oftast att ett program tvingas ladda om sin cache med den uppdaterade informationen som det andra programmet har ändrat. Denna typ av incident är känd som falsk delning när data inom cache-raden som varje program har tillgång till inte är relaterade, så att tvinga ett program att ladda om cachen är ett 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 applikationen skriver över ändringar som 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, vilket i huvudsak tvingar in den i en separat cache-rad som inte nås av ett annat program. Den andra metoden är att begränsa frekvensen för läsning och skrivning till cache-raden så att den laddas om så lite som möjligt. Mer komplexa lösningar involverar cache-nivåhantering eller till och med ändringar av hur ett operativsystem hanterar delning.