-
TECHNISCHES GEBIET
-
Beispielhafte Ausführungsformen der erfinderischen Konzepte betreffen Prozessoren und insbesondere einen Anwendungsprozessor und ein System-on-Chip, das denselben umfasst.
-
BESCHREIBUNG DES VERWANDTEN STANDS DER TECHNICK
-
Eine Speicherverwaltungseinheit (MMU) ist eine Hardwarekomponente, die Speicherzugriffsanfragen verarbeitet, die von einer Einheit für direkten Speicherzugriff, wie beispielsweise einer zentralen Verarbeitungseinheit (CPU), ausgegeben werden. Die MMU kann auch als Paged MMU (PMMU) bezeichnet werden.
-
Im Allgemeinen versucht die MMU anfangs, einen assoziativen Cache zu verwenden, der Adressumsetzpuffer bzw. Translation Lookaside Buffer (TLB) genannt wird, um virtuelle Seitenadressen in physikalische Seitenadressen eines Speichers, wie eines Anweisungsspeichers, umzusetzen. Falls sich keine übereinstimmende physikalische Seitenadresse für eine virtuelle Seitenadresse in dem TLB befindet, führt der TLB einen langsameren Prozess aus, bei dem auf eine Seitentabelle Bezug genommen wird, um die erforderliche physikalische Seitenadresse zu bestimmen. Dies kann eine Kanalaktivität der MMU verzögern.
-
KURZFASSUNG
-
Gemäß einer beispielhaften Ausführungsform der erfinderischen Konzepte umfasst ein Anwendungsprozessor eine Speicherverwaltungseinheit (MMU). Die MMU antwortet auf eine Zugriffsanfrage, die sie von einem Master-Intellectual-Property (IP) erhält, und die Zugriffsanfrage umfasst einen Zielkontext und eine virtuelle Zieladresse. Die Zugriffsanfrage entspricht einer Durchsuchungsanfrage, die virtuelle Zieladresse in eine erste physikalische Zieladresse umzusetzen. Die MMU umfasst einen Kontext-Cache, einen Umsetzungs-Cache bzw. Übersetzungs-Cache, eine Invalidierungswarteschlange und einen Adressumsetzungsmanager (ATM). Der Kontext-Cache speichert Kontexte und Kontextidentifikatoren der gespeicherten Kontexte jeweils als erstes Tag und erste Daten, während das Duplizieren von Kontexten vermieden wird, und die Kontexte werden in der Durchsuchungsanfrage verwendet. Der Umsetzungs-Cache speichert eine erste Adresse und erste Kontextidentifikatoren als zweites Tag und speichert zweite Adressen als zweite Daten, wobei die erste Adresse einer virtuellen Adresse entspricht, die in der Durchsuchungsanfrage verwendet wird, die ersten Kontextidentifikatoren einem ersten Kontext entsprechen, der in der Durchsuchungsanfrage verwendet wird, und die zweiten Adressen der ersten Adresse und dem ersten Kontext entsprechen. Die Invalidierungswarteschlange speichert mindestens einen Kontextidentifikator, der invalidiert werden soll, von den Kontextidentifikatoren, die in dem Umsetzungs-Cache gespeichert sind. Der ATM steuert den Kontext-Cache, den Umsetzungs-Cache und die Invalidierungswarteschlange.
-
Gemäß einer beispielhaften Ausführungsform der erfinderischen Konzepte umfasst ein System-on-Chip einen Master-Intellectual-Property (IP), um eine Zugriffsanfrage auszugeben, einen Anwendungsprozessor und eine Speichervorrichtung. Der Anwendungsprozessor umfasst eine Speicherverwaltungseinheit (MMU) und die MMU setzt ansprechend auf die Zugriffsanfrage, die einen Zielkontext und die virtuelle Zieladresse umfasst, eine virtuelle Zieladresse in eine erste physikalische Zieladresse um. Die Speichervorrichtung ist mit der MMU gekoppelt und umfasst eine Seitentabelle, in der Kennfeldinformationen zwischen virtuellen Adressen und ersten physikalischen Adressen gespeichert sind. Die MMU umfasst einen Kontext-Cache, einen Umsetzungs-Cache bzw. Übersetzungs-Cache, eine Invalidierungswarteschlange und einen Adressumsetzungsmanager (ATM). Der Kontext-Cache speichert Kontexte und Kontextidentifikatoren der gespeicherten Kontexte jeweils als erstes Tag und erste Daten, während das Duplizieren von Kontexten vermieden wird, und die Kontexte werden in der Zugriffsanfrage verwendet, die einer Durchsuchungsanfrage entspricht. Der Umsetzungs-Cache speichert eine erste Adresse und erste Kontextidentifikatoren als zweites Tag und speichert zweite Adressen als zweite Daten, wobei die erste Adresse einer virtuellen Adresse entspricht, die in der Durchsuchungsanfrage verwendet wird, die ersten Kontextidentifikatoren einem ersten Kontext entsprechen, der in der Durchsuchungsanfrage verwendet wird, und die zweiten Adressen der ersten Adresse und dem ersten Kontext entsprechen. Die Invalidierungswarteschlange speichert mindestens einen Kontextidentifikator, der invalidiert werden soll, von den Kontextidentifikatoren, die in dem Umsetzungs-Cache gespeichert sind. Der ATM steuert den Kontext-Cache, den Umsetzungs-Cache und die Invalidierungswarteschlange.
-
Gemäß einer beispielhaften Ausführungsform der erfinderischen Konzepte wird bei einem Verfahren zum Betreiben einer Speicherverwaltungseinheit (MMU) eines Anwendungsprozessors eine Zugriffsanfrage, die einen Zielkontext und eine virtuelle Zieladresse umfasst, von einem Adressumsetzungsmanager (ATM) erhalten. Von dem ATM wird bestimmt, ob der Zielkontext mit mindestens einem ersten Eintrag in einem Kontext-Cache übereinstimmt, indem der Kontext-Cache durchsucht wird, und der Kontext-Cache speichert Kontexte und Kontextidentifikatoren der gespeicherten Kontexte jeweils als erstes Tag und erste Daten, während das Duplizieren von Kontexten vermieden wird. Von dem ATM wird bestimmt, ob ein Zielkontextidentifikator, der dem Zielkontext entspricht, mit mindestens einem von zweiten Einträgen in einem Umsetzungs-Cache übereinstimmt, indem selektiv der Umsetzungs-Cache basierend auf der Durchsuchung des Kontext-Caches durchsucht wird, und der Umsetzungs-Cache speichert die Kontextidentifikatoren und die virtuellen Adressen, die den Kontextidentifikatoren entsprechen, als zweites Tag und speichert physikalische Adressen, die den virtuellen Adressen entsprechen, als zweite Daten. Die virtuelle Zieladresse zu einer entsprechenden physikalischen Zieladresse wird basierend auf der selektiven Bestimmung in eine entsprechende physikalische Zieladresse umgesetzt.
-
Dementsprechend kann die MMU in dem Anwendungsprozessor gemäß beispielhafter Ausführungsformen eine virtuelle Adresse in eine physikalische Adresse umsetzen, indem primär der Kontext-Cache durchsucht wird, der Kontexte speichert, während das Duplizieren von Kontexten vermieden wird, und indem basierend auf einem Ergebnis der Durchsuchung des Kontext-Caches selektiv der Umsetzungs-Cache durchsucht wird. Daher kann eine Größe des Umsetzungs-Caches reduziert werden. Zudem kann eine Leistung des Anwendungsprozessors durch Verarbeiten einer Invalidierungsanfrage im Hintergrund verbessert werden, wenn der Umsetzungs-Cache nicht verwendet wird, wenn die Invalidierungsanfrage eine kontextbasierte Invalidierung bezeichnet.
-
Figurenliste
-
Die obigen und andere Merkmale der erfinderischen Konzepte sind klarer verständlich, wenn beispielhafte Ausführungsformen derselben unter Bezugnahme auf die beigefügten Zeichnungen beschrieben werden.
- 1 ist ein Diagramm eines System-on-Chip (SoC), das eine Speicherverwaltungseinheit (MMU) gemäß beispielhafter Ausführungsformen umfasst.
- 2 ist ein Blockschaltbild, das ein Beispiel des Anwendungsprozessors in 1 gemäß beispielhafter Ausführungsformen darstellt.
- 3 ist ein Diagramm, das eine Zuordnung zwischen virtuellen Adressen und physikalischen Adressen zeigt.
- 4A ist ein Diagramm zur Erläuterung eines Betriebs der MMU in 1 gemäß beispielhafter Ausführungsformen.
- 4B stellt ein Beispiel des Umsetzungs-Caches in 4A gemäß beispielhafter Ausführungsformen dar.
- 4C stellt ein Beispiel des Umsetzungs-Caches in 4B gemäß beispielhafter Ausführungsformen dar.
- 4D stellt ein anderes Beispiel des Umsetzungs-Caches in 4B gemäß beispielhafter Ausführungsformen dar.
- 5 ist ein Blockdiagramm, das eine MMU in dem SoC aus 1 gemäß beispielhafter Ausführungsformen darstellt.
- 6A und 6B stellen jeweils einen Abschnitt der MMU in 5 gemäß beispielhafter Ausführungsformen dar.
- 7 ist ein Flussdiagramm, das einen Beispielbetrieb der MMU in 5 gemäß beispielhafter Ausführungsformen darstellt.
- 8 ist ein Diagramm zur Erläuterung eines Betriebs in 7.
- 9A ist ein Flussdiagramm, das einen anderen Beispielbetrieb der MMU in 5 gemäß beispielhafter Ausführungsformen darstellt.
- 9B ist ein Flussdiagramm, das einen anderen Beispielbetrieb der MMU in 5 gemäß beispielhafter Ausführungsformen darstellt.
- 10 stellt dar, dass ein neuer Kontextidentifikator in 7 zugewiesen wird.
- 11 ist ein Beispielbetrieb der MMU, die Vorgänge in 10 durchführt.
- 12 stellt dar, dass ein neuer Kontextidentifikator in 7 gemäß beispielhafter Ausführungsformen zugewiesen wird.
- 13A ist ein Flussdiagramm, das ein Beispielverfahren zur Invalidierung von Einträgen in dem Kontext-Cache in der MMU gemäß beispielhafter Ausführungsformen darstellt.
- 13B ist ein Flussdiagramm, das ein Beispielverfahren zur Invalidierung von Einträgen in dem Umsetzungs-Cache in der MMU gemäß beispielhafter Ausführungsformen darstellt.
- 14 ist ein Flussdiagramm, das ein anderes Beispielverfahren zur Invalidierung von Einträgen in dem Umsetzungs-Cache in der MMU gemäß beispielhafter Ausführungsformen darstellt.
- 15 stellt ein anderes Beispiel des Anwendungsprozessors in dem SoC in 1 gemäß beispielhafter Ausführungsformen dar.
- 16 ist ein Blockschaltbild, das ein Beispiel des MMU-Moduls in 15 gemäß beispielhaften Ausführungsformen darstellt.
- 17 stellt ein Beispiel für den Adressverteiler in 16 gemäß beispielhafter Ausführungsformen dar.
- 18 ist ein Konzeptdiagramm zur Erläuterung des Betriebs des MMU-Moduls in 16.
- 19 ist ein Flussdiagramm, das ein Verfahren zum Betreiben einer MMU in einem Anwendungsprozessor gemäß beispielhafter Ausführungsformen darstellt.
- 20 ist ein Blockschaltbild eines Mobilgeräts, das einen SoC gemäß beispielhafter Ausführungsformen umfasst.
-
DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Nachstehend werden Ausführungsbeispiele der erfinderischen Konzepte vollständiger mit Bezug auf die zugehörigen Zeichnungen beschrieben. Gleiche Bezugszeichen können sich in der gesamten Anmeldung auf gleiche Elemente beziehen.
-
1 ist ein Diagramm eines System-on-Chip (SoC), das eine Speicherverwaltungseinheit (MMU) gemäß beispielhafter Ausführungsformen umfasst.
-
In 1 kann ein SoC 10 als eine beliebige Elektronikvorrichtung einer großen Auswahl implementiert sein; Beispiele umfassen einen Personalcomputer (PC), einen Tablet PC, ein Netbook, einen E-Reader, einen persönlichen digitalen Assistenten (PDA), einen tragbaren Multimedia-Player (PMP), einen MP3-Spieler und einen MP4-Speicher. Das SoC 10 kann einen Anwendungsprozessor 100 umfassen, der Programmanweisungen ausführt, um einen Gesamtbetrieb des SoC 10 zu steuern. Das SoC 10 kann ferner eine Anzeige 20, eine Speichervorrichtung 30 und eine Eingabevorrichtung 50 umfassen.
-
Zum Beispiel kann der Anwendungsprozessor 100 Programmanweisungen über die Eingabevorrichtung 50 erhalten. In einigen beispielhaften Ausführungsformen führt der Anwendungsprozessor 100 Programmanweisungen aus, indem er Daten aus der Speichervorrichtung 30 ausliest und die Daten auf der Anzeige 20 anzeigt. Die Eingabevorrichtung 50 kann eine Zehnertastatur, eine Tastatur und Point-and-Touch-Geräte wie ein Touchpad und eine Computermaus umfassen.
-
Die Speichervorrichtung 30 kann eine Seitentabelle 40 umfassen, in der Kennfeldinformationen zwischen virtuellen Adressen und physikalischen Adressen gespeichert sind.
-
2 ist ein Blockschaltbild, das ein Beispiel des Anwendungsprozessors in 1 gemäß beispielhafter Ausführungsformen darstellt.
-
In 2 umfasst der Anwendungsprozessor 100 eine zentrale Verarbeitungseinheit (CPU) 110, einen Cache 170, die MMU 200, einen Systembus 180, eine Systemperipherieschaltung 120, einen Multimedia-Beschleuniger 130, eine Verbindungsschaltung 140, einen Anzeigencontroller 150 und/oder einen Speichercontroller 160.
-
Die CPU 110 führt erhaltene Programmanweisungen aus. Der Cache 170 ist ein schneller Speicher, der ausgewählte Daten speichert, z. B. Daten, auf die häufig zugegriffen wird, um eine durchschnittliche Verzögerung von Speicherzugriffsvorgängen durch die CPU 110 zu reduzieren. Die MMU 200 ist eine Hardwarekomponente, die eine Anforderung von der CPU 110 verarbeitet, um auf die Speichervorrichtung 30 zuzugreifen.
-
Eine Funktionalität der MMU 200 kann das Umsetzen von virtuellen Adressen in physikalische Adressen, Speicherschutz, Steuern des Cache 170, Bus-Vermittlung und/oder Bank-Wechsel umfassen.
-
Die Systemperipherieschaltung 120, der Multimedia-Beschleuniger 130, die Verbindungsschaltung 140, der Anzeigencontroller 150 und/oder der Speichercontroller 160 kommunizieren Daten oder Anweisungen miteinander über den Systembus 180.
-
Der Systembus 180 kann eine Mehrzahl von Kanälen umfassen, wie beispielsweise einen Lesedatenkanal bzw. Read Data Channel, einen Leseadresskanal bzw. Read Address Channel, einen Schreibadresskanal bzw. Write Address Channel und/oder einen Schreibdatenkanal bzw. Write Data Channel.
-
Die Systemperipherieschaltung 120 umfasst eine Echtzeituhr (RTC) 121, eine Phasenregelschleife (PLL) 123 und/oder einen Watchdog Timer 125.
-
Der Multimedia-Beschleuniger 130 umfasst eine Grafikengine 133. Der Multimedia-Beschleuniger 130 kann ferner eine Kameraschnittstelle 131, eine Grafikengine, die mit einem Frame- bzw. Rahmenpuffer integriert ist, die Grafikberechnungen durchführt, oder eine Videoanzeigeschaltung und/oder eine High-Definition Multimedia Interface (HDMI) 135, die eine Audio/Video-Schnittstelle zur Übertragung von nicht komprimierten digitalen Daten ist, umfassen. Es ist anzumerken, dass die MMU 200 verwendet werden kann, um eine virtuelle Adresse, die von der Grafikengine 133 ausgegeben wird, in eine physikalische Adresse umzusetzen.
-
Dementsprechend können die beispielhaften Ausführungsformen der erfinderischen Konzepte bei verschiedenen Speichervorrichtungen und verschiedenen Anwendungen angewandt werden, die eine Betriebsstabilität sicherstellen, während sie eine Betriebsleistung aufrechterhalten oder verbessern.
-
Die Verbindungsschaltung 140 kann eine Audioschnittstelle 141, eine Speicherschnittstelle 143, wie eine Advanced-Technology-Attachment(ATA)-Schnittstelle und/oder eine Verbindungsschnittstelle 145 umfassen. Die Verbindungsschaltung 140 kann mit der Eingabevorrichtung 50 kommunizieren.
-
Der Anzeigencontroller 150 steuert Daten, die auf der Anzeige 20 angezeigt werden sollen. Die MMU 200 kann verwendet werden, um eine virtuelle Adresse, die von dem Anzeigencontroller 150 ausgegeben wurde, in eine physikalische Adresse umzusetzen.
-
Die Speichercontroller 160 ermöglicht es der Speichervorrichtung 30, entsprechend dem Speichertypen zugänglich zu sein (z. B. Flash-Speicher oder dynamischer Direktzugriffsspeicher (DRAM)).
-
3 ist ein Diagramm, das eine Zuordnung zwischen virtuellen Adressen und physikalischen Adressen zeigt.
-
In den 1 bis 3 kann ein virtueller Adressraum in eine Mehrzahl an Seiten PN0 bis PNn aufgeteilt, wobei n eine ganze Zahl größer als zwei ist.
-
Jede der Seiten PN0 bis PNn ist ein Block benachbarter virtueller Adressen. Jede der Seiten PN0 bis PNn weist eine gegebene Datengröße von, zum Beispiel, 4 KB auf. Allerdings ist die Größe der Seiten PN0 bis PNn nicht beschränkt und kann verändert werden.
-
Wie der virtuelle Adressraum kann ein physikalischer Adressraum in eine Mehrzahl an Rahmen FN0 bis FNn aufgeteilt sein. Jeder der Rahmen FN0 bis FNn weist eine fest eingestellte Größe auf.
-
Eine virtuelle Adresse, z. B. VA2 umfasst eine Seitenzahl, z. B. PN2, und einen Versatz bzw. Offset, z. B. OFF2 innerhalb einer Seite. Mit anderen Worten, die virtuelle Adresse kann durch folgende Gleichung 1 ausgedrückt werden:
wobei „i“, „j“ und „x“ 1 sind oder eine natürliche Zahl größer als 1, VAi eine virtuelle Adresse ist, PNj eine Seitenzahl und OFFx ein Offset ist.
-
Die Seitenzahl PN2 wird als Index in der Seitentabelle 40 verwendet.
-
Der Offset OFF2 wird mit einer Rahmennummer, z.B. FN2, die eine physikalische Adresse, z. B. PA2, definiert, kombiniert. Die physikalische Adresse kann durch Gleichung 2 ausgedrückt werden:
wobei „r“, „s“ und „x“ 1 oder eine natürliche Zahl größer als 1 ist, PAr eine physikalische Adresse ist, FNs eine Rahmennummer ist und OFFx ein Offset ist.
-
Die Seitenzahl PA2 kann als virtuelle Seitenzahl bezeichnet werden und die Rahmennummer FN2 kann als physikalische Seitenzahl bezeichnet werden.
-
Die Seitentabelle 40 weist eine Zuordnung zwischen einer virtuellen Adresse einer Seite und einer physikalischen Adresse eines Rahmens auf.
-
Für eine einfachere Erläuterung wird in der Beschreibung angenommen, dass Prozessoren wie die CPU 110, die Grafikengine 133 und der Anzeigencontroller 150, die Daten in jedem Arbeitssatz verarbeiten, jeweils als Master-Intellectual-Property (IP) bezeichnet werden. Das Master-IP kann für jeden Arbeitssatz betrieben werden und kann eine Mehrzahl von Arbeitssätzen gleichzeitig verarbeiten. Ein Arbeitssatz ist ein Datensatz, der in der Speichervorrichtung 30 gespeichert ist. Die Arbeitssätze bezeichnen einen Satz an Seiten, auf die häufig Bezug genommen wird, zum Beispiel über eine Referenzanzahl in einem Referenzzeitraum hinaus, in der Speichervorrichtung 30 durch den Master-IP, oder die Anzahl an Seiten, die aus dem Master-IP in die Speichervorrichtung 30 geladen werden kann. In beispielhaften Ausführungsformen wird das Master-IP jedes Arbeitssatzes unabhängig von anderen Arbeitssätzen verwaltet.
-
4A ist ein Diagramm zur Erläuterung eines Betriebs der MMU in 1 gemäß beispielhafter Ausführungsformen.
-
In 1, 2 und 4A umfasst die MMU 200 einen Umsetzungs-Cache 218, einen Kontext-Cache 210 und/oder eine Invalidierungswarteschlange 230 und ist mit dem Master-IP 190 und der Speichervorrichtung 30 durch eine Mehrzahl von Kanälen verbunden.
-
Das Master-IP 190 verarbeitet einen Arbeitssatz. Das Master-IP 190 gibt eine Zugriffsanfrage, die dem Arbeitssatz entspricht, an die MMU 200 oder den Cache 170 aus. Die Zugriffsanfrage kann eine virtuelle Adresse VA zu dem Arbeitssatz in der Speichervorrichtung 30 und einen Kontext zu Attributen zu dem Arbeitssatz umfassen. Die Zugriffsanfrage kann eine Durchsuchungsanfrage oder eine Invalidierungsanfrage umfassen.
-
Die MMU 200 berechnet eine physikalische Adresse PA unter Verwendung der virtuellen Adresse VA basierend auf der Zugriffsanfrage des Master-IP 190. Alternativ kann die MMU 200 mindestens einen der Einträge in dem Umsetzungs-Cache 218 basierend auf der Zugriffsanfrage des Master-IP 190 invalidieren.
-
Der Kontext-Cache 210 speichert Kontexte, die mit Attributen der Zugriffsanfragen assoziiert sind, als erstes Tag, während das Duplizieren von Kontexten vermieden wird, und/oder speichert Kontextidentifikatoren der Kontexte als erste Daten. Wenn die Zugriffsanfrage der Durchsuchungsanfrage entspricht, kann der Kontext-Cache 210 Kontexte, die in der Durchsuchungsanfrage verwendet werden, als erstes Tag speichern, während das Duplizieren von Einträgen vermieden wird, und kann Kontextidentifikatoren der Kontexte als erste Daten speichern.
-
Der Umsetzungs-Cache 218 kann eine erste Adresse und erste Kontextidentifikatoren als zweiten Tag speichern und kann eine erste Adresse und erste Kontextidentifikatoren als zweiten Tag speichern und kann zweite Adressen als zweite Daten speichern. Die erste Adresse entspricht einer virtuellen Adresse, die in der Durchsuchungsanfrage verwendet wurde, und die ersten Kontextidentifikatoren entsprechen einem ersten Kontext, der in der Durchsuchungsanfrage verwendet wurde. Die zweiten Adressen entsprechen der ersten Adresse und dem ersten Kontext.
-
Der Umsetzungs-Cache 218 kann einen Translation Lookaside Buffer (TLB) oder einen Walk-Cache umfassen.
-
Der TLB ist eine Speicherverwaltungshardware, die verwendet wird, um die Umsetzungsgeschwindigkeit virtueller Adressen zu erhöhen. Der TLB speichert eine Zuordnung zwischen einer Seitenzahl PN und einer Rahmenzahl FN. Der TLB speichert Zuordnungsinformationen zwischen Kontextidentifikatoren, die virtuelle Adresse VA und die physikalische Adresse PA, die mit Seiten assoziiert ist, auf die sich das Master-IP 190 bezieht. Der TLB speichert die Kontextidentifikatoren und die virtuellen Adressen als zweites Tag und speichert die physikalischen Adressen, die den virtuellen Adressen entsprechen, als zweite Daten.
-
Der Walk-Cache speichert einen Abschnitt der virtuellen Adresse und speichert eine physikalische Adresse, die eine Position in der Seitentabelle angibt, die dem Abschnitt der virtuellen Adresse entspricht.
-
Wenn eine virtuelle Adresse in eine physikalische Adresse umgesetzt wird, überprüft die MMU 200 zuerst den Kontext-Cache 210. Falls der Kontext, der mit der virtuellen Adresse VA assoziiert ist, die der Anfrage des Master-IP 190 entspricht, mit mindestens einem der Einträge in dem Kontext-Cache 210 übereinstimmt (was als CC-Treffer bezeichnet wird), liefert der Kontext-Cache 210 dem Umsetzungs-Cache 218 einen Kontextidentifikator, der dem übereinstimmenden Kontext entspricht.
-
Falls Zuordnungsinformationen, die der virtuellen Adresse VA entsprechen, in dem Umsetzungs-Cache 218 sind (was als TC-Treffer bezeichnet wird), verarbeitet die MMU 200 direkt die Umsetzung, ohne auf die Speichervorrichtung 30 zuzugreifen und Zuordnungsinformationen aus der Speichervorrichtung 30 auszulesen.
-
Falls der Kontext, der mit der VA assoziiert ist, die der Anfrage des Master-IP 190 entspricht, mit keinem oder allen Einträgen in dem Kontext-Cache 210 übereinstimmt (was als CC-Fehler bezeichnet wird), oder falls keine Übereinstimmung in dem Umsetzungs-Cache 218 bezüglich dem übereinstimmenden Kontextidentifikator und der virtuellen Adresse VA gefunden wird (was als TC-Fehler bezeichnet wird), wird ein Page Table Walk durchgeführt.
-
Der Page Table Walk ist ein Prozess, um herauszufinden, ob es bei der Seitenzahl PN und der Rahmenzahl FN der virtuellen Adresse VA in der Seitentabelle 40, die in der Speichervorrichtung 30 gespeichert ist, eine Übereinstimmung gibt, wenn der Kontext, der mit der VA assoziiert ist, die der Anfrage des Master-IP 190 entspricht, mit keinem oder allen Einträgen des Kontext-Caches 210 übereinstimmt, oder wenn die Rahmenzahl FN der virtuellen Adresse VA nicht mit der Seitenzahl PN in dem Umsetzungs-Cache 218 übereinstimmt (das heißt, keine Zuordnungsinformation zwischen der virtuellen Adresse VA und der physikalischen Adresse PA in dem Umsetzungs-Cache 218 gefunden wird). Die Seitentabelle 40 speichert Zuordnungsinformationen zwischen einer virtuellen Adresse und einer physikalischen Adresse aller Daten in der Speichervorrichtung 30.
-
Wenn das Master-IP 190 versucht, eine Anweisung oder Daten unter Verwendung der physikalischen Adresse PA auszulesen, und die Anweisung oder die der physikalischen Adresse PA entsprechenden Daten in dem Cache 170 sind, kann der Cache 170 die Anweisung oder die Daten des Master-IP 190 direkt ausgeben, ohne auf die Speichervorrichtung 30 zuzugreifen (was als „Cachetreffer“ bezeichnet wird).
-
Wenn allerdings die Anweisung oder die Daten in dem Cache 170 nicht existieren, kann der Cache 170 auf einen Daten-/Anweisungsspeicherblock 45 in der Speichervorrichtung 30 zugreifen, um die Anweisung oder die Daten auszulesen (was als „Cachefehler“ bezeichnet wird). Der Daten-/Anweisungsspeicherblock 45 speichert Informationen über alle Daten/Anweisungen in der Speichervorrichtung 30.
-
Die Invalidierungswarteschlange 230 kann mindestens einen Kontextidentifikator speichern, der invalidiert werden soll, von den Kontextidentifikatoren, die in dem Umsetzungs-Cache 218 gespeichert sind.
-
4B stellt ein Beispiel des Umsetzungs-Caches in 4A gemäß beispielhafter Ausführungsformen dar.
-
In 4B umfasst der Umsetzungs-Cache 218 ein Tagfeld 219a und ein Datenfeld 219b.
-
Das Tagfeld 219a kann einen Kontextidentifikator CID1 und eine virtuelle Adresse VA1 speichern und das Datenfeld 219b kann eine physikalische Adresse PA1 speichem, die der virtuellen Adresse VA1 entspricht.
-
Zum Beispiel wird angenommen, dass Kontextidentifikatoren CID1_a und CID1_b in der Durchsuchungsanfrage verwendet werden. In beispielhaften Ausführungsformen wird der Kontextidentifikator CID1_a und virtuelle Adressen VA1_a, VA1_b und VA1_c, die dem Kontextidentifikator CID1_a entsprechen, in dem Tagfeld 219a gespeichert, und der Kontextidentifikator CID1_b und eine virtuelle Adresse VA1_d werden in dem Tagfeld 219a gespeichert. Zudem sind die physikalischen Adressen PA1_a, PA1_b, PA1_c und PA1_d, die jeweils den virtuellen Adressen VA1_a, VA1_b, VA1_c und VA1_d entsprechen, in dem Datenfeld 291b gespeichert. Die virtuellen Adressen VA1_a, VA1_b, VA1_c und VA1_d, die in dem Tagfeld 219a gespeichert sind, können als erste Adressen und die physikalischen Adressen PA1_a, PA1_b bezeichnet werden. PA1_c und PA1_d, die in dem Datenfeld 219b gespeichert sind, können als zweite Adressen bezeichnet werden.
-
4C stellt ein Beispiel des Umsetzungs-Caches in 4B gemäß beispielhafter Ausführungsformen dar.
-
In 4C kann ein Umsetzungs-Cache 218a einen TLB 220 umfassen. Konfiguration des TLB 220 wird unter Bezugnahme auf 6A beschrieben.
-
4D stellt ein anderes Beispiel des Umsetzungs-Caches in 4B gemäß beispielhafter Ausführungsformen dar.
-
In 4D kann ein Umsetzungs-Cache 218b einen Walk-Cache 250 umfassen. Konfiguration des Walk-Cache 250 wird unter Bezugnahme auf 6B beschrieben.
-
5 ist ein Blockdiagramm, das eine MMU in dem SoC aus 1 gemäß beispielhafter Ausführungsformen darstellt.
-
In 5 umfasst die MMU 200 eine erste Schnittstelle 261, eine zweite Schnittstelle 263, eine Speicherschnittstelle 267, einen Adressumsetzungsmanager (ATM) 260, den Kontext-Cache 210, den Umsetzungs-Cache 218, die Invalidierungswarteschlange 230, einen Page Table Walker 240 und/oder ein Steuerregister 265.
-
Die erste Schnittstelle 261 bietet eine Schnittstelle mit dem Master-IP 190. Die erste Schnittstelle 216 kann einer Schnittstellenstruktur gemäß, zum Beispiel, einem Advanced-eXtensible-Interface(AXI)-Protokoll entsprechen.
-
Das Master-IP 190 kann eine Zugriffsanfrage REQ an die MMU 200 durch die erste Schnittstelle 261 übertragen.
-
Die zweite Schnittstelle 263 ist eine separate Slave-Schnittstelle, um das Steuerregister 265 einzustellen. Zum Beispiel kann die CPU 110 (siehe 2) einen spezifischen Vorgang der MMU 200 durch die zweite Schnittstelle 263 steuern. Die zweite Schnittstelle 263 kann mit der CPU 110 gemäß, zum Beispiel, dem Advanced-Peripheral-Bus(APB)-Protokoll kommunizieren. Die MMU 200 kann ein Steuersignal CTL von der CPU 110 empfangen.
-
Der ATM 260 wird betrieben, um die Umsetzung einer virtuellen Adresse VA, die in der Zugriffsanfrage REQ umfasst ist, in eine physikalische Adresse durchzuführen.
-
Der ATM 260 durchsucht primär den Kontext-Cache 210 (sucht oder schlägt in diesem nach), um eine virtuelle Adresse VA, die von dem Master-IP 190 bereitgestellt wurde, durch Adresskanäle in eine physikalische Adresse PA umzusetzen.
-
Wenn ein mit der virtuellen Adresse VA assoziierter Kontext in dem Kontext-Cache 210 vorhanden ist (CC-Treffer), liefert der Kontext-Cache 210 dem ATM 260 einen Kontextidentifikator, der dem Kontext entspricht, der mit der virtuellen Adresse VA assoziiert ist. Der ATM 260 durchsucht den Umsetzungs-Cache 218 basierend auf dem Kontextidentifikator. Wenn der Kontextidentifikator, der von dem Kontext-Cache 210 geliefert wurde, in dem Umsetzungs-Cache 218 vorhanden ist (TC-Treffer, das heißt, falls der Kontextidentifikator, der von dem Kontext-Cache 210 geliefert wurde, mit mindestens einem Eintrag in dem Umsetzungs-Cache 218 übereinstimmt), kann der ATM 260 eine physikalische Adresse PA erzeugen, indem er sich auf den Kontextidentifikator und die virtuelle Adresse bezieht.
-
Falls der mit der virtuellen Adresse assoziierte Kontext nicht in dem Kontext-Cache 210 vorhanden ist (CC-Fehler), oder falls der Kontextidentifikator, der von dem Kontext-Cache 210 geliefert wird, mit keinem oder allen Einträgen in dem Umsetzungs-Cache 218 übereinstimmt (TC-Fehler), steuert der ATM 260 den Page Table Walker 240, um einen Page Table Walk in der Seitentabelle 40 durchzuführen.
-
Informationen, die verwendet werden, um den Betrieb der MMU 200 zu steuern, sind in dem Steuerregister 265 gespeichert. Der ATM 260 kann den Kontext-Cache 210, den Umsetzungs-Cache 218, die Invalidierungswarteschlange 230 und/oder den Page Table Walker 240 basierend auf den in dem Steuerregister 265 gespeicherten Informationen steuern.
-
Die Speicherschnittstelle 267 liefert eine Schnittstelle für die Kommunikation mit der Speichervorrichtung 30. Die MMU 200 kann die Seitentabelle 40 in der Speichervorrichtung 30 durch die Speicherschnittstelle 267 auslesen oder sie kann auf den Daten-/Anweisungsspeicherblock 45 in der Speichervorrichtung 30 über die Speicherschnittstelle 267 zugreifen.
-
6A und 6B stellen jeweils einen Abschnitt der MMU in 5 gemäß beispielhafter Ausführungsformen dar.
-
6A stellt dar, dass der Umsetzungs-Cache 218 in 5 mit dem TLB 220 implementiert ist, und 6B stellt dar, dass der Umsetzungs-Cache 218 in 5 mit dem Walk-Cache 250 implementiert ist.
-
In 6A sind der Kontext-Cache 210, der TLB 220 und die Invalidierungswarteschlange 230 dargestellt, und in 6B ist der Walk-Cache 250 dargestellt. Zudem ist ein herkömmlicher TLB 215 dargestellt, um den TLB 220 in 6A zu vergleichen.
-
In 6A umfasst der Kontext-Cache 210 ein Tagfeld 211 und ein Datenfeld 213. Das Tagfeld 211 speichert Kontexte als erstes Tag, die in der Durchsuchungsanfrage des Master-IP 190 verwendet werden, während ein Duplizieren von Kontexten vermieden wird. Jeder der Kontexte kann Validierungsinformationen (VALID) umfassen, einen Address Space Identifier (ASID), um einen Adressraum zu identifizieren, einen Virtual Maschine Identifier (VMID), um eine virtuelle Maschine zu identifizieren, ein nichtsicheres Feld NS, das damit assoziiert ist, ob abgesichert werden soll, und ein Exception-Level-Feld EL, das mit einem Exception-Feld assoziiert ist. Das Datenfeld 213 umfasst einen Kontextidentifikator CID von jedem der Kontexte.
-
Zum Beispiel kann ein Kontext CTX11 einen VALID von „Y“ aufweisen, einen ASID von „0xA“, einen VMID von „0xB“, einen NS von „1“, einen EL von „1“ und einen Kontextidentifikator CID11 von „0x4“. Zudem kann ein Kontext CTX12 einen VALID von „Y“ aufweisen, einen ASID von „0xC“, einen VMID von „0xB“, einen NS von „1“, einen EL von „1“ und einen Kontextidentifikator CID12 von „0x6“.
-
TLB 220 umfasst ein Tagfeld 221 und ein Datenfeld 223. Das Tagfeld 221 speichert Kontextidentifikator CID und eine virtuelle Adresse VA, die dem Kontextidentifikator CID entspricht, und das Datenfeld 223 speichert eine physikalische Adresse, die der virtuellen Adresse VA entspricht, und Berechtigungsinformationen AT, die damit assoziiert sind, ob ein Lese(R)-/Schreib(W)-Zugriff zugelassen werden soll. Jeder der Einträge in dem Tagfeld 221 des TLB 220 kann ferner eine gültige Information (VALID) umfassen. Das Tagfeld 221 des TLB 220 kann als zweites Tag virtuelle Adressen (erste Adressen) speichern, die in der Durchsuchungsanfrage verwendet wurden, und Kontextidentifikatoren der Kontexte, und das Datenfeld 223 des TLB 220 kann physikalische Adressen, die den ersten Adressen und den Kontextidentifikatoren entsprechen, als zweite Adressen speichern.
-
Zum Beispiel kann der Kontextidentifikator CID11 virtuelle Adressen „Ox1000“, „0x6000“ und „0x3000“ aufweisen. Der Kontextidentifikator CID12 kann eine virtuelle Adresse „0x8000“ aufweisen.
-
Die virtuelle Adresse „0x1000“ kann eine physikalische Adresse „0x9000“ und eine AT „R/W“ haben. Die virtuelle Adresse „0x6000“ kann eine physikalische Adresse „0A9000“ und eine AT „R/W“ haben. Die virtuelle Adresse „0x3000“ kann eine physikalische Adresse „0x0000“ und eine AT „R/W“ haben. Die virtuelle Adresse „0x8000“ kann eine physikalische Adresse „0x2000“ und eine AT „W“ haben.
-
Die Invalidierungswarteschlange 230 speichert Kontextidentifikatoren „0x7“ und „0x3“ als Invalidierungseinträge.
-
Der Walk-Cache 250 umfasst ein Tagfeld 251 und ein Datenfeld 253. Das Tagfeld 251 speichert Kontextidentifikator CID und eine virtuelle Teiladresse pVA, die dem Kontextidentifikator CID entspricht, und das Datenfeld 253 speichert eine zweite physikalische Adresse PA2, die eine Position in der Seitentabelle 40 angibt, die der virtuellen Teiladresse pVA entspricht. Jeder der Einträge in dem Tagfeld 251 des Walk-Cache 250 kann ferner eine gültige Information (VALID) umfassen.
-
Zum Beispiel kann der Kontextidentifikator CID11 virtuelle Teiladressen „pVA11“ und „pVA12“ aufweisen. Der Kontextidentifikator CID12 kann eine virtuelle Teiladresse „pVA13“ aufweisen. Die virtuellen Teiladressen „pVA11“, „pVA12“ und „pVA13“ bezeichnen Positionen in der Seitentabelle 40, die jeweils durch physikalische Adressen PA11, PA12 und PA13 spezifiziert werden.
-
Wie in 6A gezeigt, weist der Kontextidentifikator CID11 unterschiedliche virtuelle Adressen bezüglich eines Kontextidentifikators auf. Daher kann der ATM 260 eine virtuelle Adresse VA in eine physikalische Adresse PA umsetzen, indem primär der Kontext-Cache 210 durchsucht wird, um zu bestimmen, ob ein Zielkontext, der in der Zugriffsanfrage des Master-IP 190 umfasst ist, mit mindestens einem der Einträge des Tagfelds 211 in dem Kontext-Cache 210 übereinstimmt, und indem selektiv der TLB 220 basierend auf einem Durchsuchungsergebnis des Kontext-Caches 210 durchsucht wird.
-
Da der Kontext-Cache 210 die Kontexte speichert, während ein Duplizieren der Kontexte vermieden wird, kann ein belegter Bereich des Kontext-Caches 210 reduziert werden. Zudem speichert der TLB 220 nicht ASID und VMID, die relativ mehr Bits aufweisen, wodurch eine Konfiguration des TLB 220 vereinfacht werden kann.
-
Falls der Zielkontext mit keinem oder allen Einträgen des Tagfelds 211 des Kontext-Caches 210 übereinstimmt, wird ein Page Table Walk durchgeführt, ohne den TLB 220 zu durchsuchen, und daher kann eine Leistung der MMU 200 verbessert werden.
-
Da der herkömmliche TLB 215, der ein Tagfeld 217 und ein Datumsfeld 219 umfasst, ASID und VMID speichert, die relativ mehr Bits haben, wird eine Größe des TLB 215 dagegen erhöht und es ist mehr Zeit erforderlich, um den TLB 215 zu durchsuchen, um zu bestimmen, ob der Zielkontext mit Einträgen des TLB 215 übereinstimmt.
-
7 ist ein Flussdiagramm, das einen Beispielbetrieb der MMU in 5 gemäß beispielhafter Ausführungsformen darstellt und 8 ist ein Diagramm zur Erläuterung eines Betriebs in 7.
-
In den 5 bis 8 durchsucht der ATM 260 den Kontext-Cache 210 (schlägt darin nach) basierend auf einem Zielkontext, der in der Zugriffsanfrage REQ umfasst ist (Vorgang S100), wenn der ATM 260 die Zugriffsanfrage REQ von dem Master-IP 190 erhält, und bestimmt, ob der Zielkontext mit mindestens einem der ersten Einträge in dem Kontext-Cache 210 übereinstimmt (CC-Tag-Treffer? in Vorgang S115).
-
Falls der Zielkontext nicht mit einem oder allen der ersten Einträge in dem Kontext-Cache 210 übereinstimmt (NEIN in S115), weist der ATM 260 den Zielkontext einem neuen Kontextidentifikator (ID) zu (Vorgang S200) und steuert den Page Table Walker 240, einen Page Table Walk in der Seitentabelle 40 durchzuführen (Vorgang S290).
-
Falls der Zielkontext mit einem (oder mindestens einem) der ersten Einträge in dem Kontext-Cache 210 übereinstimmt (JA in S115), erhält der ATM 260 einen Kontextidentifikator (Kontext-ID), der dem Zielkontext entspricht (S120). Der ATM 260 durchsucht den Umsetzungs-Cache (TC) 218 basierend auf dem erhaltenen Kontextidentifikator und der virtuellen Zieladresse (Vorgang S125) und bestimmt, ob der erhaltene Kontextidentifikator und die virtuelle Zieladresse mit einem von zweiten Einträgen in dem Umsetzungs-Cache 218 übereinstimmt (TC-Tag-Treffer? in Vorgang S130).
-
Falls der erhaltene Kontextidentifikator und die virtuelle Zieladresse mit allen der zweiten Einträge in dem Umsetzungs-Cache 218 übereinstimmt (NEIN in S130), steuert der ATM 260 den Page Table Walker 240, um einen Page Table Walk in der Seitentabelle 40 durchzuführen (Vorgang S290).
-
Falls der erhaltene Kontextidentifikator und die virtuelle Zieladresse mit einem der zweiten Einträge in dem Umsetzungs-Cache 218 übereinstimmt (JA in S130), erhält der ATM 260 eine physikalische Adresse PA entsprechend der virtuellen Zieladresse (Vorgang S 140) und führt eine Adressumsetzung durch, um die physikalische Adresse PA an das Master-IP 190 zu liefern (Vorgang S285).
-
9A ist ein Flussdiagramm, das einen anderen Beispielbetrieb der MMU in 5 gemäß beispielhafter Ausführungsformen darstellt.
-
In 5 und 9A bestimmt der ATM 260, ob ein Kontext, der aktuell verwendet wird, geändert wurde (Vorgang S105).
-
Falls der Kontext, der aktuell verwendet wird, nicht geändert wurde (NEIN in S 105), führt der ATM 260 den Vorgang S105 durch.
-
Falls der Kontext, der aktuell verwendet wird, geändert wurde (JA in S 105), durchsucht der ATM 260 den Kontext-Cache 210 basierend auf dem geänderten Kontext (Vorgang S107).
-
Der ATM 260 bestimmt, dass der geänderte Kontext mit mindestens einem der ersten Einträge in dem Kontext-Cache 210 übereinstimmt (Vorgang S120). Falls der geänderte Kontext mit keinem oder allen der ersten Einträge in dem Kontext-Cache 210 übereinstimmt (NEIN in S120), weist der ATM 260 den geänderten Kontext einem neuen Kontextidentifikator (ID) zu (Vorgang S200) und speichert den geänderten Kontext in dem Kontext-Cache 210.
-
Falls der geänderte Kontext mit mindestens einem der ersten Einträge in dem Kontext-Cache 210 übereinstimmt (JA in S120), aktualisiert der ATM 260 den Kontext-Cache 210, indem er den übereinstimmenden Eintrag als ersten Kontextidentifikator zuweist (Vorgang S123).
-
Da die Änderung des Kontextes selten auftritt, können die Vorgänge S107, S120 und S123 ausgelassen werden.
-
9B ist ein Flussdiagramm, das einen anderen Beispielbetrieb der MMU in 5 gemäß beispielhafter Ausführungsformen darstellt.
-
In den 5 und 9B bestimmt der ATM 260, ob eine neue Anfrage von dem Master-IP 190 erhalten wird (Vorgang S106). Falls die neue Anfrage nicht von dem Master-IP 190 erhalten wird (NEIN in S106), führt der ATM 260 den Vorgang S106 durch. Falls die neue Anfrage nicht von dem Master-IP 190 erhalten wird (JA in S106), durchsucht der ATM 260 den Umsetzungs-Cache 218 basierend auf dem zuletzt verwendeten Kontextidentifikator und einer virtuellen Adresse VA, die in der neuen Anfrage umfasst ist (Vorgang S125).
-
Der ATM 260 bestimmt, dass der zuletzt verwendete Kontextidentifikator und die virtuelle Adresse VA mit mindestens einem der zweiten Einträge in dem Umsetzungs-Cache 218 übereinstimmt (Vorgang S135). Falls der zuletzt verwendete Kontextidentifikator und die virtuelle Adresse VA nicht mit allen der zweiten Einträge in dem Umsetzungs-Cache 218 übereinstimmen (NEIN in S290), steuert der ATM 260 den Page Table Walker 240 derart, dass ein Page Table Walk in der Seitentabelle 40 durchgeführt wird (Vorgang S290). Die physikalische Adresse PA kann nach dem Page Table Walk erhalten werden (Vorgang S140). Falls der zuletzt verwendete Kontextidentifikator und die virtuelle Adresse VA mit einem (mindestens einem) der zweiten Einträge in dem Umsetzungs-Cache 218 übereinstimmen (JA in S290), erhält der ATM 260 die physikalische Adresse PA (Vorgang S140).
-
10 stellt dar, dass ein neuer Kontextidentifikator in 7 zugewiesen wird, und 11 ist ein Beispielvorgang der MMU, die Vorgänge in 10 durchführt.
-
In den 5, 7, 10 und 11 zur Zuweisung eines neuen Kontextidentifikators an den Zielkontext (Vorgang S200a) bestimmt der ATM 260, ob der Kontext-Cache 210 verfügbaren Platz hat, z. B. ob der Kontext-Cache 210 voll ist (Vorgang S210).
-
Falls der Kontext-Cache 210 verfügbaren Platz hat (NEIN in S210), steuert der ATM 260 den Page Table Walker 240 derart, dass er einen Page Table Walk in der Seitentabelle 40 durchführt (Vorgang S290).
-
Falls der Kontext-Cache 210 keinen verfügbaren Platz hat (JA in S210) invalidiert der ATM 260 in dem Kontext-Cache 210 mindestens einen der Einträge (wählt diesen aus) basierend auf einem Nutzungsverlauf der ersten Einträge und platziert einen zu invalidierenden Kontextidentifikator des ausgewählten Eintrags (zeichnet diesen auf) in die Invalidierungswarteschlange 230 (S250). Das heißt, der ATM 260 ändert die Validierungsinformation eines Kontextidentifikators CID13 mit „0x8“, dessen Verwendung am weitesten zurückliegt, von „Y“ zu „N“ und zeichnet „0x8“ in die Invalidierungswarteschlange 230 auf.
-
Der ATM 260 speichert den Zielkontext an einer Position, an der der Kontextidentifikator CDI13 in dem Kontext-Cache 210 gespeichert wurde, und weist dem Zielkontext einen neuen Kontextidentifikator CID14 zu (Vorgang S280).
-
12 stellt dar, dass ein neuer Kontextidentifikator in 7 gemäß beispielhafter Ausführungsformen zugewiesen wird.
-
In den 5, 7 und 12 zur Zuweisung eines neuen Kontextidentifikators an den Zielkontext (Vorgang S200b) bestimmt der ATM 260, ob der Kontext-Cache 210 verfügbaren Platz hat, z. B. ob der Kontext-Cache 210 voll ist (Vorgang S210).
-
Falls der Kontext-Cache 210 keinen verfügbaren Platz aufweist (JA in S210), bestimmt der ATM 260, ob die Invalidierungswarteschlange 230 verfügbaren Platz aufweist, z. B. ob die Invalidierungswarteschlange 230 voll ist (Vorgang S220). Falls die Invalidierungswarteschlange 230 verfügbaren Platz hat (NEIN in S220), invalidiert der ATM 260 in dem Kontext-Cache 210 mindestens einen der Einträge (wählt diesen aus) basierend auf einem Nutzungsverlauf der ersten Einträge und platziert einen zu invalidierenden Kontextidentifikator (zeichnet diesen auf) von dem ausgewählten Eintrag in der Invalidierungswarteschlange 230 (Vorgang S250).
-
Falls die Invalidierungswarteschlange 230 keinen verfügbaren Platz aufweist, z. B. falls die Invalidierungswarteschlange 230 voll ist (JA in S220), invalidiert der ATM 260 mindestens einige der Einträge in dem Umsetzungs-Cache 218 basierend auf der Invalidierungswarteschlange 230 und entfernt (löscht) mindestens einige Einträge in der Invalidierungswarteschlange 230, sodass die Invalidierungswarteschlange 230 verfügbaren Platz aufweist (Vorgang S230).
-
Der ATM 260 invalidiert in dem Kontext-Cache 210 mindestens einen der Einträge (wählt diesen aus) basierend auf einem Nutzungsverlauf der ersten Einträge und platziert einen zu invalidierenden Kontextidentifikator (zeichnet diesen auf) von dem ausgewählten Eintrag in der Invalidierungswarteschlange 230 (Vorgang S250). Der ATM 260 speichert den Zielkontext an einer Position, an der der Kontextidentifikator in dem Kontext-Cache 210 gespeichert wurde und weist dem Zielkontext einen neuen Kontextidentifikator zu (Vorgang S280).
-
13A ist ein Flussdiagramm, das ein Beispielverfahren zur Invalidierung von Einträgen in dem Kontext-Cache in der MMU gemäß beispielhafter Ausführungsformen darstellt.
-
In den 5, 6A und 13B bestimmt der ATM 260, ob die Zugriffsanfrage von dem Master-IP 190 einer neuen Invalidierungsanfrage, mindestens einen der Einträge in dem Umsetzungs-Cache 118 zu invalidieren, entspricht (Vorgang S305).
-
Falls die Zugriffsanfrage von dem Master-IP 190 einer neuen, kontext-basierten Invalidierungsanfrage entspricht (JA in S305), durchsucht der ATM 260 den Kontext-Cache 210 basierend auf einem Zielkontext, der in der Invalidierungsanfrage umfasst ist (Vorgang S310) und bestimmt, ob der Zielkontext mit einem oder mehreren Einträge in dem Kontext-Cache 210 übereinstimmt (Vorgang S320). Falls der Zielkontext mit keinem oder allen der Einträge in dem Kontext-Cache 210 übereinstimmt (NEIN in S320), meldet der ATM 260 dem Master-IP 290 den Abschluss der Invalidierung (Vorgang S330).
-
Falls der Zielkontext mit einem oder mehreren der Einträge in dem Kontext-Cache 210 übereinstimmt (JA in S320), invalidiert der ATM 260 einen Eintrag, der dem Zielkontext entspricht, in dem Kontext-Cache 210, zeichnet einen Kontextidentifikator (platziert diesen) von dem invalidierten Eintrag auf (Vorgang S340) und meldet dem Master-IP 290 den Abschluss der Invalidierung (Vorgang S330).
-
13B ist ein Flussdiagramm, das ein Beispielverfahren zur Invalidierung von Einträgen in dem Umsetzungs-Cache in der MMU gemäß beispielhafter Ausführungsformen darstellt.
-
In 13B bestimmt der ATM 260, ob die Invalidierungswarteschlange 230 verfügbaren Platz hat, z. B. bestimmt er, ob die Invalidierungswarteschlange 230 nicht leer ist (Vorgang S350). Falls die Invalidierungswarteschlange 230 nicht leer ist (JA in S350), bestimmt der ATM 260, ob der Umsetzungs-Cache 218 nicht verwendet wird, z. B., ob es keine Aktivität in dem Umsetzungs-Cache 218 gibt (Vorgang S355). Falls der Umsetzungs-Cache 218 nicht verwendet wird (JA in S355), entfernt (extrahiert) der ATM 260 den Kontextidentifikator aus der Invalidierungswarteschlange 230 und durchsucht den Umsetzungs-Cache 218 basierend auf dem aus der Warteschlange entfernten Kontextidentifikator (Vorgang S360).
-
Der ATM 260 bestimmt, ob der aus der Warteschlange entfernte Kontextidentifikator mit mindestens einem Eintrag in dem Umsetzungs-Cache 218 übereinstimmt (Vorgang S370). Falls der aus der Warteschlange entfernte Kontextidentifikator mit keinem oder allen Einträgen in dem Umsetzungs-Cache 218 übereinstimmt (NEIN in S370), endet der Prozess. Falls der aus der Warteschlange entfernte Kontextidentifikator mit mindestens einem der Einträge in dem Umsetzungs-Cache 218 übereinstimmt (JA in S370), ändert der ATM 260 Validierungsinformationen des übereinstimmenden Eintrags (z. B. des übereinstimmenden Kontextidentifikators) von „Y“ zu „N“ (Vorgang S380).
-
13A und 13B stellen Invalidierungseinträge des Umsetzungs-Caches 218 basierend auf dem Kontext dar. Zudem stellt 13B Invalidierungseinträge des Umsetzungs-Caches 218 dar, die im Hintergrund durchgeführt wurden, wenn der Umsetzungs-Cache 218 nicht verwendet wird.
-
14 ist ein Flussdiagramm, das ein anderes Beispielverfahren zur Invalidierung von Einträgen in dem Umsetzungs-Cache in der MMU gemäß beispielhafter Ausführungsformen darstellt.
-
In 5, 6A und 14 bestimmt der ATM 260, ob die Zugriffsanfrage von dem Master-IP 190 einer neuen Invalidierungsanfrage entspricht, um mindestens einen der Einträge in dem Umsetzungs-Cache 118 zu invalidieren (Vorgang S410). In beispielhaften Ausführungsformen kann die Zugriffsanfrage eine virtuelle Adresse VA umfassen.
-
Falls die Zugriffsanfrage von dem Master-IP 190 einer neuen Invalidierungsanfrage basierend auf einer virtuellen Adresse zur Invalidierung eines Eintrags mit einem spezifischen Kontext entspricht (JA in S410), durchsucht der ATM 260 den Kontext-Cache 210 basierend auf einem Zielkontext, der in der Invalidierungsanfrage umfasst ist (Vorgang S415) und bestimmt, ob der Zielkontext mit einem oder mehreren Einträgen in dem Kontext-Cache 210 übereinstimmt (Vorgang S420). Falls der Zielkontext mit keinem oder allen Einträgen in dem Kontext-Cache 210 übereinstimmt (NEIN in S420), meldet der ATM 260 dem Master-IP 290 den Abschluss der Invalidierung (Vorgang S470).
-
Falls der Zielkontext mit einem oder mehreren der Einträge in dem Kontext-Cache 210 übereinstimmt (JA in S420), erhält der ATM 260 einen Kontextidentifikator, der dem Zielkontext entspricht (Vorgang S430), und durchsucht den Umsetzungs-Cache 218 basierend auf dem erhaltenen Kontextidentifikator und der virtuellen Adresse (Vorgang S440). Der ATM bestimmt, ob der erhaltene Kontextidentifikator und die virtuelle Adresse mit mindestens einem der Einträge in dem Umsetzungs-Cache 118 übereinstimmt (Vorgang S450). Falls der erhaltene Kontextidentifikator und die virtuelle Adresse nicht mit allen Einträgen des Umsetzungs-Caches 118 übereinstimmt (NEIN in S450), meldet der ATM 260 dem Master-IP 290 den Abschluss der Invalidierung (Vorgang S470).
-
Falls der erhaltene Kontextidentifikator und die virtuelle Adresse mit mindestens einem der Einträge in dem Umsetzungs-Cache 118 übereinstimmen (JA in S450), ändert der ATM 260 Validierungsinformationen des übereinstimmenden Eintrags (z. B. des übereinstimmenden Kontextidentifikators) von „Y“ zu „N“ (Vorgang S460) und meldet dem Master-IP 290 den Abschluss der Invalidierung (Vorgang S470).
-
14 stellt Invalidierungseinträge des Umsetzungs-Caches 218 basierend auf der virtuellen Adresse dar.
-
Die MMU 200 in dem Anwendungsprozessor 100 gemäß beispielhafter Ausführungsformen kann eine virtuelle Adresse in eine physikalische Adresse umsetzen, indem primär der Kontext-Cache durchsucht wird, der Kontexte speichert, während das Duplizieren von Kontexten vermieden wird, und indem basierend auf einem Ergebnis der Durchsuchung des Kontext-Caches selektiv der Umsetzungs-Cache durchsucht wird. Daher kann eine Größe des Umsetzungs-Caches reduziert werden. Zudem kann eine Leistung des Anwendungsprozessors 100 durch Verarbeiten einer Invalidierungsanfrage im Hintergrund verbessert werden, während der Umsetzungs-Cache 118 nicht verwendet wird, wenn die Invalidierungsanfrage eine kontextbasierte Invalidierung bezeichnet.
-
15 stellt ein anderes Beispiel des Anwendungsprozessors in dem SoC in 1 gemäß beispielhafter Ausführungsformen dar.
-
In 15 kann ein Anwendungsprozessor 100a ein MMU-Modul 200a umfassen.
-
Das MMU-Modul 200a kann mindestens eine MMU umfassen und kann eine virtuelle Adresse, die in einer Anfrage von dem Master-IP 190 umfasst ist, in eine physikalische Adresse umsetzen.
-
16 ist ein Blockschaltbild, das ein Beispiel des MMU-Moduls 200a in 15 gemäß beispielhaften Ausführungsformen darstellt.
-
In 16 sind das Master-IP 190 und die Speichervorrichtung 30 zum Zwecke einer einfacheren Erläuterung dargestellt.
-
In 16 umfasst das MMU-Modul 200a einen Adressverteiler 270, eine erste Bus-Schnittstelle 275, eine Mehrzahl von MMUs 281~28k und/oder eine zweite Bus-Schnittstelle 290. Obwohl nicht in 16 dargestellt, kann das MMU-Modul 200a ferner einen Cache umfassen, der Daten und/oder eine Anweisung speichert, die der physikalischen Adresse entsprechen.
-
Die MMU (MMU1) 281 umfasst einen Kontext-Cache CC1, einen Umsetzungs-Cache TC1 und/oder eine Invalidierungswarteschlange IQ1. Die MMU (MMU2) 282 umfasst einen Kontext-Cache CC2, einen Umsetzungs-Cache TC2 und/oder eine Invalidierungswarteschlange IQ2. Die MMU (MMUk) 28k umfasst einen Kontext-Cache CCk, einen Umsetzungs-Cache TCk und/oder eine Invalidierungswarteschlange IQk. Jeder der Umsetzungs-Caches TC1 -TCk kann einen TLB oder einen Walk-Cache umfassen.
-
Das Master-IP 190 kann für jeden Arbeitssatz betrieben werden und kann eine Mehrzahl an Arbeitssätzen gleichzeitig verarbeiten. Ein Arbeitssatz ist ein Datensatz, der in der Speichervorrichtung 30 gespeichert ist. Der Arbeitssatz gibt einen Satz an Seiten an, auf die das Master-IP 190 häufig zugreift, zum Beispiel über eine Referenzzahl in einem Referenzzeitraum hinweg, oder eine Anzahl an Seiten kann von dem Master-IP 190 in die Speichervorrichtung 30 geladen werden. Gemäß beispielhafter Ausführungsformen der erfinderischen Konzepte wird in dem Master-IP 190 jeder Arbeitssatz unabhängig von anderen Arbeitssätzen verwaltet.
-
Wenn das Master-IP 190 Vorgänge bezüglich einer Mehrzahl an Arbeitssätzen durchführt, kann der Adressverteiler 270 dynamisch eine MMU für jede der Arbeitssätze zuweisen. Der Adressverteiler 270 speichert MMU-Zuweisungsinformationen entsprechend jedem der Arbeitssätze.
-
Bei Erhalt einer Anforderung bezüglich eines Arbeitssatzes von dem Master-IP 190, kann der Adressverteiler 270 eine MMU-Identifikation MMU_ID einer MMU entsprechend der virtuellen Adresse VA, die in der Anfrage an die erste Bus-Schnittstelle 275 umfasst ist, basierend auf der MMU-Zuweisungsinformation ausgeben. Die erste Bus-Schnittstelle 275 kann die Anfrage und Daten an die MMU übertragen, die der MMU-Identifikation MMU_ID entspricht.
-
17 stellt ein Beispiel für den Adressverteiler 270 in 16 gemäß beispielhafter Ausführungsformen dar.
-
In 17 umfasst der Adressverteiler 270 einen Registersatz 271 und/oder einen Adressenkomparator 273.
-
Der Registersatz 271 speichert die MMU-Zuweisungsinformation entsprechend jedem der Arbeitssätze. Mit anderen Worten, der Registersatz 271 speichert die MMU-Zuweisungsinformation, in der virtuelle Adressen VA, die jeweils einem Arbeitssatz entsprechen, einer MMU ID zugeordnet werden. Gemäß beispielhafter Ausführungsformen kann die MMU-Zuweisungsinformation Indikatorinformationen zur Unterscheidung der virtuellen Adressen VA für jeden Arbeitssatz umfassen. Die Indikatorinformation kann zum Beispiel ein Startpunkt und/oder ein Endpunkt für die konsekutiven virtuellen Adressen VA eines Arbeitssatzes sein.
-
Der Adressenkomparator 273 kann die virtuellen Adressen VA der Anfrage, die von dem Master-IP 190 erhalten wurde, mit der MMU-Zuweisungsinformation vergleichen. Der Adressenkomparator 273 kann eine MMU-Identifikation MMU_ID, die der Anfrage entspricht, als Ergebnis des Vergleichs ausgeben.
-
18 ist ein Konzeptdiagramm zur Erläuterung des Betriebs des MMU-Moduls in 16.
-
Wie in 18 dargestellt, können erste bis n-te Arbeitssätze zum Beispiel eine Mehrzahl an Seiten umfassen, auf die in der Speichervorrichtung 30 durch das Master-IP 190 Häufig Bezug genommen wird, zum Beispiel über eine Referenzanzahl in einem Referenzzeitraum hinaus, das heißt, eine Mehrzahl benachbarter virtueller Adressen VA. Zum Beispiel umfasst der erste Arbeitssatz virtuelle Adresse VA0 bis VA2. Allerdings werden die Arbeitssätze unabhängig voneinander in dem Vorgang des Master-IP 190 verwaltet. Mit anderen Worten, eine einzige virtuelle Adresse VA gehört nicht zu zwei oder mehr Arbeitssätzen. Zum Beispiel können die virtuellen Adressen VA0 bis VAn konsekutiv für die Arbeitssätze angeordnet sein, wie in 18 gezeigt.
-
Jede MMU setzt die virtuelle Adresse VA eines Arbeitssatzes, der der MMU zugeordnet ist, in die physikalische Adresse PA um. Die Adressumsetzung kann basierend auf einem TLB innerhalb der MMU durchgeführt werden. Die physikalische Adresse PA, die von der MMU umgesetzt wird, kann sich von einer physikalischen Adresse, die von einer anderen MMU umgesetzt wurde, unterscheiden oder mit dieser gleich sein.
-
Wenn angenommen wird, dass ein Arbeitssatz an Daten, der von dem Master-IP 190 zu verarbeiten ist, der MMU1 281 zugeordnet wird, erhält die erste Bus-Schnittstelle 275 eine ID1 der MMU1 281 von dem Adressverteiler 270 und übermittelt eine Anfrage des Master-IP 190 und Daten an die MMU1 281.
-
Die MMU1 281 setzt die virtuelle Adresse VA für die Anfrage in die physikalische Adresse PA um. Wenn die MMU1 281 die virtuelle Adresse VA in die physikalische Adresse PA umsetzt, durchsucht die MMU1 281 primär den Kontext-Cache CC1, und durchsucht selektiv den Umsetzungs-Cache TC1 basierend auf einem Ergebnis der Durchsuchung des Kontext-Caches CC1 und überträgt die angeforderte, umgesetzte virtuelle Adresse VA in die physikalische Adresse PA an das Master-IP 190 über die erste Bus-Schnittstelle 275. Zudem überträgt die MMU1 281 die Anfrage und die Daten an die Speichervorrichtung 30 durch die zweite Bus-Schnittstelle 290. Die zweite Bus-Schnittstelle 290 greift auf die physikalische Adresse PA in der Speichervorrichtung 30 zu und führt einen Vorgang entsprechend der Anfrage bezüglich der Daten durch.
-
Wenn das Master-IP 190 einen Vorgang bezüglich eines anderen Arbeitssatzes startet, während es einen Vorgang bezüglich eines aktuellen Arbeitssatzes durchführt, wird eine der MMUs, die nicht dem aktuellen Arbeitssatz zugewiesen wurde, in dem MMU-Modul 200a für den neuen Arbeitssatz zugewiesen und unabhängig betrieben. Folglich wird ein TC-Fehler im Vergleich zu einem Fall reduziert, in dem nur eine MMU von allen Arbeitssätzen geteilt wird, die von dem Master-IP 190 verwendet wird. Dementsprechend wird das Trefferverhältnis während des Datenverarbeitungsvorgangs des Master-IP 190 erhöht, und die Betriebsgeschwindigkeit des SoC 10 wird ebenfalls erhöht, während eine gegenseitige Beeinflussung zwischen Arbeitssätzen minimiert oder reduziert wird. Da die MMU für jeden Arbeitssatz zugewiesen wird, wird die MMU zudem flexibel betrieben.
-
19 ist ein Flussdiagramm, das ein Verfahren zum Betreiben einer MMU in einem Anwendungsprozessor gemäß beispielhafter Ausführungsformen darstellt.
-
In den 1 bis 14 und 19 erhält der ATM 260 in der MMU 200 in einem Verfahren zum Betreiben einer MMU 200 in einem Anwendungsprozessor 100 eine Zugriffsanfrage, die einen Zielkontext und eine virtuelle Zieladresse umfasst, von dem Master-IP 190 (Vorgang S510).
-
Der ATM 260 bestimmt, ob der Zielkontext mit mindestens einem der ersten Einträge in einem Kontext-Cache 210 übereinstimmt, indem er den Kontext-Cache 210 durchsucht (Vorgang S520). Der Kontext-Cache 210 speichert Kontexte und Kontextidentifikatoren der gespeicherten Kontexte jeweils als erstes Tag und erste Daten, während das Duplizieren von Kontexten vermieden wird.
-
Der ATM 260 bestimmt selektiv, ob ein Zielkontextidentifikator, der dem Zielkontext entspricht, mit mindestens einem der zweiten Einträge in einem Umsetzungs-Cache 218 übereinstimmt, indem selektiv er den Umsetzungs-Cache 218 basierend auf der Durchsuchung des Kontext-Caches 210 durchsucht (Vorgang S5 30). Der Umsetzungs-Cache 218 speichert die Kontextidentifikatoren und virtuellen Adressen, die den Kontextidentifikatoren entsprechen, als zweites Tag und speichert physikalische Adressen, die den virtuellen Adressen entsprechen, als zweite Daten.
-
Der ATM 260 setzt die physikalische Zieladresse in eine physikalische Zieladresse basierend auf der selektiven Bestimmung um (Vorgang S540) und gibt die physikalische Zieladresse an das Master-IP 190 aus.
-
20 ist ein Blockschaltbild eines mobilen Geräts, das ein SoC gemäß beispielhafter Ausführungsformen umfasst.
-
In 20 umfasst ein mobiles Gerät 900 einen SoC 910, eine LPDDRx-Speichervorrichtung 940, einen Bildsensor 950 und/oder eine Anzeige 960. Der SoC 910 umfasst einen Anwendungsprozessor 920 und/oder einen WideIO-Speicher 930.
-
Daten, die auf dem WideIO-Speicher 930 oder der LPDDRx-Speichervorrichtung 940 gespeichert sind, können auf der Anzeige 960 gesteuert durch den SoC 910 angezeigt werden. Der SoC 910, insbesondere der Anwendungsprozessor 920, kann die MMU 200 in 5 oder das MMU-Modul 200a in 16 umfassen.
-
Daher kann die MMU des Anwendungsprozessors 920 einen Kontext-Cache, einen Umsetzungs-Cache, eine Invalidierungswarteschlange und/oder einen ATM umfassen. Der ATM kann eine virtuelle Adresse, die in einer Zugriffsanfrage von einem Master-IP umfasst ist, in eine physikalische Adresse umsetzen, indem primär der Kontext-Cache durchsucht wird, der Kontexte speichert, während das Duplizieren von Kontexten vermieden wird, und indem basierend auf der Durchsuchung des Kontext-Caches selektiv der Umsetzungs-Cache durchsucht wird. Daher kann eine Größe des Umsetzungs-Caches reduziert werden.
-
Ein SoC und eine Halbleitervorrichtung gemäß den erfinderischen Konzepten kann als eine von verschiedenen Typen verpackt werden, die anschließend eingebettet werden sollen. Zum Beispiel kann ein SoC gemäß der erfinderischen Konzepte durch PoP (Package on Package), Kugelgitteranordnungen (Ball Grid Array, BGA), Chip Scale Package (CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-Line Package (PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flatpack (TQFP), Small Outline (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline (TSOP), Thin Quad Flatpack (TQFP), System In Package (SIP), Multi-Chip Package (MCP), Wafer-level Fabricated Package (WFP) oder Wafer-Level Processed Stack Package (WSP) verpackt sein.
-
Die oben beschriebenen Elemente der 1 bis 20 können in einer Verarbeitungsschaltung wie Hardware, die Logikschaltungen umfasst, einer Hardware-/Software-Kombination, wie beispielsweise einer prozessorausführenden Software, oder einer Kombination aus denselben und Speicher implementiert werden. Zum Beispiel kann die Verarbeitungsschaltung insbesondere eine zentrale Verarbeitungseinheit (CPU), eine arithmetisch-logische Einheit (ALU), einen Digitalsignalprozessor, einen Mikrocomputer, ein Field Programmable Gate Array (FPGA), eine programmierbare Logikeinheit, einen Mikroprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC) usw. umfassen, sie ist aber nicht darauf beschränkt.
-
Das Vorstehende soll beispielhafte Ausführungsformen erläutern und soll nicht als dieselben einschränkend ausgelegt werden. Obwohl beispielhafte Ausführungsformen beschrieben wurden, wird der Fachmann verstehen, dass viele Modifikationen in den beispielhaften Ausführungsformen möglich sind, ohne wesentlich von der neuen Lehre und den Vorteilen der vorliegenden Offenbarung abzuweichen. Dementsprechend sollen alle derartigen Modifikationen in dem Umfang der vorliegenden Offenbarung enthalten sein, wie in den Ansprüchen definiert.