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.