Download de samenvatting (PDF)

A Fault Tolerance Framework in a Concurrent Programming Environment
J. Fu
Samenvatting
De voortdurende ontwikkeling van CMOS technologie zorgt ervoor dat multi-core
processoren steeds meer worden gebruikt voor onderzoek en industriële toepassingen. Echter worden computersystemen ook kwetsbaarder door beperkingen in
de ontwerpruimte en hogere gevoeligheid voor interferentie, veroorzaakt door kleinere transistoren, lagere voltages in stroomvoorzieningen, hogere frequenties, meer
complexiteit in de hardware en meer transistoren per processor. Ondertussen zijn
programmeeromgevingen ontwikkeld met steun voor gelijktijdigheid (threading),
voortaan "concurrente"programmeeromgevingen genoemd, een generalisatie van
de gezamenlijke concepten achter de exploitatie van systemen met multi-core processoren. Er wordt aangenomen dat het gebruik van deze nieuwe omgevingen
effectief extra snelheidsprestaties kan opleveren van multi-core processoren, omdat ze het parallellisme van multi-cores weten te benutten en het gebruik ervan
door softwarecomponenten effectief weten te plannen. In dit proefschrift wordt
een gepresenteerd hoe het bouwen van fouttolerantie in zulke concurrente programmeeromgevingen mogelijk is. Om dit te doen, worden de kenmerken van een
bestaande omgeving onderzocht, en wordt hiervoor een fouttolerantie framework
voorgesteld. Dit framework maakt een doorsnede door meerdere abstractielagen in
het systeem, blijft flexibel voor softwareontwikkelaars, en biedt lage overhead voor
foutdetectie en herstel. Voor de evaluatie is een methode ontwikkeld om kunstmatig fouten te injecteren in het framework. Het framework wordt beschreven in
het algemeen, en geëvalueerd op de Microgrid architectuur.
Het proefschrift bevat drie delen: foutdetectie, -herstel en -injectie in een concurrente programmeeromgeving. In het deel over foutdetectie wordt een techniek
gepresenteerd die redundantie per deeltaak, op aanvraag, mogelijk maakt. De
tijd en locatie waar een deeltaak moet worden gedupliceerd worden gespecificeerd
door programmeurs of het executiesysteem. Dit maakt het systeem efficiënter en
flexibeler, door fouttolerantie goedkoper en gevoeliger voor actuele omstandigheden te maken. Onze evaluatieresultaten geven aan dat processorontwerpen waar
de executie van deeltaken ingepland wordt volgens datastromen tussen deeltaken
gunstig kunnen zijn voor simpele redundante deeltaken draaiend op dezelfde core.
Dit wordt ook tevens bevestigd in dit proefschrift door een eerdere techniek, redundante multithreading (RMT) genoemd, te evalueren naast de onze. Hiernaast
wordt een mechanisme gepresenteerd voor het asynchroon vergelijken van het uitvoer van gedupliceerde deeltaken, door het gebruik van een gedeelde buffer tussen
aangrenzende cores. Deze buffer vermindert de communicatiedruk tussen cores en
zorgt voor efficiënter gebruik van opslagruimte.
In het deel over herstel wordt een gelegenheid onthuld om de overhead van
herstel drastisch te verminderen dankzij de aanwezigheid van hardwareondersteu3
4
SAMENVATTING
ning voor deeltaken in moderne processoren. Deze gelegenheid ontstaat omdat
ons programmeermodel alleen zeer korte deeltaken hanteert met weinig aftakkingen en zichtbare effecten, waardoor weinig controleposten nodig zijn voor herstel
na foutdetectie. Bovendien kunnen de hardwarecomponenten die deeltaken ondersteunen ook gebruikt worden voor het implementeren van controleposten. Dit
principe wordt gedemonstreerd in dit proefschrift door een gelijktijdig hardware/software ontwerp, Rethread genoemd, waar programmacode geannoteerd wordt
door codevertalers en de effecten van fouten worden hersteld door het automatisch herstarten van deeltaken. Rethread is een nieuw uitgevonden strategie voor
herstel met zeer lage overhead in systeemprestatie en hardwarekosten, omdat het
volledig gebruik maakt van omgevingsfaciliteiten voor deeltaken en het eerder ontworpen foutdetectiemechanisme.
In het laatste deel over foutinjectie wordt een implementatie gepresenteerd
van een foutinjectietechniek binnen een architectuursimulator, bedoeld voor betrouwbaarheidsanalyse. Hiermee wordt de kwetsbaarheid van meerdere microarchitecturale structuren binnen de Microgrid geanalyseerd, voornamelijk de structuren gebruikt ter ondersteuning van deeltakenexecutie. Tevens wordt de betrouwbaarheid van de technieken die in de eerste twee delen waren gepresenteerd
hiermee gekwantificeerd. Tenslotte wordt in dit deel de correlatie tussen fouten
op architecturaal niveau en effecten op applicatieniveau gepresenteerd. Betrouwbaarheidsanalyse is niet alleen een kernbelang tijdens het ontwerp van concurrente
programmeeromgevingen; het speelt ook een belangrijke rol om te bepalen of het
beheer van gelijktijdige activiteiten in software of in hardware moet worden geïmplementeerd.
In zijn geheel is het fouttolerantieframework dat in dit proefschrift gepresenteerd wordt een verbetering van concurrente programmeeromgevingen. Dit werk
wordt in twee richtingen gepresenteerd: een waar het wordt aangevuld met foutinjectie, en een andere waar detectie en herstel geleidelijk worden uitgebreid. De
foutinjectie aanvulling wordt dan gebruikt om de betrouwbaarheid van de concurrente programmeeromgeving en de geschiktheid van de voorgestelde detectie
en hersteltechnieken te meten. Bovendien is het framework vrij veelomvattend en
universeel, met steun voor foutdetectie, herstel en injectie. Het is vrij flexibel en
efficiënt door volledig gebruik te maken van enkele functies van de concurrente
programmeeromgeving, zoals expliciete beschrijvingen van gelijktijdigheid in de
programmacode van deeltaken.