Partage
  • Partager sur Facebook
  • Partager sur Twitter

La mémoire

    11 septembre 2017 à 12:28:31

    Bonjour,

    Je ne sais pas si je pose cette question dans le bon forum, mais je n'ai pas trouvé de forums plus adaptés.

    Dans mon cours sur la mémoire, il est dit qu'une mémoire est séparé en "blocs". Chacun de ces blocs peut contenir \(2^3 = 8 \) soit un octet.

    Cela ne pose pas de problèmes pour le moment, mais par la suite il est dit que une mémoire pouvant stocker \(2^k\) bits à des adresses mémoires d'au minimum \(k\) bits. Pourquoi au minimum \(k\) bits ?

    Selon moi puisque la mémoire est divisée en blocs de \(8\) bits alors il y a en tout \(2^k / 2^3 = 2^{k-3} \) blocs et ainsi on a au minimum une adresse mémoire pour chacun des blocs composée d'au minimum \(k-3\) bits et non \(k\) ?

    Si quelqu'un peut m'expliquer il est le bienvenu ! :)

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2017 à 20:11:50

      En effet, ton cours se trompe, l'unité d'adressage étant le byte et non le bit. Il s'agit certainement d'une erreur d'inattention.

      On peut dire que, dans un modèle simplifié:

      • L'unité d'adressage d'une mémoire est le byte;
      • Un multiplet de 8 bits est un octet;
      • Un byte est généralement équivalent à un octet mais ce n'est pas nécessairement le cas;
      • Une mémoire de taille \(2 ^ k\) bytes sera sera adressée par un minimum de \(k\) bits.

      Bien sûr ce que tu apprends est un modèle simplifié, il y a bien plus de choses à dire ne serait-ce que sur l'adressage.

      -
      Edité par Mad scientist 12 septembre 2017 à 20:20:04

      • Partager sur Facebook
      • Partager sur Twitter
      Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
        12 septembre 2017 à 20:30:29

        Merci beaucoup pour ta réponse ! C'était effectviement une erreur d' inattention de ma part.

        Je ne comprend pas à l'inverse la première phrase de ton modèle simplifié. "L'unité d'adressage d'une mémoire est le byte". L'adresse d'un byte de mémoire dépend de l'OS non ? C'est 32 bits ou 64 de nos jours.

        Pourquoi un byte n'est pas nécessairement un octet ?

        Sinon ta dernière phrase éveille ma curiosité, comme j'aimerai ne pas trop prendre de ton temps si tu pouvais me donner des références ou des liens sur le sujet pour pouvoir l'approfondir j'aimerais beaucoup :D

        • Partager sur Facebook
        • Partager sur Twitter
          12 septembre 2017 à 21:53:13

          Poggendorf a écrit:

          Je ne comprend pas à l'inverse la première phrase de ton modèle simplifié. "L'unité d'adressage d'une mémoire est le byte". L'adresse d'un byte de mémoire dépend de l'OS non ?

          Ce que je veux dire, c'est qu'il n'est pas possible de lire ou écrire directement des éléments plus petits qu'un byte en mémoire. Pour cela il faut passer par des étapes intermédiaires. Les bits n'ont pas d'adresse.

          Poggendorf a écrit:

          Pourquoi un byte n'est pas nécessairement un octet ?

          Les définitions des deux termes ne sont pas les mêmes mais peuvent être compatible. Un octet fait nécessairement huit bits, un byte peut avoir une taille différente selon l'architecture. Il existe des architectures (historiques) pour lesquelles un byte vaut 16 bits, par exemple.

          Poggendorf a écrit:

          Sinon ta dernière phrase éveille ma curiosité, comme j'aimerai ne pas trop prendre de ton temps si tu pouvais me donner des références ou des liens sur le sujet pour pouvoir l'approfondir j'aimerais beaucoup :D

          Je peux te donner des articles wikipedia, qui référencent d'autres documents (standards, …):

          Pour des détails concernant l'implémentation de ces concepts, il y a les manuels d'Intel (par exemple), mais ils peuvent être particulièrement longs et pénibles à lire. Le manuel 1 propose une introduction aux modèles mémoires sur les machines x86.

          -
          Edité par Mad scientist 13 septembre 2017 à 0:21:17

          • Partager sur Facebook
          • Partager sur Twitter
          Un vrai cours de: (C | C++ | Haskell débutant | Haskell intermédiaire | Rust).
            12 septembre 2017 à 21:59:07

            Génial !

            Merci beaucoup pour ton aide. Je vais essayer de me renseigner plus en détail sur les liens que tu as fourni en espérant ne pas avoir à reposer des questions sur le forum pour un problème de compréhension.

            • Partager sur Facebook
            • Partager sur Twitter

            La mémoire

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown