1. Trang chủ
  2. » Công Nghệ Thông Tin

Digitale Hardware/ Software-Systeme- P16 ppt

20 164 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 228,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

6.44 muss zun¨achst die Berechnung einer Instruktion ab-geschlossen sein, bevor mit Hilfe des PC eine neue Instruktion geladen wird.. Die Instruktionssatzarchitektur beschreibt, wie sich

Trang 1

bestimmt Alternativ kann ein Operand auch direkt als Konstante in der Instruktion gespeichert sein

In der ALU wird anschließend die durch der Instruktion codierte Operation be-rechnet Das berechnete Ergebnis der ALU kann entweder als Adresse zum Laden oder Speichern von Daten aus bzw in den Hauptspeicher dienen oder im Register-satz gespeichert werden Alternativ zu ALU-Operationen kann ¨uber einen Addierer (ADD) eine neue Sprungadresse f¨ur den PC, also die Adresse der n¨achsten Instruk-tion, berechnet werden

Die Instruktionssatzarchitektur des Prozessors ist durch die Operationen der ALU (typischerweise Addition, Subtraktion und logische Vergleiche), den Lade-und Speicherbefehlen Lade-und den implementierten Sprungbefehlen gegeben Auf der Mikroarchitektur in Abb 6.44 muss zun¨achst die Berechnung einer Instruktion ab-geschlossen sein, bevor mit Hilfe des PC eine neue Instruktion geladen wird Arbeitet die Mikroarchitektur wie die ISA sequentiell, so kann die Verifikation als Automaten¨aquivalenz formuliert werden Die Implementierungen von Prozes-soren sind allerdings immer komplexer geworden Die Mikroarchitektur eines mo-dernen Prozessors besteht heutzutage aus mehreren parallelen Pipelines mit Multi-zyklen-Funktionseinheiten, Sprungvorhersage, spekulativer Ausf¨uhrung und sogar

dynamischer Ablaufplanung von Instruktionen (engl out-of-order execution, OOO).

Diese Optimierungen an der Mikroarchitektur zielen darauf ab, den Instruktions-durchsatz des Prozessors zu erh¨ohen

Mit der zunehmenden Komplexit¨at von Prozessoren werden zuverl¨assige Veri-fikationsans¨atze ben¨otigt, die es erlauben, die ¨Aquivalenz von ISA und optimierter Mikroarchitektur zu beweisen Im Folgenden werden einige wichtige Ans¨atze zur

¨

Aquivalenzpr¨ufung von Prozessoren n¨aher diskutiert Zun¨achst werden

Verifikati-onsans¨atze f¨ur Prozessoren mit Fließbandverarbeitung (engl pipelining) diskutiert.

Anschließend werden Erweiterungen f¨ur Prozessoren mit Funktionseinheiten, deren

Berechnungen mehrere Takte dauern, sog Multizyklen-Funktionseinheiten, Mikroar-chitekturen mit Ausnahmebehandlung und MikroarMikroar-chitekturen mit

Sprungvorhersa-ge betrachtet Daneben wird in modernen Prozessoren auch st¨andig die Parallelit¨at der Mikroarchitekturen erh¨oht Erweiterungen zur Verifikation von sog superska-laren Mikroarchitekturen, also Architekturen, welche die gleichzeitige Bearbeitung mehrerer Instruktionen erlauben, und Mikroarchitekturen, die eine dynamische Ab-laufplanung von Instruktionen erlauben, werden zum Schluss behandelt.

6.3.1 ¨ Aquivalenzpr ¨ufung f ¨ur Prozessoren mit Fließbandverarbeitung

Das Verhaltensmodell der Spezifikation eines Prozessors entspricht einem funktio-nalen Modell des Prozessors, wie er von einem Programmierer gesehen wird, d h

die einzelnen Instruktionen sind in der sog Instruktionssatzarchitektur

zusammen-gefasst Es handelt sich hierbei um eine Beschreibung, der die Ausf¨uhrung von In-struktionen einzeln und nacheinander zugrunde liegt

Die Prozessorimplementierung muss allerdings nicht zwangsl¨aufig alle Instruk-tionen sequenziell ausf¨uhren Es ist denkbar und g¨angige Praxis, dass die Ausf¨uhrung

Trang 2

von Instruktionen verschr¨ankt erfolgt Dies wird mit Hilfe einer sog Fließbandver-arbeitung realisiert.

Beispiel 6.3.2 Betrachtet wird der Prozessor aus Beispiel 6.3.1 in Abb 6.44

Ei-ne Mikroarchitektur, die eiEi-ne f¨unfstufige PipeliEi-ne implementiert ist in Abb 6.45 zu sehen Die einzelnen Pipeline-Stufen sind durch Pipeline-Register (graue Bl¨ocke) voneinander getrennt In der ersten Stufe erfolgt das Laden einer neuen Instruktion

(engl instruction fetch, IF) In der zweiten Stufe wird die Instruktion decodiert (engl instruction decode, ID) Die eigentliche Berechnung erfolgt in Stufe drei (engl exe-cute, EX) Stufe vier ist den Speicherzugriffen (engl memory, MEM) vorbehalten Hier werden die entsprechenden Lade- und Speicherbefehle (engl load/store) durch-gef¨uhrt In der f¨unften Stufe wird schließlich das Zur¨uckschreiben (engl write back, WB) des Ergebnisses in den Registersatz ausgef¨uhrt Der ¨Ubersichtlichkeit halber wurde wiederum der Kontrollpfad des Prozessors nicht dargestellt

read data 1

data 2 read

ALU ADD

read data Instruction

Memory

ADD

Memory Data read

register 2 write register

read register 1

address address

4

Register File

write data

write data

Abb 6.45 Mikroarchitektur mit f¨unfstufiger Pipeline des Prozessors aus Abb 6.44 [355]

Die Aufgabe einer formalen ¨Aquivalenzpr¨ufung zwischen Instruktionssatzarchi-tektur und Prozessorimplementierung ist, zu zeigen, dass beide die selben Ergebnisse berechnen Dies unterscheidet sich von der ¨Aquivalenzpr¨ufung f¨ur endliche Automa-ten, da die Mikroarchitektur mit Fließbandverarbeitung mehr Zust¨ande besitzt als die sequentielle Instruktionssatzarchitektur Deshalb ist es notwendig, beide Architektu-ren lediglich bez¨uglich des f¨ur den Programmierer sichtbaArchitektu-ren Zustands zu

verglei-chen Dies wird in der Literatur auch als ¨ Ubereinstimmungsproblem bezeichnet.

Trang 3

Aquivalenzpr ¨ufung mit Gleichheit und uninterpretierten Funktionen

Viele Entwurfsfehler bei Prozessoren mit Fließbandverarbeitung entstehen in der Steuerungseinheit des Prozessors Aus diesem Grund werden im Folgenden aus-schließlich Verfahren betrachtet, die diese Art von Entwurfsfehlern aufdecken k¨on-nen Dies bedeutet, dass davon ausgegangen wird, dass die kombinatorische Logik, die den Datenpfad des Prozessors realisiert (also die eigentlichen Berechnungen durchf¨uhrt), fehlerfrei ist Zur Abstraktion des Datenpfads f¨uhren Burch und Dill die Theorie der

Gleichheit und uninterpretierte Funktionen“ (engl Equality and

Uninterpreted Functions, EUF) ein [75].

Korrektheitskriterium

Der Verifikationsprozess geht von einer Verhaltensbeschreibung in der Spezifika-tion (InstrukSpezifika-tionssatzarchitektur) und einer Strukturbeschreibung der Implementie-rung (Mikroarchitektur) aus Die Instruktionssatzarchitektur beschreibt, wie sich der f¨ur den Programmierer sichtbare Zustand des Prozessors durch die Ausf¨uhrung einer Instruktion ¨andert Dies kann durch eine sequentielle Mikroarchitektur mit

Zustands-raum Suund Eingabealphabet I modelliert werden Die Implementierung basiert auf dem selben Eingabealphabet I und f¨ur den Programmierer sichtbaren Zustandsraum

Su Dar¨uber hinaus besitzt eine Mikroarchitektur mit Fließbandverarbeitung auch

Pipeline-Register, deren Zustandsraum durch Spmodelliert wird

Sowohl die sequentielle Mikroarchitektur als auch die Mikroarchitektur mit

Fließbandverarbeitung lassen sich in ¨ Ubergangsfunktionen fspecbzw fimpl ¨uberset-zen Beide ¨Ubergangsfunktionen erhalten als erstes Argument den aktuellen Zustand und als zweites Argument die momentane Eingabe (Instruktion) Die R¨uckgabewert der Funktionen ist der Folgezustand, d h

fspec: Su× I → Su,

fimpl:(Su× Sp) × I → (Su× Sp).

Um die ¨ Aquivalenz von Mikroarchitektur und ISA zu beweisen, muss gezeigt

werden, dass, ausgehend von einem beliebigen Paar ¨aquivalenter Zust¨ande aus der Spezifikation und Implementierung, die Ausf¨uhrung einer beliebigen Instruktion zu dem selben Ergebnis f¨uhrt Anschließend m¨ussen sich Spezifikation und Implemen-tierung zus¨atzlich in ¨aquivalenten Zust¨anden befinden Dies kann durch ein kommu-tatives Diagramm dargestellt werden (siehe Abb 6.46) Dabei wird die Abstraktion von dem momentanen Zustand der Mikroarchitektur (Prozessorzustand) auf den f¨ur den Programmierer sichtbaren Zustand durch die Funktion abs :(Su× Sp) → Su be-rechnet Die Anfangszust¨ande von ISA und Mikroarchitektur sind per definitionem

¨aquivalent

Um zu ¨uberpr¨ufen, ob sich Spezifikation und Implementierung in ¨aquivalenten

Zust¨anden befinden, bietet es sich an, ein Flushing der Pipeline durchzuf¨uhren

Na-hezu alle Prozessoren besitzen spezielle Instruktionen, die eine Weiterverarbeitung von Instruktionen in der Pipeline erlauben, ohne dass neue Instruktionen initiiert

Trang 4

fimpl(q,i)

q 

s 

Abstraktion Abstraktion

Abb 6.46 Kommutatives Diagramm zur Visualisierung der ¨Aquivalenzpr¨ufung von Prozes-soren [451]

werden Eine solche spezielle Instruktion istall wird als engl stalling bezeich-net, d h fimpl(q,istall) berechnet den Folgezustand des Prozessors bei einmaliger

Ausf¨uhrung von istallim Zustand q Durch eine hinreichende Wiederholung dieser

Instruktion k¨onnen alle Instruktionen in der Pipeline abgearbeitet werden Dies wird

als engl Flushing der Pipeline bezeichnet Diese Idee f¨uhrt zu dem kommutativen

Diagramm in Abb 6.47

s

s 

fimpl(q,i)

q 

q

fspec(s,i)

fimpl(q 

n −1,istall ) proj(q 

n)

fimpl(q n −1,istall ) proj(q n)

fimpl(q,istall ) fimpl(q1,istall )

fimpl(q  ,istall ) fimpl(q 

1,istall )

Abb 6.47 Kommutatives Diagramm mit Flushing der Pipeline [75]

In diesem kommutativen Diagramm wird davon ausgegangen, dass sich der

Pro-zessor in einem beliebigen Zustand q befindet Um den f¨ur den Programmierer sicht-baren Zustand zu extrahieren, wird zun¨achst ein Flushing der Pipeline durchgef¨uhrt.

Sind keine Instruktionen mehr zur Verarbeitung in der Pipeline, kann von dem

Pro-zessorzustand q ndurch Projektion (Ausblenden des Zustands der Pipeline-Register)

auf den f¨ur den Programmierer sichtbaren Zustand s geschlossen werden, d h es existiert eine Projektionsfunktion proj : (Su×Sp) → Su Ausgehend von s kann durch Ausf¨uhrung der Instruktion i der Folgezustand s in der Spezifikation bestimmt wer-den

Der selbe Zustand s muss als f¨ur den Programmierer sichtbaren Zustand erreicht

werden, wenn sich der Prozessor im Zustand q befindet, die Instruktion i ausgef¨uhrt,

und eine Flushing der Pipeline durchgef¨uhrt wird Nach Ausf¨uhrung von i und dem

Flushing der Pipeline befindet sich der Prozessor im Zustand q  n Durch Projektion

wird der Zustand s in der ISA erreicht Vergleicht man dies mit Abb 6.46, so ergibt

Trang 5

abs(su,sp) := proj( fimpl+ ((su,sp), i stall, ,istall ))

wobei l die Anzahl der Pipeline-Stufen und fimpl+ die erweiterte ¨Ubergangsfunktion f¨ur die Implementierung nach Gleichung (4.3) auf Seite 142 ist Hiermit kann das Korrektheitskriterium nach Abb 6.46 wie folgt definiert werden:

∀su,sp,i : abs( fimpl(su,sp,i)) ≡ f? spec(abs(su,sp),i) (6.11)

Dabei ist i eine beliebige Instruktion aus dem Instruktionssatz des Prozessors Korrektheitsbeweis

Um zu zeigen, dass die Implementierung eines Prozessors ¨aquivalent zu dessen

Spe-zifikation ist, muss gezeigt werden, dass fimpl(q,i) und fspec(s,i) ¨aquivalent f¨ur ein

beliebiges Paar ¨aquivalenter Zust¨ande(q,s) und eine beliebige Instruktion i sind

(siehe Gleichung (6.11)) Beide Funktionen k¨onnen jeweils als Vektor symbolischer Ausdr¨ucke repr¨asentiert werden Jedes Element eines Vektors entspricht dabei ei-ner f¨ur den Programmierer sichtbaren Zustandsvariablen Die Ausdr¨ucke k¨onnen nacheinander z B durch symbolische Simulation der Spezifikation bzw der Imple-mentierung gewonnen werden Dabei muss die ImpleImple-mentierung mehrfach stimuliert werden, um das Flushing der Pipeline zu simulieren

Seien(q1, ,q n ) und (s1, ,s n) Vektoren von Ausdr¨ucken Um die ¨Aquivalenz

der Funktionen fimplund fspeczu zeigen, muss die Gleichheit der Ausdr¨ucke q kund

s k f¨ur alle k gezeigt werden, d h ∀1 ≤ k ≤ n : q k = s kgelten

Zur Abstraktion vom Datenpfad des Prozessors werden die Ausdr¨ucke q k und

s k mit Hilfe der Theorie

Gleichheit und Uninterpretierte Funktionen“(engl

Equa-lity with Uninterpreted Functions, EUF) gebildet In EUF werden Funktionen nicht ausgewertet, sondern lediglich durch Funktionssymbole repr¨asentiert Die einzige

Annahme, die ¨uber Funktionen in EUF getroffen wird, lautet:

(x1= y1) ∧ (x2= y2) ⇒ f (x1,x2) = f (y1,y2)

Dies bedeutet, dass Funktionen, die durch das selbe Funktionssymbol f

repr¨asen-tiert werden, und die mit ¨aquivalenten Argumenten aufgerufen werden, das gleiche Ergebnis liefern

Beispiel 6.3.3 Betrachtet wird der Prozessor aus Beispiel 6.3.2 in Abb 6.45 Die

Einheit zum Inkrement des PC, der Addierer zur Berechnung von Sprungzielen und

die ALU k¨onnen jeweils durch die Funktionssymbole finc, faddbzw faluabstrahiert

werden Ebenfalls kann der Instruktionsspeicher durch ein Funktionssymbol fim re-pr¨asentiert werden, da dieser niemals modifiziert wird Dies ist in Abb 6.48 zu sehen

EUF kann durch die folgende Syntax repr¨asentiert werden:

Trang 6

read data 1

data 2

data Memory Data read

register 2 write register

read register 1

address Register File

finc

fadd

falu

fim

write data write

data

Abb 6.48 Mikroarchitektur des Prozessors aus Abb 6.45 mit Funktionssymbolen

term :: = ITE( f ormula,term,term)

| f unction symbol(term, ,term)

f ormula :: = F | T | ¬ f ormula

| ( f ormula ∧ f ormula) | ( f ormula ∨ f ormula)

| (term = term) | predicate symbol(term, ,term)

In EUF tragen Formeln ( f ormula) entweder den Wert F (falsch) oder T (wahr)

Ter-me (term) k¨onnen beliebige Werte tragen und werden aus uninterpretierten Funk-tionssymbolen und der Anwendung des ITE-Operators (engl if-then-else) gebildet.

Der ITE-Operator w¨ahlt dabei zwischen zwei Termen aus, basierend auf dem Wert einer Steuerungsvariablen, d h ITE(F,x1,x2) ergibt x2, w¨ahrend ITE(T,x1,x2) das

Ergebnis x1liefert

Formeln werden gebildet, indem zwei Terme auf Gleichheit ¨uberpr¨uft, ein un-interpretiertes Pr¨adikatensymbol (predicate symbol) auf eine Liste von Termen

an-gewendet, oder Formeln mit Hilfe aussagenlogischer Operatoren (∧,∨) verkn¨upft

werden Eine Formel, die zwei Terme auf Gleichheit ¨uberpr¨uft, wird als Gleichung bezeichnet Der Begriff Ausdruck bezeichnet im Folgenden sowohl Terme als auch

Formeln

Zu jedem Funktionssymbol f gibt es eine sog Ordnung ord ( f ), welche die

An-zahl der Argumente angibt Funktionssymbole mit Ordnung null werden als

Varia-blen betrachtet In diesem Fall wird anstatt von v () auch die kurze Schreibweise v

verwendet Ebenfalls besitzen Pr¨adikatensymbole p eine Ordnung ord (p)

Pr¨adika-tensymbole der Ordnung null werden als aussagenlogische Variablen bezeichnet In

diesem Fall wird a anstelle von a() geschrieben

Trang 7

Der Wahrheitsgehalt einer Formel wird relativ zu einer nichtleeren Definitions-mengeD und einer Interpretation I der Funktions- und Pr¨adikatensymbole definiert.

Eine InterpretationI weist jedem Funktionssymbol der Ordnung k eine Funktion von

D knachD und jedem Pr¨adikatensymbol der Ordnung k eine Funktion von D knach

{F,T} zu Im Sonderfall der Ordnung null wird dem Funktionssymbol

(Pr¨adikaten-symbol) eine Variable aus der Definitionsmenge (der Menge{F,T}) zugewiesen.

Gegeben sei eine InterpretationI sowie ein Ausdruck E Die Bewertung von E

unter der InterpretationI, geschrieben als I[E], kann rekursiv entsprechend

Tabel-le 6.5 erfolgen

Tabelle 6.5 Bewertung von EUF Formeln und Termen [67]

Ausdruck E BewertungI[E]

F1∧ F2 I[F1] ∧ I[F2]

T1= T2 I[T1] = I[T2]

ITE(F,T1,T2) ITE(I[F],I[T1],I[T2])

FallsI[F] = T gilt, so sagt man, dass die Formel F unter der Interpretation I

g¨ultig ist Eine Formel ist g¨ultig in der Dom¨aneD, falls sie f¨ur alle Interpretationen

¨uberD g¨ultig ist Schließlich heißt die Formel F allgemeing¨ultig, falls sie ¨uber

al-le DefinitionsbereicheD g¨ultig ist Es ist bekannt, dass eine gegebene Formel ¨uber

dem DefinitionsbereichD g¨ultig ist, genau dann, wenn sie ¨uber alle anderen

Defini-tionsbereichen mit der selben Kardinalit¨at g¨ultig ist Weiterhin gilt, dass wenn eine gegebene Formel f¨ur eine angemessen große Definitionsmenge g¨ultig ist, so ist sie allgemeing¨ultig [2]

Reduktion von EUF auf Aussagenlogik

Eine M¨oglichkeit EUF-Formeln auf ihre G¨ultigkeit zu ¨uberpr¨ufen besteht darin, die EUF-Formeln auf aussagenlogische Formeln zu reduzieren Hierzu m¨ussen die Funktions- und Pr¨adikatensymbole eliminiert werden Grundlegende Arbeiten zur Elimination von Funktionssymbolen mit Ordnung eins und h¨oher sind in [2] zu fin-den Dabei wird jeder Term, der eine Anwendung eines Funktionssymbol beinhaltet, durch eine neue Definitionsbereichsvariable ersetzt und zus¨atzlich Beschr¨ankungen

zu der Formel hinzugef¨ugt, um funktionale Konsistenz zu erreichen

Ein alternativer Ansatz ist in [67] beschrieben, bei dem jede Anwendung eines Funktionssymbols durch einen ITE-Operator ersetzt wird Die Idee dabei ist, dass

¨uber alle Funktions- und Pr¨adikatensymbole mit Ordnung eins oder h¨oher iteriert wird, und dabei jedes Auftreten des Symbols durch eine ITE-Operation eliminiert wird Ohne den Algorithmus aus [67] zu wiederholen, wird das Prinzip anhand eines Beispiels demonstriert

Trang 8

Beispiel 6.3.4 Gegeben ist die EUF-Formel:

¬(x = y) ∨ (h(g(x),g(g(x))) = h(g(y),g(g(x)))) (6.12) Schematisch l¨asst sich Gleichung (6.12) wie in Abb 6.49 dargestellt repr¨asentie-ren Definitionsbereichsvariablen werden dabei als Eing¨ange dargestellt Werte des Definitionsbereichs werden als durchgezogene Linien dargestellt Aussagenlogische Variablen werden als gestrichelte Linien gezeichnet Der Ausgang repr¨asentiert die gesamte EUF-Formel

= h

h

¬

=

g

g g

Abb 6.49 Schematische Repr¨asentation von Gleichung (6.12) [67]

Um die Funktionssymbole in Gleichung (6.12) durch ITE-Operationen zu erset-zen, m¨ussen die Funktionssymbole nacheinander betrachtet werden Zun¨achst wird das Funktionssymbol g betrachtet Insgesamt wird dieses in drei Termen in Glei-chung (6.12) verwendet: g(x), g(y) und g(g(x)) Diese drei Terme werden durch die

Bezeichner T1, T2 und T3 identifiziert Weiterhin werden drei neue

Definitionsbe-reichsvariablen v g1 , v g2 und v g3 eingef¨uhrt Der Term T1ergibt sich dann wie folgt:

Dies bedeutet, dass die Anwendung des Funktionssymbols g auf das Argument x mit einer neuen Variablen v g1repr¨asentiert wird Die Anwendung des Funktionssymbols

g auf das Argument y kann auf ¨ahnliche Art durch die Variable v g2 repr¨asentiert

werden Allerdings kann man an dieser Stelle bereits den Sonderfall x = y mit g(x) =

g(y) ber¨ucksichtigen Dies ergibt die folgende Definition des Terms T2:

Schließlich wird der Term T3, der den Ausdruck g(g(x)) repr¨asentiert,

betrach-tet An dieser Stelle muss die Variable v g1, die den Ausdruck g(x) repr¨asentiert,

wie-derverwendet werden Im Allgemeinen m¨ussen verschachtelte Anwendungen von Funktionssymbolen stets von Innen nach Außen aufgel¨ost werden Wie im Fall von

Trang 9

T2in Gleichung (6.14), muss bei T3eine Fallunterscheidung vorgenommen werden Diese ist aber geschachtelt:

Mit anderen Worten: Ist der Funktionswert von g(x) = x, so muss der Funktionswert

von g(g(x)) ebenfalls x sein Falls dies nicht zutrifft, der Funktionswert von g(x)

aber gleich y ist, so muss das Ergebnis von g (g(x)) = g(y) sein Dies wurde bereits

in Gleichung (6.14) definiert Mit der Nebenbedingung, dass g(x) = x ist, ergibt dies

v g2 In allen anderen F¨allen k¨onnen keine weiteren Annahmen ¨uber den

Funktions-wert f¨ur den Term T3getroffen werden, d h der Funktionswert wird durch eine neue

Variable v g3repr¨asentiert

Schematisch l¨asst sich die Elimination des Funktionssymbols g durch ITE-Operationen in dem DAG aus Abb 6.49 einzeichnen Verwendet man zur Re-pr¨asentation des ITE-Operators Multiplexer, so kommt man zu der Darstellung in

Abb 6.50a) Man beachte, dass ¨uber die Variablen v g1 , v g2 und v g3keinerlei Annah-men getroffen wurden, weshalb die Reduktion allgemeing¨ultig ist

Die Elimination des Funktionssymbols h erfolgt analog mit Hilfe der

Definiti-onsbereichsvariablen v h1 und v h2 Dabei wird die erste Anwendung des

Funktions-symbols durch die Variable v h1ersetzt und die zweite Anwendung durch eine ITE-Operation, welche die Argumente der beiden Funktionsaufrufe vergleicht Falls diese identisch sind, m¨ussen auch die Funktionswerte identisch sein Andernfalls muss der

neue (unbekannte) Funktionswert durch eine neue Variable v h2repr¨asentiert werden Das Ergebnis ist in Abb 6.50b) zu sehen

Nach der Elimination von Funktions- und Pr¨adikatensymbolen m¨ussen die De-finitionsbereichsvariablen noch geeignet codiert werden, um zu einer aussagenlogi-schen Formel zu gelangen Dies wird hier nicht weiter betrachtet

Effiziente Speichermodellierung

Bei der Prozessorverifikation m¨ussen typischerweise Speicherzugriffe ber¨ucksichtigt werden Der Adressraum wird dabei als unendlich angenommen Kann die ¨ Aqui-valenz unter dieser Annahme gezeigt werden, so gilt diese auch unter der

Annah-me eines endlichen Speichers (Registersatz und Hauptspeicher) Mit der oben be-schriebenen Theorie zur

”Gleichheit und uninterpretierte Funktionen“ lassen sich unter bestimmten Konventionen Speicherzugriffe modellieren Dies erfolgt durch

ei-ne Verschachtelung von ITE-Operatoren zur Repr¨asentation von Lesezugriffen auf den Speicher In dieser Verschachtelung ist die Historie aller Schreibzugriffe erfasst,

d h nach k Schreiboperationen an die Adressen a1, ,a k mit den Daten d1, ,d k

kann der Effekt einer Leseoperation auf Adresse a wie folgt modelliert werden:

ITE(a = a k ,d k ,ITE(a = a k −1,d k −1, ,ITE(a = a1,d1, finit(a)) ))

Dabei beschreibt finit(a) eine uninterpretierte Funktion, die den Anfangswert an der

Adresse a repr¨asentiert.

Trang 10

b)

v g1

=

=

=

=

=

=

T F

T F T F

T F

T F

T F

¬

¬

=

=

h

h

T F

=

=

v g3

v g2 y

x

x y v g1 v g2

Abb 6.50 Elimination des a) Funktionssymbols g und b) des Funktionssymbols h [67]

Oftmals ist es jedoch effektiver zwei spezielle Funktionen freadund fwritezu

ver-wenden Die Funktion fwrite(mem,addr,val) besitzt drei Argumente: den

momenta-nen Speicherinhalt mem, die Schreibadresse addr und das Datum val Sie gibt den aktualisierten Speicherinhalt zur¨uck Die Funktion fread(mem,addr) besitzt zwei

Ar-gumente: den Speicherinhalt mem und die Leseadresse addr Die Funktion gibt den

an der Adresse addr gespeicherten Wert zur¨uck, wobei die folgende Konvention

ein-gehalten wird:

fread( fwrite(mem,addr1,val),addr2) =



fread(mem,addr2) sonst

Einen anderen Ansatz verfolgen Bryant und Velev durch die Einf¨uhrung eines effizienten Speichermodells [68] (siehe auch Abschnitt 6.4.2) F¨ur die symbolische

Ngày đăng: 03/07/2014, 08:20