Abstrakt. Programvarutransaktionsminne (STM) kompilatorer vanligtvis instrumentminne åtkomster genom att omvandla dem till samtal till STM bibliotek funktioner. Detta instrument gör det naivt att införa stora omkostnader, vilket saktar ner genomförandet av transaktionen. Många kompilatoroptimeringar har föreslagits i ett försök att sänka denna overhead. I detta papper försöker vi driva STM overhead lägre genom att upptäcka källor för suboptimal instrumentering, och tillhandahålla optimeringar för att eliminera dem. Källorna är: (1) redundant läsning av minnesplatser som har lästs tidigare, (2) redundant skriver till minnesplatser som senare kommer att skrivas till, (3) redundant uppslagning av minnesplatser som inte har skrivits till, och (4) redundant uppskrivning av minnesplatser som inte kommer att läsas. Vi beskriver hur statisk analys och kodrörelsealgoritmer kan detektera dessa källor, och möjliggör tidsoptimering av kompilering som märkbart minskar instrumentens overhead i många vanliga fall. Vi implementerar optimeringarna över ett TL2 Java-baserat STM-system, och demonstrerar effektiviteten av optimeringarna på olika riktmärken, som mäter upp till 29-50% speedup i en enkelgängad körning, och upp till 19% ökad genomströmning i en 32-tråds körning.
REF föreslår statisk analys och kodrörelse för att minska antalet minnesåtkomster.
Lowering STM overhead with static analysis
{'venue': 'In LCPC', 'journal': None, 'mag_field_of_study': ['Computer Science']}