DE60320026T2 - Verbessertes speichermanagement für echtzeit-anwendungen - Google Patents
Verbessertes speichermanagement für echtzeit-anwendungen Download PDFInfo
- Publication number
- DE60320026T2 DE60320026T2 DE60320026T DE60320026T DE60320026T2 DE 60320026 T2 DE60320026 T2 DE 60320026T2 DE 60320026 T DE60320026 T DE 60320026T DE 60320026 T DE60320026 T DE 60320026T DE 60320026 T2 DE60320026 T2 DE 60320026T2
- Authority
- DE
- Germany
- Prior art keywords
- address translation
- memory
- translation data
- address
- tlb
- 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
Links
- 238000013519 translation Methods 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
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)
- Debugging And Monitoring (AREA)
- Exchange Systems With Centralized Control (AREA)
Description
- Die Erfindung betrifft im Allgemeinen die Speicherverwaltung in einem Computersystem und insbesondere einen verbesserten Speicheradressen-Umsetzungsmechanismus zur Verbesserung der Leistungsfähigkeit von in einem Computersystem ausgeführten Echtzeit-Anwendungen.
- In einem modernen Computersystem wird ein als virtueller Speicher bekanntes Verfahren zur Verwaltung der Ressource von physischem oder realem Speicher des Computersystems verwendet. Dieses Verfahren bietet der Anwendung den Anschein einer sehr hohen Speicherkapazität. Ursprünglich wurde das virtuelle Speichersystem zum Lösen des Problems von zu wenig verfügbarem physischem oder realem Speicher entwickelt. Obwohl dies in den meisten modernen Systemen mit reichlich Speicher möglicherweise kein Problem mehr ist, hat sich der Mechanismus des virtuellen Speichers selbst aus anderen Gründen als nützlich erwiesen. Unter anderem vereinfacht der virtuelle Speichermechanismus die Speicherzuordnung und/oder den Speicherschutz sowie die Entwicklung von Anwendungsprogrammen.
- In einem virtuellen Speichersystem werden virtuelle Adressen in reale Adressen mit Seitentabellen, die eine Vielzahl von Seitentabelleneinträgen (page table entries – PTEs) aufweisen, umgesetzt. Normalerweise werden solche Seitentabellen in einem Hauptspeicher des Computersystems, beispielsweise einem DRAM-Chip, gespeichert. Es gibt jedoch einen Engpass zwischen der CPU und dem Hauptspeicher, da der die CPU und den Hauptspeicher verbindende Speicherbus viel langsamer als die Betriebsgeschwindigkeit der CPU ist. Bei bestimmten Anwendungen, die keine Echtzeit-Antwort benötigen, ist dieser Engpass möglicherweise nicht von Belang. Jedoch kann dieser Engpass für viele Echtzeit-Anwendungen eine merkliche Verzögerung bei der Verarbeitung solcher Anwendungen bewirken.
- Ein bekanntes Verfahren zum Umgehen dieses Engpassproblems ist die Speicherung von PTEs in einem speziellen als Adressumsetzpuffer (translation lookaside buffer – TLB) bezeichneten Cachespeicher, der sich nahe der Zentraleinheit (CPU) befindet. Normalerweise ist der TLB auf einem Chip in der CPU integriert, um jede mit dem Durchsuchen von Seitentabellen in einem Hauptspeicher verbundene Verzögerung zu beseitigen oder deutlich zu verringern, so lange ein bestimmter Satz von von der CPU gesuchten PTE(s) im TLB gespeichert ist. Wenn der bestimmte Satz von PTE(s) nicht im TLB gefunden wird, wird dieses Ereignis normalerweise als ein TLB-Fehlschlag definiert.
- Bei Speicherlese- und/oder -schreibanforderungen wird die Abbildung vom virtuellen auf den realen Speicher im Allgemeinen im TLB zwischengespeichert. Wenn ein TLB-Fehlschlag vorliegt, muss spezielle Hardware oder Software den TLB erneut mit dem korrekten PTE laden. Ein erneuter Software- oder Hardware-Ladevorgang des TLB kann hinsichtlich der Leistungsfähigkeit ziemlich kostspielig werden, da ein solcher erneuter Ladevorgang das Lesen von PTEs aus dem Hauptspeicher und das Suchen nach einer Übereinstimmung erforderlich machen würde. Normalerweise können bis zu drei Cache-Zeilenfehlschläge nötig sein, um eine Übereinstimmung zu finden. In Echtzeit-Anwendungen ist ein TLB-Fehlschlag daher nicht wünschenswert.
-
EP 1 182 569 A1 (Texas Instruments Inc.) beschreibt einen TLB, der eine Teilgruppe von TLB-Einträgen unter Verwendung eines speziellen, von einem Task-Kennzeichner (task identifier) bezeichneten Befehls sperren kann. Sowohl die Task-Kennzeichner als auch die Sperrmarkierungen (locking flags) werden in TLB-Einträgen gespeichert. -
US 2002/0053006 A1 -
EP 0 856 797 A1 (SGS-Thomson Microelectronics Ltd.) beschreibt ein Partitionierungsschema für einen Cachespeicher, in dem ein bestimmter Anzeiger von einem Prozessstatusspeicher bereitgestellt und zum Begrenzen von Kandidaten zum Ersetzen für den Prozess auf bestimmte Cachespeicher-Partitionen verwendet wird. - Die vorliegende Erfindung stellt ein Verfahren zur Verbesserung der Speicherverwaltung in einem Computersystem, wie es in Anspruch 1 beansprucht wird, sowie eine entsprechende Vorrichtung und ein Computerprogramm, wie sie in weiteren Ansprüchen beansprucht werden, bereit.
- Zum umfassenderen Verständnis der vorliegenden Erfindung und deren Vorteile wird nun auf die folgenden Beschreibungen in Verbindung mit den begleitenden Zeichnungen Bezug genommen, in denen:
-
1 eine Übersichtsdarstellung ist, die einen verbesserten Speicherverwaltungsmechanismus für Echtzeit-Anwendungen zeigt; -
2 ein ausführlicheres Blockschaltbild ist, das eine bevorzugte Ausführungsform eines verbesserten Speicherverwaltungsmechanismus für Echtzeit-Anwendungen zeigt; und -
3 ein Beispiel einer Ersatzverwaltungstabelle (replacement management table – RMT) ist, die in Verbindung mit dem verbesserten Speicherverwaltungsmechanismus von2 verwendet werden muss. - Es sei darauf hingewiesen, dass, wenn nicht anders angegeben, alle hierin beschriebenen Funktionen in Hardware oder Software oder einer Kombination aus beidem ausgeführt werden können. In einer bevorzugten Ausführungsform werden die Funktionen jedoch, wenn nicht anders angegeben, von einem Prozessor, beispielsweise einem Computer oder einem elektronischen Datenprozessor, gemäß einem Code, beispielsweise einem Computerprogrammcode, Software und/oder integrierten Schaltkreisen ausgeführt, die zum Ausführen solcher Funktionen codiert sind.
- Mit Bezugnahme auf
1 der Zeichnungen bezeichnet die Bezugsziffer100 allgemein eine Übersichtsdarstellung, die einen verbesserten Speicherverwaltungsmechanismus für Echtzeit-Anwendungen zeigt. Im Allgemeinen ist die Übersichtsdarstellung100 auf ein Computersystem anwendbar, das einen virtuellen Speicher verwendet. Die meisten modernen Computersysteme gehören zu dieser Kategorie. Eine virtuelle Adresse102 wird unter Verwendung von in einer Seitentabelle106 gespeicherten Seitentabelleneinträgen (PTEs) (nicht gezeigt) und eines Adressumsetzpuffers (TLB)108 in eine reale oder physische Adresse104 umgesetzt. Insbesondere beinhaltet die virtuelle Adresse102 eine virtuelle Seitennummer (virtual Page number – VPN)102A und einen Seitenversatz (page Offset)102B . Ähnlich enthält die reale Adresse102 eine Seitenrahmennummer (page frame number – PFN)104A und einen Seitenversatz104B . Vorzugsweise wird nur die VPN102A der virtuellen Adresse102 in die PFN104A der realen Adresse104 umgesetzt. Der Seitenversatz102B wird ohne Änderung in den Seitenversatz104B kopiert. - Außerdem wird ein Hardware- und/oder Software-Algorithmus
110 zum Ersetzen von Seiten (page replacement algorithm – PRA) verwendet, um den TLB zu unterstützen, wenn ein TLB-Fehlschlag auftritt und ein PTE im TLB durch einen neuen PTE (der die fehlende Seite enthält) aus der Seitentabelle106 ersetzt werden muss. Ein TLB-Sperrmechanismus (TLB locking mechanism)112 steht in Wechselwirkung mit dem TLB108 und dem PRA110 , um den Speicherverwaltungsmechanismus100 für Echtzeit-Anwendungen zu verbessern. - Mindestens eine Zentraleinheit (CPU) (nicht gezeigt) steuert direkt oder indirekt die meisten in diesem Zusammenhang notwendigen Vorgänge und/oder Berechnungen, wenn nicht anders angegeben. Außerdem speichert ein mit der CPU verbundener Speicher (nicht gezeigt) die Seitentabelle
106 . Im Falle einer Ausführung in Hardware ist der PRA110 mit dem TLB108 und dem TLB-Sperrmechanismus112 verbunden. Im Falle einer Ausführung in Software wird der PRA110 in einem Speicher (nicht gezeigt) gespeichert und von der CPU ausgeführt, wenn ein TLB-Fehlschlag auftritt. - Im Allgemeinen dauert es verhältnismäßig lange (im Vergleich zum wahrscheinlich kurzen Taktzyklus der CPU), bis die CPU Zugriff auf den die Seitentabelle
106 speichernden Speicher erhält. Der TLB108 ist ein spezieller Cachespeicher, der zum dynamischen Speichern eines Teils der ursprünglich aus der Seitentabelle106 erhältlichen PTEs verwendet wird. Insbesondere ist der TLB ein assoziativer Speicher zur Speicherung eines verhältnismäßig kleinen Satzes von PTEs zum schnellen Zugriff. Unter Berücksichtigung des Wertes eines oder mehrerer Felder durchsucht ein Hardware-Mechanismus in einem assoziativen Speicher alle Datensätze und gibt den Datensatz zurück, dessen Feld den gegebenen Wert enthält. Unter Berücksichtigung der VPN102A durchsucht ein Hardware-Mechanismus im TLB108 alle PTEs im TLB und gibt die PFN104A zurück, vorausgesetzt, es tritt kein TLB-Fehlschlag auf. Es sei darauf hingewiesen, dass anstelle des TLB108 andere Typen von assoziativem Speicher verwendet werden können, ohne vom vorliegenden Erfindungsgedanken abzuweichen. - Normalerweise wird der TLB
108 zum dynamischen Zwischenspeichern einiger der PTEs verwendet, die die CPU möglicherweise in naher Zukunft verwenden könnte. Der PRA110 sagt in der Tat voraus, welche Seiten die CPU in naher Zukunft verwenden könnte und legt dementsprechend fest, welche PTEs zu einem gegebenen Zeitpunkt im TLB108 gespeichert werden müssen. Nach dem derzeitigen Stand der Technik sind viele verschiedene Algorithmen zum Ersetzen von Seiten bekannt, darunter – jedoch nicht ausschließlich – ein LRU-Algorithmus (least-recently-used (LRU) algorithm) (nicht gezeigt). Wenn ein TLB-Fehlschlag vorliegt, ersetzt der LRU-Algorithmus einen PTE, der für die längste Zeitspanne nicht verwendet wurde, durch einen neuen PTE (z. B. den PTE, der im TLB fehlte). - Obwohl dieses Seitenersatzschema die Gesamtleistungsfähigkeit des Speicherverwaltungsmechanismus
100 im Lauf der Zeit optimieren kann, berücksichtigt dieses Schema keinen möglichen nachteiligen Einfluss, den es auf Echtzeit-Anwendungen haben könnte. Es wird gezeigt, dass der TLB-Sperrmechanismus112 dieses Problem durch die Verwendung des TLB108 und des PRA110 überwindet. Im Allgemeinen verhindert der TLB-Sperrmechanismus112 , dass ein Satz von Echtzeit-Anwendungen zugeordneten PTE(s) durch einen anderen Satz von PTEs ersetzt wird, der in die Seitentabelle106 gehört. Mit anderen Worten, der TLB-Sperrmechanismus112 sperrt den Satz von Echtzeit-Anwendungen zugeordneten PTE(s), so dass der Satz von PTE(s) ungeachtet der Festlegung des PRA110 nicht aus dem TLB108 entfernt werden kann. - Es ist wichtig, darauf hinzuweisen, dass die vorliegende Erfindung nicht unbedingt auf Echtzeit-Anwendungen begrenzt ist, obwohl solche Anwendungen von der vorliegenden Erfindung höchstwahrscheinlich profitieren würden. Im Allgemeinen muss die vorliegende Erfindung als auf jeden Typ von Anwendung und/oder alle entsprechenden Anwendungen anwendbar betrachtet werden, bei denen verhindert werden muss, dass sie im Falle eines TLB-Fehlschlags ersetzt werden.
- Mit Bezugnahme auf
2 wird nun einausführlicheres Blockschaltbild200 gezeigt, um eine bevorzugte Ausführungsform eines verbesserten Speicherverwaltungsmechanismus für Echtzeit-Anwendungen zu veranschaulichen. Im Allgemeinen erfolgen Speicheranwendungen von einer CPU (nicht gezeigt) in Form einer gültigen Adresse (EA)202 . Die EA202 wird in eine virtuelle Adresse (VA)204 umgesetzt, die ihrerseits in eine reale Adresse (RA)206 umgesetzt wird. Die gültige Adresse (EA) enthält eine gültige Segmentkennung (effective segment ID – ESID)206A , eine Seitennummer (PN)206B und einen Versatz206C . Ähnlich hat die VA204 eine virtuelle Segmentkennung (VSID)204A , eine Seitennummer (PN)204B und einen Versatz204C . Vorzugsweise wird eine virtuelle Seitennummer (VPN)204D erzeugt, indem die VSID204A mit der PN204B verkettet wird. - Die EA
202 wird an einen Segmentumsetzpuffer (segment lookaside buffer – SLB)208 und einen Adressumsetzpuffer (TLB)210 weitergeleitet. Der SLB208 ist so konfiguriert, dass er die EA202 in die VA204 umsetzt. Vorzugsweise setzt der SLB208 die ESID202A in die VSID204A um, wohingegen die PN202B und der Versatz202C in die PN204B bzw. den Versatz204C kopiert werden. - Unter Berücksichtigung der VPN
240D und der EA202 durchsucht die CPU den TLB210 nach einer Übereinstimmung in Seitentabelleneinträgen (PTEs) (d. h. nach einem PTE-Treffer), indem sie auf alle durch die EA202 indizierten PTEs zugreift und die VPN204A vergleicht. Im Falle eines Treffers wird eine reale Seitennummer212 zurückgegeben. Vorzugsweise wird zur Ausführung eines solchen Vergleichs ein TAG-Komparator214 zusammen mit einem Logikelement216 verwendet. Insbesondere ermöglicht das Logikelement216 die Weiterleitung der RPN212 , wenn die VPN204D mit einer VPN218 im TLB210 übereinstimmt. Wenn die VPN204D nicht mit der VPN218 im TLB210 übereinstimmt, verhindert der TAG-Komparator214 , dass das Logikelement216 die RPN212 weiterleitet. - Im Falle eines Fehlschlags durchsucht ein TLB-Neulademechanismus (TLB reload mechanism) (nicht gezeigt) eine Seitentabelle (nicht gezeigt) in einem Speicher (nicht gezeigt) und lädt den TLB
210 erneut. Wenn der TLB210 nach einem Fehlschlag erneut geladen wird, wird in einer herkömmlichen TLB-Struktur ein Algorithmus220 zum Ersetzen von Seiten (PRA), beispielsweise ein LRU-Algorithmus, verwendet, um anzuzeigen, welcher Satz von PTEs in einer Kongruenzklasse ersetzt werden muss. - Im Falle eines erneuten Ladens des TLB werden ein Satz von Bereichsregistern
222 , Kategoriekennungen, ein Satz224 zum Ersetzen, eine Ersatzverwaltungstabelle (RMT)226 und ein Steuerblock230 für den Satz zum Ersetzen verwendet, um den zu ersetzenden Satz auszuwählen. Insbesondere die Bereichsregister222 werden mit der RMT226 verbunden, um die Kategoriekennungen in die RMT226 zu übertragen. Das erneute Laden des TLB wird durch Übertragen der EA202 an die Bereichsregister222 ausgeführt. Wenn es in den Bereichsregistern222 einen Treffer gibt, wird eine Kategoriekennung erzeugt und an die RMT226 weitergeleitet. Die RMT erzeugt RMT-Ersatzsteuerbits, die über einen RMT-Ersatzsteuerbus232 an den Steuerblock230 für den Satz zum Ersetzen übertragen werden. Der Steuerbus230 für den Satz zum Ersetzen verwendet die RMT-Ersatzsteuerbits und den Satz224 zum Ersetzen aus dem TLB210 zur Festlegung des zu ersetzenden Satzes. -
3 zeigt ein Beispiel der RMT226 . In diesem Beispiel umfasst die RMT226 eine Matrix von acht Kategoriekennungen (Zeilen) und acht TLB-Sätzen (Spalten). Vorzugsweise veranschaulicht die RMT226 die Entscheidungen der Betriebssystemsoftware hinsichtlich des Ersatzverwaltungsstatus der Sätze im TLB210 , wenn sie mit einer gegebenen Kategoriekennung korrelieren. - In einer bevorzugten Ausführungsform ist die RMT
226 eine softwareverwaltete Tabelle. Die Software verwaltet die Struktur und interpretiert die Bedeutung von RMT-Einträgen. Im Allgemeinen wird die RMT226 bei der Abbildung eines gültigen Adressbereichs auf einen oder mehrere Sätze des TLB verwendet. Außerdem stellt eine Kategoriekennung (d. h. eine Zeile der RMT226 ) einen gegebenen Adressbereich dar. In diesem Beispiel entspricht die Kategoriekennung 0 jedem Adressbereich, der nicht speziell für die anderen Kategoriekennungen bereitgestellt wird. Die gegebene Kategoriekennung wird sodann an die RMT übertragen und von dieser als Index verwendet. Unter Verwendung der Kategoriekennung als Index wird auf die RMT226 zugegriffen, und die Daten werden auf dem RMT-Ersatzsteuerbus232 übertragen. - In diesem Beispiel ist die RMT
226 eine Acht-mal-acht-Matrix. Mit anderen Worten, der TLB210 ist 8fach Satz-assoziativ (8-way set associative) (das heißt, er hat 8 Sätze). Daher hat jeder RMT-Eintrag 8 Bits. Insbesondere hat die RMT226 Einsen ("1") in der Zeile 0 der Kategoriekennung aus den TLB-Sätzen 0 bis 2 und Nullen ("0") im Rest der Zeile definiert. Falls die Daten im TLB ersetzt werden müssen, kann die Kategoriekennung 0 daher in den ersten drei Sätzen, den Sätzen 0 bis 2 des TLB, aktualisiert werden. Außerdem verwendet ausschließliche die Kategoriekennung 0 diese Sätze. Daher sind die Sätze 0 bis 2 des TLB ausschließlich für die Kategoriekennung 0. Die Kategoriekennung 0 stellt eine Standard-Kategoriekennung für eine Adresse bereit, die keinen Treffer im Bereichsregister erzielt. - Bei der Kategoriekennung 1 hat die RMT eine "0" in den Sätzen 0 bis 2 und den Sätzen 4 bis 7 und eine "1" für Satz 3 definiert. Alle der Kategoriekennung 1 entsprechenden Daten müssen in den Sätzen 0 bis 2 oder den Sätzen 4 bis 7 nicht ersetzt werden. Stattdessen müssen die Daten im Satz 3 ersetzt werden. Die Kategoriekennung 2 und die Kategoriekennung 3 ersetzen beide denselben Satz, Satz 7. Daher müssen sowohl die Kategoriekennung 2 als auch die Kategoriekennung 3 nur den Satz 7 ersetzen. Die Kategoriekennung 4 hat mehrere Sätze, die gültige Kandidaten für einen Ersatz sind. Dies sind die Sätze 4, 5 und 6.
- Die endgültige Auswahl des Satzes zum Ersetzen erfolgt durch irgendeinen Algorithmus zum Ersetzen von Seiten (PRA), beispielsweise den LRU-Algorithmus. Mit anderen Worten, bestimmte Sätze werden durch die RMT als zum Ersetzen geeignet markiert, und anschließend wird eine im Auswahlblock
230 für den Satz zum Ersetzen von2 enthaltene LRU-Algorithmussteuerlogik (nicht gezeigt) zum endgültigen Festlegen der Auswahl des zu ersetzenden Satzes verwendet.
Claims (7)
- Verfahren zur Verbesserung der Speicherverwaltung in einem Computersystem mit einer Verarbeitungslogik sowie einem ersten und zweiten Speicher, wobei das Verfahren die folgenden Schritte umfasst: Speichern von Adressumsetzungsdaten zwischen virtuellen Adressen und realen Adressen im ersten Speicher (
106 ); Zwischenspeichern von mindestens einem Teil der Adressumsetzungsdaten im zweiten Speicher (108 ) zum schnelleren Zugriff der Verarbeitungslogik, wobei der Teil der Adressumsetzungsdaten eine Teilgruppe von Adressumsetzungsdaten enthält, wobei der zweite Speicher sich näher bei der Verarbeitungslogik befindet als der erste Speicher; und Verhindern, dass die Teilgruppe von Adressumsetzungsdaten durch andere, im ersten Speicher gespeicherte Adressumsetzungsdaten ersetzt wird; dadurch gekennzeichnet, dass der Schritt des Verhinderns, dass die Teilgruppe von Adressumsetzungsdaten durch andere, im ersten Speicher gespeicherte Adressumsetzungsdaten ersetzt wird, außerdem die folgenden Schritte umfasst: Erzeugen von einer oder mehreren Kategoriekennungen (Class IDs) durch ein Bereichsregister (222 ), wobei jede Kategoriekennung einen gegebenen Adressbereich einer gültigen Adresse darstellt; Zugreifen auf eine Ersatzverwaltungstabelle (226 ) unter Verwendung der einen oder mehreren Kategoriekennungen als Indizes; Abbilden der einen oder mehreren Kategoriekennungen durch die Ersatzverwaltungstabelle auf eine oder mehrere Sätze des mindestens einen Teils der Adressumsetzungsdaten; Feststellen, welcher Satz der Adressumsetzungsdaten auf der Grundlage der Ersatzverwaltungstabelle für ein Ersetzen in Frage kommt; und Ausführen eines Algorithmus zum Ersetzen mit nur dem Satz der Adressumsetzungsdaten, von denen festgestellt wurde, dass sie für ein Ersetzen in Frage kommen. - Verfahren nach Anspruch 1, wobei der erste und der zweite Speicher ein Hauptspeicher bzw. ein Adressumsetzpuffer des Computersystems sind.
- Verfahren nach Anspruch 1, wobei die Adressumsetzungsdaten in einer oder mehreren Seitentabellen mit einem oder mehreren Seitentabelleneinträgen gespeichert werden.
- Verfahren nach Anspruch 1, wobei die Teilgruppe von Adressumsetzungsdaten für Echtzeit-Anwendungen zugeordnet werden.
- Verfahren nach irgendeinem vorhergehenden Anspruch, das außerdem die folgenden Schritte umfasst: Erstellen einer Speicheranforderung von der Verarbeitungslogik in Form einer gültigen Adresse; Erzeugen einer der gültigen Adresse entsprechenden virtuellen Adresse; Durchsuchen des zweiten Speichers nach einem ersten Satz von Adressumsetzungsdaten, bei denen die virtuelle Adresse mit einer realen Adresse übereinstimmt; auf die Feststellung hin, dass der zweite Speicher den ersten Satz von Adressumsetzungsdaten nicht speichert, Durchsuchen des ersten Speichers nach dem ersten Satz von Adressumsetzungsdaten; und auf die Feststellung hin, dass der erste Speicher den ersten Satz von Adressumsetzungsdaten speichert, Laden des ersten Satzes von Adressumsetzungsdaten in den zweiten Speicher, um einen zweiten Satz von Adressumsetzungsdaten im ersten Speicher zu ersetzen, wobei der zweite Satz von Adressumsetzungsdaten nicht für Echtzeit-Anwendungen zugeordnet wird.
- Vorrichtung, die ein Mittel umfasst, das zum Ausführen aller Schritte des Verfahrens nach irgendeinem vorhergehenden Verfahrensanspruch geeignet ist.
- Computerprogramm, das Befehle zum Ausführen aller Schritte des Verfahrens nach irgendeinem vorhergehenden Verfahrensanspruch umfasst, wenn das Computerprogramm in einem Computersystem ausgeführt wird.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/318,541 US7103748B2 (en) | 2002-12-12 | 2002-12-12 | Memory management for real-time applications |
US318541 | 2002-12-12 | ||
PCT/GB2003/005108 WO2004053698A2 (en) | 2002-12-12 | 2003-11-21 | Improved tlb management for real-time applications |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60320026D1 DE60320026D1 (de) | 2008-05-08 |
DE60320026T2 true DE60320026T2 (de) | 2009-05-14 |
Family
ID=32506386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60320026T Expired - Lifetime DE60320026T2 (de) | 2002-12-12 | 2003-11-21 | Verbessertes speichermanagement für echtzeit-anwendungen |
Country Status (11)
Country | Link |
---|---|
US (1) | US7103748B2 (de) |
EP (1) | EP1581873B1 (de) |
JP (1) | JP4129458B2 (de) |
KR (1) | KR100843536B1 (de) |
CN (1) | CN100397367C (de) |
AT (1) | ATE390667T1 (de) |
AU (1) | AU2003302824A1 (de) |
CA (1) | CA2505610C (de) |
DE (1) | DE60320026T2 (de) |
IL (1) | IL169136A0 (de) |
WO (1) | WO2004053698A2 (de) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7355601B2 (en) * | 2003-06-30 | 2008-04-08 | International Business Machines Corporation | System and method for transfer of data between processors using a locked set, head and tail pointers |
US6862027B2 (en) * | 2003-06-30 | 2005-03-01 | Microsoft Corp. | System and method for parallel execution of data generation tasks |
JP2005132525A (ja) * | 2003-10-29 | 2005-05-26 | Toyota Industries Corp | 産業車輌における立席型運転席用背もたれ構造 |
US7519791B2 (en) * | 2004-02-06 | 2009-04-14 | Intel Corporation | Address conversion technique in a context switching environment |
US7089341B2 (en) * | 2004-03-31 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform |
US7362705B2 (en) * | 2004-05-13 | 2008-04-22 | International Business Machines Corporation | Dynamic load-based credit distribution |
JP4233492B2 (ja) * | 2004-06-02 | 2009-03-04 | 富士通マイクロエレクトロニクス株式会社 | アドレス変換装置 |
US7840757B2 (en) * | 2004-07-29 | 2010-11-23 | International Business Machines Corporation | Method and apparatus for providing high speed memory for a processing unit |
US20060045031A1 (en) * | 2004-09-02 | 2006-03-02 | International Business Machines Corporation | Automatic hardware data link initialization using multiple state machines |
US20060047862A1 (en) * | 2004-09-02 | 2006-03-02 | International Business Machines Corporation | Automatic hardware data link initialization |
US7546401B2 (en) * | 2004-09-23 | 2009-06-09 | International Business Machines Corporation | Byte to byte alignment of multi-path data |
US8332592B2 (en) * | 2004-10-08 | 2012-12-11 | International Business Machines Corporation | Graphics processor with snoop filter |
US7305524B2 (en) * | 2004-10-08 | 2007-12-04 | International Business Machines Corporation | Snoop filter directory mechanism in coherency shared memory system |
US20060080511A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Enhanced bus transactions for efficient support of a remote cache directory copy |
US7577794B2 (en) | 2004-10-08 | 2009-08-18 | International Business Machines Corporation | Low latency coherency protocol for a multi-chip multiprocessor system |
US7475190B2 (en) * | 2004-10-08 | 2009-01-06 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
US7385925B2 (en) * | 2004-11-04 | 2008-06-10 | International Business Machines Corporation | Data flow control method for simultaneous packet reception |
US7260765B2 (en) * | 2004-12-17 | 2007-08-21 | International Business Machines Corporation | Methods and apparatus for dynamically reconfigurable parallel data error checking |
US20060140122A1 (en) * | 2004-12-28 | 2006-06-29 | International Business Machines Corporation | Link retry per virtual channel |
US7499452B2 (en) * | 2004-12-28 | 2009-03-03 | International Business Machines Corporation | Self-healing link sequence counts within a circular buffer |
US20060159023A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | CRC error history mechanism |
US7275124B2 (en) * | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability |
US7206886B2 (en) * | 2005-02-24 | 2007-04-17 | International Business Machines Corporation | Data ordering translation between linear and interleaved domains at a bus interface |
US7275125B2 (en) * | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Pipeline bit handling circuit and method for a bus bridge |
US7469312B2 (en) * | 2005-02-24 | 2008-12-23 | International Business Machines Corporation | Computer system bus bridge |
US7234017B2 (en) * | 2005-02-24 | 2007-06-19 | International Business Machines Corporation | Computer system architecture for a processor connected to a high speed bus transceiver |
US20060190655A1 (en) * | 2005-02-24 | 2006-08-24 | International Business Machines Corporation | Apparatus and method for transaction tag mapping between bus domains |
US7194567B2 (en) * | 2005-02-24 | 2007-03-20 | International Business Machines Corporation | Method and system for ordering requests at a bus interface |
US7330925B2 (en) * | 2005-02-24 | 2008-02-12 | International Business Machines Corporation | Transaction flow control mechanism for a bus bridge |
US7500062B2 (en) * | 2005-11-17 | 2009-03-03 | International Business Machines Corporation | Fast path memory read request processing in a multi-level memory architecture |
JP2007233615A (ja) * | 2006-02-28 | 2007-09-13 | Fujitsu Ltd | アドレス変換装置 |
US7886112B2 (en) * | 2006-05-24 | 2011-02-08 | Sony Computer Entertainment Inc. | Methods and apparatus for providing simultaneous software/hardware cache fill |
US7908439B2 (en) * | 2007-06-25 | 2011-03-15 | International Business Machines Corporation | Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache |
US8099579B2 (en) * | 2007-07-13 | 2012-01-17 | International Business Machines Corporation | System and method for cache-locking mechanism using segment table attributes for replacement class ID determination |
US8244979B2 (en) * | 2007-07-13 | 2012-08-14 | International Business Machines Corporation | System and method for cache-locking mechanism using translation table attributes for replacement class ID determination |
US20090049272A1 (en) * | 2007-08-13 | 2009-02-19 | International Business Machines Corporation | Method for improving the performance of software-managed tlb |
US8966219B2 (en) * | 2007-10-30 | 2015-02-24 | International Business Machines Corporation | Address translation through an intermediate address space |
US8108617B2 (en) * | 2008-02-08 | 2012-01-31 | International Business Machines Corporation | Method to bypass cache levels in a cache coherent system |
JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
KR100987332B1 (ko) | 2008-11-07 | 2010-10-18 | 서울대학교산학협력단 | 메모리 구조에 따른 메모리 관리 장치 |
EP2192493A1 (de) | 2008-11-28 | 2010-06-02 | ST Wireless SA | Verfahren zum Rufen auf Anfrage für eine virtuelle Speicherverwaltung in einem Verarbeitungssystem und entsprechendes Verarbeitungssystem |
US8397049B2 (en) * | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
CN102662869B (zh) * | 2012-04-01 | 2015-08-26 | 龙芯中科技术有限公司 | 虚拟机中的内存访问方法和装置及查找器 |
US9003125B2 (en) * | 2012-06-14 | 2015-04-07 | International Business Machines Corporation | Cache coherency protocol for allowing parallel data fetches and eviction to the same addressable index |
US9086980B2 (en) | 2012-08-01 | 2015-07-21 | International Business Machines Corporation | Data processing, method, device, and system for processing requests in a multi-core system |
US9213532B2 (en) | 2013-09-26 | 2015-12-15 | Oracle International Corporation | Method for ordering text in a binary |
US10175896B2 (en) | 2016-06-29 | 2019-01-08 | Western Digital Technologies, Inc. | Incremental snapshot based technique on paged translation systems |
US10353813B2 (en) | 2016-06-29 | 2019-07-16 | Western Digital Technologies, Inc. | Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices |
US11216361B2 (en) | 2016-06-29 | 2022-01-04 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
US10235287B2 (en) | 2016-06-29 | 2019-03-19 | Western Digital Technologies, Inc. | Efficient management of paged translation maps in memory and flash |
US10229048B2 (en) | 2016-06-29 | 2019-03-12 | Western Digital Technologies, Inc. | Unified paging scheme for dense and sparse translation tables on flash storage systems |
US10579522B2 (en) * | 2016-09-13 | 2020-03-03 | Andes Technology Corporation | Method and device for accessing a cache memory |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727485A (en) | 1986-01-02 | 1988-02-23 | Motorola, Inc. | Paged memory management unit which locks translators in translation cache if lock specified in translation table |
US5487162A (en) * | 1992-02-25 | 1996-01-23 | Matsushita Electric Industrial Co., Ltd. | Cache lock information feeding system using an address translator |
JP3740195B2 (ja) * | 1994-09-09 | 2006-02-01 | 株式会社ルネサステクノロジ | データ処理装置 |
US5594886A (en) * | 1994-10-23 | 1997-01-14 | Lsi Logic Corporation | Pseudo-LRU cache memory replacement method and apparatus utilizing nodes |
EP0856797B1 (de) | 1997-01-30 | 2003-05-21 | STMicroelectronics Limited | Cachespeichersystem für gleichzeitig laufende Prozesse |
JP2000200221A (ja) * | 1998-10-30 | 2000-07-18 | Nec Corp | キャッシュメモリ装置及びその制御方法 |
US6442664B1 (en) * | 1999-06-01 | 2002-08-27 | International Business Machines Corporation | Computer memory address translation system |
US6430667B1 (en) * | 2000-04-13 | 2002-08-06 | International Business Machines Corporation | Single-level store computer incorporating process-local address translation data structures |
EP1182569B8 (de) | 2000-08-21 | 2011-07-06 | Texas Instruments Incorporated | TLB-Ver- und Entriegelungsoperation |
JP2002140234A (ja) | 2000-11-02 | 2002-05-17 | Hitachi Ltd | キャッシュ装置 |
US20030159003A1 (en) * | 2001-10-23 | 2003-08-21 | Ip-First, Llc | Associative cache memory with replacement way information integrated into directory |
US7020748B2 (en) * | 2003-01-21 | 2006-03-28 | Sun Microsystems, Inc. | Cache replacement policy to mitigate pollution in multicore processors |
-
2002
- 2002-12-12 US US10/318,541 patent/US7103748B2/en not_active Expired - Fee Related
-
2003
- 2003-11-21 EP EP03812611A patent/EP1581873B1/de not_active Expired - Lifetime
- 2003-11-21 CA CA002505610A patent/CA2505610C/en not_active Expired - Lifetime
- 2003-11-21 AU AU2003302824A patent/AU2003302824A1/en not_active Abandoned
- 2003-11-21 JP JP2004558763A patent/JP4129458B2/ja not_active Expired - Fee Related
- 2003-11-21 CN CNB2003801030786A patent/CN100397367C/zh not_active Expired - Fee Related
- 2003-11-21 KR KR1020057008348A patent/KR100843536B1/ko not_active IP Right Cessation
- 2003-11-21 WO PCT/GB2003/005108 patent/WO2004053698A2/en active IP Right Grant
- 2003-11-21 DE DE60320026T patent/DE60320026T2/de not_active Expired - Lifetime
- 2003-11-21 AT AT03812611T patent/ATE390667T1/de not_active IP Right Cessation
-
2005
- 2005-06-14 IL IL169136A patent/IL169136A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
US7103748B2 (en) | 2006-09-05 |
JP2006515088A (ja) | 2006-05-18 |
EP1581873A2 (de) | 2005-10-05 |
DE60320026D1 (de) | 2008-05-08 |
ATE390667T1 (de) | 2008-04-15 |
CA2505610A1 (en) | 2004-06-24 |
KR100843536B1 (ko) | 2008-07-04 |
EP1581873B1 (de) | 2008-03-26 |
KR20050088077A (ko) | 2005-09-01 |
IL169136A0 (en) | 2007-07-04 |
AU2003302824A8 (en) | 2004-06-30 |
AU2003302824A1 (en) | 2004-06-30 |
WO2004053698A2 (en) | 2004-06-24 |
JP4129458B2 (ja) | 2008-08-06 |
WO2004053698A3 (en) | 2006-01-12 |
CN1820258A (zh) | 2006-08-16 |
CA2505610C (en) | 2009-06-23 |
CN100397367C (zh) | 2008-06-25 |
US20040117592A1 (en) | 2004-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60320026T2 (de) | Verbessertes speichermanagement für echtzeit-anwendungen | |
DE69637294T2 (de) | Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE10002120B4 (de) | Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung | |
DE112005003859B4 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE69530776T2 (de) | Zweiwege set-assoziativer cache-speicher | |
DE60003273T2 (de) | Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse | |
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
DE4410060B4 (de) | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse | |
DE102014014076A1 (de) | Reduzierte Adressenkonvertierung mit mehreren Seitengrößen | |
DE3151745C2 (de) | ||
DE3805107A1 (de) | Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers | |
DE19961499A1 (de) | Caching von Objekten in Platten-gestützten Datenbanken | |
DE19516937A1 (de) | Hierarchisches Cachesystem für einen Computer | |
DE112008001666T5 (de) | Hierarchische Cache-Tag-Architektur | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE102020104701A1 (de) | Cache data location system | |
DE112018003032T5 (de) | Cachestruktur, die ein logisches verzeichnis verwendet | |
DE112018002032T5 (de) | Gemeinsames nutzen von virtuellen und realen übersetzungen in einem virtuellen cache | |
DE112018002028T5 (de) | Umsetzungsunterstützung für einen virtuellen cache | |
DE102021116489A1 (de) | Verwaltung von Prefetch-Anfragen auf Basis von Stream-Informationen für zuvor erkannte Streams | |
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 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8320 | Willingness to grant licences declared (paragraph 23) | ||
8364 | No opposition during term of opposition |