DE112012004551T5 - Mehrkernverknüpfung in einem Netzprozessor - Google Patents

Mehrkernverknüpfung in einem Netzprozessor Download PDF

Info

Publication number
DE112012004551T5
DE112012004551T5 DE112012004551.3T DE112012004551T DE112012004551T5 DE 112012004551 T5 DE112012004551 T5 DE 112012004551T5 DE 112012004551 T DE112012004551 T DE 112012004551T DE 112012004551 T5 DE112012004551 T5 DE 112012004551T5
Authority
DE
Germany
Prior art keywords
cache
processor cores
banks
data
requests
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.)
Granted
Application number
DE112012004551.3T
Other languages
English (en)
Inventor
Richard E. Kessler
David H. Asher
John M. Perveiler
Bradley D. Dobbie
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.)
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
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 Cavium LLC filed Critical Cavium LLC
Publication of DE112012004551T5 publication Critical patent/DE112012004551T5/de
Granted legal-status Critical Current

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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges

Landscapes

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

Abstract

Ein Netzprozessor umfasst mehrere Prozessorkerne zum Verarbeiten von Paketdaten. Zum Bereitstellen von Zugang zu einem Speicher-Teilsystem für die Prozessorkerne leitet eine Verknüpfungsschaltung Kommunikationen zwischen den Prozessorkernen und dem L2-Cache und anderen Speichervorrichtungen. Die Prozessorkerne sind in mehrere Gruppen aufgeteilt, wobei jede Gruppe einen einzelnen Bus gemeinsam benutzt und der L2-Cache in eine Anzahl von Bänken aufgeteilt ist, wobei jede Bank Zugang zu einem getrennten Bus besitzt. Diese Verknüpfungsschaltung verarbeitet Anforderungen zum Speichern und Abrufen von Daten aus den Prozessorkernen über mehrere Busse und verarbeitet Antworten zum Rücksenden von Daten aus den Cache-Bänken. Als Ergebnis bietet der Netzprozessor Speicherzugang mit hoher Bandbreite für mehrere Prozessorkerne.

Description

  • VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung ist eine Fortführung von und beansprucht Priorität über United States Application No. 13/285,629, eingereicht am 31. Oktober 2011, deren Lehren hier durch Bezugnahme aufgenommen sind.
  • HINTERGRUND
  • Mit typischen Netzprozessoren werden Arbeiten wie beispielsweise Paketverarbeitungsoperationen für Netzprotokolle auf höherer Ebene geplant und in Warteschlangen eingereiht und Verarbeitung hinsichtlich Netzprotokollen höherer Ebene (z. B. Transport- und Anwendungsschichten) in empfangenen Paketen vor Weiterleitung der Pakete zu angeschlossenen Vorrichtungen ermöglicht. Die typischerweise durch Netzprozessoren durchgeführten Funktionen umfassen Paketfilterung, Warteschlangenverwaltung und Priorität, Güte von Dienstzwangsdurchführung und Zugangssteuerung. Durch Einsetzen von für die Verarbeitung von Paketdaten spezifischen Merkmalen können Netzprozessoren eine Schnittstelle einer vernetzten Vorrichtung optimieren.
  • KURZE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Erfindung stellen ein System zum Steuern von Datenübertragung und Verarbeitung in einem Netzprozessor bereit. Durch eine Verknüpfungsschaltung wird die Kommunikation zwischen einer Gruppe mehrerer Prozessorkerne und einem Cache geleitet. Eine Vielzahl von Speicherbussen verbindet jeweils eine jeweilige Gruppe mehrerer Prozessorkerne mit der Verknüpfungsschaltung. Der Cache ist in eine Vielzahl von Bänken aufgeteilt, wobei jede Bank durch einen Einzelbus mit der Verknüpfungsschaltung verbunden ist. Die Verknüpfungsschaltung ermöglicht Verteilen von von den mehreren Prozessorkernen unter den Cache-Bänken empfangenen Anforderungen.
  • In weiteren Ausführungsformen kann die Verknüpfungsschaltung die Anforderungen durch Abändern einer Adresskomponente der Anforderungen umformen. Diese Umformung kann Durchführen einer Hash-Funktion an jeder der Anforderungen umfassen, was eine Pseudo-Zufallsverteilung der Anforderungen unter der Vielzahl von Bänken ermöglicht. Die Verknüpfungsschaltung oder Cache-Bänke können weiterhin zum Unterhalten von Kennzeichen eingerichtet sein, die einen Zustand eines an die mehreren Prozessorkerne angekoppelten L1-Cache anzeigen. Die Verknüpfungsschaltung kann Kennzeichen in den empfangenen Anforderungen zu einer Vielzahl von Kanälen leiten und dadurch mehrere Kennzeichen gleichzeitig verarbeiten.
  • In weiteren Ausführungsformen kann die Verknüpfungsschaltung eine Anzahl von Datenausgangspuffern umfassen. Jeder der Datenausgangspuffer kann Daten von jeder der Vielzahl von Bänken empfangen und Daten durch einen jeweiligen der Speicherbusse ausgeben. Die Verknüpfungsschaltung kann auch eine Anzahl von Anforderungspuffern umfassen, wobei jeder der Anforderungspuffer Anforderungen von jeder Gruppe von Prozessoren empfängt und die Anforderung zu einer jeweiligen der Bänke ausgibt.
  • In weiteren Ausführungsformen können eine oder mehrere Brückenschaltungen an die Speicherbusse angekoppelt sein. Die Brückenschaltungen können die Prozessorkerne mit einem oder mehreren chipinternen Coprozessoren verbinden. Weiterhin können zum Aufrechterhalten von Speicherkohärenz die Cache-Bänke Übertragen eines Ausführungssignals zu den mehreren Prozessorkernen verzögern. Die Cache-Bänke können dann das Ausführungssignal als Reaktion auf Empfangen einer Anzeige, dass Annulliersignale zu der Gesamtheit der mehreren Prozessorkerne übertragen worden sind, übertragen.
  • Die Verknüpfungsschaltung und die Vielzahl von Speicherbussen können zum Ansteuern von Annullierungen eingerichtet sein, um einen L1-Cache in weniger Zeit zu erreichen, als eine erforderliche Zeit zum Erreichen einer Ausführung einer der Vielzahl von Bänken und eines nachfolgenden Signals zum Erreichen eines der mehreren, die Annullierung empfangenden Prozessorkerne.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Das obige wird aus der nachfolgenden ausführlicheren Beschreibung beispielhafter Ausführungsformen der Erfindung offenbart, wie dargestellt in den beiliegenden Zeichnungen, in denen gleiche Bezugsziffern in den gesamten verschiedenen Ansichten die gleichen Teile bezeichnen. Die Zeichnungen sind nicht unbedingt maßstabsgerecht, stattdessen liegt der Schwerpunkt auf der Darstellung von Ausführungsformen der vorliegenden Erfindung.
  • 1 ist ein Blockschaltbild, das einen Netzdiensteprozessor darstellt, in dem Ausführungsformen der vorliegenden Erfindung implementiert sein können.
  • 2 ist ein Blockschaltbild einer kohärenten Speicherverknüpfungsschaltung (CMI-Schaltung – Coherent Memory Interconnect Circuit) und zugehöriger Bestandteile in einer Ausführungsform.
  • 3 ist ein Blockschaltbild, das Verarbeitung von Anforderungen an die Cache-Bänke in einer Ausführungsform darstellt.
  • 4 ist ein Blockschaltbild, das Puffer implementiert in Speicheranforderungen an die Cache-Bänke darstellt.
  • 5 ist ein Blockschaltbild, das Puffer implementiert in Datenausgabe von den Cache-Bänken darstellt.
  • 6 ist ein Blockschaltbild einer Cache-Bank in einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Bevor beispielhafte Ausführungsformen der vorliegenden Erfindung ausführlich beschrieben werden, wird ein beispielhafter Netzsicherheitsprozessor, in dem die Ausführungsformen implementiert sein können, unmittelbar unten beschrieben, um dem Leser dabei behilflich zu sein, die erfinderischen Merkmale der vorliegenden Erfindung zu verstehen.
  • 1 ist ein Blockschaltbild, das einen Netzdiensteprozessor 100 darstellt. Der Netzdiensteprozessor 100 liefert hohe Anwendungsleistung mit wenigstens einem Prozessorkern 120.
  • Der Netzdiensteprozessor 100 verarbeitet in empfangenen Paketen verkapselte OSI-Protokolle (OSI = Open System Interconnection – Offene Kommunikation) der Netzschicht L2–L7. Wie dem Fachmann wohl bekannt ist, definiert das OSI-Referenzmodell sieben Netzprotokollschichten (L1–7). Die physikalische Schicht (L1) stellt die eigentliche elektrische und physikalische Schnittstelle dar, die eine Vorrichtung mit einem Übertragungsmedium verbindet. Die Sicherungsschicht (L2) führt Datenrahmenbildung durch. Die Vermittlungsschicht (L3) formatiert die Daten in Pakete. Die Transportschicht (L4) verarbeitet den Ende-Ende-Transport. Die Sitzungsschicht (L5) verwaltet Kommunikationen zwischen Vorrichtungen, ob zum Beispiel Kommunikation halbduplex oder vollduplex ist. Die Darstellungsschicht (L6) verwaltet Datenformatierung und Darstellung, beispielsweise Syntax, Steuercode, besondere Grafiken und Zeichensätze. Die Anwendungsschicht (L7) erlaubt Kommunikation unter Benutzern, beispielsweise Dateiübertragung und E-Mail.
  • Der Netzdiensteprozessor 100 kann Arbeiten (Paketverarbeitungsoperationen) für Netzprotokolle auf höherer Ebene, zum Beispiel L4–L7 planen und in Worteschlangen einreihen und Durchführung von Verarbeitung von Netzprotokollen der höheren Ebene in empfangenen Paketen erlauben, um Pakete mit Drahtgeschwindigkeit weiterzuleiten. Drahtgeschwindigkeit ist die Geschwindigkeit der Datenübertragung des Netzes, über das Daten übertragen und empfangen werden. Durch Verarbeiten der Protokolle zum Weiterleiten der Pakete mit Drahtgeschwindigkeit verlangsamt der Netzdiensteprozessor nicht die Netzdatenübertragungsgeschwindigkeit.
  • Ein Paket wird zur Verarbeitung durch eine Vielzahl von Schnittstelleneinheiten 122 empfangen. Ein Paket kann auch durch eine PCI-Schnittstelle 124 empfangen werden. Die Schnittstelleneinheit 122 führt durch Überprüfen verschiedener Felder in den im empfangenen Paket enthaltenen L2-Neztprotokollkopfteil Vorverarbeitung des empfangenen Pakets durch und leitet dann das Paket zu einer Paketeinangseinheit 126 weiter. Wenigstens eine Schnittstelleneinheit 122a kann Pakete von einer Vielzahl von XAUI (X Attachment Unit Interfaces – X-Zusatzeinheitsschnittstellen), RIXAUI (Reduced X Attachment Unit Interfaces – verringerte Zusatzeinheitsschnittstellen) oder SGMII (Serial Gigabit Media Independent Interfaces – serielle Gigabit-medienunabhängige Schnittstellen) empfangen. Wenigstens eine Schnittstelleneinheit 122b kann Verbindungen von einer ILK (Interlaken Interface – Interlaken-Schnittstelle) empfangen.
  • Die Paketeingangseinheit 126 führt weitere Vorverarbeitung von in dem empfangenen Paket enthaltenen Netzprotokollkopfteilen (z. B. L3 und L4-Kopfteilen) durch. Die Vorverarbeitung umfasst Prüfsummenüberprüfungen für TCP/UDP (User Datagram Protocol) (L3-Netzprotokolle).
  • Ein Frei-Pool-Zuteiler 128 unterhält Zeiger-Pools zum Freigeben von Speicher im Cache-Speicher 130 Level-2 und externen DRAM 108. Die Paketeingangseinheit 126 benutzt einen der Zeiger-Pools zum Speichern empfangener Paketdaten im Cache-Speicher 130 Level-2 oder externen DRAM 108 und einen anderen der Zeiger-Pools zum Zuteilen von Arbeitswarteschlangeneinträgen für die Prozessorkerne 120.
  • Dann schreibt die Paketeingangseinheit 126 Paketdaten in Puffer im Level-2-Cache 130 oder externen DRAM 108 ein. Vorzugweise werden die Paketdaten in einem für in wenigstens einem der Prozessorkerne 120 ausgeführte Software höherer Schicht zweckdienlichen Format in die Puffer eingeschrieben. Damit wird Weiterverarbeitung von Netzprotokollen höherer Ebene erleichtert.
  • Der Netzdiensteprozessor 100 kann auch einen oder mehrere anwendungsspezifische Coprozessoren umfassen. Diese Coprozessoren, sofern enthalten, entlasten die Kerne 120 von einem Teil der Verarbeitung und ermöglichen dadurch dem Netzdiensteprozessor, eine Paketverarbeitung mit hohem Durchsatz zu erzielen. Beispielsweise wird ein Kompressions-/Dekompressions-Coprozessor 132 bereitgestellt, der der Durchführung von Komprimierung und Dekomprimierung empfangener Pakete zugeordnet ist. Andere Ausführungsformen von Coprozessoren umfassen die RAID/De-Dup-Einheit 162, die Daten-Stripping und Datenverdopplungsverarbeitung für Plattenspeicherungsanwendungen beschleunigt.
  • Ein weiterer Coprozessor ist eine HFA-Einheit 160 (HFA = Hyper Finite Automata), die dedizierte HFA-Thread-Maschinen angepasst zum Beschleunigen von für Anti-Virus-, Eindrangserkennungssysteme und sonstige Inhaltsverarbeitungsanwendungen notwendige Muster- und/oder Signaturanpassung enthält. Durch Verwenden einer HFA-Einheit 160 wird Muster- und/oder Signaturanpassung beschleunigt, zum Beispiel mit Geschwindigkeiten von mehr als mehrfachen von zehn Gigabit pro Sekunde durchgeführt wird. In einigen Ausführungsformen könnte die HFA-Einheit 160 beliebige einer DFA(= Deterministic Finite Automata)-, NFA(= Nondeterministic Finite Automata)- oder HFA-Algorithmuseinheit umfassen.
  • Eine E/A-Schnittstelle 136 verwaltet das Gesamtprotokoll und die Arbitrierung und bietet kohärente E/A-Aufteilung. Die E/A-Schnittstelle 136 umfasst eine E/A-Brücke 138 und eine Bereitstellungseinheit 140. Die E/A-Brücke umfasst zwei Brücken, eine E/A-Paketbrücke (IOBP – I/O Packet Bridge) 138a und eine E/A-Busbrücke (IOBN – I/O Bus Bridge) 138b. Die E/A-Paketbrücke 138a ist eingerichtet zum Verwalten des Gesamtprotokolls und zur Arbitrierung und zum Bereitstellen kohärenter E/A-Zuteilung mit hauptsächlichem Paketeingang und -ausgang. Die E/A-Busbrücke 138b ist eingerichtet zum Verwalten des Gesamtprotokolls und zur Arbitrierung und zum Bereitstellen kohärenter E/A-Zuteilung mit hauptsächlich dem E/A-Bus. Register in der Bereitstellungseinheit 140 werden zum Unterhalten von Längen der Ausgangswarteschlangen benutzt, die zum Weiterleiten verarbeiteter Pakete durch eine Paketausgangseinheit 146 benutzt werden. Die E/A-Brücke 138 benutzt Pufferwarteschlangen zum Speichern von zwischen einer kohärenten Speicherverknüpfung (CMI – Coherent Memory Interconnect) 144, einem E/A-Bus 142, der Paketeingangseinheit 126 und der Paketausgangseinheit 146 zu übertragenen Informationen.
  • Die Universal-E/A-Schnittstelle (MIO – Miscellaneous I/O) 116 kann Hilfsschnittstellen wie beispielsweise GPIO (= General Purpose I/O), Flash, IEEE 802 Zweidraht-MDIO (Management Interface), SMI (= Serial Management Interrupt), UARTs (Universal Asynchronous Receiver-Transmitters), RGMII (= Reduced Gigabit Media Independent Interface – verringerte Gigabit-medienunabhängige Schnittstelle), MII (= Media Independent Interface – medienunabhängige Schnittstelle), TWSI (= Two-Wire Serial Interface – serielle Zweidraht-Schnittstelle) und sonstige serielle Schnittstellen umfassen.
  • Auch kann der Netzdiensterbringer 100 eine die MIPS EJTAG-Norm unterstützende JTAG-Schnittstelle 123 (JTAG = Joint Test Action Group) umfassen. Gemäß den JTAG- und MIPS EJTAG-Normen weist eine Vielzahl von Kernen in dem Netzdiensterbringer 100 jeweils eine interne TAP-Steuerung auf (TAP = Test Access Port – Prüfzugangsanschluss). Dies erlaubt Mehrkern-Entstörungsunterstüzung für den Netzdiensterbringer 100.
  • Durch ein SSO-Modul 148 (SSO = Schedule/Sync and Order – Planungs-/Synch.- und Ordnungs-Modul) werden Arbeiten für die Prozessorkerne 120 in Warteschlangen eingereiht und geplant. Arbeit wird durch Zufügen eines Arbeitswarteschlangeneintrags zu einer Warteschlange eingereiht. Zum Beispiel wird ein Arbeitswarteschlangeneintrag durch die Paketeingangseinheit 126 für jede Paketankunft zugefügt. Zum Planen der Arbeit für die Prozessorkerne 120 wird eine Zeitgebereinheit 150 benutzt.
  • Prozessorkerne 120 fordern Arbeit von dem SSO-Modul 148 an. Das SSO-Modul 148 wählt (d. h. plant) Arbeit für einen der Prozessorkerne 120 und sendet einen Zeiger zu dem die Arbeit beschreibenden Warteschlangeneintrag zurück zum Prozessorkern 120.
  • Der Prozessorkern 120 wiederum umfasst Anweisungs-Cache 152, Level-1-Datencache 154 und Krypto-Hochlauf 156. In einer Ausführungsform umfasst der Netzdiensteprozessor 100 32 superskalare RISC-artige Prozessorkerne 120 (RISC = Reduced Instruction Set Computer – Computer mit verringertem Befehlswort). In einigen Ausführungsformen umfasst jeder der superskalaren RISC-artigen Prozessorkerne 120 eine Erweiterung des Prozessorkerns MIPS64 Version 3. In einer Ausführungsform umfasst jeder der superskalaren RISC-artigen Prozessorkerne 120 einen Prozessorkern cnMIPS II.
  • Der Level-2-Cache-Speicher 130 und externe DRAM 108 werden durch alle der Prozessorkerne 120 und E/A-Coprozessorvorrichtungen geteilt. Jeder Prozessorkern 120 ist durch die CMI 144 an den Level-2-Cache-Speicher 130 angekoppelt. Die CMI 144 ist ein Kommunikationskanal für alle Speicher- und E/A-Transaktionen zwischen den Prozessorkernen 100, der E/A-Schnittstelle 136 und dem Level-2-Cache-Speicher 130 und der Steuerung. In einer Ausführungsform ist die CMI 144 auf 32 Prozessorkerne 120 skalierbar und unterstützt vollkohärente Level-1-Daten-Caches 154 mit Durchschreiben. Vorzugsweise ist die CMI 144 stark gepuffert mit der Fähigkeit zum Priorisieren von E/A. Die CMI ist an eine Ablaufverfolgungssteuerungeinheit 164, eingerichtet zum Erfassen einer Busanforderung, angekoppelt, so dass Software später die Anforderung lesen und eine Spur der Folge von Ereignissen an der CMI erzeugen kann.
  • Die Level-2-Cache-Speichersteuerung 131 unterhält Speicherbezugskohärenz. Sie sendet die jüngste Kopie eines Blocks für jede Füllanforderung zurück, egal ob der Block im Level-2-Cache-Speicher 130, im externen DRAN 108 gespeichert ist oder sich „im Flug” befindet. Auch speichert sie eine Duplikat-Kopie der Kennzeichen für den Daten-Cache 154 in jedem Prozessorkern 120. Sie vergleicht die Adressen von Cache-Block-Speicher-Anforderungen mit den Daten-Cache-Kennzeichen und annulliert (beide Kopien) eines Daten-Cache-Kennzeichens für einen Prozessorkern 120 immer dann, wenn eine Speicheranweisung von einem anderen Prozessorkern oder von einer E/A-Komponente über die E/A-Schnittstelle 136 kommt.
  • In einigen Ausführungen unterstützt eine Vielzahl von DRAM-Steuerungen 133 bis zu 128 Gigabyte DRAM. In einer Ausführungsform umfasst die Vielzahl von DRAM-Steuerungen vier DRAM-Steuerungen, wobei jede der DRAM-Steuerungen 32 Gigabyte DRAM unterstützt. Vorzugweise unterstützt jede DRAM-Steuerung 133 eine 64-Bit-Schnittstelle zum DRAM 108. Zusätzlich kann die DRAM-Steuerung 133 bevorzugte Protokolle wie beispielsweise das DDR-III-Protokoll unterstützen.
  • Nachdem ein Paket durch die Prozessorkerne 120 verarbeitet worden ist, liest die Paketausgangseinheit 146 die Paketdaten aus dem Level-2-Cache-Speicher 130, 108 aus, führt L4-Netzprotokoll-Nachverarbeitung durch (z. B. erzeugt eine TCP/UDP-Prüfsumme), leitet das Paket durch die Schnittstelleneinheiten 122 oder die PCI-Schnittstelle 124 weiter und gibt den durch das Paket benutzten L2-Cache-Speicher 130/DRAM 108 frei.
  • Die DRAM-Steuerungen 133 verwalten fliegende Transaktionen (laden/speichern) zu/von dem DRAM 108. In einigen Ausführungsformen umfassen die DRAM-Steuerungen 133 vier DRAM-Steuerungen, das DRAM 108 umfasst vier DRAM-Speicher und jede DRAM-Steuerung ist mit einem DRAM-Speicher verbunden. Die DFA-Einheit 160 ist auf einem Umgehungs-Cache-Zugangsweg 135 direkt an die DRAM-Steuerungen 133 angekoppelt. Der Umgehungs-Cachezugangsweg 135 erlaubt der HFA-Einheit, direkt aus dem Speicher auszulesen, ohne den Level-2-Cache Speicher 130 zu benutzen, was den Wirkungsgrad für HFA-Operationen verbessern kann.
  • Ausführungsformen der vorliegenden Erfindung können in dem in 1 gezeigten Netzdiensteprozessor 100 implementiert sein und können insbesondere auf die Paketausgangseinheit (PKO) 126 wie auch die Schnittstelleneinheiten 122 gerichtet sein. Beispielhafte Ausführungsformen werden ausführlicher unten unter Bezugnahme auf 24 beschrieben.
  • 2 ist ein Blockschaltbild einer CMI-Schaltung 244 (CMI – Coherent Memory Interconnect – kohärente Speicherverknüpfung) und zugehöriger Komponenten in einer Ausführungsform. Die CMI 244 ist ein Kommunikationskanal und eine Steuerschaltung zum Leiten von Speicher- und E/A-Transaktionen zwischen Gruppen von Prozessorkernen 220A–D, E/A-Brücken 238A–B und Level-2-Cache-Speicherbänken 230A–D. Die CMI 244 kann als CMI 144 im Netzprozessor 100 implementiert sein, wobei die Prozessorkerne 220A–D als die Prozessorkerne 120 implementiert sind, E/A-Brücken 238A–B als die E/A-Brücken 138A–B implementiert sind und die Level-2-Cache-Speicherbänke 230A–D als Level-2-Cache 130 implementiert sind.
  • Sowie die Anzahl von in einem Netzprozessor implementierten Prozessorkernen erhöht wird, wird Bereitstellung gesteuerten Zugangs zu dem Speicher-Teilsystem für eine solche große Anzahl von Quellen problematisch. Eine erste in einem Netzprozessor mit einer großen Anzahl von Prozessorkernen (z. B. 32) gebotene Herausforderung besteht darin, wie Anforderungen von den Kernen zum Speichersystem zu übertragen sind. Vorherige Konstruktionen haben einen Ringbus benutzt, der höhere (und variable) Latenzen erzeugen kann. Eine zweite Herausforderung bei der Auslegung eines Mehrkernchips besteht aus der Bedienung des durch eine sehr große Anzahl von Kernen erzeugten hohen Umfangs an Anforderungen. Eine dritte gleichartige Herausforderung geht mit der Struktur der (hiernach als DUT (DUT = Duplicate Tags) bezeichneten) L1-Kennzeichen des Prozessorkerns einher, die das Erfordernis jeder Anforderung zum Nachschlagen und möglicherweise Aktualisieren eines DUT aufnehmen muss. Viertens müssen die Antwortdaten aus dem Cache zurück zu einem FILL-Bus übertragen werden. Da jede Cache-Bank die Fähigkeit aufweist, nur eine Busanforderung zu einer Zeit zu bedienen und jede Anforderung bis zu vier Zyklen erfordert, werden die FILL-Busse möglicherweise nicht voll ausgenutzt. Eine fünfte Herausforderung geht mit den mit Busspeicheranforderungen verbundenen Daten einher, die von der Anforderungsquelle zu der Cache-Bank übertragen werden müssen, die die Anforderung bedienen wird. Dieses Problem ist mit der vierten Herausforderung (mit Antwortdaten) vergleichbar, aber mit umgekehrter Quelle und Ziel. Sechstens erfordern die Prozessorkerne Zugang zu den Vorrichtungen auf der anderen Seite der E/A-Brücken. Letztlich betrifft eine siebente Herausforderung Unterhalten von Speicherkohärenz im gesamten Speicher-Teilsystem.
  • Ausführungsformen der vorliegenden Erfindung ermöglichen Verarbeiten von Transaktionen zwischen den mehreren Prozessorkernen und dem L2-Cache und dem Speicher-Teilsystem über vier Sätze kohärenter Speicherbusse(CMBs – Coherent Memory Busses) 225A–D. Jeder CMB 225A–D umfasst einzelne Busse ADD/STORE/COMMIT/FILL. Die gesamte Gruppierung von vier CMB 225A–D und E/A-Brückenbussen IOC/IOR sind durch die kohärente Speicherverknüpfung (CMI – Coherent Memory Interconnect) 244 miteinander verbunden. Auf gleiche Weise umfassen vier zusätzliche CMB 235A–D einzelne ADD/STORE/COMMIT/FILL und verwenden die Cache-Bänke 230A–D mit der CMI 244.
  • Die CMB 225A–D können jeweils eine jeweilige Gruppe von Prozessorkernen 220A–D unterstützen. In diesen beispielhaften Ausführungsformen umfasst jede Gruppe von Prozessorkernen 220A–D 8 Prozessorkerne, kann aber zum Umfassen zusätzlicher oder weniger Kerne abgeändert werden. Zum Bereitstellen von Speicherzugang zu dem E/A-Teil des Netzprozessors ist an zwei der Busse 225A–B eine E/A-Brücke (IOB – IO Bridge) 238A–B angeschlossen. Die IOB0 238A kann zum Bereitstellen von Zugang zu den NCB-seitigen E/A-Vorrichtungen für die Prozessorkerne 220A–D über einen dedizierten E/A-Befehl (IOC – I/O Command) und E/A-Antwortbusse (IOR – IO Response) verwendet werden. IOB0 238A und IOB1 238B können beide Zugang zum L2-Cache und Speicher-Teilsystem durch Teilen der CMB-Busse 225A–B jeweils mit den Prozessorkernen 220A–B besitzen.
  • Jede der Cache-Bänke 230A–D kann eine Level-2-Cache-Steuerung (L2C) umfassen, die die Übertragung von Befehlen und Antworten zwischen den CMB 225A–D und den Cache-Bänken 230A–D steuert und dabei das geteilte Speicherkohärenzmodell des Systems unterhält. Die L2C wird ausführlicher unten unter Bezugnahme auf 6 beschrieben.
  • Durch Aufteilen der Prozessorkerne 220A–D und E/A-Brücken 238A–B in vier Gruppen, jeweils versorgt durch eine einzelne CMB 225A–D, kann eine niedrigere Latenzarbitrierungslogik benutzt werden. Örtliche Arbitrierungsentscheidungen werden zwischen nur den Prozessorkernen einer Gruppe 220A–D (und einer E/A-Brücke 238A–B im Fall einer CMB mit einer angeschlossenen E/A-Brücke) getroffen, die einen viel kleineren physikalischen Bereich abdeckende Quellen sind. Arbitrierungsanforderungen und das Gewähren dieser Anforderungen kann in einem einzelnen Zyklus durchgeführt werden, was eine Geschwindigkeit ist, die unerreichbar wäre, wenn man versuchte, zwischen allen Prozessorkernen und E/A-Brücken des Netzprozessors zu arbitrieren. Zusätzlich können alle CMB 225A–D direkte Verbindungen zu den Anführungspuffern in der Verknüpfungsschaltung in der gleichen niedrigen festen Latenzzeit aufweisen. Als Ergebnis werden Anforderungen von den Kernen zum Speichersystem mit niedriger Latenzzeit übertragen.
  • Zum Bedienen des durch die große Anzahl von Prozessorkernen erzeugten großen Umfangs an Anforderungen ist der L2-Cache in die vier einzelnen Cache-Bänke 230A–D aufgeteilt. Dadurch ist die Bandbreite von Anforderungen, die bedient werden könnte, vervierfacht. Die physikalische Adresse jeder Anforderung kann unter Verwendung einer exklusiven ODER(XOR)-Funktion, eingerichtet zum Erzeugen einer annähernd zufallsmäßigen Verteilung von Cacheblöcken über die vier Cache-Bänke für alle gemeinsamen Adress-Streifen, Hash-codiert sein. Damit wird die räumliche Örtlichkeit der CMB-Anforderungen zu einer annähernd zufallsmäßigen Verteilung über die vier Cache-Bänke 230A–D umgewandelt, was eine bessere Nutzung der vier Kennzeichen-Suchläufen pro Zyklus ermöglicht. Wenn umgekehrt der L2-Cache stattdessen eine gleichförmige Struktur aufwiese, könnte nur ein Kennzeichen-Suchlauf pro Zyklus stattfinden und die L2-Cache-Bandbreite stark begrenzen. Als Ergebnis kann der Netzprozessor den durch die große Anzahl von Kernen erzeugten großen Umfang von Anforderungen bedienen. Eine beispielhafte Einrichtung von Anforderungsverarbeitung und -leitung wird unten unter Bezugnahme auf 3 beschrieben.
  • Beim Verarbeiten einer Datenanforderung muss die CMI 244 das DUT nachschlagen und möglicherweise aktualisieren. Bei 4 Anforderungen einspeisenden Bussen erfordert dieser Vorgang bis zu 4 DUT pro Zyklus. Zum Berücksichtigen von DUT-Suchläufen kann das DUT in 8 (auch als ”Kanäle” bezeichnete) Sätze aufgeteilt sein, von denen jeder einen Suchlauf pro Zyklus durchführen kann. Die Verknüpfungsschaltung 244 ist in der Lage, dem DUT bis zu vier CMB-Anforderungen pro Zyklus zuzuweisen, vorausgesetzt, dass sie verschiedene Sätze benutzen müssen. Durch diese Einrichtung wird ein Verhältnis von 2:1 von Ressource zu Anforderung bereitgestellt, was die Möglichkeit erhöht, dass mehrere Anforderungen im gleichen Zyklus bedient werden können. Dadurch können die L1-Kennzeichen eines Netzprozessorkerns das Erfordernis jeder Anforderung zum Nachschlagen und Aktualisieren eines DUT berücksichtigen. Ein Verfahren zum Aktualisieren von DUT wird ausführlicher unten unter Bezugnahme auf 3 beschrieben.
  • Eine Anforderung zum Speichern oder Abrufen von Daten wird von einem Kern einer Gruppe von Prozessorkernen 220A–D durch einen jeweiligen Bus 225A–D und die CMI 244 zu einer Cache-Bank 230A–D übertragen, die die Anforderung bedienen wird. Zum Bedienen mehrerer Anforderungen von den mehreren Prozessorkernen kann der Vorgang des Auslesens der Speicherdaten aus der Speicherquelle (entweder einer E/A-Brücke 238A–B oder einem Prozessorkern 220A–D) von dem Vorgang des Einschreibens in den Speicherpuffer der Cache-Bank 230A–D entkoppelt werden. Dies kann mit vier 2 lese-/2-schreibanschluss kundenspezifischen Datenpuffern erreicht werden. Jeder Puffer kann Daten von zwei Bussen CMB 225A–D empfangen und sendet Daten zu zwei Cache-Bänken 230A–D. Diese Einrichtung erlaubt jedem SPEICHER-Bus CMB 225A–D, eine gegebene Menge (z. B. 128 Byte) von Speicherdaten in jedem Zyklus bereitzustellen, und erlaubt jeder Cache-Bank, die gleiche Menge (z. B. 128 Byte) von Speicherdaten pro Zyklus zu empfangen, unabhängig von dem bestimmten CMB 225A–D oder Cache-Bank 230A–D, die die Daten bereitstellen oder empfangen muss. Diese Einrichtung vereinfacht die Arbitrierung für die CMB-Speicherdatenanforderungen und die Arbitrierung zum Beschreiben der Cache-Bankpuffer 230A–D und ermöglicht damit volle Nutzung der verfügbaren Busressourcen. Als Ergebnis wird die Dateneingangskapazität der Datenbänke voll ausgenutzt. Eine Einrichtung von Datenpuffern wird unten unter Bezugnahme auf 4 beschrieben.
  • Eine Antwort auf eine Anforderung wird durch eine Cache-Bank bereitgestellt und muss von der Cache-Bank zurück zu den FÜLL-Bussen CMB 235A–D übertragen werden. Jede Cache-Bank 230A–D kann möglicherweise nur in der Lage sein, eine CMB-Anforderung zu einer Zeit zu bedienen und jede Anforderung erfordert bis 4 Zyklen. Um die FÜLL-Busse CMB 235A–D voll ausgenutzt zu halten, kann der FÜLL-Puffer-Leseanschluss der Cache-Bank 230A–D vom FÜLL-Bus CMB 235A–D entkoppelt sein und es kann in der Verknüpfungsschaltung 244 ein überbrückbarer Puffer für 3 Schreibanschlüsse implementiert sein, um für den FÜLL-Bus CMB 235A–D bestimmte Daten vorabzurufen. Dies erlaubt bis zu 3 Cache-Bänken, Antwortdaten auszulesen und sie zum Senden zum selben Bus einzureihen. Die Puffer ermöglichen Koordinieren der FÜLL-Busse CMB 235A–D und der FÜLL-Anschlüsse der Cache-Bank 230A–D zum Maximieren der Nutzung. Als Ergebnis wird die Datenausgangskapazität aus den Cache-Bänken voll ausgenutzt. Diese Einrichtung von FÜLL-Puffern wird ausführlicher unten unter Bezugnahme auf 5 beschrieben.
  • Zusätzlich zu den Cache-Bänken 230A–D erfordern die Prozessorkerne 220A–D Zugang zu den Vorrichtungen auf der anderen Seite der IOB 238A–B (z. B. Schnittstelleneinheiten 122a–b und anderen Vorrichtungen am E/A-Bus 142 des Netzprozessors 100 in 1). Dieser Zugang wird über einen dedizierten IOC-Bus (I/O Command – E/A-Befehl) zum IOB0 238A bereitgestellt. Die ADDIER/SPEICHER-Busse CMB235A stellen die Anforderungen von den Prozessorkernen 220A–D bereit und die Verknüpfungsschaltung 244 kann diese Anforderungen in die für den IOC-Bus benötigte Form umsetzen. Zusätzlich muss die Verknüpfungsschaltung 244 Arbitrierung für den einzelnen IOC-Bus bearbeiten. Wenn die E/A-Brücke 238A die Antwortdaten bereitstellt, setzt sie sie auf den E/A-Antwortbus (IOR – I/O Response). Dann empfängt die Verknüpfungsschaltung 244 diese Daten, formatiert sie zweckentsprechend und sendet die Daten zurück zum anfordernden Kern über den FÜLL-Bus CMB 235A–D. Dadurch wird Zugang zu den Vorrichtungen über die IOB 238A–D für die Prozessorkerne 220A–D bereitgestellt.
  • Zum Aufrechterhalten von Speicherteilsystemkohärenz müssen durch Speicheranforderungen erzeugte Annullierungen und Ausführungen hinsichtlich der vielfachen Busstruktur in Betracht gezogen werden. Wenn ein Prozessorkern 220A–D oder eine E/A-Vorrichtung (über die E/A-Brücke 238A–B) eine Speicheroperation anfordert, empfängt sie eine Ausführung von der L2C der jeweiligen Cache-Bank 230A–D zum Benachrichtigen derselben, dass andere Kern- oder E/A-Vorrichtungen nunmehr in der Lage sein werden, die Daten aus diesem Speicher zu sehen. Durch Warten auf alle verbleibenden Ausführungen für ihre eigenen Speicher kann eine Quelle bestimmen, dass ihr früherer Speicher vor einem nachfolgenden Speicher sichtbar sein wird. Dies bietet einen Mechanismus zum Benachrichtigen anderer Kerne oder Vorrichtungen, dass sie fortschreiten können.
  • Da Kerne sich an anderen Bussen als der Kern/die Vorrichtung befinden können, der/die einen Speicher erzeugte, besteht ein bedeutsames Ordnungsverhältnis zwischen der Ausführung und ihrer zugehörigen L1-Annullierungen. Wenn der benachrichtigte Kern das Signal empfängt, ehe er die Annullierung empfängt, könnte er alte Daten sehen und damit Kohärenzverlust im Speichersystem verursachen. Dieser Verlust an Kohärenz kann durch den L2C der Cache-Bank 230A–D verhindert werden, indem er die Ausführung so lange nicht überträgt, bis zuerst bestätigt wird, dass die Annullierungen für alle Busse über alle Busse 225A–D zu den Prozessorkernen 220A–D gesendet worden sind. In einigen Ausführungsformen kann die Schaltung dazu eingerichtet sein, zu garantieren, dass die Annullierungen den L1 in weniger Zeit erreichen, als die Zeit, die dazu erforderlich ist, dass die Ausführung die Speicherquelle erreicht und das nachfolgende Signal den die Annullierung empfangenden Kern erreicht. Als Ergebnis wird Speicherkohärenz aufrechterhalten.
  • 3 ist ein Blockschaltbild, dass das Verarbeiten von Anforderungen an die Cache-Bank in einer Ausführungsform darstellt. Wie oben unter Bezugnahme auf 2 beschrieben, umfassen die kernseiten CMB 225A–D und die Cache-seitigen CMB 235A–D beide ADDIER-Busse, die Adress- und Steuerinformationen führen, die Speichertransaktionen einleiten. Die Quelle der Transaktionen können die Prozessorkerne 220A–B und die IOB 238A–B sein. Die CMI-Verknüpfungsschaltung 244 ermöglicht Verarbeiten und Weiterleiten von Adressen von den kernseitigen CMB 225A–D zu dem Cache-seitigen CMB 235A–D wie in 3 dargestellt. Unter Bezugnahme auf 2 wird hier die Adresse der Anforderungen an den jeweiligen ADDIER-Bussen (ADDIEREN0–ADDIEREN3) der CMB 225A–D zu einem beliebigen der FIFO-Puffer der Cache-Bänke 230A–D empfangen (auch als ”TAD” bezeichnet (TAD0–TAD1)). Jeder der vier ADDIER-Busse kann eine Transaktion zu jeder Cache-Bank 230A–D leiten. Mit der Adresse der Anforderung wird die Cache-Bank 230A–D ausgewählt, die die Transaktion verarbeitet, ungeachtet dessen, von welchem ADDIER-Bus die Transaktion eingeleitet wurde. Die physikalische Adresse jeder Anforderung kann unter Verwendung einer exklusiven ODER(XOR)-Funktion, eingerichtet zum Erzeugen einer annähernd zufallsmäßigen Verteilung von Cache-Blöcken über die vier Cache-Bänke 230A–D (TAD0–TAD3) für alle gemeinsamen Adressstreifen, Hash-codiert sein. Damit wird die räumliche Örtlichkeit der CMB-Anforderungen in eine annähernd zufallsmäßige Verteilung über die vier Cache-Bänke 230A–D (TAD0–TAD3) umgewandelt, was eine bessere Ausnutzung der vier Kennzeichen-Suchläufe pro Zyklus ermöglicht.
  • Eine auf einem ADDIER-Bus ankommende Transaktion tritt zuerst in einen der FIFO für die Ziel-Cache-Bank ein. Jeder FIFO kann bis zu vier ADDIER-Bustransaktionen je Zyklus Puffern. Ein Algorithmus bestimmt die Reihenfolge, in der Adressen weiterverarbeitet werden.
  • Ein Zeitplaner in der CMI-Verknüpfungsschaltung 244 kann bestimmen, welche Transaktionen aus den FIFO austreten können. Es bewerben sich bis zu vier Transaktionen (eine aus jedem der vier TAD möglich) für jeden Zyklus für L1D-Kennzeichenwege in der Schaltung 244. Die L1D-Kennzeichenwege (gezeigt als Wege 0–7) besitzen Kopien der L1-Daten-Cache-Kennzeichen (d. h. sie sind Duplikatkennzeichen, oder DUT). Die L1D-Kennzeichenwege bestimmen, ob die Transaktion eine Kopie des Blocks in einem L1-Daten-Cache annulliert. Wenn ja, dann wird die Verknüpfungsschaltung 244 schließlich einen Befehl L1D Cache Annullieren auf den AUSFÜHRUNGS- und FÜLL-Bussen für die Transaktion senden.
  • Bei Empfang einer Anforderung kann die Verknüpfungsschaltung 244 die Adresse der Anforderung (oder Teil der Adresse wie beispielsweise Adressbit <9:7>) auswerten, um auszuwählen, welcher L1D-Kennzeichenweg für jede Transaktion benutzt wird. Wenn sich jede der bis zu vier gebotenen Transaktionen alle in Adressbit <9:7> unterscheiden, dann werden alle Transaktionen während des Zyklus durch die Kreuzschiene geplant. Die Ausführung spaltet das DUT in DUT0-3, was L1D-Kennzeichenwege 0–3 umfasst, und DUT4-7, was L1D-Kennzeichenwege 4–7 umfasst.
  • Wenn die Verknüpfungsschaltung 244 eine Transaktion von einer Cache-Bank FIFO plant, tritt die Transaktion gleichzeitig in einen L1D-Kennzeichenweg sowie den L2-Kennzeichenweg in der Verknüpfungsschaltung 244 (über den ADDIER-Bus) und der Cache-Bank ein. Der Zustand des DUT wird aktualisiert, um dem Zustand der L1-Kennzeichen zu entsprechen. Der fliegende Cache-Bank-Puffer vollendet schließlich die Transaktion unter Verwendung von Ergebnissen aus diesen Kennzeichenwegen. (Nicht gezeigte) Überbrückungen können jegliche zusätzliche FIFO-Latenzzeit vermeiden, wenn es keinen Wettbewerb für DUT und Cache-Bank-Ressourcen gibt.
  • Jede Anforderung kann einen Suchlauf durch die L2-Kennzeichen der Cache-Bank wie auch des Zustands aller L1-Kennzeichen der Prozessorkerne erfordern. Dieser Zustand wird als DUT bewahrt, da er eine Kopie der L1-Kennzeichen in der L2 ist. Da die Adressen-Hashcodierungsfunktion, die die Anforderungen gleichmäßig über die Cache-Bänke verteilt, für die L1 nicht benutzt werden kann, da für die Hash-Funktion erforderliche Bit nicht rechtzeitig verfügbar sein könnten, kann zum Bereitstellen von genügend Bandbreite zum Durchführen von vier Suchläufen pro Zyklus im DUT das DUT in acht getrennte Sätze (”Kanäle”) aufgespaltet werden, wobei jede Adresse auf einem Kanal abgebildet wird. Da nur vier Adressen pro Zyklus ausgewählt werden und es 8 DUT-Kanäle gibt, ist es wahrscheinlich, dass mehr als eine Anforderung (bis zu maximal 4) basierend auf der normalen Adressenverteilung ausgewählt wird.
  • 4 ist ein Blockschaltbild, das in Anforderungen zu den Cache-Bänken implementierte Puffer darstellt. Wie oben unter Bezugnahme auf 2 beschrieben, umfassen die Cache-seitigen CMB 235A–D SPEICHER-Busse, die zu speichernde Daten während Speichertransaktionen zu den Cache-Bänken 230A–D führen. Eine Anforderung zum Speichern oder Abrufen von Daten wird aus einem Kern einer Gruppe von Prozessorkernen 220A–D durch einen jeweiligen Bus 225A–D und die CMI 244 zu einer Cache-Bank 230A–D übertragen, die die Anforderung bedienen wird. Zum Bedienen mehrerer Anforderungen aus den mehreren Prozessorkernen empfangen vier 2 Lese-/2 Schreib-Anschlussdatenpuffer 422A–D Daten von den SPEICHER-Bussen (SPEICHER0–SPEICHER1). Jeder Puffer 422A–D kann Daten von zwei SPEICHER-Bussen CMB 225A–D empfangen und kann Daten zu zwei Cache-Bänken 230A–D senden. Dieser Aufbau erlaubt jedem SPEICHER-Bus CMB 225A–D, eine gegebene Menge (z. B. 128 Byte) Speicherdaten während jedes Zyklus bereitzustellen und erlaubt jeder Cache-Bank, die gleiche Menge (z. B. 128 Byte) von Speicherdaten pro Zyklus zu empfangen, unabhängig von der bestimmten CMB 225A–D oder Cache-Bank 230A–D, die die Daten bereitstellen oder empfangen muss.
  • 5 ist ein Blockschaltbild, das im Datenausgang von den Cache-Bänken implementierte Puffer darstellt. Wie oben unter Bezugnahme auf 2 beschrieben, wird durch eine Cache-Bank eine Antwort auf eine Anforderung bereitgestellt, die von der Cache-Bank zurück zu den (in 5 als TAD0 FÜLL ... TAD1 FÜLL dargestellten) FÜLL-Bussen CMB 235A–D zurückübertragen werden muss. Jede Cache-Bank 230A–D kann möglicherweise nur eine CMB-Anforderung zu einer Zeit bedienen und jede Anforderung erfordert bis zu vier Zyklen. Um die FÜLL-Busse CMB 235A–D voll ausgenutzt zu halten, können FÜLL-Puffer 532A–D zum Entkoppeln des Leseanschlusses der Cache-Bank 230A–D von dem FÜLL-Bus CMB 235A–D implementiert sein. Die FÜLL-Puffer 532A–D können überbrückbare 3-Schreibanschlusspuffer sein, die in der Verknüpfungsschaltung 244 zum Vorabrufen von für den FÜLL-Bus CMB 235A–D bestimmten Daten implementiert sein können. Dies ermöglicht bis zu 3 Cache-Bänken, Antwortdaten auszulesen und sie zum Senden zum gleichen Bus einzureichen. Die Puffer 532A–D ermöglichen Koordinieren der FÜLL-Busse CMB 235A–D und der FÜLL-Anschlüsse der Cache-Bank 230A–D zum Maximieren der Ausnutzung jedes der FÜLL-Busse CMB 235A–D.
  • 6 ist ein Blockschaltbild der in jeder der oben unter Bezugnahme auf 2 beschriebenen Cache-Bänke 230A–D vorhandenen L2C-Steuerschaltungen. Die Cache-Bank enthält sowohl die Cache-Kennzeichen und Daten für ihren Anteil des L2-Cache. Vier Vierer enthalten die Daten. Jeder Vierer besitzt 256 kB des L2-Cache. Eine Cache-Bank enthält auch Adress- und Datenpuffer. Die Adresspuffer umfassen den Flugadressenpuffer (LFB), der alle empfangenen L2-Lese- und Schreiboperationen verfolgt, und den betroffenen Adresspuffer (VAB – Victim Adress Buffer), der alle Blöcke verfolgt, die (über den LMC) zum DRAM geschrieben werden. L2C bewahrt und verarbeitet bis zu 16 gleichzeitige L2/DRAM-Transaktionen in ihrem LFB und verwaltet auch bis zu 16 fliegende L2-Cache-Operationen für betroffene/Durchschreibeoperationen im VAB/VBF.
  • Die Datenpuffer umfassen Füllpuffer (FBF), die immer dann benutzt werden, wenn Daten aus dem L2-Cache oder DRAM ausgelesen werden, Speicherpuffer (SBF), die für alle SPEICHER-Transaktionen benutzt werden und Datenpuffer für betroffene (VDB – Victim Data Buffers), die zum Schreiben von Daten zum DRAM benutzt werden. Für L2/DRAM-Fülltransaktionen sendet L2C Daten entweder aus dem L2-Cache oder Speicher über einen mit dem LFB-Eingang verbundenen FBF-Eingang zurück. Für L2/DRAM-Speichertransaktionen hinterlegt L2C zuerst SPEICHER-Busdaten in den mit dem LFB-Eintrag verbundenen SFB-Eintrag, aktualisiert dann entweder den Cache oder schreibt eine volle Cache-Blockspeicherung direkt zum DRAM. Außer Speicheroperationen für alle Byte in einem Cache-Block erfordern alle L2/DRAM-Transaktionen, die im L2-Cache-fehlen, eine DRAM-Fülloperation. Teilweise Cache-Blockspeicheroperationen benötigen die DRAM-Fülloperationen zum Erhalten der Byte, die nicht gespeichert sind. L2C gibt DRAM-Fülldaten in den FBF ein, schreibt sie dann in den L2-Cache, sofern notwendig, und leitet sie dann auf den FÜLL-Bus weiter, sofern notwendig.
  • Während die vorliegende Erfindung insbesondere unter Bezugnahme auf beispielhafte Ausführungsformen derselben gezeigt und beschrieben worden ist, wird der Fachmann verstehen, dass verschiedene Änderungen an Form und Einzelheiten daran durchgeführt werden können, ohne von dem durch die beiliegenden Ansprüche umfassten Schutzbereich der Erfindung abzuweichen.

Claims (9)

  1. Computersystem auf einem Computerchip, umfassend: eine Verknüpfungsschaltung; eine Vielzahl von Speicherbussen, wobei jeder Bus eine jeweilige Gruppe von mehreren Prozessorkernen mit der Verknüpfungsschaltung verbindet; und einen in eine Vielzahl von Bänken aufgeteilten Cache, wobei jede Bank über einen Einzelbus mit der Verknüpfungsschaltung verbunden ist; die Verknüpfungsschaltung, eingerichtet zum Verteilen einer Vielzahl von den mehreren Prozessorkernen unter der Vielzahl von Bänken empfangenen Anforderungen.
  2. System nach Anspruch 1, wobei die Verknüpfungsschaltung die Anforderungen durch Abändern einer Adresskomponente der Anforderungen umformt.
  3. System nach Anspruch 2, wobei die Verknüpfungsschaltung eine Hash-Funktion an jeder der Anforderungen durchführt, wobei die Hash-Funktion eine Pseudozufallsverteilung der Anforderungen unter der Vielzahl von Bänken bereitstellt.
  4. System nach Anspruch 1, wobei die Verknüpfungsschaltung zum Unterhalten von einen Zustand eines an einen der mehreren Prozessorkerne angekoppelten L1-Cache anzeigenden Kennzeichen eingerichtet ist und wobei die Verknüpfungsschaltung weiterhin zum Leiten von Kennzeichen in der Vielzahl von Anforderungen zu einer Vielzahl von Kanälen eingerichtet ist, womit die jeweiligen Kennzeichen gleichzeitig verarbeitet werden.
  5. System nach Anspruch 1, wobei die Verknüpfungsschaltung weiterhin eine Vielzahl von Datenausgangspuffern umfasst, wobei jeder der Datenausgangspuffer zum Empfangen von Daten von jeder der Vielzahl von Bänken und Ausgeben von Daten durch einen jeweiligen der Vielzahl von Speicherbussen eingerichtet ist.
  6. System nach Anspruch 1, wobei die Verknüpfungsschaltung weiterhin eine Vielzahl von Anforderungspuffern umfasst, wobei jeder der Anforderungspuffer zum Empfangen von Anforderungen von jeder Gruppe mehrerer Prozessoren und Ausgeben der Anforderung an eine jeweilige der Vielzahl von Bänken eingerichtet ist.
  7. System nach Anspruch 1, weiterhin umfassend wenigstens eine an wenigstens einen der Speicherbusse angekoppelte Brückenschaltung, wobei die wenigstens eine Brückenschaltung die mehreren Prozessorkerne mit wenigstens einem chipinternen Coprozessor verbindet.
  8. System nach Anspruch 1, wobei die Bänke zum Verzögern des Übertragens eines Ausführungssignals zu den mehreren Prozessorkernen eingerichtet sind, wobei die Bänke das Ausführungssignal als Reaktion auf den Empfang einer Anzeige übertragen, dass Annullierungssignale zu der Gesamtheit der mehreren Prozessorkerne übertragen worden sind.
  9. System nach Anspruch 1, wobei die Verknüpfungsschaltung und die Vielzahl von Speicherbussen dazu eingerichtet sind, Annullierungen dahingehend zu steuern, dass sie einen L1-Cache in weniger Zeit erreichen, als eine Zeit, die dafür erforderlich ist, dass eine Ausführung eine der Vielzahl von Bänken erreicht und ein nachfolgendes Signal einen der die Annullierung empfangenden mehreren Prozessorkerne erreicht.
DE112012004551.3T 2011-10-31 2012-10-29 Mehrkernverknüpfung in einem Netzprozessor Granted DE112012004551T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/285,629 US9330002B2 (en) 2011-10-31 2011-10-31 Multi-core interconnect in a network processor
USUS-13/285,629 2011-10-31
PCT/US2012/062378 WO2013066798A1 (en) 2011-10-31 2012-10-29 Multi-core interconnect in a network processor

Publications (1)

Publication Number Publication Date
DE112012004551T5 true DE112012004551T5 (de) 2014-08-14

Family

ID=47144154

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004551.3T Granted DE112012004551T5 (de) 2011-10-31 2012-10-29 Mehrkernverknüpfung in einem Netzprozessor

Country Status (6)

Country Link
US (1) US9330002B2 (de)
JP (2) JP2014534529A (de)
KR (2) KR20140084155A (de)
CN (1) CN103959261B (de)
DE (1) DE112012004551T5 (de)
WO (1) WO2013066798A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892063B2 (en) * 2012-11-27 2018-02-13 Advanced Micro Devices, Inc. Contention blocking buffer
US9652396B2 (en) 2013-12-27 2017-05-16 Samsung Electronics Co., Ltd. Cache element processing for energy use reduction
US9811467B2 (en) * 2014-02-03 2017-11-07 Cavium, Inc. Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
US9432288B2 (en) 2014-02-28 2016-08-30 Cavium, Inc. System on chip link layer protocol
US10592459B2 (en) * 2014-03-07 2020-03-17 Cavium, Llc Method and system for ordering I/O access in a multi-node environment
US9529532B2 (en) 2014-03-07 2016-12-27 Cavium, Inc. Method and apparatus for memory allocation in a multi-node system
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US9372800B2 (en) 2014-03-07 2016-06-21 Cavium, Inc. Inter-chip interconnect protocol for a multi-chip system
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
US10235203B1 (en) * 2014-03-31 2019-03-19 EMC IP Holding Company LLC Techniques for increasing storage system performance in processor-bound workloads with large working sets and poor spatial locality
US10740236B2 (en) * 2017-05-12 2020-08-11 Samsung Electronics Co., Ltd Non-uniform bus (NUB) interconnect protocol for tiled last level caches
US10592452B1 (en) 2018-09-12 2020-03-17 Cavium, Llc Low latency interconnect protocol for coherent multi-chip communication

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58220287A (ja) * 1982-06-15 1983-12-21 Nec Corp メモリアクセス制御装置
US4977498A (en) * 1988-04-01 1990-12-11 Digital Equipment Corporation Data processing system having a data memory interlock coherency scheme
JP4240610B2 (ja) * 1998-11-27 2009-03-18 株式会社日立製作所 計算機システム
JP2002149353A (ja) * 2000-11-08 2002-05-24 Nec Corp ディスクアレイ制御装置及びディスクアレイ制御方法
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US7133950B2 (en) 2003-08-19 2006-11-07 Sun Microsystems, Inc. Request arbitration in multi-core processor
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7477641B2 (en) * 2004-12-30 2009-01-13 Intel Corporation Providing access to data shared by packet processing threads
US7661006B2 (en) * 2007-01-09 2010-02-09 International Business Machines Corporation Method and apparatus for self-healing symmetric multi-processor system interconnects
US7793038B2 (en) * 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US20090274157A1 (en) * 2008-05-01 2009-11-05 Vaidya Aniruddha S Method and apparatus for hierarchical routing in multiprocessor mesh-based systems
US8131944B2 (en) * 2008-05-30 2012-03-06 Intel Corporation Using criticality information to route cache coherency communications
US8195883B2 (en) * 2010-01-27 2012-06-05 Oracle America, Inc. Resource sharing to reduce implementation costs in a multicore processor

Also Published As

Publication number Publication date
JP2014534529A (ja) 2014-12-18
US9330002B2 (en) 2016-05-03
KR102409024B1 (ko) 2022-06-14
CN103959261A (zh) 2014-07-30
JP6676027B2 (ja) 2020-04-08
WO2013066798A1 (en) 2013-05-10
US20130111141A1 (en) 2013-05-02
CN103959261B (zh) 2019-06-21
KR20140084155A (ko) 2014-07-04
KR20190137948A (ko) 2019-12-11
JP2018045700A (ja) 2018-03-22

Similar Documents

Publication Publication Date Title
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE69838387T2 (de) Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE60215417T2 (de) Netzwerkschaltung
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE102017125481A1 (de) Verfolgung verteilter hardware
DE60003834T2 (de) Vituelle kanäle und entsprechende pufferzuweisungen für einen blockierungfreien rechnersystem -betrieb
DE112010004187T5 (de) Verfahren und System zum Verarbeiten von Netzwerkereignissen
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE112012004926T5 (de) Gemeinsame Speichernutzung durch Prozessoren
DE112013001211B4 (de) Multithread-Paketverarbeitung
DE102021102746A1 (de) Lese/schreib-seitenreplikation für mehrere recheneinheiten
DE102006009034B3 (de) Verfahren zum Betreiben eines Bussystems sowie Halbleiter-Bauelement, insbesondere Mikroprozessor- bzw. Mikrocontroller
DE102020210335A1 (de) System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit
DE112020000907T5 (de) Ungültigkeitserklärung eines adressübersetzungs-cache in einem mikroprozessor
DE102016206109A1 (de) Speicherdirektzugriffssteuereinrichtung für mindestens eine einen Arbeitsspeicher aufweisende Recheneinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: MARVELL ASIA PTE, LTD., SG

Free format text: FORMER OWNER: CAVIUM, INC., SAN JOSE, CALIF., US

Owner name: CAVIUM, LLC (N.D.GES.D.STAATES DELAWARE), SAN , US

Free format text: FORMER OWNER: CAVIUM, INC., SAN JOSE, CALIF., US

R082 Change of representative

Representative=s name: WAGNER & GEYER PARTNERSCHAFT MBB PATENT- UND R, DE

R081 Change of applicant/patentee

Owner name: MARVELL ASIA PTE, LTD., SG

Free format text: FORMER OWNER: CAVIUM, LLC (N.D.GES.D.STAATES DELAWARE), SAN JOSE, CALIF., US

R082 Change of representative

Representative=s name: WAGNER & GEYER PARTNERSCHAFT MBB PATENT- UND R, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

R018 Grant decision by examination section/examining division