PatentDe  


Dokumentenidentifikation DE60204687T2 18.05.2006
EP-Veröffentlichungsnummer 0001396792
Titel Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
Anmelder Sun Microsystems, Inc., Santa Clara, Calif., US
Erfinder Durrant, Paul, Slough, GB
Vertreter Dr. Weber, Dipl.-Phys. Seiffert, Dr. Lieke, 65183 Wiesbaden
DE-Aktenzeichen 60204687
Vertragsstaaten DE, FR, GB
Sprache des Dokument EN
EP-Anmeldetag 06.09.2002
EP-Aktenzeichen 022562094
EP-Offenlegungsdatum 10.03.2004
EP date of grant 15.06.2005
Veröffentlichungstag im Patentblatt 18.05.2006
IPC-Hauptklasse G06F 13/16(2006.01)A, F, I, 20051017, B, H, EP

Beschreibung[de]
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,

3A3C 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 kennzeichnet 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 3A3C 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 3A3C 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 3A3C 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.


Anspruch[de]
  1. Computersystem, welches enthält:

    einen Prozessor,

    eine Steuerung (Controller),

    eine Datenkommunikationseinrichtung, welche den Prozessor und die Steuerung verbindet,

    und

    einen Speicher mit einer Mehrzahl von Positionen zum Speichern von Daten,

    dadurch gekennzeichnet, daß die Steuerung auf einen einzigen Befehl, der von dem Prozessor empfangen wird, mit dem Kopieren von Daten aus einer ersten Speicherstelle an eine zweite Speicherstelle reagiert, wobei der einzelne Befehl die ersten und zweiten Speicherstellen angibt.
  2. System nach Anspruch 1, wobei der Speicher mit der Datenkommunikationseinrichtung über eine Speichersteuerung verbunden ist.
  3. System nach Anspruch 2, wobei die Daten durch eine interne Speicherübertragung von der ersten Speicherstelle an die zweite Speicherstelle übertragen werden, ohne daß sie über die Datenkommunikationseinrichtung laufen.
  4. System nach Anspruch 2 oder 3, wobei die Steuerung durch die Speichersteuerung bereitgestellt wird.
  5. System nach Anspruch 1, wobei ein erster Bereich des Speichers über eine erste Speichersteuerung mit der Datenkommunikationseinrichtung verbunden ist und die erste Speicherstelle enthält, und wobei ein zweiter Speicherbereich über eine zweite Speichersteuerung mit der Datenkommunikationseinrichtung verbunden ist und die zweite Speicherstelle enthält.
  6. System nach Anspruch 5, wobei die Daten unter Verwendung eines Peer-to-Peer-Kopiervorgangs auf der Datenkommunikationseinrichtung von der ersten Speicherstelle an die zweite Speicherstelle kopiert werden.
  7. System nach Anspruch 6, wobei die Datenkommunikationseinrichtung einen direkten Speicherzugriff (DMA – Direct Memory Access) unterstützt, und wobei der Peer-to-Peer-Kopiervorgang unter Verwendung einer Transaktion ausgeführt wird, die zu DMA analog ist.
  8. System nach einem der Ansprüche 5 bis 7, wobei die Steuerung durch die ersten und zweiten Speichersteuerungen bereitgestellt wird.
  9. System nach einem der vorstehenden Ansprüche, wobei die Steuerung eine Aufzeichnung von Kopiervorgängen, die gerade ausgeführt werden, behält.
  10. System nach einem der vorstehenden Ansprüche, wobei der Prozessor vor dem Abschließen des Kopierens Verarbeitungsvorgänge fortsetzen darf.
  11. System nach Anspruch 10, wobei die Steuerung eine Leseanforderung auf die zweite Speicherstelle an die erste Speicherstelle umleitet, falls der Kopiervorgang noch nicht abgeschlossen ist.
  12. System nach Anspruch 10 oder 11, wobei die Steuerung eine Schreibanforderung für die erste Speicherstelle während eines anhängigen Kopiervorgangs verzögert, bis dieser abgeschlossen ist.
  13. System nach einem der Ansprüche 10 bis 12, wobei in Reaktion auf eine Schreibanforderung auf die zweite Speicherstelle vor dem Abschluß des Kopierens die Steuerung den Abschluß des Kopierens für den Teil der zweiten Speicherstelle löscht, der Gegenstand der Schreibanforderung ist.
  14. System nach einem der vorstehenden Ansprüche, welches weiterhin einen Cache aufweist, und wobei jeglicher Cacheeintrag für die zweite Speicherstelle in Reaktion auf den einzelnen Befehl ungültig gemacht wird.
  15. System nach Anspruch 14, wobei jeder Cacheeintrag für die zweite Speicherstelle durch den Prozessor ungültig gemacht wird.
  16. System nach Anspruch 14 oder 15, wobei jeder aktualisierte Cacheeintrag für die erste Speicherstelle in Reaktion auf den einzelnen Befehl in den Speicher "gespült" wird.
  17. System nach einem der vorstehenden Ansprüche, wobei der Prozessor einen speziellen Programmierungsbefehl unterstützt, um Daten von einer ersten Speicherstelle an eine zweite Speicherstelle zu kopieren.
  18. System nach einem der vorstehenden Ansprüche, wobei die Datenkommunikationseinrichtung ein Bus ist.
  19. System nach Anspruch 18, wobei der Bus einen Befehlssatz unterstützt und wobei der einzelne Befehl Teil des Befehlssatzes ist.
  20. System nach einem der vorstehenden Ansprüche, wobei die Steuerung eine Bestätigung eines einzelnen Befehls an den Prozessor zurücksendet, und wobei der Prozessor auf einen Fehler bzw. Ausfall beim Empfang der Bestätigung innerhalb einer vorbestimmten Auszeit-Periode reagiert, um den Kopiervorgang durch Ausgeben getrennter Lese- und Schreibbefehle auszuführen.
  21. Verfahren zum Betreiben eines Computersystems, welches einen Prozessor, eine Steuerung, eine Datenkommunikationseinrichtung, welche den Prozessor und die Steuerung verbindet, und einen Speicher enthält, welcher eine Mehrzahl von Positionen bzw. Stellen zum Speichern von Daten hat, wobei das Verfahren die Schritte aufweist:

    Ausgeben eines einzelnen Befehls von dem Prozessor an die Steuerung, wobei der Befehl eine erste Speicherstelle und eine zweite Speicherstelle angibt, und

    Kopieren von Daten von einer ersten Speicherstelle an eine zweite Speicherstelle in Reaktion auf den Empfang des einzelnen Befehls durch die Steuerung.
  22. Verfahren nach Anspruch 21, wobei die Datenkommunikationseinrichtung ein Bus ist, der einen Befehlssatz unterstützt, und wobei der einzelne Befehl Teil eines Befehlssatzes ist.
  23. Verfahren nach Anspruch 21 oder 22, wobei die Daten durch eine interne Speicherübertragung von der ersten Speicherstelle an die zweite Speicherstelle kopiert werden, ohne über die Datenkommunikationseinrichtung zu laufen.
  24. Verfahren nach einem der Ansprüche 21 bis 23, wobei der Prozessor vor dem Abschluß des Kopierens mit Verarbeitungsvorgängen fortfahren darf.
  25. Verfahren nach Anspruch 24, welches weiterhin den Schritt aufweist, daß eine Leseanforderung auf die zweite Speicherstelle an die erste Speicherstelle umgeleitet wird, wenn die Kopie noch nicht abgeschlossen ist.
  26. Verfahren nach Anspruch 24 oder 25, welches weiterhin den Schritt aufweist, daß eine Schreibanforderung auf die erste Speicherstelle während eines anhängigen Kopiervorgangs bis zu dessen Abschluß verzögert wird.
  27. Verfahren nach einem der Ansprüche 24 bis 26, welches weiterhin das Verfahren aufweist, daß der Abschluß der Kopie für irgendeinen Bereich der zweiten Speicherstelle gelöscht wird, die vor dem Abschluß des Kopiervorgangs Gegenstand einer Schreibanforderung ist.
  28. Verfahren nach einem der Ansprüche 21 bis 27, wobei das Computersystem weiterhin einen Cache aufweist, und wobei das Verfahren weiterhin den Schritt aufweist, daß jeder Cacheeintrag für die zweite Speicherstelle in Reaktion auf den einzelnen Befehl ungültig gemacht wird.
  29. Verfahren nach Anspruch 28, welches weiterhin den Schritt aufweist, daß jeglicher aktualisierte Cacheeintrag für die erste Speicherstelle in Reaktion auf den einzelnen Befehl zu dem Speicher "ausgespült" (flushed to memory) wird.
Es folgen 6 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com