« Fonctionnement d'un ordinateur/Les mémoires DRAM synchrones » : différence entre les versions

Contenu supprimé Contenu ajouté
m typo
mAucun résumé des modifications
Ligne 1 :
Les mémoires actuelles sont un plus complexes que les mémoires vues dans les chapitres précédents. Ce chapitre va vous expliquer dans les grandes lignes en quoi nos mémoires actuelles se démarquent des autres. On verra que les mémoires modernes ne sont que des améliorations des mémoires vues précédemment.
 
==Les mémoires SDRAM==
 
Les mémoires asynchrones ont laissé la place aux mémoires SDRAM, qui sont synchronisées avec le bus par une horloge. L'utilisation d'une horloge a comme avantage des temps d'accès fixes : le processeur sait qu'un accès mémoire prendra un nombre déterminé de cycles d'horloge et peut faire ce qu'il veut dans son coin durant ce temps. Avec les mémoires asynchrones, le processeur ne pouvait pas prévoir quand la donnée serait disponible et ne faisait rien tant que la mémoire n'avait pas répondu : il exécutait ce qu'on appelle des wait states en attendant que la mémoire ait fini.
 
===ModeLe mode rafale===
 
Certains paramètres de la mémoire, qui ont trait au mode rafale, sont modifiables : le contrôleur mémoire interne de la SDRAM mémorise ces informations dans un registre de 10 bits, le registre de mode. Cela permet notamment d'avoir un mode rafale programmable. Pour cela, le registre de mode contient un bit qui permet de préciser s'il faut effectuer des accès normaux ou des accès en rafale. On peut aussi spécifier le nombre d'octets consécutifs à lire ou écrire : on peut ainsi accéder à 1, 2, 4, ou 8 octets en une seule fois, alors que les EDO ne permettaient que des accès à 4 octets consécutifs.
Ligne 13 :
Un accès en rafale parcourt un mot (un bloc de mots mémoires de même taille que le bus). Un accès en rafale ne commence pas forcément au début du mot, mais peut commencer à n'importe quel mot mémoire dans le mot. Dans ce cas, la rafale reprend au premier mot mémoire une fois arrivé au bout d'un mot. Par exemple, regardons ce qui se passe lors de différents accès. Dans ce qui va suivre, on va noter les cases mémoires appartenant à un de ces blocs 1, 2, 3, 4, 5, 6, 7, 8 et 9. Un accès en mode Burst n'est pas obligé de commencer par lire ou écrire le bloc 1 : on peut très bien commencer par lire ou écrire au bloc 3, par exemple. Si l'on veut effectuer un accès en Burst sur 8 cases mémoires, on commence par accéder à la case mémoire numérotée 3, puis la 4, la 5, la 6 et la 7. Il reste encore 3 cases mémoires à lire, mais on arrive au bout de notre bloc de 8 cases mémoires. On pourrait imaginer divers scénarios : passer au bloc suivant semble être le plus logique. Mais ce n'est pas ce qui se passe : l'accès reprend au bloc 1, et on accède aux blocs 1, 2 et 3. En clair : une fois arrivé au bout de notre bloc de 8 cases mémoires, on reprend au début. Avouez que vous êtes surpris. :lol:
 
===CommandesLes commandes SDRAM===
 
Une SDRAM est commandée par un bus aux fils d'une utilité bien précise. On trouve un signal d'horloge, pour cadencer la mémoire, mais pas que. En tout, 18 fils permettent de commander la SDRAM. Configurer le bus permet d'envoyer des commandes à la mémoire, commandes qui vont effectuer une lecture, une écriture, ou autre chose dans le genre. Le fonctionnement simplifié d'une SDRAM peut se résumer dans ce diagramme :
Ligne 21 :
On remarque que les commandes READ et WRITE ne peuvent se faire qu'une fois que la banque a été activée par une commande ACT. Une fois la banque activée par une commande ACT, il est possible d'envoyer plusieurs commandes READ ou WRITE successives. Ces lectures ou écritures accèderont à la même ligne, mais à des colonnes différentes. Ces commandes se font à partir de l'état de repos, l'état où toutes les banques sont préchargées. Il faut donc noter que les commandes MODE REGISTER SET et AUTO REFRESH ne peuvent se faire que si toutes les banques sont désactivées.
 
===DélaisLes délais mémoires===
 
Il faut un certain temps pour sélectionner une ligne ou une colonne, sans compter qu'une SDRAM doit gérer d'autres temps d'attente plus ou moins bien connus : ces temps d'attente sont appelés des délais mémoires. La façon de mesurer ces délais varie : sur les mémoires FPM et EDO, on les mesure en unités de temps (secondes, millisecondes, micro-secondes, etc.), tandis qu'on les mesure en cycles d'horloge sur les mémoires SDRAM.
Ligne 43 :
 
Ces timings influencent grandement la vitesse à laquelle on accède à une donnée dans la mémoire. Et oui, car suivant la disposition des données dans la mémoire, l'accès peut être plus ou moins rapide. Il existe ainsi quelques possibilités plus ou moins différentes, qu'on va vous citer.
 
* Premier cas : la donnée que l'on cherche à lire est présente sur la même ligne que la donnée qui a été accédée avant elle. Cela se produit souvent lorsque l'on doit accéder à des données proches les unes des autres en mémoire. Dans ce cas, la ligne entière a été recopiée dans le Row Buffer et on n'a pas à la sélectionner : on doit juste changer de colonne. Ce genre de situation s'appelle un Row Buffer Hit. Le temps nécessaire pour accéder à notre donnée est donc égal au temps nécessaire pour sélectionner une colonne (le tCAS auquel il faut ajouter le temps nécessaire entre deux sélections de deux colonnes différentes (le t-CAS-To-CAS).
* Second cas : on accède à une donnée située dans une ligne différente : c'est un Row Buffer Miss. Et là, c'est une catastrophe ! Dans ce genre de cas, il faut en effet vider le Row Buffer, qui contient la ligne précédente, en plus de sélectionner la ligne et la colonne. On doit donc ajouter le tRP au tRAS et au tCAS pour avoir le temps d'accès total à notre donnée.
Ligne 49 ⟶ 48 :
Les délais/timings mémoire ne sont pas les mêmes suivant la barrette de mémoire que vous achetez. Certaines mémoires sont ainsi conçues pour avoir des timings assez bas et sont donc plus rapides, et surtout : beaucoup plus chères que les autres. Le gain en performances dépend beaucoup du processeur utilisé et est assez minime comparé au prix de ces barrettes. Les circuits de notre ordinateur chargés de communiquer avec la mémoire (ceux placés soit sur la carte mère, soit dans le processeur), doivent connaitre ces timings et ne pas se tromper : sans ça, l’ordinateur ne fonctionne pas.
 
===Les SDRAM standards===
 
Les mémoires SDRAM sont standardisées par un organisme international, le JEDEC, et ont été déclinées en versions de performances différentes. Les voici :
Ligne 75 ⟶ 74 :
|}
 
==MémoiresLes mémoires DDR==
 
Les mémoires SDRAM récentes sont des mémoires de type dual data rate, voire quad data rate (voir le chapitre précédent pour ceux qui ont oublié) : elles portent ainsi le nom de mémoires DDR. Plus précisément, le plan mémoire des DDR est deux fois plus large que le bus mémoire, même si les deux sont commandés par un même signal d'horloge : là où les transferts avec le plan mémoire ont lieu sur front montant, les transferts de données sur le bus ont lieu sur les fronts montants et descendants de l'horloge. Il y a donc deux transferts de données sur le bus pour chaque cycle d'horloge, ce qui permet de doubler le débit sans toucher à la fréquence. D'autres différences mineures existent entre les SDRAM et les mémoires DDR. Par exemple, la tension d'alimentation des mémoires DDR est plus faible que pour les SDRAM.