Désolé pour les remarques débiles, on va dire que j'étais fatigué. Je le relirai plus tard, histoire de voir si je me pose les mêmes questions.
Implémentation physique du codage, pour être précis, et c'est faire usage d'un vocabulaire pas adapté à un débutant : le terme implémentation est franchement casse-gueule pour un débutant. Et faire absolument rigoureux alors que cela nuit à la compréhension, ce n'est pas mon style.
On n'est pas obligé d'être rigoureux à ce point : si le terme d'implémentation est vague, on peut dire un truc du genre "utilisation du codage en pratique". L'idée qu'il me semble intéressant de véhiculer, c'est le passage théorique/physique.
Au passage : de manière générale, beaucoup des propositions de correction que tu proposes tombent dans ce cadre : une bonne partie tient plus de la micro-optimisation qu'autre chose. Et je parle de manière générale, y compris pour les remarques que tu fais sur d'autres tutoriels en bêta (pas forcément les miens).
J'ai l'impression que c'est un reproche, mais je ne comprends pas pourquoi. Du moment où on peut optimiser, on le fait, non ? Ce qui pose problème, c'est la répétition. Mais il me semble, du moins je l'espère, que j'ai passé ce cap.
Et le fait que je ne relève que cela signifie que je n'ai rien constaté de plus problématique, donc c'est plutôt bon signe, non ?
Comme dit en MP, je relèverai les fautes de langue, mais plus tard.
J'en suis au chapitre sur la mémorisation et j'aurais quelques remarques. Mais avant, sache que ce qui suit ne sont pas des conseils pédagogiques : je ne maîtrise pas (du tout) le sujet de ton cours, donc ne t'explique pas comment l'enseigner. Vu que je fais partie, je pense, du lectorat visé, je me contente de relèver ce sur quoi je bute. Si ça ne te convient pas, n'hésite pas à me le dire ainsi que ce que tu préfèrerais que je fasse.
Circuits séquentiels
Cet extrait apparaît un peu abstrait, dans le sens où on ne comprend pas trop à quoi ça sert dans la réalité. Notamment, je ne comprends pas trop la différence avec la mémoire (" On verra dans la suite de ce tutoriel comment les mémoires actuelles font pour stocker des bits : elles peuvent utiliser aussi bien un support magnétique (disques durs), optique (CD-ROM, DVD-ROM, etc), que des transistors (mémoires RAM, FLASH, ROM)."). Peut-être pourrais-tu fournir des exemples de circuits séquentiels, sans décrire la partie mémorisation ?
C'est un détail, mais que signifie le / dans le nom des transitions sur le graphe "Graphe de transitions entre états" ?
Avec les automates de Moore, ce qu'on trouve en sortie ne dépend que de l'état de l'automate. On peut donc simplement placer un circuit combinatoire lit l'état de l'automate et fournit le résultat à mettre sur la sortie. L'état du circuit est mis à jour par un circuit combinatoire, à partir des entrées et de l'état actuel du circuit.
Tu parles de deux circuits combinatoires différents et du coup on se perd un peu. Heureusement, le schéma balaie les doutes, mais peut-être serait-il intéressant d'ajouter un "autre" quelque part ?
Autre forme de circuits séquentiels : les automates de Mealy. Avec ceux-ci, la sortie dépend non seulement de l'état du circuit, mais aussi de ce qu'on trouve sur les entrées.
Peut-être pourrais-tu parler de la mise à jour du circuit ? D'après le schéma, l'état prend obligatoirement la valeur de sortie de l'automate : on ne considère pas les entrées ?
Bascules et registres
Mais en utilisant deux portes NON reliées comme indiqué sur le schéma juste en dessous, on peut mémoriser un bit. Si on place un bit en entrée d'une porte
Je ne comprends pas comment on peut placer un bit en entrée de la porte vu que celle-ci est déjà prise par la sortie de l'autre porte. Il y a deux entrées ? Vu la manière dont tu introduis la bascule RS à NOR, je pense que non, mais du coup je ne comprends pas trop "L'ensemble sera stable : on peut déconnecter l'entrée d'un inverseur, elle sera rafraichie en permanence par l'autre, avec sa valeur précédente.".
Peut-on récupérer le bit stocké ?
En fait, il semblerait que cette bascule ne serve qu'à illustrer la manière dont on peut mémoriser un bit, et ne représente pas un circuit exploitable dans la réalité. Le cas échéant, peut-être pourrais-tu ajouter une note à ce propos ?
Pour mettre à jour l'état de notre circuit, on doit remplacer les portes NONpar une porte logique à deux entrées. Celle-ci doit inverser le bit venant de l'autre inverseur si l'autre entrée est à zéro (ou à 1, suivant la bascule) et mettre à jour la bascule avec un 1 ou un zéro sinon.
Sans avoir lu la suite, le "et mettre à jour la bascule avec un 1 ou un zéro sinon" n'est pas très clair.
Le principe de ces bascules (RS à NOR) est assez simple :
Il faudrait essayer pour voir, mais peut-être que cette liste est en trop et qu'ajouter une colonne "Bit mémorisé par la bascule" au tableau du dessous suffirait. En effet, je ne crois pas que la liste apporte plus d'informations que le tableau, et elle est plus dure à comprendre (notamment, dans les deux premier point, tu ne parles pas de la sortie : on pourrait donc croire qu'aucune valeur n'est retournée, et qu'on ne fait que mettre à jour la bascule).
On peut aussi utiliser des portes NAND pour créer une bascule.
Tu en parles uniquement pour la culture, ou il y a un avantage par rapport aux bascules RS à NOR ?
Dans la bascule RS à NAND du dessus, le bit mémorisé change dès que l'on envoie un bit à 1 sur une des deux entrées R et S. Il peut être utile d'autoriser ou d'interdire cette modification dans certains cas.
Un exemple de tels cas ?
Cette configuration problématique survient quand on cherche à mettre R et S à 1 en même temps
Ou à 0, selon le type de bascule RS.
Ce qu'on vient de fabriquer s'appelle une bascule D.
Ca se déduit de se qui précède, mais peut-être pourrais-tu expliquer comment fonctionne cette bascule ? Dire qu'elle stocke le bit passé sur l'entrée D.
Ou alors, écrire un truc du genre "La table de vérité (bit mémorisé en fonction du bit d'entrée) de cette bascule se déduit de ce qui précède : faites-le en exercice.".
Le registre le plus simple, qui sera le plus utilisé dans ce cours, est le registre à lecture et écriture parallèle
Pour coïncider avec ce qui suit, peut-être pourrais-tu parler de registre à entrée et sortie parallèles ?
Le registre le plus simple, qui sera le plus utilisé dans ce cours, est le registre à lecture et écriture parallèle
[…]
Avec les registres à décalage à entrée et sortie série
[…]
Avec les registres à décalage à entrée série et sortie parallèle
[…]
Enfin, il reste les registres à entrée parallèle et sortie série.
Gras ?
Registre à décalage (image)
C'est quoi "Flip Flop" ?
Ces bits sont utiles quand on veut transmettre un nombre sur un fil
Ces registres, non ?
On initialise les bascules, avant de déconnecter les entrées : les bits se propageront alors de bascule en bascule vers la sortie à chaque front ou signal sur l'entrée Enable.
Je ne comprends pas trop cela. Cela veut dire qu'au bout de quatre fronts sur l'entrée Enable (dans le cas de ton schéma), toutes les bascules ont même valeur que la première ? Je me doute que ce n'est pas ça, mais j'ai du mal à voir ce qui se passe concrètement.
A ce propos, peut-être serait-il intéressant de faire des animations comme celle pour la bascule avec les deux portes NON, qu'on comprenne ce qu'il se passe concrètement ? Notamment, j'ai du mal à voir quand un bit sort de la bascule : quand il y en a un en entrée, on le mémorise, mais quand le transmet-t-on sur la sortie ?
Tic, Tac, Tic, Tac : Le signal d'horloge
De plus, les portes n'ont pas le même temps de propagation : une porte NON aura tendance à être plus rapide qu'une porte NAND, par exemple.
Je ne comprends pas trop le "De plus" : je ne vois pas le rapport avec le chemin critique, qui est une définition.
Autre facteur qui joue beaucoup sur ce temps de propagation : le nombre de composants reliés sur la sortie d'une porte logique. Plus on connecte de portes logiques sur un fil
Je comprends l'idée, mais la formulation ne me semble pas très claire. En effet, tu parles au débuts de composants en sortie d'une porte logique, puis de portes logiques connectées à un fil. J'imagine que les secondes portes logiques font référence aux composants et que le fil correspond à la sortie de la première porte logique ?
il vaut mieux modifier votre circuit de façon à minimiser le temps perdu dans les interconnexions au lieu de diminuer le Critical Path
J'ai un peu bloqué sur cette phrase. Peut-être pourrais-tu la reformuler d'une manière analogue à celle qui suit ?
il vaut mieux chercher à minimiser le temps perdu dans les interconnexions que chercher à diminuer le Critical Path
Ce temps de propagation doit être pris en compte quand on crée un circuit séquentiel : sans ça on ne sait pas quand mettre à jour la mémoire dans le circuit. Si on le fait trop tôt, le circuit combinatoire peut sauter des états.
Je ne comprends pas trop cela. La dernière phrase décrit-elle la situation suivante ?
- Arrivée d'un bit sur l'entrée
- Début de l'enregistrement du bit dans la bascule
- Arrivée d'un autre bit sur l'entrée
- Fin de l'enregistrement du bit dans la bascule
On peut notamment faire en sorte que les entrées et le circuit combinatoire préviennent la mémoire quand ils veulent la mettre à jour. Quand l'entrée et le circuit combinatoire sont prêts, on autorise l'écriture dans la mémoire. C'est ce qui est fait dans les circuits asynchrones.
Est-ce une caractérisation de ces circuits ? Dans le cas contraire, qu'est-ce qu'un circuit asynchrone ?
En faisant cela, notre circuit logique va "lire" les entrées et en déduire une sortie uniquement lorsqu'il voit un front montant (ou descendant) sur son entrée d'horloge !
Est-ce le cas de tous les circuits ? Ou bien est-ce que les circuits combinatoires travaillent en continu ?
Je me rends compte en fait que j'ai du mal à visualiser ce qu'il se passe concrètement dans un circuit, c'est-à-dire ce que valent les grandeurs électriques aux différents points.
La présence de plusieurs horloges est justifiée par un fait très simple : certains composants informatiques sont plus lents que d'autres et ne sont pas capables de fonctionner avec des horloges rapides.
Je ne comprends pas trop ce passage. En effet, tu dis plus haut qu'une horloge sert justement à faire cohabiter des composants de vitesses différents (à faire en sorte que le plus lent puisse comprendre tout ce que lui dit le plus rapide). Si on utilise plusieurs horloge (caricaturons : une par composant), ça ne fonctionne plus, si ?
Augmenter la fréquence a tendance à faire chauffer le processeur plus que de raison.
N'y a-t-il aussi pas ça comme cause à la limite fréquentielle ?
Aujourd'hui, on est obligé d'y ajouter un ventilateur et si possible avec une pâte thermique
Peut-être pourrais-tu ajouter une note pour définir ce qu'est une pâte thermique ?
Globalement, tout est très clair : c'est bien expliqué et bien illustré par les schémas. Par contre, j'ai trouvé cette partie très théorique et plutôt abstraite, et je ne suis parvenu à la finir (et à assimiler les idées principales) qu'après avoir eu un TD sur le sujet à l'école. N'y aurait-il pas moyen d'étudier des cas concrets, comme on le fait dans le chapitre précédent avec l'extrait "Créer ses propres circuits" ?
Merci.