-
Die
vorliegende Erfindung betrifft allgemein digitale Speicher.
-
Moderne
Computersysteme können
Peripheriegerät-Steuerregister auf
einen einzelnen einheitlichen Speicherraum abbilden. Der Speicherraum
kann also sowohl Peripheriegerät-Steuerregister als
auch herkömmliche
Speicher wie etwa DRAMs und Festplattenlaufwerke umfassen. Die Peripheriegeräte können gesteuert
werden, indem die Peripheriegerät-Steuerregister
unter Verwendung von Lade- und Speicherbefehlen aus einem Prozessor
programmiert werden.
-
1 ist
ein Diagramm, das ein Beispiel einer Speichermap 100 zeigt.
Die Bereiche 102, 104, 106 und 108 der
Speichermap entsprechen dem physikalischen Speicher. Der Speicher
kann zum Beispiel einen DRAM, Peripheriegerät-Steuerregister, einen Flash-Speicher,
einen Festplattenspeicher usw. umfassen.
-
In 1 sind
die Bereiche 102 und 104 Peripheriegerät-Steuerregister. Der
Bereich 102 entspricht einem UART (eine universellen asynchronen
Empfänger
und Sender), und der Bereich 104 entspricht einem PWM (einem
Pulsweitenmodulator). Der Bereich 106 entspricht einem
Flash-Speicher, und der Bereich 108 entspricht einem RAM
wie etwa einem DRAM.
-
Die
Speicherbereiche können
Unterbereiche enthalten. Zum Beispiel enthält der Bereich 102 UART-Steuerregister 110, 112, 114 und 116.
Ein UART kann konfiguriert werden, indem Werte in die UART-Steuerregister
geschrieben werden. Die durch den UART zu sendenden Daten werden
in das Send-Holding-Register 112 geschrieben, und die durch
den UART empfangenen Daten werden aus dem Receive-Holding-Register 110 gelesen.
Die Baudrate kann konfiguriert werden, indem ein Wert in das Baudrate-Register geschrieben
wird. Andere Steuerinformationen wie etwa die Parität können in
ein Control-Register 116 geschrieben werden.
-
In
verschiedenen Systemen ist es vorteilhaft, einen irrtümlichen
Zugriff auf kritische Peripheriegeräte zu verhindern. Ein Beispiel
für ein
derartiges Peripheriegerät
ist ein PWM, der zum Steuern von Elektromotoren verwendet wird.
Der PWM gibt eine Impulsfolge zum Steuern des Motors aus. Wenn die
Steuerregister des PWM-Moduls versehentlich mit falschen Werten
aktualisiert werden, kann der Motor außer Kontrolle gestartet werden
und möglicherweise
eine Anwendung oder die Umgebung beschädigen. Ein versehentlicher
Zugriff kann zum Beispiel durch Fehler im Softwarecode, durch elektrisches
Rauschen usw. verursacht werden.
-
Die
vorliegende Patentanmeldung gibt unter anderem Verfahren, Systeme,
Programmprodukte und Vorrichtungen an, um einen Speicherzugriff
in einem System mit einem Speicherschutz vorzusehen. Es wird eine
Anforderung von einem Prozessor für einen Speicherzugriff an
einer ersten Speicherposition empfangen. Es wird eine zweite Speicherposition
bestimmt. Die zweite Speicherposition ist mit der ersten Speicherposition assoziiert
und wird vor einem Zugriff durch den Prozessor geschützt. Der
angeforderte Speicherzugriff wird an der zweiten Speicherposition
durchgeführt.
-
Besondere
Implementierungen des in dieser Anmeldung beschriebenen Gegenstands
können
einen oder mehrere der folgenden Vorteile erzielen. So kann etwa
ein Prozessor zuverlässig
auf fein gekörnte Speicherbereiche
in einem System mit einem grob gekörnten Speicherschutz zugreifen.
Eine entsperrende Hardware kann innerhalb einer einzelnen konfigurierbaren
Einrichtung gehalten werden, sodass verschiedene Anwendungen je
nach ihren Anforderungen eine Entsperrung zu verschiedenen Registern
hinzufügen
können. Derselbe
Entsperrungsalgorithmus kann für
mehrere geschützte
Speicherbereiche verwendet werden.
-
1 ist
ein Diagramm, das eine beispielhafte Speichermap zeigt.
-
2 ist
ein Flussdiagramm, das ein beispielhaftes Verfahren zum Zugreifen
auf einen Speicher in einem System mit einem Speicherschutz zeigt.
-
3 ist
ein Diagramm, das eine beispielhafte Speichermap mit einer Einheit
für einen
sichereren Zugriff zeigt.
-
4 ist
ein Diagramm, das ein beispielhaftes System mit einem Prozessor
und einem geschützten Speicher
zeigt.
-
5A ist
ein Blockdiagramm, das eine beispielhafte Vorrichtung zeigt, die
für einen
Speicherzugriff in einem System mit einem Speicherschutz konfiguriert
ist.
-
5B enthält eine
Tabelle mit beispielhaften Steuerregistern.
-
In
den Figuren werden durchgehend gleiche Bezugszeichen verwendet,
um identische Komponenten anzugeben.
-
Im
Folgenden wird auf 2 Bezug genommen. Das Verfahren
wird beispielhaft mit Bezug auf ein System (z. B. einen Prozessor,
eine Einheit für
einen sicheren Zugriff (SAU = Secure Access Unit) oder ähnliches)
zum Durchführen
des Verfahrens beschrieben.
-
Das
System empfängt
Konfigurationsinformationen (Schritt 202). In einigen Implementierungen
spezifizieren die Konfigurationsinformationen eine Abbildung zwischen
einer ersten Vielzahl von Speicherpositionen und einer zweiten Vielzahl
von Speicherpositionen. In anderen Implementierungen ist die Abbildung
in Hardware oder in einem ROM fixiert. In einigen Implementierungen
spezifizieren die Konfigurationsinformationen andere Werte. Zum
Beispiel können
die Konfigurationsinformationen gültige Entsperrungsschlüssel oder
Verfahren zum Bestimmen von gültigen
Entsperrungsschlüsseln
spezifizieren.
-
In
einigen Implementierungen empfängt
das System einen Entsperrungsschlüssel (Schritt 204).
Der Entsperrungsschlüssel
kann zum Beispiel eine einzelne Zahl, eine Reihe von Zahlen, eine
Reihe von Zeichen usw. sein.
-
Wenn
das System einen Entsperrungsschlüssel empfängt, bestimmt das System, ob
der Entsperrungsschlüssel
gültig
ist (Schritt 206). In einigen Implementierungen vergleicht
das System den empfangenen Entsperrungsschlüssel mit einem in den Konfigurationsinformationen
empfangenen Entsperrungsschlüssel.
In anderen Implementierungen führt
das System ein anderes Verfahren durch, um zu bestimmen, ob der
Entsperrungsschlüssel
gültig
ist. Zum Beispiel kann das System einen gültigen Entsperrungsschlüssel auf
der Basis der Uhrzeit oder dem aktuellen Taktzyklus bestimmen und
den bestimmten Entsperrungsschlüssel
mit dem empfangenen Entsperrungsschlüssel vergleichen.
-
In
verschiedenen Implementierungen basiert der Entsperrungsschlüssel auf
einer angeforderten Speicherposition. Zum Beispiel kann der Entsperrungsschlüssel nur
ein bestimmtes Register oder einen bestimmten Speicherbereich entsperren.
In einigen Implementierungen ist der Entsperrungsschlüssel nur
für eine
spezifizierte Anzahl von Taktzyklen gültig. In anderen Implementierungen
wird der Entsperrungsschlüssel
gleichzeitig mit dem angeforderten Speicherzugriff empfangen und
ist nur für
diesen angeforderten Speicherzugriff gültig.
-
Wenn
der Entsperrungsschlüssel
nicht gültig
ist, ignoriert das System Anforderungen für einen Speicherzugriff (Schritt 208).
In einigen Implementierungen sendet das System eine Meldung, die
angibt, dass es einen ungültigen
Entsperrungsschlüssel
empfangen hat. Zum Beispiel kann das System eine Ausnahme erzeugen.
-
Das
System empfängt
eine Anforderung von einem Prozessor für einen Speicherzugriff an
einer ersten Speicherposition (Schritt 210). Ein Prozessor
ist eine Vorrichtung, ein System oder ähnliches zum Ausführen von
Befehlen, wobei es sich etwa um eine CPU handeln kann. Prozessoren
können
in eingebetteten Architekturen vorgesehen sein. Ein Beispiel für einen
eingebetteten Prozessor ist der AVR32-Prozessor von Atmel Inc. in
San Jose.
-
Der
Speicherzugriff kann eine Operation wie etwa Lesen, Schreiben, Ausführen oder ähnliches
sein. Die Anforderung spezifiziert den Speicherzugriff. Wenn der
Speicherzugriff eine Schreiboperation ist, kann die Anforderung
die zu schreibenden Daten spezifizieren. Wenn der Speicherzugriff
eine Leseoperation ist, kann die Anforderung die zu lesenden Daten
spezifizieren. Wenn der Speicherzugriff eine Ausführungsoperation
ist, kann die Anforderung die zu lesenden und auszuführenden
Daten spezifizieren.
-
Eine
Speicherposition ist mit einem Bereich einer Speichermap oder eines
Speicherraums assoziiert. Die Speicherposition kann zum Beispiel
eine Speicheradresse, ein Zeiger auf eine Speicheradresse oder ähnliches
sein. Ein Prozessor kann unter Verwendung von Speicherpositionen
auf Speicherbereiche zugreifen (z. B. von denselben lesen oder in
dieselben schreiben).
-
Das
System bestimmt eine zweite Speicherposition, die mit der ersten
Speicherposition assoziiert ist (Schritt 212). Die zweite
Speicherposition wird vor einem Zugriff durch den Prozessor geschützt. Die
zweite Speicherposition kann zum Beispiel einem kritischen Peripheriegerät entsprechen.
-
Gewöhnlich verwendet
das System die Konfigurationsinformationen, um die zweite Speicherposition zu
bestimmen. Zum Beispiel kann das System die zweite Speicherposition
in einer Tabelle mit assoziierten Speicherpositionen nachschlagen.
In einigen Implementierungen umfasst das System Kanalregister. Die
erste Speicherposition ist die Position eines Kanalregisters, wobei
das System die zweite Speicherposition durch das Lesen der Inhalte
des Kanalregisters bestimmt.
-
Alternativ
hierzu ist eine Abbildung zwischen den Speicherpositionen fixiert,
beispielsweise in Hardware oder in einem ROM. Das System bestimmt
die zweite Speicherposition, indem sie den fixierten Befehlen oder
der fixierten Abbildung folgt.
-
In
einigen Implementierungen wird die zweite Speicherposition durch
eine Speicherschutzeinrichtung geschützt. Beispiele für Speicherschutzeinrichtungen
sind Speicherverwaltungseinheiten (MMUs) und Speicherschutzeinheiten
(MPUs). In einigen Implementierungen schützt die Speicherschutzeinrichtung
einen Speicherbereich, der wesentlich größer als ein Bereich ist, auf
den an der zweiten Speicherposition zugegriffen werden soll. In
diesen Fällen
wird die Speicherschutzeinrichtung als „grob gekörnt” bezeichnet.
-
In
verschiedenen Implementierungen verhindert die Speicherschutzeinrichtung,
dass der Prozessor unter bestimmten Bedingungen auf die zweite Speicherposition
zugreift. In einigen Implementierungen beruht die Verhinderung auf
einem Ausführungszustand
des Prozessors. Zum Beispiel kann die Speicherschutzeinrichtung
verhindern, dass der Prozessor auf die zweite Speicherposition zugreift,
wenn der Prozessor in einem nicht-privilegierten Modus arbeitet,
während
sie dem Prozessor den Zugriff auf die zweite Speicherposition gewähren kann,
wenn der Prozessor in einem privilegierten Modus arbeitet (z. B.
in einem Verwaltungsmodus).
-
In
einigen Implementierungen beruht die Verhinderung weiterhin auf
dem angeforderten Speicherzugriff. Zum Beispiel kann die Speicherschutzeinrichtung
einen Zugriff verhindern, wenn der angeforderte Speicherzugriff
eine Schreiboperation ist, während
sie einen Zugriff gestattet, wenn der angeforderte Speicherzugriff
eine Leseoperation ist.
-
Das
System führt
den angeforderten Speicherzugriff an der zweiten Speicherposition
(Schritt 214) durch. Wenn der angeforderte Speicherzugriff
eine Schreiboperation ist, schreibt das System Daten an der zweiten
Speicherposition.
-
Wenn
der angeforderte Speicherzugriff eine Leseoperation ist (Schritt 216),
sendet das System die gelesenen Daten zum Beispiel zu dem Prozessor
(Schritt 218).
-
3 ist
ein Diagramm einer beispielhaften Speichermap 300 mit einer
Einheit für
einen sicheren Zugriff (SAU = Secure Access Unit). Eine SAU ist
eine Vorrichtung oder Einheit, die betrieben werden kann, um Zugriff
auf einen Speicher in einem System mit Speicherschutz zu gewähren, zum
Beispiel unter Verwendung des Verfahrens von 2. In diesem
Beispiel sieht die SAU Zugriffskanäle auf spezifizierte Speicherpositionen vor.
-
Die
SAU weist einen Speicher auf, der mit zwei Bereichen 302 und 304 in
der Speichermap gezeigt ist. Die beispielhafte Speichermap weist
auch Bereiche für
einen UART 306, einen PWM 308, einen Flash-Speicher 310 und
einen RAM 312 auf.
-
Die
SAU enthält
Steuerregister 304 und Kanalregister 302. Die
Steuerregister 304 der SAU werden wie die anderen Speicherbereiche
(in diesem Beispiel der UART-Speicher 306 und der PWM-Speicher 308) zum
Beispiel durch eine Speicherschutzeinheit (MPU) oder ähnliches
geschützt.
Die geschützten
Adressen 304, 306 und 308 sind in 3 grau
dargestellt. Die UART-Register 314, 316, 318 und 320 befinden
sich in dem UART-Speicherbereich 306 und sind also geschützt, sodass
sie grau dargestellt sind.
-
Die
MPU (oder eine andere Speicherschutz-Hardware wie etwa eine MMU
oder ähnliches)
unterteilt den Speicherraum in Abschnitte und weist jedem Abschnitt
einen Satz von Zugriffsbeschränkungen
zu. Die Zugriffsbeschränkungen
können
zum Beispiel Lesen/Schreiben für
einen Prozessor im Verwaltungsmodus und Nur-Lesen für einen
Prozessor im Anwendungsmodus sein. Die Abschnitte können jeweils
verschiedene Größen aufweisen.
In einigen Implementierungen ist jeder Abschnitt groß relativ
zu einer Größe eines
Registers und beträgt
etwa 1 KB des Adressraums oder mehr. Weiterhin kann der Zugriff
auf jeden Abschnitt durch den Ausführungszustand eines Prozessors,
z. B. Verwaltungs- oder Anwendungsmodus, gesteuert werden.
-
Die
SAU-Steuerregister 304 werden für die Konfiguration der SAU
verwendet. Durch das Schreiben von Werten in diesen Registern wird
bestimmt, wie Adressen in den SAU-Kanalregistern 302 auf einen
anderen Speicher abgebildet werden. Die SAU-Steuerregister 304 können auch
für das
Steuern von Zugriffsbeschränkungen,
Entsperrungsschlüsseln
usw. verwendet werden. Sobald diese Register 304 konfiguriert
wurden, schützt
eine MPU sie vor weiteren Modifikationen.
-
Die
SAU-Kanalregister 302 spezifizieren Kanäle (d. h. virtuelle Adressen
oder Speicherpositionen), auf die ein Prozessor zugreifen kann.
Die Kanalregister sind nicht geschützt (und deshalb in 3 nicht
grau dargestellt). Ein fixiertes oder konfigurierbares Abbildungsschema
assoziiert diese (durch die Kanalregister spezifizierten) Kanäle mit echten
Speicherpositionen etwa in Peripheriegeräten oder anderen Speichern.
-
Eine
Kanalmap kann eine einzelne Adresse oder einen Bereich von Adressen
aus einem Speicherraum in der SAU (z. B. die Kanalregister) auf
Adressen in anderen Speichern wie etwa in Peripheriegeräten abbilden.
Wenn ein Prozessor auf ein SAU-Kanalregister
wie z. B. 322 zugreift, funktioniert die SAU wie ein Gateway
oder Proxy und führt
einen Zugriff auf den abgebildeten Speicher für den anfordernden Prozessor durch.
-
Der
abgebildete Speicher wird vor einem Zugriff durch den Prozessor
z. B. durch eine MPU geschützt.
-
Mechanismen
zum Entsperren eines Kanals können
in den SAU-Steuerregistern 304 platziert
werden. Zum Beispiel muss in einigen Implementierungen ein Entsperrungsschlüssel wie
etwa 0x55 in ein Entsperrungssregister in den SAU-Steuerregistern 304 geschrieben
werden. Das Schreiben eines Entsperrungsschlüssels kann ein Fenster mit
einer spezifizierten Anzahl von Taktzyklen öffnen, während welchen die SAU einen
Zugriff auf ein SAU-Kanalregister wie etwa 322 gestattet.
Die SAU kann Zugriffe blockieren, die keinen gültigen Entsperrungsschlüssel angeben.
-
Die
SAU kann auch den Prozessor (oder eine Anwendung, die einen Speicherzugriff
durchführen möchte und
z. B. den Prozessor verwendet) darüber informieren, dass ein unzulässiger Zugriff
versucht wird, indem sie etwa eine Unterbrechung oder eine Ausnahme
ausgibt. Auf diese Weise kann die Anwendung ein kontrolliertes Herunterfahren
(Graceful Shutdown) durchführen
oder versuchen, das den unzulässigen
Zugriff verursachende Problem zu lösen.
-
Die
SAU kann mehrere Kanäle
umfassen, die z. B. durch Kanalregister 322, 324, 326 und 328 spezifiziert
werden und geschützt
sind, um nur gültige
Zugriffe zu gestatten. In einigen Implementierungen weist jeder
Kanal einen einzigartigen Entsperrungsmechanismus auf. In anderen
Implementierungen wird derselbe Entsperrungsmechanismus für jeden
Kanal verwendet.
-
In 3 ist
ein UART-Steuerregister 320 gezeigt, das eine Adresse X
aufweist. Der Kanal 0 in der SAU (z. B. das Kanalregister 328)
weist eine Adresse Z auf. Indem entsprechende Werte in assoziierte
Register in den SAU-Steuerregistern 304 geschrieben
werden, kann der Kanal 10 mit der Adresse X assoziiert
werden. Weil das UART-Steuerregister 320 (bei der Adresse
X) geschützt
ist, kann ein Prozessor nicht auf dasselbe zugreifen.
-
Das
SAU-Kanalregister 328 (z. B. der Kanal 0 an der Adresse
Z) ist nicht geschützt.
Wenn der Prozessor von der Adresse Z liest, beendet die SAU den
Lesevorgang und leitet selbst einen Lesevorgang von der assoziierten
Adresse, z. B. der Adresse X, ein. Dieser Zugriff ist nicht geschützt. Der
SAU-Zugriff ist nicht geschützt,
weil die SAU zum Beispiel einen anderen Kommunikationspfad als der
Prozessor verwenden kann, der nicht über eine MPU verläuft. Alternativ
hierzu kann die MPU konfiguriert werden, um Zugriffe von einer SAU
zu gestatten und Zugriffe von anderen Prozessoren zu unterbinden.
-
Wenn
die SAU das Lesen von der Adresse X durchgeführt hat, werden die gelesenen
Daten zu dem Prozessor gegeben. In einigen Implementierungen bemerkt
der Prozessor nicht, dass das Lesen von der Adresse Z tatsächlich von
der Adresse X erfolgt ist. Der Prozessor erfährt nur eine etwas längere Leselatenz, weil
die SAU einen Zugriff durchführen
muss, bevor die gelesenen Daten ausgegeben werden. Ähnliche
Operationen werden durchgeführt,
wenn die CPU an der Adresse Z schreibt, wobei die SAU in diesem
Fall ein Schreiben an der Adresse X ausführt.
-
4 ist
ein Diagramm eines beispielhaften Systems mit einem Prozessor (CPU 402)
und einem geschützten
Speicher. Das beispielhafte System umfasst eine Speicherschutz-Hardware
(MPU 404). Die MPU 404 schützt den Speicher für einen
UART 406 und einen PWM 408. Eine SAU 410 und 412 gewährt der
CPU 402 Zugriff auf einen Teil des durch die MPU 404 geschützten Speichers.
-
Ein
Bus-Master (z. B. 414 und 416) ist ein Modul,
das eine Übertragung
auf dem Systembus 418 einleiten kann, während ein Slawe (z. B. 420, 422, 424 und 426)
nur auf eine Übertragung
von einem Master reagieren kann. Eine Übertragung kann eine Lese-
oder eine Schreiboperation sein. Das beispielhafte System weist
ein hierarchisches Bussystem mit einem Systembus 418 mit
großer
Bandbreite und einem Peripheriebus 428 mit geringer Bandbreite
auf. Peripheriegeräte
mit geringer Bandbreite (in diesem Beispiel der UART 406 und
der PWM 408) sind mit dem Peripheriebus 428 verbunden,
während
Module mit großer
Bandbreite (z. B. der Flash-Speicher 432 und der RAM 434)
mit dem Systembus 418 verbunden sind. Der Peripheriebus 428 weist
eine kleinere Fläche
auf und verbraucht weniger Energie als der Systembus 418.
Eine Busbrücke 430 verbindet
den Peripheriebus mit dem Systembus. Die Busbrücke übersetzt Zeitangaben und Signale
von einer Busdomain zur anderen.
-
Die
MPU 404 ist zwischen der CPU 402 und dem Bus-Master 414 eingefügt. Die
MPU überwacht
die Zugriffe, die durch die CPU 402 versucht werden. Wenn
die Zugriffe über
keine ausreichenden Privilegien verfügen, wird der Zugriff abgebrochen
und benachrichtigt die MPU 404 die CPU 402. Wenn
der Zugriff über
ausreichende Privilegien verfügt,
wird der Zugriff auf den Systembus 418 platziert und wie
durch die CPU 402 vorgegeben durchgeführt.
-
Die
CPU 402 kann auf bestimmte Bereiche zugreifen, die durch
die MPU 404 über
die SAU geschützt werden.
Wenn die SAU zum Beispiel konfiguriert ist, um einen Zugriff auf
ein Steuerregister in der UART 406 zu gewähren, kann
die CPU 402 über
die SAU auf dieses Register zugreifen. Die SAU kommuniziert nicht über die
MPU 404 mit dem UART 406 und ist deshalb nicht
derselben Zugriffsbeschränkung
unterworfen wie die CPU 402.
-
Das
Blockdiagramm von 5A zeigt eine beispielhafte
Vorrichtung 500, die konfiguriert ist, um auf einen Speicher
in einem System mit einem Speicherschutz wie etwa eine SAU zuzugreifen.
Die SAU 500 weist einen Steuerabschnitt 502 und
einen Kanalabschnitt 504 auf.
-
Die
SAU 500 kann unter Verwendung einer Beschreibungssprache
(HDL) wie etwa Verilog oder VHDL implementiert werden. In einigen
Implementierungen wird die SAU durch eine digitale Schaltung wie
etwa ein Feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische
integrierte Schaltung (ASIC) oder ähnliches implementiert. In
anderen Implementierungen wird die SAU unter Verwendung eines Universalprozessors
implementiert.
-
In
einigen Implementierungen weist die SAU eine Steuerschnittstelle 506 für den Zugriff
auf die SAU-Steuerregister 508 auf.
Gewöhnlich
ist die Steuerschnittstelle 506 eine Peripheriebus-Schnittstelle
mit einer geringen Bandbreite. In einigen Implementierungen wird
die Kanalschnittstelle 150 verwendet, um Übertragungen
von der CPU in die SAU-Kanalregister 512 zu gestatten.
Gewöhnlich
stellt die Kanalschnittstelle 510 eine Verbindung zu einem
Systembus mit großer
Bandbreite über
einen Bus-Slawe her. In verschiedenen Implementierungen wird die
Master-Schnittstelle 514 verwendet, um einen Zugriff auf
ein Peripheriegerät
oder einen anderen Speicher durchzuführen, das bzw. der durch die
SAU abgebildet werden. Gewöhnlich
stellt die Master-Schnittstelle 514 eine
Verbindung zu einem Systembus mit einer hohen Bandbreite über einen Bus-Master
her. In diesen Implementierungen kann die Schnittstelle den Bus
blockieren, wenn eine Leseoperation durchgeführt werden soll. Andere Konfigurationen
können
dieselben Aufgaben bewerkstelligen.
-
Allgemein
können
die SAU-Steuerregister, die Abbildungen (z. B. zu assoziierten Speicherpositionen) spezifizieren,
auf der Basis der einzelnen Kanäle
konfiguriert werden. Diese Steuerregister können durch eine MPU geschützt werden.
Alternativ kann Siliciumfläche
gespart werden, indem eine fixierte Abbildung von jedem Kanal zu
der assoziierten Speicherposition vorgesehen wird. In anderen Implementierungen
können
andere Anzahlen von Kanälen
in Abhängigkeit
von der Anzahl und der Komplexität
der Vorrichtung sowie von der gewünschten Anwendung implementiert
werden.
-
In
einigen Implementierungen gestattet eine Zustandsmaschine (FSM) 516 in
dem Kanalabschnitt 504 der SAU Anforderungen auf einer
Schnittstelle 510 und prüft, ob die Anforderungen gültig sind
und auf einen entsperrten Kanal verweisen. Wenn dies der Fall ist,
leitet die FSM 516 eine Übertragung auf der Master-Schnittstelle 514 ein.
Die FSM kann Zustände
wie etwa Warten, Prüfen
einer Anforderung, Einleiten einer Übertragung, Senden von Lesedaten
usw. aufweisen. In einigen Implementierungen ist die FSM 516 auch
konfiguriert, um Fehlerbedingungen auf dem Bus und Kanalsperrfehler
handzuhaben.
-
5B zeigt
eine Tabelle, die beispielhafte Steuerregister enthält. In einigen
Implementierungen umfassen die SAU-Steuerregister wenigstens die
beispielhaften Steuerregister von 5B. In
anderen Implementierungen werden andere Steuerregister oder andere
Konfigurationen der beispielhaften Steuerregister verwendet.
-
In
einigen Implementierungen umfassen die SAU-Steuerregister Neuabbildungszielregister
(RTR = Remap Target Register) wie etwa 550. Jedes RTR entspricht
einem Kanal oder einem Kanalregister. In einigen Implementierungen
bildet die SAU bis zu 63 Adressen neu mit RTRs ab. In einigen Implementierungen
füllen die
RTRs bis zu 1024 Byte-Adressen in Entsprechung zu eine 1 KB großen Schutzbereich
in einer Speicherschutzvorrichtung.
-
In
verschiedenen Implementierungen verwenden eingebettete Architekturen
einen 32-Bit-Speicherraum. Peripheriegeräte können in einen kleinen Abschnitt
dieses Speicherraums abgebildet werden. In einigen Implementierungen
werden Peripheriegeräte
in den Adressbereich 0xFFFE0000 bis 0xFFFFFFFF abgebildet. In anderen
Implementierungen sind die Peripheriegerätregister wortadressierbar,
sodass die Bits 1:0 in der Adresse gleich 0 sind. Die RTRs können physikalisch
unter Verwendung von 15 Flipflops implementiert werden, wobei sie
wie folgt auf eine 32-Bit-Neuabbildungsadresse erweitert werden:
-
Wen
ein 32-Bit-Wert in ein RTR geschrieben wird, kann der geschriebene
Wert wie folgt auf die 15 Flipflops abgebildet werden:
In einigen
Implementierungen können
also die oberen 16 Bits eines RTR auf 1 Bit komprimiert werden,
weil nur zwei unterschiedliche Werte dieser 16 oberen Bits verwendet
werden.
-
In
verschiedenen Implementierungen funktionieren die RTRs auch als
Kanalregister. In alternativen Implementierungen sind die Kanalregister
separat vorgesehen. Zum Beispiel können die Kanalregister mit
den RTRs assoziiert sein.
-
In
einigen Implementierungen umfassen die SAU-Steuerregister ein Entsperrungsregister
(UR = Unlock Register) wie z. B. 552. Das Entsperrungsregister
muss mit einem Schlüssel
und einen Kanal geschrieben werden, bevor ein Zugriff auf einen
Kanal durchgeführt
werden kann. Der Schlüssel
ist in einem Bitfeld in einem anderen Register spezifiziert, z.
B. in dem Schlüsselregister
(Key Register) 554.
-
In
verschiedenen Implementierungen wird der Kanal für eine Anzahl von Zyklen entsperrt,
die in einem anderen Bitfeld in einem anderen Steuerregister wie
z. B. dem Schlüsselregister
(Key Register) 554 spezifiziert sind. In einigen Implementierungen
kann jeweils nur ein Kanal zu einem Zeitpunkt entsperrt werden.
Wenn sich in diesen Implementierungen ein Kanal in einem entsperrten
Zustand befindet und ein anderer Kanal durch das Schreiben in das
Entsperrungsregister (UR) entsperrt wird, kann der erste Kanal automatisch
erneut gesperrt werden. In einigen Implementierungen ist das Entsperrungsregister
(UR) in demselben 1KB-Adressbereich platziert wie die Neuabbildungszielregister
(RTR).
-
In
einigen Implementierungen weist das Entsperrungsregister (UR) die
folgenden Bitfelder auf:
UR[7:0] – Entsperrungsschlüssel
UR[5:0] – Kanalzahl
für das
Entsperren
-
In
einigen Implementierungen enthalten die SAU-Steuerregister ein Schlüsselregister
(KR = Key Register) 554. Das Schlüsselregister (KR) kann die
folgenden Bitfelder aufweisen:
KR[0] – SAU aktiviert
KR[15:8] – Entsperrungsschlüssel. Der
Wert in diesem
-
Bitfeld
muss in das Entsperrungsregister (UR) geschrieben werden, um einen
Kanal zu entsperren.
KR[23:16] – Entsperren einer Anzahl von
Taktzyklen. Sobald ein Kanal entsperrt wurde, bleibt er für diese
Anzahl von Taktzyklen oder bis zu einem Zugriff auf einen Kanal
entsperrt.
-
In
einigen Implementierungen umfassen die SAU-Steuerregister ein Statusregister (SR
= Status Register) 556. Ein Prozessor kann Informationen
aus dem Statusregister (SR) zu lesen, um den Betriebszustand des
SAU zu bestimmen. Das Statusregister (SR) kann die folgenden Bitfelder
aufweisen:
SR[0] – Entsperrung
abgelaufen. Eine Entsperrungsoperation wurde durchgeführt, aber
sie ist abgelaufen, bevor ein Zugriff auf einen Kanal durchgeführt wurde.
SR[1] – Kanalzugriff
erfolgreich. Der letzte Zugriff auf einen Kanal war erfolgreich.
Kann automatisch zurückgesetzt
werden, wenn in das UR geschrieben wird.
SR[2] – Kanalzugriff
nicht erfolgreich. Es wurde versucht, auf einen gesperrten oder
deaktivierten Kanal zuzugreifen.
-
In
einigen Implementierungen umfassen die SAU-Steuerregister Kanalaktivierungsregister
(Channel Enable Register) wie z. B. 558 und 560.
Die Kanalaktivierungsregister können
ein Bit pro Kanal enthalten, wobei durch das Setzen des Bits der
entsprechende Neuabbildungskanal aktiviert wird.
-
In
einigen Implementierungen enthalten die SAU-Steuerregister ein Statuslöschregister
(SCR = Status Clear Register) 562. Die Bits in dem Statuslöschregister
(SCR) entsprechen den Bits in dem Statusregister (SR) 556.
Durch das Schreiben eines Bits in das Statuslöschregister (SCR) wird das
entsprechende Bit in dem Statusregister (SR) gelöscht.
-
In
einigen Implementierungen enthalten die SAU-Steuerregister ein Unterbrechungsmaskenregister (IMR
= Interrupt Mask Register) 564. Die Bits in dem Unterbrechungsmaskenregister
(IMR) entsprechen den Bits in dem Statusregister (SR) 556.
Wenn ein Bit in dem Unterbrechungsmaskenregister (IMR) gesetzt ist, wird
eine Unterbrechungsanforderung erzeugt, wenn das entsprechende Bit
in dem Statusregister (SR) gesetzt ist. Zum Beispiel SAU_IRQ (SAU-Unterbrechungsanforderung)
= ♠ (SR & IMR), wobei ♠ eine
bitweise ODER-Verknpfung ist und & eine
bitweise UND-Verknüpfung ist.
-
In
einigen Implementierungen enthalten die SAU-Steuerregister ein Unterbrechungsaktivierungsregister
(IER = Interrupt Enable Register) 566. Die Bits in dem
Unterbrechungsaktivierungsregister (IER) entsprechen den Bits in
dem Unterbrechungsmaskenregister (IMR) 564. Das Schreiben
einer Eins in ein Bit in dem Unterbrechungsaktivierungsregister
(IER) setzt das entsprechende Bit in dem Unterbrechungsmaskenregister (IMR).
-
In
einigen Implementierungen enthalten die SAU-Steuerregister ein Unterbrechungsdeaktivierungsregister
(IDR = Interrrupt Disable Register) 568. Die Bits in dem
Unterbrechungsdeaktivierungsregister (IDR) entsprechen den Bits
in dem Unterbrechungsmaskenregister (IMR) 564. Das Schreiben
einer Eins in ein Bit in dem Unterbrechungsaktivierungsregister
(IER) löscht
das entsprechende Bit in dem Unterbrechungsmaskenregister (IMR).
-
Jedes
der beispielhaften Steuerregister kann eine Zugriffsbeschränkung wie
zum Beispiel Nur-Lesen, Nur-Schreiben,
Lesen oder Schreien aufweisen. Die Spalte 570 zeigt Beispiele
für Zugriffsbeschränkungen
für jedes
der beispielhaften Steuerregister.
-
Verschiedene
Implementierungen der hier beschriebenen Systeme und Techniken können durch
einen digitalen elektronischen Schaltungsaufbau, einen integrierten
Schaltungsaufbau, durch ASICs (anwendungsspezifische integrierte
Schaltungen), Computer-Hardware, Firmware, Software und/oder Kombinationen aus
denselben realisiert werden. Diese verschiedenen Implementierungen
können
eine Implementierung in einem oder in mehreren Computerprogrammen
umfassen, die auf einem programmierbaren System mit wenigstens einem
programmierbaren Prozessor, das spezifisch oder allgemein ausgebildet
sein kann und für
das Empfangen und Senden von Daten und Befehlen mit einem Speichersystem,
mit wenigstens einer Eingabeeinrichtung und mit wenigstens einer
Ausgabeeinrichtung verbunden ist, ausgeführt und/oder interpretiert
werden können.
-
Diese
Computerprogramme (auch als Programme, Software, Softwareanwendungen
oder Code bezeichnet) umfassen Maschinenbefehle für einen
programmierbaren Prozessor und können
in einer prozeduralen und/oder objektorientierten Programmiersprache
einer höheren
Ebene und/oder in einer Maschinen-/Assembliersprache implementiert
werden. Unter einem „maschinenlesbaren
Medium” und
einem „computerlesbaren
Medium” ist
hier ein beliebiges Computerprogrammprodukt, eine Vorrichtung und/oder
ein Gerät
(wie z. B. eine Magnetscheibe, eine optische Scheibe, ein Speicher,
eine PLD) zu verstehen, die verwendet wird, um Maschinenbefehle
und/oder Daten zu einem programmierbaren Prozessor zu geben, der
ein maschinenlesbares Medium enthält, das Maschinenbefehle als
ein maschinenlesbares Signal empfängt. Unter einem „maschinenlesbaren
Signal” ist
ein Signal zu verstehen, das verwendet wird, um Maschinenbefehle
und/oder Daten zu einem programmierbaren Prozessor zu geben.
-
Um
eine Interaktion mit einem Benutzer vorzusehen, können die
hier beschriebenen Systeme und Techniken auf einem Computer implementiert
werden, der eine Anzeigeeinrichtung (z. B. eine Kathodenstrahlröhre oder
eine Flüssigkristallanzeige)
zum Anzeigen von Informationen für
den Benutzer und eine Tastatur und eine Zeigeeinrichtung (z. B.
eine Maus oder einen Trackball) umfasst, über die der Benutzer Eingaben
in den Computer eingeben kann. Es können auch andere Arten von
Geräten
verwendet werden, um eine Interaktion mit einem Benutzer vorzusehen,
wobei zum Beispiel eine Rückmeldung
für den
Benutzer in der Form einer visuellen, akustischen oder taktilen
Rückmeldung
gegeben werden kann und wobei eine Eingabe von dem Benutzer in der
Form einer akustischen, sprachlichen oder taktilen Eingabe gegeben
werden kann.
-
Die
hier beschriebenen Techniken und Systeme können in einem Computersystem
implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver),
eine Middleware-Komponente
(z. B. einen Anwendungsserver), eine Frontend- Komponente (z. B. einen Client-Computer
mit einer grafischen Benutzerschnittstelle oder ein Web-Browser, über den
eine Benutzer mit einer Implementierung der hier beschriebenen Systeme
und Techniken interagieren kann) oder eine Kombination aus denselben
umfasst. Die Komponenten des Systems können über eine beliebige digitale
Datenkommunikation (z. B. über
ein Kommunikationsnetz) miteinander verbunden sein. Beispiele für derartige
Kommunikationsnetze sind ein LAN, ein WAN und das Internet.
-
Die
vorliegende Beschreibung enthält
viele Implementierungsdetails, die die Erfindung jedoch nicht einschränken, sondern
lediglich als spezifische und beispielhafte Implementierungen der
Erfindung aufzufassen sind. Bestimmte Merkmale, die in dieser Spezifikation
in dem Kontext von separaten Implementierungen beschrieben werden,
können
auch in einer einzelnen Implementierung miteinander kombiniert werden.
Umgekehrt können
bestimmte Merkmale, die im Kontext einer einzelnen Implementierung
beschrieben werden, auch auf verschiedene separate Implementierungen
oder auf geeignete Teilimplementierungen aufgeteilt werden. Und
auch wenn bestimmte Merkmale vorstehend in bestimmten Kombinationen
beschrieben oder auch in dieser Form beansprucht werden, können sie
unter Umständen
aus der Kombination ausgegliedert werden und auf eine Teilkombination
oder eine Variation einer Teilkombination angewendet werden.
-
Entsprechend
müssen
die in den Zeichnungen in einer bestimmten Reihenfolge gezeigten
Operationen nicht in der gezeigten Reihenfolge oder überhaupt
aufeinander folgend ausgeführt
werden, wobei die gezeigten Operationen also beliebig ausgeführt werden
können,
um die gewünschten
Ergebnisse zu erzielen. Unter bestimmten Umständen kann ein Multitasking
oder eine parallele Verarbeitung vorteilhaft sein. Weiterhin ist
die Aufteilung der verschiedenen Systemkomponenten in den oben beschriebenen
Implementierungen nicht zwingend erforderlich, wobei die beschriebenen
Programmkomponenten und Systeme allgemein auch zu einem einzelnen
Softwareprodukt integriert oder in mehrere Softwareprodukte gepackt
sein können.
-
Es
wurden bestimmte Implementierungen der Erfindung beschrieben. Andere
Implementierungen können
innerhalb des durch die folgenden Ansprüche definierten Erfindungsumfangs
realisiert werden. Zum Beispiel können die in den Ansprüchen genannten
Operationen auch in einer anderen Reihenfolge ausgeführt werden
und dennoch wünschenswerte
Ergebnisse erzielen.