-
Hintergrund 1.
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich im allgemeinen auf das Gebiet der Datenübertragungen zwischen Vorrichtungen.
Insbesondere bezieht sich die vorliegende Erfindung auf ein System,
das die Blockübertragung
von Daten zu einer Eingabe/Ausgabe-Vorrichtung erlaubt.
-
2. Technisches
Gebiet
-
Wenn Daten übertragen werden, verwendet ein
typisches computergestütztes
System Adressen- und Datenbusse, um die Kommunikation zwischen einem
Mikroprozessor und anderen zugeordneten Vorrichtungen zu erlauben.
Der Adressenbus wird verwendet, um eine spezielle Stelle in einer
zugeordneten Vorrichtung (entweder innerhalb oder außerhalb
des Computers selbst) zu adressieren, wohin die spezifischen Daten
zu übertragen
sind. Dies wird ausgeführt,
indem die vorgegebene Adresse für
die externe Vorrichtung, zu der der Mikroprozessor der Daten zu übertragen
wünscht,
auf dem Adressenbus abgelegt wird.
-
Sobald die Adresse für die gewünschte Stelle
der Daten auf dem Bus abgelegt worden ist, bestimmt jede externe
Vorrichtung, ob der Mikroprozessor wünscht, dass die Daten zu ihr
zu übertragen sind.
Dies wird durch viele bekannte Verfahren des Standes der Technik
ausgeführt,
wobei es im allgemeinen ausgeführt
wird, indem jede Vorrichtung die Adresse auf dem Adressenbus mit
ihrer (oder ihren) eigenen im Voraus zugewiesenen Adresse (oder Adressen)
vergleicht. Falls die Adresse übereinstimmt,
nimmt die externe Vorrichtung die auf dem Datenbus dargestellten
Daten und speichert sie in ihrem eigenen Speicher. Alternativ können derartige Übertragungen
ausgeführt
werden, indem der Mikroprozessor die Vorrichtung über eine
Steuerleitung alarmiert, dass er vorhat, Daten zu der Vorrichtung
zu übertragen.
Nach der Alarmierung der Vorrichtung legt der Mikroprozessor eine
Adresse innerhalb der Vorrichtung (wie z. B. eine Adresse eines
Registers) auf dem Adressenbus ab. Die Daten werden typischerweise
als ein Datenwort übertragen,
dessen Größe abhängig von
der Breite des Datenbusses variiert.
-
Um eine signifikante Datenmenge zur
externen Vorrichtung zu übertragen,
kann der Mikroprozessor wiederholt die Adresse der externen Vorrichtung
auf dem Adressenbus ablegen. Die externe Vorrichtung fährt damit
fort, jedes auf dem Datenbus dargestellte aufeinander folgende Datenwort
zu nehmen, wobei sie es in ihrem Speicher speichert.
-
Der Mikroprozessor kann einen Zeiger
aufrechterhalten, der einer Speicherstelle entspricht, die die Daten
enthält,
die er zur externen Vorrichtung zu übertragen wünscht. Wie jedes Datenwort
zur externen Vorrichtung übertragen
wird, wird der Zeiger aktualisiert, damit er der nächsten Stelle
der Daten entspricht, die der Mikroprozessor zur externen Vorrichtung
zu übertragen
wünscht.
Um zu sichern, dass jedes aufeinander folgende Datenwort zur gleichen
externen Vorrichtung übertragen
wird (vorausgesetzt, der Mikroprozessor wünscht, dass das nächste Datenwort
zu dieser Vorrichtung übertragen
wird), wird jedoch die Adresse auf dem Adressenbus konstant gehalten,
wenn der Zeiger auf das nächste
Datenwort im Mikroprozessor aktualisiert wird.
-
Einige moderne Mikroprozessoren enthalten außerdem die
Fähigkeit,
diesen Prozess zu rationalisieren, indem sie die Übertragung
großer
Datenblöcke
von einer Speicherstelle zu einer anderen Speicherstelle durch die
Ausführung
einer "Blockübertragung" erlauben. Wie im
Stand der Technik wohl bekannt ist, können die Blockübertragungen
durch Übertragungen
mit direktem Speicherzugriff (DMA-Übertragungen)
unter Verwendung separater zusätzlicher
Mikroprozessor-Strukturen oder anderer zusätzlicher Hardware- und/oder
Software-Strukturen (einem "DMA-Controller") ausgeführt werden. Die
DMA-Übertragungen
können
viel schneller als eine wortweise Datenübertragung sein. Die Zunahme
der Geschwindigkeit kommt von der Einbeziehung der separaten Struktur,
um das Inkrementieren des Zeigers, der der Speicherstelle entspricht,
die das Datenwort enthält,
das als nächstes übertragen ist,
und der entsprechenden Adresse, wo die Daten empfangen werden, abzuwickeln.
-
Die DMA-Übertragungen können wie
folgt ausgeführt
werden. Die erste Speicherstelle, die von dem Block zu übertragen
ist, und die Größe des Blocks
werden bestimmt und dem DMA-Controller bereitgestellt. Das Ziel
wird außerdem
bestimmt. Der DMA-Controller hält
den Zielzeiger aufrecht, der der Adresse entspricht, zu der die
Daten in der Speicherstelle zu übertragen
sind. Jede Speicherstelle im Block des Speichers, der zu übertragen
ist, wird dann erfolgreich auf dem Daten bus abgelegt. Nach jeder Übertragung
werden sowohl der Speicherzeiger als auch der Zielzeiger des DMA-Controllers
inkrementiert. Wie in der Technik wohl bekannt ist, können die Verfahren
des "Inkrementierens" eines Zeigers variieren,
wobei sie die Inkrementierung enthalten, die durch eine verkettete
Liste geht, oder einfacher nur einen festen Wert zum im Zeiger im
gespeicherten aktuellen Wert hinzufügt.
-
Die DMA-Übertragungen erlauben die schnelle Übertragung
von Daten zwischen Speicherstellen, wenn sowohl die Stelle, wo die
Daten gegenwärtig
gespeichert sind, als auch die Stelle, zu der sie zu übertragen
sind, diskrete Adressen besitzen, die sich in der gleichen Weise
verändern,
in der die Zeiger inkrementiert werden. Wenn ein Datenblock von einer
Speicherstelle zu einer anderen Speicherstelle übertragen wird, von denen sich
beide innerhalb derselben Speichereinheit oder desselben Speichertyps befinden,
arbeitet dieser Typ der Adressierung sehr effektiv.
-
Es gibt jedoch Situationen, in denen
die Daten nicht zu sequentiellen oder inkrementalen Adressen übertragen
werden, sondern stattdessen alle zur selben Adresse übertragen
werden. Dies tritt z. B. auf, wenn die Daten zu bestimmten Eingabe/Ausgabe-Vorrichtungen
zu übertragen
sind. Jeder Eingabe/Ausgabe-Vorrichtung kann eine eindeutige Adresse
oder Gruppe von Adressen zugewiesenen sein. Wenn eine Gruppe von
Adressen einer speziellen Eingabe/Ausgabe-Vorrichtung zugewiesen
ist, bedeutet dies typischerweise, dass die spezielle Vorrichtung
sowohl Informationen vom Mikroprozessor empfangen als auch Informationen
zum Mikroprozessor senden kann. Ein derartiger Typ einer Eingabe/Ausgabe-Vorrichtung
ist ein universeller asynchroner Empfänger/Sender (UART).
-
Ein UART enthält typischerweise mehrere Register,
die Zustands- und Eingabe/Ausgabe-Daten enthalten. Jedes Register
besitzt eine eindeutige Adresse, die in den Speicherraum des Mikroprozessors
abgebildet ist. Die Eingabe- und Ausgaberegister, wobei jedes eine
eindeutige Adresse besitzt, besitzen die Fähigkeit, mehrere Datenwörter in
schneller Folge durch die Verwendung eines internen Puffers für diese
Register zu empfangen oder zu senden. Der interne Puffer kann z.
B. ein Silostapel (FIFO-Stapel) sein. Wie wohl bekannt ist, kann
ein derartiger Stapel mehrere Datenwörter in schneller Folge empfangen
und speichern.
-
In Systemen, die keine Blockübertragungen verwenden,
erzeugen die eindeutigen Adressen für die Eingabe- und Ausgaberegister
keine realen Schwierigkeiten. Wie oben beschrieben worden ist, muss
der Mikroprozessor nur die Adresse der gewünschten Stelle im UART (z.
B. das Eingaberegister) auf dem Adressenbus halten, während die
Daten sequentiell auf dem Bus abgelegt werden. Dies wird ausgeführt, indem
der Mikroprozessor eine Übertragung
zwischen zwei Stellen (d. h. dem Speicher und dem UART) einleitet.
Falls die Zielstelle dem Eingaberegister des UART entspricht, aktiviert
der Mikroprozessor eine Steuerleitung, die den UART anweist, die
Daten in sein Eingaberegister zu lesen. Die Adresse des spezifischen
Registers in der Eingabe/Ausgabe-Vorrichtung für das Speichern der Daten wird
durch den Adressenbus zum UART geleitet.
-
In Systemen, die eine Blockübertragung
verwenden, wird jedoch die Adresse des Ziels inkrementiert. Dies
verursacht wiederum, dass die sequentiellen Daten des Datenblocks
an verschiedenen Stellen enden.
-
Das Merkmal des Verbindens von Eingabe/Ausgabe-Vorrichtungen
mit einem Adressenbus, sodass jede von mehreren Adressen stets einer
einzigen Adresse entspricht, ist aus US-A-5687357 bekannt.
-
Zusammenfassung
der Erfindung
-
Die vorliegende Erfindung ist durch
eine Vorrichtung entsprechend dem unabhängigen Anspruch 1 und ein entsprechendes
Verfahren entsprechend dem unabhängigen
Anspruch 12 definiert.
-
Kurzbeschreibung
der Zeichnung
-
Die vorangehenden und andere Aufgaben und
Vorteile werden aus der folgenden ausführlichen Beschreibung und den
beigefügten
Figuren deutlicher verstanden. Die folgende Beschreibung und die mit
ihr in Beziehung stehenden Figuren sind lediglich beispielhaft gegeben,
wobei sie in keiner Weise den Umfang der vorliegenden Erfindung
einschränken.
In den Figuren ist:
-
1 ein
Blockschaltplan der typischen Verbindungen des Standes der Technik
zwischen einem Mikroprozessor und einer externen Eingabe/Ausgabe-Vorrichtung.
-
2 zeigt
eine Verbindung des Standes der Technik einer Eingabe/Ausgabe-Vorrichtung mit einem
Adressenbus.
-
3 ist
eine beispielhafte Ausführungsform eines
Aspekts der vorliegenden Erfindung.
-
4 zeigt
eine beispielhafte Ausführungsform,
wie gemäß der vorliegenden
Erfindung mehrere Eingabe/Ausgabe-Vorrichtungen mit einem Adressenbus
verbunden werden können.
-
5 zeigt
eine Ausführungsform,
wie gemäß der vorliegenden
Erfindung mehrere Eingabe/Ausgabe-Vorrichtungen mit einem Datenbus
verbunden werden können.
-
6 zeigt
eine alternative Ausführungsform,
wie gemäß der vorliegenden
Erfindung mehrere Eingabe/Ausgabe-Vorrichtungen mit einem Datenbus
verbunden werden können.
-
7 ist
ein Ablaufplan, der ein beispielhaftes Verfahren zeigt, durch das
Datenblöcke
gemäß einer
Ausführungsform
der vorliegenden Erfindung übertragen
werden können.
-
Ausführliche
Beschreibung der Erfindung
-
1 zeigt
eine herkömmliche
Konfiguration des Standes der Technik, durch die ein Mikroprozessor 100 mit
einer externen Eingabe/Ausgabe-Vorrichtung (E/A-Vorrichtung) 102 verbunden
ist. Wie gezeigt ist, sind der Mikroprozessor 100 und die E/A-Vorrichtung 102 beide
mit einem gemeinsamen Adressenbus 104 und einem gemeinsamen
Datenbus 106 verbunden. Der Mikroprozessor 100 und
die Vorrichtung 102 besitzen außerdem optional eine (gestrichelt
gezeigte) Steuerleitung 108, die zwischen sie geschaltet
ist.
-
Der Mikroprozessor 100 kann
der einzige Mikroprozessor eines Computers sein oder kann ein Mikroprozessor
sein, der ein Teil eines DMA-Controllers ist, der spezifisch und
nur verwendet wird, um DMA-Übertragungen
zwischen dem (nicht gezeigten) Systemspeicher auszuführen. Der
Speicher kann sich innerhalb oder außerhalb des Mikroprozessors 100 befinden.
Für die
Erklärung
muss es jedoch nur selbstverständlich
sein, dass der Mikroprozessor 100 auf die Daten auf dem
Datenbus 106 zugreifen und die Daten auf dem Datenbus 106 ablegen
kann.
-
Wie oben beschrieben worden ist,
legt der Mikroprozessor 100 eine Adresse auf dem Adressenbus 104 ab,
die dem entspricht, wohin die Daten, die sich gegenwärtig auf
dem Datenbus 106 befinden, zu übertragen sind. In dieser Weise
kann der Mikroprozessor 100 alle Datenbewegungen zu und
von der E/A-Vorrichtung 102 steuern.
-
In 2 ist
eine ausführlichere
Darstellung der Verbindungskonfiguration des Standes der Technik
zwischen einem Mikroprozessor 100 und einer E/A-Vorrichtung
102 gezeigt. 2 wird
verwendet, um die Mängel
und Probleme einer derartigen Konfiguration deutlicher zu erklären, die
mit der Übertragung
von Datenblöcken
in Beziehung stehen.
-
Wie gezeigt ist, ist 2 im wesentlichen die gleiche wie 1. Der Adressenbus 104 und
der Datenbus 106' sind
jedoch ausführlicher
gezeigt. Insbesondere besteht der Adressenbus 104 aus mehreren einzelnen
Adressenleitungen A0, . . ., A31.
Der Datenbus 106 besteht ähnlich aus mehreren Datenleitungen
D0, . . ., D15,
wobei jede Datenleitung ein Datenbit darstellt. Es sollte angemerkt
werden, dass die Anzahl der Adressen- und Datenleitungen variabel
ist. In dieser Ausführungsform
ist der Adressenbus 104 als 32 Bits breit gezeigt worden,
während
der Datenbus 106 16 Bits breit ist. In typischen Systemen
entsprechen die Breiten des Adressenbusses 104 und des
Datenbusses 106 der Größe des Adressenraums
bzw. der Größe eines
Datenworts, die durch den Mikroprozessor 100 verwendet
werden. Folglich besitzt der in 2 gezeigte
Mikroprozessor 100 einen 32-Bit-Adressenraum und ein 16-Bit-Datenwort.
-
Die Verbindungen von sowohl dem Adressenbus 104 als
auch dem Datenbus 106 zur E/A-Vorrichtung 102 sind
außerdem
von denjenigen, die in 1 gezeigt
sind, geändert
worden. Wie in 2 gezeigt
ist, gibt es mehrere direkte Verbindungen von der E/A-Vorrichtung 102 sowohl
zum Adressenbus 104 als auch zum Datenbus 106.
Die Anzahl der Verbindungen hängt
sowohl von der Größe des Datenworts,
das die E/A-Vorrichtung 102 handhaben kann, als auch der
Breite der physikalischen Adresse der Vorrichtung ab. Wie gezeigt
ist, kann die Vorrichtung 102 durch drei Bits adressiert
werden, wobei sie ein 8-Bit-Datenwort besitzt. Die Datenverbindungen
der E/A-Vorrichtung 102 sind mit den niedrigen 8 Bits (D0 bis D7) des Datenbusses 106 verbunden,
während die
Adressenverbindungen mit den niedrigsten drei Bits (A0 bis
A2) des Adressenbusses 104 verbunden sind.
-
In dieser Ausführungsform besitzt die E/A-Vorrichtung 102 wenigstens
zwei Register, ein Eingaberegister 202 und ein Ausgaberegister 204. Jedes
Register besitzt typischerweise seine eigene diskrete Adresse. In
der folgenden Erklärung
wird angenommen, dass das Eingaberegister 202 eine Adresse
von 0 besitzt, und dass das Ausgaberegister 204 eine Adresse
von 1 besitzt. Folglich kann im Mikroprozessor 100 die
hexadezimale Zahl FF00H, die dem Eingaberegister 202 entsprechen
soll, und die Adresse FF01H für
das Ausgaberegister 204 abgebildet sein. Wie oben beschrieben
worden ist, können in
vielen E/A-Vorrichtungen 102 dem Eingaberegister 202 und
dem Ausgaberegister 204 ein Stapel oder ein Puffer zugeordnet
sein.
-
Falls der Mikroprozessor 100 angewiesen wird,
die an einer beliebigen Speicheradresse (z. B. 1110H) enthaltenen
Daten zur Speicheradresse FF00N (d. h. dem Eingaberegister 202 der
E/A-Vorrichtung 102) zu übertragen, ereignen sich die
folgenden Ereignisse. Zuerst verwendet der Mikroprozessor 100 eine
(nicht gezeigte) Speicherabbildung, um zu bestimmen, dass die Adresse
FF00H dem Eingaberegister 202 der E/A-Vorrichtung 102 entspricht. Dann
legt der Mikroprozessor 100 die Inhalte der Speicheradresse
1110H auf dem Datenbus 106, die Adresse 0 (d.
h. die Adresse der Speicherabbildung des Eingaberegisters 202)
auf dem Adressenbus 104 ab, wobei er die Steuerleitung 108 aktiviert,
um die E/A-Vorrichtung 102 zu
alarmieren, dass die Übertragung
von Daten zu ihr bevorsteht. Dann kopiert die E/A-Vorrichtung 102 die
Daten auf dem Datenbus 106 zu dem durch die Adresse auf
dem Adressenbus 104 adressierten Register, in diesem Beispiel
zum Eingaberegister 202. Falls der Mikroprozessor dann angewiesen
wird, die Inhalte der Speicheradresse 1101H zur Speicheradresse
FF00H zu übertragen, wird
der gleiche Prozess wiederholt. In dieser Weise werden alle Daten
zur gleichen Adresse übertragen. Dieser
Typ der Speicherübertragung
kann als eine serielle Übertragung
der Datenwörter
zur gleichen Stelle betrachtet werden.
-
In diesem Kontext können im
allgemeinen Blockübertragungsmechanismen
nicht angewendet werden. Eine DMA-Übertragung konsultiert eine Speicherabbildung
nur einmal pro Blockübertragung. Sobald
die erste Zieladresse aus der Speicher abbildung bestimmt ist, wird
sie in einem Zielzeiger gespeichert, der jedes Mal, wenn ein Datenwort
des Blocks übertragen
wird, inkrementiert wird. Dieser inkrementierte Zeigerwert wird
aufeinander folgend auf der Adressenleitung abgelegt.
-
Unter Verwendung des obigen Beispiels
wird angenommen, dass der Mikroprozessor 100 angewiesen
wird, einen Block aus Datenwörtern
beginnend an der Speicherstelle 1110N zur Stelle FF00H zu übertragen.
Das erste Datenwort (d. h. die Daten an der Stelle 1110H) wird auf
dem Datenbus 106 abgelegt. Die Stelle der ersten Speicherstelle
(d. h. 1110H) wird im Speicherzeiger gespeichert. Dann verwendet
der Mikroprozessor die Speicherabbildung, um die Speicherstelle
FFOOH nachzuschlagen, wobei er sie wie oben in die Adresse 0 umsetzt, die
das Eingaberegister 202 der E/A-Vorrichtung 102 bezeichnet.
Diese Adresse (0) wird in einem Zielzeiger gespeichert.
Die im Zielzeiger (0) gespeicherte Adresse wird auf dem
Adressenbus 104 abgelegt, wobei das Datenwort gespeichert
wird, wie oben beschrieben worden ist. Während der Übertragung des zweiten Datenworts
(d. h. der Daten an der Stelle 1111H) inkrementiert der Mikroprozessor 100 jedoch sowohl
den Speicher- als auch den Zielzeiger. Der Zielzeiger enthält nun den
Wert 1, der verursacht, dass das Datenwort im Ausgaberegister 204 anstatt im
gewünschten
Eingaberegister 202 gespeichert wird. Folglich ist die
in 2 gezeigte Konfiguration für die Blockübertragungen
von Daten nicht förderlich.
-
Ein Versuch des Standes der Technik,
dieses Problem zu überwinden,
ist im US-Patent
Nr. 5.687.357, erteilt an Priem, offenbart. Priem lehrt die Verwendung
eines Adressendecodierers, um aufeinander folgende Adressen auf
die gleiche Adresse zu decodieren, wenn das System eine Blockübertragung
ausführt.
Die Hinzufügung
des Decodierers erfordert jedoch die Implementierung zusätzlicher Hardware
oder Software, um die Adressen auf die gleiche Adresse umzusetzen.
Die Hinzufügung
zusätzlicher
Komponenten erfordert mehr physikalischen Raum und schränkt auch
die Geschwindigkeit der Speicherübertragungen
auf die Zeit ein, die für die
Decodierung erforderlich ist, falls eine derartige Decodierung langsamer
als die Rate ist, mit der die E/A-Vorrichtung die Daten empfangen/senden
kann. Bestimmte Ausführungsformen
der vorliegenden Erfindung erleichtern oder überwinden dieses Problem.
-
3 zeigt
eine Ausführungsform
der vorliegenden Erfindung. In dieser Ausführungsform ist keine zusätzliche
Decodierungs-Schaltungsanordnung oder -Soft ware erforderlich, um
eine DMA-Blockübertragung
der Daten zu einer einzigen Zieladresse auszuführen.
-
Die in 3 gezeigte
Ausführungsform
enthält
einen Mikroprozessor 100, eine E/A-Vorrichtung 102,
einen Adressenbus 104 und einen Datenbus 106.
Die E/A-Vorrichtung 102 ist
durch die Vorrichtungsadressenleitungen 304a, . . ., 304c mit
dem Adressenbus 104 und durch die Vorrichtungsdatenleitungen 306a,
. . ., 306h mit dem Datenbus 106 verbunden. In
dieser Ausführungsform
besitzt der Mikroprozessor 100 einen 32-Bit-Adressenraum
und ein 16-Bit-Datenwort. Die Größe des Adressenraums und
des Datenworts ist in der vorliegenden Erfindung nicht von großer Wichtigkeit,
wobei sie variieren können.
Wie oben sind der Mikroprozessor 100 und die E/A-Vorrichtung 102 durch
eine Steuerleitung 108 verbunden. Wie ein Durchschnittsfachmann
leicht erkennen wird, kann die Steuerleitung 108 unter
manchen Umständen
weggelassen werden, wie z. B. wenn die E/A-Vorrichtung 102 die
Fähigkeit
besitzt, den Adressenbus 104 abzufragen, um zu bestimmen,
ob Daten zu ihr übertragen
werden.
-
Wie gezeigt ist, ist die E/A-Vorrichtung 102 direkt
mit dem Adressenbus 104 verbunden. Im Gegensatz zu 2 sind jedoch die Vorrichtungsadressenleitungen
304 vom Bit niedrigster Ordnung des Adressenbusses 104 versetzt.
Das heißt,
die Adressenleitung niedrigster Ordnung (die Vorrichtungsadressenleitung 304a,
wie gezeigt ist) ist nicht mit dem Bit niedrigster Ordnung des Adressenbusses 104 (z. B.
A0) verbunden. In dieser Ausführungsform
sind die Vorrichtungsadressenleitungen 304 um vier Bits-
versetzt, wobei die Vorrichtungsadressenleitung 304a niedrigster
Ordnung mit dem Bit A4 fünftniedrigster Ordnung
des Adressenbusses 104 verbunden ist. Dies erlaubt, dass
sequentielle Zieladressen alle zur gleichen Stelle adressiert werden,
ohne irgendeine Decodierungs-Schaltungsanordnung oder -Software aufnehmen
zu müssen.
-
Die Operation der Blockübertragung
gemäß der vorliegenden
Erfindung wird unter Verwendung des obenbeschriebenen Beispiels
beschrieben. In dem oben erörterten
Beispiel wurden die Informationen in der zweiten Speicherstelle
(z. B. 1111H) infolge der inkrementalen Zunahme der im Zielzeiger
gespeicherten Adresse zum falschen Register der E/A-Vorrichtung 102 gelenkt.
Falls die E/A-Vorrichtung 102 mit dem Adressenbus 104 verbunden
ist, wie in 3 gezeigt
ist, erscheinen beide Adressen (0 und 1) als die
gleiche. Das heißt,
weil die E/A-Vorrichtung 102 nicht mit den vier Adressenleitungen A0–A3 niedrigster Ordnung verbunden ist, erscheinen die
Zahlen FF00H bis FF0FH alle als die Adresse FF00H.
-
Hinsichtlich des obenbeschriebenen
Zielzeigers neu formuliert erscheinen die inkrementalen Adressen 0 bis 7 der
E/A-Vorrichtung 102 als eine 0.
-
Der obenbeschriebene Versatz beträgt vier Bits.
Dies lässt
16 Speicherstellen in die gleiche Stelle kollabieren. Folglich werden
die obenbeschriebenen Probleme überwunden,
in dem die Verbindung der Adressenleitungen 304 zum Adressenbus 104 implementiert
wird, wobei die Adressenleitung 304a niedrigster Ordnung
von der Adressenbusleitung A0 niedrigster
Ordnung versetzt ist.
-
Wie soeben beschrieben worden ist,
betrug der Versatz vier Bits, wobei dadurch erlaubt wird, dass 8
Datenwörter
zur gleichen Adresse als Block übertragen
werden. Es kann ein anderer Versatz verwendet werden. Ein Faktor,
der den Betrag des Versatzes beeinflusst, ist die Größe des Puffers,
der dem Register bei der gewünschten
Adresse zugeordnet ist. Vorzugsweise ist der Versatzbetrag gleich
der Größe des zugeordneten
Puffers. Falls z. B. die Größe des Puffers
4 Wörter
beträgt,
kann der Versatz 2 Bits betragen. Dies würde z. B. erlauben, dass die Adressen
1-3 (0001b–0010b),
die 4 diskrete Adressen darstellen, alle zur gleichen Stelle (d.
h. dem dritten Bitwert, der in diesem Fall 0 ist) adressiert werden.
Obwohl der Versatzbetrag nicht gleich der Größe des Puffers der Größe eines
Blocks, der übertragen
werden kann, sein muss, kann dies für die meisten Anwendungen die
effizienteste Anordnung sein.
-
Die obenbeschriebene E/A-Vorrichtung 102 kann
irgendeine geeignete bekannte oder später entwickelte Vorrichtung
sein, die serielle Übertragungen von
Daten zu einer einzigen Adresse ausführen kann. Die E/A-Vorrichtung 102 könnte z.
B. ein UART, ein Modem, ein Plattenlaufwerk, ein Logik-Controller oder
eine Netzschnittstelle sein. Wie oben erwähnt worden ist, können ein
Puffer, ein Stapel oder ähnliche
Datenstrukturen, die dem Register zugeordnet sind, das in der E/A-Vorrichtung 102 adressiert
wird, verwendet werden (müssen
aber nicht verwendet werden).
-
Die vorliegende Erfindung kann an
Situationen angepasst werden, in denen Daten zum im wesentlichen
gleichen Zeitpunkt von einer einzelnen Stelle zu zwei anderen Stellen
zu übertragen
sind. Jede Stelle kann ein Steuer-Untersystem sein. In vielen Fällen wird
die zeitliche Steuerung der Ausgaben aus den Steuer- Untersystemen kritisch,
wobei sich zwingende Anforderungen ergeben können, dass jedes Steuer-Untersystemen
eine Ausgabe innerhalb des im wesentlichen gleichen Zeitpunkts erzeugt.
Ein Zugang ist, in beiden Untersystemen einen gemeinsamen Takt vorzusehen,
um ihren Betrieb zu synchronisieren. Die Bereitstellung eines einzelnen Takts
führt jedoch
einen Grad des Ausfalls einer einzelnen Vorrichtung ein, der den
Betrieb des Systems unterbrechen oder möglicherweise zerstören könnte. Folglich
ist die Einführung
eines gemeinsamen Taktes in ein fehlertolerantes System keine akzeptable Lösung.
-
Fehlertolerante Systeme vewenden
typischerweise unabhängige
und parallele Steuer-Untersysteme, um zu sichern, dass ein Ausfall
in einem Steuer-Untersystem nicht das ganze System sperrt. Die Ausgaben
jedes Steuer-Untersystems werden verglichen, um das Vorhandensein
eines Fehlers in einem Untersystem zu erfassen. Wie in der Technik wohl
bekannt ist, wird dann eine Entscheidungsoder Abstimmungsprozedur
aufgerufen, um zu wählen, welche
Untersystem-Ausgabe
beim Steuern irgendeines Abschnitts des Systems verwendet wird. Die
zwei Untersysteme können
z. B. beide fähig
sein, einen einzelnen Aktuator (z. B. einen Motor) anzusteuern.
-
Bestimmte Ausführungsformen der vorliegenden
Erfindung können
einige oder eine dieser Probleme lindern, indem sie erlauben, dass
eine einzelne Speicherübertragung
vom Mikroprozessor bei zwei oder mehr Steuer-Untersystemen gleichzeitig ankommt.
Der Begriff Steuer-Untersystem, wie er hierin verwendet wird, kann
mit irgendeiner vorausgehend beschriebenen allgemeinen E/A-Vorrichtung gleichgesetzt
werden. Folglich enthält
für die
Einfachheit und Kontinuität
der Erörterung
die im folgenden erörterte
E/A-Vorrichtung 102 ein Steuer-Untersystemen, ist jedoch
nicht darauf eingeschränkt.
Vorzugsweise ist die E/A-Vorrichtung 102 ein UART.
-
Ferner erlaubt gemäß einer
weiteren Ausführungsform
die vorliegende Erfindung die gleichzeitige Übertragungen von Datenblöcken zu
mehreren E/A-Vorrichtungen, wobei alle Datenblöcke zur gleichen Adresse übertragen
werden.
-
In 4 ist
eine beispielhafte Ausführungsform
eines Systems, das gleichzeitig Daten zu zwei E/A-Vorrichtungen 102 und 102' übertragen
kann, offenbart. Die Anzahl der E/A-Vorrichtungen muss nicht gleich
zwei sein, wobei sie in einigen Anwendungen, abhängig von der Menge der gewünschten Redundanz,
größer sein
kann.
-
In diesem Beispiel enthält das System
eine erste E/A-Vorrichtung 102, eine zweite E/A-Vorrichtung 102' und einen Mikroprozessor 100.
Der Mikroprozessor 100 ist durch eine Steuerleitung 118 sowohl
mit der ersten als auch mit der zweiten E/A-Vorrichtung 102 bzw. 102' direkt verbunden.
Der Mikroprozessor 100 ist mit allen Leitungen des Adressenbusses 104 verbunden,
wobei er eine Adresse auf dem Adressenbus 104 ablegen kann.
Wie gezeigt ist, sind beide E/A-Vorrichtungen 102 und 102' mit den gleichen
Adressenleitungen (A4 bis A6)
verbunden. Vorausgesetzt, dass beide E/A-Vorrichtungen 102 und 102' die gleiche
Adresse besitzen, weil sie mit den gleichen Leitungen des Adressenbusses 104 verbunden
sind, können
beide Vorrichtungen gleichzeitig adressiert werden.
-
Es wird angenommen, dass der Mikroprozessor
wünscht,
dass Informationen in das Eingaberegister 202 der ersten
E/A-Vorrichtung übertragen werden.
Diese Übertragung
kann abgeschlossen werden, wie oben ausführlich beschrieben worden ist.
In einem fehlertoleranten System ist es jedoch typischerweise erwünscht, dass
diese Informationen gesichert werden. Das heißt, die Daten müssen zu zwei
unabhängigen
Stellen (Vorrichtungen) übertragen
werden. Typischerweise würde
der Mikroprozessor 100, um dies zu tun, zuerst die Daten
zur ersten Vorrichtung übertragen
und dann die gleichen Daten zu einer anderen Vorrchtung erneut übertragen.
Dies erfordert mehr Zyklen des Mikroprozessors 100, wobei
es dadurch den Zusatzaufwand vergrößert und den Mikroprozessor 100 verlangsamt.
Ferner stellt dieser Typ der sequentiellen Übertragung die Daten nicht
beiden Vorrichtungen gleichzeitig bereit.
-
Gemäß einem Aspekt der vorliegenden
Erfindung können
jedoch, weil sowohl die erste E/A-Vorrichtung 102 als auch
die zweite E/A-Vorrichtung 102' mit den gleichen Adressenleitungen (A4–A6) verbunden sind, sie gleichzeitig adressiert werden.
Nachdem der Mikroprozessor z. B. den E/A-Vorrichtungen 102 und 102' über die
Steuerleitung 104 signalisiert hat, dass er Daten zu ihnen
zu übertragen
wünscht,
legt der Mikroprozessor 100 eine Adresse 0 auf
dem Adressenbus 104 ab, um die Daten auf dem Datenbus 106 zu
den Eingaberegistern beider Vorrichtungen zu lenken. Das heißt selbstverständlich,
es wird angenommen, dass beide E/A-Vorrichtungen 102 und 102 die
Adresse 0 ihren entsprechenden Eingaberegistern zugewiesen
haben. In dieser Weise werden die Daten auf dem Datenbus 106 gleichzeitig
zu beiden E/A-Vorrichtungen 102 und 102' übertragen.
-
Wie in 4 gezeigt
ist, sind die entsprechenden Verbindungen sowohl der ersten E/A-Vorrichtung 102 als
auch der zweiten E/A-Vorrichtung 102' mit dem Adressenbus 106 um
4 Bits versetzt. Dies erlaubt, wie oben ausführlich beschrieben worden ist,
die effizienten Blockübertragungen
der Daten zu jeder Vorrichtung. Weil insbesondere beide Vorrichtungen
durch die gleiche Steuerleitung 108 gesteuert werden und
beide direkt mit den gleichen Adressenleitungen (A4 bis
A6) verbunden sind, können die Blockübertragungen
der Daten gleichzeitig sowohl zur ersten E/A-Vorrichtung 102 als
auch zur zweiten E/A-Vorrichtung 102' ausgeführt werden.
-
In 4 sind
sowohl beide E/A-Vorrichtungen 102 und 102' als auch der
Mikroprozessor 100 mit dem Datenbus 106 verbunden.
In Bezug auf die 5 und 6 werden zwei verschiedene
beispielhafte Verbindungen der E/A-Vorrichtungen 102 und 102' mit dem Datenbus 106 und
bestimmte Vorteile und Verwendungen von jeder beschrieben.
-
5 zeigt
sowohl die erste als auch die zweite E/A-Vorrichtung 102 bzw. 102', die mit den gleichen
Abschnitten des Datenbusses 106 verbunden sind. Spezieller
sind beide Vorrichtungen mit den Datenleitungen niedriger Ordnung
(D0 bis D7) des
Datenbusses 106 verbunden. Wenn beide E/A-Vorrichtungen
102 und 102' in
dieser Weise konfiguriert sind, empfangen sie die gleichen Daten.
Wie gezeigt ist, ist nur ein Abschnitt der Datenleitungen des Datenbusses 106 mit
den E/A-Vorrichtungen 102 und 102' verbunden.
Wie jedoch ein Durchschnittsfachmann leicht erkennen wird, könnten die
E/A-Vorrichtungen 102 und 102' abhängig von der Anwendung mit
allen Datenleitungen oder irgendeinem Abschnitt von ihnen verbunden
sein.
-
Ein Beispiel einer Situation, in
der sich eine derartige Verbindung, wie sie in 5 gezeigt ist, ergeben kann, ist in einem
System, das zwei Kopien aller gespeicherten Daten erfordert. Indem
beide E/A-Vorrichtungen 102 und 102' mit den gleichen Datenleitungen
verbunden sind, und weil sie beide durch eine gemeinsame Steuerleitung 108 gesteuert werden,
werden die auf dem Datenbus 106 dargestellten Daten gleichzeitig
an zwei Stellen (den E/A-Vorrichtungen 102 und 102') gespeichert.
Diese gleichzeitige Speicherung glaubt die Erzeugung von zwei Kopien
der Daten, die beide gleich zugänglich sind.
Dies erlaubt vorteilhaft die Erzeugung einer Sicherungskopie der
Daten, ohne die Zeit zu beanspruchen, um das Original in eine Sicherungsdatei
zu kopieren.
-
Eine weitere Anwendung der gleichzeitigen Übertragung
derselben Daten sind die obenerwähnten
fehlertoleranten Systeme. Durch das Übertragen der Daten zu zwei
Stellen wird der Ausfall eines Steuer-Untersystems den Betrieb der
Vorrichtung, die durch die Untersysteme gesteuert wird, nicht ernstlich
beeinflussen.
-
6 zeigt
ein alternatives Verbindungsschema zwischen dem Datenbus 106 und
den ersten und zweiten E/A-Vorrichtungen 102 bzw. 102'. Wie gezeigt
ist, ist die erste E/A-Vorrichtung 102 mit den Datenleitungen
niedriger Ordnung (D0 bis D7)
verbunden, während
die zweite E/A-Vorrichtung 102' mit den Datenleitungen höherer Ordnung
(D8 bis D15) verbunden
ist. Dies erlaubt, dass unter Verwendung des einzelnen Übertragungsbefehls
zwei verschiedene Datenwörter
gleichzeitig zu zwei verschiedenen Stellen übertragen werden. Folglich
sind verschiedene Daten für
jede der E/A-Vorrichtungen, die mit dem Datenbus verbunden sind,
die alle durch eine einzelne Adresse adressierbar sind, gleichzeitig
verfügbar.
-
Die in 6 gezeigte
Konfiguration erlaubt z. B. die gleichzeitige Steuerung von zwei
entgegenwirkenden Aktuatoren (d. h. Motoren). Falls jede der E/A-Vorrichtungen 102 und 102' mit (nicht
gezeigten) verschiedenen Aktuatoren verbunden ist, können beide
Aktuatoren durch den Mikroprozessor 100 gesteuert werden,
der ein einzelnes Datenstück
oder einen einzelnen Datenblock überträgt.
-
In einem System, das z. B. Motoren
verwendet, um ein Rad in einer aufrechten Position aufrechtzuerhalten,
kann einen Motor auf jeder Seite des Rades verwendet werden, um
das Rad aufrecht zu halten. Wenn das Rad beginnt, sich zu einer
Seite zu neigen, wird der Motor auf der anderen Seite betätigt, um
das Rad zurück
in die Senkrechte zu bringen. Falls nur ein Motor (durch eine E/A-Vorrichtung)
auf einmal Informationen darüber
empfangen kann, wie er arbeiten sollte, kann die Steuerung des Rades überzogen
werden. Das heißt,
ein Motor läuft,
bis der andere beginnt, zu laufen. In dieser Weise wird das Rad "taumeln", zurückzuführen auf
die durch das einzelne sequentielle Laufen jedes Motors übertragene Hin- und Herbewegung.
Falls jedoch beide Motoren Informationen gleichzeitig empfangen
könnten,
könnte
dies vermindert werden. Wenn das Rad z. B. durch einen Motor zur
Senkrechten gebracht wird, könnte der
entgegenwirkende Motor gleichzeitig langsam in Betrieb gesetzt werden,
sodass das Rad niemals aus der Senkrechten abgelenkt wird.
-
Alternativ könnten sowohl die ersten als
auch die zweiten E/A-Vorrichtungen 102 bzw. 102' die gleichen Informationen
empfangen und trotzdem in der in 6 gezeigten
Weise mit dem Datenbus verbunden sein. In diesem Fall würde der
(nicht gezeigte) Mikroprozessor 100 lediglich auf den Datenleitungen D0 bis D7 niedriger
Ordnung völlig
gleiche Daten ablegen, wie er sie auf den Datenleitungen D8 bis D15 hoher Ordnung
ablegt.
-
7 ist
ein Ablaufplan, der eine Ausführungsform
eines Verfahrens zum Übertragen
von Daten unter Verwendung einer beispielhaften Ausführungsform
der vorliegenden Erfindung ausführlich beschreibt.
Im Schritt 702 wird eine Adresse auf einem Adressenbus
abgelegt. Die auf dem Bus abgelegte Adresse wird auf dem Bus für eine Zeitperiode gehalten,
die lang genug ist, dass die Daten vom Bus gelesen werden. Im Schritt 704 wird
ein Abschnitt der Daten im zu übertragenden
Datenblock (d. h. ein Datenwort) auf dem Datenbus abgelegt. Der
Schritt 704 kann während
derselben Zeitperiode auftreten, in der die Adresse auf dem Bus
gehalten wird.
-
In einer Ausführungsform können zwei
oder mehrere Datenblöcke
parallel übertragen
werden. In dieser Ausführungsform
kann der erste Abschnitt jedes Datenblocks gleichzeitig auf den
Abschnitten des Datenbusses, z. B. den oberen und unteren Hälften des
Busses, abgelegt werden. Wie oben beschrieben worden ist, kann ein
DMA-Controller verwendet werden, um die Adressen und die Daten auf
dem Bus abzulegen.
-
Sobald die Daten auf dem Datenbus
abgelegt sind, werden im Schritt 706 die Daten zu einer Vorrichtung
(d. h. einer Datenspeichervorrichtung) übertragen, die ein Speicherelement
besitzt, um die Daten zu empfangen. Die Daten können durch eine Vorrichtung
oder durch mehrere Vorrichtungen empfangen werden, wie oben beschrieben
worden ist. In beiden Fällen
wird das Verfahren fortgesetzt, bis der ganze Block übertragen
worden ist, wie im Block 708 bestimmt wird. Nach jedem
anschließenden
Durchlauf durch den Ablaufplan nach 7 wird
die Adresse, die auf dem Adressenbus abgelegt und gehalten wird,
inkrementiert. Unter Verwendung der obenbeschriebenen Ausführungsform
wird jedoch jede Übertragung
eines Datenwortes in einen Block sequentiell im gleichen Speicherelement
gespeichert, ungeachtet der Inkrementierung der Adresse.
-
Nachdem auf diese Weise verschiedene
veranschaulichende Ausführungsformen
der vorliegenden Erfindung, einige ihrer Vorteile und optionalen Merkmale
beschrieben worden sind, ist offensichtlich, dass derartige Ausführungsformen
lediglich beispielhaft und nicht als Einschränkung dargestellt worden sind.
Die Fachleute auf dem Gebiet könnten leicht
sowohl Änderungen
und Verbesserungen an diesen Ausführungsformen als auch zusätzliche
Ausführungsformen
entwerfen, ohne vom Erfindungsgedanken und Umfang der Erfindung
abzuweichen. Obwohl z. B. die Verbindungen zwischen den E/A-Vorrichtungen
und mehreren Bussen als direkte Verbindungen ohne eine dazwischenliegende
Schaltungsanordnung oder dazwischenliegende Vorrichtungen über diejenigen
hinaus, die erforderlich sind, um eine derartige Verbindung zu verwirklichen,
gezeigt worden sind, könnten
diese Verbindungen eine zusätzliche
Schaltungsanordnung oder zusätzliche
Vorrichtungen besitzen, die zwischen irgendeinem der Busse und irgendeiner
der E/A-Vorrichtungen angeordnet sind. Außerdem ist die Breite der Adressen-
und Datenbusse vollständig
variabel, wie es der Adressenraum des Mikroprozessors ist. Außerdem ist
die Größe des Datenwortes,
die die E/A-Vorrichtung handhaben kann, ebenfalls variabel. Außerdem können die
Steuerleitungen so konfiguriert sein, dass, selbst wenn zwei Vorrichtungen
die gleiche Adresse besitzen, die Informationen nur zu einer von
ihnen übertragen
werden. Demzufolge ist die Erfindung nur eingeschränkt, wie
in den folgenden Ansprüchen
und ihren Äquivalenten
definiert ist.