Dynamiska binära optimerare lagrar ändrade kopior av originalprograminstruktioner i programvaruhanterade kodcacher för att maximera återanvändningen av omvandlad kod. Kod caches lagra kodblock som kan variera i storlek, referens andra kodblock, och bära en hög ersättning overhead. Dessa unika begränsningar minskar effektiviteten i den konventionella politiken för hantering av cachefiler. Vårt arbete tar direkt itu med dessa unika begränsningar och presenterar flera bidrag till code-cache management problem. För det första visar vi att vräkning mer än det minsta antalet kodblock från kodcachen resulterar i mindre drifttid overhead än de befintliga alternativen. Sådana granulära vräkningar minskar den totala verkställighetstiden, eftersom de fasta kostnaderna för att åberopa vräkningsmekanismen avskrivs över flera cacheinsättningar. För det andra illustrerar en studie av de idealiska livstiderna för dynamiskt genererade kodblock nyttan av en ersättningsalgoritm baserad på en generations heuristisk. Vi beskriver och utvärderar en generationssyn på hantering av kodcache som gör det enkelt att identifiera långlivade kodblock och samtidigt undvika fragmentering på grund av vräkning av kortlivade block. Slutligen presenterar vi resultat från ett genomförande av vår generationssyn i DynamoRIO-ramverket och visar att när dynamiska optimeringssystem blir vanligare kommer effektiva policyer för hantering av kodcachehantering att vara nödvändiga för tillförlitliga och skalbara prestanda hos moderna applikationer.
Hazelwood och Smith föreslog en generationskod cache som kan övergångsmetoder från en plantskola cache till en ihållande cache och vräk oanvänd kod block från cache REF.
Managing bounded code caches in dynamic binary optimization systems
{'venue': 'TACO', 'journal': None, 'mag_field_of_study': ['Computer Science']}