De la logique aux processeurs

Ou « comment passe-t-on des maths à un ordinateur ? »

Amis de Zeste de Savoir, bonjour !

Est-ce que vous vous êtes un jour demandé comment un ordinateur fonctionne, à son plus bas niveau ? Comment avec quelques composants très simples, on peut réaliser des choses aussi complexes que l’appareil sur lequel vous êtes en train de lire ce tutoriel ? Si oui, alors soyez les bienvenues. :)

Prérequis
Ce tutoriel se veut accessible au plus grand nombre. Normalement, pas besoin de maths poussées ou de connaissances complexes en électronique pour l’aborder :pirate:

Objectifs
Appréhender la logique formelle et le binaire.
Expliquer comment on passe d’une expression mathématique à un circuit électrique qui fait la même chose.
Voir quelques circuits intéressants, qui entrent dans la composition d’un ordinateur.

La logique des propositions et des prédicats

  1. C'est quoi, une proposition ?
  2. Assembler des propositions avec les connecteurs
  3. C'est toujours utile: les prédicats et les quantificateurs

L'algèbre de Boole

  1. Propriétés de l'algèbre de Boole
  2. Fonctions booléennes
  3. Simplifier une forme normale : la méthode de Karnaugh
  4. Simplifier une forme normale : la méthode de Quine-Mc Cluskey

Des maths à l'électronique

  1. La version « interrupteurs »
  2. Semi-conducteurs et diodes
  3. Jonctions et transistors à effet de champ
  4. Des portes, des portes et des portes !

Un détour nécessaire : le binaire

  1. C'est la base !
  2. Addition, soustraction et nombres négatifs en binaire
  3. Multiplication et divison binaire

Vers la pratique: un gros paquet de portes

  1. Multiplexeurs et démultiplexeurs
  2. Unité arithmétique et logique (ALU)
  3. La mémoire (et l'horloge)


J’espère que vous avez appris plein de choses, et que vous avez ressenti qu’il suffit en fait d’outils très simples et d’un peu d’ingéniosité pour faire des choses très complexes, telles que le support que vous êtes en train d’utiliser pour me lire.

Dans tous les cas, je vous remercie de m’avoir suivi. Merci également à @Taurre pour la validation, ainsi que tous les gens qui m’ont fait part de retours lors de la bêta d’une manière ou d’une autre: @Aabu, @d3m0t3p, @Ksass`Peuk, @unidan et @Vayel.

Sources et notes:

  • Le livre computer organization and design de M. Patterson et J.L. Hennessy, qui, en plus de réexpliquer tout ce que je fais dans ce tutoriel, va plus loin et tente d’expliquer comment fonctionne vraiment un ordinateur (incluant le célèbre processeur MIPS32). Merci donc à mon prof de m’avoir indiqué ce bouquin. Nombre des schémas du dernier chapitres en sont directement inspirés.
  • Wikipédia, surtout dans sa version anglaise, reste une source inépuisable de savoir, même s’il est parfois nécessaire de jongler entre les onglets. En particulier, ça m’a bien aidé pour écrire toute la partie liée aux semi-conducteurs (en), aux transistor bipolaires (en) mais aussi les CMOS (en), et donc les MOSFETs (en).
  • Pour l’algorithme de Quine-Mc Cluskey, outre la page Wikipédia (en), je me suis également aidé de cette présentation (en) et de celle-ci (en). La méthode de Petrick est en outre expliquée ici (mais également dans les deux documents précédents).
  • De manière générale, ce textbook (en) de « All About Circuits » est une mine d’information géniale. Si le sujet vous intéresse, foncez.
  • Par ailleurs, cette présentation de F. Anceau, qui m’a été indiquée par Aabu lors de la bêta, retrace très bien l’historique du développement des transistors, et mentionne deux ou trois choses que je n’ai pas eu le temps et la place de développer.
  • En l’absence de mieux, les schémas électriques ont été réalisés à l’aide de circuitikz (en) (ça fonctionne vraiment pas mal, en fait !), les tables de Karnaugh sont issues d’une réécriture en Tikz des fonctionnalités de ce package (en), tandis que l’afficheur 7 segments est une réécriture des fonctionnalités de ce package (mais avec des segments un peu plus réalistes et modulables à mon gout). L’ensemble de ces schémas est distribué sous la même licence que le tutoriel sur un dépôt Github dédié.

À bientôt ! :pirate:

10 commentaires

Salut !

J’ai commencé la lecture, ça me rappelle ma première année d’étude ça fait plaisir :p

Toute petite précision :

Le principe du tiers-exclu : une proposition est vraie ou fausse, pas autre chose ;

En fait, l’axiome/principe du tiers exclus dit simplement "la négation de la négation d’une proposition est équivalente à la proposition initiale" (aka pˉˉp\bar{\bar{p}} \iff p et c’est ça qui est hyper puissant. C’est grâce à cette définition qu’on peut facilement démontrer que 2\sqrt{2} n’est pas un nombre rationnel.

et c’est aussi ça qui permet de simplifier fortement les circuits de porte logique.

+0 -0

Chouette tutoriel, c’est un sujet que j’aime beaucoup. Je l’ai relu comme il a poppé sur la page d’accueil. :)

C’est vrai que j’ai été un peu moins formel ^^ (ceci étant dit, sur la page Wikipédia associée, je compte à peu près 4 définitions dudit principe, en ce compris p∨¬p=1p\lor \lnot p = 1p¬p=1 ^^ )

pierre_24

La subtilité est qu’avoir Pˉ\bar{P}Pˉ faux ne veut pas dire PPP vrai avec ta phrase au dessus. C’est la différence entre les propositions et leurs évaluations, et qui se voit parce que tu as déjà dit que les propositions/variables propositionnelles sont soit vraies soit fausses, et ne peuvent donc déjà pas être autre chose. Séparer en proposition puis en variables propositionnelles me semble plus sage pour éviter la confusion. ;)

Il faudrait l’écrire, en reprenant ta façon de noter l’axiome

une proposition est vraie ou alors sa négation est vrai, et inversement.

Mais je suis pas sûr que ce soit plus clair comme ça sans distinguer plus en profondeur les deux notions.

Sinon, ton axiome de tier exlus et celui de artragis me semble équivalent en réappliquant l’axiome à Pˉ\bar{P}Pˉ .

J’ai aussi un petit blocage sur ça:

« x+3=z » (la valeur de vérité de cette phrase dépend de x et z, ce n’est pas une proposition).

suivi de

Ainsi, ∀x:p(x) est une proposition vraie si pour tout x, p(x)=1.

Selon ta cible, le second point mérite probablement un éclaircissement pour éviter de confondre proposition, prédicat et variable propositionnelle.

Ensuite, dans le chapitre d’après:

l’addition n’est pas distributive en algèbre classique

Peut être que préciser le type d’algèbre est une bonne idée, pour ne pas confondre avec le cas réel.

Merci de l’avoir écrit !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte