FR3066842A1 - Logique de correction de row hammer pour dram avec processeur integre - Google Patents
Logique de correction de row hammer pour dram avec processeur integre Download PDFInfo
- Publication number
- FR3066842A1 FR3066842A1 FR1770532A FR1770532A FR3066842A1 FR 3066842 A1 FR3066842 A1 FR 3066842A1 FR 1770532 A FR1770532 A FR 1770532A FR 1770532 A FR1770532 A FR 1770532A FR 3066842 A1 FR3066842 A1 FR 3066842A1
- Authority
- FR
- France
- Prior art keywords
- row
- rows
- count value
- refresh
- tables
- 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.)
- Granted
Links
- 238000012937 correction Methods 0.000 title description 2
- 230000004913 activation Effects 0.000 claims abstract description 67
- 238000001514 detection method Methods 0.000 claims abstract description 41
- 230000003449 preventive effect Effects 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 28
- 230000000737 periodic effect Effects 0.000 claims description 25
- 230000008685 targeting Effects 0.000 claims description 13
- 230000000694 effects Effects 0.000 claims description 6
- 230000003111 delayed effect Effects 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000001994 activation Methods 0.000 description 51
- 230000008569 process Effects 0.000 description 10
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 230000016571 aggressive behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40603—Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40615—Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
L'invention est relative à un dispositif mémoire comprenant un ou plusieurs bancs (126), chaque banc comprenant une pluralité de rangs mémoire, le dispositif mémoire comprenant par ailleurs : une logique de détection de déclenchement du Row Hammer (123) configurée pour surveiller, pour chaque banc, les commandes activation émises à la fois par un contrôleur mémoire externe et par un ou plusieurs processeurs internes du dispositif mémoire, afin de déclencher des opérations de rafraîchissement en conséquence.
Description
Logique de correction de ROW HAMMER pour DRAM AVEC PROCESSEUR INTEGRE
Domaine de l’invention
La présente description concerne le domaine des circuits DRAM (dynamic random accès s memory) avec processeurs intégrés.
Exposé de l’art antérieur L’effet Row Hammer (« martelage de rang ») est le fait que, à l’intérieur d’un banc (« bank ») mémoire DRAM donné, activer de manière répétée un rang (« row ») DRAM donné puisse causer aux rangs physiquement adjacents l’inversion de la valeur de certains de leurs bits. Le rang qui est trop activé sera appelé « rang agresseur » et ses deux rangs adjacents seront appelés « rangs victimes ».
En particulier, l’activation d’un rang mémoire à l’intérieur d’un banc DRAM implique d’avoir ce banc dans un état préchargé, cet état ayant été préalablement atteint à travers une commande de pré-chargement, puis en jouant une commande d’activation. Une fois activé, le rang peut être accédé pour les besoins d’une opération de lecture ou d’écriture.
Si on compte les activations qui visent un rang donné, alors quand ce comptage atteint une certaine valeur, le rang devient un agresseur et les 2 rangs adjacents deviennent ses victimes.
La solution à ce problème consiste à détecter qu’un rang est sur le point de devenir un agresseur, et, avant que ce ne soit le cas, à rafraîchir les deux rangs adjacents (ses victimes potentielles), de tels rafraîchissements étant appelés dans ce document des « rafraîchissements préventifs ».
Ce faisant, et du point de vue de l’effet Row Hammer, rafraîchir deux rangs adjacents « réinitialise » le nombre d’activations de l’agresseur potentiel.
Indépendamment du problème de Row Hammer, la mémoire DRAM nécessite d’être rafraîchie de toutes les manières. La spécification DDR4 indique que tous les rangs d’un banc DDR4 doivent être rafraîchis toutes les 64 ms, les rafraîchissements correspondants étant appelés « rafraîchissements périodiques ».
Par conséquent, le problème du Row Hammer ne peut arriver que si, à l’intérieur d’une fenêtre temporelle de 64 ms, un rang donné est activé suffisamment de fois pour devenir un agresseur.
Les études sur le phénomène du Row Hammer montrent que l’agression d’un rang victime est le résultat de la somme des agressions des deux rangs adjacents. Par exemple, s’il faut 250000 activations pour qu’un rang devienne un agresseur, la logique de mitigation du Row Hammer devrait considérer 125000 activations comme valeur de déclenchement, puisque deux agresseurs peuvent « coopérer » pour agresser un même rang victime.
Pour résumer, une valeur de déclenchement du Row Hammer intrinsèque, qui prend en compte les pires cas possibles, comme la co-agression, est maintenant un paramètre additionnel qui fait partie de la description de tout procédé DRAM récent.
Si, à l’intérieur d’une fenêtre de rafraîchissement, le nombre d’activations d’un rang donné est sur le point d’atteindre cette valeur de déclenchement du Row Hammer intrinsèque, alors les deux rangs adjacents doivent être préventivement rafraîchis.
Le brevet 201400 ' ' décrit une solution pour mitiger l’effet Row Hammer, mais il a les inconvénients suivants : • La méthode ne convient pas pour la mémoire DRAM intégrant un processeur, • La méthode complètement détaillée (et aucune autre méthode ne peut être directement inférée de ce texte,) ne permet pas de détecter des conditions du Row Hammer dans des scénarios relativement simples, quand les paramètres sont calculés tels qu’expliqué par cette méthode précise, • La méthode détaillée nécessite complètement, pour chaque commande d’activation, le classement des entrées d’une table, avec quelques dizaines d’entrées. Un tel classement constitue un processus consommateur de temps qu’il serait difficile de réaliser en moins de 45 ns, le temps minimal séparant deux activations de rang à l’intérieur d’un même banc DDR4. L’un des objectifs de réalisation de la présente description est de remédier au moins partiellement à l’une ou plusieurs de ces limitations. ne convient pas pour une DRAM intégrant un processeur
La soumission du brevet publié sous WO 2017/055732 expose comment il est faisable d’avoir un processeur intégré à l’intérieur d’une puce DRAM compatible DDR4.
Le brevet n’est pas adapté à une DRAM avec un processeur interne, puisque le contrôleur de mémoire externe ne connaît pas les activations générées par le processeur interne de la DRAM, alors que la possibilité pour qu’un rang donné devienne un agresseur résulte de la somme : • des activations générées par le contrôleur de mémoire externe visant ce rang donné, • et des activations générées par le processeur interne de la mémoire DRAM visant ce rang donné. US 20140006704 A1 ne fonctionne pas dans certains scénarios simples
La valeur de déclenchement intrinsèque considérée est 125000 activations de rang, et tous les paramètres significatifs sont calculés suivant la méthode exposée dans US 20140006704 A1.
La fenêtre temporelle N commence au temps T.
La rangée 20000 est rafraîchie entre T+16 ms et T+32 ms.
Entre les temps T+32 ms et T+64 ms, le rang 20000 est activé 120000 fois, soit moins que la valeur de déclenchement intrinsèque 125000, donc aucun rafraîchissement préventif n’est initié pour ses rangs voisins.
Suivant la fenêtre temporelle N, la nouvelle fenêtre temporelle N+l commence à T+64 ms, et la table de logique de détection est initialisée, puisque initialisée au commencement de chaque fenêtre temporelle (comme expliqué dans ), cette initialisation conduisant en particulier à la mise à zéro du compteur d’activations associé au rang 20000.
Entre les temps T+64 ms et T+80 ms, le rang 20000 n’est pas encore rafraîchi (il sera rafraîchi entre 64+16 ms et 64+32 ms), et le rang 20000 est activé 10000 fois de plus, donc :
Le rang 20 000 a été activé plus de 125 000 fois (130 000 fois) sur une période de temps inférieure à 64 ms (de T+32 ms à T+80 ms) et pourtant, le besoin de rafraîchissements
préventifs pour ses deux voisins n’a pas été découvert par la logique proposée par US 20140006704 Al.
ne convient pas à l’intégration à une DRAM
Un contrôleur DRAM externe fera typiquement partie d’un ASIC fabriqué sur un processus adapté pour créer de la logique rapide, un tel processus étant appelé processus logique (« logic process »).
Les DRAM sont fabriqués avec des processus spécialisés, permettant aux condensateurs utilisés pour les cellules mémoire d’être construits, et la logique construite en utilisant de tels processus est bien plus lente que si elle l’était en utilisant un processus logique.
Par conséquent, un algorithme implémenté dans une DRAM sera typiquement bien plus lent que le même algorithme implémenté dans un ASIC.
La seule méthode expliquée dans US 2014 nécessite le tri d’une table de comptages d’activations de rang (il n’y a nulle part d’explication pratique expliquant comment se débarrasser du tri de la table).
Trier est une procédure coûteuse, qui peut être suffisamment rapide si elle est implémentée sur un processus logique, mais elle n’est probablement pas assez rapide quand elle est implémentée sur un processus DRAM, en particulier en considérant que l’ensemble de l’algorithme doit être exécuté en moins de 45 ns, le temps minimum séparant deux commandes d’activations visant un même banc. Résumé L’une des concrétisations de la description présentée est de solutionner au moins partiellement l’un ou plus des problèmes de l’art antérieur.
Selon un des aspects, il est fourni un dispositif mémoire comprenant un ou plusieurs bancs, chaque banc comprenant une pluralité de rangs mémoire, le dispositif mémoire comprenant par ailleurs : un port d’accès externe configuré pour permettre à un contrôleur mémoire externe d’activer, puis d’accéder aux rangs mémoire de chaque banc ; un ou plusieurs processeurs internes capables d’activer, puis d’accéder aux rangs mémoire de chaque banc ; une logique de détection de déclenchement du Row Hammer configurée pour surveiller, pour chaque banc, les commandes de activations provenant d’une part du contrôleur mémoire externe et d’autre part d’un ou plusieurs processeurs internes, la logique de détection de déclenchement comprenant du stockage mémoire : une ou plusieurs tables indiquant, pour chaque rang d’un sous-ensemble de rangs de chaque banc, une valeur de comptage basée sur le nombre de commandes d'activations visant le rang, où le sous-ensemble de rangs associé à la valeur de comptage dans une ou plusieurs tables est variable dynamiquement, pour indiquer les rangs les plus fréquemment activés, basé sur la détection des commandes d’activations visant chaque rang de chaque banc ; une valeur de comptage supplémentaire indiquant le nombre maximum de commandes d’activations qui auraient pu viser l’un des rangs ne faisant pas partie à ce moment du dit sous-ensemble de rangs ; et dans lequel la logique de détection du déclenchement du Row Hammer est configurée pour comparer chacune des dites valeurs de comptage avec un niveau de seuil afin d’identifier un ou plusieurs rangs dans le sous-ensemble de rangs, et de déclencher une opération de rafraîchissement de l’un ou plusieurs des rangs adjacents à chaque rang identifié.
Suivant l’un des modes de réalisation, une ou plusieurs tables comprennent une entrée associée à chaque rang du sous-ensemble de rang, chaque entrée comprenant ladite valeur de comptage, dans laquelle le nombre d’entrées dans la ou lesdites tables supplémentaires est inférieure à un centième du nombre de rang dans chaque banc.
Suivant l’un des modes de réalisation, le dispositif mémoire comprend par ailleurs une logique d'envoi de rafraîchissement préventif pour un ou plusieurs rangs adjacents de chaque rang identifié en émettant des requêtes de rafraîchissement à la place des requêtes de rafraîchissement périodiques générées par le contrôleur de mémoire expert, retardant de ce fait une ou plusieurs desdites requêtes de rafraîchissement périodiques.
Selon l’un des modes de réalisation, la quantité de temps de laquelle les requêtes de rafraîchissement périodiques sont retardés n’excède pas une quantité maximum qui permette à chaque banc mémoire de retenir correctement ces données au fil du temps.
Selon l’un des modes de réalisation, la logique d'envoi de rafraîchissement préventif comprend une mémoire mémorisant une indication sur le rang, ou les rangs adjacents de chacun des rangs identifiés comme devant être rafraîchis.
Selon l’un des modes de réalisation, un protocole externe utilisé par le contrôleur de mémoire externe permet au dispositif mémoire de prendre l’initiative de générer des rafraîchissements.
Selon l’un des modes de réalisation, la logique de détection de déclenchement du Row Hammer est configurée, après chaque commande d’activation provenant du contrôleur externe mémoire ou de l’un des processeurs internes : pour modifier la valeur de comptage associée au rang visé par la commande d’activation si le rang visé appartient au sous-ensemble de rangs ; ou pour remplacer une entrée dans une ou plusieurs des tables par une entrée correspondant au rang visé par la commande d’activation si la valeur de comptage de cette entrée est égale à la valeur de comptage supplémentaire; ou pour modifier la valeur de comptage supplémentaire si le rang visé n’appartient pas à l’un des sous-ensembles de rangs et qu’aucune des valeurs de comptage dans l’une ou plusieurs des tables n’est égale à la valeur de comptage supplémentaire.
Selon un aspect supplémentaire, il est fourni une méthode pour protéger un dispositif mémoire de l’effet Row Hammer, le dispositif mémoire comprenant un ou plusieurs bancs, chacun des bancs comprenant plusieurs rangs mémoire, la méthode comprenant : surveiller, par de la logique de détection de déclenchement du Row Hammer et pour chaque banc, les commandes d’activation de rang générée par d’une part un contrôleur externe mémoire et d’autre part un ou plusieurs processeurs internes ; mémoriser, par de la logique de détection de déclenchement du Row Hammer, une ou plusieurs tables indiquant, pour chaque rang d’un sous-ensemble de rangs de chaque banc, une valeur de comptage basée sur le nombre de commandes d’activation visant le rang, dans lequel le sous-ensemble de rangs associé à la valeur de comptage dans une ou plusieurs tables est dynamiquement variable pour indiquer les rangs les plus fréquemment activés basée sur une détection des commandes d’activation visant chaque rang de chaque banc ; mémoriser, par une logique de détection de déclenchement du Row Hammer, une valeur de comptage supplémentaire indiquant le nombre maximum de commandes d’activation qui pourrait avoir visé n’importe lequel des rangs ne faisant pas à ce moment partie dudit sous-ensemble de rangs ; comparer, par une logique de détection de déclenchement du Row Hammer, chacune des valeurs de comptage avec un niveau de seuil afin d’identifier un ou plusieurs rangs dans une ou plusieurs tables ; et déclencher, par une logique de détection de déclenchement, une opération de rafraîchissement de l’un ou plusieurs rangs adjacents à chacun des rangs identifiés.
Selon l’un des modes de réalisation, la méthode comprend aussi l’implémentation, par une logique d'envoi de rafraîchissement préventif, une opération de rafraîchissement pour un ou plusieurs rangs adjacents à chacun des rangs identifiés en émettant des requêtes de rafraîchissement à la place des requêtes de rafraîchissement périodiques générées par le contrôleur externe mémoire, retardant par là une ou plusieurs desdites requêtes de rafraîchissement périodique.
Selon l’un des modes de réalisation, la méthode comprend aussi : après chaque commande d’activation émise par le contrôleur mémoire externe ou par un des processeurs internes : modifier la valeur de comptage associée avec le rang visé par la commande d’activation si le rang visé appartient au sous-ensemble de rangs ; et remplacer une entrée dans une ou plusieurs tables par une entrée correspondant au rang visé par la commande d’activation si la valeur de comptage de cette entrée est égale à la valeur de comptage supplémentaire ; et modifier la valeur de comptage supplémentaire si le rang visé n’appartient pas ou sous-ensemble de rangs et aucune des valeurs de comptage dans une ou plusieurs tables m’est égale à la valeur de comptage supplémentaire.
Brève description des dessins
Les avantages et les caractéristiques précédentes et autres vont apparaître à partir de la description détaillée suivante des modes de réalisation, fourni à titre d'exemple non limitatif, avec références au dessin associé, dans lequel :
La figure 1 illustre schématiquement une partie d’un système de calcul (« computing System ») comprenant un dispositif mémoire qui intègre des processeurs selon un exemple de mode de réalisation.
Principes d’opération des modes de réalisation de la présente invention
Pour chaque banc de la DRAM, les modes de réalisation décrits ci-après par exemple comprennent deux blocs : • Une unité de détection de déclenchement, et • Une unité d'envoi de rafraîchissement où l’unité de détection de déclenchement nourrit l’unité d'envoi de rafraîchissement. A chaque commande d’activation concernant le banc, l’unité de détection de déclenchement, détaillée ci-après, indique si le rang visé par cette commande d’activation a potentiellement atteint la valeur de déclenchement. Le terme « potentiellement » reflète le fait que des faux positifs sont possibles, mais sans conséquence puisque suffisamment peu fréquents, comme montré ci-après. L’unité d'envoi de rafraîchissement comprend par exemple une FIFO, appelée ici la FIFO de rafraîchissement préventif, et quand une commande d’activation, visant un rang donné, est marquée comme ayant atteint sa valeur de comptage de déclenchement, alors les deux index des deux rangs voisins de ce rang donné sont calculés puis poussés dans cette FIFO.
Quand la FIFO de rafraîchissement préventif n’est pas vide, les rafraîchissements préventifs devront être émis, mais le banc DRAM de pourra par initier ces rafraîchissements préventifs de sa propre initiative : • Du point de vue du protocole, la puce mémoire DRAM est un esclave du contrôleur externe mémoire DRAM, et avoir un banc d’une puce DRAM capable d’effectuer des rafraîchissements de sa propre initiative romprait le protocole entièrement.
Le contrôleur externe mémoire qui est connecté à la DRAM génère régulièrement des requêtes de rafraîchissement périodique. Un rafraîchissement périodique ne spécifie pas l’index du rang à rafraîchir : cet index étant généré par une logique DRAM interne appelée logique de compteur de rafraîchissement (puisque c’est généralement juste un compteur).
Donc dans les modes de réalisation de cette présente invention, chaque banc a sa propre logique de compteur de rafraîchissement et chaque fois qu’un banc DRAM reçoit une requête de rafraîchissement périodique générée par le contrôleur externe DRAM alors : • si la FIFO de rafraîchissement préventif pour ce banc n’est pas vide alors l’index du rang à rafraîchir n’est pas fourni par le compteur de rafraîchissement, mais est sorti du FIFO de rafraîchissement préventif, le compteur de rafraîchissement de ce banc restant inchangé. • si la FIFO de rafraîchissement préventif est vide alors l’index du rang à rafraîchir est fourni par le compteur de rafraîchissement de ce banc, celui-ci étant mis à jour.
Puisque l’exécution des rafraîchissements préventifs est rythmée par les rafraîchissements périodiques, la valeur de déclenchement doit être réduite du nombre d’activations qui peuvent être fartes durant le délai pire-cas entre la découverte qu’un rafraîchissement périodique est nécessaire et son exécution effective, ce délai pire-cas résultant : • du fait que plusieurs rafraîchissements préventifs ont pu être accumulés dans la FIFO, ceci étant facilité par le fait que les rafraîchissements préventifs sont générés par paires • du besoin d’attendre pour la réalisation effective de chaque rafraîchissement préventif en attente, une requête de rafraîchissement périodique.
En ignorant la latence intrinsèque de la logique, le délai pire-cas est à peu près Max_Triggered x 2 x Max_Timed_Refresh_Period, où : • Max_Triggered est le nombre de rangs d’un banc qui peuvent être activés suffisamment de fois pour atteindre la valeur de déclenchement dans une fenêtre temporelle de 64 ms, • Max_Timed_Refresh_Period est le temps maximum entre deux requêtes de rafraîchissement périodique.
Extension de la fenêtre de rafraîchissement L’exécution effective des rafraîchissements préventifs retarde les rafraîchissements périodiques, mais le délai maximum est suffisamment petit pour être sans conséquence :
Lin banc DRAM typique ayant 65536 rangs, le contrôleur de mémoire externe génère en moyenne, pour un banc, un rafraîchissement périodique tous les 976 ns (64 ms / 65536).
Typiquement une commande d’activation peut être émise toutes les 45 ns vers un banc donné, ce qui signifie que pour une fenêtre temporelle de 64 ms, moins de 1423000 commandes d’activation peuvent viser un même banc, ce nombre étant appelé Max_activate_m_wmdow.
Considérant une valeur intrinsèque de Row Hammer de 125000, cela signifie que dans une fenêtre de 64 ms, il peut y avoir un maximum de 11 agresseurs dans un banc DRAM donné.
Considérant l’exemple précédent, dans le pire cas, au lieu de rafraîchir 65536 rangs en 64 ms, alors 65536+(11x2) rangs peuvent être rafraîchis, ce qui conduit à l’extension de la fenêtre de rafraîchissement de 64 ms à 64,022 ms. Une si petite extension n’est absolument pas un problème puisque le chiffre de 64 ms est une valeur prudemment basse.
Figure 1
La figure 1 synthétise l’explication jusqu’ici :
Un contrôleur externe mémoire 111, qui fait par exemple partie d’un ASIC 110, est couplé à un dispositif de mémoire 120 à travers un bus attaché à l’interface du dispositif mémoire 121 du dispositif mémoire 120.
Un banc 126 peut être accédé par le contrôleur de mémoire externe 111 et par le processeur intégré 122.
Une logique de détection de déclenchement 123 surveille les commandes d’activation générés par le contrôleur mémoire externe 111 et par le processeur intégré 122.
La logique de détection de déclenchement 123 indique, à travers l’assertion d’un signal "TRIG reached", quand l’activation du rang couramment activé implique que ce rang peut potentiellement atteindre la valeur de déclenchement.
La logique d'envoi de rafraîchissement 124 reçoit le signal "TRIG reached" et détermine alors les index des deux rangs qui sont adjacents au rang « sur le point de devenir » agresseur, puis par exemple pousse ces deux index dans la LILO de la logique d'envoi de rafraîchissement 124.
La LILO est par exemple vidée en préemptant les créneaux de rafraîchissement périodique. Les rafraîchissements correspondants ne sont par exemple pas perdus mais simplement retardés, puisque la logique de compteur de rafraîchissement 125 n’est pas mise à jour. L’unité de détection de déclenchement
Comme il deviendra apparent plus tard, l’algorithme utilisé par l’unité de détection de déclenchement est par exemple approximatif, et pour compenser cela, la valeur de déclenchement effective retenue Trig_Eff est par exemple : • initialement basée sur la moitié de la valeur de déclenchement intrinsèque, la raison pour cela étant détaillé plus loin, • encore réduite pour prendre en compte le délai de pire cas pour avoir un rafraîchissement préventif effectivement réalisé, comme précédemment expliqué. Puisque le délai pire-cas dépend principalement du nombre maximum de rafraîchissements préventifs en attente, qui dépendent de Trig_Eff, la valeur Trig_Eff exacte est par exemple calculée itérativement.
La conséquence pratique est que plus de rafraîchissements préventifs que strictement nécessaire pourraient être émis. Ce n’est pas un problème puisque le nombre de ces rafraîchissements préventifs reste marginal par rapport au nombre de rafraîchissements périodiques : • puisque les rafraîchissements préventifs volent des créneaux de rafraîchissement périodique, il n’y a pas de pénalité de performance résultant de l’émission de rafraîchissements préventifs inutiles • le seul impact pratique est que la fenêtre de 64 ms de rafraîchissement peut être étendue plus que strictement nécessaire. Ceci est sans conséquence puisque cette extension reste très petite en pourcentage.
Alors qu’il génère des faux positifs, l’algorithme proposé ne génère par de faux négatifs, à la différence du système décrit dans US 2014
Algorithme de l’unité de détection de déclenchement L’unité de logique de détection de déclenchement comprend par exemple une table, la table RACT (Row Activate Count Table) qui a Nbr_of_entries entrées, où Nbr_of_entries est par exemple calculée comme suit :
Nbr_of_entries = INT (Max_activate_m_wmdow / Trig_Eff) Où la fonction INT retourne sa valeur d’entrée arrondie à la valeur entière immédiatement inférieure ou égale.
Chaque entrée RACT comprend par exemple deux champs : • Un champ ROW_COUNT qui est suffisamment large pour contenir une valeur jusqu’à TrigEff, • Un champ R0W_INDEX qui est suffisamment large pour contenir toutes les valeurs possibles d’index de rangs, et une valeur additionnelle qui n’est jamais un index de rang, appelée no_row.
De plus, la logique de détection de déclenchement comprend par exemple un registre appelé OTHER_ROWS_COUNT, suffisamment large pour contenir une valeur jusqu’à Trig_Eff-l. N’importe quelle référence de temps périodique peut être utilisée, mais pour la simplicité de l’explication, dans un banc, une fenêtre de rafraîchissement est dite commencée par exemple quand : • la logique de compteur de rafraîchissement du banc désigne à ce moment le rang 0, • une requête de rafraîchissement périodique est générée par le contrôleur de mémoire externe. A chaque fois qu’une fenêtre de rafraîchissement démarre, la logique de détection du déclenchement par exemple :
• met à zéro les champs ROW_COEfNT de toutes les entrées de RACT • initialise les champs R0W_INDEX de toutes les tables RACT à no_row, • met à zéro le registre OTHER_ROWS_COUNT.
Chaque fois qu’une commande d’activation, visant un rang avec un index J, est exécutée par un banc, alors la logique de détection de déclenchement lit par exemple les entrées de RACT pour atteindre un premier objectif et un second objectif, le second n’étant pris en compte que si le premier n’est pas atteint : • Le premier objectif est de trouver une entrée de RACT dont le champ R0W_INDEX a la valeur J, • Le second objectif est de trouver une entrée de RACT dont le champ R0W_C0UNT est égal à OTHER_ROWS_COUNT.
Premier objectif atteint Dès que le premier objectif est atteint, alors la lecture des entrées est par exemple stoppée et : • le champ R0W_C0UNT de l’entrée trouvée est incrémenté, • si la valeur du champ ROW_COUNT de l’entrée trouvée est égale à Trig_Eff, alors : o le champ ROW_INDEX de l’entrée trouvée est par exemple mis à no row. o les index des rangs des deux voisins du rang J sont par exemple poussés dans la FIFO de rafraîchissement préventif.
Premier objectif non atteint est second objectif atteint
Dans l’explication suivante, l’index de la table RACT de l’entrée trouvée est appelée Fidx (Found Index), donc nous avons :
OTHER_ROWS_COUNT == RACT[Fidx].ROW_COUNT
La logique de détection de déclenchement effectue alors : • RACT[Fidx] .ROW_COUNT est incrémenté, • RACT[Fidx] ,ROW_INDEX est mise à J.
Premier et second objectifs non atteints • OTHER_ROW_COUNT est incrémenté
Dans cet algorithme, un rang est toujours associé à un compteur d’activation, un rang R par exemple étant : • soit associé au nombre d’activations contenu par le champ ROW_COUNT d’une entrée de RACT dont le champ ROW_INDEX est égal à R, • ou associé au nombre d’activations contenu dans le registre OTHER_ROWS_COUNT. L’algorithme assure par exemple que le nombre couramment associé à un rang est toujours supérieur ou égal au nombre d’activations réel depuis le début de la fenêtre de rafraîchissement. L’algorithme assure aussi par exemple que OTHER_ROWS_COUNT est plus petit que les champs RACT.ROW_COUNT les plus petits, donc l’algorithme assure que si le nombre d’activations effective du rang R atteint Trig_Eff, ceci arrivera dans une entrée de RACT, et non dans le registre OTHER_ROWS_COUNT.
Dimensionner la FIFO de rafraîchissement préventif
Puisque les rafraîchissements préventifs s’accumulent potentiellement dans la FIFO de rafraîchissement préventif, dans certains modes de réalisation une limite haute aux nombres maximum de rafraîchissements préventifs qui peuvent être poussés dans cette FIFO est déterminée, afin de la dimensionner convenablement.
Une entrée n’atteint la valeur Trig Eff qu’en ayant compté Trig_Eff activations, visant potentiellement différents rangs (c’est ainsi que des faux positifs peuvent arriver) ou en visant un rang unique (et c’est certainement un vrai positif).
Il est donc impossible que la logique de détection au déclenchement génère plus qu’une paire de rafraîchissement préventif pas entrée de RACT.
Variante d’algorithme
Dans l’algorithme décrit précédemment, la valeur de registre OTHER_ROWS_COUNT est par exemple nécessairement inférieure ou égale au champ ROW_COUNT le plus petit des entrées de RACT.
Donc OTHER_ROW_COUNT ne peut atteindre Trig_Eff, car sinon la valeur aurait entraîné une entrée supplémentaire RACT.
La logique de détection de déclenchement est fondamentalement un cache, dont l’associativité est égale au nombre d’entrées. L’algorithme précédemment expliqué a son associativité réduite chaque fois qu’une entrée atteint Trig_Eff, l’entrée étant effectivement enlevée puisque : • Son ROW_INDEX est initialisée à no_row: aucun rang activé ne peut plus atteindre cette entrée • Son champ ROW_COUNT reste à la valeur Trig_Eff : il ne peut pas être égal à OTHER_ROWS_COUNT.
La variation suivante de l’algorithme initial maintient l’associativité constante en recyclant les entrées de RACT qui atteignent Trig_Eff :
Premier objectif atteint Dès que le premier objectif est atteint, alors la lecture des entrées de RACT est par exemple stoppée et : • Si la valeur du champ ROWCOUNT de l’entrée trouvée est égale à Trig_Eff-l, alors : • Le champ ROW_INDEX de l’entrée trouvée est par exemple mis à no row. • Le champ ROW_COUNT l’entrée trouvée est par exemple mis à la valeur contenue par OTHER_ROWS_COUNT, • Les index de rang des deux voisins du rang J sont par exemple poussés dans la LILO de rafraîchissement préventif. • Sinon le champ ROW_COUNT de l’entrée trouvée est incrémenté.
Premier objectif non atteint et second objectif atteint
La logique de détection de déclenchement implémente alors par exemple ce qui suit : • RACT[Fidx] .ROW_COUNT est incrémenté, • RACT[Fidx] ,ROW_INDEX est mis à J.
Premier objectif et second objectif non atteints • OTHER_ROW_COUNT est par exemple incrémenté
Dimensionner la FIFO de rafraîchissement préventif pour la variante d’algorithme
Cette variante d’algorithme maintient l’associativité constante au lieu de la réduire graduellement, et conduit donc nécessairement à moins de faux positifs. Par conséquent, elle ne peut générer plus de rafraîchissements préventifs que l’algorithme initial, et donc ne peut pas générer plus de deux rafraîchissements préventifs par entrée RACT.
Justification du calcul Trig_Eff
La logique exposée est capable de détecter si un rang a atteint Trig_Eff. Donc, quand une nouvelle fenêtre de rafraîchissement commence, le « passé d’activation » maximum de n’importe quel rang vaut jusqu’à Trig_Eff_trig-l, puisqu’une telle valeur ne génère pas encore de rafraîchissement préventif.
Donc, avant d’atteindre la valeur Trig_Eff dans une fenêtre de rafraîchissement donnée, un rang peut avoir accumulé en fait (Trig_Eff-l) + (Trig_Eff-l), la première valeur (Trig_Eff-l) étant héritée de la fenêtre précédente de rafraîchissement. Donc la logique détectera en fait de manière fiable seulement (Trig_Eff x 2) -1 activations, expliquant pourquoi le calcul itératif Trig_Eff par exemple commence à partir de la moitié de la valeur de déclenchement intrinsèque. Généralisations
Les modes de réalisation de la présente description ont été décrits dans le contexte de bancs DRAM, mais évidemment les techniques ici décrites pourraient être appliquées à n’importe quel tableau mémoire qui serait équivalent à un banc haute densité DRAM (ayant une opération de rafraîchissement et souffrant de l’effet Row Hammer).
Des références ont été fartes au protocole DDR4, à titre d’exemple, à différents endroits de ce document. Evidemment, les techniques ici décrites pourraient être appliquée à tous les protocoles mémoire affiliés, tels que : • DDR, DDR2, DDR3, DDR4 dans leurs versions basse consommation, • GDDR, GDDR2, GDDR3, GDDR4, GDDR5, • HBM.
De plus les modes de réalisation ici décrits pourraient être appliqués aux dispositifs mémoire, avec des processeurs intégrés, utilisant des protocoles qui permettent à la DRAM de prendre des initiatives d’exécuter des rafraîchissements, comme le protocole HMC. Dans ce cas, l’unité d'envoi de rafraîchissement préventif décrite ici peut-être omise, seule restant l’unité de détection de déclenchement.
Pour simplifier, une fenêtre de rafraîchissement de 64 ms a été considérée, comme cette valeur est celle actuellement utilisée. Evidemment, les modes de réalisation ici décrits pourraient être appliqués à n’importe quelle durée de fenêtre de rafraîchissement qui serait utilisée par une technologie DRAM donnée, et même à une DRAM où les durées de rafraîchissement s’adaptent continuellement à la variation de paramètres externes, telle la température, le voltage, le niveau de radiation, etc...
De même, le nombre de rangs égal à 65536 a été donné comme un exemple parce qu’il est représentatif des DRAM actuellement fabriquées. Evidemment les modes de réalisation ici décrits pourraient être appliqués indépendamment du nombre de rangs présents dans le banc. L’algorithme présenté jusqu’ici et ses variations peuvent être modifiées en de nombreuses façons tout en restant dans le cadre de l’invention. La liste suivante fournit des exemples de telles modifications qui peuvent être implémentées individuellement ou combinées dans n’importe quel sous combinaison, cette liste étant donnée à titre d’exemple et non à titre de limitation : • Factoriser certaines des ressources matérielles décrites sur plusieurs bancs DRAM, • Remplacer une table avec différents champs avec différentes tables avec moins de champs, • Remplacer une table par différentes tables plus petites, l’algorithme étant modifié afin de manipuler plusieurs entrées à la fois • Utiliser un bit valide à la place d’une valeur no_row, ce bit valide étant positionné sur un champ additionnel de chaque entrée, ou dans une table additionnelle, • Décompter les commandes d’activation au lieu de les compter, le champ ROW_COUNT de RACT et le registre OTHER_ROWS_COUNT étant initialisés avec un nombre de commandes d’activation permise pour la fenêtre de rafraîchissement, • Grouper les rangs en paquets de rangs topologiquement adjacents, l’activation étant suivi au niveau du paquet de rangs, et quand le nombre d’activation atteint Trig_Eff, alors : o Tous les rangs du paquet des agresseurs sont rafraîchis o Les deux rangs qui sont voisins du paquet agresseur sont rafraîchis (ou les deux paquets de rangs correspondants sont rafraîchis, si les rafraîchissements sont gérés au niveau de granularité du paquet de rangs).
Claims (10)
- REVENDICATIONS1. Un dispositif mémoire comprenant un ou plusieurs bancs (126), chaque banc comprenant plusieurs rangs de mémoire, le dispositif mémoire comprenant par ailleurs : un port d’accès externe (121) configuré pour permettre à un contrôleur de mémoire externe (111) d’activer, puis d’accéder, aux rangs mémoire de chaque banc ; un ou plusieurs processeurs internes (122) capables d’activer, puis d’accéder, aux rangs mémoire de chaque banc ; une logique de détection de déclenchement du Row Hammer (123) configuré pour surveiller, pour chaque banc, les commandes d’activation émises par le contrôleur de mémoire externe et par un ou plusieurs Processeurs internes, la logique de détection du déclenchement du Row Hammer comprenant de la mémoire mémorisant : une ou plusieurs tables indiquant, pour chaque rang d’un sous-ensemble de rangs de chaque banc, une valeur de comptage basée sur le nombre de commandes d’activation visant le rang, dans lequel le sous-ensemble de rangs associés à la valeur de comptage dans l’une ou plusieurs tables est dynamiquement variable pour indiquer les rangs les plus fréquemment activés basée sur une détection des commandes d’activation visant chaque rang de chaque banc ; une valeur de comptage supplémentaire indiquant le nombre maximum de commandes d’activation qui pourraient avoir visé n’importe quel rang ne faisant pas partie dudit sous-ensemble de rangs ; et dans lequel la logique de détection de déclenchement du Row Hammer est configurée pour comparer de chacune desdites valeurs de comptage avec un niveau de seuil afin d’identifier un ou plusieurs rangs dans le sous-ensemble de rangs, et de déclencher une opération de rafraîchissement d’un ou plusieurs rangs adjacents à chaque rang identifié.
- 2. Le dispositif mémoire de la revendication 1, dans lequel une ou plusieurs tables comprennent une entrée associée avec chaque rang du sous-ensemble de rangs, chaque entrée comprenant ladite valeur de comptage, dans laquelle le nombre d’entrées de ladite où desdites tables est inférieur au centième du nombre de rangs de chaque banc.
- 3. Le dispositif mémoire de la revendication 1 ou 2, comprenant par ailleurs une logique d'envoi de rafraîchissement préventif (124) configurée pour implémenter une opération de rafraîchissement pour l’un ou plusieurs des rangs adjacents de chaque rang identifié en émettant des requêtes de rafraîchissement à la place des requêtes de rafraîchissement périodique générées par le contrôleur mémoire externe, retardant ce faisant une ou plusieurs desdites requêtes de rafraîchissement périodique.
- 4. Le dispositif mémoire de la revendication 3, dans lequel la durée de laquelle lesdites requêtes de rafraîchissement périodique sont retardées n’excède pas une durée maximum qui permette à chaque mémoire de retenir correctement ses données dans le temps.
- 5. Le dispositif mémoire de la revendication 3 ou 4, dans lequel la logique d'envoi de rafraîchissement préventif comprend une mémoire (FIFO) stockant, pour chaque rang identifié, une indication de l’un ou plusieurs rangs adjacents à rafraîchir.
- 6. Fe dispositif mémoire de la revendication 1 ou 2, dans lequel un protocole externe utilisé par le contrôleur de mémoire externe permet aux dispositifs mémoire de prendre l’initiative de générer des rafraîchissements.
- 7. Fe dispositif mémoire de n’importe quel des revendications 1 à 6, dans lequel la logique de détection de déclenchement du Row Hammer est configurée, après chaque commande d’activation émise par le contrôleur de mémoire externe ou par un des processeurs internes, pour : - modifier la valeur de comptage associée au rang visé par la commande d’activation si le rang visé fait partie du sous-ensemble de rangs; et - remplacer une entrée dans une ou plusieurs tables par une entrée correspondant au rang visé par la commande d’activation si la valeur de comptage de cette entrée est égale à la valeur de comptage supplémentaire; et - modifier la valeur de comptage supplémentaire si le rang visé ne fait pas partie du sous-ensemble de rangs et aucune des valeurs de comptage dans une ou plusieurs tables n’est égale à la valeur de comptage supplémentaire.
- 8. Une méthode de protection du dispositif mémoire de l’effet Row Hammer, le dispositif mémoire comprenant un ou plusieurs bancs (126), chaque banc comprenant plusieurs rangs mémoire, la méthode comprenant : surveiller, par la logique de détection de déclenchement du Row Hammer (123) et pour chaque banc, les commandes d’activation de rang émises par le contrôleur de mémoire externe et par un ou plusieurs processeurs internes du dispositif mémoire, chaque commande d’activation de rang causant au rang dudit banc d’être activé avant d’être accédé par le contrôleur mémoire externe ou par un ou plusieurs processeurs internes ; stocker, par la logique de détection de déclenchement du Row Hammer, une ou plusieurs tables indiquant pour chaque rang d’un sous-ensemble de rangs de chaque banc, une valeur de comptage basée sur le nombre de commandes d’activation visant le rang, dans lequel le sous-ensemble de rangs associé à une valeur de comptage dans une ou plusieurs tables est dynamiquement variable pour indiquer les rangs les plus fréquemment activés basée sur la détection des commandes d’activation visant chaque rang de chaque banc; mémoriser, par la logique de détection de déclenchement du Row Hammer, une valeur de comptage supplémentaire indiquant le nombre maximum de commandes d’activations qui ont pu viser n’importe quel rang ne faisant pas partie dudit sous-ensembles de rangs ; comparer, par la logique de détection de déclenchement du Row Hammer, chacune des valeurs de comptage avec un niveau de seuil afin d’identifier un ou plusieurs rangs dans une ou plusieurs tables ; et déclencher, par la logique de détection de déclenchement du Row Hammer, une opération de rafraîchissement d’un ou plusieurs rangs adjacents au rang identifié.
- 9. La méthode de la revendication 8, comprenant par ailleurs l’implémentation, par la logique d'envoi de rafraîchissement préventif (124), d’une opération de rafraîchissement pour un ou plusieurs rangs adjacents de chaque rang identifié en émettant des requêtes de rafraîchissement à la place des requêtes de rafraîchissement périodique générées par le contrôleur de mémoire externe, retardant ce faisant un ou plusieurs desdites requêtes de rafraîchissement périodique.
- 10. La méthode de la revendication 8 ou 9, comprenant par ailleurs : après chaque commande d’activation émise par le contrôleur de mémoire externe ou par l’un des processeurs internes : - modifier la valeur de comptage associée au rang visé par la commande d’activation si le rang visé fait partie du sous-ensemble de rang ; et - remplacer une entrée dans une ou plusieurs tables par une entrée correspondant au rang visé par la commande d’activation si la valeur de comptage de cette entrée est égale à la valeur supplémentaire de comptage ; et - modifier la valeur de comptage supplémentaire si le rang visé ne fait pas partie du sous-ensemble de rangs et aucune des valeurs de comptage dans une ou plusieurs tables de n’est égale à la valeur de comptage supplémentaire.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1770532A FR3066842B1 (fr) | 2017-05-24 | 2017-05-24 | Logique de correction de row hammer pour dram avec processeur integre |
KR1020197038136A KR102480349B1 (ko) | 2017-05-24 | 2018-05-18 | 집적 프로세서를 갖는 dram의 로우 해머 수정 로직 |
CN201880034535.7A CN110741436B (zh) | 2017-05-24 | 2018-05-18 | 用于具有集成处理器的dram的行锤效应校正逻辑模块 |
PCT/FR2018/051200 WO2018215715A1 (fr) | 2017-05-24 | 2018-05-18 | Logique de correction de row hammer pour dram avec processeur integre |
US16/615,636 US11049544B2 (en) | 2017-05-24 | 2018-05-18 | Row hammer correction logic for dram with integrated processor |
JP2019564461A JP7142946B2 (ja) | 2017-05-24 | 2018-05-18 | 統合プロセッサを備えたdramのロウハンマー修正ロジック |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1770532A FR3066842B1 (fr) | 2017-05-24 | 2017-05-24 | Logique de correction de row hammer pour dram avec processeur integre |
FR1770532 | 2017-05-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3066842A1 true FR3066842A1 (fr) | 2018-11-30 |
FR3066842B1 FR3066842B1 (fr) | 2019-11-08 |
Family
ID=60020231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1770532A Active FR3066842B1 (fr) | 2017-05-24 | 2017-05-24 | Logique de correction de row hammer pour dram avec processeur integre |
Country Status (6)
Country | Link |
---|---|
US (1) | US11049544B2 (fr) |
JP (1) | JP7142946B2 (fr) |
KR (1) | KR102480349B1 (fr) |
CN (1) | CN110741436B (fr) |
FR (1) | FR3066842B1 (fr) |
WO (1) | WO2018215715A1 (fr) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3111731A1 (fr) | 2020-06-23 | 2021-12-24 | Upmem | Procédé et circuit de protection d’un dispositif de mémoire DRAM de l’effet de martelagede rang |
WO2021259593A1 (fr) | 2020-06-23 | 2021-12-30 | Upmem | Procédé et circuit de protection d'un dispositif de mémoire dram contre l'effet d'attaques répétées |
WO2022175619A1 (fr) | 2021-02-22 | 2022-08-25 | Upmem | Dispositif memoire pourvu de circuits memoire dram agences de maniere a minimiser la taille d'un bloc memoire permettant la gestion de l'effet de martelage de rang |
WO2023104891A1 (fr) | 2021-12-09 | 2023-06-15 | Upmem | Dispositif mémoire dram mettant en œuvre un mécanisme de gestion du martelage de rang |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11354408B2 (en) * | 2019-08-15 | 2022-06-07 | Nxp Usa, Inc. | Technique for detecting and thwarting row-hammer attacks |
US11222685B2 (en) * | 2020-05-15 | 2022-01-11 | Advanced Micro Devices, Inc. | Refresh management for DRAM |
US11561862B2 (en) * | 2020-05-29 | 2023-01-24 | Advanced Micro Devices, Inc. | Refresh management for DRAM |
US11120860B1 (en) * | 2020-08-06 | 2021-09-14 | Micron Technology, Inc. | Staggering refresh address counters of a number of memory devices, and related methods, devices, and systems |
US11809743B2 (en) * | 2020-09-21 | 2023-11-07 | Advanced Micro Devices, Inc. | Refresh management list for DRAM |
US20220129200A1 (en) * | 2020-10-26 | 2022-04-28 | Qualcomm Incorporated | Dram with quick random row refresh for rowhammer mitigation |
US11749333B2 (en) * | 2020-12-10 | 2023-09-05 | SK Hynix Inc. | Memory system |
FR3121262A1 (fr) * | 2021-03-29 | 2022-09-30 | Upmem | Dispositif mémoire et procédé de protection d’un dispositif mémoire de l’effet de martelage d’un rang |
EP4138078A1 (fr) * | 2021-08-18 | 2023-02-22 | ETH Zurich | Procédé de protection de module dram contre les attaques par martèlement et module dram |
KR20230051873A (ko) | 2021-10-12 | 2023-04-19 | 삼성전자주식회사 | 해머 리프레시 로우 어드레스 검출기, 이를 포함하는 반도체 메모리 장치 및 메모리 모듈 |
KR20230072283A (ko) | 2021-11-17 | 2023-05-24 | 삼성전자주식회사 | 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 |
US20230359361A1 (en) * | 2022-05-05 | 2023-11-09 | Micron Technology, Inc. | Frequency regulation for memory management commands |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463001B1 (en) * | 2000-09-15 | 2002-10-08 | Intel Corporation | Circuit and method for merging refresh and access operations for a memory device |
WO2017048441A1 (fr) * | 2015-09-17 | 2017-03-23 | Intel Corporation | Rafraîchissement hybride avec rafraîchissements cachés et rafraîchissements externes |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9236110B2 (en) * | 2012-06-30 | 2016-01-12 | Intel Corporation | Row hammer refresh command |
US8938573B2 (en) | 2012-06-30 | 2015-01-20 | Intel Corporation | Row hammer condition monitoring |
US20140085995A1 (en) * | 2012-09-25 | 2014-03-27 | Zvika Greenfield | Method, apparatus and system for determining a count of accesses to a row of memory |
US9299400B2 (en) * | 2012-09-28 | 2016-03-29 | Intel Corporation | Distributed row hammer tracking |
US9032141B2 (en) * | 2012-11-30 | 2015-05-12 | Intel Corporation | Row hammer monitoring based on stored row hammer threshold value |
US10497409B2 (en) * | 2014-12-17 | 2019-12-03 | International Business Machines Corporation | Implementing DRAM row hammer avoidance |
JP2016212934A (ja) * | 2015-05-01 | 2016-12-15 | マイクロン テクノロジー, インク. | 半導体装置及びその制御方法 |
FR3042049A1 (fr) | 2015-10-01 | 2017-04-07 | Upmem | |
KR102358563B1 (ko) * | 2018-05-09 | 2022-02-04 | 삼성전자주식회사 | 로우 해머 핸들링과 함께 리프레쉬 동작을 수행하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
KR20220146701A (ko) * | 2018-08-03 | 2022-11-01 | 마이크론 테크놀로지, 인크 | 행 해머를 완화하기 위한 방법 및 이를 이용한 메모리 디바이스 및 시스템 |
US10950288B2 (en) * | 2019-03-29 | 2021-03-16 | Intel Corporation | Refresh command control for host assist of row hammer mitigation |
-
2017
- 2017-05-24 FR FR1770532A patent/FR3066842B1/fr active Active
-
2018
- 2018-05-18 WO PCT/FR2018/051200 patent/WO2018215715A1/fr active Application Filing
- 2018-05-18 JP JP2019564461A patent/JP7142946B2/ja active Active
- 2018-05-18 US US16/615,636 patent/US11049544B2/en active Active
- 2018-05-18 CN CN201880034535.7A patent/CN110741436B/zh active Active
- 2018-05-18 KR KR1020197038136A patent/KR102480349B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463001B1 (en) * | 2000-09-15 | 2002-10-08 | Intel Corporation | Circuit and method for merging refresh and access operations for a memory device |
WO2017048441A1 (fr) * | 2015-09-17 | 2017-03-23 | Intel Corporation | Rafraîchissement hybride avec rafraîchissements cachés et rafraîchissements externes |
Non-Patent Citations (1)
Title |
---|
KIM DAE-HYUN ET AL: "Architectural Support for Mitigating Row Hammering in DRAM Memories", IEEE COMPUTER ARCHITECTURE LETTERS, IEEE, US, vol. 14, no. 1, 19 June 2015 (2015-06-19), pages 9 - 12, XP011585141, ISSN: 1556-6056, [retrieved on 20150619], DOI: 10.1109/LCA.2014.2332177 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3111731A1 (fr) | 2020-06-23 | 2021-12-24 | Upmem | Procédé et circuit de protection d’un dispositif de mémoire DRAM de l’effet de martelagede rang |
FR3111730A1 (fr) | 2020-06-23 | 2021-12-24 | Upmem | Procédé et circuit de protection d’un dispositif de mémoire DRAM de l’effet de martelagede rang |
WO2021259593A1 (fr) | 2020-06-23 | 2021-12-30 | Upmem | Procédé et circuit de protection d'un dispositif de mémoire dram contre l'effet d'attaques répétées |
WO2022175619A1 (fr) | 2021-02-22 | 2022-08-25 | Upmem | Dispositif memoire pourvu de circuits memoire dram agences de maniere a minimiser la taille d'un bloc memoire permettant la gestion de l'effet de martelage de rang |
FR3120153A1 (fr) | 2021-02-22 | 2022-08-26 | Upmem | Dispositif mémoire pourvu de circuits mémoire DRAM agences de manière à minimiser la taille d’un bloc mémoire permettant la gestion de l’effet de martelage de rang |
WO2023104891A1 (fr) | 2021-12-09 | 2023-06-15 | Upmem | Dispositif mémoire dram mettant en œuvre un mécanisme de gestion du martelage de rang |
FR3130412A1 (fr) | 2021-12-09 | 2023-06-16 | Upmem | Dispositif mémoire DRAM mettant un œuvre un mécanisme de gestion du martelage de rang |
Also Published As
Publication number | Publication date |
---|---|
KR102480349B1 (ko) | 2022-12-22 |
WO2018215715A1 (fr) | 2018-11-29 |
CN110741436A (zh) | 2020-01-31 |
US20210012832A1 (en) | 2021-01-14 |
JP2020521267A (ja) | 2020-07-16 |
US11049544B2 (en) | 2021-06-29 |
JP7142946B2 (ja) | 2022-09-28 |
KR20200014805A (ko) | 2020-02-11 |
CN110741436B (zh) | 2023-11-10 |
FR3066842B1 (fr) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR3066842B1 (fr) | Logique de correction de row hammer pour dram avec processeur integre | |
US10262717B2 (en) | DRAM adjacent row disturb mitigation | |
US10572377B1 (en) | Row hammer refresh for content addressable memory devices | |
US10658025B2 (en) | Apparatuses and methods for detecting a row hammer attack with a bandpass filter | |
FR3111730A1 (fr) | Procédé et circuit de protection d’un dispositif de mémoire DRAM de l’effet de martelagede rang | |
EP0935781A1 (fr) | Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur | |
FR3023030A1 (fr) | ||
EP3259674B1 (fr) | Circuit dram muni d'un processeur integre | |
FR2809841A1 (fr) | Procede et appareil pour reduire la puissance dans des memoires cache et systeme de traitement de donnees comportant des memoires chaches | |
WO2018046850A1 (fr) | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue | |
FR3086788A1 (fr) | Circuit memoire imc a cellules 6t | |
FR3045183A1 (fr) | Procede de prediction d'une donnee a precharger dans une memoire cache | |
EP1876601B1 (fr) | Procédé de rafraîchissement d'une mémoire vive dynamique, en particulier en mode veille et en mode de fonctionnement actif, et dispositif de mémoire vive dynamique correspondant, par exemple incorporé dans un téléphone mobile cellulaire | |
EP3671470A1 (fr) | Procédé de gestion d'une mémoire cache d'un calculateur électronique | |
EP1248261A2 (fr) | Procédé de gestion à accès aléatoire et rapide d'une mémoire dram | |
EP2043103B1 (fr) | Dispositif de mémoire électronique | |
FR2970794A1 (fr) | Systeme multi-cœurs et procede de coherence de donnees dans un tel systeme | |
WO2022207999A1 (fr) | Dispositif memoire et procede de protection d'un dispositif memoire de l'effet de martelage d'un rang | |
WO2022175619A1 (fr) | Dispositif memoire pourvu de circuits memoire dram agences de maniere a minimiser la taille d'un bloc memoire permettant la gestion de l'effet de martelage de rang | |
EP0908828B1 (fr) | Procédé et système contrôle d'accès partagés à une mémoire vive | |
WO2019122241A1 (fr) | Procédé de construction automatique de scénarios d'attaques informatiques, produit programme d'ordinateur et système de construction associés | |
FR3074936A1 (fr) | Procede d'ecriture d'un ensemble d'informations, par exemple un code programme, cryptees dans une memoire externe d'un circuit integre et circuit integre correspondant | |
EP4390730A1 (fr) | Protection d'un procédé d'authentification | |
EP3155526A1 (fr) | Recherche de correspondance d'élément dans une liste |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20181130 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |