DE112017001654T5 - Technologien für regionsgerichtete cacheverwaltung - Google Patents

Technologien für regionsgerichtete cacheverwaltung Download PDF

Info

Publication number
DE112017001654T5
DE112017001654T5 DE112017001654.1T DE112017001654T DE112017001654T5 DE 112017001654 T5 DE112017001654 T5 DE 112017001654T5 DE 112017001654 T DE112017001654 T DE 112017001654T DE 112017001654 T5 DE112017001654 T5 DE 112017001654T5
Authority
DE
Germany
Prior art keywords
cache
region
computing device
network computing
memory
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.)
Pending
Application number
DE112017001654.1T
Other languages
English (en)
Inventor
Vadim Sukhomlinov
Kshitij A. Doshi
Namakkal N. Venkatesan
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 DE112017001654T5 publication Critical patent/DE112017001654T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Abstract

Technologien für regionsbasierte Cacheverwaltung schließt eine Netzwerkrechenvorrichtung ein. Die Netzwerkrechenvorrichtung ist dazu ausgelegt, einen zugeteilten Teil Hauptspeicher der Netzwerkrechenvorrichtung in mehrere Speicherregionen zu teilen, jede Speicherregion aufweisend einen Cacheblock, der mehrere Cachezeilen eines Cachespeichers des Prozessors einschließt. Die Netzwerkrechenvorrichtung ist ferner dazu ausgelegt, festzustellen, ob eine für eine Räumung aus dem Cachespeicher ausgewählte Cachezeile einer der mehreren Speicherregionen entspricht und, wenn ja, einen mit der entsprechenden Speicherregion verbundenen dynamisch anpassbaren Bias-Wert (d. h. eine fraktionale Wahrscheinlichkeit) abzurufen. Zusätzlich ist die Netzwerkrechenvorrichtung dazu ausgelegt, einen Bias-Vergleichswert für die entsprechende Speicherregion zu erzeugen, den Bias-Wert der entsprechenden Speicherregion und den für die entsprechende Speicherregion erzeugten Bias-Vergleichswert zu vergleichen und festzustellen, ob die Cachezeile basierend auf dem Vergleich geräumt werden soll. Andere Ausführungsformen werden hierin beschrieben.

Description

  • QUERVERWEIS AUF VERBUNDENE US-PATENTANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität gegenüber der US-Gebrauchsmusteranmeldung Seriennr. 15/087,162 mit dem Titel „TECHNOLOGIES FOR REGION-BIASED CHACE MANAGEMENT“, die am 31. März 2016 eingereicht wurde.
  • HINTERGRUND
  • Netzwerkbetreiber und Kommunikationsdienstanbieter verlassen sich in der Regel auf unterschiedliche Netzwerkvisualisierungstechnologien, um komplexe große Datenzentren zu verwalten, die eine Vielzahl von Netzwerkrechenvorrichtungen (z. B. Server, Switches, Router usw.) einschließen können, um Netzwerkverkehr durch ein Datenzentrum zu verarbeiten. Zum Beispiel können sich Netzwerkbetreiber und Dienstanbieternetzwerke auf Netzwerkfunktionsvirtualisierungs(Network Function Virtualization, NFV)-Einsätze verlassen, um Netzwerkdienste einzusetzen(z. B. Firewalldienste, Netzwerkadressübersetzungs(Network Address Translation, NAT)-Dienste, Deep-Packet-Inspection-(DPI)-Dienste, Evolved-Packet-Core(EPC)-Dienste, Mobilitätsverwaltungseinheit(Mobility Management Entity, MME)-Dienste, Paketdatennetzwerkgateway(Packet Data Network Gateway, PGW)-Dienste, Serving-Gateway(SGW)-Dienste, Abrechnungsdienste, Übertragungssteuerungsprotokoll(Transmission Control Protocol, TCP)-Optimierungsdienste usw.) Zum Bereitstellen von Skalierbarkeit zum Erfüllen von Netzwerkverkehrsverarbeitungsanforderungen und Reduzieren von Betriebskosten werden in der Regel virtuelle Netzwerkfunktionen (Virtual Network Functions, VNFs) eingesetzt, um bestimmte Netzwerkfunktionsoperationen zu handhaben Derartige Operationen werden in der Regel auf einer oder mehreren virtuellen Maschinen (Virtual Machines, VMs) in einer virtualisierten Umgebung über der Hardwarenetzwerkinfrastruktur betrieben.
  • Zwischen derartigen VNFs auftretende Datenströme (d. h. Inter-VNF-Ströme) werden üblicherweise durch Inter-VM-Shared Memory (IVSHMEM) optimiert, das sich auf Cachespeicher verlässt, um kritische Geschwindigkeitsvorteile bereitzustellen. Bei der Konsolidierung von mehreren VMs kann die Latenz jedoch unvorhersagbar variieren, was bei NFV-Einsätzen üblich ist. Demgemäß erfordert die Entwicklung von Schnittstellenanwendungen in der Regel eine sorgfältige Gestaltung, um sicherzustellen, dass kritische Zugriffe cacheunterstützt werden. Bei Ausführungsformen, bei denen mehrere VNFs eingesetzt werden, und jede VNF sich auf eine oder mehrere VMs verlässt, die gemeinsam denselben Cache nutzen, kann ein Minimieren der Auswirkung einer VM auf die anderen VMs jedoch schwer zu erreichen sein.
  • Figurenliste
  • Die hierin beschriebenen Konzepte sind in den begleitenden Figuren lediglich beispielhaft und nicht einschränkend veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Darstellung sind Elemente, die in den Figuren veranschaulicht sind, nicht notwendigerweise maßstabsgetreu gezeichnet. Wo es als angebracht angesehen wurde, werden Bezugszeichen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
    • 1 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform eines Systems für regionsbasierte Cacheverwaltung;
    • 2 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform der Netzwerkrechenvorrichtung des Systems von 1;
    • 3 ist ein vereinfachtes Blockdiagramm von mindestens einer Ausführungsform einer Umgebung, die von der Netzwerkrechenvorrichtung von 2 erstellt werden kann;
    • 4 ist ein vereinfachtes Blockdiagramm einer anderen Ausführungsform einer Umgebung, die von der Netzwerkrechenvorrichtung von 2 erstellt werden kann;
    • 5 ist ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Auslegen von regionsbasierten Cacheblöcken, das von der Netzwerkrechenvorrichtung von 2 ausgeführt werden kann; und
    • die 6 und 7 sind ein vereinfachtes Flussdiagramm von mindestens einer Ausführungsform eines Verfahrens zum Ausführen einer regionsbasierten Cachezeilenräumung, das von der Netzwerkrechenvorrichtung von 2 ausgeführt werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Obwohl die Konzepte der vorliegenden Offenbarung für vielfältige Modifikationen und alternative Formen geeignet sind, wurden spezifische Ausführungsformen davon in den Zeichnungen beispielhaft gezeigt und werden hier ausführlich beschrieben. Es versteht sich jedoch, dass keine Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die bestimmten offenbarten Formen einzuschränken; sondern es besteht im Gegenteil die Absicht, alle Modifikationen, Äquivalente und Alternativen gemäß der vorliegenden Offenbarung und den angehängten Ansprüchen abzudecken.
  • Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft einschließen kann, jede Ausführungsform dieses bestimmte Merkmal, diese bestimmte Struktur oder diese bestimmte Eigenschaft jedoch einschließen kann oder nicht unbedingt einschließt. Darüber hinaus beziehen sich derartige Formulierungen nicht unbedingt auf dieselbe Ausführungsform. Ferner, wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, wird außerdem unterstellt, dass es im Kenntnisbereich einer Fachperson liegt, ein derartiges Merkmal, eine derartige Struktur oder eine derartige Eigenschaft in Verbindung mit anderen Ausführungsformen zu bewirken, ob es nun explizit beschrieben ist oder nicht. Außerdem sollte anerkannt werden, dass in einer Liste eingeschlossene Einträge in der Form von „mindestens eines von A, B und C“ bedeuten können (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B, und C). Gleichermaßen können aufgelistete Einträge in der Form von„mindestens eines von A, B oder C“ bedeuten (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C).
  • Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können auch als Anweisungen implementiert sein, die von einem oder mehreren vorübergehenden oder nicht vorübergehenden maschinenlesbaren (z. B. computerlesbaren) Speichermedien (z. B. Arbeitsspeicher, Datenspeicher usw.) getragen werden oder auf diesen gespeichert sind, die von einem oder mehreren Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speichermedium kann als eine beliebige Speichervorrichtung, ein beliebiger Mechanismus oder eine andere beliebige physische Struktur zum Speichern oder Übertragen von Informationen in einer von einer Maschine lesbaren Form (z. B. einem flüchtigen oder nichtflüchtigen Speicher, einem Datenträger oder einer anderen Medienvorrichtung) ausgeführt sein.
  • In den Zeichnungen sind einige strukturelle oder methodische Merkmale möglicherweise in speziellen Anordnungen und/oder Abfolgen gezeigt. Es sollte jedoch anerkannt werden, dass derartige spezielle Anordnungen und/oder Abfolgen möglicherweise nicht erforderlich sind. Vielmehr können, in einigen Ausführungsformen, derartige Merkmale in einer anderen Weise und/oder in einer anderen Reihenfolge angeordnet als in den veranschaulichenden Figuren gezeigt. Zusätzlich soll die Einschließung eines strukturellen oder methodischen Merkmals in einer bestimmten Figur nicht bedeuten, dass ein derartiges Merkmal in allen Ausführungsformen erforderlich ist, und kann, in einigen Ausführungsformen, nicht eingeschlossen oder mit anderen Merkmalen kombiniert sein.
  • Nun unter Bezugnahme auf 1 schließt, in einer veranschaulichenden Ausführungsform, ein System 100 für regionsbasierte Cacheverwaltung einen Quellendpunktknoten 102 ein, der über eine Netzwerkrechenvorrichtung 106 eines Netzwerks 104 kommunikativ an einen Zielendpunktknoten 108 gekoppelt ist. Die Netzwerkrechenvorrichtung 106 ist dazu ausgelegt, verschiedene Operationen (z. B. Dienste) des Netzwerkverkehrs (d. h. Netzwerkpaketen, Nachrichten usw.) durchzuführen, die an der Netzwerkrechenvorrichtung 106 empfangen werden. Derartiger Netzwerkverkehr kann von dem Quellendpunktknoten 102, dem Zielendpunktknoten 108 oder einer anderen Netzwerkrechenvorrichtung 106 empfangen werden. Demgemäß, während nur eine einzelne Netzwerkrechenvorrichtung 106 in dem Netzwerk 104 des veranschaulichenden Systems 100 gezeigt ist, sollte anerkannt werden, dass das Netzwerk 104 mehr als eine Netzwerkrechenvorrichtung 106 einschließen kann, die in verschiedenen Architekturen gekoppelt und ausgelegt sein können.
  • Veranschaulichend ist die Netzwerkrechenvorrichtung 106 dazu ausgelegt, ein Netzwerkpaket zu verarbeiten, um festzustellen, ob ein Netzwerkpaket fallen gelassen oder weitergeleitet werden soll. Zum Verarbeiten des Netzwerkpakets kann eine beliebige Anzahl von Diensten, oder Netzwerkfunktionen, an dem Netzwerkpaket ausgeführt werden, wie etwa Firewalldienste, Netzwerkadressübersetzungs(NAT)-Dienste, Deep-Packet-Inspection(DPI)-Dienste, Evolved-Packet-Core(EPC)-Dienste, Mobilitätsverwaltungseinheit(MME)-Dienste, Paketdatennetzwerkgateway(PGW)-Dienste, Serving-Gateway(SGW)-Dienste, Abrechnungsdienste, Übertragungssteuerungsprotokoll(TCP)-Optimierungsdienste usw. In einigen Ausführungsformen können die Netzwerkfunktionen durch Verwenden einer oder mehrerer virtueller Maschinen (VMs) (z. B. in einer Dienstfunktionskette), nativer Anwendungen oder Anwendungen, die in Containern (z. B. Docker) laufen, betrieben werden. Zum Beispiel kann die Netzwerkvorrichtung 106 dazu ausgelegt sein, die Dienste über eine Anzahl von virtuellen Netzwerkfunktionen (VNFs) durch Verwenden einer oder mehrerer VMs zu betreiben. Von daher sollte anerkannt werden, dass in derartigen Ausführungsformen die Netzwerkrechenvorrichtung 106 dazu ausgelegt ist, virtuelle Repräsentationen von physischen Komponenten der Netzwerkrechenvorrichtung 106 virtualisierten Komponenten der verschiedenen VMs und/oder Anwendungen zuzuordnen, so dass ein Inter-VNF/Anwendungsdatenstrom zwischen VMs (d. h. zwischen VMs in einer Dienstfunktionskette) verwaltet werden kann.
  • Anders als derzeitige Technologien, die auf Cachespeichersteuerung und Prozessorkernzuteilung (z. B. Cache Allocation Technology, CAT) ausgerichtet sind, die Cache für VMs und/oder Prozessen priorisieren, und gleichermaßen anders als derzeitige Technologien, die auf die Eingabe/Ausgabe eines Datenstroms in und aus dem Prozessorcache ausgerichtet sind (z. B. Data Direct I/O (DDIO)), die Cache basierend auf Vorrichtungen (z. B. Peripheral Component Interconnect Express (PCI-e)-Netzwerkschnittstellensteuerungen (Network Interface Controllers, NICs), Festkörperlaufwerken (Solid State Drives, SSDs usw.) priorisieren, priorisiert und personalisiert die von der Netzwerkrechenvorrichtung 106 eingesetzte regionsbasierte Cacheverwaltung sowohl Caching als auch Cachekohärenz auf der Grundlage von physischen Speicherbereichen.
  • In Verwendung passt die Netzwerkrechenvorrichtung 106 eine vorhandene Cachestrategie für einen definierten Speicherpuffer an, der einem bestimmten Teil von physischem Speicher entspricht, um die Verwendung eines regionsbasierten Puffers pro Anwendung zu favorisieren, um häufig verwendete Daten in einer bestimmten, mit dem entsprechenden Speicherpuffer verbundenen, Cacheregion zu erhalten. Um dies zu tun, ist die Netzwerkrechenvorrichtung 106 dazu ausgelegt, einen Teil von physischem Speicher zuzuteilen und einen Block von Cachespeicher mit dem zugeteilten Teil von physischem Speicher oder einem mit diesem verbundenen Speicherpuffer zu verbinden oder anderweitig zuzuordnen. Die Netzwerkrechenvorrichtung 106 teilt den zugeteilten physischen Speicher dann in mehrere Regionen. Von daher wird der Block des entsprechenden Cachespeichers ebenfalls in entsprechende Regionen (d. h. Cacheregionen) geteilt, wie es etwa durch Zuordnen jeder Cacheregion zu dem betreffenden geteilten Teil des zugeteilten physischen Speichers durchgeführt werden kann. Die Netzwerkrechenvorrichtung 106 gibt ferner der betreffenden Hardware diejenigen Bereiche der geteilten Teile von physischem Speicher an, die von einer differenzierten Cachebehandlung, wie der hierin beschriebenen regionsbasierten Cacheverwaltungsbehandlung, profitieren können. Demgemäß können nur Daten von einem verbundenen Teil von physischem Speicher, und dem mit diesem verbundenen Speicherpuffer, in einem bestimmten Block eines Cachespeichers, oder einer Cacheregion, gespeichert werden.
  • Zum Beispiel bei einer Ausführungsform, bei der die Netzwerkrechenvorrichtung 106 eine Cachezeile räumen soll, um neue Daten aus einem Speicher zu laden, die Netzwerkrechenvorrichtung 106 jedoch festgestellt hat, das einer Speicheradresse, die mit einer der regionszugeordneten Cacheregionen verbunden ist, kein Speicher zugeordnet ist, kann die Netzwerkrechenvorrichtung 106 nur einen nicht verbundenen Teil von Cache (d. h. gemeinsamen Cache) verwenden, um darin die Daten zu speichern. Mit anderen Worten, wenn die Netzwerkrechenvorrichtung 106 feststellt, dass Daten, die aus einem Speicher geladen werden sollen, nicht mit einem der regionsbasierten zugeordneten Teile von Cache verbunden sind, kann die Netzwerkrechenvorrichtung 106 nur die Daten aus gemeinsamem Cache (d. h. einem nichtregionsbasierten zugeordneten Teil von Cache) in eine Cachezeile laden.
  • Alternativ, wenn die Netzwerkrechenvorrichtung 106 feststellt, dass Daten, die aus einem Speicher geladen werden sollen, mit einem der regionsbasierten zugeordneten Teile von Cache verbunden sind, kann die Netzwerkrechenvorrichtung 106 zwischen regionszugeordneten Cacheregionen und gemeinsamem Cache wählen. Wenn die Netzwerkrechenvorrichtung 106 auswählt, die Daten in gemeinsamen Cache zu laden, ist die Netzwerkrechenvorrichtung 106 dazu ausgelegt, in dem Fall, dass die Cachezeile des gemeinsamen Caches geräumt oder anderweitig bewegt werden soll, die nicht-gerichtete Räumungsstrategie zu verwenden. Alternativ, wenn die Netzwerkrechenvorrichtung 106 auswählt, die Daten in einen regionsbasierten zugeordneten Teil von Cache zu laden, ist die Netzwerkrechenvorrichtung 106 dazu ausgelegt, in dem Fall, dass die Cachezeile des gemeinsamen Caches geräumt oder anderweitig bewegt werden soll, die gerichtete Räumungsstrategie zu verwenden.
  • Um die Regionen des physischen Speichers zu identifizieren, die von einer differenzierten Cachebehandlung profitieren können, weist die Netzwerkrechenvorrichtung 106 jeder entsprechenden Cacheblockregion einen Regionsindikator und einen oder mehrere Konfigurationsparameter zu, die auf einer Cachezuteilung von einem oder mehreren zusammenhängenden physischen Speicherbereichen basieren können. Der Regionsindikator kann als eine beliebige Art von Datenstruktur ausgeführt sein, die verwendet werden kann, um eine entsprechende Region von zugeteiltem Speicher zu identifizieren. In einem veranschaulichenden Beispiel teilt die Netzwerkrechenvorrichtung 106 den zugeteilten Teil von physischem Speicher in eine erste Gruppe, die zum gemeinsamen Nutzen von Daten zwischen VM-Instanzen in einer VNF oder zwischen VNFs verwendet wird (z. B. eine gemeinsam genutzte Region), und eine zweite Gruppe, die für vorübergehende Datenkommunikationen zwischen VM-Produzenten- und Verbraucherinstanzen in einer VNF oder zwischen VNFs verwendet wird (z. B. eine Relaisregion).
  • Gleichermaßen teilt die Netzwerkrechenvorrichtung 106 die Cacheblöcke, die den entsprechenden physischen Speicherregionen zugeordneten sind. In solch einer Ausführungsform kann die Netzwerkrechenvorrichtung 106 einen architektonisch freigelegten Mechanismus verwenden, um anzugeben, welche Cacheblockregion welcher Art von Daten entspricht (d. h. welche Art von Daten welcher Region entspricht). Zum Beispiel kann der ersten Gruppe ein Indikator für eine gemeinsam genutzte Region zugewiesen werden, und der zweiten Gruppe kann ein Indikator für eine Relaisregion zugewiesen werden. Demgemäß kann der Cacheblockregion, die der gemeinsam genutzten Region entspricht (d. h. der ersten Gruppe), der Indikator für eine gemeinsam genutzte Region zugewiesen werden, und gleichermaßen kann der Cacheblockregion, die der Relaisregion entspricht (d. h. der zweiten Gruppe) der Indikator für eine Relaisregion zugewiesen werden.
  • Zur Weiterführung des veranschaulichenden Beispiels kann die Netzwerkrechenvorrichtung 106 zusätzlich jeder Cacheblockregion (d.h. den mit jeder Cacheblockregion verbundenen Cachezeilen) einen oder mehrere Konfigurationsparameter zuweisen. Die Konfigurationsparameter können beliebige Daten einschließen, die eine Cacheblockregion definieren oder anderweitig kennzeichnen, wie etwa die Regionsindikatoren, Speicherbereichsadressen, Speicherbereichsversätze (z. B. einen Kopfversatz, einen Schwanzversatz usw.), sowie beliebige andere mit der Cacheblockregion verbundene Eigenschaften. Zum Beispiel können die Konfigurationsparameter einen Kopfindikator und einen Schwanzindikator (z. B. gespeichert als Versätze in entsprechenden MSRs (Model-Specific Registers, modellspezifischen Registern)) in Ausführungsformen einschließen, bei denen eine bestimmte Region (z. B. die gemeinsam genutzte Region und/oder die Relaisregion) durch Hardware und Software der Netzwerkrechenvorrichtung 106 behandelt wird, als ob sie ein Ringpuffer wäre.
  • In einigen Ausführungsformen können die Konfigurationsparameter (z. B. die Kopf- und Schwanzindikatoren) als Versätze in entsprechenden MSRs gespeichert sein. Die Cacheeigenschaften schließen zusätzlich einen Bias-Wert ein (d. h. einen Wert zwischen null und eins), der einer fraktionalen Wahrscheinlichkeit entspricht, die verwendet werden kann, um festzustellen, ob eine bestimmte Cachezeile, die zur Räumung ausgewählt wurde, geräumt werden soll. Demgemäß kann der Bias-Wert, der einer Region des Cacheblocks entspricht, mit einem probabilistischen Resultat verglichen werden, um festzustellen, ob die Cachezeile geräumt werden soll (d. h. die Cachezeile geräumt oder eine andere Cachezeile für eine Räumung ausgewählt werden soll). Es sollte anerkannt werden, dass das probabilistische Resultat mit jeder bekannten probabilistisch bestimmbaren Technik festgestellt werden kann, wie etwa einer gerichteten Münzwurfsimulation oder einer andere Art von Auswahlrandomisierungstechnik.
  • Die Netzwerkberechnungsvorrichtung 106 kann als eine beliebige Art von Netzwerkverkehrsverarbeitungsvorrichtung ausgeführt sein, die in der Lage ist, die hierin beschriebenen Funktionen durchzuführen, wie etwa, unter anderem, ein Server (z. B. eigenständig, schrankmontiert, Blade usw.), eine Netzwerkeinrichtung (z. B. physisch oder virtuell), ein Switch (z. B. schrankmontiert, eigenständig, vollständig verwaltet, teilverwaltet, vollduplex- und/oder halbduplexkommunikationsmodusfähig usw.), ein Router, eine Interneteinrichtung, ein verteiltes Rechensystem, ein prozessorbasiertes System und/oder ein Mehrprozessorsystem. Wie in 2 gezeigt, schließt die veranschaulichende Netzwerkrechenvorrichtung 106 einen Prozessor 202, ein Eingabe/Ausgabe(E/A)-Subsystem 208, einen Hauptspeicher 210, eine Datenspeichervorrichtung 212 und eine Kommunikationsschaltungsanordnung 214 ein. Natürlich kann die Netzwerkrechenvorrichtung 106 andere oder zusätzliche Komponenten einschließen, wie etwa diejenigen, die gewöhnlich, in anderen Ausführungsformen, in einer Rechenvorrichtung zu finden sind. Zusätzlich können in einigen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in einer anderen Komponente integriert sein oder anderweitig einen Teil davon bilden. Zum Beispiel kann, in einigen Ausführungsformen, der Hauptspeicher 210, oder Teile davon, in dem Prozessor 202 integriert sein sein. Ferner können, in einigen Ausführungsformen, eine oder mehrere der veranschaulichenden Komponenten aus der Netzwerkrechenvorrichtung 106 ausgelassen sein.
  • Der Prozessor 202 kann als eine beliebige Art von Prozessor ausgeführt sein, der in der Lage ist, die hierin beschriebenen Funktionen durchzuführen, wie etwa, jedoch nicht beschränkt auf, ein einzelner physischer Mehrkernprozessorchip oder -paket. Der veranschaulichende Prozessor 202 schließt eine Anzahl von Prozessorkernen 204 ein, jeder als eine unabhängige logische Ausführungseinheit ausgeführt, die in der Lage ist, programmierte Anweisungen auszuführen. Es sollte anerkannt werden, dass, in einigen Ausführungsformen der Netzwerkrechenvorrichtung 106 (z.B. Supercomputer), die Netzwerkrechenvorrichtung 106 Tausende von Prozessorkernen 204 einschließen kann. Der Prozessor 202 kann mit einem physischen Verbinder, oder Sockel, auf einer Hauptplatine (nicht gezeigt) der Netzwerkrechenvorrichtung 106 verbunden sein, der dazu ausgelegt ist, ein einzelnes physisches Prozessorpaket (d. h. ein integrierter physischer Mehrkernschaltkreis) aufzunehmen.
  • Der veranschaulichende Prozessor 202 schließt zusätzlich einen Cachespeicher 206 ein, der als eine beliebige Art von Cache ausgeführt sein kann, auf den der Prozessor 202 schneller als der Hauptspeicher 210 zugreifen kann, wie etwa ein On-Die-Cache oder On-Processor-Cache. In anderen Ausführungsformen kann der Cachespeicher 206 ein Off-Die-Cache sein, sich jedoch auf demselben Ein-Chip-System (System-on-a-Chip, SoC) wie der Prozessor 202 befinden. Es sollte anerkannt werden, dass, in einigen Ausführungsformen, der Cachespeicher 206 eine Multi-Level-Architektur aufweisen kann. Mit anderen Worten, in derartigen Multi-Level-Architektur-Ausführungsformen kann der Cachespeicher 206 als, zum Beispiel, ein L1-, L2- oder L3-Cache ausgeführt sein. Es sollte ferner anerkannt werden, dass, in einigen Ausführungsformen, die Netzwerkrechenvorrichtung 106 mehr als einen Prozessor 202 einschließen kann. Mit anderen Worten, in derartigen Ausführungsformen kann die Netzwerkrechenvorrichtung 106 mehr als ein physisches Prozessorpaket einschließen, von denen jedes mit einer Hauptplatine (nicht gezeigt) der Netzwerkrechenvorrichtung 106 über einen individuellen Sockel verbunden sein kann, von denen jeder kommunikativ an einen oder mehrere unabhängige Hardwarespeicherplätze gekoppelt sein kann.
  • Der Hauptspeicher 210 ist kommunikativ an den Prozessor 202 gekoppelt über das E/A-Subsystem 208, das als Schaltungsanordnung und/oder Komponenten ausgeführt sein kann, um Eingabe-/Ausgabe-Operationen mit dem Prozessor 202, dem Hauptspeicher 210 und anderen Komponenten der Netzwerkrechenvorrichtung 106 zu erleichtern. Zum Beispiel kann das E/A-Subsystem 208 ausgeführt sein als, oder anderweitig einschließen, Speichersteuerungshubs, Eingabe-/Ausgabesteuerungshubs, Firmware-Vorrichtungen, Kommunikationsverbindungen (d. h. Punkt-zu-Punkt-Verbindungen, Bus-Verbindungen, Drähte, Kabel, Lichtleiter, Spuren auf gedruckten Leiterplatten usw.) und/oder andere Komponenten und Subsysteme, um die Eingabe-/Ausgabe-Operationen zu erleichtern. In einigen Ausführungsformen kann das E/A-Subsystem 208 einen Teil eines Ein-Chip-Systems (SoC) bilden und zusammen mit dem Prozessor 202, dem Hauptspeicher 210 und anderen Komponenten der Netzwerkrechenvorrichtung 106 auf einem einzelnen integrierten Schaltungschip integriert sein.
  • Die Datenspeicherungssvorrichtung 212 kann als eine beliebige Art von Vorrichtung oder Vorrichtungen ausgeführt sein, die für die Kurz- oder Langzeitspeicherung von Daten ausgelegt sind, wie etwa, zum Beispiel, Speichervorrichtungen und -schaltkreise, Speicherkarten, Festplattenlaufwerke, Solid-State-Laufwerke oder andere Datenspeichervorrichtungen. Es sollte anerkannt werden, dass die Datenspeichervorrichtung 212 und/oder der Hauptspeicher 210 (z. B. die computerlesbaren Speichermedien) verschiedene Daten speichern können wie hierin beschrieben, einschließlich Betriebssysteme, Anwendungen, Programme, Bibliotheken, Treiber, Anweisungen usw., die in der Lage sind, von einem Prozessor (z. B. dem Prozessor 202) der Netzwerkrechenvorrichtung 106 ausgeführt zu werden.
  • Die Kommunikationsschaltungsanordnung 214 kann als ein beliebiger Kommunikationsschaltkreis, eine Vorrichtung oder eine Ansammlung davon ausgeführt sein, die in der Lage ist, Kommunikationen zwischen der Netzwerkrechenvorrichtung 106 und anderen Rechenvorrichtungen (z. B. dem Quellendpunktknoten 102, dem Zielendpunktknoten 108, einer anderen Netzwerkrechenvorrichtung 106 usw.) über ein Netzwerk (z. B. das Netzwerk 104) zu ermöglichen. Die Kommunikationsschaltungsanordnung 214 kann dazu ausgelegt sein, eine beliebige oder mehrere Kommunikationstechnologien (z. B. drahtlose oder drahtgebundene Kommunikationstechnologien) und mit diesen verbundene Protokolle (e.g., Ethernet, Bluetooth®, Wi-Fi®, WiMAX, LTE, 5G, etc.) zu nutzen, um eine derartige Kommunikation zu bewirken.
  • Die veranschaulichende Kommunikationsschaltungsanordnung 214 schließt eine Netzwerkschnittstellensteuerung (Network Interface Controller, NIC) 216 ein. Die NIC 216 kann als eine oder mehrere Erweiterungskarten, Tochterkarten, Netzwerkschnittstellenkarten, Controller-Chips, Chipsätze oder andere Vorrichtungen ausgeführt sein, die von der Netzwerkrechenvorrichtung 106 verwendet werden können. Zum Beispiel kann, in einigen Ausführungsformen, die NIC 216 in den Prozessor 202 integriert sein, als eine über einen Erweiterungsbus (z. B. PCI Express) an das E/A-Subsystem 208 gekoppelte Erweiterungskarte ausgeführt sein, Teil eines SoC sein, das einen oder mehrere Prozessoren einschließt, oder in einem Multichip-Paket eingeschlossen sein, das ebenfalls einen oder mehrere Prozessoren enthält. Zusätzlich oder alternativ kann, in einigen Ausführungsformen, Funktionalität der NIC 216 auf der Kartenebene, Sockelebene, Chip-Ebene und/oder anderen Ebenen in eine oder mehrere Komponenten der Netzwerkrechenvorrichtung 106 integriert sein.
  • Erneut Bezug nehmend auf 1 können der Quellendpunktknoten 102 und/oder der Zielendpunktknoten 108 als eine beliebige Art von Rechen- oder Computervorrichtung ausgeführt sein, die in der Lage ist, die hierin beschriebenen Funktionen durchzuführen, einschließlich, unter anderem, einer tragbaren Rechenvorrichtung (z. B. Smartphone, Tablet, Laptop, Notebook, tragbar usw.), die mobile Hardware (z. B. Prozessor, Arbeitsspeicher, Datenspeicher, drahtlose Kommunikationsschaltungsanordnung usw.) und Software (z. B. ein Betriebssystem) einschließt, um eine mobile Architektur und Tragbarkeit, einen Computer, einen Server (z. B. eigenständig, schrankmontiert, Blade usw.), eine Netzwerkeinrichtung (z. B. physisch oder virtuell), eine Interneteinrichtung, ein verteiltes Rechensystem, ein prozessorbasiertes System und/oder ein Mehrprozessorsystem zu unterstützen. Demgemäß kann der Quellendpunktknoten 102 und/oder der Zielendpunktknoten 108 ähnliche Komponenten wie die in 2 der veranschaulichenden Netzwerkrechenvorrichtung beschriebenen einschließen, wie etwa einen Prozessor, ein E/A-Subsystem, einen Arbeitsspeicher, eine Datenspeichervorrichtung und/oder eine Kommunikationsschaltungsanordnung, die zur Übersichtlichkeit der Beschreibung nicht gezeigt sind. Von daher werden die Beschreibungen der ähnlichen Komponenten hierin nicht wiederholt, in dem Verständnis, dass die oben im Hinblick auf die Netzwerkrechenvorrichtung 106 gegebene Beschreibung der entsprechenden Komponenten gleichermaßen auf die entsprechenden Komponenten des Quellendpunktknotens 102 und/oder des Zielendpunktknotens 108 zutrifft.
  • Das Netzwerk 104 kann als eine beliebige Art von drahtgebundenem, oder drahtlosem Kommunikationsnetzwerk ausgeführt sein, einschließlich eines drahtlosen lokalen Netzwerks (Wireless Local Area Network, WLAN), eines drahtlosen persönlichen Netzwerks (Wireless Personal Area Network, WPAN), eines zellulären Netzwerks (z. B. Global System for Mobile Communications (GSM), Long-Term Evolution (LTE) usw.), eines Telefonienetzwerks, eines Netzwerks mit digitaler Teilnehmerleitung (Digital Subscriber Line, DSL), eines Kabelnetzwerks, eines lokalen Netzwerks (Local Area Network, LAN), eines Weitbereichsnetzwerks (Wide Area Network, WAN), eines weltweiten Netzwerks (z. B. des Internets) oder einer beliebigen Kombination davon. Es sollte anerkannt werden, dass, in derartigen Ausführungsformen, das Netzwerk 104 als ein zentralisiertes Netzwerk dienen kann und, in einigen Ausführungsformen, kommunikativ an ein anderes Netzwerk (z. B. das Internet) gekoppelt sein kann. Demgemäß kann das Netzwerk 104 eine Vielfalt von anderen Rechenvorrichtungen einschließen (z. B. virtuelle und physische Router, Switches, Netzwerkhubs, Server, Speichervorrichtungen, Datenverarbeitungsvorrichtungen usw.), wie sie benötigt werden, um eine Kommunikation zwischen dem Quellendpunktknoten 102 und dem Zielendpunktknoten 108 zu erleichtern, sowie zwischen den Netzwerkrechenvorrichtungen 106, die nicht gezeigt sind, um die Übersichtlichkeit der Beschreibung zu erhalten.
  • Es sollte ferner anerkannt werden, dass, in einigen Ausführungsformen, das Netzwerk 104 zusätzliche Rechenvorrichtungen einschließen kann, wie etwa eine Netzwerksteuerung (nicht gezeigt), die dazu ausgelegt sind, eine oder mehrere Strategien (z. B. Netzwerkstrategien, Cacheräumungsstrategien, Sicherheitsstrategien usw.) oder Anweisungen für die Netzwerkrechenvorrichtung 106 bereitzustellen. In derartigen Ausführungsformen kann die Netzwerksteuerung eine separate Rechenvorrichtung sein, die kommunikativ an die Netzwerkrechenvorrichtung 106 gekoppelt ist, die dazu ausgelegt ist, in einer softwaredefinierten Netzwerk(Software-Defined Network)-Umgebung (d. h. einem SDN-Controller) und/oder einer Netzwerkfunktionsvirtualisierungs(Network Funktion Virtualization, NFV)-Umgebung (d. h. einem NFV-Manager und Netzwerkorchestrator (Manager and Network Orchestrator, MANO) zu arbeiten.
  • Nunmehr Bezug nehmend auf 3 erstellt in einer veranschaulichenden Ausführungsform die Netzwerkrechenvorrichtung 106 eine Umgebung 300 während des Betriebs. Die veranschaulichende Umgebung 300 schließt ein Kommunikationsverwaltungsmodul 310, ein Netzwerkfunktionsverwaltungsmodul 320, ein Hauptspeicherverwaltungsmodul 330 und ein Cachespeicherverwaltungsmodul 340 ein. Die verschiedenen Module der Umgebung 400 können als Hardware, Software, Firmware oder als eine Kombination davon ausgeführt sein. Von daher können, in einigen Ausführungsformen, eines oder mehrere der Module der Umgebung 300 als Schaltungsanordnung oder Zusammenstellung von elektrischen Vorrichtungen (z. B. ein Kommunikationsverwaltungsschaltkreis 310, ein Netzwerkfunktionsverwaltungsschaltkreis 320, ein Hauptspeicherverwaltungsschaltkreis 330, ein Cachespeicherverwaltungsschaltkreis 340 usw.) ausgeführt sein.
  • Es sollte anerkannt werden, dass in derartigen Ausführungsformen einer oder mehrere des Kommunikationsverwaltungsschaltkreises 310, des Netzwerkfunktionsverwaltungschaltkreises 320, des Hauptspeicherverwaltungschaltkreises 330 und des Cachespeicherverwaltungsschaltkreises 340 einen Teil von einem oder mehreren des Prozessors 202, des E/A-Subsystems 208, der Kommunikationsschaltungsanordnung 214 und/oder anderer Komponenten der Netzwerkrechenvorrichtung 106 bilden können. Zusätzlich können, in einigen Ausführungsformen, eines oder mehrere der veranschaulichenden Module einen Teil eines anderen Moduls bilden und/oder eines oder mehrere der veranschaulichenden Module können unabhängig voneinander sein. Ferner können, in manchen Ausführungsformen, eines oder mehrere der Module der Umgebung 300 als virtualisierte Hardwarekomponenten oder emulierte Architektur ausgeführt sein, welche durch den Prozessor 202 oder andere Komponenten der Netzwerkrechenvorrichtung 106 erstellt und bewahrt werden können.
  • In der veranschaulichenden Umgebung 300 schließt die Netzwerkrechenvorrichtung 106 ferner Hauptspeicherzuteilungsdaten 302, Cacheräumungsstrategiedaten 304 und Cachemerkmaldaten 306 ein, die jeweils im Hauptspeicher 210 und/oder der Datenspeichervorrichtung 212 der Netzwerkrechenvorrichtung 106 gespeichert sein können. Ferner kann auf die Hauptspeicherzuteilungsdaten 302, die Cacheräumungsstrategiedaten 304 und/oder die Cachemerkmaldaten 306 von den verschiedenen Modulen und/oder Submodulen der Netzwerkrechenvorrichtung 106 zugegriffen werden. Zusätzlich sollte anerkannt werden, dass alle in den Hauptspeicherzuteilungsdaten 302, den Cacheräumungsstrategiedaten 304 und/oder den Cachemerkmaldaten 306 gespeicherten oder anderweitig repräsentierten Daten sich in einigen Ausführungsformen relativ zueinander nicht gegenseitig ausschließen können.
  • Zum Beispiel können, in einigen Implementierungen, in den Hauptspeicherzuteilungsdaten 302 gespeicherte Daten auch als ein Teil der Cacheräumungsstrategiedaten 304 und/oder umgekehrt gespeichert sein. Von daher können, obwohl die hierin von der Netzwerkrechenvorrichtung 106 genutzten Daten als besonders diskret beschrieben sind, derartige Daten, in anderen Ausführungsformen, kombiniert oder zusammengefasst sein und/oder anderweitig Teile eines einzelnen oder mehrerer Datensätze bilden, einschließlich duplikativer Kopien. Es sollte ferner anerkannt werden, dass die Netzwerkrechenvorrichtung 106 zusätzliche und/oder alternative Komponenten, Subkomponenten, Module, Submodule und/oder gewöhnlich in einer Rechenvorrichtung zu findende Vorrichtungen einschließen kann, die zur Übersichtlichkeit der Beschreibung nicht in 3 dargestellt sind.
  • Das Kommunikationsverwaltungsmodul 310, welches als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon wie oben erörtert ausgeführt sein kann, ist dazu ausgelegt, eingehende und ausgehende drahtgebundene und/oder drahtlose Netzwerkkommunikationen (z. B. Netzwerkverkehr, Netzwerkpakete, Netzwerkflüsse usw.) zu der und von der Netzwerkrechenvorrichtung 106 zu erleichtern. Um dies zu tun, ist das Kommunikationsverwaltungsmodul 310 dazu ausgelegt, Netzwerkpakete von anderen Rechenvorrichtungen (z. B. dem Quellendpunktknoten 102, dem Zielendpunktknoten 108 und/oder anderen Rechenvorrichtungen, die kommunikativ an die Netzwerkrechenvorrichtung 106 gekoppelt sind, wie etwa einer anderen Netzwerkrechenvorrichtung 106) zu empfangen und zu verarbeiten. Zusätzlich ist das Kommunikationsverwaltungsmodul 310 dazu ausgelegt, Netzwerkpakete vorzubereiten und an andere Rechenvorrichtungen (z. B. den Quellendpunktknoten 102, den Zielendpunktknoten 108 und/oder andere Rechenvorrichtungen, die kommunikativ an die Netzwerkrechenvorrichtung 106 gekoppelt sind, wie etwa eine andere Netzwerkrechenvorrichtung 106) zu übertragen. Demgemäß kann, in einigen Ausführungsformen, mindestens ein Teil der Funktionalität des Kommunikationsverwaltungsmoduls 310 von der Kommunikationsschaltungsanordnung 214 der Netzwerkrechenvorrichtung 106 durchgeführt werden, oder, genauer, durch die NIC 216 der Kommunikationsschaltungsanordnung 214.
  • Das Netzwerkfunktionsverwaltungsmodul 320, welches als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon wie oben erörtert ausgeführt sein kann, ist dazu ausgelegt, die physischen und virtuellen Funktionen der NIC und verbundenen VMs und/oder Anwendungen der Netzwerkrechenvorrichtung 106 zu verwalten. Demgemäß ist, in derartigen Ausführungsformen, bei denen die virtuellen Funktionen mit VMs verbunden sind (z. B. in VNFs laufen), das Netzwerkfunktionsverwaltungsmodul 320 zusätzlich dazu ausgelegt, die damit verbundenen virtuellen Funktionen (siehe z. B. die VMs 402 und virtuellen Funktionen 410 von 4) zu verwalten. Um dies zu tun, ist das Netzwerkfunktionsverwaltungsmodul 320 dazu ausgelegt, die VMs basierend auf den für die Netzwerkpakete durchzuführenden verschiedenen Dienstfunktionen (z. B. basierend auf Dienstfunktionen einer Dienstfunktionskette, die dem Netzwerkpaketstrom entspricht) einzusetzen (d. h. Hochzufahren, Instanziierung durchzuführen usw.) und zu schließen (d. h. Herunterzufahren, aus dem Netzwerk zu entfernen usw.).
  • Demgemäß ist das Netzwerkfunktionsverwaltungsmodul 320 ferner dazu ausgelegt, jeden der mit den entsprechenden VMs jeder VNF verbundenen virtuellen Funktionstreiber zu verwalten, sowie die Kommunikationen zwischen diesen zu verwalten. Mit anderen Worten ist das Netzwerkfunktionsverwaltungsmodul 320 dazu konfiguriert, den Fluss von Daten zu den geeigneten Netzwerkfunktionen und zwischen den geeigneten Netzwerkfunktionen zu leiten. Zum Beispiel ist das Netzwerkfunktionsverwaltungsmodul 320 dazu ausgelegt, ein beabsichtigtes Ziel (z. B. eine VM) festzustellen, an das die Daten geleitet werden sollen (d. h. basierend auf einer Zugriffsanfrage) und die Daten zu einer Schnittstelle des beabsichtigen Ziels (d. h. einer virtuellen Funktion der VM) zu leiten.
  • Das Hauptspeicherverwaltungsmodul 330, welches als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon wie oben erörtert ausgeführt sein kann, ist dazu ausgelegt, die Zuteilung und Bezeichnung von Hauptspeicher (z. B. des Hauptspeichers 210 von 2) der Netzwerkrechenvorrichtung 106 zu verwalten (siehe, z. B. das Verfahren 500 zum Auslegen von regionsbasierten Cacheblöcken von 5). Um dies zu tun, schließt das veranschaulichende Hauptspeicherverwaltungsmodul 330 ein Hauptspeicherzuteilungsmodul 332 und ein Hauptspeicherzugriffsverwaltungsmodul 334 ein.
  • Es sollte anerkannt werden, dass jedes des Hauptspeicherzuteilungsmoduls 332, des Hauptspeicherzugriffsverwaltungsmoduls 334 und des Relaisregionverwaltungsmoduls 336 des Hauptspeicherverwaltungsmoduls 330 separat als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon ausgeführt sein kann. Zum Beispiel kann das Hauptspeicherzuteilungsmodul 332 als eine Hardwarekomponente ausgeführt sein, während das Hauptspeicherzugriffsverwaltungsmodul 334 als eine virtualisierte Hardwarekomponente oder als eine andere Kombination von Hardware, Firmware, Software, virtualisierter Hardware, emulierter Architektur und/oder eine Kombination davon ausgeführt ist.
  • Das Hauptspeicherzuteilungsmodul 332 ist dazu ausgelegt, einen Bereich einer physischen Speicheradresse für regionsbasierte Cacheverwaltung zuzuteilen. In einigen Ausführungsformen kann das Hauptspeicherzuteilungsmodul 332 dazu ausgelegt sein große, zusammenhängende physische Speicheradressbereiche zuzuteilen. In einem veranschaulichenden Beispiel kann das Hauptspeicherzuteilungsmodul 332 eine 1-GB-Hugepage für Inter-VM-Shared Memory (IVSHMEM) zuteilen. Es sollte anerkannt werden, dass das Hauptspeicherzuteilungsmodul 332 dazu ausgelegt sein kann, zu jedem beliebigen Zeitpunkt mehr als einen großen, zusammenhängenden physischen Speicheradressbereich zuzuteilen. Das Hauptspeicherzuteilungsmodul 332 ist ferner dazu ausgelegt, den zugeteilten physischen Speicherbereich in mehrere Regionen zu teilen, die etwa auf einer Anzahl von Regionen basieren können, für die bestimmte Arten von Daten gespeichert werden sollen.
  • Das Hauptspeicherzugriffsverwaltungsmodul 334 ist dazu ausgelegt, Zugriffe (z. B. Lese-, Schreibzugriffe usw.) auf einen Hauptspeicher zu verwalten. Mit anderen Worten, das Hauptspeicherzugriffsverwaltungsmodul 334 ist dazu ausgelegt, den Fluss von Daten an und von dem Hauptspeicher der Netzwerkrechenvorrichtung 106, wie etwa dem Hauptspeicher 210 von 2, zu verwalten. Demgemäß kann, in einigen Ausführungsformen, das Hauptspeicherzugriffsverwaltungsmodul 334 dazu ausgelegt sein, als eine Speichersteuerungsschnittstelle zu funktionieren oder anderweitig ausgeführt zu sein. In einigen Ausführungsformen können mit der Zuteilung des Hauptspeichers im Zusammenhang stehende Daten (z. B. Speicheradressen, Zuteilungsinformationen, Zugriffsprotokolle usw.) in den Hauptspeicherzuteilungsdaten 302 gespeichert sein.
  • Das Cachespeicherverwaltungsmodul 340, welches als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon wie oben erörtert ausgeführt sein kann, ist dazu ausgelegt, die Zuteilung und Bezeichnung von Cachespeicher der Netzwerkrechenvorrichtung, wie etwa des Cachespeichers 206 von 2, zu verwalten. Um dies zu tun, schließt das veranschaulichende Cachespeicherverwaltungsmodul 340 ein Cacheblockzuteilungsmodul 342, ein Cachezugriffsverwaltungsmodul 344, ein Cachemerkmalverwaltungsmodul 346 und ein Cacheräumungsverwaltungsmodul 348 ein.
  • Es sollte anerkannt werden, dass jedes des Cacheblockzuteilungsmoduls 342, des Cachezugriffsverwaltungsmoduls 344, des Cachemerkmalverwaltungsmoduls 346 und des Cacheräumungsverwaltungsmoduls 348 des Cachespeicherverwaltungsmoduls 340 separat als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon ausgeführt sein kann. Zum Beispiel kann das Cacheblockzuteilungsmodul 342 als eine Hardwarekomponente ausgeführt sein, während das Cachezugriffsverwaltungsmodul 344 als eine virtualisierte Hardwarekomponente oder als eine andere Kombination von Hardware, Firmware, Software, virtualisierter Hardware, emulierter Architektur und/oder eine Kombination davon ausgeführt ist.
  • Das Cacheblockzuteilungsmodul 342 ist dazu ausgelegt, die Zuteilung von Cachespeicher in Cacheblöcke zu verwalten. Das Cacheblockzuteilungsmodul 342 ist zusätzlich dazu ausgelegt, die Zuordnung der Cacheblöcke zu Teilen von physischem Speicher (z. B. dem Hauptspeicher 210 von 2) der Netzwerkrechenvorrichtung 106 zu verwalten. Zum Beispiel, wie vorhergehend beschrieben, ist die Netzwerkrechenvorrichtung 106 dazu ausgelegt, zugeteilte Teile von Hauptspeicher basierend auf einer Anzahl von bezeichneten Regionen zu teilen. In Weiterführung des Beispiels werden die mit dem zugeteilten Hauptspeicher verbundenen Cacheblöcke für diese Regionen ähnlich bezeichnet, wie sie etwa durch einen Regionsindikator angegeben werden können, der von dem Cachemerkmalverwaltungsmodul 346 bewahrt wird. Von daher ist das Cacheblockzuteilungsmodul 342 dazu ausgelegt, die geteilten Teile des Cacheblocks den Regionen des zugeteilten Teils von physischem Speicher zuzuordnen.
  • Das Hauptspeicherzugriffsverwaltungsmodul 344 ist dazu ausgelegt, die Zugriffe (z. B. Lese-, Schreibzugriffe usw.) auf einen Cachespeicher zu verwalten. Mit anderen Worten, das Cachespeicherzugriffsverwaltungsmodul 344 ist dazu ausgelegt, den Fluss von Daten an und von dem Cachespeicher der Netzwerkrechenvorrichtung 106, wie etwa dem Cachespeicher 206 von 2, zu verwalten. Demgemäß kann das Cachezugriffsverwaltungsmodul 344 dazu ausgelegt sein, beim Feststellen, dass eine Cachezeile zum Speichern von alternativen Daten verfügbar gemacht werden muss, mit dem Cacheräumungsverwaltungsmodul 348 eine Schnittstelle zu bilden.
  • Das Cachemerkmalverwaltungsmodul 346 ist dazu ausgelegt, die Merkmale von jedem Cacheblock zu verwalten, wie etwa Regionsindikatoren und alle damit verbundenen Konfigurationsparameter. In einigen Ausführungsformen können die Regionsindikatoren und/oder Konfigurationsparameter in einem architektonisch freigelegten Mechanismus gespeichert sein, wie etwa einem oder mehreren modellspezifischen Registern (Model-Specific Registers, MSRs). Zum Beispiel ist in einer Ausführungsform, bei der der Cacheblock in drei Regionen geteilt wurde, einschließlich eines nicht-regionsspezifischen Teils, einer gemeinsam genutzten Region (z. B. zum gemeinsamen Nutzen von Daten zwischen Einheiten) und einer Relaisregion (z. B. für speicherbasierte Kommunikationskanäle, die Daten bei der Übertragung von Erzeugern zu Verbrauchern puffern), das Cachemerkmalverwaltungsmodul 346 dazu ausgelegt, entsprechende Indikatoren für jeden geteilten Teil des Cacheblocks zu bewahren. In Weiterführung des vorhergehenden Beispiels kann das Cachemerkmalverwaltungsmodul 346 dazu ausgelegt sein, der gemeinsam genutzten Region einen Indikator für eine gemeinsam genutzte Region und der Relaisregion einen Indikator für eine Relaisregion zuzuweisen.
  • Das Cachemerkmalverwaltungsmodul 346 ist ferner dazu ausgelegt, einen Bias-Wert zu verwalten, der mit jedem regionsbasierten Teil von physischem Speicher und dem betreffenden Teil des dem entsprechenden regionsbasierten Teil des physischen Speichers zugeordneten Cacheblocks verbunden ist. Der Bias-Wert bewirkt einen Bias, um zu vermeiden, dass Cachezeilen, die mit der Region verbunden sind, die diesem Bias-Wert entspricht, in relativer Präferenz zu den anderen Cachezeilen (z. B. von anderen Regionen) geräumt werden. Zum Beispiel kann das Cachemerkmalverwaltungsmodul 346 dazu ausgelegt sein, in derartigen Ausführungsformen einen Teil des Cacheblocks mit einem Bias-Wert für eine gemeinsam genutzte Region (d. h. mit einem Standardwert von eins) zu bezeichnen, wobei der Teil des Cacheblocks dem zugeteilten Teil des physischen Speichers zugeordnet wurde, der als die gemeinsam genutzte Region bezeichnet wurde. In einigen Ausführungsformen können die Cachemerkmale in den Cachemerkmaldaten 306 gespeichert sein.
  • Das Cacheräumungsverwaltungsmodul 348 ist dazu ausgelegt, eine Räumung von Daten aus Cachezeilen von Cachespeicher der Netzwerkrechenvorrichtung 106 (z. B. dem Cachespeicher 206) zu verwalten. Um dies zu tun, ist das Cacheräumungsverwaltungsmodul 348 dazu ausgelegt, Cacheräumungsstrategien (z. B. Cacheersetzungsalgorithmen/-strategien) durchzusetzen. Es sollte anerkannt werden, dass es mehr als eine Cacheräumungsstrategie geben kann. Zum Beispiel können die Cacheräumungsstrategien eine nicht-gerichtete StandardRäumungsstrategie (z. B. am längsten nicht verwendet (Least Recently Used, LRU), zuletzt verwendet (Most Recently Used, MRU), 2-Wege assoziativ, direkt zugeordneter Cache usw.) und die regionsbasierte Cacheräumungsstrategie wie hierin beschrieben (siehe, z. B., das Verfahren 600 zum Ausführen einer regionsbasierten Cachezeilenräumung der 6 und 7) einschließen. In einigen Ausführungsformen können die Cacheräumungsstrategien und/oder mit diesen im Zusammenhang stehende Informationen in den Cacheräumungsstrategiedaten 304 gespeichert sein.
  • Demgemäß ist das Cacheräumungsverwaltungsmodul 348 dazu ausgelegt, festzustellen, welchem Teil eines Cacheblocks eine für eine Räumung ausgewählte Cachezeile entspricht. Mit anderen Worten, das Cacheräumungsverwaltungsmodul 348 ist dazu ausgelegt, festzustellen, welcher Region, falls zutreffend, die Cachezeile entspricht. Das Cacheräumungsverwaltungsmodul 348 ist ferner dazu ausgelegt, beim Feststellen, ob die Cachezeile einer in der regionsbasierten Cacheverwaltung angegebenen Region (z. B. einer gemeinsam genutzten Region, einer Relaisregion usw.) entspricht, einen Bias-Wert der Region abzurufen Wie vorhergehend beschrieben, kann der Bias-Wert verwendet werden, um festzustellen, ob bei einer Auswahl Cachezeilen für die entsprechende Region geräumt werden sollen. Um dies zu tun, ist das Cacheräumungsverwaltungsmodul 348 dazu ausgelegt, einen Bias-Vergleichswert zu erzeugen, wie etwa durch Verwenden eines gerichteten Münzwurfsimulators, um zu bestimmen, ob die für eine Räumung ausgewählte Cachezeile geräumt werden soll oder nicht (d. h. basierend auf einer fraktionalen Wahrscheinlichkeit).
  • Das Cacheräumungsverwaltungsmodul 348 ist ferner dazu ausgelegt, den Bias-Wert dynamisch anzupassen, wie etwa basierend auf Cache-Treffer-/Fehltrefferraten, Latenz, Bandbreite, Flüssen, Arbeitslasten usw. Es sollte anerkannt werden, dass, unter bestimmten Bedingungen, das Cacheräumungsverwaltungsmodul 348 zusätzlich dazu ausgelegt sein kann, den Bias-Wert zu ignorieren. Mit anderen Worten, das Cacheräumungsverwaltungsmodul 348 kann dazu ausgelegt sein, die nicht-gerichtete Standardräumungsstrategie durchzusetzen, auch beim Feststellen, dass die Cachezeile einer bestimmten Region mit einem entsprechenden Bias-Wert entspricht. Zum Beispiel können derartige Bedingungen jede Bedingung einschließen, unter der die regionsbasierte Cacheräumungsstrategie wahrscheinlich zu einer unerwünschten Ineffizienz führen würde, wie etwa, unter anderem, Cache-Fehltrefferraten, die einen Fehltrefferraten-Schwellenwert überschreiten, wiederholte Cachezeilenauswahl für eine Räumung, die dazu führt, dass eine Cachezeile für eine Räumung aus derselben Region wie bei vorhergehenden Versuchen ausgewählt wird, in denen eine Räumung basierend auf dem Bias-Wert abgelehnt wurde, die Cachezeile einer bestimmten Art von Arbeitslast entspricht, die Daten einer bestimmten Art von Arbeitslast entsprechen usw.
  • Nunmehr Bezug nehmend auf 4 erstellt in einer anderen veranschaulichenden Ausführungsform die Netzwerkrechenvorrichtung 106 eine Umgebung 400 während des Betriebs. Die veranschaulichende Umgebung 400 schließt mehrere VMs 402 ein, die auf der Netzwerkrechenvorrichtung 106 ausgeführt werden, von denen jede kommunikativ an eine von mehreren virtuellen Funktionen 410 der NIC 216 gekoppelt ist. In Verwendung ist die NIC 216 in Sätze von unabhängigen virtuellen Funktionen 410 geteilt, wobei jede unabhängige virtuelle Funktion 410 eine eigene Konfiguration aufweist (z.B. PCI-Konfigurationsraum, Medienzugriffssteuerungs(Media Access Control, MAC)-Adresse, Einstellungen usw.), die ausschließlich VMs (z. B. den VMs 402) zugewiesen sein kann oder von nativen Anwendungen verwendet wird. Ferner nutzt jede der virtuellen Funktionen 410 auch eine oder mehrere physische Ressourcen auf der NIC 216, wie etwa einen externen Netzwerkanschluss, Speicher usw., gemeinsam mit den physischen Funktionen der NIC 216.
  • Die veranschaulichenden VMs 402 schließen eine erste VM ein, welche als VM (1) 404 bezeichnet ist, eine zweite VM, welche als VM (2) 406 bezeichnet ist, und eine dritte VM, welche als VM (N) 408 bezeichnet ist (d. h., der „N-te“ Rechenknoten der VMs 402, wobei „N“ eine positive Ganzzahl ist und eine oder mehrere zusätzliche VMs 402 bezeichnet). Die veranschaulichenden virtuellen Funktionen 410 schließen eine erste virtuelle Funktion ein, welche als VF (1) 412 bezeichnet ist, eine zweite virtuelle Funktion, welche als VF (2) 414 bezeichnet ist, und eine dritte virtuelle Funktion, welche als VF (N) 416 bezeichnet ist (d. h., der „N-te“ Rechenknoten der virtuellen Funktionen 410, wobei „N“ eine positive Ganzzahl ist und eine oder mehrere zusätzliche virtuelle Funktionen 410 bezeichnet). Jede der virtuellen Funktionen 410 wird von der NIC 216 verwaltet und zwischen diesen übertragener Datenverkehr wird von dem oben detailliert beschriebenen Netzwerkfunktionsverwaltungsmodul 320 von 3 verwaltet. Es sollte anerkannt werden, dass eine oder mehrere der virtuellen Funktionen 410 dazu ausgelegt sind, Kommunikationen über einen gemeinsam genutzten Speicher (nicht gezeigt) auszutauschen. Demgemäß ist das Netzwerkfunktionsverwaltungsmodul 320 ferner gekoppelt an das Hauptspeicherverwaltungsmodul 330 und das Cachespeicherverwaltungsmodul 340 von 3, die ebenfalls oben detailliert beschrieben sind, sowie einen VM-Monitor 418 (VMM). Der VMM 418 ist zuständig für die Steuerung und Handhabung von privilegierter Anweisungsausführung. Demgemäß kann, in einigen Ausführungsformen, das Netzwerkfunktionsverwaltungsmodul 320 einen Teil des VMM 418 bilden, oder umgekehrt.
  • Wie vorhergehend beschrieben, kann sich die Netzwerkrechenvorrichtung 106 zum Durchführen von virtualisierten Netzwerkfunktionen unter Nutzung von einer oder mehreren VMs auf eine oder mehrere VNFs verlassen. In einigen Ausführungsformen können derartige VNFs dynamisch miteinander verkettet sein, um in einem Prozess, der als Dienstverkettung bezeichnet wird, eine Dienstfunktionskette (Service Function Chain, SFC) zu bilden. In einer SFC wird jede Dienstfunktion von einer oder mehreren VMs durchgeführt, die speziell erstellt wurden, um eine bestimmte Dienstfunktion der SFC durchzuführen. Welche Dienstfunktionen in einer SFC eingeschlossen sind, kann auf eine mit einem Netzwerkpaket (z. B. Nutzlastart, Netzwerkpaket-Overhead) verbundene Eigenschaft zugeschnitten werden. Zum Beispiel kann ein Administrator eines Datenzentrums, das die Netzwerkrechenvorrichtung 106 einschließt, eine SFC bestehend aus mehreren Sicherheitsdienstfunktionen (z. B. einer virtualisierten Firewallfunktion, einer virtualisierten Eindringungserkennungsfunktion usw.) festlegen, von denen jede dazu ausgelegt sein kann, in einer bestimmten Reihenfolge von der Netzwerkrechenvorrichtung 106 erhaltene Netzwerkpakete zu verarbeiten. Während die veranschaulichende Umgebung 400 als virtuelle Netzwerkfunktionen nutzend dargestellt ist, können die hierin beschriebenen Funktionen eingesetzt werden, um unter Verwendung von gemeinsamem Speicher Kommunikationsaustausche zwischen Anwendungen, VMs, VNFs usw. abzudecken.
  • In einigen Ausführungsformen kann, während des Verarbeitens eines Netzwerkpakets, eine der Dienstfunktionen resultierende (d. h. aus der Verarbeitung des Netzwerkpakets resultierende) Daten aufweisen, die zu der nächsten Dienstfunktion in der SFC weitergegeben werden sollen. Demgemäß gelten derzeitige Cachepriorisierungstechnologien, wie etwa die DDIO(Data Direct I/O)-Priorisierung, die für eine einfache Weitergabe von Netzwerkpaketdaten zwischen Netzwerkfunktionen gilt (z. B. laufend in VMs, VNFs, nativen Anwendungen, Anwendungen, die in Containern ausgeführt werden), nicht für Übertragungen von derartigen dynamisch veränderten Daten. Es sollte anerkannt werden, dass die Netzwerkfunktionen, die gemeinsam Daten nutzen (z. B. über gemeinsam genutzte Speicherpuffer) Daten nicht langfristig gemeinsam nutzen. Mit anderen Worten, sobald eine sendende Netzwerkfunktion ein Netzwerkpaket (z. B. über IVSHMEM oder andere Puffer in gemeinsam genutztem Speicher) an eine andere Netzwerkfunktion übergeben hat, bezieht sich die sendende Netzwerkfunktion nicht auf den Speicherbereich des Netzwerkpakets, außer, um es erneut zu verwenden, sobald Daten in ihm von der empfangenden Netzwerkfunktion verbraucht wurden.
  • Es sollte ferner anerkannt werden, dass andere vorhandene Cachepriorisierungstechnologien, wie etwa CAT, in der Regel nicht die Kommunikationen über IVSHMEM oder Ringpuffer in gemeinsam genutztem Speicher abdecken. Ferner weisen die Daten in IVSHMEM oder den gemeinsam genutzten Speicherpuffern aufgrund des Cachedrucks von prozessor-/speicherintensiver Arbeit innerhalb der Netzwerkfunktionen üblicherweise ein hohes Risiko auf, geräumt zu werden. Zum Beispiel löst CAT Probleme der wirkungsvollen Cacheaufteilung zwischen Anwendungen, unterstützt aber nicht Puffernutzungen zwischen Netzwerkfunktionen. Mit anderen Worten, anders als CAT kann eine regionsbasierte Cacheverwaltung wirkungsvoll sein, um Cachekapazität für an eine Speicherregion gebundenes Inter-VM-Sharing zu reservieren.
  • Nunmehr Bezug nehmend auf 5 kann die Netzwerkrechenvorrichtung 106, in Verwendung, ein Verfahren 500 zum Auslegen von regionsbasierten Cacheblöcken des Cachespeichers 206 der Netzwerkrechenvorrichtung 106 ausführen. Das Verfahren 500 beginnt in Block 502, in welchem die Netzwerkrechenvorrichtung 106 feststellt, ob regionsbasierte Cacheverwaltung unterstützt wird. Zum Beispiel kann die Netzwerkrechenvorrichtung 106, in einigen Ausführungsformen, sich auf CPU-Identifizierungs(CPUID)-Opcode-Anweisungen verlassen, um festzustellen, ob regionsbasierte Cacheverwaltung unterstützt wird, sowie auf alle Fähigkeiten der regionsbasierten Cacheverwaltung, die unterstützt werden, wie etwa Größe des Caches, Granularität der Zuteilung, Ausrichtung, unterstützte Speichergröße usw.). Wenn regionsbasierte Cacheverwaltung unterstützt wird, geht das Verfahren 500 zu Block 504 weiter; andernfalls schleift das Verfahren 500 zurück zu Block 502, um festzustellen, ob regionsbasierte Cacheverwaltung unterstützt wird. In Block 504 teilt die Netzwerkrechenvorrichtung 106 einen Bereich von physischen Speicheradressen des Hauptspeichers 110 zu, der mit einer Region von Cachespeicher verbunden werden soll (z. B. über Aufrufe durch das Betriebssystem oder den VMM 418 der Netzwerkrechenvorrichtung 106). Zum Beispiel teilt in Block 506 die Netzwerkrechenvorrichtung 106 einen sequenziellen Bereich von physischen Speicheradressen des mit der Region im Cache verbundenen Hauptspeichers 110 zu.
  • In Block 508 verbindet die Netzwerkrechenvorrichtung 106 einen Block von Cache mit dem zugeteilten Bereich von physischen Speicheradressen (d. h. dem zugeteilten Teil von Hauptspeicher 110). Es sollte anerkannt werden, dass die Größe des dem Bereich von physischen Speicheradressen zugeteilten Cachespeichers zu der des verbundenen physischen Speicherbereichs passen oder kleiner sein kann (d. h. ein Zuordnungsverhältnis von 1:N, wobei N einen ganzzahligen Wert größer als 1 repräsentiert). Demgemäß können Wirkungen ähnlich denjenigen, die bei Cachesperrparadigmen beobachtet werden können, erzielt werden, wenn der dynamische Fußabdruck des Bereichs klein genug ist, wie es bei SFCs sinnvoll sein kann. In Block 510 teilt die Netzwerkrechenvorrichtung 106 den zugeteilte Teil des Hauptspeichers 110 in mehrere Regionen. In einem veranschaulichenden Beispiel teilt die Netzwerkrechenvorrichtung 106 den zugeteilten Teil des Hauptspeichers 110 in eine gemeinsame genutzte Region und eine Relaisregion, die beide oben beschrieben sind. Demgemäß kann, in einer derartigen Ausführungsform, ein Betriebssystem und/oder VMM das Caching von gemeinsam genutzten Strukturen durch Verschieben von Daten in die gemeinsam genutzte Region verbessern. Zusätzlich kann, in derartigen Ausführungsformen, ein Speichern von gemeinsam genutztem Speicher (z. B. IVSHMEM) in einem Cache (z. B. in der gemeinsam genutzten Region und/oder der Relaisregion) mit Datenaustauschen zusammenhängende Latenz minimieren. Es sollte anerkannt werden, dass die Gesamtgröße von zugeteiltem physischem Speicher, die Anzahl der Regionen usw. abhängig von den Fähigkeiten der Netzwerkrechenvorrichtung 106 (d. h. den unterstützten Fähigkeiten im Hinblick auf regionsbasierte Cacheverwaltung) ausgelegt werden kann.
  • In Block 512 ordnet die Netzwerkrechenvorrichtung 106 eine entsprechende Region des in Block 508 zugeteilten Cacheblocks jeder Region des in Block 504 zugeteilten Hauptspeichers 110 zu. In einigen Ausführungsformen kann der Cacheblock zugeordnet oder anderweitig mit implementierungsspezifischer Granularität (z. B. basierend auf Cachewegen, Cachezeilen usw.) geteilt sein. Alternativ kann, in anderen Ausführungsformen, ein probabilistischer Bias bereitgestellt werden, der durch eine hardwarebasierte weiche Einteilung oder randomisierte Technik implementiert werden kann. In einem veranschaulichenden Beispiel kann Hardware der Netzwerkrechenvorrichtung 106 Cachezeilen zuordnen durch Verwenden einer Rundlauf(„Round Robin“)- (z. B. über Bitmasken zum Auswählen von Cachewegen, die mit jeder Speicherregion verbunden sein sollen)- oder Hashing-Funktion zum Verteilen von physischen Zugriffen unter der reservierten Kapazitätszuteilung im Cachespeicher (z. B. statt einer statischen Verteilung).
  • In Block 514 weist die Netzwerkrechenvorrichtung 106 jeder Region des zugeordneten Caches ein oder mehrere Cachemerkmale zu. Zum Beispiel weist, in Block 516, die Netzwerkrechenvorrichtung 106 jeder Region des zugeordneten Caches einen Regionsindikator zu. Wie vorhergehend beschrieben, kann der Regionsindikator jede Art von Datenstruktur sein, die verwendet werden kann, um die Region von zugeteiltem Speicher zu identifizieren. Zum Beispiel kann die Netzwerkrechenvorrichtung 106 der gemeinsam genutzten Region des zugeordneten Cacheblocks einen Indikator für eine gemeinsam genutzte Region und der Relaisregion des zugeordneten Cacheblocks einen Indikator für eine Relaisregion zuweisen.
  • In Block 518 weist die Netzwerkrechenvorrichtung 106 jeder Region einen oder mehrere Konfigurationsparameter zu, wie etwa dem Cacheblock entsprechende physische Speicheradressinformationen, physische Start- und Endspeicheradressen jeder Region und/oder beliebige andere Daten, die Cacheverhalten für jede Region festlegen oder anderweitig leiten. Wie vorhergehend beschrieben, können die Konfigurationsparameter Kopf- und Schwanzindikatoren einschließen, wie sie in Regionen verwendet werden können, die als Ringpuffer ausgelegt sind. In derartigen Ausführungsformen zeigt der Kopfindikator wirkungsvoll auf das älteste Datum, das produziert und für einen Verbrauch in eine Warteschlange eingereiht wird, aber noch verbraucht werden muss, und der Schwanzindikator zeigt wirkungsvoll auf das jüngste Datum, das produziert und in der entsprechenden Region in die Warteschlange eingereiht wurde. Demgemäß besteht der Bereich von Speicher zwischen dem Kopfindikator und dem Schwanzindikator aus Daten, die als weiterhin aktiv festgestellt wurden, während die restlichen Daten (z. B. der Bereich von Speicher zwischen dem Schwanzindikator und dem Kopfindikator) als veraltet gelten können (z. B. noch vorhandene Daten aus alten, früher verarbeiteten und fallengelassenen/weitergeleiteten Paketen).
  • In Block 520 weist die Netzwerkrechenvorrichtung 106 jeder Region einen Bias-Wert (d. h. eine fraktionale Wahrscheinlichkeit) zu. Wie vorhergehend beschrieben, entspricht der Bias-Wert einer fraktionalen Wahrscheinlichkeit, die einen Wert zwischen null und eins aufweist, die verwendet werden kann, um festzustellen, ob eine Cachezeile, die für eine Räumung ausgewählt wurde, geräumt werden soll, wie unten in dem Verfahren 600 der 6 und 7 beschrieben. In einigen Ausführungsformen können, in Block 522, die Cachemerkmale (z. B. die Regionsindikatoren, Konfigurationsparameter, Bias-Werte usw.) in entsprechenden MSRs zugewiesen oder anderweitig gespeichert werden.
  • Nunmehr Bezug nehmend auf die 6 und 7 kann die Netzwerkrechenvorrichtung 106, in Verwendung, ein Verfahren 600 zum Ausführen einer regionsbasierten Cachezeilenräumung einer Cachezeile in einem Cacheblock des Cachespeichers 206 der Netzwerkrechenvorrichtung 106 ausführen. Das Verfahren 600 beginnt in Block 602, in welchem die Netzwerkrechenvorrichtung 106 feststellt, ob eine Cachezeile für eine Räumung ausgewählt wurde. Wenn ja, geht das Verfahren 600 zu Block 604 weiter; andernfalls schleift das Verfahren 600 zurück zu Block 602, um erneut festzustellen, ob eine Cachezeile für eine Räumung ausgewählt wurde. In Block 604 stellt die Netzwerkrechenvorrichtung 106 fest, ob die für eine Räumung ausgewählte Cachezeile sich in einem Teil des Cachespeichers befindet, der einer gemeinsam genutzten Region von physischem Speicher (z.B. dem Hauptspeicher 110 von 1) zugeordnet ist. Um dies zu tun, wie vorhergehend beschrieben, prüft die Netzwerkrechenvorrichtung 106 auf einen Regionsindikator (z. B. in einer MSR), um festzustellen, ob die für eine Räumung ausgewählte Cachezeile sich in der gemeinsam genutzten Region befindet.
  • Wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die für eine Räumung ausgewählte Cachezeile nicht der gemeinsam genutzten Region entspricht, verzweigt das Verfahren 600 zu Block 618 von 7, unten beschrieben; andernfalls verzweigt das Verfahren 600 zu Block 606. In Block 606 ruft die Netzwerkrechenvorrichtung 106 einen mit der gemeinsam genutzten Region verbundenen Bias-Wert (d. h. einen Bias-Wert der gemeinsam genutzten Region) ab, dem die Cachezeile zugeordnet ist. Wie vorhergehend beschrieben, entspricht der Bias-Wert einer fraktionalen Wahrscheinlichkeit, die einen Wert zwischen null und eins aufweist, die verwendet werden kann, um festzustellen, ob eine Cachezeile einer entsprechenden Region, die für eine Räumung ausgewählt wurde, geräumt werden soll, wie unten beschrieben.
  • In Block 608 erzeugt die Netzwerkrechenvorrichtung 106 einen Bias-Vergleichswert für die gemeinsam genutzte Region (d. h. einen Bias-Vergleichswert der gemeinsam genutzten Region). Um dies zu tun, verwendet die Netzwerkrechenvorrichtung 106, in Block 610, eine gerichtete Münzwurfsimulation, um ein probabilistisches Resultat zurückzuliefern (z. B. ein Resultat einer gerichteten Münzwurfsimulation). Natürlich sollte anerkannt werden, dass, in anderen Ausführungsformen, die Netzwerkrechenvorrichtung 106 andere Methodiken nutzen kann, um den Bias-Vergleichswert zu erzeugen oder anderweitig festzustellen (z. B. über ein Zufalls- oder Pseudozufallswerterzeugungsverfahren).
  • In Block 612 stellt die Netzwerkrechenvorrichtung 106 fest, ob die Cachezeile geräumt werden soll. Um dies zu tun, vergleicht die Netzwerkrechenvorrichtung 106 den Bias-Vergleichswert der gemeinsame genutzten Region mit dem Bias-Wert der gemeinsam genutzten Region. Mit anderen Worten, ein Resultat der gerichteten Münzwurfsimulation wird mit dem probabilistischen Bias-Wert verglichen, um festzustellen, ob die Cachezeile geräumt werden soll. Es sollte anerkannt werden, dass, in einigen Ausführungsformen, die Netzwerkrechenvorrichtung 106 dazu ausgelegt sein kann, den Bias-Wert der gemeinsam genutzten Region basierend auf einem Resultat von Block 612 (d. h. dem Ergebnis, ob die Cachezeile geräumt werden soll oder nicht) anzupassen.
  • Wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die Cachezeile nicht geräumt werden soll, verzweigt das Verfahren 600 zu Block 614, in welchem die Netzwerkrechenvorrichtung 106 eine andere Cachezeile auswählt, die geräumt werden soll (z. B. durch Verwenden der Cachezeilenräumungsstrategie), bevor das Verfahren 600 zu Block 604 zurückkehrt, um festzustellen, ob die neu ausgewählte Cachezeile für eine Räumung in der gemeinsam genutzten Region liegt. Andernfalls, wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die Cachezeile geräumt werden soll, verzweigt das Verfahren 600 zu Block 616, in welchem die Netzwerkrechenvorrichtung 106 die Cachezeile räumt, bevor das Verfahren 600 zu Block 602 zurückkehrt, um zu warten, bis eine andere Cachezeile für eine Räumung ausgewählt wurde.
  • Wie vorhergehend beschrieben, wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die für eine Räumung ausgewählte Cachezeile nicht in der gemeinsam genutzten Region in Block 605 liegt, verzweigt das Verfahren 600 zu Block 618. In Block 618 stellt die Netzwerkrechenvorrichtung 106 fest, ob die für eine Räumung ausgewählte Cachezeile sich in einem Teil des Cachespeichers befindet, der einer Relaisregion von physischem Speicher (z. B. dem Hauptspeicher 110 von 1) zugeordnet ist. Um dies zu tun, ähnlich wie bei Block 604, prüft die Netzwerkrechenvorrichtung 106 auf einen Regionsindikator (z. B. in einer MSR), um festzustellen, ob die für eine Räumung ausgewählte Cachezeile sich in der Relaisregion befindet. Wenn nicht, verzweigt das Verfahren 600 zu Block 620, in welchem die Cachezeile gemäß der nicht-gerichteten Standardräumungsstrategie vor der Rückkehr zu Block 602 geräumt wird, um festzustellen, ob eine andere Cachezeile für eine Räumung ausgewählt wurde. Andernfalls, wenn die Netzwerkrechenvorrichtung 106 feststellt, dass Cachezeile in der Relaisregion liegt, verzweigt das Verfahren 600 zu Block 622.
  • In Block 622 stellt die Netzwerkrechenvorrichtung 106 fest, ob die Cachezeile aktiv, oder nicht veraltet, ist. Um dies zu tun, stellt die Netzwerkrechenvorrichtung 106, in der veranschaulichenden Ausführungsform, fest, ob die Cachezeile in einer aktiven Region eines Ringpuffers liegt. Mit anderen Worten, die Netzwerkrechenvorrichtung 106 stellt fest, ob die Cachezeile sich in dem Bereich von Speicher zwischen einem Kopfindikator und einem Schwanzindikator des Ringpuffers befindet, der Daten enthält, die als noch aktiv festgestellt wurden. Wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die Cachezeile in Block 622 nicht aktiv ist (d. h. veraltete Daten sich in einer Cachezeile befinden, die sich in dem Bereich von Speicher zwischen dem Schwanzindikator und dem Kopfindikator befindet), wie etwa bei Daten, die mit alten Netzwerkpaketen verbunden sind, die vorhergehend verarbeitet und fallengelassen/weitergeleitet wurden, und weiterhin vorhanden sind, verzweigt das Verfahren 600 zu Block 624. In Block 624 räumt die Netzwerkrechenvorrichtung 106 die Cachezeile. In einigen Ausführungsformen macht, in Block 626, die Netzwerkrechenvorrichtung 106 die Cachezeile ungültig und räumt die Cachezeile, ohne die Daten in den physischen Speicher zurückzuschreiben.
  • Wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die Cachezeile in Block 622 aktiv ist, verzweigt das Verfahren 600 zu Block 626, in welchem die Netzwerkrechenvorrichtung 106 einen Bias-Wert entsprechend der Relaisregion (d. h. einen Relaisregion-Bias-Wert) abruft, dem die Cachezeile zugeordnet ist. Wie vorhergehend beschrieben, entspricht der Bias-Wert einer fraktionalen Wahrscheinlichkeit, die einen Wert zwischen null und eins aufweist. In Block 628 erzeugt die Netzwerkrechenvorrichtung 106 einen Bias-Vergleichswert für die Relaisregion (d. h. einen Relaisregion-Bias-Vergleichswert). Um dies zu tun, verwendet die Netzwerkrechenvorrichtung 106, in Block 630, eine gerichtete Münzwurfsimulation, um ein probabilistisches Resultat zurückzuliefern (z. B. ein Resultat einer gerichteten Münzwurfsimulation).
  • In Block 632 stellt die Netzwerkrechenvorrichtung 106 fest, ob die Cachezeile geräumt werden soll. Um dies zu tun, vergleicht die Netzwerkrechenvorrichtung 106 den Relaisregion-Bias-Vergleichswert mit dem Relaisregion-Bias-Wert. Mit anderen Worten, ein Resultat der gerichteten Münzwurfsimulation wird mit dem probabilistischen Bias-Wert verglichen, um festzustellen, ob die Cachezeile geräumt werden soll. Es sollte anerkannt werden, dass, in einigen Ausführungsformen, die Netzwerkrechenvorrichtung 106 dazu ausgelegt sein kann, den Relaisregion-Bias-Wert dynamisch anzupassen basierend auf einem Resultat von Block 632 (d. h. dem Ergebnis, ob die Cachezeile geräumt werden soll oder nicht).
  • Wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die Cachezeile nicht geräumt werden soll, verzweigt das Verfahren 600 zu Block 634, in welchem die Netzwerkrechenvorrichtung 106 eine andere Cachezeile auswählt, die geräumt werden soll (z. B. durch Verwenden der Cachezeilenräumungsstrategie), bevor das Verfahren 600 zu Block 604 zurückkehrt, um festzustellen, ob die neu ausgewählte Cachezeile für eine Räumung in der Relaisregion liegt. Andernfalls, wenn die Netzwerkrechenvorrichtung 106 feststellt, dass die Cachezeile geräumt werden soll, verzweigt das Verfahren 600 zu Block 636, in welchem die Netzwerkrechenvorrichtung 106 die Cachezeile räumt, bevor das Verfahren 600 zu Block 602 zurückkehrt, um zu warten, bis eine andere Cachezeile für eine Räumung ausgewählt wurde.
  • Es sollte anerkannt werden, dass mindestens ein Teil von einem oder beiden der Verfahren 500 und 600 von der NIC 216 der Netzwerkrechenvorrichtung 106 ausgeführt werden kann. Es sollte ferner anerkannt werden, das, in einigen Ausführungsformen, eines oder beide der Verfahren 500 und 600 als verschiedene auf einem computerlesbaren Medium gespeicherte Anweisungen ausgeführt sein können, welche von einem Prozessor (z. B. dem Prozessor 202 usw.), der NIC 216 und/oder anderen Komponenten der Netzwerkrechenvorrichtung 106 ausgeführt werden können, um die Netzwerkrechenvorrichtung 106 dazu zu veranlassen, die Verfahren 500 und 600 durchzuführen. Das computerlesbare Medium kann als eine beliebige Art von Medium realisiert sein, das in der Lage ist, von der Netzwerkrechenvorrichtung 106 gelesen zu werden, einschließlich, unter anderem, des Hauptspeichers 210, der Datenspeichervorrichtung 212, eines sicheren Speichers (nicht gezeigt) der NIC 216, anderer Speicher- oder Datenspeichervorrichtungen der Netzwerkrechenvorrichtung 106, tragbarer, durch eine Peripherievorrichtung der Netzwerkrechenvorrichtung 106 lesbarer portabler Medien und/oder anderer Medien.
  • BEISPIELE
  • Veranschaulichende Beispiele der hier offenbarten Technologien sind unten bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere der unten beschriebenen Beispiele und eine beliebige Kombination davon einschließen.
  • Beispiel 1 schließt eine Netzwerkrechenvorrichtung für regionsbasierte Cacheverwaltung ein, die Netzwerkrechenvorrichtung umfassend einen Prozessor aufweisend einen Cachespeicher; einen Hauptspeicher, unterschiedlich von dem Cachespeicher, gekoppelt an den Prozessor; und eine oder mehrere Datenspeichervorrichtungen, aufweisend darin gespeichert mehrere Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, die Netzwerkrechenvorrichtung dazu veranlassen, eine Cachezeile für eine Räumung aus mehreren Cachezeilen des Cachespeichers auszuwählen; festzustellen, ob die für eine Räumung ausgewählte Cachezeile sich in einem Cacheblock des Cachespeichers befindet, der gegenwärtig einer entsprechenden Speicherregion des Hauptspeichers zugeordnet ist, wobei der Cacheblock eine oder mehrere der mehreren Cachezeilen umfasst; als Reaktion auf eine Feststellung, dass der Cacheblock einer entsprechenden Speicherregion zugeordnet ist, einen mit der entsprechenden Speicherregion verbundenen Bias-Wert abzurufen, wobei der Bias-Wert einer fraktionalen Wahrscheinlichkeit entspricht; einen Bias-Vergleichswert für die entsprechende Speicherregion zu erzeugen; den Bias-Wert der entsprechenden Speicherregion und den für die entsprechende Speicherregion erzeugten Bias-Vergleichswert zu vergleichen; und, als Reaktion auf eine Feststellung, dass ein Resultat des Vergleichs angibt, die Cachezeile zu räumen, die Cachezeile zu räumen.
  • Beispiel 2 schließt den Gegenstand von Beispiel 1 ein, und wobei Auswählen der Cachezeile für eine Räumung Auswählen der Cachezeile basierend auf einer nicht-gerichteten Cacheräumungsstrategie umfasst.
  • Beispiel 3 schließt den Gegenstand von einem der Beispiele 1 und 2 ein, und wobei Erzeugen des Bias-Vergleichswerts Erzeugen des Bias-Vergleichswerts als eine Funktion einer gerichteten Münzwurfsimulation umfasst.
  • Beispiel 4 schließt den Gegenstand von jedem der Beispiele 1-3 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Lesen eines modellspezifischen Registers der entsprechenden Speicherregion umfasst, das eine Angabe der entsprechenden Speicherregion einschließt, welcher der Cacheblock zugeordnet ist.
  • Beispiel 5 schließt den Gegenstand von jedem der Beispiele 1-4 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Feststellen umfasst, ob die entsprechende Speicherregion eine gemeinsam genutzte Speicherregion ist, die zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen.
  • Beispiel 6 schließt den Gegenstand von jedem der Beispiele 1-5 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Feststellen umfasst, ob die entsprechende Speicherregion eine Relaisspeicherregion ist, die zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 7 schließt den Gegenstand von jedem der Beispiele 1-6 ein, und wobei die mehreren Anweisungen ferner die Netzwerkrechenvorrichtung dazu veranlassen, einen Block von Hauptspeicher zuzuteilen, wobei der Block von Hauptspeicher einen Bereich von Speicheradressen des Hauptspeichers umfasst; den Cacheblock mit dem zugeteilten Block von Hauptspeicher zu verbinden; den zugeteilten Block von Hauptspeicher in mehrere Speicherregionen zu teilen; jeder der mehreren Speicherregionen einen entsprechenden Teil des Cacheblocks zuzuordnen; und jeder der mehreren Speicherregionen Cachemerkmale zuzuweisen, wobei die Cachemerkmale einen Regionsindikator und den Bias-Wert einschließen.
  • Beispiel 8 schließt den Gegenstand von jedem der Beispiele 1-7 ein, und wobei Zuteilen des Blocks von Hauptspeicher Zuteilen eines sequenziellen Bereichs von Speicheradressen des Hauptspeichers umfasst.
  • Beispiel 9 schließt den Gegenstand von jedem der Beispiele 1-8 ein, und wobei Teilen des zugeteilten Blocks von Hauptspeicher in die mehreren Speicherregionen Teilen des zugeteilten Blocks von Hauptspeicher in eine gemeinsam genutzte Region und eine Relaisregion umfasst, wobei die gemeinsam genutzte Region zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen, und wobei die Relaisregion zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 10 schließt den Gegenstand von jedem der Beispiele 1-9 ein, und wobei Zuweisen des Regionsindikators zu der gemeinsam genutzten Region Speichern eines Indikators für eine gemeinsam genutzte Region in einem modellspezifischen Register umfasst.
  • Beispiel 11 schließt den Gegenstand von jedem der Beispiele 1-10 ein, und wobei Zuweisen des Regionsindikators zu der Relaisregion Speichern eines Indikators für eine Relaisregion in einem modellspezifischen Register umfasst.
  • Beispiel 12 schließt den Gegenstand von jedem der Beispiele 1-11 ein, und wobei der entsprechende Teil des der gemeinsam genutzten Region zugeordneten Cachespeichers einen Ringpuffer umfasst, wobei die Cachemerkmale zusätzlich einen oder mehrere Konfigurationsparameter einschließen, und wobei die Konfigurationsparameter einen Kopfindikator der gemeinsam genutzten Region und einen Schwanzindikator der gemeinsam genutzten Region einschließen.
  • Beispiel 13 schließt den Gegenstand von jedem der Beispiele 1-12 ein, und wobei die mehreren Anweisungen ferner die Netzwerkrechenvorrichtung dazu veranlassen, den Bias-Wert als Reaktion auf ein Resultat des Vergleichs des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts anzupassen.
  • Beispiel 14 schließt eine Netzwerkrechenvorrichtung für regionsbasierte Cacheverwaltung ein, die Netzwerkrechenvorrichtung umfassend einen Prozessor aufweisend einen Cachespeicher; und einen Cachespeicherverwaltungsschaltkreis zum Auswählen einer Cachezeile des Cachespeichers für eine Räumung, wobei die Cachezeile eine von mehreren Cachezeilen des Cachespeichers ist; Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in einem Cacheblock des Cachespeichers befindet, der gegenwärtig einer entsprechenden Speicherregion des Hauptspeichers der Netzwerkrechenvorrichtung zugeordnet ist, wobei der Cacheblock eine oder mehrere der mehreren Cachezeilen umfasst; Abrufen, als Reaktion auf eine Feststellung, dass der Cacheblock einer entsprechenden Speicherregion zugeordnet ist, eines mit der entsprechenden Speicherregion verbundenen Bias-Werts, wobei der Bias-Wert eine fraktionalen Wahrscheinlichkeit entspricht; Erzeugen eines Bias-Vergleichswerts für die entsprechende Speicherregion; Vergleichen des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts; und Räumen der Cachezeile als Reaktion auf eine Feststellung, dass ein Resultat des Vergleichs angibt, die Cachezeile zu räumen.
  • Beispiel 15 schließt den Gegenstand von Beispiel 14 ein, und wobei Auswählen der Cachezeile für eine Räumung Auswählen der Cachezeile basierend auf einer nicht-gerichteten Cacheräumungsstrategie umfasst.
  • Beispiel 16 schließt den Gegenstand von einem der Beispiele 14 und 15 ein, und wobei Erzeugen des Bias-Vergleichswerts Erzeugen des Bias-Vergleichswerts als eine Funktion einer gerichteten Münzwurfsimulation umfasst.
  • Beispiel 17 schließt den Gegenstand von jedem der Beispiele 14-16 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Lesen eines modellspezifischen Registers der entsprechenden Speicherregion umfasst, das eine Angabe der entsprechenden Speicherregion einschließt, welcher der Cacheblock zugeordnet ist.
  • Beispiel 18 schließt den Gegenstand von jedem der Beispiele 14-17 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Feststellen umfasst, ob die entsprechende Speicherregion eine gemeinsam genutzte Speicherregion ist, die zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen.
  • Beispiel 19 schließt den Gegenstand von jedem der Beispiele 14-18 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Feststellen umfasst, ob die entsprechende Speicherregion eine Relaisspeicherregion ist, die zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 20 schließt den Gegenstand von jedem der Beispiele 14-19 ein, und ferner einschließend einen Hauptspeicherverwaltungsschaltkreis zum Zuteilen eines Blocks von Hauptspeicher, wobei der Block von Hauptspeicher einen Bereich von Speicheradressen des Hauptspeichers umfasst; Verbinden des Cacheblocks mit dem zugeteilten Block von Hauptspeicher; Teilen des zugeteilten Blocks von Hauptspeicher in mehrere Speicherregionen; Zuordnen eines entsprechenden Teils des Cacheblocks zu jeder der mehreren Speicherregionen; und Zuweisen von Cachemerkmalen zu jeder der mehreren Speicherregionen, wobei die Cachemerkmale einen Regionsindikator und den Bias-Wert einschließen.
  • Beispiel 21 schließt den Gegenstand von jedem der Beispiele 14-20 ein, und wobei Zuteilen des Blocks von Hauptspeicher Zuteilen eines sequenziellen Bereichs von Speicheradressen des Hauptspeichers umfasst.
  • Beispiel 22 schließt den Gegenstand von jedem der Beispiele 14-21 ein, und wobei Teilen des zugeteilten Blocks von Hauptspeicher in die mehreren Speicherregionen Teilen des zugeteilten Blocks von Hauptspeicher in eine gemeinsam genutzte Region und eine Relaisregion umfasst, wobei die gemeinsam genutzte Region zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen, und wobei die Relaisregion zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 23 schließt den Gegenstand von jedem der Beispiele 14-22 ein, und wobei Zuweisen des Regionsindikators zu der gemeinsam genutzten Region Speichern eines Indikators für eine gemeinsam genutzte Region in einem modellspezifischen Register umfasst.
  • Beispiel 24 schließt den Gegenstand von jedem der Beispiele 14-23 ein, und wobei Zuweisen des Regionsindikators zu der Relaisregion Speichern eines Indikators für eine Relaisregion in einem modellspezifischen Register umfasst.
  • Beispiel 25 schließt den Gegenstand von jedem der Beispiele 14-24 ein, und wobei der entsprechende Teil des der gemeinsam genutzten Region zugeordneten Cachespeichers einen Ringpuffer umfasst, wobei die Cachemerkmale zusätzlich einen oder mehrere Konfigurationsparameter einschließen, und wobei die Konfigurationsparameter einen Kopfindikator der gemeinsam genutzten Region und einen Schwanzindikator der gemeinsam genutzten Region einschließen.
  • Beispiel 26 schließt den Gegenstand von jedem der Beispiele 14-25 ein, und wobei der Cachespeicherverwaltungsschaltkreis ferner den Bias-Wert als Reaktion auf ein Resultat des Vergleichs des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts anpassen soll.
  • Beispiel 27 ein Verfahren für regionsbasierte Cacheverwaltung, das Verfahren umfassend Auswählen, durch eine Netzwerkrechenvorrichtung, einer Cachezeile für eine Räumung aus den mehreren Cachezeilen, wobei die Cachezeile eine von mehreren Cachezeilen eines Cachespeichers umfasst, der sich auf einem Prozessor der Netzwerkrechenvorrichtung befindet; Feststellen, durch die Netzwerkrechenvorrichtung, ob die für eine Räumung ausgewählte Cachezeile sich in einem Cacheblock des Cachespeichers befindet, der gegenwärtig einer entsprechenden Speicherregion eines Hauptspeichers der extern an den Prozessor gekoppelten Netzwerkrechenvorrichtung zugeordnet ist, wobei der Cacheblock eine oder mehrere der mehreren Cachezeilen umfasst; Abrufen, durch die Netzwerkrechenvorrichtung und als Reaktion auf eine Feststellung, dass der Cacheblock einer entsprechenden Speicherregion zugeordnet ist, eines mit der entsprechenden Speicherregion verbundenen Bias-Werts, wobei der Bias-Wert einer fraktionalen Wahrscheinlichkeit entspricht; Erzeugen, durch die Netzwerkrechenvorrichtung, eines Bias-Vergleichswerts für die entsprechende Speicherregion; Vergleichen, durch die Netzwerkvorrichtung, des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts; und Räumen, durch die Netzwerkrechenvorrichtung, der Cachezeile als Reaktion auf eine Feststellung, dass ein Ergebnis des Vergleichs angibt, die Cachezeile zu räumen.
  • Beispiel 28 schließt den Gegenstand von Beispiel 27 ein, und wobei Auswählen der Cachezeile für eine Räumung Auswählen der Cachezeile basierend auf einer nicht-gerichteten Cacheräumungsstrategie umfasst.
  • Beispiel 29 schließt den Gegenstand von einem der Beispiele 27 und 28 ein, und wobei Erzeugen des Bias-Vergleichswerts Erzeugen des Bias-Vergleichswerts als eine Funktion einer gerichteten Münzwurfsimulation umfasst.
  • Beispiel 30 schließt den Gegenstand von jedem der Beispiele 27-29 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Lesen eines modellspezifischen Registers der entsprechenden Speicherregion umfasst, das eine Angabe der entsprechenden Speicherregion einschließt, der der Cacheblock zugeordnet ist.
  • Beispiel 31 schließt den Gegenstand von jedem der Beispiele 27-30 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Feststellen umfasst, ob die entsprechende Speicherregion eine gemeinsam genutzte Speicherregion ist, die zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen.
  • Beispiel 32 schließt den Gegenstand von jedem der Beispiele 27-31 ein, und wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Feststellen umfasst, ob die entsprechende Speicherregion eine Relaisspeicherregion ist, die zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 33 schließt den Gegenstand von jedem der Beispiele 27-32 ein, und ferner einschließend Zuteilen, durch die Netzwerkrechenvorrichtung, eines Blocks von Hauptspeicher, wobei der Block von Hauptspeicher einen Bereich von Speicheradressen des Hauptspeichers umfasst; Verbinden, durch die Netzwerkrechenvorrichtung, des Cacheblocks mit dem zugeteilten Block von Hauptspeicher; Teilen, durch die Netzwerkrechenvorrichtung, des zugeteilten Blocks von Hauptspeicher in mehrere Speicherregionen; Zuordnen, durch die Netzwerkrechenvorrichtung, eines entsprechenden Teils des Cacheblocks zu jeder der mehreren Speicherregionen; und Zuweisen, durch die Netzwerkrechenvorrichtung, von Cachemerkmalen zu jeder der mehreren Speicherregionen, wobei die Cachemerkmale einen Regionsindikator und den Bias-Wert einschließen.
  • Beispiel 34 schließt den Gegenstand von jedem der Beispiele 27-33 ein, und wobei Zuteilen des Blocks von Hauptspeicher Zuteilen eines sequenziellen Bereich von Speicheradressen des Hauptspeichers umfasst.
  • Beispiel 35 schließt den Gegenstand von jedem der Beispiele 27-34 ein, und wobei Teilen des zugeteilten Blocks von Hauptspeicher in die mehreren Speicherregionen Teilen des zugeteilten Blocks von Hauptspeicher in eine gemeinsam genutzte Region und eine Relaisregion umfasst, wobei die gemeinsam genutzte Region zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen, und wobei die Relaisregion zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 36 schließt den Gegenstand von jedem der Beispiele 27-35 ein, und wobei Zuweisen des Regionsindikators zu der gemeinsam genutzten Region Speichern eines Indikators für eine gemeinsam genutzte Region in einem modellspezifischen Register umfasst.
  • Beispiel 37 schließt den Gegenstand von jedem der Beispiele 27-36 ein, und wobei Zuweisen des Regionsindikators zu der Relaisregion Speichern eines Indikators für eine Relaisregion in einem modellspezifischen Register umfasst.
  • Beispiel 38 schließt den Gegenstand von jedem der Beispiele 27-37 ein, und wobei der entsprechende Teil des der gemeinsam genutzten Region zugeordneten Cachespeichers einen Ringpuffer umfasst, wobei die Cachemerkmale zusätzlich einen oder mehrere Konfigurationsparameter einschließen, und wobei die Konfigurationsparameter einen Kopfindikator der gemeinsam genutzten Region und einen Schwanzindikator der gemeinsam genutzten Region einschließen.
  • Beispiel 39 schließt den Gegenstand von jedem der Beispiele 27-38 ein, und ferner einschließend Anpassen, durch die Netzwerkrechenvorrichtung, des Bias-Werts als Reaktion auf ein Resultat des Vergleichs des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts.
  • Beispiel 40 schließt eine Rechenvorrichtung umfassend einen Prozessor ein; und einen Speicher, aufweisend darin gespeichert mehrere Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, die Netzwerkrechenvorrichtung dazu veranlassen, das Verfahren nach einem der Beispiele 27-39 durchzuführen.
  • Beispiel 41 schließt ein oder mehrere maschinenlesbare Ablagemedien ein, umfassend mehrere darauf gespeicherte Anweisungen, die, als Reaktion auf ihr Ausführen dazu führen, dass eine Netzwerkrechenvorrichtung das Verfahren nach einem der Beispiele 27-39 durchführt.
  • Beispiel 42 schließt eine Netzwerkrechenvorrichtung für regionsbasierte Cacheverwaltung ein, die Netzwerkrechenvorrichtung umfassend Mittel zum Auswählen einer Cachezeile für eine Räumung aus den mehreren Cachezeilen, wobei die Cachezeile eine von mehreren Cachezeilen eines Cachespeichers umfasst, der sich auf einem Prozessor der Netzwerkrechenvorrichtung befindet; Mittel zum Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in einem Cacheblock des Cachespeichers befindet, der gegenwärtig einer entsprechenden Speicherregion eines Hauptspeichers der extern an den Prozessor gekoppelten Netzwerkrechenvorrichtung zugeordnet ist, wobei der Cacheblock eine oder mehrere der mehreren Cachezeilen umfasst; Mittel zum Abrufen, als Reaktion auf eine Feststellung, dass der Cacheblock einer entsprechenden Speicherregion zugeordnet ist, eines mit der entsprechenden Speicherregion verbundenen Bias-Werts, wobei der Bias-Wert einer fraktionalen Wahrscheinlichkeit entspricht; Mittel zum Erzeugen eines Bias-Vergleichswerts für die entsprechende Speicherregion; Mittel zum Vergleichen des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts; und Mittel zum Räumen der Cachezeile als Reaktion auf eine Feststellung, dass ein Ergebnis des Vergleichs angibt, die Cachezeile zu räumen.
  • Beispiel 43 schließt den Gegenstand von Beispiel 42 ein, und wobei das Mittel zum Auswählen der Cachezeile für eine Räumung Mittel zum Auswählen der Cachezeile basierend auf einer nicht-gerichteten Cacheräumungsstrategie umfasst.
  • Beispiel 44 schließt den Gegenstand von einem der Beispiele 42 und 43 ein, und wobei das Mittel zum Erzeugen des Bias-Vergleichswerts Mittel zum Erzeugen des Bias-Vergleichswerts als eine Funktion einer gerichteten Münzwurfsimulation umfasst.
  • Beispiel 45 schließt den Gegenstand von jedem der Beispiele 42-44 ein, und wobei das Mittel zum Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Mittel zum Lesen eines modellspezifischen Registers der entsprechenden Speicherregion umfasst, das eine Angabe der entsprechenden Speicherregion einschließt, der der Cacheblock zugeordnet ist.
  • Beispiel 46 schließt den Gegenstand von jedem der Beispiele 42-45 ein, und wobei das Mittel zum Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Mittel zum Feststellen umfasst, ob die entsprechende Speicherregion eine gemeinsam genutzte Speicherregion ist, die zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen.
  • Beispiel 47 schließt den Gegenstand von jedem der Beispiele 42-46 ein, und wobei das Mittel zum Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Mittel zum Feststellen umfasst, ob die entsprechende Speicherregion eine Relaisspeicherregion ist, die zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 48 schließt den Gegenstand von jedem der Beispiele 42-47 ein, und ferner einschließend einen Hauptspeicherverwaltungsschaltkreis zum (i) Zuteilen eines Blocks von Hauptspeicher, wobei der Block von Hauptspeicher einen Bereich von Speicheradressen des Hauptspeichers umfasst und (ii) Verbinden des Cacheblocks mit dem zugeteilten Block von Hauptspeicher; Mittel zum Teilen des zugeteilten Blocks von Hauptspeicher in mehrere Speicherregionen; Mittel zum Zuordnen eines entsprechenden Teils des Cacheblocks zu jeder der mehreren Speicherregionen; und Mittel zum Zuweisen von Cachemerkmalen zu jeder der mehreren Speicherregionen, wobei die Cachemerkmale einen Regionsindikator und den Bias-Wert einschließen.
  • Beispiel 49 schließt den Gegenstand von jedem der Beispiele 42-48 ein, und wobei Zuteilen des Blocks von Hauptspeicher Zuteilen eines sequenziellen Bereichs von Speicheradressen des Hauptspeichers umfasst.
  • Beispiel 50 schließt den Gegenstand von jedem der Beispiele 42-49 ein, und wobei das Mittel zum Teilen des zugeteilten Blocks von Hauptspeicher in die mehreren Speicherregionen Mittel zum Teilen des zugeteilten Blocks von Hauptspeicher in eine gemeinsam genutzte Region und eine Relaisregion umfasst, wobei die gemeinsam genutzte Region zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen, und wobei die Relaisregion zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  • Beispiel 51 schließt den Gegenstand von jedem der Beispiele 42-50 ein, und wobei das Mittel zum Zuweisen des Regionsindikators zu der gemeinsam genutzten Region Mittel zum Speichern eines Indikators für eine gemeinsam genutzte Region in einem modellspezifischen Register umfasst.
  • Beispiel 52 schließt den Gegenstand von jedem der Beispiele 42-51 ein, und wobei das Mittel zum Zuweisen des Regionsindikators zu der Relaisregion Mittel zum Speichern eines Indikators für eine Relaisregion in einem modellspezifischen Register umfasst.
  • Beispiel 53 schließt den Gegenstand von jedem der Beispiele 42-52 ein, und wobei der entsprechende Teil des der gemeinsam genutzten Region zugeordneten Cachespeichers einen Ringpuffer umfasst, wobei die Cachemerkmale zusätzlich einen oder mehrere Konfigurationsparameter einschließen, und wobei die Konfigurationsparameter einen Kopfindikator der gemeinsam genutzten Region und einen Schwanzindikator der gemeinsam genutzten Region einschließen.
  • Beispiel 54 schließt den Gegenstand von jedem der Beispiele 42-53 ein, und ferner einschließend Mittel zum Anpassen des Bias-Werts als Reaktion auf ein Resultat des Vergleichs des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts.

Claims (22)

  1. Netzwerkrechenvorrichtung für regionsbasierte Cacheverwaltung, die Netzwerkrechenvorrichtung umfassend: einen Prozessor aufweisend einen Cachespeicher; einen Hauptspeicher, unterschiedlich von dem Cachespeicher, gekoppelt an den Prozessor; und eine oder mehrere Datenspeichervorrichtungen, aufweisend darin gespeichert mehrere Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, die Netzwerkrechenvorrichtung dazu veranlassen: eine Cachezeile für eine Räumung aus mehreren Cachezeilen des Cachespeichers auszuwählen; festzustellen, ob die für eine Räumung ausgewählte Cachezeile sich in einem Cacheblock des Cachespeichers befindet, der gegenwärtig einer entsprechenden Speicherregion des Hauptspeichers zugeordnet ist, wobei der Cacheblock eine oder mehrere der mehreren Cachezeilen umfasst; als Reaktion auf eine Feststellung, dass der Cacheblock einer entsprechenden Speicherregion zugeordnet ist, einen mit der entsprechenden Speicherregion verbundenen Bias-Wert abzurufen, wobei der Bias-Wert einer fraktionalen Wahrscheinlichkeit entspricht; einen Bias-Vergleichswert für die entsprechende Speicherregion zu erzeugen; den Bias-Wert der entsprechenden Speicherregion und den für die entsprechende Speicherregion erzeugten Bias-Vergleichswert zu vergleichen; und die Cachezeile zu räumen als Reaktion auf eine Feststellung, dass ein Resultat des Vergleichs angibt, die Cachezeile zu räumen.
  2. Netzwerkrechenvorrichtung nach Anspruch 1, wobei Auswählen der Cachezeile für eine Räumung Auswählen der Cachezeile basierend auf einer nicht-gerichteten Cacheräumungsstrategie umfasst.
  3. Netzwerkrechenvorrichtung nach Anspruch 1, wobei Erzeugen des Bias-Vergleichswerts Erzeugen des Bias-Vergleichswerts als eine Funktion einer gerichteten Münzwurfsimulation umfasst.
  4. Netzwerkrechenvorrichtung nach Anspruch 1, wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Lesen eines modellspezifischen Registers der entsprechenden Speicherregion umfasst, das eine Angabe der entsprechenden Speicherregion einschließt, der der Cacheblock zugeordnet ist.
  5. Netzwerkrechenvorrichtung nach Anspruch 1, wobei die mehreren Anweisungen ferner die Netzwerkrechenvorrichtung dazu veranlassen: einen Block von Hauptspeicher zuzuteilen, wobei der Block von Hauptspeicher eine Reihe von Speicheradressen des Hauptspeichers umfasst; den Cacheblock mit dem zugeteilten Block von Hauptspeicher zu verbinden; den zugeteilten Block von Hauptspeicher in mehrere Speicherregionen zu teilen; einen entsprechenden Teil des Cacheblocks jeder der mehreren Speicherregionen zuzuordnen; und jeder der mehreren Speicherregionen Cachemerkmale zuzuweisen, wobei die Cachemerkmale einen Regionsindikator und den Bias-Wert einschließen.
  6. Netzwerkrechenvorrichtung nach Anspruch 5, wobei Zuteilen des Blocks von Hauptspeicher Zuteilen eines sequenziellen Bereichs von Speicheradressen des Hauptspeichers umfasst.
  7. Netzwerkrechenvorrichtung nach Anspruch 5, wobei Teilen des zugeteilten Blocks von Hauptspeicher in die mehreren Speicherregionen Teilen des zugeteilten Blocks von Hauptspeicher in eine gemeinsam genutzte Region und eine Relaisregion umfasst, wobei die gemeinsam genutzte Region zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen, und wobei die Relaisregion zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  8. Netzwerkrechenvorrichtung nach Anspruch 7, wobei Zuweisen des Regionsindikators zu der gemeinsam genutzten Region Speichern eines Indikators für eine gemeinsam genutzte Region in einem modellspezifischen Register umfasst, und wobei Zuweisen des Regionsindikators zu der Relaisregion Speichern eines Indikators für eine Relaisregion in einem modellspezifischen Register umfasst.
  9. Netzwerkrechenvorrichtung nach Anspruch 7, wobei der entsprechende Teil des der gemeinsam genutzten Region zugeordneten Cachespeichers einen Ringpuffer umfasst, wobei die Cachemerkmale zusätzlich einen oder mehrere Konfigurationsparameter einschließen, und wobei die Konfigurationsparameter einen Kopfindikator der gemeinsam genutzten Region und einen Schwanzindikator der gemeinsam genutzten Region einschließen.
  10. Netzwerkrechenvorrichtung nach Anspruch 1, wobei die mehreren Anweisungen ferner die Netzwerkrechenvorrichtung dazu veranlassen, den Bias-Wert als Reaktion auf ein Resultat des Vergleichs des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts anzupassen.
  11. Verfahren für regionsbasierte Cacheverwaltung, das Verfahren umfassend: Auswählen, durch eine Netzwerkrechenvorrichtung, einer Cachezeile für eine Räumung aus den mehreren Cachezeilen, wobei die Cachezeile eine von mehreren Cachezeilen eines Cachespeichers umfasst, der sich auf einem Prozessor der Netzwerkrechenvorrichtung befindet; Feststellen, durch die Netzwerkrechenvorrichtung, ob die für eine Räumung ausgewählte Cachezeile sich in einem Cacheblock des Cachespeichers befindet, der gegenwärtig einer entsprechenden Speicherregion eines Hauptspeichers der an den Prozessor gekoppelten Netzwerkrechenvorrichtung zugeordnet ist, wobei der Cacheblock eine oder mehrere der mehreren Cachezeilen umfasst; Abrufen, durch die Netzwerkrechenvorrichtung und als Reaktion auf eine Feststellung, dass der Cacheblock einer entsprechenden Speicherregion zugeordnet ist, eines mit der entsprechenden Speicherregion verbundenen Bias-Werts, wobei der Bias-Wert einer fraktionalen Wahrscheinlichkeit entspricht; Erzeugen, durch die Netzwerkrechenvorrichtung, eines Bias-Vergleichswerts für die entsprechende Speicherregion; Vergleichen, durch die Netzwerkrechenvorrichtung, des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts; und Räumen, durch die Netzwerkrechenvorrichtung, der Cachezeile als Reaktion auf eine Feststellung, dass ein Resultat des Vergleichs angibt, die Cachezeile zu räumen.
  12. Verfahren nach Anspruch 11, wobei Auswählen der Cachezeile für eine Räumung Auswählen der Cachezeile basierend auf einer nicht-gerichteten Cacheräumungsstrategie umfasst.
  13. Verfahren nach Anspruch 11, wobei Erzeugen des Bias-Vergleichswerts Erzeugen des Bias-Vergleichswerts als eine Funktion einer gerichteten Münzwurfsimulation umfasst.
  14. Verfahren nach Anspruch 11, wobei Feststellen, ob die für eine Räumung ausgewählte Cachezeile sich in dem Cacheblock befindet, der der entsprechenden Speicherregion zugeordnet ist, Lesen eines modellspezifischen Registers der entsprechenden Speicherregion umfasst, das eine Angabe der entsprechenden Speicherregion einschließt, der der Cacheblock zugeordnet ist.
  15. Verfahren nach Anspruch 11, das ferner umfasst: Zuteilen, durch die Netzwerkrechenvorrichtung, eines Blocks von Hauptspeicher, wobei der Block von Hauptspeicher eine Reihe von Speicheradressen des Hauptspeichers umfasst; Verbinden, durch die Netzwerkrechenvorrichtung, des Cacheblocks mit dem zugeteilten Block von Hauptspeicher; Teilen, durch die Netzwerkrechenvorrichtung, des zugeteilten Blocks von Hauptspeicher in mehrere Speicherregionen; Zuordnen, durch die Netzwerkrechenvorrichtung, eines entsprechenden Teils des Cacheblocks zu jeder der mehreren Speicherregionen; und Zuweisen, durch die Netzwerkrechenvorrichtung, von Cachemerkmalen zu jeder der mehreren Speicherregionen, wobei die Cachemerkmale einen Regionsindikator und den Bias-Wert einschließen.
  16. Verfahren nach Anspruch 15, wobei Zuteilen des Blocks von Hauptspeicher Zuteilen eines sequenziellen Bereichs von Speicheradressen des Hauptspeichers umfasst.
  17. Verfahren nach Anspruch 15, wobei Teilen des zugeteilten Blocks von Hauptspeicher in die mehreren Speicherregionen Teilen des zugeteilten Blocks von Hauptspeicher in eine gemeinsam genutzte Region und eine Relaisregion umfasst, wobei die gemeinsam genutzte Region zugeteilt ist, um Daten zu speichern, die von mindestens einer einer virtualisierten Komponente oder einer physischen Komponente der Netzwerkrechenvorrichtung gemeinsam genutzt werden sollen, und wobei die Relaisregion zugeteilt ist, um vorübergehende Datenkommunikationen zu speichern.
  18. Verfahren nach Anspruch 17, wobei Zuweisen des Regionsindikators zu der gemeinsam genutzten Region Speichern eines Indikators für eine gemeinsam genutzte Region in einem modellspezifischen Register umfasst, und wobei Zuweisen des Regionsindikators zu der Relaisregion Speichern eines Indikators für eine Relaisregion in einem modellspezifischen Register umfasst.
  19. Verfahren nach Anspruch 17, wobei der entsprechende Teil des der gemeinsam genutzten Region zugeordneten Cachespeichers einen Ringpuffer umfasst, wobei die Cachemerkmale zusätzlich einen oder mehrere Konfigurationsparameter einschließen, und wobei die Konfigurationsparameter einen Kopfindikator der gemeinsam genutzten Region und einen Schwanzindikator der gemeinsam genutzten Region einschließen.
  20. Verfahren nach Anspruch 11, ferner umfassend Anpassen, durch die Netzwerkrechenvorrichtung, des Bias-Werts als Reaktion auf ein Resultat des Vergleichs des Bias-Werts der entsprechenden Speicherregion und des für die entsprechende Speicherregion erzeugten Bias-Vergleichswerts.
  21. Netzwerkrechenvorrichtung, umfassend: einen Prozessor; und einen Speicher, aufweisend darin gespeichert mehrere Anweisungen, die, wenn sie von dem Prozessor ausgeführt werden, die Netzwerkrechenvorrichtung dazu veranlassen, das Verfahren nach einem der Ansprüche 11-20 durchzuführen.
  22. Ein oder mehrere maschinenlesbare Speichermedien umfassend mehrere auf diesen gespeicherte Anweisungen, die, als Reaktion auf ihr Ausführen dazu führen, dass eine Netzwerkrechenvorrichtung das Verfahren nach einem der Ansprüche 11-20 durchführt.
DE112017001654.1T 2016-03-31 2017-03-01 Technologien für regionsgerichtete cacheverwaltung Pending DE112017001654T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/087,162 US9846652B2 (en) 2016-03-31 2016-03-31 Technologies for region-biased cache management
US15/087,162 2016-03-31
PCT/US2017/020225 WO2017172214A1 (en) 2016-03-31 2017-03-01 Technologies for region-biased cache management

Publications (1)

Publication Number Publication Date
DE112017001654T5 true DE112017001654T5 (de) 2018-12-20

Family

ID=59959998

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001654.1T Pending DE112017001654T5 (de) 2016-03-31 2017-03-01 Technologien für regionsgerichtete cacheverwaltung

Country Status (3)

Country Link
US (1) US9846652B2 (de)
DE (1) DE112017001654T5 (de)
WO (1) WO2017172214A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109983538B (zh) 2016-11-29 2023-06-16 Arm有限公司 存储地址转换
US11119923B2 (en) * 2017-02-23 2021-09-14 Advanced Micro Devices, Inc. Locality-aware and sharing-aware cache coherence for collections of processors
US11727997B2 (en) * 2017-07-07 2023-08-15 Micron Technology, Inc. RPMB improvements to managed NAND
US10866904B2 (en) * 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US10929308B2 (en) 2017-11-22 2021-02-23 Arm Limited Performing maintenance operations
US10831673B2 (en) 2017-11-22 2020-11-10 Arm Limited Memory address translation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
US6448840B2 (en) * 1999-11-30 2002-09-10 Intel Corporation Adaptive body biasing circuit and method
WO2001042907A2 (en) * 1999-12-10 2001-06-14 Broadcom Corporation Apparatus and method for reducing precision of data
US7549022B2 (en) * 2006-07-21 2009-06-16 Microsoft Corporation Avoiding cache line sharing in virtual machines
US7822926B2 (en) * 2007-04-16 2010-10-26 Arm Limited Cache memory
US8069308B2 (en) * 2008-02-13 2011-11-29 Honeywell International Inc. Cache pooling for computing systems
US7915951B1 (en) * 2009-11-02 2011-03-29 Nanya Technology Corp. Locally calibrated current source
US9645938B2 (en) * 2013-09-27 2017-05-09 Intel Corporation Cache operations for memory management

Also Published As

Publication number Publication date
WO2017172214A1 (en) 2017-10-05
US9846652B2 (en) 2017-12-19
US20170286310A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
DE112017001654T5 (de) Technologien für regionsgerichtete cacheverwaltung
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE102018204859A1 (de) Dynamischer Lastenausgleich in Netzschnittstellenkarten für eine optimale Leistung auf Systemebene
DE112017001762T5 (de) Technologien für den einsatz dynamischer underlay-netzwerke in cloud-computing-infrastrukturen
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102015118711B4 (de) Technologien zur Netzwerkpaketcacheverwaltung
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE102015119889A1 (de) Verfahren für Netzwerkvorrichtungsfluss-Look-up-Verwaltung
DE112016004347T5 (de) Lokale und globale Datenzentrumsnetzoptimierungen in Echtzeit basierend auf Plattformtelemetriedaten
DE102016103492B4 (de) Datenverarbeitungsvorrichtung und Verfahren zum Überwachen von Netzwerkverkehr und Maschinenlesbares Speichermedium
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112016005933T5 (de) Technologien zum Durchsetzen einer Netzwerkzugriffssteuerung fiir virtuelle Maschinen
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE112013000381T5 (de) Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
US20080270653A1 (en) Intelligent resource management in multiprocessor computer systems
DE112010001467T5 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE112016004367T5 (de) Technologien für automatische Prozessorkern-Zuordnungsverwaltung und -Kommunikation unterVerwendung direkter Datenplatzierung in private Zwischenspeicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed