Sunteți pe pagina 1din 5

Utilizarea modelelor Markov pentru verificarea microprocesoarelor

Pentru a combina puterea tehnicilor formale cu cele bazate pe simulari, metodele semi-formale au fost larg explorate. Dintre acestea, metoda simularii abstracte poate oferi rezultate promitatoare. In continuare se va prezenta utilizarea unui model Markov pentru verificarea functionalitatii unui microprocesor, incluzand starile greu de atins(hard-toreach states).Modelul va fi creat pe baza specificatiilor functionale de nivel inalt: ISA (Instruction Set Architecture) si va utiliza corelatii de vectori. Testarea functionalitatii este un factor critic in cadrul fluxului design-ului, in special din cauza complexitatii arhitecturii microprocesoarelor. Tehnica simularii ghidate prin abstractizare, ce va fi analizata in continuare, are la baza urmatorul principiu: informatiile partiale legate de design sunt calculate pe baza unui model abstract si apoi sunt folosite pentru a ghida simularea spre target. In ceea ce priveste generarea de teste pentru starile hard-to-reach, exista diverse abordari care incorporeaza fie un generator de test aleator, insotit de o stategie de ghidare, fie un generator de test inteligent prin utilizarea, spre exemplu, a algoritmilor evolutionisti. Prima varianta este prea simpla pentru a putea obtine o eficienta ridicata, iar ultima este nepotrivita pentru verificarea functionalitatii. Avantajele utilizarii unui model Markov:

1)
2)

3)

Specificatiile design-ului sunt folosite pentru a facilita crearea unui model Markov si implicit, a unor vectori functionali valizi si a modelarii vectorilor de corelatie Exista strategii care ajusteaza modelul Markov in timpul simularii, ceea ce imbunatateste eficienta generarii testelor. De asemenea, sunt integrate unele strategii ce au menirea de evita blocarea in dead-enduri. In ceea ce priveste abstractizarea, ea este implementata intr-un mod granular; este obtinuta pe baza grafului de dependenta a datelor in jurul variabilelor starilor-tinta. In cazul in care informatiile extrase sunt prea mari pentru a fi procesate, se foloseste tehnica divide-et-impera.

Simularea ghidata de abstractizare Aceasta metoda presupune analiza formala a unui model abstract simplificat. Informatiile abstracte obtinute sunt apoi folosite pentru a directiona simularea catre target-uri. Principiul de functionare al acestei metode este ilustrat in figura de mai jos: simularea incepe dintr-un anumit punct si face cautari inainte in diferiti pasi. Fiecare stare atinsa este evaluata prin distanta abstracta fata de target, calculata pe baza unui model abstract. Starea cea mai apropiata de tinta este aleasa ca urmatoarea stare de start. Cautarea se incheie daca s-a ajuns intr-o vecinatate a target-ului sau daca s-a atins numarul maxim de iteratii.

Dupa cum se poate observa si in imagine, principala problema este intalnirea dead-end-urilor, cauzate de devierile abstractizarii.

Fig 1: Dead-end-urile apar de obicei din cauza discrepantelor din design-ul real si cel abstract

Aceste stari par a fi apropiate de target, in termenii distantelor abstracte. Modelul Markov In general, modelul Markov este un graf orientat cu arce ponderate. Fiecare nod reprezinta o tranzactie sau un tip de tranzactii, in timp ce ponderile de pe arce reprezinta probabilitatea de tranzitie de la sursa la destinatie. In cadrul simularii, o tranzitie de la nodul A la nodul B presupune faptul ca o instructiune de tip A este generata, urmata de una de tip B. La inceput, toate ponderile arcelor ce ies dintr-un nod sunt egale, ceea ce inseamna ca tranzitiile sunt generate aleator. Ponderile pot fi ajustate dinamic pentru a putea fi generate secvente de tranzactii specifice. Fig 2 reprezinta un exemplu de model Markov generat pe baza arhitecturii setului de instructiuni al unui procesor. Pentru a fi aplicat in simularea ghidata de abstractizare, modelul Markov trebuie perfectionat. In acest caz, fiecare nod este echipat cu variabile dependente, folosindu-se totodata si o strategie eficienta de ajustare prin feedback.

Fig 2: Un exemplu de model Markov construit pe baza arhitecturii setului de instructiuni a unui procesor simplu.

Mod de abordare Schema modului de abordare este prezentata in figura 3. Intrarile sunt starea-tinta si descrierea RTL(register-transfer level) a design-ului. Iesirea este o secventa de vectori de test care conduc spre starea-tinta. Intreg fluxul de activitate incepe de la masina de abstractizare care extrage un model abstract si ii calculeaza pre-imagini pentru a obtine informatii referitoare la distantele abstracte. Asemenea informatii vor fi trimise controller-ului pentru ghidarea simularii. Graful dependentelor de date a logicii din vecinatatea variabilelor starii-tinta este utilizat pentru a asista procesul de abstractizare. Se creeaza apoi un generator de test bazat pe un model Markov in functie de specificatiile design-ului. In cadrul simularii, vectorii de test generati de modelul Markov sunt trimisi design-ului in fiecare ciclu. Dupa un ciclu de simulare, se colecteaza starea curenta a design-ului care este analizata de controller-ul pentru ghidarea simularii. In functie de informatiile obtinute, modelul Markov este ajustat corespunzator astfel incat convergenta catre starea-tinta sa fie cat mai rapida.

Fig 3

Corelatiile vectorilor de test In urma analizei starilor hard-to-reach din diferite design-uri, s-a constatat ca pentru stimulare sunt necesari vectori de test corelati. Acest lucru este valabil mai ales pentru design-uri complexe care au multe intrari primare. Spre exemplu, pentru a stimula logica de inaintare in cadrul unui procesor, este necesar sa existe corelatii puternice intre instructiuni consecutive. Metoda prezentata stabileste corelatia intre vectorii de test in 2 moduri. Una este reprezentata de secventele de operatii preferate generate implicit de modelul Markov, alta de variabilele de dependenta in instructiuni. Conceptul de variabile de dependenta este folosit pentru a exersa punctele de activitate specificate de user, de catre o metoda bazata pe modelul Markov. Structura variabilelor de dependenta este implementata cu ajutorul unui cache al istoricului valorilor lor. Exista 3 parametri importanti: marimea cache-ului ce este implementata cu ajutorul unei cozi(adica o structura de tip FIFO) de capacitate fixa, probabilitatea de a accesa cache-ul si gradul de dependenta ce este implementat ca o distributie exponentiala descrescatoare cu parametrul . Istoricul informatiilor variabilelor dependente sunt partajate de toate nodurile grafului. Pentru modelul Markov, operanzii imediati si numerele registrelor sunt considerate ca variabile de dependenta. Fig 4 prezinta fluxul de activitati pentru generarea instructiunii BEQZ( branch if equal to zero) cu ajutorul variabilelor de dependenta. Conform ISA, o instructiune este compusa din 4 campuri: codul operatiei (opcode), numerele de registri (rs,rt) si valoarea imediata(offset). Daca un camp(spre

exemplu, offset) nu este o variabila de dependenta, atunci i se atribuie o valoare de catre modelul Markov. Altfel, se poate sa primeasca o valoare in functie de istoricul valorilor.

Fig 4

Evaluarea starilor Dupa fiecare ciclu de simulare, starea curenta a design-ului este preluata prin feedback de catre controller-ul de ghidare a simularii si apoi se face o analiza prin care se determina feedback-ul corespunzator modelului Markov. Informatiile referitoare la distanta abstracta obtinute inainte sunt folosite in acest proces. Strategia de ajustare a modelului Markov Odata ce o stare este definita ca excelenta, tranzitia catre aceasta in modelul Markov este intarita si astfel, acest tip de instructiuni au o probabilitate ridicata de a fi generate mai tarziu. Ajustarea se produce in urmatorul mod: mai intai este identificat arcul corespunzator tranzitiei; apoi ponderea de pe acest arc este incrementata cu o valoare Pincr, iar ponderile de pe celelalte arce care pornesc din acelasi nod sunt ajustate astfel incat suma valorilor normalizate sa fie 1. Se seteaza limitele de valori intre care se poate gasi valoarea ponderii de pe un arc, Pmin si Pmax pentru a evita blocarea intr-un optim local(in plus, la fiecare 100 000 de cicli, modelul se reseteaza tocmai pentru a evita astfel de blocari). In consecinta, chiar daca un tip de instructiuni este foarte popular la un anumit moment de timp, exista totusi probabilitati minime pentru alte tranzactii din vecinatate. In concluzie, un astfel de model este foarte util datorita mecanismelor implementate prin care asigura o viteza ridicata de atingere a starilor-tinta: eficienta simularii si evitarea dead-end-urilor.

S-ar putea să vă placă și