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

Contenu supprimé Contenu ajouté
Ligne 3 :
==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.
 
===Le mode rafale===
 
CertainsSur paramètresles deSDRAM, lales mémoire,paramètres qui ont trait au mode rafale, sont modifiables, :programmables. leLe 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 modeIl contient un bit qui permet de préciser s'il faut effectuer des accès normaux ou des accès en rafale. OnIl peutmémorise aussi spécifier le nombre d'octets consécutifs à lire ou écrire. : onOn 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.
 
Qui plus est, il existe deux types d'accès en rafale sur les SDRAM : l'accès entrelacé, et l'accès séquentiel. Le mode séquentiel est le mode rafale normal : on accède à des octets consécutifs les uns après les autres. Le mode entrelacé utilise un ordre différent. Avec ce mode de rafale, le contrôleur mémoire effectue un XOR bit à bit entre un compteur (incrémenté à chaque accès) et l'adresse de départ pour calculer la prochaine adresse de la rafale.
 
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 à lirePuis, 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 notred'un bloc de 8 cases mémoires, on reprend au début. Avouez que vous êtes surpris. :lol:
 
===Les commandes SDRAM===
 
Une SDRAM est commandée par unLe bus auxde filscommandes d'une utilité bien précise.SDRAM Oncontient trouveévidemment 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. LeLes fonctionnementcommandes simplifiéen question sont des demandes de lecture, d'écriture, de préchargement et autres. Elles sont codées par une SDRAMvaleur peutbien seprécise résumerqui dansest ceenvoyée diagrammesur :les 18 fils du bus de commande. Ces commandes sont nommées READ, READA, WRITE, WRITEA, PRECHARGE, ACT, ...
 
 
{| class="wikitable" style="text-align:center"
! Bit CS || Bit RAS || Bit CAS || Bit WE || Adresse de la banque || Bit du bas d'adresse A10 || Reste du bus d'adresse || Nom de la commande : Description
|-
| 1
| colspan="6" | X
| Absence de commandes.
|-
| 0 || 1 || 1 || 1 || colspan="3" | X || No Operation : Pas d'opération
|-
| 0 || 1 || 1 || 0 || colspan="3" | X || Burst Terminante : Arrêt d'un accès en rafale en cours.
|-
| 0 || 1 || 0 || 1 || Adresse de la banque || 0 || Adresse de la colonne || READ : lire une donnée depuis la ligne active.
|-
| 0 || 1 || 0 || 1 || Adresse de la banque || 1 || Adresse de la colonne || READA : lire une donnée depuis la ligne active, avec rafraichissement automatique de la ligne.
|-
| 0 || 1 || 0 || 0 || Adresse de la banque || 0 || Adresse de la colonne || WRITE : écrire une donnée depuis la ligne active.
|-
| 0 || 1 || 0 || 0 || Adresse de la banque || 1 || Adresse de la colonne || WRITEA : écrire une donnée depuis la ligne active, avec rafraichissement automatique de la ligne.
|-
| 0 || 0 || 1 || 1 || Adresse de la banque || colspan="2" | Adresse de la ligne || ACT : charge une ligne dans le ''row buffer''.
|-
| 0 || 0 || 1 || 0 || Adresse de la banque || 0 || X || PRECHARGE : précharge le ''row buffer'' dans la banque voulue.
|-
| 0 || 0 || 1 || 0 || Adresse de la X || 1 || X || PRECHARGE ALL : précharge le ''row buffer'' dans toutes les banques.
|-
| 0 || 0 || 0 || 1 || colspan="3" | X || Auto refresh : Demande de rafraichissement, gérée par la SDRAM.
|-
| 0 || 0 || 0 || 0 || 00 || colspan="2" | Nouveau contenu du registre de mode || LOAD MODE REGISTER : configure le registre de mode.
|}
 
Le fonctionnement simplifié d'une SDRAM peut se résumer dans ce diagramme :
 
[[File:Fonctionnement simplifié d'une SDRAM.jpg|centre|vignette|upright=2|Fonctionnement simplifié d'une SDRAM.]]
 
On remarque que lesLes 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.
 
===Les délais mémoires===