DE69715328T2 - System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen - Google Patents

System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen

Info

Publication number
DE69715328T2
DE69715328T2 DE69715328T DE69715328T DE69715328T2 DE 69715328 T2 DE69715328 T2 DE 69715328T2 DE 69715328 T DE69715328 T DE 69715328T DE 69715328 T DE69715328 T DE 69715328T DE 69715328 T2 DE69715328 T2 DE 69715328T2
Authority
DE
Germany
Prior art keywords
memory
transaction
transactions
ordering
memory transaction
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
DE69715328T
Other languages
English (en)
Other versions
DE69715328D1 (de
Inventor
Zahir Ebrahim
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 DE69715328D1 publication Critical patent/DE69715328D1/de
Application granted granted Critical
Publication of DE69715328T2 publication Critical patent/DE69715328T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich auf eine Speichersteuerung für das Verwalten von Speichertransaktionen sowie auf ein Verfahren zum Verwalten von Speichertransaktionen.
  • Die Erfindung findet ihre Anwendung in Computersystemen, welche Speichersteuerungen verwenden, um den Zugriff auf Speicher zu verwalten, und welche Speichertransaktionen ausführen, die sich verändernde Erfordernisse der Speicherzugriffsreihenfolge haben, und insbesondere in einem System, in welchem eine Speichersteuerung parallele Speichertransaktionen neu ordnet und ausführt in einer Art und Weise, die mit den Anforderungen der Speicherzugriffsreihenfolge jeder Speichertransaktion konsistent ist, die an die Speichersteuerung ausgegeben wird.
  • Definitionen
  • Der Begriff "Verbindung" wird so definiert, daß er den Schaltkreis bzw. die Schaltung und die Datenpfade zwischen einem Datenprozessor und den durch den Datenprozessor verwendeten Speicherressourcen bezeichnet. Die Verbindung kann auch einen Datenprozessor mit verschiedenen Eingabe-/Ausgäbekariälen ebenso wie mit Speicherressourcen verbinden.
  • Der Begriff "streng geordnet", wie im Zusammenhang mit "streng geordneten Transaktionen", wird hier so definiert, daß er bedeutet, daß die Transaktionen in derselben Reihenfolge ausgeführt werden müssen, wie es in dem Programmbefehlsstrom angegeben ist.
  • Der Begriff "paralleles Ausführen von Speichertransaktionen" bezieht sich auf die Tatsache, daß in vielen Computersystemen einige Speichertransaktionen während überlappender Zeitperioden parallel ausgeführt werden können, wobei in der Verbindung verfügbare parallele Speichertransaktionspfade verwendet werden.
  • Der Begriff "Parallelität" bezieht sich im Zusammenhang des vorliegenden Dokumentes auf die parallele Ausführung von Speichertransaktionen während überlappender Zeitperioden, wobei in der Verbindung verfügbare parallele Speichertransaktionspfade verwendet werden. Er bezieht sich nicht auf die parallele Ausführung von Befehlen durch einen Datenprozessor, soweit nicht Programmbefehle über die parallele Ausführung ihrer zugehörigen Speichertransaktionen zufällig parallel ausgeführt werden.
  • Eine Speichertransaktion ist eine der folgenden:
  • - Speichern: Eine Anforderung durch einen Prozessor, den Wert einer angegebenen Speicherstelle zu ersetzen. Die Adresse und der neue Wert sind an die Speichertransaktion gebunden, wenn der Prozessor die Speichertransaktion auslöst. Ein Speichervorgang ist vollendet, wenn der neue Wert für alle Prozessoren in dem System sichtbar ist (global sichtbar).
  • - Laden: Eine Anforderung durch einen Prozessor, den Wert einer angegebenen Speicherstelle herbeizuholen. Die Adresse ist an die Ladetransaktion gebunden, wenn der Prozessor die Ladetransaktion ausführt. Ein Laden ist vollendet, wenn der Wert, der geliefert wird, nicht durch einen durch einen anderen Prozessor vorgenommenen Speichervorgang modifiziert werden kann.
  • - Atomar (unteilbar): Ein Lade-/Speicherpaar mit der Garantie, daß keine andere Speichertransaktion den Zustand des Speichers zwischen dem Laden und dem Speichern verändern wird. Eine atomare bzw. unteilbare Transaktion wird sowohl als ein Ladevorgang als auch als ein Speichervorgang betrachtet.
  • - Spülen: Eine Anforderung durch einen Prozessor, Veränderungen in dem Datenraum zu erzwingen, die in anderer Form für den Befehlsraum erscheinen, um konsistent zu sein. Spültransaktionen werden als Speichervorgänge für Speichermodellzwecke angesehen.
  • - Interrupt: Eine kreuzweise Abruftransaktion von einem Prozessor direkt zu einem anderen Prozessor. Interrupttransaktionen werden ähnlich wie Speichervorgänge für Speichermodellzwecke angesehen.
  • - Vorabheranholen: Wird als ein Ladevorgang für die Speichermodellzwecke angesehen.
  • "Programmreihenfolge" ist eine Reihenfolge pro Prozessor, welche die Folge angibt, in welcher der Prozessor n Befehle logisch ausführt. Speichertransaktionen A und B werden als in Programmreihenfolge angesehen, wenn und nur dann, wenn die Speichertransaktion A durch einen Befehl ausgelöst wird, der vor dem Befehl ausgeführt wird, welcher die Speichertransaktion B bewirkte.
  • Der Begriff "Ordnungsmodell der Speichertransaktion", welcher der Einfachheit halber üblicherweise zu "Speichermodell" verkürzt wird, ist hier so definiert, daß er einen Satz von Regeln bedeutet, welche definieren, inwieweit Speichertransaktionen in einer von der Reihenfolge, in welcher sie erzeugt wurden, abweichenden Reihenfolge ausgeführt werden können. Das folgende sind die Definitionen für vier Speichermodelle aus der Sicht der Verbindung.
  • - RMO (gelockerte Speicherordnung). In Programmen und Programmsegmenten, welche RMO verwenden, gibt es keine Reihenfolgeeinschränkungen für irgendeine Transaktion, die auf die Verbindung ausgegeben wird, welche über diejenigen hinausgehen, die für die Selbstkonsistenz des Prozessors erforderlich sind.
  • - PSO (teilweise Speicherordnung). In Programmen und Programmsegmenten, welche PSO verwenden, blockieren die Ladevorgänge bezüglich aller nachfolgenden Speichertransaktionen und sind bezüglich früherer Ladevorgänge geordnet. Atomare Transaktionen sind bezüglich Ladetransaktionen eingeordnet (das heißt atomare Transaktionen und Ladetransaktionen können nicht aneinander vorbeilaufen). Speichervorgänge können an anderen Speichervorgängen vorbeilaufen, jedoch kann ein späterer Speichervorgang nicht an einer früheren Ladetransaktion vorbeilaufen. Aus einem anderen Blickwinkel ist die Spezifikation von PSO diejenige von RMO mit dem zusätzlichen Erfordernis, daß auf alle Speichertransaktionen mit Ladesemantik (einschließlich Ladevorgängen und atomaren Transaktionen) ein impliziertes Membar LoadLoad LoadStore folgt.
  • - TSO (vollständige Speicherordnung). In Programmen und Programmsegmenten, welche TSO verwenden, laufen Speichervorgänge nicht an anderen Speichervorgängen vorbei, und Ladevorgänge blockieren nachfolgende Speichervorgänge, und Ladevorgänge laufen nicht an anderen Ladevorgängen vorbei. Speichervorgänge dürfen nicht an früheren Ladevorgängen vorbeilaufen, obwohl Ladevorgänge an früheren Speichervorgängen vorbeilaufen können. Atomare Transaktionen blockieren nachfolgende Transaktionen. Aus einer anderen Sicht ist die Spezifikation für TSO diejenige von PSO mit dem zusätzlichen Erfordernis, daß auf alle Speichertransaktionen mit Ladesemantik (einschließlich Ladevorgängen und atomaren Transaktionen) ein impliziertes Membar StoreStore folgt.
  • - SSO (starke sequentielle Ordnung). SSO ist normalerweise für den Zugriff auf I/O- Einrichtungen erforderlich. SSO wird auch in Programmen verwendet, die eine sequentiell konsistente Hardware voraussetzen. Die Reihenfolge der Transaktionsausgabe, die Vollendungsreihenfolge und die Programmreihenfolge sind alle die gleichen. Ladevorgänge und Speichervorgänge in der Programmreihenfolge laufen weder in dem Prozessor noch in der Verbindung aneinander vorbei.
  • Ein weiteres Beispiel eines Speichermodells nach dem Stand der Technik wird offenbart in Kourosh Gharachorloo et al.: "Programming for Different Memory Consistency Models", Journal of Parallel and Distributed Computing, Band 15, Nr. 4, 1. August 1992, S. 399407.
  • Die Begriffe "Synchronisationsbefehle" und "Membar"-Befehle beziehen sich beide auf Befehle, die verwendet werden, um sicherzustellen, daß einige oder alle Arten von Speichertransaktionen vor einem Synchronisationspunkt abgeschlossen werden, bevor die Speichertransaktionen nach dem Synchronisationspunkt ausgeführt werden. Für die Zwecke des vorliegenden Dokumentes werden fünf Typen von Membar-Anweisungen definiert:
  • - Membar Memsync: Alle Speichertransaktionsbefehle (aller Typen) vor diesem Membar- Befehl müssen vollendet sein, bevor irgendwelche anderen Speichertransaktionsbefehle nach diesem Membar-Befehl ausgeführt werden.
  • - Membar Store-Store: Alle Speicheranweisungen vor diesem Membar-Befehl müssen vollendet sein, bevor irgendwelche Speicheranweisungen nach diesem Membar-Befehl ausgeführt werden.
  • - Membar Load-Load: Alle Ladeanweisungen vor diesem Membar-Befehl müssen vollendet sein, bevor irgendwelche anderen Ladeanweisungen nach diesem Membar-Befehl ausgeführt werden.
  • - Membar Store-Load: Alle Speicheranweisungen vor diesem Membar-Befehl müssen vollendet werden, bevor irgendwelche Ladeanweisungen nach diesem Membar-Befehl ausgeführt werden:
  • - Membar Load-Store: Alle Ladeanweisungen vor diesem Membar-Befehl müssen vollendet sein, bevor irgendwelche Speicheranweisungen nach diesem Membar-Befehl ausgeführt werden.
  • Wenn das RMO-Modell verwendet wird, werden irgendwelche Reihenfolgeerfordernisse zwischen zwei Transaktionen zwangsweise durchgesetzt, indem der passende Membar-Befehl (die passenden Membar-Befehle) ausgegeben werden. Wenn das TSO-Modell verwendet wird, folgen auf Ladetransaktionen implizit ein "Membar Load-Load"-Befehl und ein "Membar Load-Store"-Befehl, und auf Speichertransaktionen folgt implizit ein "Membar Store-Store".
  • Verwendung von Speichermodellen in Datenprozessoren
  • Im Kontext eines Datenprozessors (der manchmal auch eine CPU genannt wird), der verschiedene Transaktionen verarbeitet und der die Reihenfolge festlegt, in welcher Speicherzugriffsanforderungen (Speichervorgänge und Ladevorgänge) an Stellen außerhalb seines eigenen Cachespeichers exportiert werden, ist es wohlbekannt, daß der Datenprozessor Speicherzugriffsanforderungen in einer gegenüber der Programmausführungsreihenfolge, in welcher sie erzeugt wurden, abweichenden Reihenfolge exportieren kann, wenn (A) der Datenprozessor aufgrund des Typs der ausgeführten Transaktionen weiß, daß ein Umordnen der Speicherzugriffsanforderungen keinen Fehler hervorruft, und (B) das Neuordnen der exportierten Speicherzugriffsanforderungen gegen die Arbeitsgeschwindigkeit des Systems verbessern kann, indem zugelassen wird, daß verschiedene Speicherzugriffstransaktionen parallel ausgeführt werden.
  • In großen skalierbaren Systemen, ebenso wie in Hochleistungssystemen mit mehreren Prozessoren, kann die ausgeführte Software eine Anzahl verschiedener vordefinierter Speichermodelle verwenden. Vier derartige Speichermodelle sind oben definiert. Die Programmierer, welche eine solche Software entwerfen, können versuchen, die Programmausführung zu beschleunigen, indem Programmbefehle verwendet werden, die implizit oder explizit verschiedene Speichermodelle benutzen. Das heißt, zumindest einige der Befehle in einem Programm können ein Speichermodell beschreiben, welches ermöglicht, daß einige der zu dem Programm gehörenden Speichertransaktionen parallel ausgeführt werden. Ein Programmierer kann versuchen, die Ausführung von Speichertransaktionen in einem Programm zu parallelisieren, indem er nicht in jedem Punkt des Programms eine strenge sequentielle Konsistenz fordert, sondern explizit "Synchronisationspunkte" an sinnvollen Punkten in dem Programm spezifiziert. Derartige Synchronisationspunkte erfordern, daß einige oder alle Arten von Speichertransaktionen vor dem Synchronisationspunkt vollendet werden, bevor die Speichertransaktionen nach dem Synchronisationspunkt ausgeführt werden. Die Verwendung mehrerer Speichermodelle oder die Verwendung eines gelockerten Speichermodells in Kombination mit Membar-Befehlen ermöglicht es theoretisch dem Programmierer, mehr Parallelität in einem Programm zu spezifizieren oder zu ermöglichen, als sie ansonsten möglich wäre. Datenprozessoren haben jedoch im allgemeinen keine Speichermodellinformation für die Verbindung bereitgestellt. In der Tat erwarten die meisten Datenprozessoren, daß alle Speicherzugriffstransaktionen, die von ihnen ausgeführt werden, streng geordnet sind. Im Ergebnis werden in derartigen Datenprozessoren Speichertransaktionen nicht durch die Verbindung neu geordnet, auch wenn die Datenprozessoren intern die Reihenfolge verändern, in welcher die Speichertransaktionen der Verbindung präsentiert werden, so daß sie gegenüber der Reihenfolge, in welcher entsprechende Speichertransaktionsanforderungen durch Programmbefehle erzeugt wurden, unterschiedlich sind.
  • Der PowerPC-Mikroprozessor nimmt einen anderen Weg. Er geht von dem schwächsten Speichermodell (RMD, welches oben definiert ist) aus, und ermöglicht es der Verbindung, alle Transaktionen parallel zu machen. Demnach schiebt der PowerPC dem Programmierer die Aufgabe zu, sicherzustellen, daß alle Programme, sowohl Anwendungs- als auch Systemsoftware, wie z. B. Gerätetreiber, geeignete Speichersynchronisationsbefehle haben. Programme, die für die Hardware von strengeren Speichermodellen ausgehen, laufen auf dem PowerPC nicht ohne Einbeziehung von zahlreichen Synchronisationsbefehlen korrekt ab. Im allgemeinen befindet sich wesentlich mehr Software als 1996 in kommerziellem Gebrauch, welche davon ausgeht, daß die Verbindung strenge Speichermodelle, wie z. B. SSO und TSO verwendet, als es Software gibt, die davon ausgeht, daß die Verbindung schwächere Speichermodelle, wie z. B. PSO und RMO, verwendet.
  • Einige Datenprozessoren unterstützen eine Vielfalt von Speichermodellen innerhalb des Prozessors. Beispielsweise unterstützen die SPARC-Prozessoren SSO, TSO, PSO und RMO allesamt. Dies ermöglicht es derartigen Datenprozessoren, Speichertransaktionen zu und von einem Cachespeicher neu zu ordnen. Diese Datenprozessoren stellen jedoch keine Speichermodellinformation für die Verbindung bereit. Im Ergebnis muß die Verbindung des Datenprozessors ein einzelnes Speicherelement unterstützen, welches für die SPARC-Prozessoren historisch SSO an der Verbindungsschnittstelle für Speicherbezüge gewesen ist. Eingabe-/Ausgabetransaktionen werden in den SPARC-Prozessoren ausgerichtet durch getrennte, in Caches gespeicherte Transaktionen und werden durch die Verbindung ausgeführt, indem nur das SSO-Modell verwendet wird. Demnach gibt es in derartigen Systemen keine Flexibilität oder Möglichkeit, Speichertransaktionen zu parallelisieren, wenn die internen Speichermodelle, welche durch die Ausführungsprogramme verwendet werden, schwächer sind (das heißt, mehr Parallelität erlauben) als das durch die Verbindung implementierte einzige Speichermodell. Dies wird noch signifikanter in NUMA-Architekturen, wo Speicher beliebig weit entfernt sein kann und über ein Verbindungsnetzwerk angeschlossen ist. In derartigen Fällen gibt es noch weitere Gelegenheiten, Transaktionen durch das Verbindungsnetzwerk zu parallelisieren, wenn Speichermodellinformation für die Steuerung des Verbindungsnetzwerkes verfügbar gemacht wird.
  • Besondere und bevorzugte Aspekte der Erfindung sind in den anhängenden unabhängigen und abhängigen Ansprüchen dargelegt.
  • In einem Computersystem, welches einen Datenprozessor hat, der die Verwendung von mehreren Speichertransaktionsordnungsmodellen (Speichermodellen) durch Computerprogramme unterstützt, werden Speichertransaktionen folgendermaßen verwaltet. An einem Gerät, welches für einen Datenprozessor außerhalb liegt, wie z. B. eine Speicher- und Verbindungssteuerung, werden Speichertransaktionsanforderungen von dem Datenprozessor empfangen. Jeder Speichertransaktionsanforderung ist ein Speichermodell zugeordnet, welches aus einer vordefinierten Mehrzahl von Speichermodellen ausgewählt ist. In einer bevorzugten Ausführungsform sind die unterstützten, vordefinierten Speichermodelle SSO (strenge sequentielle Ordnung), TSO (vollständige Speicherordnung), PSO (teilweise Speicherordnung) und RMO (gelockerte Speicherordnung).
  • Daten, welche anhängige Speichertransaktionen repräsentieren, werden in einem oder mehreren Puffern für anhängige Transaktionen und einem Statusfeld für eine anhängige Transaktion gespeichert. Die Zustandsdaten für eine anhängige Transaktion umfassen eine Speichertransaktionsordnung, welche anzeigen, welche der anhängigen Speichertransaktionen vor anderen der anhängigen Speichertransaktionen ausgeführt werden kann. Genauer gesagt, legt die Logik in der Speichersteuerung auf der Basis eines Speichermodells, welches zu einer zuletzt empfangenen Speichertransaktionsanforderung gehört, sowie des Speichermodells, welches zu zumindest einer weiteren anhängigen Speichertransaktion gehört, fest, ob die zu der zuletzt empfangenen Speichertransaktionsanforderung gehörige Speichertransaktion vor der anderen anhängigen Speichertransaktion ausgeführt werden kann und speichert dann die Daten, welche diese Reihenfolgenbestimmung repräsentiert, in einer Transaktionswertetabelle.
  • Die Speichersteuerung führt die anhängigen Speichertransaktionen in einer Reihenfolge aus, die mit den Reihenfolgedaten der Speichertransaktion konsistent ist. Im Ergebnis wird ein Teilsatz der anhängigen Speichertransaktionen in einer anderen Reihenfolge ausgeführt, als sie von dem Datenprozessor empfangen wurden.
  • Beispielhafte Ausführungsformen der Erfindung werden nachstehend anhand eines Beispiels unter Bezug auf die zugehörigen Zeichnungen beschrieben, von denen:
  • Fig. 1 ein Blockdiagramm eines Computersystems ist, welches eine Ausführungsform der vorliegenden Erfindung verwirklicht.
  • Fig. 2 ein Blockdiagramm einer Speichersteuerung gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • Fig. 3 ein Blockdiagramm eines Abschnittes der Transaktionswertetabelle und der Speichersteuerungslogik ist, welche in einer Ausführungsform der vorliegenden Erfindung verwendet werden.
  • Fig. 4 ein Blockdiagramm eines weiteren Teils der Transaktionswertetabelle und der Speichersteuerungslogik ist, welche in einer Ausführungsform der vorliegenden Erfindung verwendet werden.
  • Fig. 5 ein Blockdiagramm eines Abschnittes der Transaktionswertetabelle und der Transaktionsausführungslogik ist, die in einer Ausführungsform der vorliegenden Erfindung verwendet werden.
  • Fig. 6 ein Flußdiagramm der Betriebsweise der Speichersteuerung in Reaktion auf den Empfang einer Speichertransaktionsanforderung von einem Datenprozessor gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • Fig. 7 ein Flußdiagramm der Betriebsweise der Speichersteuerung in Reaktion auf die Vollendung einer Speichertransaktion in einer Ausführungsform der vorliegenden Erfindung ist.
  • Gemäß Fig. 1 ist ein Computersystem 100 dargestellt, welches ein Cluster von Prozessoren 104 umfaßt. Die Prozessoren 104 sind über ein Verbindungsnetzwerk 106 mit einem Primärspeicher (Speicher mit wahlweisern Zugriff - RAM) 108, einem Sekundärspeicher 110 (nicht flüchtiger Speicher, wie z. B. ein magnetischer Plattenspeicher) und Eingabe-/Ausgabequellen 111 verbunden. Eine Netzwerkschnittstelle 112 kann Zugriff zu einem ferngelegenen Speicher 113 gewähren, der zu anderen Prozessorclustern gehört. Ein Zugriff auf den Primärspeicher 108, den Sekundärspeicher 110, die Eingabe-/Ausgabe-Ressourcen 111 und den ferngelegenen Speicher 113 wird durch eine Verbindungs- und Speichersteuerung 114 verwaltet. Andere Cluster von Prozessoren 104 haben gemeinsam Zugriff auf den ferngelegenen Speicher 113 und auf die lokalen Speicherressourcen dieses Clusters über ihre eigenen Verbindungsnetzwerke 106.
  • Für die Zwecke des vorliegenden Dokumentes bezieht sich der Begriff "Speichersteuerung" auf jegliche Steuerlogik außerhalb des Datenprozessors, die von dem Datenprozessor den Cache verfehlende Transaktionen empfängt. Dies kann eine Verbindungssteuerung, eine Speicherfernsteuerung, eine I/O-Steuerung usw. sein.
  • Jeder Prozessor 104 in dem Cluster weist seinen eigenen lokalen Cachespeicher 120 auf, der mit dem in den Cachespeichern der anderen Prozessoren in dem System gespeicherten Inhalt kohärent (das heißt konsistent) gehalten werden kann, je nach der Art der implementierten, gemeinsam verwendeten Speicherarchitektur. Jeder Prozessor 104 umfaßt außerdem eine Speicherverwaltungseinheit 122, welche Übersetzungs-Vorgriffs-Puffer (TLB) für das Konvertieren virtueller Adressen aufweist, die durch Vorgänge verwendet werden, welche von dem Datenprozessor 104 ausgeführt werden, und zwar in physikalische Adressen, die den Speicherstellen in den verschiedenen Speichereinheiten 108, 110 entsprechen.
  • Wenn eine Kopie der Daten in der sich ergebenden primären physikalischen Speicheradresse in den Cachespeicher 120 gespeichert wird, so greift der Prozessor 104 auf die adressierten Daten direkt in seinem Cachespeicher 120 zu. Wenn die adressierten Daten sich nicht in dem Cachespeicher 120 befinden, holt die Verbindungs- und Speichersteuerung 114 die adressierten Daten von dem primären Speicher 108, dem sekundären Speicher 110 oder dem ferngelegenen Speicher 112 heran und speichert sie in dem Cachespeicher 120. In dem Fall, in welchem Daten, welche von einem sekundären Speicher 110 (DMA von der Festplatte) oder einem ferngelegenen Speicher 113 (wie z. B. in COMA- und einfachen COMA-Architekturen) wiedergewonnen bzw. herangeholt werden, wird eine vollständige Datenseite typischerweise zuerst unter Softwaresteuerung in den Primärspeicher 108 kopiert und dann wird ein kleiner Datenblock, der eine Cachezeile genannt wird, von dort in den Cachespeicher 120 kopiert. In NUMA-Architekturen können die Daten aus dem ferngelegenen Speicher 113 direkt in den Cachespeicher 120 herangeholt werden. Dann greift der Prozessor 104 auf die adressierten Daten aus seinem Cachespeicher 120 zu.
  • In einer bevorzugten Ausführungsform der vorliegenden Erfindung hat jede Speichertransaktion (das heißt eine Lade-, Speicher- oder atomare Speichertransaktion), die an die Verbindung und die Speichersteuerung 114 abgeschickt wird, einen zugehörigen Speichermodellwert MM[1:0] von 2 Bit, deren Werte 11 für SSO, 10 für TSO, 01 für PSO und 00 für RMO sind. Alle Speichertransaktionen in der ISA (Befehlssatzarchitektur) des Prozessors sind einer dieser Kategorien von Transaktionen: Laden, Speichern und atomar, zugeordnet. Beispielsweise ist ein "Interrupt abgeschickt" der Transaktionskategorie "Speichern" zugeordnet, ein "Block Store" ist der Transaktionskategorie Speichern zugeordnet, ein Heranholen ist der "Lade"-Transaktionskategorie zugeordnet usw.
  • Speichermodellinformation kann in diesen Zuordnungen ebenfalls spezifiziert werden. Beispielsweise kann ein Heranhol-Ladevorgang mit dem Speichermodell RMO ausgegeben werden. Ein Interrupt kann entweder mit einem (A) Speichermodell SSO, insbesondere wenn es hinter einem Speichervorgang in den Speicher geordnet sein muß, oder (B) einem Speichermodell RMO ausgegeben werden, wenn es keine Abhängigkeit von früheren Speichervorgängen gibt. Dies ist anwendbar, selbst wenn Interrupttransaktionen einen zugeordneten Transaktionstyp für die Verbindung verrenden, da die Speichermodellbits MM die Ordnungsbeschränkungen für die Interrupttransaktionen spezifizieren, um die Verwendung von mehr Parallelität zu ermöglichen, wenn dies angemessen ist.
  • Die MM[1:0] Bits können entweder durch ein Prozessorzustandsregister oder aus dem Eintrag der Seitentabelle bereitgestellt werden, der durch die MMU 122 verwendet wird, um die zu der Speichertransaktion gehörige Adresse in eine physikalische Adresse zu übersetzen (das heißt in einigen Implementierungen der vorliegenden Erfindung kann die Speichermodelleigenschaft jeweils für eine Seite in den Seitentabellen markiert werden, die durch die MMU verwendet werden). Das Einschließen des MM- (Speichermodell-) Wertes in die Speichertransaktionsanforderung, die an die Verbindung (das heißt an die Verbindungs- und Speichersteuerung 114) geschickt wird, ermöglicht es der Verbindungs- und Speichersteuerung 114, nachzuvollziehen, welche Transaktion unter welchem Speichermodell ausgegeben wurde, wenn mehrere offenstehende Transaktionen von einem Datenprozessor vorliegen. Dies ermöglicht es der Steuerung 114 auch, Speichertransaktionen zu parallelisieren, die unter schwächeren Speichermodellen ausgegeben wurden, wenn eine parallele Transaktionsverarbeitung möglich ist, und die strenge Ordnung für Transaktionen, dis unter strengeren Speichermodellen ausgegeben wurden, sicherzustellen.
  • Die Gesamtlatenzzeit bzw. Wartezeit zum Vollenden mehrerer offenstehender Speichertransaktionen wird oft beträchtlich reduziert, wenn einige Transaktionen außerhalb der Reihenfolge durchgeführt werden können, um die Parallelität maximal zu machen (das heißt z. B. parallele Speichertransaktionspfade zu benutzen, wann immer dies möglich ist). Dies verbessert auch den Gesamtdurchsatz der Verbindung.
  • Das Codieren des Speichermodells des Prozessors zusammen mit jeder Speichertransaktion, die an die Verbindung in einer klaren, einförmigen und effizienten Art und Weise exportiert wird, ermöglicht die Verbindung paralleler Speichertransaktionspfade, wie sie für jedes der Speichermodelle anwendbar sind und ermöglicht außerdem eine effiziente Pipelineverarbeitung für Speichertransaktionen, die in sequentieller Reihenfolge ausgeführt werden müssen.
  • Gemäß Fig. 2 umfaßt die Verbindungs- und Speichersteuerung 114 eine Speichersteuerungslogik 130, welche eine Anzahl von Zustandsmaschinen umfaßt, um die anhängigen Speichertransaktionen zu verfolgen, wechselseitige Verbindungen zwischen anhängigen Transaktionen zu bestimmen und die Ausführung der Transaktionen zu verwalten. Speichertransaktionsanforderungen werden an einer Speichertransaktionsschnittstelle oder einem Anschluß 131 empfangen und dann in einem von mehreren Puffern 132, 134, 136 gespeichert, die verwendet werden, um anhängige, nicht geordnete Transaktionen bzw. geordnete Ladetransaktionen bzw. geordnete Speichertransaktionen zu speichern. Alternativ können alle anhängigen Speichertransaktionen in einem einzelnen Puffer gespeichert werden.
  • Statusinformationen über die anhängigen Speichertransaktionen werden in einer Transaktionswertetafel 140 gespeichert, von welcher nachstehend einige Teile genauer beschrieben werden. Grundsätzlich speichert jedoch die Transaktionswertetafel 140 eine Aufzeichnung 142 für jede anhängige Speichertransaktion. Die Aufzeichnungen werden in derselben Reihenfolge angeordnet, wie sie von dem Datenprozessor empfangen werden. Jede Aufzeichnung umfaßt einen Zeiger zu der Pufferstelle, wo, die Transaktionsanforderung gespeichert ist, Statusinformation über die Verknüpfung von Transaktionen, die Verknüpfungsplan bzw. Verbindungsplan genannt wird.
  • In einer bevorzugten Ausführungsform wird, wenn der Datenprozessor einen Membar-Befehl ausführt, dieser Befehl an die Verbindungs- und Speichersteuerung 114 weitergeleitet, welche dann eine Wiedergabe des Membar-Befehls in einem Membar-Puffer 144 speichert. Insbesondere umfaßt der Membar-Puffer 144 eine Aufzeichnung entsprechend jeder Aufzeichnung 142 der Transaktionswertetafel 140. Die in jeder Membar-Aufzeichnung gespeicherten Daten zeigen an, welche Typen von Transaktionen nicht vor der entsprechenden anhängigen Transaktion erfolgen können, und zwar aufgrund der Ausführung von Membar-Synchronisationsbefehlen durch den Datenprozessor. Die Einschränkungen der Membar-Transaktion kommen zu den Reihenfolgeeinschränkungen der Speichertransaktion hinzu bzw. gehen diesen vor, welche mit den verschiedenen Speichermodellen verknüpft sind.
  • Die Einschränkung der Reihenfolge der Speichertransaktionen, die mit den verschiedenen Speichermodellen verknüpft sind, werden durch einen Satz von Transaktionsordnungstabellen 146 wiedergegeben. Jede Tabelle 146 kann man sich vorstellen als vierdimensionale Tabelle, deren Achsen TXT1 (der Transaktionstyp der vorangehenden Transaktion), MM1 (das zu der vorangehenden Transaktion gehörige Speichermodell), TXT2 (der Transaktionstyp einer nächsten Transaktion) und MM2 (das zu der nächsten Transaktion gehörige Speichermodell) sind. Aus später noch zu erläuternden Gründen speichert in einer Ausführungsform die Verbindungs- und Speichersteuerung 114 N Kopien der Transaktionsordnungstabelle 146, wobei N das maximale Maß der zulässigen Transaktionsneuordnung ist (das heißt wenn N gleich 3 ist, so kann eine Transaktion höchstens bezüglich der drei unmittelbar vorangehenden Speichertransaktionen neu geordnet werden).
  • Teile der Transaktionsordnungstabelle 146 sind in den Tabellen 1 bis 4 wiedergegeben. In jeder dieser Tabellen zeigt die Zeilenüberschrift den Transaktionstyp und das Speichermodell der vorangehenden Transaktion an und die Spaltenüberschrift zeigt den Transaktionstyp und das Speichermodell der nachfolgenden Transaktion an. Die Tabelleneinträge, die jeweils gleich "M" oder "P" sind, werden folgendermaßen definiert:
  • - P: Ausführen der beiden Speichertransaktionen in der Programmausgabereihenfolge (das heißt in derselben Reihenfolge, wie sie von der Speichersteuerung empfangen wurden).
  • - M: Ausführen der beiden Speichertransaktionen in beliebiger Reihenfolge. Tabelle 1 TSO und SSO Tabelle 2 RMO und SSO Tabelle 3 RMO und TSO Tabelle 4 PSO und SSO
  • Die "Verhaltensweisen" des Speichertransaktionsmodells, welche durch die Ordnungsbeschränkungen in der Transaktionsordnungstabelle 146 wiedergegeben werden, sind etwas willkürlich. Nenn jedoch die mit der Transaktionsordnungstabelle 146 verknüpften Ordnungs- bzw. Reihenfolgeeinschränkungen ausgewählt bzw. spezifiziert worden sind, so sind sie vergleichbar mit einem Vertrag zwischen dem Computersystem und dem Programmierer. Der Programmierer verwendet diesen Vertrag, um zu bestimmen, wo Membar-Befehle (die auch Zaun-, Grenz- oder Synchronisationsbefehle genannt werden) eingefügt werden müssen, um irgendwelche Speichertransaktionsordnungserfordernisse in Kraft zu setzen, die mit den Aufgaben verknüpft sind, welche durch ein spezielles Programm ausgeführt werden.
  • Die Verwendung einer Transaktionsordnungstabelle 146 als Basis für das Festlegen, welche Eingabe-/Ausgabe- und Speichertransaktionen neu geordnet oder parallelisiert werden können, stellt eine Flexibilität bereit insofern, als die Transaktionsordnungstabelle 146 einfach erweitert werden kann, um neue Speichermodelle zu handhaben, und auch weil die Transaktionsordnungstabelle 146 einfach modifiziert werden kann (indem ausgewählte) "P"-Einträge durch "M" ersetzt werden oder umgekehrt), um eine Anpassung an Veränderungen in den Definitionen der Speichermodelle vorzunehmen.
  • Die Speichersteuerung umfaßt auch eine Transaktionsabfertigungslogik 148, die der logische Schaltkreis ist für das Auswählen einer anhängigen Transaktion, falls vorhanden, um diese für jede Speicherressource auszuführen, die bereit ist, eine weitere Speichertransaktion anzunehmen.
  • BEISPIEL
  • Die Fig. 3-7 repräsentieren eine beispielhafte Realisierung der vorliegenden Erfindung. Andere Realisierungen bzw. Implementierungen könnten eine sogar noch größere Parallelität zwischen Transaktionen bereitstellen.
  • Verknüpfungsbestimmungslogik für das Erzeugen des Verknüpfungsplanes für eine empfangene Transaktion
  • Gemäß Fig. 3 werden wir, um die Betriebsweise der Verbindungs- und Speichersteuerung 114 zu erläutern, eine Steuerung 114 beschreiben, die bis zu sieben anhängige Speichertransaktionen pro Datenprozessor speichern kann, die eine Speichertransaktion bezüglich derjenigen Transaktionen, die um bis zu drei Transaktionen vor der in Rede stehenden Transaktion empfangen wurden, neu ordnen kann, und die drei parallele Speichertransaktionspfade für das Ausführen der Transaktion verwendet. In anderen Ausführungsformen können sich die maximale Anzahl der gespeicherten Transaktionen, die Tiefe der Transaktionsneuordnung und die Anzahl der unterschiedlichen Speicherressourcen von den ausgewählten Werten dieses Modells unterscheiden.
  • Wie in Fig. 3 dargestellt, speichert die Aufzeichnung 142 jeder Transaktionswertetafel das Speichermodell (MM) für eine zugehörige Transaktion, den Transaktionstyp (TXT (das heißt Laden, Speichern oder Unteilbar)) und einen Verkettungs- bzw. Verknüpfungsplan 150, der Ordnungsbeschränkungen bezüglich der drei unmittelbar vorangehenden Transaktionen anzeigt.
  • Die drei Bits des Verkettungs- bzw. Verknüpfungsplanes für jede anhängige Transaktion sind folgendermaßen definiert. InterlockMap(i,0) ist gleich 1, wenn die i-te anhängige Transaktion nicht bezüglich ihrer unmittelbar vorangehenden Transaktion neu angeordnet werden kann und sie ist gleich 0, wenn die i-te anhängige Transaktion bezüglich ihrer unmittelbar vorangehenden Transaktion neu geordnet werden kann. In ähnlicher Weise ist InterlockMap(i,1) gleich 1, wenn die i-te anhängige Transaktion bezüglich der zweiten Transaktion vor der i-ten Transaktion nicht neu geordnet werden kann (das heißt die durch i+2. Eintrag in der Transaktionswertetafel wiedergegebene Transaktion), und ist gleich 0, wenn die i-te anhängige Transaktion bezüglich der zweiten Transaktion vor der i-ten Transaktion neu geordnet werden kann. Schließlich ist InterlockMap(i,2) gleich 1, wenn die i-te anhängige Transaktion bezüglich der dritten Transaktion vor der i-ten Transaktion neu angeordnet werden kann (das heißt der durch den i+3. Eintrag in der Transaktionswertetafel wiedergegebenen Transaktion) und ist gleich 0, wenn die i-te anhängige Transaktion bezüglich der dritten Transaktion vor der i-ten Transaktion neu angeordnet werden kann.
  • Wenn wir für einen Moment die Membar-Überschreibelogik (MOL) 152 ignorieren, so wird Interlock-Map(0,0)durch die Verknüpfungsbestimmungslogik 154 erzeugt (die ein Teil der Speichersteuerlogik 130 ist), einfach indem der Eintrag in der Transaktionsordnungstabelle 146 nachgeschlagen wird, welcher der aktuellen Transaktion und der vorangehenden Transaktion entspricht. Das heißt, eine Ordnungs- bzw. Reihenfolgenbeschränkung wird als eine Funktion des Speichermodells und des Transaktionstyps (MM0, TXT0) der aktuellen Transaktion und derjenigen (MM1, TXT1) der vorangehenden Transaktion erzeugt. Wenn der Tabelleneintrag gleich "P" ist, so wird eine logische "1" ausgegeben, was bedeutet, daß die Transaktionen in ihrer Reihenfolge angeordnet sein müssen. Anderenfalls wird eine "0" ausgegeben, was bedeutet, daß diese beiden Transaktionen parallel oder in gegenüber der Empfangsreihenfolge entgegengesetzten Reihenfolge ausgeführt werden können.
  • InterlockMap(0,1) wird erzeugt, indem die Transaktionsordnungstabelle 146 überprüft wird, um festzustellen, daß das Erfordernis einer sequentiellen Anordnung zwischen der aktuellen Transaktion und der um zwei Transaktionen vor der aktuellen Transaktion empfangenen Transaktion gibt. Selbst wenn es zwischen diesen beiden Transaktionen auf der Basis ihrer Transaktionstypen mit Speichermodellen kein Erfordernis der sequentiellen Anordnung gibt, so liegt ein indirektes sequentielles Anordnungserfordernis zwischen diesen beiden Transaktionen vor, wenn (A) es ein sequentielles Anordnungserfordernis zwischen der aktuellen Transaktion und der unmittelbar vorangehenden Transaktion gibt und (B) wenn es auch ein Erfordernis der sequentiellen Anordnung zwischen der vorangehenden Transaktion und der Transaktion unmittelbar vor derselben gibt. Dieses indirekte Erfordernis der sequentiellen Anordnung bzw. Reihenfolge wird Transitivität genannt.
  • InterlockMap(0,2) wird erzeugt durch Nachsehen in der Transaktionsordnungstabelle 146, um festzustellen, ob es ein Erfordernis der sequentiellen Anordnung zwischen der aktuellen Transaktion und der drei Transaktionen vor der aktuellen Transaktion empfangenen Transaktion gibt. Wenn es zwischen diesen beiden Transaktionen auf der Basis ihrer Transaktionstypen und des Speichermodells kein Erfordernis der sequentiellen Anordnung gibt, so liegt ein indirektes Erfordernis der sequentiellen Anordnung zwischen diesen beiden Transaktionen vor, wenn es (A) ein Erfordernis der sequentiellen Anordnung zwischen der aktuellen Transaktion und der um zwei Transaktionen vor der aktuellen Transaktion liegenden Transaktion gibt, und (B) es außerdem ein Erfordernis der sequentiellen Anordnung zwischen der Transaktion zwei Transaktionen zuvor und der dieser unmittelbar vorangehenden Transaktion gibt.
  • Die Ausdrücke in der Boole'schen Logik für die drei Verknüpfungsplanwerte, ausgenommen die Betriebsweise der Membar-Überschreibelogik 152, sind:
  • InterlockMap(0,0) = Tabelle0 (MM0, MM1, TX0, TX1)
  • InterlockMap(0,1) = Tabelle1 (MM0, MM2, TX0, TX2), OR (InterlockMap(0,0) AND InterlockMap(1,0)
  • InterlockMap(0,2) = Tabelle2 (MM0, MM3, TX0, TX3)OR (InterlockMap(0,1) AND InterlockMap(2,0))
  • Tabelle0, Tabelle1 und Tabelle 2 sind identische Kopien der Transaktionsordnungstabelle 146. Indem parallele Kopien der Tabelle 146 bereitgestellt werden, kann die Berechnung aller Verknüpfungsplanwerte in einem einzigen Taktzyklus einer Zustandsmaschine abgeschlossen werden.
  • Die Membar-Überschreibelogik 152 arbeitet folgendermaßen. Wenn eine Membar-Anweisung durch den Datenprozessor an die Verbindung exportiert wird, nachdem die i-te Speichertransaktion (das heißt die Speichertransaktion, die durch den i-ten Eintrag in der Transaktionswertetabelle wiedergegeben wird), so speichert die Speichersteuerlogik eine entsprechende Membar-Aufzeichnung in einem i-ten Eintrag des Membar-Puffers 144 und speichert außerdem Membar-Aufzeichnungen für jede anhängige vorangehende Transaktion. Jede Aufzeichnung des Membar-Puffers kann drei Einträge haben und ein Beispiel hierfür ist in Tabelle 5 wiedergegeben. Tabelle 5 Membar-Aufzeichnung für Membar Load-Load im Anschluß an eine Ladetransaktion (das heißt die betreffende Transaktion ist eine Ladetransaktion)
  • Wenn ein Membar-Befehl nicht nach einer Speichertransaktion an die Verbindung exportiert wird, so wird die entsprechende Membar-Aufzeichnung überall auf null gesetzt. Wenn ein Membar-Befehl nach einer Speichertransaktion an die Verbindung exportiert wird, so werden die entsprechenden Membar-Aufzeichnungen (das heißt für die aktuelle Transaktion und die anhängigen früheren Transaktionen) für jeden Typ einer nachfolgenden Transaktion auf eins gesetzt (das heißt für Laden, Speichern oder Unteilbar), die nicht ausgeführt werden darf, bevor die aktuelle Transaktion abgeschlossen ist. Da alle anhängigen Membar-Einschränkungen gemeinsam angewendet werden können (das heißt kumulativ), können die Membar-Beschränkungswerte für die zuletzt empfangene Speichertransaktionsanforderung erzeugt werden durch logische ODER-Verknüpfung der Membar- Beschränkungswerte, die für die unmittelbar vorangehende empfangene Transaktion erzeugt wurden mit irgendwelchen neuen Membar-Einschränkungen, die von dem Datenprozessor empfangen wurden.
  • Wenn die Membar-Überschreibelogik 152 eine "1" aus dem Membar-Puffer 144 für einen bestimmten Verknüpfungsplanwert erhält, so wird dieser Verknüpfungsplanwert auf "1" gesetzt, was bedeutet, daß eine Beschränkung oder Verknüpfung der sequentiellen Anordnung auferlegt wird. Wenn die Membar-Überschreibelogik 152 eine "0" aus dem Membar-Puffer 144 für einen bestimmten Verknüpfungsplanwert erhält, so wird dieser Verknüpfungsplanwert auf den von der Transaktionsordnungstabelle 146 erhaltenen Wert gesetzt.
  • Gemäß Fig. 4 enthält die Aufzeichnung 142 der Transaktionswertetabelle für jede anhängige Transaktion eine "Blockanzeige" 160, die anzeigt, ob die Ausführung der Transaktion wegen Erfordernissen der sequentiellen Anordnung blockiert ist oder nicht. Insbesondere gibt es für jede Aufzeichnung 142 der Transaktionswertetabelle 140 einen entsprechenden Logikschaltkreis 162 für die Bestimmung des Transaktionsblockes. Die Blockanzeige wird auf "1" gesetzt, was anzeigt, daß eine anhängige Transaktion blockiert ist, wenn (A) der Verknüpfungsplan für die anhängige Transaktion ein Erfordernis der sequentiellen Ordnung für jede Transaktion anzeigt, die noch nicht abgeschlossen ist, oder (B) wenn es irgendeine anhängige Transaktion gibt, die der anhängigen Transaktion um mehr als drei Transaktionen vorangeht (das heißt um mehr als die Anzahl von Transaktionen, für welche die Verknüpfungsplaneinträge existieren). Die Blockanzeigen 160 werden automatisch jedesmal dann neu berechnet, wenn irgendeine Speichertransaktion abgeschlossen ist, da das Abschließen einer Transaktion die Blockierung für andere anhängige Transaktionen aufheben kann.
  • Gemäß Fig. 5 umfaßt die Transaktionsabfertigungslogik 148 einen logischen Transaktionsauswahlschaltkreis 170 für jede getrennte Speicherressource oder jeden getrennten Speichertransaktionspfad. Die Funktion des logischen Transaktionsauswahlschaltkreises 170 besteht darin, die älteste anhängige Transaktion auszuwählen, die für die entsprechende Speicherressource angemessen ist. Wenn demnach zwei getrennte Speicherressourcen vorhanden wären, einschließlich einer für eine Ladetransaktion und eine für Speicher- und unteilbare Transaktionen, so würde der logische Transaktionsauswahlschaltkreis 170 für den Speicherpfad die älteste anhängige Speicher- oder unteilbare Transaktion auswählen, würde jedoch nicht irgendeine anhängige Ladetransaktion auswählen.
  • Der Logikschaltkreis 162 für die Bestimmung des Transaktionsblockes und die logische Transaktionsauswahlschaltung 170 implementieren zusammen einen Satz von Transaktionsaktivierungsregeln. Die Transaktionsaktivierungsregeln zeigen an, welche anhängigen Transaktionen blockiert sind und demnach nicht für die Aktivierung auswählbar sind, welche anhängigen Transaktionen freigegeben und demnach für die Aktivierung auswählbar sind und welche freigegebenen anhängigen Transaktionen zu aktivieren sind. Aktive Transaktionen (die auch aktivierte Transaktionen genannt werden) sind diejenigen, die gerade ausgeführt werden.
  • Gemäß Fig. 6 ist ein Flußdiagramm dargestellt, welches die Betriebsweise einer Zustandsmaschine in der, Verbindungs- und Speichersteuerung 114 wiedergibt, welche verwendet wird, um Speichertransaktionsanforderungen zu handhaben, die durch den Datenprozessor an die Zwischenverbindung ausgegeben werden. Jeder Schritt in dem Flußdiagramm entspricht einem der aufeinanderfolgenden Zustände der Zustandsmaschine: In Schritt 180 werden alle Einträge in der Transaktionswertetafel um einen Schlitz abwärts verschoben. Demnach wird der Eintrag in Position 0 nach Position 1 verschoben usw. Alternativ wird, wenn die Transaktionswertetabelle als ringförmiger bzw. kreisförmiger Puffer verwendet wird, der Zeiger auf die am weitesten oben liegende Position auf den neuesten Stand gebracht. Zur Erläuterung der Betriebsweise der Transaktionswertetabelle sei angenommen, daß Transaktionsaufzeichnungen in Schritt 180 verschoben werden. Als nächstes (Schritt 182) wird der Verknüpfungsplan für die empfangene Transaktion erzeugt unter Verwendung der in Fig. 3 dargestellten Logikschaltung und wird in der Aufzeichnung der Transaktionswertetafel für die empfangene Transaktion gespeichert, die hier als der nullte Eintrag der Transaktionswertetabelle angenommen wird. Als nächstes wird unter Verwendung des Schaltkreises, der in Fig. 4 dargestellt ist, die Blockanzeige für die empfangene Transaktion berechnet und in der Transaktionswertetabellenaufzeichnung für die empfangene Transaktion (Schritt 484) gespeichert. Die Blockanzeige zeigt an, ob die Ausführung der empfangenen Transaktion durch Erfordernisse einer sequentiellen Reihenfolge blockiert ist und auf der Basis der Anforderung der sequentiellen Anordnung oder des Fehlens derselben, welche auf die empfangene Transaktion anwendbar wären, wird sie in einem geeigneten der Übertragungspuffer gespeichert und ein Zeiger, der auf die gespeicherte Transaktion weist, wird in der entsprechenden Transaktionswertetafelaufzeichnung gespeichert (Schritt 186). Schließlich werden die Transaktionsauswahlen für irgendwelche Speicherressourcen berechnet, die für den Gebrauch verfügbar sind (Schritt 188), um festzustellen, ob der empfangene Befehl sofort bearbeitet bzw. bedient werden kann.
  • Wenn es keine anhängigen Transaktionen gibt, wird eine eingehende Transaktion sofort aktiviert. Die Optimierung für die Handhabung einer solchen schnellen Pfadtransaktion kann gleichzeitig das Anstoßen der Speichertransaktion freigeben, während die Wertetafel und die Membar-Werte für die Transaktion erzeugt und gespeichert werden.
  • Gemäß Fig. 7 ist ein Flußdiagramm dargestellt, welches die Arbeitsweise einer Zustandsmaschine in der Verbindungs- und Speichersteuerung 114 darstellt, welche verwendet wird, um Transaktionen für die Ausführung auszuwählen. Die Arbeitsweise dieser Zustandsmaschine wird jedesmal dann ausgelöst, wenn eine Speichertransaktion durch irgendeine der Speicherressourcen in der Verbindung abgeschlossen wird. Die abgeschlossene Transaktion wird in der Transaktionswertetafel und dem zugehörigen bzw. geeigneten Puffer für anhängige Transaktionen gelöscht (Schritt 190). Dann werden, wenn die abgeschlossene Transaktion nicht die älteste anhängige Transaktion war, alle Transaktionen, die älter als die abgeschlossene Transaktion sind, um eine Position in der Transaktionswertetafel heraufgeschoben (Schritt 192). Zusätzlich werden die Verknüpfungspläne aller Transaktionen, deren Verknüpfungspläne auf die abgeschlossene Transaktion Bezug genommen hatten, auf den neuesten Stand gebracht, indem die Inhalte dieser Verknüpfungspläne so verschoben werden, daß alle Verknüpfungen mit der abgeschlossenen Transaktion beseitigt sind. Zusätzlich werden die Inhalte des Membar-Puffers 144 entsprechend überarbeitet bzw. erneuert (Schritt 194). Als nächstes werden die Blockanzeigen aller anhängigen Transaktionen unter Verwendung des in Fig. 4 dargestellten Schaltkreises neu berechnet und in den entsprechenden Aufzeichnungen der Transaktionswertetafel gespeichert (Schritt 196). Schließlich werden Transaktionsauswahlen für irgendwelche Speicherressourcen berechnet, die für die Benutzung verfügbar sind (Schritt 198), um festzustellen, ob irgendwelche der anhängigen Transaktionen durch die verfügbaren Speicherressourcen bedient bzw. erledigt werden können und die Ausführung der ausgewählten Transaktionen, falls vorhanden, wird ausgelöst (Schritt 200).
  • Andere Optimierungen können durchgeführt werden durch Implementierung der Transaktionswertetafel 140 und des Membar-Puffers 144 in einem effizienteren, integrierten Aufbau.
  • Zusätzliche Gesichtspunkte
  • Je nach der Verbindungsarchitektur können den Cache verfehlende Vorgänge aufgrund eines Ausfalls des, Ladens, des Speicherns oder anderer oben definierter Speichertransaktionen in die folgenden Kategorien von Verbindungstransaktionen eingeordnet werden:
  • - Ein Lesen von geteilten (gemeinsam verwendeten) Transaktionen kann verursacht werden durch das Fehlschlagen eines Ladens in den Cache,
  • - Lesen von Besitztransaktionen kann bewirkt werden durch das Fehlschlagen eines Speicherns in dem Cache. Auch die unteilbaren Vorgänge, die in dem Cache ausgeführt werden, können einer Lesen-einer-Besitzverbindungs-Transaktion zugeordnet werden.
  • Transaktionen des Ungültigmachens eines Schreibvorganges können aufgrund einer Spüloperation erzeugt werden, die für Speichermodellzwecke dem Speichervorgang zugeordnet wird.
  • Wenn ein Datenprozessor back-to-back-RDS-Transaktionen (Lesen für geteilte Verwendung beim Fehlschlagen des Ladens in dem Cache des Prozessors) ausführt, wobei das Speichermodell auf TSO gesetzt ist, so müssen die beiden Transaktionen in der Programmreihenfolge ausgeführt werden - sie können in der globalen Ereignisordnung in dem System nicht aneinander vorbeilaufen. Wenn jedoch der Datenprozessor back-to-back-RDS-Transaktionen ausgibt, wenn sein Speichermodell auf RMO eingestellt ist, so können die beiden Transaktionen in einer anderen als der Programmreihenfolge ausgeführt werden.
  • Das Exportieren von Speichermodellinformationen an die Verbindung ermöglicht es der Verbindung, die globale bzw. allgemeine Ereignisreihenfolge von Transaktionen gegenüber der Programmreihenfolge zu variieren.
  • Ein anderer Mechanismus für das Inkraftsetzen von Grenzbefehlen (die oben Membar-Befehle genannt wurden), die andere sind als der oben beschriebene Mechanismus, besteht darin, daß man die Verbindung mit Verzögerung dem Datenprozessor den Empfang der Membar-Anweisung bestätigen läßt, bis die Ausführung der relevanten anhängigen Transaktionen abgeschlossen ist. Ein anderer Mechanismus für das Inkraftsetzen von Grenzbefehlen besteht darin, daß man den Datenprozessor die Speichermodellinformation, die an die Verbindung für die nachfolgenden Befehle exportiert wird, erneuern läßt, um bezüglich der Transaktionen vor dem Grenzbefehl eine neue Anordnung zu erfordern. Ein weiterer Mechanismus für das Inkraftsetzen von Grenzbefehlen besteht darin, daß man den Prozessor den Export irgendwelcher weiterer Transaktionen blockieren läßt, die durch den Grenzbefehl blockiert werden, bis ausstehende Transaktionen an die Verbindung abgeschlossen sind.
  • Das Verfahren der Verwaltung der Speichertransaktion der Verbindung gemäß der vorliegenden Erfindung unterstützt auch Transaktionen für das Vorabheranholen, die allgemein verwendet werden, um Befehle oder Daten in den Cache des Datenprozessors zu bringen, bevor sie benötigt werden, um so Verzögerungen zu beseitigen, die durch Fehlschläge bzw. Fehlanfragen an den Cache verursacht werden. Die Speichermodelle sind nicht generell auf Vorabheranholtransaktionen anwendbar, da Vorgänge des Vorabheranholens hauptsächlich für das "Aufwärmen" des Cache dienen. Der Einfluß von Transaktionen des Vorabheranholens ist für die korrekte Ausführung der Software transparent. Demnach kann der Datenprozessor, um die Ausführung von Vorabheranholtransaktionen außerhalb der Reihenfolge freizugeben, der Verbindung ein Speichermodell von RMO für alle Transaktionen des Vorabheranholens anzeigen.
  • In ähnlicher Weise können Rückschreibetransaktionen an die Verbindung mit einem Speichermodellwert von RMO exportiert werden. Zurückschreibetransaktionen können in einer parallelen oder neu geordneten Reihenfolge, bezüglich der zugehörigen Zusatzlast (das heißt Lesetransaktion) und aller vorangehenden Transaktionen, vorausgesetzt, man hat eine geeignete andere Logik, um irgendwelche die Kohärenz betreffenden Angelegenheiten aufgrund dieser Neuordnung zu implementieren.
  • Ein anderer Typ von Transaktion, der nicht innerhalb des Bereiches eines Speichermodells liegt, sind Interrupttransaktionen, die mit einem Speichermodellwert von RMO an die Verbindung exportiert werden können, wobei ihnen ein Membar-Memsync-Befehl oder ein anderer äquivalenter Grenzbefehl vorangestellt wird, so daß sie als durch die Verbindung anwendbar neu angeordnet werden können.
  • Während die vorliegende Erfindung bezüglich einiger weniger spezieller Ausführungsformen beschrieben worden ist, ist die Beschreibung nur anschaulich und beispielhaft für die Erfindung und ist nicht als die Erfindung beschränkend auszulegen. Verschiedene Modifikationen liegen für Fachleute auf der Hand, ohne vom Schutzumfang der Erfindung abzuweichen.
  • In Datenprozessoren, die das PSO-Speichermodell nicht unterstützen, zeigt die Speichermodellinformation, die an die Verbindung exportiert wird, eines der SSO-, TSO- und RMO-Speichermodelle an. In Datenprozessoren, die nur die SSO- und RMO-Speichermodelle unterstützen, muß nur ein Bit von Speichermodellinformation jeder Speichertransaktionsanforderung an die Verbindung exportiert werden.

Claims (14)

1. Verfahren zum Verwalten von Speichertransaktionen mit:
einer Einrichtung (114) außerhalb eines Datenprozessors, welche von dem Datenprozessor (104) Anforderungen für Speichertransaktionen empfängt, wobei jeder Speichertransaktionsanforderung ein Speichertransaktionsordnungsmodell zugeordnet ist, welches aus einer vorbestimmten Mehrzahl von Speichertransaktionsordnungsmodellen ausgewählt ist,
Speichern von anhängigen Speichertransaktionsdaten einschließlich einer Wiedergabe der anhängigen Speichertransaktionen, welche angeforderte Speichertransaktionen aufweisen, die nach nicht vollendet sind, wobei die anhängigen Speichertransaktionsdaten Speichertransaktionsordnungsdaten aufweisen, die anzeigen, welche der anhängigen Speichertransaktionen ausgeführt werden, bevor andere anhängige Speichertransaktionen ausgeführt werden, und
Durchführen der anhängigen Speichertransaktionen in einer Reihenfolge, die mit den Speichertransaktionsordnungsdaten konsistent ist, wobei ein Teilsatz der anhängigen Speichertransaktionen in einer anderen Reihenfolge ausgeführt wird, als sie von dem Datenprozessor empfangen wurden.
2. Verfahren nach Anspruch 1, wobei der Speicherschritt auf der Basis des Speichertransaktionsordnungsmodells, welches einer zuletzt empfangenen Speichertransaktionsanforderung zugeordnet ist sowie des Speichertransaktionsordnungsmodells, welches zumindest einem weiteren anhängigen Speichertransaktion zugeordnet ist, das Bestimmen einschließt, ob der der zuletzt empfangenen Speichertransaktionsanforderung zugeordnete Speichertransaktion vor dem zumindest einen weiteren anhängigen Speichertransaktion ausgeführt werden kann oder nicht, und Speichern einer Wiedergabe der Bestimmung der Reihenfolge in den Speichertransaktionsordnungsdaten.
3. Verfahren nach Anspruch 2,
wobei in einer Tabelle vorberechnete Speichertransaktionsordnungsbestimmungen für vorbestimmte Kombinationen von ersten und zweiten Speichertransaktionen auf der Basis des Speichertransaktionstyps und des jedem der ersten und zweiten Speichertransaktionen zugeordneten Speichertransaktionsordnungsmodells gespeichert werden,
wobei die Bestimmung der Reihenfolge in dem Speicherschritt zumindest teilweise dadurch erzeugt wird, daß eine vorberechnete Speichertransaktionsreihenfolgenbestimmung aus der Tabelle abgelesen wird, welche dem Speichertransaktionstyp und dem jedem der zuletzt empfangenen und der weiteren anhängigen Speichertransaktionen zugeordneten Speichertransaktionsordnungsmodell entspricht.
4. Verfahren nach Anspruch 2, mit
Speichern von vorberechneten Speichertransaktionsordnungsbestimmungen in einer Tabelle für alle möglichen Kombinationen von ersten und zweiten Speichertransaktionen auf der Basis des Speichertransaktionstyps und des jedem der ersten und zweiten Speichertransaktionen zugeordneten Speichertransaktionsordnungsmodells,
wobei die Bestimmung der Reihenfolge (bzw. Ordnung) in dem Speicherschritt zumindest teilweise dadurch bestimmt wird, daß eine vorberechnete Speichertransaktionsordnungsbestimmung aus der Tabelle abgelesen wird, welche dem Speichertransaktionstyp und dem jedem der zuletzt empfangenen und weiteren anhängigen Speichertransaktionen zugeordneten Speichertransaktionsordnungsmodell entspricht.
5. Verfahren nach Anspruch 1, wobei der Speicherungsschritt auf der Basis des Speichertransaktionsordnungsmodells, welches einer zuletzt empfangenen Speichertransaktionsanforderung zugeordnet ist und der Speichertransaktionsordnungsmodelle, welche mit jedem einer Mehrzahl von weiteren anhängigen Speichertransaktionen zugeordnet sind, das Bestimmen einschließt, ob der der zuletzt empfangenen Speichertransaktionsanforderung zugeordnete Speichertransaktion vor jedem der weiteren anhängigen Speichertransaktionen ausgeführt werden kann oder nicht, und Speichern einer Wiedergabe der Reihenfolgenbestimmungen in den Speichertransaktionsordnungsdaten.
6. Verfahren nach Anspruch 1, wobei die vorbestimmte Mehrzahl von Speichertransaktionsordnungsmodellen einen Satz von Speichertransaktionsordnungsmodellen aufweist, der aus dem Satz ausgewählt wurde, der im wesentlichen besteht aus SSO (streng sequentielle Ordnung), TSO (totale Speicherordnung), PSO (partielle Speicherordnung) und RMO (entspannte Speicherordnung).
7. Verfahren nach Anspruch 1, wobei ein Teilsatz der Speichertransaktionsanforderungen Interrupttransaktionsanforderungen aufweist, welchen das SSO-Speichertransaktionsordnungsmodell zugeordnet ist, wobei den Interrupttransaktionsanforderungen in dem Teilsatz Mitgliedstransaktionen nicht vorangehen.
8. Speichersteuerung (114) zum Verwalten von Speichertransaktionen, die durch einen Datenprozessor angefordert werden, mit:
einem Anschluß (131) für den Empfang von Speichertransaktionsanforderungen des Datenprozessors, wobei jeder Speichertransaktionsanforderung ein Speichertransaktionsordnungsmodell zugeordnet ist, welches aus einer vorbestimmten Mehrzahl von Speichertransaktionsordnungsmodellen ausgewählt wurde,
einem Speicher für anhängige Transaktionen, welcher mit dem Anschluß verbunden ist, um anhängige Speichertransaktionsdaten einschließlich einer Wiedergabe von anhängigen Speichertransaktionen zu speichern, welche angeforderte Speichertransaktionen aufweisen, die noch nicht vollendet sind, wobei die durch den Speicher für anhängige Speichertransaktionen gespeicherten anhängigen Speichertransaktionsdaten Speichertransaktionsordnungsdaten umfassen, die anzeigen, welche der anhängigen Speichertransaktionen vor anderen der anhängigen Speichertransaktionen ausgeführt werden können, und
einer Transaktionsabfertigungslogik (148), die mit dem Speicher für anhängige Speichertransaktionen verbunden ist und welche die Reihenfolge der Ausführung der anhängigen Speichertransaktionen steuert, so daß die erwähnte Ordnung bzw. Reihenfolge der Ausführung mit den Speichertransaktionsordnungsdaten konsistent ist, wobei ein Teilsatz der anhängigen Speichertransaktionen in einer anderen Reihenfolge ausgeführt wird als sie von dem Datenprozessor empfangen wurde.
9. Speichersteuerung nach Anspruch 8, mit einer Verriegelungsbestimmungslogik (154), um auf der Basis des Speichertransaktionsordnungsmodells, welches einer zuletzt empfangenen Speichertransaktionsanforderung zugeordnet ist und des Speichertransaktionsordnungsmodells, welches zumindest einer weiteren anhängigen Speichertransaktion zugeordnet ist, zu bestimmen, ob die mit der zuletzt empfangenen Speichertransaktionsanforderung verknüpfte Speichertransaktion vor der zumindest einen weiteren anhängigen Speichertransaktion ausgeführt werden kann oder nicht, und um eine Wiedergabe der Ordnungsbestimmung bzw. Reihenfolgenfestlegung in dem Speicher für anhängige Speichertransaktion als die Speichertransaktionsordnungsdaten zu speichern.
10. Speichersteuerung nach Anspruch 9,
wobei die Verriegelungsbestimmungslogik mit einer gespeicherten Tabelle von vorberechneten Speichertransaktionsordnungsbestimmungen für vordefinierte Kombinationen von ersten und zweiten Speichertransaktionen verbunden ist, und zwar auf der Basis des Speichertransaktionstyps und des jedem der ersten und zweiten Speichertransaktionen zugeordneten Speichertransaktionsordnungsmodells,
wobei die Verriegelungsbestimmung eine Logik für das Lesen einer vorberechneten Speichertransaktionsordnungsbestimmung aus der Tabelle umfaßt, welche dem Speichertransaktionstyp und dem Speichertransaktionsordnungsmodell entspricht, welches jedem der zuletzt empfangenen und der weiteren anhängigen Speichertransaktionen zugeordnet ist.
11. Speichersteuerung nach Anspruch 9,
wobei die Verriegelungsbestimmungslogik mit einer gespeicherten Tabelle von vorberechneten Speichertransaktionsordnungsbestimmungen für alle möglichen Kombinationen von ersten und zweiten Speichertransaktionen verbunden ist, die auf dem Speichertransaktionstyp und dem Speichertransaktionsordnungsmodell, welche auf den ersten und zweiten Speichertransaktionen zugeordnet ist, beruhen,
wobei die Verriegelungsbestimmung eine Logik für das Lesen einer vorberechneten Speichertransaktionsordnungsbestimmung aus der Tabelle umfaßt, welche dem Speichertransaktionstyp und dem Speichertransaktionsordnungsmodell entspricht, welches jedem der zuletzt empfangenen und der weiteren anhängigen Speichertransaktionen entspricht.
12. Speichersteuerung nach Anspruch 9, wobei die Verriegelungsbestimmung eine Logik umfaßt, um auf der Basis des einer zuletzt empfangenen Speichertransaktionsanforderung zugeordneten Speichertransaktionsordnungsmodells und der Speichertransaktionsordnungsmodelle, die jeder aus einer Mehrzahl weiterer anhängiger Speichertransaktionen zugeordnet sind, zu bestimmen, ob die Speichertransaktion, die zu der zuletzt empfangenen Speichertransaktionsanforderung gehört, vor jeder der anderen anhängigen Speichertransaktionen ausgeführt werden kann, und Speichern einer Wiedergabe der Ordnungs- bzw. Reihenfolgebestimmungen in dem Speicher für anhängige Speichertransaktionen als die erwähnten Speichertransaktionsordnungsdaten.
13. Speichersteuerung nach Anspruch 8, wobei die vordefinierte Mehrzahl von Speichertransaktionsordnungsmodellen einen Satz von Speichertransaktionsordnungsmodellen aufweist, die ausgewählt wurden aus dem Satz, der im wesentlichen besteht aus SSO (strenge sequentielle Ordnung), TSO (Gesamtspeicherordnung), PSO (teilweise Speicherordnung) und RMO (entspannte Speicherordnung).
14. Speichersteuerung nach Anspruch 8, wobei ein Teilsatz der Speichertransaktionsanforderungen Interrupttransaktionsanforderungen aufweist, denen das SSO-Speichertransaktionsordnungsmodell zugeordnet ist, wobei den Interrupttransaktionsanforderungen in dem Teilsatz keine Speicherschrankentransaktion vorangeht.
DE69715328T 1996-07-01 1997-06-18 System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen Expired - Fee Related DE69715328T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/671,305 US5893165A (en) 1996-07-01 1996-07-01 System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO

Publications (2)

Publication Number Publication Date
DE69715328D1 DE69715328D1 (de) 2002-10-17
DE69715328T2 true DE69715328T2 (de) 2003-04-17

Family

ID=24693953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69715328T Expired - Fee Related DE69715328T2 (de) 1996-07-01 1997-06-18 System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen

Country Status (4)

Country Link
US (1) US5893165A (de)
EP (1) EP0817091B1 (de)
JP (1) JP3807460B2 (de)
DE (1) DE69715328T2 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893165A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
DE19712799A1 (de) * 1997-03-26 1998-10-01 Siemens Nixdorf Inf Syst Abhängigkeitssteuerung für überlappende Speicherzugriffe
US6370632B1 (en) * 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
JP2000020618A (ja) * 1998-06-30 2000-01-21 Iq Financial Systems Japan Kk 統合金融リスク管理装置および金融取引モデル化装置
US20140325175A1 (en) * 2013-04-29 2014-10-30 Pact Xpp Technologies Ag Pipeline configuration protocol and configuration unit communication
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
KR100390853B1 (ko) * 2000-06-07 2003-07-10 차상균 주 메모리 트랜잭션 처리 시스템에서 병렬적 회복 연산을 위한 디퍼런셜 로깅 방법 및 장치
US6546453B1 (en) * 2000-08-31 2003-04-08 Compaq Information Technologies Group, L.P. Proprammable DRAM address mapping mechanism
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
JP4658064B2 (ja) * 2003-10-22 2011-03-23 インテル コーポレイション 相互接続ネットワークでの効率的な順序保存用の方法及び装置
US7281240B1 (en) * 2003-11-14 2007-10-09 Sun Microsystems, Inc. Mechanism for lossless, lock-free buffer switching in an arbitrary-context tracing framework
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US8219379B2 (en) * 2004-11-29 2012-07-10 Arm Limited System, method and computer program product for testing software
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
JP4856413B2 (ja) * 2005-10-04 2012-01-18 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US7917676B2 (en) * 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
US7409516B2 (en) * 2006-03-30 2008-08-05 Intel Corporation Pending request scoreboard for out-of-order memory scheduler
US7783817B2 (en) * 2006-08-31 2010-08-24 Qualcomm Incorporated Method and apparatus for conditional broadcast of barrier operations
US7984202B2 (en) * 2007-06-01 2011-07-19 Qualcomm Incorporated Device directed memory barriers
KR101086791B1 (ko) * 2007-06-20 2011-11-25 후지쯔 가부시끼가이샤 캐시 제어 장치 및 제어 방법
US8612950B2 (en) * 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US8392891B2 (en) * 2008-06-26 2013-03-05 Microsoft Corporation Technique for finding relaxed memory model vulnerabilities
GB2474446A (en) * 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US20110119469A1 (en) 2009-11-13 2011-05-19 International Business Machines Corporation Balancing workload in a multiprocessor system responsive to programmable adjustments in a syncronization instruction
JP2013061795A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 記憶装置、コントローラ、およびリードコマンド実行方法
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US12204757B1 (en) * 2022-12-16 2025-01-21 Amazon Technologies, Inc. Strong ordered transaction for DMA transfers

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4126893A (en) * 1977-02-17 1978-11-21 Xerox Corporation Interrupt request controller for data processing system
US4228503A (en) * 1978-10-02 1980-10-14 Sperry Corporation Multiplexed directory for dedicated cache memory system
JPH065524B2 (ja) * 1987-11-18 1994-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置管理方法
EP0425550B1 (de) * 1988-06-30 1995-01-04 Wang Laboratories, Inc. Steuereinheit für den speicher
EP0380842A3 (de) * 1989-02-03 1991-06-12 Digital Equipment Corporation Verfahren und Vorrichtung zur Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und den zentralen Verarbeitungseinheiten
US5036459A (en) * 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
DE69127936T2 (de) * 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
JPH04318654A (ja) * 1991-02-13 1992-11-10 Hewlett Packard Co <Hp> マイクロプロセッサへの割り込みのリダイレクションシステム
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
WO1993000638A1 (en) * 1991-06-26 1993-01-07 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
DE69230428T2 (de) * 1991-09-27 2000-08-03 Sun Microsystems, Inc. Verklemmungserkennung und Maskierung enthaltende Busarbitrierungsarchitektur
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
JPH07105031A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コンピュータ・システム内で割込み情報を伝えるための方法および装置
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5893165A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO

Also Published As

Publication number Publication date
EP0817091A3 (de) 1998-09-09
EP0817091A2 (de) 1998-01-07
DE69715328D1 (de) 2002-10-17
US5893165A (en) 1999-04-06
JP3807460B2 (ja) 2006-08-09
JPH113268A (ja) 1999-01-06
EP0817091B1 (de) 2002-09-11

Similar Documents

Publication Publication Date Title
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE3687744T2 (de) Aktualisierung der verzweigungsgeschichtstabelle in einem pipeline-verarbeitungssystem.
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE68911398T2 (de) Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem.
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69727465T2 (de) Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE69229156T2 (de) Digitaldatenprozessor mit verbesserter Wiederanlaufkennzeichnung und Verzweigung
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60131864T2 (de) Speichern von stapeloperanden in registern
DE69231197T2 (de) Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor

Legal Events

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