DE102015210539A1 - Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller - Google Patents

Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller Download PDF

Info

Publication number
DE102015210539A1
DE102015210539A1 DE102015210539.3A DE102015210539A DE102015210539A1 DE 102015210539 A1 DE102015210539 A1 DE 102015210539A1 DE 102015210539 A DE102015210539 A DE 102015210539A DE 102015210539 A1 DE102015210539 A1 DE 102015210539A1
Authority
DE
Germany
Prior art keywords
memory
protection unit
memory protection
software
hardware
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.)
Pending
Application number
DE102015210539.3A
Other languages
English (en)
Inventor
Gunnar Piel
Nico Bannow
Simon Hufnagel
Jens Gladigau
Rakshith Amarnath
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102015210539.3A priority Critical patent/DE102015210539A1/de
Priority to JP2016114279A priority patent/JP6679419B2/ja
Priority to US15/176,696 priority patent/US10031862B2/en
Priority to CN201610400184.XA priority patent/CN106250328B/zh
Publication of DE102015210539A1 publication Critical patent/DE102015210539A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

Speicherschutzeinheit (29l, 29g), gekennzeichnet durch folgende Merkmale: – Hardwareregister zum Eintragen von Adresstabellen, – einen Konfigurationsspeicher (28) zum Speichern der Adresstabellen, – eine vorkonfigurierte Hardwarelogik (29l, 29g) zum Verwalten des Konfigurationsspeichers (28), – eine Datenverbindung zwischen dem Konfigurationsspeicher (28) und der Hardwarelogik (29l, 29g) zum Laden der Hardwareregister, – eine erste Schnittstelle zum Steuern des Ladens durch einen Rechenkern (23, 24) und – eine zweite Schnittstelle zum Beschreiben des Konfigurationsspeichers (28) durch den Rechenkern (23, 24).

Description

  • 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
    • DE 19828056 A1 [0004]

Claims (10)

  1. Speicherschutzeinheit (29l, 29g), gekennzeichnet durch folgende Merkmale: – Hardwareregister zum Eintragen von Adresstabellen, – einen Konfigurationsspeicher (28) zum Speichern der Adresstabellen, – eine vorkonfigurierte Hardwarelogik (29l, 29g) zum Verwalten des Konfigurationsspeichers (28), – eine Datenverbindung zwischen dem Konfigurationsspeicher (28) und der Hardwarelogik (29l, 29g) zum Laden der Hardwareregister, – eine erste Schnittstelle zum Steuern des Ladens durch einen Rechenkern (23, 24) und – eine zweite Schnittstelle zum Beschreiben des Konfigurationsspeichers (28) durch den Rechenkern (23, 24).
  2. Speicherschutzeinheit (29l, 29g) nach Anspruch 1, dadurch gekennzeichnet, dass die Hardwarelogik (29l, 29g) zum Überwachen eines Zugriffs beim Laden der Hardwareregister eingerichtet ist.
  3. Speicherschutzeinheit (29l, 29g) nach Anspruch 2, dadurch gekennzeichnet, dass die Hardwarelogik (29l, 29g) derart konfiguriert ist, dass das Laden abhängig von einer Ausführungsebene in einer Zugriffshierarchie erfolgt.
  4. Speicherschutzeinheit (29l, 29g) nach Anspruch 3, dadurch gekennzeichnet, dass die Hardwarelogik (29l, 29g) derart konfiguriert ist, dass die Ausführungsebene abhängig von einem Softwarekennzeichen bestimmt wird.
  5. Speicherschutzeinheit (29l, 29g) nach Anspruch 4, dadurch gekennzeichnet, dass die Hardwarelogik (29l, 29g) derart konfiguriert ist, dass das Softwarekennzeichen wahlweise einen VMM (14), eine VM (12) oder eine SWE (13) bezeichnet.
  6. Speicherschutzeinheit (29l, 29g) nach Anspruch 4 oder 5, dadurch gekennzeichnet, dass die Hardwarelogik (29l, 29g) derart konfiguriert ist, dass sie anhand des Softwarekennzeichens VMs (12) gleicher und unterschiedlicher Ausführungsebene sowie SWEs (13) gleicher und unterschiedlicher Ausführungsebene unterscheiden kann.
  7. Speicherschutzeinheit (29l, 29g) nach Anspruch 6, dadurch gekennzeichnet, dass die Hardwarelogik (29l, 29g) derart konfiguriert ist, dass ein automatisches oder teilautomatisches Laden der Hardwareregister aufgrund einer jeweils aktiven Software (12, 13, 14) mit dem die Software (12, 13, 14) bezeichnenden Softwarekennzeichen erfolgt.
  8. Speicherverwaltungseinheit mit einer Speicherschutzeinheit (29l, 29g) nach einem der Ansprüche 1 bis 7.
  9. Mikrocontroller (15) mit einer Speicherschutzeinheit (29l, 29g) nach einem der Ansprüche 1 bis 7.
  10. Mikrocontroller (15) nach Anspruch 9, gekennzeichnet durch folgende Merkmale: – einen Bus (21), vorzugsweise mit einem Koppelfeld, zum Austauschen von Arbeitsdaten mit einem globalen Adressraum (22), – mit dem Bus (21) mittelbar verbundene Rechenkerne (23, 24) zum Verarbeiten der Arbeitsdaten, – zwischen jeweils einen der Rechenkerne (23, 24) und den Bus (21) geschaltete Speicherschutzeinheiten (29l, 29g) zum Schützen des globalen Adressraumes (22).
DE102015210539.3A 2015-06-09 2015-06-09 Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller Pending DE102015210539A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102015210539.3A DE102015210539A1 (de) 2015-06-09 2015-06-09 Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller
JP2016114279A JP6679419B2 (ja) 2015-06-09 2016-06-08 メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
US15/176,696 US10031862B2 (en) 2015-06-09 2016-06-08 Memory protection unit, memory management unit, and microcontroller
CN201610400184.XA CN106250328B (zh) 2015-06-09 2016-06-08 存储器保护单元、存储器管理单元和微控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015210539.3A DE102015210539A1 (de) 2015-06-09 2015-06-09 Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller

Publications (1)

Publication Number Publication Date
DE102015210539A1 true DE102015210539A1 (de) 2016-12-15

Family

ID=57394834

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015210539.3A Pending DE102015210539A1 (de) 2015-06-09 2015-06-09 Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller

Country Status (4)

Country Link
US (1) US10031862B2 (de)
JP (1) JP6679419B2 (de)
CN (1) CN106250328B (de)
DE (1) DE102015210539A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6990150B2 (ja) * 2018-06-18 2022-01-12 ルネサスエレクトロニクス株式会社 データ処理装置及びメモリ保護方法
EP3792800A1 (de) 2019-09-12 2021-03-17 Nxp B.V. Verwaltung der gleichgrossen virtuellen speicherbereichen und der physischen speicherbereichen einer elektronischen vorrichtung

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19828056A1 (de) 1998-06-24 1999-12-30 Bosch Gmbh Robert Speicherüberwachungssystem

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1065346C (zh) * 1994-10-20 2001-05-02 联华电子股份有限公司 软件保护方法及装置
US6820177B2 (en) * 2002-06-12 2004-11-16 Intel Corporation Protected configuration space in a protected environment
US7475209B2 (en) * 2004-05-13 2009-01-06 International Business Machines Corporation Moving hardware context structures in memory while maintaining system operation
CN1306357C (zh) * 2004-12-15 2007-03-21 中国长城计算机深圳股份有限公司 一种保证信息安全的计算机系统
EP1977363B1 (de) * 2006-01-13 2016-10-26 Freescale Semiconductor, Inc. Schutzsystem und betriebsverfahren darin
JP4818793B2 (ja) * 2006-04-20 2011-11-16 ルネサスエレクトロニクス株式会社 マイクロコンピュータ及びメモリアクセスの制御方法
US7817799B2 (en) * 2006-09-07 2010-10-19 International Business Machines Corporation Maintaining encryption key integrity
KR101724590B1 (ko) * 2011-01-31 2017-04-11 삼성전자주식회사 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법
CN102859502B (zh) * 2011-03-02 2016-03-23 松下电器(美国)知识产权公司 虚拟计算机系统、虚拟计算机控制方法、及半导体集成电路
US9566158B2 (en) * 2011-12-31 2017-02-14 Intel Corporation Hardware protection of virtual machine monitor runtime integrity watcher
JP5914145B2 (ja) * 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
JP2014081819A (ja) * 2012-10-17 2014-05-08 Renesas Electronics Corp 情報処理装置
US9836318B2 (en) * 2014-02-21 2017-12-05 Infineon Technologies Ag Safety hypervisor function
US9389793B2 (en) * 2014-03-06 2016-07-12 Freescale Semiconductor, Inc. Trusted execution and access protection for embedded memory
FR3020160B1 (fr) * 2014-04-16 2017-08-11 Commissariat Energie Atomique Systeme d'execution de code avec mecanisme d'hypervision en aveugle
GB2525596B (en) * 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19828056A1 (de) 1998-06-24 1999-12-30 Bosch Gmbh Robert Speicherüberwachungssystem

Also Published As

Publication number Publication date
JP6679419B2 (ja) 2020-04-15
JP2017004522A (ja) 2017-01-05
CN106250328A (zh) 2016-12-21
US10031862B2 (en) 2018-07-24
CN106250328B (zh) 2022-01-18
US20160364342A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE112005003863B3 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE102007006190B4 (de) Techniken zur Verwendung von Speicher-Attributen
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE10357804B4 (de) Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe
DE102007063946B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE102013022405B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
EP2807558B1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem-kern zur exklusiven bereitstellung an virutelle maschinen
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE112009000612T5 (de) Multi-Betriebssystem-Booteinrichtung (OS), Multi-OS-Boot-Programm, Aufzeichnungsmedium und Multi-OS-Bootverfahren
DE112010005821T5 (de) Kontextwechsel
DE2458065A1 (de) Datenverarbeitungsanlage mit sicherung der daten gegen unberechtigten zugriff
EP2466466B1 (de) Verfahren zur Fehlererkennung bei der Ausführung eines Echtzeit-Betriebssystems
DE102014003540A1 (de) Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE102016122375A1 (de) Dynamischer containerisierter Systemspeicherschutz für Niedrigenergie-MCUs
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE102016220639A1 (de) Speicherschutzeinheit und Verfahren zum Schützen eines Speicheradressraumes
DE10297686B4 (de) System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren

Legal Events

Date Code Title Description
R012 Request for examination validly filed