Tutorial : Fabriquer une mémoire informatique

Tutorial : Fabriquer une mémoire informatique - Sciences - Discussions

Marsh Posté le 08-01-2010 à 17:18:46    

/Avertissement : Le but de ce topic est dans son titre !/
 
Le style de ce tutorial semblera un peu ampoulé, mais on verra que ce n’est pas incompatible avec son contenu éclectique... je veux dire électrique(!)
 
Bon ça commence  :o  
 
Cages mémoires  
Paradigme : La mémoire est un oiseau qu'il faut mettre en cage

 
La mémoire de l’ordinateur moyen est un empilement de cases numérotées de 1 jusqu'à : un nombre égal à : le nombre total de cases.  
Ainsi pour 13 cases, la numérotation se fera de 1 à 13.
Notre mission sera de construire une telle mémoire. Toute la suite n'a aucun caractère scientifique, on raisonnera en ingénieurs. Plus précisément, étant donné des outils et du matériel d'un type précis, nos efforts se consacreront à la fabrication de notre produit. Ce sont donc des compétences d'ingénierie technique qui sont mises en jeu, le pourquoi du comment sera mis à l'écart. Il n'est cependant pas exclu que les questions intéressantes soient ajoutées plus tard, ou dans le fil de la discussion.  
 
Alors quels seront notre matériel et nos outils? Le matériel et les outils du jardin nous permettront de commencer. Pour fabriquer notre première cage mémoire, il suffit d’une boîte en carton et d’une étiquette en papier. On accroche l’étiquette au carton et on écrit le nombre 1.  
 
http://i48.tinypic.com/eunckg.gif
 
Mais... le résultat n’est pas encore satisfaisant…  
Pourquoi ?

  • -> C'est évident qu’il nous manque du contenu à mémoriser !

Réfléchissons. On pourrait mettre un tas de choses dans notre boîte mais on veut faire de l’informatique. Ceci implique au moins les 2 choses suivantes :  

  • 1 - Tout ce qu’on veut stocker c’est : de l’information.  
  • 2 - On doit utiliser du matériel électrique.  

La seconde remarque nous fait donc passer du jardin au garage.
 
http://i48.tinypic.com/260y4gk.gif
(...dit-il le carton à la main...)
 
En fouillant un peu on pourra certainement dénicher une ampoule. Il restera à l'installer dans notre boîte.  
 
http://i49.tinypic.com/mlhudt.gif
 
Allumé, éteint, éteint, allumé…
 
Pouvoir énumérer 2 états, voilà ce qu’on appelle 1 bit d’information. Il y a une seule information consistant en 2 possibilités complémentaire : ou l’ampoule est allumée ou bien elle est éteinte, mais pas les 2. Ces 2 deux possibilités constituent 1 bit dans le sens où un bit est le minimum syndical permettant de signaler ces 2 états.  
 
Notons bien que quand il n’y a qu’un seul choix il n’y a aucune information. Par exemple si tous les lapins du monde étaient blancs, ça n’apporterait rien de dire : « un lapin blanc ». On apprend qu'on a un lapin plutôt qu'autre chose, mais ensuite d'ajouter qu'il est blanc est superflu. Ce serait différent si les lapins pouvaient être ou blanc ou noir et rien d'autre. Dans ce cas il nous faudrait 1 bit d’information supplémentaire quand on parle d’un lapin pour préciser la question. Notre cage mémoire peut donc mémoriser une information minimale et neutre mais utile car elle distingue 2 états.
 

Citation :

Le génie des probabilistes comme Blaise Pascal a été de concevoir clairement l'idée que de connaître le nombre d'états possible d'un objet était une information non négligeable sur l'objet. Pascal a aussi compris que quand on a un nombre élevé de lapin, savoir dans quelle proportion un état se présente par rapport à un autre est une information précieuse. Les australiens en savent quelque chose. Par exemple  pour estimer sur leur territoire le nombre total de spécimen du terrible lapin blanc (voisin du nombre d'Avogadro si on en croit la rumeur) il leur suffira d'1 seul bit. Enfin 1 bit multiplié par un nombre de lapin échantillonné - mais certainement pas les 6x10^23 bits qu'exigerait un comptage exhaustif.   On trouvera des détails sur les aventures australiennes de Pascal dans tout bon manuel de jardinage. Bon c'était une note d'humour, je tenais surtout à citer Pascal comme étant l'inventeur de la première machine de Babbage.


 

Citation :

Revenons à nos moutons. On commente souvent la citation d’Einstein, « Dieu ne joue pas au dé ». C’est une affirmation logique car utiliser un dé pour fixer des possibilités est une marque de la connaissance humaine et de son type de raisonnement face à des connaissances incomplètes. Quand les connaissances sont complètes, il semble inutile de recourir aux probabilités qui ne sont jamais que la forme générale d’une information finie, c'est-à-dire un comptage de bits.


 

Citation :

Je ne peux pas m'empêcher de citer Paycheck que je viens de revoir récemment. L’acteur principal dit à peu près ça, à un moment donné : « si tu dis son avenir à quelqu’un, il n’a plus d’avenir ». C'est vrai du fait qu'on aurait beau demander à cette personne de faire des choix, le fait qu’elle connaisse déjà le déroulement des événements rend caduque la notion de choix. Paycheck est intéressant parce qu'il souligne aussi l'effet psychologique produit par l'écrasante pensée de connaître son avenir avec certitude. On peut rapprocher ça des effets produits sur les classes défavorisés par le sentiment d'appartenance à une société doté d'une élite bourgeoise répressive.


 

Citation :

Ce dernier exemple nous conduit à l'actualité en France. Je pense qu'on peut dire qu'il n’y a plus de démocratie quand un groupe parlementaire dont on rejette une proposition de loi peut se permettre sans choquer personne, de remettre cette loi à l’ordre du jour, et ce jusqu’à qu’elle finisse par passer. Or c'est une pratique devenue courante à l’ump. Hadopi ou la taxe carbone en sont des exemple édifiants... d'autant plus que tout cela se passe au pays de Pascal!


 
Restons sur l'exemple de départ, on a parlé de 13 cages. Il nous reste donc 12 autres cages à monter. On obtiendra alors une mémoire capable de stocker 13bits. C'est une mémoire qu'on peut facilement effacer et réécrire. Mais on peut aussi la conserver longtemps en l'état à condition de ne pas couper l'alimentation et de penser à changer les ampoules grillées.
 
http://i45.tinypic.com/28c38ec.gif
 
En conclusion : Que peut mémoriser composée de 13 cages à lampe ?
 
Réponse : Dans le cas le plus simple, 1 nombre binaire de 13 bits. C’est-à-dire un nombre compris entre 1 et le nombre de configurations possibles d’ampoules allumées ou éteintes. Autant le dire tout de suite, il y a  2^13=8192 cas possibles.  
 
Mais pourquoi utiliser des nombres binaires ?
 
Réponse : A chaque configuration d’ampoules allumées/éteinte on pourrait associer un nombre ou autre chose de manière absolument quelconque. Mais ça ne nous aiderait pas à compter.  Et en informatique, même rudimentaire, il est important de savoir compter. Il faut donc que notre technologie de cage équipée d’une ampoule soit en parfaite adéquation avec le comptage. Le choix des nombres binaires s'imposent de lui-même. Ce sera plus évident quand on aura approfondi la question. C'est l'objet de la partie suivante.
 
Compter en binaire (partie 1)
 
Pour apprendre à compter en binaire on va utiliser nos cages mémoires pour remplacer les étiquettes papier qui servaient à les numéroter. Ces étiquettes étaient utiles pour nous, afin d'identifier et classer nos cages. Tel quel elles ne sont guère utilisables par l'ordinateur. En y substituant des cages à ampoule ce problème sera réglé.
On a donc 13 étiquettes numérotées de 1 à 13, voyons comment avoir une numérotation équivalente en binaire comme l'impose le choix technologique de cages à ampoule.  
 
Pour commencer à compter, il nous faut définir:

  • une unité et  
  • l’opération d’ajouter une unité à une cage.  

Notre unité sera l’ampoule allumée.  
Ci-dessous, on liste les conventions qu’on adoptera pour faire du binaire. Pour l’instant on ne s’occupera pas des limitations techniques, le fait qu’on travaille avec des groupes limités de cages en quantité déterminée par exemple.  
 
Règles pour l’arithmétique binaire :
R1_* Ajouter à une cage dont l’ampoule est éteinte à une ampoule allumée (dans sa cage) revient à allumer cette première cage.  
http://i50.tinypic.com/16kq1c6.gif
R2_* Une ampoule allumée ajoutée à une ampoule allumée oblige à utiliser une cage allumée supplémentaire qu’on positionne à gauche (si le sens d’écriture est de gauche à droite). Il reste enfin à éteindre la cage de droite.
http://i45.tinypic.com/15zip2.gif
 
A ce point là de notre progression en technique numératoire, il faut faire quelques remarques pour aller plus loin sans avoir l'impression de sauter des étapes.  
 
L’addition de deux cages isolées peut nécessiter de créer des cages doubles. Ces cages doubles sont bien distinctes des cages isolées, par exemple il y a un sens de lecture et il est primordial de le respecter. Si on ne sait pas fabriquer des cages doubles, ou si on ne veut pas, on pourra tomber sur un dépassement de capacité lorsqu’on additionnera 2 cages simples. D’un autre côté, si on a l’intention d’utiliser des cages doubles, on a tout intérêt (mais c’est aussi une question de moyens) à convertir toutes les cages simples en cages doubles équivalentes. Voyons des conventions utiles dans ce sens :
 
Convention :
C1_* Rappelons que le sens de lecture est de gauche à droite et donc que les dépassements de capacité de l’addition sont résolus par adjonction de cages à droite (et non à gauche).  
 
La convention C1 est alors la suivante : quand on a une cage double dont :  

  • la cage de droite est une ampoule allumée ou éteinte et  
  • la cage de gauche une cage éteinte,  

la valeur binaire de la cage double est la même que celle d’une cage simple dont l'ampoule est dans le même état que l'ampoule de la cage de droite.  
 
http://i46.tinypic.com/5xnzgy.gif
(l'égalité fonctionne évidemment dans les 2 sens)
 
La convention précédente se généralise. Ce n'était qu'une introduction à la convention suivante :
 
C2_* Commençons par prendre une suite de cages éteintes contigües, associées à l'intérieur de la représentation d’un nombre binaire. La suite de cages éteintes peut être n'importe où dans une suite de cages dont on sait que la fonction est de représenter un nombre binaire à l'aide d'ampoules allumées ou éteintes. La suite de cage totale respecte donc les règles rigides dont on a parlé jusqu'à présent, notamment les cases se suivent dans un ordre défini de manière stricte. Bon.
 
Si la cage la plus à gauche de la suite de cages éteintes est aussi la plus à gauche de la suite complète des cages du nombres binaires représenté,  
alors la valeur du nombre n’est pas influencée par cette chaîne et elle peut être ignorée pour la détermination de la valeur.  
Ce principe (simple en fait) est illustré par le gif suivant.
 
http://i48.tinypic.com/2q0m03s.gif
 

Spoiler :

Note :  
Il est important pour nous, ingénieurs jardiniers en informatique, de toujours distinguer une valeur numérique théorique et la construction réelle de cette valeur par des moyens concrets à l'aide de cages à lampe par exemple.  
On doit alors se dire que l'addition binaire qui nécessite en théorie de pouvoir ajouter des cases au fur et à mesure rencontrera dans la réalité quelques limites. On sera sans doute confronté à un dépassement de capacité, les cages ne tombant pas du ciel!
On a aussi vu qu’un sous-groupement de cages éteintes contigües qui débutent à droite d’un groupement de cages représentant un nombre binaire, pouvait être ignoré. Pourtant il faut bien comprendre qu’on ne va pas utiliser des groupements à tailles variables associées à volonté en fonction des besoins. J'ai essayé de trouver un mécanisme chargé de gérer de telles associations et je pense que c'est une chose compliquée à intégrer dans un système de cages électrifiées. Ce n’est peut-être plus vrai avec des ordinateurs analogiques, basées par exemple sur le comportement réflexe de cellules biologiques… mais on n’en est pas là.  
En bref, malgré une théorie souple, notre technologie de numération sera assez rigide. Ainsi on définira par avance une taille unique pour les groupements de cages. Au moins dans ce cadre l'addition se fera sans dépassements de capacité. Il est vrai par ailleurs que certaines cages ne seront pas significatives pour certains nombres (les cages éteintes à gauche) ce qui un gaspillage que des écologistes forcenés voudront sans doute dénoncer. Et c’est leur droit. Mais pour bien faire ils devront d’abord évaluer l’énergie nécessaire à une utilisation souple de ressources réduites et la comparer à la masse de ressources à monopoliser lors d’une utilisation rigide. L’introduction raisonnée de la dimension écologique doit à mon avis en passer par là.


 
Il nous reste à voir une convention, incontournable elle aussi.  
 
C3_* Un cas spécial, la valeur nulle.
On aurait pu fixer a priori, dès le départ, la valeur zéro comme étant représentée par une cage éteinte. Mais il aurait fallu vérifier après coup que cela n’entraîne pas d’incohérences. Je pense qu'il vaut mieux déduire naturellement la valeur nulle de la représentation des nombres découlant des conventions précédentes. En effet cette valeur s'impose par elle-même quand on tombe sur un cas spécial de simplification d'écriture où toutes les cases d'un nombre binaire sont éteintes. Le gif suivant en donne l'illustration :
 
http://i50.tinypic.com/24nk2u9.gif
 
Un assemblage constitué uniquement d’ampoules éteintes équivaut à n’importe quel assemblage d’ampoules éteintes (la valeur est la même). Notamment : l’assemblage particulier constitué d’une seule ampoule éteinte ou même d’aucune ampoule revient au même. Cette dernière remarque est intéressante car elle justifie la nécessité d’attribuer la valeur nulle à un nombre constitué exclusivement d’ampoules éteintes. On comprend aussi qu'on peut prendre une seule cage éteinte à titre de notation pour zéro.
 
En conclusion, arrivé à ce point on a :  

  • la valeur d’une unité est matérialisée par l’ampoule allumée, et
  • la valeur nulle avec son représentant particulier : l’ampoule éteinte.  

Et on sait réaliser un début d’addition.  
C'est bien. Ça nous encourage à aller un peu plus loin en terra informatica.
 
Bon la suite un peu plus tard  :sweat:


Message édité par cappa le 08-01-2010 à 18:11:11

---------------
Tester le 1er multisondage HFR ---> MULTISONDAGE.
Reply

Marsh Posté le 08-01-2010 à 17:18:46   

Reply

Marsh Posté le 08-01-2010 à 17:20:57    

Compter en binaire (partie 2)
 
A partir de maintenant nous utiliserons toujours un groupement de cages prédéfini pour notre numération, c’est-à-dire un nombre de cages fixes - quitte à utiliser des ampoules éteintes non significatives. On a déjà manipulé des cages simples ou doubles. Pour introduire cette nouvelle partie, observons les cages triples.
 
http://i48.tinypic.com/262mip5.gif
On voit qu'on peut énumérer 8 configurations uniques (qui peuvent fournir 8 étiquettes par exemples). On dispose ainsi de nombres entiers binaires dont les valeurs sont comprises entre 0 et 7. Ces nombres entiers binaires sont construits à l'aide de l'addition d’une unité (opération +1). On commence par la valeur nulle, on fait +1, ce qui donne la valeur 1, +1, donne 2 et ainsi de suite. Malheureusement, comme on a des triples-cages , il est impossible d'afficher une neuvième configuration d'ampoules pour matérialiser le nombre valant 8.
 
Étiquettes pour 13 cages
 
Revenons à nos 13 cages. La question était fabriquer 13 étiquettes pour les numéroter. La question qui vient à l'esprit est la suivante :  

  • quel est le nombre de cages nécessaires pour représenter 13 nombres binaires successifs ?


Pour répondre, groupons quelques faits déjà observés :

  • avec une cage isolée on peut écrire 2 nombres, dont la valeur binaire est 0 ou 1
  • avec une double-cage, il faut penser à la convention d’écriture (classiquement de gauche à droite), et on écrit alors sans ambiguïté 4 nombres, valant 0, 1,2 et 3.
  • avec une triple-cage, on écrit les 8 premiers nombres binaires avant de rencontrer un dépassement de capacité.


Le gif n'est pas fourni, mais on pourrait vérifier très facilement qu’avec 4 cases on peut écrire les 16 premiers nombres binaires.  
Les petits malins auront surement remarqué qu'à chaque fois qu’on ajoute une case, on double nos possibilités. On peut aussi se donner la formule Nn=2^Nc, avec Nn égal au nombre de nombres binaires ... et Nc, égal au nombre de cages à lampe. La formule marche même avec 0 cage(s) puisque 1 = 2^0.
Or on sait qu'on peut considérer que zéro cage correspond au nombre zéro. Bon, ce cas ne nous sera pas utile outre mesure.
 
Toujours est-il que pour remplacer nos 13 étiquettes papier, on ne peut pas se contenter de 3 cages à lampe. Avec 3 cages on a que 8 nombres valant 0 à 7. D'un autre côté, 4 cases c’est un peu trop. On accède à 16 nombres (de 0 à 15). Comme on ne peut pas couper les lampes en 4, on doit en fait opter pour 4 cases. - Mais est-ce bien écologique môssieur Coppenhaguen ?
 
On peut quand même tirer profit du fait qu’on ait besoin que de 13 nombres sur alors que 4 cases nous en offrent 16. Grâce à la marge dégagée, on peut « caser » nos 13 nombres successifs en commençant par 1 au lieu de 0. C'est d'un intérêt marginal mais ça revient à reproduire avec d'avantage d'exactitude nos étiquettes papier de départ !
 
Bien. On peut numéroter nos 13 cases mémoires dans une technologie intelligible pour la machine, une représentation interne comme on dit. Illustration :
 
http://i45.tinypic.com/28c38ec.gifhttp://i50.tinypic.com/34gabdz.gifhttp://i49.tinypic.com/30ud83l.gif
(2 possibilités en utilisant 4 cages, on commence par 0, ou par 1)
 
Une chose gène un peu. On utilise des 4-cages, et des 13-cages, techniquement c'est tout de même différent.  
 
Notion de standardisation
 
On a donc un petit souci de standardisation. Je m’explique. On a décidé au départ que nos mémoires seront composées de 13 bits matérialisés comme sur les illustrations. Mais on a construits des composants mémoire de 4 bits uniquement pour la numérotation des cases. Il serait pourtant plus simple de n’utiliser qu’un type de composant, d'une part pour la production des composants (penser à une usine) et pour la détermination de leurs caractéristiques en fonctionnement (penser au laboratoire électronique). Pour nous, (on est bien loin de Coppenhague...) choisir la barette de 13 bits pour tous les usages conviendra fort bien.
 
Optons pour des composants à 13 bits. Il n'y a plus qu'à lancer la production industrielle :)
 
Avertissement :
La suite et la fin de ce tutorial présentent des développements qui n'ont pas d'autre justification que d'offrir des pistes de réflexion sur une mémoire complète d'ordinateur s'en rompre avec la présentation précédente. Un futur tutorial présentant des développements à partir des choix actuels de l'industrie pourrait présenter d'avantage d'intérêt. Ce qui suit reste tout de même utile pour réfléchir.  
 
Considérations supplémentaires
 
Comment distinguer un composant d’étiquetage d’un composant de mémoire à usage général ?
 
On peut utiliser pour cela différentes méthodes, mais la plus simple consiste à introduire un [/i]bit réservé[/i]. Ce bit réservé pourrait être le premier bit de la barrette de 13 bits (dans l’ordre de lecture). Pour fixer les idées :

  • si ce bit vaut 1, les 12 autres bits coderont le contenu d’une étiquette,
  • si il vaut 0, alors on disposera des 12 bits suivant pour stocker librement du contenu.  


On perd bien sûr au passage 1 bit pour nos mémoires de type libre mais l'usage de bits réservé est courant pour distinguer la fonction d'un composant, son contenu...
 
On gagne cependant 8 bits pour nos étiquettes du fait de la standardisation. Et c’est loin d’être un drame, au contraire. Ce dernier fait va permettre d'aller encore plus loin. On sacrifiera cependant 2 bits sur les 13 bits de notre composant standard pour identifier  un 3ème usage de nos barrettes standards et accroître considérablement le potentiel de notre mémoire.
 
Notion de registre
 
On s’est donné beaucoup de mal pour être en mesure de numéroter chaque bit d’un composant de mémoire à l'aide d'une étiquette, ce qui constitue un [/i]adressage[/i]. Ce n’était pas absolument nécessaire car ces composants étant petits, la lecture bit par bit est certainement très rapide. On peut alors imaginer de récupérer la position particulière de chaque bit en incrémentant un compteur lors de la lecture effective de la barrette. Mais l’adressage devient un bien précieux s’agissant de se repérer dans la totalité d’une mémoire composé d’une quantité importante de composants de bases. Conformément à l'esprit de ce topic, on ne va cependant pas revenir sur nos acquis. Gardons les étiquettes, et identifions 1 type de composant mémoire de plus, le registre.  
 
Résumons-nous. On dispose d’un composant standard de mémoire, composé d’une suite de 13 bits. Mais 2 bits sont réservés dans le but d'identifier 3 utilisations possibles :

  • utilisation comme mémoire libre : les 2 bits d’identification marquent zéro
  • utilisation pour étiqueter les bits d’une mémoire libre : les 2 premiers bits réservés marquent 1
  • utilisation pour étiqueter le numéro dans le registre où sont juxtaposées toutes les barettes : les 2 premiers bits sont réservés et marquent 2.


http://i50.tinypic.com/2d7dc2p.gif
 
[Quelques ajouts à venir - bon pas pour ce soir [:panzani gino] ]


Message édité par cappa le 08-01-2010 à 18:05:16

---------------
Tester le 1er multisondage HFR ---> MULTISONDAGE.
Reply

Marsh Posté le 21-01-2010 à 14:58:03    

j'ai rien pigé   :D   mais bonne idée  :)


---------------
Tentez de gagner un iPad http://antistatique.net/ipad/37M
Reply

Marsh Posté le 22-01-2010 à 10:42:50    

andrei66 a écrit :

j'ai rien pigé   :D   mais bonne idée  :)


Il faudra que j'ajoute des exemples d'application, je cherche  :o


---------------
Tester le 1er multisondage HFR ---> MULTISONDAGE.
Reply

Marsh Posté le 25-01-2010 à 19:44:02    

C'est super genial (bon je suis dans la micro-electronique aussi  :D ) Tu as tres bien construit ton raisonnement, jusqu'a une machien a etat : genial ! [:gigli]


---------------
Un blog qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed