-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft das Gebiet von Computersystemen.
Genauer betrifft diese Erfindung das Gebiet der Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindungs-
und – Kommunikationsarchitektur.
-
Allgemeiner Stand der Technik
-
Rechengeräte, z.B.
Computersysteme, Server, Netzwerkvermittlungen und Router, drahtlose
Kommunikationsvorrichtungen, und dergleichen bestehen typischerweise
aus einer Anzahl von ungleichen Elementen. Derartige Elemente beinhalten
häufig
einen Prozessor, eine Systemsteuerungslogik, ein Speichersystem, Ein-
und Ausgabeschnittstellen, und dergleichen. Zur Erleichterung der
Kommunikation zwischen derartigen Elementen haben sich Rechengeräte lange
Zeit auf Allzweck-Ein-/Ausgangsbusse verlassen, um diese ungleichen
Elemente des Rechensystems zu befähigen, zur Unterstützung der
unzähligen
Anwendungen, die durch diese Geräte
angeboten werden, miteinander zu kommunizieren.
-
Vielleicht
eine der am verbreitetsten vorhandenen Allzweck-Busarchitekturen
ist der Peripherkomponentenverbindungsbus (Peripheral Component
Internonnect (PCI) bus). Der PCI-Bus-Standard
(Peripheral Component Interconnect (PCI) Local Bus Specification,
Rev. 2.2, veröffentlicht
am 18. Dezember 1998) definiert eine Multi-Drop-, Parallelbusarchitektur
zur Verbindung von Chips, Erweiterungskarten, und Prozessor/Speicher-Subsystemen
auf eine vermittelte Weise in einem Rechengerät. Während typische PCI-Bus-Ausführungen
einen Durchsatz von 133 Mbps (d.h., 32 Bit bei 33 MHz) aufweisen,
gestattet der PCI-2.2-Standard 64 Bit pro Pin der parallelen Verbindung,
die auf bis zu 133 MHz getaktet sind, was zu einem theoretischen Durchsatz
von gerade über
1 Gbps führt.
-
Der
Durchsatz, der durch die PCI-Busarchitektur bereitgestellt wird,
hat bis vor kurzem eine ausreichende Bandbreite bereitgestellt,
um den internen Kommunikationsbedürfnissen sogar der fortschrittlichsten Rechengeräte (z.B.
Mehrfachprozessorserveranwendungen, Netzwerkgeräte, usw.) entgegenzukommen. Doch
die jüngsten
Fortschritte bei der Verarbeitungsleistung und die zunehmenden Eingangs-/Ausgangsbandbreitenanforderungen
schaffen eine Situation, in der frühere Allzweck-Architekturen
wie etwa die PCI-Busarchitektur zu Verarbeitungsengpässen in
derartigen Rechengeräten
geworden sind.
-
Eine
andere Beschränkung,
die mit früheren
Architekturen verbunden ist, ist, daß sie typischerweise nicht
gut geeignet sind, isochrone (zeitabhängige) Datenströme zu verarbeiten.
Ein Beispiel eines isochronen Datenstroms ist ein Multimediadatenstrom,
der einen Transportmechanismus benötigt, um sicherzustellen, daß die Daten
so schnell verbraucht werden, wie sie empfangen werden, und um sicherzustellen,
daß der
Audioteil mit dem Videoteil synchronisiert ist. Herkömmliche
Allzweck-Eingangs-/Ausgangsarchitekturen verarbeiten Daten asynchron,
oder in willkürlichen
Intervallen, wie es die Bandbreite gestattet. Diese asynchrone Verarbeitung
von Multimediastromdaten kann zu verlorenen Daten und/oder fehlausgerichtetem
Ton und Bild führen.
-
Die
Erfindung ist wie in den beiliegenden Ansprüchen 1, 7 und 13 bekanntgemacht
gestaltet.
-
Kurze Beschreibung der Zeichnungen
-
Die
Erfindung wird aus der nachstehend gegebenen ausführlichen
Beschreibung und aus den beiliegenden Zeichnungen von Ausführungsformen
der Erfindung, die jedoch nicht als Beschränkung der Erfindung auf die
bestimmten beschriebenen Ausführungsformen
aufgefaßt
werden sollten, sondern nur zur Erklärung und zum Verständnis dienen,
näher verstanden
werden.
-
1 ist
ein Blockdiagramm einer Ausführungsform
eines Computersystems.
-
2 ist
eine graphische Erläuterung
eines beispielhaften verbesserten allgemeinen Eingangs/Ausgangsanschlusses.
-
3 ist
ein Diagramm, das das Format einer Ausführungsform des Beginns eines
Transaktionsschichtpaketkopfs zeigt.
-
4 ist
ein Diagramm eines Anforderungspaketkopfs, der ein 32-Bit-Adressenformat
unterstützt.
-
5 ist
ein Diagramm eines Anforderungspaketkopfs, der ein 64-Bit-Adressenformat
unterstützt.
-
6 ist
ein Diagramm eines Paketkopfs für
eine Nachricht.
-
7 ist
ein Diagramm, das ein Anforderungskopfformat für eine Konfigurationstransaktion
zeigt.
-
8 ist
ein Diagramm, das eine Ausführungsform
eines Formats für
einen Beendigungskopf zeigt.
-
9a und 9b bilden
in Kombination ein Ablaufdiagramm einer beispielhaften Ausführungsform eines
Verfahrens zur Behandlung empfangener Transaktionsschichtpakete.
-
10 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens zur Behandlung von Fehlerbedingungen, die mit empfangenen
Anforderungspaketen verbunden sind.
-
11 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens zur Behandlung eines Beendigungspakets, das nicht
von einem Systemagenten erwartet wird.
-
12 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens für
eine anfordernde Vorrichtung, die ein Beendigungspaket mit einem
anderen Beendigungsstatus als „erfolgreiche
Beendigung" behandelt.
-
13 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens für
eine beendigende Vorrichtung, die ein Beendigungspaket mit einem
anderen Beendigungsstatus als „erfolgreiche
Beendigung" behandelt.
-
Ausführliche Beschreibung
-
Nachstehend
sind Ausführungsformen
einer paketbasierten Punkt-zu-Punkt-Verbindungsarchitektur, eines Kommunikationsprotokolls,
und im Zusammenhang stehender Verfahren zur Bereitstellung einer
skalierbaren und erweiterbaren allgemeinen Eingangs /Ausgangskommunikationsplattform
zum Einsatz innerhalb eines elektronischen Geräts beschrieben. Die offenbarten
Ausführungsformen
umfassen eine verbesserte allgemeine Eingangs-/Ausgangsverbindungsarchitektur
und ein zugehöriges
Kommunikationsprotokoll. Eine beispielhafte Ausführungsform beinhaltet eines
oder mehrere aus einem Wurzelkomplex einschließlich einer Host-Brücke, einer
Vermittlung, oder Endpunkten, die jeweils zumindest einen Untersatz
von verbesserten allgemeinen Eingangs-/Ausgangsmerkmalen enthalten,
um eine verbesserte allgemeine Eingangs-/Ausgangskommunikation zwischen
diesen Elementen zu unterstützen.
-
Die
Kommunikation zwischen den verbesserten allgemeinen Eingangs-/Ausgangseinrichtungen
dieser Elemente wird in einer Ausführungsform unter Verwendung
serieller Kommunikationskanäle
durchgeführt, die
ein Kommunikationsprotokoll einsetzen, das eines oder mehrere erfinderische
Merkmale einschließlich,
jedoch ohne Beschränkung
darauf, virtueller Kommunikationskanäle, der anhangbasierten Fehlerübermittlung („Anhänge" werden an Transaktionsschichtpakete
angehängt,
um einen Fehlerzustand anzugeben), der Unterstützung für PCI-basierte Vorläufervorrichtung,
Antwortarten auf mehrere Anforderungen, Ablaufsteuerungs- und/oder
Datenintegritätsverwaltungseinrichtungen
unterstützt.
Das Kommunikationsprotokoll, das in dieser Ausführungsform unterstützt wird,
beinhaltet einen Kommunikationsprotokollstapel, der eine physikalische
Schicht, eine Datenverbindungsschicht, und eine Transaktionsschicht
beinhaltet.
-
In
einer alternativen Ausführungsform
enthält
ein Kommunkationsagent eine verbesserte allgemeine Eingangs-/Ausgangsmaschine,
die einen Untersatz der vorhergehenden Merkmale enthält. Ferner
können
ein oder mehrere Elemente der verschiedenen Ausführungsformen in Hardware, Software,
einem verbreiteten Signal, oder einer Kombination davon ausgeführt sein.
-
1 ist
ein Blockdiagramm eines elektronischen Geräts 100, das für diese
Ausführungsform
ein Computersystem ist. Das System 100 beinhaltet einen
Prozessor 102, eine Host-Brücke 103, die als Teil
eines Wurzelkomplexes 104 enthalten ist, eine Vermittlung 108 und
einen Endpunkt 110, die jeweils wie gezeigt gekoppelt sind.
Der Wurzelkomplex 104, die Vermittlung 108 und
der Endpunkt 110 beinhalten eine oder mehrere Instanzen
eines verbesserten allgemeinen Eingangs-/Ausgangsanschlusses 106.
Wie gezeigt ist jedes der Elemente 102, 104, 108 und 110 durch
eine Kommunikationsverbindung 112, die einen oder mehrere
verbesserte allgemeine Eingangs-/Ausgangskommunikationskanäle unterstützt, über den
verbesserten allgemeinen Eingangs-/Ausgangsanschluß 106 mit
zumindest einem anderen Element gekoppelt. Das System 100 soll
jedes beliebige aus einer breiten Vielfalt von traditionellen und
nicht traditionellen Rechensystemen, Server, Netzwerkvermittlungen,
Netzwerkroutern, drahtlosen Kommunikationsteilnehmereinheiten, drahtlosen Kommunikationsfernsprechinfrastrukturelementen,
Minicomputer, Set-Top-Boxen, oder jedes beliebigen elektrischen
Geräts,
das aus den Kommunikationsbetriebsmitteln, eingebracht durch die
Integration zumindest eines Untersatzes der verbesserten allgemeinen
Eingangs-/Ausgangsverbindungsarchitektur und/oder des Kommunikationsprotokolls,
die hierin beschrieben sind, einen Nutzen ziehen würde, darstellen.
-
In
dieser beispielhaften Ausführungsform
steuert der Prozessor 102 einen oder mehrere Gesichtspunkte
der funktionellen Fähigkeit
des elektronischen Geräts 100.
In dieser Hinsicht ist der Prozessor 102 für eine breite
Vielfalt von Steuerlogikvorrichtungen einschließlich, jedoch ohne Beschränkung darauf,
einem oder mehreren aus einem Mikroprozessor, einer programmierbaren
Logikvorrichtung (PLD), einer programmierbaren Logikanordnung (PLA),
einer anwendungsspezifischen integrierten Schaltung (ASIC), einer
Mikrosteuerung, und dergleichen repräsentativ.
-
Der
Wurzelkomplex 104 stellt eine Kommunikationsschnittstelle
zwischen dem Prozessor 102 und der Vermittlung 108 und
dem Endpunkt 110 bereit. Wie hierin verwendet bezieht sich
der Ausdruck „Wurzelkomplex" auf eine logische
Einheit einer verbesserten allgemeinen Eingangs/Ausgangshierarchie,
die einer Hoststeuerung, einem Speichersteuerungsknoten, einem E/A-Steuerungsknoten,
oder jeder beliebigen Kombination der obigen, oder irgendeiner Kombination
von Chipsatz/ZVE-Elementen (d.h., in einer Rechensystemumgebung)
am nächsten
ist. Obwohl er in 1 als einzelne Einheit dargestellt
ist, kann der Wurzelkomplex 104 mit mehreren physischen
Komponenten ausgeführt
werden. Der Wurzelkomplex 104 ist mit einer oder mehreren
verbesserten allgemeinen Eingangs-/Ausgangsanschlüssen 106 bestückt, um
die Kommunikation mit anderen Peripheriegeräten, z.B. der Vermittlung 108,
dem Endpunkt 110, und, obwohl nicht speziell dargestellt, den
Vorläuferbrücken 114,
oder 116 zu erleichtern. In einer Ausführungsform stellt jeder verbesserte
allgemeine Eingangs/Ausgangsschnittstellenanschluß eine andere
Hierarchiedomäne
dar. In dieser Hinsicht bezeichnet die Ausführungsform von 1 einen
Wurzelkomplex 104 mit drei Hierarchiedomänen.
-
2 ist
eine graphische Darstellung eines beispielhaften allgemeinen Eingangs/Ausgangsanschlusses 106.
In dieser Ausführungsform
führt der
verbesserte allgemeine Eingangs-/Ausgangsanschluß 106 einen Kommunikationsstapel
aus, der eine Transaktionsschicht 202, eine Datenverbindungsschicht 204 und
eine physikalische Schicht 206, die wie gezeigt einen logischen
Unterblock 208 und einen physikalischen Unterblock 210 beinhaltet,
umfasst. Elemente der Transaktionsschicht werden nachstehend ausführlicher
besprochen werden.
-
Die
Transaktionsschicht 202 stellt eine Schnittstelle zwischen
der verbesserten allgemeinen Eingangs-/Ausgangsarchitektur und einem
Vorrichtungskern bereit. Eine Hauptverantwortlichkeit der Transaktionsschicht 202 ist
der Aufbau und der Abbau von Paketen für eine oder mehrere logische
Vorrichtungen in einem Agenten.
-
Eines
der Hauptziele der verbesserten allgemeinen Eingangs-/Ausgangsarchitektur
ist, die Leistungsfähigkeit
der Kommunikation zwischen Vorrichtungen zu maximieren. In einer
Ausführungsform
führt die
Transaktionsschicht ein geleitetes vollständig getrenntes Transaktionsprotokoll
wie auch Mechanismen für
das Unterscheiden der Klassierungs- und Verarbeitungsanforderungen
von Transaktionsschichtpaketen aus. Die Transaktionsschicht umfaßt ferner
den Transaktionsschichtpaketaufbau und die –verarbeitung.
-
Eine
Ausführungsform
der verbesserten allgemeinen Eingangs-/Ausgangsarchitektur unterstützt die folgenden
grundlegenden Transaktionstypen und Adressenräume: Speicher, E/A, Konfiguration
und Nachricht. Es werden zwei Adressierungstypen unterstützt: 32
Bit und 64 Bit.
-
Transaktionen
werden unter Verwendung von Anforderungs- und Beendigungspaketen
getragen, die einfach als Anforderungen und Beendigungen bezeichnet
werden können.
Beendigungen werden nur verwendet, wo sie benötigt werden: z.B. um Lesedaten
zurückzusenden
oder um die Beendigung von E/A- und Konfigurationsschreibtransaktionen
zu bestätigen.
Beendigungen sind durch den Wert im Anfordererkennungsfeld des Paketkopfs
(nachstehend besprochen) mit ihren entsprechenden Anforderungen
verbunden.
-
Alle
Transaktionsschichtpakete in dieser Ausführungsform beginnen mit einem
definierten Kopf. Einige Transaktionsschichtpakete beinhalten Daten,
die dem Kopf wie durch das im Transaktionsschichtpaketkopf bestimmte
Formatfeld bestimmt folgen. Das Transaktionsschichtpaket ist durch
einen vorbestimmten Höchstnutzlastgrößenwert
in der Größe beschränkt. Die
Transaktionsschichtpaketdaten in dieser Ausführungsform sind vier Byte in
natürlicher
Ausrichtung und in Schrittgrößen von
Vier-Byte-Doppelworten.
-
3 ist
ein Diagramm, das das Format einer Ausführungsform des Beginns eines
Transaktionsschichtpaketkopfs zeigt. Jeder Transaktionsschichtpaketkopf
beinhaltet ein Drei-Bit-Formatfeld
(Fmt[2:0]). Der Transaktionsschichtpaketkopf beinhaltet auch ein
Vier-Bit-Typenfeld
(Typ[3:0]) Sowohl das Fmt- als auch das Typenfeld muß decodiert
werden, um das Transaktionsschichtpaketformat zu bestimmen. Die
nachstehende Tabelle 1 zeigt beispielhafte Codierungen für das Fmt-Feld.
000 | 2-Doppelwort-Kopf, keine
Daten |
001 | 3-Doppelwort-Kopf, keine
Daten |
010 | 4-Doppelwort-Kopf, keine
Daten |
101 | 3-Doppelwort-Kopf, mit
Daten |
110 | 4-Doppelwort-Kopf, mit
Daten |
Tabelle
1 – Fmt-Feld-Codierungen
-
Der
Transaktionsschichtkopf für
diese Ausführungsform
beinhaltet auch ein erweitertes Typen/erweitertes Längenfeld
(Et/El) von zwei Bit. Dieses Feld wird verwendet, um abhängig vom
Wert im Typenfeld entweder das Typenfeld oder das Längenfeld
zu erweitern. Das Längenfeld
für diese
Ausführungsform
ist gewöhnlich
ein Acht-Bit-Feld, kann aber erweitert werden, um ein Zehn-Bit-Feld
zu werden, wenn der Wert im Typenfeld angibt, daß das Et/El-Feld verwendet
werden soll, um das Langenfeld zu erweitern. Das Typenfeld kann,
abhängig
vom Wert im Typen[3:0]feld, durch Anhängen des Et/El-Felds erweitert
werden, um ein Sechs-Bit-Feld zu werden. Siehe die nachstehende
Tabelle für
beispielhafte Fmt-, Typen- und Et/El-Feld-Codierungen (alternative Ausführungsformen
können
andere Codierungsschemata verwenden). Das Et/El-Feld wird, außer wo angegeben,
als Erweiterung des Typenfelds verwendet.
Pakettyp | Fmt[2:0] | Typ[3:0] | Et/El[1:0] | Beschreibung |
MRd | 001
010 | 1001 | E19
E18 | Speicherleseanforderung,
Et/El-Feld für Länge [9:8]
verwendet |
MRdLk | 001
010 | 1011 | 00 | Speicherleseanforderung – gesperrt |
MWr | 101
110 | 0001 | E19
E18 | Speicherschreibanforderung – keine
Gegentransaktion, Et/El-Feld
für Länge [9:8]
verwendet |
IORd | 001 | 1010 | 00 | E/A-Leseanforderung |
IOWr | 101 | 1010 | 00 | E/A-Schreibanforderung |
CfgRd0 | 001 | 1010 | 01 | Konfiguration
Lesetyp 0 |
DfgWr0 | 101 | 1010 | 01 | Konfiguration
Schreibtyp 0 |
CfgRd1 | 001 | 1010 | 11 | Konfiguration
Lesetyp 1 |
CfgWr1 | 101 | 1010 | 11 | Konfiguration
Schreibtyp 1 |
Msg | 010 | 011s2 | s1S0 | Nachrichtenanforderung – das Unterfeld s[2:0]
bestimmt eine Gruppe von Nachrichten. Das Nachrichtenfeld muß decodiert wer-den,
um den spezifischen Zyklus einschließlich des Umstands, ob eine
Beendi-gung erforderlich ist, oder nicht, zu bestimmen. |
MsgD | 110 | 011s2 | s1s0 | Nachrichtenanforderung
mit Daten – das Unterfeld
s[2:0] bestimmt eine Gruppe von Nachrichten. Das Nachrichtenfeld
muß decodiert
werden, um den spezifischen Zyklus einschließ-lich des Umstands, ob eine
Beendigung erforderlich ist, oder nicht, zu bestimmen. |
MsgComm | 110 | 110c2 | c1c0 | Nachricht
für fortgeschrittenes
Vermitteln.
Das Unterfeld c[2:0] bestimmt den Nachrichtentyp:
000 – Einzelruf,
Datenpaket
001 – Gruppenruf,
Datenpaket
010 – Signalisierungspaket
ohne Unterbrechung
011 – reserviert
100 – Nullsignalisierungspaket,
Unterbrechung an Host in der Bestimmungshierarchie 101 –
Nullsignalisierungspaket,
Unterbrechung an Bestimmungsvorrichtung
110 – Signalisierungspaket,
mit Unterbrechung an Host in der Bestimmungshierarchie
111 – Signalisierungspaket,
mit Unterbrechung an Bestimmungsvorrichtung |
Cpl | 001 | 0100 | 00 | Beendigung
ohne Daten – für E/A- und
Konfigurationsschreibbeendigungen, und Speicherlesebeendigungen
mit einem anderen Beendigungsstatus als „erfolgreiche Beendigung" verwendet. |
CplD | 101 | 0100 | E19
E18 | Beendigung
mit Daten – für Speicher-,
E/A- und Konfigurationslesebeendigungen verwendet, Et/El-Feld für Länge [9:8]
verwendet |
CplDLk | 101 | 0101 | 01 | Beendigung
für gesperrtes
Speicherlesen |
-
Anforderungspakete
beinhalten einen Anforderungskopf, auf den für einige Typen von Anforderungspaketen
irgendeine Anzahl von Doppelworten von Daten folgen wird. Wie hierin
verwendet gibt der Ausdruck „Doppelwort" eine 32-Bit-Länge von
Daten an. Für
diese beispielhafte Ausführungsform
wird das Längenfeld für Nachrichtenanforderungsköpfe außer für Nachrichten,
die sich ausdrücklich
auf eine Datenlänge
beziehen, nicht verwendet. Außerdem
wird das El/Et-Feld für
diese Ausführungsform
für Speicherleseanforderungen
und Speicherschreibanforderungen mit dem Längenfeld verkettet, um ein
Zehn-Bit-Längenfeld
zu bilden. Das Zehn-Bit-Längenfeld
gestattet Lese- und Schreibanforderungen, die bis zu 4 kB Daten
angeben. Andere Typen von Transaktionsschichtpaketen sind durch
die Größe des Längen[7:0]felds
beschränkt,
um bis zu 1 kB Daten anzugeben. Die Menge an Daten, die in jedem
beliebigen Transaktionsschichtpaket beinhaltet ist, ist in einer Ausführungsform
auf eine vorbestimmte Höchstnutzlastgröße beschränkt. Für Transaktionsschichtpakete,
die Daten beinhalten, sollten der Wert im Längenfeld und die tatsächliche
Menge an Daten gleich sein. Wenn der Empfänger bestimmt, daß der Längenfeldwert
und die tatsächliche
Menge an Daten nicht übereinstimmen, wird
das Paket als ein mißgebildetes
Transaktionsschichtpaket behandelt. Mißgebildete Transaktionsschichtpakete
sind nachstehend beschrieben.
-
4 ist
ein Diagramm eines Anforderungspaketkopfs, der ein 32-Bit-Adressenformat
unterstützt,
und 5 ist ein Diagramm eines Anforderungspaketkopfs,
der ein 64-Bit-Adressenformat
unterstützt.
Für eine Ausführungsform
können
Speicherleseanforderungen und Speicherschreibanforderungen entweder
das 32-Bit-Adressenformat oder das 64-Bit-Adressenformat verwenden. Für Adressen
unter 4 GB wird das 32-Bit-Format verwendet.
-
Die
Anforderungspaketköpfe
von 4 und 5 beinhalten auch ein Feld zur
Bytefreigabe des ersten Doppelworts (First Double Word Byte Enable
field, 1st DW BE), und ein Feld zur Bytefreigabe
des letzten Doppelworts (Last Double Word Byte Enable field, Last
DW BE). Das Feld zur Bytefreigabe des ersten Doppelworts enthält Bytefreigaben
für das
erste Doppelwort jeder beliebigen Speicherlese- oder –schreibanforderung.
Dieses Feld enthält
auch Bytefreigaben für
das einzige Doppelwort einer Ein-/Ausgangs- oder einer Konfigurationsanforderung.
Das Feld zur Bytefreigabe des letzten Doppelworts enthält Bytefreigaben
für das
letzte Doppelwort jeder beliebigen Speicherlese- oder –schreibanforderung.
Die Bytefreigabefelder werden nicht mit Nachrichten verwendet, da
diese Felder das Nachrichtencodefeld für einen Nachrichtenanforderungskopf überlappen
(siehe die nachstehend besprochene 7).
-
Für eine Ausführungsform
gibt ein Wert von „0" für jedes
Bit in den Bytefreigabefeldern an, daß das entsprechende Byte von
Daten nicht an einem Beendiger geschrieben oder, falls nicht vorabrufbar,
gelesen ist. Wie hierin verwendet soll der Ausdruck „Beendiger" eine logische Vorrichtung
angeben, die von einem Anforderungspaketkopf angesprochen wird.
Ein Wert von „1" gibt an, daß das entsprechende
Byte von Daten am Beendiger geschrieben, oder falls nicht vorabrufbar,
gelesen ist. Für
das Feld zur Bytefreigabe des ersten Doppelworts entspricht das
Bit 0 dem Byte 0 des ersten Doppelworts von Daten. Das Bit 1 entspricht
dem Byte 1 des ersten Doppelworts von Daten. Das Bit 2 entspricht
dem Byte 2 des ersten Doppelworts von Daten. Das Bit 3 entspricht
dem Byte 3 des ersten Doppelworts von Daten. Für das Feld zur Bytefreigabe
des letzten Doppelworts entspricht das Bit 0 dem Byte 0 des letzten
Doppelworts von Daten. Das Bit 1 entspricht dem Byte 1 des letzten
Doppelworts von Daten. Das Bit 2 entspricht dem Byte 2 des letzten
Doppelworts von Daten. Das Bit 3 entspricht dem Byte 3 des letzten
Doppelworts von Daten.
-
Die
beispielhaften Paketköpfe
von 4, 5, 6, und 8 beinhalten
ein Anfordererkennungsfeld, ein Markierungsfeld, ein Attributfeld,
und ein Virtualkanalkennungsfeld. Das Anfordererkennungsfeld und
das Markierungsfeld bilden zusammen ein Transaktionskennungsfeld.
Das Anfordererkennungsfeld ist in ein Busnummernfeld, ein Vorrichtungsnummernfeld,
und ein Funktionsnummernfeld geteilt.
-
Das
Markierungsfeld ist ein 5-Bit-Feld, das durch jede anfordernde Vorrichtung
erzeugt wird. Der Markierungswert ist für alle ausstehenden Anforderungen,
die eine Beendigung erfordern, für
diese anfordernde Vorrichtung einzigartig. Das Transaktionskennungsfeld
ist in allen Anforderungen und Beendigungen beinhaltet. Das Anfordererkennungsfeld
für diese
beispielhaften Ausführungsformen
ist ein 16-Bit-Wert, der für
jede Funktion einzigartig ist (eine Funktion ist ein unabhängiger Abschnitt
einer Mehrfachfunktionsvorrichtung, der im Konfigurationsraum durch
eine einzigartige Funktionsnummer identifiziert ist). Funktionen
erfassen die Busnummer, die mit allen Konfigurationsschreibtätigkeiten,
die durch die Funktion beendet wurden, geliefert wird, und liefern
diese Nummer im Busnummernabschnitt des Anfordererkennungsfelds.
Jede logische Vorrichtung in einer Komponente ist dazu gestaltet,
für Konfigurationsanforderungen,
die diese Komponente ansprechen, auf eine einzigartige Vorrichtungsnummer
zu antworten. Für
diese beispielhaften Ausführungsformen
kann eine Komponente viele (vielleicht bis zu mehrere Dutzend) logische
Vorrichtungen enthalten. Jede Funktion, die mit einer logischen
Vorrichtung in einer Komponente verbunden ist, ist dazu gestaltet,
für Konfigurationsanforderungen,
die diese Komponente und diese logische Vorrichtung ansprechen,
auf eine einzigartige Funktionsnummer zu antworten. Jede logische
Vorrichtung kann bis zu acht logische Funktionen enthalten.
-
Das
Attributfeld bestimmt Eigenschaften der Transaktion. Attribute,
die im Attributfeld bestimmt werden können, beinhalten ein Prioritätsattribut,
Transaktionsklassierungsattribute, und Pufferkohärenzverwaltungsattribute.
-
Das
Virtualkanalkennungsfeld identifiziert den virtuellen Kanal. Für diese
beispielhaften Ausführungsformen
ist das Virtualkanalkennungsfeld ein 4-Bit-Feld, das eine Identifikation
von bis zu 16 virtuellen Kanälen auf
einer Pro-Transaktions-Basis gestattet. Für diese beispielhaften Ausführungsformen
wird der virtuelle Kanal 0 für
Allzweck-Verkehr und ein anderer virtueller Kanal als 0 für isochronen
Verkehr verwendet.
-
6 ist
ein Diagramm eines Paketkopfs für
eine Nachricht. Wie in Tabelle 2 ersichtlich können Nachrichten Daten beinhalten
oder keine Daten beinhalten, und können sie eine Beendigung erfordern
oder keine Beendigung erfordern. Nachrichten werden durch alle Vorrichtungen
in einem System decodiert, die die verbesserte allgemeinen Eingangs/Ausgangsverbindungsarchitektur
unterstützen.
-
Für Nachrichtenanforderungen
wird das Nachrichtenfeld decodiert, um den bestimmten Zyklus zu
bestimmen, und um zu bestimmen, ob die Nachricht Daten beinhaltet,
und ob die Nachricht eine Beendigung erfordert. Für diese
Ausführungsform
ist das Nachrichtenfeld ein 8-Bit-Feld, das sich dort befindet,
wo sich für andere
Transaktionstypen normalerweise die Bytefreigabefelder befinden.
Nicht unterstützte
Nachrichten werden durch die empfangende Vorrichtung als keine Beendigung
erfordernd behandelt (Transaktionen, die keine Beendigung erfordern,
sind nachstehend besprochen).
-
Für diese
beispielhafte Ausführungsform
sind Nachrichten in Gruppen geteilt. Es gibt acht Gruppen, die mit
der Anforderung Daten beinhalten, und acht Gruppen, die dies nicht
tun. Es sind andere Ausführungsformen
möglich,
die unterschiedliche Anzahlen von Gruppen verwenden. Für diese
Ausführungsform
weisen die acht Gruppen, die mit den Anforderungen Daten beinhalten,
wie in Tabelle 2 gezeigt im Fmt-Feld einen Wert von b110 auf. Die
acht Gruppen, die keine Daten beinhalten, weisen im Fmt-Feld einen
Wert von b010 auf. Das Unterfeld s[2:0] enthält ein Bit vom Typenfeld und
die beiden Bits vom Et/El-Feld. Das Unterfeld s[2:0] gibt eine der
acht Gruppen an.
-
Beispiele
für verschiedene
Nachrichten, die ausgeführt
werden können,
beinhalten, jedoch ohne Beschränkung
darauf, die folgenden: Nachrichten zum Entsperren von Vorrichtungen;
Nachrichten zum Rückstellen
von Vorrichtungen; Nachrichten, die einen korrigierbaren Fehlerzustand
angeben; Nachrichten, die einen nicht korrigierbaren Fehlerzustand
angeben; Nachrichten, die einen verhängnisvollen Fehlerzustand angeben; Nachrichten,
die verwendet werden, um schlechte Anforderungspakete zu melden;
Nachrichten im Zusammenhang mit der Leistungsverwaltung; Nachrichten
im Zusammenhang mit der Klassierung der Steuerung/Verwaltung; und
Nachrichten zur Emulation von Vorläufer(z.B. PCI)-Unterbrechungssignalen
(oder anderen Vorläufersignalen).
Diese verschiedenen Nachrichtentypen können in eine der vorher besprochenen
Gruppen unterteilt werden. Zum Beispiel können alle Leistungsverwaltungsnachrichten
in einer Gruppe enthalten sein, und können die Unterbrechungssignalisierungsnachrichten
in einer anderen Gruppe enthalten sein.
-
7 ist
ein Diagramm, das ein Anforderungskopfformat für eine Konfigurationstransaktion
zeigt. Der Konfigurationsraum ist für diese beispielhaften Ausführungsformen
einer der vier unterstützten
Adressenräume.
-
8 ist
ein Diagramm, das eine Ausführungsform
eines Formats für
einen Beendigungskopf zeigt. Alle Leseanforderungen und einige Schreibanforderungen
erfordern eine Beendigung. Beendigungen beinhalten einen Beendigungskopf,
dem für
einige Typen der Beendigung irgendeine Anzahl von Doppelworten von Daten
folgt. Das in
8 gezeigte Beendigungsstatus[2:0]feld
gibt den Status für
eine Beendigung an. Tabelle 3 zeigt ein beispielhaftes Codierungsschema.
Beendigungsstatus [2:0] | Status |
000 | erfolgreiche Beendigung |
001 | nicht unterstütze Anforderung – Beendigung
erwartet |
011 | reserviert |
100 | Beendigerabbruch |
Tabelle
3 – Beendigungsstatusfeldcodierungsschema
-
Das
Beendigerkennungs[15:0]feld enthält
den gleichen Typ von Information wie das oben beschriebene Anfordererkennungsfeld.
Der Wert, der im Beendigerkennungsfeld bereitgestellt wird, entspricht
dem Bus/der Vorrichtung/der Funktion des Agenten, der die Anforderung
beendet. Beendigungsköpfe
enthalten die gleichen Werte für
die Anfordererkennung, die Markierung und die Kanalkennung, wie
sie im Kopf des Anforderungspakets geliefert wurden. Beendigungsköpfe enthalten
auch im Attributfeld den gleichen Wert, wie er ursprünglich mit
dem Kopf der Anforderung geliefert wurde. Beendigungspakete werden
durch Vermittlungen und Wurzelkomplexe zu dem Anschluß geroutet,
der die entsprechende Anforderungstransaktion begonnen hat.
-
Für Speicherleseanforderungstransaktionen
können
individuelle Beendigungspakete weniger als das gesamte Ausmaß an Daten,
das durch die entsprechende Leseanforderung angefordert wurde, bereitstellen, solange
alle Beendigungspakete, die mit der entsprechenden Leseanforderung
verbunden sind, in Kombination das bestimmte Ausmaß an Daten
zurücksenden.
Für diese
beispielhaften Ausführungsformen
werden E/A- und Konfigurationsleseanforderungen mit genau einem
Beendigungspaket beendet.
-
Eine
Beendigung, die Daten beinhaltet, gibt die Menge der Daten im Paketkopf
an. Wenn das Beendigungspaket tatsächlich eine Menge an Daten
enthält,
die sich von der angegebenen Menge unterscheidet, ergibt sich ein
mißgebildetes
Transaktionsschichtpaket.
-
9a und 9b bilden
in Kombination ein Ablaufdiagramm einer beispielhaften Ausführungsform eines
Verfahrens zur Behandlung empfangener Transaktionsschichtpakete.
Die nachstehend beschriebenen Tätigkeiten
müssen
nicht notwendigerweise in einer fortlaufenden Weise stattfinden.
Einige Ausführungsformen
können
einige Tätigkeiten
gleichzeitig durchführen.
Bei Block 905 wird eine Prüfung vorgenommen, um zu bestimmen,
ob die Werte, die im Fmt- und im Längenfeld des empfangenen Pakets
enthalten sind, der tatsächlichen
Größe des Pakets
entsprechen. Eine Fehlentsprechung gibt ein mißgebildetes Paket an, und es ergibt
sich wie bei Block 925 gezeigt ein Fehlerfall. Die Fehlerfallbehandlung
wird nachstehend besprochen werden. Wenn die tatsächliche
Größe des empfangenen
Pakets keine Fehlentsprechung mit dem Fmt- und dem Längenfeld
angibt, setzt die Verarbeitung bei Block 910 fort.
-
Wenn
das empfangene Paket eine Speicheranforderung ist, die eine 64-Bit-Adressierung
verwendet, werden dann bei Block 910 die Adressenbits [63:32]
geprüft,
um herauszufinden, ob jegliche der Adressenbits [63:32] nicht Null
sind. Wenn keines der Adressenbits [63:32] nicht Null ist, ist das
Ergebnis ein mißgebildetes Paket
und geht die Verarbeitung zum Fehlerfallblock 925 über. Wenn
zumindest eines der Adressenbits [63:32] nicht Null ist, setzt die
Verarbeitung bei Block 915 fort.
-
Bei
Block 915 wird eine Prüfung
vorgenommen, um zu bestimmen, ob jegliche Felder im Paketkopf reservierte
Werte enthalten. Wenn reservierte Werte gefunden werden, ist das
Ergebnis ein mißgebildetes
Paket und geht die Verarbeitung zu Block 925 über. Wenn
keine reservierten Werte gefunden werden, setzt die Verarbeitung
bei Block 930 fort.
-
Bei
Block 930 wird eine Bestimmung vorgenommen, ob das Paket
ein Anforderungspaket oder ein Beendigungspaket ist. Wenn das Paket
ein Beendigungspaket ist, geht die Verarbeitung zum Beendigungsbehandlungsblock 935 über. Die
Beendigungsbehandlung wird nachstehend näher besprochen werden. Wenn das
empfangene Paket kein Beendigungspaket ist, setzt die Verarbeitung
bei Block 940 fort. Es ist zu beachten, daß alle Pakete,
die zu Block 940 laufen, Anforderungspakete sind.
-
Bei
Block 940 wird eine Prüfung
vorgenommen, um zu bestimmen, ob das Anforderungspaket ein Anforderungstyp
ist, der durch die beendigende Vorrichtung unterstützt wird.
Wenn der Anforderungstyp nicht unterstützt wird, ist das Ergebnis
eine nicht unterstützte
Anforderung und geht die Verarbeitung zum Fehlerfallblock 925 über. Für diese
beispielhafte Ausführungsform
wird das Paket still fallen gelassen und kommt es zu keinem Fehlerfall,
wenn der Typ der nicht unterstützten
Anforderung eine Sendenachricht oder eine Nachricht ist, die eine
für Sendenachrichten
reservierte Codierung verwendet. Wenn der Anforderungstyp durch
die beendigende Vorrichtung unterstützt wird, setzt die Verarbeitung
bei Block 945 fort.
-
Wenn
die beendigende Vorrichtung wie bei Block 945 gezeigt aufgrund
eines internen Fehlers nicht fähig
ist, auf das Anforderungspaket zu antworten, ist das Ergebnis ein „Beendigerabbruch" und geht die Verarbeitung
zum Fehlerfallblock 925 über. Andernfalls wird die Anforderung
bei Block 950 bedient. Bei der Bedienung der Anforderung
kann es nötig
sein, die durch die Blöcke 940 und 945 angegebene
Verarbeitung zu wiederholen.
-
Sobald
die Anforderung erfolgreich bedient ist, setzt die Verarbeitung
bei Block 955 fort. Wenn die verarbeitete Anforderung wie
durch Block 955 angegeben eine Beendigung erfordert, wird
bei Block 960 ein Beendigungspaket zurückgesendet.
-
10 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens zur Behandlung von Fehlerbedingungen, die mit empfangenen
Anforderungspaketen verbunden sind. Wenn die empfangene Anforderung
wie bei Block 1010 ersichtlich eine Beendigung erwartet,
wird bei Block 1020 eine Beendigung mit dem passenden Beendigungsstatus
gesendet. Die Beendigung wird zur anfordernden Vorrichtung zurückgeroutet. Wenn
die empfangene Anforderung keine Beendigung erwartet, wird bei Block 1030 eine
Fehlermeldung zur anfordernden Vorrichtung gesendet. Der Fehler
wird dem System bei Block 1040 gemeldet. Die bei Block 1030 angegebene
Fehlernachrichtensendetätigkeit
kann als eine programmierbare Option ausgeführt sein.
-
Einige
Systeme können
zusätzlich
zur vorher besprochenen verbesserten allgemeinen Eingangs/Ausgangsverbindungsarchitektur
einen oder mehrere PCI-Busse beinhalten. Für Speicher-, E/A- und Konfigurationsanforderungen,
die durch die verbesserte allgemeine Eingangs/Ausgangsverbindungsarchitektur
laufen und für
eine Vorrichtung an einem PCI-Bus bestimmt sind, stellt der Beendigungsstatus
für diese
Ausführungsformen
den tatsächlichen
PCI-Abschluß für diesen
Zyklus dar. Zum Beispiel muß ein
PCI-Zyklus, der einer Gegentransaktion bedarf, tatsächlich am
PCI-Bus bedient werden, bevor ein Beendigungsstatus bestimmt werden
kann. Für
alle anderen Fälle
sind die Beendigungsstatuswerte wie nachstehend besprochen definiert.
-
Wenn
eine Anforderung durch die beendigende Vorrichtung erfolgreich beendet
wurde, ist der sich ergebende Beendigungsstatuswert „erfolgreiche
Beendigung" (im
Beendigungsstatusfeld für
diese Ausführungsform
wie in Tabelle 3 angegeben als „000" codiert). Zum Beispiel wird eine Leseanforderung
von einer Hostbrücke
durch eine Vermittlung zu einem Computerendpunkt geroutet. Der Beendiger
antwortet mit einem Beendigungspaket, das einen erfolgreichen Beendigungsstatus
angibt, und antwortet auch mit den Daten für die Leseanforderung. Die
Vermittlung routet dieses Beendigungspaket zur Hostbrücke zurück.
-
Wenn
eine Anforderung durch die beendigende Vorrichtung empfangen und
decodiert wird, aber die beendigende Vorrichtung die angeforderte
Transaktion nicht unterstützt
und die Anforderung eine Beendigung erfordert, ist der sich ergebende
Beendigungsstatus „nicht
unterstützte
Anforderung" (im
Beendigungsstatusfeld für
diese Ausführungsform
wie in Tabelle 3 angegeben als „001" codiert). Ein Beispiel für eine nicht
unterstützte
Anforderung wäre
eine Speicherleseanforderung an eine Adresse außer Reichweite. In diesem Fall
ist der Beendiger nicht fähig,
die Anforderung zu unterstützen,
und erwartet der Anforderer eine Beendigung.
-
Falls
eine Anforderung durch die beendigende Vorrichtung empfangen und
decodiert wird und die beendigende Vorrichtung nicht fähig ist,
die angeforderte Transaktion zu unterstützen, und die anfordernde Vorrichtung
keine Beendigung erwartet, ist der sich ergebende Beendigungsstatus
eine nicht unterstützte
Anforderung. Da die anfordernde Vorrichtung keine Beendigung erwartet,
wird der Beendigungsstatus über
eine wie oben in Verbindung mit 10 beschriebene
Nachricht zur anfordernden Vorrichtung kommuniziert. Ein Beispiel
einer nicht unterstützten
Anforderung, bei der die anfordernde Vorrichtung keine Beendigung
erwartet, ist eine Speicherschreibtransaktion an eine Adresse außer Reichweite.
Die Kommunikation des Beendigungsstatus über eine Nachricht kann als
ein optionales Merkmal ausgeführt
sein.
-
Wenn
eine beendigende Vorrichtung eine Anforderung empfangt und decodiert,
aber die beendigende Vorrichtung aufgrund eines internen Fehlers
nicht fähig
ist, zu antworten, ist der sich ergebende Beendigungsstatus ein „Beendigerabbruch" (für diese
Ausführungsform
im Beendigungsstatusfeld als „100" codiert).
-
Wenn
eine beendigende Vorrichtung ein Paket empfangt, das Paketbildungsregeln
verletzt, ist das Ergebnis ein „mißgebildetes Paket". Die beendigende
Vorrichtung antwortet durch das Senden einer Fehlernachricht „mißgebildetes
Paket", die zur
anfordernden Vorrichtung geroutet wird, auf diese Situation. Eine
Vermittlung, die ein mißgebildetes
Paket empfangt, muß das
Paket für
diese Ausführungsform
zum stromaufwärts
befindlichen Anschluß routen,
wenn kein anderer Anschluß eindeutig
als der beabsichtigte Bestimmungsanschluß identifiziert werden kann.
-
Wenn
eine Lesebeendigung einen anderen Beendigungsstatus als „erfolgreiche
Beendigung" aufweist,
werden mit dem Beendigungspaket keine Daten zurückgesendet. Die Lesebeendigung
mit dem nicht erfolgreichen Beendigungsstatus ist die letzte Beendigung,
die für
die Anforderung gesendet wird. Zum Beispiel kann ein Beendiger eine
Leseanforderung zur Bedienung in vier Teile teilen und führt das
zweite Beendigungspaket zu einem Beendigungsstatus „Beendigerabbruch". Die letzten beiden
Beendigungspakete werden nicht gesendet. Die anfordernde Vorrichtung
betrachtet die Anforderung als abgeschlossen, sobald sie das Beendigungspaket
mit dem nicht erfolgreichen Beendigungsstatus empfängt, und
sollte keine zusätzlichen
Beendigungspakete erwarten, die dieser Leseanforderung entsprechen.
-
11 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens zur Behandlung eines Beendigungspakets, das nicht
von einem Systemagenten erwartet wird. Eine „unerwartete Beendigung" tritt auf, wenn
ein Agent eine Beendigung empfängt,
die keiner ausstehenden Anforderung, die durch diesen Agenten ausgegeben
wurde, entspricht. Für
das beispielhafte Verfahren von 11 gibt
Block 1110 an, daß die
normale Tätigkeit
bei Block 1120 weitergeht, wenn keine unerwartete Beendigung
vorhanden ist. Wenn jedoch eine unerwartete Beendigung empfangen
wird, wird das unerwartete Beendigungspaket bei Block 1130 verworfen. Nachdem
das Paket verworfen wurde, kann der obige Fehlerzustand bei Block 1140 dem
System gemeldet werden. Für
diese beispielhafte Ausführungsform
kann die Meldung des Fehlers eine Option sein, die durch Software
programmierbar ist.
-
12 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens für
eine anfordernde Vorrichtung, die ein Beendigungspaket mit einem
anderen Beendigungsstatus als „erfolgreiche
Beendigung" behandelt.
Block 1210 gibt an, daß die
normale Tätigkeit
bei Block 1220 weitergeht, wenn der Beendigungsstatus eine „erfolgreiche
Beendigung" ist.
Wenn der Beendigungsstatus anders als „erfolgreiche Beendigung" ist, wird bei Block 1230 der
Wert des Anfordererkennungsfelds aufgezeichnet. Für diese
Ausführungsform
wird der Anfordererkennungswert in einem Register gespeichert. Dann
wird für
diese Ausführungsform
bei Block 1240 ein Bit „empfangene nicht erfolgreiche
Beendigung" in einem
Register in der anfordernden Vorrichtung gesetzt. Der obige Fehlerzustand
kann bei Block 1250 gemeldet werden. Die Meldung des Fehlerzustands
kann als eine programmierbare Option ausgeführt sein. Ein Softwareagent
kann den Anfordererkennungswert und das Bit „empfangene nicht erfolgreiche
Beendigung" verwenden,
um die Quelle des Fehlerzustands ausfindig zu machen.
-
13 ist
ein Ablaufdiagramm einer Ausführungsform
eines Verfahrens für
eine beendigende Vorrichtung, die ein Beendigungspaket mit einem
anderen Beendigungsstatus als „erfolgreiche
Beendigung" behandelt.
Block 1310 gibt an, daß die
normale Tätigkeit
bei Block 1320 weitergeht, wenn der Beendigungsstatus eines
gesendeten Beendigungspakets eine „erfolgreiche Beendigung" ist. Wenn der Beendigungsstatus
anders als „erfolgreiche
Beendigung" ist,
wird bei Block 1330 der Wert des Anforderkennungs- und
des Markierungsfelds aufgezeichnet. Für diese Ausführungsform
werden die Werte der Anfordererkennung und der Markierung in einem
oder mehreren Registern gespeichert. Dann wird für diese Ausführungsform
bei Block 1340 ein Bit „gesendete nicht erfolgreiche
Beendigung" in einem
Register in der beendigenden Vorrichtung gesetzt. Der obige Fehlerzustand
kann bei Block 1350 gemeldet werden. Die Meldung des Fehlerzustands
kann als eine programmierbare Option ausgeführt sein. Ein Softwareagent
kann die Werte der Anfordererkennung und der Markierung und das
Bit „gesendete
nicht erfolgreiche Beendigung" verwenden,
um die Quelle des Fehlerzustands ausfindig zu machen.
-
In
der vorhergehenden Beschreibung wurde die Erfindung unter Bezugnahme
auf bestimmte beispielhafte Ausführungsformen
davon beschrieben. Es wird jedoch einleuchtend sein, daß daran
verschiedenste Abwandlungen und Veränderungen vorgenommen werden
können,
ohne vom breiteren Umfang der Erfindung, wie er in den beiliegenden
Ansprüchen
bekannt gemacht ist, abzuweichen. Die Beschreibung und die Zeichnungen
sollen demgemäß anstatt
in einem beschränkenden
Sinn vielmehr in einem erläuternden
Sinn betrachtet werden.
-
Eine
Bezugnahme in dieser Beschreibung auf „eine Ausführungsform", „einige
Ausführungsformen", oder „andere
Ausführungsformen" bedeutet, daß ein bestimmtes
Merkmal, ein bestimmter Aufbau, oder eine bestimmte Eigenschaft,
das, der bzw. die in Verbindung mit den Ausführungsformen beschrieben ist,
in zumindest einigen Ausführungsformen,
aber nicht notwendigerweise allen Ausführungsformen, der Erfindung
beinhaltet ist. Das verschiedentliche Auftreten von „einer
Ausführungsform" oder „einigen
Ausführungsformen" bezieht sich nicht
notwendigerweise immer auf die gleichen Ausführungsformen.