DE102023110723A1 - Randomisierung von gezielten auffrischungsverwaltungs(directed refresh management - drfm)-pseudo-zielzeilenauffrischungs(pseudo target row refresh - pttr)-befehlen - Google Patents

Randomisierung von gezielten auffrischungsverwaltungs(directed refresh management - drfm)-pseudo-zielzeilenauffrischungs(pseudo target row refresh - pttr)-befehlen Download PDF

Info

Publication number
DE102023110723A1
DE102023110723A1 DE102023110723.2A DE102023110723A DE102023110723A1 DE 102023110723 A1 DE102023110723 A1 DE 102023110723A1 DE 102023110723 A DE102023110723 A DE 102023110723A DE 102023110723 A1 DE102023110723 A1 DE 102023110723A1
Authority
DE
Germany
Prior art keywords
command
drfm
memory
commands
address
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
DE102023110723.2A
Other languages
English (en)
Inventor
Bill Nale
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 DE102023110723A1 publication Critical patent/DE102023110723A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

In einem Speicherteilsystem kann eine Steuerung das Senden von gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehlen für DRFM-Befehle, die auf mehrere Bänke zur gleichen Zeit auftreffen, randomisieren. Die Steuerung kann Befehle erzeugen, um anzugeben, dass die Speichervorrichtung Adressen für verschiedene Bänke erfassen sollte, um sie für Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operationen basierend auf mit Aktivierungsbefehlen assoziierten Adressen zu verwenden. Die Steuerung kann die Angabe einer Adresserfassung für die Speichervorrichtung randomisieren. Mit erfassten Adressen und zufällig erzeugten DRFM-Befehlen kann das System DRFM-Befehle besser nutzen, da es wahrscheinlicher ist, dass die mehreren Bänke Adressen für pTRR aufweisen und eine Randomisierung das Vermögen eines Rowhammer-Angriffs, die DRFM zu vermeiden, reduzieren kann.

Description

  • Gebiet
  • Die Beschreibungen betreffen allgemein Speicherteilsysteme und insbesondere betreffen die Beschreibungen Auffrischungsbefehle.
  • HINTERGRUND
  • Flüchtige Speichervorrichtungen, wie etwa DRAM(dynamic random access memory - Direktzugriffsspeicher-Vorrichtungen, weisen einen bekannten Angriffsvektor auf, der als Rowhammer oder Zeilenstörung (row disturb) bezeichnet wird. Ein Rowhammer-Angriff kann sich auf einen Fehler beziehen, der durch wiederholten Zugriff auf eine Zielzeile bzw. eine Aggressorzeile innerhalb eines Zeitraums bewirkt wird, der eine Änderung des Werts einer Opferzeile bewirkt, die sich benachbart an oder in der Nähe der Ziel-/Aggressorzeile befindet. Eine wiederholte Aktivierung der Zielzeile bewirkt eine Ladungsmigration über das Passgate der Opferzeile hinweg. Durch eine wiederholte Manipulation einer Zielzeile mit einer bekannten Struktur kann ein Angreifer die Bits von Opferzeilen absichtlich umkehren.
  • Neuartige Speichervorrichtungen sind hauptsächlich für eine Rowhammer-Abwehr verantwortlich, wobei eine Host-Unterstützung durch den Host Phasen von Auffrischungszeit bereitstellt, um zu gestatten, dass die Speichervorrichtungen eine interne Auffrischung durchführen. Die Host-Unterstützung kann in Form gezielter Auffrischungs(DRFM - directed refresh management)-Befehle vorliegen. Bei der Pseudo-Zielzeilenauffrischung (pseudo target row refresh - pTTR) handelt es sich um eine Technik, bei der die Speichervorrichtung als der Aggressor für Zielzeilenauffrischungsoperationen basierend auf Aktivierungen pseudozufällig Adressen erfasst, gemäß der Theorie, dass Zeilen, bei denen ausreichend Aktivierungen auftreten, um eine Opferzeilen-Störung zu bewirken, von der Speichervorrichtung wahrscheinlich zur Rowhammer-Abwehr ausgewählt werden. Jedoch besteht bei der Technik nicht viel Zufälligkeit, was einem Angreifer gestatten kann, die Schutzvorkehrungen zu umgehen.
  • Die pseudozufällige pTTR-Auswahl von Aktivierungsbefehlen würde am besten funktionieren, wenn der DRFM-Befehl nur eine einzige Bank betreffen würde. Jedoch wird das Leiten von DRFM-Befehlen zu einer einzigen Bank als zu aufwändig für die Bandbreite erachtet und neuartige DRFM-Befehle werden entweder zu allen Bänken oder zur gleichen Bank in allen Bankgruppen geleitet. Bei DRFMab (DRFM all bank - DRFM-Alle-Bänke) und DRFMsb (DRFM-Gleiche-Bank) besteht eine hohe Wahrscheinlichkeit dafür, dass eine Bank keine Zeile für pTTR ausgewählt haben wird, wenn ein DRFM-Befehl empfangen wird, wodurch der DRFM-Befehl bei diesen Bänken verschwendet wird.
  • Aufgrund der Leistungseinbuße durch DRFM-Befehle entscheiden sich manche Systeme dafür, DRFM nicht zu implementieren, wodurch die gesamte Rowhammer-Abwehr bei den Speichervorrichtungen ohne Host-Unterstützung belassen wird. Obwohl ein derartiger Ansatz die Leistungseinbuße minimiert, erhöht er das Risiko von Rowhammer-Angriffen. Alternativ dazu kann ein System DRFM-Befehle einsetzen, um das Risiko von Rowhammer-Angriffen zu reduzieren, was eine beträchtliche Leistungseinbuße nach sich ziehen kann, insbesondere, wenn DRFM-Befehle an mehrere Bänke gerichtet werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die folgende Beschreibung beinhaltet eine Erörterung von Figuren mit Veranschaulichungen, die beispielhaft für eine Implementierung gegeben werden. Die Zeichnungen sind als Beispiel und nicht als Einschränkung zu verstehen. Wie hier verwendet, verstehen sich Verweise auf ein oder mehrere Beispiele als dass sie ein spezifisches Merkmal, eine spezifische Struktur oder ein spezifisches Charakteristikum, das bzw. die in mindestens einer Implementierung der Erfindung beinhaltet sind, beschreiben. Hier auftretende Formulierungen, wie etwa „in einem Beispiel“ oder „in einem alternativen Beispiel“ stellen Beispiele für Implementierungen der Erfindung bereit und verweisen nicht notwendigerweise alle auf die gleiche Implementierung. Jedoch schließen sie sich auch nicht zwingend gegenseitig aus.
    • 1 ist ein Blockdiagramm eines Beispiels für ein System mit Rowhammer-Abwehr basierend auf einer randomisierten Adressauswahl.
    • 2 ist ein Blockdiagramm eines Beispiels für ein System, das eine Rowhammer-Abwehr basierend auf randomisierten Adressen basierend auf einem Überwachen von Aktivierungen durchführt.
    • 3A ist ein Blockdiagramm eines Beispiels für ein System, das eine Rowhammer-Abwehr basierend auf einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen bereitstellt.
    • 3B ist ein Blockdiagramm eines Beispiels für ein System, das eine Rowhammer-Abwehr basierend auf einer randomisierten DRFM-Auswahl basierend auf einem randomisierten Zähler bereitstellt.
    • 4 ist ein Blockdiagramm eines Beispiels für einen Schaltkreis zum Bereitstellen einer konstanten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen.
    • 5 ist ein Blockdiagramm eines Beispiels für einen Schaltkreis zum Bereitstellen einer randomisierten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen.
    • 6 ist ein Blockdiagramm eines Beispiels für einen Schaltkreis zum Bereitstellen einer randomisierten Adresserfassung nach einer ersten Adresserfassung sowie einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen.
    • 7 ist ein Blockdiagramm eines Beispiels für einen Befehl zum Angeben einer Adresserfassung.
    • 8 ist ein Flussdiagramm eines Beispiels für einen Prozess zur konstanten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen.
    • 9 ist ein Flussdiagramm eines Beispiels für einen Prozess zur randomisierten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen.
    • 10 ist ein Flussdiagramm eines Beispiels für einen Prozess zur randomisierten Adresserfassung nach einer ersten Adresserfassung sowie einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen.
    • 11 ist ein Blockdiagramm eines Beispiels für ein Speicherteilsystem, in welchem eine randomisierte DRFM-Auswahl implementiert werden kann.
    • 12 ist ein Blockdiagramm eines Beispiels für ein Rechensystem, in welchem eine randomisierte DRFM-Auswahl implementiert werden kann.
    • 13 ist ein Blockdiagramm eines Beispiels für eine mobile Vorrichtung, in welcher eine randomisierte DRFM-Auswahl implementiert werden kann.
    • 14 ist ein Blockdiagramm eines Beispiels für ein Mehrknotennetzwerk, in welchem eine randomisierte DRFM-Auswahl implementiert werden kann.
  • Es folgen Beschreibungen bestimmter Einzelheiten und Implementierungen, einschließlich nicht einschränkender Beschreibungen der Figuren, die manche oder alle Beispiele abbilden können, sowie anderer möglicher Implementierungen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Allgemeinen handelt es sich bei Rowhammer um einen Zustand, in dem ein wiederholter Zugriff auf eine Zielzeile bzw. Aggressorzeile eine Zeilenstörung bewirken kann, die Daten in benachbarten Zeilen oder Opferzeilen ändert. Die wiederholte Aktivierung einer Aggressorzeile kann die Opferzeilen selbst dann ändern, wenn die Opferzeilen nicht aktiviert worden sind. Rowhammer wird in der Regel Bezug nehmend auf Direktzugriffsspeicher (dynamic random access memory - DRAM) erörtert. DRAM-Vorrichtungen versuchen, eine Rowhammer-Abwehr mit proprietären Mechanismen durchzuführen, die bekannte Angriffe abwehren können. Jedoch werden, selbst wenn ein Abwehrmechanismus eingeführt wird, neue, komplexere Angriffe eingeführt, welche die Abwehr durchkreuzen können.
  • Viele Speichersysteme setzen eine Pseudo-Zielzeilenauffrischung (pseudo target row refresh - pTRR) ein, die es dem Host ermöglicht, Aktivierungsbefehle auf eine pseudozufällige Weise zum Bereitstellen an die DRAM-Vorrichtungen auszuwählen. Die DRAM-Vorrichtungen können dann eine interne Rowhammer-Abwehr basierend auf der ausgewählten Adresse durchführen, ohne dass der Host über interne Umstellungstechniken (swizzling) oder Zeilenreparaturen, die unterschiedliche Zeilennachbarschaften für Rowhammer-Zwecke ergeben, in Kenntnis gesetzt zu werden braucht. Somit können die DRAM-Vorrichtungen Zeilennachbarschaften intern nachverfolgen und eine Rowhammer-Abwehr basierend auf einer ausgewählten Aktivierungsbefehlsadresse durchführen. Theoretisch wählt der Host wahrscheinlich eine Aggressoradresse mit pTTR aus, wenn er sieht, dass viele Aktivierungen zum Abschließen eines Rowhammer-Angriffs benötigt werden.
  • Eine gezielte Auffrischungsverwaltung (directed refresh management - DRFM) gestattet der Host-Steuerung, eine Aggressoradresse für die DRAM-Vorrichtungen festzulegen, die für eine Rowhammer-Abwehr verwendet werden soll, indem sie intern potenzielle Opferzeilen auffrischt. Die Speichersteuerung wählt in der Regel pseudozufällig eine Adresse mit pTTR aus und folgt der Adressauswahl mit einem DRFM-Befehl, um auszulösen, dass die DRAM-Vorrichtungen Abwehroperationen durchführen. DRFM ist auf DRFMab (DRFM-Alle-Bänke) oder DRFMsb (DRFM-Gleiche-Bank) in der Doppeldatenratenversion 5 (DDR5) beschränkt, was bedeutet, dass ein DRFM-Befehl mehrere Bänke trifft (z. B. 32 Bänke (DRFMab) oder 8 von 32 Bänken (DRFMsb). Somit ist das Spezifizieren der gleichen Aggressorzeile mit DRFM zu vorhersehbar, wodurch ein Rowhammer-Angriffsvektor die Abwehroperationen vermeiden kann.
  • Wie hier beschrieben, kann die Speichersteuerung in einem Speicherteilsystem, in dem gezielte Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehle entweder an alle Bänke (DRFMab) oder an die gleiche Bank in allen Bankgruppen (DRFMsb) gesendet werden, das Senden der DRFM-Befehle randomisieren. Die Steuerung kann Befehle erzeugen, um anzugeben, dass die Speichervorrichtung Adressen für verschiedene Bänke erfassen sollte, um sie für pTRR-Operationen zu verwenden. Die Angabe kann auf Adressen, die mit Aktivierungsbefehlen oder Aktivierungen assoziiert sind, basieren. Die Steuerung kann eine Angabe für jede Aktivierung senden oder kann die Angabe der Adresserfassung durch eine Angabe für ausgewählte Aktivierungen senden, wobei derartige Befehle pseudozufällig ausgewählt werden. Mit erfassten Adressen (entweder für jede Aktivierung oder für ausgewählte Aktivierungen erfasst) und zufällig erzeugten DRFM-Befehlen kann das System DRFM-Befehle besser nutzen, da es wahrscheinlicher ist, dass die mehreren Bänke Adressen für pTRR aufweisen und eine Randomisierung das Vermögen eines Rowhammer-Angriffs, die DRFM zu vermeiden, reduzieren kann.
  • Im Gegensatz zu Systemen, die aufgrund der Leistungseinbuße keine DRFM verwenden, kann ein System das Senden der DRFM randomisieren, wobei unterschiedliche Zeilen für jede Bank ausgewählt werden. Somit braucht dem Host das Adressenumstellen, das durch die Speichervorrichtungen eingesetzt wird, nicht bekannt zu sein und er braucht reparierte Zeilen nicht zu berücksichtigen, was gestattet, dass derartige Faktoren intern durch die Speichervorrichtung oder die DRAM-Vorrichtung gehandhabt werden.
  • Im Gegensatz zu Systemen, die DRFM mit einer Leistungseinbuße verwenden, die daher rührt, dass nur eine Bank das Ziel des DRFM-Befehls ist, aber die eine Abwehr in vielen Bänken auslösen müssen, kann das System das Senden der DRFM randomisieren und gestatten, dass für jede Bank unterschiedliche Zeilen ausgewählt werden. Somit weist die Speichervorrichtung oder die DRAM-Vorrichtung Adressen für unterschiedliche Bänke auf, um eine Abwehr durchzuführen, was die Wahrscheinlichkeit erhöht, dass die Abwehroperationen von Nutzen sind. Anstatt Speicherbandbreite ohne einen Vorteil zu verwenden, bedeutet das Erhöhen des Nutzwerts des DRFM-Befehls, dass es wahrscheinlicher ist, dass der Befehl ein günstiges Ergebnis für alle durch den Befehl betroffenen Bänke bereitstellt. Eine bessere Verwendung der Bandbreite, die zum Durchführen einer Rowhammer-Abwehr erforderlich ist, erhöht die Möglichkeit, mehr Typen von Angriffen mit weniger Bandbreitenverlust abzuwehren.
  • 1 ist ein Blockdiagramm eines Beispiels für ein System mit Rowhammer-Abwehr basierend auf einer randomisierten Adressauswahl. Das System 100 stellt Elemente eines Rechensystems dar, bei dem ein Host-Prozessor mit Speicherressourcen gekoppelt ist. Das System 100 ermöglicht eine Host-unterstützte Rowhammer-Abwehr durch den Speicher basierend auf randomisierten Mehrbänke-DRFM-Befehlen, die Abwehroperationen auf mehr Bänke erweitern können.
  • Der Host 110 stellt eine Host-Hardwareplattform für das System 100 dar. Der Host 110 kann einen Hauptprozessor(central processing unit - CPU)-Kern 112 und eine Speichersteuerung 120 beinhalten. Der CPU-Kern 112 stellt einen Ausführungskern dar, der Operationen durchführt, die Speicherzugriffsanforderungen erzeugen. Der CPU-Kern 112 kann Teil eines Ein-Kern-Prozessors oder einer Mehrkernverarbeitung sein, die getrennte Ausführungseinheiten beinhaltet. Die CPU-Kerne 112 können Operationen parallel durchführen und Speicherzugriffsanforderungen an die Speichersteuerung 120 senden. Die Ausführung von Operationen kann Änderungen an Daten erzeugen, die im Speicher gespeichert werden, und die Ausführung von Operationen kann Daten zur Ausführung anfordern, die im Speicher gespeicherte Daten anfordern. Der Speicher 140 stellt einen Speicher für das System 100 dar und kann DRAM-Vorrichtungen sein oder diese beinhalten. Der Speicher 140 kann mehrere separate Speichervorrichtungen darstellen, wie etwa mehrere DRAM-Vorrichtungen in einem doppelreihigen Speichermodul (Dual Inline Memory Module - DIMM).
  • Der Speicher 140 beinhaltet ein Array 142 mit M Bankgruppen, der Bankgruppe 144 [0:M-1], gemeinsam als Bankgruppen 144 bezeichnet. Jede Bankgruppe 144 kann N Bänke beinhalten, die Bank 146 [0:N-1], gemeinsam als Bänke 146 bezeichnet. Das Array 142 stellt das Speicherarray zum Speichern von Daten dar. Der Speicher 140 speichert Daten im Array 142 basierend auf der Zeilenadresse, der Spaltenadresse, der Bankadresse, der Bankgruppe und dem Rang. Der Rang wird in der Regel durch Chipauswahl (chip select - CS#) adressiert. Der Speicher 140 verbindet sich mit dem Host 110 über einen Befehlsbus für Befehle und einem Datenbus zum Austauschen von Daten. Der Speicher 140 kann mehrere Speichervorrichtungen, die mit dem Datenbus gekoppelt sind, darstellen.
  • Der CPU-Kern 112 stellt Anforderungen für einen Datenzugriff an die Speichersteuerung 120 bereit. Die Speichersteuerung 120 verwaltet den Zugriff auf den Speicher 140. Die Speichersteuerung 120 empfängt Speicherzugriffsanforderungen für den CPU-Kern 112 und erzeugt Befehle zum Zugreifen auf den Speicher 140. Die Speichersteuerung 120 kann physische Adressen für Host-Adressen in den Anforderungen vom CPU-Kern 112 identifizieren.
  • In einem Beispiel beinhaltet die Speichersteuerung 120 einen Ablaufplaner 122 zum Planen von Befehlen für Zugriffe auf den Speicher 140. Die Befehle können Aktivierungsbefehle, Vorladebefehle, Lesebefehle, Schreibbefehle und andere Befehle beinhalten. In einem Beispiel beinhaltet die Speichersteuerung 120 eine Steuerungsschaltungsanordnung zum Erzeugen von einem oder mehreren Befehlen, um Adressen für mindestens einige der Bänke 146 anzugeben, die für eine pTRR-Operation oder eine Rowhammer-Abwehroperation durch die Bänke 146 erfasst werden sollen. Die Steuerungsschaltungsanordnung kann die Befehle zur Ablaufplanung durch den Ablaufplaner 122 erzeugen. In einem Beispiel geben die Befehle Adressen für alle Bänke an. Die Befehle können die Adressen für die Bänke mit einer Bank pro Mal angeben, wenn die Speicherzugriffsanforderungen einen Zugriff auf die unterschiedlichen Bänke anfordern.
  • In einem Beispiel kann die Steuerungsschaltungsanordnung einen DRFM-Befehl erzeugen, um auszulösen, dass der Speicher 140 eine Zielzeilenauffrischungsabwehr für die Adressen durchführt, die für mehrere oder alle Bänke 146 ausgewählt wurden. Die Steuerungsschaltungsanordnung der Speichersteuerung 120 kann randomisieren, wie häufig der DRFM-Befehl an den Speicher 140 gesendet werden soll.
  • In einem Beispiel kann die Steuerungsschaltungsanordnung zumindest teilweise durch eine DRFM-Engine 130 dargestellt werden. Die DRFM-Engine 130 stellt eine Steuerungsschaltungsanordnung innerhalb der Speichersteuerung 120 dar, um die Auswahl der DRFM-Befehle zu randomisieren. In einem Beispiel kann die DRFM-Engine 130 zumindest teilweise in Firmware- oder Softwarelogik implementiert sein, die auf der Hardware der Speichersteuerung 120 implementiert ist.
  • Wie veranschaulicht, kann die DRFM-Engine 130 eine eintreffende Anforderung 124 empfangen, die eine Anforderung auf einen Speicherzugriff darstellt, die durch den CPU-Kern 112 erzeugt wurde. Die DRFM-Engine 130 kann Befehle 126 erzeugen. Die Befehle 126 können die Befehle zum Angeben der Adressen für eine pTRR-Operation darstellen. Die Befehle 126 können die DRFM-Befehle zum Auslösen, dass der Speicher 140 Rowhammer-Abwehroperationen durchführt, darstellen.
  • In einem Beispiel beinhaltet die DRFM-Engine 130 Zeilenlogik 132. Die Zeilenlogik 132 stellt Logik zum Auswählen einer Zeilenadresse als eine Aggressorzeile dar. Die Zeilenlogik 132 kann die Adresse auswählen, die dem Speicher 140 über die Befehle 126 über den Ablaufplaner 122 bereitgestellt werden soll. In einem Beispiel erzeugt die Zeilenlogik 132 Adressen pro Bank 146 eines Arrays 142. Die Befehlslogik 134 stellt Logik zum Erzeugen von Befehlen 126 dar. In einem Beispiel beinhalten die Befehle 126 Vorladebefehle, um die ausgewählte Adresse oder die ausgewählte Aggressorzeile anzugeben. Der Vorladebefehl kann einen Standard-Vorladebefehl (standard precharge - PRE), einen Lesebefehl mit Auto-Vorladen (read with auto-precharge command - RDA) oder einen Schreibbefehl mit Auto-Vorladen (write with auto-precharge command - WRA) beinhalten.
  • In einem Beispiel kann der Vorladebefehl ein Bit oder ein Feld als einen Indikator beinhalten, ob der Speicher 140 die Adresse, die mit dem Befehl assoziiert ist, für spätere Abwehroperationen erfassen sollte. Der Speicher 140 kann die mit einem Befehl assoziierte Adresse entweder durch ein Indikatorfeld oder durch ein Indikatorbit in dem Befehl oder durch einen anderen Indikator erfassen. Das Erfassen der Adresse kann sich auf Speichern der Adresse in einem Register oder in einem Massenspeicher beziehen, um sie als die Adresse für eine anschließende Abwehroperation zu verwenden. Wenn die Speichersteuerung 120 einen DRFM-Befehl erzeugt, kann der Speicher 140 somit auf die erfasste Adresse für jede Zeile zugreifen und die Abwehroperationen basierend auf den ausgewählten Zeilen als den Aggressorzeilen durchführen. In einem Beispiel verwendet der Speicher 140 nur die letzte Adresse, die für eine Bank zur Abwehr in Reaktion auf einen DRFM-Befehl ausgewählt wurde.
  • 2 ist ein Blockdiagramm eines Beispiels für ein System, das eine Rowhammer-Abwehr basierend auf randomisierten Adressen basierend auf einem Überwachen von Aktivierungen durchführt. Das System 200 stellt ein System gemäß einem Beispiel für das System 100 dar.
  • Das System 200 beinhaltet eine Speichervorrichtung 240, die mit einer Speichersteuerung 220 gekoppelt ist. Die Speichervorrichtung 240 kann einen beliebigen Typ von Speichertechnologie beinhalten, die benachbarte Zeilen von Speicherzellen aufweist, wobei auf Daten über eine Wortleitung oder das Äquivalent dazu zugegriffen werden kann. In einem Beispiel beinhaltet die Speichervorrichtung 240 DRAM-Technologie. In einem Beispiel beinhaltet das System 200 mehrere Speichervorrichtungen 240.
  • Die Speichersteuerung 220 ist Teil eines Hosts 210, der ein Host-System darstellt, von dem die Speichervorrichtung 240 einen Teil bildet. Der Host 210 beinhaltet eine CPU 212, die einen oder mehrere Prozessoren oder Verarbeitungsressourcen für den Host darstellt. Die CPU 212 erzeugt Speicherzugriffsanforderungen für die Speichervorrichtung 240. Die Speichersteuerung 220 kann eine integrierte Speichersteuerung sein, die einen Teil des CPU-Dies oder eine diskrete Komponente, die an den CPU-Die gekoppelt ist, bildet. Während sie als eine CPU gezeigt ist, kann alternativ dazu eine CPU 212 eine Grafikverarbeitungseinheit (GPU), ein Beschleunigerprozessor oder eine andere Verarbeitungskomponente sein.
  • Die Speichervorrichtung 240 beinhaltet ein Speicherarray 244, das ein Array aus Speicherzellen oder Massenspeicherzellen darstellt. Eine Speicherzelle speichert ein Datenbit oder mehrere Bits für eine Mehrstufenzelle. Das Speicherarray 244 beinhaltet eine Darstellung potentieller Rowhammer-Zustände. Beispielhaft zeigt das Speicherarray 244 die Bank 270 und die Bank 280. Es versteht sich, dass das Speicherarray 244 mehrere Bänke beinhalten kann. Allgemein beinhaltet eine Speicherbank oder eine Speicherteilbank Speicherzellen, die getrennt von Speicherzellen einer anderen Bank oder Teilbank adressierbar sind.
  • Die Speichervorrichtung 240 beinhaltet einen Spaltendecoder (DEC) 262, der eine Schaltungsanordnung zum Aufbringen einer Ladung auf eine Spalte basierend auf einem Zugriffsbefehl darstellt. In einem Beispiel wählt die Schaltungsanordnung in Reaktion auf einen Spaltenadress-Strobe(column address strobe - CAS)-Befehl eine Spalte aus. Die Speichervorrichtung 240 beinhaltet einen Zeilendecoder (DEC) 264, der eine Schaltungsanordnung zum Aufbringen von Auswahlspannungen auf Zeilen basierend auf einem Zugriffsbefehl darstellt. In einem Beispiel wählt die Schaltungsanordnung in Reaktion auf einen Zeilenadress-Strobe(row address strobe - RAS)-Befehl eine Spalte aus.
  • Zur Veranschaulichung eines Rowhammer-Zustands beinhaltet das Speicherarray 244 eine Zielzeile 272 in der Bank 270. Eine physisch nahe Zeile oder eine physisch benachbarte Zeile kann an einer unbeabsichtigten Programmierung oder Störung eines oder mehrerer in der Zeile gespeicherter Werte basierend auf einem wiederholten Zugriff auf die Zielzeile 272 innerhalb eines Zeitraums vor einer Auffrischungsoperation an der Zeile leiden. Der wiederholte Zugriff ergibt eine Ladungsmigration basierend auf Einsen in der Zielzeile, die benachbart zu Nullen in der Opferzeile stehen.
  • Die Opferzeile 274 stellt eine Zeile dar, die einem Rowhammer ausgesetzt ist, wenn wiederholt auf die Zielzeile 272 zugegriffen wird. Wenn für die Opferzeile 274 ein Risiko eines Rowhammer-Ereignisses besteht, kann die Zielzeile 272 als Aggressorzeile bezeichnet werden. Es kann eine andere Zeile in der Bank 270 vorhanden sein, die gegenüber der Zielzeile 272 eine Opferzeile darstellt.
  • In einem Beispiel weist die Bank 270 auch die Zielzeile 276 auf. Die Zielzeile 276 könnte sich an oder nahe einer Bankgrenze befinden. Es versteht sich, dass die Zeilen im Speicherarray 244 einen Abstand aufweisen können, der nicht anders ist, selbst wenn sich die Zeilen in anderen Bänken oder Teilbänken befinden. Die Trennung einer Bank oder Teilbank von einer anderen kann eher durch Auswahl- oder Decodierungshardwareelemente definiert werden. Somit könnte, abhängig von der Architektur der physischen Gestaltung der Zeilen, eine Zeile an der Grenze der Bank 280 basierend auf einem Zugriff auf die Zielzeile 276 auch dem Risiko eines Rowhammer-Ereignisses unterliegen. In einem Beispiel kann ein wiederholter Zugriff auf eine Zielzeile eine Störung mehrerer benachbarter Zeilen verursachen. Wie veranschaulicht, kann die Zielzeile 276 zu Rowhammer-Ereignissen sowohl bei der Opferzeile 278 der Bank 270 als auch bei der Opferzeile 282 der Bank 280 führen.
  • Um einen Rowhammer-Zustand aufgrund eines Zugriffs auf eine Zielzeile 272 zu vermeiden, kann die Speichervorrichtung 240 eine Auffrischung der potenziellen Opferzeilen, wie etwa der Opferzeile 274, durchführen. Ähnlich dazu kann die Speichervorrichtung 240 eine Auffrischung der Opferzeile 278 und der Opferzeile 282 durchführen, um einen Rowhammer-Zustand aufgrund eines wiederholten Zugriffs auf die Zielzeile 276 zu vermeiden.
  • In einem Beispiel beinhaltet die Speichersteuerung 220 eine Auffrischungs-Engine 230, um die Auffrischung der Speichervorrichtung 240 zu verwalten. Die Auffrischungs-Engine 230 kann zumindest teilweise als Hardwarelogik in der Speichersteuerung 220 ausgeführt werden. Zusätzlich zu einer Hardwareschaltungsanordnung kann die Auffrischungs-Engine 230 Firmware- oder Softwarelogik beinhalten.
  • Die Auffrischungs-Engine 230 kann einen Ablaufplaner 232 beinhalten, der Logik in der Auffrischungs-Engine 230 darstellt, um Auffrischungs-Befehle zu planen, um Bitzellen des Speicherarrays 244 in einem festgelegten Zustand zu halten, wie etwa durch Planen einer Auffrischung von Zeilen innerhalb eines Auffrischungsfensters. In einem Beispiel beinhaltet die Auffrischungs-Engine 230 einen Aktivierungs(ACT)-Monitor 234. Der Aktivierungsmonitor 234 kann ermöglichen, dass die Speichersteuerung 220 Aktivierungsbefehle, die an Bänke des Speicherarrays 244 gesendet werden, überwacht. In einem Beispiel überwacht der Aktivierungsmonitor 234 Aktivierungen pro Bank. In einem Beispiel überwacht der Aktivierungsmonitor 234 Aktivierungen pro Zeile. Die Aktivierungs-Engine 230 kann ein Register oder einen Zähler beinhalten, um den Aktivierungsmonitor 234 zu befähigen, Aktivierungen nachzuverfolgen.
  • In einem Beispiel beinhaltet die Auffrischungs-Engine 230 eine gezielte Auffrischungsverwaltungs(directed refresh management - DRFM)-Engine 236. Die DRFM-Engine 236 kann bestimmen, wann DRFM-Befehle an die Speichervorrichtung 240 gesendet werden sollen, um auszulösen, dass die Speichervorrichtung eine gezielte Auffrischung von vermeintlichen Aggressorzeilen durchführt. In einem Beispiel randomisiert die DRFM-Engine 236 das Senden der DRFM-Befehle basierend auf einer durch den Aktivierungsmonitor 234 erzeugten Aktivierungszählung.
  • Eine E/A (Eingabe/Ausgabe) 222 stellt eine Hardwareschnittstelle der Speichersteuerung 220 zum Verbinden mit der Speichervorrichtung 240 dar. Die E/A 222 kann Stifte, Kontaktfelder, Signalleitungen, Treiber, Empfänger oder andere Hardware oder eine Kombination von Hardwarekomponenten beinhalten. Die E/A 222 kann durch Steuerlogik gesteuert werden, die Terminierungs- und Treiberkomponenten konfiguriert und verwaltet. Die E/A 242 stellt eine E/A auf der Speichervorrichtung 240 dar. Die Speichervorrichtung 240 kann mit der Speichersteuerung 220 über die E/A 242 der Speichervorrichtung 240 und der E/A 222 der Speichersteuerung 220 eine Schnittstelle bilden. Die E/A 222 und die E/A 242 stellen Schnittstellenhardware bereit, um an einen Datenbus gekoppelt zu werden, der die Speichersteuerung 220 mit der Speichervorrichtung 240 verbindet.
  • Die Speichersteuerung 220 kann Aktivierungsbefehle über die E/A 222 als Teil von Zugriffen auf das Speicherarray 244 senden. Die Speichervorrichtung 240 kann die Aktivierungsbefehle über die E/A 242 empfangen, die Befehle decodieren und auf das Speicherarray 244 an der mit dem Befehl assoziierten Adresse zugreifen. In einem Beispiel sendet die Speichersteuerung 220 DRFM-Befehle auf eine randomisierte Weise an die Speichervorrichtung 240, um eine Rowhammer-Abwehr durch die Speichervorrichtung auszulösen. Eine Randomisierung der DRFM-Befehle kann sich auf eine Frequenz des Sendens der Befehle beziehen, wobei die Speichersteuerung 220 einen DRFM-Befehl durchschnittlich einmal pro Zeitraum senden kann, wobei der spezifische Zeitpunkt innerhalb des Fensters randomisiert wird, um zu vermeiden, dass spezifisch bekannt ist, wann der Befehl ausgegeben wird. Durch Randomisieren des Sendens des DRFM-Befehls kann ein Rowhammer-Angriff den Befehl zu keinem beliebigen gegebenen Zeitpunkt erwarten, was die Erfolgschance des Rowhammer-Angriffs beträchtlich senken kann.
  • In einem Beispiel gibt die Speichersteuerung 220 Adressen pro Bank an, die die Speichersteuerung 240 erfassen soll, um sie zu verwenden, wenn die Speichersteuerung 220 den DRFM-Befehl sendet.
  • Die Speichervorrichtung 240 beinhaltet ein Register 246, das ein oder mehrere Register oder Speicherorte zum Speichern von Konfigurationsinformationen oder -werten in Bezug auf den Betrieb der Speichervorrichtung 240 darstellt. In einem Beispiel beinhaltet das Register 246 ein oder mehrere Modusregister. In einem Beispiel beinhaltet das Register 246 Konfigurationsinformationen, um den Betrieb der Speichervorrichtung 240 zu steuern.
  • In einem Beispiel stellt das Register 246 ein oder mehrere Register für die Speichervorrichtung 240 dar, um Adressen zur Verwendung in Reaktion auf einen DRFM-Befehl zu speichern oder zu erfassen. In einem Beispiel beinhaltet das Register 246 ein Register oder einen Registerort pro Bank zum Speichern einer Zeilenadresse, die als Basis einer Rowhammer-Abwehr in Reaktion auf den DRFM-Befehl verwendet werden soll. Die erfasste Zeilenadresse kann als die Aggressorzeile betrachtet werden und die Speichervorrichtung 240 frischt zu der erfassten Adresse benachbarte Zeilen auf, um zu versuchen, Rowhammer-Zustände abzuwehren.
  • In einem Beispiel beinhaltet die Speichervorrichtung 240 eine Auffrischungs-Engine 250, die eine Hardwareschaltungsanordnung für Auffrischungsoperationen beinhalten kann. Die Auffrischungs-Engine 250 kann Firmware oder andere Software zusätzlich zu Hardwarelogik zur Auffrischung beinhalten. In einem Beispiel ist mindestens ein Abschnitt der Auffrischungs-Engine 250 als Teil einer internen Steuerung oder Steuerlogik auf der Speichervorrichtung 240 implementiert.
  • In einem Beispiel beinhaltet die Auffrischungs-Engine 250 einen Arrayplan 252, der eine Abbildung des Speicherarrays 244 darstellen kann. Während der Speichersteuerung 220 nicht notwendigerweise bekannt ist, welchen Umstellungsalgorithmus die Speichervorrichtung 240 einsetzt, kann der Arrayplan 252 der Auffrischungs-Engine 250 gestatten, Nachbarschaften von Zeilen zu Zwecken des Durchführens von Auffrischungsoperationen zur Rowhammer-Abwehr zu erfahren. Die Auffrischungs-Engine 250 kann Auffrischungslogik 254 beinhalten, um interne Auffrischungsoperationen durchzuführen, die Auffrischungsoperationen zur Rowhammer-Abwehr beinhalten können.
  • 3A ist ein Blockdiagramm eines Beispiels für ein System, das eine Rowhammer-Abwehr basierend auf einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen bereitstellt. Das System 302 stellt Komponenten einer Speichersteuerung, wie etwa der Speichersteuerung 120 des Systems 100 oder der Speichersteuerung 220 des Systems 200, dar.
  • Das System 302 empfängt eine Anforderung 312, die eine Anforderung auf einen von einem Host-Prozessor oder -Verarbeitungskern erzeugten Speicherzugriff darstellt. In einem Beispiel beinhaltet das System 302 einen Aktivierungs(ACT)-Monitor 322 zum Überwachen von Aktivierungen an den Speicher. In einem Beispiel erzeugt der Aktivierungsmonitor 322 eine Zählung von Aktivierungen an unterschiedlichen Speicherbänken. Eine Aktivierungs(ACT)-Zählung 324 stellt die Zählung dar, die für jede Bank spezifisch sein kann. Somit kann die Aktivierungszählung 324 für jede eintreffende Anforderung 312 basierend auf der in der Anforderung 312 angegebenen Bank verschieden sein. Die Anforderung 312 beinhaltet eine Adresse (z. B. eine Zeilenadresse), mit der sie assoziiert ist, um eine Speicherzeile zum Zugreifen anzugeben, die eine assoziierte Bankadresse aufweist.
  • Das System 302 beinhaltet (das) Auswählen 332, das einen Auswahlschaltkreis darstellt, um zu bestimmen, wann eine Adresserfassungsangabe für die mit der Anforderung 312 assoziierte Adresse erzeugt werden soll. Auswählen 332 kann durch eine Adress(ADDR)-Steuerung 342 gesteuert werden. Die Adresssteuerung 342 stellt ein Signal oder eine Steuerung zum Auswählen 332 bereit, wann die Adresse der Anforderung 312 zur Erfassung ausgewählt werden sollte. In einem Beispiel kann die Adresssteuerung 342 bewirken, dass Auswählen 332 jede Adresse für jede Anforderung auswählt, wodurch ausgelöst wird, dass die Speichervorrichtung die DRFM-Aggressoradresse bei jeder neuen Anforderung 312 überschreibt. In einem Beispiel randomisiert die Adresssteuerung 342 die Steuerung von Auswählen 332. Die Adresssteuerung 342 kann die Aktivierungszählung 324 vom Aktivierungsmonitor 322 empfangen und basierend auf der Zählung Auswählen 332 zufällig auslösen. Somit kann Auswählen 332 die Adresse der Speichervorrichtung zur Erfassung zufällig angeben.
  • Die Adress(ADDR)-Erfassung 374 stellt eine Adresserfassungsangabe dar, wenn Auswählen 332 eine Adresse zur Erfassung auswählt. In einem Beispiel löst die Adresserfassung 374 einen Aktivierungsbefehl im Ablaufplaner 372 aus, dass ein Marker gesetzt oder ein Feld befüllt wird, um der Speichervorrichtung die Adresserfassung anzugeben. Somit, wenn die Speichervorrichtung den Befehl empfängt und decodiert, kann sie den Adresserfassungsauslöser identifizieren und die Adresse für eine anschließende DRFM-Abwehroperation speichern.
  • Das System 302 beinhaltet (das) Auswählen 352, was einen Auswahlschaltkreis darstellt, um zu bestimmen, wann die Anforderung 312 als ein Auslöser für einen DRFM-Befehl ausgewählt werden soll. Die DRFM-Steuerung 362 stellt eine Steuerung dar, um zu bewirken, dass Auswählen 352 den DRFM-Befehl erzeugt. Senden von DRFM 376 stellt den DRFM-Befehl oder ein Steuersignal dar, um die Erzeugung des DRFM-Befehls auszulösen. Das System 302 kann Bereitstellen des DRFM-Befehls an den Ablaufplaner 372 bewirken, um das Senden an die Speichervorrichtung zu planen.
  • Die DRFM-Steuerung 362 kann die Erzeugung des DRFM-Befehls basierend auf der Aktivierungszählung 324 randomisieren. Mit der Aktivierungszählung 324 als Eingabe kann die DRFM-Steuerung 362 Auswählen 352 pseudozufällig auslösen. Eine Randomisierung von Auswählen 352 bedeutet, dass der exakte Zeitpunkt des DRFM-Befehls für einen Angreifer, der einen Rowhammer-Angriff versucht, unerfahrbar sein sollte.
  • Der Ablaufplaner 372 kann den Ablaufplaner der Speichersteuerung darstellen. Der Ablaufplaner 372 plant Zugriffsbefehle, die an die Speichervorrichtung gesendet werden sollen. Die Zugriffsbefehle sind im System 302 nicht explizit gezeigt. Die Anforderung 312 weist einen oder mehrere mit ihr assoziierte Zugriffsbefehle auf. Derartige Befehle können einen Aktivierungsbefehl beinhalten, der dazu konfiguriert sein kann, basierend auf Auswählen 332 eine Adresserfassung auszulösen. Die Adresserfassung 374 kann einen Befehl, der von dem Ablaufplaner 372 geplant werden soll, oder das Einstellen eines Felds in einem Zugriffsbefehl, um die Adresserfassung anzugeben, darstellen. Senden von DRFM 376 stellt dar, dass der Ablaufplaner 372 einen DRFM-Befehl aufweist, den er zum Senden an die Speichervorrichtung planen soll.
  • In einem Beispiel stellt (die) Adresssteuerung 342 ein linear rückgekoppeltes Schieberegister (linear feedback shift register - LSFR) mit einer hohen Einfügerate dar. Die hohe Einfügerate kann in der Größenordnung eines einstelligen Bereichs oder eines zweistelligen Bereichs von Befehlen liegen. Somit kann die Adresssteuerung 342 durchschnittlich, bei so vielen Aktivierungen wie durch den Aktivierungszähler 324 angegeben, ein Signal erzeugen, um zu bewirken, dass Auswählen 332 die Adresse der Anforderung 312 zur Erfassung auswählt.
  • In einem Beispiel stellt die DRFM-Steuerung 362 ein LFSR mit einer niedrigeren Einfügerate dar. Die niedrigere Einfügerate kann eine Größenordnung oder zwei Größenordnungen weniger häufig als die Einfügerate der Adresssteuerung 342 sein. Die niedrigere Einfügerate kann in der Größenordnung von 1 von allen 200 oder 1 von allen 500 Anforderungen sein. Die niedrigere Einfügerate kann weniger häufig als 1 von 500 sein. Im Allgemeinen löst die niedrigere Einfügerate DRFM-Befehle mit geringerer Frequenz aus als die höhere Einfügerate Adresserfassungsangaben oder Adresserfassungsbefehle auslöst.
  • In einem Beispiel löst die Adresssteuerung 342 Auswählen 332 bei jeder Anforderung 312 aus. Somit kann der Ablaufplaner 372 eine Adresserfassung für jeden Aktivierungsbefehl an die Speichervorrichtung angeben. Daher kann das System 302 eine Konfiguration als Steuerungsschaltungsanordnung aufweisen, die die Erzeugung eines Adresserfassungsbefehls randomisiert und die Erzeugung des DRFM-Befehls randomisiert. Alternativ dazu kann das System 302 eine Konfiguration als Steuerungsschaltungsanordnung aufweisen, die die Erzeugung des DRFM-Befehls randomisiert und einen Adresserfassungsbefehl auf eine nicht randomisierte Weise erzeugt, die jeder Befehl oder jeder zweite Befehl, jeder dritte Befehl oder so weiter sein kann.
  • In einem Beispiel ist die Einfügerate der Adresssteuerung 342 durch das Basis-Eingabe-/-Ausgabesystem (basic input/output system - BIOS) der Plattform konfigurierbar oder programmierbar. In einem Beispiel kann das BIOS die Einfügerate der DRFM-Steuerung 362 konfigurieren oder programmieren.
  • 3B ist ein Blockdiagramm eines Beispiels für ein System, das eine Rowhammer-Abwehr basierend auf einer randomisierten DRFM-Auswahl basierend auf einem randomisierten Zähler bereitstellt. Das System 304 stellt Komponenten einer Speichersteuerung, wie etwa der Speichersteuerung 120 des Systems 100 oder der Speichersteuerung 220 des Systems 200, dar. Während das vorstehende System 302 eine Randomisierung des DRFM-Befehls basierend auf einer Aktivierungszählung bereitstellt, stellt das System 304 eine Randomisierung des DRFM-Befehls basierend auf einem Zähler oder Zeitgeber bereit.
  • Es versteht sich, dass die Beschreibung der meisten Elemente des Systems 304 die gleiche ist wie die vorstehenden Beschreibungen für ähnliche Elemente bezogen auf das System 302. Die Beschreibungen werden hier der Vollständigkeit halber wiederholt.
  • Das System 304 empfängt eine Anforderung 314, die eine Anforderung auf einen von einem Host-Prozessor oder -Verarbeitungskern erzeugten Speicherzugriff darstellt. In einem Beispiel beinhaltet das System 304 einen Aktivierungs(ACT)-Monitor 326 zum Überwachen von Aktivierungen an den Speicher. In einem Beispiel erzeugt der Aktivierungsmonitor 326 eine Zählung von Aktivierungen zu unterschiedlichen Speicherbanken. Eine Aktivierungs(ACT)-Zählung 328 stellt die Zählung dar, die für jede Bank spezifisch sein kann. Somit kann die Aktivierungszählung 328 für jede eintreffende Anforderung 314 basierend auf der in der Anforderung 314 angegebenen Bank verschieden sein. Die Anforderung 314 beinhaltet eine Adresse (z. B. eine Zeilenadresse), mit der sie assoziiert ist, um eine Speicherzeile zum Zugreifen anzugeben, die eine assoziierte Bankadresse aufweist.
  • Das System 304 beinhaltet (das) Auswählen 334, das einen Auswahlschaltkreis darstellt, um zu bestimmen, wann eine Adresserfassungsangabe für die mit dem Anfordern 314 assoziierte Adresse erzeugt werden soll. Auswählen 334 kann durch eine Adress(ADDR)-Steuerung 344 gesteuert werden. Die Adresssteuerung 344 stellt ein Signal oder eine Steuerung zum Auswählen 334 bereit, wann die Adresse der Anforderung 314 zur Erfassung ausgewählt werden sollte. In einem Beispiel kann die Adresssteuerung 344 bewirken, dass Auswählen 334 jede Adresse für jede Anforderung auswählt, wodurch ausgelöst wird, dass die Speichervorrichtung die DRFM-Aggressoradresse bei jeder neuen Anforderung 314 überschreibt. In einem Beispiel randomisiert die Adresssteuerung 344 die Steuerung von Auswählen 334. Die Adresssteuerung 344 kann die Aktivierungszählung 328 vom Aktivierungsmonitor 326 empfangen und basierend auf der Zählung Auswählen 334 zufällig auslösen. Somit kann Auswählen 334 die Adresse der Speichervorrichtung zur Erfassung zufällig angeben.
  • Die Adress(ADDR)-Erfassung 384 stellt eine Adresserfassungsangabe dar, wenn Auswählen 334 eine Adresse zur Erfassung auswählt. In einem Beispiel löst die Adresserfassung 384 einen Aktivierungsbefehl im Ablaufplaner 382 aus, dass ein Marker gesetzt oder ein Feld befüllt wird, um der Speichervorrichtung die Adresserfassung anzugeben. Somit, wenn die Speichervorrichtung den Befehl empfängt und decodiert, kann sie den Adresserfassungsauslöser identifizieren und die Adresse für eine anschließende DRFM-Abwehroperation speichern.
  • Das System 304 beinhaltet (das) Auswählen 354, was einen Auswahlschaltkreis darstellt, um zu bestimmen, wann Anfordern 314 als ein Auslöser für einen DRFM-Befehl ausgewählt werden soll. Die DRFM-Steuerung 364 stellt eine Steuerung dar, um zu bewirken, dass Auswählen 354 den DRFM-Befehl erzeugt. Senden von DRFM 386 stellt den DRFM-Befehl oder ein Steuersignal dar, um die Erzeugung des DRFM-Befehls auszulösen. Das System 304 kann Bereitstellen des DRFM-Befehls an den Ablaufplaner 382 bewirken, um das Senden an die Speichervorrichtung zu planen.
  • Die DRFM-Steuerung 364 kann die Erzeugung des DRFM-Befehls basierend auf dem Zähler 390 randomisieren. Der Zähler 390 kann einen Zähler oder einen Zeitgeber im System 304 darstellen, um eine Zählung zu erzeugen. Mit der Zählung von dem Zähler 390 als Eingabe kann die DRFM-Steuerung 364 (das) Auswählen 354 pseudozufällig auslösen. Die Kombination des Zählers 390 und der DRFM-Steuerung 364 kann einen pseudozufälligen Zeitgeber bereitstellen, um den Zeitpunkt und die Häufigkeit der Erzeugung des DRFM-Befehls zu randomisieren. Eine Randomisierung von Auswählen 354 bedeutet, dass der exakte Zeitpunkt des DRFM-Befehls für einen Angreifer, der einen Rowhammer-Angriff versucht, unerfahrbar sein sollte.
  • Der Ablaufplaner 382 kann den Ablaufplaner der Speichersteuerung darstellen. Der Ablaufplaner 382 plant Zugriffsbefehle, die an die Speichervorrichtung gesendet werden sollen. Die Zugriffsbefehle sind im System 304 nicht explizit gezeigt. Die Anforderung 314 weist einen oder mehrere mit ihr assoziierte Zugriffsbefehle auf. Derartige Befehle können einen Aktivierungsbefehl beinhalten, der dazu konfiguriert sein kann, basierend auf Auswählen 334 eine Adresserfassung auszulösen. Die Adresserfassung 384 kann einen Befehl darstellen, der von dem Ablaufplaner 382 geplant wird, oder die Einstellung eines Felds in einem Zugriffsbefehl, um die Adresserfassung anzugeben. Senden von DRFM 386 stellt dar, dass der Ablaufplaner 382 einen DRFM-Befehl aufweist, den er zum Senden an die Speichervorrichtung planen soll.
  • In einem Beispiel stellt (die) Adresssteuerung 344 ein linear rückgekoppeltes Schieberegister (linear feedback shift register - LSFR) mit einer hohen Einfügerate dar. Die hohe Einfügerate kann in der Größenordnung eines einstelligen Bereichs oder eines zweistelligen Bereichs von Befehlen liegen. Somit kann die Adresssteuerung 344 durchschnittlich, bei so vielen Aktivierungen wie durch den Aktivierungszähler 328 angegeben, ein Signal erzeugen, um zu bewirken, dass Auswählen 334 die Adresse der Anforderung 314 zur Erfassung auswählt. In einem Beispiel kann an Stelle eines LFSR, dessen Startwert auf einer Aktivierungszählung 328 basiert, eine Adresssteuerung 344 als ein pseudozufälliger Zeitgeber implementiert werden, der eine Zählereingabe ähnlich dem Zähler 390 empfängt, aber eine Auswahl mit einer höheren Frequenz als die DRFM-Steuerung 364 vornimmt.
  • In einem Beispiel stellt die DRFM-Steuerung 364 ein LFSR mit einer niedrigeren Einfügerate dar. Die niedrigere Einfügerate kann eine Größenordnung oder zwei Größenordnungen weniger häufig als die Einfügerate der Adresssteuerung 344 sein. Die niedrigere Einfügerate kann in der Größenordnung von 1 von allen 200 oder 1 von allen 500 Anforderungen sein. Die niedrigere Einfügerate kann weniger häufig als 1 von 500 sein. Im Allgemeinen löst die niedrigere Einfügerate DRFM-Befehle mit geringerer Frequenz aus als die höhere Einfügerate Adresserfassungsangaben oder Adresserfassungsbefehle auslöst.
  • In einem Beispiel löst die Adresssteuerung 344 Auswählen 334 bei jeder Anforderung 314 aus. Somit kann der Ablaufplaner 382 eine Adresserfassung für jeden Aktivierungsbefehl an die Speichervorrichtung angeben. Daher kann das System 304 eine Konfiguration als Steuerungsschaltungsanordnung aufweisen, die die Erzeugung eines Adresserfassungsbefehls randomisiert und die Erzeugung des DRFM-Befehls randomisiert. Alternativ dazu kann das System 304 eine Konfiguration als Steuerungsschaltungsanordnung aufweisen, die die Erzeugung des DRFM-Befehls randomisiert und einen Adresserfassungsbefehl auf eine nicht randomisierte Weise erzeugt, die jeder Befehl oder jeder zweite Befehl, jeder dritte Befehl oder so weiter sein kann.
  • In einem Beispiel ist die Einfügerate der Adresssteuerung 344 durch das Basis-Eingabe-/-Ausgabesystem (basic input/output system - BIOS) der Plattform konfigurierbar oder programmierbar. Das BIOS kann die Einfügerate konfigurieren, sei es als eine Ausgabe basierend auf einer Aktivierungszählung oder basierend auf einem Zeitgeber oder Zähler. In einem Beispiel kann das BIOS die Einfügerate der DRFM-Steuerung 364 konfigurieren oder programmieren. Das BIOS kann die Einfügerate konfigurieren, sei es als eine Ausgabe basierend auf einer Aktivierungszählung oder basierend auf einem Zeitgeber oder Zähler.
  • 4 ist ein Blockdiagramm eines Beispiels für einen Schaltkreis zum Bereitstellen einer konstanten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen. Das System 400 stellt Komponenten einer Speichersteuerung, wie etwa der Speichersteuerung 120 des Systems 100 oder der Speichersteuerung 220 des Systems 200, dar. Das System 400 stellt ein System gemäß einem Beispiel für das System 302 oder einem Beispiel für das System 304 dar.
  • Das System 400 beinhaltet (das) Auswählen 430, gesteuert durch Immer 440. Somit wählt Auswählen 430 in Reaktion auf jede Anforderung 410 die Adresse für die Anforderung aus und das System 400 erzeugt die Adress(ADDR)-Erfassung 432 für den Ablaufplaner 470. Der Ablaufplaner 470 plant eine Befehlsangabe, die zu der Speichervorrichtung gesendet werden soll, um der Speichervorrichtung anzugeben, dass sie die Adresse für einen anschließenden DRFM-Befehl erfassen soll.
  • Das System 400 beinhaltet (das) Auswählen 450, gesteuert durch ein LFSR 460, welches ein LFSR mit niedriger Einfüge(INS - insertion)-Rate ist. Die niedrige Rate ist relativ zu der höheren Rate „Immer“ zum Steuern von Auswählen 430. In einem Beispiel erzeugt das LFSR 460 ein Ausgabesignal an Auswählen 450 basierend auf einem Zeitgeber. In einem Beispiel erzeugt das LFSR 460 ein Ausgabesignal an Auswählen 450 basierend auf einer Aktivierungs(ACT)-Zählung 422. Das System 400 kann einen Aktivierungs(ACT)-Monitor 420 beinhalten, um eine Aktivierungszählung 422 basierend auf einer Anzahl von Aktivierungsbefehlen an eine Bank basierend auf Anforderungsfolgen zu erzeugen.
  • Bei dem System 400 kann die Speichersteuerung oder die Host-Steuerung alle aktivierten Adressen, die von der Speichervorrichtung erfasst werden sollen, über eine Angabe in Vorladebefehlen markieren. Das LFSR 460 ermöglicht, dass die Host-Steuerung mit Auswählen 450 pseudozufällig einen Aktivierungsbefehl auswählt, um Senden von DRFM 452 auszulösen, wodurch ein DRFM-Befehl erzeugt wird. Es wird erwartet, dass der DRFM-Befehl bereitgestellt wird, nachdem die Speichervorrichtung eine Adresse aufweist, die für die vielen Bänke erfasst worden ist, die den Gegenstand des DRFM-Befehls bilden. Demnach weisen die meisten oder alle Bänke, die von dem DRFM-Befehl betroffen sind, eine Adresse auf, die für eine Rowhammer-Abwehr zu verwenden ist.
  • Der Ablaufplaner 470 plant und sendet den DRFM-Befehl, wodurch ausgelöst wird, dass die Speichervorrichtung als der Aggressor eine Auffrischungsabwehroperation basierend auf der jüngsten erfassten Adresse durchführt. Somit sind die durch die Speichervorrichtung für die unterschiedlichen Bänke verwendeten Adressen echte Adressen, die vor kurzem aktiviert wurden.
  • Durch die DRFM-Randomisierung des Systems 400 weisen alle Bänke, die einen DRFM-Befehl empfangen, eine erfasste Adresse auf, sofern keine Aktivierungen einer Bank stattgefunden haben, seit der vorherige DRFM-Befehl gesendet wurde. Während die Logik des Systems 400 einfach ist, kann das Fehlen einer Randomisierung der Adresserfassung gestatten, dass ein Angreifer vorhersagen kann, wann eine aufeinander folgende Gruppe von Adressen für eine Bank abgewehrt wird. Selbst ohne Kenntnis, welche aufeinander folgende Gruppe von Adressen abgewehrt wird, liegt in dem Ansatz eine gewisse Vorhersehbarkeit.
  • 5 ist ein Blockdiagramm eines Beispiels für einen Schaltkreis zum Bereitstellen einer randomisierten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen. Das System 500 stellt Komponenten einer Speichersteuerung, wie etwa der Speichersteuerung 120 des Systems 100 oder der Speichersteuerung 220 des Systems 200, dar. Das System 500 stellt ein System gemäß einem Beispiel für das System 302 oder einem Beispiel für das System 304 dar.
  • Das System 500 beinhaltet (das) Auswählen 530, gesteuert durch ein LFSR 540, welches ein LFSR mit hoher Einfüge(INS - insertion)-Rate darstellt. In Reaktion auf die Anforderung 510 wählt Auswählen 530 die Adresse für die Anforderung basierend auf einer Angabe von dem LFSR 540 aus. In einem Beispiel erzeugt das LFSR 540 eine Ausgabe, um Auswählen 530 basierend auf einer Aktivierungs(ACT)-Zählung 522 auszulösen. Wenn Auswählen 530 die Adresse auswählt, erzeugt das System 500 die Adress(ADDR)-Erfassung 532 für den Ablaufplaner 570. Der Ablaufplaner 570 plant eine Befehlsangabe, die zu der Speichervorrichtung gesendet werden soll, um der Speichervorrichtung anzugeben, dass sie die Adresse für einen anschließenden DRFM-Befehl erfassen soll.
  • Das System 500 beinhaltet (das) Auswählen 550, gesteuert durch ein LFSR 560, welches ein LFSR mit niedriger Einfüge(INS - insertion)-Rate ist. Die niedrige Rate ist relativ zu der höheren Einfügerate des LFSR 540, das Auswählen 530 steuert. In einem Beispiel erzeugt das LFSR 560 ein Ausgabesignal an Auswählen 550 basierend auf einem Zeitgeber. In einem Beispiel erzeugt das LFSR 560 ein Ausgabesignal an Auswählen 550 basierend auf einer Aktivierungs(ACT)-Zählung 522. Das System 500 kann einen Aktivierungs(ACT)-Monitor 520 beinhalten, um einen Aktivierungszähler 522 basierend auf einem Auftreten von Aktivierungsbefehlen an eine Bank basierend auf Anforderungsfolgen zu erzeugen.
  • In einem Beispiel kann ein System an Stelle von zwei getrennten LFSRs ein LFSR mit unterschiedlichen Ausgaben aufweisen. Somit könnte ein einzelnes LFSR eine hohe Einfügeratenausgabe und eine niedrige Einfügeratenausgabe bereitstellen, wodurch das LFSR 540 und das LFSR 560 durch ein derartiges Doppelausgabe-LFSR ersetzt würden.
  • Das System 500 weist zwei Komponenten der Zufälligkeit auf, indem es die Adresserfassung randomisiert und das Senden des DRFM-Befehls randomisiert. Bei dem System 500 wählt die Speichersteuerung oder die Host-Steuerung Adressen in unterschiedlichen Bänken auf eine Weise aus, die keine aufeinander folgende Auswahl von Adressen ist, wodurch die Adressauswahl zwischen den Bänken randomisiert wird. Das LFSR 560 ermöglicht, dass die Host-Steuerung mit Auswählen 550 pseudozufällig einen Aktivierungsbefehl auswählt, um Senden von DRFM 552 auszulösen, wodurch ein DRFM-Befehl erzeugt wird. Es wird erwartet, dass der DRFM-Befehl bereitgestellt wird, nachdem die Speichervorrichtung eine Adresse aufweist, die für die vielen Bänke erfasst worden ist, die den Gegenstand des DRFM-Befehls bilden. Demnach weisen die meisten oder alle Bänke, die von dem DRFM-Befehl betroffen sind, eine Adresse auf, die für eine Rowhammer-Abwehr zu verwenden ist.
  • Der Ablaufplaner 570 plant und sendet den DRFM-Befehl, wodurch ausgelöst wird, dass die Speichervorrichtung als der Aggressor eine Auffrischungsabwehroperation basierend auf der jüngsten erfassten Adresse durchführt. Somit sind die durch die Speichervorrichtung für die unterschiedlichen Bänke verwendeten Adressen echte Adressen, die vor kurzem aktiviert wurden.
  • Durch die DRFM-Randomisierung des Systems 500 wird erwartet, dass jede Bank, die einen DRFM-Befehl empfängt, eine Adresse aufweist, die fast jedes Mal, wenn ein DRFM-Befehl gesendet wird, erfasst wird. Bei dem System 500 besteht, verglichen mit dem System 400, eine größere Chance, dass eine Bank keine für den DRFM-Befehl erfasste Adresse aufweist, da das LFSR 540 zum Zeitpunkt, zu dem der DRFM-Befehl gesendet wird, eventuell keine Adresse für eine oder mehrere der Bänke ausgesucht hat. Das Risiko, dass eine Bank keine erfasste Adresse aufweist, steigt, je näher sich die hohe Einfügerate und die niedrige Einfügerate im Wert sind. Wenn beispielsweise die hohe Einfügerate 5 oder 8 anstatt einer niedrigeren Zahl wie 2 oder 3 beträgt und die niedrige Einfügerate annähernd 200 anstatt einer niedrigeren Frequenz wie 500 beträgt, steigt das Risiko, dass eine Bankadresse nicht erfasst worden ist.
  • 6 ist ein Blockdiagramm eines Beispiels für einen Schaltkreis zum Bereitstellen einer randomisierten Adresserfassung nach einer ersten Adresserfassung sowie einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen. Das System 600 stellt Komponenten einer Speichersteuerung, wie etwa der Speichersteuerung 120 des Systems 100 oder der Speichersteuerung 220 des Systems 200, dar. Das System 600 stellt ein System gemäß einem Beispiel für das System 302 oder einem Beispiel für das System 304 dar.
  • Das System 600 beinhaltet (das) Auswählen 630, gesteuert durch ein LFSR 640, welches ein LFSR mit hoher Einfüge(INS - insertion)-Rate darstellt, und Testen 680, welches ein Test zum Bestimmen, ob die Anforderung 610 das erste Aktivieren (ACT) an die Bank seit dem letzten DRFM-Befehl auslöst, ist. In Reaktion auf die Anforderung 610 wählt Auswählen 630 die Adresse für die Anforderung basierend auf einer Angabe von dem LFSR 640 oder einer positiven Antwort auf Testen 680 aus. Logik 690 stellt ein ODER-Logikgatter zum Auswählen von entweder der Ausgabe des LFSR 640 oder der Ausgabe von Testen 680 dar.
  • Es versteht sich, dass Testen 680 einmal pro Bank pro Zeitraum zwischen DRFM-Befehlen wahr ist. In der verbleibenden Zeit steuert das LFSR 640 Auswählen 630. In einem Beispiel erzeugt das LFSR 640 eine Ausgabe, um Auswählen 630 basierend auf einer Aktivierungs(ACT)-Zählung 622 auszulösen. Wenn Auswählen 630 die Adresse auswählt, erzeugt das System 600 die Adress(ADDR)-Erfassung 632 für den Ablaufplaner 670. Der Ablaufplaner 670 plant eine Befehlsangabe, die zu der Speichervorrichtung gesendet werden soll, um der Speichervorrichtung anzugeben, dass sie die Adresse für einen anschließenden DRFM-Befehl erfassen soll.
  • Das System 600 beinhaltet (das) Auswählen 650, gesteuert durch ein LFSR 660, welches ein LFSR mit niedriger Einfüge(INS - insertion)-Rate ist. Die niedrige Rate ist relativ zu der höheren Einfügerate des LFSR 640, das Auswählen 630 steuert. In einem Beispiel erzeugt das LFSR 660 ein Ausgabesignal an Auswählen 650 basierend auf einem Zeitgeber. In einem Beispiel erzeugt das LFSR 660 ein Ausgabesignal an Auswählen 650 basierend auf einer Aktivierungs(ACT)-Zählung 622. Das System 600 kann einen Aktivierungs(ACT)-Monitor 620 beinhalten, um einen Aktivierungszähler 622 basierend auf einem Auftreten von Aktivierungsbefehlen an eine Bank basierend auf Anforderungsfolgen zu erzeugen.
  • In einem Beispiel kann ein System an Stelle von zwei getrennten LFSRs ein LFSR mit unterschiedlichen Ausgaben aufweisen. Somit könnte ein einzelnes LFSR eine hohe Einfügeratenausgabe und eine niedrige Einfügeratenausgabe bereitstellen, wodurch das LFSR 640 und das LFSR 660 durch ein derartiges Doppelausgabe-LFSR ersetzt würden.
  • Das System 600 weist zwei Komponenten der Zufälligkeit auf, indem es die Adresserfassung randomisiert und das Senden des DRFM-Befehls randomisiert. Bei dem System 600 wählt die Speichersteuerung oder die Host-Steuerung Adressen in unterschiedlichen Bänken auf eine Weise aus, die keine aufeinander folgende Auswahl von Adressen ist, wodurch die Adressauswahl zwischen den Bänken randomisiert wird. Das LFSR 660 ermöglicht, dass die Host-Steuerung mit Auswählen 650 pseudozufällig einen Aktivierungsbefehl auswählt, um Senden von DRFM 652 auszulösen, wodurch ein DRFM-Befehl erzeugt wird. Es wird erwartet, dass der DRFM-Befehl bereitgestellt wird, nachdem die Speichervorrichtung eine Adresse aufweist, die für die vielen Bänke erfasst worden ist, die den Gegenstand des DRFM-Befehls bilden. Demnach weisen die meisten oder alle Bänke, die von dem DRFM-Befehl betroffen sind, eine Adresse auf, die für eine Rowhammer-Abwehr zu verwenden ist.
  • Der Ablaufplaner 670 plant und sendet den DRFM-Befehl, wodurch ausgelöst wird, dass die Speichervorrichtung als der Aggressor eine Auffrischungsabwehroperation basierend auf der jüngsten erfassten Adresse durchführt. Somit sind die durch die Speichervorrichtung für die unterschiedlichen Bänke verwendeten Adressen echte Adressen, die vor kurzem aktiviert wurden.
  • Durch die DRFM-Randomisierung des Systems 600 wird erwartet, dass jede Bank, die einen DRFM-Befehl empfängt, eine Adresse aufweist, die fast jedes Mal, wenn ein DRFM-Befehl gesendet wird, erfasst wird. Bei dem System 600 erhöht die Beinhaltung von Testen 680, verglichen mit dem System 500, die Chance, dass eine Bank eine Adresse aufweist, die für den DRFM-Befehl erfasst wurde, und hätte theoretisch die gleiche Häufigkeit, dass alle Bänke eine Adresse aufweisen, wie das System 400. Die Beinhaltung von Testen 680 kann das Risiko, dass eine Bank keine erfasste Adresse aufweist, reduzieren, selbst wenn die hohe Einfügerate und die niedrige Einfügerate relativ nahe aneinander im Wert sind.
  • Während das System 600 die Chance erhöht, dass jede Bank eine erfasste Adresse aufweist, beinhaltet das System 600 mehr Logik als das System 400 oder das System 500. In einem Beispiel beinhaltet Testen 680 eine „Punktekarte“ für jede Bank. Die Punktekarte bezieht sich auf ein Bit oder einen Wert, der für jede Bank gespeichert ist, um anzugeben, ob eine Aktivierung an die Bank gesendet worden ist. Testen 680 führt einen Vergleich bei jeder Anforderung 610 gegen die Punktekarte durch, um zu bestimmen, ob der Test wahr ist. In einem Beispiel wird Testen 680 gezielt aktiviert und deaktiviert. Testen 680 kann beispielsweise für nur N Takte aktiviert werden, nachdem ein DRFM-Befehl ausgegeben worden ist. In einem anderen Beispiel wird Testen 680 für M gesamte Aktivierungen an die Bänke aktiviert. Ob auf einem Takt basierend oder auf der Gesamtzahl von empfangenen Aktivierungen basierend, kann ein Deaktivieren von Testen 680 den Stromverbrauch der Schaltungsanordnung reduzieren.
  • 7 ist ein Blockdiagramm eines Beispiels für einen Befehl zum Angeben einer Adresserfassung. Der Befehl 700 stellt einen Vorladebefehl oder einen anderen Befehl dar, den ein System verwenden kann, um auszulösen, dass eine Speichervorrichtung eine Adresse für eine anschließende DRFM-Abwehr erfasst.
  • Codieren 710 stellt die Befehlscodierung dar, wie etwa eines Vorladebefehls, RDA-Befehls, WRA-Befehls oder eines anderen Befehls. Es versteht sich, dass Vorladen ein guter Kandidat ist, um eine Adresserfassung auszulösen, da ein Speicherzugriff in der Regel von einem Vorladebefehl begleitet ist und der Vorladebefehl Adressinformationen beinhaltet. Es versteht sich, dass andere Befehle, einschließlich kundenspezifischer Befehle, verwendet werden können, um eine Adresse zur Erfassung anzugeben. Adresse 720 stellt die Adressinformationen für den Befehl 700 dar.
  • Erfassen 730 stellt ein Feld, wie etwa ein Bit oder eine Gruppe von Bits, in dem Befehl dar, um anzugeben, dass die Speichervorrichtung die Adresse 720 erfassen sollte. Wenn Erfassen 730 auf wahr gestellt ist oder anderweitig Erfassen angibt, speichert die Speichervorrichtung die Zeilenadresse, die in der Adresse 720 angegeben ist, um sie bei dem nächsten DRFM zu verwenden, der die Bank betrifft, an welche der Befehl 700 gerichtet ist.
  • 8 ist ein Flussdiagramm eines Beispiels für einen Prozess zur konstanten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen. Der Prozess 800 stellt einen Prozess zum Randomisieren der Erzeugung eines DRFM-Befehls für ein System gemäß dem Beispiel für das System 100 oder das System 200 dar.
  • Ein Steuerschaltkreis der Speichersteuerung detektiert bei 802 einen Aktivierungsbefehl für eine Bank eines Speichers. In einem Beispiel erzeugt der Steuerschaltkreis bei 804 eine Angabe, jede Aktivierungsadresse zu erfassen. Die Speichersteuerung kann eine Angabe an den Speicher senden, die Adresse zur Verwendung mit einem anschließenden DRFM-Befehl zu erfassen.
  • Der Steuerschaltkreis kann bei 806 auf randomisierte Weise bestimmen, ob ein DRFM-Befehl zur Abwehr gesendet werden soll. Die Randomisierung bedeutet, dass die Frequenz des Sendens von DRFM-Befehlen variiert, und somit führt nicht jeder Aktivierungsbefehl zum Senden eines DRFM-Befehls (z. B. DRFMab, DRFMsb.) Wenn der Steuerschaltkreis bei 808 am NEIN-Zweig bestimmt, den DRFM-Befehl nicht zu senden, fährt der Steuerschaltkreis fort, bei 802 Aktivierungsbefehle zu überwachen.
  • Wenn der Steuerschaltkreis bei 808 am JA-Zweig bestimmt, einen DRFM-Befehl zu senden, kann der Befehl auslösen, dass eine Speichervorrichtung bei 810 eine Rowhammer-Abwehr für mehrere Bänke in Reaktion auf den randomisierten DRFM-Befehl durchführt. Die für die verschiedenen Bänke verwendeten Adressen sind die Adresse, die in Reaktion auf den Steuerschaltkreis erfasst wurde, der bei 804 die Angabe erzeugt, jede Aktivierungsadresse zu erfassen. Das Erfassen jeder Adresse stellt eine sehr hohe Wahrscheinlichkeit bereit, dass jede Bank, die von dem DRFM-Befehl betroffen ist, eine Adresse aufweist, die sie als die Grundlage für eine Zielzeilenauffrischung zur Rowhammer-Abwehr verwenden kann.
  • 9 ist ein Flussdiagramm eines Beispiels für einen Prozess zur randomisierten Adresserfassung und einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen. Der Prozess 900 stellt einen Prozess zum Randomisieren der Erzeugung eines DRFM-Befehls und zum Randomisieren der Erfassung von Adressen zur Verwendung mit dem DRFM-Befehl für ein System gemäß einem Beispiel des Systems 100 oder des Systems 200 dar.
  • Ein Steuerschaltkreis der Speichersteuerung detektiert bei 902 einen Aktivierungsbefehl für eine Bank eines Speichers. In einem Beispiel bestimmt der Steuerschaltkreis bei 904 basierend auf erhaltenen Aktivierungsbefehlen, ob eine Adresserfassung für die detektierte Aktivierung anzugeben ist. Die Speichersteuerung kann eine Angabe an den Speicher senden, die Adresse zur Verwendung mit einem anschließenden DRFM-Befehl zu erfassen.
  • Wenn der Steuerschaltkreis bei 906 am JA-Zweig bestimmt, auszulösen, dass die Speichervorrichtung die Adresse erfassen soll, kann der Steuerschaltkreis bei 908 eine Angabe erzeugen, die an die Speichervorrichtung zu senden ist, um die Adresse für den detektierten Aktivierungsbefehl zu erfassen. Nach dem Erzeugen der Erfassungsangabe bei 908 oder wenn der Steuerschaltkreis bei 906 am NEIN-Zweig bestimmt, nicht auszulösen, dass die Speichervorrichtung die Adresse erfassen soll, kann der Steuerschaltkreis bei 910 auf randomisierte Weise bestimmen, ob ein DRFM-Befehl zur Abwehr gesendet werden soll. Die Randomisierung bedeutet, dass die Frequenz des Sendens von DRFM-Befehlen variiert, und somit führt nicht jeder Aktivierungsbefehl zum Senden eines DRFM-Befehls (z. B. DRFMab, DRFMsb.) Wenn der Steuerschaltkreis bei 912 am NEIN-Zweig bestimmt, den DRFM-Befehl nicht zu senden, fährt der Steuerschaltkreis fort, bei 902 Aktivierungsbefehle zu überwachen.
  • Wenn der Steuerschaltkreis bei 912 am JA-Zweig bestimmt, einen DRFM-Befehl zu senden, kann der Befehl auslösen, dass eine Speichervorrichtung bei 914 eine Rowhammer-Abwehr für mehrere Bänke in Reaktion auf den randomisierten DRFM-Befehl durchführt. Die für die verschiedenen Bänke verwendeten Adressen sind die Adresse, die in Reaktion darauf erfasst wurde, dass der Steuerschaltkreis bei 908 die Angabe erzeugt hat, Aktivierungsadressen zu erfassen.
  • 10 ist ein Flussdiagramm eines Beispiels für einen Prozess zur randomisierten Adresserfassung nach einer ersten Adresserfassung sowie einer randomisierten DRFM-Auswahl basierend auf einem Überwachen von Aktivierungen. Der Prozess 1000 stellt einen Prozess zum Randomisieren der Erzeugung eines DRFM-Befehls und zum Randomisieren der Erfassung von Adressen zur Verwendung mit dem DRFM-Befehl für ein System gemäß einem Beispiel von System 100 oder System 200 dar.
  • Ein Steuerschaltkreis der Speichersteuerung detektiert bei 1002 einen Aktivierungsbefehl für eine Bank eines Speichers. In einem Beispiel bestimmt der Steuerschaltkreis bei 1004 basierend auf erhaltenen Aktivierungsbefehlen, ob eine Adresserfassung für die detektierte Aktivierung anzugeben ist. In einem Beispiel bestimmt der Steuerschaltkreis bei 1006 auch, ob die detektierte Aktivierung die erste Aktivierung für eine Bank ist, seit der letzte DRFM-Befehl ausgegeben wurde.
  • Der Steuerschaltkreis kann bei 1008 bestimmen, ob eine der Bedingungen erfüllt ist. Wenn der Steuerschaltkreis bei 1010 am JA-Zweig bestimmt, auszulösen, dass die Speichervorrichtung die Adresse erfassen soll, kann der Steuerschaltkreis bei 1012 eine Angabe erzeugen, die an die Speichervorrichtung zu senden ist, um die Adresse für den detektierten Aktivierungsbefehl zu erfassen. Nach dem Erzeugen der Erfassungsangabe bei 1012 oder wenn der Steuerschaltkreis bei 1010 am NEIN-Zweig bestimmt, nicht auszulösen, dass die Speichervorrichtung die Adresse erfassen soll, kann der Steuerschaltkreis bei 1014 auf randomisierte Weise bestimmen, ob ein DRFM-Befehl zur Abwehr gesendet werden soll. Die Randomisierung bedeutet, dass die Frequenz des Sendens von DRFM-Befehlen variiert, und somit führt nicht jeder Aktivierungsbefehl zum Senden eines DRFM-Befehls (z. B. DRFMab, DRFMsb.) Wenn der Steuerschaltkreis bei 1016 am NEIN-Zweig bestimmt, den DRFM-Befehl nicht zu senden, fährt der Steuerschaltkreis fort, bei 1002 Aktivierungsbefehle zu überwachen.
  • Wenn der Steuerschaltkreis bei 1016 am JA-Zweig bestimmt, einen DRFM-Befehl zu senden, kann der Befehl auslösen, dass eine Speichervorrichtung bei 1018 eine Rowhammer-Abwehr für mehrere Bänke in Reaktion auf den randomisierten DRFM-Befehl durchführt. Die für die verschiedenen Bänke verwendeten Adressen sind die Adresse, die in Reaktion darauf erfasst wurde, dass der Steuerschaltkreis bei 1012 die Angabe erzeugt hat, Aktivierungsadressen zu erfassen.
  • 11 ist ein Blockdiagramm eines Beispiels für ein Speicherteilsystem, in welchem eine randomisierte DRFM-Auswahl implementiert werden kann. Das System 1100 beinhaltet einen Prozessor und Elemente eines Speicherteilsystems in einer Rechenvorrichtung. Das System 1100 stellt ein System gemäß einem Beispiel für das System 100 oder das System 200 dar.
  • In einem Beispiel beinhaltet die Speichersteuerung 1120 eine DRFM-Engine 1190. Die DRFM-Engine 1190 ermöglicht, dass die Speichersteuerung 1120 die Auswahl einer Aktivierungsadresse randomisiert, um einen DRFM-Befehl für die Speichervorrichtung 1140 auszugeben, um eine Rowhammer-Abwehr durchzuführen. Der DRFM-Befehl gilt für mehrere Bänke einer Speichervorrichtung 1140. Die Speichervorrichtung 1140 führt die Rowhammer-Abwehr für jede Bank basierend auf einer für die Bank erfassten Adresse aus. In einem Beispiel randomisiert die Speichersteuerung 1120 auch die Erfassung der Adresse mit der DRFM-Engine 1190 für die Bänke zur Verwendung mit dem DRFM-Befehl.
  • Der Prozessor 1110 stellt eine Verarbeitungseinheit einer Rechenplattform dar, die ein Betriebssystem (OS) und Anwendungen ausführen kann, die gemeinsam als der Host oder der Benutzer des Speichers bezeichnet werden können. Das OS und die Anwendungen führen Operationen aus, die zu Speicherzugriffen führen. Der Prozessor 1110 kann einen oder mehrere separate Prozessoren beinhalten. Jeder separate Prozessor kann eine einzelne Verarbeitungseinheit, eine Mehrkern-Verarbeitungseinheit oder eine Kombination davon beinhalten. Die Verarbeitungseinheit kann ein Primärprozessor, wie etwa eine CPU (central processing unit - zentrale Verarbeitungseinheit), ein Peripherieprozessor, wie etwa eine GPU (graphics processing unit - Grafikverarbeitungseinheit), oder eine Kombination davon sein. Die Speicherzugriffe können auch durch Vorrichtungen, wie etwa eine Netzwerksteuerung oder eine Festplattensteuerung, initiiert werden. Derartige Vorrichtungen können bei einigen Systemen in den Prozessor integriert sein oder über einen Bus (z. B. PCIexpress) oder eine Kombination davon an den Prozessor angeschlossen sein. Das System 1100 kann als ein SOC (System on a Chip - Ein-Chip-System) implementiert sein oder mit eigenständigen Komponenten implementiert sein.
  • Eine Bezugnahme auf Speichervorrichtungen kann auf verschiedene Speichertypen anwendbar sein. Die Speichervorrichtungen beziehen sich oftmals auf flüchtige Speichertechnologien. Flüchtiger Speicher ist ein Speicher, dessen Zustand (und somit die darin gespeicherten Daten) unbestimmt ist, wenn eine Stromversorgung zur Vorrichtung unterbrochen wird. Nichtflüchtiger Speicher bezieht sich auf einen Speicher, dessen Zustand selbst bei Unterbrechung einer Leistungszufuhr zur Vorrichtung festgelegt ist. Dynamischer flüchtiger Speicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um einen Zustand beizubehalten. Ein Beispiel für dynamischen flüchtigen Speicher beinhaltet DRAM (dynamic random-access memory - dynamischen Direktzugriffsspeicher) oder eine Variante davon, wie etwa synchronen DRAM (SDRAM). Ein Speicherteilsystem, wie es hier beschrieben wird, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie etwa DDR4 (Double Data Rate Version 4, JESD79-4, ursprünglich veröffentlicht im September 2012 von JEDEC (Joint Electron Device Engineering Council, jetzt die JEDEC Solid State Technology Association), LPDDR4 (Low Power DDR 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, JESD235A, ursprünglich veröffentlicht von JEDEC im November 2015), DDR5 (DDR Version 5, ursprünglich veröffentlicht von JEDEC im Juli 2020), LPDDR5 (LPDDR Version 5, JESD209-5, ursprünglich veröffentlicht durch JEDEC im Februar 2019), HBM2 ((HBM Version 2), gegenwärtig in Erörterung durch den JEDEC) oder andere oder Kombinationen von Speichertechnologien und Technologien basierend auf Ableitungen oder Erweiterungen dieser Spezifikationen.
  • Die Speichersteuerung 1120 stellt einen oder mehrere Speichersteuerungsschaltkreise oder -vorrichtungen für das System 1100 dar. Die Speichersteuerung 1120 stellt eine Steuerlogik dar, die Speicherzugriffsbefehle in Reaktion auf die Ausführung von Operationen durch den Prozessor 1110 erzeugt. Die Speichersteuerung 1120 greift auf eine oder mehrere Speichervorrichtungen 1140 zu. Die Speichervorrichtungen 1140 können DRAM-Vorrichtungen gemäß einer beliebigen der oben genannten sein. In einem Beispiel werden die Speichervorrichtungen 1140 als unterschiedliche Kanäle organisiert und verwaltet, wobei jeder Kanal mit Bussen und Signalleitungen gekoppelt ist, die ihrerseits parallel mit mehreren Speichervorrichtungen gekoppelt sind. Jeder Kanal ist unabhängig betreibbar. Somit wird auf jeden Kanal unabhängig zugegriffen und er wird unabhängig gesteuert, und die Zeitgebung, die Datenübertragung, der Befehls- und Adressaustausch und andere Operationen sind für jeden Kanal separat. Eine Kopplung kann sich auf eine elektrische Kopplung, eine kommunikative Kopplung, eine physische Kopplung oder eine Kombination aus diesen beziehen. Eine physische Kopplung kann einen direkten Kontakt beinhalten. Die elektrische Kopplung beinhaltet eine Schnittstelle oder Zwischenverbindung, die einen elektrischen Fluss zwischen den Komponenten oder eine Signalisierung zwischen den Komponenten oder beides erlaubt. Eine kommunikative Kopplung beinhaltet Verbindungen, einschließlich drahtgebundener oder drahtloser Verbindungen, die es den Komponenten ermöglichen, Daten auszutauschen.
  • In einem Beispiel werden Einstellungen für jeden Kanal durch separate Modusregister oder andere Registereinstellungen gesteuert. In einem Beispiel verwaltet jede Speichersteuerung 1120 einen separaten Speicherkanal, obwohl das System 1100 so konfiguriert sein kann, dass es mehrere Kanäle aufweist, die von einer einzigen Steuerung verwaltet werden, oder dass es mehrere Steuerungen auf einem einzigen Kanal aufweist. In einem Beispiel ist die Speichersteuerung 1120 Teil des Host-Prozessors 1110, wie etwa eine Logik, die auf demselben Die implementiert ist oder in demselben Gehäuseraum implementiert ist wie der Prozessor.
  • Die Speichersteuerung 1120 beinhaltet eine E/A-Schnittstellenlogik 1122 zum Koppeln mit einem Speicherbus, wie etwa einem Speicherkanal, wie oben erwähnt wurde. Die E/A-Schnittstellenlogik 1122 (sowie die E/A-Schnittstellenlogik 1142 der Speichervorrichtung 1140) kann Stifte, Kontaktfelder, Verbinder, Signalleitungen, Leiterbahnen oder Drähte oder andere Hardware zum Verbinden der Vorrichtungen oder eine Kombination von diesen beinhalten. Die E/A-Schnittstellenlogik 1122 kann eine Hardwareschnittstelle beinhalten. Wie dargestellt, beinhaltet die E/A-Schnittstellenlogik 1122 zumindest Treiber/Sendeempfänger für Signalleitungen. Üblicherweise sind Drähte innerhalb einer IC-Schnittstelle über ein Kontaktfeld, einen Stift oder einen Verbinder mit Schnittstellensignalleitungen oder Leiterbahnen oder anderen Drähten zwischen Vorrichtungen gekoppelt. Die E/A-Schnittstellenlogik 1122 kann Treiber, Empfänger, Sendeempfänger oder Endabschlüsse oder andere Schaltungsanordnungen oder Kombinationen von Schaltungsanordnungen zum Austauschen von Signalen auf den Signalleitungen zwischen den Vorrichtungen beinhalten. Das Austauschen von Signalen beinhaltet mindestens eines von einem Senden oder einem Empfangen. Obwohl eine Kopplung der E/A 1122 von der Speichersteuerung 1120 mit der E/A 1142 der Speichervorrichtung 1140 gezeigt wird, versteht es sich, dass bei einer Implementierung des Systems 1100, bei der parallel auf Gruppen von Speichervorrichtungen 1140 zugegriffen wird, mehrere Speichervorrichtungen E/A-Schnittstellen zu derselben Schnittstelle der Speichersteuerung 1120 beinhalten können. In einer Implementierung des Systems 1100, das ein oder mehrere Speichermodule 1170 beinhaltet, kann die E/A 1142 eine Schnittstellenhardware des Speichermoduls zusätzlich zur Schnittstellenhardware in der Speichervorrichtung selbst beinhalten. Andere Speichersteuerungen 1120 weisen separate Schnittstellen zu anderen Speichervorrichtungen 1140 auf.
  • Der Bus zwischen der Speichersteuerung 1120 und den Speichervorrichtungen 1140 kann als mehrere Signalleitungen implementiert sein, welche die Speichersteuerung 1120 mit den Speichervorrichtungen 1140 koppeln. Der Bus kann in der Regel mindestens einen Takt (CLK) 1132, eine Befehls-/Adresseinheit (CMD) 1134 und Schreibdaten (DQ) und Lesedaten (DQ) 1136 und null oder mehr andere Signalleitungen 1138 beinhalten. In einem Beispiel kann ein Bus oder eine Verbindung zwischen der Speichersteuerung 1120 und dem Speicher als ein Speicherbus bezeichnet werden. In einem Beispiel ist der Speicherbus ein Mehrpunktbus. Die Signalleitungen für die CMD können als „C/A-Bus“ (oder ADD/CMD-Bus oder mit irgendeiner anderen Bezeichnung, die eine Übertragung von Befehlen (C oder CMD) und Adress- (A- oder ADD-)Informationen angibt) bezeichnet werden und die Signalleitungen für Schreib- und Lese-DQ können als „Datenbus“ bezeichnet werden. In einem Beispiel weisen unabhängige Kanäle unterschiedliche Taktsignale, C/A-Busse, Datenbusse und andere Signalleitungen auf. Somit kann das System 1100 betrachtet werden, als dass es in dem Sinne, dass ein unabhängiger Schnittstellenpfad als ein separater Bus betrachtet werden kann, mehrere „Busse“ aufweist. Es versteht sich, dass ein Bus zusätzlich zu den explizit gezeigten Leitungen mindestens eine von Strobe-Signalisierungsleitungen, Warnleitungen, Hilfsleitungen, andere Signalleitungen oder eine Kombination davon beinhalten kann. Es versteht sich zudem, dass serielle Bustechnologien zur Verbindung zwischen der Speichersteuerung 1120 und den Speichervorrichtungen 1140 verwendet werden können. Ein Beispiel für eine serielle Bustechnologie ist die 8B 10B-Codierung und -Übertragung von Hochgeschwindigkeitsdaten mit eingebettetem Takt über ein einziges Differenzpaar von Signalen in jeder Richtung. In einem Beispiel stellt die CMD 1134 Signalleitungen dar, die parallel mit mehreren Speichervorrichtungen gemeinsam genutzt werden. In einem Beispiel nutzen mehrere Speichervorrichtungen die Codierbefehlssignalleitungen der CMD 1134 gemeinsam und weisen jeweils eine separate Chipauswahl- (CS_n-)Signalleitung auf, um individuelle Speichervorrichtungen auszuwählen.
  • Es versteht sich, dass in dem Beispiel für das System 1100 der Bus zwischen der Speichersteuerung 1120 und den Speichervorrichtungen 1140 einen untergeordneten Befehlsbus CMD 1134 und einen untergeordneten Bus zum Transportieren der Schreib- und Lesedaten, DQ 1136, beinhaltet. In einem Beispiel kann der Datenbus bidirektionale Leitungen für Lesedaten und für Schreib-/Befehlsdaten beinhalten. In einem anderen Beispiel kann der untergeordnete Bus DQ 1136 unidirektionale Schreibsignalleitungen zum Schreiben von Daten von dem Host zu dem Speicher beinhalten und kann unidirektionale Leitungen zum Lesen von Daten von dem Speicher zu dem Host beinhalten. Gemäß der gewählten Speichertechnologie und der gewählten Systemausgestaltung können andere Signalleitungen 1138 einen Bus oder Teilbus begleiten, wie etwa die Strobeleitungen DQS. Basierend auf einer Ausgestaltung des Systems 1100 oder einer Implementierung, falls eine Ausgestaltung mehrere Implementierungen unterstützt, kann der Datenbus mehr oder weniger Bandbreite pro Speichervorrichtung 1140 aufweisen. Zum Beispiel kann der Datenbus Speichervorrichtungen unterstützen, die entweder eine x4-Schnittstelle, eine x8-Schnittstelle, eine x16-Schnittstelle oder eine andere Schnittstelle aufweisen. Die Konvention „xW“, wobei W eine ganze Zahl ist, die sich auf eine Schnittstellengröße oder eine Breite der Schnittstelle der Speichervorrichtung 1140 bezieht, stellt eine Anzahl von Signalleitungen zum Austauschen von Daten mit der Speichersteuerung 1120 dar. Die Schnittstellengröße der Speichervorrichtungen ist ein steuernder Faktor dahingehend, wie viele Speichervorrichtungen gleichzeitig pro Kanal in dem System 1100 verwendet werden können oder parallel mit denselben Signalleitungen gekoppelt werden können. In einem Beispiel können Speichervorrichtungen mit hoher Bandbreite, breite Schnittstellenvorrichtungen oder gestapelte Speicherkonfigurationen oder Kombinationen davon breitere Schnittstellen ermöglichen, wie etwa eine x128-Schnittstelle, eine x256-Schnittstelle, eine x512-Schnittstelle, eine x1024-Schnittstelle oder eine andere Datenbusschnittstellenbreite.
  • In einem Beispiel tauschen die Speichervorrichtungen 1140 und die Speichersteuerung 1120 Daten über den Datenbus in einem Burst oder einer Sequenz von aufeinander folgenden Datenübertragungen aus. Der Burst entspricht einer Anzahl von Übertragungszyklen, die mit einer Busfrequenz in Beziehung steht. In einem Beispiel kann der Übertragungszyklus ein ganzer Taktzyklus für Übertragungen sein, die auf demselben Takt oder an derselben Strobesignalflanke (z. B. an der aufsteigenden Flanke) stattfinden. In einem Beispiel ist jeder Taktzyklus, der sich auf einen Zyklus des Systemtakts bezieht, in mehrere Einheitsintervalle (UIs - unit intervals) getrennt, wobei jedes UI ein Übertragungszyklus ist. Zum Beispiel lösen Übertragungen mit doppelter Datenrate auf beiden Flanken des Taktsignals aus (z. B. steigend und fallend). Ein Burst kann eine konfigurierte Anzahl von UIs lang sein, was eine in einem Register gespeicherte Konfiguration sein kann, oder er kann spontan ausgelöst werden. Zum Beispiel kann eine Sequenz von acht aufeinander folgenden Übertragungsperioden als eine Burstlänge acht (BL8) angesehen werden und jede Speichervorrichtung 1140 kann Daten in jedem UI übertragen. Somit kann eine x8-Speichervorrichtung, die mit BL8 arbeitet, 64 Datenbits übertragen (8 Datensignalleitungen mal 8 Datenbits, die pro Leitung über den Burst übertragen werden). Es versteht sich, dass dieses einfache Beispiel lediglich eine Veranschaulichung ist und nicht einschränkend ist.
  • Die Speichervorrichtungen 1140 stellen Speicherressourcen für das System 1100 dar. In einem Beispiel ist jede Speichervorrichtung 1140 ein separater Speicher-Die. In einem Beispiel kann jede Speichervorrichtung 1140 mit mehreren (z. B. 2) Kanälen pro Vorrichtung oder Die eine Schnittstelle bilden. Jede Speichervorrichtung 1140 beinhaltet die E/A-Schnittstellenlogik 1142, die eine durch die Implementierung der Vorrichtung bestimmte Bandbreite aufweist (z. B. x16 oder x8 oder eine andere Schnittstellenbandbreite). Die E/A-Schnittstellenlogik 1142 ermöglicht, dass die Speichervorrichtungen mit der Speichersteuerung 1120 eine Schnittstelle bilden. Die E/A-Schnittstellenlogik 1142 kann eine Hardwareschnittstelle beinhalten und kann der E/A 1122 der Speichersteuerung entsprechen, allerdings am Speichervorrichtungsende. In einem Beispiel sind mehrere Speichervorrichtungen 1140 parallel mit denselben Befehls- und Datenbussen verbunden. In einem anderen Beispiel sind mehrere Speichervorrichtungen 1140 parallel mit demselben Befehlsbus verbunden sowie mit unterschiedlichen Datenbussen verbunden. Das System 1100 kann beispielsweise mit mehreren parallel geschalteten Speichervorrichtungen 1140 konfiguriert sein, wobei jede Speichervorrichtung auf einen Befehl reagiert und auf jeweilige interne Speicherressourcen 1160 zugreift. Für eine Schreiboperation kann eine einzelne Speichervorrichtung 1140 einen Teil des Gesamtdatenworts schreiben und für eine Leseoperation kann eine individuelle Speichervorrichtung 1140 einen Teil des Gesamtdatenworts abrufen. Die restlichen Bits des Worts werden parallel von anderen Speichervorrichtungen bereitgestellt oder empfangen.
  • In einem Beispiel sind die Speichervorrichtungen 1140 direkt auf einer Hauptplatine oder Host-Systemplattform (z. B. einer PCB (gedruckten Leiterplatte), auf der der Prozessor 1110 angeordnet ist) einer Rechenvorrichtung angeordnet. In einem Beispiel können die Speichervorrichtungen 1140 in Speichermodulen 1170 organisiert sein. In einem Beispiel stellen die Speichermodule 1170 doppelreihige Speichermodule (DIMMs) dar. In einem Beispiel stellen die Speichermodule 1170 eine andere Organisation mehrerer Speichervorrichtungen dar, um mindestens einen Teil einer Zugriffs- oder Steuerungsschaltungsanordnung gemeinsam zu nutzen, die ein separater Schaltkreis, eine separate Vorrichtung oder eine separate Platine von der Host-Systemplattform sein kann. Die Speichermodule 1170 können mehrere Speichervorrichtungen 1140 beinhalten und die Speichermodule können eine Unterstützung für mehrere separate Kanäle zu den in ihnen angeordneten beinhalteten Speichervorrichtungen beinhalten. In einem anderen Beispiel können die Speichervorrichtungen 1140 in das gleiche Gehäuse wie die Speichersteuerung 1120 integriert sein, wie etwa durch Techniken wie ein Mehrchipmodul (MCM), eine Gehäuse-auf-Gehäuse-Technik, eine Silicium-Durchkontaktierungstechnik (Through-Silicon-Via - TSV) oder andere Techniken oder Kombinationen davon. Auf ähnliche Weise können in einem Beispiel mehrere Speichervorrichtungen 1140 in Speichermodule 1170 integriert sein, die ihrerseits in das gleiche Gehäuse wie die Speichersteuerung 1120 integriert sein können. Es versteht sich, dass die Speichersteuerung 1120 für diese und andere Implementierungen ein Teil des Host-Prozessors 1110 sein kann.
  • Die Speichervorrichtungen 1140 beinhalten jeweils ein oder mehrere Speicherarrays 1160. Das Speicherarray 1160 stellt adressierbare Kurz- oder Dauerspeicherorte für Daten dar. In der Regel wird das Speicherarray 1160 als Datenzeilen verwaltet, auf die über eine Wortleitungs- (Zeilen-) und eine Bitleitungssteuerung (einzelne Bits innerhalb einer Zeile) zugegriffen wird. Das Speicherarray 1160 kann als separate Kanäle, Ränge und Bänke des Speichers organisiert sein. Die Kanäle können sich auf unabhängige Steuerpfade zu Speicherorten innerhalb der Speichervorrichtungen 1140 beziehen. Die Ränge können sich auf gemeinsame Orte über mehrere parallele Speichervorrichtungen (z. B. gleiche Zeilenadressen innerhalb verschiedener Vorrichtungen) hinweg beziehen. Die Bänke können sich auf Teilanordnungen von Speicherorten innerhalb einer Speichervorrichtung 1140 beziehen. In einem Beispiel sind Speicherbänke in Teilbänke mit mindestens einem Teil der gemeinsam genutzten Schaltungsanordnung (z. B. Treiber, Signalleitungen, Steuerlogik) für die Teilbänke unterteilt, was ein separates Adressieren und Zugreifen ermöglicht. Es versteht sich, dass sich Kanäle, Ränge, Bänke, Teilbänke, Bankgruppen oder andere Organisationen der Speicherorte und Kombinationen der Organisationen in ihrer Anwendung auf physische Ressourcen überlagern können. Zum Beispiel kann auf die gleichen physischen Speicherorte über einen spezifischen Kanal als eine spezifische Bank zugegriffen werden, die auch zu einem Rang gehören kann. Somit ist die Organisation von Speicherressourcen auf eine einschließende und nicht ausschließende Weise zu verstehen.
  • In einem Beispiel beinhalten die Speichervorrichtungen 1140 ein oder mehrere Register 1144. Das Register 1144 stellt eine oder mehrere Massenspeichervorrichtungen oder Massenspeicherorte dar, die eine Konfiguration oder Einstellungen für den Betrieb der Speichervorrichtung bereitstellen. In einem Beispiel kann das Register 1144 einen Massenspeicherort für die Speichervorrichtung 1140 bereitstellen, um Daten für den Zugriff durch die Speichersteuerung 1120 als Teil einer Steuer- oder Verwaltungsoperation zu speichern. In einem Beispiel beinhaltet das Register 1144 ein oder mehrere Modusregister. In einem Beispiel beinhaltet das Register 1144 ein oder mehrere Mehrzweckregister. Die Konfiguration von Orten innerhalb des Registers 1144 kann die Speichervorrichtung 1140 konfigurieren, um in unterschiedlichen „Modi“ zu arbeiten, wobei Befehlsinformationen unterschiedliche Operationen innerhalb der Speichervorrichtung 1140 basierend auf dem Modus auslösen können. Zusätzlich oder alternativ dazu können unterschiedliche Modi auch abhängig von dem Modus unterschiedliche Operationen von Adressinformations- oder anderen Signalleitungen auslösen. Die Einstellungen des Registers 1144 können eine Konfiguration für E/A-Einstellungen (z. B. eine Zeitsteuerung, eine Terminierung oder eine ODT (Die-interne Terminierung) 1146, eine Treiberkonfiguration oder andere E/A-Einstellungen) angeben.
  • In einem Beispiel beinhaltet die Speichervorrichtung 1140 die ODT 1146 als Teil der Schnittstellenhardware, die mit der E/A 1142 assoziiert ist. Die ODT 1146 kann so konfiguriert sein, wie es vorstehend erwähnt ist, und sie kann Einstellungen für die Impedanz bereitstellen, die für spezifizierte Signalleitungen auf die Schnittstelle anzuwenden ist. In einem Beispiel wird die ODT 1146 auf DQ-Signalleitungen angewendet. In einem Beispiel wird die ODT 1146 auf Befehlssignalleitungen angewendet. In einem Beispiel wird die ODT 1146 auf Adresssignalleitungen angewendet. In einem Beispiel kann die ODT 1146 auf eine beliebige Kombination der Vorhergehenden angewendet werden. Die ODT-Einstellungen können basierend darauf geändert werden, ob eine Speichervorrichtung ein ausgewähltes Ziel einer Zugriffsoperation oder eine Nicht-Zielvorrichtung ist. Die Einstellungen der ODT 1146 können die Zeitsteuerung und Reflexionen der Signalisierung auf den terminierten Leitungen beeinflussen. Eine sorgfältige Steuerung über die ODT 1146 kann einen Betrieb mit höherer Geschwindigkeit und mit einer verbesserten Anpassung der angelegten Impedanz und Last ermöglichen. Die ODT 1146 kann auf spezielle Signalleitungen der E/A-Schnittstelle 1142, 1122 angewendet werden (zum Beispiel eine ODT für DQ-Leitungen oder eine ODT für CA-Leitungen) und wird nicht notwendigerweise auf alle Signalleitungen angewendet.
  • Die Speichervorrichtung 1140 beinhaltet eine Steuerung 1150, die eine Steuerlogik innerhalb der Speichervorrichtung zum Steuern von internen Operationen innerhalb der Speichervorrichtung darstellt. Zum Beispiel decodiert die Steuerung 1150 Befehle, die von der Speichersteuerung 1120 gesendet werden, und erzeugt interne Operationen, um die Befehle auszuführen oder zu erfüllen. Die Steuerung 1150 kann als eine interne Steuerung bezeichnet werden und ist von der Speichersteuerung 1120 des Hosts getrennt. Die Steuerung 1150 kann basierend auf dem Register 1144 bestimmen, welcher Modus ausgewählt wird, und die interne Ausführung von Operationen für den Zugriff auf die Speicherressourcen 1160 oder andere Operationen basierend auf dem ausgewählten Modus konfigurieren. Die Steuerung 1150 erzeugt Steuersignale zum Steuern des Leitens von Bits innerhalb der Speichervorrichtung 1140, um eine passende Schnittstelle für den ausgewählten Modus bereitzustellen und einen Befehl an die passenden Speicherorte oder -adressen zu leiten. Die Steuerung 1150 beinhaltet eine Befehlslogik 1152, die eine Befehlscodierung decodieren kann, die auf Befehls- und Adresssignalleitungen empfangen wird. Somit kann die Befehlslogik 1152 ein Befehlsdecodierer sein oder diesen beinhalten. Mit der Befehlslogik 1152 kann die Speichervorrichtung Befehle identifizieren und interne Operationen zum Ausführen von angeforderten Befehlen erzeugen.
  • Unter erneuter Bezugnahme auf die Speichersteuerung 1120 beinhaltet die Speichersteuerung 1120 eine Befehls- (CMD-)Logik 1124, die eine Logik oder eine Schaltungsanordnung zum Erzeugen von an die Speichervorrichtungen 1140 zu sendenden Befehlen darstellt. Die Erzeugung der Befehle kann sich auf den Befehl vor dem Planen oder die Vorbereitung von in einer Warteschlange eingereihten Befehlen beziehen, die bereit sind, gesendet zu werden. Im Allgemeinen beinhaltet die Signalisierung in Speicherteilsystemen Adressinformationen innerhalb des Befehls oder diesen begleitend, um einen oder mehrere Speicherorte anzugeben oder auszuwählen, an denen die Speichervorrichtungen den Befehl ausführen sollen. In Reaktion auf ein Planen von Transaktionen für die Speichervorrichtung 1140 kann die Speichersteuerung 1120 Befehle über die E/A 1122 ausgeben, um zu bewirken, dass die Speichervorrichtung 1140 die Befehle ausführt. In einem Beispiel empfängt und decodiert die Steuerung 1150 der Speichervorrichtung 1140 Befehls- und Adressinformationen, die über die E/A 1142 von der Speichersteuerung 1120 empfangen werden. Basierend auf den empfangenen Befehls- und Adressinformationen kann die Steuerung 1150 die Zeitsteuerung von Operationen der Logik und der Schaltungsanordnung innerhalb der Speichervorrichtung 1140 steuern, um die Befehle auszuführen. Die Steuerung 1150 ist für die Einhaltung von Standards oder Spezifikationen innerhalb der Speichervorrichtung 1140, wie etwa Zeitsteuerungs- und Signalisierungsanforderungen, verantwortlich. Die Speichersteuerung 1120 kann durch eine Zugriffsplanung und -steuerung eine Einhaltung von Standards oder Spezifikationen implementieren.
  • Die Speichersteuerung 1120 beinhaltet einen Ablaufplaner 1130, der eine Logik oder Schaltungsanordnung zum Erzeugen und Ordnen von an die Speichervorrichtung 1140 zu sendenden Transaktionen darstellt. Aus einer Perspektive lässt sich sagen, dass die Hauptfunktion der Speichersteuerung 1120 darin besteht, Speicherzugriffs- und andere Transaktionen an die Speichervorrichtung 1140 zu planen. Ein derartiges Planen kann ein Erzeugen der Transaktionen selbst beinhalten, um die Anforderungen von Daten durch den Prozessor 1110 zu implementieren und die Integrität der Daten beizubehalten (wie z. B. mit Befehlen, die sich auf ein Auffrischen beziehen). Die Transaktionen können einen oder mehrere Befehle beinhalten und zum Übertragen von Befehlen oder Daten oder beiden über einen oder mehrere Zeitsteuerzyklen, wie etwa Taktzyklen oder Einheitsintervallen, führen. Die Transaktionen können zum Zugriff, wie etwa als Lese- oder Schreib- oder verwandte Befehle oder eine Kombination davon, dienen und andere Transaktionen können Speicherverwaltungsbefehle für eine Konfiguration, Einstellungen, eine Datenintegrität oder andere Befehle oder eine Kombination davon beinhalten.
  • Die Speichersteuerung 1120 beinhaltet in der Regel eine Logik, wie etwa den Ablaufplaner 1130, um eine Auswahl und ein Ordnen von Transaktionen zu ermöglichen, um die Leistungsfähigkeit des Systems 1100 zu verbessern. Die Speichersteuerung 1120 kann somit wählen, welche der ausstehenden Transaktionen in welcher Reihenfolge an die Speichervorrichtung 1140 gesendet werden soll, was in der Regel mittels einer weitaus komplexeren Logik als eines einfachen First-In-First-Out-Algorithmus erreicht wird. Die Speichersteuerung 1120 verwaltet die Übertragung der Transaktionen an die Speichervorrichtung 1140 und verwaltet die mit der Transaktion verbundene Zeitsteuerung. In einem Beispiel weisen Transaktionen eine deterministische Zeitsteuerung auf, die durch die Speichersteuerung 1120 verwaltet werden kann und beim Bestimmen, wie die Transaktionen mit dem Ablaufplaner 1130 zu planen sind, verwendet werden kann.
  • In einem Beispiel weist die Speichersteuerung 1120 eine Auffrischungs-(REF-)Logik 1126 auf. Die Auffrischungslogik 1126 kann für Speicherressourcen verwendet werden, die flüchtig sind und aufgefrischt werden müssen, um einen deterministischen Zustand beizubehalten. In einem Beispiel gibt die Auffrischungslogik 1126 einen Ort für die Auffrischung und einen durchzuführenden Auffrischungstyp an. Die Auffrischungslogik 1126 kann eine Selbstauffrischung innerhalb der Speichervorrichtung 1140 auslösen oder durch ein Senden von Auffrischungsbefehlen externe Auffrischungen ausführen, die als Autoauffrischungsbefehle bezeichnet werden können, oder eine Kombination davon ausführen. In einem Beispiel beinhaltet die Steuerung 1150 innerhalb der Speichervorrichtung 1140 eine Auffrischungslogik 1154, um eine Auffrischung innerhalb der Speichervorrichtung 1140 anzuwenden. In einem Beispiel erzeugt die Auffrischungslogik 1154 interne Operationen, um eine Auffrischung gemäß einer externen Auffrischung durchzuführen, die von der Speichersteuerung 1120 empfangen wird. Die Auffrischungslogik 1154 kann bestimmen, ob eine Auffrischung an die Speichervorrichtung 1140 gerichtet ist, und welche Speicherressourcen 1160 in Reaktion auf den Befehl aufzufrischen sind.
  • 12 ist ein Blockdiagramm eines Beispiels für ein Rechensystem, in welchem eine randomisierte DRFM-Auswahl implementiert werden kann. Das System 1200 stellt eine Rechenvorrichtung gemäß einem beliebigen vorliegenden Beispiel dar und kann ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, ein Server, ein Spiel- oder Unterhaltungssteuersystem, eine eingebettete Rechenvorrichtung oder eine andere elektronische Vorrichtung sein.
  • Das System 1200 stellt ein System gemäß einem Beispiel für das System 100 oder das System 200 dar. In einem Beispiel beinhaltet die Speichersteuerung 1222 eine DRFM-Engine 1290. Die DRFM-Engine 1290 ermöglicht, dass die Speichersteuerung 1222 die Auswahl einer Aktivierungsadresse randomisiert, um einen DRFM-Befehl für den Speicher 1230 auszugeben, um eine Rowhammer-Abwehr durchzuführen. Der DRFM-Befehl gilt für mehrere Bänke eines Speichers 1230. Der Speicher 1230 führt die Rowhammer-Abwehr für jede Bank basierend auf einer für die Bank erfassten Adresse aus. In einem Beispiel randomisiert die Speichersteuerung 1222 auch die Erfassung der Adresse für die Bänke mit der DRFM-Engine 1290 zur Verwendung mit dem DRFM-Befehl.
  • Das System 1200 beinhaltet einen Prozessor 1210, der einen beliebigen Typ von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware oder eine Kombination davon beinhalten kann, um eine Verarbeitung oder eine Ausführung von Anweisungen für das System 1200 bereitzustellen. Der Prozessor 1210 kann eine Host-Prozessorvorrichtung sein. Der Prozessor 1210 steuert den Gesamtbetrieb des Systems 1200 und kann Folgendes sein oder beinhalten: einen oder mehrere programmierbare Universal- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikvorrichtungen (PLDs) oder eine Kombination derartiger Vorrichtungen.
  • Das System 1200 beinhaltet Boot/Config 1216, das einen Massenspeicher zum Speichern von Boot-Code (z. B. Basic Input/Output System (BIOS)), Konfigurationseinstellungen, Sicherheitshardware (z. B. Trusted Platform Module (TPM)) oder andere Hardware auf Systemebene darstellt, die außerhalb eines Host-OS arbeitet. Boot/Config 1216 kann eine nichtflüchtige Massenspeichervorrichtung, wie etwa Nurlesespeicher (ROM), Flash-Speicher oder andere Speichervorrichtungen, beinhalten.
  • In einem Beispiel beinhaltet das System 1200 eine Schnittstelle 1212, die mit dem Prozessor 1210 gekoppelt ist und eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite benötigen, wie etwa das Speicherteilsystem 1220 oder die Grafikschnittstellenkomponenten 1240. Die Schnittstelle 1212 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente sein kann oder auf einem Prozessor-Die integriert sein kann. Die Schnittstelle 1212 kann als Schaltkreis in den Prozessor-Die integriert werden oder als eine Komponente in ein System-on-Chip integriert werden. Wo vorhanden, koppelt die Grafikschnittstelle 1240 an Grafikkomponenten an, um einem Benutzer des Systems 1200 eine visuelle Anzeige bereitzustellen. Die Grafikschnittstelle 1240 kann eine eigenständige Komponente oder in den Prozessor-Die oder das System-on-Chip integriert sein. In einem Beispiel kann die Grafikschnittstelle 1240 eine High-Definition(HD)-Anzeige oder eine Ultra-High-Definition(UHD)-Anzeige ansteuern, die einem Benutzer eine Ausgabe bereitstellt. In einem Beispiel kann die Anzeige eine Berührungsbildschirmanzeige beinhalten. In einem Beispiel erzeugt die Grafikschnittstelle 1240 eine Anzeige basierend auf in dem Speicher 1230 gespeicherten Daten oder basierend auf durch den Prozessor 1210 ausgeführten Operationen oder beidem.
  • Das Speicherteilsystem 1220 stellt den Hauptspeicher des Systems 1200 dar und stellt einen Massenspeicher für Code, der durch den Prozessor 1210 auszuführen ist, oder Datenwerte, die beim Ausführen einer Routine zu verwenden sind, bereit. Das Speicherteilsystem 1220 kann eine oder mehrere Varianten von Direktzugriffsspeicher (RAM), wie etwa DRAM, 3DXP (dreidimensionaler Crosspoint) oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen, beinhalten. Der Speicher 1230 speichert und hostet unter anderem das Betriebssystem (OS) 1232, um eine Softwareplattform zur Ausführung von Anweisungen in dem System 1200 bereitzustellen. Außerdem können Anwendungen 1234 auf der Softwareplattform des OS 1232 aus dem Speicher 1230 ausgeführt werden. Die Anwendungen 1234 stellen Programme dar, die ihre eigene Betriebslogik haben, um die Ausführung einer oder mehrerer Funktionen durchzuführen. Die Prozesse 1236 stellen Agenten oder Routinen dar, die dem OS 1232 oder einer oder mehreren Anwendungen 1234 oder einer Kombination derselben zusätzliche Funktionen bereitstellen. Das OS, die Anwendungen 1234 und die Prozesse 1236 stellen Softwarelogik bereit, um dem System 1200 Funktionen bereitzustellen. In einem Beispiel beinhaltet das Speicherteilsystem 1220 eine Speichersteuerung 1222, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 1230 ist. Es versteht sich, dass die Speichersteuerung 1222 ein physischer Teil des Prozessors 1210 oder ein physischer Teil der Schnittstelle 1212 sein könnte. Zum Beispiel kann die Speichersteuerung 1222 eine integrierte Speichersteuerung sein, die in eine Schaltung mit dem Prozessor 1210 integriert ist, wie etwa in den Prozessor-Die oder in ein System-on-Chip integriert.
  • Obwohl dies nicht speziell veranschaulicht ist, versteht es sich, dass das System 1200 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen beinhalten kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder Signalleitungen können kommunikativ oder elektrisch Komponenten zusammenkoppeln oder sowohl kommunikativ als auch elektrisch die Komponenten koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Bridges, Adapter, Steuerungen oder andere Schaltungsanordnungen oder eine Kombination davon beinhalten. Die Busse können zum Beispiel einen oder mehrere aus einem Systembus, einem PCI-(Peripheral Component Interconnect)-Bus, einem HyperTransport- oder Industry-Standard-Architecture(ISA)-Bus, einem SCSI(Small Computer System Interface)-Bus, einem USB(Universal Serial Bus)-Bus, einem anderen Bus oder eine Kombination davon beinhalten.
  • In einem Beispiel beinhaltet das System 1200 eine Schnittstelle 1214, die mit der Schnittstelle 1212 gekoppelt sein kann. Die Schnittstelle 1214 kann eine Schnittstelle mit niedrigerer Geschwindigkeit als die Schnittstelle 1212 sein. In einem Beispiel stellt die Schnittstelle 1214 einen Schnittstellenschaltkreis dar, der eigenständige Komponenten und integrierte Schaltungsanordnungen beinhalten kann. In einem Beispiel sind mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beides mit der Schnittstelle 1214 gekoppelt. Die Netzwerkschnittstelle 1250 stellt dem System 1200 die Möglichkeit bereit, mit fernen Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 1250 kann einen Ethernet-Adapter, Drahtloszwischenverbindungskomponenten, Zellularnetzwerkzwischenverbindungskomponenten, USB(Universal Serial Bus)- oder andere auf drahtgebundenen oder drahtlosen Standards basierende oder proprietäre Schnittstellen beinhalten. Die Netzwerkschnittstelle 1250 kann Daten mit einer fernen Vorrichtung austauschen, was Senden von in einem Speicher gespeicherten Daten oder Empfangen von in einem Speicher zu speichernden Daten beinhalten kann.
  • In einem Beispiel beinhaltet das System 1200 eine oder mehrere Eingabe-/Ausgabe(E/A)-Schnittstellen 1260. Die E/A-Schnittstelle 1260 kann eine oder mehrere Schnittstellenkomponenten beinhalten, durch die ein Benutzer mit dem System 1200 interagiert (zum Beispiel akustisch, alphanumerisch, taktil/berührend oder eine andere Schnittstellenbildung). Die Peripheriegeräteschnittstelle 1270 kann eine beliebige Hardwareschnittstelle beinhalten, die zuvor nicht speziell erwähnt wurde. Peripheriegeräte verweisen im Allgemeinen auf Vorrichtungen, die eine abhängige Verbindung zu dem System 1200 herstellen. Eine abhängige Verbindung ist eine Verbindung, bei der das System 1200 die Softwareplattform oder Hardwareplattform oder beides bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • In einem Beispiel beinhaltet das System 1200 ein Massenspeicherteilsystem 1280 zum Speichern von Daten auf eine nichtflüchtige Weise. In einem Beispiel können sich in bestimmten Systemimplementierungen zumindest bestimmte Komponenten des Massenspeichers 1280 mit Komponenten des Arbeitsspeicherteilsystems 1220 überlappen. Das Massenspeicherteilsystem 1280 beinhaltet eine oder mehrere Massenspeichervorrichtungen 1284, die ein beliebiges herkömmliches Medium zum Speichern von großen Mengen von Daten auf eine nichtflüchtige Weise sein oder dieses beinhalten können, wie etwa einen oder mehrere magnetische, Solid-State-, NAND-, 3DXP- oder optisch basierte Datenträger oder eine Kombination davon. Der Massenspeicher 1284 hält Code oder Anweisungen und Daten 1286 in einem persistenten Zustand (d. h. der Wert wird trotz Unterbrechung der Stromversorgung des Systems 1200 beibehalten). Der Massenspeicher 1284 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 1230 in der Regel der Ausführungs- oder Arbeitsspeicher ist, um dem Prozessor 1210 Anweisungen bereitzustellen. Während der Massenspeicher 1284 nichtflüchtig ist, kann der Speicher 1230 einen flüchtigen Speicher beinhalten (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Stromversorgung zu dem System 1200 unterbrochen wird). In einem Beispiel beinhaltet das Massenspeicherteilsystem 1280 eine Steuerung 1282 zum Bilden einer Schnittstelle mit dem Massenspeicher 1284. In einem Beispiel ist die Steuerung 1282 ein physischer Teil der Schnittstelle 1214 oder des Prozessors 1210 oder kann Schaltungen oder Logik sowohl im Prozessor 1210 als auch in der Schnittstelle 1214 beinhalten.
  • Die Leistungsquelle 1202 liefert Leistung an die Komponenten des Systems 1200. Insbesondere bildet die Leistungsquelle 1202 in der Regel eine Schnittstelle mit einer oder mehreren Leistungsversorgungen 1204 im System 1200, um die Komponenten des Systems 1200 mit Leistung zu versorgen. In einem Beispiel beinhaltet die Leistungsversorgung 1204 einen AC/DC(Wechselstrom/Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Eine solche AC-Leistung kann eine Leistungsquelle 1202 erneuerbarer Energie (z. B. Solarenergie) sein. In einem Beispiel beinhaltet die Leistungsquelle 1202 eine Gleichstromquelle, wie etwa einen externen AC/DC-Wandler. In einem Beispiel beinhaltet die Leistungsquelle 1202 oder die Leistungsversorgung 1204 Drahtlosladehardware zum Laden über die Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle 1202 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
  • 13 ist ein Blockdiagramm eines Beispiels für eine mobile Vorrichtung, in welcher eine randomisierte DRFM-Auswahl implementiert werden kann. Das System 1300 stellt eine mobile Rechenvorrichtung dar, wie etwa ein Rechen-Tablet, ein Mobiltelefon bzw. ein Smartphone, eine am Körper tragbare Rechenvorrichtung oder eine andere mobile Vorrichtung oder eine eingebettete Rechenvorrichtung. Es versteht sich, dass bestimmte der Komponenten allgemein gezeigt werden, aber nicht alle Komponenten einer derartigen Vorrichtung in dem System 1300 gezeigt werden.
  • Das System 1300 stellt ein System gemäß einem Beispiel für das System 100 oder das System 200 dar. In einem Beispiel beinhaltet die Speichersteuerung 1364 eine DRFM-Engine 1390. Die DRFM-Engine 1390 ermöglicht, dass die Speichersteuerung 1364 die Auswahl einer Aktivierungsadresse randomisiert, um einen DRFM-Befehl für den Speicher 1362 auszugeben, um eine Rowhammer-Abwehr durchzuführen. Der DRFM-Befehl gilt für mehrere Bänke eines Speichers 1362. Der Speicher 1362 führt die Rowhammer-Abwehr für jede Bank basierend auf einer für die Bank erfassten Adresse aus. In einem Beispiel randomisiert die Speichersteuerung 1364 auch die Erfassung der Adresse für die Bänke mit der DRFM-Engine 1390 zur Verwendung mit dem DRFM-Befehl.
  • Das System 1300 beinhaltet einen Prozessor 1310, der die primären Verarbeitungsoperationen des Systems 1300 durchführt. Der Prozessor 1310 kann eine Host-Prozessorvorrichtung sein. Der Prozessor 1310 kann eine oder mehrere physische Vorrichtungen, wie etwa Mikroprozessoren, Anwendungsprozessoren, Mikrocontroller, programmierbare Logikvorrichtungen oder andere Verarbeitungselemente, beinhalten. Die durch den Prozessor 1310 durchgeführten Verarbeitungsoperationen beinhalten die Ausführung einer Betriebsplattform oder eines Betriebssystems, auf der bzw. dem Anwendungen und Vorrichtungsfunktionen ausgeführt werden. Die Verarbeitungsoperationen beinhalten Operationen in Bezug auf E/A (Eingabe/Ausgabe) mit einem menschlichen Benutzer oder mit anderen Vorrichtungen, Operationen in Bezug auf eine Energieverwaltung, Operationen in Bezug auf das Verbinden des Systems 1300 mit einer anderen Vorrichtung oder eine Kombination davon. Die Verarbeitungsoperationen können auch Operationen in Bezug auf eine Audio-E/A, eine Anzeige-E/A oder andere Schnittstellen oder eine Kombination davon beinhalten. Der Prozessor 1310 kann im Speicher gespeicherte Daten ausführen. Der Prozessor 1310 kann im Speicher gespeicherte Daten schreiben oder bearbeiten.
  • In einem Beispiel beinhaltet das System 1300 einen oder mehrere Sensoren 1312. Die Sensoren 1312 stellen eingebettete Sensoren oder Schnittstellen zu externen Sensoren oder eine Kombination davon dar. Die Sensoren 1312 ermöglichen es dem System 1300, eine oder mehrere Bedingungen einer Umgebung oder einer Vorrichtung, in der das System 1300 implementiert ist, zu überwachen oder zu erkennen. Die Sensoren 1312 können Umgebungssensoren (wie etwa Temperatursensoren, Bewegungsmelder, Lichtdetektoren, Kameras, chemische Sensoren (z. B. Kohlenmonoxid-, Kohlendioxid- oder andere chemische Sensoren), Drucksensoren, Beschleunigungsmesser, Gyroskope, medizinische oder physiologische Sensoren (z. B. Biosensoren, Herzfrequenzüberwachungsgeräte oder andere Sensoren zum Erkennen physiologischer Attribute) oder andere Sensoren oder eine Kombination davon beinhalten. Die Sensoren 1312 können auch Sensoren für biometrische Systeme, wie etwa Fingerabdruckerkennungssysteme, Gesichtserfassungs- oder -erkennungssysteme oder andere Systeme, die Benutzermerkmale erfassen oder erkennen, beinhalten. Die Sensoren 1312 sind breit und nicht als die vielen unterschiedlichen Typen von Sensoren einschränkend zu verstehen, die bei dem System 1300 implementiert werden könnten. In einem Beispiel sind ein oder mehrere Sensoren 1312 über eine in den Prozessor 1310 integrierte Frontend-Schaltung mit dem Prozessor 1310 gekoppelt. In einem Beispiel sind ein oder mehrere Sensoren 1312 über eine andere Komponente des Systems 1300 mit dem Prozessor 1310 gekoppelt.
  • In einem Beispiel beinhaltet das System 1300 ein Audio-Teilsystem 1320, das Hardware (z. B. eine Audio-Hardware und Audio-Schaltungen) und Software-Komponenten (z. B. Treiber, Codecs) darstellt, die mit einem Bereitstellen von Audio-Funktionen für die Rechenvorrichtung assoziiert sind. Die Audio-Funktionen können eine Lautsprecher- oder Kopfhörerausgabe sowie eine Mikrofoneingabe beinhalten. Die Vorrichtungen für derartige Funktionen können in das System 1300 integriert oder mit dem System 1300 verbunden sein. In einem Beispiel interagiert ein Benutzer mit dem System 1300, indem er Audio-Befehle bereitstellt, die durch den Prozessor 1310 empfangen und verarbeitet werden.
  • Das Anzeigeteilsystem 1330 stellt Hardware- (z. B. Anzeigevorrichtungen) und Software-Komponenten (z. B. Treiber) dar, die eine visuelle Anzeige zur Darstellung für einen Benutzer bereitstellen. In einem Beispiel beinhaltet die Anzeige taktile Komponenten oder Touchscreen-Elemente, damit ein Benutzer mit der Rechenvorrichtung interagieren kann. Das Anzeigeteilsystem 1330 beinhaltet eine Anzeigeschnittstelle 1332, die den jeweiligen Bildschirm oder die jeweilige Hardwarevorrichtung beinhaltet, der/die verwendet wird, um einem Benutzer eine Anzeige bereitzustellen. In einem Beispiel beinhaltet die Anzeigeschnittstelle 1332 eine Logik, die von dem Prozessor 1310 (wie etwa einem Grafikprozessor) getrennt ist, um mindestens eine teilweise Verarbeitung in Bezug auf die Anzeige durchzuführen. In einem Beispiel beinhaltet das Anzeigeteilsystem 1330 eine Touchscreen-Vorrichtung, die einem Benutzer sowohl eine Ausgabe als auch eine Eingabe bereitstellt. In einem Beispiel beinhaltet das Anzeigeteilsystem 1330 eine High-Definition- (HD-) oder Ultra-High-Definition- (UHD-)Anzeige, die einem Benutzer eine Ausgabe bereitstellt. In einem Beispiel beinhaltet das Anzeigeteilsystem eine Touchscreen-Anzeige oder steuert diese an. In einem Beispiel erzeugt das Anzeigeteilsystem 1330 Anzeigeinformationen basierend auf Daten, die im Speicher gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 1310 ausgeführt werden, oder basierend auf beiden.
  • Die E/A-Steuerung 1340 stellt Hardwarevorrichtungen und Softwarekomponenten dar, die sich auf eine Interaktion mit einem Benutzer beziehen. Die E/A-Steuerung 1340 kann betrieben werden, um eine Hardware zu verwalten, die Teil des Audio-Teilsystems 1320 oder des Anzeigeteilsystems 1330 oder beider ist. Zusätzlich dazu veranschaulicht die E/A-Steuerung 1340 einen Verbindungspunkt für zusätzliche Vorrichtungen, die sich mit dem System 1300 verbinden, durch die ein Benutzer mit dem System interagieren könnte. Die Vorrichtungen, die an das System 1300 angeschlossen werden können, können zum Beispiel Mikrofonvorrichtungen, Lautsprecher- oder Stereosysteme, Videosysteme oder andere Anzeigevorrichtungen, Tastatur- oder Tastenfeldvorrichtungen, Tasten/Schalter oder andere E/A-Vorrichtungen für eine Verwendung mit spezifischen Anwendungen, wie etwa Kartenlesegeräten oder anderen Vorrichtungen, beinhalten.
  • Wie oben erwähnt, kann die E/A-Steuerung 1340 mit dem Audio-Teilsystem 1320 oder dem Anzeigeteilsystem 1330 oder beiden interagieren. Zum Beispiel kann eine Eingabe durch ein Mikrofon oder eine andere Audio-Vorrichtung eine Eingabe oder Befehle für eine oder mehrere Anwendungen oder Funktionen des Systems 1300 bereitstellen. Zusätzlich kann eine Audio-Ausgabe anstelle oder zusätzlich zu einer Anzeigeausgabe bereitgestellt werden. In einem anderen Beispiel, wenn das Anzeigeteilsystem einen berührungsempfindlichen Bildschirm beinhaltet, fungiert die Anzeige auch als eine Eingabevorrichtung, die zumindest teilweise von der E/A-Steuerung 1340 verwaltet werden kann. Es können auch zusätzliche Tasten oder Schalter an dem System 1300 vorhanden sein, um E/A-Funktionen bereitzustellen, die durch die E/A-Steuerung 1340 verwaltet werden.
  • In einem Beispiel verwaltet die E/A-Steuerung 1340 Vorrichtungen, wie etwa Beschleunigungsmesser, Kameras, Lichtsensoren oder andere Umgebungssensoren, Gyroskope, ein globales Positionierungssystem (GPS) oder eine andere Hardware, die in dem System 1300 beinhaltet sein kann, oder die Sensoren 1312. Die Eingabe kann Teil einer direkten Benutzerinteraktion sein sowie dem System Umgebungseingaben zur Beeinflussung seiner Operationen (wie Rauschfiltern, Anpassen von Anzeigen zur Helligkeitsdetektion, Anwenden eines Blitzes für eine Kamera oder andere Merkmale) bereitstellen.
  • In einem Beispiel beinhaltet das System 1300 eine Leistungsverwaltung 1350, die die Verwendung von Batterieleistung, das Laden der Batterie und Funktionen bezüglich einer Energiesparoperation verwaltet. Die Leistungsverwaltung 1350 verwaltet die Leistung von der Leistungsquelle 1352, welche die Komponenten des Systems 1300 mit Leistung versorgt. In einem Beispiel beinhaltet die Leistungsquelle 1352 einen AC/DC(Wechselstrom/Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Ein derartiger Wechselstrom kann erneuerbare Energie (z. B. Solarenergie, bewegungsbasierte Energie) sein. In einem Beispiel beinhaltet die Leistungsquelle 1352 nur Gleichstrom, der durch eine Gleichstromquelle, wie etwa einen externen AC/DC-Wandler, bereitgestellt werden kann. In einem Beispiel beinhaltet die Leistungsquelle 1352 Drahtlosladehardware zum Laden durch eine Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle 1352 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
  • Das Speicherteilsystem 1360 beinhaltet eine oder mehrere Speichervorrichtungen 1362 zum Speichern von Informationen in dem System 1300. Das Speicherteilsystem 1360 kann nichtflüchtige (Zustand ändert sich nicht, wenn die Stromversorgung der Speichervorrichtung unterbrochen wird) oder flüchtige (Zustand ist unbestimmt, wenn die Stromversorgung der Speichervorrichtung unterbrochen wird) Speichervorrichtungen oder eine Kombination davon beinhalten. Der Speicher 1360 kann Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (ob langfristig oder vorübergehend) in Bezug auf die Ausführung der Anwendungen und Funktionen des Systems 1300 speichern. In einem Beispiel beinhaltet das Speicherteilsystem 1360 eine Speichersteuerung 1364 (die auch als Teil der Steuerung des Systems 1300 angesehen werden kann und potenziell als Teil des Prozessors 1310 angesehen werden kann). Die Speichersteuerung 1364 beinhaltet einen Ablaufplaner zum Erzeugen und Ausgeben von Befehlen zum Steuern des Zugriffs auf die Speichervorrichtung 1362.
  • Die Konnektivität 1370 beinhaltet Hardwarevorrichtungen (z. B. drahtlose oder drahtgebundene Verbinder und eine Kommunikationshardware oder eine Kombination von drahtgebundener und drahtloser Hardware) und Softwarekomponenten (z. B. Treiber, Protokollstapel), um dem System 1300 zu ermöglichen, mit externen Vorrichtungen zu kommunizieren. Bei der externen Vorrichtung könnte es sich um separate Vorrichtungen, wie etwa andere Rechenvorrichtungen, drahtlose Zugangspunkte oder Basisstationen, sowie Peripherieeinrichtungen, wie etwa Headsets, Drucker oder andere Vorrichtungen, handeln. In einem Beispiel tauscht das System 1300 Daten mit einer externen Vorrichtung zur Speicherung im Speicher oder zur Anzeige auf einer Anzeigevorrichtung aus. Die ausgetauschten Daten können im Speicher zu speichernde Daten oder bereits im Speicher gespeicherte Daten zum Lesen, Schreiben oder Bearbeiten von Daten beinhalten.
  • Die Konnektivität 1370 kann mehrere unterschiedliche Typen von Konnektivität beinhalten. Zur Verallgemeinerung ist das System 1300 mit einer zellularen Konnektivität 1372 und einer drahtlosen Konnektivität 1374 veranschaulicht. Die zellulare Konnektivität 1372 bezieht sich allgemein auf eine zellulare Netzwerkkonnektivität, die durch drahtlose Träger, wie etwa über GSM (Global System for Mobile Communications) oder Varianten oder Ableitungen davon bereitgestellt wird, CDMA (Code Division Multiple Access) oder Varianten oder Ableitungen davon, TDM (Time Division Multiplexing) oder Varianten oder Ableitungen davon, LTE (Long Term Evolution, auch als „4G“ bezeichnet), 5G oder andere zellulare Dienststandards bereitgestellt wird. Die drahtlose Konnektivität 1374 bezieht sich auf eine drahtlose Konnektivität, die nicht zellular ist, und sie kann private Netzwerke (wie etwa Bluetooth), lokale Netzwerke (wie etwa WiFi) oder Weitverkehrsnetzwerke (wie etwa WiMax) oder eine andere drahtlose Kommunikation oder eine Kombination davon beinhalten. Die drahtlose Kommunikation bezieht sich auf ein Übertragen von Daten durch die Verwendung von modulierter elektromagnetischer Strahlung durch ein nichtfestes Medium. Die drahtgebundene Kommunikation erfolgt durch ein festes Kommunikationsmedium.
  • Die Peripherieverbindungen 1380 beinhalten Hardwareschnittstellen und Verbinder sowie Softwarekomponenten (z. B. Treiber, Protokollstapel), um Peripherieverbindungen herzustellen. Es versteht sich, dass das System 1300 sowohl eine Peripherievorrichtung („zu“ 1382) zu anderen Rechenvorrichtungen sein könnte als auch mit ihm verbundene Peripherievorrichtungen („von“ 1384) aufweisen könnte. Das System 1300 weist üblicherweise einen „Docking“-Verbinder zum Verbinden mit anderen Rechenvorrichtungen zu Zwecken wie etwa einem Verwalten (z. B. Herunterladen, Hochladen, Ändern, Synchronisieren) eines Inhalts auf dem System 1300 auf. Zusätzlich kann ein Dockingverbinder erlauben, dass das System 1300 mit bestimmten Peripheriegeräten verbunden wird, die es dem System 1300 erlauben, die Inhaltsausgabe zum Beispiel an audiovisuelle oder andere Systeme zu steuern.
  • Zusätzlich zu einem herstellereigenen Dockingverbinder oder einer anderen herstellereigenen Verbindungshardware kann das System 1300 Peripherieverbindungen 1380 über gemeinsame oder standardbasierte Verbinder herstellen. Gängige Typen können einen Universal-Serial-Bus- (USB-)Verbinder (der beliebige einer Anzahl verschiedener Hardwareschnittstellen beinhalten kann), einen DisplayPort einschließlich eines MiniDisplayPort (MDP), eine High Definition Multimedia Interface (HDMI) oder einen anderen Typ beinhalten.
  • 14 ist ein Blockdiagramm eines Beispiels für ein Mehrknotennetzwerk, in welchem eine randomisierte DRFM-Auswahl implementiert werden kann. Das System 1400 stellt ein Netzwerk von Knoten dar, die eine adaptive ECC anwenden können. In einem Beispiel stellt das System 1400 ein Rechenzentrum dar. In einem Beispiel stellt das System 1400 eine Serverfarm dar. In einem Beispiel stellt das System 1400 eine Datencloud oder eine Verarbeitungscloud dar.
  • Der Knoten stellt ein System gemäß einem Beispiel für das System 100 oder das System 200 dar. Der Knoten 1430 beinhaltet einen Speicher 1440. Der Knoten 1430 beinhaltet eine Steuerung 1442, die eine Speichersteuerung zum Verwalten eines Zugriffs auf den Speicher 1440 darstellt. In einem Beispiel beinhaltet die Steuerung 1442 eine DRFM-Engine 1444. Die DRFM-Engine 1444 ermöglicht, dass die Steuerung 1442 die Auswahl einer Aktivierungsadresse randomisiert, um einen DRFM-Befehl für den Speicher 1440 auszugeben, um eine Rowhammer-Abwehr durchzuführen. Der DRFM-Befehl gilt für mehrere Bänke eines Speichers 1440. Der Speicher 1440 führt die Rowhammer-Abwehr für jede Bank basierend auf einer für die Bank erfassten Adresse aus. In einem Beispiel randomisiert die Steuerung 1442 auch die Erfassung der Adresse für die Bänke mit der DRFM-Engine 1444 zur Verwendung mit dem DRFM-Befehl.
  • Ein oder mehrere Clients 1402 stellen über das Netzwerk 1404 Anforderungen an das System 1400. Das Netzwerk 1404 stellt ein oder mehrere lokale Netzwerke oder Weitverkehrsnetzwerke oder eine Kombination davon dar. Die Clients 1402 können menschliche oder Maschinen-Clients sein, die Anforderungen zur Ausführung von Operationen durch das System 1400 erzeugen. Das System 1400 führt Anwendungen oder Datenberechnungsaufgaben aus, die von den Clients 1402 angefordert werden.
  • In einem Beispiel beinhaltet das System 1400 ein oder mehrere Racks, die Struktur- und Zwischenverbindungsressourcen zum Unterbringen und Verbinden mehrerer Rechenknoten darstellen. In einem Beispiel beinhaltet das Rack 1410 mehrere Knoten 1430. In einem Beispiel hostet das Rack 1410 mehrere Bladekomponenten 1420. Hosting bezieht sich auf das Bereitstellen von Leistung, struktureller oder mechanischer Unterstützung und Zwischenverbindungen. Blades 1420 können sich auf Rechenressourcen auf Leiterplatten (PCBs) beziehen, wobei eine PCB die Hardwarekomponenten für einen oder mehrere Knoten 1430 beherbergt. In einem Beispiel beinhalten die Blades 1420 keine Einhausung oder kein Gehäuse oder einen anderen „Kasten“ außer dem durch das Rack 1410 bereitgestellten. In einem Beispiel beinhalten die Blades 1420 ein Gehäuse mit freigelegtem Verbinder zur Verbindung mit dem Rack 1410. In einem Beispiel beinhaltet das System 1400 kein Rack 1410 und jedes Blade 1420 beinhaltet eine Einhausung oder ein Gehäuse, die stapelbar sind oder anderweitig in großer Nähe zu anderen Blades liegen und eine Verbindung der Knoten 1430 gestatten.
  • Das System 1400 beinhaltet ein Fabric 1470, das einen oder mehrere Zwischenverbinder für die Knoten 1430 darstellt. In einem Beispiel beinhaltet das Fabric 1470 mehrere Switches 1472 oder Router oder andere Hardware, um Signale zwischen den Knoten 1430 zu leiten. Zusätzlich dazu kann das Fabric 1470 das System 1400 mit dem Netzwerk 1404 für den Zugriff durch die Clients 1402 koppeln. Zusätzlich zu Routing-Ausrüstung kann das Fabric 1470 als die Kabel oder Anschlüsse oder andere Hardwareausrüstung zum Koppeln der Knoten 1430 miteinander beinhaltend betrachtet werden. In einem Beispiel weist das Fabric 1470 ein oder mehrere assoziierte Protokolle auf, um das Routing von Signalen durch das System 1400 zu verwalten. In einem Beispiel hängt bzw. hängen das Protokoll oder die Protokolle zumindest teilweise von der in dem System 1400 verwendeten Hardwareausrüstung ab.
  • Wie veranschaulicht, beinhaltet das Rack 1410 N Blades 1420. In einem Beispiel beinhaltet das System 1400 zusätzlich zu dem Rack 1410 ein Rack 1450. Wie veranschaulicht, beinhaltet das Rack 1450 M Blades 1460. M ist nicht notwendigerweise gleich N; somit versteht es sich, dass vielfältige unterschiedliche Hardware-Ausrüstungskomponenten verwendet und über das Fabric 1470 zum System 1400 zusammengekoppelt werden könnten. Die Blades 1460 können gleich oder ähnlich den Blades 1420 sein. Die Knoten 1430 können eine beliebige Art von Knoten sein und sind nicht notwendigerweise alle die gleiche Art von Knoten. Das System 1400 ist weder darauf beschränkt, homogen zu sein, noch ist es darauf beschränkt, nicht homogen zu sein.
  • Der Einfachheit halber ist nur der Knoten in dem Blade 1420[0] ausführlich veranschaulicht. Andere Knoten im System 1400 können j edoch gleich oder ähnlich sein. Zumindest einige Knoten 1430 sind Rechenknoten mit einem Prozessor (proc) 1432 und einem Speicher 1440. Ein Rechenknoten bezieht sich auf einen Knoten mit Verarbeitungsressourcen (z. B. einem oder mehreren Prozessoren), der ein Betriebssystem ausführt und eine oder mehrere Aufgaben empfangen und verarbeiten kann. In einem Beispiel sind zumindest einige Knoten 1430 Serverknoten mit einem Server als Verarbeitungsressourcen, die durch den Prozessor 1432 und den Speicher 1440 dargestellt sind. Ein Massenspeicherserver bezieht sich auf einen Knoten mit mehr Massenspeicherressourcen als ein Rechenknoten, und anstatt Prozessoren zur Ausführung von Aufgaben aufzuweisen, beinhaltet ein Massenspeicherserver Verarbeitungsressourcen zum Verwalten des Zugriffs auf die Massenspeicherknoten innerhalb des Massenspeicherservers.
  • In einem Beispiel beinhaltet der Knoten 1430 eine Schnittstellensteuerung 1434, die Logik zum Steuern des Zugriffs durch den Knoten 1430 auf das Fabric 1470 darstellt. Die Logik kann Hardwareressourcen zur Zwischenverbindung mit der physischen Zwischenverbindungshardware beinhalten. Die Logik kann Software- oder Firmwarelogik zum Verwalten der Zwischenverbindung beinhalten. In einem Beispiel ist oder beinhaltet die Schnittstellensteuerung 1434 eine Host-Fabric-Schnittstelle, die eine Fabric-Schnittstelle gemäß einem beliebigen hier beschriebenen Beispiel sein kann.
  • Der Prozessor 1432 kann einen oder mehrere separate Prozessoren beinhalten. Jeder separate Prozessor kann eine einzelne Verarbeitungseinheit, eine Mehrkern-Verarbeitungseinheit oder eine Kombination davon beinhalten. Die Verarbeitungseinheit kann ein Primärprozessor, wie etwa eine CPU (central processing unit - zentrale Verarbeitungseinheit), ein Peripherieprozessor, wie etwa eine GPU (graphics processing unit - Grafikverarbeitungseinheit), oder eine Kombination davon sein. Der Speicher 1440 kann Speichervorrichtungen und eine Speichersteuerung sein oder diese beinhalten.
  • Im Allgemeinen beinhaltet eine Speichersteuerung Bezug nehmend auf die vorliegenden Beschreibungen in einem Aspekt Folgendes: eine Hardwareschnittstelle, die dazu ausgelegt ist, mit einer Speichervorrichtung gekoppelt zu werden, die mehrere Bänke aufweist; und eine Steuerungsschaltungsanordnung, die dazu ausgelegt ist, erste Befehle zu erzeugen, um Adressen für eine Vielzahl der mehreren Bänke anzugeben, die die Speichervorrichtung für eine Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operation der mehreren Bänke erfassen soll; und einen zweiten Befehl, einen gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehl, zu erzeugen, um auszulösen, dass die Speichervorrichtung eine Zielzeilenauffrischungsabwehr für die mehreren Bänke basierend auf den Adressen für die Vielzahl der mehreren Bänke durchführt.
  • In einem Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung dazu ausgelegt, zu randomisieren, wie häufig sie den zweiten Befehl an die Speichervorrichtung senden soll. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung umfassen die ersten Befehle in einem Beispiel Vorladebefehle, um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung umfassen die ersten Befehle in einem Beispiel Lesen mit Auto-Vorladen (read with auto-precharge - RDA) oder Schreiben mit Auto-Vorladen (write with auto-precharge - WRA), um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung beinhaltet in einem Beispiel jeder der ersten Befehle ein Feld in Befehlscodierung, um anzugeben, ob eine in dem Befehl angegebene Adresse erfasst werden soll oder nicht erfasst werden soll. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung umfasst der zweite Befehl in einem Beispiel einen Alle-Bänke-DRFM-Befehl (DRFMab). Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung umfasst der zweite Befehl in einem Beispiel einen Gleiche-Bank-DRFM-Befehl (DRFMsb). Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung in einem Beispiel dazu ausgelegt, die ersten Befehle zu erzeugen, um Adressen mit einer höheren Frequenz anzugeben als den zweiten Befehl, um eine Zielzeilenauffrischungsabwehr auszulösen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung umfasst in einem Beispiel das Erzeugen der ersten Befehle mit einer höheren Frequenz das Erzeugen der ersten Befehle um mindestens eine Größenordnung häufiger als den zweiten Befehl. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung in einem Beispiel dazu ausgelegt, die ersten Befehle bei jedem Vorladen zu erzeugen und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung in einem Beispiel dazu ausgelegt, die ersten Befehle basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung in einem Beispiel dazu ausgelegt, die ersten Befehle für jeden ersten Aktivierungsbefehl für jede aus der Vielzahl von Bänken nach einem DRFM-Befehl zu erzeugen, dann anschließende erste Befehle für jede aus der Vielzahl von Bänken basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung in einem Beispiel dazu ausgelegt, die Erzeugung der ersten Befehle zu randomisieren und die Erzeugung des zweiten Befehls zu randomisieren. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung dazu ausgelegt, den zweiten Befehl basierend auf einem pseudozufälligen Zeitgeber zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung ist die Steuerungsschaltungsanordnung in einem Beispiel dazu ausgelegt, die ersten Befehle und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf dem Auftreten eines Aktivierungsbefehls zu erzeugen.
  • Im Allgemeinen beinhaltet ein System Bezug nehmend auf die vorliegenden Beschreibungen in einem Aspekt Folgendes: eine Speichervorrichtung, die mehrere Bänke aufweist; und eine Speichersteuerung, die dazu ausgelegt ist, erste Befehle zu erzeugen, um Adressen für eine Vielzahl der mehreren Bänke anzugeben, die die Speichervorrichtung für eine Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operation der mehreren Bänke erfassen soll; und einen zweiten Befehl, einen gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehl, zu erzeugen, um auszulösen, dass die Speichervorrichtung eine Zielzeilenauffrischungsabwehr für die mehreren Bänke basierend auf den Adressen für die Vielzahl der mehreren Bänke durchführt.
  • In einem Beispiel für das System ist die Speichersteuerung dazu ausgelegt, zu randomisieren, wie häufig sie den zweiten Befehl an die Speichervorrichtung senden soll. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle bei jedem Vorladen zu erzeugen und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System umfassen die ersten Befehle in einem Beispiel Vorladebefehle, um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für das System umfassen die ersten Befehle in einem Beispiel Lesen mit Auto-Vorladen (read with auto-precharge - RDA) oder Schreiben mit Auto-Vorladen (write with auto-precharge - WRA), um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für das System beinhaltet in einem Beispiel jeder der ersten Befehle ein Feld in Befehlscodierung, um anzugeben, ob eine in dem Befehl angegebene Adresse erfasst werden soll oder nicht erfasst werden soll. Gemäß einem beliebigen vorhergehenden Beispiel für das System umfasst der zweite Befehl einen Alle-Bänke-DRFM-Befehl (DRFMab). Gemäß einem beliebigen vorhergehenden Beispiel für das System umfasst der zweite Befehl einen Gleiche-Bank-DRFM-Befehl (DRFMsb). Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle zu erzeugen, um Adressen mit einer höheren Frequenz anzugeben als den zweiten Befehl, um eine Zielzeilenauffrischungsabwehr auszulösen. Gemäß einem beliebigen vorhergehenden Beispiel für das System umfasst in einem Beispiel das Erzeugen der ersten Befehle mit einer höheren Frequenz das Erzeugen der ersten Befehle um mindestens eine Größenordnung häufiger als den zweiten Befehl. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle bei jedem Vorladen zu erzeugen und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle für jeden ersten Aktivierungsbefehl für jede aus der Vielzahl von Bänken nach einem DRFM-Befehl zu erzeugen, dann anschließende erste Befehle für jede aus der Vielzahl von Bänken basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die Erzeugung der ersten Befehle zu randomisieren und die Erzeugung des zweiten Befehls zu randomisieren. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung dazu ausgelegt, den zweiten Befehl basierend auf einem pseudozufälligen Zeitgeber zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System ist die Speichersteuerung in einem Beispiel dazu ausgelegt, die ersten Befehle und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf dem Auftreten eines Aktivierungsbefehls zu erzeugen. Gemäß einem beliebigen vorhergehenden Beispiel für das System beinhaltet das System in einem Beispiel eins oder mehrere von Folgenden: einen Mehrkern-Host-Prozessor, der mit der Speichersteuerung gekoppelt ist; eine Anzeige, die kommunikativ mit einem Host-Prozessor gekoppelt ist; eine Netzwerkschnittstelle, die kommunikativ mit einem Host-Prozessor gekoppelt ist; oder eine Batterie, um das System mit Strom zu versorgen.
  • Im Allgemeinen beinhaltet ein Verfahren Bezug nehmend auf die vorliegenden Beschreibungen in einem Aspekt Folgendes: Erzeugen von ersten Befehlen, um Adressen für eine Vielzahl von mehreren Bänken anzugeben, die eine Speichervorrichtung für eine Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operation der mehreren Bänke erfassen soll; und Erzeugen eines zweiten Befehls, eines gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehls, um auszulösen, dass die Speichervorrichtung eine Zielzeilenauffrischungsabwehr für die mehreren Bänke basierend auf den Adressen für die Vielzahl der mehreren Bänke durchführt.
  • In einem Beispiel für das Verfahren beinhaltet das Auslösen, dass die Speichersteuerung eine Zielreihenauffrischungsabwehr durchführt, das Randomisieren, wie häufig sie den zweiten Befehl an die Speichervorrichtung senden soll. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst das Erzeugen des zweiten Befehls in einem Beispiel das Erzeugen des DRFM-Befehls basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle einschließlich des Randomisierens, wie häufig die ersten Befehle an die Speichervorrichtung gesendet werden sollen, um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfassen die ersten Befehle in einem Beispiel Vorladebefehle, um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfassen die ersten Befehle in einem Beispiel Lesen mit Auto-Vorladen (read with auto-precharge - RDA) oder Schreiben mit Auto-Vorladen (write with auto-precharge - WRA), um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren beinhaltet in einem Beispiel jeder der ersten Befehle ein Feld in Befehlscodierung, um anzugeben, ob eine in dem Befehl angegebene Adresse erfasst werden soll oder nicht erfasst werden soll. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst der zweite Befehl in einem Beispiel einen Alle-Bänke-DRFM-Befehl (DRFMab). Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst der zweite Befehl in einem Beispiel einen Gleiche-Bank-DRFM-Befehl (DRFMsb). Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst in einem Beispiel das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle, um Adressen mit einer höheren Frequenz anzugeben als den zweiten Befehl, um eine Zielzeilenauffrischungsabwehr auszulösen. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst in einem Beispiel das Erzeugen der ersten Befehle mit einer höheren Frequenz das Erzeugen der ersten Befehle um mindestens eine Größenordnung häufiger als den zweiten Befehl. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst in einem Beispiel das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle bei jedem Vorladen und das Erzeugen des zweiten Befehls umfasst das Erzeugen des DRFM-Befehls basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst in einem Beispiel das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift registerLFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen und das Erzeugen des zweiten Befehls umfasst Erzeugen des DRFM-Befehls basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst in einem Beispiel das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle für jeden ersten Aktivierungsbefehl für jede aus der Vielzahl von Bänken nach einem DRFM-Befehl, dann das Erzeugen anschließender erster Befehle für jede aus der Vielzahl von Bänken basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen und wobei das Erzeugen des zweiten Befehls das Erzeugen des DRFM-Befehls basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen umfasst. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren gilt in einem Beispiel, wobei das Erzeugen der ersten Befehle das Randomisieren einer Frequenz der Erzeugung der ersten Befehle umfasst und wobei das Erzeugen des zweiten Befehls das Randomisieren einer Frequenz der Erzeugung des zweiten Befehls umfasst. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren gilt in einem Beispiel, wobei das Erzeugen des zweiten Befehls das Erzeugen des DRFM-Befehls basierend auf einem pseudozufälligen Zeitgeber umfasst. Gemäß einem beliebigen vorhergehenden Beispiel für das Verfahren umfasst in einem Beispiel das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf dem Auftreten eines Aktivierungsbefehls und das Erzeugen des zweiten Befehls umfasst das Erzeugen des DRFM-Befehls basierend auf dem LFSR basierend auf dem Auftreten des Aktivierungsbefehls.
  • Im Allgemeinen beinhaltet eine Speichervorrichtung Bezug nehmend auf die vorliegenden Beschreibungen in einem Aspekt Folgendes: mehrere Speicherbänke; und eine Hardwareschnittstelle zum Koppeln mit einer Speichersteuerung, um erste Befehle zu empfangen, um für eine Vielzahl der mehreren Bänke für die Speichervorrichtung Adressen anzugeben und um einen zweiten Befehl zu empfangen, einen gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehl; mehrere Register, einschließlich eines Registers für jede aus der Vielzahl von Bänken, um die Adressen pro Bank für eine Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operation der mehreren Bänke zu erfassen; und Auffrischungshardware, um eine Zielzeilenauffrischungsabwehr für die mehreren Bänke basierend auf den in den mehreren Registern erfassten Adressen durchzuführen.
  • In einem Beispiel für die Speichervorrichtung wird eine Frequenz des Empfangs des DRFM-Befehls durch die Speichersteuerung randomisiert. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung umfassen die ersten Befehle in einem Beispiel Vorladebefehle, um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung umfassen die ersten Befehle in einem Beispiel Lesen mit Auto-Vorladen (read with auto-precharge - RDA) oder Schreiben mit Auto-Vorladen (write with auto-precharge - WRA), um die Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung beinhaltet in einem Beispiel jeder der ersten Befehle ein Feld in Befehlscodierung, um anzugeben, ob eine in dem Befehl angegebene Adresse erfasst werden soll oder nicht erfasst werden soll. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung umfasst der zweite Befehl in einem Beispiel einen Alle-Bänke-DRFM-Befehl (DRFMab). Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung umfasst der zweite Befehl in einem Beispiel einen Gleiche-Bank-DRFM-Befehl (DRFMsb). Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung ist in einem Beispiel die Frequenz des Empfangs des DRFM-Befehls weniger häufig als der Empfang der ersten Befehle, um Adressen anzugeben. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung ist in einem Beispiel die Frequenz des Empfangs der ersten Befehle um mindestens eine Größenordnung größer als die Frequenz des Empfangs des DRFM-Befehls. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung sind in einem Beispiel die ersten Befehle mit jedem Vorladen für die Speichervorrichtung assoziiert und der DRFM-Befehl wird basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen empfangen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung basiert der Empfang der ersten Befehle in einem Beispiel auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen und der Empfang des DRFM-Befehls basiert auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichersteuerung tritt der Empfang der ersten Befehle in einem Beispiel für jeden ersten Aktivierungsbefehl für jede aus der Vielzahl von Bänken nach einem DRFM-Befehl auf, dann basiert der Empfang anschließender erster Befehle für jede aus der Vielzahl von Bänken auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen und der Empfang des DRFM-Befehls basiert auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung wird der Empfang der ersten Befehle in einem Beispiel durch die Speichersteuerung randomisiert und der Empfang des DRFM-Befehls wird durch die Speichersteuerung randomisiert. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung basiert der Empfang des DRFM-Befehls in einem Beispiel auf einem pseudozufälligen Zeitgeber. Gemäß einem beliebigen vorhergehenden Beispiel für die Speichervorrichtung basieren in einem Beispiel der Empfang der ersten Befehle und der Empfang des DRFM-Befehls auf einem linearen Rückmeldeschieberegister basierend auf dem Auftreten eines Aktivierungsbefehls.
  • Flussdiagramme, wie hier veranschaulicht, stellen Beispiele für Abfolgen verschiedener Prozesshandlungen bereit. Die Flussdiagramme können Vorgänge, die durch eine Software- oder Firmware-Routine auszuführen sind, sowie physische Vorgänge angeben. Ein Flussdiagramm kann ein Beispiel für die Implementierung von Zuständen eines endlichen Automaten (FSM - Finite State Machine) veranschaulichen, der in Hardware und/oder als Software implementiert werden kann. Obgleich sie in einer bestimmten Abfolge oder Reihenfolge gezeigt sind, kann die Reihenfolge der Handlungen modifiziert werden, sofern nichts anderes angegeben ist. Dementsprechend sind die veranschaulichten Diagramme nur als Beispiele zu verstehen und der Prozess kann in einer anderen Reihenfolge durchgeführt werden und manche Handlungen können parallel durchgeführt werden. Zusätzlich können eine oder mehrere Handlungen ausgelassen werden; dementsprechend werden nicht bei allen Implementierungen alle Handlungen durchgeführt.
  • Soweit hier verschiedene Operationen oder Funktionen beschrieben sind, können sie als Softwarecode, Anweisungen, eine Konfiguration und/oder Daten beschrieben oder definiert werden. Der Inhalt kann direkt ausführbar („Objekt“- oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“- oder „Patch“-Code) sein. Der Softwareinhalt dessen, was hier beschrieben ist, kann über einen Herstellungsgegenstand mit dem darauf gespeicherten Inhalt oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle bereitgestellt werden. Ein maschinenlesbares Massenspeichermedium kann bewirken, dass eine Maschine die beschriebenen Funktionen oder Operationen durchführt, und beinhaltet jeden Mechanismus, der Informationen in einer Form speichert, auf die durch eine Maschine (z. B. eine Rechenvorrichtung, ein elektronisches System usw.) zugegriffen werden kann, wie etwa beschreibbare/nicht beschreibbare Medien (z. B. Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), magnetische Massenspeichermedien, optische Massenspeichermedien, Flash-Speichervorrichtungen usw.). Eine Kommunikationsschnittstelle beinhaltet jeden Mechanismus, der mit jedem aus einem drahtgebundenen, drahtlosen, optischen usw. Medium eine Schnittstelle bildet, um mit einer anderen Vorrichtung, wie etwa einer Speicherbusschnittstelle, einer Prozessorbusschnittstelle, einer Internetverbindung, einer Plattensteuerung usw., zu kommunizieren. Die Kommunikationsschnittstelle kann konfiguriert sein, indem sie Konfigurationsparameter bereitstellt und/oder Signale sendet, um die Kommunikationsschnittstelle vorzubereiten, ein den Softwareinhalt beschreibendes Datensignal bereitzustellen. Auf die Kommunikationsschnittstelle kann über einen oder mehrere Befehle oder ein oder mehrere Signale, die an die Kommunikationsschnittstelle gesendet werden, zugegriffen werden.
  • Verschiedene hier beschriebene Komponenten können ein Element zum Durchführen der beschriebenen Operationen oder Funktionen sein. Jede hier beschriebene Komponente beinhaltet Software, Hardware oder eine Kombination von diesen. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialzweckhardware (z. B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltkreise (application specific integrated circuits - ASICs), digitale Signalprozessoren (DSPs) usw.), eingebettete Steuerungen, drahtgebundene Schaltungsanordnungen usw. implementiert werden.
  • Abgesehen von dem, was hier beschrieben ist, können verschiedene Modifikationen an dem, was hier offenbart ist, und an Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen. Die vorliegenden Veranschaulichungen und Beispiele sollten deshalb im veranschaulichenden und nicht im einschränkenden Sinne aufgefasst werden. Der Schutzumfang der Erfindung bemisst sich nur durch Bezugnahme auf die folgenden Ansprüche.

Claims (21)

  1. Speichersteuerung, Folgendes umfassend: eine Hardwareschnittstelle zum Koppeln mit einer Speichervorrichtung, die mehrere Bänke aufweist; und eine Steuerungsschaltungsanordnung zum Erzeugen erster Befehle, um Adressen für eine Vielzahl der mehreren Bänke für die Speichervorrichtung anzugeben, die für eine Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operation für die mehreren Bänke erfasst werden sollen; und Erzeugen eines zweiten Befehls, eines gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehls, um auszulösen, dass die Speichervorrichtung eine gezielte Zeilenauffrischungsabwehr für die mehreren Bänke basierend auf den Adressen für die Vielzahl der mehreren Bänke durchführt.
  2. Speichersteuerung nach Anspruch 1, wobei die ersten Befehle Vorladebefehle zum Angeben der Adressen umfassen.
  3. Speichersteuerung nach Anspruch 1, wobei die ersten Befehle Lesen mit Auto-Vorladen (read with auto-precharge - RDA) oder Schreiben mit Auto-Vorladen (write with auto-precharge - WRA) umfassen, um die Adressen anzugeben.
  4. Speichersteuerung nach einem der Ansprüche 1 bis 3, wobei jeder der ersten Befehle ein Feld in Befehlscodierung beinhaltet, um anzugeben, ob eine in dem Befehl angegebene Adresse erfasst werden soll oder nicht erfasst werden soll.
  5. Speichersteuerung nach einem der Ansprüche 1 bis 4, wobei der zweite Befehl einen Alle-Bänke-DRFM-Befehl (DRFMab) umfasst.
  6. Speichersteuerung nach einem der Ansprüche 1 bis 4, wobei der zweite Befehl einen Gleiche-Bank-DRFM-Befehl (DRFMsb) umfasst.
  7. Speichersteuerung nach einem der Ansprüche 1 bis 6, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, die ersten Befehle zu erzeugen, um Adressen mit einer höheren Frequenz anzugeben als den zweiten Befehl, um eine Zielzeilenauffrischungsabwehr auszulösen.
  8. Speichersteuerung nach Anspruch 7, wobei das Erzeugen der ersten Befehle mit einer höheren Frequenz das Erzeugen der ersten Befehle um mindestens eine Größenordnung häufiger als den zweiten Befehl umfasst.
  9. Speichersteuerung nach Anspruch 7, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, die ersten Befehle bei jedem Vorladen zu erzeugen und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen zu erzeugen.
  10. Speichersteuerung nach Anspruch 7, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, die ersten Befehle basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen.
  11. Speichersteuerung nach Anspruch 7, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, die ersten Befehle für jeden ersten Aktivierungsbefehl für jede aus der Vielzahl von Bänken nach einem DRFM-Befehl zu erzeugen, dann anschließende erste Befehle für jede aus der Vielzahl von Bänken basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) mit hoher Einfügung basierend auf Aktivierungsbefehlen zu erzeugen und den zweiten Befehl basierend auf einem LFSR mit niedriger Einfügung basierend auf den Aktivierungsbefehlen zu erzeugen.
  12. Speichersteuerung nach einem der Ansprüche 1 bis 11, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, zu randomisieren, wie häufig sie den zweiten Befehl an die Speichervorrichtung senden soll.
  13. Speichersteuerung nach Anspruch 12, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, eine Frequenz der Erzeugung der ersten Befehle zu randomisieren und eine Frequenz der Erzeugung des zweiten Befehls zu randomisieren.
  14. Speichersteuerung nach Anspruch 13, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, den zweiten Befehl basierend auf einem pseudozufälligen Zeitgeber zu erzeugen.
  15. Speichersteuerung nach Anspruch 13, wobei die Steuerungsschaltungsanordnung dazu ausgelegt ist, die ersten Befehle und den zweiten Befehl basierend auf einem linearen Rückmeldeschieberegister basierend auf dem Auftreten eines Aktivierungsbefehls zu erzeugen.
  16. Verfahren zur Speicherauffrischung, Folgendes umfassend: Erzeugen von ersten Befehlen, um Adressen für eine Vielzahl von mehreren Bänken für eine Speichervorrichtung anzugeben, die für eine Pseudo-Zielzeilenauffrischungs(pseudo target row refresh - pTTR)-Operation für die mehreren Bänke erfasst werden sollen; und Erzeugen eines zweiten Befehls, eines gezielten Auffrischungsverwaltungs(directed refresh management - DRFM)-Befehls, um auszulösen, dass die Speichervorrichtung eine gezielte Zeilenauffrischungsabwehr für die mehreren Bänke basierend auf den Adressen für die Vielzahl der mehreren Bänke durchführt.
  17. Verfahren nach Anspruch 16, wobei das Erzeugen des zweiten Befehls das Randomisieren, wie häufig der zweite Befehl an die Speichervorrichtung gesendet werden soll, beinhaltet.
  18. Verfahren nach einem der Ansprüche 16 bis 17, wobei das Erzeugen des zweiten Befehls das Erzeugen des DRFM-Befehls basierend auf einem linearen Rückmeldeschieberegister (linear feedback shift register - LFSR) basierend auf Aktivierungsbefehlen umfasst.
  19. Verfahren nach einem der Ansprüche 16 bis 18, wobei das Erzeugen der ersten Befehle das Erzeugen der ersten Befehle einschließlich des Randomisierens, wie häufig die ersten Befehle an die Speichervorrichtung gesendet werden sollen, um die Adressen anzugeben, umfasst.
  20. Einrichtung, umfassend Mittel zum Durchführen eines Verfahrens wie in einem der Ansprüche 16 bis 19 dargelegt.
  21. Maschinenlesbares Massenspeichermedium, umfassend maschinenlesbare Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine Maschine ein Verfahren, wie in einem der Ansprüche 16 bis 19 dargelegt, durchführt.
DE102023110723.2A 2022-06-01 2023-04-26 Randomisierung von gezielten auffrischungsverwaltungs(directed refresh management - drfm)-pseudo-zielzeilenauffrischungs(pseudo target row refresh - pttr)-befehlen Pending DE102023110723A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/830,045 2022-06-01
US17/830,045 US20220293162A1 (en) 2022-06-01 2022-06-01 Randomization of directed refresh management (drfm) pseudo target row refresh (ptrr) commands

Publications (1)

Publication Number Publication Date
DE102023110723A1 true DE102023110723A1 (de) 2023-12-07

Family

ID=83195020

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023110723.2A Pending DE102023110723A1 (de) 2022-06-01 2023-04-26 Randomisierung von gezielten auffrischungsverwaltungs(directed refresh management - drfm)-pseudo-zielzeilenauffrischungs(pseudo target row refresh - pttr)-befehlen

Country Status (2)

Country Link
US (1) US20220293162A1 (de)
DE (1) DE102023110723A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783881B2 (en) * 2022-02-07 2023-10-10 Micron Technology, Inc. Apparatuses, systems, and methods for direct refresh management commands
US11996134B2 (en) 2022-03-15 2024-05-28 Micron Technology, Inc. Apparatuses, systems, and methods for direct refresh management sampling protection
US11922031B1 (en) * 2022-09-23 2024-03-05 Micron Technology, Inc. Apparatus with directed refresh management mechanism
US20240112722A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Directed refresh management for dram

Also Published As

Publication number Publication date
US20220293162A1 (en) 2022-09-15

Similar Documents

Publication Publication Date Title
DE102020104367A1 (de) Refresh-befehlssteuerung für eine hostunterstützung einer rowhammer-mitigation
DE102023110723A1 (de) Randomisierung von gezielten auffrischungsverwaltungs(directed refresh management - drfm)-pseudo-zielzeilenauffrischungs(pseudo target row refresh - pttr)-befehlen
DE112016004243T5 (de) Hybrides Auffrischen mit verborgenen Auffrischungen und externen Auffrischungen
DE112017004268T5 (de) Befehlsbus mit doppelter datenrate
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
DE112011106076B4 (de) Generischer Adressen-Scrambler für Speicherschaltungs-Testengine
DE112006000644B4 (de) Speichereinrichtungskommunikation unter Verwendung eines Systemspeicherbusses
EP2324431B1 (de) Eingangs-ausgangs-modul, verarbeitungsplattform und verfahren zur erweiterung einer speicherschnittstelle für eingangs-ausgangs-operationen
DE112017006599T5 (de) Programmierbare datenstruktur zum wiederholten schreiben in einen speicher
DE112017001020T5 (de) Unterstützung einer vielzahl von speichertypen in einem speichersteckplatz
DE112017004966T5 (de) Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher
DE112013003294B4 (de) 1-8Konfiguration zur Stromreduzierung im Dram
DE112011106021B4 (de) Zugreifen auf Daten, die in einem Befehls-/Adressregister-Gerät gespeichert sind
DE112012006161B4 (de) Integrierter Selbsttest für Stapelspeicherarchitektur
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112016004314T5 (de) Programmierbare zeitgebung von chipinterner terminierung in einem mehrrangigen system
DE102018108702A1 (de) Gestapelte Speichervorrichtung, System mit derselben und verbundenes Verfahren
DE102013109327A1 (de) Speichervorrichtung zum Verringern eines Schreibfehlers, ein System mit derselben und Verfahren davon
DE102022105932A1 (de) Komprimierter verbindungsstiftmit geschlossenem regelkreis
DE102019112628A1 (de) Dimm für speicherkanal mit hoher bandbreite
DE102017106713A1 (de) Rechensystem, nichtflüchtiges Speichermodul und Verfahren zum Betreiben einer Speichervorrichtung
DE112016006203T5 (de) Verfahren zum zugreifen auf ein dual in-line memory-modul über mehrere datenkanäle oder betreiben desselben
DE112013003219T5 (de) Flexible Befehlsadressierung für Speicher
DE112022000954T5 (de) Doppelabruf für Speicherdatenübertragung mit langer Burst-Länge
DE102020132763A1 (de) Undirektionaler informationskanal zur überwachung einer drift eines bidirektionalen informationskanals