DE112006002565T5 - Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher - Google Patents

Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher Download PDF

Info

Publication number
DE112006002565T5
DE112006002565T5 DE112006002565T DE112006002565T DE112006002565T5 DE 112006002565 T5 DE112006002565 T5 DE 112006002565T5 DE 112006002565 T DE112006002565 T DE 112006002565T DE 112006002565 T DE112006002565 T DE 112006002565T DE 112006002565 T5 DE112006002565 T5 DE 112006002565T5
Authority
DE
Germany
Prior art keywords
cache
memory
packet data
data
temporary
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.)
Ceased
Application number
DE112006002565T
Other languages
English (en)
Inventor
Sridhar Sunnyvale Lakshmanamurthy
Mark Uxbridge Rosenbluth
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112006002565T5 publication Critical patent/DE112006002565T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Landscapes

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

Abstract

Verfahren, das aufweist
Empfangen eines Speicherzugriffbefehls;
Feststellen, ob der Befehl Angaben enthält, die identifizieren, daß eine Cache-Strategie für temporäre Daten verwendet werden soll; und falls dies der Fall ist,
Verwenden der Cache-Strategie für temporäre Daten; ansonsten
Verwenden einer Standard-Cache-Strategie.

Description

  • GEBIET DER ERFINDUNG
  • Das Gebiet der Erfindung betrifft im allgemeinen das Zwischenspeichern und genauer, jedoch nicht ausschließlich, betrifft sie Techniken für die Verwaltung von Caches, wobei Cache-Strategien verwendet werden, die durch Befehlsanweisungen identifiziert werden.
  • HINTERGRUNDINFORMATION
  • Eine der wichtigsten Betrachtungen für das Handhaben von Netzwerkverkehr ist der Durchsatz von Paketen (d. h. die Bandbreite). Netzwerkprozessoren und dergleichen werden so gestaltet, daß sie in effizienter Weise sehr große Anzahlen von Paketen pro Sekunde verarbeiten. Um ein Paket zu verarbeiten, muß der Netzwerkprozessor (und/oder die Schaltapparatur, die den Netzwerkprozessor verwendet) Daten aus dem Nachrichtenkopf des Paket herausziehen, die das Ziel des Paketes, die Diensteklasse usw. angeben, die Nutzbereichsdaten im Speicher speichern, verschiedene allgemeine Funktionen durchführen usw.
  • Im allgemeinen erfordern die vorstehenden Arbeitsgänge der Paketverarbeitung mehrere Speicherzugriffe. Als ein Ergebnis ist der Paketdurchsatz inhärent mit den Wartezeichen beim Speicher (Zugriff) verknüpft. Idealerweise bietet ein moderner statischer Speicher mit wahlfreiem Zugriff (SRAM – Static Random Access Memory) auf dem Chip (d. h auf dem Prozessor-Mikroplättchen) Zugangsgeschwindigkeiten von 10 Nanosekunden oder darunter. Jedoch ist dieser Typ eines Speichers sehr teuer (bezüglich Chipfläche und Chipausbeute), so daß die Menge an SRAM-Speicher auf dem Chip typischerweise sehr gering ist. Typische moderne Netzwerkprozessoren verwenden wenig SRAM auf dem Chip als Arbeitsspeicher und dergleichen.
  • Der nächstschnellste Typ eines Speichers ist ein SRAM außerhalb des Chip (d. h. extern liegend). Da dieser Speicher außerhalb des Chips liegt, ist er beim Zugriff langsamer (als ein Speicher auf dem Chip), da auf ihn über eine Schnittstelle zwischen dem Netzwerkprozessor und dem SRAM-Speicher zugegriffen werden muß, wobei die Schnittstelle ihre eigene Wartezeit einführt. Ein SRAM außerhalb des Chips wird im allgemeinen von modernen Netzwerkprozessoren zum Speichern und Verarbeiten von Paket-Metadaten verwendet, zusammen mit dem Speichern weiterer temporärer, verarbeitungsbezogener Information.
  • Typischerweise werden verschiedene Typen eines dynamischen RAM (DRAM) außerhalb des Chips für die Verwendung als "Massen"-Speicher verwendet. Ein dynamischer RAM ist langsamer als ein statischer RAM (aufgrund der physikalischen Unterschiede in der Gestaltung und Arbeitsweise von DRAM- und SRAM-Zellen) und muß immer nach einigen Taktzyklen aufgefrischt werden, was zusätzlichen Gemeinaufwand bedingt. Wie zuvor, da er sich außerhalb des Chips befindet, benötigt er auch eine Schnittstelle (z. b. einen besonderen oder gemeinsam genutzten Bus), damit auf ihn zugegriffen werden kann. Bei den meisten der heutigen Gestaltungen von Netzwerkprozessoren werden DRAM-Speicher mit verbesserter Leistungsfähigkeit genutzt, die einen RDRAM (Rambus DRAM) oder DDR DRAM (doppelte Datenrate), einen RLDRAM (RAM mit verringerter Wartezeit – Reduced Latency) usw. umfassen.
  • Im allgemeinen erzeugen Zugriffe auf einen DRAM-Speicher wesentliche Wartezeiten bei der Verarbeitung in bezug auf viele weitere Verarbeitungsaktivitäten, so wie mathematische Berechnung. Um dieses Problem anzusprechen, können verschiedene Zwischenspeicherschemata benutzt werden. Das grundlegende Konzept des Zwischenspeicherschemas ist es, jüngste Speicherzugriffe (oder andere Daten basierend auf einer zuvor definierten Cache-Strategie) in einer kleineren Speichereinheit zwischenzuspeichern, die einen schnelleren Zugriff hat als eine größere Speichereinheit, in der Daten üblicherweise gespeichert sind (temporäre Lokalität). Auch kann eine Cache-Strategie Daten zwischenspeichern, die physikalisch nahe an einer benötigten Cache-Zeile liegen, da die Daten in der nahen Zukunft oftmals benötigt werden (räumliche Lokalität).
  • Ein weiterer Aspekt des Zwischenspeicherns betrifft die Speicherkohärenz. Bei einer kohärenten Speicherarchitektur wird allen Komponenten in einem Rechensystem oder einer Vorrichtung der Zugriff auf dieselben Datenwerte zugesichert. Speicherkohärenz stellt sicher, daß Daten, die in den Speicher oder aus ihm heraus bewegt werden, nicht so erscheinen, daß sie unterschiedliche Werte haben, wenn auf sie von Prozessoren oder anderen Komponenten zugegriffen wird, die auf gemeinsam genutzte Speicherressourcen zugreifen. Beim einfachsten Ansatz gibt es nur eine Kopie von irgendwelchen bestimmten Daten zu irgendeinem Zeitpunkt in dem gesamten System, und nur eine Komponente kann jeweils auf die Daten zugreifen. Obwohl dieses Schema die Speicherkohärenz garantiert, erlaubt es kein Zwischenspeichern. Da das Zwischenspeichern das Erstellen wenigstens einer Kopie der Daten, die in dem gemeinsam genutzten Speicherraum gespeichert sind, umfaßt und dann erlaubt, daß die Kopie außerhalb des gemeinsam genutzten Speicherraums modifiziert wird, muß es einen Mechanismus geben, der sicherstellt, daß nur auf eine gültige (den jüngsten Wert) Version eines gegebenen Datenstückes zugegriffen werden kann. Dieses Problem wird typischerweise gelöst, indem eines aus mehreren gut bekannten Speicher- und Cache-Kohärenzschemata verwendet wird, die von einem Prozessor und/oder Speichercontroller verwaltet werden, beispielsweise indem ein Speicherrückschreibeschema verwendet wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die voranstehenden Aspekte und viele der begleitenden Vorteile dieser Erfindung werden leicht verstanden, wenn dieselben durch Bezugnahme auf die folgende genaue Beschreibung besser verständlich werden, wenn diese zusammen mit den beigefügten Zeichnungen betrachtet wird, in denen gleiche Bezugsziffern sich in den verschiedenen Ansichten auf gleiche Teile beziehen, wenn dies nicht anders angegeben ist:
  • 1 ist ein schematisches Schaubild einer beispielhaften Implementierungsumgebung, in der Aspekte der Ausführungsformen hierin in die Praxis umgesetzt werden können;
  • 2 ist ein Ablaufdiagramm, das Arbeitsgänge veranschaulicht, die während der Verarbeitung eines Paketes ausgeführt werden, die in einer Eingangsvorrichtung empfangen werden;
  • 3a ist ein Ablaufdiagramm, das Arbeitsgänge und Logik veranschaulicht, welche während eines Speicherschreibens gemäß einer Ausführungsform durchgeführt werden, bei der temporäre Daten in Teil-Cache-Zeilen geschrieben werden, ohne ein Speicherauslesen und Auffüllen des Restes der Cache-Zeile;
  • 3b ist ein Ablaufdiagramm, das eine Erweiterung des Prozesses der 3a veranschaulicht, der weiter die Verwendung eines Zustandes des weichen Sperrens von Cache-Zeilen umfaßt;
  • 4a ist ein Ablaufdiagramm, das Arbeitsgänge und Logik veranschaulicht, die während eines Speicherschreibens gemäß einer Ausführungsform ausgeführt werden, bei der Daten direkt aus dem Speicher gelesen werden, ohne in dem Fall eines Cachefehlers eine Cache-Zeile zuzuweisen;
  • 4b ist ein Ablaufdiagramm, das eine Erweiterung des Prozesses der 4a zeigt, die weiter die Verwendung des Zustands eines weichen Sperrens der Cache-Zeilen umfaßt;
  • 5 ist ein Ablaufdiagramm, welches Arbeitsgänge veranschaulicht, die von einem Programmierer durchgeführt werden, um Befehle zu erzeugen, die Anweisungen zum Bewirken einer temporären Datencache-Strategie enthalten;
  • 6 ist eine Pseudocode-Auflistung, die die Verwendung beispielhafter Pragma-Anweisungen veranschaulicht, um zu bewirken, daß ein Kompilierer geänderte Befehle austauscht, die Anweisungen zum Bewirken der temporären Datencache-Strategie enthalten;
  • 7 ist ein schematisches Schaubild, das eine Ausführungsform einer Cache-Architektur veranschaulicht, um eine Ausführungsform einer temporären Datencache-Strategie zu bewirken;
  • 8 ist ein schematisches Schaubild einer Netzwerkverarbeitungseinheit und einer Zeilenkarte, die weitere Einzelheiten der Implementierungsumgebung der 1 veranschaulicht.
  • GENAUE BESCHREIBUNG
  • Ausführungsformen von Verfahren und Vorrichtungen, die die befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher benutzen, werden hierin beschrieben. In der folgenden Beschreibung werden zahlreiche bestimmte Einzelheiten aufgeführt, um für ein gründliches Verständnis der Ausführungsformen der Erfindung zu sorgen. Ein Fachmann wird jedoch erkennen, daß die Erfindung ohne eines oder mehrere dieser bestimmten Einzelheiten oder mit anderen Verfahren, Komponenten, Materialien usw. in die Praxis umgesetzt werden kann. In anderen Fällen sind gut bekannte Strukturen, Materialien oder Arbeitsgänge weder gezeigt noch in Einzelheiten beschrieben, um das Verschleiern von Aspekten der Erfindung zu verhindern.
  • Der Bezug in dieser Beschreibung auf "eine Ausführungsform" bedeutet, daß ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit bezieht sich das Auftreten der Ausdrücke "bei einer Ausführungsform" an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf dieselbe Ausführungsform. Weiterhin können die besonderen Merkmale, Strukturen oder Eigenschaften in irgendeiner geeigneten Weise bei einer oder mehreren Ausführungsformen kombiniert werden.
  • Gemäß Aspekten der Ausführungsformen, die nun beschrieben werden, werden Techniken zum Unterstützen des effektiven Einsatzes von Cache und Speicher über eine befehlsunterstützte Cache-Verwaltung offenbart. Die Techniken verringern den Verbrauch an Speicherbandbreite (indem viele Speicherlese- und -schreibvorgänge beseitigt werden, die typischer weise im Zusammenhang mit herkömmlichen Cache-Strategien ausgeführt werden) und erhöhen den Wirkungsgrad des Cache. Weiterhin ermöglichen die Techniken die Steuerung des Cache-Einsatzes und der Zuweisung der Cache-Zeilen per Programm in einer Weise, die es Programmierern ermöglicht, das Verhalten beim Zwischenspeichern unter verschiedenen Einsatzszenarien maßzuschneidern.
  • Beispielhaft gezeigt ist eine beispielhafte Implementierungsumgebung 100, mit der Aspekte der befehlsunterstützten Techniken für die Cache-Verwaltung in die Praxis umgesetzt werden können. Die Umgebung 100 umfaßt eine Netzwerk-Prozessoreinheit (NPU) 102, die auf einer Eingangszeilenkarte 104 untergebracht ist. Aus Zwecken der Klarheit wird nur ein ausgewählter Teil der Komponenten und funktionalen Einheiten der NPU in 1 veranschaulicht; weitere Einzelheiten einer NPU-Zeilenkarten-Architektur sind in 8 gezeigt und werden hiernach diskutiert. Die veranschaulichten Komponenten umfassen eine SRAM-Schnittstelleneinheit 106, einen Prozessorcluster 108, der eine Vielzahl von Rechenmaschinen (z. B. Mikromaschinen (ME – Microengines) unter der NPU-Architektur Intel® IXP) 110, einen Cache-Controller 112, einen Cache 114, der mehrere Cache-Zeilen 115 umfaßt, eine DRAM-Schnittstelleneinheit 116 und eine Puffer-Verwaltungseinheit 118, die jeweilige Sätze von Empfangs (Rx)-Puffern 120 und Sende (Tx)-Puffern 122 enthält, umfaßt. Die SRAM-Schnittstelleneinheit 106 liefert den Zugriff auf einen externen (bezüglich der NPU 102) SRAM 124, der auf der Eingangszeilenkarte 104 untergebracht ist. In ähnlicher Weise liefert die DRAM-Schnittstelleneinheit 116 Zugriff auf einen externen DRAM 126, der mehrere Speicherblöcke 127 umfaßt.
  • Bei vielen modernen Architekturen von Netzwerkvorrichtungen (z. B. Router, Switch usw.) sind mehrere Karten (im allgemeinen als Zeilenkarten bezeichnet) in einem gemeinsamen Gestell integriert und zum Kommunizieren über eine gemeinsam genutzte Rückwandplatine oder Mittelplatine gekoppelt. Zum Beispiel können derartige Zeilenkarten in einer standardisierten modularen Architektur implementiert werden, so wie ATCA (Advanced Telecommunications Computing Architecture) oder in einer Blade-Serverumgebung, die standardisierte Blades verwendet. Als Option können eine proprietäre Kartenarchitektur und ein Chassis benutzt werde (z. B. Cisco, Nortel, 3Com, usw.). Derartige modulare Architekturen umfassen typischerweise Karten, die für spezielle Zwecke gestaltet sind, so wie Eingangszeilenkarten, Ausgangszeilenkarten, Framer und Switching Fabric (SF)-Karten. Die Eingangszeilenkarte 104 veranschaulicht eine Eingangszeilenkarte, die bei einer derartigen modularen Architektur verwendet werden kann. Jedoch soll angemerkt werden, daß die hierin für die Eingangszeilenkarte 104 beschriebenen Arbeitsgänge implementiert werden können, indem ebensogut weitere Architekturtypen verwendet werden, einschließlich, jedoch nicht beschränkt auf Karten, die eine Kombination aus Funktionen bereitstellen, beispielsweise sowohl Eingangs- als auch Ausgangsfunktionen.
  • Bei einem typischen Einsatz-Szenario wird eine Eingangszeilenkarte von einer Netzwerkvorrichtung oder dergleichen verwendet, um bei Netzwerkpaketen, die an der Netzwerkvorrichtung empfangen worden sind, eine einleitende Paketverarbeitung durchzuführen. Dies ist in der 1 durch Pakete A1, A2... veranschaulicht, die am Eingangs/Ausgangs(I/O – Input/Output)-Port der Eingangszeilenkarte 104 empfangen und zeitweilig in Rx-Puffern 120 gepuffert werden. Nach dem Abschluß derartiger einleitender paketverarbeitender Vorgänge können verschiedene Pakete an andere Zeilenkarten in der Netzwerkvorrichtung über das Switching Fabric für die weitere Verarbeitung gesendet und/oder zu einer weiteren Netzwerkvorrichtung in einem Netzwerk transportiert werden (d. h. Sendung nach außen), geschickt werden. Dies wird durch die Pakete A1 und A2 veranschaulicht, die von den Tx-Puffern 122 in das Switching Fabric überführt werden.
  • Typische Eingangs-Arbeitsgänge umfassen die Paket(Strom-)klassifizierung, bei der Pakete verschiedenen Strömen zugewiesen werden, die gemeinsame Attribute haben (z. B. Zieladresse, Kriterien der QoS, Sicherheitsmaßnahmen usw.), wobei ein vordefiniertes Paket-Klassifizierschema verwendet wird, wie es von einem Regelsatz einer Zugriffssteuerliste (ACL – Access Control List) oder dergleichen definiert wird. Viele Regelsätze für die Paketklassifizierung benutzen ein N-Tupel-Klassifizierschema, bei dem eine Regel der ACL mit höchster Priorität, die in N Feldern (oder in Teilfeldern in dem Fall von Adressenvorsilben) in dem Paketnachrichtenkopf übereinstimmt, als die Klassifizierregel verwendet wird. Somit braucht während solcher Paketklassifizierschemen nur auf die Daten des Nachrichtenkopfs des Pakets zugegriffen zu werden. In anderen Fällen kann eine tiefe Paketüberprüfung (z. B. das Überprüfen von Paketinhalten zusätzliche zu Nachrichtenköpfen) erforderlich sein, um die Klassifizierung einiger Pakete durchzuführen.
  • In weiteren Einzelheiten läuft ein typischer herkömmlicher Eingangs-Paketverarbeitungsprozeß wie folgt ab. Bei dem Empfang eines Pakets wird das Paket zeitweilig in einem Rx-Puffer gepuffert, ein Puffer in einem DRAM wird zugewiesen und das Paket wird aus dem Rx-Puffer in den DRAM-Puffer kopiert. Im Zusammenhang mit diesen Arbeitsgängen wird ein Warteschlangen-Beschreiber in eine Warteschlangen-Elementanordnung in einem SRAM geschrieben, wobei der Warteschlangen-Beschreiber den Ort des DRAM-Puffers identifiziert, der mit dem Paket verknüpft ist. Während der paketverarbeitenden Arbeitsgänge, so wie dem Klassifizieren, werden die Daten des Nachrichtenkopfes des Paketes aus dem DRAM-Puffer ausgelesen und in den SRAM-Arbeitsspeicher auf den Chip und/oder einen SRAM außerhalb des Chips (oder auf andere Weise über einen SRAM auf dem Chip zugegriffen) geschrieben. Die Paketklassifizierung kann dann durchgeführt werden, indem die N-Tupel-Werte des Nachrichtenkopfes des Pakets im Zusammenhang mit einem oder mehreren Nachschlagewerten in der Regeltabelle/Datenbank verwendet werden, die in dem SRAM und/oder dem DRAM gespeichert werden, so wie weitere Arbeitsgänge, die von der NPU ausgeführt werden (so wie das Erzeugen eines Prüfsummen(Hash)-Index für eine Nachschlagetabelle). Nach dem Beenden des Klassifizierens wird das Paket einem Strom zugewiesen, wobei eine entsprechende Zielstrom-Warteschlange sich auf einer Ausgangszeilenkarte befindet. Demgemäß wird das Paket in die Strom-Warteschlange überführt, indem die Paketdaten aus dem DRAM in einen Tx-Puffer gelesen werden und dann die Daten über das Switching Fabric in die Strom-Warteschlage überführt werden.
  • Wie oben diskutiert, wird die kürzeste Speicherwartezeit von einem SRAM auf dem Chip geboten, gefolgt von einem SRAM außerhalb des Chips und dann von einem DRAM außerhalb des Chips, der wesentlich langsamer ist als ein SRAM außerhalb des Chips. Demgemäß führt jeder Zugriff auf einen DRAM eine wesentliche Strafe bezüglich der Wartezeit ein. Gleichzeitig ist das Zwischenspeichern auf dem Chip mit DRAM-Puffern für NPU-Architekturen im allgemeinen auf SRAM-Arbeitsspeicher begrenzt worden, wenn sie überhaupt benutzt wurden. Dies ist teilweise auf die Kosten (was Kosten, Ausbeute und Platzbedarf auf dem Chip betrifft) des Speichers auf dem Chip zurückzuführen.
  • Es ist von den Erfindern erkannt worden, daß ein Großteil der Verarbeitung, die von einem Eingangs-Element ausgeführt wird (z. B. einer Eingangszeilenkarte oder einer NPU, die als Eingangs-Prozessor auf einer Zeilenkarte verwendet wird, welche sowohl Eingangs- als auch Ausgangselemente umfaßt), in bezug auf die Paketdaten selbst in ihrer Art temporär ist und keinen wiederholten Speicherzugriff und/oder wiederholte Modifikation der Daten erfordert. Weiterhin, obwohl typischerweise ein DRAM außerhalb des Chips verwendet wird, um größere Mengen an Daten zu speichern, sind viele dieser Daten, so wie die ACL-Datenbanken und Routing-Tabellen, im wesentlichen beständig (d. h. nicht temporär). Demgemäß ist ebenfalls erkannt worden, daß das Verwenden eines Cache auf dem Chip mit einer bevorzugten Cache-Strategie, die das Zwischenspeichern von temporären Paketdaten begünstigt, vorteilhaft sein würde. Ein solches Schema ist in der 1 veranschaulicht.
  • Mit Bezug auf das Ablaufdiagramm der 2 arbeitet die Architektur 100, die die Eingangs-Paketverarbeitung implementiert, wie folgt. In einem Block 200 wird ein Paket über einen Eingangsport empfangen (oder auf andere Weise der Eingangszeilenkarte 104 über das Switching Fabric zur Verfügung gestellt) und zeitweilig in einem Rx-Puffer 120 gespeichert. In einem Block 102 wird ein DRAM-Puffer im DRAM 126 zugewiesen, und ein entsprechender Warteschlangen-Beschreiber wird in den SRAM 124 geschrieben. Das Paket wird dann (logisch) in einem Block 204 in den Puffer geschrieben, der im Block 202 zugewiesen worden ist. Anstatt jedoch die Paketdaten in einen DRAM zu schreiben, werden eine oder mehrere Cache-Zeilen 115 (wie erforderlich) im Cache 114 zugewiesen, und die Daten werden in diese Cache-Zeilen) geschrieben, wie es in weiteren Einzelheiten hiernach beschrieben wird.
  • Weiter mit einem Block 206 werden dann verschiedene paketverarbeitende Arbeitsgänge, so wie Klassifizieren, Messen usw. durchgeführt. Nach dem Abschluß dieser Arbeitsgänge werden in einem Block 208 die Paketdaten aus dem Puffer gelesen. Wie hiernach diskutiert wird, werden in dem Fall eines Cache-Treffers die Paketdaten aus dem Cache 114 anstatt aus dem DRAM 126 gelesen. Die gelesenen Daten werden dann in einen Tx-Puffer 122 kopiert und in einem Block 210 in das Switching Fabric gesendet. Der DRAM-Puffer und die Cache-Zeile(n) werden dann in einem Block 212 freigegeben.
  • Die Arbeitsgänge und die Logik, die weitere Einzelheiten eines DRAM-Speicher-Schreibprozesses veranschaulichen, sind für eine Ausführungsform in der 3a gezeigt. Der Prozeß beginnt in einem Block 300 damit, daß ein DRAM-Schreibbefehl den Teil des DRAM 126 anspricht (z. B. die Adresse des Speicherblocks und Versetzung, falls anwendbar) auf den zugegriffen wird. In einem Entscheidungsblock 302 wird eine Feststellung getroffen, ob das Speicherschreiben zu einem Cache-Treffer führt. Wenn eine Cache-Zeile 115, die dem angesprochenen Speicherblock entspricht, in dem Cache 114 vorliegt, ergibt sich ein Cache-Treffer. Demgemäß werden die Daten in die Cache-Zeile geschrieben und die Zeile wird in einem Block 304 als abgeändert markiert.
  • Wenn sich ein Cache-Fehler ergibt, geht die Logik zu einem Entscheidungsblock 306 weiter, um festzustellen, ob die Speicheranfrage eine vollständige Cache-Zeile füllen wird. Zum Beispiel müssen nach dem anfänglichen Verarbeiten eines empfangenen Paketes, wenn der Schreibarbeitsgang des Blocks 204 abgearbeitet wird, die entsprechenden Daten noch zwischengespeichert werden, was zu einem Cache-Fehler führt. Mit Bezug auf die Entscheidung, die im Entscheidungsblock 306 getroffen worden ist, wird Cache-Platz auf einer Cache-Zeilen-Basis zugewiesen, wobei die Größe der Cache-Zeile fest ist und typischerweise (jedoch nicht erforderlich) mit der Größe der Speicherblöcke 127 im DRAM 126 übereinstimmt, um eine 1:1-Beziehung zwischen einer Cache-Zeile und einem Speicherplatz zu unterstützen. Gleichzeitig ist die Größe eines Pakets variabel. In dem Fall, daß die Größe eines Paketes größer als und kein ganzzahliges Vielfaches der Größe einer Cache-Zeile ist, wird die letzte Cache-Zeile, die den Paketdaten zugewiesen ist, von den Paketdaten nicht "gefüllt" werden. Dasselbe gilt für ein Paket mit einer Größe, die kleiner ist als die Größe der Cache-Zeile, so wie ein Paket minimaler Größe.
  • Für jeden Teil der Daten, der eine volle Cache-Zeile belegen wird, geht die Logik zu einem Block 308 weiter, in dem die Daten in die Cache-Zeile geschrieben werden, und die Zeile wird als abgeändert modifiziert. Zusätzlich gibt es weder eine DRAM-Lese- noch eine Schreib-Operation, die ausgeführt wird. Wie bei einer herkömmlichen Rückschreibe-Cache-Strategie werden in Verbindung mit dem Leeren einer Cache-Zeile (d. h. die Cache-Zeile für das erneute Zuweisen verfügbar machen) die Daten in der Cache-Zeile in den entsprechenden Speicherblock 128 geschrieben. Als ein Ergebnis gibt es zu diesem Zeitpunkt kein Erfordernis, die Daten in dem DRAM zu speichern (in ihn zu schreiben).
  • Für jeden Teil der Paketdaten, der eine Cache-Zeile nicht vollständig belegen wird, geht die Logik zu einem Entscheidungsblock 310 weiter, in dem eine Entscheidung getroffen wird, ob der Schreibbefehl einen "Paket-Daten"-Modifizierer umfaßt. Zum Beispiel wird bei einer Ausführungsform zu diesem Zweck ein getrennter Speicherschreibbefehl verwendet, so wie "WRITEP". Als Option kann das Bitmuster eines herkömmlichen Speicherschreibbefehls modifiziert werden, um den "Paket-Daten"-Modifizierer zu erzeugen. Im allgemeinen wird der Schreibbefehl irgendwelche Angaben enthalten, die identifizieren, daß die gerade durchgeführte Cache-Strategie einer getrennten Strategie entspricht, die temporäre Daten betrifft, so wie die Paketdaten, welche verwendet werden, um die Zwischenspeichertechniken hierin beispielhaft zu veranschaulichen.
  • In weiteren Einzelheiten wird der "Paket-Daten"-Modifizierer verwendet, um Paketdaten (z. B. temporäre Daten) von anderen Daten, die im DRAM gespeichert sind, zu unterscheiden. Durch die Verwendung dieses Modifizierers kann eine Anweisung zur Verfügung gestellt werden, um dem Cache-Controller 112 zu befehlen, wie die Daten zwischengespeichert werden sollen. Gemäß einer Ausführungsform, wenn der "Paket-Daten"-Modifizierer vorliegt, werden die Daten in einem Block 312 in eine Teil-Cache-Zeile geschrieben und die Cache-Zeile wird als abgeändert markiert. Wie bei dem Block 308 gibt es keine DRAM-Lese- oder Schreiboperation. Wenn im Gegensatz dazu kein "Paket-Daten"-Modifizierer vorliegt, wird in einem Block 314 eine herkömmliche Schreiboperation für eine Teil-Cache-Zeile ausgeführt. Bei dem herkömmlichen Ansatz wird der Teilabschnitt der Cache-Zeile beschrieben, indem die gelieferten Schreibdaten verwendet werden. Um jedoch die Cache-Zeile zu füllen, wird eine DRAM-Ablesung bei dem entsprechenden Speicherblock 127 durchgeführt, um den verbleibenden Teil des Speicherblocks (der Daten entspricht, welche Adressen belegen, die auf den nicht gefüllten Teil der Cache-Zeile abgebildet werden) in die Cache-Zeile zu kopieren. Wie zuvor wird die Cache-Zeile auch als abgeändert markiert.
  • Arbeitsschritte und Logik, die weitere Einzelheiten eines Leseprozesses eines DRAM-Speichers bei einer Ausführungsform veranschaulichen, sind in der 4a gezeigt. Der Prozeß beginnt bei einem Block 400, bei dem ein Lesebefehl für den DRAM-Speicher von dem Prozessorelement (z. B. der Rechenmaschine 110) zur Ausführung empfangen wird, wobei auf die Adresse des Speicherblockes Bezug genommen wird, auf den zugegriffen werden soll. Als Antwort auf das Ausführen des Lesebefehls wird in einem Entscheidungsblock 402 eine Feststellung getroffen, ob der Lesebefehl einen "Paket-Daten"-Modifizierer umfaßt. In einer analogen Weise zu der, die bei dem oben diskutierten Schreibbefehl benutzt wurde, kann dieser Modifizierer über einen bestimmten Befehl (z. B. READP) implementiert werden, oder das Bitmuster eines vorhandenen Lesebefehls kann abgeändert werden, um ein ähnliches Ergebnis zu bewirken.
  • Im allgemeinen kann ein Lesebefehl mit dem "Paket-Daten"-Modifizierer implementiert werden, wenn ein letztes Mal auf Daten zugegriffen wird; ansonsten wird typischerweise ein herkömmlicher Lesebefehl verwendet werden. Der Grund dafür liegt darin, wie Caches Fehler beim Lesen behandeln. In dem Fall, daß auf Daten nicht mehr gegriffen wird, gibt es kein Erfordernis, die Daten in dem Cache zu halten (bei einem Treffer) oder die Daten zwischenzuspeichern (bei einem Fehler). Somit wird für solche Zugriffe ein spezieller Befehl benutzt. Jedoch wird angemerkt, daß der "Paket-Daten"-Modifizierer nicht für jeden Zugriff auf Paketdaten benutzt zu werden braucht (und es auch tatsächlich nicht sollte). Zum Beispiel wird, wenn man einen Paket-Nachrichtenkopf lesen möchte, empfohlen, daß ein herkömmlicher Lesebefehl verwendet wird. Der Grund dafür wird im Hinblick auf die folgenden Cache-Strategien deutlich.
  • In dem Fall, daß der Lesebefehl den "Paket-Daten"-Modifizierer nicht enthält, werden herkömmliche Cache-Operationen ausgeführt. Als erstes wird der Cache 114 geprüft, um zu sehen, ob der Speicherblock, auf den vom Lesebefehl Bezug genommen wird, zwischengespeichert ist, wobei das Ergebnis in einem Treffer- oder Fehler-Entscheidungsblock 404 veranschaulicht wird. In dem Fall eines Treffers geht die Logik weiter, um die Daten in einem Block 406 aus der Cache-Zeile wiederzugewinnen. In dem Fall eines Fehlers werden die Daten aus dem DRAM 126 ausgelesen und eine Cache-Zeile 115 wird in dem Cache 114 zugewiesen, die Daten werden in die Cache-Zeile geschrieben und die Zeile wird als "in Benutzung" markiert. Diese Arbeitsgänge sind in einem Block 408 gezeigt.
  • Wenn der "Paket-Daten"-Modifizierer vorliegt, geht die Logik zu einem Treffer- oder Fehler-Entscheidungsblock 410 weiter, um festzustellen, ob die Daten in dem Cache vorhanden sind. Wenn dies der Fall ist, werden die Daten aus dem Cache wiedergewonnen und die Cache-Zeile wird als ungültig markiert, wie es in einem Block 412 veranschaulicht ist. Der Grund dafür, die Cache-Zeile als ungültig zu markieren, liegt darin, daß Paketdaten, die mit dem "Paket-Daten"-Modifizierer gelesen werden, typischerweise dem Lesearbeitsgang des Blocks 208 der 2 entsprechen, der verwendet wird, um das Paket vor dem Senden in einen Tx-Puffer zu kopieren. Als ein Ergebnis wird es keinen nachfolgenden DRAM-Zugriff auf die Paketdaten geben und somit keine Notwendigkeit, die Daten im DRAM oder im Cache zu halten. Das Markieren der Cache-Zeile als ungültig ermöglicht es weiter, daß die Cache-Zeile im anschließenden Einsatz neu zugewiesen wird.
  • Ein ähnliches Straffen wird bei einem Cache-Fehler verwendet. Wie es in einem Block 414 veranschaulicht ist, werden als Antwort auf einen Cache-Fehler die Daten direkt aus dem DRAM 126 gelesen. Jedoch gibt es weder eine Cache-Zeile, die im Cache 114 zugewiesen ist, noch gibt es eine Kopie der Daten, die in den Cache geschrieben wird. Wieder liegt der Grund dafür darin, daß, da es keine anschließende Verwendung der Daten gibt, es nicht nötig ist, sie zwischenzuspeichern.
  • Ein weiterer Aspekt mancher Ausführungsformen ist die Möglichkeit, über das Programm das "weiche" Sperren von Cache-Zeilen zu definieren. Dem Schema des "weichen Sperrens" können ausgewählte Cache-Zeilen weich gesperrt werden, was bedeutet, daß diese Cache-Zeilen eine höhere Priorität haben als andere Cache-Zeilen und somit nicht ausgetauscht werden müssen, solange die anderen Cache-Zeilen verfügbar sind. Bei einer Ausführungsform bewirkt das Vorliegen des "Paket-Daten"-Modifizierers für eine Lese- oder Schreibbefehl, daß ein Bit für den Zustand des weichen Sperrens für die Cache-Zeile gesetzt (für das Schreiben) oder gelöscht (für das Lesen) wird. Dieses Zustandsbit wird verwendet, um dem Cache-Controller einen Hinweis zu geben, daß die entsprechende Cache-Zeile nicht für das Neuzuweisen gewählt werden sollte. Zum Beispiel kann der folgende beispielhafte Algorithmus zum Auswählen einer Cache-Zeile, die zugewiesen werden soll, benutzt werden, wobei das Zustandsbit des "weichen Sperrens" verwendet wird:
    Priorität beim Auswählen einer Zeile, die bei einem Cache-Fehler erneuert werden soll:
    • 1. Eine ungültige Zeile. Wenn es keine derartigen Zeilen gibt, dann:
    • 2. Irgendeine Zeile, die nicht weich gesperrt ist. Wenn es keine derartigen Zeilen gibt, dann:
    • 3. Irgendeine Zeile.
  • Die voranstehenden Prioritätsregeln begünstigen das Auswählen benutzter Zeilen gegenüber weich gesperrten Zeilen, wobei programmgesteuerte Hinweise verwendet werden. Dies ist vorteilhaft gegenüber herkömmlichen Cache-Strategien, so wie 'in letzter Zeit am wenigsten benutzt' (LRU – Least Recently Used), da die Programmierkenntnis, daß eine Zeile bald wieder gelesen wird, eine bessere Heuristik ist als die Tatsache, daß sie in jüngster Zeit verwendet worden ist. Jedoch impliziert dieses nicht, daß die hierin beschriebenen Techniken anstelle derartiger herkömmlicher Cache-Strategien verwendet werden müssen, vielmehr können Aspekte der Techniken und herkömmliche Cache-Strategien kombiniert werden. Zum Beispiel kombiniert das Folgende das weiche Sperren mit einer herkömmlichen LRU-Strategie, die ein "benutzt"-Bit implementiert, um eine Cache-Zeile in seinem Satz als in jüngster Zeit verwendet zu markieren:
    • 1. Irgendeine ungültige Zeile. Wenn keine Zeile dies erfüllt, dann:
    • 2. Irgendeine nicht weich gesperrte Zeile UND das Bit 'nicht verwendet' ist gesetzt. Wenn keine Zeile dies erfüllt, dann:
    • 3. Irgendeine nicht weich gesperrte Zeile. Wenn keine Zeile dies erfüllt, dann:
    • 4. Irgendeine Zeile.
  • Ein Beispiel von Arbeitsgängen und Logik, die während des Verarbeitens eines Schreibbefehls für einen DRAM-Speicher unter Verwendung des Schemas des "weichen Sperrens" durchgeführt wird, ist in 3b gezeigt, in der Blöcke mit gleichen Bezugsziffern wie denen, die in 3a gezeigt und oben diskutiert sind, ähnliche Arbeitsgänge ausführen. Demgemäß wird sich das Folgende nur auf die Unterschiede zwischen den beiden Ablaufdiagrammen konzentrieren.
  • Als Antwort auf die Bestimmung beim Block 306, ob eine Cache-Zeile gefüllt ist, wird in einem Entscheidungsblock 316 eine Entscheidung getroffen, ob der "Paket-Daten"-Modifizierer vorhanden ist. Wenn nicht, werden die Arbeitsgänge des Blocks 308B in einer Weise ähnlich der ausgeführt, die oben mit Bezug auf den Block 308 in dem Ablaufdiagramm der 3a beschrieben ist. Wenn jedoch der "Paket-Daten"-Modifizierer vorliegt, wird das Bit für das "weiche Sperren" in einem Block 309 gesetzt, zusätzlich zum Schreiben der Daten in die vollständige Cache-Zeile und dem Markieren der Zeile als modifiziert in einem Block 308A. Wenn die Cache-Zeile nicht gefüllt wird und der "Paket-Daten"-Modifizierer vorhanden ist, geht die Logik zum Block 312 weiter, um. die Daten in die Teil-Cache-Zeile zu schreiben und die Zeile als modifiziert zu markieren. Zusätzlich wird das Statusbit für das "weiche Sperren" in einem Block 313 gesetzt.
  • Ein Beispiel logischer Arbeitsgänge, die während des Verarbeitens eines Lesebefehls eines DRAM-Speichers unter Verwendung des Schemas des "weichen Sperrens" ausgeführt werden, ist in 4b gezeigt, in der Blöcke mit gleichen Bezugsziffern wie denen, die in 4a gezeigt und oben diskutiert sind, ähnliche Arbeitsgänge ausführen. In diesem Fall betreffen die zusätzlichen Arbeitsgänge einen Block 407, der angesprochen wird, wenn der "Paket-Daten"-Modifizierer vorhanden ist und sich ein Cache-Treffer ergibt. Demgemäß werden die Daten aus dem Cache wiedergewonnen, die Cache-Zeile wird als ungültig markiert und das Zustandsbit für das "weiche Sperren" wird gelöscht. Dies bewirkt, daß die Cache-Zeile für unmittelbare Neuzuweisung verfügbar ist. Da die Daten nicht länger benötigt werden, gibt es gleichermaßen kein Erfordernis mehr, die Daten in einer Cache-Zeile zu halten, und somit können derartige Cache-Zeilen freigegeben werden.
  • Im allgemeinen können mehrere Techniken verwendet werden, um die Mechanismen des "Paket-Daten"-Modifizierers und für die optional damit verknüpfte "weich gesperrte" Cache-Zeilen zu bewirken. Schließlich werden jedoch die Angaben über die Cache-Strategie...Code auf Maschinenebene codiert, der dazu geeignet ist, auf dem Ziel-Prozessor zu laufen, da Prozessoren Codes auf Quellenebene nicht ausführen. Wie hiernach in weiteren Einzelheiten beschrieben wird, werden bei einer Ausführungsform bestimmte op-Codes zu einem Befehlssatz des Prozessors hinzugefügt, um dem Prozessor zu befehlen, Lese- und Schreibarbeitsgänge mit einem geltenden "Paket-Daten"-Modifizierer zu bewirken.
  • Bei einer Ausführungsform werden auf der Quellencodeebene Markierer eingebettet, was zu der Erzeugung entsprechender Aufrufe der Cache-Strategie im Maschinencode führt. Mit Bezug auf 5 beginnt dieser Prozeß bei einem Block 500, in dem Markierer in den Quellencode hoher Ebene eingesetzt werden, um Cache-Strategien für die verschiedenen Code-Teile aufzulisten. Bei einer Ausführungsform weist der Code hoher Ebene Programmiercode auf, der in der Sprache C oder C++ geschrieben ist und die Markierer werden über entsprechende Pragma-Anweisungen implementiert. Ein Pseudocode, der einen Satz beispielhafter Pragma-Anweisungen veranschaulicht, um eine Cache-Strategie des Paketdaten ein/aus zu bewirken, ist in der 6 gezeigt. Bei dieser Ausführungsform gibt es zwei Cache-Strategien: EIN, was angibt, daß die Strategie des "Paket-Daten"-Modifizierers in Kraft ist, und AUS, die Standardstrategie, die angibt, daß die Strategie des "Paket-Daten"-Modifizierers nicht in Kraft ist. Die Pragma-Anweisungen "CACHE PAKETDATEN EIN" wird verwendet, um den Beginn eines Code-Teiles zu markieren, in dem Lese- und Schreibbefehle den "Daten-Paket"-Modifizierer bestätigen müssen, während die Pragma-Anweisungen "CACHE PAKETDATEN AUS" verwendet wird, um das Ende des Code-Teils zu markieren.
  • Bei einer weiteren Ausführungsform werden einer herkömmlichen Sprache hoher Ebene und dem zugeordneten Kompilierer spezielle Befehle hinzugefügt, um es dem Programmierer zu ermöglichen, ausdrücklich den "Daten-Paket"-Modifizierer für den entsprechenden Code hoher Ebene in Kraft zu setzen. Zum Beispiel könnten Befehle, so wie Lese Paketdaten, Schreibe Paketdaten usw. in den Quellenebenencode eingebaut werden.
  • Die Pragma-Anweisungen, die in 6 gezeigt sind, oder die expliziten Befehle auf Quellenebene weisen den Kompilierer an, Maschinencode zu erzeugen, der eingebettete Aufrufe umfaßt, welche den Prozessor und/oder den Cache-Controller anweisen, wie die Cache-Einsätze und die Räumungsstrategien implementiert werden sollen. Bei einer Ausführungsform wird dies bewerkstelligt, indem herkömmliche op-Codes für den Speicherzugriff durch neue op-Codes ersetzt werden, die ein Mittel bilden, um den Prozessor und/oder den Cache- Controller zu informieren, ob der "Paket-Daten"-Modifiziert- und/oder "weiches Sperren"-Mechanismus in Kraft ist, wie es in einem Block 502 gezeigt ist.
  • Bei einer Ausführungsform wird für jeden Speicherzugriffsbefehl ein expliziter op-Code zur Verfügung gestellt. Zum Beispiel wird bei einem üblichen Befehlssatz der Lesebefehl verwendet, um Daten zwischen Speicher und Registern zu bewegen. Zum Inkraftsetzen des "Paket-Daten"-Modifizierers kann ein READP(Paket lesen – Read Packet)-Befehl auf Assemblierer-Ebene dem mnemonischen Befehlssatz hinzugefügt werden. In ähnlicher Weise könnte ein WRITEP(Paket schreiben – Write Packet)-Befehl auf Assemblierebene hinzugefügt werden. Dieser Ansatz würde es weiterhin einem Programmierer ermöglichen, Code auf der Assemblierebene zu schreiben und/oder Teile des Codes auf Assemblierebene, der aus einem kompilierten Code auf Quellenebene abgeleitet worden ist, zu optimieren.
  • Bei einer weiteren Ausführungsform werden Befehle verwendet, um explizit einen Merker für das weiche Sperren zu setzen und zu löschen. Bei diesem Ansatz wird ein entsprechendes Merkerregister in Zusammenhang mit dem Decodieren ausgewählter Speicherzugriffsbefehle überprüft, wobei der Merker identifiziert, ob die entsprechende Cache-Zeile weich gesperrt war.
  • Wie es in einem Block 504 gezeigt ist, wird zur Laufzeit der Cache-Einsatz über richtungsweisende Aufrufe (die bestimmten op-Codes und optionale Operanden) verwaltet, die in dem ausgeführten Maschinencode enthalten sind. Techniken, die Hardware-Implementierungen zum Bewirken der Cache-Räumungsstrategien zeigen, werden hiernach diskutiert.
  • Im allgemeinen können unterschiedliche Typen von Gesamt-Cache-Schemata (mit verschiedenen Techniken zum Implementieren jedes Schemas) bei den Cache-Techniken verwendet werden, die hierin beschrieben sind. Diese umfassen den voll assoziativen Cache und den n-fach satzassoziativen Cache. (Bei bestimmten Implementierungen können auch direkt abgebildete Caches verwendet werden – jedoch ist das Trefferverhältnis für direkt abgebildete Caches im Vergleich zu anderen Gestaltungen wegen ihrer Inflexibilität relativ schlecht.) Bei voll assoziativen Caches kann irgendein weicher Ort von irgendeiner Cache-Zeile zwischengespeichert werden. Dies ist die komplexeste Technik und erfordert hoch entwickelte Suchalgorithmen, wenn auf einen Treffer überprüft wird. Sie kann dazu führen, daß der gesamte Cache deswegen verlangsamt wird, jedoch bietet sie das beste theoretische Trefferverhältnis, da es so viele Optionen zum Zwischenspeichern jedweder Speicheradressen gibt. n-fach satzassoziative Caches kombinieren Aspekte der direkt abgebildeten und voll assoziativen Caches. Bei diesem Ansatz wird der Cache in Sätze aus jeweils n Zeilen (z. B. n = 2, 4, 8 usw.) aufgebrochen, und jedwede Speicheradresse kann in irgendeiner dieser n Zeilen innerhalb des ausgewählten Satzen zwischengespeichert werden. In effektiver Weise werden die Sätze aus Cache-Zeilen logisch in n Gruppen partitioniert. Dies verbessert die Trefferverhältnisse gegenüber dem direkt abgebildeten Cache, ohne jedoch eine schwere Suchstrafe mit sich zu bringen (da das n klein gehalten wird).
  • Eine beispielhafte Cache-Architektur 700, die ein voll assoziatives Cache-Schema implementiert, um die Steuerung des Cache-Einsatzes und von Räumungsstrategien unter Steuerung eines Programms zu unterstützen, ist in 7 gezeigt. Im allgemeinen können die Grundsätze, die bei dieser Ausführungsform offenbart sind, bei verschiedenen Typen gut bekannter Cache-Architekturen implementiert werden, einschließlich der Architekturen für n-fach satzassoziative Caches und Architekturen für voll assoziative Caches. Es wird weiter angemerkt, daß Einzelheiten weiterer Cache-Komponenten, so wie Multiplexierer, Decodierlogik, Datenports usw. aus Gründen der Klarheit in der 7 nicht gezeigt sind. Es wird von den Fachleuten verstanden werden, daß diese Komponenten in einer tatsächlichen Implementierung der Architektur vorhanden sein würden. Die Hauptkomponenten der Architektur umfassen einen Prozessor 702, verschiedene Cache-Steuerelemente (deren bestimmte Einzelheiten hiernach beschrieben werden), die zusammen als ein Cache-Controller bezeichnet werden, und den tatsächlichen Cache-Speicherraum selbst, der aus Speicher besteht, welcher verwendet wird, um TAG-Anordnungen und Cache-Zeilen zu speichern, die gemeinsam auch als Blöcke bezeichnet werden.
  • Der allgemeine Betrieb der Cache-Architektur 700 ist ähnlich dem, der von einem herkömmlichen voll assoziativen Cache benutzt wird, mit der Ausnahme von Erweiterungen für den "Paket-Daten"-Modifizierer und den Mechanismus für das weiche Sperren. Als Antwort auf eine Speicherzugriffsanfrage (die über Ausführung eines entsprechenden Befehls oder einer Befehlsfolge geschieht) wird eine Adresse, auf die durch die Anfrage hingewiesen wird, an den Cache-Controller geschickt. Die Felder der Adresse werden in ein TAG 704 und einen Block OFFSET 706 aufgeteilt. Der TAG 704 wird üblicherweise als die Block(oder Cache-Zeilen)-Adresse bezeichnet. Der Block OFFSET 706 wird auch üblicherweise als das Byte-Auswahl- oder Wort-Auswahl-Feld bezeichnet. Der Zweck einer Byte-Wort-Auswahl oder einer Blockversetzung besteht darin, ein angefragtes Wort (typischerweise) oder Byte aus mehreren Wörtern oder Bytes in einer Cache-Zeile auszuwählen. Zum Beispiel liegen die Größen typischer Cache-Zeilen im Bereich von 8–128 Byte. Da eine Cache-Zeile die kleinste Einheit ist, auf die in einem Cache zugegriffen werden kann, ist es notwendig, Information zur Verfügung zu stellen, um das weitere Analysieren der Cache-Zeile zu ermöglichen, damit die angefragten Daten zurückgegeben werden können. Der Ort des gewünschten Worts oder Bytes ist von der Basis der Cache-Zeile versetzt, daher der Name Block "Versetzung (Offset)". Die Auswahl des Wortes wird von einem Wortauswahl-Multiplexierer (mux) 708 bewirkt.
  • Typischerweise werden 1 niedrigstwertige Bits für die Blockversetzung verwendet, wobei die Breite einer Cache-Zeile oder eines Blockes 21 Bytes beträgt. Der nächste Satz der n (höchstwertigen) Bits weist den TAG 704 auf. Diese n Bits werden verwendet, um einen entsprechenden TAG in jeder TAG-Anordnung aufzusuchen. Zusätzlich umfaßt jede Cache-Zeile ein "gültig"-Bit.
  • Zusätzlich zu diesen Elementen verwendet die Cache-Architektur 700 ein Bit 710 zum weichen Sperren. Das Bit zum weichen Sperren wird verwendet, um für eine zugeordnete Cache-Zeile ein weiches Sperren zu setzen oder zu löschen. Bei einer Ausführungsform ist das Bit für das weiche Sperren in einem 1-Bit-Register gespeichert, während die Adresse in einem weiteren w-Bit-Register gespeichert ist, wobei w die Breite der Adresse ist. Bei einer weiteren Ausführungsform wird die Kombination aus dem Bit für das weiche Sperren und der Adresse in einem Register gespeichert, das w + 1 groß ist. Bei der Cache-Architektur 700 sind die Cache-Zeilen in eine TAG-Anordnung 712 und eine Cache-Zeilenanordnung 714 getrennt.
  • Als Antwort auf eine Speicherzugriffsanfrage geht der Betrieb der Cache-Architektur 700 wie folgt weiter. Bei der veranschaulichten Ausführungsform empfängt der Prozessor 702 einen READP-Befehl 716, der sich auf eine Speicheradresse bezieht. Wie oben diskutiert, instruiert bei einer Ausführungsform ein READP-Befehl den Prozessor/Cache-Controller, Tätigkeiten auszuführen, die mit einem Lesebefehl verknüpft sind, bei dem der "Daten-Paket"-Modifizierer aktiviert (gesetzt) ist.
  • Als Antwort auf einen Cache-Fehler weist der Cache-Controller eine neue Cache-Zeile zu, indem eine vorhandene Cache-Zeile ausgewählt wird, die ersetzt werden soll. Bei der veranschaulichten Ausführungsform wird die oben diskutierte Sperrstrategie für Cache-Zeilen mit weichem Sperren implementiert, indem eine Zuweisungsstrategielogik 718 für das weiche Sperren des Cache implementiert wird.
  • Ein weiterer Arbeitsschritt, der im Zusammenhang mit der Cache-Zeilenzuweisung ausgeführt wird, ist das Wiedergewinnen der angefragten Daten aus dem DRAM 126. Die Logik zum Implementieren der entsprechenden Speicherlese- oder -schreibstrategie ist über die Cache-Einsatzstrategielogik 720 implementiert. Zum Beispiel benutzt bei Implementierungen, die das weiche Sperren der Cache-Zeilen nicht verwendet, die Cache-Einsatzstrategie 720 die Logik, die in den Ablaufdiagrammen der 3a und 4a veranschaulicht ist, während sie die Logik, die in den Ablaufdiagrammen der 3b und 4b veranschaulicht ist, bei Implementierungen, die das weiche Sperren einsetzen, implementiert.
  • Bei der Rückführung der angefragten Daten zu dem Cache-Controller werden die Daten in die zugewiesene Cache-Zeile kopiert, und der entsprechende TAG und das gültig-Bit werden in der TAG-Anordnung 712 aktualisiert. Anstatt lediglich die angefragten Daten zurückzugeben, wird eine Anzahl aufeinanderfolgender Bytes mit Daten nahe den und einschließlich den angefragten Daten zurückgegeben, wobei die Anzahl der Bytes gleich der Breite der Cache-Zeile ist. Bei einer Cache-Zeilenbreite von 32 Bytes als Beispiel würden 32 Bytes Daten zurückgegeben werden. Ein Wort (das der ursprünglichen Anfrage entspricht), welches in der neuen Cache-Zeile enthalten ist, wird dann aus dem Cache in ein Eingangsregister 726 für den Prozessor 702 mit der Unterstützung des Wortauswahl-Multiplexierers 708 gelesen.
  • Das Schreiben eines Wertes, der einer nicht zwischengespeicherten Adresse entspricht, und das Aktualisieren eines Wertes, der in einer Cache-Zeile für die Cache-Architektur 700 gespeichert ist, wird auch in einer Weise ähnlich dem herkömmlichen Ansatz ausgeführt, mit der Ausnahme der weiteren Verwendung des "Paket-Daten"-Modifizierers und des Bits für das weiche Sperren. Für nicht in Paketform vorliegende Daten umfaßt dieses ein Rückschreiben in den Cache, bei dem Daten, die in einem Ausgangsregister 724 gespeichert sind, (schließlich) in den Systemspeichergeschrieben werden. Die geeignete Cache-Zeile (sollte eine solche gegenwärtig vorhanden sein), wird zunächst von dem anwendbaren Cache-Nachschlagealgorithmus gesucht. Wenn sie gefunden worden ist, wird die Cache-Zeile mit den Daten im Ausgangsregister 724 aktualisiert, und ein entsprechendes modifiziertes Bit (nicht gezeigt) wird aufgezeigt. Der Systemspeicher kann anschließend mit dem neuen Wert über wohlbekannte Rückschreibe-Arbeitsschritte aktualisiert werden (wenn dies angesichts der anwendbaren Cache-Strategie erforderlich ist). Wenn die Daten, die aktualisiert werden sollen, in dem Cache nicht gefunden werden, wird bei einer Ausführungsform eine Cache-Zeile in einer Weise zugewiesen, die ähnlich der ist, die oben für eine Leseanfrage beschrieben ist, und Daten werden in die Cache-Zeile geschrieben, und entsprechende TAG- und gültig-Bit-Werte werden in einer geeigneten TAG-Anordnung aktualisiert.
  • Zusätzlich zu der Cache-Architektur, die in der 7 veranschaulicht ist, können andere Typen von Cache-Architekturen in einer ähnlichen Weise implementiert werden. Zum Beispiel kann eine satzassoziative Cache-Architektur implementiert werden. Im allgemeinen sind die Hauptkomponenten der satzassoziativen und der voll assoziativen Architekturen ähnlich, mit der Ausnahme, daß die Elemente der TAG-Anordnung und der zugewiesenen Cache-Zeilen in Sätze gruppiert sind und jeder TAG-Eintrag weiterhin ein INDEX-Feld umfaßt, das verwendet wird, um in einen anwendbaren Satz zu indexieren. Zusätzlich wird geeignete Logik bereitgehalten, um das Indexierschema und andere Elemente der satzassoziativen Cache-Operationen zu implementieren; derartige Logik und Architekturelemente sind auf dem Gebiet gut bekannt.
  • 8 zeigt weitere Einzelheiten einer Ausführungsform einer NPU 102 und einer Eingangszeilenkarte 104. Bei dieser Ausführungsform weist die Eingangszeilenkarte 104 eine ATCA-Karte auf, die so konfiguriert ist, daß sie an eine gemeinsame Rückwandplatine in einem ATCA-Chassis gekoppelt werden kann, das weiter andere modulare ATCA-Karten umfassen kann. Demgemäß umfaßt die Zeilenkarte einen Satz Verbinder zum Anschluß an passende Verbinder auf der Rückwandplatine, wie es durch eine Rückwandplatinen-Schnittstelle 800 veranschaulicht wird (die aus Gründen der Klarheit außerhalb der Eingangszeilenkarte 102 gezeigt ist). Im allgemeinen unterstützt die Rückwandplatinen-Schnittstelle 800 verschiedene Eingabe/Ausgabe (I/O)-Kommunikationskanäle, ebenso wie sie für Energie für die Zeilenkarte 104 sorgt. Aus Gründen der Einfachheit sind in der 8 nur ausgewählte I/O-Schnittstellen gezeigt, obwohl verstanden werden wird, daß auch andere I/O- und Energiezufuhrschnittstellen vorliegen. Bei einer Ausführungsform unterstützen die I/O-Schnittstellen die Verwendung in einer hochentwickelten Switching(AS – Advanced Switching)-Umgebung, wie sie durch die Spezifikation ASI (Advanced Switching Interconnect) SIG Advance Switching V1 definiert ist.
  • Die NPU 102 umfaßt n Mikromaschinen 110. Bei einer Ausführungsform ist n = 8, während bei anderen Ausführungsformen n = 16, 24 oder 23 gilt. Andere Anzahlen Mikromaschinen 1001 können auch verwendet werden. Bei einer Ausführungsform sind 16 Mikromaschinen 110 in zwei Cluster aus 8 Mikromaschinen gruppiert, die ein ME-Cluster 0 und ein ME-Cluster 1 umfassen (wobei das Letztere aus Gründen der Klarheit nicht gezeigt ist).
  • Bei der veranschaulichten Ausführungsform führt jede Mikromaschine 110 Befehle (z. B. Mikrocode) aus, die in einem lokalen Steuerspeicher 802 gespeichert sind. Enthalten in den Befehlen für eine oder mehrere Mikromaschinen sind Paketverarbeitungs- und Warteschlangenverwaltungsbefehle, die verwendet werden, um die hierin beschriebenen verschiedenen Arbeitsschritte für die Paketverarbeitung und Warteschlangenverwaltung zu vereinfachen. Bei einer Ausführungsform sind diese Befehle in der Form von Mikrocode-Makros beschrieben.
  • Jede der Mikromaschinen 110 ist weiteren Netzwerkprozessorkomponenten über Sätze aus Bus- und Steuerleitungen verbunden, die als das Prozessor-"Chassis" bezeichnet werden. Aus Gründen der Klarheit sind diese Bus-Sätze und Steuerleitungen als eine interne Verbindung 804 veranschaulicht. Auch verbunden mit der internen Verbindung sind eine SRAM-Schnittstelleneinheit 106, ein DRAM-Controller 806, ein universeller Prozessor 808, eine Medien-Switching Fabric-Schnittstelle 810, ein PCI(Peripheral Component Interconnect)-Controller 812 und eine Prüfsummeneinheit 814. Andere Komponten, die nicht gezeigt sind, welche von der NPU 102 bereitgehalten werden können, umfassen, sind jedoch nicht beschränkt auf Verschlüsselungseinheiten, eine CAP(Control Status Register Access Proxy)-Einheit, Arbeitsspeicher und eine Überwachungseinheit für die Leistung.
  • Wie veranschaulicht sorgt der DRAM-Controller 806 insgesamt für die Funktionalität von Cache-Controller 112, Cache 114 und DRAM-Schnittstelleneinheit 116. Bei einer Ausführungsform verwendet der DRAM 126 einen DDR(doppelte Datenrate – Double Data Rate)-DRAM. Bei weiteren Ausführungsformen kann der DRAM 126 einen Rambus-DRAM (RDRAM) oder einen DRAM mit verringerter Wartezeit (RL (Reduced Latency) DRAM) verwenden. Andere Typen eines DRAM können auch unterstützt werden.
  • Ein universeller Prozessor 808 kann für verschiedene Netzwerkprozessorarbeitsschritte eingesetzt werden. Bei einer Ausführungsform werden Arbeitsschritte auf der Steuerebene durch Software vereinfacht, die auf dem universellen Prozessor 808 ausgeführt werden, während Arbeitsschritte auf Datenebene hauptsächlich durch Befehlsfolgen vereinfacht werden, die auf Mikromaschinen 110 ausgeführt werden.
  • Die Medien-Switching Fabric-Schnittstelle 810 wird verwendet, um die Mediengeräte oder das Switching Fabric für das Netzwerkgerät, in dem die Zeilenkarte installiert ist, anzuschließen. Bei einer Ausführungsform benutzt die Medien-Switching Fabric-Schnittstelle 810 eine System Packet Level Interface 4 Phase 2 (SPI4-2)-Schnittstelle 816. Als Option kann die Medien-Switching Fabric-Schnittstelle 810 eine CSIC-, NPSI- und/oder ASI-Schnittstelle unterstützen. Im allgemeinen kann das tatsächliche Switching Fabric auf einer oder mehreren getrennten Zeilenkarten untergebracht sein oder kann in die Chassis-Rückwandplatine (z. B. als ein passives Switching Fabric) eingebaut sein. Beide Konfigurationen werden durch das Switching Fabric 818 dargestellt. Bei einer Ausführungsform (nicht veranschaulicht) umfaßt die Medien-Switching Fabric-Schnittstelle Rx-Puffer 120 und Tx-Puffer 122 und stellt Logik zur Verfügung, um die Verwaltungsarbeitsschritte für den Empfangs- und Sendepuffer, die hierin beschrieben sind, zu implementieren.
  • Der PCI-Controller 812 ermöglicht es dem Netzwerkprozessor, eine Schnittstelle zu einer oder mehreren PCI-Vorrichtungen zu bilden, die über eine PCI-Schnittstelle 820 an die Rückwandplatinen-Schnittstelle 800 gekoppelt sind. Bei einer Ausführungsform weist die PCI-Schnittstelle 820 eine PCI-Express-Schnittstelle auf.
  • Während des Initialisierens werden codierte Befehle (z. B. Mikrocode), die verschiedene paketverarbeitende und andere Arbeitsschritte vereinfachen, in Steuerspeicher 802 geladen. Bei einer Ausführungsform werden die Befehle aus einem nicht flüchtigen Speicher 822 geladen, der auf der Eingangszeilenkarte 104 untergebracht ist, so wie einer Flash-Speichervorrichtung. Weitere Beispiele nicht flüchtiger Speicher umfassen Nur-Lese- Speicher (ROMs – Read Only Memories), programmierbare ROMS (PROMs) und elektronisch löschbare PROMs (EEPROMs – Electronical ErasablePROMs). Bei einer Ausführungsform wird über eine Schnittstelle 824 von einem universellen Prozessor 808 auf den nicht flüchtigen Speicher 822 zugegriffen. Bei einer weiteren Ausführungsform kann auf den nicht flüchtigen Speicher 822 über eine Schnittstelle (nicht gezeigt) zugegriffen werden, die an die interne Verbindung 804 gekoppelt ist.
  • Zusätzlich zum Laden der Befehle aus einem lokalen (zur Zeilenkarte 104) Speicher können Befehle aus einer externen Quelle geladen werden. Zum Beispiel werden bei einer Ausführungsform die Befehle auf einem Plattenlaufwerk 826 gespeichert, das von einer weiteren Zeilenkarte (nicht gezeigt) versorgt wird, oder ansonsten durch Netzwerkvorrichtung, in der die Zeilenkarte 14 installiert ist. Bei noch einer weiteren Ausführungsform werden die Befehle von einem entfernt stehenden Server oder dergleichen über ein Netzwerk 828 als eine Trägerwelle heruntergeladen.
  • Im allgemeinen kann jeder der funktionalen Blöcke, die in den Figuren veranschaulicht und hierin diskutiert sind, implementiert werden, indem programmierbare Logik in Hardware, programmierbare Logik in Firmware/Software über das Ausführen entsprechender Abfolgen auf einer oder mehreren Rechenmaschinen oder einer Kombination aus den beiden verwendet wird. Zum Beispiel können verschiedene paketverarbeitende Arbeitsschritte, einschließlich Arbeitsschritte des Klassifizierens und der Warteschlangenverwaltung, über das Ausführen entsprechender Befehlsfolgen auf einer oder mehreren Rechenmaschinen 110 implementiert werden. Als Option können alle oder ein Teil der verschiedenen Arbeitsschritte, die von den hierin diskutierten funktionalen Blöcken geliefert werden, implementiert werden, indem geeignete programmierbare Logik auf einer NPU oder dergleichen eingebettet wird.
  • Somit können Ausführungsformen dieser Erfindung als oder zum Unterstützen von Firmware/Softwaremodulen verwendet werden und/oder für Programme, die auf irgendeiner Form eines Prozessorkerns ausgeführt werden, oder auf andere Weise innerhalb eines maschinen lesbaren Mediums implementiert oder verwirklicht werden. Ein maschinenlesbares Medium umfaßt irgendeinen Mechanismus zum Speichern oder Senden von Information in einer Form, die von einer Maschine (z. B. einem Computer) lesbar ist. Zum Beispiel kann ein maschinenlesbares Medium einen Nur-Lese-Speicher (ROM); einen Speicher mit wahlfreiem Zugriff (RAM – Random Access Memory); ein Magnetplatten-Speichermedium; ein optisches Speichermedium und eine Flash-Speichervorrichtung usw. umfassen. Zusätzlich kann ein maschinenlesbares Medium sich fortpflanzende Signale umfassen, so wie elektrische, optische, akustische oder andere Formen sich fortpflanzender Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.).
  • Die obige Beschreibung veranschaulichter Ausführungsformen der Erfindung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, ist nicht als erschöpfend oder die Erfindung auf die genauen offenbarten Formen beschränkend gedacht. Obwohl bestimmte Ausführungsformen und Beispiele der Erfindung zu Zwecken der Veranschaulichung beschrieben sind, sind verschiedene äquivalente Abänderungen innerhalb des Umfangs der Erfindung möglich, wie es Fachleute auf dem relevanten Gebiet erkennen werden.
  • Diese Abänderungen können an der Erfindung im Lichte der obigen genauen Beschreibung vorgenommen werden. Die Ausdrücke, die in den folgenden Ansprüchen verwendet werden, sollen nicht so verstanden werden, daß sie die Erfindung auf die bestimmten Ausführungsformen, die in der Beschreibung und in den Zeichnungen offenbart sind, beschränken. Statt dessen soll der Umfang der Erfindung vollständig durch die folgenden Ansprüche bestimmt sein, die entsprechend den bestehenden Lehren der Interpretation von Ansprüchen ausgelegt werden sollen.
  • ZUSAMMENFASSUNG
  • Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher. Anweisungen (z. B. Modifizierer) werden Lese- und Schreib-Speicherzugriffsbefehlen hinzugefügt, um Speicherzugriff für temporäre Daten zu identifizieren. Angesichts solcher Anweisungen wird eine alternative Cache-Strategie und Zuweisungs-Strategien implementiert, die den Zugriff auf Cache und Speicher minimieren. Bei einer Strategie kann ein Schreib-Cache-Fehler dazu führen, daß Daten in eine Teil-Cache-Zeile geschrieben werden, ohne einen Speicher-Lese/Schreib-Zyklus, um den Rest der Zeile zu füllen. Bei einer weiteren Strategie kann ein Lese-Cache-Fehler dazu führen, daß aus einem Speicher gelesen wird, ohne die gelesenen Daten einer Cache-Zeile zuzuweisen oder sie zu beschreiben. Ein Mechanismus zum weichen Sperren von Cache-Zeilen wird ebenfalls offenbart, bei dem Cache-Zeilen wahlweise weich gesperrt werden können, um die Präferenz zum Halten derartiger Cache-Zeilen gegenüber nicht gesperrten Zeilen anzugeben.

Claims (22)

  1. Verfahren, das aufweist Empfangen eines Speicherzugriffbefehls; Feststellen, ob der Befehl Angaben enthält, die identifizieren, daß eine Cache-Strategie für temporäre Daten verwendet werden soll; und falls dies der Fall ist, Verwenden der Cache-Strategie für temporäre Daten; ansonsten Verwenden einer Standard-Cache-Strategie.
  2. Verfahren nach Anspruch 1, bei dem die temporären Daten Netzwerkpaketdaten aufweisen und die Angabe einen Paketdaten-Modifizierer aufweist.
  3. Verfahren nach Anspruch 2, bei dem der Befehl einen Speicherschreibbefehl aufweist, welcher einen Paketdaten-Modifizierer enthält, der identifiziert, daß das Speicherschreiben darin besteht, temporäre Paketdaten in einen Puffer zu schreiben, wobei das Verfahren weiter aufweist: Feststellen, ob es einen Cache-Fehler gibt, der dem Speicherschreiben entspricht; Zuweisen wenigstens einer Cache-Zeile, um ausreichend Speicherraum zum Speichen der Paketdaten zur Verfügung zu stellen; Feststellen, ob alle oder ein Teil der Paketdaten eine gegebene Cache-Zeile, die zugewiesen ist, füllen werden; und falls dies der Fall ist, Schreiben aller oder eines Teiles der Paketdaten in die Cache-Zeile; ansonsten Schreiben aller oder eines Teiles der Paketdaten in einen Teil der Cache-Zeile, ohne vorhandene Daten in einem Rest der Cache-Zeile zu modifizieren.
  4. Verfahren nach Anspruch 3, das weiter aufweist: Empfangen eines zweiten Speicherschreibbefehls, der keinen Paketdaten-Modifizierer enthält, wobei sich der zweite Speicherschreibbefehl auf Daten bezieht, die in einen Speicher geschrieben werden sollen; Feststellen, daß es einen Cache-Fehler gibt, der dem Speicherschreiben entspricht; Zuweisen einer oder mehrerer Cache-Zeilen, die ausreichend Speicherplatz zum Speichern der Daten zur Verfügung stellen; Feststellen, ob alle oder ein Teil der Paketdaten eine gegebene Cache-Zeile füllen werden; und falls dies der Fall ist, Schreiben aller oder eines Teils der Daten in die Cache-Zeile; ansonsten Schreiben aller oder eines Teils der Daten in einen Teilbereich der Cache-Zeile; Lesen von Daten aus einem Teil eines Speicherblocks, der dem verbleibenden Teil der Cache-Zeile entspricht, und Schreiben der gelesenen Daten in den verbleibenden Teil der Cache-Zeile.
  5. Verfahren nach Anspruch 2, bei dem der Befehl einen Speicherlesebefehl aufweist, welcher einen Paketdaten-Modifizierer enthält, der identifiziert, daß das Speicherlesen darin besteht, temporäre Paketdaten aus einem Speicherpuffer zu lesen, wobei das Verfahren weiter aufweist: Feststellen, ob die Paketdaten in einem Cache vorliegen; und, falls nicht Lesen der Paketdaten aus einem Speicherpuffer, ohne in dem Cache eine Cache-Zeile zuzuweisen, um die Paketdaten zwischenzuspeichern.
  6. Verfahren nach Anspruch 2, bei dem der Befehl einen Speicherlesebefehl aufweist, welcher einen Paketdaten-Modifizierer enthält, der identifiziert, daß das Speicherlesen darin besteht, temporäre Paketdaten aus einem Speicherpuffer zu lesen, wobei das Verfahren weiter aufweist: Feststellen, ob die Paketdaten in einem Cache vorliegen; und falls dies der Fall ist, Lesen der Paketdaten aus einer oder mehreren Cache-Zeilen, in denen die Daten zwischengespeichert sind; und Markieren der einen oder der mehreren Cache-Zeilen als ungültig.
  7. Verfahren nach Anspruch 2, das weiter aufweist: Empfangen eines Paketes; Zuweisen eines Speicherpuffers; Zuweisen einer oder mehrerer Cache-Zeilen, die dem Speicherpuffer entsprechen; Schreiben von Paketdaten in die eine oder die mehreren Cache-Zeilen; Durchführen von paketverarbeitenden Arbeitsschritten, bei denen die Paketdaten verwendet werden; Lesen von Paketdaten aus der einen oder den mehreren Cache-Zeilen; Senden der Paketdaten an einen Ziel-Bestimmungsort; und Freigeben der DRAM-Puffer und der einen oder der mehreren Cache-Zeilen, wobei wenigstens ein Teil der Speicherzugriffe Speicherlese- und Speicherschreibbefehle verwenden, die einen Paketdaten-Modifizierer umfassen, der identifiziert, daß der Speicherzugriff temporären Paketdaten entspricht.
  8. Verfahren nach Anspruch 7, bei dem das Paket von einer Eingangszeilenkarte empfangen wird, die wenigstens einen Netzwerkprozessor und einen versorgenden DRAM (dynamischer Speicher mit wahlfreiem Zugriff – Dynamic Random Access Memory) außerhalb des Netzwerkprozessors umfaßt, und der Speicherpuffer einen DRAM-Puffer umfaßt.
  9. Verfahren nach Anspruch 8, bei dem das Senden des Pakets an einen Ziel-Bestimmungsort das Senden der Ziel-Daten in ein Switching Fabric aufweist, so daß sie von einer anderen Zeilenkarte empfangen werden.
  10. Verfahren nach Anspruch 1, das weiter aufweist: Implementieren eines Zuweisungsschemas für Cache-Zeilen, das einen Mechanismus des weichen Sperrens umfaßt, welcher Präferenz zum Beibehalten von Cache-Zeilen mit weichen Sperren bewirkt; und Verwenden des Mechanismus des weichen Sperrens für Speicherzugriffsbefehle, welche Angaben enthalten, die anzeigen, daß der Speicherzugriff temporäre Daten betrifft.
  11. Verfahren nach Anspruch 10, weiter mit dem Bewirken einer Strategie zum Zuweisen von Cache-Zeilen mit Logik, die aufweist: (1) Zuweisen irgendeiner Cache-Zeile, die ungültig ist; wenn keine Cache-Zeilen dieses erfüllen, dann (2) Zuweisen irgendeiner Cache-Zeile, die nicht weich gesperrt ist; und wenn keine Cache-Zeile dieses erfüllt, dann (3) Zuweisen irgendeiner Cache-Zeile.
  12. Verfahren nach Anspruch 10, das weiter aufweist: Implementieren des Mechanismus des weichen Sperrens, indem ein Zustandsbit für das weiche Sperren verwendet wird, das mit einer jeweiligen Cache-Zeile verknüpft ist.
  13. Prozessor, der aufweist: einen Prozessorkern; eine Speicherschnittstelleneinheit, die mit dem Prozessorkern gekoppelt ist; einen Cache-Controller, der mit dem Prozessorkern gekoppelt ist; und einen Cache, der von dem Cache-Controller gesteuert wird und betrieblich so gekoppelt ist, daß er Daten von dem Prozessorkern empfängt und Daten an diesen liefert, wobei der Cache-Controller so konfiguriert ist, daß er eine Cache-Strategie bewirkt, welche eine Standard-Cache-Strategie und eine Cache-Strategie für temporäre Daten umfaßt, und wobei die Cache-Strategie für temporäre Daten als Antwort auf das Verarbeiten von Speicherzugriffsbefehlen implementiert wird, welche Angaben umfassen, die identifizieren, daß die Cache-Strategie für temporäre Daten benutzt werden soll.
  14. Prozessor nach Anspruch 13, bei dem ein Speicherzugriffsbefehl einen Speicherschreibbefehl aufweist, der einen Paketdaten-Modifizierer enthält, der identifiziert, daß das Speicherschreiben darin besteht, temporäre Paketdaten in einem Speicherpuffer zu speichern, und bei dem als Antwort auf einen Cache-Fehler, der dem Speicherschreiben entspricht, die Cache-Strategie für temporäre Daten aufweist: Zuweisen einer oder, mehrerer Cache-Zeilen, die ausreichend Speicherraum zum Speichern der Paketdaten zur Verfügung stellen; Feststellen, ob alle oder ein Teil der Paketdaten eine gegebene Cache-Zeile füllen werden; und falls dies der Fall ist, Schreiben aller oder eines Teils der Paketdaten in die Cache-Zeile; ansonsten Schreiben aller oder eines Teils der Paketdaten in einen Teilbereich der Cache-Zeile, ohne vorhandene Daten in einem Rest der Cache-Zeile zu modifizieren.
  15. Prozessor nach Anspruch 13, bei dem ein Speicherzugriffsbefehl einen Speicherlesebefehl aufweist, der einen Paketdaten-Modifizierer enthält, welcher identifiziert, daß das Speicherlesen darin besteht, temporäre Paketdaten aus einem Speicherpuffer zu lesen, wobei als Antwort auf einen Cache-Fehler, der dem Speicherlesen entspricht, die Cache-Strategie für temporäre Daten aufweist: Lesen der Paketdaten aus einem Speicherpuffer, ohne in dem Cache eine Cache-Zeile zum Zwischenspeichern der Paketdaten zuzuweisen.
  16. Prozessor nach Anspruch 13, bei dem ein Speicherzugriffsbefehl einen Speicherlesebefehl aufweist, der einen Paketdaten-Modifizierer enthält, welcher identifiziert, daß das Speicherlesen darin besteht, temporäre Paketdaten aus einem Speicherpuffer zu lesen, wobei als Antwort auf einen Cache-Treffer, der dem Speicherlesen entspricht, die Cache-Strategie für temporäre Daten aufweist: Lesen der Paketdaten aus einer oder mehreren Cache-Zeilen, in denen die Daten zwischengespeichert sind; und Markieren der einen oder der mehreren Cache-Zeilen als ungültig.
  17. Prozessor nach Anspruch 13, bei dem der Cache-Controller weiter eine Logik zum Zuweisen von Cache-Zeilen umfaßt, um einen Mechanismus des weichen Sperrens zu bewirken, der aufweist: Priorisieren des Ersetzens von Cache-Zeilen derart, daß Cache-Zeilen mit weichen Sperren eine höhere Priorität gegenüber anderen Cache-Zeilen, die keine weichen Sperren haben, zugewiesen wird, und Verwenden des Mechanismus des weichen Sperrens für Speicherzugriffsbefehle, die Angaben enthalten, welche anzeigen, daß der Speicherzugriff temporäre Daten betrifft.
  18. Prozessor nach Anspruch 17, bei dem die Logik zum Zuweisen von Cache-Zeilen aufweist: (1) Zuweisen irgendeiner Cache-Zeile, die als ungültig markiert ist; wenn keine Cache-Zeile dieses erfüllt, dann (2) Zuweisen irgendeiner Cache-Zeile, die nicht weich gesperrt und nicht als verwendet markiert ist; wenn keine Cache-Zeile dieses erfüllt, dann (3) Zuweisen irgendeiner Cache-Zeile, die nicht weich gesperrt ist; und wenn keine Cache-Zeile dieses erfüllet, dann (4) Zuweisen irgendeiner Cache-Zeile.
  19. Netzwerkzeilenkarte, die aufweist: eine gedruckte Leiterkarte (PCB – Printed Circuit Board) mit einer Rückwandplatinen-Schnittstelle, die Signalleitungen umfaßt, welche einer Medien-Switching Fabric-Schnittstelle entspricht; einen auf einem SRAM (statischer Speicher mit wahlfreiem Zugriff – Static Random Access Memory) basierenden Speicher, der auf der PCB angeordnet ist; einem auf einem DRAM basierenden Speicher, der auf der PCB angeordnet ist; und eine Netzwerkprozessoreinheit (NPU – Network Processor Unit), die an die PCB gekoppelt ist, welche aufweist: einen Prozessorkern; eine DRAM-Schnittstelleneinheit, die zwischen den Prozessorkern und den auf einem DRAM basierenden Speicher gekoppelt ist; eine SRAM-Schnittstelleneinheit, die zwischen den Prozessorkern und den auf einem SRAM basierenden Speicher gekoppelt ist; einen Cache-Controller, der mit dem Prozessorkern und der DRAM-Schnittstelleneinheit gekoppelt ist; und einen Cache, der von dem Cache-Controller gesteuert wird und betrieblich so gekoppelt ist, daß er Daten von dem Prozessorkern empfängt und Daten an diesen liefert, wobei der Cache-Controller so konfiguriert ist, daß er eine Cache-Strategie bewirkt, die eine Standard-Cache-Strategie und eine Cache-Strategie für temporäre Paketdaten umfaßt, und wobei die Cache-Strategie für temporäre Paketdaten als Antwort auf das Verarbeiten von Speicherzugriffsbefehlen implementiert wird, welche einen Paketdaten-Modifizierer umfassen, der identifiziert, daß die Cache-Strategie für temporäre Paketdaten benutzt werden soll.
  20. Netzwerk-Zeilenkarte nach Anspruch 19, bei der ein Speicherzugriffsbefehl einen Speicherschreibbefehl aufweist, welcher einen Paketdaten-Modifizierer enthält, der identifiziert, daß das Speicherschreiben darin besteht, temporäre Paketdaten in einem Speicherpuffer zu speichern, und bei der als Antwort auf einen Cache-Fehler, der dem Speicherschreiben entspricht, die Cache-Strategie für temporäre Daten aufweist: Zuweisen einer oder mehrerer Cache-Zeilen, die ausreichend Speicherraum zum Speichern der Paketdaten zur Verfügung stellen; Feststellen, ob alle oder ein Teil der Paketdaten eine gegebene Cache-Zeile füllen werden; und falls dies der Fall ist, Schreiben aller oder eines Teiles der Paketdaten in die Cache-Zeile; ansonsten Schreiben aller oder eines Teiles der Paketdaten in einen Teil der Cache-Zeile ohne das Modifizieren vorhandener Daten in einem Rest der Cache-Zeile.
  21. Netzwerk-Zeilenkarte nach Anspruch 20, bei der ein Speicherzugriffsbefehl einen Speicherlesebefehl aufweist, welcher einen Paketdaten-Modifizierer enthält, der identifiziert, daß das Speicherlesen darin besteht, temporäre Paketdaten aus einem Speicherpuffer in dem auf einem DRAM basierenden Speicher zu lesen, wobei als Antwort auf einen Cache-Fehler, der dem Speicherlesen entspricht, die Cache-Strategie für temporäre Daten aufweist: Lesen der Paketdaten aus einem Speicherpuffer, ohne in dem Cache eine Cache-Zeile zum Zwischenspeichern der Paketdaten zuzuweisen.
  22. Netzwerk-Zeilenkarte nach Anspruch 20, weiter mit einem nicht flüchtigen Speicher, der betrieblich mit der PCB gekoppelt ist und Befehle umfaßt, die auf dem Prozessorkern ausgeführt werden, um Arbeitsschritte auszuführen, die aufweisen: Ausführen einer anfänglichen Verarbeitung eines Paketes, das an einem Eingabe/Ausgabe-Port der Rückwandplatinen-Schnittstelle empfangen worden ist, wobei das anfängliche Verarbeiten umfaßt: Zuweisen eines Speicherpuffers in dem auf einem DRAM basierenden Speicher; Zuweisen einer oder mehrerer Cache-Zeilen, die dem Speicherpuffer entsprechen; Schreiben von Paketdaten in die eine oder die mehreren Cache-Zeilen; Schreiben von Paket-Metadaten in den auf einem SRAM basierenden Speicher; Durchführen von Paketklassifizierarbeitsschritten, wobei wenigstens die Paket-Metadaten oder die Paketdaten verwendet werden, um das Paket einem Strom zuzuweisen; Lesen von Paketdaten aus der einen oder den mehreren Cache-Zeilen; Senden der Paketdaten über die Medien-Switching Fabric-Schnittstelle in ein Switching Fabric an einen Ziel-Bestimmungsort, der dem Strom entspricht; und Freigeben der DRAM-Puffer und der einen oder der mehreren Cache-Zeilen, wobei wenigstens ein Teil der Speicherzugriffe Speicherlese- und Speicherschreibbefehle verwenden, die einen Paketdaten-Modifizierer umfassen, welcher identifiziert, daß der Speicherzugriff temporären Paketdaten entspricht, und entsprechende Cache-Strategien für solche Speicherzugriffsbefehle implementiert werden.
DE112006002565T 2005-09-30 2006-09-26 Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher Ceased DE112006002565T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/241,538 US7437510B2 (en) 2005-09-30 2005-09-30 Instruction-assisted cache management for efficient use of cache and memory
US11/241,538 2005-09-30
PCT/US2006/037631 WO2007041145A1 (en) 2005-09-30 2006-09-26 Instruction-assisted cache management for efficient use of cache and memory

Publications (1)

Publication Number Publication Date
DE112006002565T5 true DE112006002565T5 (de) 2008-08-14

Family

ID=37487701

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006002565T Ceased DE112006002565T5 (de) 2005-09-30 2006-09-26 Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher

Country Status (4)

Country Link
US (1) US7437510B2 (de)
CN (1) CN1991792B (de)
DE (1) DE112006002565T5 (de)
WO (1) WO2007041145A1 (de)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8279886B2 (en) * 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
US7716423B2 (en) * 2006-02-07 2010-05-11 International Business Machines Corporation Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes
US20080052270A1 (en) * 2006-08-23 2008-02-28 Telefonaktiebolaget Lm Ericsson (Publ) Hash table structure and search method
US20080052397A1 (en) * 2006-08-24 2008-02-28 Ramanathan Venkataraman Future locking of resources
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
WO2008070191A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8578127B2 (en) 2009-09-09 2013-11-05 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8126255B2 (en) * 2007-09-20 2012-02-28 Kla-Tencor Corp. Systems and methods for creating persistent data for a wafer and for using persistent data for inspection-related functions
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
JP2009151457A (ja) * 2007-12-19 2009-07-09 Nec Corp キャッシュメモリシステムおよびキャッシュメモリ制御方法
JP2009157608A (ja) * 2007-12-26 2009-07-16 Nec Corp キャッシュメモリシステムおよびキャッシュメモリ制御方法
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
CN101567875B (zh) * 2008-04-25 2012-08-29 华为技术有限公司 一种实现缓存策略控制的方法、系统及装置
US7543109B1 (en) 2008-05-16 2009-06-02 International Business Machines Corporation System and method for caching data in a blade server complex
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8281295B2 (en) * 2008-05-23 2012-10-02 International Business Machines Corporation Computer analysis and runtime coherency checking
US8285670B2 (en) 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
EP2441005A2 (de) 2009-06-09 2012-04-18 Martin Vorbach System und verfahren für einen zwischenspeicher in einem multikernprozessor
KR101717644B1 (ko) 2009-09-08 2017-03-27 샌디스크 테크놀로지스 엘엘씨 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9639479B2 (en) * 2009-09-23 2017-05-02 Nvidia Corporation Instructions for managing a parallel cache hierarchy
US8200902B2 (en) * 2010-06-10 2012-06-12 Arm Limited Cache device for coupling to a memory device and a method of operation of such a cache device
US9009406B2 (en) 2010-12-10 2015-04-14 International Business Machines Corporation Determining server write activity levels to use to adjust write cache size
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US20120191896A1 (en) * 2011-01-25 2012-07-26 Zhen Fang Circuitry to select, at least in part, at least one memory
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8806153B2 (en) 2011-02-22 2014-08-12 International Business Machines Corporation Partial line cache write injector for direct memory access write
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
CN103019954A (zh) * 2011-09-22 2013-04-03 瑞昱半导体股份有限公司 高速缓存装置与高速缓存数据存取方法
CN107368433B (zh) * 2011-12-20 2021-06-22 英特尔公司 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US8918474B2 (en) * 2012-03-26 2014-12-23 International Business Machines Corporation Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US9035961B2 (en) * 2012-09-11 2015-05-19 Apple Inc. Display pipe alternate cache hint
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US9218286B2 (en) 2012-09-27 2015-12-22 Apple Inc. System cache with partial write valid states
US20140160954A1 (en) * 2012-12-12 2014-06-12 International Business Machines Corporation Host ethernet adapter frame forwarding
US9058282B2 (en) 2012-12-31 2015-06-16 Intel Corporation Dynamic cache write policy
US9222895B2 (en) 2013-02-25 2015-12-29 Kla-Tencor Corp. Generalized virtual inspector
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US9367470B2 (en) * 2013-11-01 2016-06-14 Cisco Technology, Inc. Bounded cache searches
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US20150261681A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Host bridge with cache hints
US9715455B1 (en) 2014-05-05 2017-07-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Hint selection of a cache policy
US9471955B2 (en) 2014-06-19 2016-10-18 Apple Inc. Multiple display pipelines driving a divided display
US9816939B2 (en) 2014-07-22 2017-11-14 Kla-Tencor Corp. Virtual inspection systems with multiple modes
CN104133642B (zh) * 2014-07-29 2018-07-13 浙江宇视科技有限公司 SSD Cache填充方法及装置
US9405706B2 (en) * 2014-09-25 2016-08-02 Intel Corporation Instruction and logic for adaptive dataset priorities in processor caches
US10833954B2 (en) * 2014-11-19 2020-11-10 Battelle Memorial Institute Extracting dependencies between network assets using deep learning
US9535850B1 (en) * 2015-01-28 2017-01-03 Google Inc. System and method for efficient DMA transfers
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
WO2016178658A1 (en) 2015-05-01 2016-11-10 Hewlett Packard Enterprise Development Lp Throttled data memory access
US9832277B2 (en) * 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
US10025956B2 (en) * 2015-12-18 2018-07-17 Intel Corporation Techniques to compress cryptographic metadata for memory encryption
US20170255569A1 (en) * 2016-03-01 2017-09-07 Qualcomm Incorporated Write-allocation for a cache based on execute permissions
US10156887B2 (en) * 2016-09-29 2018-12-18 Qualcomm Incorporated Cache memory clock generation circuits for reducing power consumption and read errors in cache memory
US10445261B2 (en) * 2016-12-30 2019-10-15 Intel Corporation System memory having point-to-point link that transports compressed traffic
US10719448B2 (en) 2017-06-13 2020-07-21 Alibaba Group Holding Limited Cache devices with configurable access policies and control methods thereof
KR20190085359A (ko) * 2018-01-10 2019-07-18 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11442628B2 (en) * 2018-07-31 2022-09-13 SK Hynix Inc. Apparatus and method for engaging a plurality of memory systems with each other
KR20200059493A (ko) * 2018-11-21 2020-05-29 에스케이하이닉스 주식회사 데이터 처리 시스템
CN111190644A (zh) * 2019-12-27 2020-05-22 核芯互联科技(青岛)有限公司 一种嵌入式Flash片上读指令硬件加速方法和装置
US11368402B1 (en) * 2020-12-26 2022-06-21 Arteris, Inc. System and method for using soft lock with virtual channels in a network-on-chip (NoC)
CN112953853A (zh) * 2021-02-05 2021-06-11 井芯微电子技术(天津)有限公司 共享缓存系统及方法、电子设备及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
US6243791B1 (en) * 1998-08-13 2001-06-05 Hewlett-Packard Company Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
GB2385174B (en) * 1999-01-19 2003-11-26 Advanced Risc Mach Ltd Memory control within data processing systems
US20020078300A1 (en) * 1999-08-16 2002-06-20 Chanda Dharap Semantics-based caching policy to minimize latency
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
US7017008B2 (en) * 2000-12-29 2006-03-21 Intel Corporation Method and apparatus for optimizing data streaming in a computer system utilizing random access memory in a system logic device
US7082502B2 (en) * 2001-05-15 2006-07-25 Cloudshield Technologies, Inc. Apparatus and method for interfacing with a high speed bi-directional network using a shared memory to store packet data
EP1387276A3 (de) 2002-07-31 2004-03-31 Texas Instruments Incorporated Verfahren und Vorrichtung zur Speicherverwaltung
EP1387278A3 (de) 2002-07-31 2005-03-23 Texas Instruments Inc. Verfahren und Vorrichtungen zur Speicherverwaltung
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US7440469B2 (en) * 2003-10-14 2008-10-21 Broadcom Corporation Descriptor write back delay mechanism to improve performance
US7430638B2 (en) * 2004-06-14 2008-09-30 Mossman Holdings Llc Adaptive input / output compressed system and data cache and system using same
US20060101208A1 (en) * 2004-11-09 2006-05-11 Intel Corporation Method and apparatus for handling non-temporal memory accesses in a cache
US7664879B2 (en) * 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element

Also Published As

Publication number Publication date
CN1991792B (zh) 2010-09-01
CN1991792A (zh) 2007-07-04
WO2007041145A1 (en) 2007-04-12
US7437510B2 (en) 2008-10-14
US20070079073A1 (en) 2007-04-05

Similar Documents

Publication Publication Date Title
DE112006002565T5 (de) Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE60211076T2 (de) Datenübertragung zwischen virtuellen Adressen
DE112017001027B4 (de) Seitenfehlerbehebung
DE10232926B4 (de) Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection