next up previous contents
Next: Links Up: Hilfsprogramme Previous: Der Simulator   Inhalt

Auswertung für den Simulator

Da der Simulator einige Komandozeilenparameter erwartet, wird er für längere Testläufe aus automatisch generierten Batch-Dateien heraus aufgerufen und erzeugt nacheinander viele Ausgabedateien. Die Batch-Dateien werden mit test*.pl generiert.

Das Perl-Script scripts.pl erzeugt die Parameterdateien für den Simulator. Diese geben für jeden Thread an, welche Deadline, Laufzeit, Priorität und welchen Anteil er bekommen soll. Je nach Scheduling-Verfahren werden nicht alle diese Daten benutzt. Das Programm codegen generiert aus diesen Parameterdateien zufallsgesteuerte Befehlsmischungen. Der Aufruf erfolgt durch

codegen <Speicherbefehle in Promille> <Verzeichnis>

In dem Verzeichnis erwartet das Programm die Parameterdatei als threads.script und generiert für jede Zeile eine Programmdatei mit zufälligen Befehlen. Die Programmdateien heißen thread*.bin und enden immer mit dem Befehl 233, der im Simulator als Suspend-Befehl dient. Es werden soviele Befehle generiert, daß die vorgegebene Laufzeit unter Berücksichtigung der Latenzen erreicht wird.

Die Daten aus den Ausgabe-Dateien des Simulators werden mit makelist.pl *.txt in eine Liste zusammengeführt, damit man nicht mit vielen einzelnen Dateien hantieren muß. Dieses Script gibt es doppelt. Eines extrahiert die veränderlichen Werte der ersten Versuchsreihe aus Abschnitt 3.3, das andere die Werte aus Abschnitt 3.4. Entsprechend gibt es auch das Auswertungs-Script extract.pl doppelt.

Das Perl-Script extract.pl generiert aus einem Teil der Daten in einer Liste eine mit Semikolon getrennte Liste, in der jeweils ein Ergebniswert abhängig von zwei Eingabewerten zusammengefaßt ist. Diese Daten können zum Beispiel in Excel übertragen werden, wo sie eine dreidimensionale Grafik ergeben.

Der Aufruf sieht folgendermaßen aus:

extract.pl <listenname> a:b c=w d=x e=y f=z r

Tabelle B.4 erläutert die Parameter. So gibt zum Beispiel extract.pl 1.liste b:w s=4 i=10 t=2 f=0 n die Gesamtzahl aller Nops abhängig von der Fetch-Bandbreite und der Fenstergröße aus, bei vier Threads, 10% Speicherbefehlen, einer Untergrenze von drei Bytes (das Fenster muß mehr als zwei Bytes enthalten) und einer nur vom Füllstand der Fenster abhängigen Fetch-Strategie.


Tabelle: Parameter für extract.pl
Parameter Bedeutung
a,b,c,d,e,f Die Codes der einzelnen Freiheitsgrade. Möglich sind b, f, i, s, t und w (siehe Tabelle B.1). a gibt die Spalten in der Ausgabedatei vor, b die Zeilen.
w,x,y,z Zahlenwerte für die festen Parameter. Mit s=4 wird beispielsweise die Anzahl der Threads auf vier festgelegt. Für die Fetch-Strategie f ist die Zahl aus Tabelle B.2 dezimal anzugeben, für t jeweils ein Byte weniger als mindestens im Fenster sein muß, damit der Thread ausgewählt werden darf.
r Der Code für das Ergebnis (siehe Tabelle B.1).

Für die zweite Versuchsreihe existiert das Programm noch einmal, braucht dann aber nur vier Parameter für die Freiheitsgrade s, i, j, und m.

Prinzipiell kann man aus einer Menge von Ausgabedateien des Simulators mit den beiden makelist.pl-Scripten beide Formen von Listen erzeugen, muß dann aber das richtige extract.pl für jede Liste benutzen.

Das Perl-Script klassify.pl wird mit

klassify.pl <quelldatei> <zieldatei>

aufgerufen und generiert aus einem Trace des Simulators für den gesamten Mikrocontroller ein Pseudoprogramm für den Simulator des Prioritäten-Managers. Die Zeilen des Trace müssen in dieser Reihenfolge und durch Leerzeichen getrennt die zehn Werte enthalten, die in Tabelle B.5 aufgeführt sind.


Tabelle B.5: Format einer Trace-Zeile
Name Bedeutung
Nummer Fortlaufende Nummer des Taktes
Unterlauf 1 bei Unterlauf des Befehlsfensters, 0 sonst
Extended e für extended Bytecode, n sonst
Num. Bytecode Numerischer Bytecode
Bytecode Mnemonik des Bytecodes
EX Trennzeichen
Null Immer 0
Num. Opcode Numerischer Opcode
Opcode Mnemonik des Opcode
Argument Optional Argumente des Opcode

Das Perl-Script intify.pl generiert aus der gleichen Eingabe eine Liste von 32bit-Zahlen, die die Speicherworte für die Testumgebung in Hardware darstellen (siehe Abschnitt 4.6.1). Diese Zahlenreihe wird dann noch mit dem Programm binaer in eine Binärdatei umgewandelt, die in den Speicher des Testboards geladen werden kann.

Der Speicher ist dabei aufgeteilt in vier Code-Bereiche zu je 51200 Bytes und einen Ausgabebereich, der den Rest des Speichers einnimmt. Die Codebereiche werden von binaer der Reihe nach mit Befehlsworten ausgefüllt, so daß das ursprüngliche Programm aus dem Trace mehrmals im Speicher stehen kann.

Das Programm memfile erzeugt direkt Binärdateien für das Board, die aber aus immer gleichen Befehlen bestehen, damit man die Hardware testen kann.

Das Programm binaus gibt den Ausgabeteil einer Binärdatei, die als Parameter angegeben wird, formatiert aus. Das Programm muß angepaßt werden, wenn die Testumgebung andere Ergebnisse in den Speicher zurückschreibt.


next up previous contents
Next: Links Up: Hilfsprogramme Previous: Der Simulator   Inhalt
Alexander Schulz
2000-06-18