DE10260606B4 - Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse - Google Patents

Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse Download PDF

Info

Publication number
DE10260606B4
DE10260606B4 DE10260606A DE10260606A DE10260606B4 DE 10260606 B4 DE10260606 B4 DE 10260606B4 DE 10260606 A DE10260606 A DE 10260606A DE 10260606 A DE10260606 A DE 10260606A DE 10260606 B4 DE10260606 B4 DE 10260606B4
Authority
DE
Germany
Prior art keywords
address
virtual
bit
physical
addresses
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 - Fee Related
Application number
DE10260606A
Other languages
English (en)
Other versions
DE10260606A1 (de
Inventor
Berndt M. Dr.rer.nat. Gammel
Michael Smola
Gerd Dirscherl
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE10260606A priority Critical patent/DE10260606B4/de
Publication of DE10260606A1 publication Critical patent/DE10260606A1/de
Application granted granted Critical
Publication of DE10260606B4 publication Critical patent/DE10260606B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/656Address space sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Vorrichtung zur Übersetzung einer virtuellen Adresse (VA) in eine zugeordnete physikalische Adresse (PA), wobei mehrere virtuelle Adressen auf eine einzige physikalische Adresse abgebildet sein können, wobei die virtuellen Adressen N-Bit lang sind und jede virtuelle Adresse (60) einen M-Bit-Shared-Memory-Anzeiger (70), ein L-Bit-Wort (72) und eine Package-Adresse (62) mit N > L + M aufweist, mit
einer ersten Adreßübersetzungseinrichtung (202, 206);
einer zweiten Adreßübersetzungseinrichtung (210);
einer Vorabüberprüfungseinrichtung (208) zum Überprüfen der virtuellen Adresse (VA) daraufhin, ob der M-Bit-Shared-Memory-Anzeiger (70) eine vorbestimmte Bitkombination aufweist, um bei Übereinstimmung das L-Bit-Wort (72) an die erste Adreßübersetzungseinrichtung (202, 206) auszugeben und anderenfalls die virtuelle Adresse (VA) an die zweite Adreßübersetzungseinrichtung (210) weiterzuleiten;
wobei die erste Adreßübersetzungseinrichtung (202, 206) zur Speicherung von L-Bit-Tags und zugeordneten physikalischen Adressen und einem Vergleich der L-Bit-Tags mit dem L-Bit-Wort (72) mittels einer Vergleichseinrichtung (206) ausgebildet ist, um bei Übereinstimmung die der virtuellen Adresse (VA) zugeordnete physikalische...

Description

  • Die vorliegende Erfindung bezieht sich auf eine Vorrichtung zur Übersetzung einer virtuellen Adresse in eine zugeordnete physikalische Adresse, wobei mehrere virtuelle Adressen auf eine einzige physikalische Adresse abgebildet sein können. Solche Übersetzungen treten z.B. bei sogenannten TLBs (TLB = Translation-Lookaside Buffer) bzw. Vorabnachschlagpuffern bei der seitenorientierten Speicherverwaltung auf.
  • Virtual-Memory-Konzepte bzw. Konzepte zur virtuellen Adressierung trennen den logischen Adreßraum bzw. den virtuellen Adreßraum, der z. B. von einem Prozessor aus sichtbar ist, von den physikalischen Adressen, die für die Zugriffe auf Speicher oder andere Komponenten eines Systems verwendet werden. Die Adreßumsetzung von virtuellen Adressen in physikalische Adressen wird von einer sogenannten Speicherverwaltungseinheit (MMU; MMU = Memory Management Unit) vorgenommen. Die beiden bekanntesten MMU-Architekturen sind die sogenannte segmentierte MMU und die seitenorientierte bzw. paged MMU bzw. die PMMU. Während bei der segmentierten MMU virtueller und physikalischer Adreßraum in Teile variabler Größe, in sogenannte Segmente, untergliedert werden, die beispielsweise Unterprogrammen bzw. -routinen entsprechen, wird bei der PMMU der Speicher in Teile fester Größe, nämlich Seiten, unterteilt, so daß eine virtuelle Seite einer ebenso großen physikalischen Seite entspricht.
  • Bei der seitenorientierten Speicherverwaltung werden also virtueller und physikalischer Speicher in sogenannte pages bzw. Seiten identischer Größe aufgeteilt. Jede virtuelle Seite wird dabei durch eine Abbildungsvorschrift auf eine beliebige physikalische Seite abgebildet. Existiert eine Abbildung von zwei oder mehreren virtuellen Seiten auf dieselbe physi kalische Seite, so ist der Inhalt dieser Seite an mehreren Adreßbereichen im virtuellen Adreßraum sichtbar, liegt aber tatsächlich nur einmal in gespeicherter Form vor. In diesem Fall spricht man von shared memory bzw. gemeinsamer Speicherverwendung.
  • Um genau zu sein, dient die Abbildungsvorschrift lediglich der Abbildung von virtuellen Seitenanfangsadressen auf physikalische Seitenanfangsadressen, und jede virtuelle Adresse besteht aus einer Seitenanfangsadresse und einem Offset- bzw. Versatzwert, während die physikalische Adresse aus einer der virtuellen Adresse zugeordneten physikalischen Seitenanfangsadresse erhalten wird, dem der Versatzwert der virtuellen Adresse angefügt wird. Trotz dieses Unterschieds wird im folgenden der Ausdruck virtuelle Adresse auch manchmal für die virtuelle Seitenanfangsadresse verwendet.
  • Zur Verwaltung der Abbildung von virtuellen auf physikalische Adressen ist es notwendig, daß die MMU jederzeit Kenntnis über die Abbildungsvorschrift der virtuellen Adressen auf die physikalischen Adressen aufweist. Kritische Größe für den notwendigen Speicherbedarf zur Speicherung der Abbildungsvorschrift ist die Seitengröße, d.h. die Anzahl der Bytes der gleich großen virtuellen und physikalischen Seiten. Je kleiner die Seitengröße ist, desto feiner ist die Granularität des virtuellen und physikalischen Adreßraums, was wünschenswert sein kann, aber desto größer ist auch der Speicheraufwand für die Bereitstellung der Abbildungsvorschrift von virtuellen Seiten auf physikalische Seiten. Eine feine Granularität ergibt ein hohes Maß an Durchmischung von beispielsweise Programmcode oder Daten in dem physikalischen Speicher und vermeidet die Verschwendung vieler Bytes an dem Ende von Programmcodes, weshalb sie insbesondere bei den äußerst Speicher- und Platz-beschränkten Chipkartenanwendungen interessant ist. Die Abwägung zwischen hohem Aufwand zur Bereitstellung der Abbildungsvorschrift und dem Nutzen aus einer feinen Gra nularität führt bei Chipkarten zu einer relativ kleinen Seitengröße im Bereich von weit weniger als 1 Kilobyte, dem typischen Seitengrößenbereich bei Allzweckmikroprozessoren.
  • Notwendigerweise muß die Umsetzung einer interessierenden virtuellen Adresse durch die MMU, die beispielsweise durch eine CPU beantragt wird, äußerst schnell durchgeführt werden, damit die virtuelle Adressierung die Verarbeitungsgeschwindigkeit nicht unnötig herabsetzt. Zur Verwaltung der Abbildungen auf Page-Granularität wird einer MMU deshalb neben einer die Abbildungsvorschrift vollständig bereitstellenden Struktur, wie z.B. einer Tabelle zwischen Paaren von virtuellen und physikalischen Adressen, oft ein sogenannter Translation-Lookaside Buffer (TLB) implementiert, der einen assoziativen Adreßumsetzungsspeicher darstellt, an welchem stets ein begrenzter Teil der Abbildungsvorschrift für eine äußerst schnelle Umsetzung bereitsteht. Der TLB enthält eine Anzahl von Einträgen, die jeweils eine Abbildung von einer oder mehreren virtuellen Seiten auf die entsprechende Zahl von physikalischen Seiten enthalten. Im einfachsten Fall enthält der TLB pro Eintrag eine Virtuelle-Adresse-Spezifikation, die aus allen möglichen virtuellen Adressen lediglich eine spezifiziert, und die dazugehörige physikalische Adresse, auf die aufgrund der Abbildungsvorschrift die spezifizierte virtuelle Adresse abgebildet wird. In dem Fall des Zugreifens auf den TLB mit einer interessierenden virtuellen Adresse schlägt der TLB in allen Einträgen nach, um anhand der interessierenden virtuellen Adresse festzustellen, ob die virtuelle Adresse eine Adreßspezifikation der Einträge des TLB erfüllt. Um diesen inhaltsadressierten Zugriffsvorgang möglichst schnell durchzuführen, sind TLBs zumeist derart ausgeführt, daß sie die Überprüfung, ob die interessierende virtuelle Adresse eine der Adreßspezifikationen erfüllt, gleichzeitig für jeden Eintrag durchführt. Aufgrund dieser Tatsache vervielfacht sich der Aufwand des TLBs pro Eintrag um weit mehr als lediglich die Chipfläche zur Speicherung der einzelnen Einträge. Folglich ist die Größe des TLBs stets das Ergebnis einer Ab wägung zwischen dem Vorteil der schnellen Adreßumsetzung für möglichst viele Abbildungen von virtuellen Seiten auf physikalische Seiten und dem Nachteil des enormen Aufwands pro Eintrag bzw. der erhöhten Chipfläche. Allgemein gesagt ist die Größe des TLBs hardwarebedingt begrenzt.
  • 7 zeigt exemplarisch den Aufbau eines solchen TLBs. Die interessierende virtuelle Adresse gelangt in eine Nachschlageinrichtung 902, die dieselbe gleichzeitig mit den virtuellen Adressen vergleicht, wie sie durch die Adreßspezifikationen der Adreßübersetzungseinträge 904 angezeigt werden. Jede Adreßspezifikation zeigt eine virtuelle Adresse an. In dem Fall eines Treffers gibt die Nachschlageinrichtung 902 die gesuchte physikalische Adresse aus, wie sie durch den entsprechenden Adreßübersetzungseintrag 904 angezeigt wird. Andernfalls wird ein Fehlschlagsignal ausgegeben.
  • Ergibt das Nachschlagen in dem TLB, daß für die interessierende virtuelle Adresse die gesuchte physikalische Adresse nicht in dem TLB vorhanden ist, d.h. also ein Fehlschlag-Signal erzeugt worden ist, wird die interessierende virtuelle Adresse durch die MMU aus einer langsamer arbeitenden Struktur zur Bereitstellung der vollständigen Abbildungsvorschrift extrahiert. Zudem wird einer der TLB-Einträge, der durch ein geeignetes Ersetzungsschema bestimmt wird, durch einen die Abbildung zwischen der interessierenden virtuellen Adresse und der zugehörigen physikalischen Adresse anzeigenden Eintrag ersetzt. Das Ersetzungsschema ist derart ausgewählt, daß die Wahrscheinlichkeit dafür, daß sich ein Eintrag für die gesuchte virtuelle Seite in dem TLB befindet, stets möglichst groß ist, so daß möglichst oft ein Treffer-Signal im TLB erzeugt wird und die gesuchte physikalische Adresse auf äußerst schnellem Wege ausgegeben werden kann, ohne daß ein Zugriff auf die deutlich langsamer arbeitende, tiefer liegende, die Abbildungsvorschrift bereitstellende Struktur notwendig ist.
  • Problematisch an bisherigen Lösungen für TLBs ist, daß in dem Fall von shared memory, bei dem also mehr als eine virtuelle Seite durch die Abbildungsvorschrift ein und derselben physikalischen Seite zugeordnet sein kann, zu einem Zeitpunkt zwei oder sogar mehrere TLB-Einträge notwendig werden können, die auf die gleiche physikalische Seite verweisen. Angesichts des oben beschriebenen hohen Aufwands zum Nachschlagen in den einzelnen Einträgen stellt dies eine enorme Verschwendung dar, abgesehen davon, daß bereits eine redundante Speicherung der physikalischen Adresse in dem TLB ein Mehraufwand an Speicherplatz darstellt. Vor allem aber verringert die Notwendigkeit von mehreren Einträgen, die sich auf ein und dieselbe physikalische Seite beziehen, die Wahrscheinlichkeit dafür, daß sich eine beliebige interessierende virtuelle Adresse unter den durch die übrigen Einträge der TLB spezifizierten virtuellen Adressen befindet, wodurch also die Häufigkeit des deutlich langsameren Zugriffs auf die tiefer liegende die vollständige Abbildung bereitstellende Struktur erhöht wird.
  • Die vorbeschriebenen Nachteile machen sich insbesondere bei Chipkarten bemerkbar. Immer höher werdende Performance-Anforderungen an Chipkarten haben die virtuelle Adressierung bei Chipkarten einerseits unerläßlich werden lassen. Anwendungsprogrammcodeerzeugern kann ein spezieller virtueller Adreßraum zugewiesen werden, ohne daß er in Kenntnis der physikalischen Adressen gelangt. Bei Multiapplikationschipkarten ist es aufgrund der virtuellen Adressierung möglich, Anwendungen voneinander völlig zu isolieren und somit die Sicherheit des gegenwärtigen Ausspionierens von Anwendungen zu verhindern, da beispielsweise jede Applikation nur auf den ihr zugewiesenen Adreßraum zugreifen kann. Die feine Granularität der virtuellen Adressierung ermöglicht zudem ein hohes Maß an Durchmischung der Programmcodes, wodurch es einem potentiellen Angreifer erschwert wird, anhand einer sich in seiner Gewalt befindlichen Chipkarte an den Programmcode zu gelangen.
  • Andererseits sorgen jedoch gerade die enormen Chipflächenbegrenzungen und die feine Granularität bei Chipkarten zu spezifischen Problemen. Während die Anzahl der Einträge, die bei einer Chipkarte in einem TLB gleichzeitig gespeichert werden können, zumeist gering ist, ist die Zahl der durch das virtuelle Speicherlayout benötigten Einträge wegen der feinen Seitengranularität jedoch sehr hoch. Somit verdrängen sich die TLB-Einträge bei Chipkarten sehr häufig gegenseitig und müssen tiefer liegende Strukturen aus Hardware oder Software häufig nachgeladen werden, was mit enormen Performanceeinbußen, insbesondere langsameren Transaktionszeiten etc., verbunden ist.
  • Wünschenswert wären also TLB-Lösungen, die, ohne die Chipfläche zu erhöhen, zu einer erhöhten TLB-Trefferwahrscheinlichkeit führen, oder die bei gleicher oder in etwa gleicher Trefferwahrscheinlichkeit die Chipfläche reduzieren. Da Chipkarten ein Massenprodukt darstellen, bedeutete hier aufgrund der hohen Stückzahlen bereits jede noch so geringe Chipflächeneinsparung hohe Gewinne für den Chipkartenhersteller.
  • Die US 5630087 bezieht sich auf die Adreßübersetzung zwischen virtuellen Speicheradressen und physikalischen Speicheradressen, und zwar auf solche virtuellen Adressierungen, bei denen unterschiedliche virtuelle Adressen auf ein und dieselbe physikalische Adresse abgebildet sein können. Sie bietet eine Möglichkeit dafür, wie ein einziger Eintrag dafür ausreichen kann, um die Abbildung mehrerer unterschiedlicher virtueller Adressen auf eine physikalische Adresse zu definieren. Die Lösung 1 besteht darin, allen virtuellen Speicheradressen, die auf ein und dieselbe physikalische Adresse weisen, in eine Äquivalenzklasse zusammenzufassen, indem denselben eine M-Bit-Maske zugewiesen wird, die die jeweilige Äquivalenzklasse charakterisiert. Die virtuellen Adressen bestehen nicht mehr nur noch aus einem Kontextwert bzw. einer Programmnummer, die den Prozeß angibt, dem die spezielle virtuelle Speicheradresse angehört, und einem virtuellen Adreßwert zusammensetzt, sondern daß jeder virtuellen Adresse nunmehr innerhalb des Kontextwertes zusätzlich zur Kontextnummer ID noch eine Kontextmaske MASK hinzugefügt wird. Das Eingangssignal von einer CPU zu einer Nachschlagtabelle umfaßt demnach zusätzlich zur Identifikationsnummer ID und dem virtuellen Adreßwert VA noch einen Maskenwert MASK. In der Nachschlagtabelle ist nun zunächst für jede physikalische Adresse PP der virtuelle Adreßwert VA gespeichert. Jeder Eintrag besetzt aber noch ein weiteres Feld CTX_MTE, das je nach Wert eines Äquivalenzbits EC entweder eine Maskenspezifikation oder eine Kontextidentifikationsnummerspezifikation beinhaltet. Ist das EC nicht gesetzt, hat die Bedeutung des Feldes CTX_MTE die Bedeutung einer Kontextidentifikationsnummerspezifikation, und ein Adreßnachschlag erfolgt wie herkömmlich, nämlich nur in dem Fall, daß sowohl VA als auch CTX der gesuchten virtuellen Adresse mit dem Eintrag in der Nachschlagtabelle übereinstimmen. Andernfalls, d.h. bei gesetztem EC, hat CTX-MTE die Bedeutung einer Maskenspezifikation, und eine interessierende virtuelle Adresse wird auf eine bestimmte physikalische Adresse PP in der Nachschlagtabelle abgebildet, wenn die VA-Werte übereinstimmen und der Masken-Wert der interessierenden virtuellen Adresse anzeigt, daß dieselbe derselben Äquivalenzklasse angehört, was dann der Fall ist, wenn der Masken-Wert dieser interessierenden virtuellen Adresse an einer der Bitpositionen, an denen die Maskenspezifikation eine 1 aufweist, ebenfalls eine 1 aufweist.
  • Die Aufgabe der vorliegenden Erfindung besteht folglich darin, eine Vorrichtung zur Übersetzung einer virtuellen Adresse in eine zugeordnete physikalische Adresse, wobei mehrere virtuelle Adressen auf eine einzige physikalische Adresse abgebildet sein können, zu schaffen, so daß eine erhöhte TLB-Trefferwahrscheinlichkeit bei gleicher Chipfläche oder eine geringere Chipfläche bei gleicher TLB-Trefferwahrscheinlichkeit erzielt werden kann.
  • Diese Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 gelöst.
  • Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung werden die Adreßübersetzungseinträge ausschließlich für solche virtuellen Adressen verwendet, die der gemeinschaftlichen Speicheradressierung bzw. dem shared memory unterliegen, d.h. für virtuelle Adressen, die auf physikalische Adressen abgebildet werden, denen mehr als eine virtuelle Adresse zugeordnet ist. Eine Vorabüberprüfungseinrichtung überprüft die interessierende virtuelle Adresse, ob sie eine solche dem shared memory unterliegende virtuelle Adresse ist, indem dieselbe erste spezielle M Bits der interessierenden virtuellen Adresse mit den Zusatzinformationen vergleicht. Nur dann, wenn der Vergleich ergibt, daß die interessierende virtuelle Adresse eine shared-memory-Adresse ist, wird in den Adreßübersetzungseinträgen nachgeschlagen, ob sich in einem der Einträge die gesuchte physikalische Adresse befindet. Hierbei spezifizieren die Virtuelle-Adresse-Spezifikationen bzw. die virtuelle-Adresse-Tags der Adreßübersetzungseinträge lediglich nur noch andere L Bits der N-Bit-langen virtuellen Adressen (N > L + M), wodurch insgesamt sichergestellt ist, daß all diejenigen virtuellen Adressen einen Treffer in den Adreßübersetzungseinträgen erzeugen, die in den ersten M Bits den Zusatzinformationen entsprechen und in den L Bits einer der Adreßspezifikationen der Adreßübersetzungseinträge entsprechen. Die restlichen Bits sind unbeachtlich und führen bei Gleichheit der M und L Bits aufgrund des gleichen Adreßübersetzungseintrags zu derselben physikalischen Adresse. Gemäß diesem Aspekt dienen die Zusatzinformationen quasi als zusätzliche, separate Adreßvergleicher, die spezielle Adreßbereiche des virtuellen Speichers für shared memory reservieren. Diese Adressen werden dann durch spezielle Adreßübersetzungseinträge aufgelöst, die strukturell einfacher sind. Außerhalb der shared-memory-Bereiche, also in dem Fall, daß die Vorabüberprüfungseinrichtung feststellt, daß die interessierende virtuelle Adresse keine sharedmemory-Adresse ist, wird ein beliebig gearteter Übersetzungsmechanismus verwendet, wie z.B. ein TLB, der lediglich für die Nicht-shared-memory-virtuellen Adressen zuständig ist.
  • Bevorzugte Ausgestaltungen der vorliegenden Erfindung sind Gegenstand der abhängigen Patentansprüche, und es werden bevorzugte Ausführungsbeispiele der vorliegenden Erfindung nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 eine schematische Zeichnung, die ein Beispiel für eine Aufteilung eines virtuellen Adreßraumes in mehrere Adreßräume für mehrere Anwendungspakete zeigt, anhand dessen TLBs gemäß den 4 bis 6 beschrieben werden;
  • 2 einen Ausschnitt des virtuellen Adreßraumes gemäß 1, eindimensional entlang einer Achse aufgetragen, zur Veranschaulichung der Anordnung von shared-memory-Bereichen und Applet-individuellen Bereichen;
  • 3 ein Beispiel für den Aufbau einer virtuellen Adresse, anhand dessen die TLBs nach der 4-6 beschrieben werden;
  • 4 der Aufbau eines TLBs gemäß einem Vergleichsbeispiel;
  • 5 ein Blockschaltbild der Nachschlageinrichtung des TLBs von 4 gemäß einem Vergleichsbeispiel;
  • 6 den schematischen Aufbau eines TLBs gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • 7 den Aufbau eines herkömmlichen TLBs.
  • Anhand der 1-3 wird zunächst ein exemplarischer Aufbau eines virtuellen Adreßraumes sowie ein exemplarischer Aufbau von virtuellen Adressen beschrieben, um anschließend Ausführungsbeispiele der vorliegenden Erfindung für TLBs in diesem exemplarischen Rahmen zu beschreiben. Freilich wird darauf hingewiesen, daß das nachfolgend Bezug nehmend auf 1-3 beschriebene virtuelle Speicherlayout mit shared-memory-Konzept lediglich exemplarisch ist, und daß die Bezug nehmend auf die 4 und 5 im Anschluß beschriebenen Vergleichsbeispiele bzw. das bezugnehmend auf 6 beschriebene Ausführungsbeispiel für TLBs im speziellen auch auf andere Umgebungen anwendbar sind, bei denen das virtuelle Speicherlayout in verschiedener Hinsicht abweicht.
  • Die virtuelle Adressierung, wie sie Bezug nehmend auf 1-3 beschrieben wird, wird, von für die nachfolgende Beschreibung nicht relevanten Abweichungen abgesehen, beispielsweise von der SLE 88Cxxx-Chipkartenfamilie der Firma Siemens verwendet. Chipkarten diesen Typs weisen einen 16 Megabyte gro ßen virtuellen Adreßraum auf. Die oberen 8 Megabyte des virtuellen Adreßraumes stehen den Anwendungen zur Verfügung, die auf der Chipkarte lauffähig sind und beispielsweise von Programmherstellern für unterschiedliche Unternehmen hergestellt wurden, wie z.B. Banken, Nahverkehrsunternehmen usw. Zur Erzeugung des Programmcodes für die einzelnen Anwendungen sind den Programmherstellern unterschiedliche Abschnitte bzw.
  • Adreßräume der oberen 8 Megabyte des virtuellen Adreßraumes zugewiesen worden, die im folgenden als Pakete bzw. packages bezeichnet werden und deren Anordnung im virtuellen Adreßraum im folgenden näher erörtert werden wird.
  • 1 zeigt schematisch eine Anzahl von n Paketen in die die oberen 8 Megabyte des virtuellen Adreßraumes aufgeteilt sind, und die in 1 mit „package 1" ... „package n" bezeichnet sind. Bei dem vorliegenden Beispiel von 1-3 ist n = 128. Zudem sind die Chipkartenanwendungen vorliegend exemplarisch in einer Programmiersprache Java geschrieben, wobei die Programmcodes der Anwendungen Java-Applets bilden. Im folgenden sei angenommen, daß jedes Anwendungs-Java-Applet in einem Paket untergebracht sei. Exemplarisch enthalten, wie es in 1 gezeigt ist, die Pakete 1, 2, 3 und n die Applets mit der Bezeichnung A, B, C und X. Jedes Java-Applet ist bezüglich seines virtuellen Adreßraumabschnittes programmiert worden, d.h. bezüglich des Adreßraumabschnittes seines jeweiligen Paketes. Jedes Java-Applet besteht aus einem Java-Byteprogrammcode, der durch einen Interpreter, einer sogenannten Java Virtual Machine bzw. JVM in einen Maschinencode übersetzt werden muß, der dann durch den Prozessor oder die CPU des Systems abgearbeitet werden kann.
  • Vorliegend ist der Interpreter stets ein Programmteil eines Applet-Paketes, ist aber physikalisch nur einmal vorhanden. Anders ausgedrückt ist in dem virtuellen Adreßraum jedes Paketes neben dem Appletbereich, der in 1 mit Applet A, Applet B, Applet C bzw. Applet X betitelt ist, stets ein JVM-Bereich vorgesehen, der in 1 mit JVM betitelt ist, für die Übersetzung des Java-Applets in Maschinencode zuständig ist und physikalisch nur einmal vorgesehen ist. Wie es im folgenden noch näher erörtert werden wird, bildet jeder virtuelle Paketbereich einen zusammenhängenden Bereich virtueller Adressen, von denen der JVM-Bereich jeweils die unteren acht Kilobyte einnimmt, wie es exemplarisch in 1 beim Paket 1 durch die hexadezimalen Zahlen 0x000000 und 0x001FFF angezeigt werden soll. Wie es durch die Pfeile in 1 angezeigt werden soll, wird aber jeder JVM-Bereich auf ein und denselben physikalischen Bereich des physikalischen Adreßraumes abgebildet, der in 1 mit 10 angezeigt ist. In dem Bereich 10 ist der JVM-Interpreter tatsächlich gespeichert und nimmt nur einmal und nicht n mal tatsächlichen physikalischen Speicherplatz ein. Obwohl also der JVM in jedem Package gemeinsam mit dem Applet in einem zusammenhängenden virtuellen Adreßraum angeordnet ist, und von den Anwendungspaketen gemeinsam verwendet wird, ist er tatsächlich nur einmal physisch gespeichert. Zur Vereinfachung der Beschreibung werden gemeinschaftlich verwendete Daten bei dem vorliegenden Beispiel nicht berücksichtigt.
  • Nachdem das Speicherlayout anhand von 1 eher allgemein beschrieben worden ist, wird anhand von 2 die Anordnung der Pakete im virtuellen Adreßraum detaillierter beschrieben. 2 zeigt eine Achse 20, entlang der die virtuellen Adressen des virtuellen Adreßraumes linear angeordnet sind. Wie es in 2 gezeigt ist, sind die virtuellen Adreßräume aufeinanderfolgender Pakete x – 2, x – 1, x und x + 1 unmittelbar aufeinanderfolgend angeordnet und nehmen einen zusammenhängenden Bereich von virtuellen Adressen ein. Zudem ist jedes Paket genau so groß, nämlich 64 Kilobyte groß. Eine Achse 40 in 2 zeigt den Abschnitt der Achse 20 vergrößert, in welchem das Paket x angeordnet ist. Wie es zu sehen ist, nimmt der JVM-Bereich des Paketes x die unteren 8 Kilobyte nämlich 1/8 von 64 Kilobyte, des Paketes x ein, während der Appletbereich die oberen 56 Kilobyte des Paketes x einnimmt.
  • Auf dieselbe Weise wie das Paket x sind die anderen Pakete in Appletbereich und JVM-Bereich untergliedert.
  • Um die Untergliederung wie in 2 gezeigt zu erzielen, sind die virtuellen Adressen wie in 3 aufgebaut. Jede virtuelle Adresse, die in 3 allgemein mit 60 angezeigt ist, besteht aus insgesamt 24 Bits. Die höchstwertigen 8 Bits bilden die Package-Adresse 62 und zeigen das jeweilige Paket an. Die Package-Adresse 62 untergliedert den virtuellen Adreßraum in 256 aufeinanderfolgende, zusammenhängende Bereiche gleicher Größe, nämlich von 64 Kilobyte. Die 64 Kilobyte innerhalb eines Paketes werden durch die niedrigwertigeren 16 Bits der virtuellen Adresse 60 adressiert, die die interne Package-Adresse 64 bilden. Die interne Package-Adresse 64 untergliedert sich wiederum in eine Package-Seitenadresse 66 und einen Offset 68. Die Länge des Offsets 68 richtet sich nach der Seitengröße der Seiten, in welche virtueller und physikalischer Adreßraum untergliedert sind, und nimmt die niedrigwertigeren Bits der internen Packageadresse 64 ein. Die Package-Seitenadresse 66 besteht wiederum aus einem höherwertigeren 3-Bit-shared-memory-Anzeiger 70, dessen Funktion im folgenden beschrieben wird, und einem L-Bit-Wort 72, dessen Funktion ebenfalls im folgenden beschrieben wird. Package-Adresse 62 und Package-Seitenadresse 66 bilden zusammen die virtuelle Seitenadresse 74.
  • Nachdem im vorhergehenden der Aufbau der virtuellen Adressen sowie eine exemplarische Aufteilung eines virtuellen Adreßraumes auf mehrere Anwendungen beschrieben worden ist, werden im folgenden Bezug nehmend auf 4 und 5 Vergleichsbeispiele und bezugnehmend auf 6 ein Ausführungsbeispiel für ein TLB beschrieben, welche in ihrer begrenzten Anzahl von Adreßübersetzungseinträgen stets einen Teil der Abbildungsvorschrift von virtuellen Seitenadressen auf physikalische Seitenadressen bereitstellen. Im folgenden wird lediglich zu Beginn der Beschreibung streng zwischen Seitenadresse 72 und Adresse 60 (siehe 3) un terschieden, während später auf diese Unterscheidung häufig verzichtet wird.
  • 4 zeigt einen TLB gemäß einem Vergleichsbeispiel, der allgemein mit 100 angezeigt ist. Er umfaßt in einem Speicher 102 exemplarisch 16 Adreßübersetzungseinträge, von denen einer in 4 exemplarisch mit 104 angezeigt ist. Die Adreßübersetzungseinträge 104 bilden die Zeilen einer dreispaltigen Tabelle. Anders ausgedrückt, umfaßt jeder Adreßübersetzungseintrag 103 drei Informationen, nämlich eine virtuelle Seitenadresse 74 aus 8 + 3 + L Bits (siehe 3), eine Bitmaske aus ebenso vielen Bits und eine physikalische Seitenadresse oder einen physikalischen Zeiger, der auf den Anfang der physikalischen Seite verweist.
  • Der TLB 100 umfaßt ferner eine Nachschlageinrichtung 106. An einem ersten Eingang empfängt die Nachschlageinrichtung 106 die vollständige virtuelle Adresse, die in eine physikalische Adresse übersetzt werden soll. An 16 weiteren Eingängen empfängt die Nachschlagtabelle 106 die virtuelle Seitenadresse jedes Adreßübersetzungseintrags 104. Ferner erhält die Nachschlageinrichtung 106 von jedem der 16 Adreßübersetzungseinträgen die Bitmaske. Ein Ausgang der Nachschlageinrichtung 106 ist in der Lage auf die Adreßübersetzungseinträge 104 bzw. den Speicher 102 derart zuzugreifen, um eine bestimmte physikalische Seitenadresse auszulesen, die dann von dem Speicher 102 an einem Ausgang 108 des TLB 100 ausgegeben wird. Zudem ist ein weiterer Ausgang der Nachschlageinrichtung 106 mit dem Ausgang 108 des TLB 100 verbunden, um in dem Fall eines Fehlschlags, d.h. daß die gesuchte physikalische Adresse zu der interessierenden virtuellen Adresse nicht in den Adreßübersetzungseinträgen 104 enthalten ist, ein Fehlschlagsignal auszugeben. Ferner umfaßt der TLB 100 einen Eingang 110, an welchem jeder Adreßübersetzungseintrag 104 individuell überschrieben werden kann.
  • Nachdem im vorhergehenden der Aufbau des TLB 100 von 4 beschrieben worden ist, wird im folgenden dessen Funktions weise beschrieben. Zunächst wird die interessierende virtuelle Adresse einer Nachschlageinrichtung 106 empfangen und mit jeder der 16 virtuellen Adressen verglichen, wie sie durch die Adreßübersetzungseinträge 104 angegeben werden, um auf diese Weise festzustellen, ob einer der Adreßübersetzungseinträge 104 Informationen über die Abbildung der interessierenden virtuellen Adresse auf die gesuchte physikalische Adresse aufweist, in welchem Fall ein sogenannter Treffer vorläge. Die Nachschlageinrichtung 106 berücksichtigt bei den 16 Vergleichen die 16 Bitmasken, wie es im folgenden näher erörtert werden wird, so daß ein Adreßübersetzungseintrag 104 nicht nur dann einen Treffer erzeugt bzw. als die gesuchte physikalische Adresse aufweisend gilt, wenn die höchstwertigen 8 + 3 + L Bits der interessierenden virtuellen Adresse exakt der virtuellen Seitenadresse des entsprechenden Adreßübersetzungseintrags 104 übereinstimmen. Vielmehr zeigt die Bitmaske jedes Adreßübersetzungseintrags 104 an, welche der 8 + 3 + L Bits bei dem Vergleich unbeachtlich sein sollen, so daß eine Diskrepanz der virtuellen Seitenadresse eines Adreßübersetzungseintrags 104 und der entsprechenden Bits der interessierenden virtuellen Adresse bei sonstiger Übereinstimmung derselben nicht zu einem Fehlschlag führt.
  • 5 zeigt ein Vergleichsbeispiel für einen möglichen Schaltungsteil der Nachschlageinrichtung 106, die den Vergleich zwischen einer virtuellen Seitenadresse VAi, die in einem Adreßübersetzungseintrag i angegeben ist und N = 8 + 3 + L Bits aufweist, und den ersten N Bits der interessierenden virtuellen Adresse VA0 unter Berücksichtigung der Bitmaske M mit N Bits des Adreßübersetzungseintrages 104 durchführt. Einzelne Bitwerte der Eingangswerte der Schaltung von 5 sind durch entsprechende Anfügung der Bitnummer in eckigen Klammern angezeigt. Eine logische 0 in der Bitmaske zeigt an, daß das entsprechende Bit für das Vergleichsergebnis unbeachtlich sein soll.
  • Die Schaltung von 5 umfaßt N NXOR-Gatter 1200, 1201, ... 120N-1, N ODER-Gatter 1220, 1221, .... 122N-1 mit einem invertierenden und einem nicht-invertierenden Eingang und ein UND-Gatter 124 mit N Eingängen. Ein erster Eingang jedes NXOR-Gatters 120 erhält ein unterschiedliches Bit der eingetragenen virtuellen N-Bit-Seitenadresse VAi. Ein zweiter Eingang jedes NXOR-Gatters 120 erhält das entsprechende Bit der interessierenden virtuellen Adresse VA0. Der Ausgang jedes NXOR-Gatters 120 ist mit dem nicht-invertierenden Eingang eines der ODER-Gatter 122 verbunden. Der andere, invertierende Eingang jedes ODER-Gatters 122 erhält dasjenige Bit der Bitmaske M, welches demjenigen Bit von VA0 entspricht, das durch das mit dem jeweiligen ODER-Gatter 122 verbundene NXOR-Gatter 120 verknüpft worden sind. Der Ausgang jedes ODER-Gatters ist mit einem der Eingänge des UND-Gatters 124 verbunden.
  • Die Schaltung von 5 vergleicht zunächst durch die NXOR-Verknüpfungen den virtuellen Adreßeintrag VAi bitweise mit der interessierenden virtuellen Adresse VA0, um ein Übereinstimmungswort mit N Bits an den Ausgängen der NXOR-Gatter 120 zu erhalten. Das Übereinstimmungswort weist an jeder Bitposition, an welcher die eingetragene und die interessierende virtuelle Adresse übereinstimmen, einen logisch hohen Zustand und an den anderen Bitpositionen einen logisch niedrigen Zustand auf. Das so erhaltene Übereinstimmungswort wird durch die ODER-Gatter 122 mit dem Inversen der Bitmaske verknüpft, um unabhängig von ihrem Bitwert all diejenigen Bitpositionen des Übereinstimmungswortes in einen logisch hohen Zustand zu versetzen, welche durch die Bitmaske ausgeblendet werden sollen, d.h. überall dort, wo die Bitmaske ein Bit mit einem logisch niedrigen Zustand aufweist. Durch das UND-Gatter 124 werden die Bitwerte des resultierenden Wortes an den Ausgängen der ODER-Gatter 122 UND-verknüpft, wodurch eine Aussage über die Übereinstimmung der eingetragenen und der interessierenden virtuellen Adresse an den durch die Bitmaske nicht ausgeblendeten Bitpositionen erhalten wird. Zur Implementierung der Nachschlageinrichtung von 4 kann die Schaltung von 5 dienen, indem dieselbe für jeden Adreßübersetzungseintrag 104 vorgesehen wird.
  • Wieder Bezug nehmend auf 4 zeigt die Nachschlageinrichtung 106 in dem Fall eines Treffers bei einem der Adreßübersetzungseinträge 104 dem Speicher 102 an, die physikalische Adresse welchen Adreßübersetzungseintrags 104 auszulesen ist, woraufhin der Speicher 102 die entsprechende physikalische Seitenadresse an dem Ausgang 108 ausgibt. Liegt ein Treffer bei keinem der Adreßübersetzungseinträge 104 vor, gibt die Nachschlageinrichtung 106 ein Fehlschlagsignal aus. Da in dem Fall des Treffers der Speicher 102 lediglich physikalische Seitenadressen ausgibt, ergänzt die Nachschlageinrichtung 106 die physikalische Seitenadresse um den Package-Offset 68 (3) aus der empfangenen interessierenden virtuellen Adresse, da der Package-Offset für virtuelle Adressen und physikalische Adressen übereinstimmt, bzw. da die relative Anordnung der Bytes in den virtuellen Seiten und physikalischen Seiten identisch ist.
  • In dem Fall eines Fehlschlags sorgt eine Steuereinrichtung (nicht gezeigt) dafür, daß die gesuchte physikalische Adresse zu der interessierenden virtuellen Adresse aus einer hierarchiemäßig tiefer gelegeneren, langsamer arbeitenderen Struktur zur Bereitstellung der vollständigen Abbildungsvorschrift zwischen virtuellem Adreßraum und physikalischem Adreßraum extrahiert wird. Diese Steuereinrichtung wird anhand eines geeigneten Ersetzungsschemas ferner einen der Adreßübersetzungseinträge 104 durch einen neuen Adreßübersetzungseintrag ersetzen, der die interessierende virtuelle Adresse, die gesuchte physikalische Adresse und die dazugehörige Maske enthält, welche Informationen aus der tiefer gelegeneren Struktur extrahiert worden sind. Geeignete Ersetzungsschemata sind beispielsweise das FIFO (First-In-First-Out; Zuerst-Hinein-Zuerst-Heraus) Prinzip, nach welchem der Eintrag ersetzt wird, der sich am längsten in dem TLB 100 befindet, das LRU- (Last Recently Used; am wenigsten neulich verwendet) Prinzip, nach welchem der Eintrag ersetzt wird, auf den die längste Zeit nicht mehr zugegriffen worden ist, und das LFU- (least frequently used; am wenigsten häufig verwendet) Prinzip, nach welchem der Eintrag ersetzt wird, der die geringste Anzahl von Zugriffen aufweist. Die Ersetzung kann über den Eingang 110 durchgeführt werden.
  • Um die Vorzüge des TLBs 100 gegenüber dem herkömmlichen TLB von 7 hervorzuheben, wird die Funktionsweise des TLB 100 exemplarisch noch einmal explizit an dem Beispiel des Speicherlayouts nach 1-3 beschrieben. Um das Speicherlayout wie dort zu erhalten, werden in denjenigen TLB-Einträgen, die sich auf virtuelle Adressen beziehen, die den unteren 8 Kilobytes eines Packages entsprechen, d.h. in dem JVM-Bereich liegen, die oberen 8 Bit der N-Bit-Bitmaske, die der Packageadresse von virtuellen Adressen entsprechen, auf eine logische 0 gesetzt, während die anderen Bits gesetzt bzw. auf eine logische 1 eingestellt werden. Dies bewirkt, daß von den virtuellen N-Bit-Seitenadressen in den Adreßübersetzungseinträgen 104 des TLB 100 in den Adreßvergleich durch die Nachschlageinrichtung 106 lediglich die Package-Seitenadreßbits 66 der internen Packageadresse 64 (siehe 3) eingehen, also diejenigen Bits, die die Lage der virtuellen Seite relativ zum Anfang des Packages selbst angeben. Ein Adreßübersetzungseintrag 104 aus einem JVM-Bereich wird somit auch für alle interessierenden virtuellen Adressen zu einem Treffer, die an entsprechender Stelle in dem JVM-Bereich eines anderen Packages liegen. Obwohl folglich ein Adreßübersetzungseintrag mit einer virtuellen Adresse aus einem JVM-Bereich lediglich genau eine virtuelle Adresse spezifiziert, führt dieser Eintrag für die entsprechenden JVM-Adressen jedes Packages, also für 128, virtuelle Adressen zu einem Treffer. Die Anzahl der Vergleiche pro Übersetzungsvorgang bleibt hierbei weiterhin auf 16 begrenzt. Unter dem begrenzten Satz von möglichen Adreßübersetzungseinträgen befinden sich keine Einträge, die dieselbe physikalische Seitenadresse betreffen. Die Trefferwahrscheinlichkeit für eine interessierende virtuelle Adresse ist damit stets maximal und die mittlere Zeitdauer zur Übersetzung virtueller Adressen in physikalische Adressen sinkt, da ein Zugriff auf die langsamer arbeitende, die vollständige Abbildungsvorschrift bereitstellende Struktur nicht so häufig notwendig ist. Daß auch tatsächlich keine Einträge dieselbe physikalische Seitenadresse betreffen, wird hierbei inhärent dadurch sichergestellt, daß eine Ersetzung eines Adreßübersetzungseintrags nur dann stattfindet, wenn auch tatsächlich ein Fehlschlag von der Nachschlageinrichtung 106 ausgegeben worden ist.
  • Der TLB von 4 stellte folglich eine Vorrichtung zum Abbilden virtueller Adressen auf physikalische Adressen dar, die eine Mehrzahl von Adreßübersetzungseinträgen aufwies, wobei ein Adreßübersetzungseintrag jeweils eine virtuelle Adresse, eine zugeordnete physikalische Adresse und zugeordnete Adreßvergleichsinformationen umfaßte, die zumindest eine weitere virtuelle Adresse identifizieren, der die physikalische Adresse ebenfalls zugeordnet ist, und die ferner eine Einrichtung zum Nachschlagen in der Adreßübersetzungseinrichtung umfaßte, ob sich unter den Adreßübersetzungseinträgen ein Zieleintrag befindet, dessen virtuelle Adresse gleich der interessierenden virtuellen Adresse ist, oder dessen Adreßvergleichsinformationen die interessierende virtuelle Adresse identifiziert, und zum Ausgeben der physikalischen Adresse des Zieleintrags.
  • Gemäß dem Vergleichsbeispiel werden die Adreßübersetzungseinträge über die eine virtuelle Adresse anzeigende Adreßspezifikation und die zugehörige physikalische Adresse hinaus um eine Bitmaske ergänzt, die für jeden Adreßübersetzungseintrag angibt, welche Bits der durch die Adreßspezifikation angegebenen virtuellen Adresse des Eintrags mit der interessierenden virtuellen Adresse übereinstimmen müssen, damit die Entscheidung, daß die virtuelle Adresse diese Adreßspezifikation erfüllt, positiv ausfällt. Anders ausgedrückt werden durch die zusätzliche Maske, die Teil eines jeden Adreßübersetzungseintrags ist, ausgewählte Bits der durch die Adreßspezifikation angegebenen virtuellen Adresse aus dem Adreßvergleich ausgenommen, so daß der Adreßübersetzungseintrag alle virtuellen Adressen „bedient" bzw. bei allen virtuellen Adressen zu einem Treffer führt, die sich nur in diesen maskierten Adreßbits von der durch die Adreßspezifikation angegebenen virtuellen Adresse unterscheiden. Gemäß dem Vergleichsbeispiel ergibt sich somit der Vorteil, daß durch die Zusatzinformationen die Entscheidung, ob die interessierende virtuelle Adresse die Virtuelle-Adresse-Spezifikation erfüllt, derart beeinflußt wird, daß nicht nur die durch die Adreßspezifikation spezifizierte virtuelle Adresse sondern auch zumindest eine andere virtuelle Adresse, die derselben physikalischen Adresse zugeordnet ist, zu einem positiven Nachschlagergebnis führt, so daß lediglich ein Eintrag für zwei virtuelle Adressen notwendig ist, die auf dieselben physikalische Adresse verweisen.
  • Anders ausgedrückt wurde jeder Adreßübersetzungseintrag um eine Zusatzinformation ergänzt, die angab, inwieweit sich virtuelle Adressen von der virtuellen Adresse des entsprechenden Adreßübersetzungseintrags unterscheiden, die auf die gleiche physikalische Adresse abgebildet werden wie die physikalische Adresse des Adreßübersetzungseintrags, und in dem die Nachschlageinrichtung derart ausgebildet wurde, daß dieselbe nicht nur dann feststellte, daß ein spezieller Adreßübersetzungseintrag die gesuchte physikalische Adresse aufweist, wenn die virtuelle Adresse des Adreßübersetzungsein trags gleich der interessierenden virtuellen Adresse ist, sondern auch dann, wenn die interessierende virtuelle Adresse auf die durch die Zusatzinformation angezeigte Weise von der virtuellen Adresse des Adreßübersetzungseintrags abweicht.
  • In dem Fall, daß ein Speicherbereich der zwischen zwei aufeinanderfolgenden Packages, d.h. eine mit geradzahliger und eine mit ungeradzahliger Packageadresse, die sich lediglich in den niedrigstwertigen Bits der Packageadresse unterscheiden, geteilt bzw. gemeinschaftlich verwendet werden sollen, wird nur das den niederwertigsten Bits der Package-Adresse entsprechende Bit der Adreßmaske gelöscht (auf Null gesetzt), während alle anderen Bits gesetzt werden. Entsprechend erzielt man ein shared-memory für vier aufeinanderfolgende Packages durch Löschen derjenigen Bits der Adreßmaske, die den beiden niedrigstwertigen Bits der Packageadresse entsprechen.
  • Bezug nehmend auf 6 wird ein Ausführungsbeispiel für ein TLB gemäß der vorliegenden Erfindung beschrieben, bei dem eine vorbestimmte Anzahl von Adreßübersetzungseinträgen ausschließlich für die Umsetzung von solchen virtuellen Adressen in physikalische Adressen verwendet werden, die auf gemeinschaftlich verwendete physikalische Adressen abgebildet werden. Eine weitere Adreßübersetzungsvorrichtung, hier ein TLB, ist ausschließlich zur Abbildung der anderen, Packageindividuellen virtuellen Adressen zuständig. Ein Adreßvergleicher überprüft eine interessierende virtuelle Adresse vorab anhand von Zusatzinformationen daraufhin, ob dieselbe eine virtuelle Adresse ist, die einer gemeinschaftlich verwendeten physikalischen Adresse zugeordnet ist. Die Zusatzinformationen beinhalten darüber hinaus ferner Informationen über ein Schema, nach welchem alle virtuellen Adressen, die auf ein und dieselbe gemeinschaftlich verwendete physikalische Adresse abgebildet werden, voneinander abweichen.
  • Der TLB von 6, der allgemein mit 200 angezeigt ist, umfaßt einen Speicher 202 mit vorliegend exemplarisch 16 Adreß übersetzungseinträgen, von denen in 6 einer exemplarisch mit 204 angezeigt ist. Die Adreßübersetzungseinträge bilden die Zeilen einer zweispaltigen Tabelle. Anders ausgedrückt umfaßt jeder Adreßübersetzungseintrag 204 eine Virtuelle-Adresse-Spezifikation, die L Bits bezüglich des Bereichs 72 einer virtuellen Adresse 60 (siehe 3) spezifiziert, und eine physikalische Seitenadresse. Der TLB 200 umfaßt ferner eine Nachschlageinrichtung 206, einen 3-Bit-Adreßvergleicher 208 und einen Zusatz-TLB 210. Ein Eingang des Adreßvergleichers 208 empfängt die interessierende 24-Bit-Adresse. Ein erster Ausgang des Adreßvergleichers 208 ist mit einem ersten Eingang der Nachschlageinrichtung 206 verbunden, um an dieselbe den L-Bit-Abschnitt 72 und den Seiten-Offset 68 (siehe 3) der interessierenden virtuellen Adresse zu übergeben. Ein weiterer Ausgang des Adreßvergleichers 208 ist mit einem Eingang des Zusatz-TLBs 210 verbunden, um an denselben die interessierende virtuelle Adresse weiterzuleiten. Weitere Eingänge der Nachschlageinrichtung 206 erhalten die Virtuelle-Adresse-Spezifikation jedes Adreßübersetzungseintrags 204. Über einen Ausgang ist die Nachschlageinrichtung 206 in der Lage, eine physikalische Seitenadresse eines Adreßübersetzungseintrags 204 abzurufen, woraufhin der Speicher 202 die gesuchte physikalische Adresse an einen Ausgang 212 des TLB 200 ausgibt. Ein weiterer Ausgang der Nachschlageinrichtung 206 ist direkt mit dem Ausgang 212 des TLB 200 verbunden, um im Falle eines Fehlschlags ein Fehlschlagsignal auszugeben. Ein weiterer Ausgang des TLB 200 bildet einen weiteren Ausgang 214 des Zusatz TLB 210.
  • Nachdem im vorhergehenden der Aufbau der TLB 200 beschrieben worden ist, wird im folgenden dessen Funktionsweise beschrieben, wobei darauf hingewiesen wird, daß der TLB 200 von 6 unmittelbar für das Speicherlayout von 1 und 2 ausgelegt ist, d.h. für die gemeinschaftliche Verwendung eines einzigen physikalischen Adreßbereichs für jeden JVM-Bereich jedes Paketes. Eine interessierende virtuelle Adresse mit 24 Bits gelangt in den Adreßvergleicher 208. Der Adreßverglei cher 208 überprüft den 3-Bit-shared-memory-Anzeiger der interessierenden virtuellen Adresse daraufhin, ob diese Bits alle eine logische 0 aufweisen. Ist dies der Fall, handelt es sich um eine virtuelle Adresse aus dem JVM-Bereich eines beliebigen Paketes, wie es aus der Beschreibung der 2 und 3 hervorgeht. In dem Fall, daß es sich bei der interessierenden virtuellen Adresse um eine shared-memory-Adresse handelt, gibt der Adreßvergleicher 208 die noch nicht überprüften Bits der internen Packageadresse 64 (3) der interessierenden virtuellen Adresse, nämlich den Abschnitt 72 und den Offset 68, an die Nachschlageinrichtung 206 aus. Die Nachschlageinrichtung 206 vergleicht die L höchstwertigen Bits, wie sie von dem Adreßvergleicher 208 erhalten werden, mit den L-Bit-Spezifikationen der Adreßübersetzungseinträge 204. Falls einer der 16 Vergleicher eine vollständige bitweise Übereinstimmung ergibt, fordert die Nachschlageinrichtung 206 die physikalische Seitenadresse des entsprechenden Adreßübersetzungseintrags 204 von dem Speicher 202 an, der daraufhin die gesuchte physikalische Adresse 212 ausgibt. Die Nachschlageinrichtung 206 ergänzt die physikalische Seitenadresse von dem Speicher 202 um den Seiten-Offset 68 der interessierenden virtuellen Adresse. In dem Fall eines Fehlschlags gibt die Nachschlageinrichtung 206 ein entsprechendes Fehlschlagsignal aus, wobei in diesem Fall eine Steuereinrichtung (nicht gezeigt) wie in dem Vergleichsbeispiel von 4 die physikalische Adresse zu der interessierenden virtuellen Adresse aus einer hierarchiemäßig tieferen Struktur, wie z.B. einer Tabelle, einer verketteten Liste oder einem Baum aus Tabellen, herleitet und einen der Adreßübersetzungseinträge 204 in dem Speicher 202 durch einen neuen Adreßübersetzungseintrag ersetzt, der eine L-Bit-Spezifikation aufweist, die dem L-Bit-Abschnitt der interessierenden virtuellen Adresse entspricht, und eine physikalische Seitenadresse aufweist.
  • Ergibt die Überprüfung des Adreßvergleichers 208, daß die interessierende virtuelle Adresse keine shared-memory-Adresse ist, leitet dieselbe die interessierende virtuelle 24-Bit- Adresse an den Zusatz TLB 210 weiter, der beispielsweise auf dieselbe Weise funktioniert wie der TLB von 7 und aufgrund der Vorabüberprüfung des Adreßvergleichers 208 lediglich für individuellen interessierende virtuelle Adressen zuständig ist.
  • Wieder konkret Bezug nehmend auf das Speicherlayout von 1-3 werden folglich jegliche JVM-Adressen des virtuellen Adreßraumes, die sich lediglich in ihrer Package-Adresse 260 unterscheiden, zu demselben Eingangswert bei der Nachschlageinrichtung 206 führen. Die Adreßspezifikationen der Adreßübersetzungseinträge 204 spezifizieren deshalb lediglich den L-Bit-Abschnitt 72, da ja die Bits des 3-Bit-SM-Anzeigers 70 der interessierenden virtuellen Adresse bereits auf das Vorliegen von „000" überprüft worden sind, und die Bits der Package-Adresse 62 der interessierenden virtuellen Adresse für den Vergleich durch die Nachschlageinrichtung 206 unbeachtlich sind, und deshalb auch durch den Adreßvergleicher 208 nicht überprüft werden. Ist die interessierende virtuelle Adresse folglich eine virtuelle Adresse, die in dem L-Bit-Abschnitt 72 Bits aufweist, die der Virtuellen-Adresse-Spezifikation eines der Adreßübersetzungseinträge 204 entspricht, und bei der die 3 Bits des 3-Bit-SM-Anzeigers 70 Null sind, so gibt der Speicher 202 die gesuchte physikalische Adresse aus.
  • Da sich die Adreßspezifikationen der Adreßübersetzungseinträge 204 auf einen Bitbereich der interessierenden virtuellen Adresse beschränken, die den Versatz innerhalb eines JVM-Bereiches festlegen, nämlich auf den Bereich 72 (siehe 3), sind unterschiedliche Adreßspezifikationen immer unterschiedlichen physikalischen Seitenadressen zugeordnet. Anders ausgedrückt erzielt der Adreßvergleicher 208 eine Bijektivität der durch die Adreßübersetzungseinträge 204 verwirklichten Abbildungsvorschrift zwischen Package-Seitenadressen 68 einerseits und physikalischen Seitenadressen andererseits. Der Adreßvergleicher 208 erzielt dies, indem die Anzahl von virtuellen Adressen, die auf eine Adreßspezifikation eines speziellen Adreßübersetzungseintrags 204 zutreffen, durch die Bitüberprüfung des 3-Bit-Adreßvergleichers 208 auf solche virtuellen Adressen eingeschränkt wird, die innerhalb jedes Packages in dem JVM-Bereich relativ am selben Ort angeordnet sind bzw. ein und derselben gemeinschaftlich verwendeten physikalischen Adresse zugeordnet sind. Vereinfacht wird die Realisierung bei dem vorliegenden Ausführungsbeispiel durch den einfachen Aufbau der virtuellen Adressen, wie es Bezug nehmend auf 2 und 3 beschrieben worden ist, wobei jedoch ohne weiteres die Anordnung der Bit-Bereiche variiert werden könnte.
  • In Bezug auf die Vergleichsbeispiele wird darauf hingewiesen, daß die Seitengröße für die vorliegende Erfindung nicht wesentlich ist, und beispielsweise auch 1 betragen oder, mit entsprechenden Vorkehrungen auch variieren kann.

Claims (2)

  1. Vorrichtung zur Übersetzung einer virtuellen Adresse (VA) in eine zugeordnete physikalische Adresse (PA), wobei mehrere virtuelle Adressen auf eine einzige physikalische Adresse abgebildet sein können, wobei die virtuellen Adressen N-Bit lang sind und jede virtuelle Adresse (60) einen M-Bit-Shared-Memory-Anzeiger (70), ein L-Bit-Wort (72) und eine Package-Adresse (62) mit N > L + M aufweist, mit einer ersten Adreßübersetzungseinrichtung (202, 206); einer zweiten Adreßübersetzungseinrichtung (210); einer Vorabüberprüfungseinrichtung (208) zum Überprüfen der virtuellen Adresse (VA) daraufhin, ob der M-Bit-Shared-Memory-Anzeiger (70) eine vorbestimmte Bitkombination aufweist, um bei Übereinstimmung das L-Bit-Wort (72) an die erste Adreßübersetzungseinrichtung (202, 206) auszugeben und anderenfalls die virtuelle Adresse (VA) an die zweite Adreßübersetzungseinrichtung (210) weiterzuleiten; wobei die erste Adreßübersetzungseinrichtung (202, 206) zur Speicherung von L-Bit-Tags und zugeordneten physikalischen Adressen und einem Vergleich der L-Bit-Tags mit dem L-Bit-Wort (72) mittels einer Vergleichseinrichtung (206) ausgebildet ist, um bei Übereinstimmung die der virtuellen Adresse (VA) zugeordnete physikalische Adresse (PA) auszugeben, und wobei die zweite Adreßübersetzungseinrichtung (210) zur Speicherung von Virtuelle-Adreß-Tags und zugeordneten physikalischen Adressen und Ausgabe der der virtuellen Adresse (VA) zugeordneten physikalischen Adresse (PA) im Fall der Übereinstimmung ausgebildet ist.
  2. Vorrichtung gemäß Anspruch 1, wobei bei Nicht-Übereinstimmung in einer der Adreßübersetzungseinrichtungen (202, 206; 210) ein Fehlschlagsignal erfolgt, um die der virtuellen Adresse (VA) zugeordnete physikalische Adresse (PA) nach einer vollständigen Abbildungsvorschrift zu ermitteln und nach einem vorbestimmten Ersetzungsschema in der ersten oder zweiten Adreßübersetzungseinrichtung zu speichern.
DE10260606A 2002-12-23 2002-12-23 Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse Expired - Fee Related DE10260606B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10260606A DE10260606B4 (de) 2002-12-23 2002-12-23 Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10260606A DE10260606B4 (de) 2002-12-23 2002-12-23 Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse

Publications (2)

Publication Number Publication Date
DE10260606A1 DE10260606A1 (de) 2004-07-15
DE10260606B4 true DE10260606B4 (de) 2006-03-30

Family

ID=32519309

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10260606A Expired - Fee Related DE10260606B4 (de) 2002-12-23 2002-12-23 Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse

Country Status (1)

Country Link
DE (1) DE10260606B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9171161B2 (en) * 2006-11-09 2015-10-27 International Business Machines Corporation Trusted device having virtualized registers

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630087A (en) * 1994-11-02 1997-05-13 Sun Microsystems, Inc. Apparatus and method for efficient sharing of virtual memory translations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630087A (en) * 1994-11-02 1997-05-13 Sun Microsystems, Inc. Apparatus and method for efficient sharing of virtual memory translations

Also Published As

Publication number Publication date
DE10260606A1 (de) 2004-07-15

Similar Documents

Publication Publication Date Title
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE2260353C2 (de) Schaltungsanordnung für die Adressenumsetzung in einer Datenverarbeitungsanlage
DE3011552C2 (de)
DE2227882C2 (de) Virtuelle Speicheranordnung
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE3151745C2 (de)
DE10002120B4 (de) Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
DE2154106A1 (de) Arbeitsspeicherwerk
DE2302074A1 (de) Speicherschutzanordnung in einem multiprozessorsystem
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE19526960A1 (de) Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung
DE2939411C2 (de) Datenverarbeitungsanlage mit virtueller Speicheradressierung
WO1994027222A1 (de) Verfahren zum umsetzen einer virtuellen speicheradresse mit einer ersten länge in eine realadresse mit einer zweiten länge
WO1996023260A1 (de) Verfahren zum betreiben einer adressumsetzvorrichtung
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE4234695C2 (de) Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache
DE10260606B4 (de) Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers
DE3216238C1 (de) Datenverarbeitungsanlage mit virtueller Teiladressierung des Pufferspeichers
DE3633227A1 (de) Anordnung zur umwandlung einer virtuellen adresse in eine physikalische adresse fuer einen in seiten organisierten arbeitsspeicher einer datenverarbeitungsanlage
DE19538961C2 (de) Speichervorrichtung zum Speichern von Daten
DE69732691T2 (de) System zur selektiven und gemeinsamen Ungültigkeitserklärung von Einträgen eines Adressencachespeichers und eines Datencachespeichers, welche durch ein oder mehrere Adressencacheungültigkeitserklärungen verursacht wird
WO2004055678A2 (de) Verfahren zum betrieb eines cache-speichers
DE4405845C2 (de) Verfahren zum Umsetzen einer virtuellen Speicheradresse eines virtuellen Speichers in eine Realadresse eines Realspeichers

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee