DE19621108A1 - Pufferspeicher-Betriebsverfahren - Google Patents

Pufferspeicher-Betriebsverfahren

Info

Publication number
DE19621108A1
DE19621108A1 DE19621108A DE19621108A DE19621108A1 DE 19621108 A1 DE19621108 A1 DE 19621108A1 DE 19621108 A DE19621108 A DE 19621108A DE 19621108 A DE19621108 A DE 19621108A DE 19621108 A1 DE19621108 A1 DE 19621108A1
Authority
DE
Germany
Prior art keywords
buffer
memory
state
buffer line
purging
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.)
Withdrawn
Application number
DE19621108A
Other languages
English (en)
Inventor
Hans-Juergen Heinrichs
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.)
Wincor Nixdorf International GmbH
Original Assignee
Wincor Nixdorf International GmbH
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 Wincor Nixdorf International GmbH filed Critical Wincor Nixdorf International GmbH
Priority to DE19621108A priority Critical patent/DE19621108A1/de
Priority to PCT/DE1997/000972 priority patent/WO1997045791A1/de
Publication of DE19621108A1 publication Critical patent/DE19621108A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

Description

Das Verfahren betrifft ein Betriebsverfahren für Pufferspei­ cher in Mehrprozessor-Datenverarbeitungsanlagen.
In elektronischen Rechenanlagen werden zur Steigerung der Leistungsfähigkeit schnelle Pufferspeicher zwischen Zen­ traleinheit und dem Hauptspeicher eingesetzt. Diese Puffer­ speicher werden üblicherweise als "Cache" bezeichnet und er­ zielen ihre hohe Wirksamkeit dadurch, daß von den Prozesso­ ren auf Speicheradressen häufig kurz hintereinander mehrfach zugegriffen wird.
In Multiprozessorsystemen hat es sich als vorteilhaft her­ ausgestellt, für jeden Prozessor einen eigenen Cache vorzu­ sehen. Um bisherige Software weiterverwenden zu können, ist das Rechnersystem so organisiert, daß das logische Verhalten des Systems durch die Pufferspeicher nicht beeinflußt wird. Dieser als Cache-Koheränz bezeichnete Betrieb stellt sicher, daß trotz möglicher mehrfacher Kopien von Daten in den Puf­ ferspeichern die Programmabläufe deterministisch bleiben. Insbesondere wird der Fall behandelt, daß ein Prozessor ei­ nen Speicherinhalt ändern möchte, der in dem Pufferspeicher eines anderen Prozessors vorhanden ist. Sofern die Prozesso­ ren und ihre Pufferspeicher durch ein Bus-System untereinan­ der und mit dem Hauptspeicher gekoppelt sind, können mit dem Acronym "MOESI" bezeichnete Koheränz-Verfahren Anwendung finden, wie sie beispielsweise in dem Artikel von P. Sweazey und A.J. Smith, A Class of Compatible Cache Coherency Proto­ cols and their Support by the IEEE Futurebus, Proceedings of the 13th International Symposium on Computer Architecture, pp.414-423, IEEE 1986, beschrieben sind.
Pufferspeicher benutzen als Pufferzeile bezeichnete Blöcke von Daten, die fast immer ein Vielfaches der Wortbreite des Prozessors betragen und häufig sogar ein Mehrfaches der Breite des die Prozessoren mit dem Hauptspeicher verbinden­ den Bussystems ausmachen. Sofern durch eine Schreiboperati­ on eines Prozessors eine Pufferzeile verändert wurde, ist der Hauptspeicherinhalt ungültig. Will eine andere Puffer-Speicher-Steuerung diese Speicherstelle lesen, so wird be­ vorzugt das Bussystem derart bedient, daß die die gültige Pufferzeile besitzende Pufferspeicher-Steuerung die Daten anstelle des Hauptspeichers liefert. Pufferspeicher-Steuerungen übertragen also immer nur vollständige Puffer­ zeilen.
Neben den Prozessoren und ihren Pufferspeichern sind in ei­ nem Rechnersystem auch Ein- und Ausgabegeräte vorhanden, im folgenden kurz als E/A-Geräte bezeichnet, die gleichfalls auf den Speicher zugreifen. E/A-Geräte lesen oder schreiben häufig nur Teile einer Pufferzeile, im folgenden Subblock genannt. Daher unterstützt der Hauptspeicher solche auch als Subblock-Transaktionen bezeichneten Zugriffe.
Um eine Pufferspeicher-Kohärenz bei dem Anschluß von E/A-Geräten auch in dem oben genannten Fall sicherzustellen, bei dem sich die gültigen Daten nur in einem Pufferspeicher be­ finden und von diesem nur als gesamte Pufferzeile bereitge­ stellt werden können, müßte jedes E/A-Gerät gleichfalls ei­ nen eigenen Pufferspeicher, zumindest jedoch eine eigene Pufferspeicher-Steuerung in derselben Art wie ein Prozessor enthalten. Da E/A-Geräte im Gegensatz zu Prozessoren fast nie auf dieselbe Adresse wiederholt zugreifen, bietet ein eigener Pufferspeicher jedoch keinen Leistungsgewinn für die E/A-Operationen gegenüber einer direkten Übertragung in den Hauptspeicher.
Auf eine Pufferspeicher-Steuerung in den E/A-Geräten kann verzichtet werden, wenn mittels Betriebssystemsoftware und durch sie angesteuerter Einrichtungen dafür gesorgt wird, daß die E/A-Zugriffe nur auf nicht in einem Pufferspeicher befindliche Speicherworte erfolgen. Diese Lösung erfordert jedoch eine Software-Vorbereitung und ist damit langsam bzw. nicht robust gegenüber Programmierfehlern im Betriebssystem.
Aufgabe der Erfindung ist es daher, ein Lösung zu finden, die ohne eine eigene Pufferspeicher-Steuerung bei E/A-Geräten auskommt und dennoch robuster und schneller als eine durch Software bestimmte Lösung ist.
Die Erfindung benutzt eines der genannten MOESI-Protokolle und erweitert die Zustände einer jeden Pufferzeile durch ei­ nen Zustand PURGING. Durch diese wenig aufwendige Erweite­ rung in allen Pufferspeicher-Steuerungen benötigt keines der E/A-Geräte eigene Pufferspeicher-Steuerungen und kann den­ noch auf gepufferte Daten kohärent zugreifen.
Fig. 1 zeigt ein Zustandsdiagramm für ein gemäß der Erfin­ dung durch den neuen Zustand PURGING erweitertes Protokoll bezüglich E/A-Operationen.
Im Zustand INVALID ist die Pufferzeile ungültig; dieser Zu­ stand ist dem Fall gleichwertig, daß in der Pufferspeicher-Steuerung der Assoziativspeicher für die Adressen (TAG-Memory) die Adresse nicht enthält. Dieser Zustand wird nur durch Speicheranforderungen des Prozessors verlassen, welche hier nicht weiter betrachtet werden.
Bei den Zuständen EXCLUSIVE und SHARED ist die Pufferzeile gültig, aber gleich dem Inhalt des Hauptspeichers an der be­ zogenen Adresse. Daher führt eine E/A-Schreib-Operation le­ diglich dazu, daß die Pufferzeile als INVALID markiert wird. Bei einer E/A-Lese-Operation ist keine Änderung des Zustands der Pufferzeile notwendig. Die E/A-Operation wird von der E/A-Einheit mit dem Hauptspeicher abgewickelt.
Lediglich bei einem der Zustände MODIFIED oder OWNED ist der Fall gegeben, daß die Pufferzeile in dem Pufferspeicher gül­ tig ist und somit die entsprechenden Daten im Hauptspeicher veraltet sind. MODIFIED kennzeichnet den Fall, daß nur die entsprechend markierte Zeile die gültigen Daten enthält. OWNED kennzeichnet den Fall, daß andere Pufferspeicher auch gültige Daten enthalten können, aber die mit OWNED markierte Pufferzeile die Daten bereitzustellen hat. Ob eine Ausfüh­ rungsform der Erfindung überhaupt den Zustand OWNED verwen­ det, ist dabei unerheblich. Diese Zustände werden als "Intervenient" bezeichnet, weil der Pufferspeicher beim Zu­ griff auf diese Daten am Bus intervenieren muß.
Für den Fall, daß ein anderer Prozessor eine Pufferzeile mit einem der "intervenient" Zustände benötigt und daher die ge­ samte Pufferzeile zu lesen beabsichtigt, wird die Puffer-Steuerung anstelle des Hauptspeichers die gesamte Pufferzei­ le über den Bus übertragen.
Trifft jedoch eine E/A-Einheit mit einem Subblock-Speicherzugriff auf eine "intervenient" markierte Pufferzei­ le, so wird zunächst die gesamte Pufferzeile als PURGING markiert. Gleichzeitig wird ein Rückschreiben der gesamten Pufferzeile in den Hauptspeicher angestoßen, die in der gleichen Art erfolgt, wie das Rückschreiben einer Pufferzei­ le durchgeführt wird, wenn die Pufferzeile aus Kapazitäts­ gründen im Puffer verdrängt werden soll. Ist das Rückschrei­ ben beendet, so wird der Zustand in INVALID geändert.
In der bevorzugten Ausführungsform der Erfindung wird ein Bussystem eingesetzt, das einen Abbruch einer Speicheranfor­ derung der E/A-Einheit zuläßt. Der Zustandwechsel in den Zu­ stand PURGING wird gleichzeitig mit der Initiierung des Rückschreibens von der Pufferspeicher-Steuerung dazu be­ nutzt, die Speicheranforderung der E/A-Einheit abzubrechen. Diese versucht daraufhin erneut, das Bussystem zu belegen, was überwiegend erst gelingt, nachdem das Rückschreiben ab­ geschlossen ist. Da nach dem Abschluß des Rückschreibens die Pufferzeile INVALID ist, erfolgt ein normaler Speichertrans­ fer mit dem Hauptspeicher.
Die Pufferzeile wird deshalb mit dem Zustand PURGING mar­ kiert, damit für den Fall, daß dieselbe oder eine andere E/A-Einheit doch noch während des Rückschreibens, beispiels­ weise durch Verzögerungen im Hauptspeicher und dadurch be­ dingtes vorübergehendes Freigeben des Bussystems, einen er­ neuten Zugriff auf die Daten erreicht, dieser Zugriff wieder abgebrochen oder aufgeschoben wird. Ferner wird damit ein Zugriff des Prozessors auf die inkonsistenten Daten verhin­ dert.
Bei einem Hochleistungs-Bussystem mit Vielfach-Zugriff, auch Bus-Transaktionen genannt, bei dem in den Pausen zwischen Adressphase und den Datenphasen eine vorgegebene Maximalzahl weiterer Adressphasen begonnen werden kann, ist ein Abbruch des Speicherzugriffs der E/A-Einheit nur dann unbedingt er­ forderlich, wenn die vorgegebene Maximalzahl von offenen Bus-Transaktionen erreicht ist, damit die Rückschreibung auch beginnen kann. Sofern die Rückschreibung sofort eine Adressphase belegen kann, kann der Speicherzugriff der E/A-Einheit auch verzögert werden. Auch hierbei ist der PURGING-Zustand notwendig, weil die E/A-Einheit bei zu großer Verzö­ gerung auch von sich aus die Bus-Transaktion abbrechen und vor Ende der Rückschreibung dieselbe erneut versuchen könn­ te.
Die Erfindung kann weiter verbessert werden, insbesondere, wenn die E/A-Geräte pro Speicherzugriff nur ein Datenwort in der Breite des Bussystems übertragen.
So werden häufig Lese-Operationen von E/A-Geräten auf gepuf­ ferte Zeilen treffen. Wird dabei der E/A-Transfer abgebro­ chen, so kann die Steuerung im E/A-Gerät dahingehend erwei­ tert werden, daß eine Wartezeit für eine Wiederholung einge­ legt und alle derweil stattfindenden Datenübertragungen auf dem Bussystem daraufhin untersucht werden, ob die benötigten Daten übertragen werden. Dies ist dann auch tatsächlich der Fall, da ja die Pufferzeile durch das Rückschreiben in den Hauptspeicher zurück übertragen wird. Das E/A-Gerät nimmt nun die Daten von dem Bussystem ab, so daß eine Wiederholung entfällt. Eine entsprechende Lösung für den Fall des Schrei­ bens in den Hauptspeicher, bei dem das E/A-Gerät anstelle der Puffer-Steuerung einzelne der Datentransferzyklen auf dem Bus übernimmt, ist gleichfalls möglich. Hierbei ist es vorteilhaft, daß die Markierung der Pufferzeile als "PURGING" die Möglichkeit freischaltet, daß das E/A-Gerät die Daten für Teile der Pufferzeile bereitstellt.
Auch der Fall, daß der Speicherzugriff der E/A-Einheit nur aufgeschoben ist, kann entsprechend verbessert werden. Bei einer Lese-Operation der E/A-Einheit stellt die Puffer-Steuerung das angeforderte Datenwort in einem Register be­ reit und erfüllt den Speicherzugriff, nachdem das Datenwort in den Hauptspeicher übertragen wurde. Bei einer Schreib-Operation wird der Speicherzugriff weder aufgeschoben noch abgebrochen, sondern es wird das in den Hauptspeicher über­ tragene Datenwort in einem Register festgehalten und in dem nachfolgenden, durch den Zustandswechsel nach "PURGING" be­ wirkten Rücktransport das betreffende Datenwort aus dem Re­ gister und nicht aus der Pufferzeile übertragen.
Das bislang für E/A-Einheiten beschriebene Vorgehen ist selbstverständlich auch beispielsweise für Prozessor-Moduln anwendbar, die, z. B. im Rahmen von Synchronisationsmechanis­ men, Subblock-Speicherzugriffe bewirken. Es ist gleichfalls ohne weiteres möglich, die Hauptspeicher auf mehrere Moduln aufzuteilen oder in die Prozessormoduln zu integrieren.

Claims (6)

1. Speicherkohärenz-Betriebsverfahren für eine Datenverar­ beitungsanlage mit mehreren Prozessoren mit jeweils ei­ genen Pufferspeichern, mit den Merkmalen:
  • - die aus Pufferzeilen aufgebauten Pufferspeicher der Prozessoren sind über ein Bussystem untereinander, mit einem Hauptspeicher und weiteren Einheiten derart verbunden, daß Adressinformation über das Bussystem bekannt gemacht wird, um einen einheitlichen, kohären­ ten Speicherzugriff zu erreichen,
  • - das Bussystem erlaubt es, einen Speicherzugriff wäh­ rend der Adressphase daraufhin zu unterscheiden, ob ein Zugriff auf eine gesamte Pufferzeile oder einen Subblock davon erfolgt,
  • - die Pufferzeilen haben eine Markierung, die zumindest folgende Zustände umfaßt:
  • - einen Zustand INVALID, bei dem die Pufferzeile un­ gültig ist,
  • - einen oder mehrere intervenierende Zustände, bei de­ nen die Daten gleicher Adresse im Hauptspeicher un­ gültig sind,
  • - einen Zustand PURGING;
  • - betrifft ein Subblock-Speicherzugriff eine Pufferzeile in einem intervenierenden Zustand, so wechselt der Zu­ stand auf PURGING, und es wird ein Rücktransport der Pufferzeile in den Hauptspeicher initiiert,
  • - ist der Rücktransport einer im Zustand PURGING befind­ lichen Pufferzeile abgeschlossen, so geht die Puffer­ zeile von dem Zustand PURGING in den Zustand INVALID über.
2. Betriebsverfahren nach Anspruch 1 mit dem zusätzlichen Merkmal, daß bei einem Subblock-Speicherzugriff auf eine im Zustand PURGING befindliche Pufferzeile der Subblock-Speicherzugriff verzögert oder abgebrochen wird.
3. Betriebsverfahren nach Anspruch 1 oder 2, wobei ein Sub­ block-Speicherzugriff, der einen Wechsel des Zustands einer Pufferzeile nach PURGING bewirkt, abgebrochen wird.
4. Betriebsverfahren nach einem der vohergehenden Ansprü­ che, wobei das Bussystem mehrere Speicherzugriffe gleichzeitig zuläßt und ein Subblock-Speicherzugriff, der einen Wechsel des Zustands einer Pufferzeile nach PURGING bewirkt, dann abgebrochen wird, wenn für den Rücktransport kein weiterer gleichzeitiger Speicherzu­ griff mehr möglich ist.
5. Betriebsverfahren nach Anspruch 3 oder 4, wobei die die Subblock-Zugriffe initiierende Einheit den gewünschten Subblock während des Rücktransports der Pufferzeile vom Bussystem abnimmt bzw. auf das Bussystem aufschaltet und damit die Wiederholung des abgebrochenen Speicherzu­ griffs vermeidet.
6. Anordnung zur Durchführung eines der Betriebsverfahren nach einem der vorherigen Ansprüche.
DE19621108A 1996-05-24 1996-05-24 Pufferspeicher-Betriebsverfahren Withdrawn DE19621108A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE19621108A DE19621108A1 (de) 1996-05-24 1996-05-24 Pufferspeicher-Betriebsverfahren
PCT/DE1997/000972 WO1997045791A1 (de) 1996-05-24 1997-05-14 Pufferspeicher-betriebsverfahren

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19621108A DE19621108A1 (de) 1996-05-24 1996-05-24 Pufferspeicher-Betriebsverfahren

Publications (1)

Publication Number Publication Date
DE19621108A1 true DE19621108A1 (de) 1997-11-27

Family

ID=7795315

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19621108A Withdrawn DE19621108A1 (de) 1996-05-24 1996-05-24 Pufferspeicher-Betriebsverfahren

Country Status (2)

Country Link
DE (1) DE19621108A1 (de)
WO (1) WO1997045791A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0674267A2 (de) * 1994-03-24 1995-09-27 Hewlett-Packard Company Kohärente DMA Schreibtransaktionen für Teilzeilen eines Cache-Speichers

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2820752B2 (ja) * 1990-01-19 1998-11-05 日本電信電話株式会社 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0674267A2 (de) * 1994-03-24 1995-09-27 Hewlett-Packard Company Kohärente DMA Schreibtransaktionen für Teilzeilen eines Cache-Speichers

Also Published As

Publication number Publication date
WO1997045791A1 (de) 1997-12-04

Similar Documents

Publication Publication Date Title
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE60215417T2 (de) Netzwerkschaltung
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE69733076T2 (de) Hochleistungsdatenweg mit sofortigem xor
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE4218003A1 (de) Sekundaeres cache-speichersystem
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
DE3933849A1 (de) Prozessorgesteuerte schnittstelle
DE112005002180T5 (de) Lösen von Cachekonflikten
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69822866T2 (de) System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE602004010399T2 (de) Neuadressierbare virtuelle dma-steuer und statusregister
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE112004000694B4 (de) Ein Verfahren und eine Vorrichtung zur Verbesserung der Multi-CPU-Systemleistung für Speicherzugriffe
DE60132961T2 (de) Unabhängige Initialisierung von Arbitern und Agenten, um verzögerte Agent-Initialisierung zu ermöglichen
DE60130300T2 (de) Bus, der auf einer Flanke eines Taktsignals abtastet und auf der anderen Flanke treibt
DE112020000843T5 (de) Ausführen mehrerer datenanforderungen von mehrkernprozessoren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal