DE60311462T2 - Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen - Google Patents

Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen Download PDF

Info

Publication number
DE60311462T2
DE60311462T2 DE60311462T DE60311462T DE60311462T2 DE 60311462 T2 DE60311462 T2 DE 60311462T2 DE 60311462 T DE60311462 T DE 60311462T DE 60311462 T DE60311462 T DE 60311462T DE 60311462 T2 DE60311462 T2 DE 60311462T2
Authority
DE
Germany
Prior art keywords
address
translation
layer
application
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60311462T
Other languages
English (en)
Other versions
DE60311462D1 (de
Inventor
Jeremy G. Harris
David M. Edmondson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60311462D1 publication Critical patent/DE60311462D1/de
Publication of DE60311462T2 publication Critical patent/DE60311462T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Description

  • 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.

Claims (21)

  1. Adreßübersetzungseinheit (440) für die Verwendung in einem Computersystem (10), welche aufweist: einen Satz von Übersetzungstabelleneinträgen (500A, 500B) zum Zuordnen einer Anwendungsadresse (435) zu einer Paketadresse (445), wobei jeder Eintrag der Übersetzungstabelle einem Speicherblock entspricht, und mehrere Spezifikationssymbole ((610A, 610B), die in einem Übersetzungstabelleneintrag für einen Speicherblock enthalten sind, wobei jedes Spezifikationssymbol sich auf einen anderen Abschnitt des Speicherblockes und eine Zuordnung von den Anwendungsadressen in diesem Abschnitt des Speicherblockes zu deren entsprechenden Paketadressen bezieht.
  2. Adreßübersetzungseinheit nach Anspruch 1, wobei die Anwendungsadresse als eine virtuelle Adresse dargeboten wird.
  3. Adreßübersetzungseinheit nach Anspruch 2, wobei die Paketadresse als eine virtuelle Adresse dargeboten wird.
  4. Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, wobei ein Speicherblock, der einem Eintrag der Übersetzungstabelle entspricht, eine Seite des Speichers aufweist.
  5. Adreßübersetzungseinheit nach Anspruch 4, wobei zusammenhängende Anwendungsadressen innerhalb derselben Seite eines Speichers nicht zusammenhängenden Paketadressen zugeordnet sein können.
  6. Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, wobei ein Spezifikationssymbol eine Anwendungsadresse zu einer entsprechenden Paketadresse zuordnet, indem zwischen den beiden ein Versatz bereitgestellt wird.
  7. Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, wobei jedes Spezifikationssymbol Grenzwerte enthält, die den Speicherabschnitt definieren, auf welchen sich das Spezifikationssymbol bezieht.
  8. Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, wobei die Spezifikationssymbole in dem Eintrag einer Übersetzungstabelle eine hierarchische Anordnung haben und wobei ein Spezifikationssymbol (611) für einen erneuten Versuch so definiert ist, daß es auf ein niedrigeres Niveau in der Hierarchie zugreift.
  9. Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, wobei jeder Eintrag der Übersetzungstabelle einen oder mehrere Spezifikationssymbole für die Übersetzung und kein oder ein Spezifikationssymbol für einen erneuten Versuch aufweist, wobei ein Spezifikationssymbol für eine Übersetzung eine Zuordnung zwischen einer Anwendungsadresse und einer Gateadresse für einen entsprechenden Speicherabschnitt definiert und ein Spezifikationssymbol für den erneuten Versuch auf einen weiteren Eintrag der Übersetzungstabelle für diesen Speicherblock verweist.
  10. Adreßübersetzungseinheit nach Anspruch 9, wobei das eine oder die mehreren Spezifikationssymbole für die Übersetzung und keines oder das eine Spezifikationssymbol für einen erneuten Versuch für den Eintrag einer Übersetzungstabelle in einem inhaltsadressierbaren bzw. über den Inhalt zugänglichen Speicher gespeichert sind.
  11. Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, wobei die unterschiedlichen Abschnitte des Speichers kleinste Einheiten (eine Granularität) von einem Byte haben.
  12. Speicherverwaltungseinheit für ein Computersystem zum Übersetzen zwischen virtuellen und realen Adressen, wobei die Speicherverwaltungseinheit die Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche aufweist.
  13. Computersystem, welches aufweist: eine Adreßübersetzungseinheit nach einem der vorstehenden Ansprüche, und einen Kommunikationsstapel (505), der eine Mehrzahl von Schichten aufweist, wobei die Adreßübersetzungseinheit eine Konvertierung zwischen einer Anwendungsadresse, die in einer höheren Schicht des Kommunikationsstapels verwendet wird, und einer Paketadresse vornimmt, die in einer tieferen Schicht des Kommunikationsstapels verwendet wird.
  14. Verfahren zum Betreiben einer Adreßübersetzungseinheit (440) in einem Computersystem (10), wobei das Verfahren aufweist: Bereitstellen eines Satzes von Einträgen (500A, 500B) einer Übersetzungstabelle, wobei jeder Übersetzungstabelleneintrag einem Speicherblock entspricht und Anwendungsadressen (435) zu Paketadressen (445) für den entsprechenden Speicherblock zuordnet, und Zugreifen auf eines von mehreren Spezifikationssymbolen (610A, 610B) innerhalb jedes Übersetzungstabelleneintrages, wobei jedes Spezifikationssymbol sich auf einen anderen Abschnitt des Speicherblockes bezieht, welcher dem relevanten Übersetzungstabelleneintrag entspricht, und Anwendungsadressen in diesem Abschnitt des Speicherblockes auf deren entsprechende Paketadressen abbildet bzw. diesen zuordnet.
  15. Verfahren nach Anspruch 14, wobei jeder Übersetzungstabelleneintrag eines oder mehrere Spezifikationssymbole der Übersetzung aufweist, sowie kein oder ein Spezifikationssymbol (611) eines erneuten Versuchs aufweist, wobei ein Spezifikationssymbol der Übersetzung eine Zuordnung zwischen Anwendungsadressen und Paketadressen für einen entsprechenden Speicherbereich definiert, und ein Spezifikationssymbol für einen erneuten Versuch auf einen weiteren Übersetzungstabelleneintrag für diesen Speicherblock hinweist.
  16. Verfahren nach Anspruch 15, wobei das Zugreifen auf ein Spezifikationssymbol innerhalb des betreffenden Übersetzungstabelleneintrages aufweist: (a) Suchen des einen oder der mehreren Spezifikationssymbole für die Übersetzung für den Übersetzungstabelleneintrag, um ein Spezifikationssymbol der Übersetzung zu lokalisieren, welcher der Anwendungsadresse entspricht, (b) wenn ein Spezifikationssymbol der Übersetzung entsprechend der Anwendungsadresse angeordnet ist, Verwenden der Abbildung bzw. Zuordnung in diesem Spezifikationssymbol, um die Übersetzung von einer Anwendungsadresse zu einer Paketadresse durchzuführen, (c) wenn das Spezifikationssymbol der Übersetzung nicht entsprechend der Anwendungsadresse angeordnet ist, Suchen nach einem Spezifikationssymbol für einen erneuten Versuch, (d) falls ein Spezifikationssymbol für einen erneuten Versuch gefunden wird, Zugreifen auf einen Eintrag der Übersetzungstabelle, welcher durch das Spezifikationssymbol für den erneuten Versuch identifiziert wird, und (e) Zurückkehren zu Schritt (a), um die Spezifikationssymbole in dem Übersetzungstabelleneintrag zu suchen, auf welchen neu zugegriffen wurde, bis die Zuordnung abgeschlossen ist.
  17. Verfahren nach einem der Ansprüche 14 bis 16, welches weiterhin aufweist: Empfangen einer Anwendungsadresse, Festlegen eines Übersetzungstabelleneintrags, welcher einem Speicherblock entspricht, der zu der Anwendungsadresse gehört. Lokalisieren eines Spezifikationssymbols innerhalb des Übersetzungstabelleneintrags, welches einem Speicherbereich entspricht, der zu der Anwendungsadresse gehört, und Verwenden von Zuordnungsinformation innerhalb des lokalisierten Spezifikationssymbols, um die Anwendungsadresse der entsprechenden Paketadresse zuzuordnen.
  18. Verfahren nach Anspruch 17, wobei die Anwendungsadresse durch eine zweite Schicht in einem Protokollstapel von einer ersten Schicht in einem Protokollstapel aus empfangen wird und eines oder mehrere eingehende Datenpakete repräsentiert, die in dem Protokollstapel heraufgereicht werden, wobei das Verfahren weiterhin aufweist, daß die erste Schicht: das eine oder die mehreren eingehenden Datenpakete verarbeitet, um Header(Kopfzeilen)-Information abzustreifen, die zu der ersten Schicht gehört, Übersetzungstabelleneinträge aktualisiert, die zu dem einen oder mehreren eingehenden Datenpaketen gehören, um die abgestreifte Header-Information wiederzugeben, und eine Anwendungsadresse für das eine oder die mehreren eingehenden Datenpakete an die zweite Schicht in dem Protokollstapel weiterleitet.
  19. Verfahren nach Anspruch 18, wobei die zweite Schicht die von der ersten Schicht empfangene Anwendungsadresse verwendet, um auf einen einzigen zusammenhängenden Adreßbereich in dem einen oder den mehreren eingehenden Datenpaketen zuzugreifen, welche durch die erste Schicht verarbeitet werden, ungeachtet der Tatsache, daß das eine oder die mehreren eingehenden Datenpakete nicht in einen zusammenhängenden Speicherblock kopiert wurden.
  20. Verfahren nach Anspruch 18 oder 19, welches weiterhin aufweist, daß die erste Schicht das Aktualisieren der Übersetzungstabelleneinträge aufweist, die zu dem einen oder den mehreren eingehenden Datenpaketen gehören, um eine Kombination von zwei oder mehr eingehenden Datenpaketen zu einem einzelnen Datenpaket wiederzugeben, welches an die zweite Schicht weiterzuleiten ist.
  21. Verfahren zum Handhaben eingehender Datenpakete in einem Stapel eines Kommunikationsprotokolls, welcher zumindest eine erste Schicht und eine zweite Schicht aufweist, wobei das Verfahren aufweist: Empfangen eines oder mehrere eingehender Datenpakete in der ersten Schicht, Verarbeiten des einen oder der mehreren eingehenden Datenpakete in der ersten Schicht, um Header-Information, die zu der ersten Schicht gehört, abzustreifen, Betreiben einer Adreßübersetzungseinheit gemäß dem Verfahren nach einem der Ansprüche 14 bis 20, wobei der Zugriff ausgeführt wird, um die abgestreifte Kopfheader-Information wiederzugeben, und Weiterleiten einer Anwendungsadresse für das eine oder die mehreren eingehenden Datenpakete an die zweite Schicht in dem Protokollstapel.
DE60311462T 2003-09-19 2003-09-19 Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen Expired - Lifetime DE60311462T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP03255879A EP1517504B1 (de) 2003-09-19 2003-09-19 Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen

Publications (2)

Publication Number Publication Date
DE60311462D1 DE60311462D1 (de) 2007-03-15
DE60311462T2 true DE60311462T2 (de) 2008-01-03

Family

ID=34178614

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60311462T Expired - Lifetime DE60311462T2 (de) 2003-09-19 2003-09-19 Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen

Country Status (3)

Country Link
US (1) US7356667B2 (de)
EP (1) EP1517504B1 (de)
DE (1) DE60311462T2 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075142A1 (en) * 2004-09-29 2006-04-06 Linden Cornett Storing packet headers
US7444493B2 (en) * 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
KR20070116893A (ko) * 2005-03-30 2007-12-11 웰치알린인코포레이티드 복수의 네트워크 엘리먼트 사이의 정보 통신
US8024421B2 (en) * 2006-03-30 2011-09-20 Welch Allyn, Inc. Device data sheets and data dictionaries for a dynamic medical object information base
US8103851B2 (en) * 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8117417B2 (en) * 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8214566B2 (en) * 2009-07-24 2012-07-03 Welch Allyn, Inc. Configurable health-care equipment apparatus
USD635681S1 (en) 2010-07-22 2011-04-05 Welch Allyn, Inc. Patient-monitor housing
USD632397S1 (en) 2010-07-22 2011-02-08 Welch Allyn, Inc. Portions of a patient-monitor housing
USD671222S1 (en) 2010-07-22 2012-11-20 Welch Allyn, Inc. Module for a patient-monitor or the like
US9158701B2 (en) 2012-07-03 2015-10-13 International Business Machines Corporation Process-specific views of large frame pages with variable granularity
US9065844B1 (en) * 2013-05-22 2015-06-23 Sprint Spectrum L.P. Method and apparatus for managing sequential processing of messages
US10162525B2 (en) * 2015-09-11 2018-12-25 Red Hat Israel, Ltd. Translating access requests for a multi-level page data structure
US10467159B2 (en) * 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10534719B2 (en) * 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK374889D0 (da) * 1989-07-28 1989-07-28 Koege Kemisk Vaerk Fremgangsmaade til procesovervaagning
US5426747A (en) * 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5386524A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation System for accessing information in a data processing system
US5856974A (en) * 1996-02-13 1999-01-05 Novell, Inc. Internetwork address mapping gateway
US6301646B1 (en) * 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
US6330654B1 (en) * 1999-08-26 2001-12-11 Micron Technology, Inc. Memory cache with sequential page indicators
US7032027B1 (en) * 2000-10-13 2006-04-18 Lucent Technologies Inc. Method of processing nested message layers
EP1358563A1 (de) * 2001-01-31 2003-11-05 International Business Machines Corporation Verfahren und vorrichtung zur steuerung des datenflusses zwischen datenverarbeitungssystemen über einen speicher
US6665788B1 (en) * 2001-07-13 2003-12-16 Advanced Micro Devices, Inc. Reducing latency for a relocation cache lookup and address mapping in a distributed memory system
JP3594082B2 (ja) * 2001-08-07 2004-11-24 日本電気株式会社 仮想アドレス間データ転送方式
US7039054B2 (en) * 2002-11-19 2006-05-02 Intel Corporation Method and apparatus for header splitting/splicing and automating recovery of transmit resources on a per-transmit granularity

Also Published As

Publication number Publication date
DE60311462D1 (de) 2007-03-15
US7356667B2 (en) 2008-04-08
EP1517504B1 (de) 2007-01-24
US20050154855A1 (en) 2005-07-14
EP1517504A1 (de) 2005-03-23

Similar Documents

Publication Publication Date Title
DE60311462T2 (de) Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
DE69826930T2 (de) System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE112005001430B4 (de) Verfahren, System und Programm zum Anwenden einer virtualisierten Datenstrukturtabelle
DE60122155T2 (de) Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität
DE112020002501T5 (de) System und verfahren zur erleichterung eines effizienten lastausgleichs in einer netzwerkschnittstellensteuerung (nic)
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE60103088T2 (de) Verfahren zur Herstellung von Weiterleitungslisten für Netzwerkgruppe
DE60029710T2 (de) Schnelle und adaptive Paketverarbeitungsvorrichtung und Verfahren unter Verwendung von Eingangspaketenszusammenfassungsinformation
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE69821050T2 (de) Datenstromdifferenzierungssystem für Endgerätemulator
DE69727465T2 (de) Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung
DE112006002565T5 (de) Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112004002375B4 (de) Verfahren, System und Programm zum Verwalten von Datenleseoperationen
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE19983504B4 (de) Verbesserung der Portabilität von digitalen Bildern
DE102020122311A1 (de) Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern
DE60032674T2 (de) Verfahren zum Suchen von Adressen
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition