Wat is cache coherency?
De bedoeling is dat dezelfde data niet tegelijkertijd door beide cpu’s bewerkt wordt en teruggeschreven naar het geheugen, want wt is vervolgens de juiste data? Om zulke data corruptie te voorkomen is het noodzakelijk dat beide cpu’s van elkaar weten wat ze uitspoken en welke data er in hun cache’s staat. Als cpu0 een datablok (cacheline) bewerkt wat toevallig ook in het cache staat van cpu1 wordt de data in cpu1’s cache ongeldig verklaard en kan cpu1 er niks meer mee, tevens kan cpu1 de data niet uit het geheugen halen, want deze is ook ongeldig verklaart totdat cpu0 klaar is met de bewerking en de bewerkte data heeft teruggeschreven naar het geheugen, dan pas kan cpu1 de data opnieuw inlezen en er mee doe wat ‘ie er mee wil doen (een performance penalty dus). In feite worden er verschillende statussen gegeven aan de data, hier het MESI protocol: Modified: alleen de data in dit cache is geldig, de overe lokaties (geheugen en de cache v.d. andere cpu) zijn ongeldig Exclusive: geen ande