Hvad er falsk deling?
Falsk deling er en situation, der kan forekomme i et computerprogram, når to applikationer, der kører samtidigt, forsøger at få adgang til oplysninger i det samme logiske hukommelsesområde, som hvert program eller proces har gemt i sin egen cache. Dataene i hver applikations cache kopieres fra en fælles kilde, så ændring af den ene cache får den anden til at blive genindlæst fra kilden. Det falske aspekt af delingen opstår, når ændringerne, der er foretaget i cache-linjen af et program, faktisk ikke påvirker de data, som det andet program bruger, i hvilket tilfælde at tvinge cachen, der skal indlæses, er spild af systemressourcer og kan negativt påvirke programmets ydeevne. Problemet med falsk deling er svært at opdage, fordi det ikke er et direkte resultat af nogen kode indeholdt i applikationerne, selvom der er effektive måder at forhindre falsk deling, såsom at flytte data, der er i en aktuelt cache-linje til en separat linje .
En af de primære årsager til, at falsk deling kan forekomme, findes i, hvordan et operativsystem eller hardware håndterer læsning og skrivning af data. Når oplysninger fra en harddisk eller anden kilde læses eller skrives af et program, indlæses de normalt i en midlertidig cache, så den kan fås hurtig adgang. Mængden af information, der er cache fra kildeplaceringen kaldes en cache-linje og er en logisk blok af hukommelse, der normalt kan være mellem 2 byte og 256 byte i længden. Under nogle operativsystemer eller systemarkitekturer er programmer i stand til at køre på samme tid, f.eks. Ved parallel behandling. Dette betyder, at det er muligt for to separate programmer at forsøge at få adgang til oplysninger i den samme cache-linje, så hvert program vil have sin egen kopi af kildedataene, hvilket potentielt kan forårsage ændringer i den ene cache, der ikke reflekteres i den anden cache, hvilket ugyldiggør data, den har.
Der er en række mekanismer, der bruges til at håndtere situationen, når to programmer forsøger at få adgang til den samme cache-linje, men resultatet er oftest, at det ene program bliver tvunget til at genindlæse sin cache med de opdaterede oplysninger, som det andet program har ændret. Denne type hændelse er kendt som falsk deling, når dataene i cache-linjen, som hvert program åbner, ikke er relateret, så at tvinge et program til at indlæse cachen igen er spild af processorkraft og andre ressourcer. Dette er ofte et problem for et program, der aldrig vil ændre informationen i dens cache, så der er ingen risiko for, at applikationsoverskrivelsen ændres den anden proces har foretaget.
To almindelige måder findes enten til at forhindre eller afbøde virkningerne af falsk deling. Den første er at tilføje blank information før eller efter dataene i hukommelsen, hvilket i det væsentlige tvinger dem til en separat cache-linje, som ikke er adgang til et andet program. Den anden metode er at begrænse hyppigheden af læsning og skrivning til cache-linjen, så den indlæses så lidt som muligt. Mere komplekse løsninger involverer styring af cache-niveau eller endda ændringer i, hvordan et operativsystem håndterer deling.