-
GRUNDLAGEN DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft Personal-Computer-Systeme und insbesondere
die Zuordnung von Systemressourcen in einem Computersystem mit einer
hierarchischen Busstruktur.
-
Einige
Computersysteme beinhalten mehrere Busse zur Bereitstellung eines
Datenaustauschs zwischen verschiedenen mit dem System verbundenen
Einheiten und der Zentraleinheit (Central Processing Unit – CPU).
Beispiele für
die in einem typischen Computersystem vorhandenen verschiedenen Typen
von Bussen sind ein Systembus, mit dem eine Host-CPU verbunden ist,
und ein oder mehrere periphere Busse, mit denen eine oder mehrere
periphere Einheiten verbunden sind. Es ist jedoch ein systemweiter
Datenaustausch über
verschiedene Busse erforderlich, falls eine mit einem Bus verbundene
Einheit Daten in eine oder aus einer Einheit auf einem anderen Bus
lesen oder schreiben muss. Zum Aufbau eines gegebenen Computersystems
stehen verschiedene Typen von Bussen zur Verfügung. Ein solcher weit verbreiteter
Bus ist der PCI-Bus (Peripheral Component Interconnect bus), der
eine beträchtliche Datenübertragung
in einem verhältnismäßig kurzen Zeitraum
ausführen
kann. Zum Teil erzielt der PCI-Bus dieses hohe Leistungsniveau,
da er direkt mit anderen Hochgeschwindigkeitsbussen verbunden werden
kann, beispielsweise mit Systembussen, mit denen eine CPU verbunden werden
kann, und folglich die Voraussetzungen für eine schnelle Datenübertragung
zwischen mit dem PCI-Bus verbundenen Einheiten und mit dem Systembus
verbundenen Einheiten schaffen kann. In der Tat erfordert der Betrieb
von verschiedenen hochintegrierten Einheiten, beispielsweise bestimmte
Grafikpaketsteuereinheiten (graphics package controllers), eine
direkte Verbindung mit einem Systembus durch einen Hochleistungsbus
wie den PCI-Bus. Außerdem
benötigt
die PCI-Busarchitektur
keine "Glue Logic" zum Betreiben von
mit ihr verbundenen peripheren Einheiten. Eine Glue Logic für andere
Busse besteht normalerweise aus verschiedenen Hardwarekomponenten
wie Decodierern, Puffern oder Zwischenspeichern, die zwischen den
peripheren Einheiten und dem Bus installiert sind. Der Haupt-PCI-Bus
wird mit einem synchronen Taktsignal von 33 MHz betrieben, und die über den
PCI-Bus übertragenen
Datenfolgen sind 32 Bit breit. Eine 32-Bit-Datenfolge auf dem PCI-Bus wird als
Doppelwort (double word – DWORD)
bezeichnet, das in 4 Bytes unterteilt ist, die jeweils 8 Bits von
Daten umfassen. Die vom PCI-Bus übertragenen Adressen
und Daten werden in ein Signal gemultiplext. Durch das Multiplexen
entfällt
die Notwendigkeit von gesonderten Adressen- und Datenleitungen,
wodurch wiederum im Gegensatz zu anderen Busarchitekturen der Umfang
von in einer PCI-Busumgebung benötigten
Signalen verringert wird. Die Anzahl von in einer PCI-Busarchitektur
benötigten
Signalen liegt zwischen 45 und 47, während nichtgemultiplexte Busse
normalerweise doppelt so viele benötigen. Da die Anzahl von Signalen
verringert wird, wird auch die Anzahl von Verbindungsanschlüssen, die
zum Unterstützen
einer mit dem PCI-Bus verbundenen Einheit benötigt werden, entsprechend verringert.
Die PCI-Architektur ist daher insbesondere für hochintegrierte Desktop-Computersysteme
geeignet. Eine ausführlichere
Beschreibung der Struktur und Funktionsweise der PCI-Busarchitektur
wird in "Peripheral Component
Interconnect (PCI) Revision 2.0 Specification", veröffentlicht am 30. April 1993; "Preliminary PCI System
Design Guide", verbesserte
Auflage 0.6, veröffentlicht
am 1. November 1992 von PCI Special Interest Group (im Folgenden
als PCI-Beschreibung bezeichnet)
bereitgestellt.
-
Um
einen systemweiten Datenaustausch zwischen Einheiten auf verschiedenen
Bussen zu ermöglichen,
werden Bus-Bus-Brücken
bereitgestellt, um das Datenübertragungsprotokoll
eines Busses an dasjenige eines anderen anzupassen. Im Allgemeinen
werden Bus-Bus-Brücken
in einem Computersystem mit mehreren Bussen verwendet, um zwei Busse
miteinander zu verbinden. Bei der Verbindung des Host-CPU-Busses
mit einem PCI-Bus wird folglich eine CPU-PCI-Busbrücke verwendet.
Werden zwei PCI-Busse miteinander verbunden, wird jedoch eine PCI-PCI-Brücke verwendet.
-
Um
Benutzeranforderungen an eine höhere Zuverlässigkeit
und Leistungsfähigkeit
(z.B. wie in Servern) zu erfüllen,
werden Personal-Computer-Systeme mit mehr und schnelleren Prozessoren, schnelleren
Netzen, schnellerer Datenspeicherung und Datenredundanz aufgebaut.
Zur Unterstützung leistungsfähigerer
Computersysteme werden hierarchische Busarchitekturen mit mehreren
Ebenen realisiert, wobei mehrere PCI-Busse in einer hierarchischen
Reihenfolge über
PCI-PCI-Busbrücken miteinander
verbunden werden. Jede PCI-PCI-Busbrücke in der
Hierarchie verbindet einen PCI-Bus der höheren Ebene bzw. einen übergeordneten
PCI-Bus mit einem PCI-Bus
der unteren Ebene bzw. einem untergeordneten PCI-Bus. In dieser
Anordnung können ein
oder mehrere Einheiten auf jeder Hierarchieebene mit einem übergeordneten
oder untergeordneten Bus verbunden werden. Ein Beispiel für ein hierarchisches
PCI-Bussystem wird
in
EP 0631241 beschrieben.
PCI-konforme Einheiten können
direkt mit einem PCI-Bus verbunden werden, wohingegen andere Einheiten
wie ISA-Einheiten durch eine ISA-PCI-Busbrückenlogik
(ISA-PCI bus bridging logic) mit einem PCI-Bus verbunden werden
können. Jede
mit der Bushierarchie verbundene Einheit benötigt eine vordefinierte Menge
an Systemressourcen, beispielsweise einen E/A-Adressraum, einen
Speicheradressraum und einen vorabrufbaren Speicheradressraum. Die
Parameter für
die Systemressourcen, beispielsweise die Größe, die Ausrichtung und die
Startadresse, legen fest, wie ein bestimmter Systemressourcen-Adressraum
den Einheiten zugeordnet wird. Einige Einheiten, beispielsweise
jene mit Industry Standard Architecture (ISA) konformen Einheiten,
benötigen
möglicherweise
einen Adressbereich unter einem 1-Megabyte-Adressbereich, einen Nur-Lese-Speicher-
(ROM-) Adressbereich und eine IRQ-Zuordnung. Andererseits können andere
Einheiten, beispielsweise PCI-konforme Einheiten, nicht auf ein
bestimmtes Segment beschränkt
werden und erhalten folglich eine Ressourcenzuordnung irgendwo im
4-Gigabyte-Adressraum
der PCI-Architektur.
-
Daher
wird ein Verfahren benötigt,
um die Systemressourcen allen mit den Bussen verbundenen Einheiten
zuzuordnen, indem der jeweilige Systembedarf jeder Einheit berücksichtigt
wird. Wie bereits bekannt ist, muss die Speicher- oder E/A-Adressraumzuordnung
für alle
Einheiten hinter den PCI-PCI-Brücken für jeden
Ressourcentyp in einem einzigen Fenster enthalten sein. Jede PCI-PCI-Brücke enthält einen
Satz von Registern zur Angabe des Ressourcenfensters, auf das die
Brücke ansprechen
und an das sie ihren zugehörigen
Bus weiterleiten muss. Falls PCI-PCI-Brücken untergeordnet hinter einer
anderen übergeordneten PCI-PCI-Brücke verbunden
sind, muss die Ressourcenzuordnung für die Einheiten hinter den
untergeordneten Brücken
(die am weitesten entfernt von der CPU mit den PCI-Bussen verbunden
sind) in nichtüberlappenden
Gruppen enthalten sein, und diese Gruppen müssen zu einer einzelnen Gruppe
hinter der übergeordneten
PCI-PCI-Brücke
verknüpft
werden. Außerdem
muss die Zuordnung der Systemressourcen auf eine Weise erfolgen,
dass kein Adressraum verschwendet wird.
-
Systemressourcen
können
auf der Grundlage einer feststehenden Größe ohne Rücksicht auf den Bedarf von
Einheiten zugeordnet werden. Jedoch führt die Verwendung eines solchen
Lösungsansatzes
wahrscheinlich zur Verschwendung von Adressraum. Andererseits kann
die Ausführung
aufwändiger
Gruppierungsverfahren zu langen Einrichtungszeiten für das Computersystem
führen,
da diese eine beträchtliche
Verarbeitungszeit benötigen. Daher
besteht ein Bedarf an einem einfachen, schnellen und leistungsfähigen Verfahren
zum Zuordnen von Ressourcenbedarf in einer hierarchischen PCI-Busarchitektur mit
mehreren Ebenen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Eine
Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren
bereitzustellen, das die obigen Nachteile verringert.
-
Gemäß der vorliegenden
Erfindung stellen wir ein Verfahren zur Zuordnung von Systemressourcen-Adressraum
für mit
einer hierarchischen Busstruktur verbundene Einheiten bereit, wobei
die hierarchische Busstruktur eine Vielzahl von Bussen der höheren und
unteren Ebene umfasst, die über
entsprechende Busbrücken
miteinander verbunden sind, wobei das Verfahren die folgenden sich
wiederholenden Schritte umfasst: Feststellen des Adressenressourcenbedarfs
der Einheiten und Brücken der
unteren Ebene, die jeder Brücke
der höheren Ebene
untergeordnet sind, indem Daten bezüglich des Adressenressourcenbedarfs
von jeder Einheit und jeder Brücke
der unteren Ebene gegebenenfalls empfangen werden; Gruppieren der
Einheiten und der Brücken
der unteren Ebene mit angegebenem Adressraumbedarf durch Ordnen
des Adresswertes ihres Systemressourcen-Adressraumbedarfs in aufsteigender
Reihenfolge; Gruppieren der Einheiten und der Brücken der unteren Ebene mit
nichtangegebenem Adressraumbedarf durch Ordnen der Ausrichtung ihres
Systemressourcen-Adressraumbedarfs
in absteigender Reihenfolge; Gruppieren der Einheiten und der Brücken der
unteren Ebene durch Ausführen
eines ersten Näherungsalgorithmus
(first fit algorithm); und Erhalten eines Gesamtressourcenbedarfs
auf der Grundlage des Ergebnisses des ersten Näherungsalgorithmus.
-
KURZE BESCHREIBUNG DER ZEICHNUNG(EN)
-
1 ist
ein Blockschaltbild eines Computersystems, das eine hierarchische
Busstruktur enthält,
in dem die vorliegende Erfindung vorteilhafterweise verwendet werden
kann.
-
2 ist
eine Darstellung, die den Systemressourcenbedarf von Einheiten zeigt,
die mit der hierarchischen Busstruktur von 1 verbunden
sind.
-
3 ist
eine Darstellung der Gruppierung der Einheiten von 2 gemäß der vorliegenden
Erfindung.
-
4 ist
eine Darstellung des ersten Näherungsvorgangs
zur Zuordnung von Systemressourcen gemäß der vorliegenden Erfindung.
-
5 ist
eine Darstellung des verknüpften Systemressourcenbedarfs
für Einheiten
von 2.
-
BESCHREIBUNG DER VERANSCHAULICHENDEN AUSFÜHRUNGSFORM(EN)
-
Mit
Bezugnahme auf 1 wird ein beispielhaftes und
vereinfachtes Blockschaltbild eines Computersystems 10 mit
einer hierarchischen PCI-Busarchitektur mit mehreren Ebenen gezeigt.
In diesem beispielhaften System bilden eine oder mehrere Zentraleinheiten
(CPUs) 12 und ein Speicher 14, die beide mit einem
Host- (oder Haupt-) Bus 16 verbunden sind, über eine
bereits bekannte Host-PCI-Busbrücke 18 eine
Schnittstelle zu einem PCI-Bus 19. Die CPUs können eine
von vielen bereits bekannten Verarbeitungseinheiten umfassen, beispielsweise
von Intel(R) Corporation hergestellte Pentium(R) Prozessoren. Der
Hostbus 16 überträgt prozessorspezifische
Signale. Die Host-CPU-PCI-Busbrücke 18 setzt die
prozessorspezifischen Signale des Busses 16 in standardisierte
Signale für
den PCI-Bus 19 um.
-
In
dieser Anordnung ist der PCI-Bus 19 der PCI-Bus der höchsten Ebene
in der Hierarchieabfolge des Computersystems 10. Der PCI-Bus 19 ist über die
PCI-PCI-Busbrücken 22 bzw. 24 mit
den beiden untergeordneten Bussen 23 bzw. 25 verbunden. Die
PCI-Einheiten 30 bzw. 38 sind ebenfalls mit den PCI-Bussen 23 bzw. 25 verbunden.
Mit dem PCI-Bus 19 sind außerdem die PCI-Einheiten 20 und 26 verbunden,
die Einheiten wie eine Videografiksteuereinheit zur Verarbeitung
von vom Computersystem 10 angezeigten Videosignalen umfassen
können.
-
Zur
beispielhaften Ausführungsform
des Computersystems 10 können außerdem Nicht-PCI-Einheiten
gehören,
die mit der hierarchischen Busstruktur verbunden sind. Wie gezeigt
wird, umfasst eine der mit dem Bus 19 verbundenen Einheiten
die ISA-Einheit 44,
die über
einen ISA-Bus 35 und eine PCI-ISA-Brücke 34 mit den PCI-Bussen 19 verbunden
ist. Wie allgemein bekannt ist, werden die PCI-ISA-Brücke 34 und
ihre zugeordnete ISA-Einheit 44 vom
PCI-Bus 19 jedoch als eine PCI-Einheit gesehen und daher
als solche behandelt.
-
Die
PCI-PCI-Brücken 28 bzw. 36 verbinden die
PCI-Busse 23 und 25 mit den untergeordneten PCI-Bussen 29 und 39 der
unteren Ebene. In dieser Anordnung umfassen die PCI-Busse 29 und 39 die untergeordnetesten
Busse des Systems 10. Wie gezeigt wird, ist ein Satz von
7 PCI- und Nicht-PCI-Einheiten 32(A) bis 32(D) bzw. 40(A) bis 40(D) mit
den untergeordnetesten PCI-Bussen 29 und 39 verbunden.
-
Wie
oben erläutert
wurde, ist die Bushierarchie mit der PCI-Architektur kompatibel, und in der bevorzugten
Ausführungsform
enthält
der Prozessorkomplex 12 einen (oder mehrere) Mikroprozessoren, die
32-Bit-Adressen aussenden. Das Computersystem 10 kann daher
einen 4-Gigabyte-Adressraum adressieren. Der PCI-Standard definiert
bestimmte Ressourcen, die jeder mit einem PCI-Bus verbundenen Einheit
zugeordnet werden könnten.
Diese Ressourcen umfassen E/A-Adressressourcen,
Speicheradressressourcen und vorabrufbare Speicheradressressourcen.
Der Ressourcenbedarf jeder PCI-Einheit umfasst
gemäß der Definition
der PCI-Beschreibung zwei Parameter: 1) den Umfang des Bedarfs und
2) einen Ausrichtungsbedarf. Die Größe gibt den Umfang der von
der Einheit benötigten
Speicheressourcen an, und die Ausrichtung gibt die Zuordnungsgrenze
für die
Einheit an. Der Größen- und
Ausrichtungsbedarf für
jede Einheit können
ermittelt werden, wie in der PCI-Beschreibung dargelegt wird, indem
in die Basisadressenregister (Base Address Registers – BARs)
der Einheit geschrieben bzw. aus diesen gelesen wird. Gemäß dem PCI-Standard
verwenden PCI-PCI-Brücken
für jede
dieser Ressourcen einen Satz von Registern, die ein Basisregister
und ein Grenzregister umfassen. Daher enthält jede PCI-PCI-Brücke für ihre Ressourcen
einen Satz von E/A-Basis- und Grenzregistern, Speicherbasis- und Grenzregistern
und vorabrufbaren Speicherbasis- und Grenzregistern. Diese Register
speichern Werte, die die Basisadresse und den Bereich angeben, in dem
jede Brücke
auf einen bestimmten Ressourcenbedarf anspricht. Folglich stellt
jede Brücke
ein Fenster in der hierarchischen Busstruktur des Systems 10 dar,
in dem auf Adressen reagiert wird und jenseits dessen Adressen ignoriert
werden.
-
Wie
oben erläutert
wird, berücksichtigt
das Computersystem 10 die PCI-Einheiten sowie traditionelle
Einheiten (legacy devices) in seiner hierarchischen Busarchitektur.
Die traditionellen Einheiten sind jene Einheiten, die konform mit
bereits vorhandenen Busprotokollen wie dem ISA-Protokoll sind. Die
PCI-Beschreibung definiert einen Satz von Kategoriecoderegistern
(Class Code Registers – CCRs) zum
Kennzeichnen von traditionellen Einheiten.
-
Die
traditionellen Einheiten sowie die PCI-Einheiten können einen
angegebenen oder nichtangegebenen Systemressourcenbedarf haben. Falls
eine Einheit den Systemressourcenbedarf angegeben hat, kann eine
solche Angabe auf systemspezifische Weise ermittelt werden. Der
angegebene Systemressourcenbedarf kann durch eine festverdrahtete
einheitenspezifische Einstellung oder durch ein Schnittstellendienstprogramm
vorgegeben werden, das einem Systembenutzer die Angabe des Ressourcenzuordnungsbedarfs
von einer oder mehreren Einheiten ermöglicht. Beispielsweise kann
eine bestimmte traditionelle Einheit festverdrahtet sein, so dass
sie auf eine spezifische Adresse in einem 64-KByte-E/A-Adressraum
anspricht, wie er durch den ISA-Standard definiert ist. Alternativ
können
Einheiten unter Verwendung eines Einheitenschnittstellen-Dienstprogramms so
programmiert werden, dass sie auf einen benutzerprogrammierten Adressraum ansprechen.
-
Zu
Beginn des Betriebs führt
das Computersystem einen Initialisierungsmikrocode aus, der die PCI-Busse
und -Brücken
zur CPU kennzeichnet. Die PCI-Busse und -Brücken werden durch Nummerierung
derselben gemäß einem
vordefinierten Algorithmus gekennzeichnet. Sobald diese gekennzeichnet sind,
kann die CPU unter Verwendung des im PCI-Standard definierten Protokolls
Anforderungen nach Daten von den mit jedem der PCI-Busse verbundenen
Brücken
und Einheiten einleiten. Während der
Ausführung
des Mikrocode kennzeichnet die CPU außerdem jede Einheiten mit angegebenem Systemressourcenbedarf.
Der angegebene Systemressourcenbedarf ist Teil der Konfigurationsdaten
jeder Einheit. Solche Konfigurationsdaten werden im Allgemeinen
in einem nichtflüchtigen
RAM-Bereich (non-volatile RAM – NVRAM)
gespeichert, und die CPU kann auf diese zugreifen, um den spezifischen Ressourcenbedarf
der Einheiten zu ermitteln.
-
Gemäß der vorliegenden
Erfindung ordnet das Computersystem 10 Ressourcen im Allgemeinen durch
Ermitteln des Adressressourcenbedarfs der Einheiten und der einem
Bus der höheren
Ebene untergeordneten PCI-PCI-Brücken
der unteren Ebene zu. Wie zuvor erläutert wurde, wird der Adressressourcenbedarf
durch Empfangen von Adressressourcenbedarfsdaten von jeder Einheit
und jeder Brücke der
unteren Ebene ermittelt. Anschließend werden die Werte des Adressraumbedarfs
der Einheiten und Brücken
der unteren Ebene mit angegebener Adressenzuordnung in aufsteigender
Reihenfolge geordnet. Als Nächstes
wird die Ausrichtung des Adressressourcenbedarfs der Einheiten und
Brücken
der unteren Ebene mit nichtangegebener Adressenzuordnung in absteigender
Reihenfolge geordnet. Schließlich
wird die geordnete Liste durch einen ersten Näherungsalgorithmus gruppiert,
um die Ressourcenzuordnung für
jeden Bus in der Bushierarchie zu ermitteln.
-
Wie
oben erläutert
wurde, führt
die CPU insbesondere geeignete Befehle aus, um den Ressourcenzuordnungsbedarf,
d.h. die Größe und die
Ausrichtung, für
jede Einheit zu ermitteln. Während
dieses Schrittes wird auch der angegebene Ressourcenbedarf der Einheiten
auf der Grundlage der jeweiligen Konfigurationsdaten der Einheit
ermittelt. Sobald der Ressourcenzuordnungsbedarf für jede Einheit
ermittelt wurde, wird der Bedarf für jeden PCI-Bus in der Hierarchie
ermittelt. Der PCI-Busbedarf wird ermittelt, indem als Erstes die
untergeordnetesten Busse in der Hierarchie gekennzeichnet werden.
Im Allgemeinen sind mit den untergeordnetesten Bussen wie den Bussen 29 und 39 nur Einheiten
verbunden, sie verbinden keine PCI-PCI-Brücken zur Erweiterung der Bushierarchie.
Es sei darauf hingewiesen, dass die ISA-Brücke 34 und die mit
dieser verbundene Einheit 44 dem PCI-Bus 19 wie
eine PCI-Einheit dargestellt werden, wie zuvor erläutert wurde.
Sobald die untergeordnetesten Busse gekennzeichnet wurden, wird
der Ressourcenzuordnungsbedarf der mit einem bestimmten untergeordneten
Bus verbundenen Einheiten in einen Gesamtbusbedarf gruppiert. Diese
Einheiten werden gruppiert, indem der Wert des angegebenen Ressourcenadressbedarfs
der Einheiten auf einem bestimmten Bus in aufsteigender Reihenfolge
geordnet wird, anschließend
wird die Ausrichtung des Ressourcenadressbedarfs mit nichtangegebenem
Bedarf in absteigender Reihenfolge geordnet. Anschließend wird ein
erstes Näherungsverfahren
verwendet, um den Gesamtressourcenbedarf für diesen Bus zu erhalten.
-
Mit
Bezugnahme auf 2 wird eine Darstellung gezeigt,
die den Systemressourcenbedarf von 7 beispielhaften Einheiten A
bis G zeigt. Diese Einheiten können
eine der Einheitensätze 32(A) bis 32(G) oder 40(A) bis 40(G) umfassen.
In diesem Beispiel wird vorausgesetzt, dass der Ressourcenbedarf E/A-Adressraum umfasst,
die Grundgedanken der vorliegenden Erfindung können jedoch problemlos auf
einen anderen Systemressourcenbedarf, beispielsweise den Speicheradressressourcenbedarf und
den vorabrufbaren Speicheradressressourcenbedarf, angewandt werden.
Wie gezeigt wird, hat die Einheit (A) einen nichtangegebenen E/A-Adressbedarf von
40 Byte. Die Einheit (B) hat einen E/A-Adressbedarf von 50 Byte, der bei einer E/A-Adresse
100 HEX beginnen muss. Die Einheiten (C) und (D) haben jeweils einen
nichtangegebenen Systemressourcenbedarf von 20 Byte bzw. 200 Byte. Wohingegen
die Einheit (E) einen angegebenen Systemressourcenbedarf von 20
Byte hat, der bei der Adresse 20 HEX beginnen muss. Schließlich haben die
Einheiten (F) und (G) jeweils einen nichtangegebenen E/A-Adressbedarf
von 20 Byte bzw. 100 Byte.
-
Mit
Bezugnahme auf 3 wird eine Darstellung der
Gruppierung der Einheiten (A bis G) gemäß der Erfindung gezeigt. Die
Einheiten (E und B) mit angegebenem Ressourcenbedarf werden durch den
angegebenen Adresswert in einer aufsteigenden Reihenfolge gruppiert,
wohingegen die Einheiten (D), (G), (A), (C) und (F) mit einem nichtangegebenem Ressourcenbedarf
durch Ausrichtung in einer absteigenden Reihenfolge gruppiert werden.
Mit Bezugnahme auf 4 wird die Darstellung des ersten
Näherungsvorgangs
zur Zuordnung von Systemressourcen auf der Grundlage der gruppierten
Darstellung von 3 gezeigt. Gemäß dieser
Darstellung wird der Einheit (E) ein Adressraum von 20 Byte beginnend
bei der angegebenen Adresse 20 Hex zugeordnet, und der Einheit B
werden 100 Byte Adressraum beginnend bei der angegebenen Adresse
100 HEX zugeordnet. Anschließend
wird der Bedarf für Einheiten
mit nichtangegebener Ressourcenzuordnung erfüllt durch Abarbeiten der geordneten
Liste, wobei die erste Position gesucht wird, zu der der Einheitenbedarf
aus der Liste passt. Dementsprechend wird der Einheit (A) ein Adressraum
von 40 Byte beginnend bei der nichtangegebenen Adresse 40 Hex zugeordnet. Ähnlich wird
der Einheit (C) unter Verwendung des ersten Nährungsalgorithmus ein Adressraum
von 20 Byte beginnend bei der zugeordneten Adresse 80 Hex zugeordnet.
Der erste Näherungsvorgang
der Erfindung berücksichtigt
außerdem
den Ausrichtungsbedarf der Einheiten bei der Zuordnung von Systemressourcen
zu diesen. Beispielsweise wird der Einheit (F), die einen Ausrichtungsbedarf
von 20 Byte hat, die Startadresse 160 Hex und nicht 150 HEX zugeordnet,
die Endadresse für
den Bedarf der Einheit (B). Schließlich wird den Einheiten (D)
und (G) mit einen Ausrichtungsbedarf von 200 Byte bzw. 100 Byte
ein Adressraum von 200 Byte bzw. 100 Byte beginnend bei der Adresse
200 HEX bzw. 40 HEX zugeordnet. Wie in 5 gezeigt wird,
ist der verknüpfte
Ressourcenbedarf für
die Einheiten A bis G folglich eine Startadresse von 20 HEX mit
einem Ressourcenbedarf in der Größe von 490 Byte
und einem Ausrichtungsbedarf von 20 HEX. Sobald der Ressourcenbedarf
der untergeordnetesten Busse der Hierarchie ermittelt worden ist,
führt das Verfahren
der vorliegenden Erfindung eine Ressourcenbedarfsermittlung für die PCI-Busse
auf der nächsthöheren Stufe
der Hierarchie aus. Dieses Mal wird der Ressourcenbedarf der Brücken und
der Einheiten, die mit jedem übergeordneten
Bus verbunden sind, gemäß dem oben
beschriebenen Verfahren der Erfindung gruppiert. Es sei darauf hingewiesen,
dass Brücken,
die mit Einheiten mit angegebenem Ressourcenbedarf verbunden sind,
als Brücken
mit angegebenem Bedarf auf der nächsthöheren Hierarchieebene
behandelt werden. Ähnlich
werden Brücken,
die mit Brücken
mit angegebenem Ressourcenbedarf verbunden sind, so behandelt, als
hätten sie
selbst einen angegebenen Bedarf. Sobald dies auf einer Ebene ausgeführt wurde,
wird der Gesamtbedarf der Brücken
ermittelt, die mit der nächsthöheren Hierarchieebene
verbunden sind. Dieser sich wiederholende Prozess geht weiter, bis
der Gesamtressourcenbedarf für
alle mit dieser hierarchischen Busstruktur verbundenen Einheiten
und Brücken
ermittelt worden ist. Zu diesem Zeitpunkt wird eine Position ermittelt,
die den Gesamtressourcenbedarf (Größe, Ausrichtung und angegebene
Ressourcenadresse) erfüllt.
Die Basisadresse und die Grenzwerte für jede PCI-PCI-Brücke werden
sodann auf der Grundlage der gefundenen Startposition und der Verschiebung
(offset) in den zu jeder PCI-PCI-Brücke gehörenden Gesamtressourcenbedarf
geschrieben. Ähnlich
wird die Adressenzuordnung für
jede Einheit auf der Grundlage der für den Gesamtressourcebedarf
gefundenen Startposition und der zum Bedarf dieser Einheit gehörenden Verschiebung
in die Basisadressenregister geschrieben. Ähnlich werden bei der Zuordnung
einer Speicheradressenressource oder einer vorabrufbaren Speicheradressenressource
Werte, die unter Verwendung des oben beschriebenen Verfahrens zur
Zuordnung von Ressourcen gemäß der vorliegenden
Erfindung abgeleitet wurden, in die einer bestimmten Ressource entsprechenden
Basis- und Grenzadressenregister geschrieben.