HINTERGRUND DER ERFINDUNG
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft eine direkte Speicherzugriffs-Steuerung
(DMA-Steuerung) und insbesondere eine in einem Mikrocomputersystem
verwendete DMA-Steuerung zur Übertragung von Daten zwischen einem Speicher und
einer Eingabe/Ausgabe-Einrichtung.
Beschreibung des Stands der Technik
-
In einem herkömmlichen Mikrocomputersystem umfaßt eine DMA-Steuerung
zum Steuern eines direkten Datentransfers zwischen einem Speicher und einer
Eingabe/Ausgabe-Einrichtung, die gemeinsam mit einem Datenbus verbunden
sind, einen Datenzähler, einen Adreßzähler und eine Lese/Schreib-Steuerung.
-
Wenn die Lese/Schreib-Steuerung eine DMA-Anforderung von der
Eingabe/Ausgabe-Einrichtung empfängt, gibt die Lese/Schreib-Steuerung eine DMA-
Bestätigung an die Eingabe/Ausgabe-Einrichtung und gleichzeitig Lese/Schreib-
Steuersignale jeweils an den Speicher und die Eingabe/Ausgabe-Einrichtung aus.
Wenn beispielsweise Daten vom Speicher an die Eingabe/Ausgabe-Einrichtung
übertragen werden, gibt die Lese/Schreibsteuerung ein Lese-Steuersignal bzw. ein
Schreib-Steuersignal an den Speicher bzw. an die Eingabe/Ausgabe-Einrichtung
aus. Wenn dagegen Daten von der Eingabe/Ausgabe-Einrichtung an den Speicher
übertragen werden, gibt die Lese/Schreib-Steuerung ein Lese-Steuersignal bzw.
ein Schreib-Steuersignal an die Eingabe/Ausgabe-Einrichtung bzw. an den
Speicher aus.
-
Wenn andererseits der direkte Speicherzugriff angefordert wird, werden die
DMA-Steuerung, insbesondere der Datenzähler und der Adreßzähler von einer
zum Mikrocomputer gehörenden Zentraleinheit (CPU) initialisiert. Im Verlauf der
DMA-Operation dekrementiert die Lese/Schreib-Steuerung den Datenzähler und
inkrementiert oder dekrementiert den Adreßzähler. Ein Inhalt des Adreßzählers
wird dem Speicher als Adresse, auf die zugegriffen werden soll, zugeführt.
-
Auf diese Art kann eine große Datenmenge direkt zwischen dem Speicher
und der Eingabe/Ausgabe-Einrichtung über den Datenbus aber ohne Vermittlung
der CPU übertragen werden.
-
Wenn der Inhalt des Adreßzählers Null wird, gibt der Datenzähler ein
Datentransfer-Stoppsignal an die Lese/Schreib-Steuerung aus, damit die Operation der
Lese/Schreib-Steuerung gestoppt wird.
-
In der oben genannten herkömmlichen DMA-Steuerung ist es nötig, wenn es
einen nicht zu lesenden oder zu beschreibenden Speicherbereich zwischen einer
Datentransfer-Startadresse und einer Datentransfer-Endeadresse im Speicher gibt,
den Datentransfer gleich vor dem nicht zu lesenden oder zu beschreibenden
Speicherbereich zu stoppen und dann die DMA-Steuerung wieder zu initialisieren, so
daß der Datentransfer gleich nach dem nicht zu lesenden oder zu beschreibenden
Speicherbereich erneut gestartet wird. Wie oben erwähnt wurde, wird die
Initialisierung der DMA-Steuerung jedoch von der CPU ausgeführt, und die CPU wird beim
Datentransfer im DMA-Modus zusätzlich belastet. Folglich geht die Systemeffizienz
des Microcomputers zurück.
-
Aus der JP-A-61-122,770 ist eine direkte
Speicherzugriffs-Steuerungseinrichtung bekannt, mit der die Verarbeitung dadurch beschleunigt werden soll,
daß unnötige Daten beim Lesen der Daten aus einem Speicher übergangen
werden und Daten während des Datentransfers beim Schreiben der Daten
zusammengeführt werden. Die Einrichtung besteht aus einer Steuerschaltung 10 zum
Erzeugen eines Lese/Schreib-Zeitsignals für den Speicherzugriff, eine
Startadresse-Registereinrichtung mit einem Register, in dem die Startadresse zum Starten
des Datentransfers in eine Speichereinrichtung spezifiziert wird, eine Endeadresse-
Registereinrichtung mit einem Register 11, in dem das zu übertragende
Datenvolumen oder die Endeadresse einer Speichereinrichtung spezifiziert wird, sowie eine
Speicheradresse-Zähleinrichtung mit einem Register zum Überspringen der
Speicheradresse um eine vordefinierte Zahl gemäß einer vorher spezifizierten Angabe,
zum wiederholten Ausführen des Voranschreitens und Überspringens, wenn die
Speicheradresse bei jedem Speicherzugriff übersprungen wird und die
Schrittanzahl eine vordefinierte Zahl erreicht.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es ist daher eine Aufgabe der vorliegenden Erfindung, eine DMA-Steuerung
zu schaffen, bei der der oben genannte Mangel einer herkömmlichen DMA-
Steuerung beseitigt ist.
-
Es ist eine weitere Aufgabe der vorliegenden Erfindung, eine DMA-Steuerung
zu schaffen, mit der Daten übertragen werden können durch Umgehen eines nicht
zu lesenden oder zu beschreibenden Speicherbereichs ohne Rückgriff auf die
CPU.
-
Die oben genannten und weitere Aufgaben der vorliegenden Erfindung
werden erfindungsgemäß von einer DMA-Steuerung zum Steuern des Datentransfers
zwischen einem Speicher und einer Eingabe/Ausgabe-Einrichtung gelöst, wie sie in
Anspruch 1 definiert ist.
-
Die oben genannten und weitere Aufgaben, Merkmale und Vorteile der
vorliegenden Erfindung werden klar aus der folgenden Beschreibung der bevorzugten
Ausführungsformen der Erfindung unter Bezugnahme auf die beigefügten
Zeichnungen.
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Fig. 1 ist ein Blockdiagramm einer ersten Ausführungsform der
erfindungsgemäßen DMA-Steuerung; und
-
Fig. 2 ist ein Blockdiagramm einer zweiten Ausführungsform der
erfindungsgemäßen DMA-Steuerung.
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Es wird nun auf Fig. 1 Bezug genommen. Es ist ein Blockdiagramm einer
ersten Ausführungsform der erfindungsgemäßen DMA-Steuerung gezeigt. Die
gezeigte DMA-Steuerung wird im allgemeinen mit der Bezugsziffer 100 bezeichnet
und ist mit einem Datenbus 200 und einem Adreßbus 202 verbunden. Außerdem
sind eine CPU 300, ein Speicher 400 und eine Eingabe/Ausgabe-Einrichtung 500
ebenfalls sowohl mit dem Datenbus 200 als auch mit dem Adreßbus 202
verbunden.
-
Die DMA-Steuerung 100 umfaßt einen Datenzähler 10, einen Adreßzähler 12,
eine Lese/Schreib-Steuerung 14, ein Sprungstart-Adreßregister 16, ein
Sprungende-Adreßregister 18 und einen Adreßvergleicher 20, wie in Fig. 1 gezeigt ist.
-
Die Lese/Schreib-Steuerung 14 empfängt eine DMA-Anforderung DRQ von
der Eingabe/Ausgabe-Einrichtung 500 über eine DMA-Anforungssignalleitung 102
und gibt eine DMA-Bestätigung DACK an die Eingabe/Ausgabe-Einrichtung 500
über eine DMA-Bestätigungssignalleitung 104 aus. Die Lese/Schreib-Steuerung 14
gibt des weiteren ein Eingabe/Ausgabe-Schreibsteuerungssignal I/OW und ein
Eingabe/Ausgabe-Lesesteuerungssingal I/OR an die Eingabe/Ausgabe-Einrichtung
500 über eine Eingabe/Ausgabe-Schreibsteuerungssignalleitung 106 bzw. eine
Eingabe/Ausgabe-Lesesteuerungssignalleitung 108 aus. Darüber hinaus gibt die
Lese/Schreib-Steuerung 14 ein Speicher-Schreibsteuerungssignal MEMW und ein
Speicher-Lesesteuerungssignal MEMR an den Speicher 400 über eine Speicher-
Schreibsteuerungssignalleitung 110 bzw. eine
Speicher-Lesesteuerungssignalleitung 112 aus.
-
Des weiteren gibt die Lese/Schreib-Steuerung 14 ein
Dekrementier/Inkrementier-Steuersignal über eine Leitung 114 an den Datenzähler 10 und den
Adreßzähler 12 aus. Wenn der Inhalt des Datenzählers 10 Null wird, gibt der
Datenzähler 10 ein Datentransfer-Stoppsignal über eine Leitung 116 an die
Lese/Schreib-Steuerung 14 aus. Der Inhalt des Adreßzählers 12 wird dem Speicher
400 als Adresse über einen Bus 118 und den Adreßbus 202 zugeführt sowie auch
dem Vergleicher 20 zugeführt. Der Vergleicher 20 vergleicht die Adresse auf dem
Bus 118 mit dem Inhalt des Sprungstart-Adreßregisters 16 bzw. dem Inhalt des
Sprungende-Adreßregisters 18. Wenn die Adresse auf dem Bus 118 mit dem Inhalt
des Sprungstart-Adreßregisters 16 übereinstimmt, gibt der Vergleicher 20 ein
erstes Übereinstimmungssignal 120 an die Lese/Schreib-Steuerung 14 aus. Wenn
die Adresse auf dem Bus 118 mit dem Inhalt des Sprungende-Adreßregisters 18
übereinstimmt, gibt der Vergleicher 20 ein zweites Übereinstimmungssignal 122 an
die Lese/Schreib-Steuerung 14 aus.
-
Der Datenzähler 10, der Adreßzähler 12, das Sprungstart-Adreßregister 16
und das Sprungende-Adreßregister 18 werden von der CPU 300 vor dem Start der
DMA-Operation initialisiert.
-
Wenn die Lese/Schreib-Steuerung 14 ein DMA-Anforderungssignal DRQ 102
von der Eingabe/Ausgabe-Einrichtung 500 empfängt, gibt die Lese/Schreib-
Steuerung 14 das DMA-Bestätigungssignal DACK 104 an die Eingabe/Ausgabe-
Einrichtung 500 aus. Zu diesem Zeitpunkt werden entsprechende Anfangswerte
über den Datenbus 200 von der CPU 300 im Datenzähler 10, im Adreßzähler 12,
im Sprungstart-Adreßregister 16 und im Sprungende-Adreßregister 18 gesetzt.
Genauer gesagt wird der Datenzähler 10 auf einen Wert gesetzt, der der zu
übertragenden Datenmenge entspricht, und der Adreßzähler 12 wird auf eine
Datentransfer-Startadresse des Speichers 400 gesetzt. Das Sprungstart-Adreßregister
16 wird auf eine Adresse des Speichers 400 gesetzt gleich vor einem
Speicherbereich, der nicht gelesen oder beschrieben werden sollte, und das Sprungende-
Adreßregister 18 wird auf eine letzte Adresse des nicht zu lesenden oder zu
beschreibenden Speicherbereichs gesetzt.
-
Wenn Daten vom Speicher 400 zur Eingabe/Ausgabe-Einrichtung 500
übertragen werden, gibt die Lese/Schreib-Steuerung 14 ein aktives
Speicher-Lesesteuerungssignal MEMR 112 und ein aktives
Eingabe/Ausgabe-Schreibsteuerungssignal I/OW 106 an den Speicher 400 bzw. an die
Eingabe/Ausgabe-Einrichtung 500 aus. Wenn andererseits Daten von der Eingabe/Ausgabe-Einrichtung 500
zum Speicher 400 übertragen werden, gibt die Lese/Schreib-Steuerung 14 ein
aktives Eingabe/Ausgabe-Lesesteuerungssignal I/OR 108 und ein aktives Speicher-
Schreibsteuerungssignal MEMW 110 an die Eingabe/Ausgabe-Einrichtung 500
bzw. den Speicher 400 aus.
-
Andererseits liefert die Lese/Schreib-Steuerung 14 das
Inkrementier/Dekrementier-Steuerungssignal 114 an den Datenzähler 10 und den Adreßzähler 12, so
daß der Datenzähler 10 dekrementiert wird und der Adreßzähler 12 inkrementiert
oder dekrementiert wird und dadurch die Adresse 118 dem Speicher 400 und dem
Vergleicher 20 zuführt wird. Auf diese Weise kann eine große Datenmenge direkt
zwischen dem Speicher 400 und der Eingabe/Ausgabe-Einrichtung 500 über den
Datenbus 200 übertragen werden, ohne daß dabei auf die CPU 300
zurückgegriffen werden muß.
-
Im Laufe des DMA-Datentransfers vergleicht der Vergleicher jedes Mal, wenn
der Adreßzähler 12 aktualisiert (d.h. inkrementiert oder dekrementiert) wird, den
Inhalt des Adreßzählers 12 mit dem Inhalt des Sprungstart-Adreßregisters 16 bzw.
dem Inhalt des Sprungende-Adreßregisters 18.
-
Wenn der Inhalt des Adreßzählers 12 mit dem Inhalt des
Sprungstart-Adreßregisters 16 übereinstimmt, erzeugt der Vergleicher 20 das erste
Übereinstim
mungssignal 120. Infolge des ersten Übereinstimmungssignals 120 führt die
Lese/Schreib-Steuerung 14 lediglich das Aktualisieren des Adreßzählers 12 durch.
-
Nach der Aktualisierung des Adreßzählers 12 vergleicht der Vergleicher 20
erneut den Inhalt des Adreßzählers 12 mit dem Inhalt des Sprungstart-
Adreßregisters 16 bzw. dem Inhalt des Sprungende-Adreßregisters 18. Wenn der
Inhalt des Adreßzählers 12 weder mit dem Inhalt des Sprungstart-Adreßregisters
16 noch dem Inhalt des Sprungende-Adreßregisters 18 übereinstimmt, erzeugt der
Vergleicher weder das erste Übereinstimmungssignal 120 noch das zweite
Übereinstimmungssignal 122. Bei dieser Lage führt die Lese/Schreib-Steuerung 14 nur
das Aktualisieren des Adreßzählers 12 durch. Nachdem der Inhalt des
Adreßzählers 12 mit dem Inhalt des Sprungstart-Adreßregisters 16 übereinstimmt, aber
bevor der Inhalt des Adreßzählers 12 mit dem Inhalt des Sprungende-Adreßregisters
18 übereinstimmt, wird folglich nur der Adreßzähler 12 wiederholt aktualisiert, und
der Datenzähler 10 wird nicht aktualisiert und der Datentransfer zwischen dem
Speicher 400 und der Eingabe/Ausgabe-Einrichtung 500 wird gestoppt oder
ausgesetzt.
-
Wenn der Inhalt des Adreßregisters 12 mit dem Inhalt des Sprungende-
Adreßregisters 18 übereinstimmt, erzeugt der Vergleicher 20 das zweite
Übereinstimmungssignal 122. Infolge des zweiten Übereinstimmungssignals 122 startet die
Lese/Schreib-Steuerung 14 erneut die Lese/Schreib-Steueroperation, so daß der
Datentransfer zwischen dem Speicher 400 und der Eingabe/Ausgabe-Einrichtung
500 erneut durchgeführt wird und sowohl der Datenzähler 10 als auch der
Adreßzähler 12 aktualisiert werden.
-
Wenn der Inhalt des Datenzählers 10 Null wird, erzeugt der Datenzähler 10
das Datentransfer-Stoppsignal 116 und führt es der Lese/Schreib-Steuerung 14 zu,
so daß die Lese/Schreib-Steuerung das Speicher-Lesesteuerungssignal MEMR
112 und das Eingabe/Ausgabe-Schreibsteuerungssignal I/OW 106 oder das
Eingabe/Ausgabe-Lesesteuerungssignal I/OR 108 und das
Speicher-Schreibsteuer
ungssignal MEMW 110 deaktiviert. Auf diese Weise ist der Datentransfer
abgeschlossen.
-
Es wird nun auf Fig. 2 Bezug genommen. Es wird ein Blockdiagramm einer
zweiten Ausführungsform der erfindungsgemäßen DMA-Steuerung gezeigt. In Fig.
2 sind Bestandteile, die denen aus Fig. 1 ähnlich sind, mit denselben Bezugsziffern
bezeichnet, und ihre Erklärung wird zur Vereinfachung der Beschreibung
ausgelassen.
-
Im zweiten Ausführungsbeispiel wird das Sprungende-Adreßregister 18
ausgelassen, und ein Datentransfer-Neustart-Adreßregister 22 ist vorhanden, das das
erste Übereinstimmungssignal 120 empfängt und eine
Datentransfer-Neustartadresse über einen Bus 124 in den Adreßzähler 12 infolge des ersten
Übereinstimmungssignals 120 schreibt.
-
Nun wird nur die Operation der zweiten Ausführungsform, die sich von der
ersten Ausführungsform unterscheidet, beschrieben.
-
Jedes Mal, wenn der Adreßzähler 12 aktualisiert (d.h. inkrementiert oder
dekrementiert) wird, vergleicht der Vergleicher 20 den Inhalt des Adreßzählers 12 mit
dem Inhalt des Sprungstart-Adreßregisters 16. Wenn der Inhalt des Adreßzählers
12 mit dem Inhalt des Sprungstart-Adreßregisters 16 übereinstimmt, erzeugt der
Vergleicher 20 das erste Übereinstimmungssignal 120. Infolge des ersten
Übereinstimmungssignal 120 schreibt das Datentransfer-Neustart-Adreßregister 22 die
Datentransfer-Neustartadresse in den Adreßzähler 12, so daß der
neubeschriebene Inhalt des Adreßzählers 12 über den Bus 118 und den Adreßbus 202 dem
Speicher 400 zugeführt wird. Andererseits fährt die Lese/Schreib-Steuerung 14,
ohne den Sprung der Adresse zu erfassen, mit der Aktualisierung des
Datenzählers 10 und des Adreßzählers 12 sowie der Steuerung des Speichers 400 und der
Eingabe/Ausgabe-Einrichtung 500 fort, so daß der Datentransfer ohne
Unterbrechung durchgeführt wird.
-
Wie aus der obigen Beschreibung hervorgeht, wird ein Sprungbereich vorab
in den Registern in der DMA-Steuerung gesetzt, und der Datentransfer wird
durchgeführt, indem der Sprungbereich im Speicher ohne Rückgriff auf die CPU
umgangen wird. Es ist daher möglich, Daten aus der Eingabe/Ausgabe-Steuerung in den
Speicher zu schreiben, indem der Sprungbereich im Speicher umgangen wird ohne
Mitwirken der CPU. Außerdem ist es möglich, Daten aus dem Speicher in die
Eingabe/Ausgabe-Einrichtung einzulesen, indem der Sprungbereich im Speicher
umgangen wird ohne Mitwirken der CPU. Dementsprechend kann eine zusätzliche
Belastung der CPU während des DMA-Datentransfers ausgeschlossen werden.
-
Die Erfindung ist nun unter Bezugnahme auf spezifische Ausführungsformen
gezeigt und beschrieben worden. Es sollte jedoch beachtet werden, daß die
vorliegende Erfindung keinesfalls auf die Details der veranschaulichten
Ausführungsformen beschränkt ist, sondern daß Veränderungen und Modifikationen innerhalb des
Schutzumfangs der nachfolgenden Ansprüche gemacht werden können.