DE102019113049A1 - VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL - Google Patents

VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL Download PDF

Info

Publication number
DE102019113049A1
DE102019113049A1 DE102019113049.2A DE102019113049A DE102019113049A1 DE 102019113049 A1 DE102019113049 A1 DE 102019113049A1 DE 102019113049 A DE102019113049 A DE 102019113049A DE 102019113049 A1 DE102019113049 A1 DE 102019113049A1
Authority
DE
Germany
Prior art keywords
cache
group
instruction
lock
cache line
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
DE102019113049.2A
Other languages
English (en)
Inventor
Mark Schmisseur
Thomas Willhalm
Francesc Guim Bernat
Karthik Kumar
Benjamin GRANIELLO
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 DE102019113049A1 publication Critical patent/DE102019113049A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • 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]
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/465Structured object, e.g. database record

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Eine Gruppe von Cache-Linien in Cache kann als Cache-Linien identifiziert werden, die erst in persistenten Speicher auszuräumen sind, wenn alle Cache-Linien-Schreibvorgänge für die Gruppe von Cache-Linien abgeschlossen wurden.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft persistenten Speicher und insbesondere Flush-Verwaltung einer atomischen Gruppe von Schreibvorgängen in persistenten Speicher.
  • STAND DER TECHNIK
  • Eine Datenbank ist eine organisierte Sammlung von Daten. Eine relationale Datenbank ist eine Sammlung von Tabellen, Anfragen und anderen Elementen. Ein Datenbankverwaltungssystem (DBMS) ist eine Computer-Softwareanwendung, die mit anderen Computer-Softwareanwendungen und der Datenbank in Wechselwirkung tritt, um Daten zu erfassen und zu analysieren.
  • Ein Computersystem kann eine Zentralverarbeitungseinheit (CPU) umfassen, die typischerweise mehrere Ebenen von Cache-Speicher umfasst. Ein Cache ist ein flüchtiger Speicher, zum Beispiel statischer Direktzugriffsspeicher (SRAM), der eine Kopie von Daten speichert, die im Hauptspeicher gespeichert sind. Hauptspeicher umfasst typischerweise flüchtigen Speicher, zum Beispiel dynamischen Direktzugriffsspeicher (DRAM). Flüchtiger Speicher ist Speicher, dessen Zustand (und deshalb die darin gespeicherten Daten) unbestimmt ist, wenn die Stromversorgung der Vorrichtung unterbrochen wird. Eine nichtflüchtige Speicher- bzw. NVM-Vorrichtung ist ein Speicher, dessen Zustand selbst dann bestimmt ist, wenn die Stromversorgung der Vorrichtung unterbrochen wird.
  • Im Gegensatz zu einem traditionellen Datenbanksystem, das Daten auf einer Speicherungsvorrichtung speichert, wie zum Beispiel einer Festplatte (HDD) oder einem Halbleiterlaufwerk (SSD), ist ein In-Speicher-Datenbank- bzw. IMDB-System ein Datenbankverwaltungssystem, das Daten in Hauptspeicher speichert. Der Hauptspeicher kann nichtflüchtiger Speicher sein. Eine IMDB stellt extrem hohe Anfragen/Sekunde bereit, um schnelle Entscheidungsfindung auf der Basis von Echtzeitanalytik zu unterstützen.
  • Wenn die Stromversorgung des Systems unerwartet unterbrochen wird, können Daten, die dabei sind, in die In-Speicher-Datenbank im nichtflüchtigen Speicher geschrieben zu werden, die in einem flüchtigen Speicher, zum Beispiel im Cache in der CPU, gespeichert wird, verloren gehen.
  • Figurenliste
  • Merkmale von Ausführungsformen des beanspruchten Gegenstands werden im Verlauf der folgenden ausführlichen Beschreibung und bei Bezugnahme auf die Zeichnungen, in denen gleiche Bezugszahlen gleiche Teile abbilden, ersichtlich. Es zeigen:
    • 1 eine Blockdarstellung einer Ausführungsform eines Computersystems, die einen Prozessorkern zum Übergeben einer Gruppe von Schreibvorgängen zusammen von dem Prozessor-Cache an den persistenten Speicher umfasst;
    • 2 den Datenpfad, der eine Anweisung zum Speichern von Daten (zum Beispiel eine MOV-Anweisung) in persistenten Speicher durch die Speicherhierarchie in dem in 1 gezeigten System nimmt,
    • 3 eine Blockdarstellung eines Cache-Eintrags in dem in 2 gezeigten L1-Datencache 132b; und
    • 4 ein Flussdiagramm eines Verfahrens, das durch beliebige der in 2 gezeigten Kerne ausgeführt wird, um eine Gruppe von Schreibvorgängen im Cache an persistenten Speicher zu übergeben.
  • Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf beispielhafte Ausführungsformen des beanspruchten Gegenstands erfolgt, werden Fachleuten viele Alternativen, Modifikationen und Varianten davon ersichtlich sein. Es ist dementsprechend beabsichtigt, dass der beanspruchte Gegenstand allgemein betrachtet wird und nur so definiert wird, wie es in den beigefügten Ansprüchen dargelegt ist.
  • BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Asynchrones DRAM-Selbstauffrischen (ADR) ist ein Merkmal auf Plattformebene, bei dem die Stromversorgung einem Plattform-Steuer-Hub (PCH) signalisiert, dass ein Stromausfall bevorsteht. Der PCH propagiert die Stromversorgungbenachrichtigung zur CPU. Interne Einheiten in der CPU signalisieren letztendlich dem internen Speichercontroller, um zu bewirken, dass er Anstehendes-Schreiben-Warteschlangen in dem Speichersubsystem in nichtflüchtigen Speicher ausräumt. Der nichtflüchtige Speicher kann persistenter Speicher sein, ein byteadressierbarer nichtflüchtiger Write-in-Place-Speicher.
  • Ein stromversorgunggeschütztes System mit ADR - Asynchronem DRAM-Selbstauffrischen (ADR) oder erweitertem Asynchronem DRAM-Selbstauffrischen (eADR) kann über ausreichend Reserveenergie verfügen, um alle in flüchtigem Speicher gespeicherte Daten (wozu Speichercontroller-Warteschlangen, Prozessor-Caches und Schreibdaten in Puffern im E/A-Controller gehören können) in persistenten Speicher in dem Computersystem zu schreiben, wenn die Stromversorgung des Systems unterbrochen wird. Zum Beispiel kann die CPU Anweisungen wie etwa CLWB (Cache Line Write Back), CLFLUSH (Cache Line Flush) und CLFLUSHOPT (Cache Line Flush Optimal) ausführen, um die Daten aus dem flüchtigen Cache in der CPU auszuräumen, wenn die Stromversorgung des Systems unterbrochen wird. Die Anweisung CLWB schreibt den im Cache gespeicherten Wert in persistenten Speicher und lässt den Wert auch im Cache, um den nächsten Zugriff auf Cache durchzuführen. Die Anweisung CLFLUSHOPT räumt die Cache-Linie aus und erlaubt Gleichzeitigkeit.
  • Es gibt jedoch Szenarien, bei denen es notwendig ist, eine Gruppe von Schreibvorgängen zusammen an persistenten Speicher zu übergeben, zum Beispiel „Alles-oder-Nichts-Übergaben“. Wenn zum Beispiel eine Anwendung dabei ist, einen Datensatz in einer In-Speicher-Datenbank zu aktualisieren, die in persistentem Speicher für einen „bevorzugten Kontakt“ gespeichert ist, der Felder für einen Namen, eine Telefonnummer und eine Emailadresse umfasst, müssen alle Felder zusammen im persistenten Speicher aktualisiert werden, wenn der Eintrag „bevorzugter Kontakt“ aktualisiert wird. Wenn nur ein Feld, zum Beispiel das Namenfeld, aktualisiert wird, wobei zur selben Zeit ein Stromausfall auftritt, führt dies zu einer nicht passenden Telefonnummer und Emailadresse in dem Datensatz für den „bevorzugten Kontakt“, der im persistenten Speicher gespeichert wird.
  • Bei einer Ausführungsform kann eine Gruppe von Cache-Linien im Cache als Cache-Linien identifiziert werden, die erst in persistenten Speicher auszuräumen sind, wenn alle Cache-Linien-Schreibvorgänge für die Gruppe von Cache-Linien abgeschlossen wurden. Eine Gruppe von Cache-Linien kann als atomische Gruppe von Schreibvorgängen bezeichnet werden. Eine Gruppe von Schreibvorgängen ist atomisch dergestalt, dass, wenn nicht alle Schreibvorgänge erfolgreich ausgeführt werden können, keine der Schreibvorgänge in der Gruppe ausgeführt werden.
  • Verschiede Ausführungsformen und Aspekte der Erfindungen werden mit Bezug auf nachfolgend besprochene Einzelheiten beschrieben, und die beigefügten Zeichnungen stellen die verschiedenen Ausführungsformen dar. Die folgende Beschreibung und die Zeichnungen veranschaulichen die Erfindung und sind nicht als Beschränkung der Erfindung aufzufassen. Es werden zahlreiche spezifische Einzelheiten beschrieben, um ein umfassendes Verständnis verschiedener Ausführungsformen der vorliegenden Erfindung zu gewährleisten. In bestimmten Fällen werden jedoch wohlbekannte oder herkömmliche Einzelheiten nicht beschrieben, um eine prägnante Besprechung von Ausführungsformen der vorliegenden Erfindung bereitzustellen.
  • Erwähnungen von „einer Ausführungsform“ in der Patentschrift bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten sein kann. Das Erscheinen der Phrase „bei einer Ausführungsform“ an verschiedenen Stellen in der Patentschrift bezieht sich nicht unbedingt immer auf dieselbe Ausführungsform.
  • Verschiede Ausführungsformen und Aspekte der Erfindungen werden mit Bezug auf nachfolgend besprochene Einzelheiten beschrieben, und die beigefügten Zeichnungen stellen die verschiedenen Ausführungsformen dar. Die folgende Beschreibung und die Zeichnungen veranschaulichen die Erfindung und sind nicht als Beschränkung der Erfindung aufzufassen. Es werden zahlreiche spezifische Einzelheiten beschrieben, um ein umfassendes Verständnis verschiedener Ausführungsformen der vorliegenden Erfindung zu gewährleisten. In bestimmten Fällen werden jedoch wohlbekannte oder herkömmliche Einzelheiten nicht beschrieben, um eine prägnante Besprechung von Ausführungsformen der vorliegenden Erfindung bereitzustellen.
  • Erwähnungen von „einer Ausführungsform“ in der Patentschrift bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten sein kann. Das Erscheinen der Phrase „bei einer Ausführungsform“ an verschiedenen Stellen in der Patentschrift bezieht sich nicht unbedingt immer auf dieselbe Ausführungsform.
  • 1 ist eine Blockdarstellung einer Ausführungsform eines Computersystems 100 mit einem Prozessorkern zum Übergeben einer Gruppe von Schreibvorgängen zusammen aus Prozessor-Cache an persistenten Speicher. Das Computersystem 100 kann einer Datenverarbeitungsvorrichtung entsprechen, darunter, aber ohne Beschränkung darauf, einem Server, einem Workstation-Computer, einem Desktop-Computer, einem Laptop-Computer und/oder einem Tablet-Computer.
  • Das Computersystem 100 umfasst ein System auf einem Chip (SOC oder SoC) 104, das Prozessor, Graphik, Speicher und Steuerlogik für Eingabe/Ausgabe (E/A) zu einer SoC-Kapselung kombiniert. Das SoC 104 umfasst mindestens einen Zentralverarbeitungseinheits- bzw. CPU-Rechenkomplex 108, einen Speichercontroller 114 und eine Graphikprozessoreinheit (GPU) 110. Bei anderen Ausführungsformen kann sich der Speichercontroller 114 außerhalb des SoC 104 befinden.
  • Bei der in 1 gezeigten Ausführungsform umfasst der CPU-Rechenkomplex 108 zwei Prozessoren, die auch als Prozessorkerne („Kerne“) 102 bezeichnet werden, und einen Cache 106 der Ebene 2 (L2), der von den Prozessorkernen 102 in dem CPU-Rechenkomplex 108 geteilt wird. Jeder Kern 102 umfasst einen Cache 132 der Ebene 1 (L1). Bei anderen Ausführungsformen kann der CPU-Rechenkomplex 108 mehr als zwei Prozessorkerne 102 aufweisen, und jeder Prozessorkern 102 kann einen Cache 106 der Ebene 2 aufweisen. Der Cache 132 der Ebene 1 und der Cache 106 der Ebene 2 werden von den Prozessorkernen 102 verwendet, um die Zeit für den Zugriff auf Daten aus externem Speicher in dem Computersystem 100 zu verringern. Der Cache 132 der Ebene 1 und der Cache 106 der Ebene 2 speichern eine Kopie von Daten aus häufig verwendeten Speicherorten in flüchtigem Speicher 126 und persistentem Speicher 128. Der Cache 132 der Ebene 1 kann einen Daten-Cache zum Speichern von Daten und einen Anweisungs-Cache zum Speichern von Anweisungen umfassen.
  • Obwohl es nicht gezeigt ist, kann jeder der Prozessorkern(e) 102 intern Ausführungseinheiten, Vorabrufpuffer, Anweisungswarteschlangen, Verzweigungsadressen-Berechnungseinheiten, Anweisungsdecodierer, Gleitkommaeinheiten, Zurückzieheinheiten usw. umfassen. Der CPU-Rechenkomplex 108 kann gemäß einer Ausführungsform einem Einzelkern- oder einem Mehrkern-Vielzweckprozessor entsprechen, wie etwa den von der Intel® Corporation bereitgestellten.
  • Der Speichercontroller 114 kann über einen Speicherbus 130, zum Beispiel Gen-Z (genzconsortium.org), Open CAPI (opencapi.org), CCIX (ccixconsortium.com) oder andere Differenz-Schnittstellentechnologien, mit einem persistentem Speicher 128 und einem flüchtigen Speicher 126 gekoppelt sein. Ein persistenter Speicher 128 ist ein byteadressierbarer nichtflüchtiger Write-in-Place-Speicher. Der persistente Speicher 128 kann eine byteadressierbare dreidimensionale Write-in-Place-Kreuzpunkt-Speichervorrichtung oder andere byteadressierbare Write-in-Place-NVM-Vorrichtungen umfassen, wie etwa Einzel- oder Mehrebenen-Phasenänderungsspeicher (PCM) oder Phasenänderungsspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalcogenid-Phasenänderungsmaterial (zum Beispiel Chalcogenidglas) verwenden, resistiver Speicher, darunter Metalloxidbasis-, Sauerstoffleerstellenbasis- und CB-RAM-Speicher (Conductive Bridge Random Access Memory), Nanodrahtspeicher, FeRAM (ferroelektrischen Direktzugriffsspeicher), MRAM (magnetoresistiven Direktzugriffsspeicher) mit Memristor-Technologie, STT-MRAM (Spin Transfer Torque), eine auf Spintronic-Magnetsperrschichtspeicher basierende Vorrichtung, eine auf MTJ (Magnetic Tunneling Junction) basierende Vorrichtung, eine Vorrichtung auf der Basis von DW (Domänenwand) und SOT (Spin Orbit Transfer), eine Speichervorrichtung auf Thyristorbasis, oder eine Kombination beliebiger von Obigen oder einen anderen geeigneten Speicher.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und daher der der in ihm gespeicherten Daten) unbestimmt ist, wenn die Stromzufuhr zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher macht ein Aktualisieren der in der Vorrichtung gespeicherten Daten erforderlich, um den Zustand aufrechtzuerhalten. Ein Beispiel für einen dynamischen flüchtigen Speicher umfasst einen DRAM (Dynamic Random Access Memory, Dynamischen Direktzugriffsspeicher) oder eine Variante davon, wie z. B. einen synchronen DRAM (SDRAM). Ein Speicher-Teilsystem, wie hierin beschrieben, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie z. B. DDR3 (Double Data Rate Version 3, ursprüngliche Veröffentlichung durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007), DDR4 (DDR Version 4, ursprüngliche Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR Version 4), LPDDR3 (Low-Power-DDR Version 3, JESD209-3B, Aug 2013 durch JEDEC), LPDDR4 Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2, JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014), HBM (High Bandwidth Memory, JESD235, ursprünglich veröffentlicht durch JEDEC im Oktober 2013), DDR5 (DDR Version 5, aktuell erwogen durch JEDEC), LPDDR5 (aktuell erwogen durch JEDEC), HBM2 (HBM Version 2, aktuell erwogen durch JEDEC), oder anderen oder Kombinationen von Speichertechnologien und Technologien auf der Basis von Ableitungen oder Erweiterungen solcher Spezifikationen. Die JEDEC-Standards sind bei www.jedec.org verfügbar.
  • Die E/A-Adapter 116 können einen PCIe-Adapter (Peripheral Component Interconnect Express) umfassen, der kommunikativ unter Verwendung des Protokolls NVMe (NVM Express) über PCIe (Peripheral Component Interconnect Express) über den Bus 144 mit einer Hostschnittstelle in dem SSD 118 gekoppelt ist. NVMe-Standards (Non-Volatile Memory Express) definieren eine Schnittstelle auf Registerebene für Hostsoftware zur Kommunikation mit einem nichtflüchtigen Speichersubsystem (zum Beispiel einem SSD (Solid-State Drive)) über PCIe (Peripheral Component Interconnect Express), einem schnellen seriellen Computererweiterungsbus. Die NVM-Express-Standards sind bei www.nvmexpress.org verfügbar. Die PCIe-Standards sind bei www.pcisig.com verfügbar.
  • Die Graphikprozessoreinheit (GPU) 110 kann einen oder mehrere GPU-Kerne und einen GPU-Cache, der graphikbezogene Daten für den GPU-Kern speichern kann, umfassen. Der GPU-Kern kann intern eine oder mehrere Ausführungseinheiten und einen oder mehrere Anweisungs- und Daten-Caches umfassen. Außerdem kann die Graphikprozessoreinheit (GPU) 110 andere Graphiklogikeinheiten enthalten, die in 1 nicht gezeigt sind, wie etwa eine oder mehrere Vertex-Verarbeitungseinheiten, Rasterisierungseinheiten, Medienverarbeitungseinheiten und Codecs.
  • In dem E/A-Subsystem 112 sind ein oder mehrere E/A-Adapter 116 anwesend, um ein in dem Prozessorkern bzw. den Prozessorkernen 102 benutztes Host-Kommunikationsprotokoll in ein mit bestimmten E/A-Vorrichtungen kompatibles Protokoll zu übersetzen. Einige der Protokolle, die Adapter für Übersetzung benutzen können, wären PCIe (Peripheral Component Interconnect(PCI)-Express); USB (Univeral Serial Bus); SATA (Serial Advanced Technology Attachment) und „Firewire“ 1594 des IEEE (Institute of Electrical and Electronics Engineers).
  • Der E/A-Adapter bzw. die E/A-Adapter 116 können mit externen E/A-Vorrichtungen 124 kommunizieren, die zum Beispiel Benutzeroberflächen-Vorrichtungen) umfassen können, darunter eine Anzeige und/oder eine Touchscreen-Anzeige 140, Drucker, Tastenfeld, Tastatur, Kommunikationslogik, verdrahtete und/oder drahtlose Speicherungsvorrichtung(en), darunter „HDD“ (Festplatten), „SSD“ (Solid-State Drives) 118, wechselbare Speicherungsmedien, ein DVD-Laufwerk (Digital Video Disk), ein CD-Laufwerk (Compact Disk), ein RAID (Redundant Array of Independent Disks), ein Bandlaufwerk oder eine andere Speicherungsvorrichtung. Die Speicherungsvorrichtungen können durch einen oder mehrere Busse, die eines oder mehrere von vielfältigen Protokollen verwenden können, darunter, aber ohne Beschränkung darauf, SAS (Serial Attached SCSI (Small Computer System Interface)), PCIe (Peripheral Component Interconnect Express), NVMe (NVM Express) über PCIe (Peripheral Component Interconnect Express) und SATA (Serial ATA (Advanced Technology Attachment)) kommunikativ und/oder physisch miteinander gekoppelt sein.
  • Außerdem können ein oder mehrere Drahtlosprotokoll-E/A-Adapter vorliegen. Beispiele für drahtlose Protokolle werden unter anderem in persönlichen Netzwerken verwendet, wie etwa IEEE 802.15 und Bluetooth 4.0; drahtlose lokale Netzwerke wie drahtlose Protokolle auf der Basis von IEEE 802.11; und Mobilfunkprotokolle.
  • 2 zeigt den Datenpfad, den eine Anweisung zum Speichern von Daten (zum Beispiel eine MOV-Anweisung) in persistenten Speicher 128 durch die Speicherhierarchie in dem in 1 gezeigten System nimmt. Wie in Verbindung mit 1 besprochen, umfasst jeder Kern 102 einen L1-Cache 132 mit einem L1-Anweisungscache 132a und einem L1-Datencache 132b. Bei der gezeigten Ausführungsform teilt sich jeder Kern 102 einen L2-Cache 106 mit anderen Kernen 102. Bei anderen Ausführungsformen kann jeder Kern 102 einen L2-Cache 106 umfassen und sich einen Cache der Ebene 3 (L3) teilen. Daten werden in Blöcken fester Größe, die als Cache-Linien oder Cache-Blöcke bezeichnet werden, zwischen Speicher (persistentem Speicher 128 und flüchtigem Speicher 126) und Cache (Cache 132 der Ebene 1 und Cache 106 der Ebene 2) transferiert.
  • Wenn eine Lade-/Speicherausführungseinheit 202 in dem Kern 102 eine Speicheranweisung (zum Beispiel eine MOV-Anweisung) zum Speichern von Daten (Schreiben von Daten) an einem Ort in persistentem Speicher 128 ausführt, prüft der Kern 102 zuerst auf einen entsprechenden Cache-Eintrag in dem L1-Datencache 132b. Wenn sich der Speicherort in einem Cache-Eintrag in dem L1-Datencache 132a befindet, ist ein Cache-Treffer aufgetreten. Im Fall eines Cache-Treffers schreibt der Kern 102 die Daten unmittelbar in die Cache-Linie im L1-Datencache 132a.
  • Wenn der Kern 102 keinen Cache-Eintrag in dem L1-Datencache 132b findet, der dem Speicherort im persistenten Speicher 128 entspricht, ist ein Cache-Fehltreffer aufgetreten. Bei einem Cache-Fehltreffer wird ein neuer Cache-Eintrag in dem L1-Datencache 132b zugeteilt, und an den Speicherort im persistenten Speicher 128 zu schreibende Daten werden in dem neuen Eintrag in dem L1-Datencache 132b gespeichert.
  • Der mit dem CPU-Modul gekoppelte Speichercontroller 114 schreibt in dem Datencache 132b der Ebene 1 und dem Cache 106 der Ebene 2 gespeicherte Daten in den persistenten Speicher 128. Wenn eine Speicheranweisung (zum Beispiel eine MOV-Anweisung) ausgeführt wird, um Daten im Speicher zu speichern, werden die zu speichernden Daten typischerweise in dem L1-Datencache 132b oder L2-Cache 106 in der CPU 108 gespeichert. Eine Schreibanweisung, zum Beispiel CLWB (Cache Line Write Back) kann ausgeführt werden, um die Daten aus dem L1-Datencache 132b und L2-Cache 106 in der CPU 108 auszuräumen. Nachdem die zu speichernden Daten aus dem L1-Datencache 132b und dem L2-Cache 106 ausgeräumt wurden, können die Daten in einer Anstehendes-Schreiben-Warteschlange (WPQ) 204 im Speichercontroller 114 gespeichert werden. Die in dem L1-Datencache 132b und dem L2-Cache 106 gespeicherten Daten können auch im Fall eines Stromausfalls unter Verwendung eines als Asynchrones DRAM-Auffrischen (ADR) bezeichneten Merkmals in persistenten Speicher ausgeräumt werden. Die WPQ 204 kann auch unter Verwendung eines Nur-Kernel-WPQ-Ausräumbefehls ausgeräumt werden, um sicherzustellen, dass Daten sofort in persistenten Speicher ausgeräumt werden.
  • 3 ist eine Blockdarstellung eines Cache-Eintrags 300 in dem in 2 gezeigten L1-Datencache 132b. Der Cache-Eintrag 300 wird in dem L1-Datencache 132b zugeteilt, wenn eine Cache-Linie aus dem persistenten Speicher 128 in den L1-Datencache 132b kopiert wird. Der Cache-Eintrag 300 speichert eine Kopie der im persistenten Speicher 128 gespeicherten Daten (Cache-Linie) in einem Datenblockfeld 304. Der Cache-Eintrag 300 umfasst außerdem ein Tag-Feld 302 und ein Flag-Feld 306. Ein in dem Tag-Feld 302 gespeichertes Tag umfasst einen Teil der der Cache-Linie zugeordneten Adresse des persistenten Speichers. Das Flag-Feld 306 speichert Metadaten, die ein Gültig-Bit („V“) 308, ein Schmutzig-Bit („D“) 310 und ein Nicht-Ausräumen-Bit („DNF“) 312 umfassen. Wenn das Schmutzig-Bit 310 gesetzt ist, wurde die zugeordnete Cache-Linie im L1-Datencache 132b durch den Kern 102 geschrieben, seit die Cache-Linie aus persistentem Speicher 128 gelesen wurde.
  • 4 ist ein Flussdiagramm eines durch einen beliebigen der in 2 gezeigten Kerne 102 ausgeführten Verfahrens zum Übergeben einer Gruppe von Schreibvorgängen im Cache an persistenten Speicher. Die Gruppe von Schreibvorgängen kann als eine atomische Gruppe von Schreibvorgängen, eine atomische Region, ein kritischer Abschnitt oder ein atomischer Abschnitt bezeichnet werden.
  • Bei einer Ausführungsform liegt die Größe der atomischen Region oder des atomischen Abschnitts („S“) innerhalb der Größe des L1-Cache (das heißt, ist kleiner oder gleich dieser). Ein L1-Cache kann etwa 20 KiloByte (KB) betragen und ist jedem Kern privat. Der atomische Abschnitt wird in jedem L1-Cache „prothread“-Weise implementiert.
  • Typischerweise ist eine atomische Region oder ein atomischer Abschnitt in einer Softwareanwendung kleiner als die Größe des L1-Cache. Eine Anweisung ANFANG_GRUPPE_ÜBERGABE kann verwendet werden, um einen Start der atomischen Region vorzugeben, und eine Anweisung ENDE_GRUPPE_ÜBERGABE, um das Ende der atomischen Region vorzugeben. Die Anweisung ANFANG_GRUPPE_ÜBERGABE kann einen Operanden annehmen, der ein relatives Offset auf eine Fallback-Anweisungsadresse bereitstellt, wenn die atomische Region nicht erfolgreich übergeben werden kann. Vor dem Ausführen der Anweisung ANFANG_GRUPPE_ÜBERGABE ist das Nicht-Ausräumen-Bit („DNF“) 312 in jeder Cachelinie im L1-Cache gelöscht (zum Beispiel auf logisch „0“ gesetzt).
  • In Block 400 wird eine Anweisung ANFANG_GRUPPE_ÜBERGABE, die angibt, dass eine Gruppe von Schreibvorgängen zusammen in einen persistenten Speicher zu schreiben ist, durch den Kern 102 ausgeführt. Die Verarbeitung wird mit Block 402 fortgesetzt.
  • In Block 402 wird als Reaktion auf die Anweisung ANFANG_GRUPPE_ÜBERGABE ein Master-Sperrbit gesetzt (zum Beispiel auf logisch „1“ gesetzt), wodurch angegeben wird, dass Cache-Linien im L1-Datencache 132b, die mit „nicht ausräumen“ markiert sind (zum Beispiel ist das Nicht-Ausräumen-Bit („DNF“) 312 auf logisch „1“ gesetzt), nicht in den persistenten Speicher 128 zu schreiben sind. Das Master-Sperrbit kann ein reserviertes Bit in einem Register im Kern sein und kann als eine „Nicht-Ausräumen“-Sperrung bezeichnet werden. Eine Cache-Linie im L1-Datencache 132b wird als „nicht ausräumen“ markiert, indem das „Nicht-Ausräumen“-Bit 312 gesetzt (zum Beispiel auf logisch „1“ gesetzt) wird. Wenn zu diesem Zeitpunkt ein Stromausfall auftritt, werden alle Cache-Linien in persistenten Speicher geschrieben, weil das „Nicht-Ausräumen“-Bit 312 in keiner der Cache-Linien im L1-Datencache 132b gesetzt ist. Die Verarbeitung wird mit Block 404 fortgesetzt.
  • In Block 404 werden für jede durch die Lade- und Speicherausführungseinheit 202 im Kern 102 ausgeführte Speicheranweisung die Daten anfänglich in einer Cache-Linie 300 im L1-Datencache 132b gespeichert. Zusätzlich zu Daten speichert jede Cache-Linie 300 im L1-Datencache 132b Metadaten (zum Beispiel die in 3 gezeigten Flag-Bit 306). Bei einer Ausführungsform ist ein Bit der Metadaten, das als ein „nicht-ausräumbar“-Bit oder ein „Nicht-Ausräumen“-Bit 312 bezeichnet werden kann, dafür reserviert, anzugeben, ob die Cache-Linie 300 in persistenten Speicher 128 ausgeräumt werden kann. Das „Nicht-Ausräumen“-Bit 312 wirkt als Verfolgungsmechanismus zum Markieren einer Cache-Linie, die Teil einer Gruppenübergabe an persistenten Speicher 128 ist, als eine Cache-Linie, die bei einem Stromausfall nicht auszuräumen ist.
  • Zusätzlich zu dem Markieren jeder Cache-Linie, die Teil einer Gruppenübergabe an persistenten Speicher ist, ist eine RFO-Operation (Read For Ownership) in der Mitte eines atomischen Abschnitts nicht gestattet. Ein RFO ist eine Operation in Cachekohärenzprotokollen. Die RFO-Operation ruft die letzte verfügbare Version von Daten entsprechend dieser Adresse in den Prozessor-Cache ab. Das Abrufen kann aus Hauptspeicher (DRAM) oder persistentem Speicher oder aus einem privaten Cache in einem anderen Kern erfolgen. Das Abrufen erfolgt typischerweise von dem Cache eines anderen Kerns aus, wenn durch den anderen Kern gerade in dieselbe Adresse geschrieben wurde und sie noch nicht aus dem Cache dieses Kerns ausgeräumt wurde, so dass die letzte Version von Daten sich in dem privaten Cache des anderen Kerns befindet.
  • Der Vorgabezustand für das „Nicht-Ausräumen“-Bit 312 ist gelöscht (zum Beispiel eine logische „0“), das heißt, Ausräumen der Cache-Linie bei einem Stromausfall. Das Master-Sperrbit dient als Sperrung für die „Nicht-Ausräumen“-Bit 312 in einem L1-Datencache im Kern. Während die Master-Sperrung gesetzt ist, ist das „Nicht-Ausräumen“-Bit in jeder Cache-Linie, in der Daten gespeichert sind, gesetzt (zum Beispiel auf logisch „1“ gesetzt). Wenn zu diesem Zeitpunkt ein Stromausfall auftritt, wurden keine der Speichervorgänge in L1-Cache seit die Prozessoranweisung ANFANG_GRUPPE_ÜBERGABE ausgeführt wurde, in persistenten Speicher 128 ausgeräumt. Die Verarbeitung wird mit Block 406 fortgesetzt.
  • In Block 406 wird als Reaktion auf eine durch den Kern 102 ausgeführte Anweisung ENDE_GRUPPE_ÜBERGABE das Master-Sperrbit gelöscht (zum Beispiel auf „0“ gesetzt), um anzugeben, dass die Daten für die Gruppe von Schreibvorgängen, die zusammen übergeben werden sollen, im L1-Datencache 132b gespeichert wurden. Wenn zu diesem Zeitpunkt ein Stromausfall auftritt, werden alle Cache-Linien 300 im L1-Datencache 132b in den persistenten Speicher 128 geschrieben, selbst die Cache-Linien 300 mit dem gesetzten „Nicht-Ausräumen“-Bit 312, weil das Master-Sperrbit gelöscht ist und der Zustand des „Nicht-Ausräumen“-Bit 312 für jede Cache-Linie im L1-Datencache 132b ignoriert wird. Das Master-Sperrbit wird verwendet, so dass das Löschen jedes „Nicht-Ausräumen“-Bit 312 am Ende einer Gruppenübergabe atomisch ist. Die Verarbeitung wird mit Block 408 fortgesetzt.
  • In Block 408 werden die „Nicht-Ausräumen“-Bit 312, die für die Cache-Linien 300 im L1-Datencache 132b gesetzt sind, gelöscht (zum Beispiel auf logisch „0“ gesetzt). Die Verarbeitung wird mit Block 410 fortgesetzt.
  • In Block 410 werden die in dem Datenblock 304 in den Cache-Linien 300 gespeicherten Daten in persistenten Speicher 128 geschrieben, und die Cache-Linien 300 im L1-Datencache 132b können zum Speichern anderer Daten verwendet werden. Die Verarbeitung ist abgeschlossen.
  • Es wurde eine Ausführungsform beschrieben, bei der die Größe der atomischen Region innerhalb der Größe des L1-Datencache 132b liegt. Wenn die Größe der atomischen Region größer als die Größe des L1-Datencache 132b ist, kann anstelle des Durchführens des wie in Verbindung mit 4 beschriebenen atomischen Ausräumens ein Undo-Log oder Redo-Log in einer anderen Region des persistenten Speichers 128 gespeichert werden, um die Schreibvorgänge in den persistenten Speicher 128 rückgängig zu machen oder wieder durchzuführen, wenn während einer Übergabe einer atomischen Gruppe ein Stromausfall auftritt. Um die Schreibvorgänge rückgängig zu machen, wird eine Schattenkopie der ursprünglichen Daten im persistenten Speicher 128 gespeichert, so dass, wenn während einer Übergabe einer atomischen Gruppe ein Stromausfall auftritt, die Schattenkopie abgerufen wird. Um die Schreibvorgänge wieder durchzuführen, werden die Gruppenübergabedaten an einen anderen Ort im persistenten Speicher 128 geschrieben (write-ahead), so dass, wenn während der Übergabe der atomischen Gruppe der Stromausfall auftritt, das Datenschreiben nach dem Wiederherstellen der Stromversorgung aus dem anderen persistenten Ort wieder aufgenommen werden und die Übergabe der atomischen Gruppe abgeschlossen werden kann.
  • Wenn die Größe der atomischen Region innerhalb der Größe des L1-Datencache 132b liegt und eine Cache-Linie aufgrund eines Konflikts geräumt wird, wird die Transaktion abgebrochen, und anstelle des Durchführens des atomischen Ausräumens wird wie zuvor beschrieben das Undo-Log oder Redo-Log verwendet.
  • Bei einer anderen Ausführungsform kann die Größe der atomischen Region innerhalb der Größe der Cache-Hierarchie liegen, statt nur innerhalb des Cache der ersten Ebene in der Cache-Hierarchie (L1-Datencache 132b). Bei einer Ausführungsform umfasst die Cache-Hierarchie den L1-Datencache 1132b und den L2-Cache 106 im Kern 102. Bei einer anderen Ausführungsform umfasst zusätzlich zu dem L1-Datencache 132b und dem L2-Cache 106 im Kern 102 die Cache-Hierarchie externen DRAM-Cache (zum Beispiel flüchtigen Speicher 126).
  • In einer Cache-Hierarchie mit Mehrebenen-Caches schließt, wenn alle Blöcke in dem Cache der höheren Ebene auch in dem Cache der niedrigeren Ebene anwesend sind, der Cache der niedrigeren Ebene den Cache der höheren Ebene ein. Wenn der Cache der niedrigeren Ebene Blöcke enthält, die in dem Cache der höheren Ebene nicht anwesend sind, ist der Cache der niedrigeren Ebene ausschließlich des Cache der höheren Ebene.
  • In einer exklusiven Cache-Hierarchie gibt es nur eine Kopie der Daten zwischen allen Ebenen, das heißt L1, L2 und L3 (dem Cache der letzten Ebene (LLC)). Die „Nicht-Ausräumen“-Bit werden vererbt, wenn eine Cache-Linie aus einer Cache-Ebene in der Cache-Hierarchie in eine andere Cache-Ebene geräumt wird.
  • In einer inklusiven Cache-Hierarchie besitzt jede Ebene unter jeder gegebenen Ebene dieselbe Kopie der Daten, das heißt, die letzte Ebene, (die die größte Kapazität aufweist), speichert eine Übermenge der in den L1- und L2-Caches gespeicherten Daten. Ähnlich ist L2 eine Übermenge von L1. Angesichts dieser Duplikation in einer inklusiven Cache-Hierarchie weist nur die „letzte Cache-Ebene“ (L2 oder L3) in der Cache-Hierarchie „Nicht-Ausräumen“-Bit auf.
  • Flussdiagramme wie hier dargestellt geben Beispiele für Sequenzen verschiedener Prozesshandlungen. Die Flussdiagramme können Operationen, die durch eine Software- oder Firmwareroutine auszuführen sind, sowie physische Operationen angeben. Bei einer Ausführungsform kann ein Flussdiagramm den Zustand eines Automaten (FSM) darstellen, der in Hardware und/oder Software implementiert werden kann. Obwohl sie in einer bestimmten Sequenz oder Reihenfolge gezeigt sind, kann die Reihenfolge der Handlungen, sofern es nicht anders angegeben wird, modifiziert werden. Die dargestellten Ausführungsformen sollten deshalb nur als Beispiel aufgefasst werden, und der Prozess kann in einer anderen Reihenfolge ausgeführt werden und manche Aktionen können parallel ausgeführt werden. Außerdem können eine oder mehrere Aktionen bei verschiedenen Ausführungsformen weggelassen werden; somit sind nicht alle Handlungen in jeder Ausführungsform erforderlich. Es sind andere Prozessflüsse möglich.
  • Soweit hier verschiedene Operationen oder Funktionen beschrieben werden, können sie als Softwarecode, Befehle, eine Konfiguration und/oder Daten beschrieben oder definiert werden. Der Inhalt kann direkt ausführbar („Objekt-“ oder „ausführbares-Programm“-Form), Quellcode oder Differenzcode („Delta“ oder „Patch“-Code) sein. Der Softwareinhalt der hier beschriebenen Ausführungsformen kann über einen Herstellungsartikel mit dem Inhalt darauf gespeichert oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle bereitgestellt werden. Ein maschinenlesbares Speicherungsmedium kann eine Maschine zum Durchführen der beschriebenen Funktionen oder Vorgänge veranlassen und beinhaltet einen beliebigen Mechanismus, der Informationen in einer Form speichert, die für eine Maschine (z. B. eine Rechenvorrichtung, ein elektronisches System usw.) zugänglich ist, wie etwa beschreibbare/nichtbeschreibbare Medien (z. B. Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeicherungsmedien, optische Speicherungsmedien, Flash-Speichervorrichtungen usw.). Eine Kommunikationsschnittstelle beinhaltet einen beliebigen Mechanismus, der an ein beliebiges eines festverdrahteten, drahtlosen, optischen usw. Mediums ankoppelt, um mit einer anderen Vorrichtung zu kommunizieren, wie etwa eine Speicherbusschnittstelle, eine Prozessorbusschnittstelle, eine Internetverbindung, eine Plattensteuerung usw. Die Kommunikationsschnittstelle kann durch Bereitstellen von Konfigurationsparametern und/oder Senden von Signalen oder beides konfiguriert werden, um die Kommunikationsschnittstelle zum Bereitstellen eines Datensignals, das den Softwareinhalt beschreibt, vorzubereiten. Auf die Kommunikationsschnittstelle kann über ein(en) oder mehrere Befehle oder Signale, die an die Kommunikationsschnittstelle gesendet werden, zugegriffen werden.
  • Verschiedene hier beschriebene Komponenten können ein Mittel zum Durchführen der beschriebenen Vorgänge oder Funktionen sein. Jede hier beschriebene Komponente beinhaltet Software, Hardware oder eine Kombination von diesen. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z. B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltkreise (ASICs), digitale Signalprozessoren (DSPs) usw.), eingebettete Steuerungen, festverdrahtete Schaltungsanordnung usw. implementiert werden.
  • Abgesehen von dem, was hier beschrieben ist, können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen.
  • Daher sollten die Veranschaulichungen und Beispiele hier in einem veranschaulichenden und nicht einem begrenzenden Sinn ausgelegt werden. Der Schutzumfang der Erfindung sollte allein durch Bezugnahme auf die Ansprüche, die folgen, bemessen werden.

Claims (18)

  1. Prozessor, umfassend: einen Cache, der mindestens eine Cache-Linie umfasst; und einen mit dem Cache gekoppelten Kern, wobei der Kern Folgendes umfasst: eine Ausführungseinheit, wobei die Ausführungseinheit zum Setzen einer Sperre als Reaktion auf Ausführung einer ersten Anweisung dient, wobei die Sperre dazu dient, eine Gruppe von Cache-Linien dafür zu markieren, erst in einen persistenten Speicher ausgeräumt zu werden, wenn alle Cache-Linien-Schreibvorgänge für eine Gruppe von Cache-Linien abgeschlossen wurden, wobei der persistente Speicher mit dem Prozessor gekoppelt ist.
  2. Prozessor nach Anspruch 1, wobei die erste Anweisung zur Markierung eines Anfangs einer Gruppenübergabe dient.
  3. Prozessor nach Anspruch 2, wobei, während die Sperre gesetzt ist, die Ausführungseinheit zum Speichern von in persistenten Speicher zu schreibenden Daten in einer Cache-Linie in der Gruppe von Cache-Linien und zum Setzen eines Bit in der Cache-Linie, um ein Ausräumen der Cache-Linie in persistenten Speicher im Fall eines Stromausfalls zu verhindern, dient.
  4. Prozessor nach Anspruch 3, wobei die Ausführungseinheit zum Löschen der Sperre für die Gruppe von Cache-Linien als Reaktion auf Ausführung einer zweiten Anweisung, nachdem Daten in allen Cache-Linien in der Gruppe von Cache-Linien gespeichert wurden, dient.
  5. Prozessor nach Anspruch 4, wobei die zweite Anweisung zum Markieren eines Endes der Gruppenübergabe dient.
  6. Prozessor nach Anspruch 5, wobei die Ausführungseinheit zum Löschen des Bit in jeder Cache-Linie in der Gruppe von Cache-Linien, nachdem die Sperre gelöscht wurde, dient.
  7. System, umfassend: einen persistenten Speicher; und einen mit dem persistenten Speicher gekoppelten Prozessor, wobei der Prozessor Folgendes umfasst: einen Cache, der mindestens eine Cache-Linie umfasst; und einen mit dem Cache gekoppelten Kern, wobei der Kern Folgendes umfasst: eine Ausführungseinheit, wobei die Ausführungseinheit zum Setzen einer Sperre als Reaktion auf Ausführung einer ersten Anweisung dient, wobei die Sperre dazu dient, eine Gruppe von Cache-Linien dafür zu markieren, erst in den persistenten Speicher ausgeräumt zu werden, wenn alle Cache-Linien-Schreibvorgänge für die Gruppe von Cache-Linien abgeschlossen wurden.
  8. System nach Anspruch 7, wobei die erste Anweisung zur Markierung eines Anfangs einer Gruppenübergabe dient.
  9. System nach Anspruch 8, wobei, während die Sperre gesetzt ist, die Ausführungseinheit zum Speichern von in persistenten Speicher zu schreibenden Daten in eine Cache-Linie in der Gruppe von Cache-Linien und zum Setzen eines Bit in der Cache-Linie, um ein Ausräumen der Cache-Linie in persistenten Speicher im Fall eines Stromausfalls zu verhindern, dient.
  10. System nach Anspruch 9, wobei die Ausführungseinheit zum Löschen der Sperre für die Gruppe von Cache-Linien als Reaktion auf Ausführung einer zweiten Anweisung, nachdem Daten in allen Cache-Linien in der Gruppe von Cache-Linien gespeichert wurden, dient.
  11. System nach Anspruch 10, wobei die zweite Anweisung zum Markieren eines Endes der Gruppenübergabe dient.
  12. System nach Anspruch 11, wobei die Ausführungseinheit zum Löschen des Bit in jeder Cache-Linie in der Gruppe von Cache-Linien, nachdem die Sperre gelöscht wurde, dient.
  13. Verfahren, umfassend: Speichern von in einen persistenten Speicher zu schreibenden Daten in eine Cache-Linie in einem Cache in einem Prozessor; Ausführen einer ersten Anweisung durch eine Ausführungseinheit in einem Kern in dem Prozessor zum Setzen einer Sperre, um eine Gruppe von Cache-Linien dafür zu markieren, erst in den persistenten Speicher ausgeräumt zu werden, wenn alle Cache-Linien-Schreibvorgänge für die Gruppe von Cache-Linien abgeschlossen wurden.
  14. Verfahren nach Anspruch 13, wobei die erste Anweisung zur Markierung eines Anfangs einer Gruppenübergabe dient.
  15. Verfahren nach Anspruch 14, ferner umfassend: Speichern von in persistenten Speicher zu schreibenden Daten in eine Cache-Linie in der Gruppe von Cache-Linien und Setzen eines Bit in der Cache-Linie, um ein Ausräumen der Cache-Linie in persistenten Speicher im Fall eines Stromausfalls zu verhindern, während die Sperre gesetzt ist.
  16. Verfahren nach Anspruch 15, ferner umfassend: Löschen der Sperre für die Gruppe von Cache-Linien als Reaktion auf Ausführung einer zweiten Anweisung, nachdem Daten in allen Cache-Linien in der Gruppe von Cache-Linien gespeichert wurden.
  17. Verfahren nach Anspruch 16, wobei die zweite Anweisung zum Markieren eines Endes der Gruppenübergabe dient.
  18. Verfahren nach Anspruch 17, ferner umfassend: Löschen des Bit in jeder Cache-Linie in der Gruppe von Cache-Linien, nachdem die Sperre gelöscht wurde.
DE102019113049.2A 2018-06-19 2019-05-17 VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL Pending DE102019113049A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/012,515 2018-06-19
US16/012,515 US10885004B2 (en) 2018-06-19 2018-06-19 Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss

Publications (1)

Publication Number Publication Date
DE102019113049A1 true DE102019113049A1 (de) 2019-12-19

Family

ID=68724838

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019113049.2A Pending DE102019113049A1 (de) 2018-06-19 2019-05-17 VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL

Country Status (3)

Country Link
US (1) US10885004B2 (de)
CN (1) CN110618788A (de)
DE (1) DE102019113049A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10847198B2 (en) * 2018-11-01 2020-11-24 Spin Memory, Inc. Memory system utilizing heterogeneous magnetic tunnel junction types in a single chip
US10866890B2 (en) * 2018-11-07 2020-12-15 Arm Limited Method and apparatus for implementing lock-free data structures
US10971681B2 (en) 2018-12-05 2021-04-06 Spin Memory, Inc. Method for manufacturing a data recording system utilizing heterogeneous magnetic tunnel junction types in a single chip
US10725912B2 (en) * 2018-12-19 2020-07-28 Micron Technology, Inc. Power loss protection in memory sub-systems
US11263180B2 (en) * 2019-02-23 2022-03-01 National Tsing Hua University Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
WO2021056780A1 (zh) * 2019-09-25 2021-04-01 掌阅科技股份有限公司 信息显示方法、阅读器、计算机存储介质、墨水屏阅读设备以及投屏显示系统
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
CN112637284A (zh) * 2020-12-09 2021-04-09 北京金山云网络技术有限公司 重做日志的存储方法和装置、电子设备和存储介质
US20210182187A1 (en) * 2020-12-24 2021-06-17 Intel Corporation Flushing Cache Lines Involving Persistent Memory
TWI779944B (zh) * 2021-07-29 2022-10-01 旺宏電子股份有限公司 維持資料一致性之記憶系統及其操作方法
CN116244216B (zh) * 2023-03-17 2024-03-01 摩尔线程智能科技(北京)有限责任公司 缓存控制方法、装置、缓存行结构、电子设备和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279080B1 (en) * 1999-06-09 2001-08-21 Ati International Srl Method and apparatus for association of memory locations with a cache location having a flush buffer
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US10452549B2 (en) * 2017-08-17 2019-10-22 Intel Corporation Method and apparatus for page table management
GB2571539B (en) * 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface

Also Published As

Publication number Publication date
US20190384837A1 (en) 2019-12-19
US10885004B2 (en) 2021-01-05
CN110618788A (zh) 2019-12-27

Similar Documents

Publication Publication Date Title
DE102019113049A1 (de) VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE602004002216T2 (de) Verfahren, system und programm für eine inkrementelle virtuelle kopie
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112014003349T5 (de) Verfahren und Gerät zum Ausführen atomarer Schreibvorgänge
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
DE112011105984T5 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
US20160224588A1 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102014003668A1 (de) Befehle zum markieren des anfangs und endes eines nicht- transaktionsorientierten codegebiets, das ein zurückschreiben zu einer persistenten ablage erfordert
DE102022102790A1 (de) Verwaltung der Hierarchie eines Zwei-Ebenen-Hauptspeichers
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE112016003998T5 (de) Technologien für das management eines reservierten hochleistungsspeicherbereichs eines solid-state-laufwerks
DE102020115843A1 (de) Verfahren und Vorrichtung zur Bereitstellung von ununterbrochenem Betrieb von missionskritischen verteilten In-Speicher-Anwendungen
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE102018204931A1 (de) Dauerhaftes Caching eines arbeitsspeicherseitigen Cache-Inhalts
DE102020116366A1 (de) System und verfahren für reduzierte latenz von lese-, änderungs- und schreibvorgängen