Corsair TWINX3700 / TWINX4000 | ||||
By Samuel D. - 28/07/2003 | ||||
Mémoire : Les timings
Avant de rentrer plus en détail dans la description des différents timings mémoires qui influent sur la réactivité des mémoires, rappelons rapidement comment fonctionne une mémoire. Rappelons que chaque bit mémoire est composé d'un transitor et d'un condensateur comme on le voit si dessous :
Le rôle du condensateur étant de maintenir l'état du bit (chargé = 1, déchargé = 0), le transistor servant a changer l'état du condensateur ou à connaitre l'état de celui-ci (pour la lecture). Dans un chip mémoire, ces bit se présentent sous la forme d'une matrice constituées de ligne et de colonnes comme toute matrice qui se respecte :
A noter que pour maintenir l'état du condensateur, il est necessaire de l'alimenter périodiquement, c'est ce qu'on appelle le refresh. Logiquement, pour lire et écrire dans la mémoire, il faut connaitre la colonne et la ligne de la banque mémoire qui contient le bit désiré. On accede donc aux données via les rows et les columns :
Afin de bien comprendre les différents timings, nous allons voir en détail tout le processus d'accès à la mémoire. Tout commence avec le besoin d'accès à une donnée dans le core du processeur. Pour ce faire, le CPU va commencer par voir si cette donnée ce trouve dans le cache L1. Si ce n'est pas le cas, il poursuivra dans le cache L2. Si la donnée n'est toujours pas présente, une requête est alors faite au Northbridge qui lui-même va chercher ladite donnée dans la mémoire vive. Soit le schéma suivant :
Schéma standard d'un accés
à une donnée
Les latences et autres timings prennent forme dans les communications entre le Northbridge et la mémoire. C'est donc cette partie que nous allons étudier. La première chose a faire pour le northbridge pour accéder à une donnée contenue dans la mémoire est d'effectuer un RAS Precharge (indispensable avant d'accéder a une ligne) puis un RAS. RAS signifiant Row Adress Strobe, il s'agit de l'action de sélectionner la ligne de la mémoire auquel on décide d’accéder :
Pour résumer, tRP (RAS Precharge) est le temps nécessaire à attendre côté northbridge pour envoyer la commande RAS qui sélectionnera la ligne. Ensuite, tRAS est le temps nécessaire à la mémoire pour sélectionner effectivement la ligne. Une fois que la ligne est sélectionnée, on peut sélectionner la colonne avec une instruction CAS. Le temps necessaire entre un cycle RAS et un cycle CAS est nommé tRCD (RAS to CAS). En toute logique, tCAS est le temps nécessaire à la sélection d'une colonne :
Ce temps est exprimé en nombre de cycle. Par exemple : CAS 3 signifie 3x(1/200000000) = 15 ns pour de la DDR400 (200 Mhz). Plus la fréquence augmente, plus tCAS diminue et vice-versa. Dans notre exemple ci-dessus, on obtient tCAS = 15 ns à 200 Mhz. Si on refait le calcul en CAS 2.5 et un FSB de 166 Mhz (DDR333), on obtient 2.5/166000000 = 15 ns. Bref, une mémoire spécifié à 200 Mhz en CAS 3 fonctionnera sans probleme à 166 Mhz en CAS 2.5 ou à 133 Mhz en cas 2 (puisque 2/133000000 = 15 ns). Voyons un graphique récapitulatif.
ATTENTION : Si le raisonnement est valable à CAS descendent (une DDR400 CAS 3 tiendra obligatoirement le DDR333 CAS 2.5 et le DDR266 CAS 2), il n'est pas valable en CAS croissant (une DDR 266 CAS 2 ne tiendra pas forcement le DDR333 CAS 2.5 ou le DDR400 CAS 3) car la fréquence rentre également en ligne de compte pour les autres timings. A noter que les données étant trés souvant concourante, on effectue beaucoup plus d'accés CAS que d'accés RAS, voici pourquoi le tCAS influe plus sur les performances que le tRAS ou le tRC. De plus, deux accés CAS de suite ne necessite pas d'accés RAS ce qui limite encore les accés aux lignes. Heureusement, puisqu'un accés "ligne" complet (tRC) est constitué d'un tRP (Row Precharge) puis d'un tRAS (Row Access Strobe). Compter minimum 8T jusqu'a 12T contre 3T maximum pour tCAS. Terminons par le schéma global de l'échange :
|
||||
Fermer |