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.

 

Konfiguration

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.