[go: up one dir, main page]

DE60204687T2 - Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird - Google Patents

Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird Download PDF

Info

Publication number
DE60204687T2
DE60204687T2 DE60204687T DE60204687T DE60204687T2 DE 60204687 T2 DE60204687 T2 DE 60204687T2 DE 60204687 T DE60204687 T DE 60204687T DE 60204687 T DE60204687 T DE 60204687T DE 60204687 T2 DE60204687 T2 DE 60204687T2
Authority
DE
Germany
Prior art keywords
memory
processor
controller
data
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60204687T
Other languages
English (en)
Other versions
DE60204687D1 (de
Inventor
Paul Durrant
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60204687D1 publication Critical patent/DE60204687D1/de
Application granted granted Critical
Publication of DE60204687T2 publication Critical patent/DE60204687T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • 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 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 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.

Claims (29)

  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.
DE60204687T 2002-09-06 2002-09-06 Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird Expired - Fee Related DE60204687T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP02256209A EP1396792B1 (de) 2002-09-06 2002-09-06 Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird

Publications (2)

Publication Number Publication Date
DE60204687D1 DE60204687D1 (de) 2005-07-21
DE60204687T2 true DE60204687T2 (de) 2006-05-18

Family

ID=31502827

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60204687T Expired - Fee Related DE60204687T2 (de) 2002-09-06 2002-09-06 Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird

Country Status (3)

Country Link
US (1) US20040049649A1 (de)
EP (1) EP1396792B1 (de)
DE (1) DE60204687T2 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133972B2 (en) * 2002-06-07 2006-11-07 Micron Technology, Inc. Memory hub with internal cache and/or memory access prediction
US7117316B2 (en) 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US6820181B2 (en) 2002-08-29 2004-11-16 Micron Technology, Inc. Method and system for controlling memory accesses to memory modules having a memory hub architecture
US7120727B2 (en) 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7260685B2 (en) 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7120743B2 (en) 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7243205B2 (en) * 2003-11-13 2007-07-10 Intel Corporation Buffered memory module with implicit to explicit memory command expansion
US7177211B2 (en) 2003-11-13 2007-02-13 Intel Corporation Memory channel test fixture and method
US20050138267A1 (en) * 2003-12-23 2005-06-23 Bains Kuljit S. Integral memory buffer and serial presence detect capability for fully-buffered memory modules
US7330992B2 (en) 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7188219B2 (en) 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7213082B2 (en) * 2004-03-29 2007-05-01 Micron Technology, Inc. Memory hub and method for providing memory sequencing hints
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7519788B2 (en) * 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US20060168407A1 (en) * 2005-01-26 2006-07-27 Micron Technology, Inc. Memory hub system and method having large virtual page size
US7535918B2 (en) * 2005-06-30 2009-05-19 Intel Corporation Copy on access mechanisms for low latency data movement
US7594094B2 (en) * 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US8019723B2 (en) * 2006-12-20 2011-09-13 International Business Machines Corporation Deferred copy target pull of volume data
US7925626B2 (en) * 2006-12-20 2011-04-12 International Business Machines Corporation Immediate copy target pull of volume data
US20090089515A1 (en) * 2007-10-02 2009-04-02 Qualcomm Incorporated Memory Controller for Performing Memory Block Initialization and Copy
US9218183B2 (en) * 2009-01-30 2015-12-22 Arm Finance Overseas Limited System and method for improving memory transfer
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8205037B2 (en) * 2009-04-08 2012-06-19 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips operating at different voltages
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US9116856B2 (en) 2012-11-08 2015-08-25 Qualcomm Incorporated Intelligent dual data rate (DDR) memory controller
GB2502858B (en) * 2013-03-06 2014-07-02 Imagination Tech Ltd Improved mechanism for copying data in memory
JP2015052844A (ja) * 2013-09-05 2015-03-19 富士通株式会社 コピー制御装置,コピー制御方法及びコピー制御プログラム
KR102174337B1 (ko) 2014-04-08 2020-11-04 삼성전자주식회사 메모리 시스템 및 이를 포함하는 전자 장치
US9697083B2 (en) * 2014-11-21 2017-07-04 International Business Machines Corporation Using geographical location information to provision multiple target storages for a source device
US10353595B2 (en) 2014-11-21 2019-07-16 International Business Machines Corporation Using geographical location information and at least one distance requirement to determine a target storage to provision to backup data for a source device
KR20160061703A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 내부 카피 동작을 수행하는 메모리 장치
US10203888B2 (en) * 2015-12-18 2019-02-12 Intel Corporation Technologies for performing a data copy operation on a data storage device with a power-fail-safe data structure
US10620870B2 (en) 2017-12-08 2020-04-14 Intel Corporation Data storage device with bytewise copy
CN110392084B (zh) * 2018-04-20 2022-02-15 伊姆西Ip控股有限责任公司 在分布式系统中管理地址的方法、设备和计算机程序产品
GB201903513D0 (en) 2019-03-14 2019-05-01 Blueshift Memory Ltd Moving data in a memory and command for memory control
US10936197B2 (en) * 2019-04-15 2021-03-02 EMC IP Holding Company LLC Performing memory copy operations by a processor by employing a compression hardware device
US11567868B2 (en) 2020-11-13 2023-01-31 Taiwan Semiconductor Manufacturing Company, Ltd. Method for copying data within memory device, memory device, and electronic device thereof
US12474854B2 (en) 2022-02-11 2025-11-18 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for copy destination atomicity in devices
US12511077B2 (en) * 2023-07-05 2025-12-30 Samsung Electronics Co., Ltd. Method and device for copy command execution in data storage management system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01258163A (ja) * 1988-04-08 1989-10-16 Fujitsu Ltd ダイレクトメモリアクセス制御装置
JPH06119253A (ja) * 1992-10-02 1994-04-28 Toshiba Corp 二重化メモリ制御装置
EP0683457A1 (de) * 1994-05-20 1995-11-22 Advanced Micro Devices, Inc. Computersystem mit einer Snoopsteuerschaltung
US6003112A (en) * 1997-06-30 1999-12-14 Intel Corporation Memory controller and method for clearing or copying memory utilizing register files to store address information
US6038639A (en) * 1997-09-09 2000-03-14 Storage Technology Corporation Data file storage management system for snapshot copy operations
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US6408369B1 (en) * 1998-03-12 2002-06-18 Emc Corporation Internal copy for a storage controller
US6230241B1 (en) * 1998-09-09 2001-05-08 Cisco Technology, Inc. Apparatus and method for transferring data in a data communications device
US6363385B1 (en) * 1999-06-29 2002-03-26 Emc Corporation Method and apparatus for making independent data copies in a data processing system
TW460786B (en) * 1999-12-09 2001-10-21 Via Tech Inc System to reprogram the content value of the flash memory of the peripheral device and the method thereof
US6516343B1 (en) * 2000-04-24 2003-02-04 Fong Pong Computer system and method for enhancing memory-to-memory copy transactions by utilizing multiple system control units
US6732243B2 (en) * 2001-11-08 2004-05-04 Chaparral Network Storage, Inc. Data mirroring using shared buses

Also Published As

Publication number Publication date
EP1396792A1 (de) 2004-03-10
DE60204687D1 (de) 2005-07-21
US20040049649A1 (en) 2004-03-11
EP1396792B1 (de) 2005-06-15

Similar Documents

Publication Publication Date Title
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE69622253T2 (de) System und verfahren für on-line- und echzeit-datenmigration
DE69329607T2 (de) Programmierte Ethernetanpassungseinrichtung mit frühzeitiger Unterbrechung für Beschleunigung von Datenübertragung
DE19983026B4 (de) Brücke zwischen zwei Bussen mit einem Puffer mit einer einstellbaren Mindestspeicherraummenge für ein Akzeptieren einer Schreibanforderung und Verfahren hierzu
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE60115795T2 (de) Adaptiver Wiederholungsmechanismus
DE69328320T2 (de) Vorrichtung und Verfahren zur Datenübertragung zu und von einem Wirtrechnersystem
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69227061T2 (de) Empfangspuffersteuerungssystem
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE60034998T2 (de) Verbesserungen in oder bezüglich von Mikroprozessoren
DE3390323T1 (de) Ermittlung eines sequentiellen Datenstroms
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE112010003594T5 (de) Dynamische Ressourcen-Zuordnung für verteilte Gruppen-speichernetze
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE3439302A1 (de) Speichersteuerungsvorrichtung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102006046417A1 (de) Datenverarbeitungssystem und Verfahren zum Extrahieren von Daten aus einem OneNAND-Flash-Speicher in ein RAM-Speicherbauelement
DE2422732C2 (de) Hierarchische Speicheranordnung
DE112010005609T5 (de) Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee