Universitatea Tehnică din Cluj-Napoca

Facultatea de Automatică şi Calculatoare

Catedra de Automatică

Str. G. Bariţiu 26-28, 400027 Cluj-Napoca, ROMÂNIA

Tel.: +40-264-594469

Fax/Tel.: +40-264-594469

 

CONTRACT TIP PN-II-IDEI, nr. 93/1.10.2007

Faza II, unică pe anul 2008

Valoare fază: 325383,56 lei

 

Sinteza lucrării

Dezvoltarea unor capacităţi de auto-întreţinere pentru societăţi digitale

 

Faza 2008 – Analiza funcţională şi experimentarea unor module BIST şi autoîntreţinere.

 

Activităţi:

1. Analiza funcţională pentru dezvoltarea modulelor FPGA cu autoîntreţinere.

2. Analiza funcţională a mecanismelor multiagent pentru structuri cu autoîntreţinere.

3. Dezvoltare interfaţă de reconfigurare dispozitive (wrapper).

4. Experimentare funcţii de autotestare (BIST – Built In Self Test).

5. Implementare module cu autoîntreţinere bazate pe reconfigurare.

 

1. Analiza funcţională pentru dezvoltarea modulelor FPGA cu autoîntreţinere

1.1. Limbajul VHDL

VHDL este un limbaj pentru descrierea sistemelor electronice digitale, proiectat să satisfacă anumite cerinţe ale procesului de proiectare. El permite descrierea structurii unui modul, adică felul în care el este descompus în sub-module şi cum sunt interconectate aceste sub-module. Am utilizat acest limbaj în cadrul proiectului, pentru pregătirea circuitelor reconfigurabile, în particular FPGA.

1.2. Module reconfigurabile

 „Calculul reconfigurabil” se răspândeşte ca tehnologie viabilă pentru susţinerea Societăţii Sistemelor Digitale din viitor. Facilitatea lui primară este capacitatea de a efectua calcule în hardware , pentru creşterea performanţelor, în acelaşi timp păstrând, în mare parte, flexibilitatea unei soluţii software. Ca şi software‑ul, circuitul este flexibil, şi poate fi schimbat chiar şi în timpul funcţionării sistemului. In acest caz, performanţa creşte şi mai mult, deoarece circuitele pot fi optimizate pe baza condiţiilor din timpul funcţionării. În acest fel, performanţa unui sistem reconfigurabil se poate apropia sau poate chiar trece de cele ale unui ASIC (circuit integrat specializat).

Ca un factor pozitiv, se poate aminti că acest „calcul reconfigurabil” permite diferenţierea produselor, una din forţele conducătoare în implementările de sisteme înglobate, pe lângă timpul‑la‑piaţă („time‑to‑market”), performanţe şi cost. În acest aspect, soluţiile de calcul reconfigurabile au un avantaj clar în faţa majorităţii alternativelor care ar putea ajuta la stabilirea sistemelor reconfigurabile în viitor.

In această discuţie, preferăm să fim cât mai generali posibil, fără a intra în detaliile arhitecturilor curente şi a aplicaţiilor bazate pe Sisteme Reconfigurabile. Totuşi, dorim să accentuăm „motivele comportamentale” sau „auto‑abilităţile” care, în general, sunt suficiente pentru aplicarea la toate scenariile de aplicaţii viitoare şi care vor fi necesare unui individ pentru supravieţuirea în Societatea de Sisteme Digitale:

·         Auto‑adaptare: capacitatea de a‑şi adapta comportamentul pentru a răspunde unor schimbări în mediu;

·         Auto‑optimizare: capacitatea de a optimiza resursele disponibile într‑un mediu pentru obiective date (în general, non‑funcţionale);

·         Auto­‑configurare: abilitatea de a implementa strategii specifice pentru rezolvarea unei probleme, bazată pe capacitatea de a‑şi reconfigura arhitectura (adică relaţiile dintre componentele sistemului) pentru a garanta proprietăţi de nivel înalt, definite la nivel arhitectural;

·         Auto‑reparare: capacitatea de a detecta şi a corecta defecte funcţionale;

·         Auto‑protejare: capacitatea de a detecta şi rezolva automat probleme de securitate.

Exista diferite tipuri de circuite configurabile utilizate actualmente. Se pot distinge urmatoarele categorii importante:

·         Retele de porti

·         Celule standard

·         Macro-celule (blocuri constructive)

·         Retele logice programabile (PLA - Programmable Logic Array)

·         Dispozitive logice programabile (PLD - Programmable Logic Device)

·         Retele de porti programabile (FPGA - Field-Programmable Gate Array)

1.2.1. Circuite FPGA

Circuitele FPGA (Field-Programmable Gate Array) sunt circuite integrate programabile de catre utilizator care permit un acces rapid la circuite VLSI configurabile.

Un circuit FPGA consta dintr-o retea de celule logice care pot fi interconectate prin comutatoare de rutare programabile. Circuitele FPGA combina facilitatile retelelor de porti programabile prin masti MPGA (Mask Programmable Gate Array) si a dispozitivelor logice programabile PLD (Programmable Logic Device).

Comparaţie între microcontrollere şi FPGA

Facilităţi

μC

Soluţii μC

 FPGA

Soluţii FPGA

Viteză de lucru

mică

CLK>

mare

CLK>, paralelism

Periferice predefinite

da

Interfeţe I/O standard: SPI, SCI, USB etc

nu

Componente CORE

Reprogramabilitate

da

FLASH

da

FLASH, RAM

Interfeţe Analogice

da

Convertoare D/A, A/D

nu

Circuite externe

Versatilitate

mică

Pini partajaţi

mare

Reconfigurabil la nivel de pin I/O

Algoritmi complecşi

uşor

Programare C, Asm

greu

Componente CORE

Preţ de cost

mică

Familii Low-Cost

medie

Preţ de cost/poartă logică <<

Concluzii:

         Microcontrollere: recomandate în aplicaţii industriale de viteză redusă.

         FPGA: recomandate la aplicaţii de mare viteză, ex. prelucrări de semnale, datorită paralelismului, comunicaţii şi altele.

1.2.2. Specificaţiile principale de definire a modulelor FPGA cu autoîntreţinere

Din analiza funcţională, am dedus specificaţiile de definire a modulelor FPGA cu autoîntreţinere. Cele mai importante sunt:

·         FPGA cu minim 200 mii celule;

·         celule reprogramabile cel puţin de 1000 de ori (pentru funcţia de autoîntreţinere);

·         marcă FPGA răspândită, de exemplu Xilinx (mai uşor de obţinut şi cu mai multe medii de dezvoltare disponibile);

·         placă cu port JTAG, USB sau serial pentru comunicaţii;

·         modul wireless ataşabil;

·         sistem de operare de timp real uCLinux cu monitor sau placa conectată la Calculatorul Gazdă;

·         staţie de lucru cu Windows XP sau Vista, mediu Java 1.5.0 sau microJava;

·         posibilitatea de încărcare, în circuit, a unor funcţii de autoreparare;

·         programabilitate în VHDL;

·         capacitate de încărcare diverse circuite combinaţionale şi procesoare simple în FPGA.

2. Analiza funcţională a mecanismelor multiagent pentru structuri cu autoîntreţinere

2.1. Mecanisme multiagent şi sistemele reconfigurabile

Datorită complexităţii ridicate, apar multe aspecte noi care pot afecta funcţionarea unui sistem digital eterogen şi pot deveni următoarea provocare pentru industria TI şi comunitatea de cercetare.

·      Defecte tranzitorii: În societatea sistemelor digitale, o defectare poate avea multe alte cauze noi, altele decât imprecizia din timpul dezvoltării. Defecte noi pot apărea din interacţiuni neaşteptate dintre dispozitive şi aplicaţii dezvoltate independent, stres imprevizibil şi interferenţe cu mediul, sau îmbătrânirea hardware‑ului (de exemplu, ruperi şi interferenţe de circuite, cauzând defecte de memorie şi procesor).

·      Situaţii de lucru imprevizibile: Tehnologiile bazate pe componente şi orientate pe servicii sunt văzute, de obicei, ca cea mai bună soluţie pentru aplicaţii cu complexitate crescândă, direcţie demonstrată şi de disponibilitatea multor componente şi servicii de tip COTS – Commercial Off The Shelf – comerciale, de pe raft. Aceste tehnologii contribuie la sporirea problemei, ridicând întrebări noi şi dificile pentru testare şi analiză. Tehnicile de testare şi analiză de regulă presupun o cunoaştere completă a sistemului sub test, ca şi a cerinţelor şi mediului de execuţie. Din păcate, această situaţie nu este valabilă în societatea de sisteme digitale.

·      Probleme şi pericole de securitate: Securitatea va fi o temă fierbinte în societatea sistemelor digitale. Componentele  şi serviciile care „nu sunt de încredere”, adică acelea care nu sunt proiectate din punct de vedere a securităţii (dar pot interacţiona cu şi în societate), pun în pericol funcţionarea corectă a întregului sistem. Totuşi, dată fiind prezenţa dispozitivelor eterogene (de regulă mobile), ale căror hardware şi software poate evolua independent unul de celălalt, cerinţele de securitate sunt dificil de definit apriori pentru toate dispozitivele şi aplicaţiile. Probleme şi pericole de securitate neaşteptate pot apărea de fiecare dată sunt stabilite noi interacţiuni în timpul funcţionării, ducând la necesitatea impunerii şi verificării dinamice a securităţii de către societatea în sine.

·      Probleme de interoperabilitate: În societatea sistemelor digitale, dispozitivele interacţionează folosind serviciile unele altora, câteodată descoperind dinamic existenţa şi disponibilitatea serviciilor dorite. Totuşi, dată fiind independenţa completă dintre multe dispozitive, în general nu există control asupra implementării propriu‑zise a serviciilor folosite.

Sunt două tehnologii care ies în evidenţă în sprijinirea acestei paradigme: Agenţi de Date Mobili („Mobile Data Agents”) pentru infrastructura de comunicaţii şi Sisteme Reconfigurabile („Reconfigurable Systems”) pentru implementarea unor „indivizi” configurabili, adaptivi, reparabili şi cu performanţe ridicate.

Agenţii de Date Mobili sunt o tehnologie gata disponibilă şi relativ viabilă. Ei sunt agenţi software care pot fi deplasaţi de la un sistem la altul şi pot fi transportaţi pe un dispozitiv la distanţă pentru execuţie. Ajungând la calculatorul de la distanţă, Agenţii Mobili se prezintă şi obţin acces la hardware-ul local, servicii şi date. Când un Agent se deplasează, ia cu el codul program executabil, dar şi datele sale. Agenţii de Date Mobili sunt mici, siguri, dinamici şi, în general, independenţi de hardware.

2.2. Specificaţiile principale de definire a mecanismelor multiagent pentru structuri cu autoîntreţinere

Din analiza funcţională, am construit specificaţiile de definire a mecanismelor multiagent pentru structuri cu autoîntreţinere. Cele mai importante sunt:

·         agenţi de date mobili;

·         agenţii să aibă capacitatea de a accesa funcţiile BIST şi de BISR („Built In Self Repair”) ale modulelor;

·         platformă de dezvoltare agenţi bazată pe un limbaj răspândit, de exemplu Java sau microJava;

·         agenţi speciali pentru societatea de agenţi, în scopul înlesnirii comunicaţiei în această societate.

3. Experimentare funcţii de autotestare (BIST – Built In Self Test)

3.1. Modulul software experimental BIST

3.1.1. Analiza funcţională

Din punct de vedere logic modulul de test este un interpretor de comenzi. Programul primeşte de la server comenzi şi le execută pe cele cunoscute. Aceste comenzi au, în general, ca rezultat efectuarea unui test al unui subansamblu. In urma execuţiei testului modulul are posibilitatea de a întoarce rezultatul precum şi detaliile contextuale.

La terminarea transmisiei rezultatelor conexiunea cu serverul poate fi întreruptă urmând a fi reluată în cazul unei noi cereri iniţiată de cel din urmă. Pentru a anunţa sfârşitul transmisiei se trimite un simbol prestabilit, un simplu punct: ”.”.

Din punct de vedere structural, modulul de testare este compus dintr-o interfaţă utilizator şi o parte de cod ce răspunde de efectuarea operaţiilor de testare propriu‑zise.

Figura 1 - Interfaţa după rularea testului.

3.1.2. Partea de cod

Aceasta conţine toate elementele funcţionale invizibile utilizatorului. Acestea sunt atât componentele soft ce nu au interfaţă grafica  cât şi procedurile. Dintre acestea din urmă cel mai important este obiectul “Winsock”.

4. Dezvoltare interfaţă de reconfigurare dispozitive (wrapper) şi implementare module cu autoîntreţinere bazate pe reconfigurare

Un scenariu ideal este unul în care erorile, defectările, noile caracteristici ai mediului, cerinţele de securitate nesatisfăcute şi schimbările în implementările serviciilor sunt detectate dinamic şi automat, şi „reparate”, la nevoie, de sistemele însele, fără a necesita intervenţie umană externă, şi imediat ce apar în timpul funcţionării. Sistemele digitale capabile să detecteze şi, eventual, să corecteze propriile funcţionări greşite, se numesc sisteme cu auto‑întreţinere.

Pentru moment, sistemele cu auto‑întreţinere sunt populare şi eficiente doar în proiectarea şi producţia de dispozitive integrate hardware (cum ar fi plăci de memorie), dar investigarea aplicaţiilor lor în domeniul sistemelor eterogene este încă într‑un stadiu preliminar. Diferenţa principală dintre un dispozitiv cu auto‑întreţinere şi o „societate cu auto‑întreţinere” este posibilitatea folosirii cunoştinţelor şi expertizei tuturor membrilor societăţii digitale la rezolvarea unor probleme critice şi complexe. Într‑o societate cu auto‑întreţinere, un dispozitiv defect poate fi reparat pe baza cunoştinţelor altor indivizi, chiar dacă aceştia original nu au fost proiectaţi să trateze problema detectată.

Interfaţa de reconfigurare este un „wrapper”, care permite imaginii binare de reconfigurare FPGA să fie încărcat în acesta. Din punct de vedere al funcţionalităţii, se poate asemăna unui procesor cu set de instrucţiuni foarte simplu.

Acest „wrapper” a fost dezvoltat în VHDL şi permite încărcarea/descărcarea de cod nou în/din FPGA. Am experimentat şi cu un wrapper software, ce rulează pe calculatorul gazdă. Avantajul acestuia este ca e mai uşor de implementat, dar este mai lent în funcţionare şi necesită conectarea plăcii cu FPGA la calculatorul gazdă.

Modulul cu autoîntreţinere bazată pe reconfigurare a fost modelat şi încercat în limbajul VHDL şi transferat, experimental, în FPGA Xilinx. S-a lucrat cu  mediile Xilinx ISE şi Xilinx EDK, respectiv Workview şi Modelsim. Variantele noastre de astfel de module se bazează pe circuite combinaţionale, respectiv modele de procesoare simple (hMCPU, T80, picoBlaze, LEON), adăugându‑li‑se funcţii de autotest (BIST) şi autoreparare (BISR).

Figurile următoare ilustrează structura sistemului cu auto‑întreţinere (blocurile semi‑colorate se referă la facilităţi opţionale).

Figura 2 - Mecanisme cu auto‑întreţinere

 

Figura 3 - Agenţi Hardware Mobili în auto‑testare

 

Figura 4 - Agenţi Hardware Mobili în auto‑reparare

Modulele cu autoîntreţinere au fost dezvoltate cu circuite FPGA. Decizia de autoîntreţinere/reprogramare este în sarcina software, iar „repararea” propriu‑zisă a funcţionalităţii defecte este efectuată în FPGA, ca în imaginea de mai jos:

Figura 5 - Reparare prin mutarea unităţii funcţionale

5. Concluzii

Am prezentat aspecte ale analizei şi dezvoltării modelelor experimentale pentru modulele reconfigurabile cu autoîntreţinere, în special bazate pe FPGA. Totodată, am descris şi încercarea şi experimente cu aceste module.

Pentru sisteme reconfigurabile, cea mai bună soluţie s‑au dovedit circuitele FPGA, datorită flexibilităţii din punct de vedere al reprogramării.

Agenţii trebuie să fie bazaţi pe o platformă răspândită, de exemplu Java. Este nevoie de agenţi specializaţi, în cadrul societăţii de agenţi.

Caracteristica de autoîntreţinere este asigurată de agenţi software sau hardware, deoarece aceştia sunt adaptivi şi se pretează bine scopului propus.

Bibliografie

1.      Aglets Specification 1.1 Draft, available at http://www.trl.ibm.com/aglets/spec11.htm

2.      A. Benso, S. Enyedi, L. Miclea, Intelligent Agents and BIST/BISR - Working together in Distributed Systems, IEEE International test Conference, Baltimore (Maryland), October 2002.

3.      B. Brewington, R. Gray, K. Moizumi, D. Kotz, G. Cybenko and D. Rus, Mobile Agents for Distributed Information Retrieval. In Matthias Klusch, editor, Intelligent Information Agents, chapter 15, Springer-Verlag, 1999.

4.      S. Fischmeister, and W. Lugmayr. The Supervisor-Worker Pattern, Pattern Languages of Programs (PLoP'99) (Allerton House, IL, August 15-18, 1999).

5.      A. Fuggetta, G. P. Picco, G. Vigna, Understanding Code Mobility, IEEE Transactions on Software Engineering, vol. 24 ,  n. 5, pp. 342-361, May 1998.

6.      D. Kotz, R. Gray, and D. Rus, Future Directions for Mobile-Agent Research, IEEE Distributed Systems Online, vol. 3, n.8, August 2002.

7.      S. Krishnaswamy, A. Zaslavsky, and S.W. Loke, Techniques for Estimating the Computation and Communication Costs of Distributed Data Mining, Procs. of International Conference on Computational Science (ICCS2002) - Part I, Lecture Notes in Computer Science (LNCS) 2331, Springer-Verlag. pp. 603-612, 2002.

8.      National Institute of Standards and Technology (U.S.), Advanced Encryption Standard. Available at: http://csrc.nist.gov/publication/drafts/dfips-AES.pdf

9.      H. S. Nwana, Software Agents: An Overview, Knowledge Engineering Review: Intelligent Systems Research, AA&T, BT Laboratories, UK, pages 206-244, 1996.

10.  A. Padovitz, S. Krishnaswamy, and S.W. Loke, Towards Efficient and Smart Selection of Web Service Providers Before Activation, the Workshop on Web Services and Agent-based Engineering (WSABE 2003), Melbourne, Australia, July, 2003.

11.  H. Peine, Run-Time Support for Mobile Code, Ph.D. Thesis, Universität Kaiserslautern, 2002.

12.  G. P. Saggese, A. Mazzeo, N. Mazzocca, A. G. M. Strollo, An FPGA-Based Performance Analysis of the Unrolling, Tiling, and Pipelining of the AES Algorithm, FPL2003, LNCS 2778, pp. 292-302, 2003.

13.  J. Waldo, G. Wyant, A. Wollrath and S. Kendall, A Note on Distributed Computing, technical report SMLI TR-94-29, Sun Microsystems Labs Inc, 1994.

14.  M. Wooldridge and N. R. Jennings, Agent Theories, Architectures and Languages: A Survey, Intelligent Agents: ECAI-94 Workshop on Agent Theories, Architecture and Languages, pages 1-32, 1995.

15.  B. Zeidman, The future of programmable logic, http://www.embedded.com/showArticle.jhtml?articleID=15201141

 

Cluj-Napoca, 23 oct. 2008

                                                                                                         Director proiect,

                                                                                                         Prof.dr.ing. Liviu MICLEA