DE112012004551T5 - Mehrkernverknüpfung in einem Netzprozessor - Google Patents
Mehrkernverknüpfung in einem Netzprozessor Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 65
- 230000004044 response Effects 0.000 claims abstract description 14
- 239000000872 buffer Substances 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 19
- 238000000034 method Methods 0.000 abstract description 11
- 230000008569 process Effects 0.000 abstract description 10
- 238000004891 communication Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 12
- 230000001427 coherent effect Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101150016368 TAD1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling 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
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 Netzdiensteprozessor100 darstellt. Der Netzdiensteprozessor100 liefert hohe Anwendungsleistung mit wenigstens einem Prozessorkern120 . - 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-Schnittstelle124 empfangen werden. Die Schnittstelleneinheit122 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 Paketeinangseinheit126 weiter. Wenigstens eine Schnittstelleneinheit122a 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 Schnittstelleneinheit122b 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-Speicher130 Level-2 und externen DRAM108 . Die Paketeingangseinheit126 benutzt einen der Zeiger-Pools zum Speichern empfangener Paketdaten im Cache-Speicher130 Level-2 oder externen DRAM108 und einen anderen der Zeiger-Pools zum Zuteilen von Arbeitswarteschlangeneinträgen für die Prozessorkerne120 . - Dann schreibt die Paketeingangseinheit
126 Paketdaten in Puffer im Level-2-Cache130 oder externen DRAM108 ein. Vorzugweise werden die Paketdaten in einem für in wenigstens einem der Prozessorkerne120 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 Kerne120 von einem Teil der Verarbeitung und ermöglichen dadurch dem Netzdiensteprozessor, eine Paketverarbeitung mit hohem Durchsatz zu erzielen. Beispielsweise wird ein Kompressions-/Dekompressions-Coprozessor132 bereitgestellt, der der Durchführung von Komprimierung und Dekomprimierung empfangener Pakete zugeordnet ist. Andere Ausführungsformen von Coprozessoren umfassen die RAID/De-Dup-Einheit162 , 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-Einheit160 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-Einheit160 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-Schnittstelle136 umfasst eine E/A-Brücke138 und eine Bereitstellungseinheit140 . 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ücke138a 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ücke138b 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 Bereitstellungseinheit140 werden zum Unterhalten von Längen der Ausgangswarteschlangen benutzt, die zum Weiterleiten verarbeiteter Pakete durch eine Paketausgangseinheit146 benutzt werden. Die E/A-Brücke138 benutzt Pufferwarteschlangen zum Speichern von zwischen einer kohärenten Speicherverknüpfung (CMI – Coherent Memory Interconnect)144 , einem E/A-Bus142 , der Paketeingangseinheit126 und der Paketausgangseinheit146 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-Schnittstelle123 (JTAG = Joint Test Action Group) umfassen. Gemäß den JTAG- und MIPS EJTAG-Normen weist eine Vielzahl von Kernen in dem Netzdiensterbringer100 jeweils eine interne TAP-Steuerung auf (TAP = Test Access Port – Prüfzugangsanschluss). Dies erlaubt Mehrkern-Entstörungsunterstüzung für den Netzdiensterbringer100 . - Durch ein SSO-Modul
148 (SSO = Schedule/Sync and Order – Planungs-/Synch.- und Ordnungs-Modul) werden Arbeiten für die Prozessorkerne120 in Warteschlangen eingereiht und geplant. Arbeit wird durch Zufügen eines Arbeitswarteschlangeneintrags zu einer Warteschlange eingereiht. Zum Beispiel wird ein Arbeitswarteschlangeneintrag durch die Paketeingangseinheit126 für jede Paketankunft zugefügt. Zum Planen der Arbeit für die Prozessorkerne120 wird eine Zeitgebereinheit150 benutzt. - Prozessorkerne
120 fordern Arbeit von dem SSO-Modul148 an. Das SSO-Modul148 wählt (d. h. plant) Arbeit für einen der Prozessorkerne120 und sendet einen Zeiger zu dem die Arbeit beschreibenden Warteschlangeneintrag zurück zum Prozessorkern120 . - Der Prozessorkern
120 wiederum umfasst Anweisungs-Cache152 , Level-1-Datencache154 und Krypto-Hochlauf156 . In einer Ausführungsform umfasst der Netzdiensteprozessor100 32 superskalare RISC-artige Prozessorkerne120 (RISC = Reduced Instruction Set Computer – Computer mit verringertem Befehlswort). In einigen Ausführungsformen umfasst jeder der superskalaren RISC-artigen Prozessorkerne120 eine Erweiterung des Prozessorkerns MIPS64 Version3 . In einer Ausführungsform umfasst jeder der superskalaren RISC-artigen Prozessorkerne120 einen Prozessorkern cnMIPS II. - Der Level-2-Cache-Speicher
130 und externe DRAM108 werden durch alle der Prozessorkerne120 und E/A-Coprozessorvorrichtungen geteilt. Jeder Prozessorkern120 ist durch die CMI144 an den Level-2-Cache-Speicher130 angekoppelt. Die CMI144 ist ein Kommunikationskanal für alle Speicher- und E/A-Transaktionen zwischen den Prozessorkernen100 , der E/A-Schnittstelle136 und dem Level-2-Cache-Speicher130 und der Steuerung. In einer Ausführungsform ist die CMI144 auf 32 Prozessorkerne120 skalierbar und unterstützt vollkohärente Level-1-Daten-Caches154 mit Durchschreiben. Vorzugsweise ist die CMI144 stark gepuffert mit der Fähigkeit zum Priorisieren von E/A. Die CMI ist an eine Ablaufverfolgungssteuerungeinheit164 , 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-Speicher130 , im externen DRAN108 gespeichert ist oder sich „im Flug” befindet. Auch speichert sie eine Duplikat-Kopie der Kennzeichen für den Daten-Cache154 in jedem Prozessorkern120 . 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 Prozessorkern120 immer dann, wenn eine Speicheranweisung von einem anderen Prozessorkern oder von einer E/A-Komponente über die E/A-Schnittstelle136 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-Steuerung133 eine 64-Bit-Schnittstelle zum DRAM108 . Zusätzlich kann die DRAM-Steuerung133 bevorzugte Protokolle wie beispielsweise das DDR-III-Protokoll unterstützen. - Nachdem ein Paket durch die Prozessorkerne
120 verarbeitet worden ist, liest die Paketausgangseinheit146 die Paketdaten aus dem Level-2-Cache-Speicher130 ,108 aus, führt L4-Netzprotokoll-Nachverarbeitung durch (z. B. erzeugt eine TCP/UDP-Prüfsumme), leitet das Paket durch die Schnittstelleneinheiten122 oder die PCI-Schnittstelle124 weiter und gibt den durch das Paket benutzten L2-Cache-Speicher130 /DRAM108 frei. - Die DRAM-Steuerungen
133 verwalten fliegende Transaktionen (laden/speichern) zu/von dem DRAM108 . In einigen Ausführungsformen umfassen die DRAM-Steuerungen133 vier DRAM-Steuerungen, das DRAM108 umfasst vier DRAM-Speicher und jede DRAM-Steuerung ist mit einem DRAM-Speicher verbunden. Die DFA-Einheit160 ist auf einem Umgehungs-Cache-Zugangsweg135 direkt an die DRAM-Steuerungen133 angekoppelt. Der Umgehungs-Cachezugangsweg135 erlaubt der HFA-Einheit, direkt aus dem Speicher auszulesen, ohne den Level-2-Cache Speicher130 zu benutzen, was den Wirkungsgrad für HFA-Operationen verbessern kann. - Ausführungsformen der vorliegenden Erfindung können in dem in
1 gezeigten Netzdiensteprozessor100 implementiert sein und können insbesondere auf die Paketausgangseinheit (PKO)126 wie auch die Schnittstelleneinheiten122 gerichtet sein. Beispielhafte Ausführungsformen werden ausführlicher unten unter Bezugnahme auf2 –4 beschrieben. -
2 ist ein Blockschaltbild einer CMI-Schaltung244 (CMI – Coherent Memory Interconnect – kohärente Speicherverknüpfung) und zugehöriger Komponenten in einer Ausführungsform. Die CMI244 ist ein Kommunikationskanal und eine Steuerschaltung zum Leiten von Speicher- und E/A-Transaktionen zwischen Gruppen von Prozessorkernen220A –D, E/A-Brücken238A –B und Level-2-Cache-Speicherbänken230A –D. Die CMI244 kann als CMI144 im Netzprozessor100 implementiert sein, wobei die Prozessorkerne220A –D als die Prozessorkerne120 implementiert sind, E/A-Brücken238A –B als die E/A-Brücken138A –B implementiert sind und die Level-2-Cache-Speicherbänke230A –D als Level-2-Cache130 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 CMB225A –D umfasst einzelne Busse ADD/STORE/COMMIT/FILL. Die gesamte Gruppierung von vier CMB225A –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 CMB235A –D einzelne ADD/STORE/COMMIT/FILL und verwenden die Cache-Bänke230A –D mit der CMI244 . - Die CMB
225A –D können jeweils eine jeweilige Gruppe von Prozessorkernen220A –D unterstützen. In diesen beispielhaften Ausführungsformen umfasst jede Gruppe von Prozessorkernen220A –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 Busse225A –B eine E/A-Brücke (IOB – IO Bridge)238A –B angeschlossen. Die IOB0238A kann zum Bereitstellen von Zugang zu den NCB-seitigen E/A-Vorrichtungen für die Prozessorkerne220A –D über einen dedizierten E/A-Befehl (IOC – I/O Command) und E/A-Antwortbusse (IOR – IO Response) verwendet werden. IOB0238A und IOB1238B können beide Zugang zum L2-Cache und Speicher-Teilsystem durch Teilen der CMB-Busse225A –B jeweils mit den Prozessorkernen220A –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 CMB225A –D und den Cache-Bänken230A –D steuert und dabei das geteilte Speicherkohärenzmodell des Systems unterhält. Die L2C wird ausführlicher unten unter Bezugnahme auf6 beschrieben. - Durch Aufteilen der Prozessorkerne
220A –D und E/A-Brücken238A –B in vier Gruppen, jeweils versorgt durch eine einzelne CMB225A –D, kann eine niedrigere Latenzarbitrierungslogik benutzt werden. Örtliche Arbitrierungsentscheidungen werden zwischen nur den Prozessorkernen einer Gruppe220A –D (und einer E/A-Brücke238A –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 CMB225A –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änke230A –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 auf3 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üpfungsschaltung244 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 auf3 beschrieben. - Eine Anforderung zum Speichern oder Abrufen von Daten wird von einem Kern einer Gruppe von Prozessorkernen
220A –D durch einen jeweiligen Bus225A –D und die CMI244 zu einer Cache-Bank230A –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ücke238A –B oder einem Prozessorkern220A –D) von dem Vorgang des Einschreibens in den Speicherpuffer der Cache-Bank230A –D entkoppelt werden. Dies kann mit vier 2 lese-/2-schreibanschluss kundenspezifischen Datenpuffern erreicht werden. Jeder Puffer kann Daten von zwei Bussen CMB225A –D empfangen und sendet Daten zu zwei Cache-Bänken230A –D. Diese Einrichtung erlaubt jedem SPEICHER-Bus CMB225A –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 CMB225A –D oder Cache-Bank230A –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-Bankpuffer230A –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 auf4 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-Bank230A –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 CMB235A –D voll ausgenutzt zu halten, kann der FÜLL-Puffer-Leseanschluss der Cache-Bank230A –D vom FÜLL-Bus CMB235A –D entkoppelt sein und es kann in der Verknüpfungsschaltung244 ein überbrückbarer Puffer für 3 Schreibanschlüsse implementiert sein, um für den FÜLL-Bus CMB235A –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 CMB235A –D und der FÜLL-Anschlüsse der Cache-Bank230A –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 auf5 beschrieben. - Zusätzlich zu den Cache-Bänken
230A –D erfordern die Prozessorkerne220A –D Zugang zu den Vorrichtungen auf der anderen Seite der IOB238A –B (z. B. Schnittstelleneinheiten122a –b und anderen Vorrichtungen am E/A-Bus142 des Netzprozessors100 in1 ). Dieser Zugang wird über einen dedizierten IOC-Bus (I/O Command – E/A-Befehl) zum IOB0238A bereitgestellt. Die ADDIER/SPEICHER-Busse CMB235A stellen die Anforderungen von den Prozessorkernen220A –D bereit und die Verknüpfungsschaltung244 kann diese Anforderungen in die für den IOC-Bus benötigte Form umsetzen. Zusätzlich muss die Verknüpfungsschaltung244 Arbitrierung für den einzelnen IOC-Bus bearbeiten. Wenn die E/A-Brücke238A die Antwortdaten bereitstellt, setzt sie sie auf den E/A-Antwortbus (IOR – I/O Response). Dann empfängt die Verknüpfungsschaltung244 diese Daten, formatiert sie zweckentsprechend und sendet die Daten zurück zum anfordernden Kern über den FÜLL-Bus CMB235A –D. Dadurch wird Zugang zu den Vorrichtungen über die IOB238A –D für die Prozessorkerne220A –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ücke238A –B) eine Speicheroperation anfordert, empfängt sie eine Ausführung von der L2C der jeweiligen Cache-Bank230A –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 Busse225A –D zu den Prozessorkernen220A –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 auf2 beschrieben, umfassen die kernseiten CMB225A –D und die Cache-seitigen CMB235A –D beide ADDIER-Busse, die Adress- und Steuerinformationen führen, die Speichertransaktionen einleiten. Die Quelle der Transaktionen können die Prozessorkerne220A –B und die IOB238A –B sein. Die CMI-Verknüpfungsschaltung244 ermöglicht Verarbeiten und Weiterleiten von Adressen von den kernseitigen CMB225A –D zu dem Cache-seitigen CMB235A –D wie in3 dargestellt. Unter Bezugnahme auf2 wird hier die Adresse der Anforderungen an den jeweiligen ADDIER-Bussen (ADDIEREN0–ADDIEREN3) der CMB225A –D zu einem beliebigen der FIFO-Puffer der Cache-Bänke230A –D empfangen (auch als ”TAD” bezeichnet (TAD0–TAD1)). Jeder der vier ADDIER-Busse kann eine Transaktion zu jeder Cache-Bank230A –D leiten. Mit der Adresse der Anforderung wird die Cache-Bank230A –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änke230A –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änke230A –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 Schaltung244 . 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üpfungsschaltung244 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üpfungsschaltung244 (ü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 auf2 beschrieben, umfassen die Cache-seitigen CMB235A –D SPEICHER-Busse, die zu speichernde Daten während Speichertransaktionen zu den Cache-Bänken230A –D führen. Eine Anforderung zum Speichern oder Abrufen von Daten wird aus einem Kern einer Gruppe von Prozessorkernen220A –D durch einen jeweiligen Bus225A –D und die CMI244 zu einer Cache-Bank230A –D übertragen, die die Anforderung bedienen wird. Zum Bedienen mehrerer Anforderungen aus den mehreren Prozessorkernen empfangen vier 2 Lese-/2 Schreib-Anschlussdatenpuffer422A –D Daten von den SPEICHER-Bussen (SPEICHER0–SPEICHER1). Jeder Puffer422A –D kann Daten von zwei SPEICHER-Bussen CMB225A –D empfangen und kann Daten zu zwei Cache-Bänken230A –D senden. Dieser Aufbau erlaubt jedem SPEICHER-Bus CMB225A –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 CMB225A –D oder Cache-Bank230A –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 auf2 beschrieben, wird durch eine Cache-Bank eine Antwort auf eine Anforderung bereitgestellt, die von der Cache-Bank zurück zu den (in5 als TAD0 FÜLL ... TAD1 FÜLL dargestellten) FÜLL-Bussen CMB235A –D zurückübertragen werden muss. Jede Cache-Bank230A –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 CMB235A –D voll ausgenutzt zu halten, können FÜLL-Puffer532A –D zum Entkoppeln des Leseanschlusses der Cache-Bank230A –D von dem FÜLL-Bus CMB235A –D implementiert sein. Die FÜLL-Puffer532A –D können überbrückbare 3-Schreibanschlusspuffer sein, die in der Verknüpfungsschaltung244 zum Vorabrufen von für den FÜLL-Bus CMB235A –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 Puffer532A –D ermöglichen Koordinieren der FÜLL-Busse CMB235A –D und der FÜLL-Anschlüsse der Cache-Bank230A –D zum Maximieren der Ausnutzung jedes der FÜLL-Busse CMB235A –D. -
6 ist ein Blockschaltbild der in jeder der oben unter Bezugnahme auf2 beschriebenen Cache-Bänke230A –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)
- 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.
- System nach Anspruch 1, wobei die Verknüpfungsschaltung die Anforderungen durch Abändern einer Adresskomponente der Anforderungen umformt.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
2011
- 2011-10-31 US US13/285,629 patent/US9330002B2/en active Active
-
2012
- 2012-10-29 KR KR1020147012490A patent/KR20140084155A/ko active Application Filing
- 2012-10-29 JP JP2014539104A patent/JP2014534529A/ja active Pending
- 2012-10-29 WO PCT/US2012/062378 patent/WO2013066798A1/en active Application Filing
- 2012-10-29 CN CN201280059239.5A patent/CN103959261B/zh active Active
- 2012-10-29 DE DE112012004551.3T patent/DE112012004551T5/de active Granted
- 2012-10-29 KR KR1020197035633A patent/KR102409024B1/ko active IP Right Grant
-
2017
- 2017-11-06 JP JP2017213851A patent/JP6676027B2/ja active Active
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 |