Vad är cachekoherens?
Cache-koherens är det naturliga problemet som utvecklas när ett systems datauppsättning nås och ändras av flera agenter. Det primära området för datorarkitektur där detta blir ett problem är i multiprocessor-datorer. Varje processor i en multiprocessordator har sin egen cache som laddar och lagrar information från RAM-minnet (random access). När två processorer har åtkomst till samma minnesområde skulle cachekoherensen gå förlorad om vissa försiktighetsåtgärder inte togs.
Utan cachekoherens skulle ett multiprocessorsystem inte kunna fungera. Det finns flera metoder som har utvecklats för att lösa problemet och undvika potentiella problem. Katalogbaserad koherens, snooping och snarfing är tre metoder som används för att förhindra förlust av cachekoherens.
Katalogbaserad koherens fungerar som ett filter för att säkerställa koherens. Data placeras i en del av minnet som är tillgängligt för alla processorer. När informationen som lagras inom det minnesområdet ändras uppdaterar systemet antingen cacharna eller inaktiverar dem.
Snooping kräver att processorn övervakar alla åtkomst till minnesplatserna som har cachelagts. Detta gör det möjligt för processorn att veta när en skrivoperation har inträffat. Genom att veta när en skrivoperation inträffar kan processorn uppdatera sin cache.
Snarfing liknar snooping. Snarfing involverar inte bara övervakningen av åtkomst till minnesplatser som har cachelagts utan också övervaka den faktiska informationen som lagras i minnet. När en minnesskrivning inträffar kan cachen uppdateras med den nya informationen.
Katalogbaserade koherenssystem har en relativt hög latens, vilket resulterar i långsammare bearbetning. Lägre krav på bandbredd gör det möjligt för katalogbaserade koherenssystem att vara praktiska i storskaliga applikationer av cachekoherens. Ju fler processorer ett system använder, desto fler fördelar kan det ha genom att använda ett katalogbaserat sammanhållningssystem.
Snooping är en mycket snabbare metod. Den här metoden kräver mer bandbredd än den katalogbaserade metoden. Denna metod kan användas effektivt i system som har relativt få processorer.
Snarfing används vanligtvis inte som en metod för att upprätthålla cachekoherensen. Detta beror främst på att snarfing kräver mer resurser för att användas jämfört med både snooping och katalogbaserade metoder. För att ett snarfing-system ska fungera måste det hålla reda på både minnesadresserna och data lagrade i de minnesområdena. Mängden bandbredd och bearbetning som tas upp med denna metod gör det oönskat för de flesta tillämpningar för att upprätthålla cache-koherens.