MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16

Relevanta dokument
MESI protokollet och dess derivater

MESI i Intel Core 2 Duo

Rapport (1,5 HP) Lunds Universitet HT15

Cache coherence hos multicoreprocessorer

Cache-koherens protokoll MESI och MOSI

Improved-MOESI Cache koherens Protokoll

MESI-protokollets funktion i multiprocessorer

Cacheminne i en Intel Core 2 Duo-processor

Snapdragon 810: Cacheminnet

Jämförelse av skrivtekniker till cacheminne

Datorarkitekturer med Operativsystem

Cacheminne i en AMD Opteron Processor

En överblick på cachedesignen i Intels mikroarkitektur Nehalem

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Cacheminne Intel Core i7

SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR

Datorsystemteknik för E/D

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

Öka prestanda i Shared-Cache multi-core processorer

Tentamen den 17 mars 2016 Datorteknik, EIT070

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Datorsystem. Tentamen

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Hantering av hazards i multi-pipelines

Föreläsningsanteckningar 5. Cacheminnen

Schemaläggnings metoderna AMP & SMP i en Multiprocessor

Tentamen den 18 mars svar Datorteknik, EIT070

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Hantering av hazards i pipelines

Pipelining i Intel 80486

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Minnet från processorns sida Datorteknik

Hyper-Threading i Intelprocessorer

Processor pipelining genom historien (Intel i9-intel i7)

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Datorsystem. Tentamen

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Hantering av begränsat antal skrivningar på Solid State diskar

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

What Is Hyper-Threading and How Does It Improve Performance

Parallellism i NVIDIAs Fermi GPU

Dugga 1 status 41 godkända 39 ej godkända ERIK LARSSON

Mer datorarkitektur. En titt I datorn Minnen

CE_O5. Cacheminne. Hemlaboration 2.

Datorsystem. Tentamen

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Lathund för spel med karta

Datorarkitekturer med operativsystem ERIK LARSSON

Prestandajämförelse - Sekventiell skrivhastighet i RAID 4 och RAID 5

Komma över Memory wall med 3D stacked minne LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Att köpa ny dator SeniorNet Lidingö Februari-2019

CE_O8. Cacheminne. Hemlaboration 2.

Distribuerade affärssystem

Datorarkitekturer med operativsystem ERIK LARSSON

Digitala System: Datorteknik ERIK LARSSON

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Lokal pedagogisk planering i matematik för årskurs 9

Genetisk programmering i Othello

Datorhårdvaruteknik 1DV426 - Seminarie 1

COBOL. från grunden. monitors. Peter Sterwe. training people

TSEA28 Datorteknik Y (och U)

HF0010. Introduktionskurs i datateknik 1,5 hp

Föreläsning 5: Stora datanät Från användare till användare ARP

Operativsystem (IS1350) :00-12:00

*Pekarvärden *Pekarvariabler & *

Data på disk är en teknisk lösning i Capitex Säljstöd som gör att viss information ej sparas i databasen utan direkt på serverns hårddisk.

Datorteknik ERIK LARSSON

Datorsystem. Exempeltentamen

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Filöverföring i Windowsmiljö

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Digitalteknik och Datorarkitektur 5hp

TDDC76 - Programmering och Datastrukturer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Aktivitetsschemaläggning för flerkärninga processorer

Föreläsning 5: ARP (hur hitta MAC-adress) Från applikation till applikation

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

TDDC77 Objektorienterad Programmering

SIMD i Intel s P5- baserade Pentium MMX

Steg-för-steg omställning i CashGuard

Trådar. Aktiva objekt

DIG IN TO Administration av nätverk- och serverutrustning

Instruktion för användande av Citrix MetaFrame

Rensa cache-minnet hos din webbläsare

Titel Mall för Examensarbeten (Arial 28/30 point size, bold)

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Versionshantering med Git

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Pipelining i Intel Pentium II

TSEA28 Datorteknik Y (och U)

Modbus över Ethernet. WAGO Contact SA TSS STR

Transkript:

MESI-Protokollet Richard Elvhammar Lund Universitet 4/12-16

Abstract För att ett system snabbt ska kunna hantera information så används, å sidan åt primärminnet och sekundärminnet, ett cacheminne. I modern tid så förbättras inte exekveringstiden av bättre processor på grund av fysiska begränsningar, av detta så har multicore processor blivit allt vanligare med fler och fler processorer. Systemet använder sig då också av flera cacheminnen som kräver någon sorts form av sammanhållning. I denna rapporten presenteras definitionerna för när cacheminnena har en sammanhållning och hur MESI-protokollet uppfyller dessa. I rapporten presenteras även nackdelen med användning av MESI-protokollet och hur ett alternativt protokoll kallat MOESI åtgärdar det. Inledning När ett datorsystem ska hämta data så används ett bland annat ett cachesystem vilket är ett relativt mindre och snabbare minne som temporärt lagrar en viss mängd data från primärminnet. Under tidens gång så har datorsystem utvecklats med multicore processer som kan hantera instruktioner parallellt, detta innebär oftast att även multipla cacheminnen används. Problem Med ny teknik uppstår nästan alltid med nya möjligheter, men också nya hinder. Ett av dessa problem som uppstår när multipla cacheminnen används är att data i ett cacheminne kan vara utdaterat. Säg att en klient kopierar data från primärminnet till sitt cacheminne. Om det sedan är en annan klient som kopierar samma data och gör en beräkning som ändrar på data, då kommer data i den första klientens cache vara utdaterad. Det är till sådana problem ett MESIprotokoll används för att lösa problematiken. Diskussion/Lösning 1 Lösningen på problemet är att på något sätt få ett cache sammanhang, med andra ord att olika cacheminnen ska kunna kommunicera med varandra. Om en klient ändrar data i sitt

cacheminne så måste det informeras till andra klienters cacheminnen. Cache sammanhanget erhåller ifall följande krav uppfylls: Om processor A läser från cache X och sedan försöker skriva till samma cache, med inga andra processorer som gör någon påverkan emellan, så skall X alltid returnera det som skrevs från processor A. Om en annan process skriver över värdet i cache X innan process A läser värdet så skall det nya värdet returneras till process A. Om fler processer skriver över ett värde på samma plats i ett cacheminne så måste det ske i sekvenser och skrivas över i ordning. ^1 2 Data som hämtas från primärminnet till ett cacheminne sparas i så kallade cache line. En cache line innehåller enligt Intels standard en 64 byte av själva datan. I ett system som använder sig av MESI-protokollet så är cache line utökat med en state som främst beskriver om själva datan är giltig eller ogiltig samt hur data i ett cacheminne förhåller sig till andra minnen. State kan anta fyra olika tillstånd: Invalid, Modified, Exclusive eller Shared och de beskriver datan på följande sätt: Invalid Under tillståndet Invalid så är data i cache line ogiltig och kan ej användas. Modified Detta tillstånd indikerar att datan är den enda giltiga versionen och det inkluderar även att data i primärminnet. Om en kärna gör en uträkning som ändrar på data och lägger det i sitt cacheminne så kommer det vara den enda plats som har giltigt data vilket även inkluderar primärminnet. Data måste då under något tillfälle skriva den giltiga datan till primärminnet. Exclusive Likt Modified så indikerar detta tillståndet att data är den enda bland cacheminnena. Dock är datan i primärminnet densamma. Shared Detta sista tillstånd indikerar att det finns fler kopior av data i andra cacheminnen samt att det är samma som data i primärminnet. De olika stadier ändras beror på dels av vad det tidigare stadiet var, om en kärna ska läsa in data eller skriva ny från ett cache block samt om en kärna kommunicerar med sitt egna cacheminne (local request) eller ett annat cacheminne (remote request).^2 Local Request:

Om en kärna läser en cache line som är i stadiet Invalid så kommer inte datan att användas, det innebär även att det kan sparas ny data i dess plats. När ny data skrivs över från primärminnet i cacheminnet så kommer transaktionen alltid att övergå antingen till tillstånd Exclusive om det inte finns andra kopior av datan i andra cacheminne eller Shared ifall det finns fler kopior i andra cacheminnen. I fallen Exclusive och Shared så ändras inte state om en kärna läser in data eftersom det inte påverkar andra minnen. Om cache line är i tillstånd Modified så kan kärnan båda läsa och skriva data utan att tillståndet ändras. Detta är därför att om uppdaterad data skrivs till ett cacheminne så är det den enda uppdaterade datan i systemet och skall då enligt MESI-Protokollet vara i tillstånd Modified. Av samma anledning så övergår det till Modified även om det överskrivna tillståndet är något av de andra tre stadierna, det finns dock ändå skillnader på hur transaktionen hanteras. Om en cache line som är inställd på Exclusive state skrivs över så behövs det inte skickas några meddelanden till andra cacheminnen eftersom Exclusive innebär att det inte finns kopior av datan. Däremot om cache line från början är på tillstånd Shared så måste ett meddelande skicka till de cacheminnen med kopior att datan är ogiltig och ska därför ställas in på Invalid. ^2 Remote Request: Om en process hanterar en cache line från ett annat cacheminne som är i stadie Invalid så ändras inte stadiet i kärnans egna cacheminne oavsett om denna försöker skriva eller läsa datan. Eftersom själva datan som behandlas är ogiltig och inte kan användas, då sker alltså ingen transaktion mellan de båda cacheminnena. Om cache line istället är i state Exclusive och en kärna försöker läsa data från det andra cacheminnet så måste tillståndet ändras till Shared eftersom data inte längre är exklusivt till ett cacheminne. Vid skrivning av data med samma tillstånd så måste cache line i de andra cacheminnena bli Invalid. Även med remote request agerar Exclusive och Shared likt varandra. Om en process läser data från ett främmande cacheminne så kommer tillståndet vara det samma, alltså om tillstånd först är Shared så kommer det förbli Shared. Samma gäller även om data modifieras så måste andra cache line i andra cacheminnen bli Invalid. Slutligen om data läses från en cache line i state Modified så kommer detta att ändras till Shared av samma anledning som i local request, samt sker även en write-back till primärminnet eftersom det måste vara samma enligt tillståndet definition. Även när data ska skrivas över så sker det på samma sätt som de andra tre, alltså att tillståndet i andra cacheminnen skall ändras till Invalid. ^2 En av nackdelarna med MESI-protokollet är att varje gång data modifieras och delas till andra cacheminnen så måste datan skickas till primärminnet. Om systemet exempelvis gör en uträkning som ändrar en variabel flera gånger så behövs inte data skrivas över till primärminnet varje gång variabeln ändras. Ett liknade alternativ till MESI är det så kallade MOESI-protokollet som löser detta problemet. MOESI är i princip likadan som MESI fast med ett ytterligare tillstånd, Owned. Owned fungerar

på samma sätt som Shared men ger tillåtelse att kopiera över datan till andra cacheminne utan att varje gång kopiera till primärminnet, i slutändan kommer dock data behövas skickas till primärminnet. När data tillslut skickas till primärminnet så kommer tillståndet ändras till Shared (om ingen cache är i stadiet Owned så är det en indikation på att datan i primärminnet är aktuell). Precis som i Shared så ändras inte stadiet ifall en process läser från en cache line i tillstånd Owned. Om en process istället skriver över data så kan två saker ske beroende på om andra processer är i behov av datan. Antingen övergår state till Modified och andra processer ändrar sin cache line till Invalid, vilket innebär att andra processer inte kommer använda data, alternativt ändras inte tillstånden och data i andra cacheminnen uppdateras. ^3 Referenser Bilder: (1) Neupane, Mahesh. (2004). Cache Coherence, University of California, pp. 2 (2) Neupane, Mahesh. (2004). Cache Coherence, University of California, pp. 8-9 (3) AMD, (2016). AMD64 Architecture Programmer s Manual, AMD64 techdoc, pp.221-222 1: https://commons.wikimedia.org/wiki/file:cache_coherency_generic.png 2: https://www.youtube.com/watch?v=-p9tfmmu1pe 0:20