DE112012005210B4 - Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul - Google Patents

Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul Download PDF

Info

Publication number
DE112012005210B4
DE112012005210B4 DE112012005210.2T DE112012005210T DE112012005210B4 DE 112012005210 B4 DE112012005210 B4 DE 112012005210B4 DE 112012005210 T DE112012005210 T DE 112012005210T DE 112012005210 B4 DE112012005210 B4 DE 112012005210B4
Authority
DE
Germany
Prior art keywords
caching agent
iio
module
cores
core processor
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.)
Active
Application number
DE112012005210.2T
Other languages
English (en)
Other versions
DE112012005210T5 (de
Inventor
Kenneth C. Creta
Robert G. Blankenship
Yen-Cheng Liu
Geeyarpuram N. Santhanakrishnan
Ganapati N. Srinivasa
Sridhar Muthransanallur
Bahaa Fahim
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.)
Daedalus Prime LLC
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=48573109&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE112012005210(B4) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112012005210T5 publication Critical patent/DE112012005210T5/de
Application granted granted Critical
Publication of DE112012005210B4 publication Critical patent/DE112012005210B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

Vorrichtung, umfassend:
ein Mehrkernprozessor einschließlich einer Vielzahl von Kernen, ein gemeinsam benutzter Cache-Speicher, ein integriertes Ein-/Ausgabe-(IIO)-Modul, um eine Schnittstelle zwischen dem Mehrkernprozessor und wenigstens einem IO-Gerät herzustellen, das mit dem Mehrkernprozessor gekoppelt ist, und einen Caching-Agenten, wobei der Caching-Agent Kohärenz-Logik einschließt, um Cache-Kohärenz-Operationen für die Vielzahl von Kernen und das IIO-Modul auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen zu ermöglichen, wobei das IIO-Modul eine erste Warteschlange für gepostete Anforderungen und eine zweite Warteschlange für nicht gepostete Anforderungen aufweist und wobei das IIO-Modul eine PCI Express-Schnittstelle aufweist, wobei das IIO-Modul ferner eingerichtet ist, mittels der Anforderungen direkt auf den Cache-Speicher zuzugreifen,
wobei der Caching-Agent derart eingerichtet ist, dass bei einem Cache-Speicher-Zugriff eine gepostete Anforderung einer nicht geposteten Anforderung vorausgeht.

Description

  • Hintergrund.
  • Bei modernen Mehrprozessor- (MP) - Sockel-Computersystemen sind verschiedene Topologien möglich. Solche Systeme schließen häufig viele unterschiedliche Halbleiterbauelemente ein, die als integrierte Schaltungen (ICs) realisiert sind. Die ICs schließen Prozessoren, Speicher, Chipsätze, Ein-/Ausgabe-Hubs (IOHs) usw. ein.
  • Während Prozessknoten Fortschritte machen, können größere Mengen an Funktionalität in einer einzelnen Halbleiter-Chiplage eingebunden werden. Ein Integrationstrend besteht darin, eine IO-Komponente wie Funktionalität eines IOH in eine Hauptprozessor- (CPU) -Chiplage zu integrieren. Die hauptsächliche Motivation, dies zu tun, ist die Materialkosten (BOM) eines Computersystems zu reduzieren und kleine Formfaktoren zu ermöglichen, während die gesamte Leistungsaufnahme reduziert wird.
  • Es ergeben sich aber Probleme, sobald eine IO-Komponente auf dem gleichen Chip mit einem Mehrprozessor integriert wird. Traditionelle IO-Integration behandelt die IO-Komponente als einen separaten Caching-Agenten, was bedeutet, dass dedizierte Logik mit der IO-Komponente verbunden wird, um Cache-Kohärenz-Operationen zu behandeln. Wenn ein IO-Agent Schreib-/Leseoperationen mit dem Hauptspeicher durchführt, muss es den Cache auf der CPU-Seite per Snooping abfragen, um die Cache-Kohärenz aufrechtzuerhalten. Bei MP-Systemen wird dies zu einem hauptsächlichen Skalierungsproblem. Beispielsweise befinden sich bei einem 8-Sockel-System effektiv 16 Caching-Agenten im System, welche die Leistung vermindern können. Und der Aufwand, um ein System zu vergrößern und diese vielen Caching-Agenten zu unterstützen, ist nicht geringfügig.
  • Die Druckschrift „Evaluating Network Processing Efficiency with Processor Partitioning and Asynchronous I/O“ (Brecht, T., et al., Proceedings of the EuroSys'06, 2006, Leuven, Belgium, pp. 265-278) beschreibt einen Ansatz zum Verbessern der Netzwerk-Verarbeitungseffizienz, basierend auf der Partitionierung eines Prozessors und auf asynchrone Ein-/Ausgabe. In dem System ordnet eine „Embedded Transport Acceleration“ Komponente einen oder mehrere Prozessoren oder Hardware-Threads zu, um die ganze Netzwerkverarbeitung auszuführen. Die Anwendungen erhalten asynchrone Ereignisse, die die Beendigung zuvor ausgegebener Ein-/Ausgabe Operationen anzeigen.
  • Die Druckschrift „Performance Analysis of System Overheads in TCP/IP Workloads“ (Binkert, N., et al., Proceedings of the 14th International Conference on Parallel Architectures and Compilation Techniques (PACT'05), 2005, S. 1-11) beschreibt eine Anordnung eines Netzwerkschnittstellen-Controllers (NIC) neben einem Hauptprozessor, um die hohe Latenzzeit der Kommunikation zwischen dem Kontroller und dem Hauptprozessor zu reduzieren.
  • Die Druckschrift „Direct cache access for high bandwidth network I/O“ (Huggahalli, R., et al., Proceedings of the 32nd International Conference on Computer Architecture (ISCA'05), Madison, WI, 2005, S. 1-10) beschreibt direkten Cache-Zugriff (DCA).
  • Der Erfindung liegt das Problem zugrunde, eine Vorrichtung, ein Verfahren und ein System bereitzustellen, bei dem in einem Mehrprozessorkern-System ein schneller direkter Cache-Speicherzugriff ermöglicht wird, wobei gewährleistet wird, dass gepostete Anforderungen nicht durch nicht gepostete Anforderungen blockiert werden dürfen.
  • Das Problem wird durch eine Vorrichtung gemäß Anspruch 1, ein Verfahren gemäß Anspruch 12 und ein System gemäß Anspruch 17 gelöst.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Teils eines Mehrprozessor-Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockdiagramm eines Caching-Agenten gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 5 ist ein Blockdiagramm eines Beispiels eines möglichen Deadlock-Szenarios, das gemäß verschiedenen Ausführungsformen vermieden werden kann.
    • 6 ist ein Blockdiagramm eines Mehrkernprozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 7 ist ein Blockdiagramm eines Mehrprozessor-Systems gemäß einer erfindungsgemäßen Ausführungsform. Ausführliche Beschreibung
  • Bei verschiedenen Ausführungsformen kann ein IO-Agent in einen Mehrprozessor-Sockel wie einen Mehrkernprozessor zur Verwendung in einem MP-Server-System integriert sein, während Skalierungsprobleme vermieden werden. Spezieller kann ein CPU-Caching-Agent konfiguriert werden, sowohl CPU-Verkehr als auch IO-Verkehr zu unterstützen, wodurch das Skalierungsproblem gelöst wird. Die Leistung kann durch das näher Zueinander Bringen des IO-Agenten und des bzw. der CPU-Kerne verbessert werden. Dieser IO-Agent schließt Funktionalität ein, um eine Schnittstelle zwischen einem oder mehreren Peripheriegeräten, die mit dem Prozessor gekoppelt sind, durch chipexterne Links wie Peripheral Component Interconnect- (PCle™) -Links bereitzustellen, und kann die Stelle einer separaten Chipsatz-Komponente wie eines IOH einnehmen.
  • Unter Bezugnahme auf 1 ist ein Blockdiagramm eines Teils eines Mehrprozessorsystems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 1 schließt System 100 ein Paar von Prozessorsockeln 1100 und 1101 ein. Bei der gezeigten Ausführungsform entspricht jeder Sockel 110 (generell) einem Mehrkernprozessor. Zur Erleichterung der Erörterung wird Bezug auf die Komponenten innerhalb des Sockels 1100 genommen. Bei der Ausführungsform von 1 kann der Sockel 1101 auf identische Weise konfiguriert sein. Es ist jedoch offensichtlich, dass bei anderen Ausführungsformen, heterogene Prozessorsockel vorhanden sein können.
  • Wie ersichtlich schließt Sockel 1100 eine Vielzahl von Kernen 12000 - 1200n ein. Als Beispiel kann Sockel 1100 4, 8 oder eine andere solche Zahl an Kernen einschließen. Jeder der Kerne kann verschiedene Komponenten einschließen, einschließlich einer Prozessor-Pipeline, die mehrfache Stufen wie eine Frontend-Einheit, eine oder mehrere Ausführungseinheiten und eine Backend-Einheit aufweist. Außerdem können ein oder mehrere Cache-Speicher-Level innerhalb der Kerne vorhanden sein. Jeder der Kerne 120 kann mit einem gemeinsam benutzten Cache-Speicher 1300 gekoppelt sein, der ein Last Level Cache (LLC) sein kann. Wie ersichtlich kann LLC 130 einen Caching-Agenten 1350 einschließen. Bei verschiedenen Ausführungsformen kann dieser Caching-Agent ein kombinierter Caching-Agent für die CPU sowie für einen integrierten IO-Agenten sein. Insbesondere kann der Sockel 1100 ein IO-Modul (hiernach ein integriertes IO-Modul oder IIO-Modul) einschließen. Dieses IIO-Modul kann als eine Schnittstelle zu einem oder mehreren chipexternen Peripherie- oder IO-Geräten (nicht dargestellt in 1) agieren, die mit dem Prozessor gekoppelt sind, z. B. über PCle™-Links. Beispiele von solchen IO-Geräten schließen Speichergeräte, Netzwerkschnittstellen, Grafikkarten usw. ein.
  • Wie weiter gezeigt kann Sockel 1100 einen integrierten Memory-Controller (IMC) 1450 einschließen, um eine Schnittstelle zu einem Systemspeicher (aus Gründen einer vereinfachten Darstellung nicht dargestellt) über eine Speicher-Kopplungsstruktur bereitzustellen. Der Sockel 1101 schließt ähnliche Komponenten ein und kann mit Sockel 1100 über eine Kopplungsstruktur 150 gekoppelt sein, welche bei einer Ausführungsform ein Punkt-zu-Punkt- (PtP) -Link gemäß eines Intel® Quick Path Interconnect- (QPI) -Protokolls sein kann.
  • Bezugnehmend auf 2 ist ein Blockdiagramm eines Caching-Agenten gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 2 kann Caching-Agent 200 Logik sein, die zwischen einem oder mehreren Kernen eines Prozessors und einem LLC 230 zwischengeschaltet ist. Außerdem kann Caching-Agent 200 auch eine Schnittstelle zwischen einem IIO-Modul innerhalb eines Mehrkernprozessors und dem LLC bereitstellen. Wie ersichtlich kann Caching-Agent 200 einen Eingangsport 210 einschließen, der mehrere Eingangswarteschlangen 211 - 213 einschließt. Wie ersichtlich kann Eingangsport 210 mit einem Arbiter 215 gekoppelt sein, der unter eingehenden Anfragen vermitteln und sie an eine Tabelle von Anforderungen (TOR) 220 bereitstellen kann. Wie ersichtlich kann TOR 220 ein Puffer oder ein anderer Zwischenspeicher sein, um eingehende Anfragen aufzunehmen. Bei der gezeigten Ausführungsform kann TOR 220 wenigstens eine fest zugeordnete Ressource 225 für gepostete Transaktionen einschließen. Bei einer Ausführungsform kann die fest zugeordnete Ressource 225 ein einzelner Eintrag der Warteschlange sein, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt ist.
  • Unter weiterer Bezugnahme auf 2 bildet TOR 220 eine Schnittstelle mit LLC 230. Spezieller kann dieser LLC eine Bank oder ein anderer Teil des mit dem Caching-Agenten verbundenen LLC sein. Um Zugriff zu anderen Orten innerhalb des Prozessors über eine Ring-Kopplungsstruktur 260 bereitzustellen, können eine Eingangswarteschlange 240 und eine Ausgangswarteschlange 250 vorgesehen werden. Deshalb können über den Caching-Agenten 200 Kerne des Prozessors und ein IIO-Modul ohne die Notwendigkeit von zusätzlichen Caching-Agenten die Kohärenz aufrechterhalten. Obwohl aus Gründen einer vereinfachten Darstellung nicht dargestellt, ist es offensichtlich, dass Caching-Agent 200 weiter verschiedene Kohärenz-Logik einschließen kann, um Cache-Kohärenz-Operationen im Auftrag der Kerne und des IIO-Moduls auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen wie hiernach beschrieben zu ermöglichen.
  • Zu beachten ist, dass, obwohl in 2 aus Gründen einer vereinfachten Darstellung eine einzelne Struktur gezeigt ist, es offensichtlich ist, dass ein Caching-Agent so verteilt werden kann, dass jeder von unterschiedlichen Teilen des Caching-Agenten mit einem entsprechenden Kern und einer LLC-Bank oder einem LLC-Segment verbunden sein kann.
  • Mit dieser Herangehensweise geht das IIO-Modul durch den CPU-Caching-Agenten, um auf Speicher oder andere IO-Geräte zuzugreifen und dadurch den Overhead des Zuordnens von fest zugeordneten Ressourcen für einen integrierten IO-Caching-Agenten zu reduzieren. Dies reduziert auch den Betrag an erforderlichem Snoop-Verkehr, da eine verminderte Anzahl von Caching-Agenten pro System realisiert werden kann. Deshalb kann bei verschiedenen Ausführungsformen ein System einen einzelnen Caching-Agenten pro Mehrkernprozessor-Sockel einschließen, wobei jeder Sockel mehrere Kerne und ein IIO-Modul einschließt.
  • Ausführungsformen stellen auch eine IO-Leistungsverbesserung bereit. Insbesondere kann ein IO-Gerät, das durch das IIO-Modul unterstützt wird, direkt kohärente Daten in diesen Cache „schieben“, wo jeder Prozessorkern innerhalb des gleichen Sockels einen sehr schnellen Weg aufweisen kann, um auf die Daten zuzugreifen, da sich dieses IIO-Modul viel näher an einem internen CPU-Cache wie einem LLC befindet. Dies steht im Gegensatz zum konventionellen Ansatz, bei dem ein chipexternes IO-Gerät einen direkten Cache-Zugriff- (DCA) -Hinweis an einen Prozessorkern ausgeben muss, um zu bewirken, dass eine Cachezeile in den LLC gebracht wird. Zu diesem Zweck kann ein IO-Gerät, das mit einem IIO-Modul gemäß einer Ausführungsform der vorliegenden Erfindung gekoppelt ist, eine Zuordnungstransaktion generieren, die Daten direkt im LLC deponieren kann.
  • Auf diese Weise können IO-Daten näher an den CPU-Cache herangebracht werden, was einen effizienteren Mechanismus bereitstellt, um Daten von einem IO-Gerät direkt in einem LLC eines Prozessors zu deponieren und ohne die Notwendigkeit zuerst die Daten in einem Systemspeicher zu speichern, was den Bandbreitenverbrauch reduziert. Weiter noch kann die Notwendigkeit eines direkten Cache-Hinweises vom IO-Gerät an einen Kern, um eine Leseanfrage zu veranlassen und die Daten zu erhalten, vermieden werden.
  • Bezugnehmend auf 3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 3 kann das Verfahren 300 verwendet werden, um die Zuweisung von Daten von einem IO-Gerät, das mit einem Mehrkernprozessor gekoppelt ist, direkt in einen Cache-Speicher des Prozessors auszuführen. Insbesondere kann Verfahren 300 von 3 verwendet werden, um Daten auf eine Weise in den Cache einzuführen, die Folgendes vermeidet: die Daten an einen Systemspeicher, der mit dem Prozessor (wie ein dynamischer Random Access Memory (DRAM)) über einen integrierten Memory-Controller des Prozessors gekoppelt ist, zuerst bereitzustellen; und die Notwendigkeit, einen Hinweis an einen Kern des Prozessors zu senden, um zu veranlassen, dass die Daten angefordert und im Cache gespeichert werden.
  • Wie ersichtlich in 3 kann Verfahren 300 mit dem Empfangen einer Zuweisungstransaktion in einem IIO-Modul von einem IO-Gerät (Block 310) beginnen. Beispielsweise kann diese Zuweisungstransaktion eine Anforderung sein, Daten direkt in einen Cache-Speicher, wie beispielsweise einen LLC des Prozessors zu schreiben, und sie kann von einem IO-Gerät wie einem Peripheriegerät empfangen werden, das beispielsweise mit dem Prozessor über einen PCle™-Link gekoppelt ist. Wie ersichtlich kann diese Zuweisungstransaktion vom IIO an einen CPU-Caching-Agenten weitergeleitet werden (Block 320). Da es bei verschiedenen Ausführungsformen keinen separaten Caching-Agenten für den IIO gibt, kann diese Transaktion zu einem gemeinsamen Caching-Agenten geleitet werden, der Caching-Agenten-Funktionalität für die Prozessorkerne und den IIO ausführt.
  • Ansprechend auf diese Anforderung geht die Steuerung zu Block 330 weiter, wo die Daten direkt in den LLC gespeichert werden können. Bei einer Ausführungsform kann ein Least Recently Used- (LRU) -Algorithmus verwendet werden, um die Daten, zusammen mit einer Weg-Maske zu platzieren und die LLC-Wege einzuschränken, die IIO-Daten zugewiesen werden können. Insbesondere können die Daten zusammenhängend gemäß einem gegebenen Cache-Kohärenz-Protokoll (z. B. einem Modified Exclusive Shared Invalid- (MESI) - Protokoll) gespeichert werden.
  • Mit den jetzt im LLC vorhandenen Daten kann auf diesen mehrfach durch jeden der Kerne des Prozessors sowie durch das initiierende IO-Gerät oder andere IO-Geräte, die mit dem Prozessor gekoppelt sind, für Lese- und Schreiboperationen zugegriffen werden (Block 340). Konventionelle Cache-Kohärenz-Protokoll-Operationen und Compliance mit Sortierungsregeln können beim Zugreifen auf diese Daten erfolgen, um die Kohärenz aufrechtzuerhalten. Während des normalen Cachevorgangs kann bestimmt werden, ob die Daten dieser Cachezeile zwangsweise entfernt werden sollen (Raute 350). Wenn dies so ist, können die Daten zum Speicher zurückgeschrieben werden (Block 360). Indem Ausführungsformen das Verfahren 300 auf diese Weise verwenden, stellen sie die Fähigkeit bereit, wirksam Daten von einem IO-Gerät direkt in einen Prozessor-Cachespeicher zu laden ohne die Notwendigkeit, irgendeine Speicherbandbreite zu verbrauchen. Stattdessen werden nur bei einem Entfernen aus dem Cache die Daten in den Systemspeicher geschrieben. Obwohl diese bestimmte Implementierung in der Ausführungsform von 3 gezeigt ist, wird dadurch der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt.
  • Verschiedene Elemente sowohl innerhalb eines IIO-Moduls als auch innerhalb des CPU-Caching-Agenten können konfiguriert werden, um Deadlocks zu vermeiden und eine angemessene Leistung sicherzustellen. Für eine PCle™-Sortierungsregel-Compliance, und um die Leistung aufrechtzuerhalten, kann eine Drop-Eigentümerschaft-Anzeige an einen CPU-Caching-Agenten bereitgestellt werden, um einen Hinweis an den IIO zurückzusenden, die Eigentümerschaft einer Cachezeile im Falle, dass eine externe Snoop-Anfrage zu einer vorhandenen Eigentümerschaftsanforderung erkannt wird, fallen zu lassen. Im Gegensatz dazu ruft eine konventionelle IIO-Implementierung die Eigentümerschaft einer Cachezeile lange davor ab, wenn das IIO-Gerät gelesen wird, um rückzuordnen und die Schreibanordnung zu erfüllen. Deshalb arbeitet ein konventioneller IIO derart, dass die Eigentümerschaft einer Zeile erworben wird, bevor das Schreiben der Cachezeile für die Übergabe an das System bereit ist. Nur, wenn die Schreibanordnung erfüllt ist, tritt ein Schreibvorgang zum System auf. Während dieser Zeit bewirken alle zur gleichen Zeile eingehenden Snoops, dass der IIO die Eigentümerschaft der Zeile verliert, und es muss eine Anforderung für die Eigentümerschaft erneut ausgegeben werden, um die Eigentümerschaft erneut zu erhalten.
  • Bezugnehmend auf 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 4 kann das Verfahren 375 verwendet werden, um Deadlocks zu vermeiden, indem ein IIO veranlasst wird, die Eigentümerschaft einer gegebenen Cachezeile fallen zu lassen, wenn eine in Konflikt stehende Anforderung empfangen wird. Speziell wie gezeigt in 4 kann das Verfahren 375 beginnen, indem es bestimmt, dass eine Snoop-Anfrage in einem Caching-Agenten für eine Cachezeile empfangen wird, die von einem IIO-Modul besessen wird (Raute 380). Diese Eigentümerschaft kann bei einigen Ausführungsformen auf Zustandsinformationen basieren, die mit der Cachezeile verbunden sind, wie beispielsweise eine Eigentümerschaftsanzeige sowie Cache-Kohärenz-Zustandsinformationen. Wenn eine solche Anforderung empfangen wird, kann der Caching-Agent eine Drop-Eigentümerschaft-Anzeige an das IO-Modul senden, um das Modul zu veranlassen, die Eigentümerschaft der Cachezeile fallen zu lassen (Block 385). Zu beachten ist, dass der Grund für diesen Hinweis wahrscheinlich der ist, dass die Eigentümerschaft der Cachezeile vom IIO-Modul auf ein Vorabrufen durch ein gekoppeltes IO-Gerät anspricht und somit die Daten in Bezug auf das IO-Gerät von einer spekulativen Natur und noch nicht erforderlich sind.
  • Wie weiter gezeigt in 4, geht die Steuerung als Nächstes zu Block 390 weiter, wo die Eigentümerschaft der Cachezeile dem Initiator des Snoop gewährt werden kann. Auf diese Weise kann dieser anfragende Agent gewünschte Operationen an den Daten ausführen. Dann kann auf die Daten später durch das IO-Gerät zugegriffen werden. Obwohl diese bestimmte Implementierung in der Ausführungsform von 4 gezeigt ist, ist der Umfang der vorliegenden Erfindung jedoch in dieser Hinsicht in keiner Weise eingeschränkt.
  • Deshalb können unter Verwendung des oben beschriebenen Mechanismus, um die Eigentümerschaft abzutreten, Deadlocks vermieden werden. Stattdessen kann man sich bei einem konventionellen System leicht vorstellen, dass zwei 1/Os im System die Eigentümerschaft für die nichtälteste Transaktion erwerben und beide um die älteste Transaktion bieten, um rückzuordnen. Sofern nicht eine Seite die Eigentümerschaft abtritt, resultiert das System in einem Deadlock.
  • Es gibt zwei Arten von IIO-Verkehr, die von CPU-Agenten gesehen werden, das heißt, gepostete und nicht gepostete Anforderungen gemäß einer PCle™-Spezifikation, wie beispielsweise die PCI Express™ Specification Base Specification Version 2.0 (veröffentlicht am 17. Januar, 2007) (hiernach die PCle™-Spezifikation). Generell ist eine gepostete Transaktion eine Transaktion, die, wenn sie von einer Quelle gesendet wurde, von der Quelle als abgeschlossen betrachtet wird, und die Quelle empfängt keine Abschlussmeldung oder irgendeine andere Bestätigungsmeldung bezüglich der Transaktion. Ein solches Beispiel einer geposteten Transaktion kann eine Schreibtransaktion sein. Im Gegensatz dazu wird eine nicht gepostete Transaktion von der Quelle nicht als abgeschlossen betrachtet, bis eine Rückmeldung, das heißt, ein Abschluss empfangen wird. Ein Beispiel einer nicht geposteten Transaktion ist eine Lesetransaktion, bei der der Quelle-Agent ein Lesen von Daten anfordert. Dementsprechend stellt die Abschlussmeldung die angeforderten Daten bereit. Gepostete Anforderungen dürfen nicht von nicht geposteten Anforderungen in den Strukturen blockiert werden, ansonsten existiert ein Deadlock-Anliegen. Wenn beispielsweise IIO-gepostete Anforderungen, die durch den CPU-Caching-Agenten hindurchgehen, keinen Zugriff zu einer angeforderten Ressource erlangen können, um Anforderungen an einen Speicher oder einen Remote-IIO zu senden, hindern sie alle nicht geposteten Anforderungen vom Kern oder IIO daran abgeschlossen zu werden und schaffen deshalb einen Deadlock.
  • Bezugnehmend auf 5 ist ein Blockdiagramm eines Beispiels eines möglichen Deadlock-Szenarios gezeigt, das gemäß verschiedenen Ausführungsformen vermieden werden kann. Wie ersichtlich in 5 schließt System 400 einen ersten Mehrkernprozessor 4100 gekoppelt mit einem zweiten Mehrkernprozessor 4101 ein. Wie ersichtlich schließt jeder Prozessor einen entsprechenden Kern 420 und ein IIO-Modul 430 ein. Natürlich können mehrere Kerne in unterschiedlichen Ausführungsformen vorhanden sein. Außerdem schließt jeder Prozessor einen Caching-Agenten 440 ein, der als der Caching-Agent für den Kern und das IIO-Modul agiert. Wie ersichtlich kann Kern 4200 nicht gepostete Anforderungen ausgeben, wie Kernspeicherzugeordnete IO- (MMIO) -Leseanfragen von einer nicht geposteten Warteschlange 4220 zu einer TOR 4440 des Caching-Agenten 4400. Wenn sich diese nicht geposteten Lesevorgänge vor geposteten Anforderungen befinden, können Deadlocks auftreten.
  • Wie weiter gezeigt schließt IIO-Modul 4300 eine gepostete Warteschlange 4320 ein, die verwendet wird, um ausstehende gepostete Anforderungen wie eingehende (eingehend zum Prozessor) Speicherschreibanforderungen zu speichern, sowie eine nicht gepostete Warteschlange 4340, die nicht gepostete Anforderungen wie ausgehende nicht gepostete Leseanfragen speichern kann, wie beispielsweise vom Prozessor oder einem anderen IO-Agenten zum IO-Gerät. Deshalb können wie ersichtlich Transaktionen in der Schreibwarteschlange 4340 nach Transaktionen in der Schreibwarteschlange 4320 angeordnet werden. Durch Bereitstellen einer zugehörigen geposteten Ressource innerhalb von TOR 444 kann eine Prozessblockade vermieden werden. Zu beachten ist, dass die PCle™-Sortierungsregeln diktieren, dass gepostete Anforderungen nicht durch nicht gepostete Anforderungen blockiert werden dürfen und deshalb bei allgemeinen Schreibtransaktionen Lesetransaktionen vorausgehen.
  • Um solche Deadlocks zu vermeiden, können Ausführungsformen CPU-Caching-Agenten entsprechend konfigurieren. Diese Konfiguration schließt ein, dem CPU-Caching-Agenten zu ermöglichen, eine Ressourcenreservierung und -Anordnung, Konfliktumgehung und Arbitrierungsrichtlinie gemäß einer Ausführungsform der vorliegenden Erfindung auszuführen. Zu diesem Zweck erhält der CPU-Caching-Agent fest zugeordnete Ressourcen für gepostete Anforderungen, wie beispielsweise das Reservieren von wenigstens einer Ressource wie ein Eintrag einer TOR für eine gepostete Anforderung. Ausführungsformen können auch sicherstellen, dass die reservierte Ressource durch die „älteste“ gepostete Anforderung vom IIO verbraucht wird. Ansonsten kann eine jüngere Anforderung die Ressource aufnehmen, kann aber nicht während des Wartens auf die älteste Anforderung rückordnen, die in einer Struktur feststecken kann.
  • Ein CPU-Caching-Agent gemäß einer Ausführungsform der vorliegenden Erfindung kann auch Adresskonflikte erkennen und umgehen, wenn eine gepostete Anforderung mit einer älteren nicht geposteten Anforderung abgeglichen werden sollte, welche die gleiche Adresse aufweist, und stellt somit eine Konfliktumgehung bereit. Ausführungsformen können weiter eine Arbitrierungsrichtlinie bereitstellen, sodass sie dort, wo es einen Anti-Hunger-Mechanismus im Arbitrierungsschema innerhalb des CPU-Caching-Agenten gibt, sicherstellt, dass die älteste gepostete Anforderung es immer noch durch die Arbitrierung schaffen kann, um einen Deadlock zu vermeiden.
  • Mit der oben genannten Konfiguration eines CPU-Caching-Agenten kann ein IIO hinter einem CPU-Caching-Agenten gekoppelt werden und aus einer reduzierten Komplexität und Bauelementeanzahl einen Nutzen ziehen. Das heißt, mittels Proxying von IIO-verwandten Transaktionen durch einen CPU-Caching-Agenten können im Gegensatz zu separaten zugehörigen IO-Agenten, die mit einem Sockel über einen chipexternen Link gekoppelt sind, eine bessere Skalierungsprofilierung und Leistungsvorteile realisiert werden. Ausführungsformen erhöhen auch potenziell die Möglichkeit, mehr Plattform-Konfigurationen unterstützen zu können. Diese Integration zusammen mit einem Durchrouten mit niedriger Latenzzeit (unter Verwendung von Ring-Ressourcen) kann verschiedene Plattform-Konfigurationen berücksichtigen.
  • Durch Reduzieren der Anzahl von Caching-Agenten tritt viel weniger Ressourcenaufteilung im System wie Home-Agent-Tracker-Einträge usw. auf, und durch das Reduzieren des Betrags an Snoop-Overhead aufgrund der Anzahl an Caching-Agenten in einem System kann eine verbesserte Skalierung/Leistung erreicht werden.
  • Bezugnehmend auf 6 ist ein Blockdiagramm eines Mehrkernprozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie bei der Ausführungsform von 6 gezeigt, schließt Prozessor 700 eine dezentralisierte Konfiguration ein, die Partitionen oder Teile aufweist, von denen jeder einen Kern 710 und eine Partition eines Caching-Agenten 715 und einen LLC 720 einschließt. Zu beachten ist, dass, während verteilte Caching-Agenten gezeigt sind, es offensichtlich ist, dass diese verteilten Teile einen einzelnen Caching-Agenten bilden, der konfiguriert ist, Cache-Kohärenz-Operationen für die Kerne sowie für ein IIO-Modul 750 zu behandeln.
  • Im Allgemeinen kann jeder Kern 7100-710n zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen weiter Low-Level-Caches einschließen. Wiederum können die verschiedenen Kerne miteinander und mit einem gemeinsam benutzten Cache-Speicher gekoppelt sein, der aus einer Vielzahl von Einheiten eines LLC 7400 - 740n via Caching-Agent 7150-715n gebildet ist. Bei verschiedenen Ausführungsformen kann LLC 740 unter den Kernen und dem IIO-Modul 750 gemeinsam benutzt werden. Wie ersichtlich koppelt eine Ring-Kopplungsstruktur 730 deshalb die Kerne miteinander und stellt eine Verbindung zwischen den Kernen, Caching-Agent 715 und IIO-Modul 750 bereit.
  • Wie ersichtlich in 6 kann IIO-Modul 750 eine Schnittstelle zu verschiedenen chipexternen IO-/Peripheriegeräten (aus Gründen einer vereinfachten Darstellung in 6 nicht dargestellt) bereitstellen. Zu diesem Zweck kann IIO-Modul 750 verschiedene Schnittstellen einschließen, einschließlich mehrerer PCle™-Schnittstellen 7520 - 752n, einer Direct Media Interface (DMI) 754 und eines erweiterten programmierbaren IO-Interruptcontrollers (IO-APIC) 755. Wie ersichtlich kann IIO-Modul 750 auch mit einer Power Control Unit (PCU) 760 gekoppelt sein.
  • Um Kommunikationen mit anderen Komponenten eines Systems bereitzustellen, kann Ring-Kopplungsstruktur 730 mit einem Home-Agenten 770 koppeln, der wiederum einen integrierten Memory-Controller (IMC) 775 schützt. Wiederum kann IMC 775 beispielsweise über DDR-Links mit einem mit dem Prozessor gekoppelten Systemspeicher kommunizieren. Des Weiteren kann eine Intel ® Quick Path Interconnect- (QPI) -Schnittstelle 780 mit Ring-Kopplungsstruktur 730 koppeln, um als eine Schnittstelle zu einem anderen Agenten (wie einem anderen Prozessor in einem Mehrprozessorsystem) zu agieren, der mit dem Prozessor über einen QPI™-Link gekoppelt ist. Obwohl diese bestimmte Konfiguration in der Ausführungsform von 6 gezeigt ist, wird dadurch der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt.
  • [7 ist ein Blockdiagramm eines Mehrprozessorsystems 800 gekoppelt mit Punkt-zu-Punkt- (PtP) -Systemkopplungsstrukturen gemäß einer Ausführungsform der vorliegenden Erfindung. Bei der gezeigten Ausführungsform schließt jeder Prozessor 810 eine Instanz eines integrierten Memory-Controllers 815 ein, der wiederum mit einem entsprechenden lokalen Teil eines Systemspeichers 820 gekoppelt ist, wie beispielsweise über verschiedene Speicher-Links wie Doppel-Datenrate- (DDR) -Kanäle. Wie ersichtlich ist einer der Prozessoren mit einem peripheren Controller Hub (PCH) 830 über beispielsweise DMI- und PCle™-Links verbunden. Bei der gezeigten Ausführungsform wird ein QPI™-Link 825 verwendet, um die zwei Prozessoren zu verbinden. Zu beachten ist, dass jeder der Prozessoren ein IIO-Modul einschließen kann, um eine Schnittstelle zu einem oder mehreren chipexternen Peripheriegeräten und einem einzelnen vom IIO-Modul und den Kernen des Prozessors gemeinsam benutzten Caching-Agenten bereitzustellen. Wie weiter in 7 ersichtlich kann PCH 830 mit verschiedenen Geräten kommunizieren, einschließlich einem Basic Input/Output System- (BIOS) -Speicher 835 wie ein Flash-Speicher, einem Serial Advanced Technology Attach (SATA) -Gerät 840 wie ein Plattenlaufwerk und einer Netzwerkschnittstelle 850, wie beispielsweise ein Ethernet-Gerät.
  • Ausführungsformen können in Code implementiert und auf einem nicht flüchtigen Speichermedium gespeichert werden, auf dem Befehle gespeichert sind, die verwendet werden können, um ein System zu programmieren, die Befehle auszuführen. Das Speichermedium kann einschließen, ist aber nicht beschränkt auf, jede Art Disks, u. a. Floppy Disks, optische Disks, Solid State-Laufwerke (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Disks (MO), Halbleiter-Geräte, wie Read-Only Memories (ROMs), Random Access Memories (RAMs), wie Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten oder jede andere Art Speichermedium, das sich für das Speichern von elektronischen Befehlen eignet.
  • Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, ist sich ein Fachmann bewusst, dass viele weitere Modifikationen und Varianten davon möglich sind. Die beigefügten Ansprüche sollen alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Schutzbereich der vorliegenden Erfindung entsprechen.

Claims (20)

  1. Vorrichtung, umfassend: ein Mehrkernprozessor einschließlich einer Vielzahl von Kernen, ein gemeinsam benutzter Cache-Speicher, ein integriertes Ein-/Ausgabe-(IIO)-Modul, um eine Schnittstelle zwischen dem Mehrkernprozessor und wenigstens einem IO-Gerät herzustellen, das mit dem Mehrkernprozessor gekoppelt ist, und einen Caching-Agenten, wobei der Caching-Agent Kohärenz-Logik einschließt, um Cache-Kohärenz-Operationen für die Vielzahl von Kernen und das IIO-Modul auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen zu ermöglichen, wobei das IIO-Modul eine erste Warteschlange für gepostete Anforderungen und eine zweite Warteschlange für nicht gepostete Anforderungen aufweist und wobei das IIO-Modul eine PCI Express-Schnittstelle aufweist, wobei das IIO-Modul ferner eingerichtet ist, mittels der Anforderungen direkt auf den Cache-Speicher zuzugreifen, wobei der Caching-Agent derart eingerichtet ist, dass bei einem Cache-Speicher-Zugriff eine gepostete Anforderung einer nicht geposteten Anforderung vorausgeht.
  2. Vorrichtung nach Anspruch 1, wobei der Caching-Agent eine Tabelle von Anforderungen einschließt, um ausstehende Anforderungen für die Vielzahl von Kernen und das IIO-Modul zu speichern.
  3. Vorrichtung nach Anspruch 2, wobei die Tabelle von Anforderungen wenigstens einen zugehörigen Eintrag einschließt, um eine gepostete Transaktion zu speichern.
  4. Vorrichtung nach Anspruch 1, wobei der Caching-Agent ein einzelner Caching-Agent für den Mehrkernprozessor ist und eine Vielzahl von verteilten Teilen einschließt, von denen jeder mit einem entsprechenden der Vielzahl von Kernen verbunden ist.
  5. Vorrichtung nach Anspruch 4, wobei der gemeinsam benutzte Cache-Speicher einen Last Level Cache (LLC) einschließlich einer Vielzahl von verteilten Teilen umfasst, von denen jeder mit einem entsprechenden der Vielzahl von Kernen verbunden ist.
  6. Vorrichtung nach Anspruch 5, wobei die Vielzahl von verteilten Teilen des Caching-Agenten über eine Ring-Kopplungsstruktur gekoppelt ist.
  7. Vorrichtung nach Anspruch 1, wobei der Caching-Agent eine Zuweisungstransaktion vom IIO-Modul empfängt, und wobei die Zuweisungstransaktion im IIO-Modul von einem mit dem Mehrkernprozessor gekoppelten IO-Gerät empfangen wird.
  8. Vorrichtung nach Anspruch 7, wobei der Caching-Agent direkt Daten der Zuweisungstransaktion im gemeinsam benutzten Cache-Speicher speichert und keine Speicher-Transaktion zu einem mit dem Mehrkernprozessor gekoppelten Systemspeicher initiiert.
  9. Vorrichtung nach Anspruch 1, wobei der Caching-Agent eine Drop-Eigentümerschaft-Anzeige an das IIO-Modul für eine Cachezeile sendet, die vom IIO-Modul für ein IO-Gerät besessen wird, das mit dem Mehrkernprozessor gekoppelt ist, der auf den Empfang einer Snoop-Anfrage im Caching-Agenten für die Cachezeile von einem anderen Agenten anspricht.
  10. Vorrichtung nach Anspruch 9, wobei das IO-Gerät die Cachezeile vorabgerufen hat.
  11. Vorrichtung nach Anspruch 9, wobei der andere Agent einer der Vielzahl von Kernen ist.
  12. Verfahren, umfassend: das Empfangen einer Zuweisungstransaktion in einem integrierten Ein-/Ausgabe-(IIO)-Modul eines Mehrkernprozessors von einem mit dem Mehrkernprozessor gekoppelten IO-Gerät; das Weiterleiten der Zuweisungstransaktion zu einem Caching-Agenten des Mehrkernprozessors, wobei der Caching-Agent von einer Vielzahl von Kernen des Mehrkernprozessors und dem IIO-Modul gemeinsam benutzt wird, wobei der Caching-Agenten Kohärenz-Logik einschließt, um Cache-Kohärenz-Operationen für die Vielzahl von Kernen und das IIO-Modul auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen zu ermöglichen, wobei das IIO-Modul eine erste Warteschlange für gepostete Anforderungen und eine zweite Warteschlange für nicht gepostete Anforderungen aufweist und wobei das IIO-Modul eine PCI Express-Schnittstelle aufweist, wobei das IIO-Modul mittels der Anforderungen direkt auf den Cache-Speicher zugreift, wobei der Caching Agent derart eingerichtet ist, dass bei einem Cache-Speicher-Zugriff eine gepostete Anforderung einer nicht geposteten Anforderung vorausgeht; und das direkte Speichern von Daten der Zuweisungstransaktion in einen gemeinsam benutzten Cache-Speicher des Mehrkernprozessors.
  13. Verfahren nach Anspruch 12, weiter umfassend das mehrfache Zugreifen auf die Daten im gemeinsam benutzten Cache-Speicher über mindestens einen der Vielzahl von Kernen des Mehrkernprozessors, ohne eine Transaktion an einen mit dem Mehrkernprozessor gekoppelten Systemspeicher zu senden.
  14. Verfahren nach Anspruch 13, weiter umfassend das Senden von Daten der Cachezeile zum Systemspeicher vom gemeinsam benutzten Cache-Speicher, wenn die Cachezeile vom gemeinsam benutzten Cache-Speicher entfernt wird, wenn sie modifizierte Daten einschließt.
  15. Verfahren nach Anspruch 13, weiter umfassend das direkte Speichern der Daten der Zuweisungstransaktion in den gemeinsam benutzten Cache-Speicher, ohne mit dem Systemspeicher zu kommunizieren.
  16. Verfahren nach Anspruch 12, weiter umfassend das Senden einer Drop-Eigentümerschaft-Anzeige zum IIO-Modul für eine Cachezeile, die vom IIO-Modul besessen wird, das auf den Empfang einer Snoop-Anfrage im Caching-Agenten für die Cachezeile von einem anderen Agenten anspricht.
  17. System umfassend: ein erster Mehrkernprozessor, einschließlich einer ersten Vielzahl von Kernen, ein erster gemeinsam benutzter Cache-Speicher, ein erstes integriertes Ein-/Ausgabe-(IIO)-Modul, um eine Schnittstelle zwischen dem ersten Mehrkernprozessor und einer ersten Vielzahl von IO-Geräten herzustellen, die mit dem ersten Mehrkernprozessor gekoppelt sind, und einen ersten Caching-Agenten, wobei der erste Caching-Agent Kohärenz-Logik einschließt, um Cache-Kohärenz-Operationen für die erste Vielzahl von Kernen und das erste IIO-Modul auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen zu ermöglichen, wobei das erste IIO-Modul eine erste Warteschlange für gepostete Anforderungen und eine zweite Warteschlange für nicht gepostete Anforderungen aufweist und wobei das erste IIO-Modul eine erste PCI Express-Schnittstelle aufweist, wobei das erste IIO-Modul ferner eingerichtet ist, mittels der Anforderungen direkt auf den ersten Cache-Speicher zuzugreifen, wobei der erste Caching Agent derart eingerichtet ist, dass bei einem Cache-Speicher-Zugriff eine gepostete Anforderung einer nicht geposteten Anforderung vorausgeht, und wobei der erste Caching-Agent eine Tabelle von Anforderungen einschließt, die eine Vielzahl von Einträgen aufweist, von denen jeder eine ausstehende Anforderung für einen der ersten Vielzahl von Kernen oder des ersten IIO-Moduls speichert, einschließlich wenigstens eines zugehörigen Eintrags, um eine ausstehende Anforderung, die einer geposteten Transaktion entspricht, zu speichern; ein zweiter Mehrkernprozessor einschließlich einer zweiten Vielzahl von Kernen, ein zweiter gemeinsam benutzter Cache-Speicher, ein zweites IIO-Modul, um eine Schnittstelle zwischen dem zweiten Mehrkernprozessor und einer zweiten Vielzahl von IO-Geräten herzustellen, die mit dem zweiten Mehrkernprozessor gekoppelt sind, und einen zweiten Caching-Agenten, wobei der zweite Caching-Agent Kohärenz-Logik einschließt, um Cache-Kohärenz-Operationen für die zweite Vielzahl von Kernen und das zweite IIO-Modul auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen zu ermöglichen, wobei das zweite IIO-Modul eine erste Warteschlange für gepostete Anforderungen und eine zweite Warteschlange für nicht gepostete Anforderungen aufweist und wobei das zweite IIO-Modul eine zweite PCI Express-Schnittstelle aufweist, wobei das zweite IIO-Modul ferner eingerichtet ist, mittels der Anforderungen direkt auf den zweiten Cache-Speicher zuzugreifen, wobei der zweite Caching Agent derart eingerichtet ist, dass bei einem Cache-Speicher-Zugriff eine gepostete Anforderung einer nicht geposteten Anforderung vorausgeht; und ein Peripherie-Controller, der mit wenigstens einem des ersten und zweiten Mehrkernprozessors gekoppelt ist.
  18. System nach Anspruch 17, wobei der erste Caching-Agent eine Zuweisungstransaktion vom ersten IIO-Modul empfängt und direkt Daten der Zuweisungstransaktion in den ersten gemeinsam benutzten Cache-Speicher speichert.
  19. System nach Anspruch 18, wobei auf die Daten im gemeinsam benutzten Cache-Speicher mehrfach über mindestens einen der ersten Vielzahl von Kernen zugegriffen wird, ohne eine Transaktion zu einem mit dem ersten Mehrkernprozessor gekoppelten Systemspeicher zu senden.
  20. System nach Anspruch 17, wobei der erste Caching-Agent ein einzelner Caching-Agent für den ersten Mehrkernprozessor ist und eine Vielzahl von verteilten Teilen einschließt, von denen jeder mit einem entsprechenden der ersten Vielzahl von Kernen verbunden ist, und wobei der erste gemeinsam benutzte Cache-Speicher einen Last Level Cache (LLC) umfasst einschließlich einer Vielzahl von verteilten Teilen, von denen jeder mit einem entsprechenden der ersten Vielzahl von Kernen verbunden ist und, wobei die Vielzahl von verteilten Teilen des ersten Caching-Agenten über eine Ring-Kopplungsstruktur gekoppelt ist.
DE112012005210.2T 2011-12-13 2012-12-11 Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul Active DE112012005210B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/324,053 US8984228B2 (en) 2011-12-13 2011-12-13 Providing common caching agent for core and integrated input/output (IO) module
US13/324,053 2011-12-13
PCT/US2012/069018 WO2013090297A1 (en) 2011-12-13 2012-12-11 Providing common caching agent for core and integrated input/output (io) module

Publications (2)

Publication Number Publication Date
DE112012005210T5 DE112012005210T5 (de) 2014-09-18
DE112012005210B4 true DE112012005210B4 (de) 2018-10-25

Family

ID=48573109

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012005210.2T Active DE112012005210B4 (de) 2011-12-13 2012-12-11 Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul

Country Status (3)

Country Link
US (2) US8984228B2 (de)
DE (1) DE112012005210B4 (de)
WO (1) WO2013090297A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013081579A1 (en) * 2011-11-29 2013-06-06 Intel Corporation Ring protocol for low latency interconnect switch
US9910807B2 (en) * 2011-11-29 2018-03-06 Intel Corporation Ring protocol for low latency interconnect switch
US9208110B2 (en) * 2011-11-29 2015-12-08 Intel Corporation Raw memory transaction support
US8984228B2 (en) * 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9405687B2 (en) 2013-11-04 2016-08-02 Intel Corporation Method, apparatus and system for handling cache misses in a processor
US20150188797A1 (en) * 2013-12-27 2015-07-02 Guy Satat Adaptive admission control for on die interconnect
CN109240945B (zh) * 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
US9921989B2 (en) 2014-07-14 2018-03-20 Intel Corporation Method, apparatus and system for modular on-die coherent interconnect for packetized communication
US9665505B2 (en) 2014-11-14 2017-05-30 Cavium, Inc. Managing buffered communication between sockets
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US9952987B2 (en) * 2014-11-25 2018-04-24 Intel Corporation Posted interrupt architecture
CN104407989B (zh) * 2014-11-25 2019-02-12 上海兆芯集成电路有限公司 具有统一标签和片化数据的高速缓冲存储器
US10133670B2 (en) * 2014-12-27 2018-11-20 Intel Corporation Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric
US9606925B2 (en) 2015-03-26 2017-03-28 Intel Corporation Method, apparatus and system for optimizing cache memory transaction handling in a processor
WO2017020193A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 处理器芯片、布局方法及访问数据的方法
US10818638B2 (en) * 2015-11-30 2020-10-27 Pezy Computing K.K. Die and package
US9779028B1 (en) 2016-04-01 2017-10-03 Cavium, Inc. Managing translation invalidation
CN107341130B (zh) * 2017-06-29 2020-11-17 上海兆芯集成电路有限公司 具有近端数据处理引擎的芯片组
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
US10915445B2 (en) 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
US11593281B2 (en) * 2019-05-08 2023-02-28 Hewlett Packard Enterprise Development Lp Device supporting ordered and unordered transaction classes
EP3971725A1 (de) * 2020-09-16 2022-03-23 Intel Corporation System, vorrichtung und verfahren zur verkehrssteuerung in einem gewebe

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US7783842B2 (en) * 2003-01-09 2010-08-24 International Business Machines Corporation Cache coherent I/O communication
US7165131B2 (en) 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
US7210000B2 (en) 2004-04-27 2007-04-24 Intel Corporation Transmitting peer-to-peer transactions through a coherent interface
US20060053258A1 (en) 2004-09-08 2006-03-09 Yen-Cheng Liu Cache filtering using core indicators
US7360027B2 (en) * 2004-10-15 2008-04-15 Intel Corporation Method and apparatus for initiating CPU data prefetches by an external agent
US7689778B2 (en) 2004-11-30 2010-03-30 Intel Corporation Preventing system snoop and cross-snoop conflicts
US20070150664A1 (en) 2005-12-28 2007-06-28 Chris Dombrowski System and method for default data forwarding coherent caching agent
US7937534B2 (en) 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure
US20080320236A1 (en) * 2007-06-25 2008-12-25 Makoto Ueda System having cache snoop interface independent of system bus interface
US8169850B2 (en) 2009-04-27 2012-05-01 Intel Corporation Forming multiprocessor systems using dual processors
US8359436B2 (en) 2009-12-18 2013-01-22 Intel Corporation Core snoop handling during performance state and power state transitions in a distributed caching agent
US8443148B2 (en) 2009-12-26 2013-05-14 Intel Corporation System-wide quiescence and per-thread transaction fence in a distributed caching agent
US8984228B2 (en) * 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
Binkert, N. L. et al.: Performance Analysis of System Overheads in TCP/IP Workloads. In: Proceedings of the 14th International Conference on Parallel Architectures and Compilation Techniques (PACT'05). 2005. S. 1 - 11 *
Binkert, N., et al., Proceedings of the 14th International Conference on Parallel Architectures and Compilation Techniques (PACT'05), 2005, S. 1-11
Brecht, T. et al.: Evaluating Network Processing Efficiency with Processor Partitioning and Asynchronous I/O. In: Proceedings of the EuroSys'06, 2006, Leuven Belgium. pp. 265 - 278 *
Brecht, T., et al., Proceedings of the EuroSys'06, 2006, Leuven, Belgium, pp. 265-278
Huggahalli, R. et al.: Direct cache access for high bandwidth network I/O. In: Proceedings of the 32nd International Conference on Computer Architecture (ISCA'05). Madison, WI, 2005.S. 1 - 10 *
Huggahalli, R., et al., Proceedings of the 32nd International Conference on Computer Architecture (ISCA'05), Madison, WI, 2005, S. 1-10
Wikipedia: Write buffer. 13.07.2011<https://en.wikipedia.org/w/index.php?title=Write_buffer&oldid=439221204>(recherchiert am 14.03.2018) *

Also Published As

Publication number Publication date
US20130151782A1 (en) 2013-06-13
US20150143051A1 (en) 2015-05-21
WO2013090297A1 (en) 2013-06-20
DE112012005210T5 (de) 2014-09-18
US8984228B2 (en) 2015-03-17
US9575895B2 (en) 2017-02-21

Similar Documents

Publication Publication Date Title
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE112013001361B4 (de) System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer
DE102018006756A1 (de) Beschleuniger-Fabric
DE112011105298B4 (de) Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102013218370B4 (de) Akquirierung spekulativer Genehmigung für gemeinsam genutzten Speicher
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112005002180T5 (de) Lösen von Cachekonflikten
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102008016178A1 (de) Verfahren und Vorrichtung zum spekulativen Vorabruf in einer Mehrprozessor-/Mehrkern-Nachrichtenübermittlungsmaschine
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE112006000545T5 (de) System und Verfahren zum kohärenten Datentransfer während Leerlaufzuständen von Prozessoren
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 112012007325

Country of ref document: DE

R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: DAEDALUS PRIME LLC (N.D.GES.D.STAATES DELAWARE, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: PETERREINS SCHLEY PATENT- UND RECHTSANWAELTE P, DE

R008 Case pending at federal patent court
R039 Revocation action filed
R040 Withdrawal/refusal of revocation action now final