DE102020128675A1 - Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen - Google Patents

Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen Download PDF

Info

Publication number
DE102020128675A1
DE102020128675A1 DE102020128675.9A DE102020128675A DE102020128675A1 DE 102020128675 A1 DE102020128675 A1 DE 102020128675A1 DE 102020128675 A DE102020128675 A DE 102020128675A DE 102020128675 A1 DE102020128675 A1 DE 102020128675A1
Authority
DE
Germany
Prior art keywords
buffer
retrievable
region
content
stored
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
DE102020128675.9A
Other languages
English (en)
Inventor
Peng Li
Jawad B. Khan
Sanjeev N. Trika
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 DE102020128675A1 publication Critical patent/DE102020128675A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Vorliegende Beispiele betreffen ein Speicherungssystem, das Teile einer Schreiboperation, die mit Bezug auf abrufbare Segmente aus einer Speicherungsvorrichtung ausgerichtet und fehlausgerichtet sind, getrennt abwickelt. Für fehlausgerichtete Teile kann ein Puffer zum Speichern fehlausgerichteter abrufbarer Segmente und aktualisieren der Segmente mit mit der Schreiboperation bereitgestelltem Inhalt verwendet werden. Ausgerichtete Teile von Inhalt, der einer Schreibanforderung zugeordnet ist, können direkt in das Speicherungsmedium geschrieben werden oder entsprechende im Puffer anwesende abrufbare Segmente überschreiben. Eine Tabelle oder ein Array kann logische Blockadressen, die Inhalt im Puffer oder in der Speicherung entsprechen, verfolgen. Inhalt im Puffer kann im Puffer gehalten werden, ohne in der Speicherung gesichert oder persistiert zu werden, bis ein Auslösungsereignis auftritt, wie etwa Stromausfall oder wenig Platz im Puffer.

Description

  • HINTERGRUND
  • Ein SSD (Solid State Drive) kann eine oder mehrere Kapselungen von nichtflüchtigen Speicherbausteinen umfassen. Bei einigen Implementierungen besteht ein Baustein aus Speicherzellen, Speicherzellen sind in Seiten organisiert und Seiten sind in Blöcken organisiert. Eine Speicherzelle kann ein oder mehrere Informationsbit speichern. Für Speicherungszugriffsanforderungen kann ein SSD auf NAND-Basis eine Umleitungstabelle verwenden, die eine Umsetzung logischer Adressen von logischer Blockadresse in physische Blockadresse (L2P), wie etwa LBA (logische Blockadressen) in PBA (physische NAND-Blockadressen) bereitstellt.
  • Figurenliste
    • 1 zeigt ein Beispiel für ein System.
    • 2 zeigt ein beispielhaftes Tabellenformat.
    • 3 zeigt einen Vorgang zum Umgang mit ausgerichteten und fehlausgerichteten Teilen von Inhalt, die in Speicherung zu schreiben sind.
    • 4 zeigt ein Format von zum Identifizieren von Schlitzen in einem Puffer verwendeten Zeigern.
    • 5 zeigt einen Vorgang zum Verwalten der Pufferreinigung.
    • 6 zeigt ein System
    • 7 zeigt eine Datenzentrum-Umgebung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In einem Computersystem mit zugänglicher Speicherung oder Speicher geben verschiedene OS (Betriebssysteme) Schreibanforderungen mit LBA-Sektorgrößen von 5xxB (wie etwa 512B, 520B und 528B) oder 4xxxB (wie etwa 4096B und 4160B) aus (wobei B ein Byte repräsentiert). Es wird nicht erwartet, dass LBA-Sektorgrößen in der vorhersehbaren Zukunft wachsen werden, können sich aber abhängig von Spezifikationen der FS (Dateisysteme) ändern. In einigen Beispielen verwendet ein SSD eine Größe der IU (Indirektionseinheit) von 4 KiB (KibiByte) zur Abbildung der LBA auf physische Adressen der Medien (z. B. NAND-Flash). Eine L2P-Tabelle, die die physischen NAND-Blockadressen mit einer Granularität der IU (Indirektionseinheit) von 4 KiB (4096 Byte) und 4 Byte pro Eintrag speichert, konsumiert 1 MiB (MebiByte) flüchtigen Speicherplatz pro GiB (GibiByte) der logischen SSD-Speicherkapazität. Die L2P-Tabelle benutzt deshalb 1 GiB flüchtigen Speicher für eine SSD-Postenkennung von 1 TiB (TebiByte) (wobei das SSD eine Logikkapazität von 1 TiB aufweist, während seine physische Kapazität größer sei kann) und 16 GiB flüchtigen Speicher für ein 16-TiB-SSD (eine SSD mit 16 TiB NAND zum Speichern von Benutzerdaten).
  • Es wird erwartet, dass die IU-Größe mit wachsender SSD-Kapazität auf 16 KiB und sogar auf 64 KiB wächst. Mit wachsender IU-Größe wächst auch die Anforderung an verfügbarem flüchtigem Speicher (oder anderen zum Speichern der L2P-Tabelle verwendeten Medien), der verfügbare Speicherplatz für die Tabelle kann aber begrenzt sein.
  • Unausgerichtete Host-Schreibvorgänge treten auf, wenn ein LBA-Bereich einer Schreibanforderung mit der IU-Start- und -Ende-Adressengrenze fehlausgerichtet ist. Anders ausgedrückt, tritt eine unausgerichtete oder fehlausgerichtete Schreibanforderung auf, wenn ein Start- und End-LBA-Bereich einer Schreibanforderung nicht jeweiliger Start- und End-LBA einer IU entspricht. Dagegen tritt eine ausgerichtete Schreibanforderung auf, wenn ein Start- und End-LBA-Bereich einer Schreibanforderung jeweiligen Start- und End-LBA-Bereich einer IU entspricht.
  • Schreibverstärkung bezieht sich auf eine Menge an in Speicherungsmedien geschriebenen Daten, dividiert durch eine Menge an Daten, die einer Schreibanforderung zugeordnet ist. Fehlausgerichtete Schreibvorgänge können eine SSD-Schreibverstärkung bzw. -WA von mehr als eins (1) einführen. Mit weiter zunehmender IU-Größe wird die Schreibverstärkung aus fehlausgerichteten Schreibanforderungen weiter zunehmen. Zum Beispiel wird ein 512B-Host-Schreibvorgang in ein SSD mit 4 KiB-IU zusätzlich zu Leistungsfähigkeitskosten (z. B. NAND-Seitenlesezeit), die einer Operation des Datenlesens, Datenmodifizierens, Datenschreibens (Lesen-Modifizieren-Schreiben) zugeordnet sind, 8-fach verstärkt.
  • Wenn zum Beispiel eine IU-Größe 4 KiB ist und ein Host nur in LBA0 (Einzelsektor) schreibt, ist der Schreibvorgang fehlausgerichtet. Es findet ein Lesen von IUO (LBA0 bis LBA7) statt, Daten von LBAO werden mit Daten vom Host aktualisiert und LBA0 bis LBA7 werden dann mit einem aktualisierten LBA0 in Medien zurückgeschrieben. Dieses Beispiel hat eine Verstärkung von 8, da ein Schreiben einer LBA dem Schreiben von 8 LBA in Speicherung entspricht.
  • Als ein anderes Beispiel ist der Schreibvorgang fehlausgerichtet, wenn eine IU-Größe 4 KiB ist und ein Host nur in LBA1 bis LBA8 schreibt. Es findet ein Lesen von IUO (LBA0 bis LBA7) statt, Daten von LBA1-LBA7 werden mit Daten vom Host aktualisiert und LBA0 bis LBA7 werden dann mit aktualisiertem LBA1-LBA7 in Medien zurückgeschrieben. Es findet ein zweites Lesen von IU1 (LBA8 bis LBA15) statt, Daten von LBA8 werden aktualisiert und Schreiben von LBA8 bis LBA15 werden dann mit aktualisiertem LDA8 in die Speicherung geschrieben. Man beachte, dass in einigen Fällen IUO und IU1 gelesen, LBA1-LBA8 aktualisiert und das aktualisierte IUO und IU1 in die Medien geschrieben werden können. Dieses Beispiel hat eine Verstärkung von 2, da ein Schreiben von 8 LBA dem Schreiben von 16 LBA in Speicherung entspricht.
  • Ein anderes Beispiel zeigt ein Datenschreiben von LBA0-LBA7, das mit einer IUO ausgerichtet ist. Daten von LBA0-LBA7 werden direkt ohne Lesen-Modifizieren-Schreiben in die Medien geschrieben. Dieses Beispiel hat eine Verstärkung von 1, da ein Schreiben von 8 LBA dem Schreiben von 8 LBA in Speicherung entspricht.
  • Verschiedene Ausführungsformen gewährleisten den Transfer eines unausgerichteten Teils eines Host-Schreibvorgangs in einen Puffer, um zu versuchen, SSD-Schreibverstärkung bzw. -WA zu verringern und die Leistungsfähigkeit zu verbessern. Zum Beispiel verwenden verschiedene Ausführungsformen eine Tabelle oder ein Array, um zu identifizieren, ob ein in einer Speicherung gespeichertes abrufbares Segment (z. B. eine IU) in einen Puffer kopiert wird. Ein Puffer kann zum Speichern abrufbarer Segmente verwendet werden und fehlausgerichteter Inhalt von Datenschreibvorgängen überschreiben gespeicherte abrufbare Segmente im Puffer. Ein Benutzer muss nicht manuell LBA auf den Puffer abbilden, kann dies aber tun. Stattdessen kann eine Steuerung den unausgerichteten Teil von Hostschreibvorgängen detektieren und sie automatisch auf den Puffer abbilden. Inhalt im Puffer kann im Puffer gehalten werden, ohne gesichert oder in die Speicherung persistiert zu werden, bis ein Auslöseereignis auftritt, wie etwa ein Stromausfall oder wenig Platz im Puffer. Ohne Verlust der Allgemeingültigkeit kann ein IMB (integrierter Speicherpuffer) als ein Beispiel für einen Puffer verwendet werden. Verschiedene Ausführungsformen können jedoch andere Formen eines Puffers bereitstellen, z. B. PMR (persistente Speicherregionen), NVDIMM (NON-Volatile Dual In-Line Memory Module), persistenten Speicher (z. B. (Intel® Optane®) und so weiter. Ferner können einige Implementierungen den Puffer im SSD und/oder in einer Zwischenspeicherungs-Steuerung (in Hardware und/oder in Hostsoftware) implementieren.
  • Verschiedene Ausführungsformen können für Arbeitslasten, bei denen viele fehlausgerichtete Schreibvorgänge auftreten, Schreibverstärkungsreduktion auf SSD-Ebene um Faktoren bis zu 2-10 gewährleisten. Änderungen an der logischen Blockgröße auf Host-Ebene müssen nicht vorgenommen werden (können es aber), und es kann Kompatibilität mit existierenden oder zukünftigen Hostsystemen ohne Modifikation erzielt werden, während versucht wird, Schreibverstärkung zu verringern. Leistungsfähigkeitsvorteile können ohne jegliche Änderungen auf Host-Ebene erzielt werden, einschließlich Vorrichtungstreiber, Dateisystem und Hostanwendungen.
  • 1 zeigt ein Beispiel für ein System. In einigen Beispielen kann das Hostsystem 100 Prozessoren 102 und Speicher 104 zum Ausführen von Anwendungen, eines Betriebssystems, eines Dateisystems oder virtualisierter Ausführungsumgebungen umfassen oder darauf zugreifen. Ein Betriebssystem wäre zum Beispiel das Betriebssystem Microsoft® Windows®, ein proprietäres UNIX-artiges Betriebssystem oder ein quelloffenes UNIX-artiges Betriebssystem, das eine Variante des Linux-Kernels verwendet, MacOS® oder Android®. Eine virtualisierte Ausführungsumgebung kann mindestens eine virtuelle Maschine oder einen Container umfassen. Eine VM (virtuelle Maschine) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen laufen lässt. Eine VM kann durch Spezifikation, Konfigurationsdateien, eine Virtual-Disk-Datei, eine Einrichtdatei für NVRAM (NON-Volatile Random Access Memory) und die Log-Datei definiert werden und wird durch die physischen Ressourcen einer Host-Datenverarbeitungsplattform gestützt. Eine VM kann eine Umgebung eines OS (Betriebssystems) oder einer Anwendung sein, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endbenutzer hat auf einer virtuellen Maschine dasselbe Erlebnis wie auf dedizierter Hardware. Spezialisierte Software, die als Hypervisor bezeichnet wird, emuliert den PC-Client oder CPU, Speicher, Festplatte, Netzwerk- und andere Hardwareressourcen des Servers vollständig, wodurch es virtuellen Maschinen ermöglicht wird, sich die Ressourcen zu teilen. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, wodurch es virtuellen Maschinen ermöglicht wird, auf demselben zugrundeliegenden physischen Host die Betriebssysteme Linux und Windows Server laufen zu lassen.
  • Ein Container kann ein Softwarepaket von Anwendungen, Konfigurationen und Abhängigkeiten sein, so dass die Anwendungen zuverlässig auf einer Datenverarbeitungsumgebung wie auf einer anderen laufen. Container können sich ein auf der Serverplattform installiertes Betriebssystem teilen und als isolierte Prozesse laufen. Ein Container kann ein Softwarepaket sein, das alles enthält, das die Software benötigt, um Systemwerkzeuge, Bibliotheken und Einstellungen laufen zu lassen. Container werden nicht wie traditionelle Softwareprogramme installiert, wodurch sie von der anderen Software und dem Betriebssystem selbst isoliert werden können. Die isolierte Beschaffenheit von Containern hat mehrere Vorteile. Erstens läuft die Software in einem Container in verschiedenen Umgebungen gleich. Zum Beispiel kann ein Container, der PHP und MySQL umfasst, auf sowohl einem Linux-Computer als auch einer Windows-Maschine identisch laufen. Zweitens gewährleisten Container zusätzliche Sicherheit, da sich die Software nicht auf das Host-Betriebssystem auswirken wird. Während eine installierte Anwendung Systemeinstellungen ändern und Ressourcen wie etwa die Windows-Registrierdatenbank, modifizieren kann, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.
  • In einigen Beispielen können die Prozessoren 102 eine beliebige CPU (Zentralverarbeitungseinheit), GPU (Graphikverarbeitungseinheit), ein beliebiges FPGA (Field Programmable Gate Array) oder ein beliebiges ASIC (anwendungsspezifische integrierte Schaltung) umfassen. Der Speicher 104 kann eine beliebige Art von Cache oder flüchtigen oder nichtflüchtigem Speicher sein. Die Schnittstelle 108 kann unter Verwendung der Verbindung 120 Kommunikation mit der Speicherung 150 und anderen Knoten (nicht abgebildet) verwalten.
  • Die Verbindung 120 kann Kommunikation bereitstellen, kompatibel oder konform mit einem oder mehreren von: Ethernet (IEEE 802.3), RDMA (Remote Direct Memory Access), iWARP (InfiniBand, Internet Wide Area RDMA Protocol), QUIC (Quick UDP Internet Connections), RoCE (RDMA over Converged Ethernet), PCIe (Peripheral Component Interconnect), QPI (QuickPath Interconnect) von Intel, UPI (Intel Ultra Path Interconnect) von Intel, IOSF (Intel On-Chip System Fabric), Omnipath, CXL (Compute Express Link), HyperTransport, Hochgeschwindigkeits-Fabric, NVLink, AMBA-Interconnect (Advanced Microcontroller Bus Architecture), OpenCAPI, Gen-Z, CCIX (Cache Coherent Interconnect for Accelerators), 3GPP-LTE (Long Term Evolution) (4G), 3GPP-5G und Varianten davon. Daten können unter Verwendung eines Protokolls wie NVMe-oF (NVMe over Fabrics) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden.
  • Das Speicherungssystem 150 kann einen Speicherungscontroller 152 verwenden, um Zugriffe (z. B. lesen oder schreiben) auf Medien 168 zu steuern. Zum Beispiel kann der Transportschichtprozessor 154 Kommunikation mit dem Hostsystem 100, wie etwa über die Verbindung 120 empfangene oder gesendete Lese- oder Schreibanforderungen, codieren oder decodieren. Der Inhaltszugriffsmanager 156 kann bestimmen, ob eine Schreibanforderung auf ausgerichtete und/oder fehlausgerichtete abrufbare Regionen in den Medien 168 zugreifen soll. Zum Beispiel kann eine Schreibanforderung, die einer Anforderung, Inhalt in die Medien 168 zu schreiben, entspricht, Zugriff auf eine Tabelle 162 auslösen, um zu bestimmen, ob eine Startadresse des in die Medien 168 zu schreibenden Inhalts angibt, dass eine die Startadresse einschließende abrufbare Region in dem in dem Speicher 160 oder in den Medien 168 zugeteilten Puffer 164 gespeichert ist. Zum Beispiel kann die Tabelle 162 im Speicher 160 oder in einem SRAM (statischen Direktzugriffsspeicher), der dem Speicherungscontroller 152 verfügbar ist, gespeichert werden.
  • Inhalt, der Gegenstand einer Schreibanforderung ist, kann ausgerichtete und/oder fehlausgerichtete Teile umfassen. Für Teile des Inhalts, die mit abrufbarer Region aus den Medien 168 (oder im Puffer 164) ausgerichtet sind, wird bestimmt, ob die abrufbare Region im Puffer 164 gespeichert ist, und wenn dem so ist, überschreiben solche Teile den gepufferten Inhalt. Wenn die abrufbare Region aber nicht in dem Puffer 164 gespeichert ist, werden solche Teile direkt in die Medien 168 geschrieben. In einigen Beispielen ist eine abrufbare Region eine IU der Größe 4 KiB, es kann aber jede Größe verwendet werden.
  • Für Teile des Inhalts, die mit abrufbarem Inhalt aus den Medien 168 (oder im Puffer 164) fehlausgerichtet sind, werden abrufbare Regionen der Medien 168, die den fehlausgerichteten Inhalt einschließen, in den Puffer 164 kopiert, die abrufbaren Regionen werden modifiziert, um den fehlausgerichteten Inhalt zu enthalten, und die Tabelle 162 wird aktualisiert, um anzugeben, dass der Puffer 164 die abrufbaren Regionen enthält. Zum Beispiel kann ein Eintrag in der Tabelle 162 einen Tokenwert umfassen, der so gesetzt wird, dass er angibt, dass eine abrufbare Region mit einem bestimmten Index in dem Puffer 164 gespeichert ist und dass der Eintrag ein Offset auf einen Ort im Speicher 160 einer Startadresse der abrufbaren Region umfasst. Wenn der Tokenwert jedoch noch in dem Eintrag anwesend ist, bezieht sich der Eintrag auf einen Adressenbezug in den Medien 168. Der Speicher 160 kann beliebiges oder eine Kombination von Cache, flüchtigem Speicher oder nichtflüchtigem Speicher sein.
  • Wenn zum Beispiel die Speicherung 150 für IU-Größe von 4 KiB konfiguriert ist und ein Host-Schreiben für LBA5-15 empfängt, sind LBA5-7 mit IUO (das LBA0-7 einschließt) fehlausgerichtet, aber LBA8-15 sind mit IU1 (das LBA8-15 einschließt) ausgerichtet. In diesem Beispiel wurden IUO und IU1 beide in den Medien 168 abgespeichert aber nicht im Puffer 164. Für LBA5-7 liest der Controller 152 LBA0-7 aus den Medien 168 in den Puffer 164 durch Verwendung einer Adresse von IUO aus der Übersetzungstabelle 162, und überschreibt dann LBA5-7 im Puffer 164 durch Verwendung von Daten aus dem Hostsystem 100. Der Controller 152 aktualisiert eine Adresse von IUO in der Übersetzungstabelle 162, um ein Offset in den Puffer 164 zu identifizieren. Für LBA8-15 schreibt der Controller 152 die Hostdaten in die Medien 168, und IU1 wird beginnend bei einer anderen Startadresse gespeichert, so dass der Controller 152 die Tabelle 162 mit der Adresse von IU1 in den Medien 168 aktualisiert.
  • Der Backup-Handler 166 kann Kopieren von Inhalt aus dem Puffer 164 in die Medien 168 verwalten. Wenn zum Beispiel ein Füllstand des Puffers 164 einen Schwellenwert erreicht oder überschreitet, kann der Backup-Handler 166 in die Medien 168 auszuräumenden oder zu kopierenden Inhalt im Puffer 164 identifizieren, um mehr Platz in dem Puffer 164 zu schaffen, und außerdem die Tabelle 162 aktualisieren, um Inhalt als in den Medien 168 gespeichert zu identifizieren. Es können verschiedene Techniken verwendet werden, um auszuräumenden Inhalt auszuwählen, wie etwa LRU (am wenigsten kürzlich benutzt) oder am wenigsten kürzlich abgerufen. In einigen Fällen kann, wenn der Strom ausfällt, der Backup-Handler 166 Inhalt des Puffers 164 in die Medien 168 flushen und die Tabelle 162 aktualisieren, um Inhalt als in den Medien 168 gespeichert zu identifizieren. Zum Beispiel kann ein Kondensator oder eine andere Reservestromversorgung im Fall eines Stromausfalls verwendet werden, um sicherzustellen, dass Strom zum Durchführen eines Backup verfügbar ist. ADR (Asynchronous DRAM Refresh) kann verwendet werden, um bei einem Stromausfall an flüchtigem Speicher Inhalt in die Medien 168 zu kopieren. Andere Bedingungen können das Flushen von Inhalt aus dem Puffer 164 in die Medien 168 auslösen, wie etwa ein getimtes Ereignis.
  • Die Medien 168 können eine beliebige Art von flüchtigem oder nichtflüchtigem Speicher sein und mehrere Stufen von Speicher oder Speicherung umfassen, wenn ihre Schreibgranularität größer als die Host-LBA-Sektorgröße ist. Speicher oder Speicherung kann zum Beispiel eines oder mehrere von Folgendem umfassen: persistenten Speicher (z. B. Intel Optane® oder Samsung Z-NAND), Speicherung (z. B. NAND oder 3D-NAND), byteadressierbaren nichtflüchtigen Speicher oder 2LM (2-Ebenen-Speicher). Im vorliegenden Gebrauch kann sich jede Bezugnahme auf Speicherung oder Speicher auf eine beliebige Art oder Konfiguration oder Kombination von flüchtigem und nichtflüchtigem Speicher beziehen.
  • Verschiedene Ausführungsformen können Systemhauptspeicher mit mindestens zwei Ebenen von Speicher („2LM“) verwenden, der zwischengespeicherte Teilmengen von System-Plattenebenen-Speicherung (zum Beispiel zusätzlich zu Laufzeitdaten) umfassen. Dieser Hauptspeicher umfasst eine erste Ebene (die hier alternativ auch als „naher Speicher“ bezeichnet wird), die kleineren schnelleren Speicher umfasst, der zum Beispiel aus DRAM oder anderem flüchtigen Speicher besteht; und eine zweite Ebene (hier alternativ als „ferner Speicher“ bezeichnet), die größeren und langsameren (mit Bezug auf den nahen Speicher) flüchtigen Speicher (z. B. DRAM) oder nichtflüchtige Speicher-Speicherung umfasst (z. B. Flash-Speicher oder byteadressierbaren nichtflüchtigen Speicher (z. B. Intel Optane® oder Samsung Z-NAND)). Der ferne Speicher wird dem Host-Betriebssystem (OS) als „Hauptspeicher“ präsentiert, während der nahe Speicher ein Cache für den fernen Speicher ist, der dem OS transparent ist, um somit die nachfolgend beschriebenen Ausführungsformen genauso wie vorbekannte Hauptspeicherlösungen erscheinen zu lassen. Die Verwaltung des Zweiebenenspeichers kann durch eine Kombination von Logik und Modulen geschehen, die über die Host-CPU (Zentralverarbeitungseinheit) ausgeführt werden. Der nahe Speicher kann zur effizienten Verarbeitung über Mittel mit hoher Bandbreite und geringer Latenz mit der Hostsystem-CPU gekoppelt werden. Der ferne Speicher kann über (verglichen mit denen des nahen Speichers) Mittel mit niedriger Bandbreite und hoher Latenz mit der CPU gekoppelt werden.
  • 2 zeigt ein beispielhaftes Format einer Tabelle. Die Tabelle kann verwendet werden, um zu identifizieren, ob ein Abrufsegment (z. B. eine oder mehrere IU) in einem Puffer gespeichert oder nicht in dem Puffer gespeichert (z. B. in der Speicherung gespeichert) sind. Zum Beispiel kann die Tabelle im flüchtigen Speicher (.z. B. DRAM oder SRAM) gespeichert und einem Speicherungscontroller zugänglich sein. Die Tabelle kann ein Array von Einträgen sein. Ein Eintrag kann zum Beispiel das folgende Format aufweisen:
    • [NVM-Puffer-Token (z. B. 0xFF), NVM-Puffer-Offset] oder [physische Adresse in Speicherung].
  • In einem Beispiel ist ein IU-Index einer physischen Adresse zugeordnet. Wenn eine IU 8 logische Blöcke, beginnend mit dem logischen Block 0, umfasst, kann der IU-Index aus einem Rest einer Modulo-8-Operation an einem Starten bei der beginnenden LBA (logischen Blockadresse) eines Abrufsegments bestimmt werden. Eine beginnende LBA von LBA0 entspricht zum Beispiel einem Index von 0; eine beginnende LBA von LBA8 entspricht einem Index von 1; und eine beginnende LBA von LBA16 entspricht einem Index von 2 und so weiter. In diesem Beispiel ist jedem IU-Index ein physischer Adresseneintrag zugordnet. Wenn aber einem IU-Index entsprechender Inhalt in dem Puffer gespeichert ist, kann ein Code in dem physischen Adresseneintrag verwendet werden, um zu identifizieren, dass die IU im Puffer gespeichert ist.
  • Wenn zum Beispiel ein erstes Byte eines physischen Adresseneintrags Hexadezimal FF ist, wird die entsprechende IU im Puffer beginnend am Offset nach dem Hexadezimal FF gespeichert. Es können andere Codes kürzerer oder längerer Größe verwendet werden. Dementsprechend kann Abruf einer IU Abruf von Inhalt beginnend an einem Offset umfassen und umfasst 8 LBA beginnend am Offset. Eine LBA kann zum Beispiel eine Größe von 512 Byte aufweisen, abhängig von dem verwendeten System können aber andere Größen benutzt werden.
  • Wenn jedoch ein erstes Byte eines physischen Adresseneintrags nicht Hexadezimal FF (oder ein anderer zur Angabe von Speicherung im Puffer verwendeter Code) ist, wird die entsprechende IU in Speicherung an einer durch den gesamten physischen Adresseneintrag identifizierten physischen Adresse gespeichert.
  • 3 zeigt einen beispielhaften Prozess zur Verwaltung von Speicherung von Inhalt zum Versuch, Schreibverstärkung zu reduzieren. Der Prozess kann durch einen Speicherungscontroller oder eine andere Vorrichtung oder Software ausgeführt werden. Bei 302 wird eine Schreibanforderung empfangen. Die Schreibanforderung kann durch einen Host bereitgestellt werden, der lokal an eine Speicherungsvorrichtung angeschlossen oder entfernt mit dieser verbunden ist. Die Schreibanforderung kann durch einen Speicherungscontroller empfangen werden.
  • Bei 304 wird zu schreibender Inhalt, der der Schreibanforderung zugeordnet ist, in einen unausgerichteten Teil und ausgerichteten Teil aufgeteilt. Ein Teil kann als „ausgerichtet“ betrachtet werden, wenn eine Gesamtheit des Teils ein einziges in der Speicherung gespeichertes Abrufsegment überschreibt. Ein Abrufsegment kann ein IU-Bereich von einer Start- zur Endgrenze eines IU-Bereichs in Speicherung von Speicher sein. Zum Beispiel kann ein Abrufsegment ein oder mehrere IU-Segmente sein, die an logischen Blockadressenintervallen von 8 Byte, 16 Byte oder anderen ganzzahligen Vielfachen von 8 Byte oder anderen Zahlen von Byte oder Bit gespeichert werden.
  • Wenn die Schreibanforderung irgendeinen ausgerichteten Teil aufweist, wird der Prozess mit 320 fortgesetzt. Wenn die Schreibanforderung irgendeinen unausgerichteten Teil aufweist, wird der Prozess mit 310 fortgesetzt. Man beachte, dass mit 310 und 320 beginnende Sequenzen parallel ausgeführt werden können.
  • Bei 310 wird bestimmt, ob ein dem unausgerichteten Teil entsprechendes Abrufsegment im Puffer gespeichert ist. Zum Beispiel kann eine Tabelle (z. B. L2P-Tabelle) untersucht werden, um zu bestimmen, ob ein Abrufsegment, das einer logischen Blockadresse zugeordnet ist, die mit der Schreibanforderung bereitgestellt wird, im Puffer anwesend ist. Wenn das Abrufsegment nicht im Puffer gespeichert ist, wird der Prozess mit 312 fortgesetzt. Wenn das Abrufsegment im Puffer gespeichert ist, wird der Prozess mit 315 fortgesetzt.
  • Bei 312 werden ein oder mehrere Abrufsegmente, die der Schreibanforderung zugeordnet sind, die in der Speicherung gespeichert sind, in den Puffer kopiert. Zum Beispiel können Abrufsegmente einer oder mehrerer IU aus Speicherung gelesen und in den Puffer kopiert werden. Der Prozess wird mit 314 fortgesetzt, wo der Schreibanforderung zugeordneter Inhalt in den Puffer geschrieben wird. Für ein Abrufsegment bzw. Abrufsegmente, das bzw. die bei 312 aus der Speicherung in den Puffer kopiert werden, wird das Abrufsegment bzw. werden die Abrufsegmente ganz oder teilweise durch einen unausgerichteten Teil bzw. unausgerichtete Teile, die der Schreibanforderung zugeordnet sind, überschrieben. Danach können im Puffer gespeicherte Abrufsegmente für Konsistenz, Persistenz oder Backup in Speicherung kopiert werden. Der Prozess wird mit 316 fortgesetzt, wo die Tabelle aktualisiert wird, um anzugeben, dass Abrufsegment(e) aus der Speicherung in den Puffer geschrieben wurde(n) und der Puffer ein oder mehrere Abrufsegmente speichert. Zum Beispiel werden logische oder physische Adressen, die aus der Speicherung in dem Puffer kopiertem Inhalt zugeordnet sind, in der Tabelle als im Puffer anwesend identifiziert. Die Tabelle kann logische Blockadressen und physische Blockadressen des Inhalts im Puffer identifizieren. Ein Token im ersten Byte eines Tabelleneintrags kann verwendet werden, um zu identifizieren, dass Abrufsegment(e) im Puffer anwesend sind.
  • Bei 315 wird der Schreibanforderung zugeordneter Inhalt im Puffer geschrieben. Für Abrufsegment(e) im Puffer wird das Abrufsegment bzw. werden die Abrufsegmente ganz oder teilweise durch (einen) der Schreibanforderung zugeordnete(n) unausgerichtete(n) Teil(e) überschrieben. Danach können im Puffer gespeicherte Abrufsegmente für Konsistenz, Persistenz oder Backup in die Speicherung kopiert werden.
  • Wenn zum Beispiel eine Schreibanforderung einer LBA8 entspricht und ein LBA8 umfassendes Abrufsegment LBA8 bis LBA15 ist, ist die Schreibanforderung unausgerichtet. Ein Abrufsegment von LBA8 bis LBA15 wird aus Speicherung abgerufen und im Puffer gespeichert, und der der Schreibanforderung zugeordnete und LBA8 entsprechende Inhalt überschreibt den Inhalt im Puffer.
  • Für einen der Schreibanforderung zugeordneten ausgerichteten Teil wird bei 320 bestimmt, ob ein dem ausgerichteten Teil entsprechendes Abrufsegment im Puffer gespeichert ist. Zum Beispiel kann eine Tabelle (z. B. L2P-Tabelle) untersucht werden, um zu bestimmen, ob ein Abrufsegment, das einer logischen Blockadresse zugeordnet ist, die mit der Schreibanforderung bereitgestellt wird, in der Tabelle anwesend ist. Wenn das Abrufsegment nicht im Puffer gespeichert ist, wird der Prozess mit 322 fortgesetzt. Wenn das Abrufsegment im Puffer gespeichert ist, wird der Prozess mit 330 fortgesetzt.
  • Bei 322 wird der ausgerichtete Teil in Speicherung geschrieben. Zum Beispiel kann ein Controller eine Schreiboperation zum Kopieren des ausgerichteten Teils in einen IU-Bereich in Speicherung ausgeben, aber den ausgerichteten Teil nicht im Puffer speichern.
  • Bei 324 kann die Inhalt des Puffers und der Speicherung identifizierende Tabelle aktualisiert werden, um in die Speicherung geschriebenen Inhalt zu identifizieren. Ein Eintrag in der Tabelle kann zum Beispiel einen Bereich von logischen Blockadressen identifizieren, oder Abrufsegmente haben entsprechenden Inhalt, der in der Speicherung und nicht im Puffer gespeichert ist. Ein Code in einem Eintrag kann angeben, dass die Abrufsegmente nicht im Puffer, sondern in der Speicherung (oder Speicher) gespeichert sind. In einigen Beispielen kann der Controller jedoch auch den ausgerichteten Teil in den Puffer schreiben und auch die Tabelle aktualisieren, die Startadressen (z. B. logisch oder physisch) des Inhalts, die im Puffer gespeichert werden, identifiziert.
  • Bei 330 wird der ausgerichtete Teil in den Puffer geschrieben. Wenn zum Beispiel der ausgerichtete Teil einem Abrufsegment entspricht, das bereits im Puffer gespeichert ist, kann der Controller die Daten direkt in den Puffer kopieren. Der ausgerichtete Teil muss an diesem Punkt nicht auch in die Speicherung geschrieben werden, kann aber später als Teil eines Backup (z. B. Stromausfall-Backupoperation) in die Speicherung geschrieben werden. Die Tabelle muss nicht aktualisiert werden, da das Abrufsegment bereits im Puffer gespeichert ist und durch die Tabelle aufgrund eines vorherigen Schreibens von Inhalt dieses Abrufsegments in den Puffer als im Puffer gespeichert identifiziert wird.
  • 4 zeigt eine beispielhafte Konfiguration von Verweisen auf Teile eines Puffers. In diesem Beispiel wird ein Puffer als ein zirkularer Puffer mit Zeigern auf IU-Granularität konfiguriert, Zeiger könnten sich aber auf Mehrfach-IU- oder Sub-IU-Startpunkte beziehen. In diesem Beispiel werden IU in einer verknüpften Liste referenziert, und es gibt drei Zeiger. Ein erster Zeiger kann sich auf einen am wenigsten kürzlich verwendeten Eintrag beziehen, und ein zweiter Zeiger kann sich auf einen nächsten freien Eintrag im Puffer beziehen. Wenn eine neue Schreibanforderung empfangen wird, wird ein verfügbarer IU-Eintrag im verfügbaren Platz als der nächste freie Eintrag unter Verwendung des zweiten Zeigers ausgewählt.
  • 5 zeigt einen beispielhaften Prozess, der verwendet werden kann, um einem Puffer zugeteilten Speicher zu verwalten. Zum Beispiel kann der Puffer verwendet werden, um ein oder mehrere Abrufsegmente aus einer Speicherung zu speichern. Ein Abrufsegment kann eine Größe von einer oder mehreren IU aufweisen, wobei eine IU 4096 Byte oder andere Größen ist.
  • Bei 502 wird bestimmt, ob eine Bedingung zum Reinigen eines Puffers erfüllt ist. Eine Bedingung wäre zum Beispiel, ob es nicht genug freien Platz in einem der Speicherung zugeordneten Puffer gibt. Zum Beispiel kann eine Schwelle von 128 KiB als Schwellenwert betrachtet werden, und wenn der freie Platz kleiner als die Schwelle ist, kann betrachtet werden, dass der Puffer nicht genug freien Platz aufweist. Wenn es nicht genug freien Platz gibt, wird der Prozess mit 504 fortgesetzt. Wenn es nicht unzureichend freien Platz gibt, kann sich 502 wiederholen. Eine andere Bedingung wäre das Ablaufen eines Timers, wobei Müllabfuhr durchgeführt wird, um den Puffer zu reinigen und Platz frei zu machen. Wenn der Timer abläuft, wird der Prozess mit 504 fortgesetzt, und der Timer wird rückgesetzt. Wenn der Timer nicht abgelaufen ist, kann sich 502 wiederholen. Eine weitere Bedingung wäre Detektion von Stromausfall. Wenn Stromausfall detektiert wird, wird der Prozess mit 504 fortgesetzt.
  • Zum Beispiel kann 502 nach Empfang einer Schreibanforderung oder Abschluss einer Schreibanforderung ausgeführt werden. Ein Speicherungscontroller kann den verfügbaren Pufferplatz, nachdem ein Hostschreiben abgeschlossen wird, prüfen, und wenn der Puffer nicht genug freien Platz aufweist, kann der Controller ein Echtzeit-Betriebssystem-RTOS-Ereignis (z. B. EREIGNIS_NVM_PUFFER_FLUSH) setzen, um eine Aufgabe (z. B. Flush_NVM_PUFFER_AUFGABE) zum Flushen von ausgewähltem Inhalt aus dem Puffer in lokale oder entfernte Speicherungsmedien aufzuwecken, um mehr für Verwendung im Puffer verfügbaren Platz zu befreien.
  • Bei 504 können Daten zusammengestellt werden, um in Speicherung geschrieben zu werden. Zum Beispiel können eine oder mehrere LRU-IU (am wenigsten kürzlich benutzt) für Flushen in die Speicherungsvorrichtung ausgewählt werden. Eine LRU-IU kann eine IU sein, auf die in einem Zeitintervall die geringste Anzahl von Malen zugegriffen wurde. Anders ausgedrückt, kann eine LRU-IU Daten sein, die insgesamt die wenigste Anzahl von Malen über ein Zeitintervall teilweise überschrieben oder überschrieben wurden. Die IU(s), die insgesamt die wenigste Anzahl von Malen über ein Zeitintervall teilweise überschrieben oder überschrieben wurden, können für Flushen ausgewählt werden. Zum Beispiel werden in einigen Beispielen genug IU ausgewählt, um den freien Platz im Puffer über den Schwellenwert zu vergrößern. Es kann jedoch eine zweite Schwelle verwendet werden, um bestimmt IU aus Auswahl oder Flushen zu deselektieren oder auszuschließen, wobei die zweite Schwelle höher als die Schwelle ist und die am meisten kürzlich verwendeten IU (z. B. teilweise oder ganz überschrieben) angibt. Jede IU, die diese Kriterien der zweiten Schwelle erfüllt, wird nicht geflusht. Flushen kann Aktualisieren einer Tabelle umfassen, um anzugeben, dass diese den geflushten IU zugeordnete IU nicht im Puffer gespeichert ist, und zu erlauben, dass die Speicherorte im Puffer überschrieben werden.
  • Bei 506 können zusammengestellte Daten in die Speicherung entsendet werden. Zum Beispiel können die bei 504 bestimmten zusammengestellten Daten durch einen Speicherungscontroller zum Schreiben in Speicherung entsendet werden.
  • Bei 508 kann eine Tabelle, die im Puffer und in der Speicherung gespeicherten Inhalt angibt, aktualisiert werden. Die Tabelle kann so aktualisiert werden, dass der eine oder die mehreren Einträge, die den geflushten Daten entsprechen, aktualisiert werden, um zu identifizieren, dass die geflushten Daten in der Speicherung gespeichert werden. Eine nachfolgende Schreibanforderung, die beliebige, aber nicht alle der geflushten Daten teilweise überschreiben werden, könnte bewirken, dass der Controller die Daten aus der Speicherung in den Puffer kopiert, und eine entsprechende Tabellenaktualisierung bewirken. Eine nachfolgende Schreibanforderung, die eine gesamte geflushte IU überschreiben würde, könnte bewirken, dass ihre Daten direkt in die Speicherung geschrieben werden und die entsprechende Tabelle aktualisiert wird, um einen neuen Startspeicherungsort der IU zu identifizieren.
  • Nach 508 kann eine CPU (Zentralverarbeitungseinheit) oder ein anderer Prozessor freigegeben werden, um eine andere Aufgabe als Puffer flushen oder dieselbe Aufgabe zu starten.
  • In einigen Beispielen kann, wenn der Puffer sich in einer getrennten Vorrichtung oder Unterbringung von einem SSD (Solid State Drive) befindet und ein Platten-Zwischenspeicherungscontroller die Schreibvorgänge abwickelt, der Platten-Zwischenspeicherungscontroller die fehlausgerichteten Teile der ankommenden Schreibvorgänge rückschreibzwischenspeichern und ausgerichtete Schreibanforderung zu dem SSD senden. Der Controller kann andere Abschnitte des Schreibvorgangs nicht zwischenspeichern (kann dies aber auch weiter tun), wird aber die fehlausgerichteten Abschnitte rückschreib-zwischenspeichern.
  • 6 zeigt ein System. Das System kann hier beschriebene Ausführungsformen verwenden, um zu versuchen, Schreibverstärkung zu reduzieren, indem ein Puffer zum Speichern von fehlausgerichteten Daten aus Datenschreibanforderungen verwendet wird. Das System 600 umfasst einen Prozessor 610, der Verarbeitung, Operationsverwaltung und Ausführung von Anweisungen für das System 600 bereitstellt. Der Prozessor 610 kann eine beliebige Art von Mikroprozessor, CPU (Zentralverarbeitungseinheit), GPU (Graphikverarbeitungseinheit), Verarbeitungskern oder anderer Verarbeitungshardware zur Bereitstellung von Verarbeitung für das System 600 oder eine Kombination von Prozessoren umfassen. Der Prozessor 610 steuert den Gesamtbetrieb des Systems 600 und kann ein oder mehrere programmierbare Vielzweck- oder Spezialmikroprozessoren, DSP (digitale Signalprozessoren), programmierbare Steuerungen, ASIC (anwendungsspezifische integrierte Schaltungen), PLD (programmierbare Logikvorrichtungen) oder dergleichen oder eine Kombination solcher Vorrichtungen sein oder umfassen.
  • In einem Beispiel umfasst das System 600 eine mit dem Prozessor 610 gekoppelte Schnittstelle 612, die eine schnellere Schnittstelle oder Hochdurchsatz-Schnittstelle für Systemkomponenten repräsentieren kann, die Verbindungen höherer Bandbreite benötigen, wie etwa das Speichersubsystem 620 oder Graphikschnittstellenkomponenten 640 oder Beschleuniger 642. Die Schnittstelle 612 repräsentiert eine Schnittstellenschaltung, die eine selbständige Komponente sein oder auf einem Prozessorchip integriert sein kann. Wenn sie anwesend ist, bildet die Graphikschnittstelle 640 eine Schnittstelle zu Graphikkomponenten zur Bereitstellung einer visuellen Anzeige für einen Benutzer des Systems 600. In einem Beispiel kann die Graphikschnittstelle 640 eine HD-Anzeige (hohe Auflösung) ansteuern, die eine Ausgabe für einen Benutzer bereitstellt. Hohe Auflösung kann sich auf eine Anzeige mit einer Pixeldichte von ungefähr 100 PPI (Pixeln pro Zoll) oder mehr beziehen und kann Formate wie Voll-HD (z. B. 1080 p), Retinaanzeigen, 4K (ultrahohe Auflösung oder UHD) oder andere umfassen. In einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. In einem Beispiel erzeugt die Graphikschnittstelle 640 eine Anzeige auf der Basis von im Speicher 630 gespeicherten Daten oder auf der Basis von durch den Prozessor 610 ausgeführten Operationen oder beidem. In einem Beispiel erzeugt die Graphikschnittstelle 640 eine Anzeige auf der Basis von im Speicher 630 gespeicherten Daten oder auf der Basis von durch den Prozessor 610 ausgeführten Operationen oder beidem.
  • Die Beschleuniger 642 können eine Festfunktions-Offload-Engine sein, auf die ein Prozessor 610 zugreifen oder die dieser verwenden kann. Ein Beschleuniger unter den Beschleunigern 642 kann zum Beispiel Komprimierungs- bzw. DC-Fähigkeit, Kryptographiedienste wie PKE (Public Key Encryption), Chiffrierung, Hash-/Authentifizierungsfähigkeiten, Entschlüsselung und andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsformen stellt zusätzlich oder als Alternative ein Beschleuniger unter den Beschleunigern 642 Feldauswahl-Controllerfähigkeiten wie hier beschrieben bereit. In einigen Fällen können die Beschleuniger 642 in einen CPU-Sockel (z. B. einen Verbinder mit einem Motherboard oder einer Leiterplatte, das bzw. die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Zum Beispiel können die Beschleuniger 642 einen Einzel- oder Mehrkernprozessor, eine Graphikverarbeitungseinheit, Einzel- oder Mehrebenen-Cache logischer Ausführungseinheit, zum unabhängigen Ausführen von Programmen oder Threads benutzbare Funktionseinheiten, ASIC (anwendungsspezifische integrierte Schaltungen), NNP (Neuronalnetzwerkprozessoren), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie FPGA (Field Programmable Gate Arrays) umfassen. Die Beschleuniger 642 können neuronale Netzwerke, CPUs, Prozessorkerne, Vielzweck-Graphikverarbeitungseinheiten bereitstellen oder Graphikverarbeitungseinheiten können zur Verwendung durch AI-Modelle (künstliche Intelligenz) oder ML-Modelle (Maschinenlernen) zur Verfügung gestellt werden. Zum Beispiel kann das AI-Modell beliebiges oder eine Kombination von Folgendem verwenden oder umfassen: Ein Reinforcement-Lernschema, ein Q-Lernschema, Deep-Q-Lernen oder A3C (Asynchronous Advantage Actor-Critic), ein kombinatorisches neuronales Netzwerk, ein rekurrentes kombinatorisches neuronales Netzwerk oder ein anderes AI- oder ML-Modell. Es können mehrere neuronale Netzwerke, Prozessorkerne oder Graphikverarbeitungseinheiten zur Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.
  • Das Speicherteilsystem 620 repräsentiert den Hauptspeicher des Systems 600 und stellt Speicherplatz für Code, der durch den Prozessor 610 ausgeführt werden soll, oder Datenwerte, die beim Ausführen einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 620 kann eine oder mehrere Speichervorrichtungen 630 wie z. B. Festwertspeicher (ROM), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM) wie z. B. DRAM oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen enthalten. Der Speicher 630 speichert und hostet, unter anderem, das Betriebssystem (OS) 632, um eine Software-Plattform zur Ausführung von Anweisungen in dem System 600 bereitzustellen. Zusätzlich können Anwendungen 634 auf der Software-Plattform des OS 632 aus dem Speicher 630 ablaufen. Die Anwendungen 634 repräsentieren Programme, die ihre eigene Betriebslogik aufweisen, um das Ablaufen einer oder mehrerer Funktionen auszuführen. Die Prozesse 636 repräsentieren Agenten oder Routinen, die Zusatzfunktionen für das OS 632 oder eine oder mehrere Anwendungen 634 oder eine Kombination bereitstellen. Das OS 632, die Anwendungen 634 und die Prozesse 636 stellen Software-Logik zum Bereitstellen von Funktionen für das System 600 bereit. In einem Beispiel enthält das Speicherteilsystem 620 die Speichersteuereinheit 622, die eine Speichersteuereinheit zum Erzeugen und Ausgeben von Befehlen zu dem Speicher 630 ist. Es ist zu verstehen, dass die Speichersteuereinheit 622 ein physikalischer Teil des Prozessors 610 oder ein physikalischer Teil der Schnittstelle 612 sein könnte. Beispielsweise kann die Speichersteuereinheit 622 eine integrierte Speichersteuereinheit sein, integriert auf einer Schaltung mit dem Prozessor 610.
  • Obwohl es nicht speziell dargestellt ist, versteht es sich, dass das System 600 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen umfassen kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse 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 Folgendes umfassen: physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Controller oder andere Schaltkreise oder eine Kombination. Busse wären zum Beispiel ein oder mehrere eines Systembusses, eines PCI-Busses (Peripheral Component Interconnect), eines ISA-Busses (Hyper Transport or Industry Standard Architecture), eines SCSI-Busses (Small Computer System Interface), eines USB (Universal Serial Bus) oder eines Busses des IEEE-Standards (Institute of Electrical and Electronics Engineers) 1394 (Firewire) umfassen.
  • In einem Beispiel enthält das System 600 die Schnittstelle 614, die mit der Schnittstelle 612 gekoppelt sein kann. In einem Beispiel repräsentiert die Schnittstelle 614 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung enthalten kann. In einem Beispiel sind mehrere Anwenderschnittstellenkomponenten oder periphere Komponenten oder beides mit der Schnittstelle 614 gekoppelt. Die Netzschnittstelle 650 versorgt das System 600 mit der Fähigkeit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Berechnungsvorrichtungen) über ein oder mehrere Netze zu kommunizieren. Die Netzschnittstelle 650 kann einen Ethernet-Adapter, drahtlose Zusammenschaltungskomponenten, Mobilfunknetzzusammenschaltungskomponenten, USB (universellen seriellen Bus) oder andere auf drahtgebundenen oder drahtlosen Standards basierende oder proprietäre Schnittstellen enthalten. Die Netzschnittstelle 650 kann Daten zu einer Vorrichtung, die im gleichen Datenzentrum oder Rack ist, oder einer entfernten Vorrichtung übertragen, was das Senden von im Speicher gespeicherten Daten enthalten kann. Die Netzschnittstelle 650 kann Daten von einer entfernten Vorrichtung empfangen, was Speichern empfangener Daten in den Speicher enthalten kann. Verschiedene Ausführungsformen können in Verbindung mit der Netzschnittstelle 650, dem Prozessor 610 und dem Speicherteilsystem 620 verwendet werden.
  • In einem Beispiel enthält das System 600 eine oder mehrere Eingabe/Ausgabe-(I/O-) Schnittstelle(n) 660. Die I/O-Schnittstelle 660 kann eine oder mehrere Schnittstellenkomponenten enthalten, über die ein Anwender mit dem System 600 zusammenwirkt (z. B. Audio, alphanumerisch, tastbar/berührungssensitiv oder andere Schnittstellen). Die Peripherieschnittstelle 670 kann irgendeine Hardware-Schnittstelle enthalten, die vorstehend nicht spezifisch genannt ist. Peripheriegeräte beziehen sich allgemein auf Vorrichtungen, die abhängig mit dem System 600 verbunden sind. Eine abhängige Verbindung ist derart, dass das System 600 die Software-Plattform oder Hardware-Plattform oder beides bereitstellt, auf eine Operation abläuft, und mit denen ein Anwender zusammenwirkt.
  • In einem Beispiel enthält das System 600 ein Speichereinrichtungsteilsystem [engl.: storage subsystem] 680 zum nichtflüchtigen Speichern von Daten. In einem Beispiel können in speziellen Systemimplementierungen wenigstens spezielle Komponenten der Speichereinrichtung 680 mit Komponenten des Speicherteilsystems [engl.: memory subsystem] 620 überlappen. Das Speichereinrichtungsteilsystem 680 enthält Speichereinrichtung(en) 684, die irgendein herkömmliches Medium zum nichtflüchtigen Speichern großer Datenmengen sein oder enthalten können, wie z. B. eines oder mehrere aus magnetischen, Festkörper- oder optikbasierten Platten oder eine Kombination. Die Speichereinrichtung 684 enthält Code oder Anweisungen und Daten 686 in einem persistenten Zustand (d. h. der Wert wird beibehalten trotz Unterbrechung der Stromzufuhr für das System 600). Die Speichereinrichtung 684 kann generisch als ein „Speicher“ betrachtet werden, obwohl der Speicher 630 typischerweise der Ausführungs- oder Betriebsspeicher zum Bereitstellen von Anweisungen für den Prozessor 610 ist. Während die Speichereinrichtung 684 nichtflüchtig ist, kann der Speicher 630 flüchtigen Speicher enthalten (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Stromversorgung für das System 600 unterbrochen wird). In einem Beispiel enthält das Speichereinrichtungsteilsystem 680 eine Steuereinheit 682, um eine Schnittstelle mit der Speichereinrichtung 684 zu bilden. In einem Beispiel ist die Steuereinheit 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 enthalten.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darauf gespeicherten Daten) unbestimmt ist, wenn die Energieversorgung der Vorrichtung unterbrochen ist. Für den dynamischen flüchtigen Speicher müssen die in der Vorrichtung gespeicherten Daten aktualisiert werden, um den Zustand zu erhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (dynamischer Direktzugriffspeicher) oder eine Variante wie etwa synchronen DRAM (SDRAM). Ein hier beschriebenes Speicheruntersystem kann mit einer Reihe von Speichertechnologien kompatibel sein, wie etwa DDR3 (doppelte Datenrate, Version 3, ursprüngliche Veröffentlichung von JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007), DDR4 (DDR-Version 4, anfängliche Spezifikation veröffentlicht im September 2012, von JEDEC), DDR4E (DDR-Version 4), LPDDR3 (DDR-Version 3 mit niedriger Leistungsaufnahme, JESD209-3B, Aug. 2013, von JEDEC), LPDDR4 (LPDDR Version 4, JESD209-4, ursprünglich im August 2014 veröffentlicht, von JEDEC), WlO2 (breite Eingabe/Ausgabe Version 2, JESD229-2, ursprünglich im August 2014 veröffentlicht, von JEDEC), HBM (Speicher mit hoher Bandbreite, JESD325, ursprünglich im Oktober 2013 veröffentlicht von JEDEC), LPDDR5 (derzeit in Diskussion bei JEDEC), HBM2 (HBM-Version 2, derzeit in Diskussion bei JEDEC), oder andere, oder Kombinationen von Speichertechnologien und auf Derivaten basierende Technologien oder Erweiterungen dieser Spezifikationen. Die JEDEC-Standards sind auf www.jedec.org verfügbar.
  • Ein nichtflüchtiger Speicher (NVM) ist ein Speicher, dessen Zustand selbst dann bestimmt ist, wenn die Energieversorgung der Vorrichtung unterbrochen wird. In einer Ausführungsform kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung wie beispielsweise NAND-Technologien oder insbesondere einen NAND-Flash-Speicher mit mehreren Schwellenpegeln (z. B. Zelle mit einem Niveau („SLC“), Zelle mit mehreren Niveaus („MLC“), eine Zelle mit vier Niveaus („QLC“), eine Zelle mit drei Niveaus („TLC“) oder eine andere NAND). Eine NVM-Vorrichtung kann auch eine dreidimensionale Kreuzpunktspeichervorrichtung oder andere byteadressierbare nichtflüchtige Speichervorrichtungen mit Schreiben an Ort und Stelle (auch als dauerhafter Speicher bezeichnet) wie etwa Phasenwechselspeicher (PCM) mit einem oder mehreren Niveaus oder Phasenwechselspeicher mit einem Switch (PCMS), NVM-Vorrichtungen, die Chalkogenid-Phasenwechselmaterial verwenden (z B. Chalkogenidglas), Widerstandsspeicher einschließlich Metalloxidbasis, Sauerstoffleerstellenbasis und Leitbrücken-Direktzugriffsspeicher (CB-RAM), Nanodrahtspeicher, ferroelektrischen Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiven Direktzugriffsspeicher (MRAM) mit Memristortechnologie, Spinübertragungsdrehmoment-MRAM (STT-MRAM), eine auf spintronischem Magnet-übergangsspeicher basierende Vorrichtung, eine auf Magnettunnelkontakt (MTJ) basierende Vorrichtung, eine auf Domänenwand (DW) und SOT (Spin-Orbit-Übertragung) basierende Vorrichtung, eine auf Thyristor basierende Speichervorrichtung oder eine Kombination aus den obigen oder einen anderen Speicher umfassen.
  • Eine Leistungsquelle (nicht dargestellt) versorgt die Komponenten des Systems 600 mit Leistung. Insbesondere ist die Leistungsquelle typischerweise mit einer oder mehreren Leistungsversorgungen in dem System 600 verbunden, um die Komponenten des Systems 600 mit Leistung zu versorgen. In einem Beispiel umfasst die Leistungsversorgung einen Wechselstrom-zu-Gleichstrom-Adapter zum Anschließen an eine Wandsteckdose. Solche Wechselstromleistung kann eine Leistungsquelle mit erneuerbarer Energie (z. B. Solarenergie) sein. In einem Beispiel umfasst die Leistungsquelle eine Gleichstromquelle, beispielsweise einen externen Wechselstrom-Gleichstrom-Umsetzer. In einem Beispiel umfasst eine Leistungsquelle oder eine Leistungsversorgung drahtlose Ladehardware zum Laden über die Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • In einem Beispiel kann das System 600 unter Verwendung von miteinander verbundenen Rechen-Sleds von Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert werden. Es können schnelle Interconnect verwendet werden, wie etwa PCIe, Ethernet oder optische Interconnects (oder eine Kombination davon).
  • Aspekte der hier beschriebenen Ausführungsformen können in verschiedenen Arten von Rechen- und Netzausstattungen wie Switches, Routern, Racks und Blade-Servern implementiert werden, wie jenen, die in einem Rechenzentrum und/oder einer Serverfarm-Umgebung eingesetzt werden. Die Server, die in Datenzentren und Serverfarmen verwendet werden, umfassen angeordnete Serverkonfigurationen wie auf Racks basierende Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzvorkehrungen wie Trennungssätze aus Servern in LANs mit geeigneten Vermittlungs- und Router-Einrichtungen zwischen den LANs miteinander verbunden, um ein privates Intranet zu bilden. Beispielsweise können Cloud-Host-Einrichtungen typischerweise große Rechenzentren mit einer Vielzahl von Servern verwenden. Ein Blade umfasst eine separate Rechenplattform, die für die Ausführung von Funktionen vom Typ Server konfiguriert ist, d. h. einen „Server auf einer Karte“. Dementsprechend weist jedes Blade Komponenten auf, die herkömmlichen Servern gemeinsam sind, einschließlich einer Hauptleiterplatte (Hauptplatine), die eine interne Verdrahtung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs) und anderer auf der Platine montierter Komponenten bereitstellt.
  • 7 zeigt eine Umgebung 700 mit mehreren Datenverarbeitungs-Racks 702, die jeweils einen Switch oben auf dem Rack (ToR-Switch) 604, einen Pod-Manager 706 und mehrere gepoolte Systemeinschübe aufweisen. Verschiedene Ausführungsformen können in einem Switch verwendet werden. Im Allgemeinen können gepoolte Systemeinschübe gepoolte Recheneinschübe und gepoolte Speichereinschübe umfassen. Optional können die gepoolten Systemeinschübe auch gepoolte Ablagespeichereinschübe und gepoolte Eingabe/Ausgabe-Einschübe (E/A-Einschübe) umfassen. In der dargestellten Ausführungsform umfassen die gepoolten Systemeinschübe einen gepoolten INTEL®-XEON®-Recheneinschub 708 und einen gepoolten INTEL®-ATOM™-Recheneinschub 710, einen gepoolten Ablagespeichereinschub 712, einen gepoolten Speichereinschub 714 und einen gepoolten E/A-Einschub 716. Jeder der gepoolten Systemeinschübe ist mit dem ToR-Switch 704 über eine Hochgeschwindigkeitsverbindung 718 verbunden, wie etwa eine Ethernet-Verbindung mit 40 Gigabit/Sekunde (Gb/s) oder 100 Gb/s oder eine optische Siliziumphotonik-Verbindung (SiPh-Verbindung) mit 100+ Gb/s. In einer Ausführungsform umfasst eine Hochgeschwindigkeitsverbindung 718 eine optische SiPh-Verbindung mit 400 Gb/s.
  • Mehrere der Rechen-Racks 700 können miteinander über ihre ToR-Switches 704 verbunden sein (z. B. mit einem Switch auf Pod-Ebene oder einem Rechenzentrum-Switch), wie es durch Verbindungen mit einem Netz 720 dargestellt ist. In einigen Ausführungsformen werden Gruppen von Rechen-Racks 702 als separate Pods über einen oder mehrere Pod-Verwalter 706 verwaltet. In einer Ausführungsform wird ein einziger Pod-Verwalter benutzt, um alle Racks in dem Pod zu verwalten. Alternativ können verteilte Pod-Verwalter für Pod-Verwaltungsvorgänge benutzt werden.
  • Die Umgebung 700 weist ferner eine Verwaltungsschnittstelle 722 auf, die benutzt wird, um verschiedene Aspekte der Umgebung zu verwalten. Dies umfasst ein Verwalten der Rack-Konfiguration mit entsprechenden Parametern, die als Rack-Konfigurationsdaten 724 gespeichert sind. Die Umgebung 700 kann für Datenverarbeitungs-Racks verwendet werden.
  • Verschiedene Beispiele können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert sein. In einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logikgatter, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze usw. umfassen. In einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann in Abhängigkeit von einer beliebigen Anzahl von Faktoren wie beispielsweise der gewünschten Rechenrate, den Leistungsaufnahmepegeln, den Wärmetoleranzen, dem Verarbeitungszyklusbudget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen variieren, wie sie für eine gegebene Implementierung gewünscht sind. Es wird angemerkt, dass Hardware-, Firmware- und/oder Softwareelemente hier gemeinsam oder einzeln als „Modul“, „Logik“, „Schaltung“ oder „Schaltungsanordnung“ bezeichnet werden können. Ein Prozessor kann eine oder mehrere Kombinationen einer Hardware-Zustandsmaschine, einer digitalen Steuerlogik, einer Zentralverarbeitungseinheit oder beliebiger Hardware-, Firmware- und/oder Softwareelemente sein.
  • Einige Beispiele können unter Verwendung eines Herstellungsgegenstandes oder als solcher oder unter Verwendung mindestens eines computerlesbaren Mediums implementiert werden. Ein computerlesbares Medium kann ein nichttransitorisches Speichermedium zum Speichern von Logik umfassen. In einigen Beispielen kann das nichttransitorische Speichermedium ein oder mehrere Arten von computerlesbaren Speichermedien umfassen, die elektronische Daten speichern können, einschließlich flüchtigen Speichers oder nichtflüchtigen Speichers, wechselbaren oder nicht wechselbaren Speichers, löschbaren oder nicht löschbaren Speichers, beschreibbaren oder wiederbeschreibbaren Speichers und so weiter. In einigen Beispielen kann die Logik verschiedene Softwareelemente wie z. B. Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterprogramme, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichttransitorisches Speichermedium zum Speichern oder Halten von Befehlen umfassen, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, veranlassen, dass die Maschine, die Rechenvorrichtung oder das System Verfahren und/oder Operationen gemäß den beschriebenen Beispielen ausführt. Die Befehle können jeden geeigneten Codetyp wie beispielsweise Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen aufweisen. Die Befehle können gemäß einer vordefinierten Computersprache, Art oder einem vordefinierten Syntax implementiert werden, um eine Maschine, eine Rechenvorrichtung oder ein System anzuweisen, eine bestimmte Funktion auszuführen. Die Befehle können unter Verwendung einer geeigneten objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache auf hoher oder niedriger Ebene implementiert werden.
  • Ein oder mehrere Aspekte von mindestens einem Beispiel können durch repräsentative Befehle implementiert werden, die auf mindestens einem maschinenlesbaren Medium, das verschiedene Logik innerhalb des Prozessors darstellt, gespeichert sind und die beim Lesen durch eine Maschine, eine Rechenvorrichtung oder ein System die Maschine; die Rechenvorrichtung oder das System zur Herstellung von Logik zur Durchführung der hier beschriebenen Techniken veranlassen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem konkreten maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Fertigungsanlagen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten des Ausdrucks „ein Beispiel“ bezieht sich nicht notwendigerweise immer auf dasselbe Beispiel oder dieselbe Ausführungsform. Jeder hier beschriebene Aspekt kann mit einem beliebigen anderen hier beschriebenen Aspekt oder ähnlichen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Das Teilen, Weglassen oder Aufnehmen von Blockfunktionen, die in den beigefügten Figuren dargestellt sind, lässt nicht darauf schließen, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise in Ausführungsformen geteilt, weggelassen oder aufgenommen sind.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht unbedingt als Synonyme füreinander gedacht. Beispielsweise können Beschreibungen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ angeben, 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 stehen, aber dennoch zusammenarbeiten oder miteinander interagieren.
  • Die Begriffe „erste/r/s“, „zweite/r/s“ und dergleichen bezeichnen hier keine Reihenfolge, Menge oder Wichtigkeit, sondern werden verwendet, um ein Element von einem anderen zu unterscheiden. Die Begriffe „eine/r/s“ bezeichnen hier keine Mengenbeschränkung, sondern das Vorhandensein mindestens eines der genannten Elemente. Der Begriff „festgesetzt“, der hier in Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der erreicht werden kann, indem ein beliebiger Logikpegel, entweder logische 0 oder logische 1, an das Signal angelegt wird. Die Begriffe „folgen“ oder „nach“ können sich auf ein unmittelbares Nachfolgen oder ein Folgen nach einem anderen Ereignis oder anderen Ereignissen beziehen. Andere Abfolgen von Schritten können gemäß alternativen Ausführungsformen ebenfalls erfolgen. Darüber hinaus können abhängig von den jeweiligen Anwendungen zusätzliche Schritte hinzugefügt oder entfernt werden. Eine beliebige Kombination von Änderungen kann verwendet werden und Fachleute mit dem Vorteil dieser Offenbarung würden die vielen Variationen, Abwandlungen und alternativen Ausführungsformen davon verstehen.
  • Disjunktive Sprache wie der Ausdruck „mindestens eines von X, Y oder Z“ wird im allgemein verwendeten Kontext, sofern nicht ausdrücklich anderes angegeben ist, allgemein so verstanden, dass ein Element, ein Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit soll eine solche disjunktive Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass jeweils mindestens eines von X, mindestens eines von Y oder mindestens eines von Z vorhanden ist. Zudem sollte Konjunktivsprache wie der Ausdruck „mindestens eines von X, Y und Z“, sofern nicht ausdrücklich anderes angegeben ist, auch als X, Y, Z oder eine beliebige Kombination davon verstanden werden, einschließlich „X, Y und/oder Z“.
  • Veranschaulichende Beispiele der hier offenbarten Vorrichtungen, Systeme und Verfahren sind nachstehend angegeben. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann ein oder mehrere und eine beliebige Kombination der nachstehend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst eine Vorrichtung, umfassend: einen Speicher und einen Controller zum Empfangen einer Schreibanforderung, wobei: basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der nicht eine gesamte abrufbare Region einschließt, Konfigurieren eines Puffers im Speicher zum Speichern einer abrufbaren Region und des zugeordneten Inhalts und basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der eine gesamte abrufbare Region einschließt, und die abrufbare Region nicht im Puffer gespeichert ist, Bereitstellen von der Schreibanforderung zugeordnetem Inhalt für ein Speicherungsmedium und nicht für den Puffer.
  • Beispiel 2 umfasst ein beliebiges Beispiel, wobei der Controller Folgendes soll:
    • basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der eine gesamte abrufbare Region einschließt, und die abrufbare Region im Puffer gespeichert ist, Speichern des zugeordneten Inhalts im Puffer.
  • Beispiel 3 umfasst ein beliebiges Beispiel, wobei der Controller Folgendes soll: basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der eine gesamte abrufbare Region einschließt und auch eine zweite gesamte abrufbare Region umfasst, aber nicht einschließt: basierend darauf, dass der zugeordnete Inhalt, der eine gesamte abrufbare Region einschließt, nicht im Puffer gespeichert wird, Speichern eines Teils des zugeordneten Inhalts, der eine gesamte abrufbare Region einschließt, in dem Speicherungsmedium und Speichern eines Teils des zugeordneten Inhalts, der nicht die zweite gesamte abrufbare Region einschließt, in dem Puffer.
  • Beispiel 4 umfasst ein beliebiges Beispiel, wobei der Controller Folgendes soll: Aktualisieren einer Tabelle, um eine Adresse in dem Speicherungsmedium zu identifizieren, die in das Speicherungsmedium geschriebenem Inhalt zugeordnet ist.
  • Beispiel 5 umfasst ein beliebiges Beispiel, wobei der Controller Folgendes soll: Zugreifen auf eine Tabelle, um zu bestimmen, ob eine abrufbare Region im Puffer gespeichert ist.
  • Beispiel 6 umfasst ein beliebiges Beispiel, wobei die Tabelle mindestens einen Eintrag umfasst und wenn ein Eintrag angeben soll, dass eine abrufbare Region im Puffer gespeichert ist, umfasst der Eintrag ein Token eines bestimmten Werts.
  • Beispiel 7 umfasst ein beliebiges Beispiel, wobei, wenn sich ein Eintrag auf eine abrufbare Region bezieht, die im Puffer gespeichert ist, der Eintrag ein Offset in einen Speicher umfasst, der den Puffer speichert, um einen Startspeicherungsort der abrufbaren Region anzugeben.
  • Beispiel 8 umfasst ein beliebiges Beispiel, wobei wenn ein Eintrag angibt, dass eine abrufbare Region nicht im Puffer gespeichert ist, sondern in dem Speicherungsmedium gespeichert ist, umfasst der Eintrag nicht ein Token eines bestimmten Werts und umfasst einen Startspeicherungsort von Inhalt in dem Speicherungsmedium.
  • Beispiel 9 umfasst ein beliebiges Beispiel, wobei die abrufbare Region mindestens eine Indirektionseinheit (IU) umfasst.
  • Beispiel 10 umfasst ein beliebiges Beispiel, wobei Verwendung des Puffers Schreibverstärkung reduzieren soll, wobei Schreibverstärkung eine Menge an in Speicherungsmedien geschriebenem Inhalt, dividiert durch eine Menge an der Schreibanforderung zugeordnetem Inhalt, umfasst.
  • Beispiel 11 umfasst ein beliebiges Beispiel, wobei der Controller Folgendes soll: basierend auf einer Bedingung, Flushen von Inhalt aus dem Puffer in das Speicherungsmedium und Aktualisieren einer Tabelle, um anzugeben, dass Inhalt in dem Speicherungsmedium gespeichert ist.
  • Beispiel 12 umfasst ein beliebiges Beispiel, wobei die Bedingung eine oder mehrere der folgenden umfasst: Ablauf eines Timers oder Füllstand des Puffers erreicht oder übersteigt eine Schwelle.
  • Beispiel 13 umfasst ein beliebiges Beispiel, und umfasst ferner Folgendes: das Speicherungsmedium, das mit dem Controller gekoppelt ist, und eines oder mehrere von: einer Netzwerkschnittstelle, einer Fabric-Schnittstelle, einer Stromversorgung oder eine Anzeige.
  • Beispiel 14 umfasst ein computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Inhalt und eine Startadresse zum Speichern des Inhalts umfasst; Bestimmen, ob der Inhalt eine Gesamtheit einer abrufbaren Region, die der Startadresse zugeordnet ist, einschließt; basierend darauf, dass der Inhalt nicht eine gesamte abrufbare Region einschließt, Konfigurieren eines Puffers zum Speichern der gesamten abrufbaren Region; und basierend darauf, dass der Inhalt eine gesamte abrufbare Region einschließt und die abrufbare Region nicht im Puffer gespeichert ist, Bereitstellen von der Schreibanforderung zugeordnetem Inhalt für ein Speicherungsmedium und nicht für den Puffer.
  • Beispiel 15 umfasst ein beliebiges Beispiel und mit darauf gespeicherten Anweisungen, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: basierend darauf, dass der Inhalt eine gesamte abrufbare Region, die im Puffer gespeichert ist, einschließt, Speichern des Inhalts im Puffer.
  • Beispiel 16 umfasst ein beliebiges Beispiel und mit darauf gespeicherten Anweisungen, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: basierend darauf, dass der Inhalt eine gesamte abrufbare Region einschließt und außerdem eine zweite gesamte abrufbare Region umfasst, aber nicht einschließt: Speichern eines Teils des Inhalts, der eine gesamte abrufbare Region in dem Speicherungsmedium einschließt, auf der Basis eines Eintrags, der angibt, dass der Inhalt, der eine gesamte abrufbare Region einschließt, nicht im Puffer gespeichert ist, und Speichern eines Teils des Inhalts, der nicht eine zweite gesamte abrufbare Region einschließt, in dem Puffer.
  • Beispiel 17 umfasst ein beliebiges Beispiel und mit darauf gespeicherten Anweisungen, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Aktualisieren eines Eintrags, um eine Adresse in dem Speicherungsmedium zu identifizieren, die in das Speicherungsmedium geschriebenem Inhalt zugeordnet ist.
  • Beispiel 18 umfasst ein beliebiges Beispiel und mit darauf gespeicherten Anweisungen, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Zugreifen auf einen Eintrag, um zu bestimmen, ob eine abrufbare Region im Puffer gespeichert ist.
  • Beispiel 19 umfasst ein beliebiges Beispiel und mit darauf gespeicherten Anweisungen, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Modifizieren eines Eintrags, um (1) anzugeben, dass eine abrufbare Region im Puffer gespeichert ist, durch Aufnahme eines Tokens eines bestimmten Werts, und (2) Aufnehmen eines Offsets in einen Speicher, der den Puffer speichert, um einen Startspeicherungsort von Inhalt anzugeben.
  • Beispiel 20 umfasst ein beliebiges Beispiel, wobei wenn ein Eintrag angibt, dass eine abrufbare Region nicht im Puffer gespeichert ist, sondern in dem Speicherungsmedium gespeichert ist, umfasst der Eintrag nicht ein Token eines bestimmten Werts und umfasst einen Startspeicherungsort von Inhalt in dem Speicherungsmedium.

Claims (15)

  1. Vorrichtung, umfassend: einen Speicher und einen Controller zum Empfangen einer Schreibanforderung, wobei: basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der nicht eine gesamte abrufbare Region einschließt, Konfigurieren eines Puffers im Speicher zum Speichern einer abrufbaren Region und des zugeordneten Inhalts und basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der eine gesamte abrufbare Region einschließt, und die abrufbare Region nicht im Puffer gespeichert ist, Bereitstellen von der Schreibanforderung zugeordnetem Inhalt für ein Speicherungsmedium und nicht für den Puffer.
  2. Vorrichtung nach Anspruch 1, wobei der Controller Folgendes soll: basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der eine gesamte abrufbare Region einschließt, und die abrufbare Region im Puffer gespeichert ist, Speichern des zugeordneten Inhalts im Puffer.
  3. Vorrichtung nach Anspruch 1, wobei der Controller Folgendes soll: basierend darauf, dass die Schreibanforderung zugeordneten Inhalt aufweist, der eine gesamte abrufbare Region einschließt und auch eine zweite gesamte abrufbare Region umfasst, aber nicht einschließt: basierend darauf, dass der zugeordnete Inhalt, der eine gesamte abrufbare Region einschließt, nicht im Puffer gespeichert wird, Speichern eines Teils des zugeordneten Inhalts, der eine gesamte abrufbare Region einschließt, in dem Speicherungsmedium und Speichern eines Teils des zugeordneten Inhalts, der nicht die zweite gesamte abrufbare Region einschließt, in dem Puffer.
  4. Vorrichtung nach Anspruch 1, wobei der Controller Folgendes soll: Aktualisieren einer Tabelle, um eine Adresse in dem Speicherungsmedium zu identifizieren, die in das Speicherungsmedium geschriebenem Inhalt zugeordnet ist.
  5. Vorrichtung nach Anspruch 1, wobei der Controller Folgendes soll: Zugreifen auf eine Tabelle, um zu bestimmen, ob eine abrufbare Region im Puffer gespeichert ist, wobei die Tabelle mindestens einen Eintrag umfasst und wenn ein Eintrag angeben soll, dass eine abrufbare Region im Puffer gespeichert ist, der Eintrag ein Token eines bestimmten Werts umfasst, wenn sich ein Eintrag auf eine abrufbare Region bezieht, die im Puffer gespeichert ist, umfasst der Eintrag ein Offset in einen Speicher, der den Puffer speichert, um einen Startspeicherungsort der abrufbaren Region anzugeben, und wenn ein Eintrag angibt, dass eine abrufbare Region nicht im Puffer gespeichert ist, sondern in dem Speicherungsmedium gespeichert ist, umfasst der Eintrag nicht ein Token eines bestimmten Werts und umfasst einen Startspeicherungsort von Inhalt in dem Speicherungsmedium.
  6. Vorrichtung nach Anspruch 1, wobei die abrufbare Region mindestens eine Indirektionseinheit (IU) umfasst.
  7. Vorrichtung nach Anspruch 1, wobei der Controller Folgendes soll: basierend auf einer Bedingung, Flushen von Inhalt aus dem Puffer in das Speicherungsmedium und Aktualisieren einer Tabelle, um anzugeben, dass Inhalt in dem Speicherungsmedium gespeichert ist, wobei die Bedingung eine oder mehrere der folgenden umfasst: Ablauf eines Timers oder Füllstand des Puffers erreicht oder übersteigt eine Schwelle.
  8. Vorrichtung nach Anspruch 1, ferner umfassend: das Speicherungsmedium, das mit dem Controller gekoppelt ist, und eines oder mehrere von: einer Netzwerkschnittstelle, einer Fabric-Schnittstelle, einer Stromversorgung oder einer Anzeige.
  9. Vorrichtung nach einem der Ansprüche 1-8, wobei Verwendung des Puffers Schreibverstärkung reduzieren soll, wobei Schreibverstärkung eine Menge an in Speicherungsmedien geschriebenem Inhalt, dividiert durch eine Menge an der Schreibanforderung zugeordnetem Inhalt, umfasst.
  10. Computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Inhalt und eine Startadresse zum Speichern des Inhalts umfasst; Bestimmen, ob der Inhalt eine Gesamtheit einer abrufbaren Region, die der Startadresse zugeordnet ist, einschließt; basierend darauf, dass der Inhalt nicht eine gesamte abrufbare Region einschließt, Konfigurieren eines Puffers zum Speichern der gesamten abrufbaren Region; und basierend darauf, dass der Inhalt eine gesamte abrufbare Region einschließt und die abrufbare Region nicht im Puffer gespeichert ist, Bereitstellen von der Schreibanforderung zugeordnetem Inhalt für ein Speicherungsmedium und nicht für den Puffer.
  11. Computerlesbares Medium nach Anspruch 10, das darauf gespeicherte Anweisungen umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: basierend darauf, dass der Inhalt eine gesamte abrufbare Region einschließt, die im Puffer gespeichert ist, Speichern des Inhalts im Puffer oder basierend darauf, dass der Inhalt eine gesamte abrufbare Region einschließt und außerdem eine zweite gesamte abrufbare Region umfasst, aber nicht einschließt: Speichern eines Teils des Inhalts, der eine gesamte abrufbare Region in dem Speicherungsmedium einschließt, auf der Basis eines Eintrags, der angibt, dass der Inhalt, der eine gesamte abrufbare Region einschließt, nicht im Puffer gespeichert ist, und Speichern eines Teils des Inhalts, der nicht eine zweite gesamte abrufbare Region einschließt, in dem Puffer.
  12. Computerlesbares Medium nach Anspruch 10, das darauf gespeicherte Anweisungen umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Aktualisieren eines Eintrags, um eine Adresse in dem Speicherungsmedium zu identifizieren, die in das Speicherungsmedium geschriebenem Inhalt zugeordnet ist.
  13. Computerlesbares Medium nach Anspruch 10, das darauf gespeicherte Anweisungen umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Zugreifen auf einen Eintrag, um zu bestimmen, ob eine abrufbare Region im Puffer gespeichert ist, wenn ein Eintrag angibt, dass eine abrufbare Region im Puffer gespeichert ist, soll der Eintrag (1) angeben, dass eine abrufbare Region im Puffer gespeichert ist, indem ein Token eines bestimmten Werts aufgenommen wird, und (2) ein Offset in einen Speicher umfassen, der den Puffer speichert, um einen Startspeicherungsort von Inhalt anzugeben, und wenn ein Eintrag angibt, dass eine abrufbare Region nicht im Puffer gespeichert ist, sondern in dem Speicherungsmedium gespeichert ist, umfasst der Eintrag nicht ein Token eines bestimmten Werts und umfasst einen Startspeicherungsort von Inhalt in dem Speicherungsmedium.
  14. Computerlesbares Medium nach einem der Ansprüche 10-13, das darauf gespeicherte Anweisungen umfasst, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Zugreifen auf einen Eintrag, um zu bestimmen, ob eine abrufbare Region im Puffer gespeichert ist.
  15. Verfahren zum Ausführen von Schritten wie in einem vorhergehenden Anspruch beansprucht.
DE102020128675.9A 2019-12-12 2020-10-30 Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen Pending DE102020128675A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/712,703 US11861219B2 (en) 2019-12-12 2019-12-12 Buffer to reduce write amplification of misaligned write operations
US16/712,703 2019-12-12

Publications (1)

Publication Number Publication Date
DE102020128675A1 true DE102020128675A1 (de) 2021-06-17

Family

ID=70161754

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020128675.9A Pending DE102020128675A1 (de) 2019-12-12 2020-10-30 Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen

Country Status (3)

Country Link
US (1) US11861219B2 (de)
CN (1) CN112992207A (de)
DE (1) DE102020128675A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403034B1 (en) 2021-06-11 2022-08-02 International Business Machines Corporation Non-volatile storage class memory data flow with mismatched block sizes
CN113946292B (zh) * 2021-10-29 2023-10-24 南京审计大学 一种基于强化学习的频繁写缓存数据压缩方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583876A (en) * 1993-10-05 1996-12-10 Hitachi, Ltd. Disk array device and method of updating error correction codes by collectively writing new error correction code at sequentially accessible locations
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
JP4910360B2 (ja) * 2005-10-20 2012-04-04 ソニー株式会社 記憶装置、コンピュータシステム、およびデータ書き込み方法
US9807468B2 (en) * 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8724392B1 (en) * 2012-11-16 2014-05-13 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)
JP2014211800A (ja) * 2013-04-19 2014-11-13 株式会社東芝 データ記憶装置、ストレージコントローラおよびデータ記憶制御方法
US20170177482A1 (en) 2015-12-18 2017-06-22 Intel Corporation Computing system having multi-level system memory capable of operating in a single level system memory mode
US10365844B2 (en) 2016-12-29 2019-07-30 Intel Corporation Logical block address to physical block address (L2P) table compression
US10078453B1 (en) 2017-03-15 2018-09-18 Intel Corporation Storage system, computer program product, and method for managing a hybrid memory device system
US20190044809A1 (en) 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
US20190068466A1 (en) 2017-08-30 2019-02-28 Intel Corporation Technologies for auto-discovery of fault domains
US10649813B2 (en) 2018-03-29 2020-05-12 Intel Corporation Arbitration across shared memory pools of disaggregated memory devices
US10848155B2 (en) 2019-02-15 2020-11-24 Intel Corporation Flexible transmitter circuitry for integrated circuits
US11010079B2 (en) 2019-04-09 2021-05-18 Intel Corporation Concept for storing file system metadata within solid-stage storage devices

Also Published As

Publication number Publication date
US20200117397A1 (en) 2020-04-16
CN112992207A (zh) 2021-06-18
US11861219B2 (en) 2024-01-02

Similar Documents

Publication Publication Date Title
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102020133738A1 (de) Firmware-update-techniken
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102014003668A1 (de) Befehle zum markieren des anfangs und endes eines nicht- transaktionsorientierten codegebiets, das ein zurückschreiben zu einer persistenten ablage erfordert
DE112011106032T5 (de) Energieeinsparung durch Speicherkanal-Abschaltung
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher