DE102022124481A1 - Dynamische zuweisung von cache-ressourcen - Google Patents

Dynamische zuweisung von cache-ressourcen Download PDF

Info

Publication number
DE102022124481A1
DE102022124481A1 DE102022124481.4A DE102022124481A DE102022124481A1 DE 102022124481 A1 DE102022124481 A1 DE 102022124481A1 DE 102022124481 A DE102022124481 A DE 102022124481A DE 102022124481 A1 DE102022124481 A1 DE 102022124481A1
Authority
DE
Germany
Prior art keywords
pinned
cache
data
cache device
entries
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
DE102022124481.4A
Other languages
English (en)
Inventor
Elazar Cohen
Amir Keren
Iliya BOKHMAN
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 DE102022124481A1 publication Critical patent/DE102022124481A1/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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Abstract

Hierin beschriebene Beispiele umfassen eine Cache-Steuerung und eine Cache-Vorrichtung. Bei einigen Beispielen ist die Cache-Steuerung, wenn sie in Betrieb ist, ausgebildet: während des Prozessorbetriebs dynamisch eine maximale Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen. Bei einigen Beispielen ist die Cache-Steuerung ausgebildet, einen Eintrag in einen Tag-Speicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung nicht überschritten wird. Bei einigen Beispielen umfasst der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind.

Description

  • HINTERGRUND
  • Der Cache-Speicher wird verwendet, um die Zeit für das Zugreifen auf Daten im Vergleich zum Datenzugriff aus dem Hauptspeicher zu reduzieren. Bei Netzwerkanwendungen können Nachschlagetabellen, die sich in Host-Speicher befinden, für einen schnelleren Zugriff in einem Cache gespeichert werden. Der Cache-Speicher weist jedoch eine begrenzte Menge an Speicherressourcen auf. Daten in dem Cache, wie z. B. privilegierte Flusseinträge, können gepinnt werden, um einen Ausschluss der Daten aus dem zu verhindern, und um eine rechtzeitige Verarbeitung von Paketdaten basierend auf den privilegierten Flusseinträge bereitzustellen. Nicht gepinnte Daten können aus dem Cache ausgeschlossen werden, um Platz für andere Daten zu schaffen.
  • Cache-Ausschlussschemata umfassen Am Längsten-Nicht-Verwendete- (LRU-; Least Recently Used) Techniken, die nicht garantieren, dass Daten in dem Cache verbleiben, wenn auf die Daten in letzter Zeit nicht zugegriffen wurde. Wenn angefragte Daten nicht in dem Cache gespeichert sind, kommt es zu einem Cache-Miss (Cache-Fehlschlag), und es kann ein Zugriff zum Lesen der Daten aus dem Hauptspeicher erfolgen. Der Zugriff auf die Daten aus dem Hauptspeicher kann jedoch die Datenzugriffszeit erhöhen und zu einer schlechten Cache-Performance führen. Einige Cache-Lösungen können eine feste Anzahl von Einträgen pro Cache-Satz pinnen (festlegen), um zu verhindern, dass Daten aus dem Cache ausgeschlossen werden. Das Pinning von Daten in einem Cache kann eine Anzahl von Cache-Misses (Cache-Fehlschlägen) reduzieren.
  • Figurenliste
    • 1 zeigt ein beispielhaftes System.
    • 2 zeigt ein beispielhaftes System.
    • 3 stellt einen beispielhaften Prozess dar.
    • 4 stellt einen beispielhaften Prozess dar.
    • 5 zeigt ein Beispiel von Testergebnissen.
    • 6 zeigt ein beispielhaftes System.
  • DETAILLIERTE BESCHREIBUNG
  • Daten, auf die aus einem Cache zugegriffen wird und die in dem Cache gepinnt werden sollen, können sich je nach Verkehrszuständen (z. B. aktiver oder inaktiver Fluss) dynamisch ändern. Während der Anwendungslaufzeit bestimmen einige Beispiele ein Verhältnis zwischen gepinnten und nicht gepinnten Einträgen in dem Cache und reagieren in Echtzeit auf sich ändernde Zugriffe auf Daten aus dem Cache und entsprechendes Pinning von Daten, um ein Verhältnis zwischen gepinnten und nicht gepinnten Einträgen in dem Cache zu ändern. Bei einigen Beispielen wird die Anzahl der maximal gepinnten Objekte pro Satz adaptiv an die Benutzerbedürfnisse während der Anwendungslaufzeit in einem Bereich von [0 ... Anzahl der Wege] angepasst, während der Überlaufspeicher einen oder mehrere Einträge speichern kann, wenn eine Anzahl von gepinnten Objekten oder Wegen für einen Satz überschritten wird. Ein Überlaufspeicher kann flexibel zusätzliche Anzahlen von gepinnten Einträgen speichern, als durch die Konfiguration der Anzahl der gepinnten Einträge in dem Cache unterstützt wird. Wenn eine Anfrage gestellt wird, einen gepinnten Eintrag zu speichern, aber keine nicht-belegten gepinnten Einträge in Tag-Speicher vorhanden sind, kann der gepinnte Eintrag oder das gepinnte Tag in Überlaufspeicher gespeichert werden. Bei einigen Beispielen wird kein Überlaufspeicher verwendet und stattdessen speichert der Tag-Speicher gepinnte Einträge oder Tags.
  • Einige Beispiele stellen eine dynamische Modifikation einer Anzahl der gepinnten Wege pro Satz eines Caches bereit. Basierend auf der Überwachung eines Belegungsgrades des Überlaufspeichers kann eine Anzahl von gepinnten Einträge pro Satz adaptiv modifiziert werden. Dieses System kann dynamisch einen Pinning-Grad erzeugen, die Cache-Auslastung erhöhen und variierende Pinning-Anfragen adressieren. Die Fähigkeit, den Grad des Pinning über den Cache hinweg dynamisch einzustellen, führt zu einer besseren Auslastung des Cache und spart Die-Bereich, während versuch wird, einen bestimmten Grad an Pinning festzulegen.
  • Ein Eintrag in einem Cache kann einen Adressbereich oder -region im Speicher darstellen, der/die Daten speichert, die im Cache-Speicher gespeichert sind. Bei einigen Beispielen kann ein Eintrag in dem Cache als gepinnter Eintrag konfiguriert werden. Ein Feld innerhalb eines Cache-Eintrags (z. B. ein oder mehrere Bits) kann anzeigen, ob eine Speicherregion in dem Cache gepinnt ist.
  • Das Pinning von Einträgen und entsprechenden Daten in einem Cache kann eine vorhersehbare Datenzugriffs-Latenzzeit bereitstellen und eine Anzahl der Speicherzugriffe aufgrund von Cache-Misses reduzieren. Wenn eine Vorrichtung beispielsweise einen selten genutzten Flusskontext mit hoher Priorität verwendet, aber ein vorhersehbarer Zugriff auf den Flusskontext erforderlich ist, sollte der Flusskontext im Cache beibehalten werden, auch wenn er kürzlich nicht verwendet wurde.
  • 1 zeigt ein System, das gepinnte Einträge durch Nutzung eines Tag-Speichers und eines Überlauf-Tag-Speichers managen kann. Die Prozessoren 102-0 bis 102-A können eine XPU umfassen. Eine XPU kann ein oder mehrere umfassen von: einen Kern einer zentralen Verarbeitungseinheit (CPU; central processing unit), eine Grafikverarbeitungseinheit (GPU; graphics processing unit), eine Allzweck-GPU (GPGPU), feldprogrammierbare Gate-Arrays (FPGA; field programmable gate array), eine beschleunigte Verarbeitungseinheit (APU; Accelerated Processing Unit), einen Beschleuniger oder einen anderen Prozessor. Ein Kern kann ein Ausführungskern oder eine Rechen-Maschine sein, der/die in der Lage ist, Anweisungen auszuführen. Ein Kern kann Zugang zu seinem eigenen Cache und Nur-Lese-Speicher (ROM; read only memory) haben, oder mehrere Kerne können einen Cache oder ROM gemeinschaftlich verwenden. Kerne können homogene und/oder heterogene Vorrichtungen sein.
  • Die Prozessoren 102-0 bis 102-A können auf einen oder mehrere zugreifen oder dieselben nutzen von: Level-1 (L1-) Cache 104-0 bis 104-A, Level-2- (L2-) Cache 106-0 bis 106-A, Level-3- (L3-) Cache oder Last Level Cache (LLC) 108, flüchtiger oder nichtflüchtiger Speicher 110, Speicherung 112 und Vorrichtungen 114. Ein oder mehrere von L1, L2 oder LLC können einen Gepinnter-Eintrag-Manager 120 umfassen, der eine Anzahl von gepinnten Einträgen im Tag-Speicher 122 und die Speicherung von gepinnten Einträgen in einen Überlaufspeicher 124 managen kann, wie hier beschrieben. Ein oder mehrere von L1, L2 oder LLC können einen Tag-Speicher 122 umfassen, der verwendet werden kann, um Einträge zu speichern, die angeben, welche der möglichen Speicherregionen derzeit in einem Cache gespeichert ist. Ein Eintrag im Tag-Speicher 122 kann ein oder mehrere umfassen von: Eintrags-Identifizierer (ID), Adressensegment, Gültigkeitsanzeige, Gepinnt-Anzeige, LRU-Anzeige (least recently used; am längsten nicht verwendet). Das Adressensegment kann einen Teil einer Adresse im Hauptspeicher von Daten umfassen, die in einem Cache gespeichert sind. Ein oder mehrere von L1, L2 oder LLC können einen Überlauf-Tag-Speicher umfassen, der sich mit dem Tag-Speicher auf-Die befindet und der zum Speichern von Einträgen verwendet werden kann, die Gepinnte-Data-Schreibanfragen zugeordnet sind, wenn gepinnte Einträge im Tag-Speicher 122 nicht verfügbar sind. Zum Einstellen oder Modifizieren einer Anzahl von gepinnten Einträgen im Tag-Speicher 122 können Prozessoren 102-0 bis 102-A Treiber ausführen oder eine Auf-Die-Firmware-Maschine (-Engine) kann eine Anzahl verfügbarer gepinnter Einträge managen. Es wird darauf hingewiesen, dass sich Beispiele zwar auf die Prozessoren 102-0 bis 102-A beziehen, andere hierin beschriebene Vorrichtungen (z. B. Vorrichtungen 114) jedoch auf einen oder mehrere zugreifen können von Level-1- (L1) Cache- 104-0 bis 104-A, Level-2- (L2-) Cache 106-0 bis 106-A, Level-3- (L3-) Cache oder Last Level Cache (LLC) 108, flüchtiger oder nichtflüchtiger Speicher 110 oder Speicherung 112.
  • Die Prozessoren 102-0 bis 102-A können irgendeine Anwendung ausführen (z. B. virtuelle Maschine (VM), Container, Microservice, serverlose Anwendung, Prozess usw.). Die Anwendung kann Daten-Lesevorgänge aus einem Speicher oder Schreibvorgänge in einen Cache anfordern. Verschiedene Beispiele der Anwendung können eine Paketverarbeitung durchführen, basierend auf einem oder mehreren von Data Plane Development Kit (DPDK), Storage Performance Development Kit (SPDK), OpenDataPlane, Network Function Virtualization (NFV), Software-Defined Networking (SDN), Evolved Packet Core (EPC) oder 5G Network Slicing. Einige Beispielimplementierungen von NFV sind in den ETSI-Spezifikationen oder Open Source NFV MANO) der Open Source Mano (OSM) Gruppe des ETSI beschrieben. Eine virtuelle Netzwerkfunktion (VNF; virtual network function) kann eine Dienstkette oder eine Sequenz virtualisierter Aufgaben umfassen, die ausgeführt werden auf generischer, konfigurierbarer Hardware, wie beispielsweise Firewalls, Domain Name System (DNS), Caching oder Netzwerkadressübersetzung (NAT; network address translation), und in VEEs laufen können. VNFs können als eine Dienstkette miteinander verknüpft sein. Bei einigen Beispielen ist EPC eine von 3GPP spezifizierte Kernarchitektur zumindest für den Long Term Evolution- (LTE-) Zugriff. 5G Network Slicing kann das Multiplexen von virtualisierten und unabhängigen logischen Netzwerken auf derselben physischen Netzwerkinfrastruktur ermöglichen. Einige Anwendungen können Videoverarbeitung oder Medientranscodierung durchführen (z. B. Ändern der Codierung von Audio-, Bild- oder Video-Dateien).
  • Daten, die in einem Cache gepinnt werden können, umfassen, sind aber nicht beschränkt auf, Daten, die aus einem externen Speicher nachgeschlagen werden. Zum Beispiel können gespeicherte Daten ein oder mehrere umfassen von: MAC-Kontextinformation, IPv4-Kontextinformation, TCP-Kontextinformation, Port-/Sockel-Kontextinformation oder Anwendungsadressinformation. MAC-Kontextinformation kann Information bezogen auf einen MAC-Kontext umfassen und kann Treiberdatenstrukturen, Treiberstatistikstrukturen usw. umfassen. IPv4-Kontextinformation kann sich zum Beispiel auf IPv4-Paketverarbeitungsinformation wie beispielsweise Routing-Tabellen, Entscheidung zur Weiterleitung, Übertragung zum Host usw. beziehen. TCP-Kontextinformation kann sich zum Beispiel auf Information bezogen auf eine TCP-Verbindung beziehen und kann ein oder mehrere umfassen von: Sequenznummer, Überlastfenster (Congestion Window), ausstehende Pakete, Informationen über eine nicht funktionierende Warteschlange usw. Beispielsweise kann sich Port-/Sockel-Kontextinformation auf Kontextinformation auf Sockel-Ebene beziehen, wie z. B., aber nicht beschränkt auf, Sockel-Einstellungen, Sockel-Flags, Adressfamilie des Sockels, Warteschlange in der dem Sockel zugeordneten Netzwerkschnittstelle, Verbindungsstatus (z. B. Warten, Ruhezustand, Aktivität), Threads, die auf eine Aktion warten, usw. So kann sich beispielsweise Anwendungsadresse-Information auf Daten beziehen, die sich auf Anwendungskontext-Information beziehen.
  • Vorrichtungen 114 können ein oder mehrere umfassen von: XPU, CPU, CPU-Sockel, Grafikverarbeitungseinheit (GPU), Prozessor, Netzwerkschnittstellenvorrichtung, Beschleunigervorrichtung, Board Management Controller (BMC), Speicherungssteuerung, Speichersteuerung, Anzeige-Maschine, eine Peripherievorrichtung, Intel® Management oder Manageability Engine (ME), AMD Platform Security Processor (PSP), ARM-Kern mit TrustZone-Erweiterung, Platform Controller Hub (PCH; Plattformsteuerungshub), anwendungsspezifische integrierte Schaltung (ASIC) usw. Eine Netzwerkschnittstellenvorrichtung 150 kann umfassen ein oder mehrere von: Netzwerkschnittstellensteuerung (NIC; network interface controller), SmartNIC, Router, Switch, Weiterleitungselement, Infrastrukturverarbeitungseinheit (IPU; infrastructure processing unit) oder Datenverarbeitungseinheit (DPU; data processing unit).
  • 2 zeigt ein beispielhaftes System. Das System kann Teil einer Cache-Bank (CB) sein. Der Cache-Speicher 2010 kann ein oder mehrere umfassen von: L1-Cache, L2-Cache, L3-Cache, LLC oder ein flüchtiger oder nichtflüchtiger Speicher. Der Cache-Speicher 2010 kann Daten speichern, die einer Speicheradressregion oder -bereich (nicht gezeigt) in einer lokalen oder entfernten Speichervorrichtung zugeordnet sind. Der Tag-Speicher 2012 kann Daten, die im Cache-Speicher 2010 gespeichert sind, unter Verwendung eines Eintrags identifizieren. Bei einigen Beispielen kann ein Eintrag eines oder mehrere der folgenden Felder umfassen: Eintrags-Identifizierer (ID), Gültigkeitsanzeige, Gepinnt/Nicht-Gepinnt-Anzeige oder LRU-Anzeige (least recently used).
  • Der Tag-Speicher 2012 kann Metadaten-Information (Eintrag) der im Cache-Speicher 2010 gespeicherten Daten speichern. Bei diesem Beispiel ist der Tag-Speicher 2012 ausgebildet, Einträge für X Anzahl von Wegen für N-1 Sätze zu speichern, die im Cache-Speicher 2010 gespeicherten Daten entsprechen. Der Cache-Speicher 2010 kann nach verschiedenen Schemata ausgebildet sein. Bei einigen Beispielen kann der Cache-Speicher 2010 ein satz-assoziativer Cache mit 1024 Sätzen und 8 Wegen sein, es können jedoch auch andere Anzahlen von Sätzen und Wegen verwendet werden. Ein satz-assoziativer Cache kann in mehrere Abschnitte unterteilt werden, die als Cache-Wege bezeichnet werden. Ein Cache-Weg kann als ein direkt gemappter Cache für einen Speicherplatz in dem Hauptspeicher behandelt werden. Die Cache-Wege können in Sätze gruppiert werden, um ein satz-assoziatives Schema zu erstellen, wobei ein Satz einem Satz von Hauptspeicherplätzen entspricht. Ein Hauptspeicher kann zum Beispiel 1024 Speicherplätze aufweisen und kann in vier Gruppen unterteilt werden. Ein erster Satz von Hauptspeicherplätzen kann die Plätze 0-255 umfassen, ein zweiter Satz von Hauptspeicherplätzen kann die Plätze 256-511 umfassen usw. Der satz-assoziative Cache kann 200 Wege aufweisen, die in 4 Gruppen von 50 Wegen gruppiert werden können, wobei jeder Satz von Wegen einem Satz von Hauptspeicherplätzen entspricht. Ein erster Satz von Wegen kann beispielsweise 50 Wege umfassen, auf denen Daten aus irgendeinem des ersten Satzes von Hauptspeicherplätzen (Speicherplätze 1-250) gespeichert werden können. Bei einem anderen Beispiel kann ein erster Satz von Wegen 50 Wege umfassen, auf denen Daten aus irgendeinem von einem Satz von Hauptspeicherplätzen (z. B. Speicherplätze 1, 5, 9, 13 ... 993, 997) gespeichert werden können.
  • Der Überlauf-Tag-Speicher 2014 kann Metadaten-Information von Daten speichern, für Pinnen angefragt wurde, aber eine konfigurierte maximale Anzahl von gepinnten Einträgen wurde zuvor erreicht. Daten, die einem im Überlauf-Tag-Speicher 2014 gespeicherten Eintrag entsprechen, können im Cache-Speicher 2010 gespeichert werden. Bei einigen Beispielen kann die Steuerung 2000 einen Eintrag in einen Überlauf-Tag-Speicher 2014 speichern, basierend darauf, dass eine erlaubte Anzahl von gepinnten Einträgen in dem Tag-Speicher 2012 überschritten wird. Bei einigen Beispielen kann der Überlauf-Tag-Speicher 2014 basierend auf einem vollständig assoziativen Cache implementiert werden. Bei einigen Beispielen können der Tag-Seicher 2012 und/oder der Überlauf-Tag-Speicher 2014 als Inhaltsadressierbarer-Speicher- (CAM-; content addressable memory) Vorrichtungen implementiert werden. Die Adressierung in der Überlauf-Tag-Speicher-Tabelle 2014 kann unter Verwendung eines inhaltsadressierbaren Speicher (CAM) erfolgen. Bei einigen Beispielen ist der Überlauf-Tag-Speicher 2014 möglicherweise nicht einem Satz zugeordnet.
  • Bei einigen Beispielen kann eine Cache-Eintrags-Zahl geringer sein als die Speichergröße. So können beispielsweise 4 Millionen Hauptspeichereinträge in einen Cache mit 8K Einträgen im Verhältnis 1:512 abgebildet werden. Bei einem solchen Beispiel können 1K Sätze und 8 Wege zugewiesen werden. Der Tag-Speicher 2012 kann 1024 Sätze und 8 Wege in jedem Satz umfassen. Der Datenspeicher kann 8192 Einträge umfassen und der Überlaufspeicher 2014 kann 512 Einträge umfassen. Der für den Überlauf-Tag-Speicher 2014 zugewiesene Datenspeicher kann zusätzlich zum Cache-Datenspeicher verwendet werden. Bei 1K Sets und 8 Wegen und 512 Überlaufeinträgen können beispielsweise 8K Einträge im Datenspeicher für den Cache (Sätze * Wege) verwendet werden und zusätzliche 512 Dateneinträge können für den Überlaufspeicher 2014 verwendet werden.
  • Beispielsweise kann die Steuerung 2000 eine Eingabe empfangen, zumindest ein oder mehrere von: eine Datenleseanfrage (z. B. nicht-gepinnt) aus dem Cache, die einen Lesevorgang von Daten aus dem Speicher und einen Schreibvorgang in den Cache-Speicher 2010 verursacht; einen Schreibvorgang von Daten in den Cache-Speicher 2010; einen Schreibvorgang in einen externen Speicher (nicht gezeigt) und das Flushen von Daten aus in den Cache-Speicher 2010; oder eine gepinnte Schreibanfrage von Daten in den Cache-Speicher 2010. Beispielsweise kann eine gepinnte Schreibanfrage (Cache Bank (CB) Pin WR Req) einen Datenschreibvorgang in den Cache-Speicher 2010 und das Pinning dieser Daten im Cache-Speicher 2010 sowie das Pinning eines zugeordneten Eintrags im Tag-Speicher 2012 anfordern. Wenn der Tag-Speicher 2012 eine Anzahl von gepinnten Einträgen für einen Satz, der der gepinnten Schreibanfrage zugeordnet ist, nicht erreicht und nicht überschritten hat, kann die Steuerung 2000 ein Pinning eines Eintrags, der der gepinnten Schreibanfrage zugeordnet ist, an den Tag-Speicher 2012 veranlassen, indem sie eine gepinnte Schreibanfrage (Tag Mem Pin WR Req) ausgibt.
  • Wenn jedoch der Tag-Speicher 2012 eine Anzahl von gepinnten Einträgen für einen Satz, der der gepinnten Schreibanfrage zugeordnet ist, erreicht oder überschritten hat, kann die Steuerung 2000 ein Pinning eines Eintrags, der der gepinnten Schreibanfrage zugeordnet ist, veranlassen, den Tag-Speicher 2014 zu überlaufen.
  • Die Steuerung 2000 kann eine Anzahl der gepinnten Einträge im Tag-Speicher 2012 basierend auf dem/den Nutzungsgrades/en des Überlauf-Tag-Speichers 2014 erhöhen. Wenn zum Beispiel eine Schwellenwertanzahl von gepinnten Einträgen im Tag-Speicher 2012 verwendet wird, kann eine Anzahl von gepinnten Einträge im Tag-Speicher 2012 erhöht werden. Umgekehrt kann eine Anzahl von gepinnten Einträgen im Tag-Speicher 2012 verringert werden, wenn weniger als eine zweite Schwellenwertanzahl von gepinnten Einträgen im Tag-Speicher2012 verwendet wird, wobei die zweite Schwellenwertanzahl geringer als die Schwellenwertanzahl ist. Die Schwellenwertanzahl kann eingestellt werden, um einen Überlauf-Tag-Speicher 2014 vor Überauslastung und davor, dass er nicht verfügbar ist, um einen Puffer gegen übermäßige Anfragen von Pin-Daten im Cache-Speicher 2010 bereitzustellen, zu schützen. Dementsprechend kann eine dynamische Zuordnung von gepinnte Einträgen im Tag-Speicher 2012 und entsprechenden Speicherregionen im Cache-Speicher 2010 erfolgen. Die Steuerung 2000 kann bei einigen Beispielen Firmware-Code ausführen.
  • Ein beispielhafter Betrieb des Systems von 2 wird als nächstes beschrieben. Bei diesem Beispiel gibt es 2 gepinnte Einträge pro Satz. Ansprechend auf den Empfang einer gepinnten Schreibanfrage mit Daten, die im Cache-Speicher 2010 gepinnt werden sollen (nichtausschließbar), können die Daten in den Cache-Speicher 2010 geschrieben werden. Wenn im Cache-Speicher 2010 eine freie Speicherregion vorhanden ist, können die Daten im Cache-Speicher 2010 und der entsprechende Eintrag im Tag-Speicher 2012 gespeichert werden. Wenn im Cache-Speicher 2010 keine Speicherregion verfügbar ist, können nicht-gepinnte Daten ausgeschlossen werden, und die Daten können im Cache-Speicher 2010 als gepinnter Eintrag gespeichert werden anstelle der ausgeschlossenen, nicht-gepinnten Daten und ihres im Tag-Speicher 2012 gespeicherten, entsprechenden Eintrags im Tag-Speicher 2012.
  • Eine zweite gepinnte Schreibanfrage mit zweiten Daten, die in den Cache-Speicher 2010 gepinnt werden sollen, wird empfangen. Wenn im Cache-Speicher 2010 eine freie Speicherregion vorhanden ist, können die zweiten Daten im Cache-Speicher 2010 und der entsprechende Eintrag im Tag-Speicher 2012 gespeichert werden. Wenn im Cache-Speicher 2010 keine Speicherregion verfügbar ist, können nicht-gepinnte Daten ausgeschlossen werden, und die zweiten Daten können im Cache-Speicher 2010 als gepinnter Eintrag gespeichert werden anstelle der ausgeschlossenen, nicht-gepinnten Daten und ihres im Tag-Speicher 2012 gespeicherten, entsprechenden Eintrags für die zweiten Daten.
  • Eine dritte gepinnte Schreibanfrage mit zweiten Daten, die in den Cache-Speicher 2010 gepinnt werden sollen, wird empfangen. Wenn im Cache-Speicher 2010 eine freie Speicherregion vorhanden ist, können die dritten Daten im Cache-Speicher 2010 und der entsprechende Eintrag im Tag-Speicher 2012 gespeichert werden. Wenn beispielsweise der Pinning-Schwellenwert für den Satz 2 beträgt und sich 2 gepinnte Elemente im Tag-Speicher 2012 für den Satz befinden, kann ein drittes Pin-Anfrageelement im Überlaufspeicher 2014 gespeichert werden, selbst wenn es einen leeren Eintrag in dem Satz gibt.
  • Wenn im Cache-Speicher 2010 keine Speicherregion verfügbar ist, können nicht-gepinnte Daten ausgeschlossen werden, und die dritten Daten können im Cache-Speicher 2010 als gepinnter Eintrag gespeichert werden anstelle der ausgeschlossenen, nicht-gepinnten Daten und ihres im Tag-Speicher 2012 gespeicherten, entsprechenden Eintrags für die dritten Daten. Da zwei gepinnte Einträge zugewiesen werden, kann ein Eintrag für die dritten Daten in den Überlaufspeicher 2014 geschrieben werden.
  • Ein Client, der die Speicherung der dritten Daten im Cache-Speicher 2010 anfragt, kann darüber informiert werden, wenn die dritten Daten nicht im Cache-Speicher 2010 gepinnt sind, weil keine Speicherregion verfügbar ist, z. B. wenn keine ausschließbaren Daten im Cache-Speicher 2010 vorhanden sind. Eine solche Rückmeldung kann erfolgen, wenn im Tag-Speicher 2012 kein Platz ist und der Überlaufspeicher 2014 voll ist.
  • Überschreitet eine Anzahl von gepinnten Einträgen im Überlauf-Tag-Speicher 2014 einen Schwellenwert (z. B. 50 %), kann eine Anzahl von gepinnten Einträgen pro Satz erhöht werden. Es können mehrere Schwellenwerte eingestellt werden, und die Anzahl von gepinnten Einträgen pro Satz kann durch Erreichen verschiedener steigender Schwellenwerte (z. B. 75 %, 90 %) erhöht werden.
  • Bei einer empfangenen Leseanfrage für die dritten Daten im Cache können die dritten Daten als im Cache-Speicher 2010 gespeichert identifiziert werden, und eine LRU-Aktualisierung für einen den dritten Daten zugeordneten Eintrag kann aktualisiert werden. Die dritten Daten können an den Anfrager bereitgestellt werden.
  • 3 zeigt einen Beispielprozess zum Zuweisen einer Anzahl von gepinnten Einträgen pro Satz. Bei 302 können eine Anzahl von gepinnten Einträgen pro Satz und der erste und der zweite Füllstandschwellenwert eines Überlauf-Tag-Speicher konfiguriert werden. Die Anzahl von gepinnten Einträgen pro Satz kann eine Begrenzung von gepinnten Einträgen in einem Tag-Speicher angeben. Der erste Füllstandschwellenwert kann einen niedrigeren Füllstand eines Überlauf-Caches angeben, der eine Verringerung der Anzahl von gepinnten Einträgen pro Satz triggern kann. Der zweite Füllstandschwellenwert kann einen höheren Füllstand eines Überlauf-Caches angeben, der eine Erhöhung der Anzahl von gepinnten Einträgen pro Satz triggern kann.
  • So können z. B. ein oder mehrere Sätze eines satzassoziativen Cache basierend auf der Anzahl von gepinnten Einträgen pro Satz gepinnt werden. Bei einigen Beispielen könnte eine Anzahl von gepinnten Einträgen, der erste und/oder der zweite Füllstandschwellenwert auf einem Service Level Agreement (SLA) basieren. Die Konfiguration kann beispielsweise durch einen Orchestrator, einen Treiber, eine für das Cache-Management verantwortliche Auf-Die-Firmware-Maschine, eine von einem Server-Prozessor ausgeführte Steuerebene oder andere Beispiele ausgeführt werden.
  • Beispielsweise kann ein MAX_PIN Control and Status Register (CSR; Steuer- und Zustandsregister) die Anzahl von gepinnten Einträgen pro Satz in dem Bereich [0 bis NumOfWays; NumOfWays = Anzahl von Wegen] definieren. Der Wert in dem CSR kann sich während der Laufzeit einer Anwendung, die gepinnte Einträge nutzt, ändern, wodurch die Zuweisung von gepinnten Objekten pro Satz für einen begrenzten Zeitraum sichergestellt wird. Der Parameter OVF DEPTH kann eine Größe des Überlaufspeichers für gepinnte Einträge definieren.
  • Bei 304 kann eine Anzahl von gepinnten Einträgen in dem Überlaufpuffer überwacht werden. Der Empfang einer gepinnten Schreibanfrage an dem CB-Block kann dazu führen, dass die gepinnten Objektdaten in den Tag-Speicher geschrieben werden. Wenn in einem Satz kein freier Eintrag für einen anderen gepinnten Eintrag vorhanden ist, kann der Eintrag in den Überlauf-Tag-Speicher und die zugeordneten Daten in den Cache-Speicher geschrieben werden.
  • Bei 306 kann bestimmt werden, ob eine Anzahl von gepinnten Einträgen in dem Überlauf-Tag-Speicher den ersten Schwellenwert erreicht oder unterschreitet oder den zweiten Schwellenwert erreicht oder überschreitet. Basierend auf der Erfüllung einer der beiden Bedingungen kann der Prozess zu 302 zurückkehren, wo basierend darauf, dass eine Anzahl von gepinnten Einträgen in dem Überlauf-Tag-Speicher den ersten Schwellenwert erreicht oder unterschreitet, eine Anzahl von gepinnten Einträgen in dem Tag-Speicher reduziert werden kann; oder basierend darauf, dass eine Anzahl von gepinnten Einträgen in dem Überlauf-Tag-Speicher den zweiten Schwellenwert erreicht oder überschreitet, eine Anzahl von gepinnten Einträgen in dem Tag-Speicher erhöht werden kann. Bei einigen Beispielen kann der erste Schwellenwert bei 25 % Belegung liegen. Bei einigen Beispielen kann der zweite Schwellenwert bei 50 % Belegung liegen. Der Belegungsgrad des Überlauf-Tag-Speichers kann begrenzt werden, um die Fähigkeit zum Aufnehmen von Anfragen nach gepinnten Einträgen bereitzustellen.
  • 4 zeigt einen beispielhaften Prozess, der zum Speichern eines einer gepinnten Schreibanfrage zugeordneten Eintrags verwendet werden kann. Bei 402 kann eine Gepinnte-Daten-Schreibanfrage an einem Cache-Block empfangen werden. Bei 404 kann bestimmt werden, ob ein der Gepinnte-Daten-Schreibanfrage zugeordneter Eintrag in dem Tag-Speicher des Caches gespeichert werden kann. Die Anzahl der verfügbaren gepinnten Einträge in dem Tag-Speicher kann auf einer Konfiguration basieren, die dynamisch angepasst werden kann. Ist ein gepinnter Eintrag in dem Tag-Speicher verfügbar, kann der Prozess mit 406 fortgesetzt werden. Bei 406 kann der Eintrag, der der Gepinnte-Daten-Schreibanfrage zugeordnet ist, in dem Tag-Speicher des Caches gespeichert werden.
  • Ist ein gepinnter Eintrag in dem Tag-Speicher nicht verfügbar, kann der Prozess mit 410 fortgesetzt werden. Bei 410 kann der Eintrag, der der Gepinnte-Daten-Schreibanfrage zugeordnet ist, in dem Überlauf-Tag-Speicher gespeichert werden. Es wird darauf hingewiesen, dass, in einigen Fällen, wenn im Überlauf-Tag-Speicher keine gepinnte Region verfügbar ist, die Daten und ihr Eintrag als nicht-gepinnt gespeichert werden.
  • 5 zeigt eine Anzahl von gepinnten Objekten im Überlaufspeicher pro Cache-Pinning-Grad für unterschiedliche Anzahlen von gepinnten Einträgen pro Satz. Die Verwendung des dynamischen Pinning-Zuweisungsflusses ermöglicht die Auswahl von gepinnten Einträgen pro Satz, um den Überlaufspeicher-Pinning-Grad des Überlaufspeichers unter einer Belegung von 50 % zu halten. Wenn beispielsweise 30 % des Cache durch gepinnte Objekte belegt sind, kann die Anzahl der zugewiesenen gepinnten Einträgen pro Satz 4 von 8 sein, um eine Überlaufspeicherbestückung von weniger als 50 % sicherzustellen.
  • 6 stellt ein System dar. Verschiedene Beispiele können von System 600 verwendet werden, um einen Grad von gepinnten Einträgen in einem Tag-Speicher basierend auf der Belegung eines Überlauf-Tag-Speichers, wie hier beschrieben, anzupassen. Ein System 600 umfasst einen Prozessor 610, der eine Verarbeitung, ein Operationsmanagement und eine Ausführung von Anweisungen für das System 600 bereitstellt. Der Prozessor 610 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), beschleunigter Verarbeitungseinheit (APU; Accelerated Processing Unit), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 600 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 610 steuert den Gesamtbetrieb des Systems 600 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder Ähnliches oder eine Kombination solcher Bauelemente sein oder umfassen. Wie hier beschrieben, kann der Mikrocode eines Prozessors 610 durch eine Offline-zu-Online-Operation aktualisiert werden und es ermöglichen, dass eine von diesem Prozessor ausgeführte Arbeitslast von einem anderen Prozessor ausgeführt werden kann.
  • Bei einem Beispiel umfasst das System 600 eine Schnittstelle 612, die mit dem Prozessor 610 gekoppelt ist, was eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite benötigt, wie beispielsweise ein Speicherteilsystem 620 oder eine Grafikschnittstelle 640 oder einen Beschleuniger 642. Die Schnittstelle 612 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet eine Grafikschnittstelle 640 eine Schnittstelle mit Grafikkomponenten, um an einen Benutzer des Systems 600 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 640 eine hochauflösende (HD-; high definition) Anzeige treiben, die an einen Benutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1180p), Retina-Displays, 6K (ultrahochauflösend oder UHD (ultra-high definition)) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 640 eine Anzeige basierend auf Daten, die in dem Speicher 630 gespeichert sind oder basierend auf Operationen, die der Prozessor 610 ausführt oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 640 eine Anzeige basierend auf Daten, die in dem Speicher 630 gespeichert sind oder basierend auf Operationen, die der Prozessor 610 ausführt oder beidem.
  • Die Beschleuniger 642 können eine Programmierbare- oder Feste-Funktion-Offload-Maschine sein, auf die ein Prozessor 610 zugreifen kann oder die von einem selben verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 642 aufeinanderfolgende und spekulative Decodieroperationen auf eine hierin beschriebene Weise, Kompressions- (DC-) Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 642 zusätzlich oder alternativ Feldauswahlsteuerungsfähigkeiten bereit, wie hierin beschrieben. In einigen Fällen können die Beschleuniger 642 in einen CPU-Sockel ( z. B. einen Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 642 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Einzel- oder Multi-Level-Cache, funktionale Einheiten, verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 642 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle der künstlichen Intelligenz (KI; AI - artificial intelligence) oder des maschinellen Lernens (MI,; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten neuronalen Netzwerk oder einem anderen KI- oder MI,-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch KI- oder MI,-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 620 repräsentiert den Hauptspeicher des Systems 600 und stellt Speicherung für einen Code, der von dem Prozessor 610 auszuführen ist, oder für Datenwerte, die bei der Ausführung einer Routine zu verwenden sind, bereit. Das Speicherteilsystem 620 kann ein oder mehrere Speicherbauelemente 630 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speicherbauelemente, oder eine Kombination solcher Bauelemente. Ein Speicher 630 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 632, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 600 bereitzustellen. Zusätzlich können Anwendungen 634 auf der Software-Plattform des OS 632 von dem Speicher 630 ausgeführt werden. Die Anwendungen 634 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 636 repräsentieren Agenten oder Routinen, die an das OS 632 oder eine oder mehrere Anwendungen 634 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 632, die Anwendungen 634 und die Prozesse 636 stellen Software-Logik bereit, um Funktionen für das System 600 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 620 eine Speichersteuerung 622, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 630 ist. Es versteht sich, dass die Speichersteuerung 622 ein physikalischer Teil des Prozessors 610 oder ein physikalischer Teil der Schnittstelle 612 sein könnte. Zum Beispiel kann die Speichersteuerung 622 eine integrierte Speichersteuerung sein, die auf eine Schaltung mit dem Prozessor 610 integriert ist.
  • Bei einigen Beispielen kann das OS 632 Linux®, Windows® Server oder Personal Computer, FreeBSD®, Android®, MacOSe, iOS®, VMware vSphere, openSUSE, RHEL, CentOS, Debian, Ubuntu oder irgendein anderes Betriebssystem sein. Das OS und der Treiber können auf einer CPU ausgeführt werden, die unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entworfen wird. Bei einigen Beispielen kann ein Treiber eine Anzahl von gepinnten Einträgen in einem Tag-Speicher und Schwellenwertpegel von Belegungen eines Überlauf-Tag-Speichers ausbilden, die eine Anpassung der Anzahl von gepinnten Einträge in dem Tag-Speicher triggern, wie hier beschrieben.
  • Auch wenn nicht eigens dargestellt, versteht es sich, dass das System 600 einen oder mehrere Busse oder Bus-Systeme zwischen Vorrichtungen umfassen kann, wie beispielsweise einen Speicher-Bus, einen Grafik-Bus, Schnittstellen-Busse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect- (PCI-) Bus, einem Hyper Transport- oder Industry Standard Architecture- (ISA-) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers- (IEEE-) Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 600 eine Schnittstelle 614, die mit der Schnittstelle 612 gekoppelt sein kann. Bei einem Beispiel stellt die Schnittstelle 614 eine Schnittstellenschaltung dar, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 614. Eine Netzwerkschnittstelle 650 stellt an das System 600 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 650 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlos-standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 1050 kann Daten an eine Vorrichtung senden, die in dem gleichen Rechenzentrum oder Rack ist, oder an eine entfernte Vorrichtung, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 650 kann Daten von einer entfernten Vorrichtung empfangen, was ein Speichern von empfangenen Daten in Speicher umfassen kann. Wie hier beschrieben, kann der Mikrocode eines Prozessors 610, das Speicherteilsystem 620, die Netzwerkschnittstelle 650 oder ein Beschleuniger 642 durch eine Offline-zu-Online-Operation aktualisiert werden und es ermöglichen, dass eine von diesem Prozessor ausgeführte Arbeitslast von einem anderen Prozessor oder Beschleuniger ausgeführt werden kann.
  • Bei einem Beispiel umfasst das System 600 eine oder mehrere Eingangs-/Ausgangs- (I/O-: input/output) Schnittstellen 660. Die I/O-Schnittstelle 660 kann eine oder mehrere Schnittstellenkomponenten umfassen, über die ein Benutzer mit dem System 600 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellbildung). Eine Peripherieschnittstelle 670 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig von dem System 600 verbinden. Eine abhängige Verbindung ist eine, bei der das System 600 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • Bei einem Beispiel umfasst das System 600 ein Speicherungsteilsystem 680, um Daten auf nichtflüchtige Weise zu speichern. Bei einem Beispiel können bei bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 680 mit Komponenten des Speicherteilsystems 620 überlappen. Das Speicherungsteilsystem 680 umfasst (eine) Speicherungsvorrichtung(en) 684, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- (solid state) oder optisch-basierte Platten oder eine Kombination. Die Speicherung 684 umfasst Code oder Anweisungen und Daten 646 in einem dauerhaften Zustand (d. h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 600 erhalten). Die Speicherung 684 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 630 üblicherweise der ausführende oder arbeitende Speicher ist, um an den Prozessor 610 Anweisungen bereitzustellen. Während die Speicherung 684 nichtflüchtig ist, kann der Speicher 630 flüchtigen Speicher umfassen (d. h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 600 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 680 eine Steuerung 682, um eine Schnittstelle mit der Speicherung 684 zu bilden. Bei einem Beispiel ist die Steuerung 682 ein physikalischer Teil der Schnittstelle 614 oder des Prozessors 610 oder kann Schaltungen oder Logik sowohl in dem Prozessor 610 als auch in der Schnittstelle 614 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher kann ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten, umfassen. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Speicher mit hoher Bandbreite), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Ableitungen oder Erweiterungen solcher Spezifikationen basieren.
  • Eine Nichtflüchtiger-Speicher- (NVM-; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt ist, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einigen Beispielen kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (zum Beispiel Single-Level Cell („SLC“), Multi-Level Cell („MI,C““), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder ein anderes NAND) umfassen. Eine NVM-Vorrichtung kann auch ein byteadressierbares dreidimensionales Write-in-Place Cross Point- (Vor-Ort-Schreiben-Kreuzpunkt-) Speicherbauelement oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (zum Beispiel Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie, Spin Transfer Torque- (STT-) MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierende Vorrichtung, eine DW- (Domain Wall; Domänenwand) und SOT- (Spin Orbit Transfer) -basierte Vorrichtung, ein thyristorbasiertes Speicherbauelement oder eine Kombination aus irgendeinem der obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt an die Komponenten des Systems 600 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 600, um an die Komponenten des Systems 600 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom-; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien- ( z. B. Solarleistung-) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 600 unter Verwendung von miteinander verbundenen Rechenschlitten von Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwendet werden, wie beispielsweise: Ethernet (IEEE 802.3), entfernter Direktspeicherzugriff (RDMA; remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) -Verbindung, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen Array-Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Rechenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst ein Blade Komponenten, die herkömmlichen Servern gemein sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Verschiedene Beispiele können in einer Basisstation verwendet werden, die Kommunikationen unterstützt, die drahtgebundene oder drahtlose Protokolle (z. B. 3GPP Long Term Evolution (LTE) (4G) oder 3GPP 5G), lokale Rechenzentren, externe Rechenzentren, Edge-Netzwerkelemente, Edge-Server und -Schalter, Fog-Netzwerkelemente und/oder hybride Rechenzentren (z. B. Rechenzentrum, das Virtualisierung, Cloud und softwaredefiniertes Netzwerken nutzt, um Anwendung-Arbeitslasten über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen zu liefern) nutzen.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Rechenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst jedes Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d.h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs; integrated circuits) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Bei einigen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Ausführungsbeispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G und so weiter), Makro-Basisstation (z. B. 5G-Netzwerke), Picostation (z. B. einem IEEE 802.11-kompatiblen Zugriffspunkt), Nanostation (z. B. für Punkt-zu-Multipunkt- (PtMP-; Point-to-MultiPoint) Anwendungen) verwendet werden.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklus-Budget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Ein Prozessor kann ein oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Software-Elemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, -weise oder -syntax implementiert sein, um eine Maschine, ein(e) Rechenvorrichtung oder System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise unterteilt, weggelassen oder in Beispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht zwingend als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Operationen können auch gemäß alternativen Beispielen ausgeführt werden. Ferner können zusätzliche Operationen, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Fachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und Alternativen davon verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff usw. entweder X, Y oder Z oder irgendeine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Beispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele der Vorrichtungen, Systeme und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Beispiel der Vorrichtungen, Systeme und Verfahren kann irgendein oder mehrere, und irgendeine Kombination, der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen: eine Cache-Vorrichtungs-Steuerung auszubilden, um: dynamisch, während des Prozessorbetriebs, eine maximale Anzahl von zugewiesenen gepinnten Regionen in einer Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen.
  • Beispiel 2 umfasst ein oder mehrere Beispiele, wobei die Cache-Vorrichtungs-Steuerung ausgebildet ist, einen Eintrag in einen Tag-Speicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung nicht überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  • Beispiel 3 umfasst ein oder mehrere Beispiele, wobei die Cache-Vorrichtungs-Steuerung ausgebildet ist, einen Eintrag in einen Überlaufspeicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  • Beispiel 4 umfasst ein oder mehrere Beispiele, wobei die Nutzung von gepinnten Regionen eine Anzahl von gepinnten Einträgen umfasst.
  • Beispiel 5 umfasst ein oder mehrere Beispiele, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung ein Erhöhen einer Anzahl von zugewiesenen gepinnten Einträgen umfasst, basierend darauf, dass die Nutzung von gepinnten Regionen einen Schwellenwert erreicht oder überschreitet.
  • Beispiel 6 umfasst ein oder mehrere Beispiele, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung ein Verringern einer Anzahl von zugewiesenen gepinnten Einträgen umfasst, basierend darauf, dass die Nutzung von gepinnten Regionen einen zweiten Schwellenwert erreicht oder geringer als derselbe ist.
  • Beispiel 7 umfasst ein oder mehrere Beispiele, wobei in der Cache-Vorrichtung gespeicherte Daten eines oder mehrere umfassen von: Flussdaten oder Verbindungskontext.
  • Beispiel 8 umfasst ein oder mehrere Beispiele, wobei eine Vorrichtung ausgebildet ist, Daten in die Cache-Vorrichtung zu speichern, und die Vorrichtung eines oder mehrere umfasst von: einen Multi-Thread-Kern, eine zentrale Verarbeitungseinheit (CPU), eine XPU, eine Grafikverarbeitungseinheit (GPU), eine Netzwerkschnittstellenvorrichtung oder eine anwendungsspezifische integrierte Schaltung (ASIC).
  • Beispiel 9 umfasst ein oder mehrere Beispiele, und umfasst eine Vorrichtung, umfassend: Cache-Steuerung und eine Cache-Vorrichtung, wobei die Cache-Steuerung ausgebildet ist, wenn sie in Betrieb ist: während des Prozessorbetriebs dynamisch eine maximale Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen.
  • Beispiel 10 umfasst ein oder mehrere Beispiele, wobei die Cache-Steuerung ausgebildet ist, einen Eintrag in einen Tag-Speicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung nicht überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  • Beispiel 11 umfasst ein oder mehrere Beispiele, wobei die Cache-Steuerung ausgebildet ist, einen Eintrag in einen Überlaufspeicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  • Beispiel 12 umfasst ein oder mehrere Beispiele, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen umfasst: Erhöhen einer Anzahl von zugewiesenen gepinnten Einträgen basierend darauf, dass die Nutzung der gepinnten Regionen einen Schwellenwert erreicht oder überschreitet, oder Verringern einer Anzahl von zugewiesenen gepinnten Einträgen basierend darauf, dass die Nutzung der gepinnten Regionen einen zweiten Schwellenwert erreicht oder geringer als derselbe ist.
  • Beispiel 13 umfasst ein oder mehrere Beispiele, wobei in der Cache-Vorrichtung gespeicherte Daten eines oder mehrere umfassen von: Flussdaten oder Verbindungskontext.
  • Beispiel 14 umfasst ein oder mehrere Beispiele, umfassend eine Vorrichtung, die ausgebildet ist, Daten in der Cache-Vorrichtung zu speichern, wobei die Vorrichtung eines oder mehrere umfasst von: einen Multi-Thread-Kern, eine zentrale Verarbeitungseinheit (CPU), eine XPU, eine Grafikverarbeitungseinheit (GPU), eine Netzwerkschnittstellenvorrichtung oder eine anwendungsspezifische integrierte Schaltung (ASIC).
  • Beispiel 15 umfasst ein oder mehrere Beispiele, umfassend ein Rechenzentrum, das die Vorrichtung und die Cache-Steuerung und die Cache-Vorrichtung umfasst, wobei das Rechenzentrum ausgebildet ist, einen Orchestrator auszuführen, der ausgebildet ist, die Nutzung von gepinnten Regionen zu identifizieren.
  • Beispiel 16 umfasst ein oder mehrere Beispiele, und umfasst ein Verfahren, umfassend: Ausbilden einer Cache-Vorrichtung, um: während des Prozessorbetriebs dynamisch eine maximale Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen.
  • Beispiel 17 umfasst ein oder mehrere Beispiele, umfassend: Speichern eines Tags in einen Tag-Speicher basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung nicht überschritten wird und Speichern des Tags in einen Überlaufspeicher basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung überschritten wird.
  • Beispiel 18 umfasst ein oder mehrere Beispiele, wobei der Tag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  • Beispiel 19 umfasst ein oder mehrere Beispiele, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen umfasst: Erhöhen einer Anzahl von zugewiesenen gepinnten Einträgen basierend darauf, dass die Nutzung der gepinnten Regionen einen Schwellenwert erreicht oder überschreitet, oder Verringern einer Anzahl von zugewiesenen gepinnten Einträgen basierend darauf, dass die Nutzung der gepinnten Regionen einen zweiten Schwellenwert erreicht oder geringer als derselbe ist.
  • Beispiel 20 umfasst ein oder mehrere Beispiele, wobei in der Cache-Vorrichtung gespeicherte Daten eines oder mehrere umfassen von: Flussdaten oder Verbindungskontext.

Claims (20)

  1. Ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen: eine Cache-Vorrichtungs-Steuerung auszubilden, um: dynamisch, während des Prozessorbetriebs, eine maximale Anzahl von zugewiesenen gepinnten Regionen in einer Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen.
  2. Das computerlesbare Medium gemäß Anspruch 1, wobei: die Cache-Vorrichtungs-Steuerung ausgebildet ist, einen Eintrag in einen Tag-Speicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung nicht überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  3. Das computerlesbare Medium gemäß einem der vorherigen Ansprüche, wobei die Cache-Vorrichtungs-Steuerung ausgebildet ist, einen Eintrag in einen Überlaufspeicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  4. Das computerlesbare Medium gemäß einem der vorherigen Ansprüche, wobei die Nutzung von gepinnten Regionen eine Anzahl von gepinnten Einträgen umfasst.
  5. Das computerlesbare Medium gemäß einem der vorherigen Ansprüche, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung ein Erhöhen einer Anzahl von zugewiesenen gepinnten Einträgen umfasst, basierend darauf, dass die Nutzung von gepinnten Regionen einen Schwellenwert erreicht oder überschreitet.
  6. Das computerlesbare Medium gemäß einem der vorherigen Ansprüche, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung ein Verringern einer Anzahl von zugewiesenen gepinnten Einträgen umfasst, basierend auf der Nutzung von gepinnten Regionen.
  7. Das computerlesbare Medium gemäß einem der vorherigen Ansprüche, wobei in der Cache-Vorrichtung gespeicherte Daten eines oder mehrere umfassen von: Flussdaten oder Verbindungskontext.
  8. Das computerlesbare Medium gemäß einem der Ansprüche 1-7, wobei eine Vorrichtung ausgebildet ist, Daten in die Cache-Vorrichtung zu speichern, und die Vorrichtung eines oder mehrere umfasst von: einen Multi-Thread-Kern, eine zentrale Verarbeitungseinheit (CPU), eine XPU, eine Grafikverarbeitungseinheit (GPU), eine Netzwerkschnittstellenvorrichtung oder eine anwendungsspezifische integrierte Schaltung (ASIC).
  9. Eine Vorrichtung, umfassend: eine Cache-Steuerung und eine Cache-Vorrichtung, wobei die Cache-Steuerung ausgebildet ist, wenn sie in Betrieb ist, um: während des Prozessorbetriebs dynamisch eine maximale Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen.
  10. Die Vorrichtung gemäß Anspruch 9, wobei die Cache-Steuerung ausgebildet ist, einen Eintrag in einen Tag-Speicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung nicht überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  11. Die Vorrichtung gemäß Anspruch 9 oder 10, wobei die Cache-Steuerung ausgebildet ist, einen Eintrag in einen Überlaufspeicher zu speichern, basierend darauf, dass eine Anzahl von gepinnten Einträgen in der Cache-Vorrichtung überschritten wird, und der Eintrag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  12. Die Vorrichtung gemäß Anspruch 9, 10 oder 11, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen umfasst: Erhöhen einer Anzahl von zugewiesenen gepinnten Einträgen basierend auf der Nutzung der gepinnten Regionen und Verringern einer Anzahl von zugewiesenen gepinnten Einträgen basierend auf der Nutzung der gepinnten Regionen.
  13. Die Vorrichtung gemäß einem der Ansprüche 9-12, wobei in der Cache-Vorrichtung gespeicherte Daten eines oder mehrere umfassen von: Flussdaten oder Verbindungskontext.
  14. Die Vorrichtung gemäß einem der Ansprüche 9-13, umfassend eine Vorrichtung, die ausgebildet ist, Daten in der Cache-Vorrichtung zu speichern, wobei die Vorrichtung eines oder mehrere umfasst von: einen Multi-Thread-Kern, eine zentrale Verarbeitungseinheit (CPU), eine XPU, eine Grafikverarbeitungseinheit (GPU), eine Netzwerkschnittstellenvorrichtung oder eine anwendungsspezifische integrierte Schaltung (ASIC).
  15. Die Vorrichtung gemäß einem der Ansprüche 9-14, umfassend ein Rechenzentrum, das die Vorrichtung und die Cache-Steuerung und die Cache-Vorrichtung umfasst, wobei das Rechenzentrum ausgebildet ist, einen Orchestrator auszuführen, der ausgebildet ist, die Nutzung von gepinnten Regionen zu identifizieren.
  16. Ein Verfahren, umfassend: Ausbilden einer Cache-Vorrichtung, um: während des Prozessorbetriebs dynamisch eine maximale Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen anzupassen.
  17. Das Verfahren gemäß Anspruch 16, umfassend: Speichern eines Tags in einen Tag-Speicher basierend auf einer Anzahl von gepinnten Einträgen in der Cache-Vorrichtung und Speichern des Tags in einen Überlaufspeicher basierend auf einer Anzahl von gepinnten Einträgen in der Cache-Vorrichtung.
  18. Das Verfahren gemäß Anspruch 17, wobei der Tag Metadaten-Information, die anzeigt, ob die Daten in der Cache-Vorrichtung gespeichert sind, umfasst.
  19. Das Verfahren gemäß einem der Ansprüche 16-18, wobei das dynamische Anpassen während des Prozessorbetriebs einer maximalen Anzahl von zugewiesenen gepinnten Regionen in der Cache-Vorrichtung basierend auf Nutzung von gepinnten Regionen umfasst: Erhöhen einer Anzahl von zugewiesenen gepinnten Einträgen basierend auf der Nutzung der gepinnten Regionen oder Verringern einer Anzahl von zugewiesenen gepinnten Einträgen basierend auf der Nutzung der gepinnten Regionen.
  20. Das Verfahren gemäß einem der Ansprüche 16-19, wobei in der Cache-Vorrichtung gespeicherte Daten eines oder mehrere umfassen von: Flussdaten oder Verbindungskontext.
DE102022124481.4A 2021-10-26 2022-09-23 Dynamische zuweisung von cache-ressourcen Pending DE102022124481A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/510,955 2021-10-26
US17/510,955 US20220043753A1 (en) 2021-10-26 2021-10-26 Dynamic allocation of cache resources

Publications (1)

Publication Number Publication Date
DE102022124481A1 true DE102022124481A1 (de) 2023-04-27

Family

ID=80115017

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022124481.4A Pending DE102022124481A1 (de) 2021-10-26 2022-09-23 Dynamische zuweisung von cache-ressourcen

Country Status (3)

Country Link
US (1) US20220043753A1 (de)
CN (1) CN116028386A (de)
DE (1) DE102022124481A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966590B2 (en) 2022-02-25 2024-04-23 Samsung Electronics Co., Ltd. Persistent memory with cache coherent interconnect interface

Also Published As

Publication number Publication date
US20220043753A1 (en) 2022-02-10
CN116028386A (zh) 2023-04-28

Similar Documents

Publication Publication Date Title
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102020118307A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102020133738A1 (de) Firmware-update-techniken
EP4231158A2 (de) Steuerung zum sperren ausgewählter cache-bereiche
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102022124530A1 (de) Speicherpoolmanagement
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
US20210014324A1 (en) Cache and memory content management
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE112010001467T5 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE102021117755A1 (de) Schutz vor netzwerk-initiierten angriffen
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE102021122233A1 (de) Beschleuniger-controller-hub