-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf Computersysteme und insbesondere
auf die Durchführung
von Adressübersetzungen
in derartigen Systemen.
-
Hintergrund der Erfindung
-
Viele
moderne Computerkommunikationssysteme beruhen darauf, dass sie einen
geschichteten Protokollstapel (einen Protokollstapel aus mehreren
Schichten) haben. 1 veranschaulicht ein Beispiel
eines solchen Stapels 505. Der betreffende Stapel, der
auf der linken Seite der 1 dargestellt ist, weist fünf Schichten, 501A, 501B, 501C, 501D und 501E auf,
auch wenn es sich versteht, dass andere Systeme eine andere Anzahl
von Schichten haben können.
In dieser Konfiguration sind die untersten Schichten diejenigen,
die der Netzwerkhardware am nächsten
liegen und sie sind typischerweise verantwortlich für Aspekte,
wie zum Beispiel Fehlerkorrekturcodierung (ECC), während die
höheren
Schichten eher mit den Anwendungsprogrammen beschäftigt sind,
welche den Kommunikationsstapel verwenden.
-
Als
ein Beispiel eines typischen Stapels 505 kann die Schicht
E 501E eine Ethernet-Frame-Schicht repräsentieren. Diese ist verantwortlich für das Erzeugen
von Frames, die für
das Senden über
eine Ethernet-Verbindung geeignet sind, welche normalerweise Teil
eines Nahbereichsnetzes (Local Area Network – LAN) ist. Andere Hardwarearchitekturen
können
statt eines Ethernets verwendet werden, einschließlich des
asynchronen Übertragungsbetriebs
(ATM), token ring und so weiter.
-
Oberhalb
der Ethernet-Schicht befindet sich üblicherweise eine Internetprotokoll
(IP)-Schicht als Ebene D 501D, auf welche dann im Allgemeinen
eine Protokollschicht für
das Übertragungsprotokoll (TCP-Schicht)
als Schicht C (501C) folgt. Die TCP/IP-Schichten werden
normalerweise gemeinsam bereitgestellt und da sie das grundlegende
Protokoll bilden, welches Kommunikationen auf dem Internet definiert,
sind sie in den vergangenen Jahren außerordentlich populär geworden
und weit verbreitet worden. Es gibt jedoch alternative Möglichkeiten für diese
Schichten C und D, wie zum Beispiel SPX/IPX.
-
Als
ein Beispiel für
die nächste
Schicht in dem Stapel 505, nämlich die Schicht B 501B,
kann diese das Hypertext Übertragungsprotokoll
(Hypertext Transfer Protocol – HTTP)
sein. Dies ist das Standardprotokoll, welches durch Web-Browser
verwendet wird, um Informationen von Webservern in dem weltweiten
Netz (WorldWideWeb) anzufordern und es läuft oben auf der TCP/IP. Andere
Protokolle, die für
die Schicht B alternativ verwendet werden könnten, umfassen das Dateiübertragungsprotokoll (File
Transfer Protocol – FTP),
welches ebenfalls oben auf der TCP/IP läuft.
-
Die
oberste Schicht des Protokollstapels 505, nämlich die
Schicht A 501A, kann einen entfernten Methodenaufruf-Mechanismus
(RPC-Mechanismus) verwenden, der auf der erweiterten Auszeichnungssprache
(Extensible Mark up Language – XML) beruht.
Eine weitere Möglichkeit
bestünde
hier mit dem einfachen Objekt-Zugriffsprotokoll (Simple Objekt Access
Protocol – SOAP).
Diese oberste Schicht wird dann von Anwendungen, die auf dem System, welches
den Kommunikationsstapel 505 unterstützt, laufen, direkt aufgerufen.
-
Es
versteht sich, dass die Anzahl von Schichten von einem System zum
anderen variieren kann, auch davon abhängig, welche spezielle Anwendung
den Stapel 505 verwendet. Beispielsweise kann ein Webbrowser
mit der HTTP-Schicht (Schicht B 501B) direkt in Wechselwirkung
treten, ohne eine höhere
Protokollschicht, wie zum Beispiel XML/RPC, zu verwenden. In ähnlicher
Weise können
weiter unten in dem Stapel 505 mehr oder weniger Schichten vorhanden
sein, je nach der speziellen Netzwerkhardware, die verwendet wird,
und auch je nach der besonderen Softwareimplementierung, die für den Stapel 505 übernommen
wurde.
-
1A zeigt
die Übertragung
eines Paketes 510 durch den Protokollstapel 505 nach 1.
Ein Paket oder ein Strang von Daten 511 wird der obersten
Schicht in dem Stapel 505 zugeführt, nämlich der Schicht A 501A,
und zwar durch eine Anwendung, die das Datenpaket 511 über das
Netzwerk nach außen
senden möchte. Üblicherweise
wird, wenn das Paket 511 von einer Protokollschicht herunter
in die nächste
Protokollschicht weitergeleitet wird, irgendeine Kopfzeilen-Information
dem Paket vorangestellt, welches von der Schicht darüber empfangen
wurde. Zusätzlich
können
einige Schichten auch am Ende dem Paket einen Zusatz anhängen (in 1A nicht dargestellt).
-
Wenn
demnach das Datenpaket 510 anfänglich in die Schicht A 501A geleitet
wird, weist es nur den Datenstrang 511 auf. Wenn es jedoch
aus der Schicht A 501 als Datenpaket 510A in die
Schicht B 501B weitergeleitet wird, ist dem Datenstrang 511 durch
die Schicht A 501A ein Kopfzeilenabschnitt (dargestellt
als AH) vorangestellt worden. Wenn man dem Paket weiter nach unten
folgt, stellt die Schicht B 501B seine eigene Protokollkopfzeile
(BH) dem Paket 510A voran, um ein Paket 510B zu
erzeugen, welches in die Schicht C 501C hinunter geleitet
wird. Dieser Prozess wiederholt sich dann weiter nach unten durch
den Protokollstapel 505, wobei die Schicht C 501C den
Kopfabschnitt CH voranstellt, um das Paket 510C herzustellen,
die Schicht D 501D den Kopfabschnitt DH voranstellt, um
das Paket 510D zu erstellen und die Schicht E 501E den
Kopfabschnitt EH voranstellt, um das Paket 510E zu erstellen.
Dieses Paket 501E ist es, welches schließlich von
dem Boden des Stapels 505 aus auf das Netzwerk weitergeleitet
wird.
-
Das
endgültige
Paket 510E mit Ausgangsdaten in 1A weist
demnach fünf
getrennte Kopf- bzw.
Kopfzeilenbestandteile AH, BH, CH, DH und EH auf, und zwar jeweils
einen von jeder Schicht des Protokollstapels. Es versteht sich,
dass diese Kopfabschnitte zusammen nach Möglichkeit im Vergleich zu dem
Datenabschnitt 511 klein sein sollten. Wenn dies nicht
der Fall ist, ist die Bandbreiteneffizienz der Kommunikation relativ
schlecht. (Man beachte, dass, obwohl in 1A die
Kopfabschnitte für
die verschiedenen Schichten so dargestellt sind, als hätten sie dieselbe
Größe, diese
Kopfabschnittgröße typischerweise
von einer Schicht zur anderen variiert).
-
Der
durch jede Schicht vorangestellte Kopfabschnitt weist Information
für diese
Schicht auf, damit sie ihre passenden Verarbeitungsaufgaben durchführen kann.
Beispielsweise umfasst der Kopfabschnitt (EH) von der Schicht E 501E typischerweise
einen ECC-Abschnitt, während
der Kopfabschnitt in der IP-Schicht 501D im Allgemeinen
eine Internetadresse und andere zugehörige Informationen enthält. Man
beachte auch, dass eine Schicht nur ihren eigenen Kopfabschnitt
interpretieren kann, alle anderen Kopfabschnitte werden einfach
als Teil der Daten betrachtet. Zum Beispiel sieht die Schicht C
das Paket 510C als eines an, welches zwei Abschnitte aufweist,
nämlich
den Kopfabschnitt C bzw. CH, und einen verbleibenden Abschnitt,
welchen die Schicht C einfach als Daten behandelt (d.h. die zu verarbeitende
Nachricht). Für
die Schicht C ist nicht erkennbar (durchsichtig), dass dieser verbleibende
Datenabschnitt in der Tat zwei weitere Kopfabschnitte (BH + AH)
in Kombination mit dem ursprünglichen
Datenstrang 511 umfasst.
-
Man
betrachte nun den Empfang eines eingehenden Datenpaketes von einem
Kommunikationsnetzwerk, wo die entgegengesetzte Kette der Verarbeitung
abläuft.
Anstatt also Protokollabschnitte dem Paket hinzuzufügen, muss
stattdessen jede Schicht den Protokoll-Kopfabschnitt, der zu der
betreffenden Schicht gehört,
abstreifen, bevor der übrige
Teil des Paketes weiter nach oben zu der nächsten Schicht in dem Protokollstapel
geleitet wird. (Jede Schicht muss auch jegliche am Ende des Datenpakets
anhängende
Teile, die zu der betreffenden Schicht gehören, abstreifen).
-
Wenn
beispielsweise ein Paket 510E über ein Netzwerk in der Schicht
E 510E empfangen wird, entfernt diese Schicht das Protokoll-Kopfabschnittelement
EH für
diese Schicht und führt
irgendeine relevante Verarbeitung (wie zum Beispiel das Überprüfen, dass
die ECC korrekt ist, um sicherzustellen, dass das Paket während der Übermittlung
nicht beschädigt
bzw. verändert
worden ist) durch. Die Schicht E 510E leitet dann das verbleibende
Paket 510D (d.h. das empfangene Paket 501E, von
welchem nun jedoch der Kopfabschnitt EH abgestreift wurde) weiter
nach oben zu der Schicht D 501D. Der Prozess wiederholt
sich dann Schicht für
Schicht, bis eine Schicht A 501A ihren Protokoll-Kopfabschnitt (AH)
von dem Paket 510A abstreift. Dies hinterlässt nur
noch den ursprünglichen
Datenabschnitt 511 in dem Paket 510, der zu der
empfangenden Anwendung weitergeleitet wird.
-
Die
Verwendung eines Kommunikationsstapels 505 in mehreren
Schichten, wie er in den 1 und 1A dargestellt
ist, hat viele Vorteile. Insbesondere isoliert bzw. befreit sie
individuelle Schichten davon, die Einzelheiten der betreffenden
Hardware und der Protokollstapel darüber oder darunter kennen zu
müssen,
und aus diesem Grunde ist dies in Computerkommunikationssystemen
in breitem Umfang übernommen
worden. Nichtsdestotrotz verbleiben bei einer praktischen Implementierung
des Protokollstapels 505 auch gewisse Schwierigkeiten.
Insbesondere kann in beträchtlichem
Umfang ein Kopieren von Daten erfolgen, wenn ein Paket 510 den Kommunikationsstapel
nach oben durchläuft.
Dies entspricht einer teuren und zeitraubenden Speicheroperation.
-
Ein
Grund für
ein derartiges Kopieren liegt darin, dass Daten, die von einer Schicht
in die nächste
Schicht weitergeleitet werden, häufig
nicht an einer geeigneten Bytegrenze liegen. Wenn beispielsweise das
Paket 510E anfänglich
in einem System empfangen wird, ist es typischerweise ordnungsgemäß an einer
Wortgrenze ausgerichtet (beispielsweise einer Vier-Byte-Grenze oder dergleichen).
Der Protokoll-Kopfabschnitt EH selbst umfasst aber möglicherweise
keine ganze Zahl von Worten und kann in der Tat möglicherweise
in seiner Größe auch
von einem Paket zum anderen variieren. Wenn also dieser Protokoll-Kopfabschnitt
EH auf Grund der Verarbeitung innerhalb der Schicht E 501E abgestreift
wurde, ist das verbleibende Paket (welches dem Paket 510D entspricht)
möglicherweise
nicht mehr an einer Wortgrenze ausgerichtet. Konsequenterweise kann
die Schicht E (501E) nicht einfach einen einfachen Aufruf für das Paket 510D,
wie er innerhalb des Paketes 510E erzeugt wurde, auf der
Schicht durchführen,
da ein solcher Aufruf nur mit an einem Wort ausgerichteten Daten
verwendet werden kann. Stattdessen muss die Schicht E typischerweise
eine neue Kopie des Paketes 510D erzeugen, indem sie das,
was sie als den Datenabschnitt des Paketes 510E ansieht,
an einer Wortgrenze dupliziert (d.h. einschließlich der Kopfabschnitte DH,
CH, BH und AH, zuzüglich
des Daten stranges 511). Dann ist die Schicht E in der Lage,
einen Aufruf herauf an die Schicht E für dieses neu erzeugte (kopierte)
Paket 510D weiterzuleiten.
-
Dieser
Vorgang wiederholt sich dann bei jeder nachfolgenden Schicht in
dem Protokollstapel 505. Der Datenabschnitt 511 kann
zum Beispiel fünfmal
kopiert werden (einmal für
jede Schicht in dem Protokollstapel) bevor er schließlich für die empfangende
Anwendung verfügbar
gemacht wird. Es versteht sich, dass dieses Kopieren eine beträchtliche Zusatzlast
der Verarbeitung beim Handhaben eingehender Datenkommunikationen
darstellt, insbesondere da, wie oben dargelegt, der Datenabschnitt 511 normalerweise
den größten Teil
des Paketes 510 bildet.
-
Ein
weiteres Problem liegt darin, dass die Größe von Kommunikationspaketen,
die verwendet werden sollen, von einer Schicht zur anderen variieren
kann. Auch wenn es also im Allgemeinen aus Gründen der Bandbreiteneffizienz
erwünscht
ist, dass der Datenabschnitt 511 im Vergleich zu den Kopfabschnitten
(AH, BH, etc.) groß ist,
gibt es auch Faktoren, welche die Paketgröße begrenzen, die in einer
gegebenen Situation zweckmäßigerweise
verwendet werden können.
In einigen Fällen
kann beispielsweise die Netzwerk- oder Protokollarchitektur eine
intrinsische Beschränkung
der Paketgröße haben
(z.B. hat ATM eine festgelegte Zellengröße). Unter anderen Umständen kann
die Paketgröße aus Gründen der
Leistungsfähigkeit
begrenzt sein, wie zum Beispiel dann, wenn die sendende Seite dafür ausgelegt
ist, auf eine Bestätigung
zu warten, dass ein Paket an seinem Zielort sicher empfangen wurde, bevor
sie mit der weiteren Verarbeitung fortfährt.
-
Die
optimale Paketgröße in einer
gegebenen Situation kann auch von der Fehlerrate abhängen (die
auf Grund der Umgebungsumstände
variieren kann). Wenn also Daten während der Übertragung verloren gehen oder
verändert
bzw. beschädigt
werden und dies durch die ECC erfasst (jedoch nicht korrigiert)
wird, so muss das betreffende Paket erneut gesendet werden. Wenn
eine zu große
Paketgröße verwendet
wird, so wird die Wahrscheinlichkeit, dass ein Paket ohne Beschädigung übertragen
wird, klein. Dementsprechend steigt der Anteil der Pakete, die neu
gesendet werden müssen,
an, und damit nimmt die Effizienz ab.
-
Die
obigen Faktoren können
dazu führen, dass
unterschiedliche Schichten in dem Protokollstapel unterschiedliche
Paketgrößen verwenden.
Insbesondere ist es, auch wenn 1A eine Eins-Zu-Eins-Übereinstimmung
für das
Paket 510 zwischen den verschiedenen Schichten des Protokollstapels
zeigt, in der Praxis üblich,
dass ein Paket in kleinere Pakete aufgeteilt wird, während es
in einem Protokollstapel herabläuft.
Umgekehrt werden empfangene Pakete dann (wieder) zu größeren Paketen
zusammengesetzt, wenn sie in einem Protokollstapel nach oben laufen.
Dies ist schematisch in 1B dargestellt,
die einen Protokollstapel zeigt, der die Schicht A und die Schicht
B aufweist. Zu Beginn empfängt
die Schicht A ein Paket 540, das ein Datensegment 531 aufweist.
Die Schicht A stellt einen Kopfabschnitt AH 535 diesem
Datensegment voran, um ein Paket 540A zu bilden, welches
dann an die Schicht B weitergeleitet wird. Wie zuvor erläutert, stellt
aus der Sicht der Schicht B das Paket 540A einfach Daten
dar, die gesendet werden sollen, mit anderen Worten, die Aufteilung 540A in
einen Kopfabschnitt 534 und einen Datenabschnitt 531 ist
für die
Schicht B nicht erkennbar (transparent).
-
Es
wird daher angenommen, dass die Schicht B eine kleinere Paketgröße verwendet
als die Schicht A (möglicherweise
vielleicht wegen der physikalischen Eigenschaften der speziell verwendeten Netzwerkverbindung).
Dementsprechend teilt die Schicht B das Paket 540A in zwei
Pakete 540B1, 540B2, auf, von welchen das erste
den Kopfabschnitt AH 535 und einen Teil der Daten 531 (als 531A bezeichnet)
aufweist, und der zweite den verbleibenden Teil der Daten 531 (als 531B bezeichnet)
enthält.
Die Schicht B stellt jedem der beiden Pakete ebenfalls ihren eigenen
Kopfabschnitt voran, nämlich
den Kopfabschnitt BH1 536A für das Paket 540B1 und
den Kopfabschnitt BH2 536B für das Paket 540B2.
Die Pakete 540B1 und 540B2 können nun an irgendeine andere
(tiefere) Ebene in dem Kommunikationsstapel weitergeleitet werden.
Diese unteren Ebenen bzw. Niveaus können möglicherweise weitere Unterteilungen
vornehmen, bevor die Pakete über
die betreffende Kommunikationsverbindung weitergesendet bzw. übertragen
werden.
-
Man
betrachte nun den umgekehrten Vorgang, in welchem die Pakete 540B1 und 540B2 über eine
Netzwerkverbindung in der Schicht B empfangen werden. Wie in Verbindung
mit 1A beschrieben wurde, streift die Schicht B, wenn
sie diese Pakete empfängt,
die dazugehörigen
Kopfabschnitte für die
Schicht ab, nämlich
BH1 536A und BH2 536B. Die Schicht B setzt dann
das Paket 540A (wieder) zusammen durch Kombinieren des
Datenabschnittes von dem Paket 540B1 (d.h. AH 535 in
Verbindung mit den Daten 531A) und des Datenabschnittes
von dem Paket 540B2 (d.h. den Daten 531B).
-
Unglücklicherweise
umfasst das Kombinieren der Pakete 540B1 und 540B2 zu
einem einzigen Paket 540A im Allgemeinen auch die Notwendigkeit, die
Daten des Paketes kopieren zu müssen.
Selbst wenn also die Pakete 540B1 und 540B2 in
der Schicht B zusammenhängend
gespeichert werden, liegt der Kopfabschnitt BH2 536B zwischen
dem Datensegment 531A und dem Datensegment 531B. Dementsprechend
verbleibt, wenn der Kopfabschnitt BH2 536B von der Schicht
B abgestreift worden ist, eine Lücke
zwischen den Datensegmenten 531A und 531B. Um
daher ein einziges Paket 540A zu erzeugen, welches die
Daten 531 in einem zusammenhängenden Block enthält, kopiert
die Schicht B die Datensegmente der Pakete 540B1 und 540B2 in
ein neues Paket, wo diese Segmente benachbart zueinander bzw. zusammen hängend angeordnet
sind. Dieses neue Paket wird dann als Paket 540A an die Schicht
A weitergeleitet. Es versteht sich, dass das Kopieren der Daten,
welches mit dem Wiederzusammensetzen derartig aufgeteilter Pakete
verknüpft
ist, wiederum eine beträchtliche
Zusatzlast bei der Handhabung eingehender Datenkommunikationen darstellt.
-
„A Buffer
Management Scheme for an Ethernet Local Area Network" von Donoghue et
al., S. 161–165
in IEEE Procs. of Southeast Conference, vl, April 1987, offenbart
eine Technik für
die Verwaltung von Speichern bei Kommunikationen. Die Technik verwendet
einen Hardware-Adressübersetzer,
der für eine
von der CPU verwendete Adresse in eine Adresse umwandelt, welche
den physikalischen Ort der Daten in einem Kommunikationsspeicher
wiedergibt.
-
„Cut-through
Buffer Management Technique for OSI Protocol Stack" von Poo et al.,
S. 166–177,
in Computer Communications, Elsevier, v14/3, April 1991, offenbart
eine Speicherverwaltungstechnik, die das erneute Kopieren von Daten
vermeidet, wenn sie durch Protokollschichten weitergeleitet werden.
Der Ansatz stellt übliche
Puffer bereit, um Sende- und Empfangsdaten zu erhalten, sowie lokale
Puffer für den
Protokoll-Kopfabschnitt-Aufbau und das Behalten von Zustandsinformationen.
-
Zusammenfassung der Erfindung
-
Dementsprechend
stellt die vorliegende Erfindung eine Adressübersetzungseinheit und ein
Verfahren zum Betreiben einer solchen Einheit bereit, wie sie in
den anhängigen
Ansprüchen
definiert werden.
-
In
einer Ausführungsform
weist die Adressübersetzungseinheit
einen Satz aus einem oder mehreren Übersetzungstabelleneinträgen auf,
um eine Abbildung von einer Anwendungsadresse auf eine Paketadresse
vorzunehmen. Jeder Übersetzungstabelleneintrag
entspricht einem Speicherblock und enthält mehrere Beschreibungen (specifier),
wobei jede Beschreibung sich auf einen anderen Abschnitt des relevanten
Speicherblockes bezieht. Die Beschreibungen bilden Anwendungsadressen
in ihren entsprechenden Abschnitten des Speicherblockes auf entsprechende
Paketadressen ab.
-
In
einer Ausführungsform
wird die Anwendungsadresse als eine virtuelle Adresse wiedergegeben
und die resultierende Paketadresse ist ebenfalls eine virtuelle
Adresse. Dies hat den Vorteil, dass die gewünschte Übersetzung normalerweise durch
einen einfachen Versatz in einem gemeinsam verwendeten, linearen
Adressraum angegeben werden kann. Insbesondere kann eine Kennung
bzw. Beschreibung von einer Anwendungsadresse auf eine entsprechende
Pa ketadresse abbilden, indem sie einen Versatz zwischen den beiden
bereitstellt. Jede Anwendungsadresse in dem Speicherabschnitt, welcher
einer Kennung bzw. Beschreibung entspricht, wird also in eine Paketadresse
umgewandelt, indem ein Versatz, welcher zu der betreffenden Kennung bzw.
Beschreibung gehört,
hinzuaddiert wird. Es ist auch möglich,
dass sowohl die Anwendungsadresse als auch die Paketadresse als
reale Adressen bereitgestellt werden, oder dass die Anwendungsadresse eine
virtuelle Adresse ist und die Paketadresse als eine reale Adresse
bereitgestellt wird.
-
Die
Form der Anwendung und die Paketadresse haben Einfluss auf die Beziehung
zwischen der Adressübersetzung
und einer Speicherverwaltungseinheit (MMU), die für die Durchführung von
konventionellen Abbildungen von virtuellen in physikalische Adressen
in Computern, die ein virtuelles Speichersystem haben, verwendet
wird. Wenn also die Adressübersetzungseinheit
stromaufwärts
von der MMU liegt, verwendet sie generell virtuelle Adressen, während dann,
wenn sie stromabwärts
von der MMU liegt, sie im Allgemeinen reale Adressen verwendet. Man
beachte, dass in jedem Fall die Adressübersetzungseinheit in die MMU-Hardware
integriert sein kann, jedoch als eine getrennte logische Komponente
jeweils vor oder nach der Funktion der Abbildung bzw. Zuordnung
von virtueller zu realer Seite. Alternativ kann die Adressübersetzungseinheit
in die Zuordnungshardware von virtueller zu realer Seite selbst
integriert werden. In diesem Fall hat sie eine virtuelle Adresse
als Eingang für
die Anwendungsadresse und eine reale Adresse als Ausgang für die Paketadresse.
-
Es
ist zweckmäßig, dass
ein Speicherblock, welcher einem Eintrag der Übersetzungstabelle entspricht,
eine Speicherseite repräsentiert
(wobei eine Seite die Einheit an Speicher repräsentiert, die für das Zuordnen
von virtueller zu realer Adresse und für den Wechsel zwischen Speicher
und Festplatte verwendet wird). Dies ermöglicht dann, dass der passende
Eintrag der Übersetzungstabelle
für eine
virtuelle Anwendungsadresse in derselben Weise lokalisiert wird
(unter Verwendung einer analogen Hardware) wie ein Seitentabelleneintrag
in der MMU. Typischerweise umfasst dies das Zwischenspeichern zumindest
eines Teiles der Einträge
der Übersetzungstabelle
in einen über
den Inhalt zugänglichen bzw.
inhaltsadressierbaren Speicher (CAM). In anderen Ausführungsformen
kann ein Speicherblock, welcher einem Eintrag einer Übersetzungstabelle
entspricht, hinsichtlich der Größe von einer
Speicherseite abweichen.
-
Man
beachte, dass das Nachschlagen von Umwandlungen von Anwendungs-
in Paketadressen ein zweistufiger Vorgang ist, indem zuerst ein
Eintrag der Übersetzungstabelle
gefunden wird und dann eine Beschreibung (specifier) in dem Eintrag
der Übersetzungstabelle
lokalisiert wird. Das Steigern der Größe des Speicherblocks, welcher
einem Eintrag in die Übersetzungstabelle
entspricht, führt
daher tendenziell dazu, dass die Gesamtzahl von Einträgen der Übersetzungs tabelle
abgesenkt wird, jedoch die Anzahl der Beschreibungen pro Eintrag
der Übersetzungstabelle
erhöht
wird. Es versteht sich, dass die Gesamtspeicherkapazität, die für die Adressübersetzungseinheit
erforderlich ist, ebenso wie die Zugriffszeit auf Beschreibungen
abhängig von
der ausgewählten
Größe des Speicherblockes variiert.
Dies kann so abgestimmt werden, dass die Leitfähigkeit unter den jeweils gegebenen
Umständen
optimiert wird, beispielsweise durch die Menge an Cache-Speicher,
der für
die Adressübersetzungseinheit
verfügbar
ist, die Größe der Speicherabschnitte,
die einer Beschreibung generell zugeordnet werden (welche eine typische
Paketgröße wiedergeben)
und so weiter.
-
In
gewissen Ausführungsformen
gibt es möglicherweise
nur einen einzelnen Eintrag in die Übersetzungstabelle, welcher
den gesamten Speicher abdeckt. In dieser Situation wird die erste
Stufe des Nachschlagevorgangs letztlich redundant. Außerdem kann
die Größe des Speicherblockes,
welcher einem Eintrag einer Übersetzungstabelle
zugewiesen ist, möglicherweise
von einem Eintrag zum anderen variieren, wenn vielleicht unterschiedliche Speicherbereiche
für sehr
unterschiedliche Formen der Verarbeitung verwendet werden (auch
wenn dies die Identifikation des Eintrages in die Übersetzungstabelle,
der einer bestimmten Anwendungsadresse entspricht, komplizierter
machen mag).
-
Man
beachte, dass ein Übersetzungstabelleneintrag
mehrere Abbildungen pro Speicherblock unterstützt. Die Beschreibung innerhalb
eines Übersetzungstabelleneintrags
hat üblicherweise
einen anderen Versatz-Wert (Offset), um eine Umwandlung von einer
Anwendungsadresse in eine Paketadresse vorzunehmen. Dies ermöglicht eine
extrem genaue Form der Adressübersetzung
und tatsächlich
unterstützt
die Adressübersetzungseinheit
im Allgemeinen eine Feinheit bzw. Granularität der Zuordnung von einem Byte.
Zusammenhängende
Anwendungsadressen innerhalb derselben Seite (oder des Blockes)
des Speichers können
daher, unter der Annahme, dass den Anwendungsadressen unterschiedliche
Beschreibungen (specifier) zugeordnet sind, auf nicht zusammenhängende Paketadressen
abgebildet sein.
-
Typischerweise
enthält
jede Beschreibung Grenzwerte, welche den Bereich des Speichers definieren
(d.h. den Bereich der Anwendungsadressen), auf welche die Beschreibung
sich bezieht. Beispielsweise kann eine Beschreibung eine Startadresse
und eine Endadresse enthalten oder alternativ eine Startadresse
und eine Größe. Die
unterschiedlichen Beschreibungen, die dem ausgewählten Übersetzungstabelleneintrag
zugeordnet sind, können
dann in einem CAM gespeichert oder geladen werden.
-
In
einer Ausführungsform
haben die Beschreibungen, die einem Übersetzungstabelleneintrag
zugeordnet sind, eine hierarchische Anordnung. Eine solche Struktur
vermindert die Komplexi tät
der Hardware indem sie die Größe des erforderlichen CAM
begrenzt. In einer besonderen Implementierung gibt es zwei Typen
von Beschreibungen, nämlich eine Übersetzungsbeschreibung
und eine Wiederholungsbeschreibung. Eine Übersetzungsbeschreibung gibt
Einzelheiten einer Zuordnung von einer Anwendungsadresse auf eine
Paketadresse an, während
eine Wiederholungsbeschreibung mit dem Nachschlagen um eine Ebene
in der Hierarchie nach unten geht. Jede Ebene in der Hierarchie
enthält dann
typischerweise mehrere Übersetzungsbeschreibungen
und eine Wiederholungsbeschreibung (mit Ausnahme der untersten Schicht
bzw. Ebene in der Hierarchie, die keine Wiederholungsbeschreibung
enthält).
im Betrieb startet der Nachschlagevorgang auf dem ersten Niveau
bzw. der ersten Ebene in der Beschreibungshierarchie und findet
die Beschreibung, welche der umzuwandelnden Anwendungsadresse entspricht.
Wenn die gefundene Beschreibung eine Übersetzungsbeschreibung ist,
so wird die Adresszuordnung direkt bereitgestellt. Wenn die gefundene
Beschreibung jedoch eine Wiederholungsbeschreibung ist, geht die
Verarbeitung herab auf die nächste
Ebene in der Beschreibungshierarchie. Diese Vorgänge können dann wiederholt werden,
bis eine Übersetzungsbeschreibung
gefunden wird. Es versteht sich, dass ein Fachmann sich verschiedene
andere Nachschlagestrukturen und -vorgänge vorstellen kann, die für das Speichern
und Zugreifen auf die Beschreibungen in einem Übersetzungstabelleneintrag
angepasst werden könnten.
-
In
einer besonderen Ausführungsform
weist das Verfahren zum Lokalisieren einer Beschreibung, welche
einer bestimmten Adresse innerhalb eines Übersetzungstabelleneintrags
entspricht, das Suchen der Übersetzungsbeschreibungen
für den Übersetzungstabelleneintrag
auf, um eine Übersetzungsbeschreibung
zu lokalisieren, welche der Anwendungsadresse entspricht. Wenn eine Übersetzungsbeschreibung,
welche der Anwendungsadresse entspricht, lokalisiert ist, wird die
Zuordnung in dieser Beschreibung verwendet, um die Übersetzung von
der Anwendungsadresse in eine Paketadresse auszuführen. Wenn
jedoch eine Übersetzungsbeschreibung
nicht entsprechend der Anwendungsadresse lokalisiert ist, wird eine
Suche nach einer Wiederholungsbeschreibung durchgeführt, welche
der Anwendungsadresse entspricht. Wenn eine der Anwendungsadresse
entsprechende Wiederholungsbeschreibung gefunden wird, wird auf
den Übersetzungstabelleneintrag,
der durch die Wiederholungsbeschreibung gekennzeichnet wird, zugegriffen.
Der Vorgang wird dann wiederholt, bis die passende Übersetzungsbeschreibung
für die
Anwendungsadresse gefunden wird. (Man beachte, dass in diesem Ansatz
jede tiefere Ebene in der Beschreibungshierarchie als ein weiterer Übersetzungstabelleneintrag behandelt
wird, anstatt als ein einzelner Übersetzungstabelleneintrag,
der mehrere Ebenen von Beschreibungen enthält).
-
Eine
Adressübersetzungseinheit,
wie die oben beschriebene zum Umwandeln von Anwendungsadressen in
Paketadressen, ist typischerweise in ein Computersystem integriert,
das auch einen Kommunikationsstapel in mehreren Schichten aufweist.
Die Adressübersetzungseinheit
ist derart betreibbar, dass sie eine Umwandlung zwischen einer Anwendungsadresse,
die in einer höheren
Schicht des Kommunikationsstapels verwendet wird, und einer Paketadresse,
die in einer niedrigeren Schicht des Kommunikationsstapels verwendet
wird, durchführt.
Es versteht sich, dass dies das Erfordernis beseitigt, dass jede
Schicht in dem Kommunikationsstapel ein Datenpaket in einen zusammenhängenden Abschnitt
von Speicher überführt, um
eine Weiterleitung zu der nächsten
Schicht weiter oben in dem Stapel durchzuführen. Stattdessen kann an die
nächste Schicht
einfach eine Anwendungsadresse für
das Paket weitergeleitet werden, und die zu Grunde liegenden Paketdaten
können
nach wie vor in nicht zusammenhängenden
Abschnitten des Speichers gespeichert bleiben (wie es zum Beispiel
in den 1A und 1B veranschaulicht
wird). Die nächste Schicht
verwendet dann die (zusammenhängenden) Anwendungsadressen,
um auf die Daten zuzugreifen, wobei die Adressübersetzungseinheit eine transparente
Zuordnung zu (nicht zusammenhängenden) Paketadressen
durchführt,
um die Daten in dem Speicher zu lokalisieren.
-
Eine
weitere Ausführungsform
weist ein Verfahren zum Betreiben einer Adressübersetzungseinheit in einem
Computersystem auf. Das Verfahren weist das Bereitstellen eines
Satzes von Übersetzungstabelleneinträgen auf,
wobei jeder Übersetzungstabelleneintrag
einem Speicherblock entspricht und eine Abbildung von Anwendungsadressen
auf Paketadressen für
den betreffenden Speicherblock vornimmt. Zusätzlich werden mehrere Beschreibungen
innerhalb jedes Übersetzungstabelleneintrags bereitgestellt.
Jede Beschreibung bezieht sich auf einen anderen Abschnitt des Speicherblockes,
der dem relevanten Übersetzungstabelleneintrag
entspricht, und bildet von Adressen in diesem Bereich des Speicherblockes
auf die entsprechenden Paketadressen ab.
-
In
Betrieb wird eine Anwendungsadresse typischerweise empfangen und
verwendet, um einen Übersetzungstabelleneintrag,
der einem Block eines (logischen) Speichers entspricht, zu bestimmen,
welcher die Anwendungsadresse enthält. Eine Beschreibung, die
einem Bereich des Speichers entspricht, der zu der Anwendungsadresse
gehört,
wird dann innerhalb dieses Übersetzungstabelleneintrags
gefunden. Die Anwendungsadresse kann nun auf die entsprechende Paketadresse
abgebildet werden, wobei die Übersetzungsinformation
innerhalb der lokalisierten Beschreibung verwendet wird.
-
In
einer besonderen Ausführungsform
wird die Anwendungsadresse durch eine zweite Schicht in einem Protokollstapel
von einer ersten Schicht in dem Protokollstapel empfangen. Die Anwendungsadresse
wird verwendet, um sich auf Daten von einem oder mehreren eingehenden
Datenpaketen zu beziehen, die nach oben in dem Protokollstapel weitergeleitet
werden. Die erste Schicht verarbeitet die eingehenden Datenpakete,
um die Kopfabschnitt-Information, die für die erste Schicht relevant
ist, abzustreifen. Wenn diese Kopfabschnitt-Information entfernt worden
ist, ist das eingehende Datenpaket möglicherweise nicht mehr zusammenhängend oder
ist möglicherweise
nicht mehr entlang einer Wortgrenze ausgerichtet. Dementsprechend
werden der Übersetzungstabelleneintrag
oder die Einträge,
die zu den eingehenden Datenpaketen gehören, aktualisiert, um die abgestreifte
Kopfabschnitt-Information zu berücksichtigen.
Insbesondere ermöglichen
die aktualisierten Übersetzungstabelleneinträge, dass
das eingehende Datenpaket der zweiten Schicht als ein entlang einer
Wortgrenze ausgerichteter, zusammenhängender Satz von Anwendungsadressen
präsentiert
wird.
-
Die
erste Schicht kann auch zwei oder mehr getrennte eingehende Datenpakete
für die
Weiterleitung an die zweite Schicht zu einem einzelnen Datenpaket
kombinieren. Diese Kombination von Paketen kann erreicht werden
durch Bereitstellen eines geeigneten Satzes von Zuordnungen bzw.
Abbildungen in dem passenden Übersetzungstabelleneintrag
(oder -eintragen), anstatt durch irgendeine Manipulation oder ein
Kopieren der zu Grunde liegenden Daten selbst. Diese Zuordnungen
ermöglichen
es, dass die zweite Schicht das (logisch kombinierte) eingehende Datenpaket
als eines behandelt, welches einen zusammenhängenden Bereich von Wortadressen
hat, die in angemessener Weise entlang einer Wortgrenze ausgerichtet
sind.
-
Ein
solcher Ansatz vermeidet daher, dass die erste Schicht das eingehende
Datenpaket (die Pakete) in einen zusammenhängenden Block von entlang einer
Wortgrenze ausgerichtetem Speicher kopieren muss, bevor sie an die
zweite Schicht weitergeleitet werden. Stattdessen ist die Adressübersetzungseinheit
verantwortlich für
das Zuordnen von den (zusammenhängenden)
Anwendungsadressen für
das Datenpaket zu den zu Grunde liegenden (nicht zusammenhängenden)
Paketadressen. Dieser Zuordnungsvorgang ist für die zweite Schicht transparent, welche
einfach die Anwendungsadressen verwendet, um auf die Datenpakete
zuzugreifen und diese zu handhaben.
-
Gemäß einer
weiteren Ausführungsform
wird eine Adressübersetzungseinheit
für die
Verwendung in einem Computersystem bereitgestellt. Die Einheit verwendet
einen Satz von Übersetzungstabelleneinträgen für die Zuordnung
von einer Anwendungsadresse in eine Paketadresse. Jeder Übersetzungstabelleneintrag
entspricht einem Speicherblock. Die Zuordnung wird mit einer Feinheit
bzw. Granularität von
einem Byte durchgeführt.
-
In
einer Ausführungsform
werden eingehende Datenpakete in einem Kommunikationsprotokollstapel
behandelt, der zumindest eine erste Schicht und eine zweite Schicht
aufweist. Die einen oder mehreren eingehenden Datenpakete werden
empfangen und in der ersten Schicht verar beitet, um die Kopfabschnitt-Information,
die zu der ersten Schicht gehört,
abzustreifen. Eine Adressübersetzungseinheit,
wie sie oben beschrieben wurde, wird aktualisiert, um die abgestreifte
Kopfabschnitt-Information zu berücksichtigen
und eine Anwendungsadresse für das
eine oder mehrere eingehende Datenpakete wird dann an die zweite
Schicht in dem Protokollstapel weitergeleitet.
-
Es
versteht sich, dass eine solche Verarbeitung wiederholt werden kann,
wenn die eingehenden Datenpakete in dem Kommunikationsstapel nach oben
weitergeleitet werden. Beispielsweise kann die zweite Schicht selbst
die von der ersten Schicht empfangenen Datenpakete weiterverarbeiten,
um Kopfabschnitt-Information, die zu der zweiten Datenschicht gehört, abzustreifen
(und/oder eine weitere Paketkombination durchzuführen). In diesem Fall aktualisiert
die zweite Schicht die Adressübersetzungseinheit,
so dass sie berücksichtigt,
dass die Kopfabschnitt-Information
abgestreift wurde, und leitet Anwendungsadressen für die eingehenden
Datenpakete an eine dritte Schicht in dem Protokollstapel weiter (unter
der Annahme, dass diese oberhalb der ersten und zweiten Schicht
liegt). Die dritte Schicht kann dann die Anwendungsadressen verwenden,
um über die
Adressübersetzungseinheit
auf die eingehenden Datenpakete zuzugreifen.
-
Man
beachte, dass dann, wenn die zweite Schicht die Übersetzungstabelleneinträge aktualisiert,
jegliche existierenden Übersetzungstabelleneinträge ordnungsgemäß berücksichtigt
werden müssen
(so wie sie durch die erste Schicht in den Kommunikationsstapel
eingeführt
wurden). Mit anderen Worten, die Übersetzungstabelleneinträge müssen den
vollen Satz von Zuordnungen von jeder Schicht berücksichtigen,
um eine korrekte Gesamtübersetzung
von Anwendungsadresse in Paketadresse bereitzustellen.
-
Eine
andere Ausführungsform
stellt ein Kommunikationssystem, einschließlich eines Protokollstapels
für die
Handhabung eingehender Datenpakete, bereit. Der Protokollstapel
weist zumindest eine erste Schicht und eine zweite Schicht sowie
eine Adressübersetzungseinheit
auf, die in der Weise betreibbar ist, dass sie eine Zuordnung bzw.
Abbildung von einer Anwendungsadresse auf eine Paketadresse vornimmt.
Die erste Schicht verarbeitet ein oder mehrere eingehende Datenpakete
in der Weise, dass sie Kopfabschnitt-Information, die zu der ersten Schicht
gehört,
abstreift, und aktualisiert die Adressübersetzungseinheit in der Weise,
dass sie die abgestreifte Kopfabschnitt-Information berücksichtigt.
Die zweite Schicht empfängt
eine Anwendungsadresse für
die eingehenden Datenpakete von der ersten Schicht in dem Protokollstapel
und verwendet die Anwendungsadresse, um über die Adressübersetzungseinheit
auf die eingehenden Datenpakete zuzugreifen.
-
Eine
weitere Ausführungsform
stellt eine Vorrichtung zum Betreiben einer Adressübersetzungseinheit
in einem Computersystem bereit, welche aufweist: Einrichtungen zum
Bereitstellen eines Satzes von Übersetzungstabelleneinträgen, wobei jeder Übersetzungstabelleneintrag
einem Speicherblock entspricht und eine Zuordnung von Anwendungsadressen
auf Paketadressen für
den betreffenden Speicherblock bereitstellt, und Einrichtungen zum
Bereitstellen mehrerer Beschreibungen innerhalb jedes Übersetzungstabelleneintrags,
wobei jede Beschreibung sich auf einen anderen Bereich des Speicherblockes
bezieht, welcher dem relevanten Übersetzungstabelleneintrag
entspricht, und eine Abbildung von Anwendungsadressen in dem Teil
des Speicherblockes auf entsprechende Paketadressen vornimmt.
-
Eine
weitere Ausführungsform
stellt eine Vorrichtung zum Handhaben eingehender Datenpakete in
einem Kommunikationsprotokollstapel bereit, welcher zumindest eine
erste Schicht und eine zweite Schicht aufweist, wobei die Vorrichtung
aufweist: Einrichtungen zum Empfangen eines oder mehrerer eingehender
Datenpakete in der ersten Schicht, Einrichtungen in der ersten Schicht
zum Verarbeiten des einen oder der mehreren eingehenden Datenpakete, um
Kopfabschnitt-Information abzustreifen, die zu der ersten Schicht
gehört,
Einrichtungen zum Aktualisieren einer Adressübersetzungseinheit, welche eine
Abbildung bzw. Zuordnung von einer Anwendungsadresse auf eine Paketadresse
vornimmt, um die abgestreifte Kopfabschnitt-Information zu berücksichtigen,
und Einrichtungen zum Weiterleiten einer Anwendungsadresse für die einen
oder mehreren eingehenden Datenpakete an die zweite Schicht in dem
Protokollstapel.
-
Kurzbeschreibung der Figuren
-
Verschiedene
Ausführungsformen
der Erfindung werden nun im Einzelnen lediglich anhand eines Beispiels
beschrieben, wobei auf die folgenden Zeichnungen Bezug genommen
wird, in welchen gleiche Bezugszeichen sich auf jeweils gleiche
Elemente beziehen und in welchen:
-
1 ein
schematisches Diagramm ist, das einen Protokollstapel zeigt,
-
1A ist
ein schematisches Diagramm, welches das Hinzufügen und wieder Entfernen von Protokoll-Kopfabschnitten
veranschaulicht, wenn ein Datenpaket durch den Protokollstapel gemäß 1 nach
oben und unten läuft;
-
1B ist
ein schematisches Diagramm, welches die Aufteilung und das Wiederzusammensetzen
eines Datenpaketes zeigt, wenn es einen Protokollstapel, wie er
in 1 dargestellt ist, nach oben bzw. unten durchläuft;
-
2 ist
ein vereinfachtes schematisches Diagramm eines typischen Computersystems;
-
3 ist
ein vereinfachtes schematisches Diagramm der Hauptsoftwarekomponenten,
die auf dem Computersystem nach 2 laufen;
-
4 ist
ein schematisches Diagramm eines bekannten virtuellen Speichersystems,
wie es typischerweise in dem Computersystem nach 2 implementiert
wird;
-
5 ist
ein schematisches Diagramm, welches eine Hardware-Übersetzungseinheit
gemäß einer
Ausführungsform
der Erfindung veranschaulicht;
-
5A ist
ein schematisches Diagramm, welches die Verwendung der Hardware-Übersetzungseinheit nach 5 veranschaulicht;
-
6 und 6A sind
schematische Diagramme, welche gewisse Datenstrukturen innerhalb der
Hardware-Übersetzungseinheit
nach 5 veranschaulichen;
-
7 ist
ein Flussdiagramm, welches ein Verfahren zum Umwandeln von einer
Anwendungsadresse zu einer Paketadresse gemäß einer Ausführungsform
der Erfindung zeigt;
-
8 ist
ein schematisches Diagramm, welches eine Abbildung bzw. Zuordnung
von einer Paketadresse auf eine Anwendungsadresse gemäß einer
Ausführungsform
der Erfindung veranschaulicht;
-
9 ist
ein schematisches Diagramm, welches den Übergang bzw. die Übergabe
der Anwendungsadresse veranschaulicht, wenn ein Paket von einer
Schicht zu einer anderen weitergeleitet wird; und
-
10 ist
ein Flussdiagramm, welches die Verarbeitung zeigt, die mit dem Übergang
nach 9 verknüpft
ist.
-
Genaue Beschreibung
-
2 ist
ein schematisches Diagramm, welches die wesentlichen Hardwarekomponenten
eines typischen Computersystems 10 zeigt (es versteht sich,
dass dieses hier nur beispielhaft wiedergegeben wird und Fachleute
sich darüber
im Klaren sind, dass ein breiter Bereich von Konfigurationen verfügbar ist,
der sich von dem in 1 unterscheidet). Die verschiedenen
Komponenten des Computersystems 10 sind durch einen Bus 70 miteinander
verbunden, der in der Praxis durch eine Hierarchie von Bussen mit
unterschiedlicher Geschwindigkeit implementiert sein kann, um eine
Kommunikation zur Verbindung zwischer den Komponenten bereitzustellen.
Man beachte, dass mitunter auch ein Schaltnetzwerk anstelle des
Busses bereitgestellt werden kann, wobei dies insbesondere bei Hochleistungssystemen,
wie zum Beispiel einem großen
Server, der Fall sein kann.
-
Das
Herz eines Computersystems 10 bildet ein Prozessor 20,
der auch als zentrale Verarbeitungseinheit (Central Processing Unit – CPU) bezeichnet
wird, welcher für
das Ausführen
von Programmbefehlen und das Steuern bzw. Organisieren des Gesamtbetriebs
des Systems 10 verantwortlich ist. Viele moderne Systeme
unterstützen
die Mehrfachverarbeitung, indem sie entweder mehr als eine Prozessoreinheit
haben oder (und) durch Bilden getrennter Verarbeitungskerne bzw.
Prozessorkerne innerhalb einer einzelnen Halbleitereinrichtung.
-
Ein
Speicher 40 mit wahlfreiem Zugriff (RAM) ist für die flüchtige Speicherung
von Programmbefehlen und Daten für
die Verwendung durch den Prozessor 20 vorgesehen. Der Betrieb
des RAM 40 und seine Wechselwirkung mit dem Host-Bus 70 wird
durch eine Speichersteuerung 35 gesteuert, die direkt zwischen
dem RAM 40 und dem Bus 70 angeordnet ist. Die
Verbindung zwischen der Speichersteuerung 35 und den) RAM 40 kann
durch einen getrennten Bus oder irgendeine andere geeignete Form
einer Datenverbindung bereitgestellt werden. (Es ist auch möglich, dass
die Speichersteuerung in einer einzelnen Einrichtung mit einem RAM 40 oder
möglicherweise auch
mit dem Prozessor 20 implementiert ist). Es können mehrere
Speichersteuerungen vorgesehen sein, die jeweils einer) oder mehrere
RAM-Blöcke
mit dem Bus 70 verbinden.
-
Das
Computersystem 10 umfasst auch verschiedene andere Einrichtungen,
die an dem Bus 70 angebracht sind. Diese umfassen typischerweise eine
Netzwerkschnittstelle 45, I/O-Einheiten 80 und einen nichtflüchtigen
Speicher 55. Die Netzwerkschnittstelleneinheit 45 ermöglicht es,
dass das System 10 Daten nach außen über das Netzwerk 65 versendet
und von diesem empfängt
(welches beispielsweise das Internet sein kann). Es versteht sich,
dass irgendein gegebenes Computersystem tatsächlich auch mit mehreren Netzwerken
verbunden sein kann, wie zum Beispiel über ein Telefonmodem, durch
eine LAN-Schnittstelleneinheit und so weiter. Die verschiedenen
I/O-Einheiten 80 weisen typischerweise eine oder mehrere
Tastaturen, Monitore und so weiter auf. Diese ermöglichen
es Benutzern, direkt mit den) System 10 zu interagieren.
Ein nichtflüchtiger
Speicher 55 wird normalerweise in Form einer oder mehrerer
Festplattenlaufwerke bereitgestellt (die möglicherweise in Form eines
Arrays ausgestaltet sind), jedoch kann dieser auch ein Bandspeicher und/oder
ein optischer Speicher (wie zum Beispiel eine CD-ROM, DVD, etc.) sein. Der Speicher 55 kann einen
bestimmten Computersystem 10 zugeordnet sein oder er kann über eine
geeignete Verbindung von mehreren Systemen gemeinsam verwendet werden,
wie zum Beispiel über
ein Faserkanalnetzwerk.
-
Der
Prozessor 20 arbeitet typischerweise mit wesentlich höherer Geschwindigkeit
als der Host-Bus 70 und
der RAM 40. Daher wird, um Verarbeitungsverzögerungen
zu vermeiden, während
auf Daten zugegriffen wird, ein Cache 30 vorgesehen. Dieser
hat eine kleinere Kapazität
als der RAM 40, kann jedoch eine viel schnellere Reaktion
auf den Prozessor 20 bieten. Im Ergebnis versorgt der Cache 30 den
Prozessor 20 mit einer schnellen, lokalen Kopie ausgewählter Daten
von dem RAM 40. Man beachte, dass viele Systeme inzwischen
eine Cache-Hierarchie auf mehreren Ebenen verwenden, wobei zumindest
die niedrigste (kleinste) Cache-Ebene direkt in den Prozessor 20 integriert
ist.
-
Der
Prozessor 20 greift generell mit Hilfe einer virtuellen
Adresse (typischerweise in modernen Systemen entweder einer 32-Bit-
oder 64-Bit-Zahl) auf Datenbefehle aus dem Speicher zu. Diese virtuelle
Adresse wird durch eine Hardware-Speicherverwaltungseinheit (MMU) 22,
die im Prozessor 20 enthalten ist, in eine reale Adresse
umgewandelt, die einem physikalischen Ort in dem RAM 40 entspricht.
-
Man
beachte, dass der RAM normalerweise zu klein ist, als dass er in
der Lage wäre,
den gesamten Adressraum des Prozessors 20 aufzunehmen. Deshalb
werden nur ausgewählte
Teile des Adressbereiches in dem RAM gespeichert, wobei der übrige Teil
auf die Festplatte 55 ausgelagert ist. Die Bereiche des
Adressraums, die auf die Festplatte ausgelagert sind, werden in
den RAM 40 überführt (mit
diesem ausgetauscht), wenn ein Zugriff durch den Prozessor 20 angefordert
wird; umgekehrt werden derartige Bereiche zurück auf die Festplatte überführt, wenn
sie durch den Prozessor 20 nicht mehr benötigt werden.
Die (festgelegte) Einheit der Speicherüberführung zwischen dem RAM und
der Festplatte wird als eine Speicherseite bezeichnet.
-
3 ist
ein schematisches Diagramm der wesentlichen Softwarekomponenten,
die auf einem Computersystem, wie es in 2 dargestellt
ist, laufen. Insbesondere gibt es ein oder mehrere Anwendungsprogramme 210,
die (in einem nicht privilegierten Modus) zusätzlich zu dem Betriebssystem 220 laufen.
Der Kern des Betriebssystems ist der Kern 225, der in einem
privilegierten Modus läuft.
Anwendungen können
auf Funktionalitäten
des Kernes zugreifen, indem sie Systemaufrufe 230 durchführen, typischerweise über eine
Anwendungsprogrammier-Schnittstelle
(API) des Systems. Weiterhin ist in 2 eine Schicht
aus einem oder mehreren Gerätetreibern 240 dargestellt.
Ein Gerätetreiber
ist ein Codeblock auf niedrigem Niveau, der es dem Betriebssystem 220 erlaubt,
mit verschiedenen Hardwareeinrichtungen, wie zum Beispiel Grafikkarten, Netzwerkadaptern
und so weiter im Wechselwirkung zu treten. Der Kommunikationsstapel 505 von 1 wird
im Allgemeinen als Teil des Betriebssystems 220 bereitgestellt,
auch wenn höhere
Ebenen des Stapels in Anwendungsprogramme 210 einbezogen werden
können,
während
niedrigere Ebenen oft in den Gerätetreibern 240 enthalten
sind.
-
Die
Softwarekomponenten, die in 3 dargestellt
sind, werden für
die Ausführung
im Allgemeinen aus dem Speicher 40 in den Prozessor 20 geladen
(siehe 2). Einige oder sämtliche dieser Komponenten
können
auf der Festplatte 55 vorinstalliert sein oder auf irgendeinem
tragbaren Speichermedium gespeichert bzw. geladen sein, wie zum
Beispiel einem Magnetband, CD-ROM, DVD, etc. (in 2 nicht
dargestellt). Alternativ kann ein Teil der Software oder die gesamte
Software über
ein Übertragungsmedium über das
Netzwerk 65 heruntergeladen werden. Man beachte, dass Software,
die von einem Sende- oder tragbaren Speichermedium erhalten wird,
auf dem Speicherteilsystem 55 gesichert werden kann für eine nachfolgende
(Wieder)-Verwendung durch das System 10 oder für die Ausführung direkt
in den Speicher 40 geladen werden kann.
-
4 ist
ein schematisches Diagramm eines bekannten Adressübersetzungsvorganges
für die Verwendung
in einem Computersystem, wie es in 2 dargestellt
ist. Ein linearer virtueller Adressraum 310 wird durch
den Prozessor 20 verwendet, wobei eine gegebene virtuelle
Adresse typischerweise als die Kombination einer Seitenzahl und
eines Versatzes zu der Seite interpretiert wird. Um auf den physikalischen
Speicher zuzugreifen, der zu einer Adresse gehört, verwendet das System die
Seitenzahl für
die Adresse, um auf die MMU 22 zuzugreifen. Die MMU 22 behält eine
Seitentabelle, in der jede Seite ihren eigenen Übersetzungstabelleneintrag (TTE)
hat. Der TTE für
eine Seite gibt die Position bzw. Stelle der betreffenden Seite
in dem physikalischen Speicher 350 an. Beispielsweise entspricht, wie
in 4 dargestellt, die Seite N 308B in dem
virtuellen Speicher 310 der Seite 308B' in einem realen Speicher 350.
Man beachte, dass in einem parallel arbeitenden System (multitasking
system) ein getrennter Satz von Abbildungen bzw. Zuordnungen von
virtuellen zu physikalischen Adressen für jeden Prozess aufrechterhalten
werden kann (d.h. jeder Prozess hat seinen eigenen virtuellen Adressraum).
-
Wie
in 4 dargestellt, muss eine zusammenhängende Folge
von Seiten in dem virtuellen Adressraum, zum Beispiel N – 1 bis
N + 3) nicht notwendigerweise in derselben Reihenfolge in dem physikalischen
Speicher 350 wiedergegeben werden. In dem physikalischen
Speicher können
die Seiten also voneinander getrennt und/oder in einer im Vergleich zu
ihren virtuellen Adressen anderen Reihenfolge gespeichert sein.
Beispielsweise hängen
die Seiten N und N + 1 im virtuellen Speicher zusammen, jedoch sind
sie im physikalischen Speicher getrennt und erscheinen auch in der
umgekehrten Reihenfolge (d.h. die Seite N + 1 hat eine höhere virtuelle
Adresse als die Seite N, jedoch eine niedrigere physikalische Adresse).
-
Im
Betrieb wird eine Adressübersetzung,
die die MMU 22 verwendet, typischerweise dadurch durchgeführt, dass
eine virtuelle Adresse 310 in eine Seitenzahl (welche zum
Beispiel die 19 höchst
signifikanten Bits der Adresse wiedergeben kann) und einen Versatz
(Offset) zu dieser Seite (zum Beispiel die verbleibenden 13 Bits
der Adresse) zerlegt wird. Die physikalische Adresse 350,
welche der virtuellen Adresse entspricht, wird dann abgeleitet,
indem zuerst die MMU 22 verwendet wird, um die entsprechende
reale Seite des Speichers zu bestimmen, und dann derselbe Versatz
(Offset) auf diese reale Seite angewendet wird, wie für die virtuelle
Seite.
-
Wie
zuvor erwähnt, übersteigt
der virtuelle Speicherraum normalerweise den verfügbaren physikalischen
Speicherraum (manchmal ganz erheblich). Deshalb verschiebt das System
Seiten in den physikalischen Speicher hinein und aus diesem heraus entsprechend
den speziellen Bedürfnissen
des Prozessors 20, wobei ausgelagerte Seiten auf der Festplatte 55 gespeichert
werden. Der TTE für
eine bestimmte Seite zeigt an, ob diese Seite gerade aus dem Speicher
ausgelagert wurde. Zusätzlich
kann die Anzahl von Seiten in einem System sehr groß sein.
Beispielsweise gibt es in einem 32-Bit-System, welches Seiten mit
8 KByte verwendet, möglicherweise
bis zu eine halbe Million Seiten. Im Allgemeinen ist es nicht möglich, die
TTEs für
all diese Seiten in der MMU 22 zu speichern. Deshalb kann
die Seitentabelle selbst weitgehend auf die Festplatte ausgelagert
sein. Ein gewisser Teil der Seitentabelle wird jedoch üblicherweise
für einen
schnellen Zugriff in einem Cache in Form eines Übersetzungsnachschlagpuffers
(TLB) aufgenommen, der in der MMU enthalten ist.
-
In
einer typischen Implementierung beträgt die Größe einer einzelnen Seite 308 8
KByte, jedoch ist im Stand der Technik ein großer Bereich von Seitengrößen bekannt.
Beispielsweise reichen in verschiedenen Versionen des Betriebssystems
Solaris, welches von Sun Microsystems erhältlich ist, die verfügbaren Seitengrößen von
4 KByte bis herauf zu 4 MByte. (Siehe „Solaris Internals: Core Kernel
Architecture", von
Mauro und McDougall, Sun Microsystems Press, 2001, ISBN 0-13-022496-0,
bezüglich
weiterer Einzelheiten des Solaris Betriebssystems als Beispiel eines
bekannten virtuellen Speichersystems).
-
5 zeigt
ein Adressübersetzungsteilsystem
gemäß einer
Ausführungsform
der Erfindung, die eine Hardwareübersetzungseinheit 440 umfasst, welche
eine Anwendungsadresse 435 in eine Paketadresse 445 umwandelt.
Die Hardwareübersetzungseinheit 440 kann
zweckmäßi gerweise
in die MMU 22 eines existierenden Systems eingebaut werden,
kann jedoch auch als eine getrennte Komponente bereitgestellt werden.
-
In
einer Ausführungsform
sind die Anwendungsadresse 435 und die Paketadresse 445 beide virtuelle
Adressen (im Gegensatz zu der konventionellen Adressübersetzung,
die durch die MMU 22 ausgeführt wird, wo eine virtuelle
Adresse eingegeben und eine reale Adresse ausgegeben wird). In anderen
Implementierungen kann jedoch die Hardwareübersetzungseinheit 440 eine
virtuelle Anwendungsadresse 435 in eine reale Paketadresse 445 umformen.
Eine weitere Möglichkeit
liegt darin, dass sowohl die Anwendungsadresse 435 als
auch die Paketadresse real sind, wobei in diesem Fall die Adressübersetzung
eine reale Adresse in eine andere reale Adresse umwandelt.
-
Das
spezielle Format der Anwendungsadresse 435 und der Paketadresse 445 hängt typischerweise
von der Beziehung zwischen der Hardwareübersetzungseinheit 440 und
der MMU 22 ab (oder beeinflusst diese). Wenn beispielsweise
die Hardwareübersetzungseinheit 440 in
die MMU einbezogen bzw. integriert ist, so kann es besonders bequem
und zweckmäßig sein,
wenn die Anwendungsadresse 435 eine virtuelle Eingangsadresse
ist und wenn die Paketadresse 445 eine reale Ausgangsadresse
ist. Andererseits ist, wenn die Anwendungs- und Paketadressen beide
reale Adressen sind, die Hardwareübersetzungseinheit 440 mit
größter Wahrscheinlichkeit
stromabwärts
von der MMU, während dann,
wenn die Anwendungs- und Paketadressen beide virtuelle Adressen
sind, die Hardwareübersetzungseinheit 440 sehr
wahrscheinlich stromaufwärts von
der MMU 22 liegt (stromabwärts und stromaufwärts bezieht
sich hier auf die normale Laufrichtung von Speicherzugriffsanforderungen
von dem Prozessor 20 auf den Speicher 40).
-
Wie
in 5 dargestellt, beinhaltet die Hardwareübersetzungseinheit 440 eine
Seitentabelle 460, welche mehrere Seitentabelleneinträge (PTEs) 500A, 500B, 500C, 500D, 500E,
etc. aufweist (diese können
auch als Übersetzungstabelleneinträge bezeichnet
werden). Jeder PTE enthält
Informationen zum Übersetzen
einer Anwendungsadresse 435, die auf der betreffenden Seite
angeordnet ist, in eine entsprechende Paketadresse 445.
-
Es
ist zweckmäßig, dass
die Seiten, welche in der Seitentabelle 460 verwendet werden,
denjenigen entsprechen, die in dem Hauptspeichersystem zum Austauschen
von Seiten in den realen Speicher hinein und aus diesem heraus verwendet
werden (siehe Seite 308 in 4). Dies
ermöglicht
dann, dass die Hardware zum Identifizieren eines PTE 500, welcher
irgendeiner gegebenen Adresse entspricht, auf analoger Hardware
beruht, die schon in eine MMU 22 eingebaut bzw. integriert
ist. Wenn die Seitentabelle 460 auf standardmäßigen Seiteneinheiten be ruht,
so ermöglicht
dies der Hardwareübersetzungseinheit 440 in
der Tat generell, dass sie einfacher in die MMU 22 integriert
werden kann. Die Hardwareübersetzungseinheit 440 könnte stattdessen
auf einen Speicherabschnitt oder Segmenten beruhen, die in ihrer
Größe unterschiedlich
gegenüber
derjenigen ist, die durch das virtuelle Speichersystem verwendet
wird, wobei in diesem Fall jeder PTE 500 in der Tabelle 460 einem
relevanten Löschspeicherbereich
entsprechen würde
anstatt einer Seite (wie sie in dem virtuellen Speichersystem verwendet
wird).
-
5A veranschaulicht
die Verwendung der Hardwareübersetzungseinheit 440 zum
Abbilden von einer Anwendungsadresse 435 auf eine entsprechende
Paketadresse 445. Ein zusammenhängender Anwendungsadressraum 950,
der sich von Null an aufwärts
erstreckt, wird durch die Anwendung 520 aufgerufen. Insbesondere
zeigt 5A, dass die Anwendung 520 auf
die Adresse 956A in dem Bereich 951A des Anwendungsadressraumes 950 und
auf die Adresse 956B im Bereich 951B des Anwendungsadressraumes 950 zugreift.
(Man beachte, dass es aus der Sicht der Anwendung 520 keinen Unterschied
zwischen den Anwendungsadressräumen 951A und 951B gibt,
wobei der Grund für
deren getrennte Benennung in 5A nachstehend
noch deutlich werden wird).
-
Die
Adressen in dem Anwendungsadressraum 950 entsprechen nicht
direkt den Positionen bzw. Stellen der Daten (demnach ist dieser
Adressraum mit einer gestrichelten Umrahmung dargestellt). Stattdessen
müssen
diese Adressen an die Hardwareübersetzungseinheit 440 weitergeleitet werden,
die sie in entsprechende Adressen in dem Paketadressraum 960 umwandelt
(der sich in dieser speziellen Ausführungsform ebenfalls von Null
aus aufwärts
erstreckt). Die Adresse 956A in dem Anwendungsadressraum
wird also durch die Hardwareübersetzungseinheit 440 in
die Adresse 957A in dem Paketadressraum umgewandelt, während die
Adresse 956B in dem Anwendungsadressraum durch die Hardwareübersetzungseinheit 440 in
die Adresse 957B in dem Paketadressraum umgewandelt wird. Diese
Paketadressen geben die tatsächliche
Position der gewünschten
Daten im Speicher wieder (auch wenn eine Übersetzung von einer virtuellen
in eine reale Adresse durch das virtuelle Speichersystem möglicherweise
immer noch erforderlich ist).
-
Man
beachte, dass, auch wenn die Bereiche 951A und 951B in
dem Anwendungsadressraum 950 nebeneinander liegen, dies
nicht (notwendigerweise) in dem Paketadressraum 960 der
Fall ist. Der Bereich 951A in dem Anwendungsadressraum 950 wird
also auf den Bereich 961A in dem Paketadressraum abgebildet
und der Bereich 951B wird auf den Bereich 961B in
dem Paketadressraum abgebildet. Wie in 5A dargestellt,
können
die beiden Bereiche 961A und 961B in dem Paketadressraum
voneinander getrennt sein. Weiterhin ist der Datenbereich 961A und/oder 961B möglicherweise
nicht unbedingt entlang einer Wortgrenze in dem Paketadressraum 960 ausgerichtet,
was normalerweise eine unmittelbare Handhabung der Inhalte durch
die Anwendung 520 verhindern würde. Das Abbilden, welches
durch die Hardwareübersetzungseinheit
in den Anwendungsadressraum 950 bereitgestellt wird, stellt
jedoch sicher, dass sie in der Tat in angemessener Weise ausgerichtet
sind und auf diese Weise durch die Anwendung 520 einfach
gehandhabt werden können.
-
Die
Zuordnung von einem Anwendungsadressraum 950 auf einen
Paketadressraum 960 durch die Hardwareübersetzungseinheit 440 kann verwendet
werden, um einige der Probleme, die oben unter Bezug auf die Verarbeitung
eingehender Datenpakete diskutiert wurden, zu beseitigen bzw. zu erleichtern.
In diesem Zusammenhang kann die Anwendung 520 (beispielsweise)
die Schicht A 501A in einem Protokollstapel 505 repräsentieren
(siehe 1), an welche durch die nächste Schicht darunter (Schicht
B 501B) ein eingehendes Datenpaket weitergeleitet wird.
Das Vorhandensein der Hardwareübersetzungseinheit 440 ermöglicht es
der Schicht B, eine Anwendungsadresse für den Start eines Paketes an
die Schicht A (d.h. die Anwendung 520) weiterzuleiten.
Dies ermöglicht
es dann der Schicht A mit diesem Paket zu arbeiten als wäre es ein
kontinuierlicher Datenblock (im Anwendungsadressraum), trotz der
Tatsache, dass die Daten in diesem Paket tatsächlich in zwei oder mehr Bereiche
aufgeteilt sein können,
typischerweise auf Grund des Entfernens von Kopfabschnitten und/oder
wegen einer Paketkombination durch die Schicht B 501B (zuzüglich irgendwelcher
weiterer darunter liegender Schichten in dem Protokollstapel).
-
5A veranschaulicht
die besondere Situation, die zuvor in Bezug auf die 1A und 1B diskutiert
wurde, wobei eine Protokollschicht B die Kopfabschnitte AH 970 und
BH 971 zweier eingehender Pakete bereits abgestreift hat
und dann diese beiden Pakete zu einem einzigen Paket für die Handhabung
durch die Schicht A kombiniert hat. Die Hardwareübersetzungseinheit 440 ermöglicht es,
dass die Anwendung 520 auf die beiden Datenabschnitte 961A und 961B der
eingehenden Datenpakete als einzelner, zusammenhängender, entlang einer Wortgrenze
ausgerichteter Bereich des Anwendungsadressraums 950, mit
anderen Worten, also auf ein einzelnes Paket, zugreift wird. Dies
wird dadurch erreicht, dass die Hardwareübersetzungseinheit 440 die
erforderliche Zuordnung von dem Anwendungsadressraum 950 auf
den physikalischen Adressraum 960 (welcher der tatsächlichen
Konfiguration der Datenbereiche 961A und 961B in
dem Speicher entspricht) durchführt.
Man beachte, dass die Kopfabschnitte AH 970 und BH 971 für die Schicht
A von keinerlei Bedeutung sind und auf diese Weise nicht in diesem
Anwendungsadressraum 950 abgebildet werden.
-
Es
versteht sich, dass mit der vorliegenden Implementierung kein Bedarf
besteht, dass die Schicht B die verschiedenen Komponenten eines eingehenden
Paketes (wie zum Beispiel die Datenbereiche 961A und 961B)
zu einem einzigen, entlang einer Wortgrenze ausgerichteten Speicherbereich kopiert.
Stattdessen kann sie die Daten an ihren ursprünglichen Positionen in dem
Speicher belassen, die über
den Paketadressraum verstreut sein können und kann stattdessen eine
geeignete Zuordnung bzw. Abbildung für diese verschiedenen Positionen
in dem Anwendungsadressraum erzeugen. Diese Zuordnung bzw. Abbildung,
wie sie in die Hardwareübersetzungseinheit 440 eingeführt und
dann von dieser unterstützt
wird, erlaubt es, dass die Anwendung 520 (Schicht A) ein
Paket so behandelt, als wäre
es in der Tat in einen einzelnen Speicherblock kopiert worden. Mit
anderen Worten, die Hardwareübersetzungseinheit 440 emuliert
das Vorhandensein eines solchen einzigen, entlang einer Wortgrenze
ausgerichteten Paketes (dies ist für die Anwendung 520 transparent).
-
Die
Verwendung einer Abbildung von einer Anwendungsadresse auf eine
Paketadresse ermöglicht
daher, dass ein großer
Teil des Datenkopierens in einem Kommunikationsstapel beseitigt
bzw. eliminiert wird, und kann auf diese Weise eine beträchtliche
Steigerung der Leistungsfähigkeit
bereitstellen. Dies ist insbesondere deshalb der Fall, weil die Übersetzungseinheit 440 in
Hardware implementiert ist und so die relevante Zuordnung sehr schnell
durchgeführt
werden kann (analog zu der Übersetzung
von virtueller in realer Adresse in einem virtuellen Speichersystem).
Die mit der Zuordnung verknüpfte
Zusatzlast selbst kann minimal gehalten werden.
-
Die 6 und 6A veranschaulichen
Datenstrukturen für
die PTEs 500 in der Hardwareübersetzungseinheit 440 gemäß einer
Ausführungsform der
Erfindung. Ein PTE 500 enthält eine oder mehrere Beschreibungen 610.
Für die
spezielle Ausführungsform,
die in den 6 und 6A dargestellt ist,
beträgt
die maximale Anzahl an Beschreibungen, die innerhalb irgendeines
PTE 500 enthalten sein kann, vier). Es gibt zwei Typen
von Beschreibungen 610. Der erste Typ einer Beschreibung,
der als Übersetzungsbeschreibung
bezeichnet wird, gibt Einzelheiten einer Zuordnung bzw. Abbildung
zwischen einer Anwendungsadresse 435 und der entsprechenden
Paketadresse 445 wieder. Der andere Typ einer Beschreibung
ist eine Wiederholungsbeschreibung 611 bzw. eine Beschreibung 611 für einen
erneuten Versuch. Wie unten noch genau beschrieben wird, wird diese
verwendet, um anzuzeigen, dass es noch mehr Obersetzungen (d.h.
Beschreibungen) gibt, als sie in einem einzelnen PTE 500 gehalten
werden können
und die für
diese spezielle Seite erforderlich sind.
-
Man
betrachte zunächst 6,
welche veranschaulicht, dass ein PTE 500 zwei Übersetzungsbeschreibungen 610A und 610B enthält (da dies
weniger als die maximale Kapazität
eines einzelnen PTE 500 ist, sind keine Beschreibungen
für einen
erneuten Versuch erforderlich).
-
Jede Übersetzungsbeschreibung 610 gibt Einzelheiten über den
Abschnitt der Speicherseite wieder, auf welchen sie sich bezieht
(innerhalb der Seite, welche dem PTE 500 entspricht), und
die Zuordnung, die auf den betreffenden Abschnitt des Speichers
angewendet werden soll. Mit anderen Worten enthält eine Übersetzungsbeschreibung 610A eine
Zuordnung von einer Anwendungsadresse zu einer Paketadresse, die
für ihren
zugehörigen Speicherabschnitt
passend ist.
-
In
der Implementierung nach 6 hat jede Übersetzungsbeschreibung 610A, 610B drei
Einträge,
nämlich
den Versatz 620, die Größe 621 und
die Einstellung 622. Der Versatzeintrag 620 und
der Größeneintrag 621 werden
in Kombination miteinander verwendet, um die Anwendungsadresse zu
bestimmen, für
welche diese spezielle Beschreibung 610 gilt. Eine Beschreibung
ist demnach für
Anwendungsadressen relevant, die bei dem Wert beginnen, der durch
den Offset 620 gegeben ist, und die sich über einen
Bereich von Adressen erstrecken, welcher der Größe 621 entspricht.
Man beachte, dass der Versatz 620 typischerweise als ein
Versatz (Offset) in der relevanten Seite bereitgestellt wird (welche dem
PTE 500 entspricht), auch wenn er stattdessen auch als
eine vollständige
Anwendungsadresse bereitgestellt werden könnte. Es versteht sich außerdem,
dass es auch andere Möglichkeiten
gibt, die verwendet werden könnten,
um den Speicherbereich genau anzugeben, der durch eine bestimmte
Beschreibung abgedeckt wird, wie zum Beispiel durch Bereitstellen
von Stop- und Startgrenzwerten für
den relevanten Adressbereich.
-
Der
letzte Eintrag in der Beschreibung 610 ist die Einstellung 622.
Diese gibt den Wert wieder, der zu einer Anwendungsadresse addiert
werden muss, um sie in eine Paketadresse umzuwandeln. Man beachte,
dass ein einzelner Wert (pro Beschreibung) für die Einstellung 622 ausreichend
ist, wenn sowohl die Anwendungs- als auch die Paketadresse sich
in einem ebenen linearen Raum befinden, wie zum Beispiel bei standardmäßigen virtuellen
Adressen. Fachleute erkennen jedoch, dass kompliziertere Zuordnungen
oder Ausdrücke
für den
Einstellungseintrag 622 in anderen Ausführungsformen verwendet werden
können,
je nach der Art der Anwendungsadressen 635 und der Paketadressen 645,
mit denen man es zu tun hat.
-
6A veranschaulicht
die Situation, in welcher für
eine einzelne Seite fünf
verschiedene Zuordnungen von einer Anwendungsadresse 635 in
eine Paketadresse 645 vorliegen. Dementsprechend sind fünf Übersetzungsbeschreibungen
erforderlich, was mehr ist (in dieser speziellen Ausführungsform)
als innerhalb eines einzelnen PTE aufgenommen werden kann. Dementsprechend
wird eine Beschreibung 611 für einen erneuten Versuch verwendet,
die eine Verbindung von einem ersten PTE 500A zu einem zweiten
(damit zusammenhängenden)
PTE 500B bildet. Der erste PTE 500A enthält demnach
drei Übersetzungsbeschreibungen 610A, 610B und 610C,
zuzüglich
der Wiederholungsbeschreibung 611, was insgesamt vier Beschreibungen
(das Maximum) ergibt, während
der zweite PTE 500B die verbleibenden beiden Übersetzungsbeschreibungen 610D, 610E enthält. (Man
beachte, dass man PTE 500A und 500B als getrennt,
jedoch miteinander verbundene PTEs, die sich allesamt auf dieselbe
Seite beziehen, oder einfach als aufeinander folgende Reihen innerhalb
desselben PTE betrachten kann).
-
Eine
Wiederholungsbeschreibung 611 enthält zunächst irgendetwas, was anzeigt,
dass es sich um eine Wiederholungsbeschreibung und nicht um eine Übersetzungsbeschreibung
handelt. Jede Beschreibung kann zu diesem Zweck ein aus einem Bit bestehendes
Flag aufweisen. Eine weitere Möglichkeit
besteht darin, den Größeneintrag 631 einer Übersetzungsbeschreibung
zu verwenden und diesen Eintrag auf Null zu setzen, um eine Wiederholungsbeschreibung
anzuzeigen. Die Wiederholungsbeschreibung 611 enthält zum Zweiten
irgendeinen geeigneten Hinweis oder Zeiger für den Zugriff auf den nächsten,
verknüpften
PTE (beispielsweise in 6A enthält die Wiederholungsbeschreibung 610Z einen
Hinweis bzw. eine Kennung, die einen Zugriff auf den PTE 500B ermöglicht).
-
Es
versteht sich, dass, auch wenn 6A nur
zwei PTEs für
eine gegebene Seite zeigt, weitere damit verknüpfte PTEs vorhanden sein können, wenn
die Anzahl von Übersetzungsbeschreibungen, die
für eine
Seite aufzunehmen sind, ausreichend groß ist (in dieser Implementierung
mehr als sieben). Selbstverständlich
kann die maximale Anzahl an Beschreibungen pro PTE von einer Ausführungsform
zu einer anderen variieren und sie kann je nach den jeweiligen Umständen größer oder
kleiner als vier sein. Demnach ist es üblicherweise schneller, die
Beschreibungen für
eine bestimmte Adresse zu durchsuchen, wenn sie sich alle in derselben
PTE befinden (anstatt in einer Hierarchie miteinander verbundener PTEs).
Das Erhöhen
der maximal möglichen
Anzahl von Beschreibungen innerhalb eines einzelnen PTE (und damit
das Verringern der Tiefe der Hierarchie) vergrößert die Komplexität der Hardware
und der Kosten, indem beispielsweise mehr Zeilen zum Speichern der
Beschreibungen einem inhaltsadressierbaren Speicher hinzugefügt werden
müssen.
Im Allgemeinen ist es zweckmäßig, die
maximale Anzahl an Beschreibungen pro PTE (Reihe) so einzustellen, dass
alle Beschreibungen für
eine typische Seite innerhalb eines einzelnen PTE aufgenommen werden können. Unter
diesen Umständen
werden Wiederholungsbeschreibungen dann nur für diejenigen Seiten verwendet,
die eine relativ große
Anzahl von Beschreibungen haben.
-
In
einer Ausführungsform
ermöglichen
die Versatz-, Größen- und
Einstellungseinträge
in einer Beschreibung 610 Speicherzuordnungen mit einer Feinheit
bzw. Granularität
von einem Byte. Dies ermöglicht
dann, dass ein Datenblock, welcher nicht entlang einer Wortgrenze
ausgerichtet ist, auf einem Datenblock abgebildet wird (d.h. eine
Anwendungsadresse hat), der nicht ent lang einer Wortgrenze ausgerichtet
ist. Es ermöglicht
auch, dass Teile des Speichers, die eine Größe von nur einem Byte haben,
ihre eigenen individuellen Zuordnungen haben. Mit anderen Worten,
drei aufeinander folgende Bytes in dem Anwendungsadressraum 950 können auf
drei nicht zusammenhängende
(d.h. nicht nebeneinander liegende) individuelle Bytes in dem Paketadressraum 960 zugeordnet
werden.
-
7 zeigt
ein Flussdiagramm eines Vorganges zum Verwenden der Hardwareübersetzungseinheit 440 für das Umwandeln
von einer Anwendungsadresse 435 in eine Paketadresse 445 gemäß einer
Ausführungsform
der Erfindung. Die Prozedur beginnt damit, dass eine Anwendungsadresse
empfangen wird, die abgebildet werden soll (Schritt 710). Als
Nächstes
wird die Seite, welche die umzuwandelnde Anwendungsadresse enthält, identifiziert,
und dann wird auf den entsprechenden PTE für diese Seite zugegriffen (Schritt 720).
Methoden für
das Zuordnen des relevanten PTE sind im Stand der Technik wohl bekannt,
wie zum Beispiel von dem Betrieb virtueller Speichersysteme (beispielsweise
kann die Anwendungsadresse 435 gekappt sein, um einen Index
in die Seitentabelle 460 festzulegen). Man beachte, dass,
falls es eine verknüpfte
Liste von PTEs für
irgendeine gegebene Seite gibt, wie zum Beispiel PTE 500A und 500B in 6A)
man dann nur nach dem PTE am Beginn der Liste suchen muss, d.h.
auf die PTEs niedrigerer Ebene, wie zum Beispiel 500B, wird
nicht direkt zugegriffen, sondern nur über den am weitesten oben liegenden
PTE für
die Seite.
-
Wenn
der (am weitesten oben liegende) PTE 500 für die Seite,
welche die umzuwandelnde Anwendungsadresse 435 enthält, lokalisiert
ist, bestimmt der Übersetzungsprozess
nunmehr die betreffende Beschreibung 610 innerhalb dieses
PTE, welche der Anwendungsadresse 435 entspricht (Schritt 730).
Dies umfasst das Zugreifen auf die Beschreibungen von dem PTE 500 und
insbesondere das Untersuchen der Versatz- 630 und Größen- 631 -einträge für jede Übersetzungsbeschreibung,
um festzustellen, ob sie die umzuwandelnde Anwendungsadresse 435 umfassen
oder nicht. Man beachte, dass eine typische Hardwareimplementierung
der Adressübersetzungseinheit 440 auf
einem inhaltadressierbaren Speicher (CAM) beruht. Dies ermöglicht dann,
dass die in Rede stehende Anwendungsadresse 435 gleichzeitig
im Vergleich zu allen Übersetzungsbeschreibungen überprüft wird
(statt dass auf die Übersetzungsbeschreibungen
individuell bzw. einzeln zugegriffen wird).
-
Wenn
eine Übersetzungsbeschreibung
gefunden wird, welche die abzubildende Adresse umfasst (Schritt 740),
so kann die Einstellung 632, die zu dieser Beschreibung
gehört,
verwendet werden, um die gewünschte
Adressübersetzung
durchzuführen (Schritt 760).
Die Einstellung 632 wird zu der eingegebenen Anwendungsadresse 435 addiert,
um die auszugebende Paketadresse 445 zu bestimmen (Schritt 770).
-
Wenn
jedoch keine passende Übersetzungsbeschreibung
gefunden wird, so wird ein Test durchgeführt, um festzustellen, ob es
in dem PTE eine Wiederholungsbeschreibung 611 gibt (Schritt 445).
Angenommen, dass dies in der Tat der Fall ist, so wird auf den nächsten Satz
von Beschreibungen für
diese Seite zugegriffen (Schritt 750), d.h. auf diejenigen Beschreibungen
in der nächsten
Schicht bzw. Ebene unterhalb der PTE-Hierarchie für diese
Seite (dies entspricht dem Voranschreiten von dem PTE 500A zum
PTE 500B in 6A). Die Verarbeitung geht nun
in einer Schleife zurück
zu Schritt 730, wo ein Versuch durchgeführt wird, um eine passende Übersetzungsbeschreibung
in den neu geladenen Beschreibungen zu lokalisieren, und fährt dann
fort, wie bereits beschrieben. Auf diese Weise kann man in der Hierarchie
der miteinander verbundenen PTEs herabschreiten, bis schließlich die
relevante Übersetzungsbeschreibung
lokalisiert ist.
-
Gemäß Schritt 745 ist
möglicherweise
keine Beschreibung für
einen erneuten Versuch (Wiederholungsbeschreibung) vorhanden, wie
es beispielsweise in 6 dargestellt ist, wenn die
Anwendungsadresse nicht innerhalb des Bereiches liegt, der in einer
der beiden Übersetzungsbeschreibungen 610A und 610B eingetragen
ist. Weiterhin kann in einigen Implementierungen eine Wiederholungsbeschreibung 611 einen
zugehörigen
Adressbereich haben und Schritt 745 würde dann zu einem negativen
Testergebnis führen,
wenn die umzuwandelnde Anwendungsadresse außerhalb dieses Bereiches fällt. (Mit diesem
Ansatz müsste
der Adressbereich für
eine Wiederholungsbeschreibung einen Supersatz bilden, welcher die
Adressbereiche aller in der Hierarchie darunter liegenden Übersetzungsbeschreibungen umfasst).
-
Ein
negatives Ergebnis aus Schritt 745 zeigt an, dass keine
besondere Abbildung für
die Anwendungsadresse 435 in dem (den) PTE(s) verfügbar ist. Abhängig von
der Implementierung kann dies eine Fehlersituation wiedergeben oder
kann einfach implizieren, dass keine Umwandlung von der Anwendungsadresse
erforderlich ist (d.h. die Paketadresse 445 ist dieselbe
wie die Anwendungsadresse 435), und die Verarbeitung wird
daher entsprechend fortgesetzt (Schritt 780).
-
8 veranschaulicht
im Einzelnen die Verwendung von PTEs für das Abbilden von dem Anwendungsadressraum 950 in
den Paketadressraum 960. Insbesondere ist ein Datenpaket 815 dargestellt,
welches sechs Abschnitte 810 (A1, A2, B1, B2, C1, C2) aufweist.
Auf das Datenpaket 815 kann in dem Anwendungsadressraum 950 wie
auf einen entlang einer Wortgrenze ausgerichteten, zusammenhängenden
Strang des Speichers zugegriffen werden, welcher von Seite N bis
in Seite N + 1 hineinreicht. Mit anderen Worten, die Teilung des
Datenpaketes 815 in sechs Abschnitte ist in dem Anwendungsadressraum
transparent. Wenn wir jedoch den Paketadress raum 960 betrachten,
können
wir erkennen, dass die sechs Abschnitte 810 in dem Paketadressraum 960 nicht
zusammenhängend
angeordnet sind (und dies wird als Wiedergabe der zu Grunde liegenden
physikalischen Speicherpositionen der unterschiedlichen Abschnitte
angenommen). Darüber
hinaus sind nicht alle Sektionen 810 notwendigerweise in
dem physikalischen Adressraum 960 entlang einer Wortgrenze
ausgerichtet. (Es ist außerdem
möglich, dass
die Abschnitte 810 in ihrer Größe voneinander abweichen, statt
dass alle dieselbe Größe haben,
wie es in 8 dargestellt ist).
-
8 zeigt
auch die in der Hardwareübersetzungseinheit 440 enthaltenen
PTEs 500, um eine Anwendungsadresse 435 innerhalb
des Datenpaketes 815 auf ihre zugehörige Paketadresse 445 abzubilden.
Genauer gesagt gibt es zwei PTEs 500A, 500B, welche
der Seite N entsprechen (im Anwendungsadressraum 950) und
einen PTE 501, welcher der Seite N + 1 entspricht. Man
beachte, dass die PTEs 500A und 500B eine verknüpfte Liste
bilden, und dass sie als mehrere Reihen eines einzelnen Gesamt-PTE
für die
Seite N betrachtet werden könnten.
-
PTE 500A enthält vier
Beschreibungen 610 (in dieser Ausführungsform das maximal Mögliche), nämlich drei Übersetzungsbeschreibungen 610A, 610B, 610C und
eine Wiederholungsbeschreibung 610D. Diese Wiederholungsbeschreibung
enthält
einen Hinweis 819 auf den zugehörigen PTE 500B für diese
Seite, welcher zwei weitere Übersetzungsbeschreibungen 610E, 610F für die Seite
N enthält.
Der PTE 501 enthält
nur zwei Übersetzungsbeschreibungen 610G, 610H,
da nicht mehr erforderlich sind, um die Zuordnungen der Seite N
+ 1 wiederzugeben.
-
Jede Übersetzungsbeschreibung
enthält
einen Versatz (O), eine Größe (S) und
eine Einstellung (A). Wie zuvor in Bezug auf die 6 und 6A erläutert wurde,
definieren der Versatz und die Größe gemeinsam den (Anwendungs-)Adressraum,
auf welchen die betreffende Beschreibung sich bezieht. Mit anderen
Worten, jede Beschreibung gilt für
den Adressbereich O → O
+ S – 1
(wobei eine Adresse als ein Versatz in der relevanten Seite wiedergegeben wird).
Beispielsweise wird in 8 angenommen, dass jede Seite
einen Adressbereich von 0 bis 17 hat. Der Abschnitt A1 entspricht
dem Adressbereich 0-3 (auf Seite N) und dementsprechend hat seine
zugehörige Übersetzungsbeschreibung 610A die
Werte O = 0, S = 4. Der Abschnitt B1 entspricht dem Adressbereich
8–11 und
dementsprechend hat seine zugehörige Übersetzungsbeschreibung
(610C) die Werte O = 8, S = 4. Demnach wird jegliche Anwendungsadresse
innerhalb A1 durch die Übersetzungsbeschreibung 610A abgebildet
bzw. zugeordnet und jede Anwendungsadresse innerhalb B1 wird zugeordnet
durch die Übersetzungsbeschreibung 610C.
-
Der
Abschnitt C1 reicht über
eine Seitengrenze in dem Anwendungsadressraum 950 hinweg. Dementsprechend
hat er zwei zugehörige Übersetzungsbeschreibungen.
Die erste dieser Ü bersetzungsbeschreibungen 610F bildet
den Abschnitt C1 auf die Seite N ab und es wird darauf entsprechend über PTE 500A (und
PTE 500B) zugegriffen, die zweite Übersetzungsbeschreibung 610G bildet
den Abschnitt von C1 auf die Seite N + 1 ab und dementsprechend
wird darauf über
PTE 501 zugegriffen. Man beachte, dass für diese
beiden Übersetzungsbeschreibungen 610F und 610G S
= 2 ist, da sie jeweils nur einer Hälfte des Abschnittes C1 entsprechen.
-
Der
Einstellwert (A) in jeder Übersetzungsbeschreibung
bildet von der Anwendungsadresse 435 auf die Paketadresse 445 für diesen
Speicherteil ab. Insbesondere kann die Paketadresse 445 bestimmt
werden, indem der Einstellwert (A) der Anwendungsadresse 435 hinzuaddiert
wird. Beispielsweise hat der Abschnitt A1 eine Anwendungsstartadresse,
welche äquivalent
zu Seite = N, Versatz = 0 ist und auf eine Paketstartadresse abbildet,
die äquivalent
zu Seite = N, Versatz = 1 (d.h. O + A) ist. Der Abschnitt C1 hat
eine Anwendungsstartadresse, welche äquivalent zu Seite = N, Versatz
= 12 ist, und bildet auf eine Paketstartadresse ab, die äquivalent
zu Seite = N, Versatz = 20 ist (was zufällig auf Seite N + 1 liegt).
-
Man
erkennt anhand von 8, dass ein Bereich des Speichers
von einer Seite in dem Anwendungsadressraum 950 auf eine
andere Seite in dem Paketadressraum 960 abgebildet werden
kann. Darüber
hinaus können
zwei Bereiche des Speichers auf derselben Seite in dem Anwendungsadressraum 950 unterschiedliche
Zuordnungen zu ihren jeweiligen Abschnitten des Paketadressraumes 960 haben. Weiterhin
kann die Reihenfolge der Abschnitte in dem Paketadressraum umgekehrt
sein (im Vergleich zu der in den Anwendungsadressraum), und die Speicherbereiche
können
durch einen kleineren oder größeren Betrag
an Adressraum voneinander getrennt sein (d.h. durch nur einen Teil
einer Seite oder durch viele Seiten).
-
Die
Zuordnung von dem Anwendungsadressraum 950 in den Paketadressraum 960,
die in 8 dargestellt ist, kann typischerweise auftreten, wenn
eingehende Kommunikationspakete von einer Protokollschicht herauf
zu einer weiteren weitergeleitet werden, ohne jedoch die Daten zu
kopieren, während
sie zwischen den Schichten geleitet werden. Die Situation ist in 9 dargestellt,
welche drei Reihen von Datenpaketen zeigt. Die oberste Reihe veranschaulicht
die Speicherung von zwei eingehenden Paketen im Paketadressraum 960.
Wir nehmen an, dass das erste Paket den Paketadressbereich 0–7 besetzt,
und dass das zweite Paket den Paketadressbereich 12–19 besetzt.
Jedes Paket weist einen Kopfabschnitt von Schicht A, einen Kopfabschnitt von
Schicht B, die jeweils eine Einheit des Adressbereiches besetzen,
und einen Datenabschnitt 991A, 991B auf, was sechs
Einheiten des Adressraumes besetzt.
-
Es
sei angenommen, dass die beiden Pakete in der Schicht B empfangen
werden, welche die beiden Kopfabschnitte B abstreift. Man beachte,
dass dies nicht die zu Grunde liegende Spei cherung der Pakete im
Paketadressraum 960 betrifft, so dass die oberste Reihe
nach 9 gültig
bleibt. Die Schicht B erzeugt nunmehr Darstellungen bzw. Repräsentationen
dieser beiden Pakete in ihrem Anwendungsadressraum 950B,
wo der Kopfabschnitt B fortgelassen wird. Typischerweise könnten die
beiden Pakete nunmehr im Adressbereich 0–6 und 12–18 in dem Anwendungsadressraum 950B angeordnet
werden, wie es in der zweiten Reihe von 9 dargestellt
ist. Die beiden Pakete werden nunmehr an die Schicht A weitergeleitet,
welche die Kopfabschnitte A abstreift. Die Schicht A setzt dann
die beiden Pakete zu einem einzigen Paket wieder zusammen, welches
Daten 991A und 991B aufweist. Die Schicht A könnte typischerweise
dieses einzelne Paket in dem Adressbereich 0–11 in ihrem eigenen Anwendungsadressraum 950A anordnen,
wie es in 9 dargestellt ist.
-
10 stellt
ein Flussdiagramm bereit, welches die mit der Verarbeitung eingehender
Datenpakete verbundenen Operationen zeigt, um die Adressmanipulation,
wie sie in 9 dargestellt ist, durchzuführen. Eine
Anwendungsadresse für
ein oder mehrere eingehende Pakete wird demnach von einer Protokollschicht
empfangen (Schritt 1010), welche dann die zu dieser Schicht
gehörige
Verarbeitung durchführt
(Schritt 1020). Wie zuvor bereits erläutert, umfasst dies typischerweise
auch das Abstreifen von Protokoll-Kopfabschnitten und/oder Anhängen, ebenso
wie das Kombinieren von zwei oder mehr kleineren Paketen zu einem
größeren Paket.
-
Die
Protokollschicht muss nun die Zuordnung von Anwendungsadresse 950 in
die Paketadresse 960 aktualisieren, um die in Schritt 1020 durchgeführte Verarbeitung
zu berücksichtigen.
(Dies ist ein Unterschied dazu, dass man die Daten kopieren muss,
um eine vollständige
neue Kopie des Datenpakets bzw. der Datenpakete zu erzeugen). Beispielsweise
muss die Schicht B in 9 zwei Übersetzungsbeschreibungen erzeugen.
Die erste bildet von einer Anwendungsadresse 0–6 auf eine Paketadresse 1–7 ab, die
zweite hat Einträge
O = 0, S = 7, A = 1, während
die zweite Übersetzungsbeschreibung Einträge O = 12,
S = 7, A = 1 hat. (Man beachte, dass, auch wenn in beiden Übersetzungsbeschreibungen dieselbe
Einstellung vorliegt, es nicht zweckmäßig wäre, eine einzige Übersetzungsbeschreibung
zu verwenden, welche den Adressbereich 0–18 abdeckt, da die Zuordnung
des Anwendungsadressbereiches 7–11
für die
vorliegenden Zwecke unbestimmt ist).
-
Wenn
wir nun die Aktion der Schicht A in Schritt 1030 betrachten,
wenn diese Schicht die Zuordnungen in der Hardwareübersetzungseinheit 440 aktualisiert,
so muss sie existierende Zuordnungen (d.h. wie sie durch die Schicht
B erzeugt wurden) zuzüglich
ihrer eigenen Operationen erlauben. In der in 9 dargestellten
Situation kann die Schicht A feststellen bzw. bestimmen, dass zwei Übersetzungsbeschreibungen
erneut erzeugt werden müssen.
Die erste derselben ordnet von einem Anwendungsadressbereich 0–5 auf den
Paketadressbereich 2–7 zu,
während
die zweite eine Abbildung von dem Anwendungsadressbereich 6–11 auf
den Paketadressbereich 14–19
abbildet. Die Übersetzungsbeschreibung
hat demnach Einträge
O = 0, S = 6, A = 2, während
die zweite Übersetzungsbeschreibung
Einträge O
= 6, S = 6, A = 8 hat.
-
Wiederum
gemäß dem Flussdiagramm
nach 10 kann, wenn die Hardwareübersetzungseinheit mit den
passenden Zuordnungen aktualisiert worden ist, die betreffende Schicht
das Paket zu der nächsten
Schicht in dem Protokollstapel weiterleiten (Schritt 1040),
und zwar über
einen Aufruf in dem relevanten Adressraum. Die Schicht B leitet
also der Schicht A einen Aufruf bzw. Hinweis auf ein Paket in dem
Anwendungsadressraum 950B zu, während die Schicht A einen Aufruf
bzw. Hinweis auf das Paket in dem Anwendungsadressraum 950 weiterleitet.
Dieses ermöglicht
damit, dass die Empfangsschicht, oder das Programm das eingehende
Paket als einen einzigen Block zusammenhängender Daten behandelt, trotz
der Tatsache, dass der zu Grunde liegende Speicher der Daten deutlich
verschieden hiervon sein kann (wie es durch den Paketadressraum 960 angezeigt
wird).
-
Es
versteht sich, dass es viele Variationen der besonderen Ausführungsformen
gibt, die oben beschrieben wurden. Beispielsweise kennt der Fachmann,
auch wenn eine bestimmte Form einer Seitentabelle verwendet wurde,
um Adresszuordnungen auf der Basis einer Hierarchie von Beschreibungen durchzuführen, eine
Vielfalt anderer Datenstrukturen, die für diesen Zweck angepasst werden
könnten,
wie zum Beispiel eine allgemeine Nachschlagetabelle, irgendeine
geeignete Form einer Datenbank, wie zum Beispiel ein Binärbaum, etc.
Während
es normalerweise vorteilhaft ist, wenn die Adressübersetzungseinheit
in Hardware implementiert ist, um die Geschwindigkeit zu vergrößern, ist
auch eine Softwareimplementierung möglich. Weiterhin versteht es
sich, dass, auch wenn die Ausführungsformen
in Kontext eines Computers beschrieben wurden, der ein auf Seiten
basierendes virtuelles Speichersystem hat, dass auch andere Ausführungsformen
entwickelt werden können,
die kein virtuelles Speichersystem haben.
-
Daher
ist im Ergebnis eine Vielfalt besonderer Ausführungsformen hier im Einzelnen
beschrieben worden, jedoch versteht es sich, dass dieses nur beispielhaft
geschehen ist. Fachleute kennen viele weitere potenzielle Modifikationen
und Anpassungen, die in den Schutzumfang der beanspruchten Erfindung
und ihrer Äquivalente
fallen.