I detta dokument identifierar vi transaktionslokalt minne som en viktig källa till overhead från kompilatorinstrumentering i programvarutransaktionsminne (STM). Transaktionslokalt minne är minne som tilldelats inuti en transaktion, som inte kan undkomma (dvs. fångas av) den allokerande transaktionen. Åtkomst till sådant minne kräver inte samtal till STM-minnesåtkomstfunktioner (dvs. STM-barriärer). En kompilator som är omedveten om detta kan översätta åtkomster till infångat minne till dyra STM-barriärer. Detta ger oss möjligheter att förbättra STM-prestandan. Våra mätningar med STAMP-riktmärkessviten (version 0.9.9) visade att så många som 60 % av de STM-barriärer som genereras av vår baslinjekompilators åtkomst fångade minnet, inklusive 90 % av skrivbarriärerna och 45 % av läsbarriärerna. Vi föreslår runtime och kompilator optimeringar för att elide STM barriärer för att fånga minnet. Dessa tekniker kan också undanröja hinder för åtkomst till tråd-lokala och läsbara data. Vi implementerade dessa optimeringar i Intel C++ STM-kompilatorn. Våra experiment med STAMP-riktmärkessviten på ett Intel Dunnington-system (med 24 kärnor i ett 4-node SMP-system) visar att dessa optimeringar kan förbättra prestandan med 18% vid 16 trådar.
REF presenterar runtime- och kompilatoroptimeringar för att identifiera transaktionslokal stack- och högtilldelning, och ett API för notering av tråd-lokala och läsbara minnesregioner.
Optimizing transactions for captured memory
{'venue': "SPAA '09", 'journal': None, 'mag_field_of_study': ['Computer Science']}