Eftersom processorprestanda skalbarhet nu främst kommer att uppnås genom trådnivå parallellism, finns det ett starkt incitament att parallellisera ett brett spektrum av applikationer, inklusive de med komplexa kontrollflöde och datastrukturer. Och att skriva parallella program är en notoriskt svår uppgift. Förutom processorprestanda kan arkitekten hjälpa till genom att underlätta programmerarens uppgift, särskilt genom att förenkla modellen som exponeras för programmeraren. I denna artikel, bland de många frågor som förknippas med att skriva parallella program, fokuserar vi på att hitta lämplig parallellism granularitet, och effektivt kartlägga uppgifter med komplex kontroll och dataflöde till trådar. Vi föreslår att avlasta användaren och kompilatorn av båda uppgifterna genom att delegera parallelliseringsbeslutet till arkitekturen vid körtid, genom en kombination av hårdvara och programvarustöd och en stram dialog mellan båda. För programvarusupporten utnyttjar vi en allt mer populär strategi inom programvaruteknik, kallad komponentbaserad programmering; komponentkontraktet förutsätter snäv inkapsling av kod och data för enkel manipulering. Tidigare forskningsprojekt har visat att det är möjligt att utöka komponenter med förmågan att dela/spawn, vilket ger ett enkelt och passande tillvägagångssätt för programmering av parallella applikationer med komplexa styr- och datastrukturer. Sådana miljöer kräver dock fortfarande programmeraren för att avgöra lämplig granularitet av parallellism, och leken har betydande overheads på grund av programvara kör-tid systemhantering. För det ändamålet ger vi en miljö med möjlighet att skapa villkorligt beroende på tillgängliga hårdvaruresurser, och vi delegerar lekbeslut och åtgärder till arkitekturen. Detta villkorliga lekande genomförs genom frekvent hårdvaruresurs undersökning av programmet. Detta möjliggör i sin tur snabb anpassning till varierande arbetsförhållanden, datamängder och hårdvaruresurser. Dessutom, tack vare lämplig kombinerad hårdvara och kompilator stöd, undersökningen har ingen betydande overhead på programmets prestanda. Vi demonstrerar detta tillvägagångssätt på en 8-kontext SMT, flera icke-triviala algoritmer och omkonstruerade SPEC CINT2000 riktmärken, skrivna med hjälp av komponentsyntax bearbetas av vår verktygskedja. Vi uppnår speedups från 1.1 till 3.0 på vår testsvit.
Kapsel REF parallelliserar automatiskt komponentbaserade program genom frekvent genomgång av maskinvarans resurs.
CAPSULE: Hardware-Assisted Parallel Execution of Component-Based Programs
{'venue': "2006 39th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO'06)", 'journal': "2006 39th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO'06)", 'mag_field_of_study': ['Computer Science']}