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

Digitale Hardware/ Software-Systeme- P11 potx

30 269 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

Tiêu đề Formale Verifikation von Prozessorsystemen
Trường học Technische Universität München
Chuyên ngành Hardware-Verifikation
Thể loại Facharbeit
Thành phố München
Định dạng
Số trang 30
Dung lượng 289,85 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.Arbeitet die Mikroarchitektur wie die ISA sequentiell,

Trang 1

bestimmt Alternativ kann ein Operand auch direkt als Konstante in der Instruktiongespeichert sein.

In der ALU wird anschließend die durch der Instruktion codierte Operation rechnet Das berechnete Ergebnis der ALU kann entweder als Adresse zum Ladenoder 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

be-Die Instruktionssatzarchitektur des Prozessors ist durch die Operationen derALU (typischerweise Addition, Subtraktion und logische Vergleiche), den Lade-und Speicherbefehlen und den implementierten Sprungbefehlen gegeben Auf derMikroarchitektur 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 Verifikationals 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 durchsatz des Prozessors zu erh¨ohen

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

Veri-¨

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, chitekturen mit Ausnahmebehandlung und Mikroarchitekturen mit Sprungvorhersa-

Mikroar-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 nalen Modell des Prozessors, wie er von einem Programmierer gesehen wird, d h

funktio-die einzelnen Instruktionen sind in der sog Instruktionssatzarchitektur

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

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

Trang 2

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

Fließbandver-Beispiel 6.3.2 Betrachtet wird der Prozessor aus Fließbandver-Beispiel 6.3.1 in Abb 6.44

Ei-ne Mikroarchitektur, die eiEi-ne f¨unfstufige PipeliEi-ne implementiert ist in Abb 6.45 zusehen 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 halberwurde 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

write data

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

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

Instruktionssatzarchi-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 derSteuerungseinheit 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 Berechnungendurchf¨uhrt), fehlerfrei ist Zur Abstraktion des Datenpfads f¨uhren Burch und Dilldie Theorie der

Gleichheit und uninterpretierte Funktionen“ (engl Equality and

Uninterpreted Functions, EUF) ein [75].

Korrektheitskriterium

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

Spezifika-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 zen Beide ¨Ubergangsfunktionen erhalten als erstes Argument den aktuellen Zustandund als zweites Argument die momentane Eingabe (Instruktion) Die R¨uckgabewertder Funktionen ist der Folgezustand, d h

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 derSpezifikation und Implementierung, die Ausf¨uhrung einer beliebigen Instruktion zudem 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 Abstraktionvon dem momentanen Zustand der Mikroarchitektur (Prozessorzustand) auf den f¨urden Programmierer sichtbaren Zustand durch die Funktion abs :(Su× Sp) → Sube-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 Weiterverarbeitungvon Instruktionen in der Pipeline erlauben, ohne dass neue Instruktionen initiiert

Trang 4

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

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

bezeich-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

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

fimpl(q,i stall ) 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 baren Zustand zu extrahieren, wird zun¨achst ein Flushing der Pipeline durchgef¨uhrt.

sicht-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

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 symbolischerAusdr¨ucke repr¨asentiert werden Jedes Element eines Vektors entspricht dabei ei-ner f¨ur den Programmierer sichtbaren Zustandsvariablen Die Ausdr¨ucke k¨onnennacheinander z B durch symbolische Simulation der Spezifikation bzw der Imple-mentierung gewonnen werden Dabei muss die Implementierung mehrfach stimuliertwerden, 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 gleicheErgebnis 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 fimpr¨asentiert werden, da dieser niemals modifiziert wird Dies ist in Abb 6.48 zu sehen

re-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

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 tionssymbolen und der Anwendung des ITE-Operators (engl if-then-else) gebildet.

Funk-Der ITE-Operator w¨ahlt dabei zwischen zwei Termen aus, basierend auf dem Werteiner 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 interpretiertes Pr¨adikatensymbol (predicate symbol) auf eine Liste von Termen an-

un-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 mengeD und einer Interpretation I der Funktions- und Pr¨adikatensymbole definiert.

Definitions-Eine InterpretationI weist jedem Funktionssymbol der Ordnung k eine Funktion von

{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]

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 einegegebene Formel f¨ur eine angemessen große Definitionsmenge g¨ultig ist, so ist sieallgemeing¨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 dieFunktions- und Pr¨adikatensymbole eliminiert werden Grundlegende Arbeiten zurElimination 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 einesFunktionssymbols durch einen ITE-Operator ersetzt wird Die Idee dabei ist, dass

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

Trang 8

Beispiel 6.3.4 Gegeben ist die EUF-Formel:

Schematisch l¨asst sich Gleichung (6.12) wie in Abb 6.49 dargestellt ren Definitionsbereichsvariablen werden dabei als Eing¨ange dargestellt Werte desDefinitionsbereichs werden als durchgezogene Linien dargestellt AussagenlogischeVariablen werden als gestrichelte Linien gezeichnet Der Ausgang repr¨asentiert diegesamte EUF-Formel

= h

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

Um die Funktionssymbole in Gleichung (6.12) durch ITE-Operationen zu zen, m¨ussen die Funktionssymbole nacheinander betrachtet werden Zun¨achst wirddas 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

erset-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 vonFunktionssymbolen 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:

T3:= ITE(v g1 = x,v g1 ,ITE(v g1 = y,v g2 ,v g3)) (6.15)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 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

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

Annah-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 Operation, welche die Argumente der beiden Funktionsaufrufe vergleicht Falls dieseidentisch sind, m¨ussen auch die Funktionswerte identisch sein Andernfalls muss der

ITE-neue (unbekannte) Funktionswert durch eine ITE-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 finitionsbereichsvariablen noch geeignet codiert werden, um zu einer aussagenlogi-schen Formel zu gelangen Dies wird hier nicht weiter betrachtet

De-Effiziente Speichermodellierung

Bei der Prozessorverifikation m¨ussen typischerweise Speicherzugriffe ber¨ucksichtigtwerden 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 schriebenen Theorie zur

be-”Gleichheit und uninterpretierte Funktionen“ lassen sichunter bestimmten Konventionen Speicherzugriffe modellieren Dies erfolgt durch ei-

ne Verschachtelung von ITE-Operatoren zur Repr¨asentation von Lesezugriffen aufden 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

T F T F

T F

T F

T F

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 eineseffizienten Speichermodells [68] (siehe auch Abschnitt 6.4.2) F¨ur die symbolische

Trang 11

Simulation des Speichermodells werden drei Dom¨anen von Ausdr¨ucken den:

unterschie-• Bedingungsausdr¨ucke: Ausdr¨ucke aus dieser Dom¨ane evaluieren zu F oder T.

Sie werden verwendet, um Bedingungen zu repr¨asentieren

• Adressausdr¨ucke: Ausdr¨ucke aus dieser Dom¨ane repr¨asentieren Adressen

Adres-sen k¨onnen als Bitvektoren codiert werden, wobei im Folgenden davon

ausge-gangen wird, dass diese aus n Bit bestehen.

• Datenausdr¨ucke: Ausdr¨ucke aus dieser Dom¨ane repr¨asentieren Daten Daten

k¨onnen ebenfalls als Bitvektoren codiert werden Im Folgenden haben die

Bit-vektoren die Breite w.

In jeder Dom¨ane werden symbolische Variablen eingef¨uhrt, die verwendet den, um Ausdr¨ucke in diesen Dom¨anen zu bilden Weiterhin wird im Folgenden der

wer-Begriff Kontext f¨ur eine Belegung dieser symbolischen Variablen mit Werten

ver-wendet

Beispiel 6.3.5 Gegeben sind zwei Adressen a1und a2aus der Dom¨ane der

Adress-ausdr¨ucke Beide Adressen k¨onnen durch Bitvektoren der L¨ange n repr¨asentiert den, d h a1:= (a11, ,a 1n ) und a2:= (a21, ,a 2n) Der Vergleich der beiden

wer-Adressen kann wie folgt durchgef¨uhrt werden:

sen, welche die selbe Anzahl an Adress- (n) und Datenbits (w) verwenden Dies ist

in Abb 6.51 zu sehen Das Modell ist ¨aquivalent zu dem Speichermodell aus schnitt 6.4.2, erweitert auf mehrere Lese- und Schreibports

Ab-Bei der symbolischen Simulation wird davon ausgegangen, dass die Lese- undSchreibzugriffe auf der steigenden Flanke des enable-Signals stattfinden Solltenmehrere Ports gleichzeitig auf den Speicher zugreifen, werden die Zugriffe in derReihenfolge der Priorit¨aten der Ports durchgef¨uhrt

Die Repr¨asentation des Speichers erfolgt w¨ahrend der Simulation durch eine

ge-ordnete Liste, wobei der Anfang der Liste head die niedrigste, das Ende tail die

h¨ochste Priorit¨at besitzt Die Eintr¨age der Liste haben die Form(c,a,d), wobei c ein

Bedingungsausdruck, a ein Adressausdruck und d ein Datenausdruck ist Der sche Ausdruck c wird f¨ur konditionale Speicherzugriffe verwendet, wobei die Lese-

Trang 12

n

addr enable data

Write Port 0

w

n

addr enable

Adress-Bei einer steigenden Flanke des enable-Signals an einem Speicherport wird

zun¨achst die Bedingung c evaluiert Nur wenn diese nicht den konstanten

Boole-schen WertF darstellt, wird der entsprechende Speicherzugriff durchgef¨uhrt Ist die

Bedingung ungleichF, wird der Adressausdruck a und der Datenausdruck d

gele-sen Ein Schreibzugriff resultiert dabei im Einf¨ugen eines neuen Eintrags(c,a,d) in

die Liste Ein Lesezugriff gibt den zugeh¨origen gespeicherten Datenausdruck rd im Falle, dass c = F ist, zur¨uck Andernfalls wird der eingelesene Datenwert d nicht

ver¨andert, d h d : = ITE(c,rd,d) Dieser Ausdruck wird auf den Datenleitungen

des entsprechenden Leseports ausgegeben und kann in der weiteren symbolischenSimulation verwendet werden

Die Priorit¨aten in der Liste k¨onnen intuitiv so interpretiert werden, dass derpriore Eintrage weiter in der Vergangenheit liegen, w¨ahrend h¨oherpriore Ein-tr¨age k¨urzlich vorgenommene ¨Anderungen des Speichers darstellen Neue Eintr¨agek¨onnen aber dennoch am Anfang (PUSH FRONT) oder am Ende (PUSH BACK)der Liste eingef¨ugt werden Schreibzugriffe k¨onnen dann in Form der folgendenWRITE-Funktion erfolgen:

cher¨anderung an der Adresse a in der Vergangenheit gab Wenn dieser alte Wert unter keinen anderen Bedingungen als c gelesen werden kann (ec ⇒ c), kann die

Speicherstelle mit dem neuen Wert ¨uberschrieben werden Dies bedeutet, der alteEintrag kann gel¨oscht werden

Trang 13

Die Schreiboperation READ erh¨alt als Argumente die Liste, die den Speicher

repr¨asentiert, einen Bedingungsausdruck c, einen Adressausdruck a und einen tenausdruck d READ gibt einen Datenausdruck zur¨uck.

im-READ WITH DEFAULT(list, c, a, d) {

rd := d;

f ound :=F;

FOREACH(ec,ea,ed) ∈ list

match := (ec ∧ (a = ea));

Die Funktion READ WITH DEFAULT durchl¨auft die Liste list, die einen

Spei-cher repr¨asentiert, vom Anfang bis zum Ende So ¨uberschreiben aktuellere Werte die

¨alteren Die Variable f ound zeigt dabei an, ob ein Eintrag gefunden wurde Ist dies

nicht der Fall, so wird der generierte Initialwert am Anfang (niederprior) der Listeeingetragen

Vergleich der Speicherzugriffe

F¨ur die ¨Aquivalenzpr¨ufung des Prozessors mit der ISA, ist es notwendig zu chen, ob beide Modelle zu dem selben Speicherinhalt nach Ausf¨uhrung der symbo-lischen Simulation gelangen, wenn sie mit dem selben Speicherinhalt gestartet wur-den Die Inhalte zweier Speichermodelle, wie sie oben beschrieben sind, lassen sichmit der Funktion COMPARE vergleichen Bei dem Vergleich der beiden Speicher-modelle wird dabei ausgenutzt, dass nur ein kleiner Teil des Speichers tats¨achlichver¨andert wurde COMPARE gibtT zur¨uck, f¨ur den Fall, dass die beiden Speicher

verglei-den selben Inhalt besitzen, andernfallsF

Trang 14

d1 := READ WITH DEFAULT(mem1, ec, ea, g);

d2 := READ WITH DEFAULT(mem2, ec, ea, g);

same := same ∧ (d1 = d2);

tested : = tested ∪ {ea};

FOREACH(ec,ea,ed) ∈ mem2

IF (ea /∈ tested)

g := GENERATE DEXPR();

d1 := READ WITH DEFAULT(mem1, ec, ea, g);

d2 := READ WITH DEFAULT(mem2, ec, ea, g);

sicher-wenden Hierf¨ur kann beispielsweise ein sog Schattenspeicher eingesetzt werden.

Dieser speichert alle Initialwerte f¨ur beide Simulationen Jede Simulation fragt dannzun¨achst den Schattenspeicher ab, ob bereits ein Initialwert erzeugt wurde Falls ja,wird dieser verwendet, andernfalls wird ein neuer Initialwert berechnet und im Schat-tenspeicher gespeichert Dies kann z B durch die Funktion SHADOW READ, wel-

che die Funktion READ ersetzt, erfolgen Dabei ist shadow der Schattenspeicher und mem das von jeweiligen Simulation verwendete Speichermodell.

SHADOW READ(mem, shadow, c, a, d) {

g := GENERATE DEXPR();

READ WITH DEFAULT(shadow, c, a, g);

RETURN READ WITH DEFAULT(mem, c, a, g);

}

¨

Aquivalenzpr¨ufung

Auf Basis der Schattenspeicher kann die ¨Aquivalenzpr¨ufung nach Gleichung (6.11)

in neun Schritten erfolgen:

1 Lade das Modell der Mikroarchitektur und erzeuge f¨ur jeden Speicher ein chermodell und ein Modell des Schattenspeichers

Spei-2 Simuliere symbolisch einen Schritt der Ausf¨uhrung einer Instruktion

3 F¨uhre ein Flushing der Pipeline durch

Trang 15

4 Tausche jedes Speichermodell mit dem zugeh¨origen Schattenspeichermodell

5 F¨uhre ein Flushing der Pipeline durch

6 Tausche die Mikroarchitektur des Prozessors mit der sequentiellen ISA, wobeif¨ur alle Speichermodelle f¨ur Programmierer sichtbare Speicher erhalten bleiben

7 Simuliere symbolisch die Ausf¨uhrung der selben Instruktion auf der ISA wie inSchritt 2

8 Vergleiche das Speichermodell mem i mit dem Modell des Schattenspeichers

shadow i f¨ur jeden der 1≤ i ≤ u f¨ur den Programmierer sichtbaren Speicher,

d h

equal i:= COMPARE(mem i ,shadow i)

9 Forme einen Booleschen Ausdruck f¨ur die ¨Aquivalenzbedingung:

wobei legal instruction ein Boolescher Ausdruck f¨ur die verwendete

symboli-sche Instruktion ist

Repr¨asentation von Funktionseinheiten durch Speichermodelle

Das oben vorgestellte Speichermodell eignet sich ebenfalls, um Funktionseinheitendes Prozessors zu modellieren Dies erfolgt mit Hilfe von Modellen f¨ur Nur-Lese-Speichern, welche einen einzelnen Leseport besitzen und permanent aktiviert (enable

=T) sind Der Adressausdruck f¨ur das Speichermodell wird aus den Operanden und

den Steuerungssignalen gebildet Der Datenausdruck stellt das Ergebnis der nung dar

Berech-Beispiel 6.3.6 Abbildung 6.52a) zeigt als Berech-Beispiel einer Funktionseinheit eine ALU.

Die Abstraktion als Speichermodell ist in Abb 6.52b) zu sehen Der Adressausdruckwird dabei aus den Operanden (Op1 und Op2) und den Steuerungssignalen (Ctrl)gebildet

Res

Res

Abb 6.52 a) ALU und b) Abstraktion als Speichermodell

Ngày đăng: 02/07/2014, 14:20

TỪ KHÓA LIÊN QUAN