-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf Computersysteme und dergleichen
und insbesondere auf das Kopieren von Daten innerhalb des Speichers
derartiger Systeme.
-
Hintergrund der Erfindung
-
1 ist
ein schematisches Diagramm, welches ein typisches, bekanntes Computersystem 10 zeigt.
Die verschiedenen Komponenten des Computersystems 10 sind
durch einen Bus 70 miteinander verbunden, der in der Praxis
durch eine Hierarchie von Bussen unterschiedlicher Geschwindigkeit
implementiert sein kann, um eine Kommunikation zwischen den Komponenten
bereitzustellen. Man beachte, daß manchmal auch ein Schaltwerk
anstelle des Busses vorgesehen sein kann (dies ist insbesondere
der Fall bei Hochleistungssystemen wie z.B. einem Großserver).
-
Das
Herz des Computersystems 10 bildet ein Prozessor 20,
der auch als zentrale Verarbeitungseinheit (CPU) bezeichnet wird,
die für
das Ausführen von
Programmanweisungen und für
das Leiten des Gesamtbetriebs des Systems 10 verantwortlich
ist. Viele moderne Systeme unterstützen eine Mehrfach- bzw. Parallelverarbeitung,
entweder indem sie mehr als eine Prozessoreinheit haben, oder (und)
indem sie innerhalb einer einzelnen Halbleitereinrichtung getrennte
Prozessorkerne bilden.
-
Ein
Speicher mit wahlfreiem Zugriff (RAM – Random Access Memory) 40 ist
für die
flüchtige Speicherung
von Befehlen und Daten für
die Verwendung durch den Prozessor 20 vorgesehen. Die Betriebsweise
des RAM 40 und die Wechselwirkung mit dem Host-Bus 70 wird
durch eine Speichersteuerung 35 gesteuert, die direkt zwischen
dem RAM 40 und dem Bus 70 angeordnet ist. Die
Verbindung zwischen der Speichersteuerung 35 und dem RAM 40 kann vorgesehen
werden durch einen getrennten Bus oder durch irgendeine andere geeignete
Form einer Datenverbindung. (Es ist auch möglich, daß die Speichersteuerung mit
dem RAM 40 in einer einzigen Einrichtung implementiert
ist.)
-
Der
Prozessor 20 sendet Befehle über den Bus 70 an
die Speichersteuerung 35, um Daten aus dem RAM 40 zu
lesen oder in diesen zu schreiben. In einem Mehrprozessorsystem
kann der RAM von den verschiedenen Prozessoren gemeinsam verwendet werden
oder es kann ein anderer RAM für
jeden Prozessor vorgesehen sein. Zusätzlich können mehrere Speichersteuerungen
vorgesehen sein, die jeweils einen oder mehrere Blöcke des
RAM mit dem Bus 70 verbinden.
-
Der
Prozessor 20 arbeitet typischerweise bei einer viel höheren Geschwindigkeit
als der Host-Bus 70 und der RAM 40. Daher wird,
um Verzögerungen in
der Verarbeitung zu vermeiden, während
auf Daten zugegriffen wird, ein Cache 30 vorgesehen. Dieser hat
eine kleinere Kapazität
als der RAM 40, kann jedoch wesentlich schneller auf den
Prozessor 20 reagieren. Der Cache 30 versorgt
daher den Prozessor 20 mit einer schnellen, lokalen Kopie
ausgewählter Daten
aus dem RAM 40.
-
Man
beachte, daß viele
Systeme eine Cachehierarchie haben, welche mehrere Cacheebenen aufweisen.
Die Hierarchie beginnt mit einem Cache der Ebene 1 (Level
1-Cache – L1),
der normalerweise auf demselben Chip wie der Prozessor 20 vorgesehen
ist und welches der kleinste, jedoch auch der schnellste Cache in
der Hierarchie ist. Die nächste Ebene
in der Hierarchie (die auch als L2 bezeichnet wird) ist größer, jedoch
langsamer als der L1-Cache. Dieser kann sich auch auf demselben
Chip befinden wie der Prozessor 20 selbst oder er kann
alternativ auf einer getrennten Halbleitereinrichtung vorgesehen
sein. In einigen Systemen wird auch ein L3-Cache vorgesehen.
-
Das
Computersystem 10 enthält
auch verschiedene andere Einrichtungen, die mit dem Bus 70 verbunden
sind. Diese umfassen eine Netzwerkschnittstelle 45, I/O-Einheiten 80,
und nichtflüchtigen Speicher 55.
Die Netzwerkschnittstelleneinheit 45 ermöglicht es,
daß das
System 10 Daten über
das Netzwerk 65 (welches beispielsweise das Internet sein
kann) aussendet und Daten von dem Netzwerk 65 empfängt. Es
versteht sich, daß irgendein
gegebenes Computersystem in der Tat mit mehreren Netzwerken verbunden
sein kann, wie z.B. über
ein Telefonmodem, eine LAN-Schnittstelleneinheit
usw. Die verschiedenen Einheiten 80 weisen typischerweise
eine oder mehrere Tastaturen, Monitore usw. auf. Diese ermöglichen
es Benutzern, direkt mit dem System 10 zu interagieren.
Nicht-flüchtiger
Speicher 55 ist normalerweise in Form einer oder mehrerer Festplattenlaufwerke
vorgesehen, die möglicherweise
in Form eines Arrays konfiguriert sind, kann jedoch auch einen Bandspeicher
oder einen optischen Speicher (wie z.B. eine CD-ROM, DVD) enthalten. Der
Speicher 55 kann für
ein bestimmtes Computersystem 10 vorbehalten sein oder
kann von mehreren Systemen gemeinsam verwendet werden, und zwar über eine
geeignete Verbindung, wie z.B. ein Faserkanalnetzwerk (optisches
Netzwerk).
-
In
vielen Systemen ist es möglich,
daß Einrichtungen,
die an den Bus 70 angeschlossen sind, Daten über den
Bus 70 übertragen,
ohne daß der Prozessor 20 einbezogen
ist. Dies ist als direkter Speicherzugriff (DMA – Direct Memory Access) bekannt.
Eine typische Verwendung des DMA besteht in der Übertragung von Daten zwischen
dem RAM 40 und einer I/O-Einheit 80 (Eingabe-/Ausgabeeinheit).
-
Es
versteht sich, daß der
Bus 70 üblicherweise
eine beträchtliche
Menge an Verkehr überträgt. In der
Tat kann es bei einigen Systemen geschehen, daß die Bandbreite des Busses 70 als
Engpaß bezüglich der
Leistungsfähigkeit
des gesamten Systems wirkt. (Dies gilt trotz des Vorsehens einer
Cachestruktur 20, die im allgemeinen dafür vorgesehen ist,
eine Minimierung des Rückgriffs
des Prozessors 20 auf den Bus 70 anzustreben.)
Die Kapazität
des Busses 70 ist oftmals in Mehrprozessorsystemen, weiche
das Bild eines Einzelsystems aufrechterhalten, besonders beansprucht.
In einer solchen Konfiguration müssen
Daten, die durch einen Prozessor modifiziert werden, für die anderen
Prozessoren verfügbar
gemacht (oder zumindest gemeldet) werden. Dies umfaßt im allgemeinen
das Kopieren von Daten von einer Speicherstelle an eine andere.
Typischerweise wird dies erreicht, indem der Prozessor zunächst einen
Lesevorgang ausführt,
gefolgt von einem Schreibevorgang, was eine beträchtliche Zusatzlast sowohl
für den
Prozessor 20 als auch für
den Bus 70 zur Folge hat.
-
In
einem System nach dem Stand der Technik, einem VAX-Computer (ursprünglich von
der Digital Equipment Corporation, die anschließend von Compaq übernommen
wurde, welche wiederum von Hewlett Packard übernommen wurde), wurde ein spezieller
Kopierbefehl vorgesehen. Dies kann bei der obigen Situation helfen,
weit der Prozessor nunmehr nur einen einzelnen Vorgang ausführen muß, um eine
Kopie herzustellen (anstelle einer Leseoperation, gefolgt von einer
getrennten Schreiboperation). Nichtsdestotrotz wurde auch dieser
VAX-Kopierbefehl durch den Prozessor implementiert und konnte daher
immer noch eine Last für
die Verarbeitungsfähigkeit
bzw. -kapazität
des Systems darstellen.
-
Die
US 6,003,112 offenbart eine
Steuerung, die Operationen ausführt,
welche ansonsten durch die Ausführung
von Code in dem Prozessor ausgeführt
werden könnten,
beispielsweise zum Kopieren von Speicher in einem Computersystem.
Die Steuerung hat eine Registerdatei, die Schritt für Schritt
geschrieben werden muß,
d.h. die Art der Operation wird in die Registerdatei geschrieben,
dann wird die Startadresse des Blocks und dann die Zieladresse geschrieben.
-
Zusammenfassung der Erfindung
-
Demnach
wird gemäß einer
Ausführungsform
der vorliegenden Erfindung ein Computersystem mit einem Prozessor,
einer Steuerung (Controller) und einer Datenkommunikationseinrichtung
bereitgestellt, welche den Prozessor und die Steuerung miteinander
verbindet. Das System enthält
weiterhin einen Speicher, der mehrere Stellen zum Speichern von
Daten hat. Die Steuerung reagiert auf einen einzigen Befehl, den
sie von dem Prozessor empfängt, um
Daten von einer ersten Speicherstelle an eine zweite Speicherstelle
zu kopieren. Dieser einzige Befehl gibt die ersten und zweiten Speicherstellen
an.
-
Demnach
wird ein einziger Befehl vorgesehen, um einen Kopiervorgang von
einer Speicherstelle zu einer anderen auszuführen, gegenüber typischen Anwendungen nach
dem Stand der Technik, die getrennte Lese- und Schreibevorgänge erfordern, um
eine solche Kopie zu erhalten. Da der Befehl durch eine Steuerung
gehandhabt wird, wird der Prozessor von der Last der Verwaltung
und Implementierung des Befehls befreit.
-
Man
beachte, daß in
einigen Ausführungsformen
der Befehlssatz des Prozessors speziell einen Befehl enthalten kann,
der veranlaßt,
daß er
den Kopierbefehl ausgibt. Diese Anweisung bzw. dieser Befehl kann
dann für
Programme in einer Anwendung und/oder auf Systemebene verfügbar gemacht werden,
um Kopiervorgänge
auszuführen.
Alternativ kann der Kopierbefehl als eine Form von Hardwareoptimierung
vorgesehen sein und innerhalb der Maschine nur auf einer niedrigen
Ebene zugänglich sein.
-
Der
Speicher ist typischerweise über
eine Speichersteuerung mit der Datenkommunikationseinrichtung verbunden
(und kann in dieselbe Einrichtung integriert sein, wie die Speichersteuerung). Unter
der Annahme, daß die
ersten und zweiten Speicherstellen mit derselben Speichersteuerung verbunden
sind, kann der Kopierbefehl rein intern für diese Einheit implementiert
sein, ohne daß es
notwendig ist, daß die
Daten auf der Datenkommunikationseinrchtung laufen. Dies macht die
Bandbreite, die auf der Datenkommunikationseinrichtung für andere
Benutzer verfügbar
ist, maximal.
-
In
einigen Systemen können
mehrere Speichersteuerungen vorhanden sein, wobei jede Speichersteuerung
einen anderen Abschnitt des Speichers mit der Datenkommunikationseinrichtung
verbindet. In einer Ausführungsform
können,
wenn die ersten und zweiten Speicherstellen durch unterschiedliche
Speichersteuerungen mit der Datenkommunikationseinrichtung verbunden
sind, die Daten von den ersten und zweiten Speicherstellen unter Verwendung
eines Peer-to-Peer-Kopiervorgangs
auf der Datenkommunikationseinrichtung übertragen werden. Typischerweise
kann dies durch eine dem DMA analoge Transaktion ausgeführt werden.
Man beachte, daß,
obwohl der Peer-to-Peer-Kopiervorgang eine (einzige) Übertragung über die
Datenkommunikationseinrichtung umfaßt, im Gegensatz hierzu ein über einen
Prozessor abgewickelter Kopiervorgang im allgemeinen zwei Datenübertragungen
erfordert (die erste in den Prozessor hinein und die zweite aus
dem Prozessor heraus). Dementsprechend benötigt eine Peer-to-Peer-Speicherkopie
im allgemeinen nur die Hälfte
der Bandbreite auf der Datenkommunikationseinrichtung im Vergleich
zu dem Ansatz nach dem Stand der Technik.
-
In
einer typischen Implementierung ist die Steuerung in den Speicher
(die Speichersteuerungen) integriert. Da die Speichersteuerungen
bereits die meisten Vorgänge
für den
Speicher verwalten, ist es daher relativ einfach für sie, eine
zusätzliche Funktion
aufzunehmen, um den Kopierbefehl zu unterstützen. Die Datenkommunikationseinrichtung
ist typischerweise als ein Bus implementiert (auch wenn es eine
Bushierarchie, ein Schaltnetzwerk, oder irgendeine andere geeignete
Einrichtung sein kann). Der Bus unterstützt einen gegebenen Befehlssatz, der
dann im Vergleich zu Systemen nach dem Stand der Technik erweitert
werden kann, um den Kopierbefehl einzubeziehen.
-
In
einer besonderen Ausführungsform
hält die
Steuerung eine Tabelle oder eine andere geeignete Datenstruktur
(wie z.B. eine Schlange). Diese enthält Einträge für jegliche Kopiervorgänge, die
ausgeführt
werden müssen,
einschließlich
der Information über
die Quelle und den Zielort, welche betroffen sind (d.h. die ersten
bzw. zweiten Speicherstellen). Die Steuerung kann dann die erforderlichen
Kopiervorgänge
implementieren, beispielsweise durch Verarbeiten jedes Eintrags
in der Tabelle oder Schlange der Reihe nach.
-
Es
ist im allgemeinen vorteilhaft aus Gründen der Leistungsfähigkeit,
wenn der Prozessor mit normalen Vorgängen fortfahren darf, bevor
er die Kopie vollendet (dies vermeidet das Anhalten des Prozessors).
In diesem Fall müssen
jedoch Maßnahmen getroffen
werden, um sicherzustellen, daß die
Situation für
den Prozessor transparent ist (d.h. aus der Sicht des Prozessors
muß das
System so arbeiten, als ob der Kopiervorgang bereits abgeschlossen
worden sei, auch wenn er noch immer abläuft oder auf seine Implementierung
wartet). Die Steuerung muß daher
in der Lage sein, festzustellen, ob der Prozessor versucht, auf
eine Speicherstelle zuzugreifen, die noch immer in einen Kopiervorgang
involviert ist, und muß dann
entsprechend handeln.
-
Eine
solche Bestimmung wird in einer Ausführungsform vorgenommen, indem
die Adresse, auf welche der Prozessor zugreifen möchte, mit
den Quell- und Ziel- (Target-) Positionen von anhängigen Kopiervorgängen (wie
sie z.B. in der Tabelle oder Schlange gespeichert sind) vergleicht.
Für den
Fall, daß der
Prozessor aus der zweiten (Ziel-) Position lesen möchte, so
wird diese umgeleitet auf die entsprechende Seite der ersten (Quell-)
Position. Alternativ wird, wenn der Prozessor auf die zweite Speicherstelle
schreiben will, dies zugelassen, jedoch wird der für diese
Adresse vorgesehene Kopiervorgang nunmehr gelöscht, da er effektiv durch
die neuen Daten der Schreibanforderung erledigt bzw. ersetzt worden ist.
-
Wenn
andererseits der Prozessor in die erste Speicherstelle schreiben
möchte,
so muß die
Steuerung diesen Schreibvorgang verzögern, bis die Daten von dieser
Adresse ordnungsgemäß an die
zweite Speicherstelle kopiert worden sind. (Man beachte, daß in dem
letzteren Fall die Steuerung das Kopieren von dieser Adresse so
schnell wie möglich
ausführen sollte,
um zu ermöglichen,
daß der
Prozessor mit seinem Schreibvorgang fortfahren kann.)
-
In
einer typischen Implementierung weist das System weiterhin einen
Cache auf. In Systemen nach dem Stand der Technik, in welchen der
Prozessor einen Kopiervorgang vermittelt, kann der Cache mit Daten
gefüllt
werden, welche der Prozessor in einfacher Weise lädt, um sie
dann für
den Kopierorgang erneut nach außen
zu schreiben. Es versteht sich, daß die Anwesenheit dieser Daten
in dem Cache oftmals keinen echten Gebrauch für den Prozessor darstellt (da
diese Daten normalerweise für
Vorgänge
in der unmittelbaren Zukunft nicht benötigt werden), und in der Tat
ist es potentiell nachteilig, da das Laden dieser Daten dazu führen kann,
daß der Cache
einige andere nützlichere
Daten ausspült
bzw. fortwirft. Im Gegensatz dazu ist bei dem vorliegenden Ansatz
der Prozessor nicht in die Durchführung des Kopiervorgangs einbezogen
und daher werden die Daten nicht unnötig in den Cache aufgenommen.
-
Nichtsdestotrotz
bedeutet die Anwesenheit des Caches, daß man aufpassen muß, um sicherzustellen,
daß der
Cache und der Speicher miteinander konsistent bleiben. Daher wird
in einer Ausführungsform
jeder Cacheeintrag für
die zweite Speicherstelle in Reaktion auf den Kopierbefehl ungültig gemacht (normlalerweise
durch Setzen eines geeigneten Bits innerhalb des Cacheeintrags).
Der Grund hierfür
liegt darin, daß der
Kopiervorgang neue Daten direkt an die zweite Speicherstelle schreibt,
ohne durch den Cache zu laufen (da der Prozessor nicht involviert ist).
Demnach gibt irgendein Cacheeintrag der zweiten Speicherstelle die
in dem Speicher gespeicherten Daten nicht mehr korrekt wieder. Umgekehrt
muß jeder
Cacheeintrag für
die erste Speicherstelle in den Speicher überschrieben werden, bevor
der Kopiervorgang ausgeführt
wird. Dies stellt dann sicher, daß der Kopiervorgang mit den
aktuellsten Daten für
diese Speicherstelle fortgesetzt wird. Man beachte, daß diese
Cachevorgänge
entweder durch den Prozessor selbst gesteuert werden können vor
dem Senden des Kopierbefehls, und/oder durch die Steuerung in Reaktion
auf den Empfang des Kopierbefehls.
-
In
einer Ausführungsform
sendet die Steuerung eine Bestätigung
zurück
an den Prozessor in Reaktion auf den Empfang des (einzelnen) Kopierbefehls.
Dies ermöglicht
dann, daß der
Prozessor weiß, daß der Kopierbefehl
implementiert ist bzw. umgesetzt wird. Andererseits nimmt der Prozessor,
wenn er eine solche Bestätigung
nicht empfängt,
bevor eine Auszeit abgelaufen ist, an, daß der Kopierbefehl nicht umgesetzt
ist. In diesem Fall kann der Prozessor die Wahl treffen, ob er den
Kopiervorgang selbst ausführt,
wobei der Ansatz der Ausgabe aufeinanderfolgender Lese- und Schreibbefehle
nach dem Stand der Technik verwendet wird. Der Vorteil dieser Möglichkeit
besteht darin, daß er
eine Rückwärtskompatibilität mit Komponenten
aufrechterhält,
die den Einzelkopierbefehl nicht unterstützen.
-
Gemäß einer
anderen Ausführungsform
der Erfindung ist ein Verfahren zum Betreiben eines Computersystems
vorgesehen, welches einen Prozessor, eine Steuerung und eine Datenkommunikationseinrichtung
beinhaltet, die den Prozessor und die Steuerung miteinander verbindet.
Das Computersystem enthält
weiterhin einen Speicher, der eine Mehrzahl von Speicherstellen
zum Speichern von Daten hat. Das Verfahren weist die Schritte auf,
daß ein
einziger Befehl von dem Prozessor an die Steuerung ausgegeben wird,
wobei der Befehl eine erste Speicherstelle und eine zweite Speicherstelle
angibt, und wobei in Reaktion auf den Empfang des Befehls durch
die Steuerung Daten von einer ersten Speicherstelle an eine zweite
Speicherstelle kopiert werden.
-
Es
versteht sich, daß derartige
Verfahren im allgemeinen dieselben besonderen Merkmale verwenden
können,
wie sie oben in Bezug auf die Ausführungsformen des Systems beschrieben
wurden.
-
Kurze Beschreibung der
Figuren
-
Es
werden nun verschiedene Ausführungsformen
der Erfindung im einzelnen und nur beispielhaft unter Bezug auf
die folgenden Zeichnungen beschrieben, in denen gleiche Bezugszahlen
sich auf gleiche Elemente beziehen, und in denen:
-
1 ein
Diagramm ist, welches in schematischer Form die Hauptbestandteile
eines typischen Computersystems nach dem Stand der Technik zeigt,
-
2 ein
Flußdiagramm
ist, welches Schritte zeigt, die gemäß einer Ausführungsform
der vorliegenden Erfindung ausgeführt werden, um einen Kopiervorgang
zu implementieren,
-
3A–3C den
Inhalt eines Speichers und eine Speicherzuordnungstabelle in verschiedenen
Stufen eines Kopiervorgangs veranschaulichen, und zwar gemäß einer
Ausführungsform
der vorliegenden Erfindung, und
-
4 ein
Flußdiagramm
ist, welches Schritte zeigt, die gemäß einer Ausführungsform
der vorliegenden Erfindung ausgeführt werden, wenn der Prozessor
versucht, auf Daten zuzugreifen, die Gegenstand des Kopiervorgangs
nach 2 sind.
-
Genaue Beschreibung
-
2 veranschaulicht
ein Verfahren zum Durchführen
eines Kopiervorgangs gemäß einer Ausführungsform
der Erfindung. Dieses Verfahren wird typischerweise in einem System
implementiert bzw. umgesetzt, das insgesamt eine Architektur hat, wie
sie in 1 dargestellt ist (oder irgendeine Variante hiervon).
-
Das
Verfahren gemäß 2 beginnt,
wenn der Prozessor einen Befehl ausführt, einen Bereich von Speicher
(die Quellposition) an einen anderen Bereich des Speichers (die
Zielposition) zu kopieren (Schritt 200). Dieser Befehl
kann das Ergebnis irgendeiner Anwendung oder einer Aufgabe des Betriebssystems
sein, die das Erzeugen einer Kopie der Daten erfordert. Ein Beispiel,
wo solch eine Operation oftmals ausgeführt wird, ist, wenn das System
einen eingehenden Datenstrom, wie z.B. über ein Netzwerk 65,
empfängt.
Typischerweise werden die Daten von einem Kommunikationsvorgang
empfangen und in einem Speicherbereich gespeichert. Die Daten müssen dann
woandershin kopiert werden, um für
ihren endgültigen
Empfänger
verfügbar
zu sein (normalerweise ein Anwendungsprogramm).
-
In
Reaktion auf den Kopierbefehl nimmt die CPU eine Überprüfung vor,
um festzustellen, ob irgendeine der Speicherstellen sich aktuell
in dem Cache befindet (Schritt 210). Der Grund hierfür liegt
darin, daß die
aktuellste Version der Daten für
diese Speicherstelle in dem Cache gespeichert sein kann, ohne daß diese
bereits an den Hauptspeicher (RAM) zurückgespeichert wurde. Dementsprechend
werden, wenn irgendwelche der Quelldaten sich in der Tat in dem
Cache befinden, diese in den RAM zurückgespült (geschrieben) (Schritt 215).
Dies stellt sicher, daß,
wenn der Kopiervorgang in dem RAM ausgeführt wird (ohne die CPU einzubeziehen,
siehe unten), sie die korrekten aktuellen Daten für diese
Speicherstelle verwendet.
-
Man
beachte, daß in
einigen Systemen Cachedaten, die aktualisiert oder durch den Prozessor erzeugt
werden, automatisch von dem Cache in den RAM kopiert werden, und
dabei die beiden synchron gehalten werden. In diesem Fall ist die Überprüfung nach
Schritt 210 und das Überspülen nach
Schritt 215 im allgemeinen unnötig. Auf anderen Systemen können Cachedaten,
die durch den Prozessor erzeugt oder aktualisiert wurden, speziell
markiert werden, wie z.B. durch ein Flag, um anzuzeigen, daß sie in
den RAM zurückgeschrieben
werden müssen.
Bei dieser Anordnung müßte dann
der Schritt 215 des Spülens
bzw. Überschreibens
nur mit den Daten ausgeführt
werden, die auf diese Weise mit einem Flag gekennzeichnet sind (da
für die
verbleibenden, nicht mit einem Flag versehenen Daten der Cache und
der RAM nach wie vor miteinander konsistent wären).
-
Ein
Test wird auch ausgeführt,
um zu erkennen, ob es irgendwelche Daten an der Zielposition in dem
Cache gibt (Schritt 220). (Man beachte, daß dies tatsächlich vor
oder gleichzeitig mit dem Test nach Schritt 210 erfolgen
kann.) Der Grund für
das Testen bzw. Überprüfen auf
Cachedaten an der Zielstelle liegt darin, daß der Kopiervorgang (im Ergebnis)
ein Schreiben an die Zielposition ist. Dementsprechend werden irgendwelche
Daten in dem Cache für
die Zielposition ungültig – mit anderen
Worten, sie repräsentieren
nicht mehr eine genaue lokale Kopie der in dem RAM gespeicherten
Daten.
-
Wenn
in Schritt 220 tatsächlich
ein Cacheeintrag bezüglich
der Zielposition gefunden wird, so werden die relevanten Daten aus
dem Cache ungültig
gemacht (Schritt 230). Selbstverständlich müssen, je nach der Menge an
zu kopierenden Daten, möglicherweise
mehr als ein Cacheeintrag ungültig gemacht
werden (diese müssen
nicht notwendigerweise zusammenhängen).
Typischerweise kann dies einfach erfolgen durch Setzen eines Bits,
welches zu den relevanten Cacheeinträgen gehört, um anzuzeigen, daß sie nicht
mehr gültig
sind. Dies ermöglicht dann,
daß diese
Einträge
in dem Cache zu gegebener Zeit ersetzt werden.
-
Wenn
irgendwelche Cacheeinträge,
welche der Cacheposition entsprechen, in Schritt 230 ungültig gemacht
worden sind, gibt der Prozessor nunmehr einen Kopierbefehl über den
Bus an die Speichersteuerung aus (Schritt 240). Es versteht
sich, daß dieser
Befehl ein neuer Befehl ist, der nicht durch die existierenden standardmäßigen Busprotokolle
unterstützt
wird. Der Befehl kenn zeichnet Quell- und Zielpositionen, auch wenn
das genaue Format von dem speziell verwendeten Busprotokoll abhängt. Typischerweise
kann die Quellposition durch eine Start- und eine Endadresse angegeben
werden oder durch eine Startadresse und eine Größe. Die Zielposition kann dann
in ähnlicher
Weise angegeben werden (auch wenn seine Größe auf der Basis des Quellbereichs
als implizit gegeben angesehen werden kann).
-
Beispielsweise
hat in einer Ausführungsform der
Kopierbefehl das Format: Copy X Y Z, wobei dies ein Befehl ist,
um X Datenworte von der Quelladresse Y an die Zieladresse Z zu übertragen
(man beachte, daß die
Menge an zu übertragenden
Daten stattdessen auch in Bytes oder in irgendeiner anderen geeigneten
Einheit angegeben werden könnte).
-
Man
beachte, daß,
auch wenn in dem Verfahren nach 2 es der
Prozessor ist, der irgendwelche Quelldaten aus dem Cache herausspült und irgendwelche
Zieldaten in dem Cache ungültig macht,
und zwar bevor er einen Kopierbefehl an die Speichersteuerung ausgibt,
in einer anderen Ausführungsform
einer oder beider diese Vorgänge
in der Verantwortung der Speichersteuerung selbst liegen könnten (und
daher auf den Schritt 240 folgen anstatt diesem vorangehen
würden).
Eine weitere Möglichkeit
besteht darin, daß der
Prozessor für
Interaktionen mit gewissen unteren Ebenen (Levels) innerhalb des
Cache (beispielsweise L1) verantwortlich ist, während die Speichersteuerung
für höhere Ebenen in
dem Cache (beispielsweise L2 und L3) verantwortlich ist.
-
Bei
Empfang des Speicherbefehls setzt die Speichersteuerung einen Eintrag
in eine Kopiervorgangstabelle, um den angeforderten Kopierbefehl wiederzugeben
(Schritt 250). Wie nachstehend noch genauer erläutert wird,
stellt diese Zuordnung eine Anzeige des auszuführenden Kopiervorgangs bereit.
-
Die
Speichersteuerung kann nunmehr eine Befehlsbestätigung an den Prozessor zurücksenden (Schritt 260).
Dieser Befehl zeigt an, daß der
Kopiervorgang in Arbeit ist, und erlaubt es dem Prozessor, fortzufahren,
als ob der gewünschte
Speicherkopiervorgang bereits abgeschlossen worden sei. In einigen
Ausführungsformen
wird diese Bestätigung
möglicherweise
nicht abgeschickt, bevor die Steuerung tatsächlich den Kopiervorgang abgeschlossen
hat (d.h. bis nach dem Schritt 270, siehe unten). Dies kann
jedoch zu Verzögerungen
bei dem Prozessor führen
und daher einen negativen Einfluß auf die Leistungsfähigkeit
des Gesamtsystems haben.
-
Demnach
ist es im allgemeinen unter dem Gesichtspunkt der Leistungsfähigkeit
besser, die Bestätigung
nach Schritt 260 von der Speichersteuerung an den Prozessor
schon vor dem Abschluß des Kopiervorgangs
selbst zu senden. Dies ermöglicht dann,
daß der
Prozessor mit der Verarbeitung fortfährt. Es müssen jedoch gewisse Vorsichtsmaßnahmen
getroffen werden, um gegenüber
dem Prozessor die Tatsache zu verheimlichen, daß der Kopiervorgang tatsächlich noch
abläuft,
weil ansonsten die Möglichkeit
von unerwarteten oder falschen Ergebnissen besteht. Diese Vorsichtsmaßnahmen
werden unten in Bezug auf 4 erläutert.
-
Man
beachte, daß,
wenn der Prozessor nicht die Bestätigung nach Schritt 260 innerhalb
der relevanten Auszeitperiode für
das Busprotokoll empfängt,
dies als ein Fehler behandelt wird. Dementsprechend wird irgendein
CPU-Eintrag ausgelöst
und eine geeignete Fehlerverarbeitung kann aufgerufen werden. Typischerweise
implementiert der Prozessor dann die Kopie unter Verwendung des
Ansatzes nach dem Stand der Technik durch Ausgeben getrennter Lese-
und Schreibbefehle auf dem Bus. Ein Vorteil dieser Strategie liegt
darin, daß sie
eine Rückwärtskompatibilität aufrechterhält. Wenn
beispielsweise die Speichersteuerung den einzelnen Kopierbefehl,
wie hier beschrieben wurde, nicht unterstützt, so wird die Kopie dennoch
in angemessener Zeit durch diese Lese- und Schreibbefehle ausgeführt.
-
Unter
der Annahme, daß der
Kopierbefehl in der Tat ordnungsgemäß empfangen und bestätigt wurde,
setzt die Speichersteuerung nunmehr den Kopiervorgang effektiv um
(Schritt 270). Vorausgesetzt, daß die Quell- und Zielorte innerhalb
derselben RAM-Einrichtung (oder einer Gruppe von Einrichtungen,
die an einer einzigen Speichersteuerung angeordnet sind) liegen,
so benötigt
der Kopiervorgang keinerlei Bandbreite auf dem Bus 70.
Stattdessen kann die Speichersteuerung die Kopie implementieren
unter Verwendung einer internen Speicherübertragung. Wenn diese Übertragung
abgeschlossen ist, kann der entsprechende Eintrag aus der Kopiervorgangstabelle
gelöscht
werden, da er nicht mehr erforderlich ist (Schritt 280),
und dies gibt den Abschluß des
Kopiervorgangs wieder.
-
Es
versteht sich, daß bei
dem Verfahren nach 2 der Prozessor nicht mehr beteiligt
ist, nachdem er den Kopiervorgang nach Schritt 240 ausgegeben
hat. Dies ermöglicht
es dem Prozessor daher, andere Befehle auszuführen anstatt Prozessorzyklen
für den
Kopiervorgang zu verwenden. Ein weiterer Vorteil dieses Ansatzes
liegt darin, daß die
kopierten Daten nicht in den Cache 30 eingetragen werden,
wie es der Fall wäre,
wenn die Daten über
den Prozessor geleitet würden.
Im Ergebnis wird der Cache nicht mit Daten aufgefüllt, die
nur bei einem Durchlauf von einer Speicherstelle zu einer anderen den
Prozessor durchlaufen und deshalb wahrscheinlich künftig nur
von geringerem Interesse für
den Prozessor wären.
-
Man
beachte, daß zum
Implementieren des in 2 dargestellten Verfahrens in
einem System, wie es in 1 dargestellt ist, das Busprotokoll
erweitert werden kann, um den neuen Kopierbefehl zu unterstützen (wie
z.B. Copy X Y Z). Zusätzlich
ist der Prozessor so ausgelegt, daß er einen solchen Befehl ausgibt,
soweit dies angemessen ist, und die Speichersteuerung ist so ausgelegt,
daß sie
einen solchen Befehl empfängt
und umsetzt.
-
Die 3A–3C sind
schematische Darstellungen von Datenstrukturen, die in einer Ausführungsform
durch die Speichersteuerung verwendet werden, um den Kopiervorgang
zu unterstützen.
Insbesondere zeigt jede der 3A–3C einen RAM 300,
welcher (der Einfachheit der Darstellung wegen) mehrere Zellen aufweist,
die in einem Gitter angeordnet sind, und eine entsprechende Kopiervorgangstabelle 310,
die durch die Speichersteuerung gepflegt und verwaltet wird. (Man
beachte, daß die verschiedenen
Figuren in den 3A–3C den RAM 300 und
die Kopiervorgangstabelle 310 zu verschiedenen Stufen eines
Kopiervorgangs darstellen.)
-
In 3A ist
angenommen, daß die
Speichersteuerung soeben einen Befehl von dem Prozessor empfangen
hat (entsprechend Schritt 240 in 2), Daten
von einem Quellort (B1–B6)
an einen Zielort (G8–H3)
zu kopieren. (Der Einfachheit der Bezugnahme wegen sind in dem RAM
nach 3A die Ausgangszellen für diesen Kopiervorgang durch
ein "s" gekennzeichnet und
ihr Inhalt durch die Buchstaben i-n, während die Zielzellen durch
ein "t" gekennzeichnet sind.)
Die Steuerung hat den empfangenen Kopierbefehl in die erste Zeile
der Kopiervorgangstabelle 310 eingetragen (entsprechend
Schritt 250 in 2). Man beachte, daß die Kopiervorgangstabelle 310 mehrere
Einträge
enthalten kann, wobei jeder einen anderen Vorgang wiedergibt, der
durch den Prozessor implementiert bzw. umgesetzt werden muß.
-
3B veranschaulicht
die Situation nach teilweiser Durchführung des Kopiervorgangs, nämlich wenn
die ersten vier Zellen kopiert worden sind. An diesem Punkt sind
die ersten vier Zellen (i-I) nunmehr von B1–B5 nach G8–H1 dupliziert worden. Die Kopiervorgangstabelle 310 ist
ebenfalls aktualisiert worden, um die Tatsache wiederzugeben, daß nur zwei
Zellen B5–B6
noch kopiert werden müssen
(in die Zellen H2–H3).
Es ist klar, daß,
wenn diese letzten beiden Zellen kopiert worden sind, der Kopiervorgang
abgeschlossen ist, so daß der
Eintrag dann vollständig
aus der Kopiervorgangstabelle 310 entfernt werden kann
(was dem Schritt 280 in 2 entspricht).
-
4 ist
ein Flußdiagramm,
welches veranschaulicht, wie die Speichersteuerung Prozessoranforderungen
auf einen Zugriff auf Quell- oder Zieldaten während eines solchen Kopiervorgangs
handhabt. (Wie zuvor erläutert,
kann eine solche Zugriffsanforderung durch den Prozessor zu irgendeinem
Zeitpunkt ausgegeben werden, nachdem er die Bestätigung gemäß Schritt 260 empfangen
hat, da es dann für
den Prozessor transparent bzw. sichtbar ist, daß der Kopiervorgang in der
Tat noch in Arbeit ist.)
-
Das
Verfahren nach 4 beginnt mit dem Empfang eines
Zugriffsbefehls von dem Prozessor (oder irgendeiner anderen relevanten
Einrichtung) (Schritt 410). Wie bei einem normalen Speicherzugriffsbefehl
wird dieser an die Speichersteuerung geleitet, welche dann in der
Kopiervorgangstabelle 310 überprüft, um festzustellen, ob die
Anforderung irgendwelche Quell- oder Zieldaten betrifft (Schritt 415).
Falls nicht, kann der angeforderte Zugriffsvorgang direkt und ohne
Probleme ausgeführt
werden (Schritt 418) und der Vorgang bzw. das Verfahren
endet hier.
-
Wenn
andererseits der Zugriffsvorgang Quell- oder Zieldaten betrifft,
so muß dafür Sorge
getragen werden, daß keine
Inkonsistenzen auftreten (d.h., daß der unvollständige Zustand
des Kopiervorgangs für
den Prozessor nicht offengelegt wird). An diesem Punkt verzweigt
die weitere Verarbeitung nunmehr (bei Schritt 420) je nachdem,
ob die Zugriffsanforderung ein Lesevorgang oder ein Schreibvorgang
ist.
-
Für Leseanforderungen
wird festgestellt, ob das Lesen von dem Quellort oder dem Zielort
erfolgen soll (Schritt 430). Im ersten Fall kann die Leseanforderung
ganz normal ablaufen (Schritt 435), da bekannt ist, daß diese
Daten bereits korrekt im Speicher vorhanden sind. In letzterem Fall
ist, wenn das Lesen von dem Zielort stattfinden soll, die Situation
etwas komplizierter, da diese Daten möglicherweise noch nicht verfügbar sind
(d.h. der Kopiervorgang ist möglicherweise
für diesen
Datenteil noch nicht abgeschlossen). Nichtsdestotrotz ist es, da
bekannt ist, daß der
Zielort schließlich
denselben Inhalt wie der Quellort haben wird, möglich, die Leseanforderung von
dem Zielort an den Quellort umzuleiten (Schritt 440). Typischerweise
umfaßt
dies einfach das Bestimmen des Versatzes der Leseanforderung von dem
Beginn der Zielposition und dann Anwenden desselben Versatzes auf
den Anfang der Quellposition. Auf diese Weise empfängt die
Anforderung die Daten, die in den angegebenen Zielbereich kopiert werden,
unabhängig
davon, ob dieser Kopiervorgang tatsächlich schon ausgeführt worden
ist.
-
Wenn
die eingehende Anforderung sich auf ein Schreiben bezieht statt
auf ein Lesen, so wird erneut festgestellt, ob die Anforderung auf
den Quellort oder einen Zielort gerichtet ist (Schritt 460).
Im ersten Fall muß das
Schreiben verzögert
werden, bis die Kopie ausgeführt
worden ist (Schritt 480), ansonsten werden die aktualisierten
Daten anstelle der ursprünglichen
Daten an den Zielort kopiert. Man beachte jedoch, daß verschiedene
Maßnahmen
getroffen werden können,
um diese Verzögerung
abzumildern. Beispielsweise kann dem Kopieren der relevanten Daten
von dem Quellort zum Zielort Priorität gegeben werden, um zu ermöglichen,
daß der Schreibvorgang
schnell fortschreitet. (Diese Priorität kann wirksam sein für das Kopieren
eines bestimmten Abschnitts eines Kopiervorgangs vor anderen Abschnitten
und/oder zum Beschleunigen eines Kopiervorgangs gegenüber anderen
Kopiervorgängen, wenn
mehrere derartige Vorgänge
in einer Schlange in der Kopiervorgangstabelle 310 aufgereiht
sind.) Eine weitere Möglichkeit
besteht darin, das Ausführen
des Schreibens direkt auf irgendeinen verfügbaren Speicherbereich zu erlauben,
der als ein Puffer wirkt, und dann einen Kopiervorgang in der Schlange aufzunehmen,
der von dem Puffer an den Quellort ausgeführt werden muß, nachdem
die Ursprungsdaten aus dem Quellort kopiert worden sind.
-
Wenn
andererseits das Schreiben auf einen Zielort erfolgen soll, so kann
es ohne Verzögerung stattfinden
(Schritt 465), unabhängig
davon, ob der relevante Kopiervorgang bereits ausgeführt worden ist
oder nicht (da dies für
externe Benutzer der Daten nicht von Interesse ist). Die einzige
Vorsichtsmaßnahme,
die notwendig ist, besteht darin, daß, wenn der relevante Kopiervorgang
auf diesen Zielort in der Tat noch anhängig ist, er aus der Schlange
der Kopiervorgangstabelle herausgenommen (verworfen) werden muß (Schritt 470).
Dies stellt dann sicher, daß die
neu geschriebenen Daten nicht anschließend durch eine verspätete (und
nicht mehr passende) Umsetzung des Kopierbefehls überschrieben werden.
-
Das
Ergebnis dieser letzten Situation, wenn eine Schreibanforderung
auf einen Zielort vorliegt, ist in 3C dargestellt.
Hier ist angenommen, daß das System
in dem Zustand nach 3A beginnt und dann eine Schreibanforderung
mit den Werten x und y in die Speicherstellen H0 bzw. H1 empfängt. Wie
in 3C dargestellt, können die Speicherstellen H0 und
H1 unmittelbar mit diesen neuen Werten aktualisiert werden, unabhängig davon,
wie weit der ursprüngliche
Kopiervorgang bereits fortgeschritten ist. Es ist jedoch auch nötig, die
Kopiervorgangstabelle 310 zu aktualisieren, um sicherzustellen,
daß die neuen
x- und y-Daten nicht anschließend
irrtümlich überschrieben
werden. Dies wird erreicht, indem der ursprüngliche Kopiervorgangseintrag
durch zwei Einträge
ersetzt wird, von denen einer die Daten vor H0 und H1 abdeckt und
der andere die Daten nach H0 und H1 abdeckt.
-
Zwei
mögliche
Komplikationen des obigen Ansatzes bestehen in (a) wenn die Quell-
und Zielbereiche überlappen,
und (b) wenn die Quell- und Zielorte durch unterschiedliche Steuerungen
gehandhabt bzw. verwaltet werden. In dem ersten Fall kann dies einfach
als ein Fehler behandelt werden und zu einem Abfangen der CPU (CPU
trap) führen. Dies
kann entweder direkt durch die CPU selbst erfaßt werden, ohne daß der Befehl über den
Bus ausgegeben wird, oder als Ergebnis der Tatsache, daß keine
Speichersteuerung den Befehl annimmt (und damit bestätigt). In
jedem Fall kann dieses Abfangen der CPU den Befehl umsetzen, indem
sie aufeinanderfolgende Lese- und Schreibbefehle ausgibt (wie bei
einem Kopiervorgang nach dem Stand der Technik), da dies durch einen Überlapp
der Bereiche nicht gestört
bzw. beeinflußt
wird.
-
Alternativ
kann die Speichersteuerung so ausgestaltet sein, daß sie die
Situation erkennt und angemessen behandelt. Insbesondere sei angenommen,
daß der
Kopierbefehl Copy X Y Z sei (wie oben im einzelnen erläutert),
und daß ein überlappender Bereich
angegeben ist, so daß Y < Z < Y + X. In dieser
Situation muß der
Kopiervorgang, um ein Überschreiben
von Daten, die noch kopiert werden müssen, zu vermeiden, am Ende
des Quellortes (d.h. bei der Adresse Y + X) beginnen und diesen
Teil zuerst kopieren (an die Adresse Z + X). Der Kopiervorgang schreitet
dann weiter rückwärts durch
den Quellort voran, bis alles in das Ziel kopiert worden ist. (Dies steht
im Gegensatz zum Beginnen des Kopiervorgangs am Anfang des Quellorts,
wie es in den 3A und 3B dargestellt
ist.)
-
Bezüglich der
Situation, in welcher die Quell- und Zielorte durch unterschiedliche
Steuerungen gehandhabt bzw. verwaltet werden, besteht ein möglicher
Ansatz darin, erneut die CPU einzufangen bzw. in Anspruch zu nehmen
(trap). Eine Steuerung muß also
einfach nicht auf einen Kopierbefehl reagieren, wenn sie nicht sowohl
den angegebenen Ziel- als auch den Quellort handhabt. Wenn daher
die Verantwortlichkeit bei zwei verschiedenen Steuerungen liegt,
so sendet keine eine Bestätigung
des Kopierbefehls zurück
an den Prozessor (Schritt 260) in 2. Die sich
daraus ergebende Auszeit bei dem Prozessor führt zu einer geeigneten Fehlerbearbeitung. Dies
umfaßt
typischerweise wieder ein Einfangen der CPU, was dazu führt, daß das Kopieren
durch getrennte Lese- und Schreibvorgänge umgesetzt wird.
-
In
einer mehr ausgeklügelten
Ausführungsform
werden jedoch die Speichersteuerungen in die Lage versetzt, allein
als Quell- oder Zielort zu wirken. In diesem Zusammenhang wird die
Funktionalität zum
Umsetzen des Kopierbefehls im Ergebnis auf zwei Speichersteuerungen
verteilt. Es sei beispielsweise der Quellort durch die Steuerung
A verwaltet und der Zielort durch die Steuerung B. Die Steuerung A
empfängt
den Kopierbefehl des Prozessors und erkennt, daß sie den Quellort besitzt
(jedoch nicht den Zielort). Sie reagiert hierauf, indem sie (passiv)
den Kopiervorgang einstellt bzw. vorbereitet und insbesondere den
Quellort gegen weitere Schreibvorgänge schützt, bis die Kopie abgeschlossen
ist.
-
Die
Steuerung B empfängt
ebenfalls den Kopierbefehl des Prozessors und erkennt, daß sie den Zielort
besitzt (jedoch nicht den Quellort). In dieser Situation sendet
sie eine geeignete Bestätigung
zurück
an die CPU (Schritt 260) und löst ein Peer-to-Peer-Kopieren über den
Bus 70 aus (anstatt einer internen Speicherkopie, wie zuvor
beschrieben). Eine solche Peer-to-Peer-Kopie kann in bequemer Weise
umgesetzt werden durch Verwenden einer Bustransaktion analog zu
einer konventionellen DMA-Übertragung
(der Vorteil hiervon besteht darin, daß es die Kompatibilität mit den
existierenden Systemen maximal macht).
-
Auch
wenn eine Peer-to-Peer-Kopie wie diese die Übertragung von Daten über den
Bus umfaßt, geschieht
dies lediglich einmal (von dem Quellort zum Zielort). Im Gegensatz
dazu benötigt, wenn
der Prozessor den Kopiervorgang ausführt bzw. vermittelt (wie beim
Stand der Technik), dies eine Busbreite gleich dem Zweifachen des
Umfangs der zu kopierenden Daten (einmal für den eingehenden Lesevorgang
in den Prozessor und einmal für
den ausgehenden Schreibvorgang aus dem Prozessor). Dementsprechend
benötigt
das Peer-to-Peer-Kopieren nur die Hälfte der Busbandbreite im Vergleich
zu einem vom Prozessor vermittelten Kopiervorgang.
-
Es
kann wünschenswert
sein, sicherzustellen, daß die
Steuerung A sich in der Tat in einem Zustand befindet, so daß sie als
ein Empfänger
des Peer-to-Peer-Kopierens wirkt (beispielsweise wenn sie die relevante
Einstellung ausgeführt
hat). Ein Weg, dies zu erreichen, besteht dann, daß die Steuerung
A nur eine Peer-to-Peer-Kopie für
eine Speicherstelle akzeptiert, welche zu einem Kopierbefehl paßt, den
sie bereits von dem Prozessor empfangen hat. Eine weitere Möglichkeit
besteht darin, daß die Steuerung
A irgendeine Form einer anfänglichen
Bestätigung über den
Bus senden kann, die dann durch die Steuerung B vor dem Anordnen
der Peer-to-Peer-Kopie beobachtet bzw. festgestellt wird.
-
Ein
komplizierterer Fall tritt auf, wenn der Quell- oder Zielort allein
sich über
zwei Steuerungen hinweg erstreckt. Eine Vielfalt von Protokollmechanismen
kann entwickelt werden, um diese Situation zu handhaben, beispielsweise
den Kopiervorgang in mehrere Vorgänge aufzuspalten, so daß die Quell- und
Zielorte dann vollständig
(jeweils für
sich) in einer einzigen Steuerung liegen bzw. enthalten sind. Dies trägt jedoch
wahrscheinlich zu der Komplexität
des Gesamtsystems beträchtlich
bei und es ist möglicherweise
viel effizienter, in dieser Situation einfach ein Einfangen der
CPU zu wählen
und dann in die Verwendung des Prozessors selbst zurückzufallen, um
den Kopiervorgang über
getrennte Lese-/Schreibbefehle auszuführen.
-
Schlußendlich
erkennt man, auch wenn ein Bereich von Ausführungsformen hier erläutert worden
ist, daß nichtsdestotrotz
viele andere Ausführungsformen
möglich
sind. Beispielsweise können der
RAM 40 und die Speichersteuerung 35 auf derselben
Einrichtung implementiert sein, während der Bus 70 durch
eine Bushierarchie, ein Schaltnetzwerk oder irgendeine andere geeignete
Kommunikationseinrichtung ersetzt werden kann. Zusätzlich kann die
Steuerung zum Verwalten des Kopiervorgangs von der Speichersteuerung 35 getrennt
sein, d.h. sie kann als ein spezieller an dem Bus oder einer anderen
Datenkommunikationseinrichtung angebrachter Bestandteil vorgesehen
sein. In diesem Fall kann das Kopieren ausgeführt werden durch Lesen von
Daten in die Steuerung aus der ersten Speicherstelle und dann Schreiben
von dort an die zweite Speicherstelle (dies vermindert gegenüber dem
Stand der Technik nicht den Busverkehr, vermeidet jedoch, daß der Prozessor
das Kopieren selbst umsetzen muß).
Alternativ kann die Steuerung beispielsweise einen Befehl an die
Speichersteuerungen) senden, eine interne Kopie/Übertragung oder Peer-to-Peer-Kopie auszuführen, je
nachdem, was erforderlich ist. Dieser Ansatz kann besonders attraktiv
sein, wenn es mehrere Speichersteuerungen gibt, da die (separate)
Steuerung dann eine gewisse Art von Koordinationsrolle ausüben kann.
-
Es
versteht sich auch, daß,
während
das System im Kontext eines Vielzweckcomputers beschrieben worden
ist, wie er in 1 dargestellt ist, es auch auf
einen größeren Bereich
von Einrichtungen angewendet werden kann, wie z.B. eine Telekommunikationsvorrichtung,
eingebettete Systeme usw. (Man beachte, daß in diesem Fall gewisse in 1 dargestellte
Komponenten, beispielsweise die I/O-Einheiten 80 und der
Festplattenspeicher 55 wahrscheinlich fortgelassen werden
müssen.)
-
Zusammenfassend
sieht man daher, auch wenn eine Vielfalt besonderer Ausführungsformen hier
im einzelnen beschreiben wurden, daß dieses lediglich anhand einer
beispielhaften Veranschaulichung geschehen ist. Fachleute können sich
viele weitere potentielle Modifikationen und Anpassungen vorstellen,
die in den Schutzumfang der beanspruchten Erfindung fallen.