DE102008016178B4 - Verfahren und System zum spekulativen Vorabruf in einer Mehrprozessor-/Mehrkern-Nachrichtenübermittlungsmaschine - Google Patents

Verfahren und System zum spekulativen Vorabruf in einer Mehrprozessor-/Mehrkern-Nachrichtenübermittlungsmaschine Download PDF

Info

Publication number
DE102008016178B4
DE102008016178B4 DE102008016178A DE102008016178A DE102008016178B4 DE 102008016178 B4 DE102008016178 B4 DE 102008016178B4 DE 102008016178 A DE102008016178 A DE 102008016178A DE 102008016178 A DE102008016178 A DE 102008016178A DE 102008016178 B4 DE102008016178 B4 DE 102008016178B4
Authority
DE
Germany
Prior art keywords
message
core
prefetcher
memory
queue
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
DE102008016178A
Other languages
English (en)
Other versions
DE102008016178A1 (de
Inventor
Aaron Portland Kunze
Erik Portland Johnson
Hermann Portland Gartler
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102008016178A1 publication Critical patent/DE102008016178A1/de
Application granted granted Critical
Publication of DE102008016178B4 publication Critical patent/DE102008016178B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

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

Abstract

System zum spekulativen Vorabruf in einer Mehrkern-Nachrichtenübermittlungsplattform (300), umfassend:
mindestens einen Prozessor (310, 310a, 310b), wobei jeder der Mindestanzahl von einem Prozessor (310, 310a, 310b) mindestens einen Kern (311a, 311b, 311c, 311d) aufweist, wobei das System eine Mehrzahl von Kernen (311a, 311b, 311c, 311d) umfaßt,
einen Empfangskern (105) unter der Mehrzahl von Kernen, der einen lokalen Cache (113), mindestens eine Nachrichtenwarteschlange (107) zum Speichern von empfangenen Nachrichten und einen Nachrichtenübermittlungs-Prefetcher (109), der kommunikativ an einen gemeinsam benutzten Cache und/oder einen gemeinsam benutzten Speicher (111) gekoppelt ist und auch an den lokalen Cache (113) gekoppelt ist, aufweist,
eine Zusammenschaltung zur Nachrichtenübermittlung unter der Mehrzahl von Kernen, und
einen Sendekern (103) unter der Mehrzahl von Kernen zum Senden einer Nachricht an den Empfangskern, wobei eine Nachricht, die eine Speicherreferenz aufweist, sowohl an die mindestens eine Nachrichtenwarteschlange (107) als auch an den Nachrichtenübermittlungs-Prefetcher (109) des Empfangskerns (105) gesendet wird,...

Description

  • Gebiet der Erfindung
  • Eine Ausführungsform der vorliegenden Erfindung betrifft im allgemeinen die Nachrichtenübermittlung in einer Mehrprozessor-/Mehrkernplattform und genauer eine neuartige Kombination aus Techniken zum Vorabruf (Prefetching) von Daten und Übermitteln von Nachrichten zwischen und unter Kernen.
  • AUSGANGSSITUATION DER ERFINDUNG
  • In Mehrprozessor- und/oder Mehrkernsystemen gibt es verschiedene Hardware-Mechanismen, die es einzelnen Kernen ermöglichen, Nachrichten zwischen den einzelnen Kernen zu senden. So hat zum Beispiel die Intel-IXP2xxx-Reihe von Netzwerkprozessoren mehrere Hardware-Mechanismen zum Senden von 32-Bit-Nachrichten von einem Kern zu einem anderen. Viele Mikroprozessorkerne haben auch Hardware zum spekulativen Vorabruf, die Daten von einer Ebene der Speicherhierarchie eine oder mehrere Ebenen weiter nach oben abruft. Wenn zum Beispiel ein Prozessor feststellt, dass die auf ihm laufende Software in einem konstanten Schritt wiederholt auf Daten zugreift, kann der Prozessor spekulativ diejenigen Daten abrufen, von denen der Prozessor erwartet, dass die Software sie als nächstes anfordern wird.
  • Eine Nachricht, die zwischen Kernen übermittelt wird, enthält oft eine Adressreferenz/einen Zeiger. In bestehenden Systemen dereferenziert die Ausführungs-Pipeline eines Empfangskerns den Zeiger und ruft die Daten nach Bedarf von dem Speicherplatz ab. Beim Warten auf den Abruf der Daten können merkliche Verzögerungen auftreten, bevor der in der Ausführungs-Pipeline befindliche Befehl ausführbar ist. Eine Implementierung der Nachrichtenübermittlung wird in „IXP2400/2800 Programming: The Complete Microengine Coding Guide” von Erik J. Johnson und Aaron R. Kurze (INTEL PRESS 2003) beschrieben. Kapitel 10 beschreibt die Nachrichtenübermittlung.
  • Weitere Verfahren und Vorrichtungen zur Nachrichtenübermittlung sind beispielsweise aus der US 2006/0085602 A1 , der US 2007/0005909 A1 , der US 2004/0260883 A1 , der US 2006/0179239 A1 und der US 6 738 836 B1 bekannt.
  • Es ist eine Aufgabe der Erfindung, ein verbessertes System in einer Mehrkern-Nachrichtenübermittlungsplattform und ein verbessertes Verfahren zur Verfügung zu stellen. Diese Aufgabe wird durch ein System gemäß Anspruch 1, ein System gemäß Anspruch 12, ein maschinenimplementiertes Verfahren gemäß Anspruch 20 und einen maschinenlesbaren Datenträger gemäß Anspruch 24 gelöst. Die anderen Ansprüche betreffen besonders vorteilhafte Ausführungsformen des Systems, des Verfahrens oder des Datenträgers.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung der vorliegenden Erfindung deutlich, in der:
  • 1 ein Blockdiagramm eines Mehrkernprozessors, der die Nachrichtenübermittlungsvorabruf-Funktion verwendet, gemäß einer Ausführungsform der Erfindung ist;
  • 2 ein Ablaufdiagramm eines beispielhaften Verfahrens zum Vorabruf von Daten, die in einer übermittelten Nachricht referenziert werden, gemäß einer Ausführungsform der Erfindung ist;
  • 3 ein Blockdiagramm eines Mehrkernprozessors ist, auf dem Ausführungsformen der Erfindung implementiert werden können;
  • 4 ein Blockdiagramm einer Protokollarchitektur ist, die von einer Ausführungsform verwendet wird;
  • 5 ein Blockdiagramm einer Vorrichtung für eine physische Zusammenschaltung ist, die gemäß dem beanspruchten Gegenstand verwendet wird;
  • 6A bis 6C mehrere Ausführungsformen eines Systems sind, das von mehreren Ausführungsformen verwendet wird; und
  • 7 ein Viersockel-Mehrkernsystem gemäß Ausführungsformen der Erfindung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine Ausführungsform der vorliegenden Erfindung ist ein System und ein Verfahren, die das Integrieren der Vorabruffunktion mit der Übermittlung von Nachrichten unter Kernen betreffen. Ausführungsformen der vorliegenden Erfindung vermeiden das bei bestehenden Systemen vorkommende unzeitige Abrufen von Informationen aus einem entfernten physischen Speicher oder dem Cache eines anderen Prozessors. In Ausführungsformen der vorliegenden Erfindung ist es viel wahrscheinlicher, dass sich die Daten bereits in dem lokalen Cache befinden oder auf dem Weg dorthin sind, wenn ein Zeiger dereferenziert wird.
  • Wenn in der Patentbeschreibung auf „eine Ausführungsform” der vorliegenden Erfindung verwiesen wird, so bedeutet das, dass ein/e besondere/s Merkmal, Struktur oder Eigenschaft, das bzw. die im Zusammenhang mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung eingeschlossen ist. Somit bezieht sich die Wendung „in einer Ausführungsform”, die an verschiedenen Stellen der Patentbeschreibung vorkommt, nicht notwendigerweise jedes Mal auf dieselbe Ausführungsform.
  • Zum Zwecke der Erläuterung sind spezifische Konfigurationen und Einzelheiten dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung zu schaffen. Einem Fachmann wird jedoch einleuchten, dass Ausführungsformen der vorliegenden Erfindung auch ohne die hierin dargestellten spezifischen Einzelheiten ausgeführt werden können. Außerdem können wohlbekannte Merkmale ausgelassen oder vereinfacht sein, um die vorliegende Erfindung nicht unverständlich zu machen. Im Laufe dieser Beschreibung können verschiedene Beispiele angegeben sein. Diese sind lediglich Beschreibungen spezifischer Ausführungsformen der Erfindung. Der Schutzbereich der Erfindung ist nicht auf die angegebenen Beispiele beschränkt.
  • Ausführungsformen der vorliegenden Erfindung ermöglichen es einer Software, sich auf einen Prozessorkern zu spezifizieren, den eine oder mehrere Interkernnachrichten als physische Adresse spezifizieren. Wenn eine Nachricht, die eine physische Adresse enthält, empfangen wird, wird die Nachricht in eine Hardware-Warteschlange eingereiht, die darauf wartet, von einer Software auf dem Empfangskern verarbeitet zu werden. Während die Nachricht in der Warteschlange eingereiht ist, wird die Adresse in der Nachricht an einen Hardware-Prefetcher (Hardware-Vorabruffunktion) gesendet, um in der Annahme, dass der auf dem Empfangsprozessor laufende Code bald auf diese Daten zugreifen wird, einen spekulativen Vorabruf der Daten zu ermöglichen. Optional kann die Nachricht auch die Anzahl der Bytes, die im voraus abzurufen sind, spezifizieren. Die Anwendung ist nach dem Abruf der Nachricht typischerweise dazu fähig, sofort auf die mit der Nachricht verknüpften Daten zuzugreifen.
  • In einem bestehenden System können Hardware-Prefetcher zusammen mit der Ausführungs-Pipeline verwendet werden. Befehle, die sich in der Pipeline befinden, können Daten im voraus abrufen lassen, so dass die Daten sofort zur Verfügung stehen, wenn der Befehl zur Ausführung bereit ist. Diese Prefetcher erfordern jedoch die Eingabe eines Befehls in die Ausführungs-Pipeline, bevor der Vorabruf versucht wird. Im Gegensatz dazu weisen Ausführungsformen der vorliegenden Erfindung einen Prefetcher auf, der in den Kern-zu-Kern-Nachrichtenübermittlungsmechanismus integriert ist, so dass Daten, die aus einem Speicher oder dem Cache eines anderen Kerns angefordert werden, eher zur Verfügung stehen können, als dies bei ausschließlicher Verwendung von Prefetchern der Ausführungs-Pipeline möglich wäre.
  • Heutzutage gibt es zwei Architekturtypen für Nachrichtenübermittlungs-Hardware. In der ersten Hardware-Architektur für die Nachrichtenübermittlung werden die Nachrichten über eine Zusammenschaltung, zum Beispiel eine weiter unten beschriebene Punkt-zu-Punkt-(pTp)-Zusammenschaltung, an den/die Empfangskern/e gesendet und auf dem Empfangskern in eine oder mehrere Hardware-Warteschlangen eingereiht. In der zweiten Architektur werden die Nachrichten an eine separate Hardware-Einheit gesendet, wo sie in Hardware-Warteschlangen eingereiht werden, die von mehreren Kernen gemeinsam benutzt werden. Die IXP2xxx-Prozessoren enthalten zum Beispiel eine Hardware-Warteschlangeneinheit, auf die alle Kerne zugreifen können und die zum Senden von Nachrichten innerhalb einer beliebigen Gruppe von Kernen verwendbar ist. Diese Erfindung ist in der ersten Architektur äußerst nützlich, da das Koppeln von Hardware-Warteschlangen und Prefetchern dann am einfachsten erfolgt, wenn die beiden physisch nahe beieinander liegen, jedoch könnten beide Architekturen darauf eingestellt werden, Ausführungsformen der offenbarten Erfindung zu verwenden. Für die erste Architekturoption wird eine beispielhafte Ausführungsform in 1 gezeigt. Die eingekreisten Zahlen in dem Diagramm stellen eine mögliche Reihenfolge für ein Verfahren zum Senden einer Zeigernachricht von einem Kern zu einem anderen dar.
  • Zum Zwecke der Beschreibung kann ein Nachrichtenübermittlungsmechanismus als „Zusammenschaltung” zur Nachrichtenübermittlung bezeichnet werden. Die Zusammenschaltung kann, wie beschrieben, ein Hardware-, Firmware- oder Software-Konstrukt oder eine beliebige Kombination aus diesen drei Konstrukten sein. Es versteht sich, dass die Plattformarchitektur oft die Konfiguration der Zusammenschaltung diktiert.
  • 2 ist ein Ablaufdiagramm, das das in 1 veranschaulichte beispielhafte Verfahren zeigt. Die 1 und 2 werden im folgenden im Zusammenhang miteinander erörtert. In einer Ausführungsform, die auf einer Plattform mit einer Prozessor/Kern-Zusammenschaltung 101, zum Beispiel eine Punkt-zu-Punkt-(pTp)-Zusammenschaltungsarchitektur, implementiert wird, sendet (1) der Sendekern 103 unter Verwendung eines Hardware-Nachrichtenübermittlungsmechanismus eine Nachricht an den Empfangskern 105 (Block 201). Es versteht sich, dass verschiedene Mechanismen und Topologien zur Kernnachrichtenübermittlung verwendet werden können. (2) Wenn die Nachricht durch den Empfangskern 105 empfangen wird, wird die Nachricht in die Warteschlange 107 eingereiht und gleichzeitig an den Prefetcher 109 gesendet (Block 203). Eine Warteschlange 107 kann eine Register- oder Speichergruppe auf dem Kern sein, die nahe an dem Prefetcher liegt. (3) Der Prefetcher 109 gibt eine Speicherreferenz entweder an einen gemeinsam benutzten Cache oder einen gemeinsam benutzten Speicher 111 (je nach Architektur) aus (Block 205). Der Cache ist hierarchisch, also können bei Bedarf Daten aus einem Cache einer niedrigeren Ebene oder einem gemeinsam benutzten Speicher abgerufen werden. Die Nachricht kann optional die Menge der Daten, die im voraus abgerufen werden sollten, einschließen. (4) Die durch den Zeiger referenzierten Daten werden in einem lokalen Cache 113 des Empfangskerns 105 abgelegt (Block 207). (5) Der Empfangskern 105 entnimmt die Nachricht aus der Warteschlange 107 (Block 209). (6) Der Zeiger wird dereferenziert, und die Daten werden in dem Cache 113 gefunden, um in der Ausführungs-Pipeline 115 verwendet zu werden (Block 211). In Ausführungsformen kann Software als Mechanismus zum Entnehmen von Nachrichten aus einer Warteschlange und zum Dereferenzieren von Zeigern verwendet werden.
  • In bestehenden Systemen, zum Beispiel ein Doppelkernprozessor wie der Prozessor Intel® CoreTM 2 Duo, hat jeder Kern seinen eigenen L1-Cache und einen gemeinsam benutzten L2-Cache. Die L1-Caches haben ihren eigenen Hardware-Prefetcher. Der L1-Prefetcher ruft Daten im voraus aus dem L2-Cache in den L1-Cache ab. Der Cache-Prefetcher versucht abzuschätzen, welche Daten wahrscheinlich benötigt werden. Wenn der Vorabruf fehlschlägt, das heißt, wenn sich die Daten nicht in dem L2-Cache befinden, ruft der Cache-Prefetcher die Daten aus dem Speicher ab. Der L2-Cache hat einen Hardware-Prefetcher, der Daten direkt aus dem Speicher abruft. In bestehenden Systemen arbeiten diese Cache-Prefetcher jedoch nur zusammen mit der Ausführungs-Pipeline.
  • Die Warteschlange 107 kann durch die Ausführungs-Pipeline 115 zyklisch abgefragt werden oder ein Unterbrechungs-Steuerungsprogramm (Unterbrechungs-Dienstprogramm) initiieren, um die Pipeline dahingehend zu warnen, dass eine Nachricht empfangen worden ist. In Ausführungsformen kann mehr als eine Warteschlange verwendet werden. Einige Nachrichten können zum Beispiel ausführbare Befehle enthalten. Andere Nachrichten können Ergebnisdaten aus Operationen, die auf dem Sendekern ausgeführt wurden, enthalten. Wieder andere Nachrichten können Warnungen (oder Unterbrechungen) enthalten, die die Ausführung einer Tätigkeit auf dem Empfangsprozessor anfordern oder die Fertigstellung einer durch den Sendeprozessor ausgeführten Tätigkeit anzeigen. Eine Nachricht kann eine im voraus abzurufende Adressreferenz einschließen oder auch nicht. Es können spezialisierte Warteschlangen implementiert werden, um verschiedenen Nachrichtenarten zu entsprechen. Es kann eine einzige Warteschlange implementiert werden, um alle Nachrichtenarten aufzunehmen. Es versteht sich, dass für eine einzige Warteschlange verschiedene Verfahren verwendet werden können, um die Art der durch die Ausführungs-Pipeline zu verarbeitenden Nachricht anzuzeigen.
  • Um Speicherzeiger- und Nichtzeigernachrichten flexibel zu unterstützen, braucht die Software einen Mechanismus, um der Hardware anzuzeigen, ob die Nachricht einen Zeiger enthält oder nicht. Das kann für jede Nachricht erfolgen, wobei die sendende Software, wenn sie eine Nachricht sendet, ein Flag setzt, um anzuzeigen, dass die Nachricht einen Zeiger enthält. Die Zeigerkennzeichnung kann auch als Attribut der Warteschlange selbst implementiert werden. So kann zum Beispiel eine bestimmte Warteschlange nur solche Nachrichten enthalten, die Zeiger aufweisen.
  • Ausführungsformen der Erfindung funktionieren dann effizienter, wenn der Sender der Nachricht Grund zu der Annahme hat, dass sich die Daten, die sich zum Zeitpunkt des Sendens in dem physischen Speicher befinden, immer noch an derselben Stelle in dem physischen Speicher befinden, wenn die Nachricht empfangen wird. Somit funktioniert diese Erfindung dann am besten, wenn die Daten, die durch Zeiger referenziert werden, die zwischen Kernen übermittelt werden, langfristig in dem physischen Speicher abgebildet sind. Auch muss die Software, die diese Funktion verwendet, gewährleisten, dass sich die Daten, die durch den Zeiger referenziert werden, in einem Speicher befinden, der in den Cache kopierbar ist. Diese Beschränkungen sind in vielen Umgebungen, einschließlich Betriebssystem-Datenstrukturen und Netzwerkpakete, vernünftig.
  • Wie weiter oben erörtert, können Cache-Prefetcher in einer Plattform implementiert werden. In einer Ausführungsform verwenden eine oder mehrere Kern-zu-Kern-Nachrichtenwarteschlangen 107 einen zusätzlichen Prefetcher 109, um mit der Ausführungs-Pipeline zu kommunizieren. In einer anderen Ausführungsform kann ein bestehender Hardware-Prefetcher so modifiziert werden, dass er die Kern-zu-Kern-Nachrichtenübermittlungsvorabruf-Funktion einschließt. Ein Mechanismus kann ähnlich dem implementiert werden, was in bestehenden Systemen für einen direkten Cache-Zugriff (Direct Cache Access) erfolgt. In bestehenden Systemen kann ein Prefetcher eine Pending-Warteschlange von abgehenden Vorabrufanforderungen aufweisen, die an die Cache-Hierarchie zu senden sind. Die spezifischen Implementierungen sind je nach Plattform verschieden. Ein Verfahren zum Verbinden eines bestehenden Prefetchers mit der Nachrichtenwarteschlange schließt einen einfachen Multiplexer ein. Konkret würde sich die physische Adresse der Nachricht, die in die Nachrichtenwarteschlange eingeschrieben ist, einfach (über dedizierte Leitungen) zu der Pending-Warteschlange des Prefetchers weiterbewegen. Ein Multiplexer entscheidet zwischen normalen Prefetcher-Anforderungen und diesen „Hinweisen” von der Nachrichtenwarteschlange. Da die Pending-Warteschlange des Prefetchers physische Adressanforderungen enthält, wird die physische Adresse des Hinweises einfach zu einer Vorabrufanforderung an die Cache-Hierarchie.
  • Es versteht sich, dass es viele Wege gibt, eine Schnittstelle Software auszusetzen, um es der Software zu ermöglichen, diese Kernnachrichtenvorabruf-Funktion zu konfigurieren und/oder zu verwenden. Wenn die Entscheidung zwischen Zeigernachrichten und Nichtzeigernachrichten ein Attribut der Warteschlangen-Hardware ist, kann die Schnittstelle unter Verwendung von Steuerregistern oder Registern, die in dem Speicher oder E/A-Raum des Kerns abgebildet sind, gehandhabt werden. Wenn die Entscheidung, ob eine Nachricht eine Zeigernachricht oder eine Nichtzeigernachricht ist, für jede gesendete Nachricht getroffen wird, kann die Schnittstelle zu der Software an die Schnittstelle zu der Warteschlangenfunktion selbst gekoppelt werden. Wenn zum Beispiel Nachrichten mittels eines Befehls in dem Befehlsvorrat gesendet werden, kann ein Flag als zusätzlicher Operand des Befehls spezifiziert werden. Andere Implementierungsoptionen schließen die Verwendung eines lokalen Steuerregisters des Sendekerns ein.
  • In bestehenden Mehrkern/-prozessorsystemen tritt, wenn Nachrichten, die Adresszeiger enthalten, zwischen Kernen gesendet werden und der Empfangskern den Zeiger dereferenziert, oft eine Blockierung der Pipeline infolge einer Überlastung auf, weil die Daten entweder aus dem physischen Speicher oder aus dem kohärenten Cache des Sendeprozessors abgerufen werden müssen. Ausführungsformen der vorliegenden Erfindung ermöglichen eine schnellere Pipeline-Ausführung auf dem Empfangskern, weil das Integrieren der Vorabruffunktion mit der Kernnachrichtenübermittlung es wahrscheinlicher macht, dass sich die Daten bereits in dem lokalen Cache befinden oder auf dem Weg dorthin sind, wenn der Zeiger dereferenziert wird.
  • Es ist zu beachten, dass es bereits viele unterschiedliche Verfahren zum Implementieren der Nachrichtenübermittlung (sowohl Hardware als auch Software) und der Vorabruffunktion (oft Hardware) im allgemeinen gibt, und diese Erfindung kann mit einer beliebigen Auswahl an Nachrichtenübermittlungs- und Vorabrufkonfigurationen implementiert werden. Der Stand der Technik kennt keine Kombination dieser Verfahren, um die oben erörterten Vorteile bereitzustellen.
  • Eine Ausführungsform der Erfindung kann auf einer Plattform implementiert werden (siehe 3). Die Plattform 300 kann einen oder mehrere Prozessoren 310 aufweisen. Eine beispielhafte Plattform 300 ist mit zwei Prozessoren 310a–b dargestellt. Es versteht sich jedoch, dass eine beliebige Anzahl von Prozessoren 1–n auf der Plattform vorhanden sein kann. Wie zu sehen ist, umfassen die Prozessoren 310a–b jeweils zwei Kerne 311a–b und 311c–d, aber es versteht sich, dass die Prozessoren jeweils mehr als zwei Kerne aufweisen können. In einer anderen Ausführungsform kann ein einziger Prozessor mit mehreren Kernen verwendet werden. Die Prozessoren 310a–b können über den Front-Side-Bus 301 mit einem Speicher-Controller-Hub (MCH) 314, auch unter der Bezeichnung North bridge bekannt, kommunizieren. Der MCH 314 kommuniziert über einen Speicherbus 303 mit dem Systemspeicher 312. Der MCH 314 kann auch über einen Grafikbus 305 mit einem Advanced Graphics Port (AGP) 316 kommunizieren. Der MCH 314 kann über einen Direct-Module-Interface-Bus (DMI-Bus) 307 mit einem E/A-Controller-Hub (ICH) 320, auch unter der Bezeichnung South bridge bekannt, kommunizieren. Einige ältere Plattformen können einen PCI-Bus (periphere Komponentenverbindung) zur Kommunikation zwischen dem MCH 314 und dem ICH 320 verwenden. Der ICH 320 kann über einen Low-Pin-Count-Bus (LPC-Bus) 309 an ein oder mehrere Bauelemente, zum Beispiel PCI-Festplatten (nicht gezeigt), Legacy-Bauelemente, zum Beispiel IDE 322, USB 324, LAN 326 und Audio 328, und einen Super-E/A-Controller (SIO-Controller) 356 gekoppelt sein.
  • Der Prozessor 310 kann ein beliebiger zur Ausführung von Software fähiger Mehrkernprozessortyp sein, zum Beispiel ein Mikroprozessor, ein DSP-Chip, ein Mikrokontroller oder dergleichen.
  • Der Speicher 312 kann eine Festplatte, eine Diskette, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein Flash-Speicher oder jeder andere durch den Prozessor 310 lesbare Datenträgertyp sein. Der Speicher 312 kann Befehle zur Ausführung von Verfahrensausführungsformen der vorliegenden Erfindung speichern.
  • Ein nichtflüchtiger Speicher, zum Beispiel der Flash-Speicher 352, kann über einen Low-Pin-Count-Bus (LPC-Bus) 309 an den E/A-Controller gekoppelt sein. Die BIOS-Firmware 354 ist typischerweise in dem Flash-Speicher 352 gespeichert, und während des Hochfahrens werden Befehle des Flash-Speichers oder der Firmware ausgeführt.
  • In einigen Ausführungsformen ist die Plattform 300 ein Server, der Server-Management-Tasks aktiviert. Diese Plattformausführungsform kann einen Baseboard-Management-Controller (BMC) 350 aufweisen, der über den LPC 309 an den ICH 320 gekoppelt ist.
  • In anderen Ausführungsformen kann eine Plattform, die einer Punkt-zu-Punkt-(pTp)-Zusammenschaltungsarchitektur entspricht, verwendet werden. Ein Gebiet der gegenwärtigen technologischen Entwicklung betrifft die Zuverlässigkeit, die Verfügbarkeit und die Wartungsfreundlichkeit (RAS). Gegenwärtige Systeme, die auf der Front-Side-Bus-Architektur (FSB-Architektur) beruhen, gestatten kein An- oder Abkoppeln eines einzelnen Bus-Bauelementes im laufenden Betrieb (Hot-Plug). Desgleichen leiden die gegenwärtigen Systeme aufgrund der Übertragung von Initialisierungswerten unter Anschlussstiftbeschränkungen und aufgrund falscher anfänglicher Power-On-Konfigurationswerte (POC-Werte) auch unter der Durchführung mehrfacher warmer Resets.
  • In einer Ausführungsform unterstützt eine Punkt-zu-Punkt-(pTp)-Architekturplattform eine in Schichten aufgebaute Protokollkonfiguration, die weiter unten ausführlicher erörtert wird. 4 veranschaulicht ein Beispiel für eine abstrakte Ansicht eines Cache-Kohärenz-Protokolls des zugrundeliegenden Netzwerkes.
  • 4 ist eine Protokollarchitektur, die von einer Ausführungsform verwendet wird. Die Architektur stellt eine Mehrzahl von Caching-Agenten und Home-Agenten dar, die an eine Netzwerkstruktur gekoppelt sind. Die Netzwerkstruktur folgt zum Beispiel einer in Schichten aufgebauten Protokollkonfiguration und kann eine Sicherungsschicht und/oder eine Bitübertragungsschicht und/oder eine Protokollschicht und/oder eine Routing-Schicht und/oder eine Transportschicht umfassen. Die Struktur erleichtert den Transport von Nachrichten von einem Protokoll (Home- oder Caching-Agent) zu einem anderen Protokoll bei einem Punkt-zu-Punkt-Netzwerk. Unter einem Aspekt stellt die Figur eine abstrakte Ansicht eines Cache-Kohärenz-Protokolls des zugrundeliegenden Netzwerkes dar.
  • 5 ist ein Blockdiagramm einer Vorrichtung für eine physische Zusammenschaltung, die gemäß Ausführungsformen der hierin beschriebenen Erfindung verwendet wird. Unter einem Aspekt stellt die Vorrichtung eine Bitübertragungsschicht für eine cachekohärente, linkbasierte Zusammenschaltungskonfiguration für einen Prozessor, einen Chipsatz und/oder E/A-Brückenbauelemente dar. Die physische Zusammenschaltung kann zum Beispiel durch jede Bitübertragungsschicht eines integrierten Bauelementes ausgeführt werden. Konkret stellt die Bitübertragungsschicht eine Kommunikation zwischen zwei Ports über eine physische Zusammenschaltung, die zwei unidirektionale Links umfasst, bereit. Konkret gibt es einen unidirektionalen Link 504 von einem ersten Sendeport 550a eines ersten integrierten Bauelementes zu einem ersten Empfangsport 550b eines zweiten integrierten Bauelementes. Desgleichen gibt es einen zweiten unidirektionalen Link 506 von einem ersten Sendeport 550b des zweiten integrierten Bauelementes zu einem ersten Empfangsport 550a des ersten integrierten Bauelementes. Der beanspruchte Gegenstand ist jedoch nicht auf zwei unidirektionale Links beschränkt. Ein Fachmann wird erkennen, dass der beanspruchte Gegenstand alle bekannten Signalisierverfahren, zum Beispiel bidirektionale Links usw., unterstützt.
  • Die 6A–C stellen verschiedene Punkt-zu-Punkt-Systeme mit einem oder mehreren Prozessoren dar. Der beanspruchte Gegenstand kann mehrere Ausführungsformen umfassen, zum Beispiel eine mit einem Prozessor 606 (6A), eine mit zwei Prozessoren (P) 602 (6B) und eine mit vier Prozessoren (P) 604 (6C). In den Ausführungsformen 602 und 604 ist jeder Prozessor an einen Speicher (M) 621 gekoppelt und mit jedem Prozessor 623 über eine Netzwerkstruktur verbunden, wobei die Netzwerkstruktur eine Sicherungsschicht und/oder eine Protokollschicht und/oder eine Routing-Schicht und/oder eine Transportschicht und/oder eine Bitübertragungsschicht umfassen kann. Die Struktur erleichtert den Transport von Nachrichten von einem Protokoll (Home- oder Caching-Agent) zu einem anderen Protokoll bei einem Punkt-zu-Punkt-Netzwerk. Wie bereits beschrieben, unterstützt das System einer Netzwerkstruktur jede der im Zusammenhang mit den 46 dargestellten Ausführungsformen.
  • In der Ausführungsform 606 ist der einzige Prozessor (uni-processor) P 623 über einen Netzwerkstruktur-Link, der einer in Schichten aufgebauten Protokollkonfiguration entspricht, an die Grafik- und Speichersteuerung 625 (dargestellt als IO + M + F) gekoppelt. Die Grafik- und Speichersteuerung ist an einen Speicher gekoppelt und zum Empfangen und Senden über PCI-Express-Links fähig. Desgleichen ist die Grafik- und Speichersteuerung an den Ein-/Ausgabe-Controller-Hub (ICH) 627 gekoppelt. Außerdem ist der ICH 627 über einen Low-Pin-Count-Bus (LPC-Bus) an einen Firmware-Hub (FWH) 629 gekoppelt. Auch würde der Prozessor in einer anderen Einzelprozessor(uni-processor)-Ausführungsform externe Netzwerkstruktur-Links aufweisen. Der Prozessor kann mehrere Kerne mit getrennten oder gemeinsam benutzten Caches aufweisen, wobei jeder Kern an einen X-Bar-Router und eine Global-Links-Schnittstelle ohne Routing-Funktion gekoppelt ist. Ein X-Bar-Router ist eine pTp-Zusammenschaltung zwischen Kernen in einem Sockel. Eine X-Bar ist eine „Kreuzschiene”, was bedeutet, dass jedes Element eine Kreuzverbindung mit jedem anderen Element oder einen Anschluss an jedes andere Element aufweist. Das ist typischerweise schneller als ein pTp-Zusammenschaltungs-Link und wird direkt auf dem Chip implementiert, was die Parallelübertragung fördert. Somit sind die externen Netzwerkstruktur-Links an den X-Bar-Router und eine Global-Links-Schnittstelle ohne Routing-Funktion gekoppelt.
  • Eine Ausführungsform eines Mehrprozessorsystems umfasst eine Mehrzahl von Verarbeitungsknoten 623, die über ein Punkt-zu-Punkt-Netzwerk 631 (angegeben durch dicke Linien zwischen den Verarbeitungsknoten) zusammengeschaltet sind. Im Sinne dieser Erörterung werden die Begriffe „Verarbeitungsknoten” und „Rechenknoten” als gegeneinander austauschbare Begriffe verwendet. Links zwischen Prozessoren weisen typischerweise die volle oder maximale Breite und Links von Prozessoren zu einem E/A-Hub-Chipsatz (IOH-CS) typischerweise die halbe Breite auf. Jeder Verarbeitungsknoten 623 schließt einen oder mehrere zentrale Prozessoren 623 ein, die an einen zugehörigen Speicher 621, der den Hauptspeicher des Systems bildet, gekoppelt sind. In alternativen Ausführungsformen kann der Speicher 621 physisch kombiniert werden, um einen Hauptspeicher zu bilden, auf den alle Verarbeitungsknoten 623 zugreifen können. Jeder Verarbeitungsknoten 623 kann auch einen Speicher-Controller 625 zum Anschluss an den Speicher 621 einschließen.
  • Jeder Verarbeitungsknoten 623 einschließlich seines zugehörigen Speicher-Controllers 625 kann auf demselben Chip implementiert sein. In alternativen Ausführungsformen kann jeder Speicher-Controller 625 auf einem Chip, der von seinem zugehörigen Verarbeitungsknoten 623 getrennt ist, implementiert sein.
  • Jeder Speicher 621 kann einen oder mehrere Typen von Speicherelementen umfassen, zum Beispiel Dual-in-line-Speicherbausteine (DIMM), dynamische Direktzugriffsspeicherelemente (DRAM), synchrone dynamische Direktzugriffsspeicherelemente (SDRAM), SDRAM-Elemente mit doppelter Datenrate (DDR-SDRAM) oder andere flüchtige oder nichtflüchtige Speicherelemente, die für Server- oder allgemeine Anwendungen geeignet sind.
  • Das System kann auch einen oder mehrere Ein-/Ausgabe-Controller (E/A-Controller) 627 einschließen, um den Verarbeitungsknoten 623 und anderen Bauelementen des Systems eine Schnittstelle zum Zugriff auf E/A-Geräte, zum Beispiel ein Flash-Speicher oder Firmware-Hub (FWH) 629, bereitzustellen. In einer Ausführungsform kann jeder E/A-Controller 627 an einen oder mehrere Verarbeitungsknoten gekoppelt sein. Die Links zwischen den E/A-Controllern 627 und ihren jeweiligen Verarbeitungsknoten 623 werden als E/A-Links bezeichnet. Die E/A-Geräte können einschließen: ISA-Geräte (ISA = Industry Standard Architecture), PCI-Geräte (periphere Komponentenverbindung), PCI-Express-Geräte, USB-Geräte (universeller serieller Bus), Geräte mit einer Systemschnittstelle für Kleinrechner (SCSI-Geräte) oder andere Standard- oder proprietäre E/A-Geräte, die für Server- oder allgemeine Anwendungen geeignet sind. Die E/A-Geräte können drahtgebunden oder drahtlos sein. In einer Ausführungsform können die E/A-Geräte einen drahtlosen Sender und einen drahtlosen Sender-Empfänger einschließen.
  • Das System kann ein Server, ein Mehrprozessor-Desktop-Rechengerät, ein integriertes System, ein Netzwerkgerät oder ein verteiltes Rechengerät, bei dem die Verarbeitungsknoten über ein Weitbereichsnetz fernverbunden sind, sein.
  • In der in 6C gezeigten Ausführungsform stellt das Netzwerk 631 eine Teilvernetzung für die Verarbeitungsknoten 623 bereit. Somit ist jeder Verarbeitungsknoten 623 direkt mit einigen, aber vielleicht nicht mit allen, der anderen Verarbeitungsknoten verbunden. Ein Verarbeitungsknoten 623 ist mit einem anderen Verarbeitungsknoten über einen direkten Link oder über eine indirekte Verbindung (zum Beispiel unter Verwendung eines anderen Prozessors als Vermittler) verbunden.
  • Eine Nachrichtenart, die durch das Netzwerk 631 übertragen wird, ist eine Snoop-Nachricht, die Informationen über eine Speichertransaktion enthält, die den Kohärenzzustand eines Datenelementes in Caches (nicht gezeigt) beeinflussen kann. Eine Speichertransaktion betrifft eine Transaktion, die den Zugriff auf irgendein Speicherelement 621 oder irgendeinen Cache erfordert. Wenn irgendein Verarbeitungsknoten eine Speichertransaktion ausführt, gibt der Verarbeitungsknoten eine Snoop-Nachricht (oder als Äquivalent dazu eine Snoop-Anforderung) an das Netzwerk 631 aus, um alle anderen Verarbeitungsknoten dazu aufzufordern, die Kohärenzzustände der Datenelemente in ihren jeweiligen lokalen Caches zu verifizieren oder zu aktualisieren. Die E/A-Controller 627 geben ebenfalls Snoop-Nachrichten aus und empfangen solche, wenn sie einen direkten Speicherzugriff (DMA) ausführen. Somit kann jeder der Verarbeitungsknoten 623 und E/A-Controller 627 ein Anforderungsknoten für eine Snoop-Nachricht und ein Zielknoten für eine andere Snoop-Nachricht sein.
  • Wenn ein erster Verarbeitungsknoten eine Snoop-Nachricht an einen zweiten Verarbeitungsknoten sendet, der nicht direkt mit dem ersten Verarbeitungsknoten verbunden ist, verwenden der erste und der zweite Verarbeitungsknoten einen dritten Verarbeitungsknoten als Weiterleitungsknoten. In diesem Szenario dient ein dritter Verarbeitungsknoten als Weiterleitungsknoten, der die Snoop-Nachricht sowohl an den ersten als auch an den zweiten Verarbeitungsknoten weiterleitet. Die Weiterleitung kann durch einen Fan-out-Mechanismus erfolgen, der die ankommende Snoop-Nachricht repliziert und die replizierten Nachrichten zu unterschiedlichen Zielen weiterleitet.
  • 7 veranschaulicht ein Viersockelsystem 700 gemäß Ausführungsformen der Erfindung. Die Prozessoren 710, 720, 730 und 740 können eine beliebige Anzahl von Kernen einschließen. An jeden der Prozessoren 710, 720, 730 und 740 ist ein Speicher 715, 725, 735 bzw. 745 gekoppelt. Die punktierten Linien zwischen den Prozessoren kennzeichnen einen pTp-Zusammenschaltungsbus. Die fetten Linien zwischen einem Prozessor und seinem Speicher kennzeichnen eine FBD-Verbindung. Einige der Prozessoren, in diesem Beispiel 710 und 730, können über den pTp-Zusammenschaltungsbus an einen Ein-/Ausgabe-Hub (IOH) 750 angeschlossen sein. Der IOH 750 kann über eine Reihe von PCI-e-Bussen (periphere Komponentenverbindung-Express) an eine Reihe von Geräten (nicht gezeigt) gekoppelt sein (gekennzeichnet durch graue Linien). Der IOH 750 ist über einen Direct-Media-Interface-Bus (DMI-Bus) an den Ein-/Ausgabe-Controller-Hub (ICH) 760 gekoppelt (siehe gestrichelte Linien). Der ICH 760 kann an einen Firmware-Hub (FWH) 770 und einen Video-Graphics-Adapter (VGA) 780 gekoppelt sein.
  • Die hierin beschriebenen Techniken sind auf keine besondere Hardware- oder Software-Konfiguration beschränkt; sie können in einer beliebigen Rechen-, Konsumelektronik- oder Verarbeitungsumgebung anwendbar sein. Die Verfahren können in Hardware, Software oder einer Kombination aus beiden implementiert werden.
  • Für Simulationen kann ein Programmcode Hardware darstellen, wobei eine Hardware-Beschreibungssprache oder eine andere funktionelle Beschreibungssprache verwendet wird, die im wesentlichen ein Modell des erwarteten Funktionierens einer entworfenen Hardware bereitstellt. Der Programmcode kann eine Assembler- oder Maschinensprache sein oder Daten darstellen, die kompiliert und/oder interpretiert werden können. Außerdem ist es auf diesem Fachgebiet üblich, in der einen oder anderen Form von Software als Durchführung einer Aktion oder Herbeiführung eines Ergebnisses zu sprechen. Solche Ausdrücke sind lediglich eine kurzgefasste Form der Feststellung der Ausführung eines Programmcodes durch ein Verarbeitungssystem, das bewirkt, dass ein Prozessor eine Aktion durchführt oder ein Ergebnis herbeiführt.
  • Jedes Programm kann in einer höheren prozeduralen oder objektorientierten Programmiersprache implementiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Falls gewünscht, können Programme jedoch in einer Assembler- oder Maschinensprache implementiert werden. In jedem Fall kann die Sprache kompiliert oder interpretiert werden.
  • Es können Programmbefehle verwendet werden, um zu bewirken, dass ein Universal- oder Spezialverarbeitungssystem, das mit den Befehlen programmiert ist, die hierin beschriebenen Operationen ausführt. Als Alternative dazu können die Operationen durch spezifische Hardware-Bauelemente, die eine festverdrahtete Logik zur Ausführen der Operationen enthalten, oder durch eine beliebige Kombination aus programmierten Rechnerbauelementen und anwenderspezifischen Hardware-Bauelementen ausgeführt werden. Die hierin beschriebenen Verfahren können als ein Rechnerprogrammprodukt bereitgestellt werden, das einen Datenträger einschließen kann, auf den eine Maschine zugreifen kann und auf dem Befehle gespeichert sind, die dazu verwendet werden können, ein Verarbeitungssystem oder ein anderes elektronisches Gerät so zu programmieren, dass es die Verfahren ausführt.
  • Der Programmcode oder die Befehle können zum Beispiel in einem flüchtigen und/oder nichtflüchtigen Speicher gespeichert werden, zum Beispiel Speichergeräte und/oder ein zugehöriger maschinenlesbarer Datenträger oder Datenträger, auf den eine Maschine zugreifen kann, die integrierte Speicherbausteine, Festplatten, Disketten, optische Speicher, Bänder, Flash-Speicher, Speichersticks, digitale Bildplatten, mehrseitige Digitalplatten (DVD) usw. sowie außergewöhnlichere Datenträger wie biologische zustandserhaltende Speicher, auf die eine Maschine zugreifen kann, einschließen. Ein maschinenlesbarer Datenträger kann einen beliebigen Mechanismus zum Speichern, Senden oder Empfangen von Informationen in einer maschinenlesbaren Form einschließen, und der Datenträger kann ein greifbares Mittel einschließen, durch das elektrische, optische, akustische oder andere Formen von sich fortpflanzenden Signalen oder Trägerwellen, die den Programmcode codieren, gelangen können, zum Beispiel Antennen, Glasfasern, Datenübertragungsschnittstellen usw. Der Programmcode kann in Form von Paketen, seriellen Daten, parallelen Daten, sich fortpflanzenden Signalen usw. gesendet und in einem komprimierten oder verschlüsselten Format verwendet werden.
  • Der Programmcode kann in Programmen implementiert werden, die auf programmierbaren Maschinen ausgeführt werden, zum Beispiel mobile oder stationäre Rechner, persönliche digitale Assistenten (personal digital assistants), Set-Top-Boxen, Mobiltelefone und Funkrufempfänger, Konsumelektronikgeräte (einschließlich DVD-Wiedergabegeräte, private Videoaufnahmegeräte, private Videowiedergabegeräte, Satellitenempfänger, Stereoempfänger, Kabelfernsehempfänger) und andere elektronische Geräte, die jeweils einen Prozessor, einen flüchtigen und/oder nichtflüchtigen Speicher, der durch den Prozessor lesbar ist, mindestens ein Eingabegerät und/oder ein oder mehrere Ausgabegeräte einschließen. Der Programmcode kann auf die unter Verwendung des Eingabegerätes eingegebenen Daten angewendet werden, um die beschriebenen Ausführungsformen auszuführen und Ausgabeinformationen zu generieren. Die Ausgabeinformationen können einem oder mehreren Ausgabegeräten zugeführt werden. Ein Fachmann mag erkennen, dass Ausführungsformen des beanspruchten Gegenstandes mit verschiedenen Rechnersystemkonfigurationen ausführbar sind, einschließlich Mehrkern-Mehrprozessorsysteme, Minirechner, Großrechner sowie überall vorhandene oder Miniaturrechner oder -prozessoren, die in praktisch jedes Gerät integriert werden können.
  • Zwar können Operationen als ein sequentieller Prozess beschrieben werden, doch können einige der Operationen tatsächlich parallel, gleichzeitig und/oder in einer verteilten Umgebung und mit einem für den Zugriff durch Einzel- oder Mehrprozessormaschinen lokal und/oder entfernt gespeicherten Programmcode ausgeführt werden. Außerdem kann in einigen Ausführungsformen die Reihenfolge der Operationen geändert werden, ohne dabei vom Sinn des beanspruchten Gegenstandes abzuweichen. Der Programmcode kann durch oder zusammen mit integrierten Controller verwendet werden.
  • Zwar ist diese Erfindung hinsichtlich veranschaulichender Ausführungsformen beschrieben worden, doch soll diese Beschreibung nicht als einschränkend aufgefasst werden. Verschiedene Modifizierungen der veranschaulichenden Ausführungsformen sowie andere Ausführungsformen der Erfindung, die für Fachleute auf dem Gebiet, auf das sich die Erfindung bezieht, offensichtlich sind, werden als innerhalb des Sinnes und Schutzbereiches der Erfindung liegend betrachtet.

Claims (27)

  1. System zum spekulativen Vorabruf in einer Mehrkern-Nachrichtenübermittlungsplattform (300), umfassend: mindestens einen Prozessor (310, 310a, 310b), wobei jeder der Mindestanzahl von einem Prozessor (310, 310a, 310b) mindestens einen Kern (311a, 311b, 311c, 311d) aufweist, wobei das System eine Mehrzahl von Kernen (311a, 311b, 311c, 311d) umfaßt, einen Empfangskern (105) unter der Mehrzahl von Kernen, der einen lokalen Cache (113), mindestens eine Nachrichtenwarteschlange (107) zum Speichern von empfangenen Nachrichten und einen Nachrichtenübermittlungs-Prefetcher (109), der kommunikativ an einen gemeinsam benutzten Cache und/oder einen gemeinsam benutzten Speicher (111) gekoppelt ist und auch an den lokalen Cache (113) gekoppelt ist, aufweist, eine Zusammenschaltung zur Nachrichtenübermittlung unter der Mehrzahl von Kernen, und einen Sendekern (103) unter der Mehrzahl von Kernen zum Senden einer Nachricht an den Empfangskern, wobei eine Nachricht, die eine Speicherreferenz aufweist, sowohl an die mindestens eine Nachrichtenwarteschlange (107) als auch an den Nachrichtenübermittlungs-Prefetcher (109) des Empfangskerns (105) gesendet wird, und wobei der Nachrichtenübermittlungs-Prefetcher (109) so konfiguriert ist, daß er Daten, die in einer empfangenen Nachricht referenziert sind, spekulativ abruft, wobei sich die abgerufenen Daten in einem lokalen Cache (113) oder einem gemeinsam benutzten Cache (111) oder einem lokalen Cache eines Kerns, der nicht der Empfangskern ist, oder einem gemeinsam benutzten Speicher (111) befinden.
  2. System nach Anspruch 1, dadurch gekennzeichnet, daß mindestens ein Kern unter der Mehrzahl von Kernen (311a, 311b, 311c, 311d) ferner mindestens einen Ausführungs-Pipeline-Prefetcher, der von dem Nachrichtenübermittlungs-Prefetcher getrennt ist, umfaßt.
  3. System nach Anspruch 1, dadurch gekennzeichnet, daß mindestens ein Kern unter der Mehrzahl von Kernen (311a, 311b, 311c, 311d) ferner einen Ausführungs-Pipeline-Prefetcher umfaßt, der sich in derselben Prefetcher-Einheit wie der Nachrichtenübermittlungs-Prefetcher befindet, wobei ein Multiplexer zwischen Ausführungs-Pipeline-Vorabrufanforderungen und Nachrichtenwarteschlangen-Vorabrufanforderungen entscheidet.
  4. System nach Anspruch 1, dadurch gekennzeichnet, daß die Plattform eine Punkt-zu-Punkt-Zusammenschaltungsarchitektur umfaßt, wobei über eine Zusammenschaltung eine Nachricht an den Empfangskern (105) gesendet wird und die Nachricht in eine oder mehrere Hardware-Warteschlangen auf dem Empfangskern (105) eingereiht wird.
  5. System nach Anspruch 4, ferner umfassend eine Ausführungs-Pipeline, um den Zeitpunkt des Empfangs einer neuen Nachricht festzustellen, wobei entweder die Ausführungs-Pipeline die mindestens eine Nachrichtenwarteschlange zyklisch abfragt, um festzustellen, ob eine neue Nachricht eingetroffen ist, oder auf den Empfang einer Nachricht in der mindestens einen Nachrichtenwarteschlange hin eine Unterbrechung initiiert wird, um der Ausführungs-Pipeline anzuzeigen, daß eine neue Nachricht eingetroffen ist.
  6. System nach Anspruch 1, dadurch gekennzeichnet, daß die Nachricht ferner eine Anzahl von Bytes, die im voraus abzurufen sind, umfaßt.
  7. System nach Anspruch 1, dadurch gekennzeichnet, daß eine erste Nachrichtenwarteschlange zum Speichern von Nachrichten, die eine Speicherreferenz aufweisen, verwendet werden soll und mindestens eine andere Nachrichtenwarteschlange Nachrichten, die keine Speicherreferenz aufweisen, speichern soll.
  8. System nach Anspruch 7, ferner umfassend Mittel zum Auswählen einer Nachrichtenwarteschlange zum Speichern von Nachrichten, die eine Speicherreferenz aufweisen.
  9. System nach Anspruch 1, dadurch gekennzeichnet, daß eine einzige Warteschlange zum Speichern sowohl von Nachrichten, die eine Speicherreferenz aufweisen, als auch von Nachrichten, die keine Speicherreferenz aufweisen, verwendet wird, ferner umfassend ein Mittel zum Kennzeichnen der Art der gespeicherten Nachricht.
  10. System nach Anspruch 9, dadurch gekennzeichnet, daß das Mittel zum Kennzeichnen der Art der gespeicherten Nachricht ferner ein der Nachricht entsprechendes Flag umfasst, wobei das Flag die Nachrichtenart anzeigen soll, wobei das Flag in der Nachricht oder einem Steuerregister gespeichert ist.
  11. System nach Anspruch 9, dadurch gekennzeichnet, daß das Mittel zum Kennzeichnen der Art der gespeicherten Nachricht ferner ein mit der Nachrichtenwarteschlange verknüpftes Warteschlangenattribut zum Anzeigen der Nachrichtenart aller Nachrichten in der Warteschlange umfasst.
  12. System zum spekulativen Vorabruf in einer Mehrkern-Nachrichtenübermittlungsplattform (300), umfassend: mindestens einen Prozessor (310, 310a, 310b), wobei jeder der Mindestanzahl von einem Prozessor (310, 310a, 31Ob) mindestens einen Kern aufweist, wobei das System eine Mehrzahl von Kernen (311a, 311b, 311c, 311d) umfaßt, einen Empfangskern (105) unter der Mehrzahl von Kernen (311a, 311b, 311c, 311d), der einen lokalen Cache (113) aufweist, eine separate Hardware-Einheit, die von der Mehrzahl von Kernen gemeinsam benutzt wird, zum Einreihen von Nachrichten in mindestens eine Hardware-Nachrichtenwarteschlange (107), wobei die mindestens eine Hardware-Nachrichtenwarteschlange (107) empfangene Nachrichten für den Empfangskern (105) speichern soll, einen Nachrichtenübermittlungs-Prefetcher (109), der kommunikativ an die separate Hardware-Einheit, an einen gemeinsam benutzten Cache und/oder einen gemeinsam benutzten Speicher und an den Empfangskern (105) gekoppelt ist, eine Zusammenschaltung zur Nachrichtenübermittlung unter der Mehrzahl von Kernen über die separate Hardware-Einheit, und einen Sendekern (103) unter der Mehrzahl von Kernen zum Senden einer Nachricht an den Empfangskern (105) über die separate Hardware-Einheit, wobei eine Nachricht, die eine Speicherreferenz aufweist, sowohl an die mindestens eine Hardware-Nachrichtenwarteschlange als auch an den Nachrichtenübermittlungs-Prefetcher des Empfangskerns gesendet wird, wobei der Nachrichtenübermittlungs-Prefetcher (109) so konfiguriert ist, daß er Daten, die in einer empfangenen Nachricht referenziert sind, spekulativ abruft, wobei die abgerufenen-Daten in einem lokalen Cache (113) oder einem gemeinsam benutzten Cache oder einem lokalen Cache eines Kerns, der nicht der Empfangskern ist, oder einem gemeinsam benutzten Speicher gespeichert sind.
  13. System nach Anspruch 12, dadurch gekennzeichnet, daß mindestens ein Kern unter der Mehrzahl von Kernen ferner mindestens einen Ausführungs-Pipeline-Prefetcher, der von dem Nachrichtenübermittlungs-Prefetcher getrennt ist, umfaßt.
  14. System nach Anspruch 12, dadurch gekennzeichnet, daß mindestens ein Kern unter der Mehrzahl von Kernen ferner einen Ausführungs-Pipeline-Prefetcher umfaßt, der sich in derselben Prefetcher-Einheit wie der Nachrichtenübermittlungs-Prefetcher (109) befindet, wobei ein Multiplexer zwischen Ausführungs-Pipeline-Vorabrufanforderungen und Nachrichtenwarteschlangen-Vorabrufanforderungen entscheidet.
  15. System nach Anspruch 14, ferner umfassend eine Ausführungs-Pipeline, um den Zeitpunkt des Empfangs einer neuen Nachricht festzustellen, wobei entweder die Ausführungs-Pipeline die mindestens eine Nachrichtenwarteschlange zyklisch abfragt, um festzustellen, ob eine neue Nachricht eingetroffen ist, oder auf den Empfang einer Nachricht in der mindestens einen Nachrichtenwarteschlange hin eine Unterbrechung initiiert wird, um der Ausführungs-Pipeline anzuzeigen, daß eine neue Nachricht eingetroffen ist.
  16. System nach Anspruch 12, dadurch gekennzeichnet, daß eine erste Nachrichtenwarteschlange zum Speichern von Nachrichten, die eine Speicherreferenz aufweisen, verwendet werden soll und mindestens eine andere Nachrichtenwarteschlange Nachrichten, die keine Speicherreferenz aufweisen, speichern soll.
  17. System nach Anspruch 16, ferner umfassend ein Mittel zum Auswählen einer Nachrichtenwarteschlange zum Speichern von Nachrichten, die eine Speicherreferenz aufweisen.
  18. System nach Anspruch 12, dadurch gekennzeichnet, daß eine einzige Warteschlange zum Speichern sowohl von Nachrichten, die eine Speicherreferenz aufweisen, als auch von Nachrichten, die keine Speicherreferenz aufweisen, verwendet wird, ferner umfassend ein Mittel zum Kennzeichnen der Art der gespeicherten Nachricht.
  19. System nach Anspruch 18, dadurch gekennzeichnet, daß das Mittel zum Kennzeichnen der Art der gespeicherten Nachricht ferner ein der Nachricht entsprechendes Flag umfasst, wobei das Flag die Nachrichtenart anzeigen soll, wobei das Flag in der Nachricht oder einem Steuerregister gespeichert ist.
  20. Maschinenimplementiertes Verfahren zum spekulativen Vorabruf in einer Mehrkern-Nachrichtenübermittlungsplattform (300), umfassend: Senden einer Nachricht durch einen Sendekern (103), wobei die Nachricht einen Speicherreferenzzeiger aufweist und an einen Empfangskern (105) gesendet wird, Empfangen der Nachricht durch den Empfangskern (105), Einreihen der Nachricht in eine Nachrichtenwarteschlange (107) und gleichzeitiges Weiterleiten der Nachricht an einen Nachrichten-Prefetcher (109), Ausgeben einer Speicherreferenz durch den Nachrichten-Prefetcher (109) auf der Grundlage des Speicherreferenzzeigers zum Abruf eines referenzierten Speichers, Speichern der entsprechend der Speicherreferenz abgerufenen Daten in einem lokalen Cache (113) des Empfangskerns (105), Entnehmen der Nachricht aus der Nachrichtenwarteschlange durch den Empfangskern, und Dereferenzieren des Speicherreferenzzeigers, und Abrufen der in dem lokalen Cache des Empfangskerns (105) gespeicherten Daten.
  21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß die Daten aus einem lokalen Cache (113) oder einem gemeinsam benutzten Cache (111) oder einem lokalen Cache eines Kerns, der nicht der Empfangskern ist, oder einem gemeinsam benutzten Speicher (111) abgerufen werden.
  22. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß die Nachricht ferner eine Anzahl von Bytes, die im voraus abzurufen sind, umfaßt.
  23. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß der Nachrichten-Prefetcher (109) ein Prefetcher, der auch von einer Ausführungs-Pipeline (115) verwendet wird, oder ein getrennter Prefetcher, der nicht von der Ausführungs-Pipeline verwendet wird, ist.
  24. Maschinenlesbarer Datenträger mit Befehlen zum spekulativen Vorabruf in einer Mehrkern-Nachrichtenübermittlungsplattform, wobei die Befehle darauf gespeichert sind und, wenn sie durch eine Maschine ausgeführt werden, bewirken, daß die Maschine die folgenden Schritte ausführt: Senden einer Nachricht durch einen Sendekern (103), wobei die Nachricht einen Speicherreferenzzeiger aufweist und an einen Empfangskern (105) gesendet wird, Empfangen der Nachricht durch den Empfangskern (105), Einreihen der Nachricht in eine Nachrichtenwarteschlange (107) und gleichzeitiges Weiterleiten der Nachricht an einen Nachrichten-Prefetcher (109), Ausgeben einer Speicherreferenz durch den Nachrichten-Prefetcher (109) auf der Grundlage des Speicherreferenzzeigers zum Abruf eines referenzierten Speichers, Speichern der entsprechend der Speicherreferenz abgerufenen Daten in einem lokalen Cache (113) des Empfangskerns (105), Entnehmen der Nachricht aus der Nachrichtenwarteschlange (107) durch den Empfangskern (105), und Dereferenzieren des Speicherreferenzzeigers, und Abrufen der in dem lokalen Cache (113) des Empfangskerns (100) gespeicherten Daten.
  25. Datenträger nach Anspruch 24, dadurch gekennzeichnet, daß die Daten aus einem lokalen Cache (113) oder einem gemeinsam benutzten Cache (111) oder einem lokalen Cache eines Kerns, der nicht der Empfangskern ist, oder einem gemeinsam benutzten Speicher (111) abgerufen werden.
  26. Datenträger nach Anspruch 25, dadurch gekennzeichnet, daß die Nachricht ferner eine Anzahl von Bytes, die im voraus abzurufen sind, umfaßt.
  27. Datenträger nach Anspruch 25, dadurch gekennzeichnet, daß der Nachrichten-Prefetcher (109) ein Prefetcher, der auch von einer Ausführungs-Pipeline (115) verwendet wird, oder ein getrennter Prefetcher, der nicht von der Ausführungs-Pipeline verwendet wird, ist.
DE102008016178A 2007-03-30 2008-03-28 Verfahren und System zum spekulativen Vorabruf in einer Mehrprozessor-/Mehrkern-Nachrichtenübermittlungsmaschine Expired - Fee Related DE102008016178B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/731,280 2007-03-30
US11/731,280 US7937532B2 (en) 2007-03-30 2007-03-30 Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine

Publications (2)

Publication Number Publication Date
DE102008016178A1 DE102008016178A1 (de) 2008-10-16
DE102008016178B4 true DE102008016178B4 (de) 2011-03-03

Family

ID=39744431

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008016178A Expired - Fee Related DE102008016178B4 (de) 2007-03-30 2008-03-28 Verfahren und System zum spekulativen Vorabruf in einer Mehrprozessor-/Mehrkern-Nachrichtenübermittlungsmaschine

Country Status (4)

Country Link
US (1) US7937532B2 (de)
CN (1) CN101311894B (de)
DE (1) DE102008016178B4 (de)
TW (1) TWI354230B (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7661023B2 (en) * 2007-07-18 2010-02-09 International Business Machines Corporation System and method for verification of cache snoop logic and coherency between instruction & data caches for processor design verification and validation
US8127192B2 (en) * 2007-07-18 2012-02-28 International Business Machines Corporation Predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification/validation in interrupt mode
US7647539B2 (en) * 2007-07-18 2010-01-12 International Business Machines Corporation System and method of testing using test pattern re-execution in varying timing scenarios for processor design verification and validation
US7747908B2 (en) * 2007-07-18 2010-06-29 International Business Machines Corporation System and method for creating different start cache and bus states using multiple test patterns for processor design verification and validation
US7689886B2 (en) * 2007-07-18 2010-03-30 International Business Machines Corporation System and method for predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification and validation
US7739570B2 (en) * 2007-07-18 2010-06-15 International Business Machines Corporation System and method for increasing error checking performance by calculating CRC calculations after multiple test patterns for processor design verification and validation
US8185694B2 (en) * 2008-07-25 2012-05-22 International Business Machines Corporation Testing real page number bits in a cache directory
US9934079B2 (en) 2010-05-27 2018-04-03 International Business Machines Corporation Fast remote communication and computation between processors using store and load operations on direct core-to-core memory
CN101901163B (zh) * 2010-07-13 2012-10-31 北京世纪高通科技有限公司 分配消息的方法和装置
US8966222B2 (en) 2010-12-15 2015-02-24 Microsoft Corporation Message passing in a cluster-on-chip computing environment
US9471532B2 (en) 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
US9176912B2 (en) * 2011-09-07 2015-11-03 Altera Corporation Processor to message-based network interface using speculative techniques
US8706936B2 (en) 2011-11-14 2014-04-22 Arm Limited Integrated circuit having a bus network, and method for the integrated circuit
CN103186491B (zh) * 2011-12-30 2017-11-07 中兴通讯股份有限公司 一种端到端硬件消息传输的实现方法和装置
WO2012092894A2 (zh) * 2012-02-01 2012-07-12 华为技术有限公司 一种多核处理器系统
US9098418B2 (en) 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9548885B2 (en) * 2012-07-02 2017-01-17 Marvell Israel (M.I.S.L) Ltd Systems and methods for providing replicated data from memories to processing clients
US9292446B2 (en) * 2012-10-04 2016-03-22 International Business Machines Corporation Speculative prefetching of remote data
WO2015039352A1 (zh) * 2013-09-23 2015-03-26 华为技术有限公司 缓存数据的方法和存储系统
DE102016106939B4 (de) 2015-04-17 2024-05-02 Suunto Oy Eingebettetes Rechengerät
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US10652353B2 (en) * 2015-09-24 2020-05-12 Intel Corporation Technologies for automatic processor core association management and communication using direct data placement in private caches
US10284502B2 (en) * 2015-10-12 2019-05-07 Mellanox Technologies, Ltd. Dynamic optimization for IP forwarding performance
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10713202B2 (en) 2016-05-25 2020-07-14 Samsung Electronics Co., Ltd. Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
US9996404B2 (en) * 2016-09-01 2018-06-12 Oracle International Corporation Message cache management for message queues
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US10637685B2 (en) 2017-03-29 2020-04-28 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
CN110731070A (zh) 2017-03-29 2020-01-24 芬基波尔有限责任公司 通过多个交替数据路径进行分组喷射的无阻塞的任意到任意数据中心网络
CN108664335B (zh) * 2017-04-01 2020-06-30 北京忆芯科技有限公司 通过代理进行队列通信的方法与装置
CN110741356B (zh) 2017-04-10 2024-03-15 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
WO2019014268A1 (en) 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR FLOW PROCESSING
CN110915173B (zh) 2017-07-10 2022-04-29 芬基波尔有限责任公司 用于计算节点和存储节点的数据处理单元
WO2019068013A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. FABRIC CONTROL PROTOCOL FOR DATA CENTER NETWORKS WITH PACKAGING OF PACKETS ON MULTIPLE ALTERNATIVE DATA PATHWAYS
CN111164938A (zh) 2017-09-29 2020-05-15 芬基波尔有限责任公司 使用选择性多路径分组流喷射的弹性网络通信
GB2567465B (en) * 2017-10-12 2020-09-02 Advanced Risc Mach Ltd Message passing in a data processing system
GB2567466B (en) 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
US10841245B2 (en) 2017-11-21 2020-11-17 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
WO2019152063A1 (en) 2018-02-02 2019-08-08 Fungible, Inc. Efficient work unit processing in a multicore system
US10846224B2 (en) * 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
CN109617832B (zh) * 2019-01-31 2022-07-08 新华三技术有限公司合肥分公司 报文缓存方法及装置
CN112486702B (zh) * 2020-11-27 2024-02-13 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局消息队列实现方法
CN112486704B (zh) * 2020-11-27 2024-02-06 中船重工(武汉)凌久电子有限责任公司 一种基于共享存储的多核多处理器同步与通信系统
US11782635B2 (en) 2021-11-12 2023-10-10 Western Digital Technologies, Inc. Method to ensure message arrival before a message pointer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US20040260883A1 (en) * 2003-01-28 2004-12-23 Sun Microsystems, Inc. Computer system employing bundled prefetching
US20060085602A1 (en) * 2004-10-15 2006-04-20 Ramakrishna Huggahalli Method and apparatus for initiating CPU data prefetches by an external agent
US20060179239A1 (en) * 2005-02-10 2006-08-10 Fluhr Eric J Data stream prefetching in a microprocessor
US20070005909A1 (en) * 2005-06-30 2007-01-04 Cai Zhong-Ning Cache coherency sequencing implementation and adaptive LLC access priority control for CMP

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
GB0318196D0 (en) * 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7516313B2 (en) * 2004-12-29 2009-04-07 Intel Corporation Predicting contention in a processor
US7500031B2 (en) * 2005-11-30 2009-03-03 Broadcom Corporation Ring-based cache coherent bus
US20080189251A1 (en) * 2006-08-25 2008-08-07 Jeremy Branscome Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries
US8249089B2 (en) * 2006-09-29 2012-08-21 Intel Corporation Methods for pushing address translations mappings to PCI express endpoints

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US20040260883A1 (en) * 2003-01-28 2004-12-23 Sun Microsystems, Inc. Computer system employing bundled prefetching
US20060085602A1 (en) * 2004-10-15 2006-04-20 Ramakrishna Huggahalli Method and apparatus for initiating CPU data prefetches by an external agent
US20060179239A1 (en) * 2005-02-10 2006-08-10 Fluhr Eric J Data stream prefetching in a microprocessor
US20070005909A1 (en) * 2005-06-30 2007-01-04 Cai Zhong-Ning Cache coherency sequencing implementation and adaptive LLC access priority control for CMP

Also Published As

Publication number Publication date
CN101311894A (zh) 2008-11-26
CN101311894B (zh) 2012-06-06
DE102008016178A1 (de) 2008-10-16
TWI354230B (en) 2011-12-11
US7937532B2 (en) 2011-05-03
TW200901027A (en) 2009-01-01
US20080244231A1 (en) 2008-10-02

Similar Documents

Publication Publication Date Title
DE102008016178B4 (de) Verfahren und System zum spekulativen Vorabruf in einer Mehrprozessor-/Mehrkern-Nachrichtenübermittlungsmaschine
DE102009032076B4 (de) Erfüllung von Speicherordnungsanforderungen zwischen Teillesevorgängen und Nicht-Snoop-Zugriffen
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE112011105298B4 (de) Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors
DE112010002425B4 (de) Delegieren einer Anfrageoperation an eine ander Einrichtung
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE102009031497A1 (de) Erfüllung der Speicher-Ordering-Anforderungen zwischen Partial-Write- und Non-Snoop-Zugriffen
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
KR20010101193A (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는비정형 메모리 액세스 데이터 처리 시스템
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE112011104329T5 (de) Mehrkernsystem und Verfahren zum Lesen der Kerndaten
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE102016006402A1 (de) Persistente commit-prozessoren, verfahren, systeme und befehle
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 13/00 AFI20080527BHDE

R020 Patent grant now final

Effective date: 20110619

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee