-
GEBIET DER ERFINDUNG
-
Diese
Erfindung betrifft Computersysteme und insbesondere Verfahren und
Vorrichtungen zum Übertragen
von Daten und Prüfinformationen
zwischen Computerhauptspeicher und Datenspeichereinrichtungen unter
Verwendung von direktem Speicherzugriff.
-
HINTERGRUND DER ERFINDUNG
-
Datenspeichereinrichtungen
mit direktem Speicherzugriff sind typischerweise in Datenspeicherblöcken fester
Größe organisiert.
Beispielsweise kann ein Plattenlaufwerk eines Computers Datenspeicher
in einer Anzahl von Datenblöcken
organisieren, von denen jeder 512 Bytes an Daten enthält und jeder
Block eine einzigartige logische Blockadresse hat, wobei die Blöcke beginnend
mit Block Null der Reihe nach numeriert sind. Es sind auch andere Blockadressierungsverfahren,
einschließlich
der Spezifizierung von Zylindern, Spuren und Sektoren; in Gebrauch,
jedoch hat auch hier jeder Block eine eindeutige Adresse, und es
wird davon ausgegangen, daß die
Blöcke
in einer wohldefinierten logischen Ordnung auf der Einrichtung erscheinen.
Andere Speichermedien, wie Bänder,
können
in Abhängigkeit
von der Anwendung ebenfalls in Blöcken fester Größe organisiert
sein.
-
Ein
wesentlicher Teil der Arbeit, die von einem Computersystem ausgeführt wird,
ist das Speichern von Daten in und das Abrufen von Daten aus Datenspeichereinrichtungen
(I/O). In frühen
Computersystemen wurde diese Arbeit von der Zentralverarbeitungseinheit
(CPU) ausgeführt,
was die Benutzung eines wesentlichen Teils der verfügbaren Rechenleistung
der CPU erforderte, um die einzelnen Schritte der I/O auszuführen. In
modernen Systemen dagegen werden die Mechanismen der Datenübertragung
zu und von Speichereinrichtungen oft von einer separaten Steuerung
für direkten
Speicherzugriff (Direct Memory Access, DMA) ausgeführt. 1A zeigt
ein vereinfachtes Blockdiagramm eines solchen Systems, dargestellt
bei 101. Das System 101 weist eine CPU 103,
einen Hauptspeicher 105, eine DMA-Steuerung 107,
ein Speichermedium 109 und einen Kommunikationsbus 111 auf.
In Systemen wie dem System 101 programmiert die CPU 103,
um die I/O-Datenübertragung
zu initiieren, die DMA-Steuerung 107 mit den Informationen,
die sie benötigt,
und gibt (über
den Kommunikationsbus 111) einen Befehl aus, um die Übertragung
zu starten. Die CPU kann sich dann anderen Berechnungen zuwenden,
während
die DMA-Steuerung die einzelnen Schritte der Übertragung ausführt. Die
DMA-Steuerung 107 dient somit als Vermittler zwischen dem
Hauptspeicher 105 und dem Speichermedium 109.
Wenn der I/O-Vorgang abgeschlossen ist, wird die CPU 103 von
der DMA-Steuerung 107 über
die Beendigung der I/O informiert, woraufhin die CPU die Ergebnisse der Übertragung
verwenden kann. Auf diese Weise wird der größte Teil der Arbeit, die erforderlich
ist, um die I/O durchzuführen,
von der CPU weggenommen, wodurch die CPU frei ist, eine andere Arbeit
auszuführen.
Beispielsweise kann die CPU Prozesse wie den Austausch mit dem Hauptspeicher 105 ausführen.
-
Um
eine DMA-Einrichtung zu programmieren, spezifiziert eine CPU solche
Informationen typischerweise wie folgt: als Startadresse im Hauptspeicher,
die für
die Datenübertragung
verwendet werden soll, als die Länge
der zu übertragenden
Daten, ob Daten von der Einrichtung zum Hauptspeicher ("Lesen") oder vom Hauptspeicher
zu der Einrichtung ("Schreiben") übertragen
werden sollen, und für
Einrichtungen mit direktem Zugriff die Adresse des Datenblocks auf
der Speichereinrichtung.
-
Oft
ist es gewünscht,
in einem einzigen I/O-Vorgang mehr als einen Datenblock zu oder
von einer Speichereinrichtung zu übertragen. In den meisten Fällen ist
die Länge
solcher Übertragungen auf
ganzzahlige Vielfache der Blockgröße der Speichereinrichtung
beschränkt. 1B zeigt
ein Szenarium 113, bei dem Daten über die DMA-Steuerung 107 von
dem Hauptspeicher 105 zu einem Speichermedium 109 übertragen
werden. Wenn eine CPU der DMA-Steuerung 107 eine Länge von
mehr als einem Datenblock angibt, überträgt der I/O-Vorgang beginnend
bei der spezifizierten Startadresse Daten von aufeinanderfolgenden
Adressen im Hauptspeicher zu aufeinanderfolgenden Blöcken in
dem Speichermedium 109. Die Daten werden beginnend bei
einer spezifizierten Blockadresse oder in einigen Einrichtungen
an einem impliziten gegenwärtigen
Ort auf dem Speichermedium gespeichert. Die DMA-Steuerung beinhaltet
typischerweise Register für
die Startadresse des Hauptspeichers, die Datenblocklänge und
optional eine Speicheradresse, die mit einem Speichermedium verknüpft ist.
In diesem Beispiel wird somit ein Datenblock mit einer Länge von
4096 Bytes (8×512-Byte-Blöcke, bezeichnet
mit D0–D7)
in einem Vorgang zu dem Speichermedium 109 übertragen
(gespeichert in 8×512-Byte-Blöcken, bezeichnet
mit B0–B7).
Durch das Übertragen
einer Mehrzahl von Datenblöcken
in einem einzigen I/O-Vorgang wird die CPU von dem Aufwand befreit,
den I/O-Vorgang des DMA für
jeden der Blöcke
D0–D7 einzeln
zu initiieren.
-
Oft
ist es notwendig oder gewünscht,
mehrere Datenblöcke
zwischen nichtzusammenhängenden Orten
im Hauptspeicher zu einem zusammenhängenden Satz von Blöcken auf
der Datenspeichereinrichtung zu übertragen.
Wenn die DMA-Steuerung für irgendeinen
bestimmten I/O-Vorgang
nur eine einzige Hauptspeicher-Startadresse akzeptiert, können nur
aufeinanderfolgend adressierbare Orte im Hauptspeicher in einem
einzigen I/O-Vorgang übertragen werden.
In Fällen,
in denen die Granularitätsbeschränkungen
der Einrichtungen durch die Organisation der Daten im Hauptspeicher
erfüllt
werden, kann es möglich
sein, für
jeden zusammenhängenden Speicherblock
separate I/O-Befehle auszugeben. Dies würde jedoch für die CPU
den Aufwand mit sich bringen, die zusätzlichen I/O-Befehle zu initiieren
und deren Abarbeitung zu handhaben.
-
Um
dieses Problem zu mindern, implementieren einige DMA-Steuerungen
etwas, das als ein "Verstreuen/Einsammeln" (Scatter/Gather)-I/O-Vorgang
bezeichnet wurde. Bei solchen Vorgängen erhält die DMA-Steuerung eine Liste
von Startadressen und Längen
und wird nicht mit einer einzigen Hauptspeicher-Startadresse und
-Länge
programmiert. Zuerst werden Daten beginnend mit der in dem ersten Scatter/Gather-Listenelement
spezifizierten Hauptspeicheradresse übertragen. Wenn dieses Element verbraucht
bzw. abgearbeitet ist, d.h. wenn die spezifizierte Datenlänge für das Element übertragen
wurde, wird das nächste
Element auf der Liste verwendet, um den nächsten Satz von Hauptspeicheradressen
zu bestimmen, der bei der Übertragung
verwendet werden soll. Auf diese Weise kann ein einziger I/O-Vorgang
eine Mehrzahl von Datenblöcken
zwischen der Datenspeichereinrichtung und nicht-zusammenhängenden
Orten im Hauptspeicher übertragen.
Herkömmliche
DMA-Steuerungen lassen jedoch für
gewöhnlich
nur eine kleine, begrenzte Anzahl von Scatter/Gather-Listenelementen
zu, oder sie implementieren überhaupt
keine Scatter/Gather-Fähigkeit.
-
In
Rechnerumgebungen, die eine hohe Zuverlässigkeit der Datenspeicherung
und des -abrufs erfordern, kann es notwendig oder wünschenswert sein,
für jeden
Block von gespeicherten Daten Prüfinformationen
zu behalten, die verwendet werden können, um zu bestätigen, daß die Daten
während
der Speicherung nicht korrumpiert wurden. Obwohl es viele Arten
von Prüfinformationen
gibt, wird eine allgemeine Form als Prüfsumme bezeichnet. Eine Prüfsumme ist
das Ergebnis einer mathematischen Berechnung auf einem Datenblock,
der jedesmal, wenn er berechnet wird, dasselbe Ergebnis liefert.
Wenn eine Prüfsumme
für einen
Datenblock berechnet wird, der gerade gespeichert wird, wird die
Prüfsumme
typischerweise zusammen mit den Daten gespeichert. Wenn die Daten
abgerufen werden, wird die Prüfsumme
für den
abgerufenen Daten neu berechnet und mit der gespeicherten Prüfsumme verglichen.
Wenn die neu berechnete Prüfsumme
sich von der gespeicherten Prüfsumme
unterscheidet, weiß man,
daß die
Daten korrumpiert wurden, und es können Abhilfemaßnahmen
eingeleitet werden.
-
In
vielen Fällen
ist es vorteilhaft, wenn Berechnungen von Prüfinformationen zur Datenintegrität in dem
Betriebssystem auf sehr niedriger Ebene durchgeführt werden. Beispielsweise
können
diese Berechnungen ohne Kenntnis der Softwareeinheiten, die ursprünglich die
I/O angefordert hatten, in einem Gerätetreiber durchgeführt werden.
Die die I/O anfordernde Einheit kann beispielsweise einfach anfordern,
daß beginnend
bei einer bestimmten Blockadresse 64 Speicherblöcke in das Speichermedium geschrieben
werden sollen. Die Prüfinformationen
werden durch den Gerätetreiber
berechnet und überprüft und erscheinen
nicht in den Daten, die zwischen der anfordernden Einheit und dem
Gerätetreiber übermittelt
werden.
-
Beim
Speichern von Daten und ihrer zugehörigen Prüfinformationen ist große Sorgfalt
dahingehend erforderlich, daß sie
im Falle eines Systemausfalls auf der Speichereinrichtung erhalten
bleiben. Eine beträchtliche
Vereinfachung dieses Prozesses kann erreicht werden, indem die Prüfinformationen für einen
Datenblock in demselben I/O-Vorgang, der die Daten schreibt, auf
der Einrichtung gespeichert werden. Eine Möglichkeit, dies durchzuführen, besteht
darin, die Speichereinrichtung so zu formatieren, daß jeder
Speicherblock auf der Einrichtung lang genug ist, um sowohl die
gewünschte
Datenblockgröße als auch
die gewünschte
Prüfinformationsgröße aufzunehmen.
Wenn beispielsweise die gewünschte
Datenblockgröße 512 Bytes
beträgt
und die gewünschte
Prüfinformationsgröße 8 Bytes
beträgt,
könnte
die Speichereinrichtung in 520-Byte-Blöcken formatiert werden, von
denen jeder 512 Bytes an Daten und 8 Bytes an Prüfinformationen aufnehmen könnte. In
diesem Beispiel würde die
CPU dann I/O-Vorgänge
in ganzzahligen Vielfachen von 520 Bytes vornehmen, wobei die ersten 512
Bytes die Daten für
den ersten Block in der I/O sind, die nächsten 8 Bytes die Prüfinformationen
für den
ersten Block in der I/O sind, die nächsten 512 Bytes die Daten für den zweiten
Block in der I/O sind, die nächsten
8 Bytes die Prüfinformationen
für den zweiten
Block in der I/O sind usw.
-
Derzeit
stellt das Implementieren der Speicherung von Prüfinformationen in längeren Speicherblockgrößen ein
Problem dar. Beispielsweise müssen
beim Schreiben mehrerer Datenblöcke
in einem I/O-Vorgang die durch eine CPU (beispielsweise in einem
Gerätetreiber)
berechneten Prüfinformationen mit
den Datenblöcken
verschachtelt werden. Ebenso müssen
auch während
einer Leseoperation die verschachtelten Prüfinformationen aus den verschachtelten
Daten extrahiert bzw. herausgezogen werden, so daß der Gerätetreiber
seinen Clients Daten tiefern kann, die keine Prüfinformationen enthalten. Selbst wenn
nur ein einziger Block geschrieben wird, müssen die Prüfinformationen auch während des
Schreibens in den Daten enthalten sein. Die Daten, die von der anfordernden
Einheit bei dem Gerätetreiber
ankommen, enthalten diese Prüfinformationen
jedoch nicht, noch ist hierfür
Raum reserviert.
-
Um
einen Schreibvorgang auszuführen, wenn
die DMA-Steuerung keine Scatter/Gather-Fähigkeit
besitzt, müssen
die Daten von den Orten im Hauptspeicher, die von der anfordernden
Einheit bereitgestellt werden, in einen anderen Puffer kopiert werden,
der lang genug ist, um nicht nur die Daten, sondern auch die Prüfinformationen
für diese
Daten aufzunehmen. Wenn beispielsweise die anfordernde Einheit einen
512-Byte-Puffer übergibt
und die Prüfinformationen
8 Bytes ausmachen, muß der
Gerätetreiber
der DMA-Steuerung folgendes tun: einen zusammenhängenden 520-Byte-Puffer zuweisen,
die Daten in diesen hineinkopieren, die Prüfinformationen berechnen und
diese hinter den Daten in dem 520-Byte-Puffer plazieren. Der Gerätetreiber
kann dann die DMA-Steuerung
so programmieren, daß sie den
520-Byte-I/O-Vorgang unter Verwendung des lokalen Puffers ausführt. In
einem weiteren Beispiel müssen,
wenn dem Gerätetreiber
eine 4096 Bytes große
Seite übergeben
wird, die Daten in Blöcken von
je 512 Bytes in einen 4160 Bytes großen lokalen Puffer hineinkopiert
werden, wobei jedem 512-Byte-Block unmittelbar seine entsprechenden Prüfinformationen
folgen, die von dem Gerätetreiber berechnet
wurden. Solche Kopiervorgänge
belasten jedoch die CPU, die ansonsten für andere Berechnungen verwendet
werden könnte.
-
Selbst
wenn die DMA-Steuerung Scatter/Gather-Fähigkeit besitzt, beschränken Implementierungen
oft die Länge
der Scatter/Gather-Liste. Der Versuch, die Scatter/Gather-Fähigkeit
zu verwenden, um von dem Gerätetreiber
berechnete Prüfinformationen
mit Daten für
eine bestimmte I/O-Anforderung zu verschachteln, kann die Grenzen
der Scatter/Gather-Liste überschreiten,
was wiederum das Kopieren von Daten erfordert oder was es notwendig macht,
I/O-Anforderungen in eine Mehrzahl kleinerer Anforderungen aufzuteilen.
Beispielsweise wären, um
16 je 4096 Bytes große
Datenseiten mit Prüfinformationen
in eine Speichereinrichtung (formatiert in 520-Byte-Blöcken, die
jeweils 512 Bytes an Daten und 8 Bytes an Prüfinformationen beinhalten)
zu schreiben, 256 Scatter/Gather-Listenelemente erforderlich anstelle
der maximal 16 Elemente, die benötigt
werden, um die gleichen Blöcke
ohne die Prüfinformationen
zu schreiben (8 Blöcke
pro Seite × 16 Seiten × 2 Elemente
pro Block). Somit verfügen
standardmäßige DMA-Steuerungen
mit Scatter/Gather-Fähigkeit
in vielen Fällen
nicht über
ausreichend Speicher, um eine Scatter/Gather-Liste zu implementieren,
die in der Lage ist, Informationen für Daten und ihre zugehörigen Prüfinformationen,
die von dem Gerätetreiber
berechnet wurden, zu speichern. Die Bereitstellung einer größeren Speicherfähigkeit
für die
DMA-Steuerung kann dieses Problem überwinden, bringt jedoch eine
größere Belastung
für die
Rechnereffizienz mit sich.
-
Die
US 5987627 offenbart ein
Massenspeichersystem, welches über
einen lokalen CPU-Bus mit einer CPU verbunden ist. Das Massenspeichersystem
beinhaltet eine Schnittstelle zum Anschließen an den lokalen CPU-Bus,
privaten Speicher zum Speichern von Daten und einen Logikschaltkreis.
Der Logikschaltkreis erzeugt ECC-Bits für Daten von der Schnittstelle,
die in den privaten Speicher geschrieben werden, und bestätigt die
ECC-Bits von Daten, die aus dem privaten Speicher auf der Schnittstelle ausgelesen
werden.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung liefert ein Verfahren und eine Vorrichtung,
wie sie in den anhängenden
Ansprüchen
ausgeführt
werden.
-
Gemäß einer
Ausführungsform
der Erfindung beschafft eine DMA-Steuerung Prüfinformationen aus einem Computerhauptspeicher,
statt die Prüfinformationen
in der DMA-Steuerung intern zu berechnen. Beispielsweise können die
Prüfinformationen
eher durch die CPU als durch die DMA-Steuerung berechnet werden. In einigen
Ausführungsformen
implementiert die DMA-Steuerung zusätzliche Register, um beispielsweise
den Ort von Prüfinformationen
im Computerhauptspeicher zu spezifizieren. Die DMA-Steuerung selbst
führt das
Verschachteln von Daten mit ihren zugehörigen Prüfinformationen aus, während sie
Informationen zwischen dem Hauptspeicher und der Speichereinrichtung überträgt. Um dies
zu bewerkstelligen, erhält
die DMA-Steuerung Befehle dafür,
wie die Verschachtelung stattzufinden hat. In einigen Ausführungsformen werden
die Länge
der Datenblöcke
und die Länge der
Prüfinformationsblöcke, die
für die
Speicherung verschachtelt werden sollen, von der CPU programmiert.
In anderen Ausführungsformen
kann eine oder können
beide dieser Längen
in anderen programmierten Parametern und/oder der Formatierung der Speichereinrichtung
inbegriffen sein.
-
Ein
solcher Ansatz liefert eine effiziente Architektur und ein effizientes
Verfahren zum Verwenden von direktem Speicherzugriff (Direct Memory
Access, DMA) für
das Speichern und Abrufen von Daten und zugehörigen Prüfinformationen in bzw. aus Blöcken fester
Größe auf einer
Datenspeichereinrichtung.
-
Gemäß einer
weiteren Ausführungsform
der Erfindung akzeptiert eine DMA-Steuerung in Fällen, in denen es keine Scatter/Gather-Fähigkeit
gibt, zwei Hauptspeicheradressen, die den Prüfinformationen und den Daten,
die verschachtelt werden sollen, entsprechen. Insbesondere gemäß einigen
Ausführungsformen
werden zwei verschiedene Register von Startadressen implementiert,
um Startadressen zu speichern, die den zu verschachtelnden Prüfinformationen
und Daten entsprechen. Mit anderen Worten, das erste Register von
Startadressen spezifiziert den Start der Daten, und das zweite Register
von Startadressen spezifiziert den Start der Prüfinformationen für diese
Daten. In einer weiteren Ausführungsform stellt
eine DMA-Steuerung zwei zusätzliche
Register bereit, die spezifizieren, wie aus den zwei Sätzen von Adressen
entnommene Informationen ver schachtelt werden sollen. Ein solches
Register spezifiziert die Größe der Datenblöcke, die
in dem Speicher auf der Speichereinrichtung verschachtelt werden
sollen, wohingegen das andere Register die Größe der Prüfinformationsblöcke spezifiziert,
die in dem Speicher auf der Speichereinrichtung verschachtelt werden sollen.
In letzterem Fall durchläuft
die Steuerung, nachdem die DMA-Steuerung
programmiert und der Vorgang initiiert wurde, unter Verwendung der
zwei Adressenregister die Daten und die Prüfinformationen, wobei sie den
ersten Datenblock und seine entsprechenden Prüfinformationen schreibt, dann
den Vorgang für
den zweiten Datenblock wiederholt usw.
-
Gemäß noch einer
weiteren Ausführungsform
der Erfindung beinhaltet jeder I/O-Vorgang die Übertragung einer Anzahl von
Datenblöcken.
Die CPU berechnet die Prüfinformationen
für jeden
Block und plaziert die Prüfinformationen
jedes Blockes nacheinander zusammenhängend in einem Speichersegment
(z.B. eines Puffers) für
Prüfinformationen,
ehe die DMA-Steuerung programmiert wird. Indem die Prüfinformationen
für alle
Datenblöcke
in einem zusammenhängenden
Speichersegment angeordnet werden, kann eine einzige Adresse die
gesamten Prüfinformationen
für alle
Datenblöcke
in dem I/O-Vorgang spezifizieren. Indem die DMA-Steuerung so ausgestaltet
wird, daß sie
die von dem Hauptspeicher erhaltenen Prüfinformationen mit den Daten
verschachtelt, sind keine zusätzlichen Scatter/Gather-Elemente
notwendig, und weder die Daten noch die Prüfinformationen müssen in
lokale Puffer auf der DMA-Steuerung kopiert werden.
-
Gemäß noch einer
weiteren Ausführungsform
der Erfindung wird die Scatter/Gather-Fähigkeit unterstützt. In
einigen Ausführungsformen
wird diese Fähigkeit
verwendet, um nur auf die Daten zuzugreifen, und eine einzige Startadresse
von Prüfinformationen
wird verwendet, um für
einen bestimmten I/O-Vorgang auf alle Prüfinformationen zuzugreifen. In
diesen Fällen
plaziert der Gerätetreiber
alle Prüfinformationen
für den
I/O-Vorgang zusammenhängend in
einem einzigen Puffer, während
unter Verwendung der Scatter/Gather-Liste auf die Daten zugegriffen wird.
Im Gegensatz dazu implementieren andere Ausführungsformen eine Scatter/Gather-Fähigkeit sowohl
für Daten
als auch für
Prüfinformationen.
-
Gemäß noch einer
weiteren Ausführungsform
der Erfindung verwendet während
Lesevorgängen
eine DMA-Steuerung die oben genannten Register, um gespeicherte
Daten und zugehörige
Prüfinformationen
in ihre Bestandteile aufzugliedern bzw. zu entfalten. Die Daten
und die zugehörigen
Prüfinformationen
werden somit unter Verwendung eines Satzes von Verschachtelungskriterien
(aus Gründen
der Einfachheit wird für
die Kriterien, die zum Verschachteln und zum Entfalten von Daten
und zugehörigen Prüfinformationen
verwendet werden, derselbe Begriff benutzt) aus der Speichereinrichtung
extrahiert bzw. herausgezogen. Die getrennten Datenblöcke und
zugehörigen
Prüfinformationen
werden in einen Speicher geschrieben, der zu der DMA-Steuerung extern
ist (beispielsweise in einen Hauptspeicher).
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Die
folgende ausführliche
Beschreibung ist besser zu verstehen, wenn sie im Zusammenhang mit
den Zeichnungen betrachtet wird, in denen:
-
1A ein
vereinfachtes Blockdiagramm ist, welches die Mechanismen einer Datenübertragung zu
und von Speichereinrichtungen unter Verwendung einer separaten Steuerung
für direkten
Speicherzugriff (DMA) zeigt,
-
1B ein
vereinfachtes Blockdiagramm ist, welches einen herkömmlichen
Mechanismus zum Übertragen
von Daten von einem Hauptspeicher zu einem Speichermedium über eine
DMA-Steuerung zeigt,
-
2A ein
vereinfachtes Blockdiagramm ist, welches eine Architektur einer
DMA-Steuerung und Aspekte
eines Verfahrens für
einen Schreibvorgang darstellt,
-
2B ein
vereinfachtes Blockdiagramm ist, welches ein Beispiel einer Anordnung
von verschachtelten Daten und Prüfinformationen
in einem Speichermedium darstellt,
-
2C ein
vereinfachtes Blockdiagramm ist, welches eine weitere Architektur
einer DMA-Steuerung
und Aspekte eines Verfahrens für
einen Schreibvorgang darstellt,
-
2D ein
Beispiel einer Scatter/Gather-Liste veranschaulicht, die entsprechend der
in 2C dargestellten DMA-Steuerungsarchitektur verwendet
werden kann,
-
2E ein
vereinfachtes Blockdiagramm ist, welches noch eine weitere DMA-Steuerungsarchitektur
und Aspekte eines Verfahrens für
einen Schreibvorgang darstellt,
-
2F zwei
Beispiele von Scatter/Gather-Listen veranschaulicht, die entsprechend der
in 2E dargestellten DMA-Steuerungsarchitektur verwendet
werden können,
-
3A einen
Arbeitsablauf darstellt, der Aspekte eines Verfahrens zum Übertragen
von Daten und Prüfinformationen
von einem Hauptspeicher zu einer Speichereinrichtung zeigt,
-
3B einen
Arbeitsablauf darstellt, der Aspekte eines Verfahrens zeigt, bei
dem ein Datenblock und seine zugehörigen Prüfinformationen durch eine DMA-Steuerung
gemäß einer
Ausführungsform
der Erfindung verschachtelt werden,
-
4 ein
typisches Computersystem veranschaulicht, welches, wenn es in geeigneter
Weise konfiguriert oder ausgestaltet ist, verwendet werden kann,
um eine Ausführungsform
der Erfindung zu implementieren.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In
der folgenden ausführlichen
Beschreibung werden zahlreiche spezifische Ausführungsformen lediglich beispielhaft
beschrieben, um ein vollständiges
Verständnis
der Erfindung zu ermöglichen.
Für Fachleute
auf dem Gebiet ist es jedoch offensichtlich, daß die vorliegende Erfindung
auch ohne diese spezifischen Einzelheiten oder unter Verwendung
alternativer Elemente oder Prozesse ausgeführt werden kann.
-
Der
hierin beschriebene Ansatz liefert effiziente Architekturen und
Verfahren zur Verwendung von direktem Speicherzugriff (DMA), um
Daten und zugehörige
Prüfinformationen
in Blöcken
fester Größe in einer
Datenspeichereinrichtung zu speichern und aus dieser abzurufen.
Dies wird durch die Verwendung von Verschachtelungskriterien, die
in Registern in der DMA-Steuerung bereitgestellt werden, erreicht.
Da Speicherblöcke
fester Größe mit einer festen
Datengröße und einer
festen Prüfinformationsgröße pro Speicherblock
spezifiziert sind, können die
Verschachtelungskrite rien in einer Form dargestellt werden, die
bedeutend kompakter ist als es die Darstellung derselben Verschachtelung
unter Verwendung einer herkömmlichen
Scatter/Gather-Liste wäre.
Bei diesem Ansatz ist die Darstellung der Verschachtelungskriterien
auf Blöcke
fester Größe beschränkt, die
zwei Segmente beinhalten (z.B. eines für Daten und eines für Prüfinformationen).
Die Größe der Daten-
und der Prüfinformationsblöcke kann verschieden
sein, ihre jeweiligen Größen variieren
jedoch nicht. Somit sind für
das spezifische Beispiel der Verschachtelung von Daten und Prüfinformationen
unabhängig
von der Gesamtgröße der Übertragung
die Verschachtelungskriterien für
eine vollständige Übertragung
in einer kleinen Anzahl von Registern dargestellt. Die Verwendung
einer herkömmlichen
Scatter/Gather-Liste, um die gleiche beschränkte Verschachtelung auszudrücken, würde für jeden
einzelnen verschachtelten Block (Daten und Prüfinformationen), der an der Übertragung
beteiligt ist, zwei Scatter/Gather-Listenelemente erfordern – umfangreiche Übertragungen
würden
eine übermäßige Anzahl
von Scatter/Gather-Listenelementen erfordern.
-
2A ist
ein vereinfachtes Blockdiagramm, welches die Architektur 201 einer
DMA-Steuerung und
Aspekte eines Verfahrens für
einen Schreibvorgang gemäß einer
Ausführungsform
der Erfindung darstellt. Während
einer Schreib-"DMA-Übertragung" überträgt die DMA-Steuerung 205 Daten
von dem Hauptspeicher 203 zu dem Speichermedium 207.
In diesem Beispiel enthält
der Hauptspeicher 203 zwei separate jeweils zusammenhängende Reihen
von Speichersegmenten, die Daten und ihren zugehörigen Prüfinformationen entsprechen.
Insbesondere beinhaltet, wie gezeigt ist, das erste Speichersegment
die Datenblöcke
D0–D7,
während
das zweite Speichersegment die zugehörigen Prüfinformationsblöcke C0–C7 beinhaltet.
In einer Ausführungsform berechnet
die CPU die zugehörigen
Prüfinformationen
und speichert sie in dem Hauptspeicher zusammenhängend als C0–C7. Die
DMA-Steuerung 205 überträgt die Datenblöcke D0–D7 (4096
Bytes an Daten) und ihre zugehörigen
Prüfinformationen
C0–C7 (64
Bytes an Daten) von dem Hauptspeicher 203 zu dem Speichermedium 207.
Bei dem Übertragungsvorgang
werden die Daten und die Prüfinformationen vorzugsweise
verschachtelt und als ein zusammenhängender Satz von Datenblöcken B0–B7 (4160 Bytes
an Daten) gespeichert. Der Verschachtelungsvorgang wird unten unter
Bezugnahme auf die 3A und 3B ausführlicher
diskutiert.
-
Wie
es in 2A dargestellt ist, speichert
die DMA-Steuerung 205 vorzugsweise Startadreßdaten, die
eine Datenstartadresse der zu übertragenden Daten
und eine Prüfinformations-Startadresse für die zu übertragenden
Prüfinformationen
angeben, und eine Speicheradresse, die angibt, wo die verschachtelten
Daten und Prüfinformationen
gespeichert werden. Zusätzlich
speichert die DMA-Steuerung 205 innerhalb einer Speichereinrichtung
vorzugsweise auch Verschachtelungskriterien, die die Länge des Datenblocks
und die Länge
des Prüfinformationsblocks,
die verschachtelt werden sollen, angeben. Wie gezeigt ist, weist
die DMA-Steuerung 205 gemäß einer Ausführungsform
vorzugsweise Register zum Speichern der Startadreßdaten und
der Verschachtelungskriterien auf. Insbesondere werden vorzugsweise
separate Register verwendet, um beide Startadressen zu speichern:
die Datenadresse und die Prüfinformationsadresse.
In ähnlicher
Weise werden die Verschachtelungskriterien vorzugsweise in anderen bzw.
separaten Registern gespeichert als die Datenblockgröße (512
Bytes) der zu übertragenden
Daten und die Größe der zugehöri gen Prüfinformationsblöcke (8 Bytes).
Ein Register wird auch für
die Speicherlänge
(4160 Bytes) der verschachtelten Daten, die in die Speichereinrichtung
geschrieben werden sollen, verwendet. Alternativ könnte dieses
Register die Datenlänge
(4096 Bytes) spezifizieren, wobei die Prüflänge (64 Bytes) sich implizit
auf Basis der Verschachtelungskriterien ergibt. Ebenso könnte das Register
alternativ spezifizieren, daß ein
Datenblock (512 Bytes) und seine zugehörige Prüfinformationslänge (8 Bytes)
in der Verschachtelung achtmal übertragen
werden sollen, d.h. in diesem Beispiel einfach die Zahl "8".
-
In
diesem Beispiel eines Schreibvorgangs werden die Register der Datenadresse
und der Prüfinformationsadresse
zum Speichern der Hauptspeicher-Startadressen verwendet, wie angegeben.
Indem die DMA-Steuerung die Register für Datenadressen und Prüfinformationen
verwendet, kann sie einen Datenblock und seine zugehörigen Prüfinformationen
aus dem Hauptspeicher 203 beschaffen. Die Größe des Datenblocks
und die Größe des Prüfinformationsblocks
(die Verschachtelungskriterien) werden so verwendet, daß die DMA-Steuerung
die Anzahl an Bytes kombinierter Daten und Prüfinformationen, die nacheinander übertragen
werden sollen, bestimmen kann. Die Speicherlänge kann von der DMA-Steuerung
zusammen mit der Länge
des Datenblocks und der Länge
des Prüfinformationsblocks
verwendet werden, um die Menge an zu übertragenden Daten zu berechnen,
indem sie eine Zählung
durchführt,
wenn jeder Datenblock und seine zugehörigen Prüfinformationen übertragen
werden. Wie es oben beschrieben wurde, gibt das Speicheradressenregister
anfangs die Startposition an, wo die zusammenhängenden Blöcke von verschachtelten Daten
gespeichert werden sollen.
-
Gemäß einer
Ausführungsform
der Erfindung berechnet die DMA-Steuerung keine Prüfinformationen;
vielmehr verschachtelt sie die Daten und die im Vorfeld berechneten
Prüfinformationen,
während
sie sie zu einem Speichermedium überträgt. Somit
beschafft unter Bezugnahme auf 2A als
Teil eines Übertragungsprozesses
die DMA-Steuerung 205 den Datenblock D0 (512 Bytes) und
die zugehörigen
Prüfinformationen
C0 (8 Bytes). In diesem Beispiel werden D0 und C0 verschachtelt
und in einen einzigen Block B0 (520 Bytes Länge) des Speichermediums 207 geschrieben.
Dieser Vorgang wird wiederholt, wobei D1 und C1 in B1 umgewandelt
werden, der mit B0 zusammenhängt,
und so weiter, bis alle Daten übertragen
wurden. Wie es oben erwähnt wurde,
werden die Register für
Speicherlänge,
Datenblockgröße und Prüfinformationsblockgröße verwendet,
um Zähler
und Zeiger zurückzusetzen,
so daß die
DMA-Steuerung die Quelladresse, von der die Daten und Prüfinformationen
beschafft werden sollen, und die Zieladresse der verschachtelten
Daten/Prüfinformationen
bestimmen kann, sowie bestimmen kann, wann die Übertragung der Daten und Prüfinformationen
gestoppt werden soll. Es können auch
andere Verfahren zum Verfolgen und/oder Berechnen der Datenblocklänge und/oder
der Prüfinformationsblocklänge verwendet
werden. In diesem Beispiel waren die Datenblocklänge (512 Bytes) und die Prüfinformationsblocklänge (8 Bytes)
vorgegeben. In einem alternativen Beispiel können die Datenblocklänge (512
Bytes) und die verschachtelte Blocklänge (520 Bytes), aus denen
die Länge
des Prüfinformationsblocks
berechnet werden kann, beschafft werden. Somit werden Daten in dem
Speichermedium 207 unter Verwendung von Verschachtelungskriterien,
wie beispielsweise der Länge
von Daten- und Prüfinformationsblöcken, verschachtelt.
-
2B ist
ein vereinfachtes Blockdiagramm, welches darstellt, wie die übertragenen
Daten in dem Speichermedium 207 angeordnet sind. Die Blöcke B0–B7, die
jeweils 520 Bytes lang sind, werden zusammenhängend gespeichert. Jeder Block
beinhaltet einen Datenblock und seine zugehörigen Prüfinformationen. Beispielsweise
umfaßt
B0, wie dargestellt, D0 und C0, die zusammenhängend gespeichert sind, und
B3 umfaßt
D3 und C3, die zusammenhängend
gespeichert sind. Wie es in 2B gezeigt
ist, werden die Datenblöcke
D0–D7
und C0–C7 abwechselnd
eingefügt
oder verschachtelt, wenn sie in das Speichermedium 207 geschrieben
werden.
-
In
einem analogen Lesevorgang verwendet die DMA-Steuerung 205 die
oben genannten Register, um die gespeicherten Informationen B0–B7 in ihre
Bestandteile, nämlich
D0–D7
und C0–C7,
zu entfalten bzw. aufzulösen
und sie beispielsweise in den Hauptspeicher 203 zurückzuschreiben.
Vorzugsweise werden sie während
eines Lesevorgangs, wenn jeder der einzelnen Blöcke (Daten und zugehörige Prüfinformationen)
aus den verschachtelten Daten extrahiert wird, in einen Speicher
geschrieben, der zu der DMA-Steuerung extern ist, vorzugsweise in
den Hauptspeicher. Anders ausgedrückt werden während des
Lesevorgangs die Daten aus der Speichereinrichtung gelesen und in
zwei Informationsströme (Daten
und Prüfinformationen)
entfaltet bzw. aufgegliedert, die an Speicherorte geschrieben werden, die
durch ihre jeweilige Startadresse spezifiziert sind. Dies ist ein
Beispiel dafür,
wie ein Leseprozeß ablaufen
könnte.
Für einen
Fachmann auf dem Gebiet versteht es sich, daß ein solcher Leseprozeß eine Umkehrung
des oben beschriebenen Schreibprozesses mit sich bringt.
-
2C ist
ein vereinfachtes Blockdiagramm, welches eine weitere Architektur 209 einer DMA-Steuerung
und Aspekte eines Verfahrens für
einen Schreibvorgang darstellt. In diesem Beispiel werden die Datenblöcke D0–D7 im Hauptspeicher 211 verstreut.
Insbesondere gibt es zusammenhängende Blöcke D0–D2, D3–D4, D6–D7 sowie
den Block D5. Die zugehörigen
Prüfinformationen
C0–C7
werden (wie in 2A) in einem zusammenhängenden
Format an einem separaten Ort im Hauptspeicher 211 gespeichert.
-
In
diesem Beispiel ist die Architektur der DMA-Steuerung 213 anders
konfiguriert als in dem vorherigen Beispiel. Das heißt, die
Datenadreßregister
berücksichtigen
eine Datenadresse und eine Datenblocklänge für jeden der drei zusammenhängenden
Blöcke
D0–D2,
D3–D4,
D6–D7
sowie Block D5.
-
Um
eine DMA-Übertragung
für diese
Art der Datenanordnung auszuführen,
wird eine Scatter/Gather-Liste verwendet. 2D zeigt
ein Beispiel einer Scatter/Gather-Liste 221, die verwendet
wird, um eine DMA-Übertragung
der Datenblöcke
D0–D7 und
der zugehörigen
Prüfinformationen
C0–C7
aus dem Hauptspeicher 211 zu dem Speichermedium 207 zu
implementieren. In der Scatter/Gather-Liste 221 sind vier
mit 0–3
numerierte (wie ein Computer sie numerieren würde) Elemente enthalten. Die
Elemente 0–3
enthalten jeweils eine Datenblock-Startadresse und die entsprechende
Blocklänge,
was das Verteilungsmuster und die Länge der drei zusammenhängenden
Sätze von
Datenblöcken
D0–D2, D3–D4, D6–D7 sowie
Block D5 in dem Hauptspeicher 211 liefert. Während einer
DMA-Übertragung, wie
sie oben zu den 2A und 2B beschrieben wurde,
verwendet die DMA-Steuerung 213 in diesem Fall die Scatter/Gather-Liste 221,
um über
das Datenadreßregister
auf die Datenblöcke
D0–D7
zuzugreifen. Während
eines DMA-Schreibvorgangs werden die Datenblöcke D0–D7 und die Prüfinformationen
C0–C7
in der gleichen Weise, wie es oben beschrieben wurde, übertragen
und in dem Prozeß verschachtelt
und als Blöcke
B0–B7
in dem Speichermedium 207 gespeichert. Ein analoger Lesevorgang bringt
wiederum das Entfalten der verschachtelten Daten aus dem Speichermedium 207 durch
die DMA-Steuerung 213 unter Verwendung ihrer Register und
der Scatter/Gather-Liste 221 mit sich. Der Lesevorgang
in Bezug auf die Scatter/Gather-Liste wird unten unter Bezugnahme
auf die 2E und 2F ausführlicher
beschrieben.
-
Statt
Prüfinformationen
zusammenhängend zu
speichern, kann es vorteilhaft sein, auf Prüfinformationen zugreifen zu
können,
die im Hauptspeicher verteilt sind. 2E ist
ein vereinfachtes Blockdiagramm, welches noch eine weitere Architektur
einer DMA-Steuerung 219 und Aspekte eines Verfahrens für einen
Schreibvorgang darstellt. In diesem Beispiel sind die Datenblöcke D0–D7 in dem
Hauptspeicher 217 verstreut. Insbesondere gibt es zusammenhängende Sätze von
Datenblöcken
D0–D2,
D3–D4, D6–D7 sowie
Block D5. Die zugehörigen
Prüfinformationen
C0–C7
sind ebenfalls in dem Hauptspeicher 217 verstreut. Insbesondere
gibt es zusammenhängende
Sätze von
Prüfinformationsblöcken C0–C2, C3–C4, C6–C7 sowie
Block C5. In diesem Beispiel spiegelt das Verteilungsmuster der
Prüfinformationsblöcke C0–C7 dasjenige
der Datenblöcke D0–D7 wider.
Die Prüfinformationen
können
auf diese Weise erzeugt und im Hauptspeicher 217 gespeichert
werden, so daß der
Prozeß der
Zuweisung von Speicher, der die Prüfinformationen der verschiedenen
Datenblöcke
enthalten soll, in überaus
effizienter Weise ablaufen kann. Wie in dem vorherigen Beispiel sind
die Datenadreßregister
so konfiguriert, daß sie nicht
nur eine Datenblock-Startadresse, sondern auch eine entsprechende
Blocklänge
beinhalten. Auch enthalten in diesem Beispiel die Prüfinformations-Adreßregister
nicht nur eine Prüfinformationsblock-Startadresse,
sondern auch eine entsprechende Blocklänge. Somit arbeitet die DMA-Steuerung 219 in
sehr ähnlicher
Weise, wie es oben zu den 2C und 2D beschrieben
wurde, nur sind in diesem Fall sowohl das Datenadreßregister
als auch das Prüfinformations-Adreßregister
auf eine Scatter/Gather-Liste angewiesen, um Daten aus dem Hauptspeicher 217 zu
beschaffen.
-
2F zeigt
beispielhafte Scatter/Gather-Listen 223 und 225,
die verwendet werden, um eine DMA-Übertragung der Datenblöcke D0–D7 und
der zugehörigen
Prüfinformationen C0–C7 aus
dem Hauptspeicher 217 zu dem Speichermedium 207 zu
implementieren. Es gibt vier Elemente in der Scatter/Gather-Liste 223,
die von 0–3 numeriert
sind, und vier analoge Elemente in der Scatter/Gather-Liste 225.
In diesem Beispiel enthält jedes
der Elemente 0–3
in den Listen entweder die Startadresse eines Datenblocks und seine
entsprechende Blocklänge
oder die Startadresse eines Prüfinformationsblocks
und seine entsprechende Blocklänge.
Die Scatter/Gather-Listen 223 und 225 stellen der
DMA-Steuerung 219 somit das Verteilungsmuster und die Längen der
sechs zusammenhängenden Blöcke D0–D2, D3–D4, D6–D7, C0–C2, C3–C4, C6–C7 sowie
der Blöcke
D5 und C5 im Hauptspeicher 217 zur Verfügung. Während einer DMA-Übertragung,
wie sie oben zu den 2C und 2D beschrieben
wurde, verwendet in diesem Fall die DMA-Steuerung die Scatter/Gather- Listen 223 und 225,
um über
das Datenadreßregister
auf die Datenblöcke
D0–D7
bzw. über
das Prüfinformations-Adreßregister
auf die Datenblöcke
C0–C7
zuzugreifen. Die Datenblöcke
D0–D7
und die Prüfinformationen
C0–C7
werden in der gleichen Weise übertragen,
wie es oben beschreiben wurde, und werden in dem Vorgang verschachtelt
und als zusammenhängende
Blöcke
B0–B7
in dem Speichermedium 207 gespeichert.
-
Bei
einem typischen Lesevorgang verwendet die DMA-Steuerung 219 die
oben genannten Register, um die gespeicherten Informationen B0–B7 in ihre
Bestandteile zu entfalten. Bei diesem Lesevorgang werden die zusammenhängenden
Blöcke D0–D2, D3–D4, D6–D7, C0–C2, C3–C4, C6–C7 sowie
die Blöcke
D5 und C5 beispielsweise in den Hauptspeicher 217 zurückgeschrieben.
In diesem Fall werden, da die Scatter/Gather-Listen 223 und 225 verwendet
wurden, weil der Entfaltungsvorgang zwei Informationsströme (Daten
und korrespondierende Prüfinformationen)
liefert, diese jeweils an die in ihrer jeweiligen Scatter/Gather-Liste
spezifizierten Orte "verstreut". Unter Bezugnahme
auf 2C (wo nur eine Scatter/Gather-Liste verwendet
wurde) wird nur einer der beiden Informationsströme an die in der Scatter/Gather-Liste
spezifizierten Orte verstreut.
-
3A stellt
einen Arbeitsablauf 301 dar, der Aspekte eines Verfahrens
zum Übertragen
von Daten und Prüfinformationen
aus einem Hauptspeicher zu einer Speichereinrichtung gemäß einer
Ausführungsform
der Erfindung zeigt. In diesem Beispiel berechnet eine CPU bei 303 die
Prüfinformationen für einen
Datenblock im Hauptspeicher. Die Prüfinformationen werden dann
bei 305 in einem separaten Teil des Hauptspeichers gespeichert.
Wie es in den obigen Beispielen angemerkt wurde, müssen die Prüfinformationen
nicht zusammenhängend
gespeichert werden. Als nächstes
wird eine Entscheidung dahingehend getroffen, ob alle Prüfinformationen
berechnet wurden. Falls die Antwort Nein ist, werden bei 309 die
Prüfinformationen
für den
nächsten
spezifizierten Datenblock berechnet. Der Ablauf 303–309 wird
wiederholt, bis für
den gesamten Satz von gewünschten
Datenblöcken
die zugehörigen Prüfinformationen
erzeugt wurden. Unter Rückkehr zum
Entscheidungsblock 307 kann eine DMA-Steuerung, wenn alle
Prüfinformationen
berechnet wurden, bei 311 eine Speicherstartadresse beschaffen,
an der die Daten und die zugehörigen
Prüfinformationen
in dem Speichermedium gespeichert werden sollen. Es sei angemerkt,
daß die
Speicheradresse nicht in der DMA-Steuerung liegen muß. Beispielsweise
kann die Speichereinrichtung diese bei einigen Anwendungen direkt
von einer CPU erhalten, oder die Speichereinrichtung kann beginnend
an einem impliziten gegenwärtigen
Ort einfach in das Speichermedium schreiben. Als nächstes kann
die DMA-Steuerung bei 313 auch Speicherlängeninformationen
für die
zu verschachtelnden und zu speichernden Daten beschaffen. Bei Block 315 werden
ein Datenblock und seine zugehörigen
Prüfinformationen
durch die DMA-Steuerung und die Speichereinrichtung verschachtelt
und zusammenhängend
in einem Speichermedium gespeichert. Bei Block 319 wird
eine Entscheidung dahingehend getroffen, ob alle Daten und die zugehörigen Prüfinformationen
zu dem Speichermedium übertragen
wurden. Falls nicht, wird die Speicherstartadresse inkrementiert
bzw. erhöht.
Die Blöcke 315–321 werden
für jeden
Datenblock und seine zugehörigen
Prüfinformationen,
die von dem Hauptspeicher zu dem Speichermedium übertragen werden sollen, wiederholt.
Unter Rückkehr
zu Block 319 ist das Verfahren abgeschlossen, wenn alle
Daten (und die zugehörigen
Prüfinformationen) übertragen wurden.
-
3B stellt
Aspekte des Ablaufschritts 315 aus 3A dar.
Startadreßdaten,
die Adressen im Hauptspeicher für
die Datenblöcke
und ihre zugehörigen
Prüfinformationen
angeben, werden bei 323 beschafft. Dann werden bei 325 der
Datenblock und seine Prüfinformationen
gemäß den Verschachtelungskriterien
zu einer Speichereinrichtung übertragen.
Als nächstes
werden bei 327 die Adreßdaten, die die Startadressen
der Datenblöcke
und der Prüfinformationen
angeben, inkrementiert, so daß jegliche
nachfolgenden Übertragungen
an die korrekten Adressen im Hauptspeicher gerichtet werden. Während der
in 3A dargestellte Ablauf durch die durch die Blöcke 315–321 dargestellte
Schleife fortgesetzt wird, werden jeder nachfolgende Datenblock und
die zugehörigen
Prüfinformationen
verschachtelt, und die Startadreßdaten werden inkrementiert, wie
es in 3B dargestellt ist.
-
Ein
Verfahren und ein System gemäß der vorliegenden
Erfindung werden typischerweise in einer Computervorrichtung implementiert,
die speziell für
die benötigten
Zwecke ausgestaltet sein kann, oder es kann sich dabei um einen
Vielzweckcomputer handeln, der durch ein Computerprogramm und/oder
eine in dem Computer gespeicherte Datenstruktur selektiv aktiviert
oder neu konfiguriert werden kann. Die hierin dargestellten Abläufe sind
nicht notwendigerweise auf irgendeinen bestimmten Computer bezogen.
Insbesondere können
verschiedene Allzweckmaschinen mit gemäß den hierin angegebenen Lehren
geschriebenen Programmen verwendet werden, oder es kann geeigneter
sein, eine spezialisiertere Einrichtung zu konstruieren, um die
erforderlichen Verfahrensschritte auszuführen.
-
Zusätzlich können bei
dem hierin beschriebenen Ansatz computerlesbare Medien oder Computerprogrammprodukte,
die Programmbefehle und/oder Daten (einschließlich Datenstrukturen) zum Ausführen verschiedener
computerimplementierter Prozesse beinhalten, verwendet werden. Beispiele computerlesbarer
Medien beinhalten magnetische Medien, wie Festplatten, Disketten
und Magnetbänder,
optische Medien, wie CD-ROMs, magnetooptische Medien, Halbleiterspeichereinrichtungen
und Hardwareeinrichtungen, die speziell dafür konfiguriert sind, Programmbefehle
zu speichern und auszuführen,
wie Nur-Lese-Speichereinrichtungen (ROM) und Speicher mit wahlfreiem
Zugriff (RAM), sind jedoch nicht hierauf beschränkt. Die Daten- und Programmbefehle
können
auch auf einer Trägerwelle oder
einem anderen Transportmedium ausgeführt sein. Beispiele von Programmbefehlen
beinhalten sowohl Maschinencode, wie er z.B. durch einen Compiler
produziert wird, als auch Dateien, die höheren Code bzw. höhere Sprache
enthalten, die durch den Computer unter Verwendung eines Übersetzungsprogramms
kompiliert bzw. übersetzt
oder ausgeführt
werden können.
-
4 veranschaulicht
ein typisches Computersystem, in dem, wenn es in geeigneter Weise
konfiguriert oder ausgestaltet ist, ein Verfahren und ein System
gemäß einer
Ausführungsform
der Erfindung implementiert werden können. Das Computersystem 400 beinhaltet
irgendeine Anzahl von Prozessoren 402 (auch als Zentralverarbeitungseinheiten
oder CPUs bezeichnet), die mit Speichereinrichtungen verbunden sind,
die einen Primärspeicher 406 (typischerweise
einen Speicher mit wahlfreiem Zugriff oder RAM) und einen Primärspeicher 404 (typischerweise
einen Nur-Lese-Speicher
oder ROM) beinhalten. Die CPU 402 kann in unterschiedlichen
Formen vorliegen, einschließlich
Mikrocontroller und Mikroprozessoren, wie z.B. programmierbare Einrichtungen
(z.B. CPLDs und FPGAs) und nicht-programmierbare Einrichtungen,
wie ACISs aus Gatearrays oder Vielzweckmikroprozessoren. Wie es
im Stand der Technik gut bekannt ist, funktioniert der Primärspeicher 404 so,
daß er
Daten und Befehle unidirektional an die CPU überträgt, und der Primärspeicher 406 wird
typischerweise verwendet, um Daten und Befehle bidirektional zu übertragen.
Diese beiden Primärspeichereinrichtungen
können
jegliche geeignete computerlesbare Medien beinhalten, wie beispielsweise
diejenigen, die oben beschrieben wurden. Eine Massenspeichereinrichtung 408 kann ebenfalls
bidirektional mit der CPU 402 verbunden sein und stellt
eine zusätzliche
Datenspeicherkapazität
bereit und kann jegliche der oben beschriebenen computerlesbaren
Medien beinhalten. Die Massenspeichereinrichtung 408 kann
verwendet werden, um Programme, Daten und dergleichen zu speichern, und
ist typischerweise ein Sekundärspeichermedium,
wie z.B. eine Festplatte. Es versteht sich, daß die in der Massenspeichereinrichtung 408 gespeicherten Informationen,
wo dies geeignet ist, standardmäßig als
Teil des Primärspeichers 406 als
virtueller Speicher enthalten sein können. Eine bestimmte Massenspeichereinrichtung,
wie z.B. eine CD-ROM 414, kann Daten auch unidirektional
an die CPU übermitteln.
-
Die
CPU 402 kann auch mit einer Schnittstelle 410 verbunden
sein, an die eine oder mehrere Eingabe/Ausgabe-Vorrichtungen, wie
beispielsweise Videomonitore, Rollkugeln (Trackballs), Mäuse, Tastaturen,
Mikrofone, berührungsempfindliche
Anzeigen, Transducer-Kartenlesegeräte, Magnetband- oder Lochstreifenleser,
Schreibtafeln, Stifte, Sprach- oder Handschrifterkennungseinrichtungen
oder andere wohlbekannte Eingabegeräte, wie natürlich beispielsweise auch andere
Computer, angeschlossen ist bzw. sind. Zusätzlich kann die CPU 402 optional unter
Verwendung eines externen Anschlusses, wie er allgemein bei 412 gezeigt
ist, mit einer externen Einrichtung, wie einer Datenbank oder einem
Computer oder einem Telekommunikationsnetz, verbunden sein. Man
kann sich vorstellen, daß die
CPU mit einem solchen Anschluß bzw.
einer solchen Verbindung Informationen von dem Netzwerk empfangen oder
Informationen an das Netzwerk ausgeben kann, während sie die hierin beschriebenen
Verfahrensschritte ausführt.
-
Eine
DMA-Steuerung, wie sie hierin beschrieben ist, kann in vielen Anordnungen
und Konfigurationen, wie sie für
einen Fachmann auf dem Gebiet auf der Hand liegen, in das Computersystem 400 integriert
sein. Darüber
hinaus können
die oben beschriebenen Ablaufschritte durch Schaltkreise ausgeführt werden,
die dafür
ausgestaltet sind, die obigen Schritte auszuführen. Zusätzlich kann für das Übertragen
von Daten und Prüfinformationen
zwischen dem Hauptspeicher und dem Speichermedium ein Bus verwendet
werden.
-
Obwohl
die Erfindung im Hinblick auf einige bevorzugte Ausführungsformen
beschrieben wurde, soll sie nicht auf die bestimmten oben angegebenen Formen
beschränkt
sein. Viele Variationen der oben beschriebenen bevorzugten Ausführungsformen können verwendet
werden. Daher sollte die Erfindung unter Bezugnahme auf die nachfolgenden
Ansprüche
allgemein interpretiert werden.