En minneskonsistensmodell anger vilka som skriver till delat minne en given läsning kan se. Oförklarliga eller fel i dessa specifikationer kan leda till fel i både kompilatorer och program. Ändå arkitekturer brukar definiera sina minnesmodeller med prosa och litmus tester-små samtidiga program som visar tillåtna och förbjudna utfall. Det senaste arbetet har formaliserat minnesmodellerna för gemensamma arkitekturer genom omfattande manuella insatser, men när nya arkitekturer dyker upp finns det ett växande behov av verktyg för att hjälpa dessa ansträngningar. I detta dokument presenteras MemSynth, ett syntesstödd system för resonemang om axiomatiska specifikationer av minnesmodeller. MemSynth tar som ingång en uppsättning av litmus tester och en ram skiss som definierar en klass av minnesmodeller. Skissen består av en uppsättning axiom med saknade uttryck (eller hål). Med tanke på dessa ingångar, syntetiserar MemSynth ett slutförande av axioms-dvs, en minnesmodell-som ger önskat resultat på alla tester. MemSynth motorn använder en ny inbäddning av avgränsad relationslogik i ett lösar-stödd programmeringsspråk, som gör det möjligt att ta itu med komplexa syntesfrågor som är svåråtkomliga för befintliga relationslösare. Denna design gör det också möjligt att lösa nya typer av frågor, t.ex. kontrollera om en uppsättning litmustester entydigt definierar en minnesmodell inom en ramskiss. Vi visar att MemSynth kan syntetisera specifikationer för x86 på under två sekunder, och för PowerPC på 12 sekunder från 768 litmus tester. Vår tvetydighetskontroll identifierar saknade tester från både Intel x86-dokumentationen och valideringssviten för en tidigare PowerPC-formalisering. Vi använde även MemSynth för att reproducera, felsöka och automatiskt reparera ett papper om att jämföra minnesmodeller på bara två dagar.
Bornholt och Torlaks MemSynth REF kan syntetisera axiomatiska minnesmodeller från uppsättningar av litmustester.
Synthesizing memory models from framework sketches and Litmus tests
{'venue': 'PLDI 2017', 'journal': None, 'mag_field_of_study': ['Computer Science']}