Question:
La raison précise pour laquelle la DRAM est plus lente à écrire qu'à lire?
Caladan
2011-07-29 06:46:35 UTC
view on stackexchange narkive permalink

Je veux juste m'assurer que mes faits sont clairs.

Autrefois, quand j'étais adolescent et qu'Internet était inconnu en dehors du milieu universitaire, je me souviens avoir appris (on ne m'avait pas appris cela en soi) que l'écriture dans la DRAM est plus lente que la lecture car il faut du temps pour charger ou décharger les condensateurs à l'intérieur de chaque cellule de mémoire DRAM.

Est-ce toujours le cas ou l'a-t-il jamais été?

Oups - Je pensais que vous essayiez de modifier votre question précédente. Désolé pour le bruit ...
Cinq réponses:
tyblu
2011-07-29 09:23:28 UTC
view on stackexchange narkive permalink

Oui, c'est toujours le cas. Le principe derrière la DRAM est celui d'un condensateur (simplement, 1 petit transistor et un grand), tandis que celui derrière SRAM est un verrou, constitué de quelques (plus) transistors. La DRAM a plus de capacité. Si vous supposez qu'ils ont une impédance d'entrée égale *, alors il est simple de voir que le délai DRAM RC est plus lent que celui de SRAM.

La DRAM est bon marché, donc nous l'aimons toujours. La SRAM est géniale, donc nous l'aimons aussi.

DRAM:

(source: emrl.de)

SRAM:

* (Ils ne le feront probablement pas - il est vraiment adapté à son circuit de lecture, mais qu'importe .)

Je pense qu'ils voulaient connaître les temps de lecture et d'écriture non symétriques sur la DRAM, pas la comparaison avec la SRAM.
supercat
2011-07-29 20:16:51 UTC
view on stackexchange narkive permalink

Un cycle de lecture pour une DRAM "traditionnelle" nécessitait de lire une ligne du tableau mémoire dans le tampon de ligne et de la réécrire sans modification. Un cycle d'écriture nécessitait de lire une ligne, de la modifier, puis de la réécrire. En général, on ne pouvait pas commencer à modifier une ligne en mémoire avant qu'elle n'ait été lue. Il aurait été possible de concevoir une DRAM qui incluait un bit 'tag' pour chaque emplacement adressable afin que l'on puisse commencer à écrire une ligne avant même qu'elle ne soit lue, et les emplacements «tagués» écraseraient automatiquement les données lues dans la ligne tampon, mais je ne suis au courant d'aucun fabricant ayant jamais fait cela. Il aurait également été possible d'autoriser l'écriture d'une ligne entière en même temps sans la lire du tout, mais je ne suis au courant d'aucun fabricant qui l'ait fait non plus.

davidcary
2012-02-06 15:54:25 UTC
view on stackexchange narkive permalink

Je crois comprendre que "lire" et "écrire" ont des synchronisations identiques sur une DRAM typique.

Peut-être que quelqu'un vous parlait des synchronisations de "mémoire Flash". La mémoire flash a des temps de lecture relativement rapides mais des temps d'écriture beaucoup plus longs.Par exemple, avec un flash série Numonyx M25P80-VMW6G 75 MHz 8 Mbit, la lecture d'un secteur de données (à 75 MHz) nécessite 7 millisecondes, alors que l'effacement et l'écriture de nouvelles données dans un secteur sont généralement 0,6 seconde (max 3 secondes).

En d'autres termes, l'écriture de cette mémoire flash prend généralement 85 fois plus de temps que la lecture, et dans le pire des cas, l'écriture d'un secteur prend plus de 400 fois plus de temps que la lecture. ( Cela n'est même pas pris en compte les inefficacités de la mise à jour des secteurs partiels).

D'après mon expérience, le temps nécessaire pour effacer et réécrire un secteur particulier du flash continue d'augmenter à chaque cycle d'effacement / réécriture, mais les temps de lecture restent constants.

Connexes: ["Aujourd'hui, j'ai lu que les performances d'écriture flash diminuent avec l'utilisation. Je suis un gros utilisateur. Dois-je changer de comportement?"] (Http://android.stackexchange.com/questions/116791/today-i-read-que-les-performances-d'écriture-flash-diminuent-avec-l'utilisation-je-suis-un-utilisateur-intensif)
W5VO
2012-02-06 21:49:40 UTC
view on stackexchange narkive permalink

La raison pour laquelle la DRAM prend plus de temps à écrire est due à la nature sensible du bit DRAM et à la façon dont les tableaux sont câblés. Essentiellement, ces deux paramètres obligent à effectuer une lecture avant l'écriture de toute donnée.

Les tableaux de mémoire, y compris la DRAM, sont généralement disposés en grille. Les sorties de chaque bit sont connectées verticalement et les signaux de validation pour chaque bit sont connectés horizontalement. Afin de lire un peu de données, le signal d'activation horizontal, ou ligne de mot, connecte la ligne entière aux fils verticaux appelés lignes de bits. Même si vous ne voulez qu'un seul bit dans un grand tableau, vous devez accéder à la ligne entière. Cette flexibilité réduite dans le routage est nécessaire pour obtenir la densité souhaitée dans les matrices de mémoire.

La DRAM est essentiellement un tableau de condensateurs avec des commutateurs. Lors de la conception de ces condensateurs, ils ne représentent qu'une fraction des capacités de câblage parasites des lignes de bit verticales. Les amplificateurs connectés aux lignes de bit peuvent détecter le petit changement de tension qui se produit lorsqu'une cellule DRAM chargée est connectée à la ligne de bit et l'amplifier en une valeur logique que d'autres circuits et puces peuvent utiliser. En raison du partage de charge de la capacité de ligne de bit et de la capacité de cellule DRAM, les données sur un bit DRAM sont effectivement effacées à chaque fois qu'on y accède. Si vous souhaitez lire un seul bit DRAM, vous devez réécrire la valeur sur le même bit. Ainsi, chaque fois que vous lisez depuis DRAM, le cycle est lu, puis écrit.

En raison de la nature de la grille des tableaux de mémoire, le nombre de bits dans une ligne est généralement beaucoup plus grand que la taille des mots du tableau. Cela signifie que si vous voulez lire ou écrire un mot à partir d'une ligne, il y aura des bits qui seront activés par la ligne de mot que vous ne vouliez ni lire ni écrire. Ces données seront détruites si rien n'est fait pour les conserver. Cela signifie que lorsque vous lisez, vous devez lire la ligne entière et réécrire la ligne entière. Pour l'écriture, vous devez lire la ligne entière, puis réécrire les données que vous avez lues avec les données que vous souhaitez écrire. Ainsi, la procédure d'écriture des données dans le tableau est lue, puis écrite.

Nous voyons donc que la procédure est essentiellement la même pour la lecture et l'écriture: d'abord lire une ligne, puis réécrire le nouveau contenu. La lecture a lieu en premier, de sorte que les données peuvent être rendues disponibles en premier si le processus est un événement à plusieurs cycles. L'écriture peut prendre le plus de temps car l'écriture n'a lieu qu'à la fin du processus. Historiquement, cela a pu être un processus multi-cycle, mais j'ai vu des amplificateurs pour la lecture qui réécriront dès qu'ils connaîtront la valeur qui en fait effectivement un lien pour la lecture et l'écriture.

Avez-vous regardé ma réponse? Pensez-vous que ma compréhension semble correcte?
Oui, j'ai regardé votre réponse. Cela semble correct, mais j'ai eu le sentiment que «lire avant d'écrire» devait être justifié. En outre, vous serez peut-être surpris par la conception de DRAM moderne, qui a pratiquement éliminé ce problème. Je ne voulais pas déterrer une vieille question, je n'étais tout simplement pas assez attentif quand je l'ai ouverte.
Cela fait longtemps que je n'ai pas regardé les DRAM, même si j'ai longtemps pensé qu'il devrait y avoir une certaine mémoire cache dans les puces DRAM. Je ne sais pas si le processus de fabrication d'un volume important de cache statique nécessiterait l'ajout de nombreuses étapes qui seraient autrement inutiles pour fabriquer la partie mémoire dynamique de la puce, mais avoir un cache qui pourrait récupérer une ligne entière à la fois semblerait avantageux. D'un autre côté, le bus physique entre la DRAM et le cache du processeur serait probablement une limite.
LEMUEL ADANE
2011-07-29 14:36:13 UTC
view on stackexchange narkive permalink

Lors de l'écriture, vous chargez et déchargez le petit condensateur comme des cellules dans la DRAM. Un condensateur correspond à un bit, alors imaginez si vous avez 1Gigaoctet de ces cellules. Et cette charge et décharge prend plus de temps que la lecture de ces cellules.

La lecture charge et décharge les cellules presque exactement de la même quantité. Si le demi-rail est à 2,50 volts (hypothèse pour la simplicité numérique), un «0» programmé sera écrit comme 0,10 volts ou moins et relu comme 2,48 volts, tandis qu'un «1» programmé sera écrit comme 4,90 volts ou plus et relisez comme 2,52 volts. Changer un «1» en un «0» nécessitera de décharger le capuchon de 2,52 volts à 0,10 volts, tandis que la lecture d'un zéro puis le rafraîchir pour qu'il soit à nouveau lisible nécessitera une décharge de 2,48 à 0,10. Pas beaucoup de différence.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...