Konkurrens hibadetektálás többprocesszoros rendszerekben watchdog processzorok felhasználásával

Ph.D. értekezés tézisei

Majzik István
okleveles villamosmérnök

Témavezetõ:
Dr. Pataricza András
mûszaki tudományok kandidátusa

Budapesti Mûszaki Egyetem
Mûszer- és Méréstechnika Tanszék

Tartalom




1 Elõzmények és célkitûzések

Napjaink számítógéprendszereinek egyre növekvõ fontosságú követelménye a hibatûrõ mûködés. Hibatûrésrõl akkor beszélhetünk, ha a rendszer képes a bekövetkezett hiba ellenére is nyújtani a specifikációban elõírt szolgáltatásokat. A hibatûrés alapja a hiba detektálása és kezelése. Kritikus tényezõ a hatékony, mûködés közbeni, gyors hibadetektálás.

A hibatûrés alapja hardver, szoftver, információ illetve idõredundancia alkalmazása lehet. A legkézenfekvõbb megoldás, ha a rendszerben eleve meglevõ természetes redundancia hasznosul a hibatûrés érdekében. A módszer elõnye, hogy a feladatról rendelkezésre álló a priori ismeretek alapján az adott (nem hibatûrõ) hardver és szoftver komponensekbõl építkezve javítja a rendszer megbízhatóságát, de minden egyes egyedi feladat esetén külön elemzést és fejlesztõi munkát igényel. Az általános célú módszerek jellemzõje viszont, hogy a hibatûréshez szükséges redundancia eleve rendszerbe tervezett oly módon, hogy az a felhasználó beavatkozása nélkül, vagy egy automatizált technológia részeként épüljön be.

Missziókritikus feladatok esetén szükséges és megengedett a nagyfokú redundancia beépítése. Az alkalmazások egy jelentõs részében azonban, amelyek csak általános számítástechnikai erõforrásokat igényelnek, nem indokolt az egyedi fejlesztési ciklus végigjárása illetve költséges nagyfokú redundancia alkalmazása. E kategóriában olyan, erõsen korlátozott redundancia képzelhetõ el, amely általános célú, jól illeszkedik a szokásos kommerciális rendszerelemekhez és fejlesztési technológiákhoz, ugyanakkor a rendszer megbízhatóságát jelentõsen javítja. Ilyen rendszerekben a hardver redundancián alapuló hibadetektálás kedvelt eszközei a futásidejû monitorok, amelyek folyamatosan követik az ellenõrzött rendszer mûködését illetve állapotát. Az így nyert információt a hibamentes mûködéshez tartozó referencia információval hasonlítják össze, eltérés esetén jelzik a hibát. Az állapotinformáció gyakran tömörített formában, jelzõszámok alakjában jelenik meg.

Hibaszimulációs, hibainjektálási kísérletek illetve mûködõ rendszerek meghibásodási adatainak elemzése alapján kiderült, hogy mikroprocesszoros rendszerekben leggyakrabban tranziens hibák, ezen belül a processzor vezérlési folyamának tranziens hibái lépnek fel. Így különös jelentõséget kaptak a mikroprocesszor vezérlési folyamának futásidejû ellenõrzésére alkalmas monitorok. Ezeknek egy típusa a watchdog processzor, amely a processzor állapotára utaló jelzõszámok segítségével futásidõben ellenõrzi a vezérlési folyamot, a processzor által végrehajtott utasítások sorrendjét.

A jelzõszámok származása szerint megkülönböztetjük a hozzárendelt illetve a származtatott jelzõszámokkal mûködõ watchdog processzor alaptípusokat. Elõbbi esetben a jelzõszámokat maga az ellenõrzött processzor kell hogy továbbítsa, míg az utóbbi esetben ezeket a watchdog processzor generálja a processzor megfigyelhetõ állapotjellemzõit (rendszerint a buszjeleket) felhasználva. A vezérlési folyam hibái a jelzõszámszekvencia elemzésével detektálhatók.

A viszonylag egyszerû architektúrájú mikroprocesszorok esetén, amikor a processzor vezérlési folyama a buszjelek ismeretében egyértelmûen levezethetõ, a származtatott jelzõszámok módszere a gyakorlatban hatékony hibadetektáló eljárásnak bizonyult. A kezdeti megvalósítások tárolt referencia jelzõszámokat alkalmaztak, és csak a vezérlési folyam elágazásmentes blokkjait voltak képesek ellenõrizni. A késõbbi megoldások ezt a korlátozást kiküszöbölték, de beágyazott referencia felhasználásával, ami az ellenõrzött processzor programjának módosítását követelte meg. Csak a legutóbbi idõben jelentek meg olyan módszerek, amelyek a teljes vezérlési folyamot képesek a processzor közremûködése nélkül ellenõrizni, igaz, jelentõs méretû és bonyolultságú referencia watchdog program végrehajtásával.

A beépített utasításelõvételi sorokat és integrált cache memóriát tartalmazó korszerû processzorok esetén a származtatott jelzõszámok módszere már általában nem alkalmazható, hiszen a processzor által az adott idõpillanatban végrehajtott utasítás már nem deríthetõ ki a buszjelek figyelésével. (Az utasításelõvételi sor kezelésére történtek kíséreletek, de a cache kezelése csak magába a chipbe integrált watchdog processzorok alkalmazásával oldható meg.)

Ezeket a problémákat küszöböli ki, ha a jelzõszámok továbbítását beillesztjük a processzor által végrehajtott utasítássorozatba (hozzárendelt jelzõszámok módszere). Erre a célra elõfeldolgozók szolgálnak, amelyek többnyire a forrásszöveg szintjén dolgoznak. Az ilyen, hozzárendelt jelzõszámokkal dolgozó watchdog-processzorok elterjedését a nagy méreteket elérõ referencia adatbázis illetve referencia program tárolásának magas költségei korlátozták, ráadásul nem sikerült megoldani az egyszerû ellenõrzõ hardver megvalósításának kérdését sem.

A jelzõszámok hozzárendelése az eddigi eljárásokban a program vezérlési gráf és az ellenõrzés hatékonyságának figyelembevétele nélkül történt (általában a programszövegbeli elõfordulási sorrend definiálta a jelzõszámokat). A vezérlési gráf struktúrájának figyelembevétele egyszerre ígéri a referencia adatbázis redukcióját és az ellenõrzés egyszerûsítését. Az alapgondolat az, hogy az elterjedt strukturált programnyelvekben egy-egy jelzõszámnak viszonylag kis számú érvényes utódja lehet, így maga a jelzõszám tartalmazhat ezekre utaló információt. Ezt a redundáns jelzõszámhozzárendelést az is lehetõvé teszi, hogy a megcélzott korszerû processzorok nagy szószélessége a jelzõszámtranszfer szempontjából eddig kihasználatlan volt.

A fennálló problémák elemzése alapján célul tûztem ki egy olyan watchdog processzor eljárás kidolgozását, amely lehetõvé teszi a referencia jelzõszám adatbázis redukcióját, a vezérlési gráf struktúráját is figyelembe vevõ, redundáns jelzõszámhozzárendelést (kódolást) alkalmazva.

A referencia adatbázis redukciója lehetõvé teszi az így létrehozott watchdog processzor többprocesszes rendszerekben való alkalmazását, hiszen már nem kell tartani attól, hogy nem tárolhatók egyszerre a (virtuálisan) egyidejûleg futó processzek referencia adatbázisai. Az egyszerû és gyors jelzõszámkiértékelés felveti a többprocesszoros rendszerekben való alkalmazás kérdését is. Egyetlen watchdog processzor osztott használatát - a processzorok és processzek azonosítása mellett - csak a jelzõszámok továbbítási és feldolgozási sebessége korlátozza.

Az irodalomban ismert alkalmazások nem mennek túl az egyprocesszes vezérlési gráf ellenõrzésén, és a watchdog processzor segítségével nem vizsgálják a processzek közötti együttmûködés (kommunikáció, szinkronizáció) esetleges hibáit. A szinkronizáció sokszor érzékeny adatszerkezetek (pl. szemaforok) és hardver elemek (pl. foglaltsági jelek) alapján történik, zavarai gyors hibaterjedéshez és nehezen diagnosztizálható meghibásodásokhoz vezethetnek. Speciális jelzõszámok definiálásával a processzek közötti szinkronizáció is ellenõrizhetõ. Az alkalmazás hierarchiájának ezen a magasabb szintjén már szükségessé válik a programozási paradigma rögzítése és ez alapján a szinkronizáció modellezése.

Az ellenõrzési lehetõségek bõvítése érdekében célul tûztem ki az egyprocesszes vezérlési gráf által leírt szintnél magasabb szintû vezérlési folyam vizsgálatát, a szinkronizációs primitívek csoportosítását és az alaptípusok ellenõrzési mechanizmusának kidolgozását.

A watchdog processzor csak akkor használható hatékonyan, ha beilleszkedik az ellenõrzött rendszer teljes hibakezelési mechanizmusába. A tranziens hibák kezelésének elterjedt módszere egy elõzetesen tárolt hibamentes állapotba való visszalépés és az onnan történõ újraindítás. Ezt a watchdog processzornak is támogatnia kell. A stabil belsõ állapot létrehozása, frissítése és az újraindítás egyszerû megvalósítása új struktúrákat és eljárásokat igényel.

A watchdog processzor által kapott és kiértékelt jelzõszámszekvencia segítséget jelenthet a program nyomkövetésében és a hibadiagnosztika (debugging) elvégzésében is, hiszen ennek ismeretében a program által végrehajtott utasítások utólag visszanyerhetõk. A futásidejû jelzõszámok nagy száma miatt ez a szekvencia csak akkor tárolható, ha sikerül a hatékony tömörítését megoldani. Erre lehetõséget ad egyrészt a jelzõszámok redundáns felépítése, másrészt pedig a program vezérlési gráfjának ismerete, ami alapján már az elõfeldolgozási fázisban meghatározhatók a leghatékonyabb tömörítés paraméterei. Az optimális real-time tömörítés várhatóan nagy erõforrásigénye miatt a hangsúly a gyors és egyszerû hardver támogatás kidolgozására tevõdött.

Az ellenõrzött rendszer hibakezelési mechanizmusába való beillesztés érdekében célul tûztem ki a watchdog processzor kétfázisú újraindítást támogató kialakítását, valamint a futásidõbeli jelzõszámszekvencia real-time tömörítésének kidolgozását.

2 Vizsgálati módszerek

Az elvégzett kutatások az irodalomból ismert eljárások elemzése alapján új algoritmusok és hardver struktúrák kidolgozását valamint ezek kísérleti értékelését jelentették.

A referencia adatbázis redukciójának alapja a program vezérlési gráfjának olyan kódolása, amely annak struktúráját is figyelembe veszi. Vizsgálataimat a nagy megbízhatóságú rendszereknél elterjedten használt strukturált, procedurális programozási nyelvekre korlátoztam, ahol a vezérlési gráf egyértelmûen kinyerhetõ a forrás elemzésével.

Megadtam azokat a kritériumokat, amelyek teljesülése esetén a jelzõszámhozzárendelés (továbbiakban a gráf kódolása) elvégezhetõ. Megmutattam, hogy ezen kritériumok figyelembevételével a fenti programnyelvek esetén mindig felépíthetõ a program egy megfelelõ vezérlési gráfja.

A program vezérlési gráf kódolásának alapgondolata az, hogy egy-egy csomópont utódainak korlátozott száma miatt a csomóponthoz rendelt jelzõszám redundáns lehet, tartalmazhat információt a rákövetkezõ csomópontok jelzõszámairól is. A jelzõszámok tehát mintegy össze kell kapcsolják a szomszédos csomópontokat, ahogyan ezt a gráfban az élek teszik. A vezérlési gráfot az élek bejárásával kell kódolni.

A kódolási feladatot ezek alapján egy minden élet magába foglaló élsorozat (Euler-kör) generálására vezettem vissza. Az ismert eljárásokat (Hierholtzer-algoritmus) a kódolás igényeinek megfelelõen módosítottam, illetve részfeladatok megoldásához használtam. Megoldottam a korlátlan sok megengedett utóddal illetve elõddel rendelkezõ utasításokhoz történõ jelzõszámhozzárendelést.

A kódolási algoritmust programnyelvektõl függetlenül, általánosan fogalmaztam meg (a fent említett kritériumokat teljesítõ programgráfok esetére). A gráf felépítését és kódolását ezután C nyelven írt programok elõfeldolgozásának esetére implementáltam és teszteltem.

A redundáns jelzõszámok alkalmazásával a referencia adatbázis teljes mértékben eliminálható, ugyanakkor egy olyan hardver struktúra adható meg, amely az aktuális jelzõszám ellenõrzésének idõszükségletét a minimálisra (egy kombinációs hálózat beállási idejére) csökkenti, a szükséges logika pedig egyetlen (nagyméretû) kommerciális FPGA vagy PLD eszközbe illeszthetõ.

A jelzõszámok ellenõrzését biztosító hardver struktúrát általánosan adtam meg, majd PLD illetve FPGA áramkörök segítségével megvalósítottam és a szükséges ellenõrzõ méréseket elvégeztem.

A hozzárendelt jelzõszámok watchdog-processzorhoz (WP) történõ továbbítása lassítja a fõprocesszor mûködését. A hiba lappangási idejének csökkentése érdekében ugyanakkor szükséges a jelzõszámok gyakori, rendszeres ellenõrzése. A többletidõ csökkentését illetve a jelzõszámtranszfer egyenletessé tételét szolgálják a redukciós módszerek. Az irodalomban a statikus redukció (a programgráf csomópontjainak csökkentése) ismert módszer, de ez nem oldja meg a programhurkok által okozott jelzõszámtúltermelés kérdését.

A statikus redukció ismert módszereit kiegészítettem a programutasítások becsült végrehajtási idejének figyelembevételével, a programhurkokban történõ jelzõszámritkítás kérdését pedig egy új eljárás, a dinamikus redukció kidolgozásával oldottam meg.

A watchdog processzorban nemcsak a jelzõszámok sorrendjének, hanem a köztük eltelt idõnek a mérése is fontos ellenõrzési lehetõség; az idõtúllépés gyors hibadetektáláshoz vezethet (még a következõ jelzõszám beérkezése és ellenõrzése elõtt).

A statikus redukció során becsült utasításvégrehajtási idõk lehetõvé teszik az utasítások közötti idõlimitek finomítását, a dinamikus redukció pedig biztosítja, hogy ezek hurkok esetén is egy nagyságrendbe essenek.

A program (eljárás) vezérlési gráfja rögzíti az egyes utasítások illetve utasításcsoportok, illetve a hozzájuk rendelt jelzõszámok lehetséges sorrendjét a programon (eljáráson) belül. Vannak azonban az utasítások sorrendjében olyan kötöttségek is, amelyek az egyes különálló programok között lépnek fel, egy vezérlési gráfon belül nem írhatók le. Ezek a kötöttségek egy processzen belül (pl. eljáráshívások) illetve processzek között (alprocessz létrehozása/megszûnése, szinkronizáció) érvényesülhetnek. Leírásukra olyan, többprocesszes vezérlési gráfok alkalmasak, amelyek leírják az egyes utasítások lehetséges sorrendezését. Ez képezi majd az ellenõrzés alapját.

A különálló programok utasításcsoportjai között fellépõ kötöttségeket alaptípusokba soroltam, megadva típusonként azt az utasítássorrendet, amelynek ellenõrzése szükséges. Kidolgoztam azt a hardver struktúrát, amely alkalmas az egyes vezérlési folyamok eddig elkülönült ellenõrzésének az összekapcsolására.

A program vezérlési gráfjában rögzített utasítássorrendnél magasabb szintû kötöttségek vizsgálatát megnehezíti az adott szituációban (eljáráshívás, szinkronizáció) résztvevõ utasítások, eljárások, processzek azonosítása, megnevezése. Ez ugyanis sokszor a watchdog processzor által nem követett számított értékek alapján illetve az operációs rendszer által dinamikusan hozzárendelve történik. A probléma megoldása eljárások azonosítása esetén rendszerint az ellenõrzés szigorúságának csökkentésével történik (a program bármely pontján megengednek eljáráshívást).

Processzek azonosítására kihasználhatók a korszerû rendszerekben használatos MMU (memory management unit) lehetõségei. A processzek megnevezése így futási idõben történhet. Az elõfeldolgozás (jelzõszámhozzárendelés) és fordítás során konstansként megadott processz azonosítót, amely a jelzõszámtovábbítás során a processzor címbuszán mint logikai cím jelenik meg, az MMU fogja a watchdog processzor által észlelt valódi fizikai címmé, processz azonosítóvá alakítani. Hasonló elven történhet a szinkronizációban résztvevõ processzek azonosítása is.

A watchdog processzor az általa detektált hibát jelzi a fõprocesszor illetve a felügyelõ processzor felé, amely elsõ lépésként a hibát tranziensnek feltételezi és megkísérli az érintett processz újraindítását. Ennek leggyakoribb módszere a visszaléptetés (backward recovery) amely egy elõzetesen tárolt és rendszeresen frissített hibamentes állapot visszaállítását jelenti. A fõprocesszor visszalépését a watchdog processzornak is követnie kell, hogy az új állapotnak megfelelõen tudja az érkezõ jelzõszámokat ellenõrizni. Ez a WP-ben is megköveteli az állapotmentést. Egy vezérlési folyam ellenõrzése esetén ez egyszerû feladat, mert a processz állapotát a legutolsó érvényes jelzõszám egyértelmûen definiálja, csak ezt kell tárolni. Az eljáráshívások ellenõrzése azonban általános esetben (amikor a hívás számított értékek alapján is történhet) megköveteli a watchdog processzorban a fõprocesszor eljáráshívási verem követését, egy hasonló, a hívó eljárások utolsó érvényes jelzõszámát tároló verem kiépítésével. Az adott processz állapotát ez esetben az általa foglalt veremterület tartalma jellemzi, ezt kell rendszeresen elmenteni és visszaléptetés esetén visszaállítani. Ha az állapot mentése a fõprocesszorban két fázisban történik (ld. elosztott rendszerek), akkor a WP-ben is kétfázisú állapotmentésre van szükség.

A jelzõszámverem tárolására egy dinamikus (láncolt listákat alkalmazó) hardver struktúrát dolgoztam ki, amely biztosítja a WP-ben rendelkezésre álló tárterület gazdaságos felosztását az egyes processzek között. A verem láncolt lista formájában történõ kezelése lehetõséget adott a kétfázisú állapotmentés optimális mechanizmusának kidolgozására is. Ez egyrészt csak a feltétlenül szükséges többlet tárterületet veszi igénybe (másolat tárolására nincs szükség) másrészt pedig az állapotmentés és visszaállítás a verem méretétõl függetlenül, korlátos idõben végrehajtható.

A watchdog processzor által ellenõrzött futásidejû jelzõszámok sorozatából a jelzõszámhozzárendelés alapján visszaállítható, milyen utasításokat, programágakat hajtott végre az ellenõrzött processzor. Ez segítheti a program nyomkövetését, a hibakeresést (debugging). Ehhez azonban szükséges a futásidejû jelzõszámszekvencia tárolása, ami a jelzõszámok nagy száma miatt teljes terjedelemben a WP korlátos memóriájában nem történhet meg. A logikai analizátorok mintájára célszerû egy cirkuláris puffert kialakítani. Ennek kihasználtságát, az egyidejûleg tárolható regisztrátum hosszát megnöveli, ha a jelzõszámszekvenciát sikerül hatékonyan tömöríteni. Erre lehetõséget ad az, hogy a szekvencia a programhurkok miatt ismétlõdõ részeket tartalmaz. Különös figyelmet kell arra fordítani, hogy a tömörítés és tárolás ne késleltesse a fõprocesszor futását.

A real-time követelményeket figyelembe véve dolgoztam ki a jelzõszámszekvencia tömörítésének algoritmusát és a szükséges hardver struktúrát. Kétféle lehetséges módszert fogalmaztam meg. Az elsõ sebességét és erõforrásigényét tekintve jól illeszkedik az eddig leírt WP mûködéshez, a cirkuláris pufferen kívül többlet erõforrást nem igényel, a jelzõszámok redundanciáját használja ki. Az általa elérhetõ tömörítés azonban korlátos. A második módszer általános, nem kötõdik a használt redundáns jelzõszámokhoz. Kihasználja, hogy a program futása elõtt, annak elõfeldolgozási fázisában a vezérlési gráf már ismert. Ez alapján, a hurkokat azonosítva, a tömörítéshez egy szótár építhetõ fel. A programindítás elõtt a WP-be töltött szótár alapján korlátos idõ alatt elvégezhetõ egy-egy jelzõszám feldolgozása, a szekvencia tömörítésének határát a szótár struktúrája és mérete szabja meg (a szótár az eddigiekhez képest többlet erõforrásként jelentkezik).

3 Az új tudományos eredmények összefoglalása

  1. Tézis: Kidolgoztam egy új, hozzárendelt futásidejû jelzõszámokon és beágyazott referencia információn alapuló watchdog processzor eljárást, amely biztosítja strukturált programozási nyelven írt programok vezérlési folyamának nagy sebességû és kis költségû ellenõrzését.

    1. Kidolgoztam a program vezérlési gráf csomópontjaihoz rendelendõ redundáns jelzõszámok meghatározásának Euler-körök keresésén alapuló algoritmusát.
    2. A C programnyelv példáján megmutattam, hogy az általánosan használatos strukturált programozási nyelvek (C, Pascal, Modula-2) esetén a redundáns kódolás kritériumai teljesíthetõk.
    3. Kidolgoztam a programutasítás szintnél magasabb szintû vezérlési folyam ellenõrzéséhez szükséges módszereket, amelyek lehetõvé teszik többprocesszes alkalmazások teljes szoftver hierarchiájának ellenõrzését.
    4. Kiegészítettem a jelzõszámok számának és idõbeli eloszlásának optimalizálására szolgáló eljárásokat egy olyan technikával, amely képes az iterációs ciklusokban továbbított jelzõszámokat is ritkítani, és a jelzõszámok továbbítása közben végrehajtott processzor-utasítások végrehajtási idejét is figyelembe veszi.


  2. Tézis: Kidolgoztam az 1. tézisben definiált felépítésû hozzárendelt jelzõszámok ellenõrzésére szolgáló általános WP hardver struktúrát. Megmutattam, hogy az irodalomban ismert eljárásokhoz viszonyítva ez az eljárás teszi lehetõvé a leggyorsabb jelzõszámkiértékelést.

    1. Megmutattam, hogy az utasítás szintû jelzõszámszekvencia ellenõrzése megvalósítható egy kombinációs hálózat és egy referencia regiszter segítségével.
    2. Kidolgoztam az eljáráshívások ellenõrzéséhez szükséges referencia jelzõszám-verem struktúráját, amely lehetõvé teszi egy globális tár több processz közötti gazdaságos, dinamikus megosztását.
    3. A processzek közötti szinkronizáció ellenõrzésének algoritmusát (programozható áramkörök segítségével implementálható) mikroutasítások segítségével írtam le.

    A tézisek jelentõségét az adja, hogy kiküszöbölik az eddig használatos, hozzárendelt jelzõszámok módszerével mûködõ watchdog processzorok alapvetõ hátrányait, vagyis a nagyméretû referencia tárolásához és kezeléséhez szükséges komplex felépítést és az ebbõl adódó lassú mûködést. Az új módszer alapján egyetlen jelzõszám tárolása elég referenciaként minden hívott eljáráshoz, egy új jelzõszám kiértékelése pedig egy kombinációs hálózat beállási idejére csökken le. Az új módszer ugyanakkor nem növeli meg jelentõsen a futásidõben továbbítandó jelzõszámok számát és nem igényel az általában elérhetõnél (32 bit) nagyobb szószélességû összeköttetést a watchdog és az ellenõrzött processzor között. A program vezérlési gráfjának kódolása lineáris algoritmus segítségével, gyorsan elvégezhetõ. A kódolást végzõ elõfeldolgozó továbbra is hordozható, a magas szintû strukturált programozási nyelvekhez illeszkedik.

    A programutasítás szintnél magasabb szintû vezérlési folyam (eljáráshívás, processzek közötti szinkronizáció) ellenõrzése növeli a watchdog processzor által elérhetõ hibafedést és csökkenti a hibaterjedést, megakadályozva nagy kockázatú illetve nehezen diagnosztizálható hibák kialakulását.


  3. Tézis: Módszereket adtam a watchdog processzornak az ellenõrzött elosztott rendszer hibakezelési mechanizmusába való illesztésére, kidolgozva a hiba utáni újraindítás és a nyomkövetés támogatását.

    1. Úgy módosítottam a watchdog processzor architektúráját, hogy az illeszkedjen az elosztott rendszerekben használatos kétfázisú állapotmentéshez és képes legyen a visszalépéshez szükséges tárolt állapot korlátos idõn belüli létrehozására, frissítésére és visszaállítására, a jelzõszám-verem aktuális méretétõl függetlenül.
    2. Kidolgoztam a watchdog processzor által elemzett jelzõszám-szekvencia futásidõbeli tömörítésének módszerét, amely minimális hardver erõforrások segítségével lehetõvé teszi a jelzõszám-szekvencia tárolását és felhasználását nyomkövetés illetve debugging céljaira.

    E tézis jelentõsége az, hogy módszereket ad a hiba utáni újraindítás illetve a hibadiagnosztika támogatásához. A hibadetektálás utáni hibakezelés hatékonyságának növelését szolgálja a watchdog processzor újrandítható felépítése: a fõprocesszorral párhuzamosan, korlátos idõn belül elvégezhetõ az állapotmentés és -visszaállítás. Az újraindítást és hibakeresést támogatja a futásidejû jelzõszámszekvencia tárolása, amibõl a hiba elõtti programvégrehajtás visszakövetkeztethetõ. Ezek a módszerek mind a végrehajtási idõ, mind az erõforrásigény alapján illeszkednek az elsõ tézisek által megadott jelzõszámellenõrzéshez.

4 Az eredmények hasznosítása

A kidolgozott watchdog processzor általánosan használható mikroprocesszoros rendszerekben mint a konkurrens hibadetektálást végzõ koprocesszor, meglévõ rendszerekhez utólag is illeszthetõ. Alapvetõen a megbízhatóság szempontjából kritikus illetve hosszú számításokat végzõ többprocesszoros rendszerekhez került kifejlesztésre, de kis többlet hardver igénye és gyorsasága alkalmazását hétköznapi rendszerekben, vezérlõkben is kifizetõdõvé teheti. Használata kiemelt jelentõségû a korszerû mikroprocesszorok mellett, ahol a beépített cache miatt származtatott jelzõszámokkal dolgozó watchdog processzor eljárások illetve monitorok nem jöhetnek számításba.

Általános célú rendszerek esetén a watchdog processzor kiválthatja a hibadetektálás céljaira beépített redundáns processzor (master-checker elrendezés) alkalmazását. Ennek költsége ugyanis sok esetben nem megengedhetõ, mivel a checker processzor számítási kapacitása az elvégzendõ feladat szempontjából gyakorlatilag kihasználatlan marad. A kifejlesztett watchdog processzor ezek a hátrányokat kiküszöböli (egyszerû, nagy megbízhatóságú, olcsó hardver) a hibadetektáló képesség némi csökkenése illetve az ellenõrzött program futási idejének növekedése árán.

A tézisekben ismertetett eredmények alapján felépített watchdog processzor beépítésre került az Erlangeni Egyetemen kifejlesztett MEMSY tudományos célú többprocesszoros rendszerbe, ahol egy 5 számítógépbõl álló alapblokk (20 processzor) ellenõrzését látja el, idõosztásos módon. A C nyelvhez készült preprocesszor, a UNIX operációs rendszerbe való illesztést szolgáló driverek és handlerek szintén elkészültek. Itt történt meg a kísérleti értékelés, a teljesítmény, hibafedés és a detektált hibák lappangási idejének mérése. Integrált watchdog koprocesszor készítésének elsõ fázisaként elkészült a hardver VHDL alapú leírása. Az elterjedt IBM PC AT rendszerhez készült, egyszerûsített változat bevezetésre kerül a graduális oktatásba.

5 Az értekezés témakörében készült publikációk

Referált folyóiratok

1
I. Majzik, W. Hohl, A. Pataricza, and V. Sieh. Multiprocessor checking using watchdog processors. International Journal of Computer Systems - Science & Engineering, 11(5):125-132, September 1996.

2
I. Majzik and A. Pataricza. Control flow checking in multitasking systems. Periodica Polytechnica Ser. Electrical Engineering, 39(1):27-36, 1995.

3
I. Majzik. Software diagnosis using compressed signature sequences. Periodica Polytechnica Ser. Electrical Engineering, 40(2):87-103, 1996.

Referált konferenciakiadványok

4
A. Pataricza, I. Majzik, W. Hohl, and J. Hönig. Watchdog processors in parallel systems. Microprocessing and Microprogramming, 39:69-74, 1993.

5
I. Majzik, A. Pataricza, M. Dal Cin, W. Hohl, J. Hönig, and V. Sieh. Hierarchical checking of multiprocessors using watchdog processors. In K. Echtle, D. Hammer, and D. Powell, editors, Dependable Computing - EDCC-1, volume 852 of Lecture Notes in Computer Science, pages 386-403. Springer Verlag, Berlin Heidelberg, 1994.

6
I. Majzik, A. Pataricza, W. Hohl, J. Hönig, and V. Sieh. A high-speed watchdog processor for multitasking systems. In E. Selényi A. Pataricza and A. Somogyi, editors, Proc. Eight Symposium on Microcomputer and Microprocessor Applications, volume I, pages 65-74, Budapest, October 1994. Technical University of Budapest.

7
I. Majzik. Software monitoring and debugging using compressed signature sequences. In Proc. 22nd EUROMICRO Conference, pages 311-318. IEEE Computer Society Press, Los Alamitos, CA, 1996.

8
I. Majzik. Watchdog processors: Checking process synchronization. In Proc. Short notes of the 22nd EUROMICRO Conference, In press. IEEE Computer Society Press, Los Alamitos, CA, 1996.

Kutatási beszámolók (technical reportok)

9
I. Majzik. Fault detection in the MEMSY multiprocessor using a SEIS watchdog processor. Internal Report 10/1993, IMMD3, University of Erlangen-Nuremberg, Erlangen, 1993.

10
I. Majzik. SEIS: A program control flow graph encoding algorithm for control flow checking. Technical Report TUB-TR-94-EE 14, Technical University of Budapest, Budapest, 1994.

11
K. Tilly, T. Dobrowiecki, I. Majzik, A. Somogyi, A. Várkonyi-Kóczi, I. Kiss, Z. Dankó, Cs. Tóth, B. Vadász, and T. Zsemlye. The application of intelligent diagnostic centers in the implementation of distributed fault-tolerant systems. Technical Report TUB-TR-94-EE 09, Technical University of Budapest, Budapest, 1994.

Egyéb konferenciák és szimpóziumok

12
I. Majzik and A. Pataricza. Többprocesszoros rendszerek ellenõrzése watchdog processzorok felhasználásával. XIV. Tudományos Ülésszak. Kandó Kálmán Mûszaki Fõiskola, 1994.

13
I. Majzik and A. Pataricza. Concurrent checking of multiprocessor systems using watchdog processors. In Proc. 1994 Mini-Symposium, pages 3-4. Dept. of Measurement and Instrument Engineering, Technical University of Budapest, 1994.

14
I. Majzik and A. Pataricza. A concept for checking communicating sequential processes. In Proc. 1995 Mini-Symposium, pages 7-8. Dept. of Measurement and Instrument Engineering, Technical University of Budapest, 1995.

Oktatási segédanyagok

15
I. Majzik. Hibadatektáló eljárások vizsgálata hibainjektálással. Mérési útmutató, Budapesti Mûszaki Egyetem Mûszer és Méréstechnika Tanszék, 1994.


Majzik Istvan
Wed Aug 27 09:40:58 MET DST 1997