DE102021206160A1 - Cache-speicher-system - Google Patents

Cache-speicher-system Download PDF

Info

Publication number
DE102021206160A1
DE102021206160A1 DE102021206160.5A DE102021206160A DE102021206160A1 DE 102021206160 A1 DE102021206160 A1 DE 102021206160A1 DE 102021206160 A DE102021206160 A DE 102021206160A DE 102021206160 A1 DE102021206160 A1 DE 102021206160A1
Authority
DE
Germany
Prior art keywords
memory
response
data
local cache
received packet
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
DE102021206160.5A
Other languages
English (en)
Inventor
Ilan Pardo
Hillel Chapman
Mark B. Rosenbluth
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mellanox Technologies Ltd
Original Assignee
Mellanox Technologies Ltd
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 Mellanox Technologies Ltd filed Critical Mellanox Technologies Ltd
Publication of DE102021206160A1 publication Critical patent/DE102021206160A1/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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

In einer Ausgestaltung umfasst ein Computer-Serversystem einen Speicher zum Speichern von Daten über Speicherplätze hinweg, mehrere Verarbeitungskerne mit jeweiligen lokalen Caches, in denen aus dem Speicher gelesene Cache-Zeilen gecacht werden, eine Verbindung zum Verwalten von Lese- und Schreiboperationen des Speichers und lokaler Caches, zum Führen von Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen gemäß einigen der Speicherplätze, von denen die gecachten Cache-Zeilen aus dem Speicher gelesen wurden, zum Empfangen einer Schreibanforderung für ein Datenelement, das in einen der Speicherplätze geschrieben werden soll, zum Suchen eines Lokaler-Cache-Speicherplatzes, in den das Datenelement als Reaktion auf die Lokaler-Cache-Speicherplatzdaten und den Speicherplatz der Schreibanforderung geschrieben werden soll, und zum Senden einer Aktualisierungsanforderung an einen ersten Verarbeitungskern, um einen jeweiligen ersten lokalen Cache mit dem Datenelement als Reaktion auf den gefundenen Lokaler-Cache-Speicherplatz zu aktualisieren.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Computersysteme und insbesondere, aber nicht ausschließlich, das Laden von Caches.
  • HINTERGRUND
  • In Multicore-Systemen werden jedem der Kerne Puffer in einem Speicher (z.B. in DRAM) zugewiesen. Die Puffer werden von den Kernen verwaltet, und der Pufferraum kann auch einem NIC (Network Interface Controller) zugewiesen werden, der Pakete zwischen den Kernen und Geräten in einem Netzwerk überträgt. Paketdaten, die vom Netz empfangen werden und für einen bestimmten Kern bestimmt sind, werden zusammen mit einem Deskriptor im Puffer in dem diesem Kern zugewiesenen Speicher gespeichert. In einigen Systemen kann der NIC mittels empfangsseitiger Skalierung (RSS) empfangene Pakete klassifizieren und die empfangenen Paketdaten auf der Basis der Klassifizierung in mit jeweiligen Kernen assoziierte jeweilige Warteschlangen setzen. Der NIC kann dem Kern auch mitteilen (z.B. über einen Interrupt), dass sich empfangene Paketdaten im Speicher befinden, von wo der Paketdeskriptor und dann die Paketdaten (z.B. die Paketnutzlast) vom Kern abgerufen werden, um seinen lokalen Cache zu aktualisieren. Ähnliche Prozesse können für andere Peripheriegeräte wie NVMe-(Non-Volatile Memory Express)-SSD-(Solid State Drive)-Geräte verwendet werden.
  • ZUSAMMENFASSUNG
  • Die Erfindung ist durch die Ansprüche definiert. Zur Veranschaulichung der Erfindung werden hierin Aspekte und Ausgestaltungen beschrieben, die in den Umfang der Ansprüche fallen können oder auch nicht.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung wird ein Computer-Serversystem bereitgestellt, das Folgendes umfasst: einen Speicher, der zum Speichern von Daten über Speicherplätze hinweg konfiguriert ist, mehrere Verarbeitungskerne, die jeweilige lokale Caches enthalten, in denen aus dem Speicher gelesene Cache-Zeilen gecacht werden, eine Verbindung, konfiguriert zum Verwalten von Lese- und Schreiboperationen des Speichers und der lokalen Caches, Führen von Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen bzw. der Speicherplätze, aus denen die gecachten Cache-Zeilen aus dem Speicher gelesen wurden, Empfangen einer Schreibanforderung für ein Datenelement, das in einen der Speicherplätze geschrieben werden soll, Suchen eines Lokaler-Cache-Speicherplatzes, in den das Datenelement als Reaktion auf die Lokaler-Cache-Speicherplatzdaten und den Speicherplatz der Schreibanforderung geschrieben werden soll, und Senden einer Aktualisierungsanforderung an einen ersten der Verarbeitungskerne, um einen jeweiligen ersten der lokalen Caches mit dem Datenelement als Reaktion auf den gefundenen Lokaler-Cache-Speicherplatz zu aktualisieren.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung ist ferner der erste Prozessorkern zum Aktualisieren des ersten lokalen Cache mit dem Datenelement als Reaktion auf die gesendete Aktualisierungsanforderung konfiguriert.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung enthält die Verbindung darüber hinaus ein Verzeichnis, das zum Speichern der Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen bzw. der Speicherplätze der gecachten Cache-Zeilen konfiguriert ist, und die Verbindung ist zum Abfragen des Verzeichnisses als Reaktion auf den Speicherplatz der Schreibanforderung konfiguriert, was den gefundenen Lokaler-Cache-Speicherplatz ergibt.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung umfasst das System zusätzlich eine Schnittstellensteuerung, die zum Empfangen eines Pakets von mindestens einem Gerät, wobei das Paket das Datenelement enthält, und zum Erzeugen der Schreibanforderung konfiguriert ist.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung ist die Schnittstellensteuerung außerdem zum Markieren der Schreibanforderung mit einem Hinweis zum Pushen des Datenelements in den ersten lokalen Cache konfiguriert, obwohl der Schnittstellensteuerung Lokaler-Cache-Speicherplätze unbekannt sind.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung ist die Schnittstellensteuerung ferner konfiguriert zum Klassifizieren des empfangenen Pakets als Reaktion auf Header-Daten des empfangenen Pakets, Suchen eines der Speicherplätze, in den das Datenelement des empfangenen Pakets als Reaktion auf die Klassifizierung des empfangenen Pakets geschrieben werden soll, und zum Erzeugen der Schreibanforderung für das Datenelement als Reaktion auf den gefundenen Speicherplatz.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung ist die Schnittstellensteuerung darüber hinaus konfiguriert zum Suchen einer Warteschlange für das empfangene Paket als Reaktion auf die Klassifizierung des empfangenen Pakets, Suchen eines Pufferdeskriptors für das empfangene Paket als Reaktion auf die gefundene Warteschlange und Suchen des Speicherplatzes, in den das Datenelement des empfangenen Pakets als Reaktion auf den gefundenen Pufferdeskriptor geschrieben werden soll.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung umfasst die Schnittstellensteuerung zusätzlich eine Netzwerkschnittstellensteuerung zum Verwalten des Empfangs von Paketen über ein Netzwerk, wobei das mindestens eine Gerät mindestens einen Knoten in dem Netzwerk umfasst.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung umfasst die Schnittstellensteuerung außerdem eine Peripheriegerätesteuerung, und das mindestens eine Gerät umfasst mindestens ein Peripheriegerät.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung umfasst das mindestens eine Peripheriegerät ferner ein Plattenlaufwerk und/oder einen Hardware-Beschleuniger.
  • Gemäß einer anderen Ausgestaltung der vorliegenden Offenbarung wird auch ein Computer-Server-Verfahren bereitgestellt, das Folgendes beinhaltet: Speichern von Daten in einem Speicher über Speicherplätze hinweg, Cachen von aus dem Speicher gelesenen Cache-Zeilen in lokalen Caches mehrerer Verarbeitungskerne, Verwalten von Lese- und Schreiboperationen des Speichers und der lokalen Caches, Führen von Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen bzw. eines der Speicherplätze, von denen die gecachten Cache-Zeilen aus dem Speicher gelesen wurden, Empfangen einer Schreibanforderung für ein Datenelement, das in einen der Speicherplätze geschrieben werden soll, Suchen eines Lokaler-Cache-Speicherplatzes, in den das Datenelement als Reaktion auf die Lokaler-Cache-Speicherplatzdaten und den Speicherplatz der Schreibanforderung geschrieben werden soll, und Senden einer Aktualisierungsanforderung an einen ersten der Verarbeitungskerne, um einen jeweiligen ersten der lokalen Caches mit dem Datenelement als Reaktion auf den gefundenen jeweiligen Lokaler-Cache-Speicherplatz zu aktualisieren.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung beinhaltet das Verfahren darüber hinaus das Aktualisieren des ersten lokalen Cache mit dem Datenelement als Reaktion auf die gesendete Aktualisierungsanforderung.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung beinhaltet das Verfahren zusätzlich das Speichern der Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen bzw. der Speicherplätze der gecachten Cache-Zeilen in einem Verzeichnis und das Abfragen des Verzeichnisses als Reaktion auf den Speicherplatz der Schreibanforderung, was den gefundenen Lokaler-Cache-Speicherplatz ergibt.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung beinhaltet das Verfahren außerdem das Empfangen eines Pakets von mindestens einem Gerät, wobei das Paket das Datenelement enthält, und das Erzeugen der Schreibanforderung.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung beinhaltet das Verfahren ferner das Markieren, durch eine Schnittstellensteuerung, der Schreibanforderung mit einem Hinweis zum Pushen des Datenelements des Pakets in den ersten lokalen Cache, obwohl der Schnittstellensteuerung die Lokaler-Cache-Speicherplätze unbekannt sind.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung beinhaltet das Verfahren darüber hinaus das Klassifizieren des empfangenen Pakets als Reaktion auf Header-Daten des empfangenen Pakets, das Suchen eines der Speicherplätze, in den das Datenelement des empfangenen Pakets als Reaktion auf die Klassifizierung des empfangenen Pakets geschrieben werden soll, und das Erzeugen der Schreibanforderung für das empfangene Paket als Reaktion auf den gefundenen Speicherplatz.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung beinhaltet das Verfahren zusätzlich das Suchen einer Warteschlange für das empfangene Paket als Reaktion auf die Klassifizierung des empfangenen Pakets, das Suchen eines Pufferdeskriptors für das empfangene Paket als Reaktion auf die gefundene Warteschlange und das Suchen des Speicherplatzes, in den das Datenelement des empfangenen Pakets als Reaktion auf den gefundenen Pufferdeskriptor geschrieben werden soll.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung erfolgt außerdem das Empfangen des Pakets durch eine Netzwerkschnittstellensteuerung, wobei das Verfahren ferner beinhaltet, dass die Netzwerkschnittstellensteuerung den Empfang von Paketen über ein Netzwerk verwaltet, wobei das mindestens eine Gerät mindestens einen Knoten in dem Netzwerk umfasst.
  • Gemäß einer weiteren Ausgestaltung der vorliegenden Offenbarung erfolgt ferner das Empfangen des Pakets durch eine Peripheriegerätesteuerung, und das mindestens eine Gerät umfasst mindestens ein Peripheriegerät.
  • Gemäß einer Ausgestaltung der vorliegenden Offenbarung umfasst darüber hinaus das mindestens eine Peripheriegerät ein Plattenlaufwerk und/oder einen Hardwarebeschleuniger.
  • Jedes Merkmal eines Aspekts oder einer Ausgestaltung kann auf andere Aspekte oder Ausgestaltungen in jeder geeigneten Kombination angewendet werden. Insbesondere kann jedes Merkmal eines/r Verfahrensaspekts oder -ausgestaltung auf eine(n) Geräteaspekt oder -ausgestaltung angewandt werden, und umgekehrt.
  • Figurenliste
  • Die vorliegende Erfindung wird anhand der nachfolgenden detaillierten Beschreibung in Verbindung mit den Zeichnungen besser verständlich. Dabei zeigt:
    • 1 eine Blockdiagrammansicht eines Computer-Serversystems, das gemäß einer Ausgestaltung der vorliegenden Erfindung aufgebaut ist und arbeitet;
    • 2 ein Flussdiagramm, das die Schritte eines Verfahrens zum Betreiben einer Verbindung in dem System von 1 zeigt;
    • 3 ein Flussdiagramm, das die Schritte eines Verfahrens zum Betreiben einer Schnittstellensteuerung im System von 1 enthält;
    • 4 ein Flussdiagramm, das Schritte in einem Verfahren zum Verwalten von Lokaler-Cache-Aktualisierungen im System von 1 enthält; und
    • 5 ein Flussdiagramm, das Schritte in einem Verfahren zum Aktualisieren lokaler Caches im System von 1 enthält.
  • BESCHREIBUNG VON AUSGESTALTUNGSBEISPIELEN
  • ÜBERBLICK
  • Wie bereits erwähnt, kann ein NIC (Network Interface Controller) in einem Multicore-System dem relevanten Kern (z.B. über einen Interrupt) mitteilen, dass sich empfangene Paketdaten im Speicher (z.B. DRAM oder SRAM) befinden, aus dem der Paketdeskriptor und dann die Paketdaten vom Kern zum Aktualisieren seines lokalen Cache abgerufen werden. Zum Beispiel wird mittels Peripheral Component Interconnect express (PCIe) Message Signaled Interrupt (MSI/MSI-x) eine Interrupt-Nachricht an den richtigen Kern gerichtet, aber der Deskriptor und die Paketdaten werden typischerweise in einen Speicherplatz im Speicher und nicht in den lokalen Cache des Kerns geschrieben. Mit einem als empfangsseitige Skalierung (RSS) bekannten Schema können der Deskriptor und die Paketdaten in eine dedizierte Warteschlange geschrieben werden, die in der Regel mit einem Kern assoziiert ist, wodurch Zugriffskonkurrenz auf die gemeinsame Warteschlange zwischen verschiedenen Kernen vermieden wird. Allerdings weiß die NIC-Hardware normalerweise nicht, welche Warteschlange zu welchem Kern gehört.
  • Die oben genannten Methoden sind nicht sehr leistungsfähig, da die Paketdaten zunächst in den Speicher und nicht in den entsprechenden lokalen Cache geschrieben werden. Die Leistung kann verbessert werden, indem die Paketdaten direkt in den relevanten Cache geschrieben werden.
  • Eine mögliche Lösung für das obige Problem besteht darin, dass der NIC erkennt, mit welchem Kern eine RSS-Warteschlange assoziiert ist, damit der NIC die Daten in den Cache des Kerns pusht. Diese Lösung hängt von der jeweiligen Unterstützung der Funktion im NIC ab und ist daher suboptimal und geräteabhängig.
  • Ausgestaltungen der vorliegenden Erfindung lösen die obigen Probleme, indem Paketdeskriptor und Nutzdaten direkt in den relevanten Lokaler-Cache-Speicherplatz auf der Chipverbindungsebene der Zentraleinheit (CPU) des Geräts geschrieben werden, in dem das Multicore-System untergebracht ist. Daher können Unterstützung und resultierende Effizienz mit jedem beliebigen NIC oder einem anderen geeigneten Gerät erreicht werden, das Speicherpuffer verwendet (z.B. von der CPU des NIC oder einem anderen geeigneten Gerät zugewiesen), um Daten unabhängig von der Unterstützung des NIC (oder eines anderen Geräts) an die CPU-Software zu übertragen. In einigen Ausgestaltungen kann die CPU durch eine Grafikverarbeitungseinheit (GPU) oder ein anderes geeignetes Verarbeitungsgerät ersetzt werden.
  • In einigen Ausgestaltungen können beliebige geeignete Datenelemente (z.B. Nutzdaten oder andere Daten) direkt in den relevanten Lokaler-Cache-Speicherplatz geschrieben werden, unabhängig davon, ob die Datenelemente von einem NIC, einer anderen Schnittstellensteuerung oder einem anderen Element wie einer Grafikverarbeitungseinheit (GPU) oder einer anderen CPU stammen.
  • Es wird davon ausgegangen, dass die im Rahmen eines Speicherkohärenzprotokolls verfolgten Informationen eine beste Schätzung des Speicherplatzes liefern, in die Nutzdaten in den lokalen Caches geschrieben werden sollten, und zwar auf der Basis der kürzlichen Historie der lokalen Caches in Bezug auf dieselben Speicherplätze (z.B. Speicheradressen), in die die Nutzdaten geschrieben würden, wenn sie direkt in den Speicher geschrieben würden. Daher benutzt die CPU-Verbindung Informationen, die im Rahmen des Speicherkohärenzprotokolls (nachfolgend ausführlicher beschrieben) verfolgt werden, das die Lokaler-Cache-Nutzung nach Speicherplatz (z.B. Speicheradresse) verfolgt, von dem Cache-Zeilen von den Verarbeitungskernen aus dem Speicher gelesen werden. Die verfolgten Informationen umfassen die gecachten Speicherplätze und deren entsprechenden aktuellen Lokaler-Cache-Speicherplätze. Die Verbindung verarbeitet Schreibanforderungen vom NIC (zum Schreiben von Nutzdaten) durch Suchen von Cache-Speicherplätzen entsprechend in den Schreibanforderungen enthaltenen Speicherplätzen und weist die relevanten Kerne zum entsprechenden Aktualisieren ihrer lokalen Caches mit empfangenen Nutzdaten an. Wenn für einige Speicherplätze keine entsprechenden Cache-Speicherplätze gefunden werden, werden die relevanten Nutzdaten an den jeweiligen Speicherplätzen in den Speicher geschrieben.
  • Speicherkohärenz ist ein Problem, das sich auf das Design von Computersystemen auswirkt, in denen zwei oder mehr Prozessoren oder Kerne einen gemeinsamen Speicherbereich gemeinsam nutzen. In Multiprozessor- oder Multicore-Systemen arbeiten zwei oder mehr Verarbeitungselemente gleichzeitig, so dass es möglich ist, dass sie gleichzeitig auf denselben Speicherplatz zugreifen. Solange keiner von ihnen die Daten in diesem Speicherplatz ändert, können sie ihn auf unbestimmte Zeit gemeinsam nutzen und beliebig cachen. Sobald jedoch einer den Speicherplatz aktualisiert, arbeiten die anderen möglicherweise mit einer veralteten Kopie, die sich z.B. in ihrem lokalen Cache befindet. Folglich ist ein Schema (z.B. ein Speicherkohärenzprotokoll) erforderlich, um alle Verarbeitungselemente über Änderungen an gemeinsam genutzten Werten zu benachrichtigen, so dass das System einen kohärenten Speicher erhält. Das Kohärenzprotokoll kann zum Beispiel verzeichnisbasiert und/oder snoopingbasiert sein.
  • Daher werden in einem solchen Multicore-System Lese- und Schreibzugriffe auf den Speicher sowie Cache-Aktualisierungen gemäß einem Speicherkohärenzprotokoll verwaltet, in dem die CPU-Verbindung ein Verzeichnis führt, das eine Tabelle enthält, in der die Cache-Speicherplätze von aktuell lokal gecachten Cache-Zeilen und deren assoziierter Zustand und Speicherplatz (z.B. Speicheradresse) aufgeführt sind, von dem die Cache-Zeilen aus dem Speicher, z.B. DRAM oder SRAM, gelesen wurden.
  • Greift beispielsweise ein Kern auf einen Speicherplatz in DRAM zu, der sich nicht bereits in einem lokalen Cache befindet, dann wird die CPU-Verbindung darüber informiert, dass der Zugriff stattgefunden hat, und verfolgt den gecachten Speicherplatz über den Speicherplatz anhand der Tabelle im Verzeichnis.
  • Ein weiteres Beispiel: Wenn ein Kern das Lesen einer Zeile aus dem DRAM anfordert, empfängt die CPU-Verbindung die Leseanforderung und prüft im Verzeichnis, ob sich die mit diesem Speicherplatz assoziierte aktuellste Version im DRAM oder in einem lokalen Cache befindet. Dann kann die aktuellste Version der Daten von dem anfordernden Kern verwendet werden.
  • Ein weiteres Beispiel: Wenn ein Kern eine gecachte Cache-Zeile aktualisieren möchte, informiert er die Verbindung über die Aktualisierung, und alle anderen gecachten Kopien (wie im Verzeichnis aufgeführt) dieser Cache-Zeile werden ungültig gemacht. Die Verbindung kann eine Snoop-Anforderung zum Ungültigmachen der anderen Cache-Zeilen senden und erteilt dann diesem Kern die Erlaubnis zum Schreiben auf die gesamte Cache-Zeile für diesen Speicherplatz.
  • Zum Beispiel kann die CPU-Verbindung für eine Schreibtransaktion eine Schreibanforderung empfangen, um Daten in einen Speicherplatz im Speicher zu schreiben. Die CPU-Verbindung prüft das Verzeichnis, um festzustellen, ob es eine gecachte Kopie dieses Speicherplatzes gibt. Wenn es eine gecachte Kopie gibt, kann die CPU-Verbindung eine Snoop-Anforderung an den/die relevanten Kern(e) senden, um dessen/deren Kopie ungültig zu machen. Nach Erhalt der Ungültigkeitsbestätigung schreibt die CPU-Verbindung die Daten in den Speicher (z.B. DRAM) an diesem Speicherplatz.
  • In Ausgestaltungen der vorliegenden Erfindung schreibt die CPU-Verbindung, anstatt die Kopie auf dem relevanten Kern ungültig zu machen, nach Empfang einer Schreibanforderung von einer Schnittstellensteuerung wie einem NIC, die Daten direkt in den lokalen Cache des relevanten Prozessorkerns gemäß den bekannten Cache-Speicherplatzdaten im Verzeichnis. Wenn es für diesen Speicherplatz keine Kopie im lokalen Cache gibt, werden die Daten in den Speicher an diesem Speicherplatz geschrieben.
  • Das Schreiben der Daten direkt in den lokalen Cache hat mehrere Vorteile. Erstens wird die Umlaufverzögerung der Snoop-Ungültigmachung vor dem Weiterleiten der Daten vermieden. Zweitens fragt, in Bezug auf den Paketdeskriptor, der relevante Verarbeitungsprozessor den Deskriptor in der Regel ab, so dass die Speicheradresse im lokalen Cache des richtigen Kerns gecacht wird. Drittens wird in Bezug auf Paketdaten in der Regel ein Pufferpool (der den verschiedenen Kernen zugewiesenen Speicherpuffer) pro Kern implementiert, so dass das letzte Paket, das den Speicherpuffer nutzt, vom Kern verarbeitet wurde, der das neue Paket verarbeiten wird. In diesem Fall wird auch die Speicheradresse im lokalen Cache des richtigen Zielkerns gecacht. Viertens verfolgt die CPU-Verbindung Cache-Speicherplätze auf natürliche Weise im Rahmen ihrer Cache-Kohärenz-Implementierung, ohne dass ein explizites Verständnis des Anwendungstyps und des Verhaltens der Schnittstellensteuerung erforderlich ist.
  • SYSTEMBESCHREIBUNG
  • Es wird nun auf 1 verwiesen, die eine Blockdiagrammansicht eines Computer-Serversystems 10 zeigt, das gemäß einer Ausgestaltung der vorliegenden Erfindung aufgebaut ist und arbeitet. Das Computer-Serversystem 10 umfasst mehrere Prozessorkerne 12, einen Speicher 14 (z.B. einen dynamischen Direktzugriffsspeicher (DRAM) oder einen statischen Direktzugriffsspeicher (SRAM)), eine CPU-Verbindung 16 und eine Schnittstellensteuerung 18. Der Speicher 14 ist zum Speichern von Daten über mehrere Speicherplätze hinweg konfiguriert. Die Verarbeitungskerne 12 enthalten jeweils lokale Caches 20 (z.B. einen lokalen Cache 20 pro Verarbeitungskern 12), in denen aus dem Speicher 14 gelesene Cache-Zeilen von einzelnen Speicherplätzen im Speicher 14 gecacht werden. In einigen Ausgestaltungen können die Verarbeitungskerne 12 in einer Verarbeitungseinheit wie einer Zentraleinheit oder einer Grafikverarbeitungseinheit (GPU) enthalten sein. Die CPU-Verbindung 16 kann durch eine beliebige geeignete Verbindung ersetzt werden, zum Beispiel, aber nicht beschränkt auf, eine GPU-Verbindung. Die Verbindung 16 enthält ein Verzeichnis 22, das zum Speichern von Lokaler-Cache-Speicherplatzdaten und Zustandsdaten der gecachten Cache-Zeilen gemäß jeweiligen Speicherplätzen, von denen die gecachten Cache-Zeilen aus dem Speicher 14 gelesen wurden, konfiguriert ist. Das Verzeichnis 22 kann eine nach Speicherplatz indexierte Tabelle und für jeden aufgelisteten Speicherplatz einen entsprechenden Lokaler-Cache-Speicherplatz enthalten, in dem Daten aus dem Speicherplatz aktuell gespeichert sind. Jeder aufgelistete Speicherplatz kann auch einen Zustand der entsprechenden Cache-Zeile enthalten. Der Zustand kann Folgendes beinhalten: „dirty“, was anzeigt, dass die gecachten Daten gegenüber den entsprechenden Daten im Speicher 14 verändert wurden; „clean“, was anzeigt, dass die gecachten Daten nicht verändert wurden; „exclusive“, was anzeigt, dass nur ein Kern eine Kopie der Daten hat; „shared“, was anzeigt, dass es mehrere vom Speicher 14 gecachte Kopien von Daten gibt. Die Zustände können von dem benutzten Kohärenzprotokoll abhängen. Cache-Zeilen, die aus dem Cache entfernt werden, werden im Allgemeinen auch aus der Tabelle entfernt. Das Verzeichnis 22 wird von der Verbindung 16 aktualisiert, die Lese- und Schreibanforderungen sowie Aktualisierungsmeldungen empfängt, die zum Aktualisieren des Verzeichnisses 22 benutzt werden. Die Verbindung 16 führt auch andere Speicherkohärenzaufgaben gemäß einem beliebigen geeigneten Speicherkohärenzprotokoll aus.
  • Die Schnittstellensteuerung 18 kann eine beliebige geeignete Schnittstellensteuerung umfassen, die Pakete von mindestens einem Gerät 26 empfängt und Pakete zu diesem sendet. In einigen Ausgestaltungen umfasst die Schnittstellensteuerung 18 einen NIC (Network Interface Controller), um den Empfang von Paketen über ein Netzwerk 24 von dem/n Gerät(en) 26 zu verwalten, das ein oder mehrere Knoten im Netzwerk 24 sein kann.
  • In einigen Ausgestaltungen umfasst die Schnittstellensteuerung 18 eine Peripheriegerätesteuerung, und das/die Gerät(e) 26 umfasst/-en mindestens ein Peripheriegerät. In einigen Ausgestaltungen umfasst das Peripheriegerät ein Plattenlaufwerk und/oder einen Hardwarebeschleuniger.
  • Es wird nun auf 2 verwiesen, die ein Flussdiagramm 28 darstellt, das Schritte in einem Verfahren zum Betreiben der Verbindung 16 im System 10 von 1 enthält. Es wird auch auf 1 verwiesen. Die Verbindung 16 ist zum Verwalten (Block 30) von Lese- und Schreibvorgängen des Speichers 14 und der lokalen Caches 20, einschließlich Aktualisierungen und Ungültigmachungen der lokalen Caches 20 unter Beibehaltung der Kohärenz des Speichers in Übereinstimmung mit einem beliebigen geeigneten Speicherkohärenzprotokoll konfiguriert. Die Verbindung 16 ist zum Verwalten, im Verzeichnis 22 (Block 32), von Lokaler-Cache-Speicherplatzdaten und Zustandsdaten der aktuell gecachten Cache-Zeilen gemäß den jeweiligen Speicherplätzen konfiguriert, von denen die gecachten Cache-Zeilen aus dem Speicher 14 gelesen wurden. Die Lokaler-Cache-Daten und Zustandsdaten können in einer Tabelle gespeichert werden, die nach Speicherplatz indexiert ist. Beispielsweise kann jede in den lokalen Caches 20 gecachte Cache-Zeile eine Zeile in der Tabelle enthalten, die Folgendes umfasst: den Speicherplatz, von dem die gecachte Cache-Zeile aus dem Speicher 14 gelesen wurde; einen Cache-Speicherplatz, an dem die Cache-Zeile in den lokalen Caches 20 gecacht ist; und einen Zustand der Cache-Zeile.
  • Es wird nun auf 3 verwiesen, die ein Flussdiagramm 40 ist, das Schritte in einem Verfahren zum Betreiben einer Schnittstellensteuerung 18 im System 10 von 1 enthält. Es wird auch auf 1 verwiesen. Die Schnittstellensteuerung 18 ist zum Empfangen (Block 42) eines Pakets von dem/den Gerät(en) 26 konfiguriert. Die Schnittstellensteuerung 18 ist zum Klassifizieren (Block 44) des empfangenen Pakets als Reaktion auf Header-Daten des empfangenen Pakets konfiguriert. Die Klassifizierung kann gemäß einem beliebigen geeigneten Mechanismus durchgeführt werden, zum Beispiel, aber nicht beschränkt auf, RSS.
  • In einigen Ausgestaltungen ist die Schnittstellensteuerung 18 zum Suchen (Block 46) einer Empfangswarteschlange für das empfangene Paket (in die das empfangene Paket gesetzt werden soll) als Reaktion auf die Klassifizierung der empfangenen Pakete konfiguriert. Die Schnittstellensteuerung 18 ist zum Suchen (Block 48) eines Pufferdeskriptors für das empfangene Paket als Reaktion auf die gefundene Warteschlange konfiguriert. Die Schnittstellensteuerung 18 ist zum Suchen (Block 50) eines Speicherplatzes konfiguriert, in den die Nutzdaten des empfangenen Pakets als Reaktion auf die Klassifizierung des empfangenen Pakets geschrieben werden sollen. In einigen Ausgestaltungen ist die Schnittstellensteuerung 18 zum Suchen des Speicherplatzes konfiguriert, in den die Nutzdaten des empfangenen Pakets als Reaktion auf den gefundenen Pufferdeskriptor geschrieben werden sollen.
  • In einigen Ausgestaltungen schreibt die Schnittstellensteuerung 18 die Nutzdaten des empfangenen Pakets in einen Speicherpuffer (einen logischen Puffer, der sich an einem beliebigen geeigneten physischen Ort befinden kann), von dem aus die Nutzdaten anschließend in einen der lokalen Caches 20 übertragen werden, und eine oder mehrere Anzeigen (z.B. dass das Paket angekommen ist) und den Pufferdeskriptor (z.B. ein CQE (Completion Queue Element)) des Pakets in einen Speicherplatz.
  • Die Schnittstellensteuerung 18 ist zum Erzeugen (Block 52) einer Schreibanforderung für die Nutzdaten (des empfangenen Pakets) konfiguriert, die in den gefundenen Speicherplatz (gefunden im Schritt von Block 50) geschrieben werden sollen. In einigen Ausgestaltungen ist die Schnittstellensteuerung 18 zum Markieren der Schreibanforderung mit einem Hinweis zum Pushen der Nutzdaten des Pakets in einen der lokalen Caches 20 konfiguriert, obwohl Lokaler-Cache-Speicherplätze der Schnittstellensteuerung unbekannt sind.
  • In der Praxis können einige oder alle Funktionen der Schnittstellensteuerung 18 in einer einzigen physischen Komponente kombiniert oder alternativ mittels mehrerer physischer Komponenten implementiert werden. Diese physischen Komponenten können fest verdrahtete oder programmierbare Geräte oder eine Kombination aus beiden umfassen. In einigen Ausgestaltungen können zumindest einige der Funktionen der Schnittstellensteuerung 18 von einem programmierbaren Prozessor durch eine geeignete Software gesteuert ausgeführt werden. Diese Software kann in elektronischer Form auf ein Gerät, z.B. über ein Netzwerk, heruntergeladen werden. Alternativ oder zusätzlich kann die Software in materiellen, nichtflüchtigen, computerlesbaren Speichermedien, wie optischen, magnetischen oder elektronischen Speichern, gespeichert sein.
  • Die oben beschriebenen Schritte der Blöcke 42-52 können für nachfolgende Pakete oder beliebige andere geeignete Daten wiederholt werden. Der Begriff „Nutzdaten“ wird oben und unten als Beispiel für ein Datenelement verwendet, und die Nutzdaten können durch jedes andere geeignete Datenelement ersetzt werden.
  • Es wird nun auf 4 verwiesen, die ein Flussdiagramm 60 mit Schritten eines Verfahrens zur Verwaltung von Lokaler-Cache-Aktualisierungen im System 20 von 1 ist. Es wird auch auf 1 verwiesen.
  • Die Verbindung 16 ist zum Empfangen (Block 62) der Schreibanforderung (für Nutzdaten, die in den von der Schnittstellensteuerung 18 gefundenen Speicherplatz geschrieben werden sollen) von der Schnittstellensteuerung 18 konfiguriert. Die Verbindung 16 ist zum Suchen (Block 64) eines (aktuell verwendeten) Lokaler-Cache-Speicherplatzes der lokalen Caches 20 konfiguriert, in den die Nutzdaten des empfangenen Pakets als Reaktion auf die Lokaler-Cache-Speicherplatzdaten (im Verzeichnis 22 gespeichert) und den Speicherplatz der Schreibanforderung geschrieben werden sollen. Als Teilschritt des Blocks 64 ist die Verbindung 16 zum Abfragen (Block 66) des Verzeichnisses 22 als Reaktion auf den Speicherplatz der Schreibanforderung (z.B. den jeweiligen in der Schreibanforderung enthaltenen Speicherplatz) konfiguriert, was den Lokaler-Cache-Speicherplatz des lokalen Caches 20 ergibt, in den die Nutzdaten des empfangenen Pakets geschrieben werden sollen.
  • Die Verbindung 16 ist zum Senden einer Aktualisierungsanforderung zum jeweiligen (mit dem gefundenen lokalen Cache-Speicherplatz assoziierten) Verarbeitungskern 12 konfiguriert, um den jeweiligen lokalen Cache 20 mit den Nutzdaten des empfangenen Pakets als Reaktion auf den gefundenen (aktuell verwendeten) Lokaler-Cache-Speicherplatz zu aktualisieren (Block 68). Mit anderen Worten, eine Aktualisierungsanforderung zum Aktualisieren eines bestimmten lokalen Cache 20 mit Nutzdaten eines Pakets wird zum Verarbeitungskern 12 gesendet, der diesen lokalen Cache 20 umfasst, der den relevanten (aktuell verwendeten) lokalen Cache-Speicherplatz enthält, der für dieses Paket gefunden wurde. Wenn in dem Schritt des Blocks 66 kein Speicherplatz gefunden wird, was bedeutet, dass der Speicherplatz nicht mit einer der aktuell gecachten Cache-Zeilen assoziiert ist, ist die Verbindung 16 zum Schreiben der relevanten Nutzdaten in diesen Speicherplatz im Speicher 14 konfiguriert.
  • In der Praxis können einige oder alle Funktionen der Verbindung 16 in einer einzigen physischen Komponente kombiniert oder alternativ mit mehreren physischen Komponenten implementiert werden. Diese physischen Komponenten können fest verdrahtete oder programmierbare Geräte oder eine Kombination aus beiden sein. In einigen Ausgestaltungen können zumindest einige der Funktionen der Verbindung 16 von einem programmierbaren Prozessor von einer geeigneten Software gesteuert ausgeführt werden. Diese Software kann in elektronischer Form auf ein Gerät, z.B. über ein Netzwerk, heruntergeladen werden. Alternativ oder zusätzlich kann die Software in materiellen, nichtflüchtigen, computerlesbaren Speichermedien, wie optischen, magnetischen oder elektronischen Speichern, gespeichert werden.
  • Die oben beschriebenen Schritte der Blöcke 62-68 können für nachfolgende Schreibanforderungen wiederholt werden.
  • Es wird nun auf 5 verwiesen, die ein Flussdiagramm 80 ist, das die Schritte eines Verfahrens zum Aktualisieren der lokalen Caches 20 im System von 1 enthält. Es wird auch auf 1 verwiesen. Der relevante Verarbeitungskern 12 ist zum Empfangen (Block 82) der Aktualisierungsanforderung von der Verbindung 16 konfiguriert. Mit anderen Worten, jeder Verarbeitungskern 12 empfängt die an diesen Verarbeitungskern 12 adressierten Aktualisierungsanforderungen. Der relevante Verarbeitungskern 12 ist zum Abrufen der Nutzdaten des jeweiligen Pakets aus dem Speicherpuffer, in dem die Nutzdaten gespeichert sind, und zum Aktualisieren des jeweiligen lokalen Cache 20 (d.h. jeder Verarbeitungskern 12 aktualisiert seinen eigenen lokalen Cache 20) mit den Nutzdaten des jeweiligen Pakets als Reaktion auf die gesendete Aktualisierungsanforderung konfiguriert.
  • Die oben beschriebenen Schritte der Blöcke 82-84 können für nachfolgende Aktualisierungsanforderungen wiederholt werden.
  • In der Praxis können einige oder alle Verarbeitungskerne 12 in einer einzigen physischen Komponente kombiniert oder alternativ mittels mehrerer physischer Komponenten implementiert werden. Diese physischen Komponenten können fest verdrahtete oder programmierbare Geräte oder eine Kombination aus beiden sein. In einigen Ausgestaltungen können zumindest einige der Funktionen der Verarbeitungskerne 12 von einem programmierbaren Prozessor von einer geeigneten Software gesteuert ausgeführt werden. Diese Software kann in elektronischer Form auf ein Gerät, z.B. über ein Netzwerk, heruntergeladen werden. Alternativ oder zusätzlich kann die Software in materiellen, nichtflüchtigen, computerlesbaren Speichermedien, wie optischen, magnetischen oder elektronischen Speichern, gespeichert werden.
  • Verschiedene Merkmale der Erfindung, die der Übersichtlichkeit halber im Zusammenhang mit einzelnen Ausgestaltungen beschrieben werden, können auch in Kombination in einer einzigen Ausgestaltung bereitgestellt werden. Umgekehrt können verschiedene Merkmale der Erfindung, die der Kürze halber im Zusammenhang mit einer einzigen Ausgestaltung beschrieben werden, auch getrennt oder in einer beliebigen geeigneten Subkombination bereitgestellt werden.
  • Die oben beschriebenen Ausgestaltungen sind beispielhaft genannt, und die vorliegende Erfindung ist nicht auf das beschränkt, was hierin besonders gezeigt und beschrieben wurde. Vielmehr umfasst der Umfang der Erfindung sowohl Kombinationen und Subkombinationen der verschiedenen hierin beschriebenen Merkmale als auch Variationen und Modifikationen davon, die der Fachperson nach dem Lesen der vorstehenden Beschreibung einfallen würden und die im Stand der Technik nicht offenbart sind.
  • Es versteht sich von selbst, dass die oben beschriebenen Aspekte und Ausgestaltungen nur beispielhaft sind und dass Änderungen im Detail im Rahmen der Ansprüche vorgenommen werden können.
  • Alle in der Beschreibung und (ggf.) in den Ansprüchen und Zeichnungen offenbarten Vorrichtungen, Verfahren und Merkmale können unabhängig voneinander oder in jeder beliebigen geeigneten Kombination bereitgestellt werden.
  • Die in den Ansprüchen angegebenen Bezugsziffern dienen nur der Veranschaulichung und haben keine einschränkende Wirkung auf den Umfang der Ansprüche.

Claims (20)

  1. Computer-Serversystem, das Folgendes umfasst: einen Speicher, der zum Speichern von Daten über Speicherplätze hinweg konfiguriert ist; mehrere Verarbeitungskerne mit jeweiligen lokalen Caches, in denen aus dem Speicher gelesene Cache-Zeilen gecacht werden sollen; eine Verbindung, konfiguriert zum: Verwalten von Lese- und Schreiboperationen des Speichers und der lokalen Caches; Führen Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen gemäß jeweiligen Speicherplätzen, von denen die gecachten Cache-Zeilen aus dem Speicher gelesen wurden; Empfangen einer Schreibanforderung für ein Datenelement, das in einen der Speicherplätze geschrieben werden soll; Suchen eines Lokaler-Cache-Speicherplatzes, in den das Datenelement als Reaktion auf die Lokaler-Cache-Speicherplatzdaten und den Speicherplatz der Schreibanforderung geschrieben werden soll; und Senden einer Aktualisierungsanforderung an einen ersten der Verarbeitungskerne, um einen jeweiligen ersten der lokalen Caches mit dem Datenelement als Reaktion auf den gefundenen lokalen Cache-Speicherplatz zu aktualisieren.
  2. System nach Anspruch 1, wobei der erste Verarbeitungskern zum Aktualisieren des ersten lokalen Cache mit dem Datenelement als Reaktion auf die gesendete Aktualisierungsanforderung konfiguriert ist.
  3. System nach Anspruch 1 oder 2, wobei: die Verbindung ein Verzeichnis enthält, das zum Speichern der Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen gemäß jeweiligen Speicherplätzen der gecachten Cache-Zeilen konfiguriert ist; und die Verbindung zum Abfragen dee Verzeichnisses als Reaktion auf den Speicherplatz der Schreibanforderung konfiguriert ist, was den gefundenen Lokaler-Cache-Speicherplatz ergibt.
  4. System nach Anspruch 1, 2 oder 3, der ferner eine Schnittstellensteuerung umfasst, konfiguriert zum: Empfangen eines Pakets von mindestens einem Gerät, wobei das Paket das Datenelement enthält; und Erzeugen der Schreibanforderung.
  5. System nach Anspruch 4, wobei die Schnittstellensteuerung zum Markieren der Schreibanforderung mit einem Hinweis zum Pushen des Datenelements in den ersten lokalen Cache konfiguriert ist, obwohl die Lokaler-Cache-Speicherplätze der Schnittstellensteuerung unbekannt sind.
  6. System nach Anspruch 4 oder 5, wobei die Schnittstellensteuerung konfiguriert ist zum: Klassifizieren des empfangenen Pakets als Reaktion auf Header-Daten des empfangenen Pakets; Suchen von einem der Speicherplätze, in den das Datenelement des empfangenen Pakets als Reaktion auf die Klassifizierung des empfangenen Pakets geschrieben werden soll; und Erzeugen der Schreibanforderung für das Datenelement als Reaktion auf den gefundenen Speicherplatz.
  7. System nach Anspruch 6, wobei die Schnittstellensteuerung konfiguriert ist zum: Suchen einer Warteschlange für das empfangene Paket als Reaktion auf die Klassifizierung des empfangenen Pakets; Suchen eines Pufferdeskriptors für das empfangene Paket als Reaktion auf die gefundene Warteschlange; und Suchen des Speicherplatzes, in den das Datenelement des empfangenen Pakets als Reaktion auf den gefundenen Pufferdeskriptor geschrieben werden soll.
  8. System nach einem der Ansprüche 4 bis 7, wobei die Schnittstellensteuerung eine Netzwerkschnittstellensteuerung zum Verwalten des Empfangs von Paketen über ein Netzwerk umfasst, wobei das mindestens eine Gerät mindestens einen Knoten im Netzwerk umfasst.
  9. System nach einem der Ansprüche 4 bis 7, wobei die Schnittstellensteuerung eine Peripheriegerätesteuerung umfasst und das mindestens eine Gerät mindestens ein Peripheriegerät umfasst.
  10. System nach Anspruch 9, wobei das mindestens eine Peripheriegerät ein Plattenlaufwerk und/oder einen Hardwarebeschleuniger umfasst.
  11. Computer-Server-Verfahren, das Folgendes beinhaltet: Speichern von Daten in einem Speicher über Speicherplätze hinweg; Cachen von aus dem Speicher gelesenen Cache-Zeilen in lokalen Caches von mehreren Verarbeitungskernen; Verwalten von Lese- und Schreiboperationen des Speichers und der lokalen Caches; Führen lokaler Cache-Speicherplatzdaten der gecachten Cache-Zeilen gemäß einem jeweiligen der Speicherplätze, von denen die gecachten Cache-Zeilen aus dem Speicher gelesen wurden; Empfangen einer Schreibanforderung für ein Datenelement, das in einen der Speicherplätze geschrieben werden soll; Suchen eines Lokaler-Cache-Speicherplatzes, in den das Datenelement als Reaktion auf die Lokaler-Cache-Speicherplatzdaten und den Speicherplatz der Schreibanforderung geschrieben werden soll; und Senden einer Aktualisierungsanforderung an einen ersten der Verarbeitungskerne, um einen jeweiligen ersten der lokalen Caches mit dem Datenelement als Reaktion auf den gefundenen jeweiligen Lokaler-Cache-Speicherplatz zu aktualisieren.
  12. Verfahren nach Anspruch 11, das ferner das Aktualisieren des ersten lokalen Cache mit dem Datenelement als Reaktion auf die gesendete Aktualisierungsanforderung beinhaltet.
  13. Verfahren nach Anspruch 11 oder 12, das ferner Folgendes beinhaltet: Speichern der Lokaler-Cache-Speicherplatzdaten der gecachten Cache-Zeilen gemäß jeweiligen der Speicherplätze der gecachten Cache-Zeilen in einem Verzeichnis; und Abfragen des Verzeichnisses als Reaktion auf den Speicherplatz der Schreibanforderung, was den gefundenen Lokaler-Cache-Speicherplatz ergibt.
  14. Verfahren nach Anspruch 11, 12 oder 13, das ferner Folgendes beinhaltet: Empfangen eines Pakets von mindestens einem Gerät, wobei das Paket das Datenelement enthält; und Erzeugen der Schreibanforderung.
  15. Verfahren nach Anspruch 14, das ferner das Markieren, durch eine Schnittstellensteuerung, der Schreibanforderung mit einem Hinweis zum Pushen des Datenelements des Pakets in den ersten lokalen Cache beinhaltet, obwohl Lokaler-Cache-Speicherplätze der Schnittstellensteuerung unbekannt sind.
  16. Verfahren nach Anspruch 14 oder 15, das ferner Folgendes beinhaltet: Klassifizieren des empfangenen Pakets als Reaktion auf die Header-Daten des empfangenen Pakets; Suchen eines der Speicherplätze, in die das Datenelement des empfangenen Pakets als Reaktion auf die Klassifizierung des empfangenen Pakets geschrieben werden soll; und Erzeugen der Schreibanforderung für das empfangene Paket als Reaktion auf den gefundenen Speicherplatz.
  17. Verfahren nach Anspruch 16, das ferner Folgendes beinhaltet: Suchen einer Warteschlange für das empfangene Paket als Reaktion auf die Klassifizierung des empfangenen Pakets; Suchen eines Pufferdeskriptors für das empfangene Paket als Reaktion auf die gefundene Warteschlange; und Suchen des Speicherplatzes, in den das Datenelement des empfangenen Pakets als Reaktion auf den gefundenen Pufferdeskriptor geschrieben werden soll.
  18. Verfahren nach einem der Ansprüche 14 bis 17, wobei das Empfangen des Pakets durch eine Netzwerkschnittstellensteuerung erfolgt, wobei das Verfahren ferner beinhaltet, dass die Netzwerkschnittstellensteuerung das Empfangen von Paketen über ein Netzwerk verwaltet, wobei das mindestens eine Gerät mindestens einen Knoten in dem Netzwerk umfasst.
  19. Verfahren nach Anspruch 14 bis 17, wobei das Empfangen des Pakets von einer Peripheriegerätesteuerung erfolgt und das mindestens eine Gerät mindestens ein Peripheriegerät umfasst.
  20. Verfahren nach Anspruch 19, wobei das mindestens eine Peripheriegerät ein Plattenlaufwerk und/oder einen Hardwarebeschleuniger umfasst.
DE102021206160.5A 2020-06-22 2021-06-16 Cache-speicher-system Pending DE102021206160A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/907,347 2020-06-22
US16/907,347 US20210397560A1 (en) 2020-06-22 2020-06-22 Cache stashing system

Publications (1)

Publication Number Publication Date
DE102021206160A1 true DE102021206160A1 (de) 2021-12-23

Family

ID=78823256

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021206160.5A Pending DE102021206160A1 (de) 2020-06-22 2021-06-16 Cache-speicher-system

Country Status (3)

Country Link
US (1) US20210397560A1 (de)
CN (1) CN113900967A (de)
DE (1) DE102021206160A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11792303B1 (en) * 2022-09-30 2023-10-17 International Business Machines Corporation Fast clear memory of system memory

Also Published As

Publication number Publication date
US20210397560A1 (en) 2021-12-23
CN113900967A (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69732938T2 (de) Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE10393919B4 (de) Spekulative verteilte Konfliktauflösung für ein Cache-Kohärenzprotokoll
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE102007048507B4 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE102014117463A1 (de) Datenkohärenzmodell und Protokoll auf Cluster-Ebene
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112013000889T5 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren

Legal Events

Date Code Title Description
R012 Request for examination validly filed