« 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===
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.
===Les commandes SDRAM===
{| 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.]]
===Les délais mémoires===
|