Det framväxande hårdvarustödet för spekulation på trådnivå öppnar nya möjligheter att parallellisera sekventiella program bortom de traditionella gränserna. Genom att spekulera i att många databeroenden är osannolika under körtiden, kan på varandra följande iterationer av en sekventiell slinga utföras spekulativt parallellt. Runtime parallellism uppnås när spekulationen är korrekt. För att dra full nytta av denna nya utförandemodell, måste ett program programmeras eller sammanställas på ett sådant sätt att det uppvisar hög grad av spekulativ trådnivå parallellism. Vi föreslår en omfattande kostnadsdriven sammanställningsram för att utföra spekulativ parallellisering. Baserat på en missspecificerad kostnadsmodell omvandlar kompilatorn aggressivt slingor till optimala spekulativa parallella slingor och väljer endast de slingor vars spekulativa parallella utförande sannolikt förbättrar programmets prestanda. Ramverket stöder och använder också möjliggörande tekniker som slinga urrullning, förutsägelse av programvaruvärde och beroendeprofilering för att avslöja mer spekulativ parallellism. Den föreslagna ramen genomfördes på ORC-kompilatorn. Vår utvärdering visade att den kostnadsdrivna spekulativa parallelliseringen var effektiv. Vår kompilator kunde generera bra spekulativa parallella slingor i tio Spec2000Int-riktmärken, som för närvarande uppnår en genomsnittlig 8% speed up. Vi räknar med en genomsnittlig hastighet på 15,6 % när alla möjliggörande tekniker finns på plats.
Du och Al. Ref fokuserade på teknik för beräkning av programvaruvärde för att förbättra den spekulativa parallella prestandan i stationära referensvärden.
A cost-driven compilation framework for speculative parallelization of sequential programs
{'venue': "PLDI '04", 'journal': None, 'mag_field_of_study': ['Computer Science']}