HSC
Hardwaremonitor für SCI-Cluster
Einführung und Historie
Der HSC besteht aus dem Blink-Interface, dem statischen und
dynamischen Monitor und den zugehörigen Monitor-Interfaces (PCI_Target-
Interface).
Das Blink-Interface bedient die Schnittstelle zu dem SCI-Knoten
und erlaubt dessen Beobachtung. Die Monitorinterfaces bilden die Schnittstelle
zum PCI-Bus des Rechners. Über dieses werden die Monitore initialisiert und die
gesammelten Daten dem Rechner übermittelt. Eine Treibersoftware zur Bedienung
des Monitors kann dabei auf einem NT- oder LINUX _System ablaufen.
Für den rudimentären Test der Monitore steht der Testcommander
vom Hersteller des Evaluationsboards HOT IIVCC zur Verfügung. Auf diesem ist
die Monitorinterfaces und die Monitore selbst in programmierbarer Logik (FPGA)
untergebracht.
Die Konzeption des Hardwaremonitor wurde von Markus Leberecht und
Wolfgang Karl im August 1996 durchgeführt.
Das Blink- Interface entstand in einer Praktikumsarbeit von
Michael Wagner im Mai 1997.
Der statische Monitor basiert auf der DA von Robert Hockauf
vom August 1999, wurde aber neu in VHDL
beschrieben.
Der dynamische Monitor wurde von Jürgen Jeitner im Februar 2000 in seiner DA
realisiert.
Beobachtung von Ereignissen am
Blink eines SCI-Clusters
Der Hardwaremonitor zur Beobachtung von Ereignissen am Blink
eines SCI-Clusters besteht aus zwei Komponenten.
Der dynamische Teil des Monitors FRLdyn dient zur Lokalisierung
von Ereignissen, die für den Anwender von Interesse sind. Anhand eines
Ereignisfilter werden Transaktionen wie write, read, lock, request, response,
outgoing, incoming einzeln oder in
sinnvoller Kombination aufgezeichnet. Dabei legt der Benutzer eine bestimmte
Granularität (Adressbereich von 1-1024) in dem die Ereignisse gezählt werden
fest. Für bis zu 16 solcher Adressbereichen sind Zählereinheiten vorhanden.
Sind alle Zähler benutzt und wird ein neuer Adressbereich erkannt, so erfolgt
eine Auslagerung des Zählers, indem die ältesten Einträge vorhanden sind.
Mit dem statischen Monitor wird geziehlt auf eine bestimmte
Adresse (page, offset) referenziert.
Für die Filterung dient ebenfalls die Transaktionsart (write,
read,usf) wie bei der FRL_dyn. Bis zu 16 Adressen können dabei überwacht und
die Anzahl der Zugriffe in 16bit Zählern akkumuliert werden. Ebenfalls dienen
diese Zähler zur Aufsummierung von globalen Ereignissen.
Das Ereignis kann auch die Steuerung der Zähler übernehmen. Der
Benutzer bestimmt dabei ob es sich um ein Ereignis handelt das die Zählfunktion
enabled bzw. disabled oder ob das Ereignis gezählt werden soll.
Nachdem die Resourcen für die Unterbringung der Hardware
beschränkt sind, wird die Architektur der beiden Monitore und das Interface zur
PCI-Schnittstelle nach Bedarf in ein
rekonfigurierbarers Bauteil geladen.

Hardwaremonitor für SCI-Cluster
Dynamic Flexible Range Logic
Die innerhalb des dynamischen Modus der FRLs gesammelten Daten
erlauben die Erstellung von Speicherzugriffshistogrammen. Der Benutzer - in
diesem Fall ein Programmierer, der parallele Anwendungen schreibt - ist in der
Lage, die gesammelte Information zu verwenden um seine Software zur Zeit der
Entwicklung zu optimieren. Man kann diesen Modus des Monitors auch benutzen um
die gewonnenen Informationen während der Laufzeit einer Applikation zu
beurteilen. In diesem Fall erlaubt eine fortlaufende Auswertung von
Monitordaten z.B. eine dynamische lokale Optimierung von Anwendungsprozessen.
In den folgenden Abschnitten werden SCI-Transaktionen Ereignisse
genannt. Ein Ereignis besteht aus 5bit source-ID, 5 bit destination-ID, 28 bit
SCI Adresse und einen transactiontype. Der transactiontype des Ereignisses wird
nicht gespeichert, weil dieses Ereignisattribut mit einem globalen Konfigurationsregister
des Hardwaremonitors verglichen wird. Nur Ereignisse, die zu dieser Maske
passen, werden gezählt.
Obige Abbildung zeigt die Struktur der
Bereichstabellen, die von der assoziativen Zählerlogik benutzt werden. Die
Bereiche SourceID, DestinationID und SCI Adresse beinhalten die entsprechenden
Daten für die Referenzierung eines Ereignisses. Ebenfalls wird hier die
Gültigkeit eines Ereignisses gekennzeichnet. In den 16 Ereigniszählern wird die
Häufigkeit von Transaktionen (Lesen, Schreiben usf) auf bestimmte Adressen oder
Adressbereiche festgehalten. Im dynamischen Modus werden die auftretenden
Ereignisse je nach dem eingestellten Adressbereich und den Attributen in einem
zugeordneten Zähler festgehalten.Wenn ein Ereignis zum ersten Mal erscheint,
wird ein Bereichstabelleneintrag vorgenommen und mit den Ereignisattributen
gefüllt. Das Gültigkeitsbit wird gesetzt und der zugehörige Zähler mit 1
initialisiert.Wenn ein ähnliches Ereignis in dem festgelegten Bereich auftritt
wird der Zählerstand entsprechend erhöht. Um ein ähnliches Ereignis zu
erkennen, muß die SourceID und DestinationID übereinstimmen. Die SCI Adresse
kann variieren. Die erlaubte Toleranz von Adressen wird vom Benutzer bei der
Initialisierung des Monitors festgelegt. Beim dynamischen Monitor sind 16
Zähler für 16 Adressbereiche vorhanden. Um diesen Mangel an Flexibilität
entgegenzuwirken, wird ein vereinfachter LRU Algorithmus für das Auslagern der
Daten in den Dual Port RAM auf dem Monitorinterface verwendet. Diese Auslagerung
wird vorgenommen, wenn kein Zähler für einen neuen Adressbereich vorhanden ist.
Ebenfalls wird dieser Mechanismus verwendet, wenn ein Überlauf der 16bit Zähler
auftritt
Um das oben beschriebene Verhalten zu
erreichen wird eine Statemachine nach derAbbildung unten mit 5 Zuständen
verwendet. Nach dem Reset oder der Initialisierung des Monitors befindet sich
die Statemachine im Zustand IDLE und wartet auf Ereignisse. Nur im IDLE-Zustand
können die Ereigniszähler gelesen werden oder neue Parameter für die Messung
übergeben werden.
Tritt ein Ereignis auf, wird in den FORWARD Zustand gewechselt. Im FORWARD
Zustand wird der Transactionstyp und die Ereignisattribute eines gültigen
Ereignistabelleneintrags verglichen. Ist der Vergleich negativ wird in den IDLE
Zustand zurückgesprungen, anderfalls wird in den BUSY Zustand verzweigt. Im
BUSY Zustand wird die Aktion Zählen des entsprechenden Zählers vorgenommen oder
es wird ein neuer Eintrag in der Bereichstabelle vorgenommen und der
entsprechende Zähler auf 1 gesetzt und in den IDLE Zustand verzweigt
Wird nun ein Überlauf des entsprechenden Zähler festgestellt oder ist kein
freier Bereich in der Bereichstabelle vorhanden, so wird in den SWAP Zustand
verzweigt. Hier wird nun die Auslagerung des entsprechenden Zählers vorgenommen.
Bei Auslagerung auf Grund des Zählermangels wird der Zähler mit den ältesten Einträgen ausgelagert.
Anschließend wird in den IDLE Zustand verzweigt.
Von diesem Zustand kann nach Anforderung des Benutzers in den SWAP_ALL Zustand
verzweigt werden. Hier werden nun alle Zähler mit den zugehörigen Attributen in
das Dual Port RAM auf dem Monitorinterface ausgelagert und die Statemachine
geht in den IDLE Zustand

Monitor- Interface für die dynamische FRL
Das
Monitor-Interface besteht aus den Komponenten AUSLAGERN, LESE-,
SCHREIB/LESE-ZEIGER- Verwaltung und weiteren Komponenten für die Initialisierung
und Abfrage der dynamischen FRL (Flexible Range Logic).
Auslagern
der FRL_dyn in den DUAL-PORT_RAM auf dem Evalboard HOT2:
Die
Auslagerung kann von 2 unterschiedlichen Aktionen gestartet werden.
1.
Auslagern durch Anwender-Aktion .
2.
Auslagern der FRL_dyn durch Zählerüberlauf
An der niedrigsten Bitstelle wird mit ‘1’ das aktivieren
und mit ‘0’ das deaktivieren der FRL_dyn angegeben.
Der maximal zu überwachende Bereich maxrange (10bit) steht im Datenwort din an der Bitstelle
10 bis 1 (MSB..LSB).
Der Transaktionstyp transact_type steht in din an der Bitstelle 19 bis 11.
Alle übrigen Bits (31 bis 20) sind ohne Bedeutung.
Static Flexible Range Logic
Der Hauptzweck des sogenannten ,,statischen Teils" innerhalb
FRL ist spezifizierte Ereignisse zu zählen und zu speichern.Die Ereignisse
können entweder Transaktionen innerhalb des SCI Netzes oder eines der so
sogenannten ,,globalen Ereignisse"
beziehungsweise „zeitbezogenen Ereignisse“ sein. Globale Ereignisse
werden von der Überwachungssoftware an den Monitor übergeben und können zur
Interaction zwischen dem Benutzer und dem Monitor verwendet werden.
Um Speicheradressen innerhalb des globalen Speichers eines SCI
Netzes zu lokalisieren benutzt die FRLstat zwei Tabellen genannt „pagetable“
und „staticeventtable“.
Innerhalb der pagetable gibt es 16 Einträge in denen die pages a
4kbyte, die node id und die höheren 20 bit der lokalen Adresse spezifiziert
werden. In der static event table werden die Transactionstypen, die geobachtet
werden sollen, eingetragen. Jeder Eintrag beinhaltet einen Zeiger auf einen
entsprechenden Eintrag in der pagetable, zwei Register beinhalten die obere und
untere Adresse des des zu beobachtenden 4kbyte Bereiches (page) und in einigen
Speicherstellen wird der
Transactionstyp wie read, write, lock, request und response,
referenziert.
Die „statischen Zähler“ werden von drei Registern für aktiv,
nicht aktiv und zählen gesteuert. Ein Überlauf der 16bit Zähler generiert einen Interrupt in der
Steuerhardware mittels dem eine Auslagerung des betreffenden Zählers bewirkt
wird.

Static part (flexible range logic)
Die pagetable beinhaltet 16 Einträge, welche parallel mit der
vom Blink beobachteten Adresse verglichen wird. Man benötigt dazu 16
Komparatoren welche 24 bit (20bit Adresse und 4bit node id) vergleichen können.
Aus dem Ergebnis wird ein 4bit pagetable index gebildet.
Die statische eventtable benötigt für jeden der 16 Einträge zwei
Komparatoren jeweils für den Vergleich auf größer und kleiner. Dabei wird der
10bit pageoffset der Adresse in dem spezifizierten Bereich verglichen.
Zusätzlich wird noch ein 11bit Komparator pro Eintrag für den Vergleich des
Transactionstyps (7bit) und der Zuordnung zur pagetable (4bit) benötigt. Das
Ergebnis ist ein kodierter 4bit eventtable index. Diese 4bit werden noch
kombiniert mit 4bit für ein globales event. Das 5bit Ergebnis wird in
Verbindung mit weiteren 48 x 5bit Komparatoren benutzt um die 16 Ereigniszähler
zu aktivieren, deaktivieren oder auf den Zählmodus zu schalten. Bei Überlauf
eines Zählers wird dieser der Steuerlogik mittels eines 4bit index und eines
Interrupts übergeben.
Monitor-Interface
für die statische FRL
Module des PCI_Target Interface
Die
PCI_Target Komponente besteht aus den
Modulen KONFIGURIEREN, AUSLAGERN, LESE- ,SCHREIB/LESE-ZEIGER- Verwaltung
und weiteren Komponenten für die Initialisierung, Abfrage und Steuerung der
statischen FRL (Flexible Range Logic).
Ausserdem
wird ein PCI-Core_min benötigt, der die Anbindung an den PCI-Bus und an den
Dual-Port Speicher auf dem Monitorboard
sicherstellt.
Vor
der Konfiguration werden die Konfigurationsdaten über das PCI-Interface in den
DualportRAM auf dem Evaluationboard
geladen.
Auslagern der
FRL_stat
in den DUAL-PORT_RAM auf dem Evalboard HOT2:
Die
Auslagerung kann von 2 unterschiedlichen Aktionen gestartet werden.
1.Auslagern
durch Anwender-Aktion.
2. Bei Zählerüberlauf in der FRL_STAT
Initialisierung der FRL_stat
Vor der Initialisierung ist eine Grundeinstellung der
PCI_Target_Logik und der FRL_stat mit Reset durchzuführen.
In unbestimmter Reihenfolge können nun die
16Referenzregister der Pagetable, die 16 Referenzregister der Eventable und die
48 Steuerungsregister für die Ereigniszähler geladen werden.
Initialisierung des
Monitorinterfaces und des Monitors
Die vorhandene Hardware HOT II-Evaluationboard wird von jeder
Monitorart (statisch, dynamisch) exklusiv genutzt. Dabei ist es notwendig, je
nach Anwendungsart das entsprechende Monitorinterface und den Monitor vor
Benutzung zu konfigurieren. Das bedeutet, daß die entsprechende Hardware in die
FPGA geladen werden muß. Der zur Konfiguration notwendige bitfile liegt für das
Monitorinterface in Binärform (<datei>.hot) und für den Monitor selbst in
ASCII (<datei>.rbt) vor. Die Konfiguration des Monitorinterfaces erfolgt
über eine Treiberfunktion der vorhandenen Library.
Für die Konfiguration des Monitors ist eine Hardware im
Monitorinterface zuständig. Das bedeutet, daß immer zuerst das Monitorinterface
konfiguriert werden muß. Der benötigte bitfile für den Monitor wird in der
Treibersoftware für das Monitorinterface aus dem ASCII file gewonnen und im
DualPortRam des HOT II-Evaluationsboards vor dem Start der Konfiguration des
Monitors abgelegt.
Es können auch beide Konfigurationsfiles im DPR hinterlegt
werden und bei Bedarf mit 64Mbit/sec in das Monitor FPGA geladen werden.
Dadurch ist eine dynamische Rekonfiguration gewährleistet.
Ebenfalls ist es nun möglich weitere Monitore mit abgeänderter
Funktion zu erstellen und bei Bedarf zu nutzen.