Tolkar utformade för effektivitet utför ett stort antal indirekta filialer och kan tillbringa mer än hälften av avrättningstiden i indirekta filialer felpreskriptioner. Målbuffertar för filialer (BTB) är den mest allmänt tillgängliga formen av indirekt prognostisering av filialer, men deras förutsägelsenoggrannhet för befintliga tolkar är endast 2–50 %. I den här artikeln undersöker vi två metoder för att förbättra prediktionsnoggrannheten hos BTB för tolkar: replikeringsinstruktioner för virtuella maskiner (VM) och kombinera sekvenser av VM-instruktioner till superinstruktioner. Vi undersöker statiska (interpreter build-time) och dynamiska (interpreter runtime) varianter av dessa tekniker och jämför dem och flera kombinationer av dessa tekniker. För att visa deras allmängiltighet har vi implementerat dessa optimeringar i virtuella maskiner för både Java och Forth. Dessa tekniker kan eliminera nästan alla avsändargren felprediktioner, och har andra fördelar, vilket resulterar i hastigheter med en faktor på upp till 4.55 över effektiva gängade kodtolkar, och snabba upp med en faktor på upp till 1.34 över tekniker som förlitar sig enbart på dynamiska superinstructions.
I REF föreslogs programmetoder för att förbättra prediktionsnoggrannheten hos BTB:s för tolkar: replikering av instruktioner för virtuell maskin (VM) och kombination av sekvenser av instruktioner för virtuella maskiner till superinstruktioner.
Optimizing indirect branch prediction accuracy in virtual machine interpreters
{'venue': 'TOPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}