Fonctionnement des ordinateurs de zéro

Fonctionnement des ordinateurs de zéro

a marqué ce sujet comme résolu.

Pour moi le DDR c'est l'utilisation des deux fronts d'horloge de la clock, le QDR on ne peut pas utiliser 4 fronts sur un seul signal de clock, il en faut donc deux.

zeqL

Il me semble que sur certaines SRAM DDR assez rares (et anciennes), ce n'est pas le cas : il y a bien doublement de la fréquence du bus mémoire (seul le front montant compte) et non utilisation des deux fronts d'horloge. Mais dans tous les cas, la fréquence effective double, même si la fréquence réelle n'a pas changé avec l'utilisation des deux fronts.

+0 -0

Pour moi le DDR c'est l'utilisation des deux fronts d'horloge de la clock, le QDR on ne peut pas utiliser 4 fronts sur un seul signal de clock, il en faut donc deux.

zeqL

Il me semble que sur certaines SRAM DDR assez rares (et anciennes), ce n'est pas le cas : il y a bien doublement de la fréquence du bus mémoire (seul le front montant compte) et non utilisation des deux fronts d'horloge. Mais dans tous les cas, la fréquence effective double, même si la fréquence réelle n'a pas changé avec l'utilisation des deux fronts.

Mewtow

Je ne sais pas, mais commencer à se dire qu'il y a 20 ans DDR voulait dire autre chose alors que ce n'est plus du tout utilisé aujourd'hui, ça ne me semble pas être le bon raisonnement.


IV.1 Bus, cartes mères, chipsets et Front Side Bus
  • Pour relier tout ces composants ensemble, -> tous

  • Ce bus possède une masse et un fil d'alimentation, qui permettent d'alimenter les périphériques connectés sur le port USB. Ben oui, votre souris USB doit bien être alimentée en électricité ! Le truc, c'est que les données ne sont pas codées en utilisant le codage NRZ. Un bus USB transmet un 1 en mettant une tension de -5 volts sur la broche D- (la broche D+ contient alors un joli petit zéro volt), et transmet un 0 en mettant une tension de +5 volts sur la broche D- (la broche D- contient alors un joli petit zéro volt).
    Non on ne met pas 5V et 0V ou -5V et 0V. C'est un signal différentiel, oui, mais on n'a pas de tension négative ! https://en.wikipedia.org/wiki/USB#Signaling

  • Non. En effet, un bus doit toujours attendre un moment avant d'envoyer la donnée suivante. Or, il est difficile pour un bus parallèle de mettre à jour son contenu, comparé à un bus série. -> En quoi est-ce difficile pour un bus parallèle de mettre à jour son contenu ?

  • cela peut sur-compenser le fait -> surcomprenser

  • Voici l'explication : lorsque la tension à l'intérieur du fil varie (quand le fil passe de 0 à 1 ou inversement), le fil va émettre des ondes électromagnétiques qui vont aller perturber les fils d'à coté. C'est le phénomène de Crosstalk. Il faut attendre que la perturbation électromagnétique se soit atténuée pour pouvoir lire les bits sans se tromper, ce qui limite le nombre de changement d'état du bus par seconde. Autre problème : les fils d'un bus parallèle ne sont pas tous identiques électriquement : il n'est pas rare que la résistance des fils ou d'autres propriétés électriques changent très légèrement d'un fil à l'autre. Un bit va se propager à des vitesses qui varient suivant le fil. On est obligé de se caler sur la vitesse la plus basse pour éviter des problèmes à la réception.

Le crosstalk n'est pas la cause principal, car on a les techniques pour le diminuer sauf que cela prend beaucoup de place (ajout de masses) et donc ça coûte plus cher. Là où un lien série ne sera pas impacté par le crosstalk (mais il pourra très bien perturber des signaux d'autres bus !)
De plus il y a aussi un problème de synchronisation : en parallèle, le récepteur va devoir attendre que tous les signaux arrivent, il y a donc une fenêtre de réception, or plus la fréquence augmente et plus cette fenêtre est réduite. Aujourd'hui on peut calculer le temps de propagation dans une piste, mais faire de la simulation ça coûte de l'argent, et tous les domaines n'en font pas (comme le grand public). Un lien série est beaucoup plus tolérant.
Le PCI Express parallélise des liens séries : le 4x possède 4 liens série (en fait 8 car il y a 1 lien TX et 1 lien RX à chaque fois), le 8x 8 liens, etc.

My 2 cents'

  • d'une donnée sur le bu est fixé une fois -> bus
  • effectuer une lecture ou un écriture sait combien -> une écriture
  • le contenu du bus n'est pas mit à jour à chaque front -> mis
  • mais au deux : fronts montants et descendants. -> aux

  • Un bus full duplex permet d'être à la fois récepteur et émetteur. L'astuce des bus full duplex est simple : il suffit de regrouper deux bus simplex ensemble ! Pas forcément. La partie gigabit Ethernet qui est au niveau du câble, malgré les 4 paires dans le câble n'utilise pas 2 bus simplex : http://electronics.stackexchange.com/questions/132486/how-does-bidirectional-transmission-on-gigabit-ethernet-work

  • Si deux composants d'envoyer ou recevoir une donnée sur le bus en même temps -> décident ?

  • Circuits trois états Comme dans un commentaire précédent : tu parle des trois états sans jamais parler de haute impédance… D'ailleurs je ne vois pas ce que le titre a en rapport avec le contenu vu que tu met juste lecture / écriture / lecture + écriture.
    Surtout que lorsque tu parle de l'arbitrage, il n'y a pas nécessairement besoin d'un fil busy : sur des bus récents, les composants sont capables de détecter si le bus est en haute impédance ou non. S'il ne l'est pas, cela veut dire que le bus n'est pas libre. Pas besoin d'un fil busy. Il me semble que c'est le cas avec l'I2C.

  • Chipset, back-plane bus, et autres -> backplane (pas de tiret)

  • Le FSB a disparu sur les dernières architectures Intel et AMD, non ?

IV.2 Communication avec les Entrées-Sorties
  • nos entrées-sorties (et donc nos périphériques) sont reliés au reste -> reliées
  • les données, et autres commandes à envoyer à l'entrée-sortie -> pas de virgule après "les données" / "à envoyer" : tu utilise déjà "à envoyer" au début de la phrase (avant les : ), ca fait redondance et alourdit le texte.
  • Les commandes sont traités par un contrôleur de périphérique, -> traitées
  • qui va lire les données et informations envoyées par le processeur, les interprète, et pilote le périphérique -> interprêter / piloter
  • certains processeurs ajoutent des interruptions, des fonctionnalités -> ":" plutôt qu'une virgule avec interruptions
  • Registres, again -> Registres, encore / Registres, à gain / Registers, again :)
  • Les IRQ sont des interruptions -> signification d'IRQ ?
  • notre processeur sur une entrées -> entrée
  • une ou plusieurs signal d'IRQ arrivent -> un / signaux
  • peuvent contenir beaucoup de chose -> choses
  • Ces trois modes différent par la façon -> diffèrent

J'ai supprimé la partie sur l’interfaçage avec le bus dans le chapitre sur la mémoire, l'extrait faisant doublon avec ce qui était écrit dans le chapitre sur les bus (j'ai aussi modifié l'introduction du chapitre, pour prévenir que les circuits d’interactivement seront vus plus tard dans le cours). Tout a été migré dans ce dernier chapitre, dans l'extrait sur l'arbitrage du bus, extrait qui est maintenant nommé "bus dédiés et multiplexés". Cet extrait a été remanié : il parle d'un sujet plus général, à savoir la différence et les particularités des bus dédiés (que deux composants connectés dessus), et multiplexés (plus que deux composants -> besoin d'arbitrage). J'en ai profité pour parler de l'état haute impédance, ce qui a plus tendance à complexifier inutilement les explications qu'autre chose.

+2 -0

Modifications du chapitre sur le binaire, histoire d'améliorer certains points qui peuvent poser problème. Ces modifications font suite aux retours que j'ai eu sur mes cours face à de vrais étudiants, qui m'ont montré quelles pouvaient être les difficultés de compréhension les plus fréquentes. Dans le détail, j'ai détaillé :

  • comment traduire un nombre du binaire vers le décimal ;
  • la conversion inverse ;
  • la conversion décimal vers complément à deux ;
  • ajouté quelque chose sur la conversion inverse (chose qui sera utile pour les chapitres sur la multiplication signée) ;
  • la virgule fixe est aussi un peu plus détaillée.

D'autres modifications apparaitront peut-être dans le chapitre sur les portes logiques et les circuits combinatoire. J'ai notamment l'intention d’expliquer ce qui se cache derrière la méthode des minterms, son sens profond : tout découle du fait qu'une fois qu'on sait créer un circuit qui vérifie si son entrée vaut une constante $k$ (codée en binaire), on sait créer n'importe quel circuit.

+0 -0

Ce cours correspondant avec ce que j'étudie à l'école, je le reprends depuis zéro (haha), en en profitant pour faire des remarques.

Introduction

Ce cours est accessible à n'importe qui, sans prérequis.

Je doute qu'un élève de l'école primaire comprenne quelque chose à ce cours. ^^

I.1.Introduction

Orthographe

ou tout autre forme d'information

toute

I.1.Tout est nombre

Fond

Pour stocker un texte, il suffit de savoir stocker une lettre dans notre ordinateur et le reste coule de source.

Plutôt un caractère qu'une lettre. ^^

la table ASCII. La voici dans son intégralité, rien que pour vous.

N'est-il pas un peu tôt pour parler d'hexadécimal (dans la table) ?

tous les caractères d'un clavier sont codés. D'ailleurs, les symboles 0 à 31 , ainsi que le 127ème sont un peu bizarres. Ces symboles présents dans ce standard ASCII ne peuvent pas être tapés au clavier

Je ne comprends pas trop le "d'ailleurs".

Ces entiers sont stockés les uns à la suite des autres dans un fichier. Les pixels sont stockés ligne par ligne, en partant du haut, et chaque ligne est codée de gauche à droite.

Peut-être pourrais-tu donner un court exemple ?

Orthographe

l'image est décomposée en morceaux de couleurs uniformes

Il me semble qu'il n'y a pas de "s" à "couleurs".

Style

Pareil pour les images : chaque image

Peut-être pourrais-tu dire "chacune", pour éviter la répétition ?


Tu parles beaucoup d'entiers dans cet extrait, mais ne serait-ce pas plus précisément des entiers naturels ?

I.1.Analogique, numérique et binaire

Fond

le codage numérique va coder des informations en utilisant des nombres entiers, représentés par des suites de chiffres

Je ne comprends pas cette histoire de suite de chiffres.

Un code numérique a une précision figée

Histoire de faire le benêt : tu n'as pas dit ce qu'était un code. ^^

Cela donnera des valeurs du style : 0, 0.12 , 0.24 , 0.36, 0.48… jusqu'à 2 volts.

Ce ne sont pas vraiment des nombres entiers.

Peu importe le codage utilisé, celui-ci a besoin d'un support physique

Encore pour pinailler : pourtant, l'ASCII, le codage en lui-même, n'a pas besoin de valves ou de transistors.

Pour les supports de stockage électroniques, le support en question est une tension électrique.

La tension électrique, n'est-ce pas plutôt la grandeur ?

Après tout, il faudra bien que notre circuit trouve de quoi fournir une tension de 2, 3, 5 volts : la tension codant un chiffre ne sort pas de nulle part ! […] En règle générale, le codage utilisé est un codage numérique. Dit autrement, si la tension est dans tel intervalle, alors elle code tel chiffre : si la tension est dans tel intervalle, alors c'est un zéro, si c'est dans tel intervalle, c'est un 4, etc.

On ne travaille pas avec des tout et rien seulement ?

Codage d'un chiffre décimal avec une tension

Pourquoi le 0 est-il codé par une tension maximale ?


J'ai un peu du mal à comprendre le raisonnement de cet extrait. Cela vient du fait qu'il me semble que pour coder en binaire, on utilise un codage binaire (tout ou rien), et non numérique (plusieurs intervalles). Me trompé-je ?

Orthographe

on peut identifier deux grands types de codage

Je crois bien qu'il y a un "s" à "codage".

C'est du au fait que les calculateurs

variation de tension qui reste dans un des intervalle

s

La résistance aux perturbations électromagnétiques extérieure

s

Présentation

  • le codage analogique ;
  • et le codage numérique.

Peut-être serait-il préférable de ne mettre en gras que les mots "analogique" et "numérique" ?

Au passage, la liste ne répète-t-elle pas la première colonne du tableau ? Qu'apporte-t-elle en plus ?

Celui-ci utilise des nombres réels

Peut-être pourrais-tu mettre "nombres réels" en gras ?

le codage numérique va coder des informations en utilisant des nombres entiers

Même remarque pour "nombres entiers".

Style

en utilisant soit l'aimantation d'un support magnétique, soit en utilisant des tensions

La tournure est un peu bizarre, avec une petite répétition. ^^

nos calculateurs numériques ne semblent pas vraiment très intéressants

Le "très" répète le "vraiment".

si une de ces perturbations un peu violente arrive, le résultat qui arrive en sortie

Peut-être pourrais-tu éviter le répétition ?

La raison vient du fait qu'une

Je crois que c'est soit "Cela vient du fait", soit "La raison est qu'une".

I.1.Conclusion

tout ordinateur contient une mémoire, une unité de traitement, des entrées/sorties.

C'a été dit ça ?


Merci.

+0 -0

N'est-il pas un peu tôt pour parler d'hexadécimal (dans la table) ?

Il faudrait que je trouve une représentation libre de droits de la table ASCII qui n'utilise que le décimal. En attendant, je garde celle-ci.

Je ne comprends pas cette histoire de suite de chiffres.

Bah un nombre entier, ça se note avec des chiffres (en dehors des expressions algébriques, mais c'est autre chose)…

Ce ne sont pas vraiment des nombres entiers.

Tu as remarqué le "pour simplifier", au début de la phrase qui dit que codage numérique = usage d'entiers ? En réalité, la définition d'un codage numérique est celle indiquée dans la phrase d'après : nombre de valeurs fixes. J'ai reformulé histoire que ce soit plus clair.

Peu importe le codage utilisé, celui-ci a besoin d'un support physique

Encore pour pinailler : pourtant, l'ASCII, le codage en lui-même, n'a pas besoin de valves ou de transistors.

Est-ce qu'un micro-détail du genre mérite vraiment une correction à ce stade du tutoriel ?

Pour les supports de stockage électroniques, le support en question est une tension électrique.

La tension électrique, n'est-ce pas plutôt la grandeur ?

Hein ?

On ne travaille pas avec des tout et rien seulement ?

Non, pas avec un codage numérique non-binaire. Et ne confond pas le numérique avec le binaire, parce que sinon tu ne passeras pas la case départ et ne touchera pas 20.000 francs !

Pourquoi le 0 est-il codé par une tension maximale ?

Convention.

J'ai un peu du mal à comprendre le raisonnement de cet extrait. Cela vient du fait qu'il me semble que pour coder en binaire, on utilise un codage binaire (tout ou rien), et non numérique (plusieurs intervalles). Me trompé-je ?

Essaye de m'inventer un codage binaire qui ne soit pas numérique. Autant l'inverse est simple, autant là…

Quelques ajouts dans le chapitre "Traitements et calculs", qui porte sur les portes et circuits logiques. Au menu, une explication de ce qui se cache derrière la méthode des minterms, d'un point de vue qualitatif. J'ai notamment changé le plan, en parlant rapidement de quelques circuits combinatoires simples, comme les comparateurs, décodeurs, multiplexeurs, avant de passer aux grosses méthodes style minterms, Karnaugh, etc. J'ai aussi rajouté les bases négatives pour coder les nombres négatifs dans le chapitre sur le binaire.

Je ne sais pas si je vais supprimer la méthode de la procédure des minterms ou non du cours, vu que celle-ci est expliquée avec les mains dans l'extrait qui précède. Au pire, je peux modifier l'explication pour la simplifier fortement en tenant compte de ce que j'ai ajouté (aborder l'équation logique d'un comparateur aiderait, notamment). Mais pour cela, j'aimerais avoir vos avis.

+0 -0

Bah un nombre entier, ça se note avec des chiffres (en dehors des expressions algébriques, mais c'est autre chose)…

Certes, mais je ne comprends ce que ça apporte au texte. A ce compte-là, tu peux aussi le même pour le codage analogique, puisqu'un réel est aussi une suite de chiffres.

Ca porte même à confusion puisque tu parles de deux suites : celle de chiffres, qui représente l'entier, et celle des valeurs.

Tu as remarqué le "pour simplifier", au début de la phrase qui dit que codage numérique = usage d'entiers ? En réalité, la définition d'un codage numérique est celle indiquée dans la phrase d'après : nombre de valeurs fixes. J'ai reformulé histoire que ce soit plus clair.

Pourquoi parler d'entiers au lieu de donner directement la définition générale, qui est tout à fait claire ?

Est-ce qu'un micro-détail du genre mérite vraiment une correction à ce stade du tutoriel ?

Vu qu'une correction pourrait se faire simplement en parlant d'implémentation du codage au lieu du codage lui-même, je penche pour le correction. ^^

Non, pas avec un codage numérique non-binaire.

J'étais persuadé qu'un ordinateur utilisait le codage binaire. Comme c'est probablement une idée reçue assez répandue (voire une simplification souvent faite), peut-être pourrais-tu ajouter un passage pour contredire cela ?

Au passage, pourquoi ne pas utiliser un codage binaire (on (> 0V) = 1, off (0V) = 0) ?

Merci.

+0 -0

Certes, mais je ne comprends ce que ça apporte au texte. A ce compte-là, tu peux aussi le même pour le codage analogique, puisqu'un réel est aussi une suite de chiffres.

C'est utile parce que chaque chiffre est stocké individuellement pour le code binaire et la majorité des codes numériques, contrairement à ce qu'on observe dans les codes analogiques ou une faible partie des codes numériques. Si je ne fais pas cette remarque, la fin du paragraphe serait un peu moins facile à comprendre.

Pourquoi parler d'entiers au lieu de donner directement la définition générale, qui est tout à fait claire ?

De ce que j'ai vu dans mes classes, la définition générale n'est pas claire pour une bonne partie de mes élèves, contrairement à l'autre. Quand tu leur donne la définition générale, ils déduisent parfois qu'un code analogique peut en théorie utiliser une infinité de valeurs, ce qui passe mal. C'est vraiment du genre : "mais comment c'est possible d'avoir de l'infini en vrai", "mais alors on peut mémoriser une quantité infinie d'information en analogique", et des tas d'autres questions du même genre. En comparaison, leur dire que le codage analogique utilise des nombres réels et non entiers passe mieux (et est plus proche de la réalité, d'ailleurs).

Vu qu'une correction pourrait se faire simplement en parlant d'implémentation du codage au lieu du codage lui-même, je penche pour le correction. ^^

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. 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'étais persuadé qu'un ordinateur utilisait le codage binaire. Comme c'est probablement une idée reçue assez répandue (voire une simplification souvent faite), peut-être pourrais-tu ajouter un passage pour contredire cela ?

Tu n'as pas remarqué que tout le paragraphe sert justement à expliquer cela ?

Tu as des ordinateurs qui codent leurs nombres en trinaire, en décimal et autres. C'est juste que le cas majoritaire de nos jours est le binaire, et c'est indiqué dans le paragraphe.

Au passage, pourquoi ne pas utiliser un codage binaire (on (> 0V) = 1, off (0V) = 0) ?

C'est ce qui est utilisé, mais on peut aussi utiliser la solution inverse : relis les schémas de fin de cours.

+0 -0

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" ? :P

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.

+0 -0

Mise à jour pour corriger quelques remarques du message précédent (je ne détaille pas tout, par manque de temps). Je tiens juste à dire qu'il n'y a pas moyen d'étudier des cas concrets plus que je ne l'ai déjà fait : les bascules et registres sont des circuits séquentiels et sont donc des cas concrets comme les autres.

+0 -0

Le chapitre "mémoriser un bit" a été modifié dans l'extrait sur les SRAM : c'est là que j'ai déplacé les explications sur le circuit avec des portes NON tête-bêche. J'ai fait cela parce que le circuit réellement utilisable correspond en réalité à une cellule mémoire de SRAM. Donc j'ai modifié les explications sur les bascules pour ne plus faire référence à ce circuit, et déplacé le circuit là où on voit comment les SRAM mémorisent un bit.

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

Il faut savoir qu'un signal électrique a une vitesse finie, comme la vitesse de la lumière, elle n'est pas infinie. On peut parfaitement calculer la vitesse de propagation d'un signal électrique, je vais éviter de mettre les équations approximatives ici car cela nécessiterais plusieurs pages d'explications en sus. Les logiciels de simulation (comme Hyperlynx) utilisent les équations de Maxwell pour résoudre énormément de paramètres sur les cartes électroniques.

Le problème c'est que si tu as un signal qui doit suivre une piste (un fil) très long alors que tous les autres ont un chemin très court, comme la vitesse est finie, il se peut que ton signal arrive "en retard" et fausse le résultat : le signal en entrée est toujours à 0 alors qu'au niveau de la sortie il est à 1, la transition est en train d'arriver mais les entrées ont déjà pris en compte le 0

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 ?

Circuit synchrone : tout fonctionne via une ou plusieurs horloge. La prise en compte des entrée ne se fait que lors du front montant (ou descendant) de l'horloge. Entre les deux fronts, le signal peut varier 200 fois, rien ne sera pris en compte.

Circuit asynchrone : il n'y a pas d'horloge pour synchroniser le fonctionnement, la prise en compte des signaux se fait directement, dès qu'il y a un changement de valeur, c'est pris en compte.

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.

C'est le principe d'un circuit synchrone, il ne va lire les entrées que lorsqu'il y a un front d'horloge (montant ou descendant, selon la configuration, mais c'est très souvent un font montant).
Un circuit combinatoire fonctionne en continu, dès que tu change l'état d'une entrée, la sortie est changée "immédiatement", il ne faut pas attendre un coup d'horloge.

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 ?

Imaginons une route à une seule voie où toutes les voitures roulent à 100 km/h, sauf quelques-unes qui roulent à 50 km/h, et il n'y a que quelques voies de dépassement. Il y a des risques que les voitures à 100 km/h soient bloquées à 50 km/h en attendant une voie de dépassement.
Ajoutons une deuxième voie : à gauche c'est 100 km/h, à droite 50km/h. Tout le monde peut rouler à sa vitesse sans problème. Si une voiture à 100 km/h veut passer à 50 km/h, pour éviter de freiner et ralentir les autres voitures, elle va passer par une voie intermédiaire lui permettant de ralentir et à une voiture de 50km/h, d'accélérer sans géner les autres.

On utilise plusieurs horloges car certaines fonctions/composants n'ont pas besoin de tourner aussi vite que d'autres. Par exemple un bus série (UART) est un bus très lent (115 kbps) comparé à de l'USB (480 Mbps), donc il n'y a pas besoin d'avoir la même horloge pour les deux, surtout s'il y a un circuit intermédiaire pour les faire discuter avec le processeur.

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 ?

C'est quoi exactement la vidéo ?

Aujourd'hui, un signal d'horloge de base est envoyé à un circuit via des fils, mais en général en interne le signal va être multiplié par un composants, la PLL, permettant à partir d'un signal à 125 MHz, d'atteindre 1 GHz ou plus. Sachant que c'est fait à l'intérieur de la puce, les perturbations sont bien moindre qu'à l'extérieur et on peut donc avoir un signal très propre.

Concernant la transmission d'information, il y a plein de technique pour envoyer plusieurs bits d'information en un seul coup d'horloge, via de la modulation.

Si je prend l'Ethernet, sur le cable RJ45 en 100 Mbps, on utilise deux paires avec une modulation MLT-3 tandis qu'en gigabit on utilise 4 paires en modulation PAM-5 : Fast Ethernet vs Gigabit Ethernet

MLT-3: https://fr.wikipedia.org/wiki/Multi_Level_Transmit_3 PAM-5 : On utilise 4 niveaux pour transmettre 2 bits d'information, le dernier niveau est utilisé pour la correction d'erreur. Pourtant malgré la différence de débit, la fréquence "fondamentale" de traitement est de 125 MHz.

Merci beaucoup pour ces explications.

le signal en entrée est toujours à 0 alors qu'au niveau de la sortie il est à 1, la transition est en train d'arriver mais les entrées ont déjà pris en compte le 0

Je suis désolé, mais j'ai du mal à visualiser cela. Aurais-tu une analogie ? :)

On utilise plusieurs horloges car certaines fonctions/composants n'ont pas besoin de tourner aussi vite que d'autres. Par exemple un bus série (UART) est un bus très lent (115 kbps) comparé à de l'USB (480 Mbps), donc il n'y a pas besoin d'avoir la même horloge pour les deux, surtout s'il y a un circuit intermédiaire pour les faire discuter avec le processeur.

Une horloge sert donc à faire fonctionner un groupe de composants (et non tous les composants de la machine), en se calant sur le rythme du plus lent ? Du coup, si un composant communique avec un autre très lent et un troisième très rapide, tout le monde devra se mettre au rythme du très lent ?

C'est quoi exactement la vidéo ?

Le passage sur le signal rate : on ne peut pas envoyer deux symboles de manière trop rapprochée, sinon on ne peut les distinguer (en quelque sorte, ils fusionnent).

+0 -0

Une horloge sert donc à faire fonctionner un groupe de composants (et non tous les composants de la machine), en se calant sur le rythme du plus lent ? Du coup, si un composant communique avec un autre très lent et un troisième très rapide, tout le monde devra se mettre au rythme du très lent ?

Vayel

Une horloge sert à synchroniser la mise à jour d'un groupe de registres, histoire qu'ils soient mis à jour en même temps. Pour faire simple, c'est quelque chose d'analogue au signal Enable d'un registre : ce signal permet de mettre à jour toutes les bascules d'un registre en même temps. L'horloge fait la même chose, sauf qu'elle permet la mise à jour de plusieurs registres.

Généralement, les registres en question appartiennent à un seul et unique composant : un processeur, une mémoire, etc. Ainsi, tous les registres à l'intérieur d'un composant iront à la même vitesse, et seront synchronisés. Entre les composants électroniques, comme un processeur ou une mémoire, on peut parfaitement utiliser d'autres méthodes pour éviter de se caler sur le composant le plus lent. Pour simplifier, l'horloge permet une synchronisation interne au composant, mais pas une synchronisation des échanges avec l'extérieur (du moins, pas à elle seule).

Merci beaucoup pour ces explications.

le signal en entrée est toujours à 0 alors qu'au niveau de la sortie il est à 1, la transition est en train d'arriver mais les entrées ont déjà pris en compte le 0

Je suis désolé, mais j'ai du mal à visualiser cela. Aurais-tu une analogie ? :)

Prenons l'exemple suivant :

Exemple ( (c) l'arrache)

Le chemin A - C est très long, tandis que B - C est court. Le "chronogramme" que j'ai mis dessous représente les entrées A et B au niveau du circuit C à partir du moment T0 où les sorties de A et de B sont changées EXACTEMENT au même moment.

On peut voir que le changement d'état au niveau de C est d'abord vu sur l'entrée B, ce qui semble logique puisque le chemin est plus court, et donc à vitesse égale, le temps de trajet est plus court, le front arrive donc en premier. Tandis que pour A, c'est plus long, donc le front arrive après.

Le problème qui peut se poser, c'est que si l'état intermédiaire entre les l'arrivée des front A et B est suffisamment long pour être pris en compte par C, on va se retrouver avec un état en sortie de C qui ne sera pas forcément voulu et donc un potentiel bug.

Dans un circuit combinatoire c'est ce qui peut se passer. Avec un circuit synchrone, pour faire très simple, il faudra attendre le front d'horloge pour prendre en compte les entrées, si celui-ci arrive tout au bout de l'image, on aura le bon état.

Tu va me dire que si le coup d'horloge arrive au niveau intermédiaire, il se passe la même chose. Oui c'est vrai, et c'est pour cela qu'il faut quand même faire attention aux temps de propagation et faire en sorte qu'ils soient moins long qu'une période d'horloge, ou alors utiliser des systèmes / contre-mesures pour éviter ce bug.

C'est quoi exactement la vidéo ?

Le passage sur le signal rate : on ne peut pas envoyer deux symboles de manière trop rapprochée, sinon on ne peut les distinguer (en quelque sorte, ils fusionnent).

Vayel

Oui c'est ce que je pensais et donc ma réponse convient bien.

I.4.Les composants d'un ordinateur

Mémoire

Pour utiliser la mémoire, le processeur va pouvoir rapatrier des données depuis celle-ci.

Tu n'as pas encore introduit la notion de processeur je crois.

Programmabilité

Mais sur certains circuits, on peut remplacer le traitement effectué par un autre sans avoir à modifier leur câblage.

Il me semble intéressant de fournir un exemple concret. Sans connaître le fonctionnement d'un CPU, j'ai du mal à appréhender cette notion de programmabilité.

Un processeur est un circuit qui ne peut effectuer que des instructions

Je ne comprends pas le "ne … que". Que pourrait-il exécuter d'autre ?

Chemin de donnée

Tu mentionnes le bus sur le schéma, mais il ne me semble pas qu'on ait vu ce que c'était.

Outre le chemin de données, le processeur contient des circuits qui se chargent de commander l'ensemble de manière harmonieuse

Je me suis demandé ce que tu entendais par "l'ensemble". Peut-être pourrais-tu plutôt dire "ses composantes" ou un truc du genre ?

Ce programme est stocké dans la mémoire de l'ordinateur, ce qui fait qu'on peut le modifier, rendant l'ordinateur programmable.

J'imagine que "la mémoire de l'ordinateur" varie selon les implémentations ?

Intérieur d'un processeur

Tu parles dans le schéma de bus interne, mais on n'a pas encore vu la notion de bus.

J'ai buté sur le terme "séquenceur". Il pourrait être judicieux de le mettre en gras quand tu l'introduis.

Bus de communication

Ces composants communiquent via un ou plusieurs bus

Qu'entends-tu par "composants" ? Sachant que tu viens de décrire ceux d'un processeur, on pourrait croire que tu te concentres toujours là-dessus.

pouvoir sélectionner la case mémoire (ou l'entrée-sortie) dont on a besoin

Je comprends le "(ou l'entrée-sortie)", mais ça fait bizarre de le lire ici, vu que tu ne parles que de mémoire ("Pour permettre au processeur de communiquer avec la mémoire", "préciser à la mémoire s'il s'agit").

Pour cela, on doit donc avoir trois bus spécialisés, bien distincts

Pourquoi ? On pourrait empaqueter les trois informations et les envoyer via le même bus.

Le bus de commande permet de gérer l'intégralité des transferts entre la mémoire et le reste de l'ordinateur.

"le reste de l'ordinateur", c'est le processeur, ou un autre composant peut aussi commander la mémoire ?

Bus d'un ordinateur

La flèche allant du processeur aux IO ne devrait-elle pas être dans les deux sens (vers le CPU quand il s'agit d'une entrée) ?

et enfin, de quoi faire communiquer le tout : un sus.

Un quoi ? :P

les ports d'entrée-sortie

Ca se devine, mais tu n'as pas introduit la notion de port.

Parfois, on décide de regrouper la mémoire, les bus, le CPU et les ports d'entrée-sortie dans un seul composant électronique nommé microcontrôleur.

J'imagine que par "bus", tu désignes ceux internes au CPU ?


J'imagine que si tu ne l'as pas fait, c'est qu'il y a une raison, mais pourquoi ne pas commencer le tutoriel avec cet extrait ? Autrement dit, partir du haut, puis regarder après comment c'est fait.

L'avantage c'est que c'est générique - du moins j'imagine : que la machine fonctionne à l'électricité ou au pneumatique, l'architecture globale reste la même. Et puis, mais c'est personnel, je préfère avoir une vision globale des choses avant de me plonger dans les détails.

+0 -0

Si je n'ai pas commencé le cours par cet extrait, c'est parce que les chapitres précédents permettent de se familiariser avec les concepts de mémoire, de bits, de traitement, etc. De plus, l'organisation actuelle permet une continuité entre les chapitres. Si j'avais commencé avec ce chapitre (c'était ce qui était fait sur l'ancienne version récupérée du SDZ), le passage au binaire ou aux circuits donnait l'impression de passer du coq à l'âne. Avec l'organisation actuelle, on passe d'un chapitre à l'autre d'une manière qui est un peu plus fluide, les transitions étant moins abruptes.

Ce sujet est verrouillé.