Programvarukod caches blir allmänt förekommande, i dynamiska optimerare, runtime verktygsplattformar, dynamiska översättare, snabba simulatorer och emulatorer, och dynamiska kompilatorer. Caching ofta utförda fragment av kod ger betydande prestanda ökar, minska overhead av översättning och emulering och möte eller överskrida inhemska prestanda i dynamiska optimerare. En nackdel med cachelagring, minnesexpansion, kan ibland ignoreras när man kör ett enda program. Men eftersom optimatorer och översättare tillämpas mer och mer i produktionssystem blir minnesexpansion från att köra flera applikationer samtidigt problematisk. En andra nackdel med cachelagring är det tillagda kravet på att bibehålla överensstämmelse mellan kodcachen och den ursprungliga koden. På arkitekturer som IA-32 som inte kräver explicita programåtgärder vid ändring av kod är det svårt att upptäcka kodändringar. Återigen, konsekvens kan ignoreras för vissa uppsättningar av program, men som caching system skala upp till att utföra stora, moderna, komplexa program, konsekvens blir kritisk. I detta dokument presenteras effektiva system för att hålla en programvara kod cache konsekvent och för dynamiskt avgränsande kod cache storlek för att matcha den nuvarande arbetsuppsättningen av programmet. Dessa system utvärderas i DynamoRIO runtime code manipulation system, och fungerar på lager hårdvara i närvaro av flera trådar och dynamiskt beteende, inklusive dynamiskt laddad, genererad, och även modifierad kod.
Bruening och Amarasinghe utvecklar metoder för att upprätthålla konsekvensen av koden cache i närvaro av självmodifierande kod och för dynamiskt öka storleken på koden cache som arbetsuppsättningen växer REF.
Maintaining Consistency and Bounding Capacity of Software Code Caches
{'venue': 'International Symposium on Code Generation and Optimization', 'journal': 'International Symposium on Code Generation and Optimization', 'mag_field_of_study': ['Computer Science']}