-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft das Definieren virtueller DMA-Register
in einem Speicheradreßraum,
um den Status von DMA-Übertragungen zu
steuern und zu überwachen.
-
ALLGEMEINER STAND DER TECHNIK
-
Verschiedene
Computersystemarchitekturen haben eine Anzahl von Ansätzen angewendet
und Versuche unternommen, Datenblöcke zwischen Vorrichtungen
(einschließlich
Speichervorrichtungen, I/O-Vorrichtungen usw.) innerhalb eines Computersystems über Busse
effizient zu übertragen.
Einer der einfachsten Ansätze
bestand darin, der CPU (zentrale Verarbeitungseinheit) zu ermöglichen,
einen Datenblock aus einer Vorrichtung zu lesen und dann den Datenblock
in eine andere Vorrichtung zu schreiben. Allerdings wird diese Aufgabe
oft als eine für
andere alternative Mechanismen besser geeignete Aufgabe betrachtet,
so daß sich
die CPU mehr der Ausführung
komplexerer Berechnungen und anderer Rechenaufgaben widmen kann.
-
Ein
weit verbreiteter alternativer Mechanismus ist die Hinzufügung einer
DMA (direkter Speicherzugriff)-Steuerung zu solch einem Computersystem,
um die Bewegung von Datenblöcken
zwischen dem Systemspeicher des Computersystems und anderen Vorrichtungen
zu übernehmen.
In der Regel sind solche DMA-Steuerungen programmiert, um eine spezifische Übertragung
eines Datenblocks auszuführen,
indem die CPU die Parameter der Übertragung
direkt in Register innerhalb der DMA-Steuerung schreibt. Während die Übertragung eines
Datenblocks ausgeführt
wird, ist die CPU in der Regel programmiert, um eines oder mehrere
der Register innerhalb der DMA-Steuerung abzufragen, um den Status
der Übertragung
abzufragen.
-
Jedoch
hat die Verwendung solch einer DMA-Steuerung Nachteile. Wenngleich
die CPU von der Last befreit wird, die Übertragung eines Datenblocks
tatsächlich
auszuführen,
wird es dennoch oft als uneffizient betrachtet, daß die CPU-Abfrageregister
innerhalb der DMA-Steuerung
den Status der Übertragung
abfragen. Auch können
in vielen Umsetzungen von Computersystemen Schreibvorgänge, die
von der CPU in Programmregister innerhalb der DMA-Steuerung ausgeführt werden,
und Lesevorgänge,
die von der CPU zum Abfragen eines Status aus dem Register innerhalb
der DMA-Steuerung ausgeführt
werden, länger
dauern als für
wünschenswert erachtet
wird.
-
Ein
anderer weit verbreiteter alternativer Mechanismus ist die Aufnahme
von Bus-Mastering-Fähigkeiten
in verschiedene I/O-Vorrichtungen innerhalb eines Computersystems,
so daß die
Vorrichtungen selbst dazu in der Lage sind, die Übertragung von Datenblöcken selbständig auszuführen. In
der Regel sind solche Übertragungen
derart programmiert, daß sie
stattfinden, indem die CPU Parameter der Übertragung direkt in Register
innerhalb solch einer Bus-Mastering-Vorrichtung
schreibt. Während also
die Übertragung
eines Datenblocks ausgeführt wird,
fragt die CPU eines oder mehrere der Register innerhalb der Bus-Mastering-Vorrichtung
ab, um den Status der Übertragung
abzufragen.
-
Jedoch
hat solch eine Verwendung einer Bus-Mastering-Vorrichtung Nachteile.
Wenngleich die CPU von der Last befreit wird, die Übertragung
eines Datenblocks tatsächlich
auszuführen,
können Schreibvorgänge, die
von der CPU in Programmregister innerhalb der DMA-Steuerung ausgeführt werden,
und Lesevorgänge,
die von der CPU zum Abfragen eines Status aus Registern innerhalb
der DMA-Steuerung ausgeführt
werden, länger
dauern als für
wünschenswert
erachtet wird. Auch können Lesevorgänge, die
von einer Bus-Mastering-Vorrichtung insbesondere zum Lesen eines
Datenblocks aus dem Systemspeicher ausgeführt werden, länger dauern
als für
wünschenswert
erachtet wird.
-
Das
Dokument
US 6 023 738
A offenbart ein Verfahren zum Übertragen von Daten an I/O-Vorrichtungen, wobei
ermöglicht
wird, daß eine
sehr große Datenmenge
an eine I/O-Vorrichtung übertragen wird,
ohne die zentrale Verarbeitungseinheit zu benutzen und ohne daß der Prozessor
den Raum, der in dem FIO-Eingabepuffer verfügbar ist, lesen muß, wodurch
die Übertragungsgeschwindigkeit
bedeutend erhöht
wird. Um diese Ergebnisse zu erreichen, offenbart das Dokument des
Standes der Technik, daß ein
Anwendungsprogramm einen ersten großen Bereich im virtuellen Speicher
als einen Übertragungspuffer
definiert und ein zweiter kleiner Bereich im virtuellen Speicher
Mitteilungen über
den Status einer Übertragung
aufweist. Außerdem
werden nach dem Festlegen des ersten Bereichs und des zweiten Bereichs
Befehle zum Übertragen
von Daten bekanntermaßen
an die DMA-Maschine gesendet und Übertragungsstatus werden aus
Speicherstellen gelesen. Genauer gesagt, nachdem der erste und der zweite
Bereich im Speicher geschaffen worden sind, reicht es zum Ausführen einer Übertragung
aus, daß das
Anwendungsprogramm die Datensequenz in den Puffer schreibt und den
Versatz und die Länge
der zu übertragenden
Daten an die DMA-Maschine überträgt. Nachdem
folglich die Basisadresse des Bereichs in dem Speicher zum Halten
der Mitteilung über
den Status jeglicher Übertragung
ge schaffen worden ist, wird die gleiche Basisadresse zur Statusmitteilung
für jede
bestimmte zu übertragende
Datensequenz benutzt.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden
für den
Fachmann angesichts der folgenden ausführlichen Beschreibung ersichtlich
sein. Es zeigen:
-
1 ein
Blockdiagramm von Ausführungsformen,
die ein Computersystem anwenden.
-
2 ein
anderes Blockdiagramm von anderen Ausführungsformen, die ein Computersystem anwenden.
-
3 ein
Blockdiagramm von Ausführungsformen
einer Interaktion zwischen Vorrichtungen, die dabei sind, einen
Datenblock zu übertragen.
-
4 ein
Blockdiagramm von Ausführungsformen
einer Interaktion zwischen Vorrichtungen, die dabei sind, eine Vielzahl
von Datenblöcken
zu übertragen.
-
5 ein
anderes Blockdiagramm von Ausführungsformen
einer Interaktion zwischen Vorrichtungen, die dabei sind, eine Vielzahl
von Datenblöcken
zu übertragen.
-
6 noch
ein anderes Blockdiagramm von Ausführungsformen einer Interaktion
zwischen Vorrichtungen, die dabei sind, eine Vielzahl von Datenblöcken zu übertragen.
-
7 ein
wieder anderes Blockdiagramm von anderen Ausführungsformen, die ein Computersystem
anwenden.
-
8 ein
Flußdiagramm
einer Ausführungsform.
-
9 ein
Flußdiagramm
einer anderen Ausführungsform.
-
10 ein
Flußdiagramm
einer wieder anderen Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In
der folgenden Beschreibung werden zu Zwecken der Erläuterung
zahlreiche Details dargelegt, um ein gründliches Verständnis der
vorliegenden Erfindung bereitzustellen. Jedoch wird für den Fachmann
ersichtlich sein, daß diese
spezifischen Details nicht erforderlich sind, um die vorliegende
Erfindung wie nachstehend beansprucht umzusetzen.
-
Die
Erfindung ist durch die beiliegenden unabhängigen Ansprüche 1, 10
und 13 definiert.
-
Die
vorliegende Erfindung wie nachstehend beansprucht betrifft die Einbindung
einer Unterstützung
zur Verwaltung virtueller Register für eine DMA-Steuerung in Speicherstellen
innerhalb anderer Vorrichtungen eines Computersystems oder anderen ähnlichen
elektronischen Systems. Wenngleich sich die folgende Erläuterung
auf DMA-Steuerungen innerhalb von Computersystemen konzentriert,
wird der Fachmann verstehen, daß die
vorliegende Erfindung wie nachstehend beansprucht als Unterstützung von
elektronischen Systemen mit DMA-Steuerungen oder einer anderen ähnlich zweckbestimmten Logik
zum Bewegen von Datenblöcken
zwischen Vorrichtungen umgesetzt werden kann.
-
1 ist
ein Blockdiagramm von Ausführungsformen,
die ein Computersystem anwenden. Das Computersystem 100 besteht
mindestens teilweise aus der CPU (zentrale Verarbeitungseinheit) 110,
dem Bus 119, der Logik 120, dem Bus 149,
dem Systemspeicher 140, dem Bus 159 und der Vorrichtung 150.
Die CPU 110, der Bus 119, die Logik 120, der
Bus 149 und der Systemspeicher 140 bilden eine Form
von Kern des Computersystems 100, der dazu fähig ist,
maschinenlesbare Befehle auszuführen,
die innerhalb des Systemspeichers 140 und/oder innerhalb
anderer Vorrichtungen des Computersystems 100 gespeichert
sein können.
Allerdings, wie der Fachmann ohne weiteres erkennen wird, handelt
es sich hierbei nur um ein Beispiel vieler möglicher Formen eines Kerns
von Computersystem 100, wobei dieses Computersystem 100 ferner
auch aus anderen Bussen und Vorrichtungen bestehen kann, die nicht
dargestellt sind.
-
In
verschiedenen Ausführungsformen
könnte
die CPU 110 eine beliebige einer Vielzahl von CPU-Arten
sein, einschließlich
einer CPU, die mindestens einen Teil des weithin bekannten und verwendeten „x86"-Befehlssatzes ausführen kann,
der von Intel Corporation, einem Unternehmen aus Santa Clara, Kalifornien,
stammt. Auch könnten
in verschiedenen möglichen
Ausführungsformen
mehr als eine CPU zusammen mit zusätzlichen Bussen und/oder Vorrichtungen vorliegen,
um mehr als eine CPU (nicht dargestellt) zu unterstützen. Die
Logik 120 ist mit der CPU 110 über den Bus 119 verbunden und
führt verschiedene
Funktionen aus, die die Ausführung
von Befehlen von der CPU 110 unterstützen, einschließlich der
Steuerung und Zugangsbereitstellung der CPU 110 zu dem
Systemspeicher 140, mit dem die Logik 120 ferner über den
Bus 149 verbunden ist. Die Logik 120 stellt auch
zu anderen Vorrichtungen, die das Computersystem 100 bilden,
einen Zugang bereit, wie die Vorrichtung 150, mit der die Logik 120 über den
Bus 159 verbunden ist.
-
Dadurch,
daß sie
mit den Bussen 119, 149 und 159 verbunden
ist und der CPU 110 einen Zugang sowohl zu dem Systemspeicher 140 als
auch der Vorrichtung 150 bereitstellt, um Transaktionen
zu ermöglichen,
durch die Adressen, Befehle und Daten übertragen werden, dient die
Logik 120 als eine „Brücke" zwischen diesen
Bussen. In ihrer Funktion als Brücke
stellt die Logik 120 für
das Computersystem 100 auch eine Speichersteuerung 122,
um die Ausführung
von Transaktionen auf Bus 149 zu unterstützen, und
die Busschnittstelle 127 bereit, um die Ausführung von
Transaktionen auf Bus 159 zu unterstützen. Um die CPU 110 teilweise
von der Last der Ausführung
einiger Übertragungen
von Datenblöcken
zu befreien, stellt die Logik 120 ferner die DMA-Steuerung 130 bereit.
-
In
verschiedenen Ausführungsformen
könnte
der Systemspeicher 140 irgendeiner einer Vielfalt von wahlfreien
Zugriffsspeicher (RAM)-Typen sein, einschließlich Fast-Page-Mode-(FPM), Extended-Data-Out-(EDO),
Single-Data-Rate-(SDR) oder Double-Data-Rate-(DDR)-Formen eines synchronen dynamischen
RAM (SDRAM) oder RAM, der die RAMBUSTM-Schnittstelle oder
andere Schnittstellen verwendet. Die Speichersteuerung 122 und
der Bus 149 sind konfiguriert, um die Zeitgabe- und/oder
Protokollanforderungen eines oder mehrer Speichertypen und/oder
Speicherschnittstellen zu unterstützen.
-
In
verschiedenen Ausführungsformen
können
der Bus 159 und/oder andere Busse, die ein Computersystem 100 bilden
können,
gestaltet sein, um sich an die Eigenschaften und/oder Spezifikationen
einer beliebigen einer Vielfalt von weithin bekannten Formen von
Bussen anzupassen, die auf dem Fachgebiet der Computergestaltung "standardisiert" wurden, wie die
erweiterte Industriestandardarchitektur (EISA), Micro-ChannelTM-Architektur (MCA), die periphere Komponentenverbindung (PCI),
PCI-X, PCI Express usw. Die Busschnittstellen 127 und 157 sind
konfiguriert, um die Zeitgabe- und/oder Protokollanforderungen von
Bus 159 zu unterstützen.
-
In
einer Ausführungsform
führt die
CPU 110 eine Reihe von Befehlen aus, die die CPU 110 dazu veranlaßt, die
DMA-Steuerung 130 zu programmieren, um eine Übertragung
eines Datenblocks zwischen Datenspeicherstellen 146 und 148 innerhalb des
Systemspeichers 140 auszuführen. Die CPU 110 schreibt
in ein oder mehrere Parameterregister 133 Werte, die verschiedene
Parameter der auszuführenden Übertragung
angeben, einschließlich,
jedoch nicht beschränkt
auf die Anfangadressen von Datenspeicherstellen 146 und 148,
einen Wert, der die zu übertragende
Datenmenge angibt (das heißt,
die Größe des Datenblocks),
einen Wert, der angibt, daß der
Status der Übertragung
an der Statusspeicherstelle 144 bereitzustellen ist, der
innerhalb des Systemspeichers 140 zugeordnet ist, und einen
Wert in ein oder mehrere Steuerbits, um das Stattfinden der Übertragung
zu bewirken. Die DMA-Steuerung 130 führt dann die Übertragung
aus. Während
der Ausführung
dieser Übertragung
ist die CPU 110 dazu in der Lage, die Statusspeicherstelle 144 ein-
oder mehrmals zu lesen, um zu bestimmen, ob die DMA-Steuerung 130 einen
Wert in die Statusspeicherstelle 144, die angibt, daß die Übertragung
vollendet worden ist, geschrieben hat oder nicht. Da es bei der
Gestaltung von Computersystemen wie dem Computersystem 100 übliche Praxis
ist, einen Pfad mit sehr geringer Latenz zwischen CPUs und Systemspeicher
zu schaffen, ist es wahrscheinlich, daß die CPU 110 dazu
fähig ist,
den Status der Übertragung
wiederholt zu überprüfen, indem
die Statusspeicherstelle 144 innerhalb des Systemspeichers 140 viel
schneller gelesen wird als bei dem Ansatz des Standes der Technik,
bei dem das Lesens aus einem Register innerhalb der DMA-Steuerung 130 stattfindet.
-
In
einer anderen Ausführungsform
führt die CPU 110 eine
Befehlsreihe aus, die die CPU 110 dazu veranlaßt, die
DMA-Steuerung 130 zu programmieren, um eine Übertragung
eines Datenblocks zwischen Datenspeicherstellen 146 und 148 innerhalb des
Systemspeichers 140 auszuführen, indem verschiedene Parameter
der auszuführenden Übertragung
in eine andere Parameterspeicherstelle 143 geschrieben
werden, die innerhalb des Systemspeichers 140 zugeordnet
ist. Solche Parameter könnten einschließen, sind
jedoch nicht beschränkt
auf die Anfangsadressen der Datenspeicherstellen 146 und 148,
einen Wert, der die zu übertragende
Datenmenge angibt, und einen Wert, der angibt, daß der Status der Übertragung
an der Statusspeicherstelle 144 bereitzustellen ist. Die
CPU 110 wird auch dazu veranlaßt, in ein oder mehrere Parameterregister 133 einen
Wert zu schreiben, der die Anfangsadresse einer alternativen Parameterspeicherstelle 143 angibt,
und einen Wert in ein oder mehrere Steuerbits als ein Auslöser, um
zu bewirken, daß die Übertragung
stattfindet. Als Reaktion auf diesen Auslöser führt die DMA-Steuerung 130 dann
die Übertragung
aus. Während
der Ausführung
der Übertragung
ist die CPU 110 dazu in der Lage, die Statusspeicherstelle 144 ein-
oder mehrmals zu lesen, um zu bestimmen, ob die DMA-Steuerung 130 einen
Wert in die Statusspeicherstelle 144, die angibt, daß die Übertragung vollendet
worden ist, geschrieben hat oder nicht.
-
In
einer Variation dieser Ausführungsform
ist die Statusspeicherstelle 144 entweder Teil einer alternativen
Parameterspeicherstelle 143 oder ist an einer Adresse innerhalb
des Systemspeichers 140 zugeordnet, die sich bei einem
vorbestimmten Versatz von der Basisadresse der alternativen Parameterspeicherstellen 143 befindet.
In einer anderen Variation dieser Ausführungsform ist die DMA-Steuerung 130 (entweder über Parameterregister 133 oder eine
alternative Parameterspeicherstelle 143) mit einer Adresse
für die
Statusspeicherstelle 144 separat programmiert.
-
In
wieder anderen Variationen dieser Ausführungsform wird der Status
der Übertragung
in eine alternative Statusspeicherstelle 164 innerhalb
des Vorrichtungsspeichers 160 der Vorrichtung 150 geschrieben
und die DMA-Steuerung 130 wird (entweder über Parameterregister 133 oder
die alternative Parameterspeicherstelle 143) mit der Adresse
für die alternative
Statusspeicherstelle 164 programmiert. Die alternative
Statusspeicherstelle 164 besteht aus einer oder mehreren
Speicherstellen, die innerhalb des Vorrichtungsspeichers 160,
einem Speicherpuffer innerhalb der Vorrichtung 150, der
für einen
beliebigen einer Anzahl möglicher
Zwecke je nach der Natur der Vorrichtung 150 benutzt werden
kann, wie der Fachmann ohne weiteres verstehen wird, zugeordnet sind.
Ein Vorteil des Schreibens des Status der Übertragung in eine alternative
Statusspeicherstelle 164 innerhalb des Vorrichtungsspeichers 160 der
Vorrichtung 150 ist, daß die Vorrichtung 150 auf
solch einen Status als eine Bedingung zur Ausführung einer anderen Aufgabe
warten kann und unerwünschte
Verzögerungen
vermieden werden können,
indem kein Status in die Statusspeicherstelle 144 innerhalb
des Systemspeichers 140 geschrieben wird, aus der der Status
danach an die Vorrichtung 150 übertragen werden müßte. Der
Vorteil kann noch größer sein, wenn
die nachfolgende Statusübertragung
von der Statusspeicherstelle 144 zu der alternativen Statusspeicherstelle 164 erfordert,
daß die
Vorrichtung 150 Bus-Mastering-Fähigkeiten
einsetzt, die die Vorrichtung 150 besitzen kann, um die
Statusspeicherstelle 144 zu lesen. Wie der Fachmann verstehen
wird, kann die Ausführung
eines Lesevorgangs über
einen Bus wie den Bus 159 bis zur Vollendung länger dauern
als ein Schreibvorgang und kann einen Bus auch zeitweise sperren.
Dies beruht darauf, daß ein
Lesevorgang zum Lesen eines Datenstücks wie des Status der Übertragung
zuerst die Ausführung
einer Datenanfrage über
einen Bus und danach eine Wartezeit erfordert, bis die angeforderten
Daten bereitgestellt werden können.
In Abhängigkeit
der Gestaltung von Bus 159 können Kohärenz- und Ordnungsregeln von
Lese- und Schreibvorgängen erfordern,
daß der Bus 159 nicht
benutzt wird oder daß mindestens
die Vorrichtung 150 mindestens keinen untergeordneten Satz
anderer Übertragungen über Bus 159 ausführt, bis
der Status empfangen wird. Folglich können sowohl der Systemspeicher 140 als
auch die Vorrichtung 150 sowie die beiden Busse 149 und 159 in
Abhängigkeit
von den Umständen
zum Zeitpunkt des Beginns eines Lesevorgangs mit der Beantwortung und
Vollendung eines Lesevorgangs vorübergehend monopolisiert werden,
um den Status aus der Statusspeicherstelle 144 zu lesen.
Wenn der Status jedoch direkt von der DMA-Steuerung 130 in
die Vorrichtung 150 geschrieben wird, ist es möglich, sich
die weniger strengen Anforderungen, denen Schreibvorgänge gewöhnlich unterliegen,
zu Nutze zu machen, um die Kohärenz
und Ordnung derart zu bewahren, daß der Schreibvorgang in den
Schreibpuffer 128 der Busschnittstelle 127 gesendet
und dann später über den
Bus 159 an die Vorrichtung 150 übertragen
werden kann, wenn möglich
mit geringerer Wahrscheinlichkeit, daß der Bus 159 gesperrt
wird.
-
2 ist
ein anderes Blockdiagramm von Ausführungsformen, die ein Computersystem
anwenden. Die Bezugszeichen in 2 sollen
im Allgemeinen den Bezugszeichen in 1 entsprechen und ähnlich wie
das Computersystem 100 aus 1 besteht
das Computersystem 200 mindestens teilweise aus der CPU 210,
dem Bus 219, der Logik 220, dem Bus 249,
dem Systemspeicher 240, dem Bus 259 und der Vorrichtung 250.
Wie bei dem Computersystem 100 wird der Fachmann ohne weiteres
erkennen, daß es
sich nur um ein Beispiel vieler möglicher Formen eines Kerns
von Computersystem 200 handelt und daß das Computersystem 200 ferner
auch aus anderen Bussen und Vorrichtungen bestehen kann, die nicht
dargestellt sind. Die Logik 220 ist mit der CPU 210 über den
Bus 219 verbunden und führt verschiedene
Funktionen aus, die die Ausführung von
Befehlen von der CPU 210 unterstützen, einschließlich der
Steuerung und Zugangsbereitstellung der CPU 210 zu dem
Systemspeicher 240, mit dem die Logik 220 ferner über die
Speichersteuerung 222 innerhalb der Logik 220 und
Bus 249 verbunden ist. Die Logik 220 stellt auch
zu anderen Vorrichtungen, die das Computersystem 200 bilden,
einen Zugang bereit, wie zu der Vorrichtung 250, mit der
die Logik 220 über
die Busschnittstelle 227 innerhalb der Logik 220 und
Bus 259 verbunden ist.
-
In
einer Ausführungsform
führt die
CPU 210 eine Befehlsreihe (die möglicherweise innerhalb des Systemspeichers 240 gespeichert
ist) aus, die die CPU 210 dazu veranlaßt, die DMA-Steuerung 230 zu programmieren,
um eine Übertragung
eines Datenblocks zwischen einer Datenspeicherstelle 246 innerhalb
des Systemspeichers 240 und einer Datenspeicherstelle 266 innerhalb
der Vorrichtung 250 auszuführen. Die CPU 210 schreibt
verschiedene Parameter der auszuführenden Übertragung in Speicherstellen
innerhalb der Parameterspeicherstelle 243, die innerhalb
des Systemspeichers 240 zugeordnet ist. Solche Parameter
könnten
einschließen,
sind jedoch nicht beschränkt
auf die Anfangsadressen der Datenspeicherstellen 246 und 266,
einen Wert, der die zu übertragende
Datenmenge angibt, und einen Wert, der angibt, daß der Status
der Übertragung
an der Statusspeicherstelle 244 bereitzustellen ist, die
innerhalb des Systemspeichers 240 zugeordnet ist. Die CPU 210 wird
auch dazu veranlaßt,
in ein oder mehrere Parameterregister 233 innerhalb der
Vorrichtung 250 einen Wert zu schreiben, der die Anfangsadresse
der Parameterspeicherstelle 243 angibt, und einen Wert
in ein oder mehrere Steuerbits als ein Auslöser, um zu bewirken, daß die Übertragung
stattfindet. Die DMA-Steuerung 230 führt dann die Übertragung
als Reaktion auf den Auslöser
aus. Während
der Ausführung
der Übertragung
ist die CPU 210 dazu in der Lage, die Statusspeicherstelle 244 ein-
oder mehrmals zu lesen, um zu bestimmen, ob die DMA-Steuerung 230 einen
Wert in die Statusspeicherstelle 244, die angibt, daß die Übertragung vollendet
worden ist, geschrieben hat oder nicht.
-
In
einer Variation dieser Ausführungsform
ist die Statusspeicherstelle 244 Teil der Parameterspeicherstelle 243 oder
wird an einer Adresse innerhalb des Systemspeichers 240 zugeordnet,
die sich bei einem vorbestimmten Versatz von der Basisadresse der
Parameterspeicherstelle 243 befindet. In einer anderen
Variation dieser Ausführungsform
wird die DMA-Steuerung 230 (entweder innerhalb der Parameterregister 233 oder
Parameterspeicherstelle 243) mit einer Adresse für die Statusspeicherstelle 244 separat
programmiert. In noch einer anderen Variation dieser Ausführungsform
wird der Status der Übertragung
in die alternative Statusspeicherstelle 264 innerhalb des
Vorrichtungsspeichers 260 der Vorrichtung 250 geschrieben
und die DMA-Steuerung 230 wird
mit der Adresse für
die alternative Statusspeicherstelle 264 programmiert,
wodurch ermöglicht wird,
daß die
Vorrichtung 250 gegebenenfalls schneller mit dem Status
der Übertragung
bereitgestellt wird.
-
In
einer anderen Ausführungsform
führt die CPU 210 eine
Befehlsreihe aus, die die CPU 210 dazu veranlaßt, die
DMA-Steuerung 230 zu programmieren, um eine Übertragung
eines Datenblocks zwischen Datenspeicherstellen 246 und 266 auszuführen, indem
verschiedene Parameter der auszuführenden Übertragung in eine alternative
Parameterspeicherstelle 263 geschrieben werden, die innerhalb
des Vorrichtungsspeichers 260 der Vorrichtung 250 zugeordnet
ist. Wie vorher könnten
solche Parameter einschließen,
sind jedoch nicht beschränkt
auf die Anfangsadressen der Datenspeicherstellen 246 und 266,
einen Wert, der die zu übertragende
Datenmenge angibt, und einen Wert, der angibt, daß der Status
der Übertragung
an der alternativen Status speicherstelle 264 bereitzustellen
ist. Die CPU 210 wird auch dazu veranlaßt, in ein oder mehrere Parameterregister 233 einen
Wert zu schreiben, der die Anfangsadresse der alternativen Parameterspeicherstellen 263 angibt,
und einen Wert in ein oder mehrere Steuerbits als ein Auslöser, um
zu bewirken, daß die Übertragung
stattfindet. Die DMA-Steuerung 230 führt dann die Übertragung
als Reaktion auf den Auslöser
aus. Während
dieser Ausführung
der Übertragung
ist entweder die Vorrichtung 250 oder die CPU 210 dazu
in der Lage, die Statusspeicherstelle 264 ein- oder mehrmals zu
lesen, um zu bestimmen, ob die DMA-Steuerung 230 einen
Wert in die Statusspeicherstelle 264, die angibt, daß die Übertragung vollendet
worden ist, geschrieben hat oder nicht.
-
3 ist
ein Blockdiagramm von Ausführungsformen
von Interaktionen zwischen Vorrichtungen, die dabei sind, einen
Datenblock zu übertragen. Genauer
stellt 3 die Interaktion der Steuervorrichtung 310,
DMA-Steuerung 330 und einer oder mehrer Speichervorrichtungen
und/oder Speicherbereitstellungsvorrichtungen bei der Ausführung der Übertragung
eines Datenblocks von der Quellendatenspeicherstelle 346 zu
der Zieldatenspeicherstelle 348 dar. Die Steuervorrichtung 310 könnte eine
CPU (entweder eines Computersystems oder eines anderen elektronischen
Systems), eine Mikrosteuerung, ein Sequenzer usw. sein, die bzw.
der Befehle 312 ausführen
kann, um das Stattfinden einer Übertragung
eines Datenblocks zu bewirken, indem die Steuervorrichtung 310 dazu
veranlaßt
wird, Register innerhalb der DMA-Steuerung 330 zu programmieren,
mit der die Steuervorrichtung 310 verbunden ist. Der adressierbare
Raum 340 ist eine Abbildung von Adreßstellen, auf die sowohl von
der Steuervorrichtung 310 als auch von der DMA-Steuerung 330 zugegriffen
werden kann.
-
In
einigen Ausführungsformen
kann der adressierbare Raum 340 vollständig aus einer einzigen Systemspeichervorrichtung
(nicht dargestellt) bestehen, mit der sowohl die Steuervorrichtung 310 als
auch die DMA-Steuerung 330 verbunden ist. Solche Ausführungsformen
können
weitgehend mit Ausführungsformen
aus 1 übereinstimmen,
wobei sich sowohl die Quellendatenspeicherstelle 346 als auch
die Zieldatenspeicherstelle 348 innerhalb einer Systemspeichervorrichtung
wie dem Systemspeicher 140 befinden, in ähnlicher
Weise wie die Datenspeicherstellen 146 und 148.
In anderen Ausführungsformen
kann der adressierbare Raum 340 aus einer Kombination von
Speichervorrichtungen und/oder Puffer innerhalb anderer Vorrichtungen
bestehen, mit denen sowohl die Steuervorrichtung 310 als
auch die DMA-Steuerung 330 verbunden sind. Solche Ausführungsformen
können
weitgehend mit Ausführungsformen
aus 2 übereinstimmen,
wobei die Quellendatenspeicherstelle 346 und die Zieldatenspeicher stelle 348 innerhalb
unterschiedlicher Vorrichtungen zugeordnet sind, in ähnlicher
Weise wie die Datenspeicherstelle 246 innerhalb des Systemspeichers 240 zugeordnet
ist und die Datenspeicherstelle 266 innerhalb des Vorrichtungsspeichers 260 der Vorrichtung 250 zugeordnet
ist. Genauer kann zum Beispiel die Quellendatenspeicherstelle 346 innerhalb
eines Systemspeichers angeordnet sein und die Zieldatenspeicherstelle 348 kann
innerhalb eines Puffers in einer anderen Vorrichtung angeordnet sein.
-
Die
Steuervorrichtung 310 wird (als Folge der Ausführung von
Befehlen 312) dazu veranlaßt, die Ausführung einer Übertragung
eines Datenblocks von der Quellendatenspeicherstelle 346 zu
der Zieldatenspeicherstelle 348 vorzubreiten, indem sie
die Basisadressen sowohl der Quellendatenspeicherstelle 346 als
auch der Zieldatenspeicherstelle 348 zusammen mit der zu übertragenden
Datenmenge und der Adresse der Statusspeicherstelle 344 in
die Parameterspeicherstelle 343 schreibt. Die Steuervorrichtung 310 schreibt
auch die Basisadresse der Parameterspeicherstelle 343 in
Parameterregister 333 innerhalb der DMA-Steuerung 330 zusammen
mit einem oder mehreren Bits, um die DMA-Steuerung 330 zur
Ausführung
der Datenübertragung
auszulösen.
-
Als
Reaktion auf diesen Auslöser
greift die DMA-Steuerung 330 auf die Parameterspeicherstelle 343 an
der Basisadresse zu, die in die Parameterregister 333 programmiert
worden ist, um die Basisadressen sowohl der Quellendatenspeicherstelle 346 als
auch der Zieldatenspeicherstelle 348, die zu übertragende
Datenmenge und die Basisadresse der Statusspeicherstelle 344 zu
erhalten. Die DMA-Steuerung 330 führt die Übertragung eines Datenblocks von
der Quellendatenspeicherstelle 346 an die Zieldatenspeicherstelle 348 aus
und schreibt den Status der Übertragung
in die Statusspeicherstelle 344. Die Steuervorrichtung 310 liest
den Status der Übertragung
aus der Statusspeicherstelle 344, um zu bestimmen, ob die
DMA-Steuerung 330 einen Wert, der angibt, daß die Datenübertragung
vollendet worden ist, in die Statusspeicherstelle 344 geschrieben
hat oder nicht.
-
4 ist
ein Blockdiagramm von Ausführungsformen
von Interaktionen zwischen Vorrichtungen, die dabei sind, eine Vielzahl
von Datenblöcken zu übertragen.
Spezifisch stellt 4 die Interaktion von Steuervorrichtung 410,
DMA-Steuerung 430 und einer oder mehrerer Speichervorrichtungen
und/oder Speicherbereitstellungsvorrichtungen bei der Ausführung der Übertragung
eines Datenblocks von der Quellendatenspeicherstelle 446a an
die Zieldatenspeicherstelle 448a und danach die Übertragung
eines anderen Datenblocks von der Quellendatenspeicherstelle 446b an
die Zieldatenspeicherstelle 448b dar. Die Bezugseichen
in 4 sollen im All gemeinen den Bezugszeichen in 3 entsprechen
und ähnlich
wie die Steuervorrichtung 310 aus 3 könnte die
Steuervorrichtung 410 eine CPU (entweder eines Computersystems
oder eines anderen elektronischen Systems), Mikrosteuerung, Sequenzer
usw. sein, die bzw. der Befehle 412 ausführen kann,
um das Stattfinden der Übertragung
von Datenblöcken
zu bewirken, indem Register innerhalb der DMA-Steuerung 430 programmiert
werden, mit der die Steuervorrichtung 410 verbunden ist.
Der adressierbare Raum 440 ist eine Abbildung von Adreßstellen,
auf die sowohl von der Steuervorrichtung 410 als auch von
der DMA-Steuerung 430 zugegriffen werden kann.
-
In
einigen Ausführungsformen
kann der adressierbare Raum 440 vollständig aus einer einzigen Systemspeichervorrichtung
(nicht dargestellt) bestehen, mit der sowohl die Steuervorrichtung 410 als
auch die DMA-Steuerung 430 verbunden ist. In anderen Ausführungsformen
kann der adressierbare Raum 440 aus einer Kombination von
Speichervorrichtungen und/oder Puffer innerhalb anderer Vorrichtungen
bestehen, mit denen sowohl die Steuervorrichtung 410 als
auch die DMA-Steuerung 430 verbunden sind. Zum Beispiel
können
sowohl die Quellendatenspeicherstelle 446a als auch die
Zieldatenspeicherstelle 448b innerhalb eines Systemspeichers
angeordnet sein und sowohl die Quellendatenspeicherstelle 446b als
auch die Zieldatenspeicherstelle 448a können innerhalb eines Puffer
in einer anderen Vorrichtung angeordnet sein.
-
Die
Steuervorrichtung 410 wird (als Folge der Ausführung von
Befehlen 412) dazu veranlaßt, die Ausführung einer
Vielzahl von Übertragungen von
Datenblöcken
vorzubreiten, indem sie die Basisadressen von Quellendatenspeicherstellen 446a und 446b und
Zieldatenspeicherstellen 448a und 448b zusammen
mit entsprechenden zu übertragenden Datenmengen
und entsprechenden Adressen von Statusspeicherstellen 444a und 444b in
entsprechende Parameterspeicherstellen 443a und 443b schreibt.
Die Steuervorrichtung 410 schreibt auch die Basisadresse
der Parameterspeicherstelle 443a in Parameterregister 433 innerhalb
der DMA-Steuerung 430 zusammen mit einem oder mehreren
Bits, um die DMA-Steuerung 430 zum Beginn der Übertragung von
Datenblöcken
auszulösen.
-
Als
Reaktion auf diesen Auslöser
greift die DMA-Steuerung 430 auf die Parameterspeicherstelle 443a an
der Basisadresse zu, die in die Parameterregister 433 programmiert
worden ist, um die Basisadressen sowohl der Quellendatenspeicherstelle 446a als
auch der Zieldatenspeicherstelle 448a, die zu übertragende
Datenmenge und die Basisadresse der Statusspeicherstelle 444a zu
erhalten. Die DMA-Steuerung 430 führt die Übertragung eines Datenblocks
von der Quellendatenspeicherstelle 446a an die Zieldatenspeicherstelle 448a aus
und schreibt den Status der Übertragung
in die Statusspeicherstelle 444a. Die DMA-Steuerung 430 greift
dann auf die Parameterspeicherstelle 443b zu, um die Basisadressen
sowohl der Quellendatenspeicherstelle 446b als auch der
Zieldatenspeicherstelle 448b, die zu übertragende Datenmenge und
die Basisadresse der Statusspeicherstelle 444b zu erhalten.
Die DMA-Steuerung 430 führt
dann die Übertragung
eines Datenblocks von der Quellendatenspeicherstelle 446b an
die Zieldatenspeicherstelle 448b aus und schreibt den Status
der Übertragung
in die Statusspeicherstelle 444b. Die Steuervorrichtung 410 liest den
Status der Übertragungen
aus den Statusspeicherstellen 444a und 444b, um
zu bestimmen, ob die DMA-Steuerung 430 einen Wert, der
angibt, daß die Datenübertragungen
vollendet worden sind, in die Statusspeicherstelle 444a und 444b geschrieben
hat oder nicht.
-
In
einer Ausführungsform
dient die Basisadresse der Parameterspeicherstelle 443a,
die in die Parameterregister 433 geschrieben worden ist,
als der Zeiger auf die Basis einer oder mehrerer Parameterspeicherstellen
(wie die Parameterspeicherstelle 443a), die an vorbestimmten
Intervallen (wobei die Länge
der Intervalle entweder in die DMA-Steuerung 430 programmiert
oder darin festverdrahtet ist) in einer Kette derart positioniert
sind, daß die
DMA-Steuerung 430 nur die Basisadresse der ersten Parameterspeicherstelle
in der Kette benötigt
und die DMA-Steuerung 430 wiederholt
durch die Kette gehen kann, bis die letzte Parameterspeicherstelle
mit Parametern für
eine Übertragung
eines Datenblocks gefunden wird. In solch einer Ausführungsform
kann die Steuervorrichtung 410 auch einen Wert in die Parameterregister 433 schreiben,
der die Menge von Parameterspeicherstellen in solch einer Kette
angibt. Allerdings kann in einer anderen Ausführungsform jede Parameterspeicherstelle
die Basisadresse der nächsten
Parameterspeicherstelle in einer Kette von Parameterspeicherstellen
bereitstellen, wodurch die Notwendigkeit beseitigt wird, daß jede Parameterspeicherstelle
in einer Kette von Parameterspeicherstellen an vorbestimmten Intervallen
innerhalb des adressierbaren Raums 440 angeordnet ist.
In solch einer Ausführungsform
kann die letzte Parameterspeicherstelle in solch einer Kette anstatt
einer Basisadresse einen Wert bereitstellen, der angibt, daß die letzte
Parameterspeicherstelle in der Kette erreicht worden ist.
-
5 ist
ein anderes Blockdiagramm von Ausführungsformen von Interaktionen
zwischen Vorrichtungen, die dabei sind, eine Vielzahl von Datenblöcken zu übertragen.
Genauer stellt 5 die Interaktion einer DMA-Steuerung
und einer oder mehrerer Speichervorrichtungen und/oder Speicherbereitstellungsvorrichtungen
bei der Ausführung
der Übertragung
einer Vielzahl von Datenblöcken
dar (die Datenblöcke
sind aus Klarheitsgründen
nicht dargestellt). Die Bezugszeichen in 5 sollen
im Allgemeinen den Bezugszeichen in 4 entsprechen
und ähnlich
wie in 4 ist der adressierbare Raum 540 eine
Abbildung von Adreßstellen,
die sowohl für
eine Steuervorrichtung (nicht dargestellt) als auch die DMA-Steuerung 530 zugänglich sind.
-
Ähnlich wie
in 4 sind eine Vielzahl von Parameterspeicherstellen
(543a bis 543d) innerhalb des adressierbaren Raums 540 zugeordnet
worden und ähnlich
der ausführlichen
Erläuterung
bezüglich 4 greift
die DMA-Steuerung 530 auf jede der Parameterspeicherstellen 543a bis 543d zu,
um Basisadressen für
Quellendaten- und Zieldatenspeicherstellen zusammen mit zu übertragenden
Datenmengen und entsprechenden Basisadressen für die Statusspeicherstellen
zu erhalten, in welche Werte geschrieben werden sollen, die den
Status jeder Übertragung
angeben. Im Gegensatz zu den im Hinblick auf 4 erläuterten
Ausführungsformen
beschreibt 5 jedoch Ausführungsformen,
in denen ausgehend von den Parameterspeicherstellen 543a bis 543d auf
die gleiche Stelle, nämlich
die Statusspeicherstelle 544, als einzige gemeinsame Stelle
gezeigt wird, in welche der Status jeder Übertragung von der DMA-Steuerung 530 zu
schreiben ist. Diese Verwendung einer einzigen Statusspeicherstelle
würde einer
Steuervorrichtung ermöglichen,
den Status einer Vielzahl von Übertragungen
mit wiederholten Zugriffen auf nur eine Stelle mit dem adressierbaren Raum 540 zu überwachen.
In solch einer Ausführungsform
können
die Werte, die von der DMA-Steuerung 530 in die Statusspeicherstelle 544 geschrieben
werden, zusätzlich
eine Form von Identifizierungswert enthalten, der ermöglichen
würde,
daß eine
Steuervorrichtung unterscheidet, welche Übertragungen vollendet worden
sind und/oder welche Übertragung
gegenwärtig
ausgeführt
wird.
-
5 stellt
auch die Verwendung von Parameterregistern 533 dar, um
die Basisadressen sowohl der ersten als auch der letzten Parameterspeicherstelle
zu liefern, um sowohl den Beginn einer oder mehrerer Übertragungen
von Datenblöcken
als auch eine Zählung
der Anzahl existierender Übertragungen
in einer Kette von Übertragungen
auszulösen.
Wie oben erläutert,
können
einige Ausführungsformen
einen vorbestimmten Intervall eines Adreßraums zwischen Basisadressen
anwenden, an dem jede Parameterspeicherstelle innerhalb des adressierbaren
Raums 540 positioniert wäre, und andere Ausführungsformen
können
Zeiger innerhalb jeder Parameterspeicherstelle anwenden, die die
Basisadresse der nächsten
Parameterspeicherstelle in einer Kette von Parameterspeicherstellen
bereitstellen, damit eine Vielzahl entsprechender Übertragungen ausgeführt wird.
-
6 ist
ein wieder anderes Blockdiagramm von Ausführungsformen von Interaktionen
zwischen Vorrichtungen, die dabei sind, eine Vielzahl von Datenblöcken zu übertragen.
Genauer stellt 6 die Interaktion einer DMA-Steuerung
und einer oder mehrerer Speichervorrichtungen und/oder Speicherbereitstellungsvorrichtungen
bei der Ausführung
der Übertragung
einer Vielzahl von Datenblöcken
dar (die Datenblöcke
sind aus Klarheitsgründen
nicht dargestellt). Die Bezugszeichen in 6 sollen
im Allgemeinen den Bezugszeichen in 5 entsprechen
und ähnlich
wie in 5 ist der adressierbare Raum 640 eine
Abbildung von Adreßstellen,
die sowohl für
eine Steuervorrichtung (nicht dargestellt) als auch die DMA-Steuerung 630 zugänglich sind. Ähnlich wie
in 5 sind eine Vielzahl von Parameterspeicherstellen
(643a bis 643c) innerhalb des adressierbaren Raums 640 zugeordnet
worden und ähnlich
der ausführlichen
Erläuterung
bezüglich 5 greift
die DMA-Steuerung 630 auf jede der Parameterspeicherstellen 643a bis 643c zu,
um Basisadressen für
Quellendaten- und Zieldatenspeicherstellen zusammen mit zu übertragenden
Datenmengen und entsprechenden Basisadressen für die Statusspeicherstellen
zu erhalten, in welche Werte geschrieben werden sollen, die den
Status jeder Übertragung
angeben. Im Gegensatz zu den mit Bezug auf 5 erläuterten
Ausführungsformen
stellt 6 jedoch Parameterspeicherstellen 643a bis 643c dar,
die innerhalb des adressierbaren Raums 640 in unregelmäßigen Intervallen
zugeordnet sind, wobei die Zeiger für die nächste Parameterspeicherstelle
innerhalb jeder Parameterspeicherstelle bereitgestellt sind. Bei
der Ausführung
jeder Übertragung
greift die DMA-Steuerung 630 auf den Zeiger auf die nächste Parameterspeicherstelle
zu, um die Basisadresse der nächsten Parameterspeicherstelle
zu erhalten, bis der Zugriff auf den Zeiger innerhalb der Parameterspeicherstelle 643c,
um die Basisadresse einer anderen Parameterspeicherstelle zu erhalten,
einen Zeiger bereitstellt, der anzeigt, daß keine weiteren Parameterspeicherstellen
mit Parametern für
eine Übertragung eines
Datenblocks vorhanden sind, wobei die DMA-Steuerung 630 an
diesem Punkt mit der Ausführung
von Übertragungen
von Datenblöcken
aufhört.
-
6 stellt
auch die Verwendung von Zeigern auf Statusspeicherstellen dar, um
den Status von Datenübertragungen,
der den Parameterspeicherstellen 643a und 643c entspricht,
einer gemeinsamen Statusspeicherstelle (nämlich der Statusspeicherstelle 644ac)
bereitzustellen und um den Status der Datenübertragung, der der Parameterspeicherstelle 643b entspricht,
einer anderen Statusspeicherstelle (nämlich der Statusspeicherstelle 644b)
bereitzustellen. Solch eine Verwendung getrennter und gemeinsamer
Statusspeicherstellen kann sich als vorteilhaft erweisen, wenn eine
Vielzahl von Übertragungen
mit der Ausführung
einer Funktion von einem Com putersystem in Beziehung steht, zu dem
die DMA-Steuerung 630 gehört, während andere Übertragungen
mit der Ausführung
einer anderen Funktion innerhalb des gleichen Computersystems in
Beziehung stehen. Genauer können
die Statusspeicherstellen 644ac und 644b innerhalb
verschiedener Speichervorrichtungen und/oder Vorrichtungen mit Speicherpuffern
zugeordnet sein. Zum Beispiel kann die Statusspeicherstelle 644ac innerhalb
eines Systemspeichers zugeordnet sein, so daß eine CPU den Status der entsprechenden Übertragungen
effizient überwachen
kann, während
die Statusspeicherstelle 644b innerhalb eines Speicherpuffers
zugeordnet sein kann, der von einer anderen Vorrichtung bereitgestellt
wird, so daß die
andere Vorrichtung den Status der entsprechenden Übertragung
effizient überwachen
kann.
-
7 ist
ein anderes Blockdiagramm von Ausführungsformen, die ein Computersystem
anwenden. Die Bezugszeichen in 7 sollen
im Allgemeinen den Bezugszeichen in 2 entsprechen und ähnlich wie
das Computersystem 200 aus 2 besteht
das Computersystem 700 mindestens teilweise aus der CPU 710,
dem Bus 719, der Logik 720, dem Bus 749,
dem Systemspeicher 740, dem Bus 759 und der Vorrichtung 750.
Wie bei dem Computersystem 200 wird der Fachmann ohne weiteres
erkennen, daß es
sich nur um ein Beispiel vieler möglicher Formen eines Kerns
von Computersystem 200 handelt und daß das Computersystem 200 ferner
auch aus anderen Bussen und Vorrichtungen bestehen kann, die nicht
dargestellt sind. Die Logik 720 ist mit der CPU 710 über den
Bus 719 verbunden und führt verschiedene
Funktionen aus, die die CPU 710 unterstützen, einschließlich der
Steuerung und Zugangsbereitstellung der CPU 710 zu dem
Systemspeicher 740, mit dem die Logik 720 ferner über die Speichersteuerung 722 innerhalb
der Logik 720 und Bus 749 verbunden ist. Die Logik 720 stellt
auch zu anderen Vorrichtungen, die das Computersystem 700 bilden,
einen Zugang bereit, wie zu der Vorrichtung 750, mit der
die Logik 720 über
die Busschnittstelle 727 innerhalb der Logik 720 und
Bus 759 verbunden ist.
-
In
einer Ausführungsform
führt die
CPU 710 eine Reihe von Befehlen 712 aus, die innerhalb
des Systemspeichers 740 gespeichert sind und die CPU 710 dazu
veranlassen, die DMA-Steuerung 730 zu programmieren,
um eine Übertragung
eines Datenblocks von der Datenspeicherstelle 746, die
innerhalb des Systemspeichers 740 zugeordnet ist, an die Datenspeicherstelle 766,
die innerhalb des Systemspeichers 760 von Vorrichtung 750 zugeordnet
ist, auszuführen.
Die CPU 710 schreibt verschiedene Parameter der auszuführenden Übertragung
in Speicherstellen innerhalb der DMA-Übertragungs-Parameterspeicherstelle 743,
die innerhalb des Systemspeichers 740 zugeordnet ist. Solche
Parameter könnten
einschließen,
sind jedoch nicht beschränkt auf
die Anfangsadressen der Datenspeicherstellen 746 und 766,
einen Wert, der die zu übertragende Datenmenge
angibt, und einen Wert, der angibt, daß der Status der Übertragung
an der DMA-Übertragungs-Statusspeicherstelle 764 bereitzustellen
ist, die innerhalb des Systemspeichers 760 zugeordnet ist.
Die CPU 710 wird auch dazu veranlaßt, in ein oder mehrere Parameterregister 733 innerhalb
der DMA-Steuerung 730 einen Wert zu schreiben, der die
Anfangsadresse der DMA-Übertragungs-Parameterspeicherstelle 743 angibt,
und einen Wert in ein oder mehrere Steuerbits als ein Auslöser, um
zu bewirken, daß die Übertragung
stattfindet. Die DMA-Steuerung 730 führt dann
die Übertragung
aus. Während
der Ausführung
dieser Übertragung
ist die CPU 710 und/oder die Vorrichtung 750 dazu
in der Lage, die DMA-Übertragungs-Statusspeicherstelle 764 ein-
oder mehrmals zu lesen, um zu bestimmen, ob die DMA-Steuerung 730 einen
Wert in die DMA-Übertragungs-Statusspeicherstelle 764,
die angibt, daß die Übertragung
vollendet worden ist, geschrieben hat oder nicht.
-
Die
CPU 710 führt
auch mehrere Reihen von Befehlen 712 aus, die die CPU 710 dazu
veranlassen, die Vorrichtung 750 zur Ausführung einer Übertragung
eines Datenblocks von der Datenspeicherstelle 768, die
innerhalb des Vorrichtungsspeichers 760 in der Vorrichtung 750 zugeordnet
ist, an die Datenspeicherstelle 748, die innerhalb des
Systemspeichers 740 zugeordnet ist, zu programmieren. Die CPU 710 schreibt
in Vorrichtungsübertragungs-Parameterregister 768 verschiedene
Parameter der auszuführenden Übertragung.
Solche Parameter könnten
einschließen,
sind jedoch nicht beschränkt
auf die Anfangsadressen der Datenspeicherstellen 768 und 748 und
einen Wert, der die zu übertragende
Datenmenge angibt. Die Vorrichtung 750 führt dann
die Übertragung
aus.
-
Die
Verwendung der DMA-Steuerung 730 zum Übertragen von Daten aus dem
Systemspeicher 740 an die Vorrichtung 750 und
die Verwendung von Bus-Mastering-Funktionen von Vorrichtung 750 zum Übertragen
von Daten von der Vorrichtung 750 an den Systemspeicher 740 können bei
der Bewegung von Datenblöcken
effizienter sein als mit der Verwendung entweder nur der DMA-Steuerung 730 oder
nur der Vorrichtung 750 zur Ausführung beider Übertragungen
möglich
wäre. Folglich
wird jede Übertragung als
ein oder mehrere Schreibvorgänge über den
Bus 759 ausgeführt,
wobei die Schreibpuffer 728 und 758, die die entsprechenden
Busschnittstellen 727 und 757 bereitstellen können, zum
Vorteil genutzt werden. Die Verwendung des Schreibpuffers 728 ermöglicht das
Schreiben von Daten von der DMA-Steuerung 730 in den Vorrichtungsspeicher 760 durch
den Bus 759, der derart gepuffert oder „entsendet" wird, daß, während sich ein Teil der Daten
von dem Schreibpuffer 728 durch den Bus 759 zu dem
Vorrichtungsspeicher 760 ausbreitet, die DMA-Steuerung 730 einen
anderen Teil der Daten aus dem Systemspeicher 740 lesen
kann. Dementsprechend ermöglicht
die Verwendung des Schreibpuffers 758 von den Bus-Mastering-Funktionen
von Vorrichtung 750 das Schreiben von Daten von Vorrichtung 750 in
den Systemspeicher 740 durch den Bus 759, der
auch derart „entsendet" wird, daß, während sich
ein Teil der Daten von dem Schreibpuffer 758 durch den
Bus 759 zu dem Systemspeicher 740 ausbreitet,
die Vorrichtung 750 einen anderen Teil der Daten aus dem
Vorrichtungsspeicher 760 lesen kann.
-
In
einigen Ausführungsformen
kann diese Verwendung einer Kombination von DMA-Steuerung 730 und Bus-Mastering-Funktionen
von Vorrichtung 750 dadurch erreicht werden, daß die CPU 710 eine Befehlsreihe
ausführt,
die von einem Vorrichtungstreiber bereitgestellt wird, der zu der
Vorrichtung 750 gehört.
Solch ein Vorrichtungstreiber kann mit einem Betriebssystem interagieren,
das im Laufe des normalen Betriebs des Computers 700 auch
von der CPU 710 ausgeführt
wird, um die Effizienz von Datenübertragungen
zwischen dem Vorrichtungsspeicher 760 innerhalb der Vorrichtung 750 und
dem Systemspeicher 740 zu erhöhen, indem die Verwendung der
Bus-Masterin-Funktionen von Vorrichtung 750 zum Lesen von
Daten aus dem Systemspeicher 740 vermieden wird und die
Verwendung der DMA-Steuerung 730 zum Lesen von Daten aus
dem Vorrichtungsspeicher 760 vermieden wird.
-
8 ist
ein Flußdiagramm
einer Ausführungsform.
Bei Schritt 810 werden die Basisadressen der Quellen- und
Zielstellen der zu übertragenden Daten,
die zu übertragende
Datenmenge und die Basisadresse der Statusstelle, in die der Status
der Übertragung
geschrieben werden soll, von einer DMA-Steuerung über DMA-Register
oder einen anderen Mechanismus bereitgestellt. Der DMA-Steuerung
wird signalisiert, mit der Ausführung
der DMA-Übertragung
zu beginnen und tut dies bei 820. Während der Ausführung der Übertragung
liest eine CPU oder andere Vorrichtung bei 830 den Status
der Übertragung
aus der Statusstelle, in die die DMA-Steuerung den Status schreiben soll.
Wenn die DMA-Steuerung mit Bezug auf Schritt 840 noch keinen
Wert in die Statusstelle geschrieben hat, in die der Status zu schreiben
ist, der die Vollendung der Übertragung
angibt, wird bei 830 ein weiterer Lesevorgang des Status
ausgeführt.
Anderenfalls ist das Ende erreicht, wenn die DMA-Steuerung einen
Wert in die Statusstelle geschrieben hat, in die der Status zu schreiben
ist, der die Vollendung der Übertragung angibt.
-
9 ist
ein Flußdiagramm
einer anderen Ausführungsform
einer Übertragung
eines Datenblocks. Bei 910 werden Übertragungsparameter, die einschließen, jedoch
nicht beschränkt
sind auf die Basisadressen der Datenquellen- und Datenzielstellen
der zu übertragenden
Daten, die zu übertragende Datenmenge
und die Basisadresse der Statusstelle, in die der Status der Übertragung
zu schreiben ist, in eine Parameterstelle innerhalb eines Systemspeichers
oder einer anderen Speichervorrichtung oder Vorrichtung mit einem
adressierbaren Speicher wie einem Puffer geschrieben. Bei 920 wird
die Basisadresse der Parameterstelle, in die die Parameter der Übertragung
bei 910 geschrieben wurden, über DMA-Register oder andere
Mechanismen einer DMA-Steuerung bereitgestellt. Der DMA-Steuerung wird
signalisiert, mit der Ausführung
der DMA-Übertragung
zu beginnen, und tut dies bei 930. Während der Ausführung der Übertragung
liest eine CPU oder andere Vorrichtung bei 940 den Status
der DMA-Übertragung
aus einer adressierbaren Statusstelle, in die die DMA-Steuerung
den Status schreiben soll. Wenn die DMA-Steuerung mit Bezug auf
Schritt 950 noch keinen Wert in die Statusstelle geschrieben
hat, in die der Status zu schreiben ist, der die Vollendung der Übertragung
angibt, wird bei 940 ein weiterer Lesevorgang des Status
ausgeführt. Anderenfalls
ist das Ende erreicht, wenn die DMA-Steuerung einen Wert in die Statusstelle
geschrieben hat, in die der Status zu schreiben ist, der die Vollendung
der Übertragung
angibt.
-
10 ist
ein Flußdiagramm
einer Ausführungsform.
Bei 1010 werden Parametersätze wie Basisadressen von Datenquellen-
und Datenzielstellen, Datenmengen und Basisadressen von Statusstellen in
eine Vielzahl von Parameterstellen für eine Vielzahl von Übertragungen
geschrieben, wobei jede der Vielzahl von Übertragungsstellen jeder der
Vielzahl auszuführender Übertragungen
entspricht. Bei 1020 wird die Basisadresse der ersten der
Vielzahl von Parameterstellen, in die die Parameter der Übertragung geschrieben
wurden, über
DMA-Register oder andere Mechanismen einer DMA-Steuerung bereitgestellt.
Der DMA-Steuerung wird signalisiert, mit der Ausführung der
DMA-Übertragung
zu beginnen und tut dies bei 1030, und wenn diese DMA-Übertragung bei 1030 vollendet
ist, wird der Status, der die Vollendung dieser DMA-Übertragung
anzeigt, bei 1040 in die Statusstelle geschrieben, die
dieser Übertragung entspricht.
Wenn bei 750 ein Anzeichen für eine andere Parameterstelle
mit Parametern für
eine andere, noch auszuführende Übertragung
vorliegt, dann wird diese Übertragung
bei 1030 ausgeführt.
Anderenfalls ist das Ende erreicht, wenn es keine weiteren Parameterstellen
gibt, die noch auszuführenden Übertragungen
entsprechen.
-
In
jeder der oben beschriebenen Ausführungsformen, in denen eine
Vielzahl von Übertragungsparameterstellen
zur Unterstützung
der Ausführung
einer Vielzahl von Übertragungen
zugeordnet sind, kann es Variationen dieser Ausführungsformen geben, in denen
die Übertragungsparameterstellen
in einer kreisförmigen
oder „FIFO"-artigen Weise benutzt
werden kön nen,
in der Parameterstellen als eine Schleife benutzt werden, um für neue Übertragungen
wiederholt und erneut benutzt zu werden. Wenn Übertragungsparameterstellen
Zeiger zum Lenken einer DMA-Steuerung auf die Basisadresse einsetzen,
bei der eine nächste Übertragungsparameterstelle
zu finden ist, können
solche Zeiger derart benutzt werden, daß der Zeiger darauf, was anderenfalls
die „letzte" Übertragungsparameterstelle
hätte sein
können,
darauf zeigt, was anderenfalls die „erste" Übertragungsparameterstelle
hätte sein
können.
Wenn Übertragungsparameterstellen keine
Zeiger einsetzen, sondern darauf angewiesen sind, innerhalb des
adressierbaren Raums einer Speichervorrichtung (oder anderen Vorrichtung,
die Speicherstellen bereitstellt) an vorbestimmten Intervallen positioniert
zu werden, kann eine DMA-Steuerung mit einer Anzeige bereitgestellt
werden, welche Übertragungsparameterstelle
die letzte in der Kette von Übertragungsparameterstellen
ist, so daß die DMA-Steuerung „in Form
einer Schleife" zu
der ersten zurückgehen
kann.
-
Die
Erfindung ist in Verbindung mit der bevorzugten Ausführungsform
beschrieben worden. Es ist klar, daß für den Fachmann angesichts der
vorstehenden Beschreibung zahlreiche Alternativen, Modifikationen,
Variationen und Verwendungen ersichtlich sind. Der Fachmann wird
auch verstehen, daß die vorliegende
Erfindung als Unterstützung
für elektronische
Vorrichtungen umgesetzt werden kann, die keine Computersysteme sind,
wie für
Audio-/Videounterhaltungsvorrichtungen,
Steuervorrichtungen in Fahrzeugen, Geräten, die von einer elektronischen Schaltung
gesteuert werden, usw.