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.
© Copyright 2025 ExpyDoc