Moderna arkitekturer implementerar avslappnade minnesmodeller som kan omordna minnesoperationer eller utföra dem icke-atomiskt. Särskilda instruktioner som kallas minnesstängsel ges, vilket tillåter kontroll av detta beteende. För att implementera en samtidig algoritm för en modern arkitektur, programmeraren tvingas manuellt resonera om subtila avslappnade beteenden och räkna ut sätt att kontrollera dessa beteenden genom att lägga till staket till programmet. Denna process är inte bara tidskrävande och felbenägen, utan den måste upprepas varje gång genomförandet anpassas till en annan arkitektur. I det här dokumentet presenterar vi det första skalbara ramverket för hantering av samtidiga algoritmer i verkligheten som körs på avslappnade arkitekturer. Med tanke på ett parallellt C-program, en säkerhetsspecifikation och en beskrivning av minnesmodellen testar vårt ramverk programmet på minnesmodellen för att avslöja överträdelser av specifikationen, och syntetiserar en uppsättning nödvändiga orderbegränsningar som förhindrar dessa överträdelser. Beställningsbegränsningarna realiseras sedan som ytterligare staket i programmet. Vi implementerade vårt tillvägagångssätt i ett verktyg som kallas DFENCE baserat på LLVM och använde det för att dra slutsatser om staket i ett antal samtidiga algoritmer. Med hjälp av DFENCE utför vi den första fördjupade studien av interaktionen mellan stängsel i realtid samtidiga C-program, korrekthetskriterier såsom sekventiell konsekvens och linjärisering, och minnesmodeller som TSO och PSO, vilket ger många intressanta observationer. Vi tror att detta är det första verktyget som kan hantera program på skalan och komplexiteten hos en låsfri minnesallokator.
Ett annat exempel är verktyget DFence REF som implementerar en teknik som, med tanke på ett C-program, en säkerhetsfastighet och en minnesmodell (Tso eller Pso), kontrollerar för brott mot egendomen och infer staket för att begränsa problematiska omordningar orsakar överträdelser.
Dynamic synthesis for relaxed memory models
{'venue': "PLDI '12", 'journal': None, 'mag_field_of_study': ['Computer Science']}