-
Die vorliegende Erfindung betrifft eine Speicherschutzeinheit. Die vorliegende Erfindung betrifft darüber hinaus eine entsprechende Speicherverwaltungseinheit sowie einen entsprechenden Mikrocontroller.
-
Stand der Technik
-
Der Hypervisor (virtual machine monitor, VMM) bildet ein wichtiges Grundkonzept der Virtualisierung. Aus Software-Sicht stellt der VMM sicher, dass verschiedene unabhängige Software-Einheiten vollständig voneinander getrennt werden können. Diese sogenannte Störfreiheit (freedom from interference) ist insbesondere dienlich in sicherheitskritischen Anwendungsfällen (use cases). Größere Softwareeinheiten, beispielsweise Applikationen inkl. Betriebssystem, werden im Folgenden virtuelle Maschinen (virtual machines, VMs) genannt. Kleinere Softwareeinheiten (software entities, SWEs) sind z. B. Betriebssystem-Tasks, Software-Threads oder Teile der Anwender-Software innerhalb einer VM. Die hierarchische Unterteilung von VMs und SWEs kann in der Implementierung tatsächlich hierarchisch umgesetzt sein oder aber durch eine flache Aufteilung von vielen SWEs mit einer lediglich logischen Zuordnung zu VMs. Für eine effiziente Virtualisierung verfügt ein Mikrocontroller oder Mikroprozessor nach dem Stand der Technik über spezielle Hardware-Fähigkeiten, um die VMs voneinander trennen zu können.
-
Ein Kernbaustein der Virtualisierung innerhalb eines Mikrocontrollers oder Mikroprozessors (µP) – im Folgenden nur noch zusammenfassend als µC bezeichnet – ist die Speicherschutzeinheit (memory protection unit, MPU). Die gattungsmäßige MPU kann alleinstehend oder innerhalb einer Speicherverwaltungseinheit (memory management unit, MMU) integriert sein. Die Hauptrechenkern-MPU prüft die Speicherzugriffe der Hauptrechenkerne (cores) eines µC auf mögliche Zugriffsverletzungen. Die IO-MMU prüft die Speicherzugriffe der DMA-fähigen bzw. Master-fähigen Peripherieeinheiten eines µC auf mögliche Zugriffsverletzungen. Die Hauptrechenkern-MPU und die IO-MPU sind im Folgenden nur noch zusammenfassend als MPU bezeichnet. Die DMA- bzw. Master-fähigen Peripherieeinheiten werden im Folgenden zusammengefasst mit den Hauptrechenkernen als Rechenkerne bezeichnet. Eine Zugriffsverletzung ist zum Beispiel ein schreibender Zugriff von einer VM auf eine Speicheradresse, die einer anderen VM zugeordnet ist. Dazu wird anhand von Adresstabellen geprüft, ob die mit einzelnen Zugriffen verbundenen Adressen innerhalb der erlaubten Bereiche liegen. Typischerweise werden verschiedene Adressbereiche für verschiedene VMs festgelegt. Beispielsweise sind für 5 VMs und jeweils 10 Adressbereiche insgesamt Adressbereiche zu definieren. Ein typisches Rechensystem besteht aus einem oder mehreren Rechenkernen und beispielsweise Flash- oder RAM-Speichern, die über einen Bus oder ein Koppelfeld (crossbar switch) untereinander verbunden sind. Eine MPU ist eine Hardware-Einheit, die zum Beispiel zwischen einem Rechenkern und einem Bus oder Koppelfeld liegt. Die MPU speichert die Adressbereiche und enthält Vergleicher-Einheiten, die jeden Zugriff des Rechenkernes über den Bus oder das Koppelfeld auf den Speicher vor seiner Ausführung auf Zulässigkeit prüft. Ist der Zugriff erlaubt, findet er statt. Sollte ein Zugriff nicht erlaubt sein, wird dieser verhindert, erreicht somit den Bus nicht und der Rechenkern wird geeignet informiert, etwa durch einen Interrupt.
-
DE19828056 A1 betrifft eine Anordnung zur Überwachung von Speicherbereichen eines Speichers während eines Beschreibens des Speichers innerhalb eines Programmablaufes. Es ist vorgesehen, dass dem Speicher ein Hilfsspeicher zugeordnet ist, der während des Anlegens von Speicherbereichen des Speichers derart strukturiert wird, dass zu schützende Speicherbereiche des Speichers jeweils gekennzeichnete Speicherbereiche des Hilfsspeichers zugeordnet sind, und bei Ablauf des Programms die Speicherbereiche des Speichers und die gekennzeichneten Speicherbereiche des Hilfsspeichers gleichzeitig ansprechbar sind, und bei unbefugtem Ansprechen eines gekennzeichneten Speicherbereiches des Hilfsspeichers der Programmablauf beeinflusst wird.
-
Offenbarung der Erfindung
-
Die Erfindung stellt eine Speicherschutzeinheit, eine entsprechende Speicherverwaltungseinheit sowie einen entsprechenden Mikrocontroller gemäß den unabhängigen Ansprüchen bereit.
-
Der Erfindung liegt dabei die Erkenntnis zugrunde, dass, je intensiver auf die speziellen Hardware-Fähigkeiten eines µC zur Virtualisierung zugegriffen wird, umso wichtiger deren Effizienz bzgl. Ausführungsgeschwindigkeit ist. Im ungünstigsten Fall erzeugt die Nutzung eines VMMs einen so hohen Laufzeit-Mehraufwand, dass die Gesamtrechenleistung massiv einbricht. Eine Ausführungsform der Erfindung bietet daher eine Hardware-Unterstützung zur Virtualisierung, deren Performancebedarf selbst bei intensiver Nutzung minimal ist.
-
Ein Vorzug dieser Lösung liegt in der Beschleunigung der notwendigen Umschaltung einer MPU für die Ausführung von VMs und SWEs, deren Speicherbereiche zum Zwecke der Störfreiheit voneinander getrennt sind. Ziel dieses Ansatzes ist im Besonderen ein minimaler Zeitbedarf für das Laden der zu schützenden Adressbereiche der MPU. Diese schnellere Umschaltung kommt dann z. B. der Effizienz der Virtualisierung zugute, insbesondere durch das Umschalten von VMs durch den VMM. Die schnellere Umschaltung kommt aber z. B. auch normalen Betriebssystemen oder Applikationen bei der Trennung einzelner Threads voneinander zugute, insbesondere durch die Umschaltung einzelner SWEs.
-
Da der Rechnerkern nicht mehr die MPU-Register selbst teilweise oder vollständig (um-)konfigurieren muss, kann er auch während der MPU-internen Neukonfiguration parallel dazu Berechnungen auf lokalem Speicher ausführen.
-
Eine Ausführungsform der Erfindung flexibilisiert ferner die Verwaltung der Adressbereiche zum Schutz von Software untereinander durch eine Hardware-Unterstützung.
-
Durch die in den abhängigen Ansprüchen und der folgenden Beschreibung aufgeführten Maßnahmen sind vorteilhafte Weiterbildungen und Verbesserungen des im unabhängigen Anspruch angegebenen Grundgedankens möglich. So kann vorgesehen sein, dass der Konfigurationsspeicher zum Speichern der Adresstabellen der Speicherschutzeinheit ein statisches RAM (static random-access memory, SRAM) umfasst. Da die Taktfrequenz technisch limitiert ist, ist zur Erreichung einer hohen Übertragungsbandbreite des Konfigurationsspeichers auch die Verwendung einer hohen Datenwortbreite möglich, um eine schnelle Neukonfiguration der Adressbereiche zu ermöglichen. Durch den Chip-internen Speicher, der direkt an die MMU angeschlossen ist, sind dabei auch Datenwortbreiten von 256 Bit oder darüber hinaus unkritisch.
-
Gemäß einem weiteren Aspekt können Schattenregister vorgesehen sein. Durch den Einsatz von zwei oder mehreren derartigen MPU-Registersätzen, die explizit durch die Software oder aber durch eine Hardware-Vorhersagelogik vorgeladen werden können, kann die Umschaltung der Register gepuffert und somit nochmals zügiger erfolgen.
-
Gemäß einem weiteren Aspekt kann die Hardwarelogik derart konfiguriert sein, dass sie Softwareeinheiten gleicher oder unterschiedlicher Ausführungsebene aufgrund eines eindeutigen Softwarekennzeichens unterscheiden kann. Mit Hilfe einer solchen ID oder Zugriffsebene können Transfers einer geeigneten Peripherieeinheit mit Hilfe der Speicherschutzeinheit auf Gültigkeit überprüft werden.
-
Gemäß einem weiteren Aspekt kann Auf diese Weise kann die Hardwarelogik derart konfiguriert sein, dass ein automatisches oder teilautomatisches Laden der Hardwareregister aufgrund der jeweils aktiven Software mit ihrem eindeutigen Softwarekennzeichens erfolgt, sodass keine bzw. nur eine eingeschränkte Aktion des Rechenkerns (23) erforderlich ist. Die Speicherschutzeinheit kann so anhand des Softwarekennzeichens automatisch (und schnell) die passenden Adressbereiche in ihre Register laden. Diese Maßnahme trägt dem Umstand Rechnung, dass oftmals Register stark limitiert, Speicher verhältnismäßig billig, und eine Änderung des Softwarekennzeichens deutlich seltener als Zugriffe durch den Rechenkern über den Bus sind. Der vorgeschlagene Ansatz bedeutet dann eine für Software transparente, billige und deutliche Erhöhung der möglichen konfigurierten Speicherregionen.
-
Kurze Beschreibung der Zeichnungen
-
Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigt:
-
1 die schematische Einordnung verwendeter Begriffe in Software und Hardware.
-
2 den Aufbau eines µC mit lokalem MPU-Konfigurationsspeicher gemäß einer Ausführungsform.
-
3 die beispielhafte Nutzung einer Ausführungsform der Erfindung.
-
Ausführungsformen der Erfindung
-
Ein exemplarisches Anwendungsszenario umfasst eine Hardware 11 in Form eines Mikroprozessors oder Mikrocontrollers 15, der eine Software 10 ausführt. Die Software 10 umfasst ihrerseits einen VMM 14, der mehrere VMs 12 überwachen kann, wobei eine VM 12 wiederum mehrere SWEs 13 aufweisen kann. Diese Zusammenhänge sind in 1 zusammengefasst.
-
2 zeigt den Aufbau des Mikrocontrollers 15 in weiteren Einzelheiten. Dieser umfasst insbesondere einen Bus 21 mit einem Koppelfeld zum Lesen und Schreiben von Arbeitsdaten aus einem globalen Adressraum 22 bestehend aus globalem Speicher 22a und global zugreifbaren Peripherieeinheiten 22b, die über den globalen Adressraum 22 zugreifbarsind, drei mit dem Bus 21 mittelbar verbundene Rechenkerne 23, 24, wobei 23 einen Hauptrechenkern und 24 eine DMA-fähige Peripherieeinheit darstellt, jeweils zum Verarbeiten der Arbeitsdaten, zwei mit jeweils einem der Hauptrechenkerne 23 mittelbar verbundene lokale Arbeitsspeicher 25 zum Speichern lokaler Arbeitsdaten, zwei zwischen jeden der beiden Hauptrechenkerne 23 und den jeweiligen lokalen Arbeitsspeicher 25 geschaltete erste Speicherschutzeinheiten 29l zum Schützen der lokalen Arbeitsspeicher 25, drei zwischen jeweils einen der drei Rechenkerne 23, 24 und den Bus 21 geschaltete zweite Speicherschutzeinheiten 29g zum Schützen des globalen Adressraumes 22 mit dem globalen Speicher 22a und den globalen Peripherieeinheiten 22b sowie jeweils einen an jede der Speicherschutzeinheiten 29l, 29g angeschlossenen Konfigurationsspeicher 28, in dem die Konfiguration der zu schützenden Speicherbereiche abgelegt werden sowie jeweils eine Erweiterung 29e der Speicherschutzeinheiten 29l, 29g um eine Zugriffsschnittstelle, um auf den Konfigurationsspeicher 28 zugreifen zu können wobei 20 als Summe von 29e und 28 die erfindungsgemäße Neuerung darstellt.
-
Der Inhalt der Hardwareregister für die Umschaltung der Speicherschutzeinheiten 29l, 29g wird dabei nicht etwa im Hauptspeicher des Mikrocontrollers 15 gespeichert. Stattdessen verfügen die Speicherschutzeinheiten 29l, 29g jeweils über einen eigenen lokalen Konfigurationsspeicher 28, vorzugsweise in Gestalt eines statischen RAMs, eine in der Speicherschutzeinheit 29l, 29g enthaltene Hardwarelogik 29e zum Verwalten des Konfigurationsspeichers 28, eine performante Datenverbindung und eine Steuerlogik zwischen Konfigurationsspeicher 28 und der Hardwarelogik 29l, 29g – insbesondere zwischen dem Konfigurationsspeicher 28 und den Hardwareregistern von 29l, 29g, die die zu prüfenden Adressbereiche halten – für den Datenaustausch zwischen dem Konfigurationsspeicher 28 und den Hardwareregistern, eine Schnittstelle zwischen der Speicherschutzeinheit 29l, 29g und dem jeweiligen Rechenkern 23, 24 zur Steuerung des Abgleichs zwischen Konfigurationsspeicher 28 und Hardwareregistern sowie eine Schnittstelle zwischen Speicherschutzeinheit 29l, 29g und dem jeweiligem Rechenkern 23, 24 zum Beschreiben des Konfigurationsspeichers 28 durch den Rechenkern 23, 24 im Wege einer direkten Datendurchleitung oder mittelbar nach Vorverarbeitung durch die Speicherschutzeinheit 29l, 29g.
-
Optional verfügen die Speicherschutzeinheiten 29l, 29g über eine Logik zur hierarchischen Trennung zwischen verschiedenen Zugriffsebenen, z. B. zwecks Unterscheidung von VMM 14, VM 12 oder SWEs 13 und beherrschen das automatische Laden der gewünschten MPU-Konfiguration auf Basis der Zugriffsebenen oder eines Kennzeichens (identification, ID) der gerade ausgeführten Software 10, z. B. einer VM-ID bei VMs oder einer Thread-ID bei SWEs.
-
Während der regulären Ausführung einer aktiven VM funktioniert jede Speicherschutzeinheit 29l, 29g in herkömmlicher Weise: Die aktuelle Adresstabelle mit einer bestimmten Anzahl von Adressbereichen liegt in den Hardwareregistern der Speicherschutzeinheit 29l, 29g. Jeder Adresszugriff des jeweiligen Rechenkernes 23, 24 wird auf Zugriffsberechtigung geprüft, indem diese Adresse gegen jeden Adressbereich aus der Adresstabelle der Speicherschutzeinheit 29l, 29g geprüft wird. Um eine schnelle Prüfung zu ermöglichen, werden sämtliche Prüfungen vorzugsweise in parallelen Hardwarestrukturen ausgeführt, z. B. indem für jeden Adressbereich ein Komparator für die untere Schranke und ein Komparator für die obere Schranke vorgesehen sind.
-
Wenn jedoch eine Softwareeinheit, z.B. eine VM, umgeschaltet wird, muss erfindungsgemäß nicht mehr die Software 10 jedes Hardwareregister zur Beschreibung der Adressbereiche einzeln oder blockweise explizit neu in die Speicherschutzeinheit 29l, 29g laden. Stattdessen werden die Adressbereiche durch die Hardwarelogik 29e aus dem lokalen Konfigurationsspeicher 28 der Speicherschutzeinheit 29l, 29g ausgelesen. Der Konfigurationsspeicher 28 ist vorzugsweise ein schnelles SRAM. Zur Umschaltung muss die Software 10 die Speicherschutzeinheit 29l, 29g lediglich veranlassen. Dies kann etwa durch die Angabe von Adressen innerhalb des Konfigurationsspeichers 28 oder durch die Übermittlung einer ID erfolgen, zu der die neuen Konfigurationsdaten abgelegt sind. Die Veranlassung kann explizit durch den jeweiligen Rechenkern 23, 24 erfolgen oder implizit durch die Speicherzugriffe einer bestimmten VMM-/VM-/SWE, der eine eindeutige ID oder Zugriffsebene zugeordnet werden kann. Um die Adressbereiche initial oder zur Laufzeit zu konfigurieren, kann je nach Ausführung jeder der Rechenkerne 23, 24 oder aber nur einer dieser Rechenkerne direkt oder indirekt über die Hardwareregister der Speicherschutzeinheiten 29l, 29g auf den eigenen oder aber auf sämtliche Konfigurationsspeicher 28 der Speicherschutzeinheiten 29l, 29g, also auf die zu schützenden Adressregionen, zugreifen.
-
Werden im späteren Arbeitsablauf die Speicherzugriffe der DMA-fähigen Peripherieeinheit 24 eingestellt, ist vorzugsweise auch eine ggf. implizit übermittelte oder explizit zu übermittelnde ID oder Zugriffsebene der einstellenden VMM-/VM-/SWE des Hautrechenkerns 23 innerhalb der DMA-fähigen Peripherieeinheit 24 abzulegen, nicht jedoch innerhalb des Konfigurationsspeichers 28. Im späteren Verlauf können die jeweiligen Speicherzugriffe der DMA-fähigen Peripherieeinheit 24 dann mit einer entsprechenden ID oder Zugriffsebene versehen werden. Die ID oder Zugriffsebene richtet sich danach, welche VMM-/VM-/SWE des Rechenkerns 23, 24 den jeweiligen Transfer eingestellt hat. Mit Hilfe der ID oder Zugriffsebene können Transfers der DMA-fähigen Peripherieeinheit 24 mit Hilfe der Speicherschutzeinheit 29g und hier wiederum mit Hilfe der Adressdaten des Konfigurationsspeichers 28 auf Gültigkeit überprüft werden.
-
Je nach Ausführungslevel der aktiven Software 10 können Zugriffe des ausführenden Hauptrechenkernes 23 auf die Konfiguration der Speicherschutzeinheit 29l, 29g erlaubt oder unterbunden sein.
-
Die Speicherschutzeinheiten 29l, 29g können Adresstabellen – explizit und/oder implizit/automatisch auf Basis einer SW ID oder eines Privileg-Levels – gemäß der folgenden Optionen laden:
Insbesondere wenn die betreffende Speicherschutzeinheit 29l, 29g „flach“ ist und lediglich zwischen VMs unterscheidet: Die Software 10 kann bei der Speicherschutzeinheit 29l, 29g explizit den Beginn einer Adresstabelle für die VMs einstellen. Dazu wird innerhalb des Speicherbereichs der Speicherschutzeinheit 29l, 29g per Index oder per Adresse direkt oder indirekt per Offset auf den ersten und auf den letzten Eintrag gezeigt.
-
Insbesondere wenn die betreffende Speicherschutzeinheit 29l, 29g hierarchisch ist und zwischen VMs und SWEs unterscheidet: Die Software 10 kann dann direkt oder indirekt per Offset auf den Eintrag der relevanten SWE per Index oder per Adresse zeigen.
-
Aus dieser Information, die im Konfigurationsspeicher 28 oder in den Hardwareregistern der betreffenden Speicherschutzeinheit 29l, 29g abgelegt ist, kann dann der Einsprung in die für die jeweilige ausgeführten VMs bzw. SWEs zulässigen Adressräume abgeleitet werden.
-
Gemäß einem optionalen Sicherheitsmerkmal (safety feature) ist es vorgesehen, alle möglichen Konfigurationen für die Speicherschutzeinheit 29l, 29g in einer Anlaufphase (start-up phase) zu schreiben und dann weitere Änderungsmöglichkeiten im Betrieb zu verbieten. Die Speicherschutzeinheit 29l, 29g hat dann einen Konfigurationsmodus und läuft anschließend autark ohne weitere Interaktion.
-
Vorzugsweise ist die Anzahl der SWEs innerhalb einer VM nicht festgelegt, sondern flexibel wählbar. Durch die begrenzte Anzahl an Hardware-Komparatoren könnte auch die maximale Anzahl gleichzeitig prüfbarer Adressbereiche in einer entsprechenden Ausführungsform begrenzt sein.
-
In einer Ausführungsform, die die Hierarchie berücksichtigt, gewährleistet die Speicherschutzeinheit 29l, 29g, dass die Software 10 mit einem Ausführungslevel nicht die Konfiguration einer getrennten Software 10 mit gleichem oder privilegierterem Ausführungslevel modifiziert oder liest. Die konfigurierten Adressbereiche von VMM, verschiedenen VMs und von SWEs untereinander sind damit gewissermaßen unsichtbar. Einer übergeordneten Software 10 sollte in diesem Fall Vollzugriff auf die Konfiguration der Adressbereiche aller untergeordneten Softwareeinheiten 10 eingeräumt werden – insbesondere dem VMM 14 auf VMs 12 und SWEs 13 sowie VMs 12 auf SWEs 13.
-
Durch den Einsatz von zwei oder mehreren Sätzen von Hardwareregistern – entsprechend den aus dem Stand der Technik bekannten Schattenregistern oder Schatten-Sets –, die explizit durch die Software 10 oder aber durch eine Vorhersagelogik der Hardware 11 heuristisch vorgeladen werden können (prefetching), kann die Umschaltung der Hardwareregister gepuffert werden und somit nochmals zügiger erfolgen.
-
Wenn der Konfigurationsspeicher 28 nicht für sämtliche VMs und SWEs ausreicht, können die Konfigurationen auch im lokalen Speicher 25 des Rechenkerns 23 oder innerhalb des globalen Speicherbereichs 22a abgelegt und je nach Bedarf zwischen diesen Speichern und dem an die Speicherschutzeinheiten 29l, 29g angeschlossenen Konfigurationsspeicher 28 hin und her kopiert werden. Für Zugriffe auf den globalen Speicherbereich 22a kann entweder der Rechenkern 23, 24 oder ein DMA-Controller verwendet werden oder aber die Speicherschutzeinheit 29l, 29g kann bei Vorhandensein einer entsprechenden Zugriffslogik mittels dem Bus 21 direkt auf diesen Speicher 22a zugreifen.
-
Wird die Hierarchie berücksichtigt, sollte beim Konfigurieren einer Hierarchieebene die maximale Anzahl von Einträgen in einer tieferen Hierarchieebene festlegbar sein. Beispielsweise sollte innerhalb einer VM 12 die tatsächliche Anzahl an SWEs 13 zur Laufzeit frei einstellbar sein. Dies kann auch dynamisch, ggf. gedeckelt durch begrenzte Ressourcen der Hardware 11, erfolgen.
-
3 illustriert ein Beispiel für die Nutzung einer Ausführungsform der Erfindung. Den ersten Schritt bildet dabei eine Initialisierung, die zum Startup, aber auch dynamisch zur Laufzeit erfolgen kann. In diesem Schritt sendet der Rechenkern 23 einen oder mehrere Adressbereiche an die Speicherschutzeinheit 29g. Die Speicherschutzeinheit 29g speichert diese Adressbereiche über die Schnittstelle 29e im angeschlossenen Konfigurationsspeicher 28.
-
Den zweiten Schritt der Anwendung bildet die Aktivierung während des Betriebs. Der Rechenkern 23 teilt der Speicherschutzeinheit 29g in diesem Schritt zu aktivierende Adressbereiche explizit oder implizit mit. Diese Mitteilung kann mittels eines Index, einer Software-ID, eines Privileglevels oder eines Zeigers auf den Konfigurationsspeicher 28 erfolgen und einen oder mehrere Adressbereiche umfassen. Die Speicherschutzeinheit 29g kann – durch den Rechenkern 23 aktiviert oder eigenständig – einen Teil der alten Adressbereiche verwerfen, wenn diese nicht mehr gültig sind oder speichern, wenn diese weiterhin gültig bleiben. Die Speicherschutzeinheit 29g lädt die neuen gültigen Adressbereiche nunmehr aus dem Konfigurationsspeicher 28 in die lokalen Hardwareregister.
-
Im dritten Schritt geht die Speicherschutzeinheit 29g in den Normalbetrieb über. Der Rechenkern 23 greift dabei durch eine Adressierung auf Speicherbereiche zu und die Speicherschutzeinheit 29g prüft die durch den Rechenkern 23 verwendete Adresse auf Zulässigkeit. Bei Zulässigkeit wird der Zugriff an den Bus 21 weitergeleitet, ansonsten blockiert.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-