DE102021129138A1 - Abdeckungsbasierte komprimierung mit geringer komplexität - Google Patents

Abdeckungsbasierte komprimierung mit geringer komplexität Download PDF

Info

Publication number
DE102021129138A1
DE102021129138A1 DE102021129138.0A DE102021129138A DE102021129138A1 DE 102021129138 A1 DE102021129138 A1 DE 102021129138A1 DE 102021129138 A DE102021129138 A DE 102021129138A DE 102021129138 A1 DE102021129138 A1 DE 102021129138A1
Authority
DE
Germany
Prior art keywords
data
base value
value
ecc
block
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
DE102021129138.0A
Other languages
English (en)
Inventor
Alaa Alameldeen
Amir Ali Radjai
Jason Van Dyken
Aditya Nagaraja
Joshua Underdown
James Greensky
Wei Wu
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 DE102021129138A1 publication Critical patent/DE102021129138A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/0608Saving storage space on 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F3/064Management of blocks
    • 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
    • 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]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Abstract

Eine Ausführungsform einer elektronischen Einrichtung kann ein Substrat und Logik, die mit dem Substrat gekoppelt ist, beinhalten, wobei die Logik ausgelegt ist zum Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock. Andere Ausführungsformen werden offenbart und beansprucht.

Description

  • HINTERGRUND
  • Fehlerkorrekturcode(ECC)-Speicher ist eine Art von Computerdatenspeicherung, die viele Arten von internen Datenkorruptionen detektiert und korrigiert. Typischerweise hält ein ECC-Speicher ein Speichersystem immun gegen ein oder mehrere Fehlerbits. Im ECC-Speicher sind die Daten, die von jedem Wort gelesen werden, dieselben wie die Daten, die darin geschrieben wurden, selbst wenn eines oder mehrere der tatsächlich im ECC-Speicher gespeicherten Bits in den falschen Zustand umgelegt wurden. Syndromtabellen sind eine mathematische Weise zum Identifizieren von Bitfehlern und dann zum Korrigieren der Bitfehler, und Syndromräume können bei einer solchen syndrombasierten Decodierung verwendet werden.
  • ECC-Speicher wird verwendet, um Zuverlässigkeit für Anwendungen bereitzustellen, die keine Datenkorruption tolerieren können. Der ECC-Speicher kann aus einer zusätzlichen Vorrichtung auf einem Dual-In-Line-Speichermodul (DIMM) bestehen, das die zusätzliche ECC-Speicherung sowie eine Datenspur bereitstellt, damit ECC-Informationen zusammen mit den Daten geschrieben und gelesen werden. Bei einem DDR4 mit x8-Vorrichtungen kann ein ECC-DIMM beispielsweise aus 9 solcher Vorrichtungen bestehen, um einen 72-Bit-Kanal zu bilden, wobei 64 Bits zum Transferieren der Daten und 8 Bits zum ECC-Datentransfer verwendet werden. Daten können mit SECDED (Single Error Correction and Double Error Detection - Einzelfehlerkorrektur und Doppelfehlerdetektion) mit 8 Bit pro 64 Bit Datentransfer geschützt werden. ECC-DIMMs sind in der Regel teurer als normale DIMMs.
  • Base-Delta-Immediate(BDI)-Komprimierung bezieht sich auf eine Technik zum Komprimieren von Daten in On-Chip-Caches. BDI repräsentiert eine Cachezeile unter Verwendung eines Basiswerts und eines Arrays von Differenzen, deren kombinierte Größe kleiner ist als die ursprüngliche Cachezeile. Wo eine Cachezeile in solche Basis+Delta-Werte kleine Werte einstreut, integriert BDI solche Immediate-Werte effizient in die Codierung.
  • Frugal-ECC (FECC) komprimiert den Hauptspeicher mit Cacheblockgranularität und nutzt den eingesparten Platz zum Speichern von ECC-Informationen. FECC nutzt abdeckungsorientierte Komprimierung, um das Komprimierungsverhältnis gegen die Komprimierungsabdeckung einzutauschen. FECC nutzt BDI-Komprimierung für homogen typisierte Daten, Exponentenkomprimierung für Gleitkommadaten und Häufige-Wortmuster-Komprimierung für heterogen typisierte Daten.
  • Figurenliste
  • Das hierin beschriebene Material ist in den beigefügten Figuren beispielhaft und nicht einschränkend veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Veranschaulichung sind Elemente, die in den Figuren veranschaulicht sind, nicht notwendigerweise maßstabsgetreu gezeichnet. Zum Beispiel können die Abmessungen einiger Elemente relativ zu anderen Elementen aus Gründen der Klarheit übertrieben sein. Ferner werden, wo es als angebracht angesehen wird, Bezugszeichen in den verschiedenen Figuren wiederholt, um entsprechende oder analoge Elemente anzuzeigen. In den Figuren gilt:
    • 1 ist ein Blockdiagramm eines Beispiels eines elektronischen Speichersystems gemäß einer Ausführungsform;
    • 2 ist ein Blockdiagramm eines Beispiels einer elektronischen Einrichtung gemäß einer Ausführungsform;
    • 3 ist ein Flussdiagramm eines Beispiels für ein Verfahren zum Komprimieren von Speicher gemäß einer Ausführungsform;
    • 4 ist ein Blockdiagramm eines Beispiels eines Prozessablaufs gemäß einer Ausführungsform;
    • 5 ist ein Blockdiagramm eines Beispiels eines komprimierten Blocks gemäß einer Ausführungsform;
    • 6 ist ein Blockdiagramm eines anderen Beispiels eines komprimierten Blocks gemäß einer Ausführungsform;
    • 7 veranschaulicht ein Blockdiagramm, das die Platzierung eines In-Band-ECC-Komprimierungsmoduls in einem Speichersubsystem zeigt, gemäß einer Ausführungsform;
    • 8 veranschaulicht ein Blockdiagramm, das zeigt, wie der Speicherplatz in einen systemsichtbaren Speicher und einen ECC-Syndromraum unterteilt ist, gemäß einer Ausführungsform;
    • 9 veranschaulicht ein Blockdiagramm, das ein In-Band-ECC-Komprimierungsmodul mit einem neueren Syndrompuffer zeigt, gemäß einer Ausführungsform; und
    • 10 ist ein Blockdiagramm eines anderen Beispiels eines elektronischen Speichersystems gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine oder mehrere Ausführungsformen oder Implementierungen werden nun unter Bezugnahme auf die beiliegenden Figuren beschrieben. Obwohl spezielle Konfigurationen und Anordnungen besprochen werden, versteht es sich, dass dies nur zu veranschaulichenden Zwecken erfolgt. Fachleute auf dem relevanten Gebiet werden erkennen, dass andere Konfigurationen und Anordnungen eingesetzt werden können, ohne vom Wesen und Schutzumfang der Beschreibung abzuweichen. Es wird Fachleuten auf dem Gebiet ersichtlich sein, dass hierin beschriebene Techniken und/oder Anordnungen auch in einer Vielzahl anderer als den hierin beschriebenen Systemen und Anwendungen eingesetzt werden können.
  • Obgleich die folgende Beschreibung verschiedene Implementierungen darlegt, die in Architekturen manifestiert sein können, wie etwa System-on-Chip(SoC)-Architekturen, sind Implementierungen der hierin beschriebenen Techniken und/oder Anordnungen nicht auf spezielle Architekturen und/oder Rechensysteme beschränkt und können durch eine beliebige Architektur und/oder ein beliebiges Rechensystem für ähnliche Zwecke implementiert werden. Zum Beispiel können verschiedene Architekturen, die zum Beispiel mehrere Integrierte-Schaltung(IC)-Chips und/oder -Packages einsetzen, und/oder verschiedene Rechenvorrichtungen und/oder Verbraucherelektronikvorrichtungen (CE-Vorrichtungen), wie etwa Set-Top-Boxen, Smartphones usw., die hierin beschriebenen Techniken und/oder Anordnungen implementieren. Obgleich die folgende Beschreibung möglicherweise zahlreiche spezifische Einzelheiten, wie etwa Logikimplementierungen, Arten und Wechselbeziehungen von Systemkomponenten, Logikpartitionierungs-/-integrationsauswahlen usw. darlegt, kann der beanspruchte Gegenstand ohne derartige spezifische Einzelheiten ausgeübt werden. In anderen Fällen ist manches Material, wie etwa zum Beispiel Steuerungsstrukturen und vollständige Softwareanweisungssequenzen, möglicherweise nicht ausführlich gezeigt, um das hierin offenbarte Material nicht zu verschleiern.
  • Das hierin offenbarte Material kann in Hardware, einem feldprogrammierbaren Gate-Array (FPGA), Firmware, einem Treiber, Software oder einer beliebigen Kombination davon implementiert sein. Das hierin offenbarte Material kann auch als auf einem maschinenlesbaren Medium gespeicherte Anweisungen implementiert sein, die durch einen Moore-Automaten, einen Mealy-Automaten und/oder einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Medium kann ein beliebiges Medium und/oder einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. eine Rechenvorrichtung) lesbaren Form aufweisen. Beispielsweise kann ein maschinenlesbares Medium Nurlesespeicher (ROM, Read Only Memory); Direktzugriffsspeicher (RAM, Random Access Memory); dynamischen Direktzugriffsspeicher (DRAM), Magnetplattenspeichermedien; optische Speichermedien; Flash-Speicher-Vorrichtungen; Phasenwechselspeicher, Qubit-Solid-State-Quantenspeicher, elektrische, optische, akustische oder andere Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) und andere aufweisen.
  • Bezugnahmen in der Patentschrift auf „eine Implementierung“, „eine beispielhafte Implementierung“ usw. geben an, dass die beschriebene Implementierung ein spezielles Merkmal, eine spezielle Struktur oder Charakteristik aufweisen kann, wobei allerdings möglicherweise nicht notwendigerweise jede Ausführungsform das spezielle Merkmal, die spezielle Struktur oder Charakteristik enthält. Darüber hinaus beziehen sich solche Phrasen nicht notwendigerweise auf dieselbe Implementierung. Wenn des Weiteren ein spezielles Merkmal, eine spezielle Struktur oder Charakteristik in Verbindung mit einer Ausführungsform beschrieben ist, wird außerdem unterstellt, dass es im Kenntnisbereich von Fachleuten auf dem Gebiet liegt, ein derartiges Merkmal, eine derartige Struktur oder Charakteristik in Verbindung mit anderen Implementierungen auszuführen, ob dies hierin nun explizit beschrieben ist oder nicht.
  • Verschiedene hierin beschriebene Ausführungsformen können eine Speicherkomponente und/oder eine Schnittstelle zu einer Speicherkomponente beinhalten. Derartige Speicherkomponenten können flüchtigen und/oder nichtflüchtigen (NV) Speicher beinhalten. Ein flüchtiger Speicher kann ein Speicherungsmedium sein, das Leistung zum Aufrechterhalten des Zustands von durch das Medium gespeicherten Daten benötigt. Nichtbeschränkende Beispiele für flüchtigen Speicher können verschiedene Typen von Direktzugriffsspeicher (RAM), wie etwa dynamischen RAM (DRAM) oder statischen RAM (SRAM), einschließen. Ein bestimmter Typ von DRAM, der in einem Speichermodul verwendet werden kann, ist synchroner dynamischer RAM (SDRAM). Bei bestimmten Ausführungsformen kann DRAM einer Speicherkomponente einem Standard entsprechen, der durch Joint Electron Device Engineering Council (JEDEC) veröffentlicht ist, wie etwa ESD79F für DDR-SDRAM, JESD79-2F für DDR2-SDRAM, JESD79-3F für DDR3-SDRAM, JESD79-4A für DDR4-SDRAM, JESD209 für Low-Power-DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3, und JESD209-4 für LPDDR4 (diese Standards sind auf jedec.org verfügbar). Solche Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speicherungsvorrichtungen, die solche Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • NV-Speicher (NVM) kann ein Speicherungsmedium sein, das keine Leistung zum Aufrechterhalten des Zustands von durch das Medium gespeicherten Daten benötigt. In einer Ausführungsform kann die Speichervorrichtung eine blockadressierbare Speichervorrichtung beinhalten, wie etwa jene auf NAND- oder NOR-Technologien basierte. Eine Speichervorrichtung kann auch nichtflüchtige Vorrichtungen der zukünftigen Generation beinhalten, wie etwa eine dreidimensionale (3D) Crosspoint-Speichervorrichtung oder andere byteadressierbare nichtflüchtige Write-in-Place-Speichervorrichtungen. Bei einer Ausführungsform kann die Speichervorrichtung Speichervorrichtungen sein oder beinhalten, die Chalkogenidglas, Mehrfach-Schwellenpegel-NAND-Flash-Speicher, NOR-Flash-Speicher, Einzel- oder Mehrfachpegel-Phasenwechselspeicher (PCM), einen resistiven Speicher, Nanodrahtspeicher, ferroelektrischen Transistor-RAM (FeTRAM), antiferroelektrischen Speicher, magnetoresistiven RAM(MRAM)-Speicher, der Memristortechnologie beinhaltet, resistiven Speicher einschließlich der Metalloxid-Basis, der Sauerstoffleerstellen-Basis und des leitfähigen Brücken-RAM (CB-RAM) oder Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung basierend auf spintronischen Magnetübergangsspeicher, eine Vorrichtung basierend auf Magnettunnelübergang (MTJ: Magnetic Tunnel Junction), eine Vorrichtung basierend auf DW (Domänenwand) und SOT (Spin Orbit Transfer), eine thyristorbasierte Speichervorrichtung oder eine Kombination von beliebigen der Obigen oder einen anderen Speicher verwenden. Die Speichervorrichtung kann sich auf den Die selbst und/oder auf ein gekapseltes Speicherprodukt beziehen. In speziellen Ausführungsformen kann eine Speicherkomponente mit nichtflüchtigem Speicher einem oder mehreren durch JEDEC erlassenen Standards, wie etwa JESD218, JESD219, JESD220-1, JESD223B, JESD223-1 oder einem anderen geeigneten Standard entsprechen (die hier zitierten JEDEC-Standards sind auf jedec.org verfügbar).
  • Unter Bezugnahme auf 1 kann eine Ausführungsform eines elektronischen Speichersystems 10 eine Steuerung 11, einen Speicher 12 zum Speichern eines Datenblocks, der aus einer ersten Anzahl von Datenwörtern besteht, und eine Logik 13, die kommunikativ mit der Steuerung 11 und dem Speicher 12 gekoppelt ist, beinhalten. Die Logik 13 kann dazu ausgelegt sein, einen Basiswert zum Komprimieren des Datenblocks zu bestimmen, Originalwerte aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert zu ersetzen, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, und Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock zu speichern. In einigen Ausführungsformen kann die Logik 13 ferner dazu ausgelegt sein, ein oder mehrere Datenindexfelder in den Metadaten zu setzen, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • In einigen Ausführungsformen kann die Logik 13 ferner dazu ausgelegt sein, ein Datenwort aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, zu identifizieren und den Basiswert auf den Datenwert des identifizierten Datenwortes zu setzen. Zum Beispiel kann die Logik 13 auch dazu ausgelegt sein, ein Basisindexfeld in den Metadaten zu setzen, um eine Position des identifizierten Datenwortes anzugeben. Alternativ oder zusätzlich kann die Logik 13 dazu ausgelegt sein, den Basiswert auf einen Datenwert an einer festen Datenwortposition zu setzen und ein Feld in den Metadaten zu setzen, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist. Zum Beispiel können die Metadaten Fehlerkorrekturcode(ECC)-Informationen enthalten.
  • Ausführungsformen sowohl der obigen Steuerung 11, des Speichers 12, der Logik 13 als auch anderer Systemkomponenten können in Hardware, Software oder einer beliebigen geeigneten Kombination davon implementiert sein. Zum Beispiel können Hardwareimplementierungen konfigurierbare Logik beinhalten, wie etwa zum Beispiel programmierbare Logikarrays (PLAs), feldprogrammierbare Gate-Arrays (FPGAs), komplexe programmierbare Logikvorrichtungen (CPLD) oder Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnologie, wie etwa zum Beispiel Technologie mit anwendungsspezifischer integrierter Schaltung (ASIC), komplementärem Metalloxidhalbleiter (CMOS) oder Transistor-Transistor-Logik (TTL), oder einer beliebigen Kombination davon. Ausführungsformen der Steuerung 11 können eine Allzwecksteuerung, eine Spezialsteuerung, eine Speichersteuerung, eine Speicherungssteuerung, einen Mikrocontroller, einen Allzweckprozessor, einen Spezialprozessor, eine Zentralverarbeitungseinheit (CPU), eine Ausführungseinheit usw. beinhalten. In manchen Ausführungsformen kann sich der Speicher 12, die Logik 13 und/oder anderer Systemspeicher in verschiedenen Komponenten, einschließlich der Steuerung 11, befinden oder mit diesen kolokalisiert sein (z. B. auf demselben Die).
  • Alternativ oder zusätzlich können alle oder Teile dieser Komponenten in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert sein, die in einem maschinen- oder computerlesbaren Speicherungsmedium, wie etwa einem Direktzugriffspeicher (RAM), Nurlesespeicher (ROM), programmierbaren ROM (PROM), Firmware, Flash-Speicher usw., die durch einen Prozessor oder eine Rechenvorrichtung ausgeführt werden sollen, gespeichert sind. Zum Beispiel kann Computerprogrammcode zum Ausführen der Operationen der Komponenten in einer beliebigen Kombination von einer oder mehreren Betriebssystem(OS)-anwendbaren/-geeigneten Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie etwa PYTHON, PERL, JAVA, SMALLTALK, C++, C#, VHDL, Verilog, System C oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie etwa der Programmiersprache „C“, oder ähnlicher Programmiersprachen. Zum Beispiel können der Speicher 12, das persistente Speicherungsmedium oder ein anderer Systemspeicher einen Satz von Anweisungen speichern, die bei Ausführung durch die Steuerung 11 das System 10 veranlassen, ein(e) oder mehrere Komponenten, Merkmale oder Aspekte des Systems 10 zu implementieren (z. B. dass die Logik 13 den Basiswert zum Komprimieren des Datenblocks bestimmt, Originalwerte aus dem Datenblock durch Delta-Werte vom Basiswert ersetzt, um komprimierte Daten bereitzustellen, die mit dem Datenblock assoziierten Metadaten zusammen mit den komprimierten Daten in dem Datenblock speichert usw.).
  • Nun Bezug nehmend auf 2 kann eine Ausführungsform einer elektronischen Einrichtung 15 ein Substrat 16 und Logik 17, die mit dem Substrat 16 gekoppelt ist, beinhalten. Die Logik 17 kann dazu ausgelegt sein, einen Basiswert zum Komprimieren eines Datenblocks zu bestimmen (wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht), Originalwerte aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert zu ersetzen, um komprimierte Daten bereitzustellen (wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt), und Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock zu speichern. In einigen Ausführungsformen kann die Logik 17 ferner dazu ausgelegt sein, ein oder mehrere Datenindexfelder in den Metadaten zu setzen, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • In einigen Ausführungsformen kann die Logik 17 ferner dazu ausgelegt sein, ein Datenwort aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, zu identifizieren und den Basiswert auf den Datenwert des identifizierten Datenwortes zu setzen. Zum Beispiel kann die Logik 17 auch dazu ausgelegt sein, ein Basisindexfeld in den Metadaten zu setzen, um eine Position des identifizierten Datenwortes anzugeben. Alternativ oder zusätzlich kann die Logik 17 dazu ausgelegt sein, den Basiswert auf einen Datenwert an einer festen Datenwortposition zu setzen und ein Feld in den Metadaten zu setzen, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist. Zum Beispiel können die Metadaten ECC-Informationen enthalten.
  • Ausführungsformen der Logik 17 können in einem System, einer Einrichtung, einem Computer, einer Vorrichtung usw., wie den hierin beschriebenen, implementiert werden. Genauer können Hardwareimplementierungen der Logik 17 konfigurierbare Logik, wie zum Beispiel PLAs, FPGAs, CPLDs, oder in Logikhardware mit fester Funktionalität unter Verwendung einer Schaltungstechnologie, wie zum Beispiel einer ASIC-, CMOS- oder TTL-Technologie, oder eine beliebige Kombination davon einschließen. Alternativ oder zusätzlich kann die Logik 17 in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert sein, die in einem maschinen- oder computerlesbaren Speicherungsmedium, wie etwa einem RAM, ROM, PROM, Firmware, Flash-Speicher usw., die durch einen Prozessor oder eine Rechenvorrichtung ausgeführt werden sollen, gespeichert sind. Zum Beispiel kann Computerprogrammcode zum Ausführen der Operationen der Komponenten in einer beliebigen Kombination von einer oder mehreren OS-anwendbaren/-geeigneten Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie etwa PYTHON, PERL, JAVA, SMALLTALK, C++, C#, VHDL, Verilog, System C oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie etwa der Programmiersprache „C“, oder ähnlicher Programmiersprachen.
  • Zum Beispiel kann die Logik 17 auf einer Halbleitereinrichtung implementiert sein, die das eine oder die mehreren Substrate 16 einschließen kann, wobei die Logik 17 mit dem einen oder den mehreren Substraten 16 gekoppelt ist. In einigen Ausführungsformen kann die Logik 17 zumindest teilweise in konfigurierbarer Logik und/oder Hardwarelogik mit fester Funktionalität auf einem oder mehreren Halbleitersubstraten (z. B. Silizium, Saphir, Galliumarsenid usw.) implementiert sein. Zum Beispiel kann die Logik 17 ein Transistor-Array und/oder andere Integrierte-Schaltung-Komponenten, die mit dem einen oder den mehreren Substraten 16 gekoppelt sind, mit Transistorkanalgebieten, die innerhalb des einen oder der mehreren Substrate 16 positioniert sind, beinhalten. Die Schnittstelle zwischen der Logik 17 und dem einen oder den mehreren Substraten 16 ist möglicherweise kein abrupter Übergang. Die Logik 17 kann auch als eine Epitaxieschicht enthaltend angesehen werden, die auf einem anfänglichen Wafer des einen oder der mehreren Substrate 16 aufgewachsen wird.
  • Jetzt mit Bezug auf 3 kann eine Ausführungsform eines Verfahrens 20 zum Komprimieren von Speicher beinhalten: Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, bei Kasten 21, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, bei Kasten 22, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock, bei Kasten 23. Einige Ausführungsformen des Verfahrens können ferner beinhalten Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden, bei Kasten 24.
  • In einigen Ausführungsformen kann das Verfahren 20 ferner beinhalten Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, bei Kasten 25, und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes, bei Kasten 26. Zum Beispiel kann das Verfahren 20 auch beinhalten Setzen eines Basisindexfelds in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben, bei Kasten 27. Alternativ oder zusätzlich können die Ausführungsformen des Verfahrens 20 beinhalten Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition, bei Kasten 28, und Setzen eines Felds in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist, bei Kasten 29. Zum Beispiel können die Metadaten ECC-Informationen enthalten, bei Kasten 30.
  • Ausführungsformen des Verfahrens 20 können in einem System, einer Einrichtung, einem Computer, einer Vorrichtung usw., wie den hierin beschriebenen, implementiert werden. Genauer können Hardwareimplementierungen des Verfahrens 20 konfigurierbare Logik, wie zum Beispiel PLAs, FPGAs, CPLDs, oder in Logikhardware mit fester Funktionalität unter Verwendung einer Schaltungstechnologie, wie zum Beispiel einer ASIC-, CMOS- oder TTL-Technologie, oder eine beliebige Kombination davon einschließen. Hybride Hardwareimplementierungen beinhalten rekonfigurierbare statisch-dynamische SoC-Vorrichtungen derart, dass Steuerfluss und Datenpfade Logik für die Funktionalität implementieren. Alternativ oder zusätzlich kann das Verfahren 20 in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert sein, die in einem maschinen- oder computerlesbaren Speicherungsmedium, wie etwa einem RAM, ROM, PROM, Firmware, Flash-Speicher usw., die durch einen Prozessor oder eine Rechenvorrichtung ausgeführt werden sollen, gespeichert sind. Zum Beispiel kann Computerprogrammcode zum Ausführen der Operationen der Komponenten in einer beliebigen Kombination von einer oder mehreren OS-anwendbaren/-geeigneten Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache, wie etwa PYTHON, PERL, JAVA, SMALLTALK, C++, C#, VHDL, Verilog, System C oder dergleichen, und herkömmlicher prozeduraler Programmiersprachen, wie etwa der Programmiersprache „C“, oder ähnlicher Programmiersprachen.
  • Beispielsweise kann das Verfahren 20 auf einem computerlesbaren Medium implementiert werden. Ausführungsformen oder Teile des Verfahrens 20 können in Firmware, Anwendungen (z. B. durch eine Anwendungsprogrammierungsschnittstelle (API)) oder Treibersoftware, die auf einem Betriebssystem (OS) läuft, implementiert werden. Zusätzlich dazu könnten Logikanweisungen Assembler-Anweisungen, Anweisungssatzarchitektur-Anweisungen (ISA-Anweisungen), Datensatzarchitektur-Befehle (DSA-Befehle), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Zustandsfestlegungsdaten, Konfigurationsdaten für integrierte Schaltungsanordnungen, Zustandsinformationen, die elektronische Schaltungsanordnungen personalisieren, und/oder andere strukturelle Komponenten, die Hardware-nativ sind (z. B. Host-Prozessor, Zentralverarbeitungseinheit/CPU, Mikrocontroller, Moore-Automat, Mealy-Automat usw.), einschließen.
  • Unter Bezugnahme auf 4 kann eine Ausführungsform eines Prozessablaufs 40 zum Komprimieren von Speicher mit einem Datenblock 42 und Metadaten M1, die mit dem Datenblock 44 assoziiert sind, beginnen. Bei einer Schreibanforderung für den Datenblock 42 beinhaltet der Prozessablauf 40 Komprimieren der Daten, wie hierin beschrieben, um sowohl die komprimierten Daten als auch die Metadaten M1 in demselben Raum zu speichern, der für den unkomprimierten Datenblock 42 verwendet wird. Falls die Komprimierung erfolgreich ist, werden die komprimierten Daten mit einem auf Eins gesetzten Komprimierungs-Flag (C = 1, um die erfolgreiche Komprimierung anzugeben) und Metadaten M2 (die Komprimierungsmetadaten und die Metadaten M1 enthalten) kombiniert. Der erfolgreich komprimierte Block wird dann in den Speicher 44 (z. B. ein DIMM) geschrieben. Falls die Komprimierung nicht erfolgreich ist, werden die unkomprimierten Daten in unkomprimierte Teildaten aufgeteilt, die mit einem auf Null gesetzten Komprimierungs-Flag (C = 0, um die erfolglose Komprimierung anzugeben) und Metadaten M3 kombiniert werden. Der unkomprimierte Block wird dann in den Speicher 44 geschrieben und ein zweiter Schreibvorgang ist für den Rest der unkomprimierten Daten als Überlaufdaten erforderlich. Die Metadaten M1 können entweder mit den Metadaten M3 oder den Überlaufdaten enthalten sein. Bei einer Leseanforderung wird der Datenblock 42 entweder aus dem komprimierten Block (z. B. mit geeigneter Dekomprimierung) oder dem unkomprimierten Block (z. B. durch Neuzusammensetzen der unkomprimierten Daten) rekonstruiert und die Metadaten M1 werden abgerufen. Wenn die Komprimierung erfolgreich ist, ist vorteilhafterweise nur ein Lesevorgang des Speichers 44 erforderlich, um sowohl den Datenblock 42 als auch die Metadaten M1 abzurufen. Darüber hinaus gibt es wenig oder keine Nachteile, wenn die Komprimierung nicht erfolgreich ist, da herkömmlicherweise bereits zwei Speicherlesevorgänge erforderlich waren, um sowohl den Datenblock 42 als auch die Metadaten M1 abzurufen.
  • Einige Ausführungsformen können eine Technologie für eine abdeckungsbasierte Komprimierung mit geringer Komplexität bereitstellen. Das Speichern von Metadaten, die mit jedem Speicherblock assoziiert sind, erfordert möglicherweise die Verwendung von zwei Speicherzugriffen für jede Speicheranforderung. Um Speicherfehler zu reduzieren, kann beispielsweise ein ECC mit jedem 64-Byte(B)- oder 32B-Block im Speicher gespeichert werden. Das Lesen eines Speicherblocks erfordert das Lesen sowohl der Daten als auch des ECC, was bedeutet, dass jeder Last-Level-Cache(LLC)-Fehltreffer möglicherweise zwei Speicherreferenzen benötigt, was die Speicherbandbreitennutzung und die Leistung erhöht. Frugal-ECC (FECC) bietet Unterstützung für ECC mit feinkörniger Komprimierung, um genügend Platz für ECC-Informationen zu sparen, aber die Implementierung des Komprimierungsalgorithmus ist komplex, da sie mehrere komplexe Algorithmen mit hoher Latenz und erheblichem Leistungsverbrauch in der Komprimierungs-/Dekomprimierungslogik nutzt. Einer der von FECC genutzten Algorithmen ist der BDI-Algorithmus, der die Berechnung eines Delta-Werts für jedes andere Wort als das Basiswort im Speicherblock beinhaltet, was den Rechen- und Leistungsverbrauch erhöht. Vorteilhafterweise überwinden Ausführungsformen eines oder mehrere der vorstehenden Probleme.
  • Ausführungsformen stellen eine Technologie bereit, um das Komprimieren des ECC mit Daten in einem einzelnen Block (z. B. 64B oder 32B, abhängig von der ECC-Granularität) anzustreben, um Speicherbandbreite und Leistung zu sparen. Eine erfolgreiche Komprimierung speichert sowohl komprimierte Daten als auch ECC (z. B. und/oder andere Metadaten) in demselben Raum, der für einen unkomprimierten Block verwendet wird. Einige Ausführungsformen können eine Klasse von Komprimierungsalgorithmen (z. B. Delta-Komprimierung von ausgewählten frei wählbaren Basen) verwenden, um die Abdeckung zu erhöhen, ohne die Komplexität zu erhöhen. Vorteilhafterweise können einige Ausführungsformen Bandbreite und Leistung in Systemen sparen, die ECC verwenden, um sich von Speicherfehlern zu erholen. Zum Beispiel können Ausführungsformen auf Client-, Server-, Hochleistungs-Computing(flPC)-Systeme usw. angewendet werden, die handelsübliche (Nicht-ECC) DIMMS verwenden, aber dennoch Zuverlässigkeit unterstützen müssen.
  • Einige Ausführungsformen können eine Klasse von Komprimierungsalgorithmen verwenden, Delta-Komprimierung mit ausgewählten frei wählbaren Basen, die sowohl eine hohe Abdeckung als auch eine geringere Komplexität als herkömmliche Techniken bereitstellen. Die Delta-Komprimierung identifiziert im Allgemeinen ein oder mehrere Wörter in dem Speicherblock, die einem Basiswort ähnlich sind (z. B. innerhalb eines kleinen Deltas). Das Basiswort könnte der Wert Null, ein identifiziertes Wort im Block (das beispielsweise eine erfolgreiche Komprimierung liefert), das erste Wort im Block oder ein anderes frei wählbares Wort im Block sein. Ein Wort hat eine feste Länge, z. B. 16 Bit (b), 32b, 64b usw. In verschiedenen Implementierungen können sich die Begriffe „Block“ oder „Datenblock“ auf „Zeile“ oder „Cachezeile“ oder „Datenzeile“ beziehen oder mit diesen ausgetauscht werden. Ausführungsformen entfernen ein oder mehrere Wörter aus einem Block und beinhalten Komprimierungsmetadaten, um anzuzeigen, wo sich die entfernten Wörter in dem unkomprimierten Block befanden. Ausführungsformen einer erfolgreichen Komprimierung entsprechen der Situation, bei der genügend Bits entfernt werden, um die entfernten Bits wiederverwenden zu können, um Metadaten (z. B. ECC) und beliebige andere komprimierungsbezogene Metadaten zu speichern.
  • Unter Bezugnahme auf 5 verwendet eine Ausführungsform eines komprimierten Blocks 50 eine Komprimierungstechnologie, um zwei (2) 16-Bit-Wörter, die innerhalb eines 3-Bit-Deltas liegen, aus einem ausgewählten 16-Bit-Wort in einem 32B-Block zu entfernen. Komprimierungsmetadaten für den komprimierten Block beinhalten ein komprimiertes Flag-Feld C (1-Bit-Flag x 3), ein Basis-Flag-Feld F (1-Bit-Flag, um eine Nullbasis oder eine ausgewählte Basis anzugeben), ein Basisindexfeld IS (4-Bit-Index zur Positionierung des ausgewählten Basiswerts), ein erstes Datenindexfeld 11 (4-Bit-Index zur Positionierung des ersetzten Datenwortes eins), ein zweites Datenindexfeld 12 (4-Bit-Index zur Positionierung des ersetzten Datenwortes zwei), ein erstes Delta-Feld D1 (3-Bit-Delta-Wert für ersetztes Datenwort eins), ein zweites Delta-Feld D2 (3-Bit-Delta-Wert für ersetztes Datenwort zwei), ein Metadaten-Feld ECC (10-Bit-SECDED(Einzelfehlerkorrektur und Doppelfehlerdetektion)-ECC) und vierzehn (14) Datenwortfelder W0...W13 für die verbleibenden (nicht komprimierten) 16-Bit-Datenwörter. Wenn die Komprimierung erfolgreich ist, belegen alle Komprimierungsmetadaten und die ECC-Metadaten die 32 Bits der beiden entfernten 16-Bit-Datenwörter.
  • Wie in 5 gezeigt, gibt ein 1-Bit-Flag F an, ob die Deltas von Null oder einem ausgewählten Datenwort gemessen werden. Die drei Indexfelder mit jeweils 4 Bits zeigen auf den ausgewählten Wortindex (IS) sowie die beiden Indizes (I1, I2) der beiden entfernten Wörter. Die beiden 3-Bit-Delta-Felder D1, D2 speichern die arithmetische Differenz zwischen jedem der beiden entfernten Wörter und entweder Null oder dem ausgewählten Wort. Für das komprimierte Flag-Feld werden drei Bits verwendet, wobei die dreifache modulare Redundanz (TMR) verwendet wird, da ein Fehler im komprimierten Flag-Feld nicht durch den ECC abgedeckt wird. Die verbleibenden 10 Bits der entfernten 32 Bits speichern ein 10-Bit-SECDED-ECC-Feld, das 32B Daten abdeckt. Der Rest des komprimierten Blocks speichert die 14 Wörter, die nicht entfernt wurden.
  • Eine beliebige geeignete Technik kann verwendet werden, um einen geeigneten Basiswert für die Komprimierung zu identifizieren. Zum Beispiel können einige Ausführungsformen mit Null (0) für den Basiswert beginnen und bestimmen, ob zwei der anderen Wörter innerhalb eines 3-Bit-Delta von Null liegen. Wenn dies der Fall ist, wird das komprimierte Flag C auf 7 (binär 111) gesetzt, das Flag F wird auf null gesetzt, um einen Basiswert von null anzugeben, 11 wird auf die Position des ersten Datenwortes innerhalb des 3-Bit-Deltas von null gesetzt, 12 wird auf die Position des zweiten Datenwortes innerhalb des 3-Bit-Deltas von Null gesetzt, und die Delta-Felder D1 und D2 werden auf die jeweiligen Delta-Werte gesetzt. Andernfalls können einige Ausführungsformen mit W0 beginnen und bestimmen, ob zwei der anderen Wörter innerhalb eines 3-Bit-Delta von W0 liegen. Wenn dies der Fall ist, wird das komprimierte Flag C auf 7 (binär 111) gesetzt, das Flag F wird auf eins gesetzt, um einen ausgewählten Basiswert anzugeben, IS wird auf 0 gesetzt (der Datenwortposition von W0), 11 wird auf die Position des ersten Datenwortes innerhalb des 3-Bit-Delta von W0 gesetzt, 12 wird auf die Position des zweiten Datenwortes innerhalb des 3-Bit-Delta von W0 gesetzt, und die Delta-Felder D1 und D2 werden auf die jeweiligen Delta-Werte gesetzt. Falls weniger als zwei Wörter innerhalb eines 3-Bit-Delta von W0 liegen, kann sich der Prozess für die Datenwörter W1 bis W15 wiederholen und anhalten, wenn ein geeigneter Basiswert identifiziert wird. Fachleute werden erkennen, dass der gesamte oder Teile des vorstehenden Prozesses mit einer Zustandsmaschine oder einer kombinatorischen Logik implementiert werden können. Falls ein geeigneter Basiswert identifiziert wird, werden die ECC-Informationen für den Block im ECC-Feld gespeichert. Falls kein geeigneter Basiswert identifiziert wird, kann das Komprimierungs-Flag-Feld auf 0 gesetzt werden, was angibt, dass die Komprimierung nicht erfolgreich war, und die Überlaufdaten können getrennt von dem unkomprimierten Block gespeichert werden.
  • Unter Bezugnahme auf 6 verwendet eine Ausführungsform eines komprimierten Blocks 60 eine Komprimierungstechnologie, um zwei (2) 16-Bit-Wörter, die innerhalb eines 4-Bit-Delta liegen, aus einem oder mehreren frei wählbaren 16-Bit-Wörtern an festen Positionen in einem 32B-Block zu entfernen. Komprimierungsmetadaten für den komprimierten Block beinhalten ein komprimiertes Flag-Feld C (1-Bit-Flag x 3), ein Metadatenfeld ECC (11-Bit-SECDED-ECC), ein Basis-Flag-Feld F (1-Bit-Flag, um eine Nullbasis oder eine frei wählbare Basis anzugeben), ein Basisindexfeld IA (1-Bit-Flag zum Angeben, welche der beiden frei wählbaren Positionen für den Basiswert zu verwenden ist), ein erstes Datenindexfeld 11 (4-Bit-Index zur Positionierung des ersetzten Datenwortes eins), ein zweites Datenindexfeld 12 (4-Bit-Index zur Positionierung des ersetzten Datenwortes zwei), ein erstes Delta-Feld D1 (4-Bit-Delta-Wert für ersetztes Datenwort eins), ein zweites Delta-Feld D2 (4-Bit-Delta-Wert für ersetztes Datenwort zwei) und vierzehn (14) Datenwortfelder W0 ... W13 für die verbleibenden (nicht komprimierten) 16-Bit-Datenwörter. Wenn die Komprimierung erfolgreich ist, belegen alle Komprimierungsmetadaten und die ECC-Metadaten die 32 Bits der beiden entfernten 16-Bit-Datenwörter.
  • Für den komprimierten Block 50 erfordert das Identifizieren eines einzelnen ausgewählten Wortes, dem zwei andere Wörter nahe liegen, eine höhere Komplexität (z. B. Bereich, Latenz und Leistung), um alle Wortpaare in dem Block zu subtrahieren. Der komprimierte Block 60 zielt auf ausgewählte frei wählbare Wörter ab, wobei ein vordefinierter Satz frei wählbarer Wörter als eine Basis für die Delta-Komprimierung verwendet werden kann. Zum Beispiel können einige Ausführungsformen das erste und das neunte Wort in dem Block als zwei frei wählbare Basen verwenden. Das Begrenzen der Anzahl möglicher Basiswortpositionen und/oder das Verwenden fester Positionen für die möglichen Basiswörter reduziert den Bereich, die Latenz und die Leistung, die zum Berechnen der Deltas benötigt werden, erheblich, da Subtraktionen nur mit einer kleinen Teilmenge aller Wortpaare durchgeführt werden müssen. Die Verwendung von weniger möglichen Basiswortpositionen erhöht auch die Anzahl von freien Bits in den Metadaten, die dann für andere Zwecke verwendet werden können. Zum Beispiel kann das 4-Bit-IS-Feld durch das 1-Bit-IA-Flag ersetzt werden, was 3 Bits der Metadaten freigibt. Die zusätzlichen Bits ermöglichen, dass der komprimierte Block 60 11-Bit-SECDEC-ECC (der bis zu einem 64B-Block abdecken kann) und 4-Bit-Delta-Werte anstelle von 3-Bit (was die Wahrscheinlichkeit einer erfolgreichen Komprimierung erhöht) enthält.
  • Eine beispielhafte Implementierung des komprimierten Blocks 60 kann nur zwei frei wählbare Wörter (z. B. das erste und das neunte Wort) als potenzielle Basen zusätzlich zu Null verwenden. Zum Beispiel können einige Ausführungsformen mit Null (0) für den Basiswert beginnen und bestimmen, ob zwei der anderen Wörter innerhalb eines 4-Bit-Delta von Null liegen. Wenn dies der Fall ist, wird das komprimierte Flag C auf 7 (binär 111) gesetzt, das Flag F wird auf null gesetzt, um einen Basiswert von null anzugeben, 11 wird auf die Position des ersten Datenwortes innerhalb des 4-Bit-Deltas von null gesetzt, 12 wird auf die Position des zweiten Datenwortes innerhalb des 4-Bit-Deltas von Null gesetzt, und die Delta-Felder D1 und D2 werden auf die jeweiligen Delta-Werte gesetzt. Andernfalls können einige Ausführungsformen mit dem ersten Wort beginnen und bestimmen, ob zwei der anderen Wörter innerhalb eines 4-Bit-Delta des ersten Wortes liegen. Wenn dies der Fall ist, wird das komprimierte Flag C auf 7 (binär 111) gesetzt, das Flag F wird auf eins gesetzt, um einen frei wählbaren Basiswert anzugeben, IA wird auf 0 gesetzt (um anzugeben, dass das erste Wort den Basiswert bereitstellt), 11 wird auf die Position des ersten Datenwortes innerhalb des 4-Bit-Delta des ersten Wortes gesetzt, 12 wird auf die Position des zweiten Datenwortes innerhalb des 4-Bit-Delta des ersten Wortes gesetzt, und die Delta-Felder D1 und D2 werden auf die jeweiligen Delta-Werte gesetzt.
  • Falls weniger als zwei Wörter innerhalb eines 4-Bit-Delta des ersten Wortes liegen, kann der Prozess für das neunte Datenwort wiederholt werden, um zu bestimmen, ob zwei der anderen Wörter innerhalb eines 4-Bit-Delta des neunten Wortes liegen. Wenn dies der Fall ist, wird das komprimierte Flag C auf 7 (binär 111) gesetzt, das Flag F wird auf eins gesetzt, um einen frei wählbaren Basiswert anzugeben, IA wird auf 1 gesetzt (um anzugeben, dass das neunte Wort den Basiswert bereitstellt), 11 wird auf die Position des ersten Datenwortes innerhalb des 4-Bit-Delta des neunten Wortes gesetzt, 12 wird auf die Position des zweiten Datenwortes innerhalb des 4-Bit-Delta des neunten Wortes gesetzt, und die Delta-Felder D1 und D2 werden auf die jeweiligen Delta-Werte gesetzt. Fachleute werden erkennen, dass der gesamte oder Teile des vorstehenden Prozesses mit einer Zustandsmaschine oder einer kombinatorischen Logik implementiert werden können. Falls beliebige von Null, dem ersten Wort oder dem neunten Wort einen geeigneten Basiswert liefern, werden die ECC-Informationen für den Block im ECC-Feld gespeichert. Andernfalls kann das Komprimierungs-Flag-Feld auf 0 gesetzt werden, was angibt, dass die Komprimierung nicht erfolgreich war, und die Überlaufdaten können getrennt von dem unkomprimierten Block gespeichert werden.
  • Der komprimierte Block 60 deckt vorteilhafterweise SECDED-ECC entweder für einen 32B- oder einen 64B-Block ab. Für 32B werden nur 10 Bit ECC benötigt. Für eine 64B-Granularität werden 11 Bits für ECC benötigt, die entweder im oberen oder unteren 32B-Chunk gespeichert werden könnten. Das 1-Bit-Flag F gibt an, ob Deltas von Null oder einer frei wählbaren Basis gemessen werden, und das 1-Bit-Flag IA identifiziert den geeigneten Index für die frei wählbare Basis, da es nur zwei Möglichkeiten gibt (z. B. W0 oder W8). Vorteilhafterweise stellen Ausführungsformen eine hohe Komprimierungsabdeckung mit weniger Komplexität im Vergleich zu herkömmlicher Komprimierungstechnologie (z. B. FECC, BDI usw.) bereit. Über eine breite Palette von Benchmarks über mehrere Client-, Server- und HPC-Arbeitslasten hinweg zeigten Ausführungsformen eine durchschnittliche Abdeckung von über 80 %, wenn die 32B-ECC-Granularität unterstützt wurde. Bei einer 64B-Granularität steigt die durchschnittliche Abdeckung auf 84 %, da der Block abgedeckt ist, wenn entweder der obere oder der untere Chunk komprimiert werden kann.
  • Die komprimierten Blöcke 50 und 60 sind nicht einschränkende Beispiele für Komprimierungstechnologie gemäß einigen Ausführungsformen. Angesichts des Vorteils der vorliegenden Anmeldung werden dem Fachmann zahlreiche andere Beispiele einfallen. Je nach Größe der Metadaten können beispielsweise mehr oder weniger Datenwörter mit entsprechenden Änderungen an den Komprimierungsmetadaten entfernt werden. In ähnlicher Weise können einige Ausführungsformen mehr oder weniger feste, frei wählbare Datenwortpositionen für den Basiswert verwenden. Einige Ausführungsformen können mehr oder weniger Bits für den Delta-Wert verwenden.
  • Die hierin besprochene Technologie kann in verschiedenen Rechensystemen bereitgestellt werden (z. B. einschließlich einer nicht mobilen Rechenvorrichtung wie etwa einem Desktop, einer Workstation, einem Server, einem Rack-System usw., einer mobilen Rechenvorrichtung, wie etwa einem Smartphone, einem Tablet, einem ultramobilen Personal Computer (UMPC), einem Laptop-Computer, einer ULTRABOOK-Rechenvorrichtung, einer Smartwatch, einer Smart-Brille, einem Smart-Armband usw., und/oder einer Client/Edge-Vorrichtung wie etwa einer Internet-der-Dinge(IoT)-Vorrichtung (z. B. einem Sensor, einer Kamera usw.)).
  • Wie oben erwähnt, erhöht der ECC-Speicher die Kosten aufgrund zusätzlicher DRAM-Vorrichtungen und der Datenspur. Bei High-End-Systemen haben Kunden traditionell in die zusätzlichen Kosten investiert, die für die Bestückung spezieller ECC-DRAMs im Vergleich zu regulären DRAMs erforderlich sind. Für Low-End-Systeme im Bereich des Internets der Dinge (IoT) sind die Kosten jedoch ein sehr wichtiger Parameter. Wenn beispielsweise LPDDR-Speicher (LPDDR: Low Power DDR - Niederleistungs-DDR) mit 16-Bit-Kanalbreite verwendet wird, sind die Kosten für das Hinzufügen dedizierter Vorrichtungen pro Kanal für den ECC-Schutz unerschwinglich. Um niedrige Kosten und die ECC-Voraussetzung zu unterstützen, können daher In-Band-ECC-Mechanismen verwendet werden.
  • In-Band-ECC ermöglicht SECDED mit viel geringerem Kapazitäts-Overhead und ohne Erhöhung der Pinzahl. Die Daten werden mit einer konfigurierbaren Granularität (64 Bytes, 32 Bytes, 16 Bytes usw.) mit 2 Bytes an ECC-Wert geschützt. Herkömmlicherweise wird ein Teil der DRAM-Gesamtgröße zum Speichern dieser ECC-Daten reserviert, und das Ermöglichen von In-Band-ECC verursacht eine Leistungsfähigkeitseinbuße, da jeder Lese- oder Schreibzugriff auf den Speicher in eine zusätzliche Anforderung zum Lesen oder Schreiben der ECC-Daten übersetzt wird und somit die verwendete Speicherbandbreite erhöht. Einige Ausführungsformen stellen eine Technologie bereit, um den zum Speichern von ECC-Daten reservierten DRAM-Teil zu reduzieren und die In-Band-ECC-Leistungsfähigkeitseinbußen zu reduzieren, indem ein Block mit Delta-Komprimierung von ausgewählten frei wählbaren Basen komprimiert wird und sowohl die komprimierten Daten als auch der ECC (z. B. und/oder andere Metadaten) im gleichen Raum, der für den unkomprimierten Block verwendet wird, gespeichert werden. Einige Ausführungsformen können vorteilhafterweise die Abdeckung mit einer Komprimierung geringer Komplexität (z. B. im Vergleich zu anderen Komprimierungstechniken) erhöhen. Vorteilhafterweise können Ausführungsformen der In-Band-ECC-Komprimierungstechnologie die Anzahl von Lese- und Schreibanforderungen, die zwei Zugriffe auf den Speicher erfordern, stark reduzieren.
  • In einigen Ausführungsformen wird die In-Band-ECC-Komprimierung in einem separaten Modul implementiert, das vor die Speichersteuerung in einem SoC platziert wird. Die In-Band-ECC-Komprimierungsfunktionalität in einem unabhängigen Modul ermöglicht die Portabilität und Wiederverwendung über verschiedene SoCs hinweg, ohne dass vorhandene Module geändert werden müssen. Es ermöglicht auch das Power-Gating des gesamten In-Band-ECC-Komprimierungsmoduls, wenn kein ECC-Schutz benötigt wird.
  • Das In-Band-ECC-Komprimierungsmodul verbessert die Sicherheit und Zuverlässigkeit, indem es eine Fehlerprüfung und -korrektur für alle oder spezifische Gebiete des physischen Speicherraums bereitstellt. Das In-Band-ECC-Komprimierungsmodul kann für Speichertechnologien aktiviert werden, die den Out-of-Band-ECC nicht unterstützen, bei dem die Kosten für das Hinzufügen einer zusätzlichen Vorrichtung zu jedem Kanal für die ECC-Datenspeicherung unerschwinglich sind.
  • In einigen Ausführungsformen wird das In-Band-ECC-Komprimierungsmodul auf den Pfad von Speicherlese- und -schreibvorgänge zu einer DRAM-Speichersteuerung (oder einer anderen Art von adressierbarem Speicherelement) platziert. Das In-Band-ECC-Komprimierungsmodul erkennt basierend auf der eingehenden Anforderungsadresse, ob ein Gebiet ECC-geschützt sein sollte. Da das Lesen und Erzeugen von ECC-Daten zusätzlichen Bandbreiten-Overhead hinzufügt, kann ein neuerer Syndrompuffer innerhalb des In-Band-ECC-Komprimierungsmoduls verwendet werden, um diesen Overhead zu reduzieren, indem die kürzlich verwendeten ECC-Daten gespeichert werden.
  • 7 veranschaulicht ein Blockdiagramm 100, das die Platzierung eines In-Band-ECC-Komprimierungsmoduls 120 in einem Speichersubsystem zeigt, gemäß bestimmter Ausführungsformen.
  • Mehrere Speicheranforderer 104, 106 können Eingabe/Ausgabe(E/A)-Anforderungen, die Lese- und Schreibvorgänge umfassen, über ein Speicher-Fabric 108 zu einer Speichervorrichtung 110 übertragen. Die mehreren Speicheranforderer 104, 106 können Host-Rechensysteme oder andere Vorrichtungen umfassen.
  • Die Speichervorrichtung 110 beinhaltet ein In-Band-ECC-Komprimierungsmodul 120, das die Kompressionstechnologie mit Delta aus ausgewählten frei wählbaren Basen, wie hierin beschrieben, enthält (z. B. unter Verwendung des Komprimierungsblocks 60 usw.). Das In-Band-ECC-Komprimierungsmodul 120 ist in der Speichervorrichtung 110 in einer solchen Konfiguration platziert, dass die E/A-Anforderungen abgefangen und durch das In-Band-ECC-Komprimierungsmodul 120 verarbeitet werden, bevor sie durch eine Speichersteuerung 112 zum Zugreifen auf den DRAM 114 weiterverarbeitet werden (andere Speicher neben dem DRAM 114 können in alternativen Ausführungsformen verwendet werden). Während in 7 das In-Band-ECC-Komprimierungsmodul 120 als ein separates Modul von der Speichersteuerung 112 gezeigt wurde, können in bestimmten Ausführungsformen das In-Band-ECC-Komprimierungsmodul 120 oder seine Operationen in der Speichersteuerung 112 implementiert werden.
  • In 7 befindet sich das In-Band-ECC-Komprimierungsmodul 120 auf dem Pfad von Speicherlese- und -schreibvorgängen zur Speichersteuerung 112 und schützt Daten mit einer konfigurierbaren Granularität (64B, 32B, 16B usw.) mit einem 16-Bit-SECDED-Code. Das In-Band-ECC-Komprimierungsmodul 120 befindet sich auf dem Pfad zum DRAM-Speicher 114 und fängt, wenn es aktiviert ist, alle Anforderungen an die Speichersteuerung 112 ab.
  • Obwohl das In-Band-ECC-Komprimierungsmodul 120 den ECC-Schutz des gesamten Speicheradressraums im DRAM 114 unterstützt, wird erwartet, dass nur ein kleinerer Teil des Speicheradressraums ECC-geschützt werden muss, und nur kritische Anwendungen werden diesem geschützten Raum zugewiesen. Dies reduziert den Bandbreiten-Overhead beim Aktivieren von In-Band-ECC, da Zugriffe auf ungeschützte Gebiete keine zusätzlichen Anforderungen zum Lesen oder Schreiben der ECC-Daten erzeugen.
  • Obwohl verschiedene Ausführungsformen in Bezug auf einen dynamischen flüchtigen Speicher wie etwa den DRAM 114 beschrieben wurden, können Ausführungsformen auf eine beliebige Speichervorrichtung oder beliebige Speichervorrichtungen angewendet werden, die Werte propagieren. Ein Speichersubsystem, wie hierin beschrieben, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie etwa DDR4 (DDR Version 4, ursprüngliche Spezifikation veröffentlicht im September 2012 von JEDEC), LPDDR4 (Low Power Double Data Rate (LPDDR) Version 4, JESD209-4, ursprünglich veröffentlicht von JEDEC im August 2014), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, ursprünglich veröffentlicht von JEDEC im August 2014), HBM (High Bandwidth Memory DRAM, JESD235, ursprünglich veröffentlicht von JEDEC im Oktober 2013), DDR5 (DDR-Version 5), LPDDR5 (LPDDR-Version 5), HBM2 ((HBM-Version 2) und/oder andere und Technologien basierend auf Ableitungen oder Erweiterungen solcher Spezifikationen.
  • Zusätzlich zu oder alternativ zu flüchtigem Speicher kann sich in bestimmten Ausführungsformen ein Bezug auf Speichervorrichtungen auf eine nichtflüchtige Speichervorrichtung beziehen, deren Zustand bestimmt ist, selbst wenn eine Leistungsversorgung zu der Vorrichtung unterbrochen wird. In einer Ausführungsform ist die nichtflüchtige Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie etwa NAND- oder NOR-Technologien. Somit kann eine Speichervorrichtung auch eine 3D-Crosspoint-Speichervorrichtung oder andere byteadressierbare nichtflüchtige Speichervorrichtungen beinhalten. In einer Ausführungsform kann die Speichervorrichtung Speichervorrichtungen, die Chalkogenid-Phasenwechselmaterial verwenden (z. B. Chalkogenid-Glas), ein NAND-Flash-Speicher mit mehreren Schwellenebenen, NOR-Flash-Speicher, ein Phasenwechselspeicher (PCM) mit einzelnen oder mehreren Pegeln, ein resistiver Speicher, Nanodrahtspeicher, ferroelektrischer Transistor-Direktzugriffsspeicher (FeTRAM), magnetoresistiver Direktzugriffsspeicher(MRAM)-Speicher, der Memristortechnologie beinhaltet, oder Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Basis von spintronischem Magnetübergangsspeicher oder eine Kombination von beliebigen der vorgenannten oder ein anderer Speicher sein oder solche beinhalten.
  • Beschreibungen hierin, die sich auf ein „DRAM“ beziehen, können für jegliche Speichervorrichtungen gelten, die einen Direktzugriff gestatten, sei es flüchtig oder nichtflüchtig. Die Speichervorrichtung oder der DRAM kann sich auf den Die selbst und/oder auf ein gekapseltes Speicherprodukt beziehen.
  • 8 veranschaulicht ein Blockdiagramm 200 , das zeigt, wie der dem DRAM 114 entsprechende adressierbare Speicherraum in einen systemsichtbaren Speicher 202 und einen ECC-Syndromraum 204, der ein ECC-Datenspeicherungsgebiet ist, unterteilt ist, gemäß bestimmten Ausführungsformen. 8 zeigt auch, wie der adressierbare Speicherraum in geschützte und nicht geschützte Gebiete im systemsichtbaren Speicher unterteilt ist. Beispielsweise sind eine Cachezeile A 206 und eine Cachezeile B 208 geschützte Gebiete, deren Daten ECC-Schutz benötigen, und falls die Komprimierung nicht erfolgreich ist, werden die entsprechenden ECC-Daten in der ECC-Cachezeile 212 in den jeweiligen Gebieten 214, 216 zusammen mit jeglichen Überlaufdaten von dem unkomprimierten Block gespeichert. Eine Cachezeile C 210 ist ein ungeschütztes Gebiet, dessen Daten keinen ECC-Schutz benötigen.
  • Das Gebiet für den ECC-Syndromraum 204 und das Gebiet für den systemsichtbaren Speicher 202 können zur Bootzeit programmiert oder zur Laufzeit dynamisch geändert werden. Ein Speichergebiet, das zur Bootzeit für die ECC-Datenspeicherung reserviert ist, wird als ECC-Syndromraum 204 bezeichnet. Die Größe dieses Gebiets hängt von der Komprimierungsabdeckung und der Schutzgranularität ab. Dieser reservierte Raum 204 ist für den Rest des Systems nicht sichtbar und kann nur vom In-Line-ECC-Komprimierungsmodul 120 verwendet werden. Vorteilhafterweise reduzieren einige Ausführungsformen die Speichermenge, die für den ECC-Syndromraum 204 reserviert ist, da eine relativ hohe Komprimierungsabdeckung sicherstellt, dass die meisten ECC-Daten zusammen mit den komprimierten Blöcken gespeichert werden.
  • Falls die Komprimierung nicht erfolgreich war (z. B. wie durch das Komprimierungs-Flag angegeben), wandelt das In-Line-ECC-Komprimierungsmodul 120 eine Lese-/Schreibtransaktion (Cachezeilenzugriff) auf ein geschütztes Speichergebiet in zwei separate Speicheranforderungen um. Eine Speicheranforderung richtet sich an die tatsächliche Datencachezeile und eine andere an die Cachezeile, die den ECC-Wert und die Überlaufdaten enthält. Basierend auf der eingehenden Lese-/Schreibadresse bestimmt das In-Line-ECC-Komprimierungsmodul 120 die Adresse der ECC-Daten entsprechend dieser Cachezeile unter Verwendung einer einfachen Adressberechnung.
  • Zum Beispiel fängt das In-Band-ECC-Komprimierungsmodul 120 eine E/A-Anforderung ab, die von einem Speicheranforderer 104, 106 über das Speicher-Fabric 108 an die Speichervorrichtung 110 gesendet wird. Das In-Band-ECC-Komprimierungsmodul 120 bestimmt, ob die Daten der logischen Adresse, die der E/A-Anforderung entsprechen, einen ECC-Schutz benötigen. Falls dies der Fall ist, führt das In-Band-ECC-Komprimierungsmodul 120 eine E/A sowohl für den sichtbaren Adressraum (d. h. den systemsichtbaren Speicher 202) an den Stellen, an denen die erfolgreich komprimierten Daten gespeichert sind, als auch, falls erforderlich, für den ECC-Syndromraum 204, in dem die ECC-Daten für die unkomprimierten Daten gespeichert sind, durch.
  • Falls das In-Band-ECC-Komprimierungsmodul 120 bestimmt, dass die Daten der logischen Adresse, die der E/A-Anforderung entsprechen, keinen ECC-Schutz benötigen, dann führt das In-Band-ECC-Komprimierungsmodul 120 E/A zu dem sichtbaren Adressraum (d. h. dem systemsichtbaren Speicher 202) an den Stellen, an denen die unkomprimierten Daten gespeichert sind, durch, aber es besteht keine Notwendigkeit, E/A zu dem ECC-Syndromraum 204 durchzuführen, da keine ECC-Daten für die Daten vorhanden sind.
  • 9 veranschaulicht ein Blockdiagramm, das ein In-Band-ECC-Komprimierungsmodul 120 mit einem neueren Syndrompuffer 402 zeigt, gemäß bestimmten Ausführungsformen.
  • Der neuere Syndrompuffer 402 innerhalb des In-Band-ECC-Komprimierungsmoduls 120 kann verwendet werden, um den Bandbreiten-Overhead weiter zu reduzieren, indem die kürzlich verwendeten ECC-Daten und Überlaufdaten in einer internen Struktur in dem In-Band-ECC-Komprimierungsmodul 120 gespeichert werden und die zusätzliche Leseanforderung vermieden wird, die zum Lesen der Daten aus dem Speicher erforderlich ist. Da die Gesamtheit einer ECC-Cachezeile 212 gelesen wird, während ECC-Daten gelesen werden, die in einem Gebiet der ECC-Cachezeile 212 gespeichert sind, können die ECC-Daten für mehrere geschützte Gebiete in Erwartung zukünftiger Leseanforderungen, die aufgrund der Referenzlokalität an angrenzende Gebiete gerichtet sind, im Syndrompuffer 404 gespeichert werden.
  • Falls beispielsweise eine Leseanforderung für in der Cachezeile A 206 gespeicherte Daten ist, dann wird zum Lesen der ECC-Daten 214 und der Überlaufdaten der Cachezeile A 206 die Gesamtheit der ECC-Cachezeile 212 gelesen und die ECC-Daten 216 und die Überlaufdaten der Cachezeile B 208 werden ebenfalls gelesen. Die ECC-Daten 216 und Überlaufdaten der Cachezeile B 208 werden in Erwartung zukünftiger Leseanforderungen, die an in der Cachezeile B 208 gespeicherte Daten gerichtet sind, im neueren Syndrompuffer 402 gespeichert.
  • Da eine einzelne ECC-Cachezeile ECC- und Überlaufdaten für 32, 16 oder 8 andere Datenzeilen enthält (basierend auf der ECC-Schutz-Granularität) und da die meisten Benchmarks eine zeitliche/räumliche Lokalität aufweisen, kann die gleiche ECC-Cachezeile oft neu aus dem DRAM abgerufen werden, was die DRAM-Gesamtbandbreite erheblich erhöhen würde.
  • Der Lese-Syndrompuffer 402 ist eine vollständig assoziative Struktur, die vier Hauptfelder enthält. Das DATEN-Feld 404, das eine 64-Byte-Cachezeile enthält, das Tag-Feld 406, das Verbraucherzählung-Feld 408, das angibt, wie viele Verbraucher auf dieses DATEN-Feld vom Anforderer warten, und schließlich das Bereit-Feld 410, das anzeigt, ob die Daten im Lese-Syndrompuffer 402 vorhanden sind oder sich im Transit vom Speicher befinden.
  • Das DATEN-Segment des In-Line-ECC-Moduls kann einen Lese- und einen Schreibport aufweisen. Der Leseport kann vom Verbraucher verwendet werden, um Daten aus dem DATEN-Gebiet auszulesen, und der Schreibport kann verwendet werden, um zurückgegebene Daten in den Lese-Syndrompuffer 402 zu speichern. Das Tag-Nachschlagen hat möglicherweise nur einen Port für die Adressübereinstimmung und kann eine der folgenden Antworten aufweisen: Eine TREFFER-Indikation zusammen mit dem Eintragsort und dem Bereit-Bit oder eine FEHLTREFFER-Indikation mit Zuweisung und entsprechendem Eintragsort in den Lese-Syndrompuffer 402. Das Verbraucherzählung-Feld 408 wird immer dann dekrementiert, wenn ein DATEN-Port-Lesevorgang an dem entsprechenden Eintrag auftritt, und es wird immer dann inkrementiert, wenn ein TREFFER an diesem Eintrag auftritt.
  • Das Bereit-Feld 410 gibt an, ob die Daten im Lese-Syndrompuffer 402 verfügbar sind oder ob die Daten gerade aus dem DRAM abgerufen werden. Für jeden ECC-geschützten Lesevorgang, sobald die Adresse des ECC-Metadaten-Lesevorgangs erzeugt ist, schlägt es die Lese-Syndrompuffer-Tags 406 nach, um herauszufinden, ob die Cachezeile, auf die es zuzugreifen versucht, bereits im Lese-Syndrompuffer 402 existiert.
  • In bestimmten Ausführungsformen sollen Schreibvorgänge nicht im Lese-Syndrompuffer 402 gecacht werden. Die Schreibvorgänge machen eine Zeile im Lese-Syndrompuffer 402 ungültig, wenn sie darauf treffen. Der Lese-Syndrompuffer 402 kann jedoch auch als ein Cache implementiert sein, auf den sowohl durch Lese- als auch durch Schreibvorgänge zugegriffen wird.
  • 10 veranschaulicht ein Blockdiagramm 500, das Elemente in dem In-Band-ECC-Komprimierungsmodul 120 und Operationen zeigt, die in dem In-Band-ECC-Komprimierungsmodul 120 durchgeführt werden, gemäß bestimmter Ausführungsformen. Das In-Band-ECC-Komprimierungsmodul 120 verhält sich sowohl als ein Speicheranforderer als auch als Antwortender auf dem Pfad zum adressierbaren Speicher.
  • Das In-Band-ECC-Komprimierungsmodul 120 besteht aus einem Eingangsport 502 und einem Ausgangsport 504, einem Schreibdatenpuffer 506, einer ECC- und Komprimierungsberechnungseinheit 540, einem Adressbereichsnachschlagen 516, einer Anstehende-Lesevorgänge-Warteschlange 518, einer Anstehende-Schreibvorgänge-Warteschlange 520, einem Arbiter 526, einer Neuerer-Syndrompuffer-Steuerung 528, einem Lesevorgangsverfolger 532, einem Lesedatenpuffer 538, einem neueren Syndrompuffer 536 (entsprechend dem neueren Syndrompuffer 402) und einer Dekomprimierungs-/ECC-Berechnungs- und -Korrektureinheit 544.
  • Alle Lese- und Schreibvorgänge, die über den Eingangsport 502 in das In-Band-ECC-Komprimierungsmodul 120 eingehen, durchlaufen ein ECC-Adressnachschlagen 516, das zuerst auf Grundlage seiner Adresse 517 bestimmt, ob die gegebene Transaktion ein ECC-geschützter Zugriff ist. Es werden Gefahrenprüfungen durchgeführt und es wird bestimmt, an welche Warteschlange der Lese- oder Schreibvorgang gesendet werden soll.
  • Das In-Band-ECC-Komprimierungsmodul 120 verwaltet zwei separate Warteschlangen 518, 520 für Lese- und Schreibvorgänge. Die Warteschlangen werden über ECC- und Nicht-ECC-Verkehr kombiniert. Jeder Warteschlangeneintrag in allen Warteschlangen enthält Informationen für die Datenanforderung; die ECC-Transaktion wird erzeugt, nachdem die Anforderung die Arbitrierung gewinnt. Die Warteschlangen verwalten auch zusätzliche Metadaten, um anzugeben, ob die Anforderung eine ECC-geschützte Transaktion ist, ob sie derzeit aufgrund einer Abhängigkeit von einer anderen Transaktion blockiert ist, und andere Metadatenfelder, um ein Scheduling zu ermöglichen.
  • Jede der Warteschlangen präsentiert dem Haupt-In-Band-ECC-Modul-Arbiter 526 die älteste, nicht blockierte Transaktion. Der Arbiter 526 des In-Band-ECC-Komprimierungsmoduls 120 wählt dann basierend auf einer Arbitrierungsrichtlinie jeweils eine Anforderung aus.
  • Falls die Daten unkomprimiert sind, verfolgt das In-Band-ECC-Komprimierungsmodul 120 für jede ECC-geschützte Inflight-Lesetransaktion den Abschluss von zwei unabhängigen Lesevorgängen: dem Datenlesevorgang und dem ECC-/Überlauflesevorgang. Die ECC-Detektions- und -Korrekturoperationen 544 können nur durchgeführt werden, nachdem die Daten für beide Lesetransaktionen zurückgegeben wurden. Darüber hinaus weist das In-Band-ECC-Komprimierungsmodul 120 jeder geschützten Lese- oder Schreibanforderung ein neues Anforderungs-Tag zu. Der ECC-Lesevorgangsverfolger 532 hält das Tag der ursprünglichen Leseanforderung und verfolgt den Abschluss der beiden assoziierten Leseanforderungen.
  • Der Lesedatenpuffer 538 besteht aus einer separaten Speicherung für ECC-geschützte Lesetransaktionen und ungeschützte Rückgabedaten.
  • Der neuere Syndrompuffer 536 speichert die ECC-Daten, auf die zuletzt zugegriffen wurde. Jeder Eintrag im neueren Syndrompuffer 525 hält die ECC-Daten für 32, 16 oder 8 Cachezeilen basierend auf der konfigurierten Schutzgranularität.
  • Nachdem die Anforderung in das In-Band-ECC-Komprimierungsmodul 120 eingegangen ist, wird die Adresse dieser Transaktion mit den geschützten Adressbereichen verglichen, um zu bestimmen, ob diese Anforderung an ein ECC-geschütztes oder nicht geschütztes Gebiet gerichtet ist. Die Anforderung wird dann einer der Anstehende-Anforderungen-Warteschlangen zugewiesen.
  • Jede der Warteschlangen präsentiert dem Haupt-Scheduler des In-Band-ECC-Komprimierungsmoduls 120 die älteste, nicht blockierte Transaktion. Das In-Band-ECC-Komprimierungsmodul 120 setzt dann einen Arbiter 526 ein, der auf einer „Transaktions“-Ebene plant. Für ECC-geschützten Verkehr besteht eine Transaktion für komprimierte Daten aus einem einzigen Lese-/Schreibvorgang, während eine Transaktion für unkomprimierte Daten aus zwei Lese-/Schreibvorgängen besteht; für ungeschützten Verkehr besteht eine Transaktion aus einem einzigen Lese-/Schreibvorgang. Die ECC-Transaktion wird, falls erforderlich, erzeugt, nachdem die Anforderungen durch den Arbiter ausgewählt wurden.
  • Die ECC-Datenanforderungsadresse wird als eine Funktion der eingehenden Adresse berechnet, die auf das ECC-Datenspeicherungsgebiet zeigt.
  • Nachdem eine Gewinner-Transaktion ausgewählt wurde, stellt der Scheduler des In-Band-ECC-Komprimierungsmoduls 120 sicher, dass sie atomar ausgegeben wird. Dies bedeutet im Wesentlichen, dass, falls eine ECC-geschützte Transaktion für unkomprimierte Daten ausgewählt wird, sowohl die Lese-/Schreibvorgänge an Daten als auch der ECC nacheinander ausgegeben werden und keine anderen eingreifende Lese-/Schreibvorgänge von einer anderen Transaktion ausgegeben werden können.
  • Der Lesedatenpuffer (RDB) 538 ist die temporäre Speicherung für alle geschützten Inflight-Daten und ihre ECC-Werte. Vor dem Senden der Anforderung kann das In-Band-ECC-Komprimierungsmodul 120 sicherstellen, dass im Lesedatenrückgabepuffer vorab zugewiesene Datenrückgabeslots zum Zurückgeben der Daten und ihrer ECC-Daten vorhanden sind. Für ungeschützten Verkehr gibt es dedizierte First-In-First-Out(FIFO)-Datenstrukturen.
  • Die Struktur des ECC-Lesedatenverfolgers 532 arbeitet im Gleichschritt mit dem neueren Syndrompuffer 536 und behält die Header-Informationen für die ursprüngliche Anforderung sowie Verfolgungseinzelheiten darüber, wann die Daten zurückgegeben und zum Verbrauch bereit sind.
  • Jede Anforderung, die in das In-Band-ECC-Komprimierungsmodul 120 eingeht, durchläuft ein ECC-Adressnachschlagen, um zu bestimmen, ob es sich um eine geschützte Transaktion handelt. Es kann viele Arten von Anforderungen geben, je nachdem, ob sie geschützt/ungeschützt und Lesevorgang/Vollschreibvorgang/Teilschreibvorgang sind.
  • Ein ungeschützter Lesevorgang, der in das In-Band-ECC-Komprimierungsmodul 120 eingeht, wird an die Anstehende-Lesevorgänge-Warteschlange 518 geleitet, die ein Scheduling basierend auf dem Alter unterstützt. Die Leseadresse wird gegen die Anstehende-Schreibvorgänge-Warteschlange 520 geprüft, um festzustellen, ob es irgendwelche Abhängigkeiten mit in der Warteschlange wartenden Schreibvorgängen gibt. Bei einer Übereinstimmung wird der neuere Schreibvorgang in der Warteschlange blockiert, bis alle vorherigen Schreibvorgänge an dieselbe Adresse geplant sind. Wenn die Daten vom Lesevorgang von der Speichersteuerung zurückgegeben werden, überprüft das In-Band-ECC-Komprimierungsmodul 120 die Tag-Informationen, um zu bestimmen, ob die Daten für geschützten Verkehr oder ungeschützten Verkehr sind. Bei einem ungeschützten Lesevorgang umgehen die Lesedaten die ECC-Prüf-Engine und werden an den ursprünglichen Anforderer gesendet.
  • Eine ungeschützte Vollschreibvorgang-Transaktion, die in das In-Band-ECC-Komprimierungsmodul 120 eingeht, wird an die Anstehende-Schreibvorgänge-Warteschlange 520 geleitet, die ein Scheduling basierend auf Alter unterstützt. Der Schreibvorgang prüft die Adresse mit anderen Einträgen in der Warteschlange, um festzustellen, ob Abhängigkeiten von älteren Schreibvorgängen und Lesevorgängen an dieselbe Adresse bestehen, und wird blockiert, bis die Abhängigkeit aufgelöst ist. Für einen ungeschützten Schreib- und Teilschreibvorgang verhält sich das In-Band-ECC-Komprimierungsmodul 120 einfach wie ein Weiterleitungsagent, ohne dass eine ECC-Erzeugung erforderlich ist.
  • Ähnlich wie beim ungeschützten Lesevorgang schlägt die geschützte Lesetransaktion bei der Zuweisung die Anstehende-Schreibvorgänge-Warteschlange 520 nach, um alle Transaktionen (Daten/ECC-Paare) zu finden, für die sie blockiert ist. Bei geschützten, unkomprimierten Daten bleiben die geschützten Lesevorgänge blockiert, bis festgestellt wird, dass sowohl die Daten als auch die ECC-Anforderung an diese Adresse vom Scheduler ausgehen. Sobald die Leseanforderung die Arbitrierung gewinnt, überprüft sie den neueren Syndrompuffer 536, um festzustellen, ob die ECC-Daten für diese Anforderung bereits vorhanden sind. Bei einem Fehltreffer wird ein neuer Eintrag im neueren Syndrompuffer 536 zugewiesen, wenn der Puffer nicht voll ist, oder falls der neuere Syndrompuffer voll ist, wird einer der Einträge im neueren Syndrompuffer 536 ohne wartende Verbraucher freigegeben und der neue Eintrag wird an dieser Stelle zugewiesen. Die Eintragsnummer wird im Lesevorgangsverfolger 532 gespeichert. Gleichzeitig wird die ECC-Datentransaktion parallel erzeugt und unmittelbar nach der Lesedatenanforderung gesendet. Bei einem Treffer inkrementiert die Neuerer-Syndrompuffer-Steuerung 528 den Verbraucherzähler des Eintrags und gibt auch die Eintragsnummer in dem neueren Syndrompuffer 536 zurück, in dem sie gespeichert ist. Diese Eintragsnummer wird im ECC-Lesevorgangsverfolger 532 gespeichert und verwendet, wenn die entsprechenden Daten im neueren Syndrompuffer 536 vorhanden sind. In diesem Fall wird die ECC-Datentransaktion nicht erzeugt, da der neuere Syndrompuffer die Daten bereit hält.
  • Auf dem Rückpfad für geschützte, unkomprimierte Daten wartet das In-Band-ECC-Komprimierungsmodul 120 auf die Rückgabe sowohl des Datenzugriffs als auch des ECC-Zugriffs (sofern nicht im neueren Syndrompuffer vorhanden), bevor die ECC-Detektions-/-Korrekturoperationen durchgeführt werden. Die Bereitschaft der benötigten ECC-Daten wird vom Lesevorgangsverfolger verfolgt. Das In-Band-ECC-Komprimierungsmodul 120 muss sicherstellen, dass es Slots in der Lesedatenpuffer-/Lesevorgangsverfolgerstruktur gibt, in denen die zurückgegebenen Transaktionen gehalten werden können, bevor sie an die ECC-Logik ausgegeben werden können. Um dieses Problem zu lösen, weist das In-Band-ECC-Komprimierungsmodul 120 den Eintrag im Verfolger zum Zeitpunkt des Scheduling vorab zu. Wenn ein geschützter Lesevorgang Daten zurückgibt, kann das In-Band-ECC-Komprimierungsmodul 120 identifizieren, an welche Stelle im Lesedatenpuffer 538 sie geschrieben werden sollten. Wenn die ECC-Daten zu dem neueren Syndrompuffer 536 des In-Band-ECC-Komprimierungsmoduls 120 zurückgegeben werden, wird die Eintragsnummer an alle wartenden Verbraucher im Lesevorgangsverfolger übermittelt, und dieser wird prüfen, ob sie gleich dem Eintrag ist, auf den er wartet, und daher in der Lage sein, zu verfolgen, wann die ECC-Daten angekommen sind und zum Verbrauch aus dem neueren Syndrompuffer 536 bereit sind. Sobald sich beide Zugriffe im Lesedatenpuffer 538 und im neueren Syndrompuffer 536 befinden, plant das In-Band-ECC-Komprimierungsmodul 120 die Anforderung an die ECC-Berechnungs- und -Korrekturlogik 534. Die korrigierten Daten werden dann in die entsprechende First-In-First-Out(FIFO)-Warteschlange gestellt und an den Anforderer gesendet.
  • Wenn eine geschützte Schreibtransaktion in das In-Band-ECC-Komprimierungsmodul 120 eingeht, werden die Anforderungsinformationen in der Anstehende-Schreibvorgänge-Warteschlange zugewiesen, und die Daten werden im Schreibdatenpuffer gespeichert. Die ECC-Anforderungsadresse, der Wert und die Byte-Freigaben für einen geschützten Schreibvorgang werden nicht gespeichert, sondern on-the-fly (spontan) erzeugt, wenn die Transaktion geplant wird. Das In-Band-ECC-Komprimierungsmodul 120 muss die Schreibvorgang-nach-Schreibvorgang- und Schreibvorgang-nach-Lesevorgang-Reihenfolge sowie die Ungültigmachung der entsprechenden ECC-Daten im neueren Syndrompuffer 536, falls vorhanden, sicherstellen. Um dies sicherzustellen, wird eine eingehende Schreibanforderung gegen alle Lesevorgänge in den anstehenden Warteschlangen, alle ausstehenden Lesevorgänge, die im Verfolger/Lesedatenpuffer warten, alle Schreibvorgänge in der Anstehende-Schreibvorgänge-Warteschlange und gültige Einträge im neueren Syndrompuffer geprüft.
  • Eine geschützte Teilschreibtransaktion im In-Band-ECC-Komprimierungsmodul 120 besteht im Wesentlichen aus zwei geschützten Transaktionen: Einer geschützten Underfill-Lesetransaktion und einer geschützten Vollschreibtransaktion. Die Gefahrenverwaltung ist die gleiche wie beim Vollschreiben. Es ist jedoch zu beachten, dass die Underfill-Lesetransaktion (Underfill - Unterfüllung) nicht ohne das Klären aller Gefahren und Abhängigkeiten ausgegeben werden kann. Der Scheduler des In-Band-ECC-Komprimierungsmoduls 120 muss sich bewusst sein, dass er einen Underfill-Lesevorgang ausgibt, und die Verfolger-/Lesedatenpufferstrukturen müssen das Underfill-Feld setzen sowie angeben, welcher Eintrag in der Schreibwarteschlange der Empfänger des Underfill-Lesevorgangs ist. Sobald der Underfill-Lesevorgang abgeschlossen ist, werden die korrigierten Daten zurück zum Schreibdatenpuffer geleitet, in dem sie mit den Teildaten zusammengeführt werden. Nach diesem Punkt präsentiert die Anstehende-Schreibvorgänge-Warteschlange nun dem Scheduler des In-Band-ECC-Komprimierungsmoduls 120 einen geschützten Vollschreibvorgang.
  • Die Fehlerdetektion und -korrektur erfolgt durch Hinzufügen von 16 Bits zu jeweils 512, 256 oder 128 Datenbits, die in den Speicher geschrieben werden (basierend auf der Konfiguration der Schutzgranularität). Die Erzeugung jedes ECC-Bits erfolgt durch Durchführen eines XOR an einer bestimmten Kombination der geschriebenen Bits gemäß einer Hamming-Matrix. Beim Lesen der Daten wird das 16-Bit-Syndrom durch Durchführen eines XOR an jedem ECC-Bit mit den gleichen Bits, die sie ursprünglich erzeugt haben, erzeugt.
  • Die Syndromanalyse zeigt den Fehler auf, ob er korrigierbar ist und wie er korrigiert werden kann.
  • Das In-Band-ECC-Komprimierungsmodul 120 muss ECC-Fehler identifizieren und sie melden. Das In-Band-ECC-Komprimierungsmodul 120 kann immer dann eine Fehlermeldung an ein Kollektormodul erzeugen, wenn ein ECC-Fehler auftritt. Die Fehlermeldung gibt an, ob der Fehler korrigierbar oder ein nicht korrigierbarer Fehler ist, und Systemsoftware kann dann die entsprechenden Fehlerprotokollregister untersuchen, um weitere Einzelheiten über den Fehler herauszufinden.
  • Zusätzliche Anmerkungen und Beispiele
  • Beispiel 1 beinhaltet eine elektronische Einrichtung, umfassend ein Substrat und Logik, die mit dem Substrat gekoppelt ist, wobei die Logik ausgelegt ist zum Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock.
  • Beispiel 2 beinhaltet die Einrichtung nach Anspruch 1, wobei die Logik ferner ausgelegt ist zum Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • Beispiel 3 beinhaltet die Einrichtung nach einem der Ansprüche 1 bis 2, wobei die Logik ferner ausgelegt ist zum Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  • Beispiel 4 beinhaltet die Einrichtung nach Anspruch 3, wobei die Logik ferner ausgelegt ist zum Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  • Beispiel 5 beinhaltet die Einrichtung nach einem der Ansprüche 1 bis 4, wobei die Logik ferner ausgelegt ist zum Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  • Beispiel 6 beinhaltet die Einrichtung nach Anspruch 5, wobei die Logik ferner ausgelegt ist zum Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  • Beispiel 7 beinhaltet die Einrichtung nach einem der Ansprüche 1 bis 6, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  • Beispiel 8 beinhaltet ein elektronisches Speichersystem, umfassend eine Steuerung, Speicher zum Speichern eines Datenblocks, der aus einer ersten Anzahl von Datenwörtern besteht, und Logik, die kommunikativ mit der Steuerung und dem Speicher gekoppelt ist, wobei die Logik ausgelegt ist zum Bestimmen eines Basiswerts zum Komprimieren des Datenblocks, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch jeweilige Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger ist als die erste Anzahl von Datenwörter, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock.
  • Beispiel 9 beinhaltet das System nach Anspruch 8, wobei die Logik ferner ausgelegt ist zum Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • Beispiel 10 beinhaltet das System nach einem der Ansprüche 8 bis 9, wobei die Logik ferner ausgelegt ist zum Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  • Beispiel 11 beinhaltet das System nach Anspruch 10, wobei die Logik ferner ausgelegt ist zum Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  • Beispiel 12 beinhaltet das System nach einem der Ansprüche 8 bis 11, wobei die Logik ferner ausgelegt ist zum Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  • Beispiel 13 beinhaltet das System nach Anspruch 12, wobei die Logik ferner ausgelegt ist zum Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  • Beispiel 14 beinhaltet das System nach einem der Ansprüche 8 bis 13, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  • Beispiel 15 beinhaltet ein Verfahren zum Komprimieren von Speicher, umfassend Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock.
  • Beispiel 16 beinhaltet das Verfahren nach Anspruch 15, ferner umfassend Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • Beispiel 17 beinhaltet das Verfahren nach einem der Ansprüche 15 bis 16, ferner umfassend Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  • Beispiel 18 beinhaltet das Verfahren nach Anspruch 17, ferner umfassend Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  • Beispiel 19 beinhaltet das Verfahren nach einem der Ansprüche 15 bis 18, ferner umfassend Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  • Beispiel 20 beinhaltet das Verfahren nach Anspruch 19, ferner umfassend Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  • Beispiel 21 beinhaltet das Verfahren nach einem der Ansprüche 15 bis 20, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  • Beispiel 22 beinhaltet mindestens ein nicht vorübergehendes maschinenlesbares Medium, das mehrere Anweisungen umfasst, die als Reaktion darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock.
  • Beispiel 23 beinhaltet das mindestens eine nicht vorübergehende maschinenlesbare Medium nach Anspruch 22, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • Beispiel 24 beinhaltet das mindestens eine nicht vorübergehende maschinenlesbare Medium nach einem der Ansprüche 22 bis 23, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  • Beispiel 25 beinhaltet das mindestens eine nicht vorübergehende maschinenlesbare Medium nach Anspruch 24, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  • Beispiel 26 beinhaltet das mindestens eine nicht vorübergehende maschinenlesbare Medium nach einem der Ansprüche 22 bis 25, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  • Beispiel 27 beinhaltet das mindestens eine nicht vorübergehende maschinenlesbare Medium nach Anspruch 26, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  • Beispiel 28 beinhaltet das mindestens eine nicht vorübergehende maschinenlesbare Medium nach einem der Ansprüche 22 bis 27, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  • Beispiel 29 beinhaltet eine Speicherkomprimierungseinrichtung, umfassend Mittel zum Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, Mittel zum Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch entsprechende Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger als die erste Anzahl von Datenwörtern beträgt, und Mittel zum Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten in dem Datenblock.
  • Beispiel 30 beinhaltet die Einrichtung nach Anspruch 29, ferner umfassend Mittel zum Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  • Beispiel 31 beinhaltet die Einrichtung nach einem der Ansprüche 29 bis 30, ferner umfassend Mittel zum Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist, und Mittel zum Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  • Beispiel 32 beinhaltet die Einrichtung nach Anspruch 31, ferner umfassend Mittel zum Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  • Beispiel 33 beinhaltet die Einrichtung nach einem der Ansprüche 29 bis 32, ferner umfassend Mittel zum Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  • Beispiel 34 beinhaltet die Einrichtung nach Anspruch 33, ferner umfassend Mittel zum Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  • Beispiel 35 beinhaltet die Einrichtung nach einem der Ansprüche 29 bis 34, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  • Der Ausdruck „gekoppelt“ kann hierin verwendet werden, um sich auf einem beliebigen Typ von Beziehung, direkt oder indirekt, zwischen den fraglichen Komponenten zu beziehen, und kann für elektrische, mechanische, fluidische, optische, elektromagnetische, elektromechanische oder andere Verbindungen anwendbar sein. Zusätzlich dazu werden die Ausdrucke „erster“, „zweiter“ usw. hierin nur zur Erleichterung der Erörterung verwendet werden und tragen keine besondere zeitliche oder chronologische Bedeutung, sofern nicht anders angegeben.
  • Wie in dieser Anmeldung und den Ansprüchen verwendet, kann eine Liste von Gegenständen, die durch den Ausdruck „eines oder mehrere von“ verbunden sind, eine beliebige Kombination der aufgelisteten Begriffe bedeuten. Zum Beispiel können die Phrase „eine/r/s oder mehrere von A, B und C“ und die Phrase „eine/r/s oder mehrere von A, B oder C“ beide A; B; C; A und B; A und C; B und C oder A, B und C bedeuten. Verschiedene Komponenten der hierin beschriebenen Systeme können in Software, Firmware und/oder Hardware und/oder einer beliebigen Kombination davon implementiert sein. Zum Beispiel können verschiedene Komponenten der hierin erörterten Systeme oder Vorrichtungen, zumindest teilweise, durch Hardware eines Rechen-SoC, wie es in einem Rechensystem, wie zum Beispiel einem Smartphone, zu finden ist, bereitgestellt werden. Der Fachmann wird erkennen, dass hierin beschriebene Systeme zusätzliche Komponenten einschließen können, die in den entsprechenden Figuren nicht dargestellt wurden. Zum Beispiel können die hierin erörterten Systeme zusätzliche Komponenten, wie etwa Bitstrom-Multiplexer- oder -Demultiplexermodule und dergleichen, einschließen, die der Klarheit halber nicht dargestellt wurden.
  • Obgleich eine Implementierung der hierin besprochenen beispielhaften Prozesse das Vornehmen aller gezeigten Operationen in der veranschaulichten Reihenfolge einschließen kann, ist die vorliegende Offenbarung in dieser Hinsicht nicht beschränkt, und eine Implementierung der beispielhaften Prozesse hierin beinhaltet bei verschiedenen Beispielen möglicherweise nur eine Teilmenge der gezeigten Operationen, in einer anderen als der veranschaulichten Reihenfolge durchgeführte Operationen oder zusätzliche Operationen.
  • Außerdem können eine oder mehrere beliebige der hierin besprochenen Operationen als Reaktion auf Anweisungen vorgenommen werden, die durch ein oder mehrere Computerprogrammprodukte bereitgestellt werden. Solche Programmprodukte können signalführende Medien beinhalten, die Anweisungen bereitstellen, die, wenn sie zum Beispiel durch einen Prozessor ausgeführt werden, die hierin beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in einer beliebigen Form von einem oder mehreren maschinenlesbaren Medien bereitgestellt werden. Dementsprechend kann zum Beispiel ein Prozessor, der eine oder mehrere Grafikverarbeitungseinheiten oder einen oder mehrere Prozessorkerne enthält, einen oder mehrere der Blöcke der beispielhaften Prozesse hierin als Reaktion auf Programmcode und/oder Anweisungen oder Anweisungssätze, die dem Prozessor durch ein oder mehrere maschinenlesbare Medien übermittelt werden, ausführen. Im Allgemeinen kann ein maschinenlesbares Medium Software in Form von Programmcode und/oder Anweisungen oder Anweisungssätzen übertragen, die beliebige der hierin beschriebenen Vorrichtungen und/oder Systeme dazu veranlassen können, zumindest Teile der hierin erörterten Operationen und/oder beliebige Teile der Vorrichtungen, Systeme oder eines beliebigen Moduls oder einer beliebigen Komponente, wie hierin erörtert, zu implementieren.
  • Wie in einer beliebigen hierin beschriebenen Implementierung verwendet, verweist der Begriff „Modul“ auf eine beliebige Kombination von Softwarelogik, Firmwarelogik, Hardwarelogik und/oder Schaltungsanordnung, die dazu konfiguriert ist, die hierin beschriebene Funktionalität bereitzustellen. Die Software kann als ein Softwarepaket, Code und/oder Anweisungssatz oder Anweisungen umgesetzt sein, und „Hardware“, wie in einer beliebigen hierin beschriebenen Implementierung verwendet, kann zum Beispiel einzeln oder in beliebiger Kombination eine festverdrahtete Schaltungsanordnung, eine programmierbare Schaltungsanordnung, eine Zustandsmaschinenschaltungsanordnung, eine Festfunktionsschaltungsanordnung, eine Ausführungseinheitsschaltungsanordnung und/oder Firmware aufweisen, die durch eine programmierbare Schaltungsanordnung ausgeführte Anweisungen speichert. Die Module können kollektiv oder einzeln als eine Schaltungsanordnung umgesetzt sein, die einen Teil eines größeren Systems bildet, beispielsweise einer integrierten Schaltung (IC), eines System-on-Chip (SoC) und so weiter.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert werden. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC: Application Specific Integrated Circuits), programmierbare Logikvorrichtungen (PLD), Digitalsignalprozessoren (DSP), ein feldprogrammierbares Gate-Array (FPGA), Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter beinhalten. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API: Application Program Interface), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon beinhalten. Das Bestimmen, ob eine Ausführungsform unter Anwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie zum Beispiel der gewünschten Rechengeschwindigkeit, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklusbudget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten, den Kosten und anderen Design- oder Leistungsvorgaben.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine dazu veranlassen, eine Logik herzustellen, um die hierin beschriebenen Techniken durchzuführen. Solche Repräsentationen, die als IP-Kerne bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und verschiedenen Kunden oder Herstellungsanlagen zugeführt werden, um in die Herstellungsmaschinen zu laden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Obwohl gewisse, hierin dargelegte Merkmale mit Bezug auf verschiedene Implementierungen beschrieben wurden, soll diese Beschreibung nicht in einem beschränkenden Sinne ausgelegt werden. Folglich werden verschiedene Modifikationen der hierin beschriebenen Implementierungen sowie andere Implementierungen, die für Fachleute auf dem Gebiet, das die vorliegende Offenbarung betrifft, offensichtlich sind, als innerhalb des Wesens und des Schutzumfangs der vorliegenden Offenbarung liegend erachtet.
  • Es versteht sich, dass die Ausführungsformen nicht auf die derart beschriebenen Ausführungsformen beschränkt sind, sondern mit einer Modifikation und Abänderung ausgeführt werden können, ohne vom Schutzumfang der angehängten Ansprüche abzuweichen. Zum Beispiel können die obigen Ausführungsformen spezifische Kombinationen von Merkmalen aufweisen. Die obenstehenden Ausführungsformen sind jedoch in dieser Hinsicht nicht beschränkt, und die obenstehenden Ausführungsformen können das Ausführen nur eines Teilsatzes solcher Merkmale, das Ausführen einer unterschiedlichen Reihenfolge solcher Merkmale, das Ausführen einer unterschiedlichen Kombination solcher Merkmale und/oder das Ausführen zusätzlicher Merkmale zu den explizit aufgelisteten Merkmalen aufweisen. Der Schutzumfang der Erfindung sollte daher unter Bezugnahme auf die angehängten Ansprüche zusammen mit dem vollen Schutzumfang von Äquivalenten, zu denen diese Ansprüche berechtigt sind, bestimmt werden.

Claims (25)

  1. Elektronische Einrichtung, die Folgendes umfasst: ein Substrat; und Logik, die mit dem Substrat gekoppelt ist, wobei die Logik ausgelegt ist zum: Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch jeweilige Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger ist als die erste Anzahl von Datenwörtern, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten im Datenblock.
  2. Einrichtung nach Anspruch 1, wobei die Logik ferner ausgelegt ist zum: Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  3. Einrichtung nach einem der Ansprüche 1 bis 2, wobei die Logik ferner ausgelegt ist zum: Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist; und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  4. Einrichtung nach Anspruch 3, wobei die Logik ferner ausgelegt ist zum: Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  5. Einrichtung nach einem der Ansprüche 1 bis 4, wobei die Logik ferner ausgelegt ist zum: Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  6. Elektronisches Speichersystem, das Folgendes umfasst: eine Steuerung; Speicher zum Speichern eines Datenblocks, der aus einer ersten Anzahl von Datenwörtern besteht; und Logik, die kommunikativ mit der Steuerung und dem Speicher gekoppelt ist, wobei die Logik ausgelegt ist zum: Bestimmen eines Basiswerts zum Komprimieren des Datenblocks, Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch jeweilige Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger ist als die erste Anzahl von Datenwörtern, und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten im Datenblock.
  7. System nach Anspruch 6, wobei die Logik ferner ausgelegt ist zum: Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden; Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist; und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  8. System nach einem der Ansprüche 6 bis 7, wobei die Logik ferner ausgelegt ist zum: Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  9. System nach Anspruch 8, wobei die Logik ferner ausgelegt ist zum: Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  10. System nach einem der Ansprüche 6 bis 9, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  11. Verfahren zum Komprimieren von Speicher, das Folgendes umfasst: Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht; Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch jeweilige Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger ist als die erste Anzahl von Datenwörtern; und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten im Datenblock.
  12. Verfahren nach Anspruch 11, das ferner Folgendes umfasst: Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  13. Verfahren nach einem der Ansprüche 11 bis 12, das ferner Folgendes umfasst: Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  14. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  15. Verfahren nach einem der Ansprüche 11 bis 14, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
  16. Nicht vorübergehendes maschinenlesbares Medium bzw. nicht vorübergehende maschinenlesbare Medien, die mehrere Anweisungen umfassen, die als Reaktion darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum: Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht; Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch jeweilige Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger ist als die erste Anzahl von Datenwörtern; und Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten im Datenblock.
  17. Nicht vorübergehendes maschinenlesbares Medium bzw. nicht vorübergehende maschinenlesbare Medien nach Anspruch 16, die mehrere weitere Anweisungen umfassen, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum: Setzen eines oder mehrerer Datenindexfelder in den Metadaten, um jeweilige Positionen von Datenwörtern des Datenblocks anzugeben, die durch die jeweiligen Delta-Werte vom Basiswert ersetzt werden.
  18. Nicht vorübergehendes maschinenlesbares Medium bzw. nicht vorübergehende maschinenlesbare Medien nach einem der Ansprüche 16 bis 17, die mehrere weitere Anweisungen umfassen, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum: Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist; und Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes.
  19. Nicht vorübergehendes maschinenlesbares Medium bzw. nicht vorübergehende maschinenlesbare Medien nach Anspruch 18, die mehrere weitere Anweisungen umfassen, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum: Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  20. Nicht vorübergehendes maschinenlesbares Medium bzw. nicht vorübergehende maschinenlesbare Medien nach einem der Ansprüche 16 bis 19, die mehrere weitere Anweisungen umfassen, die als Reaktion darauf, dass sie auf der Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen zum: Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  21. Speicherkomprimierungseinrichtung, die Folgendes umfasst: Mittel zum Bestimmen eines Basiswerts zum Komprimieren eines Datenblocks, wobei der Datenblock aus einer ersten Anzahl von Datenwörtern besteht; Mittel zum Ersetzen von Originalwerten aus einer zweiten Anzahl von Datenwörtern aus dem Datenblock durch jeweilige Delta-Werte vom Basiswert, um komprimierte Daten bereitzustellen, wobei die zweite Anzahl von Datenwörtern mindestens zwei weniger ist als die erste Anzahl von Datenwörtern; und Mittel zum Speichern von Metadaten, die mit dem Datenblock assoziiert sind, zusammen mit den komprimierten Daten im Datenblock.
  22. Einrichtung nach Anspruch 21, die ferner Folgendes umfasst: Mittel zum Identifizieren eines Datenwortes aus dem Datenblock mit einem Datenwert, der für den Basiswert geeignet ist; Mittel zum Setzen des Basiswerts auf den Datenwert des identifizierten Datenwortes; und Mittel zum Setzen eines Basisindexfeldes in den Metadaten, um eine Position des identifizierten Datenwortes anzugeben.
  23. Einrichtung nach einem der Ansprüche 21 bis 22, das ferner Folgendes umfasst: Mittel zum Setzen des Basiswerts auf einen Datenwert an einer festen Datenwortposition.
  24. Einrichtung nach Anspruch 23, die ferner Folgendes umfasst: Mittel zum Setzen eines Feldes in den Metadaten, um anzugeben, ob der Basiswert null oder der Datenwert an der festen Datenwortposition ist.
  25. Einrichtung nach einem der Ansprüche 21 bis 24, wobei die Metadaten Fehlerkorrekturcodeinformationen beinhalten.
DE102021129138.0A 2021-01-29 2021-11-09 Abdeckungsbasierte komprimierung mit geringer komplexität Pending DE102021129138A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/163,179 US20210255808A1 (en) 2021-01-29 2021-01-29 Low-complexity coverage-based compression
US17/163,179 2021-01-29

Publications (1)

Publication Number Publication Date
DE102021129138A1 true DE102021129138A1 (de) 2022-08-04

Family

ID=77272077

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021129138.0A Pending DE102021129138A1 (de) 2021-01-29 2021-11-09 Abdeckungsbasierte komprimierung mit geringer komplexität

Country Status (4)

Country Link
US (1) US20210255808A1 (de)
KR (1) KR20220110055A (de)
CN (1) CN114816830A (de)
DE (1) DE102021129138A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11422879B1 (en) * 2021-03-18 2022-08-23 Xilinx, Inc. Universal in-band error masking

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133228B2 (en) * 2003-10-10 2006-11-07 Seagate Technology Llc Using data compression to achieve lower linear bit densities on a storage medium
US11321324B2 (en) * 2019-12-31 2022-05-03 Huawei Technologies Co., Ltd. Systems and methods for cross-region data management in an active-active architecture
SE544557C2 (en) * 2020-12-01 2022-07-12 Zeropoint Tech Ab Systems, methods and devices for exploiting value similarity in computer memories

Also Published As

Publication number Publication date
US20210255808A1 (en) 2021-08-19
CN114816830A (zh) 2022-07-29
KR20220110055A (ko) 2022-08-05

Similar Documents

Publication Publication Date Title
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
US10360149B2 (en) Data structure store in persistent memory
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE112011100579B4 (de) Verfahren und vorrichtung zum verwenden von cachespeicher in einem system, welches einen niedrigleistungszustand unterstützt
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE112018004861T5 (de) Verarbeitung im speicher
DE102018122491A1 (de) Halbleiterspeichervorrichtung und verfahren zum betreiben derselben
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112011105984T5 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
DE102019113049A1 (de) VERFAHREN UND VORRICHTUNG ZUR FLUSH-VERWALTUNG EINER ATOMISCHEN GRUPPE VON SCHREIBVORGäNGEN IN PERSISTENTEN SPEICHER ALS REAKTION AUF EINEN UNERWARTETEN STROMAUSFALL
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
US9678871B2 (en) Data flush of group table
DE102019112751A1 (de) Selektives hintergrund-datenauffrischen für ssd
CN104899117A (zh) 面向非易失性内存的内存数据库并行日志方法
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE102022119777A1 (de) VERFAHREN ZUM MINIMIEREN VON MEHRAUFWAND BEI DETEKTION VON HEIßEN/KALTEN SEITEN BEI LAUFENDEN ARBEITSLASTEN
DE102018204931A1 (de) Dauerhaftes Caching eines arbeitsspeicherseitigen Cache-Inhalts
DE102021117355A1 (de) SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge
DE102021129138A1 (de) Abdeckungsbasierte komprimierung mit geringer komplexität
US20190171566A1 (en) Memory controlling device and computing device including the same
DE102020132758A1 (de) Leistungsfähigkeits-konfigurierbare nichtflüchtige speichermenge