Med den nuvarande trenden mot flerkärniga arkitekturer kan bättre prestanda inte längre uppnås via traditionell entrådig instruktionsnivå parallellism (ILP), utan istället via flertrådig exekvering. Generera trådparallellprogram är hård och trådnivåspekulation (TLS) har föreslagits som en exekveringsmodell som spekulativt kan utnyttja trådnivåparallalism (TLP) även när trådoberoende inte kan garanteras av programmeraren/kompilatorn. Alternativt har modellen för utförande av hjälptrådar (HT) föreslagits där underordnade trådar utförs parallellt med en huvudtråd för att förbättra verkställighetseffektiviteten (dvs. ILP) för de senare. Ytterligare en exekveringsmodell, runahead exekvering (RA), har också föreslagits där underordnade versioner av huvudtråden skapas dynamiskt, särskilt för att klara av långsiktiga operationer, återigen i syfte att förbättra effektiviteten i utförandet av huvudtråden. Var och en av dessa multitrådade utförandemodeller fungerar bäst för olika applikationer och tillämpningsfaser. I det här dokumentet kombinerar vi dessa tre modeller till en enda utförandemodell och en enda hårdvaruinfrastruktur så att systemet dynamiskt kan anpassa sig för att hitta den lämpligaste multitrådade utförandemodellen. Mer specifikt, TLS gynnas när framgångsrik parallell körning av instruktioner i flera trådar (dvs., TLP) är möjligt och systemet kan sömlöst övergång vid körtid till de andra modellerna annars. För att förstå de kompromisser som är inblandade utvecklar vi också en prestandamodell som gör det möjligt att kvantitativt tillskriva övergripande resultatvinster till antingen TLP eller ILP i en sådan kombinerad multitrådad utförandemodell. Experimentella resultat visar att vår enhetliga utförandemodell uppnår hastighetshöjningar på upp till 41,2 %, med ett genomsnitt på 10,2 %, över ett befintligt toppmodernt TLS-system och hastighetshöjningar på upp till 35,2 %, med ett genomsnitt på 18,3 %, över en smak av runhead-utförande för en delmängd av SPEC2000 Int-riktmärkesssviten.
I REF föreslås en modell som kombinerar olika tekniker såsom spekulationer på trådnivå, hjälptrådar och körning med run-ahead för att dynamiskt välja den lämpligaste kombinationen vid körning.
Combining thread level speculation helper threads and runahead execution
{'venue': "ICS '09", 'journal': None, 'mag_field_of_study': ['Computer Science']}