-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft allgemein Einheiten und Verfahren und insbesondere eine Speicherschutzeinheit und ein Verfahren zum Schützen eines Speicheradressraumes.
-
HINTERGRUND DER ERFINDUNG
-
In Computern oder eingebetteten Prozessoren sind interne Speicherschutzeinheiten (Memory Protection Units, MPU) implementiert, um einen Schutz für den Speicher oder den Speicheradressraum bereitzustellen. Während des Betriebs eines Datenverarbeitungssystems wird jede Anforderung, die einen Speicherzugriff beinhaltet, von der MPU gesteuert, die den Zugriff entweder gewährt oder verweigert. Der Zugriff ist mit verschiedenen Ebenen einer Zugriffshierarchie verbunden. Beispiele hierfür sind Supervisor-Ebene, Benutzer-1- und Benutzer-O-Ebene oder, im Fall virtueller Maschinen, Hypervisor, Ebene 0 und Ebene 1. Es ist bekannt, dass der Speicher unter Verwendung von Adressbereichen zugeordnet wird, die den Zugriffsebenen zugewiesen sind. Verschiedene Anwendungen erfordern unterschiedliche Adressbereichesätze. Ferner erlaubt eine größere Anzahl von Adressbereichen eine detailliertere Behandlung der Adressbereiche, verlängert jedoch auch die erforderliche Zeit für die Auswertung von Zugriffsanforderungen hinsichtlich ihrer Gültigkeit.
-
KURZFASSUNG DER ERFINDUNG
-
In einer Ausführungsform ist eine Speicherschutzeinheit dafür ausgelegt, Zugriffsanforderungen auszuwerten, die sich auf einen Speicheradressraum beziehen. Die Zugriffsanforderungen umfassen Adressparameter, die sich auf die Adressen des Speicheradressraums beziehen. Die Speicherschutzeinheit umfasst einen Adressevaluierer, einen Adressergebniskombinierer und ein Datenregister. Der Adressevaluierer ist dafür ausgelegt, auszuwerten, ob sich die Adressparameter auf Adressbereiche eines Adressbereichesatzes beziehen, und ist dafür ausgelegt, Ergebnisse bezüglich der Adressbereiche auszugeben. Der Adressergebniskombinierer ist dafür ausgelegt, vom Adressevaluierer gelieferte Ergebnisse zu kombinieren, abhängig von Zugriffsschutzgruppen, denen die Adressbereiche zugeordnet sind. Die Speicherschutzeinheit ist dafür ausgelegt, Zugriffsgewährungsergebnisse basierend auf vom Adressergebniskombinierer gelieferten Kombinationen bereitzustellen. Das Datenregister ist dafür ausgelegt, Daten zu speichern, die den Adressbereichesatz betreffen und die eine Zuordnung der Adressbereiche zu den Zugriffsschutzgruppen betreffen.
-
In einer anderen Ausführungsform umfasst ein Verfahren zum Schützen eines Speicheradressraumes, einen Adressbereichesatz des Speicheradressraumes Zugriffsschutzgruppen zuzuordnen, und umfasst, eine Zugriffsanforderung, die sich auf den Speicheradressraum bezieht, auszuwerten. Das Auswerten der Zugriffsanforderung umfasst: Auswerten, ob sich in den Zugriffsanforderungen enthaltene Adressparameter auf Adressbereiche des Adressbereichesatzes beziehen, Kombinieren der Ergebnisse bezüglich der Adressbereiche basierend auf der Zuordnung und Bereitstellen eines Zugriffsgewährungsergebnisses basierend auf Kombinationen von Ergebnissen bezüglich der Adressbereiche.
-
Einzelheiten zu einer oder mehreren Ausführungsformen sind in den beigefügten Zeichnungen und in der nachstehenden Beschreibung ausgeführt. Andere Merkmale, Ziele und Vorteile werden aus der Beschreibung und den Zeichnungen und aus den Patentansprüchen ersichtlich.
-
Figurenliste
-
Für ein umfassenderes Verständnis der vorliegenden Offenbarung und der damit verbundenen Vorteile wird nun auf die folgenden Beschreibungen in Verbindung mit den beigefügten Zeichnungen Bezug genommen, in denen:
- 1 eine schematische Anordnung einer Ausführungsform einer Speicherschutzeinheit als Teil eines Datenverarbeitungssystems zeigt.
- 2 eine Ausführungsform einer Speicherschutzeinheit zeigt.
- 3 eine Abfolge von Schritten zum Schützen eines Speicheradressraumes veranschaulicht.
- 4 einen Fall einander überschneidender Adressbereiche veranschaulicht.
- 5 eine Ausführungsform einer Speicherschutzeinheit in abstrahierter Form zeigt.
- 6 die verschiedenen Schritte in einer Ausführungsform einer Speicherschutzeinheit nach einer Zugriffsanforderung veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG VON VERANSCHAULICHENDEN AUSFÜHRUNGSFORMEN
-
Die Herstellung und Verwendung der derzeit bevorzugten Ausführungsformen werden im Folgenden ausführlich erörtert. Es ist jedoch zu beachten, dass die vorliegende Erfindung eine Vielzahl anwendbarer erfinderischer Ideen bereitstellt, die in den unterschiedlichsten spezifischen Zusammenhängen ausgeführt werden können. Die hier erläuterten, spezifischen Ausführungsformen zeigen lediglich beispielhaft einige spezifische Möglichkeiten zur Herstellung und Verwendung der Offenbarung und sind nicht als Einschränkung des Schutzbereichs zu verstehen.
-
1 veranschaulicht eine Ausführungsform einer Speicherschutzeinheit - abgekürzt MPU - 1 als Teil eines Datenverarbeitungssystems 10 (beispielsweise eine zentrale Verarbeitungseinheit/Central Processing Unit, CPU). Die Speicherschutzeinheit 1 schützt in einer Ausführungsform den physischen Speicher, z. B. eines Prozessors, als Speicheradressraum 11. In einer Ausführungsform bezieht sich der Speicher oder Speicheradressraum auf ein für eine CPU-Architektur definiertes „Speichermodell“. Ein solches „Speichermodell“ beschreibt, wie Adressraum definiert ist, auf den die CPU zugreifen kann. Dies beinhaltet beispielsweise die globale Größe des Adressbereichs, wie er organisiert ist, z. B. in Segmenten, die Segmentgröße, ob alle Segmente symmetrisch oder einige für Code/Daten/Register eingeschränkt sind, wo eine Vorauswahl (Prefetching) zulässig ist etc. In einer weiteren Ausführungsform schützt die Speicherschutzeinheit 1 einen Speicheradressraum, der zusätzlich oder alternativ eine Zuordnung zu Registern (Adresse) oder Speichern (Adresse) oder z. B. zu externen Adressbereichen etc. zulässt. Demnach bezieht sich in einer Ausführungsform der Speicheradressraum 11 auf externe Adressbereiche. „Extern“ beschreibt hier Adressbereiche, die nicht zu der betreffenden Einheit - z. B. Prozessor oder ASIC etc. - gehören, auf der die Speicherschutzeinheit 1 läuft. Die Nutzung des Adressspeicherraumes oder seiner Definition in der Praxis schränkt die Anwendbarkeit der beschriebenen Speicherschutzeinheit 1 nicht ein. Der geschützte Speicheradressraum 11 ist ein beliebiger Bereich zum Speichern von Daten. In einer Ausführungsform bezieht sich „Speicheradressraum“ auf einen Speicher an sich, in einer anderen Ausführungsform auf ein Register. Architekturen mit eingebetteten Prozessoren werden in der Regel für sicherheitskritische eingebettete Anwendungen mit einem Schutzsystem - das hier zum Teil durch die MPU 1 realisiert ist - definiert, um die Kernsystemfunktionalität gegen die Auswirkungen von Softwarefehlern zu schützen und zu verhindern, dass nicht berechtigte Softwarefunktionen auf kritische Systemressourcen zugreifen. Ein Schutzsystem beinhaltet in der Regel: eine Speicherschutzeinheit, verschiedene Eingabe/Ausgabe (E/A)-Berechtigungsstufen und ein Trap-System.
-
Die MPU 1 (oder genauer: die Speicheradressraum-Schutzeinheit) ist dafür ausgelegt, durch Zugriffsanforderungen 100 den Zugriff auf den Speicheradressraum 11 des Datenverarbeitungssystems 10 zu kontrollieren. „Kontrollieren“ bedeutet, dass der Zugriff entweder gewährt oder verweigert wird. Im Fall einer Zugriffsverweigerung veranlasst die MPU 1 in der gezeigten Ausführungsform ein TRAP. Ein Trap - auch als Ausnahme oder Fehler bezeichnet - ist in der Regel eine Art von synchroner Unterbrechung und führt in einer Ausführungsform zu einer Umschaltung in den Kernel-Modus, der es dem Betriebssystem ermöglicht, eine beliebige Aktion auszuführen, bevor die Kontrolle an den ursprünglichen Prozess zurückgegeben wird. Bei Gewährung des Zugriffs führt die zugelassene Zugriffsanforderung - als mögliche Ausgabe 101 der MPU 1 - eine Interaktion mit dem Speicheradressraum 11 aus. Die Interaktion gehört zu einer von drei Arten von Interaktionen: Lesen, Schreiben oder Ausführen von Code. Dies impliziert entweder, dass Daten aus dem Speicheradressraum 11 ausgelesen oder in diesen geschrieben werden oder dass Code unter Verwendung des Speicheradressraums 11 ausgeführt wird.
-
Der Zugriff auf den Speicheradressraum 11 ist an wenigstens ein Register des Speicheradressraumes 11 gerichtet, das durch eine Adresse 21 angegeben ist. Die Adressen des Speicheradressraumes 11 sind mit verschiedenen Adressbereichen 20 verknüpft. Die verschiedenen Adressbereiche 20 erlauben wenigstens eine Art von Transaktion und sind über Zugriffsschutzgruppen mit Berechtigungsstufen, auch E/A-Berechtigungsstufe genannt, verknüpft. Die Berechtigungsstufen werden beispielsweise durch den Buchstaben „L“ und eine Ziffer 0, 1, 2.. bezeichnet, wobei eine höhere Ziffer eine niedrigere Ebene und verringerte Zugriffsrechte impliziert.
-
Beispiele verschiedener Berechtigungsstufen sind:
- • Supervisor (SV)-Modus: erlaubt den Lese/Schreibzugriff auf Systemregister und sämtliche Peripheriegeräte.
- • Benutzer1-Modus: erlaubt Anwendungsaufgaben den direkten Zugriff auf nicht-kritische Peripheriegeräte des Systems.
- • Benutzer0-Modus: wird für Aufgaben verwendet, die nicht auf Peripheriegeräte zugreifen.
-
Das gezeigte bereichbasierte Speicherschutzsystem wird z. B. für kleine oder kostengünstige Anwendungen für Systeme verwendet, die keinen virtuellen Speicher benötigen (seitenbasiert, MMU). Die Speicherschutzeinheit 1 wird beispielsweise in Echtzeitanwendungen verwendet, in denen ein virtuelles Speicherschutzsystem (MMU) aufgrund seines nicht-deterministischen Verhaltens Nachteile mit sich bringt (z. B. Neuladen von Seiten).
-
In verschiedenen Ausführungsformen basiert ein solches Schutzsystem auf mehreren konfigurierbaren Schutzbereichen:
- • Ein Schutzbereich - hier auch als Adressbereich bezeichnet - ist ein zusammenhängender Teil des Adressraums, für den Zugriffsberechtigungen definiert werden.
- • Ein Schutzbereich definiert die CPU-Zugriffsberechtigungen bezüglich der vorgenannten Arten von Interaktionen: Datenlesezugriff, Datenschreibzugriff, Codeausführungszugriff.
- • Ein Schutzbereich ist durch eine Untergrenze und eine Obergrenze definiert. Eine Adresse gehört üblicherweise zu einem Adressbereich, falls die Untergrenze kleiner oder gleich der Adresse ist und falls die Adresse kleiner ist als die Obergrenze.
- • Die Schutzbereiche sind beispielsweise als Datenschutzbereiche vordefiniert, die Datenzugriffsberechtigungen definieren, z. B. Lesen und Schreiben, und/oder Codeschutzbereiche, die Berechtigungen zum Abrufen von Anweisungen definieren.
- • Ein Beispiel für eine Anzahl von Bereichen / Granularität ist: acht Adressbereiche für Code, 16 Adressbereiche für Daten, Granularität acht Byte.
-
In einer Ausführungsform sind die Bereiche des Speicheradressraumes fest CPU-Codeabrufen und dem CPU-Datenzugriff zugeordnet. Dies verbessert die CPU-Zeitsteuerung insgesamt trotz einer verringerten Flexibilität. In einer anderen Ausführungsform werden über Konfigurationsparameter Universal-Adressbereiche implementiert und dem Codeabruf oder dem Datenzugriff zugewiesen. Die Parameter eines Datenbereichs sind z. B. Ober- und Untergrenze, Leseunterstützung, Schreibunterstützung. Anweisungsbereiche werden durch eine Ober- und Untergrenze definiert.
-
Üblicherweise variiert die Anzahl der Code- und Datenschutzbereiche sowie die Granularität für Ober- und Untergrenzen:
- • Eine größere Anzahl von Schutzbereichen ergibt eine feinkörnigere Kontrolle des Aufgabenzugriffs auf On-Chip-Ressourcen, ohne eine Neuprogrammierung der MPU-Sätze zu erfordern, wenn von einer Aufgabe zur anderen gewechselt wird.
- • Eine größere Anzahl von Schutzbereichen ergibt eine größere Komplexität im zeitkritischen Zugriffspfad vom CPU-Kernel zu lokalen CPU-Speichern und On-Chip-Ressourcen. Ferner liegt die Adressvergleichlogik in Bezug auf die Bereichsprüfung per Definition in dem kritischen Pfad vom CPU-Kernel zu Systemspeichern oder Peripheriegeräten. Somit erhöht eine große Zahl von Bereichen die Zugriffslatenz. Daher verringert eine größere Zahl tendenziell die maximale Frequenz, die für einen gegebenen Satz der CPU-Architektur oder Chiptechnologie erreichbar ist. Eine große Zahl erhöht auch die Zugriffslatenz hinsichtlich der Zahl der CPU-Taktzyklen.
-
Eine Reaktion auf eine Speicheradressraum-Schutzverletzung - hier durch eine Zugriffsverweigerung - ist ein TRAP / nichtmaskierbares Interrupt (NMI). Abhängig von der Art der Zugriffsverweigerung wird sie als illegaler Datenzugriff oder als Anweisungsausnahme eingestuft.
-
Ein kompletter Satz von Zugriffsberechtigungen, der für den gesamten genutzten Adressraum definiert ist, wird z. B. als Schutzsatz bezeichnet. Ein Schutzsatz umfasst in einer Ausführungsform einen Satz ausgewählter Codeschutzbereiche und/oder einen Satz von Datenschutzbereichen. Der Schutzsatz definiert in einer Ausführungsform sowohl Datenzugriffsberechtigungen als auch Berechtigungen zum Abrufen von Anweisungen. In einer Ausführungsform ermöglicht es ein Schutzsatz der Software, frei zu definieren, welche Bereiche dem Schutzsatz zugewiesen werden. Ein solcher Schutzsatz ist in vollem Umfang konfigurierbar. In einer anderen Ausführungsform umfasst ein Schutzsatz Daten zu einem Adressbereichesatz, zu den zulässigen/zugehörigen Interaktionen und zu den Zugriffsschutzgruppen, denen die Adressbereiche zugeordnet sind.
-
Verschiedene Schutzsätze zu haben, erlaubt einen schnellen Wechsel des Satzes von Zugriffsberechtigungen, wenn z. B. zwischen Benutzer- und Supervisor-Modus oder zwischen verschiedenen Benutzeraufgaben umgeschaltet wird. Dies bezieht sich beispielsweise auch auf das Umschalten zwischen verschiedenen Schutzebenen und verschiedenen Aufgaben. Beispielsweise könnte eine Aufgabe im Benutzer-Modus sein, während die andere Aufgabe im Supervisor-Modus ausgeführt wird.
-
Ein Schutzsatz bestimmt die Zulässigkeit des Zugriffs auf den Speicheradressraum durch die aktuelle Aufgabe, d. h. die Zugriffsanforderung. Ein prozessorinternes Steuerregisterfeld bestimmt die Nummer des aktuellen Schutzregistersatzes. Bei der Arbeit mit Sätzen besteht in einer Ausführungsform keine Beschränkung auf nur einen Satz, der gleichzeitig aktiv ist, d. h. es können mehrere Sätze aktiv sein. Die Satz-Register sind der bevorzugte Weg zur Aktivierung und/oder Deaktivierung mehrerer Sätze in einem einzigen Zyklus. In einer anderen Ausführungsform ändert die Software oder Anwendung, die die Speicherschutzeinheit nutzt, den Aktivierungsstatus der Bereiche sequenziell.
-
In einer Ausführungsform wird die Zugriffserlaubnis für einander überschneidende Speicherbereiche folgendermaßen eingestellt: Falls einer der Bereiche dies zulässt, wird der Speicherzugriff gewährt. Das bedeutet, dass, wenn sich zwei Bereiche überschneiden, für die betreffende Interaktion der von beiden Bereichen abgedeckte Teilbereich die Berechtigung des Bereichs mit der höchsten Berechtigung erhält. Somit kann die Verschachtelung von Bereichen z. B. dafür genutzt werden, Lese/Schreibzugriffe auf einen Teilbereich eines größeren Bereichs, in dem die aktuelle Aufgabe Lesezugriff hat, zuzulassen. Eine Schreibberechtigung zum Ändern von Steuerregistern in Bezug auf den Speicherschutz ist in einer Ausführungsform nur auf der höchsten Berechtigungsstufe gegeben, die als Betriebssystemstufe dient.
-
In einer anderen Ausführungsform erlaubt die MPU eine flexible Hypervisor-Unterstützung. Dies erfolgt, indem ein E/A-Berechtigungsmodus (Hypervisor) und zwei Ebenen des Speicheradressraumschutzes vorgesehen werden und so wenigstens drei verschiedene Berechtigungsstufen abgedeckt werden:
- • Eine Hypervisor-Stufe.
- • Eine Stufe 0 (kurz L0), die von der Hypervisor-Aufgabe kontrolliert wird. Die Stufe L0 definiert die Speicherbereiche, in denen eine virtuelle Maschine aktiviert wird, um auf On-Chip-Ressourcen zuzugreifen. Mit den L0-Speicherschutzbereichen ist der Hypervisor in der Lage, die geforderte Einkapselung zwischen verschiedenen virtuellen Maschinen bereitzustellen. Schreibberechtigungen zum Ändern der LO-Bereiche werden ausschließlich an die Hypervisor-Berechtigungsstufe vergeben.
- • Eine Stufe 1 (kurz L1), die von der Virtuelle-Maschine (VM)-Aufgabe kontrolliert wird. In einer Ausführungsform wird die Stufe L1 auch durch den Hypervisor kontrolliert, da sie den höchsten E/A-Berechtigungsmodus aufweist. Mit den L1-Speicherschutzbereichen oder -sätzen kann die virtuelle Maschine die Speicheradressraumbereiche kontrollieren, in denen Aufgaben mit niedrigerer E/A-Berechtigungsstufe ablaufen können, jedoch nur in den als L0 definierten Bereichen. Schreibberechtigungen zum Ändern der L1-Bereiche werden in einer Ausführungsform ausschließlich an die Hypervisor- und/oder die VM-Berechtigungsstufe vergeben.
-
In einer Ausführungsform werden die Zugriffsberechtigungen für einander überschneidende Speicheradressraumbereiche in einem solchen Hypervisor-System folgendermaßen vergeben:
- • LO-Bereiche sind logisch durch eine ODER-Beziehung verknüpft.
- • L1-Bereiche sind ebenfalls ODER-verknüpft.
- • LO-Bereiche und L1-Bereiche sind durch eine UND-Beziehung verknüpft.
-
Schutzmerkmale des Speicheradressraumes sind:
- • Adressbereiche (wenigstens definiert durch Ober- und Untergrenzen) des Speicheradressraumes sind Zugriffsschutzgruppen zugeordnet, die mit verschiedenen Berechtigungsstufen (z. B. Hypervisor, virtuelle Maschine, Benutzer0) verknüpft sind. Damit ist die Zuweisung konfigurierbar.
- • Die Zuweisung von Adressbereichen zu Zugriffsschutzgruppen wird vorzugsweise nur für Zugriffe mit der zugehörigen Berechtigungsstufe oder einer höheren Berechtigungsstufe zugelassen. Beispielsweise kann nur ein Hypervisor die Adressbereiche entsprechenden Gruppen zuordnen.
- • Die Adressbereiche können nicht durch jedwede Berechtigungsstufe konfiguriert werden, sondern lediglich durch die definierten Berechtigungsstufen oder -gruppen (z. B. kann eine virtuelle Maschine nur den ihr zugeordneten Adressbereich ändern).
- • Die Adressbereiche sind in einer Ausführungsform außerdem mit bestimmten Arten von Interaktionen (z. B. Lesen, Schreiben, Ausführen) verknüpft, die für die betreffenden Adressbereiche zulässig sind.
- • Bezüglich der Gewährung des Zugriffs werden die Ergebnisse der Auswertung der Adressbereiche, die von einer Zugriffsanforderung betroffen sind, ODER-verknüpft, falls sie mit derselben Gruppe verknüpft sind. Dies liefert ein Ergebnis für die aktiven Bereiche (betreffend die Zugriffsanforderung und den beabsichtigten Zugriff). Die Ergebnisse betreffend die aktiven und verschiedenen Gruppen werden UND-verknüpft.
-
In 2 sind Einzelheiten einer konfigurierbaren mehrstufigen Speicherschutzeinheit (MPU) 1 dargestellt. Sie hat den Vorteil, dass sie flexibel genug ist, um die Bedürfnisse verschiedener Anwendungsszenarien zu erfüllen. Ferner erfordert sie keinen großen Überhang an Bereichen, der zu einer verringerten maximalen Frequenz des Designs führt. Die gezeigte MPU 1 empfängt eine Zugriffsanforderung 100 und lässt diese entweder als zulässige Zugriffsanforderung 101 passieren oder verweigert den Zugriff auf den in 1 dargestellten Speicheradressraum. In einer alternativen Ausführungsform veranlasst die MPU 1 im Fall einer Zugriffsverweigerung ein TRAP. Die Zugriffsanforderung 100 ist mit gewissen Parametern verknüpft, die sich in dieser Ausführungsform auf wenigstens eine Adresse des Speicheradressraumes beziehen und sich auf eine Art von Interaktion beziehen.
-
Die MPU 1 umfasst einen Adressevaluierer 2 und einen Adressergebniskombinierer 3. Die Komponenten sind in einer Ausführungsform durch entsprechende Logikbausteine realisiert. Ferner hat die MPU 1 über ein Datenregister 7 Zugriff auf wenigstens einen (oder mehrere) Satz/Sätze von Adressbereichen mit zulässigen Interaktionen und verknüpft mit Zugriffsschutzgruppen. Die Zugriffsschutzgruppen sind in einer Ausführungsform mit verschiedenen Berechtigungsstufen verknüpft, z. B. Hypervisor, Stufe 0 und Stufe 1 oder Supervisor, Benutzer 1 und Benutzer 0. Die Zugriffsschutzgruppen sind im Folgenden nummeriert, d. h. Gruppe 0, Gruppe 1, ... Gruppe x.
-
Der Adressevaluierer 2 vergleicht den wenigstens einen Adressparameter der Zugriffsanforderung 100 mit den Adressbereichen des Adressbereichesatzes. Das impliziert, dass der Adressevaluierer 2 die Adressbereiche identifiziert, auf die sich der wenigstens eine Adressparameter der Zugriffsanforderung 100 bezieht. Insbesondere ist es möglich, dass sich der Adressparameter auf mehr als einen Adressbereich bezieht, da sich die Adressbereiche überlappen oder überschneiden können. In einer Ausführungsform liefert der Adressevaluierer 2 für jeden Adressbereich des Adressbereichesatzes einen logischen Wert „wahr“ oder „falsch“ (bzw. 1 und 0), abhängig davon, ob die Adresse zu dem betreffenden Adressbereich gehört oder nicht. Der Adressevaluierer 2 ist in der gegebenen Ausführungsform ferner dafür ausgelegt, den in der Zugriffsanforderung 100 enthaltenen Interaktionsparameter mit der Art der zulässigen Interaktion des jeweiligen aktiven Adressbereichs zu vergleichen. Das beinhaltet, dass der Adressevaluierer 2 auswertet, ob die durch die Zugriffsanforderung 100 gewünschte und durch einen Interaktionsparameter beschriebene Interaktion für die aktiven Adressbereiche des Adressbereichesatzes zulässig ist. Aktive Adressbereiche sind Adressbereiche, auf die sich die Adressparameter beziehen. In einer Ausführungsform umfasst der Adressevaluierer 2 mehrere Komparatoren, die dafür ausgelegt sind zu entscheiden, ob sich ein Adressparameter auf einen Adressbereich bezieht oder nicht, d. h. ob die Adresse größer oder gleich einer Untergrenze und kleiner als eine Obergrenze ist.
-
Die beiden Vergleiche (die mit zwei Fragen verknüpft sind: Gehört der Adressparameter zu einem Adressbereich? Ist die Art von Interaktion für den Adressbereich zulässig?) werden für alle Adressbereiche durchgeführt, die durch den Adressbereichesatz definiert sind, und führen zu einem einzigen Ergebnis für jeden Adressbereich. Das Ergebnis ist in einer Ausführungsform ein logisches „wahr“ (bzw. 1) oder „falsch“ (bzw. 0). Beispielsweise zeigt ein Wert „wahr“ für einen Adressbereich an, dass sich der Adressparameter auf diesen Adressbereich bezieht und dass der Interaktionsparameter eine mit diesem Adressbereich verknüpfte oder für ihn zulässige Interaktion ist. Ein Wert „falsch“ zeigt an, dass sich entweder der Adressparameter nicht auf einen Adressbereich bezieht oder dass durch die Zugriffsanforderung ein falscher Interaktionsparameter angegeben wurde.
-
Der Adressergebniskombinierer 3 kombiniert die Ergebnisse des Adressevaluierers 2 unter Verwendung der Zugriffsschutzgruppen. Der Adressergebniskombinierer 3 ist dafür ausgelegt, Ergebnisse, die zu Adressbereichen gehören, welche derselben Zugriffsschutzgruppe zugeordnet sind, mit einer ODER-Verknüpfung zu kombinieren. Der Adressergebniskombinierer 3 kombiniert ferner die Ergebnisse in einer UND-Verknüpfung, wenn sie zu verschiedenen aktiven Zugriffsschutzgruppen gehören, wobei aktive Zugriffsschutzgruppen solche Zugriffsschutzgruppen sind, denen aktive Adressbereiche zugeordnet sind. Da nur aktive Zugriffsschutzgruppen UND-verknüpft werden, sind solche Zugriffsschutzgruppen von der Auswertung ausgenommen, denen lediglich Adressbereiche zugeordnet sind, auf welche sich die Adressparameter nicht beziehen. In einer weiteren Ausführungsform werden Zugriffsschutzgruppen von der UND-Verknüpfung basierend darauf ausgenommen, dass Daten des Datenregisters 7 anzeigen, dass diese spezifischen Gruppen abgeschaltet (oder nicht eingeschaltet) sind. Somit erlaubt es diese Ausführungsform, Gruppen zu spezifizieren, die, selbst wenn sie aktiv sind, nicht bei der UND-Verknüpfung berücksichtigt werden.
-
Das Ergebnis der UND-Verknüpfung zeigt an, ob ein Zugriff gewährt oder verweigert wird, d. h. ob die Zugriffsanforderung 100 auf den Speicheradressraum zugreifen kann oder nicht. Dies wird durch den Ausgang 101 der MPU angezeigt. Die notwendigen Daten bezüglich der Adressbereiche, der Zugriffsschutzgruppen und der zulässigen Interaktion sind hier in einem einzigen Datenregister 7 gespeichert, das mit dem Adressevaluierer 2 und dem Adressergebniskombinierer 3 verbunden ist. Das Datenregister 7 ist in einer anderen Ausführungsform in verschiedene Datenregister unterteilt. In einer Ausführungsform kann von außen auf das Datenregister 7 zugegriffen werden, um die jeweiligen Einstellungen zu definieren.
-
Das Datenregister 7, das die Informationen über die Adressbereiche speichert, ist in einer Ausführungsform mit Schreibschutz ausgestattet. Der Schreibschutz erlaubt in einer Ausführungsform nur, dass jede Gruppe ausschließlich auf Daten zugreifen kann, die sich auf Adressbereiche beziehen, welche der betreffenden Gruppe zugeordnet sind. Beispielsweise verfügt die Berechtigungsstufe „virtuelle Maschine“ über Schreibzugriff, um nur die der betreffenden Gruppe zugeordneten Adressbereiche zu definieren. In einer Ausführungsform bezieht sich ein Schreibschutz oder Registerschreibschutz auf einen festen oder konfigurierbaren Mechanismus, der definiert, welche Aufgabe in diese Register (hier z. B. Datenregister) schreiben darf. Der Zugriff auf das Datenregister basiert in einer Ausführungsform auf einer Berechtigungsstufe (beispielsweise hat ein Hypervisor Schreibzugriff zum Zuordnen von Konfiguration, und gruppe0, VM0 und Hypervisor haben Zugriff auf Gruppe1 etc.). In einer anderen Ausführungsform ist der Zugriff konfigurierbar unter Verwendung der Berechtigungsstufe oder einer Identifikation der Ausgabe oder eindeutiger TAG-IDs des On-Chip-Busses.
-
In einer Ausführungsform ist das Datenregister derart konfiguriert, dass das Definieren von Daten betreffend wenigstens einen Adressbereich nur für eine Berechtigungsstufe aktiviert ist, die mit einer Zugriffsschutzgruppe verknüpft ist, der wenigstens ein Adressbereich zugeordnet ist. In einer anderen Ausführungsform ist das Datenregister derart konfiguriert, dass das Definieren von Daten betreffend wenigstens einen Adressbereich nur für eine Berechtigungsstufe, die mit einer Zugriffsschutzgruppe verknüpft ist, der wenigstens ein Adressbereich zugeordnet ist, oder für eine höhere Berechtigungsstufe aktiviert ist. Beide Ausführungsformen schränken den Zugriff auf das Datenregister ein und begrenzen die Möglichkeit zum Definieren, Konfigurieren oder Modifizieren der Daten betreffend die Adressbereiche auf einige Berechtigungsstufen. Dies sind entweder ausschließlich die Berechtigungsstufe, die der Zugriffsschutzgruppe zugeordnet ist, der der Adressbereich zugeordnet ist, oder die erwähnte Berechtigungsstufe und eine höhere Berechtigungsstufe in der betreffenden Hierarchie (z. B. falls sich die Zugriffsschutzgruppe auf eine virtuelle Maschine bezieht, dann kann auch der Hypervisor die Einstellung des Adressbereichs ändern). Insbesondere sind Modifikationen von Gruppen mit niedrigerer Zugriffsebene verboten. Gemäß einer Ausführungsform ist das Datenregister 7 dafür ausgelegt, das Ein- oder Ausschalten von Zugriffsschutzgruppen in Bezug darauf zu konfigurieren, ob sie vom Adressergebniskombinierer beim Kombinieren der Ergebnisse in einer UND-Verknüpfung eingeschlossen werden. Dies ist auch beschränkt auf die zugeordnete Berechtigungsstufe oder in einer anderen Ausführungsform auf die zugeordnete Berechtigungsstufe und eine höhere Berechtigungsstufe. In einer Ausführungsform kann die Zuordnung der Adressbereiche zu Zugriffsschutzgruppen nur geändert werden, wenn die höchste Berechtigungsstufe gegeben ist (z. B. kann nur ein Hypervisor die Daten ändern). Die Definitionen der Adressbereiche sind in einer Ausführungsform begrenzt auf das Definieren der Interaktionen. In einer anderen Ausführungsform beziehen sich die Einschränkung der Änderung und der Schreibschutz auf die Definition der Adressbereiche (d. h. Ober- und Untergrenze) und/oder die Zuordnung der Adressbereiche zu Gruppen und/oder das Zulassen von Interaktionen.
-
Im Fall einer MPU-Schutzverletzung, d. h. im Fall eines negativen Zugriffsgewährungsergebnisses 101, ruft ein Trap die Berechtigungsstufe auf, die mit der Gruppe, in der die Verletzung erkannt wurde, verknüpft ist. Falls sich daher der Adressparameter auf einen Adressbereich bezieht, der einer gruppe1 (welche mit der virtuellen Maschine verknüpft ist) zugeordnet ist, der Interaktionsparameter jedoch von der Interaktion abweicht, die mit diesem Adressbereich verknüpft (oder dafür zulässig) ist, ist es zu einer Verletzung der gruppe1 gekommen und ruft das Trap als Anzeige einer Zugriffsverletzung die virtuelle Maschine, d. h. gruppe1, auf. Falls eine Verletzung der gruppe0 vorkommt, ruft das Trap den Hypervisor auf. In einer anderen Ausführungsform wird im Fall eines negativen Zugriffsgewährungsergebnisses 101 immer die höchste verfügbare Berechtigungsstufe des Systems aufgerufen, zu dem die Speicherschutzeinheit gehört.
-
Das Verfahren zum Schützen des Speicheradressraums wird nochmals im Zusammenhang mit 3 erläutert, die eine Ausführungsform der verschiedenen Schritte des Verfahrens zeigt. Die Sequenz beginnt mit Schritt 1001 durch Empfangen einer Zugriffsanforderung mit einem Adressparameter und einem Interaktionsparameter. In Schritt 1002 werden die Adressparameter mit den Adressbereichen des Adressbereichesatzes verglichen. So werden aktive Adressbereiche identifiziert. In Schritt 1003 wird der Interaktionsparameter mit der Art von Interaktion verglichen, die mit den aktiven Adressbereichen verknüpft ist. Die Ergebnisse der Schritte 1002 und 1003 zeigen somit an, auf welchen Adressbereich sich die Zugriffsanforderung 100 bezieht und ob die Interaktion, die mit der Zugriffsanforderung 100 beabsichtigt ist, für diese Adressbereiche zulässig ist. In Schritt 1004 werden die Ergebnisse der verschiedenen Adressbereiche hinsichtlich der Zugriffsschutzgruppen, denen die aktiven Adressbereiche zugeordnet sind, kombiniert. Die Ergebnisse der Adressbereiche, die derselben Zugriffsschutzgruppe angehören, werden ODER-verknüpft. Im folgenden Schritt 1005 werden die Ergebnisse aus Schritt 1004 mittels einer UND-Verknüpfung kombiniert, indem die Ergebnisse betreffend die aktiven, jedoch verschiedenen Zugriffsschutzgruppen kombiniert werden. Auf der UND-Verknüpfung basiert das Zugriffsgewährungsergebnis 101, das anzeigt, ob der Zugriff gewährt oder verweigert wird.
-
In 4 ist der Effekt einander überschneidender Adressbereiche veranschaulicht. Gezeigt werden Adressbereiche 20, die zu einer Zugriffsschutzgruppe L0 (Kasten oben links) bzw. L1 (Kasten unten links) gehören. Es sind vier Adressbereiche gegeben: R0, R1, R2 und R3. Die Bereiche R0 und R1 sind der Gruppe L0 zugeordnet. Die Bereiche R2 und R3 sind der Gruppe L1 zugeordnet. Ferner sind die Bereiche für den Schreibzugriff (Kennzeichnung „W“) oder den Lesezugriff (Kennzeichnung „R“) konfiguriert. Position und Länge der Bereiche hier vermitteln einen Eindruck von der Position und Ausdehnung von Adressen, die von den jeweiligen Adressbereichen abgedeckt werden. Die beiden Adressbereiche R0 und R1, die ein und derselben Gruppe L0 zugeordnet sind, sind ODER-verknüpft. Da R0 mit Lesezugriff größer ist als R1 mit Schreibzugriff, hat der Adressbereich „R0 oder R1“ die Größe von R0 und ist teilweise für Lese- und Schreibzugriff (Kennzeichnung „R/W“) und teilweise für Lesezugriff ausgelegt. Der Lese- und Schreibzugriff ergibt sich aus dem Überlappungsbereich von R0 und R1. Die beiden Adressbereiche R2 und R3, die der Gruppe L1 zugeordnet sind, sind ebenfalls ODER-verknüpft. R3 umfasst zwei separate Adressbereiche, die für Schreibzugriff ausgelegt sind. Der resultierende Adressbereich „R2 ODER R3“ hat zwei Bereiche, die für Lesezugriff ausgelegt sind, und zwei Bereiche, die für Lese- und Schreibzugriff ausgelegt sind. Falls die zu L0 (R0 ODER R1) und L1 (R2 ODER R3) gehörigen Bereiche UND-verknüpft sind, zeigt der resultierende Adressbereich die Erweiterung der kleineren ODER-Verknüpfung (die hier zu L1 gehört). Ferner hängt die Art des zulässigen Zugriffs von den Adressbereichen ab, in denen derselbe Zugriffstyp zugelassen ist. Das Ergebnis der UND-Verknüpfung ist rechts in dem mittleren Kasten abgebildet.
-
5 zeigt eine Ausführungsform der MPU 1 und der Verarbeitung einer Zugriffsanforderung 100 in abstrahierter Form. Die Zugriffsanforderung 100 als beabsichtigter Systemzugriff auf MPU-Steuerungsregister erreicht die konfigurierbare MPU 1, die den Systemzugriff auf MPU-Steuerregister zulässt oder verweigert. Die Zugriffsanforderung 100 startet einen Zugriffsschutz für eine globale oder eine statische Konfiguration (Kasten links), was in dieser Ausführungsform beinhaltet, eine statische MPU-Konfiguration anzustoßen, die hier zwei Komponenten impliziert (mittlerer Kasten unten):
- • Zuordnen der MPU-Adressbereiche zu Zugriffsschutzgruppen.
- • Optional: Zugriffsschutzkonfiguration für jede der Zugriffsschutzgruppen. Alternativ ist jede Zugriffsschutzgruppe fest einer bestimmten CPU-Berechtigung zugeordnet.
-
Somit sind die Adressbereiche und die Definitionen von Zugriffsschutzgruppen gemäß der aktuellen Anwendung definiert und zum Auswerten der Zugriffsanforderung 100 verwendbar.
-
Zunächst wird, basierend auf den Parametern der Zugriffsanforderung 100, ausgewertet, welche Zugriffsschutzgruppe zu berücksichtigen ist (Block links mit „Zugriffsschutzgruppex“ bis hinunter zu „Zugriffsschutzgruppe0“). Hier ist x+1 die Zahl der Zugriffsschutzgruppen für die aktuelle Anwendung. Diese Auswertung basiert auf den Adressbereichen, die von der Zugriffsanforderung und der Art von Interaktion betroffen sind.
-
Den Zugriffsschutzgruppen folgt ein spezifischer Gruppenzugriff auf Register der zugeordneten Bereiche und auf SATZ-Register. Hier ist Gruppe0 beispielsweise mit L0 oder Hypervisor verknüpft, je nach Art der Anwendung, Gruppe 1 ist mit L1 oder „virtuelle Maschine“ (VM) verknüpft und eine Gruppex deckt die Berechtigungsstufen L1 oder eine andere virtuelle Maschine (VMs) ab. Der in 5 gezeigte Mechanismus stellt in einer Ausführungsform sicher, dass nur ein Benutzer mit der für diesen Zweck spezifizierten Berechtigungsstufe (z. B. der höchsten Berechtigungsstufe, z. B. Hypervisor) Adressbereiche zu Zugriffsschutzgruppen (z. B. virtuelle Maschine oder Hypervisor) zuordnen kann. Ferner können die verschiedenen virtuellen Maschinen (VMx) beispielsweise nur ihnen zugeordnete Adressbereiche konfigurieren. Dies basiert darauf, dass zum Modifizieren der Zuordnungskonfiguration die Berechtigungsstufe des Hypervisor gegeben sein muss (als Beispiel für die Berechtigungsstufe, die höher als die Berechtigungsstufe ist, für die der Zugriff auf den jeweiligen Adressbereich gewährt wird).
-
Insgesamt werden Adressbereiche per Konfiguration (d. h. Definitionen) Zugriffsschutzgruppen zugeordnet, wobei jede dieser Gruppen einer anderen E/A-Berechtigungsstufe zugewiesen ist. In verschiedenen Ausführungsformen sind folgende Merkmale gegeben:
- • Ein Register beispielsweise, das zur Speicherschutzeinheit 1 gehört, erlaubt die Zuordnung so zu steuern, dass sie einen dedizierten Zugriffsschutzmechanismus hat.
- • Ein Register beispielsweise, das zur Speicherschutzeinheit 1 gehört, ermöglicht das Aktivieren bzw. Deaktivieren einer Zugriffsschutzgruppe für die UND-Verknüpfung.
- • Jede Zugriffsschutzgruppe deckt Steuerregister von Adressbereichen ab, die ihr zugeordnet sind.
- • Die Art des Zugriffsschutzmechanismus der Gruppen ist entweder konfigurierbar oder feststehend. Dies bezieht sich z. B. auf die Möglichkeit, den Zugriff auf Adressbereiche zu gewähren, die „niedrigeren“ Berechtigungsstufen zugewiesen sind. Beispielsweise kann in einer Ausführungsform L0 nur durch „Hypervisor“ modifiziert werden, wohingegen L1 durch „Hypervisor“ und/oder „virtuelle Maschine“ modifiziert werden kann.
- • Informationen zu den Adressbereichen, die derselben Zugriffsschutzgruppe zugeordnet sind, werden ODER-verknüpft (z. B. alle LO-Bereiche).
- • Informationen über die verschiedenen aktiven Zugriffsschutzgruppen werden UND-verknüpft (z. B. die L0 zugewiesene Gruppe und die L1 zugewiesene Gruppe).
- • In einer Ausführungsform besteht eine Option, eine Zugriffsgruppe zu aktivieren oder zu deaktivieren (bzw. aus- und einzuschalten) betreffend die UND-Verknüpfung dieser Gruppe. Dies bezieht sich z. B. auf eine MPU mit mehr als zwei Gruppen.
- • In einer Ausführungsform ist jede Zugriffsschutzgruppe einem Satz-Register zugeordnet, das die relevanten Einstellungen speichert. Das Satz-Register erlaubt in einer Ausführungsform, Adressbereiche zu aktivieren bzw. zu deaktivieren, die der jeweiligen Gruppe zugewiesen sind. In einer anderen Ausführungsform sind die Satz-Register selbst mit einem dedizierten Zugriffsschutzmechanismus geschützt, der in einer Ausführungsform der Mechanismus der zugehörigen Gruppe ist. Zum Beispiel: Ein Hypervisor kann ein L0-Satz-Register verwenden, um schnell zwischen Einstellungen oder verschiedenen virtuellen Maschinen (VMx) umzuschalten. Jede virtuelle Maschine (VMx) kann ihre Satz-Register verwenden, um schnell zwischen Einstellungen für die verschiedenen Aufgaben umzuschalten.
- • Bei Erkennung einer Zugriffsschutzverletzung - d. h. im Fall, dass eine ungültige Zugriffsanforderung erkannt wird - wird in einer Ausführungsform ein Trap an die Berechtigungsstufe signalisiert, die sich auf die E/A-Berechtigungsstufe der Gruppe bezieht, in der der Bereich verletzt wurde. Dies impliziert, dass im Fall einer Erkennung, dass der Interaktionsparameter von der Interaktion, die für einen aktiven, einer spezifischen Gruppe zugeordneten Adressbereich zulässig oder diesem zugewiesen ist, die mit dieser spezifischen Gruppe verknüpfte Berechtigungsstufe aufgerufen wird.
-
Einige Ausführungsformen betreffen Optionen, wie die Hardware beispielsweise den Hypervisor beim Umschalten zwischen verschiedenen virtuellen Maschinen unterstützt:
- • In einer Ausführungsform werden mehrere Gruppen einer virtuellen Maschine zugewiesen. Der Hypervisor aktiviert eine Gruppe oder Gruppen, die in Beziehung zu der gerade ausgeführten virtuellen Maschine stehen. Diese gerade ausgeführte virtuelle Maschine kann nur die Adressbereiche ändern, die der Gruppe zugeordnet sind, welche der virtuellen Maschine zugewiesen ist. Die UND-Verknüpfung zum Kombinieren der Ergebnisse, die von dem Berechtigungsstufenevaluierer bereitgestellt werden, berücksichtigt dementsprechend ausschließlich die aktivierten Gruppen.
- • Wo eine virtuelle Maschine auf einer einzelnen CPU ausgeführt wird, verwenden in einer Ausführungsform mehrere Gruppen virtueller Maschinen dieselben Hardwarebereiche (gemeinsame Ressourcen). Dies ist in einer Ausführungsform folgendermaßen realisiert: Beim Umschalten von einer virtuellen Maschine VMx auf eine andere virtuelle Maschine VMy speichert der Hypervisor den Inhalt der Bereiche für die VMx und lädt ihn mit den zuletzt gespeicherten VMy-Einstellungen. Eine andere Ausführungsform sieht vor, dass der Hypervisor die Bereiche löscht, die virtuellen Maschinen zugewiesen sind, wenn umgeschaltet wird, wobei jede virtuelle Maschine die Adressbereiche neu konfigurieren muss, die ihr zugewiesen sind, sobald sie neu gestartet wird.
-
6 zeigt eine weitere Ausführungsform der MPU 1, die eine Zugriffsanforderung als Eingang 100 empfängt und als Ausgang 101 ausgibt, ob der Zugriff gewährt wird oder nicht. Die Zugriffsanforderung 100, bei der es sich um einen CPU-Zugriff handelt, enthält Parameter, z. B. bezüglich der Adresse des Speicheradressraumes und bezüglich einer Interaktion.
-
Die konfigurierbare MPU 1 prüft den CPU-Zugriff auf den Speicheradressraum. Die Zugriffsanforderung 100 erreicht in der gezeigten Ausführungsform zunächst einen Adressevaluierer 2, der sich auf die Adressbereiche bezieht, welche von der MPU 1 abgedeckt werden. Hier sind dies Y Adressbereiche: Bereich 1, Bereich 2, .. Bereich Y. Jeder der Y Adressbereiche wird mit dem oder den Adressparametern der Zugriffsanforderung 100 daraufhin verglichen, ob die Adresse in den betreffenden Bereich fällt. Ferner wird ausgewertet, ob die Art von Interaktion (Lesen, Schreiben, Ausführen), die durch die Zugriffsanforderung 100 beabsichtigt ist, für den betreffenden Adressbereich zulässig ist. Da jeder Vergleich ein Gültig-Signal ergibt, gibt es Y „Gültig-Signale“.
-
Die Gültig-Signale werden von dem angezeigten Adressergebniskombinierer 3 ODER-verknüpft, falls die betreffenden Adressbereiche derselben Zugriffsschutzgruppe zugeordnet sind. Falls beispielsweise zwei Adressbereiche mit der Gruppe0 verknüpft sind, werden die Gültig-Signale der beiden Adressbereiche ODER-verknüpft.
-
Gezeigt werden drei Gruppen: Gruppe0, Guppe1 und Gruppex, die beispielsweise die Berechtigungsstufen L0 oder Hypervisor (Gruppe0), L1 oder VM1 (Gruppe1) bzw. L1 oder VMx (Gruppex) repräsentieren. Bezüglich jeder Gruppe werden in der gezeigten Ausführungsform folgende Schritte ausgeführt:
- 1. Maskieren von Gültig-Signalen mit ausgewählten SATZ-Registern
- 2. ODER-Verknüpfung von Gültig-Signalen für aktive Adressbereiche.
-
Daten über die Zuordnung der Adressbereiche zu den Gruppen und Informationen über die Deaktivierung oder Aktivierung von Gruppen betreffend die UND-Verknüpfung sind im Datenregister 7 gespeichert.
-
Die Gültig-Signale von den verschiedenen Gruppen - d. h. die Ergebnisse der ODER-Verknüpfungen - werden mit einer UND-Verknüpfung kombiniert. Die Kombination bezieht sich auf Gültig-Signale, die die von der Zugriffsanforderung 100 betroffenen Adressbereiche betreffen. Falls daher die Zugriffsanforderung 100 auf eine Adresse abzielt, die zwei verschiedenen Zugriffsschutzgruppen zugeordnet ist, werden die Gültig-Signale dieser beiden Gruppen UND-verknüpft. Das Ergebnis der UND-Verknüpfung liefert Informationen darüber, ob der Zugriff mittels der Zugriffsanforderung gültig ist oder nicht. Diese Information wird über den Ausgang 101 ausgegeben.
-
Da sich die Beschreibung auf beispielhafte Ausführungsformen bezieht, ist diese Beschreibung keinesfalls als einschränkend zu verstehen. Verschiedene Modifikationen und Kombinationen der beispielhaften Ausführungsformen sowie andere Ausführungsformen sind für Fachleute auf diesem Gebiet der Technik anhand der Beschreibung offenkundig. Daher ist beabsichtigt, dass die beigefügten Patentansprüche alle diese Modifikationen oder Ausführungsformen beinhalten.
-
Obwohl einige Aspekte im Zusammenhang mit einer Vorrichtung beschrieben worden sind, wird deutlich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, wobei ein Block oder ein Gerät einem Verfahrensschritt oder einem Merkmal eines Verfahrensschrittes entspricht. Analog stellen Aspekte, die im Zusammenhang mit einem Verfahrensschritt beschrieben werden, eine Beschreibung eines entsprechenden Blocks oder Gegenstands oder Merkmals einer entsprechenden Vorrichtung dar. Einige oder alle der Verfahrensschritte können von (oder unter Verwendung) einer HardwareVorrichtung wie zum Beispiel einem Mikroprozessor, einem programmierbaren Computer oder einer elektronischen Schaltung ausgeführt werden. In einigen Ausführungsformen können einzelne oder mehrere der wichtigsten Verfahrensschritte durch solch eine Vorrichtung ausgeführt werden.
-
Abhängig von gewissen Implementierungsanforderungen können Ausführungsformen der Erfindung als Hardware oder als Software bzw. wenigstens teilweise als Hardware und teilweise als Software implementiert werden. Die Implementierung kann unter Verwendung eines digitalen Speichermediums durchgeführt werden, zum Beispiel einer Diskette, einer DVD, einer Blu-Ray-Disk, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem dergestalt zusammenarbeiten (oder in der Lage sind, damit zusammenzuarbeiten), dass das entsprechende Verfahren durchgeführt wird. Deswegen kann das digitale Speichermedium computerlesbar sein. Einige erfindungsgemäße Ausführungsformen umfassen einen Datenträger, der elektronisch lesbare Steuersignale aufweist, die in der Lage sind, mit einem programmierbaren Computersystem dergestalt zusammenzuarbeiten, dass eines der hier beschriebenen Verfahren durchgeführt wird. Im Allgemeinen können Ausführungsformen der vorliegenden Erfindung als ein Computerprogrammprodukt mit einem Programmcode implementiert werden, wobei der Programmcode dazu dient, um eines der Verfahren durchzuführen, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann zum Beispiel auf einem maschinenlesbaren Träger gespeichert sein. Andere Ausführungsformen umfassen das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist. Anders ausgedrückt, besteht eine Ausführungsform des erfindungsgemäßen Verfahrens deswegen aus einem Computerprogramm mit einem Programmcode zum Durchführen eines der hier beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer läuft. Eine weitere Ausführungsform der erfindungsgemäßen Verfahren besteht deswegen aus einem Datenträger (oder einem digitalen Speichermedium oder einem computerlesbaren Medium), der das darauf aufgezeichnete Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren umfasst. Der Datenträger, das digitale Speichermedium oder das aufgezeichnete Medium sind typischerweise physisch und/oder permanent. Eine weitere Ausführungsform des erfindungsgemäßen Verfahrens besteht deswegen aus einem Datenstrom oder einer Signalsequenz, die das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren darstellt. Der Datenstrom oder die Signalsequenz kann zum Beispiel konfiguriert sein, um über eine Datenkommunikationsverbindung, zum Beispiel über das Internet, übertragen zu werden. Eine weitere Ausführungsform umfasst Verarbeitungsmittel, zum Beispiel einen Computer oder eine programmierbare Logikschaltung, welche/r konfiguriert oder eingerichtet ist, eines der hier beschriebenen Verfahren durchzuführen. Eine weitere Ausführungsform umfasst einen Computer, auf dem das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren installiert ist. Eine weitere erfindungsgemäße Ausführungsform umfasst eine Vorrichtung oder ein System, das dafür ausgelegt ist, ein Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren (zum Beispiel elektronisch oder optisch) auf einen Empfänger zu übertragen. Der Empfänger kann beispielsweise aus einem Computer, einer mobilen Vorrichtung, einer Speichervorrichtung oder dergleichen bestehen. Die Vorrichtung oder das System kann zum Beispiel einen Dateiserver zum Transferieren des Computerprogramms auf den Empfänger umfassen. In einigen Ausführungsformen kann eine programmierbare Logikschaltung (zum Beispiel eine frei programmierbare Gatteranordnung) verwendet werden, um einige oder alle der Funktionen der hier beschriebenen Verfahren durchzuführen. In einigen Ausführungsformen kann eine frei programmierbare Gatteranordnung mit einem Mikroprozessor zusammenarbeiten, um eines der hier beschriebenen Verfahren durchzuführen. Im Allgemeinen werden die Verfahren vorzugsweise von irgendeiner HardwareVorrichtung durchgeführt. Die hier beschriebene Vorrichtung kann mittels einer Hardwarevorrichtung oder mittels eines Computers oder mittels einer Kombination aus einer Hardwarevorrichtung und einem Computer implementiert werden. Die hier beschriebenen Verfahren können mittels einer Hardwarevorrichtung oder mittels eines Computers oder mittels einer Kombination aus einer Hardwarevorrichtung und einem Computer ausgeführt werden.