Med tillgång till chip multiprocessor (CMP) och samtidig multitrådning (SMT) maskiner, extrahera tråd nivå parallellism från ett sekventiellt program har blivit avgörande för att förbättra prestanda. Men många sekventiella program kan inte lätt parallelliseras på grund av förekomsten av beroenden. För att lösa detta problem har olika lösningar föreslagits. Några av dem gör det optimistiska antagandet att sådana beroenden sällan manifesterar sig i sinom tid. När detta antagande överträds orsakar återhämtningen dock mycket stora omkostnader. Andra metoder medför stor synkronisering eller beräkning overhead när man löser beroendena. Följaktligen, för en slinga med ofta uppstår kors-iteration beroenden, tidigare tekniker inte kan påskynda genomförandet. I detta papper föreslår vi en kompilatorteknik som använder tillståndsseparation och flera värdeförutsägelser för att spekulativt parallellisera slingor i sekventiella program som innehåller ofta uppstår kors-iteration beroenden. Den viktigaste idén är att generera flera versioner av en loop iteration baserat på flera förutsägelser av värden av variabler som är involverade i kors-iteration beroenden (dvs., live-in variabler). Dessa spekulativa versioner och föregående loop iteration utförs i separata minnestillstånd samtidigt. Efter avrättningen, om en av dessa versioner är korrekt (dvs. dess förutsedda värden är korrekta), då vi slå samman dess tillstånd och tillståndet för den föregående iterationen eftersom beroendet mellan de två iterationerna är korrekt löst. Minnestillstånden för andra felaktiga versioner är helt kasserade. Baserat på denna idé, föreslår vi ytterligare en runtime adaptive system som inte bara ger en bra prestanda utan också uppnår bättre CPU-användning. Vi utförde experiment på 10 referensprogram på en riktig maskin. Resultaten visar att vår teknik kan uppnå 1,7x hastighetsökning i genomsnitt på alla använda riktmärken.
I det senaste arbetet föreslog vi att flera värdeprognoser skulle användas för att minska den höga felprocenten REF.
Speculative parallelization using state separation and multiple value prediction
{'venue': "ISMM '10", 'journal': None, 'mag_field_of_study': ['Computer Science']}