-
Heutzutage
ist es nicht unüblich,
daß ein Computersystem
ziemlich komplex ist und oft mehrere Prozessoren umfaßt, die
konfiguriert sind, um ein paralleles und/oder verteiltes Verarbeiten
zu liefern. Beispielsweise umfassen Mehrprozessor-Computersysteme
oft nicht nur mehrere Hauptverarbeitungseinheiten (MPUs – main processing
units), sondern können
auch mehrere Hilfsprozessoren oder -agenten, beispielsweise Speicherprozessoren
und dergleichen, umfassen. Diese verschiedenen Prozessoren, sowie
andere Systemressourcen, z.B. Speicher, Eingabe-/Ausgabevorrichtungen,
Plattenvorrichtungen und dergleichen, können über das Computersystem verteilt
sein, wobei eine Kommunikation durch verschiedene Busse bereitgestellt
wird. Beispielsweise kann ein Computersystem eine Anzahl von Teilmodulen
aufweisen, die hierin als Zellen oder Zellkarten bezeichnet werden
und eine Anzahl von Systemressourcen, z.B. Hauptverarbeitungseinheiten (MPUs),
Agenten und/oder Speicher sowie auf denselben angeordnete Busse,
aufweisen. Systemressourcen eines Teilmoduls können Anforderungen an andere
Systemressourcen stellen bzw. Anfragen von solchen bedienen. Derartige
Systemressourcen können
demselben Teilmodul und/oder anderen Teilmodulen des Systems zugeordnet
sein.
-
Um
Anforderungen von mehreren Systemressourcen auf ordentliche und
vorhersehbare Weise zu bedienen, können Systeme verschiedene Busprotokolle
und Transaktionswarteschlangen implementieren. Beispielsweise können Transaktionswarteschlangen
Informationen bezüglich
bestimmter Transaktionen für
eine bestimmte Systemressource „während des Prozesses" („in-process") speichern. Beispielsweise
kann ein Prozessor eine große
Anzahl von Transaktionen, beispielsweise eine Anzahl von Speicher-Leseoperationen,
ausgeben, wobei beim normalen Betrieb eine Anfangsblock- und/oder Datenrückgabe,
beispielsweise eine Speicherrückgabe,
erwartet wird. Falls der Prozessor eine Transaktion ausgibt und
die Transaktion nicht zurückkehrt, kann
der Prozessor einen vielleicht kritischen Fehlerzustand erfahren.
-
Falls
durch das System ein Fehler beim Betrieb irgendeines Aspektes des
Systems, beispielsweise bezüglich
einer der zuvor erwähnten
Systemressourcen, erfaßt
wird, kann ein Fehlersignal erzeugt werden, um die entsprechenden
Systemressourcen zu benachrichtigen. Derartige Fehler können nicht-kritisch
sein, z.B. können
sie auf die Operation einer einzigen Systemressource isoliert oder
einer wiederherstellbaren Operation zugeordnet sein. Derartige Fehler
können
vom Wesen her jedoch kritisch sein, z.B. können sie die Initialisierung
eines gesamten Busses (was hierin als Businitialisierungs- oder BINIT-Fehler
bezeichnet wird) und somit der Systemressourcen auf demselben erfordern.
-
Allgemein
ist es wünschenswert,
bestimmte Fehlerzustände
zu vermeiden, insbesondere kritische Fehlerzustände, bei denen Systemressourcen von
einer weiteren Verarbeitung „suspendiert" sind, oder die eine
Initialisierung einer Mehrzahl von Systemressourcen erfordern. Somit
kann mit bestimmten vorhersehbaren Ereignissen, z.B. einem Ausfall
bestimmter Transaktionsrückgaben,
auf eine Weise umgegangen werden, die berechnet ist, um die Auswirkung
auf den Systembetrieb zu minimieren, beispielsweise um eine kritische
Fehlersituation zu vermeiden.
-
Es
kann eine Anzahl von Gründen
für ein Fehlschlagen
des Empfangens einer Transaktionsrückgabe geben, z.B. dort, wo
ein Ruf an eine bestimmte Hardware getätigt wurde, die in dem System nicht
installiert wurde oder die entfernt wurde, und wo die Software versucht,
die Hardwareumgebung zu entdecken. Dementsprechend implementierten
Systeme bereits Zeitgebungsoperationen, bei denen das System auf
eine vorhersehbare und elegante Weise eine Zeitüberschreitung fest stellt, so
daß die
Software beispielsweise erkennen wird, daß eine bestimmte Hardwareeinheit
nicht existiert, und daß das
Verarbeiten fortgesetzt wird. In der Vergangenheit wurden Zeitüberschreitungsschaltungen
(time-out circuits) insbesondere in Bezug auf eine bestimmte Vorrichtung
und/oder ein bestimmtes Ereignis implementiert. Beispielsweise können manche
Eingabe-/Ausgabesysteme (I-/O-Systeme) Protokolle aufweisen, die
besagen, daß,
falls eine bestimmte I-/O-Karte nicht
mit dem System gekoppelt ist, ein Zeitüberschreitungszähler, der
dieser bestimmten I-/O-Karte zugeordnet ist, nach einer fehlgeschlagenen
Rückgabe
von dieser I-/O-Karte eine Zeitüberschreitungsperiode
angeben wird und das System die Verarbeitung fortsetzen wird. Bei
einem großen
System kann sich jedoch eine Implementierung von Zeitüberschreitungszählern bezüglich jeder
Vorrichtung und/oder jedes Ereignisses, für die bzw. das eine Zeitüberschreitungsverarbeitung
gewünscht
werden mag, aus Kostengründen,
sowohl in Bezug auf Ressourcen als auch auf die Verarbeitungs-Gesamtkosten,
verbieten.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren
und Systeme zu schaffen, die auf einfache Weise Zeitüberschreitungen
bestimmen können.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 sowie durch Systeme
gemäß Anspruch
10 oder 22 gelöst.
-
Ein
Verfahren zum Bestimmen von Zeitüberschreitungen
bezüglich
einer Mehrzahl von Transaktionen, wobei das Verfahren folgende Schritte
umfaßt:
Verwenden eines ersten Zeitüberschreitungstaktes
zum gleichzeitigen Bestimmen von Zeitüberschreitungszuständen bezüglich eines
ersten Satzes von Transaktionen der Mehrzahl von Transaktionen, und
Bestimmen, wann Transaktionen des ersten Satzes von Transaktionen
einen zeitüberschrittenen
Zustand der Zeitüberschreitungszustände erreicht
haben.
-
Ein
System zum Bestimmen von Zeitüberschreitungen
bezüglich
einer Mehrzahl von Transaktionen, wobei das System folgende Merkmale
umfaßt:
einen ersten Zeitüberschreitungszähler, der
ein Zeitüberschreitungsintervall
einer ersten vorbestimmten Länge
liefert, und eine erste Mehrzahl von Zustandsregistern, die jeweils
einer entsprechenden Transaktion der Mehrzahl von Transaktionen
zugeordnet sind, wobei Zustände
der ersten Mehrzahl von Zustandsregistern gemäß dem Zeitüberschreitungsintervall des
ersten Zeitüberschreitungszählers zu
einem nächsten
Zustand vorgerückt
werden und wobei ein bestimmter Zustand des Zustandsregisters, zu dem
gemäß den Zeitüberschreitungsintervallen
vorgerückt
wird, einem zeitüberschrittenen
Zustand entspricht.
-
Ein
System zum Bestimmen von Zeitüberschreitungen
bezüglich
einer Mehrzahl von Transaktionen, wobei das System folgende Merkmale
umfaßt:
eine erste Zustandsmaschine, die zumindest einen Schwebezustand,
einen Zeitüberschreitungszustand
und einen zeitüberschrittenen
Zustand für
jede eines ersten Satzes von Transaktionen der Mehrzahl von Transaktionen
aufweist, wobei die erste Zustandsmaschine wirksam ist, um Transaktionen
des ersten Satzes von Transaktionen ungeachtet des Zustands eines
ersten Zeitüberschreitungszählers zu dem
Schwebezustand zu sequenzieren, und wirksam ist, um die Transaktionen
des ersten Satzes von Transaktionen gemäß dem Ablauf des ersten Zeitüberschreitungszählers von
dem Schwebezustand zu dem ersten Zeitüberschreitungszustand zu sequenzieren,
wobei durch die Transaktionen des ersten Satzes von Transaktionen
gemäß dem Ablauf
des ersten Zeitüberschreitungszählers in
den zeitüberschrittenen
Zustand eingetreten wird.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 einen Abschnitt eines
Multiprozessorsystems, bei dem ein Ausführungsbeispiel der vorliegenden
Erfindung implementiert ist;
-
2 Zustandsmaschinen, die
zum Implementieren einer Transaktionszeitüberschreitungsnachverfolgung
gemäß Ausführungsbeispielen
der vorliegenden Erfindung zusammenwirken; und
-
3 eine Zustandsmaschine
zum Implementieren einer Transaktionszeitüberschreitungsnachverfolgung
gemäß Ausführungsbeispielen
der vorliegenden Erfindung.
-
Ausführungsbeispiele
der vorliegenden Erfindung liefern eine Zeitüberschreitungsnachverfolgung
bezüglich
einer Mehrzahl von Vorrichtungen und/oder Ereignissen unter Verwendung
eines minimalen Maßes
an Ressourcen. Gemäß Ausführungsbeispielen
sind Zeitüberschreitungsperioden
mit einem Unsicherheitsfenster bezüglich ihrer tatsächlichen
Zeitdauer implementiert, obwohl eine große Anzahl von unabhängigen und
asynchronen Ereignissen durch ein Zeitüberschreitungsnachverfolgen
geliefert werden können.
Durch ein Nutzen von Implementierungen, bei denen eine große Anzahl
von Ereignissen durch ein Zeitüberschreitungsnachverfolgen
unter Verwendung eines minimalen Maßes an Ressourcen geliefert
werden kann, ermöglichen
Ausführungsbeispiele
der vorliegenden Erfindung auf wirtschaftliche Weise die Verwendung
unterschiedlicher Zeitüberschreitungsperioden,
um z.B. unterschiedliche Typen von Ereignissen und/oder Situationen
zu berücksichtigen.
-
Bei
einem Betrieb gemäß Ausführungsbeispielen
der vorliegenden Erfindung geben Systemressourcen, z.B. Prozessoren,
Transaktionen aus, die bis zum Abschluß nachverfolgt werden. Beispielsweise
kann ein Prozessor eine Speicherleseoperation ausgeben, die Transaktion
wird in eine Transaktionstabelle eingegeben, und ein Transaktionzeitüberschrei tungsnachverfolgen
gemäß der vorliegenden
Erfindung wird implementiert. Im normalen Betrieb wird die Transaktion
durch ein Speichersystem verarbeitet, das ein Datenpaket zurückgibt,
und die Rückgabe
wird durch eine Bezugnahme auf die Transaktionstabelle verarbeitet.
Falls jedoch die Transaktionsantwort nicht innerhalb einer Zeitüberschreitungsperiode
zurückgegeben
wird, wie durch eine Operation eines Ausführungsbeispiels der Erfindung
bestimmt wird, ist das Transaktionszeitüberschreitungsverarbeiten vorzugsweise
implementiert, um einen fortgesetzten und vorhersehbaren Systembetrieb
zu ermöglichen.
Beispielsweise erzwingen Ausführungsbeispiele
einen Abschluß der
Transaktion, beispielsweise um eine Rückgabe auszugeben, beispielsweise
einschließlich
gefälschter
oder erfundener Daten, je nach dem Transaktionstyp, usw.
-
Gemäß Ausführungsbeispielen
der vorliegenden Erfindung werden Transaktionen klassifiziert, und
eine Zeitüberschreitungsinkrementalzustandsmaschine
wird bezüglich
jeder derartigen Transaktion implementiert. Ein Transaktionszeitüberschreitungszähler kann
für jeden
unterschiedlichen Typ von Transaktion vorgesehen sein, für den eine
Zeitüberschreitungsnachverfolgung
gemäß Ausführungsbeispielen
der Erfindung geliefert werden soll. Dementsprechend kann eine kleine
Anzahl von Transaktionszeitüberschreitungszählern bezüglich einer
großen
Anzahl von Transaktionen, für
die eine Zeitüberschreitungsnachverfolgung
implementiert ist, implementiert sein.
-
Die
den diversen unterschiedlichen Klassifikationen von Transaktionen
zugeordneten Transaktionszeitüberschreitungszähler können unterschiedliche
Zeitüberschreitungsperioden
liefern. Je nachdem, wie die Transaktion aussieht, kann es beispielsweise
wünschenswert
sein, verlängerte
oder verkürzte
Zeitüberschreitungsperioden
zu ermöglichen,
beispielsweise dort, wo eine Transaktion einer Systemressource oder
Systemressourcen zugeordnet ist, die relativ entfernt in dem System
angeordnet ist bzw. sind, oder dort, wo eine Transaktion einer Leistung seitens
einer Anzahl von Systemressourcen zugeordnet ist.
-
Vorzugsweise
werden die Transaktionszeitüberschreitungszähler innerhalb
von vorbestimmten Zeitperioden, die geringer sind als die gewünschten Zeitüberschreitungsperioden
für diese
Transaktionsklassifikation, umdrehen, z.B. abwärts zählen. Gemäß Ausführungsbeispielen der Erfindung
wird die Logik jeder entsprechenden Zeitüberschreitungszustandsmaschine
(z.B. derjenigen Zustandsmaschinen für Transaktionen, die als der
Transaktionstyp klassifiziert sind, der dem bestimmten Zeitüberschreitungszähler zugeordnet
ist) jedesmal dann zu einem neuen Zustand vorgerückt, wenn ein Transaktionszeitüberschreitungszähler umdreht.
Nachdem ein Zeitüberschreitungszustand
erreicht ist, wird vorzugsweise ein Transaktionszeitüberschreitungsverarbeiten
aufgerufen. Da eine Mehrzahl von nachverfolgten Transaktionen gleichzeitig
in einen zeitüberschrittenen
Zustand übergehen
kann, implementieren Ausführungsbeispiele
der Erfindung eine Transaktionsabschlußlogik, die ein Zeitüberschreitungsverarbeiten
entscheidet. Beispielsweise können
zeitüberschrittene
Transaktionen (also Transaktionen, bei denen die Zeit zur Ausführung bzw.
Durchführung bereits
abgelaufen oder überschritten
ist) zum Verarbeiten durch die Transaktionsabschlußlogik prioritätscodiert
sein, z.B. auf der Basis eines Transaktionstyps, einer Position
in einer Nachverfolgungstabelle usw.
-
Eine
Transaktionsabschlußlogik
von Ausführungsbeispielen
der Erfindung kann durch jede derartige zeitüberschrittene Transaktion verlaufen
und sie aus dem System löschen,
z.B. indem sie einen Systemabschluß erzwingt und die Transaktion
aus der Transaktionsnachverfolgungstabelle entfernt. Der zuvor erwähnte erzwungene
Abschluß von
zeitüberschrittenen
Transaktionen wird vorzugsweise durch die Transaktionsabschlußlogik entschieden,
um eine fortgesetzte Handhabung von ordnungsgemäß zurückgegebenen Transaktionen zusammen
mit den zeitüberschrittenen
Transaktionen zu ermöglichen.
-
Überdies
sehen Ausführungsbeispiele
unterschiedliche Typen von Zeitüberschreitungen
vor, wie sie beispielsweise unterschiedlichen Typen von Transaktionen,
die durch die Transaktionsabschlußlogik entschieden werden können, zugeordnet
sein können.
Ausführungsbeispiele
der Erfindung berücksichtigen
ferner eine tatsächliche
Rückgabe
einer Transaktion, für
die eine Transaktionszeitüberschreitungsperiode
abgelaufen ist und eine Transaktionszeitüberschreitungsverarbeitung
bereits begonnen hat.
-
Unter
Bezugnahme auf 1 ist
ein Abschnitt eines Computersystems, bei dem ein Ausführungsbeispiel
der vorliegenden Erfindung implementiert ist, allgemein als 100 gezeigt.
Das Hostsystem, das als Bestandteil den Systemabschnitt 100 aufweist,
kann ein Multiprozessorsystem umfassen, z.B. ein Serversystem der
Serie rx von Hewlett Packard, das eine Mehrzahl von Intel-ITANIUM-Prozessoren implementiert.
-
Der
in 1 veranschaulichte
Systemabschnitt 100 umfaßt eine Mehrzahl von Prozessoren,
hier Prozessoren 131 und 132, die auf einem Bus 101 angeordnet
sind. Der Bus 101 kann bei einem Liefern einer Kommunikation
zwischen verschiedenen Systemressourcen verwendet werden, z.B. Hauptverarbeitungseinheiten
(MPUs), z.B. den zuvor erwähnten
ITANIUM-Prozessoren, z.B. Prozessoren 131 und 132,
Speicher (nicht gezeigt) und/oder dergleichen. Ebenfalls mit dem
Bus 101 des veranschaulichten Ausführungsbeispiels gekoppelt ist
eine Prozessorschnittstelle 110, die einen Prozessorschnittstelleneingangsblock
(PIN-Blocks) 113 und einen Prozessorschnittstellenausgangsblock (POUT-Blocks) 114 umfaßt.
-
Der
Prozessorschnittstelleneingangsblock 113 des veranschaulichten
Ausführungsbeispiels umfaßt eine
Prozessorschnittstellen-In-Reihe-Warteschlange (PIQ) 112.
Die Prozessorschnittstellen-In-Reihe-Warteschlange 112 umfaßt eine
In-Reihe-Warteschlange 111, die verwendet wird, um Transaktionsphasen
zu nutzen, um einen Abschluß von
Transaktionen auf dem Bus in einer Reihenfolge gemäß einem
dominierenden Protokoll zu gewährleisten.
-
Der
Prozessorausgangsblock 114 umfaßt einen Anfangsblock/Datenverarbeitungsblock 143,
der mit einer Außer-Der-Reihe-Warteschlange
oder -Transaktionstabelle 144 wirksam ist, um eine Transaktionsausführung auf
dem Bus, die in einer beliebigen Reihenfolge zurückgegeben werden kann, nachzuverfolgen.
Ein Prozessorausgabeadreßsteuerungs/Verarbeitungsblock
(POAC-Block) 142 und ein Prozessorausgangsdatenblock (POD-Block) 141 des Prozessorausgangsblocks 114 arbeiten
mit der Transaktionstabelle 144 und/oder dem Anfangsblock-/Datenverarbeitungsblock 143 zusammen,
um Anfangsblock- und Dateninformationen gemäß Transaktionen auf dem Bus 101 auszugeben.
-
Man
sollte erkennen, daß der
Systemabschnitt 100 eventuell lediglich einen kleinen Abschnitt
eines bestimmten Systems darstellt. Demgemäß kann das System, von dem
der Systemabschnitt 100 ein Bestandteil ist, zusätzlich zu
den gezeigten Systemressourcen auch Prozessoren, Busse, Prozessorschnittstellen
und/oder andere Systemressourcen umfassen.
-
Im
Betrieb gemäß einem
Ausführungsbeispiel
werden Transaktionen, die durch einen Prozessor, z.B. Prozessoren 131 und 132,
ausgegeben werden, zunächst
in der Prozessorschnittstellen-In-Reihe-Warteschlange 112 verarbeitet.
Demgemäß kann eine
Transaktion entsprechend der Reihenfolge verarbeitet werden, z.B.
um eine Transaktionsanforderungsphase, eine Datennachprüfphase und
eine Datenantwortphase zu umfassen, wie sie durch Zustände, die
in der In-Reihe-Warteschlange 111 gespeichert
sind, widergespiegelt werden. Nach Abschluß der In-Reihe-Transaktionsphasen,
die der In-Reihe-Warteschlange 112 zugeordnet
sind, können Transaktionen
in der Transaktionstabelle 144 bis zum Abschluß der Transaktion
nachverfolgt werden.
-
Wenn
z.B. ein Prozessor eine Speicherleseoperation durchführt, kann
auf dem Bus eine Speicherleseoperationsanforderung von diesem Prozessor
erscheinen, in der Prozessorschnittstellen-In-Reihe-Warteschlange
verarbeitet werden und zum Zweck einer tatsächlichen Wiedergewinnung und Rückgabe der
angeforderten Daten an den Rest des Systems weitergesandt werden.
Während
jedoch die tatsächliche
Wiedergewinnung und Rückgabe
der angeforderten Daten bewerkstelligt wird, kann ein Transaktionseintrag
in die Transaktionstabelle plaziert werden, um zu zeigen, daß eine angeforderte Speicherleseoperationstransaktion
immer noch im Schwebezustand ist. Es wird erwartet, daß die angeforderte
Speicherleseoperationstransaktion an den Anfangsblock/Datenverarbeitungsblock
zurückgegeben
werden wird. Der Anfangsblock-/Datenverarbeitungsblock akzeptiert
die zurückgegebenen
Informationen und sieht auf die Transaktionstabelle, um zu bestimmen,
wie die Informationen gehandhabt werden sollen. Demgemäß kann der
Prozessorausgangsadreßsteuerung
ein Anfangsblock bereitgestellt werden, um anzugeben, daß zugeordnete
Daten zu einem bestimmten Prozessor, der in der Transaktionstabelle
identifiziert wird, gelenkt werden. Danach können die Daten dem Prozessorausgangsdatenblock
bereitgestellt werden, um diese Daten mit den ordnungsgemäßen Informationen
auf dem Bus zu plazieren, derart, daß der Prozessor, der die Leseoperation
durchführte,
diese Daten bekommen wird.
-
Obwohl
erwartet wird, daß eine
typische Operation zu einer Rückgabe
von Transaktionen führen
wird, wie oben erläutert
wurde, können
bestimmte Situationen dazu führen,
daß eine
Rückgabe
bezüglich
einer oder mehrerer Transaktionen niemals geliefert wird. Um zu
vermeiden, daß ein
Prozessor oder eine andere Systemressource eine weitere Verarbeitung
anhält
(d.h. ein „Suspendieren" oder „Gefrieren"), und/oder um Fehlerzustände ordnungsgemäß zu erfassen,
liefern Ausführungsbeispiele
der vorliegenden Erfindung eine Transaktionszeitüberschreitungsnachverfolgung
und eine Löschung
einer zeitüberschrittenen
Transaktion. Da jedoch Systeme, bei denen Ausführungsbeispiele der vorliegenden
Erfindung eingesetzt werden können,
eine große
Anzahl von gleichzeitigen Transaktionen unterstützen können, sind Ausführungsbeispiele
der vorliegenden Erfindung angepaßt, um die zuvor erwähnte Transaktionszeitüberschreitungsnachverfolgung
zu liefern, ohne separate Zeitüberschreitungszähler für jede Transaktion,
für die
eine Zeitüberschreitungsnachverfolgung
geliefert wird, zu implementieren.
-
Demgemäß implementieren
Ausführungsbeispiele
der vorliegenden Erfindung eine Zustandsmaschine oder Zustandsmaschinen,
wie z.B. die in 1 gezeigten
Zustandsmaschinen 151 und 161, die Zustände liefern,
die jeder Transaktion zugeordnet sind, für die eine Zeitüberschreitungsnachverfolgung
geliefert werden soll, um zu bestimmen, wann eine bestimmte Transaktion über eine
zugeordnete Zeitüberschreitungsperiode
hinaus fortgedauert hat. Wie in der Technik bekannt ist, ist eine
Zustandsmaschine allgemein jegliche Vorrichtung, die den Status einer
Sache zu einem gegebenen Zeitpunkt speichert und auf eine Eingabe
hin wirksam ist, um den Status zu verändern und/oder zu bewirken,
daß eine Aktion
oder eine Ausgabe für
eine beliebige gegebene Veränderung
stattfindet. Die Zustandsmaschinen 151 und 161 des
veranschaulichten Ausführungsbeispiels
arbeiten mit einer Transaktionsabschlußlogik 170 zusammen,
um ein Löschen
von zeitüberschrittenen
Transaktionen zu steuern. Einzelheiten bezüglich der Zustände der
Zustandsmaschine 151 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung sind in 2 gezeigt.
Desgleichen sind Einzelheiten bezüglich der Zustände der
Zustandsmaschine 161 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung in 3 gezeigt.
-
Man
sollte erkennen, daß,
obwohl das veranschaulichte Ausführungsbeispiel
zwei Transaktionszeitüberschreitungszustandsmaschinen
umfaßt,
die vorliegende Erfindung nicht auf eine bestimmte Anzahl von Transaktionszeitüberschreitungszustandsmaschinen
beschränkt
ist. Demgemäß können Ausführungsbeispiele
der vorliegenden Erfindung eine beliebige gewünschte Anzahl von Transaktionszeitüberschreitungszustandsmaschinen,
wie sie beispielsweise einer beliebigen Anzahl von Transaktionsklassifizierungen
entsprechen können,
implementieren. Derartige Zustandsmaschinen können kooperativ arbeiten, um
eine Zeitüberschreitungstransaktionsnachverfolgung
bezüglich
Transaktionen zu liefern, oder sie können unabhängig voneinander arbeiten.
-
Wie
bei dem Ausführungsbeispiel
der 1 gezeigt ist, kann
die Transaktionstabelle 144 eine oder mehrere Zustandsmaschinen,
z.B. die Zustandsmaschinen 151 und 161 der vorliegenden
Erfindung, umfassen, obwohl Zustandsmaschinen von Ausführungsbeispielen
an einer beliebigen geeigneten Stelle angeordnet sein können, um
den Zeitüberschreitungsstatus
von Transaktionen zu speichern, und auf eine Eingabe hin wirksam
sein können,
um den Status zu verändern
und/oder zu bewirken, daß eine
Aktion oder eine Ausgabe für
eine beliebige gegebene Veränderung
stattfindet. Zeitüberschreitungszähler und
eine Zustandsvorrückungslogik,
die in 1 als Zeitüberschreitungszähler 153a, 153b und 163 und
Zustandsvorrückung 152a, 152b und 162 gezeigt
sind, sind bezüglich
der bei dem veranschaulichten Ausführungsbeispiel gezeigten Zustandsmaschine
vorgesehen. Ein Zeitüberschreitungszähler und
eine entsprechende Zustandsvorrückungslogik
arbeiten mit einer Zustandsmaschine zusammen, um zeitüberschreitungsnachverfolgte Transaktionen
durch eine Anzahl von Zuständen
hindurch vorzurücken,
wodurch eine gewünschte
minimale Zeitüberschreitungsperiode
geliefert wird. Register, die hier als Register 154 und 164 gezeigt
sind, können
mit den Zustandsmaschinen zusammenwirken, um Zustandsinformationen
bezüglich
jeder Transaktion einer Klassifizierung von Transaktionen, die einer
entsprechenden der Zustandsmaschinen zugeordnet sind, zu speichern.
Nachdem eine bestimmte Transaktion einen zeitüberschrittenen Zustand erreicht,
wie durch den in einem der zuvor erwähnten Register gespeicherten
Zustand angegeben werden kann, können
ein „Zeitüberschreitung
erfaßt"-Block und ein Prioritätscodierungsblock,
hier als „Zeitüberschreitung
erfaßt"-Block und Prioritätscodierungsblock 165 gezeigt,
Informationen bezüglich
einer bestimmten Transaktion, die einen zeitüberschrittenen Zustand erreicht
hat, zum weiteren Verarbeiten an eine Transaktionsabschlußlogik liefern.
-
Die
Transaktionsabschlußlogik 170 des
veranschaulichten Ausführungsbeispiels
umfaßt
eine Entscheidungslogik, die hier eine Entscheidungseinheit 171,
einen Multiplexer 172, ein Register 173 und einen
Multiplexer 174 umfaßt,
um zwischen mehreren Transaktionen, die gelöscht werden sollen, zu entscheiden.
Die Entscheidungslogik des veranschaulichten Ausführungsbeispiels
wirkt mit einer Anfangsblock/Datenverarbeitung 143 zusammen, um
zeitüberschrittene
Transaktionen, wie sie durch den „Zeitüberschreitung erfaßt"-Block und den Prioritätscodierungsblock 155 und 165 angegeben
werden, aus der Transaktionstabelle 144 zu löschen. Zusätzlich erzwingt
die Anfangsblock/Datenverarbeitung 143 eines bevorzugten
Ausführungsbeispiels Antworten
bezüglich
bestimmter Transaktionen, beispielsweise ein Datenpaket bereitzustellen,
das gefälschte
Daten aufweist, um dadurch einer entsprechenden Systemressource
eine erwartete Antwort zu liefern. Man sollte erkennen, daß derartige
erzwungene Antworten einem vorbestimmten Protokoll folgen können, beispielsweise
einem, das alle Einsen oder ein anderes bekanntes Muster umfaßt, um eine empfangende
Systemressource bezüglich
eines zeitüberschrittenen
Zustands zu warnen.
-
Man
sollte erkennen, daß die
Anfangsblock/Datenverarbeitung 143 während des Verarbeitens der
zuvor erwähnten
zeitüberschrittenen
Transaktionen weiterhin tatsächliche
Transaktionsrückgaben
empfangen kann. Überdies
können
derartige tatsächliche
Transaktionsrückgaben
einer Transaktion entsprechen, die als durch einen bestimmten des "Zeitüberschreitung
erfaßt"-Blocks und des Prioritätscodierungsblocks 155 und 165 zeitüberschritten angegeben
wird. Wie aus der nachstehenden Erläuterung deutlicher ersichtlich
wird, kann die Anfangsblock-/Datenverarbeitung 143 dementsprechend
bestimmte Informationen über
zeitüberschrittene
Transaktionen außer
Kraft setzen oder ignorieren.
-
Im
Betrieb gemäß dem veranschaulichten Ausführungsbeispiel
gibt ein Prozessor, z.B. einer der Prozessoren 131 und 132,
eine neue Transaktion aus, die durch den Prozessorschnittstelleneingang 113 empfangen
wird. Vorzugsweise liefert der Prozessorschnittstelleneingang 113 Informationen
bezüglich
bestimmter neuer Transaktionen (NEW_TXN) und zugeordnete Indexierungsinformationen
(INDEX) an die Zustandsmaschine 151. Die Indexierungsinformationen
können
eine Bezugnahme aufweisen, die einer Position entspricht, an der die
Transaktion in der Transaktionstabelle 144 gespeichert
werden soll. Wo beispielsweise 64 Transaktionen durch die
Transaktionstabelle 144 nachverfolgt werden, kann der Index
eine Zahl zwischen Null und 63 sein. Man sollte also erkennen,
daß die
Zustandsflußdiagramme
der 2 einem einzigen Transaktionsindex
entsprechen. Demgemäß sind vorzugsweise
mehrere derartige Zustandsflüsse
bezüglich
der Mehrzahl von Transaktionen implementiert, für die ein Transaktionszeitüberschreitungsnachverfolgen
durch die Transaktionstabelle 144 des veranschaulichten
Ausführungsbeispiels
geliefert wird.
-
Wie
in 2 zu sehen ist, verfolgen
Zustände 202–205 der
Zustandsmaschine 151 gemäß einem Ausführungsbeispiel
der Erfindung zumindest anfänglich
alle Transaktionen nach, für
die der Prozessorschnittstelleneingang 113 das Signal NEW_TXN
aktiviert, wodurch eine Standardklassifizierung (MEM) bezüglich Transaktionen,
die dem Signal NEW_TXN entsprechen, eingerichtet wird. Falls jedoch
an irgendeinem Punkt der Transaktionszeitüberschreitungsnachverfolgung
der Transaktion, die einem bestimmten Index zugeordnet ist, bestimmt wird,
daß die
Transaktion einer anderen Klassifizierung (MMIO) angehört, z.B.
das Signal SET_MMIO wird durch den Prozessorschnittstelleneingang 113 aktiviert,
werden die Zustände 212–215 der
Zustandsmaschine 151 eine Transak tionszeitüberschreitungsnachverfolgung
bezüglich
der Transaktion bereitstellen.
-
Die
Transaktionszustände
bezüglich
eines bestimmten Index, wie in 2 gezeigt,
beginnen mit einem Ruhezustand 201. Der Ruhezustand 201 entspricht
einem Zustand, bei dem keine Transaktion bezüglich des jeweiligen Index
in der Schwebe ist, für den
ein Transaktionszeitüberschreitungsnachverfolgen
derzeit durch die Zustandsmaschine 151 verwendet wird.
Auf eine Aktivierung des Neue-Transaktion-Signals (NEW_TXN) durch
den Prozessorschnittstelleneingang 113 hin bewegt sich
jedoch die Zustandsmaschine 151 von dem Ruhezustand 201 zu
dem Schwebezustand 202, wie in dem Register 154 angegeben
sein kann.
-
Ein
Transaktionzeitüberschreitungsnachverfolgen
einer ersten Transaktionsklassifizierung (MEM) durch die Zustandsmaschine 151 des
veranschaulichten Ausführungsbeispiels
beginnt bei dem Schwebezustand 202. Dementsprechend bewegt sich
die Zustandsmaschine 151 auf eine Aktivierung eines Zeitüberschreitungszählersignals
hin, wie es durch die Zustandsvorrückung 152a geliefert
wird, von dem Schwebezustand 202 zu einem nachfolgenden
MEM-Klassifizierungszeitüberschreitungs-zustand,
wie in dem Register 154 angegeben sein kann. Beispielsweise
kann der Zeitüberschreitungszähler 153a einen
freilaufenden Takt liefern, der von einer vorbestimmten Zahl auf
Null abwärts
zählt,
zurücksetzt
und anschließend
wieder abwärts
zählt.
Die vorbestimmte Zahl kann so ausgewählt sein, daß sie ein
ausgewähltes
MEM-Klassifizierungsabwärtszählintervall
liefert. Jedesmal, wenn der Zeitüberschreitungszähler 153a Null
erreicht, kann die Zustandsvorrückung 152a ein
Zeitüberschreitungszählersignal aktivieren,
was der Zustandsmaschine 151 gegenüber einen Ablauf einer weiteren
Epoche des Abwärtszählintervalls
für eine
erste Transaktionsklassifizierung (MEM) angibt.
-
Wenn
sie sich bei dem Schwebezustand 202 befindet, bewegt sich
die Zustandsmaschine 151 auf eine Aktivierung des Zeitüberschreitungszählersignals
durch die Zustandsvorrükkung 152a hin
zu dem ersten Zeitüberschreitungszustand 203.
Analog dazu bewegt sich die Zustandsmaschine 151, wenn
sie sich bei dem ersten Zeitüberschreitungszustand 203 befindet,
auf eine Aktivierung des Zeitüberschreitungszählersignals
durch die Zustandsvorrückung 152a hin
zu dem zweiten Zeitüberschreitungszustand 204.
Wenn sie sich bei dem zweiten Zeitüberschreitungszustand 204 befindet,
bewegt sich die Zustandsmaschine 151 auf eine Aktivierung
des Zeitüberschreitungszählersignals
durch die Zustandsvorrückung 152a hin
zu einem dritten Zeitüberschreitungszustand 205.
Gemäß dem veranschaulichten Ausführungsbeispiel
entspricht der dritte Zeitüberschreitungszustand 205 einem
Zustand, bei dem die MEM-Transaktion als zeitüberschritten betrachtet wird.
Dementsprechend kann der „Zeitüberschreitung
erfaßt"- und Prioritätscodierungsblock 155 erfassen,
daß eine
bestimmte Transaktion in einen dritten Zeitüberschreitungszustand 205 eingetreten
ist, und die Transaktion für
ein Zeitüberschreitungsverarbeiten
durch die Transaktionabschlußlogik 170 prioritätscodieren.
-
Falls
der Prozessorschnittstellenausgang 114 zu irgendeinem Zeitpunkt
während
des Transaktionszeitüberschreitungsnachverfolgens
durch die Zustandsmaschine 151 eine Transaktionsrückgabe empfängt und
die entsprechende Transaktion löscht, wird
vorzugsweise ein Löschsignal
bezüglich
der Transaktion aktiviert. Auf eine Aktivierung eines derartigen
Löschsignals
hin, was einen Abschluß der Verarbeitung
bezüglich
der Transaktion durch die Prozessorschnittstelle 110 angibt,
kehrt die Zustandsmaschine 151 für diese Transaktion vorzugsweise
zu dem Ruhezustand 201 zurück.
-
Falls
der Prozessorschnittstelleneingang 113 zu irgendeinem Zeitpunkt
während
des Transaktionszeitüberschreitungsnachverfolgens durch
die Zustandsmaschine 151 bestimmt, daß eine bestimmte Transaktion
einer anderen Klassifizierung an gehört als der Standardklassifizierung,
z.B. MMIO statt MEM, aktiviert der Prozessorschnittstelleneingang 113 des
veranschaulichten Ausführungsbeispiels
das Signal SET_MMIO. Auf eine Aktivierung des SET_MMIO-Signals hin
bewegen sich jegliche der Zustände 202–205 der
Zustandsmaschine 151 zum Zweck eines Transaktionszeitüberschreitungsnachverfolgens
durch die Zustandsmaschine 151 zu dem Schwebezustand 212,
wie in dem Register 154 angegeben sein kann.
-
Das
Transaktionszeitüberschreitungsnachverfolgen
einer zweiten Transaktionsklassifizierung (MMIO) durch die Zustandsmaschine 151 des
veranschaulichten Ausführungsbeispiels
beginnt bei dem Schwebezustand 212. Dementsprechend bewegt sich
die Zustandsmaschine 151 auf eine Aktivierung eines Zeitüberschreitungszählersignals
hin, wie es beispielsweise durch die Zustandsvorrückung 152b geliefert
wird, von dem Schwebezustand 212 zu einem nachfolgenden
MMIO-Klassifizierungszeitüberschreitungszustand,
wie er durch das Register 154 angegeben sein kann. Beispielsweise
kann der Zeitüberschreitungszähler 153b einen
freilaufenden Takt liefern, der von einer vorbestimmten Zahl bis
auf Null abwärts
zählt,
zurücksetzt
und anschließend
erneut abwärts
zählt.
Die vorbestimmte Zahl kann so ausgewählt sein, daß sie ein
ausgewähltes MMIO-Klassifizierungsabwärtszählintervall
liefert. Jedesmal, wenn der Zeitüberschreitungszähler 153b Null
erreicht, kann die Zustandsvorrückung 152b ein Zeitüberschreitungszählersignal
aktivieren, was der Zustandsmaschine 151 gegenüber einen
Ablauf einer weiteren Epoche des Abwärtszählintervalls einer zweiten
Transaktionsklassifizierung (MMIO) angibt.
-
Wenn
sie sich bei dem Schwebezustand 212 befindet, bewegt sich
die Zustandsmaschine 151 auf eine Aktivierung des Zeitüberschreitungszählersignals
durch die Zustandsvorrükkung 152b hin
zu dem ersten Zeitüberschreitungszustand 213.
Analog dazu bewegt sich die Zustandsmaschine 151, wenn
sie sich bei dem ersten Zeitüberschreitungszustand 213 befindet,
auf eine Aktivierung des Zeitüberschreitungszählersi gnals
durch die Zustandsvorrückung 152b hin
zu dem zweiten Zeitüberschreitungszustand 214.
Wenn sie sich bei dem zweiten Zeitüberschreitungszustand 214 befindet,
bewegt sich die Zustandsmaschine 151 auf eine Aktivierung
des Zeitüberschreitungszählersignals
durch die Zustandsvorrückung 152b hin
zu einem dritten Zeitüberschreitungszustand 215.
Gemäß dem veranschaulichten Ausführungsbeispiel
entspricht der dritte Zeitüberschreitungszustand 215 einem
Zustand, bei dem die MMIO-Transaktion als zeitüberschritten betrachtet wird.
Dementsprechend kann der „Zeitüberschreitung
erfaßt"- und Prioritätscodierungsblock 155 erfassen,
daß eine
bestimmte Transaktion in einen dritten Zeitüberschreitungszustand 215 eingetreten
ist, und die Transaktion für
ein Zeitüberschreitungsverarbeiten
durch die Transaktionabschlußlogik 170 prioritätscodieren.
-
Falls
der Prozessorschnittstellenausgang 114 zu irgendeinem Zeitpunkt
während
des Transaktionszeitüberschreitungsnachverfolgens durch
die Zustandsmaschine 151 eine Transaktionsrückgabe empfängt und
die entsprechende Transaktion löscht,
wird vorzugsweise ein Löschsignal
bezüglich
der Transaktion aktiviert. Auf eine Aktivierung eines derartigen
Löschsignals
hin, was einen Abschluß der
Verarbeitung bezüglich
der Transaktion durch die Prozessorschnittstelle 110 angibt,
kehrt die Zustandsmaschine 151 für diese Transaktion vorzugsweise
zu dem Ruhezustand 201 zurück.
-
Aus
dem Obigen sollte man erkennen, daß gemäß der vorliegenden Erfindung
eine beliebige Anzahl von unterschiedlichen Zeitüberschreitungszählern implementiert
werden könnte,
beispielsweise um eine gewünschte
Anzahl von unterschiedlichen Transaktionstypen zu berücksichtigen.
Jeder derartige Zähler
kann programmierbar sein, um gewünschte
Zeitüberschreitungsperioden
zu liefern, wodurch für
jede Transaktionsklassifizierung unabhängige und unterschiedliche
Zeitüberschreitungsperioden geliefert
werden. Beispielsweise kann eine MMIO-Transaktion einem Teil des
Systems zugeordnet sein, der eventuell nicht existiert, und somit
kann der Zeitüberschreitungszähler 153b programmiert sein,
um eine längere
Epoche als der Zeitüberschreitungszähler 153a zu
liefern, um einen verbesserten Systembetrieb bezüglich MMIO-Transaktionen zu
ermöglichen.
-
Man
sollte ferner erkennen, daß ein
Betrieb des veranschaulichten Ausführungsbeispiels der Zustandsmaschine 151 zumindest
zwei vollständige Zeitüberschreitungsepochen
liefert, wie sie durch die zugeordneten Zeitüberschreitungszähler definiert sind.
Im einzelnen kann, während
die Zeitüberschreitungszähler des
veranschaulichten Ausführungsbeispiels
freilaufend sind, eine bestimmte Transaktion an einem beliebigen
Punkt in einer aktuellen Epoche des entsprechenden Zeitüberschreitungszählers in die
Schwebezustände
beider Transaktionsklassifizierungen der Zustandsmaschine 151 (Zustände 202 und 212)
eintreten. Jedoch bewegt sich der Zeitüberschreitungszustand dieser
Transaktion, wie sie durch die Zustandsmaschine nachverfolgt wird,
erst dann zu nachfolgenden Zuständen
(z.B. Zeitüberschreitungszuständen 203–205 bzw. 213–215),
wenn eine vollständige
Zeitüberschreitungsepoche
gemäß dem entsprechenden
Zeitüberschreitungszähler verstrichen
ist. Da ein Eintreten in den dritten Zeitüberschreitungszustand 205 und 215 des
veranschaulichten Ausführungsbeispiels
damit verbunden ist, daß die
zugeordnete Transaktion zeitüberschritten wird,
kann eine Zeitüberschreitungsverarbeitung durch
die Transaktionsabschlußlogik 170 unmittelbar nachdem
sich eine der beiden Zustandsmaschinen zu diesem abschließenden Zeitüberschreitungszustand
bewegt, beginnen. Demgemäß beträgt die Zeitüberschreitungsperiode,
die jeder Transaktionsklassifizierung der Zustandsmaschine 151 zugeordnet ist,
zumindest das Zweifache der Zeitüberschreitungsepoche,
die durch den Zeitüberschreitungszähler 153a bzw. 153b definiert
ist.
-
Ausführungsbeispiele
der vorliegenden Erfindung erstellen ein Zeitüberschreitungsperiodenfenster,
wobei eine minimale Zeitüberschreitungsperiode
der doppelten zugeordneten Zeitüberschreitungszählerepoche
entspricht und eine maximale Zeitüberschreitungsperiode dem Dreifachen
des zugeordneten Zeitüberschreitungszählers entspricht. Als
Beispiel einer Situation, bei der eine maximale Zeitüberschreitungsperiode
erfahren wird, kann ein Neue-Transaktion-Signal direkt nachdem ein
Zeitüberschreitungszähler 153a von
einer vorherigen Epoche zurückgesetzt
wurde, aktiviert werden. Demgemäß kann eine
vollständige
Epoche des Zeitüberschreitungszählers 153a verstreichen,
bevor sich die Zustandsmaschine 151 von dem Schwebezustand 202 zu
dem ersten Zeitüberschreitungszustand 203 bewegt.
Die Zeitüberschreitungsverarbeitung
durch die Transaktionsabschlußlogik 170 beginnt
erst nach drei Epochen des Zeitüberschreitungszählers 153a, wodurch
eine maximale Zeitüberschreitungsperiode des
Dreifachen des Zeitüberschreitungszählers eingerichtet
wird. Dementsprechend wird, falls der Zeitüberschreitungszähler 153a für eine Epoche
von 25 msec programmiert ist, eine MEM-Transaktion gemäß dem veranschaulichten
Ausführungsbeispiel
als zeitüberschritten
angesehen, falls durch die Anfangsblock-/Datenverarbeitung 143 irgendwo
im Bereich zwischen 50 und 75 msec, nachdem die Transaktion in die
Transaktionstabelle 144 eingetragen wurde, keine Transaktionsrückgabe empfangen
wurde, je nachdem, wo sich der Zeitüberschreitungszähler 153a bei
seinem Abwärtszählen befand,
als die Transaktion in die Transaktionstabelle eingetragen wurde.
-
Man
sollte erkennen, daß die
Zeitüberschreitungszähler 153a und 153b einen
Zähler
einer relativ hohen Auflösung,
beispielsweise in der Größenordnung
von 32 Bits, auf ökonomische
Weise implementieren können,
da beim Liefern eines Transaktionszeitüberschreitungsnachverfolgens
gemäß Ausführungsbeispielen
der vorliegenden Erfindung sehr wenige derartige Zähler verwendet
werden. Ein derartiger Hochauflösungszähler, der
bei den Zustandsmaschinen des veranschaulichten Ausführungsbeispiels
implementiert ist, ermöglicht
eine große
Bandbreite von Zeitüberschreitungsperioden. Unter
Verwendung eines 32-Bit-Zeitüberschreitungszählers können Ausführungsbeispiele
der vorliegenden Erfindung bei spielsweise eine Zeitüberschreitungsperiode
im Bereich von 17,2 bis 25,8 Sekunden am oberen Ende der Skala oder
eine Zeitüberschreitungsperiode
in der Größenordnung
von Millisekunden am unteren Ende der Skala liefern.
-
Obwohl
bei der Transaktionszeitüberschreitungszustandsmaschine
des veranschaulichten Ausführungsbeispiels
auf eine gewisse Zählerauflösung verzichtet
wird, sollte man erkennen, daß verschiedene
Anzahlen von Zeitüberschreitungszuständen, einschließlich unterschiedlicher
Anzahlen von Zeitüberschreitungszuständen bezüglich jeder
Zustandsmaschine, implementiert sein können, um ein gewünschtes
Auflösungsniveau
zu liefern. Man sollte jedoch erkennen, daß eine Hinzufügung derartiger Zeitüberschreitungszustände die
Gesamtkosten bezüglich
jeder Transaktion, die durch eine derartige Zustandsmaschine nachverfolgt
wird, insofern erhöhen
kann, als eventuell mehr Bits beim Nachverfolgen von Zuständen in
den entsprechenden Registern verwendet werden.
-
Das
veranschaulichte Ausführungsbeispiel der
Zustandsmaschine 151 verwendet zwei Bits für ein Zeitüberschreitungszustandsnachverfolgen
(z.B. 00 Schwebezustand, 10 erster Zeitüberschreitungszustand, 01 zweiter
Zeitüberschreitungszustand
und 11 dritter Zeitüberschreitungszustand),
wobei weitere zwei Bits verwendet werden, um einen Nachverfolgungsstatus
und die Transaktionsklassifizierung anzugeben (z.B. 10 gibt eine
in der Schwebe befindliche Transaktion einer MEM-Klassifizierung an und 11 gibt eine
in der Schwebe befindliche Transaktion einer MMIO-Klassifizierung
an). Selbstverständlich können, falls
gewünscht,
auch andere Implementierungen verwendet werden, um ein Nachverfolgen von
gewünschten
Zeitüberschreitungsinformationen zu
liefern.
-
Wie
oben erwähnt
wurde, erfaßt
der „Zeitüberschreitung
erfaßt"- und Prioritätscodierungsblock 155,
wenn Transaktionen den abschließenden
Zeitüberschreitungszustand
erreichen, bei dem veranschaulichten Ausführungsbeispiel der Zustandsmaschine 151 die
Zustände 205 und 215,
den Transakti onszustand und codiert die Transaktion für eine weitere
Verarbeitung durch die Transaktionsabschlußlogik 170. Beispielsweise
kann der „Zeitüberschreitung erfaßt"- und Prioritätscodierungsblock 155 einen
bestimmten, im Register 154 gespeicherten Index identifizieren,
der den Zeitüberschreitungszustand
erreicht hat, und kann diesen Index zum Erzwingen einer Antwort,
Löschen
der Transaktion usw. an die Transaktionsabschlußlogik 170 liefern.
Jedoch können
mehrere der Transaktionen gleichzeitig einen zeitüberschrittenen
Zustand erreichen. Deshalb richtet die Prioritätscodierungsschaltungsanordnung
des "Zeitüberschreitung
erfaßt"-Blocks und Prioritätscodierungsblocks 155 eine
Priorität
bezüglich
jeder derartigen Transaktion ein, um ihre Verarbeitung seriell zu
ermöglichen.
Beispielsweise können
Transaktionen auf der Grundlage ihres zugeordneten Index für eine weitere
Verarbeitung priorisiert werden. Zusätzlich oder alternativ dazu
können
Transaktionen auf der Basis des Transaktionstyps, der anfordernden Systemressource
usw. priorisiert werden. Da eine Mehrzahl von Transaktionen als
durch mehrere des "Zeitüberschreitung
erfaßt"-Blocks und Prioritätscodierungsblocks
des veranschaulichten Ausführungsbeispiels
gleichzeitig zeitüberschritten
angegeben sein können,
entscheidet die Entscheidungslogik, beispielsweise die Entscheidungseinheit 171 und
der Multiplexer 174 des veranschaulichten Ausführungsbeispiels,
eine serielle Lieferung der zeitüberschrittenen
Transaktionen an die Anfangsblock-/Datenverarbeitung 143.
Selbstverständlich
können,
falls gewünscht,
auch alternative Ausführungsbeispiele
eine parallele Verarbeitung von zeitüberschrittenen Transaktionen
vorsehen.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung nimmt die Anfangsblock-/Datenverarbeitung 143 ein
durch den Multiplexer 174 aktiviertes Transaktionszeitüberschreitungssignal
an und fragt eine Transaktionstabelle bezüglich Informationen ab, die
die jeweilige Transaktion betreffen. Während beispielsweise die Anfangsblock-/Datenverarbeitung 143 während einer
Zeit, in der Transaktionen, von denen be stimmt wird, daß sie zeitüberschritten
sind, durch die Entscheidungseinheit 171 entschieden werden,
weiterhin Transaktionsrückgaben
empfängt,
ist es möglich,
daß die
jeweilige Transaktion zurückgekehrt
ist und auf normale Weise durch die Anfangsblock-/Datenverarbeitung
verarbeitet wurde. Somit würde
die Transaktionstabelle 144 die jeweilige Transaktion nicht
mehr als Zeitüberschreitung
zeigen, und die Anfangsblock-/Datenverarbeitung 143 kann
die Zeitüberschreitungsinformationen
verwerfen oder vielleicht eine Aufzeichnung protokollieren, um eine
unbefriedigende Rückgabelatenz
bezüglich
der Transaktion anzugeben. Falls jedoch die Anfrage an die Transaktionstabelle 144 durch
die Anfangsblock-/Datenverarbeitung 143 ergibt, daß sich die
Transaktion immer noch in einer Zeitüberschreitung befindet, bestimmt
die Anfangsblock-/Datenverarbeitung 143 vorzugsweise eine ordnungsgemäße Maßnahme,
die zu ergreifen ist, beispielsweise welche Art von Rückgabe an
den anfordernden Prozessor gesendet werden soll.
-
Falls
beispielsweise in dem System eine Hardware vorliegt, die nicht existiert,
kann die Transaktion als MMIO-Transaktion
klassifiziert werden, und die Tatsache, daß eine Zeitüberschreitung auftrat, wird
nicht als kritisch betrachtet werden, weshalb vorgeschlagen wird,
daß ein
vorbestimmtes Rückgabepaket,
das beispielsweise alle Einsen umfaßt, durch die Anfangsblock-/Datenverarbeitung 143 gezwungen
wird, den anfordernden Prozessor von dem Fehlen der bestimmten Hardware
zu benachrichtigen. Falls die Transaktion Daten von einem Speicher anforderte,
der in einer anderen Domain angeordnet ist, kann eine Zeitüberschreitung
zu einer Bestimmung führen,
daß ein
schwerwiegenderer Fehler mit einem Flag markiert werden soll, jedoch
kann die Anfangsblock-/Datenverarbeitung 143 trotzdem noch ein
Rückgabepaket,
das beispielsweise alle Einsen umfassen kann, zwingen, wieder eine
weitere Verarbeitung bezüglich
des anfordernden Prozessors zu ermöglichen. Falls jedoch die Transaktion
Daten von einem Speicher anforderte, der in einer Domain angeordnet
ist, die bezüglich
der Prozessorschnittstelle 110 als lokal erachtet wird,
kann ein kritischer Fehler mit einem Flag markiert werden, und die
Anfangsblock-/Datenverarbeitung 143 erzwingt
vielleicht keine Rückgabe
oder kann ein Paket zurückgeben,
um die Domain auf elegante Weise zum Absturz zu bringen und/oder
um Aspekte des Systems zu initialisieren. Selbstverständlich sind
die obigen Maßnahmen lediglich
beispielhaft, und gemäß der Erfindung
können
beliebige geeignete Maßnahmen
implementiert werden, ob es sich um ein Erzwingen von Rückgaben,
ein Markieren von Fehlern mit Flags, ein Implementieren von Neuversuchen
usw. und/oder um Kombinationen derselben handelt.
-
Nach
dem Verarbeiten einer bestimmten Transaktion durch die Anfangsblock-/Datenverarbeitung 143 wird
die Transaktionstabelle 144 vorzugsweise aktualisiert,
um den abgeschlossenen Status der Transaktion widerzuspiegeln. Nach
dem Erzwingen einer Rückgabe
oder dem auf andere Weise erfolgenden Abschließen einer Verarbeitung bezüglich einer
bestimmten Transaktion liefert die Anfangsblock-/Datenverarbeitung 143 vorzugsweise
ein Löschen-Signal
bezüglich
der Zustandsmaschine 151, um die Zustandsmaschine zu veranlassen,
sich von dem zeitüberschrittenen
Zustand (dritter Zeitüberschreitungszustand 205 bzw.
dritter Zeitüberschreitungszustand 215)
zu dem Ruhezustand 201 zu bewegen. Danach ist die Zustandsmaschine
bereit, eine Transaktionszeitüberschreitungsnachverfolgung
bezüglich
einer weiteren Transaktion aufzurufen, der anschließend der
nun gelöschte
Index zugewiesen wird.
-
Unter
Bezugnahme auf 3 ist
eine weitere Zustandsmaschine, die gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung vorgesehen ist, gezeigt. Im einzelnen
ist in 3 die Zustandsmaschine 161 gezeigt,
wie sie Transaktionen zugeordnet sein kann, die als Multicast (MC)
klassifiziert sind. Die Zustandsmaschine 161 eines bevorzugten
Ausführungsbeispiels
ist in der Transaktionstabelle 114 angeordnet, um ein Zeitüberschreitungsnachverfolgen
derartiger Multicast-Transaktionen zu ermöglichen, und liefert In formationen über zeitüberschrittene
Transaktionen an den Multiplexer 174 der Entscheidungslogik
der Transaktionsabschlußlogik 170 im
wesentlichen wie es oben in bezug auf die Zustandsmaschine 151 beschrieben
wurde. Man sollte erkennen, daß die
Zustandsvorrückung 162,
der Zeitüberschreitungszähler 163,
die Register 164 und der „Zeitüberschreitung erfaßt"- und Prioritätscodierungsblock 165 eines
bevorzugten Ausführungsbeispiels
bezüglich
der Zustandsmaschine 161 im wesentlichen funktionieren
wie entsprechende Komponenten (z.B. Zustandsvorrückung 152a, Zeitüberschreitungszähler 153a,
Register 154 und „Zeitüberschreitung
erfaßt"-Block und ein Prioritätscodierungsblock 155),
die oben in bezug auf die Zustandsmaschine 151 beschrieben
wurden.
-
Multicast-Transaktionen
können
Mehrpunktpakete liefern, die auf eine Mehrzahl von Systemressourcen
gerichtet sind, und nicht auf eine einzige Systemressource, wie
es für
viele Transaktionen üblich
ist. Beispielsweise kann ein Prozessorbus in einer der Zellen eines
Systems ein Cache-Synchronisierungspaket
ausgeben, das an eine Mehrzahl von Systemressourcen, z.B. alle Prozessoren
in einer Schutzdomain (d.h. alle Zellen, die unter der Steuerung
eines bestimmten Betriebssystems wirksam sind) gesendet werden soll.
Jeder Prozessorbus einer Schutzdomain müßte dieses Cache-Synchronisierungssignal
sehen, um eine Cache-Synchronisierung
durchzuführen.
Dementsprechend kann eine Prozessorschnittstelle im normalen Betrieb
eine derartige Multicast-Paketanforderung von einem zugeordneten
Prozessor empfangen und sie an alle Zellen senden, die sich in dieser
Schutzdomain befinden, wobei sie eine Bestätigung für jedes gesandte Anforderungspaket
erwartet. Jedoch kann eine Zelle mehrere Prozessoren und/oder mehrere
Busse umfassen. Obwohl auf die Multicast-Paketcachesynchronisierung
letztlich durch eine Mehrzahl von Systemressourcen in einer einzigen
Zelle eingewirkt wird, kann die anfordernde Systemressource von
jeder Zelle lediglich eine einzige Bestätigung erwarten. Dementsprechend
können
derartigen Multicast- Transaktionen
mehrere Transaktionsrückgaben
zugeordnet sein, wobei das letzte erwartete dieser Ergebnisse in einer
Rückgabe
an eine anfordernde Systemressource ausgegeben wird.
-
Der
Zeitüberschreitungszähler 163 und
die Zustandsvorrückungslogik 162,
die wie oben unter Bezugnahme auf die Zustandsmaschine 151 beschrieben
wirksam sind, können
bezüglich
der Zustandsmaschine 161 vorgesehen sein. Ein derartiger Zeitüberschreitungszähler und
eine entsprechende Zustandsvorrückungslogik
können
mit der Zustandsmaschine 161 zusammenwirken, um zeitüberschreitungsnachverfolgte
Transaktionen durch eine Anzahl von Zuständen vorzurücken, wodurch eine gewünschte minimale
Zeitüberschreitungsperiode
geliefert wird. Register 164, die wie oben bezüglich der Zustandsmaschine 151 beschrieben
wirksam sind, können
mit der Zustandsmaschine 161 zusammenwirken, um Zustandsinformationen
bezüglich
jeder Transaktion einer Klassifizierung von Transaktionen, die dieser
Zustandsmaschine zugeordnet sind, zu speichern. Nachdem eine bestimmte
Transaktion einen zeitüberschrittenen
Zustand erreicht hat, wie durch den in einem zuvor erwähnten Register
gespeicherten Zustand angegeben sein kann, kann der „Zeitüberschreitung
erfaßt"- und Prioritätscodierungsblock 165,
der wie oben bezüglich
der Zustandsmaschine 151 beschrieben wirksam ist, Informationen
bezüglich
einer bestimmten Transaktion, die einen zeitüberschrittenen Zustand erreicht
hat, zum Zweck einer weiteren Verarbeitung an die Transaktionsabschlußlogik 170 liefern.
-
Bei
einem Betrieb gemäß dem veranschaulichten
Ausführungsbeispiel
gibt ein Prozessor, z.B. einer der Prozessoren 131 und 132,
eine Multicast-Transaktion aus, die durch den Prozessorschnittstelleneingang 113 empfangen
wird. Die Prozessorschnittstelle 113 aktiviert ein Startsignal,
das angibt, daß eine
Multicast-Transaktion dabei ist, gestartet zu werden, und eine Logik
in derselben bestimmt jede zugeordnete Ressource, die die Multicast-Transaktion
bedienen wird.
-
Die
Transaktion stellt bezüglich
eines bestimmten Transaktionsindex, wie er in 3 gezeigt ist, fest, mit dem Ruhezustand 301 zu
beginnen. Der Ruhezustand 301 entspricht einem Nichtvorhandensein
einer in der Schwebe befindlichen Multicast-Transaktion bezüglich des
bestimmten Index, für
das das Transaktionszeitüberschreitungsnachverfolgen
derzeit durch die Zustandsmaschine 161 verwendet wird.
Auf eine Aktivierung des Startsignals durch den Prozessorschnittstelleneingang 113 hin bewegt
sich die Zustandsmaschine 161 jedoch von dem Ruhezustand 301 zu
dem gültigen
Zustand 302.
-
Eine
Transaktionszeitüberschreitungsnachverfolgung
der Multicast-Transaktionsklassifizierung (MC) durch die Zustandsmaschine 161 des
veranschaulichten Ausführungsbeispiels
beginnt bei dem gültigen
Zustand 302. Dementsprechend bleibt das veranschaulichte
Ausführungsbeispiel
in dem gültigen
Zustand 302, während
zugeordnete Multicast-Transaktionen gestartet werden. Die Zustandsmaschine 161 bewegt
sich auf eine Aktivierung eines Zeitüberschreitungszählersignals
hin von dem gültigen
Zustand 302 zu einem anschließenden MC-Klassifizierungszeitüberschreitungszustand. Beispielsweise
kann ein zugeordneter Zeitüberschreitungszähler einen
freilaufenden Takt liefern, der von einer vorbestimmten Zahl auf
Null abwärts zählt, zurücksetzt
und anschließend
wieder abwärts zählt. Die
vorbestimmte Zahl kann so ausgewählt sein,
daß sie
ein ausgewähltes
MC-Klassifizierungsabwärtszählintervall
liefert. Jedesmal, wenn der Zeitüberschreitungszähler Null
erreicht, kann ein zugeordneter Zustandsvorrückungsblock ein Zeitüberschreitungszählersignal
aktivieren, was der Zustandsmaschine 161 gegenüber einen
Ablauf einer weiteren Epoche des Abwärtszählintervalls angibt.
-
Wenn
sich die Zustandsmaschine bei dem gültigen Zustand 302 befindet,
bewegt sie sich auf eine Aktivierung des Zeitüberschreitungszählersignals
hin zu dem ersten Zeitüberschreitungszustand 303.
Wenn sie sich bei dem ersten Zeit überschreitungszustand 303 befindet,
bewegt sich die Zustandsmaschine 161 analog dazu auf eine
Aktivierung des Zeitüberschreitungszählersignals
hin zu dem zweiten Zeitüberschreitungszustand 304,
und wenn sie sich bei dem zweiten Zeitüberschreitungszustand 304 befindet,
bewegt sich die Zustandsmaschine 161 auf eine Aktivierung
des Zeitüberschreitungszählersignals
hin zu dem dritten Zeitüberschreitungszustand 305.
Gemäß dem veranschaulichten Ausführungsbeispiel
entspricht der dritte Zeitüberschreitungszustand
305 einem Zustand, bei dem die MC-Transaktion als zeitüberschritten
zu betrachten ist. Entsprechend kann die "Zeitüberschreitung
erfaßt"- und Prioritätscodierungslogik
erfassen, daß eine
bestimmte Transaktion in den dritten Zeitüberschreitungszustand 305 eingetreten
ist, und die Transaktion für
eine Zeitüberschreitungsverarbeitung durch
die Transaktionsabschlußlogik 170 prioritätscodieren.
-
Da
der Multicast-Transaktion eine Mehrzahl von Transaktionsanforderungen
zugeordnet ist, liefert ein Ausführungsbeispiel
der Zustandsmaschine 161 ein Bit für jede derartige Transaktion.
Dort, wo der Prozessorschnittstelleneingang 113 beispielsweise
bestimmt, daß eine
Multicast-Transaktion bezüglich
vier Systemressourcen, z.B. vier Prozessoren einer Zelle, gestartet
werden soll, kann jedes von vier Bits auf Eins eingestellt werden,
um jeder der vier Systemressourcen gegenüber die gestarteten Transaktionen
anzugeben. Während
Transaktionsrückgaben,
die der Multicast-Transaktion
zugeordnet sind, zu dem Prozessorschnittstellenausgang 114 zurückgegeben
werden, können
dem Prozessorschnittstelleneingang 113 Informationen bezüglich der
Systemressource, die eine Transaktionsantwort liefert, bereitgestellt
werden, und das entsprechende Nachverfolgungsbit kann auf Null geändert werden.
Obwohl eine oder mehrere Multicast-Rückgaben empfangen werden können, setzt
die Zustandsmaschine 161 des veranschaulichten Ausführungsbeispiels
den Zeitüberschreitungsstatus
erst dann zurück,
wenn alle derartigen Transaktionsbits eine Transaktionsrückgabe widerspiegeln,
wodurch angegeben wird, daß die
Multicast-Transaktion
abgeschlossen ist.
-
Man
sollte erkennen, daß die
Zustandsmaschine 161, wie sie oben beschrieben wurde, ein
Beispiel einer Zustandsmaschine ist, die eine Transaktionszeitüberschreitungsnachverfolgung
bezüglich
einer bestimmten Transaktionsklassifizierung unabhängig von
der Operation irgendeiner anderen Transaktionszeitüberschreitungsnachverfolgungszustandsmaschine
des veranschaulichten Ausführungsbeispiels
liefert. Obwohl die Zustandsmaschinen 151 und 161 des
veranschaulichten Ausführungsbeispiels
in der Darstellung beide als Teile der Transaktionstabelle 144 angeordnet
sind, sollte man erkennen, daß Zustandsmaschinen,
die gemäß Ausführungsbeispielen
der vorliegenden Erfindung verwendet werden, in einem anderen Bereich
des Systems als dem gezeigten oder in einem anderen Bereich als
dem der anderen Zustandsmaschinen, die gemäß der vorliegenden Erfindung
wirksam sind, angeordnet sein können.
Desgleichen beinhalten die Zustandsmaschinen 151 und 161 des
veranschaulichten Ausführungsbeispiels
in der Darstellung zwar einen ersten, einen zweiten und einen dritten
Zeitüberschreitungszustand,
jedoch können
Zustandsmaschinen der vorliegenden Erfindung eine beliebige Anzahl
von Zeitüberschreitungszuständen verwenden.
Beispielsweise können
unterschiedliche Zustandsmaschinen eines Ausführungsbeispiels der vorliegenden
Erfindung jeweils unterschiedliche Anzahlen von Zeitüberschreitungszuständen verwenden,
falls gewünscht.
Dementsprechend sollte man ohne weiteres erkennen, daß Ausführungsbeispiele der
vorliegenden Erfindung eine Vielzahl von Konfigurationen beim Liefern
eines Transaktionszeitüberschreitungsnachverfolgens
implementieren können.