IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Discussion :

Compréhension des timings [RAM]


Sujet :

Composants

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 83
    Points : 87
    Points
    87
    Par défaut Compréhension des timings
    Bonsoir à tous ,

    Je cherche depuis un moment à comprendre la signification des timings de la RAM. Malgré tout ce dont j'ai lu à ce propos je ne cerne toujours pas bien la chose.

    Prenons par exemple ce que m'affiche CPU-Z pour ma RAM:

    9-9-9-24 @ 668.9MHz;

    Soit,
    1. CAS latency = 9 ou alors juste CAS ?
    2. RAS to CAS = 9
    3. RAS precharge = 9
    4. RAS = 24


    1. Le CAS latency correspondrait au nombre de cycle horloge effectué pendant la recherche de la ligne + la recherche de la colonne + l'envoie de la donnée sur le bus de la carte mère. Alors que le CAS tout court correspondrait au délai d'accès à une colonne.
    2. Le RAS to CAS serait le délai entre le mode colonne et le mode ligne.
    3. Le RAS precharge serait l'intervalle de temps nécessaire pour réenvoyer une commande RAS (donc il se repasse tout un cycle je présume).
    4. Enfin, le RAS serait le délai d'accès à une ligne.


    Bref je trouve que tout ceci n'a pas beaucoup de sens. Comment le RAS prendrait plus de temps que le RAS precharge ? Je doute donc que ma liste soit correct... Aussi elle varie d'un site à l'autre.

    Ce serait vraiment aimable d'éclairer ma lanterne ! Je suis noyé dans l'information...

    Quelqu'un saurait-il réellement à quoi corresponde ces chiffres ?
    Merci de votre aide.

  2. #2
    Membre expert
    Avatar de Clotho
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2011
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 524
    Points : 3 383
    Points
    3 383
    Par défaut
    Mhhh vaste et difficile sujet.

    Pour faire court, faut voir la ram comme une usine de fabrication à la chaîne, ton bus/FSB/Hypertransport/QuadPumpedBus, etc... serait vu comme le tapis roulant, avançant à grand débit, faisant tourner les infos entre ram, CPU, lignes PCI-E, etc...

    Ta RAM serait un zone d'entreposage temporaire, avec des unités rapides ayant une file d'attente courte et des délais de compréhension et d’exécution des commandes rapides (un peu comme un magasinier en entreprise, par opposition aux manutentionnaires). Cependant dans un PC, ton magasinier on le fait chier tout le temps, ce qui fait qu'il est normalement débordé, et a mis en place une routine de fonctionnement globalement efficace (même si dans le détail ça se discute).

    Comme tu l'as visiblement compris, il a compartimenté sa mémoire avec des références par adresse: simplifions en indiquant une adresse mémoire comme étant un numéro de puce, numéro de ligne, numéro de colonne, par exemple 1-2-3. Il sait que son magasin comporte 16 puces, contenant 100 lignes et 150 colonnes.

    Dans un monde paisible, où les poneys règnent en maître et où toutes les informations circulent sur des arc-en-ciel en jouant de la musique douce, toutes les données sont d'égale importance, et tu as une file non priorisée, qui te dit "j'ai besoin de 1-1-1 puis 8-4-47 puis 12-4-120 puis tiens, encore un coup de 1-1-1". Si tu as un prefetch, il te dira que la 1-1-1 il le garde en cache. Si tu n'en as pas, tu iras chercher tes données dans l'ordre d'arrivée (fifo). Tu n'as pas le même temps pour aller d'une puce à l'autre, d'une ligne à l'autre et d'une colonne à l'autre. C'est tous des multiplicateur de ta vitesse de bus, ou éventuellement de ta vitesse de mémoire (par exemple 266mhz réels, avec deux opérations simultanées pour de la DDR3 2133). C'est ce que sont tes CAS, RAS et RAS to CAS. Le RAS et le CAS sont en fait des top départ de recherche de ligne ou de colonne, après le top, la répone est fournie en x cycles.

    CAS et CAS latency initialement n'étaient pas la même chose. Ton magasinier était un flemmard, et il ne pouvait pas faire deux accès en colonne consécutifs, tu avais un cycle d'attente (le 1T ou 2T des réglages de DDR1), actuellement plus aucune mémoire n'arrive à atteindre les performances "brutes" de la DDR1 au niveau des timings, donc elles sont toutes malheureusement en 2T (ou heureusement, ça dépend du point de vue, ça avait tendance à mettre la magasinier en grève).

    Les notions de Precharge sont un peu compliquées, en gros ça consiste à vérifier que tu vas bien pouvoir faire une opération coûteuse en temps dans les cycles à venir. Un peu comme si tu demandais à ton magasinier si dans une heure il pourrait pas te sortir le gros carton, là bas au fond, qui pèse le poids d'un âne mort et à l'air bien chiant à sortir de derrière tout le bazar. Y en a plusieurs, mais ils ne sont pas tous réglables.

    Sans détailler encore plus profondément tu vois donc que ton magasinier à un microtasker qui lui donne son emploi du temps de maintenant à "toujours". Et il sait que sur son tapis roulant il devra mettre les infos réclamées dans tel ou tel ordre. Vu qu'il est bien organisé, il a une petite machine propre qui est aussi assimilable à un tapis roulant et fait, à chaque fin de cycle complet "tomber" l'info réclamée dans le tapis roulant de la chaîne de fabrication.

    Il faut voir que ce qu'il se passe sur le bus central est lent en comparaison de la vitesse d'exécution dans la ram, et que la petite machine du magasinier va remplir toutes ses cases du microtasker pour avoir un débit de données optimisé avec le bus central. Ainsi, s'il a un buffer d'entrée correctement rempli (+/- 95%) il va arranger sa file d'attente pour que certains précharge soient cumulés, ou certains accès favorisés, de façon à remplir ses "trous". Un peu comme si en musique tu battais une mesure et que tu ajoutais au fur et à mesure des "coups" dans les soupirs. (le boum-boum-...tchac du rock and roll deviendrait donc boum-boum-boum-tchac sans blanc, soit grosso modo du Justin Bieber, personne ne veut ça, mais ça marche).

    Étant donné mes capacités à faire des dessins, et mes performances d'infographiste, je te réclamerai de l'indulgence et une certaine ouverture d'esprit. On va simplifier en estimant que tu as CAS (C), RAS (R) et RAStoCAS (X, parce que c'est cool X).

    Si ton CAS est de 3 cycles, ton RAS de 2 cycles et ton RAStoCAS de 5 cycles, tu vois que tu ne peux sortir qu'une information tous les 5 cycles en "tir de barrage" dans le cas le plus défavorable. Tu vois aussi que:

    Ta fréquence max d’apparition de C est: C--C--C--C
    Ta fréquence max d'apparition de R est R-R-R-R
    Ta fréquence max d'apparition de X est X----X----X----X

    Tu vois donc que ta file peut être idéalement remplie avec la routine suivante:
    XR-CRXCR-CXRCR-XC... afin de remplir au mieux ta file d'attente. Bien entendu, faut faire la même chose avec en réalité une dizaine de timings différents, et des contraintes supérieures, mais tu vois (dis oui, s'il te plait ) l'importance des timings dans la vitesse d'exécution. Il faut bien avoir en tête que certains sont plus importants que d'autres, et qu'ils n'ont pas tous la même influence sur le débit mémoire, qui est le plus important, avec sa latence, mais les idées de base sont là.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 83
    Points : 87
    Points
    87
    Par défaut
    Un grand merci.
    Je ne pouvais espérer meilleur réponse !

    Je n'ai juste pas très bien compris cette phrase:
    Si ton CAS est de 3 cycles, ton RAS de 2 cycles et ton RAStoCAS de 5 cycles, tu vois que tu ne peux sortir qu'une information tous les 5 cycles en "tir de barrage" dans le cas le plus défavorable.
    Je ne comprends pas très bien la signification de "tir de barrage" ni pourquoi ce serait dans le cas le plus défavorable ?

    Aussi j'ai trouvé un lien proposant un tableau assez intéressant pour compléter vos explications:
    http://en.wikipedia.org/wiki/SDRAM_latency

    Donc pour résumer:
    • CAS latency = temps d'accès à une colonne + son temps d'échantillonnage (la ligne étant déjà trouvée).
    • RAS to CAS = temps d'accès d'une ligne.
    • RAS precharge time = temps pour "désactiver" une ligne et ouvrir une nouvelle (si j'interprète correctement tes dires ^^).
    • RAS active time = temps entre une requête et le RAS precharge. Soit le CAS latency + RAStoCAS + quelques cycles dû à certaines subtilités.


    Dans l'ordre chronologique nous obtenons donc ceci:
    RAS to CAS => CAS latency => RAS precharge time.

  4. #4
    Membre expert
    Avatar de Clotho
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2011
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 524
    Points : 3 383
    Points
    3 383
    Par défaut
    C'est vrai que le terme tir de barrage n'est pas le mieux choisi... Je voulais parler d'un cas d'accès continu et sans présélection des zones, ce qui constitue la vitesse brute non optimisée de lecture de la ram (la façon la plus basique d'aller chercher les données séquentiellement).

    C'est un cas défavorable, parce qu'avec un contrôleur optimisé, si tu sais que tu vas demander 10 informations et que deux sont sur des blocs contigus, ton assignation va être faite en faveur de ses blocs.

    Sinon pour le reste oui, tu sembles avoir compris. La notion de précharge est un peu particulière, c'est à la fois un initiateur (entrée dans la file d'attente pour un bloc à lire dans x cycles) et un terminateur, qui te dit que la donnée précédente est bien lue.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 83
    Points : 87
    Points
    87
    Par défaut
    Ok merci j'ai compris, je passe le topic en résolu.

    Vos explications m'ont beaucoup aidées!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/07/2006, 10h05
  2. Compréhension des exploits
    Par LordBob dans le forum C
    Réponses: 3
    Dernier message: 25/01/2006, 23h22
  3. [DEBUTANTE][ECLIPSE] Pb de compréhension des package SERVLET
    Par fchafia dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 18/02/2005, 16h55
  4. [FLASH MX] Prob de compréhension des bouttons
    Par WriteLN dans le forum Flash
    Réponses: 13
    Dernier message: 16/10/2003, 17h01
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo