Detta papper presenterar en hårdvarubaserad dynamisk optimizer som kontinuerligt optimerar ett programs instruktionsström. Vid kontinuerlig optimering utförs optimeringar av dataflödet med hjälp av enkel, bordsbaserad hårdvara placerad i omnamnsstadiet av processorns rörledning. Den kontinuerliga optimizern minskar dataflödeshöjden genom att utföra konstant förökning, reassociation, redundant lasteliminering, lagra vidarebefordring och ta bort tysta lager. För att öka effekten av optimeringarna integrerar optimatorn värden som genereras av exekveringsenheter tillbaka i optimeringsprocessen. Kontinuerlig optimering möjliggör instruktioner med ingångsvärden kända vid optimeringstidpunkten att utföras i optimatorn, vilket lämnar mindre arbete för den out-of-order delen av rörledningen. Kontinuerlig optimering kan upptäcka förgreningar tidigare och därmed minska felpreskription straff. I detta dokument presenterar vi en detaljerad beskrivning av en maskinvaruoptimerare och utvärderar den i samband med en samtida mikroarkitektur som kör aktuella arbetsbelastningar. Vår analys av SPECint, SPECfp, och mediabench arbetsbelastningar avslöjar att en maskinvaruoptimerare direkt kan utföra 33% av instruktionerna, lösa 29% av fel predikterade grenar, och generera adresser för 76% av minnesoperationer. Dessa positiva effekter kombineras för att ge uppfarter i intervallet 0,99–1,27.
Till exempel utökar REF omnamnsstadiet för att genomföra flera optimeringar, särskilt konstant förökning.
Continuous Optimization
{'venue': "32nd International Symposium on Computer Architecture (ISCA'05)", 'journal': "32nd International Symposium on Computer Architecture (ISCA'05)", 'mag_field_of_study': ['Computer Science']}