Improved-MOESI Cache koherens Protokoll Abstrakt I en multicore, flerkärninga processor med delat minne kan koherens problem förekomma. En lösning till detta är att implementera cache koherens protokoll. Dessa protokoll spelar en viktig roll i processorns prestation. MSI, MESI och MOESI är ett par buss-baserade protokoll som redan finns att tillgå. Dessa skiljer sig huvudsakligen i hur de svarar på busstransaktioner och hur bussens tillståndsövergång. I denna rapport ska jag skriva om och jämföra fyra olika buss-baserade protokoll, de tre befintliga protokollen och även ett nytt protokoll som kallas för Improved-MOESI. Detta protokoll är en förbättrad version av MOESI protokollet. Hesham Altwaijry Diyab S. Alzahrani har gjort en jämförelse mellan dessa protokoll. Där kollar de bl.a på hur ofta primärminnet besöks, antalet writeback skrivningar för de olika protokollen vid cacheline-ersättningar och vid busstransaktioner. Resultaten visar att det nya protokollet presterar bäst av de fyra, när processkärnorna är färre. Inledning Multicore, flerkärniga processorer börjar bli allt vanligare ute på marknaden. En multicore processor ger en högre prestanda, reducerad energiförbrukning och gör multitasking mer effektivt. I en multicore processor kan varje core ha flera minnesplatser, ett primärminne och ett cache minne med flera nivåer. En instruktion eller data kan finnas på flera olika minnesplatser. När denna ändras kan det gamla värdet fortfarande ligga kvar på de andra platserna. Då är det viktigt att skapa koherens mellan de olika minnesplatserna, så att alla kopior av datan har det rätta värdet. Detta problem kan lösas på olika sätt.
Problemet kan lösas i mjukvaran, där man då sätter cacheable och non-cacheable taggar på datan. De data som är till för att endast läsas av är den enda typen av data som är cacheable. Dessa kan då sättas in i lokala cacheminnen medan de andra sätts in i en global cache. Man kan även implementera ett cache koherens protokoll i hårdvaran för att upprätthålla koherens mellan de olika minnesplatserna. Detta kan dock endast ske om cacheminnena använder sig av en gemensam buss. Det finns olika typer av cache koherens protokoll. En typ av cache koherens protokoll är Directory based protokoll. Där är det bara en enda plats som håller koll på vad som ligger i de befintliga cacheminnena och aktiviteten i de olika cacheminnena. Den andra typen är den så kallade Snooping protokollet: Snooping protokollen är den typ som förekommer oftast hos mulitcore processorer, på grund av dess simplicitet. Aktiviteten i cacheminnena kan ses av alla på den gemesamma bussen. Alla cacheminnes-kontrollanter på bussen får ett broadcast meddelande när en minnesrad, cacheline har uppdaterats i multicore processorn. När en minnesrad/cacheline ändras i en av processorkärnorna så skickas en invalidationsignal, ogiltigssignal ut på bussen. När en annan processorkärna vill använda data så måste denna begära den uppdaterade minnesraden från den processorkärna som skickade ut signalen. Det finns två olika typer av snooping prokoll: Write Invalidate- När en data skrivs eller ändras invalideras alla kopior i andra cacheminnen. Write Update- När datan skrivs eller ändras uppdateras datan i alla cacheminnen. Samtliga cache koherens protokoll använder sig av ett av dessa system. Protokollen skiljer sig i hur de svarar på olika händelser som uppmärksammas på bussen. I denna rapport tänker jag först skriva en kort sammanfattning av de tre befintliga MSI,MESI och MOESI protokollen. Sedan tänker jag skriva om ett nytt protokoll som kallas för Improved-MOESI och göra en jämförelse mellan dessa protokoll. Diskussion Det förekommer redan ett antal Cache Koherens protokoll. De protokoll som kommer att tas upp i denna rapport är MSI protokollet, MESI protokollet, MOESI protokollet och den nya Improved-MOESI protokollet, som är en förbättrad version av MOESI protokollet. MSI är ett av de mer simpla protokollen. En minnesrad kan hamna i tre olika tillstånd: modified, shared och invalid. Om en processorkärna har en minnesrad/cacheline som är i tillståndet modified så innebär detta att denna processorkärna är den enda som har denna
minnesrad i sitt cacheminne och att minnesraden i cacheminnet skiljer sig från det som finns i minnet. Shared tillståndet betyder att processorn har cachelinen i sitt cachminne, fast kopior kan förekomma i andra processorers cacheminnen. Kopian som finns i minnet stämmer överens med processorns cache. Invalid tillståndet innebär att cachelinen inte befinner sig i processorkärnans cacheminne. Tillståndsövergångar kan inträffa när processorkärna vill skriva eller läsa från en minnesrad. MESI protokollet är en förbättring av MSI då den har lagt till ett extra tillstånd, Exclusive. Exclusive tillståndet innebär att cachelinen endast förekommer i denna processorkärna och att kopian i minnet stämmer överens med cacheminnet. Fördelen med att ha detta extra tillstånd är att man sparar bus transaktioner. Ett cacheminne kan läsa av data från en minnesrad och skriva direkt till denna utan att först behöva meddela detta till de andra processorkärnorna. Detta är för att cacheminnet vet om att datan inte befinner sig på någon annan plats. Det tredje protokollet är MOESI protokollet som har fem tillstånd, en mer än MESI prtokollet. Det tillagda tillståndet är Owner tillståndet. Målet för detta protokoll är att minska tillträdet till primärminnet. Owner tillståndet innebär att processorkärnan är den som äger datan och den kan nås via just denna processor. Detta betyder att man inte behöver inträda primärminnet om datan finns i någon processorkärnas cacheminne. MESIF protokollet är lik MESI fast detta protokoll har, lik MOESI, ett femte tillstånd, Forward. Detta tillstånd är en specialiserad form av Shared tillståndet. Endast ett av de cacheminnen som delar data med andra cacheminnen kan hamna i detta tillstånd. Om datan begärs av en annan processor så är det detta cacheminnets ansvar att utlämna datan. Den nya Improved-MOESI protokollet är, som tidigare sagt, en förbättrad version av MOESI protokollet. Den ärver egenskaper från både MOESI och MESIF protokollet. Anledningen till att man inte ändrat namnet på Improved-MOESI protokollet är för att den har samma namn på sina olika tillstånd som MOESI. Det som skiljer dem åt är hur tillstånden fungerar. Det är Owner tillståndet i Improved-MOESI som skiljer sig från owner tillståndet i den klassiska MOESI protokollet. En processor cache som är i en owner state har tillåtelse att dela med sig data till en annan processorkärna, vid efterfrågan. Cachenminnet som efterfrågar datan behöver därför inte vänta tills datan har skrivits till primärminnet. Detta system reducerar trafiken till och från primärminnet och ledder till att data kan fås snabbare. Det är bara det cacheminnet, som ligger i owner tillståndet, som kan dela med sig datan. Detta betyder att bustrafiken kommer att minska, bandbredden sparas och prestandan kommer att öka. Konceptet som har tillämpats i detta protokoll, är den som säger att en resurs, som har refererats till en gång i tiden, kommer att refereras till igen inom en snar framtid. Därför har man möjliggjort för andra cache minnen att ge ut data, fastän de inte är i en owner tillstånd för cachelinen. Den nya kopian och cacheminnet kommer då istället att ta över owner tillstånd rollen.
Tillståndsgraf till Improved-MOESI Hesham Altwaijry och Diyab S. Alzahrani har jämfört de olika protokollernas tendens till write back när en cache ersätts, write back som orsakas vid observationer av busstransaktioner av en cache kontrollant och hur ofta primärminnet besöks vid behöv av en cacheline. Writeback vid cacheline ersättning förekommer när en write eller read operation misslyckas och då cachelinen ligger i en modified tillstånd. Writeback som orsakas av busstransaktioner sker när en busstransaktion observeras av en cache kontrollant. Ju fler writeback skrivingar desto sämre blir systemets prestanda. Primärminnet besöks varje gång datan inte kan hittas i någon cache eller när det inte finns någon processor som kan dela med sig datan. Fördröjningstiden leder till en sämre prestanda. I resultatet, som Hesham Altwaijry och Diyab S. Alzahrani presenterar, kan man se att writeback skrivingarna för Improved-MOESI protokollet minskar när antalet processorkärnor ökar. Detta betyder att varje processor arbetar med en mindre mängd av data, den uppvisar dock inte en låg kommunikation mellan cacheminnena. Detta betyder att antalet konflikter per cacheminne minskar. Ändå är resultatet en aning sämre än MESI och MSI protokollen. Man kan även se att antalet writeback skrivningar vid observationer av busstransaktioner är färre för Improved-MOESI protokollet jämfört med de andra protokollen. Antalet skrivingar ökar dock när antalet processorer ökar.
Primärminnet besöks mer sällan i Improved-MOESI, MOESI och MESI protokollen. Sämst resultat hade MSI protokollet. Resultatet blir ännu bättre för de tre protokollen när processorkärnorna ökar. Hesham Altwaijry och Diyab S. Alzahrani jämför även antalet gånger primärminnet besöks vid writeback, för de olika protokollen. MESI och MSI protokollen har liknande resultat fast sämre än MOESI protokollet. Improved-MOESI protokollet har minst antal besök. Men även här försämras resultatet för Improved-MOESI vid en ökning av processorer. Sedan undersöker de antalet gånger primärminnet besöks för både write back och vid cacheline kopiering. Improved-MOESI har bäst resultat även här, för fyra processorkärnor. Resultatet blir dock sämre för Improved-MOESI när antalet processorkärnor ökar. Vi kan se, baserat på Hesham Altwaijry och Diyab S. Alzahranis resultat, att cache koherens protokollet spelar en viktig roll i prestandandan för en multiprocessor med delat minne. Protokollet har en direkt inverkan på mängden trafik som genereras av processor förfrågningar. Resultatet visar även att Improved-MOESI protokollets övergripande prestation, när det gäller färre antal processorer, är bättre än MSI,MESI och MOESI protokollen. Referenser - Ulfsnes, R 2013, 'Design of a Snoop Filter for Snoop Based Cache Coherency Protocols', Networked Digital Library of Theses & Dissertations, EBSCOhost, viewed 7 December 2015 - Altwaijry, H, & Alzahrani, D n.d., 'Improved-MOESI Cache Coherence Protocol', Arabian Journal For Science And Engineering, 39, 4, pp. 2739-2748, Science Citation Index, EBSCOhost, viewed 7 December 2015.